<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Python on Drake&#39;s Weblog</title>
		<link>https://drakeguan.org/tags/python/</link>
		<description>Recent content in Python on Drake&#39;s Weblog</description>
		<generator>Hugo -- gohugo.io</generator>
		<language>en-us</language>
		<lastBuildDate>Sat, 29 Aug 2020 21:15:23 +0800</lastBuildDate>
		<atom:link href="https://drakeguan.org/tags/python/" rel="self" type="application/rss+xml" />
		
		<item>
			<title>PyCon Taiwan History, 2012~2020</title>
			<link>https://drakeguan.org/blog/2020/08/pycontw-history-2012-2020/</link>
			<pubDate>Sat, 29 Aug 2020 21:15:23 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2020/08/pycontw-history-2012-2020/</guid>
			<description>&lt;p&gt;PyCon Taiwan 2020 is about to kick off, just one week to go.
Sometimes I&amp;rsquo;d wonder if we can host PyConTW somewhere else than Taipei.
And it just happened this year, right amid the pandemic, COVID-19, 2020.
The venue is in Tainan, south Taiwan, a historical and beautiful city.
I&amp;rsquo;m not sure how the committee made this decision.&lt;/p&gt;
&lt;p&gt;I have to say, having PyConTW in Tainan is one of the best decisions!&lt;/p&gt;
&lt;iframe src=&#39;https://cdn.knightlab.com/libs/timeline3/latest/embed/index.html?source=135b76fLYyza65MNUXkz0eJukW-ComHmFBQX8ehoIo4Q&amp;font=Default&amp;lang=en&amp;initial_zoom=0&amp;height=650&#39; width=&#39;100%&#39; height=&#39;650&#39; webkitallowfullscreen mozallowfullscreen allowfullscreen frameborder=&#39;0&#39;&gt;&lt;/iframe&gt;
&lt;p&gt;Hopefully you can see a timeline, embedded through iframe, above that guide
you through PyCon Taiwan from 2012 to 2020.
And it seems the best viewing experience needs you to have a bigger screen, like a laptop,
along with a stand-alone webview.
So here it is, &lt;a href=&#34;https://cdn.knightlab.com/libs/timeline3/latest/embed/index.html?source=135b76fLYyza65MNUXkz0eJukW-ComHmFBQX8ehoIo4Q&amp;amp;font=Default&amp;amp;lang=en&amp;amp;initial_zoom=0&amp;amp;height=800&#34;&gt;the stand-alone timeline of PyCon Taiwan 2012~2020&lt;/a&gt;
.
Cheer~&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>Python Modules I used while in work</title>
			<link>https://drakeguan.org/blog/2012/09/python-modules-i-used-while-in-work/</link>
			<pubDate>Sun, 16 Sep 2012 01:48:00 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2012/09/python-modules-i-used-while-in-work/</guid>
			<description>&lt;blockquote&gt;
&lt;p&gt;What Python modules you use while in working?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;http://geographika.co.uk/installing-python-modules-on-windows&#34;&gt;&lt;img alt=&#34;Python Modules&#34; loading=&#34;lazy&#34; src=&#34;http://geographika.co.uk/wp-content/uploads/2010/10/image.png&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;我們都曉得，Python 有個模組倉庫 &lt;a href=&#34;http://pypi.python.org/&#34;&gt;Cheese Shop&lt;/a&gt;
 (or PyPI)，只要善用 Google + PIP + virtualenv，你需要什麼樣的模組，一般都有人替你寫好一版了。 不過這也不是什麼挺稀奇的。 Perl 老早就有 &lt;a href=&#34;http://www.cpan.org/&#34;&gt;CPAN&lt;/a&gt;
