页面

2012年12月27日星期四

程序算法与人生选择

程序算法与人生选择:

    每年一到要找工作的时候,我就能收到很多人给我发来的邮件,总是问我怎么选择他们的offer,去腾讯还是去豆瓣,去外企还是去国内的企业,去创业还是去考研,来北京还是回老家,该不该去创新工场?该不该去thoughtworks?……等等,等等。今年从7月份到现在,我收到并回复了60多封这样的邮件。我更多帮他们整理思路,帮他们明白自己最想要的是什么。(注:我以后不再回复类似的邮件了)。
我深深地发现,对于我国这样从小被父母和老师安排各种事情长大的人,当有一天,父母和老师都跟不上的时候,我们几乎完全不知道怎么去做选择。而我最近也离开了亚马逊,换了一个工作。又正值年底,就像去年的那篇《三个故事和三个问题》一样,让我想到写一篇这样的文章。

几个例子

当我们在面对各种对选择的影响因子的时候,如:城市,公司规模,公司性质,薪水,项目,户口,技术,方向,眼界…… 你总会发现,你还会发现你会在两个公司中纠结一些东西,举几个例子:
  • 某网友和我说,他们去上海腾讯,因为腾讯的规模很大,但却发现薪水代遇没有豆瓣高(低的还不是一点),如果以后要换工作的话,起薪点直接关系到了以后的高工资。我说那就去豆瓣吧,他说豆瓣在北京,污染那么严重,又没有户口,生存环境不好。我说去腾讯吧,他说腾讯最近组织调整,不稳定。我说那就去豆瓣吧,慢公司,发展很稳当。他说,豆瓣的盈利不清楚,而且用Python,自己不喜欢。我说,那就去腾讯吧,……
  • 还有一网友和我说,他想回老家,因为老家的人脉关系比较好,能混得好。但又想留在大城市,因为大城市可以开眼界。

  • 另一网友和我说,他想进外企,练练英语,开开眼界,但是又怕在外企里当个螺丝钉,想法得不到实施。朋友拉他去创业,觉得创业挺好的,锻炼大,但是朋友做的那个不知道能不能做好。
  • 还有一网友在创新工场的某团队和考研之间抉择,不知道去创新工场行不行,觉得那个项止一般,但是感觉那个团队挺有激情的,另一方面觉得自己的学历还不够,读个研应该能找到更好的工作。
  • 还有一些朋友问题我应该学什么技术?不应该学什么技术?或是怎么学会学得最快,技术的路径应该是什么?有的说只做后端不做前端,有的说,只做算法研究,不做工程,等等,等等。因为他们觉得人生有限,术业有专攻。
  • 等等,等等……
    我个人觉得,如果是非计算机科班出生的人不会做选择,不知道怎么走也罢了,但是我们计算机科班出生的人是学过算法的,懂算法的人应该是知道怎么做选择的

排序算法

    你不可能要所有的东西,所以你只能要你最重要的东西,你要知道什么东西最重要,你就需要对你心内的那些欲望和抱负有清楚的认识,不然,你就会在纠结中度过。
所以,在选择中纠结的人有必要参考一下排序算法。
  • 首先,你最需要参考的就是“冒泡排序”——这种算法的思路就是每次冒泡出一个最大的数。所以,你有必要问问你自己,面对那些影响你选择的因子,如果你只能要一个的话,你会要哪个?而剩下的都可以放弃。于是,当你把最大的数,一个一个冒泡出来的时候,并用这个决策因子来过滤选项的时候,你就能比较容易地知道知道你应该选什么了。这个算法告诉我们,人的杂念越少,就越容易做出选择。
  • 好吧,可能你已茫然到了怎么比较两个决策因子的大小,比如:你分不清楚,工资>业务前景吗?业务前景>能力提升吗?所以你完全没有办法进行冒泡法。那你,你不妨参考一个“快速排序”的思路——这个算法告诉我们,我们一开始并不需要找到最大的数,我们只需要把你价值观中的某个标准拿出来,然后,把可以满足这个价值的放到右边,不能的放到左边去。比如,你的标准是:工资大于5000元&&业务前景长于3年的公司,你可以用这个标准来过滤你的选项。然后,你可以再调整这个标准再继续递归下去。这个算法告诉我们,我们的选择标准越清晰,我们就越容易做出选择
    这是排序算法中最经典的两个算法了,面试必考。相信你已烂熟于心中了。所以,我觉得你把这个算法应用于你的人生选择也应该不是什么问题。关于在于,你是否知道自己想要的是什么?
排序算法的核心思想就是,让你帮助你认清自己最需要的是什么,认清自己最想要的是什么,然后根据这个去做选择

贪婪算法

    所谓贪婪算法是指,是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择(注意:是当前状态下),从而希望导致结果是最好或最优的算法。贪婪算法最经典的一个例子就是哈夫曼编码
对于人类来说,一般人在行为处事的时候都会使用到贪婪算法,
  • 比如在找零钱的时候,如果要找补36元,我们一般会按这样的顺序找钱:20元,10元,5元,1元。
  • 或者我们在过十字路口的时候,要从到对角线的那个街区时,我们也会使用贪婪算法——哪边的绿灯先亮了我们就先过到那边去,然后再转身90度等红灯再过街。
    这样的例子有很多。对于选择中,大多数人都会选用贪婪算法,因为这是一个比较简单的算法,未来太复杂了,只能走一步看一步,在当前的状况下做出最利于自己的判断和选择即可。
    有的人会贪婪薪水,有的人会贪婪做的项目,有的人会贪婪业务,有的人会贪婪职位,有的人会贪婪自己的兴趣……这些都没什么问题。贪婪算法并没有错,虽然不是全局最优解,但其可以让你找到局部最优解或是次优解。其实,有次优解也不错了。贪婪算法基本上是一种 急功近利的算法,但是并不代表这种算法不好,如果贪婪的是一种长远和持续,又未尝不可呢?

动态规划

    但是我们知道,对于大部分的问题,贪婪法通常都不能找出最优解,因为他们一般没有测试所有可能的解。因为贪婪算法是一种短视的行为,只会跟据当前的形式做判断,也就是过早做决定,因而没法达到最佳解。
