start

Mountain LionでさくらのVPSのVNCコンソールを使う

MacOS X v10.8 Mountain Lion・・・というか、Java SE Runtime Environment 7だとVNCコンソールが起動できない模様。林檎様の公式ドキュメントでJava 6に戻したら、無事起動出来た。

これで、ESXi上のゲイツにリモートデスクトップしてVNCするというアホな事しなくても済む。

もしもの時のためコマンドを転載。

sudo mkdir -p /Library/Internet\ Plug-Ins/disabled 
sudo mv /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin /Library/Internet\ Plug-Ins/disabled
sudo ln -sf /System/Library/Java/Support/Deploy.bundle/Contents/Resources/JavaPlugin2_NPAPI.plugin /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin 
sudo ln -sf /System/Library/Frameworks/JavaVM.framework/Commands/javaws /usr/bin/javaws

VNCコンソールは日本語キーボード専用だったりとか、(→2013/10/31の更新でキーボード配列が選べるようになった。) さくらのVPS罠大杉だろjk…。ちなみに、僕は“常識的に考えて”よりも女子高生の方が好きです。女子生じゃなくて女子生です。

尚、英語キーボード問題はシステム環境設定>キーボード>キーボードの種類を変更…で、無理やりJISキーボードに設定する事で回避可能。VNC側でキートップ通りの入力が出来る(言うまでもなくMac側はおかしくなるけど)。英語KBしか持ってない変態野郎 ギークも、これで安心だね!!

2014-07-28 追記

いつのまにか「HTML5モード」なるVNCコンソールが用意されていた。名前の通り、VNCビューワのHTML5版だと思われるが、これはイイ!

端末エミュレータで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 を書き換える事で、認証に使う文字を変えられる。小難しい漢字や似た漢字(「博」と「愽」とか)を入れれば更に効果的かも知れない(笑)
  • start.txt
  • 最終更新: 2022-07-27 15:26
  • by Decomo