Monday, January 31, 2011

Emoticons have entered the Unicode! ;-)

In October 2010, the Unicode Standard version 6.0 standardized emoticons in the range [1F600, 1F64F]. From now on, the Unicode may include everything visualizable on the computer screen (^!^).

Wednesday, June 09, 2010

Sans-serif

"Sans-serif" tức "không-chân", là họ các phông chữ có nét suôn như Arial, Tahoma, đối lập với các phông chữ có chân như Times (đang dùng trong blog này). Ý nghĩa thì đơn giản như vậy, nhưng nếu phân tích ra thì có nhiều điều quái lạ lắm ;)
  • Pháp-Anh: Sans là từ tiếng Pháp nghĩa "không", còn serif lại là từ tiếng Anh nghĩa là "chân chữ".
  • Phát âm? Nếu đọc theo tiếng Anh thì là "san se-rif", theo tiếng Pháp thì là "son sơ-rif". Còn mình hồi đó giờ thì đọc lai thành "san sơ-rif". Tuy nhiên mình thấy serif đọc là "sơ-rif" thì đúng hơn là "se-rif" vì có vẻ như chữ đó bắt nguồn từ tiếng Đức schreef!

Saturday, November 07, 2009

Chuyện Búi Chỉ

  • Phần 1, Câu chuyện về những Sợi chỉ Cuộn tròn (The Story of Folding Threads): Tự thuở sơ khai, những con chữ, các ký tự nằm rời rạc nhau, chưa có ý nghĩa. Sau đó, chúng được ghép lại với nhau tạo thành từ, rồi nhiều từ nối tiếp nhau tạo thành câu, câu nối câu tạo nên đoạn văn, v.v. Từ khi được "xỏ xâu", những con chữ mới bắt đầu mang theo ý nghĩa. Nhưng những xâu ký tự đó cứ được sinh ra nhiều vô số, và cứ dài ra đến vô tận, không thể nào cất giữ được. Thế là người ta nghĩ cách "buộc túm" chúng tại với nhau thành 1 cho các phần giống nhau của các xâu chụm lại thành 1, và thế là ta có "cây". Như vậy là có thể "xách cả bó đi 1 lượt" được rồi. Nhưng chúng vẫn còn lòng thòng, và có những xâu dài đến gần như vô tận. Thế nên người ta lại nghĩ cách cuộn chúng lại cho gọn hơn, các bó (cây) con đồng dạng với nhau được ghép chung lại thành 1 cục, tạo nên trạng thái. Vậy là bó chỉ đó đã co lại thành một búi, gồm một mớ các trạng thái (nút) liên kết chằng chịt với nhau, gọi là máy trạng thái. Búi chỉ này đủ gọn để bỏ vào túi được rồi!

    Tương tự như vậy, thưở sơ khai bên thế giới vật lý cũng có các điện tử lạc lõng rời rạc chưa làm nên tích sự gì. Từ khi con người biết "thổi" chúng vào thành một luồng (dòng điện) thì chúng mới phát huy tác dụng. Những dòng điện này được "cuộn tròn" lại tạo nên các trạng thái, những trạng thái độc lập khi đòng điện của chúng được khép kín. Người ta ghép rất nhiều trạng thái lại với nhau tạo thành máy tính, và cho nó một dòng điện để hoạt động. Dòng điện này đi tới đâu thì nối với dòng dòng điện khép kín của trạng thái tới đó, tương tác với nó, mở nó ra, và làm cho trạng thái thay đổi, tức chuyển trạng thái. Và dòng điện nuôi sống cỗ máy ấy cũng chính là luồng của sự sống!

  • Phần 2, Sự Tiến hoá của những Búi Chỉ (The Evolution of Thread Folds): Những búi chỉ ban đầu còn nhỏ gọn (bỏ túi được), nhưng càng ngày càng nở ra, càng trở nên hỗn độn bùi nhùi... Thế là người ta phải tách những phần đồng dạng đơn giản nhưng xuất hiện phổ biến ra thành các búi nhỏ, được gọi là dữ liệu (biến, bộ nhớ), và phần phức tạp còn lại được gọi là chương trình. Việc phân tách này đã làm giảm kích thước búi chỉ một cách đáng kể (theo cấp số nhân). Chương trình là búi chỉ bùi nhùi phức tạp nhất và giữ vai trò "đầu não" điều khiển những búi dữ liệu đơn giản hơn giữ vai trò "cơ bắp". Đến lượt mình, chương trình cũng phình to ra và đến khi có những phần lặp lại, nó lại bị tách ra thành các module, gọi là thủ tục / hàm.

    Khi hệ thống phát triển thì không những chương trình mà dữ liệu cũng phải được module hoá, một mớ dữ liệu với một mớ hàm được đóng gói lại thành một module gọi là đối tượng. Và khi có nhiều luồng sống cùng tồn tại trên một tập hợp các đối tượng thì chúng lại bị phân hoá ra làm 2 loại: các sinh thể (đối tượng hữu tri, hay "chúng sanh" theo ngôn ngữ Phật) và các đối tượng vô tri (hay "vật thể").

  • Bonus, Luồng (của sự) Sống (The Threads of Life): Luồng sống, luồng vận động, hay dòng thời gian là một khái niệm diễn tả sự sống. Ở mức trừu tượng nhất, nó là sự chuyển trạng thái. Nếu trạng thái là khái niệm tĩnh thì luồng sống là khái niệm động: Nó bắt đầu từ trạng khái khởi đầu và đi xuyên qua các trạng thái, đi tới đâu thì tạo nên sự chuyển trạng thái tới đó. Nhưng ranh giới động/tĩnh này chỉ có nghĩa khi ta xét phạm vi ngoài trạng thái. Chứ thực ra trong mỗi trạng thái đều có 1 luồng sống đang khép kín nằm ngủ, gọi là luồng sống nội tại. Khi cái luồng sống bên ngoài đến với mỗi trạng thái thì nó không làm gì khác ngoài việc mở vòng kín của luồng sống nội tại (đánh thức nó) và nối tiếp vào một đầu của nó. Khi đó, trạng thái "thức dậy" và hoà luồng sống của mình với luồng sống chung. Khi đầu kia của luồng sống thoát ra khỏi trạng thái và chuyển sang trạng thái khác thì ta có sự chuyển trạng thái, và trạng thái cũ "ngủ" trở lại với luồng sống nội tại khép kín của mình.

