New FAMILUG

The PyMiers

Monday 31 December 2012

zsh và bash

zsh là gì ?
nôm na thì nếu bạn biết bash là gì thì zsh cũng gần giống thế nhưng 'xịn' hơn ^^

hvn@lappy: ~ $ apt-cache show zsh
...

 Zsh is a UNIX command interpreter (shell) usable as an
 interactive login shell and as a shell script command
 processor. Of the standard shells, zsh most closely resembles
 ksh but includes many enhancements. Zsh has command-line editing,
 built-in spelling correction, programmable command completion,
 shell functions (with autoloading), a history mechanism, and a
 host of other features.

từ trang chủ của zsh:

Lời chào năm mới 2013 và nói một chút về sau này.


 Đầu tiên, nhân năm mới 2013, mình xin chúc các bạn mọi điều thuận lợi và quan trọng sức khỏe phải dồi dào, ốm là điều không được phép.
 ......

Và câu chuyện như sau:

“Bao giờ mày ra trường thế cháu ?”
“Mày đi làm chưa ?“
“Năm nay năm thứ mấy rồi ?”

Đã bao giờ các bạn bị tra tấn một mớ các câu hỏi như thế chưa, còn mình, thường xuyên. Nó dường như là một áp lực vô hình để ta buộc phải hoàn thành mục tiêu: Ra trường đúng hạn.

Friday 28 December 2012

Website with 3D view

Tính năng xem giao diện website theo kiểu 3D rất kool:



chỉ cần bấm (CTRL + SHIFT + i)  rồi chọn nút 3D view và xem
Thực hiện tren firefox 17.0.1
Với tính năng này, bạn có thể "quay chuột"  cả ngày không chán :D

Thursday 27 December 2012

[FMLB] Bài 1: `cut` vs all

Đề bài:

 in ra tất cả tên các user trên máy tính của bạn  (Linux-based OS)

Info:

thông tin về user được chứa trong file text:  `/etc/passwd`
Ví dụ 2 dòng trong file này trên máy tớ:  
root:x:0:0:root:/root:/bin/bash
hvn:x:1000:1000:Nguyen Viet Hung,,,:/home/hvn:/bin/bash

hvn, root chính là tên của 2 user trên máy.

FMLBattle: 1 vs all

Đây là 1 "trò chơi" tớ mới nghĩ ra, 1 ý tưởng...  như thường lệ :D

Hình thức :
trò chơi này nhằm đưa ra các đề bài và lời giải có sẵn bằng (bash + linux utilities). Người tham gia sẽ viết code bằng 1 ngôn ngữ lập trình tùy ý  rồi đưa kết quả lên gist hoặc pastebin, rất khuyến khích các bạn sử dụng những ngôn ngữ lạ, mỗi người 1 ngôn ngữ càng tốt. Xem như là 1 nơi để luyện tập với ngôn ngữ mới bạn đang học, hoặc rèn luyện lại skill với ngôn ngữ bạn đã thành thạo.

Khi đưa lên kết quả, có 1 yêu cầu (không bắt buộc) là bạn hãy chạy chương trình của mình với lệnh `time` để đo thời gian, đồng thời cung cấp cấu hình máy của bạn sử dụng. (tớ sẽ viết hướng dẫn nếu cần)

Wednesday 26 December 2012

ReadItLater - Pocket, những gì còn lại sau đống hỗn loạn

chuyện này xảy ra rất thường xuyên với tớ. Khi tìm hiểu về 1 vấn đề X, sẽ thấy xuất hiện thêm các vấn đề Y, và Z. Bình thường là nếu thấy Y và Z hay thì lại xem Y và Z là cái gì... cứ thế và bỏ lại X. Hoặc khá khẩm hơn thì bookmark lại Y và Z , nhưng không bao giờ xem lại ^_^. Một giải pháp giải quyết vấn đề này là:

Tuesday 25 December 2012

Kế hoạch các năm post hết vào đây

Cũng chỉ còn vài ngày nữa là số 2 bị lùi lại đằng sau, và ngày nào người ta cũng nhắc đến số 13 kỳ bí. Hôm nay, ở nhà tự kỷ nên quyết định ngồi viết kế hoạch năm tới, nhân tiện gộp tất cả các cái kế hoạch của mọi người vào đây, ai có thì cứ gửi vào phần comment.

Sunday 23 December 2012

[SmartUsing] Chạy firefox với các profile khác nhau

Bình thường khi bạn mở firefox lên, nó sẽ mặc định chạy với profile là default. Nếu bạn chạy firefox với câu lệnh như sau, nó sẽ cho phép bạn chọn 1 profile khác:

hvn@lappy: ~ $ firefox -P "hvn" -no-remote
-P "hvn" : dùng profile "hvn", nếu không có sẽ mở profile manager ra.
-no-remote : dùng để chạy với các profile không phải default

[FMLnews] Tuần có ngày tận thế (16->23/12/2012)

1. Blogger có tính năng nhắc đến ai đó trong bài post
chỉ cần gõ dấu + rồi gõ tên người đó:
+Bui Chung +Dong Tran +Lam Tung +Đình Cường +Nguyen Ha   tính năng này chỉ hoạt động với những ai dùng Google Plus :D
http://buzz.blogger.com/2012/12/mention-people-in-your-posts-with-google.html

2. Enlightenment chính thức release sau 12 năm dev @@. 

Saturday 22 December 2012

Config Apache2 và CGI

ngày xưa, cách đây tầm 6,7 năm, tớ trẩu tre đi đọc mấy bài của các anh hacker thấy nhắc nhiều đến cgi-bin, thật sự đến tận bây giờ mới tìm hiểu nó là cái gì mà sao toàn bị hack thế :D


Bài này sẽ giới thiệu 1 chút về CGI và hướng dẫn debug khi config apache2 bị lỗi (mấy hôm nay debug mệt lắm rồi).
Thực hiện trên:
hvn@lappy: /etc/apache2 $ uname -a; lsb_release -a
Linux lappy 3.2.0-30-generic #48-Ubuntu SMP Fri Aug 24 16:52:48 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 12.04.1 LTS
Release:    12.04
Codename:    precise

1. CGI 
The CGI (Common Gateway Interface) defines a way for a web server to interact with external content-generating programs, which are often referred to as CGI programs or CGI scripts. It is the simplest, and most common, way to put dynamic content on your web site.

http://httpd.apache.org/docs/2.2/howto/cgi.html

Hello Linux !

Nếu bạn mới bắt đầu dùng 1 hệ điều hành nhân Linux nào đó (Ubuntu / Mint chẳng hạn). Chân ướt chân ráo sẽ bỡ ngỡ khi tập bước những bước đầu tiên trong 1 thế giới mới. Chắc hẳn bạn sẽ google 1 đống từ khóa để thỏa mãn các nhu cầu tối thiểu, những thứ thay thế cho Windows mà bạn đã dùng hàng ngàn năm :v như cài tiếng Việt cho ibus, dùng pidgin chat yahoo, cài addon để nghe nhạc ...v.v

(Bài này mặc định là bạn đã biết cài các gói phần mềm cho máy tính của mình)

Và bạn đã dùng Linux, âu cũng là 1 thay đổi lớn trong cuộc đời :3. Giả như bạn là 1 lập trình viên hay sysadmin đang "tu luyện", thứ bạn sẽ cần khám phá ở đây không phải là những phần mềm thay thế cho Windows kia, mà hãy khám phá sức mạnh thật của Linux: đó là môi trường dòng lệnh CLI ( trong bài này nói đến bash shell)


Sunday 16 December 2012

Một bài tập lập trình dài "hợp lý"

Mỗi khi bạn học một ngôn ngữ mới, bạn sẽ đọc một mớ cú pháp mới, lý thuyết mới và cần 1 chỗ để áp dụng. Trước đây tớ từng recommend là luyện với tầm 20 bài PE đầu tiên để quen với ngôn ngữ mới, nhưng bây giờ, tớ nghĩ mình tìm ra một bài tập "hợp lý" hơn cả.

Hợp lý hơn ở chỗ:
- nó không đòi hỏi bạn phải tìm hiểu, nghiên cứu thêm bất cừ thứ gì ngoài ngôn ngữ bạn đang sử dụng
- nó sử dụng hầu hết các cú pháp cơ bản mà ngôn ngữ của bạn cung cấp
- nó không cần sử dụng thêm 1 thư viện ngoài nào bởi chỉ đơn thuần là logic
- nó không khó và đánh đố
- nó có thể được dùng vào sản phẩm thực tế, không phải đồ chơi (toys)
- nó đủ dài để bạn phải gõ code vài lần, chứ không bạn sẽ quên ngay nếu chỉ gõ 1 , 2 lần
- sau khi code xong, nếu bạn không có ý định sử dụng, hãy public nó lên github cho ai cần thì dùng

Thursday 13 December 2012

Learning framework

(hay làm thế nào để biết những công cụ lập trình hữu ích cho bạn,
cũng có thể là: làm thế nào để biết những gì bạn không biết là mình không biết )

đêm qua trước khi ngủ nghĩ ra bài này nhưng mà ngại mò dậy nên sáng đánh răng xong là múc luôn :D

NOTE: bài này sẽ sử dụng ví dụ là C, bởi C là nơi câu hỏi này bắt đầu, hòan tòan có thể áp dụng quá trình này với vấn đề / ngôn ngữ khác