动态规划和贪婪算法的最大不同是,贪心算法做出选择,不能回退。动态规划则会保存以前的运算结果,并根据以前的结果对当前进行选择,有回退功能。
动态规划算法至少告诉我们两个事:
1)承前启后非常重要,当你准备去做遍历的时候,你的上次的经历不但能开启你以后的经历,而且还能为后面的经历所用。你的每一步都没有浪费。
2)是否可以回退也很重要。这意思是——如果你面前有两个选择,一个是A公司一个是B公司,如果今天你错失了B公司,那到你明天还能不能找回来?
    比如说:你有两个offer,一个是Yahoo,一个是Baidu,上述的第一点会让我们思考,Yahoo和Baidu谁能给我们开启更大的平台?上述的第二点告诉我们,是进入Yahoo后如果没有选好,是否还能回退到Baidu公司?还是进入Baidu公司后能容易回退到Yahoo公司?

Dijkstra最短路径

最短路径是一个Greedy + DP的算法。相当经典。这个算法的大意如下:
1)在初始化的时候,所有的结点都和我是无穷大,默认是达不到的。
2)从离自己最近的结点开始贪婪。
3)走过去,看看又能到达什么样的结点,计算并更新到所有目标点的距离。
4)再贪婪与原点最短的结点,如此反复。
这个算法给我们带来了一些这样的启示:
  • 我记得有个朋友和我说过他想成为一个架构师,或是一个人某技术领域的专家,并会踏踏实实的向这个目标前进,永不放弃。我还是鼓励了他,但我也告诉他了这个著名的算法,我说,这个算法告诉你,架构师或某领域的专家对你来说目前的距离是无穷大,他们放在心中,先看看你能够得着的东西。所谓踏实,并不是踏踏实实追求你的目标,而是踏踏实实把你够得着看得见的就在身边的东西干好。我还记得我刚参加工作,从老家出来的时候,从来没有想过要成为一个技术牛人,也从来没有想过我的博客会那么的有影响力,在做自己力所能及,看得见摸得着的事情,我就看见什么技术就学什么,学着学着就知道怎么学更轻松,怎么学更扎实,这也许就是我的最短路径。
  • 有很多朋友问我要不要学C++,或是问我学Python还是学Ruby,是不是不用学前端,等等。这些朋友告诉我,他们不可能学习多个语言,学了不用也就忘了,而且术业有专攻。这并没有什么不对的,只是我个人觉得,学习一个东西没有必要只有两种状态,一种是不学,另一种是精通。了解一个技术其实花不了多少时间,我学C++的目的其实是为了更懂Java,学TCP/IP协议其实是为了更懂Socket编程,很多东西都是连通和相辅相成的,学好了C/C++/Unix/TCP等这些基础技术后,我发现到达别的技术路径一下缩短了(这就是为什么我用两天时间就可以了解Go语言的原因)。这就好像这个算法一样,算法效率不高,也许达到你的目标,你在一开始花了很长时间,遍历了很多地方,但是,这也许这就是你的最短路径

算法就是Trade-Off

    你根本没有办法能得到所有你想得到的东西,任何的选择都意味着放弃——当你要去获得一个东西的时候,你总是需要放弃一些东西人生本来就是一个跷跷板,一头上,另一头必然下。这和我们做软件设计或算法设计一样,用时间换空间,用空间换时间,还有CAP理论,总是有很多的Trade-Off,正如这个短语的原意一样——你总是要用某种东西去交易某种东西
我们都在用某种东西在交易我们的未来,有的人用自己的努力,有的人用自己的思考,有的人用自己的年轻,有的人用自己的自由,有的人用自己的价值观,有的人用自己的道德…… …… 有的人在交换金钱,有的人在交换眼界,有的人在交换经历,有的人在交换地位,有的人在交换能力,有的人在交换自由,有的人在交换兴趣,有的人在交换虚荣心,在交换安逸享乐…… ……
每个人有每个人的算法,每个算法都有每个算法的purpose,就算大家在用同样的算法,但是每个人算法中的那些变量、开关和条件都不一样,得到的结果也不一样。我们就是生活在Matrix里的一段程序,我们每个人的算法决定着我们每个人的选择,我们的选择决定了我们的人生
2012年就要过去了,祝大家新年快乐!
插图来自电影 Life of Pi
插图来自电影 Life of Pi
(全文完)


(转载本站文章请注明作者和出处 酷壳 – CoolShell.cn ,请勿用于任何商业用途)
————————============ 感谢 42qu.com 为本站提供 VPS ============————————

相关文章

2012年12月20日星期四

疫苗:国产vs进口,哪个更好?

疫苗:国产vs进口,哪个更好?:
误区 :进口疫苗虽然贵,但效果好,安全无副作用,不用担心宝宝没得到疫苗提供的免疫保护,反而患上相应疾病。为宝宝的健康及安全考虑,疫苗还是都选进口的比较放心。

事实 :预防接种已经有200多年历史,是全球公认的、预防疾病的最佳策略之一,多种严重威胁人类健康的感染性疾病在预防接种普及后已经从大众的视野中消失。
虽然疾病从大众视野中消失了,但病原体还没有被消灭,预防针还得继续打。随着生物技术的发展,市场上可供选择的疫苗种类和疫苗产品很多,如何选择疫苗已经成为一个让人头疼的问题。其中最让人纠结的一个问题是:疫苗,选国产还是进口?

国产vs进口,哪些疫苗让你纠结

