<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>HYRY Blog</title><link>http://hyry.dip.jp/blogt.py</link><description>家合万事兴</description><lastBuildDate>Sat, 28 Apr 2012 21:38:42 GMT</lastBuildDate><generator>PyRSS2Gen-1.0.0</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>《Python科学计算》相关链接</title><link>http://hyry.dip.jp/blogt.py?file=0588.blog</link><description>&lt;p&gt;今天上网搜索，发现出版社已经开始做一些宣传工作了。下面是相关的链接：&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.docin.com/p-312593782.html"&gt;豆丁网在线阅读&lt;/a&gt;前109页，需要10个豆元。不过即使你没有豆元也可以阅读到&lt;a href="http://www.enthought.com/company/support-team.php"&gt;Eric Jones&lt;/a&gt; 为本书作的序。感谢Eric在百忙中为本书作序，虽然他不懂中文，他还是在通过书中的插图和代码详细地了解本书的内容之后，才开始作序，因此花了不少时间。&lt;/p&gt;&lt;p&gt;&lt;a href="http://book.douban.com/subject/7175280/"&gt;豆瓣网的本书页面&lt;/a&gt;，感谢清华大学出版社对本书的支持和宣传。&lt;/p&gt;&lt;p&gt;下面是本书的封面，我也是第一次看到，感觉很不错：&lt;/p&gt;&lt;p style="outline-width: 0px; margin: 0px 0px 14px; word-wrap: break-word; border-width: 0px; padding: 0px"&gt;&lt;img src="http://img3.douban.com/lpic/s7025859.jpg" alt=" " width="309" height="432" /&gt; &lt;br /&gt;&lt;/p&gt;</description><pubDate>Mon, 26 Dec 2011 19:15:06 GMT</pubDate></item><item><title>好事多磨</title><link>http://hyry.dip.jp/blogt.py?file=0572.blog</link><description>&lt;p&gt;这几天海月爸爸早上一睁开眼睛就看邮箱，看有没有他想要的邮件。他在等一个Python小组的CEO给他的书写的序。今天早上终于有了回音，原因CEO在忙着准备即将在印度举行的会议上要用的发言稿，所以才没有如约完成序。不过总算有了盼头，据说下星期一之前就应该可以把序发给海月她爸了。这本书消耗了海月爸爸两年多的业余时间，海月爸爸说：看着这本书里的内容，他可以想起来它们是在去什么地方玩或在哪个饭店吃饭的时候写的。&lt;/p&gt;&lt;p&gt;虽然海月爸爸知道这本书不会成为畅销书，但他为了在国内倡导大家不要使用盗版软件，而是使用免费的开源软件而做一点贡献，认为出这本书是非常有意义的。 他还说想把这本书的收入捐给中国那些可怜的孩子们和一些Python的会议，我其实希望他把钱捐给身边离他最近的一直为他服务的人。&lt;/p&gt;</description><pubDate>Wed, 30 Nov 2011 09:25:09 GMT</pubDate></item><item><title>Python科学计算习题集</title><link>http://hyry.dip.jp/blogt.py?file=0538.blog</link><description>&lt;p&gt;为了让《Python科学计算》的读者能学以致用，我准备在等待本书出版期间，陆续编写一些习题。每个习题都将有较详细的说明和辅助代码，让读者能够专心于问题的关键点。忙活了一个多星期，目前已经有8篇习题，我个人认为其中有些内容还十分有趣。请感兴趣的朋友们抽一些时间解题试试看，如果有问题可以发邮件给我：ruoyu0088 at gmail.com，或在本书的哲思论坛上留言：&lt;a href="http://www.zeuux.org/group/scipython/"&gt;http://www.zeuux.org/group/scipython/&lt;/a&gt; &lt;/p&gt;&lt;p&gt;为了让读者在这些习题上花费更多的精力，暂时不提供参考答案的下载。&lt;/p&gt;&lt;p&gt;Python科学计算习题集：&lt;a href="scipyex"&gt;http://hyry.dip.jp/scipyex&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;</description><pubDate>Sun, 07 Aug 2011 14:00:57 GMT</pubDate></item><item><title>用Sphinx写书</title><link>http://hyry.dip.jp/blogt.py?file=0535.blog</link><description>&lt;p&gt;写技术书是一件十分费时费力的事情，作者不但需要编写有趣的内容，还需要用标准且美观大方的格式呈现内容。在编写《Python科学计算》一书的过程中，我尝试使用Sphinx、Leo、MiKTeX等软件，拼凑出了一套适合编写技术书籍和文档的编写环境。这本书是关于这个编写环境的一些介绍。&lt;/p&gt;&lt;p&gt;在线阅读版： &lt;a href="sphinxbook"&gt;http://hyry.dip.jp/sphinxbook&lt;/a&gt; &lt;/p&gt;&lt;p&gt;PDF版：&lt;a href="files/sphinxdoc.pdf"&gt;http://hyry.dip.jp/files/sphinxdoc.pdf&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;写书环境下载：&lt;a href="files/books.zip"&gt;http://hyry.dip.jp/files/books.zip&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;font color="#ff0000"&gt;目前写书环境以及本书还在开发和编写之中。 写书环境只能在Windows系统下使用。&lt;/font&gt;&lt;br /&gt;&lt;/p&gt;</description><pubDate>Thu, 28 Jul 2011 07:40:21 GMT</pubDate></item><item><title>《Python科学计算》书稿完成</title><link>http://hyry.dip.jp/blogt.py?file=0532.blog</link><description>&lt;p&gt;《用Python做科学计算》已经改名为 《Python科学计算》&lt;/p&gt;&lt;p&gt;经过几个月的修改，《Python科学计算》的书稿终于完成了。以下是关于本书的一些数据：&lt;/p&gt;&lt;p&gt;历时23个月，622页，262千字，19章，266幅插图，360个实例程序，393份问卷调查。&lt;/p&gt;&lt;p&gt;本书所有插图的索引图：&lt;/p&gt;&lt;p&gt;&lt;a href="files/pydoc_pic.png"&gt;http://hyry.dip.jp/files/pydoc_pic.png&lt;/a&gt; &lt;/p&gt;&lt;p&gt;立志编写本书的博文：&lt;/p&gt;&lt;p&gt;&lt;a href="blogt.py?file=0317.blog"&gt;http://hyry.dip.jp/blogt.py?file=0317.blog&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;</description><pubDate>Sat, 16 Jul 2011 19:23:27 GMT</pubDate></item><item><title>《Python和科学计算》试读版暂停发送</title><link>http://hyry.dip.jp/blogt.py?file=0496.blog</link><description>&lt;p&gt;从去年4月5日发送试读版起，到今天一共收到近350份问卷调查，感谢大家长期以来的支持和鼓励。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;由于目前正在和出版社联系出书的相关事宜，从2011年3月4日起暂停PDF试读版发送。如果审核未通过，我将继续发送试读版，如果通过，敬请耐心等待本书的出版。&lt;/p&gt;&lt;p&gt;如果您对本书感兴趣，可以先打开下面的链接看看：&lt;/p&gt;&lt;p&gt;在线演示：&lt;a href="http://hyry.dip.jp:8000/scipybook/calc/index"&gt;http://hyry.dip.jp:8000/scipybook/calc/index&lt;/a&gt; &lt;br /&gt;实例程序集：&lt;a href="http://hyry.dip.jp:8000/"&gt;http://hyry.dip.jp:8000/&lt;/a&gt; &lt;br /&gt;公开版地址：&lt;a href="pydoc/index.html"&gt;http://hyry.dip.jp/pydoc/index.html&lt;/a&gt; &lt;br /&gt;哲思论坛：&lt;a href="http://www.zeuux.com/group/scipython/"&gt;http://www.zeuux.com/group/scipython/&lt;/a&gt; &lt;br /&gt;视频下载：&lt;a href="http://hyry.dip.jp:8889/scipyvideo"&gt;http://hyry.dip.jp:8889/scipyvideo&lt;/a&gt; &lt;br /&gt;视频电驴下载：&lt;a href="http://www.zeuux.com/group/scipython/bbs/content/4253/"&gt;http://www.zeuux.com/group/scipython/bbs/content/4253/&lt;/a&gt; &lt;br /&gt;土豆网视频：&lt;a href="http://www.tudou.com/playlist/playindex.do?lid=10590221"&gt;http://www.tudou.com/playlist/playindex.do?lid=10590221&lt;/a&gt; &lt;br /&gt;&amp;nbsp;&lt;/p&gt;</description><pubDate>Fri, 04 Mar 2011 10:16:16 GMT</pubDate></item><item><title>《用Python做科学计算》在线演示</title><link>http://hyry.dip.jp/blogt.py?file=0467.blog</link><description>&lt;p&gt;继实例源程序之后，继续学习web2py的用法，终于大致完成了这个在线演示功能。&lt;/p&gt;&lt;p&gt;在线演示：&lt;a href="http://hyry.dip.jp:8000/scipybook/calc/index"&gt;http://hyry.dip.jp:8000/scipybook/calc/index&lt;/a&gt; &lt;/p&gt;&lt;p&gt;这个网站的目的是让用户能通过网页在服务器上运行书中的一些实例程序，并查看计算结果。由于直接使用Python的exec语句执行代码，因此存在安全问题，不能开放在线编写演示程序的功能。&lt;/p&gt;&lt;p&gt;有些演示需要用户输入函数，例如数值积分、函数拟合等等。这些函数也使用exec运行，但是使用了RestrictedPython，并且完全禁止了__builtin__模块，只预先载入了NumPy库中的一些数学函数，因此它的安全性应该是有保障了。&lt;/p&gt;&lt;p&gt;另外如果用户输入的函数或者参数问题，导致计算时间过长时，将会抛出超时异常。这里使用单独的线程运行演示程序，当超过指定的运行时间时，在主线程中让计算线程抛出异常。这段程序参考了下面的地址：&lt;/p&gt;&lt;p&gt;&lt;a href="http://sebulba.wikispaces.com/recipe+thread2 "&gt;http://sebulba.wikispaces.com/recipe+thread2 &lt;/a&gt; &lt;br /&gt;&lt;/p&gt;</description><pubDate>Fri, 05 Nov 2010 20:08:39 GMT</pubDate></item><item><title>《用Python做科学计算》视频教程</title><link>http://hyry.dip.jp/blogt.py?file=0465.blog</link><description>&lt;div&gt;《用Python做科学计算》一书的编写工作已经进入了收尾阶段。主要还有SymPy一章没有编写，实战篇还有若干章节可能需要添加内容。在增加这些内容之前，我准备把精力用在制作视频教程和对现有的内容进行校对上面。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;目前已经制作了NumPy和Traits相关的一些章节。由于访问国内的视频网站速度太慢，因此我将视频都放在自己的服务器上。可以通过下面的链接访问，在Chrome中能够直接播放。如果你的浏览器无法播放，可以点击页面上方的所有下载地址链接。&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;a href="http://hyry.dip.jp:8889/scipyvideo"&gt;&lt;span class="Apple-style-span" style="font-size: 15.8333px"&gt;《用Python做科学计算》在线视频教程&lt;/span&gt;&lt;/a&gt; &lt;/div&gt;</description><pubDate>Sun, 17 Oct 2010 17:37:03 GMT</pubDate></item><item><title>《用Python做科学计算》8月进展</title><link>http://hyry.dip.jp/blogt.py?file=0458.blog</link><description>到目前为止的本书进展情况：&lt;ol&gt;&lt;li&gt;&lt;a href="http://hyry.dip.jp:8000"&gt;《用Python做科学计算》的实例网站&lt;/a&gt; 已经上线。读者可以通过此网站查看本书的最新实例源程序和它们的运行结果图，并且可以对每个程序进行评论。&lt;/li&gt;&lt;li&gt;基本完成的TVTK章节的修改工作。补充了一些OpenCV和NumPy方面的内容。&lt;/li&gt;&lt;li&gt;回答问卷调查的读者数已经超过了200位。&lt;/li&gt;&lt;li&gt;制作了一个介绍本书编写工具的幻灯片：&lt;a href="http://www.google.com/url?sa=D&amp;amp;q=http://hyry.dip.jp/files/scipybook-tools.pdf&amp;amp;usg=AFQjCNE8dy2nxl4aB-VqlZJzKrn_43v2nQ"&gt;http://hyry.dip.jp/files/scipybook-tools.pdf&lt;/a&gt; &lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;8月份的写书计划：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;从明天开始的5连休中，制作一个使用Leo和Sphinx等编写书籍的演示。对目前完成的章节的进行初步校对。&lt;/li&gt;&lt;li&gt;给所有的实例源程序添加简单的说明。&lt;/li&gt;&lt;li&gt;完成Mayavi一章。&lt;/li&gt;&lt;/ol&gt;</description><pubDate>Tue, 10 Aug 2010 19:26:27 GMT</pubDate></item><item><title>《用Python做科学计算》6月进展</title><link>http://hyry.dip.jp/blogt.py?file=0444.blog</link><description>&lt;p&gt;OpenCV一章基本写完成了，有接近40页的篇幅。在编写此章的过程中，发现了pyopencv的几个BUG，已经提交给其作者了。等新版本发布之后，再进行成本章的收尾工作。&lt;/p&gt;&lt;p&gt;接下来在进入最后一章SymPy的编写之前，准备先将其它章节缺失的部分补齐。从下个星期开始：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;完成Chaco一章&lt;/li&gt;&lt;li&gt;合并TVTK和Mayavi章节，完成Mayavi部分，对TVTK部分进行删减&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&amp;nbsp;我将每天在哲思社区的论坛中更新每天的进展情况：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href="http://www.zeuux.com/group/scipython/"&gt;本书在哲思社区的论坛&lt;/a&gt;&lt;/p&gt;&lt;p&gt;由于此社区需要邀请才能注册，如果你有兴趣参加讨论的话，可以给我发邮件：ruoyu0088 at gmail.com，我将发送邀请码给你。&lt;/p&gt;</description><pubDate>Thu, 24 Jun 2010 20:06:57 GMT</pubDate></item><item><title>PyGeo重生</title><link>http://hyry.dip.jp/blogt.py?file=0432.blog</link><description>&lt;p&gt;PyGeo是一个Python的交互式立体几何库，它的作者因事故于2007年去世，到目前为止似乎没有人对它进行维护。由于它使用VPython3和Numerical Python两个已经过时的库，已经无法在Python2.6上运行。&lt;br /&gt;&lt;br /&gt;PyGeo项目地址：&lt;a href="http://pygeo.sourceforge.net/"&gt;http://pygeo.sourceforge.net/&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;几个月前，为了写进《用Python做科学计算》一书，我花了一些时间将其进行改造。实数部分已经改造完毕，目前已经能使用VPython5和NumPy，并且还可以自定义控制面板。&lt;br /&gt;&lt;br /&gt;下载地址：&lt;a href="files/pygeo.7z"&gt;http://hyry.dip.jp/files/pygeo.7z&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;目前已经不打算在书中添加PyGeo方面的内容，等本书告一段落之后，准备写一些关于PyGeo的教程。&lt;/p&gt;&lt;p&gt;下面是使用新的PyGeo制作的激光反射模拟：&lt;/p&gt;&lt;p&gt;&lt;a href='blogt.py?action=album&amp;folder=blogpic&amp;img=ppp.jpg' class='blogimglink'&gt;&lt;img src="blogdb/album/blogpic/ppp.jpg" alt=" " width="500" height="475" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;</description><pubDate>Tue, 25 May 2010 20:36:43 GMT</pubDate></item><item><title>《用Python做科学计算》5月近况</title><link>http://hyry.dip.jp/blogt.py?file=0429.blog</link><description>&lt;p&gt;到今天为止，本书共收到100份问卷调查，历时1个半月。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;5月份添加了SWIG介绍，完善了TraitsUI一章的内容，为matplotlib添加了坐标变换相关的的介绍。其它各章节也有小的改动。&lt;/p&gt;&lt;p&gt;本书正文部分目前已经到了408页， 预计最终成书应该在500页左右。由于本书目前以A4纸张排版，并且尽量少留页面余白，因此如果转为16K纸张的话，可能还能多出几十页。&lt;/p&gt;&lt;p&gt;最近开始为程序和其说明段落之间添加标号，方便读者对照阅读。目前完成了前4章的修改，其效果如下图所示：&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;a href='blogt.py?action=album&amp;folder=blogpic&amp;img=pydoc02.jpg' class='blogimglink'&gt;&lt;img src="blogdb/album/blogpic/pydoc02.jpg" alt=" " width="500" height="389" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;下面是今后需要完成的部分，各章节的校对工作将和编写交叉进行。&lt;br /&gt;&lt;br /&gt;1. OpenCV整章&lt;br /&gt;2. SymPy整章&lt;br /&gt;3. 整理TraitsUI,Chaco,TVTK等章&lt;br /&gt;4. 添加Mayavi的应用程序一节&lt;br /&gt;5. 添加ctypes的基础介绍&lt;br /&gt;6. 添加更多的SciPy子模块介绍&lt;br /&gt;7. 数据和文件一章添加视频图像数据相关的介绍&lt;br /&gt;&lt;br /&gt;从下星期开始编写OpenCV一章，将以pyopencv模块介绍OpenCV 2.1的基础用法，预计篇幅为35页。由于OpenCV过于庞大，这将是一件十分费事的事情，希望能在7月份之前完成。&lt;/p&gt;</description><pubDate>Fri, 21 May 2010 20:17:44 GMT</pubDate></item><item><title>长假写书计划</title><link>http://hyry.dip.jp/blogt.py?file=0416.blog</link><description>&lt;p&gt;黄金周有7天的休息时间，为了不让这几天时间浪费掉，准备完成《用Python做科学计算》一书中的如下章节：&lt;/p&gt;&lt;p&gt;1. 完成SWIG部分，对用C语言编写扩展一章进行校对&lt;/p&gt;&lt;p&gt;2. 将FFT演示程序一章合并到频域信号处理中&lt;/p&gt;&lt;p&gt;3. 完成Mayavi的相关章节，并补充TVTK章节的部分内容&lt;/p&gt;&lt;p&gt;4. 补充traits制作界面一章的部分内容&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;希望能够顺利完成。&amp;nbsp;&lt;/p&gt;</description><pubDate>Wed, 28 Apr 2010 20:59:56 GMT</pubDate></item><item><title>《用Python做科学计算》问卷调查和试读</title><link>http://hyry.dip.jp/blogt.py?file=0406.blog</link><description>&lt;p&gt;本书已出版，请访问&amp;nbsp;&lt;a href="http://www.zeuux.org/group/scipython/bbs/content/52712/"&gt;http://www.zeuux.org/group/scipython/bbs/content/52712/&lt;/a&gt;&amp;nbsp;查看购买网站信息。&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;font size="5" color="#ff0000"&gt;&lt;strong&gt;由于目前本书已经进入出版流程，从2011年3月4日起停止PDF试读版发送，敬请耐心等待本书的出版。&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;如果您对本书感兴趣，可以先打开下面的链接看看。&lt;/p&gt;&lt;p&gt;在线演示：http://hyry.dip.jp:8000/scipybook/calc/index&lt;/p&gt;&lt;p&gt;实例程序集：http://hyry.dip.jp:8000/&lt;/p&gt;&lt;p&gt;公开版地址：http://hyry.dip.jp:8000/books&lt;/p&gt;&lt;p&gt;哲思论坛：http://www.zeuux.com/group/scipython/&lt;/p&gt;&lt;p&gt;视频下载：http://hyry.dip.jp:8889/scipyvideo&lt;/p&gt;&lt;p&gt;视频电驴下载：http://www.zeuux.com/group/scipython/bbs/content/4253/&lt;/p&gt;&lt;p&gt;土豆网视频：http://www.tudou.com/playlist/playindex.do?lid=10590221&lt;/p&gt;&lt;p&gt;&amp;nbsp;通过分析近一个月的留言，以及搜索《用Python做科学计算》在网络上的一些反应，我总结出以下两点：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;用Python做科学计算的潜在读者数量不大&lt;/li&gt;&lt;li&gt;阅读过电子版，对这方面很感兴趣的朋友都愿意购买纸质书&amp;nbsp;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;因此出版此书还有些困难，但是我不会放弃出版的努力。出版时间对我来说不是问题，但是可能会对想尽早读到此书的朋友们造成不便。为了让真正需要阅读此书的朋友尽早能读到，我决定有条件地向读者公开PDF电子版和源程序。&lt;/p&gt;&lt;p&gt;请将下面的问卷调查发送到我的邮箱(ruoyu0088 at gmail.com)，邮件主题中请使用&amp;ldquo;《用Python做科学计算》问卷调查&amp;rdquo;。&lt;strike&gt;我会根据回答情况，将当时最新的PDF文件和源代码发送给你(忙的时候，可能会需要一个星期的时间)。&lt;/strike&gt;&lt;span style="color: #ff0000; font-weight: bold"&gt;请不要将您收到的电子版传到网络上，这样做会影响出版社出版本书的决定&lt;/span&gt;。(《可爱的Python》一书的电子版也有半年的沉默期)&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;1. 本书已出版，您会购买几本？&lt;/p&gt;&lt;p&gt;4. 您会为了学习本书安装并下载Python(x,y)吗？(有400多Mbytes，完全安装之后占用1G硬盘)，或者您愿意自己逐个安装Python的扩展库？&lt;/p&gt;&lt;p&gt;5. 请评价一下您的Python水平？&lt;/p&gt;&lt;p&gt;6. 您主要做哪方面的科学计算，或者对哪些方面感兴趣？&lt;/p&gt;&lt;p&gt;7. 请估计在您的同事、同学或者朋友中，有几位可能会购买本书？ &lt;br /&gt;&lt;/p&gt;&lt;p&gt;8. 您的职业是？&lt;/p&gt;&lt;p&gt;9. 您的姓名、年龄和所在地？&lt;/p&gt;&lt;p&gt;10. 对本书您有何意见或者建议？ &lt;br /&gt;&lt;/p&gt;</description><pubDate>Mon, 05 Apr 2010 20:45:03 GMT</pubDate></item><item><title>《用Python做科学计算》近况</title><link>http://hyry.dip.jp/blogt.py?file=0400.blog</link><description>&lt;p&gt;大约有两个月没有更新《用Python做科学计算》一书的电子版了。这两个月中，本书的内容仍然在持续增改。目前正在考虑出版此书，因此直到解决有关出版方面的问题，电子版将可能一直不进行更新。书出版后，可免费下载书中删除的章节以及源代码。&lt;/p&gt;&lt;p&gt;下面是这两个月更新情况。&lt;/p&gt;&lt;p&gt;编写工具方面：使用Bazaar进行版本管理，编写Leo脚本方便快速输入&lt;/p&gt;&lt;p&gt;书的内容方面：增加VPython，Weave，Cython，HDF5，xlrd，xlwd等内容。增加了几个频域声音信号处理算法。&lt;/p&gt;&lt;p&gt;其他：视频教程缓慢制作中。视频教程将以实例程序的运行演示和一些工具的操作说明为主。由于长期缺乏汉语交流，发现自己的语言表达能力有所下降，录制视频教程比较痛苦。&amp;nbsp;&lt;/p&gt;&lt;p&gt;由于国内的Python用户似乎不多，而且可能许多用户都是以Web开发为主，因此比较担心此书的销量，如果你有兴趣购买此书，或者了解用Python进行科学计算的一些情况的话，请在此留言，过段时间还准备搞一个问卷调查。&lt;/p&gt;</description><pubDate>Wed, 10 Mar 2010 22:12:10 GMT</pubDate></item><item><title>用VPython显示3D汽车模型</title><link>http://hyry.dip.jp/blogt.py?file=0399.blog</link><description>&lt;p&gt;这本来是《&lt;a href="pydoc"&gt;用Python做科学计算&lt;/a&gt; 》中的一个章节，由于最近在考虑出版此书，因此许多更新的内容没有放到在线版本中去。&lt;/p&gt;&lt;p&gt;有朋友询问如何显示3D汽车模型，原来的程序是用pyopengl开发的，由于是公司的项目，不能开源。因此我用VPython重写了显示汽车模型部分的代码。现在将这部分内容提前放出来。包括blender的汽车模型，python源程序以及书中相关的章节。&lt;/p&gt;&lt;p&gt;&lt;a href="files/vpython_car.7z"&gt;下载用VPython显示3D汽车模型&lt;/a&gt;&lt;/p&gt;</description><pubDate>Wed, 10 Mar 2010 19:32:26 GMT</pubDate></item><item><title>Sphinx中文搜索插件</title><link>http://hyry.dip.jp/blogt.py?file=0373.blog</link><description>用Sphinx写文档很爽，&lt;a href="pydoc"&gt;用Python做科学计算&lt;/a&gt; 就是用Sphinx编译的，但是Sphinx的搜索功能不支持中文，究其原因是因为它不支持中文分词，产生的索引文件searchindex.js中没有正确的中文单词索引。进行分词的程序在Sphinx目录的search.py文件中。此程序使用正则表达式将英文单词分出来，因此只需要将其中的两个使用 word_re变量地方替换为中文分词算法即可。&lt;br /&gt;&amp;nbsp;&lt;br /&gt;为了维护方便，我没有直接修改此文件，而是做了一个扩展插件，其源程序如下：&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;pre&gt;# -*- coding: utf-8 -*-
"""
    sphinx.search
    ~~~~~~~~~~~~~

    Create a search index for offline search.

    :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
    :license: BSD, see LICENSE for details.
"""
import re
import cPickle as pickle

