メイン

programming アーカイブ

2004年03月19日

RFCWiki

Wikiの書法というのは個々人が歩んできたテキストフォーマットの「思想」を反映して、ばらつきが多いというのが特徴ですが、それをRFCとして定義しようという動きがあるということです。

http://www.hyuki.com/tf/?20040318082315 (www.textfile.org)

http://tikiwiki.org/tiki-index.php?page=RFCWiki

やはりboldはアスタリスクで囲まないとねぇ(笑) でも、日本で広く普及しているYukiWiki系(PukiWikiもそうだけど)とはかなりかけ離れた感じですね・・・。

うーむ。統一をはかることは・・・困難な道のりっぽいです。

2004年03月27日

junknews用bookmarklet

うちのサイトのjunknewsこと「続かざる日々のひとりごと」の投稿にはこれまで、

  1. Sukeroku風(というかこっちが元々)のフォーマットでテキストを記述
  2. Java + Relaxerな独自のプログラムを経由してHTMLに変換
  3. エディタ(xyzzy)で貼り付けて、FTP転送

というスタイルを採っていたが、先日全面的にMovable Typeに移行したのをキッカケに投稿スタイルを一新。Sukeroku-plusのPukiWikiスタイルを採用しました。

これまでもSukeroku風用のbookmarkletを使っていたんですが、今回もPukiWiki用利用しやすい形で吐き出すようにしました。