Câu chuyện bắt đầu từ khi tớ vô tình vớ được lệnh make - vâng, một con lệnh rất phổ biến trên linux với những ai từng compile software từ source. Và rồi tớ hỏi, làm thế nào để biết những cái còn lại, sao bao năm tháng code C mà mình vẫn không biết make. Vậy là tớ vác lên SO hỏi. Trong thời gian chờ họ trả lời thì tớ đã google xong, mà lúc quay lại thì toàn gạch với đá :v - một thời ngây ngô :v

Wednesday 12 December 2012

[FMLnews] Tuần có ngày 12-12-2012

Chúc mừng sinh nhật Đồng D.Ku, dù đã liên hoan trước 1 tuần rồi :v

Bắt đầu từ bài này, FML sẽ có một mục mới là FMLnews, post các tin tức hot/ hay ho về công nghệ , cố gắng sẽ post hàng tuần :D

Mở đầu tuần này:

Linux 3.7 ra lò
hãy vào xem những features mới mà kernel 3.7 cung cấp, để không còn lạc hậu :v (tất nhiên cái này hơi cao cấp :-ss )
http://kernelnewbies.org/Linux_3.7
  1. Prominent features in Linux 3.7
    1. ARM multi-platform support
    2. ARM 64 bit support
    3. Cryptographically signed kernel modules
    4. Btrfs updates
    5. perf trace, an alternative to strace
    6. TCP Fast Open (Server Side)
    7. Experimental SMB 2 protocol support
    8. NFS v4.1 support no longer experimental
    9. Virtual extensible LAN tunneling protocol
    10. Intel "supervisor mode access prevention" support

Smartusing, một cách sử dụng twitter để làm todo list.
http://blog.meritful.com/post/37762908459/twitter-as-a-smart-todo-list

Tổng quan tiếp cận việc viết ứng dụng cho iOS:
http://genk.vn/dien-thoai/thang-tram-nghe-viet-app-tai-viet-nam-thu-lieu-co-du-bu-chi-20121129083815502.chn

Thông tin về một số họ / gia đình font chữ 
(font thuộc họ serif khác sans-serif và khác monospace ở đâu)
http://www.w3schools.com/css/css_font.asp

UPDATE:
Hãy chia sẻ cho mọi người (comment) những link bạn thấy thú vị vào đây :x
Tobe continues...

Monday 10 December 2012

[bash] Dùng bash thay máy tính cầm tay

trước tớ đã có bài viết về dùng python để thay máy tính cầm tay, hôm nay xin thêm 1 bài về dùng bash để tính toán với các số nguyên. Và những điều nay không ở đâu xa lạ cả, ngay trong man bash . Chú ý là chỉ dùng bash để tính toán các phép tính SỐ NGUYÊN:

ta dùng cấu trúc $((biểu thức cần tính))

hvn@lappy: ~ $ echo $((2**62))
4611686018427387904
hvn@lappy: ~ $ echo $((2**63))
-9223372036854775808
hvn@lappy: ~ $ echo $((2**64))
0
hvn@lappy: ~ $ echo $((2**63))
-9223372036854775808
hvn@lappy: ~ $ echo $((15 % 4))
3
hvn@lappy: ~ $ echo $((7 / 4))
1
hvn@lappy: ~ $ echo $((1 + 1))
2

Monday 3 December 2012

[SomethingNew] Haxe - một ngôn ngữ lập trình rất thú vị

một cái tên có thể bạn chưa nghe bao giờ Haxe, tớ cũng mới chỉ nghe hôm nay :D

http://haxe.org/

tất nhiên bạn sẽ hỏi: có đáng để học nó không?
dù với bất kỳ ngôn ngữ nào, câu trả lời này cũng là có :v , còn đây là những câu trả lời cho câu hỏi ấy:
http://stackoverflow.com/questions/1384647/is-haxe-worth-learning

Đây là 1 tính năng nổi bật của Haxe:

Friday 30 November 2012

[SomethingNew] 2D GameArt with Inkscape

Hầu hết mọi người đều nghĩ để tạo hình cho game, cần phải có kỹ năng vẽ vời rất tốt :v hãy xem cái link này và nghĩ lại. Đã định học Inkscape từ lâu nhưng mới chỉ là định thôi :v

http://2dgameartforprogrammers.blogspot.in/2012/09/apache-helicopter.html


Sunday 25 November 2012

Byebye Shared Hosting, Hello Free Cloud

App được nhắc đến trong bài này được viết bằng PHP - MySQL
 Biết đến Heroku từ lâu, nhưng nó lại dùng PostgreSQL, không được quen cho lắm. Hôm nay tớ tìm thấy đám mây khác đáp ứng được nhu cầu này - Xeround (Database as a Service - xeround.com).



Như vậy code (PHP) sẽ deploy trên Heroku, và database (MySQL) được gửi tạm trên Xeround Cloud. Một lựa chọn khác có vẻ chuyên nghiệp hơn Free Shared Host :D

Xeround cung cấp gói Free cho phép tạo db < 10mb, quản lý db bằng phpmyadmin. Đủ dùng cho các test app hoặc để chơi or 1 cái shop bán hàng nhỏ :D

Sau khi deploy code php trên Heroku có thể config domain có sẵn thay thế cho domain cung cấp của Heroku
$ heroku domains:add example.com

Với điều kiện domain đã được cấu hình DNS (CNAME) trỏ example.com về yourapp.herokuapp.com

Đây là 1 web app mình đã làm theo cách trên http://ola.familug.org
Tốc độ tương đối chậm nhưng vẫn nhỉnh hơn các free host khác.


Saturday 24 November 2012

[LATEX] Làm slide bằng LATEX với beamer

Dưới đây là slide tớ làm cho môn lập trình mạng. Ai cần làm slide bằng LATEX có thể xem qua cho khỏi bỡ ngỡ :D rất đơn giản
(Không phải cài đặt thêm bất cứ cái gì nếu đã làm theo bài Cài đặt latex trên Linux



Kết quả thu được cơ bản là giống thế này :D

Wednesday 21 November 2012

HOME



http://youtu.be/jqxENMKaeCU

HOME là 1 tập phim tài liệu mà bạn PHẢI xem,, để thay đổi mọi hành động của bản thân!

(Chọn như hình vẽ để có phụ đề tiếng Việt:


Sunday 18 November 2012

[LATEX] LATEX tiếng Việt trên Linux

các bài viết trước đã giới thiệu việc dùng TextMaker để tạo văn bản LATEX.
Nếu bạn không muốn dùng TextMaker, bạn có thể gõ LATEX bằng editor yêu thích của mình và "compile" nó thành file PDF với texlive.

cài đặt:
sudo apt-get install texlive, texlive-lang-vietnamese


Offline document on Linux


phải viết ngay vì bây giờ không viết thì có thể là không bao giờ viết :v

Trên linux, mỗi phần mềm thường đi kèm với 1 bộ document. Đừng nhầm lẫn với file man, vì file man chỉ là 1 bản hướng dẫn vắn tắt.

Bạn có thể đọc doc của Python offline ngay tại máy mình sau khi cài gói python-doc vào máy: (tương tự cho các phần mềm khác)
sudo apt-get install python-doc
Reading package lists... Done
Building dependency tree      

Saturday 17 November 2012

[Tips] lại bash

nếu bạn dùng nó hàng ngày
tốt nhất là hãy biết nó
hiếm người đọc "man bash" mặc dù họ dùng bash nhiều hơn bất cứ câu lệnh khác mà họ đã từng "man"
bash không thần thánh, nhưng cũng ko stupid như bạn tưởng :v

Sau đây là vài tips tớ hút ra từ "man bash":
- về đầu dòng lệnh : ctrl a
- xuống đuôi dòng lệnh: ctrl e
- xóa màn hình: ctrl l
- xóa 1 từ đằng trước con trỏ: ctrl w
- xóa đến đầu dòng: ctrl u
- xóa đến cuối dòng: ctrl k
- chọn câu lệnh trước: ctrl p (previous)
- chọn câu lệnh sau: ctrl n (next)
- sang trái 1 ký tự: ctrl b (back)
- sang phải 1 ký tự: ctrl f  (forward)
- đo độ dài của 1 chuỗi : ${#bien_chua_chuoi_muon_do}

VD:
hvn@lappy: /var/log/apache2 $ s='hvnsweeting'
hvn@lappy: /var/log/apache2 $ echo ${#s}
11
hvn@lappy: /var/log/apache2 $ s2='i want to '
hvn@lappy: /var/log/apache2 $ echo ${#s2}
10


(vậy là bạn không bao giờ phải nhấc tay lên để bấm các phím navigator-mũi tên nữa - đúng triết lý của vim :x )

từng ấy tips chắc cũng đủ để "made your day" :D

Friday 16 November 2012

Vài điều thú vị về chuỗi Fibonacci

Bất cứ ai từng học lập trình cũng sẽ 1 lần làm bài toán tính số Fibonacci thứ n. Công việc chẳng có gì khó khăn khi dùng hàm đệ quy hay 1 vòng lặp đơn giản. Vậy nhưng còn nhiều điều dù chẳng phải bí ẩn gì nhưng có thể bạn ... chưa biết :D

Với công thức dưới đây bạn có thể

Tính số Fibonacci thứ n chỉ với các phép tính cộng, trừ, chia, căn:

Trích nguyên từ wiki [1]  

(Chuột phải chọn view image để xem ảnh rõ hơn) 

Closed-form expression

Like every sequence defined by a linear recurrence with constant coefficients, the Fibonacci numbers have a closed-form solution. It has become known as Binet's formula, even though it was already known by Abraham de Moivre:[18]
F_n = \frac{\varphi^n-\psi^n}{\varphi-\psi} = \frac{\varphi^n-\psi^n}{\sqrt 5}
where

Saturday 10 November 2012

[CCGU] awk - pattern scanning and text processing language

Tiếp tục loạt bài viết CCGU, tớ sẽ giới thiệu 2 công cụ cực mạnh để xử lý text là sed và awk.
sed và awk đều là core utility của các hệ điều hành UNIX, Linux. Chúng vừa là tên 1 chương trình, vừa là tên 1 ngôn ngữ lập trình.


http://en.wikipedia.org/wiki/AWK
http://en.wikipedia.org/wiki/Sed
hvn@lappy: ~ $ whatis sed
sed (1) - stream editor for filtering and transforming text
hvn@lappy: ~ $ whatis awk
awk (1) - pattern scanning and text processing language
awk có tính năng xử lý dữ liệu theo cột, còn sed thì lại xử lý theo dòng.
Bài này sẽ viết về awk và câu lệnh sử dụng awk phổ biến nhất ;) và một khi biết câu lệnh này rồi, đảm bảo bạn sẽ dùng nó rất thường xuyên:

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

Phân tích:

Vài bài học về cuộc sống vừa học được

và có thể liên quan đến lập trình :D

Lâu không viết nhản, làm bài cho vui :))

1. Suy nghĩ dù tốt đẹp đến mấy mà không hành động thì còn hại hơn không nghĩ

Hại hơn ở đâu? ít nhất là tốn thời gian đã, có thể stress, đau đầu ...
nhiều hơn thì tự bạn biết.

2. Thời điểm tốt nhất để làm điều gì đó (hầu hết) là bây giờ.
Để mai, để mai... còn ngày mai thì không bao giờ tới.
Trong lập trình, câu này sẽ biến thể thành: There is nothing as permanent as a temporary solution
Ngỡ tưởng sự thật này chỉ đúng với mình, ngờ đâu : không chỉ riêng ta

3. Bạn đang đọc quá nhiều, hãy giành thời gian để suy nghĩ, sáng tạo. 
Câu này của Einstein, khỏi cãi :))  thích thì cứ cãi :))

