All Stories

纠结的wxWidgets…和其它…

  突然想再整一下wxMac,之前曾经编译过,也编译出静态链接和动态链接的库了,记得也生成samples的可执行文件了,今天找了一下,那些samples的可执行文件找不到了,随便敲了下make,发现连头文件都没有找到,应该是wx-config没正确执行。然后好奇看了一下readme,赫然发现wxWidgets/Mac doesn't come with any guarantee whatsoever. It might crash your harddisk or destroy your monitor. 这个太夸张啦,不敢用啦,甚至开始觉得是不是以后别的用wxMac开发的程序也要先检测一下然后不用了呢!那个杯具的CodeLite和Code::Blocks都是用wxMac的呢!反正我是不想再用了。   下午尝试给CodingStudio加入命令行打开文件的功能,可是怎么整都是搞得程序启动就崩溃,郁闷了!   于是很有些后悔当初采用了wxWidgets,而不是Qt。但是想想以当时的情况,确实再来一次,很可能还是不会用Qt。当初对Qt很是不满意它对所有控件都是自绘,而不是native的,而且觉得Qt需要moc一下很无语。最关键的是当时参考了大量CodeLite和Code::Blocks的源代码,没办法啊,对于一个新接触的GUI framework,这是最直接有效的办法了!   哦,对了,今天的消息,国人得到Nobel Peace Prize了,具体情况,咳咳,不明真相的童鞋,需要当一回红杏。

Twitter客户端大赏之Saezuri

Saezuri是个UI设计得很精致的Twitter客户端,作者是个日本人,基于Adobe AIR开发。   Saezuri支持多账号,但添加账号的方式稍显繁琐,一方面需要Saezuri本身可以访问twitter.com,另一方面还需要浏览器可以访问twitter,以获取一个PIN号,将该PIN号填入Saezuri中才能使用该账号。而像Seesmic Desktop、Echofon for Mac、TweetDeck等都只要在客户端内填入用户名和密码就可以搞定。   Saezuri使用单列显示方式,跟Echofon类似,不过Saezuri在浏览用户profile和对话时,只是切换当前窗口内容,不像Echofon会在旁边弹出个小窗口。   比较不好的是,貌似Saezuri没有快捷键支持各种常见操作,全都通过快捷按钮完成。而且每次RT都需要用户选择是官方RT还是编辑后再发布,这点不太好,而且有个小问题是,如果用户设置了protected,就两种方式的RT都不可以了,而Echofon则只是屏蔽掉官方RT,在非官方RT时会弹出消息框提示该用户设置了tweet保护。个人感觉Echofon的实现更合适一点。   目前Saezuri还不支持Streaming API,可以设置每次新发推后自动刷新Timeline,在这点看来,这体验果然不如Echofon好,不过对于没用过实时更新的用户来说,其实并不太在意这个。   最后说一下,Saezuri是完全免费的,没有Echofon那样的广告,对Twitter功能的实现比较完整,如果它可以使用Streaming API,再加上那些操作快捷键,就比较完美了!

Twitter客户端大赏之TweetDeck

  从TweetStats的每日统计可以看出,TweetDeck是除官方web外使用最多的客户端,对,没有之一。   与众多第三方客户端一样,TweetDeck也是基于Adobe AIR开发,不过说实话它并不像其他各种使用AIR开发的客户端那种拥有炫目的UI,甚至说,它在UI方面实在有点儿土。TweetDeck使用多列显示的UI,可以自定义在主界面顶部或底部出现输入框,而且会自动隐藏输入框,这点是比较赞的。而且TweetDeck不但支持Twitter服务,还支持MySpace等其他的SNS。而且TweetDeck可以为每个账号单独设置API,这点对于广大中国大陆用户来说非常有用。另外,最新的0.35.1版本已经支持Streaming API,可以在主界面底部的列按钮上弹出的tooltip可以看出当前是否使用了real time更新。TweetDeck在RT的时候可以让用户选择是使用官方retweet,还是编辑后再发布,这点设计感觉不太好,应该参考Echofon for Mac的做法,将这两个功能分开到不同的入口。TweetDeck也有自动缩短网址和恢复网址功能,以及图片上传功能。   TweetDeck最不好的一点是对中文的支持不好,在设置中选择使用国际化字体后,消息中的中文是可以正常显示的,不过像消息来源,以及查看用户profile的bio上的中文,全都显示不出来。   其次TweetDeck在主界面上安排了太多不常用元素,数一下总共有5行空间用于放置各种按钮,而这些按钮在大多数时候基本上是用不到的,这样的UI设计大大减小了正常的浏览空间。   再次,TweetDeck在添加列时,响应极其慢,点击需要新添加的列后,基本上没反应,要过不知道几分钟才会突然在主界面上显示出来,这很容易让用户误解,以为不能添加上。   最后,TweetDeck的各种操作缺少快捷键,这方面也要学习一下Echofon for Mac,它的快捷键就设计得比较方便。   总的说来,TweetDeck还是个不错的客户端,尤其是目前Streaming API似乎没有被墙,可以不设API直接使用。

