2014年1月26日日曜日

Vagrant の勉強は始めました

最近、サーバー環境の自動化関連ツールの動向が激しい気がしています。 特にお盛んなのは Chef だと感じています。

乗り遅れない為にも Chef の勉強を始めようと思ったのですが、調べていくうちに Vagrant という仮想サーバーの操作ツールを知ることになりました。 いつもであれば目的のものだけ勉強するところですが、この Vagrant が Chef の勉強をする上でもとても便利なツールとなりそうだということが分かってきました。 ので、少し遠回りではありますが Vagrant について学習することにしました。

今回も学習した結果を記事にしてみました。 やはり文章化することで、頭がとても整理されますし口でも人に説明しやすくなるように感じています。

ということで Windows 上で Vagrant による仮想サーバーの構築ができるようになりましたので、来週は本題の Chef の学習に取り掛かれたらいいなと思っています。

2014年1月6日月曜日

新年早々Rubyを猛勉強してみた

新年明けましておめでとうございます。

年末年始は奇跡の9連休だったわけですが、諸事情によりRuby環境構築について勉強する必要があり、毎日2~3時間コツコツと勉強しました。 せっかく勉強するのだから、勉強した成果をホームページにまとめようと思い立ち、勉強した内容を言語化することにしました。

完成したWEBページは下記のホームページになります。

Ruby環境構築入門
http://weblabo.oscasierra.net/ruby/

年始早々、「よく勉強した」感で満ち溢れております。 今年も邁進と飛躍(を目標と)する年にしたいと思います。

2010年7月5日月曜日

Pechait! - テレビやラジオの感想をTwitterで共有するサービス

どうも、OSCAです。

最近、勢いでテレビやラジオの感想をリアルタイムに共有するサービス「Pechait!」を作成しました♪ インターネットでラジオが聴けるradikoも開始されましたし、是非テレビやラジオを楽しみながら、Pechait!で他の方の感想もお楽しみください♪
http://www.pechait.com

このブログ「MemoIt」は技術のこと書くブログなので技術的なことを書くと、Pechait!は Google の AppEngine を利用しています♪ 言語は Java で、ひがやすをさんが作成しているSlim3を利用しています。

クラウドを利用したサービスを作成するのは初めてだったので、いろいろなTipsが必要だということを実感しております。 Key-Value Store もクセがありますので最初は苦戦の連続ですね。

AppEngine での作成Tipsなどは、また別の機会にでも書ければと思います。

とりあえず、今回は、Twitterでテレビやラジオの感想をリアルタイムに共有するサービス「Pechait!」を宜しくお願いします。

Pechait!
http://www.pechait.com

2010年3月26日金曜日

シェルスクリプト開発Tips

シェルスクリプトを作成する前に知っておくと良いこと

シェルスクリプトの文法チェックを行うには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/780chshsyntax.html

シェルスクリプトをデバッグするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/784debugsh.html

シェルスクリプトの一部分をデバッグするには
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/787debugsspert.html

ShellEd : Eclipseプラグインのシェルエディター
http://sourceforge.net/projects/shelled/

2010年2月15日月曜日

Integer.parseInt()

先程、Java の Integer.parseInt メソッドについて思わぬ挙動をされて驚いたのでメモ。

どうやら、Integer の parseInt メソッドの引数に全角数字の文字を代入しても、true が返却されるのが仕様みたいだ。 ハマったー(汗)

そして、Apache Commons の StringUtils クラスの isNumeric メソッドについても同様だった。

僕にとっては思わぬ落とし穴だった(汗) う~ん、文字チェックの場合は正規表現で [0-9] のようにしっかり指定した方がよさげだ。

2009年12月8日火曜日

HttpClient4.0 を使ってみる (1) -とりあえず使ってみる編-

The Apache Software Foundation で開発されている HttpComponents である HttpClient のバージョン4.0がリリースされた。 ちょうど個人的にHTTPでゴニョゴニョする案件があるので、英語のチュートリアルを読みながらやってみた。

とりあえず、YAHOO!にPOSTでアクセスしてみた。(YAHOO!さん、ごめんなさい)

HttpClient httpClient = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.yahoo.co.jp");

// SET PARAMETERS
List params = new ArrayList();
params.add(new BasicNameValuePair("hoge", "moge"));
post.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));

// EXECUTE
HttpResponse response = this.httpClient.execute(post);
System.out.println(response.getStatusLine().getStatusCode());
System.out.println(EntityUtils.toString(response.getEntity()));


HttpClient3.1の時とは、クラスからメソッドまで一新されているので、概念に慣れるまでは勉強が必要かな。特に上記の例を見て分かる通り、HTTPレスポンスの扱い方が大きく変わっている。

2009年11月17日火曜日

Java : ConcurrentModificationException

Javaでコレクション処理中に ConcurrentModificationException が発生したのでMEMO。

<要件>
要件は以下のようだった。
  • マップに含まれる要素を全て検査して、条件hogeに一致した要素をマップから削除する

<失敗なソース>
for( Iterator iterator = map.keySet.iterator(); iterator.hasNext(); ) {
    Object key = iterator.next();
    if( isHoge(key) ) map.remove(key);
}

この際、iteratorのnextメソッドで、ConcurrentModificationExceptionが発生した。

理由は、mapの持つ要素のコレクションをiteratorで回しているにも関わらず、ループの中でmap自体の要素を削除していっているため、ループのためのコレクションが保てなくなったため。


<修正後のソース>
Object[] keys = super.keySet().toArray();

for( Object key : keys ) {
    if( this.exceededLimitTime(key) ) {
        this.remove(key);
    }
}

あー、考えれば当たり前のことなのに、考えが一転倒になってしまって、ハマってしまった・・・(涙)