跑步与音乐

常去跑步,在使用Nokia Sports Tracker之后也顺便开始听歌,跑步时听音乐是个蛮二分的选择,好处是可以放松,并提高耐力,缺点是如果在马路上跑,声音不能开大,否则不太安全。

所听的音乐也蛮有讲究,跑步是个讲究节奏的运动,适合的音乐能和步法、呼吸配合,让我跑的更轻松,不合适的,绝对会打乱节奏。我不断尝试一些不同的歌,来找适合于跑步时听的,我的第一发现汪峰的一首好听的歌 –《我们的梦》

《我们的梦》是08奥运歌曲,4/4拍的节奏,每分钟80拍,这个节奏对于一般速度的跑步非常合适(如果你也跑步,试试就知道80拍的感觉了,每一拍跑两步,让一只脚总是踩在拍点上),跑起来强度不大,且这首歌也很好听,很适合运动时听。

慢慢的,我希望能跑快一些,于是开始找一些节奏稍快一些的曲子,不过这种寻找是蛮漫长的,每首歌都要自己试过才知道,在多次练习之后,我开始用更理性的方法。

找一个节拍器,在我喜欢的歌里,用节拍器来测一下节奏,测算节奏其实很容易,放歌的同时,开着节拍器,不断调节节拍器的速度,抓到节拍之后就是这首歌的节奏了,下面是我的发现,并按难度记录下来,速度越快越难(最近喜欢汪峰,所以以他的歌为例):

  • 汪峰 《我们的梦》: 每分钟80拍的节奏非常适合慢跑,强烈推荐。
  • 汪峰 《怒放的生命》: 每分钟87拍,87拍比80拍要快一些,适合于较快的速度跑步。
  • 汪峰 《勇敢的心》: 每分钟92拍,对于我,超过90拍就很难了。
  • 汪峰 《英雄》: 108拍
  • 汪峰 《绽放》/《我爱你中国》/《在雨中》:130拍
  • 汪峰 《光明》: 135拍,这个可能更适合短跑吧 ;)

喜欢跑步的话,挑战下自己吧。。。

Nokia C5

最近换了手机,依然是被很多人认为已经dead的Symbian,曾想过选择Android,不过高昂的价格和Android有些混乱的版本,让我留在了诺基亚阵营,另外从N73到C5,几乎没有任何需要适应的地方,几乎同样的键盘,同样的屏幕(分辨率都320×240),同样的Symbian版本,我只花了两天时间就把C5武装成我需要的样子了,留下这篇介绍一下这部智能手机。

 

硬件部分

C5官方网站上已经列的很清楚,我再留下一些重点以及和我之前N73的对比:

  • CPU: ARM11 600M ,性能不错,起码比N73(ARM9 220M)好多了。
  • RAM:128M ,N73是64M
  • 屏幕:320×240 和N73一样,只是C5是我不喜欢的镜面屏,这一点还不如之前的N73
  • 待机:官网上对GSM网络的理论值是26天,太夸张了,不过是还不错,电话不多,大概可以3~6天。
  • GPS:C5内置了GPS以及免费的Ovi Maps,很棒,只需要用诺基亚Ovi套件将地图同步到手机上,就可以离线看地图和导航了。

除了这些,C5还有标准耳机插口、充电速度极快、数据线可充电等改进,这些都是相对之前N73的进步。

软件部分

留下我的软件供有同好之人参考,大部分是从我的N73继承过来:

  • Google Maps 我有专门写一篇介绍这4个Google软件。
  • Google Gmail
  • Google Search
  • Google Sync
  • Nokia Sports Tracker  我已经专门写了一篇介绍这个。
  • Nokia Photo Browser 我也有一篇专门介绍这个软件。
  • Handy Clock
  • Opera Mini 5
  • PixelPipe 用于自动上传拍下的照片
  • 天气通 在几个天气预报软件中,留下了这款.
  • Fring 偶尔用这个上一下MSN/Skype

