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

8 thủ thuật khi làm việc với Object sử dụng resting và spreading
Bài viết được sự cho phép của tác giả Lưu Bình An Những đoạn code bỏ túi hay xài nhất khi đụng tới object JavaScript đã tạo ra Object từ Function như thế nào? Object Relational Mapping Merge object part1 và part2 sẽ được merge vào user1 const part1 = { id: 100, name: 'An Luu' } const part2 = { id: 100, password: 'Password!' } const user1 = { ...part1, ...part2 } //=> { id: 100, name: 'An Luu', password: 'Password!' } Thêm property Clone một object đồng thời thêm một số property mới vào object mới clone const user = { id: 100, name: 'An Luu'} const userWithPass = { ...user, password: 'Password!' } user //=> { id: 100, name: 'An Luu' } userWithPass //=> { id: 100, name: 'An Luu', password: 'Password!' } Thêm property khi thỏa điều kiện Trường hợp này hay dùng nhất là lúc chúng ta truyền lên API một object, nếu thõa điều kiện, sẽ thêm một số property vào trong object const user = { id: 100, name: 'An Luu' } const password = 'Password!' const userWithPassword = { ...user, id: 100, ...(password && { password }) } userWithPassword //=> { id: 100, name: 'An Luu', password: 'Password!' } Xóa property khỏi object // hàm này sẽ trả về object mới ko bao gồm password const noPassword = ({ password, ...rest }) => rest const user = { id: 100, name: 'An Luu', password: 'Password!' } noPassword(user) //=> { id: 100, name: 'An Luu' } Xóa property với key chỉ định const user1 = { id: 100, name: 'An Luu', password: 'Password!' } const removeProperty = prop => ({ [prop]: _, ...rest }) => rest // ---- ------ // / // dynamic destructuring const removePassword = removeProperty('password') const removeId = removeProperty('id') removePassword(user1)...

Selenium – Xác Định Đối Tượng UI
Bài viết được sự cho phép của vntesters.com Trong kiểm thử tự động, phần quan trọng là chúng ta phải làm sao cho công cụ kiểm thử nhận biết và phân biệt được các đối tượng UI trên phần mềm mà chúng ta đang kiểm tra. Trong kiểm thử, chúng ta gọi bước này là xây dựng bộ giao diện người dùng – build GUI Repositories. Cơ bản, nó là một bệ từ điển kết nối giữa một cái tên logic – thứ mà chúng ta dùng trong script – và mô tả vật lý – thứ hiển thị trên phần mềm. 18 designer hàng đầu dự đoán về xu hướng UI/ UX trong năm 2022 5 bài học quí giá về việc phát triển ứng dụng iOS Để có thể tạo một GUI Repository tốt, chúng ta cần xác định mô tả vật lý của đối tượng UI một cách chính xác, đơn nhất và ổn định. Tính chính xác, đơn nhất của mô tả vật lý dùng để đảm bảo script của chúng ta có thể chạy một cách đúng đắn. Tính ổn định giúp chúng ta không phải chỉnh sửa nhiều khi phần mềm có sự thay đổi. Selenium cũng như vậy, bộ GUI Repository cũng đòi hỏi các tính chất như các công cụ kiểm thử khác. Có khác, chỉ là các thuộc tính của UI là đặc thù về Web mà thôi. Đối Tượng UI – Locators Selenium hỗ trợ chúng ta xác định UI dựa trên các thuộc tính, và chúng ta gọi một cách xác định đối tượng UI thông qua thuộc tính của nó là locator, như sau: ID Name Link Text CSS Selector Tag/ID Tag/class Tag/attribute Tag/class/attribute Inner text XPath Đối với ID , đây được coi như là thuộc tính...

