<?xml version="1.0" encoding="utf-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="ja">
<title>Linuxで自宅サーバ構築・管理: KSKNET</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/" />
<modified>2010-04-25T12:54:09Z</modified>
<tagline></tagline>
<id>tag:www.ksknet.net,2010://1</id>
<generator url="http://www.movabletype.org/" version="4.261">Movable Type</generator>
<copyright>Copyright (c) 2010, keisuke</copyright>

<entry>
<title>splice - 配列要素の置換・削除</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/cat34/splice_-.html" />
<modified>2010-04-25T12:54:09Z</modified>
<issued>2010-04-25T12:40:56Z</issued>
<id>tag:www.ksknet.net,2010://1.852</id>
<created>2010-04-25T12:40:56Z</created>
<summary type="text/plain">配列要素の削除と置換</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>配列</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[書式: splice(array, offset, length, list) <br />
<br />
配列要素arrayのoffset番目の要素からlength分削除する。lengthが省略された場合、offset以降の要素全てを削除。<br />
<br />
[サンプル]
<pre class="terminal">
my @array = (1,2,3,4,5);
my $deleted_num = splice(@array, 2, 1);
print $deleted_num . "\n";
print @array;
</pre>
<br />
[実行結果]<br />
3<br />
1245<br />

]]>

</content>
</entry>

<entry>
<title>配列をランダムに並べ替え</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/cat34/post_80.html" />
<modified>2010-04-24T13:51:20Z</modified>
<issued>2010-04-24T13:49:00Z</issued>
<id>tag:www.ksknet.net,2010://1.851</id>
<created>2010-04-24T13:49:00Z</created>
<summary type="text/plain">配列の並べ替え</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>配列</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>List::Utilのshuffle関数を使用すればよい。</p>

<p><br />
use List::Util qw(shuffle);<br />
@array = shuffle(@array);</p>]]>

</content>
</entry>

<entry>
<title>screenコマンド</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/linux/screen.html" />
<modified>2010-04-24T12:48:54Z</modified>
<issued>2010-04-24T12:31:23Z</issued>
<id>tag:www.ksknet.net,2010://1.850</id>
<created>2010-04-24T12:31:23Z</created>
<summary type="text/plain">screenコマンドのまとめ</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Linux</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>[ウィンドウ操作]<br />
c - ウィンドウの作成<br />
A - タイトルの変更<br />
S - ウィンドウの分割<br />
Q - 現在のウィンドウ以外をクローズ</p>

<p><br />
[ copy & paste ]<br />
[ - copyモードへ<br />
] - paste</p>

<p><br />
[その他]<br />
: screenコマンドの入力へ</p>

<p>[.screenrc]<br />
# statuslineの表示<br />
hardstatus alwayslastline "%{= wk} %-w%{=bu dr}%n %t%{-}%+w %= %{=b wb}%y/%m/%d %{=b wb}%c" </p>

<p>参考サイト: <a href="http://www.limy.org/program/screen.html">screenコマンド一覧</a></p>]]>

</content>
</entry>

<entry>
<title>XML::RSS::Parser</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/xmlrssparser.html" />
<modified>2009-10-10T05:04:27Z</modified>
<issued>2009-10-10T04:59:54Z</issued>
<id>tag:www.ksknet.net,2009://1.848</id>
<created>2009-10-10T04:59:54Z</created>
<summary type="text/plain">XML::RSS::Parserを使ったRSSのparser例。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[XML::RSS::Parserを使ったRSSのparser例。<br />
<br />
<pre class="terminal">
#!/usr/bin/perl

use strict;
use warnings;
use utf8;
use Encode;
binmode STDOUT, ':utf8';

use XML::RSS::Parser;
use LWP::UserAgent;
use HTTP::Request::Common;
use Date::Manip;
use Data::Dumper;

my $uri = 'http://b.hatena.ne.jp/hotentry/it.rss';
my $ua = new LWP::UserAgent;
my $request = GET($uri);
my $response = $ua->request($request);

my $parser = XML::RSS::Parser->new;
my $feed = $parser->parse_string($response->content);

foreach ( $feed->query('item') ) {
    my $title = $_->query('title')->text_content;
    my $description = $_->query('description')->text_content;
    my $timestamp = $_->query('dc:date')->text_content;
    my $link = $_->query('link')->text_content;
    print "$title ($link)\n\n $description \n\n ($timestamp)\n\n";
}
</pre>]]>

</content>
</entry>

