<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Fastladder / Drkcore</title><link>http://blog.kzfmix.com/Fastladder</link><description>Programming, Music, Snowboarding</description><language>ja</language><lastBuildDate>Wed, 31 Jul 2013 21:09:35 +0919</lastBuildDate><item><title>GitHub版Fastladderをインストールしてみた</title><link>http://blog.kzfmix.com/entry/1375272032</link><description>&lt;p&gt;&lt;a href="http://blog.kzfmix.com/tag/Fastladder"&gt;5年くらい動かしている&lt;/a&gt;オープンソース版&lt;a href="http://fastladder.org/ja/"&gt;Fastladder&lt;/a&gt;だけど、この５年のうちにヒトの異動なんかでゴミユーザーが溜まりまくったり、メンテも大変だったり（今はsupervisordで動かしている）と、そろそろ新しくしたくなったので、昨日今日で仮想環境から稼働までさせた。&lt;/p&gt;
&lt;p&gt;尚OSはFedora17で、Fastladderは&lt;a href="https://github.com/fastladder/fastladder"&gt;Github版&lt;/a&gt;です。&lt;/p&gt;
&lt;h4&gt;Rubyのインストール&lt;/h4&gt;
&lt;p&gt;2.0.0-p247を入れたんだけど、OS側のライブラリのヘッダファイルが足りなくて何度もコンパイルしなおしたのでストレスフルだった。ちなみにrbenvは使ってない。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;yum install sqlite sqlite-devel
yum install zlib zlib-devel
yum install openssl openssl-devel
yum install libxml2 libxml2-devel
yum install libxslt libxslt-devel
yum install libcurl libcurl-devel
yum install gcc-c++ gcc-c++-devel
yum install mysql mysql-devel
yum install readline readline-devel
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;くらいはやっておく必要があった。それからnode.jsも必要なので入れておきましょう。&lt;/p&gt;
&lt;h4&gt;Fastladderを動かすまで&lt;/h4&gt;
&lt;p&gt;&lt;a href="http://loumo.jp/wp/archive/20130321091154/"&gt;Fastladder を VPS の CentOS5.8 に入れてみた。&lt;/a&gt;を参考にすればよいです。&lt;/p&gt;
&lt;h4&gt;イントラもインターネットもきちんと巡回させる&lt;/h4&gt;
&lt;p&gt;クローラーはオープンソース版もGithub版もそのままではイントラの巡回をうまくやってくれないです。environment.rbのあたりにプロキシを使わない設定があるのだけどそれを書くとエラーで止まるので、&lt;/p&gt;
&lt;p&gt;fastladder.rb(だったかな)に直接正規表現を書き込んだ。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="no"&gt;Fastladder&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;const_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:HTTP_PROXY_EXCEPT_HOSTS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;XXXXXXX&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
&lt;span class="c1"&gt;#Fastladder.const_set(:HTTP_PROXY_EXCEPT_HOSTS, []) unless defined? (Fastladder::HTTP_PROXY_EXCEPT_HOST)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;プロキシのとこも何故かコメントアウトされているので、&lt;a href="http://ruby-doc.org/stdlib-2.0/libdoc/net/http/rdoc/Net/HTTP.html#label-Proxies"&gt;ドキュメント&lt;/a&gt;を参考に書き換えておいた&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="err"&gt;@@&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;58&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="mi"&gt;59&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;13&lt;/span&gt; &lt;span class="err"&gt;@@&lt;/span&gt; &lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;Fastladder&lt;/span&gt;
   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{})&lt;/span&gt;
     &lt;span class="n"&gt;uri&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;link&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;kind_of?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="n"&gt;link&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;URI&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;link&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="o"&gt;-&lt;/span&gt;    &lt;span class="n"&gt;http_class&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;    &lt;span class="c1"&gt;#if proxy = uri.find_proxy || Fastladder::HTTP_PROXY&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;    &lt;span class="c1"&gt;#  unless Fastladder::HTTP_PROXY_EXCEPT_HOSTS.any? { |pettern| uri.host =~ pettern }&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;    &lt;span class="c1"&gt;#    http_class = Net::HTTP.Proxy(proxy.host, proxy.port, proxy.user, proxy.password)&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;    &lt;span class="c1"&gt;#  end&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;    &lt;span class="c1"&gt;#end&lt;/span&gt;
