Quảng Cáo

Cpm Affiliation : the cpm advertising network
no image

Lời nói đầu 


Ứng dụng web là gì? 


Trong kỹ thuật phần mềm, một Ứng dụng web hay webapp là một trình ứng dụng mà có thể tiếp cận qua web thông qua mạng như Internet hay intranet.

Ứng dụng web phổ biến nhờ vào sự có mặt vào bất cứ nơi đâu của một chương trình. Khả năng cập nhật và bảo trì ứng dụng Web mà không phải phân phối và cài đặt phần mềm trên hàng ngàn máy tính là lý do chính cho sự phổ biến của nó. Ứng dụng web được dùng để hiện thực Webmail, bán hàng trực tuyến, đấu giá trực tuyến, wiki, diễn đàn thảo luận, Weblog, MMORPG, Hệ quản trị nội dung, Phần mềm quản lý nguồn nhân lực và nhiều chức năng khác.

Lưu ý về JavaScript 


JavaScript là ngôn ngữ hiểu bởi các trình duyệt web. Nếu bạn muốn phát triển ứng dụng web bạn sẽ cần phải biết JavaScript.

Khách quan, JavaScript là một ngôn ngữ không phải là một lập trình tốt. JavaScript được Netscape giới thiệu vào năm 1995 và nó nhanh chóng được công chúng yêu thích. Lý do có liên quan nhiều đến sự xuất hiện của các trang web như là một nền tảng môi trường truyền thông thương mại: Với JavaScript, bạn có thể tác động đến hành vi của trang web trong trình duyệt bằng lập trình. Chỉ điều đó thôi cũng đã thú vị rồi! Việc xác nhận hợp lệ của dạng HTML và mánh khóe hình ảnh hạn chế đã là vấn đề quan trọng hàng đầu.

Kể từ đó, JavaScript đã trải qua một vài thay đổi. Vào lúc đó Netscape đã có một sản phẩm là Netscape Application Server (Máy chủ ứng dụng Netscape), dựa trên JavaScript phía máy chủ để xây dựng các ứng dụng web. Vài năm sau đó, sự ra đời của Ajax và các thư viện tiện ích như JQuery, Prototype và ExtJS đã tiếp tục châm ngòi cho các mối quan tâm về JavaScript. Gần đây hơn, JavaScript phía máy chủ đã trở lại với Node.js, một framework I/O dựa trên sự kiện dùng để xây dựng các ứng dụng web phía máy chủ bằng cách sử dụng công cụ V8 JavaScript của Google.

Để chăm lo cho tương lai của sản phẩm của mình, Netscape đã gửi JavaScript lên tổ chức quốc tế về tiêu chuẩn hóa Ecma. Đó là lý do tại sao một số người gọi JavaScript là ECMAScript. Quan trọng hơn, đó là lý do tại sao hầu hết các trình duyệt web đều hỗ trợ ECMAScript. Kết quả là, các ứng dụng web gặp khó khăn đều không sử dụng JavaScript ở đâu đó và JavaScript dường như không thể thay đổi được điều đó. Hiện tại chưa có ngôn ngữ tạo kịch bản lệnh nào khác tương thích trình duyệt xuất hiện.

Ngày nay, mặc dù tiếng xấu của nó vẫn còn sót lại, nhưng JavaScript được cho là một trong những ngôn ngữ được sử dụng nhiều nhất (và có ích) trên hành tinh. Nếu bạn là một lập trình viên Java (hoặc một lập trình viên Ruby, Python hay PHP), có thể là bạn hoặc đã sử dụng JavaScript hoặc bạn sẽ sử dụng trong tương lai không xa. Việc hiểu biết một số tính năng của JavaScript có thể giúp bạn xây dựng các ứng dụng web phổ biến hơn tiếp theo. Hơn nữa, nó sẽ cho phép bạn sử dụng Node.js

Command Line Interpreter

Để kiểm tra các tính năng cơ bản của ngôn ngữ, tôi khuyên bạn nên bắt đầu bằng cách sử dụng một trình thông dịch. Hầu hết các trình duyệt web hiện đại sẽ cung cấp một giao diện điều khiển sử dụng JavaScript, nhưng tôi khuyến khích sử dụng Google Chrome.

Một khi Chrome được cài đặt, mở bất kỳ trang web sau đó nhấn tổ hợp phím Ctrl + Shift + I. Bạn sẽ thấy một màn hình như thế này:

/doc_static/trunk/training/_images/chrome.png

Các kiểu dữ liệu cơ bản


Kiểu số

> ((3 + 3) / 1.5) * 2;
8
Lưu ý javascript không có kiểu số nguyên. Tất cả đều là float. Đây là một sự khác biệt lớn với hầu hết các ngôn ngữ lập trình khác. Điều này có ảnh hưởng đến một số phép tính trong toán học. Ví dụ:

> 3 / 2;
1.5
Trong C, Java hoặc Python kết quả sẽ là 1, trừ khi chúng ta đã ép kiểu hoặc sử dụng kiểu số float (2.0 or 2.).

Booleans

> 5 == 2;
false
> true == true;
true
> true == false;
false


Strings (Chuỗi)

> "Hello World";
"Hello World"
> 'Hello World';
"Hello World"
Chuỗi có thể được định nghĩa bằng 1 dấu nháy hoặc 2 dấu nháy. Như một số ngôn ngữ cấp cao khác, Chuỗi có sẵn một số hàm tính toán mặc định.

