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

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

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

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

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

代码如下:

Read More

时间管理实践小记

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

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

Read More

读书笔记 – 高性能网站建设进阶指南(2)简化CSS选择符

css selectors 性能消耗从低到高:

  1. ID selectors
    #modal { overflow: hidden; }
  2. class selectors
    .container { margin: 0 atuo; }
  3. type selectors
    a { color: #999; }
  4. adjacent sibling selectors
    input + label { display: inline; }
  5. child selectors
    label > input { display: none; }
  6. descendant selectors
    .foo a { text-decoration: none; }
  7. universal selectors
    * { font-family: Arial; }
  8. Attribute Selectors
    [class^=”modal-“] { background: white; }
  9. Pseudo-Classes and Pseudo-Elements
    a:hover { text-decoration: none; }

Read More