4. Những thứ phổ biến nhất (hầu hết) không phải những thứ tốt nhất/ đẹp nhất. 
Ví dụ: PHP / Windows (khỏi tranh cãi, thích thì cứ Google :D )
Những thứ ít phổ biến không phải những thứ xấu / đểu:
Ví dụ: Lisp, Haskell, Smalltalk, Linux


Bạn nên biết  1 phần rất lớn (thậm chí mang tính quyết định) đóng góp vào sự thành công của các sản phẩm chính là Marketing và các chính sách của công ty đứng sau nó.

Và bạn có thể cm để thêm vài câu vào cái list này thay vì ném đá :D
nếu thích thì like, thấy hay thì bấm thanks. Cảm ơn bạn đã đọc tớ chém gió :))

Log:
- change  title from "Vài sự thật về cuộc đời (về chính bạn)" to "Vài bài học về cuộc sống vừa học được"
- strike some controversial examples.

Friday 9 November 2012

Cài đặt và quản lý ruby qua rvm


RVM - Ruby Version Manager. Để cài đặt và quản lý được nhiều version của ruby trên máy tính.
Tại sao rvm -> Without RVM, it’s pretty difficult to have more than one version of Ruby on your computer - tutsplus.com

1. Cài đặt

$ sudo apt-get install build-essential git-core curl
Cho các máy chưa có các gói này

$ curl -L https://get.rvm.io | bash -s

Để cài rvm, yêu cầu máy đã có sẵn gói curl

echo '[[ -s "/home/lamdt/.rvm/scripts/rvm" ]] && source "/home/lamdt/.rvm/scripts/rvm"' >> ~/.bashrc

Để thêm dòng [[ -s "/home/lamdt/.rvm/scripts/rvm" ]] && source "/home/lamdt/.rvm/scripts/rvm" vào file ~/.bashrc (làm tay cũng được).
Lưu ý: Thay lamdt bằng tên user.


$ rvm requirements

Để cài các gói rvm yêu cầu cho linux

$ rvm list known
Để liệt kê các version của ruby có thể cài



Friday 2 November 2012

[Algo] Sieve of Eratosthenes

1.  Sieve of Eratosthenes
Sieve of Eratosthenes là một giải thuật tìm số nguyên tố rất phổ biến ở nước ngoài (ở VN thì tớ không biết).

Độ phức tạp: xem ở [1].

Tư tưởng của thuật toán:
Giả sử ta kiểm tra các số từ 1-100 xem có những số nào là nguyên tố.
Bắt đầu từ 2: ta lần lượt loại các bội của 2 ra khỏi danh sách (không tính 2, như vậy loại ra 4 6 8 10 ...
tiếp theo : loại các bội của 3 (6 9 12 ...)
...
cho đến hết.

Dễ dàng hiểu rằng ta đã loại đi các bội số(hợp số) và sau khi loại hết các số này thì chỉ còn lại các số nguyên tố.

Thuật toán cài đặt bằng Python2.7:


 https://github.com/hvnsweeting/FAMILUG/blob/master/Python/bulb_state.py

2. Số chính phương.

Monday 29 October 2012

Generate random data [Part1]

Đôi khi bạn cần phải sinh ra 1 đống dữ liệu random, bài này sẽ viết về 3 câu lệnh sinh dữ liệu "random". Chả biết dùng để làm gì, nhưng ít nhất thì trông cũng rất nguy hiểm :D :

1. Sinh số:
hvn@lappy: ~/xzone/tcl $ while true; do date +%N | tr -d "\n" ; done;



Tuesday 23 October 2012

Vài "combo" lệnh dễ nhớ :D [sẽ được update]

ls -Fhtl  (F*** HTL)

sudo netstat -naptu (naptu nghe như neptune :D )

tar xzf archive.tar.gz (xzf - extract the file)

tar czf archive.tar.gz file1 file2 (czf - compress the file)


UPDATED: at Sat Dec 15 11:22:05 ICT 2012

hvn@hvnatvcc: ~ $ sudo pstree -paul | less

hvn@hvnatvcc: ~ $ ls -lart /var/log/

UPDATED: at Fri Jan 25 15:09:39 ICT 2013

grep -Rin 'tu khoa' . (tìm kiếm 'tu khoa' trong tất cả các file trong thư mục hiện tại, kết quả in ra cả dòng tìm thấy mọi 'tu khoa' không phân biệt hoa thường)

[Annou.] Thêm page TOC

Page cũ Bookmark đã được thay bằng page TOC (Technologies Of Choice), page này list những công nghệ / phần mềm được ưa chuộng tại FAMILUG

http://www.familug.org/p/tools.html
(bạn có thể thấy ngay cạnh nút home)

Đồng thời, tag announcement sẽ được sử dụng để gửi các thông báo về site FAMILUG.ORG

thanks for reading!

Monday 22 October 2012

Một chú ý nhỏ khi cài Ubuntu

Chú ý nhỏ này rút ra từ 1 bài học lớn, đốt mất nửa buổi chiều hôm nay của tớ:

Lúc cài Ubuntu, khi thấy hỏi encrypt home directory,  bạn hãy chọn No. Đừng chọn Yes nếu không thực sự biết mình đang làm gì! 

Có thể bỏ encrypt đi nếu như bạn đã lỡ chọn nó :http://www.howtogeek.com/116179/how-to-disable-home-folder-encryption-after-installing-ubuntu/

Lí do tớ không thể truy cập được các dữ liệu trong thư mục home của mình vì sau khi đổi pass bằng lệnh passwd, passphrase để encrypt home directory không được tự động đổi theo => đăng nhập vào bằng pass mới thì home directory đã bị encrypt. (Lỗi này có lẽ không xảy ra nếu bạn đổi pass bằng giao diện của Ubuntu)

Hết!

Sunday 21 October 2012

[Prezi] FAMILUG - for FAMI being :))

Saturday 20 October 2012

[SmartUsing] Private Browse

Chức năng này đã xuất hiện ở Firefox từ khá lâu rồi, hầu hết mọi người đều chỉ dùng để xem XXX =))


Hôm nay mới thực sự sử dụng đúng chức năng của nó. Khi bạn dùng máy tính của người khác, họ login và remember các dịch vụ online. Lúc này việc logout tài khoản của họ ra quả thật không "ổn" cho lắm. Tốt nhất là
Tools > private browse để khỏi làm phiền ai :D đóng trình duyệt xong cũng ko để lại gì :>

bài này cho vào smartusing thì hơi quá nhưng chả biết bỏ đâu :))

Monday 15 October 2012

[WeeklyVim] hiện tất cả các dòng chứa từ đang trỏ đến

