这是我们的时代

| Comments

wz

今天偶然看见这本的标题,有种肃然起敬的感觉。这个时代就是这么任性,无知,傲慢,聪明的人,还有比你自己还要了解你自己的人。

A Toy From 2014 Active Hackathon

| Comments

hackathon

这次参加公司举办的 2014 active hackathon 活动,由于准备不足,想法不充分,导致有很多遗憾;在这里记录一下,谨记。

其实那天 hack demo 的时候,演说就有很多不妥的地方,其实我更想说的是我们想做成类似 Disqus 那样的产品,他们是社区评论,我们是聊天讨论外加产品体验反馈。其实只做聊天也没有什么不妥,别忘了互联网20年最有价值的产品仍然是聊天和bbs社区。当然了,这里说产品都有点过了,整个36个小时,想做出什么产品是不可能的,最终的结果只能说是一个产品原型或者说是工具,玩具更妥当一些。由于我们这次做的玩具,是可以无侵入式的部署到任何网站,只需要一段 javascript 代码就可以 Run it on Every Website,所以当天 hackathon 结束前,我们就成功的拥有了2个客户(有2个参赛team愿意用我们的这个工具)。hackathon之后,我认真的修复了一些bug后,将它部署到外网,所以它现在也被我的博客用了起来,就在这个页面的右下角,你会发现一个聊天的按钮,点击它,就可以看见这个玩具了。你可以用它来和访问这个网站的其他人聊天,或者向当前网站拥有者提一个建议,或者报告一个 bug。对的,它就是这么简单,没有繁琐的注册,也没有人询问你来自哪里,只需要提供你的名字,你就可以和全世界任何地方的人聊天了。

这个工具全部由 Node.js 构建,使用了出名的 socket.io,感谢Node.js社区的蓬勃发展。

由于其他一些原因,目前我还不能开放获取嵌入脚本的通道,所以如果你也(ˇˍˇ) 想~将这个工具与你的网站集成,请给我发邮件或者在评论中说明,我会发一段 js 代码给你。希望你能玩的开心。

P.S. 题图来自 csee.umbc.edu

在 Console 里面执行Javascript代码

| Comments

我们经常会临时测试一些Javascript代码,一般我们会用 Chrome Developer Tool 来执行我们的代码,它确实比较方便,还可以和 DOM Html 结合。但另外一些时候,如果我们的代码比较多,而且也不用操作DOM,那么有没有一个工具能像 Ruby 的 irb , pry 那样在控制台里执行我们的代码呢?当然有,那就是我们的老朋友: Node.js,安装完后,就可以直接在控制台里键入: node ./file-name 这个命令来 run 我们的 Javascript 代码了。如果你希望更近一步, 想run你的 Coffeescript 代码,那么你可以通过 npm 包管理工具安装 coffee-script,安装之后,你可以直接在控制台里键入:coffee ./file-name 来 run 你的coffee代码。

从 Mongoid 3.x 升级到 Mongoid 4.x 的注意事项

| Comments

今天发现从 mongoid 3.x 升级到 4.x 后有个比较大的变化,就是以前默认可以写入动态字段,现在默认是静止写入动态字段。如果以前你有很多操作是向document保存未经定义的字段,那么升级到 4.x 后就要小心了,因为这些操作在新版本中都将不会成功,并且会抛出 Errors::UnknownAttribute 的异常。4.x 同时移除了 allow_dynamic_fields 这个配置项,以前通过这个配置可以开启或者禁止写入动态字段,而现在由于没有这个配置项后,4.x 提供了另外一个解决方案,就是在你允许写入动态字段的model里面 include Mongoid::Attributes::Dynamic , 这样确实大大增强了安全性,让安全的粒度更细了。另外一个要注意的是,目前虽然已经放出了4.0,但是mongoid的文档还没有更新,文档里面仍然还有让用户配置 allow_dynamic_fields 的介绍,这个确实是一个误导。如果需要了解更详细的变更介绍,目前唯一可行的就是查看 4.x 的 CHANGELOG

升级到 OSX Yosemite 遇到的一些问题

| Comments

Yosemite 的漂亮实在是让人无法抵挡,怎么能不升级呢?不过每次升级后都会遇到一些问题,这次也不列外,在这里做个记录:
1. MacVim 不能用了,开启后无window的毛病又来了,先是尝试从source编译安装没有用,最后通过 brew 重新安装 MacVim ,重新link 搞定。
brew install macvim
brew link macvim
2. 关于Ruby的问题来了,没办法只有通过 rvm reinstall ruby-xxxx 。 gems 相关得问题如下:
a. libv8 安装有问题,导致依赖它的 therubyracer 也无法编译;解决方法就是将它们全部升级到最新版本。
gem ‘libv8’, ‘~> 3.16.14.7’
gem ‘therubyracer’,’~> 0.12.1’, :platforms => :ruby
b. rmagick 又无法编译了,真TM是老生常谈的问题,每次升级都会遇见,不过这次有点特别,折腾了我差不多一天;在这里就直说解决方案吧,这个gem依赖两个需要事先安装的组件: ImageMagick 和 pkg-config , 记住不管你通过何种方式(source编译或者brew install)安装这两个组件,都务必保证这两个组件的可执行文件: Magick-config, pkg-config 都被安装到同一目录,比如都安装到 /usr/bin 或者 /usr/sbin ;不要以为你把他们link到不同目录,但设置了PATH搜索路径能够全局访问就万事大吉了,这不得行!必须安装到同一个目录,或者你软link到同一目录也可以。实在搞不懂这个gem的作者为什么要这么干?
3. To be continued…

