Thư Viện | Từ Coder đến Developer – Tôi đi Code Dạo

Các Anti-Pattern nên tránh để code không biến thành đống rác

Cách đây không lâu, mình có giới thiệu về Design Pattern, những mẫu thiết kế code giúp giải quyết vấn đề, giúp code dễ bảo trì, dễ mở rộng hơn.

Kì này, ta sẽ nói về anti-pattern. Khác với design pattern, anti pattern cũng là những cách thiết kế để giải quyết vấn đề, nhưng sử dụng nó lại… gây ra nhiều vấn đề hơn.

Một anti-pattern được nhiều người biết đó là hút thuốc lào thay cho thuốc lá, cách này cai được thuốc lá nhưng sẽ gây ra nhiều vấn đề vệ sinh và môi trường hơn.

Trong bài này, mình sẽ chia sẻ những anti-pattern chúng ta hay .. lỡ để nhầm vào code, hậu quả và cách giải quyết nó nhé!

Từ hồi dùng thứ này bố bỏ hẳn thuốc lá nhá
Từ hồi dùng thứ này bố bỏ hẳn thuốc lá nhá

Continue reading Các Anti-Pattern nên tránh để code không biến thành đống rác

Series Phản Phác Quy Chân – Luận về nguyên lý Separation of Concerns (Chia Để Trị)

Đôi lời lý giải chút về tên series

返璞归真 – Phản phác quy chân: Lúc đạt đến điểm cao nhất, cũng chính là lúc quay lại điểm xuất phát. Trong võ học, nó có nghĩa là đạt tới cảnh giới “tối thượng” trong truyền thuyết, quay lại như lúc ban đầu, quên đi tất cả võ học trong thiên hạ, bản thân đã không còn chiêu thức cụ thể, chỉ dựa vào ý cảnh mà đơn giản xử lý.

Võ học được thành lập từ các chiêu thức cơ bản, tuyệt thế võ công cũng từ các chiêu thức cơ bản mà ra. Code học cũng tạo thành từ bit/byte cơ bản, chương trình phức tạp cũng được viết thành từ nhiều module, từ từng dòng code.

Đôi khi, ta đã quá quen với việc dùng thư viện, dùng framework mà quên thì những thứ nằm sâu bên dưới, không nắm được bản chất. Có những vấn đề mà phải nắm rõ bản chất của nó ta mới có thể giải quyết được.

Như cái tên “Phản Phác Quy Chân”, series này không giới thiệu công nghệ hay ngôn ngữ mới, mà sẽ tập trung quay lại những cái bản chất, đơn giản, tinh túy nhất mà ít người quan tâm để ý (Bên tiếng Anh có một từ tương tự : Back to Basic, bỏ qua những cái phức tạp, quay lại những cái cơ bản để hiểu tận gốc vấn đề).

Đây là một series khá xưa nhưng rất hay của Code Dạo, nay có hứng thú lại nên mình viết tiếp season 2 của series nha.

Hôm nay, chúng ta cùng tìm hiểu về Separation of Concerns, một nguyên lý thiết kế đã có hơn 35 năm tuổi đời; nhưng vẫn có sức ảnh hưởng rất lớn, và được áp dụng rất nhiều trong thiết kế hệ thống, trong viết code và design các library.

Continue reading Series Phản Phác Quy Chân – Luận về nguyên lý Separation of Concerns (Chia Để Trị)

Kiến thức trong ngành IT có 2 loại – Một loại để càng lâu càng cũ, loại kia thì ngược lại

Từ trước đến nay, với các bạn muốn theo ngành IT, mình đều có lời khuyên là:

Kiến thức trong ngành thay đổi rất nhanh, các công nghệ rất dễ trở nên lạc hậu, lỗi thời. Do vậy, để theo đuổi ngành này, chúng ta phải chịu khó tự học, tự làm mới bản thân.

Hôm nọ, mình có đọc mẩu truyện tranh ngắn sau, về một cuốn sách khá nổi tiếng trong ngành – Working Effectively with Legacy Code

Nguồn: commitstrip.com/en/2019/03/13/like-a-good-wine

