<?xml version="1.0" encoding="utf-8"?>

<rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:admin="http://webns.net/mvcb/"
xmlns:cc="http://web.resource.org/cc/"
xmlns="http://purl.org/rss/1.0/">

<channel rdf:about="http://www.ksknet.net/">
<title>Linuxで自宅サーバ構築・管理: KSKNET</title>
<link>http://www.ksknet.net/</link>
<description></description>
<dc:language>ja</dc:language>
<dc:creator></dc:creator>
<dc:date>2008-03-23T23:12:09+09:00</dc:date>
<admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=3.11-ja" />


<items>
<rdf:Seq><rdf:li rdf:resource="http://www.ksknet.net/linuxai/hwclock.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/classaccessor_a.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/modulestarterpb.html" />
<rdf:li rdf:resource="http://www.ksknet.net/vi/vim.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/perl_9.html" />
<rdf:li rdf:resource="http://www.ksknet.net/cat14/firefox_1.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/xmlrpclite.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/httprequestcomm.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/lwpuseragent_we.html" />
<rdf:li rdf:resource="http://www.ksknet.net/linux/post_182.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/post_181.html" />
<rdf:li rdf:resource="http://www.ksknet.net/linux/syslog.html" />
<rdf:li rdf:resource="http://www.ksknet.net/dbi/sqlabstract.html" />
<rdf:li rdf:resource="http://www.ksknet.net/postfix/postfix_relayho.html" />
<rdf:li rdf:resource="http://www.ksknet.net/javascript/innertext.html" />
<rdf:li rdf:resource="http://www.ksknet.net/vi/post_121.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/templatetoolkit.html" />
<rdf:li rdf:resource="http://www.ksknet.net/linuxjq/lastcomm.html" />
<rdf:li rdf:resource="http://www.ksknet.net/qmail/post_147.html" />
<rdf:li rdf:resource="http://www.ksknet.net/perl/keys.html" />
</rdf:Seq>
</items>

</channel>

