2005年05月

2005年05月31日

Cool Web Site 050531

ネットサーフィンをしていて、見つけたCOOLデザインサイト。

INPROS作品集(?)

なんかここしばらくプログラムやらサーバ構築やらでデザインから遠ざかっていましたが、ちょっとがつんと刺激を受けた感じ。

最近見たプロのデザイナーによるWebデザインの中でもしっかりした出来でため息が出そう。

ちゃんと作らなくっちゃなぁ。

campanella_77 at 15:43|この記事のURLComments(0)TrackBack(0)日記 

料理 ペペロンチーノ経過報告050531

このところ2日に1回、否、それ以上の割合で作っているペペロンチーノ。
いまだに試行錯誤の連続でもあります(って程でもない)。
難しいのが、ゆで汁の塩加減の調整です。
いちいち水の量、塩の量を量ってやれば失敗もないのでしょうが、いかせんぱぱっと作ってしまうので、その辺もいい加減。
でも、実際はガーリックの量や鷹の爪の量より重要なことだったりします。

たいていが塩が多すぎてしまう事が多いのですが、逆に少なすぎてもダメ。
うちのお袋が私に影響されて、パスタな日々が多いようなのですが、先日お袋の使用したゆで汁がまだ熱かったこともあって、それを利用して麺を茹でました。
ちょうどお袋は、自分で作ったペペロンチーノを食べているときで、私にひと言

「○○○(小生の名前)が作るのと違って、パンチがないわ」

この時点で気が付くべきでした。
どうやって作ったか問いただすと、そう私と違いません。

この後渡しが作ったパスタを食べましたが、やはりパンチがない。
そう、塩加減が少なすぎるのです。

私の作ったペペロンチーノはお袋をはじめ、私も作ったことはあるよ的な人とは明らかに違うレベル、そう、はっきり言って店で出せるレベルだとは思う。
ただし、塩加減を間違えなければ。


そして、塩加減がうまくいく確立は、



5回に1回・・・。


計れよ。量。


ま、とにかく、お袋の作り方を上の空で聴きながら、色々支度をする。

ペペロンチーノ。

嘆きのパスタともいわれているらしい。

つまり、旦那が仕事で疲れて帰ってきたのに出されたのは、材料もいらない、手もかからないこのペペロンチーノ。
「オ〜、ペペロンチーノ(なんてこった)」
という誤訳は放っておいて、お袋の作るペペロンチーノと私のそれとは何が違うか。
このブログで書き始めた頃から作り続けてきたペペロンチーノの、ひとまとめとしてここであげておきたいと思います。


まず、
1.塩加減は大事。どっちかっていうと濃い方が良い。
これはもっとも大事。
あとで塩をふりかければ。ではダメなのである。
私は、このゆで汁に入れる塩以外に一切塩は使いません。

2.油臭さを消すためのコンソメの元は「味の素」の顆粒タイプを。
これも大事。
安かろう悪かろうではないけれど、なるべく安く仕上げることを「微」、もとい、「美」とする私の料理論からすると、こうした調味料も安く調達しなければなりません。
よって少しでも安い、変なメーカーのを買ってきてタメしましたが玉砕。
おすすめはこれしか有りません。「味の素 コンソメ」

3.これはよりおいしく。と、いった感じですが、今までは茹で上がる2〜3分前にフライパンに油を引き・・・、ガーリックを入れ・・・とやっていましたが、麺を茹ではじめると同時にこれらをはじめることにしました。
まず、フライパンに油(大さじ1杯ほど)をひき、乾燥ガーリックをゆで汁と混ぜてふやかせます。
水を絞り、フライパンに入れます。
この時フライパンの火は弱で。次に、乾燥唐辛子(輪切りになっているもの)を少々入れます。
火加減は多少ガーリックの周りが泡立つ程度で、5分ほど炒めても焦げ付かない程度です。
再弱にしておけば、まぁ、失敗はしないと思います。


なんか長くなりましたが、実際は簡単(なはずですが・・・)。
この作り方で、今までには味わえなかった何か、が、感じられるはず!?
campanella_77 at 15:11|この記事のURLComments(0)TrackBack(0)料理 

またかよ?

昨日、またK-1見忘れた。
正確に言うと寝てた。
いつものように、友だち何人かに7時に起こしてくれ。と頼んでおいたのだけれど、頼んだ相手がまずかったかもしれない・・・。
起こす方法は、私の場合はメッセンジャーでって感じなのですが、PCの電源落としてしまっていた私も悪いが・・・・。
それにしてもオフメすら入ってない始末。

まぁ、見れなかった愚痴ですけど。

たいてい私の場合、こういうパターンのあとは以前録画したK1もしくは、プライドを見て反省会。
寝坊したことの反省会ではなく、試合の内容の反省会。出場してないのに反省会。好きな選手の試合内容の反省会。大きなお世話の反省会。

