リンク集(1999年)

国家・政府関係

アメリカ合衆国政府案内
日本国首相官邸
外務省
大蔵省
文部省
厚生省
運輸省
農林水産省
通商産業省
郵政省
労働省
建設省
自治省
総務庁
防衛庁
経済企画庁
科学技術庁
環境庁
国土庁
NASDA(宇宙開発事業団)
理化学研究所
高エネ研

インターネット関係の企業

NTT Home Page
NISインターネットサービス
C&Cインターネットサービス:MESH
TokyoNetインターネットサービス
ITJITNet
PTOP
InfoSphere
ASAHIネット
サイバーネット
GOL
インターネットフューチャー(Internet Future)
リムネット(Rim Net)
ベッコアメ・インターネット(Bekkoame Internet)
ダイナラブ・ジャパン
メルコ株式会社(MELCO WWW)
富士通ホームページ(Fujitsu)
People
NiftyServe
Biglobe
Virtual Tourist
InfoWeb
America OnLine
CompuServe
ドリームネット

情報関係(サーチエンジンなど)

イサイズ(ISIZE)
Japanese Open Yellowpage(個人USERのためのYellowPage)
日本のアクセス・ランキング一覧
CSJ インデックス
Campus-Web
日経産業新聞による、企業のHomePageINDEX
Yahoo Japan
ODIN
NTT
TAITAN
Webdew
Altavista
INFOSEEK JAPAN
goo

特許・知的財産関係

特許関係のホームページ(ひで松さん)
商標(インターネット)
特許事務所を紹介するページ
日本発明資料株式会社(ニッパツ)
世界知的所有権機関(WIPO)
JPO(日本特許庁)
米国特許商標庁(USPTO)
欧州特許庁(EPO)
香港政府知的財産局
ニュージーランド特許庁
カナダ知的財産局
ブラジル特許庁
英国特許庁
スウェーデン特許庁
オーストラリア特許庁
スペイン特許庁

金融関係

ドイツ銀行(Deutshe Bank)
富士銀行(Fuji Bank)
東京三菱銀行(Tokyo-Mitsubishi Bank)
第一勧業銀行(Daiichi Kangyo Bank)
Solomon Brothers International
Lloydsbank
さくら銀行(Sakura Bank)
日本開発銀行(Japan Developpers Bank)
日本輸出入銀行(Japan Export-Import Bank)
大和銀行(Daiwa Bank)
Chase Manhattan
CitiCorp/CitiBank
J.P.Morgan
UBS
Bankers Trust
Barclays Bank
Bank of America
野村證券(Nomura Securities Company)
日興證券(Nikko Securities Company)
大和證券(Daiwa Securities Company)
株式会社武富士
JCB

Programming関係

NRI(野村総研)サイバースペース
Web裏わざ
WWW/HTMLメモ集
Arts Logic Computer’s Java Applets
Java Index(sun)
John December(Java etc)

TV局関係

朝日放送
テレビ朝日
テレビ東京
東京放送(TBS)
日本放送協会(NHK)
フジテレビジョン
日本テレビ
毎日放送
関西テレビ放送

その他

大和ベンチャーランド
ベネッセコーポレーション
ガーラフレンド
この指とまれ!(同窓会名簿)
湧源クラブ(Yugen Club)
11/18 birthday list
美穂の旅
NetMechanic(デッドリンクチェッカー)
NTTソフトウェア
NTTコミュニケーションウェア
株式会社栄光
ネットビレッジ株式会社
トライコーン
栄陽子留学研究所
メディアポリス(ThinkBook)
インターネットハイスクール”風<KAZE>”
(株)アットマーク・ラーニング
アットマーク・インターハイスクール
イー・リサーチ株式会社

大学へのコマ単100選–2年からでは遅すぎる!–

大学へのコマ単100選–2年からでは遅すぎる!–


