サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
夏の料理
memo.majide.com
で移動する。「前のファイル」っていうのはない模様。 また、「-o」オプションをつけることにより、ウィンドウを分割して表示させることができる。 # vi -o ファイル1 ファイル2 ... ファイルn 複数ファイル間でのコピー&ペーストは名前付きバッファを使う。 参考URL † http://www.iis.u-tokyo.ac.jp/~susaki/command/vi.html http://homepage1.nifty.com/niwatori/vi/t05.html :Category/Linux/vi
継承 † Java public SubClass extends SuperClass { SubClass () { } } Perl package SubClass; use base qw(SuperClass); sub new { bless {}, shift; } 1; use base qw(SuperClass?)とすると、SubClass?はSuperClass?の(コンストラクタ含む)関数をすべて継承する。 ↑ interface † Perlにはinterfaceといった文法はない。実装をうまくつかってinterfaceを実現する。 親クラスで、関数の中身をdieだけにし、子クラスでオーバーライドを強制する*1 Java public interface Person { public void whatIsYourName(); } public Clas
構築環境:Fedora Core 2, Apache2 目的 † サーバの移転時、DNSのAレコードが完全に広まるまで、旧サーバへきたリクエストを新サーバへProxyPass?を使って転送する。 ↑ ProxyPass?とは † ProxyPass?を利用すると、Apacheがリクエストのリレーを行うことができる。 Client->ServerA->ServerB->Server-A->Client ※ServerAにProxyPassを設定 というように、リクエストの仲介を行う。 クライアントには ServerBの存在はまったくわからない。 ↑ 設定 † ProxyPass?を利用するには、mod_proxy, mod_proxy_httpが必要。 FecoraCore2のhttpdは最初から、mod_proxy, mod_proxy_httpが有効になっているので、そのまま使う。
ダイナミックリンクライブラリ † WindowsでいうDLL、Linuxでは(Dynamic)SharedObject?(SO)とも呼ばれる。 ↑ lddコマンド † 実行ファイルがどのダイナミックリンクライブラリを参照しているか調べるコマンド。 # ldd test libc.so.4 => /usr/lib/libc.so.4 (0x28067000) ↑ SharedObject?の作成 † まず、SOとするプログラムを書く。 sayhello.c #include <stdio.h> void sayhello(void) { printf("Hello\n"); } SharedObject?としてコパイル gcc -shared # gcc -shared sayhello.c -o libsayhello.so #libなんたら.soという名前で作成 fileコマンドでSOで
始めに † インターネットの中心的サービスであるWWWは、留まることなく発展を続けより多くの人々が利用するようになっている。 その一方で、WWWを支えているWebサーバーの管理者は、そのアクセスを効率的に処理すべく対策をとる必要性が出てきた。 本研究では、LAMP環境と他のWebアプリケーションサーバ環境との比較及び、LAMP環境のパフォーマンスの向上方法について研究する。 ↑ LAMP環境とは † Linux, Apache, MySQL, Perl/PHPの略であり。近年、Webサービスの構築によく利用されている環境である。 全て無料で提供されているソフトウェアであり、誰でも容易に習得できる点が特徴である。 ↑ LAMP環境の構築 † Linuxの代表的なディストリビューションである、Fedora Core 2のサーバパッケージを利用してLAMP環境を構築し、チューニングの効果や、他の
バッファを複数使うには "バッファ名 [コマンド] とする。 数字バッファ † 数字バッファには、削除されたテキストが順番に入る。 数字バッファは 1..9 がある。 コマンド例. "1P //直前に削除したテキストがペーストされる "2P //その1つ前に削除したテキストがペーストされる ↑ 英字バッファ † 英字バッファはクリップボードが複数あるような感じで使える。 バッファ名には[A-Za-z]と$, #などが使える。 コマンド例. "ayy //バッファ「a」に"abc"がコピーされるとする "byy //バッファ「b」に"def"がコピーされるとする "aP //"abc"ペースト "bP //"def"ペースト "aP //"abc"ペースト これで、ちょっとは、viが便利に感じられるようになった。 ↑
jpGraphのテストも兼ねて、PHP、Perl、Perl with mod_perl、PHP with APCのベンチマーク。 PHPの最適化ツール、APCの効果とmod_perlの効果を調べる。 ベンチマーク環境 CPU:Efficeon 1.0 MEM:256MB OS :Fedora Core 2(Linux 2.6.8-1.521) Apache:Apache/2.0.50 PHP:PHP Version 4.3.8 APC:2.0.3 MySQL:Ver 12.22 Distrib 4.0.20, for pc-linux (i686) ベンチマークはabを使う。オプションは下記の通り。 ab -n 1000 -c 10 http://localhost/ PHPとHTMLの比較 単純に echo "<H1>WWW</H1>"; とだけ書いたPHPと <H1>WWW</
C言語でシグナルを扱う シグナルとは † いわゆる「割り込み」の1つ。動いてるプロセスに対して、他のプロセスから信号を送ることが出来る。 シグナルの種類については、下記参照。 man 7 signal ↑ シグナル キャッチ † C言語で、signalをキャッチするには、signal関数で、signalハンドラーを設定する。 signal(シグナルの種類, 受け取った時に実行する関数) 「受け取った時に実行する関数」のことを、一般的に「ハンドラー」と呼ぶ。 シグナルハンドラーは、1つのintを引数に、戻り値はvoidでなければならない。 typedef void (*sighandler_t)(int); ↑ サンプル † HUPをうけとると、無限ループしているプログラムを終了させる。 サーバのような、駐屯型のプログラムはこのようにシグナルで終了する仕組になっている。 #include
構築環境:XML::RSS 1.05 XML::RSSモジュール † Perlモジュール。CPANより入手可能。 RSS[0.9, 1.0, 2.0]の生成・更新が可能。 ↑ XML::RSSのインストール † root権限あり CPANモジュール経由で入れるのが早い。 #perl -MCPAN -e shell CPAN> install XML::RSS root権限なし tarballをとってきて、ホームディレクトリにでも入れておくのが手っ取り早い。 その際、@INCにパスを加えるのを忘れないようにする。 # モジュールを保存した場所を指定 use lib qw(./lib); ↑ RSSを生成するCGI † とりあえず、ver 1.0のRSSの生成だけできればいいかな。 rss.cgi.txt #!/usr/local/bin/perl -w use strict; use
設定 † ユーザの作成 メールを受け取るユーザを作る # /usr/sbin/adduser -g users -d /home/touroku -s /bin/bash touroku aliasの設定 /etc/aliasesに設定を追加する。 touroku: |/home/touroku/trap_mail.php aliases.dbを作成。 #makemap hash aliases.db < aliases #/etc/init.d/sendmail restart smrshの設定 sendmailはsmrshによって、実行するプログラムを制限している。 /etc/smrshにシンボリックリンクを作成することで、プログラムの実行が許可される。 # ln -s /home/touroku/trap_mail.php /etc/smrsh/ パーミッションの設定 実行
構築環境:Red Hat Linux release 9 (Shrike), Apache2 Apacheモジュールとは † Apacheモジュールを使うと、Apacheに様々な機能を付加することができる、例えば、アクセス制限や、SSLといったものである。 ↑ 検証内容 † Redhatにデフォルトで組み込まれている、モジュールを削除することにより、1プロセスあたりのメモリ使用量がどのように変化するか検証する。 ↑ 削除対象 † デフォルトで設定されているモジュールのうち下記を削除する。 いる/いらないの判断は個人的な判断によるが、デフォルトで組み込まれている モジュールが全部必要になることはまれである。 /etc/httpd/httpd.conf LoadModule access_module modules/mod_access.so LoadModule auth_module
.bashrc † 何回も書くものじゃないから忘れちゃうんだよね。 export TERM=vt100-color export LANG=ja_JP.eucJP export HISTSIZE=10000 export HISTFILESIZE=10000 export HISTCONTROL=ignoredups export PATH=$PATH:$HOME/bin:/sbin/:/usr/sbin #prompt with coloring hostname export PS1="[\u@\[\033[32m\]\h\[\033[0m\] \W]\\$ " alias vi='vim' #with coloring and long format alias ll='ls -lGa' #with coloring alias ls='ls -G' #keychain keycha
モジュールの一覧表示 † @INCからfindコマンドで探す。 find `/usr/local/bin/perl -e 'print "@INC"'` -name '*.pm' -print ↑ モジュール一覧を出力するCGI † レンタルサーバとかで、使いたいモジュールがインストールされているから調べるのに使う。 XREAはこんな感じ。さすがいろいろ入ってる。 list_mod.cgi.txt #!/usr/local/bin/perl print "Content-type: text/plain\n\n"; print qx(find `/usr/local/bin/perl -e 'print "@INC"'` -name '*.pm' -print); 1; ↑
FreeBSD 4.11-RELEASE GNU screen 縦分割対応 † 2007/11月現在、CVSから最新のソースをcheck outすると縦分割(Vertical Split)対応した screenを手にすることができる。 ↑ インストール † $ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/screen co screen $ cd screen/ $ ./configure $ make $ sudo make install 「|」で縦にウィンドウを分割できる。 ※socket.cでstruct iovecがエラーになる場合、sys/uio.hをincludeすると解決する。 ↑ パッチについて † Vertical Split for GNU Screen http://fungi.yuggoth
サンプルスクリプト † 入力されたファイルを消す。 #!/bin/sh echo "please input file name" read FILENAME rm $FILENAME Yes/Noプロンプト付き。 #!/bin/sh echo "plz input file name" read FNAME echo "remove file ? [y/n]" read ANS if [ $ANS = 'y' -o $ANS = 'yes' ]; then echo "rm $FNAME" rm $FNAME fi 参考までにPerlも #!/usr/local/bin/perl print "plz input file name"; my $filename = <>; `rm $filename`; ↑
waitコマンド † wait '文字列' 文字列がホストから送られてくるまで待つ。 対話型のプログラムの場合、適時waitを入れないと、ホストとの同期がうまくいかなくなる。 ↑ サンプル † SSHでサーバへ接続するマクロ。 connect ‘sv1.itboost.co.jp:23 ←ホスト「sv2.itboost.co.jp」にTelnet接続する。 wait ‘login:’ ←文字列「login:」がホストより返されるまで待つ。 sendln ‘harada’ ←文字列「harada」をホストへ送信する。 wait ‘password:’ ←文字列「password:」がホストより返されるまで待つ。 sendln ‘harapass’ ↑
インストール † パッケージのインストール パッケージがあったので、パッケージから入れる。パッケージはftp://ftp.sfc.wide.ad.jp/pub/FreeBSD/ports/i386/packages-6.0-release/Latest/から拾った。 # pkg_add mysql41-client.tbz mysql41-server.tbz /etc/rc.conf 起動時にMySQLが立ち上がるように、rc.confに下記設定を入れる。 mysql_enable="YES" ↑ デュアルマスター構成 † マスターを2台配置し、お互いにクエリをコピーし合う構成を構築してみた。 デュアルマスター構成は「書き込みクエリの分散にはまったくならない」ことに注意。片方で受けたクエリはもう片方でも受けることになるので、結局受けるクエリの数は変わらない。 ただし、「読み込みクエリの
例 expect&ssh † sshで接続して、lsを実行。 #!/usr/bin/expect set timeout 5 spawn ssh somehost.example.com expect "password:" send "YOUR PASSWD\r" expect "Last login" send "ls\r" interact ↑ 例. expect&sendmail † sendmailをexpectで叩いてメール送信。テスト送信を何回もやるとき便利。 #!/usr/bin/expect set timeout 5 spawn telnet somehost.example.com 25 expect "somehost.example.com" send "helo somehost.example.com\n" expect "pleased to meet yo
Nagiosとは † 監視ソフトウェア。主な機能。 アラートメール アラートのエスカレーション(1度アラートを飛ばしたら60分間はアラート飛ばさないなど) HTTP, SSH, PINGなどの各種監視 WEBインタフェースによる稼動状況の閲覧 ↑ Nagiosのインストール † パッケージが存在したので、パッケージからインストールした。パッケージをインストールするとnagiosユーザが自動的に作成される。 pkg_add ftp://ftp.sfc.wide.ad.jp/pub/FreeBSD/ports/i386/packages-6.0-release/Latest/nagios.tbz ↑ ApacheにNagiosのCGI用の設定を入れる † NagiosのWebインタフェースのCGIが動くよう、Apacheに設定を入れる。 FreeBSDのパッケージでは公式ドキュメントとディレク
辞書ファイルによる補完 † 辞書ファイルの設定をしておくと、辞書から候補を取り出してくれる。 辞書ファイルを設定しなくても、編集中のファイルから候補を取り出してくれる。 /.vimrc .vimrcでset dictionaryで辞書ファイルを設定する。 autocmd FileType perl :set dictionary=/usr/share/vim/vim61/syntax/perl.vim autocmd FileType c :set dictionary=/usr/share/vim/vim61/syntax/c.vim Ctrl-X Ctrl-K 辞書補完モードに入る Ctrl-N 次候補 Ctrl-P 前候補 ↑
Modified by mita PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL. Based on "PukiWiki" 1.3 by yu-ji
C言語で正規表現を使うにはregex.hを使う。 regex.h † C言語で正規表現を扱うには、regcomp, regexec, regfree関数を利用する。 ↑ regcomp() † int regcomp(regex_t *preg, const char *regex, int cflags) 正規表現のコンパイルを行なう。コンパイル成功時には0を返す。 cflags には以下に示す定数一つ以上のビットごとの OR (bitwise-or) を指定する。 REG_EXTENDED regex に POSIX 拡張正規表現を使用する。もしこのフラグが設定されない場合、POSIX 標準正規表現が使われる。 REG_ICASE 大文字小文字の違いを無視する。 REG_NOSUB このフラグを設定してコンパイルされたパターンバッファが regexec の引数に指定されると、パラメータ
OracleでMySQLのauto_incrementを実現する方法。回りくどい。 ストアドプロシージャはDBとアプリとのレイヤーの境目がわかりにくくなるから 個人的に嫌いヽ(`Д´)ノ create table test (id number, testdata varchar2(255)); create sequence test_seq start with 1 increment by 1 nomaxvalue; create trigger test_trigger before insert on test for each row begin select test_seq.nextval into :new.id from dual; end; / :Category/Oracle
手順 † PHP拡張モジュールを作成する手順は以下のようになります。 プロトタイプファイルとは モジュールに含まれる関数名を羅列したテキストファイルです。 プロトタイプファイルをext_skelスクリプトで処理すると、コードの基本的な部分が自動生成されます。 プロトタイプファイルの作成 ext_skelによる、コードの生成 config.m4の編集 configureスクリプトの生成 コーディング コンパイル ↑ サンプル モジュールの作成 † 下記のような関数を含むモジュ-ルを作成してみる。モジュール名は「sample_funcs」とする。 void omikuji() 「daikichi(^-^)」「cyu-kichi(-_-)」「kyo(T_T)」のそれぞれを3分の1の確立で表示する。 string orz([bool isCapital]) isCapitalがTRUEなら「Or
jailとは † jailとは「仮想FreeBSDマシン」を実現する機能です。FreeBSDマシン内に、もう一つのFreeBSD環境を作ることができます。 こちらから引用。 ↑ jailを作る † まず、jailを作るディレクトリ決める。今回は/usr/jail/以下に作成した。 make world, make distribution set D=/usr/jail/myjail cd /usr/src make world DESTDIR=$D make distribution DESTDIR=$D -DNO_MAKEDEV mount_devfs devfs $D/dev ↑
構築環境: RedHat? 9 httperfとは † Httpサーバベンチマークツール。 httperfなら、Webサーバが毎秒100リクエストを受けながら、MySQLのベンチマークを行なうといったことが可能。 Apacheのabとの違いは、毎秒のリクエスト数を指定できるところ。 abはいつもCPUはフル稼動だ。 abでは「毎秒100リクエスト送った場合のCPUの負荷がどうなってるか」がわからない。 ↑ 使い方 † 例。 #httperf --server hostname --port 80 --uri /test.html \ --rate 150 --num-conn 27000 --num-call 1 --timeout 5 rate 1秒間に生成するコネクションの数。 1秒間に発生するリクエスト数は rate×num-callになる。 num-conn 総コネクション
Plaggerで自分のMixi日記をRSSにする † 自分のMixiの日記をRSSで吐き出して、Yahoo Daysに噛ませるテスト。 PlaggerのMixiプラグインをちょっと改造。 今月のMixi日記しかRSSにならないのは仕様です。 ↑ パッチ † PlaggerのMixiプラグインにパッチを当てる。 Mixi.pm.diff $ patch Mixi.pm Mixi.pm.diff パッチ済みのやつも一応置いておく。 Mixi.pm ↑ plaggerの設定ファイル † global: plugin_path: /home/user/plagger/assets/plugins assets_path: /home/user/plagger/assets timezone: Asia/Tokyo plugins: - module: CustomFeed::Mixi confi
逆引き † Net-DNS-Resolverモジュールを使う。 サンプルコード sub getptr_rec { my $ip = shift; my $resolv = new Net::DNS::Resolver; my $query = $resolv->search($ip, 'PTR'); if ($query) { foreach ($query->answer) { next if ($_->type ne 'PTR'); return $_->rdatastr; } } } ↑
Net::SSH::Perlモジュールを使って、PerlからSSHを叩く。 たくさんのサーバに対して、同様の操作をしたい場面は多い。 コマンドを発行するだけならExpectでも可能だが、Perlの豊富なモジュールと連携できるのは嬉しい。 Net::SSH::Perl † ここから入手できる。 http://search.cpan.org/~dbrobins/Net-SSH-Perl-1.28/lib/Net/SSH/Perl.pm ↑ パスフレーズ無しの鍵 † パスフレーズ無しの鍵を作ってしまえば、そもそもモジュールなんて使う必要ない。*1 print `ssh -o StrictHostKeyChecking=no host 'cmd'`; いちいち鍵を配ってらんない場合は、Net::SSH::Perlでパスワード認証をする。 ↑ サンプル † 複数のサーバに対して、dfコマンドを
次のページ
このページを最初にブックマークしてみませんか?
『FrontPage - (・∀・)イイ!!Memo』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く