Ngoài ra, trong thế giới sinh vật cũng có những búi chỉ cuộn tượng tự: Những acid amin được xỏ xâu lại với nhau thành các chuỗi polypeptid, chuỗi này xoắn lại với nhau thành cấu trúc xoắn kép hoặc gấp lại thành những tấm xếp, rồi những cấu trúc này lại gấp cuộn lại với nhau thành những khối protein 3 chiều, và những khối này còn có thể gắn kết lại với nhau tạo thành những khối protein to hơn nữa.



















[from EducationalTrainingVideos]

--------------

Tham khảo:

- Các hình búi chỉ lấy từ 3-Dimensional Fiber Work by Tina Koyama
- Về protein: Protein Structure @ The Biotechnology Project, TANPAKU Project

Sunday, October 18, 2009

D* Framework & Knowledge Theory

Let's...
draw up your dreams, (D* Framework)
make invisible things visible,
and immeasurable things measurable! (Knowledge Theory)

"Distributed", another "D" for the D* to append to the list of Ds: Dynamic, Developed, Descriptive, Designable, Distributed, Determined, Direct, Durable, Definite,...

A specific theory for Software Development is no more needed! The Knowledge Theory will do the trick, in steads! ;) Knowledge Theory will enlighten every aspect, every corner of Software Development Processes: How much you lose and how much you gain when you throw goto away to shift to Procedural Programming, how much you lose/gain when you throw pointer away to shift to Object Oriented Programming, and how much you lose/gain when you throw shared memory away to shift to Thread Oriented Programming.

The Reduced Halting Problem

The original Halting Problem: There exists a decider H(,) such that for all program p and input x, H(p,x) decides whether p halts on x.
The reduced Halting Problem: For all program p and input x, there exists a decider H(,) such that H(p,x) decides whether p halts on x.

Is the reduced problem decidable?

Thursday, June 18, 2009

EXP(), The Limit of Our Mind!?!

EXP(), ExplosiveXtremePower(), or usually named in the world of mathematics as exponent() is actually an interesting function:

Saturday, October 11, 2008

Mutex & Sync, A note for myself

- Mutex(actually, atomicity) & Sync complement each other (within the same boundary: either global or local)
- All mutex/sync tools (mutex, atomic claim, lock, semaphore, fence, barrier) have the same (simulation) power, and thus, CANNOT be built(simulated) without the hardware intrinsic atomicity.
- All sync can be simulated by async software model, but NO sync can be done(simulated) without the hardware intrinsic sync. Eg: the read, write ops; the "2-state lovers" problem.
* At the deepest meaning leavel, mutex/sync is only needed for INFORMATION RESERVATION!

