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

Một số kinh nghiệm lựa chọn nhà cung cấp tên miền
Đăng ký tên miền tại Việt Nam hiện nay khá đơn giản và nhanh chóng. Chỉ cần chưa đầy 15 phút là bạn có thể sở hữu 1 tên miền yêu thích, chỉ cần lựa chọn nơi mua tên miền rồi tiến hành đăng ký và thanh toán ngay trên website của nhà cung cấp. Nhưng giữa “thượng vàng, hạ cám” những nhà cung cấp tên miền hiện nay, làm thế nào để có thể lựa chọn đúng nhà cung cấp tên miền đáp ứng được như cầu của bản thân? Một số kinh nghiệm lựa chọn nhà cung cấp tên miền Trước khi bạn muốn mua domain của một doanh nghiệp nào đó, bạn nên tìm hiểu thật kỹ về doanh nghiệp dựa trên tiêu chí sau: Giá cả: Không phải cứ đắt tiền là sẽ tốt cho nên đừng quá phung phí vào vấn đề này nhưng cũng nên xem xét lại vấn đề tại sao chi phí đăng ký tên miền của dịch vụ này lại quá rẻ so với mặt bằng chung của thị trường. Sự ổn định của nhà cung cấp: Nhà cung cấp cho bạn có thể tồn tại trên thị trường trong 1 thời gian dài? Rất ít công ty có thể trụ được trong ngành cung cấp dịch vụ cơ sở hạ tầng Internet ngày nay. Tuổi thọ của 1 công ty chính là dấu hiệu của sự ổn định. Dịch vụ khách hàng: Bạn có nhận được sự trợ giúp khi bạn cần? Dịch vụ khách hàng đôi khi là một những khía cạnh mà mọi người sẵn sàng thỏa hiệp để có được chi phí thấp hơn. Nhưngtrước khi bạn quả quyết rằng yếu tố này không quan trọng cho lắm thì hãy xem xét đến sự thất vọng hay...

Để tự động hóa kiểm thử thành công – Phần 2
Bài viết được sự cho phép của vntesters.com Theo Hans , dịch từ opensource.com Phần 1 Tôi sẽ mô tả một vài bước mà có thể giúp chúng ta giảm thiểu những vấn đề này. Một kiểm thử tự động tốt là dựa trên mệt thiết kế tốt. Cách chúng ta thiết kế kịch bản kiểm thử có tác động lớn đến cách tự động hóa kiểm thử của chúng ta. Nói cách khác, kiểm thử tự động không phải là một thách thức về kỹ thuật mà là thách thức về thiết kế. Nhìn toàn diện, có hai cấp độ lớn của một thiết kế kiểm thử tốt: Cấu trúc của toàn bộ kịch bản kiểm thử Thiết kế của từng kịch bản kiểm thử riêng biệt Các mức độ kiểm thử được sử dụng trong kiểm thử chức năng của một phần mềm Kiểm thử một đối tượng Textbox Về cấu trúc của toàn bộ kịch bản kiểm thử, chúng tôi đi theo cách tiếp cận dạng modul, một cách tiếp cận tương tự như cách ứng dụng được thiết kế. Mỗi kịch bản kiểm thử được tổ chức trong một modul kiểm thử. Chúng tôi có các bản mẫu hướng dẫn chi tiết để làm như vây, nhưng tối thiểu, bạn nên thử phân biệt các kiểm thử nghiệp vụ và kiểm thử tương tác. Các kiểm thử chức năng nên thiên về các đối tượng nghiệp vụ và các luồng hoạt động của nghiệp vụ, bỏ qua hoàn toàn bất kỳ kiểm thử hướng giao diện (hay dịch vụ API). Kiểm thử tương tác nhìn vào tính tương tác của ứng dụng từ người dùng hay các hệ thống/ứng dụng khác, do đó giao diện là vấn đề cần quan tâm. Mục tiêu chính là để...

