Kho tháng 11/2006

Thứ ba, 28 Tháng một năm 2006 19:44:10 ICT

Tĩnh tâm, tắt thở

Luyện thế hệ F1 mất hai tiếng (chỉ tính vnexpress đến 2003, 2.5M câu). Gần hết 2 tiếng là dành cho sc-train. Thêm mười phút để sort (có 37M dòng à) và chạy sc2wngram. Cần dành ít nhất 1GB trống để cúng cho sort. sc-train chạm ngưỡng float, chuyển qua dùng kiểu double (hi vọng không cần phải chuyển qua long double). Kết quả LM 27K unigram và 2.5M bigram, tốn 62MB.

Cứ đà này luyện đến F5 mất nửa ngày, thử nghiệm vài chục lần thì cháy CPU, thay đĩa cứng mới. Dự đoán ngram chuẩn bị cho lần phát hành đầu tiên sẽ tốn ít nhất một ngày tròn (để xem đúng không). Viết lại sc-train thôi :D

So với kết quả lần trước thì rõ ràng kích thước ngữ liệu có tác động nhất định. Lần trước đường màu đỏ ổn định ở mức gần 0.6. Lần này đường đỏ ở mức gần 0.7 -- tăng gần 10%.

Đường xanh vượt mức 1.0 là vì tính trùng các trường hợp bắt đúng (bắt đúng cả ở mức tiếng và từ). Vẫn không hiểu tại sao strict word checking lại có thể nâng kết quả lên đến 20%. Quái đản.

TB. Donald Knuth có lẽ nói đúng. "Premature optimization is the root of all evil". Dùng sysprof kiểm tra thử. Kết quả cho thấy mình hoàn toàn sai trong việc dự đoán đâu là nơi tốn nhiều thời gian xử lý nhất. Phần tính toán tốn không đáng kể (kể cả hàm exp10). Thời gian sử dụng nhiều nhất được dùng để đọc lattice và xây dựng DAG. Loại bỏ phần này có thể giảm thời gian huấn luyện F1 từ hai tiếng xuống còn nửa giờ, trong đó sc-train chiếm mười lăm phút. Chấp nhận được (hi sinh thêm 300MB nữa).

TB2. Chắc lại phải thêm hỗ trợ gnuplot cho Cùi Bắp nữa quá :D

TB3. Tin nóng hổi vừa thổi vừa phun. Táck token (tokenize-test) cho 7.7M câu (VnExpress trọn bộ, khoảng 2/3 kho) tốn ... 7 giờ! Dự đoán lattice-test mất thêm 7 giờ nữa. sc-train --record mất 10-12 giờ. train mất cỡ một giờ mỗi lần luyện, luyện 5 lần cỡ 5 giờ nữa. Tổng cộng ... vài ngày :D

TB4. Sửa lỗi rò rỉ bộ nhớ (nhằm đúng ngay hash table mà rò), nguyên nhân làm chương trình càng ngày chạy càng chậm. Sau đó thì wngram2idngram tràn số. Sửa wngram2idngram chuyển từ int sang long long int cũng đồng nghĩa với sửa lại định dạng file idngram, đổi hàm get_ngram()... Mình cứ đâm đầu vào tường để làm cái gì nhỉ?


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

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

Thứ hai, 27 Tháng một năm 2006 18:15:23 ICT

The party is over

I lost you in the morning when the snow fell in our world.
I lost you in the cold between these shades of our illusions.
Within this kiss -- this kiss goodbye.
For I will never forget your face behind the window of this parting train.

I asked the moon to bring you back into my arms.
I called the wind to guide your way.
I begged the earth to hold you tight, keep you from harm.
I sent you kisses in my dreams.

For I know

We had our time

I close the door

The party is over...


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 | Nhạc

Chủ nhật, 26 Tháng một năm 2006 21:19:17 ICT

Một phút bon chen

:file:banner.svg     :file:banner.svg     :file:banner.svg

Thông tin giấy phép có trong SVG.


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 | OSS

Chủ nhật, 26 Tháng một năm 2006 19:26:44 ICT

Tổng kết kho chữ

Đợt phát động phong trào coi như chấm dứt sau khi thu hồi 3 năm tin tức của VnExpress từ 2004 đến nay. Thông tin chi tiết xem ở liên kết trên. Dĩ nhiên, ai có nhu cầu sử dụng và không ngại chuyện bản quyền linh tinh, có thể liên hệ để lấy.

Xin chân thành cám ơn những người sau (không sắp thứ tự):

  • Nguyễn Đại Quý (vnpenguin)
  • Nguyễn Duy Thọ (ntdt)
  • Lê Ngọc Hiếu (mybb)
  • Nguyễn Thành Luân (lihavim)