[I            Display all lines that contain the keyword under the
            cursor.  Filenames and line numbers are displayed
            for the found lines.  The search starts at the
            beginning of the file.  {not in Vi}

(dấu [ và chữ i hoa): hiện tất cả các chỗ có chứa từ khóa mà bạn đang trỏ lên
Lợi ích của dòng lệnh này?
bạn muốn xem 1 biến / 1 function được dùng ở những chỗ nào trong file. Dùng cách này có lẽ là nhanh nhất :D
thậm chí nó có thể hiện cả các dòng ở file khác sử dụng từ khóa ấy (t chưa hiểu chi tiết cái này). VD dưới hiện những dòng sử dụng hàm get_abs_path  :



Saturday 13 October 2012

[Viết nhanh] Tại sao họ phải "đào tạo lại" ?

Để cho sang mồm, có thể gọi là "đào tạo thêm" :))

Tại sao? - đưa ra lý do để tự tìm cách khắc phục

1. Đó là quy luật ;)
Những thứ bạn vừa học sẽ trở nên lạc hậu sau 18 tháng => bởi thế thứ bạn cần rèn luyện là những kiến thức cơ bản + "khả năng tự học", chứ không phải chăm chăm vào 1 cái j đó nhất thời.

2. Môi trường làm việc khác nhau. Khi bạn làm 1 mình, bạn không thể quan tâm / thành thạo những thứ bạn không bao giờ có nhu cầu dùng, những thứ chỉ thấy, chỉ cần đến ở môi trường doanh nghiệp. Thậm chí những có thể đó là những công việc quá chuyên biệt tập trung vào 1 lĩnh vực mà bạn không đầu tư kỹ.

Thế nên chuyện đào tạo lại chả có gì là sai cả, việc học tập và thay đổi cần thực hiện 1 cách thường xuyên. Cố không để mình lạc hậu là được :D


Prezi - làm bài thuyết trình "on cloud"

http://prezi.com/
Prezi cho phép bạn tạo bài presenting của mình online,xuất ra file flash với các hiệuứng rất đẹp.
Tự khám phá ;)

xem là mê :D


Sunday 7 October 2012

Những điều phải biết về web

Có 3 lý do chính để bạn những phải biết những điều dưới đây tớ nói:
1. chúng rất đơn giản, thế nên đừng để phải hối tiếc vì không biết những thứ đơn giản như thế
2. học thêm 1 điều mới không có gì hại cả
3. nó quá phổ biến


Những thứ đó là HTML, CSS, và JavaScript
Và tất cả đều có thể học ở http://www.w3schools.com/html/default.asp
các bài viết rất đơn giản, có mình họa, dễ hiểu (không thể làm khó những thứ dễ như thế :D )

1. HTML
Ai học qua HTML điều biết, chỉ mất 1-2 tiếng đủ để bạn nắm được những phần cơ bản của HTML. Chỉ gấp đôi số thời gian ấy đủ đến bạn nắm được phần lớn các tag phổ biến của HTML.
Dành 1 buổi chiều để học HTML nếu bạn không thực sự biết viết 1 page có title, có ảnh, có link, có nút bấm, có textbox!

Nếu có thời gian, hãy học thêm vài tag HTML5 rồi viết bài dạy mọi người ;)

Friday 5 October 2012

ROT13 Encrypt đơn giản với PHP


ROT13 (rotate by 13 places) - Là 1 kiểu mã hóa thay thế (substitution cipher).

26 chữ cái A-Z và 26 chữ cái a-z được chia làm đôi (13), và đặt tương ứng nhau.

Các chữ cái của bản rõ (bản chưa mã hóa), sẽ được thay thế lại theo đúng thứ tự tương ứng của bảng chữ cái đã đặt ra. để tạo thành bản đã được mã hóa (bản mờ).

Minh họa cho dễ hiểu

Bảng chữ cái chia làm đôi thành 2 hàng, mỗi hàng 13 chữ cái.

A  B  C  D  E  F  G  H  I   J  K  L  M
 |   |    |   |    |   |    |   |   |   |   |   |   |
N  O  P  Q  R  S  T  U  V W X  Y  Z


Thursday 4 October 2012

Các lớp học online sắp / đang mở

đầu tiên là lớp mạng, chắc chắn mình join lớp này :D

https://class.stanford.edu/networking/Fall2012/preview/

và các lớp ở đây.

https://www.coursera.org/

ai tham gia khóa nào thì cm để nếu ai cùng học thì có chỗ trao đổi :D

Lớp PYthon

https://www.coursera.org/course/interactivepython

Wednesday 3 October 2012

[Network] nmap - khảo sát 1 victim :D

tiếp  tục series bài nghịch ngợm modem/router, bài viết này sẽ giúp bạn không phải lần mò trong bóng tối mà là "tấn công" một cách bài bản hơn :D

http://www.familug.org/2012/10/hack-hacking-router-planet-cua-vnpt-d.html
http://www.familug.org/2012/10/pha-phach-pha-mang-internet-nha-khac.html

nmap là một công cụ phổ biến dùng trong hoạt động foot printing - khảo sát mục tiêu (bịa thế, chắc đúng 90% :)) ).

Đầu tiên hãy khám phá nmap:
(máy chưa có thì cài: sudo apt-get install nmap)

hvn@lappy:~$ whatis nmap
nmap (1)             - Network exploration tool and security / port scanner
hvn@lappy:~$ dpkg -s nmap
Package: nmap
Status: install ok installed
....

Tuesday 2 October 2012

[Phá phách] Phá mạng internet nhà khác

Nối tiếp sys admin Việt Hưng @hungnv và vừa sờ xong em modem nhà mình, nghĩ ngay ra cách phá modem nhà "ai đó". Khổ vậy, làm thì ít mà chỉ nghĩ ra phá =)) Vì sao là ai đó thì xin mời đọc tiếp.

Phần 1: Làm sao chui được vào modem nhà mình.

- Phần này nhắc lại bài của bạn Hưng hoặc chi tiết hơn cho ai chưa rõ vào sao chui được vào modem để thực hiện lệnh

- Truy cập vào modem thông thường qua web tại gateway: 192.168.1.1

pass và user mà các anh lắp mạng đã cho sẵn, hoặc mặc định của modem.
Để biết pass, user modem có thể lên Google tìm: <tên modem> default password là kiểu gì cũng có.
Hoặc nó được dán ở modem hay trong sách hướng dẫn đi kèm modem :D

- Truy cập bằng telnet:

Trên linux dùng console
Trên windows có thể dùng PuTTY hoặc soft nào có hỗ trợ telnet (vừa test win7 chả có telnet sẵn).

Ở đây tớ dùng terminal (Ubuntu 12.04) nhé.
+ Truy cập vào 192.168.1.1 dùng pass và user như vào bằng web
user: megavnn
pass: *** nhé

lamdt@lamoanh: ~ $ telnet -l megavnn  192.168.1.1
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.

Password: ***

Copyright (c) 2001 - 2012 TP-LINK TECHNOLOGIES CO., LTD
TP-LINK>

Monday 1 October 2012

[Network] Khám phá router Planet ADE-3410 của VNPT :D

theo chân hacker  Lâm thồn @lamdt, lần này t cũng lần mò vào sờ soạn em router , khám phá những điều cực kỳ thú vị.

(đọc bài http://www.familug.org/2012/10/network-mot-luc-ket-noi-vao-2-modem-d.html  để biết cách cắm cái router này vào) 

(Modem này của Planet, mã là ADE-3410)
Tất cả những gì tớ biết là sau khi login vào 192.168.1.1, thu được board ID là

96338L-2M-8M
thú thật, cái dòng của nợ này chả có ý nghĩa gì với mình, hỏi bác Gồ:
cái router này có trang bị 2M flash và 8M ram. Thú vị hơn nữa là tìm được cái link dưới:

http://www.cyberciti.biz/tips/hacking-beetel-220x-adsl-router-broadcom-bcm6338.html

gõ theo các lệnh trong đó 1 lúc thì phát hiện ra em router này có CPU hàng hiệu Broadcom nổi tiếng :)) và hot hơn cả là nó chạy linux ;)

[Network] Kết nối vào 2 modem cùng lúc :D

Nếu bạn có 1 cái modem (từ giờ gọi là router nhé, vì mình ko quan tâm đến chức năng modem của nó ở đây) không dùng tới, và tất nhiên nếu bạn muốn nghịch ngợm mạng mẽo 1 tí , và bạn đang dùng Linux thì hãy bơi vào đây :))
(Việc thừa router là bình thường nếu bạn đã lắp mạng của > 1 nhà mạng, router lởm khuyến mãi như cho mà :-j )

Cho rằng bạn đang dùng mạng dây (eth0) hay mạng wifi (wlan0).

Đăng nhập quyền root:
sudo -s

Bạn đừng cắm cái router thừa vào vội, vì hầu hết các router đều đặt sẵn địa chỉ là 192.168.1.1 nên sẽ dẫn đến conflict.

Sunday 30 September 2012

JSON - tất cả trong bài này!

Nếu bạn đã từng bị tạch tại cuộc phỏng vấn vào 1 công ty nào đó chỉ vì không biết JSON là gì thì ngay sau khi đọc bài này, bạn sẽ thấy thiếu sót của mình thực sự đáng tiếc thế nào !!!
Bởi cái tên JSON trông thì có vẻ nguy hiểm, nghe có vẻ lạ kỳ nhưng thực ra nó cực cực cực đơn giản.