Xu hướng công nghệ mới cho ngành Logistics và cơ hội bứt phá sự nghiệp tại LOGIVAN
Ra đời với sứ mệnh số hóa ngành công nghiệp vận tải đường bộ, LOGIVAN cung cấp hệ thống tự động hóa, đem đến sự kết hợp giữa chất lượng cao và dịch vụ Logistics uy tín đến mọi doanh nghiệp Việt Nam. Từ đó mang lại giải pháp cho bài toán “xe tải rỗng chiều về”, giúp chủ hàng tiết kiệm chi phí hơn so với cách thức vận hành truyền thống, tạo hiệu quả cao cho nền kinh tế nước nhà. LOGIVAN – Sự ra đời của một sáng kiến công nghệ, mở ra thời kì mới cho ngành vận tải Việt Nam Dịch vụ vận chuyển hàng hóa từ lâu đã đóng vai trò quan trọng trong nền kinh tế của đất nước, là yếu tố cốt lõi trong việc phân phối và lưu thông hàng hóa, thúc đẩy cho hoạt động sản xuất được diễn ra nhanh chóng, liên tục và dễ dàng. Tuy nhiên, còn nhiều hoạt động diễn ra khiến cho chi phí Logistics luôn đạt mức cao gây nên tình trạng kém hiệu quả và bế tắc đối với ngành vận tải. Hiểu được nhu cầu và thách thức của các doanh nghiệp trong vấn đề vận chuyển, lưu thông hàng hóa, LOGIVAN ra đời như một làn gió mới, khởi đầu sứ mệnh số hóa ngành công nghiệp vận tải Việt Nam. Được hình thành từ năm 2017, LOGIVAN là startup công nghệ trong lĩnh vực Logistics, tập trung giải quyết bài toán kết nối thị trường vận tải, giúp chủ xe và chủ hàng tìm được đến nhau thông qua một nền tảng công nghệ cao, giải quyết bài toán “xe tải rỗng chiều về” – bài toán lớn đối với ngành vận tải Việt Nam. Trong suốt 3 năm nỗ...

Có cần bằng cấp về khoa học máy tính để được làm việc trong lĩnh vực công nghệ?
Tác giả: Dave Gray Nếu muốn tìm hiểu và gia nhập lĩnh vực công nghệ thông tin, có lẽ không ít người trong số chúng ta đã nghe đến việc cần phải có chứng chỉ hay bằng cấp liên quan đến lĩnh vực này, trong số đó có những loại bằng liên quan đến ngành khoa học máy tính. Tuy nhiên, có thật sự như vậy không? 1. Những điều bạn cần biết nếu đang xem xét học thêm một tấm bằng Bạn nên tập trung vào những gì bạn thật sự muốn làm. Lên một kế hoạch cụ thể và biến nó thành hành động để đạt được loại bằng cấp mà mình mong muốn. Nếu bạn không tập trung vào những gì bạn muốn làm, bạn có thể lãng phí tiền bạc và thời gian (điều này thậm chí còn có giá trị hơn) để tham gia các lớp học mà bạn không hứng thú và tốn rất nhiều tiền bạc. Hãy xác định xem bạn thật sự muốn làm gì? Tôi học đại học ngay sau khi tốt nghiệp trung học vì bố mẹ tôi nhất quyết không đồng ý cho tôi theo đuổi con đường riêng của mình. Tôi đã kết thúc việc thay đổi chuyên ngành nhiều lần trong 4 năm rưỡi vì tôi thật sự không tìm thấy được đam mê trong chúng. Tôi muốn trở thành một nhạc sĩ trên con đường tương lai với một ban nhạc chứ không phải là một sinh viên. Cha mẹ tôi cần để cho tôi tìm thấy chính mình, tôi nghĩ vậy. Xem thêm các việc làm tuyển dụng Tester HCM hấp dẫn tại Station D 2. Khám phá giá trị của bản thân Tương tự như vậy, tôi nghĩ học đại học để khám phá...

