OmniAICreator/Qiita-1.07M huggingface dataset:
（github上で）mergeされたブランチを一括削除する

下記のようにエイリアス登録し、時々実行すると便利です！

```bash:
git-prune-branches () {
    git fetch --prune origin && git branch --merged origin/master | grep -vE ' master$|^\*' | xargs git branch -d
}
```

削除されるのは、ローカルのほかのbranch（例：master）にmerge済みかつサーバのorigin/masterでmergeされているもの限定なので安全です・・！1つでも差分が積まれていたり、サーバ側にはpushされていないと、削除対象になりません！

なお、必ずmasterやdevelopなどのブランチを予めgit pullしておく必要があります（しないと削除されない）。`-d`を`-D`に書き換えるとgit fetchのみで対応できるようになりますが、強制削除のオプションなので心配な方はそのまま使いましょう。

ちなみにdry-runも用意しておきました。

```bash:
git-prune-branches-dry-run() {
    git fetch --dry-run --prune origin
    git fetch origin && git branch --merged origin/master | grep -vE ' master$|^\*' | xargs echo git branch -d
}
```

参考にしたサイト：http://devblog.springest.com/a-script-to-remove-old-git-branches/
Rails+OmniAuthで認証画面が毎回出る

OmniAuthのTwitterログインで認証画面が毎回出る。

