Monday, January 13, 2014

Move to new machine, old system

1. Install new system

2. mount old/new system, use rsync to move old system to new system

vim exclude
/dev
/proc
/sys
/tmp
/run
/mnt
/media
/lost+found
/etc/fstab
/etc/mtab
/boot

rsync -aAXv /path/to/old/system /path/to/new/system --excludes-from exclude

Make sure that fstab's correct.

rsync doesn't overwrite your system, it merges them

Severus

Friday, January 10, 2014

Ibus-bogo bộ gõ Tiếng Việt mới trên Linux

Trên linux bấy lâu nay, ibus-unikey, scim-unikey, uim và m17n thống trị đã lâu, hôm nay tác giả giới thiệu thêm một bộ gõ mới do một nhóm các bạn ở Hà Nội viết hoàn toàn bằng python
 Ibus-bogo

Về điểm mạnh, yếu thế nào thì các bạn dùng thử sẽ rõ, các tính năng kiểm tra chính tả, gõ tắt,... rất tốt, thậm chí tốt hơn cả ibus-unikey bấy lâu.

Hiện nhóm đang phát triển liên tục bộ gõ này, tương lai có thể sẽ là bộ gõ tiếng Việt chính cho rất nhiều bản phân phối.

P/s tác giả đang gõ bằng bogo đây ;)

Các bạn có thể cài đặt cũng như tham gia dự án tại đây
ibus-bogo

Thursday, January 9, 2014

QT apps and Ibus

Các ứng dụng viết bằng QT có nhược điểm là nó không nhận Ibus như Skype hay Opera,...Muốn nhận thì phải thông qua X input ( theo anh Yang nói vui là :" Đã vẽ được lên X thì phải dùng X" )
Sau khi check các env sau khi khởi động hệ thống thì kết luận là thiếu các biến môi trường:
nhấp phải chọn Input Method trên terminal chọn "X input method", chuyển bộ gõ không có kết quả.
env | grep ibus =>> không có kết quả
ibus-daemon -x --replace =>> không hiệu quả.
export XIM_PROGRAM=ibus =>> không có hiệu quả

Solved:
thêm ba dòng sau vào .bashrc:
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
Hầu hết các ứng dụng QT sẽ chạy với Ibus khi export đủ ba biến môi trường trên, tuyệt đối không thêm dòng: ibus-daemon -x -d vào .bashrc sẽ gây crash ibus !

với Opera:
Mặc dù đã thêm ba dòng trên vào .bashrc tuy nhiên có một số vấn đề trên Opera làm nhiều Users Nix khó chịu là không nhận ibus, có một số tip như sau:
XIM=ibus ( với mình không hiệu quả )

solved:
chạy opera trên terminal với lệnh:
XMODIFIERS=@im=ibus opera
=>> chung : XMODIFIERS=@im=ibus QT_Apps_command

Cảm ơn anh Yang đã giúp em kiểm tra, từ trước tới giờ em cứ nghĩ đã export đầy đủ các biến môi trường :D

Update:
Có thể chỉnh sửa /etc/profile như sau để giải quyết vấn đề (thật ra file /etc/profile nó được set đầu tiên trước .bashrc và wide trong system )
export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE="ibus"
export QT4_IM_MODULE="ibus"
export QT_IM_MODULE="ibus"

Cảm ơn anh Trường An cho tip trick này :D

Tại sao lại là Arch mà không phải thứ khác

Hôm SFD vừa rồi, nhóm TheSlinux có tham gia một chủ đề "Giới thiệu Distro TheSlinux". Tôi thấy có một câu hỏi khá thú vị mà MT đã hỏi chúng tôi "Tại sao chọn Arch làm distro mới mà không phải là LFS ?"

Câu hỏi khá hóc cũng khá dễ trả lời, nhưng tôi sẽ trả lời theo cách của riêng mình.

Sự khác biệt cơ bản giữa các distro

+ Triết lý người dùng hướng tới : mỗi distro sẽ có một triết lý và nhóm người dùng hướng tới khác nhau như Arch cho geek, Ubuntu cho người dùng mới thân thiện, hoặc đơn giản bất đồng quan điểm phát triển mà sinh ra nhánh khác.

+ Về mặt kĩ thuật : Mỗi nhóm phát triển có cách tùy biến distro của họ cũng như trình quản lý gói riêng, đừng hỏi sao Centos và Redhat y chang nhau vì đơn giản không có cùng quan điểm triết lý.

