8小时之外

近期的一些计划:

有些书早就买了,读了一半就放下了,打算重读下

  • Mahout in Action
  • 信息简史
  • 数学之美
  • 编程珠玑
  • Just for fun

胡乱总结下,一个码农的知识体系应该分几部分:

  • 理论:知道当然很好,不知道也无伤大雅。比如一些硬件相关的东西/操作系统原理/计算机网络/高级的算法/编译原理等等。毕竟不是搞理论研究的。不是说理论化不好,但过于理论化就是本末倒置。当年上学的时候没学好,不过书我还留着,有时间翻翻。
  • 基础:无论什么工作都会用到。例如Java/Python一些语言层面的细节、JVM原理、GC、基本的数据结构和算法、设计模式、Linux的基本概念、bash脚本等等。
  • 工具:因人、因工作而异,对我来说重要的工具包括git/maven/jira/IDE/Sublime,Linux下一些工具(vim/sed/awk/grep/top/netstat/lsof/strace/jstack等)。也包括常用的java类库(guava/slf4j/apache commons/junit/jackson/jodatime/jersey/jetty等),JDK自带的就更不用说了。
  • 系统:跟工作关系很大。对我而言就是hadoop生态系统(zookeeper/hdfs/mapreduce/yarn/hbase/hive/spark/storm)。还有kerberos(目前唯一官方支持的安全机制)。也包括一些在hadoop之上的应用,比如统计、推荐、数据挖掘、机器学习。

只是个大概的分类,肯定还有很多细节。
很多技术都没有列上去,但都能按这个方法归类。

理论/基础对所有人、所有工作都是一样的。
工具/系统看自己的工作方向,因人而异。

这是一个抽象层次由低到高的过程。
有这些知识作为基础,剩下的只需要积累经验了。

切记只取一瓢,技术是无穷尽的。(最近又对Node.js很感兴趣。。。)

同步hexo主题

上一篇文章中使用git在不同机器间同步。
主题作者一直在增加新功能,我偶尔会修改下主题的样式,如何应用到我自己的站点里?
其实就是git的submodule的用法。

以下操作在公司的pc上

1
2
3
4
5
6
7
8
9
10
11
12
# 首先clone我自己的repo
git clone ssh://foolbear@foolbear.me:8086/home/foolbear/git-repo/hexo-theme-next.git
# 添加一个github的remote
git remote add github git@github.com:iissnan/hexo-theme-next.git
# 将作者的一些更新合并到我自己的分支
git pull github master
git checkout foolbear
git merge master
# 肯定会有些冲突,解决冲突后commit
git commit -m "xxx"
# 修改后的foolbear分支push到我自己的repo
git push origin foolbear

以下操作在我自己笔记本上

1
2
3
cd themes/next
git pull
git checkout foolbear

概念上是很简单的,只是记录下。

《Just for fun —— Linus Torvalds自传》

Talk is cheap. Show me the code.

其实这本书大概一周前就读完了,只是一直懒得总结。
技术的书看多了,偶尔看看这种轻松愉快的调剂下,蛮好的。翻译的也不错。

阅读全文 »

hadoop中的lzo和snappy

澄清一些相关概念。

Lempel-Ziv是一种编码方式(类比霍夫曼编码),特点是字典小速度快:http://zh.wikipedia.org/wiki/LZW
在这个理论的基础上实现了很多压缩算法,包括lzo/lzf/lz4/lzw/snappy等等。snappy特殊,不是lz前缀。
http://en.wikibooks.org/wiki/Data_Compression/Dictionary_compression

这里只考虑lzo和snappy,这两个用的比较广泛。
它们的共同特点是压缩比小、压缩/解压快(更注重解压速度)、不耗CPU、会占用一些内存。snappy相对更快。

阅读全文 »

为github pages绑定域名

之前为了给blog绑定域名,折腾了很长时间,记录下。

其实github pages的帮助已经说得很清楚了,有两种方式:

  1. A记录指向github pages的IP,这个IP可能会变;
  2. CNAME记录指向xxx.github.io;

