トップ «前の日(01-29) 最新 次の日(01-31)»

PC関係のメモ


Webサービスとは / Webサービスとは(2) / XML-RPCの実際 / 普通のHTTPリクエスト/レスポンスってどんなんだっけ? / cvs-mode for xyzzy / Webページサムネイル画像作成ツール / 2ch管理人 ひろゆき氏のブログ / Apacheの自動起動の設定(RedHat系) / ブラウザの「お気に入り」 / [memo]URL from IEのお気に入り

Webサービスとは

要するにWebサーバが情報を提供する相手が「人」か「アプリケーション」かというだけのような気がする。

いや、ちょっと違うか。今までも「ブラウザ」という固定の「アプリケーション」にHTML(XML) なりJPGなりを提供してたんだから。でも結局は人が見るためのデータだ。

WebサービスはHTMLやJPGの代わりにXMLでデータを提供する((-実際データ形式には依存しないと思うけど-))。それだけなら「index.xml」を置けば出来上がりなんだけど、常に同じデータしか返してこないWebサービスにあんまり意味は無い。

アプリケーションがデータを送り、Webサーバはそのデータに基づいたデータを返す。これはWebサービスに限ったことではなく、ブラウザでWebを見るときにも行っていることだ。違うのはそのデータがXMLか否か。

たとえば検索エンジンを利用するとき、検索窓に文字を入力している。ブラウザは入力された文字をWebサーバに送り、その文字を含むページの探しリストをHTMLにしてブラウザに返す。

これをWebサービス化したのがGoogleが始めた「Google Web API」だ。

このWebサービスを利用するアプリケーションは、検索したい文字をXMLとしてGoogleのWebサービス用のURLに送信する。Googleは受け取った文字を含むページのリストをXMLデータにしてアプリケーションに返す。

アプリケーションはそれをGoogleと同じようにHTMLにしてもいいし、ファイルに保存して終了してもいい。どう利用するかはアプリケーションを作る人次第。

プログラム経験者には「Webを使った関数呼び出し」と説明すると伝わるかも(抽象的過ぎて混乱するか・・・)。WebサーバにURLという関数名と引数を渡して返り値をもらうのだ。

多分Webサービスはもっと壮大なものだと思うけど、僕が使うレベルではこの程度の理解で困らないように思う。

Webサービスとは(2)

しつこいくらいにXML、XMLと書いたが、実はアプリケーションからはXMLを意識する必要は無い。HTTPのプロトコルしらなくてもCGIスクリプト書けるのと一緒。PHPやPerlなどはWebサービス用のライブラリがありXMLはその後ろに隠れて自分の書くコードからは見えない。

XML-RPCの実際

XML-RPC仕様書邦訳によればリクエスト、レスポンスはそれぞれ以下のような構造。

リクエスト

POST /RPC2 HTTP/1.0
User-Agent: Frontier/5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: text/xml
Content-length: 181

<?xml version="1.0"?>
<methodCall>
   <methodName>examples.getStateName</methodName>
   <params>
      <param>
         <value><i4>41</i4></value>
      </param>
   </params>
</methodCall>

レスポンス

HTTP/1.1 200 OK
Connection: close
Content-Length: 158
Content-Type: text/xml
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: UserLand Frontier/5.1.2-WinNT

<?xml version="1.0"?>
<methodResponse>
   <params>
      <param>
         <value><string>South Dakota</string></value>
      </param>
   </params>
</methodResponse>

ごちゃごちゃ考えるより、この実例をひとつ見るほうがよっぽどわかりやすかった。

普通のHTTPリクエスト/レスポンスってどんなんだっけ?

GETは簡単だけど良く考えたらPOSTのほうはあまり考えたことがなかった。考えなくてもPHPはうまくやってくれてるし。

まずはGETリクエスト

GET / HTTP/1.0

レスポンスはリクエストがGETでもPOSTでも同じ(余計なヘッダは省きます)

HTTP/1.1 200 OK
Content-Type: text/html
Date: Fri, 17 Jul 1998 19:55:08 GMT

<html>
<head>
<title>Welcome mylab.jp!</title>
</head>
<body>
mylab.jpへようこそ。
</body>
</html>

