New FAMILUG

The PyMiers

Wednesday 30 January 2013

Lập trình web app với API

Webapp là gì? đơn giản thì nó là 1 ứng dụng chạy trên nền web.
Còn app đấy làm gì thì chả ai quy định. Nếu tớ viết 1 trang cho phép nhập vào 2 số và in ra tổng của chúng thì cũng có thể gọi đấy là 1 webapp , nếu tớ muốn thế.

Khi các nhà cung cấp dịch vụ lớn như google, twitter, foursquare, yahoo, flick... cung cấp các API để lập trình viên có thể truy cập đến kho dữ liệu khổng lồ của họ, phần còn lại - dùng chúng thế nào sẽ chỉ còn giới hạn bởi trí tưởng tượng của mỗi người.

Kết nối wifi bằng dòng lệnh

UPDATED: lỗi format bài viết (phần nội dung file wpa)

NOTE1: bài viết này thực hiện trên ubuntu 12.04 LTS, các phiên bản khác chưa test. Nếu bạn thực hiện thành công trên các phiên bản khác, vui lòng gõ lệnh `lsb_release -a` paste và comment là đã thành công. Cám ơn!
NOTE: bài viết này đòi hỏi có hiểu biết cơ bản về interface, route.

Một trong những câu lệnh rất ít người biết cách dùng đó là lệnh để config mạng wifi, bởi Ubuntu luôn đi kèm với NetworkManager.

Trước hết cần phân biệt loại key mà mạng wireless đó đang sử dụng.
Nếu là WEP: có thể dùng iwconfig
Nếu là WPA: phải dùng wpa_supplicant

hvn@lappy: ~ () $ sudo iwlist wlan0 scan | egrep -i 'ssid|WPA|WEP'

Thursday 24 January 2013

"hack" view

Ngày xưa, hồi làm báo, chúng mình từng chơi trò auto-reload (addon của firefox) để tăng lượt view.
Ngày nay, chúng mình sẽ dùng code để làm điều này:

Giả sử link muốn tăng view là http://q.familug.org/questions/5101409c997be/em-muon-bai-nay-tang-view

Làm 1 vòng while, hay for tùy thích. Ở đây sẽ dùng while:

Đơn giản nhất là dùng bash + wget/curl

awk vs cut

mỗi tool sẽ chiến thắng trong trường hợp của nó:

Giả sử bạn muốn ghi ra các "cột" rời rạc, `awk` thường được ưa chuông hơn.

hvn@lappy: ~ $ awk -F : '{print $1,$3}' /etc/passwd
root 0
daemon 1
bin 2
sys 3
sync 4
games 5

hvn@lappy: ~ $ cut -d':' -f1,3 /etc/passwd
root:0
daemon:1
bin:2
sys:3
sync:4
games:5

output của `cut` có dấu ':'.

Tuesday 22 January 2013

Virtualization - công nghệ ảo hóa

TODO: 
  1. tut cài máy ảo bằng kvm 
  2. tut cài máy ảo bằng  virtualbox
Virtualization không phải là 1 khái niệm mới mẻ, nó đã tồn tại khá lâu, chiếm những vị trí rất quan trọng, thậm chí mang tính sống còn với nhiều doanh nghiệp :D

Virtualization là ảo hóa (trong bài này nói về việc cài đặt các máy ảo để sử dụng). Ở mức người dùng cá nhân, công nghệ này dường như không thực sự thu hút đối với người dùng. Bởi nếu cần có 2 hệ điều hành để chạy song song thì thường người ta sẽ cài luôn cả 2 hệ điều hành ấy để dual-boot. Trên linux cũng có các chương trình giả lập môi trường window để chạy các phần mềm window (wine).

Wednesday 16 January 2013

Cài đặt, cấu hình, quản trị mysql-server

Bài viết thực hiện trên :

➜ hvn@lappy  ~  uname -ir && lsb_release -d
3.2.0-30-generic x86_64
Description:    Ubuntu 12.04.1 LTS

Sau khi luyện xong các lệnh trong bài này, bạn có thể tự chạy và quản lý 1 mysql-server cho các sản phẩm của mình, hoàn toàn không cần dùng thêm phpmyadmin.

[Ideas] Sách / tài liệu miễn phí cho sinh viên

Ở đây mọi người đều là những sinh viên sắp không phải ôm sách ôm vở nữa. Sau khi học xong, sẽ còn lại 1 đống sách và tài liệu đã từng mua / được phát.
Thay vì bán đồng nát, tớ có ý tưởng gom hết vào rồi mang ra trường để, ai lấy thì lấy

- Ý tưởng: sách, vở, tài liệu không muốn giữ lại thì cho đi.
- Thực hiện:
Đang phân vân giữa các lựa chọn sau:

