Greasemonkey に User Script をインストールしようとすると "NS_ERROR_FILE_NOT_FOUND" となりインストールできません (January 20, 2006)

IE で JScript を利用して外部コンテンツを取得する際に Referer ヘッダを変更することはできませんか? (November 30, 2005)

Firefox で script が置かれているサーバー以外のサーバーのコンテンツを取得するにはどうすればよいですか? (November 30, 2005)

管理者でなくてもネットワーク上に存在するマシンを調べるコマンドはありませんか? (November 28, 2005)

Ruby on Rails で MySQL を利用したら "No such file or directory - /tmp/mysql.sock" というエラーが表示されてしまいます (November 25, 2005)

JavaScript で文字数を数えるにはどうすればよいですか? (November 25, 2005)

MT は https に対応していますか? (November 22, 2005)

MT で Trackback をしたら "HTTP error: 501 Protocol scheme 'https' is not supported" というエラーが発生してしまいました (November 22, 2005)

WindowsXP で Ctrl キーと Shitf キーを入れ替えるにはどうしたらよいですか? (November 16, 2005)

SHA1 によるハッシュを求めるにはどうしたらよいですか? (November 9, 2005)


Greasemonkey に User Script をインストールしようとすると "NS_ERROR_FILE_NOT_FOUND" となりインストールできません (January 20, 2006)

Greasemonkey をインストールしたことがない Firefox に 0.6.2 以上のものをインストールすると発生するようです。これは User Script の格納情報を記述するファイルがないために発生しています。以下の方法でインストールできるようになります。

  1. 利用している Firefox の Profile ディレクトリに移動、 Profile ディレクトリがわからない場合は http://www.mozilla.org/support/firefox/profile#locatehttp://www.mozilla-japan.org/support/firefox/profile#locate を参考のこと
  2. Profile ディレクトリ以下に "gm_scripts" というディレクトリを作成する、すでにあればそのままでよい
  3. gm_scripts ディレクトリに "config.xml" というファイルを作成する、中身は空でよい
  4. この状態で User Script をインストールしてみるとできるようになっている

IE で JScript を利用して外部コンテンツを取得する際に Referer ヘッダを変更することはできませんか? (November 30, 2005)

Microsoft.HTTPXML ActiveX には setRequestHeader というメソッドがあるのですが、ヘッダとして "Referer" を指定した場合、上書きされません。セキュリティ上の観点からだと思われます。

ただし "Referer:" のようにコロンをつけて指定すると Referer ヘッダとして、指定した値が送られます。これを利用すると Referer ヘッダを書き換えることができます。例えば以下の場合 Referer として "http://www.yahoo.co.jp" が送られます。

r.setRequestHeader("Referer:","http://www.yahoo.co.jp")

これは IE のセキュリティホールのようです。したがってそのうち patch が出るかもしれません。(参考:http://secunia.com/advisories/16942/

Firefox で script が置かれているサーバー以外のサーバーのコンテンツを取得するにはどうすればよいですか? (November 30, 2005)

スクリプトに以下のコードを入れて、ユーザーの判断を仰ぎます。

netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesRead")

これによりユーザーにどんなコンテンツを読み込んでも良いかどうか判断をさせるダイアログが表示されます。ユーザーが許可すればスクリプトは他のサーバーのコンテンツを取得することができます。

詳細は Signed Scripts in Mozilla にかかれています。

管理者でなくてもネットワーク上に存在するマシンを調べるコマンドはありませんか? (November 28, 2005)

目的にもよりますが browstat を利用すると解決するかもしれません。これは「ネットワーク一覧」に似たような機能を提供しています。このツールによりドメインの管理者でなくてもドメインコントローラーのホスト名を知ることができます。

このコマンドは標準ではインストールされていません。 http://www.microsoft.com/downloads/details.aspx?FamilyID=49AE8576-9BB9-4126-9761-BA8011FABF38&displayLang=ja からダウンロードできる「 Windows XP Service Pack 2 サポート ツール」に含まれます。

Ruby on Rails で MySQL を利用したら "No such file or directory - /tmp/mysql.sock" というエラーが表示されてしまいます (November 25, 2005)

MySQL で接続のために生成している UNIX socket のファイルが /tmp/mysql.sock にないために発生しています。 MySQL は default でこのパスにファイルを生成しますが、設定によって変更されている場合があります。この場合、明示的に設定してあげる必要があります。

  1. MySQL が UNIX socket をどこに生成しているかを確認
  2. mysqladmin variables | grep socket
  3. config/database.yml のデータベース設定の 1 つとして UNIX socket のパスを追記(データベース名やユーザー名と同様に記述すればよい)、以下 "/var/lib/mysql/mysql.sock" だった場合の例
  4. socket: /var/lib/mysql/mysql.sock
  5. WEBrick を再起動

JavaScript で文字数を数えるにはどうすればよいですか? (November 25, 2005)

単純に文字数であれば length を使います。

var str="test"
alert(str.length)

全角・半角を意識しないバイト数を知りたい場合には charCodeAt() を利用すればよいでしょう。文字数えサンプルを参照してください。

MT は https に対応していますか? (November 22, 2005)

基本的には利用できますが動作確認が甘いように見えます。以下を修正すると良いでしょう。(他にもあるかも)

diff -cr org/MT-3.2-ja-2/lib/MT/App/CMS.pm MT-3.2-ja-2/lib/MT/App/CMS.pm
*** org/MT-3.2-ja-2/lib/MT/App/CMS.pm	2005-09-28 09:47:00.000000000 +0900
--- MT-3.2-ja-2/lib/MT/App/CMS.pm	2005-11-22 17:20:47.795125216 +0900
***************
*** 2488,2494 ****
          if (!$app->param('cfg_screen') && $app->param('name') eq '');
      return $eh->error(MT->translate("Site URL must be an absolute URL."))
          if ($app->param('cfg_screen') eq 'cfg_archives'
!             && $app->param('site_url') !~ m.^http://.);
      require MT::Blog;
      return $eh->error(MT->translate("There is already a weblog by that name!"))
          if (grep { $_->id != $app->param('id')} MT::Blog->load({name => $name}));
--- 2488,2494 ----
          if (!$app->param('cfg_screen') && $app->param('name') eq '');
      return $eh->error(MT->translate("Site URL must be an absolute URL."))
          if ($app->param('cfg_screen') eq 'cfg_archives'
!             && $app->param('site_url') !~ m.^https?://.);
      require MT::Blog;
      return $eh->error(MT->translate("There is already a weblog by that name!"))
          if (grep { $_->id != $app->param('id')} MT::Blog->load({name => $name}));
diff -cr org/MT-3.2-ja-2/lib/MT/Util.pm MT-3.2-ja-2/lib/MT/Util.pm
*** org/MT-3.2-ja-2/lib/MT/Util.pm	2005-09-22 15:54:00.000000000 +0900
--- MT-3.2-ja-2/lib/MT/Util.pm	2005-11-22 17:37:26.610282232 +0900
***************
*** 930,939 ****
      return '' if ($url =~ /[ \"]/);
  
      # help fat-finger typists.
!     $url =~ s,http;//,http://,;
!     $url =~ s,http//,http://,;
  
!     $url = "http://$url" unless ($url =~ m,http://,);
  
      my ($scheme, $host, $path, $query, $fragment) =
          $url =~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,;
--- 930,939 ----
      return '' if ($url =~ /[ \"]/);
  
      # help fat-finger typists.
!     $url =~ s,http(s?);//,http$1://,;
!     $url =~ s,http(s?)//,http$1://,;
  
!     $url = "http://$url" unless ($url =~ m,https?://,);
  
      my ($scheme, $host, $path, $query, $fragment) =
          $url =~ m,(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?,;

https サイトから Trackback されている場合、 mt_tbping の tbping_source_url に不正な URL が入っている場合があります。これはトラックバック一覧から修正することができます。

MT で Trackback をしたら "HTTP error: 501 Protocol scheme 'https' is not supported" というエラーが発生してしまいました (November 22, 2005)

https の通信ができていないために発生しています。 perl のモジュールで Crypt::SSLeay を導入すれば解決されるかもしれません。 CPAN を利用するか Debian なら apt-get で libcrypt-ssleay-perl を入れればよいでしょう。

WindowsXP で Ctrl キーと Shitf キーを入れ替えるにはどうしたらよいですか? (November 16, 2005)

レジストリにて変更ができます。

  1. HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\KeyBoard Layout にバイナリ値 Scancode Map を新規に作成(すでにある場合は作らなくて良い)
  2. 以下のバイナリ値を書き込む
  3. 00 00 00 00 00 00 00 00 03 00 00 00 1D 00 3A 00 3A 00 1D 00 00 00 00 00
  4. OS を再起動

バイナリ値は以下のような並びになります。

version : 4byte ( 0x00000000 )
flag : 4byte ( 0x00000000 )
entry size : 4byte
entry : 4byte * ( entry - 1 )
terminator : 4byte ( 0x00000000 )

SHA1 によるハッシュを求めるにはどうしたらよいですか? (November 9, 2005)

以下 Ruby にて。

require 'digest/sha1'
p Digest::SHA1.hexdigest( 'mailto:test@test.com' )