<?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>agentzh's home</title>
<link>http://agentzh.org/</link>
<description>yet another idiot who loves programming</description>
<language>en</language>
<copyright>Copyright 2016 YichunZhang</copyright>
<pubDate>Tue, 08 Mar 2016 22:49:55 GMT</pubDate>
<lastBuildDate>Tue, 08 Mar 2016 22:49:55 GMT</lastBuildDate>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<generator>TiddlyWiki 2.6.2</generator>
<item>
<title>Presentations</title>
<description>&lt;a tiddler=&quot;Presentations&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;Here goes a list of slides that I used in various opensource events and school lectures.&lt;br&gt;&lt;br&gt;These slides are powered by the &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/kindy61/slides.htm&quot; href=&quot;https://github.com/kindy61/slides.htm&quot; class=&quot;externalLink&quot;&gt;slides.htm&lt;/a&gt; slide-making engine based on AJAX.&lt;br&gt;&lt;br&gt;&lt;strong&gt;&lt;em&gt;Note: Please use the arrow keys or pageup/pagedown keys on your keyboard to switch slides.&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;&lt;h1&gt; Year 2015&lt;/h1&gt;&lt;h2&gt; Application of Lua in Nginx&lt;/h2&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://2015.qconbeijing.com/&quot; href=&quot;http://2015.qconbeijing.com/&quot; class=&quot;externalLink&quot;&gt;QCon Beijing 2015&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Talk summary (Chinese): &lt;a target=&quot;_blank&quot; title=&quot;External link to http://2015.qconbeijing.com/speakers/201758&quot; href=&quot;http://2015.qconbeijing.com/speakers/201758&quot; class=&quot;externalLink&quot;&gt;http://2015.qconbeijing.com/speakers/201758&lt;/a&gt;&lt;br&gt;&lt;br&gt;Video recording (Chinese): &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.infoq.com/cn/presentations/application-of-lua-in-nginx&quot; href=&quot;http://www.infoq.com/cn/presentations/application-of-lua-in-nginx&quot; class=&quot;externalLink&quot;&gt;http://www.infoq.com/cn/presentations/application-of-lua-in-nginx&lt;/a&gt;&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/qcon-beijing-2015/&quot; href=&quot;http://agentzh.org/misc/slides/qcon-beijing-2015/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/qcon-beijing-2015/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/qcon-beijing-2015/application-of-lua-in-nginx.pdf&quot; href=&quot;http://agentzh.org/misc/slides/qcon-beijing-2015/application-of-lua-in-nginx.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/qcon-beijing-2015/application-of-lua-in-nginx.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; The Past, Present, and Future of OpenResty&lt;/h2&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://iresty.com/&quot; href=&quot;http://iresty.com/&quot; class=&quot;externalLink&quot;&gt;OpenResty Con Beijing 2015&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Video recording (Chinese): &lt;a target=&quot;_blank&quot; title=&quot;External link to https://www.youtube.com/watch?v=vUgTHeXM5m8&quot; href=&quot;https://www.youtube.com/watch?v=vUgTHeXM5m8&quot; class=&quot;externalLink&quot;&gt;https://www.youtube.com/watch?v=vUgTHeXM5m8&lt;/a&gt;&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/openresty-con-2015/&quot; href=&quot;http://agentzh.org/misc/slides/openresty-con-2015/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/openresty-con-2015/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/The-Past-Present-and-Future-of-OpenResty.pdf&quot; href=&quot;http://agentzh.org/misc/slides/The-Past-Present-and-Future-of-OpenResty.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/The-Past-Present-and-Future-of-OpenResty.pdf&lt;/a&gt;&lt;br&gt;&lt;h1&gt; Year 2014&lt;/h1&gt;&lt;h2&gt; The Latest and Greatest from ngx_lua: New Features &amp;amp; Tools&lt;/h2&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://nginx.com/nginxconf/&quot; href=&quot;http://nginx.com/nginxconf/&quot; class=&quot;externalLink&quot;&gt;NGINX Conference&lt;/a&gt; 2014 on 21 October 2014.&lt;br&gt;&lt;br&gt;Talk summary: &lt;a target=&quot;_blank&quot; title=&quot;External link to https://nginx.busyconf.com/activities/53d854c1c9e255cf2d00007b&quot; href=&quot;https://nginx.busyconf.com/activities/53d854c1c9e255cf2d00007b&quot; class=&quot;externalLink&quot;&gt;https://nginx.busyconf.com/activities/53d854c1c9e255cf2d00007b&lt;/a&gt;&lt;br&gt;&lt;br&gt;Video recording: &lt;a target=&quot;_blank&quot; title=&quot;External link to https://www.youtube.com/watch?v=Z0fQabvVhIk&quot; href=&quot;https://www.youtube.com/watch?v=Z0fQabvVhIk&quot; class=&quot;externalLink&quot;&gt;https://www.youtube.com/watch?v=Z0fQabvVhIk&lt;/a&gt;&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-conf-2014/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-conf-2014/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-conf-2014/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-conf-2014.pdf&quot; href=&quot;http://agentzh.org/misc/slides/nginx-conf-2014.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-conf-2014.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; NGINX, Lua, and beyond&lt;/h2&gt;This talk was given at NGINX Inc's &lt;a target=&quot;_blank&quot; title=&quot;External link to https://www.eventbrite.com/e/nginx-user-summit-and-training-tickets-10393173261&quot; href=&quot;https://www.eventbrite.com/e/nginx-user-summit-and-training-tickets-10393173261&quot; class=&quot;externalLink&quot;&gt;NGINX User Summit 2014&lt;/a&gt; on 25 February 2014.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-user-summit-2014/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-user-summit-2014/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-user-summit-2014/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf&quot; href=&quot;http://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-lua-and-beyond.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2013&lt;/h1&gt;&lt;h2&gt; The Way of Optimizing and Troubleshooting Our Lua Waf&lt;/h2&gt;This talk was given at CloudFlare's Beer Meeting on 19 April 2013.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/beer-meeting-2013-04-19/&quot; href=&quot;http://agentzh.org/misc/slides/beer-meeting-2013-04-19/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/beer-meeting-2013-04-19/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/beer-meeting-2013-04-19.pdf&quot; href=&quot;http://agentzh.org/misc/slides/beer-meeting-2013-04-19.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/beer-meeting-2013-04-19.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; sregex: matching Perl 5 regexes on data streams&lt;/h2&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.yapcna.org/yn2013/&quot; href=&quot;http://www.yapcna.org/yn2013/&quot; class=&quot;externalLink&quot;&gt;YAPC::NA 2013&lt;/a&gt; in Austin, TX, USA.&lt;br&gt;&lt;br&gt;Talk summary: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.yapcna.org/yn2013/talk/4762&quot; href=&quot;http://www.yapcna.org/yn2013/talk/4762&quot; class=&quot;externalLink&quot;&gt;http://www.yapcna.org/yn2013/talk/4762&lt;/a&gt;&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/yapc-na-2013-sregex/&quot; href=&quot;http://agentzh.org/misc/slides/yapc-na-2013-sregex/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/yapc-na-2013-sregex/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/yapc-na-2013-sregex.pdf&quot; href=&quot;http://agentzh.org/misc/slides/yapc-na-2013-sregex.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/yapc-na-2013-sregex.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Flame Graphs for online performance profiling&lt;/h2&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.yapcna.org/yn2013/&quot; href=&quot;http://www.yapcna.org/yn2013/&quot; class=&quot;externalLink&quot;&gt;YAPC::NA 2013&lt;/a&gt; in Austin, TX, USA.&lt;br&gt;&lt;br&gt;Talk summary: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.yapcna.org/yn2013/talk/4579&quot; href=&quot;http://www.yapcna.org/yn2013/talk/4579&quot; class=&quot;externalLink&quot;&gt;http://www.yapcna.org/yn2013/talk/4579&lt;/a&gt;&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs/&quot; href=&quot;http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs.pdf&quot; href=&quot;http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/yapc-na-2013-flame-graphs.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Introduction to off-CPU Time Flame Graphs&lt;/h2&gt;This talk was given at the CloudFlare Beer Meeting on 23 August 2013.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/off-cpu-flame-graphs/&quot; href=&quot;http://agentzh.org/misc/slides/off-cpu-flame-graphs/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/off-cpu-flame-graphs/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/off-cpu-flame-graphs.pdf&quot; href=&quot;http://agentzh.org/misc/slides/off-cpu-flame-graphs.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/off-cpu-flame-graphs.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2012&lt;/h1&gt;&lt;h2&gt; ngx_openresty: an Nginx ecosystem glued by Lua&lt;/h2&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://event.weibo.com/351359&quot; href=&quot;http://event.weibo.com/351359&quot; class=&quot;externalLink&quot;&gt;Tech-Club Technical Salon&lt;/a&gt; held in the Xiamen city, China.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/ngx-openresty-ecosystem/&quot; href=&quot;http://agentzh.org/misc/slides/ngx-openresty-ecosystem/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/ngx-openresty-ecosystem/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/ngx-openresty-ecosystem.pdf&quot; href=&quot;http://agentzh.org/misc/slides/ngx-openresty-ecosystem.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/ngx-openresty-ecosystem.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Scripting libdrizzle with Lua inside Nginx&lt;/h2&gt;This presentation was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.percona.com/live/mysql-conference-2012/sessions/scripting-mysql-lua-and-libdrizzle-inside-nginx&quot; href=&quot;http://www.percona.com/live/mysql-conference-2012/sessions/scripting-mysql-lua-and-libdrizzle-inside-nginx&quot; class=&quot;externalLink&quot;&gt;Percona Live MySQL Conference 2012&lt;/a&gt; held in Santa Clara, CA, USA.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/libdrizzle-lua-nginx/#2&quot; href=&quot;http://agentzh.org/misc/slides/libdrizzle-lua-nginx/#2&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/libdrizzle-lua-nginx/#2&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf&quot; href=&quot;http://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/libdrizzle-lua-nginx.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2011&lt;/h1&gt;&lt;h2&gt; Applications of ngx_openresty and perl in lz.taobao.com&lt;/h2&gt;&lt;br&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org/bjpw2011/talks&quot; href=&quot;http://conference.perlchina.org/bjpw2011/talks&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop 2011&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Watch the video online: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://v.ku6.com/show/TY8Vre59guTE_C8o.html&quot; href=&quot;http://v.ku6.com/show/TY8Vre59guTE_C8o.html&quot; class=&quot;externalLink&quot;&gt;http://v.ku6.com/show/TY8Vre59guTE_C8o.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/perl-lz-apps/&quot; href=&quot;http://agentzh.org/misc/slides/perl-lz-apps/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/perl-lz-apps/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/perl-lz-apps.pdf&quot; href=&quot;http://agentzh.org/misc/slides/perl-lz-apps.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/perl-lz-apps.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2010&lt;/h1&gt;&lt;h2&gt; Introduction to nginx.conf scripting&lt;/h2&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org&quot; href=&quot;http://conference.perlchina.org&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop&lt;/a&gt; 2010 April meeting and the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.beijing-open-party.org/event/2&quot; href=&quot;http://www.beijing-open-party.org/event/2&quot; class=&quot;externalLink&quot;&gt;Beijing OpenParty 2010 June event&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-conf-scripting/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-conf-scripting/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-conf-scripting/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-conf-scripting.pdf&quot; href=&quot;http://agentzh.org/misc/slides/nginx-conf-scripting.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-conf-scripting.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;Please note that ngx_eval module is no longer recommended because we're in more favor of ngx_lua nowadays.&lt;br&gt;&lt;br&gt;&lt;h2&gt; Recent developments in nginx.conf scripting&lt;/h2&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.beijing-open-party.org/event/2&quot; href=&quot;http://www.beijing-open-party.org/event/2&quot; class=&quot;externalLink&quot;&gt;Beijing OpenParty 2010 June event&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/recent-dev-nginx-conf/&quot; href=&quot;http://agentzh.org/misc/slides/recent-dev-nginx-conf/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/recent-dev-nginx-conf/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/recent-dev-nginx-conf.pdf&quot; href=&quot;http://agentzh.org/misc/slides/recent-dev-nginx-conf.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/recent-dev-nginx-conf.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; The state of the art of nginx.conf scripting&lt;/h2&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; class=&quot;externalLink&quot;&gt;ECUG 2010 event&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Watch the (Chinese-speech) video online: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://v.ku6.com/show/D00rqtnRwKzJdIsB.html&quot; href=&quot;http://v.ku6.com/show/D00rqtnRwKzJdIsB.html&quot; class=&quot;externalLink&quot;&gt;http://v.ku6.com/show/D00rqtnRwKzJdIsB.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;View the (English) slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; href=&quot;http://agentzh.org/misc/slides/nginx-state-of-the-art/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-state-of-the-art/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/nginx-state-of-the-art.pdf&quot; href=&quot;http://agentzh.org/misc/slides/nginx-state-of-the-art.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/nginx-state-of-the-art.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2009&lt;/h1&gt;&lt;h2&gt; A Firefox cluster driven by JavaScript, Perl, &amp;amp; PL/PgSQL&lt;/h2&gt;This talk was given at the Beijing Perl Workshop 2009 Feb Meetup and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.beijing-open-party.org/post/beijing-open-party-2009-02-fox-event-begin&quot; href=&quot;http://www.beijing-open-party.org/post/beijing-open-party-2009-02-fox-event-begin&quot; class=&quot;externalLink&quot;&gt;Beijing OpenParty 2009 Feb event&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View the slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/BJPW200902/ffcluster.html&quot; href=&quot;http://agentzh.org/misc/slides/BJPW200902/ffcluster.html&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/BJPW200902/ffcluster.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/bjpw200902-ffcluster.pdf&quot; href=&quot;http://agentzh.org/misc/slides/bjpw200902-ffcluster.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/bjpw200902-ffcluster.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Introduction to our VDOM.pm &amp;amp; vdom-webkit cluster&lt;/h2&gt;Use vision information to do intelligent web scraping by rendering pages via a WebKit &amp;amp; VDOM cluster.&lt;br&gt;&lt;br&gt;This talk was given at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org/bjpw2009/talks&quot; href=&quot;http://conference.perlchina.org/bjpw2009/talks&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop 2009&lt;/a&gt; and a meetup with Taobao.com's front-end engineers in the Hangzhou city.&lt;br&gt;&lt;br&gt;View the slides in your browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/taobao-fe/vdomwebkit.html&quot; href=&quot;http://agentzh.org/misc/slides/taobao-fe/vdomwebkit.html&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/taobao-fe/vdomwebkit.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/taobao-fe-vdomwebkit.pdf&quot; href=&quot;http://agentzh.org/misc/slides/taobao-fe-vdomwebkit.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/taobao-fe-vdomwebkit.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; A Tour of Perl Testing&lt;/h2&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org/bjpw2009/talks&quot; href=&quot;http://conference.perlchina.org/bjpw2009/talks&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop 2009&lt;/a&gt; event.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/BJPW2009/perl-testing.html&quot; href=&quot;http://agentzh.org/misc/slides/BJPW2009/perl-testing.html&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/BJPW2009/perl-testing.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/bjpw2009-perl-testing.pdf&quot; href=&quot;http://agentzh.org/misc/slides/bjpw2009-perl-testing.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/bjpw2009-perl-testing.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2008&lt;/h1&gt;&lt;h2&gt; Nifty web apps on an OpenResty&lt;/h2&gt;This talk was given at the D2 Frontend Technology event organized by Yahoo! China.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/openresty-d2/&quot; href=&quot;http://agentzh.org/misc/slides/openresty-d2/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/openresty-d2/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/openresty-d2.pdf&quot; href=&quot;http://agentzh.org/misc/slides/openresty-d2.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/openresty-d2.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; OpenResty: Your Relational Cloud&lt;/h2&gt;OpenResty.pm is a general-purpose RESTful web service platform. In this talk I explained its origin, REST API, and its unusual applications.&lt;br&gt;&lt;br&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org/bjpw2008/talks&quot; href=&quot;http://conference.perlchina.org/bjpw2008/talks&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop 2008&lt;/a&gt; event and the Yahoo! China Engineer Tech. Salon.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/openresty-yes/&quot; href=&quot;http://agentzh.org/misc/slides/openresty-yes/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/openresty-yes/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/openresty-yes.pdf&quot; href=&quot;http://agentzh.org/misc/slides/openresty-yes.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/openresty-yes.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2007&lt;/h1&gt;&lt;h2&gt; XUL::App - Jifty way of doing XUL&lt;/h2&gt;XUL::App is a nifty Firefox extension development framework based on Perl. It has a lot of parallels with Jifty. In particular, this framework allows you to build real-world modern Firefox extensions using Perl.&lt;br&gt;&lt;br&gt;In this talk, I demonstrated how to use this framework to write a &quot;hello, world&quot; Firefox extension with I18N support in lines. &lt;br&gt;&lt;br&gt;This talk was given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://conference.perlchina.org/bjpw2008/talks&quot; href=&quot;http://conference.perlchina.org/bjpw2008/talks&quot; class=&quot;externalLink&quot;&gt;Beijing Perl Workshop 2008&lt;/a&gt; event.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/xulapp/&quot; href=&quot;http://agentzh.org/misc/slides/xulapp/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/xulapp/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/xulapp.pdf&quot; href=&quot;http://agentzh.org/misc/slides/xulapp.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/xulapp.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Contribute to Pugs&lt;/h2&gt;Pugs is a Perl 6 compiler written in Haskell. In this talk, I introduced the Pugs project as well as my involvement in the automated testing work of the Perl 6 language to the PerlChina folks and encouraged people to contribute Pugs.&lt;br&gt;&lt;br&gt;This talk was given at the Beijing Perl Workshop 2007 event.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/contr_pugs/&quot; href=&quot;http://agentzh.org/misc/slides/contr_pugs/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/contr_pugs/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/contr_pugs.pdf&quot; href=&quot;http://agentzh.org/misc/slides/contr_pugs.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/contr_pugs.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Use UML::Class::Simple to generate simple UML class diagrams&lt;/h2&gt;UML::Class::Simple is my Perl CPAN module that can generate UML class diagrams automatically from arbitrary real-world Perl OO libraries.&lt;br&gt;&lt;br&gt;This talk was given at the Beijing Perl Workshop 2007 event.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/umlclass/&quot; href=&quot;http://agentzh.org/misc/slides/umlclass/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/umlclass/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/umlclass.pdf&quot; href=&quot;http://agentzh.org/misc/slides/umlclass.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/umlclass.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt; Year 2006&lt;/h1&gt;&lt;h2&gt; Introduction to XClips&lt;/h2&gt;XClips is an expert system development language designed by myself, which is implemented atop NASA's &lt;a target=&quot;_blank&quot; title=&quot;External link to http://clipsrules.sourceforge.net/&quot; href=&quot;http://clipsrules.sourceforge.net/&quot; class=&quot;externalLink&quot;&gt;CLIPS&lt;/a&gt;. This talk explains the appearance of the language and some details of its implementation and applications.&lt;br&gt;&lt;br&gt;This talk was given as a lecture at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.ujs.edu.cn/&quot; href=&quot;http://www.ujs.edu.cn/&quot; class=&quot;externalLink&quot;&gt;Jiangsu University&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/xclips/&quot; href=&quot;http://agentzh.org/misc/slides/xclips/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/xclips/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/xclips.pdf&quot; href=&quot;http://agentzh.org/misc/slides/xclips.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/xclips.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; The Art of Naming&lt;/h2&gt;This talk teaches the art of naming for programmers, using lots of examples from Perl 6, C/C++, Java, and other programming languages.&lt;br&gt;&lt;br&gt;This talk was given as a lecture at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.ujs.edu.cn/&quot; href=&quot;http://www.ujs.edu.cn/&quot; class=&quot;externalLink&quot;&gt;Jiangsu University&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View slides in your web browser:&lt;br&gt;&lt;ul&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/naming/&quot; href=&quot;http://agentzh.org/misc/slides/naming/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/naming/&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/naming/naming_recap.html&quot; href=&quot;http://agentzh.org/misc/slides/naming/naming_recap.html&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/naming/naming_recap.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;Or download the slides as PDF files:&lt;br&gt;&lt;ul&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/naming.pdf&quot; href=&quot;http://agentzh.org/misc/slides/naming.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/naming.pdf&lt;/a&gt;&lt;/li&gt;&lt;li&gt; &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/naming_recap.pdf&quot; href=&quot;http://agentzh.org/misc/slides/naming_recap.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/naming_recap.pdf&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br&gt;&lt;h2&gt; XML in the real world&lt;/h2&gt;This talk shows various interesting applications of XML in the real world. It also introduces some of my web scraping tools based on Perl 5.&lt;br&gt;&lt;br&gt;This talk was given as a lecture at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.ujs.edu.cn/&quot; href=&quot;http://www.ujs.edu.cn/&quot; class=&quot;externalLink&quot;&gt;Jiangsu University&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/xmlapp/&quot; href=&quot;http://agentzh.org/misc/slides/xmlapp/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/xmlapp/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/xmlapp.pdf&quot; href=&quot;http://agentzh.org/misc/slides/xmlapp.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/xmlapp.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Functions and Methods&lt;/h2&gt;This lecture discusses functions and methods in Object-Oriented Programming (OOP). This is one of my series of lectures on OOP given at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.ujs.edu.cn/&quot; href=&quot;http://www.ujs.edu.cn/&quot; class=&quot;externalLink&quot;&gt;Jiangsu University&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/func/&quot; href=&quot;http://agentzh.org/misc/slides/func/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/func/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/func.pdf&quot; href=&quot;http://agentzh.org/misc/slides/func.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/func.pdf&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h2&gt; Design Patterns - Using FAST&lt;/h2&gt;This talk explains the design patterns used in the construction process of the FAST (Flowchart Abstract Syntax Tree transformer) program, which can convert a program described by a flowchart into a structural program.&lt;br&gt;&lt;br&gt;This talk was given as a lecture at the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.ujs.edu.cn/&quot; href=&quot;http://www.ujs.edu.cn/&quot; class=&quot;externalLink&quot;&gt;Jiangsu University&lt;/a&gt;.&lt;br&gt;&lt;br&gt;View slides in your web browser: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/patterns/&quot; href=&quot;http://agentzh.org/misc/slides/patterns/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/patterns/&lt;/a&gt;&lt;br&gt;&lt;br&gt;Download the slides as PDF: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/misc/slides/patterns.pdf&quot; href=&quot;http://agentzh.org/misc/slides/patterns.pdf&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/misc/slides/patterns.pdf&lt;/a&gt;&lt;br&gt;</description>
<link>http://agentzh.org/#Presentations</link>
<pubDate>Tue, 08 Mar 2016 22:49:55 GMT</pubDate>

