Tag Archives: program

Series Phản Phác Quy Chân – Điều gì ngăn cản bạn đạt cảnh giới tối cao trong “code học”?

Chuyện ngày xưa

Đã từng có thời, code là một việc cực kỳ mệt nhọc và nhàm chán.

Đã từng có thời, lập trình việc phải làm việc với từng byte từng bit một.

Đã từng có thời, code phải được viết ra giấy, đóng thành thẻ rồi đút vào máy.

Đã từng có thời, ta phải mất cả năm trời để tạo giao diện, quản lý bộ nhớ, viết một chương trình đơn giản.

FortranCardPROJ039.agr
Ngày xưa, mấy bác lập trình viên code bằng cách “đóng lỗ” lên mấy tấm thẻ như thế này

Continue reading Series Phản Phác Quy Chân – Điều gì ngăn cản bạn đạt cảnh giới tối cao trong “code học”?

Series Phản Phác Quy Chân – Chuyện về những “ổ gà” trên con đường lập trình

Hôm nay, trước khi nói về ngành lập trình, ta hãy nói về ngành cầu đường.

Trên đời này làm gì có đường, người ta đi mãi cũng thành đường thôi. – Lỗ Tấn

Từ chuyện xây đường…

Thưở xưa, để đến nơi, người ta phải đi chân trần, trèo đèo lội suối, đập đá băng rừng.

Dần dần người ta chặt cây, nhổ cỏ, làm đường đất để mà đi. Đường đất vừa bẩn vừa nhiều bụi, người ta lại lát đá, lát gạch cho đường sạch đẹp, dễ đi hơn.

Thế rồi khoa học tiến bộ, người ta không lát đá nữa mà ủi phẳng, trải nhựa, trải bê tông. Trên đường nhựa, người ta xây cầu vượt, xây vòng xoay, xe cộ băng băng qua lại, nhanh chóng và tiện lợi hơn nhiều so với ngày xưa.

go-your-own-road-by-erik-johansson

Continue reading Series Phản Phác Quy Chân – Chuyện về những “ổ gà” trên con đường lập trình

Review sách: Dreaming in Code – Nửa đêm mơ code

Dạo này vì lo viết bài technicalchém gió về nghề nghiệp dữ quá nên lâu rồi cũng chưa viết bài nào review sách. Từ đầu tháng 1 tới giờ mình cũng đọc được khoảng 5,6 cuốn nhưng không phải sách lập trình nên không review chém gió được. Cuốn sách này mình đọc xong hồi tháng 12 năm ngoái, kể về một dự án thất bại nổi đình nổi đám. Thôi thì đầu năm đầu tháng lôi tháng lôi thất bại của người khác ra review để rút kinh nghiệm vậy….

cover

Giới thiệu – Tóm tắt

Tên đầy đủ của cuốn sách là: Dreaming in Code – Two dozen programmers, three years, 4732 bugs, and one quest for transcendent software (Tạm dịch: Nửa đêm mơ code – 2 tá lập trình viên, 3 năm, 4 nghìn 7 trăm 32 con bug, và 1 hành trình truy cầu phần mềm siêu việt). Mình tình cờ đọc được review của cuốn này trên blog Joel on Software (Ai theo dõi blog mình chắc cũng biết lão này là cựu nhân viên Microsoft, người sáng lập StackOverflow). Tuy chưa tới mức thuộc dạng sách gối đầu giường như Code Complete, The Mythical Man-Month, Peopleware,… nhưng nó cũng được nhiều người khuyên đọc.

Continue reading Review sách: Dreaming in Code – Nửa đêm mơ code

Series JavaScript sida – Cùng làm quen và “chịch”, nhầm… nghịch ES6

Dạo gần đây mình đi làm thêm, project hiện tại có sử dụng React với cả ES6 – chuẩn Javascript mới. Do mấy bài viết trước mình chê JavaScript sida nhiều thấy cũng tội, hôm nay viết một bài nói tốt cho nó một tí để đổi gió nhé.

Phiên bản JavaScript hiện tại chúng ta đang sử dụng dựa trên chuẩn ECMAScript 5 (ES5). Hiện tại, JavaScript được sử dụng ngày càng nhiều, từ front-end cho đến back-end, điều này đòi hỏi sự cải tiến trong JavaScript (Nghĩ cũng đúng, cái ngôn ngữ sida thế mà code mấy hệ thống to to, code phức tạp thì để lâu chả banh chành ra à !!). Đó là lý do chuẩn ECMAScript 6 (ES6) ra đời, cung cấp 1 số tính năng mới cho JavaScript, đồng thời giúp code trở nên tường minh và dễ viết hơn.

Capture

Continue reading Series JavaScript sida – Cùng làm quen và “chịch”, nhầm… nghịch ES6

[Giải trí] Tổng hợp các comment “bá đạo” từ trước đến nay

Dạo gần đây viết nhiều bài về technical khá mệt và nhức đầu, lâu lâu mình viết một bài theo dạng “dịch và sưu tầm” để giải trí cho các bạn đọc vậy. Trước đây, mình từng có một bài viết về việc sử dụng comment. Code có comment hay không, comment như thế nào luôn là vấn đề tranh luận của giới developer từ trước đến giờ. Hôm nay chúng ta không tranh luận về comment, mà hãy cùng thưởng thức các comment “bá đạo” từ trước đến giờ để giải trí nhé.

Méo mặt khi bị giao optimize code mà gặp phải dòng này

