edfward

Github 打卡记

又是总结文…书影音之后果然还是要总结下这一个月写了什么代码。考虑到工作后很可能没那么多自由时间(加上传说中鄙司很拼…),也不强求打卡能坚持下去,不过最好还是有一些 side project 可以在闲暇时间做下去。

这个月的数据是77个 commits,从1月4号坚持到了现在(1月29号)。接下来按主题分类简单概括一下。

ReadKey


这个不多说了,月初的时候在 aws 上部署并在 v2ex 上简单广告了一下。根据 Auth0 的统计累计出现了40个用户(感动…),不过月中旬发现 aws credits 似乎不能用,只好忍痛掐掉了服务器。redis 的数据倒是保存了下来,以后有机会再重启吧。

几个 commit 都是改进小 bug 小 feature 或是添加 README。

FRP


= Functional Reactive Programming

之前断断续续上过一个 Coursera 的 FRP 相关课程,但没有坚持下去,所以月初的时候想看看 FRP 在真正的开发中会有什么样的应用。

于是先 follow 了这个非常赞的 tutorial 并做了个命令行的类似玩具(用的是Node.js 和 RxJS 5 beta)。理解了 stream 之后发现麻烦的地方只是在于如何清空/显示命令行里的内容了。

接下来用 Swift 和 ReactiveCocoa 写了一个异常简单的桌面应用,调用 AlchemyAPI 的图像识别 API 分析本地上传的图片并提取关键词。基本上就是折腾了一下这方面的 tool set(以前0经验,除了稍微熟悉过 Swift),开发本身倒是非常直接。以及类似的,时间都花在了 Xcode 的 Interface Builder 上…

Haskell


跟着 UPenn 的 CIS 194 速成 Haskell。主要就是看 lecture 和做作业,同时把笔记更新到 README 上。

不过这确实是『速成』,打算以后有空还是会读几本相关的书并做点东西来。btw 知乎上有些很赞的回答

Automata


接着就是翻开很早以前没看完的几篇讲 Levenshtein Automata 的博文。先是发现自己对有限状态自动机(Finite-State Automata)的知识基本都还给老师了,于是先去 coursera 上充了充电,看了两章后打算写一个简单的 regular expression tester。趁着手还没生继续用 Swift,实现了不会有 pathological behavior 的 NFA 和 DFA 版本,并小小地实验了一下。 Regular Expression Matching Can Be Simple And Fast 这篇文章也帮了很大的忙。

补充完知识后就继续啃 Levenshtein Automata 了。虽然自动机部分的代码我都可以重用,但是在核心的算法部分它依然有些比较绕脑袋的地方。最终还是依靠这篇文章花了3天实现了出来(不过是简化版,具体可以看 README)。顺便就用它做了个 spell correction 的桌面 app,250 000 词量的字典在允许两个错拼的情况下找到相似的词耗时在 100ms 数量级,还是有很大改进空间的。

也顺便熟悉了 Xcode 环境下测试和 profile 的流程。

个人主页


买到了 edfward.com 的域名,于是架起了博客。又想到自己没有 portfolio,就决定干脆用 github 的 API 把 repo 的信息拿出来当 project。不折腾会死星人这次选择了 Elm (刚好和 FRP 以及 Haskell 有关)做出了 showcase。开发过程并不算愉快,可能不会再用 Elm 写东西了。

(注:edfward.github.io 这个 repo 并不算 contribution 因为它是 fork 一个 jekyll theme 出来的。)