</item>
<item>
<title>MarkupPostBody</title>
<description>&amp;lt;p/&amp;gt; &amp;lt;p/&amp;gt;&lt;br&gt;&amp;lt;script type=&quot;text/javascript&quot;&amp;gt;&lt;br&gt;&lt;br&gt;  var _gaq = _gaq || [];&lt;br&gt;  _gaq.push(['_setAccount', '&lt;a tiddlylink=&quot;UA-24724974-1&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#UA-24724974-1&quot; href=&quot;http://agentzh.org/#UA-24724974-1&quot; class=&quot;externalLink null&quot;&gt;UA-24724974-1&lt;/a&gt;']);&lt;br&gt;  _gaq.push(['_setDomainName', 'agentzh.org']);&lt;br&gt;  _gaq.push(['_trackPageview']);&lt;br&gt;&lt;br&gt;  var _gaf = (function() {&lt;br&gt;    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;&lt;br&gt;    ga.src = ('https:' == document.location.protocol ? '&lt;a target=&quot;_blank&quot; title=&quot;External link to https://ssl&quot; href=&quot;https://ssl&quot; class=&quot;externalLink&quot;&gt;https://ssl&lt;/a&gt;' : '&lt;a target=&quot;_blank&quot; title=&quot;External link to http://www&quot; href=&quot;http://www&quot; class=&quot;externalLink&quot;&gt;http://www&lt;/a&gt;') + '.google-analytics.com/ga.js';&lt;br&gt;    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);&lt;br&gt;  });&lt;br&gt;  setTimeout(_gaf, 0);&lt;br&gt;&lt;br&gt;&amp;lt;/script&amp;gt;</description>
<link>http://agentzh.org/#MarkupPostBody</link>
<pubDate>Fri, 08 Mar 2013 06:31:00 GMT</pubDate>