Lý thuyết toán ma trận sử dụng trong các thuật toán Machine Learning
Bài viết được sự cho phép của tác giả Kien Dang Chung Machine learning là một tập hợp rất nhiều các thuật toán khác nhau và nó có liên hệ rất mật thiết với toán học, đặc biệt là toán cao cấp. Chúng ta ai đã mài đũng quần trên giảng đường đại học đều không còn xa lạ với Đại số tuyến tính và đây cũng là kiến thức nền tảng của rất nhiều các thuật toán sẽ được giới thiệu trong Machine Learning . 9 hiểu lầm "ngớ ngẩn" về machine learning Chia sẻ cơ bản sử dụng machine learning để giải quyết bài toán. 1. Một số khái niệm cơ bản 1.1 Vô hướng (Scalar) Scalar (mathematics), an element of a field, which is used to define a vector space, usually the field of real numbers Một đại lượng vô hướng là một phần tử của một trường được sử dụng để xác định một không gian vector, thông thường ở đây là trường số thực. Wiki Tóm lại đại lượng vô hướng (Scalar) là một số bất kì thuộc tập số nào đó. Khi định nghĩa một số ta phải chỉ rõ tập số mà nó thuộc vào. Ví dụ, n n là số tự nhiên sẽ được kí hiệu: n ∈ N n∈N , hoặc r r là số thực sẽ được kí hiệu: r ∈ R r∈R . Một số thường có thể định nghĩa được bằng một kiểu dữ liệu nguyên thủy của các ngôn ngữ lập trình. Như số tự nhiên có thể là kiểu int, số thực có thể là kiểu float trong Python. 1.2 Véc tơ (Vector) Vector là 1 mảng của các đại lượng vô hướng tương tự như mảng 1 chiều trong các ngôn ngữ lập trình. Các...

Nguyên lí thiết kế package
Bài viết được sự cho phép của tác giả Edward Thien Hoang CÁC NGUYÊN LÝ THIẾT KẾ PACKAGE Cùng điểm qua 1 số nguyên tắc đóng gói (packaging principle) của Robert C. Martin: Nếu tôi hỏi bạn: “tại sao phải phân loại các class vào các package” bạn có thể sẽ trả lời: “để dễ quản lý”. Tất nhiên câu trả lời này là đúng, nhưng chưa giúp ích được gì nhiều. Và câu chuyện của chúng ta sẽ còn kéo dài hơn thế. Phân loại là công việc mà chúng ta rất hay làm trong đời sống. Ví dụ, một người giữ xe thường sắp xe ga, xe số riêng, ngoài mục đích dễ tìm xe còn mục đích kinh tế: xe ga đắt tiền nên sẽ cần phải để mắt hơn. 12 Packages và Libraries của Go cực kì mạnh mẽ mà bạn cần phải biết Cách để npm packages chạy trong browser Xem thêm việc tuyển dụng UI UX designer hấp dẫn trên Station D Công việc phát triển phần mềm cũng tương tự như vậy. Nhiệm vụ của package không phải là để dễ tìm class. Tất nhiên với package thì việc tìm class có thể tiện lợi hơn đôi chút nhưng nó không quá quan trọng, nhất là các IDE ngày nay đều hỗ trợ tìm class trong nháy mắt. Một phần mềm hạng trung khoảng trăm class đã có thể rất phức tạp. Sở dĩ chúng phức tạp vì chúng có những mối quan hệ phụ thuộc lẫn nhau. Kiểm soát tốt những sự phụ thuộc này là mục tiêu sống còn của phần mềm. Công việc này quả thực là rất khó khăn với một số lượng lớn class. Do đó, chúng ta cần gom class vào các package. Số lượng package hiển...