> "Hello World".charAt(3);
"l"
> "Hello World".slice(6, 9);
"Wor" // slice() lấy một đoạn văn bản
> "Hello World".length;
11
Có thể ghép 2 chuỗi bằng dấu +:

> "Hello " + "World";
"Hello World"
Null
> var x = null;
> x;
null
Tương tự một số ngôn ngữ khác hoặc kiểu None trong Python.

Undefined

Nếu bạn định nghĩa một biến mà không gián giá trị cho nó, nó sẽ được gán một giá trị đặc biệt. Giá trị này không giống giá trị null.

> var x;
> x;
undefined

Chuyển kiểu ngầm định

JavaScript tự động chuyển kiểu trong các phép tính.

> "Test" + 5;
"Test5"

Nó có thể hữu ích trong một số trường hợp, tuy nhiên nó sẽ tạo ra một số kết quả lạ khi so sánh. Ví dụ:

> "5" == 5;
true
> "" == 0;
true
> "0" == false;
true
Giống như C, giá trị false bằng 0 và true sẽ là những số khác 0. Kiểu chuỗi đc hiểu là true nếu không rỗng.

Tuy nhiên trong một số trường hợp bạn cần so sánh chính xác, chúng ta sẽ dùng === (3 dấu bằng).

> "5" === 5;
false
> "" === 0;
false
> "0" === false;
false

Kết quả sẽ luôn false nếu 2 kiểu so sánh khác nhau.

Cấu trúc điều khiển

JavaScript có một số cấu trúc điều khiển tương tự C. (Để viết nhiều dòng trong Chrome Console, bạn sử dụng Shift + Enter.)

> if (true == true) {
      console.log("true is true");
  }
true is true
> var x = 0;
> while (x < 3) {
      console.log(x);
      x++;
  }
1
2
3
> for (var i = 5; i < 8; i++) {
      console.log(i);
  }
5
6
7

Ngoài ra JavaScript còn có một số cấu trúc lặp đặc biệt như (for (...in...))

Hàm

Hàm trong js được định nghĩa như sau:

> function talk() {
      console.log("Hello World");
  }
> talk();
Hello World

Trong JavaScript, hàm cũng là một kiểu dữ liệu, vì vậy bạn có thể định nghĩa nó bằng cách gán nó vào một biến.

> var talk = function() {
      console.log("Hello World");
  }
> talk();
Hello World
> var talkAgain = talk;
> talkAgain();
Hello World
> function executeFunc(func) {
      func();
  }
> executeFunc(talk);
Hello World

Tham số của hàm tương tự như các ngôn ngữ khác, tuy nhiên nó không cần kiểu dữ liệu. Lưu ý: Trong JavaScript không kiểm tra số biến truyền vào, nếu số biến truyền vào ít hơn thì nó sẽ được gán là undefined.

> var print = function(a, b) {
      console.log(a);
      console.log(b);
  }
> print("hello");
hello
undefined
> print("nice", "to", "meet", "you");
nice
to
Read more
no image

Đây là quan điểm của Peter Norvig - GĐ trung tâm nghiên cứu của Google - về các loại sách "ăn xổi" bày bán ngoài thị trường hiện nay với những cái "tít" nghe rất ư là hứng khởi: "Tự học Java trong 7 ngày" hay "Học Visual C++.NET trong 24 giờ",v.v… Tất nhiên, mỗi người đều có động cơ và mục đích riêng khi học lập trình. Nhưng Peter cho rằng để trở thành một "expert programmer", bạn cần ít nhất 10 năm, và việc trông chờ vào những cuốn sách kiểu như trên để "thay da đổi thịt" là điều không tưởng.