; PHP 也有個 &lt;a href=&#34;http://pear.php.net/&#34;&gt;PEAR&lt;/a&gt;
; Ruby 的是 &lt;a href=&#34;http://rubyforge.org/&#34;&gt;RubyForge&lt;/a&gt;
; R 也有個 &lt;a href=&#34;http://cran.r-project.org/&#34;&gt;CRAN&lt;/a&gt;
; 甚至連 Tex/LaTeX 都有個 &lt;a href=&#34;http://rubyforge.org/&#34;&gt;CTAN&lt;/a&gt;
; 喔，對了，Vim 也有個 &lt;a href=&#34;http://www.vim.org/scripts/index.php&#34;&gt;Vim Scripts&lt;/a&gt;
…&lt;/p&gt;
&lt;p&gt;但你曉得你對某個程式語言的&lt;strong&gt;社群函式庫&lt;/strong&gt;有多熟悉嗎? 你常用的模組倒底是哪些呢? 還是只是想到什麼，就 Google 什麼，然後看著 Tutorial 試用一下?!&lt;/p&gt;
&lt;p&gt;以下是我在這七年多的工作期間，所寫的獨立執行的 Python scripts 所常用到的模組清單。 赫然發現，常用的模組，其實就那幾個!! （前頭的數字是引用的次數）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;155 wx&lt;/li&gt;
&lt;li&gt;126 os&lt;/li&gt;
&lt;li&gt;119 sys&lt;/li&gt;
&lt;li&gt;95 codecs&lt;/li&gt;
&lt;li&gt;55 re&lt;/li&gt;
&lt;li&gt;49 ldap&lt;/li&gt;
&lt;li&gt;30 time&lt;/li&gt;
&lt;li&gt;28 tempfile&lt;/li&gt;
&lt;li&gt;28 shutil&lt;/li&gt;
&lt;li&gt;20 datetime&lt;/li&gt;
&lt;li&gt;19 urllib&lt;/li&gt;
&lt;li&gt;18 setuptools&lt;/li&gt;
&lt;li&gt;15 maya&lt;/li&gt;
&lt;li&gt;15 copy&lt;/li&gt;
&lt;li&gt;13 socket&lt;/li&gt;
&lt;li&gt;11 subprocess&lt;/li&gt;
&lt;li&gt;11 getpass&lt;/li&gt;
&lt;li&gt;11 distutils&lt;/li&gt;
&lt;li&gt;10 locale&lt;/li&gt;
&lt;li&gt;9 warnings&lt;/li&gt;
&lt;li&gt;8 threading&lt;/li&gt;
&lt;li&gt;7 types&lt;/li&gt;
&lt;li&gt;7 logging&lt;/li&gt;
&lt;li&gt;6 traceback&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這個清單裏頭，wx 的次數比 os, sys 來得多，應該是意外，不過也相差不遠。 與檔案處理有關的就有 codecs, tempfile, shutil, 這一點都不意外。 但是 re 居然也用很多次? 我想應該是有待檢討了 XD&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>PyCon Taiwan 2012!</title>
			<link>https://drakeguan.org/blog/2012/04/pycon-taiwan-2012/</link>
			<pubDate>Mon, 16 Apr 2012 17:21:55 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2012/04/pycon-taiwan-2012/</guid>
			<description>&lt;h2 id=&#34;what-is-pycon&#34;&gt;What is PyCon?&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;PyCon Taiwan is organized by the Taiwan Python community for the community. PyCon Taiwan is intended to provide a professional venue to exchange technical information of Python. We want to clone the experience of PyCon (US), the largest annual gathering of Python programmers, in Taiwan, and bring the joy to more people.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;PyCon Taiwan 2012 will also stress on industrial applications of Python. We hope to connect the community, including the business members, and further develop the technology in Taiwan.&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>PyPs := Python &#43; Photoshop</title>
			<link>https://drakeguan.org/blog/2012/03/pyps-python-photoshop/</link>
			<pubDate>Sun, 04 Mar 2012 13:48:14 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2012/03/pyps-python-photoshop/</guid>
			<description>&lt;p&gt;Python, the so-called scripting language but actually more than that, keeps sweeping this CG/Animation/VFX/Game industries in technical programming field. The bigger the stronger. I even start to doubt if &lt;a href=&#34;http://pypy.org/&#34;&gt;PyPy&lt;/a&gt;
 could take over this situation one day by it’s natural power of strength in concurrent programming.&lt;/p&gt;
