中午逛公园,最近天气可真不错,其实最应该躺在草地上晒着太阳睡一觉,可是还得上班。。。
20140307 日坛公园 – 迎春花
Skype和Windows Live Messenger的整合
有个以前的同事在Skype上对我说:你怎么还Skype和MSN Messenger一起登录呢?
我:我只开了skype啊。。。
同事:我这显示有两个你,一个是Messenger另一个是Skype。
我:我使用msn帐号登录skype的。。。
同事:登录不是有个合并的提示么
我:我已经合并了啊。。。不对,你也一样。。。
同事:啊?我也有两个呀?
我: 恩,没错
同事:啊……看来不智能……
我:恩,估计整合得不完全
同事:我都已经合并了,就应该知道那两个账号是一个人的。
我:其实就是把你当两个帐号登录。。。
同事:估计是这样。
我:其实只是把两个客户端搞成一个了,服务端没怎么改
大概看了一下,虽然说Messenger已经停止服务了,但是服务器没有动,只是除大陆以外的用户不让用messenger登录了,而让Skype分别去登录Skype和Messenger(Skype还支持facebook账户登录,这种多账户的IM客户端其实很常见,比如说MirandaIM),但是各个服务之间是互相独立的,不能交互,比如不能够把一个Skype用户和一个Messenger用户加到同一个群聊里头。所以这里头所谓的整合其实名不副实,只是换了个皮而已。正在的整合是要把messenger的数据都导入到Skype里头,而且对于已经合并的用户要做去重处理,不过这样的工作量可能就会比较大了。
关于整合,可以看看对面的这个介绍,我觉得挺全的。
PS:下载Skype的时候建议用原版的,不要用国内的。以前那个tom-skype里头嵌了好多乱七八糟的东西,现在虽然换了运营商了,但是估计也差不多。国外版下载链接
20140305公园拍鸟的收获是一个肥皂泡。。。
20140304 日坛公园
大宝的蛀牙
去年夏天的时候,早上吃完奶我经常带大宝出去晒太阳,经常会他买个包子吃;鉴于俺喜欢吃甜的,所以经常是爷俩一起吃糖包子或者豆沙包。后来就发现大宝的牙齿有点变绿了,不过社区医生很确定地说小孩不用刷牙,再加上外公的现身说法:外公从小爱吃甜的,而且到了十几岁都没刷过牙。于是从来也没给大宝刷过牙,直到大概去年10月份的时候,发现牙齿已经有点变黑了,于是给他刷了一下,一刷吓一跳:门牙中间已经有点蛀了,其他的牙齿能刷掉一些,但是也有点黑。
家里旁边就有个口腔医院,带大宝去看了一下,不过医生看见这么小的小孩就挠头,说这个确实是蛀牙,但是现在没法弄,多给他刷刷牙吧。于是先刷牙当成头等大事,每次吃完东西一定要漱口,吃完饭一定要刷牙,糖包子自然是不能吃了,别的甜的东西也要少吃。折腾了几个月,感觉好像有点控制住了。前阵子约上一个口腔医院的号,又带大宝去看了一下,医生说门牙上那个蛀牙洞太小了,转头比他大多了,没必要弄,还是继续刷牙吧。至于牙齿上的颜色,其实是色素沉淀,简单说就是吃完甜的东西又吃了有颜色的东西,糖把颜色给粘住了。还好,不过还是得要继续努力。
我觉得除了吃糖包子外,吃奶时间太长也是个可能的原因,以前大宝半夜醒来喜欢吃着奶睡觉,而且也不好好吃,一吃吃很久。还有一个原因可能是太阳晒得不够,略有点缺钙,而且牙齿锻炼得太少。
总结起来大概有那么几条:
1、吃完奶、吃完东西一定要漱口。
2、等稍微大一点开始吃辅食的时候就应该给他刷牙,指套或者牙刷,盐水或者牙膏,视情况而定。
3、少吃点甜的,比如说糖和饼干。
4、多让孩子晒晒太阳补补钙。
5、多锻炼锻炼孩子的咀嚼能力。
用SAX处理xml文件里的multiRef标签
开发某运营商的WebService订购关系通知接口,原先由VAC直接推送,现在中间加了一个网关,VAC推送网关,网关推送给我们,结果解析网关给过来的XML是出现了问题,一抓包发现是请求里头多了一些MultiRef的标签,不符合原先的WSDL定义。比如说userIdType,按正常来说应该是:
<userIdType type="soapenc:int">1</userIdType>
但是实际拿到的却是:
<userIdType href="#id1"/>
指向的是一个id1的标签,需要从下文里头去找出具体的值:
<multiRef id="id1" soapenc:root="0" soapenv:encodingStyle=" "http://schemas.xmlsoap.org/soap/encoding/">http://schemas.xmlsoap.org/soap/encoding/"
xsi:type="soapenc:int">1</multiRef>
大概搜了一下,说其实是AXIS的一个特有的东西,甚至可以说是一个bug,AXIS2里头都已经取消了multiRef,要在AXIS1里头去掉这个也容易,只要改一下配置就可以了,于是联系网关的人,但是人家说这种int型就是用multiRef来传的,至于让他们改配置,自然不现实,人家说你用AXIS来解析好了。。。没办法,只能自己来弄了。
AXIS肯定不想用,这样的话就得大改。找了一下,网上有方法可以直接把格式转换一下,但是似乎略显复杂,而且接口相对于原来的程序而言也不太合适,于是还是决定自己解析。原先只是根据WSDL生成了请求对象,内容是使用SAX来解析的,大概的代码就是这么几行:
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
VACReqHander handler = new VACReqHander();
parser.parse(in, handler);
主要就是这个VACReqHander,它继承了org.xml.sax.helpers.DefaultHandle,并且重载了其中的一下方法,这些方法会在适当的时候被parser调用。主要的方法有:
public void startDocument() //开始时被调用
public void startElement(String uri, String localName, String qName, Attributes attributes) //元素开始时被调用
public void characters(char[] ch, int start, int length) //取到值的时候被调用
public void endElement(String uri, String localName, String qName) //元素结束时被调用
public void endDocument() //结束时被调用
原先的实现比较简单,在startElement()里头把key放到一个全局的变量里头,即:key = qName,然后再characters()里头根据key来判断具体是哪个元素并且赋值,比如:
if ("userIdType".equals(key))
req.setUserIdType(Integer.valueOf(data));
但是这种只能处理标准格式的数据,如<key>value</key>,但是类似<userIdType href="#id1"/>这种数据的话characters()根本就没有被调用。大概debug了一下,发现这些都被放在startElement()的attributes对象里头。这样就好办了,首先定义几个变量来保存数据:
String userIDtypeHref = null; //userIdType元素里的href对应的值,去掉#号,这里即id1
String multiRefID = null; //multiRef元素里的id对应的值,这里即id1
Hashtable<String,int> multiRefs = new Hashtable<String,Internet>(); //存储multiRef里头id和值的对应关系,这里即id1=1
然后在startElement()里头设置变量:
if(qName.equals("userIdType")){
userIDtypeHref = attributes.getValue("href").substring(1);
}
if(qName.equals("multiRef")){
multiRefID = attributes.getValue("id");
}
然后在 characters() 里取得multiRef里的value,并存储到Hashtable:
if ("multiRef".equals(nodeName)) {
if (refid!=null && isDigit(data))
{
multiRefs.put(multiRefID, Integer.valueOf(data));
}
}
最后在endDocument()设置一下userIdType的值:
if (req.getUserIdType()==0 && userIDtypeHref!=null)
req.setUserIdType(multiRefs.get(userIDtypeHref));
其他int类型的值,比如updateType可以同样处理
昨晚和卖铁板烧老板的对话
昨晚10点多了卖铁板烧的才出来,俺下去买了点,顺便和老板聊了聊:
俺:今儿这么晚才出来啊?
老板:是啊,太早了不敢来。
俺:前几天都没来吧?
老板:对,雾霾天不让出来。
俺:怎么就你一个人呢,你媳妇儿还在老家呢?
老板:没,她在前面看着呢,要不然这摊子都没了。。。
俺:今天这么晚了不会来了吧?
老板:他们也不想啊,但是上面催得急也没办法啊。。。
晒晒北京的蓝天
雾霾天
这雾霾天,真是无奈啊,真想逃离。。。唉
虽然空气不好,但是总不能一周都不出门吧,上周日带大宝出去玩,后来太阳出来了,大宝指着太阳说:婆。我说这是太阳公公,关外婆什么事儿啊。大宝继续指着太阳说,婆。我后来突然领悟了:对对,这是月亮婆婆,看起来还真像是月亮。到这周连这“月亮都见不着了”
这雾霾一来,每晚必定摆在楼下的铁板烧都不见了,按说人应该没那个自觉,空气不好就不做生意了,可是这娘的雾霾关人家铁板烧有屁事儿啊,人顶多也就是产生点油烟而已,政府也就能管管这点闲事儿了。
传说中的风还没来,下午雨倒是先开始下了,也没带伞,看看雨也不大,冒雨骑车回家,也还好,可能是雨已经下了一会儿了,身上没发现泥点子。晚上空气好多了。
让今晚的北风来得猛烈些吧,就是不知道大风之后能维持几天?最好把北边的山炸一大口子,让蒙古高原的风天天都来吹一吹。


