Ý kiến dưới đây của Peter Norvig cũng đáng để mọi người cùng nhau thưởng thức và suy ngẫm:
Tại sao bây giờ người ta lại vội vàng đến như vậy?
Rảo bước quanh các cửa hàng sách, bạn sẽ thấy cái tựa: "Hướng dẫn lập trình Java trong 7 ngày" nằm bên cạnh một dãy dài vô tận những lời "đề nghị dạy học" đại loại như vậy về Visual Basic, Windows hay Internet… chỉ cần vài ngày hay vài giờ ngắn ngủi. Tôi đã thử thực hiện một tìm kiếm nâng cao tại Amazon.com:
pubdate: after 1992 and title: days and (title: learn or title: teach yourself)
và nhận được 248 kết quả. 78 kết quả đầu tiên là sách về máy tính (cuốn thứ 79 là Learn Bengali in 30 days). Thử thay "days" bằng "hours", những gì thu được cũng hoàn toàn tương tự: 253 kết quả, với 77 kết quả đầu tiên là máy tính (cuốn thứ 78 là Teach Yourself Grammar and Style in 24 Hours). Khi vượt ra ngoài top 200, tất cả các cuốn sách đều là sách về máy tính.
Từ đây có thể rút ra kết luận: "Hoặc là bây giờ người ta đổ xô đi tìm hiểu về máy tính, hoặc máy tính không hiểu vì một lí do hoang đường nào đó lại trở nên dễ học hơn những thứ khác". Chẳng có quyển sách nào hướng dẫn học Beethoven, Vật lý Lượng tử hay thậm chí là "chăm sóc cho chó" (Dog Grooming) chỉ trong có vài ngày. Felleisen và các đồng sự đồng tình với xu hướng này trong cuốn How to Design Programs, khi họ cho rằng "lập trình bẩn là rất dễ, những kẻ ngốc, thậm chí đần độn có thể học nó trong 24 giờ".
Hãy thử xem cái title: Learn C++ in Three Days gợi lên được điều gì:
Learn: Trong 3 ngày thậm chí bạn còn chưa đủ thời gian viết được một vài chương trình cho ra hồn chứ đừng nói đến việc học từ những thành công và thất bại. Bạn cũng không có cơ hội làm việc với những người có kinh nghiệm và hiểu xem cái gì đang xảy ra xung quanh mình. Nói tóm lại là bạn chẳng thể nào học cho cặn kẽ được. 3 ngày chỉ đủ để bạn làm quen với phần nổi bề ngoài, đó không phải sự thấu hiểu. Và như Alexander Pope đã từng nói: "Hiểu biết nông cạn còn nguy hiểm hơn kẻ mù chữ" (A little learning is a dangerous thing).
C++: Trong 3 ngày có thể bạn học xong cú pháp của C++ (nếu bạn đã thực sự biết một vài ngôn ngữ lập trình khác), nhưng bạn khó mà học được cách sử dụng chúng. Nói ngắn gọn, nếu bạn là một lập trình viên Basic, bạn có thể viết những chương trình theo phong cách Basic sử dụng cú pháp của Pascal, nhưng bạn sẽ chẳng hiểu được những ưu điểm hay nhược điểm của Pascal. Vậy quan điểm ở đây là gì? Alan Perlis (ND: giáo sư đại học Yale), trong Epigrams on Programming đã từng nói: "Một ngôn ngữ mà chẳng ảnh hưởng gì đến cách bạn tư duy về lập trình, ngôn ngữ ấy chỉ là đồ bỏ đi, không đáng để học". Có thể chấp nhận được nếu bạn chỉ định học đôi chút về Pascal (hoặc Visual Basic hay JavaScript) vì bạn chỉ cần làm quen với những công cụ có sẵn để làm một việc nào đó. Nhưng đấy không phải là bạn học ngôn ngữ để lập trình, bạn chỉ học để hoàn thành nhiệm vụ cụ thể của mình mà thôi.
Trong 3 ngày: Thật đáng tiếc, điều này là không thể, như tôi sẽ chỉ ra dưới đây.
Tự học lập trình trong 10 năm
Các nhà nghiên cứu (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) đã chỉ ra rằng cần ít nhất 10 năm để đạt được sự tinh thông trong nhiều lĩnh vực, từ đánh cờ, sáng tác âm nhạc, hội họa, bơi lội, tennis, hay thu được kết quả trong tâm lí thần kinh hay hình học topo. Điều quan trọng là bàn về phương pháp thực hành: không chỉ là việc lặp đi lặp lại đơn thuần, mà còn thử thách chính mình bằng những nhiệm vụ như vượt qua khả năng hiện tại của bản thân, cố gắng, phân tích hiệu xuất của mình trong và sau quá trình rèn luyện, và sửa chữa bất kỳ sai lầm nào. Cứ như vậy, lặp đi lặp lại. Và lịch sử đã chứng minh không thể có con đường tắt: dù cho đó là Mozart, thiên tài âm nhạc nảy nở từ năm lên 4 tuổi, cũng phải mất 13 năm để cho ra đời tác phẩm nhạc cổ điển đầu tiên. Dù cho đó là Beatles, trước khi xuất bản #1 đầu tiên vào năm 1964, họ cũng đã phải cặm cụi trong những câu lạc bộ nhỏ tại Liverpool hay Hamburg từ năm 1957, và trong khi họ có sức hấp dẫn đại chúng từ rất sớm, thành công quan trọng đầu tiên của nhóm là Sgt. Pepper, album được phát hành năm 1967. Malcolm Gladwell có bài báo nghiên cứu so sánh về các sinh viên tại Học viện âm nhạc Berlin trong ba nhóm tốt, khá và trung bình và hỏi họ đã thực hành chăm chỉ như nào:
Tất cả mọi người, từ tất cả ba nhóm, bắt đầu chơi ở cùng một khoảng thời gian – tầm khoảng năm tuổi. Trong những năm đầu tiên, tất cả mọi người thực hành một lượng như nhau – khoảng hai hoặc ba giờ một tuần. Nhưng tầm tám tuổi sự khác biệt thực sự bắt đầu xuất hiện. Các sinh viên trong nhóm tốt nhất, họ bắt đầu thực hành nhiều hơn những người khác: sáu giờ một tuần lúc chín tuổi, tám tuổi là 12 giờ, 16 giờ một tuần khi 14 tuổi, và tăng lên dần, cho đến tuổi 20 họ đã được tập luyện 30 giờ một tuần. 20 tuổi, nghệ sĩ ưu tú đã có tất cả 10.000 giờ thực hành trong cuộc sống của họ. Các sinh viên chỉ đơn thuần là tốt đã đạt 8.000 giờ, và giáo viên âm nhạc trong tương lai là hơn 4.000 giờ.
Vì vậy, có thể 10.000 giờ, chứ không phải 10 năm, là con số kỳ diệu. (Henri Cartier-Bresson (1908-2004) nói: "10.000 bức ảnh đầu tiên của bạn là tệ nhất", nhưng ông đã chụp nhiều hơn một bức trong một giờ.). Samuel Johnson (1709-1784) nghĩ rằng việc này thậm chí còn lâu hơn: "Sự vượt trội ở bất cứ lĩnh vực nào cũng chỉ có thể đạt được bằng lao động cật lực trong suốt cuộc đời, bạn không thể mua nó bằng một cái giá rẻ hơn". Và Chaucer (1340-1400) phàn nàn rằng: "Cuộc đời quá ngắn ngủi, trong khi những mánh khóe thì lại quá dài để có thể học được". Hippocrates (khoảng 400BC) được biết đến với các trích đoạn "ars longa, vita brevis", là một phần của chích đoạn dài hơn "Ars longa, vita brevis, occasio praeceps, periculosum experimentum, iudicium difficile", với nghĩa tạm dịch là "Cuộc đời là ngắn ngủi, với cơ hội phù du, đầy dãy các kỹ năng, với các thử nghiệm nguy hiểm, và phán quyết khó khăn". Mặc dù trong tiếng Latin, ars có thể có nghĩa là nghệ thuật, hoặc mánh khóe, nếu so từ gốc tiếng Hy Lạp "techne" thì chỉ có thể có nghĩa là "kỹ năng", không phải "nghệ thuật".
Và nếu bạn muốn trở thành lập trình viên, đây là công thức cho những thành công của tôi trong lập trình:
- Hãy yêu thích nó, bạn làm vì bạn cảm thấy vui vẻ và hào hứng. Hãy chắc chắn rằng bạn luôn như thế trong 10 năm…
- Hãy trao đổi với những lập trình viên khác, đọc chương trình của họ viết. Điều này còn quan trọng hơn bất kì quyển sách hay khóa đào tạo nào.
- Lập trình: Cách học tốt nhất là học đi đôi với hành (learning by doing). Nói cho rõ ràng hơn thì: "Tầm cao nhất của một lĩnh vực nào đó không thể có được chỉ thông qua sự bổ sung về mặt kinh nghiệm. Nhưng kể cả khi đã có rất nhiều kinh nghiệm, nếu cố gắng và nỗ lực, bạn vẫn có thể tiến xa hơn" và "để học tập một cách hiệu quả nhất, bạn cần phải xác định rõ khả năng hiện tại của mình, thu thập kiến thức từ người khác, và tự tìm lấy những cơ hội để học theo và sửa đổi sai lầm của chính mình". Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life là một cuốn sách rất hữu ích cho quan điểm này.
- Nếu bạn muốn, hãy giành 4 năm ở đại học (và nhiều hơn ở trường phổ thông). Bạn sẽ có cơ hội làm những công việc yêu cầu khả năng và hiểu biết chuyên sâu hơn trong một vài lĩnh vực, nhưng nếu bạn không thích trường học, bạn có thể (với một số sự nỗi lực và cống hiến) có được kinh nghiệm tương tự của riêng bạn hoặc trong công việc. Trong bất kì trường hợp nào, chỉ đọc sách thôi là chưa đủ. "Bút vẽ và mực màu không thể biến bạn trở thành họa sĩ, cũng như những bài giảng về khoa học máy tính trên lớp không thể giúp bạn trở thành chuyên gia lập trình", Eric Raymond, tác giả của The New Hacker Dictionary đã nói như vậy. Một trong những lập trình viên giỏi nhất mà tôi đã từng thuê chưa từng có bằng đại học, nhưng anh ta đã tham gia viết những phần mềm tuyệt vời (ví dụ), có news group của riêng mình và anh ta thậm chí còn giàu hơn cả tôi.
- Hãy tham gia vào các projects với những lập trình viên khác. Bạn có thể là best programmertrong một projects, nhưng cũng có thể là worst. Nếu là best, hãy thử khả năng làm leader của mình. Còn ngược lại, hãy học hỏi xem người giỏi nhất làm gì, và học xem họ không làm gì (vì họ muốn bạn làm những việc đó).
- Trong một project, hãy bắt tay làm việc sau những lập trình viên khác, khi bạn đã hiểu chương trình của họ. Hãy tìm xem những gì cần thiết để hiểu và chỉnh sửa khi người viết ra chương trình đó không có mặt ở đây. Thử nghĩ xem làm thế nào để thiết kế những chương trình giúp cho những người sau này có thể dễ dàng hơn trong việc bảo trì nó.
- Hãy học ít nhất khoảng nửa tá ngôn ngữ lập trình, bao gồm:
 + Một ngôn ngữ hỗ trợ việc tạo các lớp trừu tượng (Java hoặc C++)
 + Một ngôn ngữ lập trình hàm (Lisp hoặc ML)
 + Một ngôn ngữ cú pháp (Lisp)
 + Một ngôn ngữ hỗ trợ khai báo định danh (Prolog hoặc C++ templates)
 + Một ngôn ngữ hỗ trợ coroutine (Icon hay Scheme)
 + Một ngôn ngữ hỗ trợ song song (Sisal)
