New FAMILUG

The PyMiers

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