New FAMILUG

The PyMiers

Friday 27 December 2013

tcpdump - làm sao không quên?

nếu không thường xuyên sử dụng, bạn sẽ quên syntax của tcpdump.

Cách nhớ dễ nhất là hiểu nó

Tài liệu sử dụng nội dung của man 1 tcpdump

       tcpdump [ -AbdDefhHIJKlLnNOpqRStuUvxX ] [ -B buffer_size ] [ -c count ]
               [ -C file_size ] [ -G rotate_seconds ] [ -F file ]
               [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]
               [ -P in|out|inout ]
               [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]
               [ -W filecount ]
               [ -E spi@ipaddr algo:secret,...  ]
               [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]
               [ expression ]

Format lệnh tcpdump gồm các option và theo sau cùng là expression

Wednesday 25 December 2013

[emacs] basic moving

dùng emacs không có gì là khó khăn cả, nếu bạn từng là một CLI ninja múa may quay cuồng trong bash shell thì bạn cũng đã quen với một vài tổ hợp phím của Emacs. (do bash dùng emacs binding làm default)

Phiên bản mới nhất của emacs là 24.x http://www.gnu.org/software/emacs/

Để đơn giản cho lúc mới bắt đầu, bài này sẽ chỉ nói đến việc view / di chuyển trong 1 file.

Các emacs command thường là tổ hợp của các phím CTRL (CONTROL) hoặc ALT (hay còn gọi là META, có thể dùng ESC thay thế) với phím ký tự.

Để kết thúc Emacs session, dùng C-x C-c (Ctrl x rồi Ctrl c). Nếu đọc đến đây bạn vẫn chưa đóng được emacs có vẻ như bạn đã có vấn đề :D.

Các command di chuyển cơ bản.
C-v: View next screen. Xem "màn hình" tiếp theo. (chữ v trông như mũi tên xuống dưới)
M-v: View previos screen. Ngược lại với C-v 

Sunday 22 December 2013

[scheme] define, lambda, cond

Với  car, cdr, cons, ở bài trước ta đã có thể làm rất nhiều thứ với Scheme, bài này sẽ giới thiệu cú pháp của "define", "lambda" và "cond", để bạn có thể thỏa sức tưởng tượng với function.