昔の試合を見ると、当時は無名・期待してないような選手が、意外な強者と戦っていたりして以外。


プライドの公式(?)サイトを見た。
過去の試合も載っている。へぇ、こんな試合有ったんだ。なんていう試合もちらほら。


またDVD借りなきゃ・・・。
campanella_77 at 02:08|この記事のURLComments(0)TrackBack(0)日記 

2005年05月30日

PHP ereg_replace と preg_replace どっちが速い?

どこかで ereg_replace か preg_replace のどちらかが、どちらかより断然速い。みたいな記述があって、じゃぁ、実際どうなのか今組み立てているプログラムで実験してみました。
詳細は書けませんが、簡単に説明すると3〜20文字程度の単語をファイルから読み込み(だいたい数千行)、「"」を取り除く処理を行いました。

$temp = ereg_replace("\"" , "" , $temp);

$temp = preg_replace("/\"/" , "" , $temp);

こんな感じです。
で、結果。

[ preg_replace ]
1.3621
1.3429
1.3378
1.4900
1.3427
1.3388
1.3599

[ ereg_replace ]
1.3556
1.3419
1.3515
1.3333
1.3276
1.3470
1.3554

ほとんど差がないですね・・・。

campanella_77 at 21:31|この記事のURLComments(1)TrackBack(0)PHP 

Vine Linux セキュリティ nmapインストール WINDOWS編

Windowsに nmap をインストールする方法をメモしておきます。
まず、INSECURE.ORGWindows(95/98/NT/ME/2K/XP) からDLします。
nmap-x.xx-win32.zip のようなリンクです。

解凍して、コマンドプロンプト上で nmap.exe を実行すれば使用できますが、その前に WinPcap をインストールしておかないといけないので、WindPcap Windows ここから WinPcap をDLします。

step1

DLしてきたファイルを解凍します。

step2

NEXTをクリックします。
step2

NEXTをクリックします。
step2

"Yes, I agree with all the terms of this license agreement" のチェックを入れNEXTをクリックします。

このあと、Windowsを再起動するか聞かれるので、再起動します。
再起動しないと、有効にならないようです。

再起動したら、コマンドプロンプトを立ち上げ、nmap があるディレクトリに移動し、

> nmap xxx.xxx.xxx.xxx

の様に実行させることが出来ます。

仮に、Serverマシンを192.168.0.1、WindowsマシンのIPアドレスを192.168.0.7とし、以下のように実行させてみます。

> nmap -sS 192.168.0.1 -D 192.168.0.100


「 -sS 」は「half-openスキャン」を実行し、「 -D 」は、おとりを使って実行します。ここに複数の値(IPアドレス)を指定しておくと、実際に実行したマシンのIPアドレス以外からも実行したように見せかけおとりとして使うことが出来るようです。
オプションに関しての詳しい説明は、アプ研 Nmap Manual に載っています。


snort を入れておくと、このポートスキャンを検知してくれると思います。
また、iplog も検知してびっしりログに記録してくれるでしょう。
以下はその一部。

[ snort ]

[**] [1:1418:11] SNMP request tcp [**]
[Classification: Attempted Information Leak] [Priority: 2]
05/30-05:45:32.245256 xxx.xxx.xxx.xxx:40142 -> yyy.yyy.yyy.yyy

[ iplog ]

May 30 05:45:26 TCP: port 479 connection attempt from xxx.xxx.xxx.xxx:40142

※ connection attempt : 接続試み



snort 不要?シグニチャ 20050530

snortの誤検知だと思われるようなものを載せておきます。
ただし、これらのルールをコメントアウトすることによって生じた、一切の責任は負いませんので。

[ web-misc.rules ]

#alert tcp $EXTERNAL_NET any -> $HTTP_SERVERS $HTTP_PORTS (msg:"WEB-MISC Invalid HTTP Version String"; flow:to_server,established; content:"HTTP/"; isdataat:6,relative; content:!"|0A|"; within:5; reference:bugtraq,9809; reference:nessus,11593; classtype:non-standard-protocol; sid:2570; rev:6;)

※HTTP1.0だと検知される?


[ attach-responses.rules ]

#alert tcp $HTTP_SERVERS $HTTP_PORTS -> $EXTERNAL_NET any (msg:"ATTACK-RESPONSES 403 Forbidden"; flow:from_server,established; content:"HTTP/1.1 403"; depth:12; classtype:attempted-recon; sid:1201; rev:7;)

※403ステータスコード(ファイルが見つかりません)を返すと記録?



campanella_77 at 07:04|この記事のURLComments(0)TrackBack(0)VineLinux 

2005年05月29日

Vine Linux セキュリティ nmapインストール

VineLinux3.1にはデフォルトで「 nmap 」はインストールされていませんが、「 apt-get 」でインストールできます。


# apt-get install nmap

