Latest news

Aug. 8, 2019

With the total number of downloads of all Node.js versions increasing steadily, it’s only a matter of time before we see more of Node.js applications in use. Given the benefits of this open-source and cross-platform JavaScript runtime environment, that’s hardly surprising. Yet, there are already some examples of how both large companies and emerging startups have benefited from Node.js. 

We’ve already discussed whether you should choose Node.js as your backend - now when you’re familiar with its advantages, it’s time to see it action. Here are the best examples of apps that fully embrace Node.js as part of a modern technology stack.

Node.js in use - Examples  

As already mentioned, Node.js is a JavaScript runtime environment, which enables developing apps with a single programming language (rather than use different languages for server- and client-side scripts) and serving multiple concurrent events in a single thread thanks to non-blocking I/O (Input/Output), among other things. This, in turn, makes Node.js fast, scalable and efficient in handling both data- and I/O-heavy workloads that are typical for various types of apps.

What are the best examples of Node.js applications, then?

  • Streaming apps

Thanks to its Stream API, Node.js a great choice for streaming applications. Basically, it makes it possible to transmit parts of the app’s code to a local machine without closing the connection, caching, or temporary data - which means that new components can easily be downloaded on demand.

Netflix is a perfect example of such an app. Before switching to Node.js, it was using Java on server-side and JavaScript on client-side, which forced the developers to know both languages and code twice. With Node.js, though, Netflix streamlined the development process and improved the app’s performance. In fact, the load time is said to have decreased by 70%.

  • Social networking apps

What’s more, one of the primary reasons for Netflix to switch to Node was the ability to build a single-page application. SPAs might come in different shapes and sizes - yet, they can all benefit from Node’s asynchronous data flow. Thanks to the event loop, the app receives new data without the need to refresh, which makes Node.js a popular choice for social networking apps.

LinkedIn, as an example, switched from Ruby on Rails to Node.js, which made the app two to ten times faster on the client side, with only a fraction of the resources on the server side. Given the rising number of LinkedIn users, the performance boost was definitely needed - and appreciated by its developers, mainly due to the speed of development. Actually, Node also forms part of Twitter Lite due to similar reasons.

  • Apps revolving around data collection, visualisation and analysis

Node.js also happens to be a powerful solution for collecting, visualising and analysing data in real time. It’s probably the reason why there are increasingly more startups that revolve around data in particular, and take advantage of Node.js once they’re at it. Take Heap, as an example. It’s said to capture every web, mobile, and cloud interaction automatically (be it clicks, submits, transactions, emails, or any behavioural data), in order to understand and serve customers better.  

When it comes to data visualisation, though, it’s rather YCharts that deserves more attention. It happens to be a cloud-based investment decision-making platform, which makes it easy to create technical charts in seconds to compare stocks and funds, just to name a few. Yet again, it collects data in real-time, constantly monitoring the market and providing relevant financial insights.

  • Fintech apps

Speaking of financial data, Node.js also seems to be a good fit for handling digital payments. In fact, PayPal was one of the first company that gave Node.js a chance back in the days when this technology was just starting to gain some traction. This decision quickly resulted in improved performance: 35% decrease in the average response time for the same page, to be exact. It might be the reason why some startups, such as JUSPAY, seem to be following PayPal’s footsteps.

  • Online stores and marketplaces

Let’s go back to maintaining live connections with the server and handling a lot of requests at the same time for a moment, which Node.js is definitely known for. These were one of the reasons why eBay decided to go for Node - along with its speed and simplicity, performance, scalability, and “feeling of control” it gives the developers. It should come as no surprise, then, that Node.js is also used by Alibaba for both frontend toolchains and backend servers.

Walmart also provides an interesting Node.js example. The company re-engineered its mobile app to provide more features on the client side, and decided to build a fast, reliable and usable system with Node in order to become a leader in the online retail space. Given its current position, Node.js definitely brought Walmart closer to this goal.

  • Enterprise applications

Walmart is not the only enterprise-level company that’s been successfully using Node.js, though. According to the Node.js User Survey, 43% of Node.js programmers claim to have used it for enterprise apps - and, interestingly, the majority of them seems to be working for Fortune 500 companies.

