Sunday, October 27, 2013


我已读完了Rachael 写的很多篇章,有种让人身临其境之感,试译一段如下:
 
2013年9月22日。Tahoe湖之南
 
清晨醒来时,碰上了今年的第一场雪,那真是一个完美的早晨。天空是明丽的蓝,整个世界都在闪闪发亮。云层消散后我看到了一个广阔的世界,周围的岩石峭壁,它们只是被一层薄薄的积雪覆盖着。地面积下的清新雪迹让我们得以察知是与谁为邻:有鹿、有兔子、有小灰狼、还有美洲豹、还有熊经过的印迹。看起来像是有位熊妈妈与它的两只幼崽在这儿嬉闹过,它们在这个早晨还真是有一段愉快的时光啊。这清新的薄雪给这大山带来的,是完全不一样的、绝对是令人赞叹的景象哪。白天里我们穿越瑰丽的高山,傍晚时分天空又闪耀着金黄的云彩,就像是在火焰上舞蹈一般。太阳下山后不久,我们听到一群丛林小灰狼的歌唱,那真是美丽得令人流连忘返。在星空下露营,看着月亮升起时我们正在分食着豌豆汤。夜晚很冷,但在任何有选择的时候我总是喜欢露营,看见星光闪耀,世上再没有比这更好的方式入眠了。
 
http://rachelandbennyhikethepct.blogspot.com/2013/10/south-lake-tahoe-to.html

Wednesday, September 25, 2013

Hybrid Running 32bit applications with 64bit OS kernel

对于浏览器内经常开到40以上的标签页来说,64位程序的浏览器占用内存太多,动辙数G的物理内存消耗。 浏览器内的Flash插件也是消耗内存的大户。

解决办法是以32位浏览器来代替运行,但在64位OS下又要安装multilib库,同样的库文件安装两份, 对于SSD硬盘的容量来说又要消耗不少空间。

正好硬盘上另一分区有以前残存的一个32位Ubuntu,借壳来运行32位程序倒是不错。

# mount /dev/sda6 /mnt/sda6
# mount -o bind /home /mnt/sda6/home
# mount ... for proc sysfs /dev ...
sudo chroot /mnt/sda6 su -l user
/opt/google/chrome-26/google-chrome --extra-plugin-dir=tmp/firefox/browser/plugins

最终得到一个浏览器UA如下:

User-Agent: Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.43 Safari/537.31

说起32位程序它不能利用64位CPU的所有寄存器,效率又有所不足,理想的解决方案应该是x32,目前看起来这个方案Intel也是也出台好几年了,但似乎没什么发行版跟进,毕竟重编译所有的库所有的应用程序这工作量实在不小,虽然它能被证明比纯32位和纯64位运行都快,但市场容量有限哪,人们对PC的兴趣转移走了也是重要的原因。现有的64位和32位能work就行。

Thursday, February 07, 2013

SVLUG talk on Feb6, 2013

http://distrowatch.com/dwres.php?resource=popularity 昨天有人提到 Ubuntu老矣,是因为 Canonical 已经走了歧途, 并举例 distrowatch 为证,最近一个月、最近三个月、最近六个月、最近12个月,关注度最高的一直保持在 Linux Mint, 这个发行版做得不错, 两年坚持使用 Gnome3的体会:桌面还是不错的,坚持使用, every single day 的使用,工作以及生活只启动此系统;我喜欢常按 Super键,给大家做会议演示时呼出平铺的窗口,从 Applications 中找出需要的应用程序,界面华丽。不过 gnome-shell 还是有泄露内存的嫌疑,每日使用只 suspend/resume 从来不关机的情况下,在连续七天以上之后 gnome-shell 在RSS中显示使用超过500M物理内存,这是 x86_64 的情况,可能是内存指针用得疯狂啊。workaround 是kill掉再启一个 gnome-shell. 下一次安装时,桌面还是用 i686 比较省点内存吧,64位模式下连 Xorg 也常常用到100多M内存,而32位下只需40M;有了4G物理内存,一般不用swap,但Chromium中的网页开到40个以上时,有点紧张,可以选择性kill掉一部分chromium进程 $ ps u -e --sort rss $ ps u -e --sort pcpu Arch/Gentoo 用到一定程度时,该安装的程序都装好了,渐渐地不再滚动,只能定时去 refresh 新的 distro, 不过两年不短了,这是一个定时强迫去接受和发现新的发行、新的应用的好时机;短暂地离开,是为了更好的前行,了解熟悉到一定程序,随时都可以回来的 最后提到 freebsd dying, 因为 fund 逐渐消失,开发人员都逐渐 廉颇老矣、、 sigh ...