使い方は、TCPを使用しているポートを調べる場合
※検索先 xxx.xxx.xxx.xxx

# nmap xxx.xxx.xxx.xxx
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
137/tcp open netbios-ns
139/tcp open netbios-ssn
443/tcp open https

UDPを使用しているポートの場合

# nmap -sU xxx.xxx.xxx.xxx
PORT STATE SERVICE
123/udp open|filtered ntp




続きを読む
campanella_77 at 21:57|この記事のURLComments(0)TrackBack(0)VineLinux 

Vine Linux コマンド 「最新のログだけを見る」

おそらく外部に公開して、ある程度のアクセスがあるサイトなどは、Apacheのログなどは、MB単位になると思います。

最初のうちは、もしくは商売をなさっている方にとっては、ログは非常に気になる代物でしょう。
それは恋人からの手紙がポストに届いたかどうかソワソワするように。

しかし、MB単位になってくると少々飽き飽きしてくるかもしれません。
そこでログの中でも最新の部分をチラッと見る方法を紹介します。

ターミナルもしくはSSH上で

# tail /var/log/httpd/access_log
nw024.st.ie.u-ryukyu.ac.jp - - [29/May/2005:13:52:39 +0900] "GET /sample/jpg
/ka_x.png HTTP/1・・・・・・・・・
・・・・・・・・・・・・・・・・・・・・・・・・・・
・・・・・・・ 以下略 ・・・・・・・・・・・・・・



○行だけ見たい。なんて場合は、「-n オプション」をつけてやります。
以下は、1行だけみたい場合。

# tail -n 1 /var/log/httpd/access_log


もちろん、ログだけでなくファイルの末尾から○行取り出して出力する。と言った使い方も出来ます。


campanella_77 at 15:11|この記事のURLComments(0)TrackBack(0)VineLinux 

Vine Linux コマンド ファイルのあいまい検索

Windowsなんかだと、ファイル名からファイルを検索する場合などは、結構時間がかかったりしますが、Linuxの場合は、ファイル名のテータベースをもっていて素早く検索できます。

使えるかどうかは、以下のように確認してみてください。


# which locate ← locate がインストールされているか確認
/usr/bin/locate
↓ 毎日データベースを更新してるか確認
# cat /etc/cron.daily/slocate.cron
#!/bin/sh
renice +19 -p $$ >/dev/null 2>&1
/usr/bin/updatedb -f "nfs,smbfs,ncpfs,proc,devpts"
-e "/tmp,/var/tmp,/usr/tmp,/a
fs,/net"

※ -f オプションは対象にしないファイルシステム
-e オプションは対象にしないディレクトリを指定


使い方は簡単で、検索したいファイルを「 abc 」とすると

# locate abc
/tmp/abc005547ddei.tmp

ファイル名だけではなく、パスの一部でも使えます。

# locate html/index
/home/httpd/html/index.html
/home/httpd/html/index.php

このように複数がヒットします。

campanella_77 at 11:37|この記事のURLComments(0)TrackBack(0)VineLinux 

Vine Linux コマンド コマンドファイルの場所 -4-

各種サーバを起動させたい場合に、コマンドファイルへのパスをしりたい場合は、たとえば、以下のように「 which 」コマンドにファイル名をつけて実行させます。

httpdの場合
# which httpd
/usr/bin/httpd

iplogの場合
# which iplog
/usr/sbin/iplog

PHPの場合
# which php
/usr/bin/php

見つからない場合
# which aaaa
/usr/bin/which: no aaaa in (/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/lo
cal/sbin:/usr/bin/X11:/usr/X11R6/bin:/usr/java/j2sdk1.4/bin)
campanella_77 at 07:26|この記事のURLComments(0)TrackBack(0)VineLinux 

Vine Linux コマンド コマンド実行結果をファイルで保存 -3-

コマンド実行結果を保存しておきたい場合には、「 script 」コマンドを使います。
scriptコマンドを入力すると「 typescript 」というファイルに、以後のコマンド操作が記録されます。
終了させるには「 exit 」を入力します。
また、「 typescript 」は、「 script 」を実行したディレクトリに出来るようです。

# script
スクリプトを開始しました、ファイルは typescript です
# ls ←保存したいコマンド等を・・・
cache/ ftp/ lock/ named/ run/ state/ webmin/
db/ lib/ log/ nis/ samba/ tmp/ yp/
empty/ local/ namazu/ preserve/ spool/ typescript
# exit
スクリプトを終了しました、ファイルは typescript です


実際に表示させてみます。

# cat ./typescript
スクリプトは 2005年05月29日 07時13分36秒
に開始しました # ls
cache/ ftp/ lock/ named/ run/ state/ webmin/
db/ lib/ log/ nis/ samba/ tmp/ yp/
empty/ local/ namazu/ preserve/ spool/ typescript
# exit
スクリプトは 2005年05月29日 07時13分42秒
に終了しました


