Author Archives: admin

1ファイルで提供されるzipソースコードライブラリ miniz

minizはC言語の1ファイル”miniz.c”で作られたZIPライブラリ。簡単にプロジェクトに組み込んで使うことができる。

使うには”miniz.c”をインクルードして使うが、すでに大きいプロジェクトの場合は、このファイルは普通にコンパイルして、minizの機能を利用するファイルでは、MINIZ_HEADER_FILE_ONLYを定義してからインクルードする。こうすればヘッダファイルとして振舞う。warningがひどいのでここではそうした。

VC++2005で試した。

これは圧縮。あらかじめ全体をメモリで確保するので小さいサイズ向け。本体のサンプルではほかにもファイルを圧縮するものや、infalte、deflateを使って少しずつやる方法などがわかる。ただしファイルを直接圧縮する関数のファイル名引数がchar*なのでunicodeで困るかもしれない。

jQueryでハイライト

ここにあるjquery-highlight.jsをダウロードしてサーバに置いて以下のHTMLでハイライトできる。

スタイルシートの.highlightでスタイルを指定、hightlight()関数でハイライト、最初の引数はハイライトする文字列、2番目は大文字小文字を区別するならtrue。

テストページ

PHPでサイトが重いときにもう少し待ってくださいhtmlを表示する

家サーバで遊んでいて、virtual hostをたくさん作ってサーバPCが重くなったときに、PHPで簡単なページを表示する方法。もっとまともな方法があると思うがここでは適当に作った。

最初にエラーのとき表示するHTMLを用意する。ここでは以下の物を作った。

これを/phpGlobal/busy.htmlに保存する。ディレクトリは適当でいい。

次にPCが重いかどうかチェックするPHPを書く。

これを/phpGlobal/check.phpに保存する。
これはサイトの負荷が3を越えたらbusy.htmlを表示する。

つぎにapache2の設定ファイルapache2.confなどに以下の行を追加する。

これでapache2をリスタートすると、すべてのPHPの実行前にcheck.phpが実行される。

ただしこの方法だと文字コードによって化けることがあるし、その他にも問題があるかもしれない。POSTリクエストのときは処理したほうがいいと思われる。

PCの現在の負荷はtopコマンドの右上に表示されるのでそこで確認できる。

/proc ファイルシステム

/procは以下のファイルやフォルダは実際のファイルではなくカーネルが提供する擬似ファイル。
ファイルのようにアクセスすると、カーネルにアクセスし情報を取得できる。
擬似ファイルシステムにしておくと、プログラムからはインターフェースが統一される。

/proc/[数字]
数字はPID(プロセス毎につけられた番号)をあらわす、プロセスのいろいろな状態を知ることができる。
サーバーなどは起動時に自分のPIDをファイルに書き込んでいたりするので、そこからPIDを知ることができる。

apache2は/var/run/apache2.pidなどに自分のPIDを書き込む。
よって以下のようにして、apache2のプロセス状態を取得できる。

/proc/loadavg
CPUの使用率を表示する。uptimeコマンドなどで利用する。

ほかにもいろいろあるがこれらは man proc で知ることができる。

phpで処理にかかった時間を調べる

PHPやjavascriptで処理にかかった時間を計算する。
PHPの場合、まずいかの関数を用意する。これはpukiwikiからコピーした。

microtime関数は、現在時刻をスペースで区切ったミリセカンドと、秒で返します。
explodeでスペースで区切った配列に変換し、それをlistで受けます。
listは右辺に配列をおいて代入できるPHP言語の組み込み機能です。

時間を測定したい処理の前に以下のようにSTART_MICROTIMEを定義します。

defineは定数を定義できます。一度定義すると変更できないので便利です。

処理が終わったところで以下のようにして時間を計ります。

書式文字’01.03f’は、以下のように解釈します
0 : 0で埋める。
1 : 最低1桁を表示する。
. : 浮動小数点の区切り
0 : 0で埋める。
3 : 3桁以上は切り捨て。小数点以下は前とは別解釈になる。

svnのレポジトリ全部から検索する

以前書いたやつだとうまくファイル名がわからないのでbashスクリプトを書いた。

使い方

このスクリプトは*.cpp,*.c,*.hを固定でフィルタしている。

以下過去の記事:

svnレポジトリの中から全部を検索する。サーバーはserver、検索語句はaaa

以下、落書き
一つのコマンドにするのは大変だったので少しずつやる。

まずレポジトリの中のファイル一覧を取り出す。

ファイル名を検索したい場合はここからgrepすればいいが、ここでは内容から検索することを考える。
ここでallファイルにはディレクトリが含まれているのでこれを削除する。ディレクトリは最後が/で終わっているのでこれを削除する。

all2の各行にsvn://svnserver.example.comを加える。

これでall3はsvnのフルパスになった。つぎにsvn catを足す。

grep を足す。ここでは”abc”を検索する。

VLCメディアプレイヤーでマウスホイールで動画を少し進る

ホイールマウスで動画を進めたり戻したりできると便利なのでVLCメディアプレイヤーでの設定方法。
デフォルトではホイールマウスは音量の上げ下げに割り当てられているので、これを「無視するにする」ここで「再生位置」を選択すると上回転で進む、下回転で戻るになる。これでいい場合は、この設定だけでいいが、ここではこの動作を逆にする設定。

下の設定場所で、「少し前に戻る」のところをダブルクリックして、上回転し、そうすると下の欄に[Mouse Wheel Up]になる。
vlcマウス2

適用をクリックして適用し、設定を保存し、VLCを再起動すれば反映する。

firefoxのアドオンのバージョンチェックを無効にする

firefoxのアドオンには利用できるバージョンの情報があり、これに合致しないとアドオンはインストールできない。これをインストールする方法。

firefoxを開きアドレス欄に”about:config”と入力する。

下のウインドウで右クリックして「新規」「ブール値」を選択する。

prefernceの名前を”extensions.checkCompatibility”にして、値をfalseにする。

これでインストールできるようになる。インストール後はtrueに戻してもいい。

VMWare Playerでネットワークの設定をする

WindowsのVMWare Playerにはネットワークの設定ツールが入っていいないが、インストールパッケージには含まれているので、これを取り出す。

インストールパッケージのあるフォルダで以下のコマンドを実行する。

終わるまでしばらく待って、aaaフォルダができているので、この中からnetwork.cabを解答して、それらをvmplayer.exeのあるフォルダ(通常はC:\Program Files\VMware\VMware Player)にコピーする。

vmnetcfg.exeを起動してネットワークの設定ができる。

ホストオンリーを選択して、下の二つのチェックをはずせばネットワークは構成されないようだ。NATを使わない場合は無効にできる。