Monday, August 06, 2012


Got an eSATA / USB3.0 Dual Bay HDD Dock:
  1. http://www.vantecusa.com/en/product/view_detail/494
  2. http://www.amazon.com/gp/product/B007XJIYRC/
The first impression is incredibly both bay cannot work at same time, then I found it's actually because of CONFIG_SCSI_MULTI_LUN not default enabled: under USB mode, the dock is assuming having 2 luns, SCSI-3 standard has REPORT_LUN command but seems this device doesn't responds REPORT_LUN query, so it assumes only 1 lun, found 1 drive only; we can do a manual scan:

echo '- - 1' >/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host12/scsi_host/host12/scan

After that the kernel scsi_mod middle layer would scan lun 1, found the 2nd drive; or could learn from Linux USB Frequently Asked Questions: or add scsi_mod.max_luns=2 to kernel boot parameter

(http://www.linux-usb.org/), "options scsi_mod max_luns=2" (updated to latest linux kernel v3.5)
$ dmesg
[15011.760697] usb-storage 2-1.1:1.0: usb_probe_interface
[15011.760709] usb-storage 2-1.1:1.0: usb_probe_interface - got id
[15011.760806] scsi12 : usb-storage 2-1.1:1.0
[15012.762244] scsi 12:0:0:0: Direct-Access     ST910006 40NS             CC01 PQ: 0 ANSI: 5
[15012.762847] sd 12:0:0:0: Attached scsi generic sg2 type 0
[15012.763368] sd 12:0:0:0: [sdb] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB)
[15012.763787] scsi 12:0:0:1: Direct-Access     WDC WD16 00AAJS-00YZCA0   01.0 PQ: 0 ANSI: 5
[15012.764013] sd 12:0:0:1: Attached scsi generic sg3 type 0
[15012.764584] sd 12:0:0:0: [sdb] Write Protect is off
[15012.764587] sd 12:0:0:0: [sdb] Mode Sense: 23 00 00 00
[15012.765111] sd 12:0:0:1: [sdc] 312581808 512-byte logical blocks: (160 GB/149 GiB)
[15012.765865] sd 12:0:0:0: [sdb] No Caching mode page present
[15012.765871] sd 12:0:0:0: [sdb] Assuming drive cache: write through
[15012.766619] sd 12:0:0:1: [sdc] Write Protect is off
[15012.766625] sd 12:0:0:1: [sdc] Mode Sense: 23 00 00 00
[15012.767612] sd 12:0:0:1: [sdc] No Caching mode page present
[15012.767618] sd 12:0:0:1: [sdc] Assuming drive cache: write through
[15012.769723] sd 12:0:0:0: [sdb] No Caching mode page present
[15012.769726] sd 12:0:0:0: [sdb] Assuming drive cache: write through
[15017.751786] sd 12:0:0:1: [sdc] No Caching mode page present
[15017.751795] sd 12:0:0:1: [sdc] Assuming drive cache: write through
[15022.187904]  sdc: sdc1 sdc2 < sdc5 >
[15022.216575] sd 12:0:0:1: [sdc] No Caching mode page present
[15022.216580] sd 12:0:0:1: [sdc] Assuming drive cache: write through
[15022.216584] sd 12:0:0:1: [sdc] Attached SCSI disk
[15022.222847]  sdb: sdb1 sdb2 sdb4 sdb5
[15022.227795] sd 12:0:0:0: [sdb] No Caching mode page present
[15022.227800] sd 12:0:0:0: [sdb] Assuming drive cache: write through
[15022.227802] sd 12:0:0:0: [sdb] Attached SCSI disk
Well recognized:
$ lsscsi -gv
[12:0:0:0]   disk    ST910006 40NS             CC01  /dev/sdb   /dev/sg2
[/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host12/target12:0:0/12:0:0:0]
[12:0:0:1]   disk    WDC WD16 00AAJS-00YZCA0   01.0  /dev/sdc   /dev/sg3 
[/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1/2-1.1:1.0/host12/target12:0:0/12:0:0:1]
When attached to USB 2.0 ports, it archives 30MB/s sequential read/write performance, not as optimal as eSATA 100MB/s; This USB is actually "Mass Storage" / "SCSI" / "Bulk-Only" should be able to use uas (USB Attached SCSI) protocol, but not sure why uas drive not attached, a forced bind neither work

