TopDev
Sort by
1 results
HIGHLIGHT COMPANY

Company information

job-imageMBBANKVững vàng – Tin cậy
Thành phố Hà Nội, Thành phố Hồ Chí Minh, Thành phố Cần Thơ, Thành phố Đà Nẵng Hơn 1000
397 Jobs

Related posts

Marketplace Illustration
Child process trong Node.js là gì? - Khi nào cần sử dụng fork và spawn?

Bài viết được sự cho phép của tác giả Tống Xuân Hoài Vấn đề Có một lời khuyên mà chắc hẳn ai làm việc với Node.js đều phải thuộc lòng đó là "đừng bao giờ chặn vòng lặp sự kiện". Chặn ở đây có nghĩa là không để cho Event Loop được thực thi chức năng vốn có của nó. Node.js chỉ có một luồng để xử lý mã JavaScript, nếu một công việc chiếm tương đối thời gian để xử lý thì nó sẽ gây ra một cuộc tắc nghẽn nghiêm trọng trong luồng chính. Hay nói cách khác, tất cả cuộc gọi API có thể sẽ không bao giờ được phản hồi cho đến khi công việc đó xong. Biết được vấn đề, tất nhiên Node.js phải cung cấp cho chúng ta một số cách để giải quyết. Thay vì gọi những hàm đồng bộ thì hãy chuyển qua gọi hàm bất đồng bộ, ví dụ như cùng là đọc file nhưng readFile sẽ được khuyên dùng hơn readFileSync  [...]

Marketplace Illustration
Hibernate Batch Processing là gì? Batch Processing trong Hibernate

Bài viết được sự cho phép của tác giả Trần Hữu Cương 1. Hibernate Batch Processing là gì? Ta có tình huống như sau: cần insert 10000 bản ghi vào database Nếu insert lần lượt và đẩy từng đối tượng một thì thời gian sẽ rất lâu vì phải mở/đóng connection nhiều lần Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.save(customer); session.flush(); session.clear(); } tx.commit(); session.close(); Nếu insert và đẩy đồng thời cùng 1 lúc 10000 bản ghi thì sẽ xảy ra lỗi OutOfMemoryException (Lý do là hibernate sẽ lưu tất cả 10000 bản ghi vào bộ nhớ cache nhưng bộ nhớ cache không đủ) Session session = sessionFactory.openSession(); Transaction tx = session.beginTransaction(); for ( int i=0; i<100000; i++ ) { Customer customer = new Customer(.....); session.save(customer); } tx.commit(); session.close(); => Giải pháp: Batch Processing Vậy Batch Processing là gi? Batch Processing là xử lý theo lô, tức là ta sẽ insert và đẩy từng lô bản ghi vào database. Ví dụ ở đây ta sẽ insert và đẩy 50 bản ghi vào database cùng 1 lúc, như thế sẽ giảm số lượng connection tới database, đồng thời trá [...]

Marketplace Illustration
Test REST Web Service đơn giản hơn với REST Assured

Bài viết được sự cho phép của tác giả Giang Phan  Ở bài viết trước, tôi đã giới thiệu với các bạn cách test REST API trong Jersey project. Giả sử bây giờ chúng ta cần sử dụng API của bên thứ 3 (không phải source code trong jersey project của chúng ta), khi đó ta không thể sử dụng Jersey Test. Khi đó, chúng ta cần một thư viện khác có thể giúp chúng ta gửi một request thật để verfiy kết quả trả về. Trong bài này tôi sẽ giới thiệu với các bạn một thư viện rất mạnh mẽ để test web service, đó chính là REST Assured. Nó cho phép chúng ta gửi một HTTP request thật và verify trên kết quả trả về một cách dễ dàng. Chẳng hạn chúng ta có một request http://localhost:8080/lotto/{id} và server trả về response JSON như sau: [caption id="attachment_52759" align="aligncenter" width="335"] Test REST Web Service[/caption] Khi đó chúng ta dễ dàng sử dụng REST Assured để verify mọi thứ từ response trên như sau: [caption id="attachment_52758" align="aligncenter" width="560"] Test REST Web [...]

Marketplace Illustration
Kiến thức cần có về System Quality Attributes