&lt;p&gt;&lt;div class=&#34;embed video-player&#34;&gt;
&lt;iframe class=&#34;youtube-player&#34; type=&#34;text/html&#34; width=&#34;640&#34; height=&#34;385&#34; src=&#34;//www.youtube.com/embed/SOihV9KLYP8&#34; allowfullscreen frameborder=&#34;0&#34;&gt;
&lt;/iframe&gt;
&lt;/div&gt;
&amp;gt; 由 &lt;a href=&#34;http://www.aardman.com/&#34;&gt;Aardman Animations&lt;/a&gt;
 與 &lt;a href=&#34;http://www.imageworks.com/&#34;&gt;Sony Pictures Animation&lt;/a&gt;
 合力製作，於 2011 年放映的動畫。《聖誕快遞》揭示了一個令人難以置信、以前從未見過的答案，關於每一個孩子都曾有過的問題：“究竟聖誕老人是如何在一個晚上送完這些禮物？”答案是：聖誕老人在北極擁有超高科技的協助！但是，電影中心是關於一個家庭的故事，一個有漫畫功能障礙和一個不太可靠的主角阿瑟，一個緊迫的任務，一個必須在聖誕節前黎明的晨光前完成的任務。&lt;/p&gt;
&lt;p&gt;Ok, 重點其實不是這部動畫，而是 Aardman Animations 這家動畫公司。這家位於 far far away（相對於台灣搭飛機過去所需要的時間來看）的大不列顛王國的動畫公司，一位技術研發人員於 2010 年釋出了一則有趣的訊息出來：Photoshop Embedded Python Pipeline。把整個 Python 給整合進 Photosthop 裏頭，提供 python programmer 一個管道，可以直接透過寫 python script 來與 PS 互動。放出來的一些圖，示範了可能的互動：&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>Python and 3D Industry/Tools</title>
			<link>https://drakeguan.org/blog/2012/02/python-and-3d-industry-tools/</link>
			<pubDate>Sun, 12 Feb 2012 00:31:09 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2012/02/python-and-3d-industry-tools/</guid>
			<description>&lt;p&gt;People keep asking about “How to learn Python”, “What to study for Python” or “Recommend Python books…” for VFX/Animation Industry. And here is a brief, not confirmed but, at least, some sort of informative answer I organized on Internet.&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://www.python.org/static/community_logos/python-logo.png&#34;&gt;&lt;/p&gt;
&lt;p&gt;For general Python programming:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Official Python website, &lt;a href=&#34;http://python.org/&#34;&gt;http://python.org/&lt;/a&gt;
, &lt;a href=&#34;http://docs.python.org/tutorial/&#34;&gt;http://docs.python.org/tutorial/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Learn Python the hard way, &lt;a href=&#34;http://learnpythonthehardway.org/&#34;&gt;http://learnpythonthehardway.org/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Dive Into Python, &lt;a href=&#34;http://www.diveintopython.net/&#34;&gt;http://www.diveintopython.net/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;How to Think Like a Computer Scientist, &lt;a href=&#34;http://greenteapress.com/thinkpython/&#34;&gt;http://greenteapress.com/thinkpython/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;A Byte of Python, &lt;a href=&#34;http://www.swaroopch.com/notes/Python&#34;&gt;http://www.swaroopch.com/notes/Python&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Expert Python Programming, &lt;a href=&#34;http://www.packtpub.com/expert-python-programming/book&#34;&gt;http://www.packtpub.com/expert-python-programming/book&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Python Tutorial for Beginners: Learn in 7 Days, &lt;a href=&#34;http://www.guru99.com/python-tutorials.html&#34;&gt;http://www.guru99.com/python-tutorials.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For VFX/Animation oriented Python programming:&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>2011 Python 回憶錄</title>
			<link>https://drakeguan.org/blog/2012/01/2011-python-retrospective/</link>
			<pubDate>Wed, 11 Jan 2012 12:54:10 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2012/01/2011-python-retrospective/</guid>
			<description>&lt;p&gt;2011 走了，民國 100 年在眾人互相廝殺的 boardgame, 美味湯頭火鍋, 以及散步看 101 煙火去中度過；2012 世界末日年也來了，我覺得 2012 年比其它年幸運，大家都記得它有個世界末日的外號，其它年份未必有這個福氣被大多數人記著。&lt;/p&gt;