</item>
<item>
<title>ContactMe</title>
<description>&lt;a tiddler=&quot;ContactMe&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;You're welcome to mail me via &lt;code&gt;agentzh@gmail.com&lt;/code&gt;. This mail address is also my MSN account.&lt;br&gt;&lt;br&gt;I'm quite active in the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://nginx.org/mailman/listinfo/nginx&quot; href=&quot;http://nginx.org/mailman/listinfo/nginx&quot; class=&quot;externalLink&quot;&gt;nginx&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://nginx.org/mailman/listinfo/nginx-devel&quot; href=&quot;http://nginx.org/mailman/listinfo/nginx-devel&quot; class=&quot;externalLink&quot;&gt;nginx-devel&lt;/a&gt; mailing lists. I'm also keeping an eye on the PerlChina, lua-l and erlang-questions mailing lists as well ;)&lt;br&gt;&lt;br&gt;If you want to ask me questions about my Nginx or &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#OpenResty&quot; href=&quot;http://agentzh.org/#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; related work, please join the &lt;a target=&quot;_blank&quot; title=&quot;External link to http://openresty.org/#Community&quot; href=&quot;http://openresty.org/#Community&quot; class=&quot;externalLink&quot;&gt;OpenResty community&lt;/a&gt; and post there.</description>
<link>http://agentzh.org/#ContactMe</link>
<pubDate>Fri, 08 Feb 2013 19:43:00 GMT</pubDate>