<entry>
<title>perlの特殊変数一覧</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/perl_10.html" />
<modified>2009-09-27T09:27:36Z</modified>
<issued>2009-09-27T09:23:45Z</issued>
<id>tag:www.ksknet.net,2009://1.847</id>
<created>2009-09-27T09:23:45Z</created>
<summary type="text/plain">perlにて使用される特殊変数の一覧。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>perlにて使用される特殊変数の一覧。</p>

<table>
<tr>
	<td>$0</td>
	<td>スクリプトのコマンド名</td>
</tr>
<tr>
	<td>$!</td>
	<td>エラー番号、もしくはエラー文字列</td>
</tr>
<tr>
	<td>$?</td>
	<td>外部コマンドなどを実行した際の最後のステータス値</td>
</tr>
<tr>
	<td>$@</td>
	<td>直前のevalで発声した例外メッセージ</td>
</tr>
<tr>
	<td>$n</td>
	<td>パターンマッチ時にn番目の()にマッチした文字列</td>
</tr>
<tr>
	<td>$|</td>
	<td>出力のバッファリング、0以外でバッファリングが無効になる</td>
</tr>
<tr>
	<td>$.</td>
	<td>ファイルハンドルの現在ある位置の行数</td>
</tr>
<tr>
	<td>$/</td>
	<td>入力時の区切り文字。デフォルトは改行文字。</td>
</tr>
<tr>
	<td>$,</td>
	<td>print使用時のセパレーター</td>
</tr>
<tr>
	<td>$"</td>
	<td>print &quot;@list_context&quot;とした際の区切り文字</td>
</tr>
<tr>
	<td>$$</td>
	<td>プロセスのpid</td>
</tr>
<tr>
	<td>@ARGV</td>
	<td>スクリプトに渡された引数</td>
</tr>
<tr>
	<td>$^D</td>
	<td>デバッグフラグの値</td>
</tr>
<tr>
	<td>$^E</td>
	<td>OS特有のエラーメッセージ</td>
</tr>
<tr>
	<td>$^T</td>
	<td>スクリプト実行時刻(epoch time)</td>
</tr>
<tr>
	<td>%ENV</td>
	<td>環境変数</td>
</tr>
<tr>
	<td>%INC</td>
	<td>インクルードされたライブラリなどを記録</td>
</tr>
<tr>
	<td>%SIG</td>
	<td>シグナルハンドラを設定するためのハッシュ</td>
</tr>
<tr>
	<td>@INC</td>
	<td>ライブラリの検索対象ディレクトリ</td>
</tr>
</table>

<p><br />
$0の使用例</p>

<p>[例: test.pl]<br />
#!/usr/bin/perl</p>

<p>print "$0\n";</p>

<p>[実行結果]<br />
[testuser@server testuser]$ ./test.pl<br />
./test.pl<br />
[testuser@server testuser]$ /home/testuser/test.pl<br />
/home/testuser/test.pl</p>

<p></p>

<p>[例 argv.pl]<br />
#!/usr/bin/perl</p>

<p>print @ARGV";</p>

<p>[実行結果]<br />
[testuser@server testuser]$ ./argv.pl a b c d e<br />
a b c d e</p>]]>

</content>
</entry>

<entry>
<title>vimのFile Explorer</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/vi/vimfile_explore.html" />
<modified>2009-09-27T05:30:27Z</modified>
<issued>2009-09-27T04:29:55Z</issued>
<id>tag:www.ksknet.net,2009://1.846</id>
<created>2009-09-27T04:29:55Z</created>
<summary type="text/plain">vim内でディレクトリ間を移動したり、ファイルを開くには:Expと打ち込みます。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>vim</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>vim内でディレクトリ間を移動したり、ファイルを開くには:Expと打ち込みます。(vimの標準プラグインであるnetrwの機能の一つ)<br />
ディレクトリ上にカーソルを置きEnterを押すとディレクトリに移動し、ファイル上でEnterを押すとファイルを開きます。<br />

以下主なオプション。<br class="break2" />

</p><table>
<tbody><br />
<tr>
	<td>o</td>
	<td>ファイル及びディレクトリを別画面で開く</td>
</tr>
<tr>
	<td>i</td>
	<td>ファイルサイズやタイムスタンプなどの詳細を表示</td>
</tr>
<tr>
	<td>d</td>
	<td>ディレクトリを作成</td>
</tr>
<tr>
	<td>x</td>
	<td>指定したアプリケーションでファイルを開く</td>