&lt;p&gt;論語《為政》篇裏頭提到“溫故而知新，可以為師矣。”參考 Tarek 的計畫，趁勢來個 2011 Python 回憶錄。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. What’s the coolest Python application, framework or library you have discovered in 2011?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;virtualenv, pip, Fabric, logbook, and mongoengine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. What new programming technique did you learn in 2011?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;map reduce, git, optimization by matlab, and TDD.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. What’s the name of the open source project you contributed the most in 2011? What did you do?&lt;/strong&gt;&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>Concurrent Map in Python</title>
			<link>https://drakeguan.org/blog/2011/07/concurrent-map-in-python/</link>
			<pubDate>Sat, 02 Jul 2011 02:21:05 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2011/07/concurrent-map-in-python/</guid>
			<description>&lt;p&gt;There are several articles and Python modules talking about how to do concurrent/distributed/parallel computing in Python. There is an article in Python wik addressing &amp;ldquo;&lt;a href=&#34;http://wiki.python.org/moin/ParallelProcessing&#34;&gt;Parallel Processing and Multiprocessing in Python&lt;/a&gt;
&amp;rdquo; which is a good start point for that. But the most interests me is how to make &lt;strong&gt;map&lt;/strong&gt; parallel. One reason is that I started functional programming for a while and I started to switch my mind from imperative for-loop + if-else into map + filter + reduce + comprehension list; the other reason is that parallel map is just so good to boost up your program without chaning your code a lot.&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>在 Maya 2011 下，準備好 PyQt4 的開發環境</title>
			<link>https://drakeguan.org/blog/2011/02/setting-up-a-pyqt4-development-environment-in-maya-2011/</link>
			<pubDate>Sun, 27 Feb 2011 00:57:17 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2011/02/setting-up-a-pyqt4-development-environment-in-maya-2011/</guid>
			<description>&lt;p&gt;Maya 2011 可能是有史以來，對於開發人員最最有善的一次改版了：整個 GUI 使用 &lt;a href=&#34;http://qt.nokia.com/products/&#34; title=&#34;Qt&#34;&gt;Nokia Qt&lt;/a&gt;
 重寫一遍。Maya 過去的版本發表中，影響程度足以和 2011 相提並論的，我想只有 &lt;a href=&#34;https://drakeguan.org/content/maya-scripting-mel-vs-python&#34; title=&#34;Maya Scripting: MEL V.S. Python&#34;&gt;Maya 8.5 推出時提供的 Python binding&lt;/a&gt;
，以及隨後由 &lt;a href=&#34;http://code.google.com/p/pymel/&#34; title=&#34;pymel&#34;&gt;Chad Dombrova 個人領軍執行的 pymel open source project&lt;/a&gt;
 可以&lt;a href=&#34;https://drakeguan.org/category/expresso/pymel&#34;&gt;匹敵&lt;/a&gt;
