Shell's Home

销售的几大手法和防御

Mar 8, 2012 - 1 minute read - Comments

1.减少对方做选择的机会。一般来说,不怕不识货,就怕货比货。一旦买家有了选择权,卖家就少一个手脚可玩了。因此常见方法是封锁对方做选择的机会,例如,你们去南浦大桥下的沃尔玛,里面手机是没信号的吧。 2.减少你的思考时间。通常这点是多少时间内购买打折,今天最后一天之类的说法。总之,让你的反应时间减少到24小时以内。 3.非透明定价。通常来说,有市场价的东西是很难做销售的,例如电脑。也许你会说电脑卖家如何如何。但是我实话告诉你,如果他没有在硬件上骗你,给的是真货好货,全装好了,扣除成本(包括给自己发的工资),最多赚你1-2%。电脑卖家最稳定的赚钱渠道还是大量的小公司单。 4.口头误导。在没有任何证据的场合下,他往往告诉你很多错误信息。这个东西其他地方卖多贵阿,效果有多好阿,一概是忽悠。如果你录像,他的手法就变成了强调特例和误导。不过后者是没有任何办法的。 5.隐藏细节。很多sales,往往是会推敲你说话中的每个字。你要没注意到某个细节,他也就打马虎眼过去了。注意到了也尽量打马虎眼。例如一块显卡,64bit和128bit差40,你不说,他按照128bit的价格卖你64bit的卡。你即使有意见,这个也不是不合理,很难再退回来。这种事情很难防御,你要是注意每个细节,成本会太高。 6.友谊策略。很多sales会尽量聊你熟悉的东西,让你产生亲切感。例如同乡,同学。反正他总能找出和你的共同点。有的时候你觉得帮帮朋友,该坚持的地方就没有坚持,钱他就赚到了。这个策略有的时候还有点变形情况,例如他可能会说,这个东西你不一定要买,因为什么什么。我们尽量卖对的,不卖贵的,什么什么是我们的企业文化。你会觉得好激动阿,见到好人了。然后他推荐你一家,你一买,上当了,那是他的另一家店。 7.面子策略。有的时候,sales会营造你需要面子的情况。例如电影院门口给情侣卖花,饭店吃好了抢着买单。甚至据说有培训的时候,拉一帮人上来,问假定性的问题,你们愿意花多少钱和我做朋友。你说多少OK,行了,小弟,给他拉卡,按这个价格买我课程,你能不买么? 8.花钱买故事。很多时候,sales会准备一个故事,或者一个环境。例如寺庙门口,坐着喝水,你问路,给你指路。然后随口和你说,烧香前一定要洗手,不洗手晦气。那你就会问,怎么洗手。他会接着领你去洗手。洗好了,旁边就有人说,这水开过光的,问你要钱,不付钱也可以,家人就会怎么样怎么样。来烧香的都是求平安的,这么一搞还有不付钱的么?或者有的时候,在车站那里,拉要旅游的人说,那边是收费项目,我建议你去一个地方,景色很好看,免费的。你去了,然后又有人说,到这里什么什么是特产,很便宜,就是不好买。等你从七八个人的迷魂阵里面出来,往往手里已经拎着这个月工资了。 建议: 1.首先一点,不是买所有东西都要唧唧歪歪。买一块面包都要货比三家,你烦不烦阿。有些东西你不是很在意,就买个价格合适的就好了。 2.尽量增加信息量。你要看看别人对这个事情怎么评价的,网络上其他供应商报价如何。建议在手机上多准备几个应用,多准备点流量,怎么也比你吃亏来的便宜。 3.从便宜的开始买。你不懂的时候,可以先买个便宜货。当你被这个便宜货折腾了几个地方,你就会注意到贵的东西为什么贵。再买的时候就比较不容易出错。 4.买一个东西,必须经过48小时以上的思考和听取他人意见时间,否则不买。当然,这个可能错失不少好东西。但是我的经验而言,采取盲目购买造成的浪费通常比快速购买获得的好处要大一个数量级。 5.和任何sales打交道都别上一个录像设备,也不一定要开,但是一定要别着。他们吃不准你是不是在录像,说话就会小心很多。如果sales要求你关掉,你可以掉头就走。或者堂而皇之的质疑他,你为什么不敢公开你说的话。 6.不要在意和sales的关系,亲兄弟明算帐。和sales搞好关系没啥奇怪的,我和一个卖电脑的关系不错,从他那里买了6年多电脑。我知道他有赚钱,不过没关系,赚的不比市场价格高太多就行。东西一定要OK,不行的话我会要求他给我换一个,有的时候还会因为东西有问题要他打折退钱什么的。大家是生意上建立的关系,明对明才容易维持。 7.不要相信sales的任何一条信息,除了他需要和你达成的意向以外。他说1000卖你,这个你得听。他说这个东西好,那个东西不好,哪怕无关紧要,都不要听。 8.不要脸。自己评估一下,值得不值得,值得的话,就干脆不要脸了。反正他也不要脸,你也不要脸,难道他会讲你么? 9.不要好奇,拒绝故事。什么洗手之类的东西,一概听都不听直接跑掉,他拿你也没办法。硬要追你,还不如省点时间搞下一个。 10.拒绝威胁性的负面信息。中国人的传统是说话挑好听的说,因此他一些负面信息出来的时候,你可以告诉他,行了,我明白你意思了,你说点别的吧。他继续说,你马上翻脸骂人,有TM你这么说话的么,我都说明白你的意思了,你要寻我晦气还是怎么。反正只要不开打,他拿你没任何办法,你也可以借坡下驴找个借口脱身,怎么说都是对方没理。 11.假信息钓鱼。一般来说sales都有工作基础,即对方的某些真实信息。从口音判断家乡,从穿着判断收入,等等。很少有sales会假定客户是在说假话的,因为太麻烦太累了。因此,你可以放出一些错误的诱导信息。例如编造家乡,我外婆是宁波人,所以我可以说,阿,我老家宁波的。到时候他说他老家也宁波的,不好意思,那是我外婆老家,我爸爸老家江苏沙洲。再跟?我老家北京,我外公老家湖州。到了湖州都没听出来,这sales也做到头了。碰到这种客户,sales也知道对方在防他一手,往往不会太过明目张胆的玩什么技巧,只会设法在细节上阴你几下。