一二朗池(固有名詞)
この池を目撃してしまったが最後、駒場時代に何回も留年してしまうという恐れ多いジンクスが今も言い伝えられている、恐ろしいマジカルゾーン(1・2浪池?)。また、本郷キャンパスにも、三四郎池(3・4浪池?)と呼ばれる、同じようなジンクスを持つ池があるという事は、1000円札に印刷されているおっさん(夏目漱石)のファンならずしも、ご承知の通りであろう。因みに、この三四郎池の中にNa(原子番号11)の塊を投げ込んで、水柱をあげてしまった教官がいたとかいなかったとか・・・。
ドラ(一般名詞)
ふしぎなポケットから出す秘密道具で、「どこでも○アー」とかいっているロボットとは全く関係がない。日ごろ、教官どもが授業中うるさくしている生徒に対して唯一発動できる報復措置。一般には、「不可」あるいは「D」という、成績表に一番ついて欲しくない記号の俗称。追試で合格さえしてしまえば、なんら問題はないとされている。
ところで、ドラ3つで「ドラミちゃん」、7つで「ドラゴンボール」、9つで「ドラゴンクエスト」というのは本当だろうか?
裏ドラ(一般名詞)
追試(ついし)でも50点以上をとる事ができなくて、単位とかいうものをいただけなくなってしまうこと。一般的には、追試でも不可をくらってしまうことの俗称。ちなみに、追試でなんとか先生を買収して単位を獲得する事を、「ドラが返る」というらしい。(ただし、なんぼ追試でいい点数を取っても、点数は50点よりも上にはならない。念のため。)
エビ固め(固有名詞)
成績表が、「A」と「B」(優と良)でびしっと固められている状態。えびがための人同士が成績について話をし始めると、Aの数がどちらがどれだけ多いか、などといった、えげつない政権争いが繰り広げられ、人間観察の格好のねたとなる。ちなみに、同義語として、ABロード(あぶろーど)などという言葉も存在する。「Ba」(バリウム)という言葉も一部化学マニアには存在する・・・(わけない)。
ウインブルドン(固有名詞)
Aという記号しかみられない、本当にめったにお目にかかる事の出来ない成績表の事。よほどの才能か、まめさが要求される。(あと、ずるがしこさや情報収集能力か!?)全英(A)オープンから。
今度、是非是非「AOL」(エーオーエル)→(エーオール)という言葉を推奨したい。(マニアにしかわからない)
クリスチャン・ディオール(固有名詞)
成績表の成績の欄に、AやBという文字が見うけられない状態を総称してこう言う。よほど怠惰な学生生活を送っていなければ、こんなことにはならない。しかし、逆に「ブランド」として周りの学生たちの人気者になるのは言うまでもない(あくまで、4年間が限度だが・・・こんな状態では、留年するしかないから)。他にも、カフカ(可不可)全集・中日ドラゴンズ・直流(Direct Currency)・CDs・CDプレーヤー・DCブランド、さらに化学マニアにはCd(カドミウム)(まさしく、「イタイイタイ」状態やろうなぁ)などという俗称も存在する。
微視状態(固有名詞)
物理学においては、座標及びそれに共役な運動量の張る『位相空間』(2次元の平面)内のある1点を指定した状態の事。駒場においては、試験でBかCしかとれない状態の事をさす(らしい)。たまに、「びしっとBCしかとれなかったよ〜」、と嘆く人もいるらしい。
交流(AC)(固有名詞)
まぁ、説明するまでもなかろう。ともかく、進学振り分け(進振り)のある駒場生(理1・理2・文3)は、やたらと成績を気にするものなのである。
インタークラス(固有名詞)
あの高田麻由子嬢や左近寺彩子嬢を輩出した、いわく付きのクラス。その実態は、第二外国語をフランス語やドイツ語にしてばりばりインターナショナルを目指す人達の多いクラスということだ。クラスの結束力はかなり強く、全くばらばらの学部に進学することになっても、非常に長く交流が続く、本当にまれなクラスと言えよう。
かなり、駒場では重宝される(特に、英語の授業では)。尚、かなりクラスの平均年齢は高いことは周知の通りである。
履修の手引き(固有名詞)
成績に反比例するように、使用頻度の増す冊子の事。不可をとったとき、あるいは、平均点合格などをしたいと思ったときなどの処方箋が書き記されている。
シケ対(固有名詞)
試験対策委員の通称。シケプリ作成に駒場人生をかける人たち。このシケ対を統括するのが、「シケ長」と呼ばれる非常にボランティア精神のあふれる人。シケ対になると、その担当科目はAになるというメリットがある……といいね。
シケプリ(固有名詞)
試験対策委員が作成する、授業内容をかみくだいたプリントのこと。たまに、先生の好評をかうことがあり、「去年のシケ対は、授業よりもわかりやすいシケプリをつくっていたね」などとのたまう先生もお目見えすることがある。
進振り(固有名詞)
進学振り分けの事。理1・理2・文3生は、否応なくこれを経験しなければならない。3学期までの成績を元に、もう一回行う受験ゲーム。これで不本意な学部に行かざるをえなくなると相当悲しい。
黒マジ(固有名詞)
今は存在しない・・・。(プライバシー権の侵害にあたるという最高裁判決より(うそ))3学期終了後に普通の人は進学先が内定するが、4学期終了段階で取得単位が足りずに内定取り消しになって留年が決定すること。その際に掲示板の上のその人の名前の所が見せしめのように黒いマジックで消されるところから。勿論、もう一回進振りゲームをしなくてはならない。
影武者(固有名詞)
進学希望先の学部・学科の定員により、一般的に難易度が高い学科(理1から理・物とか理2から医・医とか)に行くためには非常にハードな受験生活をしなくてはならない(らしい)。進振りには、中間調査および発表があり、希望する学科に進学したいが最低点に満たない人は、友達の中で成績のいい人を買収して、中間調査での最低点をわざと高くして、他の学生にその学科を敬遠させて、最終段階で楽々内定する、という事をすることができる。このような場合の、友達のために一肌脱いでくれる人のことを「影武者」という。
大掃除(固有名詞)
教務課がいつも学生を留年(黒マジ)させてばっかりいると、教養学部に人がたくさん残ってしまい、飽和状態になる。そこで、何年かに一度、少々成績が悪くても進学させてあげるという大掃除の年が設けられているのである。
教務課・学生課(固有名詞)
教務課は、『鬼の教務課』ともいわれ、とかく学生に対する対応が冷淡で厳しい。一方、学生課は、『仏の学生課』ともいわれ、対応がSOFTである。落とし物をしたときなどはいくらかお金を貸してもらえる。また、バイトや下宿先の紹介・学割の発行も仏の学生課がやっている。
最近は地位が逆転したという噂もある。まぁ、学生課のほうがかわいいおねえさんは多いけどね。(^_^)
印哲行き(名詞??)
文3生で、【俺は勉強なんかよりもインドに行って思想にふけりたいんだー】と、駒場時代に急に悟りだす人達がもらえる「フリー」チケット。もっと超越的な世界に没頭することで、俗世の【進振り】という現実から回避しているだけとも言える。
ウニ文一
日本の頂点の東大法学部に進学できるフリーチケットをあたえられたために、今までの狂ったような受験戦争からの開放感に浸って勉強しなくなる人種をさす。
しかし、彼らは、自称「頭はうに状態」とのたまわっているが、結局は【腐っても鯛】だと思い込んでいる。。。。—うには、どろどろした脳みそを連想させるが、それでもうまいのである。
原理ねーちゃん(固有名詞)
軽犯罪法第1条28項にひっかかっているとはつゆしらず、一生懸命憲法20条の信教の自由を盾に頑張っているおねぇさまがた。こちらからナンパしようとすると、「あなたはサタンの使いです!!」とおどしてくるそうだが、真相は定かではない。むしろ、「生きる事について考えた事がありますか?」と堂々と自分を名乗ってくる「原理にーちゃん」のほうが気にかかる。
井戸型ポテンシャル(名詞)
1時限目と5時限目など、スプリット状態になった2つの時間帯に授業があり、その他の時間が暇で暇でどうしようもない状態。物理学の、「井戸型ポテンシャル」は、両側に束縛条件があり、その真ん中はポテンシャルが0の状態の事。
生協食堂(一般名詞)
一階は普通の食堂(私はここで初めて入試直後に食べた「バターラーメン」のま○さに唖然としたものだが)。2階には、寿司などといったちょっと高級なものがおいてあったりする。その中で、グリルスパコーナーにはグラタン・シチューなどといった洋ものが数多くおいてあり、とても清楚な感じのする憩いの場を提供している。女性の人数が非常に(TITほどではないが)少ないとされる東京大学において、女子トイレ・女子更衣室に次ぐ女子密度の高さがあるとの噂がある。
しみろん(固有名詞)
東京大学物語にでてくるほど有名な、某S水先生の論理学の授業。簡単に単位をとらせてもらえるということで、生徒の間では、「超仏」とされている・・・・。しかし、私も授業を取った事があるが、授業でやっている事はかなり難しく、また、理系人間の知的好奇心を限りなく高揚させてくれる素晴らしい授業である事は、ここで論ずるまでもなかろう。(みんなしってるわけだし)
シャープする(さ行変格動詞)
総合科目等の選択科目で、試験を受けないと、成績表に、音楽等でお馴染みの「#」のマーク(記号)がお目見えする事から、「シャープする」とは、試験を受けないで、なるべく平均点を高くしようとする常套手段の意味となる。また、試験を寝坊でさぼってしまうことを、「寝ブッチ」などともいう。
ブッチする(さ行変格動詞)
一般的には、授業をサボってしまう(サボタージュしてしまう)事を意味する。ぶちっと授業を「切る」ことからこう呼ばれる。さらに、「シャープする」と同じ意味でつかうこともある。ブッチしすぎると、鬼の教官・教務課からは「もう一度駒場生をやろうね」という魔の引導をわたされる危険性が高くなるのはいうまでもない。
地下通路(地下道)(固有名詞)
銀杏並木の下を走る秘密通路。駒場祭のときには警備が薄くなるため、侵入するならその時に限る。一説には、駒寮生が雨天時に濡れないようにとの大学側の配慮からとも、戦時中の防空壕代わりともいわれ、未だに謎が深い。昔は東大も金持ちだった、ということやな、うん。
銀杏伝説(固有名詞)
東京大学に数少ない女子学生は、その逆ハーレム的な状況から、比較的大学生デビューしやすい環境にある。そんな中、駒場に生息する彼女ら(1年生)が、駒場の銀杏並木の葉が全て落ちてしまう11月12月迄にボーイフレンドをつくってしまわないと、一生寡婦になってしまうという言い伝え(彼氏ができないという言い伝え)。まぁ、どっかの調査で2年生の8割には恋人がいないという事だし。。。。
おちゃじょ(固有名詞)
本郷キャンパスの近くにある、お茶の水女子大学の事。日本で唯一(でもないが)女性のためにつくられた国立大学。実は男性でも入学できるらしい。かなり偏差値が高いためか、他の男子学生はあまり寄り付かないが、東大生とっては貴重なゴウコン相手となる。しかし、そんな彼女らも、1/3伝説の事をしらない・・・。(中森明菜の歌とは何等関係がない)ちなみに、ここにも銀杏伝説が存在する。
1/3伝説(固有名詞)
東大とは多少関係無いが、お茶の水女子大学や津田塾大学に言い伝えられる伝説。
お茶の水女子大学の場合、「東大・その他・結婚できない」・津田塾大学の場合「一橋(いっきょう)・その他・結婚できない」というのが1/3伝説である。
尚、津田塾大学の場合、「津田梅子の銅像」を見るだけで結婚できなくなるという噂も結構ある。
とんじょ(固有名詞)
東京女子大学。東大の駒場生がよく使う井の頭線ぞいの「井の頭公園駅」の近くの牟礼キャンパスと、西荻窪駅近辺の善福寺キャンパスの二つがあるが、いずれ1つに吸収合併される模様。善福寺キャンパスの学園祭は、ここの教会の上にある「SUNT VERA …」という言葉からとって、ベラ祭と呼ばれている。
ぽんじょ(固有名詞)
日本女子大学。早稲田大学とお茶の水女子大学の中間あたりにあるハイソながっこ。
3S(固有名詞)
在京の三大名門女子大学である、「聖心女子大学」「清泉女子大学」「白百合女子大学」のローマ字の頭文字Sをとって、こういうらしい。東大生は、ハイソなお嬢様にめっぽう弱いという評判である。
モヤイ像(固有名詞)
JR渋谷駅西口にある巨大な石像。待ち合わせなどによく利用される。他にも、「ハチ公」などもよく利用される。
フサカの池(一般名詞)
11号館の横にある(あった)防火用水。実験などで使用される、フサカの幼虫などを飼っている。また、フサカ以外の蚊の幼虫やなんかも、彼らと寝食を共にしている。
鬼(一般名詞)
駒場の生徒をこよなく愛するため、なかなか駒場から脱出させてくれない教官たちの事。ただし、その愛も一方通行なため、一般的には、学生に嫌われてしまうこと多し。彼らの授業の後には、Dの沢山ついた成績表と後悔だけが残る。因みに、D(どら)をつける数がやたらと多くなると、「撃墜王」の称号をあずかることができるとされている。
仏(一般名詞)
駒場の生徒をはやく駒場から追い出して、いつも駒場をフレッシュな状態に保っておきたいと心底では考えているやさしい教官たちの事。しかし、たまにAを出しすぎると、教授会で問題になるらしい。勿論、鬼教官にも言える事ではあるが。
リーチ(固有名詞)
理�生のこと。特に、進振りがさしせまったときは、文字どおり「リーチ一発裏ドラ」を期待する輩が増える。
基本的に、数学と物理をこよなく愛する人が多く、理学部・工学部などに進学する人が多い。
また、トイレに行けば自分かその両側の人のどれかがリイチだという事態になってしまうことが多い。
リニ(固有名詞)
理�生のこと。生物系・化学系・薬学部などに行く人が多い。尚、ここから医学部医学科に行くことも(10人まで)可能であるが、尋常ではない点数を要求される。
女の子も多く、一番居心地のいい類といえる。
リサン(固有名詞)
理�生のこと。官僚組織にも負けずともおとらないほどの「頭堅い」組織として有名な天下の東京大学医学部にストレートに行くことができる。しかし、受験戦争におわれすぎて一家「離散」してしまうこともしばしばある・・・らしい。
すみずみまで効くのは、「バ○サン」であって、彼らとは全く関係が無い。
ブンイチ(固有名詞)
文科一類生のこと。「官僚養成学校」としてなをとどめている東大法学部にストレートに入れるパスポートを無条件に与えられている。
教養の二年間は「休養」で、残りはLECという不届き者があまりに多い。が、所詮「腐っても鯛」であるのが悔しい。
ブンニ(固有名詞)
文科二類生のこと。経済学部に無条件に進学できる。しかし、かなり教養学部のカリキュラムが少ないために、ネコと化す者多数。
ブンサン(固有名詞)
名前の割に、クラスの結束力は深い。文科三類生のこと。
かわいい女の子が沢山居るのが非常に嬉しい。教育学部・教養学部・文学部などに行く人が多い。
一学期テスト(一般名詞)
文�生が遊ぶ時期。
二学期テスト(一般名詞)
文�生が登校する時期。
履修届け(固有名詞)
必修科目の記入を間違えると、次の年のオリ合宿にもう1回1年生として参加できるありがた〜〜い紙切れ。
オリ合宿(固有名詞)
オリエンテーション合宿の略。駒場のクラスは、語学によって決定されるが、その上の代のクラスの方々が新一年生を引率して色々な所につれていってくれる。
尚、昔は、これが原因でどこかの湖でなくなった方もいるらしい。お酒には注意しましょう。
レーニン体育館(固有名詞)
トレーニング体育館の表示の『ト』と『グ』が消えてこう読める。ちょっとあかっぽい感じがする。
満留賀(固有名詞)
”まるか”とよむ。駒場の近くのメシ屋。part2,part3など、続々新店オープンした。ちなみに、坂下門のことを別名「満留賀門」ともいうらしい。
ソフトクリーム(一般名詞)
夏期限定発売。生協の1階で売っている。
独語禁止&仏語禁止(固有名詞)
駒場図書館の中に書いてある、『私語禁止』の一部が改竄されてこうなっている。まぁ、いずれは「露語禁止」「中国語禁止」などの言葉もお目見えすることであろう。
学館(固有名詞)
生協のとなりにある学生会館のこと。悪臭漂う超異次元スペース。サークルなどがここに入っており、授業の合間などにここに生息する人多し。しかし、あまりここに生息しすぎると、駒場キャンパスからでられなくなる恐れもある。
駒ネコ(固有名詞)
駒場キャンパス学生会館などに生息している暇そうな猫。しかし、そんな彼らも食べ物にありつく事が大変であり、文�生よりもは少なくとも忙しいとされている。
立て看板(一般名詞)
駒場キャンパスのあちらこちらに見かけられる、自己主張の為の看板。たまに、自治委員長選挙などで壮絶なバトルが繰り広げられるが、見ている人は殆どいない。
かにパン(一般名詞)
生協で70円くらいで売っている昔懐かしいパン。一部の通(=マニア)には、いまだに根強い人気を誇っている。つい数年前、生協の前に、「かにパンを切らさないで!」という、蟹の足が自動で動く立て看板ができたらしい。
駒寮(固有名詞)
廃寮問題で大揺れにゆれた駒場寮のこと。駒寮生以外の人でも、ポテトチップスを買えるだけのお金があれば一泊できたらしい。しかし、100円でポテトチップスは買えても、ポテトチップスで100円は買えません。
(C)Calbee
ハナジュー(固有名詞)
6号館(実験棟)の化学の教室の中の、融点測定に使う機器にこう書かれている物がある。融点測定の際に、高温になった機器に鼻を近づけなくてはならず、「鼻」が「ジュー」っと焼けてしまうことから。
ラサーる(ら行4段動詞)
留年すること。もう死語になっている。

自宅からのWEBサイト公開 — フレッツISDN (NTT提供)編

1. 自宅からのWEBサイト公開 〜 はじめに

 この、Terra-International, Inc. のホームページは、レンタルサーバーを使っていますが、Terra-InternationalにはWindows 2000 Serverマシンもあり、このマシンで作成したWEBを、なんらかの形で公開できないものか、と常々考えておりました。ただ、問題となるのは、フレッツIP接続で一般的なプロバイダーを利用する場合、IPアドレスが固定ではないので、専用線接続のように保有ドメイン名にIPアドレスを振り当て、WEB公開、ということは通常できません。

では、どうすればよいか、というと、「動的IPアドレスをマッピングしてくれるサービス」を利用し、更に、フレッツISDNで利用するダイアルアップルーターの設定で、TCP/IPのポートの一部を開放すればよいのです。今回は、動的アドレスをマッピングするサービスをご紹介するとともに、大体の設定の概要を説明いたします。

尚、これによって、例えばTerra-Internationalの場合、WEB開発の受託の際に、わざわざ成果物をお客様のところにもっていかなくても、ある程度のテストはしていただけます。SOHOの方々には、特に朗報となるでしょう。

2. 自宅からのWEBサイト公開 〜 基本となる事

 NTTのフレッツISDNサービスに加盟してください。尚、フレッツADSLでもできるようです。Firewallが入っているのが一般的なので、ケーブルでは無理のはずです・・・。以下は、ISDNに限定して話をすすめます。

(WEBを公開する場合) IIS (Internet Information Server) をインストールしてください。NT4.0 Serverの場合は、Service Packに、Windows2000 Serverの場合は、デフォルトでついてきます。Windows 9x系のPWS (Personal Web Server)でも問題はありません。
開放する、PCのローカルIPアドレスを設定してください。一般的には、192.168.1.xです。ルーターがDHCPサーバーをかねている場合、できれば固定して指定するようにしましょう。

ルーターの設定で、「NATe拡張設定」にて、開放するポートを指定してください。WEBサーバーを公開する場合は、ポート80を開放するようにしてください。IPアドレスの指定をする場所がある場合は、上で設定したローカルPCアドレスを入れてみてください。ここらへんは、お持ちのルーター等により、色々とかわってしまいます。私はcomstarzを使っていますが・・。