</item>
<item>
<title>StyleSheet</title>
<description>body {&lt;br&gt;    font-size: 1.2em;&lt;br&gt;}</description>
<link>http://agentzh.org/#StyleSheet</link>
<pubDate>Fri, 08 Feb 2013 19:43:00 GMT</pubDate>

</item>
<item>
<title>AboutMe</title>
<description>&lt;a tiddler=&quot;AboutMe&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;img src=&quot;agentzh.jpg&quot; align=&quot;right&quot;&gt; I'm a happy programmer living in San Francisco, CA. My real name is Yichun Zhang, or 章亦春 in Chinese. I usually use the nick &lt;code&gt;agentzh&lt;/code&gt; on the web.&lt;br&gt;&lt;br&gt;I'm currently working as a systems engineer for &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.cloudflare.com&quot; href=&quot;http://www.cloudflare.com&quot; class=&quot;externalLink&quot;&gt;CloudFlare&lt;/a&gt; and my main focus is on Nginx and &lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#OpenResty&quot; href=&quot;http://agentzh.org/#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; development.&lt;br&gt;&lt;br&gt;I used to work for &lt;a target=&quot;_blank&quot; title=&quot;External link to http://cn.yahoo.com&quot; href=&quot;http://cn.yahoo.com&quot; class=&quot;externalLink&quot;&gt;Yahoo! China&lt;/a&gt; and &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.taobao.com&quot; href=&quot;http://www.taobao.com&quot; class=&quot;externalLink&quot;&gt;Taobao, Alibaba&lt;/a&gt; while working in Beijing, China.&lt;br&gt;</description>
<link>http://agentzh.org/#AboutMe</link>
<pubDate>Wed, 04 Jul 2012 20:02:00 GMT</pubDate>