from docutils.nodes import comment, Text, NodeVisitor, SkipNode

from sphinx.util import jsdump, rpartition
try:
    # http://bitbucket.org/methane/porterstemmer/
    from porterstemmer import Stemmer as CStemmer
    CSTEMMER = True
except ImportError:
    from sphinx.util.stemmer import PorterStemmer
    CSTEMMER = False

from smallseg import SEG

#testfile = file("testfile.txt", "wb")

word_re = re.compile(r'\w+(?u)')

stopwords = set("""
a  and  are  as  at
be  but  by
for
if  in  into  is  it
near  no  not
of  on  or
such
that  the  their  then  there  these  they  this  to
was  will  with
""".split())


class _JavaScriptIndex(object):
    """
    The search index as javascript file that calls a function
    on the documentation search object to register the index.
    """

    PREFIX = 'Search.setIndex('
    SUFFIX = ')'

    def dumps(self, data):
        return self.PREFIX + jsdump.dumps(data) + self.SUFFIX

    def loads(self, s):
        data = s[len(self.PREFIX):-len(self.SUFFIX)]
        if not data or not s.startswith(self.PREFIX) or not \
           s.endswith(self.SUFFIX):
            raise ValueError('invalid data')
        return jsdump.loads(data)

    def dump(self, data, f):
        f.write(self.dumps(data))

    def load(self, f):
        return self.loads(f.read())


