OmniAICreator/Qiita-1.07M huggingface dataset:
GitHub OrganizationのTeamに居るけどQiita:Teamに居ない人を探す

Qiita:Team側がサービス連携でやってくれてもよい気がする。
同名のIDを前提としているので原始的……

```js
// https://github.com/orgs/*/teams/*
var github_members = $(".team-members .team-member-username").map(function(i, elm){return $(elm).text().trim()});
console.log("var github_members = " + JSON.stringify(github_members.toArray()) + ";");

// ↓コピペで移動（！）
// https://*.qiita.com/admin/members
var qteam_members = $(".teamMembersSetting_name").map(function(i, elm){return $(elm).text().replace(/@github$/, '')})

var result = $(github_members).not(qteam_members).get();

console.log(result);
```
【Android】Viewのinflate時にwarningが出る場合の対処法

Viewをinflateする際、下記のように第2引数にnullを渡すとwarningが出る。

```
LayoutInflater.from(context).inflate(R.layout.hoge, null);
```

warningの内容は「rootViewにnull渡すと相応しいLayoutParamsが付けられんので、何か渡してちょ」という感じ。
なので、基本的にはnullじゃなくてちゃんと値を渡しましょー。

ActivityのContentViewをinflateで生成したい場合など、どうしてもnullしか渡せない時は下記で回避可能。

```
View.inflate(context, R.layout.hoge, null);
```

View.inflate()内部では上記と全く同じことをやっているが、メソッドが1枚噛むので呼び出し側ではwarningが出なくなる。
いい加減macにlsyncdを入れてlinuxに転送しまくりたい。


のっぴきならない事情でLinuxのリモートマシンで作業をしないといけないことがある。
とはいえ作業は手元のmacでやりたい（source tree使いたい！atom使いたい！）

ということで今までgruntでwatchしてrsync・・・みたいな力技でちょろまかしていたけど、ちょっと人に伝授する機会があって今まで何度か挫折してたlsyncdを導入してみた。

今回の要件としてはこんな感じ

- なるべくセットアップを簡易に
- 遅延はなるべく無く
- 転送は片方向だけでよしとする（ mac -> linux )
- sshの鍵設定はしているものとする
	- してないと転送のたびにパスワード聞かれてしまった。

# install
今回はrsyncを使った転送をするので、rsync、あとはatomあたりでハイライトするようにluaも入れておく。

```
brew update
brew install homebrew/dupes/rsync
brew install lsyncd lua
```


## lsync.conf
今回デザイナーさんなどに伝授するにあたり、設定ファイルを分離するとかちょっとだけ複雑なことをした。

まず設定ファイルだけ外にまとめとく。
ここだけいじれば大丈夫よ的な感じに。

```conf.lua
return {
  user   = "your.name",
  host   = "0.0.0.0",
  source = "/path/to/source",
  dest   = "/path/to/dest",
}
```

あと本筋のlsync.confの方がこんな感じ。

```lsync.conf.lua
-- variables
local conf = dofile("conf.lua")

local homeDir = os.getenv("HOME")
local target = conf.user.."@".. conf.host..":".. conf.dest

-- lsyncd
settings{
  logfile     = "/tmp/lsyncd.log",
  statusFile  = "/tmp/lsyncd.status",
  insist      = true,
  nodaemon    = true,
  delay       = 0,
  statusInterval  = 10,
  maxProcesses    = 2,
}

sync{
  default.rsync,
  delete = false,
  source = conf.source,
  target = target,
  exclude = { ".DS_Store", ".sass-cache/**/*"},
  rsync = {
    binary = "/usr/local/bin/rsync",
    archive = true,
    compress = true,
    rsh = "/usr/bin/ssh -i "..homeDir.."/.ssh/id_rsa"
  }
}
```

なんか注釈としてはこんな感じ

- `dofile`とかでファイル読み込んでる。
- sshの鍵ファイル特定を怠けるのに`$HOME`を`getenv`で読み込んでる
- delayがデフォルト15ぐらいになっていて即時反映されなくて困るのでここは変えておく
- excludeは適当に設定。

# 起動

```
sudo lsyncd lsync.conf.lua
```

なんかwarnが出るのだが仕方なさそう。挙動は今のところ問題なし
https://github.com/axkibe/lsyncd/issues/291



### まとめ
lsyncdについてわりとmacでの情報はなさ気だった。
けど割りと普通に使えた。
lua楽しい。

とりあえず今回作ったのはここに置いた。
https://github.com/suisho/lsyncd-boilerplate
PowershellでGruop化集計

##はじめに
informixの中途パンパなSQLのCase式はGroup化して合計ができない。
仕方なしに一度csvに出力してPowerShellで集計してやることにした。

合計は想定されているがグループ化して集計というのは、
あまり用途が無いようでサンプルを探すのに苦労した。

##Gruop化の仕方と集計

まず下記のcsvファイルを用意する。
nameでGroup化してval1からval3の合計を出したい。

test.csv

```:test.csv
name,val1,val2,val3
aaa1,15,15,26
bbb1,100,100,200
aaa1,15,15,26
bbb1,20,30,25
```

まずは、val1をグループ化して合計。

ワンライナーだが見やすくするために、
行の終わりに「`」(バッククオート)を追加して
改行している。

```ps1:val1をグループ化して合計
PS > Import-Csv test.csv `
>> | group Name `
>> | select Name, `
>> @{Name="Total";Expression={($_.group| Measure-Object -sum val1).sum}}
>>
```

```ps1:合計
Name   Total
----   -----
aaa1    30
bbb1   120
```

次に、val1からval3の合計を出す。

```ps1:val1からval3をGruop化して合計
PS > Import-Csv test.csv `
>> | group Name `
>> | select Name, `
>> @{Name="val1";Expression={($_.group| Measure-Object -sum val1).sum}}, `
>> @{Name="val2";Expression={($_.group| Measure-Object -sum val2).sum}}, `
>> @{Name="val3";Expression={($_.group| Measure-Object -sum val3).sum}}
>>
```

```ps1:合計
Name    val1    val2     val3
----    ----    ----     ----
aaa1     30       30       52
bbb1    120      130      225﻿
```

##参考サイト
[powershellでcsvの集計 - @nifty教えて広場](http://oshiete1.nifty.com/qa8642965.html)
E2D3 初めてのハッカソンレポート

> エクセルを使って表現豊かなデータビジュアライゼーションを簡単に実現する。こんな便利なアプリが[E2D3](http://e2d3.org)です。マイクロソフトのエクセル上で使える無料アプリで、さまざまな企業のエンジニアが自主的に集まって開発を進めています。先日、アプリのブラッシュアップに向けた初めてのハッカソンも開かれ、開発が本格化しています。
 
# [E2D3](http://e2d3.org)とは

E2D3の「E」とはエクセル、「D3」とはD3.jsと呼ばれるデータビジュアライゼーションライブラリーの名前を略したものです。

D3.jsの最大の特徴は、ダイナミックなアニメーション機能と任意のデータを自由に検証できるインタラクティブ機能です。例えば、単純な棒グラフでも、動きがつくことで表現が格段に豊かになるほか、より詳細なデータを盛り込むことができるようになります。また、バブルチャートやツリーマップなど多彩なグラフも自由につくることができ、海外のニュースメディアなどで活用が進んでいます。

![1.png](https://qiita-image-store.s3.amazonaws.com/0/60629/f0fb9372-57f5-b6a8-d1dd-890a9469bd48.png)

しかし、D3.jsを使いこなすにはJavaScriptなどプログラミングの技術が必要で、誰もが簡単に使いこなせるわけではありません。そこで、開発されたのがE2D3です。E2D3では、エクセルのシートでデータを作成して表現したいグラフを選ぶだけで、D3.jsの豊かなデータビジュアライゼーションを実現することができます。ビジネスマンに馴染みの深いエクセルを利用することで、D3.jsをより身近にしようというのがねらいなのです。

# 初めてのハッカソン

E2D3はさまざまな企業のエンジニアが自主的に集まって開発を進めています。現在、日本地図や棒グラフ、ツリーマップなど8つのビジュアライゼーションが可能になっています。

2月8日には、[初めてのハッカソン](https://www.facebook.com/events/763949880350733/)が開かれました。E2D3を使いやすくしたり、表現できるグラフやビジュアライゼーションの種類を増やしたりするのが目的です。参加したのは、エンジニアやアプリを仕事に利用したいビジネスマンなど約30人。初めにプログラマーの初心者でも参加できるようハンズオンセミナーが開かれ、開発メンバーがD3.jsの基礎知識やアプリの開発環境などの説明を行いました。

 ![3.png](https://qiita-image-store.s3.amazonaws.com/0/60629/52dd3940-1095-a666-2d15-35c06a090930.png)

このあと、昼食を挟んで実際の開発が行われました。4時間という短い時間でしたが、夕方から開かれた成果発表では、ミシュランで星を獲得した都内のレストランをマッピングした地図や、住宅ローンの借入額や繰り上げ返済などを分かりやすくシミュレーションできるグラフ、また、4万台以上のハードディスクのモデル別の故障率をビジュアライズしたグラフなど、ユニークな作品が出そろいました。

![4.png](https://qiita-image-store.s3.amazonaws.com/0/60629/93ca1840-d033-6802-ca2e-df2306b9df3e.png)

# E2D3の可能性

ビッグデータやオープンデータなど、今、データの重要性が再認識され、ビジネス、医療、ジャーナリズムなどあらゆる分野で、データに基づいて課題を解決する能力が求められています。データで課題を解決するためには、高い分析能力だけでなく、課題を共有するためにデータを分かりやすく可視化する能力も求められます。E2D3はこの課題の共有を誰もが簡単に実現できるアプリなのです。

E2D3の開発グループでは、現在、エンジニアやビジネスマンなど、アプリのブラッシュアップに協力してくれるメンバーを募集しています。また、4月11日には[2回目のハッカソン](https://www.facebook.com/events/426627054129166/)も予定しています。少しでも興味を持ってくださった方は、ぜひ、ご参加下さい。

![5.png](https://qiita-image-store.s3.amazonaws.com/0/60629/686a08b4-8e94-b4fb-49e5-df3602e106d9.png)

（撮影・文章：山本 智）
音声認識システム　Kaldiを試しに動かしてみた

音声認識システムでJuliusは日本語では有名だが、DNN（ディープ・ニューラルネットワーク）を用いて音声認識を行っているKaldiに関しては日本語のドキュメントが整備されていない。
備忘録も込めて、Kaldiの初期インストールから実践までをまとめてみた。

#Kaldiインストール

Kaldiをインストールする前に準備が必要なので、予めインストールしておくべきライブラリ一覧を下記に示す。

```shell-session

