Kindle Paperwhite 1代與3代白色版對比

| Comments

如果說2代相對於1代的改進微乎其微,3代在屏幕和配置上的升級是效果顯著的。

從原來的212 PPI升級到300PPI,屏幕像素增加了一倍,加上對比度的提升,顯示效果相對1代的變化還是相當明顯的,文字更加犀利。內存從256M增加到512M,操作流暢度也有較大的提升,尤其是在用輸入法的時候,已經可以基本流暢的輸入了。

然而3代剛推出的時候我還是沒有換。一方面以上所說的提升和價格的增量並不匹配。另一面,前代在外觀和材質上有很大的問題。

首先是顏色,黑色稍微粘上點灰就很明顯,對於像我這樣的強迫症患者,擦灰的時間幾乎和閱讀一樣多。另外,前代的背面採用的是磨砂處理,在乾淨的前提下手感是不錯,不過很容易粘灰,而且粘灰後手感很差,最要命的是,磨砂加上黑色就是指紋收集器!

所以白色版的出現簡直就是一次救贖。白色粘灰後並不明顯,背板採用顆粒較大、質感較硬的做工,手感比前代好很多。加上前面所說的在閱讀體驗上的提升,可以升級了。


本文最早发布在公众号:两司马门下走狗

讀完《史記》

| Comments

之前讀通鑒,用了四年,這次用了七個月。終於是名正言順的兩司馬門下走狗了,哦耶。

史記這本書,說到底還是個人修史,主觀性是很大的。因為坐李陵案,司馬遷是有悲憤的情結的,所以他特別喜歡悲劇英雄,很多名篇都是寫這種人的抒情散文,比如《屈原賈誼列傳》、《項羽本紀》。主觀的愛憎過多,一定會失之客觀。所以項羽以一暴君成垓下悲歌,劉邦以一英主成千古屌絲。褒貶無需作假,有所取捨足矣。

另外,史料的真實性是值得商榷的。因為秦始皇的焚書坑儒,六國史書盡毀,司馬遷的史料來源駁雜,有些事情甚至不同章節互相矛盾。比如黃池之會,左傳就只說「遂長吳國」,史記也是照抄這句,究竟晉吳誰做了盟主,還是有爭議的。

史記的成功,在於司馬遷的文採和宏觀的大體真實。魯迅說它是無韻之離騷,因為司馬遷用了大量小說家的筆法寫文章。比如講齊威王的一生,說此人繼位後,好為淫樂長夜之飲,諸侯交侵,相聲演員淳於髡看不下去了,跟威王說,我聽說國中飛來一隻大鳥,三年不飛,三年不鳴,你說這是腫麼了?威王說,這只鳥啊,三年不飛,一飛沖天,三年不鳴,一鳴驚人。於是罷飲宴,召集大臣,殺一人,賞一人,全國肅然。然後發兵四境,奪回失地,齊國大振。了了幾十字,搖人心旌。

然而史實肯定不是這麼簡單,戲劇之所以好看,就在於它將所有出場的人物臉譜化、劇情簡單化。比如講到冒頓單于,主要講了兩件事。

第一件是鳴鏑弒父。依次射野獸、愛馬、愛妾、單于坐騎,確保鳴鏑已有足夠的威信,然後完成致命一擊。

第二件是擊滅東胡。東胡利用冒頓剛繼位的時機,來索要千里馬。冒頓召集臣屬商量,都說馬是遊牧民族的命,不能給。冒頓說,不能因為一匹馬讓大家冒生命的危險,妥協了。然後東胡又來要冒頓的媳婦兒,冒頓如法炮製。最後東胡說,有塊廢地也給我們吧。當大家都說反正是廢地給就給了的時候,冒頓拍案而起,說土地是國家根本,雖廢地寸土必爭,然後發兵突襲東胡,一舉成功。

把歷史戲劇化,這就是史記好看的地方。馬未都先生說,歷史沒有真相,只殘存一個道理。對於大部分人來說,歷史細節的真相並不重要,大框架對就可以了,宏觀層面的東西足以讓人受益匪淺,追本溯源的事留給專業做學問的就好。


本文最早发布在公众号:两司马门下走狗

「食其」是什麼?

| Comments

「食其」音「異基」,人名。

讀漢初的歷史,有三個人都叫這個名字:酈食其、審食其和趙食其。這似乎在當時是個很流行的名字,儼然就是漢代的麗麗、芳芳啊。

這兩個字為什麼念這個音?又是什麼意思?

《康熙字典》里只是明確了兩個字的讀音,並沒有解釋和考證出處。

《史記索隱》說:「食音異。酈、審、趙三人同名,其音合並同,以六國時衛有司馬食其,並慕其名。」意即出自戰國時衛國司馬食其,後人因為仰慕此人,就取他的名字來用。此外比如司馬相如因為仰慕藺相如而改名也是一例,宋人王楙在《野客叢書》里也持這個觀點。

也有人說出自子路所說「食其食者不避其難」。子路做衛國貴族孔悝的家宰時,衛國發生政變,孔悝被劫持,子路聽說後隻身赴難,在打鬥過程中帽子被打掉,說「君子死,冠不免」,在丟下兵器扶帽子的時候被殺。子路去救孔悝時說的這句話,簡單說就是吃人嘴短。然而食字在發yi音時並沒有吃的意思,所以這種說法當是附會。

比較來看,《史記索隱》的說法最靠譜,但是也沒有從根本上解釋清楚這個名字的意思。不過考慮到先秦人名普遍比較樸拙和文、言異路的因素,這個名字應該出自當時的口語或方言,只是寫到書上時拿「食其」兩個字做假借。


本期封面:我的貝克利要🌼了

本文最早发布在公众号:两司马门下走狗

兩司馬門下走狗創刊號

| Comments

算是開始玩自媒體了麼?

如果從寫博客算起,十年前就算了。從一開始和大多數人一樣,把博客當成公開日記寫,到後來很快明白博客的定位,我的自媒體時代很快從0.1升級到1.0。

後來,因為博客托管網站的所見即所得編輯器生成的HTML代碼格式太死板,自己定義了一套簡單的標記,然後寫了個轉換程序,然而沒過多久就發現,已經有了類似的東西–輕量型標記語言。

很快,托管的服務已經不能滿足個性化要求。自然而然地,就有了獨立博客。這算是我的自媒體2.0時代吧。

就這樣一直持續了很多年。內容基本上是日常的總結和筆記,總之是給自己看的成分居多。

公眾號怎麼定位呢?首先應該是寫給別人看的,所以不能過於自由,想什麼時候寫什麼時候寫,有時候一月一次,有時候一月幾次,有時候幾個月不來一次(😱)。其次應該是個專欄,所以主題應該集中,不能想寫什麼寫什麼。

那麼寫點啥呢?在一個理工宅少得可憐的愛好里,翻翻故紙堆是唯一比較能算得上文藝的東西了。其實在接觸電腦之前,我一直是想學考古的(💀),現在看來其實人還是最好不要忘了初心(😳)。

好了,都閃開,我要進(kai)入(shi)3.0時(zhuang)代(bi)了!


本文最早发布在公众号:两司马门下走狗

Kindle Lazybones: Control Kindle From Your Phone

| Comments

Kindle Lazybones

 .-.     _
(   `. .' )
 `\  `  .'
   |   |
   |   |
   | 66|_
   |  ,__)
   |(,_|
   | | 
   | \_,
   |   |
   |   |
 .'     \
(    ,   )
 '--' '-'

Remote controlling utilities for Kindle.

Feature

  • Flip over Kindle with your smartphone.

Issues

  • Currently only Kindle PaperWhite is supported, PW2/PW3 are not yet.
  • Kindle still goes to sleep after 10 minutes, a temporary solution is running the searchbox command ~ds to disable screensaver, but only a restart can resume it. The other way is changing 10 minutes to longer by modifying /etc/kdb/system/daemon/powerd/t1_timeout, but it’s readonly although I’ve run mntroot rw.
  • Button sizes won’t be adjusted correctly when the orientation of Android smartphones changes (from landscape to portrait or vice versa), a temporary solution is refreshing the page. iOS devices don’t have this problem.

Project Architechture

  • kindle/ Server-side files for Kindle.

User Guide

Jailbreak Kindle

Jailbreaking Kindle allows you to access its operating system.

For how to do that, refer to Kindle 5.6.5 越狱教程:支持所有 5.6.5 固件 in chinese or 5.6.5 Jailbreak (closed-kindle) – released! in english.

Install KUAL, MRPI and USBNetwork

KUAL is an application launcher for Kindle, MRPI is a package installer plugin for KUAL and USBNetwork is a package which provides SSH service for Kindle.

For how to do that, refer to Kindle 5.6.5 越狱插件资源下载及详细安装步骤 in chinese or the following in english:

Install Python

As this project is mainly written in Python, so refer to FW 5.x ScreenSavers Hack.

Open Access to Port 8080

Lazybones communicates with remote controllers on port 8080, so add the following line to /etc/sysconfig/iptables:

-A INPUT -p TCP –dport 8080 -j ACCEPT

Install Lazybones

Put kindle/ under /opt/ and rename it to lazybones.

As Kindle uses Upstart to handle system startup jobs, run the following command to make Lazybones run automatically on OS startup:

1
cp /opt/lazybones/etc/upstart/lazybones.conf /etc/init/

Usage

Restart Kindle, enable WIFI and it should works.

Type ;711 in the search box in Kindle and press Enter, this shows its WIFI infomation, find the IP address (assuming that’s 192.168.1.103) and visit http://192.168.1.103:8080 on your smartphone.

奇怪的決戰

| Comments

前兩天讀史記王翦列傳,覺得秦楚的決戰很奇怪。

王翦果代李信擊荊。荊聞王翦益軍而來,乃悉國中兵以拒秦。王翦至,堅壁而守之,不肯戰。荊兵數出挑戰,終不出。王翦日休士洗沐,而善飲食撫循之,親與士卒同食。久之,王翦使人問軍中戲乎?對曰:「方投石超距。」於是王翦曰:「士卒可用矣。」荊數挑戰而秦不出,乃引而東。翦因舉兵追之,令壯士擊,大破荊軍。至蘄南,殺其將軍項燕,荊兵遂敗走。秦因乘勝略定荊地城邑。歲余,虜荊王負芻,竟平荊地為郡縣。

稍微有點軍事常識就知道,防守方最好的辦法是堅守不戰,在自己的地盤上,對方的後勤補給要比自己困難得多,一旦補給不繼,軍心必亂,勢必撤兵,這時候再追上去打,勝算很大,也就是所謂以逸待勞。比如秦趙長平之戰,一開始,廉頗先用小股部隊跟秦軍接觸,一看打不贏,馬上收縮防線,避免決戰,搞得秦軍進也不是、退也不是,軍力損耗極大,不得以只好用反間換掉廉頗。

所以戰爭中的進攻方是處於劣勢的,要扭轉不利的態勢,就要把主動權握在自己手裡,所以一般會用反客為主的辦法。雖然我是進攻方,但我不著急進攻你,讓你自己沈不住氣來打我,這時候攻守易形,我成了防守方,你成了進攻方,形勢就對我有利了。

所以王翦反客為主是正常的,項燕急著打就很奇怪了。老項家累世將門,項燕沙場宿將,不可能連常識都不懂。

也許唯一合理的解釋是楚國國力衰敗,撐不下去了。

以前秦國伐楚很困難,因為楚國西有江漢之險,北有諸夏扞蔽。不過自白起破鄢郢,江漢天險盡失;自三晉覆滅,中原逐鹿之勢已成。秦國伐楚,後勤補給已經不是問題。

另外,讓秦國擁有支持百萬級滅國戰役能力的,還有伐蜀的決策。自商君變法,秦國勢平地起飛,此後相當長的一段時間,秦國雖說是戰國首強,但也不能佔據壓倒性的優勢,直到秦滅六國前的三十年,還有信陵君收天下之兵扣關攻秦的事。戰爭不是戰鬥,決定成敗的主要還是國力。李信的二十萬大軍覆滅後,秦國可以馬上再把六十萬人送上前線,這個國力,不贏沒有天理。所以司馬錯論伐蜀,同時擁有關中、蜀中兩塊天府之國,是秦國國力質變的關鍵。

這個時候的楚國,已經是冢中枯骨。在秦國連年的攻勢下,大片國土淪喪,鄢郢破而遷陳,三晉亡而遷壽春,幾十年間,顛沛流離,沒有喘息的機會,靠吃戰略縱深的老本苟延殘喘。所以在這次決戰之前,可能國力已經難以為繼了,但是楚國自己也知道八百年國運繫於這一戰,所以不得不起傾國之兵應戰。空虛的國力和浩大的戰爭消耗最終迫使項燕選擇速戰速決,戰還有一線生機,不戰只能坐以待斃。

Alfred-pushbullet: Push a Text to Your Phone

| Comments

Pushbullet workflow for Alfred.

Features

  • Push a text to another device.

Installation

  1. Download the latest release and rename it to pushbullet.alfredworkflow.
  2. Double click it to import it into Alfred.
  3. Double click the “Run Script” button and replace “ACCESS_TOKEN” and “DEVICE_NAME” according to your pushbullet settings.
  4. Activate alfred and input “push blablabla”, then press enter.

Author

base64decode IkRvbmllIExlaWdoIiA8ZG9uaWUubGVpZ2hAZ21haWwuY29tPgo=

Download

https://github.com/xbot/alfred-pushbullet/

Linux下做Mac OSX安裝U盤的步驟

| Comments

假設U盤對應/dev/sdb1、OSX安裝包是osx.dmg。整個過程就是提取出一系列文件,然後複制到U盤裏。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 格式化U盤爲hfs+文件系統
sudo mkfs.hfsplus -v EICaptianInstall /dev/sdb1

# 提取和挂載第一個光盤鏡像
dmg2img -p 5 osx.dmg osx.img
mkdir raw && sudo mount -o loop osx.img raw

# 提取和挂載第二個光盤鏡像
dmg2img -p 5 raw/Install\ OS\ X\ El\ Capitan.app/Contents/SharedSupport/InstallESD.dmg InstallESD.img
mkdir esd && sudo mount -o loop InstallESD.img esd

# 提取和挂載第三個光盤鏡像
dmg2img -p 4 esd/BaseSystem.dmg BaseSystem.img
mkdir base && sudo mount -o loop BaseSystem.img base

# 挂載U盤
mkdir usb && sudo mount /dev/sdb1 usb

# 複制一系列文件
sudo cp -r base/* usb/
sudo rm usb/System/Installation/Packages
sudo cp -r esd/Packages usb/System/Installation/
sudo cp esd/BaseSystem.* usb/

注意dmg2img的參數-p表示提取dmg的第幾個分區,似乎不同的OSX版本提取哪個分區也不一樣,判斷方法就是先執行dmg2img osx.dmg,看哪個分區提取得最慢就選哪個。

FastFold:Vim折疊功能的救贖

| Comments

設置Vim的折疊規則爲syntax存在兩個問題。一是如果源碼中有大量折疊區域,在插入模式中輸入會變得很卡。二是剛輸入一個折疊區域的起始符号,後面所有的折疊都會被打開。

第一個問題是因爲Vim的syntax折疊規則處理過于低效。而後一個問題對于所有自動折疊規則都會存在,原因是Vim對折疊的更新過早。

傳統的解決辦法是将折疊規則置爲manual,并在合适的時機重置爲syntax或其它相應規則。但是工作繁複而且往往問題很多。

FastFold是遵循上面所說的方法解決這些問題的插件,不過默認會在所有與折疊相關的時機更新折疊,會導緻相關的操作變慢,例如zc和zo時都會有明顯的卡頓。鑒于其它時機對折疊的更新已經足夠及時,可以通過配置取消受在到明顯影響的時機更新折疊:

1
2
" FastFold隻在za/zA/zx/zX時更新折疊信息
let g:fastfold_fold_command_suffixes =  ['x','X','a','A']

FZF: 又一個文件模糊查詢工具

| Comments

fzf是個獨立的命令行工具,索引速度很快,可以通過fzf-vim配合使用。

特性

功能支持還是比較全的:

—————–+——————————————————————-
Command | List
—————–+——————————————————————-
Files [PATH] | Files (similar to :FZF )
GitFiles | Git files
Buffers | Open buffers
Colors | Color schemes
Ag [PATTERN] | {ag}{5} search result (ALT-A to select all, ALT-D to deselect all)
Lines | Lines in loaded buffers
BLines | Lines in the current buffer
Tags | Tags in the project ( ctags -R )
BTags | Tags in the current buffer
Marks | Marks
Windows | Windows
Locate PATTERN | locate command output
History | v:oldfiles and open buffers
History: | Command history
History/ | Search history
Snippets | Snippets ({UltiSnips}{6})
Commits | Git commits (requires {fugitive.vim}{7})
BCommits | Git commits for the current buffer
Commands | Commands
Maps | Normal mode mappings
Helptags | Help tags [1]
—————–+——————————————————————-

結論

fzf需要在終端中執行,在vim中使用時需要另外啓動一個xterm實例,UI的割裂感很強,而且xterm本身的操性你懂的。另外Tags模式需要兩次回車。所以暫不會用它取代ctrlp和unite。