• 国产软件真强大 at 2013年12月17日

    Orz...如果用了 OS X 还要用这种 Store 的话,我宁可去装 Windows 了,哈哈

  • whenever 怎么不执行 at 2013年12月17日

    你确定有没有写入 Cron crontab -e

    然后看 Cron 下的环境变量是否正确。

  • #8 楼 @kidult 哈哈,要是这么说的话,那些全站 Ajax 的网站,整个网站都只有一个页面,岂不是最简单啦?

  • 其实企业管理后台,未必要搞成类似桌面窗口的形式,这样的系统前端维护成本很高。

  • 像我这 at 2013年12月14日

    #21 楼 @mosky 这种建议其实是错误的。他们并不了解一件事情的最佳解决方案,视野狭窄,只能用一些 土办法,比如用写 Class 的方式来解决拼写错误。

    Code Review + Test + CI 才是解决这些错误的最佳解决方案。


    见过不少多年从事同一项技术的工程师,喜欢搞这种山寨土方法。听从这样的建议会让你落后于主流世界。

    很多人因为不会使用一个功能,而抱怨这个功能特性本身:

    1. 比如抱怨 Linux 的命令行不如 Windows 好用。
    2. 比如抱怨 Git 比如他手动备份代码好用。
    3. 比如抱怨动态语言的一些特性拖累了他们。
  • 像我这 at 2013年12月14日

    这个世界上可以赚钱的事情很多,比如路边摊贴膜。 这个世界上可以让开发者快乐的事情很少,比如 Ruby。

    所以,何必为了赚点小钱(如果那家公司给你 100 万的薪资就忽略本观点吧),用不快乐的东西呢~

  • 社区屌丝化 at 2013年12月11日

    同意 @xstmjh ,大家不必自嘲屌丝,这会有不太好的负面心理暗示。

    换个词,草根,更合适些

  • 挺好用的,感谢楼主推荐,已收藏。

  • 当今世界,搞网站开发的人什么都有了:钱、特权、自由、尊重。但是我们所作所为真的有价值么?

    纪录片《寿司之神》(2011)里有这么一个场景,全世界最好的寿司主厨对他将要离开并另立门户的儿子说:“你已经无家可归了。”仔细想来,这样说并不那么尖刻,也不那么令人沮丧,实际上反而是送给一个即将踏上新的冒险征程的人的最好的告别语。

    去年十月我辞掉工作成为了一个自由记者。之前我写作所得的总收入只有 900 美元,但我最近一篇关于侯世德(Douglas Hofstadter)的人物专述吸引了美国几家著名杂志的注意,我决定要以这篇文章赚个一到两万美元。

    我的打算是把这篇卖掉,然后继续写一些类似的文章。这会是一种闲散的脑力生活。我会找一个能让我非常好奇的主题,然后不断调查研究,直到我掌握了所有可以知道的信息。接下来我就坐在某个地方的一间屋子里,敲出一篇入木三分、抓人心魄的妙文,好到没有任何非小说类的作者敢再触碰这个选题——因为我的文章已经一锤定音,因为我已把这个主题永远摆平。

    我的新生活从一个周一开始。我一般都睡到挺晚的,但是我忘了从哪儿看到说作家都是早上能写出最好的东西。所以我也起了个早,倒了杯咖啡,打开了我的笔记本电脑。

    1958 年,有人问海明威:“你觉得想成为一个作家最好的脑力训练是什么?”他回答说:

    “咱们这么说吧,他应该出去上吊,因为他发现想要写好东西几乎难到不可能。然后他应该被毫不留情地打倒,接着强迫自己在余生中尽力能写多好写多好。至少他可以从上吊自杀这个故事开始写。”

    写作是一件精神上非常艰难的事情——很难知道什么东西值得说;很难说清楚;很难把材料安排得能吸引读者;很难做到听着顺;甚至很难知道在做出改动时,是改好了还是改坏了。一切都太难了,简直是痛苦,就像长跑带给人的痛苦一样。这种痛苦让你害怕,但又不知为什么让你觉得乐在其中。

    我那篇关于侯世德的文章一直写到星期四下午。周四晚上的时候我收到了一封意外的邮件,那是一个工作邀请,提供的待遇包括 12 万美元的薪水、1 万美元的签约奖金、优先认股权、免费的健身房会员服务、非常优越的健康和牙医福利、一部新手机,还有工作日免费提供的午餐和晚餐。我上午 11 点左右上班,傍晚时候下班,具体几点我自己定。这工作我一点儿压力都不会有。我有充分的自主和责任,我的同事都跟我差不多大,聪明,而且有趣。

    我的冒险征程就被我搁置了。

    大学的时候我基本上就是漫无目标地晃过来的。我就读点我想读的东西,摆弄摆弄电脑,做几个小网站玩玩,睡懒觉,翘课。虽然我有时候也把自己看成《心灵捕手》里面的威尔·哈丁那样的泛知识分子,但其实我根本就是活得不怎么负责任。要不是因为一个外在的奇迹,2009 年我以 2.9 的 GPA 成绩毕业,面对那年差得出名的就业环境时,一准儿早被送到布鲁克林或者哪儿的某个监狱去了,搞不好还得靠我爸妈花钱打点,才能享受点监狱特权。然而实际上,我反而成了这个世界上最好找工作的人之一。

    这个外在的奇迹就是,搞网站玩玩突然间成为了一个收益颇丰的职业。

    我是个网站开发员,做我这行,再也没有比现在更好的时候了。看看这有多么疯狂吧:我有个念法学院的朋友,刚上大二的时候,他决定开始学编程。两个月后他进了纽约的“黑客学校”,又过了三个月,他去一个帮助创业者建网站的咨询公司实习。实习一个月后,也就是说总共算起来也就六个月,他升为全职,薪酬 85,000 美元。

    我没想到找一个好工作这么容易,我一直以为我会像我姐姐那样。她高中时成绩非常优异,后来上了芝加哥大学,但当她毕业时唯一能够符合职位要求的工作,是去翻译飞机上的菜单。她头脑非常聪明,也很敏锐,但是没有技术上的专长。对于这样的人,市场通常都判给他们这样的命运。

    我记得有次吃饭的时候她问我爸——我爸算是个商业巨头吧——她说:“你经常说努力工作的价值。但怎么解释那些煤矿工人呢?你能说他们工作没你辛苦吗?但是为什么你挣得比他们多那么多?”

    我那时觉得这问题真是很傻很天真。

    在 1999 年,一个没有任何收入的网络公司可以在一年烧掉 1 亿美元,其中两百万流向“超级碗”广告。同名网站可能用户体验极差,但是公司照样上市。投资者会竞相追逐不断上涨的股价,导致股价更加攀升,由此又会吸引来更多的投资人,助长了典型的“投机泡沫”,一旦人们意识到其实原本什么都没有,泡沫必然破裂。

    这样的事儿已经不再有了。倒不是因为利润不再重要,或者投资者变得不那么“非理性活跃”了——是因为建网站便宜了,现在一个新建网站几乎没有固定资金成本。不需要投资宽带基础设施,因为已经有了。不需要花钱去投电视广告来争取市场份额,因为通过搜索引擎(谷歌)和社交网络(Facebook)就可以实现自然增长。“云”服务器,就像一个虚拟公司所需要的其他服务一样,比如信用卡处理服务、自动电话支持、批量邮件发送之类,付费就可以获得,费用呢,和摩尔法则挂钩。

    这就意味着,现在如果想验证一个新创立的企业是不是真的能够成功,根本不需要付出上亿美元的代价——几十万就够了。这代价也就是几台笔记本钱,再加上初期尝试时支付给几个创始人的薪水。1 亿美元的风险资金,原先也就能启动 5-10 个项目,现在可以开启 1000 个小型试验,虽然大部分会失败,但是其中会有一个最终能带来十个亿美元。

    于是疯狂就开始上演了。

    所以你就能明白为什么我这么滋润了。在这淘金热中,我就是那挖金子的铲子。我们这些网站开发人员是每一个新启动的项目的化学试剂。我们是必要条件,因为我们是唯一能把那些新应用设想付诸现实,开发成为可用软件的人。事实上,我们差不多就代表了那些小公司的精髓,在硅谷,一个还没有入账的新公司的价值完全相当于开发人员的数量——根据经验法则,一个人值 100 万美元。

    结果就是,我们这样的人在招聘市场上是很抢手的。一个在 Bloomberg 工作的朋友告诉我说,他们公司在纽约的季度技术人员招聘中有两百个空缺职位招不到人。而我每周都会被猎头询问至少两次,他们试图诱惑我离开现有的工作。如果我说我正积极寻找工作,那我简直摇身一变成为当地的名流,日程上排满各种面见和会谈,面试都反过来了——那些新公司都在极尽全力拉拢我。

    似乎全球经济这个行业的基本产业结构就是为了我的利益而量身定制的。因为开发人员是这些新公司最重要的资产——如果不说是唯一的资产的话,因而这些公司之间的竞争方式就是设法为开发人员创造更好的工作环境。就在几周以前,还有一个 MTV2 的摄像组来我的办公室录制一集叫做“不差劲的工作”的节目。现金红利、加薪、优先认股权还有礼金,这都是常规福利。我曾经待过的一个公司有个特殊的电子邮箱,你有什么需要就往那发邮件,然后就能免费领东西——300 美元的键盘、900 美元的椅子、有机枫糖浆等等。到现在我工作过的所有公司,还没有哪家是不能随时喝到啤酒的。工作时间很灵活,休息也很多。万一搞砸了什么东西,很快就没啥事了。你的担忧总能收到重视,你的头脑总能得到褒奖。你呢,简而言之,倍受关照。

    你可以想象这对你的自尊心会产生什么样的影响,它被各种献殷勤,被称为是“不可或缺的”,被奉承得好像是方圆百里内唯一的漂亮姑娘似的。这还是在其他人都找不着工作的时候,在对大多数人来说工作就跟摇摇晃晃的达摩克利斯之剑那样,是件性命攸关的事儿——的时候。拥有这么高的雇佣价值,感觉特敞亮,特舒服,好像不可能会犯错似的。我还知道我无论在哪个大城市都会有立足之地,要想不把这个当回事儿简直太难了。我想说的是,这会肯定你的价值,会鼓胀你的自信心。有时候,我会给自己讲这么个故事,当别人参加派对或者读书放松的时候,我正在某个房间埋头苦干——我辛辛苦苦学习那些细微的技术问题,而现在我得到了回报。

    当你开始相信这样的故事的时候,那种自命不凡的虚荣心就戏剧般地培养起来了。我在现在的工作职位上会看到很多投来的简历,不是程序员的,我一概丢掉。这个过程我每天会重复很多次,多到我产生了一个很简单的联想:如果你不懂技术,你就没有价值。

    我们才是那些有魔力的人。每个程序员都知道编码看起来帅爆了,知道当我们在屏幕上写满五颜六色的咒语时,所有人都会目瞪口呆。已故的荷兰计算机科学家艾兹格·迪杰斯特拉(Edsger Dijkstra)1988 年时写道:“程序员得能够在概念层次上进行思考,这种深度对任何头脑来说都是前所未有的。”我们喜欢这个说法。我们喜欢设想因为我们会编程,我们对这个世界有着空前的影响力。我们决定着 1500 万人在点击一个链接后将会看到什么。随着我们控制的一个电子命令,我们的笔记本切切实实地发热了。

    没人告诉我们这样想是错的。实际上,人们反而是加强了我们这样想的冲动,他们祝贺我们走在时代的前沿。

    当你想想如果没有代码我的前程会是怎样的,有了代码又是怎样的,那结论似乎确实应该是:加入我!试试去上纽约编程学院网站(Codecademy in New York),去上“黑客学校”,发誓学好编程——就像 2012 年 Michael Bloomberg 做的那样。

    但是,不应该是这样的。

    我成为美国一家公司的首席技术总监的时候才 21 岁,那时我想到了我的爸爸,因为他曾经也是国内最年轻的企业高管之一,他 28 岁的时候已经是一家公司的 CFO。唯一的不同是他二十多岁时效力的公司是哈迪斯(Hardee’s)——一个拥有 1000 多家连锁的快餐店,而我所在的是一个新成立的网络公司。在三年的时间里,我们所做的一切差不多就是花掉别人 35 万美元。我爸的公司是做汉堡包,我的呢,是把它们吃掉。

    我有个朋友是机械工程师,他过去为通用电气做飞机引擎,而现在他正尝试设计一种更方便艾滋病人和癌症病人使用的药瓶。他在一个新公司那种“孵化箱”办公室里工作,和十几家网络公司共用办公区域。他对他们可没什么耐心。“我他妈的烦死他们了,”他有次告诉我,“他们说来说去就是讨论个颜色。”

    那些网络“新兴”公司就跟过家家似的,他们跟真正的公司相比,就好像那些可爱的小型仿真烤房和真正的厨房相比一样。

    举个例子吧,目前已经破产的“楼友”(Doormates)是 2011 年由两个哥伦比亚大学刚毕业的学生开发的新应用,主要服务是让用户“加入或建立同一栋楼里的联系网络,只有楼内住户才有入网权限”。就单为这个目的,他们也一样筹集了 35 万美元。你可能会想是否有人提出过这样的问题:“住在同一栋楼里的陌生人真的会想要沟通吗?如果真想的话,用一盘三明治不是更好搞定吗?”(“楼友”的创始人已经转向了一个叫做“最近的妈咪”(Mommy Nearest)的新项目,这是一个 iPhone 应用,可以指明全纽约最适合妈妈们去的场所。)

    许多正在实践中的项目其实真的不怎么有野心。“关于广告模式,事实是它会让人往小里想,往简单里想。”Alexis Madrigal 在去年发表于《大西洋月刊》(The Atlantic)的一篇关于创业的文章中写道。“把四个大学生放到一间屋子里,喂他们几个披萨,然后等着看他们能搞出些什么能让他们的朋友们喜欢上的东西。耶!太棒了!但你知道吗?他们不断抛出来的产品看上去基本就和你找一帮差不多的年轻人去做任意一件事时会弄出来的东西一样:便宜、有趣,从“改变世界”这个意义上来讲,也就和创造一种啤酒乒乓球的新玩法差不多。

    各种山寨“高朋”(Groupon)团购很流行,现在那些帮你寻找最近的酒吧和餐馆的应用也是一样。还有成堆的只有些细微差别的约会应用,比如 iPhone 平台上一个叫 Tinder 的应用,当你看到可能匹配对象的照片时,喜欢就向右滑动,不喜欢就向左;或者“当咖啡遇到百吉饼”(Coffee Meets Bagel),每天给你找一个低风险的,可以一起喝杯咖啡的约会对象。SideTour 的技术团队是由一个曾经的同事带领的,它可以让你花钱买到在这城市里的一些特别的小“经历”,比如跟一个和尚吃饭之类。就在昨天,我的一位搞软件开发的朋友还跟我分享了一下他最近的一个想法——设计一个能显示离你最近 ATM 机的应用。而他也是最近辞职出来自己单干了。

    至少从数据上来说,有些应用可以称为“最成功的”——Snapchat 收入 1350 万美元,Vine 收入三千万美元,Instagram 收入十亿美元(每出现一个这样的成功,都会间接带来 100 个山寨翻版)。而这些似乎都是能给青少年用户提供新方法来分享照片的应用。

    逛超市的时候我偶尔会想,从在荒野中觅食转变为拿着个篮子在一间屋子里挑选食物的这个过程中,有多少基础设施的准备和独具匠心的创想被投入其中。正因为有如此多的智慧和心血,才把这些东西送到我手中。这是我的生计:别人的工作确确实实养活了我。但我又用什么回报了呢?

    我们自称是网站开发人员、软件工程师、缔造者、企业家、革新者。我们地位显赫,我们享受着大量的财富、关注和才华。我们成为了漩涡的中心,威力不亚于华尔街对优秀大学毕业生产生的吸引力。但是我们不是在制造自动驾驶汽车,我们不是在设计更智能的药瓶。我们大部分工作其实就是把一个盒子放到页面上,用户把文字和图片放到这个盒子里,我们把这些东西存入数据库,然后再拿出来,放到另一个盒子里。

    一天又一天,填满我们生活的就是对这些盒子的单调乏味的维护工作:换个颜色;加个链接给你编辑文字;跟踪一下你看页面时翻到哪里会停;允许你用 Twitter 账户登录;完善搜索结果;有时出故障,图片好像永远也上传不完,我们就去处理一下。

    大部分这样的工作我都是用一个叫做 Ruby on Rails 的工具完成的。这个工具对网站开发员来说就相当于安装厕所的机器人对管道工来说的作用一样。(开发网站非常像通水管,尽管我们这些成天坐在两个光滑的屏幕前面的程序员谁都不愿承认。)RoR 可以让原本得花费数月的任务在几小时内就能完成,重点是我只不过是这个东西的使用者而已。它不是我开发出来的,我就是读了读使用手册罢了。实际上,我在招聘市场上如此受欢迎就是因为我读使用手册时特别用心,因为我对各类使用手册都非常勤勉耐心。不过,仅此而已。

    我的朋友和我,我们这些建网站的——我们就是小孩!我们就是拿着大人们给我们的工具到处做游戏的小孩。我的成熟稳重本来已经越来越少,还有一大部分被我自己故意忽略了,现在我成天谈论的就是:冯·诺依曼存储程序计算机体系结构;晶体管;高通量纤维光缆;Unix 操作系统;科幻般的云计算平台;web 浏览器;iPhone;开源运动;Ruby on Rails;程序员 Stack Overflow 问答网站;等等等等,一路谈论到比我稍微成熟一点点的同事为我写的代码。

    这一大串的发明是个奇迹,虽然我非常感谢那些创造出这个奇迹的伙计们,我还是想给他们提出个警告:当你们把软件设计和分配变得如此简单,简单到我都能做的时候,你们要承担的风险是建造了一个充满华而不实的创业想法的可怕的巴别塔。

    另一个网站泡沫是不是又开始形成了呢?也很难说它是“泡沫”吧,因为纳斯达克指数还没失控,也没有谁将丢掉他的养老金,而人们唯一将会失去的东西实际上是时间:假装奋力工作的时间;在无足轻重的论坛里点“分享”和“赞”的时间;敲出平庸无聊的代码,挣点容易钱的时间。

    考虑价值问题唯一严格的方式是用钱来衡量,这价格通过自由交易来实现,这样得出来的数据是令人难以辩驳的。如果一个价格“太低”或者“太高”,据说会有零风险赚钱的机会。看到这种机会时人们往往会一把抓住,那么价格就会趋向平衡,最后达到他们本来应该的数值,达到一个市场能够承受的水平。

    我做编程赚的钱是不是太多了?我写作拿的钱是不是太少了?没有,在这两种情况下,我的薪酬刚刚好是我应该得到的那个数。

    就像那次吃饭时我姐问我爸的问题,那问题是有答案的——也就是我记得当晚所听到的那个答案——我爸爸之所以比旷工赚的多的原因,很可能是因为做一个 500 强企业的 CFO 所需的技能相比之下要更稀有,市场也更需要。正是稀有程度和需要程度的结合使薪酬水涨船高。

    这个答案听起来似乎既公平,又合理,似乎能够解决那个问题。但是,我们谈论的不是五花肉期货,我们谈论的是真实的人还有他们每天的生活。而我的姐姐所说的,尽管听上去很天真,其实是有道理的。道理就是,真正天真、油滑、随便的想法,很可能是将“价值”和市场清算的价格等同了。

    文字的价格被叫成了零。我在写的那篇杂志文章已经耗费了一年半了,它已经占据了我生命中的一大部分,消耗了我大量的业余时间。我曾经为了编辑的意见,完全重新写过——我已经做过,还会继续去做他们要我做的任何事儿——而且这一切都完全没有酬劳。这个压根没有风险资金支持,没有人恳求我去做。在写作圈儿里我彻彻底底是个无名小卒,我平均三周半才能收到一封回信。也许我在一篇文章中投入我全部的精力和才华,我的一切思考和生命,这篇文章还是有可能一文不值。

    所以尽管我敬慕写作带来的巨大挑战,敬慕写作生活所能触及的广度,写作确实不是有谁会真正想让我去做的事。关于这个,美国人的想法已经表达得很清楚了,那就是:“一定要成为某种专业人才——把你的大脑塞满这时代精神,塞满跟技术有关的东西——我们会给你回报的。”

    我没勇气拒绝这个。到现在我也没能逃脱这种低级而狭隘的思想洪流,原因是我害怕。我就是个极其平庸无能的程序员,但是,无论如何,我仍然有个安稳的将来。不仅如此,我在谈判桌旁还有一席之地。早上醒来的时候,我知道我能弄出点人们想要的东西。我之所以知道这个,是因为他们付给我的那些钱。


    《新知》杂志授权知乎日报首发

  • 用 Mailgun 吧

  • 代码里可以贴图了? at 2013年12月10日

    那个是文字,Mac 对这个字体做了处理而已。

  • 美女 linux?啥玩意? at 2013年12月09日

    #20 楼 @RainFlying 你这是要付费修电脑么 😁

  • 美女 linux?啥玩意? at 2013年12月09日

    #18 楼 @RainFlying 上门服务……我们是正规的 <_<

  • 美女 linux?啥玩意? at 2013年12月08日

    #14 楼 @iBachue 哈哈,因为我们的云梯 MM 不是花瓶呀,不但卖得了萌,还解决得了网络问题,人见人爱~

  • 美女 linux?啥玩意? at 2013年12月08日

    #13 楼 @lufeihaidao 由于人眼视网膜 300ppi 的限制,只要几轮递归就可以条件跳出了,完全无堆栈溢出风险 😄

  • 这篇文章发布的时候,我已经被 Ruby on Rails 迷住了,几乎放弃了继续使用 Java & .NET

  • 美女 linux?啥玩意? at 2013年12月08日

    #7 楼 @iBachue 又调侃我们的运营 😞

  • 现在收到 90% 的垃圾短信都是 iMessage...

  • #49 楼 @kevinzhow :thumbsup:

  • 发现 Rails 越学越难 at 2013年12月08日

    深入编程的世界,深度和广度都很大,必然难啊。 楼主加油!

  • 很简单啊,楼主如果遇到了什么困难,欢迎说出来。

  • #19 楼 @huihen 不存在基因适合喝什么,这种都是无节操营销理论而已。 茶和咖啡的副作用一样,但茶的加工工艺太差,有卫生风险。你去看看国内那些茶的加工过程,保证你不再想喝 😄

  • boy 还是 girl? at 2013年12月06日

    大家好闲……

  • 人工合并冲突后 commit 就行

  • #30 楼 @Rei 其实,这里大部分会员都不反对这种自动化排版优化的,基本上跟切上传头像一个级别的。

    可以把需要大量人工修改排版的帖子,移动到单独的节点处理。

  • 本以为是这么小的技术问题讨论了这么多回复,结果进来一看,居然是因为 程序自动化修正排版问题 被楼主认为是 侵犯用户权利,要求提供 许可协议


    我觉得楼主应该先了解一下,这个是机器行为,还是管理员人工行为。 即使是(目前显然不是)管理员人工行为,也可以询问一下这样修改的原因。 然后再发表自己的意见也不迟。

    如果机器排版行为都被上升到许可协议层面,那所有网站都需要写几百页的许可协议,说明为何表单输入框中的文字,和提交后的文字排版样式不同。 Markdown 这种标记语言更要跪求全世界理解它修改了排版,还吃掉了标记符号 😄

  • 渲染服务器 PDF 文件 at 2013年12月04日

    直接 sendfile,浏览器会渲染它

  • 大家都用 haml 还是 erb 呢 at 2013年12月04日

    erb