10 tip tối ưu code trên JavaScript mà web developer nào cũng nên biết
Tác giả: Gert Svaiko Giới thiệu JavaScript là gì ? Đây là một ngôn ngữ lập trình quen thuộc và được nhiều dev sử dụng. Nếu muốn tối ưu code trong ngôn ngữ JavaScript thì việc sử dụng những mẹo hack này chắc chắn sẽ giúp bạn rất nhiều. Nó vừa giúp code của bạn sạch hơn, vừa tiết kiệm thời gian và tối ưu thời gian lập trình. Theo thống kê của RedMonk , JavaScript là ngôn ngữ lập trình phổ biến nhất thế giới hiện nay. Hơn nữa, SlashData ước tính rằng khoảng 12,4 triệu dev sử dụng JavaScript , bao gồm cả CoffeeScript và TypeScript của Microsoft. Tối ưu code trong JavaScript giúp code sạch hơn Điều này có nghĩa là hàng triệu dev đang sử dụng JavaScript để làm việc thông qua các trang web như UpWork và Freelancer, hoặc thậm chí bắt đầu kinh doanh phát triển web của riêng họ. Xem thêm các việc làm tuyển dụng Javascript hấp dẫn tại Station D 10 tip tối ưu code trong JavaScript là gì? Sử dụng phím tắt cho câu lệnh điều kiện Phím tắt trong JavaScript là gì ? Đó là những lệnh cho phép bạn sử dụng để viết hàm. JavaScript cho phép bạn sử dụng các phím tắt nhất định để làm cho code dễ nhìn hơn. Trong một số trường hợp đơn giản, bạn có thể sử dụng toán tử logic && và || thay if và else . 10 câu hỏi javascript để nâng cao trình độ Hãy xem && toán tử đang hoạt động với cách với đoạn code dưới đây // instead of if ( accessible ) { console . log ( “It’s open ! ” ) ; } // use accessible && console . log ( “It’s open...

