现在是2016年11月22日,毕业大约5个月,外面飘着小雨,突然想起以前好像每次都喜欢在这样的场景下看着书思考人生呢。细想毕业的这几个月,感觉我的人生是不是走得太快了。
原以为,毕业以后,至少能每周都找个地方玩儿吧,周末约上三五个好友,踏踏青,赏赏水,坐坐长江的邮轮,顺便回南山看看母校的樱花。原以为,毕业以后,至少能挥金如土吧,刚签约的时候感觉自己的工资和同学比起来虽然不高,但是相比于大学每个月的生活费,那可不止三四倍呀,是不是很快就可以过上想买就买的日子了呢。原以为,毕业以后,至少能经常给家人朋友买点礼物吧,每个人生日的时候我都能当面送上一份特别的礼物,给他们来个惊喜。
但是,生活在这短短的时间里给我泼了好几大盆的冷水。
虽然每天朝九晚六,可以睡到八点半再起床,但是每天还是不够睡。即使是运气好不用加班,六点就能下班,也实在不想拖着疲惫的身体去找好朋友逛吃逛吃。看似每天工作只有7.5小时,实际上,剩下的时间都只能用于恢复精力。只想在家躺着,哪儿也不去,能够躺在舒适的床上才是我最大的希冀。周末?哪里来的周末。周末得坐长途车去看女朋友,女朋友比我更累吧,周末都得上班,所以周末必须好好陪陪她,陪伴的形式就是陪她上班。没有踏青,没有赏水,只有偶尔互相之间温柔的眼神。那是我每周长途跋涉唯一的安慰。
是谁发明的挥金如土这个词,难道不应该是挥金然后吃土吗。白领的意思就是每个月发了工资还了信用卡然后惊讶的发现,我靠,这个月工资又白领了。总有那么多花钱的地方,房租、水、电、气、长途车费、吃,基本上每个月会有1/3的钱会花在能让我活下去的这些需求上。接下来的1/3,偶尔吃个大餐,偶尔买个礼物,偶尔送个红包,基本上也花出去了,再剩下的1/3可以存下来,然后隔一两个月,心血来潮想买一个大件,然后,就没有然后了。买不起礼物,记住了每个朋友的生日,但是朋友生日的时候顶多说一声生日快乐,朋友结婚或者生孩子,有时候连“赞”都不敢点。
有位室友遇到公司裁员,丢了工作。对,就是那个我认为他是我大学见过最聪明的一位室友,居然被公司开除了,我完全不敢相信。听到这个消息的那天,我情绪很激动,想立马给他找到一份工作,但是问了好几家,基本上对工龄的要求都至少是两年。这可是一位刚毕业的本科大学生啊,哪儿来两年的工作经验呢。还好,写这篇文章的时候,他应该已经过了某个公司的的面试了,不过,那个地方,真的好偏远。
室友被离职的同一天,我另一个朋友也打电话来了,说他准备报一个培训班,从零开始学开发,问我要一些建议。这位朋友是我从小玩儿到大的,碰巧连所学的专业也相近,都跟计算机有关,不过我偏软件,他便硬件。毕业后他去了格力,结果发现里面有好多不可描述的内部危机,所以干脆直接回家乡发展,但是,同样的,也是一个工作经验连半年都没有的人,甚至他连基本的技能也差好大一截,所以不得不去报培训班。我一直觉得他比我努力好多倍,但总感觉他的运气总是不好,总是会在人生面对重大决策的时候或者人生将要迎来更加光明的时候生活给他泼一盆冷水。
更甚的,在前面的文章中有提到,我的妹妹去世了,一个二十出头的女孩子,刚当上妈妈就离开了这个原本美丽的世界。
相比于他们,或许,我算是很幸运的了。毕业以后找了一份“相对”稳定的工作。只能说相对,这两年是IT业的寒冬,谁也说不准明天会怎样,唯一知道的是如果要裁员,多半是拿新人开刀。另外,我还在重庆买了房子,走在了百分之九十几的同学前面了。贷款50万,分30年还清,利息大概30万。为什么那么急着买房子?说简单点,一是怕房价继续上涨(从去年的趋势看,基本上我要是提前一年买房,我可以少奋斗一年,这一年还不吃不喝才能补上那个差价),二是害怕突如其来的婚姻,不是不想结婚,只是还没准备好,不过,由于某些原因,我还是选择提前准备一下,我不想我的孩子一生下来,就呆在别人的房子里。最近,公司开始从PHP转Java了,动作挺大的,而我,确是一个PHP程序员,看样子我不得不去学曾经最讨厌,黑得最多的一门垃圾语言了。
我知道,当我们进入社会后,会面临各种各样的压力,各种各样的困难,各种各样的挫折。这些我真的都知道,只是,真的没想到,这一切会来得那么快,以迅雷不及掩耳之势一棒子打在刚脱离“青春”的我们头上,把我们打得晕头转向,不知所措。长夜漫漫,夜晚越来越睡不着了,想好多事,憧憬一下未来的样子,反正,就是不敢想现在,害怕发现现在的自己正在远离曾经的梦想。
《MacTalk跨越边界》书评
先有Mac还是先有钱?我不知道有多少人是因为池老师的一句话而买的苹果电脑,反正,我买苹果电脑的很大一部分原因是因为池老师的影响,说池老师是苹果亚太区总布道师不足为过。
之前看过池老师的《人生元编程》(读后感),没想到半年不到我就拜读了池老师的第二本书了。看上一本书的时候我的电脑还没满一年,看这本书时,已经换了一个电源插座了(500多,心里十分痛)。不过,让我有点小小失望的是,池老师自诩为一个作家,但是读完他的第二部作品,我发现,他的作品并不能称之为一部经典的著作。可能是我看的书越来越多了,像这集合各种网文的书籍有了一点反感,不过还好,池老师的作品并没有那么“鸡汤”性质,干货还是满满的,只是这个价钱,稍贵。
池老师看起来已经老了,这本书读起来有点像他的归山之作,看样子,他可能要把他最后的青春献给锤子了。虽然我一直不看好锤子,但是他们认真做事的态度着实让我佩服,真的找不到第三家像他们那样在自己的产品上投入那么多感情的手机厂商了。
这本书讲述了池老师在五个方面的见解:写给走在编程路上的人、文艺中年、自省、跨越、人物,写出了他这么多年经历中的各种感悟,读来让人回味无穷。原来我们确实只是普通人,原来成功的人确实做了很多我们常人做不到的事情。我也有运营者一个公众号,也有自己业余的小项目,也有很多很多的idea,但总是因为下班后的各种琐事而推迟,渐渐地被遗忘,最后变成了岁月中的一抹尘埃,随着年华被侵蚀。此书更多的是纠正了我在编程领域的一些错误的思想,甚至是最近经常在自己周围发生的。
池老师,加油,希望有一天我也能站在你那样的高度。
语录
全世界都放弃,至少还有我在聆听。——《他居然是这种人》
以最小的代价解决问题!知行合一,方可无敌于天下。——《程序员真正的价值》
我不是懂得多,我只是学得快而已。——《程序员如何选择技术方向》
年轻的时候谁能不犯错?重要的是犯错之后你做了什么。强大了,还是沉沦了。
无论犯什么错,永远不要执行:sudo rm -rf /
无论如何,最好不要犯全天下男人都会犯的错。
——《程序员犯过的错误》
只有疯狂到自以为能够改变世界的人,才能真正地改变世界。——《把时间“浪费”在美好的事物上》
老树终归会老去,朝花有一天会盛开,每个人都有自己的时代,自己的路自己走,走不动了,就是终点。——《朝花与老树》
你本布衣,只要躬耕于南阳,终能指点江山争天下。——《旅途中的思考》
无论世界多么浮躁,总会有人潜于浮华之下,在深水河中静静地打磨那些精美的鹅卵石和珍珠,追逐自己的梦想。无论在哪个时代,这样的人才是推动世界向前的力量。——《年龄的故事》
王小波用他短暂的生命给时间留下了丰厚的遗产。有人欣赏他杂文的讥诮反讽,有人享受他小说的天马行空,有人赞扬他激情浪漫,有人仰慕他特立独行。在这些表象的背后,他一生最珍贵的东西,是对自由的追求。——《我的阅读之路》
Write the code, change the world.——《专访:谈技术、成长及锤子》
不管做什么,从年轻的时候,你就要对你做的事情有深入的了解,不肤浅,不浮躁,坚持去做一件事情,同时有意识地去提升自己的能力。——《专访:谈技术、成长及锤子》
世界上优秀的人本来就是少数,认识到这一点,你会更容易理解这个世界。——《专访:谈技术、成长及锤子》
有的鸟儿注定是无法被困住的,因为它们的予以是如此的流光溢彩。——《希望可能意味着一切》
人的一辈子活满了,最多也就3万多天,我们不可能从开始就知道结局,也不可能像朝阳升起和夕阳西下那样精准地规划自己的每一天,未知才是最美好的,所以,最初的选择可能没有想象的重要,在路上,才是最重要的。——《你是牛儿我是渣》
人类所能想象到的所有美好和黑暗,都能从书里找到。——《我在大学里学到的几件事》
A reader lives a thousand lives before he dies. The man who never reads lives only one. ——《我在大学里学到的几件事》
我对生命的意义有种理论。我们可以在第一章里对读者解释生命的意义何在。这样可以吸引住他们。一旦他们被吸引住,并且付钱买了书,剩下的章节里我们就可以胡扯了。——《你需要多久才能变成一个“傻瓜”》
如果你工作时,经常在“能不能行呢”的不安感和“啊,成功了”的成就感之间往复行走,那么恭喜你,离成功已经没有几公里了。——《你需要多久才能变成一个“傻瓜”》
既然已经知道了无论怎么努力都很难提前完成,还不如踏踏实实等待截止日期的降临,具体的做法大致如此。
1.确定截止日期和最晚的开始时间。如11月30日要提交演讲稿,那最好11月25日开始动手准备。
2.25日之前不要开始真正的准备工作,踏下心来忙其他事情,但是要留出点时间来做相关的思考和阅读,有好的创意或想法,记下来。
3.不要焦虑,但是告诉自己的大脑,月底还有这么一件事情在等你,别忘了。
4.一旦进入预定的启动时间,立刻开足马力工作,截止日期带来的恐惧和焦虑会帮助你迅速进入“深度优先处理”的状态,之前的阅读、思考和想法会让你专注、果断、创意十足,也许你真的能在这个时间段提前完成既定目标。
——《如何克服焦虑——深度优先处理》
年轻的时候常常会产生一种错觉,无论看长河落日,望滚滚常见,还是在史书中阅尽人世沧桑,人事渺小,你还是感到,日子会这样一天天长长久久地过下去。——《40岁了,还有没有路走》
如果你忙的不可开交,除了提醒自己要时不时地抬头看路之外,真的没什么可抱怨的,这是好事,生活的本质就是让自己忙碌起来,然后把一件事情做成,再把另一件事情做成。真正该抱怨的是那些处于舒适区的、闲散的人们。我清楚地记得自己每一次处于恐慌和焦虑的时候,都是因为在某个领域处于舒适区太久,缺乏挑战,生活闲适造成的,每一次改变也是由此开始。——《闲适有毒》
1.基于工具和平台提供服务。企业愿意要什么软件,就用这些工具和平台做什么软件,费用按人月结算,算是实现了真正的人月神话。遇到外包项目或工具做不了的项目,直接拉黑。
2.做垂直小软件,解决某行业80%中小企业客户的80%的需求,价格低,走量。
3.为企业软件公司提供互联网和数据服务,如云存储、项目管理、信息流协作、数据服务等,在免费和收费之间兜兜转转,也有生存之道。
——《淤出来的聪明之企业软件》
纪念我那已在天堂的妹妹
此时此刻,我正在市二院里写着文字,我不知道这个医院的太平间在哪儿,但是想起了前不久我那去世了的妹妹。
妹妹与June的中文音同,不是我的亲妹妹,只是在上学的时候认识的一个好女生。她爸爸是学医的,所以她很会照顾人,人也很温柔,很善良。那时候,每天中午睡午觉,她都会主动给我一床被子给我盖好,每次我有任何健康方面的问题都会问她。我也会经常给她买糖葫芦,给她买好吃的,我知道这不是爱情,就像哥哥与妹妹的感情一样,所以,自然而然我们就成了兄妹了。高中的时候,我们很幸运能在同一所学校,虽然没有在同一个班级,但是,那三年,我们依然在一起照顾对方。那时候,我谈恋爱了,不知道她有没有,但是她总是会说班上有人在追求她,我好担心,担心我这么善良的妹妹会被其他男人骗,担心她不会处理感情中遇到的事。虽然那时候我也不太懂怎么谈恋爱,但身为哥哥的我自然有强烈的保护欲望。我们还认识了一些对方的朋友,那时候真的好开心,那时候周末放半天出去和女朋友买奶茶也会单独给她带一杯。
可是后来,毕业了。毕业以后,我就很少和他们联系了,可能,更多的,是我变了。我不知道她在哪里上学,不知道她有没有找到男朋友,连她在哪儿都不知道。只是在后来的几次电话中得知她已经找到男朋友了,并且,男朋友的老家在东北,几千公里呀。我不知道她那些日子都经历了什么,我不知道为什么她那固执的爸爸会让她一个人嫁到那么遥远的地方,只知道后来的后来,她突然结婚了,她说是“奉子成婚”。我由衷地祝福她,只是在心里却很难受。一个人在那么远的地方,如果娘家人对她不好,可怎么办呀。我没有说出来,只是叫她多看看书,因为我知道,无论一个人在什么困境,只要还会看书,至少心里面会知道什么叫做甜。再后来,只是听她说她生了一个女孩子,然后过了不到一年居然又怀孕了。她说通常是她一个人在家里,老公在外面打工,娘家人在不多远,只是没有过来照顾她。再后来,就是听到她的死讯了。那之前她还发了说说,心情不错,应该是刚生了第二个孩子。据说是在散步的时候失足掉下去的,也有人说是娘家人看她生了两个女孩而不是男孩而产后抑郁的,甚至有人说是谋杀。至于到底什么是真想,我已经不想去深究了。我的妹妹已经走了,再多的真想也换不来她的重生,只希望,那么善良的她,现在已经到了天堂,静静地看着我们,祝福着我们。
我觉得我十分对不起我的妹妹,在那边她一个人的时候,我没有经常去陪她,她只能靠和远在故乡的父亲通通电话,而我,作为一个同龄人,却没有给她带来任何的安慰。这是我一个哥哥的失职。大概有两次吧,她回到家乡,我都说要去看她,但是因为这样或那样的事情,最后都拖到她的再次离开。那几晚,我挨着给我的姐姐妹妹以及那些曾经说过“下次见面一起吃个饭”的朋友都问候了一遍,还好,他们在电话或者QQ里,心情仿佛都还不错。我不希望还会有人从我身边离开,但,哪怕是离开,我也希望能看到它们现在是快快乐乐的。
妹妹,哥哥不知道几十年后还会不会记起你,希望你不要把我怪罪。再见了,妹妹。我已经好几年没吃糖葫芦了,以后可能也不会吃了,我好想下一串糖葫芦,依然是买给你的。
买房了,但我不做房奴
昨天,终于完成了人生中的一件大事——买房。以前觉得买房,看着好就买,应该不是一件麻烦的事情,但通过最近几个月的看房经历来看,其麻烦程度完全超乎了我的想象,甚至给我带来了极大的心理压力。我不知道现在买房是不是好时机,但是我愿意以后花更多的努力来将损失降到最低,来让房子带给我的是更多的幸福感,而不是一辈子的压力。这两天想了很多很多,或许也是我的一次比较大的成长。
最累不过买房
从我毕业开始,父母就开始问我什么时候买房,我知道他们一直都尊重我的意见,我也觉得不用那么早买房,毕竟我和女朋友结婚,可能要等到下一个猴年马月了。但是,今年的重庆房价仿佛一下子变成了网红,国庆前后,当20个城市开启“限购模式”后,仿佛所有人都把焦点投向了重庆,质疑这座新一线城市为何房价迟迟配不上自己的地位。作为一个土生土长的重庆人,我由衷地感谢市政府的能力,也深刻的意识到重庆的房价,可能不会再那么平静了。我和我的父母,以及周围的好多亲戚,都认为,重庆的房价肯定会继续涨,虽然没外地涨得快,但涨价是肯定的。当然,按照往常的规律来说,涨价一般发生在四月份和九十月份。于是我们就决定慢慢看。但是由于我对房子要求并不高,每看一套房子就觉得喜欢,父母就得周末专程从老家跑到城里来看。上周末一连看了两天,每天看个三四套,耳边一直是中介的各种吹嘘,简直筋疲力竭,我也不想再看了,于是匆忙之中选了一套。额,最终我买了最偏远的一套,远离喧嚣,旁边有公园,交通还算方便,我觉得,那才是我理想中的房子。
最愧不过父母
确定买房的那个夜晚,我侧夜难眠,自小时候得的一场重大疾病过后,我就从来没有一下子向父母要过这么多的钱。这让我感到很大的心里压力,我也知道这套房几乎会花光家里所有的积蓄,但是,面对突如其来的房价泡沫,我也不得不硬着头皮下手,哪怕我心里也觉得这个泡沫可能会破灭。本来还说这周末带父母去做一次全身体检,结果没想到,反而让他们这般劳累。没想到,即使是毕业了,也没能让他们过上舒服的生活,现在的我,只希望从装修完了开始不再让他们花哪怕一分钱。不花父母钱,这个日子我已经期待了那么久,也延迟了那么久,希望这次不会再延迟。趁着父母还健健康康的,多让他们享福,最不想听到子欲养而亲不在。
他们没有给我最好的,但给了我他们所有的。
最傻不过曾经
果然,到目前为止,还是有些事情我无法控制。从大学开始,我就努力地提高自己,以使得自己能够在面临两难选择的时候能够轻松应对,比如大二分专业,我已经锻炼到无论哪一个专业我都能应对自如,比如毕业后选工作,我也自认为锻炼到无论哪一个公司哪一个地方,我都能继续成长、持续学习。但是,当面临买房的时候,我软弱了。没有足够的知识去确定哪个房子最好,也没有足够的面对未来的信心,这一次,我没有了当年的豪言壮语,多了几分面对现实的无奈。
还记得曾经的曾经,我们傲气冲天,敢说出“上大学以后不再要父母一分钱”,敢说出“买房完全靠自己”,敢说出“毕业的时候开自己买的车出去”这样的话,但是后来,多少次凝望西边的天空,心里无不充满遗憾,如今的我,依然能说出这样的话,只是已没有了当年的底气,潜意识里否定了这样的话,否定了现在的自己。
是啊,没想到,成长为了曾经讨厌的人。成长怎么会是这样的,难道成长不是一次又一次的实现曾经许下的梦想的过程吗?
最美不过将来
幸运的是,买房确实给我带来了极大的安全感。我曾经以为,女生眼里的安全感就是男生要保护好女生不受伤害,但后来又觉得是感受到自己的男朋友不会离开自己,再后来我又觉得是看到男人的努力觉得以后会过上好日子。女人我永远不懂,但是,买房让我体验到了什么是我的安全感。不用再担心房价是上涨还是下跌,不用再每天去看哪个楼盘更好。买房的第二天,我心里就放轻松了许多。既然买了,就不要后悔。接下来,我要和爸爸妈妈还有我的女朋友一起规划新家的样子。这套房子离我上班的地方很近,但是离女朋友上班的地方很远,所以,希望明年能买辆车,当然,依然只能贷款😂。以后,我们的宝宝会降临在这套房子里,可能要一直等到她上小学才会换房子。我是买了房,但是这样一个我每天居住的地方怎么能反过来把我奴役了,我会把它装扮得漂漂亮亮的,一起走过接下来的几年时光。不做房奴,美好的未来,才刚刚开始。
最好不过现在
我很幸福,从小到大,爸爸妈妈哥哥一直没有离开我,并且现在的女朋友居然是自己的小学同学,并且我身边所有最亲近的人都健康,都很幸福。我们挣的钱不多,但不至于每天为了钱焦头烂额;我们的学历不怎么高,但不会每天找无趣的事情;我们没有住在一起,但都在一个美丽的城市里。想回家看爸爸妈妈,长途车2小时,想去看女朋友,高铁2小时,基本上,随时都能找到理由去看看他们。我和爸爸性格一样,为了多陪陪亲人,宁愿不去外面挣大钱,就过过温馨的小日子,一辈子这样平静,多好呀。现在这么美好,为什么不珍惜呢,我还那么年轻,为什么不趁现在就努力呢?
《人为什么活着》——传奇程序员王小波
此书采购于Amazon的0元限时购活动,同时,我表示很激动,终于能拜读期待已久的“初代程序员”王小波的作品了。第一次那么想了解王小波是在我读了《把时间当作朋友》过后,果然,不出半年,我就读到了王小波的作品。和《把时间当作朋友》一样,《人为什么活着》也是一本杂文集,署名只是取了其中某一篇的标题,当然是最富有吸引力的标题。
在我的关于王小波的种种映象里,他应该是一个,很正统,并且很有写鸡汤文潜质的那么一个伟大的作家,不过在阅读了这本书过后,我只想说,这TM是怎样一个有趣的人呀?他反对儒家思想,反对道德至上,以他独特的眼光反抗者外部的不解,哪怕他用脏话骂一个人我都觉得毫不做作,反而要拍手称绝,骂得有理有据,骂得头头是道,骂得真爽。和近现代的一些作家比起来,他的人生经历了这个国家太多的路程,但是作品却没有流露出太多的历史厚重感,没有那么多的包袱,他的文章读起来便有趣多了。看到不到十分之一的时候我最大的感受就是,这个作家,太接地气了。
也是通过这本书,我第一次,对孔孟时期的思想有了深一步的思考。求学的时候,我们只知道这些名家的思想中最出名的几句名言(这就像我每次看完一本书,下面都会摘了很多名言一样),却不了解他们的知识体系,体系必然有一个中心,然而,孔孟思想的中心,似乎都不太正确,或许只能说是政治正确。他们为我们当今的世界定了太多的规矩,其中,很大一部分是我们一直沿用的,只是,很少有人去问对不对,反正周围的人只是认为不按照那样做,便是不对的。
最最让我佩服的是,他一个经历过文革的作家,居然也是一名程序员,他对知识的涉猎程度完全超乎我的想象。首先,他是我知道的唯一一位经历过文革的还会写代码的人,其次他还是上个世纪的程序员,也就是说,电脑刚在国内发展起来的时候,他就已经开始使用电脑,并能自己编写软件解决自己的需求。放在今天,这完全就是一位极客了。肯定会有无数的粉丝。今天的程序员作家也不少,但是经历像他这么丰富的人,肯定是没有的。所以关上书的时候,我感慨了一句:经历丰富的人,写日记都像是在写诗。
最后,这是我女朋友最近和她母亲聊天的截图:
真的好庆幸,我有这么“不管我”的父母,让我从小能拥有一般农村孩子无法理解的自由,他们带给我的不仅仅是生活上的轻松,更是我一辈子的财富。也很高兴女朋友和我一样能有自由的思想,而不是唯父母命是从。
看了全书,我还是不知道人为什么活着,或许,好好玩儿,活在当下,这才是人生的答案。自由,哪怕仅仅是思维能够自由,那就足够了。
名言
- 只希望你和我好,互不猜忌,也互不称誉,安如平日,你和我说话像对自己说话一样,我和你说话也像对自己说话一样。说吧,和我好吗?——《孤独的灵魂多么寂寞啊》
- 我不喜欢稀里糊涂地过日子。我妈妈有时说:真奇怪啊,我们稀里糊涂地就过来了。他们真的是这样。我们的生活就是我们本身。我们本身不傻,也不斤斤计较大衣柜一头沉。干嘛要求我们有什么外在的样子,比方说,规规矩矩,和某些人一样等等。有时候我真想叉着腰骂:滚你的,什么样子!真的,我们的生活是一些给人看的仪式吗?或者叫人安分守己。不知什么叫“分”,假如人活到世上之前“分”都叫人安排好了,不如再死回去的好。——《人为什么活着》
- 理性就像贞操,失去了就不会再有;只要碰上了开心的事,乐观还会回来的。——《积极的结论》
- 我现在所教的数学,你们也许一生都用不到,但我还要教,因为这些知识是好的,应该让你们知道。——《跳出手掌心》
- 在文学艺术及其他人文的领域之内,国人的确是在使用一种双重标准,那就是对外国人的作品,用艺术或科学的标准来审评;而对中国人的作品,则用道德的标准来审评。——《跳出手掌心》
- 我最赞成罗素先生的一句话:”须知参差多台,乃是幸福的本源。”——《思维的乐趣》
- 能够带来思想快乐的东西,只能是人类智慧之高的产物。——《思维的乐趣》
- 假设有某君思想高尚,我是十分敬佩的;可是如果你因此想把我的脑子扔出来挖掉,换上他的,我决不肯,除非你能够证明我罪大恶极,死有余辜。人既然活着,就有权保证他思想的连续性,到死方休。更何况那些高尚和地下完全是以他们自己的立场来度量的,假如我全盘接受,无异于请那些善良的思想母鸡到我脑子里下蛋,而我总不肯相信,自己的脖子上方,原来是长了一座鸡窝。——《思维的乐趣》
- 于是人人盛赞节烈妇女。翻开历史一看,女人味了节烈,割鼻子拉耳朵的都有。鼻子耳朵不比头发指甲,割了张不出来,而且人身上有此零件,必有用处,拿掉了肯定有不便处。若是为“节烈”之名而自杀,肯定是更加不妥的了。此类行为,就像那条抽疯的海豚。——《西方快乐观区别之我见》
- 罗素在讨论伦理问题时曾经指出,人人都希求幸福。假如说,人得到自己希求的东西就是幸福,那就言之成理;倘若说因为某件事是幸福的,所以我们就希求它,那就是错误的。——《西方快乐观之我见》
- 大多数人在受到重视之后,行为就会好。——《居住环境与尊严》
- 从孔孟到如今,中国的哲学家从来不挑担、不推车,所以他们的智慧从不考虑降低肉体的痛苦,专门营造站着说话不腰疼的理论。——《人生的逆转》
- 假如从整个人类来考虑问题,早就回发现,趋利避害,直截了当地解决实际问题最重要——说实话,中国人在这方面已经很不像样了——这不是什么哲学的思辨,而是我们的生活经验。我们的社会里,必须有改变物质生活的原动力,这样才能把未来的命脉握在自己的手里。——《人生的逆转》
- 花钱不说,还下了很多功夫,现在用的软件都是我自己写的。——《从Internet说起》
- 不知为什么,傻人道德上的敏感度总是很高,也许这纯属巧合。——《奸近杀》
- 我既不是同性恋,也不想自杀,所以我对计算机没兴趣。得的全是三分。但我现在时常用得着它,所以还要买书看看,关心一下最新的进展,以免用时抓瞎。这是因为我写文章的软件时自己编的,别人编的软件我即使不惯,也信不过,就这么点原因。但就因为这点小原因,握在编程这件事上,还真正有点修为。由此可见,为研究某种学问这件事感兴趣和对这门学问本身感兴趣可以完全是两回事。——《苏东坡与东坡肉》
- 有人告诉我说,没你这么写杂文的!杂文里应该有点典故,有点考证,有点文化气味。典故我知道一些,考证也会,但就是不肯这么些。——《有关天圆地方》
- 罗素举这个例子是要说,人们的见识总要受处境的限制,这种限制既不知不觉,又牢不可破——这是一个极好的说明。——《有关天圆地方》
- 很不幸的是,任何一种负面的生活都能产生很多乱七八糟的细节,使它变得蛮有趣的。人就在这种趣味中沉沦下去,从根本上忘记了这种生活需要改进。——《有关贫穷》
- 古人说,食色性也。想爱和想吃都是人性的一部分,如果得不到,就称为人性的障碍。——《从<黄金时代>谈小说艺术》
- 我们的生活有这么多的障碍,真他妈的有意思。——《从<黄金时代>谈小说艺术》
- 我相信如果不能把已写出的每一根线索都记在心里,就不能写出好的结构;如果不能把写出的每一句话记在心里,就不能写出好的风格。——《<怀疑三部曲>序》
- 当然,人有贤愚之分。但一个人认为思维是快乐的,那他就可说是热爱智慧的。——《<怀疑三部曲>序》
- 我认为没有智慧、性爱而且没意思的生活不足取,但有些人却以为这样的生后就是一切。他们还说,假如有什么需要热爱,那就是这种生活里面的规矩——在我看来,这种生活态度简直是种怪癖。很不幸的事,有这种怪癖的人是很多的,有人甚至把这种怪癖叫做文化,甚至当做了生活本身。——《<怀疑三部曲>序》
- 细读过《孟子》之后,我发现里面全是这样的一些想法。这世界上有很多书都是这样的:内容不可挑剔,只是很没有意思。除了显而易见的坏处,这种书还有一种害人之处就在于:有人从这些书中受到了鼓舞,把整个生活朝更没意思的方向推动。——《<怀疑三部曲>序》
- 一切人间的荒唐事,整个社会的环境虽是一个原因,但不主要。主要的是:那个闹事的人是在借酒撒疯。——《肚子里的故事》
权限系统的构想(少用户多权限)
最近团队由于项目需求的增多,需要单独设计一个权限系统出来,参考了网上很多的权限/访问控制系统以及一些设计原则比如RBAC(Role-Based Access Control),这里,记录一下自己对权限系统的一种构想。需要注意的是,RBAC中也有分组的概念,但是它的分组仅仅是为了将相同权限的人集中在一起。我的构想虽然没有分组的概念,但是也符合RBAC原则的,只是因为我做的更彻底,不仅将角色与权限直接关联,更是将用户与权限直接关联,产生了一定的冗余,更适用于人数少但是权限多的情况。
实体表
应用表
字段名 | 字段注释 |
---|---|
id | app_id |
角色表
字段名 | 字段注释 |
---|---|
id | role_id |
app_id | 应用ID |
name | 名称(英文) |
beta | 备注 |
权限表
字段名 | 字段注释 |
---|---|
id | privilege_id |
app_id | 应用ID,不提供表示通用的权限 |
name | 名称(英文) |
beta | 备注 |
操作表
字段名 | 字段注释 |
---|---|
id | operator_id |
app_id | 不提供表示通用的操作 |
name | 名称(英文),例如: add, delete, edit, query |
beta | 备注 |
关联表
用户与权限关联表:此表与角色权限对应表之间是有一定冗余的,但是考虑到个性化需求以及第三方APP的需要,所以在可以忍受的范围内
字段名 | 字段注释 |
---|---|
id | |
user_id | 用户ID |
role_id | 角色ID: 为0表示该权限是独立分配的,独立分配的优先 |
privilege_id | 权限ID |
operator_id | 操作ID |
disabled | boolean |
角色与权限对应表
字段名 | 字段注释 |
---|---|
id | |
role_id | 角色ID |
privilege_id | 权限ID |
operator_id | 操作ID |
用户与角色对应表
字段名 | 字段注释 |
---|---|
id | |
role_id | 角色ID |
user_id | 用户ID |
常用操作
添加权限: 直接添加
给单独用户添加权限: 保存在角色与权限表中,并将role_id标志为单独的那一个id
删除用户角色: 直接根据role_id进行disabled,添加了就不直接删除
删除用户权限:直接根据role_id进行disabled,也不直接删除
其他平台登录:只需要在登录的时候获取该用户在该平台的所有的额权限即可,连分组都不需要,因为权限都是在权限系统中进行统一登记注册的,所以其他平台不用单独存储权限列表,而只需要获取获取当前用户的权限,放到缓存里面即可,例如redis,可以直接存储为一个列表user:privileges []
读《解忧杂货店》
这本书在最近一年里面特别火,以前好多从来不看书的朋友都在朋友圈里发这本书的照片,仿佛大家一下子爱上了文字。我当然不会因为人家看我就看的,只是每次一看到这本书的名字,就不由得想起日本的情感电视剧《深夜食堂》,不知道为什么,就感觉他们可能会有好多相似的地方,应该会和《深夜食堂》一样,在很平淡的叙述中体会其中的韵味,引人入胜。于是最后,我还是看了。它和《深夜食堂》有相似的,也有不同的。《深夜食堂》是把精彩的故事写平淡,而《解忧杂货店》则是把本应该跌宕起伏的故事写得平淡,然后一步一步将错综复杂的故事串起来,功力同样深厚,毕竟是东野圭吾的作品,不得不叹服。
浪矢杂货店,一个连接过去与未来的杂货店,连接了一个老头与三个坏孩子一起帮助别人排忧解难的故事。通过几个矛盾人物与他们之间的书信交流来推动故事发展,更精妙的是几个矛盾人物之间又刚好有一丝丝的联系,联系虽然不深,但是却足以让人看到其中环环相扣的逻辑,被作者的思维所震撼。
我一直都像很多国人一样,哪怕自己过得再堕落,哪怕自己不相信大道理也要自以为是地告诫别人,偶尔,也会很认真地回应别人的玩笑,因为“我们也要尽可能帮助他人,你没有无视他开玩笑写的问题,而是认真回答,所以才回一直牢记在心里”。我希望自己能力所能及地帮助他人,特别是刚入编程领域的小学弟们,我很希望他们来问我问题,哪怕最简单的,哪怕最幼稚的,我也要认认真真地回答。遗憾的是,我并不是什么大神,所以找我咨询的学弟微乎其微呀。
人生,重要的是选择。作为一个挣扎于选择困难症不能自拔的天秤座的我来说,其实,很多时候在犹豫不决的时候,决定其实早就在自己心中,只是,要么因为各种客观原因,要么就是自己主观上的回避。最常见的莫过于购物的时候,说简单点就是没钱,所以才会犹豫不决,这个倒很好解决,多挣钱就行。又比如人生中的抉择,月兔想参加奥运会,但是怕选不上所以找了一个照顾男友的理由;克朗想成为歌手,然后又以照顾父亲为理由放弃追逐梦想。追逐梦想,能够轻松实现自己想要的,谁又不想呢。只是现实很多时候过于残酷,我们不知道继续坚持会不会得到自己期待的结果,只是从现在的情形看来,结果肯定不会太好,这个时候如果来了一个很合理的,连自己都能说服的理由,又何尝不想放弃呢,放弃多好,努力不一定成功,但不努力,一定很轻松。似乎,只要不是自己的原因,这样的理由就非常容易被接受,也不至于被身边的人嘲笑。但是,终究不过是自欺欺人。明明知道自己想要的,但还是选择逃避。不要轻易被自己的努力感动,真的,你做的努力相比于真正成功了的人,是微乎其微的。
看博客的人要的都是干货?
前几天,一位朋友突然问我道,为什么我的博客最近更新的都是有关读后感的,而少了以前那么多的技术干货。很欣慰,居然有朋友一直在看我的站点,虽然并没有看到它想看的,但是他所要的技术干货我现在其实也有,只是并没有放在主站,而是放在豪翔天下的wiki这个二级域名下。至于为什么,我想是因为厌倦了很多博客的内容样式,厌倦了很多教程的复制粘贴,才有了把它们一分为二的想法。
看了一下百度统计和谷歌Analytics,博客从13年至今,统计在内的PV总共有20000+,单日最高PV居然有1300+,但是平日里也就10左右。虽然我有用统计工具,但是几乎不会去关注这些统计结果,一直以来我写博客都是为了自己在写,即使是技术干货,也是为了方便自己以后查阅。但是最近又有了一些新的方法,我认为,我现在可以宣传自己了。以前的我很自卑,觉得自己写的东西,那肯定都是别人写过的,而且自己写的东西更是没有多少技术深度的东西,但是事实好像并不是这样。我最骄傲的地方就是与身边的不一样,我每天都在浏览着很多科技博客、技术新闻,以为自己一直是站在技术前沿的人,也意识到自己学的东西范围非常广,自己的深度也不够,眼前有很多路,却不知道该往哪里走。这就像一个瓶子,明明上面就是瓶颈了,但就是怎么做也钻不出去,甚至在往下掉。
到新公司也快半年了,新同事们很好,也很牛逼,感觉大家简直就像游侠一样,不想去北上广争夺,只想待在重庆这个小江湖,说实话,他们的技能水平,在北上广绝对也能称得上高手。这半年里,因为有人在旁边指导,在代码质量方面成长得挺快,至少现在写代码的时候能明显感觉到自己以前写的代码是有多么的bad smell。在给别人开发的时候也感觉自己的代码量真的太少了。以前都是自己开发自己的东西,觉得有时候有点错误没什么,但是给别人开发的过程中,一点儿不满意人家就会指出来,而且让人伤心的是,这里面起码有百分之五十确实是自己代码质量的问题。路漫漫其修远兮,编程之路,我还有很长的路要走。
前几天翻了以前的博客,我去,居然没有今年的年初计划,不禁思考,我这半年是怎么浑浑噩噩过来的,接下来的半年又该怎样浑浑噩噩地过呢。浑浑噩噩这个词我不喜欢,你说我懒我会接受,我懒得开心,但是说我浑浑噩噩,说我不思进取,那肯定是不行的。在这里,补一下下半年的目标:
- 熟练日语五十音(说了很多次要学日语,结果到现在连五十音都还不认识,要想装逼,至少要会说吧)
- 结交三个以上IT界朋友(年龄相仿+忘年)
- 博客日访问量10+(我承认,现在的博客日访问量还有零的)
- 年底公司评级达到P4及以上(这就要求在公司好好工作啦)
- 给父母做全身检查(哪怕再缺钱也得做)
- SegmentFault声望达到1000以上
MacTalk 人生元编程
我不知道有多少人因为池老师的一篇《先有Mac还是先有钱》而去买的苹果电脑,我现在也在用rmbp,但我可不是因为这个原因。从大一到大三,我那台宏碁的笔记本一直陪伴在我身边,经历了我各种摧残,更换了无数的操作系统(windows、linux系列的),曾经最长用了半年的deepin单系统。虽说我自认为我用电脑一定比其他人用得好,毕竟一台三千多的电脑能用出人家五六千电脑的流畅度,但是依然不尽如我意。折腾累了,最终在大三结束刚进入实习期的我就找父母拿钱买了一台15年乞丐版的rmbp。刚好快一年了,这一年,mac带给我最大的感受就是我几乎没有任何感受…我已经完全忘记了去折腾电脑了,重装系统、电脑卡顿、木马病毒,统统都没有,我甚至都忘记了他们的存在了。买windows是买电脑送系统,买mac则是买系统送电脑。mac带给我们更多的是一种享受,我愿意为这样的服务买单。
作为一本talk mac的书籍,当然不乏众多的mac使用技巧,osx的强大,远比我当前的使用方式更强大,还需要我去探索。当然,现在的我已经不再是工具控了,因为我已经找到了一套自己认为最适合自己的工具,不用再为新工具的出现而浪费时间了。除了一些使用技巧外,池健强老师还谈了一些对编程的看法。让我了解了一个人,王小波,对他几乎没有什么认识,我想,我也该去拜读一下他的书了。
关于盗版,我的博客很早就有一篇《学生应该尽量购买正版书籍》,上个月从学校回来,收拾了一箱子舍不得卖的书,几乎全是在当当或者亚马逊上买的,这,也算是我对这些作者表达的基本的尊重。同时,在使用了mac过后,我的电脑/手机都与盗版彻底绝缘了。从此可以问心无愧地进行开发,也希望自己开发的东西有一天能让大众享受,能让用户主动掏钱。以下是池老师关于盗版的言论:
|
|
池老师也算是很多新一代程序员的领路人,不知道他现在怎么样了,不过,我算是真正走上了这条路了,一切,才刚刚开始。
语录
- 反观观国内,很多公司把企业文化作为一种“秀”或“工具”,这就比较扯淡了。我觉得搞好企业文化,就两点: 1.利益,把公司利益和员工联系在一起,好员工钱得给足。 2.人文,少搞或不搞办公室政治,让员工自由一点、开放一点、平等一点,你会获得回报。 对于员工本身来说,不管企业是什么文化,
- 是啊,人怎么会有那么多时间学习那么多东西呢?其实这个不可能的设定,是在保证你有足够时间看电视、看美剧、刷微博、上网闲逛的基础之上的。只要把上述这些事情消费的时间减少一半,拿来持续学习,你就会发现学习效果是惊人的。
- 有一些穿高跟鞋走不到的路,有一些喷着香水闻不到的空气,有一些在楼宇里永远遇不到的人。
- 很多时候我们初入江湖,不知深浅,不知道什么事能做,怎么做,为什么要这么做,即使怯生生问了,得到的答复往往是,That’s just the way it’s done(我们向来这么做),于是我们慢慢也变得成熟、圆滑和懒惰,不再去从深层次思考『为什么要这么做?』因为别人也这么做。慢慢的,这些东西就成为了folklore(陈规陋习)。 一个坏的习惯或传统,可能延续十年、百年、千年,直到那个打破陈规陋习的人出现! 提问、思考和努力工作,你就会抛弃这些陈规陋习,找到布满荆棘也满是鲜花的另一条鲜活的路。
- 经验告诉我,优秀的人才是那些一心想着产品的人,而不是关注管理和流程本身。
- 乔布斯认为,人活着是为了追求极致并分享美好的东西给人类,而不是做三流产品并赚钱。这样社会才能进步,让更多的人欣赏到更美好的东西。微软不过是另一个麦当劳,哈哈。
- 我以为我是个盖世程序猿,有一天我的程序会奔跑在千万台服务器上。我猜中了前头,可是我猜不着这结局……我们说,呸,你丫从头就错了!
- 有人问,你为什么要从事IT技术研发工作?如果是乔布斯,可能的答案是改变世界;如果是人生导师,可能的答案是跟随你心。如果是我回答呢,答案就是如果不从事这个行业的话呢,我还真不知道该如何养家糊口
OAuth和SSO
目前网络上的数据传输普遍基于HTTP/HTTPS,然而,他们都是无状态的协议,也就是说你本次的请求与下一次的请求是毫无关系的,为了使得我们能够保存用户的状态,于是诞生了cookie,诞生了session,诞生了token,当然,这三者的概念其实都差不多,总体思想就是,在第一次请求过后,给用户生成唯一的一个标识,用户在下一次请求时,携带这个标识,这样服务端就能通过它来判断用户的状态以及合法性。
注意: OAuth确实增加了安全性,但是也增加了应用的复杂性,对于安全要求没那么高的应用,依然可以使用简单的加密算法进行双向加解密认证。
OAuth
OAuth主要用于社会化登录,仅仅需要一个系统来存储用户的信息,其他的系统或者第三方系统均可以使用,其他系统不需要维护自己的用户系统,免去了用户注册账号的麻烦,并且用户的密码等重要信息都集中保存在信任方,提高了安全性。
根据阮一峰的博客,客户端获取授权有以下几种认证方式:
- 授权码模式(authorization code): 是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与”服务提供商”的认证服务器进行互动。
- 简化模式(implicit): 不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了”授权码”这个步骤,因此得名。所有步骤在浏览器中完成,令牌对访问者是可见的,且客户端不需要认证。
- 密码模式(resource owner password credentials):用户向客户端提供自己的用户名和密码。客户端使用这些信息,向”服务商提供商”索要授权。
- 客户端模式(client credentials):指客户端以自己的名义,而不是以用户的名义,向”服务提供商”进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求”服务提供商”提供服务,其实不存在授权问题。
具体流程(感觉不用图也能说清楚呀):
- 第三方站点获取未授权的Request Token
- 获取用户授权的Request Token
- 用授权的Request Token换取Access Token
- 通过Access Token访问该用户的资源
另外,对于客户端的每一次获取token的请求,都对应着一定的权限,比如微博的第三方认证,通常仅有获取用户基本信息的权限,或者如github的权限就更加详细一点,包括获取基本信息,公开库的访问权限和私有库的访问权限(github的认证请求权限使用的是X-OAuth-Scopes
作为参数放在请求头部,例如user
,表示能获取用户的所有信息,而user.email
则表示只能获取用户的邮箱)。
对于第三方应用,仅需要维护token的值,一般来说,有一种用户基本信息表,多张token存储表对应着多个公开应用。例如接入了微博的第三方可以有这么一张表: (id, user_id, weibo_id, weibo_access_token, weibo_expires)
注: 社会化登录的回调地址(callback_url)与返回地址(next)的区别,回调地址指用户点击第三方登录过后,由资源服务器回调到的地址,而返回地址则是用户欲访问的地址,一般为应用自己的首页,但也有可能是用户直接知道url后想去的地址,这时候可以在请求的时候带上next参数,然后由资源服务器原样返回过去。
最后,几乎所有关于OAuth的文章都会遗漏的一点,那就是资源服务器和认证服务器之间的认证。当访问者获取了token过后,向资源服务器发送请求时,资源服务器肯定会向认证服务器验证这个token的合法性,这也是一个很危险的步骤,在实际项目中,我将token与访问者的appkey一起进行认证,并且作为认证服务器同样要对资源服务器的认证请求一起认证。具体可参考stackoverflow
SSO(单点登录)
解决的是跨域的用户校验问题,常用于一个公司内部有多个子网站,然后提供统一的登录,一个站点登录过后其他站点不用重复登录。多用于存在多个子系统的公司。
具体流程:
- 用户请求任意一个子站的login页面
- 用户输入用户名密码,子站将它传递给认证中心SSO Server
- SSO Server验证成功后
虽然SSO和OAuth是不一样的东西,但是我认为SSO只是OAuth的一种简化模式,可以归为OAuth的一类。通常由于子系统的域名不一样,不方便设置各自的cookie,于是这里又有两种解决方案:
- 使用公共加解密函数进行双向加解密(加密字符串直接放在GET请求中)
- 同样使用公共的加解密函数,但是是使用JSOPN解决跨域问题(用户登录子应用时,会带上父应用域名下的cookie访问父应用提供的JSONP接口,父应用验证登录状态,最后返回加密后的用户信息)
例如,本人在一个项目中所使用的认证流程:
签名算法的设计
无论是OAuth或是SSO都涉及到认证的过程,一般都不推荐使用可逆的加密算法,而使用单向的加密算法,只要双方对数据进行加密后的结果一致就表示该请求是合法的。参考网上很多的签名算法,最后总结了一下使用最广也是最安全的一种签名算法步骤:
- 将请求的参数转换为’key=value’形式的字符串,如: “k1=v1”, “k2=v2”
- 将格式化后的字符串以字典升序进行排序,然后拼接在一起,如: “k1=v1k2=v2”
- 在拼接后的字符串的前后加上Secret Key,如:”keyk1=v1k2=v2key”
- 对拼接后的字符串进行MD5加密得到最终的结果
Python实现
|
|
PHP实现
|
|
Java实现
|
|