<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux Install Memo</title>
	<atom:link href="http://linux.yebisu.jp/feed" rel="self" type="application/rss+xml" />
	<link>http://linux.yebisu.jp</link>
	<description>Linux Install Memo</description>
	<lastBuildDate>Thu, 17 May 2012 06:12:43 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>□Ktai Entryで壊れた添付画像ファイルがあると処理が止まるのを回避</title>
		<link>http://linux.yebisu.jp/memo/678</link>
		<comments>http://linux.yebisu.jp/memo/678#comments</comments>
		<pubDate>Thu, 17 May 2012 06:12:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MEMO]]></category>

		<guid isPermaLink="false">http://linux.yebisu.jp/?p=678</guid>
		<description><![CDATA[□Ktai Entryで壊れた添付画像ファイルがあると処理が止まるのを回避 WordPressを使っている人で外部からのメール投稿をするときに便利なKtaiEntryですが、ときどき写メを投稿しても投稿できないことがあっ [...]]]></description>
			<content:encoded><![CDATA[<p>□Ktai Entryで壊れた添付画像ファイルがあると処理が止まるのを回避</p>
<p>WordPressを使っている人で外部からのメール投稿をするときに便利なKtaiEntryですが、ときどき写メを投稿しても投稿できないことがあって、気がつかなくていらいらすることがたまにある。</p>
<p>写メが投稿できない場合として、PHPのmemory_limitが足りないのかとかと思ったが、増やしても減らしてもたまに発生するのでおかしいなぁとあれこれ調べていたら、どうもKtai Entryそのものの処理が何かおかしいことがわかった。</p>
<p>&gt; May 17 14:51:18 yebisu apache2: PHP Warning: imagecreatefromstring(): Empty string or invalid image in /home/liveon/html/wp-content/plugins/ktai-entry/inc/post.php on line 895<br />
&gt; May 17 14:51:18 yebisu apache2: PHP Fatal error: Call to undefined method KtaiEntry_Post::log_error() in /home/liveon/html/wp-content/plugins/ktai-entry/inc/post.php on line 801</p>
<p>添付画像を画像ファイルに変換できないときにはPHPはWarningレベルなのでいいのだけど、そのあとの処理で定義されていないlog_error()を呼ぼうとしてFatalになってしまっている。</p>
<p>あれこれするのも面倒なので、とりあえず池田さんが直してくれるまでの措置として、以下のようにlog_error()を呼ばないようにした。</p>
<pre>&gt; private function upload_images($rotations, $post_id = 0, $post_time) {
&gt;         if (count($this-&gt;contents-&gt;images) &lt; 1) { &gt;                 return array();
&gt;         }
&gt;         if (! function_exists('imagecreatefromstring')) {
&gt;                 $this-&gt;log_error(__('GD not available.', 'ktai_entry_log'));
&gt;                 return array();
&gt;         }
&gt;         $attachments = array();
&gt;         foreach ($this-&gt;contents-&gt;images as $count =&gt; $img) {
&gt;                 if ( ! ( ( $uploads = wp_upload_dir() ) &amp;&amp; false === $uploads['error'] ) ) {
&gt;                         $this-&gt;log_error(@$uploads['error']);
&gt;                         return array();
&gt;                 }
&gt;                 $filename = $this-&gt;unique_filename($uploads['path'], $img['name'], $post_time);
&gt;                 $new_file = $uploads['path'] . '/' . $filename;
&gt;                 $this-&gt;base-&gt;debug_print(sprintf(__('Saving file: %s', 'ktai_entry_log'), $new_file));
&gt;                 $result = $this-&gt;save_image($new_file, $img['s_type'], $img['body'], @$rotations[$count]);
&gt;                 if (is_ke_error($result)) {
&gt; // 2012.05.17 T.Kabu BUG?
&gt; //                      $this-&gt;log_error($result-&gt;getMessage());
&gt;                         return $attachments;
&gt;                 }</pre>
<p>こうすると、画像は投稿に添付されないけど、投稿そのものの処理は進むようになったからよしとしよう。</p>
<p>池田さん、改修してくれると嬉しいなー。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.yebisu.jp/memo/678/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>□VineLinux5.x(6も？)でルーティング</title>
		<link>http://linux.yebisu.jp/memo/672</link>
		<comments>http://linux.yebisu.jp/memo/672#comments</comments>
		<pubDate>Mon, 30 Apr 2012 06:42:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MEMO]]></category>

		<guid isPermaLink="false">http://linux.yebisu.jp/?p=672</guid>
		<description><![CDATA[192.168.10.128/29を、192.168.1.2に振る場合を例にしてみる。 /etc/sysconfig/static-routes　に以下のように記述する。 any net 192.168.10.128 n [...]]]></description>
			<content:encoded><![CDATA[<p>192.168.10.128/29を、192.168.1.2に振る場合を例にしてみる。</p>
<p>/etc/sysconfig/static-routes　に以下のように記述する。</p>
<pre>any net 192.168.10.128 netmask 255.255.255.248 gw 192.168.1.2</pre>
<p>なんでこんな面倒なのか…だったらルーティングコマンドをそのまま<br />
書いたほうが速いよね。</p>
<p>とりあえずはルーティング「コマンド」が合っているかどうかを確認<br />
したいので、以下のようなスクリプトを作った。/etc/init.d/network<br />
の、肝心の部分を引っこ抜いて表示するようにしただけのもの。</p>
<pre>#!/bin/sh
grep "^any" /etc/sysconfig/static-routes | while read ignore args ; do
 echo /sbin/route add -$args
done</pre>
<pre></pre>
<p>これを実行してみるとわかるが、要するに行頭に「any」があったら、<br />
そのanyを取っ払って/sbin/routeに投げているだけ…へんなのー。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.yebisu.jp/memo/672/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>□dokanでLinuxサーバーのフォルダをマウント</title>
		<link>http://linux.yebisu.jp/memo/667</link>
		<comments>http://linux.yebisu.jp/memo/667#comments</comments>
		<pubDate>Wed, 11 Jan 2012 02:53:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MEMO]]></category>

		<guid isPermaLink="false">http://linux.yebisu.jp/?p=667</guid>
		<description><![CDATA[dokanでLinuxサーバーのフォルダをWindowsでネットワークドライブとしてマウントしてみたらさっくり出来た。 現在GVC(Grobal Versatile Controller)の開発を続けているが、そろそろデ [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dokan-dev.net/">dokan</a>でLinuxサーバーのフォルダをWindowsでネットワークドライブとしてマウントしてみたらさっくり出来た。</p>
<p>現在<a href="http://www.gvc-on.net/">GVC</a>(Grobal Versatile Controller)の開発を続けているが、そろそろデーモンソースをサーバーにコピペしてあれこれするのが苦しくなってきた。</p>
<p>最初からLinuxでEmacsででも作っていればいいんだろうけど、あれこれするのにWindowsの方がよかったりするので、いままでPHP Editorを使っていた。</p>
<p>で、どうせならマウントすればいいか、と思ったけどSambaをリモートでするのにはちょっと抵抗があったのと、そこまで大げさにする必要なしなので、WinSCPで都度コピればいいかなぁとも思っていたけど、dokanというソフトがあるという事で、試してみたら意外と便利なのでおすすめかも。</p>
<p>インストール方法などはぐぐればいっぱい出てくるのでここでは割愛します。:-)</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.yebisu.jp/memo/667/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>□LinuxでUstream(ffmpegで高解像度配信!?完結編)</title>
		<link>http://linux.yebisu.jp/memo/655</link>
		<comments>http://linux.yebisu.jp/memo/655#comments</comments>
		<pubDate>Tue, 01 Nov 2011 15:29:04 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MEMO]]></category>

		<guid isPermaLink="false">http://linux.yebisu.jp/?p=655</guid>
		<description><![CDATA[LinuxでffmpegをFlash Media Encoder代わりにしてUstreamで長時間ストリーミングしたい…だれもが思うことですが、ぐぐって見れば、みんな数分でffmpegが落ちてしまって挫折しています。 … [...]]]></description>
			<content:encoded><![CDATA[<p>LinuxでffmpegをFlash Media Encoder代わりにしてUstreamで長時間ストリーミングしたい…だれもが思うことですが、ぐぐって見れば、みんな数分でffmpegが落ちてしまって挫折しています。</p>
<p>…そうです、かくいう自分もそんな一人でした。</p>
<p>justin.tvでなんら問題なくストリーミングできていたので、まぁいいかぁとか思っていたんですが、なんとなく思い出して(そもそもはffmpegをコンパイルしたから)もう一度トライしました。</p>
<p>そして…たまたま、偶然にも、いや実際にはぐぐりながらカットアンドトライを何十回と繰り返していたのですが、本当に偶然にも解決しました。判ってしまえば何のことはなかったんです。</p>
<h2>『なんだよFMLEって、Flash Media Encoderは<span style="color: #ff0000;">FME</span>じゃんか』</h2>
<p>答えはこうでした。(さんざんトライした人には判りますよね)</p>
<h3>&gt;… flashver=<span style="color: #ff0000;">FME</span>/3.0…</h3>
<p>Σ(ﾟДﾟ；ｴｰｯ!　これだけかい!!  (ﾟДﾟ)ｺﾞﾙｧ!! ( ﾟ∀ﾟ)ｱﾊﾊ八八ﾉヽﾉヽﾉヽﾉ ＼ / ＼/ ＼…ﾔﾗﾚﾀ</p>
<p>&gt; frame= 4529 fps= 10 q=5.6 Lsize=   44151kB time=00:07:32.80 bitrate= 798.8kbits/s</p>
<p>何人もの人がため息をついた2～3分をぶっちぎっているこの数値を見てください。</p>
<p>以上!!</p>
<p>※デモは<a href="http://livecam.pgw.jp/">http://livecam.pgw.jp/</a>でやってます。:-)<br />
※<a href="http://geroppa.wordpress.com/2011/01/22/%E5%82%99%E5%BF%98%E9%8C%B2%E3%80%80ubuntu-webcamstudio%E5%B0%8E%E5%85%A5/">こちら</a>に重大なヒントがありました!!気がつかせてくれてありがとう!!</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.yebisu.jp/memo/655/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>□PHPでフォーム入力時の画像認証(CAPTCHA認証)を導入</title>
		<link>http://linux.yebisu.jp/memo/640</link>
		<comments>http://linux.yebisu.jp/memo/640#comments</comments>
		<pubDate>Tue, 01 Nov 2011 07:46:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[MEMO]]></category>

		<guid isPermaLink="false">http://linux.yebisu.jp/?p=640</guid>
		<description><![CDATA[登録、投稿、コメントなど、とにかくフォームを設置するとあらゆる方法で 機械的に登録してくる輩がいる。そもそも登録してもお前らには意味がない のだといっても全く聞く耳を持っていない。そりゃそうだ、自動処理をして いるのだか [...]]]></description>
			<content:encoded><![CDATA[<p>登録、投稿、コメントなど、とにかくフォームを設置するとあらゆる方法で<br />
機械的に登録してくる輩がいる。そもそも登録してもお前らには意味がない<br />
のだといっても全く聞く耳を持っていない。そりゃそうだ、自動処理をして<br />
いるのだから。</p>
<p>そこでその自動処理を防ぐために(DBその他に無駄な処理をさせないために)<br />
フォーム入力時の画像認証(CAPTCHA認証)を導入したいのだけど、どれも懲り<br />
すぎていたりするのであんまり気に入らない…ので自分で作りました。</p>
<p>スクリプトは二つ。</p>
<p>一つは「POST」で渡された文字列をPNG画像で表示するスクリプト。(keydata.php)<br />
もう一つは、keydata.phpに対してどのように文字を渡し、どのように結果<br />
の画像を表示するかのスクリプト。</p>
<p>前者は表示するだけのスクリプトだけど、POSTで渡さないといけないところ<br />
がミソ。だってGETで渡すようにしたら簡単に機械処理されてしまうからね。<br />
ここでは5文字を想定していますので、もっと長いほうがよかったり短い方<br />
がよかったり、画像を合成したいとかさらに見難くしたいという場合には、<br />
GDの処理をいろいろ調べてあれこれ加工して下さい。</p>
<p>後者は実際に普段の処理側のこと。生で送られてくるPNGデータをどうしたら<br />
PHP処理内で表示できるのがあれこれ見てみたら、こんな方法がありました。<br />
目からうろこでした。</p>
<p>ただ、IE6までは×(FFやChromeとかOperaならぜんぜんOK)というのと、携帯系<br />
は全然使えませんのであしからず。(スマフォはいけました、Androidレグザで)</p>
<p>こちらは画像を表示する(出力する)スクリプト。</p>
<pre>&lt;?
// ------------------------------------------------------------
// POSTで送信された文字(または数字)をJPEGで返すスクリプト(画像側)
// 2011.11.01 T.Kabu/Future Versatile Group
//
// ・GDライブラリが組み込まれたPHPでないと動きません
// ・このスクリプトに対してkeydataという変数に文字を入れてPOSTして下さい
// ・読めば判るレベルですが、とりあえず5文字を想定しています
// ・フォントはあえて読みにくい文字にするといいと思います
//   ここではYAKITORIフォントを使っています。
//   http://www.forest.impress.co.jp/docs/review/20110117_420882.html
// ------------------------------------------------------------
?&gt;
&lt;?
// ------------------------------
// 初期処理
// ------------------------------
// 画像サイズ設定
$P_W = 128;
$P_H = 36;

// フォントサイズ設定
$F_S = 28;

// ------------------------------
// データ取得
// ------------------------------
// ポストデータでない場合には
if (!isset($_POST['keydata']))
{
    $KEYDATA = 'ERROR';
}
// ポストデータ
elseif(strlen($_POST['keydata']) == 0)
{
    $KEYDATA = 'NONE';
}
elseif(strlen($_POST['keydata']) &lt; 3)
{
    $KEYDATA = 'SHORT';
}
else
{
    $KEYDATA = $_POST['keydata'];
}

// 画像パレットを生成
$IMG_P = imagecreatetruecolor($P_W, $P_H);

// 白色の背景、オレンジのテキストとして設定
$background_color = imagecolorallocate($IMG_P, 240, 240, 240);
$text_color = imagecolorallocate($IMG_P, 255, 137, 0);

// 背景を赤にします
imagefilledrectangle($IMG_P, 0, 0, $P_W - 1 , $P_H - 1, $background_color);

// ttf フォントファイルへのパスを設定します
//$font_file = '/usr/share/fonts/TrueType-vlgothic/VL-PGothic-Regular.ttf';
$font_file = './Yakitori.otf';

// フォントサイズ 13 で 'PHP Manual' というテキストを描画します
imagefttext($IMG_P, $F_S, 0, 3, $P_H - 3, $text_color, $font_file, $KEYDATA);

// ヘッダ出力(単独で呼び出された時などに上記メッセージの画像を出すため
header('Content-Type: image/jpeg');

// 画像データ出力(劣化させるとますます機械認識は厳しい…かな？
imagejpeg($IMG_P, NULL, 25);

// 画像データ破棄
imagedestroy($IMG_P);
?&gt;</pre>
<p>こちらは呼び出すほうのスクリプト。</p>
<pre>&lt;?
// ------------------------------------------------------------
// POSTで任意の文字を渡して帰ってきたJPEGデータをbase64エンコードで表示するスクリプト(呼び出し側)
// 2011.11.01 T.Kabu/Future Versatile Group
//
// ・ポストする方法はあちこちにあるけど、今回はこちらを参考にしました
//   http://www.programming-magic.com/20080226023511/
// ・で、画像を表示するには…なるほど、こんな方法あったのねー、です。
//   http://kaworu.jpn.org/kaworu/2008-04-06-1.php
// ------------------------------------------------------------
?&gt;
&lt;?
// 表示したいデータを生成
$KEYDATA = sprintf("%05d", rand(100,99999));
// 表示するデータのクリプトデータを生成
$CRYPTKEY = crypt($KEYDATA, 'HOGEHOGE');

// フルパスで「POSTで送信された文字(または数字)をJPEGで返すスクリプト(画像側)」を指定
$KEYDATA_URL = 'http://hogehoge.comm/keydata.php';
// 画像生成用のキーデータを設定
$REQUEST_PARAM = array('keydata' =&gt; $KEYDATA);
// リクエストを生成
$REQUEST_DATA = array('http' =&gt; array(
    'method' =&gt; 'POST',
    'content' =&gt; http_build_query($REQUEST_PARAM),
));
// 画像データをリクエストして帰ってきたデータをBASE64でエンコード
$BASE64_IMG = base64_encode(file_get_contents($KEYDATA_URL, false, stream_context_create($REQUEST_DATA)));
?&gt;
&lt;img src="data:image/jpeg;base64,&lt;? print $BASE64_IMG; ?&gt;"&gt;
&lt;BR&gt;
&lt;BR&gt;
&lt;FORM action="./" method="post"&gt;
&lt;INPUT type="hidden" name="CRYPTKEY" value="&lt;? print $CRYPTKEY; ?&gt;"&gt;
&lt;INPUT type="text" name="CHECKKEY" value="" size="10" maxlength="5"&gt;
&lt;INPUT type="submit" name="SUBMIT" value="CHECK"&gt;
&lt;/FORM&gt;
&lt;?
    // クリプトキーとチェックキーがあるなら…チェックをする
    if (isset($_POST['CRYPTKEY']) &amp;&amp; isset($_POST['CHECKKEY']))
    {
        // クリプトチェックがOKなら
        if (crypt($_POST['CHECKKEY'], $_POST['CRYPTKEY']) == $_POST['CRYPTKEY'])
        {
            print "チェックOKです!!&lt;BR&gt;\n";
        }
        else
        {
            print "違うみたいです!?&lt;BR&gt;\n";
        }
    }
?&gt;</pre>
<p>あとは必要に応じていろいろいじって下さい。</p>
<p>追記：2011/11.01 -1-</p>
<p>yum -y install php-gd</p>
<p>…忘れずに。(肝心のターゲットシステムに入ってなかった)</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.yebisu.jp/memo/640/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  linux.yebisu.jp/feed ) in 1.00463 seconds, on May 18th, 2012 at 2:56 am UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 18th, 2012 at 3:56 am UTC -->
<!-- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- Quick Cache Is Fully Functional :-) ... A Quick Cache file was just served for (  linux.yebisu.jp/feed ) in 0.00056 seconds, on May 18th, 2012 at 3:38 am UTC. -->