Qt Quick来啦

  Qt4.7.0发布有几天了,这个版本较4.6.x来说,最大的改动莫过于增加了Qt Quick。   Qt Quick是一套解决方案的统称,它包括一个称为declarative的framework,跟animation、state machine之类层次的东西,包括一个称为QML的声明式语言,还包括Qt Creator中辅助设计和编码的那部分。   开发人员可以通过名为QtDeclarative的C++模块,在自己的Qt程序中装入QML文件,并与之交互。QML语言通过一组丰富的QML元素,构建一棵对象树,以此来实现高度动态的可自定义的UI,它支持并实现了Qt的甚于QObject的类型系统,提供自动属性绑定,而且在语言层面实现了网络透明化。   之前一年多,我在wxWidgets程序中嵌入了Lua,并用wxLua在脚本中实现UI。相当于说,我在这方面自造了一个相当笨重且不好用的轮子。如今看来,Qt在脚本实现动态UI上的表现,就是我这几年来一直期望拥有的。不过QML并不能完全代替Qt原本的基于QWidget的UI方案,QML适用于创建大量简单的动态的UI,而QWidget则适用于创建复杂的静态UI。   从Qt4.7.0附带的几个declarative的demo看,UI效果挺炫的,在当今越来越注重外观,又越来越对开发效率有更高要求的大潮下,实在是个值得一用的方案。   我在Windows XP和Mac OS X 10.6上都试用了一下,感觉不错,至少demo中暂时没有发现什么严重问题。值得说一下的是,原来我在Mac OS X中安装的是Qt SDK,32位已经编译版本,发现有一部分demo运行并不正常,后来覆盖安装了64位已经编译的Qt libraries,发现那些原本不正常的demo全都正常了,真囧。不过就我看来,既然苹果官方都强烈建议开发64位程序,那就用64位的好了。

我对SNS客户端的想法

  在前些天的Nokia World2010中,Twitter的业务开发副总Kevin Thau明确表示,Twitter不是一个社交网络(SNS),而是新闻,是内容,是信息!大言不惭地说,这也是我最近刚刚领悟到的一点。   从半年前,就一直想着自己写一个Twitter客户端,但是不得不说,现在已经有非常多优秀的Twitter客户端了,从共享到免费都有,覆盖了各种平台,那如果我自己要写客户端的话,有什么特色值得用户们抛弃现有的那些客户端来转投这里呢。在这大半年的时间里,我根据自己对SNS的认识,以及自己需求,不断调整心目中的客户端的特性需求,到现在才在心中有一个相对比较固定的框架、模型。   为什么FlipBoard会受到如此热烈的追捧,这就说明对于很大一部分人来说,使用Facebook和Twitter主要并不是为了与人交互和玩游戏,而是为了获取信息,而FlipBoard这种经过整理,同时又有美观排版的方式,很能迎合那些主要为了从网络获取信息的用户的需求。   处于Twitter中文圈中,比较容易忽视的一点是,将Twitter当成一个公共聊天室。当然这也是很大一部分人使用Twitter的目的,传统的网络聊天室的没落,使得用户们不得不将这种需求搬到其他形式的网络服务中,可以看到在各种BBS、论坛、IM群等等都有这种版聊的现象,所以在Twitter中存在这种现象也是正常而且合理的。只不过,从服务提供商的角度讲,应该可以从服务器端,甚至客户端提供这样的信息过滤、隔离的功能,用户可以方便地在两种应用模式间来回切换,想版聊就版聊,想读新闻就读新闻。除了FlipBoard,http://paper.li/也提供了类似的服务,但它目前只能说,这种模式还不错,各种细节方面还很不够。   再扯远一点说,现在很多人应该喜欢使用Google Reader这个服务,但说实话,Google Reader这个界面仍然有很大的改进空间。之前网上一直有人在号召大家使用RSS全文输出,但全文输出后有一个很大的问题是,在Google Reader中如果是全部展开的阅读方式,花费很多时间在拖动滚动条过滤无兴趣的条目上,实际上对于订阅了大量内容的人来说,很多内容只要一眼看到标题,或者其中的某张插图,就没必要看正文了,那现在Google Reader这种阅读方式就显得很落后了。而有一家第三方的Google Reader同步服务在这方面做了不少努力和改进,那就是Feedly。Feedly自己也提供经过分类的新闻内容,但对Google Reader中文用户来说,更有价值的是它的同步Google Reader的功能,可以提取出条目的标题和插图以及正文摘要,并以一定的热度排版,并连接了几家最流行的SNS服务,可以及时分享自己的条目,自从用了Feedly后,我几乎就不用Google Reader的官方界面了(喂喂,你是他们的托儿啊)。   再说回Twitter客户端,目前现在的客户端,基本上都是简单地通过Twitter API将Twitter的Tweet功能从Web搬到桌面或手机端等,几乎没有做更多的需求挖掘。简单地看过几十个完成度较高的Twitter客户端,目前只看到Seesmic Look收集了几组全球知名媒体的账号,但也仅仅是收集,没有更多的特性拓展。现在Twitter推出了新版界面,可以说是诠释了Twitter自己的发展理念,引领了客户端发展的方向──它提供的是新闻,是内容,是信息!   最后可以得出,我想要的客户端,是融合了FlipBoard、http://paper.li/和Feedly几者特色的客户端。它一方面可以向用户提供类似传统书报媒体提供给用户的视觉感观享受,另一方面则是结合网络、计算机的优势,提供大容量、快捷的信息分享功能。所以它不应该只像FlipBoard、http://paper.li/和Feedly它们一样只有一两家内容提供商,它应该是彻底开放的,允许其他内容提供商以固定的接口接入并提供特有的信息。而且它应该有一定的信息自动分类和索引能力,过滤重复或无价值信息,减少用户浪费的时间。

