Nếu cả thế giới quay lưng lại với tôi, tôi sẽ đơn giản chỉa mông về phía họ! If the world turn their backs on me, I will turn my butt on them!
Tuesday, May 28, 2013
Golang: cái lợi khi phải chuyễn kiểu tường minh cho loại số
Lần đầu tiên tối viết một ứng dụng chạy được mà không quá nhỏ trên Go là một ứng dụng xử lý ảnh. Mọi thứ khá phức tạp với Go ở chổ phải làm việc với các loại số, int32 cho ảnh 32bit, int8 (char trong C++) cho ảnh 8bit. Khó khăn là vầy:
var a int32
var b, c int8
a = b + c // báo lỗi khi biên dịch.
Go không cho tự động chuyễn kiểu giữa các loại số, ta phải chuyễn kiểu tường minh, có nghĩa là phải:
a= int32(b) + int32(c)
Cái lúc viết xong chương trình nói trên, phải níu là mệt mỏi với cái kiểu bắt buộc chuyễn kiểu, nhưng dần già mình đã hiểu tại sao Google lại đưa ra hướng thiết kế đó. Cụ thể mấy bửa nay quay về với C++, vẫn là xử lý ảnh.
Ứng dụng này có 1 công đạon cần tính cái BoundingBox (hình chữ nhật bao bên ngoài 1 vật thể nào đó) sau đó xem coi cái box đó có khả năng là hình gần gần vuông không. Đơn giản mình làm theo kiểu:
float r = box.width/box.height
0.9 <= r <= 1.1
Thử với vài hình vuông và hình chử nhật tự vẻ ok, thử luôn trên vài cái hình được, tạm ổn, cho tới hôm nay có 1 cái hình ngang 71 dọc 72, dò hoài không ra cái hình này.
Mò mẫm trong mấy trăm dòng code tới cuối ngày thì hỡi hỡi ôi, r =71/72; r == 0 mà cứ tưởng nó ra 0.98xxxxx.
Sunday, May 26, 2013
Vài đoạn bash thường dùng trên Ubuntu
Ghi ra để không quên...
Đếm số dòng code trong thư mục:
Đếm số dòng code trong thư mục:
find . -name '*.ext' | xargs wc -l
export PROMPT_DIRTRIM=2
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
}
PS1="\[\e[0;39m\]\[\e[1;33m\]${debian_chroot:+($debian_chroot)}\h\[\e[0;39m\]:\w\[\e[1;35m\]\$(parse_git_branch)\[\e[0;39m\] $ "
Subscribe to:
Posts (Atom)