- Hãy nhớ rằng "máy tính" là một phần của "khoa học máy tính". Nên nắm rõ thời gian để máy tính thực hiện một chỉ thị, lấy một từ trong bộ nhớ (có hay không có cache), đọc những từ liên tiếp trong ổ đĩa, hay tìm kiếm một vùng nhớ cụ thể.
Read more
no image

Lập trình là công việc tạo ra một sản phẩm, một thành quả, và con đường trở thành lập trình viên sẽ rõ ràng hơn khi bạn biết rõ thứ mà các bạn sẽ tạo ra. Nếu mục tiêu của bạn chỉ là “học viết code”, mà không có định hướng rõ ràng về thứ mà các bạn sẽ làm ra và cách chúng sẽ làm cho cuộc sống tốt đẹp hơn, bạn sẽ thấy con đường phía trước đầy chông gai và khó nhọc.
Vậy, bạn muốn lập trình thứ gì? Một website, một trò chơi, hay một ứng dụng iPhone? Hoặc có thể bạn muốn xây dựng hẳn một công ty khởi nghiệp đáng giá hàng triệu USD? Đó cũng có thể là một sản phẩm tương tác mang tính nghệ thuật. Hay bạn muốn sử dụng kiến thức của mình để làm các sếp hài lòng và dành thời gian để làm những việc khác? Hoặc đơn giản bạn chỉ muốn kiếm việc dễ dàng hơn, muốn bổ sung vào hồ sơ của mình những thuật ngữ to tát, hoặc hoàn thiện chương trình học của mình. Tất cả những lí do trên đều có thể trở thành mục tiêu của bạn. Nhưng trên hết, bạn cần phải biết mình cần gì, và hãy học tập phục vụ cho điều đó.

