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

Tôi biết đến với máy tính và lập trình như thế nào?
Bài viết được sự cho phép của tác giả Tin Tran Chào mọi người, sau bao nhiêu năm đi làm tôi đã đúc kết được một số kinh nghiệm quý báu, cũng xin chia sẻ lại với mọi người, chủ yếu là giành cho những bạn sinh viên và những bạn mới ra trường. Tôi sẽ chia sẻ về cách mình đến mới máy tính, đến với lập trình và những kinh nghiệm khi đi làm, những dự án thực tế, bài học rút ra để các bạn không gặp phải, những kỹ thuật, hack, cheat để làm dự án nhanh hơn. 10 nguyên tắc lập trình nền tảng mà lập trình viên nào cũng cần biết 100 Tips cho Lập trình viên siêu giỏi Series bài viết này tôi sẽ không hướng dẫn về thủ thuật máy tính hay thủ thuật lập trình. Mà muốn tâm sự về nghề nghiệp, về con đường mình đã chọn, chia sẻ những kinh nghiêm khi đi học và đi làm để những bạn mới tiếp cận về lập trình sẽ không mắc lại những sai lầm của tôi. Tôi là một lập trình viên, không phải nhà văn hay một người viết lách, cách hành văn của tôi sẽ không hay nhưng tôi sẽ cải thiện dần để ngày một hay hơn. Và câu chuyện của tôi là… Biết đến máy tính từ năm học lớp 6, ngày đó thực sự tôi chưa biết máy tính là gì, tôi không nhớ chính xác cái năm đó là năm bao nhiêu, tôi chỉ nhớ đó là một kỳ nghỉ hè và cũng không hiểu lý do gì đã thôi thúc tôi đăng ký học một khóa học máy tính. Trường THPT của tôi là một ngôi trường ở quê, một nơi chưa cập...