Twitter客户端大赏之Tweetie

Tweetie for Mac是个在Mac系统上比较流行的Twitter客户端。   首先,它是个原生的Mac应用程序,而且轻便小巧。但绝大多数的Twitter该有的功能,还是有的。不过要提最重要的一点是,它目前貌似不支持List,这是一大遗憾。很多Twitter用户是比较重视并依赖List功能来组织自己感兴趣的推友的,客户端不提供支持,则很容易让用户放弃这个客户端,转头寻找其他合适的产品。虽然有这个大缺憾,似乎用它的人还是挺多的,确实其他的功能还是做得很赞的,也支持几种常见图床和URL缩短服务。它支持多账号,但不能自定义API,也不能设置代理,仍是那句话,Mac系统补上了这个缺点。它也不能让用户自定义刷新间隔,而且目前仍然使用着OAuth API,不过想来随着将来Streaming API的使用,这个问题也将不复存在。   其次,它界面美观,清爽。使用类似Echofon的单列显示界面。界面切换时,有动画效果,虽然并没有实用价值,却仍能让人觉得炫目。就我觉得,这应该也算是Mac风格,或者说iOS风格的界面吧。   最后,它是个共享软件,也有免费版,据说是加入了广告,实际上我用了也没发现哪里有广告,所以尽管它的功能足够简单,但也大致够用,要是它能支持list,并使用Streaming API,我肯定毫不犹豫地放弃Echofon,转投Tweetie门下。