build-essential
gfortran
libgfortran3
python-dev(python3-dev)
libblas-dev
libatlas-base-dev
cython
g++ 
zlib1g-dev
automake
libtool
autoconf 
```
svnを用いた場合とgitを用いた場合がある。

###svn

```shell
svn co https://svn.code.sf.net/p/kaldi/code/trunk kaldi-trunk
 ```

###git
```shell
git svn clone https://svn.code.sf.net/p/kaldi/code/trunk kaldi-trunk

```

#Kaldiのインストール

ダウンロードした時点でKaldiのツールが揃っている。
tools以下のフォルダに移動するとツールの一覧が確認可能。

```shelll
kaldi-trunk/tools
```
今回は初歩の動作を確認可能なyesno/のフォルダに移動して動作を確認する。

下記フォルダに移動する

```shelll
kaldi-trunk/egs/yesno/s5
```

単純な動作確認が可能なスクリプトであるrun.shがある

```shelll
sh run.sh
```

これを上記のコマンドで実行すると単純な動作であるがKaldiの動作を確認可能である。

この動作は下記のように行われている

1.データを用意
2.音声認識に必要なデータ抽出
3.音響モデルの学習（モノフォン）
4.デコーディング（識別）に必要なグラフ作成
5.デコーディング（識別）
6.認識率の出力

簡単な結果しか出力しないので、とりあえずKaldiを触ってみたい人はこの流れで良いかと

有識者の方がいれば間違っている点に訂正していただけるとありがたいです。

##参考リンク

http://kaldi.sourceforge.net/install.html#install_install

今後は具体的なデータの準備の仕方やvoxforgeを試しに動かして動作確認をしてみます。
Pythonでツイートを取得し外部ファイルへ保存、形態素解析をかけるスクリプト。

ずっとTwitter API触っていたのでようやく形態素解析やってみようかと。
ここから色々発展させて遊べそうな予感がしてるところで以下がソース。

```python:meca.py

#!/user/bin/env python
# -*- coding: utf-8 -*-
from requests_oauthlib import OAuth1Session
import json
import sys
import MeCab

C_KEY = "********************************"
C_SECRET = "********************************"
A_KEY = "********************************"
A_SECRET = "********************************"

def Home_timeline():
	url = "https://api.twitter.com/1.1/statuses/home_timeline.json"
	params = {
				"lang": "ja",
				"count": "100"
				}
	tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
	req = tw.get(url, params = params)
	tweets = json.loads(req.text)
	for tweet in tweets:
		f = open("test.txt" , "aw")
		lists = (tweet["text"].encode("utf-8"))
			
		f.write(lists)
		f.flush()
		f.close()

def Mecab_file():	
	f = open("test.txt","rb")
	data = f.read()
	f.close()
	
	mt = MeCab.Tagger("-Ochasen")
	print mt.parse(data)


Home_timeline()
Mecab_file()
```

相変わらず美しくないですが、やってる処理は分かりやすいのではないかと。
f.flush()は必要かどうかわかりませんが念のため。
その後Mecabへ渡して形態素解析をかけてます。形態素解析の結果を表示するのはparseでやってますが、ここらへんも見やすく改造したいところ。	

MeCabモジュールをインポートするにあたって、codecが干渉したのでimport sysだけにしてます。
go-latestを使ってみた


[@deeeet](https://twitter.com/deeeet)さんが開発して話題の[go-latest](https://github.com/tcnksm/go-latest)を早速使ってみた．
go-latestはGitHubのタグなどと比較して，使用中のツールが最新版かチェックすることができる．
今回はGo製Sensu CLIの[ohgi](https://github.com/hico-horiuchi/ohgi)に入れて使ってみた．

  - [Go言語のツールが最新バージョンであるかをユーザに伝えるためのgo-latestというパッケージをつくった | SOTA](http://deeeet.com/writing/2015/04/07/go-latest/)
  - [Go言語でsensuのCLI「ohgi」を作った - Qiita](http://qiita.com/hiconyan/items/d82cee8e891bb5b0341e)

## go-latestの使い方

`go get`でインストールして，ohgiの`version`コマンドに組み込んでみた．
`main.go`からは`ohgi.Version("v0.1.0")`のように呼び出す．

```go:ohgi/ohgi/version.go
package ohgi

import (
	"fmt"
	"github.com/tcnksm/go-latest"
)

func Version(version string) string {
	var result []byte
	result = append(result, fmt.Sprintf("ohgi version %s\n", version)...)

	fixFunc := latest.DeleteFrontV()
	githubTag := &latest.GithubTag{
		Owner:             "hico-horiuchi",
		Repository:        "ohgi",
		FixVersionStrFunc: fixFunc,
	}

	res, _ := latest.Check(githubTag, fixFunc(version))
	if res.Outdated {
		result = append(result, fmt.Sprintf("Latest version of ohgi is %s, please update it\n", res.Current)...)
	}

	return string(result)
}
```

ここでは，`latest.GithubTag`を使い，`Owner`と`Repository`を指定して`Check()`を実行する．
バージョンが古い場合は，`res.Outdated`が`true`になる．
(使用バージョンの方が新しいと，`res.New`も`true`になるようだ．)
`res.Current`に最新のバージョンが文字列で格納されている．

## 便利なFixVersionStrFunc

バージョンの形式が`0.1.0`ではなく`v0.1.0`の場合のために，関数が用意されているようだ．
標準では何もしないが，`latest.DeleteFrontV()`を使うことで，頭の`v`を取り除ける．
必要なら，これを`latest.GithubTag`の`FixVersionFunc`に渡してやると良いようだ．

## おわりに

go-latestを使うことで，バージョンが古い場合は以下のように通知が出せるようになった．
今後，Go言語製のツールでGitHubで管理するものは，go-latestが必須になる気がする．
(更新が必要な場合は，GitHubのURLを表示すると良いかも．)

```
$ ohgi version
ohgi version 0.1.4
Latest version of ohgi is 0.1.5, please update it
```
Virtusが便利

**Virtus**というgemが便利でした

Railsの検索フォーム等、モデルに紐付かないパラメータを処理する時などに使用するといいと思います。

```rb
class SearchForm
  include Virtus.model

  attribute :product_name,    String
  attribute :group_id,        Integer
  attribute :created_at_lteq, Date
  attribute :created_at_gteq, Date
end
```

```rb
# form_param = { product_name: 'hoge', group_id: '111', created_at_lteq: '2015/01/01', created_at_gteq: '2015/04/01' }
form = SearchForm.new(form_params)

form.product_name    # => 'hoge'
form.group_id        # => 111
form.created_at_lteq # => Thu, 01 Jan 2015
form.created_at_gteq # => Wed, 01 Apr 2015
```
型もちゃんとStringからそれぞれの属性にマッピングしてくれるので、
**Date.parse**等、面倒な処理をしなくて良い

validation等を追加したい場合、

```rb
class SearchForm
  include Virtus.model
  include ActiveModel::Model

  validates :name, presence: true

  ....
```
ActiveModel::Modelをincludeしてやれば

```rb
form.valid?
```
で簡単に検証できる。楽チンですね。

# 2018/01/22 追記

何かの値を渡して、初期値を設定したい時、私の場合は、

```rb
attribute :code,       String
attribute :from_month, String, default: lambda { |page, attribute| Time.zone.today.strftime('%Y/%m') }
attribute :to_month,   String

def initialize(**args, &block)
  super

  # to_monthが空の場合は、from_monthをset
  self[:to_month] = from_month if to_month.blank? 

  self[:code] = args[:code].presence