フォームなどから入力する場合で、POSTメソッドを使った場合のリクエストはフォームのエンコード方法にmultipart/form-dataや、application/x-www-form-urlencodedがあるらしい。名前から察するに前者はマルチパートのメールみたいにバウンダリで値を区切ったりするんだろう。後者はGETと同様に変数=値&変数=値・・・という感じだろうか。

HTML 4.01仕様書 邦訳 フォームのMIMEタイプ で答えあわせをしてみると、FORM要素の enctype属性に指定できる値はデフォルトのapplication/x-www-form-urlencodedとmultipart/form-dataの2つがあり、一般的にはURLエンコードを使うがファイルを送信する場合には後者のマルチパート方式を使わなければならない。

application/x-www-form-urlencodedを使うPOSTリクエスト

multipart/form-dataを使うPOSTリクエスト

参考サイト

cvs-mode for xyzzy

Memo-cvs-modeを使う

Webページサムネイル画像作成ツール

 Windows
 Windows

LinuxでMozillaを使う方法 http://blog.bulknews.net/mt/archives/000494.htmlより

#!/bin/bash
mozilla -geometry 800x800 &
PID=$!
sleep 3;
ID=`xwininfo -name "Mozilla" -int | perl -e 'while(<>) {
 if   (/Window id: ([0-9]+)/) { print $1; } }'`
