Month: March 2013

  • GetBeanProperties via Scala

    一个简单的用Scala写的获取bean属性的例子。核心方法是Introspector#getBean(Class)。 import java.beans.Introspector object GetBeanProperties { class Person(id: Long, name: String) { def getId = id def getName = name } def main(args: Array[String]): Unit = { println(GetBeanProperties(null)) println(GetBeanProperties(new Person(1L, “xnnyygn”))) } def apply[T](bean: T): Map[String, Any] = Option(bean) match { case None => Map[String, Any]() case _ => doApply(bean) } private def doApply[T](bean: T):…

  • 迟到的2013春节小兔子

    2013-spring-bunny, a photo by gxnnyygn on Flickr. 大概两月的某个下雪天做的。那时博客还没部署起来,所以暂时放手机里了。现在把照片拿出来贴到博客上也算是对今天的春节的小小回忆吧。

  • 跨系统跨浏览器的“微软雅黑”

    这个问题起源于设计要求某页面在任何装了微软雅黑的系统里都要显示微软雅黑。这就包括,win下所有浏览器和mac下所有浏览器(我想没人会在linux下装雅黑的吧~)。 给font-family设定中文字体一般有两种常见方式:1、字体英文名,2、unicode。 我一直采用unicode的方法。 因为写成“Microsoft Yahei”的话,win下ff(曾经)和opera(目前为止)都不能正确识别。 写成unicode的话,win下所有浏览器都能显示雅黑字体。 但是这招在mac os下似乎行不通。 通过调试,基本确定mac下的雅黑的名字默认就是“Microsof Yahei”,不存在“微软雅黑”这个字体名。 所以mac os下写unicode是没法被识别成“微软雅黑”的。 但这样会造成win下部分浏览器没法正确显示雅黑。 终上, 如果想让win下全浏览器显示雅黑的话,font-family用unicode“\5FAE\8F6F\96C5\9ED1”; 如果想让全部装了雅黑的系统下的浏览器显示雅黑的话,font-family用英文名“Microsoft Yahei”, 但这意味着部分win下的浏览器无法正确显示雅黑。

  • 领取N2证书和之后

    今天上午终于拿到了传说中的日本语能力考试二级(N2)证书。回想这一年半来,边工作边学习,好是辛苦。不过也籍此保持学习心态,留给现在的英语学习一个好的开端。不过,证书对我最大的意义可能在于是给过去断断续续的日语学习一个肯定。 拿到之后,首先记下自己的考试之后的经历,给其他要考试的人一个参考。 我考的是2012年12月的N2,大概次年2月就可以网上查询成绩。什么时候可以查,可以定期检查日本语能力考试报名网站。查分界面需要填写自己的证件号和准考证号。 如果查到的结果是通过,记得检查自己的准考证是否还在,之后领取证书时有用。如果不在了,赶快重新打印一份。

  • 动物之森随手记

    3月7日 有幸初次进入了复位中心。由于我把他建在村子的左上角,平时很少注意那里是否开门。 当然,其实只有前一天下雨了,第二天晚上复位中心才会开门。 走过长长的通道,一只说话没好气的鼹鼠在里面看电视…… 好吧,他让我不要和他说话……于是我继续往里走……只见那里深藏着一个二人间的厕所…… 于是我坐上去拍了平身第一张如厕照。 然后就没有然后了……我从里面出来了……

  • IE缓存问题

    今天调试的时候发现一个比较头疼的IE缓存问题。 我发送了个ajax请求,请求成功则往浏览器session里写更新一条数据。 再刷新页面时,因为session更新了所以这个页面上应该会出现一个新的条目。 但是在IE下并没有成功。不停的刷新都没有用,除非清空浏览器缓存。 一开始怀疑是ajax请求发送失败,但测试下来是成功的。 那是什么原因造成IE读取不了新的session呢? 后来通过查看net请求,发现IE在更新页面时读取的是浏览器缓存的页面session,而不是新session。 http响应为403,不是200。 这个问题在chrome、firefox等浏览器下并没出现。其他浏览器会自动更新缓存。 感觉我表达的不是很清楚……因为第一次碰到这问题,也不知道该怎么描述。 最后通过给ajax请求增加时间戳来强制让IE读取服务器发送过来的请求,而非浏览器缓存的请求。

  • returnvalue & xwrapper

    introduction 背景是WebService,具体实现是XFire。由于某种原因XFire的Fault无法使用,导致只能使用返回值表示成功与错误的情况。举例如下: // return type class IntWrapper { boolean success; String message; int value; } // client IntWrapper wrapper; if(wrapper == null) throw new NullPointException(“wrapper is null”); if(!wrapper.success) throw new Exception(wrapper.message); return wrapper.value; 实际实现时,发现服务有很多方法,每个方法有各自的返回类型,有部分重复。其次是服务端每个方法都必须try catch,把错误转化为返回值。第三是客户端代码也有重复,每次都要检查是否为null和是否成功。 为了减少重复代码,提供如下方案:

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

    compile # download mysql-5.6.10 from https://dev.mysql.com/downloads/mysql/ tar zxf mysql-5.6.10 cd mysql-5.6.10 # set default charset to utf8 cmake -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci # install to /usr/local/mysql make && make install initialize database # create user mysql and change owner of /usr/local/mysql to mysql groupadd mysql useradd mysql -g mysql chown -R mysql:mysql /usr/local/mysql # still in mysql-5.6.10…

  • 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 选配 选择台式机的原因一个是笔记本比较贵而且屏幕相对小,一体机总觉得差那么一点,另一个原因是去年就想配一台电脑,但是感觉没啥特别强烈的需求暂时放下了。…

  • jQuery slideDown snap back issue

    这个问题得用视频才能演示出来……视频之后更新。 标题用的是stackoverflow上的。 我碰到的情况是,div.to-slide里有float元素。 div.to-slide在触发slideDown()动画后,会先down到超过div本身应该的高度,再反跳回原来的高度。 排查了很久都没找到原因。终于最后在stackoverflow上找到了一篇解释这问题的。 原来这个问题并不限定于内部有float的slidedown元素。float只是其中一种情况。 在div.to-slide没有展开情况下,jquery算出的高度有误,所以才会出现高度差反跳。 触发这个bug的原因很多,比如:无宽度,自适应或继承父元素宽度(我的问题就是这个)。 详见 slidedown animation jump revisited