end
```

こんな風に書いたりします。
もっといい方法があるかもしれませんが・・・

Virtus:
https://github.com/solnic/virtus
音声認識に用いるコーパス　データ量、質で分類してみた

#音声認識に用いるコーパス
音声認識には音の情報を知覚するための音響モデル、言語情報を知覚するための言語モデルが必要

1.音響モデル
-最低必要なもの
--音響モデルには音声データと音素との対応付がされた辞書が必要

-あったらベター
--書き起こし文
--音声に関する付随情報（発話開始時間、発話終了時間、話者、アクセント、モーラなど）

2.言語モデル
-最低必要なもの
--生のテキストデータ

-あったらベター
--品詞情報が付与されているコーパス
--構文解析木つきのコーパス
--対訳付きのコーパス
--機械翻訳や対話などの自然言語理解の研究を進めるのにタグ情報
--見出し語とその読みと品詞を集めた語彙目録ないし単語・形態素一覧表
--語が複数の意味を持つ場合の語義の説明、格パターンを集めた辞書にする

##コーパスに関して、値段と質から勝手に選別してみた（今回は対話にフォーカスしています）

質に関しては個人の主観が入ってますので、予めご注意を

###音響モデル用のデータ

質に関しては４段階評価をしています。(4が最高です）

| コーパス名 | 質 | 値段 |
|:-----------|------------:|:------------:|
| CSJ（話言葉コーパス)       |        4 |  2.5万〜50万        |
| JNAS( 新聞記事読み上げ音声コーパス)    |      3 |   21,600円（税・送料込）   |
| PASD(「音声対話」 対話音声コーパス )   |      2 |    無料     |
| 会議音声データベース (RWCP-SP01)  |      2 |    無料     |
|　研究用連続音声データベース (ASJ-JIPDEC) | 3 |  4,860円　|

-CSJ

--評価理由
---値段は高いが、研究するのに必要な情報は十分に揃っている。詳細は下記リンクを見ていただきたいほど豊富な情報を含んでいる。

http://pj.ninjal.ac.jp/corpus_center/csj/subscription/condition/

-JNAS

--評価理由
---読み上げテキストがついており、音素バランス文の読み上げ音声、データの量が豊富な点が魅力

http://research.nii.ac.jp/src/JNAS.html

重点領域研究「音声対話」 対話音声コーパス (PASD)

--評価理由
---模擬対話の音声を取得が可能で無料なのが良い。データがどの程度詳細に整っているかは不明

http://research.nii.ac.jp/src/PASD.html

会議音声データベース (RWCP-SP01)

--評価理由
---個別話者、全員の音声と多彩な音声データが取得可能であるが、データの質に不安がある。

http://research.nii.ac.jp/src/RWCP-SP01.html

-研究用連続音声データベース (ASJ-JIPDEC)

--評価理由
---音素バランス文及び読み上げ音声、模擬対話とバラエティ豊富な音声があるため。

http://research.nii.ac.jp/src/ASJ-JIPDEC.html

###言語モデル用のデータ

| コーパス名 | 質 | 値段 |
|:-----------|------------:|:------------:|
| CSJ（話言葉コーパス)       |        4 |  2.5万〜50万        |
| JNAS( 新聞記事読み上げ音声コーパス)    |      3 |   21,600円（税・送料込）   |
|  BTSによる多言語話し言葉コーパス   |      3 |   不明   |
|  京都大学テキストコーパス   |      3 |   無料   |

-CSJ

--評価理由
---音響モデルと同様で値段は高いが、音声と同一の言語モデルが付いているので、学習データには頑健な言語モデルが作成可能。ただしドメインによっては追加の言語データを追加する必要がある。

http://pj.ninjal.ac.jp/corpus_center/csj/subscription/condition/

-JNAS

--評価理由
---付随の読み上げテキストを流用可能だが付随情報が少ない。

http://research.nii.ac.jp/src/JNAS.html

-BTSによる多言語話し言葉コーパス

--評価理由
---会話の観点から音声をテキストに直しているため、解析が行いやすい

http://www.tufs.ac.jp/ts/personal/usamiken/corpora.htm

-京都大学テキストコーパス

--評価理由
---あらかじめ形態素解析および構文・関係の付加情報があるため解析の準備が必要ない

http://nlp.ist.i.kyoto-u.ac.jp/index.php?%E4%BA%AC%E9%83%BD%E5%A4%A7%E5%AD%A6%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%B3%E3%83%BC%E3%83%91%E3%82%B9

基本的に付随情報が付いているものは音声でも言語情報でも量が少ないのが現状なので、付随情報がなくても学習できるもしくは付随情報を自動で付与する仕組みがないと厳しいですね。
おそらくいくつか論文で出されていると思うので、情報収集をしたいと思います。
【Swift】MRProgress の利用方法について2

##概要
iOSライブラリのMRProgress利用方法についてです。

[【Swift】MRProgress の利用方法について1](http://qiita.com/tdaiku/items/0da686bc31d96042ab2b)

##利用方法

UIProgressView(文字とプログレスバーの基本表示)を表示する例です。

![image](https://qiita-image-store.s3.amazonaws.com/0/69919/76249597-e943-39ef-bc7c-b4774ce30c10.png)


```swift:filename.swift
    //
    var mrprogress:MRProgressOverlayView!

    //UIProgressViewの表示例
    @IBAction func btn_StartClick(sender: AnyObject) {
        mrprogress = MRProgressOverlayView()
        mrprogress.titleLabelText = "Loading！"
        mrprogress.mode = MRProgressOverlayViewMode.DeterminateHorizontalBar
        
        var progress = UIProgressView()
        progress.progressViewStyle = UIProgressViewStyle.Default
        progress.progress = 0.5
        progress.trackTintColor = UIColor.grayColor()
        progress.progressTintColor = UIColor.blueColor()
        mrprogress.modeView = progress
        view.addSubview(mrprogress)
        mrprogress.show(true)
    }

    //progressバーを進める例
    //StoryboardにTapGestureRecognizerを追加してタップアクション時に
    //progressバーを10%進めてます。100%になったらHide
    @IBAction func tap_Click(sender: AnyObject) {
        if(mrprogress == nil){return}
        let obj = mrprogress.modeView as UIProgressView
        if(obj.progress >= 1.0){
            mrprogress.hide(true)
        }else{
            mrprogress.setProgress(obj.progress + 0.1,animated: true)
        }
    }
```

####プログレスバー作成
MRProgressOverlayViewのmodeViewにUIProgressViewのインスタンスをセットしてます。
このUIProgressView以外にも設定できるmodeViewがあり、
それぞれで設定できる値が違うのではないか？と思っています。

####プログレスバーを進める
とりあえずタップでプログレスバーを進めてテストしてます。
MRProgressOverViewオブジェクトのprogressではなくて
modeViewのprogressに値が入っているため、
いちいちキャストしなくては現在の値が取得できなかったです。

####所感
そもそもMRProgressOverlayViewにprogressがあるのに
modeViewにもprogressを持つのはなんか気持ちが悪い。
おそらくmodeViewをセットしなくても利用方法があるためだとは思いますが・・・・

あとｍodeViewがUIViewクラスにアップキャストしてるため、
ダウンキャストしないとprogressが見えないんですよね・・・
プログレスバーの性質上設定してある値にアクセスする必要性があまりないのはわかりますが、
今回みたいにインクリメントしたい場合には不便ですね。

基底クラスに設定できるプロパティをまとめればどのmodeViewを使う場合もダウンキャストする必要がないのになぁ・・・

##MRProgressのラッパークラス作成
目的は
・設定できるプロパティを明確にする
・簡単にプロパティを設定できる
・呼び出しの簡略化

できれば
・イベントが拾えるならクロージャを追加するだけで処理をしてくれるようにしたい

というわけで今からちょっと書いてみようかと思います。


[次⇒【Swift】MRProgress の利用方法について まとめ](http://qiita.com/tdaiku/items/e999f2cdd77e91fc19a8)
PythonzインストールとかしてVirtualenvを使えるようにする雑なAnsibleモジュールを書いた


[ansible-roles/roles/pythonz at master · shrkw/ansible-roles](https://github.com/shrkw/ansible-roles/tree/master/roles/pythonz)

実行する内容は以下。

* Pythonコンパイルのための依存ライブラリのインストール (Cent OS, Ubuntuに対応)
* `/usr/local/pythonz`にPythonzインストール
* Pythonバイナリのインストール （デフォルトは2.7.9）
* システムデフォルトのPythonにpip, virtualenvのインストール

Virtualenvの環境作成まではやらないので、ログインして任意のオプションで作成。

```
virtualenv -p /usr/local/pythonz/pythons/CPython-2.7.8/bin/python ~/.virtualenvs/CP278
source ~/.virtualenvs/CP278/bin/activate
```

Shortcut Usage
---------------------------

`playbook.yml`ファイルを置いてあるので、それ使えばショートカットしてモジュール実行ができます。
`hosts`という名前でこんな感じにファイルを作って、

```yaml:hosts
[target]
127.0.0.1 ansible_ssh_port=2200 ansible_ssh_user=vagrant ansible_ssh_private_key_file=/Users/shrkw/.vagrant.d/insecure_private_key
```

こんな感じで実行すればOK.

```
ansible-playbook -i hosts playbook.yml
```
引数の数間違えたと思ったらタプルになってた

```scala
scala> def f[A](x: A) = x
f: [A](x: A)A

scala> f(1, 2)
res1: (Int, Int) = (1,2)
```

(　ﾟдﾟ)

(つд⊂)ｺﾞｼｺﾞｼ

(；ﾟдﾟ)
ViewsでPagerを設定すると他のViewがされなくなる時の対処メモ




ブログ的な月別アーカイブと月ごとの記事一覧をページャ付きで出力する

- ViewsでDefaultで用意されているarchiveを利用
- サイドバーにarchive:blockをBlockで配置

この時Pagerで遷移した時にサイドバーにarchive:blockが表示されなくなる
この問題を解決する為にはPager IDを0から1に変更してみる

![change Views Pager ID](https://qiita-image-store.s3.amazonaws.com/0/4319/031de811-fdf1-cc9b-9a31-ec323be13383.jpeg "change Views Pager ID")

以下のリンクとケースは違うけど、やってることは同じ

[Views pager not showing when there is views Header [#1174032] | Drupal.org](https://www.drupal.org/node/1174032#comment-7994177 "Views pager not showing when there is views Header [#1174032] | Drupal.org")
Swift1.2からのtouchesBeganで座標を取り出すには

Swift1.2になり、これまでとは取り出し方が若干変わりました。

```swift
    override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
        
        if let touch = touches.first as? UITouch {
            let location = touch.locationInView(self.view)
            println(location)
        }
