卫星地图上的Dgwxx

最近Google Earth超级流行,人们最热衷的事情就是在Google提供的高清晰卫星题图上寻找自己家、自己工作的地方。这回我也加入进来,贴一下自己呆的地方。
非常幸运的是,无论是天津市的家还是在哈尔滨的学校,都有Google提供的高清晰卫星地图,很容易分辨。同宿舍的来自陕西农村和大庆油田的同学就没有这么幸运了,Google还没有更新他们家乡所在地区的高清晰地图,不过相信不久之后所有人都能在Google上面找到他们的家。

我的家:
Image
黑龙江大学A、B区鸟瞰图:
Image
黑龙江大学C区鸟瞰图,图中有Dgwxx的宿舍哦:
Image

在来说说Waki-Blog的事情:
今天加强了Waki-Blog的内部图库的处理功能,增加了自动缩小与水印添加功能。
自动等比缩小采用设定一个阈值,图片长宽任意一条边的长度大于阈值即启动自动缩小。首先使用长、宽中最大的那一边的长度除以阈值算出缩小比例,再用比例反过来乘以长、宽两边,分别乘以图片长宽,在依据缩小后的长宽进行缩小。这样可以保证在基本没有比例失真的前提下对图片进行缩小。
水印添加没有采用z-AutoWatermark,而是采用相对比较简单、同时也相对节省很多系统资源、高速的方法:首先在图像坐标2,2的地方添加一行黑色的文字,再在3,3位置添加一行相同的白色文字,制造了一个“白色字左上方有黑色阴影”的效果,不管图片背景颜色深浅,总能保证前方文字清晰可辨。
很不幸的,Waki-Blog的TrackBack发送部分出来了一个很让人囧的BUG……昨天我在引用月光博客的一条Blog的时候,发现引用地址后面竟然没有ID号,查了半天也没有头绪,还以为是不用Blog系统之间的兼容性问题。今天突然恍然大悟,Waki-Blog的最后一条记录的ID号是使用mysql_insert_id()函数取得的,难道虚拟主机的MySQL或者PHP版本太低,不支持这个函数?
于是只得在下面加了一句:
if (!$new_id){
list($new_id) = mysql_fetch_array($db->query("SELECT bid FROM {$tablepre}blogs ORDER BY bid DESC LIMIT 0,1"));
}
这才解决这个问题……怪不得Bo-Blog要MySQL 4以上的版本= =||

Blog的“人身安全”

今天晚上闲着没事,又修改了一下Waki-Blog。本次修改主旨在于提高前台程序的执行效率。首先分离了前台和后台的语言包文件,因为Waki-Blog的前台远比后台来的简单,所以需要的语言包的数量比较少,为前台专门做一个语言包可以加快前台的程序加载速度。由于Waki-Blog程序结构的原因,PHP代码与语言、模板完全分离(PHP代码中看不到一个字、一点HTML代码,当然,BBCDOE解析除外),所以程序更加依赖于语言包和模板,要提高效率,只要从语言包和模板入手即可。
此外还调整了用户身份验证部分。只在后台的时候才验证用户身份,这样就在前台减少了一次数据库查询。

今天启动了Waki-Blog的图片防盗链功能。
Waki-Blog的图片管理依赖于站内图库功能。在编辑器中可以上传图片,并指定一个该图片的索引。比如我给某副图片取名叫“feiron”(《天高く、雲は流れ》男主角的名字-0-),就可以在编辑器内用BBCODE贴上[image|feiron],BBCDOE解析的时候,就会插入索引为feiron的图片,与wiki原理相似。不仅如此,索引在BBCODE解析的时候,会通过加密的方式传递给程序,这样,图片地址就变成了类似response.php?image:show::a44c2FpdG91的形式,隐藏了图片的真实路径和文件名,达到了保护图片的目的。
当response.php接到请求的时候,会首先检查1.加密了的索引是否合法、2.检查请求来源是否在指定的白名单之内。如果没有问题,就会解码图片索引、查询数据库找到图片的真实路径、由GD库打开图片、PHP输出HTTP头、之后同样通过GD库来将图片呈现。任何一项不符合要求,都会拒绝请求。

