Kho tháng 11/2005

Thứ tư, 30 Tháng mười một năm 2005 00:20:25 JST

Lỗi link thư viện

Build Rhythmbox CVS, gặp một lỗi rất quái đản: libgobject báo không định nghĩa g_intern_static_string, trong khi mình đã cài glib CVS và có hàm đó trong libglib-2.0.so (kiểm tra qua nm). Rốt cuộc lỗi là do khi gọi lệnh link, Rhythmbox dùng lệnh đại loại như sau:

gcc .. -lglib-2.0 -L/home/pclouds/local/lib -lglib-2.0 ..

thằng glib thứ hai là thằng glib trên hệ thống (2.8.2, không có g_intern_static_string). Bỏ mấy thằng -lglib-2.0 đằng sau đi thì chạy tốt.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Chủ nhật, 27 Tháng mười một năm 2005 16:17:38 JST

Thuở xa xưa

Tự nhiên nhớ ra LINEUML-Win32. Hai project hết sức thú vị nhưng đã tỏi từ lâu...


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 26 Tháng mười một năm 2005 23:35:11 JST

Ruby on Rails!

Nghe đồn Ruby On Rails đã lâu nhưng vẫn chưa có dịp thử. Hôm nay xem sơ qua tutorial và 15m intro video, thật sự ấn tượng!

Ít nhất, Ruby On Rails là một môi trường tốt để làm prototype (heh.. bye bye Eleven). Ruby On Rails hỗ trợ test/debug hơi bị hay (theo dõi SQL query, evaluate biến, can thiệp vào chương trình, test case ..).

Viết RoR bằng Ruby rất rõ ràng dễ hiểu (từng đọc sơ về Ruby nhưng giờ quên sạch, vậy mà đọc code vẫn có thể đoán được ý nghĩa). Với những tính năng như vậy thì việc mô phỏng lại RoR trên một nền ngôn ngữ khác như PHP là một điều khó vì chưa chắc có thể tạo được một môi trường y chang như RoR.

Tuy nhiên performance của Ruby là một vấn đề đáng bàn, cách đây vài tháng có đọc được một bài về performance hơi bị tệ của Ruby. Cũng chưa biết cách RoR xử lý security, form.. và những thứ chi tiết khác trong web development như thế nào. Vài bữa chắc thử viết một chương trình nhỏ bằng RoR xem sao (hoặc móc code 1 RoR app về vọc).


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 26 Tháng mười một năm 2005 03:04:10 JST

Hiện các partition trong Nautilus

Bật khoá /system/storage/display_internal_hard_drives là true, Nautilus sẽ hiện tất cả các partition đã mount trong hệ thống.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ năm, 24 Tháng mười một năm 2005 20:10:21 JST

Không klik!

Đọc lướt qua một số tài liệu trên http://klik.atekon.de/docs/ và kết luận: không klik!

Klik là một giải pháp dạng hack. Tuy nhiên có một tư tưởng hay từ klik: file .cmg. Thay vì cung cấp một file binary dạng .cmg, ta cung cấp một tập cả ebuild đủ để build gói đó và toàn bộ dependency cần thiết.

Không thể cung cấp các binary dependency dạng binary vì không biết được cấu hình thực sự của máy sử dụng như thế nào, cung cấp gói binary chứa mọi dependency chỉ có thể làm dạng dynamic, mà làm thế thì để portage tự giải quyết gọn hơn nhiều. Giải pháp dùng ebuild tar ball (.tbe) sẽ tránh lưu toàn bộ cây Portage ở client (tốn cỡ vài trăm mb đến 500mb).


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ năm, 24 Tháng mười một năm 2005 05:41:29 JST

Pango và CP1258

Buồn đời móc Pango CVS về compile chơi. Pango vừa mới fix Bug 101079: opentype font suppor for diacritics for Latin/Greek/Cyrillic letters.

Móc về dùng OpenType font (Doulos SIL) thì đẹp hơn thật. Tuy nhiên không rõ Pango có tự động dùng precomposed glyph nếu có hay chưa (chắc chưa quá).


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ năm, 24 Tháng mười một năm 2005 05:20:57 JST

Mở tập tin bằng gnome-open

gnome-open được dùng để kêu Gnome mở một tập tin nào đó theo cách gnome. Vd,

gnome-open http://www.google.com

sẽ chạy epiphany (hoặc firefox tùy cấu hình),

gnome-open myreport.pdf

sẽ chạy evince ... đỡ mắc công nhớ lệnh gọi khi dùng từ command line.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ ba, 22 Tháng mười một năm 2005 00:01:11 JST

Gtk+ Online

Thêm một cái sự hâm nữa trong tuyển tập hâm: đưa Gtk+ lên Web. Gtk+ có thể hoạt động với nhiều backend khác nhau, trong đó có X11, DirectFB... vậy sao không làm cho Gtk+ apps hoạt động như một Webserver? Lag sẽ là một vấn đề to có thể làm cho ứng dụng không hoạt động được. Kệ nó, hâm mà.


Cập nhật 1 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ hai, 21 Tháng mười một năm 2005 21:02:49 JST

HAL

Mò mò thử mới thấy mấy cái CD-ROM với iPod của mình có thể mount trong GNOME mà không cần entry trong fstab. Đúng là dùng command line riết nên lạc hậu, không theo kịp thời đại. Thông tin được sử dụng là từ trong hal (dùng hal-device để liệt kê các thiết bị hal thấy). Vẫn chưa hiểu cơ chế của HAL lắm, không rõ nó đã dùng cái script gì để mount nhỉ. Trong /usr/share/hal/fdi/policy/10osvendor/10-storage-policy.fdi có đề cập đến /media (khoá storage.policy.default.mount_root) nhưng chưa biết chương trình nào dùng mấy cái này và dùng như thế nào.

emerge hal-device-manager nó hiện một mớ device lằng nhằng trong máy, y như Device Manager của Windows mặc dù mức độ chi tiết thông tin của device không bằng. Lần đầu tiên trong đời em biết máy mình có "Sleep Button", mà nó nằm ở đâu nhỉ? :D


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ hai, 21 Tháng mười một năm 2005 16:52:31 JST

Gentoo Website redesign

Dù chưa là chính thức, nhưng cũng sắp sửa thành chính thức:

http://wwwredesign.gentoo.org.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ sáu, 18 Tháng mười một năm 2005 05:25:32 JST

Bí Nục brainstorm

"Bí Nục" Linux (tạm gọi vậy) tuy không phải là Em G tuy nhiên Em G có thể là một thử nghiệm Gentoo xem có thể làm Bí Nục được hay không.

Việc tạo một distro, giai đoạn gian khó và mất thời gian đầu tiên là tạo cho ra cái CD. Cái này Catalyst có thể hoàn thành tốt. Với hệ thống dựa trên RPM như FC, SuSE, Mandriva hay Debian, vẫn không rõ công đoạn này được thực hiện như thế nào (đặc biệt là việc xác định thứ tự build các gói). Trên nguyên tắc các hệ thống khác cũng có thể xây dựng build pkg list dựa trên thông tin dependency trên từng gói. Tuy nhiên spec của từng gói nằm chung một cục trong SRPMS, chuyện móc ra để làm cũng hơi cực và chậm hơn. Tách rời spec và source là một ưu điểm của Gentoo. Phần nào upstream thì không động vào. Phần nào do Gentoo làm ra thì nằm tập trung trên Portage tree. Do tập trung spec vào chung một chỗ nên việc móc spec tạo build pkg list dễ dàng hơn. Các distro khác, có lẽ phải extract spec ra trước khi tạo build pkg list.

Một vấn đề khác với Gentoo là làm sao tạo được app pkg và dev pkg. Portage không quan tâm lắm đến chuyện này. Chuyển này có thể được xử lý như một dạng post process trên .tbz2, móc tất cả thông tin chắc chắn không cần thiết khi chạy ra 1 pkg riêng (dev pkg) phần còn lại sẽ tạo ra (app pkg). Một script đơn giản để duyệt danh sách các gói trên hệ thống và cài đặt các gói dev tương ứng không phải là chuyện quá khó.

Chuyện nâng cấp thế nào là một vấn đề khó, đặc biệt khi nâng cấp core pkgs (các pkg nào khác phải nâng cấp theo?). Bí Nục nên làm theo cách bin distro dùng: tạo ra các release và nâng cấp theo từng release. Tuy nhiên mỗi release sẽ chỉ giới hạn vào core packages. Các ứng dụng không thật sự cần thiết cho hệ thống không nằm trong core packages (vd, inkscape, gimp, openoffice ...) và những ứng dụng này sẽ được build theo từng core pkg release. Nâng cấp core sẽ kéo theo nâng cấp các pkg non-core (trừ khi spec xác định rằng pkg non-core của release trước vẫn tương thích với release sau - giảm download nếu nâng cấp qua mạng).

Việc quản lý gói, nếu vẫn dùng Portage thì nên giữ nguyên hệ thống quản lý gói của Gentoo (/var/db/pkg), có lẽ nên nén lại (patch portage). Nếu dùng RPM hay các hệ thống khác thì tốc độ nhanh hơn so với text-based /var/db/pkg, bù lại phải giải quyết bài toán quay ngược lại distro nguồn khi cài dev pkg: phục hồi /var/db/pkg. Cách dễ nhất là lưu thông tin /var/db/pkg của mỗi gói vào trong dev pkg.

Tương thích với distro thông dụng là tốt, tuy nhiên các distro hiện này hình như chả có thằng nào tương thích với thằng nào. Việc tương thích với một distro khác không phải distro nguồn là một điều hơi .. chua.

Gentoo cực yếu khoảng cấu hình hệ thống (đối với người dùng bình thường). Đây là thế mạnh của FC, SuSE, Mandriva (và có lẽ Ubuntu). Tuy nhiên do các tool cấu hình thường được thiết kế đặc trưng cho từng distro, việc "port" tool này qua Gentoo/Bí Nục hơi bị khó (kinh nghiệm port system-config-* sang Gentoo).

Nhắc đến config tool không thể không nói đến Installer cho distro. Chuyện này Gentoo thua. Có thể xem xét Anaconda port nhưng có gì đó không ổn lắm. CD nên được thiết kế để có thể chạy live trực tiếp từ CD. Sau đó có thể chạy installer và copy qua HD nếu muốn (Knoppix??). Tuy nhiên làm cách này, quá trình cài đặt có lẽ sẽ chậm hơn so với dùng CD chuyên dùng để cài đặt. (Có thể không nếu đọc trực tiếp từ CD thay vì đọc từ hệ thống đang chạy, vốn được bung ra từ CD nén).

Phần tương thích Windows, chưa nghĩ ra gì sáng sủa.

Phần preconfig là một vấn đề. Preconfig chính là điểm khác nhau của các distro. Mỗi distro có hệ thống config riêng không tương thích với nhau. Nếu start from scratch sẽ mất nhiều thời gian config/test. Nếu chọn một distro thì khó có thể lấy config set của distro khác gắn qua.

Phần detect và cấu hình phần cứng, có trời mới biết. HPT/Bí Nục sẽ được thiết kế cho một số cấu hình máy tính xác định nên phần này cũng nhẹ (trừ khi sau đó user nâng cấp hệ thống bằng tay). Không rõ các distro khác làm việc này thế nào. Kudzu đáng để xem xét lại lần nữa.

Việc dùng Gentoo để tạo Bí Nục có cái lợi là có thể tạo thêm những distro khác (vd, gateway server, mail server ...). Chỉ cần tạo thêm profile mới cho những "distro" này. Các thay đổi riêng của mỗi "distro" sẽ nằm trên portage overlay của distro đó, không đụng chạm gì nhau. Không rõ Ubuntu giải quyết chuyện tương thích với Debian ra sao nhỉ?

Các soft được chọn cho Bí Nục sẽ là một vấn đề vì chín người mười tám ý. Nếu đủ resource thì sẽ tạo hai phiên bản Bí Nục cho GNOME và KDE. Nếu không, e hèm.. hơi.. căng..

Klik rất đáng để xem xét. Tuy nhiên nếu dùng Gentoo, khả năng "klik" chưa rõ tới đâu.

Túm lại là .. chưa túm được gì hết :D

5:30 sáng ngồi nghĩ lung tung trong khi bài tập chưa làm. Hâm thật.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ năm, 17 Tháng mười một năm 2005 17:40:07 JST

Giành giật từng giây GNOME startup

Analyzing and Improving GNOME Startup time cho ra kết quả:

  • GConf default settings 7 giây
  • GConf translation 2 giây
  • GConf đọc từ từ 2 giây
  • Nạp xscreensaver sau 1 giây
  • Dùng mcpp thay cpp (xrdb) 1.5 giây
  • Patch ld.so 3 giây
  • Cache bonobo-activation 1 giây
  • Bỏ X Font server khoảng 5 giây

Tổng cộng, giành lại được khoảng 50% thời gian startup. Do hầu hết các cải tiến hình như vẫn chưa được đưa vào upstream nên có lẽ cần thử bằng tay xem nó có đúng như vậy hay không.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ ba, 15 Tháng mười một năm 2005 22:07:16 JST

Gaptain và lập trình Gtk+ từ bash

Sực nhớ đến Gaptain đã hai năm trời không đụng tới. Nhớ thêm Zenity rồi nghĩ đến một cách khác để lập trình bash với Gtk+ hiệu quả hơn, cho phép tương tác nhiều hơn. Một dạng gần như Gtk+ server với bash làm client.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Chủ nhật, 13 Tháng mười một năm 2005 23:13:54 JST

GDM và script khởi động

Script khởi động GDM cho riêng X cho từng user là ~/.xprofile.

~/.xprofile dùng để chạy xcompmgr:

xcompmgr -cCfF -r7 -o.65 -l-10 -t-8 -D7&

Do xvnkb và một số thứ khác cũng dùng chỉ cho X nên chuyển qua ~/.xprofile luôn:

if [ -f /usr/lib/xvnkb.so ]; then
        export LD_PRELOAD=/usr/lib/xvnkb.so
        export GTK_IM_MODULE=xim
fi
export XLIB_SKIP_ARGB_VISUALS=1
xcompmgr -cCfF -r7 -o.65 -l-10 -t-8 -D7&

Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Chủ nhật, 13 Tháng mười một năm 2005 21:59:39 JST

Gentoo xorg-x11 và DRI

Sao khi chuyển qua xorg-x11 rc1 xong dri teo (thiệt ra hồi đó xài vesa, làm gì có dri :D ). Mém xíu nữa là vọc code xf86-video-i810, may là emerge -pv xf86-video-i810 mới thấy mình chưa enable use flag dri :P

Kinh nghiệm xương máu: luôn luôn coi kỹ use flag trong emerge -pv đặc biệt với những gói nhiều dependency như xorg-x11


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Chủ nhật, 13 Tháng mười một năm 2005 13:58:06 JST

mybackground-properties với protected workspace

Hồi sinh mybackground-properties, thêm tính năng bảo vệ workspace (chưa biết làm sao, dùng gnome-screensave/xscreensaver??)


