hanson.blog();

the almost half abandoned procedure :(

Python库中一些与科学计算相关的方法
silentme
hanson2010
numpy.zeros(shape, dtype=float, order='C')
返回1个给定形状和类型的新数组,并用0填充;

random.random()
返回在[0.0, 1.0)范围内的下一个随机浮点数;

random.uniform(a, b)
返回1个随机浮点数,满足条件a <= N <= b(当a <= b时);

random.sample(population, k)
返回从序列population中1个长度为k的取样,序列population中的元素不必是不同的值;

numpy.random.randint(low, high=None, size=None)
返回1个在[low, high)范围内满足离散型均匀分布的随机整数,如果high是None(默认),结果就在[0, low)范围内;

numpy.random.normal(loc=0.0, scale=1.0, size=None)
返回1个从正态(高斯)分布中抽样的数组;

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)
创建1个数组;

numpy.nonzero(a)
返回1个数组的元组,元组的元素数是a的维度数,每个元素是所有非0元素在该维度上的索引组成的数组;

numpy.where(condition[, x, y])
如果没有给出参数x和y,返回condition.nonzero(),即condition是True的索引的数组;如果给出参数x和y(x、y中元素的数量必须与condition中元素的数量一致),返回一个由condition中对应位置元素是True还是False来决定从x还是y中取值的结果组成的数组;

numpy.cumsum(a, axis=None, dtype=None, out=None)
计算数组元素沿1个特定的轴的累和;

numpy.mean(a, axis=None, dtype=None, out=None)
计算数组元素沿1个特定的轴的算术平均值;

numpy.linalg.norm(x, ord=None, axis=None)
计算矩阵或向量的范数。如果x是矩阵,根据不同的参数ord,可以返回7个矩阵范数中的1个;如果x是向量,可以返回无限个向量范数中的1个。

跨平台的文件同步方案——云诺
silentme
hanson2010
替代U盘的文件同步方案有国外的微软SkyDriveboxDropboxSugarSyncmozyADrive等,也有国内的金山快盘腾讯微云百度云盛大网盘Everbox华为网盘云诺够快酷盘微盘等。最近从Everbox切换到了云诺,原因是云诺才是真正的跨平台解决方案,它同时支持Windows、OS X、Linux、iOS和Android平台,而其他的服务现阶段大多不支持OS X。

云诺的规模定当无法与腾讯、百度、盛大、金山这样的大厂商相比,但清新的手绘UI风格让人眼前一亮。当然作为文件同步方案,重要的不是Web用户界面,而是有关客户端、速度等等因素。

对客户端来说,除去可以在MacBook Air上使用这一重要优势外,云诺客户端同样支持设置代理、选择目录同步等功能。云诺目录中还内置了“接收到的文件”、“屏幕截图”和“已发送的文件”三个文件夹,为相应功能提供快捷操作方式。但是要查看同步进度,在云诺中要到右键菜单中查看,稍稍比Everbox的气泡显示方式不直观一些。
yunio 

推荐朋友也使用云诺,朋友说用了一款文件同步方案,迁移到其他服务时成本很高。家里1M宽带的前提下,3.7G的内容断断续续花了大概三个晚上就迁移到了云诺,而第二台、第三台机器指向新目录很快就完成了同步确认。

对了,云诺的免费帐号提供6GB存储空间,完成一些任务还可以得到最多5GB的额外空间。总之,云诺是一款值得一用的文件同步服务。

Find out America, from my experience in San Francisco and Seattle
silentme
hanson2010
09/04/2011
于回程航班UA889上,即将离开阿拉斯加上空,高度10364米,机舱外-53℃

关于交通
西雅图出租车的价格是北京的5倍左右,且很少见到,需要的话一般需要提前叫车。
西雅图市中心的公共交通以King County Metro Transit为主,司机对行动缓慢的老年人非常耐心,遇到有身体障碍人士,司机还会操纵自动踏板帮助轮椅上下,并亲自检查扣好安全设备。巴士前面有专门放置自行车的架子,司机和所有乘客会耐心等待自行车安置好。
从Sea-Tac机场到市中心(最后的4站)有Link Light Rail连接,17分钟路程。在轻轨车站没有任何所谓闸口,有ORCA卡的乘客在入口两侧的机器自行刷卡,单独买票的乘客则径直上车、下车,没有任何干预。对于大家都是“好人”来说这不是很自然?如果有“坏蛋”遭遇保安(Ticketing enforcement)会有什么后果不得而知。