TB. Khi xưa ít thì đói, than. Nay nhiều thì ứ, ói cả ra. CMU SLM toolkit dường như không tiêu hoá nổi mớ chữ này dù đã điều chỉnh để nó dùng long long int thay vì int :(


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 | Tiếng Việt, vspell

Thứ sáu, 24 Tháng một năm 2006 11:37:06 ICT

Hiệu Hạnh phúc các bà

Tưởng đâu truyện mới. Đọc đến phần giới thiệu, đề cập tên nhân vật chính mới nhận ra truyện này đọc rồi.

Danh sách những truyện từng đọc (quyết tâm không bỏ sót):

  • Hiệu Hạnh phúc các bà (Au Bonheur des Dames) của Émile Zola
  • Chuông nguyện hồn ai (For Whom the Bell Tolls) của Ernest Hemingway
  • Ông già và biển cả (The Old Man and the Sea) của Ernest Hemingway
  • Giã từ tuổi thơ của Nguyễn Minh Châu
  • Đi tìm ngọc của Trần Thanh Giao
  • Rừng già và tuổi phiêu lưu của Văn Linh
  • Cửa ngõ miền Tây của Thu Bồn
  • Hảo hán nơi trảng cát (Capitães da Areia) của Jorge Amado
  • Tereda (Teresa Batista Cansada da Guerra??) của Jorge Amado
  • Ca cao của Jorge Amado
  • Ngôi nhà của những hồn ma (La casa de los espíritus hoặc The House of the Spirits) của Isabel Allende
  • Đoạt lửa (La Guerre du feu hoặc Quest of Fire) của J.H. Rosny
  • Đảo châu báu của Jules Verne
  • Hòn đảo huyền bí (The Mysterious Island) của Jules Verne +1
  • Hai vạn dặm dưới đáy biển, Vòng quanh mặt trăng, Vòng quanh thế giới trong 80 ngày cũng của Jules Verne
  • Chú bé thoát nạn đắm tàu hình như cũng của Jules Verne
  • Hội chợ phù hoa (Vanity fair) của William Makepeace Thackeray
  • Những con chim ẩn mình chờ chết (The Thorn Birds) của Colleen McCullough
  • Trà hoa nữ (La dame aux camélias hay The Lady of the Camellias) của Alexandre Dumas con
  • Hán Sở tranh hùng
  • Chúa tể thế giới (The Lord of the World/Властелин мира) của Alexander Belyayev/Алекса́ндр Беля́ев
  • Vâng.. Các vị thần vui đùa của Dennis London
  • Một số truyện của A.J. Cronin và Sidney Sheldon nữa thì phải
  • Yêu muộn (hi vọng là Pavilion of Women) của Pearl S. Buck
  • Con nhân mã trong vườn (“The Centaur in the Garden”) của Moacyr Scliar
  • Người tình tuyệt vời (“No Greater Love”?) của Frank G. Slaughter
  • Một số truyện (không kế hết) của Nguyễn Nhật Ánh
  • Vĩnh biệt mùa hè của Nguyễn Đông Thức
  • Thế giới đã mất (The Lost World của Arthur Conan Doyle +1
  • Con cái chúng ta giỏi thậtNhững người thích đùa của Aziz Nesin
  • Harry Potter and the Philosoper’s stone của J.K. Rowling +4
  • Harry Potter and the Chamber of Secrets của J.K. Rowling +5
  • Harry Potter and the Prisoner of Azkaban của J.K. Rowling +4
  • Harry Potter and the Globet of Fire của J.K. Rowling +3
  • Harry Potter and the Order of the Phoenix của J.K. Rowling +3
  • Harry Potter and the Half-Blood Prince của J.K. Rowling +3
  • Harry Potter and the Deathly Hallows của J.K. Rowling +3
  • Câu chuyện tình yêu (Love Story) của Erich Segal
  • Gió bụi Sài Gòn của Bùi Cát Vũ
  • Dũng Sài Gòn của Nguyễn Trí Công
  • Găng-xtơ —- Đặc sản Hoa Kỳ (The Last Testament of Lucky Luciano)? của Martin Gosch và Richard Hammer
  • Frankenstein của Mary Shelley
  • Bến bờ xa lạ của ai? (truyện kể về nhà thám hiểm Miklukho-Maklai)
  • Thuỷ Hử của Thi Nại Am
  • Bản di chúc cỏ lau của Hoàng Phủ Ngọc Tường
  • Chim hót trong lồng của Nhật Tiến
  • Cuộc đời của Pi của Yann Martel +1
  • Đônha Bácbara (Doña Bárbara) của Rómulo Gallegos
  • Bá tước Dracula của Bram Stoker
  • Tuyển tập truyện cười Hoàng Thiếu Phủ
  • Truyện ngắn Nam Cao
  • Solaris của Stanislav Lem
  • Tình yêu cuộc sống - Tác phẩm chọn lọc của Jack London
  • Alexis Zorba, con người hoan lạc (Zorba the Greek) của Nikos Kazantzakis
  • Thần thoại Hy Lạp của Nguyễn Văn Khoả
  • Suối nguồn (The Fountainhead) của Ayn Rand.
  • Tu La Đạo của Bộ Phi Yên.
  • Tình nhân của Janusz L.Wisniewski.
  • Đo thế giới (Measuring the World) của Daniel Kehlmann.
  • Đường xưa mây trắng của Thích Nhất Hạnh.
  • Tuyết của Maxence Fermine.
  • Quần Jeans may mắn (The Sisterhood of the Traveling Pants) của Ann Brashares.
  • Thiếu nữ đánh cờ vây của Sơn Táp.
  • Lụa của Alessandro Baricco.
  • Người tình Sputnik của Haruki Murakami
  • Lược sử cái chết của Kevin Brockmeier
  • Tên tôi là Đỏ của Orhan Pamuk
  • The Hitchhiker’s Guide to the Galaxy +3
  • The Restaurant at the End of the Universe +2
  • Life, the Universe and Everything +1
  • So Long, and Thanks for All the Fish
  • Say ngủ (Asleep) của Banana Yoshimoto
  • Thằn Lằn của Banana Yoshimoto
  • Wagner the Werewolf của George W. M.Reynolds
  • Đèn không hắt bóng của Junichi Wantanabe
  • Axit Sunfuric của Amélie Nothomb
  • Người đưa tin (“The Messenger”) của Daniel Silva
  • Tobie Lolness Ngàn cân treo sợi tóc của Timothée De Fombelle
  • Kitchen của Banana Yoshimoto
  • Xin lỗi em chỉ là con đĩ của Tào Đình
  • Cánh đồng bất tận của Nguyễn Ngọc Tư
  • Xứ cát (Dune) của Frank Herbert +3
  • Đất rừng phương Nam của Đoàn Giỏi
  • Yêu người ngóng núi của Nguyễn Ngọc Tư
  • Mostly harmless của, dĩ nhiên, Douglas Adams
  • Foundation của Issac Asimov +2
  • Starship Troopers của Robert A. Heinlein +5
  • Childhood’s End của Arthur C. Clarke
  • Neuromancer của William Gibson +1
  • Paladin of Souls của Lois McMaster Bujold
  • Tobie Lolness Đôi mắt Elisha của Timothée De Fombelle
  • Rendezvous with Rama của Arthur C. Clarke
  • Dune Messiah của Frank Herbert
  • Fallen Dragon của Peter F. Hamilton
  • I am Legend của Richard Matheson +1
  • The Girl with the Dragon Tattoo của Stieg Larsson
  • The Lord of the Rings của J. R. R. Tolkien
  • Anne tóc đỏ dưới chái nhà xanh của L. M. Montgomery
  • Children of Dune của Frank Herbert
  • Nightfall của Isaac AsimovRobert Silverberg
  • Foundation and Empire của Isaac Asimov +1
  • Second Foundation của Isaac Asimov +1
  • Rừng Na Uy của Haruki Murakami
  • The Graveyard Book của Neil Gailman
  • Stranger in a Strange Land của Robert A. Heinlein
  • Ngày mai cho những ngày mai của Nguyễn Ngọc Tư
  • Foundation’s Edge của Issac Asimov
  • Tình yêu chân chính của Danny Scheinmann
  • Cuộc đời chín ngày của Thierry Cohen
  • Foundation and Earth của Isaac Asimov
  • Water for Elephants của Sara Gruen
  • The White Tiger của Aravind Adiga
  • A Clockwork Orange của Anthony Burgess
  • Đại Gia Gatsby của F. Scott. Fitzergald
  • Nỗi cô đơn của các số nguyên tố của Paolo Giordano
  • Dragon Haven của Robin Hobb
  • Forward the Foundation của Issac Asimov
  • 2001: A Space Odyssey của Arthur C. Clarke
  • Do Androids Dream Of Electric Sheep? của Philip K. Dick
  • The Sirens of Titan của Kurt Vonnegut
  • Beyond Black của Hilary Mantel
  • Snow Crash của Neal Stephenson
  • Cat’s Cradle của Kurt Vonnegut
  • The Time Machine của H. G. Wells
  • The Forever War của Joe Haldeman
  • Ender's Game của Orson Scott Card +2
  • Pandora’s Star của Peter F. Hamilton
  • The Moon is a Harsh Mistress của Robert A. Heinlein
  • Fahrenheit 451 của Ray Bradbury
  • Ringworld của Larry Niven
  • The Hobbit của J.R.R. Tolkien
  • 1984 của George Orwell
  • Trăm năm cô đơn của Gabriel García Márquez
  • The Cat Who Walks through Walls của Robert A. Heinlein
  • Caves of Steel của Isaac Asimov
  • The Color of Magic của Terry Pratchett
  • The Mote in God’s Eye của Larry Niven
  • American Gods của Neil Gailman
  • Slaughterhouse-Five của Kurt Vonnegut
  • Speaker for the Dead của Orson Scott Card
  • Gateway của Frederik Pohl
  • Stardust của Neil Gailman
  • Dealing with Dragons của Patricia C. Wrede +1
  • Calling on Dragons của Patricia C. Wrede +1
  • Talking to Dragons của Patricia C. Wrede +1
  • Searching for Dragons của Patricia C. Wrede +1
  • The Fountains of Paradise của Arthur C. Clarke
  • I, Robot của Isaac Asimov
  • Guards! Guards! của Terry Pratchett +6
  • Men at Arms của Terry Pratchett +6
  • Mort của Terry Pratchett
  • Small Gods của Terry Pratchett
  • A Game of Thrones của George R. R. Martin
  • The Snow Queen của Joan D. Vinge
  • Going Postal của Terry Pratchett +4
  • Shades of Grey của Jasper Fforde
  • Reaper Man của Terry Pratchett
  • Soul Music của Terry Pratchett
  • Night Watch của Terry Pratchett +3
  • Brave New World của Aldous Huxley
  • Thud của Terry Pratchett +4
  • Hogfather của Terry Pratchett +1
  • Wyrd Sisters của Terry Pratchett
  • Breakfast of Champions của Kurt Vonnegut
  • The Martian Chronicles của Ray Bradbury
  • Good Omens của Terry PratchettNeil Gailman +2
  • The Gods Themselves của Isaac Asimov
  • A Canticle for Leibowitz của Walter M. Miller Jr.
  • Making Money của Terry Pratchett +4
  • Thief of Time của Terry Pratchett
  • Interesting Times của Terry Pratchett
  • Witches Abroad của Terry Pratchett
  • Falling Free của Lois McMaster Bujold
  • Shards or Honour của Lois McMaster Bujold
  • The Princess Bride của William Goldman
  • Hyperion của Dan Simmons
  • The Fall of Hyperion của Dan Simmons +2
  • Spin của Robert Charles Wilson +1
  • Neverwhere của Terry PratchettNeil Gailman +1
  • Feet of Clay của Terry Pratchett +4
  • Jingo của Terry Pratchett +1
  • The Final Empire của Brandon Sanderson +3
  • The Well of Ascension của Brandon Sanderson +2
  • The Hero of Ages của Brandon Sanderson +1
  • The Truth của Terry Pratchett +3
  • Monstrous Regiment của Terry Pratchett
  • The Fifth Elephant của Terry Pratchett +1
  • The Last Hero của Terry Pratchett
  • Pyramids của Terry Pratchett
  • Moving Pictures của Terry Pratchett
  • The Golden Compass của Phillip Pullman +1
  • The Subtle Knife của Phillip Pullman +1
  • The Amber Spyglass của Phillip Pullman +1
  • Babel-17 của Samuel R. Delany
  • The Einstein Intersection của Samuel R. Delany
  • Doomsday Book của Connie Willis +1
  • Tehanu của Ursula K. Le Guin
  • Rite of Passage của Alexei Panshin
  • Red Mars của Kim Stanley Robinson
  • The Falling Woman của Pat Murphy
  • The Way of Kings của Brandon Sanderson +2
  • Words of Radiance của Brandon Sanderson +4
  • Dreamsnake của Vonda N. McIntyre
  • Axis của Robert Charles Wilson
  • Vortex của Robert Charles Wilson
  • Prelude to Foundation của Isaac Asimov
  • Lords and Ladies của Terry Pratchett
  • Maskerade của Terry Pratchett
  • Unseen Academicals của Terry Pratchett
  • Equal Rites của Terry Pratchett
  • The Quantum Rose của Catherine Asaro
  • Camouflage của Joe Haldeman
  • Forever Peace của Joe Haldeman
  • The Left Hand of Darkness của Ursula K. Le Guin
  • The Speed of Dark của Elizabeth Moon
  • Barrayar của Lois McMaster Bujold
  • The Warrior’s Apprentice của Lois McMaster Bujold
  • 2010 Space Odyssey Two của Arthur C. Clarke
  • 2061: Odyssey Three của Arthur C. Clarke
  • 3001: The Final Odyssey của Arthur C. Clarke
  • Wintersmith của Terry Pratchett
  • Worlds của Joe Haldeman
  • The Hunger Games của Suzanne Collins
  • Pebble in the Sky của Isaac Asimov
  • A Hat Full of Sky của Terry Pratchett
  • The Wee Free Men của Terry Pratchett +1
  • Carpe Jugulum của Terry Pratchett
  • A Fire Upon the Deep của Vernor Vinge
  • Dragon’s Egg của Robert L. Forward
  • Steelheart của Brandon Sanderson
  • Mitosis của Brandon Sanderson
  • Firefight của Brandon Sanderson
  • Calamity của Brandon Sanderson
  • Lord of the Flies của William Golding
  • Quán gò đi lên của Nguyễn Nhật Ánh
  • Những chàng trai xấu tính của Nguyễn Nhật Ánh
  • Cô gái đến từ hôm qua của Nguyễn Nhật Ánh
  • Trại hoa vàng của Nguyễn Nhật Ánh
  • Buổi chiều Windows của Nguyễn Nhật Ánh
  • Ngày xưa có một chuyện tình của Nguyễn Nhật Ánh
  • Nữ sinh của Nguyễn Nhật Ánh
  • Bồ câu không đưa thư của Nguyễn Nhật Ánh
  • Animal Farm của George Orwell
  • Elantris của Brandon Sanderson
  • Oathbringer của Brandon Sanderson +2
  • Theatre of Cruelty của Terry Pratchett
  • The Dispossessed của Ursula K. Le Guin
  • Dolphin Island của Arthur C. Clarke
  • Anansi Boys của Neil Gailman
  • Greek Mythology: A Captivating Guide to the Ancient Gods, Goddesses, Heroes, and Monsters
  • The Hammer of God của Arthur C. Clarke
  • The Man in the High Castle của Philip K. Dick
  • Skyward của Brandon Sanderson
  • Giao thừa của Nguyễn Ngọc Tư
  • Rhythm of War của Brandon Sanderson
  • Ender's Shadow của Orson Scott Card
  • Warbreaker của Brandon Sanderson
  • Mistborn: The Alloy of Law của Brandon Sanderson
  • A Canticle for Leibowitz của Walter M. Miller Jr.
  • Slow River của Nicola Griffith
  • The Last Continent của Terry Pratchett

À quên.. Đôrêmon, Bảy viên ngọc rồngDấu ấn rồng thiêng!


Cập nhật 298 lần. Lần cuối: Sun Aug 11 18:25:34+0003 2024

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

Thứ tư, 22 Tháng một năm 2006 18:02:13 ICT

Ô chữ Linux Gazette tháng 11

  1. Ngang: owner. Dọc: oct
  2. không biết
  3. không biết
  4. emacs
  5. release
  6. Ngang: spam
  7. public
  8. aguide
  9. membus
  10. không biết
  11. huge
  12. không biết
  13. không biết
  14. cernlib
  15. ripping
  16. bonsai
  17. không biết
  18. nessus
  19. idu
  20. không biết
  21. spaces
  22. addon

Kết quả tháng mười vậy mà vẫn sai. Số 10 là tide chứ không phải time.


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 | Linux

Thứ ba, 21 Tháng một năm 2006 09:00:51 ICT

Đập ống tập hai: tee nâng cao

Cái công cuộc thêm xoá sửa xử lý văn bản cho vspell đã chứng minh câu nói của người xưa là đúng: cái khó ló cái khôn .. của người khác (chỉ cần tìm và nhặt).

tee cơ bản là lưu nội dung stdout vào tập tin. Đại loại như:

cmd blah| tee a | cmd bluh

Giả sử ta không muốn tee ra tập tin a như trên mà thay vào đó ta đẩy stdout cho một tiến trình khác xử lý tiếp. Theo như The Answer Gang thì có nhiều cách:

  • Dùng mkfifo
  • Dùng process substitution

Dùng process substitution cho ra câu lệnh khá đẹp

cmd blah|tee >(cmd blahblah) | cmd bluh

Một điểm nữa là man bash cũ quá, không có thông tin về process substitution. info bash thì có. Với lệnh này, có thể thực hiện được một cái luồng đại loại như sau cho vspell:

<graphviz cmd="dot" width="800">
digraph {
	rankdir=LR;
	src [label="Corpus",shape="box"];
	dst [label="Ngram counts",shape="box"];
	out_st [label="Sentences",shape="box"];
	out_tok [label="Tokens",shape="box"];
	out_lat [label="Lattices",shape="box"];
	err_prefilter [label="stderr log",shape="plaintext"];
	err_sentence [label="stderr log",shape="plaintext"];
	err_utf8toviscii [label="stderr log",shape="plaintext"];
	err_tokenize [label="stderr log",shape="plaintext"];
	err_lattice [label="stderr log",shape="plaintext"];
	err_softcount [label="stderr log",shape="plaintext"];
	prefilter [label="text-filter"]; 
	sentence [label="sentence-test"];
	tokenize [label="tokenize-test"];
	lattice [label="lattice-test"];
	softcount [label="sc-train"];
	sentence_tee [label="tee",shape="diamond"];
	tokenize_tee [label="tee",shape="diamond"];
	lattice_tee  [label="tee",shape="diamond"];

	src -> prefilter -> sentence -> utf8toviscii -> sentence_tee -> tokenize -> tokenize_tee -> lattice -> lattice_tee -> softcount -> sc2wngram -> dst;
	sentence_tee -> out_st [label="gzip"];
	tokenize_tee -> out_tok [label="gzip"];
	lattice_tee -> out_lat [label="gzip"];

	prefilter -> err_prefilter;
	sentence -> err_sentence;
	utf8toviscii -> err_utf8toviscii;
	tokenize -> err_tokenize;
	lattice -> err_lattice;
	softcount -> err_softcount;
}
</graphviz>

TB. Đây là phần dành cho phân loại Hâm. Cùi Bắp theo kế hoạch sẽ hỗ trợ hiển thị TeX. Bây giờ thêm graphviz. Có khi nào Cùi Bắp dùng ConTeXt để tạo ra một thứ nhật ký bằng PDF luôn không ta :D


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

Thứ hai, 20 Tháng một năm 2006 19:13:46 ICT

"Dù có chết mình cũng phải cài Gentoo"

Trích dẫn của bạn otzi từ forum.vnoss.org:

Tớ xem output thấy thế :) thế tóm lại bây giờ tớ phải làm gì :( . Người anh em hãy giúp mình dù có chết mình cũng phải cài gentoo :) người anh em cho tớ xin nick YM tớ chỉ làm phiền xí thôi :D

(bản trích dẫn đã được sửa lỗi chính tả)

Nhắn nhỏ bạn otzi, nếu bạn có tình cờ đọc được những dòng này. Vậy là bạn đang "có chết cũng phải cài Gentoo". Cài xong bạn sẽ làm gì? Tự tử à?

Câu trả lời nghe hợp lý nhất là cài xong để tuyên bố "đã cài được Gentoo, mà từ stage 1 nhé!", xong rồi .. xoá


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 | Gentoo

Chủ nhật, 19 Tháng một năm 2006 08:28:17 ICT

Mạng 360

cauchuyennhocuatoi.net gợi ra một ý hay: vẽ đồ thị mạng lưới liên kết trên 360. Sau một hồi hì hục móc friend list của bà con về (dừng ở mức 300 list, móc hết chắc chết). Chỉ xét trong những trường hợp đã móc friend list về thì vẽ được cái này:

:http://flickr.com/photos/pclouds/300514134/

Cái nút đỏ đỏ là "nhân vật chính" pclouds. Ai có nhu cầu vẽ một cái tương tự thì liên hệ qua mail :-)