&lt;span class="o"&gt;-&lt;/span&gt;    &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;http_class&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;find_proxy&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="no"&gt;Fastladder&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP_PROXY&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="no"&gt;Fastladder&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP_PROXY_EXCEPT_HOSTS&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;any?&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;pettern&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt; &lt;span class="o"&gt;=~&lt;/span&gt; &lt;span class="n"&gt;pettern&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;        &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kp"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;      &lt;span class="k"&gt;else&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;        &lt;span class="n"&gt;http&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;uri&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;      &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="o"&gt;+&lt;/span&gt;    &lt;span class="k"&gt;end&lt;/span&gt;
     &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;open_timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:open_timeout&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="no"&gt;Fastladder&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP_OPEN_TIMEOUT&lt;/span&gt;
     &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:read_timeout&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="no"&gt;Fastladder&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;HTTP_READ_TIMEOUT&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;h4&gt;OPMLの移行&lt;/h4&gt;
&lt;p&gt;オープンソース版Fastladderにはフォルダに入ってないとフィードがエクスポート出来ないというバグがあるのだけどすっかり忘れていた。少しハマった後思い出して解決。&lt;/p&gt;
&lt;h4&gt;今後やりたいこと&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;ログインをOpenIDにしたい（社内OpenIDサーバー立ててあるので）&lt;/li&gt;
&lt;li&gt;ブックマークサービスとかtwitter系の社内SNSみたいなものとの連携をさせたい&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;まぁ社内ブックマークサービスも社内SNS（しゃべる）も一度か二度ほどコケてるけどね。&lt;/p&gt;</description><pubDate>Wed, 31 Jul 2013 21:09:35 +0919</pubDate><category>Fastladder</category></item><item><title>サーバー起動時にFastladderが一緒に立ち上がるようにする(途中)</title><link>http://blog.kzfmix.com/entry/1300262412</link><description>&lt;p&gt;うちの&lt;a href="http://blog.kzfmix.com/tag/Fastladder"&gt;職場のFastladder&lt;/a&gt;の延べユーザーは7割を超えていて、サーバーが落ちてるとすぐに苦情がくるような状況だ。このアクティブユーザー率にすんのに3年以上の地味な努力と啓蒙活動があったわけだが。&lt;/p&gt;
&lt;p&gt;で、そもそもこういったインフラは僕の仕事じゃないので障害対応しても給料に反映されるわけじゃなくて、むしろ時間を奪われるので、&lt;a href="http://blog.kzfmix.com/entry/1234571509"&gt;クローラーをdaemontools&lt;/a&gt;で動かしたりして手間を減らした。おかげで、一回起動させればサーバーが安定に動いている限りなにもしなくても良くなった(ここ一年くらいは障害対応ほとんどしてない)んだけど、今週から始まった計画停電で毎日起動してシャットダウンをしてというの繰り返しつつ、mongrel立ち上げて、クローラー動かしてっていうのはだるいのできちんと起動、停止するようにしようとした。&lt;/p&gt;
&lt;p&gt;けど、いまのとこうまくいってないのでやっつけスクリプトでしのいでいる。&lt;/p&gt;
&lt;h4&gt;mongrel&lt;/h4&gt;
&lt;p&gt;rc.localで/usr/local/fastladder/tmp/pids/mongrel.pidが存在したらrmするように書いておいて以下のシェルスクリプトをcronで実行するようにしている。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; ! -e /usr/local/fastladder/tmp/pids/mongrel.pid &lt;span class="o"&gt;]&lt;/span&gt;;
&lt;span class="k"&gt;then&lt;/span&gt;
&lt;span class="k"&gt;  &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /usr/local/fastladder; script/server -d -e production
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;ほんとは&lt;a href="http://blog.kzfmix.com/entry/1294913600"&gt;Shapado&lt;/a&gt;のようにpassengerで動かせれば楽なんだろうけどFedoraCore6だからなぁ。インストール出来んのかな？明日調べてみるか。&lt;/p&gt;
&lt;h4&gt;crawler&lt;/h4&gt;
&lt;p&gt;シャットダウン時に&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;svc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fastladder&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;するようにしてみたんだけど、どうもうまくいってないので&lt;a href="http://www.emaillab.org/djb/daemontools/daemontools-howto.html"&gt;ドキュメント読みなおす&lt;/a&gt;。あと&lt;a href="http://www.emaillab.org/djb/tools/daemontools/top.html"&gt;日本語訳&lt;/a&gt;も。&lt;/p&gt;
&lt;p&gt;とりあえず、リブートするとプロセスが即落ちする（svstatで継続時間が1秒以内に落ちてプロセスがどんどん大きくなる状況になる）ので、この場合に&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;svc&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;dx&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fastladder&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fastladder&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nb"&gt;log&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;を適当な感覚でまわし続けるcronを動かしておいた。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/usr/bin/python&lt;/span&gt;