campanella_77 at 06:55|この記事のURLComments(0)TrackBack(0)VineLinux 

Vine Linux コマンド 素早くディレクトリ間を移動 -2-

とあるディレクトリを何度も行ったり来たりするような場合は、ディレクトリの場所を記憶させて、簡単に行き来できるように出来ます。
記憶させるには、pushdコマンド後に移動場所を入力します。


# pushd /home/httpd/html ←現在の場所を記憶して
/home/httpd/html に移動
/home/httpd/html ~/root  ←今まで /root にいたと記憶している

# pushd /var/log ←更に /var/log へ移動
/var/log /home/httpd/html ~/root ←記憶している

で、前回の場所に戻るときは popd コマンドを使用。
# popd
/home/httpd/html ~/root
[ html]# ← /home/httpd/html にもどった

campanella_77 at 06:14|この記事のURLComments(0)TrackBack(0)VineLinux 

Vine Linux コマンド パスの補完 -1-

プログラムの場所やファイルの場所がだいたいわかっている場合や、いちいち正確にパスを記述するのが面倒な場合は、ある程度入力してから「Tabキー」を押すと、入力から推測されるファイルへのパスを候補としてあげてくれます。



# cat /var/log/h ←この状態で「Tabキー」を押すと・・・
       ↓
# cat /var/log/httpd/ ←このように補完してくれる

次に、
# cat /var/ ←候補が複数ある場合
   ↓
# cat /var/
cache ftp lock named run state yp
db lib log nis tmp
empty local preserve spool


このように候補が複数表示されます。

campanella_77 at 06:02|この記事のURLComments(0)TrackBack(0)VineLinux 

2005年05月28日

髪ばっさり

前回美容院に行ったのっていつだっただろう。

肩まで伸びた髪をばっさり切ってもらいました。

坊主騒動を越えて、結局普通にカットしてもらうことで落ち着きました。
今まで行っていたところは、なんか髪が傷んでくるような感じがしていたので、今日は2年程前に行っていたところにしようと、意を決して出発。
予約してなかったけど、大丈夫だろう。と。

店の前で一応電話をする。

「今月いっぱい満杯です〜」

と、一気にテンションが落ちてしまいました。正直に言うと、私は髪を切ってもらうのが嫌い。
なんか、カットしてもらっている間、美容師さんにすべてをゆだねなければならないじゃないですか(大げさだけど)。
あれがどうも・・・ね。
本能的に「イヤ」なんですよね〜。
きっと私に前世があるとしたら、戦闘民族(サイヤ人かよw)として暮らしていたんだろうな。と、いつも思います。

で、どうしようか。迷ったんですが、見知らぬ美容院に行くのはもっと気が引ける。
特に、若い女の子専門に扱ってるようなとこには行きたくないし。

っと、私は最初に入った運送会社が美容院にレンタルタオルを運ぶという仕事で、原宿や表参道でカリスマと呼ばれる方達がいる美容室に、タオルを運んでました。タオルって一見軽そうだけれど、一袋が15〜40キロありまして。
時間内に納品・回収しなくっちゃならないんですけど、かなりハードでしたね。佐川急便並でした。2月でもTシャツ1枚で原宿を駆け回っていましたね。

なんか運送屋って、道に詳しいようなイメージあるかもしれませんが、ルート配送だと、逆に地名も知らないし、道も知らなくて、私も東京に出てきていきなり原宿走らされたわけで・・・。
道は全然知らないすけど、何度か尋ねられましたね。
そのたんびに「うっさいわっ!!」と返事していましたが。。。そんぐらいハードな仕事でしたね。
社内でも、そのコースを走れるのは私だけで、私が休みで、他の人が回るときは2人がかりで回っていたようです。

話しはずれましたが、どうしようかと悩んであちこち探し回っていると、なんかよさげな所があったので、電話してみました。
若い子が出るかと思えば、威勢のいいおっちゃん風で空いてるとの返事。
時間を指定して予約。

なんかなれなれしい感じだったし、時間が来る間、予約はしたもののそこにするか悩んでいましたが、やぶれかぶれだ。と、時間の10分前に入店。

お客はあんまりいませんでした。
おばちゃんが・・・2人に、若い女の子1人。
番が来るまで椅子で待つこと20分。予約・・・入れたのに。

それにしても、おばちゃんと同じ空間にいるのって苦痛。
おばちゃんはおばちゃんでも、な〜んかド派手な感じの、しゃべり出すと止まらないし・・・。
私の前に一人おばちゃんがいて、その人と並んで待つ20分が長かった・・。


カットも終わり、ネット友だちに公開。
公開って言うより、見せろ見せろと。

ゲラゲラ笑う者、きゃわいい〜〜〜(^o^)と言う者、坊主は?と尋ねる者。
薄いのがばれるで?としつれーな者。

色々あった日でした。