</item>
<item>
<title>OpenResty</title>
<description>&lt;a tiddlylink=&quot;OpenResty&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#OpenResty&quot; href=&quot;http://agentzh.org/#OpenResty&quot; class=&quot;externalLink null&quot;&gt;OpenResty&lt;/a&gt; is a software bundle for various useful Nginx addons, LuaJIT/Lua, and the Nginx core that helps constructing high-performance web applications. See&lt;br&gt;&lt;br&gt;    &lt;a target=&quot;_blank&quot; title=&quot;External link to http://openresty.org&quot; href=&quot;http://openresty.org&quot; class=&quot;externalLink&quot;&gt;http://openresty.org&lt;/a&gt;&lt;br&gt;</description>
<link>http://agentzh.org/#OpenResty</link>
<pubDate>Wed, 27 Jun 2012 07:04:00 GMT</pubDate>

</item>
<item>
<title>Blogs</title>
<description>&lt;a tiddler=&quot;Blogs&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;I'm posting nginx related stuffs and other things to my blog site on Blogger: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.blogspot.com/&quot; href=&quot;http://agentzh.blogspot.com/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.blogspot.com/&lt;/a&gt;&lt;br&gt;&lt;br&gt;I'm also posting Nginx tutorials for both users and developers in Chinese at Sina Blog here: &lt;a target=&quot;_blank&quot; title=&quot;External link to http://blog.sina.com.cn/openresty&quot; href=&quot;http://blog.sina.com.cn/openresty&quot; class=&quot;externalLink&quot;&gt;http://blog.sina.com.cn/openresty&lt;/a&gt;</description>
<link>http://agentzh.org/#Blogs</link>
<pubDate>Tue, 06 Dec 2011 07:46:00 GMT</pubDate>