The biggest Central and Eastern European convenience store chain Żabka has its own example of an enterprise solution powered by Node.js: an award-winning “frappka” app. The aim here was to meet the needs of the franchisees and make it easier for them to manage Żabka stores, which wouldn’t be that easy to achieve without Node and microservices architecture. Basically, microservices are single self-contained units which make up an application, yet, can be independently deployable and scalable. This architecture works very well with complex applications, which is probably why many well-known enterprises have already embraced it.

  • Collaboration tools

Real-time applications, such as project management and communication tools that run across distributed devices, are also a common case of Node.js in use. Usually, such apps have plenty of users and thus, might be subject to heavy I/O operations (for example, a few users can edit, comment, post or attach something at the same time). This is when Node comes in useful - it makes the collaboration environment update seamlessly, handling both big traffic and intensive data exchange (mainly thanks to Event API and WebSockets).

Trello is a perfect example of a Node.js app that enables team collaboration. As written on the company’s blog, Node.js was first helpful when Trello was templating a tool for a one-page application. Yet, Node.js proved to have more benefits than that, which is why it eventually became the server side of the application, along with MongoDB, Redis, and HAProxy.

  • E-learning platforms

Since Node.js can easily form part of collaboration tools, it shouldn’t be surprising that it happens to power e-learning platforms as well. Quizlet, for example, is said to be one of the largest online education platforms in the world with its 30 million active learners. Apparently, Node.js allowed scaling the app to handle over 600,000 visits a day.

CreativeLivealso serves as a good example of a Node.js app that offers free live online classes in creative topics (such as photography, design, and craft). At the same time, Cleverseems to be taking e-learning to the next level as it “powers technology in the classroom” and enables the management of all learning resources that every school owns.

  • IoT solutions

Node.js has also become one of the preferred solutions for IoT development. The reason behind it it’s mostly its capability to handle multiple concurrent requests and events coming from multiple IoT devices, which are known for generating a large volume of data.

Skycatch is an interesting example of such a solution. Essentially, it uses drones to take photos of construction sites, then analyses and exports multiple data types, and, at last, makes it possible to create and work with customized maps and 3D models.

Connected Boat, on the other hand, is meant for fleet owners to ensure the safety of boats at all times. It constantly monitors key parameters of the vessels through smart IoT sensors and provides easy access to relevant information that streamlines servicing and maintenance of each boat thanks to its mobile app. With the growing popularity of both IoT and Node.js, however, we’re bound to see more examples of such a combination.

Node.js applications are here to stay

As can be seen, Node.js can be a good choice for developing many different types of applications, especially due to its ability to handle multiple concurrent requests and asynchronous data flow. Data streaming, social networking or project management apps are only a few popular use cases of Node.js that are worth exploring. In fact, Node.js applications happen to be increasingly more common as the technology becomes more mature.

Even though it might still be treated as a fairly new solution and has some drawbacks (such as not being a good fit for CPU-intensive apps), Node.js is definitely worth considering - if you’re in need of a data-driven app in particular.

Aug. 8, 2019

Do you have an idea for an app that’s going to be a game changer? That’s a good start, but remember that building a web application is a process that has to be well thought-out and the most critical decision of what backend environment are you going to choose has to be made at the early beginning. This is not the easiest decision as there are numerous technologies to choose from and each has its pros and cons. Although developers and product owners are often tempted to choose the one they’re familiar with, we recommend making an informed choice and deciding on the environment that is the most suitable to your project.

 

Why is it important to choose the right backend technology?

There is no doubt that the right tech stack plays an essential role in your project’s success, while making a wrong decision may be a reason for failure. The decision may be particularly challenging for small businesses and startups that usually work with limited resources, and the impact of the wrong decision can be even more severe than in a bigger organization.  

Web technology stack includes the front-end (client-side programming), the backend (server-side programming, invisible for users) that includes the backend programming language, database, and server. In this article, we’ll focus on the backend and guide you through making a choice between Node.js or PHP. They both run the web because they’re the most widely used server-side technologies, and they both can manage apps of any complexity. At the same time, the differences between them are significant as they’re built around different concepts and architectures. PHP is a programming language, while Node.js is a cross-platform JavaScript runtime environment. However, both PHP and Node.js are similar solutions in terms of back-end. PHP is also the whole environment and in fact, in many projects, both Node.js and PHP can be used interchangeably. Let’s take a closer look at both technologies.

