background img

Dedicated to Google and Google products. Curated by Karmi Phúc.

Showing posts with label programming. Show all posts
Showing posts with label programming. Show all posts
Dojo.
Coding Dojo là chuỗi sự kiện quy mô lớn về lập trình được đồng tổ chức vào thứ 7 hàng tuần bởi Google Developer Group Hanoi và FPT Aptech Hanoi. Coding Dojo mang sứ mệnh nâng cao kỹ năng tư duy, khả năng giải quyết vấn đề của lập trình viên đồng thời hướng tới sự phát triển vững mạnh của cộng đồng công nghệ Việt Nam. Coding Dojo là nơi mà nhóm các nhà phát triển (developer) cùng nhau vượt qua một thử thách trong lập trình, họ tham gia vào hoạt động thực hành có chủ ý với mục tiêu cải tiến một kỹ năng nào đó của mình trong không khí vui vẻ.

Tại sao cần Coding Dojo?

Rất nhiều người làm việc hàng giờ với hy vọng sẽ giỏi lên. Thông thường khi chúng ta tập luyện với khối lượng lớn thì sẽ tiến bộ. Nhưng sự tiến bộ này là chậm hơn đáng kể so với khi thực hành có chủ ý. Khi thực hành có chủ ý, người tham gia chủ ý cải tiến từng kỹ năng, họ không chịu những áp lực công việc có hại cho quá trình học tập (như áp lực về thời gian, và các mối quan hệ).

Ở Coding Dojo các nhà phát triển tập trung vào những nguyên lý và kỹ năng căn bản của lập trình và thiết kế hướng đối tượng. Các kata (bài tập – thử thách) và quy tắc được thiết kế để giúp các thành viên tập trung cải thiện kỹ năng đó.

Bởi những điều trên mà năm 2004 mà Paris Dojo đã ra đời và Coding Dojo cùng rất nhiều những hoạt động khác như Coderetreat tương tự đã trở nên rất phổ biến. Và hưởng ứng phong trào ấy năm 2010, CocoDojo đã ra đời.

Đặc điểm:
  • Không cạnh tranh, cộng tác, vui vẻ
  • Mọi trình độ kỹ năng đều nên tham gia
  • Thoải mái đề xuất, thử ý tưởng mới
  • Hoàn toàn miễn phí
8 Nguyên tắc khi tham gia:
1. Nguyên tắc đầu tiên
Tại võ đường (dojo) bạn không thể thảo luận về một giao diện mà không có mã nguồn, và bạn không thể đưa ra mã nguồn mà không có kiểm thử. Coding Dojo được thiết kế như một phòng tập nơi mà "mã nguồn chính là bản thiết kế" và không tồn tại những đoạn mã nguồn mà không được kiểm thử.

2. Tìm kiếm một chuyên gia
Không có chuyên gia của mọi vấn đề. Tôi có thể làm việc tốt với các hàm đệ qui và xử lý danh sách, v.v.. Nhưng tôi nghĩ mình không biết các tạo ra được một ứng dụng web đơn giản. May mắn thay, trong khi đây là lần đầu tiên một số học viên ở đây thực sự đối phó với "đệ qui-đuôi"(tail-recursion), nhưng vài người trong số họ đã làm các chuyên gia trong ứng dụng web nhiều năm qua.

3. Hãy đến dù bạn không có gì của riêng bạn
Tất nhiên bạn có cách làm. Bạn biết tại sao và cách để mã nguồn này tốt hơn mã nguồn kia. Bạn đã hoàn thành mã nguồn này. Vậy thì hãy đến Coding Dojo để giải thích cho mọi người và chia sẻ điều mà bạn học được.

4. Học lại
Để có thể học lại điều gì đó, chúng ta phải quên nó đi trước. Nhưng không dễ để quên khi mà bạn ở một mình. Việc này sẽ dễ hơn khi chúng ta tập trung toàn bộ sự chú ý cho một người đang cố gắng học nó lần đầu tiên. Chúng ta có thể học từ sai lầm của người khác cũng như là khi chúng ta học từ chính sai lầm của chúng ta vậy.

5. Chậm lại
Việc học tập nên thực hiện thật chậm. Bạn có thể làm nhanh khi đã có kinh nghiệm, nhưng bạn không thể học và trau dồi kinh nghiệm cùng lúc. Không sao, chúng ta không vội vàng.

6. Nhập tâm
Khi từ ai đó mới bắt đầu một lĩnh vực và muốn tiếp cận lĩnh vực khác. Thì họ bị đe dọa bở sự nhàm chán. Vậy hay đặt mục tiêu trinh phục độ khó cao hơn để lấy lại động lực cho mình.

