<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Perl / Drkcore</title><link>http://blog.kzfmix.com/Perl</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Sat, 23 Nov 2019 13:43:12 +0919</lastBuildDate><item><title>画像をリサイズしてサーバーにアップロードするプログラム</title><link>http://blog.kzfmix.com/entry/1574483870</link><description>&lt;p&gt;macosをcatalinaに上げたらperlで書いていた画像をリサイズしてサーバーにアップロードするプログラムが動かなくなって困ったのでpythonで書き直した。&lt;/p&gt;
&lt;p&gt;それにしてもこれいつ書いたんだろう？&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c1"&gt;#!/usr/bin/env perl&lt;/span&gt;

&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="n"&gt;strict&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="n"&gt;warnings&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;DateTime::Format::Epoch::&lt;/span&gt;&lt;span class="n"&gt;Unix&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;Image::&lt;/span&gt;&lt;span class="n"&gt;Imlib2&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;use&lt;/span&gt; &lt;span class="nn"&gt;Net::&lt;/span&gt;&lt;span class="n"&gt;OpenSSH&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$tp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$ARGV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;@files&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nb"&gt;opendir&lt;/span&gt; &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$dh&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#39;.&amp;#39;&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;@f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="sr"&gt;/\.(JPG|jpg|jpeg|PNG|png)$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="sr"&gt;/^\./&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;readdir&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$dh&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nb"&gt;closedir&lt;/span&gt; &lt;span class="nv"&gt;$dh&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nv"&gt;@f&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$ssh&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Net::&lt;/span&gt;&lt;span class="n"&gt;OpenSSH&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;XXXXXXX&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nv"&gt;$ssh&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;SSH connection failed: &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$ssh&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$infile&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;@files&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="nn"&gt;DateTime::Format::Epoch::&lt;/span&gt;&lt;span class="n"&gt;Unix&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;format_datetime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DateTime&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$outfile&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/Users/kzfm/images/blog/&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$now&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;.jpg&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$image&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nn"&gt;Image::&lt;/span&gt;&lt;span class="n"&gt;Imlib2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;load&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$infile&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$infile&lt;/span&gt; &lt;span class="o"&gt;=~&lt;/span&gt;&lt;span class="sr"&gt;  /^DSCN/&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;unless&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$tp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$image&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$image&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nv"&gt;$image&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;image_orientate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="p"&gt;}}}&lt;/span&gt;
  &lt;span class="k"&gt;my&lt;/span&gt; &lt;span class="nv"&gt;$image2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$image&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;create_scaled_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;320&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$image2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;set_quality&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;95&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$image2&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$outfile&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nv"&gt;$ssh&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;scp_put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$outfile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/usr/local/html/images/blog/&amp;quot;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$now&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;.jpg&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nb"&gt;die&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;scp failed: &amp;quot;&lt;/span&gt; &lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nv"&gt;$ssh&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;printf&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;![%s](http://www.kzfmix.com/images/blog/%s.jpg)\n&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nv"&gt;$now&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nv"&gt;$now&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;これをpythonで書き直した。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/usr/bin/env python&lt;/span&gt;

&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;PIL&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;time&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;datetime&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="nn"&gt;glob&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;glob&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;paramiko&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;scp&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;os&lt;/span&gt;

&lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;
&lt;span class="n"&gt;img_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/Users/kzfm/images/blog&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;remote_dir&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;/usr/local/html/images/blog/&amp;quot;&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;get_epoc_name&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;int&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;mktime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;timetuple&lt;/span&gt;&lt;span class="p"&gt;())))&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;save_resize_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;get_epoc_name&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="n"&gt;resize_file_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;{}.jpg&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;en&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img_dir&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;resize_file_name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;filename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;round&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;height&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="n"&gt;width&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resize&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="n"&gt;width&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;height&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;Image&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;LANCZOS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;img&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rotate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;expand&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;img&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s"&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;paramiko&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SSHClient&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;sshc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;sshc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;set_missing_host_key_policy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;paramiko&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AutoAddPolicy&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="n"&gt;sshc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hostname&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;0.0.0.0&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mo"&gt;0000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;XXX&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;scp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SCPClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sshc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get_transport&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;scpc&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;glob&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;*.jpeg&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="n"&gt;fname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;en&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;save_resize_image&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="n"&gt;scpc&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;put&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;fname&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;remote_dir&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
                &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;![{0}](http://www.kzfmix.com/images/blog/{0}.jpg)&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;en&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
                &lt;span class="n"&gt;time&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><pubDate>Sat, 23 Nov 2019 13:43:12 +0919</pubDate><category>Python</category><category>Perl</category></item><item><title>YAPC ASIA 2011に行ってきた</title><link>http://blog.kzfmix.com/entry/1318626693</link><description>&lt;p&gt;スピーカー、スタッフの皆様お疲れ様でした。今年は一日目しか参加できなくて懇親会も出られずに帰ってしまったけど大変充実した一日をおくることができました。&lt;/p&gt;
&lt;p&gt;聴いたセッション&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/96"&gt;Perl 5.16 and beyond&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/91"&gt;Carton: CPAN dependencies manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/77"&gt;SmartPhone development guide with Node/CoffeeScript and HTML5 technologies, for Perl programmers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/56"&gt;Webアプリでパスワード保護はどこまでやればいいか&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/49"&gt;Rubyist のための Perl ウェブアプリケーション開発入門&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/63"&gt;Perl Mongerなりきりカードゲームの考案と実践 &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/44"&gt;perl meets beats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/20"&gt;Mobageソーシャルゲームにおける大規模サーバ運用 with Perl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://yapcasia.org/2011/talk/97"&gt;LT Day 1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;個人的にはフェライト会議室のパスワード保護からperl meets beatsまでの一連のセッションが面白かった。&lt;/p&gt;
&lt;h3&gt;Rubyist のための Perl ウェブアプリケーション開発入門&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://twitter.com/kyanny"&gt;@kyanny&lt;/a&gt;さんの &lt;a href="http://yapcasia.org/2011/talk/49"&gt;Rubyist のための Perl ウェブアプリケーション開発入門&lt;/a&gt;を聞きながら、&lt;a href="https://www.dotcloud.com/"&gt;dotcloud&lt;/a&gt;サインアップした。&lt;a href="http://blog.kzfmix.com/entry/1314182009"&gt;Node.jsで書いたwiki&lt;/a&gt;があるので動かしてみようかと思った。あとperlで書くなら&lt;a href="http://search.cpan.org/perldoc?Mojolicious::Lite"&gt;Mojolicious::Lite&lt;/a&gt;使おうかなぁと。今メインで使っている&lt;a href="http://flask.pocoo.org/"&gt;Flask&lt;/a&gt;もSinatraクローンみたいなもんだし、最近使い始めた&lt;a href="http://expressjs.com/"&gt;Express&lt;/a&gt;もそうだしね。&lt;/p&gt;
&lt;h3&gt;Perl Mongerなりきりカードゲームの考案と実践&lt;/h3&gt;
&lt;p&gt;パルモン&lt;/p&gt;
&lt;p&gt;use strict!出社!出社!出社!出社!&lt;/p&gt;
&lt;p&gt;最高でした。&lt;/p&gt;
&lt;h3&gt;perl meets beats&lt;/h3&gt;
&lt;p&gt;楽しみにしてたトーク。&lt;a href="http://twitter.com/techno_neko"&gt;@techno_neko&lt;/a&gt;さんによる、wave作成の話。思ったよりガチだった。最近、&lt;a href="http://nodeknockout.com/entries"&gt;node.js系のイベント&lt;/a&gt;とかみてると、&lt;a href="http://eightbitbeats.com/"&gt;こういう音作る系&lt;/a&gt;がちょこちょこ出てくるので、興味があったんですよね。&lt;/p&gt;
&lt;p&gt;コードがGitHubにあがっているので後で読んでみる&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/techno-cat/NeSynth"&gt;https://github.com/techno-cat/NeSynth&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;ドラムンベースよいですねと、帰りの新幹線で&lt;a href="http://www.breakbeat.co.uk/"&gt;drum'n'bass arena&lt;/a&gt;眺めてたら、&lt;a href="http://download.breakbeat.co.uk/lpsepsartists/domroland/thebigbanglp.aspx"&gt;Dom &amp;amp; RolandのLP&lt;/a&gt;が出てたので即買い、今聴いてる。&lt;/p&gt;
&lt;h3&gt;その他&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://yapcasia.org/2011/talk/91"&gt;Carton&lt;/a&gt;は便利そう。あれで職場のレガシーな環境をどうにか出来ればいいなぁと。他人事なんだけど、バージョン管理きちんとしないでメンテナがどんどん変わるあのインフラヤバイんちゃうかなぁと思っているので、ああいう管理ツールの助けがあればと。あと、ああいうのは構成管理ツールという認識でいいのだろうか？最近インフラの話を聞くことが多くて境目がどこなのかよく分からなくなっている(そもそも境目なんてないのか？)。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://yapcasia.org/2011/talk/77"&gt;SmartPhone development guide with Node/CoffeeScript and HTML5 technologies, for Perl programmers&lt;/a&gt;を聴いてて、確かにCoffeeScript+Expressで簡単なのは割りとサクサク開発できるなぁと。特にperl(pythonも同じことだろう)である必要性を感じないという結論だったのかなぁと。&lt;/p&gt;
&lt;p&gt;PhoneGapはHTML5 Canvasの後ろの方に載ってたので、読み進めていけばいずれぶつかる。TituniumはShizudevの誰かに聞いてみよう（っていうか誰かハンズオンやってくれないかなぁ）。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/144939390X/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/51dIozk9R9L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;HTML5 Canvas: Native Interactivity and Animation for the Web&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Steve Fulton&lt;br /&gt;
    Oreilly &amp; Associates Inc / 2922円 ( 2011-05-13 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;と、色々刺激になったYAPC::Asiaだった。&lt;/p&gt;</description><pubDate>Sat, 15 Oct 2011 09:12:12 +0919</pubDate><category>Perl</category><category>yapcasia</category><category>yapcasia2011</category></item><item><title>TってPerl派なのかな</title><link>http://blog.kzfmix.com/entry/1151969344</link><description>&lt;p&gt;Natureからの求人メールでおもろいもん見つけた。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.natureasia.com/japan/jobs/jobs/0629takeda.pdf" title="0629takeda.pdf (application/pdf オブジェクト)"&gt;募集職種と応募資格&lt;/a&gt;
&lt;blockquote&gt;分子設計、ケモインフォマティクス、バイオインフォマティクスに関する高度な専門知識・技術を有し、創薬研究に活用できる能力を有する方。プログラミング（Perl、JAVAなど）の経験があり&lt;/blockquote&gt;&lt;/p&gt;
&lt;p&gt;JAVAってのはありがちなんだけど、Perlまで入れてるのは現場の意向かな？&lt;/p&gt;</description><pubDate>Tue, 04 Jul 2006 08:29:04 +0919</pubDate><category>chemoinformatics</category><category>bioinformatics</category><category>Perl</category></item><item><title>Perl Best Practices届いた</title><link>http://blog.kzfmix.com/entry/1143985348</link><description>&lt;p&gt;Perl Best Practices届いたので読む。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0596001738/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/414hzpljk9L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Perl Best Practices&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Damian Conway&lt;br /&gt;
    Oreilly &amp; Associates Inc / 3034円 ( 2005-08 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.hide-k.net/archives/2006/03/yapcasia_2006_t_1.php"&gt;サイン本&lt;/a&gt;うらやましいっす。&lt;/p&gt;</description><pubDate>Sun, 02 Apr 2006 22:42:28 +0919</pubDate><category>Perl</category></item><item><title>YAPC行ってきたヨ</title><link>http://blog.kzfmix.com/entry/1143636438</link><description>&lt;p&gt;今日明日と仕事を放棄して&lt;a href="http://tokyo.yapcasia.org/blog/ja/"&gt;YAPC&lt;/a&gt;行ってます。面子がね、やっぱヤバイし、実際中身も濃かったヨ。&lt;/p&gt;
&lt;img src="http://www.kzfmix.com/images/blosxom/2006032924084.jpg" alt="YAPC2006" /&gt;

&lt;p&gt;色々メモッたけど、&lt;strong&gt;をを!&lt;/strong&gt;と思ったのが、mixiってLAMPなのねってことと、高橋メソッドのプレゼンって、目にくるねということと、ダミアンの話は凄く面白くて、特に印象に残ったのはモジュールはh2xsでなく&lt;a href="http://mfpm.blogdb.jp/app/view/Module::Starter/"&gt;Module::Starter&lt;/a&gt;
つかって書き始めましょうと正規表現にはxmsつけましょうって話&lt;/p&gt;
&lt;p&gt;あとで試してみよう。&lt;/p&gt;
&lt;p&gt;Larry Wallのサイン入りラクダ本はあったけど、Damian Conwayサイン入りベストプラクティス本はなかった。&lt;/p&gt;
&lt;p&gt;&lt;p&gt;&lt;div class="awsxom"&gt;
    &lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/0596001738/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/414hzpljk9L._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;Perl Best Practices&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    Damian Conway&lt;br /&gt;
    Oreilly &amp; Associates Inc / 3034円 ( 2005-08 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;Amazonで早速購入した。&lt;/p&gt;</description><pubDate>Wed, 29 Mar 2006 21:47:18 +0919</pubDate><category>Perl</category></item><item><title>CatalystでMarkdown &amp; flavour</title><link>http://blog.kzfmix.com/entry/1143374695</link><description>&lt;p&gt;面白そうなCatalystのプラグインを見つけたので後で試す。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mfpm.blogdb.jp/app/view/Catalyst::Plugin::Markdown/"&gt;Catalyst::Plugin::Markdown&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Catalystでmarkdown記法で書かれたテキストをHTMLに変換するプラグイン。このblosxomではMarkdown使いまくりなのでCatalystで作った何かに、今までのエントリ移すときとか楽そう。あと、&lt;a href="http://mfpm.blogdb.jp/app/view/Kwiki::Markdown/"&gt;Kwiki::Markdown&lt;/a&gt;ってのもある。普段&lt;a href="http://pukiwiki.sourceforge.jp/"&gt;PukiWiki&lt;/a&gt;使ってるんだけど記法が混在すると混乱するからKwikiに変更しようかな。&lt;a href="http://blog.kzfmix.com/entry/1139185387"&gt;WYSIWYGなエディタ&lt;/a&gt;もあるので、便利そうだし、タグもつけられるし。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://mfpm.blogdb.jp/app/view/Catalyst::Plugin::Flavour/"&gt;Catalyst::Plugin::Flavour&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Catalystでblosxomのフレーバーなことができるプラグイン。htmlとかrssとかURLの最後の.xxxでテンプレートを切り替えられるのでCatalystでその手の機能が欲しい場合には。というか、そういう場面って結構あるはず。&lt;/p&gt;</description><pubDate>Sun, 26 Mar 2006 21:04:55 +0919</pubDate><category>Catalyst</category><category>blosxom</category><category>Perl</category></item></channel></rss>