Node.js

Node.js is an open-source, server-side JavaScript runtime environment powered by Google’s V8 JS engine. It’s a relatively young runtime environment, introduced in 2009 by  Ryan Dahl, Due to its asynchronous, non-blocking I/O (input/output processing) and its event-driven nature, is a right choice for building modern solutions based on WebSockets, micro-services, event queues, and jobs. Before its emergence, it wasn’t possible to perform asynchronous coding with JavaScript, nor to create pure JS applications that can operate outside the web browser environment.

Node.js was created to build websites applications with real-time push capability. Before, they were written in a client/server model, in which the client would demand specific resources from the server, and then would get those resources in response. Now, thanks to WebSockets that allow opening an interactive communications session between a user’s browser and a server, it’s possible to develop two-way connection websites with free data exchange. Web apps developed with Node.js are fast and efficient because they run in a single process, without creating a new thread for every request.

Although Node.js is younger than other popular web technologies, it has the largest open-source community and the largest repository of libraries and packages. Its default package manager, NPM, wins over PHP’s Composer. Python’s PIP, or .net’s NuGet. Thanks to that, software development in Node.js is relatively fast and straightforward because there is a massive database of the open-source code from other developers available.  

PHP

PHP (originally stood for Personal Home Page, then renamed to Hypertext Preprocessor) is an open-source server-side scripting language, developed in 1994 by Rasmus Lerdorf specifically for the web. What now makes PHP different than, for example, JavaScript is that the code is executed on the server, generating HTML which is then sent to the client. The client receives the results of running that script but doesn’t know what the underlying code was. 

Since its creation, PHP has become extremely popular and successful - almost 80% of websites are built in PHP, including web giants like Wikipedia, Facebook, Yahoo!, Tumblr and many more. PHP is also the language behind the most popular CMS (Content Management Systems) such as Wordpress, Joomla, Drupal, WooCommerce and Shopify. PHP is a universal programming language that allows for building landing pages and simple WordPress websites, but also complex and massively popular web platforms like Facebook. 

PHP is also considered as easy to learn (at least on an entry-level) and, according to StackOverflow’s annual survey, is the most popular programming language of 30% of software developers. 
 

When to choose Node.js?

The significant advantage of Node.js is having one language across technology stack - JavaScript. Relying on it has one more advantage - it’s the most popular programming language worldwide, employed by the majority of websites and supported by the majority of modern web browsers. Node.js gives it another advantage, which is the possibility to go beyond front-end web development. Thanks to the frameworks such as Electron or NW.js, it’s possible to develop native desktop applications for Linux, Windows and MacOS, using JavaScript, HTML and CSS. No wonder that so many popular web & desktop apps, like Slack, Skype, or Visual Studio Code, are built in Node.js.

Node.js is always the right choice for developing dynamic single page applications and data-intensive, real-time apps that run across distributed devices such as instant messengers, streaming apps (Netflix is a good example), fintech apps (PayPal was one of the first companies that gave Node.js a chance when it was a novelty), IoT apps such as Connected Boat or Skycatch, productivity apps and collaboration tools like Trello. We’ve covered the examples of the best Node.js applications before.  

When to choose PHP then?

As we’ve already mentioned, PHP has been designed for the web and therefore it’s intrinsically equipped to work with HTML, servers, and databases. PHP exists for over 20 years and has a massive community, lots of frameworks, robust codebase, documentation, and other resources. It all makes it easy to learn and to build various web applications. 

You should consider choosing PHP if you need an e-commerce service or a blog. Focusing on PHP is also the right choice if you work with a LAMP stack that includes PHP together with Linux Apache and MySQL. PHP environment is also more mature. 

The verdict

Node.js and PHP are the two leading backend technologies, however, they’re different and therefore cannot be treated interchangeably without analyzing the specific needs of the project. PHP is synchronous, while Node.js asynchronous. In terms of speed, there is no simple verdict - both Node.js and PHP are fast but can get sluggish while executing CPU intensive tasks. Both are cross-platform, so when it comes to compatibility with operating systems, there are no significant differences