Vietnam Mobile Day – Hẹn gặp lại ngày nắng đẹp!
Sáng ngày 03/06, sự kiện Ngày Hội Di Động Toàn Quốc chính thức khép lại với những dư âm khó quên giữa cơn nắng nóng đổ lửa ở trung tâm của mảnh đất miền Trung. Tiếp nối hành trình kết nối cộng đồng Mobile, chia sẻ giá trị kiến thức và cập nhật xu hướng mới, ngày cuối cùng của Vietnam Mobile Day tại Đà Nẵng đã tiếp đón gần 1000 khách tham dự cùng lắng nghe chia sẻ đến từ các chuyên gia của Google, Microsoft, MasterCard… Mở đầu sự kiện là topic Digital Transformation của diễn giả Francis Tuấn Anh – Giám đốc truyền bá công nghệ của Microsoft Việt Nam về ứng dụng Digital Transformation vào 4 giai đoạn Engaging Customers, Empowering Employees, Optimizing Operations và Transforming Products. Với mỗi giai đoạn, anh Tuấn Anh lại đề cập đến những công nghệ mới như Advanced analytics, IoT, Realtime operations… đi kèm với các ứng dụng thực tế trong nhiều ngành nghề khác nhau tại Việt Nam và thế giới. Tiếp theo chương trình là hàng loạt các topic khác, đi từ vĩ mô đến vi mô như ảnh hưởng của Digital, toàn cảnh Mobile app user tại Việt Nam, những ưu điểm nổi bật của Xamarin, 5 yếu tố ảnh hưởng đến doanh thu quảng cáo di động, cách monetize ứng dụng hiệu quả… 由 Station D 发布于 2017年6月2日 Phần trình bày của diễn giả Nguyễn Anh Khoa 由 Station D 发布于 2017年6月2日 Phần trình bày của diễn giả Francis Tuấn Anh Như vậy, sau hơn 3 tuần “chinh chiến” khắp 3 miền đất nước, Vietnam Mobile Day – Ngày hội thường niên lớn nhất trong lĩnh vực ứng dụng di động đã nói lời tạm biệt với cộng đồng Developer, Marketer, Designer đang hoạt động trong...

YAML là gì?
Bài viết được sự cho phép của tác giả Lê Chí Dũng YAML là gì? YAML là 1 định dạng dũ liệu trung gian được thiết kế để người dùng và các ngôn ngữ lập trình cùng hiểu được. YAML được dùng vào mục đích tương tự JSON, XML nhưng nó lại có nhiều tính năng nổi bật hơn vì cấu trúc dữ liệu linh hoạt hơn, hỗ trợ nhiều ngôn ngữ lập trình, diễn đạt và mở rộng dữ liệu hơn và dễ sử dụng vì khá có nhiều kiểu dữ liệu lập trình. chi tiết tại http://www.yaml.org/ Yaml cho web developer "Bắt đầu từ vị trí dev, làm tốt sẽ được trao cơ hội trở thành leader" Ví dụ về 1 đoạn YAML được biểu diễn như sau: - name: dung mail: me@lcdung.top - name: admin mail: admin@lcdung.top http://yaml-online-parser.appspot.com/ Là 1 trang chuyển đổi YAML sang JSON. Bạn nên dùng trang này trong lúc đọc sẽ nhanh hiểu hơn. YAML dùng làm gì? Tương tự JSON hay XML, YAML có thể dùng để chứa đựng thông tin ở dạng text. Dùng cho các file config, lưu giá trị hằng… YAML và JSON – JSON là YAML, nói cách khác JSON có thể đọc được bởi các trình đọc YAML, điều ngược lại không đúng. – JSON đáp ứng tốt hơn mục đích trao đổi dữ liệu ( thông qua AJAX…), YAML để xử lý các dữ liệu offline (file config…). Chắc vì JSON thường được xử lý nhanh hơn ( http://stackoverflow.com/questions/2451732/how-is-it-that-json-serialization-is-so-much-faster-than-yaml-serialization-in-p ) YAML và XML – YAML không có các thẻ thuộc tính như XML nhưng thay vào đó nó hỗ trợ các kiểu khai báo để xử lý dữ liệu. Ví dụ 1 đoạn XML < user id = " babooey " on = " cpu1 "...