Vâng, nếu bạn thấy tớ đã nhấn mạnh như thế nào thì hãy đọc hết bài này và thấy những điều tớ nói:
(Trông có vẻ dài - chủ yếu bởi các đoạn tiếng Anh tớ paste vào để mọi người tham khảo, còn với 1 kiến thức trọn gói mà thế này thì vẫn ngắn :D )
Cách đọc: (Việt sub: jây-sờn)
JSON (/ˈsən/)

What is JSON?

    JSON stands for JavaScript Object Notation
    JSON is lightweight text-data interchange format
    JSON is language independent *
    JSON is "self-describing" and easy to understand
    JSON is syntax for storing and exchanging text information. Much like XML.
    JSON is smaller than XML, and faster and easier to parse.

Lập trình viên ký (Phần 2)

Dưới đây là những khó khăn tớ gặp, những quãng đường đã trải qua, nói ra để mọi người biết  mà đi đường tắt  :D

C là một ngôn ngữ có cú pháp đơn giản. Chẳng phải tớ giỏi giang gì mà nói thế, mà chính ông Dennish Ritches cũng chỉ viết cuốn C programming language có ~ 200 trang.
Nếu bạn nắm được hết nội dung cuốn sách ấy, bạn đã nắm hết được cú pháp của C. Tất cả chỉ có vậy, còn dùng ra sao thì không ai nói cả.
Sai lầm cũng là ở đây, bạn chỉ biết làm mấy cái bài tập ví dụ trong sách, cài đặt thuật tóan cơ sở dữ liệu, sắp xếp tìm kiếm... và sẽ không bao giờ viết được 1 chương trình làm việc thực sự.

Lập trình viên ký (Phần 1)

Phần 1. Kể chuyện
cho đến giờ tớ vẫn chưa đủ tự tin khi nhận mình là lập trình viên. Nhưng dù sao cũng vài thắng làm báo, giật tít cho hoành là 1 điều tất yếu.
Tớ viết bài này cho vui cũng là chia sẻ kinh nghiệm với mọi người. Ai thấy chỗ nào vô lý  thì cm, đừng ném gạch :">
$%^@# 4h sáng vẫn chưa ngủ đc =.= mất không 3 tiếng nàm giường >.<

Mười mấy năm đi học của tớ có thể nói gắn liền với 1 câu "Thằng chột làm vua xứ mù".

Tuổi thơ ngọt ngào với contra, jackal, donald duck, mario, tank... hàng trăm băng điện tử đã qua tay tớ.
Lên lớp 5, mẹ tớ đã quyết định đầu tư mạo hiểm cho tớ đi học "Tin học bằng A". Những ngày tháng chỉ có Windows, gõ 10 ngón, word và excel.
Tớ đã biết gõ bàn phím!

Friday 28 September 2012

[CMD] xclip - paste, paste, paste

bạn muốn copy nội dung 1 file mà không cần dùng chuột? bạn muốn copy output của 1 dòng lệnh mà không dùng chuột?
với Linux-based OS, bạn có khẩu hiệu "vì một thế giới không chuột >:)"
hvn@lappy:~/test$ cat /etc/apt/sources.list | xclip -selection clip
ngay sau đó, bạn có thể paste vào bất cứ đâu.
Nếu câu lệnh không hoạt động, hãy thử với -selection sec hay -selection p 

Nếu vẫn không được, xin lỗi...
bạn quá đen :))

UPDATE: dùng xclip để copy ssh public key:
[hvn@hvnatvcc] ~  xclip -se clip < ~/.ssh/id_rsa.pub 

Wednesday 26 September 2012

LATEX- Mẫu

Đẹp trai chính là anh Mẫu thồi còn nội dung thì tùy biến nhé

Kết quả là

Tuesday 25 September 2012

LATEX-Chèn hình + mục lục

Chào các bạn!
Lần này mình sẽ trình bày về làm mục lục và chèn hình. Chú ý hình 'hing.jpg' đặt cùng thư mục với file .tex

Và đây là kết quả

Có gì sai sót xin góp ý!

Khảo sát chơi 1 em Android :D


Nhân dịp Hải dớ (eminteo) ngắm nghía mấy cái điện thoại gần chục củ, viết bài chơi chơi cho blog đỡ buồn,gọi là dạo qua hàng điện thoại thôi :D 

Bài này sẽ tìm hiểu về các thông số CPU và RAM của máy .
Lấy em Samsung Nexus S của tớ làm chuột bạch:
Đầu tiên Google info của em nó, cái link dưới sẽ đập vào mặt bạn ngay :
http://www.gsmarena.com/samsung_google_nexus_s-3620.php
(gsmarena là 1 trang review điện thoại rất nổi tiếng trên thế giới)

Vào trang này bạn sẽ thấy dòng:
Previously known as Samsung i9020

Monday 24 September 2012

Tắt các thiết bị chuyển mạch để tiết kiệm pin

 Pin là tài sản quý báu, năng lượng luôn cần tiết kiệm. Máy bật lên là phải chạy được thật lâu :))

Khi khởi động linux-based OS của bạn, các thiết bị chuyển mạch sóng radio thường được để mặc định là actived, nên nếu biết tắt chúng đi, bạn có thể tiết kiệm 1 lượng năng lượng đáng kể.

Lệnh rfkill sẽ giúp ta làm tất cả những điều cần thiết ấy.
(man rfkill ko có :D )
Google Fu được:
rfkill is a small tool to query the state of the rfkill switches, buttons and subsystem interfaces.
để hình dung rõ hơn, hãy search ảnh về rf switches (từ RF này ai học điện tử chắc mới biết @@)

Saturday 22 September 2012

Nén, giải nén bằng command line trong Linux

UPDATE: list files in an archive
UPDATE: extract all archive type

Dù dùng command line khá nhiều nhưng chuyển hẳn sang thì vẫn chưa thể làm ngay và luôn được.
Sau đây là những câu lệnh giúp nén / giải nén các định dạng zip, tar, tar.gz, tar.bz2, tar.xz bằng dòng lệnh:

1. zip
+ Nén:
zip file.zip file1 file2 file3
Ví dụ:
~/Huffman%zip Huffman.zip *

+ Nén cả thư mục:
zip -r directory.zip directory_name

+ Giải nén: (phải tạo thư mục bạn sẽ giải nén vào )
unzip -d thu_muc file.zip
Ví dụ:
~/Huffman%unzip -d Huffman Huffman.zip

+ Danh sách:
unzip -l file.zip

2. tar
+ Nén:
tar cvf file.tar file1 file2 file3
VD:
~/Linux%tar cvf hehe.tar a.txt b.mp3

+ Giải nén:
tar xvf file.tar

+ Danh sách:
tar tf file.tar

Thursday 20 September 2012

[Tut] Search bằng thanh addressbar của Firefox


Thời đại google, search là một điều thiết yếu. Làm thế nào để search nhanh?

Firefox có ô search ở góc phải, bấm ctrl k (máy tớ là thế) nó sẽ nhảy vào ô search, ctrl (lên hoặc xuống) để chọn engine rồi gõ từ khóa vào. Vậy cũng gọi là tạm nhanh rồi :D

Làm thế nào để thêm các lựa chọn search từ trang khác?
dùng extension này: https://addons.mozilla.org/en-US/firefox/addon/3682
chuột phải vào ô search của trang đó rồi add new search j đó ...

Nhanh hơn được không?
Có :D, đó là vì sao tớ viết bài này. Firefox cung cấp tính năng search bằng keyword trực tiếp trên thanh địa chỉ (bấm Alt D hoặc Ctrl L)
Hướng dẫn:
chuột phải vào ô search của trang bạn muốn. Ví dụ : http://oxforddictionaries.com/definition/english/

chọn add a keyword...
một dialog tên là new bookmark hiện ra, bạn gõ vào ô keyword từ khóa cho search ở trang này: ví dụ ở đây tớ dùng từ khóa  ox

Game trên linux

UPDATE: thêm nhiều game online
Nói gì thì nói, game miễn phí trên Linux vẫn ít và chất lượng không cao, giải pháp khi  thỉnh thoảng thèm chơi game là:
- chơi game giả lập NES, VBA => ngon lành
- chơi web game.
- chơi mấy game khá tốt trên linux : teeworld, battle of westnorth, 0 AD...

Game giả lập thì rất phê :x
chơi mấy game điện tử 4 nút trên NES hay chơi pokemon, golden sun trên VBA thì ngồi cả tháng cũng ko chán :D

WEB game thì nhiều, chỉ list mấy cái nổi trội ra đây:
http://dragonbound.net/  # Gunbound html5
2 Game của EA


Command & Conquer: Tiberium Alliances
Lord of Ultima

http://www.tf2.com/freetoplay/  # Action games, Team Fortress
http://www.phoboslab.org/xtype/  # Phi thuyền bắn phi thuyền

List tạm ra để thỏa cơn thèm game :D sau có site nào update thêm.
Và cũng là 1 bài hiếm hoi về chủ đề game trên FAMILUG :D - mảnh đất mà game bị kì thị :))

[Doc] Các tài liệu để học Linux/Unix

Bạn không cần sách, bởi tài liệu free rất nhiều.

Đủ loại tài liệu từ cơ  bản đến chuyên sâu
-1. LHN - khá chi tiết và thực tế
http://www.linuxhomenetworking.com/