"define" để gán một cái tên cho một "object".
Ví dụ:
scheme@(guile-user)> (define lat '(ga bo heo))

Gán cho "list" '(ga bo heo) cái tên là lat (viết tắt của : list of atoms)

Hãy chơi lại với car, cdr, cons
scheme@(guile-user)> (car lat)
$2 = ga
scheme@(guile-user)> (cdr lat)
$3 = (bo heo)
scheme@(guile-user)> (cons (car lat) (cdr lat))
$4 = (ga bo heo)

"null?" là function để kiểm tra list đầu vào có phải là list rỗng không.
scheme@(guile-user)> (null? lat) 
$5 = #f
scheme@(guile-user)> (null? '())
$6 = #t

Danh sách các package manager của các ngôn ngữ lập trình

Các package manager chính là một phần không nhỏ làm nên thành công của các ngôn ngữ lập trình hiện đại. Nó giúp lượng thư viện trở nên khổng lồ, cần gì có nấy, và cách dùng chúng khá giống nhau :D

1,Pip - Python

Cài đặt một package:

pip install package_name

2. Gem - Ruby
gem install package_name

3. NPM - Node.js
npm install package_name

Saturday 21 December 2013

Docker - Giới thiệu Docker và sử dụng

Home page: http://docs.docker.io
Các bài viết khác về docker: http://www.familug.org/search/label/Docker

Giới thiệu về docker

Docker là gì?
docker, the Linux Container Runtime, runs Unix processes with strong guarantees of isolation across servers. Your software runs repeatably everywhere because its Container includes any dependencies.
Ngắn gọn lại, nếu các bạn biết đến các file portable trên Windows [1], thì docker cũng làm 1 nhiệm vụ tương tự như vậy, container docker chứa application đã deploy, sau khi `đóng gói` có thể mang đi chạy ở các môi trường khác nhau ở các máy khác nhau ( Hiện nay mới chỉ support Ubuntu, Arch, Fedora... ), mà ko mất công deploy lại.

Các thuật ngữ được sử dụng:

- File system: http://docs.docker.io/en/latest/terms/filesystem/
- Layer: http://docs.docker.io/en/latest/terms/layer/
- Image: http://docs.docker.io/en/latest/terms/image/
- Container: http://docs.docker.io/en/latest/terms/container/

Trong phạm vi bài giới thiệu, mình không đi quá sâu sẽ gây nhàm chán. Nên bạn muốn tìm hiểu thì vào link để đọc, document đã ghi khá rõ. Cơ bản thành phần cấu tạo nên Container được mô tả như hình dưới:


Centralized Backup with BackupPC

BackupPC (BPC) là 1 software viết bằng Perl, cung cấp giải pháp Backup tập trung cho các server.
Bạn có thể backup toàn bộ server hoặc thư mục chỉ định, và restore lại khi cần thiết.

BPC thực hiện việc tranfer files qua: FPT, rsync, hoặc Samba ...
User có thể lên lịch backup hoặc backup thủ công (kích hoạt bằng tay)
BPC có sẵn trong Ubuntu default source list, nên cài đặt đơn giản chỉ bằng:

sudo apt-get update
sudo apt-get install backuppc

Sunday 15 December 2013

[scheme] car, cdr và cons

car, cdrcons là 3 primitive của scheme

Từ mới, bạn CHƯA cần phải cố hiểu chúng, cứ đọc nó như một từ mới thôi:
  • car
  • cdr
  • cons
  • primitive
  • S-expression


Hãy mở #guile lên và gõ vào rồi sẽ hiểu:
CHÚ Ý: dấu single quote trước (1.

scheme@(guile-user)> (define li '(1 2 3 4 5))
scheme@(guile-user)> (car li)
$8 = 1

Monday 2 December 2013

[Monitoring] iostat - hiển thị các thông tin thống kê về CPU và I/O

Bài này hướng đến một cuộc thảo luận hơn là một bài tut.
TODO: bài về mount, fstab (mặc dù những thứ này không thú vị cho lắm nhưng đã dùng Linux là phải biết, đặc biệt là đối với các sysadmin)

NOTE một lần nữa, nội dung bài này không thú vị, nhưng là cần thiết với các sysadmin

Bài viết thực hiện trên:
 $ uname -a
Linux archhvn 3.10.9-1-ARCH #1 SMP PREEMPT Wed Aug 21 13:49:35 CEST 2013 x86_64 GNU/Linux #đã lâu rồi không upgrade :D

nội dung có thể áp dụng tương tự cho các Linux based distro khác như Ubuntu ...

Vài thuật ngữ
IO: input/output (for devices and partitions)

report: mỗi output của iostat gọi là một report

iostat là một chương trình nằm trong package sysstat
 $ pacman -Qs iostat
local/sysstat 10.2.0-1
    a collection of performance monitoring tools (iostat,isag,mpstat,pidstat,sadf,sar)

Để cài đặt package này, dùng câu lệnh để cài tương ứng trên OS của bạn. Trên Ubuntu có thể là:
sudo apt-get install -y sysstat

Format câu lệnh iostat:
iostat  [-options ] [ interval [ count ] ]

Vài ví dụ

Friday 22 November 2013

[Media] Geeqie Image Viewer

http://geeqie.sourceforge.net/


Là một chương trình xem ảnh trên Linux - nhẹ  - nhanh - hiệu quả.



Cài đặt:
Trên Archlinux
# pacman -S geeqie
resolving dependencies...
looking for inter-conflicts...

Packages (2): exiv2-0.23-2  geeqie-1.1-2

Total Download Size:    1.73 MiB
Total Installed Size:   8.89 MiB

Thursday 21 November 2013

SQLite là một C library!

SQLite nói một cách chính xác, là một C library, là một RDBMS không cần server process.

Theo SQLite homepage

SQLite is a software library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.
Theo Python docs
SQLite is a C library that provides a lightweight disk-based database that doesn’t require a separate server process and allows accessing the database using a nonstandard variant of the SQL query language. Some applications can use SQLite for internal data storage. It’s also possible to prototype an application using SQLite and then port the code to a larger database such as PostgreSQL or Oracle.

Wednesday 20 November 2013

Tìm xem một process dùng bao nhiêu RAM

NOTE: kết quả của ps, pmap, top về memory chỉ nên dùng cho mục đích monitoring, để debug chính xác xem chương trình của bạn thực tế dùng bao nhiêu RAM, hãy dùng các chương trình profiler (ví dụ Valgrind)
Lệnh `top` `ps` có thể  chỉ trả về phần trăm hay tổng cộng lượng RAM mà một process sử dụng (hoặc trả về nhiều phần để bạn tự tính ra KB), sử dụng lệnh `pmap` (nằm trong package procps ) để tìm xem chi tiết lượng RAM đó được dùng vào đâu:

 $ whatis pmap
pmap (1)             - report memory map of a process

$ pmap --help | grep Usage -A1
Usage:
 pmap [options] pid [pid ...]

vậy `pmap` nhận args là pid (hoặc nhiều pid).

xem memory map của một lệnh `top` đang chạy:

ps và những option ít được biết tới

Ai dùng UNIX-like OS hẳn cũng phải biết tới lệnh `ps`, nếu không, có lẽ là họ vẫn chưa biết gì !?!

Câu lệnh (chương trình) `ps` trên Linux Ubuntu 12.04 nằm trong package procps. Với nhu cầu sử dụng bình thường, người dùng chỉ cần biết một vài tổ hợp sau đây là đủ:
ps -eFH
ps awwxf

rồi `grep` ra từ khóa mình cần tìm.
Ví dụ:

$ ps -eFH | grep firefox
hvn        930     1 17 341885 728808 2 06:52 ?        00:03:27   firefox
hvn       1055   930  4 106318 63936  2 06:53 ?        00:00:48     /usr/lib/firefox/plugin-container /usr/lib/mozilla/plugins/libflashplayer.so -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 930 plugin
hvn       1093   930  0 68027 20356   0 06:53 ?        00:00:00     /usr/lib/firefox/plugin-container /opt/google/talkplugin/libnpgoogletalk.so -greomni /usr/lib/firefox/omni.ja -appomni /usr/lib/firefox/browser/omni.ja -appdir /usr/lib/firefox/browser 930 plugin
hvn       1562  1481  0  2670  1104   1 07:12 pts/6    00:00:00       grep --color=auto firefox

Biết thế coi như là đủ nếu bạn không cần gì đặc biệt hơn.

Sau đây là một vài option đặc biệt.
Trước tiên, một điều cần biết là lệnh `ps` hỗ trợ 3 style để pass option.
Kiểu -e -F (hay -eF) của UNIX, kiểu `ps awwx` (không có dấu - ở đầu) của BSD và kiểu --dài_dòng của GNU. 3 style này không nên dùng lẫn lộn nhau.

Các option sau đây thuộc style UNIX:
1.  -C #Chọn process bằng tên câu lệnh.
Ví dụ:
$ ps -C firefox
  PID TTY          TIME CMD
  930 ?        00:04:13 firefox

Có thể thấy số kết quả câu lệnh này khác với `ps | grep [f]irefox` bởi câu lệnh trên chỉ tìm theo tên câu lệnh, trong khi câu lệnh sử dụng `grep` là để tìm từ khóa. (tức từ khóa có thể không phải câu lệnh, có thể là tên user, số pid, args của câu lệnh)

Wednesday 13 November 2013

[WeeklyVim] Ctags, Taglist - lắp cánh cho vim

hay làm thế nào để vim có cánh ~^.^~ aye sir!

Khi bạn chỉ hay viết vài chương trình nhỏ, hay chương trình ấy do chính bạn viết, cái gì nằm ở đâu thì bạn sẽ là người nắm rõ. Nhưng khi nhảy vào một đống code đã có sẵn, với hàng trăm file, việc này bắt đầu khó khăn và bạn cần phải có 1 công cụ mới để làm việc này.

Vim nguyên bản không hỗ trợ việc này và đó là lý do chính để bạn cài plugin taglist và chương trình ctags.

Ctags là một chương trình để:


$ whatis ctags
ctags (1p)           - create a tags file (DEVELOPMENT, FORTRAN)
trên Ubuntu, nó được biết đến với tên package là exuberant-ctags

Friday 25 October 2013

[scheme] data type boolean

Loạt bài viết giúp học ngôn ngữ  Scheme, sử dụng Guile. Cố gắng để mọi thứ trở nên dễ hiểu, đơn giản nhất.

Để làm theo bài tut này, bạn cần có Guile interpreter. Nếu bạn chưa biết cài và chạy Guile interpreter thế nào, xem ở đây
Syntax của Guile không giống C/C++/Java/PHP/Python... nên bạn cứ làm theo là được => hiểu sau.

Từ khóa
- data type: kiểu dữ liệu
- boolean: Tiếng Việt là gì nhỉ???

Bài này viết về data type boolean.

Kiểu dữ liệu boolean (đôi khi viết tắt là bool) là kiểu dữ liệu đơn giản chỉ có 2 giá trị : đúng hoặc sai

Trong Guile
giá trị sai biểu diễn bằng #f
giá trị đúng được biểu diễn bởi TẤT CẢ các thứ khác và #t
Ví dụ

[scheme] Guile - giới thiệu và cài đặt

Guile là gì? 
- Guile là viết tắt của cụm từ GNU Ubiquitous Intelligent Language for Extensions, là ngôn ngữ mở rộng (extension) chính thức cho GNU operating system.
- Guile là một library. (Guile is a library designed to help programmers create flexible applications.)
- Guile là một ngôn ngữ lập trình.
- Guile is an interpreter and compiler for the Scheme programming language, a clean and elegant dialect of Lisp.
- Guile is an efficient virtual machine that executes a portable instruction set generated by its optimizing compiler, and integrates very easily with C and C++ application code.

...
Theo http://www.gnu.org/software/guile/guile.html


Nói chung là, nếu bạn muốn học Scheme thì cài Guile, hết!

Làm thế nào để học được cái này, trông khó hiểu quá?
Shut up and just do it !

Cách đọc 
guile /gʌɪl/

Cài đặt

Wednesday 23 October 2013

NGINX beginner

NGINX là gì?
nginx [engine x] is an HTTP and reverse proxy server, as well as a mail proxy server, written by Igor Sysoev.
là một HTTP/reverse proxy/mail proxy server được viết để giải quyết bài toán C10K, hiện tại là một trong 2 HTTP server phổ biến nhất trên nền UNIX-like OSes. (theo http://wiki.nginx.org/Main )

Làm thế nào để trở thành một NGINX beginner?
Có nhiều cách, sau đây là 1 cách vớ vẩn nhất:
- Cài nginx
- Đọc http://nginx.org/en/docs/beginners_guide.html


Đó không phải là cách để giúp bạn config nginx thành 1 reverse-proxy nhanh nhất, hay cấu hình để nginx chạy website PHP của bạn ngay lập tức. Nhưng là một tài liệu phải đọc nếu bạn dùng NGINX.

Có gì hay?
- Một ít kiến thức về SIGNAL
- Syntax config của NGINX
- Biết cách dùng các directive để config NGINX

Trích vài đoạn hay ho:

Monday 14 October 2013

Thu và phát mạng tới tất cả các thiết bị bằng Laptop

Mình mới chuyển sang nhà mới, ISP chưa kịp chuyển địa chỉ cung cấp internet cho nhà mình. Với nhu cầu của bản thân, mình không thể offline.
Các thiết bị trong nhà gồm: 2 laptop, 1 desktop, 3 mobile devices, 1 switch wifi Tenda (4 cổng LAN).

Xung quanh hàng xóm mới có rất nhiều mạng wifi, "crack" bừa 1 em và thành công. Nhưng mình làm việc trên desktop là chủ yếu, không thể làm trên con lap ghẻ được. Vậy là mình quyết định, thu wifi bằng laptop và phát lại bằng switch để dùng trên desk và cho cả nhà.

Sau đây là toàn bộ quá trình thực hiện trên Laptop dùng Windows 7

Wednesday 9 October 2013

[linux] procps = ps + kill + sysctl + top + watch + ...

Hỏi và trả lời theo phong cách CCGU:

hvn@u1204: ~ () $ whatis procps
procps: nothing appropriate.
hvn@u1204: ~ () $ whatis ps
ps (1)               - report a snapshot of the current processes.
hvn@u1204: ~ () $ which ps
/bin/ps
hvn@u1204: ~ () $ dpkg -S `which ps` #hoặc dpkg -S $(which ps)
procps: /bin/ps
hvn@u1204: ~ () $ apt-cache show procps

Wednesday 2 October 2013

[bash] Mỗi ngày biết thêm 1 câu lệnh - whatis

Đây là sản phẩm tớ nghĩ ra hôm nay, thêm dòng này  vào ~/.bashrc và mỗi khi mở bash lên, bạn sẽ được học 1 câu lệnh (chương trình).
Sản phẩm là sự kết hợp vài câu lệnh đơn giản trong đó có whatis
NOTE: câu lệnh trong 1 số trường hợp sẽ trả về "nothing appropriate" - giống như khi bạn gõ:
hvn@archhvn: ~ () $ whatis familug
familug: nothing appropriate.
hvn@archhvn: ~ () $

Để giữ cho câu lệnh ngắn gọn, tớ bỏ qua xử lý trường hợp này.

Phiên bản dài:
whatis $(basename $(find $(echo "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | tr ':' ' ') | shuf | head -n1))

Phiên bản ngắn hơn:

Monday 30 September 2013

Xử lý ảnh và những câu chuyện xung quanh.

I - Khái niệm về Xử lý ảnh - Image Processing - thực tế là một nhánh nhỏ trong Computer Vision - Thị giác máy tính


 Theo mình, sự liên tưởng dễ dàng nhất, đó là một ma trận có kích thước giống bức ảnh đầu vào, và các phần tử bên trong ma trận đấy là một miền giá trị biểu thỉ mật độ sáng trên bức ảnh.

Miền giá trị thường gặp đó là 8bit, 0 - 255, 256 giá trị. 255 - là màu trắng, 0 - màu đen.

Ảnh thông thường chúng ta nhìn thấy gồm 3 ma trận lồng nhau, hay một ma trận mà mỗi phần tử là một tập gồm 3 phần tử. Tương ứng 1 kênh và 3 kênh màu.

II - Những thứ liên quan: kiến thức xung quanh, khởi đầu, tương lai về nó


Kiến thức xung quanh:


Mình thấy, tất cả những kiến thức mà chúng ta được học tại Viên Toán Tin thì có thể áp dụng vào công việc này, ví dụ:
- Xác suất
- Giải tích
- Đại số
- Giải tích hàm.
- Giải tích số .
- Phân tích số liệu.
- Mạng máy tính(advance)
- Hệ quyết định (advance)

Sunday 29 September 2013

Gparted live và gdisk

Nay phải ngồi cài win 7 trên một con máy đã cài sẵn win 8. Công việc mình chúa ghét nay còn khó khăn hơn với sự tham dự của UEFI , GPT :v

Quá trình cài đặt hủy diệt đã hoàn thành sau những bước xóa sạch tất cả các partition :)) xóa GPT, tạo MBR, chia lại ổ cứng và cài win 7 như thường.

Đọc thêm về MBR, GPT ở đây

Vài điều thú vị được tổng kết ra đây:
1. Gparted live
là một linux distro chỉ để phục vụ chạy các chương trình liên quan đến phân vùng ổ cứng.
GParted Live is a small bootable GNU/Linux distribution for x86 based computers.
It enables you to use all the features of the latest versions of the GParted application.

GParted Live can be installed on CD, USB, PXE server, and Hard Disk then run on an x86 machine.
Thay vì down 700MB bản Ubuntu live cd, hãy dơwn 138MB Gparted live sau đó "burn" nó ra usb bằng lệnh dd:

sudo dd if=/path-to-gparted-live.x.y.z-w.iso of=/dev/sde bs=4M; sync  

bản tớ vừa cài là gparted-live-0.16.1-1-amd64.iso, dùng WindowManager là Fluxbox, giao diện thân thiện dễ dùng :3
Lý do dùng được lệnh dd

Since GParted Live is based on Debian Live and this image is a isohybrid, the GParted Live CDimage can be written directly to a USB flash drive.

Wednesday 25 September 2013

Công cụ quản lý truy cập đến nhiều server

Mặc định là bạn dùng ssh

0. Quản lý file ~/.ssh/config
Cần thì thêm, chán thì sửa

Ví dụ:
hvn@archhvn: ~ () $ head ~/.ssh/config
Host saltlab
    hostname 192.168.122.241
    user hvn

1. Dùng storm -> cho fan python
http://emre.github.io/storm/
Cài đặt:

sudo apt-get install python-pip
pip install stormssh

Cách dùng:
storm --help
storm add --help

2. Dùng ghost-ssh => cho fan ruby

https://github.com/bjeanes/ghost
có thể cài bằng gem

3. Dùng PAC manager => cho fan GUI :D 

Wednesday 18 September 2013

[CLI] Các lệnh quản lý package trên ubuntu/debian

Đây không phải bài hướng dẫn dùng apt-get, mà giới thiệu các câu lệnh hữu ích trong việc quản lý package trên hệ thống Ubuntu/debian

Bài viết test trên ubuntu 12.04 x86

1. Tìm package
Khi bạn biết tên 1phần mềm không có nghĩa là bạn biết tên package.
Ví dụ: bạn muốn cài rabbitmq server, chạy apt-get install rabbitmq sẽ trả về lỗi do không có package nào tên là rabbitmq cả.
Bạn có thể tìm tên package bằng lệnh:

apt-cache search tu_khoa

Từ khóa thường là tên phần mềm, lệnh này sẽ tìm tu_khoa trong tên, phần mô tả của package.

hvn@u1204: ~ () $ apt-cache search rabbitmq
rabbitmq-server - An AMQP server written in Erlang
amqp-tools - Command-line utilities for interacting with AMQP servers
drizzle-plugin-rabbitmq - RabbitMQ Transaction Log for Drizzle
...
python-celery-doc - async task/job queue based on message passing (Documentation)
rabbitmq-erlang-client - Erlang client for RabbitMQ
rabbitmq-stomp - A STOMP gateway for RabbitMQ


Tương tự với mysql server:

hvn@u1204: ~ () $ apt-cache search mysql | grep server
libdbd-mysql - MySQL database server driver for libdbi
mysql-server - MySQL database server (metapackage depending on the latest version)
mysql-server-5.5 - MySQL database server binaries and system database setup
mysql-server-core-5.5 - MySQL database server binaries
aolserver4-nsmysql - AOLserver 4 module: module for accessing MySQL databases
courier-webadmin - Courier mail server - web-based administration frontend
dpm-copy-server-mysql - DPM copy server with MySQL database backend
dpm-name-server-mysql - DPM nameserver server with MySQL database backend

2. Hiện thông tin về 1 package

Dùng lệnh
apt-cache show ten_package

Monday 16 September 2013

[bash] giải thích export qua 2 câu lệnh

hvn@archhvn: ~ () $ y=6; echo $$ $y; bash -c 'echo $$ $y'
2461 6
2586
hvn@archhvn: ~ () $ export z=7; echo $$ $z;  bash -c 'echo $$ $z'
2461 7
2599 7
$$ là biến đặc biệt của bash, in ra process id (PID) của process hiện tại.

Câu lệnh thứ nhất:
gán y = 6; in ra process ID của bash shell đang dùng và giá trị biến y đã gán,
chạy 1 sub-shell (chạy chương trình "bash" bên trong chương trình "bash") và thử in ra pid mới cùng với giá trị biến y.
Kết quả là biến y không chứa giá trị nào cả ở sub-shell mới tạo.

Hình ảnh của lệnh ps sẽ giúp bạn hình dung rõ hơn điều gì xảy ra (với một câu lệnh tương tự):


Friday 6 September 2013

Sợ

Sáng chớm thu lạnh sun cu ông cụ
Lạnh quá cóng hết chân đành mò dậy đi tất.
Vốn ít khi nghĩ suy về cuộc đời, bởi bản thân ắt sống để "enjoy" hiện tại.
Chợt thấy sợ khi nhìn lại, mới đây thôi mà đã 9 thãng qua, thời gian vụt qua như bóng ma trong đêm vắng. Ngẫm lại thấy cũng đã 23 năm cuộc đòi, tính là lý tưởng sống được 70 năm thì nay cũng đã qua 1/3, còn 2/3 kia nữa biết làm gì?
Con người sinh ra rồi cũng đến lúc chết đi, hỏi cuộc đời ý nghĩa là chi?
Hẳn sinh ra để hưởng thụ, để trải nghiệm, nên phải sống thế để khỏi lãng phí đời mình.
Nhưng đấy chỉ là phần phục vụ bản thân, liệu có cần trách nhiệm với nhân loại, với thiên nhiên, với một "cái sự vật" ở tầm cao nhất mà không biết gọi là gì?

Thursday 5 September 2013

[git] git push origin master -u

Tớ đã từng viết 1 bài giới thiệu về git nhưng chưa hoàn thành được + lười nên thấy cái gì hay thì viết thôi. Cách sử dụng git cơ bản có thể xem ở đây:

https://help.github.com/

Bài này viết về option -u ở cuối câu lệnh git push/ pull ...
Nếu bạn xem ở tut về git ở rất nhiều nơi, sẽ thấy người ta rất hay dùng option này, đọc man sẽ thấy khá khó hiểu nếu bạn không hiểu git một cách

Monday 26 August 2013

Java cho Sysadmin

Có thể bạn không biết code java, nhưng công việc sẽ nhiều lúc cần bạn phải biết chạy Java thế nào cho đúng. Bài này tổng hợp một số kiến thức về Java để chạy các ứng dụng viết bằng Java

1. JRE và JDK
JRE cần để chạy các chương trình viết bằng Java
JDK cần để compile

2. Java 6 và Java 7
Code java 6 nói chung là có thể chạy được với jre7, điều ngược lại không đúng. Một số trường hợp không tương thích liệt kê ở đây:

http://www.oracle.com/technetwork/java/javase/compatibility-417013.html#incompatibilities

2.5 JVM
Oracle implement 2 VM cho Java, đó là Java HotSpot Virtual Machine và Oracle JRockit JVM. Loại JVM ban thường gặp là HotSpot, còn JRockit có vẻ như mang lại hiệu năng cao hơn. Theo Wikipedia, JRockit và HotSpot sẽ hòa vào làm một ở bản Java 8.

3. Các option phổ biến:

Sunday 25 August 2013

[SomethingNew] Calibre, Gitlab, Graphite...

Viết cho đỡ mốc.

1. Calibre đã ra bản 1.0
calibre is a free and open source e-book library management application developed by users of e-books for users of e-books. It has a cornucopia of features divided into the following main categories:
http://calibre-ebook.com/new-in/ten

2. Gitlab 6.0 cũng vừa ra lò, bạn muốn tự host 1 trang như Github? hãy dùng Gitlab
http://blog.gitlab.org/gitlab-6-dot-0-released/

3. Graphite vừa release bản 0.9.12 với nhiều bugfix so với bản 0.9.10 (xem ở release note của 0.9.11)
Graphite is an enterprise-scale monitoring tool that runs well on cheap hardware. It was originally designed and written by Chris Davis at Orbitz in 2006 as side project that ultimately grew to be a foundational monitoring tool. In 2008, Orbitz allowed Graphite to be released under the open source Apache 2.0 license. Since then Chris has continued to work on Graphite and has deployed it at other companies including Sears, where it serves as a pillar of the e-commerce monitoring system. Today many large companies use it.
http://graphite.readthedocs.org/en/0.9.12/releases/0_9_12.html

Saturday 17 August 2013

[Monitoring] StatsD

StatsD là tên của một NodeJS daemon (hay gọi khác là service), daemon này listen các message được gửi tới qua cổng UDP (mặc định là cổng 8125).

chữ d ở cuối statsd là viết tắt cho daemon, giống như cách đặt tên phổ biến cho httpd, ftpd, rsyncd ...

Từ cái tên này, có thể thấy StatsD là một daemon phục vụ cho việc thống kê (statistics). Người ta (Etsy) tạo ra StatsD để giúp cho việc thu thập dữ liệu trở nên dễ dàng hơn. Mô hình cơ bản nhất là trên 1 máy server, StatsD chạy và các webapp trên máy đó sẽ gửi các thông tin thống kê tới daemon này. StatsD chỉ phục vụ quá trình thu thập dữ liệu, sau đó nó có thể gửi tới một máy chạy graphite hay ganglia để thực hiện vẽ các đồ thị dựa trên dữ liệu thu thập được.

Điểm đáng chú ý và hay ho nhất của StatsD (tức phần daemon) là nó rất đơn giản nên được implement trên nhiều ngôn ngữ khác nhau. Có thể kể tới:

Tuesday 13 August 2013

XXX.tar.xz

Thay vì
XXX.tar.gz
hay
XXX.tar.bz2

Vì: tỷ lệ nén tốt hơn (tất nhiên là tùy vào loại file)

1. Nén

tar --xz -cf file_da_nen.tar.xz file_can_nen

Ví dụ:
hvn@archhvn: /tmp () $ du KhongCamXuc-HoQuangHieu_3ex6t_hq.mp3; time tar --xz -cf xxx.tar.xz KhongCamXuc-HoQuangHieu_3ex6t_hq.mp3                    
8972    KhongCamXuc-HoQuangHieu_3ex6t_hq.mp3

real    0m4.701s
user    0m4.633s
sys     0m0.130s

2. Giải nén

tar xf file_da_nen.tar.xz

Ví dụ
hvn@archhvn: /tmp () $ tar xf xxx.tar.xz

Friday 9 August 2013

[Programming] Kho báu

Kho báu
Là nơi bạn sẽ tìm ra những kinh nghiệm quý báu, những đúc kết của cả 1 quá trình làm việc phức tạp và liên tục, sẽ giúp bạn trở thành 1 lập trình viên giỏi hơn.
  •  Bạn rất khó tìm thấy nó trong 1 manpage 
  •  Cũng không dễ dàng tìm trong document hướng dẫn sử dụng software
  •  Không biết có ai viết nó thành sách không
  •  Cũng chẳng tập trung ở các blog
...
Nhưng bạn sẽ tìm thấy kho báu này ở:

Thursday 8 August 2013

GWT - PyJS

Hai project này giúp cho việc tạo các ứng dụng Javascript chạy trên các web-browser bằng 2 ngôn ngữ phổ biến Python và Java. PyJS được port từ GWT - Google web toolkit. PyJS thì không rõ đã dùng ở đâu nhưng GWT thì đã có những sản phẩm phổ biết sau:
  • Google AdWords, AdSense, Flights, Hotel Finder, Offers, Wallet, Blogger
  • Gerrit

(PS: ngoài ra còn có RubyJS (http://rubyjs.org/) là bản port sang Ruby)

What is pyjs?

Sunday 4 August 2013

AudioCD, cdrom, iso 9660

1. AudioCD
Mua được quyển sách học ngoại ngữ kèm được 2 cái audio CD mang về. Vừa giở sách định học một tí thì phát hiện ra là phải nghe. Nhét cái CD phần 1 vào, chạy VLC mở thì nó treo cứng cả VLC, CPU 200% @@

Thế là kill VLC để mount bằng tay xem:

 mount -t iso9660 -o ro /dev/sr0 /mnt/cd

Đập ngay vào mặt cái lỗi:

mount: wrong fs type, bad option, bad superblock on /dev/sr0,
       missing codepage or helper program, or other error

       In some cases useful info is found in syslog - try
       dmesg | tail or so.
Thế là công việc chuyển từ học ngoại ngữ giờ đã thành debug và tìm hiểu về CD ~.~

The reason is you cannot mount Audio CD's. Not now, not ever.
ISO9660 is a format, and Audio CD's have to comply with the Redbook specification; not with ISO9660 format specs.
https://bbs.archlinux.org/viewtopic.php?pid=1023931#p1023931

Friday 2 August 2013

[bash] introspection

introspection: dịch thô ra Tiếng Việt là
Sự tự xem xét nội tâm; sự nội quan

trong quyển sách học python nổi tiếng nhất Dive Into Python có 1 chương tên là "The Power Of Introspection", viết về câu lệnh id, dir để soi xét xem một object có những đặc tính gì.

Trên bash, một số câu lệnh giúp bạn biết được những cài đặt mà bạn đang dùng, cũng có thể coi là 1 kiểu introspection:

1. alias
Hiện các alias mà bạn đang dùng (tức bạn đã định nghĩa nó hoặc lấy từ các file ~/.bash_alias, ...

hvn@archhvn: ~ () $ alias
alias POM='git pull origin master'
alias cdd='cd ~/Dropbox'
alias cdg='cd ~/Github'
alias cdh='cd ~/hgrepo'
...
2. set

Friday 26 July 2013

[vim] hãy dùng Gvim

Hãy dùng Gvim. Vì sao:
- Hỗ trợ màu mè đẹp hơn
- Hỗ trợ copy sang cửa sổ khác bằng chuột mà ko cần config,
- Font tùy chọn (không phải font của terminal)
- Các vim command hiện lên ở các menu

Bạn chỉ tốn hơn 1 tẹo CPU/RAM thôi nhưng lời được bao nhiêu.
Và khi bạn đã dùng được Gvim thì dùng vim hay vi chả khác gì.

Thursday 25 July 2013

[vim] Vim cắn CPU

cắn rất đau,
có khi lên 17%
có khi lên tận 45%

và phải tìm nguyên nhân thôi.

thử mở vim với không config gì hết:

vim -u NONE file_ma_lam_no_cham.py

giả sử file này 100 dòng, bạn giữ nguyên phím j để nó trượt xuống và mở top bên cạnh xem nó cắn bao nhiêu CPU.
Trên máy tớ, lúc này chí tốn 0.7% CPU, và tầm 0.5 % RAM
Giờ chạy :syntax on, và làm tương tự, nó cắn 4-5%

Tuesday 16 July 2013

Python là ngôn ngữ chính thức tại FAMILUG


C từng là ngôn ngữ phổ biến nhất ở FAMILUG ngày mọi người còn đi học, thì giờ Python chính là ngôn ngữ thay thế C.
Python là một ngôn ngữ hiện đại, có hệ thống thư viện vô cùng tuyệt vời. Sử dụng rất rộng rãi trên khắp thế giới, dùng rất nhiều trong nghiên cứu khoa học cũng như khoa học máy tính.
Ruby, một đối thủ thường được đặt cạnh Python khi so lên bàn cân nhưng Ruby chỉ CÓ THỂ NHỈNH hơn python ở mảng làm web với RAILS  (Rails VS Django) nhưng thua ở hầu hết các mặt còn lại (thư viện ít hơn, không có cấc lib tương đương pynum, scipy ...)
Rất nhiều ngôn ngữ khác mới, hấp dẫn như Go, Erlang, Scala ... nhưng

Friday 12 July 2013

[Python] Tạo và gọi function on-fly

Kế tiếp bài này : http://www.familug.org/2013/07/python-viet-fucntion-tra-ve-function.html

Làm thế nào để tạo 1 function và gọi nó trong lúc code đang chạy.

Ví dụ bạn có 3 từ  "danh" "dam" "da", làm sao để tạo được 3 hàm với 3 cái tên như mong đơi. Kiểu như:
for fname in "danh", "dam", "da":
     tao_ham(fname)

Ví dụ sau thực hiện tạo và gọi hàm on-fly (tức là ngay trong khi code  đang chạy)

[Python] Viết fucntion trả về function trong python

Rất đơn giản, như trả về biến bình thường.
Bởi trong python, mọi thứ đều là object, function không là ngoại lệ:

def create_print_func(name):
    name = name.title()
    def print_func():
        print "Hello ", name
    return print_func
f1 = create_print_func('pika chu')
f1()

 Kết quả thu được là:

[Python] Cắt chuỗi trong Python

Nghe có vẻ đơn giản nhưng rất dễ mắc lỗi mà khó phát hiện ra.

NOTE: In [n]: là ký hiệu bắt đầu mỗi câu lệnh trong Ipython shell
Out[n]: là ký hiệu đầu ra, kết quả của câu lệnh vừa chạy.

Cho chuỗi sau:
In [4]: s = '....slsslslsls...sls'
Yêu cầu cắt bỏ đoạn '.sls' ở đuôi.
Ta rất dễ dùng lệnh strip hay thậm chí cẩn thận hơn là rstrip để làm việc này, thế nhưng...

In [5]: s.rstrip('.sls')
Out[5]: ''

In [6]: s2 = '....slsasls.sls'

In [7]: s2.rstrip('.sls')
Out[7]: '....slsa'
Như bạn thấy, lệnh rstrip sẽ xóa liên tực các ký tự '.' 's' 'l' từ phải sang, và đó là điều ta không mong đợi.

Thursday 11 July 2013

Viết script thực hiện fingerprinting - vui chơi cuối tuần

Fingerprinting HÌNH NHƯ là từ để chỉ công việc thăm dò 1 host nào đó,

các công cụ có thể sử dụng
ping
telnet
nmap
...

Đề bài:
viết 1 script với input tối thiểu là ip hoặc domain name của site.
output: các thông tin thu thập được

Sử dụng bất cứ ngôn ngữ nào bạn biết (dùng bash thì quá đơn giản)

Mở rộng:
- viết 1 con bot tự động fingerprint tất cả những host nó tìm thấy
- tự đẩy output sau khi chạy xong lên Gist

[HTML] Computer Output Tags

Trong HTML `Computer Output Tags` là các thẻ được định dạng sẵn (font chữ, cỡ chữ, nền chữ) dùng cho các mục đích đặc biệt như: chèn các câu lệnh, từ khóa.
Computer Output Tags bao gồm các thẻ:

  1. code - <code> - chữ nó sẽ như này - cái này gọi là thẻ code
  2. kbd - <kbd> - chữ nó sẽ như này - cái này gọi là thẻ Keyboard Text
  3. samp - <samp> - chữ nó sẽ như này - cái này gọi là thẻ Sample Text
  4. tt - <tt> - chữ nó sẽ như này - cái này gọi là thẻ Teletype text
  5. var - <var> - chữ nó sẽ như này - cái này gọi là thẻ Variable
  6. pre - <pre> -
    chữ nó sẽ như này - cái này gọi là thẻ Pre-formated

Familug đã định dạng format sẵn code. Các bạn viết bài thì dùng thẻ Quote để chèn code
Thì nó sẽ ra thế này

Wednesday 10 July 2013

Cùng học tcl

Updated: vài lời nhảm nhí
Updated: add eggdrop
 
Tcl - Tool Command Language
Nếu bạn thích Ruby, nhảy vào đây 
Nếu muốn học Python, nhảy đến đây

Tại sao lại là TCL?
  • đơn giản
  • dễ học
  • dễ dùng
  • nhỏ nhẹ
  • it's fun :x (và đây cũng là điều quan trọng nhất, bởi suy đi tính lại, điều quan trọng nhất trong việc học hành là bạn có thích hay không - bạn có thể đưa ra lý do là bận? nhưng 1 ngày tôi chỉ có thời gian từ 23H trở đi để chơi thôi :v )
Là một script language thuộc nhóm "programable programming language", tức ngôn ngữ có thể lập trình được chính nó. Đại khái là bạn có thể tự viết vòng for thay vì vòng for mặc định ...

Học để xin việc đâu đó?
Có lẽ sẽ chỉ là 1 điểm cộng,còn xin việc dùng tcl ở VN chắc không có :3
Tốt nhất là bạn nên kiếm một công việc không quá bận rộn để còn có thời gian hưởng những thú vui trên đời. Khi chưa có việc, trong thời buổi này, thì cạp đất mà ăn à, sống vẫn phải thực dụng chứ :3. Công việc sẽ chi phối những gì bạn học. Đến lúc có việc rồi, bạn tha hồ học những gì mình thích.

Đơn giản?

Đề xuất các bài cần viết

Trước sự thành công của bài hướng dẫn học python và dựa trên trình độ của các thành viên FML, đề nghị các bạn hãy ra tay viết bài :
- Hướng dẫn học HTML, CSS (JS càng tốt)
- Hướng dẫn học Ruby
- Hướng dẫn học PHP và có nên ko
- ...
Đại khái thế, thấy tòan bài anh hacker +Lam Tung  có thể viết rất hay.
Đặt gạch chờ vậy :3

Tuesday 9 July 2013

Viết chơi lúc rảnh

Mãi mới được rảnh tí
Mà hơn 1 tiếng nữa đi ngủ chả biết làm gì, thế nên ... viết nhảm :3

bận quá chả có thời gian để
  • suy nghĩ
  • học thêm cái gì đó
  • mày mò phá phách
cứ cắm đầu vào làm việc thôi, mệt nghỉ :3

Bởi thế nên, một công việc lý tưởng là công việc:

Friday 5 July 2013

[cmd] find, cách dùng đơn giản nhất thay thế ls và tree

bạn thường xuyên dùng ls
bạn thỉnh thoảng dùng tree
bạn có thể đã nghe nói đến find nhưng chưa bao giờ dùng (thú thật cái interface của lệnh này nó không bình thường giống các lệnh khác)
ví dụ muốn tìm theo tên file abc* thì phải gõ
find /xyz -name 'abc*'

Vậy nhưng bạn có thể dùng find thay cho ls (không nói đến ls -l , ls -Fhtl) hay lệnh tree chỉ với mỗi dòng:
find thu_muc_nao_do
hay chỉ gõ mỗi

Đừng chạy theo bản XX.0

Bài học của cả 1 ngày trời cài và lỗi.
Đừng bao giờ chuyển sang bản 0.16.0 khi nó vừa mới ra, hoặc có thể bạn sẽ gặp 1 đống lỗi từ trên trời rơi xuống.
Hãy dùng bản 0.15.3 (tức đã fix 3 lần lỗi và là bản cuối cùng trước khi lên 0.16) nếu bạn đã quen với nó, và nếu như những bugs của nó không qúa nghiệm trọng (bạn có cách "hack" để xử lý được)
Với bản 0.16, hãy đợi cho đến khi nó ra 0.16.2 hay 0.16.3 hãy chuyển sang dùng ...

Wednesday 3 July 2013

[bash] function đọc đầu vào qua pipeline

Dưới đây là ví dụ hàm log, dùng để log input của nó ra syslog:

log(){
    while read data; do
        echo $data | logger -t "familug" -p debug
    done
}
và dùng nó thế này
echo "Start $0" | log
date | log

Tuesday 2 July 2013

FFMPEG

FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation.

FFmpeg provides various tools:

Monday 24 June 2013

[FMLEXER] tập thể dục với các bài lập trình đơn giản

EXER là viết tắt của từ exercise - bài tập/ thể dục

FMLEXER tiếp nối chuỗi bài viết FMLB không ai thèm chơi

Đề bài và script để tạo đề bài để ở đây

https://github.com/familug/fmlexer/tree/master/fmlexer01 

Người chơi hãy dùng bất cứ ngôn ngữ gì để thu được kết quả mong muốn.

Dùng phần mềm `tree` để in cấu trúc thư mục.


Cài đặt server chat XMPP - ejabberd

XMPP (Extensible Messaging and Presence Protocol): trước đây là Jabber, là giao thức mở dựa trên nền tảng XML dùng trong nhắn tin nhanh (instant messaging) và thông tin hiện diện trực tuyến (presence information).
(http://vi.wikipedia.org/wiki/XMPP)

Mạng XMPP có thể dùng đơn lẻ: các máy trong mạng chat với nhau, hoặc kết nối với các hệ thống nhắn tin (instant messaging systems) khác - thông qua các gateway: máy của mạng nay chat được với máy thuộc mạng kia .
Các hệ thống nhắn tin này có thể là 1 mạng XMPP khác hay mạng ICQ, google talk...




YAML là gì?

YAML (http://www.yaml.org/) là 1 định dạng dũ liệu được thiết kế nhằm mục đích để người và máy (các ngôn ngữ lập trình) cùng đọc được.

YAML được dùng vào mục đích tương tự JSON, XML nhưng ngắn gọn xúc tích hơn.
Ví dụ về 1 đoạn YAML được biểu diễn như sau:
-
  name: HVN
  mail:   hvn@familug.org
-
  name: SAM
  mail:   hai.lt@familug.org
http://yaml-online-parser.appspot.com/ Là 1 trang chuyển đổi YAML sang JSON. Bạn nên dùng trang này trong lúc đọc, vừa học vừa hành lúc nào cũng tốt hơn.


YAML để làm gì?

suy nghĩ trong đêm

00 h 36
Mưa rơi rả rích, đêm chỉ có tiếng nhạc, tiếng mưa và tiếng gõ phím.
Chất kích thích của ly cà phê Trung Nguyên vẫn còn mạnh lắm, chưa ngủ được.

Nếu may mắn, chỉ vài ngày nữa thôi là sẽ xa Việt Nam một thời gian không ngắn cũng chẳng dài, luyên thuyên tí cho đêm nhanh qua.

Mình đã viết bài cho cái blog này hơn 3 năm nay, đơn giản vì nó có ích cho người khác và cho chính bản thân. Nói ngu lỡ tèo, thì ít ra cũng làm cho đời được từng này, chẳng phải kinh khủng nhưng cũng chẳng phải tầm thường.

Mình ghét cái ý nghĩ viết blog thì phải  uyên thâm, phải giỏi, phải hơn người. Điều cũ với người này nhưng có thể là mới với người khác. Nếu mỗi người chia sẻ những gì mình biết, mình học được mỗi ngày thì sẽ có bao nhiêu điều thú vị được chia sẻ ?

Sunday 23 June 2013

copy từ urxvt đến X clipboard

hvn@archhvn: ~ () $ whatis urxvt
urxvt (1)            - (a VT102 emulator for the X window system)

không như GNOME Terminal, urxvt không hỗ trợ copy bằng Ctrl Shift C, việc copy từ urxvt đến 1 cửa sổ nào khác phải thực hiện thông qua sự trợ giúp của của 1 script hoặc 1 clipboard manager

Tổ hợp mặc định cho việc copy và paste của X là Ctrl InsertShift Insert

Ở đây tớ dùng clipboard manager Parcellite để copy từ urxvt đến các cửa sổ khác:

Parcellite - Lightweight GTK+ Clipboard Manager

rsync - công cụ copy siêu đẳng

bạn sẽ cần tool này, vì chỉ cần học đúng 1 câu lệnh là nó đã có thể tiết kiệm cho bạn hàng đống thời gian!

hvn@archhvn: ~ () $ whatis rsync
rsync (1) - a fast, versatile, remote (and local) file-copying tool 

rsync là một công cụ dùng để copy trên UNIX-like OSes, nó nổi tiếng nhờ thuật toán delta-copy (tức chỉ copy phần khác nhau), bạn có thể cài nó và dùng thay lệnh `cp` 

Thursday 20 June 2013

PLEAC - học các ngôn ngữ lập trình theo kiểu "perl cookbook"

Là một dư án mã mở, PLEAC - Programming Language Examples Alike Cookbook chuyển đổi các ví dụ từ Perl Cookbook sang nhiều ngôn ngữ khác nhau.

Một vài ngôn ngữ điển hình:
Ocaml: http://pleac.sourceforge.net/pleac_ocaml/index.htm
Perl: http://pleac.sourceforge.net/pleac_perl/index.html
Groovy: http://pleac.sourceforge.net/pleac_groovy/index.html
Python: http://pleac.sourceforge.net/pleac_python/index.html
Ruby: http://pleac.sourceforge.net/pleac_ruby/index.html
...

git và tig là đôi bạn thân

Mới khám phá ra `tig` gần đây nhưng nó đã trở nên vô cùng thân thiết với `git` của tớ.
Với một giao diện trên nền ncurse, màu mè con bà bán chè, tig giúp bạn dễ dàng xem các commit ... và nhiều tính năng khác nữa (chưa dùng tới)


Cài đặt:

Script hay làm bằng tay?

Bình thường tớ sẽ luôn trả lời là script vì viết script rất vui :D

Nhưng khi cần thực hiện xong công việc càng nhanh càng tốt, ngồi viết script chưa hẳn đã là điều hay ho. Trước khi thò tay định viết scritp để thực hiện một công việc gì đó nhằm tự động hóa nó, mục đích chính là làm xong công việc nhanh hơn, chính xác hơn, hiệu quả hơn, bạn nên tự hỏi mình vài câu:

- Liệu bạn làm thủ công có nhanh hơn không?
Nếu câu trả lời là có, đừng viết! Nếu bạn không thạo việc viết scritp, bạn sẽ tốn thêm thời gian để debug, google cách làm, đọc document cách dùng thư viện... và kết quả là bạn làm tay sẽ nhanh hơn. Bởi vậy, cần thật thành thạo và chính xác thì mới mang lại hiệu quả. Ví dụ:
bạn cần đổi tên 10 thư mục, thêm vào mỗi tên 1 dòng chữ XXX. Nếu bạn biết viết 1 câu lệnh bash với for, if, mv, bạn sẽ hoàn thành công việc này sau khoảng 20 giây. Nhưng nếu không thạo cú pháp, bạn lại mất thời gian debug, google thì có thể mất đến 3 phút, làm tay còn nhanh hơn.

- Script này có được sử dụng lại không?

Monday 17 June 2013

Những điều nhảm nhí khi học lập trình

Nhảm nhí hay không phụ thuộc vào cách nhìn của bạn đọc, nhưng với mình thì chúng đúng là nhảm nhí, và rất phổ biến :3

1. x++ và ++x khác nhau thế nào?
Damn!  bạn không cần quan tâm đến thứ này. Khi nó là một thứ nên tránh thì mọi người hết lượt cắm đầu vào để tìm hiểu, và không chắc liệu có nhớ được lâu không.
Trong khi học C , thứ các bạn cần học là  hiểu về con trỏ, quản lý bộ nhớ, sử dụng các thư viện mà hệ điều hành cung cấp, các thư viện  của bên thứ 3...
Hãy viết x = x + 1; và đừng bao giờ quan tâm về câu hỏi nhảm nhí này nữa. (trừ khi bạn muốn học viết obfuscated C )


2. scanf và kiểu chương trình CLI tương tác trực tiếp với người dùng
Kiểu như: viết chương trình C cho người dùng nhập vào họ tên, mã sinh viên, điểm, ... blah blah blah. Đại khái là khi viết bạn sẽ phải dùng hàm scanf, fget, gets...

Saturday 15 June 2013

[Editor] Sublime Text 2

Sublime Text 2- là một text editor khá phổ biến có thể cài đặt trên cả windows lẫn linux.
  • Cài đặt: 
                         sudo add-apt-repository ppa:webupd8team/sublime-text-2
                         sudo apt-get update
                         sudo apt-get install sublime-text-2
Về cách thức làm việc thì cũng như các text-editor khác: highlight, tab, chia không gian làm việc, hỗ trợ cài thêm các pakaged.
Mình cũng mới sử dụng sơ sơ thấy thích thích mọi người ai có nhã hứng thì cài và tìm hiểu nhé.


[python] Tạo HTTP Server đơn giản bằng 1 dòng lệnh

Share file nhanh chóng trong mạng LAN, đơn giản chỉ với 1 dòng lệnh.
Chuyển đến folder cần share
$ cd ~/shared

Với Python 2.x
$ python -m SimpleHTTPServer

Với Python 3.x

Friday 14 June 2013

[bash] Tắt máy tự động

7h, cu Hít muốn đi ăn cơm nhưng chương trình wget vẫn đang download dở đống file và chẳng biết bao giờ mới xong.
7h 01, cu Hít định gõ sudo shutdown -h 120 để máy sẽ tắt sau 120 phút, nhưng lúc ấy nhỡ chưa xong thì sao?!!!
7h 02, nghĩ...
7h 03, một ý tưởng vô cùng bình thường mà không tầm thường đã nảy ra, cu Hít thò tay vào test

Ý tưởng rằng, khi wget chạy, nó sẽ xuất hiện khi grep output của lệnh `ps`. Nếu nó không còn ở đó nữa nghĩa là đã xong, lúc ấy thì tắt máy.
Nếu chuyển đoạn trên sang bash sẽ là: lặp cho đến khi không còn thấy wget trong output của lệnh `ps`, rồi shutdown.

7h 04, mọi thứ đã sẵn sàng, gõ thôi:

Danh sách port và service tương ứng trên Linux


Bạn muốn biết cổng nào dùng cho dịch vụ nào?
 tcpmux 1/tcp
 tcpmux 1/udp
 compressnet 2/tcp
 compressnet 2/udp
 compressnet 3/tcp
 compressnet 3/udp
 rje 5/tcp
 rje 5/udp
....
Nội dung bạn cần nằm ở

Wednesday 12 June 2013

Xử lý text trên Linux

công việc này nghe có vẻ nhàm chán
và thực sự thì nó đúng là như vậy, ít nhất đối với tớ. Mỗi lần đọc 1 quyển sách lập trình, cứ đến đoạn xử  lý string là mình cố tua thật nhanh cho hết :v

Nhưng nó cần thiết, quan trọng, và thậm chí mang tính sống còn. Nếu bạn xử lý tất cả mọi thứ bằng tay thì không bàn tới, nhưng nếu bạn muốn tự động hóa mọi thứ, bạn sẽ phải viết script, và xử lý text lại trở nên quan trọng.
Vì: trên UNIX-like OS, output của các utils đều là text cả. Các chương trình giao tiếp với nhau thông qua text (dùng pipeline của sh/bash...), bởi vậy, chán cũng phải làm, thậm chí là làm giỏi :3

Dưới đây là một problem đơn giản, bạn nào ngứa tay thì làm thử, dùng cái gì cũng được, miễn thu được kết quả:

[LATEX] Đồ án tốt nghiệp đề tài "SỬ DỤNG SALTSTACK TRIỂN KHAI HỆ THỐNG PRIVATE CLOUD OPENSTACK"

Đây là ĐATN của tớ viết toàn bộ sử dụng LATEX gồm bản báo cáo

https://bitbucket.org/hvnsweeting/datn/src/96c8e2902bdf4f69fe5b9f17d48b933188ba7f4c/tttn.tex?at=master

và slide
https://bitbucket.org/hvnsweeting/datn/src/96c8e2902bdf4f69fe5b9f17d48b933188ba7f4c/slide.tex?at=master

Monday 10 June 2013

[vim] Hướng dẫn học dùng vim

Bài viết [TẤT NHIÊN]  mang tính chủ quan và dựa trên kinh nghiệm dùng vim của tớ.
Đọc xong bài này bạn sẽ:
- biết học dùng vim cơ bản thế nào
- biết tìm chỗ để học nâng cao
- hiểu biết về những thứ xung quanh vim

vim là gì?
vim (1) - Vi IMproved, a programmers text editor


vim là phiên bản phát triển từ vi (visual - đọc là vi-eye) , thường được dùng để edit các file text khi lập trình hay cấu hình hệ thống.

Những đặc điểm nổi bật của vim

Sunday 9 June 2013

WM và hành trình đi vào thế giới ArchLinux

:v
tít nhảm nhí vãi

WM là thứ đầu tiên tớ hóng được từ ArchLinux, và cũng là dấu mốc mở đầu một chân trời mới.


Window Manager (WM) là một loại chương trình để quản lý cửa sổ
Desktop Environment (DE) là một bộ gồm nhiều chương trình để tạo nên một môi trường desktop, các DE nổi tiếng có thể kể đến như: Gnome, KDE, LXDE, XFCE, e17. Bất kỳ Desktop Environment nào cũng bao gồm một WM, nhưng nếu đang dùng Ubuntu, có lẽ bạn sẽ không để ý nó tên là gì.

Đây chính là sự khác biệt, khi ở một nơi, bạn thấy nó đập vào mặt ở mọi chỗ,

Friday 7 June 2013

[KVM] Tăng tốc máy ảo bằng virtio

Sẽ viết một bài cài máy ảo sử dụng KVM sau.

KVM là gì?
Định nghĩa theo trang chủ:
KVM (for Kernel-based Virtual Machine) is a full virtualization solution for Linux on x86 hardware containing virtualization extensions (Intel VT or AMD-V).

Nói đơn giản nó sẽ cho phép bạn cài máy ảo lên máy bạn đang dùng, tương tự như VirtualBox, VMWare.  KVM được tích hợp sẵn vào kernel của Linux từ phiên bản 2.6.20

Virtio 

Thursday 6 June 2013

[SmartUsing] Dùng github/bitbucket để lên kế hoạch cá nhân

Nếu bạn thường xuyên bắt đầu một việc gì đó khi thích thú (học 1 cái gì đó chẳng hạn), và rồi vài hôm sau bạn quên mất, hay bạn muốn lên kế hoạch để thực hiện như những gì bạn đề ra.
Có rất nhiều ứng dụng để take note, báo thức, lên kế hoạch trên các smartphone cũng như trên web. Nhưng mới đây tớ "phát hiện" ra có thể sử dụng github hay bitbucket để thực hiện việc này, khá là thú vị.

Wednesday 5 June 2013

Ý nghĩa của các câu lệnh Linux

Dưới đây là các câu lệnh thường gặp trên Linux và lý giải tại sao nó có tên như vậy:


  • cp — CoPy files and directories
  • dc — Desk Calculator
  • dd — (Data Description) convert and copy a file
  • df — Disk Free: report file system disk space usage
  • du — Disk Usage
  • ed — EDitor
  • ln — make LiNks between files

Tuesday 4 June 2013

[CSS] Dropdown menu



Chào cả nhà hôm nay vừa thi tốt nghiệp cấp 3 xong. Trời có nắng nhưng được cái có gió. Và có mấy đứa đi chụp ảnh mảnh ở hồ sen nào đấy rồi up ảnh lên face + không biết đã khao ván trượt chưa nữa
Đi vào vấn đề chính nào hôm nay mình sẽ trình bày cách để xây dựng 1 thanh menu 2 level . Trước hết để tiện cho việc trình bày bạn nào chưa có cái bảng các thuộc tính của CSS thì tìm trên mạng hoặc liên hệ mình để lấy(mail:dong.tm1212@gmail.com). Để xây đựng Dropdown menu cần 1 số lệnh sau :

  1. Margin : Lệnh này để căn chỉnh khoảng cách giữa các đối tượng cùng cấp với nhau và có 4 giá trị theo thứ tự trên phải dưới trái, 3 giá trị thì là trên phải(trái = lề phải) dưới, 2 giá trị : trên(=dưới) phải(=trái), 1 giá trị: tất cả bằng nhau,  ngoài ra còn có auto nó sẽ tự co khi co màn hình(theo mình biết là vậy).ps: còn có cách chỉnh riêng từng giá trị bằng các thêm-top,-bottom,-left,-right sau margin
  2. Padding: giống như margin để căn chỉnh khoảng cách nhưng là khoảng cách giữa đối tượng và lề của nó . Các dùng giá trị như margin

Thư viện trên Linux

UPDATED: thêm lệnh liệt kê tất cả thư viện

bài này cung cấp cho bạn hiểu biết cơ bản về Linux library (và nó có thể đúng với các UNIX-like OS khác như BSD, Solaris, ...)
Ai nên đọc bài này:
  • C/C++ programmer
  • Sysadmin - để troubleshooting
  • Người thích tìm hiểu về Linux
Library ở đây chỉ thư viện dùng trong lập trình (program library), là nơi chưa các hàm, lập trình viên chỉ cần import chúng và dùng.

Có 3 loại library:
  1.  static libraries
  2.  shared libraries
  3. dynamically loaded libraries.
Một số khái niệm liên quan:

Sunday 2 June 2013

CSS-Cách chèn code vào 1 trang web

Chào cả nhà hôm nay mình có nghịc twitter bootstrap toét cả mắt do chưa chỉnh customize nên toàn màu trắng là màu trắng nhưng cái này viết css ah nhầm giúp làm giao diện nhanh ghê!!!

Đi vào bài hôm nay mình sẽ trình bày về các cách để chèn code css vào một trang web.
Có 3 cách để chèn code vào trang web :

  • Cục bộ: Viết ngay code css trên ngay thành phần cần tác động thông qua thuộc tính style= " property1: value1 ; property2 : value2";.... Phạm vi tác động nhỏ , chỉ thẻ chứa nó mới có style đó.          
           Ví dụ: style="text-transform:uppercase; color: red ; "
          
khi add vào thẻ h1 với chứ tôi yêu vn, kết quả sẽ là: Tôi yêu VN

Saturday 1 June 2013

Partitioning - Phân vùng ổ cứng

Nó là phần rắc rối nhất / dễ gây hoang mang nhất khi cài đăt một hệ điều hành.
Bài này đưa ra những khái niệm cơ bản về phân vùng để người dùng không còn sợ hãi.

Có 2 partition scheme (sơ đồ phân vùng ???) phổ biến là MBR và GPT

1. MBR (master boot record)
MBR (master boot record) của một đĩa cứng có khả năng chứa một bảng phân vùng có thể định nghĩa 4 phân vùng chính (primary partition). Do con số 4 này có vẻ hạn chế đối với những ổ cứng cỡ lớn nên người ta sinh ra khái niệm phân vùng mở rộng (extended partition, vậy bạn có thể có 3 primary + 1 extended). Bên trong extended partion ta có thể thoải mái định nghĩa các phân vùng logic (logic partition)

2. GPT (GUID partition table)

Friday 31 May 2013

CSS mở đầu- 1 phần quan trọng bộ mặt của web

Yahoo! hôm nay vừa uống bia bị no cứng bụng ! liệu css có làm cho bụng mình nhỏ hơn thậm chí 6 múi ko nhỉ :)). câu trả lời là ko :))

CSS: cái này là viết tắt của C Style S. hề có chữ Style là liên quan tới làm đẹp rồi. Vâng Sản phẩm gì cũng qua bộ phận làm đẹp cả người mẫu bôi son chát phân, gia công thì mài nhẵn, nhám... Và CSS ở đây là stylist cho trang web của các bạn.
Về cơ bản thì HTML cũng đã những thẻ lệnh để làm đẹp cho trang web, Nhưng nếu chỉ dừng lại ở HTML(mình ko biết HTML5 thế nào) thì trang web của bạn ko đạt tới đc độ đẹp được. Và có css thì trang web của bạn sẽ hiển thị tốt trên đa nền: PC,mobile ... trên các os miễn là có trình duyệt.Ngày nay css phát triển>> cho nhiều các trình bày trang web phức tạp. 

Để code CSS bạn cần gì: Kiến thức HTML đương nhiên chúng ta sẽ chỉnh từng thẻ lênh , từng khối thẻ của HTML, 1 trình duyệt mới, 1 text editor, và thời gian để thực hành nữa.

[Bài học] sau một ngày đánh vật với laptop HP Pavilion

hay cách "troubleshooting" lúc máy restart xong thì chỉ có màn hình đen xì (sau khi chạy qua 1 đống chữ)

Hôm nay đúng là một ngày dài vì đêm qua ngủ quá ít, mà chính xác ra là sáng nay. Cả đêm đánh vật với laptop của hacker Tùng Lâm báo hại cho một ngày cực kỳ vất vả. Và giờ chỉ ngồi (thực tế là đứng) nghĩ về các bài học rút được ra.

Bài học số 1: máy tính cần phải đảm bảo restart thành công sau khi cài / sửa một cái gì đó liên quan đến hệ thống.
Đêm qua hì hục tạo usb, cài ubuntu server 12.04 cho máy hacker Tùng Lâm.

Thursday 30 May 2013

Tạo Usb cài Ubuntu với 1 câu lệnh

Yeah, khỏi cần usb-boot-creator hay unetbootin gì cả.

Biện pháp này đã test trên :
- Ubuntu 12.04
- ArchLinux

Chỉ cần cắm usb, chạy câu lệnh sau:
sudo dd if=/tmp/ubuntu-12.04-server-amd64.iso of=/dev/sdb bs=4M
Câu lệnh dd CỰC KỲ nguy hiểm khi bạn viết nhầm ở đoạn "of=....". Nhớ kiểm tra kỹ bạn đang gán of (out file) bằng ổ usb của mình (có thể là /dev/sdc, /dev/sdd... tùy theo số thiết bị lưu trữ bạn đang cắm).
Chờ đến khi nó chạy xong là xong :D, cắm vào boot lên rồi cài thôi.

GIẢI THÍCH:

Tìm độ dài của mã md5, sha1

Trong một bài test, hacker Tùng Lâm đã đưa ra câu hỏi: chuỗi hash md5,  sha1 có bao nhiêu ký tự. Câu trả lời được đưa ra bằng câu lệnh sau:

hvn@lappy: ~ () $ for cmd in sha1sum md5sum; do echo -n $cmd' ' && date | $cmd | cut -d' ' -f 1 | tr -d '\n' | wc -c; done;
sha1sum 40
md5sum 32

GIẢI THÍCH:

Wednesday 29 May 2013

Tìm các package đã cài liên quan đến XXX

XXX có thể là bất cứ cái gì, ở đây lấy ví dụ là bash.
Tại sao cần biết cái này?
- Thông thường, khi bạn cài OS, nó đã mặc định sẵn cài trước các gói nào rồi. Và nếu như bạn bị rơi vào một trường hợp mà các gói đó chưa được cài, bạn sẽ bế tắc (google it :v)
- Cụ thể ở đây là sau khi tớ cài ubuntu server 12.04 với tùy chọn "minimum" (bấm F4 lúc chọn action sau khi đã chọn ngôn ngữ -  xem phần comment bài này ). Phiên bản minimum này chỉ cài mỗi gói "bash", và bạn sẽ cảm thấy tính năng complete của nó kém đi hẳn (ví dụ không auto complete khi gõ apt-get install ... - vì thiếu gói hỗ trợ).


pastebinit và cho mọi người thấy bạn cài gì trên máy

Pastebin.com là một trang web để paste code vào và chia sẻ với người khác. Thường được dùng để paste lỗi, nội dung config rồi mang đi hỏi người khác.
Để tránh phải copy - paste bằng tay, hãy cài gói pastebinit:

apt-get install pastebinit -y
giờ muốn paste file nào, chỉ cần gõ :
pastebinit ten_file
Sử dụng tính năng tạo file tạm của bash, câu lệnh dưới đây sẽ "pastebin" các gói bạn đã cài trên máy mình.

Tuesday 28 May 2013

Sửa lỗi ActionDispatch::Cookies::CookieOverflow trong Rails 3.x,4

Nguyên nhân do cookie để lưu session này đã đầy (giới hạn là 4KB thì phải?)
Giải pháp: Lưu chỗ session này vào database, Rails có hỗ trợ dùng Active record.

Có 1 số tut hướng dẫn tạo table trong db bằng chạy:
$ rake db:sessions:create
Thực tế mình chạy bị lỗi (Chả hiểu sao - nên viết lại tut này làm chỗ lưu trữ cho sau này).

rake db:sessions:create
rake aborted!
Don't know how to build task 'db:sessions:create'

Monday 27 May 2013

Rủ nhau chơi Raspberry Pi

Nói chung là chơi gì thì phải 2 người hay 3 4 người cũng mới vui, nên sắp chơi cái này thì rủ mọi người chơi cùng.

Raspberry Pi là tên của một chiếc máy tính to bằng cỡ bàn tay, sau khi cắm màn hình, bàn phím, chuột, thẻ nhớ vào là bạn có thể dùng OK. Nó hiện là một trào lưu rất hot bên tây bởi giá 1 chiếc chỉ ~35$ (700K VNĐ) Nghe có vẻ rẻ nhưng phải sắm cái màn hình hỗ trợ HDMI nữa mới chạy được (các loại Tivi màn hình phẳng, hoặc màn máy tính ~3 triệu VNĐ), sau đó lắp thêm cái vỏ 200k, làm cái thẻ nhớ SD nữa, lúc ấy mới tạm gọi là chơi được.

Các chuẩn / cổng kết nối màn hình

Tên na ná đại khái thế. Bài này sẽ giúp phổ cập kiến thức về các cổng/dây nối màn hình phổ biến trên thị trường hiện nay.

1. D-sub (VGA)
Loại cổng phổ biến nhất hiện nay, bạn chỉ cần xoay cái màn hình của mình lại là thấy :D Loại  này chỉ truyền được hình ảnh, và chất lượng bình thường, được xem là một chuẩn đã lạc hậu.


Xuất hiện hàng loạt các sản phẩm màn hình giá < 3tr VND tại thời điểm hiện tại.


2. DVI-D (Digital Visual Interface - Digital only)

Khởi động trước vài ngày :))

A LÔ A LÔ VIẾT NHƯ THẾ NÀY ĐÃ ĐỦ TO CHƯA !!!!!!!!!!!!!!!!!!!!!
Đầu tiên là xin chúc mừng các thành viên của FAMILUG sắp bước qua cổng Parabol ra con đường GIẢI PHÓNG.
Như đã thông báo, trong kỳ nghỉ hè tới mình sẽ có tham gia viết bài cho HỘI (phụ nữ Việt Nam :)) ).
Mục đích đầu tiên khi mình viết bài là vì bản thân mình sau đó là giúp được ai thì giúp ^_^.
Hướng viết bài của mình là sẽ viết về lập trình web: CSS,HTML rồi mới PHP. Và tất cả sẽ ở mức độ cơ bản->  làm chủ được những thứ này (ví dụ như là CSS thì sẽ điều khiển được các khối, đối tượng 1 cách tự do, làm chủ đc giao diện ) . Và viết dựa trên sự hiểu biết của mình nên không tránh khỏi những sai sót. Mình viết lên mong các bản sửa chữa dùm.
Viết thế này thôi nhỉ !!!
Hẹn gặp lại vào tháng 6 =))

Saturday 25 May 2013

Thêm người viết bài, thêm niềm vui

Thông tin mới nhất về vụ ký hợp đồng giữa FAMILUG và anh Đồng DKU (nick: tác giả của loạt bài viết đình đám về LATEX ) vừa được tiết lộ. Theo hợp đồng này, anh Đồng Dku sẽ tham gia viết bài thường xuyên cho FAMILUG, lượng đề tài sẽ vô cùng dàn trải.
Hi vọng sẽ có một mùa hè bổ ích với Đồng Dku
yeahooo \:D/

Wednesday 22 May 2013

Đọc pdf trên Linux

Ngày còn trẻ, chúng ta thường nghe AdobeReader, FoxitReader, ngày ấy tung tăng hết các version của Windows, update mấy cái reader ngày đêm, giờ ngẫm lại vẫn còn thấy mệt :v

Trên Linux có một vài ứng cử viên sáng giá cho việc đọc PDF:
- evince (mặc định của Ubuntu từ lâu cho đến bây giờ vẫn thế), đơn giản, có tính năng bookmark.
- okular: nhiều chức năng nhất trên Linux hiện nay, phải cái là dùng KDE nên ai đang dùng GNOME hay Unity phải cài 1 đống các gói mới chạy được.
- Firefox, Chrome: đều đã có tính năng đọc PDF.Hỗ trợ vi-binding khá tiện.
- less: bạn nghe không nhầm đâu, less - chương trình để xem các file text trên terminal có thể dùng đế đọc các file PDF, tất nhiên là chỉ đọc được chữ.

Tuesday 21 May 2013

DNS và DSN

là 2 thứ chẳng liên quan đến nhau.

DNS: domain name system - hệ thống tên miền.
 các DNS phổ biến như: 8.8.8.8 (google DNS), 208.67.222.222 (OpenDNS)


DSN: data source name. Là một cái trông kiểu thế này:
mysql://user@passwd:hostname/dbname
Wiki định nghĩa nó là: một cấu trúc dữ liệu dùng để mô tả một kết nối đến nguồn dữ liệu

Hết :v

Saturday 18 May 2013

[fish] Quick review fish 2.0 trên Ubuntu 12.04

20130520 - UPDATED: kết luận về fish
TẤT CẢ CÁC TIPS sử dụng fish nên tập trung ở bài viết này.
Sau 2 ngày sử dụng, sau đây là những gì đáng chú ý:

Các tính năng hay ho
ở Prompt, path dài nó tự rút ngắn:
hvn@lappy ~> cd /usr/local/graylog2-server-0.11.0/
hvn@lappy /u/l/graylog2-server-0.11.0>

Các lỗi / chú ý
- Trên máy tớ chức năng tab của fish bị hỏng, không chuyển qua các option khác mà chỉ chọn option đầu tiên (các máy khác / phiên bản khác có thể không bị, 1 ông dùng Debian đã review và bảo không bị)
- Khi gõ lệnh, nó sẽ hiện lên 1 dòng xám để suggest, bấm ctrl F để chọn như nó đã suggest
- dùng vim  phải thêm vào  vimrc dòng nếu không sẽ gặp lỗi (đã gặp lỗi khi chạy lệnh từ trong vim):
set shell=/bin/bash
- không có !!, không thể gõ sudo !! mà chỉ có thể làm thủ công kiểu : up, Home, sudo. Họ cho thế là xịn nhưng đó thực sự là điều ở bash tớ rất thích. Nếu đang không dùng byobu/tmux/screen, bạn có thể bấm ctrl P, ctrl A, sudo để có kết quả tương tự.
- không dùng ctrl R để tìm trong history nữa mà gõ phần đầu câu lệnh, dùng Alt +Up hoặc Alt + Down để thực hiện việc này  (Alt Up/Down không hoạt động  khi dùng tmux/ byobu, screen, có lẽ phải "hack" 1 tí mới chạy được)

Friday 17 May 2013

[CCGU] Giới thiệu về shell

Shell là gì?
shell là một loại chương trình dùng để chạy các chương trình khác.

Các shell phổ biến có thể kể đến
  1. sh
  2. bash
  3. zsh
  4. fish
  5. csh
  6. ksh
  7. powershell (Windows)
  8. ...
Làm gì với shell?

[fish] Giới thiệu fish shell

Nếu bạn đã từng nghe nói đến bash / sh / hay zsh thì fish cũng là một cái tên đáng được biết đến. Chưa bàn đến khả năng dùng viết script thì riêng phần shell tương tác của fish cũng đã có các tính năng vượt trôi bash đáng để bạn dùng.

Nếu không biết bash/sh là gì, hãy đọc bài này 
Nhân dịp fish vừa ra phiên bản 2.0, FAMILUG làm ngay bài hóng hớt.

hvn@lappy ~> whatis fish
fish (1)             - fish - the friendly interactive shell

Các tính năng cài xong là thấy:
- Autocomplete
- Màu mè
- History thông minh
- gõ Help và đọc hướng dẫn sử dụng bằng web browser
Linh down package fish2.0   cho các hệ điều hành fish hỗ trợ
http://fishshell.com/files/2.0.0/linux/

Dưới đây là script để cài fish cho Ubuntu 12.04 bản x64, các phiên bản / hệ điều hành khác có thể thay đổi tùy theo máy mình:

Wednesday 15 May 2013

[Cập nhật liên tục] Các thư viện JS hay ho

 JavaScript (JS) là ngôn ngữ lập trình duy nhất ở client side (đã có mặt cả ở server side), nên hầu như tất cả các website đều cần-dùng đến nó. Với 1 Web developer yêu cầu cơ bản là bạn phải biết về JS

Các thư viện JavaScript hay ho


Familug xin list 1 số các thư viện JS hay ho mà chúng tôi sưu tập, tìm kiếm được để giúp website của bạn thêm phần sinh động, nâng cao tính tương tác với người dùng.

jQuery, Mootool và đồng bọn không được nhắc đến trong này vì quá khủng rồi






Monday 13 May 2013

[WeeklyVim] Xóa tất cả ký tự khoảng trắng ở cuối dòng

Bình thường bạn sẽ không cần tới điều này.
Nhưng bạn sẽ cần dùng đến khi bạn biết mình cần nó (và sẽ không nói ra ở đây) :D

Thêm dòng sau vào file ~/.vimrc:
autocmd BufWritePre * :%s/\s\+$//e

Có thể sửa thành

Email miễn phí với domain của bạn

Google free email cho các domain của người dùng đã ra đi từ ngày 6/12/2012, với sự rối loạn và tiếc thương vô hạn của người dùng
Đừng lo, đã có các giải pháp thay thế :D

1.OUTLOOK.com
yes, một sản phẩm của M$, nhưng không sao cả, tại thời điểm này bạn có thể tạo miễn phí 50 tài khoản email với 1 domain. Yeah

Sunday 12 May 2013

Chơi pokemon Heart Gold bằng giả lập No$GBA trên nền Wine trên Linux

UPDATE:
(20130530) chức năng "save state/ load state" chỉ dành cho GBA, nên bạn chỉ có thể dùng chức năng save ở trong game. Nhưng lưu ý là nếu bị CRASH vì một lý do nào đó thì đoạn bạn vừa save cũng mất, giải pháp là tắt NO$GBA sau mỗi lần save rồi bật lại.

Title có vẻ loằng ngoằng nhưng nó đúng là thú vị như vậy.
No$GBA là trình giả lập NDS "xịn" nhất trên thế giới hiện nay, nhưng nó chỉ chạy trên Windows.
Wine là một chương trình giúp chạy các chương trình Windows trên Linux.
Và bạn sẽ chơi game trên 2 cái giả lập như thế :D

Heart Gold trên No$GBA trên Wine trên Ubuntu

Download & Cài đặt:

Sự trở lại của FAMILUG.ORG và nỗi buồn mang tên yourname.vn

Như mọi người đã biết, FAMILUG.ORG đã bị down 1 tuần nay, vào đúng thời điểm khi số lượt truy cập đang đạt peak. Lý do là bởi sự bất cẩn của tớ và sự thiếu chuyên nghiệp của bên bán domain: yourname.vn
Họ đã không báo trước cho mình khi domain sắp hết hạn đồng thời việc thực hiện gia hạn cho domain cũng kéo dài đến 1 tuần ??!!
Tổn thất rõ ràng là chẳng kiện được ai nhưng 1 tuần nay hacker +Tùng Lâm đã không nhận được cái mail nào (do dùng mail @familug.org) làm mail chính thức.
Mọi chuyện cũng đã qua, FAMILUG lại trở lại, và ăn hại hơn xưa \m/

Sunday 5 May 2013

Chat Gtalk bằng Pidgin

Why Gtalk?
1. Một sản phẩm của Google
2. Vì Yahoo đã là quá khứ
3. Vì Skype trên Linux khá tệ (cài đặt nặng, chạy tốn nhiều CPU/RAM)
4. Có thể chat luôn từ browser

Why pidgin:
- Chương trình chat mặc định trên Ubuntu 12.04 ...
- Có thể dùng nhiều tài khỏan cùng lúc (Yahoo, Gtalk, IRC...)

Đăng nhập

Friday 3 May 2013

cp hay ln

ln trên linux gần giống như shortcut trên Windows vậy.
ln có 2 loại là hard link và soft link, ở bài này chỉ nói đến soft link (ln -s)

hvn@lappy: ~ () $ whatis ln
ln (1)               - make links between files

gần đây, tớ phát hiện ra mình hay bị dùng nhầm lệnh cp (để copy) mà đúng ra sử dụng ln sẽ tiện hơn rất nhiều. Ví dụ đây là 1 trường hợp:

Có 1 file code nằm ở /home/hvn/code/xxx.py (1)
tớ có một chương trình sẽ gọi file /usr/lib/foo/xxx.py (2)
2 file trên đều cùng một nội dung, nhưng mục đích dùng có hơi khác nhau chút:

Mariadb thay Mysql

Khi Mariadb lần lượt xâm chiếm các distro Linux, thay thế cho Mysql thì bài viết này ra đời :3

Mariadb là gì? nói đơn giản thì nó là một phiên bản phát triển từ Mysql, từ sau khi Oracle mua lại Mysql. Nhiều thử nghiệm gần đây cho thấy Mariadb có những thay đổi đáng kể so với Mysql, trong khi nó hoàn toàn có thể thay thế cho mysql mà không gặp phải xung đột gì (Tức trước kia bạn cài mysql-server thì giờ cài mariadb-server, ngoài ra không phải làm gì cả, truy vấn giữ nguyên, câu lệnh giữ nguyên, driver giữ nguyên, thư viện hỗ trợ các ngôn ngữ giữ nguyên, phpmyadmin dùng bình thương,...).
Tất cả những thông tin chém gió ở trên có thể chứng thực tại trang chủ :  https://mariadb.org

2 link cho những người hay so sánh:
https://kb.askmonty.org/en/mariadb-versus-mysql-features/
https://kb.askmonty.org/en/mariadb-versus-mysql-compatibility/

Các distro đã chính thức thay mysql bằng mariadb:
...
https://kb.askmonty.org/en/distributions-which-include-mariadb/

Vấn đề đau thương có thể gặp phải là bạn cài Mariadb sau khi gỡ Mysql (chứ không

Wednesday 1 May 2013

Sự nhảm nhí của kỳ 2 năm thứ 5

Ai đó,
một ai đó,
làm ơn giải thích giúp tôi
người ta bôi ra cái kỳ này để làm gì?
nếu tất cả những gì phải làm là "thực tập tốt nghiệp" và "đồ án tốt nghiệp",
thì tại sao tôi cần nhà trường?
Tại sao tôi phải nộp số tiền nhiều nhất trong 10 kỳ học khi chẳng ai dạy cho tôi chữ

Thursday 25 April 2013

nc, bạn biết chứ?


netcat (nc) - tool thần thánh mà hồi bé thấy các anh hacker hay dùng. Một chương trình được mệnh danh là "network Swiss army knife".

Bài viết thực hiện trên:
hvn@lappy: ~ () $ lsb_release -d
Description:    Ubuntu 12.04.2 LTS

Tranh thủ "cào lên bề mặt" của nc một tí cho vui:
hvn@cloud:~$ whatis nc; which nc
nc (1)               - arbitrary TCP and UDP connections and listens
/bin/nc
hvn@cloud:~$ dpkg -S `which nc`
dpkg-query: no path found matching pattern /bin/nc.
khá kỳ lạ là dpkg không tìm thấy package chứa netcat @@
Điều tuyệt vời là nc cài sẵn trên ubuntu 12.04, khỏi cần cài đặt gì.

Ubuntu 13.04 Raring Ringtail đã ra lò

Tuy giờ không còn nhiều điều tha thiết với Ubuntu mỗi khi nó ra bản mới, nhưng bởi tính chất lịch sử mà mỗi lần Ubuntu ra phiên bản mới, FAMILUG vẫn tiếp tục update thông tin :D

Đến giờ này (Thu Apr 25 17:13:35 ICT 2013), trên trang chủ Ubuntu vẫn chưa update gì về 13.04, thế nhưng chúng ta đã có danh sách các thay đổi của phiên bản này:
https://wiki.ubuntu.com/RaringRingtail/TechnicalOverview
https://blueprints.launchpad.net/ubuntu/raring/+specs

nếu bạn cũng không quan tâm lắm thì dưới đây là một vài thông tin vắn tắt:

PHIÊN BẢN DESKTOP
- Linux kernel 3.8.8: nếu máy bạn chạy ok và bạn cũng chả biết phiên bản kernel mình đang dùng là bao nhiêu thì điều này cũng chẳng cần quan tâm.
- Unity 7: phiên bản mới nghĩa là sẽ mượt hơn, nhẹ hơn (đoán thế). Từ ngày Ubuntu dùng Unity thì tớ đã chuyển sang dùng i3-wm nên cũng chẳng biết là nó thế nào :D

Thursday 18 April 2013

[CCGU] Các câu lệnh để tìm hiểu câu lệnh (Phần 2)

Phần 1 ở đây đã phần nào giúp bạn giải quyết các vấn đề gặp phải khi tìm hiểu 1 câu lệnh.
Phần 2 tiếp tục với những câu lệnh  sẽ giúp ích khi bạn cần tìm hiểu về các câu lệnh / package

Thay nội dung phần trong và dấu <> thành từ khóa bạn muốn tìm hiểu
1. Tìm tên của package
Nếu bạn không biết chính xác tên package, có một số cách để tìm nó:

- Tìm bằng apt-cache search:
apt-cache search <tu_khoa>

Sunday 14 April 2013

[Announce] Bỏ checkbox Like và Thanks

Trước giờ cuối mỗi bài viết luôn có 2 ô checkbox: thanks và like.
Tuy tồn tại đã lâu nhưng rõ ràng là không thu hút được sự chú ý của người đọc.
Vậy nay tớ sẽ bỏ 2 ô checkbox này, nếu bạn thích/ muốn/ cần bấm thanks/like , vui lòng bấm +1 của Google hoặc share bài trên Facebook (có ở cuối mỗi bài viết).

Nút Like của Facebook sẽ có thể được tích hợp sau khi ban quản trị xem xét (Do nhiều nơi Facebook bị chặn khiến việc load site trở nên chậm đi rất nhiều)
Thân!
HVN

Saturday 13 April 2013

[CMD] Các lệnh quản trị một máy tính Linux


Bạn sở hữu 1 chiếc máy tính chạy Linux? lý do ấy quá đủ để bạn cần biết cách để quản lý / theo dõi nó!
Bài viết này sẽ đưa ra những câu lệnh cần thiết để quản lý 1 máy tính sử dụng hệ điều hành nhân Linux

Thực hiện trên:
hvn@lappy: ~ () $ lsb_release -d; uname -rm
Description:    Ubuntu 12.04.2 LTS
3.2.0-39-generic x86_64

1. free
hvn@lappy: ~ () $ whatis free
free (1)             - Display amount of free and used memory in the system
Lệnh `free` dùng để hiện thị lượng RAM còn trống và đã sử dụng trong hệ thống.

Giải thích output của lệnh này:
hvn@lappy: ~ () $ free -m



-m : dung lượng tính bằng MB
Dòng Mem:.... chi tiết bao nhiêu RAM đang sử dụng cho mục đích gì
Dòng -/+ buffers/cache: nhìn có vẻ khó hiểu nhưng đây là dòng mà người dùng thường quan tâm nhất. Như trong ví dụ cho biết: 1094 MB RAM đang được sử dụng, và 2649 MB đang còn trống.
-/+ buffers/cache là gì?
Lấy thông số của cột used,  trừ đi buffers và cached dòng Mem sẽ thu được giá trị cột used  cho dòng này.
Tương tự với cột free nhưng thay vì trừ, ta + 2 giá trị đó vào. 

Friday 12 April 2013

[SomethingNew] Vài website về công nghệ

dọn dẹp bookmark tranh thủ gửi ra đây vài site mà bản thân mình thấy hay ho

Hacker News: https://news.ycombinator.com/ => đặt làm homepage :D
Tutsplus: http://net.tutsplus.com/ => các tut về lập trình, đồ họa ... đặc biệt là web
Lifehacker: http://lifehacker.com => mọi loại hack không chỉ liên quan đến máy tính, trang này giờ bớt hay nhiều rồi ~~
StackExchange: http://stackexchange.com/questions => các site của StackExchange là sát thủ thời gian ~.~

Friday 5 April 2013

[SmartUsing] Tất cả là bởi user

Bạn có thể có một tốc độ gõ phím kinh hồn :x bạn có thể chạy lệnh ầm ầm trên 1 terminal xanh lét (yeah). Đã đến lúc dừng lại một chút để xem bạn có hơi bị "chăm" quá không!

Có kỹ năng là điều tuyệt vời, tốc độ gõ phím cực kỳ quan trọng, nhưng có thể bạn đã làm sai 1 điều gì đó chăng? hãy nhìn vào các "thói quen xấu" mà rất nhiều người mắc phải sau. (Ít ra tớ đã thấy > 2 người làm thế)

Tớ sẽ dùng các lệnh cơ bản nhất để minh họa!

1. ls
thú thật tớ chính là người mắc cái bệnh này nhiều nhất. Câu lệnh đầu tiên khi tớ gõ vào terminal là gì? Luôn là ls. Miễn cứ mở shell ra là ls vài phát. Và tớ nhận ra đây là một thói quen xấu. Why?
Nếu bạn từng ấn F5 (hay chuột phải > refresh) trên Window, điều này cũng tương tự. Đó chỉ là do thói quen, đôi lúc bạn có thể cần nó, nhưng nhiều khi không. Thử hỏi xem bạn sẽ thu được gì khi gõ ls, có thực sự đó là điều bạn muốn không?

Thursday 4 April 2013

Lột trần một hệ thống email

Email thì ai cũng dùng. Những từ như : from/ recipients / subject ai cũng biết cả. Nhưng đằng sau là một hệ thống server với đầy thuật ngữ. Hãy vạch trần chúng, đưa ra ánh sáng để không còn gì là mờ mịt!

0. MUA là gì?
Mail User Agent (MUA) là loại chương trình cho phép gửi và nhận email. Chương trình này tương tác trực tiếp với người dùng. Các MUA đóng vai trò là SMTP client khi GỬI mail và là  IMAP/POP3 client khi truy cập + đọc mail.
VD: Thunderbird, Outlook, mutt, RoundCube, SquirrelMail ...

1. SMTP là gì? IMAP là gì? POP3 là gì?
3 giao thức (protocol) dùng trong gửi và nhận email. Đây đều là các giao thức cho mô hình client-server, tức là sẽ có máy đóng vai trò server, và có máy đóng vai client.

SMTP: Simple Mail Transfer Protocol - giao thức truyền mail đơn giản (dùng để gửi mail)

POP3: Post Office Protocol 3 - giao thức truy cập mail từ xa. Trong giao thức này, MUA với vai trò POP3 client, download các email về đĩa cứng máy tính cá nhân và xóa các  email đó trên server

IMAP: Internet message access protocol - giao thức truy cập mail từ xa. Trong giao thức này, MUA với vai trò IMAP client chỉ lấy về các thông tin về email (from, to, subject ...), và chỉ lấy nội dung của email khi người dùng yêu cầu. Nó không xóa email trên server nếu người dùng không yêu cầu.


2. MTA là gì? (mail server là gì)
Mail Transfer Agent (MTA) hay còn được gọi với cái tên dễ hiểu khác là "mail server", làm nhiệm vụ nhận email từ máy khác và chuyển nó đến đích cần đến. Các MTA đóng vai trò là SMTP server.


Transfer: truyền, chuyển
VD: postfix, qmail, exim
Cố tí nữa đi, sắp hết rồi...

Friday 29 March 2013

[WeeklyVIM] edit nhiều file với vim

Dạo này đang luyện chỉ mở vim một lần duy nhất để thực hiện tất tần tật công việc cần edit, thay vì mọi khi ctrl z rồi cd đến thư mục có file đó, ls, vim ten_file... khá là thủ công.

Vài tips trong quá trình thực hiện:
:pwd  # xem tên thư mục hiện tại
:tabnew đường_dẫn_đến_file # mở file này bằng một tab mới
:gt # chuyển sang tab tiếp theo
:gT # chuyển sang tab liền trước

Wednesday 27 March 2013

Cài đặt apt-cacher để tiết kiệm thời gian...

... khi sử dụng nhiều máy tính cùng hệ điều hành (tất nhiên là Debian/Ubuntu based)
Nếu chỉ dùng 1 máy tính duy nhất hoặc 2 máy khác hệ điều hành (hay khác version) thì bạn chả tiết kiệm được gì cả.
Apt-cacher giúp bạn chỉ phải download package 1 lần và có thể sử dụng qua nhiều máy.
Trường hợp có thể dùng nó:
- có nhiều máy (2 máy đổ lên) dùng hệ điều hành cùng version
=> bạn có 1 laptop và 1 desktop đều chạy ubuntu12.04 chẳng hạn
=> đây là điều tuyệt vời nếu bạn sử dụng các máy ảo. Sẽ tiết kiệm rất nhiều thời gian tải các package.
Bài này được viết để chứng tỏ rằng công việc này vô cùng đơn giản và không có gì kinh khủng hay thần thánh mà giúp người đọc có thể tiết kiệm rất nhiều thời gian. Về cơ bản thì tất cả tut trên FML đều ngắn, vì chả ai có sức viết dài cả, vậy nên thấy bài viết trên FML thì độc giả hãy tin rằng những thứ này rất đơn giản!

root@srvbase:~# lsb_release -d
Description:    Ubuntu 12.04.2 LTS
root@lappy: ~ () # whatis apt-cacher
apt-cacher (8)       - caching proxy for Debian packages

Cài đặt:

Rất nhiều free ebooks

Tất nhiên bằng Tiếng Anh
và tất nhiên là chúng thực sự free

http://hackershelf.com/browse/?popular=1

Vài quyển tiêu  biểu:

Sunday 24 March 2013

Gửi, nhận email với mutt

Tớ đang trong quá trình console hóa toàn bộ tất cả những gì tớ dùng trên máy tính.

mutt - một mail client lừng lẫy đã tồn tại gần hai thập kỷ, và tớ sẽ dùng nó thay thế cho Thunderbird (hay các bạn dùng Windows sẽ dùng Outlook).

"All mail clients suck. This one just sucks less." -me, circa 1995
 Những ưu điểm nổi bật nhất của mutt khi so với Thunderbird: