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' )

TypeKey を MovableType 以外のアプリケーションで利用することはできませんか? (November 9, 2005)

アプリケーションが TypeKey の API に対応していればできます。 TypeKey の API は以下に説明があります。

http://www.sixapart.com/typekey/api/

アプリケーションが TypeKey による認証を利用するには以下が必要です。


  • TypeKey ユーザーとして登録を行い、 TypeKey トークンを取得しておく

  • アプリケーションの URL を指定しておく

TypeKey を利用することでアプリケーションはユーザーのパスワードを知らなくてすみます。ユーザーもアプリケーションにパスワードを流さなくてすみます。 TypeKey は認証した後、ユーザー名と e-mail アドレスのハッシュ値( SHA1 )を CGI パラメータにして指定のサイトに redirect してくれます。

TypeKey とは何ですか? (November 9, 2005)

Six Apart が提供する TypeKeyはオンラインの認証システムです。 blog に対するコメントを書き込む際に認証させることができます。以下に説明されているサイトを挙げます。

Tropy はどのように使えばよいですか? (November 8, 2005)

まだ世の中に登場してから間もない上、明確な目的を持って作られたわけではないようなので特定の使い方はありません。いろいろ実験してみるのがよいでしょう。ただし結城さんは Tropy 設計判断( http://www.hyuki.com/d/200511.html#i20051107092750)を公開されているのでそこから大きくはずれるようなものは避けた方がよいでしょう。試しに以下のようなものが考えられます。

http://cyclon.s11.xrea.com/vivatropy/

  • 過去の賢人(?)による知識を未来に簡潔に伝えるイメージです
  • Random というより次の知識というイメージだったので Next にしてみました
  • サインペンで書くイメージで書き切りとして Edit をなくしました(リンクをとっただけですが)
  • 知識をためるわけではないので 1 行入力しかできません
  • まだないですが item が 1 つ(もしくは 0 )の RSS を発行しても良いかなと思います

もともとの設計思想とちょっと異なりますが重要でも緊急性の低い「教え」みたいなものをためたり閲覧したりできるといいなと思いました。 Pull なんだけど Push な情報の摂取方法かなと思います。

Tropy とは何ですか? (November 8, 2005)

結城浩さんが公開された無秩序な Wiki のようなものです。

http://www.hyuki.com/tropy/