Wednesday, 22 July 2015

git config, go get private repo và gitlab

Nghe có vẻ không hề liên quan gì nhưng thực tế là cực kỳ liên quan :3

1. git config
Git config được, và nội dung config của nó nằm ở ~/.gitconfig
Gõ lệnh ``git help config`` để xem đầy đủ.

2. go get với private repository
Khi code bằng Golang, việc dùng git để quản lý code và tống nó lên một private repo là một điều hết sức hiển nhiên. Chả ai mang code private ra nơi công cộng để cả (github public chẳng hạn).
Vậy nhưng ``go get`` không hỗ trợ clone private repo qua SSH (hay chính xác là không có option nào để chỉ cho ``go get`` rằng nó phải dùng ssh chứ không phải HTTPS).

Vậy nên khi gõ:
$ go get git.XXX.com/mana/salt

Fetching https://git.XXX.com/mana/salt?go-get=1 # tự thêm https ở đầu
package git.XXX.com/mana/salt: unrecognized import path "git.XXX.com/mana/salt"
Giải pháp cho vấn đề này là sử dụng git config để chuyển dòng https thành git@GIT_SERVER_ADDR.

Tuesday, 21 July 2015

[Vim] TOhtml, filetype, plugin, indent

1. TOhtml

Trong Vim, ở normal mode, gõ ``:TOhtml``, vim sẽ convert file hiện tại thành code HTML.

2. filetype
Vim có cơ chế load plugin dựa trên kiểu của file đang mở.
Để xem thiết lập hiện tại, gõ ``:filetype``
Kết quả có thể trông như thế này:
filetype detection:ON  plugin:ON  indent:ON
Gõ ``:filetype on`` để bật chế độ tự động nhận dạng filetype. Gõ ``:filetype off`` để tắt.

3. plugin

[PyFML] Tuyển sinh khoá học Python tháng 8/2015

Tiếp nối thành công của khoá PyFML1
 lớp học Python khoá 2 sẽ mở vào tháng 8/2015 tại Hà Nội, xem chi tiết tại đây.
Homepage của lớp học: https://www.facebook.com/pyfml

Bạn muốn tự học?
- Tài liệu: http://www.familug.org/2011/04/learning-python.html

Friday, 17 July 2015

[Go] strings package - xử lý string

Xử lý strings chưa bao giờ là một công việc không nhàn chán đối với tôi, nhưng chán
không có nghĩa là không phải làm, vì chán thì vẫn phải làm, vậy nên đành làm cho nó chán mình.

Bài viết giới thiệu các function hữu ích thường dùng trong package strings của Golang, kèm theo các method tương ứng của Python

Bài viết thực hiện trên:
$ go version
go version go1.4.2 darwin/amd64
Tổng số function strong package strings:
$ godoc strings | grep ^func | grep -v 'func (' | wc -l
      43
1. func Contains(s, substr string) bool
Kiểm tra xem string ``s`` có chứa string ``substr`` hay không.

Wednesday, 15 July 2015

imgur - upload/share screenshot cho Ubuntu

Hướng dẫn này dành cho ai ko dùng Desktop Environment (dùng i3 chả hạn ._.)

Distributor ID:    Ubuntu
Description:    Ubuntu 14.04.2 LTS
Release:    14.04
Codename:    trusty

$ cd ~
$ wget https://github.com/jomo/imgur-screenshot/archive/master.tar.gz
$ tar xzvf master.tar.gz
$ rm master.tar.gz
$ cd imgur-screenshot-master/
$ sudo ln -s /home/lamdt/imgur-screenshot-master/imgur-screenshot.sh /usr/bin/shit

Tuesday, 14 July 2015

Giới thiệu nhanh về MIME

MIME là một từ khoá bạn sẽ nghe tới không ít lần nếu đã sử dụng các email client (MUA) trên desktop.

MIME là gì?
Viết tắt của cụm từ "Multipurpose Internet Mail Extensions"
được mô tả trong RFC 1524 và các RFC khác: RFC 2045, RFC 2046, RFC 2047, and RFC 2231

Nói một cách đơn giản, lúc mới ra đời, giao thức gửi mail chỉ hỗ trợ gửi plaintext, MIME là phần mở rộng cho phép email có thể gửi/nhận các file có định dạng khác (HTML, video, nhạc, ...)
Python: xem https://docs.python.org/2/library/email.html

Sử dụng MIME
Trên UNIX-based OS, các file sau được cung cấp (hoặc tự tạo nếu không có) để hỗ trợ MIME:

Saturday, 4 July 2015

[CLI] watch - lót dép ngồi hóng

watch là một động từ, với nghĩa là "xem - theo dõi", kiểu như watching TV.
Với ý nghĩa tương tự, command line ``watch`` sẽ cho phép bạn ngồi xem màn hình, như đang xem tivi.

Chào hỏi kiểu CCGU:
$ for cmd in whatis whereis which; do echo $cmd: `$cmd watch`; done
whatis: watch (1) - execute a program periodically, showing output fullscreen
whereis: watch: /usr/bin/watch /usr/share/man/man1/watch.1.gz
which: /usr/bin/watch
watch sẽ chạy một chương trình theo chu kỳ, hiển thị output đầy màn hình ~.~

Để theo dõi các process dùng nhiều CPU nhất trên máy, theo chu kỳ 2 giây (giả lập lệnh top):