Công Nghệ
Review và giải thích sâu về framework, ngôn ngữ, AI, blockchain… ngắn gọn, dễ hiểu, cập nhật liên tục như git pull ‑‑rebase.
1826 bài viết

Estimate chính xác thời gian thực hiện task
Bài viết được sự cho phép của tác giả Lê Chí Dũng Estimate (ước tính khối lượng công việc) thường là chủ để gây tranh cãi lớn nhất giữa DEV và quản lý dự án ( PM ). Có một thực tế: Estimate chính xác thời gian thực hiện task là một việc rất khó! "Mục tiêu và thách thức của Chatbot là hiểu được cảm xúc của người dùng và có cảm xúc riêng" 10 bước để bắt đầu áp dụng kiểm thử tự động vào dự án Vì các task cần estimate thường là những task mới, mơ-hồ và có nhiều yếu tố không-xác-định xuất hiện trong suốt quá trình thực hiện. Tôi cảm thấy estimate giống như việc dự đoán tương lai, phải may mắn lắm mới có một kết quả chính xác. Việc này tương tự như trò ném phi tiêu trúng hồng tâm vậy… xác suất trúng là rất thấp! Tôi không thích suy nghĩ này. Để tránh những tổn thất sau mỗi lần release muộn, tôi bắt đầu tìm kiếm những đội khác cũng gặp phải vấn đề tương tự, tổng kết lại các phương pháp xử lý và lấy ra các giải pháp hiệu quả nhất. Và đây là giải pháp mà anh em tổng kết lại “Sau khi estimate thời gian để hoàn thành một tính năng X, hãy x3 con số này lên. 😅” Nguồn: https://xkcd.com/1658/ Hiển nhiên, đây không phải là công thức estimate chính xác. Trong quá trình tìm kiếm giải pháp cho vấn đề này, tôi đã học được một thứ đó là không hề có mẹo hay lối tắt để giải quyết vấn đề. Chúng ta cần thực hiện đầy đủ tuần tự các bước để có kết quả estimate chuẩn nhất. Dưới đây là 4 bước...

Hướng dẫn Angular 2 cho người mới bắt đầu – Phần 3
Bài viết được sự cho phép của tác giả Tino Phạm Ở phần 2 , bạn đã tạo được một ứng dụng với Angular 2 + Typescript. Tuy nhiên, nó không có gì ngoài hiển thị dòng chữ “My First Angular 2 App”. Trong phần này, mình sẽ cố gắng giải thích thêm về các bước mà chúng ta đã thực hiện ở phần 2 . "Muốn đi nhanh phải dựa vào dev, muốn đi nhanh hơn nữa phải dựa vào khách hàng" 8 lợi thế khi sử dụng Polymer so với Angular và React File tsconfig.json File tsconfig.json là file cấu hình cho trình biên dịch của Typescript (Typescript compiler configuration). Nghĩa là, chúng ta viết code Typescript ( *.ts ) nhưng khi chạy ứng dụng thì browser sẽ đọc nội dung file ( *. js ). Ví dụ: main.ts => sẽ có main.js , main.js.map được sinh ra.Các files main.js , main.js.map được Typescript compiler (tsc) tạo ra khi chúng ta gọi lệnh npm start .Vậy khi Typescript compiler chạy, nó sẽ đọc nội dung file tsconfig.json để biết được làm thế nào để biên dịch từ Typescript sang Javascript. target : “es5” => sử dụng phiên bản ECMAScript 2009 (ES6: ECMAScript 2015). Bạn có thể thay đổi nếu muốn dùng ES6 để biên dịch. module : “system” => chỉ ra làm thế nào để các modules được load lên khi làm việc với các file riêng lẽ. Ở đây sử dụng system. Ngoài ra còn các patterns: CommonJS, AMD, UMD sourceMap : true => cho phép tạo ra file *.map tương ứng. moduleResolution : “node” => cách này chúng ta có thể load modules từ thư mục node_modules. emitDecoratorMetadata và experimentalDecorators : true => enable sử dụng decorators. noImplicitAny : false => disable thông báo lỗi khi...

