阳光烂灿的日子

--记录所有碎碎念

Gmchess in Mac osX

| Comments

mac osX的好处是,我在linux下的技巧几乎可以照单全收。并且装了个类似linux的命令行包管理工具homebrew.执行起来类似apt,yum,pacman.

只需要 brew install gtkmm,即可帮我在mac osX下装好gtkmm的跨平台环境。当然还需要别的一些辅助编译的工具,比如autotool类.过程较为烦琐,不过搞定之后,我就用gmchess来试试,编译过程也需要到一些工具链调整及代码上的调整。似乎mac 上的g++要求更严格。初步调整后可以编译,并且gmchess也能跑了,不过,也有一些问题仍待解决。比如没加载到po语言文件,界面上没有字了… 本地录没有.config导致初始化失败,没有声音,因为用了专属的aply命令。还有引擎没有加载正确开局库导致它弱智了。

不过,问题都不大。预计下一个版本就可正式在mac上跑了。

Gmchess 0.29.4

| Comments

i just release the gmchess 0.29.4. just thinking long time no release. maybe i can release more busy in the further, or maybe not.

it just add one useful function you can see. i can’t tell you in english. just saw the picture.

Download gmchess-0.29.4.tar.bz2 thank you.

再见了,乔帮主

| Comments

算是机缘巧合,一星期前开始接触苹果的产品。见识了精致的工业设计。macbook pro的精致,令我下定决心下一部笔记本必定是它了。实在想不明白为啥其它笔记本的触摸板整那么小一块,根本不够用。不明白为什么电源线带着那么大一块适配器,还称啥移动性。难道这些都是苹果的专利了?但是相对iphone来说,我还是觉得android更有可玩性。
今天早上出门的时候,在推特上已得知乔布斯已离去,有点惊愕。昨天才iphone4s的发布会,今天他就已离去,总觉得突然。大家都觉得可惜,天妨英才。
他已然是一个伟大的人,令我们生活更加美好。于已得名,于民得利。

然而又不禁令我想到,当今天朝某些人,明明有机会,却要扬恶名,在阻碍人类进步的步伐。两种境界,孰轻孰重,一目了然。
正是有些人死了,却活在大家的心里,有些人活着,却尸位素餐。
乔帮主,真正脱离了低级趣味的人。

白发魔女传

| Comments

今天看了93版的《白发魔女传》电影,林青霞和张国荣主演的。可惜在youku上的版本把他们定情的部分给删除了,这部分很关键也很精华,不交待难以对以后的剧情起到转承的作用。但整故事来说,讲的是情侣间的信任。
定完情,练就跑去脱离魔教,受尽折磨。去到武当找到卓一航,面对的却是质问,质问她是不是带人干掉武当的人。我为了你放弃了一切,你却不相信我。练的心情可想而知,然而她还是给了他一个机会,没有解释,直接叫他跟她走。想想练孤僻自傲的性格,又怎么会随便解释呢,彪悍的人生从来不需要解释嘛。这个不解释,最终不就造成了悲剧嘛。
但仅仅是因为不解释吗?其实在第二部中已经借陈圆圆的口说出了答案,像你这样性格的人,跟谁在一起都没有好结果。这当然不是,其实像练这种牛B性格的人大有人在。比如黄药师就是一个。郭靖等人误会黄药师杀死他师傅,全真七子误会他杀死周伯通时,他都是不解释,甚至直接认了,你说是就是了,多牛B啊。但也只有黄蓉知道他老爹没干这事。也就是说,只有了解这个性格的聪明人才能和这种人相处。黄药师的老婆也绝对是个聪明人,要不是难产死,他们也绝对会很和睦的。但是像练这样碰上了卓一航这样的,不就成就悲剧了嘛。孤僻自傲也绝对是有完美倾向的,像你不相信我这种事情,绝对是世界观级的打击崩溃。因此练也一夜白发,成就魔女。
信任很重要,解释没用。因为对信任的人,不需要解释,对不信任的人,解释就是掩饰。当然这只是对牛人。这种牛人很极端,付出总是不顾一切的。一旦把你列入信任链,则永久信任。因此这类人设密钥的话,从不设期限,永远有效。而普通人来说,信任是逐步进级的。一开始只设定信任你60%之类,然后通过时间考查,加深信任程度。卓一航就是这类普通人,虽然已定情发誓,但别人一提出质疑,就动摇了。然后通过质问,希望得到解释,通过他内心的信任考查。那么是不是因为这段感情来得太突然,信任链建立没多久的原因呢。也有一点点,但是普通人的信任链是到死也不会满的。因为普通人知道人性其实是不稳定的。这也是对人性把握不住的一种原因。当有一群人对你说与你生活了一辈子的某某竟然干了xx事,你会感到惊愕的,你会质疑,难道她真的干了?你会这样想,是因为你对她的信任链不是百分百的。你对他的性格把握不是百分百的。而重要的是提示了一个真理,不同人的信任是可以叠加的。虽然几个不熟的人,你对他们的信任设定不超过百分之五十。但只要他们众口一词,加起来的话,其实是比你对xx一个人的信任值的。
然后,不解释的人其实也不喜欢听别人解释。所以卓一航才知道再跑去找她也没用,只有用行动去打动她,跑到山上十年守着一朵花。他们也知道白不白发不是问题,问题是没有台阶化解这个误会。
正如今天在网上看到的一句话,表白正是索取的开始。是真的很对啊,你表白,只不过期望对方以同样的热情回报。像我爱你不关你的事那种,叫暗恋啊。一旦对对方有所期待,失落即开始。

