我的技术和生活

  • 毁个马屁段子:让老板先说话

    业务代表、行政职员、经理一起去吃午餐,意外发现一个古董油灯,他们摩擦油灯,一个精灵从一团烟雾中冒了出来。

    精灵说:“我通常都给出3个愿望,所以你们一人一个。”

    “我先!我先!”职员抢着说,”我要去巴哈马,开着游艇,自在逍遥。”噗!她消失了。

    “换我!换我!”业务代表说,“我要在夏威夷,和女按摩师躺在沙滩上,还有喝不完的pinacoladas(凤椰汁),和生命之爱。”噗!他消失了。

    “好了现在该你了。”精灵对经理说。

    经理说:“我只希望他们两个吃完午餐就回办公室。”

    记住,要让你老板先说话

    这是个常见的马屁鸡汤,用一则笑话引出来一段貌似深刻的道理,劝说大家牺牲自己的真实内心,以老板的需求为重。可惜编鸡汤的人不知道是智力不够还是太关注马屁忽视了全局,这则故事的核心思想明明是:

    千万注意,别跟着一个傻B老板还不自知啊!!

    最后,值得庆幸的是,我现在的老板非常值得信赖啊啊啊~

  • 前端框架点评

    前两天被人@,提问前端框架的问题。这还是第一次在微博上被陌生人提问,感觉有点小激动。今天写篇小文章,简单点评一下我用过的前端框架,希望对大家有所帮助。

    本文涉及的范围

    本文要点评的前端框架,都是我用过的,以JavaScript框架为主,也可能包括一些工具类库。由于前端的特殊性,弱语言HTML和CSS是必不可少的工具,运行机制导致很多成熟的工程学方法没法用,必须用工具库补充。烦请大家不要抠字眼,我一向很马虎,呵呵。

    Bootstrap

    一定要先推荐Bootstrap。它由Twitter的两位工程师首创,当前版本2.3.1,涵盖了文本、布局、表单、工具,除了暂时没有日期选择器之外,几乎包含了网页所需的一切。我们知道,网页出现是为了传递信息,而成熟的印刷业对其影响很大,表现出来就是,HTML中很多标签,比如H1~H6p等,都是有具体语义的。但很多前端框架并未给予他们足够的重视,所以往往需要我们重置或者自己动手写。Bootstrap则不是这样。它不仅包含大量组件,还帮助我们给每种可能用到的语义标签都定义了样式,又设计出很多helper;而其网格系统也能帮我们出色完成排版工作。总而言之,使用它几乎足以满足任何网页开发需求。

    值得一提的是,Bootstrap的组件和Widget都基于HTML标签构建,非常好用;而响应用户操作则基于对document的侦听,所以几乎不会对我们其它代码逻辑造成影响,我们可以放心大胆的在项目当中使用。当然,Bootstrap依赖jQuery,后者近期遭遇到一些纷争。不过我还是要强烈推荐这个框架。

    jQuery UI

    比较遗憾的是,虽然号称UI,但jQuery UI只能算作一个组件库。因为缺少基础排版支持,所以既想使用jQuery UI,又想和自己的样式保持一致会有些困难,需要花费不少时间做修改。

    抛开这一点,jQuery UI也是个很好的工具,几个widget都很实用,文档丰富详实,如果项目本身对交互要求不高,只是个别地方需要一些功能补充,jQuery UI确实是不错的选择。尤其当我们需要draggablesortableresizable这几个功能时,选择的余地真的不大。

    HTML5 Boilerplate

    这个工具力图给开发者提供一个舒适的起点。他们为项目建立了标准化的目录结构,并且把常用的资源都整理在合适的位置,这样我们只需要替换它们就能保证项目对所有浏览器都有完美表现。同时,他们重置了CSS,引入了GA统计,在页面中标记了合适的输入点,这样我们能尽快投入到项目逻辑的开发中。

    但这个工具的问题也很明显,它努力达成的目标,是消弭浏览期差异。假如我们只需要统一的环境就能开展工作,那H5B就足够了;而实际上,我们通常需要更多,比如排版、比如组件。所以,这个工具对我来说,学习的意义大于使用的意义。

    HTML KickStart

    我见过的前端框架里只有这个跟Bootstrap的覆盖面接近。它的设计更好,更鲜艳更有活力,不过最近的开发好像慢了下来。我并没有真正使用它,因为它的组件太少了。

    Backbone

    非常好的MV*框架,真的像根脊柱一样,把被jQuery拆的七零八散的js统一在合理的框架内,让整个项目都变得协调了。引入Collection真的很天才,结合其出色的View设计——其实Backbone的View并不是传统意义上的View,更像mediator——可以看出,Backbone的设计者对Web开发有着深刻理解。哦,差点忘了,Router还能帮我们很好的整理单页应用的逻辑。

    不过js毕竟是一门很烂的语言——或者让我换种表述方式,缺陷很多,所以它尚无法做到像AS3的Robotlegs那样好。不过,如果我们希望把代码组织的更好,Backbone类的框架是不可或缺的。

    Rachet

    Rachet的目的和架构,很像Bootstrap,不过它瞄准在移动端。Rachet现在仍处于比较低级的阶段,组件太少,开发起来不太方便,最多相当于Kickstart把。可惜的是,移动端移动框架普遍较弱,在我看来,基于它的Junior仍然是不二之选。

    Zepto

    说到移动端开发就不能不提Zepto。它力图实现一个十分类似jQuery的库,不过只考虑支持移动端,所以体积会小很多,速度也会快不少。Zepto的升级频率最近也不高,不过还是到了1.0。新版Zepto放弃了ruby,使用coffee作为编译工具,支持使用者自由组合功能模块,相当贴心。

    不过具体使用时,还是会有一些函数的用法和jQuery不同,需要注意。举个例子,css函数,jQuery里支持数字,比如$('div').css('height', 100),会把页面中所有div的高度设置为100px;而Zepto不行,必须$('div').css('height', '100px')才会正常工作。

    jQuery Mobile

    强大的jQuery团队最失败的作品。贪恋于风光的过去,迷信“全覆盖”,使得jQuery Mobile步履蹒跚,在移动平台上无法取得足够好的性能表现(早期版本甚至不支持固定底部)。而这直接带来了对HTML在移动端的质疑。有很多本不擅长前端开发的人,看到Phonegap,就直接上jQuery Mobile,结果发现性能不行,体验很差,便在各种渠道大放厥词,说HTML不行。这种行为直接伤害了HTML和Hybrid应用。

    jQuery Mobile失败不仅在于此。jQuery本身方便快捷,使用它很容易养成不重视代码组织的习惯;而在移动端,单页应用占据主流,这意味着,使用jQuery Mobile很可能无法良好的组织代码,直接带来项目维护成本的提高。另外,早期版本的设计也不可避免的带有大量Web痕迹,导致实用性不足。所以直到今天,jQuery Mobile都还是个悲剧。

    不过,jQuery 2.0已经beta2了,我们知道,jQuery 2.0里放弃了对IE678的支持,性能会得到不小的提升;jQuery Mobile 1.3已经引入了对hash的支持,组织代码好多了;同时,随着3次小版本更新,越来越多适用于移动应用的组件加入进来,大大扩充了军备库。我认为,未来的jQuery Mobile,值得一试。

    Sencha Touch

    大家可能还记得,Facebook闹过一阵,说HTML5不够好,还把他们的手机客户端用原生重做了一遍。之后Sencha的两位工程师表示不服,以HTML5为基础开发了功能几乎完全一样的客户端,他们用到的框架就是Sencha Touch。据说,它的性能比jQuery Mobile好不少。

    但是,真正用了就知道,sencha touch实在太不“前端”了。它里面几乎没有给HTML和CSS留下太多位置,明明十分强力的布局样式工具,被封装成了单薄的接口;但是没少往JS框架里加内容。结果就是用起来非常复杂,随时需要看文档;自定义困难,它里面甚至有一个属性叫“html”,用来填入大段文本类型的html;数级嵌套起来的对象也很让人头疼,而且感觉维护也不会太容易。所以我做了一半就还是放弃了。劝大家也别去尝试了。

    如果有哪位高人愿意以实际经验教育我的,我洗耳恭听。

  • 兰卡威流水账:吉隆坡

    现在真是越来越懒,再不写就该彻底忘干净了,赶紧写篇,省得都要去下个地方了。

    (更多…)

  • 2013年春节小结

    去年变化很多,今年的春节也就不同以往。

    1. 老婆姐姐生了小龙仔,她就回重庆了,继两岸三地及北京答谢会后,迎来了第一次各回各家
    2. 政府想起来修路,要拆我们家房子,那就拆呗;结果今年家里几乎没做什么过年的准备
    3. 堂哥移民出去了,表姐1生了个儿子,表哥1跟媳妇去东北,表哥2公派到米国,表姐2和大姨在北京过年(并帮我照看姆依姆伊,感谢),家里格局正在变化
    4. 跟老爸老妈的处事方法差异太大,回来头几天吵来吵去,家里也没暖气,结果竟然咳嗽转上感再转感冒,到现在都没好
    5. 头几天困的厉害,想补觉;后几天感冒了要休息,春节几天基本啥事儿都没干,净睡觉了——睡得我都不想睡了……
    6. 家里老人身体都还不错
    7. 叔叔说借我辆车开,是手动的,我没敢借;结果春节几天路上几乎没人没车,倒是因为交通问题耽误不少时间,哎,该知道借了
    8. 搬新家后,得说服爸妈把生活档次适当提高一点
    9. 三线城市果然比不得北京,iPad类平板似乎还很相对高端,国产低端平板的质量太差,国内急需Kindle Fire或者Nexus 7/10之类的良心来建立市场
    10. 湖人继续不争气,科比继续先放狠话后输球……
    11. 出去旅游的人不少,大家对“年”的概念在向“假期”变化,而计划生育产生的小型家庭——三口之家,孩子结婚后变成四口或六口——使得旅行度假成为可能
    12. 几乎每天都能梦到姆依姆伊……

    总结,因为种种原因,今年春节过得比较颓废,现在回想起来,10天时间被荒废,还是很心疼。只有希望回到北京后,身体尽快好起来,状态也尽快回来。

    列下近期应该关心的事情:

    1. 产检,以及继续修正年内日程安排
    2. 督促表哥和老妈,给侄子建立起良好的耍平板机制
    3. 找回工作状态,如果可能的话,赶一赶进度
    4. 搬家后,要求父母在若干方面切实提高生活质量
    5. 赶在开动项目一周年前(3月20日)公布肉大师
  • 适用于垂直媒体官方微信的智能答复系统设想

    微信开放了公众平台的接口,很多网站和个人都接入了,包括我的老东家。不过大家好像都没有太大热情,也没投入多少技术实力,只把它当成微博外的另一个信息发布平台,每天定点发个手机报什么的。

    我前一段读了《数学之美》,还看了《黑客与画家》,很想尝试下里面介绍的机器学习法。看到微信公众平台,觉得在合适不过,于是难免要YY一下:

    1. 首先是“分词”。好在已经有很多开源免费的分词工具,能够提供比较好的分词结果。对于垂直网站来说,还需要能人工添加新词,或修正分词结果。
    2. 收集语料。把用户发给官方帐号的消息收集起来,留待分析。
    3. 分析语料。找垂直媒体做实验的好处就在这儿。通用平台的用户诉求各种各样,什么都有,做语义分析会很难(参见各种半残废的“语音助手”);垂直媒体的用户相对来说诉求简单些,无非是“查询”、“问价”、“求推荐”等。所以可以先给消息定性,然后统计在每种类型的消息中每个词语出现的概率。
    4. 按照贝叶斯推断,当我们收到用户发来的消息时,可以根据消息中的词来判定他的诉求。
    5. 系统实战:
      1. 用户发来一条消息
      2. 系统对消息进行分词
      3. 按照分词结果,判断用户诉求
      4. 按照设定好的策略,给出答复

    比如,用户发了一条“iPhone5水货多少钱”,那么会经历如下的过程:

    1. 分词结果为“iPhone5”,“水货”,“多少钱”
    2. 按照统计结果,出现“多少钱”的话,用户“问价”的概率是100%(实际肯定不是,这里当例子),所以系统判断这则消息是用户在问价
    3. 按照制定好的“问价答复”策略,我们找到产品名称“iPhone5”,限制“水货”,然后从经销商那里取出价格数据
    4. 按照“问价答复”模版,回填数据,发给用户,完成。

    又比如,用户发了一条“什么电信手机比较好啊,真心实意求推荐”,那么:

    1. 分词:“什么”,“电信”,“手机”,“比较”,“好”,“啊”,“真心实意”,“求”,“推荐”
    2. 按照统计结果,出现“比较”,“好”,“推荐”这些词的消息,“推荐”的可能性是90%,系统即可确认
    3. 按照制定好的“推荐答复”策略,找到限制因素,“电信”,“手机“,从产品库中查出来
    4. 按照“推荐答复”摸板,回填数据,发送,完成。

    似乎不复杂,对吧,哈哈?实际上应该会有一些技术门槛,不过大体上应该这样,有机会拿到数据的话,我就动手搞搞看。

  • 开始付费使用Adobe Creative Cloud

    几天前,我终于下定决心成为了Adobe Creative Cloud的付费用户,当然,感谢老板帮我买单。成为付费用户可以享受以下服务:

    1. 全套正版的Adobe软件
    2. 20G云存储
    3. 5个网站,用来发布作品
    4. 免费版的服务可以这里

    我很早就开始关注这个东西,一个月50刀的使用费其实不算贵,毕竟有全套Adobe软件可用,而且还附送那么多其它服务。不过还是纠结了一段时间,跟老板商量了商量,才终于下手。

    以后终于可以用上正版的Adobe软件了!

    PS:感谢Adobe!我的今天,有赖于我在过去10年中使用的盗版软件,其中很大一部分来自Adobe。感谢他们提供这种机会让我有机会对他们付出一些回报。(当然按照老罗的逻辑,这不叫感恩……)

  • meathill.com回归

    早年万网搞“一元域名”活动,就让朋友帮忙注册了“meathill.com”,以备不时之需。后来自己弄博客,就把域名指了过来,然后跟朋友说:“你别续费了,到时候过期了我重新注册,省得过户什么的太麻烦。”

    结果,等过期我去注册的时候,发现域名已经被人抢了,是一家国外专门从事域名买卖的公司。没办法,我只好注册.net域名继续搞博客。没想到几天后收到一封邮件,说看到我注册了“meathill.net”,是不是对“meathill.com”很感兴趣啊?可以便宜点把域名卖给我啊,只要几百刀就行。

    鬼才理他,我果断删掉邮件,不就一年么,慢慢等呗,反正博客也没啥人看。结果一年后,另一家域名买卖公司又跑来抢注了……然后我又收到封邮件……继续等,不能惯着他们。

    如今,可能终于发现这个域名卖不出去,没人再抢了。昨天whynot告诉我可以注册了,终于,meathill.com物归原主。

    这个故事告诉我们,外国流氓也很多。

  • 二维码小工具

    这两天利用业余时间,做了个二维码的小工具,用来在页面里插入二维码。这个工具比较方便编辑同学在自己的文章或者专题里添加二维码,推广手机应用,或者手机网站。——要么说第一份工作很重要呢,离开媒体那么多年,想做点独立项目还是跟编辑工作有关。

    工具地址是:http://meatqr.sinaapp.com/

    代码也是完全开放的,采用MIT协议,托管在Github上,地址是:http://meathill.github.com/qrcode.js

    有兴趣的同学试用下吧,记得给我反馈哟,我会不断更新维护的。


  • 2013年计划

    嗯哼,去年我对自己基本满意,既然熬过了世界末日,又要迎接新生命,2013年就必须更加努力了!

    回顾一下2012年初制定的计划,有一些随着时间流逝已经不想了,比如买投影机;有一些因为各种因素而有所改变,比如去年看了将近10本书。计划肯定服从变化,不过那并不影响制定计划,所以接下来就是2013年要做到的事:

    1. 减肥,目标105kg。如今搬到学校旁边了,减肥必须提升日程。失败的很彻底……
    2. 尽快完成发布肉大师,并将它打磨完善。之前写的不够好,准备彻底重构之
    3. Web开发提升 完成
      1. Require.js
      2. GCSS
      3. 部署工具
    4. 移动开发提升 虽然方向不一样,不管也算完成了
      1. Windows 8开发
      2. Flash Stage3D开发iOS和Android
      3. Phonegap
    5. 学会测试 完成
    6. 读10本左右的技术书籍 算完成一半吧
    7. 读若干本小说 完成
    8. 写完几个系列文章 失败,来年继续
    9. 完成几个独立项目 失败,来年继续
      1. 吸血鬼(手游)
      2. 来一发(应用)
      3. 聚享网(网站)
    10. 真正意义上的学会开车 有车了,哦也
    11. 买一台好点的相机 手机足够了,放弃
    12. 完成两部左右的小说/游戏设定 完成,可惜没时间做
    13. 最后,帮助公司取得超出预期的进步 大完成
    14. 所以,收入的涨幅,大约应该是30% 算起来差不多

    能否实现,还看今朝,哦也

  • 总结2012

    元旦长假,正是总结和展望的好时候。静下心来总结下去年,对来年应该会有帮助。

    工作单位

    我爱打工,所以这一年继续打工。前年离开Z公司后,转投来乐(现在应该叫磁聚乐),是我人生的一大转折点。关于Z公司——我还差最后一篇文章,不太好写,不过我今年一定把它结了——就不多说了。来乐是家好公司,有非常强的工程师文化,有非常好的技术经理Eidiot,我在那里学到很多东西,受益颇多,如果想换工作的话推荐大家考虑下。今年年初架不住Live邀请,又特别想快速改善生活,终于在4月份加入点乐,一晃就到了现在。

    我现在工作的挺开心,新的一年希望公司和我个人都有更大的发展。

    另,公司刚拿到一笔小钱,求靠谱设计师加盟。

    又另,我想找设计师长期合作各种试验性项目,求有空闲又想搞点什么东西的设计师合作。

    技术和开发

    加入点乐之后,我开始主攻HTML+CSS+JavaScript,间或做一些PHP和移动开发,几乎没碰AS,Stage3D之类的更是不明觉厉,不过新闻动态什么的倒是一直有关注。明年得空再补一补,做做游戏之类的练手。值得欣慰的是JS方面进步不小,啃完几本书,现在基本上大多数细节都了然于心。如今各种Hybrid技术层出不穷,Windows 8 开始支持直接用HTML5开发应用,明年要继续关注,多多尝试。

    框架方面,Backbone用的很熟了,这个框架设计的确实好,难怪那么多人喜欢。不过有机会的话,我也想尝试一下其它框架,比如Ember.js,或者Closure。UI方面,Bootstrap真是个好东西,可以节省大量的界面设计时间,还有很多配色可选。相比之下,jQuery UI就比较弱了,我现在基本只用其中的draggable、resizable和sortable。明年要继续学习,开始使用Require.js和GCSS,进一步提升效率。

    今年开始有目的的收集开源免费的设计类资源。

    今年接触服务器更多,加上平时用Mac,积累了不少Linux和服务器的相关知识。还尝试了在服务器端使用Git和Ant来部署代码,效果不错。

    Git用的很熟练了,包括Github、BitBucket在内的工具网站也不在话下,明年需要学习下Git服务器的搭建和Submodule的用法。

    开发工具方面,也尝试了WebStorm、NetBeans、VS 2012 Express等等,现在主要用NetBeans。

    2012年出了很多有意思的设备,价格便宜样又足,终于让我把所有平台都买齐,明年做一些应用出来玩。今年工作时候使用Mac,回家使用Windows,也学到不少东西,产生很多想法。

    今年投入了几个月时间在原创独立项目“肉大师”里面,现在已经基本成型,不过还需要再努把力,才好意思拿出来给大家看。这个项目对我的Web和Mobile的提升帮助非常大,将来我会把这个项目开源,自己也会投入大量时间把它做好。

    生活

    今年生活方面的变化也不少。同住4年半之后,堂哥他们于今年10月份顺利移民澳大利亚,留下我们继续在北京奋斗;我们也搬离了住了4年之久的知春路罗庄社区,到了老婆单位附近居住。

    国庆期间,带父母同游兰卡威,了却一桩夙愿。将来有机会,争取5口同游。

    上班坐地铁后,看书的时间多了不少,除了技术类书籍,今年还看了不少闲书,渐渐重拾起阅读的乐趣。不过与之相反,打游戏的时间越发少了,虽然基本上都会购买,但实际用来打游戏的时间不多了。

    最后,新的家庭成员即将到来。新的一年,有的忙了。