尚、
HTTP: 80 (WEBサーバー)
TELNET: 23
FTP : 20,21
SMTP : 25
POP3 : 110
が一般的なポートです。

IISなどのWebサーバーが起動しているかどうかは、http://(Your computer Name)/でも確認できます。

3. ドメイン名とIPアドレスをマッピング

 海外には、色々なサービスがありますが、無料で利用できるもので、結構おすすめなのが、dyndns.orghn.orgです。特に、hn.org(ハンマーノード)は、独自のドメイン名を利用することができます。尚、日本にも最近はいくつか動的DNSサービスを展開しているところがあるようです。Google等で検索して下さい。

ハンマーノードに限って話をすすめると・・。

まず、

Vanity Dynamic DNS

でアカウントを作成します。Create an Accountです。指定したメールアドレスにメールが入ります。http://hn.org/(User Name)/ というURLができあがります。次に、Modify your Accountで、アカウント情報を更新します。アカウント更新は、まだあまり必要としません。適当なときに書き換えてください。

Tools」で、「YourIP – Your IP Address」を選びます。そうすると、今の接続状態でのIPアドレス(プロバイダにより動的に割り当てられたIPアドレス)が表示されます。TOP画面に戻って、IPの欄に先ほど表示されたIPアドレスを入れ「UPDATE」をおします。尚、WEBサーバーを公開する設定にしてあれば、先ほどのIPアドレスをブラウザでたたけば、なんらかの表示がされているはずです。

http://hn.org/(User Name)/ のURLを指定すれば、WEBサーバーが公開されていることがわかります。

次に、自分の持っているドメイン名を使えるようにします。まあ、その前に、ドメイン名の取得が必要です。onamae.comあたりが良いのではないでしょうか。ドメイン取得した際、NS (Name Server)をどうするかという設定ができるはずですから、そのNameServerを

Primary NS :     ns1.hn.org  (63.169.118.18)
Secondary NS : aux1.hn.org (63.169.118.19)

にします。

次に、

Virtual Domain Mappings

Create an Accountに移ります。アカウント(先ほどのVanity Dynamic DNSと同じでも違っても良い)を作成後、IDとメールで送られたパスワードを入力し、「Login」をします。「Insert Domain」を選択します。Domain Name:の部分に、自分の取得しているドメイン名(***.com // ***.net 等)を入れます。上のNS(Name Server)の書き換えを行って24時間以上たっている場合は、「Check here if domain is already delegated to ns1.hn.org / aux1.hn.org (The Hammernode will verify a yes “checked” response.)」の部分をチェックしておくとよいでしょう。

次に、画面を戻して、「Modify Domain」のプルダウンメニューに先ほどいれたドメイン名が入ったことを確認します。ドメイン名を選択して、クエリ送信を押します。ここで、Rec Typeが「A」になっているものを「Delete」します。そして、「Insert a new Resource Record:」で、Rec FQDNに自分のドメイン名を、Rec Type に「A」を、「Rec Value」に、上の「http://www.hn.org/(User Name)/」を、DynDNSを「1」にして、<Insert>します。<Queue for Varification>のボタンがある場合は、まだ、NSの設定が完全にhn.orgのNSにいっていません。成功していれば、「This Domain wasverified against the root servers on …(date)….」が表示されます。

これで、設定は完了です。http://www.(yourdomain)/が表示されれば、大成功。

あとは・・・ですね・・・。IPアドレスは動的に変わってしまうので、http://www.kvtek.com/にある、yiPostなどを利用し、30分に一度くらいInternetにアクセスして、自分のIPアドレスをhn.orgサーバーに登録するように指定しましょう。このプログラムが、PCが立ち上がったときに自動的に実行されるよう、autoexec.batを書き換えるなりなんなりしてください。

yiPost以外にも、いくつか良いツールがあります。http://support.dyndns.org/dyndns/clients/ の「Client Listings」で、自分のPCのOSにあわせたツールを選んでください。(私は、ロシア人が好きなので、なんとなくyiPostにしてみました(笑))

4. 最後に

 本当は、こんな短くかけないほど、いろんな技術が必要なのですが、概要を大体書かせていただきました。あとは、本人のやる気次第(あとは英語力?)です。がんばってください。

PHP活用術 – すごいぞ!PHP (sample programs)

jcode.phps

使い方: Perlのjcode.plに同じ

<?
function JcodeConvert($str, $from, $to){
//0:AUTO DETECT
//1:EUC-JP
//2:Shift_JIS
//3:ISO-2022-JP(JIS)
if($from == 0) $from = AutoDetect($str);
if($from == 1 && $to == 2) return EUCtoSJIS($str);
if($from == 1 && $to == 3) return EUCtoJIS($str);
if($from == 2 && $to == 1) return SJIStoEUC($str);
if($from == 2 && $to == 3) return SJIStoJIS($str);
if($from == 3 && $to == 1) return JIStoEUC($str);
if($from == 3 && $to == 2) return JIStoSJIS($str);
return $str;
}
function AutoDetect($str){
$b = unpack(“C*”, $str);
$n = count($b);
$is_ascii = TRUE;
for($i = 1; $i < $n; $i++){
if($b[$i] == 0x1b && $b[$i+1] == 0x24) return 3; //JIS
if($b[$i] <= 0x7F) continue; //ASCII
$is_ascii = FALSE;
if($b[$i] <= 0x9F) return 2; //SJIS
if($b[$i] <= 0xDF) return 1; //EUC
if($b[$i] >= 0xF0) return 2; //SJIS
if($b[$i+1] <= 0xA0) return 2; //SJIS
if($b[$i+1] >= 0xFD) return 1; //EUC
$i++;
}
if($is_ascii) return 0;
return 5;
}

function HANtoZEN($str, $encode){
//0:AUTO DETECT
//1:EUC-JP
//2:Shift_JIS
//3:ISO-2022-JP(JIS)
if($encode == 0) $encode = AutoDetect($str);
if($encode == 1) return HANtoZEN_EUC($str);
if($encode == 2) return HANtoZEN_SJIS($str);
if($encode == 3) return HANtoZEN_JIS($str);
return $str;
}

function JIStoSJIS($str_JIS){
$str_SJIS = ”;
$mode = 0;
$b = unpack(“C*”, $str_JIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x1B){
if(($b[$i+1] == 0x24 && $b[$i+2] == 0x42) || ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)){
$mode = 1;
}elseif($b[$i+1] == 0x28 && $b[$i+2] == 0x49){
$mode = 2;
}else{
$mode = 0;
}
$i += 3;
}
if($mode == 1){
if($b[$i] & 0x01){
$b[$i] >>= 1;
if($b[$i] < 0x2F) $b[$i] += 0x71; else $b[$i] -= 0x4F;
if($b[$i+1] > 0x5F) $b[$i+1] += 0x20; else $b[$i+1] += 0x1F;
}else{
$b[$i] >>= 1;
if($b[$i] < 0x2F) $b[$i] += 0x70; else $b[$i] -= 0x50;
$b[$i+1] += 0x7E;
}
$str_SJIS .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}elseif($mode == 2){
$b[$i] += 0x80;
$str_SJIS .= pack(“C”, $b[$i]);
}elseif($i < strlen($str_JIS)){
$str_SJIS .= pack(“C”, $b[$i]);
}
}
return $str_SJIS;
}

function JIStoEUC($str_JIS){
$str_EUC = ”;
$mode = 0;
$b = unpack(“C*”, $str_JIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x1B){
if(($b[$i+1] == 0x24 && $b[$i+2] == 0x42) || ($b[$i+1] == 0x24 && $b[$i+2] == 0x40)){
$mode = 1;
}elseif(($b[$i+1] == 0x28 && $b[$i+2] == 0x49)){
$mode = 2;
}else{
$mode = 0;
}
$i += 3;
}
if($mode == 1){
$b[$i] += 0x80; $b[$i+1] += 0x80;
$str_EUC .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}elseif($mode == 2){
$b[$i] += 0x80;
$str_EUC .= pack(“CC”, 0x8E, $b[$i]);
}elseif($i < strlen($str_JIS)){
$str_EUC .= pack(“C”, $b[$i]);
}
}
return $str_EUC;
}

function SJIStoJIS($str_SJIS){
$str_JIS = ”;
$mode = 0;
$b = unpack(“C*”, $str_SJIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if(0xA1 <= $b[$i] && $b[$i] <= 0xDF){
if($mode != 2){
$mode = 2;
$str_JIS .= pack(“CCC”, 0x1B, 0x28, 0x49);
}
$b[$i] -= 0x80;
$str_JIS .= pack(“C”, $b[$i]);
}elseif($b[$i] >= 0x80){
if($mode != 1){
$mode = 1;
$str_JIS .= pack(“CCC”, 0x1B, 0x24, 0x42);
}
$b[$i] <<= 1;
if($b[$i+1] < 0x9F){
if($b[$i] < 0x13F) $b[$i] -= 0xE1; else $b[$i] -= 0x61;
if($b[$i+1] > 0x7E) $b[$i+1] -= 0x20; else $b[$i+1] -= 0x1F;
}else{
if($b[$i] < 0x13F) $b[$i] -= 0xE0; else $b[$i] -= 0x60;
$b[$i+1] -= 0x7E;
}
$b[$i] = $b[$i] & 0xff;
$str_JIS .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}else{
if($mode != 0){
$mode = 0;
$str_JIS .= pack(“CCC”, 0x1B, 0x28, 0x42);
}
$str_JIS .= pack(“C”, $b[$i]);
}
}
if($mode != 0) $str_JIS .= pack(“CCC”, 0x1b, 0x28, 0x42);
return $str_JIS;
}

function SJIStoEUC($str_SJIS){
$str_EUC = ”;
$b = unpack(“C*”, $str_SJIS);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if(0xA1 <= $b[$i] && $b[$i] <= 0xDF){
$str_EUC .= pack(“CC”, 0x8E, $b[$i]);
}elseif($b[$i] >= 0x81){
$b[$i] <<= 1;
if($b[$i+1] < 0x9F){
if($b[$i] < 0x13F) $b[$i] -= 0x61; else $b[$i] -= 0xE1;
if($b[$i+1] > 0x7E) $b[$i+1] += 0x60; else $b[$i+1] += 0x61;
}else{
if($b[$i] < 0x13F) $b[$i] -= 0x60; else $b[$i] -= 0xE0;
$b[$i+1] += 0x02;
}
$str_EUC .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}else{
$str_EUC .= pack(“C”, $b[$i]);
}
}
return $str_EUC;
}

function EUCtoJIS($str_EUC){
$str_JIS = ”;
$mode = 0;
$b = unpack(“C*”, $str_EUC);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x8E){
if($mode != 2){
$mode = 2;
$str_JIS .= pack(“CCC”, 0x1B, 0x28, 0x49);
}
$b[$i+1] -= 0x80;
$str_JIS .= pack(“C”, $b[$i+1]);
$i++;
}elseif($b[$i] > 0x8E){
if($mode != 1){
$mode = 1;
$str_JIS .= pack(“CCC”, 0x1B, 0x24, 0x42);
}
$b[$i] -= 0x80; $b[$i+1] -= 0x80;
$str_JIS .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}else{
if($mode != 0){
$mode = 0;
$str_JIS .= pack(“CCC”, 0x1b, 0x28, 0x42);
}
$str_JIS .= pack(“C”, $b[$i]);
}
}
if($mode != 0) $str_JIS .= pack(“CCC”, 0x1b, 0x28, 0x42);
return $str_JIS;
}

function EUCtoSJIS($str_EUC){
$str_SJIS = ”;
$b = unpack(“C*”, $str_EUC);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x8E){
$str_SJIS .= pack(“C”, $b[$i+1]);
$i++;
}elseif($b[$i] >= 0x80){
if($b[$i] & 0x01){
$b[$i] >>= 1;
if($b[$i] < 0x6F) $b[$i] += 0x31; else $b[$i] += 0x71;
if($b[$i+1] > 0xDF) $b[$i+1] -= 0x60; else $b[$i+1] -= 0x61;
}else{
$b[$i] >>= 1;
if($b[$i] < 0x6F) $b[$i] += 0x30; else $b[$i] += 0x70;
$b[$i+1] -= 0x02;
}
$str_SJIS .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}else{
$str_SJIS .= pack(“C”, $b[$i]);
}
}
return $str_SJIS;
}

function HANtoZEN_EUC($str_HAN){
$table_han2zen_euc = array(0xA1A3,0xA1D6,0xA1D7,0xA1A2,0xA1A6,0xA5F2,
0xA5A1,0xA5A3,0xA5A5,0xA5A7,0xA5A9,0xA5E3,0xA5E5,0xA5E7,0xA5C3,0xA1BC,
0xA5A2,0xA5A4,0xA5A6,0xA5A8,0xA5AA,0xA5AB,0xA5AD,0xA5AF,0xA5B1,0xA5B3,
0xA5B5,0xA5B7,0xA5B9,0xA5BB,0xA5BD,0xA5BF,0xA5C1,0xA5C4,0xA5C6,0xA5C8,
0xA5CA,0xA5CB,0xA5CC,0xA5CD,0xA5CE,0xA5CF,0xA5D2,0xA5D5,0xA5D8,0xA5DB,
0xA5DE,0xA5DF,0xA5E0,0xA5E1,0xA5E2,0xA5E4,0xA5E6,0xA5E8,0xA5E9,0xA5EA,
0xA5EB,0xA5EC,0xA5ED,0xA5EF,0xA5F3,0xA1AB,0xA1AC);
$str_ZEN = ”;
$b = unpack(“C*”, $str_HAN);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x8E){
$b[$i+1] -= 0xA1;
$c1 = (($table_han2zen_euc[$b[$i+1]] & 0xff00) >> 8);
$c2 = ($table_han2zen_euc[$b[$i+1]] & 0x00ff);
$str_ZEN .= pack(“CC”, $c1, $c2);
$i++;
}elseif($b[$i] >= 0xA1){
$str_ZEN .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}else{
$str_ZEN .= pack(“C”, $b[$i]);
}
}
return $str_ZEN;
}

function HANtoZEN_SJIS($str_HAN){
$table_han2zen_sjis = array(0x8142,0x8175,0x8176,0x8141,0x8145,0x8392,
0x8340,0x8342,0x8344,0x8346,0x8348,0x8383,0x8385,0x8387,0x8362,0x815B,
0x8341,0x8343,0x8345,0x8347,0x8349,0x834A,0x834C,0x834E,0x8350,0x8352,
0x8354,0x8356,0x8358,0x835A,0x835C,0x835E,0x8360,0x8363,0x8365,0x8367,
0x8369,0x836A,0x836B,0x836C,0x836D,0x836E,0x8371,0x8374,0x8377,0x837A,
0x837D,0x837E,0x8380,0x8381,0x8382,0x8384,0x8386,0x8388,0x8389,0x838A,
0x838B,0x838C,0x838D,0x838F,0x8393,0x814A,0x814B);
$str_ZEN = ”;
$b = unpack(“C*”, $str_HAN);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if(0xA1 <= $b[$i] && $b[$i] <= 0xDF){
$b[$i] -= 0xA1;
$c1 = ($table_han2zen_sjis[$b[$i]] & 0xff00) >> 8;
$c2 = $table_han2zen_sjis[$b[$i]] & 0x00ff;
$str_ZEN .= pack(“CC”, $c1, $c2);
}elseif($b[$i] >= 0x80){
$str_ZEN .= pack(“CC”, $b[$i], $b[$i+1]);
$i++;
}else{
$str_ZEN .= pack(“C”, $b[$i]);
}
}
return $str_ZEN;
}

function HANtoZEN_JIS($str_HAN){
$table_han2zen_jis = array(0x2123,0x2156,0x2157,0x2122,0x2126,0x2572,
0x2521,0x2523,0x2525,0x2527,0x2529,0x2563,0x2565,0x2567,0x2543,0x213C,
0x2522,0x2524,0x2526,0x2528,0x252A,0x252B,0x252D,0x252F,0x2531,0x2533,
0x2535,0x2537,0x2539,0x253B,0x253D,0x253F,0x2541,0x2544,0x2546,0x2548,
0x254A,0x254B,0x254C,0x254D,0x254E,0x254F,0x2552,0x2555,0x2558,0x255B,
0x255E,0x255F,0x2560,0x2561,0x2562,0x2564,0x2566,0x2568,0x2569,0x256A,
0x256B,0x256C,0x256D,0x256F,0x2573,0x212B,0x212C);
$str_ZEN = ”;
$mode = 0;
$b = unpack(“C*”, $str_HAN);
$n = count($b);
for($i = 1; $i <= $n; $i++){
if($b[$i] == 0x1B){
if($b[$i+1] == 0x28 && $b[$i+2] == 0x49){
$mode = 1;
$str_ZEN .= pack(“CCC”, 0x1B, 0x24, 0x42);
}else{
$mode = 0;
$str_ZEN .= pack(“CCC”, $b[$i], $b[$i+1], $b[$i+2]);
}
$i += 3;
}
if($mode == 1){
$b[$i] -= 0x21;
$c1 = ($table_han2zen_jis[$b[$i]] & 0xff00) >> 8;
$c2 = $table_han2zen_jis[$b[$i]] & 0x00ff;
$str_ZEN .= pack(“CC”, $c1, $c2);
}elseif($i < strlen($str_HAN)){
$str_ZEN .= pack(“C”, $b[$i]);
}
}
return $str_ZEN;
}
?>

mail.phps

使い方: 以下のサンプルを参照のこと

<?include(“./jcode.phps”);

class ErrorMsg{
var $TemplateFile;
var $ErrMsg;

function init()
{
$this->TemplateFile = “”;
$this->ErrMsg = “・エラーが発生しました!\n”;
}
function CallError(){
if(is_readable($this->TemplateFile)){
$myFile = fopen($this->TemplateFile,”r”);
while(!feof($myFile)){
$myLine = fgets($myFile, 255);
$myLine = ereg_replace(“___%([^%]+)%___”,nl2br($this->ErrMsg),$myLine);
print($myLine);
}
fclose($myFile);
}else{
print “内部エラー<数時間後、やりなおしてください>\n”;
exit;
}
}

}

class Mail{
var $subject;
var $mailto;
var $mailfrom;
var $mailcc;
var $mailbcc;
var $context;
var $codefrom;
var $codeto;
var $mailheader;
var $ErrorTemplate;

/* コンストラクタ */

function init()
{
$this->subject = “”;
$this->mailto = “”;
$this->mailfrom = “”;
$this->mailcc = “”;
$this->mailbcc = “”;
$this->mailheader = “Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: 7bit
MIME-Version: 1.0”;
$this->context = “”;
$this->codefrom = 2; //Shift_JIS
$this->codeto = 3; // JIS
$this->ErrorTemplate = “”;
}

function SetTemplateFile($TemplateFile,$vars)
{
for ($i=0;$i<count($vars);$i++){
eval(“global \$${vars[$i]};\n”);
}
if(is_readable($TemplateFile)){
$this->context = “”;
$myFile = fopen($TemplateFile,”r”);
while(!feof($myFile)){
$myLine = fgets($myFile, 255);
ereg(“___%([^%]+)%___”,$myLine,$match);
$myLine = ereg_replace(“___%([^%]+)%___”,${$match[1]},$myLine);
$this->context .= $myLine;
}
fclose($myFile);
}else{
$this->context = “”;
}
}

function SendMail()
{
$errmsg = “”;
if (!EmailCheck($this->mailto)){$errmsg .= “・メールアドレスのTo(送信先アドレス)の形式が正しくありません。\n”;}
if (!EmailCheck($this->mailfrom)){$errmsg .= “・メールアドレスのFrom(送信元アドレス)の形式が正しくありません。\n”;}
if ($this->context == “”){$errmsg .= “・メール内容がありません。\n”;}
if ($this->subject == “”){$errmsg .= “・メールタイトルがありません。\n”;}
if ($errmsg != “”){
$err = new ErrorMsg;
$err->init();
$err->ErrMsg = $errmsg;
$err->TemplateFile = $this->ErrorTemplate;
$err->CallError();
exit;
}
$this->mailto = JcodeConvert($this->mailto,$this->codefrom,$this->codeto);
$this->mailheader = “From: ” . JcodeConvert($this->mailfrom,$this->codefrom,$this->codeto) . “\n” . $this->mailheader;
$this->subject = “=?iso-2022-jp?B?” . base64_encode(JcodeConvert($this->subject,$this->codefrom,$this->codeto)) . “?=”;
$this->context = JcodeConvert($this->context,$this->codefrom,$this->codeto);
mail($this->mailto,$this->subject,$this->context,$this->mailheader);
}

}