。事實上我覺得，Maya 2011 以 Qt 重寫這件事，不止是用哪個 GUI framework 的差別而已，包括整個 GUI 的能力，與系統的整合，使用第三方程式庫的能力…等，差別遠比想像中的大很多。&lt;/p&gt;
&lt;p&gt;所以當你拿到一個已經安裝好 Maya 2011 的機器時，就程式開發的角度來看的話，裏頭提供的環境應該就會有 Maya SDK + Python + pymel，然後應該也會有 Qt 的開發環境。然後既然有 Python 又有 Qt，那也應該可以使用 PyQt4 的吧? 似乎應該就是如此，但又有點不太一樣。一來，Maya 提供的 Qt 函式庫（.so or .dll）與 Nokia Qt 官方提供的有一些差異，甚至是有不全的地方；二來，Maya 並沒有提供 PyQt4! 事實上，Maya 要把 PyQt4 包入比你想像中的，都要來得複雜一些。在這邊分享一下 Maya 2011 + PyQt4 的作法與過程，雖然已經不是什麼新聞了 ;p&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>Python versions for 3D softwares in VFX industry</title>
			<link>https://drakeguan.org/blog/2011/01/python-versions-for-3d-softwares-in-vfx-industry/</link>
			<pubDate>Mon, 31 Jan 2011 23:51:54 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2011/01/python-versions-for-3d-softwares-in-vfx-industry/</guid>
			<description>&lt;p&gt;&lt;a href=&#34;http://www.python.org/&#34;&gt;&lt;img alt=&#34;python&#34; loading=&#34;lazy&#34; src=&#34;http://www.python.org/images/python-logo.gif&#34;&gt;&lt;/a&gt;
I start this tiny post to collect embedded python version for several major players of 3D softwares in VFX/Animation industry. It is a personal desire to build the list such that we don&amp;rsquo;t need to guess or google it while facing python version issue. Hopefully, this post can get someone&amp;rsquo;s notice and help to make it as complete as possible. Any information is welcome~&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Python versoins for 3D softwares  Software version&lt;/th&gt;
					&lt;th&gt;Python version&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Autodesk Maya&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Maya 2011 Linux 64bit&lt;/td&gt;
					&lt;td&gt;Python 2.6.4&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Maya 2009 Linux 64bit&lt;/td&gt;
					&lt;td&gt;Python 2.5.1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Maya 8.5 Linux 64bit&lt;/td&gt;
					&lt;td&gt;Python 2.4.3&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;The Foundry Nuke&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nuke 6.2v1&lt;/td&gt;
					&lt;td&gt;Python 2.6.5&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Nuke 6.1v3&lt;/td&gt;
					&lt;td&gt;Python 2.5.1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Side Effects Houdini&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Houdini 11&lt;/td&gt;
					&lt;td&gt;Python 2.6&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Pixar’s RenderMan Pro Server&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Realflow&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Blender&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Blender 2.5&lt;/td&gt;
					&lt;td&gt;Python 3.1&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Blender 2.49&lt;/td&gt;
					&lt;td&gt;Python 2.6&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Realflow&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Realflow 5&lt;/td&gt;
					&lt;td&gt;Python 2.6.2&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;TBA&lt;/td&gt;
					&lt;td&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;TBA&lt;/td&gt;
					&lt;td&gt;Python ?.?&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;</description>
		</item>
		
		<item>
			<title>The Definition of Functional Programming Language</title>
			<link>https://drakeguan.org/blog/2010/10/the-definition-of-functional-programming-language/</link>
			<pubDate>Mon, 04 Oct 2010 13:21:54 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2010/10/the-definition-of-functional-programming-language/</guid>
			<description>&lt;p&gt;目前我覺得非常中肯且值得特別一一去了解，並且在 coding 時，時時提醒自己的 &lt;a href=&#34;http://en.wikipedia.org/wiki/Functional_programming&#34;&gt;Functional Programming Paradigm&lt;/a&gt;