1. [Twitter Developer Site](https://apps.twitter.com)でログイン。
2. アプリを選択。
3. 'Settings'タブを開く。
4. 'Allow this application to be used to Sign in with Twitter'にチェックをつける。

上記の設定で解消しました。
RasberyPiでH.264映像配信。Macで受信

![Gstreamer.jpg](https://qiita-image-store.s3.amazonaws.com/0/3844/2cad65b8-ace1-896a-9ddb-43576a52b3de.jpeg "Gstreamer.jpg")

raspiのカメラを使って動画配信に挑戦してみました。何故かUSBカメラだとうまく動かない(T_T)

##インストール
###インストール(RasberyPi側)

前提としてカメラモジュールが動くように設定済みとします。

Gstreamerのインストール

```bash:インストール
sudo su -

echo "deb http://vontaene.de/raspbian-updates/ . main" >> /etc/apt/sources.list

apt-get update

apt-get install libgstreamer1.0-0 libgstreamer1.0-0-dbg libgstreamer1.0-dev liborc-0.4-0 liborc-0.4-0-dbg liborc-0.4-dev liborc-0.4-doc gir1.2-gst-plugins-base-1.0 gir1.2-gstreamer-1.0 gstreamer1.0-alsa gstreamer1.0-doc gstreamer1.0-omx gstreamer1.0-plugins-bad gstreamer1.0-plugins-bad-dbg gstreamer1.0-plugins-bad-doc gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps gstreamer1.0-plugins-base-dbg gstreamer1.0-plugins-base-doc gstreamer1.0-plugins-good gstreamer1.0-plugins-good-dbg gstreamer1.0-plugins-good-doc gstreamer1.0-plugins-ugly gstreamer1.0-plugins-ugly-dbg gstreamer1.0-plugins-ugly-doc gstreamer1.0-pulseaudio gstreamer1.0-tools gstreamer1.0-x libgstreamer-plugins-bad1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-0 libgstreamer-plugins-base1.0-dev
```

###インストール(Mac側 10.9系)
Gstreamerのインストール

```bash:インストール
brew install gstreamer
```

##実行

###配信処理
RasberyPiのIPが```192.168.0.3```だとしています。

```bash:配信

raspivid -t 999999 -w 1080 -h 720 -fps 25 -hf -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse ! rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=192.168.0.3 port=5555

```

###Macから受信

```bash:受信
gst-launch-1.0 -v tcpclientsrc host=192.168.0.3 port=5555 ! gdpdepay ! rtph264depay ! avdec_h264 ! videoconvert ! osxvideosink

```

RasPiのCPU負荷はFullHDでも20%くらいのようです。

![top.png](https://qiita-image-store.s3.amazonaws.com/0/3844/987845f5-ac1c-176a-8c92-2c4075a82c68.png "top.png")
elasticsearch-rubyがOSXにインストール出来ない



エラーが出たが、以下で解消したのでメモ。

## bundlerを使わない
```bash
gem install thrift -- --with-cppflags='-D_FORTIFY_SOURCE=0'
gem install elasticsearch-ruby
```

## bundlerを使う
```bash
bundle config build.thrift --with-cppflags='-D_FORTIFY_SOURCE=0'
bundle install
```

## 参考
* [Thrift gem fails to build on OS X Mavericks with 1.9.3 rubies](https://issues.apache.org/jira/browse/THRIFT-2219).
checkinstallで rpm パッケージの作成がエラーになる場合の対処


rpm パッケージを手軽に作成するために *checkinstall* は非常に便利ですが、現行の *checkinstall* にはインストール対象にファイルに対するシンボリックリンクが含まれるとrpmパッケージが作成できなくなる不具合がある様です。

この不具合は rpm パッケージ用の spec ファイルを生成する際にターゲットがディレクトリかシンボリックリンクなら **%dir** と出力しているために発生しています。
例えば **libhoge.so.X.Y** を **libhoge.so** にシンボリックリンクした場合などで libhoge.so がディレクトリ扱いとなってしまうために rpm の作成でエラーとなってしまいます。

そこで */usr/sbin/checkinstall* に以下のパッチを適用する事でシンボリックリンク先がディレクトリの場合のみ **%dir** を出力する様にします。

```
*** /usr/sbin/checkinstall	2014-05-21 12:29:30.000000000 +0900
--- /tmp/checkinstall	2014-05-22 10:52:39.060456955 +0900
***************
*** 2428,2434 ****
  # Prepare directories to be included in the .spec file
  mv ${TMP_DIR}/newfiles ${TMP_DIR}/newfiles.tmp
  cat ${TMP_DIR}/newfiles.tmp | while read line; do
!    [ -d "${BUILD_DIR}/${line}" -o -L "${BUILD_DIR}/${line}" ] && echo -n "%dir " >> ${TMP_DIR}/newfiles
     echo "\"/${line}\"" >> ${TMP_DIR}/newfiles
  done
  
--- 2428,2435 ----
  # Prepare directories to be included in the .spec file
  mv ${TMP_DIR}/newfiles ${TMP_DIR}/newfiles.tmp
  cat ${TMP_DIR}/newfiles.tmp | while read line; do
!    [ -d "${BUILD_DIR}/${line}" ] && echo -n "%dir " >> ${TMP_DIR}/newfiles
!    [ -L "${BUILD_DIR}/${line} -a -d `ls -l ${BUILD_DIR}/${line} | awk '$0=$NF'` ] && echo -n "%dir" >> ${TMP_DIR}/newfiles
     echo "\"/${line}\"" >> ${TMP_DIR}/newfiles
  done
```

シンボリックリンクがネストしている場合などでは正しく動作しないのであくまでも暫定的なパッチとなりますが、取りあえず rpm パッケージを作成したい場合は有用だと思います。
photoshopでレイヤーをグループ毎他のカンバスに持ってく方法

たくさんあるグループ化されたレイヤーの中で、特定の1つだけを他のカンバスに持って行きたかった時にやった方法です。

1. グループ化されたレイヤーを右クリック
2. 「グループを複製」をクリック
3. 保存先の「ドキュメント」でコピーしていきたい対象を撰択する
※ 「新規」を選ぶと新しいカンバスが作られて、そこに持っていかれるようです。
SSL証明書の有効期限を確認するbash script

## SSL証明書の期限を確認する

こんな感じで確認できる。

```text
$ sslexpire secure.nicovideo.jp
https://secure.nicovideo.jp SSL certificate expires after 39 days and 13 hours (2014/06/30 23:59:00 JST)
```


```bash
#!/bin/bash
#
# usage: $0 domain[:port] [alert days] [timeout]
# ex)
# $0 yahoo.com 365
#

server=${1//:*/}
port=${1/*:/}
test "$server" = "$port" && port=443
limit=${2-60}   # default 60 days
timeout=${3-3}  # default timeout 3 seconds

notafter=$(timeout $timeout openssl s_client -connect $server:$port < /dev/null 2> /dev/null | openssl x509 -enddate -noout 2> /dev/null | cut -d= -f2)

if [ "$notafter" ]; then
    s=$(( $(date --date "$notafter" +%s) - $(date +%s) ))

    if [ $limit -ge $((s / 86400)) ]; then
        d=$(date --date "$notafter" +"%Y/%m/%d %H:%M:%S %Z")
        days=$((s/86400))
        hours=$((s%86400/3600))
        echo -n "https://$server SSL certificate expires after "
        if [ $days -gt 0 ]; then
            echo -n $days day
            if [ $days -gt 1 ]; then
                echo -n s
            fi
        fi
        if [ $hours -gt 0 ]; then
            if [ $days -gt 0 ]; then
                echo -n " and "
            fi
            echo -n $hours hour
            if [ $hours -gt 1 ]; then
                echo -n s
            fi
        fi
        echo " ($d)"

        exit 1
    fi
else
    echo "https://$server is not supported SSL or timeout?"
    exit 1
fi
```

タイムアウトの処理はもうちょっとなんとかしたほうがいい。
Macで「Ruby on Rails チュートリアル」環境構築メモ

Ruby on Rails の勉強のための環境構築メモです。

これにそって、実施していきます。
[Ruby on Rails チュートリアル](http://railstutorial.jp/)

## 前提
* gitがインストール済み
* [HomeBrew](http://brew.sh/)がインストール済み

## インストールするバージョン
* Ruby -> 2.1.1
* Rails -> 4.0.5

## インストール手順

### RVMのインストール
```bash
curl -L https://get.rvm.io | bash -s stable
## 環境チェック。brewをインストール済みなら必要な物をインストールしてくれます。
rvm requirements
```
この作業は、30分程度かかる場合があります。途中で止まっているようにみえるかもしれませんが、気長に待ちましょう。

### rvmでRubyのインストール
```bash
rvm list known
rvm install 2.1.1
ruby -v
```

### gemでRailsのインストール
```bash
rvm gemset create rails40
rvm 2.1.1@rails40 default
gem install rails --version 4.0.5 --no-rdoc --no-ri
rails -v
```

### railsアプリケーション作成
```bash
mkdir rails_projects
cd rails_projects
rails new first_app
```

### Gemファイル編集
```bash
cd first_app
cp Gemfile Gemfile.org
vi Gemfile
diff Gemfile Gemfile.org
```

```diff
2d1
< ruby '2.1.1'
8,10c7
< group :development do
<   gem 'sqlite3','1.3.8'
< end
---
> gem 'sqlite3'
13c10
< gem 'sass-rails', '4.0.2'
---
> gem 'sass-rails', '~> 4.0.2'
16c13
< gem 'uglifier', '2.1.1'
---
> gem 'uglifier', '>= 1.3.0'
19c16
< gem 'coffee-rails', '4.0.1'
---
> gem 'coffee-rails', '~> 4.0.0'
25c22
< gem 'jquery-rails','3.0.4'
---
> gem 'jquery-rails'
```

### 依存関係更新

```bash
bundle update
bundle install
```

### サーバー起動
```bash
rails server
```

一先ず起動できるところまで。
Rubyの正規表現マッチング


Rubyで正規表現にマッチする文字列かどうかを判定する方法はいくつかある。

```ruby
str = 'foo'

# String#=~、Regexp#=~。マッチした位置かnilを返す
str =~ /o/ #=> 1
/o/ =~ str #=> 1

# String#match、Regexp#match。MatchDataかnilを返す
str.match /o/ #=> <MatchData "o">
/o/.match str #=> <MatchData "o">

# Regexp#===。trueかfalseを返す
/o/ === str #=> true
```

単にマッチするかどうかを判定したいだけなら`Regexp#===`を使いましょうって<a href="http://www.amazon.co.jp/gp/product/4774158798/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=4774158798&linkCode=as2&tag=hokaccha-22">パーフェクトRuby</a>に書いてあったので、その場合は`Regexp#===`を使えばいいと思うけど、`=~`や`match`と違って`===`は右辺と左辺が変わると結果が変わるので注意が必要。

```ruby
/o/ === str #=> true
str === /o/ #=> false
```

`String#===`は正規表現のマッチングじゃなくて文字列の比較になっちゃうからだね。
git log から ChangeLog作成


すでに，いろいろとweb上に情報があるが，メモとして．
http://d.hatena.ne.jp/sasakyh/20100625%23p1
を参考にして，少々修正した．

```bash
$ git log --date=short --pretty=format:"%ad %an <%ae>%n%n%s%n%b" |\
sed -e 's/^\(.*\)/\t\* \1/g' |\
sed -e 's/^\t\* \([0-9]*-[0-9]*-[0-9]*.*\)/\1/g' |\
sed -e 's/^\t\* $//g' > ChangeLog
```

とすると，以下のようなChangeLogっぽい出力になる．

```ChangeLog
2012-06-27 ryokbys <????.?????@gmail.com>

	* corrected makefile.

2012-06-27 ryokbys <????.?????@gmail.com>

	* The 1st commit of pmd.
```
CMSの選び方 2014年春

WEB制作屋さん向けの資料です。汎用的な内容になったので、公開しときます。ツッコミ大歓迎。

GOAL
====

サイト再構築時のCMS選定の基準として役立つこと

INDEX
=====

1. CMSの基礎知識
2. 選定のアプローチ
3. まとめ
4. CMSの探し方

CMSの基礎知識
=============

## CMSって

ざっくり言えば、blogやwikiってやつです

堅く言うと **コンテンツ制作以外の作業を極力考えなくても良いようにしてくれるシステム** の事

## CMSを導入するメリット/デメリット

* メリット
  - コンテンツの効率的な量産が可能
* デメリット
  - 画一的なデザイン

e.g.) Wikipedia、GIGAZINE

選定のアプローチ
================

CMSがカバーしている範囲を理解すれば、効率よくコンテンツ制作を行うことが可能

注意：範囲外を頑張るくらいなら、他の方法を検討すべし

選定のアプローチ
----------------

1. 制作スタイル
2. コンテンツカテゴリ
3. 支配的タスク
4. サポート

### 制作スタイル

1. ひとりでコツコツ
2. みんなでワイワイ

※ここでの制作スタイルとは「1ページの制作に対してのアサイン」と同義

#### CMSのカバー範囲

1. ひとりでコツコツ  
   → blog型
2. みんなでワイワイ  
   → wiki型

### コンテンツカテゴリ

1. 一過性なもの(ニュース的コンテンツ: 掲載時が価値最大で時間共に減少 e.g. GIGAZINE)
2. 普遍性なもの(カタログ的コンテンツ: 掲載し続けることで価値が累積 e.g. Wikipedia)

#### CMSのカバー範囲

1. 一過性なもの  
  → blog型
2. 普遍的なもの  
  → wiki型

### ここまでのまとめ

|              | ひとりでコツコツ | みんなでワイワイ |
|--------------|------------------|------------------|
| 一過性なもの | blog型           | ???              |
| 普遍的なもの | ???              | wiki型           |

ハマるのが無ければ、より重要視するべき項目を基に決定を推奨。

支配的タスク
------------

コンテンツ制作で一番時間がかかっている、手間がかかる工程  
→ CMSに求める機能が見えてくる

##### 見えるもの

* リソース
  - テキスト
  - リンクリソース(画像等)
* デザイン
  - ナビゲーション
  - レイアウト
  - フォーム
  - アクセシビリティ

##### 見えないもの

* ワークフロー
  - アサイン/ステータス
  - リテイク/バージョン
  - ミーティング/コラボレーション
* メトリクス
  - フォーム(アクティブ)
  - トラッキング(パッシブ)
* エクステンション

#### CMSのカバー範囲

* 見えるもの
  - テキスト
  - リンクリソース
  - ナビゲーション
  - レイアウト
* 見えないもの
  - リテイク/バージョン

CMSで効率化できる範囲は驚くほど少ない  
→ プラグイン(=エクステンション)でカバー範囲を広げるのが基本戦略

サポート
--------

CMSの開発が活動的であるか否か  
→ コンテンツの総資産価値の減少を食い止めることができる

* 問題解決と制作効率の向上
* 潜在的なメンテナンス負債の軽減(システムの乗り換え等)

e.g.) マイナーどころを採用 → 機能は十分だが、更新されずセキュリティホールが...といった感じ

### 基準

* システムのリリース期間、頻度
* フォーラムの勢い
  * FAQ(Qに対するAの速度、品質)

まとめ
------

1. 制作スタイル / コンテンツカテゴリ  
   → CMSの基本的な方向性
2. 支配的タスク  
   → CMSの機能の方向性
3. サポート  
   → コンテンツ資産価値の維持の方向性

### 再掲

CMSがカバーしている範囲を理解すれば、効率よくコンテンツ制作を行うことが可能

範囲外を頑張るくらいなら、他の方法を検討すべし

CMSの探し方
===========

オープンソース wiki blog まとめ
といった語と、期間を限定する（最近の記事）にすることで、概ね見つかる。

http://memo.ark-under.net/memo/1468
http://matome.naver.jp/odai/2135138800511477901
http://mymemo.weby117.com/site-admin/cms_1.html
http://moongift.jp


あとがき
========

どうしたもんでしょうかね。
Numpyのarrayで複数の要素を取り出す


連続していない要素を取り出したい時が多々ある

```python
>>> a = np.array([1,2,3,4])
>>> indices = [0,2]
>>> a[indices]
array([1,3])
```

要素の入れ替えをしたい時とかに便利

```python
>>> a = np.array([1,2,3,4])
>>> indices = [0,1,3,2]
>>> a[indices]
array([1, 2, 4, 3])
```

listじゃなくてsetを渡すとエラーに成ったり予期しない挙動をしたりするので注意が必要。特に多次元配列を使う時は注意。

```python
>>> a = np.array([[1,2,3],[3,4,5],[5,6,7]])
>>> a
array([[1, 2, 3],
       [3, 4, 5],
       [5, 6, 7]])
>>> indices = [0,2]
>>> a[indices]
array([[1, 2, 3],
       [5, 6, 7]])
>>> indices = (0,2)
>>> a[indices]
3
```
treasure  data で月間PVを取るHive

```sql
SELECT
    TD_TIME_FORMAT(time, 'yyyy-MM', 'JST'),
    COUNT(*) AS total
 FROM hoge_table
WHERE action = 'page_view'
  AND TD_TIME_RANGE(
        time,
        IF(DAY(TD_TIME_FORMAT(UNIX_TIMESTAMP(), 'yyyy-MM-dd', 'JST')) = 1,
           TD_TIME_FORMAT(TD_TIME_ADD(UNIX_TIMESTAMP(), '-1d', 'JST'), 'yyyy-MM-01 00:00:00', 'JST'),
           TD_TIME_FORMAT(UNIX_TIMESTAMP(), 'yyyy-MM-01 00:00:00', 'JST')),
        TD_TIME_FORMAT(UNIX_TIMESTAMP(), 'yyyy-MM-dd 00:00:00', 'JST'),
        'JST'
      )
GROUP BY TD_TIME_FORMAT(time, 'yyyy-MM', 'JST')
```

hoge_table に page_view という action 名でレコードがはいってるとして。
毎日昨日までの月間PVを集計するようなクエリー。

JST をつけまくらなきゃならないのが面倒。
Haxeでインスタンスを動的に生成する

どうしても動的にインスタンスを作りたかったのですが、
そういうのって`Reflect`クラス使えばいけるだろって思っていたけど、どうも出来そうにない。
そもそも`Reflect`ってオブジェクトの中身を動的にゴニョゴニョするやつでそういう機能はなくて然るべきですよね。

# Typeクラスを使おう

じゃあ、どうするか？
[Haxeのapiドキュメント](http://api.haxe.org/)で標準クラスの中身を眺めていたら、`Type`クラスというのがあってそれ使えば行けそう。
`Type.typeof()`しか使い方知らなかったよ…　色々出来るんですね；

## 動的にクラスを取得する

`Type.resolveClass`を利用します。

```hx
Type.resolveClass("path.to.Class");
```

## 動的にインスタンスを生成する

`Type.createInstance`と`Type.resolveClass`を利用します。

```hx
// 第二引数はコンストラクタに渡す引数です
Type.createInstance(Type.resolceClass("path.to.Class"), []);
```

# 利用にあたっての注意点

javascriptをターゲットにしか利用していないのですが、その中でも落とし穴が結構ありそうでした。

## resolveClassではHaxeのコードからのみクラスを取得可能

これはどういうことかというと、動的にクラスを取得するラッパーのようなものを作成してjsをターゲットにコンパイル、jsから動的にクラスを作成するラッパーメソッドをコールしてもクラスは作成出来ないということです。

サンプルコードはこんな感じ。

```hx
/**
 * クラス名を引数にとってクラスの実態を返すType.resolveClassのラッパー
 */
@:expose('DynamicClass')
class DynamicClass {
  public static function getClass(className): Class {
    return Type.resolveClass(className);
  }

  static function main() {}
}
```

```hx
// HaxeのコードからgetClassを利用する分には問題なく使える
import DynamicClass;

class Foo {}

class ClassGetter {
  public static function get(): Void {
    trace( DynamicClass.getClass('Foo') ); // Class Foo !
  }
}
```

```js
// javascript上のコードからgetClassを利用するとクラス？を返さない
function Foo() {}

console.log( DynamicClass.getClass('Foo') ); // null !?
```

### 何故か？

Haxeはjavascriptにコンパイルする時に、Haxe内で定義されたクラスを`$haxeClasses`という変数に保持するようなコードを出力します。
`Type.resolveClass`は`$haxeClasses`の中にクラスが保持されているかを見て、クラスを返却しているのです。
js上で定義されたクラス？は`$haxeClasses`に保持されないためにjs上から動的なクラス？の取得が出来なくなっています。

そもそも、jsにはクラスの概念が無いので正しい動作なのかもしれませんが；

### 解決策

かなり無理やりな感じではあるけど、windowオブジェクトから対象のクラス？名をキーにして取得してあげればいい。

```hx
var class = Type.resolveClass('Foo');
if (class == null) {
  untyped class = Browser.window["Foo"];
}
Type.createInstance(class, []);
```

javascriptでクラスみたいなのを定義するときは大抵namespaceの中に定義するから、
実際は引数をnamespace含むクラス？名をparseして…っていう処理を作ってあげないといけないと思う。


## createInstanceでコンストラクタに与えられる引数は8つまで

`Type.createInstance`の第二引数にはコンストラクタに与える引数を設定出来ますが、
jsのコンパイルコードを見る限り最大でも8つまでという制限があるようです。

8つも引数を取る処理を今まで目にしたことが無いのでさほど問題ではありませんが…
なんだかコンパイル後のコードが気持ち悪い、これはパフォーマンス上の都合なのでしょうか？

```js
Type.createInstance = function(cl,args) {
	var _g = args.length;
	switch(_g) {
	case 0:
		return new cl();
	case 1:
		return new cl(args[0]);
	case 2:
		return new cl(args[0],args[1]);
	case 3:
		return new cl(args[0],args[1],args[2]);
	case 4:
		return new cl(args[0],args[1],args[2],args[3]);
	case 5:
		return new cl(args[0],args[1],args[2],args[3],args[4]);
	case 6:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5]);
	case 7:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6]);
	case 8:
		return new cl(args[0],args[1],args[2],args[3],args[4],args[5],args[6],args[7]);
	default:
		throw "Too many arguments";
	}
	return null;
};
```

# まとめ

ご利用は計画的に。。。
配列のソートと文字列生成

# 配列のソートについて

jsのsortメソッドは配列自体を変更して要素を並び替える。
対象となるオブジェクトを書き換えるので破壊的なメソッドと呼ばれる。

引数無しでsortメソッドを使うと、文字列としてソートする。

```js
var arr = ['one','two','three','four'];
arr.sort();
alert(arr); // four,one,three,two
```

文字列以外の配列をソートしたい場合は引数に比較関数を渡す。

```js
var arr = [1,0,20,100,55];
arr.sort(function(a,b){ return a-b; });
alert(arr);
```

数値でソートしたくないときは、sliceメソッドで文字列で返す。

```js
var arr = [3,5,1,7,2];
arr.sort(); //1,2,3,5,7
arr.slice().sort(); //3,5,1,7,2
```

#配列の文字列生成

```js
var arr = [];
arr.push('<div>');
arr.push(Date());
arr.push('</div>');
alert(arr); //<div>,Thu May 22 2014 07:10:57 GMT+0900 (JST),</div>
```
区切りはデフォルトで `,` になる
区切り値を空白文字にする場合は正規表現を使うか、splitメソッドを使う。

```js
var str = 'Thu May 22 2014 07:10:57 GMT+0900 (JST)';
str.split('');
alert(str); //Thu May 22 2014 07:10:57 GMT+0900 (JST)
```
Fortran で「千反田える」

Fortran でもえるたそ～　わたし気になります！

実行は Intel visual fortran 2015beta にて。あんま実行結果チェックしてませんｗ　
![chitanda.png](https://qiita-image-store.s3.amazonaws.com/0/44522/cc00979a-7650-da65-ecbd-323be79928b4.png)
~~追記：脊髄反射で書いたので、英語がなまって G と Z の発音がどっちも「じー」になっちゃったよ草不可避~~
追記：修正しました。ついでにコメント付けてみました。

和数字に直す関数は万の桁までしか対応していません。

```fortran
    module m_jp
      implicit none
      character(len=8), parameter :: alpha(26) = ['えー','びー','しー','でー','いー',&
       'えふ','じー','えっち','あい','じぇー','けー','える','えむ','えぬ','おー','ぴー',&
       'きゅー','あーる','えす','てー','ゆー','ぶい','だぶりゅ','えっくす','わい','ずぃー']
      character(len=2), parameter :: jnum1(0:9) = ['','一','二','三','四', &
                                                 '五','六','七','八','九']
      character(len=2), parameter :: jnum2(4)   = ['万','千','百','十']
    contains
      function jnumber(m)  
        integer, intent(in) :: m
        character(len = :), allocatable :: jnumber ! f2003 可変長文字列 
        character(len = 5) :: tmp
        integer :: i, k(5)
        write(tmp, '(i5.0)') m  ! internal file ５桁の整数値を文字列に 
        read(tmp, '(5i1.0)') k  ! 文字列を１桁づつの整数に変換
        jnumber = ''
        do i = 1, 4
          select case(k(i))
            case(0)
              cycle
            case(1)  
              jnumber = jnumber // jnum2(i)                  ! 一千　等の一を避ける。
            case(2:9) 
              jnumber = jnumber // jnum1(k(i)) // jnum2(i)   ! 万、千、百、十の位
            case default
              stop 'unexpected input: jnumber'
          end select   
        end do
        jnumber = jnumber // trim(jnum1(k(5)))     ! 一の位　一を出力する。空白カット。
      end function jnumber  
    end module m_jp  
    
    program chitanda
      use m_jp
      implicit none
      integer :: i
      do i = 1, 1000
        print *, jnumber(i), '反田', alpha(mod(i - 1, 26) + 1)  
      end do
    end program chitanda
```
phpで「配列」〜 前編


## 複数の項目をカンマで区切って変数に格納出来る

１つの変数に複数の値を格納出来るのが「配列」です。

### ① array構文

例えば、複数の登場人物を`$azumanga`という変数に格納して、何番目なのかを指定すれば名前を参照出来ます。

この配列を作成するときに使うのが`array`という命令です。

とりあえずあずまんがのいつもの６人組でやってみましょう

```php
<html>
<head>
</head>
<body>
		
<?php  
$azumanga = array(
	"ちよ",
	"おおさか",
	"かぐら",
	"さかき",
	"よみ",
	"とも",
);

echo $azumanga[4];

?>

</body>

</html>

```

![php00010.png](https://qiita-image-store.s3.amazonaws.com/0/35975/aea0a252-a421-d455-de09-89f7876b721b.png "php00010.png")



### ② 連想配列

①の配列では、配列要素の位置を示すインデックスは0から始まる数値ですが、もう少し「取り出ししやすい」インデックスを持つ配列を作成する事も出来ます。

これが「連想配列」と呼ばれる配列で中身を連想出来る様なインデックスを持つ配列です。取り出す項目のインデックスを指定しやすいので便利です。

連想配列の作り方の１つとして以下の様に書く事が出来ます。

```php

<html>
<head>
</head>
<body>
		
<?php
$azumanga = array (
"chiyo" => "ちよ",
"osaka" => "おおさか",
"kagura" => "かぐら",
"yomi" => "よみ",
"tomo" => "とも",
"sakaki" => "さかき",
);

echo $azumanga["kagura"];
?> 

</body>

</html>

```

また、後から「かおりん」を付け足したかったら

以下の方法で付け足せば、「かおりん」も追加されて表示出来ます。

```php

<html>
<head>
</head>
<body>
		
<?php
$azumanga = array (
"chiyo" => "ちよ",
"osaka" => "おおさか",
"kagura" => "かぐら",
"yomi" => "よみ",
"tomo" => "とも",
"sakaki" => "さかき",
);

$azumanga["kaorin"]  = "かおりん";

echo $azumanga["kaorin"];

?>

</body>

</html>

```

↓実行結果

![php00011.png](https://qiita-image-store.s3.amazonaws.com/0/35975/f16884bd-aecc-34ef-95d3-597d5e658cbf.png "php00011.png")
Python各バージョンをHomebrewで管理する


Pythonには[virtualenv](https://virtualenv.pypa.io/en/latest/)という閉じた環境を作成する素晴しいツールがあり、[tox](https://testrun.org/tox/latest/)という複数バージョンのテストを自動化してくれるエレガントなツールがある。(個人的主観)
これらのツールを有効に扱うために、複数バージョンのPythonを共存させる要求が出てくる。
(まあ、複数バージョンの共存はPythonに限ったことでもなく、RubyでもPerlでもありうる要求のようで、ちょっと調べればそれ用のライブラリが見つかると思う。)
この要求を楽にかなえるためのソフトウェアとして、[pythonbrew](https://github.com/utahta/pythonbrew), [pythonz](https://github.com/saghul/pythonz), [pyenv](https://github.com/yyuu/pyenv) などがある。

## でも敢えてHomebrewを使う

理由はなんとなく(笑)。
強いて言うなら、あまり管理ツールを増やしたくないというあたりかと。この手のツールが増えていくと、どれを何でどういうふうに管理しているのかを把握するのが大変だし、設定ファイル(主に.bashrc/.zshrc)も膨れていくので。

Homebrewは汎用的なパッケージマネージャなのでPython以外のソフトウェアも当然提供しているし、(最近知ったことだけど)[Homebrew-Cask](https://github.com/caskroom/homebrew-cask)を使えば、GUIアプリも管理できる。これにできるだけまとめちゃえば、管理が楽だ。

## マイナーバージョンのFormulaがあるといったな。あれは嘘だ。

現在のHomebrewのリポジトリのHEADでは、Python2系、3系の最新(2.7, 3.4)のみサポートしており、それ以外のバージョンをインストールすることができない。

```bash:
% brew search python
gst-python010  python         python3        wxpython       zpython
homebrew/apache/mod_python

% brew info python
python: stable 2.7.6 (bottled), HEAD
http://www.python.org

…

% brew info python3
python3: stable 3.4.1 (bottled), HEAD
https://www.python.org/

# ただ手元には古いバージョンのFormulaが…いつどこから入れたんだっけ…

% brew list | grep python
python
python26
python3
python31
python32

```

様々なソフトウェアのバージョン毎のFormulaを提供しているリポジトリはあるが、Pythonだけ無い。何故だ…
https://github.com/Homebrew/homebrew-versions

## 自分用のHomebrewリポジトリを作成する

なので各バージョンのFormulaを置いたHomebrewのカスタムリポジトリを作成することにした。

https://github.com/FGtatsuro/homebrew-custom

リポジトリの作成/使用はとても簡単

1. githubに、homebrew-<リポジトリ名>(ex. homebrew-custom) という名前のリポジトリを作成する。
2. `brew tap (Githubユーザ名)/(リポジトリ名)`で、作成したリポジトリを登録する。(今回のリポジトリだと`FGtatsuro/custom`)
3. `brew update`で、登録したリポジトリ内のFormulaを取得する。

各Formulaは本家のFormula(`python.rb`,`python3.rb`)をベースに、以下の変更を加えている。

1. インストール時、`make install`ではなく`make altinstall`を使う。これにより`python`,`python3`などのシンボリックリンクがHomebrewの`bin`以下(default:`/usr/local/bin/`)に作成されなくなる。(`python3.3`のようなマイナーバージョンまで含んだリンクは作成される。)
2. pip,easy_installが合わせてインストールされるが、これらのシンボリックリンクも同様、マイナーバージョンまで含まないもの(ex. `pip`, `pip2`)は作成されなくなる。

1, 2とも、複数バージョンをインストールした際のシンボリックリンク上書きにより、意図とは違うバージョンを実行するのを避けるためである。
`python`のリンクを消してしまうのは賛否両論あると思うが、自分は普段使いの環境もvirtualenvで作成した環境を使用しており、この環境内でそれらのシンボリックリンクが作成されるため特に問題にはならない。
そうでない場合はメインで使いたいバージョンを決めた上で、改めてシンボリックリンクを作成すると良いだろう。

```bash:
% ln -s /usr/local/bin/python34 /usr/local/bin/python
```

## 恒例の横の人の反応は…

「うっはww MakeFile書くだけよくねwww?わざわざHomebrewで管理する意味あんのwww?」(と言ったような気がする)

## 追記(2014/05/26)

別のFormulaの依存関係で、`python`, `python3`が求められることがあり、その際にカスタムリポジトリに入れた`python27`, `python34`が入っていると衝突する模様。
なので、最新だけは元のリポジトリの物を使った方が無難かな。
VirtualBox ゲストを複製し、1回だけ runlevel を変更して起動

## 目的
http://qiita.com/heignamerican/items/27fd8e636e175749234d
ここで書いていなかった、VM のクローンを試してみた時に必要だったのでメモ。

MAC アドレスの再割当てを行ってみたので、以下の手順を行いたかったのです。

* 複製前に事前準備は行わない
* 複製後、runlevel 1 で立ち上げ、ネットワークまわりを再設定
* あとは再起動するとすぐに正常利用可能に！


## 環境
* VirtualBox
* CentOS 6.5
* Grub

## 起動までの手順
1. ゲストを普通に終了させ、VirtualBox マネージャーからゲスト複製
2. ゲスト起動、`Esc` などを連打(※理由は後述)<br/>
   ![WS000288.png](https://qiita-image-store.s3.amazonaws.com/0/18223/0d43bacb-0b18-b184-aec7-8831aec8a7a7.png)<br/>
   F12 はダメです<br />
   ![WS000289.png](https://qiita-image-store.s3.amazonaws.com/0/18223/01ac0b47-8443-90d1-1500-13915badbac8.png)<br />
   3 秒以内！<br />
   ![WS000287.png](https://qiita-image-store.s3.amazonaws.com/0/18223/9a28b858-454e-3cdc-a5b8-43e59cb66357.png)<br />
   ここで `→` とか `Enter` もアウト<br />
   下手なキー連打すると、もう 1 回再起動するはめになります。
3. 1 回だけ起動引数を変更したいので、`a`<br />
4. 末尾に runlevel (今回は `1`) を指定して、起動<br />
   ![WS000284.png](https://qiita-image-store.s3.amazonaws.com/0/18223/415673fb-45ec-1d91-fc07-1cac692e8e14.png)<br />
   ![WS000285.png](https://qiita-image-store.s3.amazonaws.com/0/18223/d5c0f63e-0cce-5793-40fb-54ce0ea151b8.png)
5. 起動後、`$ runlevel` 実行すると 1 なのが確認できます。(キャプ忘れ)


## 起動後の手順
いつもどおりの手順です

1. `/etc/sysconfig/network-script/ifcfg-eth0` 編集
    * MAC アドレスが埋まっていたら消す
    * static にアドレス割り当てているなら、ポリシーに合わせ修正
2. `/etc/udev/rules.d/70-persistent-net.rules` を削除
3. `reboot`


## 注意
普通にやると、これで再起動後に新しい設定の rules ファイルも作成してくれます。

手順間違えると、eth0 がおかしい → eth1 に設定してあげよう → eth1 の rules ファイル作成
とか自動でやってくれて、背景知識が無いと泥沼になるので注意しましょう。
ついでに Network-Manager とか入れてると大混乱まちがいなしですね。
テキストを1文字づつアニメーションで表示させるjQueryプラグイン


site: http://develo.org/2014/05/07/0900.html
GitHub: https://github.com/kamem/jquery.textAnimation

テキストに1文字づつCSSでアニメーションをつけたら面白い動きになるんじゃないかなぁと思って作ってみました！値を設定できるようにしてみたら自分で予想してないような面白い動きも作れて楽しめました。
値によってはハリーポッターとか映画でよくあるような文字の出方みたいになったり！



[DEMO + Edit]
[DEMO + Edit]: http://github.develo.org/jquery.textAnimation/
（下のエリアのコードを使えばその動きを実行することができます。）

仕様
------
1. 1文字づつテキストをアニメーションで表示する

使い方
------
	<script type="text/javascript" src="js/jquery.js"></script>
	<script type="text/javascript" src="js/jquery.textAnimation.js"></script>
	<script type="text/javascript">
		$('.text1').textAnimation();
	</script>


オプション
------

### 初期設定 ###
	speed: 1000,
	delay: 200,
	left: 0,
	top: 0,
	scale: 1,
	rotateY: 0,
	rotateX: 0,
	translateZ: 0,
	letterSpacing: $content.css(' letterSpacing'),
	easing: 'ease-out',
	backgroundColor: 'transparent',
	isRandomScale:  false,
	isRandomPosition:  false,
	isRandomRotateY: false,
	isRandomRotateX: false,
	isRandomTranslateZ: false,
	isRandomSpeed: false,
	isRandomDelay: false


 * speed: CSSのスピード（ms）
 * delay: 次の文字までの時間（ms）
 * left: leftの移動量（px）
 * top: topの移動量（px）
 * scale: transformのscale変化量
 * rotateY: transformのrotateY変化量
 * rotateX: transformのrotateX変化量
 * translateZ: transformのrotateZ変化量
 * letterSpacing: letter-spacing変化量
 * easing: transition-timing-functionで指定できるeasing,
 * backgroundColor: 変化させたい背景色
 * isRandomScale:  scaleをランダムの値にするか。（delayで指定した値までのランダム）
 * isRandomPosition: left,topをランダムの値にするか。（left,topで指定した値までのランダム  マイナスの値も含む 200の場合 -200 ~ 200となる）
 * isRandomRotateY: rotateYをランダムの値にするか。（rotateYで指定した値までのランダム）
 * isRandomRotateX: rotateXをランダムの値にするか。（rotateXで指定した値までのランダム）
 * isRandomTranslateZ: rotateZをランダムの値にするか。（rotateZで指定した値までのランダム）
 * isRandomSpeed: speedをランダムの値にするか。（speedで指定した値までのランダム）
 * isRandomDelay: delayをランダムの値にするか。
Ruby で 現在日時の 14 桁の文字列を生成する

ファイル名に使ったりするために現在日時の 14 桁の数値を生成する方法です。

```rb:
require 'date'
p DateTime.now.strftime('%Y%m%d%H%M%S')
```

以下は出力結果です。

```
"20140522004609"
```
Qiitaの記事をミサワで彩る

# Qiitaの文化
[Qiitaの開発チーム文化にミサワがあるそうです](http://blog.qiita.com/post/74997115585/increments-dev-team-culture?utm_source=qiita&utm_medium=header)

曰く
> 例えばチャットやgithub上のオンラインコミュニケーションでは，感情面の情報が大きく欠落するため少しずれた形で伝わってしまうこともよくあります．

それを回避するために
> オンラインでは直接口頭で話すとき以上に言葉遣いを丁寧にする
> コードレビューはあくまでコードを批判しているのであって，書き手を批判しているととらわれないように注意する
> 絵文字や画像を積極的に使う
_(省略)_
> ちなみに弊社ではチャットに’misawa’と書くとミサワ画像をランダムに貼ってくれる便利なbotがいます．

なのだそうです。素晴らしい文化ですね！！
そんなQiitar達がぜひ使えばいいんじゃないかなというChrome拡張を見つけたので紹介します。

![みさわ](http://jigokuno.img.jugem.jp/20110627_2141348.gif)

[hrysd / misawa_md - Github](https://github.com/hrysd/misawa_md)
作者ブログ [Githubにおけるコードレビューを快適にするChrome拡張をつくった。](http://hrysd.hatenablog.com/entry/2012/10/06/192648)

# 使い方（上記作者ブログより）

1. Chrome ウェブストアからダウンロードする。
2. 右上に追加されたMISAWAの顔をタッチ！
3. 使用したい画像をクリック！
4. クリプボードにコピーされるので cmd + v で貼付ける。
5. すてきなやりとりの完成

簡単ですね！！

と使い方の説明だけだとこれで話が終わってしまうので、せっかくだからどんな作りになっているのかも勉強がてらあさってみました。

# 仕組み

中身を見てみましょう。

## manifest.json

どれどれ。どんな拡張なのかと覗いてみましょう。

```manifest.json
{
  "name": "MISAWA::MD",
  "version": "0.9",
  "description": "markdown形式で名言をコピーします。",
  "manifest_version": 2,
  "icons": {
    "128": "images/icon_128.png",
    "48": "images/icon_048.png",
    "16": "images/icon_016.png"
  },
  "browser_action": {
    "default_icon": "images/icon_019.png",
    "default_title": "MISAWA::MD",
    "default_popup": "popup.html"
    },
  "permissions": [ "http://cloud.github.com/*/*", "clipboardWrite"]
}
```

なるほど！
どうやらブラウザの右上にアイコンを出して（popup.htmlと書いてあるところ）、```http://cloud.github.com/なんとか/かんとか```にアクセスして動作するChrome拡張のようです。

## スクリプト

リポジトリの```src/javascripts```ディレクトリを覗いてみました。
```jquery.js``` ```linq.min.js``` ```popup.js```というファイルがあります。

###jQuery.js
こいつがなにかは、ここを見るような人ならだいたい知っているでしょう。
version1.7を使っているみたいです。後述のLINQがminifyされているのに、こちらが生のままなのは謎です。

### [linq.js](http://linqjs.codeplex.com/)
存在を初めて知ったのですが、要はUnderscore.jsやLo-Dash、Lazy.jsなどのような、データの配列処理などをサポートするライブラリです。
一部のメソッドは、Underscore.jsよりかなり高速で動作するようです。

```underscore_vs_linq.coffee
array = [1,2,3,5,8,13,21,33]

## 偶数だけ二倍して出力
# linq
Enumerable.From(array)
.Where((x) ->x % 2 is 0)
.Select((x) -> x * 2)
.ForEach((x) -> document.writeln x)

# Underscore
_(array)
.filter((x) ->x % 2 is 0)
.map((x) -> x * 2)
.each((x) -> document.writeln x)
```

### popup.js

jQueryをポップアップのDom取得とAjax通信に、LINQ.jsをAPIから取得したjson処理に使っているようです。
検索フォームの入力文字列は、ミサワ絵のタイトル、キャラクタ名、絵の中のカッコイイ言葉のすべてを検索するようです。

ちょっと良くわからないのが、APIに```http://cloud.github.com/downloads/june29/horesase-boys/meigens.json```を指定しているところ。
多分 [june29 / horesase-boys - Github](https://github.com/june29/horesase-boys)を動作させて、データのつまったmeigens.jsonを取得していいると思うのだけど……
cloud.github.comってなんざんしょ。

![みさわ](http://jigokuno.img.jugem.jp/20091228_1639021.gif)

# その他参考サイト

[Chrome Extensions API リファレンス](http://dev.screw-axis.com/doc/chrome_extensions/)...公式文書の非公式日本語翻訳版です。
[Chrome Extensions API(本家)](https://developer.chrome.com/extensions/overview)...英語に拒否反応を起こしたのでほとんど読んでません。
serverspecでUbuntuのppaが登録されているかテストする

# 発端
serverspecでテスト書いている時に、servserspecのマニュアルにはyumrepoを使えば、

```ruby
describe yumrepo('epel') do
  it { should exist }
  it { should be_enabled }
end
```

のような書き方ができるのに、
`ppa('launchpad-username/ppa-name')`のような書き方が出来ないじゃん！
ということで書けるようにしてみた。

## 送ったPR

specinfraのリポジトリには [specinfra pull#117](https://github.com/serverspec/specinfra/pull/117) により、泥くさく`/etc/apt`の下にppaのsource.listが置かれてないか調べるメソッドを追加した。

serverspecのリポジトリには [serverspec pull#407](https://github.com/serverspec/serverspec/pull/407) により、yumrepoと同じようなspecが書けるようにした。

[specinfra pull#121](https://github.com/serverspec/specinfra/pull/121) により、`ppa:`があってもなくてもapt-lineにあったURIに変換されるようになってます。

## Resource Type: ppa の書き方

例えば、Ubuntu向けの比較的新しいRubyのパッケージを提供するPPAのhttps://launchpad.net/~brightbox/+archive/ruby-ng 向けのspecは次のようになる。

`ppa:brightbox/ruby-ng` か `brightbox/ruby-ng` の形式で渡す：

```ruby
describe ppa('ppa:brightbox/ruby-ng') do
  it { should exist }
  it { should be_enabled }
end
```

これでUbuntuのPPAがaptリポジトリに追加されている＆有効になっているかをテストするserverspecが書けるようになります。

enjoy serverspec!
ggplot2で良く使うオプションをまとめて使いやすくしておく。

ggplot2でよく使うオプションを`list`でまとめておくことで、いつものオプションを簡単に呼び出す事が出来るTipsです。

以下のような記述を`.RProfile`にしておきます。

```r
ggtemplate <- list(my_ggtheme(),scale_y_continuous(labels=comma))
ggline <- list(ggtemplate,geom_line(alpha=0.5))
ggpoint <- list(ggtemplate,geom_point(size=3),
                geom_point(size=1.5,colour="white",alpha=0.1))

```
_※my_ggthemeは自作のggplot2のテーマです。_

上記のように用意しておくことで、以下のように + でつなげて簡単にオプションを反映出来ます。

```r
ggplot(diamonds,aes(x=carat,y=price,colour=color)) + ggpoint + ggline
```

長くなりがちなggplotのコードを短くすることが出来るのでお勧めです。
capybaraでフェードインしてくるmodalのボタンをクリックする

フェードインするmodalのボタンをクリックするfeature specを書いたのだが、テストが成功したり失敗したりしていた。
原因を調べてみたところ、modalがフェードインしているためクリックしようとするボタンの座標がずれてしまうらしい。
そこで以下に示すようにフェードインしないようにして対応した。（今回の場合、fadeクラスを取り除いてやればok）というのを、[upinetree](http://qiita.com/upinetree)先生に教えていただいた。m(_ _)m

```rb
shared_context '「決定」ボタンをクリック' do
  before do
    page.evaluate_script('$(".fade").removeClass("fade")')
    click_on('決定')
  end
end
```
他にも`sleep 1`などで時間をおいてあげてもテストは通るようになると思います。
iOSアプリ開発ノウハウ集

# iOSアプリに必要なリソース

iOSアプリに必要なアイコンや起動画面に関するメモ。

[アプリに必要なアイコン・起動画面の画像サイズ＆ファイル名](http://tande.jp/lab/2012/01/1635)

アイコン作成は、以下のアイコン自動生成Webサービスが便利。

[iOS向けアイコン自動生成Webサービス](http://yokano-jp.blogspot.jp/2013/03/ios.html)
Unity2Dメモ3 特定のアニメーション時にだけ何かをする

# 特定のアニメーション時にだけ何かをする

```csharp:AnimatorStateInfoTest.cs

public class AnimatorStateInfoTest: MonoBehaviour {

    Animator animator;
    
    // アニメーションの名前(レイヤ.アニメーション名)
　　const string RUN_ANIMATION = "Base Layer.Run";

    void Start()
    {
        this.animator = gameObject.GetComponent<Animator>();        
    }

    
    void Update()
    {
        AnimatorStateInfo stateInfo = this.animator.GetCurrentAnimatorStateInfo(0);
        
        // Runアニメーション中なら
        if (stateInfo.nameHash == Animator.StringToHash(RUN_ANIMATION))
        {
            Debug.Log("Run　Animation");
        }

    }

}
```
chocolatey小メモ


#インストールの仕方
[オフィシャルサイト](http://chocolatey.org/)のトップにコードスニペットがあるので、それで。

#使い方
##パッケージの更新を確認
* RSSで取得
* Webで見るときはRecentで

##パッケージを探すとき
地雷パッケージ(後述)もあるので、インストールされるバージョンには注意

###地雷パッケージ
パッケージが更新されてない、古いものがインストールされる。など
あと、たとえばvirtualbox (4.3.12) の後に VirtualBox.ExtensionPack をインストールすると 4.2.16に更新されてしまうなどあるので、注意。

#小技
##インストール済みリスト

```shell-session
chocolatey list -lo
```

##全アップデート

```shell-session
chocolatey update all
```

##パッケージリストをインストールに渡す

```shell-session
chocolatey install packages.config
```

###packages.configのサンプル兼最初に入れておくとよいもの

```xml:packages.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="ChocolateyGUI" />
  <package id="Sudo" />
  <package id="ChocolateyPackageUpdater" />
</packages>
```

**注**
v0.9.8.24からデフォルトインストール先が `C:\ProgramData` になり、それに伴ないオススメの初期パッケージのtoolsrootは外しました(設定の関係から、使うにしてもbinrootパッケージのほうがよさそうですが)
Webサーバーで帯域制限するモジュールを探してみた。

お客さんの要望でWebサーバーからのダウンロード帯域をユーザー毎に絞りたいと言う話があった。

Apacheのmod_なんとかでそういうのがあったと思ったので調べて見た。

Google先生に聞いたキーワード「mod_bandwidth similar」
順不同(Apache2 or Nginxで)
そういうまとめは、既にあるような気がするが..

mod_qos
http://opensource.adnovum.ch/mod_qos/

mod_limitipconn.c
http://dominia.org/djao/limitipconn2.html

Summer Of Code Project : Bandwidth Limiter For Apache
http://bwmod.sourceforge.net/

bwshare Apache module for bandwidth throttling by HTTP client IP address
http://www.topology.org/src/bwshare/README.html

あ、それmod_mrubyできるよって声がするので、mod_mrubyも
matsumoto-r/mod_mruby
https://github.com/matsumoto-r/mod_mruby

Apache mod_bw - Coding Lessons
http://ivn.cl/category/apache/#bandwidth

mod_cband | Free software downloads at SourceForge.net
http://sourceforge.net/projects/cband/

Apache module : mod_bandwidth | CohProg SàRL
http://www.cohprog.com/mod_bandwidth

(参考まとめ)
Apacheで帯域や接続数を制御するモジュール | やかん部 技術情報｜株式会社フラッツ[FLATz Inc.](2009年05月)
http://www.flatz.jp/archives/1922


FreeBSD8.0 +Apache2.2 +MySQL5 +Ruby1.8 +PHP5 サーバーインストール手順: Apache2.2 帯域制限をかける　mod_cband最強？mod_bandwidth mod_bwshare... どれがいい？(2008年9月)
http://butsuyokudaimajin.blogspot.com/2008/09/apache22-modbandwidth-modbw.html
ホリ リアルアーケードPro.V4 隼 PC(Windows)接続時のボタン割り当て

> 本記事の内容を[はてなブログ](https://nanmo.hateblo.jp/entry/2014/05/21/000000)に転記しました。
> すぐにQiitaの記事を削除する予定はありませんが、どちらか一方だけ残すとなったらはてなブログの方を残すと思います。
> ご承知おき下さい。

[リアルアーケードPro.V4 隼|株式会社HORI](http://www.hori.jp/products/ps4/ps4_rap_h/)

> PCボタン名:RAP4のボタン名
> PCボタン名はWindows7のコントロールパネル->デバイスとプリンター->ゲームコントローラの設定->プロパティでの表示名
> RAPv4の特記事項:各種機能切り替えのスイッチがあるので、スイッチによって機能が変更されるものに関しては [スイッチ名] と付ける

[PS3]側にスイッチを入れた時の割り当て
====================================
![](https://qiita-image-store.s3.amazonaws.com/0/37548/ee586722-4695-f6c7-919f-7dff1bf201d6.png)
X軸:スティック左右[LS]
Y軸:スティック上下[LS]
Z軸:スティック左右[RS]
Z回転:スティック上下[RS]
ボタン1:Square
ボタン2:Cross
ボタン3:Circle
ボタン4:Triangle
ボタン5:L1[L1/L2]
ボタン6:R1
ボタン7:L2(デジタル)[L1/L2]
ボタン8:R2(デジタル)
ボタン9:Share
ボタン10:Option
ボタン11:L3 or L1[L3/R3]
ボタン12:R3 or L2[L3/R3]
ボタン13:PSボタン
ハットスイッチ(POV):スティック上下左右[DP]
TURBOボタン及びF-MODEスイッチは反応なし

[PS4]側にスイッチを入れた時の割り当て
====================================
![](https://qiita-image-store.s3.amazonaws.com/0/37548/b44050cc-eb2f-8284-022f-97ff7a9dad01.png)
X軸:スティック左右[LS]
Y軸:スティック上下[LS]
Z軸:スティック左右[RS]
X回転:L2
Y回転:R2
Z回転:スティック上下[RS]
ボタン1:Square
ボタン2:Cross
ボタン3:Circle
ボタン4:Triangle
ボタン5:L1[L1/L2]
ボタン6:R1
ボタン7:L2(デジタル)[L1/L2]
ボタン8:R2(デジタル)
ボタン9:Share
ボタン10:Option or TURBO[F-MODE ON]
ボタン11:L3 or L1[L3/R3]
ボタン12:R3 or L2[L3/R3]
ボタン13:PSボタン
ボタン14:割り当てなし
ハットスイッチ(POV):スティック上下左右[DP]
Mustache.php でレンダリング時に nl2br を使う

Mustache.php で nl2br を使う

## 概要

値に改行が入ってるときに出力側で br に変更したい場合がある．
[リポジトリ](https://github.com/bobthecow/mustache.php) の README にも書いてあるけどオブジェクトや連想配列で指定した関数は実行できる．
実行される関数の中で nl2br() を呼び出してレンダリングさせるとうまくいく模様．
似たような感じで php にある関数を用いたい場合も似たような手法がとれそう．

## 動作確認

とりあえず composer で mustache を入れる．

```
$ cat composer.json 
{
     "require": {
         "mustache/mustache": "v2.6.0"
     }
}
$ composer install
```

php ファイルで下記のように書いてみる．（ autoload.php の位置とかは環境に合わせて）

```php
<?php

require_once '../vendor/autoload.php';

$mustache = new Mustache_Engine();
$param = array(
  'nl2br' => function($text, $render) {
    return nl2br($render->render($text));
  }
);
$param['body'] = <<<EOF
改行
改行
EOF;

echo $mustache->render(<<<EOF
<!DOCTYPE html>
<html>
<head><title>改行テスト</title></head>
<body>
{{#nl2br}}{{ body }}{{/nl2br}}
</body>
</html>
EOF
, $param);
```

例えば自分の環境だと下記のような構成になってる．

```
$ tree -L 2
.
├── composer.json
├── composer.lock
├── vendor
│   ├── autoload.php
│   ├── composer
│   └── mustache
└── web
    └── index.php
```

ここで web 以下の index.php にアクセスすると下記のような html が出力される

```html
<!DOCTYPE html>
<html>
<head><title>改行テスト</title></head>
<body>
改行<br />
改行
</body>
</html>
```
bundle installでdebugger-ruby_core_sourceが入らなかった話


お仕事関係で[他の人](http://qiita.com/hal_sk/)が担当してるプロジェクトのお手伝いに入ることになった。
内容はlocomotivecmsを使った開発です。
すでに[開発自体進んでる](http://qiita.com/hal_sk/items)ものなので、とりあえず手元の環境を整えようとしたらハマりました。

```bash
bundle install --path=vendor/bundle
...
Using debugger-linecache 1.2.0
Using debugger-ruby_core_source 1.3.2

Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

    /Users/btm/.rbenv/versions/2.0.0-p481/bin/ruby extconf.rb
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
checking for rb_method_entry_t.called_id in method.h... no
checking for rb_control_frame_t.method_id in method.h... no
Makefile creation failed
**************************************************************************
No source for ruby-2.0.0-p481 provided with debugger-ruby_core_source gem.
**************************************************************************
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
	--with-opt-dir
	--without-opt-dir
	--with-opt-include
	--without-opt-include=${opt-dir}/include
	--with-opt-lib
	--without-opt-lib=${opt-dir}/lib
	--with-make-prog
	--without-make-prog
	--srcdir=.
	--curdir
	--ruby=/Users/btm/.rbenv/versions/2.0.0-p481/bin/ruby
	--with-ruby-dir
	--without-ruby-dir
	--with-ruby-include=${ruby-dir}/include
	--with-ruby-lib
	--without-ruby-lib=${ruby-dir}/


Gem files will remain installed in /Users/btm/develop/test/vendor/bundle/ruby/2.0.0/gems/debugger-1.6.6 for inspection.
Results logged to /Users/btm/develop/test/vendor/bundle/ruby/2.0.0/gems/debugger-1.6.6/ext/ruby_debug/gem_make.out
An error occurred while installing debugger (1.6.6), and Bundler cannot continue.
Make sure that `gem install debugger -v '1.6.6'` succeeds before bundling.
```

プロジェクト自体のGemfile.lockがdebugger-ruby_core_sourceの1.3.2を指定していて、このバージョンを入れようとしてコケてるという感じです。

## 原因

平たく言えばdebugger-ruby_core_sourceが対応してるRubyのバージョンではなかったというオチです。
今回は2.0.0を利用するプロジェクトなんですが、このために現時点でruby-buildで入る最新のruby-2.0.0-p481を使ったのですが、これがdebugger-ruby_core_sourceでは1.3.4以降に対応しているようです。
なお、確認方法はdebugger-ruby_core_sourceの[コミットログ](https://github.com/cldwalker/debugger-ruby_core_source/commits/master)を見ました。

## 解決方法

今回は他の開発者がアップデートするの面倒だろうと思い、debugger-ruby_core_source 1.3.2で対応しているruby-2.0.0-p451を入れることで対応しました。

```bash
rbenv install 2.0.0-p451 --keep
rbenv local 2.0.0-p451
gem install bundler
bundle install --path=vendor/bundle
```

## よくわからないこと

` gem install debugger -v '1.6.6'`

とか

` gem install debugger-ruby_core_source -v '1.3.2'`

とかはやっていたんだけど、これでもコケた。
他だとだいたいこのパターンで解決してるっぽいのだけど、なんだろう？
まぁ、このパターンなんか負けた気がするからいいんだけどw
serverspecをデバックする

# 目的
Pythonのversionをテストしたい

# 前提条件
[pry](https://github.com/pry/pry)がインストールされていること

# テスト

STDOUTに出力されることを期待していた。

specコード

```rb
describe command('/usr/bin/python -V') do
  it { should return_stdout "Python 2.6.6" }
end
```

しかし、テストに失敗した。

```bash
Failures:

  1) Command "/usr/bin/python -V" should return stdout "Python 2.6.6"
     Failure/Error: it { should return_stdout "Python 2.6.6\n" }
       expected Command "/usr/bin/python -V" to return stdout "Python 2.6.6"
     # ./spec/base/version_spec.rb:5:in `block (2 levels) in <top (required)>'

```

specinfraの[コード](https://github.com/serverspec/specinfra/blob/master/lib/specinfra/backend/ssh.rb#L10)に`binding.pry`をしこんで見たところ

```irb
[3] pry(#<SpecInfra::Backend::Ssh>)> ret
=> {:stdout=>"", :stderr=>"Python 2.6.6\n", :exit_status=>0, :exit_signal=>nil}
```

`:stderr`!!!

# 変更後

```ruby
describe command('/usr/bin/python -V') do
  it { should return_stdout "" }
  it { should return_stderr "Python 2.6.6" }
  it { should return_exit_status 0 }
end
```

結果

```bash
Command "/usr/bin/python -V"
  should return stdout ""
  should return stderr "Python 2.6.6"
  should return exit status 0

Finished in 3.74 seconds
3 examples, 0 failures
```

ということで、うまくマッチしなかったときのデバック方法でした。
他にいい方法がありましたら誰かコメント下さい。m(-_-)m
Gruntでプチバージョン管理♥ぽいアップロードのやりかた



# ブランチを簡単に切るようにアップロードがしたいんです！

いろんな演出を試したり、UIを変更したり、ブランチを簡単に切るようにアップロードがしたいんです。  
で、いろんなひとにサクッと確認してほしいんです！


# 日付ディレクトリを自動で作ってアップロードしまくる！

こういう感じのバージョンにしたディレクトリをいっぱい作ってそこに展開しまくります。

![hiduke.png](https://qiita-image-store.s3.amazonaws.com/0/2631/8eb4eb3d-49ed-285a-dbc8-780ca9e9e580.png "hiduke.png")





# わかりやすい！やりかた
1. [grunt-sftp-deploy](https://github.com/thrashr888/grunt-sftp-deploy) を使います
2. ビルドIDを作成(日付ディレクトリになるやつ)
3. `public`ディレクトリの中身を、日付ディレクトリにアップロードするように`sftp-deploy`の`dest`を設定


``` Gruntfile.coffee
# Grunt v0.4.5で動きます
# 日付を作る
# build-versionオプションが設定されてなかったら、いまの時間を設定する
revision = grunt.option('build-version') or grunt.template.today('yyyy-mm-dd_HH-MM-ss')

# アップロードする場所を決める
uploadPath = "hogehoge/assets/#{revision}"

# ~~~~ 中略 ~~~~~


grunt.initConfig 
  'sftp-deploy':
    develop:
      auth: hogehoge
      src: 'public'
      dest: uploadPath
      exclusions: ['.DS_Store']


grunt.registerTask 'testup', ['sftp-deploy:develop']
```

## 実行！

``` sh
$ grunt testup
```

で、`hogehoge.com/hogehoge/assets/2014-05-21_19-32-00/` というディレクトリに一式アップロードされます！

# `grunt-sftp-deploy`の注意点

`hogehoge/assets/2014-05-21_19-32-00/` みたいなディレクトリにアップするときは、あらかじめサーバーのほうに

* hogehoge
* assets

ディレクトリを作成しておいてください。エラーで止まります！


# 絶対パスでいろいろ設定しておく

jadeなどそれぞれ `uploadPath`を渡してあげたりするよいです。

これを本番化するときに
* 'hogehoge/assets/日付ディレクトリ/'から htmlだけを抽出して
* 'hogehoge.com/hogehoge/index.html'を を上書き

というふうにすると、簡単にバージョンを変えられたりします。

htmlのキャッシュが気になるひとはサーバーの設定を変えたり、phpでincludeしてあげたりすればいいのかなとおもいます。


# Jenkinsでは`$BUILD_ID`という定数が使える

![plu31bfo.png](https://qiita-image-store.s3.amazonaws.com/0/2631/957a7472-02d5-daa8-5172-be6236f73ed2.png "plu31bfo.png")

`$BUILD_ID`は`'yyyy-mm-dd_HH-MM-ss`の形式で渡ります。

なんでJenkins経由からでもアップロードしまくり！

いろんなバージョン確認できまくり！

ヨッシャー！！
RE: 私家版MVCべからず集

## はじめに

http://qiita.com/usopyon/items/6a19ee911682dc95a591

この記事が面白かったのですが、この手の話は信じる宗教の違いが大きく絡むためコメントを付け始めると宗教戦争が始まって不毛になり易いし、どうやっても普遍的な答えは導き出されないと思うので、この記事を下敷きにしながら「ぼくのかんがえるMVCべからず集」をまとめてみようと思います。他の人の考える「ぼくのかんがえるMVCべからず集」も読んでみたいです。

## 前提となる「ぼくのかんがえるMVC」

- MVCはそれぞれ「層」ではなく「コンポーネント」である
- MVCはそれぞれが協調して動くものであると考えている

## Model

Modelは所謂業務ロジックのコンポーネントです。目安として「動かすプラットフォームやアプリケーションの形態(ex:Web, Native)が変わっても、不変なロジック」がModelです。ここで言うModelはDBのことを指しません。勿論ORマッパのことをModelと呼んでる訳でもありません。

- ~~DBにアクセスしていいのはModelだけ~~
- 他のデータとの整合性など最終確認はModelで。
- ~~テストファーストで書く~~
- ここでprintとか絶対NG
- ここでWebサーバ由来の情報（SESSIONなど）があったら、何か間違ってる

### 差分について
####「DBにアクセスしていいのはModelだけ」ではない

必要であればViewからも直接DBを見に行けるべきです(ORマッパやDB周りのライブラリを通じて)。Viewが単純に表示したいだけの都合でModelやControllerが影響を受けるべきではない。

#### 必ずしも「テストファーストで書く」必要はない

UnitTestは有った方が良いですが別にテストファーストでなくても良いと思います。
勿論、テストファーストが悪い訳ではありません。

## View

テンプレートとテンプレートに渡すデータを作る機能をまとめてViewであると考えています。

- ~~ここでDBにアクセスしてたら何か間違ってる~~
- ~~ここでIF文とかあったら、Controller側ですべきか検討する~~

### 差分について
####「ここでDBにアクセスしてたら何か間違ってる」訳ではない

Modelで触れている通りです。話をテンプレートに限定しているならば、そんなところでアクセスすべきではないという意見は一致します。ただ、Viewというコンポーネントは自分が表示したいだけの情報の取得はViewが受け持つべきだと考えます。

#### 必ずしも「ここでIF文とかあったら、Controller側ですべきか検討する」必要はない

Viewの都合をContorllerが受け持つ必要はありません。

## Controller

そのURLがそのURLである責務を果たすためのコンポーネントのことだと考えています。例えば「/me」というURLが有る時、Controllerはログインチェックをして非ログインであれば、ログインフォームへリダイレクレトし、ログイン中であればSessionからユーザーのIDを抜いて、Userを管理するモデルへIDを渡し、情報を受け取り、期待されるRequestがHTMLであればViewに渡し、JSONであればJSONをシリアライズする機能に渡すようなコンポーネントです。

- ~~ここでDBにアクセスしてたら何か間違ってる~~
- ~~ここでバリデーションとかしてたら、何か間違ってる~~

### 差分について
####必ずしも「ここでDBにアクセスしてたら何か間違ってる」訳ではない

Controllerの役割としてのDBアクセス(ORマッパやDB周りのライブラリを通じて)であれば全力で行うべきです。
とは言え、そういったケースは少ないかも知れません。

#### 「ここでバリデーションとかしてたら、何か間違ってる」訳ではない

業務ロジックとしてのバリデーションはModelがするべきであると考えます。しかし、そのControllerが期待しているrequiredであったりデータ型のチェックのようなバリデーションは、Controllerがするべきだと考えます。
クラス変数、クラスメソッド使用例


```python:hoge.py
class hoge(object):
    ham = 0 

    def __init__(self):
        self.spam = 0

    def print(self):
        print('class.ham ' + str(hoge.ham))
        print('self.ham '+ str(self.ham) )
        print('self.spam ' + str(self.spam))

        self.clsM()#クラスメソッドはself.からでも呼び出せる

    def increment(self):
        self.spam += 1
        self.ham += 1 #クラス変数ham→インスタンス変数hamに代入されてからインクリメントされるイメージ

    @classmethod
    def clsM(cls):
        print('called class method')

a = hoge()
a.increment()
a.print()
```

##実行結果

```Bash:
class.ham 5
self.ham 6
self.spam 1
called class method
```
Railsでgetやpost経由のテスト時、スタブに渡された引数の値を確認する(MiniTest)

#Railsでgetやpost経由のテスト時、スタブに渡された引数の値を確認する(MiniTest)

Railsでgetやpost経由でメソッドをテストする場合に、
スタブに渡された引数の値を次のやり方で確認しました。

MiniTestを使っています。

```rb
res = nil
mock = MiniTest::Mock.new
mock.expect(:call, nil) do |arg1|
  res = arg1
end

Foo.stub(:foo, mock) do
  get :test # 内部でFoo.fooを呼ぶ処理
do

assert_equal 'baz', res
```

post経由だと非同期になる？ためか、

`mock.expect(:call, nil, ['baz'])`

の書き方ではMockExpectationErrorが発生したのでこのような対応を取りました。
（`:test`が実行される前にマッチャが呼ばれていると想定）

`:test`実行直後にcallbackが呼べる、もしくは何秒後に期待値と比較といった書き方ができるのであればそちらを利用したいです。
（ご存じの方がいらっしゃればやり方を教えてもらえるとうれしいです）
std::vectorと()と{}

メモ。

```cpp
#include <vector>
typedef std::vector<int> vector;

int main()
{
  vector v1(2);  // [0,0]
  vector v2{2};  // [2]
  vector v3(3, 4);  // [4,4,4]
  vector v4{3, 4};  // [3,4]
}
```
SpriteKitで使用できるパーティクルのパラメータ一覧

iOS7から使用できるParticle Emitter Editorが
SpriteKitで使えるパーティクルをXcodeで確認しながら簡単に作れそうで、
便利そうだったので今のうちにまとめておく。
とりあえず、メモ程度に。
（気が向いたら、画像とかも使って書こうかな^^;

これを書いてる環境はXcode5.1.1なので、
Xcodeのバージョンが変わると、以下の表記も変わるかもしれないです。

#パーティクルファイルの生成とParticleEmitterEditorの表示
パーティクル用のファイルは
「NewFile」＞「Resource」＞「SpriteKitParticleFile」＞好きなテンプレート
これで「～.sks」というパーティクル用のファイルが作成される。

このパーティクル用のファイルを選択し、
Xcode右側に出てくる「Utilities」を開いて、
立方体みたいなボタン(？)を選択するとインスペクタが表示される。


#Emitter Node

##Background
シュミレータの背景色

***
##PartuckeTexture
パーティクルで使用するテクスチャ(プロジェクト内に含まれている画像ファイルを選択可能)
`SKEmitterNode.particleTexture`

***
##Particles
パーティクル発生パラメータ
> Birthrate：パーティクルが作成される速度
>`SKEmitterNode.particleBirtshRate`
> Maximum：一度に表示可能な最大数(0の場合は、制限なし)
>`SKEmitterNode.numParticlesToEmit`

***
##Lifetime
パーティクルの寿命
>Start：パーティクルを生成してから消えるまでの時間
>`SKEmitterNode.particleLifetime`
>Range：消えるまでの乱数範囲
>`SKEmitterNode.particleLifetimeRange`

***
##PositionRange
パーティクルが生成される座標の範囲
`SKEmitterNode.particlePositionRange`
>X：x方向の範囲
>Y：y方向の範囲

##Angle
パーティクルが放射される向き(度)
>Start：パーティクル作成時に放射される向き
>`SKEmitterNode.emissionAngle`
>Range：放射される向きの乱数範囲
>`SKEmitterNode.emissionAngleRange`

##Speed
パーティクルが放射されるスピード
>Start：パーティクル作成時の放射スピード
>`SKEmitterNode.particleSpeed`
>Range：放射スピードの乱数範囲
>`SKEmitterNode.particleSpeedRange`

##Acceleration
パーティクルの加速値(重力係数など、すべてに一様に適用される)
>X：x方向の加速
>`SKEmitterNode.xAcceleration`
>Y：y方向の加速
>`SKEmitterNode.yAcceleration`

***
##Alpha
パーティクルの透明度
>Start：パーティクル作成時の透明度
>`SKEmitterNode.particleAlpha`
>Range：透明度の乱数範囲
>`SKEmitterNode.particleAlphaRange`
>Speed：透明度に加算されていく値
>`SKEmitterNode.particleAlphaSpeed`

***
##Scale
パーティクルの拡大率
>Start：パーティクル作成時の拡大率
>`SKEmitterNode.particleScale`
>Range：拡大率の乱数範囲
>`SKEmitterNode.particleScaleRange`
>Speed：拡大率に加算されていく値
>`SKEmitterNode.particleScaleSpeed`

***
##Rotation
パーティクルの角度(度)
>Start：パーティクル作成時の角度
>`SKEmitterNode.particleRotation`
>Range：角度の乱数範囲
>`SKEmitterNode.particleRotationRange`
>Speed：角度に加算されていく値
>`SKEmitterNode.particleRotationSpeed`

***
##ColorBlend
色の合成値
>Factor：パーティクルの寿命までの「ColorRamp」の位置
>`SKEmitterNode.particleBlendFactor`
>Range：「Factor」の乱数範囲
>`SKEmitterNode.particleBlendFactorRange`
>Speed：色の合成値に加算されていく値
>`SKEmitterNode.particleBlendFactorSpeed`

***
##ColorRamp
色の度合い
パーティクル生成時に左端の色から開始し、
「ColorBlend」の「Factor」の割合まで色が変化する
バーをクリックで色を追加し、
色が追加された部分を下にドラッグすることで削除
`SKEmitterNode.particleColorSequence`

***
##BlendMode
ブレンドモードの選択
`SKEmitterNode.particleBlendMode`
>* Alpha：透明度のみ
>* Add：色の加算(画像の黒い部分ほど、背景色が出る)
>* Subtract：色の減算(画像の白い部分ほど結果は黒くなる)
>* Multiply：色の乗算(一般的に暗くなる)
>* MultiplyX2：色の乗算(Multiplyよりも暗くなる)
>* Screen：スクリーン処理(一般的に明るくなる)
>* Replace：パーティクルの色のみを使用

***


表示時は以下のようなコードで表示ができる。

```lang:MyScene.m
NSString *path = [[NSBundle mainBundle] pathForResource:@"ファイル名" ofType:@"sks"];
SKEmitterNode *node = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
node.position = CGPointMake(x位置, y位置);
[self addChild:node];
```

※ソースコード上で呼び出す際のメソッドも追記

上記のほかにも、インスタンスから直接呼び出せるパラメータもあるので
それらは随時追記。

(この辺を使って、cocos2d-xで読み込めるファイルへのコンバータとか作ってみようかな・・・という妄想中。


参考：https://developer.apple.com/library/mac/documentation/IDEs/Conceptual/xcode_guide-particle_emitter/xcode_guide-particle_emitter.pdf