js_index = _JavaScriptIndex()


if CSTEMMER:
    class Stemmer(CStemmer):

        def stem(self, word):
            return self(word.lower())

else:
    class Stemmer(PorterStemmer):
        """
        All those porter stemmer implementations look hideous.
        make at least the stem method nicer.
        """

        def stem(self, word):
            word = word.lower()
            return PorterStemmer.stem(self, word, 0, len(word) - 1)



class WordCollector(NodeVisitor):
    """
    A special visitor that collects words for the `IndexBuilder`.
    """

    def __init__(self, document):
        NodeVisitor.__init__(self, document)
        self.found_words = []

    def dispatch_visit(self, node):
        if node.__class__ is comment:
            raise SkipNode
        if node.__class__ is Text:
            words = seg.cut(node.astext().encode("utf8"))
            words.reverse()
            self.found_words.extend(words)
            #testfile.write(node.astext().encode("utf8")+"\n")
            #testfile.write(u",".join(words).encode("utf8") + "\n")            

class IndexBuilder(object):
    """
    Helper class that creates a searchindex based on the doctrees
    passed to the `feed` method.
    """
    formats = {
        'jsdump':   jsdump,
        'pickle':   pickle
    }

    def __init__(self, env):
        self.env = env
        self._stemmer = Stemmer()
        # filename -&gt; title
        self._titles = {}
        # stemmed word -&gt; set(filenames)
        self._mapping = {}
        # objtype -&gt; index
        self._objtypes = {}
        # objtype index -&gt; objname (localized)
        self._objnames = {}

    def load(self, stream, format):
        """Reconstruct from frozen data."""
        if isinstance(format, basestring):
            format = self.formats[format]
        frozen = format.load(stream)
        # if an old index is present, we treat it as not existing.
        if not isinstance(frozen, dict):
            raise ValueError('old format')
        index2fn = frozen['filenames']
        self._titles = dict(zip(index2fn, frozen['titles']))
        self._mapping = {}
        for k, v in frozen['terms'].iteritems():
            if isinstance(v, int):
                self._mapping[k] = set([index2fn[v]])
            else:
                self._mapping[k] = set(index2fn[i] for i in v)
        # no need to load keywords/objtypes

    def dump(self, stream, format):
        """Dump the frozen index to a stream."""
        if isinstance(format, basestring):
            format = self.formats[format]
        format.dump(self.freeze(), stream)

    def get_objects(self, fn2index):
        rv = {}
        otypes = self._objtypes
        onames = self._objnames
        for domainname, domain in self.env.domains.iteritems():
            for fullname, dispname, type, docname, anchor, prio in \
                    domain.get_objects():
                # XXX use dispname?
                if docname not in fn2index:
                    continue
                if prio &lt; 0:
                    continue
                # XXX splitting at dot is kind of Python specific
                prefix, name = rpartition(fullname, '.')
                pdict = rv.setdefault(prefix, {})
                try:
                    i = otypes[domainname, type]
                except KeyError:
                    i = len(otypes)
                    otypes[domainname, type] = i
                    otype = domain.object_types.get(type)
                    if otype:
                        # use unicode() to fire translation proxies
                        onames[i] = unicode(domain.get_type_name(otype))
                    else:
                        onames[i] = type
                pdict[name] = (fn2index[docname], i, prio)
        return rv

    def get_terms(self, fn2index):
        rv = {}
        for k, v in self._mapping.iteritems():
            if len(v) == 1:
                fn, = v
                if fn in fn2index:
                    rv[k] = fn2index[fn]
            else:
                rv[k] = [fn2index[fn] for fn in v if fn in fn2index]
        return rv

    def freeze(self):
        """Create a usable data structure for serializing."""
        filenames = self._titles.keys()
        titles = self._titles.values()
        fn2index = dict((f, i) for (i, f) in enumerate(filenames))
        terms = self.get_terms(fn2index)
        objects = self.get_objects(fn2index)  # populates _objtypes
        objtypes = dict((v, k[0] + ':' + k[1])
                        for (k, v) in self._objtypes.iteritems())
        objnames = self._objnames
        return dict(filenames=filenames, titles=titles, terms=terms,
                    objects=objects, objtypes=objtypes, objnames=objnames)

    def prune(self, filenames):
        """Remove data for all filenames not in the list."""
        new_titles = {}
        for filename in filenames:
            if filename in self._titles:
                new_titles[filename] = self._titles[filename]
        self._titles = new_titles
        for wordnames in self._mapping.itervalues():
            wordnames.intersection_update(filenames)

    def feed(self, filename, title, doctree):
        """Feed a doctree to the index."""
        self._titles[filename] = title

        visitor = WordCollector(doctree)
        doctree.walk(visitor)

        def add_term(word, stem=self._stemmer.stem):
            word = stem(word)
            if len(word) &lt; 2 or word in stopwords or word.isdigit():
                return
            self._mapping.setdefault(word, set()).add(filename)
        words = seg.cut(title.encode("utf8"))
        for word in words:
            add_term(word)      
        for word in visitor.found_words:
            add_term(word)
               
