A sample text widget

Etiam pulvinar consectetur dolor sed malesuada. Ut convallis euismod dolor nec pretium. Nunc ut tristique massa.

Nam sodales mi vitae dolor ullamcorper et vulputate enim accumsan. Morbi orci magna, tincidunt vitae molestie nec, molestie at mi. Nulla nulla lorem, suscipit in posuere in, interdum non magna.

検索ワードに答えてみる

Webサイトを作った人は知ってると思いますが、いろいろとアクセス解析が出来ます。その中に、たとえばgoogleとかでどういう検索ワードで来たのかとかもわかりますが、検索してこのサイトに来た人が、内容を見てガックリってのも多いと思うので、最近の検索ワードに答えてみようと思います。

tcp113 Redhat

identまたはauthってやつですね。 メールの送受信の時にこの通信が発生することがありますが、ほとんど使われてないので、意図していなければ止めましょう(メールは送信は25番、受信は110番なので、113番は使用しなくても普通は問題無いはず)。 たとえば、qmailはタイムアウトまで30数秒待たされるので、ドロップフィルタされてるとそのくらい待たされます。

qmail 起動スクリプト

qmailの起動スクリプトは結構たいへんですね。このサイトでもqmailでメールサーバでいくつか紹介しています。 qmailなどのデーモンは、通常スーパサーバと呼ばれるラッパーから呼ばれます。有名所では、inetd、xinetdですね。これらはTCPラッパーを備えているのでアクセス制限しやすい上に、qmailと外界のインターネットとの境界にさらに壁を作るようなイメージなので、セキュリティ的にも良いです。また、qmailは同じ作者が作ったucspi-tcpとの相性がいいですね。ただ、クセがあるので、個人的にはちょっと設定が大変ですがxinetdなどにした方がいいんじゃないかなぁと思います。

Apache2.2 httpd.conf バーチャルホスト IPベース

この検索ワードは目的がちょっとわかんないけど、こんな感じかな。

以下のように書くと、アクセスのしかたによって表示されるサイトが変わります。複数のIPアドレスを持ってる場合はそれぞれ書けばその通りになるかな。 ホスト名も実ドメインだろうが、エイリアスだろうが、設定した分反映されます。 まぁそういう場合は、設定してないアドレス(デフォルト)の設定にも注意。

 NameVirtualHost IPアドレス  # 「http://IPアドレス/」へアクセスしてきた時  <VirtualHost IPアドレス>    ServerName IPアドレス    DocumentRoot /home/xxx    <Directory /home/xxx>      # ディレクトリの設定とか    </Directory>  </VirtualHost>    # 「http://www.sample.com/」へアクセスしてきた時  <VirtualHost IPアドレス>      ServerName www.sample.com      DocumentRoot /home/yyy […]

通信制御

今回は一連のDirectXがプログラミングの続きですが、DirectXとはあまり関係ないプログラムのネタです。通信対戦ゲームやMMORPGのようなゲームには、ネットワーク経由での通信制御が必要です。では、通信をどうやって実現しようか…? 今回考えた候補は以下の通り。

