10/14/2008

goosh 之 李代桃僵

goosh 是由 Stefan Grothkopp 写的一个unix-shell like的google-interface,如果你是1个input junkie你会发现 goosh 非常容易使用且极具快感,而且其相较于 Google Experiment Search 的Keyboard Shortcuts的半吊子又强劲的多,这点毋庸多言;并且,goosh 的login功能使得你的搜索行为可以继续保存在 Google Web History 中。虽然 goosh 会经常出现超时的问题,但是如果Google Search在国内由于种种原因而出现问题那又如何呢?也许在这种情况下 goosh 是另一种选择,如果你够幸运的话,你会发现u can kiss the Google's anus again.

8/22/2008

如何识别红南京的真假

1. 判定真假的标准
即: 何为真, 何为假的问题。可以分为2种情形: 第一, 是由非南京卷烟厂生产的"贴牌"红南京,
这是纯粹的假冒伪劣产品; 第二, 由南京卷烟厂或其分厂生产的, 但不具备红南京固有品质的红南京, 这属于挂羊头卖狗肉。

2. 识别方法
非常简单、客观,只需要查看过位于滤嘴中部的褐色小点,假红南京过滤嘴上的褐色小点都是印刷上去的,而真红南京过滤嘴上却是褐色的小孔。仔细查看,就能发现内在的区别;视力不佳者,可通过点燃,吸一口后,用手指立即堵住过滤嘴的尾部,查看是否有少许的烟从褐色小点中逸出的方法进行识别。

3. 发现假红南京后的应对策略
step-1. 要求更换其它品牌香烟或直接要求退货(成功机会 >= 90%);
step-2. 在step-1要求未果后,可直接拨打110或12315(成功机会 -> 100%)。
在和香烟卖主的叽歪过程中,请务必要保持风度,尤其是碰上刁泼的香烟卖主,更要保持风度,因为曲在彼;叽歪的步骤必须是由step-1至step-2,所谓得饶人处且饶人,并且别忘了你的最终目的:品烟。

8/17/2008

How to reference WPF types in XAML

1. If the custom WPF types had been defined in your WPF application, you can reference it in your XAML by adding the BOLD line append to XAML root element:
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:custom="clr-namespace:WpfApplication1"
    Title="Window1">
...
</Window>

2. If the WPF types had been defined outside your WPF application, you can append "assembly" clause to "clr-namespace:xxx" and spearate "clr-namespace" and "assembly" clauses by semicolon:
<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:custom2="clr-namespace:WpfCustomControlLibrary1;assembly=WpfCustomControlLibrary1"
    Title="Window1">
...
</Window>

3. The <?Mapping XmlNamespace="http://your-domain/your-type" ClrNamespace="your-wfp-app-namespace" ?> does not work again that
Ian Griffiths and Chris Sells introduced it in [Programming Windows Presentation Foundation ].

5/18/2008

地震求生的空间选择 之 Open/Closed原则

PLEASE HEED THIS ARTICLE AT YOUR OWN RISK!

今日上Google Reader,照例先看看好友有什么好文推荐,果然Vanjet 这小子有一篇题为:Earthquake Survival 101 的分享。这篇文章不仅图文并茂,而且非常合时宜;概括起来就是一句话:在地震时如何进行求生空间的选择。但是美中不足的是该文只告诉你:什么样的求生空间 是更安全或更不安全的,而对于处在千奇百怪、千变万化的现实条件下,并且受灾时人们多少会有一定程度的因恐惧而来的心理和行为的慌乱,在这样的情况下我们 应该如何选择,该文并未涉及。但是,我们需要更简单,更具一般性的原则,使我们能够在面临危机时更简单、更高效得作出更好的选择,这也是我在看完 Earthquake Survival 101 全文后的一个下意识的考虑,但是这个问题有答案吗?,答案又是什么呢?。

经过片刻的思考,我想我找到答案了,但是具有讽刺意味的是,寻找答案的过程和答案本身相对于寻找诉说答案的方式和诉说答案的过程,却又显得那么的微不足道:D 答案就是:Bertrand MeyerOpen/Closed 原则。Open/Closed 原则是Bertrand Meyer 在其的鸿篇巨制Object-Oriented Software Construction 中隐含的一个理论,较为准确的说就是:The methods, modules, classes should be open for extension and closed for modification;换句话说就是:我们必须尽可能的在不改变现有软件系统的前题下,以通过扩展软件系统的处理能力的方式来设计软件系统。但是,如 何将Open/Closed 原则应用于地震求生的空间选择问题呢?让我们先来回顾下 Earthquake Survival 101 第一幅图所介绍的场景,并且思考:为什么躲在床与床边沙发的空档处会比直接躲在床底下具有更高的安全性呢?对于上述问题,尝试性地分析:虽然躲在床底下会 在一定程度上封闭(保护)你的身体,但是同时也封闭(阻碍)了你被及时救出的可能;而躲在床与床边沙发的空档处,相应的由于你身体的横向高度同时低于床和 床边沙发的高度,因此你的身体在一定程度上也是被封闭(保护)的,并且同时也开放(增进)了你被及时救出的可能。至此,将Open/Closed原则应用 于地震求生的空间选择问题的答案就是:选择对救援是开放的,并且对身体伤害是封闭的空间。