，如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/First-class_function&#34;&gt;First-class function&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Higher-order_function&#34;&gt;Higher-order function&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Closure_%5c%28computer_science%5c%29&#34;&gt;Lexical closure&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Pattern_matching&#34;&gt;Pattern matching&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Single_assignment&#34;&gt;Single assignment&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Lazy_evaluation&#34;&gt;Lazy evaluation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Garbage_collection_%5c%28computer_science%5c%29&#34;&gt;Garbage collection&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Type_inference&#34;&gt;Type inference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Tail_recursion&#34;&gt;Tail recursion&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/List_comprehension&#34;&gt;List comprehension&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;http://en.wikipedia.org/wiki/Monad_%5c%28functional_programming%5c%29&#34;&gt;Monad&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;其中 &lt;a href=&#34;http://www.python.org/&#34;&gt;Python&lt;/a&gt;
 有提供的，有第 1, 2, 3 (部分?), 6, 7, 8 (部分?), 10, 11 (&lt;a href=&#34;http://www.valuedlessons.com/2008/01/monads-in-python-with-nice-syntax.html&#34;&gt;部分&lt;/a&gt;
?)，就我微薄的知識所了解後的，可能會有一些出入。&lt;/p&gt;
&lt;p&gt;目前的感想是，與 function 有直接關係的功能，對於一個剛入門 FP，想學習怎麼做到 &lt;a href=&#34;http://en.wikipedia.org/wiki/Paradigm_shift&#34;&gt;paradigm shift&lt;/a&gt;
 的人來說，是最最直接，最容易感受到不一樣的地方。（其實，本來也就應該是這樣的啦，不然幹麻叫做 functional programming?）透過功能 1, 2, 3, 10 這幾點，就可以開始去體驗所謂的：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A program is some specific combination and arrangement of functions, which are also some sort of combination of other functions. This idea is repeated recursively till the primitive functions or data&amp;rsquo;s methods. That is, treating programming as plotting relationship of functions. That&amp;rsquo;s one sort of paradigm shift.&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>用 Python 寫一個精簡的 Lisp Interpreter</title>
			<link>https://drakeguan.org/blog/2010/10/writing-a-minimal-lisp-interpreter-in-python/</link>
			<pubDate>Sun, 03 Oct 2010 19:47:15 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2010/10/writing-a-minimal-lisp-interpreter-in-python/</guid>
			<description>&lt;p&gt;Peter Norvig 在他的個人網站上頭，寫了一篇 &lt;a href=&#34;http://norvig.com/lispy.html&#34;&gt;(How to Write a (Lisp) Interpreter (in Python))&lt;/a&gt;
（註），
他寫了約莫 100 行的 python script 來小小模擬一個簡化版的 Lisp Interpreter，看了不禁拍案叫絕。
下頭這個表格截取自他的網頁，指出他這 100 行的程式碼，所實作的 syntax 只有 9 個（註）。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;var&lt;/em&gt;: variable reference&lt;/p&gt;
&lt;p&gt;A symbol is interpreted as a variable name; its value is the variable&amp;rsquo;s value.&lt;br&gt;
Example: &lt;code&gt;x&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;number&lt;/em&gt;: constant literal&lt;/p&gt;
&lt;p&gt;A number evaluates to itself.&lt;br&gt;
Examples: &lt;code&gt;12&lt;/code&gt; &lt;em&gt;or&lt;/em&gt; &lt;code&gt;-3.45e+6&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;code&gt;(quote &lt;/code&gt;&lt;em&gt;exp&lt;/em&gt;&lt;code&gt;)&lt;/code&gt;: quotation&lt;/p&gt;
&lt;p&gt;Return the &lt;em&gt;exp&lt;/em&gt; literally; do not evaluate it.&lt;br&gt;
Example: &lt;code&gt;(quote (a b c)) ⇒ (a b c)&lt;/code&gt;&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>Lisp 初體驗：Grammar Induction</title>
			<link>https://drakeguan.org/blog/2010/09/first-experience-with-lisp-grammar-induction/</link>
			<pubDate>Sun, 19 Sep 2010 18:35:06 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2010/09/first-experience-with-lisp-grammar-induction/</guid>
			<description>&lt;p&gt;我們這個地球上的人實在太多了，加上上天賦與我們的大腦又過於活躍，以致於時時可以聽聞到，又有什麼人做出了驚人之舉。&lt;/p&gt;