</item>
<item>
<title>FollowMe</title>
<description>&lt;a tiddler=&quot;FollowMe&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;I'm quite active in Sina Weibo (A twitter clone very popular in China): &lt;a target=&quot;_blank&quot; title=&quot;External link to http://weibo.com/agentzh&quot; href=&quot;http://weibo.com/agentzh&quot; class=&quot;externalLink&quot;&gt;http://weibo.com/agentzh&lt;/a&gt;&lt;br&gt;&lt;br&gt;I do own a twitter account, &lt;a target=&quot;_blank&quot; title=&quot;External link to http://twitter.com/agentzh&quot; href=&quot;http://twitter.com/agentzh&quot; class=&quot;externalLink&quot;&gt;@agentzh&lt;/a&gt;.&lt;br&gt;&lt;br&gt;If you're interested in my opensource development work, go follow me on GitHub! &lt;a target=&quot;_blank&quot; title=&quot;External link to http://github.com/agentzh/&quot; href=&quot;http://github.com/agentzh/&quot; class=&quot;externalLink&quot;&gt;http://github.com/agentzh/&lt;/a&gt;</description>
<link>http://agentzh.org/#FollowMe</link>
<pubDate>Wed, 16 Nov 2011 07:42:00 GMT</pubDate>

</item>
<item>
<title>MarkupPostHead</title>
<description></description>
<link>http://agentzh.org/#MarkupPostHead</link>
<pubDate>Mon, 25 Jul 2011 15:37:00 GMT</pubDate>

</item>
<item>
<title>ErlangFileReadLineBenchmark</title>
<description>&lt;a tiddler=&quot;ErlangFileReadLineBenchmark&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;h1&gt; Source listing&lt;/h1&gt;&lt;h2&gt; reader.erl&lt;/h2&gt;Here's the Erlang implementation A, not using Erlang binaries:&lt;br&gt;&lt;pre&gt;-module(reader).
-export([main/0]).

main() -&amp;gt;
    {ok, File} = file:open(&quot;data.log&quot;, [read]),
    Lines = count_lines(File, 0),
    io:format(&quot;Found ~w lines.~n&quot;, [Lines]),
    halt().

count_lines(File, Count) -&amp;gt;
    case file:read_line(File) of
        {ok, _Line} -&amp;gt;
            count_lines(File, Count + 1);
        eof -&amp;gt;
            Count
    end.
&lt;/pre&gt;&lt;h2&gt; reader-bin.erl&lt;/h2&gt;Here's the Erlang implementation B, using Erlang binaries:&lt;br&gt;&lt;pre&gt;-module(reader).
-export([main/0]).

main() -&amp;gt;
    {ok, File} = file:open(&quot;data.log&quot;, [read, binary]),
    Lines = count_lines(File, 0),
    io:format(&quot;Found ~w lines.~n&quot;, [Lines]),
    halt().

count_lines(File, Count) -&amp;gt;
    case file:read_line(File) of
        {ok, _Line} -&amp;gt;
            count_lines(File, Count + 1);
        eof -&amp;gt;
            Count
    end.
&lt;/pre&gt;&lt;h2&gt; reader-bin-raw.erl&lt;/h2&gt;Here's the Erlang implementation C, using Erlang binaries, raw file mode, and big read_ahead:&lt;br&gt;&lt;pre&gt;-module(reader).
-export([main/0]).

main() -&amp;gt;
    {ok, File} = file:open(&quot;data.log&quot;, [read, binary, raw, {read_ahead, 1024 * 1024}]),
    Lines = count_lines(File, 0),
    io:format(&quot;Found ~w lines.~n&quot;, [Lines]),
    halt().

count_lines(File, Count) -&amp;gt;
    case file:read_line(File) of
        {ok, _Line} -&amp;gt;
            count_lines(File, Count + 1);
        eof -&amp;gt;
            Count
    end.
&lt;/pre&gt;&lt;h1&gt; reader.pl&lt;/h1&gt;Here's the Perl 5 implementation:&lt;br&gt;&lt;pre&gt;open my $in, &quot;data.log&quot; or die;
my $n;
while (&amp;lt;$in&amp;gt;) {
    $n++;
}
print &quot;Found $n lines.\n&quot;;
&lt;/pre&gt;&lt;h1&gt; Test data file&lt;/h1&gt;The data file is from a real nginx error.log file snapshot in our production environment. Here's its basic information:&lt;br&gt;&lt;pre&gt;$ wc data.log
    412003  12957676 197733977 data.log
