Blog
tải nhạc ở woim.net
Lấy danh sách các tập tin .mp3 ở trang web nghe nhạc không lời http://woim.net/ bằng cách nào?
Tham khảo kịch bản Ruby: Woim :)
squidGuard tricks firefox and squid 2.7
I have a local caching proxy that uses Squid 2.7. I also use squidGuard to block http://ssl.google-analytics.com and https://ssl.google-analytics.com because I don't want Google to track my activities.
The problem was that I couldn't access to https://gmail.com/. Using Firefox's tool, I found that when Firefox loaded https://gmail.com/, it waited for the file https://ssl.google-analytics.com/ga.js until the session's expired. Please note that the accessing to non-secure file (http://ssl.google-analytics.com/ga.js) was normal.
--
I used curl to get the following verbose information
$ curl -v --proxy localhost:3128 https://ssl.google-analytics.com/ * About to connect() to proxy localhost port 3128 (#0) * Trying 127.0.0.1... connected * Connected to localhost (127.0.0.1) port 3128 (#0) * Establish HTTP proxy tunnel to ssl.google-analytics.com:443 > CONNECT ssl.google-analytics.com:443 HTTP/1.1 > Host: ssl.google-analytics.com:443 > User-Agent: curl/7.19.7 > Proxy-Connection: Keep-Alive > < HTTP/1.0 504 Gateway Time-out < Server: squid < Date: Sat, 13 Mar 2010 10:27:24 GMT < Content-Type: text/html < Content-Length: 1112 < X-Squid-Error: ERR_DNS_FAIL 0 < * Received HTTP code 504 from proxy after CONNECT * Closing connection #0 curl: (56) Received HTTP code 504 from proxy after CONNECT
As reported, this was a DNS problem. This was so strange as my dns resolver works well and it can resolve ssl.google-analytics.com within 1 seconds. I tried to modify dns settings in squid.conf but I still got the same problem.
I used a special log_format in Squid setting and found that Squid was tricked:
127.0.0.1 - - [13/Mar/2010:17:29:44 +0700] "(127.0.0.2) CONNECT localhost:443 HTTP/1.1" 200 3954 TCP_MISS:DIRECT
127.0.0.1 - - [13/Mar/2010:17:29:54 +0700] "(-) CONNECT ssl.google-analytics.com:443 HTTP/1.1" 404 0 TCP_MISS:DIRECT
^^^
squid was tricked
The first line shows that Squid connected successfully to my site https://localhost/ (IP: 127.0.0.1), and the second line shows that ssl.google-analytics.com was mapped to an undefined address. Because - isn't an valid IP address, Squid failed to fetch contents. And Firefox was tricked too.
I don't know much how SquidGuard and squid work together, but I think that squidGuard fed squid with a very bad stuff :P. I also think that there's a problem with Firefox (the buggy 3.5.7). I mean it would have understood the proxy error's code.
Firefox ----> squid --> squidGuard --> bad IP address ---->\ \ | \<--- squid returns ERR_DNS_FAIL <-- squid dnscache <---/
How to solve this problem? I just removed google-analytics from squidGuard setting and changed my DNS resolver so that ssl.google-analytics was mapped to 127.0.0.1 :))
microcore linux: phần 3: tạo một gói của bạn
Phần 2: cài đặt, thêm gói
Trong phần 2, ta biết cách cài đặtmicrocode lên một máy ảo, cách thêm một gói có sẵn bằng lệnh tce-load. Điều cần nhớ,
- Lệnh này chỉ được dùng khi bạn đang ở tài khoản
tc, chứ không phải tài khoảnroot. Đây là thiết kế an toàn củamicrocore; - Lệnh này có tham số
-w -iđược dùng để nạp gói từ mạng internet, nhưng bạn hãy bỏ tham số-wđi khi muốn nạp gói từ ổ cứng của bạn.
Trong bài này, bạn sẽ cách tạo một gói riêng, có thể nạp bằng lệnh tce-load. Hướng dẫn ở đây chỉ nêu lên ý chính, còn chi tiết hơn bạn phải coi ở tài liệu gốc1.
Định dạng. Nơi lưu trữ
Gói của bạn sẽ có đuôi là .tcz, .tczl (thư viện) hoặc .tczm (mô-đun cho nhân). Định dạng tập tin là SquashFS, sau khi kết nối vào hệ thống rồi thì chịu chết, không sửa được (nghĩa là đinh dạng read-only).
Các gói này có thể lưu trữ bất kỳ đâu cũng có thể nạp bởi tce-load. Tuy nhiên, mặc định tce-load sẽ tìm kiếm trong /mnt/hda1/tce/optional. Đường dẫn /mnt/hda1/ có thể thay đổi nhờ tham số của nhân khi khởi động, như trong phần thiết lập cho Grub ở phần 1.
Nếu bạn nạp một gói từ internet, nó sẽ tự động nạp ở lần khởi động tiếp theo. Thật ra, danh sách các gói được nạp khi hệ thống khởi động được cho trong danh sách /mnt/hda1/tce/onboot.lst, và bạn có thể điều chỉnh dễ dàng. Khi một gói đã có trong /mnt/hda1/tce/optional/ nhưng chưa có trong onboot.lst, bạn có thể nạp từ dòng lệnh nhờ tce-load -i tên_gói.
Tạo một gói
Cách thực hiện giống như các gói .tar.gz (trên Slackware, Arch,...). Trước hết, cần liệt kê tất cả các tập tin của gói. Ví dụ, ta có gói gogo với các tập tin sau:
/usr/local/bin/gogo /usr/local/share/doc/gogo /usr/local/lib/gogo.so
Ta chỉ việc tạo một thư mục tạm thời, ví dụ /tmp/gogo.now chứa các tập tin của gói, theo đúng cấu trúc ở trên
/tmp/gogo.now/usr/local/bin/gogo /tmp/gogo.now/usr/local/share/doc/gogo /tmp/gogo.now/usr/local/lib/gogo.so
Sau đó, bạn dùng lệnh mksquashfs để đóng gói. Nếu chưa có lệnh này, bạn cần nạp gói squashfs-tools-4.0.tcz trước khi tiếp tục
$ cd /tmp/ $ mksquashfs gogo.now/ gogo-1.0.tcz $ mv gogo-1.0.tcz /mnt/hda1/tce/optional
Bây giờ, bạn đã có thể nạp chính gói của mình, nhờ
$ tce-load -i gogo-1.0.tcz@ # không dùng tham số -w
Danh sách tập tin
Việc tạo gói rất đơn giản như trên, nhưng bù lại, việc khó khăn nhất là lấy danh sách các tập tin của một gói. Việc này tùy vào kỹ năng của bạn. Dưới đây là vài gợi ý có thể có ích:
- Nếu gói có ít tập tin, có thể chép trực tiếp bằng cách lệnh
- Nếu gói được cài bằng
make install, hãy thay đổi đích khi cài đặt, ví dụmake install PREFIX=/tmp/gogo.now/ - Nếu gói cài bằng
make,setup,... nhưng không thể đổi đích cài đặt, có thể sử dụng đánh dấu thời gian, và dùng lệnhtarđể gom hàng
$ touch ~/my_marker # tạo đánh dấu $ make, setup,... # tiến hành cài đặt $ find /usr/local -not -type d -newer ~/my_mark > ~/file.list # liệt kê các tập tin mới cài $ tar -T ~/file.list -czvf ~/my_package.tar.gz # dùng tar để gom hàng $ mkdir /tmp/gogo.now # tạo thư mục tạm $ tar -xzvf ~/my_package.tar.gz -C /tmp/gogo.now # xả hàng vào /tmp/gogo.now $ cd /tmp && mksquashfs gogo.now/ gogo-1.0.tcz # đã hướng dẫn ở trên
--
woim.net: i'm your killer! (5 bình luận)
Cập nhật (20/03/2010): Kịch bản có tại woim.
Biết http://woim.net/ đã lâu nhưng chưa nghe một bài nhạc nào trên trang này. Cách đây độ 2 năm.
Hôm nay tình cờ bắt gặp một bạn đang nghe dở dừng bài nhạc trên Woim.net (trình nghe nhạc đang ở trạng thái Pause.) Bài đấy là Afterlife love, trong tuyển tập New Element of Hi-Fi. Thật bất ngờ... về tiêu đề và cái u sầu trong bản nhạc. Khác với bản tiếng Việt vẫy hay nghe.
Tối nay về, tìm cách lọc hàng từ Woim.net. Cuối cùng đã tìm ra: như nhiều trang web khác, Woim.net dựa vào biến User-Agent để hạn chế băng thông không cần thiết từ bên ngoài trang web. Nhưng cách lọc User-Agent của Woim.net thật giản dị, so với chẳng hạn Facebook.com
$ curl -I http://woim.net/some_file_to_be_loaded.mp3 # ==> lỗi # curl -A "I_am_Mozilla" -I http://woim.net/the_above_file.mp3 # ==> lượm hàng
Khởi đầu thuận lợi. Hy vọng là Woim.net sẽ không đóng hết các cửa, trước khi mình viết một client tốt để nghe nhạc từ nó ;) Thanks in advance :D
SquashFS
SquadshFS là gì mình cũng chẳng hiểu nữa. Giải thích dài lòng thòng ở đây http://en.wikipedia.org/wiki/Squashfs :))
Dưới đây là vài lệnh có ích
$ mksquashfs ./some_dir/ output.tcz $ unsquashfs -l output.tcz
Lệnh đầu tiên sẽ tạo tập tin output.tcz theo định dạng squashfs, sử dụng các tập tin trong ./some_dir/. Khi tạo như vậy, thư mục some_dir sẽ được coi là thư mục gốc và thay thế bởi squashfs-root.
Làm thế nào để kết nối tập tin .tcz vào hệ thống như là một thiết bị loop-back? Từ từ tìm hiểu vậy!
microcore linux: phần 2: cài đặt, thêm gói
Phần 1: nhìn sơ qua một phát
Phần 3: tạo một gói của bạn
Kể từ bài này, ta đổi chủ đề từ tinycore thành microcore để chỉ rõ rằng, ta bắt đầu mọi việc với bản phân phối 6MB có tên microcore.
Chuẩn bị
Để cài đặt microcore, bạn dùng một máy ảo (trong VirtualBox chẳng hạn), với
- Ổ cứng dạng fixed-size1 và dung lượng khoảng 2000MB. Con số 2000 gấp nhiều lần so với 6, là bởi bạn sẽ phải tải và biên dịch rất nhiều gói khác nhau trong quá trình thử nghiệm. Tất nhiên, bạn có thể bổ sung các ổ cứng khác khi cần thiết;
- Một thiết bị mạng chạy ở
bridge-mode, để bạn có thể truy cập máy quassh(nhờ đó, công việc sẽ dễ dàng hơn); và tất nhiên, máy ảo này sẽ được nối mạng internet để có thể cài thêm các gói; - Hỗ trợ ACPI được bật, vì nếu không thì quá trình khởi động của
microcoresẽ lâu hơn một tí (như vậy, hỗ trợ này chẳng qua là vì lý do tiện lợi) - Lần đầu tiên, máo ảo sẽ được khởi động từ tập tin
microcore-current.isođược tải về từ trang chủ của TinyCore
Các bước cài đặt hoàn toàn tương tự như hướng dẫn ở http://tinycorelinux.com/install.html, nhưng vì không có tài liệu chính thức cho cài đặt không đồ họa, ta ghi lại mọi thứ như sau đây
Cơ sở
- Sau khi khởi động từ
microcore-current.iso, bạn sẽ đăng nhập tự động vào tài khoảntccủa hệ thống - Từ tài khoản này, thi hành lệnh
tce-load -w -i cfdisk.tczđể nạp góicfdisk - Tương tự, chạy lệnh
tce-load -w -i grub-0.97-splash.tczđể cài đặtgrub - Vào tài khoản
rootcủa hệ thống bằng chìa khóarootvà lệnhsudo
Phân vùng đĩa
(bạn có thể dùng fdisk đã có sẵn trong microcore)
- Sử dụng
cfdiskđể phân vùng đĩa/dev/hdavà tạo ra một partion/dev/hda1. Lưu ý rằng, nếu ổ đĩa ảo của bạn đã có phân vùng sẵn, với định dạngext3, thì coi như tiêu, bạn không khó có cơ hôi định dạng lại do hệ thống báo lỗi bận (chỗ nào có lẽ là lỗi củatinycore). - Xác định rằng hệ thống có thể khởi động được từ phân vùng
/dev/hda1 - Sau khi thoát
cfdisk, thi hành lệnhmkfs.ext3 /dev/hda1để áp định dạngextlên phân vùng đã chọn - Cuối cùng, thi hành lệnh
rebuildfstabvà sau đó làmount /dev/hda1để kết nối phân vùng vào/mnt/hda1.
Cài đặt grub
Các bước sau được chép nguyên xi từ hướng dẫn http://tinycorelinux.com/install.html. Do đó, về chi tiết, bạn hãy tham khảo ở địa chỉ vừa nêu. Riêng phần thiết lập cho grub có hiệu chỉnh để phù hợp với các ảnh mới.
Chuẩn bị các thư mục cần thiết
$ su root # thực ra, ở trên đã thực hiện $ mount /mnt/hda1 # thực ra, ở trên đã thực hiện $ mkdir -p /mnt/hda1/boot/grub $ mount /mnt/hdc $ cp -p /mnt/hdc/boot/* /mnt/hda1/boot/ $ mkdir -p /mnt/hda1/tce $ touch /mnt/hda1/tce/mydata.tgz
Cài đặt và thiết lập cho grub.
$ cp -p /usr/lib/grub/i386-pc/* /mnt/hda1/boot/grub/ $ cat > /mnt/hda1/boot/grub/menu.lst <<EOF default 0 timeout 10 title microcore kernel /boot/bzImage quiet tce=hda1 home=hda1 opt=hda1 max_loop=256 initrd /boot/microcore.gz EOF $ grub --batch <<EOF root (hd0,0) setup (hd0) EOF
Kết quả của lệnh grub có thể xem mẫu tại http://gx.viettug.org/zen/kyanh/jobs/microcore_e1.jpg.html.
Xong rồi đấy!
Xong, sau lệnh cuối cùng (grub) ở trên, bạn có thể khởi động lại máy ảo, bỏ đi kết nối máy ảo với tập tin micro-current.iso và nếu may mắn, bạn sẽ vào được hệ thống microcore đã cài thành công trên ổ cứng ảo /dev/hda1 :)
Trong hướng dẫn trên, bạn cũng thấy sử dụng lệnh tce-load -w -i cfdisk.tcz để nạp gói cfdisk từ mạng internet. Lệnh này không thể chạy với quyền root, do đó, có thể trước khi dùng, bạn phải chuyển qua tài khoản tc.
Danh sách tất cả các gói đã có sẵn có thể được tìm thấy ở địa chỉ phần Repository of Extensions của trang Download của tinycore.
--
1 Ổ cứng với kích cỡ cố định theo quy ước của VirtualBox. Xem vấn đề liên quan: http://tinycorelinux.com/forum/index.php?topic=5284.0
tinycore linux: phần 1: nhìn sơ qua một phát
Phần 2: cài đặt, thêm gói
TinyCore Linux là một phiên bản Linux bé tí teo. Phiên bản mới nhất là 2.9.
Sau khi tải về tập tin .iso chỉ khoảng 10MB, chỉ với vài bước tạo một máo ảo trong VirtualBox (hoặc các VM tương tự), bạn có một hệ thống đồ họa, với chuột, hình nền, thanh công cụ (taskbar),... Tất nhiên, chỉ với 10MB thì bạn chỉ được miếng “bùi nhùi” đầu tiên có thể bén lửa.
“Miếng bùi nhùi” đó là công cụ cài đặt các gói trực tiếp từ internet. Điều này thể hiện một trong các ý tưởng thiết kế cơ bản của tinycore là “đám mây”. Sau khi khởi động, toàn bộ hệ thống cơ bản sẽ được nạp lên bộ nhớ RAM, và người dùng có thể tải thêm về các gói từ “mạng internet”, từ trình duyệt firefox cho đến chương trình nhắn tin pidgin, trình soạn thảo geany,... để sử dụng. Các gói tải về này có thể được lưu trữ trên ổ cứng địa phương (local hard disk) và nhờ đó, lần khởi động tiếp theo bạn sẽ không phải mất công tải lại.
Mỗi gói của tinycore được đóng gói ở dạng squashfs, và đã được lượt bỏ đi những thứ không cần thiết. Việc đóng gói cũng rất đơn giản, gần như là “sao chép” từ máy này sang máy khác. Không gì dễ hơn. Có phần giống với kiểu đóng gói .tar.gz, nhưng ở đây là định dạng squashfs không phụ thuộc vào hệ thống tập tin của máy. Việc dùng định dạng nói này quả là một ý tưởng thông minh :)
Như vậy, tinycore thích hợp với cả người dùng "mì ăn liền" (ồ, tất nhiên là phải biết chế nước sôi), và người phát triển.
tinycore được công bố với hai bản: một bản có đồ họa, và một bản còn nhỏ hơn nữa, gọi là microcore (chỉ có hơn 6MB). Bản sau này rất thích hợp để nghiên cứu hoạt động của hệ thống Linux và đóng gói các phần mềm.
Tạm thời vậy, phần 2 sẽ nói về cài đặt một gói cho tinycore từ chế độ dòng lệnh, bên trong microcore. Với phiên bản thông thường, đã có chuột, màn hình màu sắc xanh đỏ rồi, thì công việc đơn giản hơn và bạn có thể tự tiến hành được.
apache: kỳ lạ!
Xét cấu hình cho thư mục /err/ như sau đây trong Apache. Mục đích là hỗ trợ index và cho phép dùng symbolic link trong thư mục /var/www/htdocs/err/. Cấu hình này hoạt động tốt, không có bất kỳ trục trặc gì phát sinh.
<Directory "/var/www/htdocs/err"> Options +Indexes +FollowSymLinks </Directory>
Bây giờ, ta bớt đi chút xíu (bỏ đi FollowSymLinks)
Options +Indexes
Vẫn chạy tốt. Nhưng nếu bỏ đi dấu trừ thì sẽ tiêu: khi truy cập vào /err/ sẽ gặp lỗi 403.
Options Indexes
Nếu bỏ đi dấu trừ trong cấu hình đầu tiên (tức là dùng Indexes +FollowSymLinks) thì mọi chuyện lại bình thường.
Thiệt quái đản, không hiểu nổi!
mysql join: left right inner
Bà con không hiểu thì xem ở wellho.net
A join B : A\cap B A left join B : A\B + (A\cap B) (all items in A are mentioned) A right join B : (B\cap A) + B\A (all items in B are mentioned)
Câu hỏi: B right join A có trùng với A left join B không?
VUE 3.0 (2 bình luận)
Mình dùng VUE được khoảng 2 năm, thấy ứng dụng này rất hay nên đã viết bài giới thiệu, nhưng dường như ít ai quan tâm :) Nên nhân dịp VUE phiên bản 3.0 ra mắt, mình viết lại đôi dòng về ứng dụng này. Hy vọng là có ích cho những ai dùng ... mind map.
VUE là một phần mềm mã nguồn mở, viết bằng Java nên có thể chạy trên nhiều hệ điều hành có hỗ trợ máy ảo Java. Nhưng đó không phải là điều quan trọng nhất. VUE được thiết kế để thể hiện các concept map, có thể nói là sau mind map một bậc.
Theo cách hiểu và sử dụng mind map của nhiều bạn trẻ mà mình gặp ở Sài Gòn, mind map là một cái cây với gốc lớn và nhiều rễ lá đâm ra tua tủa :D Nhiều bạn dùng giấy và bút, một số bạn khác dùng phần mềm Mind Manager để thể hiện các map này. Nhưng để ý thì các map thể hiện cấu trúc một chiều: muốn đi từ cành này qua cành khác, bạn phải leo xuống gốc rồi lại bò lên:D Thực tế, mind map thích hợp với việc phát triển các ý tưởng, theo phương pháp brain storming.
Trong khi đó, concept map thật sự cho thấy được mối quan hệ phức tạp, bằng cách mặc nhiên chấp nhận các mối quan hệ đa chiều giữa các đối tượng của nó. Chính vì thế, concept map vừa có thể dùng như mind map, vừa có thể dùng cho các minh họa phức tạp và hoàn chỉnh. Thực tế thì một chuẩn hóa của mind map là UML được dùng trong việc thiết kế phần mềm, hệ thống. Kinh nghiệm bản thân mình cho thấy, mình không thể sử dụng mind map thuần túy để minh họa cho các ý tưởng của mình.
Trái với giao diện màu mè và cả trăm nút điều khiển của Mind Manager, giao diện của VUE cực kỳ đơn giản, khiến bạn có thể shock khi so sánh giao diện với kết quả mà nó tạo ra. Ý tưởng là VUE có vài phím tắt và công cụ cơ bản, để bạn có thể tập trung vào concept map: thông thường, việc dùng các phím r (relation), n (node), l (link) là quá đủ để tạo một sơ đồ hàng khủng trong thời gian rất ngắn.
Và sau đó, VUE cho phép bạn: tạo một trình diễn sống động bằng chính VUE, xuất kết quả ra các dạng khác nhau, và đặc biệt là trong phiên bản 3.0, khả năng nạp các tài liệu bên ngoài được hỗ trợ rất tuyệt: nạp tin RSS, nạp các mô tả XML, CSV,...; VUE 3.0 cũng có hỗ trợ công cụ Exploration và cả các module để dùng với Firefox.
Quá nhiều và quá tuyệt với mình:) Còn bạn, nếu đã quen với mind map thì nên thử một lần dùng phần mềm VUE này. Một chút khó khăn khi thay đổi thói quen sẽ mang lại cho bạn những hiệu quả không ngờ :!
Ref.: Trang chủ của VUE: http://vue.tufts.edu/
Ref.: Ví dụ về VUE: http://vue.tufts.edu/gallery/index.cfm
Ref.: Video minh họa cho VUE: http://www.youtube.com/VUEProject
Ref.: Tải về VUE: http://vue.tufts.edu/download/index.cfm
Ref.: Tải về VUE 3: http://releases.atech.tufts.edu/vue/v3.0/
Ref.: Dùng Vue trên FreeBSD, Linux: http://viettug.org/blogs/177
Ref.: Mind map: http://en.wikipedia.org/wiki/Mind_map
Ref.: Concept map: http://en.wikipedia.org/wiki/Concept_map

Định dạng khác của trang này: Atom