:http://flickr.com/photos/pclouds/301377579/

:http://flickr.com/photos/pclouds/301377582/

Hai hình vẽ mạng bạn bè trực tiếp. Cái trên vẽ bằng twopi cái dưới vẽ bằng neato. Trông hết sức gọn nhẹ. Vậy hãy xem mạng "bạn của bạn" để thấy rằng mình .. nhỏ xíu:

:http://flickr.com/photos/pclouds/301377584/

Vẫn như trước. pclouds là một chấm (tìm ra không?) màu đỏ. Liên kết trực tiếp đến pclouds màu đỏ. Các nút gắn với liên kết đỏ sẽ đổi sang màu xanh dương. Các liên kết đi từ xanh dương đi ra cũng sẽ có màu xanh dương. Vậy liên kết đen là liên kết "chúng nó chơi với nhau".

Đồ thị này có 2370 nút (tương đương 2370 người) với 2726 mối liên hệ bạn bè của bạn bè mình (trong tổng số 13366 liên kết)

Nếu có ai phân vân vẽ bằng neato nó kinh dị thế nào, thì đây:

:http://flickr.com/photos/pclouds/301388724/


Cập nhật 4 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, 18 Tháng một năm 2006 15:12:20 ICT

Sự khác biệt giữa plainTeX, LaTeX và ConTeXt