Twitter客户端大赏之Seesmic Desktop2

  Seesmic是个盛产Twitter客户端的vendor,不但有PC桌面用的客户端,还有for iPhone和for Android的版本。光是PC桌面客户端,也有好几个不同的产品,有使用WPF开发的Seesmic Look,有基于AIR开发的Twhirl和Seesmic Desktop,还有使用Silverlight开发的Seesmic Desktop2。   Seesmic Desktop2最近出了新版本,原本它是只支持Windows系统的,在新版本中同时又支持Mac系统了。它与Seesmic Desktop一样,采用插件的架构,各种SNS服务都由一个插件实现,在安装的时候会自动联网下载几个常用的SNS服务的插件,包括Facebook和Twitter。Seesmic Desktop2与Echofon可算是SNS桌面客户端的两类典型代表,前者是走的整合路线,一个客户端内提供多种SNS服务的支持,一个客户端内可以完成所有事务,后者走的是精简路线,一个客户端只做好一种服务的支持,现在也不能说出哪种是更好的方式,各有优缺点吧。   Seesmic Desktop2的最新版也支持Twitter的Streaming API,不过经过我的试用发现,墙内用户需要在启动程序前先开启VPN,这样Seesmic Desktop2就会自动使用Streaming API,然后即使断开VPN也没有影响。如果一开始就没有翻墙,就会使用目前主流使用的OAuth API。Seesmic Desktop2与Echofon一样,程序本身既不提供自定义API功能,也不能设置代理服务器,也许它们从来不知道还存在我们这样的用户吧。Seesmic Desktop2的界面与TweetDeck类似,采用多列显示的方式,但总的说来,Seesmic Desktop2的界面更漂亮些,而且少一些没多少用处的界面元素,不过左侧有个侧边栏比较占用屏幕空间。Seesmic Desktop2提供很少的可配置项,不知道是不是作者认为默认的设置已经足够满足绝大多数用户的需求了。Seesmic Desktop2会在消息条目中直接显示几个常见图床上的图,这个功能还是比较赞的,很多客户端需虽然也本身提供图片预览功能,但需要用户点击链接后才会显示,就我个人感觉,这种不会明显影响用户读取消息的过程,应该程序可以帮助用户完成,当然如果能提供一个开关选项让用户自行选择就最好了。   Seesmic Desktop2也有一些小缺点,它的右键菜单弹出延迟很明显,有时候头像上方显示快捷按钮后不能自动恢复。最后是我一向比较反感的,非原生的应用程序,不但占用资源多,运行速度也慢。   最多不得不说,Seesmic Desktop2是很值得一用的客户端,多列显示的方式可以让用户一眼看到所有相关的消息,支持Streaming API又提升了用户体验,推荐使用。

Twitter客户端大赏之Echofon

  想写这么个系列的文章,以介绍一下现有的各种Twitter客户端,已经有一段时间了,却一直没开始写,一方面是自己懒,另一方面则是真没有觉得有某个客户端的特性已经达到让我觉得不写不快的地步。不过自从用了Echofon for Mac后,我觉得很有想写一下的冲动。   Echofon有好几个版本,我刚开始上推的时候曾经用过几天它作为Firefox扩展的版本。由于寄生在Firefox上,所以貌似是可以通过Firefox的代理走的,又因为那时我是用Tor来翻墙的,速度那个慢啊,因此体验并不怎么好,而且为了单纯地上推不得不开一个庞大的Firefox(我装了二十几个扩展,很占内存),感觉并不是很好。之后有了其他的客户端,就再也没用过了,直到最近比较多地用Mac系统,试了几个for Mac的客户端后,发现了Echofon for Mac,一用就爱不释手了。   Mac桌面版的Echofon是个共享软件,如果不注册,则在Timeline页顶端会有一小块广告条,而且有时候在程序启动时会弹出对话框询问你是否注册,总的说来并不影响正常使用。Echofon在界面和操作上,都做得比较细致,而最吸引我的,主要是它已经直接Streaming API,可以实时更新Timeline和Replies等等。Streaming API目前还处于测试阶段,Twitter官方的消息目前只有Echofon和TweetDeck实现了,经过试用,感觉非常好。   除此之外,Echofon有丰富的菜单项,当然大部分常用操作也可以通过快捷键实现,另外还支持多个账号,不过它是单列单账号的显示方式,所以要自己手动切换当前活动账号。从界面上看,Echofon是个比较正统的Mac程序,如果想要原班移植到Windows上,可能反而不伦不类。   最后要说的是,Echofon自身不支持API,不支持代理,不过好在Mac系统可以比较方便地用全局代理,所以问题不大。

好用的Mac五笔输入法

  看到推友@davidx_me说有个叫WBIM的for Mac的五笔输入法,马上去下载了来试用一番。之前一直用系统自带的那个五笔型输入法,相当不好用,不但字符小,应该是GB2312的吧,而且连候选提示都没有,其他的常用选项更不用说了。试用了WBIM后,就爱不释手了,虽然跟小鸭、极点神马的在可配置选项上有所差距,但总体来说,已经可以说是鸟枪换炮了。   它有着大部分常用的输入需求的选项,比如繁简切换、中英文标点、全角半角、空格,还可以自定义翻页的快捷键,可以自定义用户词库,比较遗憾的是貌似不能自定义选择候选的第二三项的快捷键,不过好在五笔输入绝大多数是选择第一项的,所以也可以忍受。   再有一个还算满意的是上屏速度不慢,虽然偶尔还是有点呆滞,不过也在可以忍受的范围内。   最后要说一下,这个软件目前貌似是免费的,这对于混迹于人傻钱又多的Mac用户群中偶尔几个穷人来说,实在是个福音。