Cập nhật 1 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 12 Tháng mười một năm 2005 16:02:58 JST

Gentoo Handbook say bye bye Stage 1/2

Bug 105809 đã được giải quyết. Gentoo Handbook không còn chứa các chỉ dẫn cài đặt từ Stage 1 và Stage 2 nữa. Stage 1/2 vẫn có thể dùng nhưng đừng la um sùm vì sẽ không có official support :) Hy vọng giảm bớt tình trạng cứ nhào vô dùng Gentoo là chơi ngay Stage 1, xong lại la um sùm sao Gentoo này, sao Gentoo nọ.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 12 Tháng mười một năm 2005 15:35:14 JST

Locale tập 2

Chỉnh thêm một tí, viết hoa chữ năm trong date +%c.

Patch 1

--- vi_VN.orig	2005-11-12 14:59:47.000000000 +0900
+++ vi_VN2	2005-11-12 14:59:33.000000000 +0900
@@ -233,8 +233,8 @@
 mon_grouping          3;3
 positive_sign         ""
 negative_sign         "<U002D>"
-int_frac_digits       4
-frac_digits           4
+int_frac_digits       0
+frac_digits           0
 p_cs_precedes         0
 p_sep_by_space        0
 n_cs_precedes         1
@@ -264,19 +264,19 @@
          "<U0054><U0068><U1EE9><U0020><U006E><U0103><U006D>";/
          "<U0054><U0068><U1EE9><U0020><U0073><U00E1><U0075>";/
          "<U0054><U0068><U1EE9><U0020><U0062><U1EA3><U0079>"
-abmon    "<U0054><U0068><U0031>";/
-         "<U0054><U0068><U0032>";/
-         "<U0054><U0068><U0033>";/
-         "<U0054><U0068><U0034>";/
-         "<U0054><U0068><U0035>";/
-         "<U0054><U0068><U0036>";/
-         "<U0054><U0068><U0037>";/
-         "<U0054><U0068><U0038>";/
-         "<U0054><U0068><U0039>";/
+abmon    "<U0054><U0068><U0030><U0031>";/
+         "<U0054><U0068><U0030><U0032>";/
+         "<U0054><U0068><U0030><U0033>";/
+         "<U0054><U0068><U0030><U0034>";/
+         "<U0054><U0068><U0030><U0035>";/
+         "<U0054><U0068><U0030><U0036>";/
+         "<U0054><U0068><U0030><U0037>";/
+         "<U0054><U0068><U0030><U0038>";/
+         "<U0054><U0068><U0030><U0039>";/
          "<U0054><U0068><U0031><U0030>";/
          "<U0054><U0068><U0031><U0031>";/
          "<U0054><U0068><U0031><U0032>"
-mon      "<U0054><U0068><U00E1><U006E><U0067><U0020><U0067><U0069><U00EA><U006E><U0067>";/
+mon      "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U1ED9><U0074>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0068><U0061><U0069>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0062><U0061>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U01B0>";/
@@ -286,12 +286,12 @@
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U00E1><U006D>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0063><U0068><U00ED><U006E>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069>";/
-         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U1ED9><U0074>";/
-         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0063><U0068><U1EA1><U0070>"
-d_t_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U006E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
+         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U006D><U1ED9><U0074>";/
+         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U0068><U0061><U0069>"
+d_t_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U004E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
 d_fmt    "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
 t_fmt    "<U0025><U0054>"
-am_pm    "<U0073><U00E1><U006E><U0067>";"<U0063><U0068><U0069><U1EC1><U0075>"
+am_pm    "<U0041><U004D>";"<U0050><U004D>"
 t_fmt_ampm  "<U0025><U0049><U003A><U0025><U004D><U0020><U0025><U0070>"
 date_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U006E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
 END LC_TIME
@@ -315,7 +315,7 @@
 % LC_NAME category.
 %
 name_fmt    "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074>/
-<U0025><U0067>"
+<U0025><U006D><U0025><U0074><U0025><U0067>"
 name_gen    ""
 name_mr     "<U00D4><U002E>"
 name_mrs    "<U0042><U002E>"

Patch 2:

--- vi_VN.orig.1	2005-11-12 15:14:31.000000000 +0900
+++ vi_VN2.1	2005-11-12 15:14:32.000000000 +0900
@@ -233,8 +233,8 @@
 mon_grouping          3;3
 positive_sign         ""
 negative_sign         "-"
-int_frac_digits       4
-frac_digits           4
+int_frac_digits       0
+frac_digits           0
 p_cs_precedes         0
 p_sep_by_space        0
 n_cs_precedes         1
@@ -264,19 +264,19 @@
          "Thứ năm";/
          "Thứ sáu";/
          "Thứ bảy"
-abmon    "Th1";/
-         "Th2";/
-         "Th3";/
-         "Th4";/
-         "Th5";/
-         "Th6";/
-         "Th7";/
-         "Th8";/
-         "Th9";/
+abmon    "Th01";/
+         "Th02";/
+         "Th03";/
+         "Th04";/
+         "Th05";/
+         "Th06";/
+         "Th07";/
+         "Th08";/
+         "Th09";/
          "Th10";/
          "Th11";/
          "Th12"
-mon      "Tháng giêng";/
+mon      "Tháng một";/
          "Tháng hai";/
          "Tháng ba";/
          "Tháng tư";/
@@ -286,12 +286,12 @@
          "Tháng tám";/
          "Tháng chín";/
          "Tháng mười";/
-         "Tháng một";/
-         "Tháng chạp"
-d_t_fmt  "%A, %d %B năm %Y %T %Z"
+         "Tháng mười một";/
+         "Tháng mười hai"
+d_t_fmt  "%A, %d %B Năm %Y %T %Z"
 d_fmt    "%d/%m/%Y"
 t_fmt    "%T"
-am_pm    "sáng";"chiều"
+am_pm    "AM";"PM"
 t_fmt_ampm  "%I:%M %p"
 date_fmt  "%A, %d %B năm %Y %T %Z"
 END LC_TIME
@@ -315,7 +315,7 @@
 % LC_NAME category.
 %
 name_fmt    "%p%t%f%t/
-%g"
+%m%t%g"
 name_gen    ""
 name_mr     "Ô."
 name_mrs    "B."

Locale:

escape_char /
comment_char %
%
% Vietnamese language locale for Vietnam
% Source: glibc locale and info from vietnamese native speakers
% Address:
% Contact: Pablo Saratxaga
% Email: pablo@mandrakesoft.com
% Tel:
% Fax:
% Language: vi
% Territory: VN
% Revision: 1.1
% Date: 2004-01-09
% Users: general
% Repertoiremap:
% Charset: UTF-8
% Distribution and use is free, also
% for commercial purposes.

LC_IDENTIFICATION
title      "Vietnamese language locale for Vietnam"
source     "glibc locale and info from vietnamese native speakers"
address    ""
contact    "Pablo Saratxaga"
email      "pablo@mandrakesoft.com"
tel        ""
fax        ""
language   "Vietnamese"
territory  "Vietnam"
revision   "1.1"
date       "2004-01-09"
%
category  "vi_VN:2000";LC_IDENTIFICATION
category  "vi_VN:2000";LC_CTYPE
category  "vi_VN:2000";LC_COLLATE
category  "vi_VN:2000";LC_TIME
category  "vi_VN:2000";LC_NUMERIC
category  "vi_VN:2000";LC_MONETARY
category  "vi_VN:2000";LC_MESSAGES
category  "vi_VN:2000";LC_PAPER
category  "vi_VN:2000";LC_NAME
category  "vi_VN:2000";LC_ADDRESS
category  "vi_VN:2000";LC_TELEPHONE
category  "vi_VN:2000";LC_MEASUREMENT

END LC_IDENTIFICATION

LC_CTYPE
copy "i18n"
translit_start

% dong sign -> d// -> dd
<U20AB> "<U0111>";"<U0064><U0064>"

translit_end
END LC_CTYPE

LC_COLLATE
% Copy the template from ISO/IEC 14651
copy "iso14651_t1"

