心随所致,梦想为开。Follow the Dreams & Heart.
非常棒的Python入门书-Dive Into Python
| Print article | This entry was posted by hamo on 2007-07-02 at 17:04, and is filed under 技术讨论. Follow any responses to this post through RSS 2.0. You can leave a response or trackback from your own site. |
No comments yet.
No trackbacks yet.
用Python写东西的笔记
about 1 month ago - No comments
自从最近这次换工作以后,空闲时间一下子变得奢侈起来,博客最近也写得少了,一些喜欢的小东西也无暇顾及。 ——————无聊分割线————————- 一直对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…
下雪,买书,合计555,巧
about 1 year ago - 5 comments
农历2010年第一场雪,不大。 ——————————– 为了给考试增加些压力,把书买了先。目前总计价格555。 1.2010注册结构工程师专业考试应试指南 2.《建筑结构荷载规范》(GB50009-2001)(2006年版) 3.《建筑工程抗震设防分类标准》(GB50223-2008) 4.《建筑抗震设计规范》(GB50011-2001)(2008年版) 5.《建筑地基基础设计规范》(GB50007-2002) 6.《建筑桩基技术规范》(JGJ94-2008) 10.《混凝土结构设计规范》(GB50010-2002) 14.《钢结构设计规范》(GB50017-2003) 18.《高层民用建筑钢结构技术规程》(JGJ99-98) 19.《砌体结构设计规范》(GB50003-2001) 22.《木结构设计规范》(GB50005-2003) 25.《高层建筑混凝土结构技术规程》(JGJ3-2002、J186-2002) 27.《公路桥涵设计通用规范》(JTG D60-2004) 29.《公路钢筋混凝土及预应力混凝土桥涵设计规范》(JTG D62-2004)
Python中获取Javascript渲染后的HTML源码
about 2 years ago - 4 comments
Get Rendered HTML Source In Python 前因: 现在的网页越来越动态和漂亮,大量地用到了Javascript,包括但是不限于Ajax,这样一来直接查看网页源代码的话的,获取到的并不是真正的渲染完成后的页面。这对采集来说,是一个很大的挑战。 在火车头当中,对于Ajax获取的数据的话,可以手动分析页面提取的Ajax的处理url,然后来提取。但是对于复杂的session验证(特别是.NET的网站来说)处理比较困难。 另外一方面,对于javascript生成的页面,火车头也没法直接提取。 思路: 首先明确的是必须获取Javascript渲染结束后的结果。这一点是明确的,具体就是方法就因人而异。 而自己解决Javascript渲染无异于痴人说梦,所以必须借助现有的浏览器核心,比如Gecko、WebKit、IE。如果用Java开发的话可以Jrec这个库,它封装了Gecko。如果其他的语言,而且是在windows平台上的话,最简单的就是用—— COM,用Internet Explorer 提供的com组件。 解决方案: 突破了这层关系,下面的就水到渠成了。 在python下,对IE封装的比较完善而且文档齐全的就是PAMIE(http://sourceforge.net/projects/pamie),它的本意是作为自动化测试工具使用的。 需要注意的是,在页面加载完之后需要留出一定时间来让页面的js代码执行渲染完成后再提取html代码。这个时间需要通过试验确定。 需要注意的是: 前面所述的利用PAMIE来获取渲染后的html内容的方法是可行的,但是缺点是效率非常低。对于最常见的ajax动态内容页面来说,最直接的方法还是构造ajax请求,来获取相应内容。这样效率很高,而且返回数据都是结构化的xml或者json数据,比html更容易处理。
用Python做了个Spider
about 2 years ago - 4 comments
前因: 前些天为TAR写了一个Python的接口插件tar_pytar后,对python的兴致很高。 本博上面最火的文章就是“开源的火车头采集-Wordpress2.7.1免登录发布接口”,看来大家利用采集做垃圾站的热情也很好。 著名的火车头采集器LocoySpider也出2009版了,解决了.Net 3.5不兼容问题,而且采集标签进行了语法高亮。很好很强大。但是免费版不支持任意附件下载功能… 想下载点资料,但是论坛里面一个一个点击太烦… 于是: 自己做一个吧,python做这个肯定很合适,与火车头的功能做个对比: 说明: 私人玩具,无意公开。
为TAR写了一个Python的接口插件tar_pytar
about 2 years ago - 2 comments
TAR(Type And Run)是我一直以来所用的快速启动软件,最喜欢的是它那个快捷键呼出的超级简洁的命令行,而且TAR支持自动提取系统中已经注册的别名,比如excel就可以打开excel,mspaint打开画图。另外TAR支持插件,最常用的就是tar_math,可以对输入命令行的计算式进行计算,给出结果。 当然tar_math也存在缺点,那就是对大整数不支持,而且函数也不够丰富。另外还想增加一个查字典的功能。于是决定给TAR做个插件,取名叫tar_pytar。tar_pytar不只是个插件,而是一个python的接口插件。有了这个插件之后,就可以直接用python给TAR增加功能,而不是重新编译。 官方网站上有插件接口文件找不到了,于是给作者-=GaLaN=-发邮件要来了接口。TAR是拿Delphi写的,不过没关系。 时间紧张,只说明一下tar_pytar通过python接口提供的功能: 完整的math功能,完全可以取代tar_math。因为背后是python嘛。 词典功能,输入查询的英文单词,可以返回中文解释。(从dict.cn查询,同样感谢python的强大) 以后: 作为一个工作的中心,就是一些人对待emacs/tc的态度。
最近读的两本书
about 3 years ago - No comments
其实很不喜欢Java,但是谁让Java历史久积累多呢? J2EE就是一个泥潭,虾兵虾将都拿xml来粘到一起,不晕也晕了。 JBoss Seam 似乎带来了一点点光明,但是还是喜欢C++、Python、PHP。
关于“二维码”的新认识
about 4 years ago - No comments
二维码已经出现非常长的时间了,而且在一些地方也得到了广泛的应用。但是在以前一直以为二维码不过是普通条形码的扩展,代码数据长了一些而已。具体代码背后对应着什么东西,还需要去一个服务数据库查询。今天发现是大错特错了。 “二维码”的容量很大,“可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字”,这就使得存储一段文字,一个图片成为可能。单纯的存储一张名片更是不在话下了。 下面是一点科普资料。 二维条码 / 二维码 什么是二维条码/二维码: 二维条码/ 二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的 “0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理:它具有条码技术的一些共性:每种码制有其特定的字符集;每个字符占有一定的宽度;具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、及处理图形旋转变化等特点。 二维条码/二维码能够在横向和纵向两个方位同时表达信息,因此能在很小的面积内表达大量的信息。 二维条码/二维码的分类 二维条码/二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码。堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成;矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用“点”表示二进制“1”, 用“空”表示二进制“0”,由“点”和“空”的排列组成代码。 1. 堆叠式/行排式二维条码 堆叠式/行排式二维条码(又称堆积式二维条码或层排式二维条码),其编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定,其译码算法与软件也不完全相同于一维条码。有代表性的行排式二维条码有:Code 16K、Code 49、PDF417等。2. 矩阵式二维码 短阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维条码有:Code One、Maxi Code、QR Code、 Data Matrix等。在目前几十种二维要码中,常用的码制有:PDF417二维条码, Datamatrix二维条码, Maxicode二维条码, QR Code, Code 49, Code 16K ,Code one,等,除了这些常见的二维条码之外,还有Vericode条码、CP条码、Codablock F条码、田字码、 Ultracode条码,Aztec条码。 二维条码/二维码的特点 1.高密度编码,信息容量大:可容纳多达1850个大写字母或2710个数字或1108个字节,或500多个汉字,比普通条码信息容量约高几十倍。 2.编码范围广:该条码可以把图片、声音、文字、签字、指纹等可以数字化的信息进行编码,用条码表示出来;可以表示多种语言文字;可表示图像数据。 3.容错能力强,具有纠错功能:这使得二维条码因穿孔、污损等引起局部损坏时,照样可以正确得到识读,损毁面积达50%仍可恢复信息。 4.译码可靠性高:它比普通条码译码错误率百万分之二要低得多,误码率不超过千万分之一。 5.可引入加密措施:保密性、防伪性好。 6.成本低,易制作,持久耐用。 7.条码符号形状、尺寸大小比例可变。 8.二维条码可以使用激光或CCD阅读器识读。 二维条码目前应用: 二维条码具有储存量大、保密性高、追踪性高、抗损性强、备援性大、成本便宜等特性,这些特性特别适用於表单、安全保密、追踪、证照、存货盘点、资料备援等方面。 手机二维码应用: 手机扫描二维码技术简单的说是通过手机拍照功能对二维码进行扫描,快速获取到二维条码中存储的信息,进行上网、发送短信、拨号、资料交换、自动文字输入等,手机二维码目前已经被各大手机厂商使用开发。 手机二维码是二维码的一种,手机二维码不但可以印刷在报纸、杂志、广告、图书、包装以及个人名片上,用户还可以通过手机扫描二维码,或输入二维码下面的号码即可实现快速手机上网功能,并随时随地下载图文、了解企业产品信息等。
1945年的今天,日本投降
about 4 years ago - 2 comments
与此相关的四个日子: 1、日本宣布无条件投降:1945年8月15日 这天日本天皇向日本和全世界广播停战诏书,宣布无条件投降。 而此前得8月14日他已颁布停战诏书,接受《波茨坦公告》。 2、签字仪式举行:1945年9月2日 这天日本天皇和政府代表、外务大臣重光葵及军方代表、参谋总长梅津美治郎,在停泊在东京湾的美国海军战列舰密苏里号的甲板上,签字向包括中国在内的盟国无条件投降,徐永昌代表中华民国在日本投降书上签字确认。 3、抗日战争胜利纪念日:每年的9月3日 1945年9月3日,日本于南京向中华民国政府递交投降书。国民政府旋即规定自9月3日起放假三天,举国欢庆。并通过决议,规定从次年开始,每年的9月3日为抗日战争胜利纪念日。 1949年底,中华人民共和国政务院曾将8月15日作为抗战胜利纪念日。1951年8月13日政务院发布了规定九月三日为抗日战争胜利纪念日的通告。其全文如下:“本院在一九四九年十二月二十三日所公布的统一全国年节和纪念日放假办法中,曾以八月十五日为抗日战争胜利日。查日本实行投降,系在一九四五年九月二日日本政府签字于投降条约以后。故抗日战争胜利纪念日应改定为九月三日。每年九月三日,全国人民应对我国军民经过伟大的八年抗日战争和苏军出兵解放东北的援助而取得对日胜利的光荣历史举行纪念。九月三日不放假”。 1999年,中华人民共和国国务院令第270号《全国年节及纪念日放假办法》(1949年12月23日政务院发布1999年9月18日国务院修订发布)中发布的有关抗日的纪念日有“七七抗战纪念日、九三抗战胜利纪念日、九一八纪念日”。国务院修订颁布的“办法”中沿用了这一修改后的纪念日。这是中国政府以法规的形式确定了抗日战争纪念日。 4、中国战区日本投降签字仪式:1945年9月9日 这一天,中国战区侵华日军投降签字仪式在当时的南京国民政府中央军校礼堂举行,侵华日军总司令、日本投降代表冈村宁次在无条件投降书上签字。中国受降代表为当时的国民政府陆军总司令何应钦。
尽管去做-Getting Things Done
about 4 years ago - 2 comments
Getting Things Done 又名: 尽管去做: 无压工作的艺术 作者: David Allen 副标题: The Art of Stress-Free Productivity ISBN: 9780142000281 [十位: 0142000280] 页数: 288 定价: USD 15.00 出版社: Penguin (Non-Classics) 装帧: Paperback 出版年: 2002-12-31 这是一本关于个人管理和时间管理的书籍。在看ssfighter的博客的时候偶尔知道的。这对于做事经常拖沓的我,或许能稍微学到一点什么。 当当上的中文版已经缺货了。 http://product.dangdang.com/product.aspx?product_id=8716837 中英文电子版下载: Getting Things Done电子书 中文版 下载(DOC) Getting Things Done电子书 英文版 下载(PDF) 内容提要 戴维·艾伦开出的处方救了我的命!一直以来,我几乎淹没在需要跟踪处理的邮件和工作的海洋里,透不过气来。是戴维提供的自我管理模式,让我的心平静下来,并且工作效率也奇迹般地提高了!没有一位e时代的领袖和先锋能忽略这本书的存在! 戴维·艾伦曾说:“始终如一地坚持做一些看似琐碎的小事,长此以往,将会产生重大的影响。”他的见识和具有实用价值的经验令人叹为观止。如果你希望继续保持懒散低效的作风,别碰这本书,如果你希望你的生活变得轻松有序,那就多读上几遍吧。 作者简介 戴维·艾伦是戴维·艾伦有限公司的总裁。作为一名行政管理培训专家和教育家,他拥有20多年丰富的管理经验,被誉为在提高工作效率方面最具建树和影响力的思想家之一,并且一直担任甲骨文公司、世界银行、L.L.Bean户外用品专卖邮购公司和QVC购物频道等企业的高级管理顾问。在本书中,戴维将和你分享在全美巡回讲座以及顶级企业培训(包括微软公司、洛克希德公司和美国司法部等)中已得到验证的成功策略。 目录 致谢 欢迎阅读《尽管去做》 第一部分 通向从容之道…
Trac与Apache的集成(ModPython)
about 4 years ago - 4 comments
在”Trac+SVN的安装与配置(tracd模式)“中介绍了以tracd方式的trac服务器的安装与配置,今天来研究一下Trac通过ModPython来与Apache的集成。 与tracd的方式相比,和Apache的集成有很多优点,比如充分利用apache的强大功能以及ModPython的高效率,便于管理与控制,很方便支持ssl等等。 1. 下载并安装程序 假设已经按照”Trac+SVN的安装与配置(tracd模式)“中的说明安装好了Trac。如果没有请参考安装 Apache-2.0.59:如果选择2.2,注意下面的ModPython的版本要对应 ModPython-3.3.1:这里注意选择与apache和python对应的版本,安装过程中会要求选择apache的安装目录,并且自动把mod_python.so复制到modules目录 2. 配置 配置ModPython 在apache的httpd.conf中加入下面一行: LoadModule python_module modules/mod_python.so 配置trac 在apache的httpd.conf中加入下面内容: <Location /trac> SetHandler mod_python PythonHandler trac.web.modpython_frontend PythonOption TracEnv F:\trac\proj1 PythonOption TracUriRoot /trac </Location> 然后就通过http://localhost/trac来访问 3. 下一步工作 配置Authentication 参考资料: Trac官方:TracModPython
