Skip to main content

Posts

[Golang] ba chấm

Trong Go có một ký hiệu khá đặc biêt: ba chấm (...) Ba chấm, thêm vào mỗi cuối câu, để lại một sự miên man trong suy nghĩ. Như "Anh ... em"... Và có vẻ như bác Rob Pike cũng hiểu 3 chấm có ý này nọ kiểu vậy, nên lấy nó làm ký hiệu cho "wildcards". Tức dấu ... sẽ "match" với tất cả mọi thứ (gần giống ký hiệu * trong shell). Khi viết "github.com/hvnsweeting/pika/..." nó sẽ match với tất cả các sub package trong package "pika" cũng như chính package "pika". Để làm gì?  Một ứng dụng đơn giản là để test tất cả các package / subpackage trong 1 package, Ví dụ: cần test toàn bộ package github.com/labstack/echo chỉ cần chạy go test github.com/labstack/echo/...

Tiếng Anh

Học tiếng Anh không phải chuyện đơn giản, nhưng rồi ai cũng phải làm. Hãy tạm ngừng than vãn về độ khó của Tiếng Anh và xem những developer nổi tiếng nói về việc họ đã học nó vất vả ra sao. 1. Linus Torvard - creator of Linux, git Linus Torvard là người Phần Lan (Finland), nơi mà tiếng Anh không phải là tiếng mẹ đẻ. Linus đã bắt đầu đọc bộ Lord Of The Rings với một quyển từ điển, và khi kết thúc ông không cần nó nữa. That said, I'll point to a couple of books I really enjoyed. On the non-fiction side, Richard Dawkin's "The Selfish Gene" was one book that I think is pretty influential. On the fiction side, as a teenager I enjoyed Heinlein's "Stranger in a strange land" a lot, and I have to admit to "Lord of the Rings" having been pretty important to me - but for a slightly odd reason, not as a huge Tolkien fan. For me, it was one of the first "real" books I read in English, and I started with a dictionary by my side, and ended...

Django

Django đọc là gieng gâu ( JANG -oh). Chữ D là âm câm, không phát âm. Nghe phát âm ở: http://red-bean.com/~adrian/django_pronunciation.mp3 Django là tên của Python web framework phổ biến nhất vũ trụ. Được đặt tên theo Django Reinhardt - một trong những guitarist vĩ đại nhất mọi thời đại. Cùng nghe một album của ông: Tham khảo. https://docs.djangoproject.com/en/1.8/faq/general/#what-does-django-mean-and-how-do-you-pronounce-it https://en.wikipedia.org/wiki/Django_Reinhardt P/s: Ngoài ra cũng có một bộ phim tên là "Django Unchained" rất nổi tiếng và đã thắng 2 giải Oscar.

Ghi nháy về lọc process theo state bằng check_procs

check_procs là tên của chương trình dùng để check process trên 1 máy theo tiêu chí nào nó. Bài viết nhắm tới độc giả đã sử dụng check_procs / nagios / shinken.  Trên Ubuntu 14.04 nó nằm trong package: $ dpkg -S '/usr/lib/nagios/plugins/check_procs' nagios-plugins-basic: /usr/lib/nagios/plugins/check_procs Được dùng trong monitoring, thường dùng kèm với NRPE, NSCA, nagios, shinken ... check_procs có chức năng lọc process theo state , nó lấy output của lênh: /bin/ps axwwo 'stat uid pid ppid vsz rss pcpu etime comm args' rồi xử lý. State của 1 process là ký hiệu xuất hiện ở cột đầu tiên trong output của lệnh trên. Ta có thể liệt kê / đếm các process có state là S bằng lệnh sau: $ /usr/lib/nagios/plugins/check_procs -s S -vv | head -n4 CMD: /bin/ps axwwo 'stat uid pid ppid vsz rss pcpu etime comm args' Matched: uid=0 vsz=0 rss=0 pid=2 ppid=0 pcpu=0.00 stat=S etime=70-01:46:40 prog=kthreadd args=[kthreadd] Matched: uid=0 vsz=0 rss=0 pid=3 ppid=2 p...