&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;commands&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;import&lt;/span&gt; &lt;span class="nn"&gt;re&lt;/span&gt;
&lt;span class="n"&gt;reup&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;re&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;compile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;(\d+) seconds&amp;quot;&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;get_uptime&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;
  &lt;span class="n"&gt;uptime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="n"&gt;svresult&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;commands&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getoutput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;svstat /service/fastladder&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="n"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;reup&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;svresult&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;m&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;uptime&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;m&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;group&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="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;uptime&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;#39;__main__&amp;#39;&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;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nb"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;300&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;get_uptime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="k"&gt;break&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
      &lt;span class="n"&gt;commands&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;getoutput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#39;svc -dx /service/fastladder /service/fastladder/log&amp;#39;&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;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;</description><pubDate>Wed, 16 Mar 2011 17:02:20 +0919</pubDate><category>Fastladder</category></item><item><title>fastladderのクローラーをdaemontoolsで動かす</title><link>http://blog.kzfmix.com/entry/1234571509</link><description>&lt;p&gt;クローラーがたまに落ちるのでモダンperl入門にあったdaemontoolsを使ってみることにした。&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/4798119172/ref=nosim/kaerutyuuihou-22"&gt;
    &lt;img src="http://ecx.images-amazon.com/images/I/41W6wTHDSzL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
    &lt;strong&gt;モダンPerl入門 (CodeZine BOOKS)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
    牧 大輔&lt;br /&gt;
    翔泳社 / 2940円 ( 2009-02-10 )&lt;br /&gt;
    &lt;br /&gt;
    &lt;br clear="all" /&gt;
    &lt;/div&gt;&lt;/p&gt;&lt;/p&gt;