&lt;p&gt;幾個禮拜前，無意間得知一個網頁：&lt;a href=&#34;http://www.ywing.net/graphicspaper.php&#34;&gt;Random CG Paper Generator&lt;/a&gt;
。每 reload 這個頁面一次，就會亂數產生一篇圖學論文的標題出來（以假亂真似地）。也許，苦於找不到研究方向的研究生，可以來這個頁面 reload, re-roll your brain，看看有沒有什麼意外的研究靈感可以借用的。&lt;/p&gt;
&lt;p&gt;Anyway，借用一個這樣的 random stuff generator 來找點子，實在太冒險也太不明智了，況且，我還處於 non-qualified Ph.D. student，沒啥理由理會這個網站的。除非…&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;我想知道它是怎麼產生這些以假亂真的論文標題。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在與 &lt;a href=&#34;http://edwardshen.blogspot.com/&#34;&gt;Edward&lt;/a&gt;
 來來回回，反反覆覆的 email 往來後，終於，他了解我的目的了。Ed 建議我用 &lt;a href=&#34;http://en.wikipedia.org/wiki/Lisp_%5c%28programming_language%5c%29&#34;&gt;Lisp&lt;/a&gt;
 來試著解解看這個問題。一方面 Ed 最近一直在寫 Lisp program，而 Lisp 又是號稱 &lt;a href=&#34;http://en.wikipedia.org/wiki/Functional_programming&#34;&gt;functional programming&lt;/a&gt;
 languages 裏頭的元老之一，很擅長處理這類 AI 相關，或是 &lt;a href=&#34;http://en.wikipedia.org/wiki/Natural_language_processing&#34;&gt;NLP（Natural Language Processing）&lt;/a&gt;
相關的問題；另一方面，我剛好也在鑽研 FP，想多一些小而美的例子好讓自己的手變得髒一些（黑手），從中了解一下 FP 的特色。於是就開工了。&lt;/p&gt;
&lt;p&gt;透過 &lt;a href=&#34;http://www.macports.org/&#34;&gt;MacPorts&lt;/a&gt;
 安裝好 &lt;a href=&#34;http://www.sbcl.org/&#34;&gt;SBCL (Steel Bank Common Lisp)&lt;/a&gt;
 與 &lt;a href=&#34;http://en.wikipedia.org/wiki/Emacs&#34;&gt;Emacs&lt;/a&gt;
 後，自 &lt;a href=&#34;http://norvig.com/paip.html&#34;&gt;Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp&lt;/a&gt;
 這本書的網站上，下載了書中提到的一些&lt;a href=&#34;http://norvig.com/paip/README.html&#34;&gt;程式碼&lt;/a&gt;
。試圖用裏頭的一些函式與方法來解決，或是某種程度上“逼近“我想要處理的這個問題。非常遺憾的，PAIP 的程式碼，似乎是給老舊的 Common Lisp 用的，而 SBCL 與他沒有很合，會一直出現一堆 warnings，得一直按 continue/ignore 之類的@@&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>你是怎麼使用 Python 的?</title>
			<link>https://drakeguan.org/blog/2010/08/how-do-you-use-python/</link>
			<pubDate>Tue, 31 Aug 2010 22:17:24 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2010/08/how-do-you-use-python/</guid>
			<description>&lt;p&gt;上上週的某個深夜，電動也玩夠了（一直輸），&lt;a href=&#34;http://www.erlang.org/&#34;&gt;Erlang&lt;/a&gt;
 也看煩了，上網查看 Python, RenderMan, Maya, Computer Graphics, Game, Animation, Lighting, Stereoscopy, … 等關鍵字的各種組合過程中，發現到一篇 2009 年的&lt;a href=&#34;http://tech-artists.org/forum/showpost.php?p=3391&amp;amp;postcount=27&#34;&gt;文章：What do you do with Python?&lt;/a&gt;