Bạn nên xác định rõ mình sẽ làm gì trước khi học lập trình - Ảnh: ST

Bạn nên xác định rõ mình sẽ làm gì trước khi học lập trình – Ảnh: ST

Không có gì là bí ẩn về lập trình
Lập trình cũng là một kỹ năng, giống như những việc khác. Giống như việc học ngoại ngữ, lập trình viên cũng phải học những mệnh đề ngữ pháp và từ vựng. Lập trình cũng giống như toán, các bạn sẽ phải theo các bước trong quy trình để giải một đề bài.

Không có gì chạy ngay từ lần thử đầu tiên
… và chưa chắc đã chạy trong lần thứ hai hoặc thứ 3

Khi bạn mới học lập trình, bạn sẽ gặp phải tính huống sau: bạn nghĩ rằng tất cả các dòng code đều hoàn hảo và bạn đã kiểm tra kỹ tất cả mọi thứ, nhưng code của bạn không hề chạy! Bạn không biết bắt đầu từ đâu để sửa, và những dòng thông báo (nếu may mắn chúng sẽ được hiện lên màn hình) khó hiểu. Bạn có thể nghĩ tới việc từ bỏ tại đây, bạn nghĩ rằng sẽ không bao giờ có thể tìm ra câu trả lời, bạn không thể có lời giải.

Không phải lúc nào code cũng chạy - Ảnh: ST

Không phải lúc nào code cũng chạy – Ảnh: ST

Nhưng điều này rất phổ biến với lập trình viên ở bất kỳ trình độ nào. Nó không phản ánh trí tuệ của bạn, cũng như ảnh hướng tới khả năng khám phá công nghệ cũng như cuộc đời lập trình sau này của bạn. Điều này sẽ xảy ra thường xuyên với những người mới, và cả với những lập trình viên chuyên nghiệp. Sự khác biệt thực sự lại là cách mà mọi người xử lí nó.

Một điểm khác biệt giữa những lập trình ít kinh nghiệm và những người lâu năm trong nghề khi gặp khó khăn là niềm tin. Niềm tin vào việc bản thân họ sẽ tìm ra được cách khắc phục cũng như tìm ra điều chưa đúng trong dòng code. Họ cũng tin rằng sẽ có nhiều hơn một cách để thực hiện mục tiêu. Giải pháp để biến những dòng code vô dụng thành hữu ích có thể không rõ ràng, những với sự kiên trì, họ sẽ tìm ra.

Sẽ có ai đó luôn luôn nói rằng những gì bạn làm là sai
Những tranh cãi xung quanh việc dùng dấu ngoặc nhọn ( } ) ở cuối dòng lệnh hay ở đầu dòng tiếp theo sẽ diễn ra liên miên. Việc này cũng xảy ra với việc dùng phím tab để lùi vào khi viết code. Đôi khi bạn cũng bị cuốn vào những tranh cãi trái chiều dạng như “phải comment cho từng hàm khi viết code” và “code tốt là không cần dùng comment”.

Có rất nhiều phong cách trình bày code, bạn có thể chọn lấy cách phù hợp với mình - Ảnh: ST

Có rất nhiều phong cách trình bày code, bạn có thể chọn lấy cách phù hợp với mình – Ảnh: ST

Tất cả những tranh cãi, lời khuyên này đều sẽ làm phiền bạn. Nhưng thực sự thì không bao giờ có một chuẩn mực rõ ràng cho việc lập trình. Rất nhiều lập trình viên đã lựa chọn cách làm việc mà họ cảm thấy phù hợp nhất với mình, nhưng đó chưa chắc đó đã là con đường duy nhất. Việc đối mặt với nhiều người trong nghề và nghe những nhận xét đúng sai của họ về việc lập trình của bạn là một việc vô cùng vất vả khi bạn bắt đầu sự nghiệp.

Nếu bạn làm trong một nhóm lập trình, sẽ có một vài người sẽ gặp phải khó khăn khi tiếp nhận các dòng code từ bạn. Đôi khi họ đúng, những cũng có khi, họ rất cổ hủ và bắt bạn phải sửa theo cách viết của cả nhóm.