campanella_77 at 05:11|この記事のURLComments(1)TrackBack(0)日記 

C言語 ポインタ変数にNULLを入れると

ポインタ変数に、NULLを入れると、実際には「 0 」が代入されます。

int main(void){

int i;
char** array = (char**)malloc(8 * sizeof(char*));
*(array + 0) = "aaaaaaaaa";
*(array + 1) = "bbbbbbbbb";
*(array + 2) = NULL;

for(i = 0; i < 3; i++){
printf("%d:%d:%s\n" , i , *(array + i) , *(array + i));
}
printf("\n");
*(array + 0) = NULL;
*(array + 1) = NULL;

for(i = 0; i < 3; i++){
printf("%d:%d:%s\n" , i , *(array + i) , *(array + i));
}
}


[ 結果 ]

0:134523214:aaaaaaaaa
1:134523224:bbbbbbbbb
2:0:(null)

0:0:(null)
1:0:(null)
2:0:(null)
続きを読む
campanella_77 at 00:25|この記事のURLComments(0)TrackBack(0)C言語 

2005年05月25日

MySQL データベースのバックアップ

MySQLのデータベースを、『リカバリ』する方法。
バックアップファイルを「mysql.back」とします。

※ 実際は1行
#mysql -uroot -p'パスワード' 'データベース名' < mysql.back

または、

※ 実際は1行
#mysql -u root --password=パスワード データベース名 < ./mysql.back


campanella_77 at 19:16|この記事のURLComments(0)TrackBack(0)VineLinux 

sshサーバの設定

VineLinux3.1では、デフォルトでSSHサーバが起動しているようです。
私の場合は、ルータ及び、iptablesで、がっつりセキュリティを強固にし、swatchで不正な動きを感知したら、メールで知らせる設定にしてあるので、一応は安心できますが、より安全にするために、「inetサーバ」経由で立ち上げるようにしました。

RedHatLinuxや他のデストリビューションなんかでは、xinetサーバが主流になりつつあるようですが、VineLinuxではまだ、inetサーバが使われているようです。

で、設定の方は、「/etc/inetd.conf」を開き、

ssh stream tcp nowait root /usr/sbin/tcpd sshd -i

を付け加えます。
次に、「/etc/hosts.deny」を開き、

ALL: ALL

を書き込み、「/etc/hosts.allow」を開き、

sshd: 192.168.1.3
in.qpopper: 192.168.1.3

という具合に、SSHサーバやPOPサーバを利用するマシンのIPアドレスを記入します。
この場合は、どちらも「192.168.1.3」のみの接続しか受け付けません。

メールアドレスを知人・友人に提供している場合は・・・。
「hosts.deny」を修正する必要がありますが、無料メールが氾濫している昨今、あえて自鯖のメールアドレスを提供する必要はない。という考えなんで、説明しません。

ここまで出来たら、まず、SSHサーバを停止させます。

# service sshd stop

次に、inetサーバを再起動します。

# service inet restart


これで完了しました。

campanella_77 at 10:16|この記事のURLComments(0)TrackBack(4)VineLinux 

Apache CGIセキュリティー

画像アップローダーを作成した場合、気をつけなくてはいけないのは、アップロードされたファイルが本当にファイルなのか。と、いうことになりますが、仮に、画像ではなく「Perl/CGI」ファイルをアップしたとして、それはたとえば、「20050525.jpg」なんていうファイル名に変更してアップロードされたとします。

Windowsであれば、拡張子から起動するアプリケーションが決まったりしますが、Linuxの場合は、拡張子がなんであろうと最初の1行目に、

#!/usr/local/bin/perl

のように、perlエンジンへのパスが記述されていると、perl/CGIと解釈されてしまいます。
たとえば、「test.cgi」というCGIファイルを「test.txt」と変えてブラウザからアクセスしても、同じ結果が出力されるはずです。

よってアップローダーを使用する場合において、セキュリティーをあげるには、

CGIは、「cgi-bin」ディレクトリ内のみで実行可能とさせる。
拡張子が「cgi」の場合のみCGIとして実行させる。
実行権限をつけない。
ファイルの持ち主を「root」にしない。

といった感じになると思います。

ただ、デフォルトで先ほどいったように、「1行目の記述」しだいでCGIプログラムとして動作してしまう設定になっているので、「httpd.conf」を以下のように変更します。

#ScriptAlias /cgi-bin/ /home/httpd/cgi-bin/
↓ 変更
Alias /cgi-bin/ /home/httpd/cgi-bin/

#########################################################

AddHandler cgi-script .cgi ←記述されてなかったら記述

上の設定は、「cgi-bin」ディレクトリ内にある1行目にパスが記述されたファイルが、CGIとして動作するのを防いで、かつ、「cgi-bin」ディレクトリを参照できるようにさせています。