Nhật kí những ngày đầu làm Tester
Bài viết được sự cho phép của vntesters.com Chào các bạn! Mục đích bài viết này của mình là chia sẻ những kỉ niệm của những ngày đầu làm Tester với những bạn đã và đang có mục tiêu trở thành tester trong tương lai. Mình bắt đầu tìm hiểu về kiểm thử phần mềm từ năm cuối đại học, vì ở trường mình không được học môn này nên về cơ bản đều phải tự tìm hiểu hết :((… Việc làm cho tester Những nguồn tin nào mình chưa hiểu hay có thắc mắc gì cần giải đáp thì mình post bài lên các diễn đàn như testingvn , diễn đàn testervn …Bảo vệ tốt nghiệp xong, thấy kiến thức mình còn quá ít, chỉ mới tìm hiểu cơ bản về kiểm thử, tìm tòi trên mạng, mình bắt đầu tham gia một khóa học kiểm thử trong 3 tháng… .Sau 3 tháng, kết quả có khả quan hơn chút, nhưng vốn tiếng anh của mình còn kém nên đi xin việc rất khó khăn…Hầu như công ty nào có nhu cầu tuyển tester mình đầu apply vào nhưng qua vòng test đến vòng phỏng vấn đều “tạch” …:((….lúc đó thực sự nản luôn ấy… Cuối cùng mình xin đi thực tập không lương ở một công ty gia công phần mềm trên đường Phạm Ngọc Thạch….thật may là mọi chuyện đều ổn. Những ngày đầu, có khó khăn hay thắc mắc gì các anh chị trong team đều hỗ trợ rất nhiệt tình….mình cố gắng học việc và học hỏi môi trường, cách làm việc, kinh nghiệm…nói chung học được gì thì học tất ^^…Và giờ thì mình thấy rất ổn. Hi vọng các bạn đừng bỏ cuộc, hãy kiên nhẫn, rồi sẽ có kết quả. Automation skills...

Buils một ứng dụng thời tiết sử dụng AngularJS
Người viết: Đinh Quốc Hội Xin chào các bạn, bây giờ một ngày hầu hết mọi người thích xem báo cáo thời tiết của các thành phố cụ thể của họ. Vì vậy, tất cả mọi người có thể có nghi ngờ rằng làm thế nào các ứng dụng thời tiết được thực hiện / phát triển và khái niệm chính đằng sau này là gì. Vì vậy, không cần phải lo lắng và suy nghĩ về điều đó nhiều, bởi vì trong bài viết này, chúng ta sẽ xem làm thế nào chúng ta có thể phát triển ứng dụng Weather của riêng mình bằng cách sử dụng Angular JS. Trước khi nói điều này, ta chỉ muốn thông báo cho bạn rằng bạn nên biết về Angular JS, REST Full API và JSON. Nếu bạn không biết về những công nghệ này, tôi sẽ chia sẻ một số tài liệu tham khảo và sau này tôi sẽ viết blog trên các công nghệ này, để bạn có thể có được một số ý tưởng. Sau đây là các bước để phát triển Ứng dụng thời tiết bằng Angular JS Nhận một WebService API thời tiết được cung cấp bởi bất kỳ nhà cung cấp dịch vụ nào. Thiết kế một mẫu HTML. Logic để xử lý API và hiển thị dữ liệu trên mẫu Tham khảo cách sử dụng AngularJS tại đây . Bước 1: (Lấy API thời tiết) Trong bước này, chúng ta cần có API thời tiết. API thời tiết là gì: API thời tiết là dịch vụ, có một số chức năng hoặc phương pháp để cung cấp dữ liệu thời tiết (dưới định dạng JSON hoặc XML) của một vị trí cụ thể. Cách nhận API thời tiết: Có rất nhiều nhà cung cấp...

Tôi đã viết API lấy thời khóa biểu trường như thế nào?
Helu các bạn! Mình học theo tín chỉ cho nên lịch học không phải tuần nào cùng giống nhau nên hôm nào cũng phải vào trang trường xem lịch (hơi mất chút thời gian và giao diện không trực quan) . Một cách nữa là viết lại thời khóa biểu (Mất nhiều thời gian mà có thể sai sót) . Các cách này không phù hợp với một thằng lười như mình và mình muốn dùng nhiều lần… Dựng API lấy thời khóa biểu sau đó có thể viết chatbot nhắc lịch hay web/mobile xem lịch tùy ý nữa… Hừm .. Bắt đầu thôi . Bước 0: Ý tưởng thực hiện Input: tài khoản, mật khẩu sử dụng trên trang trường. Lấy file thời khóa biểu. Phân tích file thời khóa biểu => dữ liệu (JSON). Bước 1: Phân tích request Password encrypted trước khi gửi lên!! Password truyền lên đã mã hóa md5, có một số data khác Chọn request login > Copy as cURL (bash) . Mở Postman Chọn Import > Paste raw text > Ấn nút import Ta được: Gửi POST thử xem sao ! Vậy là lấy được cookie rồi ^^ Đến với phần lấy file, mình sẽ phân tích request lấy file như request trên và đây là kết quả: Phần Headers Phần response – file excel là đây chứ đâu ^^ Bước 2: Tiến hành code Mình sử dụng express của NodeJS Cấu trúc project File login Nhiệm vụ là lấy cookie let optionsGetCookies = (username,password,form) =>{ form['__EVENTTARGET'] = ''; form['txtUserName'] = username; form['txtPassword'] = password; form['btnSubmit'] = 'Đăng nhập'; return { method : 'POST', uri : urlLogin, simple: false, timeout: 20000, followRedirect: true, resolveWithFullResponse: true, form:form, headers: { 'Connection' : 'keep-alive', 'Cache-Control' : 'max-age=0', 'Origin' : urlOrigin, 'Upgrade-Insecure-Requests':'1', 'Content-Type' : 'application/x-www-form-urlencoded', 'User-Agent' :...

Mediator Design Pattern – Collaborate via me
Bài viết được sự cho phép của tác giả Kiên Nguyễn Tiếp tục với chuỗi bài viết về Behaviral Pattern (Pattern hành vi), hôm nay là Mediator Design Pattern. Pattern này cũng khá là dễ nhớ nếu hiểu về concepts. Ngoài ra, nó cũng có đôi điểm tương đồng và đôi khi hay bị nhầm lẫn với Observer Pattern. 30 tiện ích Chrome cho designer và dev 5 ứng dụng Android tuyệt vời dành cho Android Developer và Designer Trở thành Guru Design Pattern ngay thôi nào! 1. Mediator Design Pattern là gì? Mediator Design Pattern is a behavioral design pattern that lets you reduce chaotic dependencies between objects. The pattern restricts direct communications between the objects and forces them to collaborate only via a mediator object. Mediator Design Pattern là dạng pattern hành vi, cho phép giảm bớt sự phụ thuộc hỗn loạn giữa các đối tượng. Mẫu này cũng tắt tất cả các giao tiếp giữa object, bắt buộc tất cả các object khi muốn comunication đều phải thông qua đối tượng mediator. Vì kiểm soát cách thức giao tiếp (communication) giữa các object nên thuộc về behavioral (hành vi). Để dễ nhớ hơn, ta có thể xem Mediator như cảnh sách giao thông thực hiện điều tiết ở ngã tư. Tuy nhiên điều tiết không chỉ đơn thuần là bấm đèn xanh đỏ, tất cả giao thông qua lại ngã tư đều chịu sự điều khiển của anh cảnh sát này. 2. Bài toán thực tế Phi công và tất cả các phương tiện bay trên trời đều cần được điều khiển. Trong thực tế được biết tới với tên (Đài kiểm soát không lưu). Để tránh xảy ra va chạm, rõ ràng tất cả cá phương tiện bay (máy bay, trực thăng, thủy phi cơ,…) đều...

Các loại layout trong Android (RelativeLayout, LinearLayout)
Bài viết được sự cho phép của tác giả Trần Hữu Cương Các loại layout trong Android (RelativeLayout, LinearLayout) 1. Layout là gì? Layout là thành phần định nghĩa cấu trúc giao diện người dùng hay nói cách khác là thành phần quyết định đến giao diện của một màn hình trong ứng dụng Android. Layout hỗ trợ việc căn chỉnh các widget (Ví dụ: TextView, Button, hay EditText…) như chúng ta thấy trong các ứng dụng Android. 2. Các loại Layout trong Android. Android đang hỗ trợ chúng ta 6 loại layout: RelativeLayout LinearLayout GridLayout TableLayout Framelayout ConstraintLayout. Hôm nay mình sẽ hướng dẫn các bạn làm việc với RelativeLayout và LinearLayout Tuyển dụng lập trình android làm việc online 3. RelativeLayout RelativeLayout là một ViewGroup có hiển thị các View con ở các vị trí tương đối. Vị trí của mỗi View có thể được quy định liên quan đến các View anh em (như bên trái của hoặc bên dưới một View khác) hoặc ở các vị trí tương đối với khu vực cha RelativeLayout(chẳng hạn như sắp xếp ngay phía dưới, bên trái hoặc trung tâm). a. Thuộc tính Gravity Các View con khi đã định vị xong trong RelativeLayout, giả sử coi như tất cả các View con nằm vừa trong một đường biên chữ nhật, thì cả khối các View con này có thể dịch chuyển tới những vị trí nhất định trong RelativeLayout bằng thuộc tính: android:gravity , nó nhận các giá trị (có thể tổ hợp lại với ký hiệu | ) Giá trị Ý nghĩa center Căn ở giữa top Ở phần trên bottom Phần dưới center_horizontal Ở giữa theo chiều ngang center_vertical Ở giữa theo chiều đứng left Theo cạnh trái right Theo cạnh phải bottom Cạnh dưới b. Định...

Những loại virus nguy hiểm nhất mọi thời đại (Phần 1)
Bài viết được sự cho phép của tác giả Trần Thị Thu Hà Kể từ ngày virus đầu tiên xuất hiện, đến nay đã hơn 20 năm. Cũng có nhiều virus mới ra đời, dưới đây là một số loại virus nguy hiểm nhất, gây thiệt hại nặng nhất. Sử dụng biến Node Environment Nhân sự nên làm gì giữa tâm bão Coronavirus 1. CIH (1998) Ước tính thiệt hại 20-28 triệu USD trên toàn thế giới, không tính dữ liệu PC bị phá hủy. CIH có nguồn gốc từ Đài Loan (6/1998) được nhận dạng là một trong những virus nguy hiểm và có sức tàn phá lớn nhất. CIH còn được biết đến với tên là Chernobyl vì thời điểm kích hoạt trùng với ngày xảy ra vụ nổ nhà máy nguyên tử Chernobyl. Virus này tấn công vào các file thực thi của hệ điều hành Windows 95,98 và ME, có khả năng cư trú trên bộ nhớ máy tính để lây nhiễm và các file thực thi khác. Chỉ sau một thời gian ngắn hoạt động CIH có thể ghi đè dữ liệu trên ổ cứng, biến dữ liệu trở nên vô dụng. Tuy nhiên ngày này CIH không còn nguy hiểm bởi các hệ điều hành mới như Windows XP, 2000 đã được cải tiến. 2. Melissa (1999) Ngày 26/3/1999, virus Melissa đã lây nhiễm toàn cầu, ước tính thiệt hại 300-600 triệu USD. Virus dạng kịch bản macro trong Word này đã lây nhiễm vào 15/20 chiếc máy tính doanh nghiệp trên toàn cầu. Melissa phát tán nhanh đến nỗi Intel, Microsoft và một số hãng phần mềm khác sử dụng Outlook đã buộc phải đóng toàn bộ hệ thống e-mail để hạn chế thiệt hại. Melissa sử dụng Outlook để gửi mail đính...

Các thư viện web animation tốt nhất cho JavaScript
Biểu đồ miêu tả tình trạng web animation hiện nay với các thư viện, frameworks và plugins hay nhất dựa trên tính linh hoạt và hiệu suất hoạt động. Infographic 1: Biểu đồ Web Animation Infographic này được chia thành 3 phần. Phần đầu tiên gồm 1 vài thư viện animation cung cấp tất cả công cụ từ các hàm easing và callbacks đến timing control, có cả animation functions chung. Chúng tôi đã tách riêng các thư viện sử dụng CSS3 transition để các elements sinh động hơn , thay vì dùng các thư viện sử dụng Javascript . Chúng tôi cũng tách các thư viện hướng tới các animations dành cho SVG, WebGL hoặc HTML5 Canvas . Infographic 2: Danh sách các tools Phần thứ 2 tập trung vào nhiều methods khác nhau để các yếu tố UI và các đối tượng khác trong DOM sinh động hơn như animation cuộn, parallax, sprites, 3D transformations, physics engines và transitions. Infographic 3: Các mẹo hiệu suất Infographic cuối chỉ ra vài mẹo cơ bản giúp bạn lựa chọn giữa animation dựa trên CSS hoặc dựa trên Javascript tùy theo yêu cầu của mỗi dự án như các phiên bản của mỗi hệ điều hành, thiết bị… Bài viết tham khảo Giới thiệu bạn 1 số bài viết và ý kiến thú vị có thể giúp bạn đưa ra quyết định chính xác. Myth Busting: CSS Animation vs. JavaScript của Jack Doyle gần đây cho chúng ta cảm nhận chung về hiệu suất của animation dựa trên JavaScript, trong tương quan với các components CSSS được animate trực tiếp. CSS Animations and Transitions Performance: Looking inside the Browser của team Adobe Web Platform giải thích về các quy trình và vấn đề về browser rendering. Bài viết nổi tiếng thứ...

Lập trình IOS: Triển khai MVVM cho prject swift (phần 1)
Bài viết được sự cho phép của tác giả Lê Xuân Quỳnh Hôm nay chúng ta sẽ làm 1 ứng dụng nho nhỏ, hiển thị danh sách các loại động vật, như hình ảnh: Danh sách các loại động vật Đầu tiên là tải source code của tôi tại đây: https://github.com/codetoanbug/MVVMSample Tôi hướng dẫn các bạn tải code về bằng git 1 xíu nhé. Là git command line nha các bạn. Rx-MVVM(1): Cấu trúc project – lib manager Rx-MVVM(2): Cấu trúc project – quản lý thư viện sử dụng trong dự án Đầu tiên là bạn mở terminal và gõ: git clone https://github.com/codetoanbug/MVVMSample.git Sau đó bạn cd vào thư mục code MVVMSample. Mẹo là gõ cd MV, nhấn nút tab trên bàn phím nó cũng ra lệnh như sau: cd MVVMSample Tiếp theo gõ để show toàn bộ branch: git branch -a Bạn sẽ thấy branch master, bai1… Mỗi branch sẽ chứa code của 1 bài. Ở đây ta chỉ quan tâm code bài 1 nên bạn cần chuyển qua code của bài 1 bằng cách gõ như sau: git checkout bai1 Như vậy là bạn đã có code của bài hôm nay rồi đấy. Đơn giản đúng không? Để triển khai mô hình MVVM, chúng ta cần nắm qua mô hình này xem nó hoạt động như thế nào. Hãy tiếp cận 1 cách đơn giản nhất nhé. Mặc định khi bạn tạo 1 project thì Xcode nó tự render các file theo tiêu chuẩn MVC của họ. M là Model, V là View, còn C là Controller. Tuy nhiên, ở đây chúng ta sẽ hay xử lý logic để lấy dữ liệu cho view và hiển thị view chung vào ViewController. Nếu tiếp cận cách đơn thuần như thế, thì cái table của bạn muốn có dữ liệu...

Các thành phần trong hệ sinh thái .NET
Thật sự thì có rất nhiều bạn trong đó có mình đã và đang làm việc với .NET rất lâu năm và nhất nhiều. Tuy nhiên, khi được hỏi và giải thích cho một ai đó rõ về hệ sinh thái của .NET cũng như những khác biệt giữa .NET Framework , .NET Core và .NET Standard như thế nào thì thật sự mọi người thường bị lúng túng và ú ớ trả lời. Trong bài viết này chúng ta sẽ cùng nhau làm sáng tỏ những mù mờ về những khái niệm này. Qua đó cũng giúp chúng ta có được một kiến thức nền tảng tốt về những gì chúng ta đang sử dụng để có thể phát triển dự án tốt hơn, chất lượng hơn. Hệ sinh thái .NET .NET là nền tảng mã nguồn mở do Microsoft phát triển. Dùng để hỗ trợ cho các developers xây dựng các ứng dụng khác nhau và hỗ trợ ứng dụng chạy đa nền tảng (cross-platform). Các vị trí tuyển dụng .NET hấp dẫn online .NET là một hệ sinh thái do đó nó hỗ trợ developers nhiều ngôn ngữ lập trình (C#, VB, F#,… ), nhiều trình soạn thảo (VS Code, Visual Studio) và hàng loạt các thư viện để xây dựng các ứng dụng như: web, mobile app, desktop app, gaming và IoT. >> Xem thêm: TERAAPP.NET – Ứng dụng viết app mobile Các thành phần kiến trúc chính trong .NET .NET Implementations .NET Runtimes . NET Standard .NET Toolings and Common Infrastructure Trong bài này, chúng ta chỉ tập trung tìm hiểu về .NET Ecosystem. Thế nên, để hiểu rõ hơn code bên trong các ứng dụng .NET hoạt động thế nào chúng ta xem hình minh họa sau đây: Hình 3 Trong Hình 3 ,...

Giải mã sức mạnh từ BIDV – điểm đến lý tưởng để phát triển sự nghiệp
BIDV với tên đầy đủ là Ngân hàng Đầu tư và Phát triển Việt Nam (tên giao dịch quốc tế: Bank for Investment and Development of Vietnam) là ngân hàng thương mại nhà nước lớn nhất Việt Nam hiện đã và đang hợp tác kinh doanh với hơn 800 ngân hàng trên thế giới, chiếm được sự tin tưởng và tín nhiệm của nhiều đối tác trong suốt hơn nửa thế kỷ qua. BIDV – Điểm tựa niềm tin Thành lập ngày 26/4/1957, Ngân hàng TMCP Đầu tư và Phát triển Việt Nam (BIDV) tự hào là định chế tài chính lâu đời nhất trong lĩnh vực tài chính ngân hàng tại Việt Nam, có uy tín và giá trị hàng đầu Việt Nam. BIDV cung cấp đầy đủ và đa dạng sản phẩm, dịch vụ đến khách hàng cá nhân, khách hàng doanh nghiệp và định chế tài chính; bao gồm dịch vụ Tiền gửi, Thẻ, Tín dụng, Ngân hàng Điện tử, Thanh toán, Quản lý tiền tệ và các dịch vụ khác. Trải qua hàng thập kỷ năm phát triển, BIDV đã thể hiện được vị thế của mình với những con số ấn tượng: Hơn 190 chi nhánh, trên 855 điểm giao dịch trên cả nước bao phủ 63 tỉnh/ thành Việt Nam; Hiện diện thương mại tại 6 quốc gia: Campuchia, Lào, CH Séc, Đài Loan, Nga, Myanmar; Hơn 57825 cây ATM và hệ thống máy Pos giúp tiện lợi hóa các giao dịch cho người dùng. Để đạt được những con số trên, toàn thể đội ngũ hơn 25.000 cán bộ, nhân viên của BIDV luôn không ngừng phấn đấu và chiến đấu dựa trên những mục tiêu kinh doanh, cũng là sứ mệnh và kim chỉ nam cho sự phát triển của BIDV: Đồng...