设计中的设计

刚看完《设计中的设计》,属于慕名而读,作者原研哉(目前在无印良品设计委员会)。刚好是一本好书,我对好书的判断基本上有两个,一是带来信息代表适合;一是引发思考。这本书开始尝试解决一个问题,「设计是什么?」,由此引入「设计」这一概念的原点和历史。并根据自已给了解释: 我的专业是信息传达,但我觉得信息传达的目的并不是通过强烈的视觉冲击来吸引人们的注意,而是要慢慢地渗透到五官中支。在人们还没有注意到其存在时,成熟 、隐秘、精密、有力的传达已经完成了 … 设计绝不仅仅是制造技术 … 设计是从生活中...

Continue reading →

美国B1/B2签证的一些经验

据说现在 B1/B2 的已经卡的不是很严,只要没有移民倾向一般都没有问题。面签当天楼梯大家在讨论,基本上都会有两个问题,「为什么去美国」和「有没有去过其他国家」。问我的问题则是,Kijiji 是哪个国家的语言(因为我是百姓网的员工,她似乎很了解 eBay 和 Kijiji),结果我忘记了,然后跟她笑聊了几句,就说「OK,没问题」,然后就莫名其妙地出来了,还担心会不会通过,不过事实上只要不要拿小红条应该就算过了。 整个过程很简单,如果你也有兴趣出去美国人民的「水深火热」也可以支申请: 周日填 DS-160 申请表,顺路网上付款(记...

Continue reading →

「程序八卦」第一期

自动 Google 宣布要关了 Reader 后就很少盯 RSS了,一直在寻找比较稳定的获取信息的渠道,结果假期在家看《程序员》杂志觉得不错,即使内容有点慢。不过 iPad 上的排版实在是太烂了,于是决定自己尝试一下做杂志的感觉。结果就是有了这一本「程序八卦」。算是第一期吧。这本的目标是: 这本是一本免费,且将永远免费的杂志,叫「程序八卦」。如其名,内容将会围绕程序,而非程序员本身,所以会包括源码、视觉和交互体验,当然也会 有程序员。期望像狗仔一样有「抛根问底」的八卦精神;也期望像标语所描述的「 to read, think, and hav...

Continue reading →

5月25:W3CTECH 上海交流会

休假回来,看了一下后台的报名数,122 位同学,就在这周六,玉伯、沉鱼、Hax、Goddy 等这一群人,将会在「上海市 徐家汇 广元西路55号 浩然科技大厦 2楼 百姓网 2013/5/25」聚在一起,免费酒水,轻松的环境,没有广告,没有招聘,只有技术和技术生活。 周六的时候邀请的邮件已发出,你确认了吗?上次说了「这次嘉宾很强大我们随便说吗?」,看了报名的数据后想补充一句「这次报名的同学很强大我会随便说吗?」。这周会开始准备 Review 分享的 Keynote,准备会场需要的东西。参与的同学,如果能确认一下邮件,将能帮我们更好地准备这一...

Continue reading →

Qcon 北京:做一件事

去 Qcon 北京,主要是随同事去听听、聊聊大家在做些什么事,如何做。几场分享,几个饭局,聊了一些生活、技术和团队上的事。或深或浅,对我来说,大家都在做一件事,一件值得记下来的事。 一、做自己擅长的事 听了 Jing.fm 创始人的演讲,他们在做一件事,解决生活中最基本的,市面上所有音乐提供商却都没做或者做不了的服务:语义搜索。比如我们最常见的一个需求,「想听适合阅读的音乐」,Jing 可以帮助你挑选,并且播放。想想之前一直有这样的需求,但却没办法轻松实现的方法,而虾米音乐有很多人提供了「精选集」这个折衷方案,所...

Continue reading →

给一个表单做前端验证

昨天中午帮朋友解决了一个表单验证的问题。他说怎么使用你做的 validator.js 总是调不通,看了一下他的代码,大概是这样的: $('.form').validator({ errorCallback: function(unvalidFields){ // 写了一大段操作 DOM 的东西 } }) 后来我把他的代码删了,改成了这样一行,事情解决了: $('.form').validator() 其实这是很多验证程序所做的事情就是配置,所以朋友脑中第一反应是,这事不会这么简单。当然,通常来说他们都不简单,但运行的正常。是不是能做得更简单?刚好最近重构完百姓网的发布,说说自己的一些想...

Continue reading →

使用 Shadowsocks 出墙

Firefox 似乎不知道从那个版本升级后, SSH + AutoProxy 工作起来就不是那么顺畅。Twitter 有时候连得上,有时候又不行,Facebook 就直接断开了。晚上又运作不正常,局域网太受不了,所以… 细节就不说了,弃 SSH + AutoProxy 的模式,试用了 Shadowsocks。 有 Python 版本,不过由于自己比较习惯 Node,所以用的是 Shadowsocks for Node。要它工作非常方便,在远程服务器和本地各 git-clone 下来一份,然后做下面两步: 一、在远程服务器上 1. 修改 config.json: { "server": "127.0.0.1", // 推...

Continue reading →

Input 的禁用、只读和隐藏

上周遇到一个问题,为了不让用户改手机号码,把一个 input 设置成 disabled="disabled",导致手机号码没有根据 Form 提交到后端。 对于 disabled 和 readonly 两个属性,W3C: Disabled and read-only controls 是这样讲的: In contexts where user input is either undesirable or irrelevant, it is important to be able to disable a control or render it read-only. For example, one may want to disable a form’s submit button until the user has entered some required data. Similarly, an author may want to include a p...

Continue reading →

说说阅读

发现,看屏幕和实体书都有一样的感觉,字,都变成 3D 的。意识到是时候删除手机上的赛车游戏了,Need for speed / CSR Racing / Asphalt 已经吃去太多时间。环境这样的外因,有时候不小心就把不强大的内因给吞了,还好保持着阅读的习惯,她总能让人发现问题。那么,顺路平静一下,说说阅读这事吧。 说句不腰酸的话。自己从来不是爱阅读的人,直到现在,不过却一直坚持着翻书、清 Google Reader 和勾掉 Read it later 中的文章。说好听一点是养成了习惯,不好听一点是危机感在追,也就是事出有因(我想,本能也可以是原因)。 高中那时...

Continue reading →

处理 JS 异常的一个想法

可能由于网络、浏览器问题、缓存等原因,可能导致线上执行 js 的时候与开发环境并不一样,会抛出异常。js 异常基本上是前端开发工程师的家常便饭。如何记录,并使用它,却很少人关注。最近在考虑一个想法,基本上涉及到两步:收集和使用。 一、收集 对于 error 收集这一块,还是比较方便的,因为在各浏览器中都有一个接口:window.onerror: window.onerror = function(errorMessage, scriptURL, lineNumber) { alert(errorMessage, scriptURL, lineNumber) } 甚至中提供了 Stack Trace,比如在 try/catch 中还提供了 e.stack(...

Continue reading →