7. Hãy hỏi chuyên gia
Thật là khó khăn cho bạn, khi tìm sự trợ giúp của những người giàu kinh nghiệm, họ có thể đánh giá mã nguồn của bạn và cho bạn thấy được những điều mới mẻ. Hãy hỏi đến khi bạn không còn khó khăn nữa.

8. Chuyên gia một lĩnh vực
Nếu điều đó dễ với bạn, hãy giải thích nó cho những người đang gặp khó khăn. Hãy giải thích chừng nào họ còn cảm thấy khó khăn với nó.

Việc tiếp thu các kĩ năng lập trình phải là một quá trình liên tục.

Mọi thông tin chi tiết xin tham khảo tại:
Facebook: https://www.facebook.com/GDGhanoi
Website: www.gdgvietnam.org
Email : communication@gdgvietnam.org
Phone : 0162-6072-371 ( Ngọc – Manager)

Source: http://www.tinhte.vn/threads/coding-dojo-khai-pha-tiem-nang-lap-trinh-vien.2271910/#post-41533419

Coding Dojo – Khai phá tiềm năng lập trình viên

Dojo.
Coding Dojo là chuỗi sự kiện quy mô lớn về lập trình được đồng tổ chức vào thứ 7 hàng tuần bởi Google Developer Group Hanoi và FPT Aptech Hanoi. Coding Dojo mang sứ mệnh nâng cao kỹ năng tư duy, khả năng giải quyết vấn đề của lập trình viên đồng thời hướng tới sự phát triển vững mạnh của cộng đồng công nghệ Việt Nam. Coding Dojo là nơi mà nhóm các nhà phát triển (developer) cùng nhau vượt qua một thử thách trong lập trình, họ tham gia vào hoạt động thực hành có chủ ý với mục tiêu cải tiến một kỹ năng nào đó của mình trong không khí vui vẻ.

Tại sao cần Coding Dojo?

Rất nhiều người làm việc hàng giờ với hy vọng sẽ giỏi lên. Thông thường khi chúng ta tập luyện với khối lượng lớn thì sẽ tiến bộ. Nhưng sự tiến bộ này là chậm hơn đáng kể so với khi thực hành có chủ ý. Khi thực hành có chủ ý, người tham gia chủ ý cải tiến từng kỹ năng, họ không chịu những áp lực công việc có hại cho quá trình học tập (như áp lực về thời gian, và các mối quan hệ).

Ở Coding Dojo các nhà phát triển tập trung vào những nguyên lý và kỹ năng căn bản của lập trình và thiết kế hướng đối tượng. Các kata (bài tập – thử thách) và quy tắc được thiết kế để giúp các thành viên tập trung cải thiện kỹ năng đó.

Bởi những điều trên mà năm 2004 mà Paris Dojo đã ra đời và Coding Dojo cùng rất nhiều những hoạt động khác như Coderetreat tương tự đã trở nên rất phổ biến. Và hưởng ứng phong trào ấy năm 2010, CocoDojo đã ra đời.

Đặc điểm:
  • Không cạnh tranh, cộng tác, vui vẻ
  • Mọi trình độ kỹ năng đều nên tham gia
  • Thoải mái đề xuất, thử ý tưởng mới
  • Hoàn toàn miễn phí
8 Nguyên tắc khi tham gia:
1. Nguyên tắc đầu tiên
Tại võ đường (dojo) bạn không thể thảo luận về một giao diện mà không có mã nguồn, và bạn không thể đưa ra mã nguồn mà không có kiểm thử. Coding Dojo được thiết kế như một phòng tập nơi mà "mã nguồn chính là bản thiết kế" và không tồn tại những đoạn mã nguồn mà không được kiểm thử.

2. Tìm kiếm một chuyên gia
Không có chuyên gia của mọi vấn đề. Tôi có thể làm việc tốt với các hàm đệ qui và xử lý danh sách, v.v.. Nhưng tôi nghĩ mình không biết các tạo ra được một ứng dụng web đơn giản. May mắn thay, trong khi đây là lần đầu tiên một số học viên ở đây thực sự đối phó với "đệ qui-đuôi"(tail-recursion), nhưng vài người trong số họ đã làm các chuyên gia trong ứng dụng web nhiều năm qua.

3. Hãy đến dù bạn không có gì của riêng bạn
Tất nhiên bạn có cách làm. Bạn biết tại sao và cách để mã nguồn này tốt hơn mã nguồn kia. Bạn đã hoàn thành mã nguồn này. Vậy thì hãy đến Coding Dojo để giải thích cho mọi người và chia sẻ điều mà bạn học được.