mozilla -remote openURL\(http://$1\)
sleep 3;
import -window $ID -silent $1.jpg
kill $PID

http://www.persistent.org/hiki/hiki.cgi?%A4%BF%A4%E0%A4%E9から

2ch管理人 ひろゆき氏のブログ

元祖しゃちょう日記

ココログのページって始めて見た。ニフティ社長のブログもある。

Apacheの自動起動の設定(RedHat系)

http://m9841.info/server/apache2.htmlより

付属の apachectl を利用します.
# cp /usr/local/apache2/bin/apachectl /etc/init.d/apache2
コピーした apache2 を編集します.
# vi /etc/init.d/apache2
25行目くらいのコメントが終わった所で以下を追加します.
#chkconfig: - 85 15
#description: apache2.0
chkconfig に登録します
# chkconfig --add apache2
# chkconfig --level 345 apache2 on
RPM とかで他の httpd がインストールされているときは,
# chkconfig --level 345 httpd off
とかして次回から起動時に自動起動しないようにしておきます.

ブラウザの「お気に入り」

昔は巡回するページをお気に入りに入れていた。それがWWWCを使うようになって巡回にはWWWCを使うようになった。今はそれがアンテナだったりRSSリーダーと併用になっている。

で、ブラウザのお気に入りは調べ物中に有用だと思ったページを登録している。

今その整理中なのだ。お気に入りに登録されていたページを日記に移す作業。

というわけで、いつもより多く更新しております。

Tags: memo
最終更新時刻: 2006年09月13日
コメント(2) [コメントを投稿する]

_ rufein [xyzzyのcvs-modeについての記述はかなり適当にかいてしまったところもあるので、わかりにくいところや間違いが..]

_ hajime [必要な情報が簡潔にまとまっているので助かります。気づいた点があったらお知らせします。]


I18N、L10N、M17Nとは? / [buy] 体重計 OMRON カラダスキャン“チェック” HBF-352 / Miechをビルド

I18N、L10N、M17Nとは?

http://www.atmarkit.co.jp/fxml/rensai/xmlwomanabou11/learning-xml11.html

多言語対応には、大まかに分けて次の3つの段階がある。I18N(Internationalization)は、システムが多言語に対応するための準備ができていることをいう。L10N(Localization)はI18Nより一歩進んだ段階で、特定の1言語で必要とされる、その言語特有の機能を持っていることをいう。例えば日本語のふりがな(ルビ)や禁則処理がそれにあたる。さらにその次の段階として、M17N(Multilingualization)がある。これは複数の言語に対するL10N(Localization)が行われており、1つのデータの中で次々に言語を切り替えることが可能である状態だ。

体重計 OMRON カラダスキャン“チェック” HBF-352

2月からスポーツジムに通うのでその準備。

Miechをビルド

boost.regexとWTLを用意してVS.NET2003でビルド。

最終更新時刻: 2008年11月09日

覚えておきたいプログラミング言語 / [wish][book]Windowsプログラミング関係で欲しい本

覚えておきたいプログラミング言語

プログラマーとして、知っている言語が多いことはいいことだ。と思う。ではどんな言語がいいのかちょっと考えてみる。

きっかけになったのはmixiに端を発する次の論争

昔ながらの工場みたいな製造業的IT企業と、最近流行(?)のサービス業的IT企業のプログラミング言語からみた文化の断絶のお話だろうか?よく読んでないので論争自体には言及しない。

気になったのは元ネタとなった記事の面接官の一言

業務経歴書や得意な言語でPerlと答えると馬鹿にされる傾向がありませんか?

....(中略)...

「うちは Javaで飯食ってるので、そういう低レベルな言語を得意げに話されても困ります」 と言われました。(´・ω・`)ショボーン

突っ込みどころは多いが、とりあえず2点疑問を感じる。

  1. Javaで飯食ってるからperlが必要ない、というのは違うのでは?
  2. perlは高レベル言語(高級言語)であって低レベル言語(低級言語)ではない。低レベル言語とは機械語のような言語を指すのだ。

2は言葉遊びなので置いといて。(つ´∀`)つ

要するに、Java使いでもperl等のスクリプト言語は使えたほうがいいでしょ。と言いたい。

一般に言われる覚えておくといい言語として3つ挙げられる(どっかに書いてあったけどソース紛失)。

  • C/C++、VB、Java等のメインとなる言語
  • マシン語(デバッグ等いざというとき役に立つ)
  • スクリプト言語(ちょっとしたテキスト操作、ツール作成に使える)

ちょっとしたツールを作るのにスクリプト言語なら数行で済むものをJavaとかC/C++使って時間使うのは効率が悪い。

また、C/C++でコンパイラやAPIの内部でバグが発生してるような状況でマシン語が役に立つ。プロジェクトに一人そういう人がいると安心する。

Java使う会社ならJava使えるのは当たり前として+αの言語知ってるほうがうれしいと思う。マシン語は覚えるのにコストがかかるけど、スクリプト言語くらいなら一人一人が知ってるほうがいい。

Windowsプログラミング関係で欲しい本

Windowsプログラミング(特にマルチスレッド)関係で欲しい本が溜まってきたのでここらで整理。どれも内容が被る。「Advanced〜」を買ってから、マルチスレッドについて物足りなければ「Win32マルチスレッドプログラミング(Addison Wesleyの方)」で補完するのが良さそう。オライリーのはレビューによると独自ライブラリらしいのでちょっと躊躇う。

どれもお値段が張るので、立ち読みしてから決めよう。

Advanced Windows 改訂第4版(ジェフリー リッチャー/Jeffrey Richter/長尾 高弘/ロングテール)

Win32マルチスレッドプログラミング (Ascii Addison Wesley programming series)(ジェームズ ビバリッジ/ロバート ウィナー/James E. Beveridge/Robert Wiener/インフォビジョン)

Win32/C++ マルチスレッドプログラミング詳説(アーロン コーエン/マイク ウッドリング/Aaron Cohen/Mike Woodring/鈴木 慎司/金森 玲子)

Tags: wish book
最終更新時刻: 2008年12月29日

Thrift vs. Protocol Buffers / ファイル選択ダイアログで落ちる(8)

Thrift vs. Protocol Buffers

http://stuartsierra.com/2008/07/10/thrift-vs-protocol-buffers

RPCインターフェースを含んでいるので、すぐ始められそうなのがThrift。

http://d.hatena.ne.jp/JiaLu/20080710/1215675696

Thrift自体についてはサイボウズの方が書かれた記事がわかりやすい。

http://cydn.cybozu.co.jp/2007/06/thrift.html

ファイル選択ダイアログで落ちる(8)

2005年に書いた記事のその後。

自分のコードのせいではないとわかったのでもう追っかけてなかったが、まだ影響があるらしい。

最終更新時刻: 2009年02月03日
コメント(2) [コメントを投稿する]

_ solis [お久しぶりです。 これいいですね。 同じものを作ろうと思っていました(とはいえ、簡単にできないけれど) Googl..]

_ hajime [僕も作ろうと思ったらすでにあるよなぁ…と思って探して見つけましたよー。 ぜひ使って感想を教えて下さい(笑)]