Mình chợt nhớ ra/ngộ ra rằng kiến thức công nghệ trong ngành IT cũng có 2 loại:

  • Loại thứ nhất càng để lâu càng cũ, lạc hậu, trở nên vô dụng
  • Loại thứ hai để lâu tận 10 năm, 20 năm cũng chả sao, thậm chí càng ngày càng có giá

Loại thứ 2 là những kiến thức gì vậy, các bạn xem sẽ biết nhé! (Bật mí nhỏ là không phải chỉ có thuật toán như mấy ông thầy trong trường hay nói đâu!

Continue reading Kiến thức trong ngành IT có 2 loại – Một loại để càng lâu càng cũ, loại kia thì ngược lại

Tổng hợp sách hay về JavaScript – Từ nhập môn đến nâng cao

Ở bài trước, khi nói về top 5 ngôn ngữ nên học, mình có bảo rằng JavaScript hiện tại đang là một ngôn ngữ hot và rất đáng học. Vì vậy, hôm nay mình sẽ chia sẻ những sách hay về JavaScript, với mức độ từ cơ bản đến nâng cao nhé!

Bản thân tài liệu về JS tiếng Việt khá ít, chắc từ thời jQuery rồi, cũng không cập nhật mấy. Vì minh vẫn hay khuyên các bạn nên học lập trình bằng tiếng Anh,  do đó nên những sách mình giới thiệu trong bài chỉ toàn là tiếng Anh thôi nhé.

Continue reading Tổng hợp sách hay về JavaScript – Từ nhập môn đến nâng cao

Lightning Talk Kì 7 – Ba bước “đơn giản” để học công nghệ mới

Ở kì này, mình sẽ chia sẻ 3 bước “đơn giản” mà mình hay áp dụng để học một công nghệ mới nhé.

Mình đăng trên Channel Youtube trước blog và fanpage khoảng vài hôm cho đến một tuần. Bạn nào muốn xem trước tiên thì nhớ vào subscribe channel của mình nhé: https://www.youtube.com/c/toidicodedaoblog

Channel hiện đã đạt được 2700 subscribe nên mình sẽ ra vlog Lightining Talk vào tối thứ 3 hàng tuần để tri ân nhe. Cảm ơn bà con cô bác đã ủng hộ thiệt nhiều!

Lập trình viên cần biết gì về Package Manager?

Kì trước, chúng ta đã tìm hiểu khái niệm technical stack. Lần này, chúng ta cùng tìm hiểu về một thứ cool lòi mang tên Package Manager.

Kiến thức về Package Mananger vô cùng cần thiết với các lập trình viên. Có thể bạn đã sử dụng nó bấy lâu nay mà không hay biết đấy!

Bài viết ngắn gọn này sẽ giải thích về Package Manager, các thành phần chính và nguyên tắc hoạt động, cũng như giới thiệu một số PM phổ biến. Đọc bài biết để tìm hiểu kĩ hơn nhé!

Continue reading Lập trình viên cần biết gì về Package Manager?

Series Phản Phác Quy Chân – Lý thuyết hay thực hành quan trọng hơn?

Gần đây, mình có thấy một cuộc tranh cãi, lộn,… tranh luận khá thú vị giữa các bạn sinh viên về chuyện “Lý thuyết hay thực hành quan trọng hơn?”.

Có bạn bảo “Phải vững lý thuyết thì mới giỏi được”, có bạn đáp lại “Code nhiều là giỏi chứ cần vẹo gì lý thuyết”, có người quăng gạch “anh tự học code, tự làm theo tutorial chứ có cần học lý thuyết gì đâu, vẫn có lương nghìn đô!!”.

Vì nhiều bạn cũng email cho mình hỏi vấn đề tương tự, mình viết bài này để chia sẻ cái nhìn của bản thân. Rốt cuộc lý thuyết hay thực hành quan trọng hơn?? Đọc hết bài sẽ biết!

Continue reading Series Phản Phác Quy Chân – Lý thuyết hay thực hành quan trọng hơn?

Series Bảo Mật Nhập Môn – Quản lý người dùng – Tưởng dễ ăn mà không đơn giản

Website được tạo ra là để phục vụ người dùng. Có người sử dụng thì website và doanh nghiệp mới có thu nhập. Một trong những việc rắc rối nhất chính là quản lý và bảo mật thông tin người dùng.

Trong bài này, mình chia sẻ những điều cần lưu ý khi thực hiện tính năng này. Khá nhiều khê và phức tạp đấy, các bạn chịu khó đọc kĩ nhé!

Úi giời! Đăng kí đăng nhập có gì khó?

Không như bạn tưởng tượng, việc đăng kí/đăng nhập và quản lý người dùng thật ra không hề đơn giản. Nó có thể trở nên khá loằng ngoằng với những tính năng sau:

  • Cho phép người dùng đăng kí, đăng nhập bằng email
  • Phân quyền người dùng
  • Tích hợp với Gmail, Facebook
  • Tích hợp với hệ thống người dùng có sẵn trong doanh nghiệp
  • Reset mật khẩu khi người dùng quên
  • Block account khi người dùng nhập sai pass nhiều lần
  • Bảo mật cho API với app di động
  • Bảo mật 2 lớp (Two factor authentication) với các account quan trọng
  • Quản lý: Thêm bớt xoá sửa người dùng

screen-shot-2016-11-08-at-4-40-45-pm

Khi tính năng này hoạt động ổn định, không ai khen nó lấy một câu. Tuy nhiên, chỉ cần nó gặp phải chút vấn đề, cam đoan bạn sẽ hứng chịu vô số cơn thịnh nộ từ khách hàng.

Continue reading Series Bảo Mật Nhập Môn – Quản lý người dùng – Tưởng dễ ăn mà không đơn giản

Series Bảo Mật Nhập Môn – Insecure Direct Object References – Giấu đầu lòi đuôi

Kì này, mình sẽ giới thiệu một lỗ hổng bảo mật khá “lạ” mang cái tên dài loằng ngoằng khó đọc: Insecure Direct Object References.

Lỗi gì mà tên dài rứa??

Lỗi này “lạ” ở chỗ nó nằm trong top 4 OWASP nhưng lại có rất ít tài liệu về nó. Nó cũng không nổi tiếng như XSS hay CSRF hay SQL Injection (Dù rank OWASP của nó cao hơn XSS hay CSRF nhiều).

Bản thân mình trước đây cũng chưa hề nghe báo chí hay tin tức gì nhắc tới lỗi này. Có thể là do chưa có vụ án nổi tiếng nào liên quan đến nó, hoặc do lỗi này có nhiều biến thể phức tạp chăng?

Nguyên nhân chính gây ra lỗ hổng này là sự bất cẩn của developer hoặc sysadmin (Gặp lỗi này là phải lôi thằng dev ra chém trước, sau đó chém tester).

Lỗ hổng này xảy ra khi chương trình cho phép người dùng truy cập tài nguyên (dữ liệu, file, thư mục, database) một cách bất hợp pháp, thông qua dữ liệu do người dùng cung cấp. Để dễ hiểu hơn, hãy đọc ví dụ phía dưới nhé.

Continue reading Series Bảo Mật Nhập Môn – Insecure Direct Object References – Giấu đầu lòi đuôi

Series Bảo Mật Nhập Môn – Ẩn giấu thông tin hệ thống – Tránh con mắt người đời và kẻ xấu

Trong bài viết hôm nay, mình sẽ giới thiệu một phương pháp bảo mật vô cùng đơn giản, hiệu quả nhưng lại được ít người biết và áp dụng. Đó là phương pháp: Giấu thông tin hệ thống.

Thông tin hệ thống là gì?

Có thể tạm hiểu thông tin hệ thống là những thông tin về cấu tạo và hoạt động của hệ thống đó.

Continue reading Series Bảo Mật Nhập Môn – Ẩn giấu thông tin hệ thống – Tránh con mắt người đời và kẻ xấu

Posts navigation 1 2 Next → Search for: Kênh Youtube Tôi Đi Code Dạo youtube-channel-toidicodedao Kênh Youtube chia sẻ về ngành lập trình dưới dạng vlog 3-4 phút rất ngắn gọn và bổ ích. Các bạn nhớ ghé thăm và subscribe nha! Sách do tôi viết

Gần đây, mình vừa ra mắt khóa học Học Lập Trình Generative AI cho Developer. Các bạn có thể vào xem thử nha.

[Free Ebooks] Bảo mật nhập môn - Bảo mật cơ bản cho developer

[Free Ebooks] Nhập môn lập trình không code

[Sách giấy] Code dạo ký sự - Lập trình viên đâu phải chỉ biết code

Top Posts & Pages
  • SOLID là gì - Áp dụng các nguyên lý SOLID để trở thành lập trình viên code "cứng" SOLID là gì - Áp dụng các nguyên lý SOLID để trở thành lập trình viên code "cứng"
  • Dăm ba cách hack sập 1 website nào đó - Phần 1 Dăm ba cách hack sập 1 website nào đó - Phần 1
  • Hướng dẫn setup Visual Studio Code - Những extension xịn xò mà dev nào cũng nên dùng Hướng dẫn setup Visual Studio Code - Những extension xịn xò mà dev nào cũng nên dùng
  • Dependency Injection và Inversion of Control - Phần 1: Định nghĩa Dependency Injection và Inversion of Control - Phần 1: Định nghĩa
  • Đắng lòng khi thấy anh em Developer viết review chửi bới công ty Đắng lòng khi thấy anh em Developer viết review chửi bới công ty
  • Dăm ba cách hack sập 1 website nào đó - Phần 2 Dăm ba cách hack sập 1 website nào đó - Phần 2
  • Sự khác biệt giữa server-side rendering và client-side rendering Sự khác biệt giữa server-side rendering và client-side rendering
  • Cùng học Cờ Lao - Azure Phần 1: Cách tạo account Microsoft Azure để bắt đầu nghịch Cùng học Cờ Lao - Azure Phần 1: Cách tạo account Microsoft Azure để bắt đầu nghịch
  • Build và deploy website để "khè" bạn bè vô cùng đơn giản với Glitch.com Build và deploy website để "khè" bạn bè vô cùng đơn giản với Glitch.com
  • Giải ngố về các khái niệm IaaS, PaaS, SaaS trong Cloud Computing Giải ngố về các khái niệm IaaS, PaaS, SaaS trong Cloud Computing
Like ngay để không bỏ lỡ những bài viết hay nhé!
Like ngay để không bỏ lỡ những bài viết hay nhé!
Bài viết gần nhất
  • Năm 2025, And em Dev mình học Generative AI để làm gì?
  • Ra mắt khoá học Lập Trình Generative AI cho Developer
  • Review nhẹ các ngôn ngữ, công nghệ, framework mà mình đã và đang dùng kiếm cơm – Phần cuối
  • Review nhẹ các ngôn ngữ, công nghệ, framework mà mình đã và đang dùng kiếm cơm – Phần 3
  • Review nhẹ các ngôn ngữ, công nghệ, framework mà mình đã và đang dùng kiếm cơm – Phần 2
  • Review nhẹ các ngôn ngữ, công nghệ, framework mà mình đã và đang dùng kiếm cơm – Phần 1
About me

Mình là Phạm Huy Hoàng, một developer.

Thuở còn là sinh viên, mình từng có những thắc mắc, trăn trở về technical, về con đường nghề nghiệp, nhưng không có ai giải đáp.

Blog này là nơi mình chia sẻ những kiến thức, kinh nghiệm mà mình đạt được trong quá trình làm việc và trải nghiệm.

Mong rằng nó sẽ giải đáp phần nào những khúc mắc, trăn trở cho những bạn sinh viên như mình ngày xưa.

Đọc thêm về tôi và blog này!

Tags
  • algorithm
  • azure
  • blog
  • c#
  • c#.net
  • c# hay ho
  • code
  • coder
  • coding
  • cv
  • công nghệ
  • database
  • developer
  • dự án
  • facebook
  • framework
  • front-end
  • front-end developer
  • học lập trình
  • java
  • javascript
  • js
  • junior
  • kinh nghiệm
  • lightning talk
  • lập trình
  • lập trình viên
  • lập trình web
  • microsoft
  • Nodejs
  • phỏng vấn
  • program
  • programmer
  • programming
  • review
  • review sách
  • senior
  • senior developer
  • series
  • sinh viên
  • stackoverflow
  • sách
  • technical
  • thuật toán
  • tôi đi code dạo
  • tự học
  • web
  • youtube channel
  • đại học
  • đọc sách
Bản quyền bài viếtMọi việc chia sẻ, trích dẫn từ bài viết của blog đều phải tuân theo các quy định sau:
  • Trích dẫn rõ nguồn
  • Không sử dụng vào mục đích thương mại
  • Không được sửa đổi hay làm thay đổi nội dung bài viết
© 2015-2019 TÔI ĐI CODE DẠO Creative Commons License

Lập trình viên giỏi không phải chỉ biết code

Social LinksOnline users Blog Stats
  • 13,831,801 lượt xem
Liên kết

Codeaholicguy The Full Snack Developer Tiger Nguyễn – BrSE blog

Yellow Code Niviki.com Blog Cường Quách Dammio – Kiến thức CN The Lazy Dev

Lưu trữ
  • December 2024 (1)
  • October 2024 (1)
  • April 2021 (1)
  • March 2021 (4)
  • February 2021 (2)
  • January 2021 (4)
  • December 2020 (5)
  • November 2020 (4)
  • October 2020 (4)
  • September 2020 (5)
  • August 2020 (4)
  • July 2020 (4)
  • June 2020 (6)
  • May 2020 (4)
  • April 2020 (4)
  • March 2020 (5)
  • February 2020 (4)
  • January 2020 (2)
  • December 2019 (4)
  • November 2019 (4)
  • October 2019 (5)
  • September 2019 (3)
  • August 2019 (4)
  • July 2019 (5)
  • June 2019 (6)
  • May 2019 (5)
  • April 2019 (5)
  • March 2019 (4)
  • February 2019 (5)
  • January 2019 (6)
  • December 2018 (7)
  • November 2018 (9)
  • October 2018 (9)
  • September 2018 (8)
  • August 2018 (8)
  • July 2018 (9)
  • June 2018 (7)
  • May 2018 (9)
  • April 2018 (8)
  • March 2018 (9)
  • February 2018 (4)
  • January 2018 (9)
  • December 2017 (8)
  • November 2017 (9)
  • October 2017 (8)
  • September 2017 (8)
  • August 2017 (8)
  • July 2017 (8)
  • June 2017 (9)
  • May 2017 (9)
  • April 2017 (8)
  • March 2017 (10)
  • February 2017 (7)
  • January 2017 (6)
  • December 2016 (9)
  • November 2016 (9)
  • October 2016 (8)
  • September 2016 (9)
  • August 2016 (9)
  • July 2016 (8)
  • June 2016 (9)
  • May 2016 (9)
  • April 2016 (8)
  • March 2016 (10)
  • February 2016 (6)
  • January 2016 (8)
  • December 2015 (10)
  • November 2015 (8)
  • October 2015 (9)
  • September 2015 (9)
  • August 2015 (8)
  • July 2015 (9)
  • June 2015 (9)
  • May 2015 (8)
  • April 2015 (7)
  • March 2015 (8)
  • February 2015 (4)
  • January 2015 (6)
  • December 2014 (1)
Từ coder đến developer – Tôi đi code dạo Blog at WordPress.com.
  • Subscribe Subscribed
    • Từ coder đến developer - Tôi đi code dạo
    • Join 2,910 other subscribers Sign me up
    • Already have a WordPress.com account? Log in now.
    • Từ coder đến developer - Tôi đi code dạo
    • Customize
    • Subscribe Subscribed
    • Sign up
    • Log in
    • Report this content
    • View site in Reader
    • Manage subscriptions
    • Collapse this bar
Loading Comments... Write a Comment... Email (Required) Name (Required) Website

Từ khóa » Thư Viện Là Gì Lập Trình