<?xml version="1.0" encoding="UTF-8" ?><rdf:RDF 
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xml:lang="ja">
  <channel rdf:about="http://w.atwiki.jp/paladin/">
    <title>あるエンジニアの独り言</title>
    <link>http://w.atwiki.jp/paladin/</link>
    <atom:link href="https://w.atwiki.jp/paladin/rss10.xml" rel="self" type="application/rss+xml" />
    <atom:link rel="hub" href="https://pubsubhubbub.appspot.com" />
    <description>あるエンジニアの独り言</description>

    <dc:language>ja</dc:language>
    <dc:date>2010-01-20T23:15:51+09:00</dc:date>
    <utime>1263996951</utime>

    <items>
      <rdf:Seq>
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/39.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/38.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/37.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/36.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/35.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/34.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/33.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/32.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/31.html" />
                <rdf:li rdf:resource="https://w.atwiki.jp/paladin/pages/30.html" />
              </rdf:Seq>
    </items>
	
		
    
  </channel>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/39.html">
    <title>VMWareでホストOSとゲストOS間の通信ができない件</title>
    <link>https://w.atwiki.jp/paladin/pages/39.html</link>
    <description>
      **2010/01/17
VMWareにUbuntuLinuxをインストールしてちまちま遊んでいる。
そんな中、ひとつ問題に遭遇した。

ホストOS（WindowsXP SP3）とゲストOS（UbuntuLinux）の間で
TCP通信がうまくいかないのだ。

気になったので、色々調べてみた。

環境は以下のとおり。

A：ホストOS　WindowsXP　192.168.99.100
B：ゲストOS　UbuntuLinux　192.168.99.101　Apache2インストール済
C:外部OS　WindowsVista　192.168.99.102
※IPアドレスは仮。

状況としては

A　→　B　にPingは届く
A　→　B　にブラウザでアクセスはNG
C　→　B　にPingは届く
C　→　B　にブラウザアクセスでページ表示

Cからの通信が成功している以上、Bの問題では無いと思われる。
また、AからBにPingが届いており、http通信ができていないので
TCPレイヤでの問題であることが推量できる。

不思議だったので、WireSharkでパケットキャプチャしてみたところ

A　→　B　[SYN]
A　←　B　[SYN,ACK]
A　→　B　[ACK]
A　←　B　[SYN,ACK]
A　←　B　[SYN,ACK]
A　←　B　[SYN,ACK]
・・・

ざっくり、上記のような通信状態になっていた。
つまり、3Wayハンドシェイクがうまくいっていない。
確定的な裏までは取り方が思いつかないが、どうも下記のような状態に見える。
１．AからBへの[SYN]は&quot;届いている&quot;
２．BからAへの[SYN,ACK]は&quot;送信されている&quot;
３．AからBへの[ACK]は&quot;送信されている&quot;
４．BからAへの[SYN,ACK]が&quot;再送されている&quot;
上記４から推察するに、BがAからの[ACK]がなんらかの要因で受信できておらず、
[SYN,ACK]の再送を繰り返しているように見える。

ここで手詰まり。
１から２への流れがあるから、AからBへのTCP通信がまるっきりできてないわけでは無い。
（２は１というトリガーが無いと送信されないはずなので）

とまぁ、ここまでの調査結果を踏まえ    </description>
    <dc:date>2010-01-20T23:15:51+09:00</dc:date>
    <utime>1263996951</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/38.html">
    <title>UbuntuをVMWareにインストールしてみた</title>
    <link>https://w.atwiki.jp/paladin/pages/38.html</link>
    <description>
      **2010/01/17
もう少しUnix系OSに慣れておきたい、でも新しいPCを用意するのは
ちょっと面倒、というわけでVMWareにUbuntuLinuxをインストールして
使える環境を作ってみた。

作業的には
・VMWareのインストール
・UbuntuのVMWare用イメージの取得
これだけ。
拍子抜けするくらい簡単だった。

以前、仕事でRedHatLinuxを触ったことがあったものの
１年以上前ということで、さっぱり忘れていた。
また、当時パッケージのインストール等は必要なかったので
その辺の操作もさっぱり。

というわけで備忘録的メモ。

起動してから、SSHやSubversionのインストールで使用
#highlight(highlight,){
sudo　rootログインせずに、root権限で実行する為のコマンド
apt-get install　アプリケーションのインストール
apt-get upgrade　アプリケーションのアップグレード}

設定ファイルを書き換えてからアプリを再起動するとき
#highlight(highlight,){
sudo /etc/init.d/ssh restart}

あと、設定ファイルの内容確認等で
#highlight(highlight,){
less [ファイル名]　ファイル内容を表示
head [ファイル名]　ファイルの先頭を表示
tail [ファイル名]　ファイルの末尾を表示}
headやtailは行数指定もできるんじゃなかったかな。

編集には当面viを使う予定。
使い方が特殊だけど、Unix系OSを扱う機会があるなら
覚えておいて損はない予感。

適当にいじりながら、今後はSubversion使えるようにしたり
APサーバー立てたりということを試していく予定。





=============== &lt;&lt;&lt;ここから宣伝(自動追加)&gt;&gt;&gt; ===============    </description>
    <dc:date>2010-01-17T19:58:01+09:00</dc:date>
    <utime>1263725881</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/37.html">
    <title>MySQLのBLOBに入ったPDFを表示する</title>
    <link>https://w.atwiki.jp/paladin/pages/37.html</link>
    <description>
      **2010/01/05
MySQLでBLOB型の列にPDFファイルを挿入して、ブラウザで取り出して
表示する方法を友人に聞かれて答えられなかったので調べてみた。

BLOBについて簡単におさらい。
&gt;BLOB  は様々な大きさのデータを保持する事ができる大きいバイナリオブジェクトです。
&gt;4つの BLOB  タイプは、TINYBLOB、 BLOB、MEDIUMBLOB、そしてLONGBLOB  です。
MySQL5.1リファレンスマニュアルより

ＤＢに格納するところまではできたそうなので、取り出すところだけやってみる。

テーブル構造はこんな感じ
ＤＢ名:blobtest
テーブル名:test
|BGCOLOR(gray):フィールド|BGCOLOR(gray):種別|BGCOLOR(gray):備考|
|id|int|一意になるコード|
|data|longblob|今回の本命、バイナリデータ|

格納データはこんな感じで準備
|BGCOLOR(gray):id|BGCOLOR(gray):data|
|0|(PDFデータ)|
|1|(画像データ)|
いずれもネットで拾ってきたデータ。

PHPのファイルはバイナリデータそのものを返す&quot;view_data.php&quot;
バイナリデータを呼び出す&quot;view_main.php&quot;の２ファイルを用意。

view_data.php
#highlight(linenumber,sql){{
&lt;?php
header(&#039;Content-type: application/pdf&#039;);

//MySQLサーバに接続
$con = mysql_connect(&quot;server&quot;, &quot;user&quot;, &quot;password&quot;);
if (!$con){
    print(&quot;MySQLへの接続に失敗しました&quot;);
    exit;
}

//ＤＢ接続
if (!mysql_select_db(&quot;blobtest&quot;)){
    print(&quot;データベースへの接続に失敗しました&quot;);
    exit;
}

$sql = &quot;select data from test where id=0&quot;;

$result = mysql_query($sql    </description>
    <dc:date>2010-01-05T22:24:53+09:00</dc:date>
    <utime>1262697893</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/36.html">
    <title>JavaでHTTP通信を試してみる(2)</title>
    <link>https://w.atwiki.jp/paladin/pages/36.html</link>
    <description>
      **2009/12/27
とりあえずソースコードから。

#highlight(linenumber,sql){{package jp.dark.http.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.List;
import java.util.Map;

public class HttpRequestTest {

  /**
   * @param args
   */
  public static void main(String[] args) throws Exception {
    // TODO 自動生成されたメソッド・スタブ

    URL url = new URL(&quot;http://www.google.co.jp&quot;);

    HttpURLConnection urlcon = (HttpURLConnection)url.openConnection();

    //リクエストメソッドをセット
    urlcon.setRequestMethod(&quot;GET&quot;);

    urlcon.connect();

    //レスポンスヘッダ
    Map&lt;String,List&lt;String&gt;&gt; headers = urlcon.getHeaderFields();

    System.out.println
      (&quot;===================&lt;&lt;header&gt;&gt;===================&quot;);
    for (Object key : headers.keySet()) {
      System.out.println((String)key + &quot;:&quot; + headers.get(key));
    }

    BufferedReader reader =
      new BufferedReader(new InputStreamReader
      </description>
    <dc:date>2009-12-27T21:04:37+09:00</dc:date>
    <utime>1261915477</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/35.html">
    <title>JavaでHTTP通信を試してみる(1)</title>
    <link>https://w.atwiki.jp/paladin/pages/35.html</link>
    <description>
      **2009/12/27
最近Twitterが流行っているようで、技術者のはしくれとして気になっている。
（いまさら感たっぷりだが）
ひとまず、アカウントを作って一通り使い方を理解したので（ちなみに、使用したクライアントソフトはTweetDeck）、Twitterの機能を実現しているAPIについて色々と試してみたい。

以下、大雑把な方針。
-言語については、Javaを使用（ただの趣味）
-まずはJavaでHTTP通信ができるようになることから
-Twitterクライアントを作る為の基礎知識を得られる程度をとりあえず目標に
----
何はともあれ情報収集ということで、今回は以下のページを参考にさせて頂いた。

TwitterAPIについては英語で公開されているが、日本語に訳して公開してくれているページがあるのでそこを参照させていただいた。

&amp;color(pink){観測気球：}http://watcher.moe-nifty.com/memo/2007/04/twitter_api.html

ネットワーク系のクラスはほとんど使ったことがないので、javadocくらいは目を通すことにする。

&amp;color(pink){参照javadoc：}http://java.sun.com/javase/ja/6/docs/ja/api/java/net/URL.html

HTTPについて気になることは以下のページでRFCの日本語訳を探してみた。
ＲＦＣを訳してくれる方々にも、リストとしてまとめてくれている方にも感謝。
原文もたぶんＲＦＣなら読めるけど、やはり若干ストレスが・・・。
というわけで大変助かります。

&amp;color(pink){ＲＦＣ日本語版リスト：}http://www5d.biglobe.ne.jp/~stssk/rfcjlist.html
&amp;color(pink){RFC 2068 HTTP/1.1 日本語訳：}http://www.y-adagio.com/public/standards/tr_http11_2068/toc.htm

実装にあたっては、下記ページを参考にさせて頂いた。

&amp;color(pink){68user&#039;s page：}http://x68000.q-e-d.net/~    </description>
    <dc:date>2009-12-27T19:55:01+09:00</dc:date>
    <utime>1261911301</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/34.html">
    <title>近況とか</title>
    <link>https://w.atwiki.jp/paladin/pages/34.html</link>
    <description>
      **2009/12/26
どうやら1年9ヶ月ほど放置していた模様。

放置していた期間に起こったこと等。

■2009年に入って会社の方針ということもあり資格を取得
-OracleMasterBronze
-OracleMasterSilver
つまりOracleの勉強をしてましたよ・・・と。

■2008年10月からVB系の作業を1年程度
一般に上流と言われる、基本設計（的な何か）や詳細設計（的な何か）も
やったのだけど、常駐先の人がみんな上流肯定の経験が薄く、
上流肯定ごっこみたいな雰囲気だったのが残念。

■個人的な自己啓発はあまりしてなかった
我ながら迷走していた。
何かやらないといけないという思いをずっと抱えながら、自己啓発的な
活動は特筆できるようなことはほとんど無い。
強いて言うなら、ビジネス書をよく読んだくらいか・・・。

こんな感じ。
人生無駄なことは何も無いという人もいるし、概ね同意だけど・・・
もう少し色々真剣に取り組めば違ったかなと、振り返ってみて思った。
まもなく２０１０年、来年はもう少し１年を振り返って充実していたと
記録できるような年にしたいものである。




=============== &lt;&lt;&lt;ここから宣伝(自動追加)&gt;&gt;&gt; ===============    </description>
    <dc:date>2009-12-27T19:54:26+09:00</dc:date>
    <utime>1261911266</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/33.html">
    <title>ＤＩコンテナについて勉強してみた</title>
    <link>https://w.atwiki.jp/paladin/pages/33.html</link>
    <description>
      **2008/03/29
相変わらず仕事が微妙に忙しい・・・

思うところがあって、今日はＤＩコンテナについて調べてみた。

検索してみた感じだと、国産のSeaserと外国産のSpringが
一般的な選択肢という感じ。
実態はよくわからないものの、どうやらSpringの方が実際の
プロジェクトでの実績があるっぽいので、Springをいじってみることにする。

今回参考にしたのは＠ＩＴ
http://www.atmarkit.co.jp/fjava/rensai3/springdi01/springdi01_2.html

EclipseにSpringIDEというプラグインを導入してサンプルコードを動かしてみる。
とりあえず、ソースコードでnewしなくてもインスタンスが作れるところまで
確認できた。

まだ途中なので、もうちょい遊んでからもう一回くらいSpringの内容で
記事を書いてみようと思う。



----    </description>
    <dc:date>2008-03-29T22:50:55+09:00</dc:date>
    <utime>1206798655</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/32.html">
    <title>Webアプリケーションの構成</title>
    <link>https://w.atwiki.jp/paladin/pages/32.html</link>
    <description>
      **2008/03/19
仕事の方がぼちぼち忙しく、あまり自分の勉強ができてない今日この頃。

とりあえずいま作りたいと思っているのは、家計簿アプリケーション。
概ねやりたいことは
・日々の入出金の入力
・一ヶ月単位での科目別の集計
・月の出費の内訳比率表示
ｅｔｃ・・・
まぁ、普通に家計簿でできそうなことをやりたいなと。

実装にあたり必要な要素は
ユーザーインターフェース　→　Struts
データベース接続　→　Tomcatのコネクションプール
ロジック　→　Java
というところだと考えており、それぞれ未完成ながらも
基本的なところは押さえているつもり。

作り始めるのに最初に考えなくてはいけないのは、どうやら
データベースのテーブルスキーマ定義になると思うが
これについてはまだまだ勉強不足。

次の勉強のテーマはデータベース定義かな・・・。




----    </description>
    <dc:date>2008-03-19T06:12:40+09:00</dc:date>
    <utime>1205874760</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/31.html">
    <title>Strutsの入り口</title>
    <link>https://w.atwiki.jp/paladin/pages/31.html</link>
    <description>
      **2008/03/09
Strutsの勉強を始めるにあたり、まずはEclipseでStrutsを使うための方法を研究。

とりあえず現在の状況は
Eclipse3.3
Tomcat6.0
でJSPやサーブレットのプログラミングができる準備は整っている。
Strutsについては1.2.9を使用。
細かい導入方法はやはりネットで調べればいくらでも出てくる割愛。

まずは普通に動的Webプロジェクトを作成。
Struts-blankより必要なjar、tlb、xmlをコピー。
（※ネットで調べた中では、Eclipseのプロジェクトにファイルをコピーしてから
プロジェクトのプロパティでビルドパスを設定するとあるが、それはしなくても
問題なかった）

ファイルの配置が終わったら製作開始。
web.xmlの記述
struts-config.xmlの記述
Actionの作成
ActionFormの作成

やることは少ないけど、どこをどうやるのかわからないので
最初は苦戦した。
結局、一日中Strutsをいじったり解説本を読んだりなんだりかんだりで
一日がおわってしまった。
最終的な成果と課題。

■わかったような気がすること
・web.xmlは基本的な設定が終わるとほとんど触る必要が無い
・struts-config.xmlの設定が肝
・ActionFormはビューのFormと対応する

■よくわからないこと
・scope=&quot;session&quot;の場合にいつからいつまでFormが保持されてるの？
・Validateの設定がいまいち・・・

まだまだ内容が抽象的＝理解が足りないのだろうと思う。
実際に４画面程度のテストアプリケーションは動かせたので
もうちょっと具体的な内容を書けるように研究したい。



----    </description>
    <dc:date>2008-03-09T21:53:36+09:00</dc:date>
    <utime>1205067216</utime>
  </item>
    <item rdf:about="https://w.atwiki.jp/paladin/pages/30.html">
    <title>DTDとweb.xml</title>
    <link>https://w.atwiki.jp/paladin/pages/30.html</link>
    <description>
      **2008/03/08
新しい常駐先の業務でStrutsベースの独自フレームワークによる開発に
携わることになり、Strutsに関する勉強を始めた。

以前にも書籍等により基本的な事項は押さえていたつもりだが
概念を知ってることとコーディングは別次元の話だと実感。

環境についてはEclipse3.3+Tomcat6.0
今回は根本的な仕組みを学ぶ為、Struts用のプラグインや
開発ツールについては使用しない方針にした。

書籍のサンプルを適当に動かす程度のことは簡単だったが
Web.xmlを編集するときに&lt;web-app&gt;の下にエラーを示す下線が
表示されることがあり、ちょっと気になって調べてみた。

以下、Wikipediaからの引用
#blockquote(){Document Type Definition（文書型定義、DTD）とは、SGML や XML において、
文書構造(文書型)を定義するためのスキーマ言語の一つである。 
DTD では、SGML や XML の文書内に記述することができる要素やその発生順序、
発生回数、要素がもつ属性、属性の型などを、記述することができる。}
EclipseでXML編集をするときに、どうやらDTD検証を行っているらしく、
定義に沿って記述すればエラーが消えた。

書籍のサンプルに従ってこのエラーが出るというのはいかがなものか・・・
ま、原因もわかったところで本題であるStrutsの勉強に戻ることにする。




----    </description>
    <dc:date>2008-03-08T17:28:23+09:00</dc:date>
    <utime>1204964903</utime>
  </item>
  </rdf:RDF>
