博客 | Blog

Vim environment for SICP on Windows

SICP means Structure and Interpretation of Computer Programmings. This quick note is for a Common Lisp environment configuration for learning SICP on Windows.

  1. Common Lisp is my choice, while MIT-Scheme is the recommendation of SICP. Download it from https://common-lisp.net/downloads/. I am using CCL for it is the default in tutorial for Slimv.
  2. Download Slim: https://github.com/slime/slime/releases.
  3. Download Vim Plugin slimv.vim http://www.vim.org/scripts/script.php?script_id=2531

Configurations in .vimrc

let g:slimv_swank_cmd = '!start "<ccl dir>/wx86cl.exe"
\ -l "<slime dir>\start-swank.lisp"'

reference #

无题之红包

源于支付宝的集五福活动反思。

1 月 28 日活动开始,当天集齐 4 张,只差敬业福。之后基本一直有关注,除夕夜几波抢红包的时间点都没有错过。结局是依旧没有集齐,身边集齐的人也是寥寥。

当活动结束的时候是愤怒的,这也是这篇吐槽的由来。不从企业营销活动的角度去讨论这次活动,这个可以参考可能吧的一篇关于微信与支付宝红包营销对比的文章。纯粹从个人角度去看,投入了不少时间,基本没有收获,最后收获的只有愤怒与后悔。

后悔来自于投入与产出不平衡。愤怒的原因是那种无法控制的结果,与之前的设想不太一样。然而这本应是可以想到的事情,只是一厢情愿、不愿去承认这个可能性。

推而广之,群红包又何尝不是类似。投入了大量时间参与抢红包的游戏,为了不是收益,只是感受这种概率的乐趣,以及浪费无聊的时间,或者还有一丝与他人进行社交的作用。

所以拒绝群红包这种效率低下的方式,以及正确理性评估商家的一切活动,不要再贱卖自己的时间了。

CE2CS

是的,在长达七年的 CE 专业学习后,硕士毕业之际我决定报考计算机科学与技术专业的博士研究生。

第一次接触计算机是初中,在数学老师的家里。印象最深的是 Windows 经典的蓝天白云壁纸。初中毕业如愿进入县城中学,数周一次的微机课是最让我期待的,信息技术的课本被我闲暇时候翻了一遍又一遍,在脑中幻想着计算机的操作界面。高中的学业繁重,当时也仅限于幻想,期待着何时能拥有一台自己的电脑。

我并不清楚自己对计算机喜爱源于何处,从最初的接触开始,这种喜爱就在酝酿发酵,与日俱增。高考填报志愿时,我毫不犹豫地填了计算机科学与技术,这是最早知道这个专业,虽然当时根本不明白这个专业的具体含义。遗憾的是,我并没有如愿进入计算机学院,招生老师电话过来询问的时候,我选择了同意调剂,因为当时所有的专业对我来说都是新鲜,对于计算机莫名其妙的兴趣不足以让我放弃某校的录取。最终,我进入土木工程专业。土木工程很不错,我这样安慰自己。其实不是没有考虑过转系,但是由于身份原因,转系的难度较普通生又困难了许多。而且大学的新鲜生活让我目不暇接,很快便打消了这个念头,且决定将对计算机的喜爱当成一个业余爱好。本科四年里,选修了 C/C++ 课程、计算机网络基础以及因为精力有限而中途退课的数据结构,开始接触 Linux 操作系统,在互联网上搜索解决日常各种问题,因此对于计算机相关的各方面有了一鳞半爪的了解。

本科毕业,同学中有从航天航空专业转到计算机科学专业的,我犹豫许久终是没有下定决心。一方面是安于现状,懒得改变,不敢为了兴趣去重新开始,接受挑战;另一方面则是沉没成本谬误,心想已经在土木工程专业学习了四年,如果转专业岂不是白费了四年光阴?最终我选择来到了南京,继续本专业的研究生学习。

我对计算机的喜爱从未改变,反而随着时间流逝逐渐加深。这种莫名的喜爱也让我困惑。我不喜欢游戏,因为不擅长;编程也算不得擅长,只是了解数门语言,但都是浅尝辄止,除了专业课程需要,并未写过很长的代码;对于很多软件工具,也仅限于比大部分非专业人士多了解一点;虽然长期使用 Linux 操作系统( Archlinux 发行版),也仅限于日常使用,解决问题大多还是靠 Google。因为互联网,我得以在计算机的世界里遨游,但是就像进入图书馆的儿童,只是流连于书架之间,没有动力也没有方向去坐下来钻研。