<item rdf:about="http://www.ksknet.net/linuxai/hwclock.html">
<title>hwclock - ハードウェアクロックの設定</title>
<link>http://www.ksknet.net/linuxai/hwclock.html</link>
<description><![CDATA[<p>ハードウェアクロックとはBIOS側で設定されている時間のことで、システムクロックとはOS側で設定されている時間のことです。</p>

<p><br />
hwclock はこのハードウェアクロックとシステムクロックの同期に使用されます。</p>

<p><br />
[使用例]<br />
#システムクロックをハードウェアクロックに設定<br />
hwclock -w<br />
hwclock --systohc</p>

<p><br />
#ハードウェアクロックをシステムクロックに設定<br />
hwclock -s<br />
hwclock --hctosys</p>]]></description>
<dc:subject>Linuxコマンド(A〜I)</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2004-09-05T14:18:27+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/classaccessor_a.html">
<title>Class::Accessor - accessorの自動作成</title>
<link>http://www.ksknet.net/perl/classaccessor_a.html</link>
<description><![CDATA[Class::Accessorを使えばnew constructerやaccessorを自動的に作成してくれる。<br />
<br />
<pre class="terminal">      1 #!/usr/bin/perl
      2
      3 { package Employee;
      4 use base qw(Class::Accessor);
      5 __PACKAGE__->mk_accessors(qw(name role));
      6 }
      7
      8 { package main;
      9 my $employee = Employee->new({ name => 'Hoge' } );
     10 $employee->{role} = 'Hage';
     11 print $employee->{name} . "\n";
     12 print $employee->{role} . "\n";
     13 }</pre>

]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2008-03-23T23:12:09+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/modulestarterpb.html">
<title>Module::Starter::PBPによるモジュールの作成</title>
<link>http://www.ksknet.net/perl/modulestarterpb.html</link>
<description><![CDATA[perlのモジュールの雛形を作るコマンドに<a href="http://www.ksknet.net/perl/h2xs_perl.html">h2xs</a>というコマンドがありますが、最近ではModule::Starterを使うのが主流のようです。また、Module::Starter::PBPではPerl Best Practicesが推奨するテンプレートにてモジュールが作成されます。<br />
<br />
まずはCPANよりインストール。<br />
<br />
<pre class="terminal">$ cpan -i Module::Starter::PBP</pre>
<br />
次に初期セットアップ<br />
<pre class="terminal">$ perl -MModule::Starter::PBP=setup
Creating /home/hogehoge/.module-starter/PBP...done.
Creating /home/hogehoge/.module-starter/PBP/t...done.
Creating /home/hogehoge/.module-starter/config...
Please enter your full name: HogeHoge HogeHoge
Please enter an email address: devnull@ksknet.net
Writing /home/hogehoge/.module-starter/config...
done.
Installing templates...
        /home/hogehoge/.module-starter/PBP/Build.PL...done
        /home/hogehoge/.module-starter/PBP/Makefile.PL...done
        /home/hogehoge/.module-starter/PBP/README...done
        /home/hogehoge/.module-starter/PBP/Changes...done
        /home/hogehoge/.module-starter/PBP/Module.pm...done
        /home/hogehoge/.module-starter/PBP/t/pod-coverage.t...done
        /home/hogehoge/.module-starter/PBP/t/pod.t...done
        /home/hogehoge/.module-starter/PBP/t/perlcritic.t...done
Installation complete.</pre>
<br />
$HOME/.module-starter内にconfigとPBPのテンプレートが入ります。モジュールを作成するにはmodule-starterコマンドを使用します。<br />
<br />
<pre class="terminal">$ module-starter --module=My::ModuleName</pre>
<br />
これでMy-ModuleNameフォルダ以下が作成されます。ディレクトリを移動して、Buildしてみます。<br />
<br />
<pre class="terminal">$ cd My-ModuleName
$ perl Build.PL
Checking whether your kit is complete...
Looks good

Checking prerequisites...
Looks good

Creating new 'Build' script for 'My-ModuleName' version '0.0.3'
</pre>
<br />
これでBuildファイルが作成されます。続いてperl Build<br />
<br />
<pre class="terminal">$ perl Build
Copying lib/My/ModuleName.pm -> blib/lib/My/ModuleName.pm
Manifying blib/lib/My/ModuleName.pm -> blib/libdoc/My::ModuleName.3pm
</pre>
<br />
t/フォルダ以下に必要なテストプログラムを書き、パッケージの実装をします。その後perl Build testで問題がないことを確認。<br />
<br />
<pre class="terminal">perl Build test</pre>
<br />
モジュールの依存性がある場合はBuild.PLのrequiresに追記。またMakefile.PLを以下のように書き換え。こうすればBuild.PLの内容と互換性のあるMakefile.PLが作成される。<br />
<br />
<pre class="terminal">use lib qw(lib);
use Module::Build::Compat;
Module::Build::Compat->run_build_pl(args => \@ARGV);
Module::Build::Compat->write_makefile(build_class => 'Module::Build');</pre>
<br />
実際に走らせてみる<br />
<pre class="terminal">$ perl Makefile.PL
$ make
$ make test</pre>
<br />
次にmanifest(配布されるファイルのTable of contents)の作成。MANIFESTに入れたくないものは作成されるMANIFEST.SKIPに記載すればよい。<br />
<br />
<div class="terminal">$ perl Build manifest</div>
<br />
# 最後にパッケージを作成。tar.gzファイルができあがります。<br />
<div class="terminal">$ perl Build dist</div>
<br />
[参考]
<a href="http://itpro.nikkeibp.co.jp/article/COLUMN/20071011/284280/?P=1&ST=develop">ITPro - Part1 正しいPerl/CGIの書き方 </a>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2008-03-23T00:15:31+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/vi/vim.html">
<title>vim - 背景色に合わせたカラー設定</title>
<link>http://www.ksknet.net/vi/vim.html</link>
<description><![CDATA[<p>:set backgroundにて背景色に合わせた色を自動的に設定できます。</p>

<p><br />
[背景色が暗い時]<br />
<pre class="terminal">:set background=dark</pre></p>

<p><br />
[背景色が明るい時]<br />
<pre class="terminal">:set background=light</pre></p>

<p>また以下のようにすれば、あらかじめ用意されたカラースキームを使用することができる。</p>

<pre class="terminal">:colorscheme evening</pre>

<p>カラースキームは通常/usr/share/vim 以下にある。</p>

<pre class="terminal">ls /usr/share/vim/vim63/colors/
blue.vim      default.vim  desert.vim   evening.vim  morning.vim  pablo.vim      README.txt  shine.vim  zellner.vim
darkblue.vim  delek.vim    elflord.vim  koehler.vim  murphy.vim   peachpuff.vim  ron.vim     torte.vim
</pre>
]]></description>
<dc:subject>viエディター</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2008-03-22T22:05:39+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/perl_9.html">
<title>perlの特殊リテラル</title>
<link>http://www.ksknet.net/perl/perl_9.html</link>
<description><![CDATA[<p>perlには以下のような特殊リテラルがある。</p>

<p>__FILE__　現在のファイル名<br />
__LINE__ 現在の行番号<br />
__PACKAGE_　現在のパッケージ名</p>

<p>詳しくはperldocでperldata(Special Literals)を参照のこと。</p>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2008-03-21T00:33:55+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/cat14/firefox_1.html">
<title>Firefoxでブックマークの保存先変更</title>
<link>http://www.ksknet.net/cat14/firefox_1.html</link>
<description><![CDATA[<p>Firefoxでブックマークファイルの保存先を変更するには、prefs.jsファイルと同じ場所にuser.jsファイルを作成し、以下の一行を追加すればよい。</p>

<pre>user_pref("browser.bookmarks.file", "E:\\Share\\bookmarks.html");</pre>

<p>[参考サイト]<br />
<a href="http://firefox.geckodev.org/index.php?%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB">プロファイル - Mozilla Firefox まとめサイト</a></p>]]></description>
<dc:subject>その他</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2008-03-20T23:13:39+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/xmlrpclite.html">
<title>XMLRPC::Lite</title>
<link>http://www.ksknet.net/perl/xmlrpclite.html</link>
<description><![CDATA[Daemon server

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

use XMLRPC::Transport::HTTP;

my $daemon = XMLRPC::Transport::HTTP::Daemon
	-> new (LocalPort => 8080)
	-> dispatch_to('KSKNET')
;
$daemon->handle;

package KSKNET;
sub hello {
	return "Hello World!\n";
}
</pre>


CGI server

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


use XMLRPC::Transport::HTTP;

my $server = XMLRPC::Transport::HTTP::CGI->dispatch_to('KSKNET')->handle;

package KSKNET;

sub hello {
	return "Hello World!\n";
}
</pre>

Client

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

use strict;
use warnings;
use XMLRPC::Lite;

my $result = XMLRPC::Lite->proxy("http://localhost:8080/")->call("KSKNET.hello")->result;
print $result;
</pre>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2007-10-21T21:08:02+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/httprequestcomm.html">
<title>HTTP::Request::Common</title>
<link>http://www.ksknet.net/perl/httprequestcomm.html</link>
<description><![CDATA[<p>HTTP::Request::Commonを使えば簡単にリクエストデータを生成することが可能。</p>

<p><br />
<div class="terminal">#!/usr/bin/perl</p>

<p><br />
use LWP::UserAgent;<br />
use HTTP::Request::Common;<br />
use strict;<br />
use warnings;</p>

<p><br />
my $url = 'http://webservices.amazon.co.jp/onca/xml';<br />
my $ua = new LWP::UserAgent;<br />
my $access_key = 'your_access_key';<br />
my $affiliate_tag = 'your_affiliate_tag';</p>

<p><br />
my $parameter = [<br />
    Service =&gt; 'AWSECommerceService',<br />
    Operation =&gt; 'ItemSearch',<br />
    SearchIndex =&gt; 'Books',<br />
    ResponseGroup =&gt; 'Medium',<br />
    Condition =&gt; 'All',<br />
    Availability =&gt; 'Available',<br />
    MerchantId =&gt; 'All',<br />
    AWSAccessKeyId =&gt; $access_key,<br />
    AssociateTag =&gt; $affiliate_tag,<br />
    Keywords =&gt; $ARGV[0],<br />
];</p>

<p>my $request = POST($url, $parameter);<br />
my $response = $ua-&gt;request($request);</p>

<p><br />
if ($response-&gt;is_success) {<br />
    print $response-&gt;content;<br />
}<br />
</div><br />
</p>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2007-10-08T20:35:17+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/lwpuseragent_we.html">
<title>LWP::UserAgent - Webデータの取得</title>
<link>http://www.ksknet.net/perl/lwpuseragent_we.html</link>
<description><![CDATA[<p>LWP::UserAgentを利用すればWEBデータを取得できます。GETメソッドのみでしたらLWP::Simpleの方が簡単です。ちなみにhttpsでの取得も可能ですが、Crypt::SSLeayがインストールされている必要がある。</p>

<p><br />
[サンプル]<br />
<div class="terminal">#!/usr/bin/perl</p>

<p><br />
use LWP::UserAgent;</p>

<p><br />
my $ua = LWP::UserAgent-&gt;new;</p>

<p><br />
#タイムアウトを設定<br />
$ua-&gt;timeout(10);</p>

<p><br />
#ユーザエージェントを設定<br />
$ua-&gt;agent('Mozilla');</p>

<p><br />
#GET、PUT、POST、DELETE、HEADのいずれかを指定（httpsの場合はhttpsにするだけ）<br />
my $req = HTTP::Request-&gt;new(GET =&gt; 'http://www.ksknet.net');</p>

<p><br />
#リファラーを設定<br />
$req-&gt;referer('http://referrer.ksknet.net');</p>

<p><br />
#リクエスト結果を取得<br />
#requestメソッドではリダイレクトも自動的に処理するため、そうしたくない場合はsimple_requestメソッドを使用するとよい。<br />
my $res = $ua-&gt;request($req);</p>

<p><br />
#is_successの他にis_redirect、is_errorなどがある(is_redirectを判定する場合、simple_requestメソッドを使用)<br />
if ($res-&gt;is_success) {<br />
  print $res-&gt;content;<br />
}</p>

<p><br />
else{<br />
  print $res-&gt;status_line . &quot;\n&quot;;<br />
}</p>

<p><br />
=pod<br />
print $res-&gt;header(&quot;Content-Type&quot;) . &quot;\n&quot;;<br />
print $res-&gt;status_line . &quot;\n&quot;;<br />
print $res-&gt;code . &quot;\n&quot;;<br />
print $res-&gt;header(&quot;Server&quot;) . &quot;\n&quot;;</p>

<p>#SSLの場合以下も取得可能<br />
print $response-&gt;header(&quot;Client-SSL-Cipher&quot;) . &quot;\n&quot;;<br />
print $response-&gt;header(&quot;Client-SSL-Cert-Subject&quot;) . &quot;\n&quot;;<br />
print $response-&gt;header(&quot;Client-SSL-Cert-Issuer&quot;) . &quot;\n&quot;;<br />
print $response-&gt;header(&quot;If-SSL-Cert-Object&quot;) . &quot;\n&quot;;<br />
=cut</div></p>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2005-02-04T13:05:53+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/linux/post_182.html">
<title>コンソールの設定</title>
<link>http://www.ksknet.net/linux/post_182.html</link>
<description><![CDATA[<p>Linuxでのコンソール設定方法。</p>

<p><br />
1. /etc/inittab を編集し、下記一行を追加<br />
<div class="terminal">s0:2345:respawn:/sbin/agetty -L /dev/ttyS0 9600 vt100</div></p>

<p><br />
2. initコマンドで設定を反映<br />
<div class="terminal">init q</div></p>

<p><br />
注意: コンソールにrootユーザからはログインできないので注意すること。これは/etc/securettyにttyS0が記載されていないことによるものです。</p>]]></description>
<dc:subject>Linux</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2007-10-08T16:41:14+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/post_181.html">
<title>標準入力の内容を標示しないようにする</title>
<link>http://www.ksknet.net/perl/post_181.html</link>
<description><![CDATA[<p>パスワードなどを入力させる場合、端末に内容を表示させないようにするにはsttyコマンドでechoを無効にすればよい。</p>

<div class="terminal"><pre>
system("stty -echo");
print "Enter your password: ";
chomp($passwd = <STDIN>);
print "\n";
system("stty echo");
</pre></div>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2007-06-24T22:48:45+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/linux/syslog.html">
<title>syslog - ログの一括管理</title>
<link>http://www.ksknet.net/linux/syslog.html</link>
<description><![CDATA[<p>syslogはリモートサーバのログを受け取ることも可能です。リモートサーバのログを受け取れるようにするにはまず/etc/sysconfig/syslogを以下のようにします。 </p>

<p><br />
<div class="terminal">SYSLOGD_OPTIONS=&quot;-m 0 -r&quot; </div></p>

<p><br />
編集後syslogdを再起動すればリモートからのログを受け付けるようになります。使用するポートはudpの514番になりますので、iptablesなどでフィルタリングをしている場合にはこちらをまずあけます。 </p>

<p><br />
ログを送る側のサーバには/etc/syslog.confに以下のように記述します。 <br />
<div class="terminal"><pre>*.*                     @192.168.100.1 </pre></div></p>

<p><br />
これで全てのログがホスト192.168.100.1のシスログサーバに飛ぶようになります。ただsyslogサーバ側ではホストごとにログを振り分ける機能がないので、syslog-ngなどの使用を検討しましょう。 </p>

<p><br />
[豆知識] - syslogは元々sendmailに作られたものですが、その後アプリケーションに使用されるようになりました。</p>]]></description>
<dc:subject>Linux</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2005-08-09T14:59:40+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/dbi/sqlabstract.html">
<title>SQL::Abstract</title>
<link>http://www.ksknet.net/dbi/sqlabstract.html</link>
<description><![CDATA[<p>SQL::AbstractはPerlのデータ構造からSQL文を自動で作成してくれるモジュールになります。</p>

<p><br />
[例 - INSERT文]<br />
<div class="terminal">use SQL::Abstract;</p>

<p>my $data = {<br />
	name =&gt; 'hoge',<br />
	value =&gt; 'hoge<br />
};</p>

<p>my $sql = SQL::Abstract-&gt;new;<br />
my($statement, @bind) = $sql-&gt;insert('table_name', $data);<br />
my $sth = $dbh-&gt;prepare($statement);<br />
$sth-&gt;execute(@bind) || warn $DBI::errstr;<br />
$sth-&gt;finish();</div></p>

<p><br />
select, update, delete時にWHERE句を入れる場合は以下のようにしてhash refにて値を渡してください。</p>

<div class="terminal">my ($statement, @bind) = $sql-&gt;delete( 'table_name', { id =&gt; 1111 } );</div>]]></description>
<dc:subject>DBI</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2007-01-29T17:47:40+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/postfix/postfix_relayho.html">
<title>postfix relayhost</title>
<link>http://www.ksknet.net/postfix/postfix_relayho.html</link>
<description><![CDATA[<p>ローカル宛以外のメールを別のサーバ経由にて送信する場合にはmain.cf内のrelayhostにて指定すればよい。メールサーバを複数台で運用している場合などはここでゲートウェイとなるメールサーバ名を記述します。</p>

<p><br />
[例]<br />
<div class="terminal">relayhost = [mailgw.ksknet.net]<br />
relayhost = [192.168.1.2]</div></p>

<p><br />
特定のホスト宛のメールのみ、別のメールサーバ経由で送る場合にはtransportを使用してください。</p>

<p><br />
[関連記事]<br />
<a href="http://www.ksknet.net/postfix/postfix_transpo.html">postfix - transport</a></p>

<p><br />
</p>]]></description>
<dc:subject>postfix</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2007-01-24T12:37:03+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/javascript/innertext.html">
<title>innerText</title>
<link>http://www.ksknet.net/javascript/innertext.html</link>
<description><![CDATA[<p>innerTextは指定したタグ間の内容を取得します。また値を設定することで、テキストを書き換えることが可能。innerTextはテキスト文として値を返すためにHTMLタグはそのまま表示されます。HTMLタグを有効にしたい場合にはinnerHTMLを使用してください。またFirefoxではinnerTextが使えないので、textContentを使用するか、innerHTMLにて代用すること。</p>

<p><br />
[例]<br />
&lt;div id=&quot;testResult&quot;&gt;Test結果&lt;/div&gt;</p>

<p><br />
var testResult = document.getElementById('testResult');<br />
alert(testResult);<br />
testResult.innerText = '書き換え';</p>]]></description>
<dc:subject>JavaScript</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2007-01-19T11:50:29+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/vi/post_121.html">
<title>viエディターでの画面分割</title>
<link>http://www.ksknet.net/vi/post_121.html</link>
<description><![CDATA[<p>viでは画面を分割して表示することができます。vi起動中に:splitもしくは:spとすることで画面を上下に分割できます。またすでに開いているファイルの画面を分割するだけでなく、複数ファイルを分割して開くことも可能です。その場合には:spのあとにファイル名を続けて入力します。また画面を上下に分割するのではなく、左右に分割することもできます。画面を縦に分割するには:vsplitコマンドを使用します。</p>

<p><br />
[書式]<br />
:sp 画面を上下に分割<br />
:sp ファイル名 指定したファイルを分割した画面に表示<br />
Ctrl-w p 画面間の移動<br />
Ctrl-w k 上の画面に移動<br />
Ctrl-w j 下の画面に移動<br />
Ctrl-w l 右の画面に移動<br />
Ctrl-w h 左の画面に移動</p>

<p>Ctrl-w + カーソルのある画面を一行分大きくする<br />
Ctrl-w + カーソルのある画面を一行分小さくする<br />
Ctrl-w = 画面のサイズを同じにする<br />
</p>]]></description>
<dc:subject>viエディター</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2005-07-19T15:40:35+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/templatetoolkit.html">
<title>Template::Toolkit</title>
<link>http://www.ksknet.net/perl/templatetoolkit.html</link>
<description><![CDATA[<p>Template::Toolkitは強力なテンプレート処理システムで<a href="http://www.ksknet.net/cgi/htmltemplate.html">HTML::Template</a>や<a href="http://www.ksknet.net/perl/texttemplate.html">Text::Template</a>などといった他のテンプレート処理モジュールより汎用性の高い処理をすることが可能です。Template::Toolkitではテンプレートファイル内の変数置換だけでなく、テンプレートの中でTT2言語と呼ばれる言語で簡単なプログラムを書いたり、DBIなどのプラグインを使用してデータベースへの接続をすることも可能です。ただしプログラムとテンプレートを分けるメリットがなくなるので、極力プログラム本体はテンプレート外で処理することをお勧めします。</p>

<p><br />
テンプレートファイル中の変数は[% %]内に記述します。</p>

<p><br />
[% domainname %]</p>

<p><br />
プログラム内からこのテンプレートファイルを読み込み変数を置換するには以下のようにします。</p>

<p><br />
<div class="terminal">use Template;</p>

<p><br />
my $tt = Template-&gt;new( { INCLUDE_PATH =&gt; '/var/www/html/template' } );<br />
my $vars = { domainname =&gt; 'ksknet.net' };<br />
$tt-&gt;process('template.txt', $vars ) || die $tt-&gt;error(), &quot;\n&quot;;</div></p>

<p><br />
$tt-&gt;processでは処理結果をSTDOUTに出力します。処理が成功すると1を返し、失敗するとundefを返します。そのため$tt-&gt;processの結果を変数に入れても1かundefしか返りません。結果を変数に入れるには以下のようにしてください。</p>

<div class="terminal">my $result;
$tt-&gt;process('template.txt', $vars, \$result ) || die $tt-&gt;error(), &quot;\n&quot;;
print $result;</div>

<p><br />
また出力をサブルーチンに渡したりファイルに出力することも可能です。</p>

<p><br />
[補足]<br />
ハッシュへのアクセスにはドット記法を用います。</p>

<p>[% customer.name %]</p>

<p><br />
[参考資料]<br />
<a href="http://search.cpan.org/~abw/Template-Toolkit-2.15/lib/Template/Manual.pod">Template::Manual</a></p>

<p><br />
</p>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2006-12-15T11:04:13+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/linuxjq/lastcomm.html">
<title>lastcomm - コマンドの実行履歴を参照</title>
<link>http://www.ksknet.net/linuxjq/lastcomm.html</link>
<description><![CDATA[<p>lastcommコマンドではhistoryコマンドよりも詳細なコマンド履歴を見ることができます。このコマンドはprocess accountingによって記録されたファイル 　(/var/account/acct)を参照するため、process accoutingがonになっていないと使用できません。またログがかなり誇大化するため、ロテート処理をきちんとすること。</p>

<p><br />
LinuxやFreeBSDでprocess accountingを有効にするにはそれぞれ以下のようにします。</p>

<p><br />
[Linux]<br />
<div class="terminal">/etc/rc.d/init.d/psacct start</div></p>

<p><br />
[FreeBSD]<br />
/etc/rc.conf に以下の一行を追加してから、/etc/rc.d/accounting startで起動。</p>

<p><br />
<div class="terminal">accounting_enable=&quot;YES&quot;<br />
/etc/rc.d/accounting start</div></p>]]></description>
<dc:subject>Linuxコマンド(J〜Q)</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2006-12-25T19:12:42+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/qmail/post_147.html">
<title>qmHandle - qmailでのキューの処理</title>
<link>http://www.ksknet.net/qmail/post_147.html</link>
<description><![CDATA[<p>qmailでキューの処理をするにはqmHandleというスクリプトを使用します。qmHandleはsourceforgeよりダウンロードできます。使用前にエディタでqmHandleを開き、qmailの起動と停止に関する行を、環境に合わせて編集、もしくはコメントをはずします。</p>

<p><br />
#FreeBSDの場合は以下の部分のコメントをはずす<br />
<div class="terminal">my ($stopqmail) = '/usr/local/etc/rc.d/qmail.sh stop';<br />
my ($startqmail) = '/usr/local/etc/rc.d/qmail.sh start';</div></p>

<p><br />
[書式] qmHandle オプション</p>

<p><br />
[主なオプション]<br />
-a すぐにキューの再配送を試みる<br />
-L ローカルキューの一覧を表示<br />
-R リモートキューの一覧を表示<br />
-mN メッセージ番号Nのメッセージを表示<br />
-dN メッセージ番号Nのメッセージを削除<br />
-D すべてのキューの削除</p>

<p><br />
[使用例]<br />
すべてのキューを削除します。<br />
<div class="terminal">qmHandle -D</div></p>

<p><br />
</p>]]></description>
<dc:subject>Qmail</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2006-01-05T18:00:10+09:00</dc:date>
</item>
<item rdf:about="http://www.ksknet.net/perl/keys.html">
<title>keys - ハッシュからキーを取り出すには</title>
<link>http://www.ksknet.net/perl/keys.html</link>
<description><![CDATA[<p>ハッシュからキーを取り出すにはkeysを使用します。</p>

<p><br />
[使用例]</p>

<p><br />
#環境変数からキーを取り出し、ソートした後、値を取り出します<br />
<div class="terminal">foreach my $key (sort keys %ENV) {<br />
print &quot;$key: $ENV{$key}&lt;BR&gt;&quot;;<br />
}</div></p>]]></description>
<dc:subject>Perl</dc:subject>
<dc:creator>keisuke</dc:creator>
<dc:date>2004-08-19T10:55:18+09:00</dc:date>
</item>


</rdf:RDF>