```
BabelのLearn ES6を学んでいく（２

https://babeljs.io/docs/learn-es6/#default-rest-spread
[前回](http://qiita.com/kazusa-qooq/items/5299c5a4946e23eb5bea)に引き続きBabelのLearn ES6で新しいJavaScriptを学んでいきます。なにか間違いありましたらご指摘いただけると助かります。

###Default + Rest + Spread
* 引数にデフォルト値を指定できます`function  f(x=0)`
* 可変長引数がサポートされます`function f(x, ...y)`
* 呼び出し時、引数に配列をマッチングできます`function f(x,y,z){}; f(...[1,2,3])`
* 例：http://www.es6fiddle.net/i89ltam3/

###Let + Const
* 新しい宣言文が追加されます
* let : varと異なり同スコープ中で再宣言できません
* const : 定数であり再代入できません

```
//可能
var x=0;
var x=1:

//不可
let x=0;
let x=1:

//不可
const x=0
x=1
```
###Iterators + For..Of
* 自作可能なイテレータが導入されました
* `for(var x of iterable ){}`のように使用します
* イテレーターのインターフェースは以下のようになります。
* オブジェクトIterableは[Symbol.iterator]メソッドをもち、Iteratorを返します
* Iteratorはnextメソッドをもち、IteratorResult を返します。
* IteratorResult はvalueプロパティとdoneプロパティを持ち、値と終了判定フラグを返します。
* 例：http://www.es6fiddle.net/i89mkv62/

```
interface IteratorResult {
  done: boolean;
  value: any;
}
interface Iterator {
  next(): IteratorResult;
}
interface Iterable {
  [Symbol.iterator](): Iterator
}
```
###Generators
* イテレータを簡素化するためにジェネレータが用意されています
* ジェネレータは`function*`と`yield`を使用します
* `function*`で定義されたfunctionはジェネレータを返します
* ジェネレータはnextとthrowをもつイテレータのサブタイプです。
* `function*`内では`yield`を用い、値を返します。
* 例：http://www.es6fiddle.net/i89n7uh9/

###Unicode
* ユニコード文字をサポートします
* RegExpにuオプションがサポートされます
* 例：http://www.es6fiddle.net/i89nyko4/

###Modules
* モジュールがサポートされます
* モジュール側は`export`を、呼び出し側は`import`を使用します
* モジュール側は`export`をclass, function, var などの頭につけることで外部に公開できます
* 呼び出し側は`import * as <name> from <module>`することでmoduleがexportしたメンバをもつnameオブジェクトを使用できます
* 分解代入を使用し`import {<member1>,<member2>} from <module>`のように必要なメンバのみ取得することも可能です
* module側は`export default`を使用することで`as`を使用せず`import <name> from <module>`でデフォルトの関数等を指定できます
* defaultを使用した場合、import * as <name> from <module>`のnameオブジェクトにdefaultは含まれません
* defaultと通常のexportを両用したモジュールの場合、`import <name1>, * as <name2> from <module>`または`import <name>, {<member1>, <member2> as <name2> from <module>のように記述できます
* moduleは`export * from <another_module>`により別モジュールを自身のメンバのように公開することができます

``` lib/math.js
export function sum(x, y) {
  return x + y;
}
export var pi = 3.141593;
```

``` lib/mathplusplus.js
export * from "./math";
export var e = 2.71828182846;
export default function(x) {
    return Math.exp(x);
}
```

``` script.js
import exp,{e,pi} from "./lib/mathplusplus";
console.log(e)
console.log("e^pi = " + exp(pi));
```

``` result.
C:\workspace\babel>babel-node script.js
2.71828182846
e^pi = 23.14070064895278

```

###Module Loaders
* 動的なモジュールローダがサポートされます
* `npm install systemjs traceur`が必要です

```
import System from 'systemjs'

System.import("./lib/math").then(function(m) {
  console.log("2π = " + m.sum(m.pi, m.pi));
});
```

今回はここまで。3分の2くらい終わりました。[次回](http://qiita.com/kazusa-qooq/items/bb720c0b65231e79d830)
Markdown記法のキ(第8回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---

## 第8回 インラインHTMLとエスケープ			
[前回][1]は 画像を入れる書き方についての記事を投稿しましたが、今回はインラインHTMLとエスケープの Markdown記法について書いていきます。

**インラインHTML**
Markdown 記法は万能ではないので、Markdown 記法の中では HTML を書くことが許されています。
何か対応できないものがあったら HTML をそのまま書いてしまえばよいらしいです。

	<http://google.com>

	<a href="http://google.com" target="_blank">Google</a>
例えば、target属性

ブラウザで要素を確認
<pre><code>
\<p>\<a href="http://google.com">http://google.com\</a>\</p>
\<p>\<a href="http://google.com" target="_blank">Google\</a>\</p>
</code></pre>

**特殊文字のエスケープ**

	# Title

	\# Title
例えば、見出しは \# Title のように書きますが、この \# を h1 タグではなくて、
ただの \# として表示したい場合には、\\（バックスラッシュ）をつけます。

ブラウザで要素を確認
<pre><code>
\<h1>Title\</h1>

\<p># Title\</p>
</code></pre>
これは今まで出てきた全ての記号に対して使える。

---
### あとがき

全8回にわたり Markdown記法の基本のキを投稿させて頂きました。
Qitta には初めての投稿でしたので、Markdown記法とはなんとやらということで引っかかってしまいました。
そのため、Markdown記法の投稿をさせて頂きました。
全8回にわたった内容をもとに私自身も投稿をしましたので、Qitta 投稿するにあたり、Markdown記法がわからず躊躇されている方の一助になればと思います。

また、有識者の方からのご指摘もバシバシ頂きたいと思いますので、何かお気づきな点がありましたらご指摘どうぞ宜しくお願い致します。

それでは、ありがとうございました。

[1]: http://qiita.com/brau1589/items/44d44e018c853342a4f0
	"Markdown記法のキ(第7回/全8回)
UbuntuにMySQLをインストールする

Ubuntu 14.04にMySQL 5.6をインストールする方法のメモ

#リポジトリを追加
URLはMySQLのWEBサイトで確認。
```
$ wget http://dev.mysql.com/get/mysql-apt-config_0.3.3-2ubuntu14.04_all.deb
```
さらにカレントディレクトリでdpkgコマンドを実行
```
$ sudo dpkg -i mysql-apt-config_0.3.3-2ubuntu14.04_all.deb
```
以下の画面が表示されるのでServer→mysql-5.6を選択
Applyを選択して確定する。

1.Serverを選択
![1.png](https://qiita-image-store.s3.amazonaws.com/0/72761/3cadce9c-e78e-bb1c-c4db-cd83554e31c6.png)

2.mysql-5.6を選択
![2.png](https://qiita-image-store.s3.amazonaws.com/0/72761/e460ab22-d98c-f26f-cf65-0f8d332ad4c8.png)

3.Applyを選択
![3.png](https://qiita-image-store.s3.amazonaws.com/0/72761/0904d555-9249-296d-de72-0cd8e1fc48ef.png)

#パッケージのリストを最新化
```
$ sudo apt-get update
```
#インストールされるMySQLのバージョンを確認
```
$ sudo apt-cache policy mysql-server
mysql-server:
  インストールされているバージョン: (なし)
  候補:               5.6.24-1ubuntu14.04