Sử dụng Lombok để rút gọn code trong Java
Bài viết được sự cho phép của Tạp chí Lập trình Giới thiệu Lombok là một thư viện Java giúp sinh các mã getter & setter tự động. Bên cạnh đó còn hỗ trợ sinh các hàm khởi tạo (constructor) với tham số, hoặc không có tham số. Nếu là lập trình viên Java, chắc hẳn ai cũng biết getter/setter, constructor. Với những lớp mô tả dữ liệu (Entity class), chúng ta thường lặp lại các thao tác tạo mã getter/setter và constructor một cách nhàm chán. Lombok giúp mã ngắn gọn hơn trong những trường hợp này. Tuyển dụng lập trình viên Java lương cao Hãy xem ví dụ sau! Giả sử, chúng ta xây dựng chương trình quản lý danh sách việc cần làm (Todo List). Lớp mô tả dữ liệu Todo sẽ có 2 thuộc tính: title, complete . public class Todo { private String title; private boolean complete; public Todo() { } public Todo(String title, boolean complete) { this.title = title; this.complete = complete; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public boolean isComplete() { return complete; } public void setComplete(boolean complete) { this.complete = complete; } } Nếu sử dụng Lombok, đoạn mã trên có thể được viết lại như sau: @Getter @Setter @NoArgsConstructor @AllArgsConstructor public class Todo { private String title; private boolean complete; } Ở trên sử dụng 4 anotation: – @Setter để thay thế các phương thức: setTitle, setComplete – @Getter để thay thế các phương thức: getTitle, isComplete – @NoAgrsConstructor thay thế phương thức khởi tạo không có tham số Todo() – @AllArgsConstructor thay thế phương thức khởi tạo có tham số Todo(…) Nếu muốn gọn hơn nữa, chúng ta có thể viết như sau: Ở trên sử dụng 4 anotation:...

Xây dựng một ứng dụng trò chuyện bằng ReactJS trong 10 PHÚT (Phần 1)
Biên dịch: Nguyễn Quốc Đại Trong bài viết này, tôi sẽ chỉ cho bạn cách dễ nhất có thể để xây dựng một ứng dụng trò chuyện bằng React.js. Nó sẽ được xây dựng hoàn toàn mà không có code phía máy chủ, vì chúng tôi sẽ cho phép API Chatkit xử lý phía back-end. Tôi giả sử rằng bạn biết JavaScript cơ bản và bạn có tìm hiểu một chút React.js trước đây. Ngoài ra, không có điều kiện tiên quyết. Lưu ý : Tôi cũng đã tạo một khóa học miễn phí có thời lượng đầy đủ về cách tạo ứng dụng trò chuyện React.js tại đây . Nếu bạn làm theo hướng dẫn này, bạn sẽ hoàn thành được ứng dụng trò chuyện của riêng bạn, và sau đó bạn có thể xây dựng thêm nếu bạn muốn. Let’s get started! Bước 1: Cắt giao diện người dùng thành các components( thành phần nhỏ) React được xây dựng xung quanh các components, vì vậy điều đầu tiên bạn muốn làm khi tạo ứng dụng là cắt giao diện người dùng thành các components. Hãy bắt đầu bằng cách vẽ một hình chữ nhật xung quanh toàn bộ ứng dụng.Đây là thành phần gốc của bạn và tổ tiên chung cho tất cả các thành phần khác. Hãy gọi nó App : Khi bạn đã xác định thành phần gốc của mình, bạn cần tự hỏi mình câu hỏi sau: Đường dẫn con có thể có thành phần nào? Trong trường hợp của chúng tôi, nó có ý nghĩa để cung cấp cho nó ba thành phần con, mà chúng tôi sẽ gọi như sau: Title MessagesList SendMessageForm Hãy vẽ một hình chữ nhật cho mỗi cái: Điều này cho chúng ta một cái nhìn tổng quan tốt...

JQuery Ajax và kiến thức cơ bản
Bài viết được sự cho phép của tác giả Bui Thu Huyen Giới Thiệu AJAX – “Asynchronous JavaScript and XML” – là một bộ công cụ cho phép load dữ liệu từ server mà không yêu cầu tải lại trang. Nó sử dụng chức năng sẵn có XMLHttpRequest(XHR) của trình duyệt để thực hiện một yêu cầu đến server và xử lý dữ liệu server trả về. jQuery cung cấp method $.ajax và một số methods tiện lợi giúp bạn làm việc với XHRs thông qua trình duyệt một cách dễ dàng hơn. Download thư viện jQuery Bạn có thể lên trang chủ jquery để download bộ mới nhất. http://jquery.com/download/ Phương thức “load()” Sau đây là cú pháp đơn giản cho phương thức load() trong jQuery: [selector].load( URL, [data], [callback] ); Miêu tả chi tiết về các tham số: URL − URL của ngồn Server-Side để Yêu cầu (Request) được gửi tới. Nó có thể là CGI, ASP, JSP, hoặc PHP script mà tạo dữ liệu động hoặc ra khỏi database Data − tham số tùy ý này biểu diễn một đối tượng mà các thuộc tính của nó được xếp theo thứ tự vào trong các tham số được mã hóa một cách thích hợp để được truyền tới Yêu cầu (Request). Nếu được xác định, Request được tạo bởi sử dụng phương thức POST. Nếu bị bỏ qua, phương thức GET được sử dụng. Callback − Một hàm callback được gọi sau dữ liệu phản hồi đã được tải vào trong các phần tử của tập hợp đã kết nối. tham số đầu tiên được truyền tới hàm này là văn bản phản hồi từ Server và tham số thứ hai là mã hóa trạng thái. Ví dụ <html> <head> <title>The jQuery Example</title> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> <script type="text/javascript"...

Chín thói quen xấu cần bỏ nếu muốn theo ngành CNTT
1. Không chịu đọc tài liệu trước khi dùng: Đây là một trong những thói quen tệ hại nhất nhưng lại thường gặp nhất. Có lẽ thói quen này nảy sinh từ tính thân thiện của “giao diện đồ hình” (GUI) khiến cho người dùng bồi đắp thói quen mò mẫm mà không cần đọc hướng dẫn nhưng cũng sử dụng được máy. Việc này không có gì đáng ngại đối với người dùng (rất) bình thường. Tuy nhiên, nếu bạn có ý định theo đuổi ngành CNTT một cách nghiêm túc thì hãy bỏ ngay thói quen tai hại này bởi vì đây là rào cản lớn nhất cho sự phát triển. Kiến thức vững chắc không phải… mò mà ra. Tài liệu hướng dẫn không phải vô cớ mà được viết ra . 2. Đọc lướt: Đây cũng là một thói quen tệ hại và phổ biến không kém. Ngay trên những diễn đàn, với những ý kiến và chỉ dẫn bằng tiếng Việt rất cô đọng, rành mạch và dễ hiểu nhưng vẫn có quá nhiều người chỉ đọc lướt để rồi quay lại tiếp tục thắc mắc. Đây là thói quen cực kỳ nguy hiểm bởi vì nó rèn cho trí não thói quen đọc lướt. Việc này dẫn đến chỗ kiến thức thu thập một cách hời hợt, tạm bợ và chắp vá. Nếu những ý kiến bằng tiếng Việt rất cô đọng, rành mạch và dễ hiểu nhưng vẫn không chịu khó đọc kỹ và suy gẫm thì việc tham khảo, tổng hợp các sách tiếng nước ngoài gần như là vô khả thi. 3. Bắt chước mà không suy nghĩ: Khi bắt đầu làm quen với những thứ trong ngành CNTT, cách dễ nhất là bắt chước làm theo từng bước. Nếu cứ...

Cách vận hành của Flexbox
Flexbox hứa hẹn sẽ giải cứu chúng ta khỏi những rắc rối đến từ CSS thuần (như tính năng vertical alignment chẳng hạn). Tuy nhiên, để thuần thục model mới này là 1 thách thức không hề dễ dàng. Tác giả: Scott Domes Hy vọng, các hình ảnh minh họa dưới đây sẽ giúp bạn hiểu rõ cách hoạt động của Flexbox, từ đó sử dụng Flexbox để build các layout tốt hơn. Nguyên tắc cơ bản của Flexbox là tạo các layouts linh hoạt và trực quan. Để thực hiện được điều này, Flexbox sẽ để các containers tự quyết định cách phân bố đều “đứa con” của chính containers – bao gồm kích thước và khoảng cách giữa các containers. Về nguyên tắc nghe thì khá hay nhưng hãy xem trên thực tế ra sao nhé! Chúng tôi đi sâu phân tích 5 properties Flexbox phổ biến nhất: chức năng của chúng, cách bạn sử dụng các properties và kết quả thu được là gì. Property #1: Display: Flex Đây là ví dụ webpage của chúng tôi: Bạn có 4 thẻ với 4 màu và 4 kích thước khác nhau nằm trong 1 thẻ container xám. Hiện tại, mỗi thẻ được mặc định display: block . Mỗi square chiếm đầy bề rộng line của mình. Để khởi động với Flexbox, bạn cần biến container thành 1 flex container . Rất đơn giản! #container { display: flex; } Không có nhiều thay đổi – các thẻ của bạn đã được hiển thị theo hàng. Nhưng đằng sau đó, bạn đã hoàn thành 1 công việc cực kì “quyền lực”. Bạn đã cho các ô vuông của mình 1 thứ gọi là flex context. Bây giờ, bạn có thể bắt đầu định vị chúng trong context đó – công việc...

So sánh lợi hại giữa WordPress vs Static site
Bài viết được sự cho phép của tác giả Lưu Bình An Chúng ta cùng nhau điểm qua cái hay, cái dở của từng thằng để nghiền ngẫm xem nó phù hợp trong trường hợp nào. 11 cách tăng tốc nhanh cho WordPress bằng file wp-conig.php Gatsby.js: Cách thiết lập và sử dụng React Static Site Generator Sếp cũ hôm rồi liên lạc hỏi “em có biết công ty nào nhận làm Gatsby không, anh muốn làm một cái static site cho công ty”, cái blog này bạn đang đọc cũng được viết bằng Gatsby, một static site generator, với developer thì static site không xa lạ, nhưng để trả lời có công ty nào nhận làm static site thì mình ko biết, đa phần người ta sẽ dùng một CMS nào đó như WordPress, để đảm bảo có admin cho bạn vào quản lý. WordPress không có gì sai, mình làm wordpress khoảng hơn 3 năm, cũng tự viết theme, tự viết plugin, mình vẫn xài WordPress một số trường hợp. Tuy nhiên static site mấy năm trở lại đây được quan tâm nhiều hơn trước kia vì những lợi ích mà nó mang lại. Static site là gì, nói nôm na là một website chỉ bao gồm html/css/javascript không có database, nó sẽ được build từ file markdown, dùng một số tool phổ biến để build như Jekyll Hugo next.js gatsby gitbook nuxt vuepress mkdocs Static Site Thế mạnh Tốc độ Tốc độ hiển thị nội dung của trang sẽ rất nhanh, nếu không muốn nói là nhanh nhất trong tất cả các “thể loại” website. User có thể chấp nhận một website giao diện ko cần pixel perfect (designer có thể không), nhưng sẽ không tha thứ cho một website load lâu hơn rùa bò. Không cần...