每个程序员都是铁蹄下的尘埃

Mar 6, 2012 - 1 minute read - Comments

这个标题很文艺,我知道。实际上我想说的问题是,未来的计算机会是什么样子。在讲正题前,我们先得说说一个我相当成功也是相当失败的项目。 在很久很久以前——好吧,其实大概就是八九年前——我还在上大学,学习机械工程。当时我对电脑很感兴趣,所以父母给我装了一台电脑。这台电脑有512M内存,PIII800MHZ的CPU,120G硬盘,是当时比较新的配置,相当好。实际上,我是用考入大学时的配置升级来的,而且花了不小的一笔钱。当时我迷上了看动漫,交大有一套系统叫做comic,用过的人都有印象吧?这套系统开始是为了动漫而设计的,上面保存了相当多的动漫,而且有管理员定期更新。后来上面更是放上了其他的影像资料,做了视频点播系统,并且为全校师生服务。交大的网络滥用警告(例如国际流量超标)并不直接张贴在校务栏上,那样没多少人能看到。这些警告张贴在comic上,并且会ban掉你对comic服务器的访问。我们哪天看不了comic了,就会去看看上面是否有警告,然后去网络中心处理掉。 好吧,扯远了。在毕业的年代,我担心自己将来不能访问comic了,所以打算带走一批我觉得有价值的数据。我毕业时新增了一块硬盘,组成了双硬盘系统,但是没有组成磁盘阵列(Raid或者动态磁盘[1])。除去系统中的80G左右的程序和数据使用空间,我还可以使用300G左右的空间。但是comic上我喜欢的数据远远超过了1T。为了解决这个问题,我就设计了volcpy系统。这个系统是这样设计的,将硬盘上的数据保存在光盘上,而将他的元数据——包括文件名,大小,光盘卷标等——留在磁盘上。这样我可以以1M的空间存储上T的数据。当时250G的磁盘大约700元,平均2.8元/G。而光盘4.3G大约1元,合0.23元/G,大约相差10倍。动漫数据是不会经常更新的,事实上应当是几乎不更新。volcpy系统负责将光盘上的文件在硬盘上生成描述文件,在将来需要的时候也可以进行数据还原。 这个设计还是挺成功的,时至今日这个系统还在工作。我手头有接近2T的光盘,也不可能不使用这个系统。不过这个系统设计的时候,我还没接触linux,因此系统在设计上有一点缺陷——他的内部结构直接照抄了windows的卷描述和文件描述数据结构[2],这对于windows下的存储很方便。要拼装存储数据,我只需要memcpy[3]就可以了。但是这也导致linux下想读取这个数据就必须进行解析,然后对照windows文档(电脑诸神阿),将内容解析和转换。如果是今天,也许我会使用基于文本的格式,例如json,yaml,或者xml。文件大小会膨胀2-4倍,但是也只有2-4M而已。 但是我最近正在试图将数据拷贝回硬盘,并且废弃这个系统。为什么?我们再来看看刚刚计算的账单。目前光盘还在1元左右——除非你只打算保存几天的数据,否则廉价光盘的损坏率太高了。但是硬盘的价格却下降到了2T600元,合0.3元/G。有0.3元/G的可变数据存储,谁还会想要0.23元/G的光盘呢?更不提每次使用都需要启动volcpy,插入光盘,然后以7M/s的速度读取。硬盘的速度从50M/s提升到了接近100M/s,大约是光盘速度的10倍,而且还不用找到底是哪张光盘。 可写光盘存储已经死了,除非大容量固定数据的短期分发,例如软件发行,或者盗版电影,否则没人会用光盘。我在拷贝东西给别人的时候,都使用U盘——拿回来重新格式化过就不必担心中毒(windows用户不要学,没用的)。8G的usb存储只要80元,还可以重复使用。U盘还遇到了更加强劲的对手——云存储。1G网络空间基本不要钱。以现在我的带宽,我需要3小时填满,9分钟下载。主要麻烦还在于3小时缓慢的上传速度。如果上传和下载对称的话,我也没道理会使用8G80的U盘,而且花费不少时间去拿给别人。我只需要将1G数据(大概8部动漫),花费10分钟多点上传到我的云端存储,然后把地址和密码(如果需要保密的话)传给对方,让对方再用10分钟下载。我甚至不需要自己保存数据,只需要问云存储机构购买40G的空间和一定数额的带宽(这个应当比自己的硬盘便宜),然后直接使用就好,就像一块只有2.5M/s工作速度的本地磁盘一样。我可以在家里和公司使用一样的存储,把数据共享给别人,在不开启电脑的情况下下载。这简直是价廉物美的无敌方案。 但是这也是为什么我痛恨低上传网络的原因。 OK,我们说回来,未来的电脑是什么样子。本质上说,上面一个题外话(而且是相当长的题外话)正是说明这个问题的关键——软件技术受制于硬件体系的发展,在高速时代使用低速技术是不可能的。我们现在不会满足于使用光盘的廉价存储系统,也不会满足于只能传输文字的聊天系统。同样,当硬件快速发展的时候,我们更没道理满足于快速但不可变的程序。 在我大学的时候,那台老电脑(现在是老电脑了,当时可是新鲜货咧)是相当强劲的编译机,我也是个不错的程序员。经常有同学过来问一些程序问题。我一般会听一下大致问题,看看是否需要开机。如果需要,我坐下,打开vs6[4](那还是盗版,不过当时我也是学生)和合适的项目,然后拉过一把椅子让同学坐下,然后扯一些题外话,讨论一下问题。大概15-20s后,vs6那个难看的界面打开了,插件也初始化完毕,lazy eval和swap[5]也完成了,我可以很自由的操作电脑了,才会和他说。不好意思久等了。一般人都会说,没关系,你这个相当快。我觉得他们不是在恭维。 今天,我已经不用vs了,不过很偶尔还是会用到。vs已经从6升级到了2008,更复杂,界面也更漂亮了,没有什么可比性。但是我们做一个不伤脑筋的计算。目前我的电脑是3.0GHz4核,8G内存,1T硬盘的货色。CPU的线性速度增长了4倍不到,速度已经不能更快了。但是相应的,核心多了4倍,所以计算能力大概增长了16倍。内存大了16倍,硬盘大了4倍,硬盘速度快了一倍。单从集成电路的角度说,这个很符合摩尔定律。不过四个摩尔周期花费了不止6年,而是9年。也许这和设备价格下降了不止一倍有一定关系。实际上今天的瓶颈已经更进一步的向磁盘转移了。如果硬盘速度也增加了4倍或者4倍以上,我大概猜测,vs6的打开速度也许只需要1-2s,编译速度也至少应当增加了10倍。 这种速度下,我当年做了很长时间的一些修改,使得计算速度可以增加30%的努力,顿时变得黯然失色。固然,这些修改今天依然有效,1-2s的时间会加速0.3s。但是这0.3s绝对不是我如此长久努力所期待的结果。如果这个事情重演,我们在10年后,反观今天一些能够让速度加速1倍的决定,会觉得无比的愚蠢。当时为什么我不决定使用一种简单的方法呢?虽然响应时间从0.3s变成了0.6s,但是易变性很好,对未来的兼容也很好,谁在乎0.3s呢? 原因在于,你不知道什么时候会发生什么事情。我刚刚说了,我们今天的瓶颈在于硬盘吞吐。那么你怎么知道什么时候这个问题会有突破性的新技术出现呢?也许是明天,也许是10年后。难道你先去做别的,10年后再继续你的程序员生涯?我们必须基于我们当前的硬件假定编程,然后再把这个假定放在时间面前评判。而这个假定当出现新的硬件技术体系的时候,就会变得无比愚蠢。 如果要我预期将来的计算机系统,我首先就会猜测他无比的快,而且小巧省电。足够快,代表我们不需要把code载入内存中再运行,而是可以直接从外存(或者外存缓存)中直接运行代码。或者直接从网络(或者网络缓存,下同)中直接运行。足够小巧省电,代表我们可以带着计算机到处走,就像今天我们带着手机一样。然后在工作地点,或者其他地方,把机器接入一个输入输出设备上。所以?我估计好多人已经在泪流满面了,是不是呢?做磁盘检测和恢复的孩子们?当然,不是说这个行业会消失。但是他会变成一个相当小众的行业。小众到如同TBBT的笑话一样——25个人已经是一个嘉年华了。专家会通吃所有人,而普通程序员则根本进不去。然后——Bang,硬件又升级了,专家瞬间变成了转家。 每个程序员,或多或少,都生存在硬件升级这只巨兽脚下。你一不小心猜错了他会抬起左脚还是右脚,就会直接化为尘埃。如果猜对了,没事,你只是比别人多生存了一会而已。 1.两者都是将多块硬盘逻辑上变成一块硬盘的方案。 2.描述结构指属性存储格式和顺序,例如卷描述结构就是光盘的大小,卷标等等数据和他们的顺序。 3.指直接在内存中复制数据,不做任何其他操作。 4.visual stdio,Microsoft公司上世纪出品的编程工具,一般用于C/C++语言。 5.lazy eval指程序在加载一段时间后才会执行的一些工作。把这些工作分开有助于加快程序的启动速度,但是在操作时会感觉到速度变慢。swap也有类似效果。