The end: Open for life surviving and closed for body's modification.

5/14/2008

Google Reader 之 瞒天过海

Google Reader是一个很棒的RSS阅读器,这点毋庸置疑。在此,当然我不会那么无聊地告诉你:Google Reader很棒,赶快改变你现在低效的在线阅读习惯,扔掉蹩脚的其它RSS阅读器...!
我只想告诉你:如果你想要,Google Reader当然不会不给你。如果你不想要,Google Reader当然更不会说:I want u!

你只需要做一件简单的事情:在访问Google Reader时将默认的http://改成https:// 不要问我:Why?,我唯一能说的是,Google Reader为你处理了一切,当然,前提是:你想要 !

Note: There is a whitespace between the last two symbols that on the above sentence.

5/03/2008

How to partition a USB Flash Drive

Goals:
Partitioning a USB flash drive into 2 partitions. One used to general storage task and it will be supported on both the Windows and Linux; And another partition will be only supported on Linux, then you can use this partition to install a USB-bootable Linux.

Requirements:
1. A runnable Linux operating system. At here, I used Ubuntu 8.04.
2. fdisk: a partition table manipulator for Linux that existing on general Linux system.
2. A USB flash drive.

Step1. Find the USB flash drive device.
sudo fdisk -l
On my machine, I had the following output like this:
Disk /dev/sdb: 523 MB, 523091968 bytes
17 heads, 59 sectors/track, 1018 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes
Disk identifier: 0x6f20736b

So, I assume you had same the device with my which is the /dev/sdb.

Step2. Create the one partition for general storage.
sudo fdisk /dev/sdb
2.1 Use "d" command to delete all existing paritions. First, use "p" command to print the partition table, get the partition number, then repeatedly use "d" command to delete if you have more than one existing partitions. My partition table look like the following output from "p" command:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         718      360047+   6  FAT16
/dev/sdb2   *         719        1018      150450   83  Linux

Then use "d" command to delete:
Command (m for help): d
Partition number (1-4): 2
Command (m for help): d

2.2 Use "n" command to create the partition.
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1

First cylinder (1-1018, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1018, default 1018): 509

After above commands had been done, I got a new partition:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         509      255234   83  Linux

2.3 Use "t" command to change the partition's system id.
Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): b

Finally, the partition has been done, but at here this partition is not compatible with Windows yet.
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         509      255234    b  W95 FAT32


Step3. Create a bootable Linux partition.
Reference Step-2 to create a Linux partition, but use "a" command instead of "t" command that introduced in Step2-3. The "a" command used to toggle partition is bootable.
Command (m for help): a
Partition number (1-4): 2

The final output like this:
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         509      255234    b  W95 FAT32
/dev/sdb2   *         510        1018      255263+  83  Linux


Step4. Make the general storage partition is compatible with the Windows.
Command (m for help): c
DOS Compatibility flag is not set

Command (m for help): c
DOS Compatibility flag is set


Step5. Commit all work that you had done.
Command (m for help): w

If you do something wrong, you can rollback all your work via "q" command.

Step6. Format the Linux partition to ext3.
This step is optional if you like ext3 file system.
sudo mke2fs -j /dev/sdb2

3/02/2008

An easy way to add Chinese language support for Ubuntu 7.10 English local

