<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
   <channel>
      <title>あんじーのテクニカルブログ</title>
      <link>http://blog.development-network.net/ung/</link>
      <description>技術評価やIT系の情報などについて個人的な意見をつらつらと・・・
　携帯でもご覧いただけます。モバイルサイトのURLを携帯に送る</description>
      <language>ja</language>
      <copyright>Copyright 2010</copyright>
      <lastBuildDate>Tue, 20 Jul 2010 22:32:43 +0900</lastBuildDate>
      <generator>http://www.sixapart.com/movabletype/?v=4.2-ja</generator>
      <docs>http://blogs.law.harvard.edu/tech/rss</docs> 

      
      <item>
         <title>Webカメラを買う</title>
         <description><![CDATA[Skypeを使ってテレビ会議をしたいと思って、いろいろ探し回って評判のよさそうな<a href="http://price.zaiteku.jp/products/detail/B002HK3LR0">ロジクールのC500</a>を購入した。

使ってみると特に設定する必要もなくSkypeにてカメラを利用することができた。マイクが内蔵されているのでヘッドセットも不要で、130万画素という画質はデジカメで考えるとかなり少ないがガラスレンズできれいに映っており、またオートフォーカスになっているのでピントを合わせる必要がない点が非常に使いやすい。

ノートパソコンのような液晶ディスプレイでも簡単に備え付けられるので使い勝手はよく3,000円程度の金額にしては非常にコストパフォーマンスに優れた良い製品だと感じた。]]></description>
         <link>http://blog.development-network.net/ung/2010/07/web_4.html</link>
         <guid>http://blog.development-network.net/ung/2010/07/web_4.html</guid>
         <category>時事ネタ</category>
         <pubDate>Tue, 20 Jul 2010 22:32:43 +0900</pubDate>
      </item>
      
      <item>
         <title>LPIC-2(201)試験受験</title>
         <description>2/13にLPIC-2(202)試験を受験してから受験する時間を取れず、ずいぶん時間が経ってしまった。今回は勉強を十分にしないまま、先に試験日程を決めたばっかりに、当日ひたすら暗記を繰り返す羽目になりました。 

教科書や問題集に出ていた類似問題が半分くらいと、全く見たことのないような問題が半分くらいあって、正直落ちたと思いました。 

受験結果は、550点でなんとか合格。 
Linux Kernel････････････････50% 
System Startup･･････････････50% 
Filesystem and Devices･･････60% 
Advanced Storage Device Administration･･83% 
Networking Configuration････53% 
System Maintenance･･････････85% 
Domain Name Server･･････････83% 

恥ずかしながら、wallコマンドなんて初めて知りました。
また、e2labelコマンドについても問われていました。 

どの試験もすれすればかりでしたが、これでなんとかLPIC-2認定となりました。</description>
         <link>http://blog.development-network.net/ung/2010/06/lpic-2201.html</link>
         <guid>http://blog.development-network.net/ung/2010/06/lpic-2201.html</guid>
         <category>LPIC2(201)</category>
         <pubDate>Sun, 27 Jun 2010 22:35:33 +0900</pubDate>
      </item>
      
      <item>
         <title>データベーススペシャリスト試験結果</title>
         <description>今日は４月に受験した情報処理技術者試験の合格発表の日でした。 
解答速報を見る限りでは、午後Iが危ないとの予想でしたが、、、 

受験番号 DB329-XXXX の方は， 合格 です 
午前Ⅰ得点 ***.**点 
午前Ⅱ得点 68.00点 
午後Ⅰ得点 82点 
午後Ⅱ得点 62点 

３回目の受験で何とか合格できました。 
午後Iは問題なく、午後IIが合格ラインすれすれでした。 