Khác nhau ở cái \output :D

Với plainTeX, hết sức đơn giản. \output là một vbox gồm ba thành phần là headline (\makeheadline), phần nội dung (\pagebody) và footline (\makefootline).

Với LaTeX, hết sức phức tạp. Có lẽ do tại LaTeX hỗ trợ văn bản nhiều cột. Có vẻ như macro thực sự tạo ra một trang là \@opcol (hai cột thì chuyển qua xài \@outputdblcol, một cột thì xài \@outputpage). Đến lượt \@outputpage là một macro to đùng (may quá, tìm ra manh mối để tìm macro này sau khi đã tìm ra macro này: tìm \shipout) với các thiết lập trang chẵn lẻ... Nói chung là nhức đầu.

Với ConTeXt, nó phân ra làm một trong ba macro \OTRMUoutput, \OTRONEoutput\OTRSEToutput (có vẻ vậy). Ba macro này là ngõ cụt vì không tìm ra đường dẫn đến \shipout. À có thể \OTRONEoutput, sau một hồi xử lý, sẽ dẫn đến \OTRONEfinalsidefloatoutput để từ đó gọi \finaloutput. \finaloutput qua một số bước nữa sẽ ra đến \shipout.

Tò mò đọc thử tài liệu về pdfTeX, thấy lệnh \pdfliteral. Hèn gì dễ dàng tạo ra PDF (nói "dễ" cho oai thôi). Một số lệnh hay hay là \pdfimage để chèn ảnh PNG vào PDF. \pdfinfo để thêm thông tin phụ như tác giả... Một số lệnh khác để xử lý siêu liên kết (ớn). Vậy là để xài pdfTeX, phải tìm hiểu thêm về kiến trúc và tập lệnh PDF :P