0. JustLinux - tài liệu kèm ví dụ (là các bài quick tut, ngắn hơn so với LHN)
http://www.justlinux.com/nhf/

có những ví dụ thực tế, cho những ai kinh sợ file man :))

1. TLDP - The Linux Document Project
http://tldp.org/

Wednesday 19 September 2012

LATEX - bảng

Kết quả là

LATEX - mở đầu

Cài đặt latex. Ở đây mình sẽ dùng trình soạn thảo mình hay dùng TexMaker (có cả trên win và ubuntu). Trước khi cài đặt Texmaker (hay bất cứ 1 trình soạn thảo nào khác) :

+ Cài đặt Texlive đối với ubuntu

+Cài đặt Miktex với window

(free hết)

cài xong rồi nào thử ngay một văn bản luôn và ngay



Sẽ được như thế này



Thursday 13 September 2012

[CLIC] CLI Challenge 1

Định để mai viết, nhưng mà mai dài hơn thuổng :))
Viết luôn!

ngồi rảnh rỗi chán nản, tớ nghĩ ra 1 trò mới, mời mọi người cùng tham gia chơi. Một trò chơi liên quan đến việc sử dụng các dòng lệnh cơ bản của linux.

Câu hỏi lần này là:
Hãy gõ 1 câu lệnh trả về dòng chữ có cấu trúc như sau:
username@hostname

Ví dụ (cũng là bài làm của tớ):
hvn@lappy:~$ echo `id -un`@`uname -n`
hvn@lappy
Các câu trả lời không được giống nhau. Chơi nào \m/
(mỗi phương án trả lời / 1 comment)

Wednesday 12 September 2012

Tùy chính monitors bằng command line




xrandr = The X Resize, Rotate and Reflect Extension

xrandr - tùy chỉnh các thông số size, resolution, on/off màn hình trên linux
Chủ yếu dùng cho các windows manager thôi.

xrandr
[--output  output]  [--auto]  [--mode  mode]  [--preferred] [--pos xxy]
[--rate rate] [--reflect reflection] [--rotate orientation] [--left-of
output] [--right-of output] [--above output] [--below output] [--same-
as output] [--set property value] [--off] [--crtc crtc] [--gamma
red:green:blue]

-- List các monitor đang chạy (màn lap, màn cắm qua cổng VGA, máy chiếu)
xrandr
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 303mm x 190mm
1280x800 60.0*+
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
TV1 disconnected (normal left inverted right x axis y axis)


Danh sách đi kèm resolution mà màn hình hỗ trợ
Như hiện tại monitor đang dùng là laptop phân giải 1280x800
các độ phân giải hỗ trợ
1280x800
1024x768
800x600
640x480


-- Turn off monitor
xrandr --output [monitor_name] --off

-- Chỉnh lại phân giải/resolution
xrandr --output [monitor_name] --mode [resolution]


man xrandr
để biết thêm chi tiết

[Cmd] lsof - liệt kê các file đang mở

Như ở đây đã viết, ta sẽ sử dụng các công cụ đã có để tìm hiểu thông tin liên quan đến lệnh cần tìm hiểu.

hvn@lappy:~$ whatis lsof
lsof (8)             - list open files
hvn@lappy:~$ which lsof
/usr/bin/lsof
hvn@lappy:~$ lsof -h
...


Saturday 25 August 2012

[WeeklyVim] chia Vim thành nhiều cửa sổ con

hai lệnh rất cần thiết khi bạn dùng vim để code thực hiện điều nói trên đó là :sp và :vs


:sp dạng ngắn gọn của :split
chia màn hình theo chiều ngang thành nhiều phần bằng nhau (nếu đang có 1 thì chia thành 2, nếu có 2 thì chia thành 3 phần bằng nhau... )

:vs dạng ngắn gọn của :vsplit
v-vertical : chia cửa sổ vim theo chiều dọc thành nhiều phần bằng nhau...

Ctrl w  h/j/k/l  di chuyển đến các cửa sổ phải /xuống/ lên/ trái
Ctrl w 10 +   mở rộng cửa sổ hiện tại thêm 10 dòng xuống dưới (ngược lại vơí - )
Ctrl w 10 >    mở rộng cửa sổ hiện tại sang phải 10 cols

Something new: Biến máy cài debian thành WAP

để tránh nhầm lẫn, nên chú ý rằng mọi khi mình dùng laptop "phát" mạng là tạo mạng ad-hoc. Một số thiết bị như Android (chưa root) không thể connect vào được. Còn đây là tut biến một máy tính có card wireless thành 1 WAP (Wireless Access Point) - máy phát wifi xịn như modem xịn :))


http://www.cyberciti.biz/faq/debian-ubuntu-linux-setting-wireless-access-point/

các tool sử dụng:
Host AP: http://hostap.epitest.fi/
madwifi: http://sourceforge.net/projects/madwifi/

Q: tại sao lại post những bài kiểu này?
để bạn biết trên đời có những thứ như vậy tồn tại (know thing that you dont know). Bạn không cần thiết phải biết cụ thể chi tiết thế nào.

PS: chưa test :D 

Tuesday 21 August 2012

pstree - xem máy bạn chạy gì

hvn@squeeze:~$ whatis pstree
pstree (1)           - display a tree of processes
hvn@squeeze:~$ pstree
init─┬─acpid
     ├─atd
     ├─console-kit-dae───63*[{console-kit-da}]
     ├─cron
     ├─cupsd
     ├─2*[dbus-daemon]
     ├─dbus-launch
     ├─dhclient
     ├─exim4
     ├─firefox─┬─plugin-containe───6*[{plugin-contain}]
     │         └─29*[{firefox}]
     ├─gconfd-2
     ├─gdm3─┬─gdm-simple-slav─┬─Xorg
     │      │                 ├─gdm-session-wor─┬─i3───ssh-agent
     │      │                 │                 └─{gdm-session-wo}
     │      │                 └─{gdm-simple-sla}
     │      └─{gdm3}
     ├─6*[getty]
     ├─gnome-power-man
     ├─gnome-terminal─┬─bash───pstree
     │                ├─gnome-pty-helpe
     │                └─{gnome-terminal}
     ├─gvfsd
     ├─i3bar───i3status
     ├─ibus-daemon─┬─ibus-engine-m17
     │             ├─ibus-gconf
     │             ├─python
     │             └─{ibus-daemon}
     ├─ibus-x11
     ├─mount.ntfs-3g
     ├─pidgin
     ├─polkit-gnome-au
     ├─polkitd
     ├─portmap
     ├─rpc.statd
     ├─rsyslogd───2*[{rsyslogd}]
     ├─skype───17*[{skype}]
     ├─udevd───2*[udevd]
     ├─upowerd
     └─wpa_supplicant


máy của tớ khá là nhẹ vì dùng window manager chứ không dùng desktop-environment. Mọi người cùng gõ lệnh để xem cái process tree của mình đang chạy gì nhóe :>

Monday 13 August 2012

Cách đơn giản nhất để tránh vào nhầm mp3.zing.vn

là đổi lại file hosts.
Mọi người đã quá quen thuộc với việc sửa file hosts để vào FB.
Ta có thể sử dụng file host để chặn 1 số trang không muốn, với ai dùng win có thể thấy khi crack IDM cũng thêm link đến trang chủ của nó với địa chỉ ip  127.0.0.1

từ giờ sẽ dùng nhaccuatui.com, giá mà bọn này mua tên miền nct.vn cho nó ngắn ~.~
hvn@squeeze:~$ ping -c 1 nhaccuatui.com
PING nhaccuatui.com (123.30.134.2) 56(84) bytes of data.
64 bytes from mp3.zing.vn (123.30.134.2): icmp_req=1 ttl=128 time=62.3 ms

--- nhaccuatui.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 62.359/62.359/62.359/0.000 ms


Thursday 9 August 2012

[WeeklyVim] Thêm các từ dưới con trỏ vào phần command

Refactor là vấn đề rồi bạn sẽ phải làm khi bạn thực sự code.

Để search 1 từ dưới con trỏ, ta bấm * hoặc #.
Để thêm từ đó khi search, ta để con trỏ lên từ đó, bấm Ctrl R Ctrl W
Để thay 1 hàm bằng 1 hàm khác, có lẽ sẽ phải dùng regex :D
vdụ:
foo_too_talabamaxanakahaha(haha, hohoho)
bằng hàm:
familug(huhu)
ta sẽ để con trỏ lên tên hàm foo...
gõ :%s/
bấm Ctrl R Ctr W
gõ .*/familug(huhu)/g
enter là xong

đầy đủ câu lệnh là:
:%s/foo_too_talabamaxanakahaha.*/familug(huhu)/g

Wednesday 8 August 2012

Giáo trình trong mơ (của 1 SV Viện toán tin)

do tớ thiết kế :)) hi vọng 1 ngày nào đó ai đó được học .

(chỉ các môn tin)

Tin học đại cương: 
học HTML và Latex
Python (List, Dict, cơ bản)

Thực tập cơ sở:
C và con trỏ

Lập trình tính toán:

Viết code - Refactor [Part 1]

Lập trình cực đơn giản, ai cũng có thể lập trình được thậm chí cả "DUMMY" cũng có thể lập trình được trong vòng 21 ngày :)) [1]

