OmniAICreator/Qiita-1.07M huggingface dataset:
HP-UX 11i スタートアップスクリプトの設定


HP-UXでは、/sbin/rc*.d/（*は0～4の数字）ディレクトリの起動ファイルで起動時に動作するデーモンを制御するのではなく、 /etc/rc.config.d/ディレクトリにある環境変数スクリプトで制御します。

実際には、/sbin/rc*.d/ディレクトリの実行ファイル（/sbin/init.d/へリンクされている）から/etc/rc.config.d/ディレクトリの環境変数スクリプトが読み込まれ、その中にある Start用パラメータの数値によりデーモンを起動するか判断します。Solarisのようにrc.*d/ディレクトリにファイルがあるからと言って、起動時にデーモンが立ち上がるとは限りません。(例)1.ファイル名「/sbin/init.d/hogehogeStart」とし，起動スクリプトを作成する/opt/hogehoge/Sample/hogehogeStartを/sbin/init.d/hogehoegStartにコピーします。2.chmodコマンドで作成した起動スクリプトに実行権限を与える 3.作成した起動スクリプトを登録します。登録方法はシンボリックリンクで，スタートアップシーケンサー・ディレクトリにリンクを作成ます。  

```ln -s /sbin/init.d/GcolStart /sbin/rcN.d/S955GcolStart  ```   

* rcN.dのNは，/etc/inittabファイルのinitdefaultエントリのrstate(2つ目の項目)の番号。 * シンボリックの名称は，「S＜NNN＞＜起動スクリプト名＞」の形式で指定。
* 「＜NNN＞」には，同一実行レベル内での起動順序を示す3けたの数字を指定。

* 「＜起動スクリプト名＞」には，リンク先の起動スクリプトの名称と同じ名称を指定。
* Sではじまるものがスタートさせるプロセスで、 引数startを付けて実行される。Kではじまるものが止めるプロセスで、引数stopをつけて 実行される。各ランレベルのディレクトリにあるのがシンボリックリンクというところがミソで、これによって1つのrcスクリプトを複数のランレベルで共有できる。/etc/rc[0-6].d以下にそれぞれファイルの実体を配置した場合、あるファイルを修正するとそのファイルを必要とする各ディレクトリにコピーしなければなりません。実際にはシンボリックリンクなので、大本のファイルを変更するだけで/etc/rc[0-6].d以下にも修正が自動的に反映されます。シンボリックリンクをうまく使ったこの方法は、いろいろと応用が利きます。
起動時から不要なサービスであれば、/etc/rc[0-6].dにあるシンボリックリンクを削除してしまえばいいのです。元のファイルは/etc/init.dに残っているので、必要になった時点でもう一度シンボリックリンクを作成すれば大丈夫です。# 補足
これまでに紹介してきた仕組みは、System Vの流儀です。rcスクリプトにはもう1つ、BSD風もあり、こちらは/etc/に直接rcスクリプトを配置します。この場合は、まずシングルユーザーモードで起動し、マルチユーザーモードに移行する時点で一般的なrcや各ホスト固有の設定を行うrc.localなどを実行します。Red Hat系のディストリビューションやDebian GNU/LinuxではSystem V方式を取っていますが、Red Hatの前に主流だったSlackwareではBSD風のrcスクリプトが使われています。
BASIC認証

## 概要
HTTPで定義される認証方法
サーバにリクエストして401が返ってきたらクライアントがユーザに入力を促して、ユーザ名とパスワードをコロンでつないでBASE64でエンコードしてサーバに送信し、許可を受ける。
暗号化などは一切しない。

## やり方
.htaccessに設定を書き、.htpasswdにユーザ名とパスワードを書いていく。
DNSの切り替え時の注意点


# DNSのTTLとは？

DNSには各ドメインに対する運用方法を記述したZONEファイルが格納されています。そこにはTTL（Time To Live）というものを指定する記述があります。

TTL（Time To Live）とは、一旦DNS経由でドメイン名の名前を解決（ドメイン名とIPアドレスを結びつけること）した場合、その情報をキャッシュしておく時間（数値は秒）のことです。86440と指定されていれば、それは24時間のことです。3600なら１時間、604800なら１週間です。　　

DNSは少しでも負担を軽くするため、一旦名前→IPアドレスを変換して解決したドメイン名は、そのIP情報を一定期間キャッシュしておきます。
TTL（Time To Live）がどの程度生きているかは、ZONEファイルの記述内容や、アクセスした人の環境により異なります。

# DNSの切り替えタイミングは指定できるか？

DNSは切り替え申請した時点で瞬時に切り替わるわけではありませんし、環境によってTTL（Time To Live）の期間もまちまちですので、切り替えが有効になった後も、サーバAでは新サーバーにアクセスできているのに、サーバBからは旧サーバーにアクセスしてしまうという状況がある程度続きます。  

ドメインに対するDNSの変更や、すでに登録してあるDNSのIPを変更する場合、変更申請をしてから、ルートレジストリに変更が反映されるまでに通常24時間程度かかります。  

したがって、DNS変更によってドメインの運用サーバーを引っ越しをさせる場合、できれば1週間は、新旧どちらのサーバーにも同じデータを残しておき、両方アクセス可能な状態を保つことが望まれます。メールも、最低１週間は旧サーバーに取りこぼしがないか確認する必要があります。

特に、独自登録したネームサーバーのIPそのものを変更すると、旧DNSのIPを記憶している環境が多数残りますので、非常に大きな影響が出ます。

これに対応するため、よくやるのは古いサーバに来たリクエストを、強制的に新しいページに転送させるような処理であったり、あるいは新旧両方のWebサーバに同じコンテンツを載せておきます。

Webサイトのページに対するリクエストであればこのような処理を行うことで、特に大きな問題は起こりません。

# DNSの切り替え後、メールが届いたり届かなかったりするのは何故？

DNSの切り替えを行いますと、旧DNSの設定情報と新DNSの設定情報がインターネット上に混在している状態となり、旧DNSの設定情報が参照された場合は旧メールサーバにメールが送信されます。

このため、新メールサーバのメールのみを受信する設定をしている場合は、一部のメールが受信できない等の問題が発生します。

回避するために、利用しているメールソフトにて、新旧両方のメールサーバからメールを受信する設定の両方行う等必要がある。
mbed lpc1114fn28の使い方

最近mbedがオープンソース化されて、mbedがLPC1114FN28という180円程度で購入できるマイコンで使えるようになりました。
ですが書き込み方でつまづくところがいくつかあったので、書き込み方やそれに必要なソフトを以下の私のブログにまとめてみました。

情報時代の備忘録-180円mbedの使い方-
http://infotech776.blog.fc2.com/blog-entry-16.html

よろしければお使いください。
[PhalconPHP] PKが無いSchemaへのUpdate(save)が失敗する話

当たり前かもしれませんが、MVC frameworkのModelでupdateしたい場合、PKが無いSchemaに対しsaveメソッドを使うとエラーになっちゃいます。
PK張れよって話だけど、ごめんな、引き継いだシステムやねん。


というわけなので、queryメソッドを使って直接SQLを発行しupdateしちゃいます。

1. modelのwriteConnectionに対し
2. queryメソッドでSQLを渡してやればOK

```php
// PhalconのModelでは、PKのないschemaに対しupdate(=save)が発行できません。
// 仕方がないので、直接SQLを発行してお茶を濁しました。

            $sql = "UPDATE hogeschema set hoge=fuga where ..." 
            $model = new hogeModel();

            $result = new Resultset(null, $model, $model->getWriteConnection()->query($sql));
```
Rubyist が RubyMotion で iOS アプリの開発を始める方法


## 前書き
この RubyMotion Advent Calendar 2013 をチェックしている方の中には、サンタさんに RubyMotion のライセンスを頼んでいる方も多いと思います。

12/25 に、枕元に突然 RubyMotion のライセンスが届いていても慌てないように、どういう順序でどんなドキュメントにあたっていけばスムーズに iOS アプリ開発を学べるのか、を自分の経験からまとめてみます。
(実際、RubyMotion もくもく会などでも良く聞かれる質問です。)

## 前提
- Objective-C での iOS アプリ開発経験は問いません。
- Ruby が好きであることが大事かも？