Keep it in mind that while making the final choice, the question shouldn’t be which one is better as there is no right answer to it. You need to decide which technology can serve your project needs in a better way. At Future Mind, we tend to choose Node.js over PHP. Our apps are often extremely complex and have to deal with lots of data sources that are dynamically delivered to server applications. Thanks to Node.js, their development and maintenance are fast, reliable and robust.

Jul. 27, 2016

Cách đây vài năm người ta đã tạo nên một chiếc siêu máy tính với 82.000 con vi xử lý để mô phỏng hoạt động bình thường xảy ra bên trong não người trong vòng 1 giây. Đồng thời các nhà khoa học tin rằng não người có dung lượng khoảng 1 petabyte, tương đương 1 triệu GB. Tuy nhiên, đó chỉ là những mô phỏng mang tính cục bộ, còn xét về khả năng tổng thể của não người thì cho tới hiện nay chưa thể có cỗ máy nào có thể so sánh được.

Được biết não người có khoảng 90 tỷ tế bào thần kinh liên kết với nhau tạo ra hàng ngàn tỷ liên kết thần kinh gọi là synapse. Tất cả phối hợp hoạt động với nhau hình thành nên một hệ thống vô cùng phức tạp với hàng trăm ngàn tỷ đường đi khác nhau của tín hiệu bên trong não người.

Mặc dù các nhà khoa học có thể tạo ra một số thuật toán chuyên dụng cho máy tính, thí dụ như đánh cờ thắng con người, nhưng nếu so sánh toàn bộ khả năng bộ não người thì thậm chí những chiếc siêu máy tính vẫn còn kém xa. Con người có những khả năng hết sức đặc biệt như nhận diện cấu trúc, khả năng ngôn ngữ và suy nghĩ sáng tạo.

Trong khi chỉ xét riêng vấn đề nhận diện cấu trúc, dù có tiến bộ đến mấy nhưng cho tới hiện nay thì thuật toán máy tính vẫn chưa thể so sánh được với trẻ con. Điển hình như vấn đề nhận diện khuôn mặt. Con người chúng ta có thể dễ dàng ghi nhớ, nhận diện khuôn mặt của người khác ngay cả khi bị tóc che khuất, có đeo khẩu trang,... Tuy nhiên máy tính gần như không thể thực hiện các tác vụ với cấp độ như con người.

Do đó, có thể máy tính sẽ nhanh hơn con người trong các tác vụ đơn giản từng bước một đã được lập trình sẵn. Nhưng con người lại mạnh hơn máy tính ở những tác vụ không thể đơn giản hóa thành từng bước nhỏ được. Mặt khác, máy tính chỉ có thể làm những chuyện đã được lập trình sẵn, không thể tự dựa trên những cái đã có để tạo thành cái mới.

Đồng thời, một điểm thú vị là con người có thể tạo ra những dữ liệu giả định từ những điều chưa xảy ra, trong khi điều này là không thể ở máy tính. Tất cả những tác vụ như cảm xúc, giác quan, học hỏi, ghi nhớ, phân tích, suy đoán,... đều được con người thực hiện theo thời gian thực. Do đó, so với não bộ con người thì có lẽ máy tính vẫn chỉ là một cỗ máy 1 và 0 chứ thậm chí chưa thể bằng một đứa trẻ nếu xét về sức mạnh tổng thể.

Tham khảo QuoraBGR
Jul. 27, 2016
 ​


Bằng việc sử dụng siêu máy tính nhanh nhất thế giới và một kiến trúc máy tính siêu tiết kiệm điện năng mới, IBM đã mô phỏng thành công 530 tỉ nơ-ron và 100 nghìn tỉ khớp thần kinh - ngang bằng với con số của một bộ não người. Qua đó, IBM đã hoàn thành một bước tiến quan trọng trong tiến trình chế tạo một bộ não nhân tạo thật sự.

Điện toán nhận thức:

Não người không chỉ là vật thể phức tạp nhất từng được biết đến trong vũ trụ mà còn là một cỗ máy siêu tiết kiệm năng lượng. Nó có thể cùng một lúc thu thập hàng nghìn cảm nhận đầu vào, phiên dịch tất cả trong thời gian thực và phản ứng một cách hợp lý, trừu tượng hóa, học hỏi, lập kế hoạch và sáng tạo, tất cả chỉ dựa vào một nguồn điện giới hạn khoảng 20 W. Một máy tính với độ phức tạp có thể so sánh ngang bằng sử dụng các công nghệ hiện nay, theo IBM ước lượng, có thể tiêu thụ đến 100 MW điện.

