心随所致,梦想为开。Follow the Dreams & Heart.
hamo
This user hasn't shared any biographical information
Homepage: http://www.satwe.com
Posts by hamo
用Python写东西的笔记
Dec 16th
自从最近这次换工作以后,空闲时间一下子变得奢侈起来,博客最近也写得少了,一些喜欢的小东西也无暇顾及。
——————无聊分割线————————-
一直对python很钟情,不过最近很少用,能记得比较完整的程序就是“用Python做了个Spider”,当时在一个Linode的VPS上跑了几个月。最近处理数据时候又重新用python来做,做完之后还是继续感慨它的便利性。
用python的一个最大的优点就是可以快速的迭代式开发,不断的重构,这一点在这次体会尤深。
其中有几次跳跃式的重构如下:
第一次的重构在书写了几个数据段的解析函数之后,决定定制一个规则,然后通过解析规则来处理各种字段。于是有了一个大约20条记录的标签库(后来再加一个文件解析的时候又增加了6行),然后就处理了近30种数据段,而且可以很方便的定制扩充。
第二次重构在输出报告的完成了一个数据段的汇总后,抽象出了一个Report类,完全控制报告的输出。也就有了后来用css+html的报告时候的顺理成章。
另外一次不大的重构,在于利用的简化的有限状态自动机的思想来处理各种特殊情况。当然只是思想而不是一个完整的自动机。 这一条在N年前给sudidi同学的abaqus数据文件提取工具中就大体考虑过,可以说轻车熟路。
后来用配置文件来设置参数,打包exe。从开始学习到成功,大约花了30分钟,代码10行,我爱python。
除去一些修饰性的代码和css样式表,核心代码不到500行。如果用c++的话,代码量至少要翻2倍,时间2倍不止。
Eclipse+PyDev是目前开发python程序的不二选择,除去log外,一个完善的Debug环境还是很赞的。
——————无聊分割线2——————–
有些东西记下来权当笔记,免得以后再找。
1. 文件路径的相关处理
用 os.path 就完全解决所有问题,包括路径拼接、路径拆分、相对路径提取、文件存在性判断、文件遍历、递归遍历等等。相关函数有:
os.path.join
os.path.basename
os.path.exists
os.makedirs
os.path.isdir
os.path.splitext
2. 文件的遍历
目录下的文件遍历有两种,一种是os.listdir,一种是用os.walk。如果需要递归,则后者更为方便。
1: files = os.listdir(proj_dir)
2: for f in files:
3: filepath = os.path.join(proj_dir,f)
4: if os.path.isdir(filepath): continue
5: if f.find('----')>-1:
6: shutil.copy(filepath, self.REPORT_DETAIL_DIR)
使用os.walk则很容易进行遍历:
1: for root,dirs,files in os.walk(proj_list_dir, True):
2: for f in files:
3: pass
3. 文件的复制
对于文件、文件夹、目录树的拷贝删除可以使用shutil相关函数,注意有些条件,比如目标目录不能存在之类。
shutil.copytree
shutil.rmtree
shutil.copy
4. 乱码
如果能用utf-8统一处理是最好,但是如果在window下面,并且和平常文件打交道多的话,可能也需要其他编码。这时候需要注意系统的编码格式。下面这段代码有帮助。
1: default_encoding = 'gbk'
2: if sys.getdefaultencoding() != default_encoding:
3: reload(sys)
4: sys.setdefaultencoding(default_encoding)
5. 配置文件的读写
python内置了ConfigParser,一般的用途足够了。简洁好用。
6. 打包成exe
有时候为了部署方便,而且windows上默认也不会装python,所以打包成一个独立的exe还是相当有吸引力。以前的py2exe已经不维护了,不过现在有更简单的 pyinstaller (www.pyinstaller.org),使用相当简单,支持各种python版本。
需要留意的是,vc9的crt和upx有冲突,可以取消upx选项。
—————-最后的分割线——————————-
写点喜欢的东西还是很高兴,能提高工作效率,从最枯燥无聊的数据工作中解脱出来更高兴.
人生苦短,有限的时间应该花在有意义的吃喝玩乐上,呵呵.
黔驴技穷与强制加班
Nov 11th
在今天,在各个商家铺天盖地的“双11节”的喧闹声中,又一次听到了强制加班的要求,像盆凉水,满是不和谐的声音。
最近的情绪日渐低落,对于无休止的加班,忽然想到了一个词,叫“黔驴技穷”。
偶尔的加班或者一段时间的集中加班,可以认为是赶进度保时间节点。但是无休止的没有尽头的加班,只能说明其他方面存在严重问题。
——————
最近有很多牢骚和不满,具体也不方面写在这个公开的地方。但是,缺少管理经验,夜郎自大自以为是,以外行指导内行,必然导致工作量的无限放大。
还很清楚的记得,在五一的时候谈起。缺少整体规划、缺少架构设计、各自为政的原始开发模式会增加至少20%的开发成本(我承认在人面前的这个数字后面实际上还少说了一个0)。
但是有谁真正关心。心情好的时候解释一句现在结构都定下来了,以后版本再考虑改进,不好的时候就哼哼哈哈过去。
在按下葫芦浮起瓢的状态的时候,提出了个完整的解决方案。但是几乎所有人抵制,即便只是几十行代码的事情。这是一种在创业团队里非常腐臭的味道,不是真正的看方案的优劣,而是所谓的面子。
—————–
加班真的只是唯一的选择么?偏离了正确的路线,在努力也只会越走越远。
工作只有火热的心是不行的,已经有一些失望了。
—————-
但是不论如何,先不要让这些影响自己的心情吧。
以前,在黔中道这个地方没有驴,后来有个人用船运来了一头。可是因为没有什么用处,驴就被放养在山脚下。
一只老虎看到这个庞大的动物,很好奇。它慢慢地靠近驴,这时,驴长鸣了一声,老虎非常害怕,不敢再接近。但是在观察了一段时间以后,它发现驴没有什么特殊的本领,于是又开始在驴的周围走动。驴非常愤怒,用蹄子去踢老虎。老虎发现,原来驴的本领就只有这些了,于是就跳起来,咬断了驴的喉咙,把它吃掉了。
周末公园
Oct 16th
难得的星期天休息,而且天气还这么好。 很久没有看到这么蓝的天、这么好的阳光了。
(1)元大都公园某段,很喜欢这个构图和色彩。
(2)上一张的登高换个角度
(3)秋天的树
(4) 画壁
(5)这张我怎么老想起win98的默认蓝天白云呢
(6) 女儿和外婆
————————–
天气越来越冷了。
什么时候可以舒舒服服地晒晒太阳呢?貌似奢求。
科威特之行(8)-接下来几天
Oct 2nd
2010-10-23至2010-10-28
接下来几天,已经基本上没有了新鲜感。工作紧张忙碌。
受制于当地加工厂的技术水平还有当地采购的困难,方案一再修改。相比于国内的施工环境,在这里施工遇到的困难时相当的大。比UAE还要困难。
每天天亮以后就起床、洗澡、热面包喝牛奶,出发。 不过牛奶很好,没有国内很多牛奶的奶粉味道,烤面包片也不错。 科威特缺水,但是早上洗热水澡的感觉相当好。
科威特之行(7)-The Avenue二期
Oct 2nd
2010年10月22日,星期六
在科威特的日子可以说相当紧张,当地的休息日周五我们没法休息,星期六星期天是工作日。每天需要沟通联络,当然比较大的收获是,随着几次联系,和那个德国鬼子总包顾问和施工方的英国大个子顾问的沟通已经没有太多障碍。技术性的英文沟通还是相对容易很多,日常聊天则是基本没有感觉。
受困于采光顶的设计疑问,我们决定去看看The Avenue的二期是怎么做的。
科威特之行(6)-唯一的一次游玩(下)
Oct 2nd
2010年10月22日,星期五。
在花了1个小时游完科威特塔后,我们返回驻地。GPS路线后面看看还能不能找到,大体上是绕着科威特城外围先向西再向南,然后上Ring.5.
路上的风景有几张。
这是科威特城的几个地标性建筑,名字不知道。科威特塔上可以看到。
中间的塔状建筑随处可见,是清真寺的喇叭塔(我取得名字)。基本功能就是礼拜时间一到,全城的各个喇叭开始放礼拜音乐。最早的可能会是早上4点钟,一天4次还是5次,记不清了。我曾想,科威特不需要防空警报,只要有空袭,这些喇叭的覆盖面足够广。
好像是某银行的总部大楼,又貌似要烂尾。是国内的中建还是谁承包的。国内施工企业在海外赚钱并不太容易。一旦遇到合约陷阱或者其他风险因素,很容易赔钱。其中听到中铁建在沙特项目要赔10亿还是多少(量级没错)(前段时间听说损失转移给国企母公司,剥离上市公司责任,很中国特色)
某建筑,不知名
路人乙,不知道名字,应该是一个有名的地方。
典型场景,拖着游艇出海玩。很多家都有游艇,大大小小。
没错,是公交车。百年难得一遇。
回到驻地吃饭了。楼下的一家中餐馆,4张桌子。老板是东北人,很nice。在科威特已经10年了,赚钱不错。最近要回国。服务员是不是菲律宾人记不清了,会说很简单的几句中文。
关于工作压力
Sep 28th
刚刚开始的这一周的开始算得上一个极限点。面临国庆假期和某些时间节点的压迫,从BOSS开始大幅施加压力。就客观来说,某些工作是必须要时间才能保证的,而且还需要看执行工作的人素质和能力。
面对着工作高压,身体和心理的承受能力都会逐渐的到达临界点,或许会有扛不住的感觉。但是工作,它首先只是工作。或许是为了理想、所谓价值观、或者维持生计,不论出发点是什么,它并不是全部。失去一份工作可能会是巨大的损失,但是如果由此失去快乐或者健康,这种损失更加难以弥补。
所以,工作它只是工作,尽管由此不能陪伴家人,让家沦落为落脚的旅馆。但是工作的压力只是限定在工作之内,根据承受能力来承担自己可以承担的压力。 保持一份好的心情,也不挤占上下午的break time,这是自己能够控制的。每天时间都很珍贵,如果因为工作而太多不开心,太亏。
当然,如果是一份轻松舒畅的工作,那会是很完美。
说到面对压力,一个是留一个是走,没有哪个选择是错的。如果有更好的机会,或许也会支持说,可以考虑换个轻松的工作。即使知道这几乎会失去一些东西到无法适应接受。
————————-
所以从私心出发,或许换一个面对压力的思路是更合理的。有些压力是需要老板承担的,自己需要的只是尽力,而且自己做得已经非常好了。多给自己一点肯定,这些压力只是毛毛雨。
————————
这几天阴天,阴天的感觉好像不错。
还是奢望加班少一点点,至少能有个轻松吃饭的时间。
