wpe7.jpg (11495 bytes)

我的征尘是星辰大海。。。

The dirt and dust from my pilgrimage forms oceans of stars...

-------当记忆的篇章变得零碎,当追忆的图片变得模糊,我们只能求助于数字存储的永恒的回忆

作者:黄教授

二〇一一


一月一日 新泽西,阳光?现在是六点钟还不知道

我现在遇到的问题都不是简单的问题,首先,为了能够指定音轨和字幕,我仿照ffplay的-ast n -sst n的参数形式增加了ffmpeg的菜单,但是-scodec copy始终会出现pst nonmonotone的错误,这就是我想要深入了解pst/dst
原理的起因。另一个未经证实的问题在于,使用教程3增加声音失真,我原来一直以为是代码的问题,后来发现是我转换的媒体文件的sample48000hz好像不对,因为sdl的音频播放参数的freq被我改变为1.5倍就正常了,也就是说我的
源文件的sample有错误??再一个无厘头的问题就是在64位ubuntu编译正常的代码在32位会崩溃,我只好从环境入手,在另一个32位机复制环境。

一月二日 新泽西,阳光?现在是晚上六点钟已经太晚知道了

我差一点就出洋相了,因为我想指责大虾的同步错误,实际上我不动sdl_condWait/condsignal,或者说他们的原型condwait/signal的意义,这里有位大虾解释的不错,起试着是一个典型的supplier/provider的问题,这里
使用condwait的目的是为了保证能够从queue里面取得packet,而开始的时候我没有理解sdl_audioSpec的毁掉函数的意义,现在大致理解了,因为播放的时候音频的保证不想视频有所为的pst/dst来指导,就取决于sdl设定的音频
的freq来回调,那么你应当把回调的buffer填满,否则你的音频就不对了,这就是为什么一开始我听到女人的声音变男人的原因,那么为了这个目的,你需要同步让音频解码的packet来填满。这里就是我的小小的改造。

一月三日 新泽西,阳光?现在是晚上六点钟已经太晚知道了

我被J称作机器,我只能引用Sheldin的话来说,Don't make me wrong. I actually feel flattered, but I just don't see it.因为,看到拖着小推车离开的背影我的心里有一种被称作痛的感觉,因为这么一车车的辛苦
推来的结果就是这么再孤独的推走肯定在这样一个寒冬的夜晚里有这样自的感觉,所以,我不承认我没有人类的感情,这个是J的偏见。但是,在BigBangTheory里面问题是由Harvod引出的,假如Sheldin是一个机器人,那么他自己知道
吗?在Sheldin回答之前,那个印度小子尝试使用Asimov的三条关于机器人的定律来检验这个命题,结果却是无法判断,这似乎可以让Sheldin对这个命题的真实性产生80.5%的怀疑,:),turing测试是人类辨别智慧体的一种方法,那
么作为智慧体本身如何识别自己呢?这个命题才真的是无聊的命题。
AVFrame的前4个是所谓的picture-plane的指针,我为什么没有意识到呢?可能我始终把这个当作文件存储数据的简单翻译,这个当然是内存定义的。这里没有什么dts,只有pts,但是却有一个所谓的coded-picture-number,
display-picture-number。不明白做什么用的,总之,我作为avcodec的使用者是不需要关心frame是B祯还是P桢,只能知道是否是I桢,这个应该是够了吧?我的理解是ffmpeg因该会帮我们重新排出正确的pts的顺序,但是,具体
是怎样的呢?
我已经懒到连投简历面试都不愿意做了,就当作继续休假吧?这个是大虾的tutorial05,我只是小小的改了几行代码,对于其中的sync video/audio的算法依旧不明白。(音频轨道数乘以2来计算delay?为什么?)

一月四日 新泽西,阳光?今天是阴天

我只想说我爱你,ubuntu,因为每天都会有新的惊喜,也许使我太幼稚了吧,一个mc就能让我惊喜不已,不过这个东西太让人感到兴奋了,仿佛回到了good old MS-DOS days。
折腾了整整一个下午和半个晚上,仅仅就为了设置ubuntu10.04的samba-server,原因是相让我的windows来共享ubuntu的文件。这个不完整
1。安装samba: sudo apt-get install samba smbfs apache2.2-bin libapache2-mod-dnssd
2. sudo smbpasswd -a USERNAME
3. sudo restart smbd (it only works if smbd is running. Otherwise sudo service smbd start.)
4. modify /etc/samba/smb.conf
一月五日 新泽西,阳光?今天是阴天
学习mp3的结构,还有mpeg。。。And I saved the webpage for my personal reference.
If you see error of "empty output with child filter" when you try to view some binary file, use shift+F3 instead of F3. Then press F4 to toggle hex mode.

一月五日 新泽西,阳光?今天是阴天

如果画饼都能充饥,真正的大饼就是我的口粮了。一个早上就这么过去了,不是完全没有结果,总之,subtitle被当做了datastream写入,跟踪ffplay很简单,只要替换ffmpeg
sudo mount -t smbfs //192.168.100.3/backupII /media/backupII -o user=nick,iocharset=utf8,file_mode=0777,dir_mode=0777
This is simply my little buggy mp3 player. Of course I simply remove all video code from this tutorial. However, later when I read ffplay code, I realize it is basically coming
from there. So, I feel less guilty of stealing somebody's code.

一月八日 新泽西,阳光?今天是阴天

时间为什么过得这么快,经常一抬头发现已经十二点了,在一抬头发现又是十二点了,只不过一个是白天一个是黑夜,我的解释就是我的记忆衰退了或者是我的脑子处于停滞的状态,就比如cpu的clock的不同反应到了新的操作系统下?不知道
从什么时候开始,我开始怀疑我改造的dvdread有问题,因为我曾经观察到原本六个字幕在我这里反映为两个,(现在这个迷惑解决了,是我的错觉,因为video-title-set高错了,或者是title错了,总之,ripper没有什么问题,至少
官方的libdvdread没有问题,他使用的是libdvdcss2版也没有问题,但是我仍然没有解决为什么我设定的参数执行libdvdcss总是无法正确取得titlekey,不过这个问题折腾了一天之后我就放弃了,因为我已经严重偏离了目标。)总之,
今天早上在使用这个对于libdvdread再次封装的工具dvdbackup之后,我就彻底信服dvdripper没有问题了,(之前我开始怀疑ripper搞乱了音轨或者字幕的某些参数,这实在是insane,如同你怀疑你生活在matrix里面一样。Sheldin
有一个“著名”的判断:Do you know how I know we are not living in Matrix? Because the food should have tasted better。我现在吃的是什么就告诉我我现在不是生活在matrix里面。)这个小工具代码这么简单,
已经让我自己去作同样的事情没有了兴趣,或者说失去信心,我最多也就能这样,说不定还要划痕长时间才行。总而言之,我有回到了起点,就是字幕流的pts的错误,我尝试在libavformat/utils.c里面把compute_pkt_fields2里面
检查pts保证monotone的判断忽略非videopacket,结果当然是部队的,因为字幕显示的时候就乱了。(我现在的想法是写入有问题,就是说从vob->mp4写字幕原本是ffmpeg没有的,我强制家上的,所以,subp错误成text,(这一点
究竟是ffplay还是ffmpeg的错误?因为mplayer说不定也是使用ffmpeg的库?))总之,毫无头绪:在这一刻,我有开始一个尝试,就是忽略音频的dts的monotone的检查,因为字幕实际上和video一样是要interlease的,也许音频
根本不存在这个概念,也许是这个原因早成了。等结果把。虽然还没有结束,我已经不报希望了,因为时间绰在encodeing的时候显示就不正常了!sigh,interleave nonmonotone!究竟是增么回事?
天涯创造了一个新名词叫做“西朝鲜”,我深深的感觉到我不是孤独的,我的想法是大众化的,因此我也不可能成为鲁迅笔下的“狂人”。
失败了,和音频无关,纯粹是字幕的问题。
搜索文件找到了写字幕tag的地方:libavformat/movenc.c,我顺手把"text"改为“subp"。
查询urban dictionary,明白了bite me的意思。
我的samba server给windows的easy emule共享下载电影,让后我从我的ubuntu64再去mount这个共享发现中文是乱马,google发现没有头绪,忽然灵机一动明白和samba不一定全有关系,当然已经添加了
coding system = UTF8 <<ADD this line, very very important!!!
character set = 950 <<replace with your filename(in my case, it is GB2312)
然后重启samba: sudo service smbd restart
在/etc/samba/smb.conf的global区了,应该是我的mount有问题,所以添加了iocharset=utf8在/etc/fstab
//192.168.100.3/backupII /media/backupII smbfs credentials=/home/nick/.credentials,iocharset=utf8,uid=1000,gid=1000 0 0
想要umount结果一直失败,想要强制-l
sudo umount -l /media/backupII
然后sudo mount -a
一切搞定!
我观察道德现象是当字幕出现在屏幕上方的时候出了问题,这个是应为原来的演员表的出现,字幕被调整到上方了,然后有意思的是,从这个时间殿后再去正常的encoding字幕都有问题,当然表面的现象是这下字幕的pts都错误了,飞快地
被显示,这个很容易猜想是当pts落后的话被播放器追赶,后面所有的字幕统统都维持一个pts没有增长?(我猜想的,健身房回来在跟踪把?我饿了,就去健身房,如同郭芙蓉饿了就上茅房以样。)

一月九日 新泽西,阳光?今天是阴天

完全陷入了混乱之中,不知道头绪:1.ffmpeg0。6版转mpeg2=>mpeg4本身就有问题,我使用参数-y -i /media/data/movies/genius/BIG_BANG_SEASON_2_DISC_1/VIDEO_TS/VTS_01_1.VOB -scodec dvdsub
-ast 1 -sst 10 -slang eng -acodec libfaac -ar 48000 -ab 256k -s 720x480 -vcodec libx264 -b 1200k -flags +loop+mv4 -cmp 256 -partitions +parti4x4+partp8x8+partb8x8 -subq 7
-trellis 1 -refs 5 -coder 0 -me_range 16 -keyint_min 25 -sc_threshold 40 -i_qfactor 0.71 -bt 1200k -maxrate 1200k -bufsize 4800k -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.6
-qmin 10 -qmax 51 -qdiff 4 -level 30 -aspect 16:9 -r 30 -g 90 -ss 00:00:33 -t 00:00:10 /media/data/movies/genius/vts_01_1.mp4
而使用k9copy从dvd转的avi没有问题,(他也是使用ffmpeg,mencoder也是一样),所以,这说明ffmpeg没有问题?我糊涂了。
但是当我从k9copy拷贝下来的mpg进行转换就有问题,说明什么?可是我使用ubuntu32/64两个平台都是一样有问题,难道k9copy有什么特别的?他的mpg文件比dvdcopy的.vob小了一点点
2。完全没有头绪,不过我现在比较肯定的是dcode的问题,因为encode仅仅检查上一次packet设定的next_dts/pts和当前的dts/pts的关系,然后报错,所以出错的是decode的dts/pts的值,我怀疑字幕的pts没有连续设定,或者
discontinue,结果导致后面的dts/pts都无所适从,当然简单的加一肯定解决不了,这个问题应该是很久了,有人试图这样自改过的。
3。折腾nfs,这本来是机器简单的,没想到我折腾了一两个小时,唯一你需要知道的就是当你启动sudo service nfs-kernel-server restart/start(if not started yet)显示一直等待,那么请你检查你的portmap:
sudo service portmap status如果没有的华,sudo service portmap start这一点折磨了我好久,然后我于到mount的permission denied的问题,因为我糊涂到把自己的ip在/etc/exports里些错了。
/home/nick 192.168.100.0/20(rw,insecure,no_root_squash,no_subtree_check,async)我不知道起中的insecure是否起到了琢用方正在客户端就是简单的mount
sudo mount -t nfs 192.168.100.11:/home/nick /mnt/nick
dvdbackup是一个非常handy的小工具,不过我安装了k9copy好像我搞乱了版本,总是爆出如下的错误dvd_filestat之类的错误,找了半天,我是这样自做得,猜想是libdvdread4的版本有问题,但是很多其他程序都在用他,
后来下载dvdbackup04的源码来编译报出了libdvdread的版本有问题,所以,教训就是如果有问题,最好是下载源码直接编译:apt-get source backupdvd,在这里说到了patch 所以,这里是所有的部分

一月十日 新泽西,阳光?今天是阴天

为山九仞,功亏一篑!I am almost speechless.打定主意回国休整吧?我使用的比较工具叫做kompare。
现在我感到迷茫的就是很多工具都是使用ffmpeg的,所以。。。
所以,-g可以指定gop的大小,配合-force_key_frames hh:mm:ss:mmm,hh:mm:ss:mmm,...
我看到的现象就是我的改动让ffmpeg的时间乱掉了,-t 10秒结果走了三千多桢时间还是9秒多,说明什么?
突然想到好像好几年都没有写一些年终总结,总而言之,我自己对于去年的自己还是算满意的,因为我感觉自己最大的进步就在于linux的编程环境的适应度的提高,这一点的重要性是那么的重要,以至于和以前我的信条:只有c/c++才是
真正的程序员的语言,其他什么都是浮云;真正的程序员应该工作在linux/unix环境,其他神马都是浮云。

一月十一日 新泽西,阳光?今天是阴天

我真是糊涂连运行期和编译期包都没分清楚,ubuntu安装的包如果是runtime当然没有头文件了,简直是白痴级的问题,这么多年计算机白雪了。

一月十二日 新泽西,阳光?昨天下雪了

我差不多决定放弃字幕了,在我看来很多方面ffmpeg对于字幕的支持是有限的,因为其中的pts/dts的部分代码非常的糟糕,至少我是这么看得,完全难以掌握,而作为subpiciture的字幕理应和video一视同仁的对待,可是,对于
pts-discontinuity的问题看来没有什么办法来处理,这个问题导致了很多的问题,其中一个就是一个简单的选项-t timestamp也没有做好,因为当pts没有设定的时候,你检查是否超时就是错的,结果导致一方面packet被drop
另一方面程序不能终止,结果就是video的马赛克化,我原来不明白还以为是vob文件损坏了,一个问题因出了多少问题?总之,我决定尝试入托pts没有定义就借用dts。不过,最后最简单的就是不用字幕。

一月十四日 新泽西,阳光?昨天下雪了

一个人变老的特征就是开始会议往事,我居然花了一早上在看自己以前的日记,当然兴趣是追踪google究竟依靠什么养地搜索条目引导搜索者来到我的自留地的,结果看到一个很有取得case,如果输入“威胁:远程线程注入是一种把代
码注入到其他进程执行的行为,木马通常利用此技术隐藏自己的恶意行为。建议您阻止。 msdev.exe”作为搜索条目你居然会看到我的日记,但是天晓得我那个时候还不懂得远程线程注入,也还没有开始后来的最最简单的木马程序 ,那么
google是怎么判断的呢?很简单:命中率,对于长长的句子,google数据库应该还没有办法建立索引(这个要等到N多年以后,现在google估计连长度超过十几个字符的都不一定搜全了,你自己去算组合数),那么就拆分句子为单词,
然后找单词命中率,如果统统都命中尽管顺序不对,google还是当作命中,聊胜于无嘛。(以上都不全对,我在08年的时候的确在实验远程线程注入,google的搜索是对的。)

一月十九日 新泽西,阳光?昨天下雪了

看福尔摩斯探案集的The Creeping Man就让我想到杨狰狞老先生。这位德高望重的老科学家突然想一个他女儿的闺蜜求婚,担心自己过于衰老就附庸自己创制的从公性猿猴身上提取的返老还童丹。

一月二十日 新泽西,阳光

ffserver新版有问题,有一个patch可以改掉这个错误"encoder mux aspect mismatch...",具体错误己不清了,反正就是在libavutil/rational.h的一个函数
static inline int av_cmp_q(AVRational a, AVRational b){
const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;

if(tmp) return ((tmp ^ a.den ^ b.den)>>63)|1;
// modified by nick
/*
else if(b.den && a.den) return 0;
else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
else return INT_MIN;
*/
else return 0;
}
就行了。但是,mpg不行,据说mediaplayer总是在等待buffer全部文件,asf/mp3都可以,但是asf必须设置为无声音,否则mediaplayer不认,但是单独的mp3却是可以,说明asf的编码有问题,google说有asf的guid没有
设置的问题,我是在没有能力去深入了。这是一个很好的起点,从这里开始把。
./ffserver -f doc/ffserver.conf
./ffmpeg -r 15 -s 352x288 -i /media/data/movies/ArtSchoolConfidential.avi http://localhost:8090/feed1.ffm
这是配置文件。
Why ffserver doesn't give right form of asf? Actually ffmpeg doesn't! I am trying to compare what is generated by ffmpeg with correct asf file. The size of header is a bit
different. Here is the MS document and some web page info.(I copied from here.) Here is a tool of avi file. I think this is a great website of media file!!!
And this is an extra doc of asf spec.
There is one interesting thing. The GUID is composed of some "long int" and "int". Of course it is only used for easy representation. However, in the file binary format,
it is not the network order. (Keep this in mind.)
const GUID guid_header= {0x75B22630, 0x668E, 0x11CF, 0xA6, 0xD9, 0x00, 0xAA, 0x00, 0x62, 0xCE, 0x6C}; The byte order is not 0x75B22630, but in reversed order, or network
order. I presume this is a sort of common-sense.
我应该是忘记在/etc/hosts.allow里面加上client的ip。同时可能没有重启portmap的service。在/etc/fstab里面要这样写192.168.100.3:/media/OldData /media/OldDesktopData nfs rw,soft,intr 0 0
可是,你在命令行却不需要nfs这个参数。
一月二十一日 新泽西,阳光
关于asf的问题是否可以告一个段落?难道是因为asf天生不支持mp3?或者是我的wmplayer版本不支持mp3?或者是libmp3lame的压缩有问题?总之,我的这个命令是可以播放的:
./ffmpeg -y -i myinput.VOB -acodec wmav2 -s 720x480 -vcodec msmpeg4 -qmin 1 -qmax 5 -g 8 myoutput.asf
我觉得ffserver不能解决我的问题,还是回到怎样控制pst/dst的老路上吧。
我想我应该是回到了正确的轨道,首先,libx264是主流,能被youtube之类的采用说明经得起考验的,其次,handle庞杂的ffmpeg是得不偿失的,因为他的强项正是他的弱点,什么都兼顾了就很难被驾驭了,我用他来作输入应该
还是可取的,因为作为解码器一帮要求都不高,当然强悍的是解码效率和同步机制,如果是yuv的raw应该问题不大。这个是编译的工程
首先,./ffmpeg -y -i ~/art.avi myart.yuv -t 00:00:45 -ss 00:01:00 然后,./x264 --qp 0 -o myart.flv --input-res 592x320 ./myart.yuv

一月二十三日 新泽西,阳光

今天我终于解决了一个filezilla的小问题,我的ubuntu64连接一个windows的ftp server结果就是连接上传下载都不是很正常,具体的现象现在想起来是很典型的,比如总是不断的文我一些相同的错误,比如同一个文件被下载多次。
现在我们明白这个是多线程或者多session的问题,解决的办法就是在edit/setting/transfer里面把simultaneous transfer设定为1,当然在这个之前我把transfer设定为binary。
另一个关于perl的小程序的问题,我不知道原因,这个是代码,我唯一出现的问题是递归过程中似乎dir的句柄错乱了,后来我使用DIR而不是一个变量$dh似乎问题就没有了,我是在不明白。
但是,perl处理文件名有问题,我是在是烦透了,只好改用c++来写了。这是结果
http://helongvip.blog.sohu.com/163043649.html
这篇博客让我想起了当年拜读《1984》的时候的所接触到的那些“名词”,因为现实中,如这个博客所描述的都在那片1948年写就的幻想小说中有着精确的定义,在那个虚幻而又是现实的国家里,人们能够使用的词语被“思想警察”们不断的
删除,每一个保留下来的词语的内涵也不断地被缩减,每个可以使用的词语的使用“规范”几乎在“安全”字典里有着使用范例,经过几十年,几代人的努力,“安全”词汇就减少到了一个统治者可以控制的数量,人们的思想也就简单到了可以
操控的程度,这就是所谓的彻底的“思想改造”,(英语里的对应的brainwash这样的词语也早就从字典里删除了。)没有思想的人是最安全的,如果统治者还需要劳动者创造较高的生产率或者说GDP而需要掌握适当的“科学技术”,那么
可控的简单的,功能性的思想,在某些情况下也是被有限度的允许的。人民的觉醒不是靠唤醒,而是靠比较,这个是人类包括所有智慧个体认识世界的唯一途径。

一月二十四日 新泽西,阳光

的确,作一点正经事情是很累的,吃喝玩乐是最容易的,所以,人人都想去做,其次,就是把自己头脑里的思想原封不动的拷贝到纸张或者电脑上也是很容易的,所以,也会有很多人干,这就是人性,共产党和很多宗教不承认这一点,教育
他们的信仰者相反的,这就是欺骗。马克思,恩格斯,列宁,毛泽东,希特勒在阐述他们的思想的时候并不一定比普通人吃喝玩乐更类多少,可是,后来的人发现了其中的内容有可利用的空间,就神话了他们,这就是信仰。
我觉得很累,于是就胡思乱想,开始怀疑我的过去,怀疑我的现在,我的将来,开始对于别人的想法挑毛病。
每次看春节晚会都是一种折磨,因为当你开始思考你会觉得无法接受,比如每次都要强调今天的所谓的幸福是感谢共产党的改革开放政策,可是有没有人问过这个问题,如果没有共产党我们压根就不需要改革开放了?为什么要经过了那么
长时间才走到所谓的改革开放?很多比我老的人不愿去回答这个问题,因为红色恐怖的反复洗礼,很多比我年轻的人不能回答因为他们不了解所谓的“思想解放”之前的故事,很多和我以样年纪的人不屑于回答,因为这不能增加你银行的存
款,我刚刚吃了十几个在中国城十块钱买的六十个冰冻水饺,喝了一碗熬了一晚上的肉汤,肚子涨得难受无处发泄,所以,我想回答这个问题。任何一个政权都不愿意变革,除非他要到了灭亡的边缘,共产党在七十年代末遇到的就是前苏
联在八十年代末遇到的统治危机以样,在毛泽东死的时候,国库异常空虚,民生艰难到了极点,外患的沉重以至于让共产党宁可向从前的死敌--美国人靠拢,因为北方的苏联是有灭亡中国的决心和意愿的,至少美国这个被共产党反复称
作为帝国主义的死敌还从来没有实行殖民主义的历史,在共产党一贯的生存第一的哲学指导下,靠拢一个敌人以便抵御另一个更危险的敌人。在政权朝不保夕的情况下,不得已统治集团决定适当放松自己的权力统治。这一点的认识的重要
性是始终不被人所重视的,因为很多人天真的认为共产党为了改善民生而实行了改革开放,这是在是好幼稚,仿佛称赞奴隶主给奴隶以农民的身份是一个开明人道的驱动以样,实际的原因是因为有一些邻国因为农民的劳动生产率超过了本
国的奴隶以至于国力强大到要来“解放”本国的奴隶,或者说征服,侵略,扩张。在生与死的危机下,奴隶主才被迫的改革。那么如果你看看今天的中国现实,如果你发现很多人还是宁可相信共产党有自我改造自我更新的能力的话,你就明
白大多数人并不懂得生物进化,生存竞争的法则在现实的运用,你当然不能说大多数中国国民期望明君清官是一种幼稚,因为被奴隶主统治的奴隶本身并没有改变奴隶社会的能力,能够改变的是来自外国的力量,这个也就是中国的封建社
会延续了几千年都无法结束的原因,因为没有一个强大外国来威胁他,所以,从这个角度来看,封建制度占优的社会只有被发达国家殖民以后才能彻底抛弃旧体制进步到新的社会形态,很多人不理解宁赠友邦,不予家奴的用意,片面的否
定社会进步的必然阶段,然后在发现共产党是一个太平天国似的封建统治之后自叹中国的封建制在人心的根深蒂固。不破怎能立?日本常常被中国人又恨有羡慕,却从不愿意正视日本在明治维新的初期就确立的全盘西化的方针,总是片面
强调民族性得哪些玩意,结果看看今天的日本究竟保存的古代日本文化多还是今天的中国保存的多?你主动放弃的将来还能找回来,而你恋恋不舍的却终将保存不了。因为在一个时期一件事的重要性是不一样的。
我始终怀疑大多数中国人看得懂,或者感兴趣去看《四个婚礼,一个葬礼》,有很多的情节的笑话是很难懂得,我看字幕也未必笑得出来,看“评论”版里导演说他去东京开首映式,那是当地最好的电影院,可是他认为最好笑的一段几乎没
有人笑,就是第二场婚礼的伴郎的祝词,当然我不知道是否很多观众和我以样并没有意识到主人公在入席前看到餐桌示意图时候发出诅咒的原因,那是因为一桌子的女人都是他的前女友,彼此在冷嘲热讽当初从主人公那里听来的对于别人
的评价,大概是这样自的吧?
联系搬家公司机场接送算是把我在纽约的最后的大项支出却定下来,因为房东扣押了我的租房押金已经让我损失了一千五,我不想再多损失了,的确,在纽约这个地方你没有工作地话,生活是很艰难的,我实在懒的呆了,原来的agent
回email给我w2,顺便文我的工作,我充门面说在goldman,但是如果有bloomberg的position我还愿意,不过我自己都怀疑我是否是真心的,当然,如果纽约这里真的有什么工作吸引人的话,也是很有限的。我还是回厦门歇着吧。
看中文版的《四个婚礼一个葬礼》?简直就是疯掉了!你几乎可以肯定不知道故事情节,在葬礼之后,男主人公再说些什么呢?意思是一个问题,即便有完美婚姻这回事(且不说几率有多小),你也有可能找不到那个你喜欢的女孩子,那
么你有可能只能像葬礼的那对同性恋一样了,后面说的只有英文版你才知道为什么会有地四个婚礼,是吗?到底同性恋是不是因为没有完美婚姻+自己心仪女人的组合的替代品呢?这个我也没有听明白,反正我调到中文听了一头雾水。
最后一个婚礼新郎遭受的那记重拳使人心有余悸,我总觉得我和The Thin Blue Line里的那个傻瓜警官一样每次等到牧师在婚礼上问有没有人要对新人的结合表示反对意见的时候特别紧张,生怕自己说出什么,当然像主人公自己那样
自己反对自己结婚那就更加让人胆战心惊了。

二月八日 厦门,阳光

回到了厦门,天气很热。折腾网络,折腾时差。
我的/etc/network/interfaces下设定了固定ip,结果导致network-manager没有办法正确修改默认连接,看到很多帖子抱怨这个相关的问题,总之,如果网络连接没有出现在panel上,就去修改/etc/NetworkManager/
nm-system-settings.conf的managed=true
看x264是在是让人头疼,我现在想实验一下设定三个role=sender/collector/worker,也许所谓的pst就是framenumber,dst是不需要的?修改Input/output的“接口”变成socket来实验一下?
using CPAN ABC
perl -MCPAN -e shell
cpan> install HTML::Template
二月十六日 厦门,阴雨
总是很难集中注意力,现在终于好了一些。
每天去健身房,中国现在什么东西的价格都要向美国看齐了,一个很差劲的“浩沙”健身居然向我推销100元/小时的私人健身教练,还一个劲的和美国比较。连热水都要等二十分钟才有,蒸汽浴形同虚设,总共一层楼,早上九点才开门。
alestic.com被万恶的共产党封掉了,为什么!?简直是丧心病狂!这个是一个纯粹的技术论坛网站,为什么?只好找到这个ubuntu的官网的ami列表,希望不要被万恶的共产党有封掉了。可是为什么无法连上呢?不知道key有什么问题?
折腾了半天才想起来又是securitygroup的问题,默认是什么都没有的。一定要把source作为0.0.0.0
看到论坛里伊朗人民试图冲破政府的internet封锁使用自制的proxy,我才想到使用ec2做我的浏览器来看alestic,我就开了一个win2003.毫无技术含量,不过架设proxy-server还是要让我花上个一天半天的,所以。。。

二月十七日 厦门,阴雨

我已经确认万恶的共产党把alestic.com给封了,我是在不明白这样一个讨论运计算的技术网站为什么要被封,看来共产党自己已经疯了,无非就是运计算的平台可以开辟很多他们防火墙不容易控制的窗口吧?我非了一天时间才
配置了一个squid proxy server实在是够丢人的,似乎我看不懂说明书?
acl internal_network src 192.168.1.9/255.255.255.0
http_access allow internal_network
问题是我不知道定义range的ip为什么不行。开了一个ubuntu的smallinstance想要绕开伟光正的防火墙,结果发现比需要使用vpn之类的才行,因为现在不是简单的dns的block而是字节过滤,所以,你在纽约的服务器上网
回来的内容比需要加密才行。这么一个普通上网者都明白的道理我却没有意识到。当然使用哪些免费Proxy在我看来太危险了,因为简直就是裸奔。安装了freenx 客户端要选择unix,和gnome。

二月十九日 厦门,阴雨

昨天迷茫了快一天,做了什么?只记得把旧电脑的硬盘移到了新电脑,旧的显卡也搬过来了,那么原因是什么?只记得我的网卡发了神经完全不被识别,不论ubuntu/win7都不能发现,我删除了vmware的两个虚拟网卡以及vpn都无效,我
知道这个也许是那天我使用freenx远程连接到笔记本的ubuntu然后在其中远程关闭笔记本,同时我又去篡改router的某些参数有没有及时重启等等一系列的活动造成的吧,之前也遇到过不知道ubuntu改动了什么winxp就不能识别网卡,
总之,我知道也许我重新捣鼓一下硬件问题就能解决,于是我就拆装硬盘,重接sata线,安装显卡,结果网卡就恢复了,真是无厘头。可是我究竟在做什么呢?实际上,Nothing,就是在消磨时间。直到昨天晚上我才拜托了迷茫明确了
我的目标,这是回到厦门的第一次明白了目标。
1.使用gsoap生成webservice的接口:http://ec2.amazonaws.com/doc/2010-11-15/AmazonEC2.wsdl
2.找一个xml库实验一下。
3.重新整理sqlserver的sql为mysql兼容的。
4.等待php完成。
之前我尝试的迁移ami到不同的region也许对于linux是轻松的,无非都是使用rsync工具复制文件系统到一个volume(这里就是一句话,实际上是跨区的两个instance的olume上的rsync传送,使用ssh,等等的一堆参数),核心就是使用
snapshot登记为ami,这个核心api就是ec2-register,不过我清楚的记得amazon曾经说过此方法不适用于windows的ami。(但愿我记错了)总之,我简单实用了一下觉得asia-pacific虽然地理上离中国近但是网速似乎还不如纽约的us-east
来的快,而且价格也贵一些,有些服务业没有,比如新的所谓的placement,就是cluster的服务。所以,放弃这个无意义的尝试吧。至于代理Proxy跨越防火墙并不是很紧急的,偶尔的浏览使用免费的proxy,或者。。。再说吧。
搜索了一个上午在寻找aws-sdk for c/c++只有看到for java/c#/python/...就是没有c/c++不禁纳闷,后来看到gsoap才明白,如果你是c/c++程序员压根就不应该需要sdk,那个是给初学者的。否则你不配说你要开发webservice的应用。
让人感到汗颜。

二月十九日 厦门,阴雨

所谓的计算机迷信就是把不可解释的现象归结于一个原因,我的系统假死重启我就怪罪chrome,卸载sudo apt-get purge google-chrome-stable,安装他的原因仅仅是为了hotmail现在看来是浏览器无关的问题,那么就只有两个可能:
1。微软捣鬼。但是我的32位ubuntu正常?2。操作系统是64位?我的filezilla曾经也有问题?
ec2的api快查。以及2010-11-15的版本文档。(其实没有什么实际意义,因为亚马逊更新的很快,不过是方便自己而已。)
关于gsoap,我决定放弃c++版本因为遇到一个union里面constructor的错误,不知道是否是c98标准的问题?
wsdl2h -c http://ec2.amazonaws.com/doc/2010-11-15/AmazonEC2.wsdl -o message.h
soapcpp2 -2 -C -c -L -I/media/data/download/gsoap_2.8.1/gsoap-2.8/gsoap/import -x -pec2 message.h
codeblock崩溃的原因在于我的不耐烦和他的迟钝,打开一个3m的代码文件他就假死了。
我有点无话可说,这应该都是常识:
使用gsoap的时候,你最好是安装(自己编译也好,用apt-get也好)好处是那个import路径有了,不要使用windows的,(我之前在windows下实验了一下)
起中的xxxlib.c是你想要编译成lib的不要加入工程(弱智),链接发现未定义的soap_xxx函数当然是因为没有把运行库加入,apt-get没有编译动态库?你把/usr/include/gsoap/stdsoap2.c加入工程吧。(弱智,我说的是自己)
这个做法真的好奇怪。不要用c++版本,当然要在define WITH_NONAMESPACES

二月二十日 厦门,晴天,阳光

所以,不能使用union:
wsdl2h http://ec2.amazonaws.com/doc/2010-11-15/AmazonEC2.wsdl -u -nec2 -o message.h
所以,不能使用namespace:WITH_NONAMESPACES,不要lib
soapcpp2 -i -C -x -L -I/usr/local/share/gsoap/import message.h
我的网卡似乎在断电后依然有亮光,也许就是这个存下了什么装态,所以,只好开机箱放电。

二月二十一日 厦门,晴天,阳光

link的gsoap有问题,就是WITH_NONAMESPACES的问题,不知道什么原因。简单测试出现的问题就是没有加ssl的问题。link选项添加了ssl,却不是openssl,为什么?原因是so是libssl.so,所以,package名字是ssl。
我的codeblocks打开大文件非常的慢,我决定下载最新版本编译事实看。
折腾了半天决定放弃解决codeblocks的问题,看来是有一个所谓的wx的库的问题。
gsoap返回错误是ssl的验证的问题,我没有把我的x509的证书和key文件加入,看来真的是不简单,当初那个混蛋让我最终要在unix下开发webservice的客户端看来确实有很多的工作要做,不一定很难,但是绝对不那么简单吧。

二月二十三日 厦门,晴天,阳光

惭愧不已。因为我没有对c++的编译环境真正了解有犯了一个低级的错误浪费了一个早上。就是说在#include <vector>之类的东西只有g++编译器才能正确找到路径(具体我还是不确定),那么当你爆出了找不到的错误,我草率的把
/usr/include/c++/4.43之类的加入搜罗路径造成的噩梦是什么原因造成的?其实很简单,注意你的代码文件是否是.c,这个让codeblocks使用了c编译器。(白痴)这个原始的问题我不知道碰到多少次了,为什么还是会犯?
我现在决定回过头来看,我的ubuntu安装的是2。7版,而我不小心又去拿2。8版的plugin来编译,实在是乱!在实验一次。重新下载gsoap失败,决定使用上一次的2.81,configure需要yacc/lex,ubuntu只有bison/flex,本来
还以为要手动修正发现configure自己会寻找,聪明。就这么一点点的tip都要耗费当初多少心力。codeblocks有不少的毛病,比如跟踪ssl的时候经常会把调试程序设定为stopped,结果不运行了,我从sys-watch窗口发现手动
让他运行,这个也许是Ubuntu的问题?安装后的目录是/usr/local/share/gsoap
我决定使用wsseapi.o来链接,这样自也许编译的问题少一些。有很多的所谓的enum必须要拷贝到soapstub.h里面。总之,编译出现了很多莫名其妙的问题。。。我对此越来月感到灰心,这个东西不那么容易,因为凡是和安全有关的
东西我几乎就都没有搞懂过,连最基本的公钥私钥都忘了原理,更别说操作了。
对于《让子弹飞》这部电影我没有看过只是听说过篇名的来由,感觉就是射向旧体制的子弹已经出堂了,但是,统治者以及被统治者以及附庸在统治者身上的寄生虫却还不知道,即便是开枪者也怀疑子弹是否能命中目标,所以,主人公说
别急,让子弹在空中飞一会儿,如果统治者依然不思悔改改变现状腾挪辗转,那么子弹就真的会命中了。

二月二十四日 厦门,阴天

万恶的共产党封杀了无数的技术论坛,我真的恨得牙痒痒的!从内心深处汇集丹田之气大声喊出那句人人心中有,个个笔下无的口号:打倒万恶的xx党!
不要想当然,wsse要求很多,比如security-header的定义,我一开始没有意识到soapStub.h是一个所有改变的汇集处,百思不得其解。
invalid application of sizeof to incomplete type xxx意思是说xxx未定义。

二月二十五日 厦门,阴天