4. Học lại
Để có thể học lại điều gì đó, chúng ta phải quên nó đi trước. Nhưng không dễ để quên khi mà bạn ở một mình. Việc này sẽ dễ hơn khi chúng ta tập trung toàn bộ sự chú ý cho một người đang cố gắng học nó lần đầu tiên. Chúng ta có thể học từ sai lầm của người khác cũng như là khi chúng ta học từ chính sai lầm của chúng ta vậy.

5. Chậm lại
Việc học tập nên thực hiện thật chậm. Bạn có thể làm nhanh khi đã có kinh nghiệm, nhưng bạn không thể học và trau dồi kinh nghiệm cùng lúc. Không sao, chúng ta không vội vàng.

6. Nhập tâm
Khi từ ai đó mới bắt đầu một lĩnh vực và muốn tiếp cận lĩnh vực khác. Thì họ bị đe dọa bở sự nhàm chán. Vậy hay đặt mục tiêu trinh phục độ khó cao hơn để lấy lại động lực cho mình.

7. Hãy hỏi chuyên gia
Thật là khó khăn cho bạn, khi tìm sự trợ giúp của những người giàu kinh nghiệm, họ có thể đánh giá mã nguồn của bạn và cho bạn thấy được những điều mới mẻ. Hãy hỏi đến khi bạn không còn khó khăn nữa.

8. Chuyên gia một lĩnh vực
Nếu điều đó dễ với bạn, hãy giải thích nó cho những người đang gặp khó khăn. Hãy giải thích chừng nào họ còn cảm thấy khó khăn với nó.

Việc tiếp thu các kĩ năng lập trình phải là một quá trình liên tục.

Mọi thông tin chi tiết xin tham khảo tại:
Facebook: https://www.facebook.com/GDGhanoi
Website: www.gdgvietnam.org
Email : communication@gdgvietnam.org
Phone : 0162-6072-371 ( Ngọc – Manager)

Source: http://www.tinhte.vn/threads/coding-dojo-khai-pha-tiem-nang-lap-trinh-vien.2271910/#post-41533419

Facebook_Hack.

Facebook mới đây đã giới thiệu một ngôn ngữ lập trình mới có khả năng đẩy nhanh tốc độ viết cũng như kiểm tra các phần mềm. Với tên gọi Hack, ngôn ngữ đã được nội bộ Facebook sử dụng hơn một năm nay và bây giờ hãng đưa nó thành một chuẩn mở cho mọi người cùng xài. Được biết Hack là sự kết hợp giữa các yếu tố của ngôn ngữ lập trình tĩnh như C với những ngôn ngữ động như PHP. Với ngôn ngữ tĩnh, trình biên tập sẽ giúp bạn biết được nhiều lỗi trong mã nguồn trước khi chạy nên an toàn và đảm bảo hơn, còn với những ngôn ngữ động thì bạn phải chạy phần mềm lên rồi mới biết mình gặp lỗi gì mặc dù nó cho phép chúng ta viết code nhanh hơn.

Vậy là Hack ra đời như một sự dung hòa giữa cả hai yếu tố nói trên. Nó sẽ báo cho bạn biết khi nào mã nguồn của bạn bị viết sai thông qua một server trong máy nội bộ (như hình ảnh đầu bài), chúng ta không cần phải đưa code lên server chạy như PHP rồi dò lỗi. Trong quá trình viết, tag <?php mà bạn thường dùng được thay bằng tag <?hh. Và nếu bạn đã tạo ra những file PHP thì môi trường chạy với tên gọi "HHVM" vẫn có thể biên dịch cả ngôn ngữ PHP lẫn Hack nên sẽ không lo về vấn đề tương thích.

Bryan O'Sullivan, trưởng nhóm Hack, cho biết rằng bản thân Facebook được viết dựa trên PHP, nhưng khi nhiều lập trình viên của công ty cùng làm việc trên nhiều dựa án thì việc tìm ra lỗi trước khi chạy dần trở nên cần thiết hơn. Hack sẽ giúp rút ngắn thời gian, tiết kiệm chi phí viết phần mềm, bất kể đó là một dự án lớn hay nhỏ. Tuy nhiên, O'Sullivan nhấn mạnh rằng Hack sẽ không ảnh hưởng đến tốc độ chạy của mã nguồn (và tốc độ chạy phần mềm nói chung), nó chỉ giúp ích cho quá trình phát triển mà thôi.