电池阿电池

Mar 5, 2012 - 1 minute read - Comments

三个月之内,连续两次碰到电池问题。一个是p81hd的充电口损坏,送修两个月没法用。拿回来后,发现因为无电时间过长,电池受损,大概只有2.5小时的电量(原来至少4小时)。另一个是hpmini 1017TU已经损坏的电池,居然鼓起了一个包!!!一个包在电池中央,吓得我顿时就拆下电池,放的远远的,以免爆炸。 贝壳自认还是比较爱护电池的,没有频繁冲放,没有过充过放,基本都是10%-90%区间放电。但是电池还是连续出问题,只能说目前的锂电池性能还远远不过关。 现在已经预定了一个新的hpmini电池,但是p81hd的电池就不知道该怎么处理。而报废的锂电池也不敢乱扔,不知道有没有什么地方可以处理旧电池的。

关于酒精带上飞机

Feb 27, 2012 - 1 minute read - Comments

刚刚看空中浩劫,有个哥们,是飞行员,空难调查专家。去度假的时候摔在了关岛。等他好了,就开始鼓吹飞机的座椅应该去掉个横杠,而且酒精不能随身携带。 因为飞机出事的时候,氧气泄露,都在往天花板跑。而当时关岛去的时候,很多人带了很多免税酒。这些酒在摔飞机的时候挥发的酒精和氧气结合,被点燃,然后引发了大火。所以这哥们说,酒精不能放入天花板的行李舱里面。 这绝对是从血里面学到的东西,想带酒的不妨考虑一下。 至于为啥不让带液体,则是另一个哥们。这兄弟是纽约摩天大楼爆炸案的主角,在菲律宾飞往日本的飞机上,带上去了一个炸弹做测试(测试。。。)。炸弹使用液态材料,用一个电子表做触发,两个电池做外部能源。这哥们放好炸弹自己跑了。飞机飞到一半的时候,把一个小日本直接炸了个暴菊而亡,飞机迫降那霸。如果不是这哥们对飞机的了解不深,查到的资料是同型号飞机的(型号差一点害死人阿)。这颗炸弹就会直接炸穿主油箱,然后引燃燃油,再炸掉整个飞机。幸好,他放炸弹的地方刚刚好差了一两排。 想带液体的不妨考虑一下。 至于为啥锂电池不能带上行李舱——估计是太多国产山寨手机炸的老外暴菊而亡,他们不敢让你离开这种危险品吧。

