阿里的味道May 28, 2010

故事
背着背包,从走出公司的那一刻,思绪还是无法的平静。已经从阿里离职了,但自己从潜意识中还在问我自己,「我真的离开了吗?以后我的脚步该走向哪里」。
回忆从那年的面试,有人问我,「您为什么来淘宝?」。那时的我很桀骜的回答,「因为离我住的地方近」。那时的我觉得,那些「语出惊人」的回答能搏得众人的眼球,显得自己很与众不同。
进入阿里,那种自我的感觉逐渐的被消灭,是因为周围的同事们用他们的行动无声地教会了我什么是团队。
回到家打开背包,整理我平时的物品,逐张的翻阅战友们给我写的明信片。那些煽情的字眼本人自诩为已经免疫,但看见每个人笔尖留下的字迹,已然深处的那跟神经已经被触动。
双手拿着的那些已经不是单单薄薄的几张纸,那是情。
看·想
记得阿里对自己公司的介绍,「阿里巴巴是家理想主义驱动的公司」。记得有朋友开玩笑的说到,只要在阿里混过的员工,我不面试直接就可以让他进来我公司,因为他们不知道什么是上班、什么是下班、什么是加班。
是的,「人没有理想和咸鱼没区别」,在公司每个人都在为自己的理想而在拼命的工作。
然而在我看来,阿里仍然有很多的问题。去年的九月刚过完它的十周年生日,如果将公司比喻为个人的话,那么他已经是名小学生,而这名学生需要学习的地方仍然有很多。
我担心由于人员的增长,那份原本属于学生的童真和幼稚将不复存在。公司的价值观如果被稀释,那么剩下的仅仅是具没有灵魂的躯壳。
同时,阿里仍在不断地做着加法而忘记了沉淀。从技术角度上说,底层的基础没有打好,那么楼越高越是显得危险。
悟道
躺在沙发上细细品读《阿里味》,也只有这个时候才有时间仔细得阅读其中的文字。
那些字里行或许煽情、或许木讷的文字已然都被同时印在这本小小的册子上。品读书中的每一个故事,犹如那也是我真实的经历 -- 在同个办公地点,呼吸着同样的空气,那些可爱的人,其实就在你身边埋头敲着代码。
阿里的味道,犹如那瓶瓶罐罐的调味料,酸甜苦辣咸五味具呈。比如那些贵重物品忘记带,第二天被保安’贴纸条‘的那份感动、项目延期、被无休止的 Bug 折腾得那些怨念和惆怅、项目顺利发布的那些许的自豪和成就感…
此时此刻这些在平时平常得无法再平常,细微得无法再细微的事情,都在被无形得放大,犹如幻灯片一样,在脑海中不断地被轮播。 而我知道,不管怎么样,不论我以后的脚步在哪里。我对我在阿里付出的 822 天青春,不会感到任何的惋惜和后悔。
因为,我已经是名阿里人。
-- EOF --
Fenng 搞了台 mbp, 正在折腾 Mac 常用的软件 ,我这里也总结下日常我经常使用的 Mac 软件。PS,如果你机子比较老, 可以看下我几年前的列表 。
偷懒一下,下面的软件就不逐个做连接了,相信搜索他们的名字就能得到想要的结果。
我选择软件的原则
- 尽可能的自动化,并占用资源少
- 界面和功能过于复杂的不用。因为通常一个巨型牛逼的软件都会被两三个「简单」软件打倒
- 不追求版本号,够用就行,哪怕是几年前的「火星」软件
浏览器
我最常用的浏览器是 Chrome,其实系统自带的 Safari 已经足够好用(支付宝控件什么时候能在 Chrome 下使用呀)。使用 Chrome 的原因是有
- 书签能够和其他机子同步
- 速度快
- 真的是习惯了
Firefox 已经被我沦落为开发工具,除了开发平时不会开启这个「巨无霸」。
编辑器
很开心 Mac 下有对应的 Vim 版本:MacVim,这是我用过的最舒服的 Vim 版本,甚至我觉得比 Windows 下的 gVim 还要舒服。
顺便说一下,MacVim 还在开发中,如果下载官方正式版碰到很多诡异的问题, 可以尝试下我的编译版本 。
其他的如 Coda 、BBEdit 等都尝试过,但是我的真的是太过于「依赖」Vim 了,所以请不要再向我「推销」其他编辑器了。
还有个就是其实系统自带的「文本编辑」也足够我使用,类似 Windows 下的「记事本」一样。
PS,用 Emacs 的达人,可以 Aquamacs Emacs ,据说这玩意也很靠谱。
看图
因为我用的是 10.6.3 的系统,所以一般看图片仅仅是简单的敲下空格,使用 QuickLook 就可以。
在 Mac 还没有我喜欢的 Windows 下的类似 IrfanView 的软件,不过如果单纯是看图片的话,其实 Xee 其实也凑合。
如果需要批量处理图片,那么我会用 ImageMagick,虽然这是控制台下的工具,但学习掌握它绝对不会浪费你的时间。
下载
电驴在 Mac 下有对应的版本,如果想用类似迅雷的工具,那么还是用 Windows 吧。iGetter 以及 SpeedDownload 都是好的下载工具。两者都是收费软件,但 Google 下还是会有惊喜的。
如果是 FTP 软件,那么 Cyberduck 是第一选择,如果觉得「免费的不靠谱」那么推荐使用 Transmit。需要 BT 下载的,推荐使用 Transmission 。
聊天
QQ 有 Mac 下的版本。其他常用的 IM 可以考虑使用 Adium,支持 Gtalk、MSN 等等。不过个人用了一段时间,还是用回 iChat 了,无他就是因为双方的 Gtalk 用户都用 iChat 能够语音聊天。
如果想用旺旺的话,暂时会悲剧下。如果非用 Mac 不可,那么可以考虑暂时使用 iWangWang 顶下。相信 Mac 版本的阿里旺旺会很快就能出来。
UML & 脑图
我的眼里只有一个软件:OmniGraffle,甚至据说很多人因为这个软件而买 Mac 。它能完成的事情实在是太多了,你要亲自尝试下在能了解它的功能。PS,Omni 公司出品的系列软件都可以尝试下,非常的经典。
还有个选择就是 NovaMind ,不过不知道是不是我人品的问题,当节点一多反映就会很慢。
幻灯片 & 文档编辑
这个没话说,Keynote 就能完成我所有的应用了。Office 套件在 Mac 下的选择太多了,但基本上分成三大类:Apple iWork、Microsoft Office for Mac、NeoOffice/OpenOffice。
开发环境
如果要在 Mac 下开发,那么 XCode 是必须安装的。下载个 iPhone 的 SDK 基本上 gcc、make 等工具都全给你安装好了 -- 谁让 Mac OS X 和 BSD 的渊源那么深呢?
说到 BSD ,相信你很希望能使用类似 ports 的软件包更新、安装环境。MacPorts 是个好的选择,但是它实在是太老了。
如果你想尝鲜,那么 Brew 是个非常好的选择 ,我个人用 Brew 废弃了 MacPorts。
还有比如 Windows 类似 SecureCRT 等的软件功能,通常使用 expect + 终端 就能够搞定。
备份&系统维护
备份通常我用 rsync 和 TimeMachine 组合,其实 Mac 下如果你用 TimeMachine 并记得定时备份的话,数据这快就可以高枕无忧了。
系统维护的软件有一大堆,个人经常使用的是 Onyx、CleanMyMac,其实我并不怎么清理什么「系统垃圾」。
如果悲剧得误删除了数据,那么还可以尝试下 Data Rescue II,它曾经为我挽回了很重要的数据,顺便感谢下。
视频相关
Mac 下的播放器其实是个悲剧,不是因为没有,而因为是像是「全真七子」-- 加起来都打不过 Windows 下的 kmplayer。
目前用着比较舒服的是 MPlayerX、Movist 和 VLC。如果要看高清的话,推荐使用 Plex,用最新的编译版本支持显卡硬解码,温度会降下不少。
如果需要转换视频和音频,那么推荐使用 Any Video Converter Pro、All2MP3、Audio Hijack Pro 等等。
其他工具类
- 输入法我现在用 SunPinyin,尝试过 FIT 和 QIM。但因为 FIT 首次启动比较慢,QIM 是收费软件而且和 Chrome 有小的问题
- 解压缩软件我用的是 Rucksack,因为它是我在它活动的时候免费得到的
- Acorn 和 Pixelmator 都是个非常好的 Photoshop 替代工具,话说 Adobe 的软件在 Mac 都是悲剧
- CopyPaste Pro 是 Mac 下的多重剪贴板增强工具,推荐必装
- Dropbox 在 Mac 下也有对应的客户端
- 想要理财的话,推荐安装 iCompta
- KeyCue 能帮你显示当前软件的所有快捷键
- 对鼠标的加速度不习惯的话,使用 SteerMouse 调整下看看
- Flux 能改变显示器的色温,从而达到保护眼睛的目的,但并不是所有人都喜欢它
最后,Show 下我的 Mac 桌面

