start

端末エミュレータでemacsを起動すると操作不能になるでござる

昨日あたりから、家鯖(FreeBSD 9.0R)にsshしてemacsを起動すると操作不能に陥るようになった。発生当初は実家から(不安定な回線で)接続していたせいかな?と思い気に留めなかったが、宅内LANからも同症状なので、これは何かがおかしい。

つーわけで、ググってみたらglibが2.31以上で発生するらしいとの情報ががが。現象はまさに一緒。emacs (23.4.1)がCPU 100%食いつぶしてるし、確かに固まるようになる直前にglibを2.34.3に更新してた。

emacs 24なら問題ないとのことなので、portupgradeでサクッと24.3.1にしたら直った。ハラショー。

portsのlang/tcl-modulesが消えた件

portupgradeしようとpkgdb -Fしたら、lang/tcl-modulesが無くなった云々と出てきた。本体に組み込まれたので単体portsとしては廃止になった模様。

じゃーDBから消しても問題ねーべよって事で消そうとしたら、tcl, tk, py27-tkinterが依存してるので消せないよと。

さて、どうしたものかと頭をひねった結果、依存しているパッケージを1つずつ更新すれば依存関係は勝手に消えるだろうと思い至った。なぜならば、tcl-modulesが廃止になったんだから、当然、最新のports treeではtcl-modulesに依存したパッケージは無くなっているはずだという理屈。

実践あるのみというわけで、1つずつportupgrade -Rした所、無事依存関係は解消。DBからtcl-modulesを消す事が出来た。

BlogTNGに迷惑トラックバック除けを仕込む

昨日CAPTCHAの日本語化改造を行ったものの、未だにスパムが来る。平仮名も解析する高性能botなのか?と少し絶望しつつ、改めてスパム履歴を見ていたところ大半がトラックバックだった。captchaの意味なし。/(^o^)\ナンテコッタイ。

そもそもBlogTNGにトラックバックを受け取る機能付いてんの?って話だが(エントリーのどこにもトラックバックアドレスが書かれてないし)、生成されたHTMLを見てみると、RSSの中にtrackback:pingとして埋め込まれていた。なるほどなー、糞スパマーどもはRSSで爆撃対象を効率的に集めながらスパム行為をしてるわけか。少し感心したが、スパマーは氏ね。

当該部分の生成はblogtng/action/linkback.phpで行われているので、てきとーにスパム除け仕様にしといた。

今度こそ・・・今度こそ収まるはずだ・・・!

日本語captcha作ったった

「ギャラクシーS3のカスタムケースあるよ」(英語)というスパムコメントが死ぬほどウザい。一晩で500件も投稿すんな!クソチョンのガラクターなんて持ってねーし、買う気もねーよksg。iPhone関連のスパムはなく、なんでガラクターだけなんだよ。ステマしてんじゃねーよトンスル民族!!

もうマジでげきオコスティックファイナリアリティぷんぷんドリーム状態なので、怒りのままにcaptchaプラグインのひらがな対応化改造を行った。外国人涙目だろうが、こんなクソみたいなサイトを見てる奇特な人は居ないだろうから気にしない。これでbotを誤魔化せるといいんだが…。

折角なのでパッチを公開しておく。

  • CAPTCHA plugin 2013/04/29 15:50版以降
  • Unicode対応の日本語True Typeフォント(ライセンス的に画像化してもいいもの)
  • ↓のパッチ
captcha_ja.patch
--- a/helper.php	2013-04-29 06:50:38.000000000 +0900
+++ b/helper.php	2013-05-05 19:55:44.000000000 +0900
@@ -88,7 +88,7 @@
                 }
                 break;
         }
-        $out .= ' <input type="text" size="5" maxlength="5" name="'.$this->field_in.'" class="edit" /> ';
+        $out .= ' <input type="text" size="10" maxlength="10" name="'.$this->field_in.'" class="edit" /> ';
 
         // add honeypot field
         $out .= '<label class="no">Please keep this field empty: <input type="text" name="'.$this->field_hp.'" /></label>';
@@ -150,11 +150,18 @@
         $numbers = md5($rand * $fixed); // combine both values
 
         // now create the letters