Tuesday 15 January 2013

[FMLnews] Tuần có sinh nhật Tùng Lâm

Aaron Swartz (tác giả của Reddit, webpy, đồng tác giả của RSS,...) đã qua đời ở tuổi 26
http://lessig.tumblr.com/post/40347463044/prosecutor-as-bully

1 bài bình luận về source của Doom 3, rất nhiều điều để học về coding style cho những ai dùng C và C++ 
http://kotaku.com/5975610/the-exceptional-beauty-of-doom-3s-source-code?post=56177550

Loạt bài Best way to learn .. cái j đó: http://net.tutsplus.com/sessions/the-best-way-to-learn/

Monday 14 January 2013

Định lượng thời gian ...

Có bao giờ bạn nghe thấy những câu hỏi kiểu như:
Học cái X hết bao lâu?

Tất nhiên câu trả lời sẽ có phần "tùy khả năng mỗi người", nhưng dù sao cũng phải có cái gì để người ta biết rằng bạn có thể học cái A nhanh hơn cái B, và nếu tốt hơn thì biết được mất bao lâu?

Sau đây tớ sẽ định lượng 1 số công việc thú vị mà bạn có thể tự học nếu cảm thấy thích:
- Mất khoảng 3 tiếng để bạn biết cách dùng Vim đúng cách (gõ vimtutor rồi làm hết tut trong ấy)
- Mất 1 tiếng để bạn biết viết những dòng CSS cơ bản http://www.w3schools.com/css/
- Mất 1 tiếng để bạn học được cách dùng 10 lệnh git cơ bản để có thể sử dụng git, github...
- Mất 1 tiếng để bạn biết JSON là cái của nợ gì, và biết dùng nó.

Friday 11 January 2013

Không nhớ được... thì in

Hôm nay mới nghĩ ra
kể cũng ngờ... thật :D

Nếu có cái gì mà khó nhớ
thì in ra
để ở chỗ cần xem là xong :D

Ví dụ như: cái này chẳng hạn

Tuesday 8 January 2013

[FFaddon] Replay video Youtube

addon Youtube Video Replay 3.0

là addon tớ đang dùng để replay các clip trên youtube. Chỉ đơn giản là cài nó vào, vào youtube bạn sẽ thấy 1 nút replay ngay cạnh nút dislike. 
Vậy là tha hồ nghe các bản nhạc hay mà ko đau tay bấm nút rồi :D
https://addons.mozilla.org/en-US/firefox/addon/youtube-video-replay/?src=search


[bash] cd đến thư mục vừa tạo

hvn@hvnatvcc: ~ $ mkdir -p hello/this/is/familug/dot/org
hvn@hvnatvcc: ~ $ cd !$
cd hello/this/is/familug/dot/org
hvn@hvnatvcc: ~/hello/this/is/familug/dot/org $ pwd
/home/hvn/hello/this/is/familug/dot/org

!$ là `yank-last-arg`


từ man bash:

       yank-last-arg (M-., M-_)
              Insert  the  last argument to the previous command (the last word of the previous history entry).  With a numeric argument, behave exactly like yank-nth-arg.  Successive calls to yank-last-arg move back through the history list, inserting the last  word  (or  the  word  specified  by the argument to the first call) of each line in turn.  Any numeric argument supplied to these successive calls determines the direction to move through the history.  A negative argument  switches  the  direction through  the  history (back or forward).  The history expansion facilities are used to extract the last argument, as if the "!$" history expansion had been specified.

[Ebooks] Learn The Hard Way

Các cuốn sách ở đây là những nguồn tài liệu rất tốt cho những ai tự học lập trình. Bắt nguồn từ sự thành công của cuốn Learn Python The Hard Way , tác giả đã sản xuất hàng loạt các cuốn sách khác cùng style với cuốn trên.  Các cuốn sách đều có thể xem online ở dạng HTML.
Với triết lý: "Less Talk, More Code", các cuốn sách này ngày càng trở nên nổi tiếng :D

Friday 4 January 2013

[Annou.] Chuyển navigator thành mục VhotVKool

Vị trí của navigator (xưa) và VHVK (nay) là nơi rất thu hút chú ý. Thế nên tớ sẽ đặt 1 cái kiểu như "quảng cáo" vào đấy.
Đầu tiên là tập phim tài liệu tên home (ai cũng nên xem) :D

Config apache2 để xem 1 trang web trong /home/xyz/

cái này tớ không định viết hẳn hoi, coi như ghi lại kinh nghiệm 1 ngày vò đầu bứt tóc. (và kết luận rút ra cũng không chắc chắn, không muốn test lại nữa)