入手 HHKB Pro2

| Comments

在看了无数的评论和逛了N久的论坛后,终于入手了 Happy Hacking Keyboard Professional2,这个键盘界的神器。 拿到之后,还是感觉她是如此的小巧,可以直接放到MBP的软键盘上,大小刚刚可以覆盖原有的键位,有种专为MBP定制的感觉。 当然刚开始用的时候,肯定会有不适应,因为:

  1. 没有方向键,所以,如果以前用惯了方向键,就会感觉很不爽,毕竟hhkb组合式的方向键是很不好打击的。
  2. delete 键的位置和大多数键盘的位置不一样,所以刚开始老是按错。
  3. ~ 键在右上方,而不是左上方,这个键在Linux上会经常用到,所以会存在不适应。
  4. control 键 在普通键盘 caps lock 的位置,这个虽然说是hhkb的一大优点(因为很多快捷键依赖control),但刚开始你会习惯性的按错。

告别 Octopress 的默认主题

| Comments

之前一直在使用 Octopress 的默认主题,虽然觉得很丑但还没有被恶心到,直到某天我被恶心的吐了。所以决定自己重写一个,就是目前你看到的这个,它很简洁,使用 Bootstrap 3 和 几个 Google font 组成。我一直很喜欢 Twitter 的网页设计风格,并且觉得 纽约时报中文网 的新闻详情页面设计的也很漂亮。希望能向它们学习的更多。

Mosh - a Shell Tool Better Than SSH

| Comments

Mosh 来自麻省理工,拯救一大群被SSH困扰很久的人们。

SSH有那些困扰呢:

  • 在不同internet连接之间切换时(比如VPN和普通internet,3G网络),必须重新开启新的SSH会话,因为之前的session会被关闭。
  • 关闭和开启internet连接后,也必须重新手动连接SSH,还是因为会话被关闭的原因。
  • 在使用SSH的过程中,如果服务器设置不当,经常会被timeout,造成整个屏幕假死。解决办法是:只有重新开启连接,或者想其他办法,一直保持连接。

如果你还是个使用SSH的Linux管理员,那么这些困扰简直就是无法忍受的折磨。

现在 Mosh 来了,解决了这些问题,它可以完全替代SSH,只需要在以前命令行的地方使用”mosh”简单替换”ssh”这三个字母,就可以解决以上的所有困扰。建议认真看看,Mosh 官方文档的前半部分,因为那里列出了该工具的各种引人入胜的优点。 其他部分,官方网站已经说的足够明白了,这里只说几点需要注意的:
1. Mosh 的简单原理
 a. 它分为客户端程序(mosh-client) 和服务端程序(mosh-server)。
 b. 首先mosh通过ssh连接到你的服务器,然后在服务器上启动 mosh-server,然后它关闭ssh连接,在客户端一侧启动 mosh-client 让它通过UDP连接上 mosh-server 。
 c. 之后一直保持并监视这个连接,用户可以通过客户端做任何以前通过SSH所能做的一切操作。 如果客户端网络有异常,或者掉线,mosh-client会给出警告,并且自动重新连接。只要 mosh-client 不被kill,它就会一直尝试保持连接。 所以任何时候,你都不会掉线。
2. 关于安装
用户必须在客户端和服务器上都安装 mosh,但是不需要手动去启动 mosh-client 或者 mosh-server,因为每次使用mosh命令,这两个程序都是自动启动的。
3. 关于UDP端口
由于mosh会尝试连接从 60001 到 60999 之间的端口,所以服务器防火墙只需要开放这个端口范围内的某个端口就可以了。要不然,mosh-clien就无法连接到服务器。

搜狗拼音导致MacVim不断产生 Conversion 警告

| Comments

换到MacVim 7.4 后,在控制台时不时的会出现这种警告信息:

1
2
3
4
5

2013-09-12 22:14:40.122 MacVim[1382:60b] Warning - conversion from 64 bit to 32 bit integral value requested within NSPortCoder, but the 64 bit value 9223372036854775807 cannot be represented by a 32 bit value
2013-09-12 22:14:40.122 MacVim[1382:60b] Warning - conversion from 64 bit to 32 bit integral value requested within NSPortCoder, but the 64 bit value 9223372036854775807 cannot be represented by a 32 bit value
2013-09-12 22:14:40.154 MacVim[1382:60b] Warning - conversion from 64 bit to 32 bit integral value requested within NSPortCoder, but the 64 bit value 9223372036854775807 cannot be represented by a 32 bit value
2013-09-12 22:14:40.154 MacVim[1382:60b] Warning - conversion from 64 bit to 32 bit integral value requested within NSPortCoder, but the 64 bit value 9223372036854775807 cannot be represented by a 32 bit value

最开始一直认为是MacVim的Bug,并且还写了篇警告文字发表到ruby-china论坛里面,当时发现很多人都没有遇到过这个bug,虽然觉得奇怪,但苦于一直找不到原因。有怀疑过是插件的问题,但是排查又麻烦,所以就只好作罢。
直到今天才发现是搜狗拼音MACOS版造成的这个Bug,并且即使下载最新版本的搜狗拼音(2.5.1)也可以稳定重现这个问题,随便在MacVim里面开一个新的tab,用搜狗输入法输入中文,控制台里面就会不断出现以上那些警告信息。目前的解决方案就是: 使用其他中文输入法。我的测试发现,使用内置的中文输入法和QQ拼音输入法 都不会造成这这个Bug 。