サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
アメリカ大統領選
blog.majide.com
McAfee MySQL Audit Plugin McAfee が MySQLの監査ログ取得プラグインをオープンソースでリリースしています。 これがシンプルで便利だったので紹介したいと思います。 米McAfee、MySQL向けの監査ツールを無償公開 http://sourceforge.jp/magazine/12/03/27/1333243 特徴 監査対象としたいテーブルやスキーマを指定できる ログがJSON形式で取り扱い安い ログファイル出力に加えて、UNIXドメインソケットに対して出力可能 MySQL5.1, 5.5対応。Audit Plugin Interface 機能のないMySQL5.1 でも利用できる MySQLではMySQL5.5で追加されたAudit Plugin Interfaceを利用すれば自由に監査プラグインを実装できるのですが、MySQLの内部構造(どの変数にど
This entry was posted on 土曜日, 1月 21st, 2006 at 11:42 AM and is filed under 未分類. You can follow any responses to this entry through the RSS 2.0 feed. Both comments and pings are currently closed.
ユーザの入力されたデータをreadコマンドで読み込む。 サンプルコード ファイル名前を入力させる 入力されたファイルを消すスクリプト。 #!/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 = <>
XML::Simpleの入手 CPANから入手できる。 http://search.cpan.org/~grantm/XML-Simple-2.18/lib/XML/Simple.pm XMLの読み込みのサンプルコード XMLin関数を使って、XMLをハッシュリファレンスに落とし込むことが出来る。 use strict; use XML::Simple; use Data::Dumper; { package Data::Dumper; # Data::Dumper がUTF-8をエスケープしないためのHack sub qquote { return shift; } } $Data::Dumper::Useperl = 1; binmode STDOUT, 'utf8'; my $xml = '<?xml version="1.0" encoding="UTF-8" ?> <root>
OracleでMySQLのauto_incrementを実現するにはシーケンスと呼ばれるものを利用します。 サンプル 以下の例ではtest_tblのidカラムをauto_incrementにしています。
そもそも、環境によっては、Backspaceで文字が消せない場合がある。 BackspaceにCtrl+Hが割当られてないことが原因なので、~/.vimrcに以下の内容を設定する。
MySQL5.0からMySQL5.5へアップグレードするには、一旦、MySQL5.1にアップグレードする必要があります。 CentOS 5.4のLinux環境でアップグレードをしてみました。 環境 CentOS 5.4 (i386) 基本的な流れ MySQL 5.1 をインストール mysql_upgrade コマンドでアップグレード MySQL 5.5 をインストール mysql_upgrade コマンドでアップグレード RPMのダウンロード あらかじめ、RPMをMySQLのサイトからダウンロードしておきます。 今回はCentOSなのでRedhat用のものをダウンロードしました。 MySQL 5.1 MySQL-client-community-5.1.58-1.rhel5.i386.rpm MySQL-server-community-5.1.58-1.rhel5.i386.rpm M
お掃除ロボット、ルンバをPCにUSB接続して、制御する方法。 用意するもの FT232RLモジュール USBケーブル ブレッドボード ブレッドボード用の接続配線ケーブル(ジャンパーワイヤー) FT232RLモジュールはシリアルをUSBへ変換してくれるモジュールです。 秋月電子などの電子部品屋で取り扱っています。 FT232RLモジュールにUSBケーブルは付属していないので、USB miniB端子のケーブルも別途購入しましょう。 カバーをはずす ルンバのコネクタは、ルンバのカバーをはずす必要があります。 ツメで固定されているだけなので、ゆっくりと力を入れてはずしていけば、良いです。 持ち手の部分が手が入れやすくなっています。
RPMからconfigureオプションを調べる方法。 適当にディレクトリを作って、その中でRPMを解凍する(cpioを使う)。 $ mkdir work $ cd work $ rpm2cpio ../smartmontools-5.23-1.i386.rpm | cpio -id 872 blocks $ ls -l 合計 8 drwx------ 3 nori nori 4096 11月 4 06:19 etc drwx------ 4 nori nori 4096 11月 4 06:19 usr $ tree . |-- etc | |-- rc.d | | `-- init.d | | `-- smartd | `-- smartd.conf `-- usr |-- sbin | |-- smartctl
マクロのサンプル SSHでサーバへ接続し、dateコマンドを打つマクロ。 ; myhost.example.jp へssh接続する。 connect 'myhost.example.jp /ssh /l /auth=password /user=username /passwd=mypassword' ; コマンドプロンプトを待つ wait '$ ' ; date コマンドを実行 sendln 'date' ; 切断 ; disconnect 0 にすると確認せずに切断 disconnect 1 実行方法 TeraTerm/TTSSHから実行 ControllメニューのMacroから実行する。
watch コマンドとは 定期的にコマンドを実行するコマンド。 crontabの実行結果がシェルに出る点がcronとは異なる。 watchコマンドの使い方
expectとは LinuxやFreeBSDで利用できる、sshやSQL等、対話的な通信を自動化するツールです。 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をexpectで叩いてメール送信。テスト送信を何回もやるとき便利。 #!/usr/bin/expect set timeout 5 spawn telnet somehost.example.com 25 expect "somehost.example.com" send
ライブラリの作成 まず、SharedObjectとするプログラムを書く。sayhello.cとして保存します。 #include <stdio.h> void sayhello(void) { printf("Hello\n"); } gccを利用してSharedObjectとしてコンパイルします。 $ gcc -fPIC -shared sayhello.c -o libsayhello.so #libなんたら.soという名前で作成 # fileコマンドでSOであることを確認 $ file libsayhello.so libsayhello.so: ELF 32-bit LSB shared object, Intel 80386, version 1 (FreeBSD), not stripped
ディスクの容量を表示するコマンドの使い方。 df コマンド ディスク(パーティション)ごとに使用率を表示する。 「-h」はhuman readable。単位をつけてくれる。 $ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/simfs 10485760 1918208 8567552 19% / none 393216 4 393212 1% /dev $ df -h Filesystem Size Used Avail Use% Mounted on /dev/simfs 10G 1.9G 8.2G 19% / none 384M 4.0K 384M 1% /dev
週末をつかって、このブログ(WordPress)の表示速度改善に取り組んでみました。 ひどいときは10秒も表示にかかってました。 遅かった主原因はAmazonのコンテンツ連動広告なのですが、それ以外でもいろいろ調整したので メモを残しておきます。WP-CacheなどのWordPressのプラグインについては、そこらじゅうで言及されてるので省略。 最終的に5秒が1秒になったよ! gzip圧縮 CSSやJavaScriptなどをgzipで圧縮して、通信料を減らします。WPのディレクトリに以下の内容を.htaccessという名前で保存します。 mod_gzip_temp_dir に指定するディレクトリをあらかじめパーミッション777で作成しておく必要があります。 <IfModule mod_gzip.c> mod_gzip_on Yes mod_gzip_keep_workfiles Yes m
Intel Core 2 Duo P7350 @ 2GHz NVIDIA GeForce 9400M Memory 2GB Broadcom corporation BCM4332 802.11a/b/g/n Wireless LAN Controller 下準備 Mac OS X インストール ディスク。 BootCampからWindowsのドライバを取り出す必要があるので、OS Xのインストールディスクも必要です。 Cent OS インストール ディスク Cent OSのサイトからISOイメージをダウンロードして、DVDに焼いておきます。 今回は64bit版ではなく、i386を選択しました。 その他、ドライバ類。 インストール直後の状態では、ドライバがインストールされていないため、ネットワークにつなぐことができません。最低限ネットワークにつなぐために必要なドライバなどをCD-Rなどに焼
regex.h C言語で正規表現を使うにはregex.hをincludeします。 具体的に利用する関数はregcomp(), regexec(), regfree()関数の3つです。 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 の引数に指定される
gprof GNU Profiler とは プロファイラあるプログラム中で使用される関数毎に、その実行回数や実行時間を分析して表示するツールです。プログラムが思ったようなパフォーマンスが出ない場合、ボトルネックになっている場所を特定するために利用します。 実行例 % cumulative self self total time seconds seconds calls ms/call ms/call name 0.0 0.00 0.00 3 0.00 0.00 read [1] //read()が3回 0.0 0.00 0.00 2 0.00 0.00 write [2] //write()が2回 呼ばれている 0.0 0.00 0.00 1 0.00 0.00 ___sysctl [138] 0.0 0.00 0.00 1 0.00 0.00 _close [139] 0.0 0.0
サンプルプログラム shm_receiver.c shmを生成し、1秒置きに、shmの中身を画面に表示する。shmの中身が「end」になると、終了する。 #include <stdio.h> #include <stdlib.h> #include <string.h> /* strcpy */ #include <sys/types.h> #include <sys/ipc.h> #include <sys/shm.h> int main(void) { int id; char *adr; /* IPC_PRIVATEを指定すると、新規にshmが生成される。*/ if((id = shmget(IPC_PRIVATE, 512, IPC_CREAT|0666)) == -1){ perror("shmget"); exit(-1); } printf("共有メモリID = %d\n",
シグナルとは いわゆる「割り込み」の1つ。動いてるプロセスに対して、他のプロセスから信号を送ることが出来る。 代表的なシグナル シグナル番号 シグナル名 説明
pthread ライブラリを使った、簡単なスレッドの実装例です。 POSIXスレッド とは ポジックススレッドと読む。Pthreadと呼ばれることが多い。Pthreadを使うにはpthreadライブラリが必要である。 コンパイル時には「-pthread」オプションを使う((「-lpthread」の場合もある))。 スレッドのメリット/デメリット スレッドと似た仕組みとして、fork()による子プロセスの生成があるが、スレッドを使うことによる利点がある。 かなりザックリとまとめると、 メリット fork()より高速 fork()よりスレッドを使うApache2のほうがスケーラビリティが高い デメリット スレッド間の同期処理が面倒 利用するライブラリがスレッドに対応している必要がある サンプルプログラム こちらから引用。 #include <stdio.h> #include <stdlib.
サーバの仕組みとスレッド 通常、Webサーバなどは親プロセスがポートをListenし、接続があったら、子プロセスを生成し、その後の(クライアントへのデータ送信等の)処理は、子プロセスに任せるというフローをとる。 そうすることで、親プロセスはクライアントへデータ送信が終わるのを待つ必要がなくなり、どんどん接続を受けることが可能になる。 接続数が多くなると、当然、子プロセスが多くなり、サーバへの過負荷となる。 そこで、子プロセスではなく、スレッドでクライアントの処理を行うと負荷低減につながる((スレッドの生成は子プロセスの生成より軽量)) echoサーバのPOSIXスレッド化 [C言語]Socket間通信 echoサーバを作るで作成したechoサーバにptheadを組み込み、複数クライアントに対して同時処理ができるように改良する。POSIXスレッドについて知りたければ、まずは[C言語]POSI
Apacheをシングルプロセスで立ち上げる Apache ハンドラーを開発しているときなど、httpd を 直接 gdbにかけたい場合、シングルプロセスで起動するとデバッグしやすい。 具体的には下記のように、「-X」オプションをつけて、apacheを起動します。 ブレークポイントをソース中に設定する gdbで、”’break 30”’とかやってもいいが、ソース中でbreak pointを設定することもできる。 特定の条件下の場合のみbreakさせたい場合などに便利。 signal.hをincludeしてSIGTRAPを投げるとbreakする。 サンプルコード #include <stdio.h> #include <signal.h> int main() { printf("a\n"); raise(SIGTRAP); printf("b\n"); return 0; } 参考書籍
C言語でのHTTPクライアントの実装例です。 以下の手順でリモートのサーバと通信し、データを取得します。 gethostbyname()によりドメイン名からIPアドレスを引く socket() によりソケットを開く connect() によりサーバに接続する write() でサーバにリクエストを送る read() でレスポンスを受信する close() によりソケットを閉じる #include <stdio.h> #include <stdlib.h> #include <string.h> /* bzero */ #include <sys/types.h> /* netinet/in.h */ #include <sys/socket.h> /* AF_INET */ #include <netinet/in.h> /* sockaddr_in */ #include <netdb.
ネットワークを通して、データをやりとりするためには、Socketに対して、読み書きをします。 C言語による、Socket間通信は、下記のような手順になります。 socket() によりソケットを開く bind() により、コネクションを受けつけるIPアドレス・ポート番号と ソケットとを対応づける listen() によりクライアントからの接続待ち受け状態にする accept() によりクライアントからの接続を受け付ける read(), write(), send(), recv() などを用いて通信を行う close() によりソケットを閉じる 実際に文字列を単純にクライアントに返すだけのプログラム(echoサーバ)を書いて見ます。 ちなみに、本コードでは、1回やりとりが終わると、サーバプロセスも終了します。 #include <stdio.h> #include <stdlib.h> /
このページを最初にブックマークしてみませんか?
『イイ!! プログラミング Blog』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く