Oculus Rift DK2自从3月发布以来,大家都翘首以待,今天终于确定了,7月发货1w台,比预期的少,后下订单的估计有得等了。想起去年ChinaJoy在Intel展区体验了一下1代的Oculus Rift,演示程序是RiftCoaster,就是那个经典的过山车,回想起来还是很带感。这么火爆的设备,估计在今年的ChinaJoy也可以体验到,真是令人相当期待。在这等待的时间里,还是可以做点其他事情的,比如DIY一个属于自己的虚拟现实设备。
网上早就在流传把诸如小米3之类的手机改造成VR设备,之前也有了解过,看起来貌似很复杂的样子;直到前几天GOOGLE I/O大会,发布了一个Cardboard,然后到Oculus Rift贴吧里看了一下,发现有些网友的自制设备可寒酸了,就是拿了个纸盒子打孔,固定手机和透镜就行,才意识到其实自己DIY一个也很简单的,手机可以作为显示屏,自己手头有瓦楞纸(就是快递用纸箱的那种纸皮)、宽胶带、小刀、剪刀、尺子,唯一缺少的材料就是一对合适的凸透镜——求助万能的淘宝就行了。
其实并不是不想写博客了,只是因为无从下手敲键盘。工作上没什么值得写的事情。没有什么困难的东西,有点新意的也就是象征性地接触了一下以前想搞搞但是一直动力不足的hadoop什么的,安装说明什么的还是不写比较好...
八月以来,拾起三月看断的SICP,陆陆续续地看到了第四章,连自己都有点意外。虽然从书中学到了不少东西,但似乎也没有什么适合总结写下来的,也许是因为还没“悟道”吧,只能先把代码提交到 GitHub ,期望着哪天看完了能写点什么。
这几个月生活的主要亮点之一是买了Kindle Paperwhite以后,看了好多书。历史、哲学、金融、文学,都有涉猎,挺有意思的。最近把《量子物理史话》又看了一遍,然后开始看《明朝那些事儿》。不仅买了很多电子书,还莫名其妙心血来潮买了好多纸质书,其中有几块大部头,比如《30天自制操作系统》、《编译原理》、《什么是数学》……感觉有很多只能拿来垫显示器了,有点囧,尽量看吧。不管怎么说,买了kpw以后增加了自己的阅读量,挺好的,因此在这里顺便强烈推荐一下。
最后征集一下早餐的问题。在吃了两个月华夫饼、接着又泡了两个月永和豆浆粉以后,想换点什么新的、适合在办公室搞定的东西,求推荐……
p.s. 再顺便推荐几本好书吧,Kindle电子书 //亚马逊有Kindle for PC/Mac/iOS/Android
《上帝掷骰子吗:量子物理史话》 ¥2.99
《时间的形状:相对论史话》 ¥5.00
哲学家们都干了些什么? ¥0.99
搞懂金融的第一本书 ¥3.99
重说中国近代史 ¥1.60
明朝那些事儿(1-7套装) ¥15.00
2. 在Linux的实现里,每个pthread线程都对应一个LWP(light weight process);而LWP是由内核线程支持的,由内核统一调度,所以每个pthread线程都有对应task_struct,以及对应的tid(不是pthread_self()返回的那货,而是类似于pid),所以效率就不会太高(因为切换什么的都要回到内核里,而syscall的效率……),而且对应地,还要消耗内核线程的栈空间等资源,所以效率不会很高。
3. man gettid可以看到这个syscall是在 sys/types.h 里,但是实际上在我的ubuntu 12.04, kernel 3.2.0上面没有,需要这样:
#define gettid() syscall(__NR_gettid)
不加上的话,结果就是 error: ‘gettid’ was not declared in this scope
4. 每个线程都有单独的cpu_affinity,通过 pthread_setaffinity_np, pthread_getaffinity_np 来读写。
5. Linux下,在 /proc/[PID]/task 下面包含了进程的所有线程的相关信息,每个线程一个目录,目录名就是线程的ID;每个线程的相关信息与进程类似,:
8660 8662 8663 8664
felix021@xxx:/proc/8660:/proc/8660$ ls task/8662
attr cmdline cwd exe fdinfo limits maps mounts oom_score schedstat stat status
auxv cpuset environ fd io loginuid mem oom_adj root smaps statm wchan
5. 每个线程可以被调度到不同CPU上面,类似于进程的/proc/PID/stat文件,线程当前运行的CPU ID保存在对应目录内的stat文件中第39个字段:
8660, 1
8662, 1
8663, 15
8664, 14
6. 可以用ps的 L 和 F 参数列出所有的LWP:
felix021@xxx:~/code$ ps -FL
UID PID PPID LWP C NLWP SZ RSS PSR STIME TTY TIME CMD
fengmin 7792 7791 7792 0 1 16561 1676 0 16:02 pts/3 00:00:00 -bash
fengmin 8660 7792 8660 0 4 11111 1004 1 17:04 pts/3 00:00:00 ./ttt
fengmin 8660 7792 8662 99 4 11111 1004 1 17:04 pts/3 00:05:05 ./ttt
fengmin 8660 7792 8663 99 4 11111 1004 15 17:04 pts/3 00:05:05 ./ttt
fengmin 8660 7792 8664 99 4 11111 1004 14 17:04 pts/3 00:05:05 ./ttt
fengmin 8692 7792 8692 0 1 16411 996 2 17:09 pts/3 00:00:00 ps -FL
其中LWP列就是LWP的id,PSR是processor,也就是CPU ID。
p.s. 另外有个GNU PTH,这个是 n:1 的,纯用户空间完成调度的线程库,POSIX兼容。
由于对方是万恶的美帝,还要经过日李万基的reseller,所以往来3封邮件花了三天的时间,仍然没有解决问题,怒了,直接在 Ramhost 另外买了个VPS,基于KVM技术,256M RAM + 7GB HDD,$4.99/Month(可以使用paypal转网银以RMB支付)。看起来参数是不如原先安个OpenVZ的512M+20GB(35元/月,买10送2),但是由于Ramhost承诺不超售,因此实际性能(CPU、内存、网络)应该是要超过BurstNet,而价格上也没有太大的差别。
折腾了两三天,目前装上了Ubuntu 12.04 Server x86_64,nginx + php-fpm + mysql, sshd, pptpd, postfix, denyhosts, 稳定运行了一段时间以后,free的输出大约是
total used free shared buffers cached
Mem: 239 220 19 0 14 133
-/+ buffers/cache: 72 167
Swap: 490 24 466
总体来说还是比较满意的,实际速度也比原先的vps快,尤其是刷网页的时候很明显。
在安全方面,VPS什么都得自己搞,比较头疼。
denyhosts已经往/etc/hosts.deny里面加入了7个ip,都是试图ssh登录失败多次的。
在邮件方面,这次特别注意了,使用iptables限制只能是本地ip才能连上tcp#25。
iptables -A INPUT -j ACCEPT -p tcp --dport 25 -s 127.0.0.1
iptables -A INPUT -j REJECT -p tcp --dport 25
在web方面,大概分析了下头天的nginx log,发现有大量的异常访问,于是根据UA屏蔽了许多抓站请求(不是常见的Spider)。比较特殊的是被GFW屏蔽的那个 /t ,目前仍有少量请求,而且UA为空,看起来像是GFW的回访,所以果断屏蔽之。
大概就是这样。
p.s. 遇到一件很不靠谱的事情:昨晚Ramhost给我换了个IP,居然没有任何通知!折腾了半天,看到管理面板上的IP有异我才发现,果断发TICKET质问他们,看他们如何解释,艹。
p.p.s. 奇葩解释:"You are mistaken. Your IP address was and has always been 199.180.255.30, Seeing as your account is only 4 days old we have absolutely no reason to need to change your IP address. We have not and will not change your IP address like that." 好吧。怪我没有留下证据。
知识的本质
抓住知识的本质是提升学习效率的重要方法。
从数量上说,现代社会的“知识”有两个特点,第一是“总量大”,第二是“增长快”,这两个特点合在一起就是过去常说的“知识爆炸”。但知识还有另外一个特点——相比表层知识的庞大数量和几何式增长,知识的核心部分的发展要平缓得多。
以计算机领域为例,虽然计算机是二战以后发展最快的领域,但著名的黑客Paul Graham却说今天最先进的计算机技术在思想上和20世纪50年代并没有什么不同;在经济学领域,无论涉足到那一个分支,都无法离开亚当·斯密这个根本;在管理学领域,尽管各种工具、方法层出不穷,但像价值链分析这样的方法仍然根源性的;而从更大的范围上讲,思考问题的方式、解决问题的方法同样是相对稳定不会过时的;甚至知识的发展也是有规律可循,并且这些规律同样是相对稳定的。
这些知识中相对“不变”的部分恰恰是知识中最关键的部分,一个人知道很多表层的知识,我们只会说他懂点“皮毛”,只有他掌握了“不变”的知识,我们才会认为他有“学识”。而另一方面,由于知识的总量太大了,如果没有这些“不变”的知识,学习和创造就会成为不可能的事,我们常说“触类旁通”,其基础就是“不变”的知识。
上面说的道理并不复杂,但执行起来却并不容易。在现实生活中,我们见到的懂点皮毛的人要远远多过功底深厚的人,究其原因,我觉得有以下几个:
首先,相比表层知识的具体,知识的本质部分总体上是相对抽象的。理解知识的本质,其难度比认识表层要高得多,陡峭的学习曲线经常会让人望而怯步;
第二,相比表层知识的“有用”,知识的本质部分往往很难立刻发现其实际用途。这并非功利不功利的问题,而是眼光的问题,追逐长远利益的人和只看得见眼前利益的人对“有用”的认识往往是大相径庭的。但眼光长远的人之所以受到普遍的尊敬,一个重要的原因是他们是社会的少数。
第三,知识的本质经常会落实在一些常用、普通也因此容易被忽视的概念上,因为这些概念太常见了,我们经常以为自己懂这些概念,但实际上却是似是而非的。比如经济学上最基本的成本、价格这些概念,现在随便看个报纸、听听新闻都能遇到很多次,但又有多少人去深究成本与价格的概念所指?当我弄清价格其实是成本的一种特例——市场揭示出来的成本时,我是很吃惊的,既惊讶于这些概念内涵的深刻,也惊讶于我自己学习的疏忽。
写到这里,似乎应该总结几个方法去提升学习知识本质的能力,但想来想去并没有任何可以讨巧的方法,事实上,讨巧本身就是惰性的一种,而学习、创造的过程也就是克服惰性的过程,学习之苦也正是学习之甜。
(原文完)
== Felix简评 ==
觉得好像很久没有看到这样的文章了,句句切中要点。
在计算机学科,现在新技术太多了,硬件、软件、网络、架构设计……满满当当,任何一部分在任何一个层面上都学不完。甚至有很多新的技术你还没能完全掌握,就已经被淘汰了。怎么办!
好办!因为你根本不需要学习那么多的东西,只要在掌握了底层知识的基础上,适当开阔眼界,那么就根本不必烦恼知识爆炸带来的问题。
然而底层知识的学习往往是枯燥、晦涩,并且“很难立刻发现其实际用途”。例如,计算机专业开设的操作系统原理这门课,课本通常都非常理论化,内存分配策略,进程调度,生产者消费者,竞争,同步,互斥……学生们往往在学的时候不知所云,学完以后不知何用。然而在实际的项目开发中,如果开发者对于这些知识缺乏了解,那么灾难就在所难免了。
反映到实际就业来说,大部分刚毕业的计算机专业学生代码都没多少项目经验,而社会上的培训机构如北大青鸟,能够让一个人在数月内学会某个开发技术。然而那些业内顶级的公司(例如NTMGB等公司),往往并不愿意招那些培训过的,而是选择校园招聘,其中很重要的原因就是,科班出身的毕业生学习过基础知识,尽管不能马上干活,但是经过短时间的培训就能比那些培训人员做的更好。
(简评烂尾)
注:NTMGB是指网易、腾讯、微软、谷歌、百度。
其实代收简历这事儿,早两年就在做了,也算是见过各种形形色色的简历,大牛小牛普通人,当然也不乏二逼青年们。总的来说,大部分人,对简历的概念仅仅局限于下载一份模板并填满这样的程度,实在是让我忍不住不吐槽。当然,吐槽仅限于IT行业相关的简历,隔行如隔山。
首先,网上那些简历模板弱爆了啊亲!又不是让你办入职手续,那些生日民族籍贯户口身高体重地址政治面貌教育背景有个鸟用啊,全TM是废话,而且占用了最重要的位置!更奇葩的是,美女帅哥贴照片增加印象分也就算了,长得很抽象的兄弟姐妹们啊,你们也贴?尤其是那种在宿舍阳台拍了后面还吊一条裤子的,你是来给HR们无聊的时光增添乐趣的吗?那你怎么不穿个比基尼上镜呢!
——建议:如果不是去面试特别正规的国企什么的,别用那些乱七八糟的模板,自己设计一个;不会设计的,则力求简单明了。个人信息包含最基本的姓名、学历(毕业时间)、学校、专业、联系方式外的那些,能省就省了,或者扔到末尾去。除了帅哥美女之外,照片还是别留了。简历一般以1~2页为宜,如果只有一页多一点,就排排版缩到一页;不要搞封面,纯粹浪费生命。
其次,二逼青年们对信息的重要性完全没概念啊!到底申请什么职位啊?发个简历过来就完事儿了?知道申请的这职位要求是啥不?啥都不知道就撂个简历过来,搞毛线啊。申请技术职位,居然把学生工作、课程(成绩)之类毫无意义的内容放在开篇,还写得TM那么详细!申请C/C++开发职位,丫写那么多Java有毛用!项目经历写了几坨却跟没写一样的,根本看不出来丫在项目里做了什么事情、做了多少事情啊!
——建议:写上申请的职位/方向;充分了解职位要求,职位相关的技能、项目经历、获奖放在开篇醒目位置,其余信息放到末尾。项目经历里写清楚自己做了什么事情、多少事情,技术类的项目写清用了什么技术,编码类可以写明自己完成的代码量。申请技术类的职位,学生工作、文娱竞赛、兴趣爱好等信息适当提及就好了。
再次,各种奇葩。找我收简历的都是在B公司、T公司、M公司的同学/学长,希望内推的也要掂量一下自己啊,什么项目经验都没有、什么都不会的简历也发过来,还说“希望贵公司给一个展现的平台、相信我的努力会把工作做好”……这个实在是无力吐槽了。
——建议:在校期间多努力,机会只给有准备的人。
OVER.
==== 2011-04-28 ====
云客服X793: 你好,有什么可以帮您的吗?
felix021: 能不能不要往我的手机里发广告
云客服X793: 您好,请您详细说一下您的问题好吗?
felix021: 收到广告短信,要我上021.tmall.com 烦
云客服X793: 这您可以再淘宝上设置的
felix021: 怎么设置 帐号管理,删除手机号?
云客服X793: 登陆淘宝——进入账号管理 订阅管理
felix021: “您还没有订阅任何内容!”
云客服X793: 或者网站提醒
felix021: 网站提醒里 跟手机有关的全都没勾
felix021: 请问, 我还可以怎么办?
云客服X793: 拿手机短信设置呢? 也是在网站提醒那里的
felix021: 噢 网站提醒里的那个吧,没订阅 点开后提示 “输入手机号码,申请开通” 如果我把绑定的手机号码删掉,是不是就不会收到你们的垃圾短信了
云客服X793: 那您确认是淘宝发的垃圾短信?
felix021: 不然谁让我上021.tmall.com啊 难道是拍拍? 发短信的号码是 10659020511107101
云客服X793: 这样啊,您可以取消关于聚划算的关注
felix021: 那又是个什么东西,我啥时候关注过了
云客服X793: 这是淘宝团购的项目
felix021: 那我还是第一次听说淘宝开团购了 没订阅
云客服X793: 额~那这应该就是淘宝的推广了
felix021: 麻烦您给处理一下吧
云客服X793: 您以后应该不会再收到了
felix021: 非常感谢。
云客服X793: 恩,我们会处理的 我会向上反应的
==== 2011-11-21 ====
云客服X582: 您好,有什么可以帮助您的吗?
felix021: 你好 你们能不能不要再给我发垃圾短信了 我投诉好几次了还在发还在发
云客服X582: 您好,请您详细描述一下您的问题好吗?
felix021: 收到垃圾短信 投诉了还在发 不够详细吗 我在淘宝设置里面已经特意把绑定的手机号给解绑了 你们还在发,你们还能不能更无耻一点?
云客服X582: 您是指什么 信息呢
felix021: 我不管是什么信息,淘宝的短信我一条都不想收到。 我知道你们后台有屏蔽发短信的东西,不要罗嗦
云客服X582: 亲,不好意思,这个我们这里核实不了哦,建议您联系一下热线
felix021: 一个淘宝连800 400都没有 你们还是叫冷线比较好
云客服X582: 亲,或者您可以先说明一下是一些什么 信息么,我这里需要先核实一下是不是淘宝网发的哦
felix021: 10659057600126107 感恩节来临,打开淘宝安卓客户端,……
felix021: 嗯 说不定是拍拍发的我冤枉你们了。上次021.tmall.com的垃圾短信说不定也是拍拍发了 再上次的我就不记得了,反正我已经投诉2次了 都没能解决,你说我是不是去找拍拍的客服更靠谱?
云客服X582 (2011-11-21 20:00:25) 亲,稍等
系统提示 (2011-11-21 20:04:29) 由于您超时没有提问,系统已退出人工客服。
=== 本文转自 http://coolshell.cn/articles/5815.html 作者 陈皓 === P.S. CoolShell是个好网站,推荐订阅
上一篇博文翻译了Steve Yegge的rant,这两天有一些事让我也想rant一下(所谓rant就是一篇巨长无比的抱怨和说教),不过无论是从见解还是恶搞来说肯定没有SteveY的水平高,所以,这篇博文只是单纯的rant,看标题就知道了,就像“篱笆,女人和狗”一样,乡土味实足。所以,下述的一些观点未必正确,也未必靠谱,也就是我的个人唠叨罢了,我想到哪里说到哪里。(篇幅较长,见谅)
引子
我前两天,收到一封邮件,一位快要毕业的的大学生问我,是去百度,还是去创新工场?他在来信中说,从个人道德价值观来说,他想去创新工场,要远离流氓企业,不然会有狼狈为奸、助纣为虐的感觉,对不起自己。但是创新工场那边情况不熟悉, 不知道怎么选择,并问我现在比较热的移动互联网靠不靠谱。
正好这两天我在微博里看到大家转贴李开复的几个让毕业生创业的微博,比如,这个微博,还有 这个微博。呵呵。
李开复:有关毕业生高科技创业,我的建议:1)创业需要理解趋势、汇集精英、实践经验,因此大学毕业不要主导创业,只能参加创业公司,2)最好远在毕业前就寻找创业公司实习机会(无偿亦可),因为也许创业并不适合你或你想象那样,3)毕业时若想学习创业,最好到创业公司。到大公司学习能学技术但不够针对性。
还有前两天的“移动开发者大会”,然后,又有一个以前的同事和我谈了一下他创业的事以及他的想法,正好又在网上看到罗永浩同学的那个“一个理想者创业的故事”的演讲。还有一些做blog插件的团队希望我能在酷壳上安装一下他们的插件。等等,等等。所以,让我有了这个可以rant的写作情绪。