目前,在国内上市的疫苗种类有33种。这些疫苗中,19种只有国产的,2种只有进口的,剩下12种才既有国产又有进口。
图1。31种国产疫苗里功能存在一些重复。如:麻腮风疫苗由麻疹疫苗、流行性腮腺炎疫苗和风疹疫苗3种单独的疫苗组成。一般而言,有了麻腮风疫苗,就没有必要继续使用单独的疫苗。国内企业除了继续保留这3种单独疫苗,还排列组合出麻风疫苗和麻腮疫苗,构成了序号23~27的5种疫苗;白百破疫苗已经包含白喉疫苗、百日咳疫苗和破伤风疫苗,国内企业还生产了白破疫苗和破伤风疫苗,构成了序号29、30这两种疫苗。
图1。31种国产疫苗里功能存在一些重复。如:麻腮风疫苗由麻疹疫苗、流行性腮腺炎疫苗和风疹疫苗3种单独的疫苗组成。一般而言,有了麻腮风疫苗,就没有必要继续使用单独的疫苗。国内企业除了继续保留这3种单独疫苗,还排列组合出麻风疫苗和麻腮疫苗,构成了序号23~27的5种疫苗;白百破疫苗已经包含白喉疫苗、百日咳疫苗和破伤风疫苗,国内企业还生产了白破疫苗和破伤风疫苗,构成了序号29、30这两种疫苗。
四联疫苗和五联疫苗虽然只有进口,但其组成成分是白百破疫苗、流感嗜血杆菌疫苗和脊灰疫苗,这些单独的疫苗均有国产疫苗。应该说制造四联和五联疫苗的原材料已经实现了国产化,只是我国还需要一些时间来解决如何将其搭配成四联和五联疫苗。
只有国产疫苗或只有进口疫苗的疫苗种类,反而不必纠结。既有国产疫苗又有进口疫苗的12种疫苗,其市场份额到底如何呢?根据中国食品药品检定研究院网上公示的2007~2011年生物制品批签发信息,可以看出这些疫苗种类的市场份额情况,见下面两张图:
图说:图2。上图为国产疫苗及进口疫苗每年批签发比例。下图为12种既有国产又有进口的疫苗,国产与进口的比例。
图说:图2。上图为国产疫苗及进口疫苗每年批签发比例。下图为12种既有国产又有进口的疫苗,国产与进口的比例。
按年份看,进口疫苗的每年批签发的数量占全部疫苗批签发数量的比例不到10%,2011年甚至只有4%。按疫苗种类来看,肺炎疫苗、流感菌疫苗、麻腮风疫苗、流感疫苗中进口疫苗的批签发数量占总量的比例在17%~47%,其他8种疫苗的进口疫苗比例均不到10%。
2011年批签发总量中进口疫苗比例之所以只有4%,是因为2010年10月我国执行了新版药典。新版药典对疫苗中的抗生素残留量和Vero细胞DNA残留量都提出了更高的要求。抗生素的Vero细胞DNA都不是疫苗中的有效成分,最好是不添加或完全去除。新版药典此举大大提高了疫苗质量的准入门槛,直接导致某著名品牌的进口疫苗几乎全军覆没,另一著名品牌的进口狂犬病疫苗也从此与中国无缘。新版药典证明中国的疫苗质量标准并非最低,进口疫苗的质量标准也未必一定高。
另外,我国规定提供免费接种的疫苗实行政府采购。虽然国产疫苗和进口疫苗都有机会参与政府采购,中标产品免费接种,未中标产品自费接种。但进口疫苗与国产疫苗相比,价格上处于明显劣势,如果性能上没有明显优势,多数情况下都是国产疫苗胜出。不过,由于进口疫苗放低身价,北京、天津、上海也都曾经采购过进口疫苗作免费接种。

国产疫苗和进口疫苗,到底孰优孰劣?

要把这12种既有国产又有进口的疫苗比较出个结果,只能对其性能和价格进行逐一对比。性能包括两方面指标——防病效果和安全性,下表中用5星表示最好,依此类推。价格则参考国家发改委公布的单价或上海市药品物价管理部门(不一定涵盖所有厂家的产品价格)的最高零售限价。多数情况下,同一疫苗种类在国产或进口类别下还有不同厂家、不同工艺的产品,为了避免发生类似田忌赛马的问题,我们在疫苗性能比较时,对国产或进口类别下所有产品的综合性能进行比较。
图3。标“*”的疫苗,是我国规定提供免费接种的疫苗。上表是业内人士通过疫苗说明书、文献及疫苗接种工作经验总结而成。防病效果:5★表示达到业内认可的最佳预防效果;4★表示虽然达到良好的预防效果,但某些指标(如抗体水平、抗体阳转率或病原体覆盖面等方面)可以更好;3★表示预防效果还有较大的提高余地。安全性:5★表示安全性在各方都可以接受的范围内;4★表示在安全性的某些方面不能让各方满意(比如接种后的局部反应率和发热率较高,在公众看来不容易接受,但研究人员看来仍可接受);3★表示存在比较突出的安全性问题(比如局部反应率和发热率过高,或有其他确认的严重不良反应)。
图3。标“*”的疫苗,是我国规定提供免费接种的疫苗。上表是业内人士通过疫苗说明书、文献及疫苗接种工作经验总结而成。防病效果:5★表示达到业内认可的最佳预防效果;4★表示虽然达到良好的预防效果,但某些指标(如抗体水平、抗体阳转率或病原体覆盖面等方面)可以更好;3★表示预防效果还有较大的提高余地。安全性:5★表示安全性在各方都可以接受的范围内;4★表示在安全性的某些方面不能让各方满意(比如接种后的局部反应率和发热率较高,在公众看来不容易接受,但研究人员看来仍可接受);3★表示存在比较突出的安全性问题(比如局部反应率和发热率过高,或有其他确认的严重不良反应)。
从上表可以看出,某些种类的国产疫苗在性能上略逊于进口疫苗,但对大部分疫苗来说国产与进口的性能不相上下。若从性能与价格综合来看,国产疫苗的性价比通常都高于进口疫苗。
不过,必须提醒的是:关于国产疫苗和进口疫苗的性能比较,不应该片面理解为“国产”与“进口”在质量控制上的差别,而应该理解为“具体生产工艺”上的差别。以脊灰疫苗为例,国产脊灰疫苗全部为减活工艺,疫苗内含有活的疫苗病毒。只要是脊灰减活疫苗,就有可能引起人体感染导致类似小儿麻痹症的症状(概率极低),全球概莫能外,这与疫苗是国产还是进口无关。再如进口肺炎疫苗的防病效果略优于国产疫苗,是因为进口肺炎疫苗在常用的23价多糖疫苗以外,多了一种7价结合疫苗,可以预防婴幼儿肺炎球菌感染,因此是预防的人群范围比国产疫苗大。如果单独比较进口和国产的23价多糖疫苗,两者防病效果没有差异。

