NLP: Build a Trie Data structure from scratch with python
A trie is a tree-like data structure whose nodes store the letters of an alphabet. By structuring the nodes in a particular way, words and strings can be retrieved from the structure by traversing down a branch path of the tree. The common usage of tries can be found in for autocomplete ...
ReactJS: Custom Pagination
Bản thân tôi là một lập trình viên PHP. Trong lúc rảnh rỗi, tôi có nghiên cứu thêm về ReactJS. Nếu chỉ đọc tài liệu của ReactJS rồi viết lại thì tôi nghĩ đến 90% là tới tuần sau tôi sẽ lại quên hết sạch những gì mà hôm nay tôi đã đọc. Với tư duy của một lập trình viên đã có gần 4 năm làm việc với ...
Laravel with MongoDB
Hello anh em, đến hẹn lại lên hôm nay mình xin chia sẻ với mọi người về chủ đề Laravel kết hợp với MongoDB mà thông thường ta hay kết hợp Laravel với MySQL. Và mặc định thì Laravel chỉ hỗ trợ các cơ sở dữ liệu có cấu trúc như: MySQL, PostgreSQL, SQLite, SQL Server. Tuy nhiên theo thời thế thì ...
9 câu hỏi Scrum master và Product owner có thể hỏi
Để thành công với vai trò là một Master Scrum, cần phải chuyển từ việc đưa ra các nhận định sang việc đặt ra nhiều câu hỏi hơn. Dưới đây là một số câu hỏi. Hầu hết trong số này có thể được dùng để đặt câu hỏi cho đội dự án, cho dù bạn là một Scrum Master hoặc Product Owner. Hai câu hỏi về ước ...
Xử lý TỐI ƯU khi xoay màn hình với Architecture Component ViewModel( Có ví dụ thực tế )
Architecture Component ViewModel được Google cho ra mắt vào tháng 11/2017 cho tới nay nó vẫn còn khá mới mẻ trong cộng đồng Android Developer. Mục đích của sự công bố này nhằm giúp cho việc phát triển ứng dụng ngày càng trở lên thuận tiện, bảo trì và kiểm thử được dễ dàng hơn. Tuy nhiên ban đầu khi ...
Có nên tiếp tục sử dụng GIF trên website nữa không?
Trong một lần support người bạn làm tính năng tạo gif thumbnail cho video, mình phát hiện ra rằng một ảnh GIF có cùng duration, resolution và fps sẽ có dung lượng lớn hơn nhiều lần so một video tương đương!!! Cụ thể nếu video dài 10s (có dung lượng khoảng 1.3Mb) thì sau khi convert qua GIF sẽ có ...
Hướng dẫn tích hợp CI vào 1 project laravel sử dụng Travis
Trong các dự án cá nhân hay outsource thì CI (continuous integration) & CD (Continuous delivery) là rất quan trọng chắc hẳn các bạn không còn ai xa lạ đến 2 từ khoá này. Tuy nhiên hôm nay mình vẫn muốn giới thiệu qua và hướng dẫn các bạn tích hợp nó vào trong dự án. Mục đích của nó thì quá ...
MÔ HÌNH XOẮN ỐC LÀ GÌ? KHI NÀO NÊN SỬ DỤNG? ƯU VÀ NHƯỢC ĐIỂM CỦA MÔ HÌNH
Mô hình xoắn ốc ( Spiral-Model ) là mô hình có sự kết hợp giữa mô hình thác nước ( Waterfall-Model ) và mô hình tiếp cận lặp ( Iterative-Model ) và nó có nhiều điểm giống nhau với mô hình gia tăng ( Incremental-Model ). Chú trọng vào phân tích rủi ro dự án. Mỗi giai đoạn trong mô hình được ...
Vòng đời khiếm khuyết, lỗi (bug) trong kiểm thử phần mềm
Giới thiệu về vòng đời của khiếm khuyết (defect): Bài viết này sẽ nói về vòng đời của một khiếm khuyết (defect) để giúp bạn nhận thức được các giai đoạn khác nhau của một khiếm khuyết (defect) mà một người kiểm thử (tester) phải đối phó trong quá trình kiểm thử. Trong thực tế, lỗi ...
Swift Tutorial: Cách thích hợp để request người dùng review bằng cách sử dụng SKStoreReviewController trong iOS 10.3 trở lên
Một trong những mục tiêu chính của developer là tiếp cận tốt hơn với cộng đồng và nhận phản hồi từ user để cải thiện ứng dụng cũng như khuyến khích thêm nhiều user khác sử dụng app. Trong nhiều năm, developer đã sử dụng các method từ bên thứ 3 để đề xuất việc review với user dựa trên việc user đã ...
e=mc^2
Năm 1905 một định luật vật lý kinh điển được Enstein giới thiệu và được cả thế giới công nhận sau đó: e=mc^2. Hơn một thế kỉ sau, có lẻ ở nơi tiên cảnh Enstein cũng không thể ngờ được rằng định lý của mình lại một lần nửa chính xác trong ngành công nghiệp IT đầy "cạm bẫy" hiện nay (lol). Có một ...
Laravel deep dive: tìm hiểu về redis
Redis là một server lưu trữ dữ liệu trong bộ nhớ giúp cho việc đọc và ghi nhanh chóng, ngoài ra ta có thể cấu hình để cho nó thỉnh thoảng lưu trữ dữ liệu lên đĩa (có dung lượng lớn nhưng tốc độ đọc ghi chậm), nhận đôi hoặc tác dữ liệu vào các nodes khác nhau. Nói vậy có nghĩa là sử dụng redis cùng ...
Viết Chrome Extension bằng VueJS
Ban đầu mình tính làm một series về chủ đề này nhưng sau đó tìm ra được tut này hướng dẫn rất hay từ những điều cơ bản nhất, các bạn có thể xem ở đây để hiểu hơn các định nghĩa cơ bản của extension, sự kiện, hành động,.... Do đó ở bài này mình sẽ tập trung luôn vào cách viết extension bằng VueJS. ...
Tìm hiểu về nguyên lý "Composition over Inheritance"
Vào những ngày đầu được join dự án thực tế lúc ấy khá là non nớt và còn chưa biết nhiều về cách thiết kế chương trình hay làm sao để chương trình của mình được viết một cách tối ưu nhất, thời điểm đấy team tôi thiếu người và leader lại bận "sm" vì phải care cùng lúc 2 projects, tôi nhận được task ...
admin-on-rest component
List view hiển thị một list các record được fetch từ REST API về, List component sẽ chịu trách nhiệm truyền data tới view thông qua <Datagrid>, <Datagrid> compoent này lại tiếp tục render các thuộc tính của record thông qua <Field> compoent <List> component reder list ...
Làm quen với React
React đang nhanh chóng trở thành bộ thư viện JavaScript phổ biến, so với một số lượng không ít các thư viện và framework JavaScript hiện nay thì React nổi trội ở tính đơn giản và hiệu quả và thích hợp để build các ứng dụng UI phức tạp. Vậy React là gì, sử dụng như thế nào và tại sao lại sử dụng ...
Làm việc với DATE trong Swift
Hầu hết trong mọi app chúng ta đều cần xử lý các vấn đề liên quan đến ngày tháng ví dụ như hiển thị ngày tháng theo một format nào đó như "yyyy/mm/dd" hay "dd-mm-yyyy" chẳng hạn, hay thậm chí là so sánh giữa 2 dates với nhau để làm một tác vụ nào đó, ... Với sự phổ biến như vậy, hôm nay mình sẽ ...
Những điểm khác nhau chính giữa thiết bị thật và thiết bị giả lập/ mô phỏng trong kiểm thử phần mềm
Kiểm thử trên thiết bị thật Kiểm thử trên thiết bị thật cho phép chúng ta chạy các ứng dụng di động của mình và kiểm thử chức năng của nó. Việc thực hiện kiểm thử trên thiết bị thật đảm bảo với bạn rằng ứng dụng của bạn sẽ hoạt động trơn tru trên các thiết bị của khách hàng. Bởi vì khi không được ...
Kiểm thử dựa trên rủi ro
Kiểm thử dựa trên rủi ro là gì? Kiểm thử dựa trên rủi ro là việc ưu tiên các tính năng, mô-đun và các chức năng của Ứng dụng thử nghiệm (Application Under Test) dựa trên những tác động và khả năng xảy ra lỗi. Nó liên quan đến việc đánh giá rủi ro dựa trên độ phức tạp, mức độ quan trọng của nghiệp ...
Python - Network Programming
Python cung cấp 2 mức truy cập tới network service. Ở mức thấp, ta có thể truy cập vào basic socket support trong hệ điều hành ở mức cơ bản, cho phép implement các máy khách và máy chủ cho 2 giao thức hướng kết nối và kết nối. Python cũng cung cấp các thư viện truy cập ở mức cao cho giao thức mạng ...