Trở lại câu hỏi vì sao trên kia, tôi muốn nói về LFS trước,

LFS không phải là một bản phân phối Linux, đó là một dự án mở để tạo ra các bản Linux tự chế. Với dự án này, mọi người có thể tạo ra một bản phân phối cho họ hòan tòan từ mã nguồn. Tuy nhiên vấn đề lớn nhất cho dự án này là hệ thống gói và trình quản lý gói đều không có. Điều này dẫn đến 2 vấn đề cho người dùng :

- Không quản lý được xung đột trong hệ thống,

- Không có cơ chế transaction và tòan vẹn hệ thống file.
Đối với nhà phát triển : buộc phải giải quyết 2 vấn đề trên.

Tuy nhiên để giải quyết 2 vấn đề trên không dễ nhất là cấp độ mã nguổn, việc kiểm sóat các xung đột, rollback khi có sự cố đòi hỏi phải có một trình quản lý gói tốt, đó đồng thời là lý do gentoo được dùng tốt hơn LFS.

Bù lại các điểm trên LFS có một hệ thống wiki về biên dịch các gói rất tuyệt vời.

Quay lại với Arch, Arch có ưu nhược điểm gì 

Arch là hệ thống rolling release nên không có chuyện nâng cấp phiên bản, đây là thuận lợi cũng là bất tiện khi người dùng luôn có phần mềm mới nhất trong khi phần mềm này chưa chắc đã ổn định, tốc độ phát triển quá nhanh khiến các nhà phát triển phải chạy theo, cũng như người dùng gặp các lỗi khác nhau cho cùng một phần mềm.

Bù lại Arch có một hệ thống build đơn giản dễ tùy biến, không bó buộc, có một hệ thống abs cho riêng người dùng và aur do người dùng cuối duy trì.

Tóm lại nếu MT là người thường xuyên làm việc với hệ thống sẽ có một câu trả lời cho chính bản thân, câu hỏi troll xoáy như vậy rất dễ trả lời là không đủ nhân lực, thời gian viết từ nhân Linux viết lên được.

Wordpress và Viettel

Lâu lắm rồi, từ bài "monitor file system with Git" đã xóa, không viết lách gì cả, hôm nay viết vài dòng cho đỡ mess cái não trước khi tiếp tục các dự án cùng anh em (bogo, TheSLinux)

Đầu năm đầu tháng, không rõ vì lý do gì Viettel chặn wordpress.com, chính xác là các trang xxx.wordpress.com làm các tài liệu mình cần không vào được, ức chế thật, sau 30 phút trouble thì đã ra cách chặn, hài thật

Đầu tiên, ping đến một blog nào đó nó không đến nơi được nhưng có được ip của nó (thật sự chả biết ip đó có ý nghĩa gì), sau đó nslookup thì ra một dãy ip server của nó cùng một tên là lb.wordpress.com, khà khà, lặp lại với 3 blog khác đều như thế,
Nhưng đến trang chủ wordpress.com và en.support.wordpress.com thì lại vào bình thường, làm như trên thì ố la la ra một dảy ip khác là vip-lb.wordpress.com, ok sau đó traceroute thi 3 con blog tới adsl.viettel.vn thì tạch trong khi 2 em dưới về nhà an toàn,

Vậy đã rõ Viettel chặn theo ip của các dải kia rồi hị hị

Ngày xưa để vào facebook thì dùng file host, nhưng có bất tiện là nó phải add từng domain một, không cho wildcards, so sucks, muốn wildcards phải lên cấp độ dns, và phải có dải ip mình cần

Mượn một em trong cái ip không bị chặn kia làm "người hỏi đường" tức là các blog không nằm trong đó nhưng nó sẽ hỏi các server khác và trả về cho mình blog minh cần làm ip chính cho tất cả các domain/sub domain .wordpress.com

Nếu dùng file host thì phải thêm vào dạng "ip" "x.wordpress.com", có 1000 blog thì phải thêm tay 1000 lần, quá mệt mỏi phải không,

Như đã nói, chúng ta phải xây dựng một local dns, chỉ định map các ip và host,

dnsmasq là một lựa chọn tương đối đơn giản cho yêu cầu này, nhưng vấn đề không nằm ở chỗ đó mà chỗ nó nằm chung vói dnscrypt-proxy

vậy dnsmasq sẽ là cổng nhận tín hiệu yêu cầu dns, chuyển qua cho dnscrypt-proxy đồng thời cache lại tín hiệu trả về, như vậy các yêu cầu sau sẽ nhanh hơn vì không cần hỏi lung tung nữa haha