下の設定は、たいていは記述されていると思いますが、「.cgi」という拡張子だった場合だけCGIとして実行させる設定です。

ちなみに、CGIを指定したディレクトリ以下のみに限定する設定は、


<Directory /home/httpd/cgi-bin>
AllowOverride FileInfo ← MovableTypeをうまく
動作させるため
Options ExecCGI ← CGIを許可
Order allow,deny ← アクセスの拒否設定
Allow from all ← すべて許可
</Directory>

で、

<Directory /home/httpd/html>
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>


のように、「Options ExecCGI」は記述しないようにします。それ以外も、よけいなことは禁止設定です。



campanella_77 at 02:06|この記事のURLComments(0)TrackBack(0)VineLinux 

2005年05月24日

Apache アクセス解析 検索サイトからの足跡2

C言語での処理中に全角のスペースを半角スペースに変えてやることにより、より精度を上げさせました。

よく観察してみると、割と単語と単語を全角スペースで区切る人が多いようです(特に日本語混じりの検索の場合)。
私の場合は、いちいちスペースを半角にして打ち込んで検索しているのですが、まぁ、たいていの検索サイトは全角スペースであろうが、半角スペースであろうが、ちゃんと区切り文字として動作してくれるので、こんなことしなくてもいいのですが。

こちら

こうしてみると、サーバ関連の単語が多いですね。
たまに、BBSに書いた歌詞がヒットする程度です。


一応、このような解析以外に、月別の結果や、検索してどのページがヒットしたか。等も検索できるような仕様にしていきたいな。と。

個人のサイトなんかじゃあまり、こうした検索単語がどうのこうのって意味がないデータかもしれませんが、結構 eコマースみたいな所だったら一番重要な欲しいデータかもしれませんね。


自分で鯖立てていて(VineLinux)、eコマースな方。必要なら出来上がりしだいアップしますんで。

campanella_77 at 00:40|この記事のURLComments(0)TrackBack(0)VineLinux 

2005年05月23日

Apache アクセス解析 検索サイトからの足跡

今は、MovableTypeの改造と、Apacheのログを解析するプログラムを作っていて、ログ解析の方がだんだんとまとまってきました。

最初どんな言語でやるか(といっても、C言語かPHPのどちらかなんだけれど)迷っていましたが、ログがかなり膨大(5MB程)なので、C言語である程度フォーマットを整え、ブラウザ上からログを解析するときにPHPで。と、いった感じで行くことにしました。

一応、検索サイトからどんな検索をして訪れてきたのかを解析するプログラムのめどがついてきたので、PHPでちょっと出力してみました。
この処理をやっている時に気が付いたのが、基本的に「google」と「msn」は文字コードが「UTF-8」で、その他は「EUC」だと言うことです。

で、URLデコードやら文字コード変換は、PHPだと楽っ!

正直、最初はC言語での処理に文字コード変換しようかと思いましたが、UTFに変換させるのはちと骨が折れそうなので、PHP任せにさせました。
それほど処理も遅くなるわけでもないし、後々を考えるとベストだと思います。


で、一応こんな感じ。⇒ 
campanella_77 at 06:03|この記事のURLComments(1)TrackBack(0)VineLinux 

PHP - fgets -

PHPの「fgets」は、C言語のそれとよく似ています。 char* fgets(FILE* fp , int byte) 『 第二引数で指定した値 - 1 』 を読み込みます。
$str = fgets($fp , 4);
print $str;
print "<BR>\n";
print strlen($str);

とすれば、

abc ←3文字
3   ←文字数は3

のような感じに出力されます。
では、「 ab改行 」を読み込むと・・・。

ab  
   ←改行
3  ←改行も文字数に含まれる

たとえば、「fgets」で500バイト程度を読み込む場合において、

while(FALSE != fgets($fp , 4)){
}

とやる場合と、

while(FALSE != fgets($fp , 500)){
}

とやる場合、どれぐらいの速度差が出るか・・・。

fgets($fp , 4); は、1000回のループで7秒。
fgets($fp , 500); は、10000回のループで3秒でした。

campanella_77 at 00:34|この記事のURLComments(0)TrackBack(0)PHP 

2005年05月22日

Movable Type - 個別エントリーデザイン -

なかなかMovableTypeの各エントリーのページデザインが決まらない。
このライブドアのブログがどちらかというと、重い(?)デザインなので、MovableTypeは軽いイメージにしたいのですが、なんせデザインを変更するたびにページの再構成をしなければならないので、おいそれと出来ないわけです。

他のクールなブログを見ていたりすると、あ。これいいな。なんてまた気持ちが揺らいでしまう。

