Lao động khổ sai

Vì đại đa số các đ/c thợ dạy đều bận bịu nên chả mấy người gửi cho chúng em cái lờ lờ ca hát (lí lịch khoa học) theo đúng mẫu mà chúng em đã mất cả nửa tháng ngâm cứu. Cực chẳng đã, em đành nhắm mắt chép lại bản cũ rích từ năm 2006. Tất nhiên là thông tin thiếu toe toét rồi. Nhưng thôi, méo mó có hơn không.

Continue reading “Lao động khổ sai”

Sắp xếp danh sách trong tiếng Việt bằng PHP

Thú thực với các bác là cả đời mình, em chưa bao giờ nghiên cứu một thuật toán nào về sắp xếp cả (vì một thằng khối C như em thì chỉ nghe đến “thuật toán” là đã hãi rồi). Bình thường thì, khi có nhu cầu sắp xếp, em dùng sort. Cứ echo input | sort > output, thế là xong! Nhưng giờ thì phải dùng PHP. Thực ra thì cũng có thể dùng tham số SORT_LOCALE_STRING, nhưng có phải máy chủ nào cũng có phần locale tiếng Việt ngon lành đâu.

Continue reading “Sắp xếp danh sách trong tiếng Việt bằng PHP”

Siêu trâu bò lợn gà

Về lí thuyết, tiếng Việt có bao nhiêu âm tiết ở dạng chữ viết? Câu hỏi vớ vẩn này thỉnh thoảng lại làm lắm kẻ động lòng… Bây giờ kết hợp tất cả các “âm vị” ở dạng chữ viết, cho vào một danh sách. Sau đó tách danh sách to đó ra thành các danh sách nhỏ theo 4 mô hình vần. Từ đó ngồi nghĩ ra các luật để “trừ khử” dần các âm tiết không thể tồn tại.

Continue reading “Siêu trâu bò lợn gà”

Em fix my brain

Trong khi mọi người vui vẻ về quê hoặc đi du lịch thì em phải ngồi nhà cố nuốt chửng mớ lí thuyết ngôn ngữ học chán chết. Cứ tưởng là dễ ăn, hoá ra toàn những bài học thuộc lòng, mà em thì xưa nay có trí nhớ cực tồi. Làm gì em cũng phải tra tra cứu cứu.

Dù sao thì cũng phải cố mà thi cho xong. Em cũng biết vậy, cũng thử cố mà nhai mà nuốt. Nhưng quả thực là em thấy ngán quá chừng. Ngán đến mức em lại phải thả trâu bò ra cho thay đổi không khí…

Vẫn là vấn đề cũ rích: “i ngắn, y dài” 😛

#! /bin/sh
# Em fix 'i/y problem'

filename="$1"

voY=(y ỳ Ỳ ỷ Ỷ ỹ Ỹ ý Ý ỵ Ỵ)
voI=(i ì Ì ỉ Ỉ ĩ Ĩ í Í ị Ị)

# To prevent from converting un-wanted words, such as
# non-Vietnamese words, XML tags, email addresses,...
# set start=1 instead.
start=0

for j in `seq $start 10`; do
        Y=${voY[$j]}
        I=${voI[$j]}
        sed -r "s/(\b[hklmtsv])$Y(\b)/\1$I\2/ig" -i "$filename"
        sed -r "s/(\bqu)$I(ch|t|nh|p|t|u|\b)/\1$Y\2/ig" -i "$filename"
done

Amarok và Yahoo! 360° Blast

#! /bin/sh

until [ 0 = 1 ]
do
	status=$(dcop amarok player nowPlaying)
	yahoo-360-blast.sh "$status"
	sleep 120
done

Thấy có mấy thằng dùng giá trị trackChange nhưng không hiểu lắm về cách lấy giá trị này. Với lại nếu dùng cách đó thì cái dcopserver chạy ầm ầm trông mà hãi. Thôi thì chuyển sang dùng sleep cho nó dân dã 😛 .

yahoo-360-blast.sh là cái gì thì hỏi lão Bi 😉 .