君子终日乾乾,夕惕若,厉,无咎。
程序员日记
社会工程学LBS
最近被派到北京参加baidu的hackathon。晚上同学说一起出去转转吧,我说好,出去转转。
结果就迷路了。
结果就掏出手机开始导航,奇迹啊,几个宅男依靠一件电子产品就能走遍帝都了。好吧故事都不是这样讲的。真实的故事是,LBS确实可以告诉你大致的位置,从哪里来往哪里去该怎么坐公交车,但是他无法告诉你在一个巨大的广场里,怎么找到最近的一家快餐店,填饱空空如也的肚子。
于是我就叫住正好对面走来的一对母女,问了一下路。然后10分钟后几个宅男就在快餐店里大快朵颐了。
所谓“社会工程学LBS”么…回来的路上我们趁兴讨论了一番,“也许可以这样,搞一个问路按钮,然后服务器会给离你最近的几个用户发出请求,他们会在地图上点击一下,说明合适的位置,再发还给你,有点像平民窟的百万富翁里面的观众求助环节”。
“是的”,我回答,“给你求助的那个用户,其实就离你10米远,而你却用卫星信号绕地球7周半来接受这个答案”。
同济一日游
图太多,放more后面了…
程序员精进 – 自勉
今天读了这篇文章How to Interview an Engineer for your Startup,看了看人家大牛如何面试Engineer,学习了不少。
其实关于link shortener,本来也有思考过一些。不过确实没有像此文思考如此之细。尤其关于数据库优化方面是我软肋,更是无法了解如此之多。
也不仅单是这个case吧,也不仅单是服务器、数据库或者网站吧。总归一个好的Engineer应该随时把握着开发-性能-质量-产品周期,把事情做到最好。要不断历练自己。
复制原文红字自勉吧:
These days, people that can cross between frontend, backend and design are the true rockstars and exactly what we’re looking for, so I like to get a feel for whether they “just like to code requirements” or they can truly get proactive and help us build product.
做个工程师还有不少路要走。
程序员日记
最重要的纸条上、笔记上、书扉上,总是有个咖啡色的圆形痕迹。
一句话搜索
俺记得原先用google搜索东西的话,他的网络参数是这样子的:
http://www.google.com/?q=search+key+word
有阵子没用这玩意了,最近正好被人问起,发现这招不灵了。试了几下发现原来是这样:
http://www.google.com/#q=search+key+word
至于说不是地址栏输入直接就能search吗为何如此麻烦,嘿嘿你不知道我想干嘛。
注意,直接用wget去访问这样的link是没用的,需要修改UA让他觉得你是个浏览器才行。
[编辑]
感谢zhiqiang的提醒,是我记错了,正确的search命令应该是这样:
http://www.google.com/search?q=search+key+word
[/编辑]
新的革命:自由网络 vs. 安全网络
我起了一个巨大的标题。我本不该的。我希望用这样的标题党引起更多人注意这个问题,共同来解决这个世界性的世纪难题。
这篇bo的内容起始于我关于网络实名制的一些想法。但是不成熟,所以没有抛出来。很快就遇到的CSDN以及其他诸多著名网站密码流出事件,更是证明了网络安全问题其实是长久以来悬而未决的难题。后来美国又发起了SOAP的论战,当时俺兴趣不在这个上,也没有仔细去读新闻。过年回来后知后觉地追踪了下时下火热的方韩大战的新闻旧闻,说来这故事跟网络自由和安全其实有些相关性,那就是拷问网络言论究竟应不应该受到责任约束的问题。今天上午在公司无事,反过头来详细阅读了译言翻译的上许多对SOAP和PIPA的详细分析和报道。再反思以前一直思考着的,互联网未来发展的趋势;该不该实名制;用什么方式帮助大家公平地排队买火车票;怎样有效地分发和贩售知识,这种新世纪的财富;怎样有效地让人们在互联网上能够公平自由地发表言论,同时又能切实地为自己的言论负责;怎样保证信息流动性的同时还保证他的可靠性。因为一直思考着这些,发现这些问题其实源于同宗,于是就有了今天这个标题。
经过半个世纪的发展,互联网正走向新世纪,新革命。互联网极大便利人们的同时,也极大地改变,甚至可以说是,毁灭着人类。因为他的便利性地下藏着的是巨大的漏洞,无尽的陷阱。互联网最初的设计来自于学校,而目的是用于军事。也就是说,最早的互联网使用者,是科研机构和政府部门,是用于组织内部,是互相信任的不同机构的通讯网。互联网,从其设计之初的基础来看,就是一个信任网络。互联网是一个明码通信网络。当然,VPN,SSL等技术从不同层次改进了网络的安全性,但VPN并不是互联网的一部分,只是一个局域安全网,而SSL则会遇到密钥分发这个密码学永远要面对的难题,中间人攻击仍然是他的软肋。目前网络常用的用户名-密码验证机制,有着他的巨大漏洞。这绝不是说网站增强自己数据库的安全性就能解决的问题。举例而言,假如我是黑客,我完全可以建立一个用明码存储用户名密码的网站,然后用吸引眼球的东西引诱大家来注册。例如说糟糕图床,例如说二次元漫画,例如说盗版游戏下载,例如说灵异事件讨论和照片分享,等等。你会说我不沾游戏不看盗版电影不上糟糕站,那你会不会订打折机票,会不会团购旅游?恭喜你,你又中招了。黑客世界除了能逆向工程软件和系统,还有逆向社会工程学。你会说我每个网站都用不同的用户名不同的密码。但是这个世界有几个你这样的聪明人,十几亿网民中有千分之一的密码泄漏,就够养活一个师的黑客大军了。
强调绝对的网络自由的后果就是,网络不存在任何安全性可言。那就会陷入无政府主义的痛苦深渊。每个上网的人都必须是黑客,否则就是黑客押镖保护下的惊慌旅客,再不然就是待宰羔羊。网站安全要靠站长自身素质、纪律和技术支持;上网安全要靠网民自身武艺高超。那将会是一个骗子横行的世界。例如我可以开发一个720软件,密码存我这,包你上网无忧。结果实际我是地下黑客组织的大后台,我一边大肆兜售安全软件,一边就把所有人的私人信息插标出售。那你还敢信银行专用防火墙吗?那你还敢信全自动保安系统吗?那你还敢信网上银行吗?自动操盘bot?天哪没有网络安全的世界是不可想象的。
那么,反其道而行之呢?建立强有效的安全网络?问题是如何去做,问题是技术水平是否足够,问题是国际政治环境是否允许,问题是新的政策新的法律新的技术将如何影响现有的利益集团。
实名制:毫无疑问,实名制会给网络减少不少乐趣。用一个名字拉风的马甲胡吹海泡的时代一去不复返了。但是好处呢?每个人都要为自己说的话负责;或者仍然允许匿名,但是如果你用的是匿名,则你说的话根本没人搭理。谩骂、水军、造谣、煽动、这些毫无营养的网络垃圾终于可以省省了。更多的空间让给建设性的建议和评审,让给知识的有效流动。同时,实名制的信息签名制度使得一个人说的话在被复制和传播的时候他的签名被同时传播,于是制止了匿名转载,保证了CC实现。另外如果有一个强有力的独立部门承担网络ID的认证工作,则任何其他网站都不需要保存用户的密码了,于是再也没有密码泄漏问题。当然前提是那个独立认证部门必须切切实实的强有力,值得信赖。
技术难度:签名的不可复制性需要密码学的严谨论证;公民的网络ID将成为他的新一代身份证,同时也是他全部虚拟财产的钥匙,需要强有力的安全部门保证这个帐号的安全。
默认加密:现代互联网仍然是默认明文的。使用一些简易设施,任何人都能截取局域网或者wifi中传递的私人信息。加密应该在网络的底层实现,而不是依赖应用程序提供者的道德约束。问题是想要从底层修改网络协议,影响面太广,不是一日可完成的任务。并且这要求世界各国的网站齐心合力一同做到。新的IPV6协议中包含更多的安全部件,但仍然是可选项。强制安全的网络协议是未来人类的必然选择。
技术难度:向后兼容
异构云系统:这是我的独立发明。未来互联网就是云系统。但是现在的云系统都是同构的,同一个系统内部的无数并行运算组件其实是运行在同一个机房几乎完全相同硬件上的完全相同的软件。这也就是说,无论你的安全机制多么严密,只要黑客攻克了你那么一点点,那么所有的机器,所有的组件,全都被攻克了。我认为真正安全的系统必须是异构复合的。同样是处理邮件,同一个服务,在云端由不同的并行组件,就可能由成千上万种完全不同的方式处理掉(当然结果是相同的,异曲同工嘛)。这在自然界,就是称作“物种多样性”的杰作。这样黑客就算创造出一种病毒,也仅仅能摧毁某种特定类型的细胞,而其他的细胞完全不受影响。那种特定类型的细胞灭绝之后,这种病毒也就跟着一起灭绝了。要如何实现异构复合的云计算系统?毫无疑问要依赖遗传编程。啊伟大的人工智能,创造奇迹吧,改变软件工程的历史性大手笔!
技术难度:遗传编程的工程应用。于此相比,更大的难度在于安全性对于服务提供商而言是附加题,他们不会在没有利益驱动的前提下自动花大笔的精力去做。因此此事的推动需要等待互联网的进一步进步。
我写了好多,但还是太少了。但是很明显的,再多写也没有意义。推动网络革命需要的技术进步,远远比不上他所需要的社会进步那么急切。如果互联网不能进一步前进,进一步暴露他的问题,给各利益方以驱动,则即使技术摆在那里,也没有人想要去用。结果又变成了,技术拯救人类和技术毁灭人类的死亡竞速。
因此纸尽言犹,先就此收笔,静候网络发展的佳音吧。
[感动]命运石之门
看了这个片子咱整个人都中二了。。
中二拯救世界的神作orz|||
咱貌似也泪点无限降低了。。这片子咱看到第三周目的时候,还没看完OP就已经内牛满面了|||
数十亿もの 鼓动の数さえ 数十亿的 心灵跳动 あなたには 瞬き程度の些事な等级 对你而言 不过是眨眼工夫的琐事 过去に囚われて 未来を叹くも 无论对过去的执迷 还是对未来的叹息 尘一つ 误算を许さぬ必然 皆是不准有丝毫误算的必然 『无限』に広がる梦も 描く未来も だからいま 1秒ごとに 世界线を越えて |
命の主张と 无意味な证明 生命的论点 与无意义的证明 あなたには 退屈しのぎに足らぬ滑稽 对你而言是 就连消遣也不足以的滑稽 支配者きどりの 愚かな种族は 自称支配者 愚蠢的种族 うぬぼれた 稚拙な定理を并べた 自大地陈列 幼稚的定理 『无限』と信じた爱も 空の彼方も いくつもの 辉ける日々 仲间との约束 |
だからいま 1秒ごとに 世界线を越えて 所以现在 越过每一秒的世界线 君のその笑颜 守りたいのさ 只因想要守护你的笑容 そしてまた 悲しみの无い 时间のループへと 于是又再堕入没有悲伤的时间回流 饮み込まれてゆく 逐渐被吞噬 孤独の観测者 孤独的观测者 |
当你看着自己的作品
好不容易码完代码,修掉几个显而易见的bug,经过调试终于呼哧呼哧的运行起来了。
磨一杯咖啡,坐在机器面前,欣赏着自己的杰作,那有条不紊地输出的一行行日志,那一处又一处精巧的设计。避开各种陷阱,走在平稳有序的大道上。
这往往是刚刚写完代码的初级阶段。
随着咖啡逐渐冷掉,失去醇香和温度;随着输出的日志逐渐变得混乱:乱码和未截断的文字扭结,触目惊心的[warning]和[error]纵横,过量来不及查看的惊叹号飞掠屏幕;随着自己思路逐渐冷却,意识到更多没解决的隐患,发现自己的设计远远不符合需求,框架仅仅是个演示用的玩具,早晚得彻底重构。随着这些烦乱的到来,机器面前的程序员再也坐不住了。呼哧呼哧的不再是运行着的程序,而是程序员的粗喘。再也不想面对这团乱麻,一口咽下最后半杯半冷而苦涩的咖啡,回味这过期的香醇。
这可以算是中级阶段。
当吃完不知是夜宵还是早餐,啜饮着清香的橙汁,随着东边逐渐泛起霞光,思路逐渐澄澈;当提交完代码,把整晚的工作缩减为一句简短的ci message;当整理自己发现的几个缺陷,计划好新的issues;当把这些都做完,忽然发现自己原先的惊恐万状全是愚蠢,几个“重大bug”,无非增加几条异常处理就可以搞定;原本想要做的全盘优化,其实只需在某个函数做个小改动,就能得到70%的效果;说是要重构,其实即使现在这样也无可厚非,今后的扩展性完全可通过函数指针和类继承来得到。如此一想,被自己的怀疑、惊惧扭曲成的一个毫无希望的无聊玩具,又转眼间变成前途光明,不过仅仅有几处bug的精巧框架了。
这就又回到了初级阶段。
于是就继续编写代码,崩溃,调试,绝望,然后又希望。
如此循环往复。
也许有一天,当看着自己的作品,心中静如止水。程序的功能既不多也不少,既没有令人匪夷所思的神奇之处,也没有不该有的缺陷。该完美的地方稳定地每次都是完美。该有缺陷的地方每次都按照计划产生缺陷。程序的行为完完全全符合预期。当你看着他,既没有期望,也不会失望。
或许到那一天,才可以算作是高级阶段吧。
一声叹息
有时候不要一眼看到事情的全貌比较好。
就像爬山。
一开始就盯着山顶的话,爬几步就会累的不行了。其实并不是脚下的路太长。而是被雄峰的嵯峨压倒了,征服了。
要想爬上一座山,就只有盯住了脚下的那几步路,弯着腰、低着头,一步一步的爬。
等你爬上那巨峰之顶,总有时间给你俯瞰众山小的。
那时候再回过头来看全貌吧,等你征服了群山之后。