```

#MySQLのインストール
```
$ sudo apt-get install mysql-server
```
rootユーザのパスワードを設定する
![4.png](https://qiita-image-store.s3.amazonaws.com/0/72761/1e79452a-91bb-a03e-ff63-8540d26c963a.png)
再度パスワードを入力
![5.png](https://qiita-image-store.s3.amazonaws.com/0/72761/49b8fefe-ae7b-a7bc-6654-d2447083b0a4.png)



#インストールされたMySQLのバージョンを確認
```
$ mysql --version
mysql  Ver 14.14 Distrib 5.6.24, for Linux (x86_64) using  EditLine wrapper
```
Markdown記法のキ(第7回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---

## 第7回 画像を入れてみよう		
[前回][1]は リンクの書き方についての記事を投稿しましたが、今回は画像を入れる(img タグ) Markdown記法について書いていきます。

**画像**
記法
\!\[alt属性](ファイルパス)

	![ケーキ](food.jpg)

別ファイルで保存し、画像を同じ階層に配置してから実行して下さい。
(今回使用した画像↓)
![food.jpg](https://qiita-image-store.s3.amazonaws.com/0/75023/60c6f682-5803-24f8-62ca-79f0addec939.jpeg)


ブラウザで要素を確認
<pre><code>
\<img src="///C:/food.jpg" alt="ケーキ" style="max-width:100%;">
</code></pre>

**外部参照でも書ける**

	![ケーキ][1]

	[1]: food.jpg

**リンク付き画像**

	[![ケーキ](food.jpg)](http://google.com)

画像自体がリンクの中の要素なので、[]で囲む
\[画像要素](http://google.com "T")

ブラウザで要素を確認
<pre><code>
\<a href="http://google.com"><\img src="///C:/food.jpg" alt="ケーキ" style="max-width:100%;">\</a>
</code></pre>

[次回][2]へ続く

[1]: http://qiita.com/brau1589/items/3375e65b48ae477c975f
	"Markdown記法のキ(第6回/全8回)

[2]: http://qiita.com/brau1589/items/c647a40a28a92603e0d6
	"Markdown記法のキ(第8回/全8回)
Markdown記法のキ(第6回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---

## 第6回 リンクを書いてみよう	
[前回][1]は リストの書き方についての記事を投稿しましたが、今回はリンクの Markdown記法について書いていきます。

今回は下記の3種類のリンク記法について説明していきます。

- 自動リンク
- インラインリンク
- 外部参照リンク

**自動リンク**
google.com をリンクしたくて、リンクテキストも http://google.com でいいという場合

	<http://google.com>

	<taguchi@gmail.com>
メールアドレスにも対応

ブラウザで要素を確認
<pre><code>
\<p>\<a href="http://google.com">http://google.com\</a>\</p>
\<p>\<a href="mailto:taguchi@gmail.com">taguchi@gmail.com\</a>\</p>
</code></pre>

**インラインリンク**
リンクテキストを指定する場合

	[Google](http://google.com "Title")

ブラウザで要素を確認
<pre><code>
\<p>\<a href="http://google.com" title="Title">Google\</a>\</p>
</code></pre>
Title属性も指定可能。マウスオーバーした際に表示される文字のこと

**外部参照リンク**
インラインリンクがたくさん文中に出てくると見にくくなるので、\[Google\]\[1\] のようにリンクテキストの後にID をつけてあげることで文章が見やくなります。（ID にはよく番号が使われます）。 

	[Google][1]　　　
	[yahoo][2]

	[1]: http://google.com 
	    "google"

	[2]:http://yahoo.co.jp
		"yahoo"

タイトル属性を指定したい場合は、URL の後ろに書いてもよいですし、インデントをつけてもよいです。 

ブラウザで要素を確認
<pre><code>
\<p>
\<a href="http://google.com" title="google">Google\</a>　　　
\<br>
<a href="http://yahoo.co.jp" title="yahoo">yahoo\</a>
\</p>
</code></pre>

[次回][2]へ続く

[1]: http://qiita.com/brau1589/items/02f9d04e2e677a35ea8d
	"Markdown記法のキ(第5回/全8回)

[2]: http://qiita.com/brau1589/items/44d44e018c853342a4f0
	"Markdown記法のキ(第7回/全8回)
Markdown記法のキ(第5回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---

## 第5回 リストを書いてみよう
[前回][1]は 強調､引用､コードの書き方についての記事を投稿しましたが、今回はリストの Markdown記法について書いていきます。

**箇条書き\<ul>**
記法
-, *, +

	* item 1
	* item 2
	* item 3
「-, *, +」のいずれかを使用する。

ブラウザで要素を確認
<pre><code>
\<ul>
\<li>item 1\</li>
\<li>item 2\</li>
\<li>item 3\</li>
\</ul>
</code></pre>


**番号付きリスト\<ol>**
記法
<番号>.スペース

	1. item 1
	2. item 2
	3. item 3

ブラウザで要素を確認
<pre><code>
\<ol>
\<li>item 1\</li>
\<li>item 2\</li>
\<li>item 3\</li>
\</ol>
</code></pre>

別記法

	1. item 1
	1. item 2
	1. item 3
	1. item 4
数字であれば何でもよいので、全て 1 でも大丈夫ですし、順番がめちゃくちゃでも大丈夫です。

ブラウザで要素を確認
<pre><code>
\<ol>
\<li>item 1\</li>
\<li>item 2\</li>
\<li>item 3\</li>
\<li>item 4\</li>
\</ol>
</code></pre>

何番になるかわからないときは、こういった書き方でもよい。

[次回][2]へ続く

[1]: http://qiita.com/brau1589/items/992105e3a896d98bca5a
	"Markdown記法のキ(第4回/全8回)

[2]: http://qiita.com/brau1589/items/3375e65b48ae477c975f
	"Markdown記法のキ(第6回/全8回)
Markdown記法のキ(第4回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---

## 第4回 強調､引用､コードを書こう
[前回][1]は 段落､改行､水平線の書き方についての記事を投稿しましたが、今回は強調､引用､コードの Markdown記法について書いていきます。

**強調表示 \<em> \<strong>**

\_強調\_､\*強調\*     em
\_\_強調\_\_､\*\*強調\*\* strong

	*強調！*
	**強調!!**

	_強調！_
	__強調!!__

ブラウザで要素を確認
<pre><code>
\<p>
\<em>強調！\</em>\<br>
\<strong>強調!!\</strong>
\</p>
\<br>
\<p>
\<em>強調！\</em><br>
\<strong>強調!!\</strong>
\</p>
</code></pre>


**引用\<blockquote>**

	> stay foolish!
	> > stay foolish!!
「> 」で引用
「> > 」で入れ子も可能

入れ子にした場合の見え方
> stay foolish!
> > stay foolish!!

ブラウザで要素を確認
<pre><code>
\<blockquote>
\<p>stay foolish!\</p>

\<blockquote>
\<p>stay foolish!!\</p>
\</blockquote>
\</blockquote>
</code></pre>


**コードブロック\<code>**

	`var x = 1;`
コードブロックを表現するには、\`（バッククオート）で囲む

ブラウザで要素を確認
<pre><code>
\<p>\<code>var x = 1;\</code>\</p>
</code></pre>

複数行のコードをコードブロック

	here's the code.

	    var x = 1;
	    var y = 2;
タブか 4 つ以上のスペースでインデント

ブラウザで要素を確認
<pre><code>
\<p>here's the code.\</p>
\<pre>\<code>var x = 1;
var y = 2;
\</code>\</pre>
</code></pre>

[次回][2]へ続く

[1]: http://qiita.com/brau1589/items/986da190a484da07ad12
	"Markdown記法のキ(第3回/全8回)

[2]: http://qiita.com/brau1589/items/02f9d04e2e677a35ea8d
	"Markdown記法のキ(第5回/全8回)
Markdown記法のキ(第3回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---

## 第3回 段落､改行､水平線を書こう	
[前回][1]は 見出しの書き方についての記事を投稿しましたが、今回は段落､改行､水平線の Markdown記法について書いていきます。

##p､br､hrにあたるMarkdown記法
**\<p>パラグラフ \<br>改行（行末で空白2つ以上）**


	こんにちは。

	こんにちは。

	こんにちは。
空行を入れると改行される。


	こんにちは。
	こんにちは。
	こんにちは。
空行を入れないと１つのパラグラフとして処理される。

ブラウザで要素を確認
<pre><code>
\<p>こんにちは。
こんにちは。
こんにちは。\</p>
</pre></code>

	こんにちは。  
	こんにちは。   
	こんにちは。
行末に空白を2つ以上いれると改行される。

ブラウザで要素を確認
<pre><code>
\<p>こんにちは。\<br>
こんにちは。\<br>
こんにちは。\</p> 
</code></pre>

**\<hr>水平線（---, ***, ___）**
水平線の書き方

+ \-
+ \***
+ \___

ブラウザで要素を確認
<pre><code>
\<hr>...\<hr>
\<hr>...\<hr>
\<hr>...\<hr>
</code></pre>
3 つ以上つなげるか、1 行の中に 3つあればよいので以下のような書き方も可能

+ - - - 

[次回][2]へ続く

[1]: http://qiita.com/brau1589/items/caa80ff4388f7da4cb80
	"Markdown記法のキ(第2回/全8回)

[2]: http://qiita.com/brau1589/items/992105e3a896d98bca5a
	"Markdown記法のキ(第4回/全8回)
Markdown記法のキ(第2回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---

## 第2回 見出しを書いてみよう
[前回][1]は Markdown記法の概要と preview をするために使用する Sublime text の記事を投稿しましたが、今回は見出しである h1 から h6 の Markdown記法について書いていきます。

**見出しの書き方**
見出しの記法（#, ##, ###, ####, ...）
h1､h2に使える別記法（===, ---）

**具体的な書き方**
h1 - h6の書き方

	# Title 1
	## Title 2
	### Title 3
	#### Title 4
	##### Title 5
	###### Title 6

**別記法（===, ---）**
h1 と h2 は別の書き方が可能


	Title1
	======

	Title2
	-

[前回][1]で、Sublime text に markdown preview をインストールしている場合は preview したい部分だけを選択して、 Alt \+ M で選択範囲だけの preview が可能です。

	# Title 1
	## Title 2
	### Title 3

また、上記のような Markdown記法をブラウザで表示後、右クリックで要素を検証すると、下記のように \<title>タグになっていることを確認できます。

	<h1 id="title-1">...</h1>
	<h2 id="title-2">...</h2>
	<h3 id="title-3">...</h3>

スタイリングはパッケージがやってくれます。

[次回][2]に続く


[1]: http://qiita.com/brau1589/items/330bf32b45ffbfe16493
	"Markdown記法のキ(第1回/全8回)"

[2]: http://qiita.com/brau1589/items/986da190a484da07ad12
	"Markdown記法のキ(第3回/全8回)"
Markdown記法のキ(第1回/全8回)

#### Qiita に記事を投稿するにあたって必要な Markdown 記法についてドットインストールの授業で学習したので、忘備録として記事を投稿します。
---
## 第1回 Markdown記法とはなにか？
**概要**
- 軽量マークアップ言語
- プレインテキスト → HTMLに変換するためのフォーマット

例
Markdown → HTMLタグ
\# Title → \<h1>Title\</h1>

最近だと GitHub で使われていたり、ウェブアプリケーションフレームワークのテンプレートエンジンとして使われたりしている。もちろん Qitta でも使用されている。


**公式サイト**
<http://daringfireball.net/projects/markdown/>

**前提知識**
- HTML ← 構造化された文章を書くので必要
- Sublime text ← 使用ツール

**準備**
まず、Sublime text から Markdown の文章を preview するためのパッケージ(sublimetext-markdown-preview)をインストールします。

[sublimetext-markdown-previewの公式サイト](https://github.com/revolunet/sublimetext-markdown-preview)


手順
1. Cmd+Shift+p で 「Package Control: Install Package」
2. markdown preview を選択してインストール

次に markdown preview のショートカットの設定  

手順
1. sublimetext-markdown-previewの公式サイトからKey Bindings のショートカットコピー
2. Preferences の Key Bindings - User に登録

公式サイトから Key Bindings のショートカットコピー
> { "keys": ["alt+m"], "command": "markdown_preview_select", "args": {"target": "browser"} }
 
Preferences の Key Bindings - User に登録  

Preferences \> Key Bindings \- User
Key Bindings \- User ファイル Key Bindings のショートカットコピー に張り付ける

例 Key Bindings \- User ファイル

	[
	     { "keys": ["alt+m"], "command": "markdown_preview_select", "args": {"target": "browser"} }
	]


これで、Markdown記法 によって書かれたものをショートカット Alt \+ M を使用してブラウザで preview 可能になりました。

[次回][1]に続く

[1]: http://qiita.com/brau1589/items/caa80ff4388f7da4cb80
    "Markdown記法のキ(第2回/全8回)"
EC2 Linuxでirqbalanceが動作しない part1


##概要
EC2上のLinux(CentOS6.6、kernel: 2.6.32-504)でirqbalanceがうまく動いていないように見えたので調べてみた。
結論から言うと、利用していたirqbalanceのバージョンが古くて下記が適用されていなかったため、EC2環境上では正しく割り込みが分散されていなかった模様。

https://github.com/Irqbalance/irqbalance/commit/736a91b739018530c44e59d9b17252f88227fe51


##おおざっぱな調査ログ
１. /proc/irq/[IRQ]/smp_affinityを適当に変更してみる。

```bash
# echo 2 > /proc/irq/[IRQ]/smp_affinity
```

２. /proc/interruptsを確認する → 変更されている。SMP IRQ affinityは設定可能。

```bash
# less /proc/interrupts
```

３. irqbalanceを起動して負荷をかけてみる → １.の設定から変更されず

```bash
# service irqbalance start
```

４. irqbalance最新版をソースからビルドしてインストール → 変更された！！

##まとめ
EC2 Linux上でPVドライバを使っている場合は、下記適用済irqbalanceを使わないとEC2基盤側やゲストOSに問題がなくてもirqbalance自体は動作してくれない。

https://github.com/Irqbalance/irqbalance/commit/736a91b739018530c44e59d9b17252f88227fe51

今回は古めのirqbalanceが問題であった。環境が変わればirqbalance、SMP IRQ affinity周りについては他の問題にぶつかるのだがそれはpart2以降で。。
vagrant ssh で RLogin を起動する

下記の記事の [RLogin](http://nanno.dip.jp/softlib/man/rlogin/ "rlogin/telnet/ssh(クライアント)ターミナルソフト") バージョン。

- [vagrant ssh で TeraTerm を起動する - Qiita](http://qiita.com/kumazo@github/items/026ebbc646505681e61f "vagrant ssh で TeraTerm を起動する - Qiita")

## .vagrant.d/Vagrantfile

- msysgit でパスの通ったとろこに既に ssh があるので先頭に追加

```
ENV['PATH'] = File.expand_path(File.dirname(__FILE__)) + ";" + ENV['PATH']
```

## .vagrant.d/ssh.bat

- なぜか `vagrant ssh` で、１回目は引数なしで呼ばれた後に、２回目に引数つきで呼ばれるような動作をした
    - 引数の有無を確認して空なら何もしないようにする
- 公開鍵認証でも適当なパスワードを指定しておかないと RLogin のダイアログが表示される
    - 適当なパスワード(`dummy`)を指定する
- あらかじめ **vagrant** という名前で RLogin のエントリを作成しておかなければならない
    - 秘密鍵はそこで指定しておく


```bat
@rem %*
@echo off
setlocal

set RLOGIN_BIN=D:\app\RLogin\RLogin
set RLOGIN_ENTRY=vagrant

if "%*"=="" goto end

set p1=%1
set user=%p1:@= & set host=%
:loop
  if "%~1"=="-p" set port=%2
  if "%~1"=="-i" set keyfile=%2
  shift
if not "%~1"=="" goto loop

start "" %RLOGIN_BIN% /entry %RLOGIN_ENTRY% /ip %host% /port %port% /user %user% /pass dummy /inuse

:end
```
QEMUを使って最新のLinuxカーネル(v4.0-rc7)を起動する

#目的
今回はQEMUを用いて最新のLinuxカーネルを起動する際に必要となったことをまとめておこうと思います。
結構日本語の記事がなく、情報が分散しているな〜という印象だったので、まとめておこうと思いました。


# ゴール
- x86用にビルドしたLinuxカーネルをQEMUを用いて起動
- ファイルシステムは[buildroot](http://buildroot.uclibc.org/)を使ってお手軽につくる



# 動作確認環境
[ArchLinux](https://www.archlinux.org/)環境下での動作を確認しました。

# 大まかな手順
1. 必要なツール一式を準備
2. カーネルのビルド
3. ファイルシステムの作成
4. 作成したカーネルイメージとファイルシステムを使ってQEMUで起動

って流れです！

#必要なツール準備
必要なツールとして、Git, Buildroot, QEMUくらいを準備しましょう。（それに依存するのはパッケージ管理がごちゃごちゃやってくれるでしょう…）
## Git
まぁこれは普通にパッケージ管理で入れちゃいましょう！僕のArch環境下だと`sudo pacman -S git`で入りますがそれ以外の環境だと、
mac だったら`brew install git`とか、deb系だと`sudo apt-get install git`とかで入れちゃいましょう！(多分あると思います）

## Buildroot
Buildrootは組み込みLinux環境をお手軽に作ってくれるツール。
これでとりあえずQEMUでいろいろ起動できる環境は作れちゃいます。
とりあえずさっき入れたGitを使ってサクッと入れちゃいましょう！

まず[ここ](http://buildroot.uclibc.org/download.html)に書いてあるように、適当な場所で`git clone git://git.buildroot.git/buildroot`しちゃえば多分問題なく入ります。

## QEMU
これは多分ほぼすべてのディストリのリポジトリにあるんじゃないでしょうか…。
Archだと`sudo pacman -S qemu`で入ります。
他の環境だと`apt-cache search` したり、`brew search`しちゃえば見つかると思います。

#最新版カーネルのビルド
まず最新版のカーネルのソースを落としてきましょう。
今回はGithubにあるLinus氏のを使って見ようと思います。
適当な場所で`git clone https://github.com/torvalds/linux.git`で引っ張って来ちゃいましょう。
そしていよいよQEMU向けにビルドしていくわけですが、動かすのが目的なので最小構成の設定で…！と思い`make allnoconfig`で設定ファイルの生成を試したのですが、その設定でビルドしたカーネルはちゃんと起動せず…。何が足りないのでしょうか…。

とりあえずは`make defconfig`の設定でうまく行きました。設定ファイルが作られた後、`make`すればつらつら〜っとビルドが始まるので気長に待ちましょう。
`linux/arch/x86_64/boot/bzImage`ってのが目的のカーネルイメージです！

# ファイルシステムの作成
次にファイルシステムを作成していきましょう！
cpioコマンドなんかで作っていってもいいんですがいかんせんめんどくさい…なのでbuildrootでサクサクっと作ったものを借りちゃいましょう。

buildrootのディレクトリにまずcdしてください。
ここで設定ファイルを作りたいのですが、いかんせん量が多い…どうしたらって感じですが実はQEMU用の設定があるのでそれを使っちゃいましょう。
`make qemu_x86_64_defconfig`をして、`make`

これで、buildrootフォルダの中のoutputの中にお目当てのものができているはずです。
`buildroot/output/images/rootfs.ext2`がお目当てのイメージです。