国产vs进口,父母该怎么为孩子选疫苗

防病效果:国产与进口的区别,不过是92分与95分

现实中,没有疫苗的保护率可以达到100%。疫苗的防病效果一般有两种评价指标,最准确的指标是保护率,是指接种人群相对于未种人群,实际发病率降低的比例。比如100个接种麻疹疫苗者观察1年后发病1人,100个未接种者观察1年后发病15人,则麻疹疫苗的保护率是93%(14/15)。保护率通常难以获得,一般使用退而求其次的指标——抗体水平和抗体阳转率(抗体水平:接种后实测的保护性抗体浓度的具体数量值,一般高于设定的临界值越多越好;阳转率:接种后保护性抗体水平超过设定临界值的人数的百分比),一般而言,抗体水平和抗体阳转率越高,则保护率越高。图3中的防病效果,即以抗体阳转率和抗体水平为主要评价依据。必须说明的是,上市的疫苗均能达到国家相关的防病效果标准,只是在具体的抗体水平和阳转率的数字上可能有高低。打个比方:如果学习成绩以≥90分为优,那么92分和95分虽然有些许区别,但都是优。不能说92分和95分没有区别,但也没必要过于夸大这种区别。

通过国家检验的疫苗都是安全有效的

疫苗使用于健康人体,总体上安全性优于治疗用的药品。无论进口还是国产,都是检验合格才能上市,是安全有效的。不过,安全不等于没有不良反应。预防接种后的不良反应通常是局部红肿热痛、发热和轻微的过敏性皮疹。这些不良反应多数无需处理即可自愈,或可以对症处理,但并不存在针对预防接种不良反应所设计的治疗药品或疗法。
对于健康者而言,接种疫苗不会让其罹患相应的疾病。多数疫苗并不含有活的微生物体,也就不会引起人体感染(但能引起免疫应答);少数疫苗含有活的微生物体,但这些微生物体经过人工处理,其感染能力大大减弱(通常称为减活疫苗),通常只能引起轻微的或隐性的感染。这种感染模拟了疾病的自然过程,但又不引起明显的症状,其预防效果整体上优于前者。
对于免疫功能低下的人群(比如先天性免疫缺陷、肿瘤病人、艾滋病感染者),接种含有活微生物体的疫苗需要谨慎,特别是卡介苗、脊灰减活疫苗、黄热病疫苗。脊灰疫苗有减活疫苗也有非减活疫苗(俗称脊灰灭活疫苗),免疫功能低下者应考虑使用脊灰灭活疫苗。只是很多情况下,免疫功能低下很难被发现和确诊,看似健康者也可以在有选择的情况下,接种非减活疫苗。
目前能够确认为疫苗所致严重不良反应的,只有脊灰减活疫苗导致类似小儿麻痹症的肢体瘫痪,不过,发生率极低,约1/25万。其他各种在预防接种后发生的严重健康问题还仅仅是时间上与预防接种相关,但缺乏可靠的证据表明一定是预防接种所致(个案尤其如此)。
结论 :国产疫苗与进口疫苗在性能上不存在明显差距。选择国产疫苗还是进口疫苗取决于个人对疫苗性能与价格这两个因素的重视程度。性能至上者,选择进口疫苗不会有错;讲究性价比者,选择国产疫苗非常明智;钱包不是很鼓者,选择国产疫苗绝对实惠。

提前答疑:
疫苗上市前不应该提供保护率的数据吗?
答:疫苗上市前完成的三期临床实验,由于其观察时间以及研究人数的限制,难以观察到足够的发病人数来计算保护率。
参考资料:
  1. 《疫苗学(第5版)》. 人民卫生出版社
  2. 中国免疫规划制品数据库
  1. 中国食品药品检定研究院

2012年12月16日星期日

blogger有多国子域名

From Evernote:

blogger有多国子域名

目前发现的域名有 ismedo.blogger.ca  ismedo.blogger.tw 均可访问我的博客ismedo.blogger.com

2012年10月28日星期日

高考和大学的选择

高考和大学的选择:

背景

最近很多家长在为了高考的事情争。非京籍家长要求北京市教委给予外地孩子公平待遇,京籍家长认为北京本地教育资源有限,应维持现有状态。
另外,我在weibo上和一个交大的特招生吵,他认为特招生deserve大学(原话),我认为归根到底是个利益问题。
OK,以上是背景。

大学是一个什么?

中国的大学扩招比例是所罕见,其中有一个很大的因素是因为各种家长都认为孩子应当上大学。上过大学的孩子就跳龙门了。在我的观点来看(当然,我也有很多佐证),上大学不是跳龙门,谁上什么大学才是。我的一位朋友,是从偏远的农村来的,他们那里有个有趣的现象。凡是没上大学,高中毕业就工作的,家里多半都盖起了小楼,娶了媳妇,在本地工作。上了普通大学的,一般都还住在很旧的老房子里面,孩子在远方的城市,没结婚,刚刚还完,或者还在还学校的贷款。而上了一流大学的,则家里又比较富足,有很大一部分家长直接去了孩子所在的城市,很可能这些城市甚至不在中国。最后一种是否幸福,如人饮水冷暖自知。但是我要说的是,为什么会产生这样的分层变化?
关键是大学是什么样的一个东西。
我们为大学付钱,大学给我们各种资源。当然,好不好,值不值,就是一个很关键的问题。很多大学并没有资源,或者说没有足够的资源。这样的大学就是来赚你的钱的。中国人千年以来都认为,学而优则仕,念书是能当官的。于是再穷不能穷孩子,都变着态的往大学送。这种人的钱不赚赚谁的?自然,孩子没有得到好的教育,工资和普通高中生拉不开差距,家里又很是交了一笔学费,不穷你穷谁?
这年头家长也不都是傻子,我们从来不为进入这种大学而争论。问题是,那些好的,能够给你资源的学校,谁在进?谁应当进?