役に立たないと思うけど、せっかくなので(^^;;

// 実際には改行なしの一続きです。
javascript:var url=location.href;var title=window.document.title;
var genre=prompt('genre','');var linkTag='';if(genre!='')linkTag='**['+genre+']\n\n';
var selText=0;if(document.getSelection()!=null&&document.getSelection()!='')selText=1;
if(selText==1)linkTag=linkTag+'-[['+document.getSelection()+':';
if(selText==0)linkTag=linkTag+'-[['+title+':';linkTag=linkTag+url+']] ()\n';
var x=prompt(title,linkTag);return 0;

使い方は適当に想像してください(^^;;

あ、そうそうOpera7.23でしか動作検証していません。ちなみにIE6だと動かなかったのでご注意下さい(笑)

2004年05月05日

Eclipse 3.0の新機能に偏向的に萌えてみる。

これまで「コレ以上重くなってもなぁ」とか考えていたため、特にEclipse 3.0を追いかけていなかったのですが、そろそろ正式版のリリースも見えてきたことやVisual Editorが3.0を要求することを鑑みると、無視するわけにもいかなくなってきたように思われます。

ということでマイルストーンリリースを順に追いかけていき、個人的に面白そうな新機能や改善点を挙げて行こうという試みであります。

続きを読む "Eclipse 3.0の新機能に偏向的に萌えてみる。" »

2004年05月26日

まだまだ進化するEclipse 3.0

先日21日にM9(milestone release)がリリースされました。RCなフェーズを目前にしてまだまだ機能が追加されていきます。

肥大化の懸念も当然あるんですが、それを上回る萌え機能が多いのも事実。

っちゅーことで、M9の追加萌え機能を調査しますた。

http://download2.eclipse.org/downloads/drops/S-3.0M9-200405211200/eclipse-news-all-M9.html

続きを読む "まだまだ進化するEclipse 3.0" »

2004年08月17日

google乗換検索bookmarklet

最近Google特殊機能の路線検索から路線検索を行います。

しかし、いちいち「乗換」と入力するのもだるいので、便利なのかどうか分からんけど、bookmarkletにしてみました(^^;

●google乗換検索bookmarklet

例によってOperaでしか動作検証してないんですが、よろしければお使いください。

2004年09月27日

Firefox向きにjunknews用のbookmarkletを改造する。

今までは\nをつかった改行コードを含むことでPukiWikiフォーマット用のニュースクリップやAmazonへのリンクを実装していましたが、Firefoxではそういった荒業ができなくなってしまいました。

というわけで各行を分割して出す、もしくは行を結合するという妥協案をもって、改造してみました。

はげしく自分用ですが、ご参考までに。

junknews用ジャンルヘッダ

junknews各ニュース

amazonリンク

しかし何か抜け道はないのかなぁ・・・。面倒くさくってかなわん。

2004年11月04日

Amazon Web Servicesのお勉強中です(^^;

今更のようにAmazon Web Services(AWS)のお勉強。ついでにXML::Simpleとかも。

ついに一念発起してmt-sukeroku-plusにAWS連動を付けようという試みですよ。

なんだか久方ぶりに触るのでPerlの文法もおぼつかない状態ですが、大丈夫なんでしょうかね(^^;;

あ、ちなみに結果の取得もダメダメな状態なので、公開はまだ先です(^^;;;

続きを読む "Amazon Web Servicesのお勉強中です(^^;" »

2004年11月06日

Amazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants) β版公開 & 使い方解説

先日mt-sukeroku-plusに追加したAmazon Web Services連携機能なのですが、mt-sukeroku-plusに収めるとなるとどうしても平板かつ標準的な組み込み方しかできないので、あれこれカスタマイズして遊ぶためにどこにでもありそうなAmazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants)を半日で作ってみました。

ここんところ会社で開発っぽいことやってないので、こういう欲求が高まりがちなのかも(^^;

詳細は続きをご覧ください。

続きを読む "Amazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants) β版公開 & 使い方解説" »

2004年11月19日

Amazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants) ソースβ版公開

細々と作り続けているAmazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants)のソースβ版を公開します。
β版と称していても実際にはHSJ.jpで徐々に利用しているものと同じものです。

すでに同様のサービスがある中で公開するのは「自分で使いたいもの」を作りたかったからです。
後付の機能ですが、リストマニアで作った商品カタログからランダムに数件取得し表示する機能はあんまり他で見かけない機能なんではないかと思います。

*だうんろーど

下記リンクからソースファイル(aaa.0.01.pl)をダウンロードして、aaa.cgiにリネームし、お使いのサーバで動くように設定してやってください(いい加減)。

Download: aaa.0.01.pl

*設定の補足

ロリポップの場合、XML::SimpleモジュールがないのでCPANからダウンロードして、aaa.cgiと同じディレクトリにXMLディレクトリを作成し、その下にSimple.pmを置くと動くと思いますヨ。

MovableTypeを使ってる向きはMT/extlib/XMLの下にSimple.pmを置いて、mt.cgiと同じディレクトリに置いて、57行目あたりの

BEGIN {
  unshift @INC, './';
  # MTなフォルダに入れているのなら下の行をコメント解除
  # unshift @INC, './extlib';
}

てな記述にしたがってaaa.cgiをいじったら吉かも。

詳細はソースファイルならびにAAAのページをご覧下さい。
ご不明点があれば、コメントをくださいませ。

Amazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants)の機能AAA LiveAssociateについて(1)

昨日ソースも公開したAmazonアソシエイトプログラム支援プログラムAAAですが、後付の機能であるAAA LiveAssociateが便利な機能ではないかと考えています。
実際にどんなものかちょいとご紹介させていただきます。宣伝モードでごめんなさい。

AAAの商品紹介用HTML出力機能があるのですが、出力されるHTMLはその時点でのデータに固定されてしまいます。*1
それに対し、AAA LiveAssociateはページにリクエストがあるたびにAAAを介して商品紹介HTMLを出力します。

たとえば、現在(11月19日23時すぎ)のニンテンドーDSの表示で比較してみます。



ニンテンドーDS

ニンテンドーDS

  • 出版社・メーカー: 任天堂
  • 発売日: 2004/12/02 (在庫切れ)
  • メディア: Video Game
  • プラットフォーム: Nintendo DS
  • 価格: ¥ 15,000(定価: ¥ 15,000)

上がLiveAssociate版、下がHTML版の出力結果です。
今見る限りではまったく同じ表示なのですが、発売後この発売日: 2004/12/02 (在庫切れ)の部分が通常24時間以内に発送します。とかに変わります。

このような動的な情報取得が可能であるところが、LiveAssociateのメリットでしょう。

弱点としてはページ読み込みが若干もたついたり、JavaScriptを無効にしていると表示されないというあたりが挙げられるかと思われます。

ちなみに次のエントリーでリストマニア機能を使った商品紹介をご紹介します。
(続きを読むと、上記紹介をPukiWiki風フォーマットでやっているコードが見れます)

  • *1: これは現状のmt-sukeroku-plusのASIN:xx:detail書法が抱える問題点でもあります。生成コストがかなり重たく、サイトリビルド時の影響が危惧されるところです。そのためAAA連携書法の実装を考えています。

続きを読む "Amazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants)の機能AAA LiveAssociateについて(1)" »

Amazonアソシエイトプログラム支援プログラムAAA(Amazon Associate Assistants)の機能AAA LiveAssociateについて(2)

先のエントリーではAmazonアソシエイトプログラム支援プログラムAAAの機能AAA LiveAssociateについて簡単にご説明しました

これだけではひとつの商品の紹介という限られた範囲になってしまいます。

結構あるのではないかと思うのは

  • いくつか紹介したいネタがある
  • 一気に表示すると画面の大半をそれに取られちゃう
  • そこから厳選して、いつも同じのを表示しているのはイヤだ
  • とはいえ、毎度毎度差し替えるのは面倒だ

とかいうケースではないでしょうか。

ようするに複数の候補からランダムにいくつかの商品が紹介できる仕掛けがあればいいわけで、AAA LiveAssociateではリストマニアモードというものでこれをサポートしています。

そもそもリストマニアってなんやねんという向きはAmazon.co.jp ヘルプデスクのリストマニア Q&Aをご覧頂くとして、紹介したい複数の候補を保存するデータベースとしてAmazon.co.jpがもともと提供しているリストマニアという機能を借用するというのがここでのミソになります。

たとえば、ここにサンプルとなるリストを用意しました。→作家別おススメ小説(AAAテスト)

この25件*1から商品をランダムに表示しようという試みです。(ここではぼくが作ったリストを利用していますが、他の方のつくられた既存リストを利用しても表示されます)

上記リストを表示中にAAAのbookmarkletを実行してみてください。そこで得られるLiveAssociateコードがこれからの道具となります。

上記商品紹介はリロードするたびにランダムに切り替わると思います。
あまりこれをblogの本文中で利用したりはしないはずで、こういうのは総じてサイドメニューなどに配置されます。

これなんかも表示内容をサイドに併せて若干表示量を減らしてみてバランスを取ってみました。
こういう動的な表示確認をしやすいのがAAAの特徴かと思います。

さらにこの表示件数を最大3件まで増やすことが可能です。

3つ並べるとなると情報量を押さえたほうが目立つ場合もあるでしょうから、このサンプルでは書影+タイトルのみとしています。

しかし、ちょっとばかり問題点があります。

マイリスト自体は即時更新されるのですが、AAAで用いているAmazon Web Servicesで検索をしても見つからなかったり、古い情報が返って来たりするようです。状況を考えるに、一定時間経過するか、毎日同じ時間に同期化しているのだと思われます。

この点に注意していただければ、あなただけの商品カタログを作成して、Webページに張り込むことができるようになる、という寸法です。

ご活用頂ければ幸いです。

  • *1: リストマニアの仕様上最低3件、最高25件の商品指定が必要となる

2004年12月02日

Popup Notifier「にょ」 β公開。

某Messangerソフトのようにタスクバーの下辺りから、ニョキっと表示され消えていくあのウィンドウっぽいものを再現する小道具系アプリケーションを思いつきで作ってみました。需要なんかないだろうけど(^^;

ちなみに最初は「Popup Notifier」だけだったんだけど、横文字むずいと某所で某新妻氏に言われたので「にょ」を付けてみました。大して意味はないにょ*1

久々にWindowsなプログラムを作った感じ(仕事もJavaでWebアプリばっかりだし)です。

しかもVB.netを思い出しながら作ったので、かなりグダグダな造りです。
ソースをもう少し整理してから公開しますので、とりあえずはバイナリだけのご提供ということで。

大したモノでもないのに.NET Framework 1.1が必要なので、ご注意ください。
具体的にはこれこれをインストールしてくださいませ(あとSP1 も)。

PopupNotifier自体のダウンロードはこちらからどうぞ : popupnotifier_beta.zip
(Norton AntiVirus2004で検疫済です)

*使い方

コマンドライン引数を渡して実行します。

PopupNotifier.exe [-t:Title] [-o:Opacity] [-w:WaitMSec] Message

パラメータは次のとおりです。

-t:Title
ポップアップ表示される際のタイトルを指定します。デフォルトは"Popup Notifier「にょ」"です。
-o:Opacity
表示時のウィンドウの透過度をパーセンテージで指定します。0に近いほど薄く、100は通常濃度です。デフォルトは80です。
-w:WaitMSec
せりあがってきた後、そのままで待つ時間をミリ秒で指定します。デフォルトは3000です。
Message
メッセージを指定します。スペースを含むものの場合は両端を"..."で括ってください。ちなみに半角の\nで改行を表します。

*決まり文句

当プログラムの利用に際し、如何なる利益・損害が発生しても、プログラム作者は一切の責任を負いませんので悪しからず。

*ご意見・ご要望・バグ報告

まだまだ未完成なので不具合等あるかと思います。
ご連絡はコメントやトラックバックで頂ければ幸いです。

  • *1: 犬福のつもりです・・・よ?

2005年05月18日

ASK.jp乗換検索bookmarklet

以前、google乗換検索bookmarkletってなものを作りましたが、それのASK.jp版を起こしました。

メリットとしては到着時刻検索ができるようになったことと、その画面内で結果が閲覧できるようになったことでしょうか。

●ASK.jp乗換検索bookmarklet(スタンダード)
●ASK.jp乗換検索bookmarklet(到着時刻指定)
●ASK.jp乗換検索bookmarklet(終電)

ASK.jp側でまだ結果が出たり出なかったりと言うことがあるみたいなので、そのあたりはリトライしてみてください。

続きを読む "ASK.jp乗換検索bookmarklet" »

2005年07月08日

指定したアドレスからAmazon商品リンクを抽出し、再構成するPerlスクリプト

暇つぶしに書いたスクリプト。

実際問題、使い道があるのか無いのか…。でもまぁ、LWP::Simpleは取り回しが楽でいいですねってことで (^^;;

use strict;
use LWP::Simple qw($ua get);
use Jcode;

my $aid   = "hsjjp-22";
my $url   = "http://hsj.jp/junknews/";
my $max   = 10;

#$ua->proxy('http', "http://proxy.hogehoge.co.jp:8080");
my $res = get($url);
if($res){
  my $content = jcode($res)->sjis;
  my @asins;
  while($content =~ s|<a .*?href="(http://www.amazon.co.jp/.*?)".*?>||is){
    my $href = $1;
    if($href =~ s|/ASIN/([0-9A-Z]{10})||i){
      my $asin = $1;
      unless(grep(/$asin/, @asins)){
        push(@asins, $asin);
        if(scalar(@asins) >= $max){
          last;
        }
      }
    }
  }
  foreach my $asin(@asins){
    # 便宜上改行しています
    print qq(<iframe src="http://rcm-jp.amazon.co.jp/e/cm?t=${aid}&o=9&p=8
&l=as1&asins=${asin}&fc1=000000&=1&lc1=0000ff&bc1=000000&lt1=_blank
&IS2=1&f=ifr&bg1=ffffff" width="120" height="240" scrolling="no" marginwidth="0" 
marginheight="0" frameborder="0"></iframe>\n);
  }
}

で、出来たのがこれ。

2005年07月18日

修正版・Google Mapsを介して座標取得するPerlスクリプト

先日のスクリプトだと住所が特定できない場合に福井県沖の座標が帰ってくるというバグがありましたので、その辺を修正。

あと緯度経度がマイナスのことも考慮していなかった(国内だとありえんけど)。

use strict;
use Jcode;
use LWP::Simple qw($ua get);
# ヨドバシカメラ梅田店の座標を取得
my $addr = jcode("大阪府大阪市北区大深町1-1")->utf8;
$addr =~ s/(\W)/'%' . unpack('H2', $1)/eg;
my $res = get("http://maps.google.co.jp/maps?q=$addr");
if($res =~ /<refinements><refinement>/si){
  print "Error.";
}
elsif($res =~ /<center lat="([0-9\.\-]+)" lng="([0-9\.\-]+)"\/>/si){
  my ($lat, $lng) = ($1, $2);
  print "$lat, $lng";
}

この辺を取り込んだこんなのの作成を支援するWindowsアプリケーションをこそこそ開発中です。

近日中にβ版を公開できるかと。

2005年07月19日

ActivePerlでCatalystにチャレンジ!!

話題のCatalystとやらにチャレンジしてみようと思っていましたが、この記事(qootas.org/blog)を頼りに試みるも失敗。

そんな中、たまたまGoogleで「ActivePerl Catalyst」で検索すると、見事にCatalyst PPM's for ActivePerl Windows v5.8.xを発見。

それでは今日ブックマークしていたElementary, ... use Catalyst qw(初挑戦);をトレースしつつ、動作確認をしてみたいと思います。

続きを読む "ActivePerlでCatalystにチャレンジ!!" »

2005年07月20日

続・ActivePerlでCatalystにチャレンジ!! (DB篇)

今回はデータベースも用いて、MVCフレームワークの実現の様子を辿っていきたいと思います。

実験ってことでRDBはSQLiteを使うことにしました。

基本的にPerl の MVC フレームワーク Catalyst に入門してみたを参考にしています。

そちらと併せながら読んでいただければと存じます。

続きを読む "続・ActivePerlでCatalystにチャレンジ!! (DB篇)" »

2005年08月31日

Windows Server 2003上のIIS 6.0とTomcatを連携させる。

先日、仕事でWindows Server 2003上のIIS 6.0とTomcat 4.1.xを連携させるというネタで詰まった点をまとめておきます。
基本的にWindows 2000上でIIS 5.0+Tomcat 4.1.xをやったことはあるけど、2003はやったことない人…向け。

一番詰まったところについては、全面的にInstall: Install IIS 6.0 with Tomcat 4.1.29 using J2SDK 1.4.2 for ArcIMS 9.0 on Windows 2003を参考にしています。

まず、JDKやらjakarta-tomcat-4.1.31.exeとかisapi_redirect-1.2.14.exe†1とかでサクっとインストールしているとかいう感じで、いわゆる普通の手順については割愛します。
worker.propertiesやuriworkermap.propertiesに関しても適当に設定しておいてください。

ここからが本題。
アリガチという感じですが、Windows Server 2003はガチで堅いですネ...

  • 対象となるフォルダ・ファイル
    • JAVA_HOMEなディレクトリ(たとえば、D:\J2SDK1.4.2)
    • JREが入っているディレクトリ(たとえば、C:\Program Files\Java)
    • すでにセットアップされているisapi_redirector.dll
  • 対象となるユーザ
    • Authenticated Users †2
    • Network Service
    • IUSR_<マシン名>

これらのファイル・フォルダ、ユーザの組み合わせで、読み書き実行に関する権限を追加する必要があります。

これが分かるまでどんだけかかった…。
まぁ、あんまり日本語の情報が転がっているような感じではなかったので、まとめてみました。

ご参考までに。

  • †1: NIC二枚挿しの環境でそれぞれのIPアドレスに対してIISの「Webサイト」を構築している場合、順番が手前にある方にしか仮想ディレクトリjakartaを作らないという欠陥があります。ご注意アレ。
  • †2: IISで標準認証とか統合認証しないのならAuthenticated Usersとかは要らんかも?

2007年07月25日

IronRuby PreAlpha 1を触ってみる。

先日公開されたIronRubyのプレアルファ版をちょっと触ってみようと思います。

とりあえず以下の手順でビルドしてみました。

  1. IronRuby-Pre-Alpha1.zipをダウンロードし、展開する。
  2. スタートメニューからMicrosoft Visual Studio 2005Visual Studio ToolsVisual Studio 2005 コマンドプロンプトを開く。
    別にこの方法でなくても.NET Framework SDKのbinにパスが通っていたらいいと思います。
  3. カレントディレクトリをIronRuby-Pre-Alpha1.zipを展開したフォルダに変更する。
  4. build.cmdを実行する。
  5. そしたら次のようなファイルができる。
    • Microsoft.Scripting.dll
    • Microsoft.Scripting.pdb
    • Microsoft.Scripting.xml
    • rbx.exe
    • rbx.pdb
    • Ruby.dll
    • Ruby.pdb
    • RubyTestHost.exe
    • RubyTestHost.pdb

生成されたrbx.exeを実行してみると次のような画面になりますよ。
(この実行は普通のコマンドプロンプトでOK)

D:\IronRuby-Pre-Alpha1\Bin\Release>rbx
IronRuby Pre-Alpha (1.0.0.0) on .NET 2.0.50727.832
Copyright (c) Microsoft Corporation. All rights reserved.
>>> puts 'Hello, World'
=> nil
>>>

実は、最初間違ってput 'Hello, World'とかやったんですが、irbのようにNoMethodErrorが出るのではなくて、.NET CLRのSystem.MissingMethodExceptionと共に大量のスタックトレースが吐き出されました(^^;

せっかくなのでWindowsFormを操作してみます。
(荒井省三さんのblogを参考に試してみました。)

>>> require 'System.Windows.Forms'
=> true
>>> f = System::Windows::Forms::Form.new()
=> #<Form:0000002c>
>>> f.ShowDialog()
=> #<DialogResult:0000002d>
>>>

ボタンを配置して、イベントを発生させてみましょう。

IronRuby Pre-Alpha (1.0.0.0) on .NET 2.0.50727.832
Copyright (c) Microsoft Corporation. All rights reserved.
>>> require 'System.Windows.Forms'
=> true
>>> require 'System.Drawing'
=> true
>>> f = System::Windows::Forms::Form.new()
=> #<Form:0000002b>
>>> b = System::Windows::Forms::Button.new()
=> #<Button:0000002c>
>>> b.Location = System::Drawing::Point.new(50,100)
=> nil
>>> b.Text = '日本語'
=> nil
>>> # ref. http://www.hanselman.com/blog/WPFSampleInIronRubyTalkingViaCToWesabe.aspx
=> nil
>>> b.click do|sender, args|
... System::Windows::Forms::MessageBox.Show(sender.Text)
... end
=> nil
>>> f.Controls.Add b
=> nil
>>> f.ShowDialog
=> #<DialogResult:0000002d>
>>>

もちろん上記コードをソースファイルにして読み込ませることもできます。
っつーか出来なかったら終わってますが(^^;

require 'System.Windows.Forms'
require 'System.Drawing'

f = System::Windows::Forms::Form.new()
b = System::Windows::Forms::Button.new()
b.Location = System::Drawing::Point.new(50,100)
b.Text = '日本語'
b.click do|sender, args|
   System::Windows::Forms::MessageBox.Show(sender.Text)
end
f.Controls.Add b
f.ShowDialog
D:\IronRuby-Pre-Alpha1\Bin\Release>rbx test.rb

ちなみにコード中、律儀にSystem::Windows::Forms::MessageBox.Showとかやっていますが、別に几帳面なのではなくこうしないとエラーになるから仕方なくやっているだけです(^^;
まぁ、まだプレアルファ版ということでこの辺の面倒くさいあたりが改善されていくことを祈るばかりですね。

IronRuby PreAlpha 1でWebブラウザを作ってみたが…。

さっきの記事を書いた後に、もう少しIronRubyを触ってみたところ、なんかおかしい挙動がいろいろと。

当然ですが。
これ以降の内容は全部 pre alpha 1 の環境が前提になっていますので、ご注意くだされ。

とりあえず結構きついのがCLR上の列挙体が今のところ正しく取り扱えないので、WindowsFormのDockプロパティなどが設定できないってこと。
その辺が問題なければさくっと書けそうなところが厳しいですね。
あと、イベント記述方法に問題があるのか、同一クラスのオブジェクトが複数ある場合、先に宣言したイベントのみが有効になっているっぽいです。回避方法がないので、どうしようもない...

ともあれ、イロイロ試してみたブラウザプログラムのソースを以下に放置しておきます(^^;

続きを読む "IronRuby PreAlpha 1でWebブラウザを作ってみたが…。" »

About programming

ブログ「ささやかなる実験場の開発室」のカテゴリ「programming」に投稿されたすべてのエントリーのアーカイブのページです。新しい順番に並んでいます。

前のカテゴリはmtpluginです。

次のカテゴリはtestです。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type