这只是防盗链的第一步,也是最基本的一步,即试图从本站做起防止他人盗链。但是,来源检查并不一定经常有效,遇上某些丧心病狂的人通过伪造HTTP头的方式来认为改变请求来源的时候,只有在图片上加入含有本站标志的水印来标明图片来源。这只能说是属于下下策的方式了,因为在图片上添加水印,不能直接起到防止盗链的作用,只能是一种类似“舆论施压”的作用。
过两天我会在Blog上贴一篇关于PHP图片水印添加的心得的文章,届时会公开Z-AutoWartermark 2.0的代码。

久し振りに青空

Image
哈尔滨连续两个星期的阴雨天气中与结束了,今天迎来了阳光明媚的一天。
不过对于我这个在阴天中泡了两个星期的人来说,突然来这么“过于明媚”的一天,一出门还真有点不适应——阳光太刺眼了。
总体来说,哈尔滨的初夏还是相当凉快的,尤其是刚刚过去的两个星期的阴雨天气,气温总维持在20度上下,凉风吹过来,根本没有夏天的感觉。盖着毛巾被睡觉,到了早晨甚至会被冻醒。相比起来,老妈那边就要难受多了。在短信里,老妈经常抱怨天气闷热、稍微一活动就要出汗等等的,真是够呛。
突然想起来了今年高考的表妹,她报了成都的一所大学。那里的夏天……啊,天哪……不敢想象。

Waki-Blog诞生!

按照我写程序的习惯,程序都是以z开头的词命名的。这个习惯最早要追溯到zArticle时期。因为我的第一个网站叫“足迹工作室”,我写文章系统取名zArticle是要纪念这个网站的。写到最后写着写着就变成了习惯,其后写的比较大型的文档系统zDoc、加密/解密算法zQueryEncode/Decode、图片自适应水印添加程序z-AutoWaterMark、验证码程序z-Captcha,同样都以z开头。
但是事情到了Blog程序这里似乎就不太行得通了。因为已经有一个ASP的Blog系统叫Z-Blog了,虽然人家没说别的程序不许叫Z-Blog,但是我还是自觉自愿地躲开了这个名字。
至于为什么要叫Waki-Blog呢?Waki这个名字来源于日语中的汉语词“和気(わき)”,意为“和气、和蔼、和睦的气氛”,正好和我的性格相符。感谢jOSH.yU帮忙想了一个这么好的名字。

因为开发的时候是以z-Blog为名字进行开发的,所以要将所有程序中的zblog的痕迹抹去还需要一段时间。今天只替换掉了前台的zblog,因为后台程序和模板数量众多,只能等以后一边维护一边改了。

今天的更新主要有:

  • 增强了防止SPAM的功能。不但使用z-QueryEncode加密TrackBack查询字符串杜绝连续ID攻击,还设置了TrackBack限额,即每300秒系统只接受一条TrackBack请求。这样就算有人SPAM,24小时不断地发,每天也只能发288条。而删除这些TrackBack也只是一条SQL命令就能解决的事情。不过设置限额也有缺陷……那就是有些正常的请求不能响应了。
  • 纠正了生成存档列表缓存时的BUG。当存在较老日期、ID却比较新的BLOG的时候,缓存程序会没办法生成缓存,导致首页、存档列表的SQL语句出现错误。虽然这个BUG一般情况下不会显现,但是今天我在把老BLOG的文章导入进来的时候却遇到了这个问题。顺便修正。
  • 修改了首页、存档页、RSS生成中文章排序的方法,由依据ID排序改为依据时间排序。
  • 增加了在写新Blog、修改Blog的时候更改发布时间的功能。上面两处修改就是为了适应这个功能而进行的。

z-Blog 主体工程全部完工

经过又一下午的努力,z-Blog主体功能全部完工。
今天新加入的功能包括:

  • TrackBack引用报告发送与接收
  • RSS输出
  • 存档功能

修正昨天的BUG:

  • 时间戳错误
  • 首页模板中的一处错误

两天的时间就赶完了一个程序,成就感还是蛮高的~HOHO~之后就剩下一些后续的DEBUG工作与防SPAM的加强了。因为z-Blog根本没有留言和评论功能,所以重点在防止TrackBack被攻击上。

自己的Blog程序 第一篇Blog

新网互联虚拟主机的MySql竟然只有3.23.54,装不了Bo-Blog2。于是最终下定决心自己写一个Blog程序。
正好前些日子看到了Google黑板报,于是决定以最简约的风格写一个Blog程序,只实现最基本的功能即可。编写过程是从今天上午10:00开始的,首先确定好数据库结构,最开始计划的时候是两个表,分别存储用户和Blog,到下午的时候又加了一个管理附件的表。专门为用户建立一个表是为了实现多人撰写Blog,个人觉得这个功能还是很必要的。好不容易把数据库结构确定下来了,却犯懒看起了小说,这一看就是两个小时,吃过午饭,喝了杯咖啡,战胜睡意继续写程序。
下午的进展比较顺利,因为有zDoc的基础,模板引擎、基础程序结构等等的基本全是现成的,基本上也就是改改模板、改改程序里的数据库查询就OK,bbcode解析部分也是用zDoc里面现成的,基本不用改就能移植过来,下午到晚上7:30左右就完成了前台、后台的基本功能。
现在还剩下的是一些Blog特有的功能,比如:

  • TrackBack的发送和接收
  • RSS输出
  • 存档

这些是之后的事情了,今天先完成基础部分即可 🙂

倒霉的英语月考

终于到了Lv.3,本学期的英语考试题目与上学期不同,本来以为像上学期Lv.3考题那样考作文的,结果到头来还是英汉互译。不过也好,又能暂时避过我最憷头的作文了。(跑得了和尚跑不了庙,考四级的时候是早得写 囧)

考试本身还算顺利,只不过交上卷子之后监考老师发现我的序列号跟别的同学写重了。其实我确实是忘了自己的序列号(从上学期开始就怎么也记不住- -||)。

老师把我叫到前面,问:“是不是忘了?”
我说:“忘了。”
“真的忘了?”
“确实是忘了。”
“你是不是替别人考的?”
我当场就囧了,“……我的身份证和学生证都带了,要不给您看看?”
“算了。”

老师大笔一挥,把我的序列号改成100……

临走时,我还是拿出了身份证和学生证给老师看,说“我真不是替考的。”

忘记序列号不是第一次,被人家认为是替考还真的是第一次。我长得那么像枪手?

黑大图书馆关了

昨天去图书馆的时候,发现门口立了“闭馆”的牌子,门上贴了一张通知。通知大致是说黑大的图书馆因为部分阅览室出现裂缝,为保证读者安全进行闭馆。等专家鉴定后再决定是否继续开放。

黑大可真是够倒霉的,这应该是今年内第二次出现建筑质量安全问题的了。第一次是年初传闻中只花了三个月就建成的B区食堂出现裂缝,一些人去了修修补补把外面弄好了(不知道里面的裂缝还在不在)。

希望以后不要裂下去……囧

空之轨迹SC

Image
期待了两年的续作终于登场了!昨天终于从家里的电脑上拖了回来,赶紧解压缩、安装。
WOW~好漂亮的片头画面。进行了开头一点剧情,大致明白了约书亚为什么离开、艾斯提尔决定踏上寻找约书亚的旅途等等。一边高兴着,终于能够看懂一些剧情了,一遍往下玩。

终于——在飞往家乡的定期船上,本作的新角色登场了!!!!对着心理遭受严重打击的女主角就说:
“なんか元気ないみたいやからオレの素敵トークで笑顔にしたろとまあ、そんな風に思ったわけや。”

看完之后我就囧了。昏死,这算哪门子的方言啊,完全看不明白……

老斋

Image
这是我们日语会话课的外教斉藤剛,据说70多岁了,所以我们叫他老斋。
老斋上课很有意思,绝对不允许学生听不明白。每次他问“分かりましたか(听懂了吗)。”只要有学生回答“いいえ(没有)。”他都回从头到尾再讲一遍。不知道是出于日式的“实在”还是出于身为老师的负责。老斋非常和蔼,很喜欢笑。开始上课的时候,会礼貌的鞠躬,跟大家说“こんにちは(大家好)。”,下课的时候也会鞠躬说“皆さん、ご苦労さまでした(大家辛苦了)。”

他说话抑扬顿挫的,很喜欢向我们强调句尾的读法。比如今天的会话课,他就用汉语和日语掺合着跟我们将如何读句尾,大致意思是说“汉语里面有(第)四声,所以说话说起来很‘強い’(强硬)。中国学生读日语的时候,总会不经意间强调句尾的发音,这在日本人听来是很‘強い’,其实应该是更加温柔一些。”

因为课本很无聊的缘故,所以说实话我不是很喜欢会话课,总有昏昏欲睡的感觉。所以,希望表再讲课本了,干脆由老师跟学生随便聊一些东西比较好,这样比较能够联系听力和日常会话能力。比如介绍一些日本人说话的方式、跟不同身份的人对话所使用的不同句式和词语之类的。