第一个产品 - HYRY Album

既然我们把自己称之为Studio,那么总该有些什么小作品吧。于是RY花了几天工夫,初步完成了这个HYRY Album。

HYRY Album是一个用Web.py 开发的相册Web服务器,可以方便地公开、共享用数码相机照的照片。

主要功能有:

  • 在线创建相册
  • 给相册添加说明
  • 批量上传照片
  • 自动缩小照片,自动制作预览小图片
  • 可以为每张图片添加标签和说明
  • 按照标签浏览图片
  • 首页显示最新照片和评论
  • 多语言界面:中日英
  • 可以设置密码以保护编辑模式
  • 采用py2exe打包,无需安装Python既可以运行服务器
  • 通过修改css自定义页面样式

下面是目前的HYRY Album的页面截图,由于服务器配置太低,为了不影响HYRY Studio的服务,暂时不进行在线演示。下载:HYRY Album Ver. 0.3

本版本的缺省语言、说明文档均为日语,如想要更改界面语言为汉语,请按照如下步骤设置:

  1. 下载解压之后运行album.exe文件,并用浏览器打开地址http://127.0.0.1:8000
  2. 在首页的右下“パスワード入力”输入框中输入管理密码‘123’,并按OK按钮。
  3. 点击上方的“環境設定”链接,进入系统配置画面。
  4. 配置画面中的第一项“ インターフェース言語”后面选择‘chinese’,并按OK按钮。



姬路世界文化遗产

   
   
   

姬路城是日本的世界文化遗产之一,具有五,六百年的历史,算是一个旅游观光地。今天去参加姬路市的国际交流活动,各国人民把自己的特色产品,小吃,音乐,舞蹈展现给人们。姬路城就在旁边顺便进去逛了一圈,正巧赶上菊花展,虽然品种不多不过也够饱眼福的了。


祭祀活动


日本的寺庙遍布全国各地大大小小不计其数。日本人叫它“神社",听上去更加带有几分迷信色彩。中国人最熟悉的应该是”靖国神社"了,我没有去过”靖国神社"不过最近去了一趟“鱼吹八幡神社”。
每 年的这个时候在“鱼吹八幡神社”都会举行一个很大行的祭祀活动,以前是渔民为了祈求能多打鱼而举行的,现在已经没有渔民了,但祭祀活动传成下来成为传统的 民间活动。这次因为正好是星期日所以由为隆重,附近17村子(可能是村吧,因为那里有点象农村。)都出了队伍前来助兴,据说有的是坐火车赶来的。他们抬着 很重的看上去象中国古代的轿子,不过想坐这个可要交上一大笔钱,日本人叫它“屋台”,轿子里坐着4个10岁左右的小孩子,在里面边打鼓边喊口号,只要是进 了轿子孩子的脚就不可以沾到地上的土,所以出来休息的时候都是由大人背着。让我感触最深的是日本人的合作精神,每个轿子由30多个壮汉扛着,在口令的指挥 下或抬起来,或落下去,如果行动不统一很可能出现危险。我站在近前的时候觉得又震撼又恐怖。两天的活动都是从早6,7点到晚上10点左右,早上因为天气冷 他们穿的又少,所以会时不时喝上一口白酒,“酒壮英雄胆"看上去象要奔赴沙场。到了晚上再去看,英雄几乎成了败军之将,气势锐减。好在活动也已接近尾声。


京都仁和寺

10月15日我和夜校的老师和同学们一起去了京都的仁和寺。京都的枫叶非常有名,到了11月12月满山遍野都是红叶很是壮观,可惜这次去的有点早看到的还是翠绿色枫叶。仁和寺住着空海大师,据说是他把很多中国的文字传到日本来的。日本的寺院里面的建筑看着都很眼熟,却又不完全一样,多半也是受中国建筑的影响。在京都每年夏天结束的时候都会搞一个祭示活动,就是在山上用火烧出一个大字。这次刚好碰到一个红灯拍了下来。

  
  
  
  

生日庆祝活动

 庆祝海月生日这天奶奶家里来了好多亲戚,有大伯、大妈、二爷爷、二奶奶、小叔叔、三姑奶奶、小姑姑、一位远房的三姑奶奶。大家一起吃了饭后准备在有电脑的房间里给我们实况转播吃蛋糕和抓周的情景,可惜网络做对,不是太慢就是不稳定,搞得MSN一会上一会下的很是不爽。最后决定我们先忍耐一下,断掉网络,好让他们安心搞活动。就有劳大伯把整个活动录下来,日后慢慢发给我们看了,也正好可以存个档,等海月大了让她看看,她小时候大家是怎么爱护她的。

吃蛋糕的时候应海月爸爸的要求,大妈给海月的脸上涂满了奶油,海月非常配合,一点也没有表现出来不满情绪。不过我想可能是把注意力集中在蛋糕上,管不了那么多了。抓周是整个活动最精彩的部分也是高潮,先是大家在床上摆放了各种各样的东西,有手机、百元大钞、苹果、化妆品、书、香格时拉的纪念品、还有玩具狗,然后把海月放在床上。开始她并不急着下手,坐在那里思考了1分钟后,似乎开始对百元纸币产生兴趣,伸手去够,可是刚碰到个边就又把手收了回来,这样反复两次都没有下决心拿起来,最后选择了放弃。这时奶奶急中生智命人拿来两个一元的硬币摆在了面前,这正是海月想要的,说时迟那时快一下子拿了起来再就不肯撒手了。"左手也是钱,右手也是钱,不贪大钱,只发点小财"奶奶如是说。大伯说:"君子爱财取之有道"。海月爸爸说:"弱水三千只取一飘"。我看是海月小小年纪就知道“钱不在多够花就行”。这两元硬币拿得叫紧,凭你用什么玩具换都休想换走。海月的一岁生日就这样圆满地结束了,虽然爸爸妈妈没有在身边,但海月是非常快乐的。海月奶奶还专程带海月到影楼照了艺术照,看上去象个小大人了。

啥叫笑不露齿?看我站得多稳。
大家都看我干嘛!?我要回家!!

C54x的Circular Addressing Mode

RY DSP开发 2006/10/13

今天发现正在开发中的一个Mp3播放器在播放到某个特定的文件的特定的地方时,出现CF卡读取错误。经过调试,发现在CF卡读取发生错误时,储存CF的磁盘信息的内存区域遭到破坏。这看起来像是缓冲区溢出错误,冲掉了储存CF信息的内存。通过设置Break on Data Write断点,我找到了冲掉CF信息的罪魁祸首:Mp3解码汇编程序中的一段。奇怪的是,这段程序所要存取的内存地址大约是0x5800 - 0x5a00之间,而CF信息保存在0x5100处,如何会出现这种跳跃式的存取的呢?经过跟踪这段汇编程序,终于让我确定了Bug的根源:Circular Addressing Mode。

出错误的汇编语句是:

mvdd    *AR3+,*AR5+0%

寄存器AR5指向地址0x5800之后的某段内存。这里因为要使用AR0做为AR5的单步增量,而在使用Dual Data Memory Operands时,只能通过*AR5+0%来使用AR0,%表示circular modify. 其实这段程序是不用circular modify的,因此寄存器BK应该设置为0。然而,上面程序运行时,BK的值为0x0800。为什么BK的值为0x0800会出现BUG呢?为了搞清楚这个问题,还是先来复习一下Circular Addressing Mode的一些知识吧。

为了快速地循环使用某段内存,C54x提供了这种存取模式。在这种模式下,当指针超过了circular buffer的结束地址时,硬件会自动地把指针调回到buffer的起始位置。用C语言来说就是:

if (index + step >= BK ) index = index + step - BK;
else index = index + step;

其中BK是circular buffer的长度。

在硬件实现上,是这样决定circular buffer的起始和结束地址的。

  1. 将BK中从高位起第一个不为0的bit位之上的位都设置为1,其余为都设置为0,我们称这个数为mask。例如0x0800的mask就是0xf000。
  2. 将这个mask与存取circular buffer的寄存器位与运算的结果就是circular buffer的起始地址。例如如果AR5的值为0x5123的话, 0x5123 & 0xf000 = 0x5000, 所以起始地址是0x5000。
  3. 将起始地址与BK进行位或运算,得到结束地址(circular buffer不包括结束地址),在这个例子中结束地址为:0x5000 | 0x0800 = 0x5800。

现在来看AR5一开始就超过了结束地址时会发生什么情况,例如AR5的初始值是0x5900时,BK仍然是0x0800。通过前面的计算,我们可以得到这个circular buffer的起始地址为0x5000!这样,如果进行*AR5+%的运算的话,AR5会回到地址 0x5900 + 1 - 0x0800 = 0x5101!这里我存放的是CF的磁盘信息。

之所以会出现这样的错误,是因为我武断地认为如果AR5的初始值是0x5900, BK为0x0800的话,那么circular buffer的地址范围是0x5800 - 0x6000(不包括0x6000)。如果真是这样,就不会出现上述的缓冲器溢出问题了。但是硬件的实现和我的想象是完全不一样的,所以要好好阅读文档资料,不能自己想当然。


恶梦

昨天做了一个非常恐怖的梦,现在我的心还是冰的,每隔3秒抽搐一下。

我梦见我要参加高考,可是我的学习资料,准考证和一些用具都让 别的同学帮忙拿着。在临考前我非常想看看以前做的卷子,虽然明知道没什么用,可如果不看上几眼心里就是不蹋实,于是我就开始找我的同学,可怎么找也找不 到。到处都是人,说着,笑着,看资料的,就是找不到我要找 的人。后来突然发现有好多同学进了一幢大楼就没有再出来,于是我也走了进去。里面漆黑一片,通过一条狭长的走廊,看到几个教室。教室里面阴沉沉的没有开 灯,阳光斜斜地从窗户照进来,把人的影子拉的好长。老师坐在前面没有讲课,下面的学生在自由活动,可是我的同学并没有在里面。我飞奔地逃了出来,发现同学 们都在站排等着进考场了,可我的准考证还不知道在哪呢。手里唯一拿的是一只没有盖帽的钢笔,现在想想可能早就干的写不出来字了。就在我心急如焚不知所措的 时候,翻了个身发现原来是个梦。还好是个梦,否则我就死定了。

 可能是因为做梦太辛苦没有睡好,补了一觉竟然闹钟响都没有听到,早饭也没来得急做,害得老公吃了几块饼干就出门了。哎!,已经过了这么多年了,还是忘不了那一幕,高考后遗证害死人呀。 

这张图其实是中秋节的时候照的月亮。我觉得与高考很相象,在漆黑的夜里,深手不见五指, 没有过多的要求,失去该有的快乐,不知道前方等待的是什么样的结局,所能做的就只是默默地朝着远方的光亮走下去,也许永远也到达不了终点,可是还是要坚 持,坚持下去还有希望,退却就只能成为失败者。

三连休

盼望已久的三连休一眨眼的工夫就过完了,试着回想一下都做了些什么,发现很多时间是空白,也就是说浪费掉了,这是坚决不能被允许的。下次再有此等事情发生,痛打二十大板,(打老公不是打我哟)。下面两张图是在我家附近的明石大桥照的,它是很有名的跨海大桥。



海月满一岁

以下部分来自老妈:

海月已经整一岁了,虽然是她的生日,对于我来说却是一个纪念日,那天我经历了传说中的阵痛,经历了无处次的深呼吸最后嘴唇干裂,经历了浑身上下肌肉的疼痛最后手连筷子都拿不住。从而我成为了母亲。从此照顾她,抚养她,教育她成为我义不容辞的责任。可是现在这些我一样也没有做,对于海月的回忆仍然停留在2006年3月和4月的时候,那时每天白天只有我们两个人在家,规律性的吃饭,晒太阳,洗澡,睡觉。当时虽然很累却精神抖擞整个人象上了发条似的每天按时运转着。而现在只能时而去以前经常带她去的公园小坐一下,似乎怀里还抱着海月,说些她听不懂的儿话。

一年的时间小孩子的变化真的很大,从每天躺在床上,睁眼吃弊眼睡的婴儿。到现在到处爬,有意思地玩笑,用简单的发音表达自己的意愿。托家人的福海月长的很好,据说每天能把家里的几个大人折腾的精疲力竭。耳听为虚眼见为实,好想回去看看海月。

以下部分来自老爸:

海月第一次出现在我眼前的场景我终生难忘。医生将她放在妈妈身边,她马上就不哭了,令我深刻地体会到了亲情二字的含义。一个刚刚出生的小孩,就知道在妈妈身边是安全的、快乐的,所以她停止了啼哭。可是海月刚过半岁不久,我们做父母的就离开她回到日本,心里面总是放心不下的。不过通过照片、视频以及爷爷奶奶和大妈绘声绘色地描述海月的趣事,让我们清楚地了解到海月正在茁壮地成长着。今天是海月一岁的生日,刚才打电话回家,正好又听到了她咯咯的笑声。

据说在前两天的抓周活动中,海月放弃了手机、玩具、甚至100元大钞,却选择了几枚硬币。这似乎符合我们的人生观:弱水三千,只取一瓢。