谁进大学?

首先你应当明白,大学并不是象牙塔,他不天然是为了让好的学生变得更强而出现的。大学的出现,是他的设立者为了他的理想而建的。如果他的理想碰巧是,让好的学生变的更强。那么,是的,这也是一种可能。但是你应当明白,另一种可能性是,为各种有钱人世家教育子女,让他们的子女比别人的子女更强。我得说,这也是一个可能。
那么中国的大学是什么?
刚刚我们说了,一种大学是赚钱。我们从不争论谁应当进去挨一刀。至于那些能带给你什么的大学,一般都是国家掌握的。这些大学创立的目标是什么,他们选学生的标准就是什么。国家运作这些大学是为了什么呢?
还是赚钱。中国的大学培养了相当大的一批高级产业工人,这是个不争的事实。有产业工人才有GDP啊。既然是培养产业工人的,那么招人的标准就相当明白——增加产业工人培养的成功率。一般来说,好的学生比较容易培养成优秀的产业工人。但是这不是正向相关的,里面总要附加点什么。首先,政治必须正确。政治不正确的学生培养出来是危险品。其次,学生要足够好,不够好的不培养难度太高。于是你就知道高考是怎么一回事了。首先,你必须政治正确,否则根本不会有高考机会。其次,考试。

谁应当进大学?

当然,我们是没有办法对国家施加影响力的。我们只是从理论的角度说。如果全民可以投票,来决定进入大学的制度,谁应当进去?
当然你也应该想的到,谁应当进大学是个政治问题,而不是技术问题。本质上,决定谁进大学就是决定谁在将来拥有利益。这是一个利益之争,永远是。我和那位交大的特招吵,就是因为他觉得特招理所应当进大学,因为他们deserve。而且他不觉得这和利益有什么关系。我不觉得谁是理所应当进入大学的,大学不是赛跑,跑赢拿奖品。大学不是养鸡场,养出一批换一批。所以我觉得以考试为基础来决定谁进大学本身就是个问题,高考有问题,特招当然也有问题。
但是我们没法脱离高考,你们都知道为什么。既然谁进大学是个政治问题,那么一种无论听起来多么合理,却看起来不见得公平,操作起来更可能有黑幕的方案,是绝对不可能上的了台面的。而目前,问所有人,觉得还算公平的方案,就是高考,大家一碗水端平。即使是高考这么看似公平的方案,也有无数不公平的细节在争吵中。特招生多了,平衡发展的学生家长就要有意见。取消特招了,偏科生家长就要有意见。开放对地区的人数限制,招生比例高的城市家长有意见。不开放,外地家长有意见。你知道的——无论社会民主还是不民主,这是永远的利益之争。所谓民不民主,只是这个问题是由大家投票解决,还是领导拍板解决。
关于地区之争,我首先引述一篇文章民主的细节 – 谁有特权上大学,文章需要翻墙,我引述如下。
看了刘瑜《民主的细节》,我没觉得美国像天堂,但中国真的很像个炼狱。
一个简单的例子。
刘瑜引用罗尔斯《正义论》的解释说:只有当你不知道自己可能是谁时,才能想清楚什么是正义。“他有一个术语,叫“无知之幕”,也就是一个人在对自己的社会处境暂时失明的情形。一个站在“无知之幕”后面的人,既可能是比尔盖茨,也可能是一个非洲饥民。如果你觉得正义就是杀光富人瓜分他的财产,万一“无知之幕”一拉开,发现自己就是比尔盖茨,恐怕你会后悔得一头撞死。如果你觉得正义就是WINDOWS 2000卖5000美元一套,万一“无知之幕”一拉开,发现自己其实是非洲饥民,估计也要捶胸顿足。”
然后,她举了美国人关于“谁有特权上大学”的争论。自60年代的平权运动始,许多人主张给黑人和妇女在入学上优惠,以补偿之前遭遇的歧视,叫做“补偿性正义原则”;但是矫枉过正的结果,产生“逆向歧视”,70年代中,一个叫巴克的白人学生不满自己在考大学上屡屡败给各方面都比自己差的黑人学生,上诉最高法院,法院裁定对黑人学生实行定额制是违宪的,但原则上仍支持平权行动,这个叫“程序性正义原则”。后来的40年,美国人民一直在如何协调这两种正义间苦苦挣扎与思索……中国呢?
“好了,终于可以回到咱们开头提的那个问题了――来自火星的你,被扔到大城市、内地、边疆的可能性各三分之一,你会如何设计高考分数线方案?
你可能会说:三个地方分数线一样嘛!大家公平竞争嘛!
你也可能会说:让边区分数线低一点,其他两个地方一样,因为那些地区贫穷,教育条件有限,人家北京上海的孩子用电脑打字,俺们这里还是凿壁借光呢。
你还可能会说:我选择让北京上海分数线低一点,其他两个地方一样。因为……因为……咦? 你们地球夏天真热啊?
我们知道,这三种选择,第一种叫“程序性正义原则”;第二种叫“补偿性正义原则”;第三种,姑且称之为“夏天总是很热”原则吧。”
元芳你怎么看?

大学值不值得进?

首先我给光知道赚钱的大学定个性吧。这种大学您就别去了,去了等于白去。
其次,对于指望搞研究的,真的对学术有兴趣的。我的建议是你尽快找好老婆,尽快走,出国读研究生。中国也是干活,外国也是干活。人家待遇比中国高不说,还没P事,能让你专心做研究。国内但凡是个院校都是一堆P事,搞行政的时间长过做学问的时间。
最后,您要是指望出人头地的——那就吵吧。。。

我的立场?

我其实是特招的受益者,当年我是物理竞赛的二等奖。但是,那毕竟是过去了。现在我物理方程都不记得几个了,要做计算更是要依赖程序了。而且——我也不会再高考了。
所以其实个我对高考的立场就是个无知之幕——谁知道将来会生儿子女儿,是偏文科还是理科。我连将来会不会在中国,想不想生都不知道呢。
所以我在偏科问题上的立场是随大流的,一般来说,强到特招的概率总比平均分数高的概率来的低吧。至于地区之争,我得说,原则上我支持向贫困地区倾斜。但是行动上支持北京和上海保持本地人低分数线。
听起来很悖论,但是这是诚实的想法。