Saturday, January 12, 2008

Petri Nets, an Interesting Discovery

The term "Petri Net" has come to my mind someday while I'm taking the course "Theory of Discrete-State Systems", but it had been so dim because I didn't attend the class the day Petri Net introduced. Later, when dealing with parallelism, I found that it will be much easier to represent "action activation", "event synchronization", and so on with the concept "transition" in Petri Net. And some other day, when I myself read the slides about introduction to Petri Net, I was strongly impressed by the thought that "Only equipped with an N (tokens), Petri Net has turned Finite Automaton to a universal machine, i.e. Turing-equivalent machine!" That idea came to me very naturally, since Turing Machine is different from Finite Automaton only in term "Finite", i.e. TM has infinite memory (equivalent to a natural number). But yesterday, in an attempt to simulate the "N-memory" using Petri Net, I faced a serious problem that Petri Net is incapable of expressing an important class of relations/operations: equivalence (x=y), negation (¬p). After struggling with the problem, I have found that Petri Net is "only one step next to heaven", and that "step" is to add the concept of "null token" or "transition priority". Before celebrating my "stunning result", I have done a search with Mr.Google and got some interesting things!

  • Name of the game: The "Petri Net" I referred above is in fact, P/T Net, which stands for Place/Transition Net, but also Pe-Tri Net (to my mind)! In general, "Petri Nets" is a family of modeling frameworks including P/T Net's subtypes and P/T Net's extensions.

  • More than making explicit: With explicit transitions, Petri Nets revive the notation of action in traditional flowchart, and make the interactions between concurrent processes much easier. With tokens, Petri Nets do not only make the instruction pointer(or instruction pointers in non-deterministic/parallel models) explicit, but also give means to represent resources as well as memories.

  • The lack in expresiveness: P/T Net can simulate an N-memory NM, with inc(NM), dec(NM), NZero(NM), but Zero(NM). Using enabling property of transitions, we can define a Boolean logic with p⋀q, p⋁q, but ¬p. I have tried to combine parallel P/T Net components using "connectors"(extra nets) and preserve the pre-built structure of those components, i.e. without "splitting stransitions"(or transitions). But I failed because without not, or cannot be converted to and.

  • One step to heaven: To be Turing-equivalent, P/T Net needs only one of these extensions:
    • Zero-testing/Inhibitory arcs, i.e. "not" arcs: Those arcs with a circular mark (inhibitor) at the transition end will enable the connected transitions only if the source place is empty. Normal arc: ○→☐, Inhibitory arc: ○―◦☐.
    • Transition priority: If both enabled, the transition with higher priority will be fired. This will solve the "conflict" in firing, and makes the choice between transitions more deterministic (it is still non-deterministic between transitions with equal priority).
    • Batch processing arcs: These arcs will process all token(s) in source places at once! This is proposed by some Japaneses in Modeling power of Petri nets with batch processing arcs, IEIC Technical Report.
    • Anti-places: If a place P is bounded m(P) ≼ M(P), we can construct an anti-place P- of P such that m(P-) = M(P) - m(p).
    However, Turing's "heaven" is not easy at all! Only with that one extension, all of the P/T Net's familiar properties (reachability, deadlock, liveness, reversibility, boundedness, covering) will be undecidable!!! Note: With P/T Net, we have algorithms to check all of those properties, already.

Wednesday, January 09, 2008

Một chứng minh xây dựng tuyệt vời cho Bài toán Dừng

Chẹp chẹp chẹp! Hay thiệt là hay!

Mới có hơn một tháng mà khi mình quay lại thì thấy Wikipedia đã chuyển cách chứng minh bài toán dừng từ Phản chứng sang Lập luận Đường chéo! Chứng minh bằng phản chứng vốn không được "xây dựng" cho lắm, trong khi lập luận đường chéo (chính thống) thì "có vẻ" xây dựng hơn nhiều. "Có vẻ" ở đây là nhiều khi những điều kiện tiền đề của lập luận có ẩn chứa việc "phán" một cách không xây dựng, ví dụ "tiên đề lựa chọn".