Chuyện mấy con Consumer
Bài viết được sự cho phép của tác giả Nguyễn Hữu Đồng Vào một ngày đẹp trời, đang ngồi code lan man mình nhận được thông báo từ xếp, một con service tracking của một project cũ đang gây nghẽn database, chuyện là cty đó đang ăn nên làm ra traffic vô site tăng gấp 15 lần, user tương tác nhiều dẫn đến các con service khác cũng tải nhiều hơn, db thì càng ngày càng bị hấp diêm nhiều hơn, ko chỉ đến từ còn service tracking mà còn đến từ nhiều con khác. Tracking thì ngày trước mình code theo mô hình đơn giản, Client gọi API, đẩy message vào 1 cái queue, có tầm 100 con consumer ngồi hốt message ra process rồi ghi vô database. Cloud-Native Microservices Với TIBCO: Khám phá dịch vụ bằng cách sử dụng Consul 26 công cụ và kỹ thuật trong Big Data có thể bạn chưa biết Nhưng đến nước này thì chỉ có thể giảm tải cho database bằng cách giảm số lượng con consumer xuống, hạn chế tải đồng thời cho database. Trước kia code vô nhân đạo nên mình ko handle chuyện cần restart lại App thì mới update config. Tranh thủ lúc đang nhàn rỗi, mấy dự án đang ngồi chờ chốt requirement nên tranh thủ update sửa cho em nó. Nhu cầu cần thiết lúc này là Chỉ cần update file config là app tự động update số consumer Khi deploy new code thì phải graceful shutdown, chờ mỗi consumer xử lí xong message và cho em nó nghỉ ngơi. Viper có sẵn tính năng watch config file nên mình sẽ dùng luôn func watchConsumerCount() { viper.WatchConfig() viper.OnConfigChange(func(e fsnotify.Event) { fmt.Println("Config file changed:", e.Name) n := viper.GetInt("consumer_count") if n != consumer_count { fmt.Println("resize consumer count to...

Giới thiệu JUnit
Bài viết được sự cho phép của smartjob.vn 1. Khái niệm unit test Unit test là một phương pháp kiểm thử phần mềm mà các đơn vị cá nhân của mã nguồn, bộ một hoặc chương trình máy tính nhiều module cùng với các dữ liệu liên quan đến kiểm soát, thủ tục sử dụng và quy trình vận hành, được kiểm tra để xác định xem họ có phù hợp để sử dụng Hướng dẫn viết unit test trong React Unit Test là gì? Khái niệm và vai trò 2. Giới thiệu về framework JUnit JUnit là một framework để unit test cho các ngôn ngữ lập trình Java . JUnit quan trọng trong sự phát triển của phát triển thử nghiệm điều khiển 3. Hello word JUnit Test trong Netbean 8.0 Step 1 : Tạo 1 project java hoặc java web Lớp ToanHoc.java là lớp xử lý nghiệp vụ. Step 2 : Tạo lớp test cho lớp ToanHoc : ToanHocTest.java Step 3 : import thư viện JUnit.jar cho Test Library: Step 4 : Viết unit test trong lớp: ToanHocTest.java import org.junit.Assert; import org.junit.Test; import vidu_unittest.ToanHoc; public class ToanHocTest { @Test public void checkTrue(){ ToanHoc t = new ToanHoc(); String textNum = "12"; Assert.assertTrue(t.checkNumber(textNum)); } } Ấn Alt+F6 để chạy chương trình test Bài viết gốc được đăng tải tại smartjob.vn Có thể bạn quan tâm: Unit Test – Những bước chân đầu tiên Giới thiệu về Clean Architecture – Phần 2 Retrofit là gì? Những kiến thức cần nắm về Retrofit trong Android Xem thêm Việc làm Developer hấp dẫn trên Station D

Cách tạo dự án trong Android Studio phiên bản năm 2020
Bài viết được sự cho phép của tác giả Trần Duy Thanh Ở bài 1 Tui đã hướng dẫn chi tiết cách tải và cài đặt Android Studio phiên bản năm 2020. ở bài này Tui sẽ trình bày cách sử dụng nó bằng cách tạo một dự án siêu kinh điển “HelloWorld”, tuy nhiên trước khi tạo dự án thì ta cần Go Over qua một số chức năng quan trọng. 10 tài liệu lập trình Android miễn phí từ cơ bản đến nâng cao 30+ công cụ phát triển ứng dụng Android chuyên nghiệp ( Phần 1) Khởi động phần mềm Android Studio phiên bản năm 2020 lên: Ở màn hình trên ta thấy có tên phương bản và có các mục bên dưới: Tên chức năng Ý nghĩa Start a new Android Studio project Tạo một dự án mới Open an existing Android Studio project Mở một dự án đã có, dự án này được viết bằng công cụ Android Studio Get from Version Control Lấy Code từ server về, chắc hạn như: Github, TFS… Profile or debug APK Kiểm tra đo lường, debug APK Import Project (Gradle, eclipse ADT, etc.) Mở một dự án Android được viết bằng Gradle, Eclipse…. Import an Android code sample Mở một số code Android mẫu Ở góc dưới cùng có nút “Configure”, nhấn vào nó: Tên chức năng Ý nghĩa AVD Manager(quan trọng) Quản lý thiết bị giả lập (điện thoại thông minh, đồng hồ thông minh,…)AVD: Android Virtual Device SDK Manager(quan trọng) Quản lý các phiên bản thư viện lập trìnhSDK: Software Development Kit Settings Cấu hình đủ loại: giao diện, màu mè Plugins Cấu hình Plugins cho Android Default Project Structer(quan trọng) Cấu hình Android SDK Location, Android NDK location, JDK location Check for Updates(quan trọng) Cập nhật...

Một người kiểm thử có tâm
Bài viết được sự cho phép của tác giả To Thi Van Anh Bạn nghĩ thế nào là một người kiểm thử có tâm? Có giống như một người chụp ảnh có tâm mà bạn vẫn dành cho người nào chụp cho bạn bức ảnh mà bạn thấy bạn xinh lung linh nhất không? A/B testing và những tiêu chí chính để đánh giá sự thành công của ASO Automation skills cho tester già mà lười Mình thấy là làm gì mà có tâm một chút là cũng được người ta yêu quý hết – mặc dù không biết trong lòng người ta nghĩ thế nào nhưng mà cứ khen là ta phải vui cái đã! hihi Trong công việc cũng vậy, làm việc tốt không phải chỉ vì đồng lương mà còn là trách nhiệm đối với cái mình đang làm, đầu tiên cứ phải là cố gắng hết sức đã, kết quả có thể đạt được như mong đợi, có khi còn hơn, rồi cũng có khi không được như mình mong muốn ban đầu nhưng mà mình vẫn tin là dù thế nào tự chúng ta cũng sẽ rút ra được một số bài học nào đó cho bản thân, để lần sau tiếp tục cố gắng nhiều hơn nữa, và quan trọng là sẽ không mắc phải sai lầm giống như trước nữa. Dưới góc nhìn của mình (có tham khảo một vài nơi mà mình đã tìm hiểu được) mình sẽ đưa ra một so sánh nho nhỏ để các bạn thấy được một người kiểm thử có tâm và chưa có tâm khác nhau ở những điểm nào nhé. Các bạn có thể để lại bình luận và nhận xét phía dưới cho mình về các ý dưới này nếu có điểm gì đó...

Top các khóa học Computer Science, Programming, Data Science MIỄN PHÍ cần học ngay!
COMPUTER SCIENCE Neural Networks and Deep Learning from deeplearning.ai (taught by Stanford Prof. Andrew Ng) Algorithms: Design and Analysis from Stanford University (old Couresra course, but hosted without any paywalls directly by Stanford) The Unix Workbench from Johns Hopkins University Machine Learning from Georgia Institute of Technology Hacking and Patching from University of Colorado System Linux Server Management and Security from University of Colorado System Sequence Models from deeplearning.ai Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization from deeplearning.ai Structuring Machine Learning Projects from deeplearning.ai Algorithms: Design and Analysis, Part 2 from Stanford University Accessible Gamification for Business from Georgia Institute of Technology Deep Learning for Business from Yonsei University Introduction to TCP/IP from Yonsei University TV Whitespaces for Museums and Archives from San Jose State University Capstone: Autonomous Runway Detection for IoT from EIT Digital Cryptography and Information Theory from University of Colorado System Cryptographic Hash and Integrity Protection from University of Colorado System Fundamentals of Network Communication from University of Colorado System Packet Switching Networks and Algorithms from University of Colorado System Cybersecurity Policy for Water and Electricity Infrastructures from University of Colorado System Cybersecurity Policy for Aviation and Internet Infrastructures from University of Colorado System Proactive Computer Security from University of Colorado System Enterprise System Management and Security from University of Colorado System Peer-to-Peer Protocols and Local Area Networks from University of Colorado System Introduction to Cybersecurity for Business from University of Colorado System Cyber Threats and Attack Vectors from University of Colorado System Planning, Auditing and Maintaining Enterprise Systems from University of Colorado System Windows Server Management and Security from University of Colorado System Detecting and Mitigating Cyber Threats and Attacks from University of Colorado System Homeland Security & Cybersecurity Connection — It’s Not About the Terrorists from University of Colorado System Basic Cryptography and...

Kiến trúc sư phần mềm
Bài viết được sự cho phép của tác giả Thiên Hoàng Là dân IT hẳn mọi người không còn xa lạ với cụm từ Software Architect (SA) – ở đây tôi tạm dịch là kiến trúc sư phần mềm. Tuy nhiên không phải ai cũng hiểu được vai trò, trách nhiệm, công việc thực sự và con đường sự nghiệp của một SA. Đây là những câu hỏi mà tôi đã từng đặt ra khi bước vào những nấc thang đầu tiên của vị trí này. Tôi tự đi tìm lời giải đáp cho mình. PHÂN LOẠI KIẾN TRÚC SƯ PHẦN MỀM Thật ra có nhiều cách để phân loại kiến trúc sư phần mềm. Tuy nhiên, ở đây tôi sử dụng cách phân loại của Microsoft. Đây cũng là một cách thức phân chia khá phổ biến trong ngành phần mềm hiện nay. 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 Tên Mô tả Kiến trúc sư nghiệp vụ (enterprise architect) Là cầu nối giữa chủ sở hữu sản phẩm và đội ngũ kĩ thuật. Họ là những người có kinh nghiệm chiều sâu trong lĩnh vực mà sản phẩm đang xây dựng. Chịu trách nhiệm trong việc xây dựng và phát triển yêu cầu – thiết lập viễn cảnh, bộ khung của môi trường IT trong sản phẩm. Kiến trúc sư hạ tầng (infrastructure architect) Là người chịu trách nhiệm trong việc thiết lập, xây dựng giải pháp về cơ sở hạ tầng IT (ví dụ: mạng, các vấn đề bảo mật, thiết bị/ phương thức lưu trữ, ..) trong sản phẩm để đáp ứng nhu cầu của doanh nghiệp. Kiến trúc sư giải pháp (solution architect)...

CSS Specificity là gì vậy?
Bài viết được sự cho phép của tác giả Phúc Lương Mở bài Chào các bạn, hôm nay mình sẽ tiếp tục series về CSS cơ bản. Bài viết lần này như tiêu đề đã ghi rõ, mình sẽ giới thiệu và phân tích về Specificity trong CSS . Đây là phần kiến thức quan trọng bậc nhất (không nhất thì nhì :D) nhưng lại không quá phức tạp, mình sẽ cố gắng trình bày những thứ đơn giản mà chúng ta hay sử dụng hàng ngày thôi. Nếu các bạn thấy có thiếu sót hay phản hồi gì thì vui lòng cho mình biết ở comment bên dưới nhé. 5 điều phiền toái nhất của CSS 11 công cụ hữu ích để kiểm tra và tối ưu hóa các file CSS Đặt vấn đề Trong một buổi phỏng vấn khi còn là mid-level developer, mình từng được đặt một câu hỏi cơ bản mang tính lý thuyết cao nhưng mình không trả lời được, mình xin viết lại ra đây (không chính xác hoàn toàn nhưng bản chất câu hỏi không đổi) < html > < head > < style > body h1 { color : green ; } html h1 { color : purple ; } </ style > </ head > < body > < h1 > text </ h1 > </ body > </ html > Theo bạn thì thẻ h1 sẽ có màu green hay purple ? Câu trả lời là màu purple , các bạn có thể tự mình chứng thực kết quả. Phần giải thích cho bài toán này mình để ở cuối bài viết. Mình đã không trả lời được câu hỏi này, nhưng thời điểm đó mình cho rằng người phỏng vấn chỉ đang đưa ra câu hỏi mang tính đánh...

3 điều bạn có thể không biết về biến trong CSS
Bài viết được sự cho phép của tác giả Lưu Bình An Chuyện gì xảy ra nếu chúng ta dùng var() với một biến undefined Trước hết phải nói CSS và HTML là ngôn ngữ không quá strictly, một vài lỗi nhỏ không làm làm chết nguyên trang, nếu dùng var() với một biến không tồn tại, không gây ra ảnh hưởng parsing. Sẽ có nhiều lý do cho việc xuất biến undefined trong var , có thể là Gõ nhầm tên biến Tưởng là có nhưng chưa define biến này Biến đó ko tồn tại trên trang đang xem ol li { --foo : red ; } ul li { color : var ( --foo ) ; } Bởi, lời khuyên là luôn đặt biết ở node trên cùng như :root hay html , như vậy biến có thể truy xuất ở bất cứ đâu trong DOM. :root { --main-color : #f06 ; } .my-lovely-component { border : 1 px solid var ( --main-color ) ; } Vậy nếu biến đó undefined thì sao? Thứ tự xử lý sẽ là Nếu property đó ko inheritable (ví dụ như border ) nó được đưa về initial Nếu là property kế thừa, như color , thì inherited giá trị từ thằng cha, nếu không có cái nào hết, thì sẽ dùng initial Giá trị initial của border sẽ là medium none currentColor , cái này siêng thì kiểm tra trên MDN :root { --main-color : #f06 ; } body { color : gold ; } .my-lovely-component { // nó sẽ dùng giá trị ` gold ` kế thừa từ body color : var ( --secondary-color ) ; } 11 công cụ hữu ích để kiểm tra và tối ưu hóa các file CSS 9 CSS animation mới "mãn nhãn" cho các...

Báo cáo thị trường IT quý II 2020: Ngành IT khôi phục trạng thái, Việt Nam khởi sắc “xây tổ” đón “đại bàng”
Mới đây nhất, đơn vị tuyển dụng IT Station D vừa phát hành báo cáo thị trường IT nửa đầu năm 2020, đánh giá toàn bộ thị trường Công nghệ sau đại dịch COVID cũng như nhu cầu tuyển dụng của doanh nghiệp. Nhìn chung, doanh số, tốc độ tăng trưởng, cũng như nhu cầu tuyển dụng của các công ty trong ngành IT có dấu hiệu hồi phục và tăng trưởng trở lại sau đại dịch. Vẫn lấy ngành IT làm đầu tàu mũi nhọn cho sự phát triển của đất nước, sự khởi sắc của IT đem lại nhiều tín hiệu mừng cho nền kinh tế của đất nước cũng như sự lan tỏa tích cực đến các lĩnh vực và ngành nghề khác. Ông Nguyễn Hữu Bình – CEO của Station D cho rằng ngành CNTT đang nhận được rất nhiều sự quan tâm của chính phủ Việt Nam cũng như của các tập đoàn công nghệ nước ngoài (Mỹ, Nhật, Hàn Quốc và Châu Âu), chính vì vậy mà doanh nghiệp cần cùng nhau chung tay để “xây tổ” cải tiến và thúc đẩy công nghệ để sẵn sàng cho những cuộc chuyển mình lớn trong tương lai. Đón “đại bàng” hay “chim sẻ” thời gian sẽ sớm trả lời, chỉ cần chúng ta có sự chuẩn bị đầy đủ, Việt Nam chắc chắn sẽ gặt quả ngọt. DOWNLOAD Xu hướng doanh nghiệp ưu tiên tái đào tạo nhân viên Ứng biến với dịch COVID, các doanh nghiệp cũng có những thay đổi trong kế hoạch tuyển dụng để phù hợp với ngân sách của công ty. Hơn 50% doanh nghiệp vẫn duy trì tuyển dụng, vì nhìn chung ngành IT không chịu sự biến động mạnh như các ngành nghề khác. Dù vậy, vẫn có...

Sự khác biệt giữa ‘git merge’ và ‘git rebase’ là gì?
Bài viết được sự cho phép của tác giả Lê Chí Dũng Trong bài này sẽ nói về sự khác biệt của rebase và merge để dễ hiểu vấn đề hãy xem ví dụ bên dưới. Giả sử ban đầu đã có 3 commit A , B , C : sau đó developer Dung tạo commit D , và developer Egg tạo commit E : rõ ràng, cuộc xung đột này nên được giải quyết bằng cách nào đó. Đối với điều này, có 2 cách: [Update] 43 kho lưu trữ Github JS phổ biến nhất 2025 - Bạn đã biết hết chưa? 5 tip về GitHub cho lập trình viên MERGE : Cả hai commit D và E vẫn còn ở đây, nhưng chúng tôi tạo ra phối commit M mà thay đổi thừa hưởng từ cả hai D và E . Tuy nhiên, điều này tạo ra hình dạng kim cương, mà nhiều người thấy rất khó hiểu. Nếu bạn có hàng chục commit D và E thì bạn có có hàng chục viên kim cương M lúc này bạn sẽ thấy log rối đến mức nào!? REBASE : Chúng tôi tạo ra commit R , mà nội dung thực tế file là giống hệt nhau của merge commit M ở trên. Tuy nhiên, chúng ta thoát khỏi commit E , giống như nó không bao giờ tồn tại (denoted bằng dấu chấm – vanishing dòng). Điều này sẽ làm cho commit của bạn nhìn dễ hiểu hơn. Vì obliteration này, E sẽ có local để developer Ed và nên đã không bao giờ được đẩy đến bất kỳ các kho lưu trữ khác. Lợi thế của rebase là kim cương hình dạng tránh được, và lịch sử vẫn đẹp đường thẳng. Sau đây là một so sánh...

KICC HCMC chính thức hợp tác cùng Station D phát triển nguồn nhân lực IT Việt
Sáng ngày 29 tháng 7 tại Khách sạn Intercontinental đã diễn ra buổi ký kết biên bản ghi nhớ giữa KICC HCM và Station D , đánh dấu hợp tác giữa nền tảng tuyển dụng IT hàng đầu tại Việt Nam và tuyển dụng nhân sự IT cao cấp cho công ty Hàn Quốc. Station D là cầu nối giữa các công ty công nghệ Hàn Quốc với cộng đồng lập trình viên Việt Nam Đây là một trong những điều được đề cập trong biên bản ghi nhớ giữa Cơ quan xúc tiến công nghiệp công nghệ thông tin quốc gia Hàn (KICC) và nền tảng tuyển dụng IT Station D. Biên bản ký kết bao gồm các mục đích: Hỗ trợ, hợp tác và thúc đẩy tuyển dụng việc làm công nghệ thông tin cho các công ty Hàn Quốc. Hỗ trợ khách hàng tiềm năng của nhau cùng tiếp cận thị trường địa phương, tìm kiếm đối tác, khách hàng tiềm năng và mở rộng kinh doanh tại Việt Nam. Hợp tác các hoạt động khác phù hợp với hai bên. Phát biểu về lễ ký kết, ông Lee Ju Nam – Director của KICC HCMC cho biết “Chúng tôi hy vọng rằng Dịch vụ hỗ trợ tuyển dụng online sẽ góp sức cho các công ty Hàn Quốc tuyển dụng những ứng viên lập trình viên Việt Nam chất lượng cao. Và lần ký kết này chính thức đánh dấu cho sự khởi động hợp tác giữa KICC HCMC và Station D, với mục đích hỗ trợ các công ty Hàn Quốc tại Việt Nam.” Đại diện cũng là General Director từ Station D, ông Park Jong Ho hy vọng “Những năm gần đây, Việt Nam là mảnh đất màu mỡ với các doanh nghiệp Hàn...