Objective-C学习笔记1

| Comments

內存管理

正如new要和delete配對。
每個alloc/retain 都要對應release或autorelease,如果一個指針的創建沒有見到alloc,而是以其它initwithxxx方法創建的,說明它內建了autorelease,因此不必去管它。

在setter中,copy和retain的區別,retain是保持原對象引用計數加1,屬于指針復制,內容和地址都一樣。copy則是新建了一個對象,然後引用計數加1,傳進來的對象的引用計數不變,屬于內容復制,但注意,是潛拷貝。
assin則只是C語言級別的指針拷貝,并不引起引用計數的變化,用于默認的類型或(函數指針delegate ?)

NSString 用copy, delegate 用assign, 非objc数据类型(int,float)用assign, 其它类型(NSArray,NSDate)用 retain

noatomic 不保証setter/getter的原子操作,在多線程下會出問題,所以多線程裏要用atomic,它相當于加了鎖的,所以不需要多線程的情況下用noatomic,速度會快。

drain和release的區別
drain是在有垃圾回收機制的環境中引發垃圾回收,release則沒有。

synthesize只是用来给property属性同步生成getter/setter的语法关键字

IBOutlet/IBAction 的唯一作用就是告訴Interface
Builder,此實例變量將被連接到bib中的對象。不關編譯器的事,打開IB時,它會在項目頭文件中掃描此關鍵字,然後根據這些變量將代碼連接到nib上。

Life Is Going On

| Comments

回来一个多月,偶尔无聊一下,偶尔也发奋一下,但是也太宅了,只出过一次省城。找同学叙下旧,结果两个同学都因故未能见着。呆在家里上网。早上睡到十点多,晚上又折腾到两点才睡。好不逍遥自在。

中秋那晚上,上天台仰望了一下星空。月亮挺大,挺圆。忽然想买个天文望远镜把玩一下。满足一下好奇心,物质心,小清心。月饼还是吃了,现在还留着好几个哩。但大多数月饼已经不是圆的了。

然后又发生了一件坏事,令我们一家人都很伤心。每当这时候,无力感就会侵袭,然后,『幂幂中注定』这个词就会联想起来。也正当我沉浸在这当中之时,另一件事推动了我,提示我生活还是得继续。

那就是工作了。两件事总结起来是『有心栽花花不发,无心插柳柳成荫』。但是花还是得种的,不过随缘吧。工作机会也是机缘之下遇见,然后与对方畅谈了两个小时,爽快合作。然而面临的是一个新的环境,新的内容,新的挑战。心里颇有些兴奋。但因为是创业公司,以后可得忙了啊。

Objective-C的hello World

| Comments

Objective-C 似乎是mac平台上的专用语言,起码在windows/linux下少见用它写的东西。
历史我也不熟,随便扯两句,老乔被赶出苹果后,又组了个公司叫NextStep, 专用Objective-C开发,后来老乔又重回苹果公司,于是买下了NextStep,然后风声水起地做起了mac osx, 再然后有了ipod, iphone,ipad,于是Objective-C也灸手可热了。

mac的机器也忒贵了。还好其实GCC是支持Objective-C的,我们用linux平台来学习一下Objective-C也是可以的。先来个hello world吧,世界通例了。

#import 

int main(int argc,char *argv[])
{

printf(“hello Objective-C\n”);
return 0;
} 保存成hello.m文件。

呃,你是不是想说,坑爹哩,除了第一行,这完全是C嘛。呃,人家有亲戚关系嘛,Objective-C是C的超集。具体来说呢,就是以后再说,现在我只会这么点。好了,来编译吧。
等等,先把gcc的objective-c支持给装上。
在ArchLinux上是这样的