关于租车
如果需要离开城市稍远一些,租车仍然是游客的第一选择。可以选择著名的Hertz、AVIS,也可以选择经济档的Thrifty、Fox。建议先行网上预订,机场一般设有租车公司的租车柜台,出示中国驾照即可Check-in(稳妥起见,可翻译一份英文版备用),选择车型,可选服务(例如GPS)和保险(Coverage),提供信用卡,即可告知车牌号和停车位,在机场乘租车公司的免费巴士到提车点。还车前在半径10英里内的加油站加满油,验车,对于熟悉流程的租客来说一切简单方便。
顺便说一句加油,自助加油机会要求租客输入所来自地方的邮编(Zip code),和选择是否需要洗车,与国内不同。

关于住宿
如果你希望住在Sea-Tac机场附近,那么Red Lion Hotel Seattle Airport将是强烈建议,虽然酒店并非近年新建,但房间够大,够安静,提供5-7分钟一趟24小时服务的机场穿梭巴士,门口设有阿拉斯加航空公司的自助值机设备,一楼设有商务中心(实际只有一台计算机和一台打印机)供住客免费使用。隔壁的The Tully's提供价廉物美的早餐和晚餐,步行5分钟距离的Subway则是24小时选择。

关于机场流程
在美国国内旅行和出境流程极简化,当然,安检除外。出发和国内到达旅客完全混流,出境时除在登机口交回I-94表格外没有任何其他手续。对比首都机场出境流程,需要在T3C扫描登机牌,然后乘坐小火车,依次通过检疫、边检、安检、海关,其中的检疫、海关流程难免不是流于一个政府部门存在的形式。
Sea-Tac机场行李提取区完全对外开放,没有工作人员检查行李提取联,看起来应该没有大量丢失行李的案件。
“911”10周年之际最后说说安检,美国机场的安检由交通部下属的TSA负责,用人满为患,广为诟病描述一点不为过。大量工作人员,脱鞋,X光透视抽查……没有更好的办法前只能如此。

关于航空公司
联合航空是美国的载旗航空公司,相当于美国的国航。有这样几点值得一提:一架757的登机过程,包括登机口广播,均由一位super哥自己搞定,当然在外国撕登机牌不是必须;飞行模式的手机在巡航时允许使用,飞机落地后在跑道上允许接打电话;经济舱CC的年岁好大,实在称不上空姐了,比国航有更甚吧;CC可以留指甲,并涂了鲜艳的指甲油;航班起飞前的录像的第一段是总裁兼CEO说话,而且可以看出是不久前录制的;下机时机长走出驾驶舱向旅客表示感谢。
联合航空通过自助应用实现扫描护照,扫描签证,办理登机手续,并通过半自动流程支持旅客托运行李(柜台外面旅客自助操作添加行李,柜台里面出行李条,然后等工作人员过来帮助栓),为旅客提供了很多方便。但仍不乏一些小缺陷,比如对于多段旅行只有第一段可以通过自助应用添加常旅客号码,SeaTac机场自助设备总是读错护照MRZ(这一点尤其恐怖)。
联合航空登机牌是典型的星盟样式,除Logo外均由白色卡纸打印,分区域登机序号十分醒目,有一行小字显示登机牌来自的打印设备,便于跟踪和维护(行李条也有)。

关于购物
在华盛顿州,大部分消费场合均需另外支付9.5%的消费税(街边热狗除外),这可能是国民做为纳税者的意识更强的原因之一。
百货商场除收银员外只有很少的店员,许多专柜空无一人。
大型仓储超市一般开在郊外空旷地区,只有地面一层。Walmart亲民低价、Target整洁舒适、Costco只向会员服务。一个有意思的事情,Walmart在大门外设有几个露天货架,无人看管,须由顾客自行拿到店内结帐。
小商品几乎清一色Made in China。
美国并非所有商品都是光鲜亮丽,有相当大比例质量差差的货品。

关于劳动力
在非必需时均采用自助服务方式,但在人工服务的场合,比如店员向顾客问好、服务生确认食客是否满意时,服务人员都表现的很专业、真诚,可以感受到他们在服务他人时的快乐。
因此服务人员也会赢得顾客的尊重,在美国不要忘记给帮助你的服务人员一点小费哦。

关于秩序
上下电梯、汽车、飞机时大家共同遵守先到先行、前排先行、交替前进的原则,第10排的乘客会在前9排乘客都已离开的时候才前进。
路面交通的原则与中国相差无几,区别是国人不会照着做。汽车在通过十字路口时,一定是让所有希望过马路的行人通过后才前进,并会向行人招手请行人先行。虽然传说中的在荒无一人的路口停车嘹望描画的有些过分,但在任何路口减速嘹望绝非虚言,包括右转车辆,相信这一点在美国全境均是如此。中国人口太多,如果你想上班也许只能抢行,因此我并不认为其中的差距全部来自于人口素质。