Nguồn: Facebook

Source: http://www.tinhte.vn/threads/facebook-gioi-thieu-ngon-ngu-lap-trinh-hack-giup-viet-phan-mem-nhanh-hon.2273120/

Facebook giới thiệu ngôn ngữ lập trình "Hack" giúp viết phần mềm nhanh hơn

Facebook_Hack.

Facebook mới đây đã giới thiệu một ngôn ngữ lập trình mới có khả năng đẩy nhanh tốc độ viết cũng như kiểm tra các phần mềm. Với tên gọi Hack, ngôn ngữ đã được nội bộ Facebook sử dụng hơn một năm nay và bây giờ hãng đưa nó thành một chuẩn mở cho mọi người cùng xài. Được biết Hack là sự kết hợp giữa các yếu tố của ngôn ngữ lập trình tĩnh như C với những ngôn ngữ động như PHP. Với ngôn ngữ tĩnh, trình biên tập sẽ giúp bạn biết được nhiều lỗi trong mã nguồn trước khi chạy nên an toàn và đảm bảo hơn, còn với những ngôn ngữ động thì bạn phải chạy phần mềm lên rồi mới biết mình gặp lỗi gì mặc dù nó cho phép chúng ta viết code nhanh hơn.

Vậy là Hack ra đời như một sự dung hòa giữa cả hai yếu tố nói trên. Nó sẽ báo cho bạn biết khi nào mã nguồn của bạn bị viết sai thông qua một server trong máy nội bộ (như hình ảnh đầu bài), chúng ta không cần phải đưa code lên server chạy như PHP rồi dò lỗi. Trong quá trình viết, tag <?php mà bạn thường dùng được thay bằng tag <?hh. Và nếu bạn đã tạo ra những file PHP thì môi trường chạy với tên gọi "HHVM" vẫn có thể biên dịch cả ngôn ngữ PHP lẫn Hack nên sẽ không lo về vấn đề tương thích.

Bryan O'Sullivan, trưởng nhóm Hack, cho biết rằng bản thân Facebook được viết dựa trên PHP, nhưng khi nhiều lập trình viên của công ty cùng làm việc trên nhiều dựa án thì việc tìm ra lỗi trước khi chạy dần trở nên cần thiết hơn. Hack sẽ giúp rút ngắn thời gian, tiết kiệm chi phí viết phần mềm, bất kể đó là một dự án lớn hay nhỏ. Tuy nhiên, O'Sullivan nhấn mạnh rằng Hack sẽ không ảnh hưởng đến tốc độ chạy của mã nguồn (và tốc độ chạy phần mềm nói chung), nó chỉ giúp ích cho quá trình phát triển mà thôi.

Nguồn: Facebook

Source: http://www.tinhte.vn/threads/facebook-gioi-thieu-ngon-ngu-lap-trinh-hack-giup-viet-phan-mem-nhanh-hon.2273120/

Source panel - Chrome Dev Tools

1. Control the flow with Breakpoints

breakpoint is an intentional stopping or pausing place in a script, which was put in place for debugging purposes. When a breakpoint is reached, you can "step-through" the code line-by-line and see if things follow the right logic. This view also allows you to inspect the values of any variables to ensure they are what you expect them to be. A very frequent error is you try to use a variable, but it is undefined in the current flow. And thank to breakpoints, it is easy to trace back and see where the bug is.
There're 2 ways to set a breakpoint: manually clicking on the line-number in the Source tab of Chrome Dev Tools, or programmatically using the debugger; in your scripts.
After that, you can control the execution flow with these buttons:
 Continue: continues code execution until we encounter another breakpoint.
 Step over: step through code line-by-line to get insights into how each line affects the variables being updated. Should your code call another function, the debugger won't jump into its code, instead stepping over so that the focus remains on the current function.
 Step into: like Step over, however clicking Step into at the function call will cause the debugger to move its execution to the first line in the functions definition.
Step out: having stepped into a function, clicking this will cause the remainder of the function definition to be run and the debugger will move its execution to the parent function.
Toggle breakpoints: toggles breakpoints on/off while leaving their enabled states intact.
Pro tips:
1. Make sure you understand your codes and logic before using breakpoints.
2. 
Too many breakpoints is a very bad idea!
3. 
A detailed guide to use the breakpoints will be available in another post.

2. Master the console API

The Console API is a collection of methods, which was defined by Chrome Dev Tools. It can be accessed via the global console object, to log all kinds of information you need: a property value, an entire object, or even a DOM element. These information are displayed in the Console tab of Chrome Dev Tools.
While there're a lot of useful methods in the Console API, the below methods are definitely the most popular:

console.log

This method takes one or more expressions as parameters and writes their current values to the console.
Console.Log

console.dir

console.dir() displays all the properties of an object. You can also log an element's JavaScript representation.
Console.Dir

console.table

Display formatted information of arrays and objects as tables. Columns can be sorted, too.
Console.Table()

console.time

Using together with console.timeEnd() to start and stop a timer (identified by a string label). Time is logged in millisecond.
Console.Time

console.trace

Output a stack trace from the point where the method was called, including links to the specific lines in the script source. A blue counter on the left indicates the number of times that method was invoked at that point.
Console.Trace

3. De-minify or prettify your codes

Minified Javascript is intentionally made for machines, not for humans. But, sometimes, you have to dig in the minified codes to track down bugs. If you are reading in the Source tab of Chrome Dev Tools, a pretty printing option is available to make your life easier. Just click on the curly brace  ("Pretty Print") icon in the bottom left corner, the JavaScript is transformed into a more human readable form. This is more easy for debugging and setting breakpoints as well.
Before Pretty Print
After Pretty Print

4. Live edit scripts while running (locally)

Dev Tools allows you to edit script files and run them locally. Just clicking the file you want in the Resources tab, making modifications and Save/Save as with Ctrl+S.

Authored by Karmi Phúc. Reference: https://developers.google.com/chrome-developer-tools/

4 Tricks to debug Javascript with Google Chrome like a Pro

Source panel - Chrome Dev Tools

1. Control the flow with Breakpoints

breakpoint is an intentional stopping or pausing place in a script, which was put in place for debugging purposes. When a breakpoint is reached, you can "step-through" the code line-by-line and see if things follow the right logic. This view also allows you to inspect the values of any variables to ensure they are what you expect them to be. A very frequent error is you try to use a variable, but it is undefined in the current flow. And thank to breakpoints, it is easy to trace back and see where the bug is.
There're 2 ways to set a breakpoint: manually clicking on the line-number in the Source tab of Chrome Dev Tools, or programmatically using the debugger; in your scripts.
After that, you can control the execution flow with these buttons:
 Continue: continues code execution until we encounter another breakpoint.
 Step over: step through code line-by-line to get insights into how each line affects the variables being updated. Should your code call another function, the debugger won't jump into its code, instead stepping over so that the focus remains on the current function.
 Step into: like Step over, however clicking Step into at the function call will cause the debugger to move its execution to the first line in the functions definition.
Step out: having stepped into a function, clicking this will cause the remainder of the function definition to be run and the debugger will move its execution to the parent function.
Toggle breakpoints: toggles breakpoints on/off while leaving their enabled states intact.
Pro tips:
1. Make sure you understand your codes and logic before using breakpoints.
2. 
Too many breakpoints is a very bad idea!
3. 
A detailed guide to use the breakpoints will be available in another post.

2. Master the console API

The Console API is a collection of methods, which was defined by Chrome Dev Tools. It can be accessed via the global console object, to log all kinds of information you need: a property value, an entire object, or even a DOM element. These information are displayed in the Console tab of Chrome Dev Tools.
While there're a lot of useful methods in the Console API, the below methods are definitely the most popular:

console.log

This method takes one or more expressions as parameters and writes their current values to the console.
Console.Log

console.dir

console.dir() displays all the properties of an object. You can also log an element's JavaScript representation.
Console.Dir

console.table

Display formatted information of arrays and objects as tables. Columns can be sorted, too.
Console.Table()

console.time

Using together with console.timeEnd() to start and stop a timer (identified by a string label). Time is logged in millisecond.
Console.Time

console.trace

Output a stack trace from the point where the method was called, including links to the specific lines in the script source. A blue counter on the left indicates the number of times that method was invoked at that point.
Console.Trace

3. De-minify or prettify your codes

Minified Javascript is intentionally made for machines, not for humans. But, sometimes, you have to dig in the minified codes to track down bugs. If you are reading in the Source tab of Chrome Dev Tools, a pretty printing option is available to make your life easier. Just click on the curly brace  ("Pretty Print") icon in the bottom left corner, the JavaScript is transformed into a more human readable form. This is more easy for debugging and setting breakpoints as well.
Before Pretty Print
After Pretty Print

4. Live edit scripts while running (locally)

Dev Tools allows you to edit script files and run them locally. Just clicking the file you want in the Resources tab, making modifications and Save/Save as with Ctrl+S.

Authored by Karmi Phúc. Reference: https://developers.google.com/chrome-developer-tools/