$ lsusb -d 174c:55aa -v
Bus 002 Device 003: ID 174c:55aa ASMedia Technology Inc. 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x174c ASMedia Technology Inc.
  idProduct          0x55aa 

[...]
  Configuration Descriptor:
    Interface Descriptor:

      bInterfaceClass         8 Mass Storage
      bInterfaceSubClass      6 SCSI
      bInterfaceProtocol     80 Bulk-Only
# echo 2-1.1:1.0 > /sys/bus/usb/drivers/usb-storage/unbind
# echo 2-1.1:1.0 > /sys/bus/usb/drivers/uas/bind
write error: No such device
need another time to figure out why.

Monday, June 25, 2012


一月份去洛杉矶的时候顺便walk in进加拿大领事馆办签证,隔天取到。

六月份最近Southwest飞Seattle, 玩一天再Amtrak火车赴Vancouver, 四小时到达,住与 US
Consulate Vancouver (1075 W Pender St) 只隔一条街的 Days Inn (921 W Pender
St); 第二天一早去US Consulate; VO只问了学位情况,我确实没有北美的学位,只能
如实回答 Bachelor from China Mainland, 他说没关系,看了一会材料最后说
Approved, 3工作日取,实际上第二天晚就收到Loomis来信说ready for pickup; 这三
天实际上租车往Banff去了,但没有到达,在Kamloops折返。回来在机场附近 5001
Miller Rd 的 Loomis 办事处取了护照,然后还车去机场租车处。在YVR机场里面找到
了 Pacific Coach 大巴去了Victoria; 再玩一天然后乘 Clipper Ferry 回 Seattle并
入境美国。边境官只把I94移到了新的visa页上;没有换I94, 应该就是传说中的 Auto
Revalidation 吧。最后乘Southwest离开。
整个行程不一定是最优惠的,但在陌生的地方想体验一下各种不同的交通方式:飞机、火车、市内地铁、大巴、轮渡、自驾车。

在加拿大租车期间算是见识了加国有着最疯狂的 truck drivers, 这些大货车经常跑过
来在超车道行驶,当我在双车道山路上(限速100km/h)以120km/h行驶时发现还有truck
试图在左道超过我,我估计它有130km/h; 换Mile算,也就是此truck试图在左道以80迈
超过小车的75迈。我算了让他过吧,在国内老是记得有小车被大卡压住让我有心理阴影
,我减速一点让它快点过吧。最终在 1 West 让我看到了一辆横躺在路中间的大卡。右
边就是急流飞涧哪,还好算它有运气没有掉河里,也没有小车倒霉被它压住。不过整个
路面被阻住了半小时多。

Monday, May 21, 2012

gimp-2.8-screenshoting-is-great.html


Friday, May 18, 2012


一个行尾逗号引发的悲剧

一个设备上运行的http管理界面的online help, 其中有一个help.js定义help页面名称,用于链接管理界面上随处可见的"?", 点击"?"即可直接打开online help并跳转到对应help页面;

var helpMap = {
        none:                                           "Overview.html",
        SystemSummary:                          "SystemSummary.html",
        InventoryCPU:                           "InventoryCPU.html",
        [...]
        ClearConfigs:               "ClearConfigs.html"
};

上个月在这张查找表中添加最末一项,一不小心多写了个逗号;这在C语言数组中很常见,最后一项的行尾逗号可有可无,但写起来比较美观、一致


        ClearConfigs:               "ClearConfigs.html",

本人常用Firefox/Chrome用起来都没问题;直到一个月后某Windows用户用IE打开管理界面,这个也没问题,但尝试online help的时候悲剧了。我记得二月中的一个版本当时为修正支持Chrome问题时测试过IE没问题,为些只能从那一个 good build 开始了二分查找,过程类似于git bisect

最后定位问题在于这个行尾逗号,必须删除。怎么都不敢相信,IE6,IE7,IE8,IE9全都如此脆弱

Sunday, February 12, 2012

从 Santa Clara County 图书馆借来的最新《The Linux Programming Interface》2010年出版




p1







p1