让我重新考虑这件事情的原因有很多,其中之一是一个本科读心理的朋友申请了计算机科学专业的硕士,我得知后自然很吃惊。别人文科专业对计算机基本不了解的人尚能如此,我为什么不可以呢?跨专业考博的念头冒出来之后便挥之不去,我也考虑了许久,也找到了说服自己的理由,过往说服自己不转专业的诸多理由一下子显得那么无力。一直安于现状,随波逐流,这次希望自己能做出选择。过去的都是沉没成本,为未来考虑时便应理智地不受其影响。那么,接下来的问题是,我为什么觉得自己可以读博呢?即顺利完成博士阶段学业的可能性。

相比于那些本科和硕士皆是计算机科学的同学来说,我最大的弱点是专业基础基本没有。我想一个专业的核心基础课应该只有数门,我会努力补上来,虽然这并不容易。复习考博的过程中,张教授在《计算机体系结构》这门课上提到过,听这门课的有从其他专业比如水利工程考过来的博士,那他们需要很努力了。我听到之后觉得很高兴,有别人走过这条路,那么,我有信心我也可以。我已经做好很努力的准备了。相比于其他同学,我可能的优势是兴趣,亦即我跨专业考博的原因。好之者不如乐之者,对于计算机的兴趣能让我在这条路上走得更久。

漂洋过海来看你

今天傍晚在师弟手机上听到了女声版的这首歌,非常耳熟的旋律,侧耳听了好久还是没有想起这首歌的名字,漂洋过海来看你。曲库里面的这首歌是李宗盛的版本,好奇原唱是谁便去搜索了一下,原来这首歌是李宗盛在听闻金智娟(艺名娃娃)的故事后写给她的歌,娃娃是台湾歌手,爱上了一个在北京的男人,当年(80年代末)大陆与台湾之间的通行远远不像今天这般方便,歌词所说并没有多少夸张。

女声版的尤其打动我,或者之前在听李宗盛老师演唱的时候没有那么认真。很多歌曲的意义,往往是听歌的人赋予的。仔细看了这首歌的歌词,越发的喜欢,耳边正在单曲重复。想到李老师是在边吃牛肉面边在餐巾纸上写下的这首歌,真是令人忍俊不禁。这首歌的版本很多,网上看到一篇文章专门说这个事情的,没有流量去听遍全部的版本和看遍全部的 MV,只下载了刘明湘、周深的版本,文中也推荐了这两个版本,原唱娃娃的也下载下来了。李老师的版本听了很多遍,这次又翻出来认真听了几遍。不同版本的差异不小,风格和一些细节的处理都不太一样。娃娃的版本毕竟是90年代初,与我一般大了,某些地方能听出老歌的感觉,感情充沛,非常用力,少了一些婉转的技巧,倒是符合她义无反顾的事迹。二十多年后再来听,依旧感动。李宗盛的版本一直在我的曲库里,太久了已经不记得何时何地因何添加进去的,是理性与感性作品音乐会上的现场版本,男声的粗犷远远不如女声的细腻能够激起人的共鸣,难怪我听了这么久也没有喜欢上 :)

然而周深的版本是个例外,她(笑)的名字不是第一次听说,很喜欢听的一首化身孤岛的鲸也是她翻唱的,有一段时间特别喜欢在洗澡的时候听这首化身孤岛的鲸,旋律和歌词都很好。后来才知道化身孤岛的鲸是改编自我们都被忘了,谢安琪原唱。找来这首也听了,熟悉的旋律,完全不一样的歌词与情感。关于谢安琪还有一些故事,以后再写。再往后,才知道周深性别为男,今天才看到他本人的照片,为了不在听歌的时候产生奇怪的情感,还是用她来代指吧 XD。今天师弟手机上播放的就是刘明湘的版本,中国好声音海选上唱的歌曲。不太能分清周深和刘明湘两个人的版本,都是女声,相比娃娃的版本情感收敛了很多,技巧性方面可惜我是门外汉,只能模糊感觉到较之前变化很大。单纯从欣赏角度来说,我比较同意那篇文章作者的观点,周和刘比较合适。