// Chào anh bạn coder:
//
// Sau khi chú em đã gắng hết sức để ‘optimize’ hàm này,
// để rồi nhận ra việc đó nhảm nhí và phí công vô ích thế nào,
// hãy cộng thêm số giờ phía dưới để cảnh báo cho các coder
// xấu số tiếp theo
//
// tổng_số_giờ_lãng_phí = 42

Khi code được viết ra trong một phút giây “thần thánh”

// Ngày xưa, khi tôi viết đoạn code này, chỉ có Chúa và tôi hiểu
// Bây giờ nhìn lại, chỉ có Chúa mới hiểu

super-computer-nerd

Continue reading [Giải trí] Tổng hợp các comment “bá đạo” từ trước đến nay

Ngày đầu đi code dạo nơi đất khách quê người – Phần 2

Định viết một bài thôi mà không ngờ dài quá nên phải chia làm 2 phần luôn. Nội dung phần 2 này sẽ chia sẽ một chút về technical, trải nghiệm khi pair-programming và ăn nhậu với team ;).

Đống code như đống *beep*

Nói chuyện con người đủ rồi, giờ nói chuyện technical một chút nào. Ứng dụng của team được xây dựng trên framework CampusM. Framework này là cũng tương tự Ionic Framework, hỗ trợ viết app di động kiểu hybrid-app bằng HTML, CSS, JavaScript. Vì nó khá mạnh, tích hợp được nhiều thứ nên được một số trường Đại học ở UK sử dụng, trong đó có trường mình. Ngày xưa, team sử dụng phiên bản 1 của framework (AEK 1) để viết các chức năng. Gần đây, framework ra phiên bản AEK 2 (Tích hợp React, Redux và ES6 khá hầm hố), một số chức năng mới lại viết bằng AEK 2. Thế là code chia ra làm “code cũ” và “code mới”, cái nào cũng đủ chuyện nhức đầu.

cpm

Continue reading Ngày đầu đi code dạo nơi đất khách quê người – Phần 2

Ngày đầu đi code dạo nơi đất khách quê người – Phần 1

Hôm trước, mình đã kể chuyện đi phỏng vấn xin… code dạo ở nước ngoài được khá nhiều bạn ủng hộ. Kì này mình sẽ kể về ngày đầu tiên đi code dạo và những đồng nghiệp trong dự án nhé.

Hôm đầu ngơ ngác

Như mình đã kể, chắc do thiếu người hay dự án đang cần gấp nên quy trình phỏng vấn và tuyển dụng diễn ra rẹt rẹt, mình vừa phỏng vấn sáng thứ 4 hôm 10/2 thì có offer ngay chiều hôm đó, và sáng thứ 5 hôm sau phải xách đít đi làm. Bọn bên này làm ăn cũng đàng hoàng, send sẵn một cái file PDF hướng dẫn cách liên hệ với admin request account, set vào các group. Do team cũng nhỏ nên trong file có ghi đầy đủ tên thành viên, chức vụ, sở thích (chắc để mọi người gần gũi với nhau hơn), đọc cũng khá là vui.

Capture
Danh sách thành viên trong team. Bé Alice là cái bé PV mình nhắc tới trong bài trước ý
Continue reading Ngày đầu đi code dạo nơi đất khách quê người – Phần 1

Series Phản Phác Quy Chân – Tại sao cộng string lại chậm

Lý giải chút về tên series

返璞归真 – Phản phác quy chân: Nghĩa là điểm cao nhất cũng chính là điểm xuất phát, được ứng dụng trong rất nhiều lĩnh vực. 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, 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 đến mấy cũng dịch được ra bytecode. Đô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 đề).

01_s_by_darkdamage-d5yo32c

Ở bài viết đầu, mình sẽ nhắc sơ lại về string, cũng như giải thích lý do vì sao việc cộng string sẽ ảnh hưởng tới bộ nhớ và performance của hệ thống (Hình minh họa và bài viết méo liên quan với nhau đâu, vì tác giả thích thế :v).

Continue reading Series Phản Phác Quy Chân – Tại sao cộng string lại chậm

Series JavaScript sida – Bind, Call và Apply trong JavaScript

Để hiểu rõ về các hàm được đề cập trong bài viết này, các bạn nên ôn lại chút kiến thức về object trong javascriptđít (this) trong javascript nhé. Như đã hứa, trong bài này mình sẽ giới thiệu bộ 3 function bind, call ,apply. Đây là 3 hàm tạo nên sự mạnh mẽ và bá đạo của JavaScript.

Trói đít (this) lại bằng bind

Bind là một hàm nằm trong Function.prototype, do đó chỉ có function mới có khả năng gọi nó. Như đã nhắc tới trong bài viết về this, bind được dùng để xác định tham số this cho một function.

1

Continue reading Series JavaScript sida – Bind, Call và Apply trong JavaScript

Series Javascript sida – OOP trong JavaScript

Trước khi xem bài này, các bạn nên ôn lại kiến thức bằng cách xem lại 2 bài viết về objectprototype trong series JavaScript sida. Trước khi phân tích về OOP trong JavaScript, mình sẽ nhắc lại sơ 1 số khái niệm trong OOP. Bạn nào quên rồi có thể lên wiki xem lại nhé: https://vi.wikipedia.org/wiki/Lập trình hướng đối tượng.

Trong phạm vi bài viết, ta sẽ bàn về 3 đặc tính của OOP, so sánh cách hiện thực chúng trong Java và JavaScript. Vì Wiki có sẵn rồi nên mình chỉ copy vào thôi, không giải thích lại lòng vòng nhé:

Continue reading Series Javascript sida – OOP trong JavaScript