Chưa biết làm thế nào ConTeXt nối MetaPost với TeX lại với nhau. Có lẽ dính dáng đến một số script phụ trợ bên ngoà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 | Hâm, TeX

Thứ bảy, 18 Tháng một năm 2006 07:37:40 ICT

VM --- Có quá trời VM!

Sự kiện Adobe đóng góm ActionScript VM cho dự án Mozilla, dù sớm hơn sự kiện Sun mở mã nguồn Java VM nhưng lại ít được biết đến hơn.

Vậy đến thời điểm này ít nhất có hai công ty to to mở VM. Ngoài ra còn một lô lốc các VM khác như Mono, Parrot, YARV kèm theo một mớ các VM nho nhỏ khác như LLVM hoặc NekoVM … Chưa kể một loạt các ngôn ngữ thông dịch phổ dụng như Python hoặc Ruby đang được chuyển qua nền Java/.NET.

Coi bộ các ngôn ngữ hoạt động trên nền VM bắt đầu vươn lên. Nhưng ngôn ngữ biên dịch trực tiếp ra mã máy bắt đầu đi xuống (dù vẫn còn nhiều). Ngoài một số quá thấp như C và Assembly vẫn trụ vững ở tầng .. hầm của hệ thống. Số còn lại như C++, D, Haskell, Objective C, Lisp, Eiffel, ML/Ocaml... sẽ đi đâu về đâu?