Tìm kiếm trên mạng, mình toàn thấy những "chứng minh đường chéo... giả" mà thôi. Chẳng qua chỉ là những chứng minh bằng phản chứng rồi tưởng tượng ra một đường chéo nào đó chứ chẳng liên quan gì đến lập luận đường chéo gốc của Cantor (hoàn toàn không dùng phản chứng). Còn chứng minh trên Wikipedia, vốn được lấy từ chứng minh của peter_douglass trên sci.logic, thì chính xác là lập luận đường chéo theo kiểu của Cantor. Và hơn thế nữa, nó hoàn toàn xây dựng chứ không ẩn giấu những tiền đề không xây dựng như tiên đề lựa chọn. Nó tránh được tiên đề lựa chọn là vì tập hợp các chương trình dừng (tương ứng với hàm tính được) là một tập hợp liệt kê được, nên mỗi một phần tử trong bảng giá trị đều có thể được chỉ ra (xây dựng) bởi một chương trình (thuật toán) cụ thể.

Monday, December 17, 2007

Lý thuyết của các Lý thuyết!

Ê hê, mình thích khoa học từ bé, nên đã sớm đụng đến cái "khoa học của các khoa học" là Triết học. Ấy vậy, tuy nghiên cứu lý thuyết cũng khá lâu rồi mà mình không biết đến cái gọi là "lý thuyết của các hệ thống lý thuyết"!

Chẹp chẹp... dạo này nghiên cứu lý thuyết "nặng" quá (formal methods), nên mặc dù không muốn cũng vẫn phải rờ tới cái tên Lô-gíc! Hôm trước vừa mới nêu ra "Tiên đề Phân biệt", thế mà không ngờ ngay hôm sau đã bắt gặp cái món "Lô-gíc Trực giác"(Intuitionistic logic) không chấp nhận "luật phủ định giá trị thứ ba". Tuy nhiên, mình thấy đây cũng không hẳn là cái mình muốn. Eo ơi, đụng đến lô-gíc thì có đủ loại lô-gíc, thiệt là kham hỏng nổi!

Hờ, dẫu sao thì mình cũng có vẻ là người của chủ nghĩa xây dựng (Constructivism)...

Friday, November 30, 2007

The Implied Axioms of Science

When a child and first time heard of "logic", I was so amazed, and somehow amused, by the way they use only 2 values TRUE/FALSE; and later by the 2 values ZERO/ONE in computing, too. "How can it be?", I wondered. Why is any thing must either true or false? Why can't they be somehow-true-somehow-false, like "30% true"? Why don't we do computation with real numbers like 1.2315, but only with 0 and 1? When studied about the Theory of Computation and first met the Diangonal Argument, I was surprised about its strength, but soon get more surprised with the way Cantor choosed an element out of an arbitrary set! I thought that if we donot know the underlying structure, or if we cannot assign any structure to a set, how can we "pick something up" from that set, while a set is simply a "bag" and no more.
➠ Axiom of Choice
Cannot be satisfied with the simple explaination "Because we defined it, we can choose something from it!", I've searched for the definition of set. The rationale of my dissatisfaction is that if we can choose, then other actions like sorting must be able, but no one allows that, they just give a special allowance to the "choosing" action! Then, at last I've found that the "right to choose" is no more than an axiom! People accept it just because they feel it axiomatic!
➟ Axiom of Separation
Even though there is no axiomatic system for the whole science, but for science to be "clear" and "precise", all scientists presume that "A" and "not A" are always distinct, i.e. we can always separate things into one side and the other side. It sounds self-evident, but if we kick the word "of course" out of our mind, we can see that this separation is no more than an axiom.

Saturday, July 14, 2007

Simple Vs Complex

There are some things look simple but actually very complex, some problems can be simply stated but so complicated to be solved, some games have simple rules and equipment but no simple way to win ;)