从黑客到极客——hacker文化的演化

Feb 21, 2012 - 1 minute read - Comments

说到黑客文化,就不能不提到技术。黑客是一个复杂的文化,不同的人,不同的时代有不同的解读。黑客的一端是技术,另一端是文化。如同武侠一般,一端是武,一端是俠。金大侠说过,武好写,侠难写。同样,要讲述技术,虽然艰涩,但总是可以表达的,难以表达的是黑客文化中的种种现象。对于没有背景的人来说,这些文化现象并不比技术易懂到哪里去。下面我们首先统一解说一些名词概念,以便下面的阐述。 名词解说 hacker 从原生意义上说,是喜爱计算机技术而充满叛逆的年轻人。藐视传统,不按照常规方法使用软件和服务,而是通过自己的洞察力,非法(或在后来被定义为非法)的使用。例如音频拨号时代,某位(绰号Captain Crunch)发现通过发出特定音频可以绕过收费机制,于是就公开了这个机制。hacker的原生目的不是破坏,而是表达自己的叛逆,炫耀自己的技术。而目前在主流媒体和民众中的形象是恶意的系统破坏者,会给你带来麻烦,并且以技术手段获得不法收入。在文中注意区别hacker的前后两种不同含义。 cracker 没有歧义,从一开始,就指软件的破坏者,但是不一定以此牟取私利。cracker和hacker的界限很模糊。 geek 原意是怪人,善于研究不善于交往的怪人,和书呆子(nerd)类似。但是近些年随着网络文化兴起,逐步变成褒义词,指喜爱技术(不特指计算机技术),充满DIY精神的人。 black hat 黑帽子,hacker中为了达成私利性目的而非法使用系统的人。通常常见的情况有,勒索(例如不付钱就会破坏系统和数据),盗用账户,获得非法虚拟货币等。 white hat 白帽子,和黑帽子相对,为了修补系统问题而研究系统的人。白帽子不代表免费,相反,白帽子通常催生了某类安全产业,不少白帽子是挂靠在安全公司名下,甚至自己经营安全公司。他们致力于寻找大型系统中的漏洞,并且向企业汇报漏洞,换取收入。白帽子可以看作是企业对hacker妥协的一次结果,与其让这些年轻人精力充沛的寻找漏洞,然后不知道发生什么事情。不如雇用他们为自己寻找漏洞,减轻自己的风险。 grey hat 灰帽子介于白帽和黑帽之间,你可以理解为,他们有的时候当白帽,有的时候当黑帽。也可以理解为,如果我卖你漏洞你不要,那我就卖给要抢你的人。 script kids 脚本小子。指一些并没有技术能力的人,利用他人已经完成的脚本进行攻击行为。这显然有悖于传统黑客伦理,充满乐趣的发现问题是第一位的,至于漏洞只是发现问题的结果。通常而言,普通人碰到的90%以上被认为是hacker的人都是script kids。 红客红客是一批非官方的,使用技术“维护国家和民族尊严”的人。严格来说,有不少“红客”是原生的hacker,只是激进的表达爱国主义和民族主义,这批人可以视为黑客中的一个特殊群体。然而不断有技术不足的人为了“维护中国尊严”而加入,导致一些自称红客的人实际上只能算是利用技术的script kids。由于试图以技术为手段表达政治意图的人数量庞大的关系,因此红客在一词在使用的时候,script kids的比例异常的高。在不少文章中经常混谈两者,阅读的时候应当注意区别。 飞天面条教 具体查wiki“飞天面条怪物”一词。这个是用于反对“智能设计论”的。即某些宗教主张,人类是由一个超自然的智能所设计。因此Bobby Henderson同样创造出一个符合智能设计论的神进行反讽。列入本文是因为很多geek本着找乐子的心情加入了相关恶搞。关于这个问题请仔细阅读飞天面条怪物的相关页面并去那里讨论,本文不掰扯宗教问题。 海盗党 具体wiki“海盗党”“盗版党”。瑞典的一大政党,主张现有的版权制度过度的限制了知识的发放,阻碍了人类的进步。主张减少版权限制,增进知识交流,注重隐私保护。 DDOS 分布式拒绝服务攻击。使用大量的肉鸡(傀儡)来访问某个服务,导致服务器过载,从而无法继续服务。本质上说DDOS很难防御,因为他实际上就是一种过载。 黑客文化历史 我们首先阐述的是黑客文化的背景。在大部分的文章里面,会提到黑客起源于美国的朋克文化。实际上基本如此,但是黑客属于朋克文化在校园中的一个变种,更专注于技术。这个变种是如此的具有生命力,以至于今天仍在极大的影响世界。关于这点,更进一步可以阅读(http://man.lupaworld.com/content/develop/joyfire/project/7.html),其中《黑客文化简史》这部分。说一点题外话,链接的这篇文档收录了ESR的不少名文,可以看作是传统黑客文化的讨论和总结,是相当不错的文档。 时代在变化,背景在变化,黑客在大众中的形象也在变化。黑客首次为大众所知,是在1988年,莫里斯蠕虫造成大量主机宕机。此次事件经过媒体大规模渲染,很大的影响了黑客文化在大众中的形象。实际上,传统的黑客文化很不稳定,极易被误解。因为传统的黑客文化信条之一是表达叛逆,而表达叛逆往往跟随着破坏现状,这点非常容易被滥用。很多人无视了注重技术,充满趣味的工作等其他信条,而只专注于挑战权威,从而成为臭名昭著的破坏者。而另一些人则在不违背信条的情况下,试图利用自己的技术赚钱。这催生了黑客产业链(当然,这不全是坏事)。而黑客产业链肯定会为用户和企业带来额外的麻烦。 另外提一句,在亚洲地区,黑客第一次为大众所知估计是CIH病毒。这也是第一个大规模破坏硬件的病毒。 由于种种因素,黑客在大众中的形象逐步变为了破坏者,找麻烦的人,以技术作恶者。实际上,在hacker的原始含义中是没有这个意义的。 从黑客到极客 在现代,hacker这个词和cracker这个词实际上已经很类似了。如果说区别的话,cracker更偏向于破坏程序本身,而hacker则引入了以技术作恶的意味。但是hacker的精神不死,他以其他词的形态出现。现代替代hacker出现的词是geek,这个词类似于原来的hacker,但又有所不同。我们首先回顾一下hacker的信条。 1.充满乐趣的工作,为了乐趣而工作。 2.挑战权威,自由万岁。 3.专注技术。 4.一个问题不应该被解决两次,无聊的工作是罪恶。 我找不到一个权威的geek信条,但是我个人总结如下: 1.关注原理而不关注结果。 2.为了自己的乐趣而非利益工作。 3.乐于挑战其他人无法完成的事情,并视为一种成就。 4.不限于coding,也包括以各种有技术含量的手段达成炫耀技术的目的。 对比两者,我们可以看出差别。hacker主要注重的是计算机技术,而geek更偏向于指代各种技术。hacker叛逆,挑战权威,自由万岁,而geek虽然喜欢自由,但是并没有强调挑战权威。两者都强调乐趣,强调技术。这些区别主要是由于各种时代的变化所致的。相比起来,geek文化更类似于hacker文化的一个普及和切割。去除了挑战权威的味道,泛化了技术,使得更多人有可能成为geek。 我们举一个当代的传统hacker的例子,Arron Swartz试图下载JSTOR的论文并散布,这是典型的一个hacker行为——下载并散布论文并不是出于为了获得私利,而是为了表达自己的观点——人类获得知识的权力不应当被阻碍。从法律上说,是的,这是违法行为。但是这个事情反过来,让我们关注了这么一个事实——JSTOR的收费论文库是否还有必要存在?或者说,一个更本质的问题。以校园墙为界限阻止知识获取,并以这种行为牟利是否合理。当然,思考的结果可能是合理的,也可能不合理。hacker并不在乎违法,实际上,很多hacker就是在违反法律的同时走向伟大。要找类似例子,可以wiki“五角大楼文件泄密案”,当然,主角不是黑客。 而geek就没有这么叛逆,以当代的典型geek形象——TBBT中那一帮书呆子而言,基本就看不到多少反叛气息。Sheldon的却进过监狱,可是理由可不是因为挑战现有制度,而是在法庭上找抽。很多geek有自己的政治主张,会讨厌某个政党,或者认同hacker文化中的思想。但是并不会像hacker们那样,无视法律,使用技术手段直接表达。 当代其他和黑客有关 另外有一些很特殊的例子,是黑客文化极端介入政治,导致产生的各种政治和宗教流派。例如飞天面条教,就我所知有不少geek程序员加入了恶搞行为,甚至参与了网页制作或线下活动。另外一个不得不提的和黑客文化有关的政治事务则是海盗党。海盗党的主张和hacker挑战权威,自由万岁的想法完全一致。不同的是,hacker(此处取褒义)以技术手段,破解他们认为非法的数据。而海盗党则以政治运动和政党体系为手段,推进政治改革。 介入经济的黑客则演变成了很有名的黑客经济链条。大致上说,这个链条呈金字塔结构。最上层的是极少数黑帽子,负责寻找系统的“硬”漏洞。其下则是为数不多的程序员,通过各种手段购买漏洞,非法的内部文件,实现各种破坏性工具。这些工具被各个地区的老板购买,分发到大量的普通技术员(甚至不需要技术)手中,利用技术来作恶。例如种下大量木马,利用获得的肉鸡进行DDOS,收费破坏敌对系统的运行。或者是诱骗用户点击木马,收集用户游戏账户或银行/支付宝账户。 链条的意义在于,链条上每向后推进一个环节,牵涉到的人和财富会以倍数增长。一个价值数十万的漏洞从黑帽子手中流出,到了程序员手里成为工具时,可能价值已经上百万。而这个工具最终被分发到技术员手中,用于诈骗的财富可能高达上千万。这个链条,使得上游精通技术但没有足够时间的专家,和下游渴望获得金钱但是没有技术的普通人相结合,使得少数专家可以指导大量普通人进行犯罪活动。因此才出现了灰帽子和白帽子两个行业,毕竟直接收购漏洞相比损失来说小的多。 当技术为政治所用,产生的则是GFW,JFCCNW等。关于这个不进一步阐述。 在中国,我如何成为一名geek 本文不会谈论如何成为一名hacker,毕竟后者在大众眼中的形象不佳,同时ESR也有一篇《如何成为一名黑客》说的甚好,我就不拾人牙慧了。不过限于中国特殊的情况,我还是说说你如何成为一名计算机技术geek。 geek不是能够培养的,而是自发产生的,geek是在苦逼的道路上蛋疼且快乐着。 要成为geek,一个首要的条件就是能够享受技术的乐趣,而不是被吓倒。在面对复杂的文档(对于国人而言,尤其是英文文档)时,仔细的阅读,并且找到系统工作的原理。无论是hacker还是geek,对于他们感兴趣的东西,仅仅知道如何使用是不够的。通常而言,大部分的geek都有自己动手拆解修改一些系统的经历。这个行为有一个术语——hack。例如,我们可能会希望http在转发请求的时候增加一些头部帮助识别信息,而原生的http服务器没有这个内容。怎么办呢?下载一份源码,然后找到相关部分,修改并重新编译一遍,这是最简单的hack行为。如果你不知道怎么修改,可以阅读文档。然而你完全没有“我可以修改http服务器”这个想法时,是注定无法培养成为geek的。也就是说,成为geek的必要条件是强烈的求知欲和与之相匹配的动手能力。 有了求知欲,我不相信你还可以若无其事的使用windows系统。你有没有希望了解系统开机时发生了什么事情?希望知道系统是如何工作的?如果有,你必定会想要下载一份linux的源码,并且进行编译安装。当然,对于初学者而言,我建议你先从ubuntu开始入手。 ubuntu的安装门槛相对比较低,但是对于初学者,还是会有很大的门槛。你可以求助于当地lug,目前中国比较大的lug有,bjlug,shlug,szlug,gzlug,hzlug。对应于北京,上海,深圳,广州,杭州。以上几个地方的同学,可以直接搜索lug,然后寻找同好求助。其他地方的只能更多的求助于线上资源。 有了ubuntu的使用经验,也许你的脑子里会跳出更多复杂的念头。例如有一台多余的旧电脑,是否可以配一块硬盘,作为nas来服务整个家里。是否可以在这个nas上加载其他系统,完成自己的需求,例如在上面开一个网页服务器。这个网页服务器是否可以监控家中的摄像头等设备,等等。 自由的思考,进而发现现状中的不足,然后快乐的折腾改进,这是geek的根本。当然,这会花费大量的时间,甚至金钱。你可能会没有时间交往男女朋友,或者要自费购买价值不算低的高阶路由器。这就是为什么我说,geek是在苦逼的道路上蛋疼且快乐着。 而进阶则可以安装arch或者gentoo。最后,你可以试试lfs。当然,所谓试试lfs,绝对不是复制粘贴,而是通过自己的了解,改变lfs适用的过程。例如你可以通过脚本和make来简化复制粘贴过程,简化测试过程。或者通过自己的了解在虚拟机上跑起lfs来。如果这些都没问题了,那么你可以看看《如何编写操作系统》和《操作系统:设计和实现》两本书。这些都没问题后,基本就可以通晓系统的方方面面,然后用mac或者用回windows。 是的,这不奇怪,geek中有不少windows用户,也有不少macos用户。一旦了解了系统的方方面面,没道理还保留一个实验用的系统在自己日常工作的机器上。 其次,你需要学习至少三种语言,一种是汇编,一种是C,一种是lisp。如果你需要经常使用,也许还要学习一种快速开发语言,例如ruby或者python。作为一个geek,没有掌握一种以上语言是不可能的。 为什么要学习语言,而且学习那么多种?因为语言是人类操纵机器的大门,不同的语言会改变你对机器的认识。汇编语言教给你的是机器的硬件工作原理,包括中断原理,输入输出控制。C语言教给你的是内核工作机制,如何结合硬件和软件进行工作。而lisp教给你的则是数学。 当然,作为入门,你可以先从bash开始,这种语言相当的简洁而且对人友好,可以很好的粘合系统中现有的程序开始工作。但是在进阶的时候会变得复杂,所以一般很少作为一门主力语言使用。

有一种错误,叫做太常见了以至于视而不见

Feb 20, 2012 - 1 minute read - Comments

最近整XEN,出了一个奇怪的错误。 ERROR (SrvDaemon:355) Exception starting xend((22, 'Invalid argument')) Traceback (most recent call last): File "/usr/lib/xen-4.0/lib/python/xen/xend/server/SrvDaemon.py", line 335, in run xinfo = xc.xeninfo() Error: (22, 'Invalid argument') 根据网络上的内容,首先排除没有xen模块——有了,然后是/proc/xen目录是否mount——有了,然后是/sys/hypervisor/下面的一堆属性——有了,然后是版本——不对。xen-utils-4.1是4.1.2版本,而xen-tools是4.2版本。不过xen-utils并不依赖xen-tools,没有后者应当也可以运行这些玩意。hypervisor和xen-utils的版本是一致的。那问题是什么? 出错的文件是/usr/lib/xen-4.1/lib/python/xen/lowlevel/xc.so里面发生的异常,下载xen的源码检查,这个函数主要是检查属性。属性检查会出什么错? 正在一头雾水的时候,突然想起一个问题。我安装的是xen-hypervisor-4.1-amd64,因为kernel是linux-image-3.1.0-1-amd64。然而,我这个系统有一个非常大的特殊——在64位CPU上运行的32位系统。因此,实际上xen-utils是32位的。行了行了,下面的事情用膝盖都能想到。 叹气,这世界上,真的有种错误,叫做太常见了以至于视而不见。不要认为自己不会犯。

最新一期的freenas测试报告

Feb 17, 2012 - 1 minute read - Comments

去年我写过一篇freenas和解决方案,今年我又测试了一下,发现这玩意更加完善了,更企业化了,也更不适合玩玩了。今天写一下大概的步骤,供需要的参考一下。 freenas提供以下几种服务,afp,活动目录(AD),CIFS(windows共享),动态DNS(绑定域名到动态IP),FTP,LDAP,NFS,Rsync,SNMP,Ssh,tftp,iSCSI。基本涵盖了非IT企业常见需要的所有服务(除了邮件服务)。目前镜像的大版本已经升级到8,所以我下到的是8.0.3,大概100M多点。 新版和旧版最大的区别在于,新版本去掉了bt下载,upnp,iTunes和http这四个家庭常用服务(实话说,http还是企业常用的)。加入了远程同步,snapshot,10G网卡等功能。内存要求也更加高,从7的256M-512M,变成了4-6G。对比起来更加企业化和专业化,但是更不适合随便玩玩。 首先,你需要准备合适的硬件。一台老式的机器,或者atom平台的mini-itx板子都是很不错的。即使是新的atom板子,便宜点的400也能弄到手,加上一条2G的内存,除掉硬盘大概也就1000。故障毕竟比较少,而且省电。存储需要一块硬盘和一个U盘,注意,两者不是或的关系。因为FreeNAS安装到某个物理设备后,会强制使用设备的全部空间,因此这个设备无法再用来存储数据。整个FreeNAS才500M,4GU盘绰绰有余,读取速度也不慢。除了升级和改配置外,没有什么太大写入,很节约。 然后,你需要去官网下载最新的iso镜像,用这个iso启动系统(注意,此时最好不要接上数据硬盘,只挂U盘)。当然,要省事的可以在windows下用vmware来装,不过对非IT专业人士来说,有点困难。启动后,在出现的选择中选择1,安装到硬盘上。在出现的安装目标选项中选择U盘(如果只挂U盘,这里就一个选项),然后等。最多两分钟,安装就完成了,选3重启系统。 去掉光盘(甚至可以去掉光驱),使用U盘和数据硬盘启动系统,并且将系统设定为从U盘启动(这点很重要,因为硬盘一般比较优先,但是硬盘上没有系统)。进去后什么都不干,会自动识别你的网卡,并且dhcp到一个ip。你可以在系统启动完成后使用选项1来重新配置ip,或者在dhcp上干脆给这个mac指定一个ip。对于使用路由器的小型公司来说,这点并不困难。 用浏览器访问这个ip,你可以看到freenas的控制界面。作为中国用户,先去setting里面改为中文,保存。然后关闭浏览器页面,重新打开(这点很重要),后面的设定都是中文了。然后,在存储,卷下面,新建一个卷。你现在可以把数据硬盘挂起来用了。 然后,再去服务里面把你需要的服务全部启动起来,并且配置合适的用户。这些就按照自己的高兴配了,界面都是中文的,应该不用我教吧。 如果无法启动服务,重启再试。你也可以参考这篇(http://www.c-dd.org/post/214/)。写的很详细,不过他安装的版本稍旧,是7。

简易debian livecd打造手册

Feb 16, 2012 - 2 minute read - Comments

废话不说,上干货。先装一下syslinux,genisoimage,kvm,debootstrap,squashfs-tools。 $ mkdir debcd $ cd debcd $ mkdir isoroot $ cp/usr/lib/syslinux/isolinux.bin isoroot/ $cat > isoroot/isolinux.cfg << "EOF" prompt 0 default linux label linux kernel vmlinuz append initrd=initrd.img EOF $ cp /boot/vmlinuz-3.2.0-1-amd64 isoroot/vmlinuz 完成上述步骤后,你就准备好了一个基础的iso镜像文件系统,并有了一个基础的引导模块和内核。现在,我们尝试把这玩意烧到iso上,并且测试一下。 $genisoimage -o output.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table isoroot/ $ sudo kvm -cdrom output.iso -m 512 如果没法装kvm,换成qemu。屏幕会停在内核引导过程中——因为你没有initrd.img,所以在isolinux.cfg中指定的initrd就不正确。下面我们会设法弄一个initrd.img。 $ cp -a /etc/initramfs-tools/ initramfs $ mkinitramfs -d initramfs -o isoroot/initrd.img $genisoimage -o output.iso -b isolinux.

Progress Linux

Feb 13, 2012 - 3 minute read - Comments

别紧张,我不是要progressLinux,这是一种新的distribution(算是吧)。http://progress-linux.org,是一个基于Debian的dist。 为什么要有这个dist?其实严格意义上说,这不是一个完整的dist。不同于Ubuntu,这个dist可以完全的寄生在Debianstable(squeeze)上面。你不需要真的去官网上下载一个ISO,然后安装。只需要安装Debianstable,然后加入 Progress-Linux的source就好了。如果你胆敢在Ubuntu上这么干,只会把系统弄的一团糟。当然,直接下载Progress-Linux的安装ISO也是可以的,这个ISO基于Debian Live,作者(Daniel Baumann)本人也是DD,是Debian Live的主要作者之一。 为什么要这样?因为Debian是以严谨到变态而闻名的系统。例如,mdadm这个包有一个很小的不便。每个月当检查RAID的时候,会发一封mail。如果你有一堆电脑需要管理,这件事情就非常烦人了。要修正这个问题,只需要在其中一个脚本中加入参数-q。但是Debian修这个bug修了9个月。因为具体的包维护者并不是很关心这个事情(低优先级),而Release Term需要确保这个bug必须先在Sid中修复,确认没事了(基本是没问题的,只加一个-q而已),再修复testing的,最后修复stable的。于是,你的邮箱要被一堆垃圾持续淹没9个月。 Progress-Linux就快多了。 但是为什么要做成dist呢? Debian的模式设计,是方便fork,而严格控制release的。Debian的版本库更新要很多条件,例如符合DSFG(也就意味着符合一系列的开源授权协议),更新的时候首先作用于SID,Release Term说了算等等。DD也没有权利要求更新Debian stable中的包,他必须申请Release Term批准。想想也能明白,如果真的每个DD都能直接更新包,那才天下大乱了。我们不能绕过Release Term去解决问题,也不想让这些问题留着。 那么怎么办?只有自己做一个仓库。Debian鼓励这么做(有很多dist就是这么做的),但是这时就不能用Debian的名字,因此作者才做了一个新的dist。DSFG这时变成了一个优势,Debian的所有包,都满足DSFG的第8条,“不仅仅对Debian授权”,可以直接应用。 因此,其实Progress-Linux是一个基于Debian的改进。更快的bug fix,更多的backport,更少考虑版权问题。当然,限于作者关心的包。另一个激动人心的特点是, Progress-Linux的包和backport包不会碰撞,因此使得stable可以简单的安装很多新的包。如果你喜欢,可以在安装系统后加入他的source,作为系统的改进。但是不要指望有什么实质性变化,都是一些细节改进而已。如果你希望知道几个例子,可以看这个页面(http://www.progress-linux.org/project/about/)。 也许你希望使用一个中国区的mirror来做这个事情(这样更快,也省去中间的一些其他麻烦),http://mirrors.ustc.edu.cn是debian中国区域的主镜像(即http://ftp.cn.debian.org),这个节点已经完成Progress-Linux的镜像。 Relax, I don’t mean to progress Linux, it’s a new distribution (kind of). http://progress-linux.org, a new dist based on Debian. Why people made this dist? Technically, it is no a fully dist. Unlike Ubuntu, this dist can totally on the top of Debian stable(squeeze). You don’t need to download a ISO from website and install.

外包和派遣的一些问题和顾虑

Feb 10, 2012 - 1 minute read - Comments

很多公司老总很头痛的一个问题是外包。相比自己生产程序,外包有一定的优势,也有劣势。 优势 1.外包便宜,从实现角度,比自己养程序员便宜很多。毕竟自己养程序员还要交三金所得税,外包程序员需要自己管理自己的三金所得税——通常都不会交。所以比自己养的要便宜的多。 2.在安全性上,外包并不一定比自己养程序员差。毕竟自己养程序员也没法杜绝跳槽,也没法杜绝恶意的underhand代码。 劣势 1.不稳定,极度不稳定。能不能完成并不像自己养的程序员那样有一个项目经理在跟踪,搞不好就是到期了,基本什么都没有。虽然可以不付钱,但是被耽误的时间更麻烦。 2.逼良为娼。如果你的需求类似一个论坛,他们就会诱使你做一个论坛。论坛可以用开源的项目经过定制和修改来完成,看起来工程浩大牛逼XX,实际上没花多少时间,实现小开销大收入的目的。如果你真的没被说动,他们会先答应你的一切需求,等期限快到了再告诉你,论坛做起来很快的,改一点需求吧。如果再说不动,参考问题1。 3.良莠不齐。多年筛选下来,很多优秀的,可靠的外包团队真的很厉害。但是混事的团队混事能力也很厉害,很多问题说的头头是道,价钱也比正儿八经做的便宜不少。你觉得便宜的就是混子?错,有时混事的团队比正经外包公司还贵。万一一个没看准,那就又参考问题2了。 4.外包没法解决资金来源。很多老板对这个问题只会哈哈一笑,不过有的时候这确实是个问题。不是每个外包团队都能提供发票的,很多团队没有挂靠公司,或者挂靠公司但是发票加税点。这时候你开出来的外包费用就无法按照服务费计算,只能当作其他费用处理。要么你自己找发票填上,要么就扣税。 我看下来,愿意做外包的老板,大概不足一成,而且大多都是逼上梁山没办法了(要么人力来不及按时完成了,要么没人会做了),才外包一部分。 相比起来,人力资源派遣是个新行当。这行当和外包差不多,只是他们不分离做,他们找人去你公司做。 优势 1.你的项目经理可以盯着他们了。 2.派遣多数都是从公司来的,大半有发票。 3.你让干吗就干吗,不行滚蛋。 劣势 1.可没比自己养程序员便宜,搞不好还贵。 所以很多公司对人力派遣也不是很喜欢。不过我说句实话,要是需要一个特殊类型的人才,预计时间不长,或者想试用一下,不妨考虑考虑。 目前很多外包也参考了HR派遣的做法,他们的做法是这样的。谈项目。达成协议。派团队去你的公司,该干吗干吗。验收。撤回团队。 你的项目经理可以随时验证他们的工作,因此也不会出现逼良为娼的情况。 但是无论如何,请自己找一个项目经理!不要让你的程序员来做项目经理的事情,更不要指望什么都不管丢钱下去程序就会自动长出来!