2012年10月17日星期三

前端工程师面试问题列表

前端工程师面试问题列表:
前言:@ 在 GitHub 上分享了一个 repo,其中包括了不少前端面试问题,可用于检验潜在的候选人。绝不推荐在单个候选人身上用上所用的问题(那样会花费好几个小时滴)。从这个列表选择一些,应该能从候选人身上,检测出你所需要的技能。
请记住,下面的很多问题都是开放式的,无标准答案,并能引发有趣的讨论。相比直接的答案,相信你在面试前端工程师时,从讨论中你对候选人会了解的更多。
以下中文译文由@shawnqiang 完成。

问题贡献者
@bentruyman (http://bentruyman.com/), @roger_raymond (http://twitter.com/iansym), @ajpiano (http://ajpiano.com/), @paul_irish (http://paulirish.com/), @SlexAxton (http://alexsexton.com/), @boazsender (http://boazsender.com/), @miketaylr (http://miketaylr.com/), @vladikoff (http://vladfilippov.com/), @gf3 (http://gf3.ca/), @jon_neal (http://twitter.com/jon_neal), @wookiehangover (http://wookiehangover.com/) and @darcy_clarke (http://darcyclarke.me)

一般问题
★你用Twitter吗? (在天朝最好问你用微博吗?)
→如果用,你都关注那些人?
★你用Github吗?
→如果用,你关注的项目有什么?
★你关注的博客有那些?
★你使用那些版本管理系统,比如Git,SVN等?
★你常用的开发环境是怎样的?比如操作系统,文本编辑器,浏览器,及其他工具等。
★你能描述一下你制作一个网页的工作流程吗?
★你能描述一下渐进增强和优雅降级之间的不同吗?
→如果提到了特性检测,可以加分。
★请解释一下什么是语义化的HTML?
★你更喜欢在哪个浏览器下进行开发?你使用那些开发人员工具?
★你如何对网站的文件和资源进行优化?期待的解决方案包括:
· 文件合并
· 文件最小化/文件压缩
· 使用CDN托管
· 缓存的使用
· 其他
★为什么利用多个域名来存储网站资源会更有效?
→浏览器一次可以从一个域名下做多少资源?
★请说出三种减低页面加载时间的方法。(加载时间指感知的时间或者实际加载时间)
★如果你接到了一个使用Tab来缩进代码的项目,但是你喜欢空格,你会怎么做?
· 建议这个项目使用像EditorConfig (http://editorconfig.org) 之类的规范
· 为了保持一致性,转换成项目原有的风格
· 直接使用VIM的retab命令
★请写一个简单的幻灯效果页面
→如果不使用JS来完成,可以加分。
★你都使用那些工作来测试代码的性能?
· 例如JSPerf (http://jsperf.com/)
· 例如Dromaeo (http://dromaeo.com/)
· 其它。
★如果今年你打算熟练掌握一项新技术,那会是什么?
★请谈一下你对网页标准和标准制定机构重要性的理解。
★什么是FOUC?你如何来避免FOUC?

HTML相关问题
★文档类型的作用是什么?你知道多少种文档类型?
★浏览器标准模式和怪异模式之间的区别是什么?
★使用XHTML的局限有那些?
→如果页面使用’application/xhtml+xml’会有什么问题吗?
★如果网页内容需要支持多语言,你会怎么做?
★在设计和开发多语言网站时,有哪些问题你必须要考虑?
★在HTML5的页面中可以使用XHTML的语法吗?
★在HTML5中如何使用XML?
★’data-’属性的作用是什么?
★如果把HTML5看作做一个开放平台,那它的构建模块有那些?
★请描述一下cookies、sessionStorage和localStorage的区别?

JS相关问题
★你使用过那些Javascript库?
★你是否研究过你所使用的JS库或者框架的源代码?
★什么是哈希表?
★’undefined’变量和’undeclared’变量分别指什么?
★闭包是什么,如何使用它,为什么要使用它?
→你喜欢的使用闭包的模式是什么?
★请举出一个匿名函数的典型用例?
★请解释什么是Javascript的模块模式,并举出实用实例。
·如果有提到无污染的命名空间,可以考虑加分。
·如果你的模块没有自己的命名空间会怎么样?
★你如何组织自己的代码?是使用模块模式,还是使用经典继承的方法?
★请指出Javascript宿主对象和内置对象的区别?
★指出下列代码的区别:
function Person(){} var person = Person() var person = new Person()
★’.call’和’.apply’的区别是什么?
★请解释’Funciton.prototype.bind’的作用?
★你如何优化自己的代码?
★你能解释一下JavaScript中的继承是如何工作的吗?
★在什么时候你会使用’document.write()’?
→大多数生成的广告代码依旧使用’document.write()’,虽然这种用法会让人很不爽。
★请指出浏览器特性检测,特性推断和浏览器UA字符串嗅探的区别?
★请尽可能详尽的解释AJAX的工作原理。
★请解释JSONP的工作原理,以及它为什么不是真正的AJAX。
★你使用过JavaScript的模板系统吗?
→如有使用过,请谈谈你都使用过那些类似库文件。比如Mustache.js、Handlebars等等。
★请解释变量声明提升。
★请描述一下事件冒泡机制。
★”attribute”和”property”的区别是什么?
★为什么扩展JavaScript内置对象是个坏做法?
★为什么扩展JavaScript内置对象是个好做法?
★请指出document load和document ready的区别。(这是个问题的问题)
★’==’和’===’有什么不同?
★你如何获取浏览器URL中查询字符串中的参数。
★请解释一下JavaScript的同源策略。
★请解释一下事件代理。
★请描述一下JavaScript的继承模式。
★如何实现下列代码:
[1,2,3,4,5].duplicator(); // [1,2,3,4,5,1,2,3,4,5]
★描述一种JavaScript memoization(避免重复运算)的策略。
★什么是三元条件语句?
★函数的参数元是什么?
★什么是”use strict”?使用它的好处和坏处分别是什么?

JS代码示例:
~~3.14
★问题:上面的语句的返回值是什么? **答案:3
"i'm a lasagna hog".split("").reverse().join("");
★问题:上面的语句的返回值是什么? **答案:”goh angasal a m’i”
( window.foo || ( window.foo = "bar" ) );
★问题:window.foo的值是什么? **答案:”bar” 只有window.foo为假时的才是上面答案,否则就是它本身的值。
var foo = "Hello"; 
(function() { var bar = " World"; alert(foo + bar); })(); 
alert(foo + bar);
★问题:上面两个alert的结果是什么 答案: “Hello World” & ReferenceError: bar is not defined
var foo = [];
foo.push(1);
foo.push(2);
★问题:foo.length的值是什么? **答案:’2′
var foo = {};
 foo.bar = 'hello';
★问题:foo.length的值是什么? **答案: undefined

jQuery相关问题
★解释”chaining”。
★解释”deferreds”。
★你知道那些针对jQuery的优化方法。
★请解释’.end()’的用途。
★你如何给一个事件处理函数命名空间,为什么要这样做?
★请说出你可以传递到jQuery方法的四种不同值。
→选择器(字符串),HTML(字符串),回调函数,HTML元素,对象,数组,元素数组,jQuery对象等。
★什么是效果队列?
★请指出’.get()’、’[]‘、’eq()’,的区别。
★请指出’.bing()’、’.live()’ 和 ‘.delegate()’的区别。
★请指出 ‘$’ 和 ‘$.fn’ 的区别?或者解释什么是 ‘$.fn’ 。
★请优化下列选择器:
$(".foo div#bar:eq(0)")

CSS相关问题
★描述css reset的作用和用途。
★描述下浮动和它的工作原理。
★清除浮动的方法有那些,分别适用于什么情形。
★解释css sprites,如何使用。
★你最喜欢的图片替换方法是什么,你如何选择使用。
★讨论CSS hacks,条件引用或者其他。
★如何为有功能限制的浏览器提供网页。
→你会使用那些技术和处理方法。
★何视觉隐藏网页内容,只让它们在屏幕阅读器中可用。
★你使用过网格系统吗?如果使用过,你最喜欢哪种?
★你使用过meidia queries(媒体查询)吗,或者移动网站相关的CSS布局。
★你熟悉SVG样式的书写吗?
★如何优化网页的打印样式。
★在书写高效CSS文件时会有哪些问题需要考虑。
★你使用CSS预处理器吗?(SASS,Compass,Stylus,LESS)
→如果使用,描述你的喜好。
★你是否接触过使用非标准字体的设计?
→字体服务,Google Webfonts, Typekit,等等。
★请解释浏览器是如何根据CSS选择器选择对应元素的。

可选的有趣问题
★你编写过的最酷的代码是什么?其中你最自豪的是什么?
★你知道HTML5的帮派标志吗?
★你是否正在或曾经在一艘船上。(不懂这个幽默)
★你使用的开发工具中,你最喜欢的部分是什么?
★你有什么业余项目吗?是那种类型的?
★解释cornify的重要性?(本题完全摸不到头脑)
★在一张纸上,垂直写下ABCDE,然后不用任何代码,将他们到序排列。
→静静地看他们是否将纸翻转。
★海盗还是忍者?
→如果是两者的合体,并有恰当理由,可以加分。如果是僵尸猴子海盗加忍者加两分。(译注,此题文化差异过大)
★如果没有在Web开发,你会做什么?
★卡门圣迭哥的隐藏处在哪里?
→提示:本题的答案永远是错的。
★你最爱的IE特性是什么?
★完句填空: Brendan Eich和Doug Crockford是JavaScript的________。
★讨论:jQuery是牛逼的库还是最牛逼的库。

—————————————–
伯乐在线注:也欢迎国内前端开发人员来给这个列表添砖加瓦。

web develope

相关文章

2012年10月8日星期一

随系统启动shell

    使用vi打开配置文件,命令如下 vi /etc/rc.local
比如,你的脚步为test.sh在home下的test中,那么在rc.local中写上 /home/test/test.sh
如果你不确定到底开机时不时运行了/etc/rc.local,可以在rc.local中你要运行的脚步命令之前加上set >>/home/test/1010.txt
如果运行正常,会在home下的test中产生一个文本文件1010.txt,此时已表示开机会自动运行/etc/rc.local文件。
最后在罗嗦一句,你的shell脚本中,要用到路径的地方,一定最后用绝对路径。

参考链接 http://forum.ubuntu.org.cn/viewtopic.php?f=21&t=382222

2012年8月3日星期五

CentOS下的软件包管理--yum篇

CentOS下的软件包管理--yum篇

YUM
CentOSFedora Core行版中,采用了一叫做yum件包合管理工具,它的全称是Yellowdog Updater,Modified个工具并不是CentOS开发的,而是由Yellow Dog Linux开发件包合管理工具。作为软件包合管理工具除了yum外,DebianGNU/Linux所采用的APTRed Hat Enterprise Linux等所采用的up2date(在RHEL5开始采用了YUM的软件包管理)
的共同特点是:
?通安装和升级软件包
?自解决件包的依存
※这注意,Yum件包升件包并非是最新的软件,它是基于RPM软件包形式的软件,是CentOS(RHEL)的安全定包。要安装最新的软件,最好采用编译安装的方式。


Yum利用准备
在使用yum之前,最基本的事情就是要先导入GPG公开key,更改还有就是软件包下载的网站(yum配置文件中定义的软件包下载地址)。

※GPG
公开key
RPM
软件包都有电子签名,用这个电子签名来判断软件包有没有被篡改,数据有无破损是否完整,正因为这样才要导入开发组织配布的GPG公开key。那这个GPG公开key可以从软件包发布站和CD-ROM/DVD-ROM获得,在系统下被默认安装在/usr/share/doc/centos-release-4/RPM-GPG-KEY下,这里还有一个一模一样的文件/usr/share/doc/centos-release-4/RPM-GPG-KEY-centos4。倘若你只是利用centos.org的镜像站点的话,那么这个公开key是默认被导入了的,在我们的网站上面你可以看到,非官方库利用的时候,我们也导入了这个GPG公开key,参照http://www.centospub.com/make/newenv.html下的定义非官方库的操作。

★导入GPG的公开key的方法:
#rpm –import GPGkey
的路径或网络文件注意空格
更新软件包下载镜像地址的设定
Cent0S
的镜像下在网站分布在世界的很多地方,默认的设定是centos.org,中国镜像分布在中国的上海,香港还有福建。修改软件包下载镜像站点是为了提高软件包下载速度。(也可以通过文章下面提到的"自动选择镜像"的方法)
Yum
的设定文件是/etc/yum.repos.d/CentOS-Base.repo。关于站点更改的内容请参照本站问题解答版主Chao的"CentOS终于有了中国镜像!"的文章。
在 这里提醒更改文件设置的用户,一定要将原文件作备份后再修改。或者将原来的文件内容注释掉,而不是删除或覆盖原设置。并在文件中加以注释,比如什么时间更 改的,由谁更改的,更改的内容等信息,这对系统的管理维护有好处。(任何修改都必须是可还原的,并且是通过运行测试的)
在本站的问题解答区块中,就出现过几次类似的,谁能给我这个文件,那个文件的情况。原因就是未做好备份工作,没有良好的系统管理意识(不是习惯)。

使用yum更新软件包

在本站的配置祥解中,大家多次看到我们采用了yum安装软件的内容。
关于使用yum的详细信息,大家可以参照fedore.clinux.org的使用yum管理软件的文档。
英文好些的人可以直接在系统下#man yum,查看帮助信息。`

★常用的yum参数选项?使用方法

  1. #yum check-update
  2. #yum update 软件包(单个软件包升级)
  3. #yum -y update 软件包(升级所有的可升级的软件包)
复制代码

※(功能同上,-y表示同意所有,比在一次次的确,因为软件包友依赖关系,除是有可能除很多的件包,不用一次次确。体会一下)

除:
  1. #yum remove 软件包名
  2. #yum -y remove 软件包
复制代码


安装:
  1. #yum install 软件包名
  2. #yum -y install 软件包
复制代码


件包
  1. #yum grouplist (确认软件包组,安装过的软件包,为安装的软件包)
  2. #yum groupinstall "软件包组" (安装可安装的软件包组群)
  3. 例: #yum -y groupinstall "X Window System" (安装基本的窗口系统)
复制代码

其他:


选项



check-update


示可升件包


clean


除下后的旧的header。和clean all相同


clean oldheaders


除旧的headers


clean packages


除下后的件包


info


示可用件包信息


info 件包名


示指定件包信息


install 件包名


安装指定件包


list


示可用件包


list installed


示安装了的件包


list updates


示可升件包


provides 件包名


件包所包含的文件


remove 件包名


除制定的件包,确判定指定件包的依存系。


search 关键


利用关键字搜索件包。搜索象是,RPM文件名,Packager(包),Dummary,Description的各型


update


所有的可升件包


update 件包名


指定的件包


 


选项



groupinstall


安装指定的


groupupdate


安装了的员软件包更新


grouplist


安装了的和可以安装的览显


groupremove


除指定的


groupinfo


指定所包含的件包






★yum 

安装新的仓库Repository
功能:


基本的仓库CentOS件包?)然有丰富的件,但是有些是没有的。
安装其它的仓库来解决基本仓库中未包括的,实际存在的件包问题
CentOS4:

  1. # wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el4.rf.i386.rpm
  2. #rpm -Uhv rpmforge-release-0.3.6-1.el4.rf.i386.rpm
复制代码
CentOS5:

 



  1. # wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
  2. # rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm
复制代码

 


 



如果有问题策(供参考):



  1. # vi /etc/yum.repos.d/rpmforge.repo

  2. enabled = 1
  3.     ↓
  4. enabled = 0           ← 变更为0,为了避免和基本的软件仓库的竞争
复制代码

 


 



使用法:



  1. # yum -y --enablerepo=rpmforge install 软件包       ← 软件包安装(在基本软件仓库中没有的软件包安装)
复制代码

 


 


fastestmirror插件安装
功能:



让软件包在线载时动选择最合适的像站点。(不知道中国管不管用,未测试



  1. # yum -y install yum-fastestmirror
复制代码

 


 


代理服置:

  1. # vi /etc/yum.conf
  2. proxy=http:// 服务器IP:端口   ← 最后一行添加
复制代码

 


 


★停止更新通知進程



理由:


占用大量的内存,一个小时更新确认一次......


※不建议启动自动更新,而采用手动更新的方式。并且建议设定更新运行确认服务器(test用)。


 


 

  1. # /etc/rc.d/init.d/yum-updatesd stop 
  2. # chkconfig yum-updatesd off
复制代码

 


 


★通过yum更新软件包的例外设置


如果系统存在的一些软件包有版本的依存问题,那么我们不能够,也不会轻易的升级它们(除非你做过完善的测试工作)。我们可以告诉yum在更新时不更新谁。


 

  1. [root@centos ~]# vi /etc/yum.conf ←编辑yum设置文件
  2. # 在文件的最后追加
  3. exclude=openssh*    ←这里是不更新openssh相关的设置
  4. exclude=httpd  ←不更新httpd
复制代码

 

 

★问题对策

如果在使用yum升级或删除软件的时候遇到了类似下面错误信息的内容

 

  1. http://centos.ustc.edu.cn/centos/5.1/extras/i386/repodata/primary.xml.gz: [Errno -1] Metadata file does not match checksum
复制代码

 

对策如下,经过如下的操作,然后再进行想要做的动作,结合上面的/etc/yum.repos.d/rpmforge.repo
私改一起使用。

 

  1. # yum clean all   
复制代码

 

※注:2008/2/7 今天想要删除GNOME桌面,但是就是出错。找来找去找到了上面的这个方法,管用。
※删除GNOME方法:# yum -y groupremove "GNOME Desktop Environment" 
※相反安装GNOME方法:# yum -y groupinstall "GNOME Desktop Environment" 不过要先安装X Window System: # yum -y groupinstall "X Window System"