上面这些都是Symbian本地或者J2ME应用,实际上Nokia已经开始支持一种新的WRT Widget应用,类似于桌面上Adobe的Air,就是一个Web runtime,可以将HTML/CSS/Javascript打包为一个应用,并且已经有一些还算不错的Widget可以安装了,暂时还是收集评比中 ;)

使用Tip

C5的软件版本是S60V3 FP2,相较N73小版本有升级,有不少细节的改善,也在这里留下一些使用上的提示:

  • 待机界面按数字键,除了输入号码外,同时也是在按字母快速过滤电话簿,这个功能很棒。
  • 锁屏下长按确认(上下左右中间的那个键),会显示黑底白字的时间。
  • 待机时长按*键,可以开启蓝牙。
  • 待机时长按#键,可以开启无声模式。
  • 应用程序下的搜索是个很不错又容易被忽视的工具,Symbian下的Desktop Search。

就这些了,总的说,性价比不错的手机,要是屏幕再好些就更棒了。

Google改变生活

很早就想写这么一篇,却因为Google的不断进步一直等到今天,如今,和手机相结合,Google已经很大的影响了我的工作和生活,留下这一篇博客以记录和表示感谢,下面的图也来自Google网站,因为我在用的手机是Nokia C5,所以也选择了都是Nokia的图片 ;)

Google Maps

毫无疑问,Google Maps是所有的智能手机上都应该安装的软件,你可以浏览地图或卫星图,查找生活信息,比如公交、餐饮、加油站、娱乐等,计算驾车和步行路线,如果有GPS,那么可以精确定位,没有GPS,也可以使用AGPS来定位,在最新版的Google Maps,你甚至可以通过语音来进行搜索,而且识别率相当不错,所有这一切在一个小小的免费的Google Maps手机客户端中全部集成,UI简洁易用,难以形容,我想如果只让我选一款最佳手机软件,我毫无疑问会选择Google Maps。

Google Maps的导航功能已经可以在Android下可用,如果这个也跨平台实现,Google Maps绝对可以算是一款瑞士军刀级别的软件。

Gmail

从黑莓的Push Mail开始,大部分新款的手机都加强了邮件方面的功能, Nokia的Mail for Exchange也是相当不错,不过,对于一个Gmail的使用者,Google的Gmail手机客户端要更好用一些。在阅读文本邮件方面,Gmail手机客户端体验不输PC,在手机客户端上,甚至可以方便的在多个Gmail帐号间切换。只是,受限于手机终端,如果你常需要处理一些图片邮件或者带附件的邮件,那么Gmail手机客户端可能会不太胜任。

从程序员的角度看,和Google Maps一个系统一个终端不一样,Gmail的手机客户端是一个跨平台J2ME应用程序(现在叫Java ME),让我对J2ME印象提升不少。

Google Sync

除了地图和邮件,还有一个不得不介绍的Google工具是Google Sync,它可以帮助你同步手机的通讯录和日历到Google,通讯录会同步到Gmail中,日历会同步到Google Calendar,注意是同步而不仅仅是备份。这就意味着你可以在手机或者PC上修改通讯录,修改会自动Merge到一起,你在Google Calendar中所有的日历事件也会同步到Nokia手机的日历中。

通过手机端Google Sync的设置,可以设置同步的周期,甚至可以实时同步,不过我试过后发现,一般是不需要这么实时的同步的,会导致手机耗电量和流量的增加,我的设置是每4个小时同步一次,工作的非常好。

Thanks for Google…

评价系统的实现

常遇到这样的网站,允许用户对某个产品做出评价,并根据用户的评价来对所有产品做一个排序,很显然这个排序不是一个简单的平均数排序,假想一个5分制评价的网站,对一个产品3个人评价,都是5分,另一个产品1000个人评价,平均4.9,是不是5分就比4.9的排名高呢?大部分情况下1000人评价的4.9分可能更好一些。

很早就有人研究这样的问题,所以,下面是两个理论模型/算法,贝叶斯算法和Wilson算法:

贝叶斯算法

这是一个很容易理解的算法,基于这样的原理,如果评价的人越少,那么这个评价就应该接近于系统中所有对象的平均评价,下面是这个算法的详细解释,这样的算法对于各种打分制都有效。

http://www.thebroth.com/blog/118/bayesian-rating

Wilson算法

这个算法历史悠久,在1927年就由Wilson给出,不过仅针对只有两个评价(up/down)的情况,下面的链接解释了这个算法,并给出了Ruby的实现,看起来有些复杂,我还没有机会用到它,所以也没有深入了解了。

http://www.evanmiller.org/how-not-to-sort-by-average-rating.html

~~~~~~~~分割线~~~~~~~~~~

再来看看现实的网站是如何解决这个问题的? 比如豆瓣CodeProjectSourceForgeIMDB,他们的解决方法各不相同,有些网站公开了自己的算法,有些却没有,下面是两个分析。

CodeProject

CodeProject上有对所有文章进行了排名,并公开了自己的排名算法,是这样的:

Rank = Rating * Log10(Votes)

Rating = 求和(Rating*weight)/求和(weight)

可以看出,这个算法在计算排名时,用了投票数取Log10,再乘以得分,这样就避免了3个5分比10000个4.9分排名高的情况,同时,CodeProject的得分,并不是平均分(上面Rating的计算公式),而是考虑根据每个会员的等级,乘以一个系数,也就是说越高级会员,评分的权重会越大。

看起来CodeProject的排名算法还比较简单,不过,这里的Log10和会员权重都是一些经验数据,并没有理论支撑,所以显得不是那么严谨。

IMDB

IMDB的Top 250电影可是鼎鼎有名,豆瓣也有,不过豆瓣的算法没有找到,只能看看IMDB的了。

weighted rating (WR) = (v ÷ (v+m)) × R + (m ÷ (v+m)) × C

* R = average for the movie (mean) = (Rating)
* v = number of votes for the movie = (votes)
* m = minimum votes required to be listed in the Top 250 (currently 1300)
* C = the mean vote across the whole report (currently 6.8)

IMDB的算法其实非常接近于贝叶斯算法,并且取得了相当“可信”的效果(IMDB的Top 250被N多网站引用),可见贝叶斯算法在现实中还是很有价值的。

Nokia Photo Browser

虽然只是Nokia Lab的一款Experimental软件,Nokia Photo Browser已经是我在S60平台上用过的最好的照片浏览软件了。

Nokia Photo Browser的主界面是非常类似Cooliris的3D图片墙,在iPhone和Android平台上,这种类似的浏览软件应该可以找到,不过在Symbian平台上,我却是第一次看到,很酷的浏览效果,如果是S60第五版触屏平台,相信效果应该比我的S60第三版要更好一些(第三版上只能用方向键来浏览照片)。

除了3D图片墙,Nokia Photo Browser的照片缩放效果也不错,第三版上按*和#就可以了,比内置的照片浏览软件要平滑的多,显得很iPhone。

最后一个相当Cool的特性是Face Browsing,Nokia Photo Browser可以自动将照片中的人脸部分缩放到满屏,方便更好的查看照片中人物的表情,我试了一下,大部分情况下不会错误识别人脸,但有时人的侧脸或者人脸很小的话不能识别到。

如果你有Nokia智能手机,推荐。

命令行工具-nircmdc

nircmdc : 最近在用的另一款命令行工具,仅仅30k,汇集了很多有意思的可以用命令行来做的事情,比如剪贴板操作、抓图、光驱弹出、显示器关闭等,显然这个工具是给geek们或者程序员写脚本用的,列一下nircmdc可以做的事情:

  • 控制音量
  • 抓图
  • 关闭显示
  • 屏幕保护激活、禁止
  • 控制光驱(弹出/弹入)
  • 重启、注销、挂起
  • 窗口操作
  • 快捷方式操作
  • 剪贴板操作

没什么需要特别介绍的,如果你需要的话,下载来用就好,很不错。

Nokia Sports Tracker

Update 2010-08-18: 这个服务已经脱离Nokia,独立运营了,现在的网站是http://www.sports-tracker.com/, 客户端也要从Ovi Store下载了,新版的界面很漂亮。

最近换了手机,仍然是Nokia,会分几篇介绍一些新手机方面的东西,先介绍这款软件:Nokia Sports Tracker,这是一款很酷的运动追踪软件,需要GPS支持,因为新手机内置了GPS,所以可以用上这款免费的软件,其实只要是内置了GPS的新款诺基亚手机都可以使用这个软件,各位读者也可以一试。

Nokia Sports Tracker可以在你做运动时实时记录你的位置、速度、高度,记录并帮助你分析每次运动的数据,然后这些数据会自动上传到网站上,可以和Google地图绑定在一起在线查看你的路线,瞬时速度等,给图一看:

nokia-sports-satellite

这是我的一次跑步的记录,显示在Google地图上,我打开的是卫星图,其实可以显示一般的地图,我不想让各位看官看到我的位置,所以才显示了卫星图,其中一些关键点被标识了,比如Fast是最快速度的地方,Slow是最慢速度的地方,Low和High则是最高和最低点位置(这在爬山时会很有用)。

上面有音乐小图标的标识是我换歌的位置,因为我在跑步的时候用诺基亚的播放器在听歌,这些信息也被记录了下来,并且鼠标点击可以看到当时所听的歌曲(可惜中文歌名乱码了)

如果只是这些信息,还显示不出这款软件的强大,旁边的另一张图:

nokia-sports-info

这是运动过程中瞬时速度/高度/心率的图示,心率需要额外的附件才能支持,但速度和高度信息已经缺省都有了,鼠标悬停在绿色曲线上的一点,就可以看到当时的值了,我的这个曲线嘛,不太好看,跑了两分钟就速度下来了。。。

所有的这些数据的收集和上传都是软件自动完成的,所以手机要开通GPRS或3G数据服务,数据流量不大,但还是建议包月比较好。当你长期坚持使用Nokia Sports Tracker来记录你的运动之后, 在网站上就可以看到累计的你的运动历史,可以从数据看出你的进步了。

nokia-sports-list

总结一下,你所需要的是:

  • 一款诺基亚智能手机,内置GPS
  • Nokia Sports Tracker软件和帐号
  • 长期运动的良好习惯

你得到的就是: 很酷的所有运动的历史数据和图表。

另:在Nokia Sports Tracker网站上,你还可以公开并分享你的运动数据,可以通过Google地图查找你周围的同样使用这款软件的人,浏览他们分享的运动数据。。。

PS2: 有用Android手机的看官可以试试My Tracks,有类似的功能且开源。

百佳软荐[8]-FastStone Capture[截图]

faststone-capture-ui

这是前段时间同事推荐的截图软件,用了一段之后确实比我之前用的都要好,收录在此。上面给的链接不是官网的链接,而是Portable的版本,很好,免安装,即点即用。

FastStone Capture的UI很简洁,很适合于截图这种工具的使用场合,多种方式的截图可以满足绝大多数情况的需求,截下来的图可以简单编辑或者直接进剪贴板或者直接存盘,自由选择,对各种图片格式也支持的很好。

在此之前,我用过MWSnap,也是很棒的一款免费截图工具。有时也会直接使用Windows或者QQ内置的截图工具。

Visual Studio 2008 Express

我曾经用Visual Studio 6很多年,给我留下了非常好的印象,以致我一直拒绝升级,我跳过了Visual Studio 2002, 跳过了Visual Studio 2003, 跳过了Visual Studio 2005,之前在PC上安装了Visual C++ 2008 Express(最新版本的Visual Studio已经到2010),但我已经不怎么用C/C++了,所以也没用,所以之前我的Visual Studio经验基本全部在Visual Studio 6。