可以说一下这句歌词,“我竟悲伤得不能自己”,简单考证了一下,不确定事实如何。李宗盛当年在写词的时候显然用词是正确的,即“不能自已”。然而娃娃在录音的时候情绪比较激动,数次泣不成声。种种原因导致她唱“错”了,将错就错之下,歌曲正式出来后便采用了“不能自己”。李宗盛老师后来在演唱时采用的也是“不能自己”。一般情况下我是比较喜欢挑字词语音方面的毛病的,以前听到不能自己还在奇怪,找到以上介绍,倒是更倾向于这个美丽的错误,“不能自己”比“不能自已”更有人情味,作词者都同意了,周深你瞎改做什么呢?

很喜欢类似娃娃这种敢作敢为、敢爱敢恨的风格,因为我不是这样的人,至少以前不是,对吧?不过从最近的其他事情来看,还是算不上敢爱敢恨。虽不能至,心向往之。歌曲中的故事是我所憧憬的,而在自己,往往便有了一大堆理由去说服自己:他是有妇之夫,何必?大陆那么遥远,我怎么过去?我没有经济基础,去不了。理由总是有的,只要你愿意找。做是不需要理由的,不做的理由永远有。三思而行对我来说更在于行字。

我在最绝望的时候都忍着不哭泣,陌生的城市啊,熟悉的角落里,也曾彼此安慰,也曾相拥私语。

不管将会面对怎样的结局,在漫天风沙里,望着你远去。

多盼能送君千里,直到山穷水尽,一生和你相依。

最后附上歌词。

’’ 为你我用了半年的积蓄 ’’ 漂洋过海地来看你 ’’ 为了这次相聚 ’’ 我连见面时的呼吸都曾反复练习 ’’ 言语从来没能将我的情意表达千万分之一 ’’ 为了这个遗憾 ’’ 我在夜里想了又想不肯睡去 ’’ 记忆它总是慢慢地累积 ’’ 在我心中无法抹去 ’’ 为了你的承诺 ’’ 我在最绝望的时候都忍着不哭泣 ’’ 陌生的城市啊 ’’ 熟悉的角落里 ’’ 也曾彼此安慰 ’’ 也曾相拥叹息 ’’ 不管将会面对什么样的结局 ’’ 在漫天风沙里 ’’ 望着你远去 ’’ 我竟悲伤得不能自己 ’’ 多盼能送君千里 ’’ 直到山穷水尽 ’’ 一生和你相依

焦虑

最近你的心情极度的不安定,焦灼不安,易怒,简直就是TMS,经前期综合征。事情的起因全在于在 SLAB 看到了某人的东西。即使全世界都在八卦都在向你传递这样一个信息,你不是还可以心安理得地自欺欺人,为什么直到我亲眼看到了才承认。所以,他们应该是在一起咯?(WOC)

这是如何的一种煎熬,而且是莫名其妙的不能诉诸于口的难受。你一定与理性一毛钱的关系都没有。真是呵呵。

分析一下你。首先因为种种客观原因(最大的应该 是即将离开南京),你告诉自己对别人不感兴趣,不能感兴趣,或者内心还是觉得双方无法彼此理解,不能仅仅因为有需求就开始一段新的感情。在这样说服你自己后却又忍不住和对方聊天,甚至有暧昧的成分在里面,即使是极度克制的,但是无法否认你自己内心真实的感受。仅仅这一点就能看出你的虚伪了。

其次,现在 发现对方和别人在一起,并没有告诉你。然而你想诉求什么呢?别人有什么理由有什么必要告诉你这件私人的事情?你想因为对方的不诚实不再去联系,然而又以失败告终,你真是善于说服自己,为自己的小心思找出冠冕堂皇的借口。

你不愿意去追,难道还不允许被别人追?这个世界从来就没有这种不讲道理的道理。就比如你在担心的,婚姻和爱情是多么的脆弱,难道作为一个有责任心的成年人,不应该明白自己对爱人,对家庭承担的责任么。担心是徒劳的,履行好自己的义务,成为一个有担当,有能力的成年男性。当你做好的自己的事情,其他的就交给这个世界吧。