ちなみに一緒に`buildroot/output/images/bzImage`というものがありますが、これはbuildroot側で作られたLinuxカーネルイメージです。
試しにこれらを使って起動してみましょう。
buildrootフォルダで
`qemu-system-x86_64 -M pc -kernel output/images/bzImage -drive file=output/images/rootfs.ext2,if=ide -append "root=/dev/sda console=ttyS0" -nographic -curses`
を実行すれば下のような感じでターミナル内でカーネルがブートするはずです…！!(今回はcursesを自分の好みで使っちゃってます)
![qemu_linux.jpg](https://qiita-image-store.s3.amazonaws.com/0/12935/cfb5a5b9-271c-1899-9eab-aa7ae0951dde.jpeg)


ちなみにbuildrootでビルドされたカーネルは`uname -r`で見てみると3.19.0でした。

# QEMU最新カーネルで起動

ではいよいよ最新カーネルを試してみましょう。（といってもさっきの指定するカーネルをビルドしたカーネルにするだけなんですけど。）

`qemu-system-x86_64 -M pc -kernel ~/hoge/linux/arch/x86_64/boot/bzImage -drive file=~/hoge/buildroot/output/images/rootfs.ext2,if=ide -append "root=/dev/sda console=ttyS0" -nographic -curses`(hogeは実際のパスに変換しちゃってください）

これでしたの図のような感じで起動するはず…！ログインなんかはID:root PW:なし　でログインできるようになってます。

最新版カーネルで動いていることも確認できました！![qemu_linux2.jpg](https://qiita-image-store.s3.amazonaws.com/0/12935/3c7919bd-1385-4609-0314-6e484e38cc65.jpeg)
Meteor で Sass/SCSS を使用する


Meteor で Sass/SCSS を使用したくなることがありますよね。ありませんか。Stylus 使いますかそうですか。

# Sass/SCSS パッケージの追加

Meteor パッケージリストで sass を検索すると、いくつかパッケージが見つかりますが、今回は一番スターが付いている [fourseven:scss](https://atmospherejs.com/fourseven/scss) パッケージを Meteor プロジェクトに追加します。

```bash:bash$
meteor add fourseven:scss
```

あとは CSS を Sass/SCSS に書き換え、拡張子に `.sass` / `.scss` をつけるだけです。簡単ですね。

# コンフィグレーション(オプション)

Meteor プロジェクトのルートに `scss.json` というファイルを用意すると設定をカスタマイズすることができます。なお `scss.json` を編集後は meteor サーバーの再起動が必要となります。

## インクルードパスの追加(includePaths)

CSS の探索パスを追加します。

```json:METEOR_PROJECT_ROOT/scss.json
{
  "includePaths": [
    ".meteor/local/bower",
    ".meteor/local/bower/node-bourbon/assets/stylesheets",
    ".meteor/local/bower/neat/app/assets/stylesheets"
  ]
}
```

## Source Map の無効化

デフォルトでは Source Map を出力する設定になっています。
これを無効にしたい時は、以下のオプションを `scss.json` に追加します。

```json:METEOR_PROJECT_ROOT/scss.json
{
  "sourceMap": false
}
```

## Autoprefixer の有効化

CSS のベンダープレフィックスを自動でつけてくれる[Autoprefixer](https://github.com/postcss/autoprefixer) が標準でついているみたいです。
以下の設定を `scss.json` 追加することで Autoprefixer を有効化することができます。

```json:METEOR_PROJECT_ROOT/scss.json
{
  "enableAutoprefixer": true,
  "autoprefixerOptions": {
      "browsers": ["> 1%"],
      "cascade": false
  }
}
```


# 参考

* https://atmospherejs.com/fourseven/scss
ServiceWorcker試したいときはこうするというメモ

Chrome V41以上

``` /index.html
<script type="text/javascript">
if ('serviceWorker' in navigator) {
    navigator.serviceWorker.register('/sw.js', {scope: '/'}).then(function(registration) {
        // 登録成功
        console.log('ServiceWorker registration successful with scope: ', registration.scope);
    }).catch(function(err) {
        // 登録失敗 :(
        console.log('ServiceWorker registration failed: ', err);
    });
}
</script>
```

``` /sw.js
self.addEventListener('fetch', function(event) {
	event.respondWith(
		caches.match(event.request).then(function(response) {
			// キャッシュがあったのでそのレスポンスを返す
			if (response) {
			  return response;
			}

			return fetch(event.request);
		})
	);
});
```
MacbookにiPhone USB接続でネットワーク共有したらwifiブリッジしてくれた

- iPhoneはなにかしらのwifiに接続している
- iPhoneとMacbookをUSBで繋いでネットワーク共有する

前ならここでiPhoneがwifiからキャリア接続に切り替わってたのが、

Macbook -- USB接続 -- iPhone -- なにかしらwifi

出来るようになっていた。
8.3で気がついたけど、前から？

追記

出来なくなったみたい。。
写真ライブラリへのアクセス


下記のようなソースだけで写真一覧が表示される。
ただしUINavigationControllerの影響下にあること。
普段あまりUINavigationController使わないので
はまりました。

![スクリーンショット 2015-04-09 23.48.46.png](https://qiita-image-store.s3.amazonaws.com/0/58032/d826bee9-e04d-9ebf-abd0-964a8a379b8a.png)

```Objective-C
- (void)viewDidLoad {
 [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    UIImagePickerController* imagePickerController = [[UIImagePickerController  alloc] init];
    imagePickerController.delegate = self;
    imagePickerController.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
    [self presentViewController:imagePickerController animated:YES completion:NULL];
}
```

一覧表示された写真を選択すると下記デリゲートメソッドが呼ばれる。
NSLogでアセットライブラリのパスが表示される。

```Objective-C
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    NSLog(@"%@",info);
}
```
ATOM 全角 スペース highlight

## ATOM 全角 スペース highlight Tips

と言っても、既に全角スペース表示プラグインが作られていました。
ソレを利用するだけです。

- [show-ideographic-space](https://github.com/raccy/show-ideographic-space)  
  全角スペースを□で表示してくれるプラグイン

これを使って全角スペースを□に可視化します。
しかし、もっとくどい位に highlight したい！そう思っていた頃もありました。

ということでその頃の思いを胸に全角スペースの背景色もカスタマイズしてしまいましょう。

Atom起動 > File > Open Your Stylesheet

``` style.less
atom-text-editor::shadow {
   .ideographic-space {
     background-color: @background-color-warning;
   }
}
```
ui-variables.less の中のColorで指定してみました。
- [ui-variables.less](https://github.com/atom/atom/blob/master/static/variables/ui-variables.less)

http://apatch-k.hatenablog.com/entry/2015/04/09/233829
はてブに書いたけど、Qiitaにも転載される気がしたので先に転載してみた。

2015-11-30 typo 修正
レシピオントロジー | 料理レシピの概念をとらえたい

:fire: まだ書き途中です

みなさん、こんにちは。この投稿自体メモなんですが、誰かが読むかもしれないので挨拶してみました。こんにちは。 :smile: 料理レシピのことを少し書いて行きます。おいしいレシピを投稿するでもなく、料理のコツを解説するわけでもありません。あと、あっち方面のレシピでもありません。前置きが長くなりましたが、まだ続きます。暇なので何か書きたいのです :sweat_drops: ごめんなさい。

例えば一人暮らしだと外食が多くなるとか、そもそも料理道具が無いとか、キッチンが狭すぎて云々とかいろいろな理由があるかと思いますが、料理をする機会自体がそんなに無いような、そんな感じだと思います :cookie: 

# :facepunch: おいしいものを食べたい欲求

qiita.com に投稿するのでIT系の技術周りの話には寄せていきますが、最初はITには直接関係の無い話が続きます。

今日、cookpadでは↓の料理がトップページに載っていました。トップページに掲載されるロジックはわかりませんが、人気のある料理なのだと思います。

:bento: お弁当にも◎かにかまじゃがいもボール☆
http://cookpad.com/recipe/2310733

人気のある理由には「おいしい」「簡単に料理できる」「普通の食材でできる（リーズナブル）」と、いくつかの要因があると思いますが、「おいしい」ことは外せないかと思います。せっかく食べるのならおいしいものを食べたいと思うわけです。

# :angry: 「なんでもいいよ」に対するこたえ

:woman: 「今日何が食べたい？」
:man: 「なんでもいいよ」
:woman: 「なんでもいいって何よ！もうあなたなんて嫌い :broken_heart: 」

一昔前の話でありそうな、こんな会話ですが、「なんでもいいよ」と答えている側は本当に何でも良いのだと思いますが、それが「関心が無い」ようにも取れるのですれ違いが生じたりするようです。※これはあくまでも「たとえば」ですから、フェミニストの皆さんは過剰反応しないでくださいね。

:man: 「今日何が食べたい？」
:woman: 「なんでもいいよ」
:man: 「なんでもいいって何よ！もうあなたなんて嫌い :broken_heart: 」

こういう感じです。なんでもいいのなら、勝手に決めてしまえばいいと思うのですよ。第三者が勝手に今日食べるものを決めたとしても問題は無いように思えます。給食（学校、病院、老人ホーム、等）制度なんてそうですからね。

実は「なんでもいいよ」と言いつつも、この言外には

* 嫌いなもの
* アレルギーのあるもの

は当然除外されると考えているので、個別化されなければなりません。

:woman: 「今日何が食べたい？」
:man: 「なんでもいいよ」
:woman: 「それなら、あなたの嫌いな納豆と、アレルギーのあるカニにするわね」
:man: 「ふざけんな！ぼけぇ  :broken_heart: 」
:woman: 「もう、離婚よ :scissors: 」

これでは大変です。平和的な市民生活がおくれる見通しが立ちません。

# :cake: おいしいもののエッセンス

レシピの情報はいろいろなサイトで見ることができます。その文字情報や画像情報から、何らかの方法を使って「おいしい」のエッセンスのようなものを抜き出すことができるかもしれません。たとえば、レシピの日本語を形態要素解析をかけごにょごにょしたり、料理の画像をごにょごにょしたり。

ただ、単純な方法ではうまくいかないような気もします。たとえば人気料理の上位を分析したところ

* じゃがいも
* さしみ
* べんとう

が分かったとしても、「じゃがいものさしみを弁当に入れる」ことは離婚間近の愛妻弁当ならありそうですが、無いでしょう。もしあなたの弁当にじゃがいものさしみが入っていたら帰りに役所で離婚届をもらって帰るのが妥当かもしれません。

# :eyes: そろそろ本題

投稿のタイトルに**「オントロジー」**が入ってますので、オントロジーをつくる方向で進めますが、なんでオントロジーなの？ということを簡単に解説します。アプローチとして間違っているかもしれません。そもそも専門家では無いのです。素人ですから。

## なにがしたかったのか？という目的

### :question: レシピ中の手順を置き換えられないか？

最初に考えたのはこれです。鍋は無いけど電子レンジがあるとか、まな板・包丁無いけどブレンダ―（ミキサー）はあるときに、じゃぁ何かおいしいもの作ろうとすると、料理やったこと無いと肝がわからず既存のレシピをアレンジして手持ちの道具をうまく活かすことができないのです。

たとえば、最近の電子レンジは揚げ物できる機種もあるらしいのですが、それを取り入れた料理ってのがうまくいくかどうがわからない。

### :+1: それなら機械的にやってしまおう

仮にレシピを解釈して、それが鍋じゃなくてレンジでもOKってのがわかれば、そこを置き換える。手持ちの機材でできるじゃん！ということをやりたい。

### :fearful: 単純な構文解析ではうまくいかなそう

**「じゃがいものさしみ」** は、間違いと認識できるぐらいにはなりたい。

### :meat_on_bone: 料理の概念が必要じゃね？

料理の概念自体を機械学習できるのかもしれませんが、ハードルが高すぎるような感じがしています。そこで、コンピューターが扱いやすい料理の概念を用意し、それを使っていい具合の結果を得られないか？と考えました。うまくいくかどうかは知りません。これからやってみます。

コンピューターが扱う「概念」はつまりなんだ？と調べたところ、「オントロジー」というキーワードにたどり着いて、どうやらそれっぽいのでオントロジーの切り口から攻めてみようとなりました。


次回へ続く
Spray-routingでpathPrefixを使ってみた

# Spray-routingのpathPrefixを使う
Scalaでroutesを設定できるSpray-routingのpathPrefixを使ってみました。
設定したいroutesが下記の通りだとすると
GET /users
GET /users/:user_id
GET /users/:user_id/foo

pathのみを使って書くと

```
path("users") {
  get {
    //処理
  }
} ~
path("users" / ".+".r) { user_id =>
  get {
    //処理
  }
} ~
path("user" / ".+".r / "foo") { user_id =>
  get {
    //処理
  }
}
```
と書け、pathPrefixを使うと

```
pathPrefix("users") {
  pathEnd {
    get {
      //処理
    }
  } ~
  pathPrefix(".+".r) { user_id =>
    pathEnd {
      get {
        //処理
      }
    } ~
    path("foo") {
      get {
        //処理
      }
    }
  }
}
```

と書けました。個人的には下で書くほうが良いのかな？と思いましたがどうなんでしょう詳しい人教えてください。
【中級】MVVMの考え方

MVVMとは、アプリケーション・ソフトウェアを実装するためのデザインパターンの1つ。

初めに、以下の文章は 適当に調査・熟考して、こんな感じだと思われるというのを前提に、記載している為、正しい理解と異なる点もあると思われる。

## MVVMの基本
MVVMの各モデルのイメージは、以下の様な感じとかんがえる。

M(Model) : ビジネスロジックの塊 = プログラムのメイン
V(View) :　画面(UI)
VM(VewModel) :　ModelとViewの橋渡し

## Viewの考え方
MVVMのViewを抑えるポイントは以下の３つ
・Viewの中は、UIに関係したロジックのみ。
・Behavior,trigger,actionによって、アプリケーションをリッチに動かす。
・ViewModelとのやり取りは、データバインディングが実現する。

#### Behaviorって何
ViewModelとやり取りをしない関数だと思う。画面上でアニメーションっちっくに動くUIとかを指す。

#### Trigger, Actionはセット
Triggerによって、特定のアクションが実行される。そして、アクションの結果をコールバックによりViewModelのインスタンス内のプロパティを変更する。

簡単なフローチャート
Trigger → Action → 何かすごいこと → Callback → ViewModelインスタンスの値が変化

#### データバインディングが実現すること
ViewModelの各プロパティの値を参照することが出来る。AngureJSとかわかりやすい。

## ViewModeの考え方
よく分かりません！
・各要素ごとにViewModelを存在させても良い。
・コマンドによってViewを操作する。(TriggerとAction?)
・Modelのステートと変更の有無の取得
・Modelのメソッドを実行

要するに、View上で作ったインスタンスをいい感じに使って、Viewを操作しましょうって漢字だと思います。
操作するタイミングはModelのステートで決まり、View上でのTriggerとActionの結果発生するコールバックでModelのメソッドを呼んで実行するということだと思います。

## Modelの考え方
・ドメインモデルで作る(トランザクションモデルは避ける)
・変更通知機能を保持する
・Modelの設計が一番大切

ざっくりとだが、MVVMの基本的な考えをまとめてみた。
IntelliJでserialVersionUIDを生成する方法

#設定
Preferences -> Project Settings -> Inspections
Serialization issues -> Serializable class without 'serialVersionUID'にチェックを入れる

#生成
implements Serializableのあるクラスのクラス名にカーソルを合わせて
Option + Enter -> add 'Serializable field'を選択

```java
private static final long serialVersionUID = 103055555555559529893L;
```

って感じのコードが自動挿入されます。
[Vim as IDE 第0回] VimをIDEとして使うために

## はじめに
学生時代、初めてコードを書き始めてからこれまでずっとvimを利用して来て、いろいろな知見も溜まって来ました。その中で、様々な機能やプラグインを利用することにより、カスタマイズしたvimは完全ではなくともある程度はIDEに近い機能を搭載することができるんじゃないかと感じています。


そこで、この知見を自分のためにも一度まとめておこうと思い、vimについて不定期にまとめを書いてみることにしました。もう知ってるよって話も多いかもしれませんが、さらにこんな便利なものがある、とかこういうやり方の方がスマートだ、という話があれば指摘頂ければ嬉しいです。

また、最近ではAtomやRubyMine、PhpStormなどのIDEが主流になりつつあるし、それらが非常に便利だということも理解してるのですが、それでもあえてvimを使いたいという奇特な若者のために、有益な情報を提供できれば幸いです。


## IDEとは何か？
まず、IDEとは何でしょう。IT用語辞典にわかりやすい説明があったので、見てみましょう。

>プログラムのソースコードを記述するためのテキストエディタを中心に、ライブラリや開発中のクラスなどの仕様や内部構造を表示する機能、ソースコードから実行可能ファイルを構築(ビルド)するための機能や、コードとともにデータやドキュメントなどを一括して管理するプロジェクト管理機能、ファイルの新旧の版管理や複数人による編集を管理するバージョン管理機能、ステップ実行やインスペクションなどテストやデバッグを支援する機能などを持っていることが多い。プラグインなどの拡張機構を用いて、後から対応言語や機能を増やすことができるものもある。

>エディタは一般的なテキストエディタとして機能に加え、入力途中の文字列から予約語や関数名、プロパティ名、メソッド名などの候補を推測して自動的に提示してくれるコード補完機能や、予約後や区切り文字などを認識して色分けして見やすくする機能、コンパイルエラーなどが発生した場所をエラーメッセージ等とともに強調表示する機能など、コード記述に特化した便利な機能が盛り込まれていることが多い。

>IT用語辞典 e-Warodsより 
http://e-words.jp/w/IDE-2.html

rubyやPHPの場合、そもそもビルドやコンパイルは必要ないのでスキップするとして、それ意外についてはvimで実現可能なものが多いです。つまり、vimはIDEであるということがわかります(強引)。

LL言語以外はvimで書かないのかってツッコミもあるとは思いますが、経験上例えばObjective-cとかはさすがにXcodeで書いた方が良いと思います。ひとまずこの連載では、LL言語、特にrubyを書くときにvimをIDE(っぽいもの）として利用する、というケースを想定して記事を書いていこうと思ってます。

## 今後記述予定の内容
この連載では、vimで下記の様な機能を利用できるようにし、vimをIDE（っぽいもの）として使うための方法を順に記述して行きます。

* [[第1回] NeoBundleを利用してvimプラグインを一元管理する](http://qiita.com/kazu0620/items/819679ef006d973c6c22)
* [第2回] Unite.vimを利用した強力なファイル管理/操作機構を導入する
* [第3回] ctagsとunite-tagを利用してメソッド / クラスの定義元へのジャンプ機能を導入する
* [第4回] neocomplcacheを利用した強力なコード補完機能を導入する
* [第5回] neosnippetを利用してIDEと遜色ないスニペット機能を導入する
* [第6回] gitvを利用してvimからgitを快適にブラウジングする
* [第7回] vimprocを利用してカーソル位置部分のテスト(Spec)のみをvimから走らせる

次回は、まずはNeoBundleのお話です。すでに使ってるよって方も多いと思いますが、まずこれを導入している前提でないと他のプラグインの導入方法の説明が面倒なのと、NeoBundleとプラグインたちを上手く管理するための.vimrcの知見も書いてみようと思います。
フォームからdatetime_selectで送られてきた日付をDateTimeオブジェクトに変換する方法

とっても面倒だったのでメモ

日時選択ボックス的なのをサクッと作ってくれるdatetime_selectですが、ちょっと癖がある
普通はありえないけど、例でUserモデルのcreated_atを更新するサンプルコードです。

```haml
= form_tag("/user/#{@user.id}", :method => :post) do
  = datetime_select(:created_at, :date, :default => @user.created_at)
```

POSTするとparams[:created_at]の中にいろいろはいってる

```rb
@user = User.find(params[:id])
@user.created_at = Time.zone.local(params[:created_at]["date(1i)"].to_i, params[:created_at]["date(2i)"].to_i, params[:created_at]["date(3i)"].to_i, params[:created_at]["date(4i)"].to_i, params[:created_at]["date(5i)"].to_i)
@user.save
```

DateTimeだとタイムゾーンを解釈してくれないので、Time.zone.localを使用して変換。
【WatchKit】How to make an animated background Interface in Apple WatchKit（Watchkitで背景画像をアニメーションさせる方法）

##デモ
![jacksonnn-compressor.gif](https://qiita-image-store.s3.amazonaws.com/0/8972/3eb40ccb-bd82-1f1c-700e-b83797337bbb.gif)


##実現方法
Watchkitで背景画像をアニメーションさせる方法
まずWatchKitではSubview的にinterfaceを重ねられません。
どうするかというと、WKInterfaceGroupを利用します。

WKInterfaceGroupのsetBackgroundImageメソッドにて画像を割り当てて、
その画像でUIImage型の配列を指定（animatedImageWithImages）にてアニメーションが可能となります。

##ソース

```swift


https://gist.github.com/0ba3d3f4b0b0b2e2bd08.js

File: InterfaceController.swift
-------------------------

     @IBOutlet weak var bg: WKInterfaceGroup!

    override func awakeWithContext(context: AnyObject?) {
        var images: [UIImage] = []
        
        for (var i=1; i<71; i++){
            images.append(UIImage(named:String(format:"jackson%d.jpg", i))!)
        }

        let animatedImage = UIImage.animatedImageWithImages(
            images,
            duration: 5)
        
        self.bg.setBackgroundImage(animatedImage)
        self.bg.startAnimatingWithImagesInRange(
                    NSRange(location: 0, length: 70),
                    duration: 5,
                    repeatCount: 0)
    }

```

use with <a href="http://manchan.github.io/gist-tool/">Gist Search</a>