关于安全
西雅图的治安显得并不是太好,当地电视台曾在同一天连续报道珠宝抢劫案、课堂枪击案。
有一次朋友把相机丢在市中心的邮局,回去寻找时服务人员听说此事纷纷咂舌,说“That's not a good idea. People steal it”。还好相机是丢在卖明信片的窗口很近的地方,被店主老爷爷拾起来,因此失而复得。总之,论全民素质美国距离日本也还有差距。

关于健康
肥胖(极度的那一种)在影响相当比例的美国人的健康。
前面提到过公交车司机对于身体障碍人士的照顾,实际上在美国身体障碍人士随处可见,路上、车上、船上,而且大多是先天病症,不免让人想到白种人有某种基因缺陷,或者中国人真是百毒不侵了?

Order at Starbucks
silentme
hanson2010
ENJOY HOT OR ICED
Espresso
a shot of pure, intense coffee flavor
Caffè Americano
rich espresso with hot water
Cappuccino
rich espresso, steamed milk and a deep layer of foam
Caffè Latte
rich espresso, steamed milk and a dollop of foam
Vanilla Latte
rich espresso, vanilla syrup and creamy steamed milk
Caramel Macchiato
steamed milk and sweet vanilla syrup topped with foam, rich espresso and caramel drizzle
Caffè Mocha
rich espresso, bittersweet chocolate sauce and steamed milk, topped with whipped cream
White Chocolate Mocha
rich espresso and steamed milk with white chocolate sauce, topped with whipped cream

FRAPPUCCINO BLENDED COFFEE
Caramel
coffee, sweet caramel, milk and ice, with whipped cream and caramel drizzle
Espresso
a shot of rich espresso and milk, with ice
Mocha
coffee, bittersweet chocolate sauce, milk and ice, with whipped cream
White Chocolate Mochacoffee, indulgent white chocolate sauce, milk and ice, with whipped cream
Dark Mocha
coffee, cocoa, java chips and ice, with whipped cream
Java Chip
coffee, java chips, bittersweet chocolate sauce, milk and ice, with whipped cream

FRAPPUCCINO BLENDED CREAM (COFFEE-FREE)
Green Tea Cream
green tea, milk and ice, with whipped cream
Chocolate Chip Cream
bittersweet chocolate sauce, java chips, milk and ice, with whipped cream

FRAPPUCCINO BLENDED JUICE DRINKS (COFFEE-FREE)
Raspberry Black Currant
tangy raspberry and black currant juices, with black tea and ice
Mango Passion Fruit
tropical mango and passion fruit juices, hibiscus infusion and ice

SIZE
Tall, Grande, Venti

My tweets
silentme
hanson2010
Tags:

My tweets
silentme
hanson2010
  • Sun, 12:17: 'Freedom Riders': Documentary Retraces Bus Rides To End Segregation: http://bit.ly/hXPPDw
  • Sun, 20:31: 刚巧看到在水木的用户资料:注册时间:Sat Apr 21 21:22:41 2001;最近访问:Sun Apr 24 20:13:39 2011。
Tags:

My tweets
silentme
hanson2010
Tags:

锟斤拷
silentme
hanson2010
今天不是聊我新取的ID——虽然它真是很酷的一个,来聊乱码问题了。相信每一个在非英语环境中工作的程序员都受到过乱码的困扰,做为程序员,简单的说,应始终意识到在内存中字符串是以Unicode方式表示的,在I/O时尽量使用UTF-8编码(除了在中文Windows控制台输出时不得已而使用GBK/GB18030),当遇到不可控制的外部系统使用了其他编码方式时,使用恰当的方法进行解码。

Unicode的基本多文种平面(Basic Multilingual Plane,BMP),即UCS-2,共有216=65536个字符,能够满足绝大多数使用需求,另外的补充多文种平面(Supplementary Multilingual Plane,SMP),即UCS-4,更是提供了231=2147483648个地址空间(UCS-4的首位恒为0),实际上在Unicode标准中已经定义了超过10万个字符,提供给全体地球人使用。

考虑以下Java代码:

logger.info("当前JRE版本:" + System.getProperty("java.version")); 
logger.info("当前默认字符集:" + Charset.defaultCharset()); 