Trừ Objective C vẫn còn bảo đảm tương lai chừng nào OS X vẫn còn, mấy cái khác coi bộ không có bảo lãnh. Ứng dụng nổi tiếng nhất của Haskell chắc là Darcs. D vẫn chưa ra bản 1.0. C++ đang tiến lùi trước C# và Java. Lisp lâu lâu vẫn thấy ở một số ứng dụng (Emacs, Festival...). ML/OCaml có MLDonkey. Nhân nói về mấy ngôn ngữ ngộ ngộ, phải tính thêm Erlang với ejabberd. Tóm lại, trừ Objective C ra, mấy cái còn lại đang trên đường ngáp ngáp. Chết thì không chết. Vẫn có đất sống. Nhưng sống vật vờ trong ngõ hẻm...

TB. Theo tin YARV is merging thì YARV đã bắt đầu được đưa vào Ruby SVN. Điều này có nghĩa là từ này không còn YARV nữa mà chỉ còn RubyVM :-)


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 | OSS

Thứ sáu, 17 Tháng một năm 2006 22:55:11 ICT

Nối ống, rẽ nhánh, bẻ ống, đập ống... hay "Tất cả các dòng byte đều chảy"

Một lệnh hết sức hay từ Linux I/O Redirection để có thể xuất cả stdout và stderr ra tập tin trong khi vẫn giữ nguyên stdout và stderr để xử lý tiếp:

(((./cmd | tee stdout.txt) 3>&1 1>&2 2>&3 |tee stderr.txt) 3>&1 1>&2 2>&3) 1>out.txt 2>err.txt

Khúc 1>out.txt và 2>err.txt không tính. Đó là phần còn lại của lệnh, muốn sửa gì thì sửa. () dùng để bảo toàn cả stdout và stderr (stderr bị mất khi đẩy qua ống). Phần hấp dẫn nhất gì nhiên là 3>&1 1>&2 2>&3 dùng để hoán đổi vị trí hai ống 1 (stdout) và 2 (stderr). Ống (file descriptor) 3 là ống tạm. Có lẽ dùng 4 hoặc 5 cũng không chết ai (hi vọng thế).

Vậy là từ nay có thể nối ống từ hai, ba hàng sang bốn, năm hàng :D Đi đăng ký thi bàn tay vàng --- thợ sửa ống nước. Mà với kiểu ráp ống kiểu này, nhất thiết phải có hình minh hoạ. Không có chỉ cần nó "đổi ống" vài ba lần là bỏ mạ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 | Linux, Mánh và mẹo

Thứ năm, 16 Tháng một năm 2006 06:31:47 ICT

Bàn về sed

Nhìn lại mấy cái lệnh dùng để xử lý văn bản của mình cũng không nhiều. Quanh quẩn chỉ grep, sed, sort, uniq, head/tail, while;do;donefor;do;done (lâu lâu thêm awk)

Gần đây mò ra cái mánh /^$/blah trong sed từ cg-admin-rewritehist, nghĩ cũng đáng viết một chút về sed.

Theo truyền thống, phải giới thiệu sơ qua về sed. sed là viết tắt của stream editor, phần còn lại coi man sed :D

Công dụng của sed? Có lẽ dùng nhiều nhất để thay thế một đoạn văn bản với biểu thức chính quy thông qua lệnh s///. Lệnh này cũng đơn giản, biết biểu thức chính quy, tán vào là ngon. Các tuỳ chọn phía sau của nó cũng na ná như của Perl. Ví dụ lọc link từ tag <a>

sed 's,.*href="\([^"]*\)".*,\1,' tập-tin

Lệnh này nên áp dụng chung với grep. Bởi vì nó chỉ tác động trên những dòng có href="...". Những dòng không có nó bỏ qua (bởi vậy dùng grep để lọc bỏ những dòng này).

Có một tuỳ chọn trong sed rất hay dùng: -i. Thêm tuỳ chọn này, các tập tin phía sau sẽ bị điều chỉnh trực tiếp chứ sed không đẩy kết quả ra stdout như thường lệ. Rất tiện để chỉnh sửa tập tin (sau khi đã thử không có -i và cảm thấy kết quả tốt). Một cách khác an toàn hơn là thêm một cái gì đó vào sau -i, ví dụ như -i.bak. Sed sẽ thay thế như thường lệ, nhưng lưu lại bản sao cũ dưới đuôi .bak. Sau đó có thể gọi cái lệnh hầm hố dưới đây để kiểm tra nội dung:

find -type f -not -name '*.bak' | \
    while read i; do
    diff -u "${i}".bak "${i}"
done | \
less

Có một phần trong cú pháp sed mà gần đây mới dùng nhiều là cách xác định những dòng sẽ thao tác. Với lệnh s/// trống hơ trống hoắc trên, sed sẽ áp dụng lệnh này trên tất cả các dòng. Muốn sed chỉ áp dụng với những dòng thoả biểu thức chính quy REGEX thì sửa thành /REGEX/s///. Nói chung, thêm phần /REGEX/ vào trước lệnh cần thao tác để chọn vùng cho lệnh đó. Xem thêm phần Addresses trong man sed. Một số ví dụ khác bao gồm:

  • thực hiện lệnh d (xoá dòng) ở dòng thứ N (số): Nd
  • thực hiện lệnh d ở dòng cuối cùng: $d
  • thực hiện lệnh d từ dòng N đến M: N,Md
  • thực hiện lệnh d từ dòng N đến N+M: N,+Md
  • Thay N bằng biểu thức chinh quy dạng /REGEX/ nếu thích