1. Add Chinese language support:
sudo apt-get install language-pack-zh language-support-zh language-pack-gnome-zh
2. Install Arphic fonts:
sudo apt-get install ttf-arphic-uming ttf-arphic-ukai ttf-arphic-gbsn00lp ttf-arphic-gkai00mp ttf-arphic-bsmi00lp ttf-arphic-bkai00mp
3. Make a file named local.fonts in /etc/fonts/
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- /etc/fonts.conf file to configure system font access -->
<fontconfig>
 <!--  Enable sub-pixel rendering
       <match target="font">
               <test qual="all" name="rgba">
                       <const>unknown</const>
               </test>
               <edit name="rgba" mode="assign"><const>rgb</const></edit>
       </match>
        -->
 <alias>
   <family>serif</family>
   <prefer>
     <family>Bitstream Vera Serif</family>
     <family>AR PL ZenKai Uni</family>
     <family>AR PL ShanHeiSun Uni</family>
     <family>AR PL SungtiL</family>
     <family>AR PL KaitiM GB</family>
     <family>AR PL Mingti2L Big5</family>
   </prefer>
 </alias>
 <alias>
   <family>sans-serif</family>
   <prefer>
     <family>Bitstream Vera Sans</family>
     <family>AR PL ZenKai Uni</family>
     <family>AR PL ShanHeiSun Uni</family>
     <family>AR PL SungtiL</family>
     <family>AR PL KaitiM GB</family>
     <family>AR PL Mingti2L Big5</family>
   </prefer>
 </alias>
 <alias>
   <family>monospace</family>
   <prefer>
     <family>Bitstream Vera Sans Mono</family>
     <family>AR PL ZenKai Uni</family>
     <family>AR PL ShanHeiSun Uni</family>
     <family>AR PL SungtiL</family>
     <family>AR PL KaitiM GB</family>
     <family>AR PL Mingti2L Big5</family>
   </prefer>
 </alias>
</fontconfig>

4. Restart computer.

2/15/2008

Remove crashed SQL Server 2005 Express installation

If u cannot uninstall the instance of SQL Server 2000 Express installation by general methods, u can try the following steps:
1. Backup all ur data.
2. Stop and then delete all SQL Server services.
sc delete mssqlserver
sc delete mssql$sqlexpress
sc delete mssqlserveradhelper
sc delete sqlbrowser
sc delete sqlwriter

3. Delete the local security groups for the SQL Server 2005 componments.
4. Uninstall VSS Writer, Native Client componment, and Setup Support Files componment.
5. Renamed/Removed the installation folder.
6. Run Install Cleanup utility and delete all SQL Server 2005 list items.
7. Restart computer.

2/08/2008

How to disable Windows Live OneCare?

1. Disable Windows Live OneCare, run as administrator to run the following commands:
sc config msfwhlpr start= disabled
sc config msfwdrv start= disabled

sc config msfwsvc start= disabled

sc config mpfilter start= disabled
sc config onecaremp start= disabled
sc config winss start= disabled

then restart the computer.

2. Enable Windows Live OneCare, run as administrator to run the following commands:
sc config msfwhlpr start= system
sc config msfwdrv start= auto

sc config msfwsvc start= auto
sc config mpfilter start= auto
sc config onecaremp start= auto
sc config winss start= auto
then restart the computer.

2/06/2008

王立群, 提他作甚!

昨晚,看到王立群Blog有篇题为<答出版人>的新文章,总觉得不对味道,遂写了评论,评论文字如下:
王先生是有才未有情, 读史若无才情,总是干瘪。
<史记>里刘邦和项羽分别有两句话,而这两句话是解读刘项宿命的钥匙,王先生在<百家讲坛>和Blog里却都只字未提,可惜可惜!
今晚,却发现该评论文字踪影全无,评论文字不妥是一码事,删除评论文字是另一码事,既然如此何必开博!以前也看过王先生在<百家讲坛>的讲演,觉得王先生的话语用来哄哄孩子尚可,但用来当学问使就有些说不过去了。我本不写什么评论,无奈看到'答出版人'中的文字,
'<史记>130篇,有112篇写人物,但是,司马迁真正倾注了他的巨大感情来写的人物并不多,换句话说,真正写得非常成功的人物并不多,项羽是其中的一位,而且是写得非常成功的一位人物...','在数十年的教书生涯中,我讲了几十遍《项羽本纪》,很有些个人体会...'
我不知道太史公父子用其一生的心血写就的<史记>在王先生这里怎么就成了快餐,因此无论如何我得说点什么了,遂有了上面的评论文字。鲁迅先生的'史家之绝唱,无韵之离骚'对<史记>的评论非常公允和到位,我也从未看到过鲁迅先生对<史记>有过诸如'很有些个人体会'的文字(注意其中的'很'字,这是个非常传神的汉字 ^_^ );另外,王先生以'政治上的幼稚'来归结项羽政治上失败的根本原因,这种论调呈现给人的只有厌恶感和一具具的骷髅。如果我们不能还原原本就鲜活的历史,又怎能让我们正在创造的历史鲜活呢!虽然这只是一种希望,一个民族的希望,数千年历史的希望。当然有希望就要尝试,我就<答出版人>的评论文字被删除了,这是目前的结果。