&lt;p&gt;srpmは&lt;a href="http://www.qmailtoaster.org/"&gt;ここ&lt;/a&gt;からダウンロードしてきて&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;rpmbuild&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt;&lt;span class="n"&gt;rebuild&lt;/span&gt; &lt;span class="n"&gt;daemontools&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;toaster&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;0&lt;span class="p"&gt;.&lt;/span&gt;76&lt;span class="o"&gt;-&lt;/span&gt;1&lt;span class="p"&gt;.&lt;/span&gt;3&lt;span class="p"&gt;.&lt;/span&gt;3&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rpm&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;できたrpmをインストール。&lt;/p&gt;
&lt;p&gt;fastladderのあるディレクトリ(僕の場合は/usr/local/fastladder)でdaemonとdaemon/logっていうディレクトリを作ってそれぞれのディレクトリにrunという実行ファイルを用意&lt;/p&gt;
&lt;p&gt;daemon/run&lt;/p&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1
2
3&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;
&lt;span class="nb"&gt;exec &lt;/span&gt;2&amp;gt;&amp;amp;1
&lt;span class="nb"&gt;exec &lt;/span&gt;setuidgid root /usr/local/fastladder/script/crawler -e production
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;daemon/log/run&lt;/p&gt;
&lt;table class="codehilitetable"&gt;&lt;tr&gt;&lt;td class="linenos"&gt;&lt;div class="linenodiv"&gt;&lt;pre&gt;1
2&lt;/pre&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class="code"&gt;&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="c"&gt;#!/bin/sh&lt;/span&gt;
multilog
&lt;/pre&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;リンク&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;chmod&lt;/span&gt; 1755 &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fastladder&lt;/span&gt;
&lt;span class="n"&gt;ln&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;usr&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fastladder&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;daemon&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;service&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;fastladder&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;あとはdaemontoolsで動かす。&lt;/p&gt;
&lt;p&gt;参考: &lt;a href="http://labs.unoh.net/2008/07/daemontools.html"&gt;daemontoolsでデーモン管理 &lt;/a&gt;&lt;/p&gt;</description><pubDate>Sat, 14 Feb 2009 09:34:54 +0919</pubDate><category>Fastladder</category></item><item><title>fedora8にfastladderを入れた</title><link>http://blog.kzfmix.com/entry/1202390028</link><description>&lt;p&gt;&lt;a href="http://fastladder.org/"&gt;fastladder&lt;/a&gt;素晴らしい。早速インストールしてみた。rubyは普段使わないのでrubygemsから。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;$ &lt;span class="n"&gt;ruby&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rb&lt;/span&gt;
&lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rubygems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;custom_require&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;27&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt; `&lt;span class="n"&gt;gem_original_require&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;such&lt;/span&gt; &lt;span class="n"&gt;file&lt;/span&gt; &lt;span class="n"&gt;to&lt;/span&gt; &lt;span class="n"&gt;load&lt;/span&gt; &lt;span class="o"&gt;--&lt;/span&gt; &lt;span class="n"&gt;rdoc&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rdoc&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;LoadError&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;lib&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;rubygems&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;custom_require&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;27&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;in&lt;/span&gt; `&lt;span class="n"&gt;require&lt;/span&gt;&lt;span class="o"&gt;&amp;#39;&lt;/span&gt;
        &lt;span class="n"&gt;from&lt;/span&gt; &lt;span class="o"&gt;./&lt;/span&gt;&lt;span class="n"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rb&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;39
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;どうもruby-docが足らない。&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;$ &lt;span class="n"&gt;yum&lt;/span&gt; &lt;span class="n"&gt;install&lt;/span&gt; &lt;span class="n"&gt;ruby&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="n"&gt;rdoc&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;


&lt;p&gt;これで、gem installでmongrelとかrailsが入る。&lt;/p&gt;
&lt;p&gt;あと、&lt;a href="http://freeimage.sourceforge.net/index.html"&gt;freeimage&lt;/a&gt;を入れとかないとエラーが出て動かない。なんで&lt;a href="http://www.nitenichiryu.org/archives/2008/02/07/1710.php"&gt;ここ&lt;/a&gt;で解決。ただしyumでは入らなさげだったのでソースから入れた。&lt;/p&gt;
&lt;p&gt;&lt;img alt="fastladder" src="http://www.kzfmix.com/images/blog/fastladder.png" /&gt;&lt;/p&gt;
&lt;p&gt;やー超快適。サーバーとかいじってる暇なさげだけど、隙をみて職場のRSSリーダー入れ替える計画を立てなきゃ。&lt;/p&gt;</description><pubDate>Tue, 21 Oct 2008 19:47:18 +0919</pubDate><category>Linux</category><category>Fastladder</category></item><item><title>Fastladderを触っている</title><link>http://blog.kzfmix.com/entry/1213189726</link><description>&lt;p&gt;職場に入れたかったのでproxyに対応させる必要があった。というわけで作業メモ。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;trunkをsvn coしたらenvironment.rbで&lt;a href="http://groups.google.com/group/fastladder-discuss-ja/browse_thread/thread/df853f5a4508d421"&gt;設定をする&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;&lt;a href="http://tsukamoto.tumblr.com/post/25954593"&gt;rfeedfinderに手を入れる&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;trunkにタイポがあったので二カ所ほど修正した気がする。&lt;/p&gt;

