6

西行漫记-day6-壶口瀑布-平遥古城

上午也是早早的就出发,前往壶口,如果不是改道延安恐怕也不会去见识一下传说中的壶口瀑布

More >

5

西行漫记-day5-圣地延安

第五天本来想直接去平遥静静的住上两天的,从影城出来已经是中午了,到平遥也得夜里了,所以改道停一站延安

More >

4

西行漫记-day4-银川

第四天就出发前往银川,本次旅途的最西点,从沙漠一路向西,到乌海前上高速,下午三点左右抵达银川,入住在鼓楼边的7天连锁。

More >

3.2

西行漫记-day3-穿过黄河就是沙漠

第三天的目的地是库布齐沙漠,大自然真的很奇特,黄河北边是草原,南边就是沙漠,路线从包头向南经过一个浮桥一直向西,一路都是县道,虽然路面偶尔有破损,但是基本上都很好走。

在黄河南边那段路上经常找不到信号,中间GPS掉了几次,所以有漂的比较厉害的点,直接无视就好了,反正就是沿着黄河南岸的县道走的。

More >

2

西行漫记-day2-辉腾锡勒草原

第二天的行程比较丰富,因为时间比较充裕,早上8点出发,晚上赶回呼市就行了,很自由。

More >

SONY DSC

西行漫记-day1-直达呼市

第一天的行程比较简单,一路高速,京藏一如既往的堵车就是了。

More >

全程

西行漫记-序

历时7天的旅程在昨晚8点抵达北京后画上了一个句号,7天里一路经过了草原、荒漠、沙漠绿洲、陕北、壶口瀑布、平遥古城,中间四度穿越黄河,沿着走过黄河的大半个几字,独自但不孤独。

本着一个理科生应有的精神,对全程做了GPS记录,忽略那些没找到信号导致的比较奇特的点,全程如下图,最后一段蓝色的是全程高速,没有记录的意义就直接补上去的。

七天共计走了3127公里,其中省道县道国道等非高速占了约1/3,而最有乐趣的就是这三分之一。下一次的行程我估计会把这比例扩大到2/3以上,高速只能单纯用来赶路。

简单汇报一下七天的装备准备

  • 摄影装备:nex3+18-55套头+尼康35定焦
  • 数码装备:GPS导航、车载充电器、各种数据线、手机联通移动各一部(提到这,高速上大家信号差不多,下高速以后的确是移动信号覆盖更广,不过很多地方移动也木有信号)、touch一部(cd听腻的时候换着放歌用)、索尼口袋本、3G上网卡(忘了带电脑的网口转接线,幸亏找大猪借了这个不然一路都只能手机发照片了)
  • 车用:气泵、拖车绳、电瓶线、强光手电、军刀、棍子、机油等一堆其实没有用到但是必须备着的工具,车台(一路守听438.500,各地当地的电台不了解,在北京出发、张家口、呼市时接通过,其他地方基本都没有)
  • 日常:抓绒衣上下各一件备用(在草原上、沙漠上风大的时候和最后一天在平遥的时候用上了),速干内衣,T恤,袜子神马的,洗漱毛巾神马的都不说了。因为一个人,路过的酒店里的一次性拖鞋每次可以带上一双,条件简陋点住宿时刚好有的用了
  • 饮食:4L的农夫山泉3桶(出发带了两桶,呼市补充了一桶),可乐8听,雪碧6听,咖啡4听,啤酒6听,面包三袋(呼市补充了一袋),切片牛肉2片x8袋(天热易坏,两袋涨袋浪费了),士力架,巧克力,糖,火腿肠(都没吃),苹果,饼干(就吃了一盒),碗面3盒(也都没吃)
  • 基本药品:黄连素,感冒胶囊,藿香正气水,维C泡腾片(就这个用上了),西瓜霜,碘酒,止痒凝露

7天油费、过路费、住宿、吃饭等等开销合计在3500左右,住宿约占了1000元,延安没有快捷酒店连锁住的是几天里最好也最贵的,沙漠里那天找了个当地村子里投宿,50已经算贵的了

总体就差不多这么多,下面分天图文记录~

Maemo的开发门槛还是有点高

Maemo 5 的sdk是我目前装过的最费劲的一个手机开发sdk,先不说步骤要分好几步,单是去nokia网站上接受一个什么条款然后装上nokia-binaries这个我就一直到很后来很后来才发现不装跑不了能在Xephyr里显示的运行环境,不过话说虽然我装上了,但我现在还是没跑起来……

不过开始看Qt on maemo后,装了个madde + qt creator 2.0 beta,手机上装个mad-developer,wifi连接,好用多了。但缺点也有啊,就是比如QtMobility,想整到madde里就麻烦了些,我现在的做法是先在scratchbox里装上libqtm-dev,然后把一堆so和include拷到madde里,还没试验是否真的可用。

回过头来再看看android的界面开发,不管是gtk还是qt,不管是maemo还是symbian,不管在界面开发上还是整个程序的开发上都要更费事些,所以这门槛就高了许多,开发成本也就跟着上来了,开发人员们也就懒得为你折腾了。

那么放弃gtk放弃qt放弃html+css来一套全新的就像android那样做?这也不见得是件好事,因为你迫使大量有可能进入这个领域的开发人员放弃自己以前熟悉的来适应你来学习一套全新的开发方式。对于资深一些的开发人员来说,这是一个很不爽的事情。

想做平台,你就得伺候好两类人,一类是用户,他们需要漂亮的界面和好用的程序;一类是开发者,他们要简单和熟悉的开发方式和强大的创造空间。

第一个maemo开发经历

今天给erminig提了个patch 加了个定时同步功能 不得不说 小场景下python很好用 改界面都不用任何多余的操作 改完保存就能测试 也没装sdk 直接在手机上vi python做界面 c做service 似乎也是一种模式

列举网页提速的几个原则和方法

这两天在帮ld的discuz站做优化,不得不说,discuz在这方面还很不够,列一些原则和方法出来,供参考

提速通常从两方面入手

传输提速

  • 下载提速
    • 减少建立链接的次数
      • keep-alive 旨在减少多次握手带来的开销 此外 404这样的错误会打断keep-alive 恐怕没多少人注意过这个问题吧
      • 减少文件数 js,css的合并 多个图片合成一张 旨在减少http header
      • 合理使用expire
    • 减少数据量
      • gzip
      • 混淆精减js 精减css html 要知道 一个两千行的html 光是把换行和每行头的缩进去掉就至少是两三k!
    • 减少服务端处理时间
      • 利用服务端缓存减少服务端io时间 比如squid memcachd
  • 上传提速
    • 把资源类文件放在cookie free的域名上,减少不必要的上行数据

显示提速

  • 减少dom层次
  • 减少页面中间的js

discuz现在最让我头疼的就是资源图片太过零碎和dom嵌套层次太深

理想中的“ipad”

令天仔细看了下ipad的相关文章,发现和我想要的还是有点差距,我想要的是这么一个东西:

  • 便携 这个满足了
  • 待机长 这个也满足了 arm似乎已经成为低功耗的同义词了 而目前用了arm或者待机能和ipad一拼的只有xda了 大屏?平板?似乎都还没出现哦
  • 联网 只满足了wifi和3g 像我这种有线控只要在桌子旁能用有线就坚决不用无线的或许有一天能有合适的外设来满足吧
  • 实体键盘 对于我来说这就是高效工作的代名词 打字要快 大量的一键到位的组合快捷键是提高工作效率的唯一方式 好在这个也满足了
  • emacs 这点最重要 也正是我放弃ipad的原因 至少目前没有任何ipad甚至itouch上能跑emacs的消息 我需要的是一个能让我随时随地工作 工作之余才是娱乐的工具 而不是一个随时随地娱乐 娱乐之余才是工作而且不是高效工作的这么一个玩具

于是,我只能继续等待,嗯,不对,我还有一个选择,就是放下手机,起床,打开我那近3公斤的笔记本:)

以正合,以奇胜

两个产品的交锋比作兵事一点也不过分。蓝海红海长尾,都是得好的诠释。十则围之,五则战之,不若则避之。这些说的是要不要打,在哪和谁打,而怎么打呢?这就是文题所说,以正合,以奇胜。

何谓正合,当头炮马来跳,这就是正合。好比大家都来做输入法,你没拼音,没词组,出词慢,词库少,这能行吗?不行。这就是以正合。当然,你若一心一意去做五笔,这是另外一个战场,暂且不提。把核心的东西做好,做好了你能围别人,做不好那就等着被围吧。这就是以正合。说到这,潜台词就出来了,正合完了,就该是奇胜了。

何谓奇胜,火烧连营,暗度陈仓,这些都是奇胜。再拿输入法来说,前有紫光后有微软,左有智能ABC右有拼音加加,搜狗怎么杀出血路的?互联网词库,皮肤,这就是奇胜。你有别人没有的,同时又是用户喜欢的,这就是奇胜。

然而,往往我们只记住了奇胜,却忘了背后的正合。远的不说,为何会有长征,为何会有星火燎原,图的是正合,只打对的不打贵的,打的起贵咱再打贵的。同样咱们做产品也不能一心想着出奇招,一招定天下。不去练内功,不去练基本招,别说定天下,来个人一招你都接不下。做事业也同样是这样,不能只想学别人一夜暴富,忘了学人家那么多年的苦功。

而如果只正合呢?那就是官渡赤壁的翻版,只不过你翻版的是败方。所以我们做产品,正合之余必需奇胜,两手抓两手都要硬才行。

转战移动互联网

随着android平台的成熟,智能手机混战再起。且不论3G的渗透速度,移动互联网的崛起是必然的趋势。趋势就不多废话了,总之,已经投身到手机和互联网应用的战场了,这里只单纯谈谈这段时间对几大移动平台的体会。

  • Symbian,老牌,市场占有率足够高足够傻瓜培养了足够的用户习惯,开发和GUI设计门槛相对而言有点高。
  • IPhone,这个系统没涉足没法评论,只单纯的从其一贯的作风来看,IPhone和Android/WM最终会和MacOS和Linux/Windows的关系靠近。
  • Android,火,真的很火,看各大手机厂商的动作就知道了,平台的理念有很多优秀之处
  • WM? 我宁愿忘记这个系统,UI比起上述几个系统来说要糟糕的多,开发平台多但多的不精,如果某种东西例如silverlight在WM上能够成熟到Dalvik在android上的程度的话。
  • MTK?BB? 等下,我才刚入门呢。

闲话搁下不提,最近在研究Android,写下对它的一些看法。

Android基于linux,这个没有意外,但是Android抛开了xwindow,也没有试图采用某种流行的GUI解决方案,而是把一个叫Dalvik的东西推上了舞台。

Dalvik是个虚拟机?没错,但它不仅仅是个虚拟机,Google在Dalvik里加入了手机需要的API,加入了进程管理,更关键的是,它把GUI彻底的做进了Dalvik。所以,完全可以这样认为,Android就两层:Linux,Dalvik。

那么,想做界面开发?不好意思,你只有JAVA可选。对广大的其他语言开发者来讲,这是个坏消息,但对Android来说,这却是个好消息。开发语言的单纯性会让基础平台的积累迅速且有效,开发将会更简单更快捷,同样,应用的丰富也会更迅速。

唔,如果Dalvik里的GUI接口是能够从C里调用的话,QT/GTK的移植应该并不是难事,届时,广大其他语言开发者就真的开心了。

export org-mode file in command line

see http://thread.gmane.org/gmane.emacs.orgmode/7675 for more informations

以下是我用来export单个文件的命令

生成html

emacs --batch --eval '(progn (setq user-full-name "Your Name")(setq user-mail-address "Your Mail Address")(find-file "/path/to/file.org")(org-export-as-html 3))'

生成txt

emacs --batch --eval '(progn (setq user-full-name "Your Name")(setq user-mail-address "Your Mail Address")(find-file "/path/to/file.org")(org-export-as-ascii 3))'

Linux下通过USB用WM6手机的GPRS上网

From http://wiki.xda-developers.com/index.php?pagename=Hermes_Modem_With_Linux

但并不是一定得用Hermes这个机器,我用的是Dopod D600,所谓的GENE,按照文中所述编译安装了usb-rndis-lite后,在手机上用Internet共享拨号连接后,NetworkManager就找到了一个新的网络设备,这时候就连接成功了

sawfish-mxflat-chrome

a google chrome like color schema for sawfish using mxflat theme

mxflat theme can be found in sawfish-themes package in both ubuntu and debian.

I made a google chrome like color schema using this theme with settings below.

This is the sample image, the browser is swiftfox with chromifox theme.
sawfish-mxflat-chrome

Also you can make a shadow~
sawfish-mxflat-chrome-shadow

More >

segment fault when dump-emacs

dump-emacs 是个好东西,不过最近老是dump失败
gdb了一下 发现挂在unexec那
google之至http://bugs.gentoo.org/show_bug.cgi?id=221281#c6

The breakage is caused by the “randomize brk()” patch.
See the LKML, http://lkml.org/lkml/2007/10/23/435:

This is known to break older versions of some emacs variants, whose
dumper code assumed that the last variable declared in the program is
equal to the start of the dynamically allocated memory region.

The corresponding kernel parameter is accessible via
/proc/sys/kernel/randomize_va_space, the breakage occurs if its value is 2.

结论为执行下sysctl -w kernel.randomize_va_space=0再dump即可

shell里这么写

#!/bin/bash
MYEMACS=/home/x/bin/emacs-dump
EMACS=/home/x/bin/emacs
cat > /tmp/dump-emacs.el <<EOF
(load "/home/x/.emacs")
(dump-emacs "$MYEMACS" "$EMACS")
EOF

OLD_VASPACE=`sysctl kernel.randomize_va_space|tr -d " "`
sudo sysctl -w kernel.randomize_va_space=0
$EMACS --batch --load /tmp/dump-emacs.el
sudo sysctl -w "$OLD_VASPACE"

即可

用tcpreplay对网络程序进行压力测试

以前tcpdump用的比较多,主要用在诊断的时候。tcpreplay则是把tcpdump记录下来的包原样发回去

这样tcpreplay就可以用来以极快的速度复现记录下来的数据从而实现压力测试,好处在于数据比较真实
More >

jump-or-exec in emacs

去年的时候发在水木里的

类似sawfish下的jump-or-exec

用于查找名为buffer-name的buffer,如果不存在则调用func,如果存在的话切换到这个buffer,如果这个buffer就是当前的buffer且给出了可选参数onfocused的话就把这个buffer作为参数来调用onfocused

因为不会用正则匹配查找buffer,所以只能全匹配。

代码在 http://www.emacswiki.org/cgi-bin/wiki/jump-or-exec.el

没有sawfish的时候怎么用jump-or-exec来切换窗口

最初是因为compiz不成熟,所以一直在用sawfish,最近切到了compiz后就不能用sawfish了,非常好用的jump-or-exec也没了,本来打算自己搞个的,发现已经有人弄过了。地址在 http://pluskid.lifegoo.com/wiki/JumpOrExec.html

通过一个python脚本和wmctrl来实现的jump-or-exec,配合xbindkeys,基本上不用再担心切换wm的问题了

不过python脚本的启动明显没有shell脚本来的快,改写成shell脚本代码如下
More >