Vậy nhưng để viết được một đoạn code tốt (theo nhiều tiêu chuẩn khác nhau) thì lại là cả 1 nghệ thuật. Những phương pháp tối ưu giải quyết một vấn đề CỤ THỂ nếu là vấn đề nhiều người gặp phải thì được đút kết thành các "pattern".
Chúng ta thường có thể đưa ngay ra những giải pháp "nóng" để giải quyết vấn đề. Nhưng nó hiều khi không phải giải pháp tối ưu (thậm chí là tối ưu cục bộ :D ) [2]

Việc viết lại 1 đoạn code cho đẹp, tiện, tốt, tối ưu hơn gọi là refactor. Và sau đây tớ sẽ lấy ví dụ về 3 đoạn code hôm nay tớ viết. Sẽ không dùng 1 ngôn ngữ riêng biệt nào hết mà tớ sẽ dùng kiểu "giả mã HVN" =))

Vấn đề:
- Cần đọc 1 file config để lấy nội dung trong đó.
- Viết 1 số hàm lọc những gì cần thiết lấy từ file config nói trên.

Tuesday 7 August 2012

Nếu được làm lại...

nếu được làm lại, bạn sẽ chọn học tử tế 3 môn học nào ?
Comment lần lượt 3 môn.

Câu trả lời của tớ là :
1. Kỹ thuật điện -> để sửa điện
2. Kỹ thuật điện tử -> để biết thêm về phần cứng
3. Đại số -> rõ rồi

Monday 6 August 2012

Thông báo việc chuyển lại website cũ

Do tình hình giá xăng giá điện tăng đắt đỏ, các admin không đủ tiền để đi ra hạn thêm cho host nên đã quyết định quay lại ăn nhờ ở đậu các anh Google :D

chào mừng trở lại cái máng lợn cũ :D

mọi bài viết bên site vừa rồi sẽ được post lại vào thời gian tới.

PS: tiếp tục chờ cấp sub domain  cho Hà và Chung (đóng gấp đôi số tiền yêu cầu để mua domain) và Đồng (bài viết leo top về latex )

Saturday 5 May 2012

FAMILUG.ORG

http://familug.org/

hàng đã về, anh em dần dần chuyển dịch thôi. \m/
Theo kế hoạch đóng tiền, Hà và Chung mỗi người sẽ có 1 subdomain xxx.familug.org
Hai bạn mau chóng đưa địa chỉ mình muốn trỏ tới để admin xử lý.
Good noon

PS: trong lúc web còn đang ở giai đoạn beta, các bạn tranh thủ hack đi nhé :))

Friday 4 May 2012

Giới thiệu AJAX

AJAX - Asynchronous JavaScript And XML

AJAX có chữ J - JavaScript, nên tất nhiên là nó dùng cho làm Web, những website hiện nay ứng dụng AJAX rất nhiều, trong CV xin việc thuộc lĩnh vực Web coding luôn yêu cầu sử dụng được AJAX.
Tại sao thì tại vì cách họat động của nó dưới đây:

Thông thường POST và GET là hai phương thức (method) truyền data, tạo ra các request từ người dùng (client side) tới máy chủ web (server side). Chúng họat động qua <form> HTML. Để gửi đi user phải ấn Submit và chờ server phản hồi (respond), trình duyệt sẽ load trang web và trả về kêt quả.

AJAX được để ra để giúp chúng ta không phải ấn submit và mất công chờ. Cụ thể hơn, nó cho phép dùng Javascript tạo request kết nối trực tiếp tới server và nhận data từ đó mà không phải tải lại trang.
Vậy, nếu phỏng vấn người ta hỏi AJAX là gì thì có thể trả lời là: AJAX là công nghệ (Nó là 1 công nghệ chứ không phải 1 ngôn ngữ lập trình) cho phép user gửi/nhận data từ server mà không cần load lại trang.
Câu này hôm đi phỏng vấn Citigo bị 1 phát rồi :D

Ứng dụng thực tiễn nhất, khi các bạn đăng ký tài khoản tại 1 trang web, vừa điền xong username nó báo tên user trùng hay không -> sử dụng AJAX.( làm thể nào? tự trả lời nhé).

Ưu điểm:
- Làm website họat động mượt mà hơn do nếu dùng form truyền thống, toàn bộ trang sẽ bị load lại mỗi lần nhận data ( khi người dùng ấn submit). Mặt khác web server cũng phải gửi cả các code HTML, CSS, JS toàn trang web -> tốc độ trao đổi chậm.
AJAX chỉ load 1 phần dữ liệu nhỏ trong website nên giảm thời gian hiển thị web, giảm các kết nối tới server.

- user tương tác với website đơn giản hơn, khỏi ấn submit liên tục. Trong lúc user chờ nhận data từ server qua AJAX có thể làm việc khác tại website đó.

Nhược điểm:
- Nếu user tắt Js thì AJAX cũng tịt.
- Nội dung AJAX tải về không được hiển thị trong trang chính (view source không thấy gì), nên các Search Engine nhưu Google, Yahoo.. cũng không tìm thấy nó.

Tạm thế đã, giới thiệu sơ qua để mọi người biết, thiếu thì các bạn bổ sung :D nếu các bạn có nhu cầu tớ sẽ viết tiếp phần 2 về cách sử dụng, AJAX dùng rất đơn giản vì nó có mô hình sẵn rồi, cứ lắp vào rồi chạy thôi :D.

Sunday 29 April 2012

[MySQL] Chọn 2 "dòng" từ 1 bảng trong 1 câu lệnh

Đây là 1 vấn đề tớ gặp phải lúc làm việc vớ CSDL.
Yêu cầu cần lấy ra tên của 2 đội bóng tham gia 1 trận đấu
Nghe rất bình thường nhưng khi lấy ví dụ hay làm bài tập hiếm khi ta gặp :D
Trong 1 record của bảng matches có chứaa id đội nhà và id đội khách, câu hỏi là giờ làm sao bạn có thể lấy ra tên 2 đội ấy từ bảng teams chỉ trong 1 câu truy vấn?
NOTE: kết quả trả về tên 2 đội phải nằm trên 1 dòng

Trước giờ tớ quen dùng kiểu Natural Join :
FORM matches, teams
WHERE teams.id = matches.guessTeamId

Kính mời test Blog mới.

Blog mới đã bước sang giai đoạn close  beta.
Tại địa chỉ http://lam.thanhmien.org
Đăng nhập: http://lam.thanhmien.org/index.php/mypage/assmin
Key: fml-<năm sinh các bạn>

Vậy kính mời các thành viên FML test và cho phản hồi.
Thực hành An toàn máy tính để check chiếc nữa nhé :x

Friday 27 April 2012

Tuyển coder cho blog mới

Theo ý kiến của Hưng xồn tớ đang code blog mới cho Familug,.
Để:
- Cho cây nhà lá vườn.
- Dễ tùy biến cho đẹp đẽ ngon ngẻ.

Mọi người ngía qua và test nó tại đây http://lam.thanhmien.org/. Hiện tại vẫn còn 1 số hạng mục nữa tớ cần mọi người đấu thầu:
- Import data cũ của Familug trên Blogspot vào database:
Thực ra nó là 1 file text, có thể dùng bất kỳ ngôn ngữ lập trình nào để lọc ra nội dung bài viết, ngày đăng, tác giả... rồi import vào database (MySQL).
Khuyến cáo: chip corei3 + 2Gb RAM trở lên  để xử lý file này. Môi lần mở máy tớ bị treo luôn @@

- Thiết kế chatbox riêng: Dùng PHP + AJAX + MySQL gì đấy, thực ra là vác cái TUT: http://advancedphptutorial.blogspot.in/2012/04/create-shoutbox-using-php-and-ajax-with.html
về edit

Ai nhận phần nào tớ sẽ pm nói thêm.
Quyền lợi:
- Về vật chất thì chả có gì :D
- Vận động đầu óc, luyện cho tay to.
- Rèn luyện kỹ năng code, làm việc nhóm, xử lý tình huống.
- Đóng góp vào xây dựng FML.

Tuesday 24 April 2012

Party FAMILUG 01

Xin kính mời tất cả memb FAMILUG chiều mai 4h có mặt ở nhà Chung để liên hoan. Lí do thì rất nhiều :))
1. Chào mừng domain mới "sắp" về
2. Chào đón Ubuntu 12.04 LTS
3. Chúc mừng chiến thắng của memb FAMILUG tại cuộc thi ANLAB open day
4. Sinh nhật sớm FAMILUG 2 tuổi :D
http://www.familug.com/2010_05_01_archive.html
....
và còn nhiều lí do khác. Mong các bạn có mặt đủ, không có cũng ko sao =)) xin kính chào :))

Game , C++ và Java

Cho những ai chưa biết: phần lớn game trên PC, console (máy PS, 360...) đều viết bằng C++


Sao không phải là Java?
Ai đó có thể đưa ra câu trả lời là vì Java chậm nhưng điều này chỉ còn đúng với những năm 90!

Vậy lí do là vì đâu?
(Bài viết cho vui, sai thì sửa :)) )

- 1 yếu tố cực quan trọng khi làm game đó là game engine, game engine 3D khủng nhất hiện nay có lẽ là Unreal , và nó hỗ trợ chính cho C++. Hầu hết mọi người đều dùng engine có sẵn chứ viết lại 1 cái từ đầu thì đúng là "cực hình" :D
Java có http://jmonkeyengine.com/ nhưng nó không thể đú được với Unreal