Sẽ có những người nhận xét bạn không phải là lập trình viên thực thụ
Viết HTML không phải là lập trình!
Nếu bạn không dùng vi, bạn không biết cách lập trình đúng nghĩa.
Những lập trình viên thực thụ sẽ chỉ dùng C.
Windows không phải nơi để lập trình.
Những thứ này không phải dành cho tất cả mọi người.
Cậu không phải thể trở thành lập trình viên!!!
Lập trình có ý nghĩa khác nhau với những người khác nhau, và bản thân công việc lập trình cũng đã khác rất nhiều so với thời điểm nó mới xuất hiện. Điều nực cười là rất nhiều công cụ, nền tảng được tạo ra để giúp cho những người mới học lập trình hoặc những lập trình viên lão luyện tạo ra sản phẩm nhanh hơn đều bị gán cho nhãn “không dành cho lập trình viên đích thực”.

Comment hay không comment, đó là lựa chọn của bạn - Ảnh: ST

Comment hay không comment, đó là lựa chọn của bạn – Ảnh: ST

Có thể thấy ở đây là sự sợ hãi của những lập trình viên. Khi ai cũng có thể dễ dàng tiếp cận với ngôn ngữ lập trình và tự tạo sản phẩm, cũng như tự gọi mình là người lập trình, thì sẽ không còn ai là lập trình viên nữa. Nhưng có lẽ, rào cản về kiến thức này đã bị phá bỏ từ rất lâu rồi.

Hãy sử dụng những công cụ giúp bạn dễ dàng xây dựng sản phẩm bạn mong muốn. Sẽ không phải xấu hổ nếu bạn nói trò chơi bạn làm ra được dựng trong Stencuyl hoặc GameMaker chứ không phải được viết từ đầu. Hãy lựa chọn cho mình môi trường và công cụ mà bạn cảm thấy thoải mái và có thể gắn bó với nó.

Hãy kiên trì với việc lập trình
Không có bất cứ tài liệu nào có thể chỉ cho bạn con đường đúng hoặc nhanh nhất để nắm vững kiến thức lập trình. Có rất nhiều cách để có thể học, và thực hành. Bạn có thể học những khái niệm đầu tiên từ sách hoặc những bài học trực quan trên mạng, hoặc có thể bắt đầu ngay bằng việc sửa lỗi sai của người khác. Và tất nhiên, có rất nhiều ngôn ngữ cho bạn lựa chọn để bắt đầu.

Một vấn đề khá phổ biến khi các bạn tự học lập trình, đó là các bạn sẽ dễ dàng vượt qua những phần đơn giản, nhưng sẽ gặp khó khăn tại những phần rất quan trọng sau đó. Bạn có thể biết cách in một vài dòng lên màn hình, nhưng không thể làm việc được với những dự án thật. Bạn sẽ bắt đầu cảm thấy mất phương hướng và đổ lỗi cho giáo trình.



Ngày nay việc học đã không còn khó khăn – Ảnh: ST

Khi bạn gặp phải tình huống này, tất cả những giáo trình trực tuyến hay tài liệu đều trở nên vô dụng, vì những viết ra nó đều mặc định rằng, bạn đã có kinh nghiệm trong lập trình. Việc khó khăn tiếp theo là bạn sẽ phải tìm ra thứ mình cần phải học tiếp, trong khi bạn không thể biết cái mà bạn không biết.

Bạn sẽ vấp phải trở ngại này khi học lập trình ở bất kỳ đâu, còn cách giải quyết nó, là hãy tiếp tục kiên trì với việc lập trình. Hãy tiếp tục tìm kiếm những điều mới mẻ xung quanh những thứ đã học, thu nạp thêm thông tin, và tự tay xây dựng những ứng dụng của riêng mình. Bạn sẽ dễ dàng tìm được thành công nếu như bạn biết rõ mục tiêu học lập trình của mình là gì.

Thành công sẽ đến với bạn nếu bạn kiên trì xây từng viên gạch lên bức tường của mình. Nếu bạn kiên trì và dành thời gian để tìm hiểu nó, việc lập trình sẽ dễ dàng bị bạn chinh phục.

Cecily Carver
Read more
no image



sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

Automated installation (auto accept license)

echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections

Read more
Bữa ăn công nghệ


Dù là món gì hay là nơi đâu, chỉ cần vài cái chạm tay nhẹ bạn đã có một bữa ăn yêu thích của chính mình! Ứng dụng foodpanda là lựa chọn tốt nhất dành cho bạn!
Ứng dụng miễn phí foodpanda cho android đảm bảo bữa ăn của bạn được giao tận nơi nhanh chóng và còn nồng nàn hương vị.
Chưa bao giờ việc chọn món lại tiện lợi và dễ dàng đến như vậy, chỉ cần nói nơi bạn đang ở Foodpanda sẽ liệt kê những nhà hàng sẵn sàng giao thức ăn đến cho bạn.







Sau khi đặt hàng bạn sẽ được xác nhận thông tin từ tin nhắn của điện thoại với thời gian giao hàng và thông tin chi tiết.
Ngoài ra, bạn còn nhận được nhiều ưu đãi đặc biệt từ Foodpanda




TÍNH NĂNG CHÍNH CỦA ỨNG DỤNG:

Đặt thức ăn nhanh chóng từ gần 400 nhà hàng một cách nhanh chóng và tiện lời nhất
Xem tất cả menu nhà hàng gần nơi bạn ở cùng với khuyễn mãi
Chương trình voucher của Foodpanda giúp bạn tiết kiệm chi phí
Ghi nhớ nhiều địa chỉ cho việc bạn chọn bữa ăn nhanh hơn
Nhớ món ăn yêu thích của bạn cho lần lựa chọn sau


Tải ngay
Read more
21 năm nhìn lại cuộc đời



Ngoảnh nhìn lại cuộc đời như giấc mộng
Được mất bại thành bỗng chốc hóa hư không

Lại một mùa xuân nữa sắp tới rồi, bao năm xa quê lên thành phố học hành, nhớ mẹ già mòn mỏi chờ con. Nhà nghèo nên tương lai chẳng ra chi, tìm trong men say quên hết ưu phiền, tuổi chập chừng gần nửa đời trai, mà vẫn mang phận kiếp nghèo, không bạc tiền, không có tương lai. Thời gian ơi mong sao tương lai tôi ngời sáng, mang cái no lo cho cái nghèo, giúp gia đình bớt gian truân.

Nhìn lại cuộc đời, mình đã có được cái gì nào? Nhìn lại cuộc đời, ước mơ một ngày vươn tới muôn vì sao.

Đôi khi tôi thấy cuộc thấy cuộc đời thật đẹp, tôi tìm được niềm vui trong công việc tôi làm, tôi làm việc không mệt mỏi. Niềm đam mê thôi thúc tôi làm việc. Cũng nhờ thế tôi đã đạt được không ít thành quả khiến cho những nguời xung quanh rất thán phục.

Nhưng rồi một ngày, tôi cảm thấy quá căng thẳng, bởi hầu như công việc cứ liên tục tiếp diễn,không có điểm dừng. Bất kì vấn đề nào tôi cũng muốn quan tâm đến bằng tất cả nhiệt huyết, song có những điều xảy ra không theo ý muốn của tôi.

Tôi không thể lí giải được điều gì đang xảy đến với mình. Nhiều đêm không ngủ, mọi nghĩ suy trăn trở trong tôi chỉ xoay quanh câu hỏi : ”Tại sao?”. Tại sao có những sự việc tôi chắc chắn nó sẽ diễn biến như thế, nhưng cuối cùng không thể làm tôi hài lòng?. Sự tự tin trong tôi không mất đi, nhưng tôi không tìm ra đâu là hướng đi đúng.

Những khi ngồi lại một mình ,trong tôi lại xuất hiện những suy nghĩ mâu thuẫn. Tôi chợt thấy mình là một người xa lạ - một người mà chính tôi cũng không thích - nhưng cái tôi của tôi đã ngăn cản không cho tôi nhìn rõ và thừa nhận điều đó. Những mâu thuẫn nội tại cùng với các sự cố không thể khắc phục được trong cuộc sống đã khiến tôi trở nên trầm lặng hẳn. Tuy nhiên, trong thâm tâm, tôi biết đó chỉ là một sự “tự vệ” tạm thời, chứ không phải là bản chất thật luôn hướng ngoại, tích cực của mình.
Nhưng dần dần, tôi nhận ra vấn đề đã trở nên nghiêm trọng hơn tôi tưởng: Sự sáng tạo và năng động vốn có trong tôi đã giảm đi rất nhiều. Từ lúc nào không hay, tôi đã mắc phải chứng trầm cảm - hậu quả của những đêm dài không ngủ,trăn trở nghĩ suy. Tôi không biết phải khắc phục, tự điều chỉnh như thế nào hoặc phải bắt đầu lại từ đâu?.

“Mình đang thật sự cần điều gì đây? - Tôi trăn trở - Liệu mình có đòi hỏi quá nhiều không, khi vừa muốn được thành công, lại cũng vừa muốn tìm kiếm sự bình yên và hạnh phúc trong tâm hồn? Không biết có ai đó cùng lúc đạt được cả hai điều này không? Nếu có thì người đó quả thật may mắn vì có được một cuộc sống trọn vẹn như vậy!”.

Ngày hôm qua, với những sai lầm, những tội lỗi, những thiếu sót nhớ nhẩn, sự nhức nhối và những khổ đau. Ngày hôm qua đã ra đi. Mọi tiền bạc trên đời này cũng không thể đem ngày hôm qua quay trở lại. Chúng ta không thể nào hủy bỏ một hành động mà chúng ta đã làm và cũng không thể xóa đi một ngôn từ mà chúng ta đã thốt ra. Ngày hôm qua đã đi xa rồi!

Ngày mai với những rủi ro bất trắc, những gánh nặng cuộc sống bên cạnh những hứa hẹn tràn trề hy vọng. Mặt trời của ngày mai sẽ mọc lên chói lọi hay khuất sau một đám mây, nhưng dù gì nó vẫn sẽ mọc lên. Và ngay trước khi nó mọc lên vào ngày mai, chúng ta vẫn chẳng có mối đe dọa nào ở hiện tại, bởi lẽ nó vẫn chưa được sinh ra kia mà!

Ngày Hôm Nay!. bất cứ ai cũng đều phải đấu tranh để sống dù chỉ một ngày!.

Thật ra chẳng phải những gì trải qua ngày hôm nay khiến người ta phát rồ, mà chính là sự hối tiếc về những gì đã xảy ra ngày hôm qua và nỗi sợ hãi, lo lắng về những gì ngày mai có thể đến.