结论是什么?认清这件事情,不要有不切实际的幻想,不要有毫无必要的焦虑,生活在继续,你的征途在星辰大海,路边的繁花不能阻挡你的视线。你已经被一朵困住很久了,不要再去招惹其他的,你的虚伪可笑的道德感不允许你这么做。

加油,不再是少年的少年。

靡不有初

今天听到这么一句话,“善始者实繁,克终者盖寡”。含义与“靡不有初,鲜克有终”基本一致。

前者是出自魏征《谏太宗十思疏》,全文附之。

  臣闻求木之长者,必固其根本;欲流之远者,必浚其泉源;思国之安者,必积其德义。源不深而岂望流之远?根不固而何求木之长?德不厚而思国之安,虽在下愚,知其不可,而况于明哲乎?人君当神器之重,居域中之大,将崇极天之峻,永保无疆之休。不念于居安思危,戒贪以俭,德不处其厚,情不胜其欲,斯亦伐根以求木茂,塞源而欲流长者也。

  凡百元首,承天景命,莫不殷忧而道著,功成而德衰。有善始者实繁,能克终者盖寡,岂其取之易而守之难乎?昔取之而有馀,今守之而不足,何也?夫在殷忧,必竭诚以待下;既得志,则纵情以傲物。竭诚则胡越为一体,傲物则骨肉为行路。虽董之以严刑,震之以威怒,终茍免而不怀仁,貌恭而不心服。怨不在大,可畏惟人。载舟覆舟,所宜深慎,奔车巧索,其可忽乎!

  君人者,诚能见可欲,则思知足以自戒;将有所作,则思知止以安人;念高危,则思谦冲而自牧;惧满溢,则思江海下百川;乐磐游,则思三驱以为度;恐懈怠,则思慎始而敬终;虑壅蔽,则思虚心以纳下;想谗邪,则思正身以黜恶;恩所加,则思无因喜以谬赏,罚所及,则思无因怒而滥刑。总此十思,弘兹九德,简能而任之,择善而从之;则智者尽其谋,勇者竭其力,仁者播其惠,信者效其忠。文武争驰,君臣无事,可以尽豫游之乐,可以养松乔之寿,鸣琴垂拱,不言而化。何必劳神苦思,代下司职,役聪明之耳目,亏无为之大道哉?

解释可参考http://www.gushiwen.org/GuShiWen_1fe6c15526.aspx

后者出自《诗经·大雅·荡》:“荡荡上帝,下民之辟。疾威上帝,其命多辟。天生烝民,其命匪谌。靡不有初,鲜克有终。”

都是用来劝诫为人为事当善始善终,不可虎头蛇尾。

about podcast

Why #

最近在 V2EX 碰到一个询问有什么 podcast 推荐的帖子,https://www.v2ex.com/t/215749。再次听到了《内核恐慌》这档节目,之所以说再次因为脑子里有关于这个播客的一丝印象,虽然并不记得哪里听说的。

于是特地去看了关于这档播客的信息,一看之下发现有惊喜,https://ipn.li。《内核恐慌》是 IPN 播客网络旗下的节目,顺带着发现了一大波 IPN 的其他节目,那种感觉和发现新大陆有点类似。有意思的是 IPN 的 producer 是李如一,字节社的创始人。一直比较关注电子书阅读,对国内的这家电子书内容提供者有过一些了解,走的是高端路线,售价比较贵,当然品质也很好,一个附带的效果就是数量比较少,最终导致无法在天朝生存下去。挺可惜,但也是必然,并不意外。 ​

  • PS: About the author of IPN
  1. Lawrence Li (不鳥萬如一) https://twitter.com/liruyi
  2. Rio https://twitter.com/RioJot

Podcast Client #

  1. Podcasts by Apple
  2. Stitcher
  3. Overcast From the author of Instapaper. Refer the author’s post for more details. 4.99$ to unlock all features.
  4. Castro 3.99$ https://ipn.li/faq 推荐
  5. Instacast already closed

目前自己使用的是 Overcast,又剁手了4.99$,体验不错,但是无法从 电脑导入已经下载的 podcasts 这点有点麻烦,还是需要自带的,比较适合网络方便或者数据流量充足的用户。