Function EmailCheck($mail_addr){
$esc = ‘\\\\’; $Period = ‘\.’;
$space = ’40’;
$OpenBR = ‘\[‘; $CloseBR = ‘\]’;
$NonASCII = ‘\x80-\xff’; $ctrl = ’00-37′;
$CRlist = ‘\n15′;
$qtext = “[^$esc$NonASCII$CRlist\”]”;
$dtext = “[^$esc$NonASCII$CRlist$OpenBR$CloseBR]”;
$quoted_pair = “${esc}[^$NonASCII]”;
$atom_char = “[^($space)<>\@,;:&\^’!#\$%\”.$esc$OpenBR$CloseBR$ctrl$NonASCII]”;
$atom = “$atom_char+(?!$atom_char)”;
$quoted_str = “\”$qtext*(?:$quoted_pair$qtext*)*\””;
$word = “(?:$atom|$quoted_str)”;
$domain_ref = $atom;
$domain_lit = “$OpenBR(?:$dtext|$quoted_pair)*$CloseBR”;
$sub_domain = “(?:$domain_ref|$domain_lit)”;
$domain = “$sub_domain(?:$Period$sub_domain)+$”;
$local_part = “^$word(?:$Period$word)*”;
$addr_spec = “$local_part\@$domain”;
$mail_regex = $addr_spec;
if (!preg_match(“/$mail_regex/i”,$mail_addr)){$ret = 0;}else{$ret = 1;}
return $ret;
}

?>

mailsample.phps (上記mail.phps, jcode.phpsを使ったサンプル)

<?include(“./mail.phps”);

$Name = ($Name) ? $Name : “ななしのごんべい”;
$mail = new Mail;
$mail->init();
$mail->subject = “$Name さんからのメールです”;
$mail->mailfrom = $MailFrom;
$mail->mailto = $MailTo;
$mail->ErrorTemplate = “./ErrorTemplate.txt”;
$vars = Array(“message”,”Kanso”,”Name”);
$mail->SetTemplateFile(“./EmailTemplate1.txt”,$vars);
$mail->SendMail();

$mail = new Mail;
$mail->init();
$mail->subject = “$Name 様 メッセージありがとうございました”;
$mail->mailfrom = $MailTo;
$mail->mailto = $MailFrom;
$vars = Array(“message”,”Kanso”,”Name”,”MailTo”,”MailFrom”);
$mail->SetTemplateFile(“./EmailTemplate2.txt”,$vars);
$mail->SendMail();

?>

(注:EmailTemplate1.txt

___%Name%___ さんからメッセージが届きました。
——————————————————-
感想: ___%Kanso%___
内容: ___%message%___
)

(注:EmailTemplate2.txt

___%Name%___ 様:

メッセージ、ありがとうございました。
以下のメールを、___%MailTo%___宛てに送信
いたしました。
これからも宜しくお願い申し上げます。
——————————————————-
感想: ___%Kanso%___
内容: ___%message%___
——————————————————-

)

さいごに

余談:1年前くらいに作ったのですが、折角なので公表します。尚、jcode.phpsは、PHP4.04のときのものなのですが、今(PHP4.12)は、日本語変換が自動で出来るかと思うので、あまり意味ないでしょう(笑)
どういう動きをしているか知りたい方は、MAILしてみてください。
あと、ファイルは全て同一ディレクトリに入れる必要があります。

Windows最適環境構築 — Windows環境をより便利に — ファイル管理・文字コード変換ツール・メーラー紹介等

1. Windows最適環境構築 – はじめに

 ここ数年、外の会社の中で作業をする機会も増えてきているのですが、大体において、デフォルトのWindows(NT, 9x問わず)の環境では、作業がしづらいことが多く、いつも同じフリーソフトやシェアウェアソフトをダウンロードしたりして、作業環境を筆者の自宅の環境とほぼ同じにすることが必要です。筆者自身は、MS-DOS時代からDOSのCUI (Command line User Interface)に親しんでいたためか、DOS時代からずっと使っているツールも多いわけですが、皆さんにもいいツール群を知っていただこうと思い立ち(あとは、同じ環境をどうせ様様なところで構築するのだから、自分のためにも、と思って・・)、「Windows最適環境構築 — Windows環境をより便利に、より使いやすく(フリー・シェアウェア・商品)」を書いていきたいと思います。

注:尚、かなり前に元々書いたドキュメントなので、現時点(2003/5)でかなりリンクが「デッドリンク」になっているのもあります。NotePadの書き換えツール系に関して特にそうです。ですから、シェアウェア(秀丸)や市販ソフト(MIFES)などを使っても「InternetExplorerでの<ソース表示>の書き換え」が出来ますので、そちらに切り替えることをお勧めします。

2. Notepad を 書き換えよ

 Microsoft社は、いろんな意味で誹謗中傷されたりUNIXやLinuxと比較されたりしますが・・・私自身がいつも思っていること。それは、「WindowsにバンドルされているNOTEPADは使いづらい」という事です。漢字変換もままならない・・こういう自体が、日本のIT化(死語?)を阻んでいることを、誰も気がつかないのでしょうか・・・。大体、Internet Explorerで「ソースを見る」のデフォルトはNotepadだし、「ソースを見る」の設定は変えられないし…. そんな中、漢字コードがEUC (Enhanced Unix Code)のHTMLがあると、文字化けてて思うようにみれませんよね。

#大体に措いて、日本が米国からITで数年遅れている、といわれるのは、単純な話、
#こうした日本語環境がままならないことが多いから優秀なSE達がくだらないことに
#時間を割かなければならないから・・・だなあ。(余談)

はい、そういうことを常々思っている人のために紹介するのが、「メモ帳トラッパー」。これは、Windowsにバンドルされているnotepadを、自分の好きなエディターに関連付けてくれる、という代物です。例えば、私がつかっている「WZ-EDITOR」や「MIFES」は自動漢字コード判別をファイルオープン時にしてくれるので、EUCファイルも文字化けずに見ることができたりします。つまり、「メモ帳トラッパー+MIFES/WZ-EDITOR」で、テキスト形式ファイルは漢字コードを気にせずに読むことができる(+編集できる)というわけですね。ただ、WZ-EDITORはバージョンアップが遅いので、私は、「MIFES」に切り替えてしまいました。UTF-8の自動認識やXMLの整形チェックなども出来、これは使えます (あっと・・ただし、UTF8は一部自動認識してくれません。BOMがあるファイルは自動認識しますが、無い物//UTF-8Nはも文字化けります・・ 例えば、Google検索で表示される際、文字化けしてるサイトにはBOMが無いのでMIFESで見るとShift_JIS認識となり、文字化けします)。最高です!MIFESのバージョン6.0.5以上では、「プリ・ポストプロセッサ」として「MIWUTF8」を使うと、UTF-8Nを自動認識し、SHift_JIS変換してから、セーブ時にはUTF-8N(BOMなし)で保存します。

Tips: BOM=0xef 0xbb 0xbf の三バイト で、(Byte Order Mark)の略です。このBOMがあると、PHPやASPなど、思わぬところで「エラー」を発生させる要因となることがあります。(特に、ASPでディレクティブ指定するときなど)・・このような場合、UTF-8NでASPやPHPファイルを保存し、Response.Writeやechoの最初にBOMをつけるようにすると、「Google検索で文字化けせず」「ASP.PHPのエラーも起こらない」事でしょう。 MIFESのMIWUTF8を使う方法もありますが、FileVisor付随のバイナリエディタやMIFESのバイナリエディタで、最初の3バイトを削除する、という手法をとっても良いです。

メモ帳トラッパー」は、以下のようなお悩みを持つ方におすすめです。

  1. メモ帳に関連づけられているファイルを使い慣れたエディタで表示したい。
  2. Internet Explorerの「ソース表示」をメモ帳ではなく、使い慣れたエディタで表示したい。
  3. ソフトをインストールしたときに表示されるReadmeファイルを使い慣れたエディタで表示したい。
  4. ついでにファイルの印刷も使い慣れたエディタを用いたい。
  5. EUCコードのテキストや、改行がLF (UNIX形式)のテキストファイルを、あまり意識せずに編集したい。

実は、このソフト、「シェアウェア」ではなく「日本酒ウェア」(笑)という代物なのですが、作者の方が途中でアップデートをあきらめてしまったらしく、今は、シェアレジにしか残っていないはず。ということで、同じような機能を持つものとして、「DUMMYPAD」(フリーウェア)もおススメ。

尚、Windows2000を利用している方は・・ちょっと注意が必要です。なぜなら、「メモ帳トラッパー」も「DUMMYPAD」も、C:\WinNT\System32\(Cドライブであるかどうかはわからない。環境によって異なるが・・・通常、システムディレクトリは%SYSTEM%で表現します・・。)の中にあるNotepad.exeを書き換えるのですが、Windows2000は、システムファイルを書き換えたりすると「元に戻そう」とする機能が働くのです(これは、単純な話、むやみやたらとSystemディレクトリの中身を書き換えられると、ウィルスに感染しそうになったときに困るでしょ?ってこと)。ですから、Windows2000をセーフモードで立ち上げるなり、%SYSTEM%dllcacheディレクトリのnotepad.exeを削除してインストールするなりの手法が必要です。詳しくは、他のInternet Siteにて。

ちなみに、エディターというのは、MS-WORDや一太郎といったワープロソフトよりもさくさくと動く、テキストファイル作成・編集専用ソフトのことであり、WZ-EDITORのほかには、「MIFES」、「Em-Editor」、「DANA」、「秀丸エディタ」 などがあります。DOS時代には、VZ-EDITORなどをつかっていたなー・・・。

3. ファイルの中身を覗け!

 Microsoft社は、いろんな意味で誹謗中傷されたりUNIXやLinuxと比較されたりしますが・・・と、同じ事を言っていてもしょうがないですが、Windowsに標準に添付されている「エクスプローラー」(「スタート」→「アクセサリ」→「エクスプローラー」)・・これも、使いづらい。(というのは、ファイル閲覧ソフトになれている筆者だから言えることなのかもしれませんが・・。) うーん・・大体において、UNIX系では必須の、「.***」(ドット+ファイル名・・例えば、.bashrcや.htaccessなど)というファイルをエクスプローラーから作ろうとすると、「ファイル名を指定してください」といわれてしまうし。。

「圧縮されたファイルの中身をワンクリックで見る」「同じく、圧縮ファイルをワンクリックで解凍する」 「画像ファイルの中身をワンボタンで覗く」「(DOSの)FDのようにファイル一覧を表示、コントロールする」「(上の2で書いた、エディタで)ファイルをワンボタンで編集する」・・・・こんなことができれば、すばらしいと思いませんか? こんな要求を満たしてくれるのが、ファイル閲覧ソフトの「FileVisor5」です。シェアウェア。

<FileVisor 5(画面は、FileVisor4のときのもの)> 

画面は、こんな感じですが、使い方はいろいろ。まず、ファイルを選択した上でキーボードの「V」を押すと、中身が表示されたり(テキスト系の場合は中身が、画像系の場合は、画像が表示される)、「E」を押すと編集ができたり、ダブルクリックすると、ファイルの拡張子に対応した処理を行ってくれたり・・あとは、LHAで圧縮されたファイル(拡張子.lzh)は、「V」ボタンで圧縮された中身が見え、「U」ボタンでUnpackつまり解凍ができる、などなど、多機能です。 圧縮ファイル(.lzh, .tar, .zip, .gz, bz2など)は、統合アーカイバープロジェクトに、対応DLLが容易されていますので、Windows9x系では C:\Windows\System、NT系ではC:\WinNT\System32ディレクトリにDLLを置くと、「それだけで!」上の機能が使えるようになります。大変便利便利。もう、LHACAなどは必要ありませんね?あと、この関連で便利なのは、「Explzh」です。FileVisor5で、.jar、.zipファイル等に「関連付け」しても良いでしょう。このソフトは、統合アーカイバプロジェクトの全ての最新ファイルを自動的にダウンロード/インストールする機能も有していてかつ圧縮ファイルを「ツリー表示」してくれます。これは便利便利。

FileVisor5に標準でついている「ビュワー」(エディタ)は、UTF-8Nを自動認識してくれますが(これは非常に便利)、保存時にUTF-8にしてしまいます。つまり、BOMがつきます。Mifesと共存させている場合など、注意が必要です。

統合アーカイバープロジェクト から、個別ライブラリ / DLL Libraries DLL類をダウンロードし、展開した中の「.DLL」ファイルを、システムディレクトリ(\Windows\Systemあるいは\WinNT\System32)にコピーします。最初はUNLHA.DLL が良いでしょう(自己解凍.exe形式だし。そもそも、UNLHAが使えるようにならないと、他のDLLはLHAで圧縮されているから、解凍できなかったりする・・)。

これに似たファイル閲覧ソフトとしては、「WinFD」が有名です。DOS使いだったひとで知らない人はいないくらいに有名なFD (A. Idei氏の)のWindows版ですね。今でも、たまに、Linux用のFD (RPM化されてます)を使ったりしています。

余談ですが、筆者は、「コンピューターになれる」ためには、「標準的なディレクトリ構造をともかく覚える」ことと「たくさんのファイルの中身を見る」ことだと思っています。そういうときに、エクスプローラーではやっぱ無理があるんですよね・・。尚、FileVisor5に標準についてくるファイルビュワとテキストエディタはUTF-8などに対応しています。

4. いつも使うメールクライアントソフトだからこそ・・

 Microsoft社は、いろんな意味で誹謗中傷されたりUNIXやLinuxと比較されたりしま・・・・(まだ言ってる・・)。。。。OutlookやOutlook Expressは、どうも使いづらい(と感じてしまいます)。はっきり言えば、私は使った事がありません。OSのUpdateの度に入ってくるのははっきり行ってうざったいとすら思えます。

いつも使うソフトだからこそ、多機能で使いやすいものを・・ということで、Becky! Internet Mail 2 (シェアウェア)をおススメします。 日本発のメールソフトですが、海外では特にドイツで人気が高いと思われます。

Ver2.0になって、更にバージョンアップしたわけですが、多機能で、メールを結構使う人にとっては必須ソフトと言えるでしょう(根拠を後述します)。

昔は、パソコン通信のNIFTYSERVE(現在の@NIFTY)だったものですから、NiftermAirCraftなどを使っていましたが・・・。やっぱ、インターネットメールを扱うなかで一番いいな、と思うのは、Becky!ですね。

もう一つ、Becky! 2で「GOOD!」と思うのは、「スレッド管理ツール」が使えること。いやー、これは、筆者が2000年2月くらいに、BitValleyのMLにおいて、以下のようなことを言っていたことがあったからです。MLを30以上管理していた筆者にとっては、メーリングリスト内で「ルール」や「マナー」についてあまり議論があることは好ましくないと思っていたので、「技術的に解決できること」としていくつかあげていたことの一つだったのです。わざと、質問形式にしましたが・・・(笑)。

Becky! 2では、「スレッドを切る」ことと「スレッドをつなげる」ことが簡単にできるようになっています。筆者は、いまでは、「スレッドを守ってくれない」メーラーを使っている方のメールも、このテクニックで解決しています。

投稿数が多いメーリングリストの場合、どうしても、スレッド(つまり、どのメールに対しての返事であるかを、エクスプローラー
風に見ることができる機能)から必要な情報を検索するのが中級者くらいでは一般的です。|—[MLname:002] こんにちは
|   |—[MLname:004] Re:こんにちは
|—[MLname:003] はじめまして
|—[MLname:005] RE:はじめまして
|—[MLname:006] Re:RE:はじめまして

といった具合に、スレッド表示されます。(スレッド対応メーラーを使うと)

これは、メールのヘッダにある、
|In-Reply-To:
行が、どのメールの返事であるかを読み取って実現します。
(Reference行と)

しかし、In-Reply-To 行をつけてくれないメーラーから送られたメールは、スレッドからはずれ、スレッド対応
メーラーを使っている人でも非常に整理がしにくい状態になってしまいます。(なぜか、というと、RFCにはないから・・・単純な理由)

そこで、質問なのですが、In-Reply-To行がついていないメールであって例えば「Re:[MLname:003] はじめまして」というメールサブジェ
クトであれば、「[MLname:005]Re:[MLname:003] はじめまして」といったメールサブジェクトにおきかわるようなML-Soft、あるいはML
サービスはないものでしょうか。勿論、In-Reply-To行がある場合は
「Re:[MLname:003] はじめまして」は「[MLname:005] Re:はじめまして」
におきかわることが前提です。

これであれば、中級者くらいの方でもメール分類(というか、どのメールについての返事であるかをある程度分類すること)
が多少楽になりますし、議論もしやすくなるかと思います。

これも、技術的にさほど難しいことではないだろうと予想されることなのですが。いかがでしょうか。

あと、Becky1を使っていた方向けに、Becky2に乗り換える際、コンバートツールがあります。更に、Becky2には色々なプラグインがあります。私のお気に入りは、「マルチレスヘルパ」と「メール集計ソフト」です。後者の方は、メーリングリストの中でどのメーラーが良く使われているかを調べる事が出来ます(みて分かるんですが、殆どのMLで、投稿数の多い人の殆どがBecky!を使っている事がわかります。まあ、LinuxMLなどは例外ですが(笑))

5. FTP、TELNET …. etc.

 FTP (File Transfer Protocol)や、TELNETは、ローカルで作ったホームページを、リモートのサイトにアップロードしたりその逆をしたり、また、インターネット上にあるファイルを取ってきたりするときにつかうものでありますが、そのソフトにも、色々なものがあります。一応、Windowsに標準で、TELNETのツールはついてきますが(「スタート」から「ファイル名を指定して実行」で、「TELNET」とやると、TELNETできます。また、DOS窓からFTPもできます)、これまた使いづらい。。。というわけで、FTPにはWS_FTP (日本語版)FFFTP、TELNETにはTera-Term秀Term Evolutionをご推薦いたします。

WS_FTPは、定番ソフトだから良いとして、FFFTPは、なんといっても、EUC->Shift-JISやその逆のコンバートを自動的にやってくれる点を高く評価し、お勧めします。以下の図の、「EUC」「JIS」を選んでおくだけで、漢字コード変換を自動で行ってくれます。

<FFFTP>

TELNET用(本当は、ターミナルエミュレーター=通信ソフト というべき・・)では、秀丸エディターを使っているいないに関係なく、秀Term Evolutionが使いやすくてよいでしょう。両方とも、パソコン通信にも対応しています(ました)。

6. Jarファイルを覗け!

Javaプログラマ・エンジニアの皆さんは、jar, warファイルの中身をどう覗いているのでしょうか?jar, warファイルの中身を、例えばWinZipで覗いたとしても、Jarファイルと言うのはそもそもディレクトリ構造をそのまま入れているわけですから、どこに何があるのかさっぱりわからないものです。

そこで、「FileVisor5」の有効活用法をお教えいたします。
http://www.lightship.co.jp/fv5/
勿論、ダウンロードしてインストールしている事が前提です(笑)。
統合アーカイバプロジェクトからUnzip.dllをダウンロードしておく必要もあります。(JARファイルは、基本的にZIP圧縮形式ですので)

[Alt]+[f7]で、「動作環境の設定」を選びます。(「ツール」→「動作環境」でもよい)
「アドインビュア」タブを選択し、「追加」ボタンをクリック。
「対象拡張子」を[.jar]とし、「プログラム名」を
“C:\WinNT\system32\rundll32.exe” “C:\Program Files\Common Files\LightShip\lsparcvw.dll” cavRunView
にします。(””を忘れずに)
そして、OKを押して、一旦「動作環境の設定」を閉じます。

.jarファイルを選択した状態で「V」キーを押すと、JARファイルの中身がツリー表示されます。勿論、エクスプローラー風になっていますので、[TAB]や[←][→][↑][↓]を組み合わせると、マウスを使わなくても中身を楽々確認できます。(確認後、そのウィンドウをクローズするには、[ESC]キーを使います。)

尚、「Explzh」などのツールを「V」キーに対応させる事もできます。上の「プログラム名」を「Explzh」の.exeファイルにポイントするだけです。(FileVisor5のlsparcvw.dllは、たまに他のプログラムと競合を起こしてエラーがでますんで、このツールも覚えておくと良いでしょう。)「Explzh」は、とあるディレクトリにある、アーカイブファイル内のファイル名を検索する事が可能なので、何かJavaでエラーが出た場合のクラスファイルの「特定」をするときに非常に役に立ちます。

余談:Explzh」は、頻繁に更新されていますが、登録しておくと、ありがたいことに(本当に親切に)「メールで」お知らせが来ます。こういう地道な努力が、シェアウェアやフリーウェアの発展につながっていくんでしょうね。

7. 一括文字コード変換ツール

Shift_JISで書いたファイルを、すべてUTF-8にしたい場合とか、移植の為にShift_JIS->EUCにしたい、といった場面がありますよね?ただ、一つ一つのファイルに対し、いちいちエディタを開くのも面倒くさい。そこで、Unibirth.com「CharsetConverter」をお勧めします。 コマンドラインからの自動変換もサポートしており、複数のファイルを一括して変換するような使い方も可能です。例えば、Windowsでの右クリックの「送る」に、「CharsetConverter」を対応させる、など。そうすることで、Shift_JIS、EUC-JP、ISO-2022-JP、Unicode、UTF-8 の相互変換と、改行コードの変換が非常に楽になります(一括文字コード変換)が、ただ、唯一の弱点は、出力時におけるUTF-8Nに対応していない点です。

APPENDIX. さいごに…

 まあ、大体の筆者の環境を説明したわけですが、いずれは、実際のダウンロードの仕方や、詳しい設定の仕方なども書いていこうかと思っています。

ただ、少なくとも、「ファイル閲覧ソフト」(エクスプローラーがわり)や、エディタを任意に指定できるソフトなどは、知っていて損は無いです。損は無いというより、今後のWindowsに対する意識がかなりかわっていくことでしょう。

 例えば、筆者は、Oracle Master Gold 8, 8i を、まったくのド素人のときから1週間ほどの勉強で合格しましたが、その際は、Oracleのディレクトリのファイルの中身を色々とみましたから。・・・そういう積み重ねが、IT力(死語?)のアップに貢献する、というわけです。

 あと、実は、筆者の環境では、Windows環境でLinux-OSのコンピューターと(sambaで)ファイル共有をしているのですが、Windowsのエディターで、Linuxコンピューターの中身を見れるし、エディットも(漢字コードを全く気にせずに!)できます。これは、かなりの時間削減につながることです。File Visor 5MIFES + Explzh は、最強 です。

・・・では、がんばってください。

P.S.  別に、Microsoftが嫌いというわけでもないです(年25万円も払って、Universal Subscriptionのライセンスを買ってますし)が、使い勝手のよさや悪さ、というのは、公平に判断すべきもの・・・。ということで、本当はもう少しMS社にも使い勝手の良いものを作ってもらいたいな〜とは思うんですがね。「OSのデフォルトのインストールに付随する」に恥じないものを、です。(尚、念のため補足して置きますが、Notepadは、あれは「わざと」ライトウェイトになるようにあんな仕様になっているそうです。)

選択納税制度の実現 – 日本政府の財政を健全化する為に

選択納税制度の実現 – 日本政府の財政を健全化する為に – はじめに

ここ数年、日本の財政のことがよく話題となります。600兆円の国の借金をどうするか、であったり、日本は以前の輝きを失った、であったり、国債の評価が下がった、であったり、です。

日本の財政を支える元になる収入源は、「税金」です。でも、庶民感覚としては果たして如何でしょうかか。「納税」の意識というものが果たして皆さんにはありますでしょうか?筆者自身は、毎年確定申告をしていますから(自営業でしたからやむを得なかったのです)、毎年いくら税金が・・ということは、計算していますが、サラリーマンの皆さんの場合は、なかなか実感がわかないのが実情でしょう。

所得税や地方税(住民税)はわからんが、おいらは酒税やタバコ税をたくさん払ってるぜ!とおっしゃる方・・・それも非常に素晴らしい事です。数年前の私は、「所得税よりも酒税のほうが多かった」ことをウリにしていましたし・・・(笑)

選択納税制度 – 提案

 筆者が提案する、「選択納税制度」、は、以下の通りです。

  • 確定申告で確定される税金は、当然のごとく払う義務を有する
  • 確定申告で確定された以外の「新たな税金」として、(余裕がある場合に)オプションの税金を一緒にはらうことが出来る制度を確保する。オプションというのは、「私は教育に対してもっと税金を払う余裕がある」「私は、地方自治体の財政の悪化を懸念しているので、地方自治体への交付金に使ってほしい」などの場合にのみ使うことが出来る。(これは、義務というよりも、財政、政治に対しての「権利」としての位置付けともなりうる)
  • (オプション)できれば、「選択肢」については、国民で投票し選べるものとする。(どれを選択肢にするか、ということ。例えば、「教育」「地方財政」という選択肢の作り方もあれば、「義務教育」「生涯教育」「医療」という選択肢の作り方もありますが、その「選択肢」自体を国民が作ることができるようにする、ということです)

この制度を導入することによるメリットは、以下のとおり。

  • 選択納税制度は、最初は「お金持ち」しか使わないものであるかもしれない。しかしながら、少なくとも真剣に「日本国のことを考えている」と言える人間にとっては、自己の主張を全うする良き機会となりうる。
  • 国家の財政が少なくとも5%以上は潤うことが予想される。
  • 国家に対して真剣に考えている人間が、どういう「カテゴリ」に対して興味関心を持ち、どのように予算を配分してほしいのか、ということが手に取るようにわかる(公表される)。つまり、今までは、選挙権によってのみ「自分がどういう政治参加ができるか」という権利を行使することができなかったが、国政の腐敗を見てわかる通りに現状の政治に任せることは事実上不可能となった今、「納税を通して、何を今してほしいのか」を訴える機会を有することが可能となる。
  • 「我々の税金を….」とただ言いっぱなしの無責任な「ジャーナリスト」や困ったチャンの意見を奪いさる:-) … 「余分な」税金を払っている事が証明されたものが、本当に「税金の使い道を真剣に考えている」ものなのである
  • (選択肢に「地方行政」が入れば)故郷に錦を飾れなかった都会育ちの方々が故郷に「目に見える形で」貢献する事の出来る一つの<選択肢>が生まれる。

尚、段階的に「余分に払った分の税金分」を数年後に控除していくようになれば望ましいでしょう。

余談:控除?

小生がいつも疑問に思っているのは、何故税率計算式が「リニア」(線形)なのか、と言う事です(330万円を境に2割…うんぬん)。化学の中和曲線を応用した「n回微分可能な」「なめらかな」<税率曲線>なる式を考案する方が、よほど「中流意識」と「横並び主義」を是正するための起爆剤になりえると思うのですが….

選択納税制度の実現 – 日本政府の財政を健全化する為に – 終わりに

この制度自体は、私のオリジナルのアイディアですが、官公庁に行った東大OBの友人達にはおおむね好評だったので、アイディアを公開してみました。

もともとのアイディアのきっかけは、「権利」と「義務」は表裏一体の関係性を有するものであるのに、こと納税に至っては、どうして「義務」ばかりが先行してしまうのかな、と考えたことです。人は、「取られるもの」に対しては、一歩間を取ったスタンスを持ってしまうもの。全く逆転の発想で、「政治参加できる機会」としての納税(確定申告)と考えられるようにしてはどうか、というのが、根底にある発想です。

(また、重要なポイントですが)現行の憲法に全く抵触することなく、この制度は導入することが可能です。電子政府や電子納税(e-Japan 構想)などが可能となれば、面白い展開ができるかもしれませんが、今の「確定申告」のやり方でも、一行か二行の項目を追加するだけで可能でしょう。

皆さんのご意見いただければ幸いです。ご意見は「こちら」よりお願いいたします(当ページをご覧頂いた事がわかるような内容のメッセージにして下さい)。

おまけのおまけ※前の年のゼミ(国際民事訴訟法/国際私法:石黒先生):
知的財産権(知財)法からみた、電子商取引(EC) — 知的所有権:特許:ビジネスモデル特許:電子決済システムの問題

WindowsでUNIX環境を!! — Cygwin on Windows, etc.

1. はじめに

 今まで、筆者は、Windows環境でUNIXライクなコマンドを使いたい、UNIX形式でのみコンパイルされたソフト(例えば、PostgreSQL)を使いたい、といった事を考えていて、どうすればそれが可能なのか、を色々と探してきました。特に、PostgreSQLは、ローカルの環境で動かしたい、という強い要求がありました。
数年前(といっても、もう8年近く前になります)は、BSD on Windows (BOW) というソフトも使いましたが、どうも使い勝手がよいようには思えず、また、メモリを多量に使うため、BOWを立ち上げるだけでWindows(当時は95)がフリーズする現象が起き、実際にはあまり使えませんでした。

このドキュメントでは、Cygwinの導入の方法と、入れる際の注意点、PostgreSQLのCygwin版の導入方法などを綴っていきます。

ただ、最近は、VMwareを利用したOSのエミュレーションの方が、パフォーマンスにおいても良いし制約も無くてよいかな、と思っています。WindowsOS上でLinuxやFreeBSDなどがエミュレートできます。想定できるソリューションも多数あります。また、Java派の方は、「Jakartaの杜」を参照するのも良いでしょう。ほぼ、Windows上で、UNIXと同じ事がJavaで出来るかと思いますので。

Windows2000、Windows98での確認をしております。尚、Win98では、postgreSQLは動きません。(安定してません)

2. Cygwinとは?

 Cygwin ツール群は、広く普及している GNU の開発ツールを、Windows NT(2000)、 95、98 用に移植したものです。これらのプログラムは、それらが必要としている UNIX システムコールや環境を提供する Cygwin ライブラリによって動作します。標準では、bashシェルで動かします。Cygnusというところが開発していたのですが、REDHAT社に買収されました。Apache Jakarta Project の方々は、何故か、「Windows環境でCVSを使うにはCigwinを。。。」と言っているようです。(勿論、WIndows環境の場合、CVSにはWInCVSを使っても良いです)

3. Cygwinが提供するもの

フルリリースには以下のパッケージが含まれます。

・開発ツール: binutils, bison, byacc, dejagnu, diff, expect, flex, gas, gcc, gdb, itcl, ld, libstdc++, make, patch, tcl, tix, tk

ユーザツール: ash, bash, bzip2, diff, fileutils, findutils, gawk, grep, gzip,  m4, sed, shellutils, tar, textutils, time

ユーザツールリリースはユーザツールしか含んでいません。

これらのツールの全てのソースコードが利用可能です。

4. ダウンロード方法

以下のいずれかのサイト(FTP)に行き、その中の「setup.exe」をダウンロードしてください。現在は、バージョン1.3.10のはず・・・

ftp.u-aizu.ac.jp
ring.aist.go.jp
ring.crl.go.jp
ring.etl.go.jp

上でダウンロードしたsetup.exeを起動します。起動すると、

・DownLoad from Internet
・Install from Internet
・Install from Local Directory

の三種類が選べますが、最初は、「DownLoad from Internet」を選択しましょう。(Install from Internetでも良いのですが、ダウンロード途中で接続が切れた場合などのことを考えて・・・)

次に、Local Package Directoryを聞いてきますので、Cygwinファイル群(バイナリ・ソース)をダウンロードする場所を入力します。例えば、「C:\Temp\cygwin」などといった感じです。

接続形式は、「Use IE Settings」「Direct Connection」のどちらかで良いでしょう。Proxyサーバーを使う方は、「Use HTTP/FTP Proxy」を選択してください。Nextボタンを押すと、ダウンロード出来るFTPサイトの一覧が表示されます。例えば、ftp://ftp.etl.go.jp/のように、日本のサイトを選択すると良いでしょう。setup.iniがダウンロードされます。

インストールするパッケージの一覧が出てきます。そのまま「->Next」を押しても良いでしょう(注:Skipと表示されているところで、マウスの左クリックをすると、最新バージョンを得ることができます。)。ダウンロードが開始されます。尚、ソースもダウンロードすると、かなりの時間がかかります。

ダウンロードが終了すれば、「Download Complete」と出ます。

5. インストール方法

 先ほどの「setup.exe」をもう一度起動します。

・DownLoad from Internet
・Install from Internet
・Install from Local Directory

の三種類が選べますが、今度は、「Install from Local Directory」を選択しましょう。

次に、Local Package Directoryを聞いてきますので、Cygwinファイル群(バイナリ・ソース)をダウンロードした場所を入力します。例えば、「C:\Temp\cygwin」などといった感じです。

更に、「Select Install Directory」と出てきます。ここで、実際にインストールを行うディレクトリを指定します。例えば、「C:\Cygwin」といった具合です。Default Text File TypeはUNIX、Install forはALLをチェックし、次にすすみます。インストールするパッケージは、そのままにしてよいでしょう。「->Next」を押します。

多少時間がかかりますが、インストールが終了すると、「Create Desktop Icon」「Add to start menu」と出てきます。両方ともチェックを入れて「->Next」を押せば、デスクトップにアイコンが作成され、スタートメニュにCygwinが登録されます。これでインストールは終了です。

6. 設定方法

Cygwin ユーザーズガイドの日本語訳がこちらにあります。

特に、ディレクトリ構造の部分はしっかりとご覧ください。

ここも役立ちます。(Apache設定するひともしないひとも)

あ・・・ここもだ・・。

私はダウンロード先を「C:\Cygwin\」にしましたが、お好きなディレクトリにしてかまいません。以後、%CYGDIR%と表記します。

NT系の場合、コントロールパネルの「環境変数」のPATHに、以下を追加します。

%CYGDIR%bin

コマンドプロンプトから、「bash」と打ってもよいですし、デスクトップにできた(であろう)アイコンをクリックしても良いです。これで、基本的な設定は完了です。

7. PostgreSQLのCygwinへの導入

 <必要ファイル>

Cygwin用の最新版のPostgreSQL (7.3.1)です。cygwin1.3.10以降用

尚、上記の「Cygwin導入」で、Postgresを入れた人は、<必要コマンド>以降から読んでください。

ダウンロードするディレクトリは、%CYGDIR%tmpがよいかと思います・・。

ダウンロード後、ダウンロードしたディレクトリに行き、

 bash-2.03%  bzcat postgresql7.3.1-cygwin-mb.tar.bz2 | tar xvf - -C /usr/local

として、解凍します。(postgresql7.3.1-cygwin-mb.tar.bz2 の部分には、ダウンロードしたファイル名を入れます。適当に書き換えてください。)

/usr/local/pgsql/以下に、PostgreSQLがインストールされました。

次に、http://www.nonsensecorner.com/pgsql/
にあるcygipc-1.13-2.tar.bz2などをダウンロードします。

でてきた「exe」ファイルを、%CYGDIR%binなどの、パスの通った場所に入れます。

<必要コマンド>

作成するファイルは、/etc/passwd,/etc/groupsなどですが、これは以下のようなコマンドで作成してくれます。

 bash-2.03% mkpasswd -l > /etc/passwd
 bash-2.03% mkgroup -l > /etc/groups

<profileファイルの更新>

/etc/profileに、以下を追加します。

PGHOST=127.0.0.1
PATH=$PATH:/usr/local/pgsql/bin:/usr/local/bin:/usr/local/pgsql/lib
PGDATA=/usr/local/pgsql
PGLIB=/usr/local/pgsql/lib
LD_LIBRARY_PATH=/usr/local/pgsql/lib:/usr/local/lib
POSTGRES_LIB=/usr/local/pgsql/lib
export LD_LIBRARY_PATH PGDATA PGLIB POSTGRES_LIB

if [ -f /usr/local/pgsql/postmaster.pid ]; then
 postid=`ps ax| grep postmaster |grep -v grep|awk '{print $1;}'`
 if [ X${postid} != "X" ] ; then
  kill -TERM ${postid} 
 fi
fi

ipcid=`ps ax| grep ipc-daemon |grep -v grep|awk '{print $1;}'`
if [ X${ipcid} != "X" ] ; then
 kill -TERM ${ipcid} 
fi

ipc-daemon -q &
nohup postmaster -i -p 5432 >logfile 2>&1 &

必要とあらば

PGCLIENTENCODING=SJIS
export PGCLIENTENCODING

の2行を入れます。

下線が引いてある個所は、ipc-daemonのプロセスを確認し、あればKILLすることと、Postmasterのプロセスを確認し、あればKILLすること、そして、その両方をたちあげること、をやっています。Cygwin立ち上げ時に自動的にipc-daemonとpostmasterをたちあげたい場合はいれるべきですが、自動化したくなければいれなくてもよいです。

<DB作成>

まず、initdbします。そのまえに、

 bash-2.03% ipc-daemon -q &

しておきましょう。

 bash-2.03% initdb -E EUC_JP

とします。(これでエラーが出る場合、データベース作成ディレクトリが指定されていないことが考えられます。その場合は、initdb -E EUC_JP -D/usr/local/pgsql などとしてみてください。) ポイントは、文字コードをEUC_JPにしていること。これがないと、Windows環境ですから、文字化けしてしまいます・・。

#あと、Postgresの7.1.3のCygwinものから、(多分)デフォルトのコードがUNICODEになっているかと思われます。psql -lなどで確認ください。

initdbに成功すれば、指定されたディレクトリ以下に、データベースの雛型等ができます。例えば、/usr/local/pgsql以下にbaseというディレクトリができていますね?

POSTMASTERを起動します。

 bash-2.03% postmaster -i &

上で、ipc-daemonを立ち上げていないと、shmget()エラーが出ることがあります。

さて、いよいよ、データベースの作成です。

 bash-2.03% createdb -h 127.0.0.1 test

はい、これで、testというデータベースの出来上がりです。

あとは、

 bash-2.03% psql -h 127.0.0.1 -n test

とすれば、テストデータベースに入ることができます。(なぜか、-h 127.0.0.1 が必ず必要なのです・・・。Windows版のcreatedbやpsqlの仕様らしい・・)

基本的に、postmasterが起動していればpsqlできますが、出来ない場合は、「postmasterをkillする」「ipc-daemonをkillする」「両方を立ち上げなおす」してみてください。kill出来ない場合は、Windowsのタスクマネージャーでプロセスをとめてしまいましょう。

以下に、PSQLを立ち上げた後の実際の例を示します。青色フォントが、実際に入力する文字です。黒色フォントは、DBサーバーからの応答です。

test=# create table tmptable (number serial not null primary key, value varchar(254));
NOTICE: CREATE TABLE will create implicit sequence ‘tmptable_number_seq’ for SERIAL column ‘tmptab
e.number’
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index ‘tmptable_pkey’ for table ‘tmptable’
NOTICE: CREATE TABLE will create implicit sequence ‘tmptable_number_seq’ for SERIAL column ‘tmptab
e.number’
NOTICE: CREATE TABLE/PRIMARY KEY will create implicit index ‘tmptable_pkey’ for table ‘tmptable’
CREATE
test=# insert into tmptable(value) values (‘This is a test.’);
INSERT 25087 1
test=# insert into tmptable(value) values (‘日本語 テスト’);
INSERT 25088 1
test=# select * from tmptable;
number | value
——–+—————–
1 | This is a test.
2 | 日本語テスト
(2 rows)(END)

こうなれば、ばっちりですね。

PSQLを終了するときは、

test=#\q

です..

ちなみに、上で作ったテーブルを削除する場合は、

test=#drop sequence tmptable_number_seq;
DROP
test=# drop table tmptable;
DROP

8. 更なる最適環境構築の為に

<postgreSQL ODBC ドライバーの導入(WindowsからリモートのpostgreSQLなどと接続:MS-ACCESSなどで利用できる)>

ftp://ftp.postgresql.org/pub/odbc/versions/full/psqlodbc-07_01_0009.zip

から、オリジナルのPostgreSQL ODBC Driverを入手。

psqlodbc-jp-20010713-bin.zip(119,907バイト) – zip で圧縮したもの

から日本語パッチをダウンロードします。

(あるいは、「PostgreSQL ODBC Driver 日本語版」や、「PostgreSQL ODBC Driver 日本語版のインストールについて」をご参照ください。)

日本語版をインストールするにあたり、先にインストールするオリジナル(英語版)のバージョンは特に問いません。
オリジナル(英語版)に付属のODBCドライバマネージャは英語版です。インストール先のシステムにODBCドライバマネージャがないか、あってもバージョンが古い場合、オリジナルのセットアッププログラムはPostgreSQL ODBC Driverのインストールと同時に英語版のODBCドライバマネージャもインストールします。ご注意ください。
オリジナル(英語版)のインストール途中でODBCドライバマネージャのインストールに関する選択肢が表示される場合があります。選択に迷った場合には、むやみに英語版にされないためにも次の優先順位で選ぶのが安全です(それでも英語版にされる場合はあります)。
Install Driver Manager (with version checking)
Install Driver Manager
インストール先のシステムにすでにPostODBCがインストールされている場合、オリジナル(英語版)のセットアッププログラムはこれを削除(中途半端なことにドライバ本体のDLLファイルのみを削除)してしまい、以後PostODBCが正常に動作しなくなります。これを避けるためには、オリジナル(英語版)のインストールの前にPostODBCのドライバ本体のDLLファイル(WindowsのシステムディレクトリのPODBC32.DLL)をバックアップし、インストール完了後に復元してください。

導入が終わると、32bit ODBCコンソール(コントロールパネルから・・)の「ドライバ」タブのなかに、postgreSQLがあることが確認できます。

<PgAccessのインストール>

TCL/Tkのダウンロード(日本語版)
ftp://ftp.sra.co.jp/pub/lang/tcl/jp/tcltk805jp17.zip

PCACCESSのダウンロード

PgAccess は、 GBorgThe pgaccess Project — PgAccess に移り、PostgreSQL のリリースに含まれなくなりました。 今後、PgAccess は、PostgreSQL アプリケーションとして、 PostgreSQL のリリースとは独立に、 GBorg で開発が続けられます。

ただ、ダウンロードして、解凍し、setup.exeを実行するだけです。

APPENDIX. その他

 <LESS>

デフォルト環境だと日本語表示できません。 less290i.tgzをダウンロードし、
/tmp
に移動します。
% tar xvfz less290i.tgz % cp less.exe /usr/local/bin
で、lessで日本語表示可能です。

以下に、nkfをインストールする方法もかいておきます。(rpmから)

<秀丸などのエディター>

秀丸をCygwin上で使うには、以下のファイルを作ればOK!
— /usr/local/bin/hidemaru.bat —

“c:\Program Files\Hidemaru\hidemaru.exe” %1 %2 %3 %4

———————————
— /etc/profile —

alias hidemaru=”hidemaru.bat”

———————————
秀丸以外の場合、hidemaruを適宜変えてやってみてください。

<INVOKER>

http://www.idetix.com/files/invkr153.zip

(Windows2000の「サービス」で、自動立ち上げができるようになります。)

<RPM>

(RPMとは、RedHat Package Managerの略で、一般的に利用されるソフトを簡単にインストールし、さらにインストールの履歴をデータベースで管理するものです。なお、RPM に関する詳細については、http://www.rpm.org/を参照して下さい。あるいは、市販の本かな・・)

Project HeavyMoonから、最新のcygwin用RPMを入手しましょう。ここが、rpmのtar+bz2形式最新圧縮ファイルです。ダウンロードして、Cygwinのルートディレクトリにおいてみましょう。

解凍の仕方は、

 bash-2.03%  bzcat rpm-3.0.6.bin.tar.bz2 | tar xvf - -C /

として、解凍します。(rpm-3.0.6.bin.tar.bz2は、ダウンロードしたファイル名を入れます。適当に書き換えてください。)

Windows98等をご利用の方は、Project HeavyMoonにある、patchをあててください。また、9x系でコンパイルがすでにされているモノはみあたらないので、SPECファイルをダウンロードし、ご自身でソースを持ってきてコンパイルしてしまってください。

私は、ここから、nkfやinfo、grep、zip、lhaなどを入手し、インストールしましたが、うまく稼動しています。
 bash-2.03%  rpm -ihv ***.rpm
で、
 bash-2.03%  #################
と表示されれば、うまくインストールされたことになります。

インストールされたパッケージ一覧は
 bash-2.03%  rpm -aq
で表示されます。


・・では、ご健闘をお祈りいたします。ちなみに、「WINDOWS最適環境構築」に紹介する、FileVisor4とメモ帳トラッパー(or DUMMYPAD)+WZ_EDITOR環境だと、ファイルの中身の漢字コードを意識しなくてすむばかりか、tar.Zファイルやbz2ファイルなど、殆どの圧縮形式のファイルの解凍が楽にできます。(FileVisor5の方が断然良いです。圧縮ファイルをツリー表示できます)

近々、PHPでのpostgreSQL接続(Windows+Cygwin)の方法についてお教えいたします。(いやー、これが出来たおかげで、開発環境がかなりよくなりました・・・)

APPENDIX2. もろもろ

 実は、PHPのWindows版のほうについては、色々と悩んでいたことがあって、それが解決するまでは、PHP+Windowsのことをかけないな、と思っていたのですが、解決いたしまして・・・。モウすぐ、PHP+PostgreSQL(Windows + Cygwin)のことを書きますね。以下に、「悩んでいたこと・・・」をPHP-JPメーリングリストにて投稿し、自己解決したものを記します。

Terra-Internationalの北畠です。自己レスですが・・。以下の件なんですが、解決しました。ただ、解決した、といっただけでは、情報としてなにも意味がないので、
説明を。

<前提>

1 PHP4.04 (PHP 4.01以上) for Win は、ISAPI(php4isapi.dll)を使う場合(つまり、CGI版ではない場合)、inetinfo.exeのcpu使用率が100%になったり、といったバグが、海外では報告されています。
(PHP 4.02以上だと解決しているというのもあったような気はしますが、そうではなかったみたいで。まあ、PHP4.04でも、「たまには」
安定することがありましたけど。)
ちなみに、cpu利用率が100%になった場合は、タスクマネージャーでinetinfo.exeを選択し、(もしVC++デバッガーがあれば)デバッグを
する、にして、デバッガーを閉じると、元に戻ります。一応、はまった人向け情報。(私はこれで何回も助けられました・・・)

2 IISは(バグなのかわざとなのかは釈然としませんが)、CGIを起動する場合(例えば、PHPであれば、php.exe)、HTTPヘッダーが
“302 Object Moved” をだすものに関しては、強制的に、ヘッダー情報を書き換えてしまいます。つまり、Set-Cookieヘッダーも無視
されてしまいます。
#参照:
http://support.microsoft.com/support/kb/articles/q176/1/13.asp
これがどういう結果をPHPにもたらすか、というと、以下のメールのとおり、SetCookieしてからHeader(“Location: …”)で
リダイレクトをかけると、失敗します。

具体的には、
| HTTP/1.1 302 Object Moved
| Location: (URL)
| Server: Microsoft-IIS/5.0
| Content-Type: text/html
| Content-Length: 165
|
| <head><title>Document Moved</title></head>
| <body><h1>Object Moved</h1>This document may be found <a
HREF=”(URL)”>here</a></body>
となります。
#本来は、Set-Cookie: ********* 行が入るというのに・・・。

<解決方法>

CGI版を使い(つまり、拡張子のマッピングには、php.exeを使い)、このような記述をします。

—- (filename:) nph-hoge.php ————————–
<?

$time = mktime()+600; // Cookieの有効時間が10分と想定
$date = date(“l, d-M-y H:i:s”, ($time));
$key1 = “cookiename1”; // Cookieのキー名1
$val1 = rawurlencode(“対応する値1”); // 対応する値1
$key2 = “cookiename2”; // Cookieのキー名2
$val2 = rawurlencode(“対応する値2”); // 対応する値2
$protocol = “http”; // プロトコル
$location = “redirect_to.html”; // リダイレクトしたいファイル名

$cookie = “Set-Cookie: ${key1}=${val1}; path=/;
expires=${date} GMT;\r\n”;
$cookie .= “Set-Cookie: ${key2}=${val2}; path=/;
expires=${date} GMT;\r\n”;

$header = $protocol . “://” . getenv(“HTTP_HOST”) . “${location}\r\n”;

if ($cookie){ $header .= $cookie . “\r\n”;}

Header(“HTTP/1.0 302 Redirect\r\nLocation: $header”);

Exit;
?>
———————————————————

尚、注意点は、PHPファイルの名称は、必ず「nph-」をつける、ということです。その点を忘れてしまうと、はまります。
(nph = non-parsed header)

この方法は、(PHP-MLには関係ありませんが)Perl(CGI版)でも有効でしょう。

では、失礼します。

P.S. どなたか、Zend Encoder Unlimitedを使ってらっしゃる方、いらっしゃいますか? Windows 2000 + IIS 5.0 でも動きました。Zend.comには、Win版Apacheしか記述されていませんでしたが・・。PHPスクリプトをプリコンパイルして、コードを見えなくする手法は、画期的ですね。ちょっと高いですが・・。。。

On Tue, 30 Jan 2001 22:43:36 +0900
Tetsuya Kitahata  wrote:

>
> Terra-Internationalの北畠と申します。
>
> Windows版のPHP4を導入しているのですが(Win2000 + IIS 5.0)、
> php4isapi.dll ではなくphp.exeを、IIS 5.0において.php 拡張
> 子に関連付けたところ、SetCookie関数が通らなくなりました。
>
> 具体的な例としては、
>
> —-hogehoge.php———-
> <?
> ………………
> SetCookie(“key”, $value);
> Header(“Location: *****.php”);
> ………………
> ?>
> ————————–
>
> です。つまり、Location: をHTTPヘッダーに挿入し、リダイレクション
> をかける場合に措いて、です。HTTPヘッダーから、Cookie行の情報が
> すっぽり消えてしまいます。(IISが勝手に書き換えているような気が
> しなくもありませんが)
> この現象は、HTTPのログをみて確認済みです。
>
> そして、IIS の設定に措いて、拡張子関連付けに、DLLを使うと、これは
> 解決します。SetCookie後、Header(“Location: ….”)しても、正常どおり、
> Cookieは焼かれます。
> #ただ、DLL使うと、なぜか、inetinfo.exeがCPU使用率をものすごく
> #食ってしまったり、Access Violation エラーが起こることが
> #あるので、これまた困っていますが。
>
> —
>
> 同じような現象がおこるかた、いらっしゃいますでしょうか?また、
> 解決策はありますか?
> 多分、仕様上のバグのようにも思えるのですが、すっきりさせたいと
> 思っていまして、この件につきご存知の方がいらっしゃれば、お教え
> いただければ幸いです。