March 15, 2006
Also see the QEmu Documentation, Section 3.10 GDB Usage.
March 14, 2006
Differences between OCaml and Standard ML/NJ
· Many small syntactic differences. Hard to say if for better or worse. What is worse however is the very poor parser that will basically tell you that there is a syntax error with no other help to figure out why.
· Mutable records. Very convenient.
· Objects and classes (although the project is not setup to use them)
· Nice assert statement that reports the position in the program of an assertion failure
· Significant differences in the standard library.
· A debugger with backstep capability (works on Unix/Linux only and is integrated with Emacs). You can easily do without this.
· Good integration with C
· Good profiler
· Faster compilation and reasonably fast compiled code
· Not quite as powerful of a compilation manager
· Very portable in its bytecode incarnation. A few platforms (e.g, x86) have native compilers as well. but don't be afraid of using the bytecode. It is only 2-3 times slower than the native code version.
Also see the Comp.Lang.ML FAQ, http://user.it.uu.se/~jenso/programming/sml_vs_ml.txt, and http://www.ps.uni-sb.de/~rossberg/SMLvsOcaml.html for syntactic differences.
March 03, 2006
GCC 4.1 takes security into account
There are a lot cool things going on.
The infrastructure of GCC4 seems to be overhauled to accomodate more aggressive optimizations.
Besides optimization improvements, there are other significant security improvements:
GCC can now emit code for protecting applications from stack-smashing attacks. The protection is realized by buffer overflow detection and reordering of stack variables to avoid pointer corruption.
Some built-in functions have been fortified to protect them against various buffer overflow (and format string) vulnerabilities. Compared to the mudflap bounds checking feature, the safe builtins have far smaller overhead. This means that programs built using safe builtins should not experience any measurable slowdown.
See the files under the directory gcc/doc for more details.
Also see the GCC Wiki pages.
In summary the security improvements come in three parts:
1. An instrumentor that protects every potentially bad pointer access: mudflap
2. An implementation that only protects the stack: propolice
3. To improve performance some safe builtin operations can be used.
HOW-TO: Tune Settings In sysctl.conf
After you make the changes to the file, you can make them effective immediately by typing in /sbin/sysctl -p. You can also set them by echoing the values as root into their paths in /proc/sys.
Also, you will need to issue sysctl -w net.ipv4.route.flush=1 to flush the routing table to make some of these changes happen instantly.
Newer version: http://forum.ev1servers.net/showthread.php?s=&threadid=48880
He feels headache, nausea and vomiting. (他觉得头痛、恶心和想吐。)
He is under the weather. (他不舒服，生病了。)
He began to feel unusually tired. (他感到反常的疲倦。)
He feels light-headed. (他觉得头晕。)
She has been shut-in for a few days. (她生病在家几天了。)
Her head is pounding. (她头痛。)
His symptoms include loss of appetite, weight loss, excessive fatigue, fever and chills. (他的症状包括没有食欲、体重减轻、非常疲倦、发烧和发冷。)
He feels exhausted or fatigued most of the time. (他大部份时间都觉得非常疲倦。)
He has been lacking in energy for some time. (他感到虚弱有段时间了。)
He feels drowsy, dizzy and nauseated. (他觉得昏昏欲睡，头晕目眩和想吐。)
He feels as though everything around him is spinning. (他感到周围的东西都在打转。)
He has noticed some loss of hearing. (他发觉听力差些。)
She has some pains and itching around her eyes. (她眼睛四周又痛又痒。)
He has been coughing up rusty or greenish-yellow phlegm. (他咳嗽带有绿黄色的痰。)
His eyes feel itchy and he has been sneezing. (他眼睛发痒，而且一直在打喷嚏。)
He has a fever, aching muscles and hacking cough. (他有发烧，筋骨酸痛和常常咳嗽。) (hacking = constant)
He coughed with sputum and feeling of malaise. (他咳嗽有浓痰，而且觉得很虚弱。) (malaise = debility)
He gets a cold with a deep hacking cough. (他伤风咳嗽。)
He has a headache, aching bones and joints. (他头痛，骨头、关节也痛。)
He has a persistent cough. (他不停地在咳。) 或
He has bouts of uncontrollable coughing. (他一阵阵的咳嗽，难以控制。)
He has hoarse and has lost his voice sometimes. (他声音嘶哑，有时失声。)
He has a sore throat and a stuffy nose. (他嗓子疼痛而且鼻子不通。)
His breathing is harsh and wheezy. (他呼吸时，有气喘似的呼哧呼哧作响。)
He has a stabbing pain that comes on suddenly in one or both temples. (有时突然间太阳穴刺痛。)
He has a runny nose, sneezing or a scratchy throat. (他流鼻水，打喷嚏和喉咙沙哑。)
She has noticed one lump in her breast. (她发觉乳房有个肿块。)
There is a hard, swollen lump on her right breast. (她右乳房有肿块。)
Her left breast is painful and swollen. (她左乳房疼痛且肿大。)
She has heavy bleeding with her periods. (她月经来的很多。)
Her vaginal discharge is white or greenish-yellow and unpleasant smelling. (她阴道分泌物带白色或绿黄色，而且气味不好。)
She has noticed occasional spotting of blood between periods. (在月经来的前后，她有时也发觉有滴滴达达的流血。)
She has some bleeding after intercourse. (性交后有出血。)
She feels some vaginal itching. (她感到阴部发痒。)
She has painful periods and abnormal vaginal discharge. (她月经来时疼痛，而且阴道有不正常的分泌物。)
His both hands and feet ache all over. (他两手两脚都很酸痛。)
He has pain on the sole of his feet. (他脚底很痛。)
There is a wart-like lump on the sole of right foot. (我右脚底有个像肉疣般的硬块。)
His ankles look puffy and they pit when he presses them with his finger. (他的足踝好象肿了，用手按，就有小坑痕。) (pit = small dent form)
(句里的 they 和 them 都是指 ankles)
The pain in his left foot is accompanied by redness and swelling. (左脚酸痛，并有红肿。)
The joints near his fingernails and knuckles look swollen. (指头和指节旁边的关节，似乎有肿大。)
He has numbness and tingling in his hands and fingers. (他的手和指头感到麻木和刺痛。)
His legs become painful following strenuous exercise. (激烈动后，他的腿就痛。)
His knee is misshapen or unable to move. (他的膝盖有点畸形，也不能动。)
There are some swellings in his armpit. (他的腋窝肿大。)
He is troubled with painful muscles and joints. (他的筋骨和关节都痛。)
She is troubled by the pains in the back and shoulders. (她的后背和肩膀都痛。)
His knee has been bothering him for some time. (他的膝盖不舒服，已有一段时间了。)
He is sleeping poorly.（他睡不好）
He has difficulty in sleeping, inability to concentrate.（他不易入睡，也难集中精神。）
It is usually hard for her to fall asleep when she goes to bed at night.（她晚上就寝，很难入睡。）
He wakes during the night or early morning and finds it difficult to fall asleep again.（他晚间或清早醒来后，再也不能入睡。）
He has nightmares occasionally.（他有时做噩梦。）
He urinates more frequently than usual.（他小便比平时多。）
He has difficulty controlling his bladder.（他很难控制小便。）(bladder 是膀胱)
There are some lumps on his testicles. （他的睪丸有些硬块。）
He has had burning or pain when he urinates.（他小便时感到发烫和疼痛。）
He is passing less urine than usual.（他小便比平时少。）
He has had painless swelling in his scrotum.（他的阴囊有不痛的肿大。）
He feels lack of interest in sex.（他自觉对性的兴趣大减。）
He has difficulty starting his urine flow.（他小便不畅通。）
His urine stream is very weak and slow.（他小便流动得很慢很弱。）
He dribbles a little urine after he has finished urinating.（他小便后，还会有少量零星地滴下。）
He has had some discharge from his penis.（他的阴茎排出一些流脓。）
His urine is cloudy and it smells strong.（他的小便混浊，而且气味不好。）
He has a dull heavy ache in the crotch.（他的胯部感到隐痛。）
He has a small leakage of urine when he coughs or sneezes.（他咳嗽或打喷嚏时，会有点泄尿。）
He has trouble urinating.（他小便有困难。）
His breathing has become increasingly difficult.（他呼吸越来越困难。）
He has to breathe through his mouth.（他要用口呼吸。）
He is short of breath, even when he has not been exercising, he is breathless.（他喘气；即使不?#092;\动，他也是上气不接下气。）
His cough is more like wheezing.（他的咳嗽有呼哧呼哧的响声。）
His cough is dry, producing no phlegm.（他是干咳，没有痰。）
He has coughed up blood.（他咳嗽有血。）
His nose stuffed up when he had a cold.（他感冒时鼻子就不通。）
He coughs up a lot of phlegm (thick spit) on most days.（他多半时间咳出浓浓的痰。）
He has a feeling of tightness in the chest or a feeling that he is suffocating.（他胸部觉得闷闷的，好象透不过气来。）
He has pain in his teeth or jaw. (他的牙齿和下巴疼痛。)
He has some problems with his teeth. (他牙齿有问题。)
The tooth hurts only when he bites down on it. (他咬东西时，牙齿就痛。)
His gums are red and swollen. (他的牙床红肿。)
His tongue is red and sore all over. (他的舌头到处红和痛。)
His breath smells bad and he has a foul taste in his mouth. (他口里有怪味。)
His gums do bleed. (他牙床有出血。)
He has some sore swellings on his gum or jaw. (他的牙床和下巴肿痛。)
He has sore places on or around the lip. (他的嘴唇和周围都很痛。)
There are cracks at the corners of his mouth. (他的嘴巴角落破了。)
There are some discolored areas inside on his tongue. (他舌头里边有些地方颜色怪怪的。)
He has a bloated, uncomfortable feeling after meal. (他饭后肚子觉得胀胀的，很不舒服。) 或
He feels bloated after eating.
He has bouts of abdominal pain. (他有一阵阵的肚痛。)
He feels bloated in his abdominal area. (他感到肚子胀胀的。)
(注：胀胀的，像「puff up」，但不是真正的肿「swell up」。)
The pain is mainly in the lower (upper) right part of the abdomen. (痛是在肚子下半部。)
He has nausea and vomiting. (他有恶心和呕吐。)
It is difficult or painful for him to swallow. (他吞下食物时会痛。)
He has passed more gas than usual. (他放…比平常多。)
He has been constipated for a few days. (他便秘了好几天。)
He suffers pains when he moves his bowels. (他大便时很痛。)
He has some bleeding from his rectum. (他的肛门出血。)
He has noticed some blood in his bowel movements. (他发觉大便时有些血。)
His bowel movements are pale, greasy and foul smelling. (他大便呈灰白色，含油脂的恶臭。) 或
His bowel movements are grey (or black) in color. (他的大便呈灰白色。)
He has trouble with diarrhea. (他拉肚子。)
His blood pressure is really up. (他的血压很高。)
High blood pressure is creeping up on him.
He has noticed frequent urination, increased thirst and unexpected tireness. (他发觉常常小便，非常口渴和更加疲倦。)
It is a chest pain that gets worse when he bends over or lies down. (他弯腰或躺下时，胸部更痛。)
He has noticed excessive sweating and unexplained tireness. (他体会到过度的出汗和难以解释的疲倦。)
He has a sharp pain in one area of his spine. (他的脊椎某部位刺痛。)
He has pain in other joints including hip, knee and ankle. (其它关节疼痛包括臀部、膝盖和脚踝。)
His eyes seem to be bulging. (他的眼睛觉得有点肿胀。)
He has double vision. (他的视线有双重影子。)
He feels there is a film over his eyes. (他觉得眼里有种薄膜似的东西，挡住视线。)
His vision in the right eye blurred. (他右眼视线模糊不清。)
He has had some earaches lately. (他近来耳朵有点痛。)
He has a repeated buzzing or other noises in his ears. (他耳朵常有嗡嗡的声音。)
March 01, 2006
The compile error "invalid option `tune=pentium4'"
Note that this error doesn't necessarily relate to perl.
Ken Gillett wrote:
> [root [at] neXus mod_perl]# make
> cd "src/modules/perl" && make
> make: Entering directory `/usr/src/mod_perl-2.0.0-RC3/src/modules/perl'
> gcc -I/usr/src/mod_perl-2.0.0-RC3/src/modules/perl
> -D_SVID_SOURCE -O2 -g -pipe -m32 -march=i386 -mtune=pentium4 -fPIC \
> -c mod_perl.c && mv mod_perl.o mod_perl.lo
> cc1: invalid option `tune=pentium4'
that means that your perl wasn't built with the same gcc that you've on
your machine. It's your perl that suggests modperl to use -mtune=pentium
as you can see:
> config_args='-des -Doptimize=-O2 -g -pipe -m32 -march=i386
> -mtune=pentium4 -Dversion=5.8.5 -Dmyh
rebuild perl using the compiler you have on *your* machine and then return
on the modperl build process and you will be fine.
February 27, 2006
Redefining key binding of Screen to avoid conflicts with Emacs
Also see the Customize Section of the Screen manual.
February 25, 2006
Then there're some people at Redhat that developed the kernel auditing subsystem.
And some user space utilities released with SELinux, RHEL & Fedora Core:
A third party patch that looks to have nice UI:
February 22, 2006
Some access control stuffs
February 17, 2006
Paper accepted to VEE '06
This is my first English paper, and attending PLDI will get me chances to talk to a lot of cool PL people, isn't that sweet?
According to Michał Cierniak, VEE is the result of merging the USENIX VM Symposium and the ACM SIGPLAN IVME Workshop. VEE '06 is just the second gathering.
February 01, 2006
Comments on English writing
English is hard, life is harder..
CS655 is a super cool class taught by an awesome young prof.
It is perfectly legal to use primes (') in ocaml variable names.
Below is his attitude on homework:
Homework itself isn't a big deal in grad classes. I don't care about the homework for its own sake. I do care about you all learning how to recognize PL research techniques and apply them to your own work. The project matters much more, especially since it's closer to the actual process of doing research and submitting papers.
Some of you may have been surprised at my obnoxious pickiness for English prose details in the formal written part of the homework. I graded those parts as I would review a conference submission. I realize that English is not everyone's first language and that formal writing in a foreign tongue is difficult (if you want a laugh and you know one of these languages, ask me to say something non-trivial in French, Latin or Japanese -- I'm abysmal). Actually, my first-draft English isn't so hot either -- bonus points if I make a mistake while claiming to correct one of yours.
However, we publish in English venues, TA in English, present our work in English at conferences, and network in conferences in English (well, most of the time). I believe that anything I can do to give you a bit more practice with formal English will be a boost to your later research career.
Sad but true: people will often conflate the clarity of your prose with the brilliance of your ideas.
And my sad story goes:
Book Hoare Set Div LetOp LetHR Interp Ex
Hu, Wei 1 1/3 2 2 2 2- 5 1
HW1 Grade: 16/18
> Most of the design principles are still valid today after software >
> engineering is better understood, and software乫s security has received
> more and more attention.
You should start by mentioning Hoare's name or his article's name. Swap the order of your first and second sentences. Then change this one to something
"Most of his design principles are still valid today, despite many advances in software engineering and security."
> Simplicity is emphasized as the first principle.
Avoid the passive voice. "Hoare's first programming language design principle is simplicity."
> As mentioned in the class, a complex language feature has the risk
> that implementations can not get it right.
"As mentioned in the class, a complex language feature carries the risk that implementations may not get it right."
> Even if a programmer could manage to work when he only understands
> parts of the language, he would get into trouble when an unknown
> feature is accidentally triggered.
Putting "programmers" in the plural avoids he/she problems.
"Programmers that only understand parts of a complex language will run into difficulties when their programs make use of misunderstood language features."
> That is exactly why my favorite language is Scheme, whose syntax is
> elegantly simple.
Scheme isn't a person, so "whose" will sound strange to some readers.
"Such arguments about complexity explain why Scheme, with its elegantly simple syntax, is my favorite language."
> It is also glorious that Hoare noticed the importance of security at
> that time, although his description is not close to today乫s security
"Glorious" is a bit too "showy" or "flashy" for this kind of writing.
"It is also remarkable that Hoare noticed the importance of security so long ago, even though his description is not perfectly aligned with today's primary security concerns."
> I would say Hoare乫s argument on fast translation is wrong.
"I disagree with Hoare's argument about fast translation."
> He thought independent
We don't actually know this. When you refer to the position of another researcher you should always use phrases like "He claimed" or "He suggested". You never want to claim that Hoare (or anyone else) is "wrong"
or "stupid" -- you want to claim that his ideas, conjectures or positions are wrong.
> He thought independent compilation was a poor technique that would
> encourage a programmer to split a large program into very small modules.
"He argued that independent compilation was a poor technique because it would encourage programmers to split large programs into very small modules."
> Also separate compilation is a technique that is used in all large
> programs nowadays.
Avoid starting a sentence with "also". Avoid "nowadays" in formal writing.
Finally, avoid sweeping generalizations.
"Separate compilation is used successfully in almost all modern software development."
Your writeup does not feature a conclusion or summary -- even a single sentence would go a long way towards wrapping it up.
Your ideas are fine, but your English presentation could use some polish.
Consider asking someone else to proofread your prose. One of the goals in this class is to help you write research papers. Much of writing a research paper is having a good idea and backing it up with proofs or experiments.
However, the clarity of your English writing is also a large determining factor. In particular, a submitted paper written in the same manner as your answer to Problem 2 would probably be rejected regardless of its intellectual merit. I realize that often you end up writing papers in a group and that someone else can be delegated to do a final pass over the text and fix up the grammar. However, a some point in your research career (e.g., when you are a new professor or new research staff member) you will have to write papers on your own. I am interested in helping you obtain a more natural grasp of English (that's one of the reasons why I included concrete examples for how you would fix things up) -- feel free to stop by my office with questions about phrasing or grammar or whatnot, even if they aren't related to 655.
January 10, 2006
Installing and Using CiteMaker
CiteMaker is a bibliography generation system for Adobe FrameMaker based on the BibTeX bibliography tool.
The installer for Windows only works for Frame 5, so I had to manually fix a few things in order for it to work for Frame 7.
Install CiteMaker although it won't show up as it should.
In your personal copy of maker.ini, add these lines:
Now you are good to go.
January 02, 2006
Free online file storage/sending comparison
December 22, 2005
libjingle is a library made by Google that extends the Jabber protocol to support voice calls.
Now google is releasing the library and this opens the door for open source IMs, what a great job!
As I've messed with Psi before, I checked out Psi's website and happily found they're porting libjingle to psi!
Here is the steps to build the software:
1. darcs get --partial --set-scripts-executable http://dev.psi-im.org/darcs/psi-jingle
2. sudo yum install speex
3. build qca manually, or use yum.
3. sudo yum install qca-tls
(If you decide to build qca manually, it's a little trickier because "make install" doesn't do anything, you have to copy the library to the correct plugin path of QT.)
4. build ortp-0.7.1 manually, you have to use this version.
5. configure psi correctly:
./configure --with-glib-inc=/usr/include/glib-2.0 --with-glibconfig-inc=/usr/lib/glib-2.0/include/ --with-ortp-lib=/usr/local/lib/ --with-ortp-inc=/usr/local/include/ --with-speex-inc=/usr/include/ --with-speex-lib=/user/lib --enable-jingle --with-qca-inc=/home/wh5a/qca-1.0/src/ --with-qca-lib=/home/wh5a/qca-1.0/
See my snapshot:
By the way I'm using Xming as the X server under Windows, thanks to nofog.
December 20, 2005
Upgrading to Fedora Core 4
Today I decided to upgrade my FC2 to FC4.
Yes, I know, FC sucks, but the department installed it for me, so why bother switch to Debian?
As said in the FAQ, yum can be used to upgrade FC, but anaconda is recommended to perform a clean upgrade.
So I installed anaconda but got some errors when I attempted to run it directly. True, it has some docs coming with it under /usr/share/doc/..., however they are not quite clear or accurate. Luckily enough, anconda is written in Python and I managed to understand how to feed it correct arguments, that's enough, isn't it?
So here it goes:
/usr/sbin/anaconda --text --method=http://mirror.linux.duke.edu/pub/fedora/linux/core/4/i386/os/ --rootpath=/
I'm using SSH to upgrade remotely, so I chose to use the text interface.
http://mirror.linux.duke.edu/pub/fedora/linux/core/4/i386/os/ is a mirror I found on the FC's official website. It seems that my anaconda is so old that it was looking for the list under the directory RedHat/base/hdlist, but I hacked /usr/lib/anaconda/product.py to fix it.
Now it's installing, I'm crossing my fingers that my hack will work. I didn't find very useful docs on FC's website, that's another reason I hate FC.
Another issue：每次升级的时候总是找fc5-test1的包，然后就装不上，我试图在配置文件里面设置releasever=4也不行，只好把指定包的位置的那一行hardcode成Fedora 4的。
December 13, 2005
how "size" works
I'm talking about the utility "size" of binutils-2.16.1.
It's confusing that it can display the size of a binary in two formats:
System V size (--format=sysv), or Berkeley size (--format=berkeley, the default option).
The sysv format is easier to understand, the output is basically the same as that of "readelf -S": the size of every section is listed.
However berkeley format is more useful when you measure the size of data, code, and bss. Then it comes to the problem how you sum up those sections?
Check out the function berkeley_sum and you'll understand how datasize, bsssize, and textsize are calculated:
berkeley_sum (bfd *abfd ATTRIBUTE_UNUSED, sec_ptr sec,
void *ignore ATTRIBUTE_UNUSED)
flags = bfd_get_section_flags (abfd, sec);
if ((flags & SEC_ALLOC) == 0)
size = bfd_get_section_size (sec);
if ((flags & SEC_CODE) != 0 || (flags & SEC_READONLY) != 0)
textsize += size;
else if ((flags & SEC_HAS_CONTENTS) != 0)
datasize += size;
bsssize += size;
bfd is documented here.
#define bfd_get_section_flags(bfd, sec_ptr ptr) ((ptr)->flags + 0)
typedef struct bfd_section *sec_ptr;
Hmm, this is still too confusing.
Well, I created a utility to dump all the sections: size
December 10, 2005
December 05, 2005
CVS across Firewall
Out of all the search results I got, this one is the most helpful.
1. monolith is the gateway, and all pri machines can not connect to the internet directly.
2. aho runs the CVS server that I want to connect to.
1. On monolith, run below to establish a SSH tunnel:
ssh -g -f monolith -L 10000:aho.zephyr-software.com:22 sleep 7200000
2. On pri-035, make a ~/.ssh/config file that contains below:
3. Add lines below to .bash_profile on pri-035:
4. Now in some directory, you can check out Strata:
cvs co strata
Isn't it cool?
December 03, 2005
Some English Expressions
When someone's relative passed away, you can "offer your sympathy" to him.
Tell her Hi for me! means you want someone to 代你问好.
November 27, 2005
1.You have matches
最近我有一次机会登上一艘豪华游轮观光。一次, 我在酒吧台拿了两杯鸡尾酒回房间享受，途中遇到一位女士，她看看我后笑着说：“You have matches？”我一楞，回答说：“很抱歉，我十五年前就戒烟了，所以没有火柴。”她立刻会意到我误解了她的意思，好像是有点抱歉的说：“It's a joke.” 然后，我们就相互尴尬的笑了笑，走开了。
5.You are in for a treat！
这天，同事们正在讨论为我和 Rhonda 开生日 party的事情，为了尊重寿星，大家让Rhonda 和我选择一家中意的餐厅。Rhonda建议去镇上一家叫做BBQ 的美国餐厅。我从来没有去过那里，于是就问她那里有什么特色。Rhonda便开始滔滔不绝的介绍他们的招牌菜，听得我十指大动，直咽口水，Rhonda便笑着说: "You are in for a treat !"
我愣了一下，以为Rhonda要请我去那里吃饭，心里十分不好意思，试探着问过她之后，Rhonda 笑着解释说: "You are in for a treat means you'll like it !"
意大利是欧洲第一个吃面食的国家。十三世纪时马可波罗从中国传去制面食方法后，大受欢迎，特别是实心意粉spaghetti，以其容易烹调，可以配上各种佐料， 很快就风行全国。不过那时没有刀叉可用，因此吃的都是无汤汁的实心意粉，便于用手抓送入口。现在的肉汁意粉（spaghetti with meat sauce），是后来才出现的吃法。当然，马可波罗当年在中国也吃过我们的牛肉汤面或者排骨汤面。但是有汤的spaghetti乃至以之作汤的spaghetti soup，全是后来出现的意粉吃法。
Spaghetti一词源于意大利语spago，意思是一条线。一条意粉是spaghetto，通常用复数的spaghetti。意粉一碟，面条杂乱，因此车辆往来多，交通混乱的街口称为 spaghetti junction。
11.Speaking of the devil
几个同学聚到一起聊天，大家都到齐了，唯独不见Wayne。其中一个说"今天好象没见到Wayne"，另一个接着说"他的女儿放暑假，东西要从宿舍里搬出来，他大概帮忙去了"。正说着，只见Wayne从外面走过来。Joe于是说"speaking of the devil"。几个人乐了起来。我心想Wayne 这个人平常挺老实的，为什么说他是devil呢？于是我悄悄地去问Joe。
原来"speaking of the devil"是一条成语，相当于中文的"说曹操，曹操到"。也就是刚说Wayne 不在，结果他就来了。我不禁惊诧于语言的共通性，因为曹操不是也有"奸雄"的称号吗？中英文在这一成语上有着这样惊人的异曲同工之处。
15.Throw the book at Somebody
先生答曰：结果是"They threw the book at him"。我不禁诧异，想像着他被"砸书"的样子。原来并非如此，"Throw the book at somebody"是指给某人最大极限的惩罚：charge someone to the full range of law。如果法律是一本书，那么这本书中所有被违犯了的条例，他都将为之遭受最严重的惩罚。
21.Put somebody to sleep
我去洗衣服的时候，通常会路过隔壁德国老太太的门口，她开门出来打招呼。她由于单身一个人，非常孤独，看见我女儿会"Honey(宝贝)长，Honey短的"。一个周日的晚上,她见到我, 便问："Where is your little girl? I did not see her today." 我答说："Oh,I just put her to sleep."她听罢，突然惊叫起来，"Ashley(我的名字),What did you say?"
不等她说完，我立即意识到我说了一句天大的错话。我马上补充说："I am sorry.I mean that I just put her to bed."(我的意思是我刚哄她入睡了)。
英语中"put somebody to sleep"是指终止某人生命（right？），是一种委婉的表达,也可以用作"(为动手术而用麻醉剂)使人失去知觉"的意思。常听老美说："Oh,I had to put my dog to sleep. He suffered too much from his sickness"(我只好让我的狗安息，它饱受病痛的折磨!)
退休的刘教授同几位友人去 Town Hall Buffet 用餐，这是一家自助餐馆。席间，他兴高采烈地端来一杯饮料，说："这里还有啤酒呢！"说罢一饮而尽。"咦，怎么是甜的，一点啤酒的味道也没有？"
别人听了以后，无不捧腹大笑。刘公见状颇为纳闷，不知就里。后有一人问道："你刚才倒的不是 root beer吗？" 他才醒悟过来。
draught beer 是生啤，black beer 是黑啤，light beer 是淡啤，而 root beer 则与啤酒无关，是一种由植物根部酿造的可乐一类的饮料。
37.I'm in the dark
那天是先生的同事 John 的订婚宴，我们应邀赴宴。见到John和他的未婚妻，我们由衷祝福。先生还和 John 聊了一会，说着这两天的新鲜事，只听 John 说: “I am in the dark.”。
回程路上，向先生说起对 John 的看法，这才歪打正着，又学一招。in the dark，不是指消级、心里灰暗。John 当时那么说，表示他对先生所说的事一无所知。
所以确切地说，那天 in the dark 的是我。
November 22, 2005
阴、阳 yin, yang
道 Dao（cf. logo）
江湖（世界） the jianghu World （the traits' world）
e.g. You can't control everything in a traits' world. (人在江湖，身不由己)
上火 excessive internal heat
世外桃源 Shangri-la or Arcadia
开放 kaifang （Chinese openness to the outside world）
大锅饭 getting an equal share regardless of the work done
伤痕文学 scar literature or the literature of the wounded
不搞一刀切 no imposing uniformity on …
合乎国情，顺乎民意 to conform with the national conditions and the will of the people
乱摊派，乱收费 imposition of arbitrary quotas and service charge
铁交椅 iron (lifetime) post's; guaranteed leading post
脱贫 to shake off poverty; anti-poverty
治则兴，乱则衰 Order leads to prosperity and chaos to decline
2 、中华民族的喜庆节日（Chinese Festivial）
国庆节 National Day
中秋节 Mia-Autumn Festival
春节 Spring Festival
元宵节 Lantern Festival
儿童节 Children's Day
端午节 Dragon Boat Festival
妇女节 Women's Day
泼水节 Water-Splashing Day
教师节 Teachers' Day
五四青年节 Youth Day
3、中国独特的传统饮食（Unique Traditional Chinese Foods）
锅贴 guotie (fried jiaozi)
花卷 steamed twisted rolls
套餐 set meal
盒饭 box lunch; Chinese take-away
米豆腐 rice tofu
魔芋豆腐 konjak tofu
米粉 rice noodles
冰糖葫芦 a stick of sugar-coated haws (or apples,etc.)
火锅 chafing dish
八宝饭 eight-treasure rice pudding
粉丝 glass noodles
豆腐脑 jellied bean curd
4 、中国新兴事物（Newly Sprouted Things）
中国电信 China Telecom
中国移动 China Mobile
十五计划 the 10th Five-Year Plan
三峡工程 the Three Gorges Project
希望工程 Project Hope
京九铁路 Beijing CKowloon Railway
扶贫工程 Anti-Poverty Project
菜篮子工程 Vegetable Basket Project
温饱工程 Decent-Life Project
安居工程 Economy Housing Project
扫黄 Porn-Purging Campaign
西部大开发 Go-West Campaign
禅宗 Zen Buddhism
禅 dhyana; dhgaya
道 Daosim, the way and its power
四谛 Four Noble Truth
八正道 Eightfold Path
五行说 Theory of Five Elements
坐禅 metta or transcendental meditation
双喜 double happiness(中)，a doubled stroke of luck(英)
小品 witty skits
噱头；掉包袱 gimmick, stunt
夜猫子 night people; night-owls
本命年 this animal year of sb.
处世之道 philosophy of life
姻缘 yinyuan（prefixed fate of marriage）
还愿 redeem a wish (vows)
大陆中国 Mainland China
红宝书 little red book
红色中国 socialist China
四化 Four Modernizations
铁饭碗 iron rice bowl
大锅饭 communal pot
关系户 closely-related units
外出打工人员 migrant workers
关系网 personal nets, closely-knitted guild
五讲(讲文明、讲礼貌、讲卫生、讲秩序、讲道德)：the Five Merits focus on decorum, manners, hygiene, disciplines and morals
四美（心灵美、语言美、行为美、环境美）： the Four Virtues are golden heart, refined language, civilized behavior, and green environment
7 、中国古代独特事物（Unique Ancient Chinese Items）
宣纸 rice paper
武术 wushu（Chinese Martial Arts）
功夫 kungfu ；kung fu
中庸 the way of medium （cf. Golden Means）
中和 harmony (zhonghe)
孝顺 to show filial obedience
孝子 dutiful son
家长 family head
three cardinal guides: ruler guides subject, father guides son husband guides wife
five constant virtues: benevolence (humanity), righteousness, propriety, wisdom and fidelity
八股文 eight-legged essays
多子多福：The more sons/children, the more blessing/ great happiness
养儿防老：raising sons to support one in one's old age
基层监督 grass-roots supervision
基础税率 base tariff level
婚介所 matrimonial agency
婚外恋 extramarital love
婚纱摄影 bride photo
黑心棉 shoddy cotton
机器阅卷 machine scoring
即开型奖券 scratch-open ticket/lottery
集中精力把经济建设搞上去 go all out for economic development
价格听证会 public price hearings
甲A球队 Division A Soccer Team
家政服务 household management service
加强舆论监督 ensure the correct orientation is maintained in public opinion
假帐 accounting fraud
叫板 challenge; pick a quarrel
矫情 use lame arguments
渐进式台独 gradual Taiwan independence
借调 temporarily transfer
扩大中等收入者比重 Raise the proportion of the middle-income group.
扩大内需，刺激消费expand domestic demand and consumption
November 14, 2005
Jabber, Psi, Qt...
I learned a lot through the "Secure Instant Messaging" project.
I documented what I learned in the project report, which may be helpful to others.
Don't blame me for silly mistakes. I'm sure there are a lot.
But the thing is I learned a lot and I want to share.
Time and energy is limited, so the report only documents my naive understanding.
Who knows, maybe I'll volunteer as a Psi developer? Hahah.
November 07, 2005
Hacking Google cookies and Google Print
November 04, 2005
An awesome blog
He is a professor working in the Theoretical Computer Science area.
His blog is fun to read.
Also look to the right of the page, you'll see a wonderful collection of CS-related blogs.
November 02, 2005
Useful Linux Tools
CDargs: CDargs has two basic modes of operation. One is the shell browser that allows you to navigate using a text menu; the other uses the shell builtin cdb and your bookmarks. For example, instead of having to type cd /var/www/website/cgi-bin, you can create a bookmark for the directory called "cg" (or whatever you prefer) and use cdb cg. This utility has saved me many a keystroke over the years.
abcde: CD to MP3
Checkinstall: For those cases, I use CheckInstall to simplify creating a package. CheckInstall lets me create an RPM, Debian package, or Slackware package almost as easily as compiling software from source. Instead of running ./configure; make; make install I just run ./configure; make; checkinstall.
November 01, 2005
Intrusion Detection System used at CS@UVA
October 21, 2005
google-kongulo is what I want
This plugin for Google Desktop Search is a simple web spider (Könguló is Icelandic for spider) that crawls websites you specify, e.g. intranet websites, and dumps them into Google Desktop Search so that you will see results from them when you perform a desktop search, and can browse their contents offline via GDS's cache.
I may go on and tweak it a bit so that I can manage my bookmark effectively. But who knows, I'm busy, I avoid programming as much as I can, and I don't have much knowledge of web programming.
October 16, 2005
A Comparison of Solaris, Linux, and FreeBSD Kernels
October 11, 2005
Recursive Descendent Parser by hand vs. Parser Generator
Excerpted from Stanford's Year 2000 Quals on compiler.
Just for fun.
pros of descendent parser:
When grammar is simple.
Great flexibility. Look ahead more than one symbol or use other information.
Flexible and understandable error recovery.
pros of parser generator:
Easier, automatic parser construction.
LALR(1) more powerful than LL(1).
The CFG is more readable.
Parser likely to be faster.
September 24, 2005
Psi on Windows
To enable debugging, there's a line in src/src.pro:
CONFIG += debug
Then if you look into Makefile, you'll see debug options like -Zi, -MDd, etc.
After you build the executable, you can run it and then use VS to attach to it.
However notice that msvcr71d.dll is said to be not freely redistributable.
In fact if you want to know more about how qmake works, you may look at %QTDIR%/mkspecs/win32-msvc.net/qmake.conf
Finally, to debug the Jabber protocol, you may install Exodus and check Tools->Show Debug XML.
Psi used to have that function according to ChangLog, but I don't know why they removed it again.
And if you want to edit the psi's .ui files in QT designer, you can edit libpsi/psiwidgets/psiwidgets.pro, and uncomment the two lines.
Or copy the output dll to the plugins directory.
August 13, 2005
For the signal handling issue, I'm going to rewritten the function intercept_signal in strata/src/posix/signal.c so that Strata will not stratify itself and crashes.
For the ammp issue, the size of main function is one byte less than the multiple of 16 bytes, and the linker will insert a NOP to align it. However Diablo assumes that byte is data and doesn't do the tagging. That's why the program crashes.
This really is a problem, 'coz alignment may occur often.
August 11, 2005
samba issues -- continued
My work always have problems when programs are being shut down.
To handle them I used some ugly hacks that I hate to describe.
In the source code of smbd, it will register exit_server to be called at exit time (in order to do some clean up work and reclaim children). If running in interactive mode, it will handle the request by itself and then call exit_server. exit_server will do different work based on it's called the first time or not. If running in daemon mode, smbd will not call exit_server directly, but forks a child and then exit. The child then call select and block. After receiving a request, it handles the request, fork a child and then call exit_server.
In order to prevent exit_server from being registered, you need to undef the macro HAVE_ATEXIT, or simply comment out the block from server.c
For such kind of programs like smbd and ghttpd, we have to disable the SIGCHILD (or SIGCLD, A synonym for SIGCHLD) signal handler. It really sucks.
August 05, 2005
When you want to set some variable, sometimes you don't have to hack configure.in, or Makefile.in.
You may set environment variables, such as
PATH=/usr/local/toolchain-isr/bin/:$PATH CFLAGS="-I /home/wh5a/strata/include/ -DHAVE_INITGROUPS" LDFLAGS="-static -lstrata -lc_strata -lc -lnss_files -lnss_dns -lresolv -L /home/wh5a/strata/lib/x86_linux" ./configure --with-codepagedir=/usr/share/samba/codepages/ --with-configdir=/etc/samba --with-syslog --with-logfilebase=/var/log/samba/ --disable-windbind [--enable-debug]
If you build samba from source, you need to configure it carefully, otherwise smbd quits silently without giving any error message.
I used ./configure --enable-debug in order to use gdb to debug it. But after playing a while with it, I realized I should use interactive mode. When you run smbd, give it the -i option and now you'll get all the error messages you need.
The location of many configuration files are determined at compile time and you can't set it later. Be careful when you run config. Use interactive mode to debug.
August 02, 2005
1. Samba Buffer Overflow
Called StrnCpy uncarefully.
I'm working on samba-2.2.3a, if you check out samba-2.2.8a, you'll see StrnCpy is replaced by pstrcpy.
2. CVS Double Free Bug
The CVS server component contains a "double-free" vulnerability that can be triggered by a set of specially crafted directory change requests. While processing these requests, an error checking routine may attempt to free() the same memory reference more than once. Deallocating the already freed memory can lead to heap corruption, which may be leveraged by an attacker to execute arbitrary code.
The impact is most severe when running
the CVS server in `pserver' mode to provide read-only access to the
I'm working on cvs-1.11.1p1, it's not available from the official site though. But if you do a search, you can find an rpm package easily.
July 29, 2005
Running Windows with No Services
Saw this from a /.-like site: slashdotcn.org
July 19, 2005
In order to know the command line of a process, one can open /proc/pid/cmdline. If a program needs to know its own command line, it can read from /proc/self/cmdline.
The file contains null-terminated strings of the command line.
For example, if you run "./a.out 33 44", the file will be
. / a . o u t \0 3 3 \0 4 4 \0
You can't use stat function to know the size though.
For more details, see the manual page for proc.
May 26, 2005
upgrade to Xorg on Debian?
It's worth trying for sure.
27 February 2005 - Upgrade from Debian to Ubuntu
It's possible to upgrade to Xorg on Debian by changing your apt sources.list to include the Ubuntu repo. Note that this might mess up your setup. Anyway here's my sources.list
deb http://ftp.uk.debian.org/debian/ unstable main non-free contrib
deb-src http://ftp.uk.debian.org/debian/ unstable main non-free contrib
deb http://archive.ubuntu.com/ubuntu/ hoary main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ hoary main restricted universe multive
# mplayer http://marillat.free.fr/
deb ftp://ftp.nerim.net/debian-marillat/ testing main
deb ftp://ftp.nerim.net/debian-marillat/ unstable main
hard link things
Although "ln --help" tells you that you can creat hard links to a directory as root, things do not work like that. The truth is that it really depends on the underlying file system. Few systems now allow that since it complicates fsck and may incure loops.
For anyone who is interested, on a Linux system with an ext2 file system
you can achieve the same thing as a hard link to a directory with a
Also see http://linuxgazette.net/issue93/tag/2.html
当Virtual Page A由于物理内存不够而被Virtual Page B replace的时候，如果使用physical tagged cache，相应cache block是要被flush的！
May 23, 2005
shuffle-exchange network is a variant of hypercubic networks.
This question is totally out of the reading list.
Shuffling is just like shifting the bits.
In the rightmost column on page 57, every box is a switch for exchange, and they're connected for shuffle.
is also clear.
On page 36, red means exchange, blue means shuffle.
Another lesson: I should write faster. Hardly any time left to you to reason.
May 01, 2005
SSH port forwarding
I ran "ssh -g -L 10010:pri-033:80 monolith" from adder,
and now http://adder.cs.virginia.edu:10010/ rocks!
Cool to know.
# ssh -C -P -f sshaccount@S -L 110:S:110 sleep 7200
-f 一旦SSH完成认证并建立port forwarding，则转入后台运行。
-L 110:S:110 转发C对本地端口110的连接到远程服务器S的110端口。
sleep 7200 一般用于script,必须给一个命令，我们给一个sleep等待空 命令，这里为
设为更长用于保持整个连接过程, 如 sleep 100000000 。
April 24, 2005
SSH and Cygwin, cont.
OK, Cygwin seems to have some bugs in its utility mkpasswd.
Although my current user is in my desktop machine's Administrators group, when I run mkpasswd -d -u wh5a > /etc/passwd, the gid is always set to that of Domain Users.
So I have to edit the passwd file by myself, and change the gid to that of Administrators.
April 23, 2005
Some notes on setting up ssh
The previous post is about Cygwin-specific sshd setup.
Now let's talk about some general ideas. (Maybe wrong though.)
Basically, ssh supports two kind of log in methods.
One is like traditional telnet, which prompts users to input user name and passwd. The improvement is that all the information is encrypted using the server's public key. (When you first log onto a machine, the ssh client will ask you if you trust it, and will record its public key in known_hosts later on.) However this method is vulnerable to man-in-the-middle attack.
Another way is to not send passwd at all. But I guess this is also vulnerable if your connection is eavedropped at the first time. In this way the server will challenge the client with client's public key. Only client has its private key and thus be able to respond to the challenge. To enable automatic login, see the links below. You may also choose to input a passwd, which is called "passphrase".
If you also want to log in automatically using SecureCRT, you may have it generate a pair of keys for you, and upload the public key to the server. You must note that SecureCRT uses a different format of key from that used by OpenSSH. But OpenSSH can convert it to the acceptable format.
I still have some problems with cygwin. Let's reboot the system and see what happens.
BTW, cygwin has a utility to generate the keys in one step. The command is called ssh-user-config.
CygWin, SSH, Java...
If you want to install an SSH server without installing CygWin, try http://sshwindows.sourceforge.net/. If I remembered correctly, the instructions are quite straightforward to follow.
Today I'm trying to make sshd on Cygwin work. Maybe the program had a little conflict with the one without cygwin that I installed before, I had some problems when I tried to set it up.
As a lesson, you should RTFM carefully, especially when you're running something you're not familiar with. So it's quite useful to skim over the User's Guide of Cygwin. But that is a very general doc, so if you want to set up any specific packages, be sure to read the doc under /usr/share/doc/Cygwin/, since they've usually made some changes to the original packages.
Besides the doc delivered with cygwin, I found http://ncyoung.com/entry/389 also very useful.
A formal way to run servers is using cygrunsrv -S xxx to start a service, and -E xxx to end one. Although you can also run /usr/sbin/sshd to start it.
The basic steps to set up sshd under Cygwin are:
1. mkgroup (-l for local, -d for domain) >> /etc/group
2. mkpasswd (-l for local, -d for domain) -u username >> ../etc/passwd
These two steps add the user information into the Unix style config file. If you want to log in as some user, you need to add in information for that user, and he must be in Admin group.
4. to test your server, use sshd -d -d -d to show verbose debug msg.
In order to run java under cygwin, you may install JSE for windows, and it will also work under cygwin. But you must take some special care for the CLASSPATH environment variable. Because JSE is actually a windows program, it won't understand the path you set under Cygwin. You can solve it by adding this to your .bash_profile:
if [ $CYGWIN ]
export CLASSPATH=`cygpath -wp $CLASSPATH`
But this way doesn't work for ssh because when you log into an ssh server running under Cygwin, the CYGWIN variable isn't set. We can use other variables instead, such as $WINDIR.
April 19, 2005
What a big news!
I need to check it out later.
April 13, 2005
Some or any?
Also includes some explanation for some other grammar issues.
March 20, 2005
DMA, DVMA, IOMMU, scatter-gather...
Some platforms, such as SPARC systems, support
what is called Direct Virtual Memory Access
(DVMA). On these platforms, the device is pro-
vided with a virtual address by the system in
order to perform the transfer. In this case, the
underlying platform provides an IOMMU, which
translates accesses to these virtual addresses
into the proper physical addresses. Some of these
platforms also support DMA.
DDI_DMA_FORCE_PHYSICAL indicates that the system
should return physical rather than virtual I/O
addresses if the system supports both. If the
system does not support physical DMA, the return
value from ddi_dma_alloc_handle(9F) will be
DDI_DMA_BADATTR. In this case, the driver has to
clear DDI_DMA_FORCE_PHYSICAL and retry the opera-
The platform on which the device operates provides either direct memory access (DMA) or direct virtual memory access (DVMA).
On platforms that support DMA, the system provides the device with a physical address in order to perform transfers. In this case, the transfer of a DMA object can actually consist of a number of physically discontiguous transfers. An example is when an application transfers a buffer that spans several contiguous virtual pages that map to physically discontiguous pages. To deal with the discontiguous memory, devices for these platforms usually have some kind of scatter-gather DMA capability. Typically, x86 systems provide physical addresses for direct memory transfers.
On platforms that support DVMA, the system provides the device with a virtual address to perform transfers. In this case, memory management units (MMU) provided by the underlying platform translate device accesses to these virtual addresses into the proper physical addresses. The device transfers to and from a contiguous virtual image that can be mapped to discontiguous physical pages. Devices that operate in these platforms do not need scatter-gather DMA capability. Typically, SPARC platforms provide virtual addresses for direct memory transfers.
March 17, 2005
About Hashtable and generics in Java
I'm not familiar with Java, so I didn't quite understand all the stuffs here. Anyway it helps:
February 15, 2005
Diablo & Strata
To get Diablo convert Strata's flowgraph correctly, remember to build strata's library with the patched toolchain!!
However I still can't get Diablo work with newer strata even if it's built by patched toolchain.
And don't forget to remove config.cache if you modified configure.
February 02, 2005
Some notes on Diablo, and ELF file format
I'm now kind of an ELF expert, heihei... only on statically linked ELFs.
To new a section you need to add it in the section header and the section string table. If you the section is unexecutable then you don't have to worry about the segments, segments are only needed when you want to group several sections into a single segment to be loaded.
You can also do some trick with ld by linker scripts, like align the code sections, place different object codes, etc. However that's not powerful enough so we have to use some binary rewrite tool.
Now let's talk about Diablo.
In each pass Diablo will keep the data of the code sections in obj->code[i]->data. Normally i is 0 since Diablo has merged all the code sections into one. obj->code[i]->data is a (void *) pointer, so it can point to anything according to different passes, and Diablo will keep track of it by the type field.
Now you can do anything right before the WRITE pass, because at that time obj->code->data is simply a linear array holding the binary encoding of the instructions.
But what if you want to move the instructions around?
You must rely on the Flowgraph and Deflowgraph pass.
Basically you can play with anything you are interested in after flowgraph has been built. But you must take care of many dirty works if you want to do something to some specific data area on some specific address. That's because Diablo doesn't guarantee the addresses, it only guarantees you can modify the binary thru Diablo's interfaces and the generated binary is still correct. For example, you can instrument the code by adding some instructions like:
ins = InsNewForBbl(bbl);
However you can't do everything as you expected you would be able to. But remember we can manipulate the binary data right before writeback. So what's the deal? We can do as much as we can when we have the flow graph, then remember what we haven't done, and do it before writeback.
When doing deflowgraph, Diablo will first form all the basic blocks into a chain based on their original order. Think about this, if a conditional branch is not taken, the control must "fall through" to the right address. Then Diablo will do some necessary preparation, which might make the generated code slightly different from the original. For example, Diablo will try to encode the jump instructions iteratively (which is called DeflowFixedPoint, but I can't understand what it's doing).
Then, if we want to move the instructions, we must do it before all the jump offsets are fixed. All we need to do is to change the addresses of all the instructions involved accordingly. (I guess) Diablo only use these address information to fix the jump offsets. Because when writing back, Diablo will write the whole array into the binary file, and the address of an individual instructions doesn't matter at all. All that matters is the address of the beginning of a section, then the whole section will be loaded into the right place consecutively, and all the instructions' addresses can be calculated by adding the offset. (That's why we need to fix the binary array if we've changed the addresses. ) After all these have been done, Diablo copy the chain to a linear buffer and passes it on to the Assembly pass.
Finally, all we need to do is to fix the binary array, and set the right size of the code section.
February 01, 2005
Something related to mathematics
Actually they are two questions raised by the teacher in the Algo class.
1. Irrational number to an irrational power may be rational.
2. What is i to the ith, or (i^i)?
January 05, 2005
Repondez s'il vous plait
French for "please reply", commonly found
(abbreviated) on invitations.
December 14, 2004
Memory-mapped I/O && port I/O
December 12, 2004
The system bus is also called the frontside bus, memory bus, local bus, or host bus.
front side bus:
On older computers where the L2 cache was not integrated into the CPU, the back side bus connects to the L2 cache, and using this was faster than accessing the RAM via the front side bus. With modern CPUs having L2 cache on the processor die itself, this bus no longer exists, as the CPU's cache is simply checked for the appropriate data before a read request is issued to main memory.
但是，独立后端总线的时代并没有完全过去。例如，苹果公司用于Power Mac G4、Cube 以及Titanium笔记本电脑的400MHz和500MHz PowerPC G4处理器继续采用后端总线设计。G4处理引擎采用处理器上的1MB后端L2缓存和一条与100MHz前端总线相匹配的64位后端总线，以获得最大为800Mb/s的额定数据吞吐量。
Intel和Compaq公司也没有放弃后端总线。提供第三级缓存的高级芯片包括Intel的64位Itanium 处理器和Compaq的Alpha EV8处理器，这两种处理器将继续使用这种总线设计来保持数据传输。
外频与前端总线频率的区别：前端总线的速度指的是CPU和北桥芯片间总线的速度，更实质性的表示了CPU和外界数据传输的速度。而外频的概念是建立在数字脉冲信号震荡速度基础之上的，也就是说，100MHz外频特指数字脉冲信号在每秒钟震荡一万万次，它更多的影响了PIC及其他总线的频率。之所以前端总线与外频这两个概念容易混淆，主要的原因是在以前的很长一段时间里（主要是在Pentium 4出现之前和刚出现Pentium 4时），前端总线频率与外频是相同的，因此往往直接称前端总线为外频，最终造成这样的误会。随着计算机技术的发展，人们发现前端总线频率需要高于外频，因此采用了QDR（Quad Date Rate）技术，或者其他类似的技术实现这个目前。这些技术的原理类似于AGP的2X或者4X，它们使得前端总线的频率成为外频的2倍、4倍甚至更高，从此之后前端总线和外频的区别才开始被人们重视起来。
December 06, 2004
C startup and exit codes
Read csu/elf-init.c, sysdeps/i386/elf/start.S, && sysdeps/generic/libc-start.c of glibc.
You'll know more!!
Also some important cleanup codes are in
libio/genops.c and stdlib/exit.c
Also there're some nice references:
On http://linuxassembly.org/resources.htm there's a collection of cool resources, including ABI specs, etc.
December 05, 2004
By "toolchain" here I mean binutils+gcc+glibc.
I didn't read any documentation carefully, so there may be errors.
Of course you should think about why you want to build a new toolchain by yourself?
I'm not doing a cross compilation, so my tools don't need to be self-contained.
First I build binutils, then I build gcc.
Here I pass to gcc's configure two more options:
--with-as=/usr/local/toolchain/bin/as --with-ld=/usr/local/toolchain/bin/ld, which tells gcc where to find binutils.
Otherwise, gcc will use the native binutils to compile glibc later. (And this will be a potential problem if I'm building an older glibc than my system.)
Then when building glibc this option must be passed:
Otherwise it can't find the correct kernel header for glibc.
An interesting problem was when I decided to build another version of glibc using my just obtained gcc.
But at that time gcc would automatically use the glibc I just built.
So when I configure glibc, the configure program will generate some programs to do some tests (for platform independence), something bad will happen. (Because I've modified glibc and normal program won't compile)
The symptom is like this:
checking size of long double... configure: error: cannot compute sizeof (long double), 77
And I think http://sources.redhat.com/ml/crossgcc/2004-05/msg00004.html is a good reference for this article.
December 03, 2004
glibc needs kernel headers.
Before building it look at "What's going on with the kernel headers ? " first.
For Redhat, you can search glibc-kernheaders package.
For Debian, it's much easier and I love DEBIAN!!
For general tarball, http://ep09.pld-linux.org/~mmazur/linux-libc-headers/
November 20, 2004
Mathematica's Google Aptitude
October 13--Many internet denizens have heard of Sergey Brin, President of Technology at google.com. What they may not know is that before cofounding the precursor to Google in 1998 and subsequently becoming a multibillionaire, Brin was an intern at Wolfram Research (makers of Mathematica, as well as sponsors of MathWorld).
So perhaps it's no great surprise that Google utilizes unusually mathematically oriented recruitment techniques.
November 18, 2004
Some thoughts on research
The target-dependent part heavily employs assembly languages.
Luckily those codes are not so hard to read.
strata_start(strata.c) -> TI.start -> targ_start(targ-switch.s), push two arguments on stack, then call strata_build_main(build.c)
An important data structure is the "data" array of "hash_entry". I don't know where to find the exact meaning. Some of them can be guessed by looking at targ-build.c.
About optimizing, can I apply some techniques in PL, for example, Continuation Pass Style (CPS)? I don't know, maybe I need to read more literature on dynamic compilation and PL.
November 14, 2004
subtract two text files
First, use 'comm' of 'coreutils':
comm -3 file1 file2
Then, select the first column from the output:
| cut -f 1
Finally, you'll need to delete the empty lines in between.
I tried to do this work by awk at first.
To gain performance and reduce complexity, I assume the input files are already sorted.
But the 'sort' program is so weird that it doesn't sort words that contain underscores well.
Therefore my program doesn't work well in this circumstance.
# subtract file1 file2
# print lines in file1 that aren't in file2 to stdout
# assume files are preprocessed by "sort -u"
print "subtract f1 f2"
f1 = ARGV
f2 = ARGV
neof1 = getline l1 < f1
neof2 = getline l2 < f2
while (neof1 && neof2)
if (l1 < l2)
neof1 = getline l1 < f1
else if (l1 > l2)
neof2 = getline l2 < f2
while (neof2 && l1 > l2)
neof1 = getline l1 < f1
neof2 = getline l2 < f2
neof1 = getline l1 < f1
# getline tmp< "DIABLO"
# if ($0 == tmp)
# print $0
Select an arbitrary column of text in UNIX
November 01, 2004
Give presentation on language-based security.
Finish Malware project.
Enhance the project by Dec. 13rd, when those DARPA guys are coming to see if the money is going into rat hole.
October 30, 2004
CE BCE BC AD
CE(Common Era) = AD(Anno Domini, or the year of the Lord).
BCE(Before Common Era) = BC(Before Christ).
CE and BCE are eventually expected to replace AD and BC.
"Wikipedia: the free encyclopedia" states that the new notation is used by "Many non-Christians or secular persons." However, we suspect that the majority of users are actually Christians who want a notation that does not offend or distress persons of other religions.
The word "common" simply means that this is the most frequently used calendar system: the Gregorian Calendar. There are many religious calendars in existence, but each of these are normally in use in only a small geographic area of the world -- typically by followers of a single religion.
Also refer to wikipedia:
Life is struggle
发信人: steve (阿粗 改过自新), 信区: EE
标 题: Re: *****直接后果就是Re: [转载] Faculty Position
发信站: Unknown Space - 未名空间 (Fri Oct 29 22:38:08 2004), 转信
【 在 thanksgiving (LEFT) 的大作中提到: 】
老天有眼，在一个中等的学校找到一份tenure track, 年薪6K(9个月的)。当时我们
October 22, 2004
On Programming Languages
发信人: DVanguard (Blue+Crab), 信区: CS
标 题: Re: top CS conferences
发信站: Unknown Space - 未名空间 (Fri Oct 22 19:05:34 2004) WWW-POST
In my humble opinion, programming languages might have "several" top
1) programming language research is actually a VAST domain with a vaguely
defined boundary. Different researchers self-indentified with this area might
be working on completely different issues. For a typical non-PL CS student,
the area can be easily associated with some compiler construction stuff, such
as parsing or optimization, since a course on compilers is normally what we
first learned at undergrad time (remember those sleepless nights of hacking on
scanning and parsing?:-)), but in effect, this research area has some deep
reaches on both theoretical and applied ends. On the theory side, higher order
logic, formal semantics, theorem proving, type systems are all very relevant,
and that's I guess why a conference like LICS (a top conference in logic) and
POPL (arguably "the" top theory conference in PL) was mentioned by a previous
post. On the less theoretical side, program analysis/model checking, i.e. what
properties we can know of a program without running it, such as whether it is
secure or whether there might be memory leak, has always been a big topic.
There are also many projects with an experimental flavor, just like what you
see in a typical systems conference. A conference like PLDI has always been
good at this style of projects. (PLDI is a lot more than this I should say).
Of course let's not forget language design, depending on whether you are a
believer in object-orient languages or functional languages, you might have
different target conferences in mind, OOPSLA or ECOOP for OO languages, and
ICFP for functional languages. Last but not least, software engineering and
programming languages also have a lot of things overlapping each other. Many
software engineering researchers go to OOPSLA or ECOOP, and many programming
language researchers go to a conference like ICSE (a top conference in
2) because of 1), if you are a PL researcher, especially a Ph.D. student, the
conferences you can submit papers might be far fewer than those PL conferences
available, because each conference has its own "flavor" and the innate
characteristic of your research has more or less "disqualified" you of
publishing in certain conferences. For instance, do you expect a Ph.D student
who researches on register allocation to submit a paper on theorem proving,
or vice versa? :-)
3) conferences in PL tend to have a small number of accepted papers. The
number of papers accepted in each conference tend to be within the 20-30
range, if not fewer, and this is true as far as I know to all these high
profile conferences including POPL, PLDI, OOPSLA, ECOOP and ICFP. I have heard
from friends some top conferences in other areas might even accept 60 papers,
so I guess one such conference could cancel out 2 or 3 in PL. :-) In addition,
the aforementioned PL conferences all have a low acceptance rate. The six
conferences mentioned above seem to have never had an acceptance rate beyond
20%, and normally a lot lower.
BTW, it's really hard to estimate the number of groups in US doing programming
languages now, but I guess most schools in reasonable standing have some
professors in this area. Corporate research centers like Microsoft, IBM and
SUN all have sizable groups. Besides, Europe has always been a powerhouse in
this area. Places like INRIA France are perhaps as competitive as any research
centers on US soil, and many researchers in UK, Switzerland, Italy, Germany
and Denmark, etc, are out there with established status. So, it's actually
sweatily crowded. :-)
October 21, 2004
Useful review of Register Renaming and Out-of-order Execution
Agian, almighty wikipedia:
There are many confusing terms due to some historical reasons.
October 16, 2004
Currently I am working to put ISR and strata together to achieve both security and efficiency.
Prof. Jack Davidson wants to show efficiency of doing derandomization in Strata, but Prof. Dave Evans wants to see more security since this project also works as Malware project, which mainly serves for security.
First, simple jump to malicious codes can be easily prevented in Strata by checking whether the address it's jumping to violates its allowed range. So ISR against code injection can't buy much here. In order to justify the necessity of combining ISR and strata, I must find some exploits which can work around simple check but would be prevented by ISR.
Second, which encryption method should I use? Of course I'll try simple XOR operations first, but is it secure enough? For example, let's say the key is 64 bits long, but on x86 which has varied instruction length, simple instructions like jumps might only be one byte. So if a hacker somehow get the first 16 bits by brute force, he can inject code like this:
A Malicious instruction; JUMP L1; xxx
L1: Another Malicious instruction; JUMP L2; xxx
Therefore although hacker didn't know the high part of a key, he can still apply exploits.
So I should look for some strong encryption methods. However would that increase overhead?
Third, indirect jumps. Could Diablo identify all the headers of basic blocks? Since indirect jumps are undecidable at static time. However it declares to be able to handle those cases by preserving more information. I must see if such bad things will happen. If this would happen, there must be a coordination between randomizer and derandomizer, namely how to do the alignment.
Diablo, a link time program rewriter
I think I have to write down some notes here.
Currently I'm trying to do Instruction Set Randomization on statically linked executable on x86 linux machines.
ELF files can be directly operated or by BFD library. Many GNU tools (to be more specific, binutils) such as objcopy, objdump, ld, gdb are using BFD. (Not sure if as also uses it.)
But direct operation on ELF doesn't work well with my purpose. Since I'm want to transform some basic blocks but keep other intact.
Diablo is in some sense a full-fledged tool that can handle these issues.
Diablo reads in an executable and a linker map file. This map file can be created by most linkers and it describes the memory mapping of the relocatable object files in memory. It then builds a graph representation of the object files listed in the map that is very close to the final executable (all used relocatable object files should still be available. This means you should compile each object file in turn, using the -c option of your compiler, or use the option -save-temps in gcc. The executable is also needed, but is mainly used to verify the graph). In this graph the nodes are the sections in the object files and the edges are memory references from one object file section to another (the relocation information is used to find these references). Next the code sections in the object files are split into smaller blocks (basic
blocks) by using the disassembly of this section. By doing this a new graph is created that doubles as both an interprocedural control flow graph (ICFG) and a fine grained memory reference graph. On these graphs all kinds of analyses and optimizations can be applied. Instructions in the basic blocks are represented with both a very simple architecture independent representation (like the used registers) and an architecture dependent representation (the full disassembly of the instruction). Some analyses/optimizations use the independent representation, others use the dependent. How well you need to understand both program graphs depends on what you are trying to do. For your purpose it might be sufficient to simply work on the ICFG, and in that case, you shouldn't have to worry about the other representation. As said, some more information about what you will be using Diablo for would be useful.
Finally some notes on why we patch the toolchain. We patch the toolchain for two reasons: first of all, some toolchains (like binutils) try to compact relocation information. In doing so, they make it impossible for us to infer the target address from the memory reference the relocation represents. We simply turn of that optimization. Second, disassembling a program when data is present in the code sections is recursive undecidable. But the assembler knows what bytes in the code section are data, and what bytes in the code section are instructions. We let the assembler export this information to diablo.
Below are my analysis and guess.
At the very beginning, Diablo reads in the executable and map file, and does some computation. After that, some basic information is stored in the root object and subobjects.
However in order to get the full set of information you have to merge them.
After merge, Diablo can iterate through all the sections of the object. At this time the data field of a section holds the raw data. But the data field is a void-type pointer whose content varies at different stages. After disassembly the raw data is converted into a simple data graph whose node is of t_node type, and each node is actually of t_ins type, which implies an instruction. And after control graph construction, the data field is then converted into t_cfg type. At this time the data is a control graph, so that functions, basic blocks and instructions can be extracted.
In order to write back, the data must be converted back to the original raw data. To do so Diablo first deflowgraph it and then assemble it. After that this raw data can be written back.
The code director is organized into different parts. Kernel directory provides core services and data structures, Fileformats directory provides common read/write supports, and Arch directory provides architecture dependent services.
In order to implement my purpose, I think before disassembly I must add a new field to preserve the original data. And during disassembly I should track the offset of each instruction so that I can tell the start point and end point of every basic block. And instead of calling deflowgraph and assembly, I only need to write back the transformed raw data.
A difficult task is to tell which original object file a basic block belongs to. In order to implement this some information must be preserved during merge or reading in.
October 14, 2004
這本書的內容是如此寬泛，講了音樂（ 巴赫 ），講了藝術（ 艾舍爾 Maurits Cornelius Escher，1898 - 1972 ），講了分子生物學、電腦語言、人工智能以至禪。多年來，許多讀者讀畢全書，竟然歸納不出這本書究竟是要說什麼。為此，作者特意為 1999 年的 20 週年紀念本，加了一篇 23 頁的新序言加以說明。作者所想討論的，其實是一個普遍的問題：“自我”是什麼。
作者真正想寫的就是這個問題。盡管全書涉及廣泛，核心卻是哥德爾，是數學基礎。哥德爾（ Kurt Godel，1906 - 1978 ）是一位奧地利出生的數學家。 1931 年他發表的現在被稱之為不完全性的定理，是 20 世紀最具革命性的發現。大體上，這個定理是說，在任何公理體系中，必定有這樣的命題，用這個公理體系“自身”既不能證明其真，也不能證明其偽。關於哥德爾，有一本評傳值得推薦，那就是上海譯文出版社 1997 年出版的，著名華裔數學家王浩寫的《哥德爾》。
还借了一本Mark Twain的The Adventure of Tom Sawyer，准备朗读出来，提高口语。有人认为在Mark Twain之后才有了American Literature，terrible。
October 10, 2004
Academic Writing Tips
这个周末去了Fairfax姑姑家，可以在我的Personal目录下看到在Great Falls Park照的照片，以及在 摩门教堂门口照的照片。据说摩门教徒必须将20%的工资捐献出来，因此该教很有钱。
Here are a few thoughts about academic writing.
Avoid using "we".
Philosophy: The word "we" is often used by lazy writers because it provides an easy way to give a sentence a subject. The problem is that doing so usually dilutes the impact of the sentence or obscures the true subject.
Here is a real-world example (taken from a published paper): "In this paper we focus on statically checking behavioral properties of ..." The authors of the paper have little to do with the main point of the paper. The sentence above would be better as: "This paper focuses on statically checking behavioral properties of ..." This version emphasizes the true subject of the sentence, "this paper". It's also shorter.
Unless the true subject of the sentence is the authors, avoid using "we". An acceptable use is: "We would like to thank the anonymous referees for providing helpful feedback on the earlier draft of this work."
Parallelism is good.
When a paragraph, bullet list, or sentence contains similar components, those components should use parallel construction. Opportunities for parallelism include: similar sentence structure, repeated verbs, repeated subjects. Required parallism: verb tense and noun plurality.
Citation references are not nouns.
Philosophy: The point of writing is communication to the reader. Because citation references are often numbers or alpha-numeric strings, it is difficult for the reader to ascribe them meaning. The reader should not need to refer to the bibliography to understand a sentence.
Example: "As shown in , static type systems ..." should be "As shown by Harper et al. , static type sytems..." or "As shown previously, static type systems ... ."
With citation styles that use the author's name as the index it is sometimes permissible to use the reference as a noun. For example, "As shown in (Harper et al. 1999), static type systems ...". But in this style even better would be "As shown by Harper et al. (1999), static type systems...".
Good writing is readable. (Read your writing out loud.)
Reading a sentence or paragraph aloud can reveal defects in its structure. Paragraphs that use the same sentence structure too frequently often sound choppy or awkward when read aloud. Complex phrases that trip up the tongue indicate that the sentence may need to be edited.
When in doubt, look it up.
There are many excellent resources to improve writing skills. Two of my favorite online resources are Strunk & White and www.dictionary.com. One writing book intended especially for Computer Scientists is "Bugs in Writing: A guide to debugging your prose" by Lyn Dupre. Also see "An Evaluation of the Ninth SOSP Submissions, or, How (and How Not) to Write a Good Systems Paper" by Roy Levin and David D. Redell and "How To Have Your Abstract Rejected" by Mary-Claire van Leunen and Richard Lipton.
October 05, 2004
October 04, 2004
October 02, 2004
Debian on Dell Inspiron 600m
ACPI似乎不支持，一开始BIOS版本是A13，可以看到内核信息中有“Dell Inspiron with broken BIOS detected. Refusing to enable the local APIC”。升级到A14后，好像是不抱错了，可poweroff还是不能自动关闭电源。
iwconfig用于设置网卡，iwlist wlan0 scan可以指示wlan0去扫描可用的服务器。
现在的问题是，不知道是waproamd使得我的系统狂慢，还是ndiswrapper包装windows的驱动作的不够好导致系统狂慢，而且modprobe -r ndiswrapper和waproamd -k把两者去掉都不行，必须在开机前就使得驱动不工作。
最棒的ReiserFS tool under windows
这里有个Dell Inspiron 600m安装debian的简介，但我的网卡是帅旗帮我加钱升级的，因此我也没仔细看那一段。
> It seems, that the specs haven't been released yet. There are quite a few Wlan
> cards out there based on the Broadcom chips (nearly all cards, that support
> 802.11g), so it's quite a shame. (Actually this fits the the TrueMobile 1180,
> 1300 and 1400, speaking of Dell wireless lan cards).
> The same problem is with the Intel Prowireless 2100 (Centrino) WLan card. No
> Linux support available yet, which is another choice for the Dell notebooks at
> the moment.
Don't expect specs or opensource drivers for any of these pieces
of hardware until these vendors figure out a way to hide the frequency
Ie. these cards can be programmed to transmit at any frequency,
and various government agencies don't like it when f.e. users can
transmit on military frequencies and stuff like that.
The only halfway plausible idea I've seen is to not document the
frequency programming registers, and users get a "region" key file that
has opaque register values to program into the appropriate registers.
The file is per-region (one for US, Germany, etc.)and the wireless
kernel driver reads in this file to do the frequency programming.
So don't blame the vendors on this one, several of them would love
to publish drivers public for their cards, but simply cannot with
upsetting federal regulators.
Reverse engineering approaches
September 29, 2004
Something about xfocus
September 26, 2004
CS Conference Rank (from mitbbs)
Cool. A full list of them.
发信人: ggfei (小飞侠), 信区: CompSci
标 题: CS Conference Rank (for reference)
发信站: Unknown Space - 未名空间 (Wed May 12 01:24:43 2004), 站内信件
This ranking is collected from Internet, only for reference, maybe not accurate and complete.
Some conferences accept multiple categories of papers. The rankings below are for the most prestigious category of paper at a given conference. All other categories should be treated as "unranked".
AREA: Artificial Intelligence and Related Subjects
AAAI: American Association for AI National Conference
CVPR: IEEE Conf on Comp Vision and Pattern Recognition
IJCAI: Intl Joint Conf on AI
ICCV: Intl Conf on Computer Vision
ICML: Intl Conf on Machine Learning
KDD: Knowledge Discovery and Data Mining
KR: Intl Conf on Principles of KR & Reasoning
NIPS: Neural Information Processing Systems
UAI: Conference on Uncertainty in AI
ICAA: International Conference on Autonomous Agents
ACL: Annual Meeting of the ACL (Association of Computational Linguistics)
NAACL: North American Chapter of the ACL
AID: Intl Conf on AI in Design
AI-ED: World Conference on AI in Education
CAIP: Inttl Conf on Comp. Analysis of Images and Patterns
CSSAC: Cognitive Science Society Annual Conference
ECCV: European Conference on Computer Vision
EAI: European Conf on AI
EML: European Conf on Machine Learning
GP: Genetic Programming Conference
IAAI: Innovative Applications in AI
ICIP: Intl Conf on Image Processing
ICNN/IJCNN: Intl (Joint) Conference on Neural Networks
ICPR: Intl Conf on Pattern Recognition
ICDAR: International Conference on Document Analysis and Recognition
ICTAI: IEEE conference on Tools with AI
AMAI: Artificial Intelligence and Maths
DAS: International Workshop on Document Analysis Systems
WACV: IEEE Workshop on Apps of Computer Vision
COLING: International Conference on Computational Liguistics
EMNLP: Empirical Methods in Natural Language Processing
EACL: Annual Meeting of European Association Computational Lingustics
CoNLL: Conference on Natural Language Learning
PRICAI: Pacific Rim Intl Conf on AI
AAI: Australian National Conf on AI
ACCV: Asian Conference on Computer Vision
AI*IA: Congress of the Italian Assoc for AI
ANNIE: Artificial Neural Networks in Engineering
ANZIIS: Australian/NZ Conf on Intelligent Inf. Systems
CAIA: Conf on AI for Applications
CAAI: Canadian Artificial Intelligence Conference
ASADM: Chicago ASA Data Mining Conf: A Hard Look at DM
EPIA: Portuguese Conference on Artificial Intelligence
FCKAML: French Conf on Know. Acquisition & Machine Learning
ICANN: International Conf on Artificial Neural Networks
ICCB: International Conference on Case-Based Reasoning
ICGA: International Conference on Genetic Algorithms
ICONIP: Intl Conf on Neural Information Processing
IEA/AIE: Intl Conf on Ind. & Eng. Apps of AI & Expert Sys
ICMS: International Conference on Multiagent Systems
ICPS: International conference on Planning Systems
IWANN: Intl Work-Conf on Art & Natural Neural Networks
PACES: Pacific Asian Conference on Expert Systems
SCAI: Scandinavian Conference on Artifical Intelligence
SPICIS: Singapore Intl Conf on Intelligent System
PAKDD: Pacific-Asia Conf on Know. Discovery & Data Mining
SMC: IEEE Intl Conf on Systems, Man and Cybernetics
PAKDDM: Practical App of Knowledge Discovery & Data Mining
WCNN: The World Congress on Neural Networks
WCES: World Congress on Expert Systems
INBS: IEEE Intl Symp on Intell. in Neural \& Bio Systems
ASC: Intl Conf on AI and Soft Computing
PACLIC: Pacific Asia Conference on Language, Information and Computation
ICCC: International Conference on Chinese Computing
ICADL: International Conference on Asian Digital Libraries
RANLP: Recent Advances in Natural Language Processing
NLPRS: Natural Language Pacific Rim Symposium
ICRA: IEEE Intl Conf on Robotics and Automation
NNSP: Neural Networks for Signal Processing
ICASSP: IEEE Intl Conf on Acoustics, Speech and SP
GCCCE: Global Chinese Conference on Computers in Education
ICAI: Intl Conf on Artificial Intelligence
AEN: IASTED Intl Conf on AI, Exp Sys & Neural Networks
WMSCI: World Multiconfs on Sys, Cybernetics & Informatics
LREC: Language Resources and Evaluation Conference
AREA: Hardware and Architecture
ASPLOS: Architectural Support for Prog Lang and OS
ISCA: ACM/IEEE Symp on Computer Architecture
ICCAD: Intl Conf on Computer-Aided Design
DAC: Design Automation Conf
MICRO: Intl Symp on Microarchitecture
HPCA: IEEE Symp on High-Perf Comp Architecture
FCCM: IEEE Symposium on Field Programmable Custom Computing Machines
SUPER: ACM/IEEE Supercomputing Conference
ICS: Intl Conf on Supercomputing
ISSCC: IEEE Intl Solid-State Circuits Conf
HCS: Hot Chips Symp
VLSI: IEEE Symp VLSI Circuits
ISSS: International Symposium on System Synthesis
DATE: IEEE/ACM Design, Automation & Test in Europe Conference
ICA3PP: Algs and Archs for Parall Proc
EuroMICRO: New Frontiers of Information Technology
ACS: Australian Supercomputing Conf
Advanced Research in VLSI
International Symposium on System Synthesis
International Symposium on Computer Design
International Symposium on Circuits and Systems
Asia Pacific Design Automation Conference
International Symposium on Physical Design
International Conference on VLSI Design
I3DG: ACM-SIGRAPH Interactive 3D Graphics
SIGGRAPH: ACM SIGGRAPH Conference
ACM-MM: ACM Multimedia Conference
DCC: Data Compression Conf
SIGMETRICS: ACM Conf on Meas. & Modelling of Comp Sys
SIGIR: ACM SIGIR Conf on Information Retrieval
PECCS: IFIP Intl Conf on Perf Eval of Comp \& Comm Sys
WWW: World-Wide Web Conference
EUROGRAPH: European Graphics Conference
CGI: Computer Graphics International
CANIM: Computer Animation
PG: Pacific Graphics
ICME: Intl Conf on MMedia & Expo
NOSSDAV: Network and OS Support for Digital A/V
PADS: ACM/IEEE/SCS Workshop on Parallel \& Dist Simulation
WSC: Winter Simulation Conference
ASS: IEEE Annual Simulation Symposium
MASCOTS: Symp Model Analysis \& Sim of Comp \& Telecom Sys
PT: Perf Tools - Intl Conf on Model Tech \& Tools for CPE
NetStore: Network Storage Symposium
MMCN: ACM/SPIE Multimedia Computing and Networking
JCDL: Joint Conference on Digital Libraries
ACM-HPC: ACM Hypertext Conf
MMM: Multimedia Modelling
DSS: Distributed Simulation Symposium
SCSC: Summer Computer Simulation Conference
WCSS: World Congress on Systems Simulation
ESS: European Simulation Symposium
ESM: European Simulation Multiconference
HPCN: High-Performance Computing and Networking
Geometry Modeling and Processing
DS-RT: Distributed Simulation and Real-time Applications
IEEE Intl Wshop on Dist Int Simul and Real-Time Applications
ECIR: European Colloquium on Information Retrieval
DVAT: IS\&T/SPIE Conf on Dig Video Compression Alg \& Tech
MME: IEEE Intl Conf. on Multimedia in Education
ICMSO: Intl Conf on Modelling, Simulation and Optimisation
ICMS: IASTED Intl Conf on Modelling and Simulation
AREA: System Technology
SIGCOMM: ACM Conf on Comm Architectures, Protocols & Apps
INFOCOM: Annual Joint Conf IEEE Comp & Comm Soc
SPAA: Symp on Parallel Algms and Architecture
PODC: ACM Symp on Principles of Distributed Computing
PPoPP: Principles and Practice of Parallel Programming
MassPar: Symp on Frontiers of Massively Parallel Proc
RTSS: Real Time Systems Symp
SOSP: ACM SIGOPS Symp on OS Principles
SOSDI: Usenix Symp on OS Design and Implementation
CCS: ACM Conf on Comp and Communications Security
IEEE Symposium on Security and Privacy
MOBICOM: ACM Intl Conf on Mobile Computing and Networking
USENIX Conf on Internet Tech and Sys
ICNP: Intl Conf on Network Protocols
OPENARCH: IEEE Conf on Open Arch and Network Prog
PACT: Intl Conf on Parallel Arch and Compil Tech
CC: Compiler Construction
IPDPS: Intl Parallel and Dist Processing Symp
IC3N: Intl Conf on Comp Comm and Networks
ICPP: Intl Conf on Parallel Processing
ICDCS: IEEE Intl Conf on Distributed Comp Systems
SRDS: Symp on Reliable Distributed Systems
MPPOI: Massively Par Proc Using Opt Interconns
ASAP: Intl Conf on Apps for Specific Array Processors
Euro-Par: European Conf. on Parallel Computing
Fast Software Encryption
Usenix Security Symposium
European Symposium on Research in Computer Security
WCW: Web Caching Workshop
LCN: IEEE Annual Conference on Local Computer Networks
IPCCC: IEEE Intl Phoenix Conf on Comp & Communications
CCC: Cluster Computing Conference
ICC: Intl Conf on Comm
WCNC: IEEE Wireless Communications and Networking Conference
MPCS: Intl. Conf. on Massively Parallel Computing Systems
GLOBECOM: Global Comm
ICCC: Intl Conf on Comp Communication
NOMS: IEEE Network Operations and Management Symp
CONPAR: Intl Conf on Vector and Parallel Processing
VAPP: Vector and Parallel Processing
ICPADS: Intl Conf. on Parallel and Distributed Systems
Public Key Cryptosystems
IEEE Computer Security Foundations Workshop
Annual Workshop on Selected Areas in Cryptography
Australasia Conference on Information Security and Privacy
Int. Conf on Inofrm and Comm. Security
Workshop on Information Hiding
Smart Card Research and Advanced Application Conference
ICON: Intl Conf on Networks
IMSA: Intl Conf on Internet and MMedia Sys
NCC: Nat Conf Comm
IN: IEEE Intell Network Workshop
Softcomm: Conf on Software in Tcomms and Comp Networks
INET: Internet Society Conf
Workshop on Security and Privacy in E-commerce
PARCO: Parallel Computing
SE: Intl Conf on Systems Engineering
AREA: Programming Languages and Software Engineering
POPL: ACM-SIGACT Symp on Principles of Prog Langs
PLDI: ACM-SIGPLAN Symp on Prog Lang Design & Impl
OOPSLA: OO Prog Systems, Langs and Applications
ICFP: Intl Conf on Function Programming
JICSLP/ICLP/ILPS: (Joint) Intl Conf/Symp on Logic Prog
ICSE: Intl Conf on Software Engineering
FSE: ACM Conference on the Foundations of Software Engineering (inc: ESEC-FSE when held jointly)
FM/FME: Formal Methods, World Congress/Europe
CAV: Computer Aided Verification
CP: Intl Conf on Principles & Practice of Constraint Prog
TACAS: Tools and Algos for the Const and An of Systems
ESOP: European Conf on Programming
ICCL: IEEE Intl Conf on Computer Languages
PEPM: Symp on Partial Evalutation and Prog Manipulation
SAS: Static Analysis Symposium
RTA: Rewriting Techniques and Applications
ESEC: European Software Engineering Conf
IWSSD: Intl Workshop on S/W Spec & Design
CAiSE: Intl Conf on Advanced Info System Engineering
ITC: IEEE Intl Test Conf
IWCASE: Intl Workshop on Cumpter-Aided Software Eng
SSR: ACM SIGSOFT Working Conf on Software Reusability
SEKE: Intl Conf on S/E and Knowledge Engineering
ICSR: IEEE Intl Conf on Software Reuse
ASE: Automated Software Engineering Conference
PADL: Practical Aspects of Declarative Languages
ISRE: Requirements Engineering
ICECCS: IEEE Intl Conf on Eng. of Complex Computer Systems
IEEE Intl Conf on Formal Engineering Methods
Intl Conf on Integrated Formal Methods
FOSSACS: Foundations of Software Science and Comp Struct
FASE: Fund Appr to Soft Eng
APSEC: Asia-Pacific S/E Conf
PAP/PACT: Practical Aspects of PROLOG/Constraint Tech
ALP: Intl Conf on Algebraic and Logic Programming
PLILP: Prog, Lang Implentation & Logic Programming
LOPSTR: Intl Workshop on Logic Prog Synthesis & Transf
ICCC: Intl Conf on Compiler Construction
COMPSAC: Intl. Computer S/W and Applications Conf
CSM: Conf on Software Maintenance
TAPSOFT: Intl Joint Conf on Theory & Pract of S/W Dev
WCRE: SIGSOFT Working Conf on Reverse Engineering
AQSDT: Symp on Assessment of Quality S/W Dev Tools
IFIP Intl Conf on Open Distributed Processing
Intl Conf of Z Users
IFIP Joint Int'l Conference on Formal Description Techniques and Protocol Specification, Testing, And Verificati
PSI (Ershov conference)
UML: International Conference on the Unified Modeling Language
Australian Software Engineering Conference
IEEE Int. W'shop on Object-oriented Real-time Dependable Sys. (WORDS)
IEEE International Symposium on High Assurance Systems Engineering
The Northern Formal Methods Workshops
Formal Methods Pacific
Int. Workshop on Formal Methods for Industrial Critical Systems
JFPLC - International French Speaking Conference on Logic and Constraint Programming
L&L - Workshop on Logic and Learning
SFP - Scottish Functional Programming Workshop
HASKELL - Haskell Workshop
LCCS - International Workshop on Logic and Complexity in Computer Science
VLFM - Visual Languages and Formal Methods
NASA LaRC Formal Methods Workshop
(1) FATES - A Satellite workshop on Formal Approaches to Testing of Software
(1) Workshop On Java For High-Performance Computing
(1) DSLSE - Domain-Specific Languages for Software Engineering
(1) FTJP - Workshop on Formal Techniques for Java Programs
(*) WFLP - International Workshop on Functional and (Constraint) Logic Programming
(*) FOOL - International Workshop on Foundations of Object-Oriented L anguages
(*) SREIS - Symposium on Requirements Engineering for Information Sec urity
(*) HLPP - International workshop on High-level parallel programming and applications
(*) INAP - International Conference on Applications of Prolog
(*) MPOOL - Workshop on Multiparadigm Programming with OO Languages
(*) PADO - Symposium on Programs as Data Objects
(*) TOOLS: Int'l Conf Technology of Object-Oriented Languages and Systems
(*) Australasian Conference on Parallel And Real-Time Systems
AREA: Algorithms and Theory
STOC: ACM Symp on Theory of Computing
FOCS: IEEE Symp on Foundations of Computer Science
COLT: Computational Learning Theory
LICS: IEEE Symp on Logic in Computer Science
SCG: ACM Symp on Computational Geometry
SODA: ACM/SIAM Symp on Discrete Algorithms
SPAA: ACM Symp on Parallel Algorithms and Architectures
PODC: ACM Symp on Principles of Distributed Computing
ISSAC: Intl. Symp on Symbolic and Algebraic Computation
CRYPTO: Advances in Cryptology
EUROCRYPT: European Conf on Cryptography
CONCUR: International Conference on Concurrency Theory
ICALP: Intl Colloquium on Automata, Languages and Prog
STACS: Symp on Theoretical Aspects of Computer Science
CC: IEEE Symp on Computational Complexity
WADS: Workshop on Algorithms and Data Structures
MFCS: Mathematical Foundations of Computer Science
SWAT: Scandinavian Workshop on Algorithm Theory
ESA: European Symp on Algorithms
IPCO: MPS Conf on integer programming & comb optimization
LFCS: Logical Foundations of Computer Science
ALT: Algorithmic Learning Theory
EUROCOLT: European Conf on Learning Theory
WDAG: Workshop on Distributed Algorithms
ISTCS: Israel Symp on Theory of Computing and Systems
ISAAC: Intl Symp on Algorithms and Computation
FST&TCS: Foundations of S/W Tech & Theoretical CS
LATIN: Intl Symp on Latin American Theoretical Informatics
RECOMB: Annual Intl Conf on Comp Molecular Biology
CADE: Conf on Automated Deduction
IEEEIT: IEEE Symposium on Information Theory
MEGA: Methods Effectives en Geometrie Algebrique
ASIAN: Asian Computing Science Conf
CCCG: Canadian Conf on Computational Geometry
FCT: Fundamentals of Computation Theory
WG: Workshop on Graph Theory
CIAC: Italian Conf on Algorithms and Complexity
ICCI: Advances in Computing and Information
AWTI: Argentine Workshop on Theoretical Informatics
CATS: The Australian Theory Symp
COCOON: Annual Intl Computing and Combinatorics Conf
UMC: Unconventional Models of Computation
MCU: Universal Machines and Computations
GD: Graph Drawing
SIROCCO: Structural Info & Communication Complexity
ALEX: Algorithms and Experiments
ALG: ENGG Workshop on Algorithm Engineering
LPMA: Intl Workshop on Logic Programming and Multi-Agents
EWLR: European Workshop on Learning Robots
CITB: Complexity & info-theoretic approaches to biology
FTP: Intl Workshop on First-Order Theorem Proving (FTP)
CSL: Annual Conf on Computer Science Logic (CSL)
AAAAECC: Conf On Applied Algebra, Algebraic Algms & ECC
DMTCS: Intl Conf on Disc Math and TCS
Information Theory Workshop
AREA: Data Bases
SIGMOD: ACM SIGMOD Conf on Management of Data
PODS: ACM SIGMOD Conf on Principles of DB Systems
VLDB: Very Large Data Bases
ICDE: Intl Conf on Data Engineering
ICDT: Intl Conf on Database Theory
SSD: Intl Symp on Large Spatial Databases
DEXA: Database and Expert System Applications
FODO: Intl Conf on Foundation on Data Organization
EDBT: Extending DB Technology
DOOD: Deductive and Object-Oriented Databases
DASFAA: Database Systems for Advanced Applications
CIKM: Intl. Conf on Information and Knowledge Management
SSDBM: Intl Conf on Scientific and Statistical DB Mgmt
CoopIS - Conference on Cooperative Information Systems
ER - Intl Conf on Conceptual Modeling (ER)
COMAD: Intl Conf on Management of Data
BNCOD: British National Conference on Databases
ADC: Australasian Database Conference
ADBIS: Symposium on Advances in DB and Information Systems
DaWaK - Data Warehousing and Knowledge Discovery
IFIP-DS: IFIP-DS Conference
IFIP-DBSEC - IFIP Workshop on Database Security
NGDB: Intl Symp on Next Generation DB Systems and Apps
ADTI: Intl Symp on Advanced DB Technologies and Integration
FEWFDB: Far East Workshop on Future DB Systems
MDM - Int. Conf. on Mobile Data Access/Management (MDA/MDM)
ICDM - IEEE International Conference on Data Mining
VDB - Visual Database Systems
IDEAS - International Database Engineering and Application Symposium
ARTDB - Active and Real-Time Database Systems
CODAS: Intl Symp on Cooperative DB Systems for Adv Apps
DBPL - Workshop on Database Programming Languages
EFIS/EFDBS - Engineering Federated Information (Database) Systems
KRDB - Knowledge Representation Meets Databases
NDB - National Database Conference (China)
NLDB - Applications of Natural Language to Data Bases
KDDMBD - Knowledge Discovery and Data Mining in Biological Databases Meeting
FQAS - Flexible Query-Answering Systems
IDC(W) - International Database Conference (HK CS)
RTDB - Workshop on Real-Time Databases
SBBD: Brazilian Symposium on Databases
WebDB - International Workshop on the Web and Databases
WAIM: Interational Conference on Web Age Information Management
(1) DASWIS - Data Semantics in Web Information Systems
(1) DMDW - Design and Management of Data Warehouses
(1) DOLAP - International Workshop on Data Warehousing and OLAP
(1) DMKD - Workshop on Research Issues in Data Mining and Knowledge Discovery
(1) KDEX - Knowledge and Data Engineering Exchange Workshop
(1) NRDM - Workshop on Network-Related Data Management
(1) MobiDE - Workshop on Data Engineering for Wireless and Mobile Access
(1) MDDS - Mobility in Databases and Distributed Systems
(1) MEWS - Mining for Enhanced Web Search
(1) TAKMA - Theory and Applications of Knowledge MAnagement
(1) WIDM: International Workshop on Web Information and Data Management
(1) W2GIS - International Workshop on Web and Wireless Geographical Information Systems
* CDB - Constraint Databases and Applications
* DTVE - Workshop on Database Technology for Virtual Enterprises
* IWDOM - International Workshop on Distributed Object Management
* IW-MMDBMS - Int. Workshop on Multi-Media Data Base Management Systems
* OODBS - Workshop on Object-Oriented Database Systems
* PDIS: Parallel and Distributed Information Systems
AMIA: American Medical Informatics Annual Fall Symposium
DNA: Meeting on DNA Based Computers
MEDINFO: World Congress on Medical Informatics
International Conference on Sequences and their Applications
ECAIM: European Conf on AI in Medicine
APAMI: Asia Pacific Assoc for Medical Informatics Conf
SAC: ACM/SIGAPP Symposium on Applied Computing
ICSC: Internal Computer Science Conference
ISCIS: Intl Symp on Computer and Information Sciences
ICSC2: International Computer Symposium Conference
ICCE: Intl Conf on Comps in Edu
WCC: World Computing Congress
PATAT: Practice and Theory of Automated Timetabling
Not Encouraged (due to dubious referee process):
International Multiconferences in Computer Science -- 14 joint int'l confs.
SCI: World Multi confs on systemics, sybernetics and informatics
SSGRR: International conf on Advances in Infrastructure for e-B, e-Edu and e-Science and e-Medicine
CCCT: International Conference on Computer, Communication and Control Technologies
※ 来源:．Unknown Space - 未名空间 mitbbs.com．[FROM: 12.155.]
September 22, 2004
September 16, 2004
September 14, 2004
After woking hard for several days..
I finally finished the programming part of the computer architecture assignment.
Yesterday night I had to again stay up to 3 am!
And I can't get asleep for a long while after I went to bed.
I think I'm too tired for several consecutive days and I have to have a entirely good sleep today.
The remaining things to do is to pass the learner's permit exam, buy a cell phone, sign up for tax exemption, read malware papers, read strata codes and papers, think the topic of malware project.
September 03, 2004
My English Score
Your Grammar Score is: 96
Your Writing Score is: 78
Your Interview Score: 3
SPEAK Test score is: 45
Fall 2004 ENGR 600