&lt;p&gt;あと、addする際に登録できないフィードがあってなんでかな?と思ってみたら、urlが全部小文字になってた。これもrfeedfinderの仕業だった。&lt;/p&gt;

&lt;p&gt;16行目くらいの&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;uri = uri.grep.sub(/^feed(.*)/,'http\1'/.downcase
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;のdowncaseが邪魔なので、ここを修正。&lt;/p&gt;

&lt;p&gt;今日の作業はここまでだけど、RSSとAtomだったらAtomのほうを購読したほうがよさげな感じがしたりとかするので、そこらへんのコードも見てみながらrubyの勉強もする。&lt;/p&gt;

&lt;p&gt;というか、&lt;a href="http://d.hatena.ne.jp/secondlife/20051026/1130319610"&gt;rubyのシンボル&lt;/a&gt;でちょっと悩んで&lt;a href="http://www.google.co.jp/search?q=ruby+%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AB&amp;amp;lr=lang_ja&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;aq=t&amp;amp;rls=org.mozilla:ja-JP-mac:official&amp;amp;client=firefox-a"&gt;ググったり&lt;/a&gt;とかした。&lt;/p&gt;
</description><pubDate>Sun, 10 Aug 2008 19:51:58 +0919</pubDate><category>Ruby</category><category>Fastladder</category></item><item><title>opensource版fastladderのリダイレクトの処理</title><link>http://blog.kzfmix.com/entry/1216297934</link><description>&lt;p&gt;これを10冊ぐらい買って、さりげなく職場に撒いておきたい今日この頃&lt;/p&gt;

&lt;p&gt;&lt;div class="awsxom"&gt;
&lt;a href="http://www.amazon.co.jp/exec/obidos/ASIN/4844324683/ref=nosim/kaerutyuuihou-22"&gt;
&lt;img src="http://ecx.images-amazon.com/images/I/51DGlrGZRwL._SL160_.jpg" align="left" hspace="5" border="0" alt="ProductName" class="image" /&gt;
&lt;strong&gt;できるポケット+ RSSリーダーで毎朝の情報収集力が10倍アップする本 (できるポケット+)&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;
小林 祐一郎,できるシリーズ編集部 &lt;br /&gt;
インプレスジャパン / ￥ 998 ()&lt;br /&gt;
通常24時間以内に発送&lt;br /&gt;
&lt;br clear="all" /&gt;
&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;はじめてのRubyのおかげで、Rubyのコードを読むのが楽しくなってきたので、opensource版のfastladderで&lt;a href="http://abcnews.go.com/"&gt;ABC&lt;/a&gt;のフィードがブックマークレットから登録できなかった理由を調べた。&lt;/p&gt;

&lt;p&gt;&lt;a href="http://fastladder.googlecode.com/svn/trunk/fastladder/lib/fastladder.rb"&gt;fastladder.rb&lt;/a&gt;がリダイレクトに対応してないっぽいので&lt;a href="http://www.ruby-lang.org/ja/man/html/net_http.html"&gt;こんな感じ&lt;/a&gt;でレスポンスのチェックをすればよさそうなんだけどBasic認証用の処理とか入ってるから、どういう風に書いておけばよいのかわからん。&lt;/p&gt;

&lt;p&gt;あと、RSSのURIをブックマークレットで登録しようとしてもフィードが見つからないとかいうのも直しておきたい。&lt;/p&gt;
</description><pubDate>Thu, 17 Jul 2008 21:35:25 +0919</pubDate><category>Ruby</category><category>Fastladder</category></item></channel></rss>