$ ls -lh data.log
-rw-r--r-- 1 agentz users 189M 2011-06-28 15:08 data.log
&lt;/pre&gt;&lt;h1&gt; Benchmark&lt;/h1&gt;To help OS cache the disk data, we only take the time of the programs' second runs.&lt;br&gt;&lt;h2&gt; Results on Slackware Linux x86_64&lt;/h2&gt;Linux Kernel: 2.6.33.1&lt;br&gt;CPU: Intel Core2Duo T9600&lt;br&gt;Hard disk: SATA 7200'&lt;br&gt;Erlang OTP: R14B01 (erts-5.8.2)&lt;br&gt;Perl: 5.12.1&lt;br&gt;&lt;br&gt;&lt;h3&gt; The Erlang program A compiled in bytecode&lt;/h3&gt;&lt;pre&gt;$ erlc reader.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m14.023s
user	0m13.237s
sys	0m0.742s
&lt;/pre&gt;&lt;h3&gt; The Erlang program A compiled in native code&lt;/h3&gt;&lt;pre&gt;$ erlc +native reader.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m14.007s
user	0m13.233s
sys	0m0.739s
&lt;/pre&gt;&lt;h3&gt; The Erlang program B compiled in bytecode&lt;/h3&gt;&lt;pre&gt;$ erlc reader-bin.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m4.451s
user	0m4.322s
sys	0m0.104s
&lt;/pre&gt;&lt;h3&gt; The Erlang program B compiled in native code&lt;/h3&gt;&lt;pre&gt;$ erlc +native reader-bin.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m4.531s
user	0m4.417s
sys	0m0.095s
&lt;/pre&gt;&lt;h3&gt; The Erlang program C compiled in bytecode&lt;/h3&gt;&lt;pre&gt;$ erlc reader-bin-raw.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m10.001s
user	0m8.520s
sys	0m1.386s
&lt;/pre&gt;&lt;h3&gt; The Erlang program C compiled in native code&lt;/h3&gt;&lt;pre&gt;$ erlc +native reader-bin-raw.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m10.398s
user	0m8.673s
sys	0m1.359s
&lt;/pre&gt;&lt;h3&gt; The Perl 5 program&lt;/h3&gt;&lt;pre&gt;$ time perl reader.pl
Found 412003 lines.

real	0m0.332s
user	0m0.271s
sys	0m0.061s
&lt;/pre&gt;&lt;h2&gt; Results on Mac OS X 10.6.7&lt;/h2&gt;CPU: Intel Core2Duo 1.86GHz&lt;br&gt;Hard disk: SSD&lt;br&gt;Erlang OTP: R14B02 (erts-5.8.3)&lt;br&gt;Perl: 5.12.3&lt;br&gt;&lt;h3&gt; The Erlang program A compiled in bytecode&lt;/h3&gt;&lt;pre&gt;$ erlc reader.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m32.254s
user	0m27.532s
sys	0m4.681s
&lt;/pre&gt;&lt;h3&gt; The Erlang program A compiled in native code&lt;/h3&gt;&lt;pre&gt;$ erlc +native reader.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m32.043s
user	0m27.356s
sys	0m4.646s
&lt;/pre&gt;&lt;h3&gt; The Erlang program B compiled in bytecode&lt;/h3&gt;&lt;pre&gt;$ erlc reader-bin.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m6.700s
user	0m6.447s
sys	0m0.212s
&lt;/pre&gt;&lt;h3&gt; The Erlang program B compiled in native code&lt;/h3&gt;&lt;pre&gt;$ erlc +native reader-bin.erl
$ time erl -noshell -s reader main
Found 412003 lines.

real	0m6.721s
user	0m6.461s
sys	0m0.218s
&lt;/pre&gt;&lt;h3&gt; The Perl 5 program&lt;/h3&gt;&lt;pre&gt;$ time perl reader.pl
Found 412003 lines.

real	0m0.677s
user	0m0.480s
sys	0m0.182s
&lt;/pre&gt;&lt;h1&gt; Conclusion&lt;/h1&gt;Erlang's &lt;code&gt;file:read_line/1&lt;/code&gt; is painfully slow on both Linux and Mac OS X, as of the latest version R14. It's more than one order of magnitude slower than plain Perl 5. Enabling native code generation can make the Erlang version a little faster.&lt;br&gt;&lt;br&gt;Update: Excluding the time involved in beam startup and quit only makes the result &amp;lt;100ms faster according to my tests on the Linux box.&lt;br&gt;</description>
<link>http://agentzh.org/#ErlangFileReadLineBenchmark</link>
<pubDate>Tue, 28 Jun 2011 09:28:00 GMT</pubDate>

</item>
<item>
<title>AboutThisSite</title>
<description>This is site is powered by the excellent &lt;a target=&quot;_blank&quot; title=&quot;External link to http://www.tiddlywiki.com/&quot; href=&quot;http://www.tiddlywiki.com/&quot; class=&quot;externalLink&quot;&gt;TiddlyWiki&lt;/a&gt;.&lt;br&gt;&lt;br&gt;The site's source is hosted on GitHub: &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh/agentzh.org&quot; href=&quot;https://github.com/agentzh/agentzh.org&quot; class=&quot;externalLink&quot;&gt;https://github.com/agentzh/agentzh.org&lt;/a&gt;&lt;br&gt;</description>
<link>http://agentzh.org/#AboutThisSite</link>
<pubDate>Fri, 24 Jun 2011 03:01:00 GMT</pubDate>