React Native tại Airbnb (Phần 2): Công nghệ
Xem Phần 1 – React Native tại Airbnb (P1) Tác giả: Gabriel Peal React Native là một platform tương đối mới trên các cross-section của Android, iOS, web và các framework cross-platform. Sau 2 năm, chúng tôi có thể nói rằng React Native là một bước đột phá ở nhiều khía cạnh. Đây là một bước đột phá mới về thuật toán cho mobile và chúng ta có thể được lợi từ rất nhiều hoạt động. Tuy nhiên, lợi ích thu được sẽ đi kèm với không ít “thương tích”. Những mặt hiệu quả Cross-Platform Lợi ích rõ ràng nhất của React Native đó là code bạn viết có thể chạy trên cả Android và iOS. Hầu hết các feature sử dụng React Native có thể đạt từ 95–100% shared code và 0.2% file chuyên cho platform (*.android.js/*.ios.js). Design Language System thống nhất (DLS) Chúng ta đã develop được một design language gọi là DLS. Chúng tôi làm các bản Android, iOS, React Native, và bản web cho mỗi component. Việc này hỗ trợ cho việc viết các feature cross-platform hơn vì mọi design, tên component và các screen thống nhất trên các platform. Tuy nhiên, chúng ta vẫn có thể đưa ra các quyết định phù hợp với platform. Ví dụ, chúng ta có thể dùng Toolbar trên Android và UINavigationBar trên iOS và chọn hide disclosure indicators trên Android vì họ không follow các design guideline của platform Android . Chúng tôi đã viết lại các component thay vì giữ cái cũ để tạo ra được các API phù hợp cho từng platform và giảm thiểu workload cho các kĩ sư Android và iOS nào không rõ cách test các thay đổi trong React Native. Tuy nhiên, nó sẽ gây ra sự tách rời giữa các platform mà...

Tái cấu trúc mã nguồn: Chuẩn hóa mã
Bài viết được sự cho phép của BBT Tạp chí Lập trình Chuyển các phương thức về lớp phù hợp hơn. Việc di chuyển phương thức giữa các lớp là công việc diễn ra thường xuyên trong tái cấu trúc. Việc di chuyển này giúp cho các lớp có kích thước phù hợp hơn, và các lớp ít phụ thuộc vào nhau mà khả năng hợp tác giữa các lớp tốt hơn. 04 Điều Cần Chú Ý Cho Người Mới Làm Automation Test "Code dễ đọc" là như thế nào? Các bước: Kiểm tra có nên di chuyển các thuộc tính mà phương thức phải dùng Kiểm tra xem có khai báo của phương thức ở lớp cha và lớp con Khai báo phương thức ở lớp đích Sao chép mã từ lớp nguồn tới lớp đích sao cho phương thức hoạt động được Biên dịch lớp đích Xác định tham chiếu phù hợp ở lớp nguồn Chuyển phương thức ở nguồn gọi tới phương thức của lớp đích Biên dịch và kiểm thử Xác định xem có xóa phương thức ở lớp gốc và gọi trực tiếp tới phương thức ở lớp địch Nếu xóa phương thức ở lớp gốc thì phải thay toàn bộ lời gọi từ phương thức này tới phương thức ở lớp mới Biên dịch và kiểm thử Ví dụ: Ta có lớp Account (tài khoản). Nhưng khi nhiều loại tài khoản và mỗi loại tài khoản có cách tính tiền phí khác nhau, nên ta muôn chuyển hàm _ overdraftCharge vào lớp AccountType [sourcecode language="java"] class Account... double overdraftCharge() { if (_type.isPremium()) { double result = 10; if (_daysOverdrawn > 7) result += (_daysOverdrawn - 7) * 0.85; return result; } else return _daysOverdrawn * 1.75; } double bankCharge() { double result = 4.5;...

VECOM tổ chức Diễn đàn Chuyển đổi số trong lĩnh vực xuất nhập khẩu hàng hóa lần thứ 2 (VOIEF) – 2020
Diễn đàn Chuyển đổi số trong lĩnh vực xuất nhập khẩu hàng hóa lần thứ 2 (VOIEF – Vietnam Online Import-Export Forum) do Hiệp hội Thương mại Điện tử Việt Nam (VECOM) được tổ chức vào ngày 28/07 tới đây sẽ là sự kiện quy mô toàn quốc thu hút sự quan tâm lớn của cộng đồng. Diễn đàn VOIEF có những gì? Theo Báo cáo Chỉ số Thương mại điện tử Việt Nam 2020, nhiều doanh nghiệp Việt Nam đã triển khai thương mại điện tử nhằm hỗ trợ xuất nhập khẩu theo cả mô hình doanh nghiệp tới doanh nghiệp (B2B) cũng như doanh nghiệp tới người tiêu dùng (B2C). Với chủ đề “Giải pháp chuyển đổi số” , Diễn đàn tập trung cung cấp các giải pháp quan trọng đối với lĩnh vực xuất nhập khẩu hàng hóa đồng thời tạo cơ hội cho các bên liên quan tới lĩnh vực xuất nhập khẩu hàng hoá nắm bắt những cơ hội có được từ các hiệp định thương mại tự do, bao gồm EVFTA . Diễn đàn với sự tham gia của những tập đoàn toàn cầu với hệ sinh thái thương mai điện tử hàng đầu trong và ngoài nước như: Alibaba, Amazon, Facebook, Google… cùng nhiều doanh nghiệp lớn trong nước về TMĐT cũng như XNK.v Đặc biệt, sự cấp bách của chuyển đổi số của các doanh nghiệp trong nước và các doanh nghiệp Việt Nam ở châu Âu để nắm bắt ngay cơ hội của Hiệp định Thương mại tự do Việt Nam – EU (EVFTA) có hiệu lực từ tháng 8/2020. Vì vậy, các vấn đề về thuế, thủ tục hải quan, mẫu xác nhận C/O truy xuất nguồn gốc xuất sứ là nền tảng cơ bản cần nắm bắt để có...
![[Trick] Lặp 1 video trên Youtube với thời gian theo ý muốn](https://img-cdn.stationd.blog/w800-h600/featured/trick-lap-1-video-tren-youtube-voi-thoi-gian-theo-y-muon-218x150_20250424063706_cbabac49.png)
[Trick] Lặp 1 video trên Youtube với thời gian theo ý muốn
Chả là dạo gần đây, tớ hay nghe bản nhạc “Một bước yêu vạn dặm đau” của bạn Chu Duyên. Xinh gái, hát hay, đàn lại giỏi. Bạn có thể trải nghiệm ở link này: https://www.youtube.com/watch?v=plKgTyPXCAc Nếu dùng loop mặc định của Youtube thì sẽ nghe đi nghe lại cả bài. Tuy nhiên, tớ chỉ thích nghe đoạn hát thôi, không thích nghe đoạn intro và outro ở đầu. Vì vậy tớ viết 1 đoạn script nho nhỏ, paste vào console để thực hiện thủ đoạn này, tiện share với mọi người luôn. TL; DR function simpleLoop(startTime, endTime) { // TODO: Check valid endtime console.log('-- Run here') var ytplayer = document.getElementById("movie_player"); var currentTime = ytplayer.getCurrentTime(); var isRunToStart = currentTime > startTime var suitableTimeout = endTime - startTime if (currentTime <= startTime || currentTime > endTime){ ytplayer.seekTo(startTime) } else { suitableTimeout = endTime - currentTime } console.log('>> Start timeout after: ', suitableTimeout * 1000) setTimeout(function () { simpleLoop(startTime, endTime) }, suitableTimeout * 1000) } simpleLoop(11, 254) Thay trong hàm simpleLoop là startTime và endTime mà bạn muốn. Giải thích Đoạn code trên khá đơn giản, có thể hình dung theo sơ đồ sau: Nếu thời gian hiện tại của video nhỏ hơn hoặc bằng thời gian bắt đầu, hoặc lớn hơn thời gian kết thúc của đoạn mà bạn muốn lặp => đang ở đoạn mà bạn không muốn nghe => phi trâu ngay đến đoạn bắt đầu + đặt thời gian timeout là 1 chu kì (endTime – startTime) Ngược lại, nếu thời gian hiện tại đang ở đoạn muốn nghe, thời gian timeout sẽ là từ thời điểm hiện tại cho tới thời điểm kết thúc. Sau khi tính toán được thời gian timeout, thực hiện gọi đệ quy lại chính hàm check này. Lưu thành tool Để cho...

HackerRank là gì? Lời khuyên khi tham gia HackerRank
Theo số liệu do HackerRank công bố, hiện nay HackerRank đã xếp hạng hơn 1,5 triệu developer toàn cầu dựa trên tốc độ và độ chính xác. Những kết quả gần đây cũng cho thấy Trung Quốc là quốc gia có lập trình viên xếp thứ hạng cao nhiều nhất, sau đó là Nga và Ba Lan. HackerRank là gì? Những công ty lớn như Amplify, Quora và Capital One đều đang sử dụng HackerRank for Work – cho quá trình tuyển dụng mảng kỹ thuật. Ngoài là thuớc đo kỹ năng, HackerRank cũng tổ chức một số chương trình hackathons, như CodeSprints, cũng là một cách để các công ty tìm kiếm những ứng viên tiềm năng. HackerRank là một website cho phép các lập trình viên trau dồi, học hỏi và rèn luyện kỹ năng của bản thân. Website này sẽ yêu cầu những người tham gia đưa ra lời giải cho những “thử thách lập trình” hay những bài toán lập trình. Qua đó những kết quả và tốc độ giải đáp vấn đề sẽ được HackerRank sử dụng để đánh giá và xếp hạng các lập trình viên tham gia. Làm thế nào để terminal trông giống như một Hacker? Vì sao chọn HackerRank Ngoài việc ghi điểm trong mắt nhà tuyển dụng, các developer cũng có thể luyện code trên HackerRank. Những ưu điểm có thể kể về HackerRank như là: HackerRank có hệ thống compiler online, từ đó không cần cài thêm bất kỳ compiler nào trên máy và có thể lâp trình trực tiếp trên Web. Thứ hai, HackerRank có đa dạng các bài code (có sẵn cả unit test để biết đúng sai) để các coder luyện tập và thử sức. Sau khi cải tiến bản thân qua các bài code, các...

Lỗ hổng XSS – Tấn công lấy cắp phiên đăng nhập của người dùng
Nhắc tới các lỗ hổng bảo mật điển hình của một hệ thống web, không thể không nhắc tới lỗ hổng mang tên XSS (cross-site scripting). Đây là một lỗ hổng cũng rất phổ biến và nguy hiểm, không thua kém gì so với người anh em của nó là lỗ hổng bảo mật SQL injection. Đây là một lỗ hổng tương đối dễ hiểu và đơn giản về mặt bản chất, nhưng không vì thế mà nó ít tồn tại trong thực tế. Ngược lại, rất nhiều hệ thống, kể cả các hệ thống lớn cũng thường xuyên gặp phải lỗ hổng này. Tấn công XSS là gì? Một cách ngắn gọn, ta có thể định nghĩa XSS như sau: XSS là một kĩ thuật tấn công, trong đó kẻ tấn công sẽ chèn các đoạn mã độc (thường là Javascript) vào bên trong trang web, các đoạn mã này sẽ được thực thi khi người dùng truy cập và hiển thị các trang có chứa những đoạn mã đó. Nguồn gốc của cái tên Cross-site script cũng khá thú vị, nó liên quan tới vị trí lưu và thực thi các đoạn mã độ. Không giống như lỗ hổng Sql injection, nơi mà mã độc được thực thi ở server, XSS là một dạng tấn công trong đó mã độc được thực thi ở máy client. Bởi vì mã độc được chứa ở server nhưng lại được thực thi ở client, tên gọi “cross-site” bắt nguồn chính vì lí do này. Tìm hiểu cách mà lỗi XSS xảy ra Mô hình chung của lỗ hổng XSS Để thực hiện tấn công XSS, kẻ tấn công sẽ lợi dụng các lỗ hổng bảo mật của trang web, nơi mà hệ thống cho phép người dùng nhập và lưu trữ...

Các nguyên lý trong thiết kế phần mềm
Bài viết được sự cho phép của tác giả Tino Phạm Các nguyên lý thiết kế phần mềm là những hướng dẫn giúp cho nhà phát triển phần mềm (developers) tạo ra được một thiết kế hệ thống tốt. Chúng ta có các nguyên lý trong thiết kế phần mềm như: SOLID, DRY, KISS, YAGNI. Lưu ý: đây là các nguyên lý chứ không phải là luật. Nghĩa là bạn phải nên cân nhắc và hiểu rõ khi nào nên áp dụng cho đúng. 19 tips cho các kỹ sư phần mềm hữu ích trong 2025 3 workhack để duy trì năng lượng tích cực tại công sở cho kĩ sư phần mềm SOLID Chúng ta cùng tìm hiểu về nguyên lý SOLID. Nội dung chính của nguyên lý này được kết hợp từ 5 nguyên lý cơ bản sau: 1. Single Responsibility Priciple : Đây là nguyên lý đầu tiên (chính là chữ S đầu trong SOLID). Nguyên lý này nói rằng không nên có hơn 1 lý do để một lớp (class) thay đổi. Nghĩa là, bạn nên thiết kế class của bạn sao cho mỗi class chỉ phục vụ cho một mục đích. Ví dụ: Một kịch bản như sau, chúng ta cần một tính năng lên lịch hẹn phỏng vấn ứng viên (schedule interview). Công việc chúng ta cần làm là: lưu thông tin buổi phỏng vấn, sau đó gửi mail cho ứng viên về buổi phỏng vấn. Thay vì thiết kế một class ScheduleInterview để làm tất cả các việc trên, bạn tạo một class Interview chỉ để thực hiện công việc lưu thông tin buổi phỏng vấn, và chúng ta có thêm class EmailSending dùng để thực hiện công việc gửi mail cho ứng viên. 2. Open/Closed Priciple: Đây là nguyên lý thứ hai...