各位有什么其他的好软件推荐,欢迎不吝提供。
-- EOF --
在开始这篇文章之前,按照「惯例」我们先来道题目( 出处 )。
题目
请说明下面语句的输出:
x = {shift:[].shift};
x.shift();
console.info(x.length);
如果你回答正确,那么说明你已经了解 Array 函数的泛型应用。在理解这到题目之前,我 我们首先要了解数组(Array)的 shift 定义。
MDC 中已经对相关的说明 描述得非常的清楚
shift is intentionally generic; this method can be called or
applied to objects resembling arrays. Objects which do not
contain a length property reflecting the last in a series of
consecutive, zero-based numerical properties may not behave
in any meaningful manner.
同时,EMCAScript 中的定义也同时定义了对于 shift 操作对于对象 length 属性的改变, 那么基本上我们可以了解到上题中的答案为
0
扩散思维
如果对于上面的题目还无法理解,那么我们更清楚的说明 Array.prototype.shift 对对象 的 length 的影响。
x = {};
Array.prototype.shift.call(x);
console.info(x.length);
很明显,对于对象如果为定义 length 属性,则 shift 则会自动加上 length 属性并设置 为 0 。
既然已经说到这里,那么下面的题目输出什么留给大家去思考。
x = function (a, b, c) {};
Array.prototype.shift.call(x);
console.info(x.length);
重新认识泛型
很明显,上面的题目有可能还是无法说明本篇文章的题目。泛型(Generic)应用其实 期前也说明过 ,但这里主要说明 Array 方法 对于「类数组」的操作使用。
强制转换为数组
var args = Array.prototype.slice.call(arguments);
这个用法比较火星,其实期前也用过, 详细参见这里 。
迭代数据
Array.prototype.forEach.call(arguments, function(i) {
console.info(i);
});
如果对象能够被递归,则出了「传统」的 for、while 等语句以外,还可以考虑使用 Array 的 forEach 属性(注意 IE 会是悲剧)。 Array 的 forEach 方法详见这里 。
其他的 Array 扩展用法可以散发自己的思维,如果对应浏览器的 Array 没有对应的实现方 法, 可以参见这里 。
其实,不仅仅是 Array 方法,很多浏览器原生对象的方法都是泛型,我们完全可以利用这 这些特性
- 使代码更为的清晰
- 使用原生方法,效率更高。
-- EOF --
- «
- 1
- ...
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- ...
- 133
- »