评论文字中提到的'解读刘项宿命的钥匙'的两句话发生的场景,同为刘项在见到始皇帝后的第一时间说的,虽然地点、时点不同。刘的话是'大丈夫当如是',项的话是'彼可取而代之',这两句话把刘项二人的性格差异说的再明白不过,个人认为这也是导致项羽政治上失败的根本原因,在此不复多言。(推荐参考书籍: 弗洛伊德的<摩西与一神教>和吕思勉的<秦汉史>)

王先生如此这般地演讲,如此这般地开博,以及如此这般地删贴,总而言之: 提他作甚!

1/26/2008

Remove list item from Vista Programs and Features

After uninstalled VS2005, I try to uninstall Microsoft Silverlight 1.0
SDK Visual Studio 2005 Template via Vista Programs and Features. But,
the uninstalling process indicates me that requires VS2005 has been
installed. It's simple to remove the associated files with Microsoft
Silverlight 1.0 SDK Visual Studio 2005 Template, but how to remove the
list from Vista Programs and Features and Windows Registry.

There are two ways to resolve this:
1.Utilize the Windows Install Clean Up utility.
But be care for, the Windows Install Clean Up utility does not remove
the files of any programs that are installed by Windows Installer.
2.Remove the Windows Registry items by hand.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AFD5020D-65CE-4C4D-B6D8-6AAC29A4A95C}]

1/15/2008

有本好书: <Code Reading>

2005年就拿到了这本<Code Reading>,当时也没怎么太在意,后来到Ubuntu 6.06 Dapper Drake的发布,Open Source和GNU Linux对我那不加怜悯的诱惑力最终促使将其与<The Art of Unix Programming>和<The C Programming Language V2>并列于床头。如果你以Programming作为面包和黄油,并为之感到快乐,我想你应该好好研读一下;如果分号之前的假设不成立的话,很抱歉,你可以就此打住了,因为<Code Reading>和本文对你来说都没有意义。此书曾获第14届Technical效能大奖,而且她有个特性就是只有在你真的需要时才越显其价值,抱着奇文共赏,抛砖引玉的想法,但愿兄弟们能感兴趣。

Diomidis D. Spinellis, Associate Professor in the Department of Management Science and Technology of the Athens University of Economics and Business, and director of the Information Systems Technology Laboratory (ISTLab) and the lab's Software Engineering and Security (SENSE) group.
上述的简介文字是摘自<Code Reading>作者Diomidis D. Spinellis的个人主页,由于我对雅典的大学不甚了了,因此也就不能就此段如此简洁的自我介绍中发现什么特别的然而可能却是某些人非常渴望的东西:-( ,但至少从他的助理教授和实验室主管的头衔可以看出其具有理论和实践的双重背景,当然如果他是国内的教授我想我应该不会做此种假设的。另外,有兴趣刨根的朋友可以Diomidis D. Spinellis home page逛逛。

<Code Reading>主要是以NetBSD操作系统和C语言对几乎整个软件开发过程的所有方面进行了解析(Sorry, 这个词远不能达意,但我也只能如此了,我想不到其它的词能贴切得表达作者所作的所有伟大工作了),其中所有的代码实例都是取材于真实世界的真实代码,甚至真实得令人感到可怕。如果将<Code Reading>和<Code Complete>做一个简单的比较,也许是件有趣的事情,二者都讲心法,也都适合以Programming作为面包和黄油,并为此感到快乐的Programmer;然而<Code Complete>同时也非常契合那些整日BS的国内软件工程*爱好者*愚蠢和幼稚的理解力与想法;在这点上<Code Reading>完全不同,她不仅是心法,而且所有招式均来自于真实的Fighting Code,而其招式几乎乃天下武功之总汇,以<九阴真经>称之不为过也!幸运地拥有愚蠢的、幼稚的理解力与想法的家伙是绝对不会喜欢这本书的,因为这本书可能会令其丧失可以寻欢作乐的大好时光并对其与生俱来的信仰产生可怕的打击。

<Code Quality>是Diomidis D. Spinellis的另一本力作,可以称作<Code Reading>的姐妹篇,由Addison Wesley于2006年出版;还记得我曾说过以<九阴真经>称<Code Reading>,那么<Code Quality>又是什么呢?你应该明白了吧:-)。不过我不是一个幸运的人,<Code Quality>至今还没拿到,因此非常希望有幸看过此书的朋友能不吝与大家分享一下。

本文最初是发表在CSDN Blog上,迁移到此,并作了一些小的修改,包括文章标题;现在标题中'有本好书'是取自星爷<鹿鼎记>之'有间客栈'之意。

This post is migrated from <Holy Joe's csdn blog at 4/15/2007>.