先ほど言ったように、後々デザインを変更する場合も再構築が必要なわけで、このままエントリー数が増えてけば増えていくほど、再構築にかかる時間が増えてしまいます。よって、今のうちにしっかりとデザインを決めておくべきなんでしょうけれど、なかなか難しい。
今、ちょうどデザインとプログラムの両方を手をつけているのですが、はっきり言ってプログラムなんかよりデザインの方がずっと難しい。
所詮趣味。といわれれば(または、言ってしまえば)それまでですが、元デザイナーだったせいか、デザインに関しては妥協できない(なんてえらそうなものじゃないんだけれど)とこがあって、まぁ、四苦八苦しています。


そんな中でちょっと前に出来た案がこれ。⇒

ブログより、BBSとかに使えそう。
枠からのPadding(隙間)が結構気に入ってます。
文字位置、行間、文字色等々結構試行錯誤してちょっと落ち着きました。

ただ、WindowsやMacのウインドウをイメージしたのですが、ちょっとうるさい感じがして、ボツになりそうな気配。

私のブログの場合、日記というよりはなにかの記録やメモだったりするので、項目をわかりやすいように、さらに枠で囲んでみました。

campanella_77 at 18:20|この記事のURLComments(0)TrackBack(0)VineLinux 

2005年05月21日

スタートメニューのカスタマイズ

WindowsXPのデフォルトの設定では、スタートメニューが使いづらいので、使いやすいようにカスタマイズしてみます。


まず画面下のタスクバーのどこかを右クリックします。
出てきたメニューから「プロパティ(R)」をクリックします。



「タスクバー」タブは、このような設定で。


「[スタート]メニュー」タブにある「カスタマイズ」ボタンをクリックします。


「全般」タブの「小さいアイコン(S)」にチェックを入れ、「[スタート]メニューに表示するプログラム数(N):」を「6〜12」程度にします。
「OK」ボタンをクリックします。


これで、スタートメニューの各アイコンが小さくなり、かつ今まで使ったアプリのアイコンが登録されるようになりました。

IE でステータスバーが表示されない

今までずっと気になっていましたが、ほおって置いたこと。
インターネットエクスプローラー(以後IE)のステータスバーが表示されない。

表示させるにはいちいち、表示からステータスバーの表示を選ばなくてはなりません。

ステータスバーが必要な場面は、毎回毎回あるわけではありませんが、結構色々な情報を(最も多いのがリンク先のURLやJavaScriptのエラーなど)表示してくれるので、ないよりはあったほうがいい。また、IEを起動させた時点でステータスバーが表示されていた方が良い。と、いうので色々調べてみました。

実は、昔はステータスバーは標準で表示されていました。
が、XPだとデフォルトでは、表示されない設定になっているようです。


では、その方法。


まず、「スタートボタン」をクリックし「すべてのプログラム」をクリックします。



「アクセサリー」の中から「エクスプローラー」をクリックします。



「ツール」から「フォルダオプション」を開きます。



「表示」タブをクリックし、「詳細設定」の中の「各フォルダの表示設定を保存する」のチェックをはずします
「適用」を押し、「OK」を押します。



次に、IEを立ち上げ、「表示」の中の「ステータスバー」をクリックします。

これで以後、IEを立ち上げると最初からステータスバーが表示されるようになります。


2005年05月18日

クッキーとファイヤーウォール

クッキーといっても、お菓子じゃありません。
ネットを快適にしてくれる、便利なブラウザが持っている機能の1つです。

クッキーとは、サイト側で指定したデータを、見ている人のPCに保存したり参照したり出来る機能です。

たとえば、掲示板や、登録ページ等で、名前やらIDやらパスワード入力欄が、一度でも入力した事があると、次回からすでに入力された状態になっていたりってな経験があると思います。

それ以外にも、いろ〜んな使い道があります。

このサイトに何回きたか。どんなページが人気あるか。というように、見に来た人のための機能だけじゃなく、サイト管理者にとっても、便利な機能だと思います。

どれだけクッキーが使われているか確認するには、以下のフォルダの中身を見てください。

『 C:\Documents and Settings\xxxxxx\Cookies 』

今まで見た何百というサイトで使われているのがわかると思います。(「xxxxxx」の部分は、Windows登録ID)

仕組みとしては単純で、サーバ側で見ている人に「クッキーを保存しなさい。」という命令を送るだけで、この命令が送られてくると、ブラウザは指定されたデータを先ほどのフォルダに保存します。

次にそのサイトにアクセスするときは、前回クッキーを保存したかどうかを先ほどのフォルダに確認しに行き、あればそのデータを送信します。


続きを読む

C言語 sscanf -2-

sscanf では、「08」といった頭に「0」が付くような文字列もちゃんと
数字に変えてくれる模様。

注意点として、間に文字列が入っているようなパターン。
例としてApacheのログの時間部分を数字として取得する場合を見てみます。
Apacheのログは、月を示す部分が数字ではなく英語の月の名前の頭3文字と
なっています。

09/May/2005:01:24:37

これを、各変数に入れてみます。

int d , y , h , m , s;
char* mon = (char*)calloc(4 , sizeof(char));