def load_indexer(self):
    def func(docnames):
        import os.path as path
        print "############### CHINESE INDEXER ###############"
        self.indexer = IndexBuilder(self.env)
        keep = set(self.env.all_docs) - set(docnames)
        try:
            f = open(path.join(self.outdir, self.searchindex_filename), 'rb')
            try:
                self.indexer.load(f, self.indexer_format)
            finally:
                f.close()
        except (IOError, OSError, ValueError):
            if keep:
                self.warn('search index couldn\'t be loaded, but not all '
                          'documents will be built: the index will be '
                          'incomplete.')
        # delete all entries for files that will be rebuilt
        self.indexer.prune(keep)
    return func

def builder_inited(app):
    if app.builder.name == 'html':
        print "****************************"
        global seg
        seg = SEG()
        app.builder.load_indexer = load_indexer(app.builder)

def setup(app):
    app.connect('builder-inited', builder_inited)
&lt;/pre&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;这个扩展插件使用smallseg中文分词库进行中文分词。&lt;br /&gt;&lt;br /&gt;smallseg中文分词库下载地址: &lt;a href="http://code.google.com/p/smallseg "&gt;http://code.google.com/p/smallseg &lt;/a&gt; &lt;br /&gt;</description><pubDate>Tue, 12 Jan 2010 21:06:34 GMT</pubDate></item><item><title>用Python做科学计算有封面了</title><link>http://hyry.dip.jp/blogt.py?file=0365.blog</link><description>&lt;span class="Apple-style-span" style="border-collapse: separate; color: #000000; font-family: Verdana,宋体,Helvetica,sans-serif; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px"&gt;&lt;span class="Apple-style-span" style="color: #333333; font-size: 14px; line-height: 21px"&gt;&lt;p style="border-width: 0px; margin: 0px 0px 14px; padding: 0px; font-family: Verdana,宋体,Helvetica,sans-serif; outline-width: 0px; text-align: left; font-style: normal; font-weight: normal; white-space: normal; line-height: 1.5em; word-wrap: break-word"&gt;终于开始了10天的长假，准备在假期里面好好校对一下《用Python做科学计算》，并完成一些新的章节。&amp;nbsp;&lt;/p&gt;&lt;p style="border-width: 0px; margin: 0px 0px 14px; padding: 0px; font-family: Verdana,宋体,Helvetica,sans-serif; outline-width: 0px; text-align: left; font-style: normal; font-weight: normal; white-space: normal; line-height: 1.5em; word-wrap: break-word"&gt;为了感觉更加正规一些，花了点时间做了一个封面。图中的算式 e**(i*pi)+1的值等于0，是一个经典的数学公式，它将圆周率pi, 欧拉常数e, 虚数单位i, 和整数0和1，通过加法 乘法和幂运算结合起了。希望本书也能起到这种大融合的作用。&lt;/p&gt;&lt;p style="border-width: 0px; margin: 0px 0px 14px; padding: 0px; font-family: Verdana,宋体,Helvetica,sans-serif; outline-width: 0px; text-align: left; font-style: normal; font-weight: normal; white-space: normal; line-height: 1.5em; word-wrap: break-word"&gt;&lt;a href='blogt.py?action=album&amp;folder=blogpic&amp;img=page.jpg' class='blogimglink'&gt;&lt;img src="blogdb/album/blogpic/page.jpg" alt=" " width="353" height="500" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;/span&gt;</description><pubDate>Sat, 26 Dec 2009 13:01:48 GMT</pubDate></item><item><title>一个月统计</title><link>http://hyry.dip.jp/blogt.py?file=0346.blog</link><description>&lt;p&gt;用Google Analytics对【&lt;span class="Apple-style-span" style="font-family: 'Microsoft YaHei'; font-size: 13px; line-height: 15px"&gt;&lt;a href="pydoc"&gt;用Python做科学计算&lt;/a&gt;&lt;/span&gt;】的访问量做了一个月的统计，本站和GAE站合计有786位访问者，1300人次访问，4000次页面访问。&lt;/p&gt;&lt;p&gt;搜索次数最多的关键词是&amp;ldquo;Python 科学计算"和"s&lt;span class="Apple-style-span" style="font-family: arial, verdana, sans-serif; font-size: 12px; border-collapse: collapse; white-space: nowrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; white-space: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px"&gt;cipy"。访问最多的页面是numpy和scipy的介绍。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: arial, verdana, sans-serif; font-size: 12px; border-collapse: collapse; white-space: nowrap; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px"&gt;&lt;span class="Apple-style-span" style="border-collapse: separate; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 16px; white-space: normal; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px"&gt;目前rst的源文件大小共244.7k字节。11月份的编辑重点将放在matplotlib和scipy的介绍部分。另外预计完成一篇关于在数字信号滤波器的应用的章节。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;</description><pubDate>Tue, 27 Oct 2009 22:41:06 GMT</pubDate></item><item><title>scipydoc提供打包下载</title><link>http://hyry.dip.jp/blogt.py?file=0332.blog</link><description>&lt;p&gt;《用Python做科学计算》开始提供打包下载了。而且也有了GAE镜像：&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-sans-serif; line-height: 20px"&gt;请使用下面的链接下载各种打包版本，其中Html打包版本格式最为正确，CHM和PDF版都多少有些问题。&amp;nbsp;&lt;a class="reference external" href="files/scipydoc.zip"&gt;下载Html打包版&lt;/a&gt;&amp;nbsp;&lt;a class="reference external" href="files/scipydoc.chm"&gt;下载CHM版&lt;/a&gt;&amp;nbsp;&lt;a class="reference external" href="files/scipydoc.pdf"&gt;下载PDF版&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;span class="Apple-style-span" style="font-family: -webkit-sans-serif"&gt;&lt;p style="text-align: justify; line-height: 20px"&gt;本书有两个镜像地址：&lt;/p&gt;&lt;p style="text-align: justify; line-height: 20px"&gt;&amp;nbsp;&lt;a class="reference external" href="pydoc"&gt;http://hyry.dip.jp/pydoc&lt;/a&gt;&amp;nbsp;(每日更新)&lt;/p&gt;&lt;p style="text-align: justify; line-height: 20px"&gt;&amp;nbsp;&lt;a class="reference external" href="http://pyscin.appspot.com/html/index.html"&gt;http://pyscin.appspot.com/html/index.html&lt;/a&gt;&amp;nbsp;(每周更新)&lt;/p&gt;&lt;p style="text-align: justify; line-height: 20px"&gt;关于CHM和PDF的制作过程，在&amp;nbsp;&lt;a class="reference external" href="pydoc/pydoc_write_tools.html"&gt;关于本书的编写&lt;/a&gt;&amp;nbsp;章节有详细叙述，目前PDF文档还不是很完美，有程序行过长出界和无法显示matplotlib动态生成的图片等问题。&lt;/p&gt;&lt;/span&gt;</description><pubDate>Sat, 12 Sep 2009 12:20:05 GMT</pubDate></item></channel></rss>