Bài học:
Đừng bao giờ Alias đến 1 thư mục nào đó trong /home
hãy dev chán chê rồi cho nó vào /var/www/ hay đâu đó bạn thích,nhưng đừng là trong /home
Nếu muốn đặt web của mình trong home, hãy học dùng mod userdir http://httpd.apache.org/docs/2.2/mod/mod_userdir.html#userdir

Thursday 3 January 2013

Kích hoạt tính năng hỗ trợ 256 màu của GNOME terminal

Trong khi hì hục config i3 thì tớ thử cài urxvt và khám phá ra rằng : GNOME Terminal hỗ trợ 256 màu. Màu sắc hiện tại của terminal của tớ cũng khá đẹp (PROMT màu mè) nhưng có vẻ như nó được sử dụng triệt để.


thêm dòng này vào cuối file ~/.bashrc của bạn (hoặc ~/.zshrc)
export TERM="xterm-256color"
và trả nghiệm sự khác biệt:



Wednesday 2 January 2013

Cùng học ruby

Như bài viết trước vừa nói, tớ học ruby theo kiểu nhảy vào code vì bản thân RAM bé, ko hợp với kiểu nhồi sách rồi mới làm.

Cùng tên với rất nhiều topic trên các forum mạng, nhưng đây sẽ không phải kiểu kêu gọi, đăng ký và bỏ đấy :v

Mục tiêu của tớ là học ruby để config chef. Nhưng cái mục tiêu này hơi mơ hồ, vì thật ra tớ chưa dùng chef nên cũng không rõ phải học bao nhiêu, vậy nên mục tiêu đổi thành: học dùng các khái niệm thuộc core của ruby tương đương với python như list, dict, if else, for, while, viết function, viết class, cài đặt môi trường để code, sử dụng vài thư viện ...

Bạn cũng nên set 1 cái mục tiêu trước khi nhảy vào học: ví dụ như học ruby + ruby on rail để làm 1 cái blog cho bản thân, để giải 20 bài PE ... :v

Nội dung chính của post này:
- chia sẻ tài liệu
- giải thích thắc mắc
- chia sẻ kinh nghiệm

Ngày số 1:

Phút ngần ngại...


Có bao giờ, bạn muốn làm một việc gì đó ...
rồi bạn không làm nó ngay
nâng tầm quan điểm
làm như nó là 1 cái gì đó nghiêm túc, quan trọng lắm
và rồi phút hứng thú đi qua, bạn chẳng làm gì cả.

Tớ gọi đó là "phút ngần ngại" :v (nhà ngôn ngữ học thế kỷ 22 :v)
UPDATE: theo dự đóan từ hợp lý hơn có thể là "Rào cản tâm lý"
2 ví dụ:
1. Bạn nghĩ đến việc học đánh đàn
- bạn nâng tầm quan điểm : phải học đánh cho chuẩn, phải tập 2 tiếng một lần, blah blah...
- rồi bạn ngại.
cầu toàn là một lý do khiến bạn không làm được việc gì cả.
hình thức là lý do khiến bạn nhanh nhàm chán

2. Bạn nghĩ đến việc học 1 ngôn ngữ mới
- bạn nâng tầm, học cái này làm cái A cái B cái C blah blah thật kinh khủng
- bạn tìm hàng loạt ebook sách khủng down về.
- rồi vứt xó
...

trong khi tất cả việc bạn phải làm là nhảy vào ôm đàn hay xông vào code ầm ầm, chẳng có gì phải nghĩ cả chỉ cần kiếm cho mình 1 lí do hợp lý để làm việc ấy. Hãy để mọi thứ thật đơn giản, thật bình thường, đừng nâng tầm quan điểm, just do it!


slogan tuyệt vời của Nike



UPDATE:
trên LifeHacker có 1 bài nói về điều tương tự: giảm rào cản 20s để tạo thói quen. Nội dung tóm tắt lại là: nếu ngày xưa bạn để cái đàn trong bao, trong góc nhà, cách chỗ bạn hay ngồi 5 met, thì giờ hãy bỏ nó ra khỏi bao, để nó ở chỗ bạn dễ dàng với tới nhất để loại bỏ sự ngần ngại không đáng có: http://lifehacker.com/5966555/use-the-20+second-rule-to-improve-your-life

Tuesday 1 January 2013

2013

bỏ lại tất cả mọi thứ phía sau, năm mới đã đến.



một phút để nhìn lại những gì làm được năm vừa rồi:
►  2010 (100)

130 bài viết (yeah), tuy không được như thời kỳ đỉnh cao 2011 nhưng cũng là 1 con số tuyệt vời  . Và nếu như tất cả bài viết từ bên blog +Lam Tung  đều kịp chuyển sang đây thì con số này có lẽ đã vượt năm 2012.

Những điểm nóng năm vừa qua: 

Bài viết của năm: