设计一种简化的 protocol buffer 协议

  • Post author:
  • Post category:IT
  • Post comments:0评论

我们一直使用 google protocol buffer 协议做客户端服务器通讯,为此,我还编写了pbc 库。 经过近三年的使用,我发现其实我们用不着那么复杂的协议,里面很多东西都可以简化。而另一方面,我们总需要再其上再封装一层 RPC 协议。当我们做这层 RPC 协议封装的时候,这个封装层的复杂度足以比全新设计一套更合乎我们使用的全部协议更复杂了。 由于我们几乎一直在 lua 下使用它,所以可以按需定制,但也不局限于 lua 使用。这两天,我便构思了下面的东西: 我们只需要提供 boolea…

继续阅读设计一种简化的 protocol buffer 协议

iOS APP可执行文件的组成

  • Post author:
  • Post category:IT
  • Post comments:0评论

iOS APP编译后,除了一些资源文件,剩下的就是一个可执行文件,有时候项目大了,引入的库多了,可执行文件很大,想知道这个可执行文件的构成是怎样,里面的内容都是些什么,哪些库占用空间较高,可以用以下方法勘察: 1.XCode开启编译选项Write Link Map File XCode -> Project -> Build Settings -> 搜map -> 把Write Link Map File选项设为yes,并指定好linkMap的存储位置 2.编译后,到编译…

继续阅读iOS APP可执行文件的组成

skynet 中如何实现邮件达到通知服务

  • Post author:
  • Post category:IT
  • Post comments:0评论

skynet 中可以独立的业务都是以独立服务形式存在的。昨天和同事讨论如何实现一个邮件通知服务。 目前大概是这样的:有一个独立的邮件中心服务,它可以处理三条协议: 向一个 mailbox 投递一封邮件。 查询一个 mailbox 里有多少封邮件。 收取 mailbox 里指定的一封邮件。 用户读了多少邮件没有放在邮件中心,而是记在玩家数据里的。 用户的界面上需要显示是否有几封未读邮件,如果有新邮件达到,这个数字会自动变更。你可以想像成 iOS 上的那种带数字的小红点。 当然,在 skynet 的…

继续阅读skynet 中如何实现邮件达到通知服务

sproto 的实现与评测

  • Post author:
  • Post category:IT
  • Post comments:0评论

这个周末,我实现了上周设计的简化版 protocol buffers 协议,并重新命名为sproto。 在实现过程中,发现了许多编码格式上可以优化的地方,所以一边实现一边做调整,使结构更适合编码和解码,并且更紧凑。 做了如下改动: 由于这个东西主要 binding 到 lua 这样的动态语言中使用,所以我不需要按 Cap'n Proto 那样,直接访问编码后的数据结构(直接把数据结构映射为 C/C++ 对象),所以数据对齐是不必要的。 编码时的 tag 如果要求严格升序也可以更快的处理数据,减少…

继续阅读sproto 的实现与评测

以普通用户启动的Vim如何保存需要root权限的文件

  • Post author:
  • Post category:IT
  • Post comments:0评论

在Linux上工作的朋友很可能遇到过这样一种情况,当你用Vim编辑完一个文件时,运行:wq保存退出,突然蹦出一个错误: E45: 'readonly' option is set (add ! to override) 这表明文件是只读的,按照提示,加上!强制保存::w!,结果又一个错误出现: "readonly-file-name" E212: Can't open file for writing 文件明明存在,为何提示无法打开?这错误又代表什么呢?查看文档:help E…

继续阅读以普通用户启动的Vim如何保存需要root权限的文件

Ocotpress集成多说评论

  • Post author:
  • Post category:IT
  • Post comments:0评论

Octopress默认自带了DISQUS,但是对于国内不是很好用。于是一开始替换了国内的友言。但是后来发现用友言的人不多,而且感觉友言加载速度比较慢。然后就是到了今天的多说了。官方并没有给出具体针对Octopress的解决指导。我这里记录一下如何集成,并且解决一些常见的问题。 集成 来说评论框 这就是多说提供的通用代码中,其实理论上以下三个值通过javascript都可以得到的。 linenos:false1 2 3 <!-- 多说评论框 start --> <div clas…

继续阅读Ocotpress集成多说评论

如何让 PHP json_encode 函数不转义中文?

  • Post author:
  • Post category:IT
  • Post comments:0评论

如果你调用 PHP 自带的json_encode()函数, 碰到中文时, 中文会被转义掉. 例如: echo json_encode(array('你好')); // 输出: ["\u4f60\u597d"] 这非常恼人, 像是一堆乱码, JSON 标准从来没有说要把非 ASCII 字符转义, 标准说的是”Any UNICODE character”. 如何禁用掉这种转义呢? 答案是, PHP 自带的 json_encode() 不能禁用这个特性(在 5.4.0 版本之前),…

继续阅读如何让 PHP json_encode 函数不转义中文?

安装数据库软件时,找不到所有节点

  • Post author:
  • Post category:IT
  • Post comments:0评论

某客户用runInstaller安装RAC软件时,在勾选节点的窗口找不到任何的节点。我们可以参考mos上的这个文档进行修复。 Database runInstaller “Nodes Selection” Window Does not Show Cluster Nodes (Doc ID 1327486.1) ${clusterware-home}/oui/bin/runInstaller -silent -ignoreSysPrereqs -updateNodeList ORACLE_HOM…

继续阅读安装数据库软件时,找不到所有节点

tahiti已死,docs接班

  • Post author:
  • Post category:IT
  • Post comments:0评论

如果你近期访问著名的oracle在线文档的网站tahiti.oracle.com,你会发现这个网站已经不再提供服务,在网站上只留下一段话: Tahiti index no longer available   All Oracle documentation is at docs.oracle.com. 从改版到小清新,到停止服务,让不少老oracle玩家唏嘘不已,目前所有的在线文档,都转移新的docs.oracle.com进行访问。不过转移过去的文档,也只有从10g之后的文档,之前的文档你一般…

继续阅读tahiti已死,docs接班

搬家

  • Post author:
  • Post category:IT
  • Post comments:0评论

转自微博:IT土豪刘老师问我,你有没有一种感觉,就是其他人活的比你轻松幸福一些。我说嗯,常有,这一定是错觉对吧。他说,哦,那倒不是,应该都是真的。 我也时常这么感慨啊,可是感慨归感慨,自己还是要过自己的生活。 这两天在打包,准备搬家,为了陪伴孩子上小学,搬去小学附近租房,这一去不知何时还能搬回到这里、会不会再搬回到这里,但可以确定的一点是,即使能回来,到那一天,这里也必然不似今天这般模样了。 这个家承载着我们不多的6年多的时光,但它又那么难以释怀,它陪伴斯屹从十月怀胎一直到准小学生,又陪着斯诺走…

继续阅读搬家

HTTP 长连接技术 Comet

  • Post author:
  • Post category:IT
  • Post comments:0评论

人们常常提到”Comet”, 或者”Web 服务器推”, “HTTP 长连接”, 事实上, 他们指的是同一件东西, 可以统称为 Comet 技术. 但是, Comet 技术又不是单独的一种东西, 而解决某一个问题的许多技术的统称. 要解决的问题是 Web 服务器向浏览器实时推送数据, 而解决方案有很多种. 最经典的方案是 AJAX 轮询, 这种方案和”推”技术毫无关系, 只是由于轮询的间隔比较短, 如一两秒, 便给了用户实时的错觉. 新下来是安装浏览器插件, 如 Active-X, 或者使用 F…

继续阅读HTTP 长连接技术 Comet

日语中的ます形

  • Post author:
  • Post category:IT
  • Post comments:0评论

初学日语时,学到的动词的形式必然是ます形,当然也就是动词的敬体形,当然初级考试也主要以敬体形为主。 敬体形和简体形 日语中存在两种所谓的形式,一种是敬体,一种是简体。通常根据通过对话可以判断上下级等说话双方的关系。 敬体形使用环境 工作中的下级对上级需要使用。 晚辈对长辈需要使用。 陌生人之间也需要使用敬体形,不然显得不礼貌。 简体形使用环境 工作中上级对下级可以使用 长辈对晚辈可以使用 关系熟的人之间可以使用。 ます形如何变化 五段动词:词尾う段变成同行い段,然后加上ます。e.g. 言(い)う…

继续阅读日语中的ます形