+/*
         $code = '';
         for($i=0;$i<10;$i+=2){
             $code .= chr(floor(hexdec($numbers[$i].$numbers[$i+1])/10) + 65);
         }
-
+*/
+        $strTable = 'あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゐゆゑよらりるれろわをん';
+        $strLength = mb_strlen($strTable);
+        $code = '';
+        for ($i=0;$i<10;$i+=2){
+            $code .= mb_substr($strTable, hexdec($numbers[$i].$numbers[$i+1])%$strLength, 1);
+        }
         return $code;
     }
 
@@ -203,7 +210,7 @@
         }
 
         // draw the letters
-        for ($i = 0; $i < strlen($text); $i++){
+        for ($i = 0; $i < mb_strlen($text); $i++){
             $font  = $fonts[array_rand($fonts)];
             $color = imagecolorallocate($img, rand(0, 100), rand(0, 100), rand(0, 100));
             $size  = rand(floor($h/1.8),floor($h*0.7));
@@ -213,7 +220,7 @@
             $cheight = $size + ($size*0.5);
             $y = floor($h / 2 + $cheight / 3.8);
 
-            imagettftext($img, $size, $angle, $x, $y, $color, $font, $text[$i]);
+            imagettftext($img, $size, $angle, $x, $y, $color, $font, mb_substr($text, $i, 1));
         }
 
         header("Content-type: image/png");
  1. CAPTCHAプラグインをインストール
  2. CAPTCHAの種類を「Image」にする
  3. lib/plugins/captcha/fonts に最初から入っているフォントを使えない状態にする(拡張子を .ttf_ にするなど)
    • ↑にある.ttfをランダムに選んで認証画像を作るので、非日本語フォントがあると正しく画像が生成されない。
  4. lib/plugins/captcha/fonts に日本語フォントを置く
    • ライセンスに注意。IPAフォント(IPAフォントライセンスv1.0準拠)あたりなら問題ないと思われる。
  5. 拙作パッチを当てる
  • 「Image」以外では動作しません。
  • 文字コードはUTF-8しか想定してないので、ブラウザによっては認証が通らない事があるかも?
  • $strTable を書き換える事で、認証に使う文字を変えられる。小難しい漢字や似た漢字(「博」と「愽」とか)を入れれば更に効果的かも知れない(笑)

Portsにnetatalk 3.0.3がキタ━━━(゚∀゚)━━━ !!!!!

Portsのnetatalk3が3.0.3に更新された。

普通に更新してもいいのだが、折角なので[netatalk-ja:0155] Re: 3.0.2でPhotoshop CS5で濁音のファイルがセーブできないのパッチを適用してみる。

この問題を簡単に解説すると、netatalkがリソースフォークを処理する際にファイル名の文字コード変換(Unicode正規化含む)が正常に働かないため、リソースフォークを持ちファイル名に非ASCII文字を含むファイルが保存できないというもの。最近はリソースフォークを持つファイルも減ったようなので(かくいう私はPantherの後半の頃からMacを使い出したのでリソースフォーク全盛の頃を知らなかったりするのだが)、殆どのnetatalk環境では問題が起きないと思われる。ファイルシステムの文字コード絡みの問題なので、ZFSでUnicode正規化を強制してるような環境でも問題は起きない(まさにうちの環境w)。

尚、パッチはTrunk開発ラインに取り込まれているので、3.0.4リリースの暁には直る模様。

果てしなく行儀が悪いけど、お手軽にportsにパッチする形でインストールする。

cd /usr/ports/net/netatalk3
sudo make patch
cd work/netatalk-3.0.3
sudo curl -O http://www003.upp.so-net.ne.jp/hat/files/git-bug511-forkname.patch.gz
sudo gzip -d git-bug511-forkname.patch.gz
sudo patch -p1 < git-bug511-forkname.patch
cd ../../
sudo make
sudo make install

パッチをあてると3.0.4devとしてインストールされるので確認。

$ afpd -v
afpd 3.0.4dev - Apple Filing Protocol (AFP) daemon of Netatalk
 
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.
 
afpd has been compiled with support for these features:
...

よし、OKだ。

  • start.txt
  • 最終更新: 2022-07-27 15:26
  • by Decomo