在自己的repo里再加一个CNAME文件即可。注意不要和域名的CNAME记录混淆。

最初我用自己的域名foolbear.me的A记录设置,确实能成功,但要fan| qiang。。。

我以为是github的IP被qiang了,于是换成CNAME方式。
按github的文档,CNAME方式有个问题,只能绑定二级域名,就是只能绑定blog.foolbear.me,而不能直接绑定foolbear.me。我用godaddy和linode的nameserver都测试过,确实无法直接在裸域名上新建CNAME记录。

DNSPod可以。于是把域名的nameserver改成dnspod,直接新建一个@的CNAME记录指向jiangxy.github.io。
绑定确实成功了,但还是要fan| qiang。。。我这才意识到自己的域名被qiang了。。。

只有http的访问被重置,而且是关键字屏蔽。比如http://www.apple.com/foolbear.me都会直接返回链接被重置,接下来几分钟之内都无法访问apple.com。。。

我也很无奈。。。我没干啥啊。。。

好在dns还是正常的,除了http外其他访问方式还正常。

只能重新申请域名并绑定,终于成功了。

这次申请了im的域名。原来的me域名只能绑定到linode上了。

用git同步hexo文章

hexo写作有个问题就是换机器时如何同步。网上有很多文章用dropbox实现的。
相对而言我还是git更熟悉些,所以选择用git在不同机器间同步文章和配置。
而且hexo init后还自动生成了一个.gitignore,说明hexo默认也是偏向于git的。

场景:在一台全新的机器上写blog,步骤尽量简化。

阅读全文 »

只取一瓢

折腾hexo的时候,也想改改主题,自定义些样式之类的。
但是稍微google了下之后,感叹前端技术真是太tm复杂了啊。框架多如牛毛,没几天就有一个xxx.js出来。
而且没有一个统一的标准,没有谁能一统天下,angular/react/backbone/…
还有各种js模板:jade/ejs/swig/…
对我这种java开发,真是太难了。。。只会html,还在用jquery ui做界面,连“业余”都算不上。。。

还有css,真是头疼啊,为啥显示效果总是跟我想的不一样。。。
css还有各种模板语言,也没有个能统一的。

可能最近是前端技术的爆发期吧。

还有Node.js这种颠覆了前端/后端分工的逆天存在。。。

相对而言,后端技术似乎就稳定的多。看看数据库方向,mysql统治了多少年。

但最近大数据方面的框架/产品也不少。
hadoop虽然是事实上的标准,但地位也不是那么稳固。
hadoop每个版本都会加入很多新功能:yarn/HA/cache/…每个新版本都要付出学习成本。
基于yarn也实现了很多计算引擎,tez/spark/storm on yarn/hbase on yarn/…尤其spark发展非常快。
hbase的每个小版本变化都非常大,而且最近发布了1.0版本。

还有很多:sentry/azkaban/hue/hcatalog/ambari/…
还有更多都没听过的东西。

废话这么多,只是想说明,不要妄图搞明白所有的技术
技术太多,很难全部掌握,只会让自己身心俱疲。
更悲剧的是,当你掌握它之后,它可能已经过时了。技术的发展方向是很难预料的。

应该分两个方向:

  • 自底向上:夯实基础。一些基础的理论/语言是比较稳定的。比如算法、数据结构、java。
  • 自顶向下:把握大局,不要拘泥于细节。很多东西我能知道大概的原理,但我没必要深入到源码去求证。

只关注“底”和“顶”,至于中间的东西,可以挑一些重要的深入了解,比如hadoop。其他的,酌情考虑吧。

胡言乱语一番,睡觉去了。

记录下搭建hexo的一些问题

一直想找个地方写些文字,兜兜转转,还是选择了GitHub Pages
试过Jekyll,可惜ruby跟我相性实在不合,折腾了半天也没搞明白。
于是选择了Hexo。使用很简单,js也比ruby亲切些,但搭建过程中还是碰到一些问题,这里记录下。

我的环境是Win7 x64。

阅读全文 »