% A( A^ E^ O+ U+ DD are treatead as base letters
% ordering of accents is: grave, hook, tilde, acute, dot below
% a a( a> b c d d/ e e> f g h i j k l m n o o+ p q r s t u u+ v w x y z

collating-symbol <a(>
collating-symbol <a/>>
collating-symbol <d//>
collating-symbol <e/>>
collating-symbol <o/>>
collating-symbol <o9>
collating-symbol <u9>

collating-symbol <HOK>

reorder-after <BAS>
<GRA>
<HOK>
<TIL>
<ACA>
<PCT>

reorder-after <a>
<a(>
<a/>>
reorder-after <d>
<d//>
reorder-after <e>
<e/>>
reorder-after <o>
<o/>>
<o9>
reorder-after <u>
<u9>

reorder-after <U0061>
<U1EA3> <a>;<HOK>;<MIN>;IGNORE
<U1EA1> <a>;<PCT>;<MIN>;IGNORE
<U0103> <a(>;<BAS>;<MIN>;IGNORE
<U1EB1> <a(>;<GRA>;<MIN>;IGNORE
<U1EB3> <a(>;<HOK>;<MIN>;IGNORE
<U1EB5> <a(>;<TIL>;<MIN>;IGNORE
<U1EAF> <a(>;<ACA>;<MIN>;IGNORE
<U1EB7> <a(>;<PCT>;<MIN>;IGNORE
<U00E2> <a/>>;<BAS>;<MIN>;IGNORE
<U1EA7> <a/>>;<GRA>;<MIN>;IGNORE
<U1EA9> <a/>>;<HOK>;<MIN>;IGNORE
<U1EAB> <a/>>;<TIL>;<MIN>;IGNORE
<U1EA5> <a/>>;<ACA>;<MIN>;IGNORE
<U1EAD> <a/>>;<PCT>;<MIN>;IGNORE
reorder-after <U0041>
<U1EA2> <a>;<HOK>;<CAP>;IGNORE
<U1EA0> <a>;<PCT>;<CAP>;IGNORE
<U0102> <a(>;<BAS>;<CAP>;IGNORE
<U1EB0> <a(>;<GRA>;<CAP>;IGNORE
<U1EB2> <a(>;<HOK>;<CAP>;IGNORE
<U1EB4> <a(>;<TIL>;<CAP>;IGNORE
<U1EAE> <a(>;<ACA>;<CAP>;IGNORE
<U1EB6> <a(>;<PCT>;<CAP>;IGNORE
<U00C2> <a/>>;<BAS>;<CAP>;IGNORE
<U1EA6> <a/>>;<GRA>;<CAP>;IGNORE
<U1EA8> <a/>>;<HOK>;<CAP>;IGNORE
<U1EAA> <a/>>;<TIL>;<CAP>;IGNORE
<U1EA4> <a/>>;<ACA>;<CAP>;IGNORE
<U1EAC> <a/>>;<PCT>;<CAP>;IGNORE

reorder-after <U0064>
<U0111> <d//>;<BAS>;<MIN>;IGNORE
<U00F0> <d//>;<PCL>;<MIN>;IGNORE
reorder-after <U0044>
<U0110> <d//>;<BAS>;<CAP>;IGNORE
<U00D0> <d//>;<PCL>;<CAP>;IGNORE

reorder-after <U0065>
<U1EBB> <e>;<HOK>;<MIN>;IGNORE
<U1EBD> <e>;<TIL>;<MIN>;IGNORE
<U1EB9> <e>;<PCT>;<MIN>;IGNORE
<U00EA> <e/>>;<BAS>;<MIN>;IGNORE
<U1EC1> <e/>>;<GRA>;<MIN>;IGNORE
<U1EC3> <e/>>;<HOK>;<MIN>;IGNORE
<U1EC5> <e/>>;<TIL>;<MIN>;IGNORE
<U1EBF> <e/>>;<ACA>;<MIN>;IGNORE
<U1EC7> <e/>>;<PCT>;<MIN>;IGNORE
reorder-after <U0045>
<U1EBA> <e>;<HOK>;<CAP>;IGNORE
<U1EBC> <e>;<TIL>;<CAP>;IGNORE
<U1EB8> <e>;<PCT>;<CAP>;IGNORE
<U00CA> <e/>>;<BAS>;<CAP>;IGNORE
<U1EC0> <e/>>;<GRA>;<CAP>;IGNORE
<U1EC2> <e/>>;<HOK>;<CAP>;IGNORE
<U1EC4> <e/>>;<TIL>;<CAP>;IGNORE
<U1EBE> <e/>>;<ACA>;<CAP>;IGNORE
<U1EC6> <e/>>;<PCT>;<CAP>;IGNORE

reorder-after <U0069>
<U1EC9> <i>;<HOK>;<MIN>;IGNORE
<U1ECB> <i>;<PCT>;<MIN>;IGNORE
reorder-after <U0049>
<U1EC8> <i>;<HOK>;<CAP>;IGNORE
<U1ECA> <i>;<PCT>;<CAP>;IGNORE

reorder-after <U006F>
<U1ECF> <o>;<HOK>;<MIN>;IGNORE
<U1ECD> <o>;<PCT>;<MIN>;IGNORE
<U00F4> <o/>>;<BAS>;<MIN>;IGNORE
<U1ED3> <o/>>;<GRA>;<MIN>;IGNORE
<U1ED5> <o/>>;<HOK>;<MIN>;IGNORE
<U1ED7> <o/>>;<TIL>;<MIN>;IGNORE
<U1ED1> <o/>>;<ACA>;<MIN>;IGNORE
<U1ED9> <o/>>;<PCT>;<MIN>;IGNORE
<U01A1> <o9>;<BAS>;<MIN>;IGNORE
<U1EDD> <o9>;<GRA>;<MIN>;IGNORE
<U1EDF> <o9>;<HOK>;<MIN>;IGNORE
<U1EE1> <o9>;<TIL>;<MIN>;IGNORE
<U1EDB> <o9>;<ACA>;<MIN>;IGNORE
<U1EE3> <o9>;<PCT>;<MIN>;IGNORE
reorder-after <U004F>
<U1ECE> <o>;<HOK>;<CAP>;IGNORE
<U1ECC> <o>;<PCT>;<CAP>;IGNORE
<U00D4> <o/>>;<BAS>;<CAP>;IGNORE
<U1ED2> <o/>>;<GRA>;<CAP>;IGNORE
<U1ED4> <o/>>;<HOK>;<CAP>;IGNORE
<U1ED6> <o/>>;<TIL>;<CAP>;IGNORE
<U1ED0> <o/>>;<ACA>;<CAP>;IGNORE
<U1ED8> <o/>>;<PCT>;<CAP>;IGNORE
<U01A0> <o9>;<BAS>;<CAP>;IGNORE
<U1EDC> <o9>;<GRA>;<CAP>;IGNORE
<U1EDE> <o9>;<HOK>;<CAP>;IGNORE
<U1EE0> <o9>;<TIL>;<CAP>;IGNORE
<U1EDA> <o9>;<ACA>;<CAP>;IGNORE
<U1EE2> <o9>;<PCT>;<CAP>;IGNORE

reorder-after <U0075>
<U1EE7> <u>;<HOK>;<MIN>;IGNORE
<U1EE5> <u>;<PCT>;<MIN>;IGNORE
<U01B0> <u9>;<BAS>;<MIN>;IGNORE
<U1EEB> <u9>;<GRA>;<MIN>;IGNORE
<U1EED> <u9>;<HOK>;<MIN>;IGNORE
<U1EEF> <u9>;<TIL>;<MIN>;IGNORE
<U1EE9> <u9>;<ACA>;<MIN>;IGNORE
<U1EF1> <u9>;<PCT>;<MIN>;IGNORE
reorder-after <U0055>
<U1EE6> <u>;<HOK>;<CAP>;IGNORE
<U1EE4> <u>;<PCT>;<CAP>;IGNORE
<U01AF> <u9>;<BAS>;<CAP>;IGNORE
<U1EEA> <u9>;<GRA>;<CAP>;IGNORE
<U1EEC> <u9>;<HOK>;<CAP>;IGNORE
<U1EEE> <u9>;<TIL>;<CAP>;IGNORE
<U1EE8> <u9>;<ACA>;<CAP>;IGNORE
<U1EF0> <u9>;<PCT>;<CAP>;IGNORE

reorder-after <U0079>
<U1EF3> <y>;<GRA>;<MIN>;IGNORE
<U1EF7> <y>;<HOK>;<MIN>;IGNORE
<U1EF9> <y>;<TIL>;<MIN>;IGNORE
<U1EF5> <y>;<PCT>;<MIN>;IGNORE
reorder-after <U0059>
<U1EF2> <y>;<GRA>;<CAP>;IGNORE
<U1EF6> <y>;<HOK>;<CAP>;IGNORE
<U1EF8> <y>;<TIL>;<CAP>;IGNORE
<U1EF4> <y>;<PCT>;<CAP>;IGNORE

reorder-end

END LC_COLLATE

LC_MONETARY
int_curr_symbol       "<U0056><U004E><U0044><U0020>"
currency_symbol       "<U20AB>"
mon_decimal_point     "<U002C>"
mon_thousands_sep     "<U002E>"
mon_grouping          3;3
positive_sign         ""
negative_sign         "<U002D>"
int_frac_digits       0
frac_digits           0
p_cs_precedes         0
p_sep_by_space        0
n_cs_precedes         1
n_sep_by_space        0
p_sign_posn           1
n_sign_posn           1
END LC_MONETARY

LC_NUMERIC
decimal_point        "<U002C>"
thousands_sep        "<U002E>"
grouping             3;3
END LC_NUMERIC

LC_TIME
abday    "<U0043><U004E>";/
         "<U0054><U0032>";/
         "<U0054><U0033>";/
         "<U0054><U0034>";/
         "<U0054><U0035>";/
         "<U0054><U0036>";/
         "<U0054><U0037>"
day      "<U0043><U0068><U1EE7><U0020><U006E><U0068><U1EAD><U0074>";/
         "<U0054><U0068><U1EE9><U0020><U0068><U0061><U0069>";/
         "<U0054><U0068><U1EE9><U0020><U0062><U0061>";/
         "<U0054><U0068><U1EE9><U0020><U0074><U01B0>";/
         "<U0054><U0068><U1EE9><U0020><U006E><U0103><U006D>";/
         "<U0054><U0068><U1EE9><U0020><U0073><U00E1><U0075>";/
         "<U0054><U0068><U1EE9><U0020><U0062><U1EA3><U0079>"
abmon    "<U0054><U0068><U0030><U0031>";/
         "<U0054><U0068><U0030><U0032>";/
         "<U0054><U0068><U0030><U0033>";/
         "<U0054><U0068><U0030><U0034>";/
         "<U0054><U0068><U0030><U0035>";/
         "<U0054><U0068><U0030><U0036>";/
         "<U0054><U0068><U0030><U0037>";/
         "<U0054><U0068><U0030><U0038>";/
         "<U0054><U0068><U0030><U0039>";/
         "<U0054><U0068><U0031><U0030>";/
         "<U0054><U0068><U0031><U0031>";/
         "<U0054><U0068><U0031><U0032>"
mon      "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U1ED9><U0074>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0068><U0061><U0069>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0062><U0061>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U01B0>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006E><U0103><U006D>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0073><U00E1><U0075>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0062><U1EA3><U0079>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U00E1><U006D>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0063><U0068><U00ED><U006E>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U006D><U1ED9><U0074>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U0068><U0061><U0069>"
d_t_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U004E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt    "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
t_fmt    "<U0025><U0054>"
am_pm    "<U0041><U004D>";"<U0050><U004D>"
t_fmt_ampm  "<U0025><U0049><U003A><U0025><U004D><U0020><U0025><U0070>"
date_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U006E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
END LC_TIME

% yes: Va^ng / Da.
% no: Kho^ng
LC_MESSAGES
yesstr   "<U0043><U00F3>"
nostr    "<U004B><U0068><U00F4><U006E><U0067>"
yesexpr  "<U005E><U005B><U0031><U0079><U0059><U0063><U0043><U005D><U002E><U002A>"
noexpr   "<U005E><U005B><U0030><U006E><U004E><U006B><U004B><U005D><U002E><U002A>"
END LC_MESSAGES

LC_PAPER
height      297
width       210
END LC_PAPER

LC_NAME
% This is the ISO_IEC TR14652 Locale definition for the
% LC_NAME category.
%
name_fmt    "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074>/
<U0025><U006D><U0025><U0074><U0025><U0067>"
name_gen    ""
name_mr     "<U00D4><U002E>"
name_mrs    "<U0042><U002E>"
name_miss   "<U0043><U002E>"
name_ms     ""

END LC_NAME


LC_ADDRESS
% This is the ISO_IEC TR14652 Locale definition for the
% LC_ADDRESS
postal_fmt  "<U0025><U007A><U0025><U0063><U0025><U0054><U0025><U0073>/
<U0025><U0062><U0025><U0065><U0025><U0072>"
country_name "<U0056><U0069><U1EC7><U0074><U0020><U006E><U0061><U006D>"
lang_name "<U0056><U0069><U1EC7><U0074><U0020><U006E><U0067><U1EEF>"

country_ab2 "<U0056><U004E>"
country_ab3 "<U0056><U004E><U004D>"
country_num 704
END LC_ADDRESS


LC_TELEPHONE
% This is the ISO_IEC TR14652 Locale definition for the
%
tel_int_fmt "<U002B><U0025><U0063><U0020><U003B><U0025><U0061><U0020>/
<U003B><U0025><U006C>"
int_prefix  "<U0038><U0034>"
int_select  "<U0030><U0030>"

END LC_TELEPHONE

LC_MEASUREMENT
measurement 1
END LC_MEASUREMENT



Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 12 Tháng một năm 2005 01:25:36 JST

Locale mới cập nhật

Đây là thành quả sau khi áp dụng các bước chỉnh locale

escape_char /
comment_char %
%
% Vietnamese language locale for Vietnam
% Source: glibc locale and info from vietnamese native speakers
% Address:
% Contact: Pablo Saratxaga
% Email: pablo@mandrakesoft.com
% Tel:
% Fax:
% Language: vi
% Territory: VN
% Revision: 1.1
% Date: 2004-01-09
% Users: general
% Repertoiremap:
% Charset: UTF-8
% Distribution and use is free, also
% for commercial purposes.

LC_IDENTIFICATION
title      "Vietnamese language locale for Vietnam"
source     "glibc locale and info from vietnamese native speakers"
address    ""
contact    "Pablo Saratxaga"
email      "pablo@mandrakesoft.com"
tel        ""
fax        ""
language   "Vietnamese"
territory  "Vietnam"
revision   "1.1"
date       "2004-01-09"
%
category  "vi_VN:2000";LC_IDENTIFICATION
category  "vi_VN:2000";LC_CTYPE
category  "vi_VN:2000";LC_COLLATE
category  "vi_VN:2000";LC_TIME
category  "vi_VN:2000";LC_NUMERIC
category  "vi_VN:2000";LC_MONETARY
category  "vi_VN:2000";LC_MESSAGES
category  "vi_VN:2000";LC_PAPER
category  "vi_VN:2000";LC_NAME
category  "vi_VN:2000";LC_ADDRESS
category  "vi_VN:2000";LC_TELEPHONE
category  "vi_VN:2000";LC_MEASUREMENT

END LC_IDENTIFICATION

LC_CTYPE
copy "i18n"
translit_start

% dong sign -> d// -> dd
<U20AB> "<U0111>";"<U0064><U0064>"

translit_end
END LC_CTYPE

LC_COLLATE
% Copy the template from ISO/IEC 14651
copy "iso14651_t1"

% A( A^ E^ O+ U+ DD are treatead as base letters
% ordering of accents is: grave, hook, tilde, acute, dot below
% a a( a> b c d d/ e e> f g h i j k l m n o o+ p q r s t u u+ v w x y z

collating-symbol <a(>
collating-symbol <a/>>
collating-symbol <d//>
collating-symbol <e/>>
collating-symbol <o/>>
collating-symbol <o9>
collating-symbol <u9>

collating-symbol <HOK>

reorder-after <BAS>
<GRA>
<HOK>
<TIL>
<ACA>
<PCT>

reorder-after <a>
<a(>
<a/>>
reorder-after <d>
<d//>
reorder-after <e>
<e/>>
reorder-after <o>
<o/>>
<o9>
reorder-after <u>
<u9>

reorder-after <U0061>
<U1EA3> <a>;<HOK>;<MIN>;IGNORE
<U1EA1> <a>;<PCT>;<MIN>;IGNORE
<U0103> <a(>;<BAS>;<MIN>;IGNORE
<U1EB1> <a(>;<GRA>;<MIN>;IGNORE
<U1EB3> <a(>;<HOK>;<MIN>;IGNORE
<U1EB5> <a(>;<TIL>;<MIN>;IGNORE
<U1EAF> <a(>;<ACA>;<MIN>;IGNORE
<U1EB7> <a(>;<PCT>;<MIN>;IGNORE
<U00E2> <a/>>;<BAS>;<MIN>;IGNORE
<U1EA7> <a/>>;<GRA>;<MIN>;IGNORE
<U1EA9> <a/>>;<HOK>;<MIN>;IGNORE
<U1EAB> <a/>>;<TIL>;<MIN>;IGNORE
<U1EA5> <a/>>;<ACA>;<MIN>;IGNORE
<U1EAD> <a/>>;<PCT>;<MIN>;IGNORE
reorder-after <U0041>
<U1EA2> <a>;<HOK>;<CAP>;IGNORE
<U1EA0> <a>;<PCT>;<CAP>;IGNORE
<U0102> <a(>;<BAS>;<CAP>;IGNORE
<U1EB0> <a(>;<GRA>;<CAP>;IGNORE
<U1EB2> <a(>;<HOK>;<CAP>;IGNORE
<U1EB4> <a(>;<TIL>;<CAP>;IGNORE
<U1EAE> <a(>;<ACA>;<CAP>;IGNORE
<U1EB6> <a(>;<PCT>;<CAP>;IGNORE
<U00C2> <a/>>;<BAS>;<CAP>;IGNORE
<U1EA6> <a/>>;<GRA>;<CAP>;IGNORE
<U1EA8> <a/>>;<HOK>;<CAP>;IGNORE
<U1EAA> <a/>>;<TIL>;<CAP>;IGNORE
<U1EA4> <a/>>;<ACA>;<CAP>;IGNORE
<U1EAC> <a/>>;<PCT>;<CAP>;IGNORE

reorder-after <U0064>
<U0111> <d//>;<BAS>;<MIN>;IGNORE
<U00F0> <d//>;<PCL>;<MIN>;IGNORE
reorder-after <U0044>
<U0110> <d//>;<BAS>;<CAP>;IGNORE
<U00D0> <d//>;<PCL>;<CAP>;IGNORE

reorder-after <U0065>
<U1EBB> <e>;<HOK>;<MIN>;IGNORE
<U1EBD> <e>;<TIL>;<MIN>;IGNORE
<U1EB9> <e>;<PCT>;<MIN>;IGNORE
<U00EA> <e/>>;<BAS>;<MIN>;IGNORE
<U1EC1> <e/>>;<GRA>;<MIN>;IGNORE
<U1EC3> <e/>>;<HOK>;<MIN>;IGNORE
<U1EC5> <e/>>;<TIL>;<MIN>;IGNORE
<U1EBF> <e/>>;<ACA>;<MIN>;IGNORE
<U1EC7> <e/>>;<PCT>;<MIN>;IGNORE
reorder-after <U0045>
<U1EBA> <e>;<HOK>;<CAP>;IGNORE
<U1EBC> <e>;<TIL>;<CAP>;IGNORE
<U1EB8> <e>;<PCT>;<CAP>;IGNORE
<U00CA> <e/>>;<BAS>;<CAP>;IGNORE
<U1EC0> <e/>>;<GRA>;<CAP>;IGNORE
<U1EC2> <e/>>;<HOK>;<CAP>;IGNORE
<U1EC4> <e/>>;<TIL>;<CAP>;IGNORE
<U1EBE> <e/>>;<ACA>;<CAP>;IGNORE
<U1EC6> <e/>>;<PCT>;<CAP>;IGNORE

reorder-after <U0069>
<U1EC9> <i>;<HOK>;<MIN>;IGNORE
<U1ECB> <i>;<PCT>;<MIN>;IGNORE
reorder-after <U0049>
<U1EC8> <i>;<HOK>;<CAP>;IGNORE
<U1ECA> <i>;<PCT>;<CAP>;IGNORE

reorder-after <U006F>
<U1ECF> <o>;<HOK>;<MIN>;IGNORE
<U1ECD> <o>;<PCT>;<MIN>;IGNORE
<U00F4> <o/>>;<BAS>;<MIN>;IGNORE
<U1ED3> <o/>>;<GRA>;<MIN>;IGNORE
<U1ED5> <o/>>;<HOK>;<MIN>;IGNORE
<U1ED7> <o/>>;<TIL>;<MIN>;IGNORE
<U1ED1> <o/>>;<ACA>;<MIN>;IGNORE
<U1ED9> <o/>>;<PCT>;<MIN>;IGNORE
<U01A1> <o9>;<BAS>;<MIN>;IGNORE
<U1EDD> <o9>;<GRA>;<MIN>;IGNORE
<U1EDF> <o9>;<HOK>;<MIN>;IGNORE
<U1EE1> <o9>;<TIL>;<MIN>;IGNORE
<U1EDB> <o9>;<ACA>;<MIN>;IGNORE
<U1EE3> <o9>;<PCT>;<MIN>;IGNORE
reorder-after <U004F>
<U1ECE> <o>;<HOK>;<CAP>;IGNORE
<U1ECC> <o>;<PCT>;<CAP>;IGNORE
<U00D4> <o/>>;<BAS>;<CAP>;IGNORE
<U1ED2> <o/>>;<GRA>;<CAP>;IGNORE
<U1ED4> <o/>>;<HOK>;<CAP>;IGNORE
<U1ED6> <o/>>;<TIL>;<CAP>;IGNORE
<U1ED0> <o/>>;<ACA>;<CAP>;IGNORE
<U1ED8> <o/>>;<PCT>;<CAP>;IGNORE
<U01A0> <o9>;<BAS>;<CAP>;IGNORE
<U1EDC> <o9>;<GRA>;<CAP>;IGNORE
<U1EDE> <o9>;<HOK>;<CAP>;IGNORE
<U1EE0> <o9>;<TIL>;<CAP>;IGNORE
<U1EDA> <o9>;<ACA>;<CAP>;IGNORE
<U1EE2> <o9>;<PCT>;<CAP>;IGNORE

reorder-after <U0075>
<U1EE7> <u>;<HOK>;<MIN>;IGNORE
<U1EE5> <u>;<PCT>;<MIN>;IGNORE
<U01B0> <u9>;<BAS>;<MIN>;IGNORE
<U1EEB> <u9>;<GRA>;<MIN>;IGNORE
<U1EED> <u9>;<HOK>;<MIN>;IGNORE
<U1EEF> <u9>;<TIL>;<MIN>;IGNORE
<U1EE9> <u9>;<ACA>;<MIN>;IGNORE
<U1EF1> <u9>;<PCT>;<MIN>;IGNORE
reorder-after <U0055>
<U1EE6> <u>;<HOK>;<CAP>;IGNORE
<U1EE4> <u>;<PCT>;<CAP>;IGNORE
<U01AF> <u9>;<BAS>;<CAP>;IGNORE
<U1EEA> <u9>;<GRA>;<CAP>;IGNORE
<U1EEC> <u9>;<HOK>;<CAP>;IGNORE
<U1EEE> <u9>;<TIL>;<CAP>;IGNORE
<U1EE8> <u9>;<ACA>;<CAP>;IGNORE
<U1EF0> <u9>;<PCT>;<CAP>;IGNORE

reorder-after <U0079>
<U1EF3> <y>;<GRA>;<MIN>;IGNORE
<U1EF7> <y>;<HOK>;<MIN>;IGNORE
<U1EF9> <y>;<TIL>;<MIN>;IGNORE
<U1EF5> <y>;<PCT>;<MIN>;IGNORE
reorder-after <U0059>
<U1EF2> <y>;<GRA>;<CAP>;IGNORE
<U1EF6> <y>;<HOK>;<CAP>;IGNORE
<U1EF8> <y>;<TIL>;<CAP>;IGNORE
<U1EF4> <y>;<PCT>;<CAP>;IGNORE

reorder-end

END LC_COLLATE

LC_MONETARY
int_curr_symbol       "<U0056><U004E><U0044><U0020>"
currency_symbol       "<U20AB>"
mon_decimal_point     "<U002C>"
mon_thousands_sep     "<U002E>"
mon_grouping          3;3
positive_sign         ""
negative_sign         "<U002D>"
int_frac_digits       0
frac_digits           0
p_cs_precedes         0
p_sep_by_space        0
n_cs_precedes         1
n_sep_by_space        0
p_sign_posn           1
n_sign_posn           1
END LC_MONETARY

LC_NUMERIC
decimal_point        "<U002C>"
thousands_sep        "<U002E>"
grouping             3;3
END LC_NUMERIC

LC_TIME
abday    "<U0043><U004E>";/
         "<U0054><U0032>";/
         "<U0054><U0033>";/
         "<U0054><U0034>";/
         "<U0054><U0035>";/
         "<U0054><U0036>";/
         "<U0054><U0037>"
day      "<U0043><U0068><U1EE7><U0020><U006E><U0068><U1EAD><U0074>";/
         "<U0054><U0068><U1EE9><U0020><U0068><U0061><U0069>";/
         "<U0054><U0068><U1EE9><U0020><U0062><U0061>";/
         "<U0054><U0068><U1EE9><U0020><U0074><U01B0>";/
         "<U0054><U0068><U1EE9><U0020><U006E><U0103><U006D>";/
         "<U0054><U0068><U1EE9><U0020><U0073><U00E1><U0075>";/
         "<U0054><U0068><U1EE9><U0020><U0062><U1EA3><U0079>"
abmon    "<U0054><U0068><U0030><U0031>";/
         "<U0054><U0068><U0030><U0032>";/
         "<U0054><U0068><U0030><U0033>";/
         "<U0054><U0068><U0030><U0034>";/
         "<U0054><U0068><U0030><U0035>";/
         "<U0054><U0068><U0030><U0036>";/
         "<U0054><U0068><U0030><U0037>";/
         "<U0054><U0068><U0030><U0038>";/
         "<U0054><U0068><U0030><U0039>";/
         "<U0054><U0068><U0031><U0030>";/
         "<U0054><U0068><U0031><U0031>";/
         "<U0054><U0068><U0031><U0032>"
mon      "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U1ED9><U0074>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0068><U0061><U0069>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0062><U0061>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U01B0>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006E><U0103><U006D>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0073><U00E1><U0075>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0062><U1EA3><U0079>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U00E1><U006D>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0063><U0068><U00ED><U006E>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U006D><U1ED9><U0074>";/
         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U0068><U0061><U0069>"
d_t_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U006E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
d_fmt    "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
t_fmt    "<U0025><U0054>"
am_pm    "<U0041><U004D>";"<U0050><U004D>"
t_fmt_ampm  "<U0025><U0049><U003A><U0025><U004D><U0020><U0025><U0070>"
date_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U006E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
END LC_TIME

% yes: Va^ng / Da.
% no: Kho^ng
LC_MESSAGES
yesstr   "<U0043><U00F3>"
nostr    "<U004B><U0068><U00F4><U006E><U0067>"
yesexpr  "<U005E><U005B><U0031><U0079><U0059><U0063><U0043><U005D><U002E><U002A>"
noexpr   "<U005E><U005B><U0030><U006E><U004E><U006B><U004B><U005D><U002E><U002A>"
END LC_MESSAGES

LC_PAPER
height      297
width       210
END LC_PAPER

LC_NAME
% This is the ISO_IEC TR14652 Locale definition for the
% LC_NAME category.
%
name_fmt    "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074>/
<U0025><U006D><U0025><U0074><U0025><U0067>"
name_gen    ""
name_mr     "<U00D4><U002E>"
name_mrs    "<U0042><U002E>"
name_miss   "<U0043><U002E>"
name_ms     ""

END LC_NAME


LC_ADDRESS
% This is the ISO_IEC TR14652 Locale definition for the
% LC_ADDRESS
postal_fmt  "<U0025><U007A><U0025><U0063><U0025><U0054><U0025><U0073>/
<U0025><U0062><U0025><U0065><U0025><U0072>"
country_name "<U0056><U0069><U1EC7><U0074><U0020><U006E><U0061><U006D>"
lang_name "<U0056><U0069><U1EC7><U0074><U0020><U006E><U0067><U1EEF>"

country_ab2 "<U0056><U004E>"
country_ab3 "<U0056><U004E><U004D>"
country_num 704
END LC_ADDRESS


LC_TELEPHONE
% This is the ISO_IEC TR14652 Locale definition for the
%
tel_int_fmt "<U002B><U0025><U0063><U0020><U003B><U0025><U0061><U0020>/
<U003B><U0025><U006C>"
int_prefix  "<U0038><U0034>"
int_select  "<U0030><U0030>"

END LC_TELEPHONE

LC_MEASUREMENT
measurement 1
END LC_MEASUREMENT


</pre>
Hai cái diff của bước trên theo sau:
<pre>
<font color="00A040"><strong>--- vi_VN0	2005-11-12 00:40:35.000000000 +0900</strong></font>
<font color="00A040"><strong>+++ vi_VN2	2005-11-12 01:01:46.000000000 +0900</strong></font>
<font color="A0A000"><strong>@@ -233,8 +233,8 @@</strong></font>
 mon_grouping          3;3
 positive_sign         ""
 negative_sign         "<U002D>"
<font color="FF0000"><strong>-int_frac_digits       4</strong></font>
<font color="FF0000"><strong>-frac_digits           4</strong></font>
<font color="0000FF"><strong>+int_frac_digits       0</strong></font>
<font color="0000FF"><strong>+frac_digits           0</strong></font>
 p_cs_precedes         0
 p_sep_by_space        0
 n_cs_precedes         1
<font color="A0A000"><strong>@@ -264,19 +264,19 @@</strong></font>
          "<U0054><U0068><U1EE9><U0020><U006E><U0103><U006D>";/
          "<U0054><U0068><U1EE9><U0020><U0073><U00E1><U0075>";/
          "<U0054><U0068><U1EE9><U0020><U0062><U1EA3><U0079>"
<font color="FF0000"><strong>-abmon    "<U0054><U0068><U0031>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0032>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0033>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0034>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0035>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0036>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0037>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0038>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U0039>";/</strong></font>
<font color="0000FF"><strong>+abmon    "<U0054><U0068><U0030><U0031>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0032>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0033>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0034>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0035>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0036>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0037>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0038>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U0030><U0039>";/</strong></font>
          "<U0054><U0068><U0031><U0030>";/
          "<U0054><U0068><U0031><U0031>";/
          "<U0054><U0068><U0031><U0032>"
<font color="FF0000"><strong>-mon      "<U0054><U0068><U00E1><U006E><U0067><U0020><U0067><U0069><U00EA><U006E><U0067>";/</strong></font>
<font color="0000FF"><strong>+mon      "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U1ED9><U0074>";/</strong></font>
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0068><U0061><U0069>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0062><U0061>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U01B0>";/
<font color="A0A000"><strong>@@ -286,12 +286,12 @@</strong></font>
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0074><U00E1><U006D>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U0063><U0068><U00ED><U006E>";/
          "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069>";/
<font color="FF0000"><strong>-         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U1ED9><U0074>";/</strong></font>
<font color="FF0000"><strong>-         "<U0054><U0068><U00E1><U006E><U0067><U0020><U0063><U0068><U1EA1><U0070>"</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U006D><U1ED9><U0074>";/</strong></font>
<font color="0000FF"><strong>+         "<U0054><U0068><U00E1><U006E><U0067><U0020><U006D><U01B0><U1EDD><U0069><U0020><U0068><U0061><U0069>"</strong></font>
 d_t_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U006E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
 d_fmt    "<U0025><U0064><U002F><U0025><U006D><U002F><U0025><U0059>"
 t_fmt    "<U0025><U0054>"
<font color="FF0000"><strong>-am_pm    "<U0073><U00E1><U006E><U0067>";"<U0063><U0068><U0069><U1EC1><U0075>"</strong></font>
<font color="0000FF"><strong>+am_pm    "<U0041><U004D>";"<U0050><U004D>"</strong></font>
 t_fmt_ampm  "<U0025><U0049><U003A><U0025><U004D><U0020><U0025><U0070>"
 date_fmt  "<U0025><U0041><U002C><U0020><U0025><U0064><U0020><U0025><U0042><U0020><U006E><U0103><U006D><U0020><U0025><U0059><U0020><U0025><U0054><U0020><U0025><U005A>"
 END LC_TIME
<font color="A0A000"><strong>@@ -315,7 +315,7 @@</strong></font>
 % LC_NAME category.
 %
 name_fmt    "<U0025><U0070><U0025><U0074><U0025><U0066><U0025><U0074>/
<font color="FF0000"><strong>-<U0025><U0067>"</strong></font>
<font color="0000FF"><strong>+<U0025><U006D><U0025><U0074><U0025><U0067>"</strong></font>
 name_gen    ""
 name_mr     "<U00D4><U002E>"
 name_mrs    "<U0042><U002E>"

</pre>
patch 2
<pre>
<font color="00A040"><strong>--- vi_VN.orig.1	2005-11-12 01:18:49.000000000 +0900</strong></font>
<font color="00A040"><strong>+++ vi_VN2.1	2005-11-12 01:18:57.000000000 +0900</strong></font>
<font color="A0A000"><strong>@@ -233,8 +233,8 @@</strong></font>
 mon_grouping          3;3
 positive_sign         ""
 negative_sign         "-"
<font color="FF0000"><strong>-int_frac_digits       4</strong></font>
<font color="FF0000"><strong>-frac_digits           4</strong></font>
<font color="0000FF"><strong>+int_frac_digits       0</strong></font>
<font color="0000FF"><strong>+frac_digits           0</strong></font>
 p_cs_precedes         0
 p_sep_by_space        0
 n_cs_precedes         1
<font color="A0A000"><strong>@@ -264,19 +264,19 @@</strong></font>
          "Thứ năm";/
          "Thứ sáu";/
          "Thứ bảy"
<font color="FF0000"><strong>-abmon    "Th1";/</strong></font>
<font color="FF0000"><strong>-         "Th2";/</strong></font>
<font color="FF0000"><strong>-         "Th3";/</strong></font>
<font color="FF0000"><strong>-         "Th4";/</strong></font>
<font color="FF0000"><strong>-         "Th5";/</strong></font>
<font color="FF0000"><strong>-         "Th6";/</strong></font>
<font color="FF0000"><strong>-         "Th7";/</strong></font>
<font color="FF0000"><strong>-         "Th8";/</strong></font>
<font color="FF0000"><strong>-         "Th9";/</strong></font>
<font color="0000FF"><strong>+abmon    "Th01";/</strong></font>
<font color="0000FF"><strong>+         "Th02";/</strong></font>
<font color="0000FF"><strong>+         "Th03";/</strong></font>
<font color="0000FF"><strong>+         "Th04";/</strong></font>
<font color="0000FF"><strong>+         "Th05";/</strong></font>
<font color="0000FF"><strong>+         "Th06";/</strong></font>
<font color="0000FF"><strong>+         "Th07";/</strong></font>
<font color="0000FF"><strong>+         "Th08";/</strong></font>
<font color="0000FF"><strong>+         "Th09";/</strong></font>
          "Th10";/
          "Th11";/
          "Th12"
<font color="FF0000"><strong>-mon      "Tháng giêng";/</strong></font>
<font color="0000FF"><strong>+mon      "Tháng một";/</strong></font>
          "Tháng hai";/
          "Tháng ba";/
          "Tháng tư";/
<font color="A0A000"><strong>@@ -286,12 +286,12 @@</strong></font>
          "Tháng tám";/
          "Tháng chín";/
          "Tháng mười";/
<font color="FF0000"><strong>-         "Tháng một";/</strong></font>
<font color="FF0000"><strong>-         "Tháng chạp"</strong></font>
<font color="0000FF"><strong>+         "Tháng mười một";/</strong></font>
<font color="0000FF"><strong>+         "Tháng mười hai"</strong></font>
 d_t_fmt  "%A, %d %B năm %Y %T %Z"
 d_fmt    "%d/%m/%Y"
 t_fmt    "%T"
<font color="FF0000"><strong>-am_pm    "sáng";"chiều"</strong></font>
<font color="0000FF"><strong>+am_pm    "AM";"PM"</strong></font>
 t_fmt_ampm  "%I:%M %p"
 date_fmt  "%A, %d %B năm %Y %T %Z"
 END LC_TIME
<font color="A0A000"><strong>@@ -315,7 +315,7 @@</strong></font>
 % LC_NAME category.
 %
 name_fmt    "%p%t%f%t/
<font color="FF0000"><strong>-%g"</strong></font>
<font color="0000FF"><strong>+%m%t%g"</strong></font>
 name_gen    ""
 name_mr     "Ô."
 name_mrs    "B."

Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 12 Tháng một năm 2005 01:09:13 JST

Chỉnh locale - State of the art

Chỉnh locale là chuyện hết sức vui.

# Bước 1, chuyển locale sang dạng thức có thể chỉnh được:
cat vi_VN.orig|sed 's/<U\([0-9A-F]\{4\}\)>/<U\{\&#x\1;\}>/g'|uvconv -f ncr-hex -t utf-8 > vi_VN
# Bước 2, chỉnh.
# Bước 3, chuyển ngược lại (lạy chúa, ác mộng!)
uvconv -f utf-8 -t ncr-hex vi_VN |sed 's/<U{&#x\([0-9a-fA-F]*\);}>/<U\1>/g'|perl -pe 's/<U{(.)}>/sprintf "<U%x>",unpack('C',$1)/ge' |sed 's/<U\([0-9A-Fa-f]\{3\}\)>/<U0\1>/g;s/<U\([0-9A-Fa-f]\{2\}\)>/<U00\1>/g'|perl -pe 's/<U([0-9A-Fa-f]{4})>/"<U".uc($1).">"/ge' > vi_VN2 
# Bước 4, diff coi nó sửa cái quái gì, đồng thời để kiểm tra bước ác mộng trên làm sai cái gì
diff -u vi_VN.orig vi_VN2
# Bước 5, phát sinh ra dạng thức dễ coi hơn và diff lần nữa :( 
cat vi_VN.orig|sed 's/<U\([0-9A-F]\{4\}\)>/\&#x\1;/g'|uvconv -f ncr-hex -t utf-8 > vi_VN.orig.1
cat vi_VN2|sed 's/<U\([0-9A-F]\{4\}\)>/\&#x\1;/g'|uvconv -f ncr-hex -t utf-8 > vi_VN2.1
diff -u vi_VN.orig.1 vi_VN2.1
# Bước cuối, cập nhật locale hệ thống
localedef -v -ci vi_VN2 -f UTF-8 vi_VN.UTF-8

Cập nhật 1 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ sáu, 11 Tháng một năm 2005 22:04:46 JST

Browser robot

Cần một cái browser xịn (gecko-based) cho phép mở shell và điều khiển bằng tay (dạng như bash shell). Nếu không mở shell thì mở socket để shell móc vô cũng tốt.


Cập nhật 1 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ sáu, 11 Tháng một năm 2005 18:46:46 JST

Who am I?

Hưởng ứng phong trào QuizFarm trên Gentoo Planet. Ta là .. batman! :P

You scored as Batman, the Dark Knight. As the Dark Knight of Gotham, Batman is a vigilante who deals out his own brand of justice to the criminals and corrupt of the city. He follows his own code and is often misunderstood. He has few friends or allies, but finds comfort in his cause.

Batman, the Dark Knight

67%

Lara Croft

54%

Neo, the "One"

50%

Maximus

50%

Captain Jack Sparrow

42%

Indiana Jones

42%

The Terminator

38%

William Wallace

38%

James Bond, Agent 007

38%

The Amazing Spider-Man

33%

El Zorro

13%

Which Action Hero Would You Be? v. 2.0
created with QuizFarm.com

Hơn một năm sau, kiểm tra lại, vẫn là batman :(

You scored as Batman, the Dark Knight. As the Dark Knight of Gotham, Batman is a vigilante who deals out his own brand of justice to the criminals and corrupt of the city. He follows his own code and is often misunderstood. He has few friends or allies, but finds comfort in his cause.

Batman, the Dark Knight

75%

Maximus

54%

Neo, the "One"

54%

Indiana Jones

50%

James Bond, Agent 007

46%

The Terminator

42%

William Wallace

38%

The Amazing Spider-Man

33%

Lara Croft

29%

Captain Jack Sparrow

17%

El Zorro

13%

Which Action Hero Would You Be? v. 2.0
created with QuizFarm.com

Cập nhật 3 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ năm, 10 Tháng một năm 2005 20:09:01 JST

Cos hieeur khoong?

Neeus banj hieeur dduwowcj cais nayf, chucs mungf banj gia nhaapj hooij nhuwngx thawngf khungf.

[16:04] <pclouds> dhson: chayj xen ddeer chuwngs tor minhf laf hawcs cowf
[16:04] * dhson nhif quanh khoong thaays ai ddeer "chuwngs tor" hic hic
[16:04] <pclouds> mk daan xaif vni maf bats gox telex, phee quas]
[16:05] <dhson> pclouds, gox telex lej hown VNI
[16:05] <dhson> khoong phari nhaasc tay leen
[16:05] <pclouds> dhson: thi gox nhes ?
[16:05] <pclouds> xem ai gox nhanh hown lolz
[16:05] <dhson> Oh, no
[16:05] * dhson moor cof
[16:06] <dhson> nhanh hown laf nhanh hown so vowis chinsh minhf thooi
[16:06] <pclouds> gox taif lieeuj kyx thuaatj vuaf tieengs anh vuwaf tieengs vieetj
[16:06] <dhson> uwf, khi ddos howi phuwsc tapj
[16:07] <b1nhb00ng> boos khir nos chuws, gox thees nayf maf ddocj ddc af?
[16:07] <dhson> Nhuwng config hotkey laij 1 chust ddeer nos on/off tieesng V nhanh thif cungx ok
[16:07] <dhson> b1nhb00ng, thif bojn /me hocj b1nhb00ng chuws ai
[16:08] <dhson> thaays hay quas
[16:08] <pclouds> b1nhb00ng: dduwngf chocj em cuwowif chungs nos nhinf chungs nos bieets em chat
[16:08] <b1nhb00ng> khi nayx gox nhaamf, queen bor daaus chuws cos phair muoons gox thees ddaau
[16:08] <dhson> tsb bonj mrchuoi ngu nhuw bof
[16:08] <b1nhb00ng> )
[16:08] <dhson> sao khoong vieest tieesng V nhuw vaajy cho pher
[16:09] <dhson> bayf ddawjt xvnkb
[16:09] <dhson> )
[16:09] <mrchuoi> pclouds, la`m 1 ca'i filter cho xchat, filter loa.i "encoding" na`y tha`nh VIQR hoa(.c utf-8
[16:09] <mrchuoi> L0Lz
[16:09] <pclouds> tawng cuwowngf khar nawng xuwr lys cuar brain lolz
[16:09] <b1nhb00ng> ddungs ra thif ngayf xuwa, cacs kuj ddeeuf dungf "charset" nayf ddeer guwir ddieenj tins
[16:09] <dhson> mrchuoi, ddusng laf ngu laau
[16:09] <mrchuoi> dhson, the^' tho^i
[16:09] <mrchuoi>
[16:09] <pclouds> tho6i chuye63ng qua vni hi1 hi1
[16:09] <dhson> mrchuoi, quay bafn fism 7 vongf
[16:10] <pclouds> go4 nhanh ho7n ha83n
[16:10] <mrchuoi> pclouds, L0Lz
[16:10] <dhson> mrchuoi, ddusng laf duw howi
[16:10] <dhson> cuws lo convert noj kia
[16:10] * dhson thaays thees nayf toost chasn
[16:10] <mrchuoi> hehehe
[16:11] <pclouds> ngoons nguwx mois cuar hawcs cowf vn
[16:11] <dhson> hahaha
[16:11] <dhson> hay quas
[16:11] <pclouds> bonj taay nhinf chir cos ddieecs
[16:11] <dhson> bonj ta nhinf cungx ddieesc
[16:11] <mrchuoi> tuo?ng pha't ca'i minh chi mo+'i
[16:11] <mrchuoi>
[16:11] <mrchuoi> ca'c ku. nha` ta dda~ du`ng ha`ng ma^'y the^' ky?
[16:11] <mrchuoi> L0Lz
[16:11] <pclouds> *\khoong dduwowcj chocj cuwowif*
[16:12] <dhson> cho bojn asc min nhuw pmquan heest cuwar firewall
[16:12] <dhson> mrchuoi, thif taij con chaus ngu quas
[16:12] <mrchuoi> hahaha the^' thi` ku. ddu'ng la` dek bie^'t gi`
[16:12] <dhson> khoong bieest duwx dinf truyeefn thoongs
[16:12] <pclouds> mrchuoi: cais nayf goij laf tieens hoas
[16:12] <pclouds> quay laij thowif ddoof ddas
[16:12] <dhson> pclouds, tieesn hoas theo hinhf tro^n oosc
[16:12] <pclouds> dhson: yep yep
[16:13] <dhson> af la Marx
[16:13] <pclouds> vaf chur nghiax duy vaatj bieenj chuwngs
[16:13] <pclouds> lolz
[16:13] <dhson> hahah
[16:13] <mrchuoi> chu? nghi~a con va^.t ... bie^'n chu?ng
[16:13] <mrchuoi> L0Lz
[16:13] <dhson> mrchuoi, ddunsg laf dek hieeru gif vee "chieets hojc"
[16:14] <dhson> oh, /me oom bujng cuwowif
[16:14] <pclouds> mrchuoi: khoong phair, phair goij laf thoais hoas hoawcj ddootj bieens
[16:14] <dhson> car lux hojc trof tuwowngr /me ddieen
[16:15] <pclouds> chungs ddaau ngowf dhson ddieen thieetj
[16:15] <dhson> )
[16:15] <mrchuoi> L0LzZzzZZZzzz
[16:15] <dhson> ddungs thees
[16:15] <dhson> thees mowis ngu asc
[16:15] <dhson> )
[16:16] <pclouds> dhson: thees laf chungs ta laij tieens hoas dduwowcj theem moot buwowcs
[16:16] <dhson> mrchuoi> chu? nghi~a con va^.t ... bie^'n chu?ng <---- cho leen title cura IRC ddi
[16:16] <pclouds> sawps thanhf nguwowif rooif, hus hus
[16:16] * dhson nghe pclouds "hus hus" maf rowjn soongs luwng
[16:17] <dhson> nhows towis film gif veef hanhf tinh khir
[16:17] <dhson> )
[16:17] <dhson> hahah, hoom nay laxo vnoss maf xem log chawsc tes xiur
[16:18] <b1nhb00ng> cos maf chuwir ddoongr leen mootj hooif rooif fawns
[16:18] <pclouds> quis a ddow quowf
[16:18] <pclouds> quis a ddow chiu rownf
[16:19] <dhson> ???
[16:19] <pclouds> quis a ddow quan tu mak owf be ddow quay
[16:19] <mrchuoi> l0lz
[16:19] <dhson> caau nayf thif thua
[16:19] <mrchuoi> no' ha't tie^'ng Anh
[16:19] <mrchuoi>
[16:19] <pclouds> so lets xif ta ghi vinhf
[16:20] <pclouds> 2 level encoding
[16:20] <dhson> ah, nos hast we r the world thif phari
[16:20] <dhson> hahah )
[16:20] <pclouds> theem cais xor filter nuwax laf nhinf ddieecs luoon
[16:21] <dhson> miaj, ngoon nguwx phast trieern towis cowx nayf nuwax laf cufng
[16:21] <dhson> b1nhb00ng, khoong ngof minhf ddax gaay hoaj cho IRC
[16:22] <dhson> chir vif queen on xvnkb maf ra noong nooix nayf
[16:22] <b1nhb00ng> ddungs rooif
[16:23] <pclouds> his his, giowf maf bieens tieengs Anh sang katakana xong dungf telex nuas thif ddoos thawngf naof hieeur dduwowcj
[16:23] <b1nhb00ng> thawngf bi kia, mayf bij taaur hoar nhaapj ma rooif ddaays, lo maf tawng cuwowngf xem pr0n ddi
[16:23] <pclouds> b1nhb00ng: cho em xin tis pron ddi
[16:23] <dhson> chir 1 xow sayr cura 1 anh b1nhb00ng maf vongf tronf tieesn hoas quay nhanh vafi thees kyr
[16:24] <pclouds> xem taij choox, share cho tui. kia mootj tis luoon
[16:24] <mrchuoi> b1nhb00ng, xem pr0n cuar jp thif cangf cos nguy cow, vif toanf carro k0 thooi
[16:24] <mrchuoi>
[16:24] <b1nhb00ng> dhson: em coos ys lamf thees ddaays chuws )
[16:24] <b1nhb00ng> mrchuoi: haha, uh, toanf bij pixelized heets rooif
[16:24] *** vnoss_ [n=vnoss@169.199-78-194.adsl-fix.skynet.be] has joined #vietlug
[16:25] <mrchuoi> haha, kuj vnoss_ voo
[16:25] <mrchuoi>
[16:25] <b1nhb00ng> kekeke
[16:25] <dhson> thaasy chuwa, mrchuoi sau 1 lusc ngoan coos cungx chuyeern qua encoding mowis ruif
[16:25] * b1nhb00ng bopj vnoss_
[16:25] * vnoss_ chu+a co' cafe sa'ng, ddau o'c mu. ma^~m, ko no'i chuyen dduoc
[16:26] * pclouds khoong hieeur vnoss nois gif
[16:26] <dhson> voo 1 ly cafe ddi kuj
[16:26] <dhson> pclouds, owf owf, kuj aasy nois tieesng cura khir
[16:26] <dhson> chuwa tieesn hoas
[16:26] <chairuou> hooif xuwa tao gox thees nayf hoaif
[16:26] *** vnoss_ [n=vnoss@169.199-78-194.adsl-fix.skynet.be] has quit [Client Quit]
[16:27] <dhson> cos ai cos pron khoong?
[16:27] * pclouds khuyeen vnoss khoong neen uoongs cafe, minhf uoongs cafe neen giowf tieens hoas ra thees nayf
[16:27] *** vnoss_ [n=vnoss@169.199-78-194.adsl-fix.skynet.be] has joined #vietlug
[16:27] <dhson> pr0n mowis aays
[16:28] * dhson oom bujng cuwowif chary car nuwowsc mawst
[16:28] *** b1nhb00ng changed the topic to: Welcome to #vietlug | http://forum.vnoss.org | SmartQuestions [beta] - http://zecoj.com/sq/ | VnTeX 3.02 @ http://vntex.org | 10.11.05 13:54:41 GMT+7 b1nhb00ng reinvented TELEX
[16:28] <dhson> b1nhb00ng, theem aau cura mrchuoi voo luoon
[16:29] <dhson> CN con vaajt bieejn chuwsng
[16:29] <chairuou> dhson, bacs cos bieets gox TELEX cawcj ddaau
[16:29] <chairuou> gox sai mej nos heets rooif
[16:29] *** b1nhb00ng changed the topic to: Welcome to #vietlug | http://forum.vnoss.org | SmartQuestions [beta] - http://zecoj.com/sq/ | VnTeX 3.02 @ http://vntex.org | 10.11.05 13:54:41 GMT+7 b1nhb00ng reinvented TELEX | QOTW (mrchuoi): "chu? nghi~a con va^.t ... bie^'n chu?ng"
[16:30] <pclouds> chucs muwngf chairuou ddax tieens hoas theem mootj buwowcs
[16:30] <dhson> chairuou, owf, /me thichs gox daaus lung tung ddaay
[16:30] <vnoss_> sao /me thay toa`n kieu go~ telex "raw" the nhi?
[16:30] <dhson> ddos laf suwj tieesn hoas
[16:30] <dhson> chuwx Telex phari bor daaus sau
[16:30] <dhson> hahaha )
[16:30] <dhson> nhuwng chuwx telex tieesn hoas bor daaus lung tung
[16:31] <dhson> thees mowi goij laf bieejn chuwsng cura tieesn hoas
[16:31] <pclouds> dhson: dder nghij bor daaus sau chuwx
[16:31] <dhson> pclouds, thees thif conf gif laf tieesn hoas
[16:31] <dhson> tieesn hoas 1 vongf phari khasc truwowsc chuws
[16:31] <dhson> cuws gox thoair masi
[16:31] <pclouds> cais ddos laf phaan hoas
[16:32] <pclouds> daanf daanf sex daanx ddeens thoais hoas
[16:32] <pclouds> tuwowng lai cuar dhson ddos
[16:32] <dhson> thoais hoas cungx laf taast yeesu cura tieesn hoas
[16:33] <mrchuoi> the^m thuye^'t tie^'n thoa'i ... luo~ng hoa'
[16:33] <mrchuoi> L0Lz
[16:33] <dhson> vnoss_, bafn chuyeejn Philo phari dungf chuwx Phajn kieeru nayf
[16:33] <pclouds> mootj lys thuyeets tieens hoas heets suwcs laf .. tieens hoas
[16:33] *** skz0 [n=SeekZero@220.231.106.231] has joined #vietlug
[16:34] <dhson> Bafn chuyeejn tieesn hoas maf vieest bawngf tieesng V thif chawrng hoas ra ai cungx hieeur maf khoong caafn nghix af? )
[16:34] <pclouds> hoongr chuwngf hooif xuwa marx nois chuyeenj vois engel theo kieeur nayf, ddocj nhaamf neen vieets ra dvbc
[16:34] <dhson> hahahahh ddusng ddos pclouds
[16:34] <pclouds> ddocj ddungs lamf gif cos dvbc
[16:35] <dhson> ddojc ddusng thif ra con vaajt bc
[16:36] <pclouds> ows, ddungs quas
[16:36] <dhson> pclouds, vuwaf phast hieejn ra 1 bis maajt vix ddaij cura lichj suwr
[16:36] <dhson> thanks to b1nhb00ng mistaken
[16:36] <pclouds> dhson: yups yups
[16:37] <pclouds> suwj bieens dij laf nguoonf goocs cuar moij vaans ddeef
[16:37] <dhson> thooi, /me ddi lafm vieejc tieesp
[16:37] <pclouds> vaf chungs ta ddang bieens ..
[16:37] <dhson> ))
[16:37] <mrchuoi> tha'i
[16:37] <mrchuoi>
[16:37] * dhson khoong ngowf vietlug toanf "chieest ra" thuws duwx
[16:38] <pclouds> phaanf sau ai thichs gif thif cuws ddieenf voo theo ys minhf\

Chaam ngoon hoom nay: Moij nguwowif laf moij.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ tư, 09 Tháng một năm 2005 23:02:57 JST

Dia mới sắp phát hành

Từ Dia mail archive:

As you may have noticed, Dia development has been fairly slow the last couple months. For my part, it's been blocked by a combination of needing to work down a minus on my flextime at work plus buying an apartment and moving to it which has taken almost all my spare time. Things have now quieted down a bit, and I am starting to look at what's needed for a 0.95 release again. We still have a number of open bugs, currently 1 blocker, 8 criticals and 5 majors[1]. That should be reduced significantly before we can go to release test. The UML Class object has had serious problems, but is getting better. I hope to be able to whittle away at the bugs in November and try for a release around Christmas. But the next two weeks, I will be on the west coast of USA for some much needed vacation. Have fun everybody!

-Lars

Hy vọng sẽ có Dia mới đầu 2006. Dia CVS có khá nhiều thay đổi so với Dia 0.94 hiện giờ.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ ba, 08 Tháng một năm 2005 22:52:26 JST

Gaim và "Invisible login" với Yahoo account

mikado làm một cái patch để hỗ trợ tính năng đăng nhập yahoo không online. Theo dõi thêm trên VnOSS Forum.

Cache lại cái patch của mikado để lỡ ... :

diff -Naur gaim-1.5.0/src/account.c gaim-1.5.0-yinvisible-2/src/account.c
--- gaim-1.5.0/src/account.c	2005-06-17 20:08:51.000000000 +0700
+++ gaim-1.5.0-yinvisible-2/src/account.c	2005-11-08 19:25:30.000000000 +0700
@@ -41,6 +41,7 @@
 	TAG_PROTOCOL,
 	TAG_NAME,
 	TAG_PASSWORD,
+	TAG_INVISIBLE,
 	TAG_ALIAS,
 	TAG_USERINFO,
 	TAG_BUDDYICON,
@@ -520,6 +521,16 @@
 }
 
 void
+gaim_account_set_login_invisible(GaimAccount *account, gboolean value)
+{
+	g_return_if_fail(account != NULL);
+
+	account->login_invisible = value;
+
+	schedule_accounts_save();
+}
+
+void
 gaim_account_set_proxy_info(GaimAccount *account, GaimProxyInfo *info)
 {
 	g_return_if_fail(account != NULL);
@@ -793,6 +804,14 @@
 	return gaim_account_get_ui_bool(account, ui, "auto-login", FALSE);
 }
 
+gboolean
+gaim_account_get_login_invisible(const GaimAccount *account)
+{
+	g_return_val_if_fail(account != NULL, FALSE);
+
+	return account->login_invisible;
+}
+
 GaimProxyInfo *
 gaim_account_get_proxy_info(const GaimAccount *account)
 {
@@ -998,6 +1017,8 @@
 		data->tag = TAG_NAME;
 	else if (!strcmp(element_name, "password"))
 		data->tag = TAG_PASSWORD;
+	else if (!strcmp(element_name, "invisible"))
+		data->tag = TAG_INVISIBLE;
 	else if (!strcmp(element_name, "alias"))
 		data->tag = TAG_ALIAS;
 	else if (!strcmp(element_name, "userinfo"))
@@ -1080,6 +1101,13 @@
 			}
 		}
 	}
+	else if (data->tag == TAG_INVISIBLE) {
+		if (*buffer != '\0')
+			if (!strcmp(buffer, "yes"))
+				gaim_account_set_login_invisible(data->account, TRUE);
+			else
+				gaim_account_set_login_invisible(data->account, FALSE);
+	}
 	else if (data->tag == TAG_ALIAS) {
 		if (*buffer != '\0')
 			gaim_account_set_alias(data->account, buffer);
@@ -1316,6 +1344,11 @@
 		g_free(esc);
 	}
 
+	if (gaim_account_get_login_invisible(account))
+		fprintf(fp, "  <invisible>%s</invisible>\n", "yes");
+	else
+		fprintf(fp, "  <invisible>%s</invisible>\n", "no");
+
 	if ((alias = gaim_account_get_alias(account)) != NULL) {
 		esc = g_markup_escape_text(alias, -1);
 		fprintf(fp, "  <alias>%s</alias>\n", esc);
diff -Naur gaim-1.5.0/src/account.h gaim-1.5.0-yinvisible-2/src/account.h
--- gaim-1.5.0/src/account.h	2005-03-18 09:53:27.000000000 +0700
+++ gaim-1.5.0-yinvisible-2/src/account.h	2005-11-08 19:25:31.000000000 +0700
@@ -56,6 +56,7 @@
 	char *buddy_icon;           /**< The buddy icon.                      */
 
 	gboolean remember_pass;     /**< Remember the password.               */
+	gboolean login_invisible;
 
 	char *protocol_id;          /**< The ID of the protocol.              */
 
@@ -263,6 +264,14 @@
 								 gboolean value);
 
 /**
+ * Sets whether or not this account should login invisible.
+ *
+ * @param account The account.
+ * @param value   @c TRUE if it should login invisible.
+ */
+void gaim_account_set_login_invisible(GaimAccount *account, gboolean value);
+
+/**
  * Sets the account's proxy information.
  *
  * @param account The account.
@@ -451,6 +460,15 @@
 									 const char *ui);
 
 /**
+ * Returns whether or not this account should login invisible.
+ *
+ * @param account The account.
+ *
+ * @return @c TRUE if it should login invisible.
+ */
+gboolean gaim_account_get_login_invisible(const GaimAccount *account);
+
+/**
  * Returns the account's proxy information.
  *
  * @param account The account.
diff -Naur gaim-1.5.0/src/gtkaccount.c gaim-1.5.0-yinvisible-2/src/gtkaccount.c
--- gaim-1.5.0/src/gtkaccount.c	2005-06-30 11:01:24.000000000 +0700
+++ gaim-1.5.0-yinvisible-2/src/gtkaccount.c	2005-11-08 19:25:31.000000000 +0700
@@ -113,6 +113,7 @@
 	GtkWidget *alias_entry;
 	GtkWidget *remember_pass_check;
 	GtkWidget *auto_login_check;
+	GtkWidget *login_invisible_check;
 
 	/* User Options */
 	GtkWidget *user_frame;
@@ -752,7 +753,16 @@
 	gtk_box_pack_start(GTK_BOX(vbox), dialog->auto_login_check,
 					   FALSE, FALSE, 0);
 	gtk_widget_show(dialog->auto_login_check);
-
+	
+	/* Login Invisible */
+	dialog->login_invisible_check =
+		gtk_check_button_new_with_label(_("Login invisible"));
+	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(dialog->login_invisible_check),
+								 FALSE);
+	gtk_box_pack_start(GTK_BOX(vbox), dialog->login_invisible_check,
+					   FALSE, FALSE, 0);
+	gtk_widget_show(dialog->login_invisible_check);
+	
 	/* Set the fields. */
 	if (dialog->account != NULL) {
 		if (gaim_account_get_password(dialog->account))
@@ -770,6 +780,10 @@
 		gtk_toggle_button_set_active(
 				GTK_TOGGLE_BUTTON(dialog->auto_login_check),
 				gaim_account_get_auto_login(dialog->account, GAIM_GTK_UI));
+
+		gtk_toggle_button_set_active(
+				GTK_TOGGLE_BUTTON(dialog->login_invisible_check),
+				gaim_account_get_login_invisible(dialog->account));
 	}
 
 	if (dialog->prpl_info != NULL &&
@@ -1378,6 +1392,11 @@
 			gtk_toggle_button_get_active(
 				GTK_TOGGLE_BUTTON(dialog->auto_login_check)));
 
+	/* Login Invisible */
+	gaim_account_set_login_invisible(dialog->account,
+			gtk_toggle_button_get_active(
+					GTK_TOGGLE_BUTTON(dialog->login_invisible_check)));
+
 	/* Password */
 	value = gtk_entry_get_text(GTK_ENTRY(dialog->password_entry));
 
diff -Naur gaim-1.5.0/src/protocols/yahoo/yahoo.c gaim-1.5.0-yinvisible-2/src/protocols/yahoo/yahoo.c
--- gaim-1.5.0/src/protocols/yahoo/yahoo.c	2005-08-04 07:57:44.000000000 +0700
+++ gaim-1.5.0-yinvisible-2/src/protocols/yahoo/yahoo.c	2005-11-08 19:25:41.000000000 +0700
@@ -1836,8 +1836,10 @@
 		sprintf(byte, "%c", delimit_lookup[lookup]);
 		strcat(resp_96, byte);
 	}
-	
-	pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP,	YAHOO_STATUS_AVAILABLE, 0);
+	if (account->login_invisible)
+		pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP,	YAHOO_STATUS_INVISIBLE, 0);
+	else
+		pack = yahoo_packet_new(YAHOO_SERVICE_AUTHRESP,	YAHOO_STATUS_AVAILABLE, 0);
 	yahoo_packet_hash(pack, 0, name);
 	yahoo_packet_hash(pack, 6, resp_6);
 	yahoo_packet_hash(pack, 96, resp_96);



Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ ba, 08 Tháng một năm 2005 00:55:06 JST

Trình bắt lỗi chính tả đơn giản

gnome-vi vẫn còn gặp những lỗi chính tả hết sức đơn giản và chỉ cần một bộ bắt lỗi chính tả dựa trên tiếng là đủ phát hiện.


Cập nhật 1 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ hai, 07 Tháng một năm 2005 23:30:20 JST

Cairo và recording

Do Cairo hoạt động cũng giống như dạng batch command của GDI, OpenGL hay PS (đoán vậy). Và nếu Gtk+ đã chuyển hoàn toàn sang dùng Cairo (hy vọng), thì tại sao không thể hook vào cairo để thu lại toàn bộ tập lệnh đó (tập lệnh gửi ra cairo để vẽ nên desktop) và phát lại sau?

Như vậy có thể tạo ra một dạng "animation format" mới, cô đọng hơn và có vẻ giống .wmf và .swf

Mục đầu tiên mở hàng cho phân loại mới: "Hâm" (hy vọng bác vnpenguin không đăng ký nhãn hiệu thương mại cho chữ này và không kiện) :D (tên cũ "Todo").


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ hai, 07 Tháng một năm 2005 23:19:36 JST

Sabayon demo

Sabayon là công cụ dụng để quản lý cấu hình GConf cho toàn hệ thống. Alexander Larsson có làm một cái flash để minh hoạ Sabayon.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Chủ nhật, 06 Tháng một năm 2005 00:11:50 JST

Web-based Source Navigator

Source Navigator có khả năng phân tích code cực tốt, chỉ tội UI xấu quá. Sao không đưa sourcenav lên web nhỉ? Dùng làm cross reference và code review là tuyệt vời!


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 05 Tháng một năm 2005 22:58:46 JST

Firefox/Mozilla/Epiphany crash với Composite/Damage

Lỗi được giải thích trên Bug 1336: đây là lỗi flash plugin (và chừng nào chưa có open source flash plugin thì miễn sửa), dùng lệnh sau:

export XLIB_SKIP_ARGB_VISUALS=1 ; firefox

Với ai dùng Composite luôn thì nên cho vào ~/.profile luôn cho gọn.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 05 Tháng một năm 2005 17:54:42 JST

xorg-x11 modular

Bản module hoá của xorg-x11 được tách thành 296 gói! Các bộ font, các ứng dụng X tiền sử, các thư viện, các protocol và các driver đều được tách thành gói riêng. Woohoo! Với số lượng gói như vậy, việc cấu hình/cài đặt xorg-x11 cũng nhức đầu không kém linux kernel. Bù lại ta có thể bỏ bớt những thứ không cần dùng. Giờ bà con có thể cài X app trên server mà không cần cài X server :)

Cài đặt xorg-x11 mới chỉ dùng khoảng 100 gói, còn 196 gói khác để dành cho tự khám phá :D

Vừa cài đặt lại xorg-x11, vừa chạy X cũng có cái thú. X vẫn chạy, nhưng start X app mới thì toi vì đã lỡ xoá mất X khỏi máy rồi :D Ai định vừa chạy X vừa nâng cấp nên chạy tất cả những ứng dụng X cần thiết rồi hãy unmerge X.

Cài đặt xong, restart X. Tiêu. ModulePath trong xorg.conf không còn đúng (giá trị cũ là /usr/lib/modules, giá trị mới là /usr/lib/xorg/modules) dẫn đến lỗi bí ẩn: "không thể nạp module bitmap/pcidata" :( Cần emerge thêm xf86-video-vesa, xf86-input-mousexf86-input-keyboard :(( Ngoài ra, xterm cũng chết ngắc nên phải reemerge. Tất cả các extension trong X đều được tắt để bảo đảm không còn sự cố.

Rốt cuộc cũng khởi động được X, phù..

UPDATE: Cái tội ngu không chịu đọc hướng dẫn. :(


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 05 Tháng một năm 2005 14:28:30 JST

Gõ ký tự Unicode đặc biệt

Từ trang Unicode - Wikipedia, the free encyclopedia: với GNOME, dùng Ctrl + Shift + mã hex để gõ unicode.

Lưu ý: Cách này chỉ áp dụng với Input Method Default


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ bảy, 05 Tháng một năm 2005 11:25:44 JST

Locale tiếng Việt

Đây là locale tiếng Việt được thông dịch lại cho dễ đọc:

escape_char /
comment_char %
%
% Vietnamese language locale for Vietnam
% Source: glibc locale and info from vietnamese native speakers
% Address:
% Contact: Pablo Saratxaga
% Email: pablo@mandrakesoft.com
% Tel:
% Fax:
% Language: vi
% Territory: VN
% Revision: 1.1
% Date: 2004-01-09
% Users: general
% Repertoiremap:
% Charset: UTF-8
% Distribution and use is free, also
% for commercial purposes.

LC_IDENTIFICATION
title      "Vietnamese language locale for Vietnam"
source     "glibc locale and info from vietnamese native speakers"
address    ""
contact    "Pablo Saratxaga"
email      "pablo@mandrakesoft.com"
tel        ""
fax        ""
language   "Vietnamese"
territory  "Vietnam"
revision   "1.1"
date       "2004-01-09"
%
category  "vi_VN:2000";LC_IDENTIFICATION
category  "vi_VN:2000";LC_CTYPE
category  "vi_VN:2000";LC_COLLATE
category  "vi_VN:2000";LC_TIME
category  "vi_VN:2000";LC_NUMERIC
category  "vi_VN:2000";LC_MONETARY
category  "vi_VN:2000";LC_MESSAGES
category  "vi_VN:2000";LC_PAPER
category  "vi_VN:2000";LC_NAME
category  "vi_VN:2000";LC_ADDRESS
category  "vi_VN:2000";LC_TELEPHONE
category  "vi_VN:2000";LC_MEASUREMENT

END LC_IDENTIFICATION

LC_CTYPE
copy "i18n"
translit_start

% dong sign -> d// -> dd
₫ "đ";"dd"

translit_end
END LC_CTYPE

LC_COLLATE
% Copy the template from ISO/IEC 14651
copy "iso14651_t1"

% A( A^ E^ O+ U+ DD are treatead as base letters
% ordering of accents is: grave, hook, tilde, acute, dot below
% a a( a> b c d d/ e e> f g h i j k l m n o o+ p q r s t u u+ v w x y z

collating-symbol <a(>
collating-symbol <a/>>
collating-symbol <d//>
collating-symbol <e/>>
collating-symbol <o/>>
collating-symbol <o9>
collating-symbol <u9>

collating-symbol <HOK>

reorder-after <BAS>
<GRA>
<HOK>
<TIL>
<ACA>
<PCT>

reorder-after <a>
<a(>
<a/>>
reorder-after <d>
<d//>
reorder-after <e>
<e/>>
reorder-after <o>
<o/>>
<o9>
reorder-after <u>
<u9>

reorder-after a
ả <a>;<HOK>;<MIN>;IGNORE
ạ <a>;<PCT>;<MIN>;IGNORE
ă <a(>;<BAS>;<MIN>;IGNORE
ằ <a(>;<GRA>;<MIN>;IGNORE
ẳ <a(>;<HOK>;<MIN>;IGNORE
ẵ <a(>;<TIL>;<MIN>;IGNORE
ắ <a(>;<ACA>;<MIN>;IGNORE
ặ <a(>;<PCT>;<MIN>;IGNORE
â <a/>>;<BAS>;<MIN>;IGNORE
ầ <a/>>;<GRA>;<MIN>;IGNORE
ẩ <a/>>;<HOK>;<MIN>;IGNORE
ẫ <a/>>;<TIL>;<MIN>;IGNORE
ấ <a/>>;<ACA>;<MIN>;IGNORE
ậ <a/>>;<PCT>;<MIN>;IGNORE
reorder-after A
Ả <a>;<HOK>;<CAP>;IGNORE
Ạ <a>;<PCT>;<CAP>;IGNORE
Ă <a(>;<BAS>;<CAP>;IGNORE
Ằ <a(>;<GRA>;<CAP>;IGNORE
Ẳ <a(>;<HOK>;<CAP>;IGNORE
Ẵ <a(>;<TIL>;<CAP>;IGNORE
Ắ <a(>;<ACA>;<CAP>;IGNORE
Ặ <a(>;<PCT>;<CAP>;IGNORE
 <a/>>;<BAS>;<CAP>;IGNORE
Ầ <a/>>;<GRA>;<CAP>;IGNORE
Ẩ <a/>>;<HOK>;<CAP>;IGNORE
Ẫ <a/>>;<TIL>;<CAP>;IGNORE
Ấ <a/>>;<ACA>;<CAP>;IGNORE
Ậ <a/>>;<PCT>;<CAP>;IGNORE

reorder-after d
đ <d//>;<BAS>;<MIN>;IGNORE
ð <d//>;<PCL>;<MIN>;IGNORE
reorder-after D
Đ <d//>;<BAS>;<CAP>;IGNORE
Ð <d//>;<PCL>;<CAP>;IGNORE

reorder-after e
ẻ <e>;<HOK>;<MIN>;IGNORE
ẽ <e>;<TIL>;<MIN>;IGNORE
ẹ <e>;<PCT>;<MIN>;IGNORE
ê <e/>>;<BAS>;<MIN>;IGNORE
ề <e/>>;<GRA>;<MIN>;IGNORE
ể <e/>>;<HOK>;<MIN>;IGNORE
ễ <e/>>;<TIL>;<MIN>;IGNORE
ế <e/>>;<ACA>;<MIN>;IGNORE
ệ <e/>>;<PCT>;<MIN>;IGNORE
reorder-after E
Ẻ <e>;<HOK>;<CAP>;IGNORE
Ẽ <e>;<TIL>;<CAP>;IGNORE
Ẹ <e>;<PCT>;<CAP>;IGNORE
Ê <e/>>;<BAS>;<CAP>;IGNORE
Ề <e/>>;<GRA>;<CAP>;IGNORE
Ể <e/>>;<HOK>;<CAP>;IGNORE
Ễ <e/>>;<TIL>;<CAP>;IGNORE
Ế <e/>>;<ACA>;<CAP>;IGNORE
Ệ <e/>>;<PCT>;<CAP>;IGNORE

reorder-after i
ỉ <i>;<HOK>;<MIN>;IGNORE
ị <i>;<PCT>;<MIN>;IGNORE
reorder-after I
Ỉ <i>;<HOK>;<CAP>;IGNORE
Ị <i>;<PCT>;<CAP>;IGNORE

reorder-after o
ỏ <o>;<HOK>;<MIN>;IGNORE
ọ <o>;<PCT>;<MIN>;IGNORE
ô <o/>>;<BAS>;<MIN>;IGNORE
ồ <o/>>;<GRA>;<MIN>;IGNORE
ổ <o/>>;<HOK>;<MIN>;IGNORE
ỗ <o/>>;<TIL>;<MIN>;IGNORE
ố <o/>>;<ACA>;<MIN>;IGNORE
ộ <o/>>;<PCT>;<MIN>;IGNORE
ơ <o9>;<BAS>;<MIN>;IGNORE
ờ <o9>;<GRA>;<MIN>;IGNORE
ở <o9>;<HOK>;<MIN>;IGNORE
ỡ <o9>;<TIL>;<MIN>;IGNORE
ớ <o9>;<ACA>;<MIN>;IGNORE
ợ <o9>;<PCT>;<MIN>;IGNORE
reorder-after O
Ỏ <o>;<HOK>;<CAP>;IGNORE
Ọ <o>;<PCT>;<CAP>;IGNORE
Ô <o/>>;<BAS>;<CAP>;IGNORE
Ồ <o/>>;<GRA>;<CAP>;IGNORE
Ổ <o/>>;<HOK>;<CAP>;IGNORE
Ỗ <o/>>;<TIL>;<CAP>;IGNORE
Ố <o/>>;<ACA>;<CAP>;IGNORE
Ộ <o/>>;<PCT>;<CAP>;IGNORE
Ơ <o9>;<BAS>;<CAP>;IGNORE
Ờ <o9>;<GRA>;<CAP>;IGNORE
Ở <o9>;<HOK>;<CAP>;IGNORE
Ỡ <o9>;<TIL>;<CAP>;IGNORE
Ớ <o9>;<ACA>;<CAP>;IGNORE
Ợ <o9>;<PCT>;<CAP>;IGNORE

reorder-after u
ủ <u>;<HOK>;<MIN>;IGNORE
ụ <u>;<PCT>;<MIN>;IGNORE
ư <u9>;<BAS>;<MIN>;IGNORE
ừ <u9>;<GRA>;<MIN>;IGNORE
ử <u9>;<HOK>;<MIN>;IGNORE
ữ <u9>;<TIL>;<MIN>;IGNORE
ứ <u9>;<ACA>;<MIN>;IGNORE
ự <u9>;<PCT>;<MIN>;IGNORE
reorder-after U
Ủ <u>;<HOK>;<CAP>;IGNORE
Ụ <u>;<PCT>;<CAP>;IGNORE
Ư <u9>;<BAS>;<CAP>;IGNORE
Ừ <u9>;<GRA>;<CAP>;IGNORE
Ử <u9>;<HOK>;<CAP>;IGNORE
Ữ <u9>;<TIL>;<CAP>;IGNORE
Ứ <u9>;<ACA>;<CAP>;IGNORE
Ự <u9>;<PCT>;<CAP>;IGNORE

reorder-after y
ỳ <y>;<GRA>;<MIN>;IGNORE
ỷ <y>;<HOK>;<MIN>;IGNORE
ỹ <y>;<TIL>;<MIN>;IGNORE
ỵ <y>;<PCT>;<MIN>;IGNORE
reorder-after Y
Ỳ <y>;<GRA>;<CAP>;IGNORE
Ỷ <y>;<HOK>;<CAP>;IGNORE
Ỹ <y>;<TIL>;<CAP>;IGNORE
Ỵ <y>;<PCT>;<CAP>;IGNORE

reorder-end

END LC_COLLATE

LC_MONETARY
int_curr_symbol       "VND "
currency_symbol       "₫"
mon_decimal_point     ","
mon_thousands_sep     "."
mon_grouping          3;3
positive_sign         ""
negative_sign         "-"
int_frac_digits       4
frac_digits           4
p_cs_precedes         0
p_sep_by_space        0
n_cs_precedes         1
n_sep_by_space        0
p_sign_posn           1
n_sign_posn           1
END LC_MONETARY

LC_NUMERIC
decimal_point        ","
thousands_sep        "."
grouping             3;3
END LC_NUMERIC

LC_TIME
abday    "CN";/
         "T2";/
         "T3";/
         "T4";/
         "T5";/
         "T6";/
         "T7"
day      "Chủ nhật";/
         "Thứ hai";/
         "Thứ ba";/
         "Thứ tư";/
         "Thứ năm";/
         "Thứ sáu";/
         "Thứ bảy"
abmon    "Th1";/
         "Th2";/
         "Th3";/
         "Th4";/
         "Th5";/
         "Th6";/
         "Th7";/
         "Th8";/
         "Th9";/
         "Th10";/
         "Th11";/
         "Th12"
mon      "Tháng giêng";/
         "Tháng hai";/
         "Tháng ba";/
         "Tháng tư";/
         "Tháng năm";/
         "Tháng sáu";/
         "Tháng bảy";/
         "Tháng tám";/
         "Tháng chín";/
         "Tháng mười";/
         "Tháng một";/
         "Tháng chạp"
d_t_fmt  "%A, %d %B năm %Y %T %Z"
d_fmt    "%d/%m/%Y"
t_fmt    "%T"
am_pm    "sáng";"chiều"
t_fmt_ampm  "%I:%M %p"
date_fmt  "%A, %d %B năm %Y %T %Z"
END LC_TIME

% yes: Va^ng / Da.
% no: Kho^ng
LC_MESSAGES
yesstr   "Có"
nostr    "Không"
yesexpr  "^[1yYcC].*"
noexpr   "^[0nNkK].*"
END LC_MESSAGES

LC_PAPER
height      297
width       210
END LC_PAPER

LC_NAME
% This is the ISO_IEC TR14652 Locale definition for the
% LC_NAME category.
%
name_fmt    "%p%t%f%t/
%g"
name_gen    ""
name_mr     "Ô."
name_mrs    "B."
name_miss   "C."
name_ms     ""

END LC_NAME


LC_ADDRESS
% This is the ISO_IEC TR14652 Locale definition for the
% LC_ADDRESS
postal_fmt  "%z%c%T%s/
%b%e%r"
country_name "Việt nam"
lang_name "Việt ngữ"

country_ab2 "VN"
country_ab3 "VNM"
country_num 704
END LC_ADDRESS


LC_TELEPHONE
% This is the ISO_IEC TR14652 Locale definition for the
%
tel_int_fmt "+%c ;%a /
;%l"
int_prefix  "84"
int_select  "00"

END LC_TELEPHONE

LC_MEASUREMENT
measurement 1
END LC_MEASUREMENT

Thảo luận về locale này trên VnOSS Forum


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ sáu, 04 Tháng một năm 2005 19:17:35 JST

Pango và "phông tổ hợp"

Bug 101079 (mở từ 2002) đang cố giải quyết chuyện phông tổ hợp (composed characters) không hiển thị đúng khi dùng Pango. Patch mới nhất (27-10-2005) có được cái screenshot sau:

\


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ sáu, 04 Tháng một năm 2005 08:20:44 JST

Planner có maintainer mới

Sau bài báo động của FootNotes, maintainer mới của Planner, Kurt Maute, đã lên tiếng. Planner lại sống!


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ sáu, 04 Tháng một năm 2005 00:38:26 JST

Portage bug #44796

Sùng cái bug 44796 quá, luộc luôn. Rõ ràng là Portage Developer có trình độ hơn hẳn, post cái patch khác nhìn gọn hơn, tính năng tốt hơn :)


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ năm, 03 Tháng một năm 2005 16:08:12 JST

screendump patch 2

Patch lại lần nữa, hỗ trợ utf-8, background color, buffer dump (dùng option -Hh thay vì -H).

  Left     File     Command     Options     Right
<~/Desktopv><~/Desktopv>
      Name       Size      MTime          Name       Size      MTime    
/..             UP--DIR             /..             UP--DIR             
~AOTS                18Th09 29 20:08~AOTS                18Th09 29 20:08
/Hình nh          4096Th10 21 20:37/Hình nh          4096Th10 21 20:37
/Ti v            8192Th11  3 10:57/Ti v            8192Th11  3 10:57
/tam               4096Th11  2 22:34/tam               4096Th11  2 22:34
/www.gui~ese.org   4096Th09 19 08:54/www.gui~ese.org   4096Th09 19 08:54
*Tc mi ~desktop    296Th05  5  2005*Tc mi ~desktop    296Th05  5  2005
*Tc mi ~desktop    314Th05  5  2005*Tc mi ~desktop    314Th05  5  2005
*Tc mi ~desktop    265Th07  2 11:10*Tc mi ~desktop    265Th07  2 11:10
*Tc mi ~desktop    263Th07  2 11:10*Tc mi ~desktop    263Th07  2 11:10
 aots-notes.txt   14061Th10 18 22:33 aots-notes.txt   14061Th10 18 22:33
 aots-notes.txt~  12917Th09 28 22:14 aots-notes.txt~  12917Th09 28 22:14
                                                                        
                                                                        
                                                                        

/www.guidetojapanese.org              /Hình nh                             

Hint: Leap to frequently used directories in a single bound with C-\.
pclouds@mg ~/Desktop $
1Help   2Menu   3View   4Edit   5Copy   6RenMov 7Mkdir  8Delete 9PullDn 10Quit
../include/synfigapp-0.0:
synfigapp

../include/synfigapp-0.0/synfigapp:
action.h                  layerparamconnect.h
action_param.h            layerparamdisconnect.h
action_system.h           layerparamset.h
activepointadd.h          layerraise.h
activepointremove.h       layerremove.h
activepointset.h          layersetdesc.h
activepointsetoff.h       main.h
activepointseton.h        selectionmanager.h
activepointsetsmart.h     settings.h
activepointsimpleadd.h    timegather.h
blineconvert.h            timepointscopy.h
blinepointtangentmerge.h  timepointsdelete.h
blinepointtangentsplit.h  timepointsmove.h
canvasadd.h               uimanager.h
canvasinterface.h         valuedescconnect.h
canvasremove.h            valuedescconvert.h
canvasrenddescset.h       valuedescdisconnect.h
colorset.h                valuedescexport.h
cvs.h                     value_desc.h
editmode.h                valuedesclink.h
editmodeset.h             valuedescset.h
gradientset.h             valuenodeadd.h
groupaddlayers.h          valuenodeconstset.h
groupremove.h             valuenodedynamiclistinsert.h
groupremovelayers.h       valuenodedynamiclistinsertsmart.h
grouprename.h             valuenodedynamiclistloop.h
inputdevice.h             valuenodedynamiclistremove.h
instance.h                valuenodedynamiclistremovesmart.h
keyframeadd.h             valuenodedynamiclistrotateorder.h
keyframeduplicate.h       valuenodedynamiclistunloop.h
keyframeremove.h          valuenodelinkconnect.h
keyframesetdelta.h        valuenodelinkdisconnect.h
keyframeset.h             valuenoderemove.h
keyframewaypointset.h     valuenoderename.h
layeractivate.h           valuenodereplace.h
layeradd.h                waypointadd.h
layerduplicate.h          waypointremove.h
layerencapsulate.h        waypointset.h
layerlower.h              waypointsetsmart.h
layermove.h               waypointsimpleadd.h

../info:
dir          screen.info-1  screen.info-3  screen.info-5
screen.info  screen.info-2  screen.info-4

../lib:
libsynfigapp.la    libsynfigapp.so.0.0.0  libsynfig.so.0      synfig
libsynfigapp.so    libsynfig.la           libsynfig.so.0.0.0
libsynfigapp.so.0  libsynfig.so           pkgconfig

../lib/pkgconfig:
ETL.pc  synfig.pc

../lib/synfig:
modules

../lib/synfig/modules:
liblyr_freetype.la        libmod_filter.so.0           libmod_noise.la
liblyr_freetype.so        libmod_filter.so.0.0.0       libmod_noise.so
liblyr_freetype.so.0      libmod_geometry.la           libmod_noise.so.0
liblyr_freetype.so.0.0.0  libmod_geometry.so           libmod_noise.so.0.0.0
liblyr_std.la             libmod_geometry.so.0         libmod_particle.la
liblyr_std.so             libmod_geometry.so.0.0.0     libmod_particle.so
liblyr_std.so.0           libmod_gif.la                libmod_particle.so.0
liblyr_std.so.0.0.0       libmod_gif.so                libmod_particle.so.0.0.0
libmod_bmp.la             libmod_gif.so.0              libmod_png.la
libmod_bmp.so             libmod_gif.so.0.0.0          libmod_png.so
libmod_bmp.so.0           libmod_gradient.la           libmod_png.so.0
libmod_bmp.so.0.0.0       libmod_gradient.so           libmod_png.so.0.0.0
libmod_dv.la              libmod_gradient.so.0         libmod_ppm.la
libmod_dv.so              libmod_gradient.so.0.0.0     libmod_ppm.so
libmod_dv.so.0            libmod_imagemagick.la        libmod_ppm.so.0
libmod_dv.so.0.0.0        libmod_imagemagick.so        libmod_ppm.so.0.0.0
libmod_ffmpeg.la          libmod_imagemagick.so.0      libmod_yuv420p.la
libmod_ffmpeg.so          libmod_imagemagick.so.0.0.0  libmod_yuv420p.so
libmod_ffmpeg.so.0        libmod_jpeg.la               libmod_yuv420p.so.0
libmod_ffmpeg.so.0.0.0    libmod_jpeg.so               libmod_yuv420p.so.0.0.0
libmod_filter.la          libmod_jpeg.so.0
libmod_filter.so          libmod_jpeg.so.0.0.0

../man:
man1

../man/man1:
screen.1

../share:
applications  mime-info  pixmaps  screen

../share/applications:
synfigstudio.desktop

../share/mime-info:
synfigstudio.keys  synfigstudio.mime

../share/pixmaps:
about_dialog.png         gradient_icon.png         real_icon.png
about_icon.png           group_icon.png            rectangle_icon.png
angle_icon.png           info_icon.png             rotate_icon.png
bline_icon.png           integer_icon.png          saveall_icon.png
blinepoint_icon.png      keyframe_icon.png         scale_icon.png
bool_icon.png            keyframe_lock_all.png     segment_icon.png
canvas_icon.png          keyframe_lock_future.png  sif_icon.png
canvas_pointer_icon.png  keyframe_lock_none.png    sketch_icon.png
children_icon.png        keyframe_lock_past.png    smooth_move_icon.png
circle_icon.png          layer_icon.png            string_icon.png
clear_redo_icon.png      list_icon.png             swap_colors_icon.png
clear_undo_icon.png      meta_data_icon.png        synfig_icon.png
color_icon.png           mirror_icon.png           time_track_icon.png
draw_icon.png            navigator_icon.png        valuenode_icon.png
duplicate_icon.png       normal_icon.png           vector_icon.png
eyedrop_icon.png         pastecanvas_icon.png      width_icon.png
fill_icon.png            polygon_icon.png          zoom_icon.png

../share/screen:
utf8encodings

../share/screen/utf8encodings:
01  02  03  04  18  19  a1  bf  c2  c3  c4  c6  c7  c8  cc  cd  d6
pclouds@mg ~/local/bin $

Patch:

diff -ur --exclude Makefile --exclude '*.o' screen-4.0.2/fileio.c screen-4.0.2.new/fileio.c
--- screen-4.0.2/fileio.c	2003-09-08 23:25:28.000000000 +0900
+++ screen-4.0.2.new/fileio.c	2005-11-03 15:57:38.000000000 +0900
@@ -342,6 +342,65 @@
 #endif
 }
 
+static void
+PrintHtml(FILE *f,struct mline *w_mlines,int j)
+{
+  if (((char *)w_mlines->attr)[j]
+#ifdef FONT
+      || ((char *)w_mlines->font)[j]
+#endif
+#ifdef COLOR
+      || ((char *)w_mlines->color)[j]
+#endif
+#ifdef COLORX
+      || ((char *)w_mlines->colorx)[j]
+#endif
+     )
+  {
+    fputs("<span class=\"",f);
+    if (((char *)w_mlines->attr)[j])
+      fprintf(f,"attr_%x",(int)((unsigned char *)w_mlines->attr)[j]);
+#ifdef font
+    if (((char *)w_mlines->font)[j])
+      fprintf(f," font_%x",(int)((unsigned char *)w_mlines->font)[j]);
+#endif
+#ifdef COLOR
+    if (((char *)w_mlines->color)[j] & 0x0f)
+      fprintf(f," color_%x",(int)((unsigned char *)w_mlines->color)[j] & 0x0f);
+    if (((char *)w_mlines->color)[j] & 0xf0)
+      fprintf(f," hicolor_%x",(int)((((unsigned char *)w_mlines->color)[j]) & 0xf0) >> 4);
+#endif
+#ifdef COLORX
+    if (((char *)w_mlines->colorx)[j])
+      fprintf(f," colorx_%x",(int)((unsigned char *)w_mlines->colorx)[j]);
+#endif
+    fputs("\">",f);
+  }
+#ifdef UTF8
+  if (fore->w_encoding == UTF8)
+  {
+    fprintf(f,"&#%d;",((int)((unsigned char *)w_mlines->image)[j] | (int)(unsigned char)((char *)w_mlines->font)[j] << 8));
+    fprintf(f,"<!-- %02x%02x -->",(int)(unsigned char)((char *)w_mlines->font)[j],(int)((unsigned char *)w_mlines->image)[j]);
+  }
+#else
+  fprintf(f,"&#%d;",(int)(unsigned char)p[j]);
+#endif
+  if (((char *)w_mlines->attr)[j]
+#ifdef FONT
+      || ((char *)w_mlines->font)[j]
+#endif
+#ifdef COLOR
+      || ((char *)w_mlines->color)[j]
+#endif
+#ifdef COLORX
+      || ((char *)w_mlines->colorx)[j]
+#endif
+     )
+  {
+    fputs("</span>",f);
+  }
+}
+
 /*
  * needs display for copybuffer access and termcap dumping
  */
@@ -467,6 +526,41 @@
 	{
 	  switch (dump)
 	    {
+	    case DUMP_HTML:
+	    case DUMP_HTML_SCROLLBACK:
+	      if (!fore)
+		break;
+	      if (*mode == 'a')
+		{
+		  putc('>', f);
+		  for (j = fore->w_width - 2; j > 0; j--)
+		    putc('=', f);
+		  fputs("<\n", f);
+		}
+	      fputs("<pre class=\"screendump\">",f);
+	      if (dump == DUMP_HTML_SCROLLBACK)
+		{
+		  for (i = 0; i < fore->w_histheight; i++)
+		    {
+		      p = (char *)(WIN(i)->image);
+		      for (k = fore->w_width - 1; k >= 0 && p[k] == ' '; k--)
+			;
+		      for (j = 0; j <= k; j++)
+			PrintHtml(f,WIN(i),j);
+		      fprintf(f,"\n");
+		    }
+		}
+	      for (i = 0; i < fore->w_height; i++)
+		{
+		  p = (char *)fore->w_mlines[i].image;
+		  for (k = fore->w_width - 1; k >= 0 && p[k] == ' '; k--)
+		    ;
+		  for (j = 0; j <= k; j++)
+		    PrintHtml(f,&fore->w_mlines[i],j);
+		  fprintf(f,"\n");
+		}
+	      fputs("</pre>",f);
+	      break;
 	    case DUMP_HARDCOPY:
 	    case DUMP_SCROLLBACK:
 	      if (!fore)
diff -ur --exclude Makefile --exclude '*.o' screen-4.0.2/process.c screen-4.0.2.new/process.c
--- screen-4.0.2/process.c	2003-09-18 21:53:54.000000000 +0900
+++ screen-4.0.2.new/process.c	2005-11-03 16:02:03.000000000 +0900
@@ -1135,6 +1135,18 @@
 	    args++;
 	    argc--;
 	  }
+	if (argc > 1 && !strcmp(*args, "-H"))
+	  {
+	    mode = DUMP_HTML;
+	    args++;
+	    argc--;
+	  }
+	if (argc > 1 && !strcmp(*args, "-Hh"))
+	  {
+	    mode = DUMP_HTML_SCROLLBACK;
+	    args++;
+	    argc--;
+	  }
 	if (*args && args[1])
 	  {
 	    Msg(0, "%s: hardcopy: too many arguments", rc_name);
diff -ur --exclude Makefile --exclude '*.o' screen-4.0.2/screen.h screen-4.0.2.new/screen.h
--- screen-4.0.2/screen.h	2003-08-22 21:28:43.000000000 +0900
+++ screen-4.0.2.new/screen.h	2005-11-03 14:24:14.000000000 +0900
@@ -255,6 +255,8 @@
 #define DUMP_HARDCOPY	1
 #define DUMP_EXCHANGE	2
 #define DUMP_SCROLLBACK 3
+#define DUMP_HTML 	4
+#define DUMP_HTML_SCROLLBACK 5
 
 #define SILENCE_OFF	0
 #define SILENCE_ON	1


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ năm, 03 Tháng một năm 2005 00:50:44 JST

Phần mềm biên tập hoạt cảnh - Synfig

Theo quảng cáo, thử Synfig, phần mềm dùng để tạo animation. Nhìn cũng đẹp, nhưng hổng biết xài :D


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh

Thứ ba, 01 Tháng một năm 2005 19:36:15 JST

Chụp hình terminal với <i>script</i>

Nhờ bác skz0 trên Diễn đàn VNOSS nên tìm ra script. script có thể dùng để record lại toàn bộ output của console và sau đó replay lại bằng scriptreplay.pl. Để xem kết quả của script, chỉ cần cat nội dung tập tin do script tạo ra là xong. Tuy nhiên không tìm thấy chương trình để chuyển output của script thành html. Để làm việc này, hổng chừng phải viết nguyên cái terminal hoặc móc code của terminal khác (như screen, xterm ...) :(

Bởi vậy, cách tốt nhất là tiếp tục patch screen :)

BTW, khỏi tìm đâu xa. script đã nằm sẵn trên máy rồi, gói util-linux.


Cập nhật 2 lần. Lần cuối: Tue Aug 08 11:22:15+0011 2017

Tác giả: pclouds | Liên kết tĩnh