</tr>
</tbody></table>]]>
<![CDATA[<p>vimのFile Explorer</p>

vim内でディレクトリ間を移動したり、ファイルを開くには:Expと打ち込みます。(vimの標準プラグインであるnetrwの機能の一つ)<br /><br />
ディレクトリ上にカーソルを置きEnterを押すとディレクトリに移動し、ファイル上でEnterを押すとファイルを開きます。<br /><br />
以下主なオプション。<br /><br /><table>
<tbody><tr>
	<td>o</td>
	<td>ファイル及びディレクトリを別画面で開く</td>
</tr>
<tr>
	<td>i</td>
	<td>ファイルサイズやタイムスタンプなどの詳細を表示</td>
</tr>
<tr>
	<td>d</td>
	<td>ディレクトリを作成</td>
</tr>
<tr>
	<td>x</td>
	<td>指定したアプリケーションでファイルを開く</td>
</tr>
</tbody></table>]]>
</content>
</entry>

<entry>
<title>vim - マクロ</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/vi/vim_-.html" />
<modified>2009-09-27T04:15:05Z</modified>
<issued>2009-09-27T04:13:05Z</issued>
<id>tag:www.ksknet.net,2009://1.845</id>
<created>2009-09-27T04:13:05Z</created>
<summary type="text/plain">マクロとは一連の操作をを記録し、再度その操作を行う機能です。以下使い方。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>vim</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>マクロとは一連の操作をを記録し、再度その操作を行う機能です。以下使い方。</p>

<p><br />
1. qaにて記録を開始<br />
2. 任意の操作<br />
3. qにて記録を終了<br />
4. @aにて記録したマクロを実行。10回繰り返す場合には10@a</p>

<p><br />
※ aの文字は任意。a-zまで記録可能。（レジスタ）<br />
※ aではなくAとした場合、既存のマクロに処理を追加する。</p>]]>

</content>
</entry>

<entry>
<title>IE8スタイル崩れ</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/cat14/ie8.html" />
<modified>2009-09-22T15:13:06Z</modified>
<issued>2009-09-20T05:55:15Z</issued>
<id>tag:www.ksknet.net,2009://1.844</id>
<created>2009-09-20T05:55:15Z</created>
<summary type="text/plain">IE8でスタイルが崩れてしまう場合、以下のmetaタグを追加すればIE7互換になる。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>その他</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>IE8でスタイルが崩れてしまう場合、以下のmetaタグを追加すれば強制的にIE7互換モードにすることが可能。</p>

<div class="terminal">
&lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=emulateIE7&quot; /&gt;
</div>]]>

</content>
</entry>

<entry>
<title>キーボード割り当ての変更（Xwindows）</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/linux/xwindows.html" />
<modified>2009-09-22T15:13:06Z</modified>
<issued>2009-05-24T08:57:18Z</issued>
<id>tag:www.ksknet.net,2009://1.843</id>
<created>2009-05-24T08:57:18Z</created>
<summary type="text/plain">Xwindowsでのキー割り当ては.Xmodmapに記載すればよい。以下の例では「変換」キーをEscキーに変更している。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Linux</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[Xwindowsでのキー割り当ては.Xmodmapに記載すればよい。以下の例では「変換」キーをEscキーに変更している。<br />
<br />
#現在のキーボードのマッピングをファイルに出力<br />
<pre class="terminal">$ xmodmap -pke -> .Xmodmap</pre>

# キーに割り当てられているkeycodeをxevコマンドにて表示 <br />
<pre class="terminal">$ xev</pre>
<br />
# Escapeボタンを押したとき（keycodeは9）<br />
<pre class="terminal">KeyRelease event, serial 29, synthetic NO, window 0x3600001,
    root 0x65, subw 0x0, time 1909244937, (529,508), root:(592,563),
    state 0x0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
    XLookupString gives 1 bytes: (1b) ""
    XFilterEvent returns: False</pre>
# 変換ボタンを押したとき（keycodeは129）<br />
<pre class="terminal">KeyRelease event, serial 29, synthetic NO, window 0x3400001,
    root 0x65, subw 0x0, time 1909057279, (700,618), root:(763,673),
    state 0x0, keycode 129 (keysym 0xff1b, Escape), same_screen YES,
    XKeysymToKeycode returns keycode: 9
    XLookupString gives 1 bytes: (1b) ""
    XFilterEvent returns: False</pre>
<br />
# 該当するkeycodeを変更<br />
<pre class="terminal">$ vim ./.Xmodmap 
keycode   8 =
keycode   9 = Escape
keycode  10 = 1 exclam
keycode  11 = 2 at
.
.
.
keycode 129 = Escape
</pre>
]]>