Rõ ràng, mức tiêu thụ năng lượng như vậy rất không thực tế. Vấn đề này chính là nền tảng cho một bước tiến mới và câu trả lời của IBM là điện toán nhận thức (cognitive computing) - một quy tắc kết hợp giữa những phát hiện mới nhất trong lĩnh vực khoa học thần kinh, công nghệ nano và siêu máy tính.

Ngành khoa học thần kinh đã dạy cho chúng ta rằng sở dĩ não tiêu thụ ít điện năng là nhờ vào khả năng hoạt động "định hướng theo sự kiện". Nói một cách đơn giản, các nơ-ron, khớp thần kinh và sợi trục thần kinh chỉ tiêu thụ năng lượng khi chúng được kích hoạt và ngược lại. Các tác nhân kích hoạt ở đây có thể là một cảm nhận đầu vào hoặc từ các nơ-ron khác. Tuy nhiên, các máy tính ngày nay lại không hoạt động theo một phương thức tương tự và một lượng lớn năng lượng đã bị bỏ phí.

Các kĩ sư của IBM đã dựa trên kiến thức trên để xây dựng một kiến trúc máy tính mới và sau đó sử dụng để mô phỏng một lượng lớn các nơ-ron và khớp thần kinh có thể so sánh với những gì được tìm thấy trong bộ não con người. Kết quả không phải là một bộ não mô phỏng chính xác về chức năng hay đặc tính sinh học của não người bởi nó không thể cảm nhận, ý tưởng hóa hoặc suy nghĩ theo mọi cách thức thông thường nhưng đây vẫn là một bước tiến quan trong trọng việc tạo ra một cỗ máy có những năng lực như vậy trong tương lai.

Quy tắc hoạt động:

 ​
Một mạng lưới các neurosynaptic cores suy ra từ cấu trúc liên kết thần kinh khoáng cách dài của não khỉ. 


Điểm khởi đầu của các nhà nghiên cứu là CoCoMac - một cơ sở dữ liệu chi tiết về mạng lưới thần kinh của não khỉ. CoCoMac bao hàm toàn diện nhưng chưa hoàn thiện. Vì vậy, sau 4 năm làm việc cật lực nhằm bổ sung những thiếu sót của cơ sở dữ liệu, các thành viên thuộc nhóm nghiên cứu cuối cùng cũng đã thu được một bộ dữ liệu có thể khai thác, nhằm dựa vào đó phát triển kiến trúc của bộ não nhân tạo.

Bên trọng hệ thống, có 2 thành phần chính là nơ-ron và khớp thần kinh. Nơ-ron là những trung tâm tính toán: mỗi nơ-ron có thể nhận các tín hiệu đầu vào từ tối đa 10 nghìn nơ-ron lân cận, chi tiết hóa dữ liệu và sau đó phát đi tín hiệu đầu ra. Có cấp xỉ 80% các nơ-ron đóng vai trò là bộ kích thích - nếu chúng phát đi một tín hiệu, chúng có khuynh hướng kích thích các nơ-ron lân cận. 20% còn lại là các nơ-ron ức chế - khi chúng phát đi một tín hiệu, chúng sẽ có khuynh hướng ức chế các nơ-ron lân cận.

Nếu như nơ-ron là các trung tâm tính toán thì khớp thần kinh sẽ có chức năng kết nối các nơ-ron khác nhau và đây chính là nơi bộ nhớ cũng như hoạt động học tập bắt đầu. Mỗi khớp thần kinh có một "giá trị mật độ" liên kết và giá trị sẽ thay đổi dựa trên số lượng tín hiệu được phát đi bởi các nơ-ron và di chuyển dọc theo khớp thần kinh. Khi một số lượng lớn các tín hiệu từ nơ-ron truyền đi trên cùng một khớp thần kinh, giá trị này sẽ tăng và bộ não ảo sẽ bắt đầu học tập theo cơ chế lắp ghép theo học thuyết của Donald Hebb.