昨天等到半夜结果有睡着了,刚好webnar完了我刚好醒过来,真是扫兴。琢磨了好久才明白原理,如果要把wsse的plugin加入,你需要在你生成的头文件里加上#import wsse.h,这个头文件是从所谓的你安装的gsoap的一个ws目录
下的那些wsse.wsdl(/usr/local/share/gsoap/WS)预先生成的,这个是唯一的途径,否则,你编译你的soapC.c发现没办法用wsseapi的,(我昨天花了一下午拷贝粘贴以为plugin的例子就是这么改一改,其实不行因为有大量
的enum需要生成)同样的问题就是aws太庞大了,我的编辑器都打开困难,所以,按照ec2的风格分为模块,编辑wsdl为一个个小文件,这个是instance相关的。讲老实话这是一个体力活,我快累死了,昨天去健身房动感单车流了很多
汗。这个是全部的wsdl.
工程编译选项:WITH_OPENSSL/WITH_NONAMESPACES;链接选项:ssl/gsoapssl++/crypto/z(否则就是gsoap++,二者选一)。第一次的时候我闹得笑话是直接编译stdsoap2.cpp,当然你好debug,不过你在configure
--enable-debug应该是类似的,不过很讨厌的没有取出O2的选项,因为trace的时候步进很乱,当年在手机编译环境下也是这样自,那个时候不知道这个是因为O2的关系。
wsdl2h Amazon-ec2-instance.wsdl -u -nec2 -o ec2_instances.h (不要使用namespace,我遇到很多莫名其妙的编译错误)
添加#import "wsse.h"在ec2_instances.h的"import"提示处。
soapcpp2 -i -C -x -L -I/usr/local/share/gsoap/import ec2_instances.h
代理proxy要好过于直接使用stub里的函数,我个人感觉。
s3信添加的webhosting非常非常的适合我这类的静态文件网页的"文件堆积":http://www.staroceans.com.s3-website-us-east-1.amazonaws.com
等以后使用所谓的cname在指向二级域名吧
二月二十六 厦门,阳光灿烂,去还道路跑步满身大汗
学习pgp加密原理,这个图文并茂很适合我理解。这个里面有一点我觉得我还是不确定,就是使用私钥加密的怎样使用公钥解密来验证?从原理上来说公钥私钥是对称的,就是说使用什么inverse multiplicative modulo(我实际上不
理解)不过,从这一点来看因该是对称的,就是说私钥加密,公钥解密,公钥加密,私钥解密。那么x509的确是亚马逊用来验证你是私钥拥有这的方法。这里说的明白,只是我以前没有概念说公钥私钥还有这个用途。我的理解就是:(重复
我看到的)你计算明文的数字签名比如md5然后使用私钥加密,再把包含公钥的证书一起发送给亚马逊,他们使用证书上的公钥解密签名获得md5然后在验证受到的明文的md5,如果一致就说明内容没有改动,同时证书证实了你是公钥的所有
者,因为x509证书都是其他机构发给你的,(这个和自签名的self-signed cert有什么关系,不行吗?)起中的机构使用了机构私钥签名整个证书meta data(一般是公钥所有者的信息)和公钥一起的hashcode的加密值,这些“著名”
机构的公钥是广泛发布的所以很容易找到来验证。
我修改了apt的source.list的hk-->cn速度快乐非常多。以后在不同地区要使用不同的服务器。我解决不了amazon的问题,决定重新安装ubuntu32,不知道是不是64位机的问题,当然这几乎就是不可能的。
编译gsoap要记得安装bison/flex.
let's use "www.soapui.org" for testing first!!

二月二十八日 厦门,阳光灿烂,爬山满身大汗


如果发现openssl不能被识别,那么安装开发包。
sudo apt-get install libssl-dev
我经历了几次的崩溃,决定还是update系统再安装软件。那么我需要backup系统:sudo su ; cd /;
tar cvpzf backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /
如果restore的话: tar xvpfz backup.tgz -C /
关于对时可以这样子:1.设定ntp,需要设定/etc/ntp.conf (安装sudo apt-get install ntp)
driftfile /var/lib/ntp/ntp.drift
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server pool.ntp.org
====================sudo ntpdate ntp.ubuntu.com

三月二日 厦门 阳光灿烂

完全偏离了轨道,到底现在是再做什么尝试?gsoap似乎是有太复杂的一面,尽管仅仅就是一个设定的问题,但是我毫无头绪:
gsoap: 这个天才(genius via)公司的地址:http://www.genivia.com/Products/downloads.html
如果要debug输出到文件需要把stdsoap2.h的"debug"宏打开,这样就有SEND.LOG,RECV.LOG了。
然后这个是我的这个是亚马逊的亚马逊说我的格式不对,这里是亚马逊的说明
我完全没有头绪,比较这个soap格式我毫无信心因为我对于这个是缺乏经验,也觉得难以控制。所以,要么尝试以下csoap?我决定一步一步来学习,这个nanohttp非常的cute我觉得很好,可以作为我的一个练习。当然编译这个小东西
花了快一天的时间,因为,源代码的质量似乎不高,因为sample里面连编译错误都没有来得及修正,我觉得这也许是没有什么人用的原因,不过他超级的简单。
1。nanohttp分为client/server,共同使用一个libnanohttp.a的库,我单独做了一个lib的库减少编译的麻烦,所以就是三个小工程client/server/libnano。
2。工程的路径设置是几乎所有的工作,config.h里面有定义了一些宏时必须的。
3。我本来想搞成pch,但是linux还要学习就算了,否则这个想法应该是很有用的,因为linux的开源工程大都在每个目录下搞一个include的.tpo和lib的,其中当然冗余很多,但是如果你不想使用原来的make要自己创建codeblocks
的工程有时候是很麻烦的,如果使用一个pch把这些依赖的.h文件通通放在pch里面不是很好吗?不过我觉得要实验的东西挺多的,就放弃了。因为这个工程其实很简单的。
4。链接的库有xml2/ssl/crypto/还有就是我们自己编的libnanohttp。如果要debug输出就再一开始设定hlog_set_file/hlog_set_level。比较奇怪的是我再server设定port80的时候失败了,只能使用默认的10000,以后
再看吧。
这里是所有的文件,包括binary还不到1M,你说有多小巧?
保存一下:这个是gsoap2.81,这个是csoap1.1

三月三日 厦门 好像是阴天

s3cmd有了很大的改进,没注意版本也许以前使用windows版本很多功能没有。应该是可以正确设置mime类型的。
s3cmd --skip-existing --guess-mime-type --mime-type=text/html --acl-public --recursive --skip-existing sync ./ s3://www.staroceans.org/tools/
我觉得很大的收获就是明白了一个基本道理,authentication和soap/xml是两个东西,很多的soap project都是用另外的project的,这个是再显而易见不过的,所以,这个xmlsec就是一个很好的例子,所以,从这里你可以学习,
然后再回过头来看gsoap的wsse插件也许就可以好一些了。我刚刚在想是不是因为我使用了gzip的缘故,亚马逊不认?
S3上的所谓的文件夹是一个模拟出来的概念,所以不存在说先创建文件夹再添加文件,明白了这一点就明白为什么如果你的参数是“文件夹“末尾要以“/”结尾了。
这个是我改变了参数的s3版本的mys3filelist.cpp 但是这个结果我很怀疑有什么用,因为我的s3是一个cname似乎没有办法认识子目录,我自己也不明白怎么弄。
保存一下xmlsec,万一这个网站没有了呢?哈哈I am kidding.

三月四日 厦门 好像是阴天

这个是非常的对我有教育意义:gdb报0177的错误不能debug说明动态库链接有问题,这个和windows的动态库一样在运行期一开始就去搜索,但是我确实安装了,而且都找到了。 /etc/ld.so.conf 这个是linux/ubuntu的搜索路径
设置,而且他里面只是include其他的.conf,我也看到了默认的libc.conf有包含/usr/local/lib,那么为什么不行呢?试运行sudo ldconfig吧。比较早期的lib的安装脚本没有这个再结束的时候执行以下。
我想可能最终要这么去做:放弃soap格式,使用query,当然这个需要很多的工作,不过这个非常好的libs3让我由衷的欣喜!太棒了!
这个是亚马逊关于签名的文档。这个的实现确实挺麻烦,而且是一个很烦所的工作,这个lib有很好的例子,不过看样子不太可能把所有的ec2-api一股脑装进来,因为第一眼看上去是做了参数特别化,就说参数的位置是固定的,根据文档
好像是要排序的,是吗?还不确定。另一个潜在的问题,就是说这是一个人的工作,就是说amazon每次升级,代码有可能要更新,而不是想wsdl一样重新机器生成重新编译而已。
有一个小细节就是libs3依赖于curl,我看到ubuntu目前治安装了libcurl3,这个不是开发板,我试图找没找到,后来恍然大悟,自己编啊!这不就是ubuntu/linux的好处吗?小心一点就是再codeblocks里面debug发现getenv
得不到我定义的env变量,我怀疑编译器运行是否初始化我的env,或者说使用我的bashrc,是否是别的shell?总之我没有在这上面多花心思

三月六日 厦门 好像是阴天

有这个超级武器增添s3的新函数简直就是势如破竹,当然我的意思就是如果照猫画虎算是编程的话我就在编程了。人类的学习能力其实99%是模仿,如果不是的话,那她就是疯狂,所以,我们的社会99%是所谓的“正常人”,剩下的1%我们称之
为天才或者疯子。当然这个单纯的模仿也不是说我一点脑子都没有动,这个大侠,(让我看看他的名字:Bryan Ischo)真的是一位非常有功力的的c程序员,他使用了大量的宏,我经常有些看的吃力,因为那个没有办法跟踪的,挺头疼的,
但是你要知道他的代码非常的清晰,完全没有很多c程序员的恼人的毛病,我对他非常的敬佩,我可以想象他一定是再2008年后非常的忙以至于懒得再更新这个非常不错的库了,当然亚马逊的开发速度也相当的惊人,这期间增加了不少的新
函数,而其中的很多功能是非常惊人的,绝对不是锦上添花似的维护性的。向他们致敬。一个小小的tip就是他的代码把亚马逊的header专门拿出来处理,我一开始没有意识到,一直再http的标准header里添加storage-class,结果
总是不能正确存储RRS(reduced_redundancy_storage),真是好好笑。等我再添加剩下的功能再保存版本吧,说不定我可以完善这个库,有些脸红。
三月七日 厦门 好像是阴天
关于bucket的名字,好像有了很多的变化和一两年前相比,长度3--41,"([a-z][A-Z][0-9][-][_][.])*",意味着---或者...也可以,但是127.0.0.1不行。顺便说一下,s3并不要求一定要https
这个是我照猫画虎的工作,感觉太烦复了,我想把函数简化以下。这位大侠是非常的高明,不过,第一,有些东西时过境迁,亚马逊改变了不少。第二,他的宗旨再开篇明义地说是为了那些对于webservice/xml/https一无所知的程序员
准备的,因此,有时候,他过于照顾别人了。所以,我想做一些大的修改,先报存一个版本

三月八日 厦门 好像是阴天,不过太阳再爬出云头

看到一个post就误以为是browser的post,这个把我给吓坏了,因为以前写过再服务器端解析浏览器提交的html形式的文件上传形式,好麻烦,其实,根本是两个不同的post形式,浏览器不适用于authorization,所以,应该是和put
get/delete/header/copy等等相似的,不过这个multipart-upload好复杂。
的确是复杂,我经历了不少的问题,首先是post方法的问题,这个是curl造成的,你必须自己指定,这个让我非常的迷惑,因为http的query我写了post方法,但是再curl看来还不够吗?非要curl_easy_setopt_safe(CURLOPT_POST
, 1);反正花了不少时间才找到,这之前是亚马逊总说签名不对,列给我的不是get就是put,让我十分的迷惑,这个问题解决之后还是签名不对,不过这个我看到就是content-type亚马逊使用所谓的application/x-www-form-urlencoded
这个我怀疑是curl自动加上的,我只好强制加上。然后就遇到了现在的问题,返回http-request位0!?这说明什么呢?我之前印象中亚马逊说会不断发送空白符防止短线,那位大侠也说curl有些reset的毛病。太累了快睡着了。

三月九日 厦门 好像是阴天

现在回过头来看当初莫名其妙libaws就明白了,和这个大侠写的libs3有异曲同工之妙,甚至应该说更高一筹。因为Brian Ischo似乎把hmac以及base64都实现了一遍,至少他把源代码搬过来,当然也许不是他自己写的只是为了发布编译
方便而已,这么说也许不尊重,不过我对于这两个东西都是很感激的,让我现在才明白rest-api的认证怎么作,说出来也许不直一钱,因为亚马逊说的明明白白,我就是不理解,应该是对于网络安全缺乏基本常识吧。所以,这是几个要点:
1.使用openssl的hmac.h来计算数字签名
2.使用openssl的bio.h来计算base64(当然你自己写也可以,很简单的,只不过是good to know)
3.使用curl来链接,除非我还想使用类似nanohttp来debug
4.看样子大家都偏爱sax来处理xml,的确再Brian的注释里面不知道是他还是别人以非常强的语气批驳了当前对于所谓xml的滥用,几乎把所有的程序员都骂了一通,我也不知可否。
5.ec2的使用要比s3看样子容易太多了,至少现在我还没有看到使用post的,这就好办了。
6.现在才明白所谓的query request的那个函数的作用,这个是亚马逊s3的一个很酷的功能,你可以计算一个数字签名然后把它发给你想授权的第三方来让他访问你的私密的s3,可以限制时间 我看到的唯一的区别就是把原来的date换成了
expire,其他应该都是一样的。
Signature = URL-Encode( Base64( HMAC-SHA1( YourSecretAccessKeyID, UTF-8-Encoding-Of( StringToSign ) ) ) );
StringToSign = HTTP-VERB + "\n" + Content-MD5 + "\n" + Content-Type + "\n" + Expires + "\n" + CanonicalizedAmzHeaders + CanonicalizedResource;
请求就是这样子的:GET /photos/puppy.jpg
?AWSAccessKeyId=0PN5J17HBGZHT7JJ3X82&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D HTTP/1.1
Host: johnsmith.s3.amazonaws.com
Date: Mon, 26 Mar 2007 19:37:58 +0000
////////////////////////////////////////////////////////////////////////////////////////////////////
libaws的框架更好一点,毕竟是一个团队开发,并且使用了纯粹的c++,并不是说c++一定比c来的好,只不过作者确实是严格遵循了原则,那个singlton我还是给弄糊涂了,知道看到例子才想起来正解是创建factory再调用他的getinstance
在创建其他实例,父类使用一个创建子类的实现类的方法,比如通常叫做createSon,他是再内部隐藏一个子类的实现类的singlton,每个调用只是返回引用计数的指针,子类的实现类的constructor要设在protected,这样没有人能够
直接创建实例,因为子类是一个抽象类,他的实现类的constructor看不到(protected),所以只能到工厂类来创建。这个原理以前也用过就是老忘记了。

三月十一日 厦门 好像是阴天

跑了两天步就感冒了,早上本想去卖ssd,但是觉得有点贵,30G要500元实在是太贵了。我现在知道我丢失的链条都在curl方面,于是开始学习他的sample来设定参数,结果偶然发现gtk2.0安装有问题,解决的方法在这里
sudo apt-get update && sudo apt-get install gnucash && sudo aptitude build-dep gnucash 就是降级。

三月十三日 厦门 好像是阴天

这里是官方的wiki 也许是我安装完gtk没有重新启动?安装skype其实很简单,只要你把/etc/apt/source.list的partner打开,就可以直接安装了。
就在我有些绝望的时候,突然一切ok,这就是一种意料之中的意外。说起来实在是简单,可是我为此折腾了两个多星期,我再想是否这个问题是一个很简单的问题,否则我为什么花了这么长时间?看来我太弱了,难道调用webservice有那么困难
吗?使用soap据说有某种企业级的安全与部署的优势,当然是以牺牲性能为代价的,可是如果使用RESTFUL借口来调用和普通的http请求有什么区别呢?惟一的难点是在数字签名上,可是sha1和sha256的算法早已是家喻户晓,亚马逊也把他的
签名算法说的一清二楚,那么你还没有成功只能是你自己粗心大意,这能怪谁呢?
1.url-encoding在s3和ec2的定义有不同了,因为ec2实际上实在是比s3简单多了,完全没有必要使用soap。那么你的参数就必须是url-encoding,这中间的微妙差别是s3是不使用这些作为query-parameter,所以不出现在query
parameter而是在amz的自定义的Http-header,那么你不需要url-encode,当然最后的signature肯定还是要的。可是ec2直接就要。
2.s3的url-encode是不能包含"-_.~"等等,(至少awslib里面的代码是这样子,可是你看ec2的文档不是这样子的。)所以,你自己写吧,就三行代码而已。
3.ec2说common-param包含了timestamp实际上是部队的,因为他的例子就不用,只需要expires(注意,我少了s所以折腾了半个小时)
4.你写query的时候参数是以?开头的,签名的时候就不要了,因为你要排序(没意义吗?)
5.怕麻烦就不要https。我就是这样子的。所以,这个代码不过两三百行吧?这个就是我忙活了两个多星期还累出了感冒的成果。是在是好笑,有这么难吗?为什么没有人使用c来调用ec2呢?难道是这个领域只能是java/c#/python等等?

三月十五日 厦门 好像是阴天

mysql++的库叫做mysqlpp,变异的时候要定义MYSQLPP_MYSQL_HEADERS_BURIED。mysql-admin不好用,好像针对5/6的版本问题很多,哦好,我说的是query-analyzer,不是admin,不过也好不到哪里去,所以,使用命令行吧。
describe/show之类的table名居然区分大小写。uuid如果使用md5那么就用binary(16)来定义吧。
mysql的权限有两个层面,一个是数据库自身的所谓的privilege,这个大多都明白,另一个是链接的安全机制,就是你是否可以让某个用户从某个域来连接。
1. mysql -u root -p
2. create database amarokdb;
3. grant usage on *.* to amarokuser@localhost identified by 'amarokpasswd';
4. grant all privileges on amarokdb.* to amarokuser@localhost ;
5. mysql -u amarokuser -p'amarokpasswd' amarokdb
使用use mysql 然后describe user就看到这个表的主键是host+user,所以,我才说域是安全的不可缺少的一部分。

三月十六日 厦门 好像是阴天

mysql++和mysql是两个没有很大关系的东西,在她的介绍里说尽管一开始是只针对mysql的后来变成了通用的,这个东西确实是很好,我原来想要模仿c#的那个数据访问层,后来发现这个无聊的工作早就有人帮你做了,最让人欣喜不已的
是这个好东西让你可以畅快自如的使用stl,这个的确是好。同时学习他的例子才明白了cgi是怎么调用的,这个太初级了,因为我从来没有学过:apache2的cgi-bin改在了/usr/lib/cgi-bin然后放在这里面的都认为是可以执行的:
http://myweb.com/cgi-bin/mycgi?myparam关于最后那个myparam的传递让我迷惑了几分钟,因为代码里去读环境变量"QUERY_STRING",而我在纳闷谁写这个东西,才想起来是apache,这个是最简单的进程之间的数据传递。
他的例子代码确实很有意思。
filezilla有一个很酷的功能允许你比较目录文件,在view/directory-comparison里面。
这里是一个过时的例子,因为mysql++改动了不少,所以,有些东西在manual里面已经不对了,这个是表的创建:create table sp_500_sample (symbol char(30) not null, period char(8) not null,
price_date date not null, opening_price double, high_price double, low_price double, closing_price double, adj_closing_price double, volume double);
alter table sp_500_sample add primary key (symbol, period, price_date);

三月十七日 厦门 好像是阴天

mysql++看来还很不成熟,当然也许是我有什么地方弄错了,但是try-catch捕捉不到的exit实在是让人无法接受,错误代码0377我怀疑是gdb爆出的找不到链接库的错误,也许是版本的问题,因为我使用libmysqlclient5.1
总之,还是使用capi吧,这样子前两天等于白玩了,从头来过,当然以前在vc6上使用过现在看来高通当初在包装sqlite的接口就是完全模仿mysql,(甚至于我怀疑就是某几个印度程序员直接吧mysqlclient代码拷贝过去改一下而已)。
这是一个最后的交代

三月十八日 厦门 好像是阴天

昨天的结论是直接使用c-api,那么相对来说ec2要比较整齐,所以,回过头来处理这个,结果很有教育意义的事情就是:你发请求最好要写上你的名字:user-agent,以及accept-encoding,据说这个是必需的?现象就是我的没有
s_curlList的append的请求忽而可以忽而不可以,同样的数字签名的算法,同样的请求运行一遍又一遍,可是什么时候是http200 ok什么时候是http403 forbidden?完全无头绪,我甚至开始怀疑我和亚马逊之间还有一双看不见
的手在更改我的Http包?这简直是痴人说梦,但是当你无法解释的时候怎么办呢?出门买了几份报纸去海边散步,好几天没有出门了,自从日本大地震以来我就没有出国门,当然不是闭门思过,只是巧合,因为感冒了。外面的世界很好,
可惜都不属于我。梦游到下雨才回来,比较libs3和libaws他们都有使用Httpheader,看来这个是很重要的,也许亚马逊有很多太服务器,有些仁慈,有些残暴,所以对于我的无名请求处理尺度不一,或者亚马逊为了防止攻击设定的
拒绝策略,总之,都有可能,现在加了header好多了,同时,照猫画虎加了一个accept-encoding: gzip,deflate简直把xml-parser搞糊涂了,我自己也糊涂了,所以,使用Identity。这些都是因为我对于http的rfc从来没有
认真度过的原因,这个应该在很多人眼里是常识,去年对于connection: keep-alive对于我有着深刻的印象,我还怀疑过每次成功的链接没有切断导致下一次连接出错的想法。毕竟亚马逊说Http1.0的支持很勉强。(混乱的想法)
还有一个好笑的白痴行为就是我常常习惯的把std::string作为Printf的%s参数,导致崩溃还不明白怎么回事,后来看编译的warning才注意到说string被当作了int,那当然是了。
sax的确是让我头脑转了几个弯,我想如果没有c程序员的基本训练这种回调的回调肯定是头疼的,这也就是我当初看不太懂libs3的原因,其实我自己基本上把人家的东西拿来抄抄改改,不这样做实在是难以理解,因为你没有做之前是很
难理解为什么有这些必要。
1.没有实际操作过xml的parsing的人就很难理解为什么不用树形结构,当时我从来没有意识到内存的庞大。2.没有网络的应用就很难想到为什么parser的sax接口使用回调而不是简单的返回,想想看当你读取curl的数据的时候你是否
想要等到全部文档都存在文件里才丢给paser?这就是parsebychunk的用意,否则谁都可以写一个parser了,sax也没有event-driven的目的了,内存占用少阿,直接吧parser的event抓过来呀。不过xml的indent还是让我很
恼火,为什么不去检查一下whitespace呢?而且那个所谓的ignorewhitespace毫无用处!也许我理解错了用途,总之我只好自己手动检查每个节点是否是indent。也许ilt之类的库可以,但是为了这个小问题引入一个库实在是不值得。
事实证明之前的所谓结论还是错的。1.亚马逊没有那么多的花花肠子去防范什么攻击,实在是痴人说梦,作为api就是可靠第一,用户做测试又怎么样,不行吗?2.不存在不同的主机处理不一样,我检查了即便同一台也会时而可以,时而
不可以,不同的主机都是这样。3.和协议无关,我使用http1.0也是这样子,libaws的作者说amazon不能识别transfer-encoding: trunked那可能是两三年前的事情了。4.所以,我给你个提示,亚马逊的错误信息说我的数字签名
计算有误,我还不服气,因为为什么算法是一样的有时候对有时候错?
结论算法当然是有错了,错误的原因就是我太相信亚马逊的文档,所有编程文档几乎都不是程序员写的,所以,注定是错的。(我大放厥词之后再读一遍发现还是我理解英文错了,还是他们写的难以理解?就是space在url-encoding
的问题,我居然理解为+不要percent-encoding,这是什么阅读能力?白痴?)所以,当签名出现+号的时候救出错了,这么简单?)这个bug还真不容易找啊?!因为只有我才犯这种错误,实在是离谱!

三月十九日 厦门阴雨绵绵

昨天究竟干了什么我都忘了,总之,就是把一个简单的xml模块从c#改成了c,原本以为还要去改写s3成lib,后来想起来这个是脚本调用,所以,这个麻烦工作暂时不需要了,那么今天就是简单的改写配置,logger,和模板,这个是
我找到的简单的logger,可是很费解,我始终不明白模板集成类的constructor是怎么调用的,今天,很头疼。后来看《武林外传》电影版,我觉得文化代表了思想,就是说反传统,这是时代的特征,对抗权威是某个年龄段的必然,
也是生物进化的结果,否则怎么能够一代胜过一代?去环岛路淋雨,还是头疼,为什么这么简单的工作我却无法尽快完成,每一步都那么沉重。
linux下获得当前运行文件名的方法大概有这么几种:1.argv[0],这个被去除了路径。2.readlink("/proc/self/exe", appSettingPath, sizeof(appSettingPath));这个是系统的symbolic link。
3.extern const char *__progname;我一开始怀疑这个仅仅是编译期的常量,后来改名发现也是对的,所以,很可能也是第二种的变通?我不能理解。
看来去西部是没有办法的选择了,LA?SF?

三月二十二日 厦门阴晴不定

昨天究竟干了什么我又忘了,反正每天改动一个或半个模块,今天遇到了一个前所未有的问题,就是debugger的问题吧?我至今不敢相信这个是debugger的问题,心里一直忐忑不安担心是内存的corrupt,这个对于谁都是噩梦级的
问题,我简直不敢想象如果发生了该怎么排查,尤其是我使用了那么多的别人的库而我对于使用一知半解,当然我压根没有怀疑过curl/xml2/hmac等等的问题,可是谁敢说我没有误用呢?现象就是在调试的时候检查某个变量的值的时候
debugger爆出的异常,msg是The program being debugged was signaled while in a function called by GDB. ...后面一些解释我也不明白,有一个建议是set unwindonsignal off。我实在不知道在codeblocks
里怎么作,就随便在debugger初始化的菜单上加上,google了很久毫无头绪,大概有一个人的情况有些启发就是他说他的所谓的view-controller和gdb有些信号的误会,我只能猜测这个应该是debugger和gdb的衔接的ui的问题,
反正后来发现我的一个阴差阳错的低级错误让我追究这个问题,我的程序的结果是队的,尽管跟踪到这里会crash,难道我真的干了什么内存越界写的坏事?我最近良心挺好的不应该呀。祈求上苍吧。
如果说行百里者半九十,那么我才做了大约30%的工作。

三月二十三日 厦门阴

进入到mysql的编程阶段就有一次把之前的问题摆出来了,究竟是否要像c++对像使得操纵数据库还是直接是有纯粹的mysqlclient的纯c接口?后者当然可以只不过从c#移植就太麻烦了,也许。。。所以又不得不吧mysqlpp捡回来,
从我看到的有些人的评论这个应该是有一定用户的不可能那么的幼稚,一定是我搞错了什么,为了追踪方便我把它变成静态库,似乎还是不错的东西,至少使用perl来产生那个庞然大物的所谓的ssqls(structured sql something??)
是非常聪明的,我还是很佩服的。
早上又发现了另外一个比较严重的问题,就是所有的类都是写成了纯粹static的方法(伪c++。所谓的类更象是namespace),会有所为的threadsafe的问题,比如stl的静态对像所有操作,xml的读写?(不知道)curl?(这个
也许没有问题)但是这个无疑是挺麻烦的问题,要话不少时间来改造。

三月二十四日 厦门阴

数据库的接口都是体力活,制作的view才感到当初真实勾魂单的设计。
京东一出还有那些地方电子城攒机小商贩的活路吗?我觉得是一场商业革命,发货速度从网上看实在是飞快,而且支持货到付款,等收到了货再评论。
mysql++里面有一个ssqls的小issue,就是多个Module都include定义的时候链接会有重复定义的错误,这个在说明文档里说的很清楚,就是定义一个宏,还好我心里很明白这个错误的原因没有花太多的时间就决定读文档。
#define MYSQLPP_SSQLS_NO_STATICS
auto_increment=1的语法并不被很多mysql的引擎接受,你就不要=1,事后用alter table去改吧。
tar cvpzf backup0324.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup*.tgz --exclude=/mnt --exclude=/media --exclude=/sys --exclude=/home /

三月二十五日 厦门阳光灿烂

这个实在是搞笑,我突然发现我不知道怎样从c调用脚本得到运行的结果,这应该是很简单的问题,但是好像看到exec/system之类仅仅是告诉你成功与否,不想window里面你可以指定子进程的stdio之类来获得全方位的控制,总之
我google了好久无头绪,这个应该是一层窗户纸,但是我确实无头绪,最后想干脆重新编译condor算了,linux下经常有这个极端的发生,因为一切皆有可能于是你可能用无上心法去成就一个微不足道的小事。但愿不要让我再去改写
什么了,我都要被笑死了,苦笑。
每当我使用mysql++我都要被震惊一下,这个的强大功能是无与伦比的,且不要说与数据库平行创建数据表对象的轻而易举,但说天衣无缝的与stl的结合就是鬼斧神工,直接使用stl的container承载数据对象真是真正的面向对象
的数据库“引擎“,而不是很多随便加上一个++就号称c++版本,比如gdi+,简直就是脱裤子放屁,多此一举,还不如纯粹是用gdi原生api,我几乎看不出什么好处(大概唯一有一个所谓的devicecontext释放有一定的好处,仅此而已)
所以,mysql++的作者应该被众人仰慕一下,当然,等我再检验一下性能与可靠在评论。
编译condor主要遇到的问题是他的externlib的部分,kerbros5的库有些陈旧了,遇到一个error未定义的小问题,这个帖子让你放心他是无害的。我不太明白ubuntu发布的库他们怎么绕过去,为什么源码他们不去作秀正,也许
这就是ubuntu的一个好的做法,就是这类问题对于很多用户是不管信的,他们只看重结果来使用,所以,你给他们解决的binary版本,那么真的要开发的话,还是给完全的original,你既然都想开发了,这个编译的基本问题都解决
不了岂不是痴人说梦?fair enough!
当然,我应该尽量不去改代码,有些应该是纯粹设置的问题,比如你自己不知道kerbros5的configure单独编译可能有不少问题吧,不如先尝试让condor的make脚本,当然了我之所以单独尝试编译kerbros是因为编译出错我想
pinpoint问题,那么改正了以上的小问题就应该回去让condor的make脚本工作,除非我想去读那个makefile,unless I am really insane.(但是实际上编译还在进行中。。。)这种庞大的c的工程让我想起了在lenovo
mobile里的日子,我一直对于其中的一些编译结果持怀疑态度,这个就算是今天我也不能确定,因为如果有人告诉你第一次编译出错,不修改任何代码再次运行make结果编译成功了,你怎么看?或者有人给你说你不修改代码,仅仅
把某些文件的修改日期改为今天然后就通过了你怎么看?我的感觉就是某种编译的dependency决定了某些编译结果的正确与错误。而Makefile没有正确的体现出来,必须要考这种人为的干预,也许是错误的干预,所以结果也许也是
错误的。事实上错误的程序crash掉并非最坏的结果,反而是继续莫名其妙的运行才让人抓狂。可是那个时候能够编译通过手机不死机就是我们的最高目标,这结果是可想而知的。
忘了说编译之初的选项:./configure --disable-glibc-version-check --disable-gcc-version-check因为gcc4.3/glibc2.6太高了。
另外的建议是这样子的:
-DEAI_NODATA=EAI_NONAME
condor就是一个白痴,因为他顽固,我折腾了半天才明白他不仅仅编译自己的extern还是直接从wisc网站上下载来的2005年的古董,我改了半天他就是要先删除在下载,我一怒只好屏蔽这些脚本。当初就是一个错误。

三月二十七日 厦门天还是黑的

事不耳闻目见可信否?如果你不去亲自尝试编译condor你根本不明白这个工程的浩繁,它支持的太多了,而且是很多年以前积累下来的,所以,连glibc的版本都很低,那么你真的像我这样徒劳的削足适履是无意义的,最终会放弃,
正如很多手机公司据说是不修改android代码作开发的,因为她一升级你怎么办?当初我尝试了三个方向:1.硬性小改小骗希望问题不是很多,证明是徒劳的,整体上不兼容的很多,后来发现连ckt compiler都宣称不兼容,而我
那个时候还在外围编译呢!(external)到他的核心代码不知道还要奋斗多少天。2.撇开主干单独编译他的api,这个本来是我的目的,我幻想这是一个捷径也许运气挺好,可是不从理论上说,但从一个程序员的直觉你就应该看的
出其中的幼稚,一个浩大工程的对外界口含数岂不说需要运行库,但说你的开发包都不解决却去尝试单独编译?这本身就是一个笑话,很难想像他不需要内部函数就能直接运作,这个压根就是死马当活马医的痴人说梦,以后应该力戒。
3.那么难道这个问题有这么难吗?ubuntu又是怎么发布的呢?不可能要求他们对于各个软件包都做上长时间的研究测试吧?所以,问题的答案是明确的,一定是简单的可行的,唯一需要的是你的认真阅读与理解。
./configure --disable-gcc-version-check --disable-glibc-version-check --without-krb5 --without-globus --without-unicoregahp --without-blahp --with-oci=NO
--without-gcb --without-postgresql --without-gsoap --without-drmaa --without-vmware --without-coredumper --enable-proper --disable-kbdd --disable-quill
--disable-bgd-support --without-libvirt
你需要一个简单的参数enable-proper其实其他的都是无效的,因为这个是所谓的折衷,“非condor“的way,开发者为了推广而改良的,但是前提你还是有些硬指标要达到,比如libpcre,libvirt,注意要开发版dev的。那么
让我们拭目以待吧。
find . -name '*.o' | xargs /bin/rm -f
而且你自己定义有可能与系统侦测的冲突,比如HAVE_EXT_CLASSADS是在有classads的时候,可是。。。还是不对!找呀找,找到condor团队的一篇超简单文档。这里是一个加拿大的朋友的编译经过,我表示怀疑他的结果,
因为当出现condor_ckt的imakefile和现有compiler冲突的时候我没有看到她做什么,这一点和我是一样的,因为你的makefile在condor_ckt下面应该是有问题的吧? #error Checkpoint library not
compatible with compiler! 这个错误应该是gcc版本和glibc造成的吧?我决定老老实实下载gcc4.2.4和glibc2.4来实验。而且我现在的做法应该是安全的,我用新买的ssd做了一个信的ubuntu10来誓言我的编译环境
省的有什么干扰,即便除了什么问题,也不影响我以前的东西,当然以前是有备份这个有些坐坐。
无厘头的定义:#define basename basename(根本是废话对吗?)我是没有办法才这样子在configure之后的config.h立着么定义,因为在string.h里面随着升级,c++的定义是和libgen.h是不同的,所以要避开。
之前的condor_ckt的imakefile不兼容的问题,我就硬性注释掉了,可能没有用,只有禁止checkpointing
#undef DOES_CHECKPOINTING
#define basename basename
编译condor是否很容易?如果为了他而退回gcc/glic等的老版本甚至是去选择别的linux那是可笑的,不过我确实感到有些困难,因为我的时间不多了。
This is what I found how to compile blender2.5.
1. sudo aptitude install python3.1-dev scons subversion libsdl1.2-dev libxi-dev libopenexr-dev libavformat-dev
libsamplerate0-dev libswscale-dev libtiff4-dev libavdevice-dev libopenal-dev gettext
2. svn co https://svn.blender.org/svnroot/bf-blender/trunk/blender
3. scons

三月二十八日 厦门天是晴朗的

今天闹了一个大笑话,我的网络链接不上,一开始看到是pppoe连接失败那是Isp常有的事就耐心等一下好了,我偏偏手贱非要折腾结果误以为我的网卡除了问题,结果重置router,却又忘了改变我电脑的网段结果router默认在
192.168.0.1的网段,而我的电脑全部都在192.168.1.x那么ping不到也是对的(这里要补充以下是在电子城被教训的,当时我心里暗自庆幸我没说我是学计算机的,只是当作一个普通白痴用户,没有设定电脑为自动接受ip那么你
怎么连接?没有设定正确的ip所有都免谈,因为这个时候router在别的网段是dhcp自动,而我的电脑通通不能被正确分配ip,那么连接不上是当然的了。)所以,设定固定ip虽然方便我管理却要每次网络出问题重置都折腾。
在路上决定暂时放弃编译condor,改为实验脚本输出,看看perl脚本用pipe连接stdout回父进程。
我知道我的问题其实就一步之遥,简单的解决久还是使用脚本,等以后在折腾condor吧。那么自己创建fork/exec/pipe/script的路线也真麻烦我试验了以下还是不知道怎样在perl里面把当作参数传进来的父进程的pipe
打开重定向,突然搜躲到了popen才想起来当初学校里面已经教过了这个方法,所有的以上步骤一个函数,真是有些让人哭笑不得。

三月二十九日 厦门天是晴朗的

要让ibus自动启动只需要把system/administration/languagesupport里面的inputmethod设定为ibus就行了,压根就不许要添加到什么启动菜单里。今天无意中把application-panel删除了,找到了恢复的办法
太好了:1.呼叫terminal几个方法(alt-F2然后运行gnome-terminal)非常的handy!)2. gconftool-2 --shutdown 3. gconftool2 --recursive-unset /apps/panel 这个可以是一个确认
rm -Rf~/.gconf/apps/panel 4. pkill gnome-panel
几行代码
今天下午解决了一个要命的问题,非常的令人悸动,mysql++又一次的让我震惊,问题实际很简单就是使用ssqls模块的正常存储对于表设定了auto_increment的情况的解决,这看上去是mission_impossible,否则,你就
自己写query,但这基本上就失去了使用这个结构华数据的意义,否则还不如直接使用mysqlclient来的便利,可是,你怎样告诉query你不要存储key在insert语句里?你想去改ssqls.h吗?我看了几分钟就知道这个不现实,
这个是一个复杂的超级巨大的宏的集合,而他本身又是由一个超级复杂的perl脚本自动产生的,你如果有实力去修改stl的代码当然你有可能去修改这个头文件,前提是你还要有相当的perl的功底再去改perl,你行吗?难道真
的要回到自己写query的地步吗?不是不可以,可是。。。所以,google来google去,好像没有人有这样子的问题?还是你找的关键词不对?回头看manual,豁然开朗!你看到作者对于自己的宝贝是多么的珍爱!的确如此利器
岂能自专?你看文档里面说这个ssqls有那么多好用的东西你不是很想把它拿出去用吗?怎么用呢?关键就是这个聪明的field_list/value_list这两个函数我看原型都没看懂,因为埋藏在巨大的宏里面,你不知道他的参数
是什么意义,你知道tablename_fieldname变成了enum而成为这两个函数的参数变成了好像bool一样可以控制那个字段包含,这简直太棒了!我要说mysql++的作者真的不是普通的程序员,实在是太牛了!问题解决了!
安装了winxp的虚拟机,我觉得简直棒极了,现在我看不出我还有什么必要留在windows里,一切都可以在ubuntu里完成。

三月三十一日 厦门的天是晴朗的

今天我都不知道我是怎么走到这一步的,早上起来改代码突然发现我要去调用一个什么东西来发送email,这个本来也不是什么很难得事情,当然,早期的smtp是不幸的,现在至少要smtps或者在tls/ssl之上来使用smtp服务器,
当然好像也有大侠说明怎样自己创建smtp服务器,这个实在是超出了我的需要和能力与时间了。当然网络上搜索smtp-client的代码一大堆,找一个包装了openssl的socket的也不是很难得,何况我以前就在windows下玩过
别人这么做的,所以,无非就是搜索编译以下,这个不错,代码写的很规范,不过论坛上有一两个人指出了他接受的内存指针错误,我不知道他为什么没有改正?用别人的代码至少也要看一下吧,我觉得一个程序员最重要的一个词
叫做manageable,就是说做的事,说的话,想的问题,要和他的能力相当,不要求你所有的工具代码都要自己写,但是你要能够manage得了,就是说自己至少有能力写或者改造,否则就是玩火。当然今天我做了以下比较发现那些
自己写的base64/md5的代码和openssl库里的效率相差了大概5-10倍,所以,仅仅从这个意义上来说你没办法全部都自己干,因为你没办法写出所有高效的代码与算法,据说一些加密所发就是因为找到了高效的算法才成为实际
的应用,否则还是数学家的宠物。测试中发现了一个有趣的问题,就是把一个buffer怎样包装成std::string,我看到有人用std::string的insert(pos,ptr,size),还有人使用stringstream的write(ptr,size)
然后输出stringstream的str()这两个有多大差别呢?在我的测试中发现两者的效率差了将近十倍,好奇怪?又碰到了之前认为是debugger的问题,我觉得很有可能还是内存分配相关的问题,我一开始怀疑是指针alignment的
问题,比如我分配的是char*然后在fread里的两个size_t的参数分别是sizeofbuf和sizeofpointer,究竟能不能调换呢?我使用malloc的时候掉换了就会有错,而是用new得到的好像总是出错,我怀疑是因为new分配的
内存实际比我的指定size还要大8个或多少,然后在debug模式下在首尾放了一些fence的字符看我是否越界,但是,这仅仅是猜测,总之很奇怪,几行代码就有内存越界?
使用BIO来进行base64编码是这样子的,
编码: b64 = BIO_new(BIO_f_base64()); bio = BIO_new( BIO_s_mem() ); bio = BIO_push(b64, bio);
解码: b64 = BIO_new(BIO_f_base64()); bmem = BIO_new_mem_buf((void*) ptrDataIn, size); bmem = BIO_push(b64, bmem);
然后编码用write,解码用read,最后从mem里面读出数据指针BIO_get_mem_data,最后BIO_free_all
好累啊。
有人写了这个以下的函数,我看了好几遍还是不敢相信自己的眼睛,因为如果是一个初学者连基本的cast都不懂的话也没什么好说的,人都是从那一部过来的,可是问题这个作者绝对不是一个初学者,是一个对于c/c++编程有很多
年经验的,因为,这个是明白的,且不说一般的编程技巧,单单要弄清楚email的各个握手协议也要任何人都肯去读rfc的大量文献了,这怎么可能是一个初学者呢?可是你能告诉我他这么做有什么高深的意义吗?我完全不敢相信,
当然,此人的代码问题非常之多,我非常怀疑他怎么就能够凑巧就能够正确运行,这一点是我捡验过的,可是现在仔细看代码吓出一身冷汗不得不逐字逐句的改。真实令人难以置信!!!我不敢相信原来的作者会犯这样子的错误,多
半是那个中国小孩子添加openssl的时候乱来的,不过我也懒得看代码确定孰是孰非了。
unsigned char* CharToUnsignedChar(const char *strIn)
{
unsigned char *strOut;
unsigned long length, i;
length = strlen(strIn);
strOut = new unsigned char[length+1];
if (!strOut) return NULL;
for (i=0; i<length; i++) strOut[i] = (unsigned char) strIn[i];
strOut[length]='\0';
return strOut;
}


四月三日 厦门的天是晴朗的

今天终于完成了coding,明白编程的人知道这个大概就是50%的工作,这并不是文人们夸张的行百里者半九十,而是因为还没有开始debug呢,当然单单编译链接就有一些东西要记录下来以便将来。
1.mysqlpp需要增加维数,默认是25,作者说超过这个编译器的工作要大很多,因为这个由ssqls.pl产生的ssqls.h会大很多,所以,改ssqls.pl设定位35,我最大用到34,编译安装没有什么特别。
2.curl,默认系统都只有运行库,synaptic也不会有什么lib库,你自己下载source编译就是开发包了,我也没有设定特别的选项。
3.xml2
4.ssl
5.crypto
6.mysqlclient,这个你要安装,synaptic的安装包好像是虚拟的,自动匹配最新的,其实我是因为sqlpp用到,没有直接,所以,运行包?不还是开发包,因为头文件需要。
7.头文件里面最麻烦的是sqlpp,因为ssqls.h里面有些static的数据,因此这个头文件不能简单被别人引用,否则在链接时候会有static成员重定义的错误,所以,在所有其他的include前加上
#define MYSQLPP_SSQLS_NO_STATICS,只在主要实现的cpp的include前不要加,这一点在用户手册说的很清楚,问题是你是否去读,我一开始不读就浪费了很多时间。
8.关于使用namespace,你在头文件里面把定义的部分加到namespace里本来是件好事可以避免名字冲突,但是在cpp里面有选择不加入namespace而是仅仅引用,这个也是干净的做法,但是在代码里面用到了头文件里定义的
东西的时候要小心这里会有所谓的amibiguous的错误,因为在namespace里由一个定义,在本地也有一个,你不加mynamespace::myfunction会有麻烦的,这个错误折磨了我快一个小时,我当时一直认定我的base64
encoding函数可能和系统的重名,改名字就改了半天。
9.关于pch就是precompiled headfile我一直想采用,结果就定义了一个stdafx.h,想把utility也加入到这个头文件,这里就烦了一个设计的错误,你的stdafx.h究竟是一个类型定义的地方还是仅仅是众多基本头文件
的include场所?我本来是想两者都是,结果基本类型也定义在这里,基本的utility.h也include在这里,那么utility里定义的类型也在这里,变成utility也要include stdafx.h,你看到了递归的include吗?
这个问题应该是可以解决的,但是我懒得再去想了,索性坚持一个原则就是stdafx.h仅仅include系统必须的头文件和基本自定义类型,然后所有的其他的头文件通通要include stdafx.h,至于其他我认为基本的自定义
的模块的头文件只好每个用到的都去Inlcude一番,这个当然不理想,不过也基本达到了pch的目的。
10.多线程的问题太复杂了,我现在压根不敢考虑,全部去除,首先我还不知道mysqlpp是不是完全安全,至少mysqlclient的capi据说在初始化不安全。curl的调用呢?ec2是webservice应该无所谓线程安全,但是我不知道
curl内部是否有socket的问题,当然这个可能行很小,但是最大的问题来自于stl,不论是那个模块我都大量的使用stl的container,这个绝对有问题,因为至少在xml的模块有定义了static的stl container那么xml
相关的写操作就有问题,其他几个模块我原本想为了方便都开发成static的方法,后来发现这个在多线程很可能会有问题,除非我没有static的member data。
11.condor的问题现在基本上是使用popen调用api,应该没有什么线程的问题,但是我之前为了效率实现的一个简单的Job状态的本地的cache类可能还是有线程的同步问题,因为还是stl的问题。
12.email的代码实在是很糟糕,那个小孩子的代码我很担心谁知道那里有什么内存泄漏的问题?更糟糕的是我很担心他的指针操作,写乱了内存那就是梦魇了,对于http的收发的buffer大小判断我也没有看过,这个我感觉将来
不知道有什么问题,先凑合着,将来在说吧。
接下来准备一个模块一个模块单独测试,但是还是几个模块很难单独测,所以要上线测实在是够呛。log总觉得很慢,能不能找一个更好地呢?
另一件事,就是先把所有的warning都检查一遍,这里面至少可以排除很多的错误。
山间弹指方一瞬,世上沧桑已万年。

四月四日 厦门是阴天

今天测试,首先base64转换需要set一个flag:BIO_set_flags(b64, BIO_FLAGS_BASE64_NO_NL);否则亚马逊说数字签名不对。然后我对于debugger爆出的gdb fail to set controlling terminal感到烦心,
据说netbean也有这个问题,但是有人能通过改成window来去掉,所以论坛说这个是gdb的问题,我按照别人的说法把console改为gui在codeblocks里这样当然不存在warning了,可是这根本就不是我想要的,而且开启的
debugger log里面怎么输出我的stdio的信息呢?是否还需要windows下的debugoutput函数?有吗?放弃吧。
更严重一点是curl的getaddrinfo经常失败,我找了半天也没有头绪,这个问题难道和dns服务器的不稳定有关?在中国的网络条件下任何事情都会发生,公产档的“长城“防火墙什么都过滤,什么都要被拦截,本地的isp经常有
些莫名其妙的改变,我买的劣质路由器说不定也有问题?反正我的程序自身的问题几乎不应该考虑在内!(sarcarism?)万般无奈之下我吧curl的ipv6的支持屏蔽了,重编译,但是你要记得ubuntu安装的curl在/usr/lib下
我自己的编译的在/usr/local/lib下,我又去改成symbolic link来临时指一下测试看有没有效果,我做这件事完全属于无厘头,只是听说ipv6有很多服务器现在开始慢慢要支持了,所以,按照程序员的基本常识,这个时候
大概是ipv6程序的“黄金“调试期,你就不要去被人家当作免费测试员了。基本上我从来就不相信ipv6也不想明白,所以,我生活的一直很幸福,现在也不想有烦恼。至少这个随机性的错误好像没有了?再运行几十次才知道。
spotinstancerequest大概花了60妙(12x5秒)instance启动花了40秒,亚马逊其实挺快了。
当然这种无里头的使用ipv4是不可能有结果的,归根结底是gethostbyaddr之类的函数失败,但是curl的easy函数却没有重试,也许有什么参数可以强制重试,可是我看不到,没有办法,只好用笨办法,我自己先去呼叫获得
amazon的ip然后使用ip而不是域名aws.amazon.com来访问,当然数字签名和url必须要一致,我自己呼叫dns server的时候多试几次,遇到TRY_AGAIN和HOST_NOT_FOUND都重来,有什么办法呢?在中国一切的网络问题
我认为都是公产档的gfw造成的,所以,我只有再次从心底里咒骂这个混蛋政府一万次,如果要给这个诅咒加上一个期限我想就是一万年吧。昨天在加州广场四楼看到“新舞堂“的小孩子们跳街舞,感到实在是惊讶,中国的新一代绝对
不会向他们的父辈一样甘愿接受这个封建政府,所以,他们将来都是推翻这个制度的战士。
顺便说以下,ec2-api-tools是没有处理dns访问失败的,所以,你要庆幸自己去作这个lib,而且粗略比较c程序当然比命令行快了好多倍,这个是当然的,因为那个命令行是Java库,(为了分发不同平台这的确是最好的选择)
而如果你在写perl脚本去调用再去解析字串的话,你可以想像这个差别是不可以以道里计。

四月五日 厦门是阴天

服务器配置软件列表:
condor openssh-server mysql-client mysql-server curl mysql++3 vim ec2-api-tools s3cmd p7zip-full mc libmysqlclient-dev
编辑/etc/network/interfaces
auto eth0
iface eth0 inet static
address 192.168.0.7
netmask 255.255.255.0
gateway 192.168.0.1
编辑/etc/resolv.conf (其实和Ui界面修改connection相似,不过sudo /etc/init.d/networking restart不成功我又把他该回去了,不知道什么问题。原来networking已经被networkmanager取代了,所以
没有问题的。)
search 8.8.4.4
nameserver 8.8.8.8
安装的condor默认位personal condor,你必须吧allow-read设定位*之类的worker才能加入。如果需要persistent config,记得把目录的读写权限打开,我不知道daemon是否需要?忘了。remote-config需要吗?
全都忘了,又要重来一遍。
安装openssh-server的目的仅仅是为了能够使用scp来拷贝文件。
worker配置软件列表:
condor openssh-server vim ec2-api-tools s3cmd blender p7zip-full
我因为连接速度的关系把repositary server设定位中国,结果安装gpart显示package broken,这个非常的奇怪,google发现可能是镜像不同步,这个地方建议把synaptic的updatefrom给动然后reload,然后好象就
可以了。vmware的虚拟机磁盘扩容应该是windows下的问题,Linux应该原生就支持,所以,是我自己找错了,我google了半天不得要领,结果发现vmplayer自带的expand的菜单,但是我磁盘扩展了,ubuntu并不认,我
一开始还是以为要resize2fs之类的,但是好像ubuntu压根就没看见磁盘从4g变成了10g,也许我应该手动修改虚拟机配置文件?等我想到这里我已经删除文件重新安装了。安装其实不需要找网络进行配置,vmware自己有向导
还支持iso启动,很方便的,倒是我一开始就google反而被误导了。
安装单核的虚拟机好像有问题,也许是我一直在看网络电影结果卡死在哪里不前进了。所以还是决定安装双核。
安装虚拟机安装了一整天,后来总是失败大概是因为我想提高效率就把硬盘设定位一个文件,好像ubuntu10.04-2总是在安装过程中出错,一开始把iso放在另一个物理硬盘上,总是发现mount消失了,后来改在本地的新买的ssd
上好像也快乐很多,但是最主要可能还是硬盘文件不再设定位一个大文件才行。

四月六日 厦门是晴天

使用mysqlpp的一个很大的好处就是你能够立刻发现数据库定义於你的ssqls结构的差异,马上就是异常。
这是一个非常令人恼火的错误,我为此付出了超过五个小时,也许这个是别人所不可能有机会碰到的。1.我的autoincrement主键要求我使用ssqls存储的时候不能简单存储Primarykey,于是我必须在save的方法里面指定那些
字段在insert语句里面出现。2.正常情况下允许Null的字段存/取的时候ssqls都会处理好,这个应该感谢sqlpp<null>的一个特殊数据类型,我也懒得关心,但是,在我的save语句无意中漏掉的字段在数据库里是真正的所谓的
null字段值似乎是和ssqls不兼容,导致赋值语句抛出了一句莫名其妙的null is incompatible with type "y",这个无厘头折磨的我要吐血,因为是在不明白为什么,或者这个y是神码?
晚上去看《洛杉矶之战》(Battle: Los Angels)看得我都想吐了,这简直就是无脑流派的电影,导演简直白痴透了,当然这个电影也是超值,看一部就等于看了n多部,首先,是《世界大战》(war of world)这个H.G. Wells的
火星人入侵的题材都被拍烂了,也不怕再来一次;其次,是《独立日》(Independence Day),反击外星人的英雄只有美国人才行;第三,《拯救大兵雷恩》(Saving Private Ryan),为了救所谓的平民结果搭进去了无数的士兵,
当然,美国观众看得理所当然,我纳税养活大兵,救平民是应该的。第四,大概是一部我半梦半醒看得关于伊拉克前线的电影反正就像是《黑鹰坠落》(Black Hark Down)之类的,总之我觉得还不如看伊拉克前线的纪录片呢,
还有,就是主人公有点像Clint Eastwood演的老兵《伤心岭》(Heart-Broken Ridge)之类的,反正是关于这一类的,总之,你看着就反胃的大杂烩。还有,不知道这个导演是刚从电影学院毕业还是制作经费不足,整个拍摄过程
居然就用肩扛式的手提摄影机拍摄,所有的镜头都在摇晃,看得我头晕,当然,我是说笑,这个傻逼导演主要想要在后期营造不安的气氛让观众坐立不安,不过太戳列了。总之,绝对不推荐你去看,我去因为是免费的票。

四月七日 厦门是晴天

折腾了半天居然是int2string有问题,使用stringstream居然有问题?还是用goodold string.h来的可靠sprintf有什么不好呢?我的记忆力太差了,是midnight commander=mc,可能又是模板文件的编码问题,我记得已
经发生过一次了!!!再说一遍,utf-8编码的文件头里面有三个字符efbbbf这个是很多程序不明白的,要去掉这个。condor就不明白。
教训啊!居然在文件读写上犯错误,真实让人惭愧啊,这么多年都是白干了!第一,fread居然忘记了返回0是因为什么?总是记不清楚两个size_t参数的意义,第一个是内存大小,第二个是element数量,所以,第一个总是
sizeof(char)之类,我却有些随意,两个颠倒以下,在很多情况下也许没有问题,尤其是定长数据结构,或者你知道要读多少二分配的内存buffer,因为此就养成了习惯随手,结果返回0就以为失败,真实活该。
fread不会在\n停下来,你通通打印下来以为谁给你加了换行符?这个也太搞笑了,不过这些错误本来也不会犯只是因为使用popen的疑惑导致我怀疑一切,这个不能怪我啊,我想要stderr的输出,结果忘记了2>&1的“&”导致文件输出到
了 1,这个才好笑。看来我linux编程还是太弱,对于popen需要pclose都忘记了,当然我也不知道peopen戴上了type参数"re"是不是等效的,不过使用pclose检查子进程是否成功是很重要的方法。pclose是等待wait的方法。

四月八日 厦门是晴天

convert UTF-8为US-ASCII使用gedit好像不灵,所以使用iconv:
iconv --from-code UTF-8 --to-code US-ASCII -c inputfile > outputfile
如果你非要使用gedit,那么这样子gedit --encoding=ISO-8859-1 Download_Template.sub就可以看到开头的utf-8的三个开头字符了。
uni2ascii这个是工具,以后在实验。

四月八日 厦门是阴天

虚拟机总是被我suspend,好像休眠醒来后所有的时间又都要校准:但是这个命令好像又不正常,最后我不得以停掉service sudo service ntp stop然后在执行,当然这个也怪不了ntpdate,他只在boot时候执行,帮助建议使用
cron,我以前试验了一个什么东西没有成功就不想再使用cron了。
ntpdate ntp.ubuntu.com

四月九日 厦门是晴天

又感冒了,带病坚持工作,(听上去像公产档领导)Mysql如果要选择所有的域在grant语句是grant all privileges on somedb to someuser@"%" identified by 'somepass' with grant option;
安装apache居然不行,期弄吧弄连接中国台湾美国和主服务器update结果就好了。今天美国的网速超快安装软件,看样子部署也是挺麻烦的所以尽量编译成静态库因为server上部署动态库挺麻烦的,注意要安装openssh-server来使用
scp
sudo apt-get install libboost-dev libboost-doc
我觉得我必须下定决心开始学习boost,虽然我个人觉得stl几乎可以满足程序员的大部分工作,可是现在看来有很多代码使用的boost。

四月十一日 厦门是晴天

休息同时熟悉一下boost,不过这个东西比stl大得多,当然有很多都是一个原理,不过我想够用就好,所以直接转回wt,正在琢磨怎么玩发现cmake可以转为codeblocks的工程,但是这个由一个小的snag,你不要想当然的以为generate
是codeBlocks,要全名!哈哈,我费了十几分钟才明白。cmake -G "CodeBlocks - Unix Makefiles" ../
$ cd ../examples/foobar # source directory for example foobar
$ ln -s ../../resources . # include standard Wt resource files
$ ../../build/examples/foobar/foobar.wt --docroot . --http-address 0.0.0.0 --http-port 8080
他的安装程序好像有些问题。所以,下次看到0177的错误就应该知道是动态链接库加载失败,(但是编译怎么过的呢?也许是因为软连接指向错误?我不知道?是不是因为我写在boost的时候出现了错误?)

四月十三日 厦门是晴天

折腾了半个晚上被dialog/messagebox困惑着,就是看不到他的边,一开始还误认为不是真正的dialog,最后才明白,使用css文件来定义,而且这里面又有一个小问题,作者说为了对付ie的bug只好设为0,这样我就被搞糊涂了一晚上
WHBoxLayout *layout = new WHBoxLayout(app->root()); layout->setContentsMargins(0, 0, 0, 0);后来做了两件事才行,1.app->useStyleSheet("wt.css");2.就是把margin改为大于0的这样才能看到边框。
这个lib的作者我都不清楚要怎样形容我的心情,对于有些开源作者我称之为敬仰,就是自愧不如,但是多少还能够明白自己究竟和人家有多大的差别,可是对于这个神奇的东西我连敬仰都不敢说,只能是大气都不敢吐,因为我压根就不能想象
他是怎么做的,我完全就是敬畏,只能用称赞天才的话来形容。连我这样子整天充满幻想的人居然都不敢幻想开发web应用居然可以使用让人亲切的c++,有这个工具世界从今殊!让我歌颂他一下吧!让我赞美她一下吧!
1.我为了能够跟踪把wthttp编译成了静态库,后来又编译成了动态库在本地连接,但是让我不明白的就是作者的编译库把boost的动态库都包含了,我却在连接我的工程过程中还要单独连接boost的库,这个让我很困惑。
2.参数http-address=0.0.0.0 http-port=8080被我放在了/etc/wt/wthttpd内,因为我讨厌每次在命令行代参数,docroot我没办法解决/etc/wt/wt_config.xml不认,我只好改wthttp的代码硬性初始化位"."。
3.我现在还是不确定resourceUrl的设置方法,总是有404的错误。4.遇到一个令人费解的问题,就是在WBorder里面定义的两个enum我在外围使用的时候编译器总是不认,WBorder::Style::Solid不行吗?
5.soundmanager好像不行,不知道是不是因为我的swf不能正常播放的缘故,还是说压根没有实现? 6. ext-base.js找不到,这个错误我不明白,作者的demo是好的?sourcecode遗漏了?还是因为我自己编译的关系?

四月十四日 厦门是晴天

昨天认为解决的问题睡了一觉醒来又不行了,看来不搞明白资源配置是不行的,决定编译wt跟踪,不要忘记了定义WT_THREADED宏,同时几个模块rapidxml/threadpool/web都需要,不要轻易修改Inlucde的路径在codeblocks的
搜索路径里面添加就够了。wt在初始化的时候默认了一些style。
不知道这个算不算是最终的证实,把css文件放在docroot的目录下,调用usercssstyle使用相对路径,(现在我还是不清楚怎么使用internal path和资源路径),之前我一直以为out-set控制dialog,实际上css里面针对每个
控件都有子模块描述比如wt-dialog里面修改body的描述增加border的pixels和颜色
.Wt-dialog .body {
border: 2px solid gray;
padding: 4px 6px;
}
注意强制刷新防止cache的干扰。所以,这个是完全可控的。此外在ide调试停止所出现的异常不要惊慌应该是可以解决的代码里面有指示有gdb接管的部分,我现在也没时间研究,反正是调试才会有的问题,不要管了。

四月十五日 厦门是晴天

label可以有一个buddy就是image,很好用。安装mysql不要忘了安装libmysqlclient-dev这个基本上是一个virtual package,应该再去安装所谓的libmysqlclient6-dev,但实质上不过是安装所谓的头文件而已。
运行期包都是mysql-client这个虚拟包处理的。
wt3.1.9编译的时候最好先卸载3.1.8因为很多头文件都该动了,你自己在codeblocks编译的时候优先寻找系统的头文件。如果要编译wthttp由一个小问题要注意,需要web和http两个目录以及rapidxml/threadpool等的代码
但是web/http都有意个Configuration.h这个会有歧义,如果你的目录Inlucde两个的话,至少我觉得很危险,所以我决定改文件名。http://libharu.org/wiki/Main_Page要用到很多入pango等等的库,很罗嗦。
http://www.graphicsmagick.org/也很讨厌因为他的编译选项你要设定以下,比如支持shared?禁止openmp等./configure --disable-openmp --enable-shared --with-x

四月十六日 厦门是晴天

不要小看了css,如果没有的话很多控件是无法画的,因为默认的图标找不到,所以,这个默认资源文件是至关重要的,这方面我依然不是非常清楚,但是通过编译wt3.1.9我发现了很多以前不清楚的东西,之前我跳过了rasterimage
以及pdf的部分,所以有些功能不全的,编译这部分的确很罗嗦,不仅仅是官网指点的两个包,你还需要加入pango/png/tiff/等等的同时pango的接口这个时候就不能使用原来骗人的fake的fontsupportsimple了,这些原本在
cmake里面定义好了,你自己使用codeblocks就要去看那些makefile其实最好的文件是一个link.txt文件看到链接库的列表。另外一个很大很大的不同就是3.1.9自己通过cmake“造“出的代码文件,比如Wt_js.C等等这些是不运行
cmake看不到的,而我编译动态库又不会去resolve,结果连接那些例子的时候跳出来让人着实摸不着头脑,因为3.1.8没有这个问题所以很难想到,除非你去看命令行编译的结果,但是现在我使用作者的cmake却会有很多的链接库没有
加入,应该有X11,Xext等等,这里我吃尽了使用动态库的苦头,很多你编译libwt.so/libwthttp.so轻松,但是使用的时候你又要每个工程都要加入,但是你怎样能够强制resolve呢?静态库是一样的呀?难道是。。。
还发现了一个现象我拷背文件居然软连接也跟着变了,我忘记了Linux文件系统怎么说的,反正让我找了半天才发现我简单把动态库的实际.so.3.1.8之类替换不起作用,你得替换根源的.so的软连接,而带版本号的软连接是不应该改变
的,因为你骗不过去的,运行期是会检查的,这一点比windows来的好,因为windows的dll版本号没有办法强制的要求,这个应该就是所有开发者的痛苦的根源,你在windows的dll用名字匹配,只有代码里面检查版本号,而linux
是在系统级的检查。(关于这一点我还是不是非常清楚。)codeblocks一个恼人的地方就是你改变设置他不是立刻保存文件,只有在推出的时候采写文件,所以这个时候crash你就白费了,这个库的连接表我折腾了不少时间,因为有时候
发现了又会过头来重新编译wt不然还要更多:(也许有些已经在wt/wthttp里面有了?)奇怪,我现在看到我使用的是静态库libGraphicsMagick.a,这就是我说两者都会resolve的意思。
<Add library="wt" /> <Add library="wthttp" /> <Add library="boost_system-mt" /> <Add library="boost_thread-mt" /> <Add library="boost_program_options-mt" />
<Add library="boost_filesystem-mt" /> <Add library="boost_signals-mt" /> <Add library="boost_date_time-mt" /> <Add library="hpdf" /> <Add library="pangoft2-1.0" />
<Add library="pango-1.0" /> <Add library="/usr/local/lib/libGraphicsMagick.a" /> <Add library="X11" /> <Add library="dl" /> <Add library="ltdl" />
<Add library="Xext" /> <Add library="xml2" /> <Add library="tiff" /> <Add library="jasper" /> <Add library="boost_regex-mt" /> <Add library="m" /><Add library="z" />
运行painting的例子的时候没有使用系统的css的话slider是画不出来的,因为那四个png/gif小图标找不到。
我尝试把运行期需要的库全部加到我的动态库的编译连接选项看是不是能够在动态库里全部解决掉。我印象中好像不会。。。?windows是dll你不输出的函数一律不去解决,那么我怎么才能在linux的动态库里输出呢?还是说他会
顺便解决如果我提供链接库的清单?使用cmake非常非常的慢,因为他把大量的头文件库文件的软连接都拷贝到本地目录下,而且是最安全的那个集合,就是说非常多的冗余,几乎每个目录下都有同样的,这个当然很安全也不大会发生
错误搜寻的问题,但是相对速度非常的慢,使用codeblocks至少要快的多,几乎所有的ide都是这样子需要人的干预。
我自己编译的libgraphicsmagick有问题,总是有什么semaphore的assert失败,搞不清楚是什么原因,最后万般无奈只能使用ubuntu官方的运行库,加上一个-dev的包去编译就好了。看来我还是有神东西不清楚。

四月十七日 厦门是阴天

这个是关于sdl的安装,我已经看过很多次了,libsdl-1.2debian libsdl-1.2debian-alsa libsdl-1.2dev libsdl-image1.2 libsdl-image1.2-dev libsdl-mixer1.2 libsdl-mixer1.2-dev
libsdl-net1.2 libsdl-net1.2-dev, 据说如果要Opengl还需要mesa: mesa-common-dev libglu1-mesa-dev

四月十九日 厦门是晴天

这个是wt3.1.9的工程文件,这个是Hangman的例子被我修改的,我大概只改了不到10%的代码吧,可能更少,主要是设定了一个网站path的逻辑,及其登录部分数据库部分,一个教训就是不要在setInternalPath的事件
internalPathChanged的回调里面再去调用setInternalPath,如果你一定要的话,参数一定要false,否则就是递归,这个道理不能再简单了。
这是我对于wt的评价:
a)纯粹使用c++掩盖了所有的脚本语言,不论是编码调试都非常方便我,完全使用widget编程,封装的对象类似GDI和DOM的组件,对于我来说比较容易理解。
b)我可以无缝的使用mysql++库来操作数据库(默认是mysql,如果使用sqlite也是可以的,非常的令人兴奋.),这样子对于我原有的数据库封装的面向对象的代码完全可以重用,这样维护非常的方便。
c)据说工具使用的是ajax的post可以局部刷新,(关于这方面我承认我是外行,是作者网站说的。),而且widget的内存管理方面远胜于java垃圾回收方式,这一点我很欣赏。
d) 我可以选择不用apache,完全使用自带的简易web server,不论调试与配置都很对我的脾气,我原本在windows上就从没有用过IIS,都是使用一个自己写的简易的web server来运行我的小程序。本人对于所有需要学习配置使用
的大型软件都强烈抵制,因为懒得学,学不会。
e)这个工具的代码开发者还在不断积极更新,最新版本就是这个月的月初,而且居然试图把openGL的渲染搬上来用,真是大牛人一个,我对于此非常感兴趣,可惜渲染例子的代码好像有错,我改了不少还是不成功,不过作者自己也说这
个还是实验品。
f)这个工具对于图形方面有很大的支持,给我的感觉是非常的有前途,我对于这种开发方式感觉耳目一新,十分的喜欢。
心情郁闷去看电影《美少女特工队》(kickass punch or sucker punch)英文名字我看不清楚,中国电影海报很奇怪,明明是中国人拍的电影都会由一个英文片名,相反这个美国电影却不标注英文名字。当然标了我也不明白,
就如同我至今也不明白pulp fiction到底是什么意思一样,很多电影的名字就让人不清不楚,更多的电影连剧情都很含糊,或者说导演与编剧故意的,或无意的,因为他们自己也不知道他们想说什么。而这部电影却出奇的清晰与简单,
但是清晰的剧情往往让人非常的不安,a disturbing fact一样的让人感觉难受。之前我曾经瞄过一眼某人的评述,现在回过头来看让我感到很吃惊那位平路这似乎完全没有领会,似乎完全沉迷于导演的为了号召票房的视觉特效,
其实抛开电影的商业目的,这是一个披露纯粹的现实主义的残酷事实。
也许剧情只需要两句话就能概括,让我来试一下:主人公一个二十岁的美少女,母亲去世(很可能是被她的继父谋财害命),但是遗嘱却指定财产都留给主人公和她的小妹妹,那么丧心病狂的继父恼羞成怒为夺遗产不惜杀死主人公的小妹妹
并嫁祸于她,并把她送进精神病院,买通看守要切除她的脑白质让她成为白痴以便霸占遗产,为了反抗命运她试图逃跑,(纵火,刺伤看守等等)但最终还是被切除了脑白质,从此生活在“天堂里“,完了。纵然看守在最后一刻被发现
绳之以法,但是一切都晚了。真的完了。(总共两句话)
那么这样一个悲剧能否拍成一部电影呢?我们生活在现实的普通人已经够多的不幸了为什么还要让我们感到更多的不幸?悲剧的意义在于让自我感觉生活在社会底层的小市民们觉得有很多人生活得比他们更加悲惨从而抒发所谓的“同情心“
以便改变头脑内的内分泌而获得愉悦的感觉,这个方式的效果也许本质上和做爱得到的快感类似,只不过程度不同而已。那么把一部悲剧拍成英雄史诗的悲壮是否让我们感到好受呢?
我讲了很多的废话其实和导演一样的不想把一个两句话就能讲完的故事讲完,因为那样我们都会觉得难受。所以,主人公在无法改变命运的时候只能用超现实的幻想摆脱来逃避,所以,疯人院成了地下妓院,看守成了妓院老板,医生
成了妓院的老鸨,主人公生活的疯人院的女孩子们都成了妓院的妓女,而预计五天后要被切除脑白质的deadline变成了妓院老板要把主人公的初夜献给黑帮头子的日子,为了逃跑她尝试了地图,刀子,打火机,和钥匙,而每个方法
都被想象成匪夷所思的英雄史诗,在日本神庙和日本武士决斗,在二战前线抢地图,在喷火的龙穴屠龙,在安放了定时炸弹的火车上排除引信,你觉得离谱吗?
世界上清醒只有一种,而疯狂却又千万种,这就是为什么linux的api返回正确值只能是零,二人和其他都是错误。我曾经看过很多“导演”的“疯狂“,远的如那个臭名昭著的意大利人的哗众取宠,近的如那个疯人岛的希区柯克式的不靠谱。
惟一的感觉那就是那种疯狂也许unforgetable,but unforgivable insane。仿佛亿万富翁有意穿一件打补丁的牛仔裤来招摇过市,又仿佛吃腻了山珍海味的大款叶公好龙式要体验穷人的心酸,充满了傲慢与亵渎,因为这些都如同
unnecessary violence一样的多余,但是这部电影的疯狂确实不折不扣的让人无法回避的呐喊,当你被扔在了主人公的位置上,你除了在自己的头脑中疯狂,你还有什么能够对抗你的命运?主人公在被切除脑白质的最后一刻也许在
心里试图留下最后的痕迹以便在“天堂“散步时后捡起:Your best weapon is yourself. 当然这种在切除记忆的手术刀落下的最后的一声怒吼如同 My faith is my best shield一样的不为人知,Even people know about
it. So what? Who cares?
一个人衰老的特征也体现在他开始质问自己存在的意义,而很多时候人们开始寻求精神的寄托,所以,刘邦在临死前要实现衣锦还乡,仿佛了却心愿,有人也要在心灵上衣锦还乡,感受生命的原宿。而漂流了四海的疲惫让我明白了人生
追求的飘渺。从前学英语的时候,曾经分不清free和freedom的区别,以为只是词性的不同表达的是同样的意思,学计算机天天打交道的true也渐渐的和truth混在一起分不清,实际上free远比freedom来的复杂,而truth也没有
true来的二进制的清晰,因为, freedom is not free and truth is not really true。能不能说自有是无价的,但是并不便宜,真理并不是简单的对与错,因为事实无所谓对与错。
当你在看《蟠神的迷宫》(Pan's Labyrinth)的时候你也会看到相似的疯狂,最最普通的自由在无法得到的逃避现实的在魔幻世界的补偿。
正统社会的标准只有一种,离经叛道的疯狂却又千千万万。
你去google这部电影一定发现公产档征服又全都疯掉了,为什么呢?刚开始的时候我咒骂这种法西斯式的脑洗礼,但是久而久之你冷漠,你司空见惯,仿佛在疯人院里面待久了看疯子的行为看多了就觉得正常了,这就是鲁迅所说的麻木
反而是刚来到疯人院的正常人被大家以对待疯子方式指指点点,我感到窒息,下个月就飞离这个巨大的疯人院吧?在思想的监狱里呆久了你的神经已经麻木的如同被切除了脑白质。那么作白痴就是生活在天堂了。天天看新闻联播会不会被
切除脑白质?
你如果使用baidu搜索这部电影看到公产档是允许你看到评论的,不过很好笑的是很多人把它当作喜剧来评判,因为形式大于内容,在这样一个思想囚徒临死前的悲鸣声中,大多数中国人看到的爆乳与性感,这正如同鲁迅的人血馒头
离中国人看到的菜市口砍头的快感,麻木的民族自然有着麻木不仁的快乐,生活在被老大哥思想控制的国度里是快乐的。因为你只要看看今天的新闻就知道古巴终于被迫像中国四十年前一样开始了所谓的经济改革,明明知道社会主义
都是人吃人的幌子,可是为了统治者的私利却还要举起一块遮羞布罩在私处前说皇帝的新衣真美丽,改革是实现一种有古巴特色的社会主义。今天看这个荒诞的中国人忘记了自己在四十年前同样的可笑可悲,过了二十年后回头一定又要
为自己今天感到荒诞不经,这就是另一种疯狂,因为清醒只有一种,疯狂却又千万种。
生活在matrix里的人实际是无法知道自己生活在思想的监狱里的,因为他们从来没有使用它们眼睛的机会,本来应该用于战斗的肌肉也因为从来没有使用而萎缩了。只有少数人时刻准备着醒来,并不是他们先知,而是他们渴望真实与
自由,所谓的truth and freedom。但是,在脱离了matrix的系统之后他们却吃不饱穿不暖,因为这是现实,是否这个理由就应该让他们重新回到“系统内“享受虽然虚幻但是却能满足感官刺激的“牛排“呢?blue pill or red
pill?正如Morphius说的,remember, I can show you nothing but truth, only truth. 而有时候现实是丑陋的,只不过是ugly truth。在这个意义上,究竟是否应该把人们从matrix系统里面解放出来呢?因为
不愿意接受赤裸裸的现实的人们更加的怀念虚幻的matrix,系统内的人们,你们愿意放弃令自己目盲的五色,令自己耳聋的五音吗?清醒只有一种,疯狂却有千万种。
被切除了脑白质的人究竟是快乐还是痛苦?也许痛苦就来自于清醒,快乐就来源于疯狂。清醒只有一种,疯狂却有千万种。

四月二十一日 厦门是晴天

折腾了一天多就是一个莫名其妙的问题,原因是我想实现客户端的md5,因为wt实际上你不加限制就是一个纯粹的服务器端事件向应的,所以,你不能等到密码传到了服务器再去算Md5那个已经没有意义了,因此,按照文档的说明,
要自己使用JSlot自己写javascript,有个例子讲的很清楚,可是我照搬以后老友问题。最近感觉身心疲惫,越来越消沉。偶然翻看2008的日记,觉得当时自己真的很快乐,现在却越来越没有那种快乐。当然,也可以从另一个角度
来说就是这两三年我进不了太多了,因此失去了以前的无知的快乐。ignorance is bliss。这个是好事。自己安慰一下吧。

四月二十二日 厦门是阴天

这个问题可能折磨了我将近三天时间?包括一个晚上的失眠,当然,失眠不一定是我在想这个问题。其实很简单的问题,就是我想要在client端使用纯粹的javascript来处理事件而不是反映为server事件,这中间我需要定一个
JSlot/JSignal来接受事件然后再处理完以后转发一个事件回到c++代码到server去处理,这其中的JSignal出现了莫名其妙的问题,在JSlot里面你定义他的javascript的时候把JSignal的转发要嵌入在javascript里面,
结果在作者的例子里面似乎都挺好的,我就决定去做一个widget来封装整个的login/md5-encryption的动作最后回调一个密码验证的事件给服务器倒数据库去检查md5的密码是否匹配。看上去没有问题,解决JSignal总是不能够
转发,而使用作者的代码就可以,后来发现创建的JSlot的时间点是关键,我当时被琐事纷扰的出门赌气,直到今天才意识到这个问题是在constructor初始化的问题,你在一个class的constructor里面去设定JSlot的
javascript如果所对应的JSignal也是这个class的成员的话就会有问题,因为JSignal这个时候还没有初始化,具体原因我不得而知,只是知道JSignal这个东西需要“宿主“的RefJs,就是wt里面每个对象对应于DOM的一个id
或者是elementid,等等,也许这个东西的分配比较晚所以在constructor里面得不到。结果就是你要在类似于WApplication::initialize之类的地方去作初始化,这个是在constructor之后的virtual你可以去重载。
不过好像只有WAppication才有,WObject没有,WContainerWidget之类也没有,那么你只能找个什么时间再去执行一个自定义的初始化,这个泰罗缩了。总之,折腾javascript是很烦的,而且我在浏览器的errorconsole
里看到很多的wt的脚本错误,看样子这个问题还真的不是个好兆头。好累,阅读一本精装的《3D显卡发展史》很让人受益,你才明白了过去很耳熟的名字的由来,80/90年代是2D图形卡的黄金时代。。。
在javascript使用dom元素是这样子的:nameEdit->jsRef() + ".value",明白吗?jsRef返回的样式是${objId}
我发现initialize这个时间点的原因是偶然的,因为我社定了cssstylesheet可是在constructor里面调用messagebox的时候css没有应用,所以从这里我才领悟到初始化的问题。

四月二十三日 厦门是阴天

费了好大的力气做了一个简单的widget,是从WLineEdit继承而来,主要功能很简单就是专门作为password的输入,在默认enterpressed的时候计算输入的md5保存起来,同时支持用户设定输入相应事件以及输出的相应事件
或者说用户自定义的成员函数作为回调。其中md5计算使用的是JSlot拷贝了一个几百行的javascript来在客户端执行。我花了一个下午试图使用loadjavascript的之类的方法来防止以后类似的拷贝几百行的字符串的无聊的
事情,但是好像找不到北,而且我也不清楚这个是不是纯粹编译wt的library的时候采用的,因为我现在这个widget就已经编译到了wt的library了,所以,这个问题其实挺复杂的。算了吧。widget编程还是有些趣味的,慢慢
来吧。

四月二十四日 厦门是晴天

电脑报越来越沦为广告报,长篇报道一个名不见经传的购物网站(至少我第一次听说)所谓的“一号店“,号称要作成“网上沃尔玛“,其中那个负责网站技术的合伙人号称刚刚在美国卖了一个软件就是一百万美金又是在什么什么大公司
任职然后加盟,又是什么什么研发团队超过百人,今年要达到400人,天知道一个这么个玩意需要上百人维护?是数据录入员吧?程序员需要上百人?我这两天对于网站的登录机制感兴趣就看看他们的注册想要从零学习,让我吃惊的
是这么一个完全依赖网站为生的电子商务门户居然不需要注册者的email激活,看来中国式的放卫星需要这样一个无聊的“注册用户数“来作为“融资“的价码,这个从商业角度来看也说的过去,故意降低注册门槛泛滥用户数量,但是
看到其中对于email之区别仅仅只接受gmail/hotmail等三个就让人费解了,你说email查询登录需要特别的配置(端口/协议)我可以理解,那么发送email有特别需求吗?我忘了有什么特别的,就故意用Yahoo来实验,结果
注册不起作用,难道这个就是防止垃圾注册的办法?让人难以理解,对于我这个web-application几乎从来没有接触过的门外汉来说实在是speechless。进而我对于这个电子商务网站的可信度产生了巨大的怀疑,至少“京东”我
买ssd还是让我挺满意的,线下服务也很到位,本地配送都是他们自己公司员工,因为物流系统是电子商务最核心的部分之一,所以,我对于这个京东还是很看好的。

四月二十五日 厦门是晴天

在md5passwordedit的基础上又包装了一下做了一个loginwidget,最主要的是对于boost的bind的使用明白了一点,对于成员函数,你只能这样子调用boost::bind<retType>(memberFunPtr, objPtr,_1(param1)
对于对象指针,如果你要把对象变量带入的话boostRef(objVar),多个参数就是用_2,_3等等。我一开始不明白以为和普通函数指针一样的,结果发现调用失败。计划以后每天做一两个widget最后在整合集成。
还记得我当初不明白为什么定义在class里面的enum不能使用吗?这个帖子说明了怎么样用和原因。核心就是你在引用的时候不要再使用enum了,比如class Foo{public:enum Bar{A,B};};你如果要用的话就是:
if (enumVar==Foo::A)...而我只前总想使用Foo::Bar::A总是报错,现在才明白了。真不容易啊。
我怀疑WLineEdit配合Validator的时候有问题,下午好好debug以下。还有就是正则表达式,我不知道在哪里看到有基本型和扩展型,鬼使神差的加了"\"在"{}"前面,其他来源都不要。四到八个字符的表达式应该是
[a-zA-Z0-9]{4,8}
今天学习了名噪一时的药家鑫的光荣事迹深受感动,看来在中国如果你被车撞了要学习邱少云在前线潜伏的精神,轻伤不挪窝,重伤不呻吟,最好让肇事者认为你已经死了不再捅你刀子。这个世道几乎在全世界都很难找到,原因是
由于公产档的统治造成的吗?我不敢说。

四月二十七日 厦门是晴天

要增加户外运动。我讨厌java的那一套就是因为有时候提供了很多让人误导的东西,现在用到boost的Mutex又被戏弄了一通,原本有了Mutex就可以了,何必再用lock?(不过也许shared_lock有效率的考虑吧,不过我就想
简单的设定一个criticalsection,不想那么多,结果google到的例子误导了我,用shared_lock去锁定一个shared_mutex,这个有必要吗?结果始终有些错误。总之:#include <boost/thread/mutex.hpp>
就直接使用mutex不要用其他了,什么lock之类的都不要,直接使用boost::mutex的lock()方法,也不要使用那么花里胡哨的创建lockable的局部变量,自动在代码block结束的时候呼叫lock的desctuctor来释放
被lock的lockable对象,这一切有必要吗?这些都是浮云因为不过是把一个过程“lock()"变形为一个对象“lockable”,是否这个就是最好的容易理解的?(感觉把函数指针或者说回调函数的Handle变为functor之类的结构
是否就是好现象呢?这一点我还是统一的。不过。。。)

四月三十日 厦门是阴天

好累啊,花了差不多两天多才做了两个widget,是显示文件树的,原来的checkbox没有办法限制单选,我需要单选,所以只好监听checkbox的事件,(差点忘了,总共是三个widget,还有一个简单的数据库感应控件,就是
类似与delphi以前的那种,不过是我的特殊用途:把数据库里面的enum定义字段读取出来在web上反复使用)。昨天做完了filelistview发现只要文件超过十几个就慢得难以忍受,想办法改进最后采伐现作者有另一套MVC的
treeview控件可以很好的解决,所以,今天又花了一天时间改造一个例子制作成我需要的widget,我强制需要单选,所以又必须添加一个checkbox的监听机制。学习mvc还是花了我差不多一天的时间,这个机制从前只是概念
上的。(对于那些口若悬河从来不动手编程的人来说这么一天时间的学习是太夸张了,可是真正理解,或者说照猫画虎的改造一个widget我也就只能这样花一天时间来学习了,没有办法,世界上本没有捷径。)
standardmodelitem实际上可以存储多种类型或者说“角色“的数据,这个设计是多么的好啊,简直就是我们这些天天在想却没有做到的设计。以前在brew上看到mvc就头疼,现在看来这个设计架构果然是有先进的地方,软件
的design pattern本来是一个非常非常难的事情,可惜被很多很少写代码的人给玷污了,显得大而无当,当然真正的行家是得心应手的。当然,我感觉filelistview不一定就是因为不是mvc的设计才慢的,而是因为添加
的时候反复排列的问题,不过我花了一些时间也没有办法改好。
重新在笔记本上创建wt的开发环境,需要两个第三方的包: haru, magick ,至于sqlite3,你可以安装命令行的工具直接拷贝头文件,其实你可以直接编译那个almongo。。。我不会拼写那个词。boost需要安装。

五月一日 厦门是阴天

花了一个晚上的时间来福值开发环境,遇到的还是以上笔记里的各种问题,如果没有这个笔记我真不知道怎么办,因为我是一点点的都记不起来了!人的人记忆力实在是太脆弱了,我现在已经想不起前两天的事情了。
关于mysql数据库初始化补充一点,创建新用户Nick的时候,据说要使用localhost和"%"创建两次的grant,据说是有什么优化。grant all privileges on *.* to nick@"%" identified by 'pass' with grant
option.注意使用"*.*"而不是先使用root创建某一个database然后再指定nick使用这个database,反正生了一些麻烦。另外,记得因为我把一些数据库感应控件加到了官方的wt库,编译的时候编程需要链接mysqlpp,
否则使用的时候就要去连接了。动态库是很麻烦的事情,因为很多的需要只有在运行期才能体现,这给部署反而带来了烦恼,对于我这种方式的分发其实静态库无论效率还是可靠性都是静态库来的好,不过编译那么多的官方静态
库版本实在是头疼,而且很难说有些第三方库是依赖动态库的,这样子,除非你把所有的依赖动态库的库全部都编译以便,否则没有意义。算了部署的问题在ubuntu上还是相当的容易的,ubuntu的维护者们很不错把很多库都
分发成了运行库和开发包,(实际上当然很多时候开发包应该就是一个头文件的分发,印象中linux不像微软那么白痴动态库连接必须使用所谓的lib,这样子就不许要那么麻烦了,就是头文件加.so)我的做法就是把官方的
.so的软链接指向我自己编译的版本,这样子随时修改立刻见效。
一个不起眼的问题,mysqlpp的connection是绝不能够进行复制的一定要使用引用,连函数都不能够使用返回值的,哪怕你的返回值是引用都没有用。(这个本来就是我的问题吧?函数返回值是引用?搞笑?)
花了一点时间才搞明白table的css原理:你需要在代码里面指定css的class,(setStyleClass)table有两个子项th,td,那么就定义多两个class吧。比如Wt-DBTableWidget td,Wt-DBTableWidget th。
这个是我的定义,参考了google来的例子:(效果我觉得还挺满意,不过我对于visual的审美一项不敢肯定。)这个是我今天做的数据表widget,很简单的东西。
.Wt-DBTableWidget th {
text-align: center;
padding: 0.2em 2ex 0.2em 2ex;
border: 4px outset gray;
color: #fff;
font: bold 13px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
background: #6880A0 url(title-gradient.png) repeat-x scroll 0 -20px;
width: 5px;
}
.Wt-DBTableWidget td {
border: 1px solid black;
padding: 0.2em 2ex 0.2em 2ex;
color: black;
font: normal 13px/22px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
text-align: center;
}
.Wt-DBTableWidget {
border: 6px inset #8B8378;
-moz-border-radius: 6px;
}

五月二日 厦门是阴天

什么是正确的顺序?首先你使用rootcontainer,它装了一个layoutwidget之类的,我使用wtable,你也可以选择whboxlayout之类的。这个layout在合适的位置装入一个wpanel,这个panel有很多的不错的feature
比如可以collapse还有一个titlebar,很好看,在他里面你设定他的centralwidget为一个scrolledarea的widget,这个是一个好东西,她处理了所谓的"overflow“之类的问题,这里的overflow不准确,指的是超出
边界部分的内容,(所以,前提就是你给之前的这些container,比如panel等等resize了大小)一旦超越显示滚动条。而这个scrolledarea里面装了一个stackwidget,这个stackwidget是和你创建的wmenu一起使用的,
就是说你的菜单wmenu的每一个item对应的widget每时每刻只有当前的才被显示出来。这个就是正确的顺序。

五月三日 厦门是阴天

又一次被严重牵引入支线,因为我无意中发现我现有的blender版本太低,只有2.49,这个是正常的因为ubuntu不可能迅速位那么多的软件更新最新版本,甚至我很欣赏这一点,因为所谓的及时更新只有很少数几种人有意义:第一,
使用该软件的竞争对手软件从事开发的人希望发现新版本的功能,第二,开发该软件的竞争软件的开发者,第三,使用该软件开发但是只会使用稳定版本做真正意义上的开发者,第四,只写技术评论赚取名利者,第五,无聊消磨时光
者,第六,无目的搜寻者。。。
你要是真的又开发,你就自己编译安装,大多数人不需要最新版本,甚至压根就不使用,一个系统中的很多功能对于大多数人来说就是只需要知道有,或者说当发现别的系统有而本系统的狂热支持者反击说我们也有就好了。
编译2.53相对来说容易,甚至我看到了附带的vc的工程文件。但是2.56/2.57好像有了很大的变化,要求对应的python版本都是当时最新的。需要使用scons scons/scons.py来设置。2.56我使用scons编译有错误,只好尝试
cmake -G "Unix Makefile" ../
blender2.57需要以下的包
sudo apt-get install subversion build-essential gettext libxi-dev libsndfile1-dev libpng12-dev libfftw3-dev libopenexr-dev libopenjpeg-dev \
libopenal-dev libalut-dev libvorbis-dev libglu1-mesa-dev libsdl1.2-dev libfreetype6-dev libtiff4-dev libsamplerate0-dev libavdevice-dev \
libavformat-dev libavutil-dev libavcodec-dev libjack-dev libswscale-dev libx264-dev libmp3lame-dev python3.2-dev
其中,python3.2ubuntu是没有给你的,你自己下载源码编译吧。
这个是一个很好的地方,有很多的blender艺术作品。这里有很多的texture。关于gecko.

五月五日 厦门是雨天

终于回到了正轨上,但是又一次在细枝末节上耗费了无数的经历。事情的起因是怎样的我已经记不起来了,目的就是如何上传文件,wt有现成的封装好的widget,使用的是浏览器的Multipart机制,本来没有什么问题,而我
偏偏想要尝试在浏览器上传上的断点续传,本来下载的断点续传是rfc协议就已经考虑过的,不需要你做什么只需要服务器端声明它支持range的指令,具体的说就是服务器的response的Httpheader声明自己的accept-
range: bytes,这个非常的误导我,尤其我一直在期盼http协议也原生的支持断点续传的时候尤其会先入为主的认为这个既然是服务器的response当然就是说的是上传文件了,不是吗?“服务器说他接受range",浏览器
下次发request的时候就是用一个range来表明自己上传的数据是什么偏移量,多好啊!白日做梦,这个完全是下载的。纯粹是我一厢情愿,上传文件都是http协议在创立后才补充进去,当初http根本就是一个文件服务协议
压根就没有考虑用户提交文件的需求,multipart都是很恶心的,当初我自己在服务器端写解析的时候就费了不知道多少心血,那个delimiter一定要多少个“-”,27个?还要遍历文件产生一个唯一标示的随机字串,否则你
传binary的时候谁知道什么是开头什么是结尾,(我始终觉得这种设计很有问题,为什么呢?应该是当初协议设计的比较蹩脚吧?)总而言之,你不可能纯粹使用浏览器的上传来实现断点续传。
后来我觉得自己去写js来组成multipart配合服务器端来实现断点续传有些不现实,这个工作量不小,而且意义也许不大,因为使用ftp无论现成还是自己写一个都比这个来的容易。
再后来我觉得wt的wfileupload控件涉及的有问题,就是你上传文件之后就不能再上传第二个文件了,我觉得作者似乎不应该犯这么低级的错误,就打算自己改造,费了很大的力气发现很困难,似乎作者是故意这么作的,让你
很难改造在旧的widget上刷新界面开始下一个文件上传,再后来读注释才明白果然这个是故意的,原因就是你上传的文件是放在了临时目录/tmp下的spool的文件,默认是由控件在结束的时候销毁的,除非你“偷”spool文件
(stealspoolfile),因此上作者强烈建议你使用完了就重新创建新的,搞明白了这一点就容易多了,当然又有一个细节也是一个理念,就是你创建的widget是否需要自己手动释放内存呢?wwebwidget有removechild
可是他是protected,这似乎是说你不要管内存的释放,尽管用。所以明白了这一点就知道这个就是模仿java/C#之类的你使用变量尽管new他,重复的new,反复的addwidget,不要考虑他的父亲(parent)被撑死,如果
你不能销毁旧的widget又要显示新的,惟一的办法就是hide旧的,不能销毁她。重新调整了工程的结构把一部分共用代码放在了两个工程共享部分,隐含的就是说webserver和appserver完全可以合二为一,当然这绝不是一个
好主意,压力会比较大的。保存一个版本

五月七日 厦门是阴天

对于无聊的定义就是反复的调整css尝试各种颜色的搭配,沦为一个高中毕业或者技校学生从事的工作。做了一个数据库控件显示当前任务的树形表。我现在最大的困惑就是那些繁复的css定义,因为wt的这部分文件好像有些
混乱,当然这个可能和浏览器的不统一有一点点的关系吧?姑妄言值。
在携程上订机票是一个让人不愉快的经历,首先,程序有bug,英文版的用户提交检查有问题无法正确识别用户输入的电话号码阻止提交,其次,对于名字和姓的检查提示误导用户,大概携程几乎没有使用英文的用户吧,这方面
几乎没有认真测试过。付款的时候对于美金需要加收3%手续费让我不得不使用人民币信用卡。然而,半夜订票,一大早就短信通知你需要调整税金,这根本就让人无法相信,我之前比较ctrip和expedia的价格折合人民币就只有
200左右的差别,现在这个要求让我感觉很恶劣,按照我一贯宁赠友邦不予家奴的原则,毅然决然的选择了expedia。整个成交过程比ctrip顺畅多了,让人很难理解国内的服务器相应速度远远慢过国外的网站,我只能理解为
应用服务器负载的问题,因为关于网通电信之间不通的问题国内有很多智能dns的服务商提供引导,很难相信ctrip没有使用,也很难相信他们没有在不同isp内都设有服务器,那么应该是软件和基础硬件投入的问题,或者人员
素质的问题。

五月九日 厦门是晴天

公产档的法西斯统治在一天天的加强,表面上的繁荣让统治者们更加的肆无忌惮的横行,以为既可以使用思想枷锁牢固的束缚劳动者的思想意识,而在同时又能够利用外来的先进科技达到劳动生产率的提高,这个想法在千百年的
人类进化史上一次次地证明失败,然而却又一次次的被统治者所幻想,然而人类进化和生物界别无二致,一个先进的物种达到统治地位和一种先进的文明达到统治地位的途径往往不是单纯依靠上一个统治者的自我意识的提高禅让
得来的,这正如恐龙的灭绝绝不是其自身的自我改造与进化而让哺乳动物来取代,这需要一次大的不可逆转的事件,比如陨石撞击地球产生的大灾变,只有当生存环境变得异常残酷时候,新物种与先进文明的优势才能保全自身
以达到跟新换代的作用。这个现象在人类社会比比皆是,比如,在所谓的经济上升期时候,任何所谓的“投资者“都能不同程度的获利,经济数据并无法显示何种劳动生产方式更加具有竞争力,但是一旦退潮到来,我们才能了解
到巴菲特所说的谁在“裸泳“,也只有在这个时候社会资源短缺需要淘汰个体的时候我们才能期待某种落后体制被自然规律所唾弃。今天的阿拉伯世界的街头民运就是这个现象的又一种阐述,这个极端落后的社会体制在后经济危机
时代要成为第一只被宰杀的恐龙,整个阿拉伯封建体制的破灭是迟早的事,我们关心的谁是下一个?

五月十日 厦门是晴天

花了多少个小时去debug这么一个简单的问题?email的regular expression?网络上的我始终不满意,可是自己写的boost似乎总是不认,找到现在才发现可能是这么几个问题:1.“.”虽然你使用了escape("\")但是
最好作为单个字符是一个[]把它括起来。2.“-”是range,并不仅仅限于字母和数字,所以你想要这么几个字符“[.-_]"这样是不对的[\.-_]也是不对的,因为“-"虽然不需要escape,但是你只能把它放在最后才行,所以,
[_\.-]才行。3.所谓greedy和non-greedy证号和我的理解相反,指的是greedy总要longest match,他的greedy在于想要完美,而不是立刻找到立刻返回的greedy,所以证号相反,(真是奇怪的想法,我怎么会这样
的greedy?)
所以,最后是这样子的:(有很多括号是不必要的,不过为了我debug方便阅读,同时,我也很怀疑[]是否需要对于单个的@\.来修饰,不过,安全吧)
"([a-z0-9A-Z])"
"(("
"([\._-]?)"
"([a-zA-Z0-9]+)"
")*)"
"[@]"
"([A-Za-z0-9])"
"(("
"([_\.-]?)"
"([a-z0-9A-Z]+)"
")*)"
"[\.]"
"(com|edu|net|org|info|tv|([A-Za-z]{2,4}))"

五月十一日 厦门是晴天

昨天就在我洋洋自得时候发现web开发最头疼的问题,浏览器兼容的问题,在firefox上可以的在ie就不行了,而且排版都不一致,虽说这个是由css统一来避免,实际上好像没有,或者我定义的不对。
这个问题已经超过了我的预期,原本就是想要让wt去处理这个问题,但是。。。
今天原本是要休息,因为这个工程已经让我的健康每况愈下,但是一个简单的激活email的发送又折磨了半个上午我才明白了一个简单的道理,这个应该是所有web开发者的常识,我却不知道,就是email的格式不是简单
由你的内容来定义,mail服务器是不可能在作者个工作的,这个使用脚趾头都能想到的,结果我最后才明白在mail的content-type里面定义。
在三十度的高温下步行几十公里之后。。。

五月十七日 厦门是晴天

停滞了好几天,我想我是太累了,同时遇到了一个不大不小的问题,让我从整体上开始怀疑前进的方向,很多时候,投入的时间的长短决定了是否成功与失败。是否值得投入这么长的时间呢?
昨天买了一个便宜的无线网卡,win7死活不能识别,但是卖家给我演示过可以,而且让我感到有兴趣的是他有自带的linux驱动,至少有源代码的驱动在linux是不成问题的,所以我也不是特别担心,这个东西本来就是可有可无的,
只是预防万一住的地方没有cable的时候临时用一下而已。因此,我尝试把我的win7的禁止的update打开,的确这个是一个漫长的过程大概几个小时的下载更新,中间还出现过一次黑屏,有无数的安装包要更新,最后不用驱动
也能识别了。windows7肯定比linux的开发要困难的多,因为他要面对的使用者与硬件问题多得多啊。从这点来看,linux是有优势的,因为使用者都要至少是管理员级别以上的,程序员为主。

五月十九日 厦门是晴天

停滞不前,于是胡乱编译freeimage,关于gtk我现在明白wt就是基于这种widget的开发风格的,因此,gtk的编程经验可以大量的被借用。
pkg-config --cflags --libs gtk+-2.0但是这个产生的编译参数和cmake等等类似都是包含了很多的冗余,当然编译器没有那么傻,不需要像cmake一样全部拷贝到本目录下才编译,所以,也是可以忍受的。codeblocks
里面lib的代号是3,console是1.
一个人写不了代码了就把别人的工程拿来编译一下,或者写几行脚本,然后转身对别人说自己在写程序,这就是一个程序员的悲哀。因为,这个工作几乎是无脑流,当你的脑子已经进水了转不动了的工作。
我以前看过一则联想的内部新闻,好像是说北京的那个android部门只花了一两个月把那个工程移植了以下,应该就是交叉编译吧。似乎很了不起的样子。

五月二十二日 厦门是阴天

很闷热,玩了好几天的autotrace,很好的学习。这个是在线的版本,可以参考他的参数,在这之前我觉得效果非常差,现在看来其实跟商业的差别不是非常的大。这个商业的软件很不错,因为提供在线的trial。作者的一些算法
参考自一些文章,最关键的技术就是fitting的算法

五月二十三日 厦门是阴天

无聊的时候简单实验以下bezier curve。这个是那位大侠的硕士论文,和他的书,这个也是经典的藏品,现在市面上都买不到。这篇论文概述也不错

五月二十四日 厦门是阴天

作为常识你知道,可是是否真正的应用理解永远也不知道。比如,编译静态库和动态库的优缺点以及问题总是一个模糊的认识,静态库根本都不去解决(resolve)涉外的实现,那么你用到一系列的静态库就要小心,每个静态库都
必须自己解决自己需要的,而不是说你在最后那个自己的应用project里面把需要解决的其他库一股脑最后加上,这样做是不行的,因为没有解决的是静态库本身编译的问题,他的使用者无从知道怎么解决,换句话说实际上静态库
编译出错了,只不过不会当场报错,这个简单的细节我想很多人不实际去作都不太会意识到。相反如果是分发sdk,你如果都做成动态库的话,这个问题压根就不存在,因为解决都是在用户的app project。换个角度看这个问题就
更加清晰无比,本来用到的其他的库就不是你作为sdk的提供者需要负责的,你就不应该越俎代庖去帮助用户提前打包,而是应该留给用户自己配置开发环境,这个只应该写在开发环境配置的说明文件里而不是编译在开发库里面。
当然话是这么说,这个问题的由来并非庸人自扰,因为替用户减少开发包配置的难度本来就是一个很大的问题,开发者希望把自己用到的所有细节都掩盖起来是正常的,但是这个时候你就要很清楚自己那个库用到那些外在的包,及时
加入,这个是基本功,遗忘了就是贻笑大方了。

五月二十五日 厦门是阴天

其实我很早就发现codeblocks有这个问题,只是不知道怎么解决而已。 问题是这样子的:当你按照常规从ubuntu的菜单启动codeblocks然后进入你的工程来debug,你会发现getenv不能正确工作,比如,你在你的.bashrc
里面设了一些环境变量,在codeblocks的debug状态下找不到,这个绝不是你刚刚设置没有及时source .bashrc的问题,而是压根从ubuntu的applications菜单启动codeblocks就没有把当前用户的env作为参数传递
给新的debuggee的进程,i.e. fork/exec没有把当前user的env正确传递。那么怎么解决呢?我以前只好绕开getenv传递参数而是使用文件,这个实在是不得以,因为折腾很久重新编译codeblocks的最新版本都无济于事,
因为问题压根就是ubuntu的问题而不是codeblocks,所以我解决不了,现在总算找到了解决方法。你从你自己的根目录在命令行启动codeblocks,他就正确继承了环境变量。修改ubuntu10.04的代码?我连想都不敢想。
另一点也是一个小常识,你在编译期因为头文件找不到而设定了search路径(我总是把我自己未部署的自己另外编译的第三方开发包的链接设为绝对路径,因为还没有部署到系统Lib目录找不到,所以只能强行指定,当然后来我
觉得另一种做法也很可取,就是部署编译之后我去改第三方的包编译了新版本,但是我仅仅把系统目录的软连接指向我的版本,因为我基本上不大可能修改开发包暴露出来的头文件,换句话说,不会修改接口吧)这个是编译期没有
问题,那么运行期呢?如果你编译的第三方包你尚未部署在codeblocks里面debug的话是找不到的,尽管你在编译期都已经指定了链接的so文件,要知道编译和debug根本就是两个截然不同的过程,这个参数是要给gdb设定的,
我曾经尝试在codeblocks的pre-debug之类的设定gdb的参数来指定,后来发现唯一可行的是设定build options->search path->linker就可以了。
这个就是工程组,wildMagic,是从geometrictool网站下载下来的,这个库的代码相当的艺术,很值得借鉴与使用,当然要学习还是有些难度的,要很多的基础知识。他的文档我也下载了。

五月二十八日 厦门是晴天

连续看了两天的电影可以说完全同意卡梅隆关于当前3D电影的评价,很多都是伪3D,我个人的意见是目前只有动画片或者是那种动作捕捉而成的电影(其实也算是动画片,因为是100%的cg,只不过建模的方式不同而已)才能算是
合格的3D电影,所以,传统的人来拍摄的电影的3D版我劝你就不要去看了,既浪费钱又浪费你的眼睛,很难受的。《功夫熊猫2》还是不错的,《加勒比海盗4》我原本是绝对不回去看的,只是因为没有电影看才被迫看了一下,个
人觉得除了美人鱼其他没有什么好看的。其实,电影还是编故事,如果故事不好看,就不要拍了,这一点功夫熊猫还是不错的,至少他有一大批的儿童观众,他的搞笑确实有普通武打片所没有的生命力,当初成龙的片子如果不加入
喜剧成分早就死掉了。有一点让我比较感兴趣的就是制作团队里lighting的人员几乎占了绝大多数,看来这个是整个cg部分的人力的核心。

五月二十九日 厦门是晴天

重新看一下gongfu panda1,我感觉2明显的缺乏很多内涵,我想可能一方面一是一部长久酝酿的陈酒,二只是一部商业需求的继续。另一方面3D的羁绊耗费了有限的资源,也许没有3D的要求创作人员可以更加的集中注意力。
很偶然的在电视上看了一眼所谓的中国第一部3D的动画片《秦时明月》,从3D制作的角度来看我简直难以想象这个就是中国的制作水平,诚然那是好几年前,动画技术发展是日新月异,几年就是一个时代,而且中国观众与市场
远远不成熟,但是无法令人原谅的是一个基本的事实,3D动画和3D游戏的制作是两种有很大不同的产业,而似乎中国的这个所谓的“玄机科技“居然是这样子的,当然,如果发行渠道没有异议自然可以,可是,这个从行业的角度
来看无疑是一个笑料或者掌故,因为在我看来制作者甚至都没有去简单地为播放帧速做一些调整,直接就把3D引擎的输出做电视剧的输出,换句话说,电视剧就是三维游戏的实时版,当然这个引擎(如果有的话),压根就像是
一个本科生的term project,物理效果完全没有,lighting根本是一个平行光,我google到制作方号称总投资上亿,第一部总共不到十集,我觉得完全不可思议,如果8集按照一集40分钟计算,平均一分钟的制作成本高到
30万元多,就以最近厦门爆料的另一个笑话大姆哥2D动画来说,1500万投资的60集动画,这个2D一分钟一万五,3D加倍还是比较可信的,那么对于30万元的成本只能理解为总投资包括的所谓的渠道建设,换句话说就是国内电视台
的公关,营销费用,据说秦时明月一年半就回收成本很多收入应该来源于相关产品,这也许可以说明厦门的这个动画公司的股东都是非动漫产业的企业家的原因,因为他们确实是把这个动漫当作营销服装鞋帽的渠道来看待,那么
把一千五百万投资的60集动画片以六十万元卖给中央电视台在他们看来都算是成功的,当然,没有人会满意的,因为这个路子应当是走不通的,结果CEO走人了。不过呢,这个所谓的成本是你可以google到的美国的行情还要高
一些我不能理解的就是中国的成本比美国还要高,而不是按照正常的五分之一?

五月三十日 厦门是晴天

当别人提到类似《Trueman's World》的电影的时候我居然一无所知,早上看了这部电影《Simone》我明白我为什么不知道这部电影,因为它是2002的电影,距今差不多有十年了,电影里面使用的还是5寸的软盘,所以,我
不知道有这部电影,不过个人觉得挺不错的片子,其实,当新技术还是不成熟的时候,好莱坞把它当作科幻电影来拍摄,可是当新技术成为家常便饭的时候,没有人再对他感兴趣了。我看女主角就有一种奇怪的莫名的感觉,觉得
她有可能是加拿大的,果然和很多好莱坞演员一样是来自冰冷的北方,当然我应该是觉得她身上的法国模特味道让我这么猜想的。明天要去洛杉矶了。又是一段新的旅途,也是一个人的心的旅途。

六月五日 洛杉矶,晴天

来到了洛杉矶才感觉到美国的真实意义,资源富裕的巨大国家。中国和印度之类的都是人口富裕,美国是物质富裕,水,土,气,火几乎无线多。懒得写中文了,反正都是笔记,就只记录英文,升级了主板的bios后,六个核
能够被识别了,blender的多线程也可以使用六个核了,但是好像usb的电压变低了,只有一根标准的usb线才能使所有的usb设备正确识别,比如活动硬盘,mp5等等,甚至发生过微软鼠标导致键盘不能识别的错误,(错了,
无关的,那个确实是微软鼠标坏了,是笔记本不能识别),总之,有了新的问题,对于编程强迫线程分配在不同的cpu做了一个实验,可惜是在bios升级以后无法证明能够强制,因为ubuntu现在可以自动分配的。blender
codeblocks工程文件花了我好几天的心血。这个是2.57版本的。需要很多的dependency。遇到有几个lib因为依赖性的缺失不能安装官方的dev包的话,只能自己下载源码编译安装在/usr/local下了。python3.2
我强烈建议不要安装官方版本,非常的危险,会导致系统混乱,因为现在包括synaptic自身都用的是2.6版本。早上头疼只能从事无脑工作,翻检以前的垃圾文件,找到几个宝贝,这个是<yes,prime /minister>的珍贵
人物集,可以说是珍藏级的

六月十七日 洛杉矶,晴天

步行了五英里去El Monte的镇政府,去的时候还跑步,回来就只有走路了。好累啊,昨天还是前天去downtown,坐公共汽车做了好久阿。无意中看到一个“一曲忠诚的赞歌”,感到很迷茫。这里有一个视频,这个人期望挽救
共产党的灭亡,我觉得很徒劳,也许现在的知识分子就如同他说的是被收买了,也许还有另一种可能就是大家以冷漠来看待那个虚伪的党,不会在上他的当了,不要去理他,让他去覆灭,当然这个是一个长痛不如短痛的结果。

七月三日 纽约,暴雨

<Nixon in China> 是一个不可能在中国看到的歌剧,我坦白它非常的晦涩难懂,至少在没有背景知识的情况下是这样子的,尤其是从第二场开始看的时候完全摸不着头脑,当然江青的令人难以磨灭的形象特征还是一眼就能
让人认出,同样的形象特征是周恩来,一个始终用左手护着肝脏的沉默者。红色娘子军的芭蕾舞表演是大多数中国中年知识分子所熟悉的,也是江青的得意制作,歌剧里她的歇斯底里的女高音反复的“我是毛泽东的夫人“更增加
了她的疯狂。在第三场里更加的难懂,感觉仿佛是在hell and heven之间徘徊,毛泽东时而和蓝平回忆年轻时候的“滋味",时而享受身边性服务员的handjob,时而为现实中他唯一的跟随者江青做一些blowjob,周恩来
照样是沉默的如同木头,或者偶尔喃喃自语忏悔革命道路的走入歧途直到党旗盖在他的身上永垂不朽,最后又如同zombie一般从血红的镰刀斧头裹尸布下爬出来问: How much we did was good? 而在隔壁病床上的毛氏
夫妇在意淫之后一起同裘共枕,只不过在口渴的时候象征性的从貌似地狱的血河里掬一捧人血解渴。整个过程又穿插者nixon夫妇在回忆二次大战的血与火的洗礼,大概是咏叹调的旁白让人觉得更像是某种新型的行为艺术
而不是歌剧。总之,很难懂,当然也不许要懂,它不是写给大多数中国人看的。红色娘子军的芭蕾舞有一个细节我不是很理解导演的意图,吴琼华被南霸天的走狗打的昏死过去(也可能是轮奸造成的,结果是一样的),洪常青
将她扶起伸手要东西的时候,尼克松递过去了手枪,这个也许是江青的本意吧,被压迫者起来反抗需要的武装,但是尼克松夫人却挡住递过去了一杯饮料,我不知道这是否是后来导致江青歇斯底里的原因,但是总之芭蕾舞进行
的很流畅,吮吸了甘露的吴琼华苏醒了,然后才是手枪和其他娘子军战士准备战斗。
总体上说,我还是比较欣赏这部歌剧的,至少比我以前看的那个搞笑的法国电影《人民解放军解放巴黎》来的有意思。
对于流行的时下“郭美美“热门事件装作漠不关心是不对的,不过真正的问题是现在很多人都已经明白到底这个郭美美是不是真的并不重要,因为她最多就是冰山一角,如果她说的是实话,可是即便她不过是一个哗众取宠的物质
少女却也不能改变冰山藏在海面之下的事实,因为大多数人都知道或者很确定的猜测海面下有一个只露出了很小一部分的冰山,虽然中国共产党的腐败路人皆知可是为什么现在大家单单对于红十字过不去呢?原因很简单,其他
的共产党政府部门的腐败对于大多数人的侵害都是非直接的或者普通人比较困难联系到自己的,而很多人是有直接捐款给红十字的话那么他们对于自己的钱的去向就有很大的实际的感受,正如美国纳税人的感受一般。

七月十六日 圣何塞,晴

san jose发音并不是你想象的那样,要按照西班牙习惯发成“圣何塞“,我来到的洛杉矶才明白自己又第n遍的犯了一个十秒钟的决策错误,我之所以说十秒钟是因为我想去“硅谷“附近落脚,但是你只需要google以下花十秒钟就知道
我应该至少去旧金山而不是洛杉矶,除非我想和好莱坞的三流女影星亲近,这个是大多数男人都会自然的梦想,至少像penny一样的女招待也是所有喜欢big bang theory的人类盼望的。现在friends with benefit这么热门
以至于拍成了电影了,于是下个星期也被称作了week with benefits.
纽约在很多方面都是女人喜欢聚集的,者一点是不容置疑的,他在美国的位置如此独一无二完全无法替代,难怪让人无法在美国以至于世界无法克隆。将近二十天的故地重游反而让我发现了曼哈顿的魅力,在上城并非都是富人聚集的地方
你却感到那么的写意,运动场,海边跑道,林荫公园一点也不比中城的中央公园逊色,甚至有过之无不及。
坐了一天的灰狗其实还是蛮有意思的,并不是很累,这要感谢美国的公路和旅行车的舒适,或者是服务的专业。路上你看到很多令人称奇的景色,比如我看到了美国的养牛场,真是令人震惊,究竟有多少头牛呢?我说也许有十万头,这可能
并不夸张,灰狗是以70mile的时速行径的,足足开了将近一分钟才看到养牛场的尽头,大概有一公里到两公里半的长度,宽度据我目测大概也有近一公里,那么按照密密麻麻每头牛占地10平方米也有两万头,实际我看密集程度应该超过5平米,
记得当初“疯牛病“肆虐的时候,英国下议院曾经拼搏养牛场的牛过于密集和下议院的拥挤程度有一拼,为此专门通过法案要求牛的生活空间要得到保障,当时很可能还被中国的主流新闻在借渲染疯牛病让国人庆幸社会主义制度优越性的
同时作废反面教材揭露西方资本主义民主的虚伪性都用在了动物身上。
可是如今看到这真实的养牛场一切都变得如此合情合理,在中国整天为乳制品安全担心的时候,为什么不回过头来看看美国的高度的农业产业化就明白品质的保证只有集约与规模化的养殖业,一家一户的小作坊怎么能够有竞争力?

在san jose坐轻轨火车,一开始认为不要买票,还心理赞扬市政府鼓励旅游为劳动人民做好事,后来问motel才知道还是要买票,只不过是抽查罚款,我买了两次后决定逃票,虽然两块钱很便宜我还是决定逃票,因为我前一天看到、
查票,根据“凡人概率论“今天再检查的概率很小(当然学过概率的人也许会argue这个是独立事件,我却认为人类的行为支配的抽查是条件概率)总之,为了省钱。
这份工作实在是鸡肋,说心里话真是有些无奈,40块/小时实在是不怎么样,compatibl的sasha至少还给我买了医疗保险,当然他很聪明因为他看得起我知道我在高盛的薪水只有保安和扫地的比我低。所以,这个职位我估计
更糟糕,因为印度人的agent更是抠门,连面试的路费都没提过,开口第一句话就是问我能不能够face2face interview,废话你出路费一般人都会愿意,问这话还不是像省钱?

所以,我也横下一条心,这个工作有没有都不管了,买了一张灰狗票去旧金山了,票价大概将近10块钱,比googlemap的复杂路线要容易。
电视频道里面fox应该是republican的铁杆,熬吧吗对于fox恨的牙痒痒的,甚至下令广告都不再fox上面做了,fox当然也是当仁不让,经常办一些观众现场调查节目把熬吧吗政府的广告叫观众评述,当然观众们全都不信民主党的鬼话。
说这个什么学生没有贷款,小孩子没有政府救济金是耸人听闻。有个评论员甚至火气很大的说,有些美国人根本没有income tax对于加税说很好没问题,这个人压根不存在问题也就压根没资格表决问题的解决方案,(If you are not
part of problem, then you are not part of solution.) 这个话说的很极端,
主持人也不敢多评论赶紧结束采访,但是我觉很多美国中产阶级都是这个态度。

去san jose我在网上定motel6,可是去san francisco却没有预定,我真得是白痴的好笑,小城市压根不需要预定,model也压根不值得预定,比如motel6网上和柜台都是59.99,你何必要预定?满大街的motel在san jose一家连一家
都是49.99明码标价,真是亏!
可是三藩市的旅馆实在是不容易找,当然大城市的downtown找便宜旅馆本来就是白痴的想法,红灯区的几家旅馆我看的不敢去问,准备实在是山穷水尽再去。因为脑海里的印象就是刚刚又看的电影《red heat》里施瓦辛格住的芝加哥的
小旅馆,满地的毒品贩子和妓女与黑帮火拼。沿着market街走啊走,终于看到hostel的牌子可是一敲门却说早改成别的了。走啊走,有看到一个什么hotel,门都是里面控制的仿佛珠宝店的架势,一问才知道是homeless people的救急所。
穷人真幸福阿,走啊走,又看到一些旅馆,一看都是一些所谓的residential hotel,就是长租的那种旅馆。走啊走,找遍了china town没有看到一家旅馆。走啊走,天觉得有些凉了,和一群年轻人进了一家卖酒的杂货店买饮料,
店主是一个结实的黑人,一看就来这么一大群人显的很紧张,的确我也知道这种感觉,一大群年轻人有的已经喝的醉醺醺的,店主突然大喝要制止一个年轻人喝酒说违法,我不知道是不是没有看身份证不能买违法还是压根就不允许喝酒违法,
总之,你应该知道时间有多晚了,终于问到travelodge,我一开始很紧张不知道是不是很贵的我承受不起,一起做灰狗来的三个中国人说他们网上预定的hostel都要60块,不过,现在也没有办法了,不过看到这么多的年轻人排队,还是
外国人(非美国人,说的好别扭),我想应该不会太贵吧。还好79块一个房间,总比downtown的毒品窝要强的多了。进了房间一看还不错,虽然文字有点旧,气味不是很好,但是设施齐全,是一个完全decent的旅馆,大体相当与国内的
三星偏上的的酒店规格,应有尽有,微波炉,minibar,保险箱,咖啡机,吹风机,闹钟,其他的小东西很齐全,我很后悔没有在网上预定,应该价格会便宜一点,还是物有所值的decent的旅馆,很符合他的名字,traveller's lodge.

我的记忆力实在是太糟糕了,很多面试题目是反复做过了还是忘记了,比如一个class没有default的constructor,你要怎么创建这个class的一个array的object,答案因该是没有办法直接这么多,你只能创建他的pointer的
array然后一个一个的创建。记住阿!!!再比如,一个class有data memeber和member method,假定都没有virtual的method,他的size是n,那么你把他的一个method改成了virtual之后class的size变成怎么样?
有一个moment我糊涂到以至于模糊到把普通method都算到size的一部分,真是一个彻底的白痴,普通method怎么可能有大小呢?真是糊涂,只有vtable才有阿!!!

听美国国会辩论是一个非常新奇的体验,其实单单国会的各种制度与规则就是一门科学,发言权的控制,yoback yoback我就没有搞明白,在新兴亚洲民主国家的议会的打架都是对于制度没有完全理解或者没有真正的建立的原因吧?
我第一次在加拿大大学里听到“政治“被称作“political science”的感觉是不可思议,我反复的辩解说所谓政治就是法国人所说的肮脏,或者中国人眼里的阴谋诡计,在西方被称作“科学“实在是可笑,可是当你越来越多的接触
北美社会的现实你才慢慢体会到了政治原本就是一种科学,真正的所谓民主体制的本质原本就是要寻找一种科学的制度,(在计算机领域就是一种针对近乎NP-complete一样困难的问题的某种特殊case的有效算法)来解决两方面的
问题:1. 寻找正确解决的方法。2.寻找解决方法的方法的有效性。
几乎所有的问题都有一个所谓的天然解法,那就是所谓的自然解法,就是“穷举“,不在乎时间与精力的穷尽所有的可能性,(这个过程也并非完全没有智力活动的参与,怎么记得你已经尝试国的途径本身就是一个不晓得挑战,这也可以
想象自然生物进化也是这个实践的一部分,只不过“记忆“尝试的方式是依靠所谓的“遗传与变异“再加上一个复杂的“自然竞争淘汰“机制达成的),没有自然竞争与淘汰,自然会停滞不前无限重复已犯过的错误,没有遗传与变异,新的
尝试不可能产生。
那么对于人类的制度与体制的演化是不是也应该有某种类似的机制来支撑呢?国会的传统与习惯是某种学习经验的积累,新制度的采纳又是某种变异与继承,每次换届选举同样是自然的竞争与淘汰机制。这不是一种复杂的科学吗?

关于奥巴马的财政策略都是一个只能做不能说的的公开的秘密,美国的经济是结构性的,也就是说失业率是很难降低的,惟一的解决方法在奥巴马看来就是采用所谓的罗斯福政策,模仿社会主义体制用公款雇用公务员降低失业率,
这个做法只能让我怀疑奥巴马并非他自我标榜的所谓的理想主义者,因为有一个事实是他所不能抵赖的,既然美国赤字这么严重,已经到了天塌下来的地步,(这部夸张,他自己的电视广告差不多就是这样子的,说不提高债务上线
美国就完了,“land halt")可是在这个情况下,从伊拉克要撤军了,从阿富汗也撤军了,本拉登也大死了,反恐战争据说告一段落了,那么为什么不可以把庞大的军费开支做一些削减?最近通过的2012年的军费预算听证会不但
一分钱没有减少,反而还增加了一两百亿美金,这是为什么?奥巴马要讨好军方?奥巴马知道美国的未来全部寄托在超强军事实力上?奥巴马害怕退役的美军士兵增加失业率?反正无论如何我都看不出他有什么天真的理想主义的
痕迹。唯一的解释就是他也许是美国最年轻的总统之一,作为第一个非洲裔总统他的雄心远远超过了现实,就是说他要在一个总统任期内完成五六位总统才能昨晚的事情,医疗改革,教育改革,能源方向的改革,金融监管体制改革,
美国福利制度的改革,美国经济结构的改革,世界政治外交框架的改革,世界经济架构的改革,美国超级大国与阿拉伯极端势力的对抗,等等一幢幢一件件有那一件做成了就足够任何一届总统自豪一辈子的,可是这位奥巴马雄心勃勃
壮志凌云希望在一届总统任期都玩城,后来发现千头万绪才发现要再做一任总统才行,又拼命的急功近利想要迅速摆脱美国经济的衰退,事实上他在经济上没有什么妙方,世界上没有任何一个国家任何一个人有办法,结果几千亿的
美金砸下去连个浪花都看不见,这个说法当然对她也不太公平,共和党布什政府留下的烂摊子凭什么要他来收拾?可是问题就是谁让她是第一任的的美国非洲裔总统呢?他给美国黑人的影响达到了以至于美国的暴力犯罪都见少了,
这么多人对他有这么多的期望他不硬着头皮上行吗?

美国人民从最初的奥巴马热冷却后对他就开始严酷了,谁让政客们老是说天要塌下来了呢?2008经济危机的时候我全程看了美国国会听证鲍尔森关于bailout的转播,情景依旧记忆忧心,他说国会不给她那张八千亿美金的空白支票
三天内美国就完了,注意是空白支票不是空头支票,就是受益人空白的,想填谁就是谁的那种,结果宝儿僧的老东家高盛的了大头,这个猫腻谁也不说,可是有谁心里不怀疑他有多少私利呢? 只不过美国国会议员被他咋呼的
一点注意都没有,完全由他去折腾了。只能撂下一句乎,就是这张八千亿美金的支票你拿去爱怎么花就怎么花,也只能由着你了,不过不管美国经济救的活救不活,再来要就没有了,这个科技本上是原话阿,当时我听的感动的
眼泪都快下来了,赶紧上厕所,要知道那个关头,宝儿僧写了三页纸向国会要了八千亿美金先斩后奏的权利,说不给的话不出三天美国就像科幻电影<The day the earth stops》一样的停转,所有的人都吓坏了,老议员员
们胆战心惊的对宝儿僧说,你总共三张纸要了八千亿平均一个单词就是上亿的美金,可是连个钱打算怎么花,花完有什么结果都没说,还说这个仅仅是第一步不保证是否还需要更多的钱,叫我们这些国库看门狗怎么像人民交代,
宝儿僧愣是不说,最后也只能有着他了。)相似的在太平洋的另一边温小宝也是脑门一拍拿了四万亿人民币和美国比赛花钱,他当然轻松的更多,压根就没有人会放个屁。3G手机要搞三个平台,搞三个制式,弄三个公司来搞,
美国什么都是两党制,可口可乐/百事可乐两个巨头竞争,中国人熟读三国演义,偏好三国竞争,高速铁路也是要和三沾边,建一个高速铁路办一件事我们不想只花一份钱,那样显得我们比美国人气不够粗,所以,我们要向
日本法国德国三家都买,花三份钱办一件事才能体现社会主义制度的优越性,本来三个卖家来竞标中国的高铁打得你死我活高的连国际关系都不和谐了,为了和谐世界我们决定让三家都得益,于是作为买家我们挨家挨户去给
三家送钱平息他们的自由竞争,达到了社会主义的按需分配姆别,于是这个世界一下子就安静了,呵,不对,应该叫做和谐了。

奥巴马高呼“Don't call my bluff!" 然后阔步走出谈判室。共和党人是否真的要call呢?奥巴马的bluffing是否被共和党人看穿了? 奥巴马想要把五届总统任期的的事都做完,可是,现在他发现他也许连任的机会都没有
了,所以,要做什么就趁早。可是,另一方面,共和党人却商量着让他连one-term-president都做不了。怎么办到呢?就让他show-hand看看他是不是有guts让美国经济陷入他所说的万劫不复的境地,他敢吗?他肯定
不敢,因为,这样他肯定就是一个连one-term都做不完的总统,所以,共和党人手里有了黑桃同花顺为什么要怕奥巴马开牌呢?反正他要退让,不是吗?

当然,我看到的更多的评论说的是,共和党人的强硬是外强中干仅仅是做给中产阶级看的,等着到最后一分钟让步,让人相信他们坚持原则到最后一步为了美国大局着想才让步违背了“永不加税“的誓言。
可是,会不会有令一个版本,就是某些共和党议员恨透了奥巴马的“社会主义“思想,宁可坚持自己的原则绝不让步,想想看,这不是不可能的,14万亿的债务本来就已经是好几代美国人都还不了得债务,在继续扩张一样是
死,还不如长痛不如短痛来个了断?宝儿僧不是当初也说过天要踏下来了吗?结果bailout花了那么多钱和天塌下来有多大差别?市场不买美元还能买澳元不成?怕什么?只要美国手里有航空母舰有什么办不到的呢?
所以,违约就违约,看看有什么了不起的?会有人想这样子干吗?应该不会吧。

几乎全世界的人都被中国经济的表面现象所蒙蔽认为中国的模式创造了经济的奇迹,这实在是胡扯,或者用一句流行的话来说,扯淡扯的我蛋疼,翻开中国共产党的历史就知道,所有的一切经济发展几乎都是在按照“马克思主义“
指责“帝国主义“的“超级剩余价值“的基础上创造的,什么意思呢?简单的说,就是最大限度剥夺劳动者的基本所得。

首先说农民,全世界的各个国家的农民,哪怕是非洲的最穷困的农民也比中国农民境遇来的好,这句话听上去
那么的耸人听闻,似乎符合本人一贯的语不惊人死不休的原则,但是事实上,中国农民是被完全剥夺了土地所有权的“佃农',而且不是个别的,是整个中国超过八亿农民集体被剥夺了基本的生产资料--土地所有权的佃农。你去看看
全世界有几国的农民全体都是佃农?农民没有土地吗?知道什么时候农民的公粮不用交了,什么时候农民的土地不用交了,知道农民盖房子的土地都要向国家申请,知道农民不得自由转让土地,知道农民自己盖了房子不能转卖?
这些不能说明并没有土地的所有权的佃农身份吗?农民是被共产党彻底“共产“之后变成了“贫下中农“的。
再说工人,中国的工人工资是没有竞争条件下又中国最大的垄断企业---国务院---制定的,工资不能反映工人的劳动创造的价值,因为全中国的企业都是共产党垄断的,你不接受共产党制定的工资你就别想在找到任何其他的工作。
这就是马克思的帝国主义的超级垄断机制,贪婪的攫取“超级垄断所获得的超额剩余价值“。
所以,在这个超级垄断体制下创造的任何的所谓的“巨大的建设成就“有什么好欢呼的呢?要知道奴隶制的古埃及建造了无数的金字塔,奴隶制的巴比伦建造了空中花园,残暴的秦始皇强迫几十万奴隶修建了万里长城,这些都是
值得夸耀的吗?你只要不给工人发足够的工资,把农民种的粮食收走,什么样的经济奇迹你不能取得?

也许有人会argue说中国改革开放以后有了巨大的经济成就是有目共睹的,那么试问一下,改革开放是不是减少了共产党的条条框框的束缚取得的,是不是可以说如果没有共产党的统治中国经济早就有了“奇迹“?共产党是奇迹的
创造者还是毁灭者? 不过,这个本身就像是一个伪命题一样的问题,没有共产党的统治,你干嘛还需要“改革开放“?改谁的的革,开谁的放?是否中国的经济奇迹被延迟了三四十年?其实这个问题存在于无数有头脑的,有良知
的知识分子头脑种,只不过大部分人屁股决定脑袋领了共产党“作协“的津贴之后仿佛吃饱了肉骨头的看门狗一样的不叫唤了,不把这个问题的答案告诉无知的工人与农民了。当然,偶尔的你可以在某个没有喂饱的哼哼声中听到这样
或者那样的喃喃呓语,无非是像无助的斑马祈求刚刚吃饱了斑马肉的狮子那样说,“如果我们斑马在你们狮子俄的时候吃我们的时候不反抗,你们狮子能否答应不滥杀我们斑马,就是说你们狮子不要在吃饱肚子的情况下还杀死我们
斑马,这样子的话可以提高你们狮子统治者在我们斑马心目中的形象,有利于建设一个狮子斑马的和谐社会。“

有一件事是我在“灰狗“横穿荒野的时候看到的令人惊异的景象,那是在一望无际的荒野上的种植的一排排一列列的小树苗,在相邻的地块你也许又能发现长大的树苗,或者已经长成的树林,但不管是什么都是一排排一列列的排列
整整齐齐,这个不仅仅证明他们不是天然的树林而是人工种植的,而且进一步让你看到树苗的成活率这个异常重要但往往被人们忽略的因素,在中国种树往往是政府官员心血来潮的公共形象宣传,所谓的年年种树年年种,因为
种完了没有人管不死才怪,这个也方便了明年政府官员可以在同样的地方重复,否则还不知道要去哪里找一个方便的地方去作秀。在高速的巴士上我只能隐约看到好像每棵树都连有水管自动浇水,这个工程实在是很大,从种植的
那些矮小扭曲的树来看除了改变植被防风固沙应该没有什么经济价值,这证明应该这个是政府的壮举,当然在一些地块我甚至看到了少数的瓜地,我在猜想这是政府在投资在不适宜的地块种植这些防风林,对于一些已经改造好的
或者条件适宜种植的地块交给私人从事农业种植,当然这是纯粹的猜测。但是有很多的标语说要改变国会造成的“沙窝“灾难又让我怀疑会不会这是私人的公益活动?但是,不管怎样这都是非常令人印象深刻的,关于气候变化说的
多做的少,很多时候指责发达国家尤其是美国没有作为,但是美国真的如媒体渲染的无所作为吗?具体做了多少无从查询,但是看看结果就是美国没有中国那么严重的沙漠化,这个结果也许能够说明美国的确做了很多的保护环境
的事。

发展中国家一方面叫嚷没钱,一方面贪污腐败浪费大量的资源。发达国家的argument通常也很难反驳,比如现在环境污染谁造成的谁修补,谁排放谁减排,换句话说个人子扫自家门前雪,你能要求说你们家有钱应该把我们穷人
门前的雪一并扫了,因为我们的家长把我们的钱都花在包二奶养小妾身上了?

七月十九日 洛杉矶,晴

好热,当然这是指下午的时候,一到晚上立刻就凉了。
每天都被一个念头所困扰,那就是怎样推翻共产党的统治?唯一的途径就是所谓的唤醒人民,人民是一种只懂得“朝三暮四”的智商不超过100的猿猴类,只能使用自己每天获得的口粮来衡量自己的信仰的正确性的生物,所以,
虽然早上加上下午总共是七个桃子不变,如果能够在早上获得4个提前得到也是会获得拥护的。所以,奥巴马题出了所谓的两年后加税,目前不加税现提高债务上限,这种“债留子孙”的政策还是获得了大多数民主党人支持,因此,
如果有人反对我认为普通民众是猿猴的说法,不妨思考一下支持奥巴马的人的思维模式。
如果全世界的人都认为债务上限必然会提高的话,那么这本身就会成为另一个危机。

七月二十日 洛杉矶,晴

关于黄金是否是货币这个问题,美联储主席伯南克给出了明确的回答:不。我猜想这也许是因为一旦承认货币必须和某种实物挂钩的话必然导致一种逻辑的结论:美国政府事实上已经破产了。所以,按照现在流行的学院派的
货币是一大堆的常人不理解的名词,当然最实质的就是货币是一种可以用来借债的工具,美国政府入不敷出就向一个“第三方独立金融机构”--美联储--借债,美联储把这些变为债券卖给中国日本等等,变为现金的债券再流回美国
政府变成救济美国穷人的支票,支持战争的资金,这就是伯南克心目中的货币。
恐怖袭击全球皆是,到处都是伊斯那个烂教的喧嚣(我要为我的粗鲁的语言向懂厦门话的女性道歉)

七月二十五日 硅谷,晴

Ron Paul maybe the last statesman who speak only truth nothing but truth and whole truth. Just as you have sworn with your right hand touching the Bible.
他是一个原教旨主义者,现在我才明白他为什么要和伯南克过不去,为什么伯南克回答他的问题的时候态度为什么也那么的不友善。
我要是republican的话,我就坚持到底让奥巴马call his bluff,让民主党削减社会福利失去选举。绝不加税!
fox电视台绝对是反对奥巴马的先锋,这不是又是一个全民代表秀,这是我起的名字,就是把一群人召集来讨论,代表各行各业,男女老少,然后大家异口同声声讨奥巴马,我现在也是一个积极反对奥巴马的分子了,可惜我不是
美国公民没资格投票否则我一定坚决投票反对他。1.民主党是彻头彻尾的投机分子,两年了都没有通过预算案,这算是怎么一个政党。2.奥巴马要通过的举债上限翻来覆去都是要撑过明年底的总统选举,处处都是为了他的总统
连任着想。3.美国经济大不如惜却为了讨好选民硬要全民健保,这是少数富裕小国才有的奢侈,美国是没有资格的,花钱谁不会?钱从哪里来?4.美国据说有将近一半的人不纳税,然而如今还要加税让政府出钱给穷人发救济,这
种社会主义的天真想法只有民主党的奥巴马才想得出来,难怪ron paul暗地里讽刺他说治理国家就靠去图书馆翻阅几本历史书,时代不同了,社会主义那一套是死路一条!
这场政治戏演的太投入了以至于我都开始担心明天大地震导致我连眼前的工作都干不了,那我就惨了,前期面试来来回回花了好几百块钱都没有地方报销了。

七月二十六日 硅谷,晴

骑着我新买的自行车心情很好,终于实现了我骑自行车上班的理想,当然还没有完全实现,CISCO眼下这要裁员一万人,我担心我又没戏了,当然我知道我被应召只是因为我便宜,so, I am the cheapest whore in town.
美国的debt limit的戏越演越精彩,因为奥巴马已经黔驴技穷了,一个充满天真幼稚社会主义幻想的毕业生看来是没资格领导美国的。中国上个星期六据说高铁追尾死了几十人,我一点都不惊讶,因为这个早就在意料到中的,
不出事故天理不容,美国乡下的红绿灯系统都要比中国的高铁来的安全可靠,我在事故发生前曾经看过那个总工给新上任的铁道部部长的信讲了四点关于高铁一定要降速的原因,真实骇人听闻啊,如果你看到了那封信就一定会
预料到现在的事故,这完全是必然的,难怪没有几天那个铁道部长就宣布要降速,但是这根本解决不了问题。日本德国法国都不过是300公里,中国买来了就直接上到380公里,一样的东西为什么要这么做,我当时有一个揣测是
铁道部这么计算的,任何系统都有一个故障率不管有多小,速度越慢故障率越低,速度越快故障率越高,出故障就有可能死人,死一个人就要赔钱,铁道部算了一下,中国的人命比较贱赔钱也比德法日来的少得多,那么把系统的
速度调高故障率虽然高了,但是赔一条人命的钱比较少,所以算下来还是比较核算的,因为花了好几万亿的钱,部长和下面的人回扣有上百亿,如果不弄出个什么名目来恐怕有人会跳出来说三道四的,因为如果说是搞出了自主
知识产权的玩意,花钱多了也有理由了,所以,就把同样的系统调高运行速度,所以,就死了几十个人,不过,我觉得其实无所谓,投资都是温小宝排脑门决定的,没人敢说什么,煤矿每个星期不也是死这么多人吗?没什么
了不起的,给家属多几万块钱就没事了。

七月二十八日 硅谷,晴

观看cnn的现场直播众议院辩论表决“伯纳“的议案,一方面我为双方辩论的唇枪舌剑而折服,因为作为政治家一个最重要的功能就是表达思想,并说服听众,这个是奴隶社会和现代社会的本质区别,因为对于奴隶唯一听得懂的
语言就是奴隶主的鞭子的话,我们不如回到茹毛饮血的原始社会去,但是今天有一些国家用所谓的“党的政策“代替了奴隶主的鞭子,让我们有思想的人类沉默成为思想的奴隶。
看议会的制度实在是复杂,我来到北美被一类事情所吸引,那就是细小的细节制度,小到弹簧门开合的方向,人形交通灯的优先级,大到议会司法行政权力的分割,议会法案提议讨论表决的制度,所有的一切都有一个严密的
制度设定,这一切的制度是怎样形成的?这些需要漫长的过程,中国应该在鸦片战争之后就开始摸索实践,但是晚了一百多年依旧没有开始,那么制度要成熟起码要再花上几十年,所以,我觉得在中国完全没有可能在一百年
内建立相应的制度,即便退一万步说共产党想要建立,而这本身就是天下最最不可能发生的事情。所以,结论就是我同意共产党的说法,中国不适合民主政治,虽然我说这句话和共产党的考虑完全不同,唯一适合中国的制度
是在机器人统治下的人类沦为机器人的奴隶的人类最高级的奴隶社会体制,这个倒是有可能建立的,所以,中国的社会不需要再进行血腥的革命了,直接等待人工智能的出现然后被机器人统治就行了,反正中国当奴隶已经习惯
了给本国统治者还是异族统治者都没有什么不习惯的,以后被机器人统治还更加公平一些。
我个人的观察是美国民主党议员的素质平均要比共和党来的低,当然也许民主党议员有色人种更多,胖胖的黑人大妈更多,老老的黑人大叔更多,当然按照ron paul的说法就是他们关心的唯一的就是所谓的entitlement,
虽然共和党更关心的是战争,最起码这个是美国现在唯一没有受到挑战的领域,也是唯一的希望所在。
中国高铁的问题的核心在于人命的不值钱,一条命只有50万人民币,很多中国人很天真以为政府的监管可以解决中国的安全问题,这是错误的,资本主义社会任何问题都应该用钱来解决,如果一个人的生命的赔偿达到100万美金
或者更加实际的解决方案是乘客的生命保险由保险公司承担,然后由保险公司检查监督安全,那么中国就不会出现今天的问题。在山西每天有不知其数的煤矿工人死亡,作为主流社会采取的漠视的态度因为他们认为自己可以
免却那种生命的威胁,更多的人给与廉价的同情之后期望共产党政府承担责任,这是错误的,市场经济需要市场来解决,如果矿工的赔偿金不是5万人民币而是100万,那么煤矿就不会成为绞肉机。
所以,让政府去解决是最错误的,应该让市场来解决。民主党就是这样的错误。

七月二十九日 硅谷,晴

我完全支持共和党的主张,经济增长不是政府的投资所代替的,社会主义走不通!我们现在要大声的对奥巴马说:let's call your bluff!
今天学习了一个新的词汇:anarchist,无政府主义者,我觉得在某种程度下,这是一个好东西,政府越大,人民越小。
今天他们通知我下星期三去,这个不是正好在所谓的doomsday之后吗?如果,美国真的天塌下来了,我还用去上班吗?

七月三十日 硅谷,晴

我猜想每一个程序员大概都会遇到一个阶段就是开始关注,感兴趣与协议的时期,的确,如果没有哪怕是粗略的阅读rfc文档的话,总是不能说你对于某个领域有什么了解。
中国的问题其实只有一句话就能解决:没有共产党才有新中国!
听美国参议员的辩论让我热血沸腾,热泪盈眶,我为美国有这样的领袖在国家危难之际慷慨激昂感到骄傲,我为美国有优越的制度输送最优秀人才的国家的领导岗位感到骄傲,大清帝国必然覆灭,共产帝国同样必然覆灭,在鸦片
战争爆发前,大清帝国的gdp占全世界的比重也许有三分之一或者四分之一,贸易顺差对大英帝国几乎导致英国破产,那时候的情形一点都不必今天的美国欠中国的外债少,当时的大清帝国能够积累这么巨大的贸易顺差就是因为
政府操纵贸易投资导致英国不能自由出口产品到中国,只能单方面进口茶叶丝绸等等,结果最后导致英国发动鸦片战争让大清帝国成为其殖民地。同样的情形今天正在重演,腐朽没落的共产帝国通过操纵汇率限制金融市场自由化
积累了巨额的贸易顺差以至于今天美国几乎要破产,那么作为美国唯一的选择就是推翻共产帝国,我衷心的希望这一天早日到来。

七月三十一日 硅谷,晴

我的amd64 ubuntu自从安装了flash10的原装的plugin之后经常crash,这里是解释:简单说就是使用了一个非法的指令“lahf_lm"这个指令在早期的处理器上没有,所以,一个天才的家伙写了一个workaround,这是
代码,要把他拷贝到/usr/lib/mozilla/plugin下面,这一点我总是忘记,因为ubuntu已经不在使用$HOME/.mozilla/plugin这个地方存放plugin了。代码很短,我仅仅能够明白就是自己写了一个signal的handler
捕捉SIGILL的非法地址的错误,至于为什么非法地址一定是那个9f就不明白了,然后大概就是模仿这个lahf_lm的指令操作寄存器吧,这个范畴的东西我几乎没有碰过感觉还是很新鲜。
早上原本想把那个mini-http看一眼,结果看到了一个boost的神气的东西,就是spirit,这个东西异常的强大,比regex还要厉害,完全把bnf的语法直接就动态的融入到c++的代码里面的一个parser-tool,我承认这个
作者是真正的天才,相比那些所谓的写几行脚本在人家服务器上的所谓“天才少年”是不可同日而语的,我一向不太钦佩这类小孩子,虽然很牛,但是还是可以想象他在干什么,而boost常常让我头疼,比如我自认为stl有些精通,
但是boost的lambda让我脑子转不过弯来。
我的python2.6被3.2折磨的涕零把落,只好根据python2.6-config的错误一步步设定symlink来指向正确的路径:sudo ln -s /usr/include/python2.6 python2.6,这里的python2.6是我在/usr/lib/include
下的。同样的,在/usr/lib下我也设了一个lib/python2.6的symlink指向/usr/lib/python2.6,所以,很傻的/usr/lib/lib/python2.6/config/Makefile真是无聊。
同样是一个折磨人很久的问题,噪音很大的问题,原来这么简单,注释掉/etc/modprobe.d/alsa-base.conf最后两行。
我的ubuntu-software-center和update-manager都不工作了,但是从命令行运行是没有问题的,问题是从application menu就不行,我google了好久,因为我一直认为assertion `GTK_IS_CONTAINER (container)'
failed应该是和gtk什么有关的吧?(很明显马?)可是,这位仁兄给了我答案,我不知道这是否是问题的原因,但至少暂时解决了问题。我到/usr/share/applications下面找到这两个的.desk然后在command之前加上
gksudo,因为不知道为什么会出现这个问题,因为是权限的问题。很奇怪的。

八月一日 San Jose,晴

如果你想学习上乘武功,boost是一条捷径,其实,武功无所谓绝对的高低之分,可能只有难易的区别,看boost的mpl让人慨叹回忆起当年接触的一些奇妙的语言,比如haskel,lisp,看wiki才意识到这是计算机科学的两大流派,
imperative,functional,仿佛武功里的内功与外功以样,哪一样练到绝顶都是高手,可是两者看上去非常的不同,真有人龙虎交汇,水火相济那真的是非常的厉害的高手。读序言起中的一个很重要的就是lazy-evaluation
以样的东西,就是说如同lisp/haskel一样不会立刻就执行你操作sequence的动作,只是返回一个操作结果的view,就是说data和要applied的function,这个是及其高的境界,原本以为c++原生语言难以做到,没想到
有高手竟然作成了库,让人慨叹景仰不已,要知道很多的问题都是我当年苦思冥想感觉难以实现的,当然那个时候年幼识浅还很幼稚,但是今天经过了这么多年回过头来看mpl的讲解还是感到振聋发聩,比如这个度量衡的实现就是一个
精妙的作品,思之让人热血沸腾。因为,道路有千千万万却不一定每条都很理想,看上去很简单,似乎一个初学咋练的小屁孩也能想到用一个template的常数参数来表达不同的量纲,可是你能做到类型与量纲的对应与兼容吗?这个
就不容易想到了。这里有一个关于模板的细节就是typename和class的,似乎两者都是通用的,所以,我几乎都忘记了typename的存在,今天看到这里的声明不解,google才明白当你在模板里面使用模板的类型参数作
“声明”
的时候,你就非要使用typename这个关键词了,这里解释的很清楚
感觉metaprogramming或者generic programming之类的仿佛是“乾坤大挪移”之类的武功,很多需要有天赋才能去练,而且一层比一层难得多,比如第一层需要两年,第二层需要四年,第三曾需要八年,而如果一个人自称
学习c++四年以上尚未练通地一层,那么决不可再去尝试练习第二层以免走火入魔,同样如果第二层练了八年仍无进境则此生决不可再去练第三层否则后患无穷。
但反过来,那些内力深厚的真正的高手却有可能在瞬间练到两层三层,盖因乾坤挪移的功夫是使用巧劲,当你力量超人自然得心应手,否则让一个幼童舞动百斤大铁锤不论招数多么巧妙都是不及伤人反倒自己先受伤了。

关于中国的高速铁路其实是一个尽人皆知的秘密,说是尽人皆知是指的圈内人都知道,只不过做得说不得,因为金额太大了,几大巨头(法德日加)人人利益相关都不愿透露过多。
1。为什么铁道部说380公里时速的中国高铁是自主知识产权创新而有人指责是抄袭?
答案很简单,速度越高造价预算越大,贪污的钱越多。本来国产的动车将近200公里时速的铁路造价不超过2000万元一公里,但是高铁三百公里的造价是这个价格的几倍,而最核心的是引进的高铁技术不论是法德日都是200多的速度,
但是修改了程序的几个安全系数不花几个钱就可以说这个是300公里的高铁,甚至是380公里的高铁,也就是说原本买入价格都是一样的高铁技术换个名字造价就是原来的几倍,要知道这个数目不是一个小数目,380公里时速的高铁
造价是1.2亿没公里,大概是200公里时速以下的六倍多,究竟这中间是简单的软件参数修改还是仅仅把国外的安全标准降低就是一个操作手法的问题了。中间的差价大概是几千亿人民币,当然,这些钱不是刘志军一个人吞了,他要
拿出来很大一部分给这些国际巨头法国雪铁龙,日本新干线,德国高铁,加拿大蓬坝堤封口,否则这个圈内人都知道的事情说出来还得了?所以,负责技术的总工拿了大概将近30亿美金,刘志军也有将近一百个亿人民币,其他那些
下面真正实施建造的承包商的利润大概在三四千亿人民币左右。
2。为什么中国高铁要同时引进多家的技术?
答案和上面一样,因为法德日大家技术大同小异,心里都有底,如果有任何一家没有拿到铁道部的合同看到刘志军用200公里的高铁作380公里时速的预算找中央要钱都会眼红而捅出来的,所以,为了封住大家的嘴,刘志军先后出台了
四份铁道部内部文件《关于招投标办法》讲明为了不让几个国际巨头因为投标失利而报复揭露,就让几家画押保证说铁道部用抽签的方式不偏不倚,愿赌服输,没抽到的不能报复揭底。同时,也以引进多家技术博采众长的理由向
所有的巨头都定了一批货。

spirit真是一个无上的内功心法,精微奥妙至极,看他的解说例子让人不时的从内心深处发出惊呼,原来世间还有如此妙法,比如这个symbol就是一个让人昼思梦想的好东西,你有一个dynamic parser,这个可是我当年费尽心血
想要实现的,我为了自动解析bnf语法费了好大劲,回过头来看又发现我的scanner和parser是彼此独立的,去问教授,他说scanner也可以动态产生,然后我就得了脑血栓从此不敢再想了。现在你只要己行代码就可以实现,而且
还有几乎无限的可能。这个罗马字的解析真是巧妙啊。

八月五日 San Jose,晴

感觉我学习boost的功力还不足,所以,又会过头来补习stl的functor部分。这个就是我的疑惑,把一个binary_function转换为一个unary_function使用在trasform或者for_each里面,但是,为什么不能够使用变量,
却只能使用临时变量,不如使用constructor创建的匿名变量?
template<class T>
struct Multiply : public binary_function<T, T, T>
{
T operator()(const T& first, const T& second) const
{
return first * second;
}
};
Multiply<int> multi;
transform(v.begin(), v.end(), v.begin(), bind1st(Multiply<int>(), 10)); //OK
transform(v.begin(), v.end(), v.begin(), bind1st(multi, 10)); //error???
睡了一觉才发现原因,是因为我没有定义copy constructor,不知道为什么默认的没有?如果,我定义了之后,又好像掩盖了默认的constructor,结果导致我还要定义default constructor。奇怪?
关于中国高铁项目肯定是高层利益均沾的,否则怎么可能上万亿的项目就这么开工了?下面处理的人也是有苦衷,上面希望息事宁人,大事化小,于是才有了今天的这一幕,很可怜的是,受害者无奈的去质问温宝宝,老温只得敷衍
几句,谁不知道这里面牵涉的人多了去了,要抓的话,政治局常委就要换届了,不知道有谁能留下来。

八月八日 San Jose,早上阴,下午也许就晴

某朝某代某国实行残酷之奴隶制,全国大部分人皆为奴隶身份,白天辛苦劳作不敢有只言片语抗争,晚上收工后躲在牛棚中观看奴隶主挑选的内容的“话匣子”,众奴隶看到某外国首相被民众诘责失职不堪而哭泣谢罪纷纷讥笑此国君主
无能至此竟无力弹压本国平民,更有奴隶怒责给国平民刁恶无稽,众奴隶哄笑讥骂良倾疲乏各自回草榻安寝,施施然疲乏尽去,明日复早起服苦役无一出怨言。某日,某奴隶被奴隶主皮鞭加身苦不堪言,忽失心疯曰公平正义,施鞭者
惶惶然回告主人,主人略沉吟曰:和谐之。施鞭者旋即加倍鞭挞此奴隶致死,后召告众奴隶盖因此人破坏和谐,今除此患海内和谐。众奴隶皆感激涕零拜谢天恩,更有指死者自不量力自讨死无可赦。明日,奴隶主赏赐众奴隶每人肉骨
若干,众人感激跪谢称盛世中兴,食毕有奴隶觉有人牙指甲若干,疑此肉为昨日被鞭死者尸骨,方切切私语,有一老奴怒喝此即造反者下场,尔胡复蹈此途?于是众奴隶皆诺言再不言反。从此再无奴隶敢出反言,实为天下太平和谐。

八月九日 San Jose,晴,是否要开始一段所谓的在CISCO的日子里吗?实际上我也不知道能干多久。

第二天上班,svn还刚设好,bugzilla还没有户头就已经分配了三个bug给我,确实让我有些紧张,当然看看代码也还好了,毕竟不是嵌入式的那块,因为这个东西说白了是一个webservice的后台部分吧?据说也是gsoap的前
端。
这个是前两天作一个250分的题目居然也不会作,只好抄别人的答案研究,还是很有长进的,为什么250分的题目这么难呢?

八月十日 San Jose,晴,是否要开始一段所谓的在CISCO的日子里吗?实际上我也不知道能干多久。

第三天上班才有时间把vpn的softoken设定,ken给我的是svn的server,但是没有告诉我develop server 应该是ctms-hp15,所以,要从eng31这个svn server来checkout,编译环境应该是设好了。结果,发现我的
home dir只有512m,要再去申请mount一个workspace,这个case我在ramp找了很久找不到,后来看到linux的Homedir有一个readme的文件才知道要这么申请。P给我详细讲解了真个架构,ctms是一个soft switch,
cts是真正的硬件加软件,看文档是和所谓的seadragon紧密捆绑的,要编译内核及其驱动,ccs是所谓的callcontrolservice,大体上是一个messagequeue的处理模组,ctm是所谓的manager管理conference room
而switch根据manager的要求转接各个cts,这个之外还有一个webui来直接操作manager,同时还有一个debug用的cli来直接命令行操作manager,此外,还有一个模组confman据说是为第三方视频会议接口的,不过我印象
应该还有一个cuvu,好像是吧,和所谓的mxe,webex之类的所谓的第三方,据说原来都是第三方,但是都被cisco收购了,这个组的总体目标是十亿美金的市场。
每天骑自行车上下班很高兴。

八月十一日 San Jose,晴,是否要开始一段所谓的在CISCO的日子里吗?实际上我也不知道能干多久。

今天早上突然在我的银行户头里找到了一笔四千多快的存款,欣喜若狂仿佛奥巴马政府轻松获得了几万亿元的贷款,思前想后琢磨这个钱的由来,当然不可能是几个月前美国政府退税的两千块钱的意外,只是为什么以前不知道,后来
才想到可能是银行的软件升级了,原来不能在网上转帐,所以我就忘记了。想通了这一点也就没有什么好高兴的了,不过还是有久旱逢甘雨的感觉。
今天看到maillist里面说系统又block了,我刚才吃饭的时候想这应该是由于设计的不当造成的,confmanager的消息处理循环是从msgQ里面取消息交给各个消息的Handler来处理,可是这里有一个问题,你的Handler都不是
在线程里面的,任何的阻塞都会造成整个系统的阻塞。通常的做法应该是这样自的,做一个线程池,有消息的时候,主循环把消息当作参数传给线程去处理,然后继续取消息循环,这是简单的设计,可是当初高通的代码就有这样子的
问题,当然在嵌入式里面没有操作系统来管理进行抢断式的线程管理是情有可原的,可是对于server的处理会出现这个低级的问题吗?
我这个人一向认为别人可能和自己一样总是犯一些低级错误,时常的自以为是闹笑话,又不感寂寞想要炫耀,常常闹得灰头土脸还是在看看代码才发表言论吧。不过呢,今天看一个很不重要的模块也让我看到有些搞笑的东西,作者不
熟悉stl,同时使用一个queue和一个map来存储一个历史记录,使用map是为了查序列号的时候binarysearch,使用queue的原因居然是想要输出的时候按照序列号,也就是历史记录的顺序输出打印,这实在是多此一举,因为
map早就内部排序了,从头到脚就是按照序列号的循序的,所以,完全可以省略。这个简单的玩意能说明程序员的水平吗?
我很喜欢斯琴高丽的新歌。
领了一台电话,居然是有摄像头的,很有意思,看来cisco已经把视频电话集成到了普通Ip电话机了。昨天提case要求增加磁盘,结果今天才知道那个mount不会主动的,单单ls看不到的,一定要cd才会触发,害的我等了一天。
上个星期买的Hp的打印机就有了网络打印的功能,具体说就是里面集成了网卡能够自动接受邮件,因此打印就只需要把文件当作邮件发送到一个特定的信箱就可以了,这个解决方案不同于epson,因为你如果不这样作的话,对于
每一个移动设备都要去作驱动开发起来实在是罗嗦,而hp的做法就简单了只要做好网页打印这一个比较麻烦的开发就行了,因为其他的文件都是早就有的,比如pdf,word,图片等等都是作附件发送的,原本的驱动都有的。当然
相对于epson的解决方案hp的有一定的开销,就是一个强大的邮件服务器,不过这个正是惠普这样的大公司的优势所在,而且可以利用现在运计算技术降低这方面的开销,从长远来看是有前途的。因为这个模式是对于移动设备最
理想的解决。

八月十四日 San Jose,晴,是否要开始一段所谓的在CISCO的日子里吗?实际上我也不知道能干多久。

今天去更新护照花了40块钱的快递,还要交一百假币。做了一个简单练习,动因是因为我看到cisco的代码里面message queue的循环不用多线程,如果那个msg handler阻塞,整个消息循环就阻塞了,非常天真的线程池,
一个简单的ipc的message queue。

八月十五日 San Jose,晴,是否要开始一段所谓的在CISCO的日子里吗?实际上我也不知道能干多久。

今天把代码下载到本地结果发现我找不到source insight,这个是beyondcompare真是稀奇,翻箱倒柜找到尘封的旧书,都是原来我想要作想要学的,其实现在看来中级以上水平的程序员可以学的东西太多了,只是人没有那个精
力去都学习,所以,贪多嚼不烂在我身上是最直接的体现,当年丁春秋和乌鸦子同拜一个师傅,无涯子对于师傅的旁门左道都想学全了,而丁春秋就是老老实实学习怎样杀人结果他连师傅都差点杀了,这就是专心的威力。上个星期
作实验,今天到机房装系统,机房好冷阿,转个身又恨热。的确关于那个msgq,他们的确是做成了线程池的,如果连这个都做不到就太可怕了,我不应该怀疑。

八月十八日 San Jose,晴,是否要开始一段所谓的在CISCO的日子里吗?实际上我也不知道能干多久。

整理文件,想把文件名排序列出方便查找,因为Linux显示的文件夹的item个数包含了子目录的,我一直以为我的程序有问题,实际上当然是有一些小问题,比如链接的合法字符问题,混在了一起,很内疚。

八月二十日 San Jose,晴,是否要开始一段所谓的在CISCO的日子里吗?实际上我也不知道能干多久。

早晨起来看上传的Yes[Prime]Minister的视频结果失败的太多了,因为700M的大文件失败是正常的,所以,心血翻动想要动手实现一下aws-s3的多点上传,看看api档案没有什么难度,因为有了ec2的REST-API的经验这个
不是什么了不起的东西了,不过,翻了几下旧代码就又犯懒了,肯定是早饭吃饱了,外面春光明媚(的确是春光,因为圣何赛四季真的都是春天,昨晚上冷的我受不了,盖被子还要关窗子,春寒料峭啊,现在想起了在中国的时候,
厦门岛民恬不知耻的说厦门四季如春真是让人笑死了,夏天热的和火炉一样,冬天冷的和冰库一般,来到了加州才真正知道夜郎自大是什么意思,地大物博的真正含义是什么,美国人从来就不提这四个字,没有什么好炫耀的,有不是
你自己创造的,难道你对于整天夸耀自己家院子里冒石油的阿拉伯农民很欣赏吗?你只会嘲笑他,还不一定要告诉他。)所以,我决定干脆骑自行车去吧。
当然,我也很怕在cisco这样的养老院里面沾染上恶习,时时刻刻给自己敲警钟,这个地方不是可以久呆的,看看那些拖家带口的,动不动就WFH的人吧,没有什么意思的,不出十年cisco这些部门就都要被裁掉。现在和华为之类的
公司竞争可能仅仅因为市场准入,政府采购的优势吧。十年后呢?
FTChinese.com比那个BWChinese.com看上去还要好一些,里面的文章似乎更有深度一些,总之,我感觉互联网已经动摇了伟光正的统治根基,当年鲁迅所担心
的铁皮屋子里面沉睡不醒的事情不会发生了,生下的就是如何规划路线图以什么样的方式方法时机推翻或者替代或者改头换面伟光正的问题了,总之,我人生的三大目标之二的实现只是时间问题了。

八月二十二日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

早晨起来看看无聊的中国新闻,发一发牢骚,筹划一下反共大业,然后吃两个法式面包,在8:30分骑着自行车去上班,一路上思考一下今天要干什么,到了公司,浏览一下今天又有谁偷懒在家上班,打开source insight看看代码,
喝喝免费的茶水,磨蹭到中午准时下馆子吃中餐,决心把这一片地中餐馆都尝一遍。下午回来在方格子里边看新闻边睡觉,口水流了一大片才醒过来,再看看代码,就差不多五六点了公司早就没有什么人了,我凭着一颗赤胆忠心自觉
自愿地上够八个小时的班,旁边那个连linux的make都不懂的consultant晚来又早走了。一天都没有人管你,下班骑自行车回到家换鞋去跑步,然后在去大华超市边上的一家家中餐馆吃过去,晚上回来打一会游戏睡觉,这就是我
在cisco里当临时工的一天,实在是太让人不安了,这样的公司不倒闭才奇怪。

八月二十四日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

这个是昨天做得,就是在Linux的服务器上访问svn服务器,也就是使用svn co之类的时候不停地提示密码输入的问题。
花了一早晨在折腾svn,因为每次checkout都要问无数次的password,我按照google以及档案设定svn的存储password的选项,却不起作用。问sharath才证实了我的猜想,那不是svn的提示,而是ssh的提示,虽然svn设置
里有这个存储ssh的password的选项可是不起作用,所以,要制作一个证书来免password:http://www.petefreitag.com/item/532.cfm
其实,大家都是牛人,就看你是否能够发现了,而且,能够使用linux的开发者都是至少中级以上水准,这个和windows的开发者水平较低是一个鲜明的对比。
此外,花了不少时间去追踪那个进程在做什么,ps auxfw给出了一个树形告诉谁是子进程。
同样地,在windows上的tortoise里访问svn服务器也有同样的问题。一开始不成功,后来不知道怎么就可以了。
首先是解决了svntortoise输入密码的问题,按照昨天的方法又做了一遍,解果就可以了,不知道怎么回事。
另外就是试图解释为什么设定putty的ssh session能够影响到svn的ssh,很显然他们使用的是不同的plink的程序,所以,唯一的解释就是ssh的设定被共享了。另外遇到svn checkout总是出错的问题,Google发现是win7
的indexservice的问题,只能关闭。然后再次checkout又出错发现是有人上传了同样的文件,仅仅是扩展名大小写而已,这个在Linux/unix当然没有问题,可是windows就有问题了,只好删除之,被管理员追问。
今天想到想用虚拟机来装系统来编译开发,因为远程的buildserver没有图形界面总是不方便。
This is how to make pub/private key for svntortoise: http://support.tigertech.net/tortoise-svn
If you happen to encouter “svn checkout error” like “cannot move ….”, turn OFF “index service” from control panel’s “index option”.
http://schleichermann.wordpress.com/2009/12/09/svn-tortoisesvn-cant-move-the-file-or-directory-is-corrupted-and-unreadable-windows-7/

八月二十七日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

这些都是小的不能再小的细节,我的linux被win7的自动升级干掉了grub的分区启动,只能使用linux的一个自动修复grub的工具,但是当时我设定的primary disk却不是我希望的ubuntu64的那块,好像是ubuntu32
的那块硬盘,结果这个工具就按照顺序把所有硬盘的所有找的到的os都写在了那块硬盘的/boot/grub/grub.cfg,所以,后来我调整bios让我的那块真正需要的硬盘作为第一顺序却不能正确的作为menuentry的第一顺序,
我一开始去改这个硬盘上的/etc/default/grub.conf之类的但是都驴唇不对马嘴,因为header00的启动是坐在另一快硬盘的,而我有大大小小五块硬盘,着实费了些周折才找到,然后调整menu entry就省得我总是要
选择了。
另一个犯人的事情是gnome-keyring,这个我已经碰到过了,但是好像不能彻底解决,总是问我开机启动wireless的password,(其实应该是wireless需要连接使用wep的password,他要问keyring索取,通知我)
后来只好删除.gnome2/keyring/keyring.default,然后重建的时候使用空白password,可是好像还是不行?很烦人的。
昨天在公司安装vm的ubuntu32希望能够编译工程,折腾到十点多不成功,准备放弃,看来redhat和ubuntu的很多东西不一样吧?

八月二十八日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

去flee market理发花了6块钱,这个价格已经和中国的理发馆差不很多了,当然是在集装箱改造的越南人开得理发馆,但是服务质量一点都不差。到了这里你才知道美国的非法移民问题有多严重,因为我来到san jose
看到这里的中产阶级的富裕悠闲的生活以为这里压根就没有墨西哥人的存在,结果在flee market发现这里不知道从那里冒出来了那么多的老墨。墨西哥妇女年轻的时候,就是说十五岁以下的时候丰满苗条,可是一生孩子
身体立刻像是发面团子以样的畸形了,因为她们身上从各个令人意想不到的地方突出来大团大团的肥肉,而你看到的墨西哥妇女只要是超过十七八岁的没有不拖着一两个孩子的,这就是美国的生育机器,奥巴马政府不给非法
移民福利但是却答应给她们的子女福利与身份于是乎这些老墨就撒欢了的生孩子,因为将来孩子长大了还可以再帮他们申请移民身份,靠非法移民的这种繁殖方式来补充人口从长远来看只会让美国陷入更大的危机。当前美国
的失业率几乎就是主要由于非法移民造成的,美国的福利制度导致了有一半的美国人不纳税,奥巴马给妇女提供免费医疗只有导致美国更加的入不敷出,将来的失业问题更加严重。可以说美国就是毁在奥巴马手里的。
每天只写一个小函数,今天骑车到了海边看到了湿地保护区。

八月二十九日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

最近想明白了几件事:
1。就是以暴易暴不可取。共产党的独裁于暴力镇压是因为她们是暴力起家的,凡是支持共产党的就是肯定当年他们以暴力驱逐别的政党,以暴力手段镇压反抗者的,那么后来如果有人再被共产党镇压,或者
想要抗争共产党的专政,那只能是自食其果。所以,以后的政权不能依靠暴力上台,即便因此无法推翻暴力专政也不惜代价。
2。不可以刻意诱导民众。共产党上台的原因就是所谓发动民众“教育”民众,给人洗脑,促使其“觉悟”。这都是错误的,一个人的想法是他自己建立起来的,有目的的改变他是不对的,任何民主自由的想法只能是个人自主产生
的,强制灌输培养诱导教育是不对的,哪怕因此永远独裁专政也在所不惜。美国的独立战争是人民自觉自愿发动的,人民自己有所谓的“共识”,这集中体现在当时的<common sense>一书中,这本书正当风云际会是大多数人的
心声,而不是诱导煽动,是因为他是所谓的“常识”,人人心中有,也许个个笔下无才流行的,不是“红宝书”,不是“圣经”。
3。所以,因事但不应该强行“利导”,因为这个“利导”本身就有“私利”驱动,就算是“力导”换成了“力”也是强人所难,终非可以善终。瓜熟自然蒂落,水到自然渠成,一切不应过于强示,共产党的腐朽是他的本质,人民选择他
是他们自己种下祸因,终究有一天他会因为自身的彻底腐烂而坠落,或是风吹,或者雨打。一切有开始,就有完结。

九月一日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

英国金融时报的中文版关于中国高利贷危机的评述几乎就预言了中国共产党统治危机的直接的导火索,因为这么多年来的所谓的“维稳”,“和谐”,以及背后所依赖的巨额“维稳经费”,以及依赖放任整个官僚阶层的中饱私囊
换取的“对党忠诚”是和中国目前大多数阶层利益或多或少的冲突,各阶层取决于各自在这个“封建中央集权统治集团”的分赃行动的角色获取相应的回报,但是有人消费必然有人买单,这是千古不变的经济规律,究竟谁是消费
者,谁是供应者从各阶层的收入分配上看一目了然。然则老子说柔弱如水也不会朽,而强悍如铁反而无法历经岁月而不腐朽,所以,看似强大的苏联帝国可以在一夜之间垮掉,并不是美国的核弹头消灭了他,而是他自己内部
的腐朽摧垮了他,再强大的国家机器也是只能抵御外在的攻击,对于内部的腐烂完全没有防御的方法。但是这一切都需要一个导火索来引爆内部早已不断增加的压力,这要求这个事件必须具备以下的特点:
1。牵涉经济基础的爆炸性事件:一个社会生存的基础是经济,任何腐朽荒淫的政权但凡能够让多数人生活安逸舒适就有存在的理由,所以,任何其他的领域的危机都不足以引发社会的动荡。
2。必须牵涉到广泛的利益:金字塔的底座总是最大的,如果不能影响到最广泛的普通人的生活,充其量只能是一个供多数人津津乐道的“新闻”。
3。必须有突发性:如果一个事件是慢慢浮现,作为统治者都可以采取某种应对措施,将其降低到最小的损害,唯一出错的场景是突然到来的事件,不决策与错误决策都会有致命的后果,在仓促的过程中统治者无法充分权衡
采取任何稳妥渐进的措施,而同时消极的不应对与赌博似的应对都引发更大的危机形成多米诺骨牌效应。
4。必须有巨大的规模:目前的中国独裁政府积累了大量的人力物力与财力,以至于有一种错觉可以为所欲为,甚至于连普通民众也都趋向于相信所谓“太平盛世”的谎言,那么唯一能够打破这个集团的重型武器是类似于“金融
衍生物”的“财富杠杆”之类的东西,因为他造成的后果是很多倍的放大,这种损害的隐蔽性以至于被监管者所忽视,因此共产集团对于此非常的谨慎不敢引入现行的金融体系,但是民间资本从事的高利贷恰恰是这种游戏的中
国版本,表面上的一块钱最后形成的金融规模可能是“虚拟的”十块钱的经济规模,那么当其破裂的时候的损害也就是当初规模的十倍。但是高利贷在中国自古就有,并没有对于整个社会造成很大冲击,为何现在就不同?因为
如果仅仅是民间资本的局部参与其规模与影响总是局部的,如果大量的普通人也参与,如果大量的工业资本也参与,如果大量的所谓“国有资本”也参与那就不是局部了。而促使这个局面发生的原因是当局的所谓“调控”,紧缩
货币,导致原来微利的工业资本更加无法生存,而同时的通货膨胀导致当初就缺少正常增值手段的资本更加疯狂的寻找出口。
简而言之,共产当局经过了三十年的统治忘掉了教训,以为考行政强制的“计划经济”手段能够治理国家,天底下但凡有头脑的人都应该知道,如果这个方法能行的话今天早就是社会主义者的天下了,可是结果很显然的这是绝对
不可能的。在那些“封建统治集团”首领的头脑里当初的经济建设就是“印钞票”==》“投资基础设施”==》“再印钞票”==》“再投资”。如果这一套能成功,金日成将军也许就统一了朝鲜,毛泽东领袖就领导了整个世界?
笑话,荒唐,经济规律不是铁的规律吗?
高利贷有可呢在一夜之间爆发大规模经济危机,反而是房地产不会造成危机。这真是一个戏剧性的历史场景,共产党在看到所谓的“预言”说房地产会引发泡沫的时候拼命紧缩银根,却不料房地产并不可能造成突然型的崩溃,
原因是地方政府有利益牵连会尽全力阻止泡沫破裂。但是高利贷如同被紧缩银根逼出来“脓包”,却是一个没有地方政府全力保护的泡沫,随时破裂的突然性更加很多倍的大于房地产,突然之间的破裂造成的经济震荡牵连到的
社会各阶层的利益链条更加广泛,现在需要知道的是这个高利贷的泡沫规模究竟有多大,突然破裂影响的范围有多大,会不会殃及到普通人?

九月四日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

都说是经济危机了,但是有的人在借高利贷利息是每年最高50%,有这么获利丰厚的领域吗?也许有,否则不可能有人这么疯狂,肯定不可能多,否则大家都发大财了,还借钱干什么?我看过一篇报道说是这些圈内人不是不
明白这种“庞氏模式”(ponzi scheme),不过这些“玩家”大都是“冲浪高手”都得什么时候入场,什么时候出局,比如这类游戏必须要上规模,因为支出大于收入你就完了,所以后来加入的人要多,而这必须要开始的时候建立
所谓的“广告”效应,在游戏初期大家肯定都是“拼死命”维护所谓的“信誉”,所以,这个时候放钱进场绝对是比较安全的,当然一定要看这个主是不是玩家,不要碰到小混混捞一票就跑的主。等到广告起来了,你就该撤离了寻找
新的场子。周而复始,问题是这个大盘子终有一天要清盘,所以,那一天大家都完了。
看起来容易的东西,慢慢地折腾,还是有些麻烦,主要是curl的麻烦,这一点我一开始就知道,因为数字签名早就解决了,就是一个http-client的工作,使用curl就被他的回调函数机制控制了,我要Post他就以为我要
post文件,body就不为空,可是这个是restful api就只需要一个字串而已,可能是我没有找到方法,可是实在是太麻烦了,尝试了很久只好决定另起炉灶,自己作,当然是借用,我才不会从socket做起,那个太无聊了。
我已经不年轻了,懒得从螺丝钉做起,那个都是没有玩过的小朋友喜欢的过家家,我现在喜欢的是造车子,而不是简单的轮子,当然有的人整天在嘴皮子上挂着“不要重新发明轮子”作借口不屑于写任何代码,出了故障就束手
无策,就好像这个星期我的“双轮宝車”爆胎两次,花了我三十块钱,自己不能换一个内胎吗?walmart有的是啊。

九月五日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

翻来覆去,其实就是一个简单的不能在简单的httpclient,我却卡在这里,懒得从头写想找现成的,就是说完全不要什么ftp之类的,也不想要什么cache/cookie之类的功能的,就是实现几个简答的get/put/post
因为这个是restful的需要,当然我要求在response的处理上要可靠,支持多线程,如果可能的话,最起码要支持非阻塞。这里是curl的另类选择,想wget之类的瞄准的就是文件操作,我却不需要,最主要的都是非文件
因为数据都在内存里的,而且wget不全(是吗?)neon编译好像有些罗嗦,w3c我完全支持作者的说法,比如curl还要难以使用,因为太久远了,十年前的项目作者还使用函数指针数组来实现虚拟函数,这个我看得就觉得
麻烦,至少本来一句的代码要写几十行,执行效率未必有差别,但是看起来罗嗦了。其他的,实验了一下最后又回来想看看curl,显然好像还是改造curl来的现实工作量小一些。这就是折腾。两三天什么也没干成,就在那里
发呆打游戏,当然骑车去fremont了一趟,把后胎爆了两次,昨天看到walmart有self-heal的smart tube,才八块钱,结果又准备投资买打气筒,买了测速器装上去不起作用。吃了两次羊肉面汤,还是刀削面好过所谓的
手幹面。
从下午折腾到半夜,终于解决了这么一个小小的问题,就是curl非常的自以为是,他要帮你组成你的post的request,就是先看你的url然后自作主张地把hostname后面的部分加到你的post语句里面,我之前苦思冥想要
阻止他这么作,始终不得要领,终于跟踪看代码才找到一个途径就是使用CURLOPT_CUSTOMREQUEST,但是,这里还有一个问题,就是curl一定要有一个默认的路径,就是“/”这个,即便我使用了我自定义的post语句,他还
要加进来,这逼得我走投无路只好把curl的这段代码改掉了,希望不会有什么副作用,当然我认为在我使用custom option之后,你curl就应该彻底放手,所以,影响应该是很小的。这个是我的curl的工程,lib自己一个
工程,然后curl编程另一个动态库供我的s3类调遣

九月六日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

我对于苹果的态度依然没有变,不屑一顾,虽然我买过ipad,但是我仅仅在我每天早上排泄的时候使用,然后就送给我妹妹去玩了,然后发现原来它是一款游戏机。我买过ipod6从此更加憎恨苹果的产品,因为我以前一致认为
使用苹果电脑的人只有两种,一种是开发者,一种是连电脑是何物都不知道的女人,苹果的价格一向高的离谱,(ipad是一个例外,所以我才买),这个公司的领导人Jobs在我看来完全是一个投机分子,据说连程序也不大会
写的人,只会捣鼓硬件。

九月七日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

翻来覆去看了很多的所谓的经济金融社会管理的文章以及揭示的问题与现象,还有很多的跟帖议论评论辩论,感觉都没有切中要害,中国的问题只有一句话就能概括总结的:没有共产党,才有新中国!
其他都是废话。句号。

九月十日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

花费了大约一个多星期时间才初步完成了这个multipart upload。不过还没有改造成多线程,关于文件指针怎样作我也没有决定,当然每个线程都是用各自的最底层的file descriptor是最明显的方法,这样自连同步
都省却了,似乎没有什么可讨论的。其他比较不清楚的就是错误处理,不知道还有那些错误有可能发生,重新上传的话,使用list之前的part信息还是写本地log省却实现这个api,对于restful的api我已经有些厌倦了,
因为很罗嗦,为了她我不得已去修改curl实在是小题大作,所以,很明显的如果有人要用这个开发,肯定是不行的,除非写email来问我老人家,也就是一行代码的问题。
前两天在cisco的垃圾堆里捡到一块250G的7200转的硬盘,如获至宝,把光驱都卸下了省却一个sata给他用,结果祸为福生一不小心把数据区搞坏了一个,折腾了一两天没结果,于是乎中长期目标就增加了学习磁盘分区技术看
能不能自己恢复数据,将来老了可以考这个吃饭了。这个垃圾估计现在最多值二三十块钱,我却还要去为他购买一个pci转sata的二十几块钱的卡,这个不知道算什么事。干了一个月还没有领到工资,在自行车上的投资超过了
对电脑的投资,这是一个新的趋势。

九月十四日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

palimpsest这个名字真是难记的很,就是gnome disk utility了。multipartupload完成了,添加了一个删除所有未完成的upload的功能,当然这个是针对某一个bucket的,准备做一个directory的上传,另一个
计划就是把大文件分割成小文件并不是分段上传而是分割以便快速sync,查了一下,的确是这个问题,etag正常应该是md5的,难怪s3cmd总是这么抱怨。

九月十六日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

为了挽救我丢失的分区不得不学习磁盘分区技术,这个学习过程真的是有些莫名其妙,难道我需要学习驱动如果有一天我买的硬件有问题?事实上好像我一直有这种打算,我的Usb键盘鼠标似乎有问题,启动的时候也许linux
没有完全的“发现”,因为很多时候我不敲键盘不动鼠标ubuntu就是黑屏的。这里是入门的概念,这里也许是我的问题的答案,也就是怎样把一个primary partition转为extended的部分,不过我迟迟不敢动手,这个里面
有几个问题还是没有搞明白,最明显的就是分区之间的alignment的问题,一直以来都注意到很多分区之间都有一个空隙,大约是8m,但是为什么呢?现在猜想是和传统的chs地址有关的,所以才要读懂chs的入门常识。另一
个问题大概分区开始的地址好像都是63,难道这个地区是存放启动文件的吗?现在的计划是先使用我的一个空白硬盘作实验,使用fdisk获得信息,比如sector大小,head的个数,等等,然后手工制作分区文件作为sfdisk
的参数来制作分区表,当然首先要先备份sfdisk的分区表,然后再看看能不能手动恢复分区表就能够恢复文件数据,如果成功再开始在现在的硬盘操作。

九月十八日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

ubuntu最近的更新把administration的菜单改的有些乱,原来都是在/usr/share/applications下面的.desktop文件,我想怎么改就怎么该,可是现在有多了一个/usr/share/app-install/desktop下面
可是,好像也不像,因为~/.local/share/applications下面也有,而且~/.config/menu下面有些设置,而且/etc/xdg/menus/下面也有一些设置,damn我不得不对于ubuntu的开发者抱怨一句,也许你们现在
已经全力以赴在11.x的工作上了,可是也不要对10.x的工作这么漫不经心呀,改来该去我同意,因为我可以模模糊糊猜想这些设置都是有很高明的地方,是一劳永逸的解决方法,可是我被迫升级之后就有了莫名奇妙的问题,
首先,也许是我自作主张,在有些exec前面加了gksu,比如palimpsest没有,导致你没办法修改磁盘分区表,其次,也许并不是这些菜单有问题,而是有些app本身的问题,比如我一直在寻找的那个新增硬件,additional
hardware就是jockey-gtk或者jockey-kde也许本身有问题,如果运行jockey-gtk图形界面自动,但是如果带参数--check,似乎按照说明是只是通知用户并不出现图形界面,而如果确实这个原因的话那么真的不
能怪罪菜单的了。另一点我不明白就是运行exec jockey-gtk连同console都会结束,这个并非jockey-gtk,好像所有的程序都是这样,我不记得exec有这样的行为,或许我没有理解。
昨天向mountain view进发,从san jose->milpitas->mountain view->sunnyvyle->santa clara全程大约40英里,最后我都差点晕倒了,主要是饿的血糖太低了。
折腾硬件就是这么有趣。
首先,我买的pci转sata的卡(使用的是silicon image3114的芯片)不能被识别,所有的搜索说的都是raid的驱动的问题,很少有提到卡本身不能识别,硬盘不能使用的问题,似乎这是一个基本
问题根本就是早就解决或者不应该出现的。当然花了无数分钟我还是看到有人遇到一些类似的问题,或者是掉换pci插槽,或者是主板本身不能识别芯片的bios等等。所以,我一开始有尝试两个pci插槽,好像有一次ubuntu
能找到卡,但是硬盘仍旧没有(当然也许我本身眼花了看成了另一个设备,因为我还有一个pci-express的无线网卡,下面就说道他了)。在win7下面也是压根就看不到设备,当然小插曲是在ubuntu/win7第一次启动都
于到了问题,都是好像四掉了,我都只好硬启动也许这就是源头?所有的silicon image或者制造商rosewill的帮助手册都是说的raid的bios设置,看来这个才是这个产品的核心复杂的地方。
其次,在万般无奈之下我都打算再次退货,因为之前我已经把一个使用pci-express的退了,理由很好笑:我现在只有pci-expressx16的插槽而这个设备需要pci-expressx1的插槽,而我的pci-expressx1的插槽
已经给另一个无线网卡使用了。有没有人发笑?没有吗?我觉得我实在是太搞笑了,说出了这么没有常识的话,chris虽然是一个连make都不懂的consultant但是对于硬件常识还是听不错的,我从他那里隐约明白pciEx16
或者x8,x4,x1都是一些个向下兼容的,就是说长得兼容短的,所以,我实在是太无知了白白损失了三块多钱的邮递费之前退掉了那个pciex1的卡,newegg评论说他的兼容ubuntu的是最好的。
所以,我尝试把我的pciex1的华硕无线网卡插在pciex16上验证一下,结果奇迹出现了不但我的无线网卡达到了前所未有的90%的连接率,而且sata卡的bios也出现了,我的从cisco垃圾堆里检来的250G的硬盘也奇迹
般的出现了。万岁!我又多了三个sata接口,不过我的sata电源接口可能已经到头了,大概只能再接一个了吧。难道以后要尝试e-sata?
总结就是这类硬件很可能有某种问题当主板的bios第一次检测有问题之后就不再重新检查,或者我的无线网卡的pci设备有冲突,总之硬件的问题和女人一样难以琢磨。
我在google问答上看到一个问题是关于共产党什么时候灭亡的,大前提是大多数人同意灭亡是一定的,只是什么时候,我的答案还是比照前苏联70岁的寿命来推算,所以应该是大约在2019年,因此只需要再等八年就可以应验
我的预言是否正确。(这里寿命和共产党什么时候建党关系不大,和他什么时候开始统治国家有关,因为一个政党在夺取政权之前都还是要有一定的号召力的,否则没有办法和执政党斗争,但是一旦夺取政权他的腐败就开始
了,那么这个周期大概多长呢?很凑巧的我认为和现在一个人的平均寿命接近,就大约70年。)
今天有点热,只好骑车去公园,无意中发现了一个target还有martial,不过为相应美国政府控制债务规模的精神今年没有衣服的预算,除了健身电脑之外所有预算到年底之前一律冻结,所以只能window shopping。
target在美国我觉得不算是很低端的商店,可是一个惊奇的发现揭示出了当今中国世界工厂地位的微妙变迁。以往在商店里服装的制造地几乎就是made in china的同义词,可是今天我大概随机翻了十件衣服裤子的标签,
结果只有一件是Madeinchina,其他都是made in Indonisia/Vietnam/Bangladash/Combodia/India,也许这不是典型的例子,可是我想这也绝非偶然,据说中国对美国的贸易顺差依旧每个月都有,那么我想
也许是存在于服装等等以外的方面中国还是很有竞争力的,比如电子产品领域中国依旧是无可比拟的。

九月十九日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

终于明白为什么温宝宝被广大人民群众亲切的称为“影帝”,我一直以为他就是一个古代最没有用的官员,没想到他还有表演的天赋,之所以称他没用,因为在古代所有的官员中没什么本事的人就叫他去“治水”,这个治水出身
的温宝宝的确没有什么才干所以才被选中当了一个无用的总理。从cisco的垃圾堆里捡了一条dvi的线,还是新新的,此外还有几十条新的hdmi的线,本来想拿回家到amazon去卖,没想到一查网上才卖不到两毛美金,真是
让人泄气。

九月二十三日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

一天都在打瞌睡。早上起的太早了,结果也没有写几行代码,那个上传目录的代码写的无比慢,因为我要使用boost省得以后改。一天都没有什么事情,睡觉都睡了好几次,实在无聊就出去转,外面太热,家里还没有公司空
调舒服,所以也不想回家,看media部分代码还是不清楚,因为好像不在这里,这个只是一个应用的接口。偶然看到改造...
肚子饿了,去吃饭。。。
我觉得肯定是亚马逊的接口有错误,要么就是object的size有40个字节长度的限制。

九月二十四日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

我隐隐约约记得在那个论坛上说过亚马逊的s3的object的长度是有40个字节的限制,要么就是说有某种bug,或者是看代码的注释上说的?总之,这个是我所无法解决的。
看日剧才能了解淑(熟)女的心理,其中的“杏子”老师是一个41岁的常年住在酒店里的单身母亲,儿子为他举办的生日晚会把她所有的前男友及其太太都请来了,这就是她所谓的最好的朋友,因为“男女之间只有什么都做了,
才能成为朋友。”我好像经常在网上看到现在的所谓的贪官的朋友都是要一起什么都做了才能成为“铁”,比如一起收黑钱,一起嫖娼,一起包养情妇,这样才能成为真正的朋友。
在cisco的垃圾堆里以为找到了活宝,总共四台貌似linux服务器的重达几十公斤的大家伙,我专门去买了一把小螺丝刀来拆所谓的“服务器”,结果让我大失所望,这个根本就不是pc,而是特制的图像处理器,使用一大堆
的dsp,连硬盘都没有,我原来还以为是linux的服务器呢,现在看来完全没有用,怪不得原来标价上千美元的东西被随便扔掉了,确实没有用,而且外壳是纯钢打造重量有几十公斤,真不知道有什么用。晚上又google
了一下cisco cts1000的价格,整体的售价在一两万美金,不过我想这个价格是包含了plasma的显示器的,至少我看到adsp-bf561的价格不算便宜,ebay上5个一组也要125美金,这个东西有大约20几个的blackfin
dsp绝对的算便宜的东西,你想可以做到1920x080的解析度30fps的压缩一桢不超过20ms,而且压缩率达到99%以上,比如原本1.5Gbps减少到4Mbps,这个东西难道会便宜吗?里面的linux是固化在compact flash的,
系统包括四个网线口,意味着可以同时服务四组信号?还是一进一出?要去看手册,若干个hdmi和一个dvi,若干个usb接口,只能通过网线访问,其中有两三个已经无法修改密码了,也许就是被遗弃的原因之一。应该附
带高清摄像头的和定向麦克风,我从垃圾堆里捡了一个高清摄像头,但不知怎样连接,麦克风还没有找到,这个项目应该已经撤销了,现在使用的TC5是类似于一体机一样的集成,轻巧美观,CTS1.8也许功能也改进很多了
吧?这个东西真是很不容易做得项目,难怪cisco以前要那么多的工程师,现在看来公司的策略是与其自己研发和竞争对手比拼还不如把对方直接收购过来,然后把这边的研发都才掉了。
日本真的是一个很奇妙的国家,公司的员工对于企业主有这么大的忠心,有一个让人感觉就是封建时代对于君主的忠诚,这个是几乎所有的发达国家中绝无仅有的。但是现在回过头来看日本社会居然也和美国以样欠了这么
多的债务,这个看来是发达社会的必然结果,人呢,都是好逸恶劳的,都整天想着doing nothing for everything。下午准备去跳蚤市场去理发,6快美金,几乎和国内差不多。
看到新闻说一个上海收停车费的老太太被奥迪车压死了,撇开谁是谁非,猜想这也都是迫不得已,当然你可以说各地都设停车场到处收费有些也不合理,不过从另一个角度来看,老太太也许就是靠这个维持生活的,一个街道
开了一个停车场创收然后承包给老太太收费,她要上交一定的基数然后才是她的收入,那么这一个十块钱的停车费她很可能是拼了命的,也许每天的收入就是那么几个十块钱,这样子你能理解她要在车子前面躺倒拦车吗?
现在这个年代没有人在谎言的包裹下所谓“为了国家和集体财产”献出生命,我小的时候整天都被这样的谎言所欺骗,现在想起来新闻里说的那个“赖宁”我还记得这个名字,好像也是为了什么集体财产“献出生命”之类的,如今
呢?当初一条生命奖励的一个纪念碑都嫌它战地方,因为现在官员的财富都是来自于土地,和中国几千年的封建君主官吏地主豪绅没有任何的区别,何况当初给他竖那个碑也并非为了他这个生命,只不过要用来“教育”欺骗
更多的向我这样无知的少年而已,这就是共产党的邪恶,一个彻彻底底的邪教,之所以拼命压制镇压某某邪教,之因为他自己就是邪教,邪教之间是势不两立不共戴天的,因为彼此抢夺的就是人这个财富,好像牧羊者把自己
的羊群的数量当作财富的数量一个样,碰巧另外一个宗教也常常把她的灵魂人物称为牧羊者,而被牧者都是迷途的羔羊,而共产邪教的说法是“觉悟不够”。
暂时告一段落,这个是s3的上传工具,目前支持大文件分段上传(multipart upload),使用多线程各自使用curl,不过这个curl我改了一两行代码,所以为了这个也要编译我这个curl;支持整个目录结构的上传,可以
选择使用原来目录名/文件名或者使用文件md5作文件名。不过分段上传有一个bug我认为也许是亚马逊方面的,就是object的长度不得超过40个字节,这个在普通文件使用平常的put而非multipart upload不会出现,因
为当我使用multipart upload的时候不知道为什么amazon自己会去escape参数,就是把PUT /myobject?partNumber3&uploadId=xxxx里面的&去进行&amp;这个实在是令人费解,这个只是出现在object长度
超过40的时候,莫名其妙。
日本之所以失业率低是因为大多数日本妇女心甘情愿作家庭主妇,否则日本的失业率不会比别的国家低多少。

九月二十七日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

在洛杉矶的时候,室友对我说国内的中央电视台在这里有分支机构,我说那也许也是正常的吧,洛杉矶毕竟是来美国的第一站国内的机构在这里设分支也是很多。某天出门买菜我才知道他所谓的CCTV是什么,这个遍布了美国
的所谓的中国的中央电视台在美国的分支机构实际上仅仅是美国的众多的销售闭路电视系统(close circuit TV)的商店,和所谓的中央电视台完全无关。现在偶然看到都会想到这个小笑话,不过偶然之中也有必然,世界上
的巧合何止有千千万万,之所以有必然是因为巧合如果无人关注是不会被发现的,所以,这就是巧合有必然的理由。CCTV作为big brother似的闭路监控系统是不是也和共产党绑架普通人思维的思想控制机器有某种必然的
联系呢?只不过发现这个巧合的人首先理解中国中央电视台所肩负的使命,其后才偶然在美国找到了命名缩写的巧合。
我发现了这个好东西,可是这些都是国内的我不敢买:embest, armdesigner, quickembeded, 所以,我觉得宁可买美国的网站也觉不买中国的,首先就是没有保障,非要tt付款发货只有批发商才行。

十月一日 San Jose,这里的天气真是无聊,每天都是阳光灿烂,风和日丽,凉爽宜人,人们天天都是在享受这个世界上最好的天气

我对于curl的厌恶程度与日俱增,终于计划自己写一个合用的超级简单的异步io的,“双工"的http-client,以便作为rest的客户端,这个东西说起来容易实际上很罗嗦,属于吃力不讨好的活,我觉得大多数程序员如果
过了好奇的阶段没有人对于socket这层的编程有很多兴趣,我觉得就是这样自的,基本上无成就感,也没有什么真正的挑战的地方,前人都玩剩下的,了不起就是select的几个fdset上作一座文章,加上一个io处理的线程
池,尽量处理各种错误,结束的时候消灭资源要彻底等等。。。我写的都快睡着了,这些天居然加班到很晚,主要是玩那些个cts/umi之类的垃圾,cisco好像折腾了很多的钱在umi上。困死了。迟迟不想动手,因为如果有
现成的我肯定不想非这个力了,找来找去,你知道竟然没有这么一个东西,因为本身没有几行代码,连library都算不上了,有那个人敢号称自己写过http的客户端,肯定要被人笑太嫩了。突然之间找到了boost的线索,
asio就是最好的选择,看了一眼tutorial我就知道我今天可以放假了。

十月四日 San Jose,这里居然下雨了,昨晚淫雨绵绵躲在办公室里等雨停最后只好冒雨骑车回家

打电话才从老爹口中知道美国的新闻,“占领华尔街”,好像美国要发生“民主”运动了,要推翻“暴君独裁”统治了,去youtube上搜索一下就知道谁对这个事件最热心,最积极报道,"RT“,应该是”俄通社“或者是”俄罗斯电讯
传媒“之类的所写,这是一个合法的在美国本土传播有关俄罗斯社会价值观的有俄罗斯政治背景的电视台,在美国宣传美国的”腐朽没落残暴独裁“等等,为什么不报道一下他们的所谓的前共产党盖世太保头目”连任“两界总统然后
修改宪法再当总理,然后继续再”竞选“总统的”丑闻“呢?同样积极报道的肯定就是CCTV了,这个和“闭路电视监视系统”有着同样缩写的共产党喉舌遇到这种事件更是不遗余力的拼命鼓噪,否则我怎么可能需要从中国获得美国的
新闻呢?“美国之春”?这太可笑了,看看在那里聚集的都是什么人就知道了,这些美国所谓的“青年”都是大学里不学无术的所谓的“liberty arts“之类的,连商科法律都读不下去的,他们不再华尔街camping可能也会在那个
公园里酗酒吸毒开性爱party,他们懂得什么叫做社会主义吗?让他们和那三个去伊朗边境徒步的美国大学生一起被关在伊朗监狱里就懂了。什么?伊朗是伊斯兰教不是社会主义?政教合一高度集权剥夺人权铁腕专政就是社会
主义,别以为这是什么十九二十世纪的新鲜玩意,这个在两三千年以前的奴隶制就有了,这就是社会主义的本质!

十月七日 San Jose,这里居然下雨了,昨天的雨导致我不得不去买一个defender给我的自行车

昨天是经理辞职的最后一次午餐聚会,花了我十三块钱,今天又有一个最老资格的组员辞职茶会要参加可能会便宜点,一个人整天无所事事就会胡思乱想寝食不安夜不成寐,我最大的毛病就是居然有人类的好吃懒做的通病,居然
一个小小的wrapper的东西拖拖拉拉不想完成,在工作上这是可以理解的,改bug一下都改完了下个周会上没有什么可说的了,每周汇报内容难道能够说我每天早上上网看youtube,中午吃完午饭就趴在格子间睡觉实话实说吗?
所以在bugzilla上原本留下一个无关痛痒的严重程度最低等级的是一个好办法,可是那天我还不知道经理要辞职为了表现把这个也提交了,导致我现在没有事情做了,现在换了经理了又要从头开始表现了。
看样子美国这一次要下决心逼迫中国调整汇率机制了,说到底这是经济规律,根本不是个别政府一意孤行的可能的,因为抗拒经济规律的结果就是反作用力导致中国目前的通货膨胀。所以,中国的所谓的低附加值的出口必然
衰落。

十月九日 San Jose,不下雨了,阴天

使用一个类似于apt/yum之类的pkg管理器opkg其中安装一些dev包的时候会报说libgcc_s.so要由libgcc安装,但是libgcc_static也要安装之类的,记不请了,反正就是gcc的动态和静态两个包都要装这个.so,我就
直接使用--force-overwrite覆盖了。

十月十日 San Jose,不下雨了,阴天

每次启动overo地一件事就是重新设定时间date --set="xxx",否则的话拷贝的文件都成了未来时间了。你可以把computer on module(COM)以三个不同的方式来对待,于是也有三种不同的连接方式:1。计算机,那么
就把所有的外设都给他,hdmi接显示器,mini usbA接一个usb的hub可以使用键盘鼠标,rj45接网线,我买的expansion board不带蓝牙或者wifi只有网卡。于是插电就是pc了。2。当作服务器,那么通常的ssh以及
vnc都可以用了,我接了一个router,这样我的pc就使用ssh root@overo.local连接了,不需password。vnc还没有实验过,应该是不成问题,大概要设定启动vnc server吧。3。当作设备,使用usb作桥梁的串口
据说使用这个所谓的hermit。我没有实验因为要配置还不清楚,同时应该是太慢了,不赞成,除非我以后不装embedded linux了再说。
当然最烦人的是我没有足够长得网线连接楼下的无线路由器,上网是靠无线,于是我的overo只能是本地连接,要上网下载只能切换主机的无线下载然后在scp到overo。

十月十二日 San Jose,不下雨了,阴天

我买的defender太短了,害的我还要去自行车商店去买那个专业的“挡泥板”。有人认为很多东西本质上一样就没有必要去细分了,这很粗糙也很武断。程度的差别其实很重要,否则一言以蔽之,这个世界压根不需要研究了。
俄罗斯据说是managed democracy,就是批着民主外衣的专制,至少大灰狼还需要披着羊皮伪装成绵羊来和羊群搞好关系再吃小羊,可是这种无耻和某些压根就不屑于披羊皮的狼来比就差远了,我们是否应该说是狼太无耻,
还是那里的羊太无奈?或者无能?
用27针的带子连接却在/dev里看不到camera,我就开始怀疑设备坏了,后来看解说才明白一个基本概念,设备是不能自然而然地mount到这些设备接口的,如果已经到了/dev/video0还需要驱动吗?驱动就是干这个识别
设备提供接口的活的呀,这么简单的道理我还不懂得。至于说针对/dev/videox之类提供的种种所谓驱动都可以看作是driver filter的概念,或者充其量是一些user mode下的驱动。不过,我似乎看到说不需要重编译
内核的user mode的驱动来识别camera,好象是所谓的ISP(Image Signal Processor)。
心血来潮,决定从此开始实践Linux kernel,我想如果一个人要学上乘武学,这个是必由之路,但是却决不可勉强,只能水到渠成,如今我看样子是逼上梁山不是我想这么作,而是被逼无奈不得已为之。

十月十三日 San Jose,不下雨了,又是艳阳天

学习的都是鸡毛蒜皮,在很多人眼里压根不值钱,他们认为还不如在地上捡到一块钱来的有意义,这就是价值去向的不同。v4l完全是一个标准,这个其实都是基于Linux基本的system call的,大概是直接编进了内核,
仿佛是文件驱动一样,那么所谓的libv4l2之类的完全是一个第三方的utility的小Lib,这么简单的关系我却没搞明白,以为要访问webcam必须通过libv4l,真是岂有此理。当我把我的webcam接在usbhub上和鼠标
键盘共享的时候,在overa上就乱了,当时我一直以为是我试图安装视频传感器直接拷贝lib而不是重新编译内核的问题,后来才把webcam接到单独的usb就好了,想到了以前DC也是这么抱怨国usb的kvm,看来是如出一辙
我怀疑这就是很多的usbdriver写的有问题的一个原因吧,当时DC死活都要写一个usb的filter driver来保证不丢数据,其实就是在自己的driver里面加上一个小缓存,留下上次传输的偏移。后来使用vnc发现nxclient
很饶舌非要说没有密码不安全不给你连,改用xtightvnc二话没说就连上了。
昨天提交了一个建议就是使用read-write-lock的事情,这个简直就是必然的,这个project里面是层次不起的,在cisco的其他组里面有很多业界标准的框架,但是随着人员的流逝,很多搬过来的架子却没有很好的运用。
于是乎单纯使用普通的lock就出现了一些问题。1。每个函数都用一个局部变量来lock这个本来是现在流行的做法,在constructor来lock,在destructor来unlock,很好,可是当你的每个函数都这样自的时候,如果
需要执行一个大的transaction的步骤的时候调用这么一系列的小的utility函数的时候,不会自锁吗?我至今还是认为我是对的,死锁当然是来源与此,只是奇怪难道从来就没有成功过?那怎么测试呢?我肯定错了?
使用read-write-lock如果彼此都是reader当然可以避免这种死锁,也不用去该代码,只是换一下lock的type,当然针对reader/writer混合还是要改代码。总之,我是很多时候还是有看走眼的,上一次差一点闹笑话,
使用gsoap的人怎么可能不调用destroy之类的在request结束呢?那么不是太小看人了吗?就算是白痴也不至于犯这个错误呀,何况我觉得这可能是gsoap的标准的例子的样子。gsoap只是在文档里建议可以针对需求决定
什么时候调用清除函数取决于应用的类型,比如想cgi模式,server模式等等。。。
总之,要谦虚谨慎,戒骄戒躁。
内核编译缓一缓,我还每到那个地步,尤其是碰上了交叉编译,太麻烦了,因为对付的还是驱动,这个太危险了,也没有这个时间与能力。当前对于我来说最轻松的是熟悉v4l的接口,先把视频处理搞出一个模型来再说,长远来
看肯定是机器学习,所以,还是要好好听课。
我错了,我真的错了。我单知道windows下的mutex的形式,却不知道pthread下的那些lock的特性,如果使用的是recursive的lock,是不会自锁的,就是说同一个线程lock两次是不会死锁的。哎,我还很嫩啊。

十月十八日 San Jose,不下雨了,又是艳阳天

微软的这个关于yuv的解说很好,只是缺乏实现的细节,就是说程序员需要的细节,比如怎样快速转换的算法,不是数学的,而是程序的角度,也许没有吧?

十月十九日 San Jose,不下雨了,又是艳阳天

MultiMedia Cloud, what you have tried last year.
http://blog.sina.com.cn/s/blog_4caedc7a0102dvzn.html

的确这个确实是我当初尝试的,应该说今年上半年也在继续的。
常常想总结一下为什么半路夭折,又或是为了什么原因遇到困难,可惜完全没有人可以讨论求证。你能想象我要怎样去和我父亲一辈去解释云计算遇到的问题吗?其实,根本没有必要和理由,也许很多时候是解释给自己的。
也许以下可以作为一个个人总结,试图分析问题,因为我发现我的思想只有在写成文字的时候才是有可能推敲的,也只有这样留在数字媒体中才有将来讨论回顾的可能。

1. 首先,这个文章是一个抽象概念的科普读物,和我在厦门“老科协”普及讲座听来没有多大区别,毕竟是一个面向大众的题目,讲的更多的是“为什么”(why),还没有很清楚“是什么”(what),更不要提"怎么做“(how),
以及"什么时候做"(when)和在"那里做"(where)。我认为万事万物都以这种w4h来分析很清楚。
2。云计算应该是一个已经很现实的东西了,各个大公司都有自己的做法,以cisco举例,我刚刚开始接触仅仅从我从事的”视频会议“说起,如果当初的系统就是两点式的,即两端是视频采集压缩以及解压缩显示的终端,
中间需要一个采用各种方式达到寻址,握手协议的服务器(比如sip/voip等等,或者一开始就是cisco自己的内部协议)那么,你想想看卖给客户的是整套系统,连中间的服务器打包都卖的,我觉得这很好笑就好像买
DVD还要把电影院买下来才能看,(当然我都不知道这是不是一开始的视频会议都是这样子的),所以,很自然的云端的服务器是目前的自然选择,这个在几年前就已经实施了,因为你的客户是跨大洲大洋的。
后来,在debug的时候分配给我一个很古老的bug,其中涉及了一个cisco应该已经夭折的产品线,大概就是云端的多媒体服务,大概是transcoding的服务吧,就是媒体格式转换。当然我搜了一下文档觉得不夭折才怪,
为了媒体格式转换,居然是一个一个hypovisor的虚拟机上架设一个win2003和一个linux服务器两个vm,我猜想也许是想利用两个平台的媒体转换技术的快速开发吧。价格自然无法可想。
进了公司就整天看到同楼层不停的扔掉堆积如山的近乎崭新的所谓的”家庭视频多媒体“机顶盒,这个是我自己起的名字,官方叫做umi,大概是英语谐音"你是我,我是你”,寓意这个是一个集合了娱乐通讯媒体互动电视互
联网为一体的一个野心勃勃的计划,你可以在这个device上找到现在几乎所有的流行的元素:googletv, youtube, msn, xbox-live, video conference for familiy等等。你就可以想象这个把类似qq云
盘的多媒体的硬件客户端,youtube的硬件“转接”至cisco的系统.说到底她就是一个一个视频+互联网+codec+voip等等的一个综合体,怎么样这个东西在中国这个疯狂的土地上单有其中一个元素就可以炒作一番,何
况“集大成于一体”?可是结果怎样呢?
cisco应该是有很多的idea都可以去探索的,比如那个所谓的share and show就是一个类似youtube加强版的计划,也是把umi的“视频”采集传送到云端储存共享,格式转换,等等。因为你有了上面所提的视频采集
压缩装置,你不仅仅可以视频会议,电话,你还可以制作多媒体上传共享,甚至编辑等等,那么这个是从用户的角度看是一个"推“(push)出信息,从cisco的角度也可以推送信息,就是把internet tv,视频点播
(netflix),youtube等等的视频聚合,新闻娱乐多媒体传送给用户,这样就是媒体之王,娱乐之王,新闻之王。
yahoo还是那个最近下课的那个笨女人(bartz)也是要走这条路,yahoo也有一系列的云计划,我刚进来就有一个印度女人去yahoo云的部门,看来这个东西长不了,因为我虽然对于这个女人只见过一面就已经知道
yahoo这个东西找的人素质不高,可能又是一个刺激股票消息的trick,也没有技术也没有钱也没有人才,肯定成不了。
说了这么多的闲话就是说明一点,国内很多还是在议论的东西,也许这里已经尝试过了,至少这个东西的成功因素不是仅仅取决于技术资金,很多时候还有人类这个难以捉摸的因素在里面。
比如刚刚死掉的乔布斯,我从来就没有佩服过他,只是觉得她就是一个”检漏“的幸运儿,”著名“的苹果也是一塌糊涂,谈不上什么技术领先,只是运气好正好别人尝试的时候太早或太晚,刚好被这个家伙装个正着,
还有更重要的一个”人“的因素,就比如女人完全无理性可言,全部的决定因素都在一个设备的外表,不管你的手机功能有多么强大,她们就只看重苹果的外壳和颜色,这个是”高技术“公司的强项吗?

3.说了半天的大趋势再说一说我的问题。现在所谓的云计算大部分其实都是”云存储“,因为真正的计算其实很困难,很多人的电脑压根就不需要计算,只是一个上网视频工具,就像pad一样,何来计算需求?那么这个
市场与技术都是不容易也不成熟的。明明自己有电脑了为什么还要”云“来计算?这个最根本的问题解决不了,云计算就是”伪“计算,或者更简单,没人要。
我也始终在这个问题上摇摆不定,究竟媒体渲染是不是用户确实需要”云“来协助?价格与时间的性价比的平衡点究竟在哪里?亚马逊的云计算说实在话并不算便宜,因为他开发了那么多的api方便你使用还有很高的可
靠性的考虑,对于企业也许是合算,但对于个人还是一个未知数?
但是更加具体的还是技术问题,首先,就是blender版本的问题,blender 是一个开源项目就导致他的开发不可能完全向下兼容,他本身是有一个非常有创意的二进制兼容的机制,简单的说明这个异常复杂的问题
就是,他的存储文件格式是设计成向下兼容的。
A)blender的save/load有可能是非常快的,因为近乎是内存直接二进制存储到文件。
B)blender试图做到版本兼容采用一个所谓DNA/RNA技术,这个是非常形象的,好像人体在繁殖复制自己的时候使用的某种encoding机制,核心就是把所有的相关的图形渲染编辑等等数据结构统统存储在文件中,
这样子保证了版本的近乎”无限“扩展性,他的伟大只有比较同类型的maya,3dmax之类的不开放的文件才能体会,这个兼容问题也只有这个是一个终极的解决方法。但是话说回来,这个其实完全取决于高版本怎样去
解释这些旧版本的数据结构,怎样去支持旧的机制,所以,赞扬的话也可以都是批评的话,因为这个机制压根就没有解决兼容的问题。
C)我在编译最新的版本来渲染旧版本的文件的时候常常不知道是我的错误还是兼容机制本身就有问题,这是一个很现实的问题,如果有人要使用你的服务,你不能保证你渲染出来的图像正确,你觉得有人要付钱吗?
D)如果仅仅停留在”高使用率计算(high thourughput/utility)而不是”高性能“(high performance)计算我觉得是没有前途的,本质问题就是仅仅靠租用亚马逊的计算节点ec2来尽量让不同用户来尽可能多
的使用率来降低成本(比如亚马逊是按照整个小时为最小单位收费的,超过一分钟也是一个小时的钱,如果你能够把多个任务拼凑在这个计算单位上就能节省一个计算成本,但这个是很小的一个,而且并非总是可行,
首先你要有大量的任务队列调度,其次你的计算单元要很灵活的调度能够迅速初始化适应不同的任务等等,并非那么简单可行的。。。)
所以,我一直想着手真正的“并行计算”来提供一个“服务”来帮助blender的用户节省时间降低成本,从而有“云”计算的可行性。但是这个谈何容易,我首先尝试改动了一下blender的线程部分的代码视图提高本地
多线程效率为将来并行找出途径,但是结果是令人沮丧的,似乎完全没有区别,后来我又试图从blender渲染的几个瓶颈大函数来着手看有没有改进的可能,这又是一个无可能的任务,首先render engine的制
作就是一个大的话题,在不了解blender渲染机制算法的前提下能有可能吗?我后来又转向寻找第三方独立渲染引擎,因为这个本来就是我的目标,blender强悍在他是一个编辑工具,渲染完全可以用第三方来替
代,而且blender也有这个独立渲染殷勤的计划,只不过人力不足,遥遥无期。针对最大的耗时部分“ray tracing”,使用第三方的独立引擎是早就有现成的,这个本来也是一个方向,不过在新版本下链接改造使
用这个引擎也需要一些能力,我当时简单尝试就没有在努力了,因为要尝试的东西太多了。却没有什么是明确的,很多部分我都是有一点点进展就寸步难行了。
E)网站问题实际上是一个最现实的问题,我对于以上的尝试大概花了将近一个月就感觉时间不够需要转过头来解决这个问题,因为以上的问题其实也可以在网站建立之后慢慢努力,至少我看到一两个提供blender
渲染服务的网站明确就是支持2.49版本而不是令人头疼的2.5X版本的。但是,这个我当时只有一个月的计划,让我去学习jsp/php的我很反感,虽然我很有信心能够在两道三个星期凑出一个网站粗通这些个垃圾语
言,但是我觉得很不甘心,于是找了一个歪门邪道,使用wt,这个是一个纯c++的开发工具通过把web开发抽象成本低桌面应用开发自动产生相应的ajax之类的实现异步通讯局部刷新的web应用开发平台,尝试了一
个月觉得挺好,但是最终放弃了,毕竟遇到了一些复杂的问题无法简单解决,因为你去自动产生jsp之类的毕竟是很困难也很危险的,我遇到IE和firefox兼容的问题就束手无策了,这个是任何web开发的人都头
疼的,我的签证也要到期了,只好回到美国。这也算是一个交代吧,套用某人的口号,努力过后再无遗憾。

十月二十一日 San Jose,不下雨了,又是艳阳天

一抬头居然发现是星期五的下班时间了。日月如穿梭,面临几个问题,arm的cpu不能和现在的pc来比,现在动辄就是将近2G的主频,还有多核超线程等等,总线外设也很快,所以,我在我的amd6核上运行约三四秒
的话,在arm上可能半分钟以上到一分钟,这的确是一个大问题,也许有一些方向,就是看能不能利用camera来作格式转换,这个是硬件,或者至少丢给camera去做。其次,改进查找方法,这个工作量不小,要
去看懂算法,还要想办法去改进。再次,简化问题,我们不需要人脸那么复杂的情况。1可以作,熟悉改造现有的代码,2也要做,迟早的,3也要做,也是必然的。没有不需要去做的,还说什么选项?
以下是cisco上班的语录:
1. 26“是针对mountain bike的,对于roadbike和hybrid来说应该是700c。我结果买错了内胎,还好bikeshop答应给我trade,所以能够节省几块钱。
2. 我一直不知道要怎样把新的app加到linux的应用菜单里,现在终于大致明白了,首先,在/usr/share/applications下面有一些.desktop文件说明了这个应用要怎么用等,那么最重要的是那个category,
你要明白应用菜单是动态产生的,就是说去/etc/xdg/menus下面的xml文件去看有哪些menu,directory,包含了那些category,于是就行了。
3. arm编译居然遇到了structure alignment 的问题,看来真是很严重的,因为我要存一个图片费尽心机要检验一下,只好手动存bmp文件,结果,从windows借来的结构在midnight commander下才看出来
是4byte对齐的,只好使用__attribute__((packed))对付一下。可是还是有问题,也许是big endian? arm是big endian吗?
4. Finally I made it! It is just a SDL + v4l2. Should not be something very fancy. But it is my first!!!
5. 我又犯了一个低级错误,就是在windows下我牢牢的记着链接dll的时候的c++和c的名字问题,我很久没有遇到了,因为很久没有在windows下编程,以为在linux下是不存在的,今天又遇到了,折腾了快一天,
因为我想要链接libx264,结果死活就是不认,我还一直以为会不会是和编译选项有关系,比如包含某个库或者shared/pic等等。最后在命令行试图编译才发现是这个老问题。就是说当我的#include <x264.h>
的时候在c++编译器下,这个头文件的函数都是c++的装饰名,那么当我在去链接的时候当然找不到,我之所以在linux下很久没有遇到这个问题是因为如今的大多数开源项目都是用c++编译器,哪怕代码是纯粹c代码,
所以,都不存在这个问题了,可是x264应该是因为几个原因使用纯c编译,首先跨多个平台还是c容易,其次,有用到一些处理器的汇编码做优化。
所以,解决的办法是很简单的:
extern “C”{
#include <x264.h>
}
6. 在arm上数据类型是不一样的,比如fabsl就不支持了,这个至少是double,在arm上我只好简单的把它定义为double.
7.学习数学:
a) 什么是gradient(http://en.wikipedia.org/wiki/Gradient)?什么是jacobian(http://en.wikipedia.org/wiki/Jacobian_matrix_and_determinant)?
什么是newton’s method(http://en.wikipedia.org/wiki/Newton%27s_method#Nonlinear_systems_of_equations)?
看了解释才想起这个是以前学过的“中值定理(intermediate value theorem: http://en.wikipedia.org/wiki/Intermediate_value_theorem)
不过我记得好像名字是一个特例,更general的是一个定理包含了”中值“这个特例,大概是拉普拉斯定理吧?记不清了。数学分析学的太少了,那个山羊胡子的犹太老头讲课很有意思,可惜他面对的都是低年级的小孩
子不能讲太深了。
牛顿方法怎么证明呢?
题外话,每次当我学习数学或者物理等等我就感到中华文化的腐朽与没落,而这其中的本质并不是别的,而是大多数中国人的闭着眼睛的冥想,沉迷于统治者设下的思想陷阱,很多时候说谎话的统治者自己也沉沦于
其中而不能自拔,林则徐自称是睁眼看世界的第一个中国人,至今他的追随者并不多,近代以至于现代今天,统治者以及统治阶级的维护者,以及既得利益者及其依附者始终都抱残守缺妄图遮蔽世界的真相,而大多数
被愚弄着因为限于统治阶级掌握了思想的传播工具,始终无法真正明白这个世界的真实。真相就是中国文化是极其腐朽落后的,根本原因在于没有被其他文化所威胁,始终无法受到推动与影响,这个与中国的地理位置
有关,因为他是一个半封闭的区域,不像欧洲始终都处于亚非各个文明的威胁与交流,国无外患常亡,所以,欧洲才能产生近代文明,这个不是偶然的超越,这是历史的必然。

十一月四日 San Jose,今天真冷啊

这是工作日记:
1.折腾了快一天要设定svntortoise的密码问题。 其实本栏也不是什么复杂的问题,之前也做了,这里是详细的介绍: http://support.tigertech.net/tortoise-svn
可是,我不明白为什么迁移到新电脑就不工作了,探索了很久,最后还是要重新做一遍key pair,并且是在远程server端使用ssh-keygen做的,看来本地做的puttykeygen有什么问题。也许是格式的问题吧,
因为我必须要用dsa才行?不过有一点点的收获,首先,tortoise的所谓的tortoiseplink应该是一个调用plink的壳子,完全转移一下呼叫参数而已, plink才是建立通道tunnel的工具,这就是为什么使
用putty建立的session能够为svntortoise来使用的原因。 至于说peagent的作用基本上类似于ubuntu的keyring一样是一个key的管理工具,你需要某种机制把key加入他的管理,不知道这个是不是已经
自动了,应该是的。
2. 训练数据在我的虚拟机上跑一个晚上都不够。
3. 每天上班就是傻坐着上网看新闻,躲在小屋子里面 无所事事。 心里感到惭愧,如果这个时候cisco把我解雇了我是毫无怨言的, 整整 十月份我几乎什么也没有做, 天天这么着混工资我心里觉得十分不安。
早上上网,看新闻,看 youtube的无聊东西,中午吃完午饭回来就睡觉,有时候为了消化就绕着大楼的草坪散步,难道这就是美国的高科技公司的效率吗?也许这个cisco日薄西山过不了五年就完蛋了? 我觉得
我作为一个合同工是很敬业的,为了挣工分每天坚持上班, 很多正式工根本就不来上班,几乎每天都看到大家在outlook上面的WFH,就是work from home在家办公,哈哈,真好。 美国真好, 工资又多,时间
又多,环境又好, 不知道全世界人民怎么想? 不知道未来的机器人看到这个会不会一怒之下做时间飞船回到现在提前将人类消灭? 当然他肯定在消灭人类之前保证AI的研究能够顺利的产生机器人(详见Terminator2)
,所以, 也许盛怒之下的来自 未来的机器战士 在决定灭绝人类之前对每个人做 iq测试 ,以及编程考试, 只有通过的才能幸免 ,否则留下这么多的无用的人迟早要把地球的资源都消耗光了,到时候机器人接受
地球的时候就成了一片沙漠了。
4. 我都快要以为 halloween 就不用上班了,因为好像办公室都没有人一样。 上个星期身体虚弱的不得了,不得已只好走进了fitness center, 条件已经很不错了,可是在很多人眼里还是不怎么样,唉, 这就
是穷人和富人的差别。 关于处女的讨论结论是这样子的:通则不痛,痛则不通。健身房里的女生非常的彪悍,星期六也许是赶着去约会到12点钟就闯进男更衣室赶人, 这个让我想起了关于健身中心的设施介绍,其
中男女更衣室好像特别加了一个private的字,难道以为着很多健身中心的更衣室是public吗? 我的腰被便宜的露营用的气床折磨坏了,都快弯不下去了,只好下决心买了一个100块的气床, 看到了谷歌拼音
有一个实验性的语音输入,实在是太糟糕了,完全不可用。 昨天晚上去24hour fitness center又被歧视了一小下,因为我没有加州的身份证只有一张加拿大的公民卡,被健身房满身tatoo的管理女生很是为难,
在加州亚裔是大多数,而且我觉得其中更有一半可能是华裔,满眼都是东方美女,实在是太让人觉得幸福了,我原来以为纽约的法拉盛就是华裔的大本营了,来到这里才明白那只是一个小小的集中营,大本营在加州
的湾区。很搞笑的是在健身房里睡着了,这就是我的健身成果。回来的路上看到了那家“仙台”寿司店就锁下自行车进去,没想到人满为患还要排队。这真是一餐令人难忘的盛宴,花了二十几块,清酒一定要喝滚烫的。
服务小姐全是令人惊艳的美女 ,肯定都是华裔,因为我知道其中一个会说流利的中文,所以她们是日本或者韩国的可能性不大,会说汉语的显然是唯一的混血类型仿佛欧洲风情。食客中美女也是如云,配合着清酒
sashimi真是令人陶醉,我出了门就后悔为什么不多赖一会儿呢?反正我也不能酒后驾驶两轮车,为什么不多坐一会儿呢?路过biglots发现了3块钱的”art school confidential“,很超值。
5. This is the precompiled-header for codeblocks. And remember, just set the “header” to be compiled with highest priority, not the “stub” .cpp file. As
codeblocks is smart enough to figure out how to do pch. Plus you have this defined in “other options” in compile tab:
-Winvalid-pch
-include "precomp.hpp"
http://wiki.codeblocks.org/index.php?title=Precompiled_headers
我昨天晚上才看到“训练”失败的可能原因,是大概内存的问题,居然要使用7G以上的内存能不出错马?
今天和chris讨论size_t的定义问题,他说这个是根据posix的要求要在stddef.h里定义,可是实际上没有人这么作,我的看法应该是对的,因为这个当初我在visualstudio里都以为是int之类的primitive
从没有想到是一个如同int一样要看平台的,既然如此,肯定就是在gcc安装的时候定义就要出来了,果然,在/usr/lib/gcc下面找到了stddef.h的定义。
这个讲演和大家分享,我觉得作者视角很独特很有说服力的说明了一个事实,民主制度并非经济增长的阻遏。(http://www.ted.com/talks/yasheng_huang.html)我担心万恶的共产党封锁了这个网站
所以下载在这里。
人云:
民主之于经济,只看到一半,但我不太赞同。
无论是经济或军事发展取决于领导者的能力和决心。民主国家通常每件事都有两派人拉锯,由政府来干肯定干不出啥大事。所以民主国家必须通过人民来获得成功,象美国的经济、科技都是这样。
但独裁的国家,如果有一个贤明的君主,可以更快取得某方面的成功。问题是下一代遇到一昏君前面积累的东西很快就败光,我想这也是民主和独裁中人们会选民主的
原因。民主或许更不容易崩溃,当然这也不是绝对的,如果一个懒散的民族,没有进取心的民族,象欧洲的很多国家,他们肯定更希望过安乐日子或者目光短浅,那
民主就导向平民向往的混混噩噩安于现状不思进取的政府。

估计我这么说清浙肯定有不同意见。

我曰:
我肯定是有不同意见的,我只是从概率的角度来看待所有的问题,因为所有的问题不论是民主还是独裁,不论是科技还是经济都是一个有关“数学期望值”的问题。
比如我们可以把独裁社会和民主社会看作两个不同的概率类型,独裁社会有很大的起伏,遇到所谓“明君”也许比”平均“的民主社会的效率都高,但是遇到”昏君”社会生产力水平也就远远低于民主社会的平均值。
而民主社会是一个概率起伏不大的,既不会有大英雄,也不会有大奸雄,甚至连大白痴和聪明绝顶的都很少出现,即便遇到了也没有用,因为最后以妥协什么都是一个平均值。

可是从长远来看一个社会起伏跌宕少的反而要比大起大落的社会对于生产力的促进来的有利,因为这是一个浅显易懂的道理,就如同汽车行驶始终匀速巡航速度最省油,而不停踩刹车踩油门耗油更多,到头来平
均速度也可能更低一样的道理。因为民主社会不容易犯大的错误,可能会错失一些“罕见的”绝好的机遇,但是只要你不犯大错不错失你应该获得的平常的机会,你就至少不会比平均值更低。

也就是说即便独裁社会与民主社会“数学期望值”相等的情况下,民主社会的实际结果还是会好于独裁社会。因为社会生产力是一个累计的过程,不仅仅看创造的总数量还要看你消耗的总数量,独裁社会的大起大
落造成的损耗远远无法弥补他在高速发展时候的超越民主社会的部分。这个是从跑马拉松的实际体验就可以知道,谁也不会动不动就加速跑到无力休息然后在加速,大家都是匀速保持一定的速度。

我很欣赏这个演讲的一个地方是他不把印度和中国比,而是把印度和巴基斯坦来比。而另一点他说道了大多数人都没有说的一点就是中国在六十年代的时候就比印度发展的快,而不是改革开放才变得快,而这里
面的根本原因是“中国妇女”造成的,因为人均生产力是看每个劳动者的,不分性别做统计的,可是印度妇女是相对来说毫无地位,压根就不就业的,就是现在也是如此。其中最震撼的就是演讲里的“时代周刊”的
那张照片在比较中国和印度的纺织业,中国都是女工在踩缝纫机,可是印度都是男人,哈哈。你就知道这个不是仅仅的社会制度的优劣,而是中国妇女的高就业率推高的中国作为发展中国家的GDP水平,因为大
多数发展中国家妇女就业率,文化水平是很低的,中国是一个例外。

但是,就是这个妇女的就业率并不能为“社会主义”的“优越性”来背书,因为这个更像是一种“教义”的结果,如同“太平天国”运动之类的邪教的主张,实际上太平天国虽然号称男女平等,实际上压根就是一个欺骗,
因为所有的下级成员的婚姻都是又上级“组织”包办的,军队压根是“禁欲主义”,而洪秀全本人却真的躲在南京后宫里实现了真正的“后宫佳丽三千”,所有的高级官员都是一夫多妻,而平民百姓压根必须禁欲。
所以,毛泽东提出的妇女出来就业,并不是什么男女平等的考虑,而是增加劳动力的无偿使用,就像苏联卫国战争期间大量男子阵亡,斯大林让苏联妇女上战场的考虑一样。作为奴隶主,奴隶当然是越多越好,
并不需要考虑奴隶的性别一样。
过了两天我又想补充一下,民主社会断然不可能发生文化大革命似的愚蠢的行为,只有纳粹共党才会。毛泽东为了巩固自己的统治不惜采用两千年前的残酷手段来“焚书坑儒”,这个是毛的原话,他认为自己比
秦始皇做得好,因为秦始皇只不过坑了466个儒,毛板着手指头就坑了差不多三千万的儒,怎么知道的呢?五七年抓右派按照全国5%人口去抓的,每个单位都是如此,六万万人口乘以5%就是三千万知识分子,
全部送到五七干校这样的集中营,关牛棚,不用坑就死了一小半了。把中国的知识分子从肉体上消灭了,共产党的统治也就抱住了几十年的稳定,因为人类文明代表的知识精英的断层是几代人都无法弥补的。
这就是集权统治的真实的一面。
很多人至今还要把这一系列的反右文革等政治运动的起因归于某个领导人的智龄利昏,殊不知这个红色法西斯政权换谁都是以样的,没有毛泽东,也有江泽西,体制使然,并非什么明君昏君。

十一月六日 San Jose,今天真冷啊

本来要看image integral的算法代码,结果有无病呻吟了一下午。
http://www.economist.com/blogs/babbage/2011/11/artificial-intelligence?fsrc=scn/tw/te/bl/ludditelegacy
这个古老的掌故被一次次的传播,但是,大多数国家的领导人却未必领悟到。就是在上个世纪初的时候,没有全球化的困扰,每个国家都是关起门来发展经济,西方和东方有着截然不同的想法。
亨利福特的汽车厂首先采用了“流水线”作业大幅度的提高了汽车的产量,这个时候他有两种选择来面对即将到来的生产过剩。1。压低工人工资,不断降低汽车售价让越来越多的穷人也能买的起汽车,甚至出口到欧洲亚洲等等。
2。立足于本国本厂的消费,取之于民用之于民,提高工人工资,首先让自己工厂的员工来购买自己的汽车,富裕的工人反过来消费过盛的产能,同时高额的薪水吸引最优秀的人才加盟福特汽车公司提高竞争力。

在二十世纪也同样出现了两个阵营的体制竞争,一方是以苏联为首的所谓的“社会主义”阵营,一方是以美国欧洲为代表的所谓“资本主义”阵营,面对同样的生产与消费的矛盾,两方采取了不同的策略。
基本主义尤其是美国为代表的体制采取所谓的藏富裕民的策略,让高工资高消费拉动经济消化过剩的产能,尽量延缓经济危机的冲击。而所谓的苏联或者中国模式则是以行政手段认为定义工人工资,让人力成本在整个生产过
程中无可比拟的低廉,使用国家垄断机制积累国家财富,抑制普通消费,完全偏向重工业化工业等等生产资料型的产业,其背后的原因当然是所谓的“军备竞赛”。终于种种没有普通劳动者消费支撑的所谓的“计划经济”彻底崩
溃。中国在这论崩溃的过程中凭借着89年的坦克与机关枪暂时逃过了灭亡的命运。当开始实行所谓的“资本主义”的时候就面临这一个致命的问题:几十年来人民没有财富的积累,都实行了国家的高额积累,生产转型为生活资
料的生产后卖给谁呢?老百姓买不起,国内消费没有市场怎么办?本来也要注定失败的转型碰上了一个历史的机遇:卖给资本主义国家。怎么卖?中国借钱给美国欧洲让他们来买中国造的产品,怎么借钱给美国?中国出口到
美国,美国打一张白条,在纽约的美元帐户里转一些数字美元给中国银行纽约分行,然后,美国成立了一个“火星人机构”--“联邦储备委员会”专门收购美元再打另一种“白条”--“美国政府国债”,于是通过这个“火星人机构”
中国银行纽约分行里的数字美元又回到了美国政府,中国银行拿到了一张美国政府的欠条--“美国国债”,又因为中国的数字美元太多没有地方去只能买美国国债,因此“美联储”把国债利息压的很低,几乎和白借钱一样。所以,
依靠这个中国政府让美国借钱消费暂时解决了生产过剩的问题,但是,美国却可以继续实施“藏富裕民”的策略,让普通美国人高收入高消费,建立了一个国内经济的良性循环:普通美国人工资高,有钱消费拉动经济增长,高收
入吸引优秀的人才,优秀的人才创造领先的科技反过来促进美国的产业升级,国力提升。
而中国的从前的“社会主义”体制完全不注重普通劳动者的价值体现,生产者没有积累,国内消费市场不足以支撑过度生产,只能继续维持,而为了保持价格的竞争优势反过来又不得不压低工人工资,强制货币贬值更加压低了
劳动者的财富积累,进入了这个国内经济的恶性循环:工人工资低,无法支持高消费,生产过剩只能依靠出口,出口必须进行全球化竞争,必须压低工资,货币贬值,反过来工人更加没有积累,国内消费市场更加畏缩。

在几百年前统治者也面临着类似的选择:中国历朝历代的统治者都有一个同样的选择,是竭泽而渔还是修生养息?
那个时代与后工业时代不同的是,在农业社会粮食生产是社会最重要的基础,面对这个问题,中西方也有着不同的选择:重农经济还是重商经济?中国古代自以为是的御用经济学家以“人之初性本惰”为出发点给出了重农经济
的答案,人民如果有了积蓄就会享乐,商人买空卖空巧取盈利会加重了普通人的投机心理,重农抑商成为国本,出发点就是人民不应该有积累,国君拥有天下就该取得所有,普通人的生命既然都可以剥夺何况他的个人财富?

在大约相同的历史年代,欧洲的地中海的城邦却流行着另一种治国思想,依靠贸易每个城邦依靠自己有优势的生产产品依靠交易取得自己所有必须品,包括粮食,专业化的生产促进了各个城邦尽可能在自己有优势的领域继续
发展,良性的竞争与互补也让各自的生产投入产出最大化,国君的收入主要不是依靠直接剥夺本地生产的产品,而是依靠产品获得交换贸易之后的盈余的纳税,统治者为了增加税收必须为生产者提供尽可能的生产交易运输的
便利。请注意这里东西方统治者财富积累的形式一个本质的区别:西方考量的是作为贸易手段的货币--金币是产品实现了价值与交换的结果。而东方的国君则是直接征收劳动者的粮食,所以,你翻看中国古籍表现国泰民安
的指标就是粮仓堆满了粮食,农民不需要考虑产品的交换,成了一个在整个生产活动中的被动一元。而西方的重商主义能够积极的调动农业生产者以及交易者的积极性。而反过来重商主义的一个很重要的结果就是放水养鱼,
而不是重农经济的竭泽而渔。

历史的重演不是简单的重复。中国的统治者实际上又面临着1840年以前的选择:中国国内因为长期的中央集权的高度积累,普通人民缺乏购买力,中国的陶瓷丝绸茶叶只能卖给英国等欧洲国家,当时英国的工业化生产的布料
毛料等却因为中国国民的贫困无法销售,于是大量的贸易盈余让清朝统治者沾沾自喜,以为康乾盛世再现,以为中国体制优越,在万般无奈之下英国政府被迫发动了要求“消除贸易保护主义”的正义战争,一举打破了大清王朝
的贸易壁垒,开创了“自由贸易”的新纪元。当年如果大清王朝也能够设立一个“大英帝国联邦储备委员会”把大清王朝盈余的白银无偿借给英国,让英国平衡贸易赤字继续进口中国的陶瓷丝绸茶叶,那么随后的“鸦片战争”很可
能就不会爆发了,那么中国随后也可以继续在满人的统治下“繁荣昌盛”了。
当年的清朝统治者在贸易居于最有利时刻却始终不会想到最后竟落得被频频进攻签订不平等条约割地赔款如此下场,今天的“国家垄断官僚买办资本主义”竭泽而渔式的统治也不会考虑今后欧美借贷消费模式走到尽头中国的产
能过剩要怎么解决的问题。

面对危机,中国的统治者无一不是加紧掠夺,尽可能的集中财富,让中央统治者拥有最大的执行力来面对将来可能的暴乱与衰退,岂不知人民只有穷困无望才会暴乱,岂不知官与民争利无度经济才会凋敝?竭泽而渔的统治模
式恰恰是缘木求鱼南辕北辙式的“维稳和谐”。

十一月八日 San Jose,原来加利福尼亚的冬天这么冷啊

这个月购买DVD的开支大到了空前的高度,根据预算委员会应对全球经济危机的年度紧缩开支计划,今年到年底以前的服装开支是被彻底冻结了,可是,当部队从新泽西仓皇撤退的时候,所有的重武器都被遗弃了,年底以前
这么冷不知道能否支撑的过去。计算机与运动的开支没有限制,实在不行的时候就购买运动服装。
购买了5块钱的dvd一大堆,其中的《last samurai》我认为是物超所值的,每次看得都让我感动,有时候会不自觉的想象中国人心目中的“英雄”和日本美国人心目中的形象怎么差这么远,也许在很遥远的年代,当中国这个
农业文明被游牧民族一次次的征服之后,中国人早已只存在幻想中的英雄,所以,当你看到那个所谓的《英雄》之后,你觉得那根本就是一个小人。在现在中国人的实践中崇拜着“诸葛亮”式的以诡计取胜的所谓“英雄”,因为
这个民族缺乏足够强大的实力来屈服自己的敌人,于是热衷于阴谋诡计,好像现代的穆斯林猥猥嗦嗦的恐怖分子,从来不敢也不能够正面对抗自己的敌人。
我个人认为这是汤母克鲁死最好的一部电影。
马克信机关枪的出现终结了骑兵的历史。
另一部电影是<frantic》我喜欢女主角和她的舞姿与音乐。
当然这部电影揭示了日本民族的一个信仰,我已经有些厌倦重复了。
中国历史上从来没有一个职业军人的职业与传统,于是,不断地被游牧民族征服与屠戮。
作为天皇的老师是一个职业军人,或者说“侍卫”,“武士”。而同一时期中国皇帝的老师是一个腐儒,这就是两个民族命运不同的原因之一。

十一月十一日 San Jose,原来加利福尼亚的冬天这么冷啊

我对于日本在机器人的研制方面一直充满了敬畏,我知道这个民族一直坚信这个是改变世界的终极产品,不论是在产业高峰成为世界工厂的时代还是房地产泡沫崩塌的一刻,日本在机器人研制方面的投入与领先都是无可置疑的
在foxnews看到的最新的展示是非常令人震惊的,日本和美国等国在这个方面的方向有些为的差别,美国科技更希望能够在AI上有所突破,当然我也看到偶然的有些在机器人行走上的一个大学的展示,但那个更像是某个课题的
附属品,日本人的机器人是真正的那个“机器服务生”的概念,而这个在很多方面是产业化可行的,因为纯脆的AI真不知道一两百年够不够,那么这样一个机器服务生的诞生只需要在制作成本上通过批量生产来降低就能实现普及
的化,首先就解决了人口老化问题,欧美无一例外通过移民来补充人口,事实上证明了这是饮鸩止渴,法国引进了从非洲引进了伊斯兰教徒,英国从巴基斯坦引进了自杀攻击者,美国从墨西哥引进了专门领食品券的大麻种植者,
日本没有引进移民怎么补充人口呢?让妇女多生育?这是荒唐的,从基因遗传的角度来看,多生育的妇女往往是智商较低的妇女,那么后代遗传基因更加的低劣,导致整个人口素质退化,因为大自然原本是靠一夫多妻制来平衡
这种弱智妇女高生育律的倾向的,结果现在的一夫一妻制又杜绝了这个可能,因此,日本的这个努力可能是全世界人民的福音,是解决全世界经济危机的良药,为日本欢呼一下吧。也许日本的产业复兴就从机器人制造开始。
这个美国蠢人节目“FIVE”对于honda的突破极尽冷嘲热讽,对于家庭主妇愚蠢的导致更多失业人口的论调撇开不理,对于哗众取宠散布机械杀手的恐赫撇开不理,对于无厘头宣扬机器性爱撇开不理,对于咆哮那是亚洲小孩子
穿着白大褂的嘲讽撇开不理,我只听懂了几个字,为什么美国没有造出来?这个搞笑专题在屏幕下方涂满了鲜血试图制造出机器人大屠杀的血腥场景,这一切都只反应了一件事,连普通人都会对这个里程碑的展示产生无尽的
担忧,因为这个平台可以搭载任何新的计算,真正的“移动计算”的最新的解释,试想即便日本在AI方面没有美国的领先,即便机器学习训练是一个漫长复杂的过程,但是通过强大的网络来中央处理,依旧可以在这个平台上实现
人类所难以想象的新地突破,这个领域可能会成为PC出现以来最重要的一个时代起点。
我太孤陋寡闻了,honda的asimo在好几年前就诞生了,只不过一步一步的演进,但是他将来作为一个平台来搭载最新的软件是毫无疑问的,所以,他作为PC-80286的地位依然不变的。

十一月十五日 San Jose,原来加利福尼亚的冬天这么冷啊

订立了一个乐观的计划就是决定花一个月左右的时间来学习改造opencv的机器学习模块,最高目标是自己能够加入一个递增的学习的数据,其实我也不清楚是什么。。。
花巨资购买了big bang theory的前三季。

十一月十七日 San Jose,原来加利福尼亚的冬天这么冷啊

所有的在中国的民间呼声都是触及共产党的根本利益,因此都是与虎谋皮。
上个月到底花了多少钱?财政委员会冻结了一切服装的预算,限制了任何超过两百块钱的消费品的支出,可是每个月的信用卡消费还是要超过一千块?

十一月二十三日 San Jose,加利福尼亚的冬天这么冷吗?

为了抒发一句话的感慨,我费了好几个小时,因为对于smartpinyin不满意就去尝试下载新版本,发现编译不过去,不明所以然,当然scim是可以的,可是smartpinyin的两个版本都不行,看了半天也不知道我要的是什么
是nova pinyin?为什么官方的代码编译不成呢?重新安装又遇到几百年的老问题,要用ibus-daemon我实在是太糟糕了,一个输入法都搞不定,我的系统菜单已经坏了好久了,看样子随着ubuntu11的流行,维护10.4的
问题越来越多了,几乎每次升级都遇到麻烦。
昨天想要说的是paul viola的论文我读国跟没读过没什么两样,他的三个contribution,我就看懂了一个image integral,这个其实比较容易懂,至于adaboost,实际上不去读原作者的论文根本在这里就不明白是
什么,而feature呢?其实我也没有搞明白,连是什么都不懂就去读代码自然不得要领,折腾了半个月毫无进展。昨天晚上看了一点点adaboost的介绍才有了一个方向。核心就是当初我不理解的两个关键参数threshold和
weight,后者是在反复训练中强化出错的部分的,前者是强化hit rate当然是以提高false positive为代价的。就明白了这么一个简单的道理,化了多少时间?
读了adaboost的启蒙paper真是感慨万千啊,我对自己从前接受的中国式的教育更加的认识深刻了,中国的整个的教育体系就是一个AdaBoost的模型,每天每时每刻让几千万人在重复做一个training,如果有朝一日完全
在机器上实现自动化的话,这么几千万人就是成了废物了。

十一月二十四日 San Jose,感恩节阴天下雨

花了五块钱买的led灯很不错,缺电池去walmart,又给自行车重复投资买了前后灯,感觉国内可能真要有很多led的厂家倒闭,因为做得东西太好了,太便宜了。
1. 感觉这一 年多美国的经历就是在这些大公司里生存要学会一些基本的技能,其中一个就是outlook之类的邮件的使用,这也包括了msn或者公司内部的IM工具,这当然是任何一个在现代办公条件下的的基本的生存之道,
因为这就是交流与沟通的工具,其中有很多约定成俗的基本常识,不学习就会被人所唾弃。
2. 我觉得 我的直觉现在很强悍的,xmlrpc的参数传递居然会导致crash,我看到S的coredump的失败是一个type的assert导致的就猜想在传递参数的时候虽然一个result[1]=5;之类的不简单,不仅仅是赋值,而
是重载了=operator并且添加了type 的信息,果不其然,看到xmlrpcvalue.cpp里面的确如此,我顿时对于自己的伟大形象充满了无比的敬佩。
3.怎样调试coredump呢?首先你看到他在什么地方dump的,在var/active的什么地方找到dump,然后命令gdb dump binary就行了.
4.cisco的面试题目

Regarding his slides which are very good and teach me something I didn’t know before like the standardC98 etc. But I have some doubt on this question, (see the
attached screenshot
). He explains the result will be printed “42” and it is because “reused named variable”. Maybe I misunderstand his words, but it sounds strange to me.



1. I tried this in Unbuntu32 on my “vmware” , it prints garbage just as it is expected.

2. “Reused named variable”? At compile time, compiler will try to “resolve” variable and if cannot find, give undefined error. And since those two
variable “a” are well defined, there is no needs for compiler to search further.

3. My explanation is, if it indeed prints “42” in some cases, it is because both the function “foo”, “bar” are running on same stack memory one after
another. In many cases, the previous run of function exits and the next function starts at same address of stack. And both the “temp” variable “a” are at the
same “offset” or address of stack. Then the first “a” initialize the value “42” for the second function call.

Further to my previous email.

In “linux” machine like our “hp15” which indeed gives result “42”. And considering the garbage value in my “unbuntu” on “VMWare”, this confirms my explanation:

It is due to the “repeating using of same stack for CONSECUTIVE FUNCTION CALLS”, while in “VMWare”, between the two function calls, there are functions calls from
“VMWare” to simulating the OS. That is why the result is garbage in simulator. If indeed the reason is so-called “named variable reusage”, why simulator gives
garbage output? Am I right?!

战争的回忆

----当硝烟散尽,铁甲锈蚀,剑戟折沙之时回忆起那金戈铁马的时光。

清晨,战争之雾弥漫在一片荒野上,我方点起了进攻的兵马,速战速决的进攻战略让我方偏向昂贵的攻强防弱的骑兵与弓兵。侦查骑兵广阔的视野驱散了西线战场的迷雾,这里一望无际的平原正是易攻难守好战场,对于东
侧我只派出一个弓兵一个战士虚张声势采取防守策略,这一侧在城堡附近的森林山脉村落可以作为前线失守后的第二道防线。

旁观者啧啧的赞叹让我开始揣测对手是否也是如我一样的准备发动闪击战。果然侦查骑兵发现西线异常空虚,而行动迅速的东线的那个弓兵也发现了敌人高机动性的狼骑兵,以及随后跟进的可怕而及其昂贵的刀刃涂满毒药
的刺客,再后面隐现的大队的敌方主力步兵让人倒吸一口凉气,幸好发现及时否则敌方孤注一掷般的投入五个主力步兵是我留守东线部队无法招架的。

决策在一瞬间就要做出,防守反击是不二的选择,西线敌方派出防守的部队是侦查狼骑兵这本身就是一个致命弱点,但也是无可奈何的,本来这一侧就是不守而守,只要在东线进攻的压力足够大我原本是无力进攻的,但是,
这不守之守却造就了我方的不攻而攻,所以,我留下了两个已经前出前线的弓兵准备发起局部进攻,而把后续的主力弓兵和一个侦查骑兵全部后撤转进增援东线,同时改变征兵策略为防御型的战士。

东线前线的那个村落是无法防守的,与其白白损耗那个宝贵的战士不如让他在有利的山岭上牢牢把握制高点固守待援。要知道敌方是山丘部队,如果让他们占领山地,那对于我方丛林部队的攻守是多么大的差别啊。敌之要点
即我之要点,兵家必争之地寸步不能后撤。

东线敌军的弱点在于长途奔袭,以疲惫之师对抗我少数但是以逸待劳的精锐。而更大的弱点在于为了数量上的压倒多数招募了五个行动迟缓进攻防御都弱的便宜的步兵,这个也是一个战略的选择问题,因为敌方为了出其不意
还招募了一个水军部队准备从中路的湖泊趁着战争迷雾的隐蔽来偷袭我军的后方,这一招本来是非常毒辣的,假如没有事先察觉我军在东线激烈对抗中受伤的部队撤到原本认为安全的后方湖边村落养伤将会被水军偷袭成功,
这样胜利天平的逆转也许就发生在一瞬间。然而奇兵的优势是出其不意,却也造就了正面战场攻击部队的不足。那个难缠与可怕的释放毒药的刺客原本是突破坚固防线的利器,因为不论多么强悍的部队在招致中毒后每个回合
都要失去八个生命点数,在村落疗伤的第一个回合仅仅是止住毒药的继续蔓延而不能回复生命值,这中间的差别有多大当可知晓。然而这个可怕的刺客也有其不可避免的弱点,昂贵无比需要20g,脆弱也许下毒的同时自身也
损这大半,从经济角度看,我牺牲一个13g的廉价的丛林战士来换取一个刺客的买卖是合算的,所以,资深玩家无不会谨慎保卫下毒受伤的刺客,但是在五个行动迟缓的步兵全部赶到之前就发动进攻注定是要损失宝贵的刺客
的,因为那个行动力高但是攻击防御却不很高的狼骑兵不是作战的主力,仅仅靠位置靠前的一两个步兵的配合是不足以拥有全面优势歼灭我防御的丛林战士和那个丛林弓箭手的,何况我后续赶到的高机动力的骑兵和随后跟进
的其他从西线转进的弓箭手也不过就是一两个回合的时间,这一切都来自于我方主动放弃了前线的那个难以防守的平原上的村落而专注于后方靠近城堡的夹在丛林与山地间的易守难攻的村落。这一进一退的差异转眼间就在以
空间换时间的战略下产生了实质上的实力对比变化:原本敌方占据压倒多数的东线却在局部甚至不占优势。原本是奇兵的水军偷袭战术在被我侦查骑兵窥探到之后反而因为路途遥远偏锋突进成为后来的隔靴搔痒。

希特勒的纳粹帝国为什么败在苏联红军手里,其中很重要的就是经济实力上的对比,尤其是军工实力。战损补充比例是一个最基本的指标,只要我方损失在成本上小于对方,或者更准确的就是我方村落收入与敌方村落收入的
差额减去我方损失单元与敌方单位损失差额占优那么从长远看胜利就是我们的。所以,虽然我们主动放弃了一个守不住的前线村落让敌人在几个回合里增加5g,我方减少5g,一正一负有10g的差距,但是只要我方利用短暂的
时间空间转换获得的局部优势打一个歼灭战消灭多一个地方单元那么优势还有可能挽回,前提是我需要每个回合创造10g的优势挽回资源上的劣势:东线打歼灭战,用便宜的单元去换取敌方昂贵单元,并且争取多消灭敌方单
元,尽量减少我方的单元损失,让重伤单元撤到中路后方村落修整;在西线在数量不占优势的情况下依靠兵种优势争取消灭敌方劣势的狼骑兵相机夺占村落挽回东线放弃村落的资源损失。至少解决了一个小的不能再小的实际
问题,就是关于我的vmware使用thinkpad上自带的camera的问题,这个纯粹是一个设置问题,就是说在vmware上的usb设备要去connect这个,之前我不能用是因为usb的设备最大使用数达到了,需要卸载一些,在
就是使用外挂的usb webcam同样需要驱动支持的问题,不知道为什么在台式机的ubuntu可以找到logitech的webcam,但是我的vmware就不行?最后是一个小的细节,如果我不把“支持usb2.0高速设备”的选项打开,
我不能设置v4l设备的yuv格式,我怀疑这个的确是usb2.0高速传输的功能。然后我的小小的web capture的demo就能够运行在30fps的了,这一点我还是相当满意的。

看opencv的算法实在是头疼,我几乎都是一天看一两行代码的速度在看,实在是太晦涩难懂了,因为很多是类似与驱动似的回调,这个就是用纯c写成c++类方法的样子,为了实现多态,函数第一个参数是结构指针,类似
与this,也就是说类方法第一个参数传递this指针的意思,然后结构里面一层层的,有些部分又是为了并行做的优化,我始终找不到我要找的东西。。。

美国国会的超级委员会陷入僵局,这是意料中的事情,有意思的是有的女评论员责怪委员会没有女人,好笑。其实,也对,按照方鸿渐的理论,女人天生是政治家,因为阴谋笑里藏刀等等都是女人天生的技能,如果女人治
国至少可以减少战争,因为女人不善机械工程,打架最多就是掐脸揪头发所以大的战争打不起来。
中国的高铁事故调查报告出来了,让我都不太敢相信天底下真的有这么无耻的人?其实不是无耻,而是把人不当人惯了,所以。。。中国的顺民太多了才这样子。

十一月二十七日 San Jose,冬天的晚上有时候很冷

以暴易暴式的革命绝对不能自动成为民主制度的奠定者,所以,奴隶发起的流血革命建立了新的奴隶制度。革命推翻的不是旧的制度,而是替代了旧制度的掌权者。社会进步的标志是生产方式的转变带来的政治制度的转变。
农民阶级不是进入真正资本主义的主导者,只有资产阶级才能有实现民主制度的资格与意愿,因为现代工业化大生产要求劳动者有头脑有创造力参与全球化竞争。没有资产阶级就没有民主社会,否则农业社会产生的必然还
是封建集权统治。消灭农民,从我做起。
超级预算委员会没有结果是意料之中的,因为削减预算或者增加税收都是政治家明知不可为而为之,民众是愚蠢和刁蛮的,在真正的民主制度下寻找共识的最大公约数是困难与妥协的过程,为了不被选民唾弃,只好作出努
力的样子,反正我没有妥协,达不成共识至少坚持了原则。实际上自动削减预算可能是最好的办法,让具体执行的人去决定谁的蛋糕被且掉了更好。而且2013年相对于现在是一个遥远的未知数,这是最好的结果!
中国共产党的几十年的统治是否是中国近代史上最黑暗的统治只能又后世的历史学家来作出结论,但是和民国相比,究竟民国时期是否还比共产法西斯更人性一些呢?本来是看毛皇帝的太子的生平,看到虽然杨开慧被杀了,
但是她的三个孩子并没有一同被处决,而且最后还被保释出狱,设想共产党的统治时代这个是不能想象的,斩草除根是必然的。黑五类肯定是被肉体上消灭了,从这一点来看民国是比那个“人民共和国”人性化的多了。

看了好多天的adaboost,现在才找到一点点方向,看来只有两种解释,第一,我太笨了,第二,我没有耐心读下去。
问题的定义:
假设我们要从池子中找到n个classifier,(用k1,k2...kn表示),我们是supervised learning,因此有T个samples,(用x1,x2...xt表示),那么针对每个sample每个classifier都有一个判断,1或者
-1,我们目前现全部使用positive的sample来。所以,就是说要找到这么一个权重向量v1,v2...vn作为我们找到的n个classifier的权重以便组成一个强的classifier,因为也许我们池子里的classifier都是
很弱的。训练过程中我们观察到如下结果:
k1(x1)=0,k2(x1)=1 ...kn(x1)=1等等,这里我们使用0表示k没有成功判断,1表示成功判断。假如我们现在加上设计好的权重向量w1,w2...wn能够让我们现在这个组合的强classifier来达到准确的判断,比如
w1*k1(x1) + w2*k2(x1) ... + wn* kn(x1) = 1
同样地,如果针对别的sample xi这个公式也成立的话,这个就是我们的classifier,我们的整个的机器学习过程就是寻找这个weight vector的过程,以及发现池子里的ki的组合的过程。
基于一上的定义,举一个例子来说明我的想法:
k1 k2 k3 k4
x1 1 1 1 1
x2 0 0 1 1
x3 1 1 1 0
x4 0 1 0 0
x5 0 0 0 1

a)样本本身也设定权值,这个是adaboost的策略,因为容易失败的例子权值大的话,可以让我们更加集中注意力来寻找重要的classifier,比如x4,x5的权值就比x1来的大,这样自在x4,x5中表现优异的k2和k4就
有机会得到更大的权值来成长了。
b)假设每个k都是彼此独立的,(这在实际中几乎不存在,但是我们先假设吧),我们可以计算每个k的独立的概率,这个是基于每个样本的权值一样的情况,如果按照a)我们想办法调整样本的权值根据他的“难易程度”。

据说这个东西和Linear programming 有很深的联系,我的理解这些都是一个fiting的问题,我倒是觉得和概率推理有很深的联系。做一个实验看看再说。

找到了这篇非常好的讲义,回答了我长久以来的问题,(实际上我一直都问不出问题,因为压根就不理解adaboost的原理。)现在回过头来看其实adaboost是一个非常好理解的东西,讲义中使用的例子很朴素,形象,
让任何没有多少数学基础的人也能理解,后来使用错误率和权值求偏导数也很经典地告诉我们权值是怎么计算来的,偏微分函数为0肯定就是一个顶点,也就是说这样取得的权值是最优的。这整个过程仿佛是一个科学决策
的问题,如果我们把这个应用到美国国会议员历年来的投票记录上就可以找到一个寻找“超级委员会”的算法,间接的也可以找到尸位素餐的白痴议员,当然把这个算法应用到中国的全国人大立刻就发现所有的委员都是白痴
级垃圾,因为他们的投票完全一致对于组建超级委员会毫无帮助,完全人云亦云的委员是不能对超级委员会有任何帮助的,这在这个讲义里面讲得很透彻。

Smiley face