[scala]50行实现web表单验证器

思路是这样,每个表单实现Validatable特质。这个特质要求实现返回一个属性名到验证器列表的映射。

表单验证器执行时首先获取表单所有的属性(除去class),然后遍历这个映射,运行字段对应的验证器变成响应的验证错误(如果有的话),否则最后是个空集合。

FormValidatorRunner(代码最下方)是测试类,执行结果是

Map(name -> List(ValidateError(default.notBlank,List())))

代码如下:

Read More

时间管理实践小记

最近重新读了《时间管理-给系统管理员》,虽然我不是系统管理员,但是里面的内容对我来说并不是不适用,而且在尝试应用之后感觉自己的时间掌控力立马上升了一个阶层。下面就讲讲我阅读和实践中的想法。

在重读之前,个人尝试了很多个人时间任务管理的方式,比如在学N2的时候,早起半小时学习;工作中并发比较大时,按照完成时间长度优先完成时间短的,使得一天做的事情最多;手机上的AnyToDo等。感觉不管哪个缺少点什么,面对新来的任务,长期的计划没有一个比较好的处理方案。现在看来,原先的方式对当天任务的处理还行,但是对几天的,时间跨度更长的计划就难以承受了。

Read More

GetBeanProperties via Scala

一个简单的用Scala写的获取bean属性的例子。核心方法是Introspector#getBean(Class)

领取N2证书和之后

今天上午终于拿到了传说中的日本语能力考试二级(N2)证书。回想这一年半来,边工作边学习,好是辛苦。不过也籍此保持学习心态,留给现在的英语学习一个好的开端。不过,证书对我最大的意义可能在于是给过去断断续续的日语学习一个肯定。

拿到之后,首先记下自己的考试之后的经历,给其他要考试的人一个参考。
我考的是2012年12月的N2,大概次年2月就可以网上查询成绩。什么时候可以查,可以定期检查日本语能力考试报名网站。查分界面需要填写自己的证件号和准考证号。
如果查到的结果是通过,记得检查自己的准考证是否还在,之后领取证书时有用。如果不在了,赶快重新打印一份。

Read More

returnvalue & xwrapper

introduction

背景是WebService,具体实现是XFire。由于某种原因XFire的Fault无法使用,导致只能使用返回值表示成功与错误的情况。举例如下:

实际实现时,发现服务有很多方法,每个方法有各自的返回类型,有部分重复。其次是服务端每个方法都必须try catch,把错误转化为返回值。第三是客户端代码也有重复,每次都要检查是否为null和是否成功。
为了减少重复代码,提供如下方案:

Read More

compile install mysql 5.6.10 and optimize for low memory VPS on debian 6

compile

initialize database

Read More

5k5购机记

配置列表

CPU Intel i5 3470 ¥1288
Motherboard GIGABYTE ga-h77-ds3h(rev 1.1) ¥679
Memory Kingston 4G 1600MHz ¥159
Graphic Card Sapphire HD 6770 1G ¥699
Wireless Card TP-LINK TL-WN851N 300M ¥154
Power Seasonic SII2-520W ¥439
Case Cooler Master RC-550-KKN1 ¥459
Monitor Dell U2312HM ¥1377
Hard Disk Seagate ST500DM002 SATA3 500G ¥345

No mouse, keyboard, dvd-rw

选配

选择台式机的原因一个是笔记本比较贵而且屏幕相对小,一体机总觉得差那么一点,另一个原因是去年就想配一台电脑,但是感觉没啥特别强烈的需求暂时放下了。
配机前我看了很多资料,一个配机小白懂了很多以前不知道的知识。比如CPU的针数要和主板支持的一致,电源要根据显卡等配件的功率来,盒装CPU一般情况下自带一个风扇,主板上的跳线安装等等。
挑选配件的时候,逐步摸索出按照品牌,性价比,功能需求的套路。

Read More