Long time ago, when first meeting Chaos, I have had a great impression on the "Fishes in pond" problem; Now, more admiration has been rised in me when I met the Conway's Game of Life and the Go game!

  • Simple forumlae Vs Chaotic results: Logistic map is a very simple model of "Population of fishes in a pond" which is based on only 2 factors
    (1) Reproduction: next year's population ~ this year's population, and
    (2) Starvation: next year's population ~ (pond's limit - this year's population)
    but results in a fantastic chaos!

  • Simple rule set Vs Universal behavior: Conway's Game of Life is a very simple model of "Living population" which is defined by only 4 trivial rules
    (1) Survival: One cell will continue to live if there are 2 or 3 living neighbour cells,
    (2,3) Death: One cell will die if there is less than 2 or more than 3 living neighbour cells (because of isolation/overpopulation), and
    (4) Birth: One cell will be born in an empty square if that square is surrounded by exactly 3 living cells.

    However, with appropriate initial seeds, this population can grow and form various types of "living body". Moreover, this "cellular automaton" is equally powerful as a (2D-tape) Turing machine, thus universal!

  • Simple games Vs Intractable solutions: Go, 圍棋/囲碁, literally "encirclement chess", is one of the oldest board game on earth which is equipped with only a board with many stones of black and white. The play rules are simply about how to "surround the opponent's stones to capture them", which you can learn in minutes, but knowing the rules is nothing about knowing how to play! After a few trials, you will soon discover that there are countless patterns and strategies for players to learn, that the shape of stones on the board is so chaotic and ever-changing, 千変万化, "thiên biến vạn hoá"!!! Moreover, the philosophy of Go is about the whole universe, about the life and death, is about the endless force of the empty, is that "everything is generated from the nothing!" This game, Go, is far more difficult than the common Chess as well as other similar chesses(Xiangqi/象棋, Shogi/将棋):

    - "While the strongest computer chess software has defeated top players (Deep Blue beat the world champion in 1997), the best Go programs routinely lose to talented children." - Wikipedia
    - "While the Baroque rules of Chess could only have been created by humans, the rules of Go are so elegant, organic, and rigorously logical that if intelligent life forms exist elsewhere in the universe, they almost certainly play Go." - Edward Lasker

    This game is actually "A few moments to learn, a lifetime to master!" (Chinese proverb)

Tuesday, April 24, 2007

Led or El-ee-dee? Star or Asterisk?

GUI / G-U-I
LED / L-E-D
char / kar
SeQueL / S-Q-L
.PiNG / .-p-n-g
.wav / (.-w-a-v)
... / ...?

Which spellings are correct? It depends on your society: While Americans spell GUI /gui/, Japaneses spell /dʒi-ju-ai/; While Vietnameses spell LED /led/, Americans spell /el-i-di/; While Vietnameses in general and I in particular and also some Americans spell Char(type) /tʃar/, some others spell /kar/; And so on...

Not only abbreviations, but the symbols(marks) under your fingertips (on your keyboard) are also spelled in many different ways:

Table of Spellings of Symbols on Computer Keyboard
Notes:

SPACE, blank, ghost+
(Khoảng) cách, khoảng trống, khoảng trắng

!
EXCLAMATION MARK, wow+, hey+, bang+, boing+
Chấm than, chấm cảm, chấm nhểu

"
double quote, QUOTATION MARK, dirk+, literal mark+, rabbit ears+
Nháy kép, nháy nháy, ngoặc kép

#
NUMBER SIGN, sharp, (garden) fence, hash+, mesh+, CROSSHATCH, mask, pig-pen, pound sign
Thăng, rào

$
DOLLAR SIGN, buck, milreis+, escudo+
Đô-la

%
PERCENT SIGN, mod+
Phần trăm

&
and, AMPERSAND, andpersand, snowman+


'
QUOTE, single quote, APOSTROPHE, tick, prime, irk+, pop+, spark, glitch+
Nháy (đơn), ngoặc đơn

()
PARENTHESES, parens, round brackets, bananas+, ears+, bowlegs+
Ngoặc (tròn)

(
open paren, LEFT PARENTHESIS, parenthesee+, sad+
Mở ngoặc (tròn)

)
close paren, RIGHT PARENTHESIS, unparenthesee+, already+, wax+, happy+
Đóng ngoặc (tròn)

*
star, ASTERISK, splat+, spider+
Sao, hoa thị

+
PLUS SIGN, plus, add, cross+
Cộng

,
COMMA, tail+
Phẩy, phết

-
MINUS (sign), HYPHEN, dash, negative (sign), worm+
Trừ, gạch ngang, gạch nối

.
dot, PERIOD, spot, full stop
Chấm

/
SLASH, stroke, over, slant+, SOLIDUS+, diagonal+, slat+, slak+
Xuyệc, xược, Xẹt, (gạch) chéo

:
COLON, two-spot, double dot
Hai chấm

;
SEMICOLON, semi, hybrid+
Chấm phẩy, chấm phết

<>
ANGLE BRACKETS, pointy brackets, angles, widgets+, funnels+, brokets+
Ngoặc nhọn

<
LESS-THAN SIGN, open angle (bracket), open tag
Nhỏ (hơn), Mở ngoặc nhọn