自分の予想と実態が今回もあっていないだけに今後も試験勉強を計画的に行って、確実に合格できるようにしたいと思います。</description>
         <link>http://blog.development-network.net/ung/2010/06/post_254.html</link>
         <guid>http://blog.development-network.net/ung/2010/06/post_254.html</guid>
         <category>データベーススペシャリスト</category>
         <pubDate>Sat, 26 Jun 2010 22:33:28 +0900</pubDate>
      </item>
      
      <item>
         <title>サーバーサイドJavaを始めるために</title>
         <description><![CDATA[仕事の都合上Java言語をようやく勉強することになった。
大学時代でswingなどを少しやったもののほぼサーバーサイドJavaは知識ゼロの状態である。

インターネットで調べてみるもののつかみが分からない場合には書籍に当たるのが時間を無駄にせずに済む。

いろんな書籍を探してみたが、手っ取り早く勉強するためには、<a href="http://price.zaiteku.jp/products/detail/4798017752">Eclipse WTPではじめるサーバーサイドJava入門―Eclipse 3.3/WTP 2.0対応</a>が分かりやすいように感じていて、今学習を進めている。

Eclipseを日本語化した<a href="http://mergedoc.sourceforge.jp/index.html#/pleiades_distros3.5.html">Pleiades 3.5</a>を使っていると書籍のハードコピーと異なる部分があって戸惑うことがあるが、流れをつかんでしまえば体系的に学習できると思う。]]></description>
         <link>http://blog.development-network.net/ung/2010/06/java_1.html</link>
         <guid>http://blog.development-network.net/ung/2010/06/java_1.html</guid>
         <category>Java</category>
         <pubDate>Tue, 01 Jun 2010 00:00:52 +0900</pubDate>
      </item>
      
      <item>
         <title>Content-Typeヘッダフィールドは必須か？</title>
         <description><![CDATA[Webプログラミングをする場合には、必ずと言っていいほど意識しなければならないメディアタイプや文字コードではあるが、Content-Typeヘッダフィールドを制御しない場合には、MIMEタイプをWebサーバーで判断し、text/plainやtext/htmlの場合においてはデフォルト文字コード設定(ApacheでいうところのAddDefaultCharsetディレクティブ)によって出力がされる。

ただ、今日見たWebアプリケーションプログラムは、LocationヘッダフィールドによりリダイレクトしているページにおいてContent-Typeヘッダフィールドの出力なしにボディーにデータが書き込みされていたので、RFCに違反しているのかどうか調べてみた。

対応するRFCは2068(ハイパテキスト転送プロトコル HTTP/1.1)になる。
該当する項目は、<a href="http://www.y-adagio.com/public/standards/tr_http11_2068/http.htm#7">7.2.1 型</a>にある
<blockquote>実体本体を含むどんなHTTP/1.1メッセージも，その実体のメディア型を定義するContent-Typeヘッダフィールドを含むことが望ましい。</blockquote>
であり、強制されるものではないようである。したがって、受け手(ブラウザ)はContent-Typeヘッダフィールドがない場合でもメディア型を推定しようとしてよいのである。しかし、こちらも推定しなければならないわけではないので、結果的には正しく通信できない恐れがあるということを示しているようだ。

やはりContent-Typeヘッダフィールドは通信トラブルを避けるためにも「ほぼ」必須のヘッダフィールドであるといえる。]]></description>
         <link>http://blog.development-network.net/ung/2010/05/content-type.html</link>
         <guid>http://blog.development-network.net/ung/2010/05/content-type.html</guid>
         <category>プログラミング</category>
         <pubDate>Mon, 31 May 2010 23:47:11 +0900</pubDate>
      </item>
      
      <item>
         <title>携帯サイトをキャッシュする</title>
         <description><![CDATA[<a href="http://price.zaiteku.jp/m/">財テク.jpのモバイルサイト</a>は、CakePHPにKtai Libraryを使って動かしているのだが、Viewキャッシュをしてしまうと、キャリアごとの絵文字に対応できないことと、PCサイトがUTF-8だった場合に、headerでのcharset指定がUTF-8となってしまうため、キャッシュされたページは文字化けしてしまう可能性がある。

前者については絵文字を利用しない方法で対応可能だが、後者についてはキャッシュ済みの場合には、controllerすら通らず、エンコード指定を切り換える対応方法が分からなかったため、しばらくキャッシュさせないようにしていたが、データが多くなってくるとレスポンスが悪くなってきているため、キャッシュの方法を考えてみた。

Viewキャッシュが無理な場合には、modelキャッシュということで、<a href="http://www.exgear.jp/blog/2008/11/cakephp12-behavior%E3%81%A7%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%82%92%E8%A1%8C%E3%81%86/">CakePHP1.2 Behaviorでモデルのメソッドキャッシュを行う</a>を使って、modelでキャッシュさせることにした。

結果的には、携帯サイトはmodelキャッシュ、PCサイトはmodelキャッシュ+ビューキャッシュとなりキャッシュによる効果は高くなったように思う。]]></description>
         <link>http://blog.development-network.net/ung/2010/05/post_253.html</link>
         <guid>http://blog.development-network.net/ung/2010/05/post_253.html</guid>
         <category>cakePHP</category>
         <pubDate>Sun, 30 May 2010 23:31:10 +0900</pubDate>
      </item>
      
      <item>
         <title>kernelを再構築する</title>
         <description><![CDATA[linux kernelの最新版は2.6.33である。
ReadHatやCentOS、Fedoraなどのディストリビューションにおいてカーネルをバージョンアップするなら間違いなく yum update kernelをするだろう。今までもそうしてきて困ったことはない。

しかしながら、LPIC試験対策ということもあり、CentOS(kernel 2.6.9)においてバニラカーネルを使って再構築をした奮闘記について記録しておきたい。今後も再構築するなんてことはほとんどないと思われるが。。。（笑

まずは、最新バージョン（2.6.33）を使っていきなり再構築してみた。

make oldconfigコマンドを実行すると新機能が多すぎるのか、やたら質問攻めにされ、すべてEnterキーで回避した。ところが、makeコマンドの結果次のようになってエラーになってしまった。

<blockquote>  CC [M]  drivers/message/fusion/mptsas.o
drivers/message/fusion/mptsas.c: In function `mptsas_port_delete':
drivers/message/fusion/mptsas.c:106: sorry, unimplemented: inlining failed in call to 'mptsas_set_rphy': function body not available
drivers/message/fusion/mptsas.c:462: sorry, unimplemented: called from here
make[3]: *** [drivers/message/fusion/mptsas.o] Error 1
make[2]: *** [drivers/message/fusion] Error 2
make[1]: *** [drivers/message] Error 2
make: *** [drivers] Error 2</blockquote>

<a href="http://mekaananth.blogspot.com/2009/09/how-to-compile-linux-kernel-2631.html">http://mekaananth.blogspot.com/2009/09/how-to-compile-linux-kernel-2631.html</a>にあるようにどうやらmptsas.cがバグっているらしい。mptsas_set_rphy関数の実態の場所を変えて再度makeしてみたが、

<blockquote>  LD      .tmp_vmlinux1
drivers/built-in.o(.init.text+0x3bce): In function `con_init':
include/trace/events/kmem.h:81: undefined reference to `.L1496'
make: *** [.tmp_vmlinux1] Error 1</blockquote>

コードを変更してもうまくいかなかったので、あきらめた。

次に2.6.30.10のソースを入手して同様にmakeしてみたが、これもうまくいかなかった。

<blockquote>ERROR: ".L193" [drivers/usb/serial/kl5kusb105.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2</blockquote>

だめもとで、2.6.10を入手して同様にやってみたところ、問題なくコンパイルできた。
make oldconfig時に聞いてくる項目がなかった。

次に2.6.20を入手して同様にやってみたところ、問題なくコンパイルでき、2.6.10と同様にmake oldconfig時に聞いてくる項目がなかった。

ただ、問題なくコンパイルできたはずだったのだが、再起動したらなぜか2.6.10が起動してしまう。調べてみたら、/etc/grub.confには設定がされていたもののdefaultが0から1に変更されており2.6.10が起動してしまうことが分かった。

default設定を変更して、2.6.20を起動させたが、pcnet32がないので、eth0の起動に失敗していた。

lsmodをしても一切モジュールがロードされておらず、
/lib/modules/2.6.20/kernel/
の中身は空っぽだった。

どうやら make oldconfigをすると
.configファイルが
CONFIG_PCNET32=m
から
CONFIG_PCNET32 is not set
に変更されてしまうなどモジュール設定が正しく引き継がれない（理由はよくわからないが）ようだったので、2.6.10の.configファイルをコピーしてきて、make menuconfigからGUI画面を呼び出したうえで、.configファイルを読み込ませてそのまま保存した。

その上で、
make
make modules_install
として /lib/modules/2.6.20/kernel/ をみると
正しくモジュールが入っているようだったので、
make install
を実行して、再起動して、2.6.20まで構築することができた。

カーネルをコンパイルするのに仮想環境ということもあり1時間程度かかってしまう。次の機会に 2.6.20 から 2.6.33 まであげてみたいと思う。]]></description>
         <link>http://blog.development-network.net/ung/2010/03/kernel.html</link>
         <guid>http://blog.development-network.net/ung/2010/03/kernel.html</guid>
         <category>LPIC2(201)</category>
         <pubDate>Sun, 14 Mar 2010 23:34:51 +0900</pubDate>
      </item>
      
      <item>
         <title>VMWareが遅い</title>
         <description>VMWareをはじめ、仮想環境でいろんな環境を試せるようになったことはエンジニアにとって非常に大きい。今まではデュアルブートにして試したり、新しいハードウエアを購入したりといろんな面で負担が大きかったが、スナップショットを使えばいつでもある時点に戻ることができるし、環境のコピーもファイルベースになっているから開発側としても保守をする立場から見ても非常に運用が簡単である。

ただ、万能な仮想環境にみえるが、最近VMWare Server 2.0を使っていてやけに遅く感じることがある。ホストOSのCPUやメモリはほとんど使われていないのにハードディスクのアクセスがやけに多いのだ。そのせいで、ゲストOSがビジーの場合には、ホストOSもフリーズ気味になることがある。

調べてみるとゲストOSでディスクアクセスがされた場合に、ホストOSにて管理しているハードディスクのファイルに直接読み書きがされてしまうために、特に書き込み頻度が多い環境だと、断片化が発生してしまう。そのせいで、運用時間が長くなればなるほどどんどん遅くなるといった現象が発生するらしい。（自分はてっきりメモリに格納しているものだと思っていたのだが。。。）

これを改善するためには、VMXファイルに
host.TSC.noForceSync = &quot;TRUE&quot;
mainMem.useNamedFile = &quot;FALSE&quot;
MemTrimRate = &quot;0&quot;
を設定してあげればよいらしい。デメリットとしてはレジュームする際に時間がかなりかかるようになってしまうことだ。LinuxOSではうまく機能してくれないという情報もあり、簡単に見える仮想環境も、実はパラメータチューニングが重要なのだと改めて思い知らされた。

そのほか、ゲストOSがWindowsの場合にはハードウエアアクセラレータが無効になっているために描画が遅くなるといった問題があるので、次の手順にて設定変更することでゲストOSの応答性能が改善される。
１．画面のプロパティ - 設定タブを開き詳細設定ボタンをクリック
２．トラブルシューティングタブを開きハードウェアアクセラレータを最大にする

いずれもVMWare社の情報ではないので、実稼働している環境に試す場合には、必ずテスト環境にて動作を確認してほしい。</description>
         <link>http://blog.development-network.net/ung/2010/02/vmware_1.html</link>
         <guid>http://blog.development-network.net/ung/2010/02/vmware_1.html</guid>
         <category>システム</category>
         <pubDate>Fri, 26 Feb 2010 23:44:27 +0900</pubDate>
      </item>
      
      <item>
         <title>LPIC2(202)試験受験</title>
         <description><![CDATA[試験を受けてきました。正直受験中は勉強していた分野ながら深く突っ込まれる質問が多く愕然としていましたが、冷静になって解いていった結果10問程度が自信がない状態でした。

やはり問題集にも<a href="http://price.zaiteku.jp/products/detail/479811930X">Linux教科書 LPICレベル2</a>にも類似問題がないものもあって、正直LPIC1よりもかなり手ごわい感覚があった。

受験結果は、今回も580点で無事合格。
Web Serices････････････････83%
File Sharing････････････････87%
Network Client Management･･42%
E-Mail Services･････････････28%
System Security･････････････69%
Troubleshooting････････････68%

E-Mail ServicesではPostfixに関連する部分を深く突っ込まれ28%という恐ろしい正答率だったが、ウエイトが大きかったApacheとSamba、NFSで助けられたような気がする。

201試験を合格できれば、LPICレベル2認定になる。]]></description>
         <link>http://blog.development-network.net/ung/2010/02/lpic2202.html</link>
         <guid>http://blog.development-network.net/ung/2010/02/lpic2202.html</guid>
         <category>LPIC2(202)</category>
         <pubDate>Sat, 13 Feb 2010 22:41:10 +0900</pubDate>
      </item>
      
      <item>
         <title>LPI問題集</title>
         <description><![CDATA[LPIC Level2が2009年4月より改訂されてRelease2となったものに対応した<a href="http://price.zaiteku.jp/products/detail/4844327321">問題集</a>。
電車で持ち運べる薄さなので、まとまった試験勉強の時間が取れない場合でも利用できる本。
また、問題のページと答えのページがまとまって別々の場所にあるので、答えを隠さないでもよい点が工夫されていると思う。]]></description>
         <link>http://blog.development-network.net/ung/2010/02/lpi.html</link>
         <guid>http://blog.development-network.net/ung/2010/02/lpi.html</guid>
         <category>LPIC2(201)</category>
         <pubDate>Mon, 08 Feb 2010 01:00:52 +0900</pubDate>
      </item>
      
      <item>
         <title>OpenSSH</title>
         <description>サーバーの設定ファイル　/etc/ssh/sshd_config
#SSH Version2のみ
Protocol 2
#接続を許可するユーザー
AllowUsers hogehoge
#接続を許可するグループ
AllowGroups member
#空パスワードを禁止
PermitEmptyPasswords no
#Rootログインを禁止
PermitRootLogin no

ユーザーの鍵情報（秘密鍵／公開鍵）
SSH Version1(RSA1)　identity／identity.pub
SSH Version2(DSA)　id_dsa／id_dsa.pub
SSH Version2(RSA)　id_rsa／id_rsa.pub
→~/.ssh/ 配下に保存される
公開鍵をSSH接続先サーバーのアカウント ~/.ssh/authorized_keys に追記するとパスワード認証が不要となる

サーバーのカギ情報（秘密鍵／公開鍵）
SSH Version1(RSA1)　ssh_host_key／ssh_host_key.pub
SSH Version2(DSA)　ssh_host_dsa_key／ssh_host_dsa_key.pub
SSH Version2(RSA)　ssh_host_rsa_key／ssh_host_rsa_key.pub
→/etc/ssh/ 配下に保存される</description>
         <link>http://blog.development-network.net/ung/2010/02/openssh_1.html</link>
         <guid>http://blog.development-network.net/ung/2010/02/openssh_1.html</guid>
         <category>LPIC2(202)</category>
         <pubDate>Sun, 07 Feb 2010 13:00:51 +0900</pubDate>
      </item>
      
      <item>
         <title>sysctlコマンド</title>
         <description>/proc/sys/ 配下のパラメータを表示したり、変更したりすることができるコマンド

sysctl -w net.ipv4.ip_forward = 1
→ echo 1 &gt; /proc/sys/net/ipv4/ip_forward と同じ
IPパケット転送を有効にする

sysctl -w net.ipv4.icmp_echo_ignore_all = 1
→echo 1 &gt; /proc/sys/net/ipv4/icmp_echo_ignore_all と同じ
ICMP Echo Replyを応答しない

sysctl -w net.ipv4.icmp_echo_ignore_broadcasts = 1
ブロードキャスト宛ICMP Echo Requestに応答しない(Smurf攻撃を回避)

sysctl -w net.ipv4.tcp_syncookies = 1
SYN flood攻撃を回避

いずれも再起動すると無効となるため、継続的に利用する場合には、 /etc/sysctl.conf に記述が必要。</description>
         <link>http://blog.development-network.net/ung/2010/02/sysctl.html</link>
         <guid>http://blog.development-network.net/ung/2010/02/sysctl.html</guid>
         <category>LPIC2(202)</category>
         <pubDate>Sun, 07 Feb 2010 12:43:40 +0900</pubDate>
      </item>
      
      <item>
         <title>named.confのオプション</title>
         <description><![CDATA[よく使われるオプションについて

allow-query { <em>問い合わせを受け付けるIPアドレス</em>; };
allow-transfer { <em>ゾーン転送を受け付けるIPアドレス</em>; };

forwarders { <em>問い合わせ転送をするIPアドレス</em>; };
forward onlyもしくはforward firstを指定している場合において、自分で解決できない際に問い合わせを行うIPアドレス

問い合わせを行ったDNSサーバーが自分自身でゾーン情報を持っているか、もっておらず別のDNSサーバーへ問い合わせを受けて得られた回答なのかはdigオプションのflagsでわかる。

自分のDNSサーバーでYahooドメインについてDNS問い合わせを行った場合
dig @localhost yahoo.co.jp ns
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 11508
;; <u>flags: qr rd ra</u>; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2

YahooドメインのNSレコードでDNS問い合わせを行った場合
dig @dnsg01.yahoo.co.jp yahoo.co.jp ns
; (1 server found)
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6686
;; <u>flags: qr <strong>aa</strong> rd</u>; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 2

前者はflagsにaaはないが、後者には存在する。詳しいオプションの内容は<a href="http://www.syon.co.jp/syontech/tech002.html">digを使い倒そう</a>が詳しい。]]></description>
         <link>http://blog.development-network.net/ung/2010/01/namedconf.html</link>
         <guid>http://blog.development-network.net/ung/2010/01/namedconf.html</guid>
         <category>LPIC2(202)</category>
         <pubDate>Sun, 24 Jan 2010 10:19:39 +0900</pubDate>
      </item>
      
      <item>
         <title>/etc/aliases</title>
         <description>メールエイリアスの方法について

アカウント: 転送先ユーザー1, 転送先ユーザー2 ...
転送元アカウントはメールを受け取れない
転送先ユーザーはメールアドレスにすることで別ドメインにも転送ができる

アカウント: /path　指定したファイルにメッセージを追加
アカウント: |command　コマンドの標準入力にメッセージを転送
アカウント: :include:/path　指定したファイルにあるユーザーに転送する

ファイル名を変更した場合には、newaliasコマンドを実行する。(sendmailの場合には、sendmail -bi でも更新できる)
</description>
         <link>http://blog.development-network.net/ung/2010/01/etcaliases.html</link>
         <guid>http://blog.development-network.net/ung/2010/01/etcaliases.html</guid>
         <category>LPIC2(202)</category>
         <pubDate>Sun, 24 Jan 2010 10:01:43 +0900</pubDate>
      </item>
      
      <item>
         <title>routeコマンド</title>
         <description><![CDATA[静的ルートの追加と削除
route add -net ネットワークアドレス netmask サブネットマスク gw ゲートウェイアドレス
route del -net ネットワークアドレス netmask サブネットマスク gw ゲートウェイアドレス

<blockquote>Windowsの場合には
route add ネットワークアドレス mask サブネットマスク ゲートウェイアドレス<br>
route delete ネットワークアドレス<br>
となる</blockquote>

route コマンド(netstat -rでも同等)
Flags　U:経路が有効　H:宛先がホスト(pppなど)　G:ゲートウェイを使用　!:経路は無効

Linuxをルータで使用する場合
一時利用：echo 1 > /proc/sys/net/ipv4/ip_forward
恒久利用：/etc/sysconfig/network に FORWARD_IPV4=yes
とする。
]]></description>
         <link>http://blog.development-network.net/ung/2010/01/route.html</link>
         <guid>http://blog.development-network.net/ung/2010/01/route.html</guid>
         <category>LPIC2(202)</category>
         <pubDate>Sun, 24 Jan 2010 09:47:22 +0900</pubDate>
      </item>
      
   </channel>
</rss>