sscanf(date , "%d/%s/%d:%d:%d:%d" , 
  &dd , momo , &yy , &hh , &mm , &ss);

  printf("dd:%d\n" , dd);
  printf("momo:%s\n" , momo);
  printf("yy:%d\n" , yy);
  printf("hh:%d\n" , hh);
  printf("mm:%d\n" , mm);
  printf("ss:%d\n" , ss);

[ 結果 ]

dd:9
momo:May/2005:01:24:37
yy:134514530
hh:-1073743512
mm:1073784804
ss:1075068328

どうやらどこまでが文字列か区別できないようです。
半角を開けてやると区別つきますが、それでも yy 以降が変な値
でした。
そこで、

  char* date = "09/May/2005:01:24:37";

  int dd , yy , hh , mm , ss;
  char* momo = (char*)calloc(4 , sizeof(char));
  
  sscanf(date , "%d/%c%c%c/%d:%d:%d:%d" ,
    &dd , &momo[0] , &momo[1] , &momo[2] , &yy , &hh , &mm , &ss);
  printf("dd:%d\n" , dd);
  printf("momo:%s\n" , momo);
  printf("yy:%d\n" , yy);
  printf("hh:%d\n" , hh);
  printf("mm:%d\n" , mm);
  printf("ss:%d\n" , ss);

[ 結果 ]

dd:9
momo:May
yy:2005
hh:1
mm:24
ss:37

もし、このパターンのように文字数が決まっているのなら、このやり方
でやれば、取り出せそうです。


campanella_77 at 00:49|この記事のURLComments(0)TrackBack(0)C言語 

2005年05月17日

PHP HTTPステータスコードを返す

PHPで(あえて)ステータスコードを送信したい場合は、

/* ファイルが見つかりません */
header("HTTP/1.0 404 Not Found", FALSE);

こんな感じ。
当然、

/* アクセスする権利がありません */
header('HTTP/1.0 403 Forbidden', FALSE);

もOK。
データ保存用のファイルを、単純にファイル名の拡張子を「.php」にしておいて「」で囲めば、そこに記述された値は、出力されませんが、よりセキュリティーをあげるために、「404ステータスコード」を返すっていうのもいいかもしれません。

ただし、PHPエラーが出てしまっては意味がないので、以下のようにします。

[ data.php ]
<?PHP
header("HTTP/1.0 404 Not Found", FALSE);/*
※データを記録する部分
*/?>

ステータスコードに関しては、こちらに。⇒
campanella_77 at 00:55|この記事のURLComments(0)TrackBack(0)VineLinux 

2005年05月16日

HTML - select やら check やら -

PHPやらCGIでフォームデータを受け取るときに、セレクトメニューやチェック欄やら、NAMEプロパティが同じになるような場合は、配列で処理しますが、えっと、わかりづらいので例で。

<INPUT NAME="aaa[ ]" TYPE="checkbox" VALUE="A">:A
<INPUT NAME="aaa[ ]" TYPE="checkbox" VALUE="B">:B
<INPUT NAME="aaa[ ]" TYPE="checkbox" VALUE="C">:C

こうしておくと、サーバの方には aaa[0]:A aaa[1]:B aaa[2]:Bとして送られますが、この場合はすべてチェックが入っている場合のみで、たとえば「A」のチェック欄にチェックが入ってない場合は、
aaa[0]:B aaa[1]:C
として送られるようです。

よって、期待通りに値を受け取りたい場合は、

<INPUT NAME="aaa[0]" TYPE="checkbox" VALUE="A">:A
<INPUT NAME="aaa[1]" TYPE="checkbox" VALUE="B">:B
<INPUT NAME="aaa[2]" TYPE="checkbox" VALUE="C">:C

とします。
campanella_77 at 21:26|この記事のURLComments(0)TrackBack(0)VineLinux 

Movable Type - 画像アップローダー -

MovableTypeの画像投稿が、ちょっと使いにくいので(livedoorの方がまだやりやすい)、PHPで登校用のスクリプト書いてます。

もうPHP忘れかけてます・・・。

友だちのブログにカウンターをつけました。
見てみると、私のペースよりずっと少ない。

ブログってまちまちなんだなぁ〜

campanella_77 at 18:39|この記事のURLComments(0)TrackBack(0)VineLinux 

2005年05月15日

SpeedyCGI

MovableType の速度アップを色々試行錯誤していると、おもしろいものを見つけたんでメモっておきます。

SpeedyCGI

なんでも、CGI実行時に半永久的にCGIプログラムを起動させておくとかなんとか。
これならほぼ mod_perl に匹敵する速度が出せるかもしれませんね。




campanella_77 at 00:18|この記事のURLComments(0)TrackBack(0)VineLinux 
What's campanella
ライブカメラ公開中
kao.gif
訪問者数
  • 今日:
  • 昨日:
  • 累計: