Good good study, day day up

aleung的学习笔记, aleung的idea

去年写下关于 “I Love” audio player的想法,曾想过自己开发的,但我没有开发这方面软件的经验,要学习的东西太多了,也没有时间精力来做。前段时间xlla朋友给我留言,介绍iPod的智能播放列表,我一下子兴趣又上来了,上网再次搜索一番,这次真给我找到了好几款支持智能播放列表的播放器软件,有些功能跟我期望的已经差不多了。我以前就想,不可能没有人想到的:)

第一个是KDE环境下的Amarok,特点是支持智能评分,能根据收听的行为,例如skip到下首歌曲时已播放的百分比,来给歌曲评定分数,而且评分方式是脚本定制的。这跟我期望的功能1(歌曲的喜爱度必须是在播放过程中日积月累的更新)一样了。可是我没有Linux环境,无法试用这个软件。Amarok下个版本计划支持Windows,只能等待了。

第二个是musikCube,特点是使用嵌入式数据库SQLite来保存歌曲library,包括播放的统计数据,并且通过自定义的SQL查询where子句来生产动态列表,例如最近加入library的50首歌,听得最多的100首,最近一个月没有听过的歌等等,非常灵活。当然,完全不懂SQL语言的人就体会不到它的好处了。

musikCube是Visual C++开发的,open source。我把它的源代码下载来看,觉得代码挺好理解(比foobar2000好很多),做点小修改不难。于是我写了一个patch (基于musikCube 1.0 final),实现了智能评分的功能。musikCube的歌曲数据库没有score字段,我不想修改数据库结构,就利用了它的times played字段当成score。每当播放下一首歌的时候,检查前一首歌播放了多少,如果播放了90%以上,score +5,如果少于10%,score -2,少于30%,score -1。总是被skip的歌得分就会很低,利用动态列表挑选出分数高的歌曲,就是我喜欢的歌了。

虽然musikCube不支持profile,但是支持多个library,可以建立多个library,里面是同样的歌曲,但播放统计却是独立的,这样也能满足我的需求2 (在不同环境、不同心情下喜欢的音乐是不一样的,有了profile功能就可以独立累计喜爱度)了。

阅读全文 »

党和政府出于对广大网民的深切爱护, 于前段时间将大家喜爱的全球影响力最大的在线相册网站 flickr.com 列入了功夫网(GFW). 等待了半月有余, 未见有变化, 看来是被功夫网永久性收录了.

我等良民一向坚决支持拥护中央的英明决策,可是无奈我网上的所有照片、配文图表都存放在flickr中. 经过深刻的自我反省和严格的自我审查, 我确认我存放在flickr中的图片并没有反对宪法所确定的基本原则, 危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一, 损害国家荣誉和利益, 煽动民族仇恨、民族歧视,破坏民族团结, 破坏国家宗教政策,宣扬邪教和封建迷信, 散布谣言,扰乱社会秩序,破坏社会稳定, 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪, 侮辱或者诽谤他人,侵害他人合法权益.

为了让各位朋友可以正常浏览我的blog, 提供以下信息: 利用Access Flickr插件, 可以在FireFox浏览器中正常浏览flickr中的图片. 请勿使用此方法浏览其他flickr图片, 看者自负!

另外, 大家请认真学习中华人民共和国宪法, 做个知法, 懂法, 守法, 用法的好公民.

阅读全文 »

早上9点多钟,经过华景新城天桥看到一伙人在设赌局骗人,几个做势的人拿着一百块钱的票子踊跃下注。有个刚从市场买菜回来的阿婆似乎已经被吸引住了。

以往见到类似情况,最多是心里骂两句骗子,今天我想到了报警。我也想看看110的反应速度到底是怎样的。拿出手机拨打110,一拨就通了,但只是反反复复的播放录音:我们将尽快接通你的电话。一直等了70秒钟左右,听到”接警员忙,请稍后再拨”。失望。再拨打一次,依然是反复的播放录音。等了一分钟,我快要放弃的时候,终于接通了座席,询问了一些基本情况后,告诉我将通知民警。

我倒是很想看看是否真的会派警察过来,出警要等多久的,可是还要上班,不能浪费时间了。

几点感想:

  • 电话应答太慢,如果真是危急情况,事情就被耽误了。
  • 对于这种小case,不需要留下什么个人信息,她只问了我的姓,当然手机号码那边是能看到的。反正就是打个电话,遇到类似情况不妨都打打110。
  • 最终,接警员只是说会通知民警,没有说是否会马上有警察到现场处理,所以我对于后续的处理还是存疑的。
  • 接警员连一句谢谢之类的客套话也没有说。也许是觉得我麻烦了他们,应该是我说谢谢才对?我不是说觉得报个警有什么了不起,而是政府部门是否希望公民参与到公共事务之中,培养公民责任感,从这些小细节可见一斑。
阅读全文 »

在一份关于某产品的安全考虑的presentation中看到这么一段话:

Who will attack the system?

  • Script Kiddies
    Focus on DoS and simple attacks (“just for fun”)
  • Sophisticated/Dedicated outside attacker
    Well educated and spend much time in learning the system. Economical motives. DoS, Fraud etc.
  • Internal Attacker
    Knowledge about how the system is built. Dishonest or dissatisfied employees
  • Competitors and Governments
    Possible to get good knowledge of the system. Large funding. Main motive to get over secret info.
阅读全文 »

很长时间以来,都为怎么在多台电脑之间同步文件而头痛。使用过不少的同步软件,都有或多或少的不足之处。因为两边的文件都可能被编辑,同步软件必须要足够自动化,能够自动判断同步的方向,只进行增量同步,并且要能够识别出文件的删除,别删了之后一同步又回来了。

现在终于找到了一个满足要求的软件:Unison,经过差不多三个月的使用,感觉相当满意,可以介绍出来了。

在我看来,Unison的优点有这些:

  • 除了本机磁盘同步外,还支持网络同步,可以通过socket通讯方式,而不是靠windows文件共享。我的laptop通过共享copy文件时,偶然会出现出错。Unison还支持ssh,在unix上可以用安全程度较高的ssh。
  • 有命令行模式,可以通过脚本自动运行。其实Unison本来就是命令行程序,只是提供了GTK的GUI。GTK的界面虽然不太漂亮,但还是很好用的,在GUI模式下,会先把各个文件的同步方向显出出来,可以修改,点击go才执行。
  • 自动化程度比较高,每次同步完成后会将文件状态记录下来,下次同步的时候就能自动进行增量同步了。只要不是两边同时发生了修改,基本不需要人工干预。
  • 配置比较灵活,可以按照通配符来忽略某些文件/目录。因为Unison原来是unix平台的软件,所以配置也是文件方式的,只习惯于Windows图形界面的人也许会不喜欢。
  • 支持跨平台同步,包括windows,各种unix,OS-X。这点我用不着,但对于同时使用不同操作系统的人会很有用。
  • 免费,开源(GPL)。

我的工作环境有一台desktop和一台laptop,desktop的性能好些,所以一般都会在desktop上干活,但不在座位上时就只能用laptop,故此两台电脑都要有相同的文件,并且保持同步。现在保持同步的方法是:在desktop上以socket server模式运行unison,一直保持运行;laptop上通过cron在后台定时调用命令行的Unison,一天可以运行多次;如果我需要立即进行同步,就手工运行Unison GUI。

阅读全文 »

ClearCaseWeb is a simple web-based utility for browsing files stored in ClearCase. With it you can get the list of recent changed files and find out who is the last modifier of each line in a file in a very handy maner. The original idea to develop ClearCaseWeb is to overcome the lack of GUI for cleartool annotation. It’s inspired by CVSWeb, which is widely used in open source community.

Screenshots:

Annotation View

Browse View

阅读全文 »

统计分析时经常需要统计一组数据处于各个区间的数量分别有多少,也称为数据的频率分布。例如考试成绩出来了,老师要统计不及格(<60)、及格(6080)、良好(8090)、优(90~100)的人数有多少。

使用Excel的FREQUENCY函数,可以很简单的实现这个目标:

先把要处理的目标数据准备好:一列是输入数据A3:A66(在例子中为了清晰,已经排序,实际没有必要),另外一列是分组间隔D3:D21,在这里每个区间的大小是10。

对于每个区间的频率,我希望输出在E3:E21区域。用鼠标将这个区域框起来,然后输入公式 =FREQUENCY(A3:A66,D3:D21)。FREQUENCY函数有两个参数,第一个是要分析的目标数据,第二个是分组间隔值,都需要是数组。输出也是一个数组,因此需要按 Ctrl-Shift-Enter 来结束公式的输入,表明这是数组公式。(数组公式会显示为有个花括号括起来)

公式输入后,马上就能看到计算的结果了,如果希望更清晰些,可以做一张图。依然是选中E3:E21区域,菜单中选中插入图表,照着向导操作。在第二步选择DataSource中,需要在”Serials”中指定X轴区域为C3:C21(或D3:D21),否则X轴数据会变成1、2、3…

阅读全文 »

UNIX类的操作系统支持symbolic link [2],可以通过”ln -s”命令来创建。但是在Windows操作系统中,却没有提供这样的功能,文件管理就不如UNIX方便。

虽然Windows的shortcut在功能上有点类似于symbolic link,但还不是一个层面的东西,因为OS并没有管理它,要靠应用程序来处理。在DOS窗口里面dir看看一个shortcut是什么样子的,就知道有什么不同了。

其实,windows在NTFS 3.0开始支持一种叫做 junction point 的特性[3],可以看作为目录的symbolic link。可是微软总是喜欢把一些东西藏起来,比如这种junction point,你就无法直接通过windows自带工具来建立、管理。我是使用xplorer2这个explorer替代工具的时候,才发现有”Folder Junction”的功能(Edit - Paste Special - Folder junction)。在[1]中介绍了很多可以管理junction point的工具。不过,使用时还是要小心,它跟UNIX的symbolic link还是不完全相同,特别是删除的时候,junction point的行为有点怪异的[1][3]。据说Vista会提供与UNIX兼容的symbolic link支持。

利用junction point,可以在D盘建立一个目录,link到C盘来使用;也可以将分布在不同地方的多个子目录link到同一个目录底下,方便备份。

另外,Windows NTFS也支持hard link的[5],但实际使用中symbolic link的作用更大。

阅读全文 »

v2 - 2022-8-16
v1 - 2007-3-8

Java语言具备GC(垃圾回收)的能力,内存管理不需要应用程序去过问,这很方便。但是,GC是怎么进行的,JVM的内存参数应该怎么调整,如何优化,往往我们不是太清楚。看过一些资料后,对Sun JVM的内存管理以及垃圾回收的机制大概有了一个概念,这里将这些资料归纳和翻译出来。本文初稿内容主要基于Sun JVM 1.3.1,在后续版本中有不少优化措施,但是这些基本概念还是不变的。

GC

当JVM进行GC的时候,是要消耗CPU资源和需要一定时间的,这会影响到程序的正常运行,因此需要尽可能减少GC消耗的时间。Java程序运行过程中,对象的生命周期有长有短,其中相当大部分是都是比较短命的,例如局部的对象一用完就可以回收了。在大多数情况下,只要能够及时回收这些短命对象的内存,就能够确保JVM有足够内存来分配给新的对象。因此JVM采用一种分代回收(generational collection) 的策略,用较高的频率对年轻的对象(young generation)进行扫描和回收,这种叫做minor collection,而对老对象(old generation)的检查回收频率要低很多,称为major collection。这样就不需要每次GC都将内存中所有对象都检查一遍。

内存收集方式的最基础方式是以下几种:

阅读全文 »

刚刚上豆瓣去找书的时候,发现豆瓣新增了一个叫做”九点”的栏目,还是与”我看””我读””我听”并列的。好奇的打开来看看,原来是blog的聚合,将原来”我上”的功能扩展了,通过RSS将各个blog的内容直接聚合过来。
试了一下,相当喜欢,虽然这个功能上线才几天,但做到很不错了。可以看到大众推荐的blog文章,也可以看自己订阅的bolg。结合了豆瓣原有的自动推荐,不时会发现到一些符合自己口味的blog/文章。
它还稀奇古怪的弄出了”二套””三套”等等的分类,还没有搞清楚什么意思,大概是什么算法计算出来的自动分类。我开始还以为是中央台的第几套节目呢。

前段时间尝试的音乐网站”友播”和last.fm,也是给我不少惊喜,两个都是音乐推荐和在线播放网站。相比起前者的基于音乐特征分析的自动推荐,我更看好的是后者的根据相似口味的用户的喜好而给出的推荐。

Web 2.0 发展到现在,已经不再是刚开始玩那些什么n度人际关系的东东了,而是切入到人们生活、娱乐、工作当中,实实在在的带来方便和新的体验。社会化、个性化的网络正在改变着信息传播的方式,也许到了某一天,传统的报纸、广播和电视都会被按个人喜好定制的新媒体取代。

BTW,豆瓣是目前国内的web 2.0网站当中,我最看好的一个。

阅读全文 »