>
GREATER-THAN SIGN, close angle (bracket), close tag
Lớn (hơn), Đóng ngoặc nhọn

=
EQUAL SIGN, equal(s)
Bằng

?
QUESTION MARK, whatmark, hook, query+, huh+
(Chấm) hỏi

@
AT SIGN, at, COMMERCIAL AT, whirl, whirlpool, vortex+, cyclone+, snail+, cat+, monkey (tail)+, each+
A vòng, a còng, a móc, a thương mại

[]
BRACKETS, SQUARE BRACKETS, U-turns+, edged parentheses+
Ngoặc vuông

[
LEFT BRACKET, LEFT SQUARE (BRACKET), bracket, bra+
Mở (ngoặc) vuông

]
RIGHT BRACKET, RIGHT SQUARE (BRACKET), unbracket, ket+
Đóng (ngoặc) vuông

\
BACKSLASH, backslant, backwhack+, backslat+, REVERSE SOLIDUS+, reversed virgule+, bash+
Xuyệc ngược, xược ngược, xẹt ngược, sổ ngược, chéo ngược

^
(top)hat, cap, uphat, CIRCUMFLEX (ACCENT), party hat, housetop+, caret, carrot+, hiccup+
, Ô

_
underline, underbar, UNDERSCORE, LOW LINE, flatworm+
Gạch dưới