DirectPlay(DirectXのモジュールの一つで、ネットワーク通信専用モジュール。 フリーのソレっぽいモジュール(今回はHawkNLを使ってみた) 気合いで一から書く。

まぁ、最近blogでこのネタを扱わなかったのは、この辺でモンモンとしていたからです。 まず、DirectPlay。これは評判が悪いですね。何でかよく知らないけど。 まぁ、でも評判云々の前に、まるで通信対戦の概念を知らない私が選り好みをしてる方がアフォっぽいので、コーディングしてみた。 結果は、まず参考となるサイトが少ないですね。DirectX SDKのサンプルとかチュートリアルも、今使っている2007/Febには付いて無くて、2003/Summerまで遡ってGETしましたが、参考になるのがソレとHELPくらいしか無いので、非常に辛いです。サーバ/クライアントで繋がるくらいまで組んだけど、よく分からない分制御がしづらいのでDirectPlayはやめにしました。 次は、HawkNL。英語サイトしか無いのでわからん(笑。 まぁ、コードは組んだけど、せっかくこういうモジュールを使うなら、完全なブラックボックスで、あまり中身を意識しなくてもいいような使い方をしたい。SocketとかMulti Threadとかの機能があるけど、結局通常のAPIの焼き直しっぽくて、、、まぁ、不採用。

Amazon:4797330449

で、結局Socket(winsock)を使って自前で組みました。winsockのプログラミングって過去にやった記憶があったので本棚を漁ったら→こんな本を発見(リンク先は最近の本だけど、うちにあったのは同じやつの1998年度版)。既に10年近くの本だけど、winsock自体の仕様がほとんど変わってないってのは嬉しいね。 とりあえず、思いだし程度に1、2時間程度でサラっと読み返して、後はインターネットでサンプルコードを探してコーディング。いきなり現状のクライアントに組み込むのもアレなので、テストクライアントも作成って感じです。 現状はここまで。 簡単な通信は実現できたから、あとはマルチタスク化して多量の通信でも難なくこなせるような仕組みにしたいな。まだもうちょっといろいろと時間がかかりそうです。 以下、買ってないけど参考になりそうな本。これからこういうプログラミングをする人は参考にしてみて下さい。

Amazon:4797328479

 

Amazon:4797328460

 

[…]

鉄子の旅

Amazon:4091885411 最近旅行によく行くけど、このマンガの影響がかなりあります。で、このマンガが明日(6/24(日))よりアニメでやるそうです。 よくありがちな旅行マンガとは一線を画す内容で、すごくコミカルなんですがちゃんと取材に行ってそれをマンガ化しています。 コミックはこんな感じ ちなみに、単行本ではゲストでいろいろな人が出ていますが、アニメではそのゲストの人が声を当ててたりとか、そういう意味でも面白い。 鉄子の旅(アニメ公式サイト) Wikipedia(鉄子の旅)

ネタ

ビリーズブートキャンプのCMで出てるビリーが来日してるらしいですね。 CMを見たこと無い方はこちら→http://www.youtube.com/watch?v=M9PN_f4goao 効果がすごいのか、ビリーのキャラクターがネタとしてうけているのかが微妙だけど、最近話題でニュースとかにも出てます。 まぁ、買った人の話を聞いてみると、エアロビクスの変形版のような感じなので効果はあるみたいだけど、結構ハードみたいです。Wikipediaとかにも載ってるけど、1週間で集中的にやるのは注意が必要っぽい。 Wikipedia(ビリーズブートキャンプ) http://www22.atwiki.jp/onemoretime/

strcpy

コンピュータへの不正アクセスの方法として、buffer overflow(もしくはbuffer overrun)という攻撃があります。コンピュータには「メモリ(記憶装置)」というものがありますが(HDDとか半導体とかいうのは気にしないでください)、「メモリ」にはプログラムとデータが入っています。 しかし、ここがプログラム、ここがデータという明示的な境界はありません。それはプログラマが決めます。 どういうことかというと、砂場で遊んでいる子供が、砂場が狭いと「ここまではボクの遊び場、そこからはキミの遊び場」なんて境界を作ることがありますが、「砂場」の砂の色が違ったりとか壁があったりとかはしません。第三者から見れば、どこからがボクでどこからがキミの砂場かはわからない…つまり、論理的な境界であって、物理的な壁がある訳ではないです。 ※最近はメモリ保護機能とか、単純なレベルならOSが保護してくれます。 で、buffer overflowというのは、データを溢れさせてメモリ上のプログラムを書き換えることで実現する攻撃方法です。 こういうbuffer overflowな話でよく言われる例として、プログラム言語であるC/C++の関数の「strcpy」が例によく使われます。「strcpy」は文字列Aを文字列Bにコピーするという関数です。つまり、文字列Aが10文字、文字列Bが5文字しかキャパシティが無いと、あっさりbuffer overflowが発生します。はみ出した5文字分は、メモリ上の「プログラム」がかかれている場所に行くか、「データ」の場所に行くかはわかりません(意図的にそういうことをすることはありますが…)。 ちなみに、C/C++言語にはもう少し複雑な背景があって、こういう関数が「標準化」されています。C/C++言語はVisualC++とかgccとかBorland Cとか様々な種類がありますが、「標準化」された命令はそのまま実装されています。「この命令はヤバいので乗せない」なんてことはそうそう出来ません(移植性が損なわれる)。それが、こういうセキュリティ問題をさらに根深いものにしてるとも言えるのかな。だから、未だにstrcpyはC/C++にそのまま存在します。 で、今VisualC++でプログラムをしてるけど、最近のバージョンではこんな警告が出るようになりました。

warning C4996: ‘XXXXX’: This function or variable may be unsafe. Consider using XXXXX_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.

訳)警告 C4996: ‘XXXXX’: この機能か変数が危険であるかもしれません。代わりにXXXXX_sを使用すると考えてください。 無効にするには、_CRT_SECURE_NO_WARNINGSを使用してください。

strcpyを使うと警告(エラーじゃないので、無視すればそのまま使える)がでて、strcpy_sなんてものを使うことを薦められます。ちなみに、strcpy_sはstrcpyとほとんど同じだけど、「文字数」を指定してそれを超えるとエラーになります。プログラマーが文字数を間違えたら話にならないですが、まぁそんな感じであまり意識しなくても安全なプログラムを書けるようになっています。 こういった関数を多く使うと「標準化」されたプログラムでは無くなってきます。つまり、プログラムの「移植性」が損なわれてきます。しかし、JAVAのような違うベクトルから「移植性」を重視した言語が現れてきた今日では、そもそもそういう「標準化」の意味も薄れてきているのかなぁ…と、何となく思いました。 ※っていうか、過去のプログラムを使ったら警告だらけになって一つ一つ修正しています(T_T

ワンセグTV

2006/11/20のブログでちょいテレというのを書きました。 USBにつなげるUSBアンテナで、パソコンでワンセグTVを見るというもの。

その後、どうかというと…全然見ていませんw

何故かというと、電波が悪いとか画像がどうとかいろいろあるんだけど、ぶっちゃけ今回のワンセグにしろ、TVチューナボードとかにしろ、パソコンでそれをやっちゃうと、他にパソコンで何もできないのよね。 パソコンでテレビを見ながら、ゲームなんてもってのほかです。DualCore CPUで、メモリ2GByte積んだって、やっぱり厳しいです(たまにフリーズとかするし)。

で、ポータブルテレビを買ってみました。東芝の「ポータロウ」というやつで型名はSD-P70S(http://www3.toshiba.co.jp/hdd-dvd/products/player/sd-p70s/index.html)。 ちなみに、これは所謂DVDプレイヤーで、テレビは見れません。

これに、ワンセグチューナ(http://www3.toshiba.co.jp/hdd-dvd/products/option/sd_pdt1.html)を繋げるとワンセグテレビが見れます。

プレイヤーはそんなに高値じゃないけど、チューナは結構値が張ります。 ワンセグチューナ内蔵なのは他にもあったけど、これは外部アンテナが使えるのがポイント(他に使える機種もあるかもしれないけど、よく知らない)。 結局、ワンセグってかなり画像が汚いから結構気になる。ただ、外部アンテナを有線で繋げれば、電波が弱くて見れないってことは無いので、室内でパソコンをやりながらテレビを見るのはこの組み合わせがいいね。

あ、ちなみにモバイル用途ではこの組み合わせはお勧めしません。なんか、チューナがバッテリー対応してなくね?まぁ、対応しててもかさばるのでダメ。 まぁ、チューナが無くてもDVDプレイヤーとして使えるから、モバイルではそういう用途ならいいかも。

横に普通のテレビが置ける環境ならそうすればいいけど、うちみたいにそういうのが厳しい人には、こういう環境もいいですよ。

 

[…]

Delta’s X Web sites生誕11周年

本日でこのサイトは生誕11周年ですよ。そのころからカウンターを回し続けて77万アクセス!サイト名もDdashホームページからサイト名やハンドル名を変えたり、サイトを増やしたり減らしたり…まぁ、速いものです。 11年前ってどんな感じよ?と思い起こしてみると… 検索サイトはYahooくらい(プロバイダ毎のサイト紹介の方が活発だったかな)。 デジカメが初めてこの世に出回ったくらいの時期(当時30万画素くらい)。 JavaとかFlashとか無かった(サイトを作るのはHTMLだけ、あとCGIとかSSIとか)。 ブラウザはIEとネスケくらい(Verは2とか)。しかも、ネスケは有料で売ってた。 インターネットはISDNとか。速度は64kbps(最近のADSLは8Mbpsくらいだから1/100以下)。ついでに従量制が主流(3分10円)。 当時の大手プロバイダは、ベッコウアメ、リムネット、ソネットとか?Niftyはパソ通の方が主流だったかな。あと、NECのBiglobeもあったかな。 WindowsはWindows95(とNT)が主流。 こんな感じかなぁ。相川七瀬の「恋心」とかもこの年にブレイクしてたみたいw ちなみに、上の画像は当時のデジカメで撮った写真。圧縮とかしてない素でこれだよ。

プリングルス スパイシーグァカモレ味

コンビニに行ったらプリングルスのSpicyGuacamoleというのがあった。パッケージに英語でしか書いてなかったので始め読めなかったけど、フタに日本語の張り紙がしてあったのでわかった。味は、食べた瞬間は「青臭い!」、そしてジワジワとピザっぽい味がしてきます。まぁ、そんな感じ。美味しいけど好みが分かれそう? ものもらい 目(まぶた)がおかしかったので眼科に行ったら、一時間待たされたあげく、10秒程度で「ものもらいですね」って言われて目薬を貰って帰ってきた。 たかがものもらいでも、ここxx年パソコンやっててこんなに酷いのは初めてだぞ!もすこし患者をいたわれ!って心で叫びつつ帰ってきた。 まぁ、府に落ちないので、ちとググって見た。 http://monomorai.phrontis.net/ …このURLすごいな… ものもらいには2種類あるらしい。 麦粒腫(ばくりゅうしゅ)まぶた(まつげ近くの毛穴)に細菌が入って化膿する。 霰粒腫(さんりゅうしゅ)まぶたの中にできる、脂の分泌線が詰まる。 ものもらいは今回が初めてじゃないけど、明らかにいつもなるのは前者、今回のは後者だ。まぶたを触ると堅いしこりがあるし、「痛みは通常ありません。」ってのもその通りだ。

霰粒腫は、麦粒腫とは異なり、そのままの状態で放っておくと同じ状態のまま何ヶ月も続くこともあります。

たしかに二週間くらいほっぽらかしながら、土日は養生してたけど、一向によくならなかった。 ざざっと上のサイトを読んだところ、「目を清潔にする」「眼帯はなるべくしない」「時間がかかるっぽい」って感じのようだ。「温湿布を貼る」ってのは意外だ。今まで炎症だと思って冷やしていたけど、これはよくないっぽい。 まぁ、気長に直すか。 貰った目薬はこれ。 http://www.interq.or.jp/ox/dwm/se/se13/se1319722.html

…殺菌的に作用します。黄色ブドウ球菌など…

これって、麦粒腫対策のようにも見えるが…まぁ、清潔にすることには違いないので、いいや。 おひさです。 そんなものが売られてるのですね。 SpicyGuacamole 日本人の縁遠いメキシコ料理ですよ。 アヴォカドディップの味ですね。 アメリカ行きてぇえええ。 – SNEEZY (2007年06月25日 21時04分59秒) おひさぁです。最近、ダブルチーズとカレー味のプリングルスもありましたが、こちらはお勧めしません>< – デルタ (2007年06月25日 21時37分35秒)

目が〜

右目が真っ赤になっちゃいました。どうも、まぶたの内側に変な腫物ができたようで、それが眼球を刺激しているようです。そんな訳で、今は左目だけでブログを書いています。 こういうときこそブログを書かなくては!…と言っても、左目は運転免許所をメガネ無しでギリギリ通る程度の視力なので、あまり見えません。ぶっちゃけ、ディスプレイの文字もかなりボヤけてます…。明日…仕事休んで眼科へ行ってきます…

ま、それはそれとして、上の画像は毎度おなじみDirectXなプログラミングネタ。 3Dゲームとかで、画面をクリックすると、そこに向かってキャラが走り出したりしますよね。この前の土日は、その「画面をクリックと仮想世界との連動」のプログラムをしてました。

「画面」という平面をクリックした場合、そこは仮想世界(3D)のどこをクリックしたのかを計算しなければなりません。これはさほど難しくなく、仮想世界のどこかにあるカメラから見ているので、そのカメラの中心位置からのマウスの相対位置で求めることが出来ます。

ちなみに仮想世界の視点は「点」ではなく、その点から少し離れた面としています(たぶん)。 クリックした場所がわかったら、こんどはそこから仮想世界の中で線を引きます。 線と仮想世界の地面の交点が、「クリックした場所」になるわけです。 ちなみに、「線」というのは、

2つの点 1つの点と方向

のいずれかがわかれば引けます。これは、小学校の算数で習います。しかし、「クリックした場所」という一点しか求めていません。 もう一つの情報である「方向」を与えます。方向というのは「カメラの向いている方向」というのがあります。ちなみに、「カメラの向いている方向」と完全に平行にはなりません。カメラで見た世界は「奥ほど広い」ので、「クリックした場所」が中心でないかぎり、距離が遠くなるほどに、カメラの向いている方向から離れます。

まぁ、その辺の微妙な演算をしてくれる関数が存在しているので、ペロっとデータを与えれば計算してくれます。 これで、クリックした点とそこからの線が求まりました。しかし、これでもまだ終わりじゃないです。その求めた「線」と仮想世界の中の地面という「面」の交点を求めなければなりません。 まぁ、この交点を求めるのも、関数+αで計算出来ます。

で、上の画像ですが、今回、テクスチャにちょっと細工をしました。四角いマス1つに「●」というマークを付けています。この世界は●という「面」の集合で出来ています。この画面の中には700くらいの●(面)があるでしょう。 つまり、一回クリックするごとに、このすべての●に対して、クリックしたポイントからの線と交わっているかを計算します。当然700●なら、700回計算です。

しかも、デコボコなので、手前の●と奥の●とかもあります。 最後の計算は結局力業なので、その分繰り返してやります。で、そんな計算地獄を2日間ほどかけてやってクリックした場所にカーソル(上の画像の赤丸で囲んでいる所にある赤いオブジェクト)が行くようになりました。 ちなみに画面描画をしながらこんな計算をしたら、画面が一瞬とまっちゃうので、この計算はバックグラウンドでガシガシやっちゃいます。

日頃、何気なくゲームでクリックとかしてると思いますが、裏ではこんなことをやってるんですよ。ホントに疲れます。 目がおかしくなるのもわかるでしょ?

 

鎧を着たり、武器を装備したり

またかなり時間が開いてしまいましたが、今回はキャラクターモデル系のプログラムを書いていました。あと、そのネタ用のモデルデータを作るのも一週間くらいかかっちゃったかな。 まずは、人が走っているところ。

[…]