。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://www.volition-inc.com/&#34;&gt;&lt;img alt=&#34;Volition Inc.&#34; loading=&#34;lazy&#34; src=&#34;http://www.volition-inc.com/images/jobs/page_title.gif&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;非常有趣，把片段的內容翻譯過來：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;盡可能地，在任何地方做 log，存進 SQL 資料庫裏頭，好事後做分析。舉個例子，像是 3DS Max 開啟到完整載入一個 scene file 的時間；執行自己寫的程式的各個功能的時間。從中找出可能的問題，像是執行時間太久，然後可能自動發個信給開發人員得知。&lt;/li&gt;
&lt;li&gt;使用 &lt;a href=&#34;http://www.wxpython.org/&#34;&gt;wxPython&lt;/a&gt;
 把各個工具給整合起來。這點和我有篇文章提到 &lt;a href=&#34;https://drakeguan.org/animation_pipeline_is_like_a_glue_everywhere&#34;&gt;Pipeline as a Glue&lt;/a&gt;
 的想法一致。&lt;/li&gt;
&lt;li&gt;把 Python 整合進開發工具裏頭。這點有點像是在 3DS Max 裏頭加進 MaxScript。&lt;/li&gt;
&lt;li&gt;3DS Max 啟動時，自動執行一些事務：把一些目錄裏頭的 MaxScripts 整包建置出一個 .mcr 來；掃描整個 texture 目錄，加進 scene file 裏頭…等。&lt;/li&gt;
&lt;li&gt;把 &lt;a href=&#34;http://www.perforce.com/&#34;&gt;Perforce&lt;/a&gt;
 裏頭的 assets rendering 所花費的時間、資源等資料，存進 SQL 資料庫。&lt;/li&gt;
&lt;li&gt;自內部使用的 bug tracking system 裏頭抓出 tasks/tickets，然後使用 Vista Sidebar gadget 的型式秀出來給工作同仁，讓他們第一時間以最醒目的方式得知還有多少工作要做。&lt;/li&gt;
&lt;li&gt;使用 wavelet transform 來執行 image comparison。這我猜有點像是 &lt;a href=&#34;http://pdiff.sourceforge.net/&#34;&gt;Perceptual Image Difference Utility (pdiff)&lt;/a&gt;
。（注：這是個好東西）&lt;/li&gt;
&lt;li&gt;Data minging!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;回到家了，來事後補充一下一些想法。&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>Introducing Python 的影片</title>
			<link>https://drakeguan.org/blog/2010/03/the-introducing-python-video/</link>
			<pubDate>Fri, 26 Mar 2010 19:23:32 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2010/03/the-introducing-python-video/</guid>
			<description>&lt;p&gt;以非常…..宅…..的方式介紹 Python，整個畫面很 low, 很南方公園的 video。雖然這樣，不過裏頭出現很多 Python Community 的大頭!&lt;/p&gt;</description>
		</item>
		
		<item>
			<title>Interesting Python Shells</title>
			<link>https://drakeguan.org/blog/2010/03/interesting-python-shells/</link>
			<pubDate>Sat, 13 Mar 2010 02:08:58 +0800</pubDate>
			<guid>https://drakeguan.org/blog/2010/03/interesting-python-shells/</guid>
			<description>&lt;p&gt;I&amp;rsquo;ve found several very interesting and active python shells. Each has it&amp;rsquo;s own strength and the most often mentioned feature is &lt;strong&gt;syntax highlight&lt;/strong&gt;, &lt;strong&gt;auto-complete&lt;/strong&gt; and &lt;strong&gt;function attributes info&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Here they are:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://ipython.scipy.org/&#34;&gt;IPython&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://drakeguan.org/images/drakeguan_4426930151.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://bpython-interpreter.org/&#34;&gt;bpython&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://drakeguan.org/images/drakeguan_4427693260.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://dreampie.sourceforge.net/&#34;&gt;DreamPie&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://drakeguan.org/images/drakeguan_4427693286.jpg&#34;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;http://shell.appspot.com/&#34;&gt;Interactive server-side Python shell&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img loading=&#34;lazy&#34; src=&#34;https://drakeguan.org/images/drakeguan_4426930089.jpg&#34;&gt;&lt;/p&gt;</description>
		</item>
		
	</channel>
</rss>
