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