</content>
</entry>

<entry>
<title>Digest::SHA</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/perl/digestsha.html" />
<modified>2009-09-22T15:13:06Z</modified>
<issued>2008-12-14T13:23:20Z</issued>
<id>tag:www.ksknet.net,2008://1.842</id>
<created>2008-12-14T13:23:20Z</created>
<summary type="text/plain">Digest::SHAモジュールを使用すればSHA1メッセージダイジェストの生成が可能。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Perl</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[Digest::SHAモジュールを使用すればSHA1メッセージダイジェストの生成が可能。<br />
<br />
<pre class="terminal">
  1 #!/usr/bin/perl
  2
  3 use Digest::SHA;
  4 use Carp;
  5
  6 die "Usage: $0 filename\n" if (@ARGV != 1);
  7 $filename = shift;
  8
  9 croak("Error: $filename not found") unless -f $filename;
 10
 11 $sha = Digest::SHA->new(1); # sha1
 12 $sha->addfile($filename);
 13 my $digest = $sha->hexdigest;
 14 print "$digest\n";
</pre>]]>

</content>
</entry>

<entry>
<title>shasum - メッセージダイジェストの生成及びチェック</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/linuxrz/shasum.html" />
<modified>2009-09-22T15:13:06Z</modified>
<issued>2008-12-13T14:40:10Z</issued>
<id>tag:www.ksknet.net,2008://1.841</id>
<created>2008-12-13T14:40:10Z</created>
<summary type="text/plain">shasumはsha1及びsha2のメッセージダイジェスト（ハッシュ値）の計算及びチェックをするためのコマンドである。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Linuxコマンド(R〜Z)</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[<p>shasumはsha1及びsha2のメッセージダイジェスト（ハッシュ値）の計算及びチェックをするためのコマンドである。メッセージダイジェストはハッシュ関数を用いてデータの任意のブロックを取りだした値のことで、元のデータが変われば基本的にはメッセージダイジェストも変わる。異なるデータから同一のメッセージダイジェストを生成することは困難であるため、メッセージダイジェストをチェックすることで、ファイルが破損もしくは改竄していないことを確認することができる。</p>

<p><br />
[使用法]<br />
sha1sum [OPTION] [FILE]...<br />
sha1sum [OPTION] --check [FILE]</p>

<p><br />
[主なオプション]<br />
-a　デフォルトはsha1（224、256、384、512を指定可能）</p>

<p><br />
※　中身はPerlのDigest::SHAである。Digest::SHAが入っていない場合はsha1sumを使えばよい。</p>

<p><br />
[関連記事]<br />
<a href="http://www.ksknet.net/linuxjq/md5sum_md5.html">md5sum</a><br />
</p>]]>

</content>
</entry>

<entry>
<title>ssh-keygen - SSH鍵の作成及び管理</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/linuxrz/sshkeygen_ssh.html" />
<modified>2009-09-22T15:13:05Z</modified>
<issued>2008-10-25T16:21:22Z</issued>
<id>tag:www.ksknet.net,2008://1.840</id>
<created>2008-10-25T16:21:22Z</created>
<summary type="text/plain">ssh-keygenはSSH鍵の作成及びパスワードの変更などを行うコマンドである。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Linuxコマンド(R〜Z)</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[ssh-keygenはSSH鍵の作成及びパスワードの変更などを行うコマンドである。<br />
<br />
[主なオプション]<br />
-b ビット数を指定<br />
-c 鍵のコメントを変更<br />
-p 鍵のパスフレーズを変更<br />
<br />
<pre class="terminal">
# RSA1鍵を作成(version1)
ssh-keygen -t rsa1

#RSA鍵を作成(version2)
ssh-keygen -t rsa

#DSA鍵を作成(version2)
ssh-keygen -t dsa

#パスフレーズの変更
ssh-keygen -p -f ./.ssh/id_rsa
Enter old passphrase:
Key has comment './.ssh/id_rsa'
Enter new passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved with the new passphrase.
</pre>
]]>

</content>
</entry>