String str = "UTF-8字符";
byte[] bytes = {(byte) 0xC0, (byte) 0xC0};

try {
	byte[] b1 = str.getBytes("ISO-8859-1");
	logger.info("使用ISO-8859-1编码:{}", toHexStr(b1));
	logger.info("使用UTF-8解码并转为Unicode字符串:{}", new String(b1, "UTF-8"));

	String s1 = new String(bytes, "UTF-8");
	logger.info("使用UTF-8解码并转为Unicode字符串:{}", s1);
	b1 = s1.getBytes();
	logger.info("使用UTF-8编码:{}", toHexStr(b1));
	logger.info("使用GB18030解码并转为Unicode字符串:{}", new String(b1, "GB18030"));
} catch (UnsupportedEncodingException e) {
	e.printStackTrace();
}


输出为:

22:55:02 [main] INFO : 当前JRE版本:1.6.0_14
22:55:02 [main] INFO : 当前默认字符集:UTF-8
22:55:02 [main] INFO : 使用ISO-8859-1编码:0x550x540x460x2D0x380x3F0x3F
22:55:02 [main] INFO : 使用UTF-8解码并转为Unicode字符串:UTF-8??
22:55:02 [main] INFO : 使用UTF-8解码并转为Unicode字符串:��
22:55:02 [main] INFO : 使用UTF-8编码:0xEF0xBF0xBD0xEF0xBF0xBD
22:55:02 [main] INFO : 使用GB18030解码并转为Unicode字符串:锟斤拷


可以看到在第1节代码中,当对Unicode字符串编码时,遇到ISO-8859-1没有定义的字符,就用0x3F(?)替代了;在第2节代码中,字节串0xC00xC0不是合法的UTF-8编码结果(因为对于2字节的UTF-8编码,第1字节应在C0-DF范围内,第2字节应在80-BF范围内),又被替换为U+FFFDU+FFFD这两个Unicode字符,再用UTF-8编码即变为0xEF0xBF0xBD0xEF0xBF0xBD,在中文环境下输出就出现了著名的锟斤拷(0xEF0xBF为锟,0xBD0xEF为斤,0xBF0xBD为拷)。

而Python语言在字符串编码问题上则显得更安全,在编码/解码时如果遇到不能解释的内容,不是盲目替换,而是抛出异常:

# -*- coding: utf-8 -*-

str = u'UTF-8字符';
bytes = '\xC0\xC0'

try: 
    b1 = str.encode('ISO-8859-1')
except UnicodeEncodeError:
    print u'无法使用ISO-8859-1编码:%s' % (str)

try: 
    s1 = bytes.decode('UTF-8')
except UnicodeDecodeError:
    print u'无法使用UTF-8解码:%s' % (toHexStr(bytes))


输出为:

C:\>python test_string.py
无法使用ISO-8859-1编码:UTF-8字符
无法使用UTF-8解码:0xC00xC0

俺的社会性软件同步关系
silentme
hanson2010
Facebook不再支持Wall imported stories,Myspace.cn旗下的9911从新年开始也ungelivable了,造成俺所使用的社会性软件同步关系跟去年相比有了大幅调整。

最近用刚开放的街旁API写了个把街旁同步到foursquare的工具——CheckInSync,已经加入进来,下面就上图了:


2010年个人总结
silentme
hanson2010
已过了10年的21世纪着实不能再用“未来”修饰了,这10年里,俺的国家从博客元年走到了微博元年,俺的公司从组建到今年十个年头,两手空空的俺在这座城市安了家。

2010年回顾:
随着公司的业务成长,并行的项目不再是掰掰手指就能数清,项目进展不再是站在一起聊聊天就能说清。在实际工作中体会到,领导管的是人心,管理管的是流程和制度。作为基层管理者,同样不应做团队的救火队员,四处忙不迭的处理矛盾,而是提出流程、制度、方法的建设建议,从组织职能的层面看待日常工作;
有幸参加为期2个多月的脱产MBA课程培训、机场业务培训和实地考察,和为期1年的线上管理培训;
家近是一宝,2.2公里的路,恢复骑车。

2011年展望:
工作只是工作,劳动不分贵贱。新的一年不知公司是否会重新启动岗位薪酬绩效体系建设项目,“如果俺是老板”,思考练习题;
最近的感觉总是时间不够用,希望有时间可以看书、上网、写程序,或者出外参加个爬梯,或者奢侈的享受一会儿阳光;
继续围绕Python、Django、MongoDB、GAE的应用开发;
也许可以再诊断一下俺这膝盖的毛病;
和迎接新的家庭成员的到来。