## 公式ドキュメント
まずは公式の [Welcome to RubyMotion](http://rubymotion.jp/RubyMotionDocumentation/guides/getting-started/index.html) を読みましょう。
そして、本文に従って、アラートを出すだけのアプリを書きます。

次に一通り斜め読みで結構ですので [RubyMotion Runtime Guide](http://rubymotion.jp/RubyMotionDocumentation/guides/runtime/index.html) に目を通してください。これを読んでおくだけで防げる悲劇があります。

例えば「`kCLLocationAccuracyBest` がどう考えても typo じゃないのに使えない」-> 「RubyMotion では ` KCLLocationAccuracyBest` (大文字の K で始まる) にしなきゃダメだと！？」というのは幾度も繰り返されてきた悲劇です。

## チュートリアル
まずはみんなが通る道、[RubyMotion Tutorial](http://tutorial.rubymotion.jp) をやりましょう。
少なくとも 7章の Models のところまではやってください。

バリバリに Cocoa Touch フレームワークを使って書くので、事前知識が無いと結構不安になりますが、まずは一通りやってみることが大切です。

書きながら、ちょくちょく Cocoa Touch フレームワークのドキュメントを見てみるのもいいと思います。
Xcode の Help メニュー -> Documentation & API Reference で見てもいいですが、[Dash](https://itunes.apple.com/jp/app/dash-docs-snippets/id458034879?mt=12) というアプリが使いやすいのでおすすめです。

もしチュートリアル的なものがもう少し欲しい場合は、僕が [Mobile Touch](http://mobiletou.ch/) で連載させていただいている [実践！RubyMotion](http://mobiletou.ch/stories/実践！rubymotion) も参考にして下さい。

## Cocoa Touch をもうちょっと学ぶ
ここまででとりあえず RubyMotion の感覚は掴めたと思います。ただし、Cocoa Touch フレームワークについての知識が曖昧だと、結局何やってるんだかわからないもやもや状態が続きがちです。

Apple 公式の PDF の [和訳](https://developer.apple.com/jp/devcenter/ios/library/japanese.html) があるのですが、以下の 2 ファイルを斜め読みすると、大体 Cocoa Touch フレームワークの勘所が分かるようになります。

- iOS View Controller プログラミングガイド
- iOS View プログラミングガイド

Ruby on Rails とかの経験があれば View と Controller がわかれば、Model の考え方とか役割は普通の Ruby のプログラムとさほど変わりませんしね。

このあたりからは、もう自分で作りたいものを作り始めるのが良いでしょう。
まだ作りたいもののアイディアが降りてこなかったりする場合は、[RubyMotionSamples](https://github.com/HipByte/RubyMotionSamples) を動かしたり、改造したりして RubyMotion が (というよりは iOS アプリが) できることを色々試してみましょう。

## より深く学ぶ際におすすめの書籍
もうここからは **RubyMotion では** という前置きがいらなくなります。Objective-C でアプリを書くときと共通のものがおすすめになります。

- [iOS開発におけるパターンによるオートマティズム](http://www.amazon.co.jp/iOS開発におけるパターンによるオートマティズム-木下-誠/dp/4861007348)
- [エキスパートObjective-Cプログラミング ― iOS/OS Xのメモリ管理とマルチスレッド](http://tatsu-zine.com/books/objc)

## コミュニティ
あとはもう自分で作りたいものをどんどん作るのみです。

孤独を感じたらぜひお近くの RubyMotion コミュニティへ足を運ぶか、作るかしてください。

イベント情報は [RubyMotion JP](http://rubymotion.jp) や connpass 上の [RubyMotionJP](http://connpass.com/series/130/) ページ、[@ainame](https://twitter.com/ainame) さんの主催されている [RubyMotionTokyo](http://rubymotion-tokyo.doorkeeper.jp) あたりをチェックしておくと良いです。
のんびり座りたい (2013.2.2の過去問)

1日1個 @nabetani さんの作った問題を解く、どう書くAdventCalendarの1日目です。

今日の問題は http://nabetani.sakura.ne.jp/hena/ord7selectchair/ にあります。

```hs
module Doukaku.Nonbiri (solve) where
import Data.Char (toUpper)

solve :: String -> String
solve input = foldl next (take n . repeat $ '-') ope
  where
    ope :: String
    (n', ':':ope) = break (== ':') input
    n = read n' :: Int

next :: String -> Char -> String
next current c
  | 'a' <= c && c <= 'z' = let c' = toUpper c
                           in map (\x -> if x == c' then '-' else x) current
  | otherwise = sitDown c current

sideMembers :: String -> [Int]
sideMembers xs = sideMembers' ('-':xs)
  where
    sideMembers' (x:'-':[])   = [count x]
    sideMembers' (_:_:[]) = [-1]
    sideMembers' (x:'-':z:zs)   = let members = sum . map count $ [x, z]
                                  in members : sideMembers' ('-':z:zs)
    sideMembers' (_:y:z:zs) = -1 : sideMembers' (y:z:zs)
    count '-' = 0
    count  _  = 1

sitDown :: Char -> String -> String
sitDown new current = either id undefined $ do
  toEither (sitDown' 0 current sides)
  toEither (sitDown' 1 current sides)
  toEither (sitDown' 2 current sides)
  return ()
  where
    sides = sideMembers current
    sitDown' :: Int -> String -> [Int] -> Maybe String
    sitDown' _ [] [] = Nothing
    sitDown' n (c:cs) (m:ms)
      | n == m = Just $ new:cs
      | otherwise = (c :) `fmap` (sitDown' n cs ms)

toEither :: Maybe a -> Either a ()
toEither = maybe (Right ()) Left
```

各席の隣の人数を求めてから、それを元に座る位置を決めるという戦術をとりました。`sideMembers'`では左端の要素の場合分けをしたくなくて番兵を使っていますが、右端はパターンマッチで分けてます。`sideMembers`関数の戻り値は席が空いてない時は`-1`を返しましたが、ここはちょっと頂けないところ。

後、Eitherモナドを通常とは逆に使って大域脱出させてます。答えが出た場合は`Left`で、答えがない場合は`Right ()`です。

http://qiita.com/Nabetani/items/4364285801d1c9f370a1 に他の方の回答もありますので、見ると参考になるでしょう。
chrono による時間の計測

```cpp
#include <chrono>

  std::chrono::system_clock::time_point start = std::chrono::system_clock::now();
  // ココから
  ...
  // ココまでの時間を測る
  std::chrono:duration<double> sec = std::chrono::system_clock::now() - start;
  double duration = sec.count(); // 単位は[秒]
```
Ember.jsのコアな機能を学ぶためのサンプルプロジェクト

https://github.com/puriketu99/minimal-ember.js-sample

##Ember.jsとは？
JavascriptのMVCフレームワークのひとつ。
かなり新しめなので色々機能が充実しているが、ドキュメントが少ない。

##特徴的な機能は？
一番の特徴はUI bindings。Javascriptの変数とhtmlの表示を同期することで、dom操作を少なくできる。
ちなみに、jsのオブジェクトのプロパティ間の自動同期とかもできる。

##で、今回の記事は何？
そのEmber.jsの機能で個人的においしいと思うところを学べるように、機能を絞って動くプロジェクトをつくったので見てくださいという記事です。

##どこに晒したの？
下記です。
https://github.com/puriketu99/minimal-ember.js-sample

このプロジェクトの目的は、Ember.jsの中心的な機能を学んでもらうことにあります。
学べる機能は、下記の5点です。

1. 基本的なテンプレートの使い方
2. 基本的なViewの使い方
3. Controllerのプロパティを合成して新たなプロパティをつくる方法(property)
4. Controllerのプロパティをバインディングして、Viewに自動的に伝搬する方法(binding)
5. テンプレート用の自作のhelperを作成する方法

このプロジェクトは、最短手数でember.jsを実践的に使用できるようになることにフォーカスしています。
>エクスキューズ達
 #といいつつ、自分もあまり触りきれていないので、何か気になるところがあればガンガン指摘してください。
 #routeとmodelはややこしいので外しました。
VagrantのShell Provisionで、nvmをインストールする際に気をつけること


##要点

　nvmのインストールに限った話ではなくて、provisionを`shell`で行うとき（※たぶんchefとかのときも？）に共通して言えること。

　ついつい先入観でprovisionは`vagrant(ユーザ)権限`で実行されると思いがち（自分だけ？）だけど、実際にはroot権限で実行されるため、

- なにがしかのスクリプトの中で`$HOME`を参照している
- provision中に`/home/vagrant下`にファイルやディレクトリを生成する

ような場合には注意が必要です。

では、nvmのインストールでの具体例を…

##  Install script じゃダメ

Shell Provision は`root権限`で実行されるので

```bash
curl https://raw.github.com/creationix/nvm/master/install.sh | sh
# or
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
```

は使えない。

[install.sh](https://github.com/creationix/nvm/blob/master/install.sh) で `$HOME` を参照しているため、`/root` に `.nvm` が生成されてしまう。

というわけで…

## Manual inatall する

でも、単純に[README](https://github.com/creationix/nvm)のコピペじゃダメ

`/home/vagrant` にインストールしたいので、`~/.nvm` を
`/home/vagrant/.nvm` と読み替えるのを忘れずに。

ついでに汎用化して

```bash:init_nvm.sh
#!/bin/bash

home=/home/$1
node_version=$2

# install nvm
git clone https://github.com/creationix/nvm.git $home/.nvm

# install node
source $home/.nvm/nvm.sh
nvm install $node_version

# ログインシェルに登録
cat << _EOT_ >> $home/.bashrc
source ~/.nvm/nvm.sh
nvm use $node_version > /dev/null
_EOT_
```

Vagrantfile には

```ruby:Vagrantfile
config.vm.provision :shell, inline: <<-EOT

  # install git
  yum -y install git

  # install nvm/node 
  sh /path/to/init_nvm.sh "vagrant" "0.10.22"

  # -----------------------
  # 実はこれが一番重要かも
  # -----------------------
  # provisionの最後とかに、/home/vagrant/*の権限をvagrantに変更する。
  # - 上述の通り、shell provisionはroot権限で実行され、
  # - provision中に生成されたファイルの権限はrootになっているので。
  chown vagrant.vagrant -R /home/vagrant

EOT
```

これで `vagrant up --provision` 後に `vagrant ssh` して

```bash
[vagrant@localhost ~]$ node -v
v0.10.22
```
であればOK！
herokuメモ（自分用）

###### 最初に例示されてるコマンド ######
```
git clone git://github.com/heroku/python-django-sample.git
```
自分で作るならたぶん不要

```
cd python-django-sample
```

アプリ用のディレクトリに移動して

```
heroku create
```

サーバーを開設？

```
git push heroku master
```

git連携

```
heroku open 
```

開く

#### Pythonチュートリアル ####

https://devcenter.heroku.com/articles/getting-started-with-python

困ったら一度

```
heroku restart
```

してみてもいいかも？
最低限やっておきたい Emacs 設定

最低限やっておきたい、表示や入力、キーバインドなどに関する .emacs 設定。自分の開発用マシン向けというより、たまにログインする共用マシン向けといった感じ。なのでバージョンに依存しそうな設定やライブラリのロードなどは極力排除。
これくらいやっておくと比較的ストレスなく使える。

```el:.emacs
;; スタート時のスプラッシュ非表示
(setq inhibit-startup-message t)

;;; キーバインド
(define-key global-map "\C-h" 'delete-backward-char) ; 削除
(define-key global-map "\M-?" 'help-for-help) ; ヘルプ
(define-key global-map "\C-\\" nil) ; \C-\の日本語入力の設定を無効にする

;;; 色を付ける
(global-font-lock-mode t)

;;; バックアップファイルを作らない
(setq backup-inhibited t)

;;; 補完時に大文字小文字を区別しない
(setq completion-ignore-case t)

;;; 補完機能
(partial-completion-mode 1)

;;; スクロールを一行ずつにする
(setq scroll-step 1)

;;; スクロールバーを右側に表示する
(set-scroll-bar-mode 'right)

;;; 画面右端で折り返さない
(setq-default truncate-lines t)
(setq truncate-partial-width-windows t)

;;; バッファの最後でnewlineで新規行を追加するのを禁止する
(setq next-line-add-newlines nil)

;;; モードラインに情報を表示
(display-time)
(line-number-mode 1)
(column-number-mode 1)

;;; 現在の関数名をモードラインに表示
(which-function-mode 1)

;;; タブをスペース4字
(setq-default tab-width 4 indent-tabs-mode nil)
```
ViewModel のひな型


```cpp:ViewModel.h
#pragma once

#include "Common/RelayCommand.h"

namespace テキトーな名前空間 {

    namespace cx {
      namespace xaml  = Windows::UI::Xaml;
      namespace data  = Windows::UI::Xaml::Data;
      namespace input = Windows::UI::Xaml::Input;
    }

    [Windows::UI::Xaml::Data::Bindable]
    public ref class ViewModel sealed : cx::data::INotifyPropertyChanged{
    public:
        ViewModel();
        virtual event cx::data::PropertyChangedEventHandler^ PropertyChanged;

    private:
        void RaisePropertyChanged(Platform::String^ propertyName);
    };

}
```

```cpp:ViewModel.cpp
#include "pch.h"
#include "ViewModel.h"

using namespace Platform;
using namespace Windows::Foundation;
using namespace Windows::UI::Xaml;
using namespace Windows::UI::Xaml::Input;
using namespace Windows::UI::Xaml::Data;

namespace テキトーな名前空間 {

    ViewModel::ViewModel() { }

    void ViewModel::RaisePropertyChanged(String^ propertyName) {
        PropertyChanged(this, ref new PropertyChangedEventArgs(propertyName));
    }
}
```
Gradleことはじめ

## 自己紹介
はじめまして [@wasabeef](http://wasabeef.jp/)と申します。

私は、都内で働くエンジニアです。
何エンジニアかと言われると、いつも言葉を濁していますが
Android, Front-end (JS), infra を中心に色々な技術に手をだしてみたりしてます。

これまで、Advent Calendarを見てるだけだったので
今年は、その一端に参加してみようと思い、本記事を投稿したいと思います。

## 今日のお題について
今年のGoogle I/Oで、「[Android Studio](http://developer.android.com/sdk/installing/studio.html)」という開発環境が発表されました。
それまで皆さんの開発環境は、Eclipseだったり、IntelliJを使用されていたかと思います。

私自身、IntelliJ + Mavenを使用して開発していました。

まだまだ、私の周りを含めて、Eclipseで開発を行っている方が多いので
Android Studio + Gradleを使用して、その便利さの一部でも伝えれたらと思い
今回は、「 __Gradleことはじめ__ 」ということで書いていきたいと思います。

## Android Studioとは？
　Android Studioとは「[InteliJ IDEA](http://www.jetbrains.com/idea/)」をベースにAndroid向けに最適化された統合開発環境です。

参考：[Eclipse ADTに代わるIDEとなるか？ Android Studioの基礎知識](http://www.atmarkit.co.jp/ait/articles/1306/13/news028.html)

## Gradleとは？
そもそもAndroid Studioは、よく聞くけど[Gradle](http://www.gradle.org/)ってなに？って思いますよね。

Eclipseで開発していると、標準のビルドシステムでは、antが使われています。
でも、周り見ると素晴らしいものが沢山あるのに、まだantを使い続けますか？

Androidの開発に置いて、support-packageを始めapache-commons、
android-pulltorefreshやActionbar-sherlockなど有名で素晴らしいLibraryが沢山ありますよね
そしてそれを使う場面が多く発生すると思います。

でもantだと、それらを自分でダウンロードしてきて、gitにpushすることになるでしょう
そのLibraryにBug fixがあったら、再度ダウンロードしに行くなんて、私は面倒くさくて出来ません。

そこで、登場してくるのがビルドシステムです。
ただビルドシステムといっても、多種多様なものが存在していて何使えばいいか分かりません。
Google I/Oで、Googleが「Gradleを使うのが良いと思うよ」という案を提示してくれました。

antは柔軟で便利なのは良いのですが、自由度が高く、XMLで書かなければいけないため、慣れるまでが大変です。
Libraryの依存関係を解決する仕組みがないため、みんなの環境を合わせるのに一苦労します。

mavenは依存関係を解決する仕組みがあり、javaエンジニアなら使える人が多いかと思いますが
とは言っても、XMLで書かなければいけないため、使いこなすまでには多くを学ぶことが必要です。

そこで、登場したのがGradleです。Gradleは設定をGroovyと呼ばれるスクリプト言語で書きます。
Groovyで書かれた設定ファイルは、とても可読性が高く、Javaでも書くことが可能なため
すぐにでも初められる環境が整っています。

それでもまだAndroid Studio + Gradleを使わないんですか？
Android Studioのバージョン0.xだから使えないと言うんだったら、IntelliJを使ってみましたか？

## さあ、さっそくAndroid StudioでGradleを始めよう
Android Studioをインストールすることは必要ですが、Gradleをインストールする必要はありません。
Gradleを使う上で、Gradle Wrapperという仕組みがあるため、Gradle自身も自動でダウンロードさせることができます。
まず、Android Studioでプロジェクト作成してみましょう。

プロジェクト配下に __build.gradle__ というファイルが生成されたかと思います。
Android Studioのバージョンによって数値が若干違うかと思いますが
大枠の構成は以下の通りになります。

```gradle:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android'

dependencies {
    compile files('libs/android-support-v4.jar')
}

android {
    compileSdkVersion 17
    buildToolsVersion "17.0.0"

    defaultConfig {
        minSdkVersion 9
        targetSdkVersion 16
    }
}
```

これだけでも、antやmavenに比べると見通しが良いものと感じて頂けると嬉しいです。
gradleは、Maven Centralを利用できるため、依存関係の解決も楽にできます。

__buildscript {  }__  は、ビルドを走らせるコードを設定します。既にMaven Centralが設定されています。
__android {  }__  は、AndroidをBuildするために必要なものを設定してきます。

今回は、Gradleを始めるに至って、参考になるものを紹介して行きたいと思います。
まだ、日本語の書籍がないため、英語の書籍しかありませんが
オライリーから[Gradle Books](http://www.gradle.org/books)が販売されています。

また、日本語で読みたい方は、有志が翻訳して下さってるので、是非参考にさせていただきましょう。
[Gradle 日本語ドキュメント](http://gradle.monochromeroad.com/docs/)が公開されているので、参考にして下さい
Ubuntu ServerへのVirtualBox Guest additionsインストール

XサーバーレスなUbuntu Server（厳密にはディストーション関係ない）にVirtualBox Guest additionsをインストールしようとすると、Xが無いと怒られてしまうための簡単な対策

```
sudo apt-get install xserver-xorg xvfb
sudo mount /dev/cdrom /media/cdrom
cd /media/cdrom
sudo sh VBoxLinuxAdditions.run 
```

結果的にXサーバー自体はインストールはしているのだけれども、
仮想フレームバッファーに逃がすことで、GUIレスのままにはなる。
Tizen IDEでCannot launch this VM. Shared Memory is not enough.

Cannot launch this VM. Shared Memory is not enough.

Emulatorを起動させようとしたら、こう言われまして。
IDEをInstall後にhostosを再起動せずにEmulatorを起動したら言われるみたい。

再起動したら、きれいにEmulator起動してくれました。
Surveyorジャケットの日本版作成とか


## OSMグッズつくりたい
いいだです。

OpenStreetMap関連のグッズ、いくつか作りたいなー、とずっと思っています。

OSS界隈でグッズというと、いわゆるステッカーとかがよくありますが、個人的には他にも、ワッペンとか、ロゴ入りの[ペットボトル](http://godsjob.net/mag_bottle.html)[ケース](http://godsjob.net/outdoor/v-123.html)なんかもよいのかな、って思っていたりします。

あと、OSMマッパーは野外活動が多いので、登山用品まわりかなぁ、とかも考えていて、[カラビナ付きライト](http://8333.shop-pro.jp/?pid=31968384)や測量野帳なんてのもよさそうです。ジョギングまわりから、[リストバンドとか](http://www.sunrisep.co.jp/03_goods/list_band.html)なんかもわりと候補です。

でも、その中でも一番作りたいのは **[OSMサーベイヤージャケット](http://wiki.openstreetmap.org/wiki/OSM_Surveyors_Jacket)** の日本版だったりします。

いまのところサーベイヤージャケットはイギリス版とフランス版があって、イギリス版がオレンジ、フランス版が蛍光イエローになっています。
後ろにOSMのアイコンが大きくプリントされていて、けっこう格好いい。

![OSM_Hi_Vis_Back.jpg](https://qiita-image-store.s3.amazonaws.com/0/9928/f1b6e339-56d4-3c81-6ad6-edb453611160.jpeg "OSM_Hi_Vis_Back.jpg")

GPSロガーを持って同じ場所を何度もぐるぐる廻るとか、GPSログを取得するというOpenStreetMapの活動は傍から見るとかなり怪しい活動に見えます。下手をすると空き巣とか。
なので、「そうじゃないんですよー！私は怪しくないですよー！」ということをあらわすために作られた、逆に怪しいジャケットです :)

先日SotM2013でイギリスに行った時には、工事現場の作業員のひとたちが、みんなこのオレンジのジャケットを着て作業をしていました。
海外のデザインはそういう作業員的な服装に合わせてデザインされています。

## 日本でも探してみた
と、いうわけで日本でも同じように、作業員用の蛍光バンドつきジャケットをいくつか探してみました。
ロゴのプリントなどを行ってくれる会社さんもあるので、作成すること自体はできそうです。

でもって、こういうところはさすが日本、機能的にはすごくて、例えば

* [ジャケットの内側の部分にポケットがついていて小物が収納できる、つまり、FieldPaperとかを入れられる](http://www.e-fukuyoshi.com/anzenhoan/best/CO3001/)
* [メッシュになっているからムレない](http://www.l-m.co.jp/lm_detail_id_7137_mc_35_ct_allitem.html)

とかがあるのですが、こう、実際に発注する直前になってみると、イマイチ「これ、普段から着たいか？」っていうビミョウなラインです。
普段見慣れた服装だけに、ヘルメットなどをつけている重装備なイメージが強いのかもしれません。

デザインだけでゆけば、[ライカのジャケット](http://www.leica-geosystemssolutionscenters.com/Site/index.php?pg=prodcat&prodcat=114)などはとても格好良いのですが、少々お高いのと、ロゴ印刷ができなさそうなのでちょっと二の足。

![3333.png](https://qiita-image-store.s3.amazonaws.com/0/9928/e7b51050-d7d0-fb6a-4b0c-988d49de8f76.png "3333.png")


だとすると、イベント用のジャケットとかのほうがデザイン的にはいいのかな、と思っていて、例えば、[このへんならそこそこお安く発注できそう](http://www.l-m.co.jp/lm_detail_id_4945_mc_35_ct_758.html)かな、とか。。。

## 光明
と、つれづれ悩んでいたら **「進撃の巨人の調査兵団って Survey Corp なんだね。英訳。」** という話を耳にしました。

![sankoubunken](http://sngk.net/F2RiWE/img2)

調べてみたら、実際そうらしい。
アメリカ版のAmazonでも、[ロゴプリントされたジャケットとかパーカーがたくさん売られてます。](http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dapparel&field-keywords=survey%20corps
)

まぁ、さすがに、マッピングパーティで全員がこれを着ると単なる進撃コスプレ会だなー、でも、ネタアイテムとしてはいいかなー、と悩んでいたわけですが、話題に上がった10分後には

![スクリーンショット 2013-11-29 17.30.18.png](https://qiita-image-store.s3.amazonaws.com/0/9928/a4aa2eb7-b6a9-9a14-e38e-1b756c5f2537.png "スクリーンショット 2013-11-29 17.30.18.png")

ノリノリなひとたちがいました。

ご要望次第で発注しますので、他にもアイデアあればぜひお送りください。

P.S. 別の人との会話では陣羽織とかニッカポッカとかも出ていて、それはそれで大変そうです (；´Д｀)
PhpStormとは？

![PHP_IDE____JetBrains_PhpStorm.png](https://qiita-image-store.s3.amazonaws.com/0/20074/5406082a-0b18-e4f2-5a93-3e76eab7afab.png "PHP_IDE____JetBrains_PhpStorm.png")

こんばんは。狂気のAdvent Calendar企画が始まりました。

## PhpStormとは？

PhpStormとはチェコの[JetBrains](http://www.jetbrains.com)社が開発しているIDEです。
名前の通りPHP用のIDEですが、兄弟製品の[WebStorm](http://www.jetbrains.com/webstorm/)というJavascript・HTML用のIDEを完全内包しているため、Javascriptだけを書く場合にも非常に心強いIDEとなっています。

※ちなみに正式名称はPHPStormではなくPhpStormです。よく間違われてます。

兄弟IDEである[IntelliJ IDEA](http://www.jetbrains.com/idea/)にもPHPプラグインがあり、それを入れることで擬似的にPhpStormのような使い方をすることもできます。
(完全に専用IDEなわけではないので若干PHP絡みの挙動が怪しかったり、プロジェクトが開けなかったりすることもあります)

## 特徴
- 他のIDEと比べて軽い
- UIかっこいい
- コード補完がとにかく優秀
  - ライブラリとか自作クラスとかも補完してくれるよ！
- 有償($99)

とにかく補完が優秀です。あとカッコイイ。カッコイイは正義。

## ちょっとイケてないところ
- ライセンスは年間更新(アップデートしなければ不要)
- プラグインがあまり多くない
  - プラグイン作成の敷居がめちゃくちゃ高いので、コミュニティがあまり活発でない
- 設定ファイルはjarファイル

ライセンスはちょっとややこしく、購入してから1年間は製品のアップデートが受けられます。が、それ以降もアップデート対象とするには年額を支払う必要がある、ような感じです。
JetBrains製品は大体1年に1回メジャーアップデートがされるので、購入した時点のバージョンから最低1回はメジャーアップデートが受けられます。
(例えば今日時点でPhpStorm7を購入すれば、来年の8のアップデートまで可能)

設定ファイルはjarファイルなので、DropBoxとかに入れておけば各PC間で同じ設定を共有出来たりします。

ちなみに、兄弟製品の[IntelliJ IDEA Advent Calendar](http://qiita.com/advent-calendar/2013/intellij)もあるみたいなので合わせて読んで頂くといいとおもいます。

2日目も私です。お楽しみに！
Gentoo Wikiの翻訳

パッケージ開発者だけど、カジュアルに翻訳について書きます。

[Gentoo Wiki](https://wiki.gentoo.org/wiki/Main_Page) がオープンしてから2年ほど経ちますね。GentooのオフィシャルのドキュメントもWikiに移転されつつあり、さらにGentooの各プロジェクトページも[Wikiへの移転](http://wiki.gentoo.org/wiki/Project:Wiki/Project_Page_Migration_Status)が進んでいます。

このようにだんだんと重要度を増しているGentoo Wikiにも翻訳機能がついていることをご存知でしょうか。
今回は翻訳の始め方・やり方について書いてみます。

## 翻訳者アカウントの取得
Gentoo Wikiの翻訳を始めるには、まずWiki自体に登録する必要があります。Wikiの右上「Create account」からアカウントを作成しましょう。

次にそのアカウントで翻訳ができるように翻訳者権限を取得します。
[Gentoo Wiki:Translator account requests](https://wiki.gentoo.org/wiki/Gentoo_Wiki:Translator_account_requests)のページを編集し、自分のアカウント名と翻訳したい言語(日本語)を書きます。たとえば、以下のようになります。

```
; [[User:Naota|Naota]]
* Languages I would like to translate into: Japanese
```

## 翻訳をする
翻訳できるページは[翻訳統計](https://wiki.gentoo.org/wiki/Special:LanguageStats)のページで見ることができます。統計ページの左欄をクリックすると、翻訳メッセージのリストが表示されます。
各メッセージをクリックすると入力欄が開くので翻訳を入力しましょう。あとはもうひたすら翻訳していくだけですね。がんばってください。
PythonでNetCDFの読み書き

NetCDFを扱うときのメモ

#### ChangeLog
- 2018/07/04　欠損値の指定方法を追記
- 2015/09/04　コメント内容の反映，書き込み方法の追記

## 読み込み

NetCDFはnetCDF4モジュールで読み込めます．
[Githubページ](https://github.com/Unidata/netcdf4-python)からダウンロード＆インストールするか，
MacならAnaconda、WindowsならPython(x,y)等に標準でついてます．

```python
import netCDF4

nc = netCDF4.Dataset('filename.nc', 'r')
dim = len(nc.dimensions['dimname'])
var = nc.variables['varname'][:]

nc.close()
```

## 書き込み

```py
import netCDF4
from numpy import dtype

# オブジェクトを作成し，各次元数を設定します．

nc = netCDF4.Dataset('filename.nc', 'w', format='NETCDF3_CLASSIC')
nc.createDimension('ntime', len(time_out))  # e.g. time_out = [0, 1, ...]
# nc.createDimensions('ntime', None)        # unlimitedにする場合
nc.createDimension('xi', x)                 # e.g. x = 10
nc.createDimension('eta', y)                # e.g. y = 10

# その後，各変数を定義します．
# 以下の例では，時間，緯度，経度，3次元変数を定義します．

time = nc.createVariable('time', dtype('int32').char, ('ntime',))
time.long_name = 'time of test variable'
time.units = 'days since 1968-05-23 00:00:00'

lon = nc.createVariable('lon', dtype('double').char, ('eta', 'xi'))
lon.long_name = 'east longitude'
lon.units = 'degree of east longitude'

lat = nc.createVariable('lat', dtype('double').char, ('eta', 'xi'))
lat.long_name = 'north latitude'
lat.units = 'degree of north latitude'

var = nc.createVariable('varname', dtype('double').char, ('ntime', 'eta', 'xi'))
var.long_name = 'test variable'
var.units = 'unit of test variable'

# 最後に，予め np.ndarray 等で作成しておいた値を代入します．

time[:] = time_out
lon[:,:] = lon_out
lat[:,:] = lat_out
var[:,:,:] = var_out

nc.close()
```

### 欠損値の指定方法

特定の値を欠損値扱いにしたい場合，変数作成時に`fill_value`を設定してやれば良い．


```py
# -999を欠損値とする場合

var = nc.createVariable('varname', dtype('double').char, ('ntime', 'eta', 'xi'), fill_value=-999)
```
（2018/07/04追記，Thanks @yutabvb）
gVimで新しいgVimのウィンドウを開く

`:!start gvim`で開けるそうだ。

Ctrl+Nで開くようにした。

```vim:.gvimrc
if has("win32")
	nnoremap <C-N> :!start gvim<CR>
endif
```

via: https://twitter.com/hail2u_/status/407060552351879168
高品質のコードを書くための書籍


「リーダブルコード」という本の付録で勧められている本です。

## このリストの活用方法

・自分用の読書リスト
・「良いコードを書くために必要な参考図書です。」とURLで簡単に伝える

## Code Complete 第２版<上><下>

スティーブ・マコネル著

## リファクタリング --- プログラムの体質改善テクニック

マーチン・ファウラー著

## プログラミング作法

ブライアン・カーニハン、ロブ・バイク著

## 達人プログラマー --- システム開発の職人から名匠への道

デビッド・トーマス著

## Clean Code --- アジャイルソフトウェア達人の技

ロバート・C・マーティン著
Jenkinsビルド後の処理でRedmineにチケット登録ができるプラグインを作った話

こんにちは。Advent Calendar初参加です。
去年作ったJenkinsプラグインの紹介という、1年前のネタですが、このまま放置しておくのももったいないのでこの機会に晒してみます。

# Jenkins Redmine Posttaskプラグイン紹介

* 概要

Jenkinsの「ビルド後の処理」に、「ビルド失敗時にRedmineにチケット登録をする」処理を追加できます。
（毎ビルド常にチケット登録する事も可能です）

ビルド結果の通知をメールではなくRedmineに登録してほしい場合や、ビルド失敗時の対応がSCM外にも発生する場合など、ジョブの実行結果に対する対応をRedmineに蓄積しておきたい場合に使う事を想定しています。

* ソースコード

https://github.com/KokawaTakashi/redmine-posttask-plugin

* インストール方法

作りが中途半端なため、Jenkins本家に取り込んでもらうのは躊躇しました。
githubに、hpiファイルを置いてあります。
https://github.com/KokawaTakashi/redmine-posttask-plugin/downloads
(githubの手動ファイルアップロードは非推奨になっているので、そのうち消えるかもしれません。)
こちらの **redmine-posttask-plugin.hpi** を、 `<JENKINS_HOME>¥plugins` フォルダに置くか、Jenkinsのプラグインの管理の高度な設定からインストールする事ができます。

# 経緯

* 2012/7 [Jenkinsハッカソン](http://connpass.com/event/807/)に参加、開発開始

* 2012/10 まともに動く最低限のものを公開

ゲーム開発環境勉強会 CI Boot Camp でというイベントで使ってみました。
その時の資料は公開されているので、試してみる際の参考にして頂ければ。
http://www.slideshare.net/TakashiKokawa/cibc-work-kokawa

* その後、放置

本業の方が忙しくなったため、その後ほとんど手をつけれていませんでした…orz

# できていない部分とこれから

できていない部分がたくさんあります。

* 任意の担当者の設定ができない(コミッターに自動設定したり)
* ウォッチャーを設定したい(依存しているredmine-java-apiが2013/3にウォッチャー対応したので対応)
* 本文(Description)をデフォルト以外にすると、ジョブの実行結果が埋め込めない

などなど。

このあたりはちゃんとしたいなーと思いつつ、プラグイン内でユーザ一覧を取ってきてプルダウンメニューで設定できるようにしたり、環境変数を展開するようにする方法を調べる前でずっと止まっている感じです。
この記事で反響があればがんばろうかなーとか、むしろ Pull Request 飛んでこないかなーとか、そんな事を思いつつ、初日の投稿を終わりたいと思います。

進捗があれば、Advent Calendar後半でまた記事にしようかと思います！
（そのために初日をとりました！）

以上、 Jenkins CI Advent Calendar初日の記事でした。
MacでWindowsのCDドライブを使ってオーディオCDをiTunesに取り込む

リモートディスクではできなくて困った

> 注意：以下のタイプのディスクや操作は、DVD または CD 共有でサポートされていません。
> 
> DVD ムービー
> オーディオ CD
> ゲームディスクなど、コピーガード (複製防止機能) がかかっているディスク 
> Microsoft Windows (Boot Camp で使用) または Mac OS X などのオペレーティングシステムのインストールディスク。
> CD または DVD の作成
http://support.apple.com/kb/HT5287?viewlocale=ja_JP


### iTunesのホームシェアリングを使えば一手間かかるけどできる

1. windowsのiTunesに取り込む
1. iTunesのホームシェアリングを設定しmacから見えるようにする
1. macで共有中の曲を選択肢「取り込む」

そのうち外付けのドライブ買っちゃいそう
1分で実現できるjavascriptにおけるconsoleまわりの有用なテクニック4つ

jsのconsoleまわりのテクニックはいろいろありますが、個人的に有用だと思ったものにしぼって紹介します。
chromeなら、command + option + jでconsoleを開いて下記のコードを貼りつければ実際に動きを確認できます(1分でできます!!)。
##console.logの出力結果をcssで装飾する
###出力例
![スクリーンショット 2013-12-01 14.54.04.png](https://qiita-image-store.s3.amazonaws.com/0/1630/6e4aef37-8886-ad0c-1e4d-7da2fecd322e.png "スクリーンショット 2013-12-01 14.54.04.png")

###サンプルコード

```javascript:console.log
console.log("%csuccess", "background-color:#5bb75b;color:white");
console.log("%cfail", "background-color:#da4f49;color:white;font-size:30px");
```

##実行時間を計測して出力する
###出力例
![スクリーンショット 2013-12-01 15.26.41.png](https://qiita-image-store.s3.amazonaws.com/0/1630/7bac6144-fb22-8941-4ab1-0785735a64ec.png "スクリーンショット 2013-12-01 15.26.41.png")

###サンプルコード

```javascript:console.time
console.time("time test1")
console.time("time test2")
console.timeEnd("time test1")
console.timeEnd("time test2")
```

##consoleの出力内容をグルーピングして可読性を向上させる
###出力例
![スクリーンショット 2013-12-01 15.21.58.png](https://qiita-image-store.s3.amazonaws.com/0/1630/89b4fcc4-4e90-7fda-9ae0-7963a660d4c8.png "スクリーンショット 2013-12-01 15.21.58.png")

###サンプルコード

```javascript:console.group.js
console.group("group test1");
console.log("test1");
console.groupEnd("group test1");
console.group("group test2");
console.log("test2");
console.groupEnd("group test2");
```

##条件式によって出力するかしないかを判断する
###出力例
![スクリーンショット 2013-12-01 14.58.16.png](https://qiita-image-store.s3.amazonaws.com/0/1630/2ce45cac-00b6-6f72-43bd-da3b00dd1a59.png "スクリーンショット 2013-12-01 14.58.16.png")

###サンプルコード

```javascript:console.assert
//console.assertの第一引数がfalseの場合、第二引数が表示されます
//trueの場合は何も表示されません。
console.assert(true,"trueだと何も表示しない")
console.assert(false,"falseだとこの内容を出力する")
```

##あとがき
consoleには他にも色々メソッドがあります。気になった方は、consoleに紐づくメソッドを調べてみるとよいかもしれません。
VB.NET C#/Java/Scala/Rubyを超える至高の言語

私はQiitaに一言言いたい。なぜVB.NETのタグがないのかと。
私はGitHubに一言言いたい。 Visual BasicはVBとVB.NETで区別すべきじゃない!?と。
そして一言言っておきたい。これは別に他言語に対しケンカを売っているわけではなく、VB.NETの低すぎる地位を改善するためのものです、と。
こちらの記事もぜひご一読いただきたい。[Visual Basicさん、やればできる子なのに。](http://el.jibun.atmarkit.co.jp/wonderfulworld/2012/08/visual-basic-ea8b.html)

今まで色々な言語でプログラムを書いてきたが、VB.NETの書きやすさは群を抜いていると思う。また、書きやすさだけでなく、C#から流れてきたオブジェクト指向・関数言語型的実装も取り込んでいる多機能な言語だ。
「VB.NET?Excelマクロでしょ?」「VB.NET?昔使われてた低機能言語でしょ?」「VBといったらコードが汚くて読みづらいったらない」・・・

**そんなイメージの一切を払拭する。そのための記事である。**

##VB.NETの凄さ①　可読性
VB.NETでの宣言は以下のように行う(タグはないけどコードハイライトはある。サンキューQiita)。

```vbnet:declaration
Dim hoge As String = "xxx" '変数の宣言
Function func(name As String) As String '関数(メソッド)の宣言(戻り値がない場合Sub)
```

一見して分かりやすいかどうかは人によると思うが、初めて見る人にとっては、JavaやC#より分かりやすいと断言できる。なぜか？ **言語の順序と宣言方法が一致しているからである。**

```
変数 hoge は String型で 値は "xxx" である。
関数 func は引数 name で戻り値はStringである。
```

このように、宣言方法が言語の自然な文法順序と一致する。多くの言語は変数の宣言はまず型から、関数の宣言は戻り値が先頭に来るが正直これは分かりやすい順序とは言えない。この可読性の高さはVB.NETの強みの一つである。`MustInherit`や`MustOverride`、`Overridable`なども分かりやすさを意識した宣言文と思う(これらはC#(に限らないが)では`abstract`や`virtual`で、プログラムの概念を理解した上でないと分かりにくい)。

なお、変数宣言については複数同時も可能だ。関連する変数宣言を1ラインにまとめ可読性を上げることができる(@corocorococoro さんより。サンキューです。)。

```vbnet
Dim errorCount , totalCount  As Integer
Dim message As String , occuredAt As Integer
```

また、JavaやC#で下記のようにイライラしたことはないだろうか。
`SuperLongNameClassHoge a = new SuperLongNameClassHoge()`
長いクラス名を二度書かないといけないこの地獄。VB.NETは以下のように書ける。

**`Dim a As New SuperLongNameClassHoge() `**

・・・グレイト。これだけでVB.NETを選ぶのに十分な理由だ。
※C#はvarを使えば同様に書くことは可能だが、あんまり型を省略していると怒られるかもしれないので注意

##VB.NETの凄さ②　機能の豊富さ
よく言われるオブジェクト指向・関数型、これらは当然VB.NETにも実装されている。C#も同様だが、これに加えLINQに代表される.NET Frameworkの強力な機能も魅力の一つだ。その力の一端をお見せしよう。
レンタルビデオで有効期限が今日切れたものについて期限切れのメッセージを書く、という例。

```vbnet
Dim expired = From v As Video In Videos Where v.expire < DateTime.Now Select v
expired.ToList().ForEach(Function(x) x.notification = "有効期限切れです" )
```

・・・アンビリーバブル。配列要素に対するクエリ操作を可能とするLINQ、匿名関数を利用した要素処理。
これが.NET。これがVB.NETの真の姿である。

VB.NETの機能はこれに留まらない。特に文字列周りの処理。
半角全角の変換やひらがなカタカナ変換など、通常はライブラリが必要な処理もVB.NETは一発で出来る(Rubyのこのエンコード周りのぞんざいさは正直どうかしてると思う)。

```vbnet
Dim hankaku As String = StrConv("あいうえおかきくけこ",vbNarrow)
Dim katakana As String = StrConv("あいうえおかきくけこ",vbKatakana)
```
・・・アメージング。こんな日本的処理そうそうないよ、と思うかもしれないが、それはあまちゃんである。
システムの入り口はほぼ検索から始まり、検索とは非定型のユーザー文字列を内部データとマッチングさせる処理である。「どらえもん」でも「ドラエモン」でも「ドラえもん」でも同じくヒットさせる必要があるのだ。
VB.NETはVB時代に培われたそうした必須機能もしかと継承しているのである。これは長年生きている言語にしか出せない力だ。

##VB.NETの凄さ③　開発環境によるサポート
{ } ; 。これらは一回省略する快感を覚えるとなかなか元に戻れない。VB.NETは括弧いらず・行末いらずだ。
コードの補完が効いていればまだ良いのだが、C#については補完が { だけで一行取りたがるので正直辟易とする(namespaceがあればなおさら)。そして、なぜか閉じる括弧を自動的に入れてくれない。

その点VB.NETのコード補完はかなり強力だ。`If`なら`End IF`、`For`なら`Next`とバリバリコードを補完してくれる。私はC#とVB.NET両方書くが、VB.NETの方が明らかに優遇されている感がある(補完がなければタイピング量が多すぎるというのも事実だが)。

書いていて全くストレスがたまらない。これもVB.NETの魅力の一つである。


まだ語り尽くせないところは多いが、少しでも魅力を感じていただけたら幸いである。
そして「VB.NETいいと思うんだけどそう言うの恥ずかしいな」と思っているそこのあなた！には、ぜひ積極的に情報を発信していただきたいと思うのだ。
プロジェクト管理WebアプリBrabio!のガントチャートをプレゼン用に綺麗に出力する


ドキュメンテーションAdvent Calendarの1日目として、
いきなりイレギュラーですが「ガントチャート」をテーマにお送りします。

私は大学院に所属する学生で、修了までの計画などを立てる必要に駆られてガントチャートを作ったりしています。
ガントチャート作成ソフトは色々試してみたのですが、これから紹介する[Brabio!](http://brabio.jp/)を最近発見し、実際に使っています。

## Brabio!とは

Brabio!は工程管理＆情報共有のための、ウェブベースで動作するクラウド型アプリケーションです。
Brabio!では、以下のようなグラフィカルな画面でガントチャートを編集できます。

![Brabio!の画面例](https://qiita-image-store.s3.amazonaws.com/0/10473/b520dc17-5f81-868b-2e3f-7f37dd7e8388.png)


操作方法は、最初のチュートリアルに従えばだいたい分かります。
慣れてしまえば、非常に直感的に編集できる点が良いです。

Brabio!についての詳しい紹介は、以下を参照してください。

* [職場がExcel主義でもOK！ メンバーやプロジェクトの進捗をガントチャートで管理する「Brabio!」 : ライフハッカー［日本版］](http://www.lifehacker.jp/2013/08/130808brabio.html)


## Brabio!のガントチャートをRで綺麗に出力する

しかし、Brabio!がエクスポートするExcelファイルは、数ヶ月にまたがる長い期間を表示できず、スクロールする必要があります。

実際、研究用の発表で使おうと思ったのですが、とてもプレゼンには使いにくい形でした。
プレゼンなどで実際に使うために、ガントチャートを画面1枚に収めたいところです。

![Excelでのエクスポート例](https://qiita-image-store.s3.amazonaws.com/0/10473/129999ed-7bc5-28b7-4d0f-2187bf579d2b.png)

一方で、Brabio!ではCSV形式でもガントチャートをダウンロードできます。

そこで、「画面1枚ガントチャート」を実現するために、
Brabio!でエクスポートしたCSVをRスクリプトで整形し、PDFとして出力させます。

### インストール

#### 動作環境
* Mac OS X 10.9 Mavericks
* R 2.15.0 GUI 1.51 Leopard build 64-bit (6148)

WindowsやLinuxの場合は、フォントなどの設定をいじる必要があるかもしれません。

#### 必要なもの
* R 本体
	* インストール方法は以下を参照：[R のインストール - RjpWiki](http://www.okada.jp.org/RWiki/?R%20%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB)
* Brabio!からエクスポートしたCSV (brabio_export.csvとする)
* Rソースコード: brabio_gantt.R ([sky-y/brabio_gantt_r](https://github.com/sky-y/brabio_gantt_r))

brabio_gantt.RはGitHubに置いているので、Gitを使っている人は適当なディレクトリでcloneしても使えます。

	$ git clone https://github.com/sky-y/brabio_gantt_r.git


#### インストール手順

Rコンソールで必要なパッケージをインストールします。

	> install.packages("ggplot2", dependencies=TRUE)
	> install.packages("reshape", dependencies=TRUE)

### 使い方
大まかな手順としては、まずグラフを直接出力して出力イメージを確認し(`is.output=FALSE`)、その後でPDF出力(`is.output=TRUE`)します。

#### 1. brabio_gantt.Rを開いて設定を編集する

ファイル末尾の設定部分をいじります。

入手したCSVの名前(brabio_export.csv)を自分のCSVファイル名に変更し、is.outputをFALSE (グラフを直接出力)にします。

	input.csv <- "brabio_export.csv" #入力(CSV)
	output <- "brabio_gantt.pdf" 
	is.output = FALSE # 直接グラフを出力する場合はFALSEにする

#### 2. brabio_gantt.R を読み込む(source)
Macの場合、command-Eで開いているRソースを読み込めます。

#### 3. Rコンソールでグラフプロットを実行する
Rコンソールで以下を打ち込むと、グラフが表示されます。

	> myplot

グラフウィンドウのサイズを適当に変更して、出力グラフの形を整えてください。

出力例：

![Rの出力例](https://qiita-image-store.s3.amazonaws.com/0/10473/7b9ceab7-1375-fddc-1ac3-67a2b0b3c6c2.png)

#### 4. PDFでグラフを出力する

先ほどと同様に、ファイル末尾の設定部分をいじります。

出力PDFファイル名を適当に決めて、is.outputをTRUE（PDFにグラフ出力）にします。

	output <- "brabio_gantt.pdf" 
	is.output = TRUE # PDFにグラフを出力する場合はTRUE

最後に、もう一回brabio_gantt.Rを読み込む(source)と、PDFが出力されます。

これで、プレゼンに使いやすい形でガントチャートが出力されました！

## おまけ1：ggplot2の紹介

R標準のグラフ機能よりもおしゃれで機能的にも洗練されたグラフライブラリです。

ggplot2の紹介記事は以下にあります：

* [Rのグラフィック作成パッケージ“ggplot2”について｜Colorless Green Ideas](http://id.fnshr.info/2011/10/22/ggplot2/)

## おまけ2：おすすめの環境
[RStudio](http://www.rstudio.com/)というIDEがおすすめです。

解説については [Rstudio事始め](http://www.slideshare.net/TakashiYamane1/rstudio) を参考にしてみてください。

## 宣伝：Advent Calendar執筆者募集

もしこのAdvent Calendarを気に入ってもらえたら、ぜひ執筆してみてください。

まだまだ募集しています。

[ドキュメンテーション Advent Calendar 2013 - Qiita [キータ]](http://qiita.com/advent-calendar/2013/documentation)
__await / __resumable : 時間制限のついたDialog

__await / __resumable のサンプル
時間制限のついたDialog

```cpp
    void MainPage::OnButtonClick(Object^ sender, RoutedEventArgs^ e) __resumable {
        MessageDialog msgdlg(L"ただし5秒以内に", L"色を選ぶがよい");
        msgdlg.Commands->Append(ref new UICommand(L"赤", nullptr, Colors::Red));
        msgdlg.Commands->Append(ref new UICommand(L"緑", nullptr, Colors::Green));
        msgdlg.Commands->Append(ref new UICommand(L"青", nullptr, Colors::Blue));

        cancellation_token_source canceller;

        // タイマーを仕掛ける。
        TimeSpan timeSpan;
        timeSpan.Duration = 5000 * 10000;   // 5 seconds
        DispatcherTimer timer;
        timer.Interval = timeSpan;
        // タイムアウト時にはタスクをキャンセルする
        timer.Tick += 
            ref new EventHandler<Object^>([canceller](Object^, Object^) 
                                 { canceller.cancel(); });

        timer.Start();
        auto asyncOp = create_task(msgdlg.ShowAsync(), canceller.get_token());
        IUICommand^ command = nullptr;
        try {
            command = __await asyncOp; 
        } catch ( task_canceled ) {
            // taskがキャンセルされたらここに飛び込み、
            // command は nullptr のまま
        }
        timer.Stop();

        if ( command != nullptr ) {
            // 選ばれた色を取得し
            Color clr = safe_cast<Color>(command->Id);
            // 背景ブラシに設定する
            contentGrid->Background = ref new SolidColorBrush(clr);
        }
    }

```
Selenium の locator とうまくつきあうための話


この記事は、[Selenium Advent Calendar 2013](http://www.adventar.org/calendars/128)の1日目の記事です。

## Selenium の locator

Selenium を使って、ブラウザの操作を自動化するときに、どのリンクをクリックするか、どのフォームに値を入力するかを指定する必要があります。

画面上のどの要素を操作するかを指定するための情報をSeleniumではlocatorといいます。Seleniumでは、ブラウザ（厳密にいうとSelenium Server)とクライアント間の仕様として[JSON Wire Protocol](https://code.google.com/p/selenium/wiki/JsonWireProtocol)が定められており、利用できるlocatorもそれに従います。

要素を探索する場合 [/session/:sessionId/element](https://code.google.com/p/selenium/wiki/JsonWireProtocol#/session/:sessionId/element) に、locatorを含むJSONをPOSTするのですが、その locator として、class name、css selector、id、name、link text、partial link text、tag_name、xpath と様々なものが利用できます。

様々なものが利用できるのですが、逆にいろいろな書き方ができてしまうため、共有された方針がないと、コードの統一性や可読性が損なわれてしまいます。
また、デザインの変更に弱いような書き方をしてしまった場合、コードのメンテナンスが非常に大変になります。

## locator の方針

そこで、コードの可読性・デザインの変更への耐性を踏まえて、以下の方針を定めています。

* input の入力の際には、nameを利用する
* input の入力以外（リンク、画像、ボタン）の指定は以下の優先順位で利用する
 1. css selector
 1. xpath
 1. partial link text (link text)

### input の入力では name 属性を利用

input の入力だけは特別に name 属性でマッチさせます。

```html
<label for="password_input" />パスワード</label>
<input id="password_input" class="hoge" type="password" name="pass" />
```

例えば、上記のような input があった場合、例えば以下のような指定が可能です。

* id で指定
* class で指定
* css selector や xpath で type が password の input を指定
* 「パスワード」という文言でlabelを検索し、そこに紐づくinputを取得する
* name で指定

この様々な方法の中でnameを利用するのが最もよいのは、画面の変更に最も強いのが name 要素だからです。

一般に、上記のようなinputを含むformがある場合、サーバーには`pass=xxx`といったようにname属性をkeyとして、multipartリクエストが送信されます。
したがって、name属性はformの送り先であるエンドポイントのインターフェースとなり、ここの変更（追加・削除は容易にありえますが）はあまりないはずなので、これを利用することで変更に強いコードとなります。

### input 以外では css selector を利用

input 以外では、css selector を優先的に利用します。要素のidやclassを利用して指定する場合でも、あえて "#hoge" や ".fuga" のように、css selector 形式として記述を統一します。

idセレクタやクラスセレクタといった単純なセレクタだけではなく、子孫セレクタ・隣接セレクタ・属性セレクタといったものを使いこなせるとよいです。これらをついついXPathで書いてしまうと、可読性が落ちてしまうことが多いので注意が必要です。

最後にそれぞれの利用例を紹介しておきます。XPathに比べて容易にどういったものか理解できるかと思います。

#### 子孫セレクタ

例：section#hoge 以下の li を指定する

```css:css
#hoge li
```

```XPath:XPath
id('hoge')//li
```

#### 隣接セレクタ

例：h1 の直後にある p を指定する

```css:css
h1 + p
```

```XPath:XPath
//h1/following-sibling::p
```

#### 属性セレクタ

例： type が reset の input を指定する

```css:css
input[type='reset']
```

```XPath:XPath
//input[@type='reset']
```

# まとめ

Selenium でブラウザ操作の自動化をするときに、要素の指定に様々な指定方法があり、可読性の低い指定の仕方をしてしまったり、変更に弱い指定の仕方をしてしまったりすることが多いです。

今回紹介した方針は銀の弾丸ではないですが、継続してメンテナンスをしていく上で有効となると思います。
楽しい Selenium ライフを。


明日は、[@ito_nozomi](https://twitter.com/ito_nozomi)さんです。
また、[Selenium Advent Calendar 2013](http://www.adventar.org/calendars/128)はまだまだ募集中ですので、ぜひとも参加をよろしくおねがいします！
Jmeter2.9から結果ファイルのデフォルトがcsvになってた（Jmeterをコマンドラインで実行する）

パフォーマンステストツールでおなじみのJmeterは、コマンドラインで実行することが出来ます。
以下の例ではsample.jmxのテストケースを実行し、その結果をresult.jtlに保存するコマンドです。

例）
jmeter.bat -n -t ../testcase/sample.jmx  -l ../testcase/result.jtl

-n　コマンドライン実行
-t　テストケースを指定
-l　結果ファイルを指定

*そのほかのオプションは以下の公式マニュアルにあります。
http://jmeter.apache.org/usermanual/get-started.html#non_gui

このように記述すると、jtlはxmlで記述されたファイルになります。

しかし、バージョン2.9から出力結果はCSVになったようです。
http://jmeter.apache.org/changes_history.htmlより以下の記述がある。
Result data are now saved to CSV by default (jmeter.save.saveservice.output_format in jmeter.properties)

こんな指摘もありました。
http://mail-archives.apache.org/mod_mbox/jmeter-issues/201303.mbox/%3Cbug-54727-58895-igqnFrAwRW@https.issues.apache.org/bugzilla/%3E

今までのようにxml形式で出力するには
 -Jjmeter.save.saveservice.output_format=xml
のオプションを指定します。

例）
jmeter.bat -n -Jmeter.save.saveservice.output_format=xml　-t ../testcase/sample.jmx  -l ../testcase/result.jtl

ちなみにこのあたりの設定は${JMETER_HONE}/bin/jmeter.propertiesにあります。
なので、その他の設定も同様のコマンドで設定できそうです。（これは未確認）
WindowsでJenkinsの変数を使う

Jenkinsでは環境変数があらかじめ定義されています。
これは、【ビルド】→【ビルド手順の追加】→【Windowsのバッチコマンドの実行】を追加すれば、”
ビルドから利用可能な環境変数の一覧”というリンクから参照できます。

例）
BUILD_NUMBER
当該ビルドの番号。例 "153"
BUILD_ID
当該ビルドID。例 "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
：

これをシェルのなかで呼び出せば使用できます。
Windowsなので%BUILD_NUMBER%のように使用します。

ファイルパスの変数（%WORKSPACE%）を使用する場合は、"で囲む方が無難です。
（Jenkinsのデフォルトインストールの場所がProgram Files等のスペースを含むため）

例）
jmeter.bat -n -t ../testcase/sample.jmx  -l "%WORKSPACE%\%BUILD_ID%_result.jtl"
この様にしてやれば・・
jmeter.bat -n -t ../testcase/sample.jmx  -l "C:\Program Files\Jenkins\workspace\jmetertest\2013-12-01_11-51-23_result.jtl"
の様に復元されます。
知ってると色々と世界が広がるかもしれないHaxeのコンパイルオプション

知ってると便利かなーと思ったコンパイルオプションをリストアップしてみました。
コンパイル対象はJSに限定しています。

# 基本オプション
#### `-cp コンパイル対象ファイル・ディレクトリ`
コンパイル対象のhxファイルが置かれたディレクトリを指定します
#### `-main クラス名`
スタートアップクラスを指定します。
packageを作成している場合は、クラス名の前に指定します
#### `-js 出力JSファイルパス`
出力するJSファイルを指定します。
#### `-lib ライブラリ名`
利用するライブラリを指定します。
#### `--next`
複数のコンパイルを記述する場合、`--next`に続けてコンパイル対象ファイルなどのオプションを記述します。

```hxml:例
-cp src/pj1
-main pj1.Main
-js pj1.js

--next

-cp src/pj2
-main pj2.Main
-js pj2.js
```

# コンパイル制御
## コンパイル対象共通
#### `-D コンパイルフラグ`
コンパイルフラグを設定した時のみ、コンパイル対象のコードをコンパイルします。

```hx:例
class Main {
  import js.Lib;

  public static function main() {
    #if COMPILE
    Lib.alret("defined compile flg.");
    #end
  }
}
```

この時、コンパイルオプションに`-D COMPILE`を指定しなかった場合、
`Lib.alret("defined compile flg.");`と記述された行は無視されてコンパイルされます。
#### `-resource ファイルパス@キー`
ファイルパスに指定したリソースファイルをプログラム中から指定したキーを利用して呼び出す事が出来ます。
指定したファイルはシリアライズされコンパイル後のコード中にインラインで埋め込まれます。
#### `-dce no`
コンパイル時に不要なコードが削除されません。
#### `-dce std`
コンパイル時に不要な標準ライブラリのコードが削除されて出力されます。
これはhaxeのコンパイル時の標準オプションです。
#### `-dce full`
コンパイル時に不要なコードが削除されて出力されます。
#### `--no-output`
コンパイル後のファイルを出力しません。
#### `--no-traces`
コード中の`trace()`を無視してコンパイルします。


## javascript用オプション
#### `-D js-classic`
出力するJSコードがグローバルスペースに展開されます。
（デフォルトで出力されるJSコードは即時関数でラップされ、strictモードになります）

# その他
#### `-cmd  shellコマンド等`
コンパイル後に実行したいコマンドを指定します。
例えば、jsファイルを生成後に圧縮するコマンドを指定しておく…といった使い方が出来ます。

#### `-xml ファイル名.xml`
コンパイル対象のコードからhaxedocで利用するためのxmlを出力します。

***

手元にflash環境が無いので調べられていないのですが、
`--gen-hx-classes`
というオプションがswfファイル？からhaxeのexternを生成するというようなオプションで非常に便利そうだなと思いました。




明日は@mandel59さんです。
よろしくおねがいします。
eclipseでSVN Kit1.4以上必要なとき

チェックアウトしようとしても、SVN KIT 1.4以上にしろ言われて、チェックアウトできず、困っていた際に、調べて見つけたもの

http://www.polarion.com/products/svn/subversive/download.php

ここのサイトにあるURLから手に入れられる

無事チェックアウトできました
特定のポート番号をListenしてるプロセスを特定する。


# Macの場合

netstat 単体ではポート番号をListenしているプロセスIDまでは特定できないので、lsof を使う。

```Bash
lsof -n -P -i :{portnumber}
```

-i  : ポート番号を指定する（IPアドレスにも対応してる？）
-P : ポート名を使用しない（ポート番号で表記する）
-n : ホスト名を使用しない（IPアドレスで表記する）
OpenGrokでAndroidソースコード検索

#OpenGrokでAndroidソースコード検索
Androidソースコード検索サービス
https://sites.google.com/site/devcollaboration/codesearch
これ便利ですよね。
好きなソースで検索したいですよね。
ということで、OpenGrok設置設定メモ。
誰かのページのコピペよせあつめでｓ。


#手順
##前提環境
VMWare, Ubuntu 12.04

##必要なソフトのインストール
sudo apt-get install ant exuberant-ctags tomcat6 tomcat6-admin jflex

##ソースのダウンロード
mkdir ~/og
cd ~/og
wget https://java.net/projects/opengrok/downloads/download/opengrok-0.11.1-src.tar.gz
wget http://jflex.de/jflex-1.4.3.tar.gz

tar xvzf jflex-1.4.3.tar.gz
tar xvzf opengrok-0.11.1-src.tar.gz
cp jflex-1.4.3/lib/JFlex.jar opengrok-0.11.1-src/lib/
cd ~/og/opengrok-0.11.1-src/

##設定ファイルの修正
$ ls /usr/lib/jvm
java-1.6.0-openjdk-amd64
java-6-openjdk-common
jdk1.6.0_45
java-6-openjdk-amd64
java-7-openjdk-amd64

上記にある適当なjavaを★に追加。
vi OpenGrok

```OpenGrok
    431                for dir in /usr/lib/jvm/sun-jdk-1.6 \
    432                           /usr/lib/jvm/sun-jre-1.6 \
    433                           /usr/lib/jvm/java-6-openjdk-amd64 \　←★追加
    434                           /usr/lib/jvm/java-6-sun
```

メモリを増量 (./OpenGrok index,update時にメモリ不足になる場合)
vi OpenGrok

```OpenGrok
    261     # OPTIONAL: JVM Options
    262     JAVA_OPTS="${JAVA_OPTS:--Xmx6144m}" ←★2048から6144に書き換え
```

##OpenGrokのコンパイル
cd ~/og/opengrok-0.11.1-src/
ant

##tomcatにweb app設置
sudo ./OpenGrok deploy

##認証を追加したい場合(ここではお試しでBASIC認証を追加)
sudo vi /var/lib/tomcat6/webapps/source/WEB-INF/web.xml

###`<web-app>`直下に以下を追加

```web.xml
<web-app>
...ここから追加
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>
        Authentication of BasicAuth
      </web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>basic</role-name>
    </auth-constraint>
  </security-constraint>

  <login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>UserDatabaseRealm</realm-name>
  </login-config>
ここまで追加...
</web-app>
```

###ユーザーの追加
sudo vi /etc/tomcat6/tomcat-users.xml

```tomcat-users.xml
<tomcat-users>
  <role rolename="basic"/> ←★追加
  <user username="test" password="testpassword" roles="basic"/> ←★追加
</tomcat-users>
```

###tomcatの再起動
sudo /etc/init.d/tomcat6 restart

##検索したいデータの設置(ここではCyanogenMod)
mkdir -p ~/cm/cm-10.2
cd ~/cm/cm-10.2
repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2
repo sync
mv .repo ../
sudo mv cm-10.2 /var/opengrok/src/
sudo chown root:root /var/opengrok/src/cm-10.2 -R　←これいらないかも

##初回のインデックシング
cd ~/og/opengrok-0.11.1-src/
sudo ./OpenGrok index

～完了するまでしばらく放置～

##2回目以降のインデックシング (新しいソースを置いた場合や、index処理でエラーで落ちた場合)
cd ~/og/opengrok-0.11.1-src/
sudo ./OpenGrok update

##できあがりの確認

vitrual machineのIPを指定して、ポート8080の/sourceにアクセス。
(VM内なら、http://localhost:8080/source/)

お試しで設定した認証がかかっているので、ID/PASSをいれる。
![og_basic.png](https://qiita-image-store.s3.amazonaws.com/0/33351/a7bd3e60-95c4-b5f9-43a8-2d043c2fcfbd.png)

ｷﾀﾜｰ*:.｡.:*･ﾟ(n'∀')ηﾟ･*:.｡.:*!!
![og_cm10_2.png](https://qiita-image-store.s3.amazonaws.com/0/33351/d302a1d3-c21f-a912-9be6-89b1f6908aa8.png)

##他のソースを追加する場合
/var/opengrok/src/
にソースを追加
cd ~/og/opengrok-0.11.1-src/
sudo ./OpenGrok update
をすると、topページのIn Project(s)に、「/var/opengrok/src/」に配置したフォルダ名で追加される。
AWSを便利に使う為の情報・ツール

AWSアドベントカレンダー1日目。
AWSを便利に使う為の情報やツールの情報を集めてみました。

※ざっと検索してまとめた情報なので、追記したい情報等があれば編集リクエストをおねがいします！(僕も思い出したら追記していきます。)


# 情報

## [AWSクラウドサービス活用資料集](http://aws.amazon.com/jp/aws-jp-introduction/)

ここに載っている情報でAWSにおける問題が全て完結しそうな位の情報があります。
全てのサービスの説明がわかりやすくslideshareとpdfで紹介されているのは凄い。
めっちゃおすすめ。

## [Amazon Web Services ブログ](http://aws.typepad.com/aws_japan/)

AWS公式のブログです。
新サービスの情報や、既存サービスのアップデートが投稿されています。
AWSのアップデート頻度が高いので、[中の人](https://twitter.com/horiuchi)をfollowするのが良いと思います。
[英語ブログはこちら](http://aws.typepad.com/)。

## [AWSタグ - はてなブックマーク](http://b.hatena.ne.jp/search/tag?q=aws)

はてなブックマークの"aws"タグがついたページです。
Web上の新着情報が勝手に集まるのは素晴らしい。

## [AWSクラウドデザインパターン](http://aws.clouddesignpattern.org/index.php/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8)

AWSを用いたクラウドを用いたデザインパターン集です。
サーバー構成で困った際にとても重宝します。
[英語版はこちら](http://en.clouddesignpattern.org/index.php/Main_Page)。

## [JAWS-UG](http://jaws-ug.jp/)

日本のAWSユーザーグループの情報になります。
定期的に開催されるイベント情報が載っています。

## [AWSに関する投稿 - Qiita [キータ]](http://qiita.com/tags/AWS)

QiitaのAWSタグはAWSに関する技術情報が集まってます。

## その他

- [AWS  SIMPLE MONTHLY CALCULATOR](https://calculator.s3.amazonaws.com/calc5.html?lng=ja_JP)
- [DevOPS + AWS](https://speakerdeck.com/naoya/devops-plus-aws-number-jawsug)


# ツール

## [GitHub - Amazon Web Services](https://github.com/aws/)

[aws-cli](https://github.com/aws/aws-cli)や[aws-sdk-ruby](https://github.com/aws/aws-sdk-ruby)を提供しているAWSのアカウントです。
公式でメジャーな開発言語のSDKを開発・メンテナンスしています。素晴らしい。

## [ec2ssh](https://github.com/mirakui/ec2ssh)

EC2を管理する際便利にしてくれるツールです。
@mirakui さんのブログ記事はこちらです。
[Amazon EC2インスタンスに簡単にSSHできるようになるツールec2sshを公開しました](http://blog.mirakui.com/entry/20101205/1291551625)

## [s3fs](https://code.google.com/p/s3fs/)

Amazon S3をファイルシステムとしてマウントすることが出来るようになります。
以前使ったことがありましたが問題なく使えました。