<entry>
<title>multitail - 複数ファイルをtail</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/linux/multitail_tail.html" />
<modified>2009-09-22T15:13:05Z</modified>
<issued>2008-09-27T03:17:42Z</issued>
<id>tag:www.ksknet.net,2008://1.839</id>
<created>2008-09-27T03:17:42Z</created>
<summary type="text/plain">multitailコマンドを使用すれば複数のファイルをtailすることができる。tail時のウィンドウをひとつにmergeしたりすることができるので、複数のapacheログファイルなどを同時に見たいときには便利かも。デフォルトではインストールされていないため、yum等にてインストールする必要有り。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>Linux</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[multitailコマンドを使用すれば複数のファイルをtailすることができる。tail時のウィンドウをひとつにmergeしたりすることができるので、複数のapacheログファイルなどを同時に見たいときには便利かも。デフォルトではインストールされていないため、yum等にてインストールする必要有り。<br />
<br />
<br />
[主なオプション]<br />
-i 監視対象のファイルを指定<br />
-I -iと同じだが同一ウィンドウにて表示<br />
-l 後に続くコマンドの結果を監視<br />
-L -l と同じだが同一ウィンドウにて表示<br />
-e 後に続く正規表現にてフィルタリング<br />
<br />
<pre class="terminal">
multitail -l "ssh localhost tail -f /var/www/logs/access_log" -L "ssh localhost tail -f /var/www/logs/error_log"
</pre>
<br />
参照: <a href="http://www.vanheusden.com/multitail/">MultiTail</a>]]>

</content>
</entry>

<entry>
<title>show create table</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/mysql/show_create_tab.html" />
<modified>2009-09-22T15:13:05Z</modified>
<issued>2008-07-20T07:04:44Z</issued>
<id>tag:www.ksknet.net,2008://1.838</id>
<created>2008-07-20T07:04:44Z</created>
<summary type="text/plain">show create table にて指定したテーブルのSQL作成文を確認することができる。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>mysql</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[show create table にて指定したテーブルのSQL作成文を確認することができる。
<br />
<br />
<pre class="terminal">
mysql> show create table bookmark \G
*************************** 1. row ***************************
       Table: bookmark
Create Table: CREATE TABLE `bookmark` (
  `bookmark_id` int(11) NOT NULL auto_increment,
  `url` varchar(255) default NULL,
  `title` varchar(255) default NULL,
  `record_time` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `comment` text,
  PRIMARY KEY  (`bookmark_id`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=utf8
1 row in set (0.02 sec)
</pre>]]>

</content>
</entry>

<entry>
<title>DBIx::Class::Schema::Loader</title>
<link rel="alternate" type="text/html" href="http://www.ksknet.net/dbi/dbixclassschema.html" />
<modified>2009-10-11T13:25:42Z</modified>
<issued>2008-06-02T14:33:47Z</issued>
<id>tag:www.ksknet.net,2008://1.837</id>
<created>2008-06-02T14:33:47Z</created>
<summary type="text/plain">DBIx::Class::Schema::Loaderを使用すればスキーマを作成する手間が省ける。</summary>
<author>
<name>keisuke</name>
<url>http://www.ksknet.net</url>
<email>keisuke@ksknet.net</email>
</author>
<dc:subject>DBI</dc:subject>
<content type="text/html" mode="escaped" xml:lang="ja" xml:base="http://www.ksknet.net/">
<![CDATA[DBIx::Class::Schema::Loaderを使用すればスキーマを作成する手間が省ける。

<pre class="terminal">
#!/usr/bin/perl

package My::Schema;
use base qw/DBIx::Class::Schema::Loader/;

# constraintで正規表現にマッチするテーブルのみロード
# excludeは正規表現にマッチするテーブルを除外
# debugオプションを指定することで自動解析したスキーマをダンプ
# その他loader_optionsに指定できるオプションはDBIx::Class::Schema::Loader::Baseを確認のこと

__PACKAGE__->loader_options( constraint => qr/point/, debug => 1 );

package Main;
use warnings;
use strict;

my $dsn = 'DBI:Pg:dbname=dbname;host=localhost';
my $user = 'username';
my $password = 'password';
my $attrs = { AutoCommit => 1 };
my $schema = My::Schema->connect($dsn, $user, $password, $attrs);

# primary_keyでの検索にはfind()を使用
my $result_set = $schema->resultset('Point')->search(
        { 
                timestamp => { '<=' => '2008-01-01' }
        },
        {
                order_by => 'timestamp'
        }
);

while (my $record = $result_set->next ) {
        print $record->id . "\t" . $record->timestamp . "\n";
}

# 検索してそのまま削除
$schema->resultset('Point')->search( { id => { '<=' => '514' } })->delete;

__END__
</pre>]]>

</content>
</entry>

</feed>