sudo pacman -S gnustep-core 
其它发行版各自找相关名字的软件包。
然后编译吧
gcc hello.m -lobjc 
好吧,等着一堆错吧
In file included from /usr/include/Foundation/NSClassDescription.h:30:0,
                 from /usr/include/Foundation/Foundation.h:50,
                 from a.m:19:
/usr/include/Foundation/NSException.h:42:2: error: #error The current setting for native-objc-exceptions does not match that of gnustep-base ... please correct this.

求助于万能的google,在一韓文博客上找到答案,。
正确的编译命令:

  gcc `gnustep-config --objc-flags`  hello.m -o hello -I /usr/include/GNUstep/ -L /usr/lib/GNUstep/ -lgnustep-base 
这个gnustep-config –objc-flags命令就像当年学gtk+时 pkg-config的命令一般,大家注意那个反斜杠了。其实上面那个源码没用到啥gnustep特别的库,所以直接用gnustep-config –objc-flags就能搞定了。

回头看看那个#import吧,用来代替#include的东西,据说还有#ifndef的功效。

hello world能运行了,第一步完成。

辛德勒的名单

| Comments

昨晚看了部旧片『辛德勒的名单』,长达三个小时。之前只闻其名未曾相识。纳粹的罪行当然是罄竹难书的。而在于当其时,遭遇如此人道主义灾难的,也有苦难的中国人民了。

所谓战争引发了人性的黑暗面吗?官兵面临手无寸铁的犹太平民,冷酷地对准其头部射击,甚至以此为乐。能执行如此种族清洗的政策,皆接受了对方不是人的概念的洗脑。如德意志民族是最伟大的民族,大和民族是最伟大的民族等,其它余等都低级,肮脏,如同苍蝇一般,接受了如此洗脑,自然不把杀戮当成杀戮。正如电影里说的,那军官一日在街上看见一路过的女人,便射杀了她,并不是因为喜欢她,或者讨厌她,而是那女人对于此纳粹军官来说,毫无意义,就像捏死地上的一只蚂蚁一般。人类放弃理性,轻贱生命于此。

知其原因,还得知其源头。很明显,极权主义。一人独裁,偏执而全民族陷入疯狂。德意志民族疯狂,犹太人遭殃,日本民族疯狂,中国人遭殃,但是,中国人疯狂,遭殃的还是中国人…

而谈到极权主义,让我想的是另一部电影『浪潮』,此电影将极权主义的深化刻画得入目三分。而中国人大概最深有体会了。首先宣扬奉献的美德,宣扬集体荣誉感。然后加强集体认知,统一集体标识。比如统一规划的服饰,小标志,名称或动作等。似曾相识没,一上学就统一了校服,每个星期班主任是不是都在讲集体荣誉感呢。并且配发红领巾,并以红领巾为荣呢。统一的动作,叫一声起立,全般直刷刷地站起来,坐下则直刷刷地坐下去。然后是消除异见,统一认识。在上小学时是不是你一旦不是红领巾就是落后的典型了呢,就受到了不一样的待遇呢。(当然小学一率给上了红领巾的了,我只有在共青团的时候才遭遇到这些不一样的)。然后大家起立,你却仍坐着的话,绝对是不遵守纪律要受处分的吧。然后整个学期你只能任老师摆布了吧。

极权主义首先通过剥夺你的行动能力,再剥夺你的思考能力。又或者一遍又一遍地贯输,催眠。最终目的就是剥夺理性。

俺再回来谈谈屠杀这回事。其实这是中国人民最不陌生的事儿了。所谓夷三族,诛九族,都是明文规定好的屠杀令。明永乐还创造了诛十族的记录。五胡乱华时期,及其后杀胡令,都是种族相残。明末大乱斗时期,张献忠屠川,满清的扬州十日,嘉定三屠。甚至到了民国时期,某革命党起义,以红巾为记,不戴红巾者杀之,剿匪则屠披红之人,试问夹缝期间,何以为生啊。如此种种,皆视民为草介,弃之如无物,和纳粹等罪行又何异乎。

然而时到今日,我们是否已获取作为一个人的尊重呢。

一个软件的诞生

| Comments

一月份买了htc desire之后就在折腾,发现Linux下管理Android的程序不多,几乎只有QtAdb,没有windows下同类程序的丰富性。当然这也无法比较,毕竟个人开发者比不上企业团队操作,精力及资源都力所不及。但是三月份的时候还是想写一个gtk版本的,自己用用也 好。不过因为种种一直搁置了,懒散了。