Bài viết được sự cho phép của tác giả Kiên Nguyễn Trong quá trình thiết kế hệ thống, có rất nhiều khái niệm cần hiểu rõ để tránh việc hiểu sai yêu cầu của khách hàng, một trong những khái niệm quan trọng là Quality Attributes. Khái niệm này thường bị nhầm lẫn bởi một số bạn có điều kiện lắng nghe trực tiếp requirement từ khách hàng. Bài viết này mình xin chia sẻ thêm về Quality Attributes và một số ví dụ cụ thể. [irp posts="33039" name="Bài toán đồng thuận trong Distributed Systems"] [irp posts="32660" name="Giải mã bí ẩn system load" trên Linux"] Xem thêm tuyển dụng Product Manager trên TopDev 1. Quality Attributes Motivation Đối với System Design thì nỗi sợ lớn nhất là không adapt được với functional requirements. Nhưng không phải tất cả yếu tố giúp thiết kế hệ thống đều xoay quanh functional requirements. System are frequently redesigned NOT because of the functional requirement Qua trình thay đổi thiết kế của hệ thống đôi khi khô [...]

Marketplace Illustration
Hibernate Batch processing

Bài viết được sự cho phép của tác giả Giang Phan Trong bài này tôi sẽ giới thiệu với các bạn 1 phần quan trọng của Hibernate trong quá trình thao tác với cơ sở dữ liệu đó chính là batch processing hay còn gọi là xử lý hàng loạt. Hibernate Batch Processing là gì? Xem xét một tình huống khi chúng ta cần tải insert một số lượng lớn các bản ghi vào cơ sở dữ liệu bằng cách sử dụng Hibernate. try (SessionFactory sessionFactory = HibernateUtils.getSessionFactory(); Session session = sessionFactory.openSession();) { session.beginTransaction(); final int numberOfRecords = 10000000; for ( int i=0; i < numberOfRecords; i++ ) { Tag tag = new Tag(); tag.setName("Hibernate Batch Processing"); session.persist(tag); } session.getTransaction().commit(); } Khi chạy chương trình trên, chúng ta sẽ gặp một exception OutOfMemmeryException, vì Hibernate sẽ lưu tất cả 10000000 bản ghi vào bộ nhớ L1 Cache nhưng bộ nhớ cache không đủ. Để giải quyết vấn đề này, chúng ta sẽ sử dụng tính năng batch processing trong Hibernate. Tính năng này cho phép chúng ta gửi yêu cầu thực thi một lượng [...]

Marketplace Illustration
Vuejs Render Process bao gồm những bước nào?

Bài viết được sự cho phép của tác giả Kiên Nguyễn Tuần trước đã có bài viết về nextTick() trong Vuejs, nhân đây muốn giới thiệu qua cho anh em luôn về Vuejs Render Process. Hiểu process của Vue mới nâng tầm lên được. Chứ cứ v-if, v-else, v-show hoài mà không biết nó render như thế nào thì toang. Sẵn sàng chưa nào?. Xúc ngay và luôn cho nóng nha! [irp posts="15311" name="Cách sử dụng các plugins jQuery trong VueJS"] [irp posts="11321" name="Call API trong VueJS theo cách thông minh nhất"] 1. Virtual DOM Trước khi tìm hiểu về Vuejs Render Process, bắt buộc phải có kiến thức về DOM (Document Object Model). Anh em nào chưa biết có thể tìm hiểu qua bài viết này. Trước đây khi có thay đổi phía FE, một node trên DOM tree thay đổi sẽ kéo theo phải render lại toàn bộ tree. Việc thay đổi trên toàn bộ cây DOM thật sự tệ. Chính vì vậy, Virutal DOM ra đời. Tóm tắt nhanh như tốc độ crush tỏ tì [...]

Marketplace Illustration
Load Balancers II – Determine which servers processes a request

Bài viết được sự cho phép của tác giả Kiên Nguyễn Trở lại chuỗi bài viết chuyên sâu về Load Balacers và Web Server. Biết về khái niệm và cách mà Load Balancers cân bằng lượng request đến đã là tốt. Tuy nhiên, request ở máy A sẽ đi tới servers nào khi ta có tới cả 100 servers service nhỏ?. [irp posts="28245" name="Angular - Tự xây dựng module lazy load images""] [irp posts="34033" name="Cân bằng tải (Load Balancing)"] Để trả lời cho câu hỏi này, hãy cùng nhìn lại chút xíu về Load Balancers Architecture. Thông qua sự “điều tiết” của Web Balancers, nhiều Application Servers nhỏ có thể handle một lượng request lớn. 1. Phán định servers Vấn đề là Application nào sẽ handle request nào?. Ví dụ: client A ở lần request đầu tiên sẽ gửi tới Application Servers A do Load Balancers điều phối. Gọi là phán định servers vì không thể ở request thứ nhất, Application Servers A xử l. Request thứ hai lại do Application Servers B xử. Để có phá định chuẩn rằng Servers nào nên xử lý request nào thì [...]

Marketplace Illustration
Transaction Processing – Everything must know

Bài viết được sự cho phép của tác giả Kiên Nguyễn Gì chứ nhắc tới Transaction Processing thì không một Software Engineer nào là không hiểu tường, hiểu tận. Biết có thể chỉ là một phần kiến thức nhỏ, nhưng những khái niệm đặc biệt như transaction cần phải nắm thật vững. Bài viết này cung cấp một cái nhìn toàn diện, từ cơ bản cho tới nâng cao về Transaction Processing. Thứ được biết đến như là khái niệm cốt lỗi của Database actions, Payment Steps,… Bắt đầu ngay thôi! [irp posts="290" name="10 tuyệt kĩ từ trang web nhanh nhất thế giới (phần 1)"] [irp posts="33518" name="Khái niệm transaction trong database"] 1. Transaction là gì? Rõ luôn là phải hiểu transaction là gì trước khi bắt tay vào tìm hiểu Transaction Processing. Ok, khái niệm. Có 3 thứ cần nhớ. A unit of information processing that is indivisible. Transaction là một đơn vị của “tiến trình xử lý thông tin” không thể phân chia Đọc rõ khó hiểu, nhưng túm cái [...]

Marketplace Illustration
Distributed Data Processing using MapReduce

Bài viết được sự cho phép của tác giả Kiên Nguyễn Ngày nay, xử lý dữ liệu lớn đã trở thành bài toán tiếp xúc hằng ngày đối với Kỹ sư phần mềm, Distributed Data Processing dựa trên MapReduce mà một kỹ thuật được sử dụng để giải quyết những bài toán đó. Thông qua kiến trúc và cách xử lý của MapReduce. Dữ liệu lên tới hàng Petabyte cũng có thể xử lý linh hoạt và nhanh chóng. [irp posts="11945" name="26 công cụ và kỹ thuật trong Big Data có thể bạn chưa biết"] [irp posts="33039" name="Bài toán đồng thuận trong Distributed Systems"] Còn chần chừ gì nữa mà không tìm hiểu xem ta có thể thực hiện như thế nào?. Bắt dầu thôi! 1. Distributed Data Processing Processing đối với data được đề cập trong bài viết này là đề cập tới dữ liệu lớn (large data). Con số lên tới petabytes. Ngoài ra, process cũng bao gồm các vấn đề khó nhắn như: Search LIKE, trả về tất cả dữ liệu có [...]

Marketplace Illustration
Hệ thống quản lý chất lượng dữ liệu: Tại sao và như thế nào?

Một ngày của Data team ở Amanotes bắt đầu bằng việc xử lý rất nhiều tin nhắn được gửi cho data team, ví dụ như sự chênh lệch của chỉ số, tại sao trendline có vẻ thay đổi,... Những câu hỏi về các vấn đề liên quan đến data nhân lên rất nhiều lần cho các metrics trên rất nhiều dashboard của công ty. Tìm việc làm QC làm online tại nhà Điều này khiến data team suy nghĩ đến việc nên làm sao để mọi người không phàn nàn về những vấn đề liên quan đến data nữa. Và nhờ vậy chúng tôi quyết định build một hệ thống quản lý chất lượng data. Đó cũng là lý giải cho việc tại Amanotes quyết định build hệ thống này và team đã build nó như thế nào? [caption id="attachment_35724" align="alignnone" width="696"] Nhiều quyết định quan trọng được đưa ra dựa vào data[/caption] Tại sao việc build hệ thống này lại quan trọng với data  quality cũng như data team của [...]

Marketplace Illustration
Quality Assurance QA trong Software là gì

QA là gì? Quality Assurance (viết tắt là QA) là quá trình đảm bảo kiểm tra (development process) sản phẩm để đưa ra quy trình hoạt động phù hợp như mong muốn. Các phương pháp thực tế được sử dụng trong quá trình QA rất đa dạng tùy vào quy mô cũng như tính chất của sản phẩm. Xem thêm định nghĩa QA QC là gì? Với mỗi project cá nhân thì chỉ cần nhờ người khác góp ý và phản hồi. Ngược lại với App Banking thì cần phải kiểm tra mọi khía cạnh của từng tính năng để không những hoạt động tố mà còn phải đảm bảo tính an toàn và bảo mật. Dù quy trình QA có chi tiết hay formal như thế nào thì chung quy lại mục đích của nó là để xác định và giải quyết bugs kịp thời trước khi release product. Xem thêm công việc của nhân viên QA là gì tại đây Phương pháp QA là gì Agile Phương pháp [...]