`
backquote, backprime, GRAVE (ACCENT), unapostrophe, backspark+, birk+, blugle+, backtick, push+, backglitch+, backping+
Huyền, nháy ngược

{}
BRACES, curly braces, squiggly braces+, CURLY BRACKETS, squiggle brackets+
Ngoặc móc

{
LEFT BRACE, LEFT/OPEN CURLY BRACKET, leftit+, embrace+, openbrace
Mở (ngoặc) móc

}
RIGHT BRACE, RIGHT/CLOSE CURLY BRACKET, rytit+, unbrace+, uncurly+, bracelet+
Đóng (ngoặc) móc

|
VERTICAL BAR/LINE, tube, whack+, gutter+, wall+
Gạch đứng

~
TILDE, wave, twiddle, tilda+, tildee+, squiggle+, swung dash+
Ngã, sóng

Monday, April 09, 2007

"Cái USB" ?!

"Cái USB", bạn đã từng nghe hoặc dùng từ này hay chưa? Nó được dùng để chỉ cái... thẻ nhớ con con được cắm vào máy tính qua cổng USB đấy :D

Thật là nực cười khi hầu hết các thiết bị ngoại vi trong hệ thống máy tính của tôi đều được liên kết với máy tính qua cổng USB (thẻ nhớ flash, đĩa cứng ngoài, con chuột, bàn phím, máy in, webcam,...), mà "cái USB" lại chỉ để chỉ có mỗi một cái thẻ nhớ thôi! USB(Universal Serial Bus) vốn là một đường truyền vạn năng (universal) bỗng nhiên lại trở thành... cái thẻ nhớ!

Hẳn không phải là không có lý do để người ta gọi tên sai lầm lệch lạc như thế. Vốn là từ đầu, thẻ flash là thiết bị ngoại vi đầu tiên nối kết với máy tính qua cổng USB, và có lẽ bây giờ ở Việt Nam, đó vẫn là thiết bị USB phổ biến nhất, nên người dân thường, người ngoại đạo vẫn thường "thấy sao gọi vậy". Tuy nhiên, tệ hại hơn nữa là kể cả dân IT, cũng có nhiều người dù biết USB là gì nhưng vẫn cứ vô tình/cố ý gán oan cho nó vào "cái USB"!

- USB: Ôi, oan uổng quá đi thôi! Sao một kẻ vạn năng như ta lại có thể bị gán vào một thằng thẻ nhớ nhỏ nhặt đó được!???
- "Cái USB": Này anh USB, đừng phỉ báng tôi như thế nhé! Đấy là tên gọi quen thuộc nhất của tôi đối với mọi người ở VN đấy. Mà cho dù anh có "vạn năng" hay không thì dân tình cũng có biết gì khác đến anh ngoài việc dùng để cắm "cái USB" này đâu :P

Sunday, January 07, 2007

Số Lớn...

Này, đố bạn hai số lớn sau:
1) "Hằng hà sa số"(恒河沙數) là số mấy, viết theo công thức toán học?
2) Số 1010100 được gọi là gì (từ Âu-Mỹ)?

Trong tiếng Việt, có thể mọi người đã quen dùng "hằng hà sa số" như "muôn vạn" với nghĩa là vô số, mà không mấy ai chú ý dịch nghĩa của từng chữ. Nếu chú ý một tí, ta dễ dàng thấy rằng "Hằng hà" là sông Hằng (Ấn Độ) và "sa số" là số (hạt) cát ("sa" như trong "phù sa", "sa mạc"), nên "Hằng hà sa số" dịch nguyên văn ra là "số cát sông Hằng" vậy! Theo Phật giáo du nhập vào Trung Hoa, từ này còn được dùng để chỉ số 1052 trong hệ thống số lớn tính theo vạn(104) được sử dụng tại Trung Quốc, Nhật Bản, Triều Tiên. Trong hệ thống này, các bội số được tính theo cơ số vạn: vạn = 104, ức = 108 = vạn2, triệu = 1012 = vạn3,... hằng hà sa = 1052 = vạn13.

Ở phương Đông có con số dài đến tận 53 chữ số không, tưởng đã là quá dư thừa, thế mà phương Tây lại còn có con số dài đến độ nếu viết ra thì số chữ số không của nó cả vũ trụ này cũng không thể chứa nổi... 10100 chữ số không! Trên internet, hẳn bạn phải biết đến bác Gú-gồ(Google), và cũng có thể nghe nói đến con số googol có tới 100 chữ số không,... nhưng chắc chưa biết đến con số googolplex = 10googol = 1010100 :D

Saturday, January 06, 2007

Interesting Stuffs about Primes


  • A beautiful prime visualization


    Thanks to Wikipedia, I've just accidentally found the "Number Spiral" view of the primes. It is much more beautiful than my view on the complex plane.

  • Illegal Primes


    Have you known DeCSS? You must know it if you have ever RIPped a DVD :D! If have never heard, you should try this cool stuff whenever you want to watch a DVD bought from Vietnam (region #3) in US(region #1), or to watch a DVD bought from US in Japan(region #2) as I used to do. The DeCSS algorithm is so favourite that people(not only rippers) around the world have contributed lots of representations of that stuff. Among them, there's a type of genuine mathematical representation, the prime number. You can extract the C code of the DeCSS program efdtt.c in 8-bit ASCII encoding from the 1045-digit prime 207401646065301...7791512957, or in 7-bit ASCII from the 914-digit prime 94547005113906...0843081469! You can even get the executable version of that program by converting the 1811-digit prime 49310835970...5452543537 into binary form, then pass a CSS-encripted .VOB file by this program, and receive the deCSSed version of that .VOB!
    These numbers have made the first illegal primes in the world.


__________________________________
Attachments:

/*
* File name : efdtt.c
* Author : Charles M. Hannum
* Thanks to Phil Carmody
* for additional tweaks.
* Original Length: 434 bytes (excluding tables and unnecessary newlines)
* Usage : cat title-key scrambled.vob | efdtt >clear.vob
* Reform : Le Xuan Dinh
* (inserted new-lines, spaces, and tabs)
*
*/

#define a(f) (i[f]^l[f+84])<<

unsigned char i[5], l[2048], m;

main(n)
{
for( read(0,i,5); read(0,l,n=2048); write(1,l,n) )
if(l[m=l[13]%8+20]/16%4 == 1)
{
int
p = a(1)17^256 + a(0)8,
q = a(2)0,
r = a(4)17^a(3)9^q*2 - q%8^8,
u = 0,
w = 26;
for( l[m]-=16; --w; r*=2 )
u = u*2^p&1,
p = p/2^r&1<<24;
for( r=127; ++rm )
w += m=p^p/8^p>>4^p>>12,
p = p>>8^m<<17,
u ^= u>>14,
m = u^u*8^u<<6,
u = u>>8^m<<9,
q = l[r],
q = "7Wo~'G_\216"[q&7] + 2^"cr3sfw6v;*k+>/n."[q>>4]*2^q*257/8,
l[r] = q^(q&q*2&34)*6^w + ~m;
}
}

Thursday, November 16, 2006

Sun Get Changed!

After a long time getting rid of the "unnecessary features" of C++ to make Java more Object-Oriented and more concise, in Java 5 (or version 1.5) Sun has reintroduced those features like Generics (like C++'s template), Enums, and even more with new features getting form other languages like For-Each, Autoboxing, etc.

The Java 5 has been apparently old story, but now, Sun even do more with a new jump over its "company fence" to bring the J2SE implementation to the Open-source community!

Welcome Mr. Sun!

Wednesday, November 09, 2005

Nếu tôi còn sống thì tôi đã chết!

Một lần nữa, quay trở lại với Lô-gíc hình thức và các mâu thuẫn "tự phủ định"!

Bạn thử nghĩ xem mệnh đề sau đây đúng hay sai:

"Nếu tôi còn sống thì tôi đã chết"

(biết rằng "tôi còn sống" = ¬"tôi đã chết")

Chắc hẳn là nó phải Sai, đúng không nào?!
Nhưng bạn thử nghĩ lại một lần nữa xem, có thay đổi quyết định không? ;-)
.
.
.
Bây giờ chúng ta thử dùng lô-gíc hình thức để xem xét nhé.

Đặt
P = "Nếu tôi còn sống thì tôi đã chết"
Q = "Tôi còn sống"

"tôi còn sống" = ¬"tôi đã chết"
Nên
P = Q → ¬Q
Dùng công thức
A→B = ¬A ∨ B
Ta có
P = Q → ¬Q
= ¬Q ∨ ¬Q
= ¬Q
Kết luận
P = ¬Q
= "tôi đã chết"

Vậy mệnh đề này không (hằng)đúng mà cũng không (hằng)sai, nó tương đương với mệnh đề con đơn giản hơn là "tôi đã chết".
Nếu bạn muốn "chơi khăm", có thể làm cho mệnh đề khó hơn bằng cách kéo dài nó ra thành:

"Mệnh đề 'Nếu tôi còn sống thì tôi đã chết' mà sai, thì tôi chết mất!"
(biết rằng "tôi còn sống" = ¬"tôi đã chết" = ¬"tôi chết mất")

Dùng lô-gíc hình thức phân tích thì ta thấy mệnh đề này có dạng:

R = ¬(Q→¬Q) → ¬Q
= Q → ¬Q
= ¬Q

Và theo lý thuyết, bạn có thể kéo dài ra mãi!

Liên tưởng tới Vật lý Lượng tử, ta có thể thấy nó có liên quan đến còn mèo "dở sống dở chết" của Schrödinger(Schrödinger's cat).


Hoặc nghĩ về Lý thuyết Tính trong Tin học, thì ta nhận ra ngay lớp bài toán "không giải được"(bài toán "dừng") nổi tiếng(Halting problem). Tính "không giải được" được chứng minh nhờ luận đề Turing-Church(Turing-Church thesis).

Còn bây giờ thì mình bỗng nhớ lại một bài toán lô-gíc hấp dẫn mà mình đã được học từ hơn chục năm trước (hình như là hồi lớp 5), bài "Treo cổ - Chặt đầu":

Ngày xửa ngày xưa, ở một vương quốc nọ, có một ông vua độc ác cai trị nhân dân một cách tàn nhẫn và bất công khiến cho nhiều người trong nước đó cứ lũ lượt kéo nhau bỏ sang nước khác hết... Thế là ông vua ấy mới ban hành một điều luật thật quái đản vô nhân đạo rằng: "Ai muốn ra ngoài biên giới thì phải nói một câu. Nếu câu ấy Đúng thì sẽ bị Chặt đầu. Còn nếu câu ấy Sai thì sẽ bị Treo cổ." Từ đó, chẳng còn ái dám bén mảng ra ngoài biên giới nữa.
Ông ta tưởng như thế là đã thành công rồi! Nhưng nào ngờ, một ngày kia, có một nhà thông thái vẫn cứ ung dung bước chân ra vùng biên giới.... Lính gác gặp nhà thông thái thì chặn lại bảo: "Ông già ngạo mạn kia, hãy nói một câu xem nào".
--Tới đây, hỡi các nhà thông thái của chúng ta hãy thử nghĩ xem nên nói câu gì nào? :-?-- .............Nhà thông thái không chùn bước, vừa đi vừa nói: "Ta sẽ bị treo cổ!"... Thế là lính gác cùng các quan binh đều phải để cho ông đi. Đem câu đó tâu lên vua, cả triều đình cũng phải... bó tay! :-))

Monday, October 17, 2005

XUL - XML User Interface Language

XUL Project at Mozilla
Wow, thanks to Trung, I've just known about this new lang!
The amazing/confusing point is, that it somehow coincides with my idea of a "discriptive language" for GUI designing: a language for discribing all of the GUI components ("forground") in a style like XML, and has links to the behaviors "background" built in other "normal" programming languages.