Cuộc đời cũng giống như 1 chuyến đi trên tàu: Người người lên lên xuống xuống, có khi gặp phải tai nạn. Ở trạm này, ta gặp điều ngạc nhiên, ở trạm kia ta gặp nỗi u buồn.

Khi ta ra đời và lên tàu, ta gặp nhiều người và ngỡ rằng họ sẽ ở với mình suốt cuộc hành trình: Đấy chính là cha mẹ mình.

Đau đớn thay sự thật lại khác hẳn!

Một ngày họ sẽ xuống 1 sân ga dọc đường và để ta lại thiếu vắng tình yêu và lòng trìu mến của họ, và sự hiện diện của họ cạnh mình. Và rồi, cũng có những người khác lên tàu và trở thành rất quan trọng đối với mình.

Có người xem cuộc hành trình như 1 chuyến rong chơi.

Có người cảm thấy u sầu suốt cuộc hành trình.

Có người luôn hiện diện và sẵn sàng giúp đỡ những ai cần đến họ.

Có người khi xuống tàu để lại cho mình nỗi nhớ khôn nguôi.

Có người vừa lên đã xuống và ta chỉ đủ thời gian để thoáng thấy họ thôi.

Ta ngỡ ngàng vì nhiều hành khách mà mình mến thương lại ngồi trên 1 toa xe khác và họ để ta bơ vơ 1 mình trong suốt cả chuyến đi. Dĩ nhiên, không ai có thể ngăn cản ta đi tìm họ khắp nơi trên con tàu.

Buồn thay, đôi khi ta không thể ngồi cạnh họ vì chổ ấy đã có người!

Không sao đâu…cuộc hành trình thì như thế đó: Đầy thách thức, ước mơ, hy vọng, chia tay…mà không bao giờ quay lại. Ta hãy cố thực hiện hành trình 1 cách tốt đẹp nhất.

Hãy thông cảm cho những người cùng đi với mình và hãy tìm những điều tốt lành nhất trong từng người một, bất cứ lúc nào trong chuyến đi, 1 người bạn đồng hành cũng có thể chới với và cần ta thông cảm……….và lúc nào cũng có 1 ai đó thông cảm mình.

Read more
no image



Theo mô hình phát triển phần mềm hiện đại, để khắc phục tình trạng chương trình đã viết xong, nhưng khi chạy trên môi trường sản phẩm thì lỗi tùm lùm, hệ thống không thực sự ổn định, thì các master dev đã đưa ra mô hình TDD (Test-Driven Development) – hiểu nôm na là: viết test trước rồi viết code để ‘pass test’ sau. Người truyền cảm hứng để TDD phát triển và được ứng dụng rộng như ngày hôm nay có thể nhắc đến Kent Beck, với tư tưởng về mô hình thiết kế sản phẩm đơn giản.


Vậy TDD dùng làm gì? và viết nó như thế nào?

Thử nghiệm viết TDD (viết TestCase), bạn có thể dễ dàng thấy nó giống như một loại documentation cho các class, method trong dự án. Thông qua TestCase, những người khác có thể hiểu được tiến trình xử lý, chức năng đoạn mã của bạn cần hiện thực mà không phải vất vả đọc lại những đoạn mã khô khan và đôi khi chứa những giải thuật đọc mãi cũng đích ra.


Quy trình viết TDD:

1. Viết TestCase cho tính năng, hàm xử lý mà bạn chuẩn bị viết code. Nghĩ về Input và Output, tự biến mình thành thằng đần độn ^^. Xong. Chạy TestCase -> chắc chắn phải fail, chưa ra fail thì quay lại kiểm tra TestCase viết có đúng chính tả không, ra pass thì bạn quả là vãi…(chưa có code mà pass được case là sao?)

2. Viết code ở mức tối giản nhất để vừa đủ pass TestCase trên. Xong thì sang bước 3, TestCase mà vẫn fail thì ngắm nghĩa code, nếu nhận ra TestCase mình viết như thằng điên thì quay lại sửa TestCase. Sai thì sửa có gì đâu mà ngại :) )

3. Lặp lại bước 1, 2 cho những Case mới cần hiện thực.

Nhìn qua quy trình thì có vẻ chúng ta phải chiến đấu như 1 cái máy. Oh, không hẳn vậy,  nó như viết văn, thơ ấy mà. Vừa code vừa sáng tác, đời developer sẽ vui hơn rất nhiều mà không nhàm chán.

Ví dụ: cần viết 1 case về quy trình đăng nhập trên website

TestCase: [Login]

- “Anh đến địa chỉ nhà em” -> http://abc.xyz

- “Anh mở cửa nhưng hình như cửa khóa” -> redirect auto login.html

- “Nhìn kĩ anh thấy có tin nhắn em viết trên cửa với hàng chữ anhcuvaodi và ****** nhớ ENTER” -> input data và submit button login

- “Cửa mở và…” -> redirect home.html

(Tùy theo loại ngôn ngữ, framework mà bạn sử dụng để hiện thực cái TestCase trên nhé)

Trên đây chỉ là chút cảm hứng cá nhân mình khi áp dụng Test-Driven Development vào dự án ở công ty. Để hiểu rõ hơn và sâu hơn về cách triển khai TDD, mời bạn ghé thăm bác Gulờ. Goodbye! See You Again.

À quên kết luận: TDD dễ hay khó tùy thuộc vào chính bạn ^^

Read more

Quảng cáo