Một số lệnh hữu dụng khác của sed ngoài s///:

  • Xoá dòng d
  • Chèn dòng phía trước iblah (blah là cái muốn chèn vào)
  • Tương tự i, dùng a để chèn dòng phía sau

Tóm lại, với sed, có thể thực hiện hầu hết các thao tác chỉnh sửa tập tin đơn giản (mang tính hệ thống). Với các yêu cầu phức tạp hơn thì dùng Perl, hoặc điên hơn nữa, dùng Vim "tự động hoá" (từ sed qua vim cũng không kinh dị lắm).

TB. Theo tài liệu này thì sed còn có flow control với buffer (variable?) nữa. Ớn quá!


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 | Linux, Mánh và mẹo

Thứ năm, 16 Tháng một năm 2006 00:47:43 ICT

Kho chữ

Sau gần 1 tuần kêu gọi giúp đỡ, lượng dữ liệu tăng khá nhiều

  Nguồn                      Số bài    Số đoạn    Số dòng   Số từ (cũ)  Số từ (wc)      Số byte
-------------------------------------------------------------------------------------------------
  data/dactrung.net           3.692    277.252    559.332   12.463.893  12.177.324   72.883.621
  data/evan.com.vn            1.404     19.836     41.447    1.578.629   1.541.558    9.482.208
  data/hanoi.vnn.vn/vanhoc      348      7.176     21.910      657.170     640.951    3.864.075
  data/suutap.com             1.477     32.734    135.211    1.199.299   1.167.326    7.132.125
  data/vnexpress.net        161.433  1.582.869  8.432.197   72.494.109  70.682.025  437.154.181
  data/vnthuquan.net/truyen   4.049    272.974    549.016   13.116.602  12.810.473   76.549.743
-------------------------------------------------------------------------------------------------
  Tổng cộng (số cũ)          77.872  1.276.834  5.403.152   56.194.122  54.879.290  353.351.221
  Tổng cộng                 172.403  2.203.841  9.769.113  104.509.702  99.019.657  599.933.828

Số từ (cũ) là đếm bằng cách ngắt khoảng trắng. Còn số từ wc là dùng wc để đếm (LANG là C)

Các nguồn "dự trữ" gồm:

  • vi.wikipedia.org
  • vi.wikisource.org
  • e-cadao.com
  • www.quehuong.org.vn
  • www.tuoitre.com.vn
  • www.nld.com.vn
  • www.maiyeuem.net/forum.php (phần Văn học nghệ thuật)
  • pcworld.com.vn
  • echip.com.vn
  • www.bbc.co.uk/vietnamese
  • www.dantri.com.vn
  • Báo Nhân dân
  • Báo VnEconomy

Các việc cần làm (đánh giá lại chất lượng kho):

  • Kiểm tra xem sạch tag html hay chưa
  • Kiểm tra xem còn html entity không
  • Loại bỏ các ký tự đặc biệt ngoài phạm vi ASCII (trừ khi thật sự cần thiết).
  • Loại bỏ Unicode tổ hợp
  • Đánh giá lượng ký tự ngăn cách
  • Đánh giá số lượng âm tiết không phải tiếng Việt (từ nước ngoài + sai chính tả + lọc văn bản sai)
  • Phân loại kho, thêm phân loại cho từng nguồn để sau này dễ chọn lựa

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

Tác giả: pclouds | Liên kết tĩnh | Tiếng Việt, OSS

Thứ bảy, 11 Tháng một năm 2006 23:31:14 ICT

Công dân thành phố

Trong 14MB "ngữ liệu", không có nổi một lần xuất hiện cụm từ "công dân thành phố". Ha ha ha...


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 | Tiếng Việt, Hâm

Thứ bảy, 11 Tháng một năm 2006 16:39:08 ICT

Sửa commit cũ trong Git

Càng dùng Git, càng bị nghiện cái gọi là "thay đổi lịch sử". Lý do có thể là sau khi commit xong mới nhận ra một lỗi nhỏ không đáng để thêm một cái commit nữa, hoặc nhận ra mình commit thiếu mất một tập tin... Nói chung là ba lỗi lặt vặt.

Nếu phát hiện ra ngay lúc vừa commit, việc sửa HEAD tương đối đơn giản. Cứ git commit --amend là xong. Tiện và gọn. Mỗi cái khó theo dõi coi mình đã "amend" cái gì. Cái này có thể dùng git diff HEAD~1

Nếu phát hiện ra lúc đã commit một vài thứ khác nữa thì.. chà phức tạp. Cơ bản là lưu lại SHA-1 của tất cả các commit mới. Sau đó dùng "git reset" để quay về commit cần sửa. Sửa và commit. Xong commit lại những commit cũ (commit con của commit được sửa).

git reset --hard <SHA-1>
# sửa một số thứ
git commit --amend
# làm lần lượt những cái sau cho các commit con
# <SHA-1> là ID của commit con
git read-tree <SHA-1>
git commit -C <SHA-1>
# commit con kế tiếp

Có lẽ nên viết một cái tool để thực hiện chuyện này cho nhanh :)


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 | Git, Mánh và mẹo

Thứ tư, 08 Tháng một năm 2006 08:13:46 ICT

Luyện vspell

Chạm ngưỡng ở lần huấn luyện thứ 3:

:http://flickr.com/photos/pclouds/292339609/

Chưa rõ kết quả này là tốt hay xấu vì .. lỡ tay xoá mất kết quả cũ :P Tại sao strict word checking lại cao hơn khi không có strict word checking tới 20%??


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

Tác giả: pclouds | Liên kết tĩnh | Tiếng Việt, OSS, vspell

Thứ ba, 07 Tháng một năm 2006 16:30:14 ICT

Festival tiếng Việt và hoan hô Tony Lý

Bạn Phạm Thành Nam xăm mình đi thu âm để festival có thể nói tiếng Việt. Nói chung, nghe cũng tạm được. (Mà nghe được đã là mừng lắm lắm rồi). Các điều khoản mở rộng về việc nói bậy và buồn cười, có lẽ chỉ nên là "gợi ý" chứ không nên nằm trong license thật sự, tại nó mơ hồ quá.