不过对于安装好的Visual C++ 2008 Express,因为它的Free,我还是很有兴趣了解它到底能做什么,是个玩具还是一个真正的开发工具。

VS2008Express

微软官方当然有详细的对照表,参考这里,列出大大小小上百项差异,不过这个实在太细了,看了也会晕掉。

编译能力

我的测试方法很简单,自己试用,并去找一些开源软件,用VS2008 Express编译,看看成功率多高,我会挑选一些非跨平台,非Console的并且是基于C/C++的应用程序,因为跨平台的应用程序可能基于QT/Gtk/wxWidgets等,这些其实和Visual Studio的库关系不大,所以我估计Visual Studio是否Express版本关系不大,所以我忽略了它们,而基于Console/命令行的程序,我也相信Express版本的Visual Studio可以胜任,所以也忽略了它们。

剩下符合我条件的应用程序大概我选中了20款,通过了编译的只有两个软件:FrhedPutty,乍一看,挺让人失望,不过仔细来分析一下编译失败的原因:

  • 很多Windows开源软件使用了MFC,这在Visual Studio Express版本中不包括,自然无法编译。这没有什么好的方法,虽然我不喜欢MFC,但很多软件使用了MFC,这是一个仁者见仁,智者见智的问题了。
  • 一些Windows开源软件使用了WTL,在Visual Studio Express中不包括ATL,所以也无法编译通过,但我们可以通过安装Microsoft Platform SDK 2003来获得ATL,再配合免费的WTL,就可以编译一些WTL软件了。
  • 另外一些不能编译的软件,则是不同的原因,有些是库依赖做的不好,有些过度依赖某个版本的编译器或库,这些基本可以不归结到Express的问题。

扩展性

很不幸的是,从微软的文档我们看到,Express版本被去除了一些扩展相关的功能,这样带来的直接后果是,一些诸如版本控制的集成,还有一些效率插件,都无法在Express版本上使用了。

结论

这是我目前的结论(也许将来会修正):对于使用C++的Windows开发者,如果你希望使用MFC,那么VS2008 Express显然不适合,如果是一个团队进行开发的话,因为扩展性方面的问题,Express也不太适合(也许可以凑合),否则的话,Express还是一个不错的高性价比的选择。

最后,微软很”慷慨”(仅相对于过去的微软)的允许了使用Express来编译商业软件

Eclipse快捷键

一向认为Eclipse的UI复杂难用,在工程比较大的时候甚是,尤其曾经用过多年Source Insight,对Source Insight一些浏览功能情有独钟,苦心钻研Eclipse之下小有收获,分享之(3.3版本适用)。

Ctrl-Shift-R / Open Resouce

这个相当于Source Insight的文件窗口,可以快速通过名字来定位到要打开的工程文件,是让我大喜的功能。由于Java大部分类与文件同名,所以找类也很方便。

eclipse-open-resource

Ctrl-Shift-T / Open Type

这个相当于Source Insight的F7了,不过不能浏览函数让我有些不爽。

Ctrl-Shift-G / Search Refrence

这个相当于Source Insight的 Ctrl-/,可以在整个工程中搜索某个符号的引用,速度也很快,是很常用的一种搜索,如果要按字符串严格搜索,是Ctrl-Alt-G,不过就很慢了,所以大部分情况下应该用Ctrl-Shift-G

eclipse-search-refrence

上面几个是浏览代码相当有用的快捷操作,下面再奉送几个编辑代码用的快捷键

Ctrl-1

这个超级常用,Quick Fix,可以修复大把的编码上的小错误,甚至会故意犯错,用Ctrl-1来修复以减少输入。

Ctrl-2

这个也是在写代码时很常用的一个快捷键,大概是没Ctrl-1那么常用,所以就用Ctrl-2了。

eclipse-ctrl-2

这个Ctrl-2下面包括几个快捷操作,所以需要再按一个键来选择,其中Assign to field和Assign to local variable都是根据你写的 ”new ….” 来自动生成一个变量存储它。Rename则是比重构更方便的一个改名的方法。