直到前些天才有时间真正码起代码。临码之前匆忙看完了vala教程。有些api还找着,直接用上了C代码,于是一份vala源码加一份C源码合成了第一个demo。在获取了第一个手机状态之后,终于有恒心做起来了。

事实上这个管理软件不过是Adb命令行的界面,一切都调用adb来实现管理android功能。所以没有啥么技术难题可言。但真正要做好,却是细节问题。获取各种数据的界面表现,执行命令的回馈等等,所谓成败都在细节之中。这得需要时间精雕细踱,不是一日之功可毕。

但是这些做好之后也只不过另一个QtAdb,无法像豌豆荚,91助手这些软件一样能方便搜索软件源。因为它们都有商业合作的软件源。除非我自己实现一个软件源,或者找合作,或者把google market给加上去。音乐和书籍也一样。这大概需要商业化运作才行。

如果能做好这些也不过是Linux版本的豌豆荚吧,当然还是要实现一些特色的管理功能的。比如更改hosts文件,设置软件安装目录等。或者更多能想到的功能。这需要root权限。如果可能,能实现刷机更好了。

不过重要的一个问题是兼容性,android的版本众多,机器也千奇百怪。光是对主流的机器的支持也是一大问题,不同的分辨率导致不同的截图命令,有些定制的机器的命令输出也不一样,关键是个人开发者不可能有机会测试各种机器。不过也可以通过开源用户的反馈进行修改。但这时限则会拉得比较长了。

呃,说了这么久,你有东西出来没有啊,呃,可以说,还是有那么一点点东西的。只能看,不能用。

取名字方面我缺少创意,只能暂时叫叫gmtune,虽然这次不再用gtkmm写界面了,但我喜欢上gm这个前缀了…

界面布局方面,我也更缺少创意了,只能照着豌豆荚的外形先抄一遍,以后再改。目前已完成基本状态的读取,apk软件的读取,设置hosts,但基本只在htc desire /android 2.3 上测试过。

啥时候能出个成品,那只有天知道了,you know,我一向是坑王。挖坑容易深挖难。

大概我只享受写的过程…

得了部电信定制机

| Comments

前些日子装了宽带,发现中国电信真的很黑啊。垄断制度下根本无从选择,想说省点钱,选个低流量的套餐吧,回答说没有。512k的?没有,1m的?没有,2M的,没有。只有一个四M的套餐可选。完全不理会你是用流量来看一点点新闻啊,还是下载movie。

四M流量也不错。那就选它吧。结果营业员跟我讲起了天翼3G啥么啥的,我没听错吧,我是办宽带,不是选手机。结果她还是拿了个单让我挑手机。没错,俺这套餐超值,装宽带,送手机,只要用了这个套餐,4M宽带只需要79元每月,加上手机也一共169元每月,预装多一台手机将有更多优惠。我说,不用了,我手机够多了,平时也不打电话,我只要宽带得了。回答说,那就没有,现在只有这个套餐。原来给我的选择就是装还是不装啊…

为了上网我容易嘛,于是选择装吧。原来那手机,啥么3G的,每月只送160M(好像是这个数)流量,360分钟。花了将近一百元,才送那么点流量,就想让人玩3G? 开玩笑吧。算了,我也没打算用。

选手机阶段,其实也没怎么选,因为只有一款机了。旁边一个大叔则在那纠结, 我不用触屏的,有没有带键盘的啊。回答当然是没有啦。

交费吧,先预交800,分24个月返还,也就是说这手机套餐都供两年… 一旦停了,宽带套餐也打水漂了。

果然是不错的捆绑销售策略。你们电信就是这么来推广3G啊。

送的那个手机是酷派的E239,说真的,之前真没听过。拿回来之后 ,我用手指摸了半天,反应迟钝得很,我一个劲地骂,山寨就是山寨。后来才发现,这机是电阻屏的,得用戳的…

虽然也是android 2.1系统,但定制得蛋疼。我知道酷派你们定制的界面很酷,但我实在不喜欢你们那种style啰。一堆定制app,谁都知道是流量陷阱啦。

还好装了个z4root,安全获取root权限,再装一个RE管理器,把不认识的app全删除掉,整个世界清静了。

然而这手机在Linux下的ADB完全连不上,usb的udev规则怎么改都无效。不过还是有一招破解掉你的,就是利用adb wifi连接,手机上装一个adbwifiless,然后就可以在Linux下用adb的wifi连接模式连接上去了。如此可以开始各种折腾了。