Tin vui thứ nhì là bác Tony Lý đã lên tiếng ủng hộ cải tiến chất lượng của bộ âm thanh này. Hết sức cám ơn bác Tony Lý. Hi vọng sáu tháng sau sẽ có một phiên bản có chất lượng tốt hơn, và có giọng nữ (ngoài một số ưu thế về kỹ thuật, giọng nữ còn được "hâm mộ" hơn).

Địa chỉ của dự án là http://sourceforge.net/projects/vietnamesevoice

Không biết có ai đủ khả năng để xem xét xem có thể chuyển dữ liệu từ vspeech sang CMUSphinx không 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 | Tiếng Việt, OSS

Thứ hai, 06 Tháng một năm 2006 20:28:00 ICT

Tái luộc vspell repository

Lịch sử huy hoàng của vspell, theo như kho svn chứa vspell, ghi nhận những biến cố lịch sử:

  • Ngày 22/10/2003 (r37), hai tập tin đầu tiên của vspell, wfst.cppwfst.h được đưa vào kho, đánh dấu sự khởi đầu của vspell.
  • Ngày 12/12/2003 (r64), vspell chuyển sang sử dụng auto* đồng thời chuyển từ thư mục cũ /trunk/vspell sang /trunk/vspell/vspell
  • Ngày 29/03/2004 (r140), lại một cơn điên dại nữa xảy ra. vspell được chuyển từ /trunk/vspell/vspell sang /trunk/vspell-old/vspell. Liền sau đó (r141), /trunk/vspell-old/vspell được chuyển về thành /trunk/vspell
  • Một ngày xấu trời cuối tháng 3/2004 (r147), /trunk/vspell được chuyển thành /vspell/trunk.
  • Một ngày sau đó, ta tỉnh ra, nhận ra rằng ta không thể kiểm soát nổi hệ thống nữa nên quyết định quay về r146. Với thay đổi này, vspell cuối cùng quay lại /trunk/vspell

Với sự thay đổi thư mục xành xoạch như vậy, git-svn không thể nào import được toàn bộ kho mà phải import làm nhiều đợt. Điều này dẫn đến 1 vấn đề: nối các git repo lắt nhắt này lại để tạo nên repo thống nhất. Cách làm đại loại như sau:

git checkout old-repo
echo 'commit message' | GIT_AUTHOR_DATE='timestamp +timezone' git commit-tree <tree-object của commit đầu tiên của new-repo> -p HEAD > .git/refs/heads/new-repo-1
git rebase new-repo-1 new-repo

(cuối cùng sử dụng commit-tree, sau một hồi mò mẫm git read-tree, git update-index, git checkout-index...)

Sau khi dùng cg-admin-rewritehist để loại bỏ SRILM (vì không được phép phân phối nếu chưa xin phép), kho vspell giờ nằm trên repo.or.cz! Kho mới do không có SRILM nên các phiên bản cũ chắc chắn sẽ không chạy. Kho git chứa SRILM sẽ không được công bố. Ai có nhu cầu thì liên hệ trực tiếp qua mail.


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

Chủ nhật, 05 Tháng một năm 2006 21:18:26 ICT

Loại SRILM khỏi vspell

SRILM là thư viện về Language Modeling, trước đây được dùng trong vspell cho tiện. Khổ nỗi SRILM không tiện phân phối và khá nặng nề. Do đó phần LM được thay bằng module của CMUSphinx. Bước kế tiếp sau khi bản LM của CMU Sphinx hoạt động ổn định là chuyển qua PocketSphinx nhằm giảm lượng bộ nhớ sử dụng.

Sau nửa tuần, SRILM đã bị gỡ bỏ khỏi vspell. Dùng boost từ thư viện ngoài thay vì nhúng thẳng vô vspell (nâng cấp là nhức cái đầu). Điều chỉnh lại mấy cái chương trình lắt nhắt dùng để kiểm tra, thử nghiệm và huấn luyện, theo hướng tách nhỏ ra. Nếu cần thì gắn lại với nhau bằng pipe, tiện và gọn. Ngoài ra phần tính toán LM của SRILM cũng bị loại bỏ, thay bằng CMU-Cam SLM Toolkit. sc-train chỉ xuất ra dữ liệu thô và CMULM làm phần còn lại. Cần tìm hiểu tiếp về Principle of maximum entropy. Nếu dùng sc-train lặp đi lặp lại thì có vẻ như đang áp dụng lý thuyết này.

Tổng kết: 298 files changed, 4480 insertions(+), 49473 deletions(-)

Kế tiếp: coi lại cái "corpus" chôm từ VNExpress. Phát sinh lại LM mới và chạy thử lần nữa coi nó có còn chạy (được và đúng) không. Chuyển CMUSphinx sang PocketSphinx. Loại SRILM khỏi vspell repository và thêm phần history còn thiếu (thằng Subversion khỉ gió), sau đó công bố vspell repository :D


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 | Tiếng Việt, OSS, vspell

Thứ tư, 01 Tháng một năm 2006 00:13:03 ICT

VSpell chạy rồi!

Tin vui vào lúc 0 giờ vài phút đầu tháng 11 (đúng hơn là cuối tháng 10 --- vspell-gtk được tạo ra lúc 23 giờ 51 phút ngày 31 tháng 10): VSpell chạy lại sau hơn hai năm nằm vùng. Trong điều kiện subversion repository cũ có nguy cơ không thể phục hồi, thằng tác giả chạy lăng nhăng làm đủ việc lăng nhăng, đến khi biên dịch lại thì GCC 4.1 mới quá nó đếch thèm chạy. Phải nâng cấp boost và libsrilm lên rồi ngồi moi móc. Cũng đáng đồng tiền bát gạo.

:http://flickr.com/photos/pclouds/284792515

Vẫn thân thương như ngày xưa. Vẫn tốn RAM như xưa khi đứng đầu bảng những chương trình tốn RAM trên máy :D


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

Tác giả: pclouds | Liên kết tĩnh | Tiếng Việt, OSS, vspell