Theo chu kỳ, thuật toán sẽ kiểm tra liệu mỗi nơ-ron có đang phát đi tín hiệu hay không: nếu có, các khớp thần kinh gần kề sẽ được thông báo và chúng sẽ cập nhật giá trị mật độ và tương tác phù hợp với các nơ-ron khác. Yếu tố cốt lõi ở đây là thuật toán sẽ chỉ sử dụng thời gian CPU trên phân số rất nhỏ của các khớp thần kinh cần được phát tín hiệu thay vì trên toàn bộ - qua đó tiết kiệm một lượng lớn thời gian và năng lượng.

Cũng giống như một bộ não hữu cơ, kiến trúc máy tính mới hoạt động theo định hướng sự kiện, mức độ phân bổ, nhận thức năng lượng cao và vượt qua một số giới hạn cố hữu theo cách mà các máy tính tiêu chuẩn được thiết kế, điển hình như tình trạng "thắt cổ chai" làm giới hạn tốc độ hệ thống do tốc độ thực thi của CPU nhanh hơn tốc độ truy xuất bộ nhớ của kiến trúc Von Neumann rất phổ biến trên máy tính PC ngày nay.

Mục tiêu cuối cùng của IBM là chế tạo một cỗ máy với độ phức tạp như não người trong một kích thước tương đương và với mức tiêu thụ năng lượng chỉ 1 kW. Hiện tại, siêu máy tính Blue Gene/Q Sequoia cũng sở hữu độ phức tạp có thể đáp ứng mục tiêu của IBM với 1.572.864 nhân xử lý, 1,5 PB (1,5 triệu GB) bộ nhớ và 6.291.456 mạch trình nhưng nó không được "gọn nhẹ" cho lắm và cũng không tiết kiệm năng lượng.

 ​
Neurosynaptics cores.


Trong một nổ lực nhằm cắt giảm đáng kể mức tiêu thụ năng lượng, IBM cũng đã chế tạo một con chip tùy biến với tên gọi "neurosynaptic cores" - khai thác toàn bộ tiềm năng của kiến trúc máy tính mới và có thể thay thế các siêu máy tính trong hoạt động mô phỏng nói trên. Mặc dù các nhân được đặt tên là nơ-ron, khớp thần kinh (synapses) và sợi trục thần kinh (axons) nhưng thiết kế của các thành phần này lại không dựa trên ý tưởng sinh học mà thay vào đó, chúng được tối ưu với chi phí sản xuất tối thiểu và hiệu năng tối đa.

Ứng dụng:

Kiến trúc mới hứa hẹn sẽ cải tiến các hệ thống dự báo thời tiết.


Do có đặt yếu tố song hành rất cao vào kiến trúc mới, những con chip được chế tạo bằng công nghệ trên sẽ rất phù hợp để giải đáp mọi vấn đề trong đó một lượng rất lớn dữ liệu cần được nạp vào máy tính với hiệu năng và mức tiêu thụ năng lượng được cải thiện đáng kể.

Qua thí nghiệm, IBM đã có thể hiểu rõ hơn về những giới hạn đối với kiến trúc máy tính tiêu chuẩn hiện tại, bao gồm việc cân bằng giữa bộ nhớ, tính toán và giao tiếp trên một tỉ lệ rất lớn. Thêm vào đó, thí nghiệm còn giúp thu thập những bí quyết để thiết kế và phát triển những con chip song hành có hiệu năng cao hơn và thậm chí tiết kiệm năng lượng hơn.

Những ứng dụng trong tương lai sẽ bao gồm các hệ thống dự báo thời tiết cải tiến, dự báo thị trường chứng khoán, các hệ thống giám sát bệnh nhân thông minh có thể thực hiện các chẩn đoán trong thời gian thực và các phần mềm nhận diện kí tự quang học (OCR)/nhận dạng giọng nói tương đương khả năng của con người.

Về mục tiêu tạo ra một bộ não nhân tạo thật sự, chúng ta vẫn còn rất nhiều năm nữa để có thể giải đáp mọi khúc mắc. Tuy nhiên, ít ra kiến trúc máy tính mới của IBM đã cho thấy quy trình này đang được thực hiện và với sự phát triển không ngừng nghỉ của công nghệ, hy vọng rằng ngày đó sẽ không còn quá xa vời.

Theo: Gizmag

https://tinhte.vn/threads/ibm-su-dung-sieu-may-tinh-mo-phong-nao-nguoi.1678579/