另外,APP Store 这种没办法试用 APP 的机制真的好蛋疼,难道我要购买一堆同类APP再一一申请退款?希望 Apple 不要黑名单我。

...

openconnect/anyconnect VPN 配置

Cisco Anyconnect,是 Cisco 研发的企业级 SSL VPN 解决方案,早期只用于 Cisco 的企业用户,背后是开源技术 OpenConnect,简单来说就是对使用 UDP 的 DTLS 协议进行加密,掉线时自动使用 TCP 的 TLS 协议进行备份恢复,所以与其他 VPN(L2TP/PPTP) 比较稳定,可以保持长时间在线。

Server 配置 #

安装 OCserv #

  1. 下载最新的 OpenConnect Server 版本 ftp://ftp.infradead.org/pub/ocserv/
  2. 编译安装 OCserv tar xvf ocserv-xxxx.tar.xz cd ocserv-xxxx ./configure make sudo make install

配置 OCserv #

  1. 配置证书

    安装证书工具  
    apt-get install gnutls-bin
    cd ~ && mkdir certificates && cd certificates
    

    在此目录下创建一个名为vi ca.tmpl 的CA证书模板,写入如下语句:

    cn = "Your CA name" 
    organization = "Your fancy name" 
    serial = 1 
    expiration_days = 3650
    ca 
    signing_key 
    cert_signing_key 
    crl_signing_key
    

    生成CA密钥和证书

    ...

using travis to automatic build pages and sync to Amazon S3

  1. Register Travis https://travis-ci.org/

  2. add .tavis.yml first, there is no need to get the file completed at this time

     language: python
     python:
         - "2.7"
     before_install:
     install:
         - sudo pip install pelican
         - sudo pip install markdown
         - sudo pip install s3cmd
     script:
         - mkdir output
         - pelican content
    
  3. git push to test if the travis build is successful

  4. sync to Amazon S3 first, you should encrypt privacy information by using travis cli gem install travis, or you can use travis api, which I chosed for the ruby environment really sucks.

    ...

迁移至 Amazon S3

最开始在网上的页面是 vimwiki,之后转移到 Jekyll,基本一直托管在 Github,可恨 Jekyll 对于中文的支持直到 3.0 版本都没有任何改观,所以前段时间简单折腾转移到 Pelican,目前的静态博客生成工具非常多,相比 Jekyll,Pelican 于我而言最大的优势是对中文的支持较为友好,另外 Python 环境相比 Ruby 而言,折腾起来较为简单。当然,游走于各种环境只是为了折腾,和书写其实没有太大关系,也和文题无关。

静态博客最大的优势怕是在于托管的方便了,国内的 空间/CDN/VPS 由于备案制度的存在,不予考虑。Github Pages 的托管其实是最优的选择,廉价的 VPS 无论是稳定性还是速度都不尽如人意,且需要牵扯较大的精力维护,与博客的初衷相去甚远,Linode 之类的优质 VPS 虽然基本不存在稳定和速度的问题,但是于我仅仅用来挂个静态的博客,又显得奢侈。Github Pages 一方面是墙的问题,虽然这一点个人不是太在意,但是在 Code Repo 里放一堆丑陋的 Pelican 生成的 HTML 文件实在是不能忍受。可以说是蓄谋已久,也可以说是心血来潮,总之,用了办个上午的时间搬家到了 Amazon S3 Service.

Amazon S3 Service 是 AWS 服务的一项,AWS 需要信用卡开通,新用户有一年的免费试用时间。S3 的价格非常便宜,作为静态博客托管基本可以不考虑费用:)

官方提供了详细的静态网站托管流程:使用自定义域设置静态网站 但是个人采用的方案和上述流程有一些区别,例如域名解析上述流程采用 Route 53,一些关于权限和域名绑定的小问题记录如下。

权限设置(利用 ref4 AWS Policy Generator 生成): #

{
    "Version": "2012-10-17",
	"Id": "Policy1436229520943",
    "Statement": [
		{
		    "Sid": "AllowPublicRead",
	    	"Effect": "Allow",
    		"Principal": "*",
			"Action": "s3:*",
		    "Resource": "arn:aws:s3:::wogong.net/*"
	    }
    ]
}

域名绑定:Dnsimple #

访问域名: www.wogong.net

...