Cách config thì gg nhiều không viết lại, ý tưởng đơn giản chỉ có thế thôi, khì khì

Severus

Oxford dictionary 8 Archlinux installation

Nghe thiên hạ đồn, Oxford Advanced learners's Dictionary tốt, tác giả cũng cố gắng dùng. Nhưng cũng không ít khó khăn khi cài bộ từ điển này, nhất là flash.

1. Bài toán về phiên bản của Flashplayer

- Có hay không cho 1 hệ thống chạy 2 phiên bản flashplayer ?

Câu trả lời là có. Oxford Dictionary dùng Mozilla rumtime environment để khởi chạy, việc chỉ định dùng thư viện phiên bản nào là có thể làm được.

2. Bài toán thư viện và giải quyết

Sau khi cài đặt Oxford dictionary trong lần khởi chạy đầu tiên bạn sẽ bị cảnh báo thiếu thư viện như:

LoadPlugin: failed to initialize shared library /home/dragon/oald8/plugins/libflashplayer.so [libplc4.so.0d: cannot open shared object file: No such file or directory]

=>> Bạn cần làm vài thao tác sau:

ln -s libplds4.so libplds4.so.0d

ln -s libnspr4.so libnspr4.so.0d

ln -s libplc4.so libplc4.so.0d

* Đối với i686 cần thêm : ln -s /usr/lib/libnssutil3.so /usr/lib/libnssutil3.so.1d
* Đối với x64 cần thêm: cp /usr/lib32/libnssutil3.so /path/oald/libnssutil3.so.1d

Ok, đến đây chỉ là nửa đường thôi, nếu bạn nóng vội chạy ngay file oald8 thì sẽ gặp lỗi:
./run-oald8.sh: line 131:  1502 Segmentation fault      (core dumped) "$prog" ${1+"$@"}

Khi tác giả debug thì nhận ra rằng do flashplayer của OALD8 và flashplayer của hệ thống xung đột. Đó là lý do xuất hiện câu hỏi ở trên.

+ Giải pháp (Solution)

Việc tìm kiếm thư viện trong hệ thống Linux dựa vào biến môi trường, và mozilla rumtime environment cũng vậy.
Việc chỉ định thư viện cho các plugin của Mozilla dựa theo biến môi trường:
MOZ_PLUGIN_PATH=

Vậy vấn đề là cần chỉ định nó cho OALD8 là xong, còn flash của hệ thống thì kệ nó.

+ File thực thi OALD8:

Bạn cần viết một bash file với nội dung như sau :

* i686

#!/bin/sh
export MOZ_PLUGIN_PATH=/path/oald8/plugins
padsp /path/oald8/oald8 

* x64
#!/bin/sh
export MOZ_PLUGIN_PATH=/path/oald8/plugins/
LD_PRELOAD="/usr/lib32/pulseaudio/libpulsedsp.so" /path/oald8/oald8

Vì không có âm thanh nên cần một thiết bị áp vào, đó là lệnh padsp

Done ! bây giờ bạn chạy file bash trên là OALD8 sẽ chạy tốt mà không cần làm gì với flashplayer của hệ thống.


3. Trình duyệt mặc định và mở file pdf của resources

+ Trình duyệt mặc định:

OALD8  mặc định sử dụng chuỗi sau
opera->konqueror->galeon->mozilla-> netscape

nếu bạn không dừng một trong các trình duyệt trên thì bạn sẽ không mở được 2 link ở oaldonline. Một vài gợi ý đề nghị, bạn có thể tạo symlink tới tên trình duyệt của bạn là 1 trong các ứng dụng trên.

sudo ln -s /usr/bin/your_browser /usr/bin/[opera/mozilla/...]

+ Mở pdf file phần resources

Do OALD8 dùng Xulrunner hàm .launch(). Hàm này không chạy trên unix/linux nên bạn cần thay dòng 31 trong file chrome/oald8/content/js/resources.js

L_File.launch(); -> pdf_program L_File;

Chân thành cảm ơn n0bawk đã giúp đỡ debug phần này.

Bây giờ, dường như không còn problem nào nữa. Let's enjoy !
Kind regards,

Severus

http://www.enlightenment.org/ss/e-515937e96d4a38.71604264.jpg

Django 400/500 error, static file on nginx

Hãy chắc chắn bạn có dòng allow_host = ['host']
host: example.com

Với nginx thiết lập static

+ manage.py collectstatic
+ cp -r admin static/