[crypto] md5, sha, bit, byte, và hex

8 bits = 1 byte 1 byte biểu diễn được 2^8 = 256 "ký tự" 4 bits biểu diễn được 2^4 = 16 "ký tự". Một ký tự thuộc hệ hexadecimal (hệ số 16) là một ký tự trong khoảng: 0123456789abcdef Vậy chỉ cần 4 bits là có thể biểu diễn 1 ký tự hex, 2 ký tự hex = 1 byte MD5 là gì? MD5 là tên một thuật toán hash được sử dụng rộng rãi, được định nghĩa đầy đủ trong rfc1321. Thuật toán hash hiểu nôm na là thuật toán nhận 1 đầu vào thì sẽ cho ra 1 kết quả duy nhất, 2 đầu vào khác nhau sẽ phải cho ra 2 đầu ra khác nhau. nhận đầu vào có kích thước tuỳ ý nhưng trả về đầu ra với kích thước cố định. Các hàm hash dùng trong bảo mật thường có thêm tính chất: với 2 đầu vào khác nhau sẽ luôn cho ra 2 đầu ra khác nhau. Giá trị được trả về bởi hash function gọi là "hash value", "hash codes", "hash sums", hay "hash". Ví dụ: $ printf "familug" | md5sum b2bc686c91b99bd9cd92e70cdeaadf40  - $ printf "FAMILUG" | md5sum 60e...

[Golang] gofmt và sắp xếp import package

câu lệnh `` gofmt `` (đọc là gâu-phằm) sẽ tự động sắp xếp import, format code của file đầu vào, và in ra màn hình code đã được format theo tiêu chuẩn của Golang. Nếu để các dòng import liền nhau, gofmt sẽ sắp xếp chúng theo thứ tự alphabetical. Để tách riêng các standard package với các external package, phân cách chúng bởi 1 dòng trắng. Hai cụm import sẽ được gofmt sắp xếp riêng. Ví dụ: import (     "encoding/json"     "fmt"     "net"     "net/http"     recover_mw "git.familug.org/hvn/golib/echo/recover"     log "github.com/Sirupsen/logrus"     logmw "github.com/deoxxa/echo-logrus"     "github.com/labstack/echo" ) Cũng có thể dùng goimports để sắp xếp với logic tương tự mà không cần dòng trắng, nhưng đôi khi goimports tỏ ra quá thông minh và đã có lần tự import https://github.com/cockroachdb/cockroach/tree/421dcbbfe645eab4b49f682eabf69d98d36e50b...

Popular posts from this blog

Tài liệu và hướng dẫn học Python

Để tiết kiệm thời gian, tốt nhất là đi học PyMI Updated: 130617 Sau đây là các tài liệu khuyên dùng: Vì nhiều lý do, nên học python2.7 tại thời điểm hiện tại (giờ là tháng 6/2013 - muốn biết tại sao thì tự tìm hiểu) python 3.5+ (giờ là tháng 2/2017) Chuẩn bị: 1. biết bật tắt máy 2. biết cài python 3. tập gõ 10 ngón - gõ 2 ngón hay 1 ngón cũng không sao, nhưng 10 ngón là cách dễ nhất để gõ nhanh nhất. Tài liệu - Nên dùng tài liệu tại trang chủ của Python làm chính, tham khảo thêm các tài liệu khác tại http://www.familug.org/2016/12/free-ebook.html Căn bản, mới học 1.1 Python PyMI.vn https://pymi.vn/tutorial/ 1.2. Python offical tutorial kết hợp làm bài tập trên HackerRank  (đề bài bằng tiếng Anh, nhưng Google translate 1 lúc cũng ra vì có nhiều ví dụ mẫu đi kèm). Học viên của Pymi.vn có rất nhiều học viên đã tự học với Learn Python the hard way nhưng chưa thấy ai thành công cả. Hai link dưới nên đọc sau khi đã nắm được những phần cơ bản của ngôn ngữ pytho...

The PyMiers

New FAMILUG