</item>
<item>
<title>MainMenu</title>
<description>&lt;a tiddlylink=&quot;AboutMe&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#AboutMe&quot; href=&quot;http://agentzh.org/#AboutMe&quot; class=&quot;externalLink null&quot;&gt;About me&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Blogs&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#Blogs&quot; href=&quot;http://agentzh.org/#Blogs&quot; class=&quot;externalLink null&quot;&gt;Blogs&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;FollowMe&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#FollowMe&quot; href=&quot;http://agentzh.org/#FollowMe&quot; class=&quot;externalLink null&quot;&gt;Follow me&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Presentations&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#Presentations&quot; href=&quot;http://agentzh.org/#Presentations&quot; class=&quot;externalLink null&quot;&gt;Presentations&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;Projects&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#Projects&quot; href=&quot;http://agentzh.org/#Projects&quot; class=&quot;externalLink null&quot;&gt;Projects&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;ContactMe&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#ContactMe&quot; href=&quot;http://agentzh.org/#ContactMe&quot; class=&quot;externalLink null&quot;&gt;Contact me&lt;/a&gt;&lt;br&gt;&lt;a tiddlylink=&quot;AboutThisSite&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#AboutThisSite&quot; href=&quot;http://agentzh.org/#AboutThisSite&quot; class=&quot;externalLink null&quot;&gt;About this site&lt;/a&gt;&lt;br&gt;&lt;img src=&quot;feed-icon-14x14.png&quot;&gt; &lt;a tiddlylink=&quot;RSSFeed&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#RSSFeed&quot; href=&quot;http://agentzh.org/#RSSFeed&quot; class=&quot;externalLink null&quot;&gt;RSS feed&lt;/a&gt;</description>
<category>admin</category>
<link>http://agentzh.org/#MainMenu</link>
<pubDate>Fri, 24 Jun 2011 02:59:00 GMT</pubDate>

</item>
<item>
<title>Projects</title>
<description>&lt;a tiddler=&quot;Projects&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;The most important opensource project that I've been working on for years is &lt;a target=&quot;_blank&quot; title=&quot;External link to http://openresty.org&quot; href=&quot;http://openresty.org&quot; class=&quot;externalLink&quot;&gt;OpenResty&lt;/a&gt;.&lt;br&gt;&lt;br&gt;You can find most of my opensource projects on my GitHub homepage:&lt;br&gt;&lt;br&gt;    &lt;a target=&quot;_blank&quot; title=&quot;External link to https://github.com/agentzh&quot; href=&quot;https://github.com/agentzh&quot; class=&quot;externalLink&quot;&gt;https://github.com/agentzh&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Nginx&lt;/h1&gt;&lt;br&gt;I've started or participated in the development of a bunch of nginx modules:&lt;br&gt;&lt;br&gt;    &lt;a target=&quot;_blank&quot; title=&quot;External link to http://wiki.nginx.org/3rdPartyModules&quot; href=&quot;http://wiki.nginx.org/3rdPartyModules&quot; class=&quot;externalLink&quot;&gt;http://wiki.nginx.org/3rdPartyModules&lt;/a&gt;&lt;br&gt;&lt;br&gt;&lt;h1&gt;Perl&lt;/h1&gt;&lt;br&gt;I'm a Perl programmer that writes dozens of &lt;a target=&quot;_blank&quot; title=&quot;External link to http://search.cpan.org/~agent/&quot; href=&quot;http://search.cpan.org/~agent/&quot; class=&quot;externalLink&quot;&gt;CPAN modules&lt;/a&gt;.</description>
<link>http://agentzh.org/#Projects</link>
<pubDate>Tue, 21 Jun 2011 08:04:00 GMT</pubDate>

</item>
<item>
<title>RSSFeed</title>
<description>&lt;a tiddler=&quot;RSSFeed&quot; commandname=&quot;permalink&quot; class=&quot;button command_permalink&quot; title=&quot;Permalink for this tiddler&quot; href=&quot;javascript:;&quot;&gt;permalink&lt;/a&gt;&lt;br&gt;&lt;br&gt;This site's RSS  feed is available at &lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/index.xml&quot; href=&quot;http://agentzh.org/index.xml&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/index.xml&lt;/a&gt; &lt;img src=&quot;feed-icon-28x28.png&quot;&gt;.</description>
<link>http://agentzh.org/#RSSFeed</link>
<pubDate>Tue, 21 Jun 2011 07:42:00 GMT</pubDate>

</item>
<item>
<title>DefaultTiddlers</title>
<description>&lt;a tiddlylink=&quot;AboutMe&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#AboutMe&quot; href=&quot;http://agentzh.org/#AboutMe&quot; class=&quot;externalLink null&quot;&gt;AboutMe&lt;/a&gt; &lt;a tiddlylink=&quot;ContactMe&quot; refresh=&quot;link&quot; target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/#ContactMe&quot; href=&quot;http://agentzh.org/#ContactMe&quot; class=&quot;externalLink null&quot;&gt;ContactMe&lt;/a&gt;</description>
<link>http://agentzh.org/#DefaultTiddlers</link>
<pubDate>Mon, 20 Jun 2011 09:29:00 GMT</pubDate>

</item>
<item>
<title>SiteUrl</title>
<description>&lt;a target=&quot;_blank&quot; title=&quot;External link to http://agentzh.org/&quot; href=&quot;http://agentzh.org/&quot; class=&quot;externalLink&quot;&gt;http://agentzh.org/&lt;/a&gt;</description>
<category>admin</category>
<link>http://agentzh.org/#SiteUrl</link>
<pubDate>Mon, 20 Jun 2011 09:19:00 GMT</pubDate>

</item>
<item>
<title>SiteTitle</title>
<description>agentzh's home</description>
<category>admin</category>
<link>http://agentzh.org/#SiteTitle</link>
<pubDate>Fri, 17 Jun 2011 08:12:00 GMT</pubDate>

</item>
<item>
<title>SiteSubtitle</title>
<description>yet another idiot who loves programming</description>
<category>admin</category>
<link>http://agentzh.org/#SiteSubtitle</link>
<pubDate>Fri, 17 Jun 2011 03:33:00 GMT</pubDate>

</item>
<item>
<title>YichunZhang</title>
<description>The owner of this site. He loves the nick agentzh though. But please do &lt;em&gt;not&lt;/em&gt; capitalize the nick!</description>
<link>http://agentzh.org/#YichunZhang</link>
<pubDate>Tue, 14 Jun 2011 04:39:00 GMT</pubDate>

</item>
</channel>
</rss>