- Tính năng garbage collect của Java có thể khiến game bị chậm hoặc pause
- Các máy console không cài JVM

Vậy tôi viết game trên Java được không?
- có chứ, và cũng rất nên :D 2 ví dụ điển hình là :
Runescape và  Minecraft , 2 trò cực nổi tiếng ở nước ngoài. Java có cộng đồng người dùng đông đảo nhất thế giới, có tính portable (có thể chuyển nền tảng dễ dàng) tuyệt vời.
Ai muốn làm game, C++ chính là một ngôn ngữ tuyệt vời mà bạn đang có cơ hội chạm vào.
Ai muốn thay đổi cách người ta làm game, Java chính là con đường của bạn ;)
(PS: bài viết nói về game java trên PC, còn trên di động thì vô đối rồi :D chạy trên android cũng ngang ngửa Object C trên iOS)

dựa trên : http://programmers.stackexchange.com/questions/55104/why-isnt-java-more-widely-used-for-game-development


Saturday 21 April 2012

Something news

có thể ai đó sẽ tìm thấy gì đó ở đây:

Cẩm nang và chiến lược dành cho học tập
http://www.studygs.net/vietnamese/index.htm

Friday 20 April 2012

Mời tài trợ tiền mua domain mới :))

Tình hình là cái familug.com cũng sắp hết hạn rồi, các admin quyết định sẽ mua tên miền mới familug.org về chạy song song và sau là thay thế luôn familug.com. Tớ thông báo lên đấy xin xỏ mỗi thành viên tối thiểu 10k để lấy tiền đi mua domain mới :D

Thông báo này thay cho giấy mời, ai đóng >= 20k(20k chẳng hạn ;))) sẽ tặng subdomain >:)
Loa loa loa loa :X

Mọi người đóng tiền cho HVN vào ngày thứ 2 nhé :D

Wednesday 18 April 2012

Something new...

Trang này có rất nhiều video online giúp bạn học về lập trình ... , điểm nổi bật nhật là... bằng Tiếng Anh ;))

http://www.parleys.com/#st=1

Monday 16 April 2012

Tuesday 10 April 2012

OOP languages

Nếu bạn đi hỏi phần lớn những người lập trình hướng đối tượng ngôn ngữ nào tốt nhất để học OOP hoặc đơn giản hơn là "google cụm từ pure oop language" , câu trả lời nhận được sẽ không bao giờ  là C++!

"I invented the term 'Object-Oriented', and I can tell you I did not have C++ in
mind."    — Alan Kay

Nhưng với cái giáo trình cũ rích mà trường mình vẫn dạy, bạn vẫn học C++ ;)

Một sự thay thế tốt hơn:

http://en.wikipedia.org/wiki/Objective-C
Ngôn ngữ này nếu bạn chưa nghe đến bao giờ và nghĩ nó "vô giá trị" thì hãy nhớ rằng Objective-C là ngôn ngữ được dùng để viết phần mềm IPhone :D

Objectivi C = C + OOP (Lấy ý tưởng từ 1 ngôn ngữ "cực OOP" - smalltalk)

Smalltalk nghe tên có vẻ thuộc loại siêu hiếm có :)) nhưng nó chính là ngôn ngữ thuần OOP nhất. Chả biết là để làm gì ngoài học :p

Smalltalk được thiết kế nhằm bảo vệ tối đa các đặc điểm ngắn gọn và trong sáng của nó và không hướng đến tính khả dụng (usability) hay tính hiệu năng (performance). Vì vậy nó phù hợp với các mục đích giáo dục hơn là mục đích thương mại, tuy nhiên các đặc điểm của Smalltalk đã ảnh hưởng và góp phần mang lại thành công cho nhiều ngôn ngữ khác trong đó có Java, C#.

http://vi.wikipedia.org/wiki/Smalltalk

Nếu mình là thầy giáo :))  Python hay Java sẽ được mang ra dạy, thay vì C++ :-"

Nhưng cuối cùng vẫn phải nhắc lại, OOP là 1 paradism, không phải ngôn ngữ lập trình. Và chương trình của bạn "OOP" đến đâu thì phần lớn là do bạn, không phải do ngôn ngữ. Chỉ là kiếm chỗ để đổ tội mà thôi :))

Sunday 8 April 2012

Chú ý BTL ĐHMT

Yêu cầu là chỉ làm 1 bài để qua, nên ai muốn chỉ làm 1 bài thì nên làm bài vẽ đa giác rồi biến đổi tỷ lệ là nhanh gọn nhất!

Có 1 điều tớ chưa rõ là CÓ PHẢI VIẾT CODE VẼ ĐƯỜNG THẲNG KHÔNG?
nhờ Hà email hỏi thầy rồi báo cho cả lớp luôn. Nhớ viết khéo khéo theo kiểu : bài nhiều, thầy cho dùng hàm vẽ đth có sẵn cho nhanh.
Vì thật ra tất cả các bài đều từ cỡ xử lý đa giác chứ ko bài nào vẽ đường thẳng cả.

Somethings new

Dùng parameterized queries hoặc stored procs thay vì blacklist để phòng chống sql injection - thầy đã dạy :))
http://blogs.lessthandot.com/index.php/DataMgmt/DBProgramming/please-don-t-use-blacklists

CSS3 framework
http://zoomzum.com/css3-tools-presentation-frameworks-and-cheat-sheets/

nếu bạn hỏi sao lắm JS với CSS3 thế thì câu trả lời là rất nhiều người ở đây đang đã sẽ làm web và 2 thứ này là siêu cần thiết để viết 1 web ngon lành, bán được :D

Saturday 7 April 2012

mkdir và những nghệ thuật quanh nó!

Công việc tạo 1 thư mục là việc ai dùng máy tính cũng đều phải làm. Việc đơn giản này đôi khi nếu không giải quyết 1 cách nghệ thuật lại khiến bạn vô cùng vất vả ;) xem nhé!
Nếu phải tạo 100 folder có kiểu như : team001, team002 ... bạn sẽ làm gì?
Tớ đã thấy người ta mở file explorer lên, tạo 1 folder, sửa tên 1 cái thành team001 rồi copy nó ra 10 hay 100 lần và hì hục sửa từng cái tên? :)) bắt đầu cảm thấy đau khổ rồi chứ?
Trên bash có thể dùng lệnh sau để tạo 100 folder với tên như vậy:
famihug@hvn:~/TestRoom/LearnMkdir$ mkdir team{001..100}
Còn team1 , team2 ... team100?
famihug@hvn:~/TestRoom/LearnMkdir$ mkdir team{1..100}
Còn teamA, teamB..., teamZ
famihug@hvn:~/TestRoom/LearnMkdir$ mkdir team{A..Z}
Thế teamHVN, teamCICI, teamNVH...?

Saturday 31 March 2012

[CCGU] cd,pwd - di chuyển loanh quanh

vì một thế giới không bao giờ đứng yên ;)
Title phụ 2: cd, pwd - biết mình ở đứng đâu trong cuộc đời này ^^

Bắt đầu 1 quá trình tìm hiểu câu lệnh, con chuột bạch đầu tiên là lệnh cd

1. cd - Change Directory
famihug@hvn:~$ whatis cd
cd: nothing appropriate.
famihug@hvn:~$ man cd
No manual entry for cd
famihug@hvn:~$ which cd
famihug@hvn:~$ whereis cd
cd:
đúng như các cụ chém, vạn sự khởi đầu nan :D sử dụng "các câu lệnh tìm hiểu câu lệnh" mà kết quả toàn trả về không thấy không có. Tạm dừng nói về cd, hãy trả lời câu hỏi : tại sao các câu lệnh trả về kết quả như thế?

test


lamdt@lamdt-lap:~$ man cd
No manual entry for cd
lamdt@lamdt-lap:~$

[CCGU] Các câu lệnh để tìm hiểu câu lệnh

29-04-2012:update : apropos

Để dừng bạn thôi hỏi những câu như: ls, cd là cái gì, nó viết tắt của từ gì không thì bố ai mà nhớ được, nó đặt ở đâu... (bạn có 1 lợi thế cực lớn nếu biết Tiếng Anh, bởi các tên các chương trình thường là viết tắt của một hay vài từ tiếng anh nào đó)


 Hãy hỏi những gì muốn biết với cái terminal của bạn :

0. apropos - tìm kiếm công cụ
famihug@hvn:/home/famihug%whatis apropos                                   
apropos (1)          - search the manual page names and descriptions
Bạn cần thực hiện một công việc nào đó, có thể hệ điều hành bạn đang dùng có thể giúp nhưng bạn không biết tool mình cần tên là gì - apropos sẽ làm việc đó.
apropos tìm kiếm trong các trang hướng dẫn hay đoạn mô tả phần mềm từ khóa bạn yêu cầu. Ví dụ muốn tìm công cụ liên quan đến network:
famihug@hvn:/home/famihug%apropos network                                  
interfaces (5)       - network interface configuration for ifup and ifdown
aseqnet (1)          - ALSA sequencer connectors over network
avahi-autoipd (8)    - IPv4LL network address configuration daemon
byteorder (3)        - convert values between host and network byte order
ctstat (8)           - unified linux network statistics
dhclient-script (8)  - DHCP client network configuration script
endhostent (3)       - get network host entry
...