OmniAICreator/Qiita-1.07M huggingface dataset:
ElectronアプリのWindowsインストーラを作成する

ElectronでWindowsのインストーラを作るのがちょっとわかりづらいので、メモ

## 前提
- Electronの開発、実行環境がある
- gulpが使える

## 手順

### まずはnpmで必要なパッケージを用意します。

```
npm install electron-packager --save
npm install electron-windows-installer --save
```

### electron-packagerでパッケージを作っておきます。

(`./public`の中にmain.jsがあるようなディレクトリ構成を想定しています。)

```
electron-packager ./public HelloApp --overwrite --platform=win32 --arch=x64 --version=0.31.2 --asar=true
```

### installer実行のために`gulpfile.js`を書き換えます

```js:gulpfile.js
var gulp = require("gulp");
var winInstaller = require('electron-windows-installer');
gulp.task('create_windows_installer', function(done) {
  winInstaller({
    appDirectory: './HelloApp-win32-x64',
    outputDirectory: './windows_installer',
    iconUrl: 'file://' + __dirname + + 'assets/icon.png'
  }).then(done).catch(done);
});
```

### gulpを実行する
```
gulp create_windows_installer
```


これで、windows_installerフォルダの中にHelloAppSetup.exeが作成されます。

exeを実行するとユーザの`AppData/Local`の中にインストールされますが、Windows10だと新しいアプリとして検出してくれないです。（自分の環境だけ?)

このままだと、インストールされたのにどこに入ったのかたいていの人はわからないですね。

そのあたりの設定わかったら追記したいです。or知ってる人教えてください。



https://github.com/maxogden/electron-packager

https://github.com/Aluxian/electron-windows-installer
CircleCIで1リポジトリ複数プロジェクトの対応(iOS)


最近、CircleCIを使っている人が増えてきている感じがします。
CircleCIはgithubのプライベートリポジトリも使えて非常に便利ですし、私も1ユーザです。

そんな私が、最近悩んでいたこと＆対応したことについて以下につらつらと書いてみました。

## やりたいこと
 - iOSアプリの開発でgithubのプライベートリポジトリを使っているが、1リポジトリ内に複数アプリのプロジェクトがある。
 - 各プロジェクト単位でビルド・テストなどをやりたい。

## 課題 
 - CircleCIは1リポジトリで1プロジェクトしか作れない。

※1アプリで1リポジトリを使えるなら良いのですが、プライベートリポジトリをさくっと増やすのはきついのです。

## 解決策
 - アプリ単位でブランチを用意する。

CircleCIはブランチ単位でビルドやテストを走らせることが出来るので、各アプリ単位でブランチを用意しておけば良いと気付きました。


## 対応方法
ディレクトリ構成的には以下の様な感じを想定しています。

```
 - apps/
   - circle.yml
   - アプリA/
   - アプリB/
   - アプリC/
```

### 事前設定
まず、CircleCIでビルドやテストをするための事前設定をしておきます。

 - Xcodeの「Manage Schemes..」からSharedをチェックしておく。
 - CircleCI上で対象となるgithubのリポジトリをプロジェクトにしておく。

### 共通設定
pod installは、各アプリのディレクトリでおこなうため以下の様な設定を書いておきます。

```
pod install --project-directory=${TARGET_PROJECT}
```

上記は、CircleCIの設定にある「Test Commands」の「Dependency Commands」に書いておきます。
${TARGET_PROJECT}については後述します。


### 各アプリの設定
各アプリの設定は、circle.ymlに書きトップにおきます。
このファイルは、各アプリのブランチ全てで持っておきます(masterブランチにも持たせておきます)。


記入例は以下のとおりです。
共通設定で使っていた値(${TARGET_PROJECT})はここで指定しています。

```circle.yml
machine:
  environment: 
    TARGET_PROJECT: アプリA
    XCODE_SCHEME: アプリAのscheme名
    XCODE_WORKSPACE: アプリA/アプリA.xcworkspace

  timezone:
    Asia/Tokyo
```


## 最後に
あとは、各ブランチで最新のコードをpushするだけでビルド・テストが走ってくれます。
slack連携やメール通知をしておけば結果もすぐにわかりますし、これで色々と捗りますね。


### 蛇足
最近はiOS周りのサポートも充実してきていて、すでにXcode7の対応もしてくれています。
Xcodeのバージョンは複数サポートしており、もはや自前でJenkinsなどをたてる必要もないかもしれませんね。


## 参考
 - https://circleci.com/docs/ios
mecabをmacで利用＆python3で利用 メモ


# brew

* インスコ  

    ```
    brew install mecab
    brew install mecab-ipadic
    ```

* バージョン確認

    ```
    $ mecab -v
    mecab of 0.996
    ```

* 実行確認  

    ```
$ mecab
すもももももももものうち
すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS

    ```

よさそう(´ー｀)


# pip

* インスコ

    ```
pip install mecab-python3
    ```

* 実行確認
 
    ```
print(mecab.parse("すもももももももものうち"))
    ```

    ```
$ ipython
In [1]: import MeCab
In [2]: mecab = MeCab.Tagger ("-Ochasen")
In [3]: print(mecab.parse("すもももももももものうち"))
すもも	スモモ	すもも	名詞-一般
も	モ	も	助詞-係助詞
もも	モモ	もも	名詞-一般
も	モ	も	助詞-係助詞
もも	モモ	もも	名詞-一般
の	ノ	の	助詞-連体化
うち	ウチ	うち	名詞-非自立-副詞可能
EOS

     ```

よさそう(´ー｀)
高画質なカメラ入力が必要な時の機材メモ

#対象読者
USB2.0のウェブカメラを使ったアプリケーションを書いていて

- もっと速いカメラが欲しい
- もっと高解像度のカメラが欲しい
- 一眼レフカメラの絵がそのまま読みたい

と言う状況になった時に何をすれば良いかのポインタというかメモです。
いずれも10万円未満(2015/9現在)での手段です。

#もっと速いor高解像度のカメラが欲しい
USB3.0接続の工業用カメラを買いましょう。

##Basler aceエリアスキャンカメラ(5-20万)
http://www.baslerweb.com/jp/products/area-scan-cameras/ace

が、いわゆる一眼レフのマニュアルモードで設定出来るような事はSDKから叩けます。  
お値段は後述のPointGray社の3割引きから半値なので最近はこれが流行りだと思います。

更に安価なものだとdartが2万から3万でも手に入ります。
http://www.baslerweb.com/jp/products/area-scan-cameras/dart

レンズは、それほど重要でないならe-bayなどで cs mount lensみたいな検索をするとよりどりみどりだと思います。

##PointGrayカメラ
最近は買っていないので相場は分かりませんが（どなたか、コメント欄で教えてください）
http://www.ptgrey.com/usb3-vision-cameras
大体Basler社と同じような使い心地です。SDK経由で大抵のパラメータが操作出来るのでいわゆるコンシューマ向けカメラよりも使い勝手が良いです。

##e-con Systemsカメラ
UVC互換(OpenCVなどでそのまま開ける)でUSB3.0対応のカメラが買えます。
以下は4万以下くらいで手に入るので非常に安いと思います。

- 視野角75度 FullHD60FPS 4k30FPSで読める
http://www.e-consystems.com/Cypress-CX3-THine-ISP-13MP-RDK.asp


- レンズ交換可能 FullHD60FPS(MJPG)で読める
http://www.e-consystems.com/UltraHD-USB-Camera.asp

#一眼レフカメラの絵がそのまま読みたい
HDMIキャプチャボード経由で映像を取得します。現時点ではBlackMagic社が広く使われています。

##4kが欲しい
Intensity Pro 4k
https://www.blackmagicdesign.com/jp/products/intensitypro4k

##FullHDで良いので外付け(ノートPCなど)で使いたい
https://www.blackmagicdesign.com/jp/products/intensity

これらをPCに繋いで、カメラのHDMI出力から直接キャプチャします。

Unityで使うには
AVPro Live Camera
https://www.assetstore.unity3d.com/jp/#!/content/3683
があります。

普通に使う場合は
BlackMagicSoftwareからSDKをダウンロードして組み込みます。
https://www.blackmagicdesign.com/support
openFrameworksでの実装例もあります。
https://github.com/kylemcdonald/ofxBlackmagic
LINEで送るをiOS9でやるには


## 起動時に出る謎のエラー
iOS9ではSchemeを使った実装方法が変わったらしいです。  
XCode７にして、実機はiOS9に変更していろいろと触っていると、起動時によくわからないエラーが出ました。![スクリーンショット 2015-09-21 22.43.24.png](https://qiita-image-store.s3.amazonaws.com/0/26911/97064ced-c381-b72a-ced5-fabc7d7a8add.png "スクリーンショット 2015-09-21 22.43.24.png")



先人の方々が言うにはplistで```LSApplicationQueriesSchemes```を追加するように！とのこと。
これで謎のKindleエラーが消えました。

![スクリーンショット 2015-09-21 22.44.12.png](https://qiita-image-store.s3.amazonaws.com/0/26911/a835d8d8-644b-b527-8b43-81301812f459.png "スクリーンショット 2015-09-21 22.44.12.png")

## 本題のLINEで送る
何も気にせずLINEで送るようのコードをSwiftで書いてたんですが、実際に動かしてみると・・・う、動かない。。。

```swift
@IBAction func pushLine(sender: AnyObject) {
    let text: String! = "Message!!"
    let encodeMessage: String! = text.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet())
    let messageURL: NSURL! = NSURL( string: "line://msg/text/" + encodeMessage )        
    if (UIApplication.sharedApplication().canOpenURL(messageURL)) {
        UIApplication.sharedApplication().openURL( messageURL )
    }
}
```
Kindleと同じように```line```を```LSApplicationQueriesSchemes```に追加してあげればいいんだな！


![スクリーンショット 2015-09-21 22.38.58.png](https://qiita-image-store.s3.amazonaws.com/0/26911/86c52c07-a7b5-fa50-974d-539eda8fd2cf.png "スクリーンショット 2015-09-21 22.38.58.png")


これでいけましたー！以上ですー。
charCodeAtとfromCharCodeを試してみよう

## はじめに

String.prototype.charCodeAtとString.fromCharCodeを試してみました。

String.prototype.charCodeAtはUnicodeを10進数に変換するStringのメソッドです。

String.fromCharCodeはUnicodeの値の数のシーケンスを文字列に変換するStringの静的メソッドです。

## How

Node.jsでもブラウザでも確認できます。

``` js
% node
> "ABC".charCodeAt(0)
65
> "ABC".charCodeAt(1)
66
> "ABC".charCodeAt(2)
67
> "未来".charCodeAt(0)
26410
> "未来".charCodeAt(1)
26469
> "未来".charCodeAt(2)
NaN
> "未来".charCodeAt(-1)
NaN
> String.fromCharCode(65,66,67)
'ABC'
> String.fromCharCode(26410)
'未'
> String.fromCharCode(26411)
'末'
> String.fromCharCode(26412)
'本'
> String.fromCharCode(26413)
'札'
> String.fromCharCode(26414)
'朮'
> String.fromCharCode(26415)
'术'
> String.fromCharCode(26416)
'朰'
> String.fromCharCode(26417)
'朱'
> String.fromCharCode(26418)
'朲'
> String.fromCharCode(26419)
'朳'
> String.fromCharCode(26420)
'朴'
```

## 参照URL

- [String.prototype.charCodeAt() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt)
- [String.fromCharCode() - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/String/fromCharCode)
Mac OS X Yosemiteでyas3fsを使ってS3をマウントする

# 目標
Mac OS X YosemiteでS3をマウントしたい。

# 問題
Mac OS X Yosemite(10.10)からは、[署名がないカーネルエクステンションのインストールを原則禁止する変更がされた](https://github.com/Homebrew/homebrew/issues/31164)ため、Mavericksでできたs3fsを使う方法([Mac OS X Mavericksでs3fsを使ってS3バケットをマウントする](http://qiita.com/isaoshimizu/items/c9d0f88ce30ae2079dfa))がうまくいかない。`brew install homebrew/fuse/s3fs`するときにfuse4xをソースからビルドさせたものが使えない。

```
fuse4x-kext: Building this formula from source isn't possible due to OS X
Yosemite and above's strict unsigned kext ban.
fuse4x: Building this formula from source isn't possible due to OS X
Yosemite and above's strict unsigned kext ban.
```

# 対処法
fuse4x.dmgとosxfuse.dmgのバイナリを直接ダウンロードしてきてインストールする、またはosxfuse.dmgと[yas3fs](https://github.com/danilop/yas3fs)(AWSの中の人が個人プロジェクトとして開発しているs3fsの拡張版)をインストールする。今回後者を試してうまくできた。

# 手順

1. http://osxfuse.github.com/ からosxfuse.dmgをダウンロードしてきてインストール。
2. pythonをインストール。
3. pip install yas3fs
4. S3のバケットとアクセス権限者を作成。
5. S3のアクセスIDとキーを.bash_profileに追記。

    ```
    export AWS_ACCESS_KEY_ID=YOUR_S3_ACCESS_ID
    export AWS_SECRET_ACCESS_KEY=YOUR_S3_ACCESS_SECRET_KEY
    ```

6. ターミナルで

    ```
    $ mkdir ~/s3
    $ yas3fs s3://your-s3-bucket-url ~/s3
    ```

これでFinderでもS3バケット内のファイルの読み書き操作ができる。 アンマウントは`$ umount ~/s3`。

yas3fsは機能が豊富で、Amazon SNSと組み合わせると複数PCとS3をリアルタイムで同期させることもできるよう。自分に必要になったときに試してみたい。
Visual Studio 2015 + cordova (Android)プロジェクトのビルドに失敗する時の解決方法

なぜか、Visual Studio 2015でAndroid実機が接続されているにも関わらず、
corudovaプロジェクトをビルドするときに失敗する事が多かったので、ここ(Qiita)に解決策を書き残しておきます。

※cordovaアプリを作りたいけど、エラーが出て英語だから解決方法が分からない(´・ω・｀) 人向けの記事です。

# エラー内容
Could not create the Java Virtual Machine. 

# 原因
JAVAのヒープ・メモリが足りていないのが原因

# 解決方法
### ※注意
Minecraftのメモリ設定に影響します。
(マイクラ)

コントロールパネル
↓
システムとセキュリティをクリック
![キャプチャのコピー.png](https://qiita-image-store.s3.amazonaws.com/0/71322/faa94ba6-5ea1-b4ab-8ccd-4a99d868686b.png)

システムをクリック
![キャプチャ1のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/71322/52be71ef-32c0-8c2e-d8dd-dc03b81adbd8.png)

システムの詳細設定をクリック
![キャプチャ2のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/71322/0218e5ea-81d4-0a18-a5cd-cfb15fe98c42.png)

環境変数をクリック
![キャプチャ3のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/71322/da5efae8-58b1-c361-46c3-bc70df178e7c.png)

ユーザー,システムどちらでも良いので追加をクリック
![キャプチャ4のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/71322/36e3f97b-c587-08fe-35e4-3e12d630ce3f.png)

変数名: _JAVA_OPTIONS
変数値: -Xmx512M
![キャプチャ5.PNG](https://qiita-image-store.s3.amazonaws.com/0/71322/dc34a69b-2e59-dcc4-5b7a-59d28e241c75.png)

"OK"を押して閉じる
↓
VS起動(起動している場合は一度閉じてから、もう一度起動させてください。)
↓
cordovaプロジェクトをビルド
↓
成功するはずです。
Travis-CIでgit cloneしたautoconfを使う

# 背景

Travis-CIに入っているImageMagickがどうも自分が期待していた
APIが使えないビルドであった為、これを自前でビルドしようとしたら、
今度はautoconfが古いと怒られた。

autoconfも自前のモノを入れることにした。

ちなみに、この方法は、古いtravis-ci用のファイルの書き方なので、
新しい書き方で書ける人はそうしたほうが負債にならないと思われる。

# autoconfをgitでcloneしてビルドする

GNUのツールなので、./configure一発と思いきや、gitで持ってくると
まず、configureがない。

このconfigureを作るのに大変苦労した。

autoconfコマンドを１回叩いて、エラーをくらい、めげずにもう一度叩くと、configureを生成してくれるが、travis-ciだと、コマンドの終了コードが0以外だと即エラーで中断なので、困った。

- alocalコマンドで、自前のm4フォルダを指定する
- automakeコマンドでは-aオプションで必要なファイルを自動作成？

辺りがポイントだった。

```yaml
- git clone http://git.sv.gnu.org/r/autoconf.git
- cd autoconf
- aclocal -I m4
- automake -a
- autoconf
- ./configure --prefix=/usr
- make
- sudo make install
```
Hue 電球を Ruby から操作する


Hue をいままで API を叩いて操作したことが無かったのメモ。Hue は外部からの接続には LAN 経由での http で、ブリッジと電球の間には ZigBee のネットワークを用いて通信してる。ふつうに API を叩くには LAN 経由でやれば良い。

## hue gem を使う

[hue gem](https://github.com/soffes/hue) を使うと CUI や Ruby から叩けて便利。

```
gem install hue
hue all on
# 一回目は Hue のブリッジにあるボタンを押す
```

なお cli の裏側では

- https://www.meethue.com/api/nupnp を叩いてブリッジのインターナルIPを取得
- http://#{ブリッジのIP}/api に username を POST して user を作る(hue cli だと現在 1234567890 というユーザ名で作る)

して IP の取得、user の作成を行ってる。また API ドキュメントは hue の developer program に登録しないと見れないのだけど、各種電球の操作から、グルーピング、シーン(hue のスマフォアプリにあるアレ、個人的には使いにくい…)、スケジューリング等々を行うことができる。

また色は RGB でなく、hue(色相), brightness(明度), saturation(彩度)の HSB をセットする必要がある。これは大本の hue API がその値で受け付けるからである。

```
# くらい赤
hue all --hue 65535 --brightness 10 --saturation 255
# 明るい白
hue all --hue 0 --brightness 255 --saturation 255
```

## Ruby から叩く

lights で全電球がとれるのでそれを叩く。

```
require 'hue'

lights = Hue::Client.new.lights

loop do
  lights.each do |light|
    state = {
      on: true,
      hue: rand(Hue::Light::HUE_RANGE),
      saturation: rand(Hue::Light::BRIGHTNESS_RANGE),
      brightness: rand(Hue::Light::SATURATION_RANGE)
    }
    # set_state で状態を更新する。第二引数はどれだけの時間をかけて電球の色を変化させるか。
    # 1 = 100ms でデフォルトは 4(400ms)
    light.set_state(state, 10)
  end
  sleep 1
end
```

## RGB で色指定したい

なじみ深い RGB で指定したい。color gem を使うと RGB <=> HSL 変換ができるので、それを Hue::Light と繋ぎやすいインターフェイスを作る。

```ruby
require 'hue'
require 'color'

module ToHSB
  def to_hsb
    { 
      hue: (hue * (65536 / 360)).to_i,
      brightness: (brightness * 255.0).to_i,
      saturation: (saturation * 2.55).to_i
    }
  end
end

Color::HSL.include(ToHSB)
```

これで、RGB で指定できるように。

```ruby
    hsb = Color::RGB.new(255, 255, 0).to_hsl.to_hsb
    state = { on: true }.merge(hsb)
    light.set_state(state)
```

追記: とおもったら G の色がうまくいってない…
[初心者向け]SwiftでもObj-cでも、CocoaPodsを使ってiOSライブラリを使って開発効率をアップさせる


## まえがき
SwiftとObj-cでアプリを作っていて、iOSライブラリ?何それおいしいの状態で、結構はまることがあったので、勉強がてら導入方法を丁寧にまとめてみました。参考にしていただければ幸いです。

## この記事を読んでできるようになること
iOSアプリを作るときに、ライブラリを簡単に導入することができるようになります。ライブラリを使って開発効率をアップさせることができます。

![image](https://qiita-image-store.s3.amazonaws.com/0/57284/7bb7dfb1-47bd-5c54-f455-93e0256a9e28.png)

## CocoaPodsとは
CocoaPodsはiOS/OSXの開発者が使うことのできる、iOS/OSXのライブラリ管理ツールです。それによって開発効率を高めることができます。
例えば、自前で作成すると時間がかかるような処理がライブラリにあったら、CocoaPodsを使って導入することで、開発効率を高めることができます。
ライブラリはオープンソースソフトウェア(OSS)でgithubなどでソースコードが公開されています。
もし不具合などあれば自分で直したり、バグ情報を共有することができます。ただし、OSSんｐ注意点の一つとして、導入したOSがバージョンアップした時にライブラリで不具合が起きることなどあります。
タイムリーな話として、iOS9対応できちんと動かなくなりそうなライブラリ(ipv6対応がいずれ必要となる通信周りのライブラリ)があったので今回の調査をして記事の作成に至りましたｗ

## 導入方法
### 1.インストール
ターミナルを開いて以下を実行します。
`sudo gem install cocoapods`

CocoaPodsはRubyで書かれているため、gemというパッケージ管理ツールでインストールできます。gemを使うためにはRubyが入っている必要がありますが、Macでは標準でRubyがインストールされているので、いきなりこのコマンドで大丈夫です。

2016年6月3日追記
El Capitanから上記コマンドだとinstallできないので、その場合は下記参照です。
[MacOSX El Capitanでcocoapodsインストールが出来ない時の対処法](http://qiita.com/AcaiBowl/items/4bb4708de03e6ee14a4a)

### 2.利用可能なライブラリの情報を更新
CocoaPodsで使用しているライブラリの情報を更新します。
`pod setup`

### 3.Podfleの作成
ライブラリを使うプロジェクトファイル(例：Hoge.xcodeproj)と同じディレクトリで「Podfile」という名前のファイルを作成します。
サポートするOSのバージョンや、インストールするライブラリを指定します。作成方法は、テキストエディタで作ってもいいですし、vimで作ってもよいです。今回は↓の内容で作りましょう。

```Podfile
platform :ios, "8.0"
pod 'CocoaLumberjack'
```

#### platformの設定について
ライブラリはどんなバージョンのOSでも動くなんてことはないので、
platformで、サポート対象OSを指定します。
今回はiOS8.0以降で動作を指定しています。
何も書かない場合は、iOSの場合6.0以降として設定されます。


#### podの設定について
CocoaLuberjackというログ出力ライブラリを今回はインストールしています。詳しい使い方は、参考サイトの記事をご参照ください。

### 4.ライブラリをインストールする
ライブラリを使うプロジェクトファイル(例：Hoge.xcodeproj)をXcodeで閉じたあとに、ターミナルで、今作ったPodfileがあるディレクトリに移動し、以下を実行します。

`pod install`

すると、以下の3つが新しく作成されます。

* <プロジェクト名>.xcworkspace
* Podsフォルダ
* Podfile.lock

一個目のxcworkspaceをFinderでタップすると、
Xcodeで開くことができ、次のキャプチャにあるように、Podsフォルダが追加され、その中にCocoaLumberjackのフォルダが追加されてることが確認できます。

![image](https://qiita-image-store.s3.amazonaws.com/0/57284/3ee6684c-d1d2-df17-0467-164a31de44e3.png)

### 5.ライブラリを使う
追加したライブラリを使うには、インポートする必要があります。
#### Obj-cの場合
使いたいファイルの冒頭に次の一文を加えてください。
`#import <CocoaLumberjack/CocoaLumberjack.h>`

### Swiftの場合
#### 1. Brighing-Headerファイルの作成
Swiftの場合はSwiftからObj-cを呼び出すとになり、まずはBrighing-Headerファイルを作る必要があります。
(Swift製のライブラリの導入方法は、後日調べて追記しますｗ)

![image](https://qiita-image-store.s3.amazonaws.com/0/57284/956b08a6-b0e6-fec5-f403-5875770ee645.png)


#### 2.Brighing-Headerファイルの設定方法
Build Settingsで、今作成したBrighing-Headerファイルを、読み込む設定をします。
![image](https://qiita-image-store.s3.amazonaws.com/0/57284/0f0fee98-1c5a-1470-d5a2-a0f9e3199135.png)



## 参考サイト
* [iOSライブラリ管理の神ツール「CocoaPods」のインストールと使い方 ](http://www.atmarkit.co.jp/ait/articles/1403/08/news008.html)
* [【iOS】BridgingHeaderの使い方と設定方法](http://tech.admax.ninja/2014/09/26/about-bridging-header/)
* [ログ出力ライブラリのCocoaLumberjackを使う](http://qiita.com/yuch_i/items/b25ddb6ceb788777c83b)
【Swift】Spritekitを使う時の最小限の雛形

# 概要
iOSで2Dゲームを作るならSpritekitを使う人が多いと思います。
Spritekitでアプリを作るためにはXcodeでGameを選択し、Game TechnologyでSpriteKitを選択するのですが、これで作るといらない処理が結構入ってるんですよね（変な飛行機の絵が回転するやつとかw）
自分はゲームアプリではStoryboardも使わない派なので、邪魔だったります。
なので、Spritekitがとりあえず動くだけの最小限のテンプレート的なものを用意してきました。

# AppDelegate
まず必須なのがAppDelegate。
didFinishLaunchingWithOptionsを定義しておきます。
ここではViewControllerを呼ぶ処理を記述します。

```swift:AppDelegate.swift
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool{
        let viewController: ViewController = ViewController()
        self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
        self.window?.rootViewController = viewController
        self.window?.makeKeyAndVisible()
        return true
    }
    
```

# ViewController
AppDelegateから呼ばれます。
ViewControllerで扱うViewは通常UIViewですが、SpritekitではSkViewを指定します。
viewDidLoadメソッドでは、タイトル画面となるTitleSceneを表示する処理を行っています。

``` swift:ViewController.swift
import UIKit
import SpriteKit

class ViewController: UIViewController {
    
    override func loadView() {
        // viewをSKViewに設定
        let skView = SKView(frame: UIScreen.mainScreen().bounds)
        self.view = skView
    }

    override func viewDidLoad() {
        // TitleSceneを表示する
        super.viewDidLoad()
        let skView = self.view as! SKView
        skView.ignoresSiblingOrder = true        
        let scene = TitleScene(size: skView.bounds.size)
        skView.presentScene(scene)
    }
}
   
```

# TitleScene
最後にタイトル画面となるSceneです。
通常はこのSceneにスタートボタンなどを追加する、またはSceneをタップすることでゲームを開始という処理を実装していくことになると思います。

``` swift:TitleScene.swift
import UIKit
import SpriteKit

class TitleScene: SKScene {
    override func didMoveToView(view: SKView) {
        // todo
    }
}
```

# まとめ
以上がSwiftでSpritekitを使う際の最小限の構成になると思います。
一応テンプレートは[github](https://github.com/fuku2014/SpritekitTemplate)にあげております。

みなさんもSpritekitで２Dゲームを作ってみましょう。
Railsでリポジトリパターン（？）

## TL;DR
データベースアクセス層は`app/models/repo`に書くことにした。
追加のgemとか不要でめでたしめでたし。
※リポジトリパターンとか言ってるけどDDDはよく知らない :scream: 

## 動機
Railsを使っているとFat Modelになりがちですね。

解決策としてサービスオブジェクト作ったりしますが、純粋なActiveRecordとその他のビジネスロジックを`app/models`においてしまうのか、`app/logics`とか`app/services`とか作るのかとか色々迷うなーって部分があると思います（僕はあります）。

最近[Growing Rails Application in Plactice](https://leanpub.com/growing-rails)という本を読んで、やっぱり`app/models`の下に置いた方が良い気がしました。
純粋なActiveRecordじゃなくてもActiveModelとか使って、バリデーションやコールバック、エラー処理などの恩恵を受けた方がRailsWayっぽいし、それなら`app/models`に入るだろうなーという感じです。

となると問題になるのが`app/modes`以下の構成。
実際にDBのテーブルにアクセスするモデルと、それらを利用してビジネスロジックを実装するクラスが同一階層に並んでると見通しが悪いですし、気持ち悪いです。
個人的には`tree`してディレクトリ構成を見れば中身の予想まである程度つく状態が良いです。

## 対応
今のことろの自分は以下のような構成にしてます。

```bash
$ tree app/models
app/models/
├── concerns
├── post.rb /* app/models/repo 以外はビジネスロジック */
├── post
│   ├── post_form.rb
│   └── post_search.rb
├── signin.rb
├── signup.rb
├── repo    /* app/models/repo 以下に純粋なActiveRecord */
│   ├── category.rb
│   ├── post.rb
│   └── user.rb
└── repo.rb
```

## 考え方
考え方としては、基本モデルはビジネスロジックでしょ！という感じで、データベースアクセス層（純粋なActiveRecordのクラス）は`app/models/repo`ディレクトリ以下に押しこめます。

そして`app/models`直下および`repo`以外のサブディレクトリにデータベースアクセス層を利用する（または利用しない）ビジネスロジックを記述していきます。

ビジネスロジックのクラスは、必要に応じて`Repo::`以下のクラスを継承するか、委譲してコードを書いています。本来は継承しているクラスも別の層に分割した方が綺麗だと思うのですがその辺は妥協しています。

例えば`Signup`クラスは`Repo::User`を継承して実際にレコードを作成しますが、`Signin`クラスは与えられたユーザーIDとパスワードから`Repo::User`を検索して認証を行います。

この際に`Signup`も委譲での実装にしてしまうこともできますが、継承の方がモデルのバリデーションをそのまま使えてViewのフォームなどが楽に書けたりするので。

ビジネスロジック層のさらなるディレクトリ分けはまだ迷っていて、アプリケーションによってはコントローラごとに分けた方が便利なこともあるかもな、、と思ってます。

## Tips
ちなみに普通にデータベースアクセス層のモデルを作成するときはmigrationも作りたいので `rails g`したいのですが、普通に

```bash
bin/rails g model Repo::User email:string password_digest:string
```

とかやると

```bash
$ tree app/models
app/models/
├── repo
│   └── user.rb
└── repo.rb
```

とできるのは良いのですが、migrationファイルに

```rb
create_table :repo_users do
  ・・・
end
```

と書かれててしまい、このままではテーブル名に実装の都合が反映されてしまいます。別にこのままでも実装続けられますが、ちょっと気持ち悪いので

```rb
create_table :users do
  ・・・
end
```

に直した上で、`app/models/repo.rb`を

```rb
module Repo
  def self.table_name_prefix
    'repo_'
  end
end
```

から

```rb
module Repo
  # ここではから文字にしているが、このメソッド定義を削除でも良い。
  # 今のところは明示的にこうしてるんだよって意味合いで残している。
  def self.table_name_prefix
    ''
  end
end
```

に変更します。
こうすることでテーブル名に余計な接頭辞がつかなくなり、ActiveRecordクラスも個別に `self.table_name`を指定しなくて済みます。

最初このディレクトリ構成にしようと思ったときに「毎回table_name設定するのやだなー」とか思ってたんですが、案外すんなり解決しました。

コード書いていく上でベースになる部分なので、こういう部分こそ追加のgemなしでできるのはありがたいですね。

## ついで
[Growing Rails Application in Plactice](https://leanpub.com/growing-rails)とても良い本でした。
英語だけど100ページ未満くらい（MBPのiBooksで読んだ場合）だし平易だと思うのでお薦めです。
これ読んでActiveTypeっていうgemが手放せなくなった。。
フォームで入力されたURLにPHPで移動する方法。

<pre>
&lt;form action="&lt;?php echo $_SERVER['PHP_SELF'] ?>" method="post">
&lt;input type="text" name="url">
&lt;input type="submit" name="submit" value="Submit">
&lt;/form>

&lt;?php
if($_POST['submit']) {
header('Location:'.$_POST['url']);
//header('Location:'.$_SERVER['PHP_SELF'].$_POST['url']);
}
?>
</pre>
[Wordpress]特定のカテゴリーで年ごとに記事一覧を表示する方法


[前回の記事](http://qiita.com/noqua/items/02307a2f45f61c882714)で月別もしくは年別のアーカイブ（例　2015、2014、2013...）を表示する方法を紹介していますが、今回は年＋記事という形式のアーカイブを表示する方法になります。

## 表示イメージ
- **2015年**
    - 日付<br>記事の内容
    - 日付<br>記事の内容
    - 日付<br>記事の内容

- **2014年**
    - 日付<br>記事の内容
    - 日付<br>記事の内容
    - 日付<br>記事の内容

- **2013年**
    - 日付<br>記事の内容
    - 日付<br>記事の内容
    - 日付<br>記事の内容

会社のウェブサイトであれば「沿革」、アーティストさんのウェブサイトであれば「リリース情報」などに使えるのではないでしょうか。

## コード

テンプレートファイルに以下のコードを記入します。

```php
<?php
	// 出力する内容を設定
	function archiveFunc($year){
		query_posts('category_name=[カテゴリースラッグ]&posts_per_page=-1&year='.$year.'&order=ASC');
		// category_name=history などスラッグを記入
		//posts_per_page は表示する記事数（-1は無制限）

		if(have_posts()) : 
?>
<dl>
	<dt><?php echo $year; ?>　年</dt>
<?php while(have_posts()) : the_post(); ?>
	<dd>
		<div class="date"><?php the_time('n/j'); ?></div>
		<div class="content"><?php the_content(); ?></div>
	</dd>
<?php endwhile; ?>
</dl>
<?php 	endif;
		wp_reset_query();
}

	$thisyear = date('Y'); // 現在の西暦年を取得

	for ($year=$thisyear; $year >= 2000; $year--) { 
		// $year >= で指定した年から現在の年までの記事を出力（例では2000年から現在まで）

		archiveFunc($year);
	}
?>
```

以上です。

上記で設定した関数「archiveFunc()」の詳しい使い方はこちらで以下のページでご確認ください。
[https://ja.forums.wordpress.org/topic/1564](https://ja.forums.wordpress.org/topic/1564)
Arch LinuxでAltseedを動かす

AltseedというマルチプラットフォームのゲームライブラリをArch Linuxで使う時のちょっとしたメモです。
どっちも導入までは公式の文書がちゃんとあるのであまり難儀はしませんが、アプリケーションコンパイル時/実行時にちょっと詰まったので

## 環境
- Arch Linux(Linux 4.1.6-1-ARCH x86_64)
  - デスクトップ環境はGNOME+OpenBoxですが大体他の環境でも同じかなと思います(たぶん)
- gcc 5.2.0
- Altseed(masterブランチのcommit 485cdf741b24044670a6255ef9188e374c395bc7)

## はじめにビルドするときに
Arch Linuxでは依存パッケージとして以下のものが必要です。

```
p7zip cmake libx11 glu glew libxrandr swig
```

もしこれらをインストールしてもビルドに失敗する場合はエラーメッセージを添えてコメントなりなんなりしていただければ手助けぐらいはできるかと思います(もっとも、Archをインストールしてデスクトップ環境を整えられるくらいであれば自力で解決できそうな気もしますが、その場合はぜひとも追加の依存パッケージを教えていただけると助かります（？ )

## コンパイルに際しての注意点(オプションとか)
最低でも以下のものを指定すればきちんとコンパイルできます。

- C++11フラグ(-std=c++11、1yでもとりあえず動く)
- 追加インクルードディレクトリ(-I(Altseedルート)/Dev/include)
  - ここで指定せずソース内でパス指定してもきちんとコンパイルされます
- 追加ライブラリディレクトリ(-L(Altseedルート)/Dev/lib)
- Altseedライブラリ本体(-lAltseed)
- X11のライブラリ(-lX11)
- ダイナミックリンク用ライブラリ(-ldl)

なので、

```cpp:main.cpp
#include <Altseed.h>

int main(int, char**)
{
  if(!asd::Engine::Initialize(asd::ToAString("App").c_str(), 640, 480, asd::EngineOption()))
    return -1;
  
  while(asd::Engine::DoEvents()) asd::Engine::Update();

  asd::Engine::Terminate();
  return 0;
}
```

として、同じディレクトリで

```
% g++ main.cpp -o main -std=c++11 -I(Altseedルート)/Dev/include -L(Altseedルート)/Dev/lib -lAltseed -lX11 -ldl
```

とすればコンパイルには成功します(typoがなければ)。
あとは`./main`とすれば黒塗りのウィンドウが出る...と思いがちですがそうでもなかったのが今回のミソ

## しっかりダイナミックリンク用のパスを指定する
この記事で使用しているバージョンの場合、cmake時にBUILD_SHARED_LIBSをoffにしても共有ライブラリを使う設定でビルドされます。さらに、make installでLD_LIBRARY_PATHが設定されないため、

- LD_LIBRARY_PATHに"(Altseedルート)/Dev/bin"を追加する
- 実行時にLD_LIBRARY_PATHを指定する
- LD_LIBRARY_PATHが通っているディレクトリに手動で配置する

のいずれかの手順を追加で踏む必要があります。今回は単純にテスト目的なので実行時にLD_LIBRARY_PATHを指定する形にします。

```
% LD_LIBRARY_PATH=(Altseedルート)/Dev/bin:$LD_LIBRARY_PATH ./main
```

以上で、基本的なAltseedのウィンドウ(真っ黒い画面)が出てくるかなと思います。
わざわざArch Linuxを使ってゲーム開発を行うなんて人は滅多にいないとは思いますが(たぶん)、3Dモデル制作ならBlenderがありますし2DでもGIMP等がありますし、音響でもArdourやRosegardenなどで大体賄えたりしますから(wineでWindows向けDAWを動かすこともできますが、遅延がさすがにひどすぎるのとかいろいろ面倒すぎるので**絶対に**おすすめしません)ゲーム制作プラットフォームの選択肢としては十分にありだと思います（？
DigitalOcean に Android x86 Atom エミュレータを飼う

## 動機

エミュレータの中ではそこそこ実行速度がある Android x86 エミュレータをインターネット上に展開し、CI 基盤として用いたい。

オープンソース向け CI サービスの中には Android のテストに対応していると記載されているものも存在するが、以下の問題が存在する。

* `androidTest`を実行する場合には ARM エミュレータの起動が必須になるので、テストの実行速度が非常に低速
* 画面なしでのエミュレータ実行が求められるので、UI メインの`androidTest`を書く場合に実行状況を確認しにくい
* 複数バージョンのエミュレータを展開してのテストができない
* CI サービスの YAML 地獄辛い

なお、実行環境として、仮想化支援機構の存在する時間課金型 VPS である [DigitalOcean](https://www.digitalocean.com/) を利用したい。

* 仮想化支援機構（`/proc/cpuinfo`の`vmx`, `svm`フラグ）が存在しないサービスでは x86 エミュレータが実行不能
* 常時インスタンスを起動していた場合、コスト面での負担が大きい
* インスタンスを毎回破棄することでクリーンなエミュレータを利用できる

## 実装

https://github.com/MisumiRize/android-x86-emulator-itamae

https://software.intel.com/en-us/blogs/2012/03/12/how-to-start-intel-hardware-assisted-virtualization-hypervisor-on-linux-to-speed-up-intel-android-x86-emulator

上記をベースに Ubuntu 14.04 LTS 上にエミュレーション環境を構築した。Itamae でプロビジョニングするので`bundle install`して`node.json`を用意してから、下記コマンドを叩けば動く。

```sh
$ bundle exec itamae ssh -h host -u user -j node.json recipes.rb
```

* `DISPLAY`が存在しないので、ウィンドウを有効にしてエミュレータ起動するには Xvfb が必要
* Xvfb, adb server, エミュレータ自体は Supervisor でスピンアップする
* エミュレータ自体をスピンアップする際に Xvfb を待ち合わせないといけないので、ラップしたシェルスクリプトが必要

![20150915001748.png](https://qiita-image-store.s3.amazonaws.com/0/66350/d76a62bf-5206-958c-515c-f5e6cd7aa40c.png)

x11vnc で`DISPLAY`にアタッチできるので vnc 接続もできる。

プロビジョンが終わってからインスタンスをシャットダウンしてイメージにしておくと、次回以降の立ち上げが高速化する。

## 雑感

* 日本国内リージョンがなく最寄りが多分シンガポールなので vnc が結構遅い
* それを抜いても Genymotion の実行速度には勝てない
* まともに動かそうと思ったらメモリ 4G 以上のインスタンス推奨
 * つまり常時起動すると月額 4,000 円からかかるので時間課金推奨
AppleDeveloperProgramLicenseの区分について

iOSアプリ、MACアプリを開発して公開するには、AppleDeveloperProgramの購入が必須になります。
（公開せずに自前で開発して遊ぶだけならば、購入する必要がなくなりました。

このAppleデベロッパーライセンスには幾つか種類があり最初の障壁になっている気がするので、まずはライセンスの種類についてまとめてみた。
（実際にライセンスを取得するやり方は、そのうち・・・^^;

# AppleDeveloperProgramLicenseの区分

Appleデベロッパーライセンスの種類


|  | Standard(個人) | Standard(組織) | Enterprise |
|:-----------|:-----------:|:------------:|:-:|
| 対象       | 個人 | 組織 | 組織のみ | 
| DUNS番号   | 不要 | **必須** | **必須** |
| 費用(ドルのため為替レートにより変動) | $99/年 (¥10,000前後) | $99/年 (¥10,000前後) | $299/年(¥30,000前後) |
| AppStoreへの公開 | **可能** | **可能** | 不可 |
| PUSH通知 | **可能** | **可能** | **可能** |
| アプリ内課金 | **可能** | **可能** | 不可 |
| TestFlight | **可能** | **可能** | 不可 |
| テスト用デバイス(UDID)<br>登録可能数 | 各デバイス100台まで | 各デバイス100台まで | 各デバイス100台まで<br>(ただし、無制限のアプリ配信により登録しなくても使用可) |
| AppStoreを介さないアプリ配信<br>（プロビジョニングファイル、証明書の有効期限内のみ） | テスト用として登録済のデバイスに限り可能(AdHoc) | テスト用として登録済のデバイスに限り可能(AdHoc) | **社内に限り無制限に可能(InHouse)**<br>(ただし、毎年のアプリ更新は必須) |
| 証明書の有効期限 | 作成から１年 | 作成から１年 | 作成から１年 |
| プロビジョニングファイルの有効期限 | 作成から３ヶ月(AdHoc) | 作成から３ヶ月(AdHoc) | **作成から１年(InHouse)**<br>(AdHocは作成から３ヶ月) |

※「登録デバイス数」内の「各デバイス100台まで」とは下記種類のデバイスそれぞれ100台まで登録可能
AppleTV、AppleWatch、iPad、iPhone、iPodTouch
例）AppleWatch10台、iPad40台、iPhone80台、iPodTouch30台で、合計160台であっても、各デバイスで100台以内なので登録できる

※EnterpriseLisenceみたいな感じで、教育期間向け(UniversityLisence)もあるみたいだが、ここでは割愛。
※iOSとMACのDeveloperLicenseは統合されたのでiOS、MAC、safariという区分は無くなりました。

## DUNS番号について
登記済みの会社については、すでに登録されている可能性があるので以下のURLから検索。
https://duns-number-jp.dnb.com/search/jpn/find_jpn.asp

もしも、未登録であれば、
上記のURLから登録を依頼（有料）をするか、
Appleのサイトからも登録を行うことが出来るようになった模様。（この方法はまだ未検証だが、無料らしい


# おまけ：Androidについて
1. Googleアカウントを作る
2. https://play.google.com/apps/publish/signup/ こちらに移動してズンドコ進む
3. クレカとかで25ドル払う
4. 終了！

と、Googleの方は、公開に審査自体がなかったり、毎年ショバ代よこせよと言われることはないようです。
いい事ばかりのように見えますが、審査がないということは、アプリ自体も玉石混交の状態＋悪意があるものもさっくりと作って公開できてしまうため、個人的にはストア自体の信用が微妙だったりします。
Googleも、なんとかしようとしているのは見えますが・・・デベロッパーの**住所を強制公開**はやりすぎじゃ・・・^^;
個人で開発して、事務所が自宅みたいな人は公開できないよ・・・orz


参考：
https://developer.apple.com/support/compare-memberships/jp/
https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/Introduction/Introduction.html
Railsでenchant.jsを使ってみる

Railsとenchant.jsでゲームが作れるように設定した時の覚え書きです。
[enchant.js](http://enchantjs.com/ja/)

## enchant.jsの本体をapp/assets/javascriptsに配置
DLした`enchant.js-builds(バージョン)/build/enchant.js`をrailsのアプリケーション内のapp/assets/javascriptsに配置するとenchant.jsが使えるようになります。
Asset Pipelineで調べると、/vendor/assetsに配置するのが良さそうなのですが、うまく動かなかったです。
`$ rails console`
↓
`> y Rails.application.config.assets.paths`
でAsset Pipelineのロードパスの一覧が見られるのが便利でした。
[Asset Pipelineを理解する](http://ja.asciicasts.com/episodes/279-understanding-the-asset-pipeline)


## 画像ファイルは/publicに配置
app/assets/imagesに画像を配置しても読み込んでくれないみたいでした。
以下を参考に/publicに配置したら読み込んでくれました。
[enchant.jsをRails上で動かした話](http://sssslide.com/speakerdeck.com/ryonext/enchant-dot-jsworailsshang-dedong-kasitahua)

## div enchant-stageでゲーム画面の差し込み
画像が出せるようになって次はゲーム画面の配置の制御にちょっと悩みました。
調べてみたら簡単にHTMLのidでできるようになっていました。
[enchant.jsのステージサイズについての基礎知識
](http://labs.torques.jp/2012/02/25/2525/)
Google Cloud Platformをローカルから利用するための準備


## 前提条件

- GCP利用開始手続き済み
	- 1つのプロジェクト、1つのGCEインスタンスを作成済
- ローカルはMac OS X 10.10.5

## Cloud SDKのインストール

GCPをシェルから利用するためのSDKをインストールします。

[gcloud Tool Guide - Cloud SDK — Google Cloud Platform](https://cloud.google.com/sdk/gcloud/)

```
$ curl https://sdk.cloud.google.com | bash
```

上記コマンドでインストール開始。

```
Installation directory (this will create a google-cloud-sdk subdirectory) (/Users/user): 
```

`/Users/[ユーザ名]` にインストールしていいか聞かれるので、変更する場合は任意のディレクトリを入力。

```
To help improve the quality of this product, we collect anonymized data on how
the SDK is used. You may choose to opt out of this collection now (by choosing
'N' at the below prompt), or at any time in the future by running the following
command:
    gcloud config set --scope=user disable_usage_reporting true

Do you want to help improve the Google Cloud SDK (Y/n)?  n
```

改善のためにレポートを送ってよいか。
私は「いいえ」を選択。

```
Modify profile to update your $PATH and enable shell command 
completion? (Y/n)? y

The Google Cloud SDK installer will now prompt you to update an rc 
file to bring the Google Cloud CLIs into your environment.

Enter a path to an rc file to update, or leave blank to use 
[/Users/user/.bash_profile]: 

```

パスを通してタブ補完を有効にするか。
「はい」の場合は書き換え対象のrcファイルを聞かれる。

```
$ exec -l $SHELL
$ gcloud version
Google Cloud SDK 0.9.78

bq 2.0.18
bq-nix 2.0.18
core 2015.09.11
core-nix 2015.09.03
gcloud 2015.09.11
gsutil 4.15
gsutil-nix 4.14
```

シェルを再起動して完了。

## アカウントへの紐付け

gcloudコマンドをGCPのアカウントに紐付けます。

```
$ gcloud auth login
Your browser has been opened to visit:

    https://accounts.google.com/o/oauth2/auth...
```

`gcloud auth login` を事項すると認証ページがブラウザに表示されるので、GCPを使用するアカウントでログインを行います。

```
Saved Application Default Credentials.

You are now logged in as [認証に使用したアカウント].
Your current project is [None].  You can change this setting by running:
  $ gcloud config set project PROJECT_ID
```

認証を行うと上記のメッセージが表示され、認証が完了します。

```
$ gcloud auth list
Credentialed accounts:
 - [認証に使用したアカウント] (active)

To set the active account, run:
  $ gcloud config set account ``ACCOUNT''
```

`gcloud auth list` で認証済みのアカウントのリストが見られます。
現在使用中のアカウントには `(active)` がついています。
複数のアカウントを利用している場合は `gcloud config set account ``ACCOUNT''` で使用するアカウントの切り替えができるようです。

これ、ちょっと変わった認証方法ですが、
ID、パスの入力必要ないしシンプルなのでどこかで真似したいですね。

## SSH接続の準備

GCEはブラウザからSSH接続できたりするんですが、
通常のSSH接続もできないと不便なので、そのための準備もしておきます。

```
$ ssh-keygen -t rsa -C "任意のアカウント"
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa): /Users/user/.ssh/id_rsa.gcp
...
$ pbcopy < ~/.ssh/id_rsa.gcp.pub 
```

`ssh-keygen -t rsa -C` で鍵を生成し、クリップボードにコピペして、
GCEインスタンスの詳細画面にある「SSHキー」の項目に追加します。

![Kobito.MdvY1d.png](https://qiita-image-store.s3.amazonaws.com/0/82948/95bebd3d-d6d9-45f9-f87a-445ef848bcd6.png "Kobito.MdvY1d.png")


GCEの場合、これだけでインスタンス内にユーザが作成されるので、
これでログインの準備は完了です。

```
$ ssh -i ~/.ssh/id_rsa.gcp [任意のアカウント]@[インスタンスの外部IP]
```

## 所感

SDKの認証や公開鍵の登録(からのインスタンス内ユーザ作成)など、
シンプルで使いやすいプラットフォームだと感じました。

AWSに比べると、ユーザ向けの(Google Appsなどの)プロダクトのユーザビリティに寄せてあるように思います。
CakePHPのページ送りのURLを修正する方法

# CakePHPのページ送りのURLを修正する方法
CakePHPでページ送りを実装するのに、Paginate ComponentとPaginate Helperを使いますが、ページ送りのURLがこのように「/sort:User.id/direction:ASC/」が付いてきてしまうので、それを削除する方法を紹介します。
http://example.com/page:2/sort:User.id/direction:ASC/

- controllerで`$this->paginate('User');`したあとに`unset($this->request->params['paging']['User']['options']['order']);`をする

- viewで`$this->Paginate->numbers();`の前に `unset($this->request->params['paging']['User']['options']['order']);`をする

どちらの方がいいかわかりませんが、これでページ送りのURLがhttp://example.com/page:2/になります。
Denoising Autoencoderで使うノイズの違いを体験してみよう

#TL;DR

デモはChromeで動作を確認しました
[デモ](https://hatoo.github.io/mnist-DAE-demo/html/)
[コード](https://github.com/hatoo/mnist-DAE-demo/)

#概要

* Denoising Autoencoder(以下DAE)に使うノイズには色々ありますが、自分にはどのような違いがあるのかよくわかりません
* ということで、mnistの手書き数字データで学習済したDAEで自分が書いた字を再構成させることでノイズの種類による違いを体験してみました
* それで何かわかるのかというと微妙ですが、**個人的に面白かったので共有しようと思います**

#ネタ元

[Stacked Denoising Autoencoders: Learning Useful Representations in
a Deep Network with a Local Denoising Criterion](http://www.jmlr.org/papers/volume11/vincent10a/vincent10a.pdf)
#使ったDAEの説明

* 入力は28*28のグレイスケール画像
* tied weight
* 中間層のユニットの数は500
   * 増やし過ぎるとjsのデモが重くなるのでこのくらいに
* アフィン変換&シグモイド関数のエンコーダー + アフィン変換&シグモイド関数のデコーダー。ロスはクロスエントロピー
 * 入力のmnistのデータはグレイスケール画像とはいえ、ほぼ0or1のバイナリ画像として見れるのでこの組み合わせです

#試したノイズの種類
###マスキングノイズ
入力の一部を`0`にします
###ソルト＆ペッパーノイズ
入力の一部を`0`か`1`にします。`0`か`1`かは等確率で決めました
###ガウシアンノイズ
入力に平均`0`で事前に決めた分散のガウス分布からサンプルした値を加えます

#コード

[コード](https://github.com/hatoo/mnist-DAE-demo/)
DAEの学習にChainer1.3.1を用いました
しかし、一部すんなりと実装できない部分があるので説明します
###tied weightなAutoencoder
[こちら](http://qiita.com/hatoo@github/items/f1dec072dc774c08d66d)を使用しました
###chainer.functions.sigmoid_cross_entropyの型が合わない
シグモイド関数からのクロスエントロピーロスにはchainer.functions.sigmoid_cross_entropyが使えます。しかしsigmoid_cross_entropyの教師の方の入力の型は`int32`ですが今回は`float32`の擬似バイナリ画像を使用したいので型が合いません。幸いなことにsigmoid_cross_entropyのforward,backwardの部分は`float32`も受け付けるようなので、chainerのソースからsigmoid_cross_entropyをコピペしてクラス名を変えて、check_type_forwardの部分でfloat32も受け付けるようにすればok

#デモ

学習したモデルをjsに読み込ませてリアルタイムに再構成させます
https://hatoo.github.io/mnist-DAE-demo/html/

#例

##マスキングノイズ80%
不完全な画像からそれっぽく数字に補完してくれる
![z80.png](https://qiita-image-store.s3.amazonaws.com/0/20535/373f7926-a7b7-c11d-80f1-f3553567bd13.png)


##ソルト＆ペッパーノイズ50%
補完はしてくれないが黒いノイズを消去してくれる
![sp50.png](https://qiita-image-store.s3.amazonaws.com/0/20535/1527f7d7-ed5c-b754-b2a7-2ef697c47eb2.png)


##ガウシアンノイズ 分散0.75
軽く補完したりノイズを消したり
![g75_5.png](https://qiita-image-store.s3.amazonaws.com/0/20535/597b83d5-1e6c-c376-f0d1-46ba9539f171.png)
![g75_2.png](https://qiita-image-store.s3.amazonaws.com/0/20535/4bcac836-7c3e-693a-5876-1db99619df50.png)
SpringBoot メッセージ国際化

SpringBootでメッセージ国際化をしてみます
何をするかというと、HTML内に表示されるメッセージを一つのファイルにまとめておきます。
あとからの修正が楽になるなどのメリットがありサイトを多言語展開する場合などに役立ちます
プロパティファイルに指定したメッセージは起動時に読み込まれ、インスタンス内にキャッシュされます
キャッシュされる方を使いたい場合には、ResourceBundleMessageSourceを使います。
今回は
リソースが変更されたらメッセージも変更される様にしたいのでReloadableResourceBundleMessageSourceをつかいます。

この機能はSpringの機能を利用する事になります。
必要なライブラリなどはなく、
1.ビーン登録
2.メッセージ用のpropertyファイルの配置
3.MessageSourceの継承

のみになります。

1.ビーン登録
WebMvcConfigurerAdapterを継承したクラス内で記述します

```java:hymeleafConfig.java
@Configuration
public class ThymeleafConfig extends WebMvcConfigurerAdapter {
        @Value("${lang.default.lang}")
		private String defLang;
        @Value("${lang.default.locale}")
		private String defLocale;

        @Override 
        public void addInterceptors(InterceptorRegistry registry) { 
                registry.addInterceptor(localeChangeInterceptor()); 
        } 

        @Bean 
        public LocaleChangeInterceptor localeChangeInterceptor() { 
                LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor(); 
                localeChangeInterceptor.setParamName("language"); 
                return localeChangeInterceptor; 
        } 

        @Bean 
        public CookieLocaleResolver localeResolver() { 
                CookieLocaleResolver localeResolver = new CookieLocaleResolver(); 
                Locale defaultLocale = new Locale(defLang + "_" + defLocale); 
                localeResolver.setDefaultLocale(defaultLocale); 
                return localeResolver; 
        } 
        
        @Bean 
        public ReloadableResourceBundleMessageSource messageSource() { 
        	ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource(); 
                messageSource.setBasename("classpath:messages/messages"); 
                return messageSource; 
        }
}
```

2.メッセージ用のpropertyファイルの配置
![HkZjtiskt-iv01pygPmylDR2gCusLMnXSkuW74YZIqU.png](https://qiita-image-store.s3.amazonaws.com/0/89997/d6ba729e-e6b7-6db1-baf5-bdb922ea3fe1.png)


3.MessageSourceの継承

```java:MessageResolver.java
	public class MessageResolver implements MessageSource{
		
	@Autowired
	private MessageSource messageSource;
	
	public void setMessageSource(MessageSource messageSource) {
	    this.messageSource = messageSource;
	}
	
	
	@Override
	public String getMessage(String code, Object[] args,String defaultMessage, Locale locale) {
		return this.getMessage(code,args,"",locale);
	}
	
	@Override
	public String getMessage(String code, Object[] args, Locale locale) throws NoSuchMessageException {
		// TODO Auto-generated method stub
		String sMess = messageSource.getMessage(code,args,locale);
		return sMess;
	}
	
	@Override
	public String getMessage(MessageSourceResolvable resolvable, Locale locale) throws NoSuchMessageException {
		// TODO Auto-generated method stub
		String sMess = messageSource.getMessage(resolvable,locale);
		return sMess;
	}
	}
```
gem を作って rubygems へ登録／公開する手順

Capistrano3 用のタスクを gem として切り出し、rubygems に登録し公開したのでその手順を記載します。

# 参考

* gem の作成方法
  * [capistrano3-notification作った](http://qiita.com/masarakki/items/049b2a1d02269e928d72)
* rubygems への登録方法
  * [作ったgemをリリースするまで](http://qiita.com/kyohei8/items/b292f727e213ed7db9d7)
* コントリビュータ行動規範について
  * [Contributor Code of Conduct](http://qiita.com/nstoym/items/ca711287117074a810aa)


# バージョン

| version | 
|:---|
| bundler 1.10.5 |
| capistrano 3.4.0 |


# gem プロジェクトの作成

`bundle gem` コマンドで作成します。

```shell-session
$ bundle gem capistrano3-railstmp
```

初めて実行したときは、コントリビュータ行動規範有無、MITライセンス有無、テストに利用するライブラリが聞かれます。
ぼくは、コントリビュータ行動規範:Y、MITライセンス:Y、テストに利用するライブラリ:rspec にしました。

```shell-session
$ bundle config
Settings are listed in order of priority. The top value will be used.
gem.test
Set for the current user (/home/vagrant/.bundle/config): "rspec"

gem.coc
Set for the current user (/home/vagrant/.bundle/config): "true"

gem.mit
Set for the current user (/home/vagrant/.bundle/config): "true"
```

# github に登録

この時点で生成されたソースを github に登録しました。
（.gitignore に .idea を加えています。）

* https://github.com/katsuhiko/capistrano3-railstmp/commit/a93c7955dc4848fb0470573fd02e298043550ba4

ブラウザから「capistrano3-railstmp」リポジトリを作り、github へ push しました。

```shell-session
$ cd capistrano3-railstmp
$ git add --all
$ git commit -m "生成した状態。.gitignore はちょっと変更した。"
$ git remote add origin git@github.com:katsuhiko/capistrano3-railstmp.git
$ git push -u origin master
```

# gem でやりたいことを実装

Capistrano3 のタスクで Cacheファイルをクリアできるようにしました。
修正箇所は以下です。

* https://github.com/katsuhiko/capistrano3-railstmp/pull/1/files


# ローカル環境に gem をインストール

ローカル環境で公開する前に gem を利用することもできます。

```shell-session
$ cd capistrano3-railstmp
$ bundle exec rake install
```

# rubygems のアカウント作成

https://rubygems.org/sign_up こちらでアカウントを作成します。

# rubygems APIアクセス鍵の登録

https://rubygems.org/profile/edit の下のほうにコマンドが記載されていますので、実行します。

```shell-session
curl -u Handle名 https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
```

# rubygems へアップロード（gem のリリース作業）

以下のコマンドでrubygems へアップロードとタグ付けを行ってくれます。

```shell-session
$ cd capistrano3-railstmp
$ bundle exec rake release
```

以上で gem を作って rubygems への登録／公開が完了です。

# まとめ

情報も多く、手順も単純です。
gem を作るのも簡単だとわかったので、一般化できそうな箇所は gem 化したくなりました。
独立開発ゲーム「5分間で推理しよう」まとめ

最近独立開発したゲームに使用した技術やツールやネットサービスを纏めることにした。まあ〜今後開発するゲームの参考にもなりますしね。

今回のゲームの内容は簡単なのですが開発の流れ的には手抜きてはいなかったです:「ゲームデザイン、開発、テスト、宣伝、メンテナンス」。そしてゲームシステム的にも手抜きてはいなかった「Hot Updating機能、通知機能、クラッシュ監視機能、ソーシャル連携機能などなど」。

今回のゲーム対応したプラットフォームは以下になります:

* iOS バージョン
* Android バージョン
* Mac OS デスクトップバージョン
* Windows デスクトップバージョン
* Linux デスクトップバージョン
* Html5 ウェッブバージョン

iOSとAndroidバージョンはメインなのです(後者はもだ移植中)。デスクトップとウェッブバージョンは体験版です。

サーバーの部分はParseを用いてCloud Codeで実装した。

ゲームのメンテナンスツールは主にPython、ShellとAppleScriptで実装:「リソースパック作成、暗号化、リリース、更新パック作成、特定バージョン作成、ユーザーデータ管理などなど」。

ゲームで対応した言語は「中国語、日本語、英語」で対応したソーシャルは「Sina Weibo、 Weixin、 Facebook、 Twitter」なのです。

ここからは纏めリストになります〜〜〜

### 1. プログラミング言語編

* C++
	* iOSバージョンの開発、Cocos2d-xフレームワークの使用
	* Javascriptとの連携(JSBinding)
	* Objective-Cとの連携
* Objective-C
	* iOSバージョンの開発、ソーシャルSDKの導入
	* iOS用SDKの導入
* Java
	* Androidバージョンの開発
	* C++との連携(JNI)
* JavaScript
	* 今回メインのプログラミング言語
	* iOS、ウェッブ、デスクトップバージョンの開発、Cocos2d-JSフレームワークの使用
	* Parseサーバー側のゲームロジック実装
* Python
	* 自動化スクリプトいろいろ
* Shell
	* 自動化スクリプトいろいろ
* AppleScript
	* 自動化スクリプトいろいろ
* html
	* 公式サイト作成
* PHP
	* 公式サイト作成
* CSS
	* 公式サイト作成
* html5
	* ウェッブ体験版作成


### 2. フレームワーク、SDK編

* Cocos2d-JS
	* メインなフレームワーク
* Cocos2d-x
	* Cocos2d-JSとの連携フレームワーク
* Node-Webkit
	*  デスクトップバージョンの作成
* Bugly
	* クラッシュ監視機能
* ShareSDK
	* ソーシャル機能
* ParseSDK
	* Parse導入用SDK	

### 3. ツール編

* Sublime Text3
	* メインなコーディングIDE (JavaScript、 Python)
	* CMD機能あり、PythonやShell実行に便利
* Xcode
	* コーディングIDE (C++、Objective-C)
	* iOS、Mac OSバージョンデバッグ用
* Eclipse
	* コーディングIDE (Java)
	* Androidバージョンデバッグ用
* AppleScript Editor
	* コーディングIDE (AppleScript)
	* 自動化スクリプト
* Mou
	* 手順などの作り
* IE && Safari && Firefox && Chrome
	* 公式サイトの作成とデバッグ用
	* ウェッブバージョンのデバッグ用
	
* Photoshop
	* ゲーム画像作り
* ShoeBox
	* 一枚のPSDを複数の(レイヤー毎に)PNGに書き出す
	* 複数のPNGのパック
	* CMDインターフェイスあり、スクリプト自動化可能
* TexturePacker
	* 複数のPNGのパック
	* CMDインターフェイスあり、スクリプト自動化可能
		
* OmniGraffle
	* UML作成
* Numbers
	* ドキュメント作成

* Audo Splitter (Mac)
	* 音声編集
* Camtasia 2
	* プロモーションビデオ作成
	
* JSON Mate
	* JSON有効性チェック、可視化ツール
* Kaleidoscope
	* Diffツール
* FileZilla
	* FTPツール
* SmartGit
	* Git可視化ツール
* MAMP
	* ローカルサーバー環境を作る
* SQLiteStudio
	* SQLite管理ツール
* VMware Fusion
	* Mac 上でWindowsやLinuxを実行する
* nwjs-shell-builder
	* ウェッブアプリをデスクトップに変換スクリブト

### 4. オンラインサービス

* TinyPng
	* PNG、JPG画像圧縮サービス
* Makeappicon
	* ゲームアイコン作成(iOSとAndroidオールサイズ)
* bugly
	* ゲームクラッシュ監視及び管理
* Parse
	* ゲームデータ管理
	* ゲームデータ管理バージョン管理
	* ゲーム通知管理
	* ゲームCloud Code管理
	* ゲームロッグ管理
	* ゲーム公式サイトのホスティング
* Sina App Engine
	* ゲーム公式サイトのホスティング
* Transfonter
	* フォント形式変換サービス
* media.io
	* 音声形式変更サービス
* freesound
	* 無料音源ファイルサービス
* GitLab
	* プロジェクトバージョン管理


まとめてみるとそんな長いリストでもないようてすね〜

次はもっと複雑なゲームを挑戦してみたいのですね ^_^
CentOS6のMySQLを5.1から5.6にアップグレードする手順

CentOS5の標準でインストールされる5.1系を最新の5.6系にインストールした時の手順を備忘録代わりに記載します。

1. 既存のMySqlのアンインストール

	（１）まず、MySQL関連のパッケージで何がインストールされているか確認
	
		# rpm -qa | grep -i ^mysql
		
		※私の環境では、Mysql-client 、Mysql-libs、Mysql-serverの３つがインストールされていました。
		
	（２）Mysql-libsの依存性の削除
	
		# wget ftp://ftp.jaist.ac.jp/pub/mysql//Downloads/MySQL-5.6/MySQL-shared-compat-5.6.34-1.el6.x86_64.rpm
		#  rpm -Uvh MySQL-shared-compat-5.6.34-1.el6.x86_64.rpm
		
		そのままyumコマンドで全部削除しようとすると、いろいろと依存関係で削除しなければならないものが多くなってしまいます。
		MySQL-shared-compactをrpmコマンドでインストールすることで、MySQLだけ削除できます。
		
	（３）MySQLの削除
	
		# rpm --nodeps -e mysql-5.1.73-5.el6_6.x86_64 mysql-server-5.1.73-5.el6_6.x86_64
		
		（２）の手順を踏んでも、owncloudが依存関係で削除対象にあがるので、MySQLの削除もrpmコマンドから
		

2. 新しいMySQLのインストール

	（１）yumへリポジトリの追加
	
		# yum install http://dev.mysql.com/get/mysql-community-release-el6-5.noarch.rpm
	
	（２）MySQLのインストール
	
		# yum install mysql mysql-devel mysql-server
		# /etc/init.d/mysqld start
		# mysql_upgrade -u root -p
		# /etc/init.d/mysqld restart`
	
		※特に私の環境では/etc/my.cnfの編集はせずとも動いたので、特に編集せずにデフォルトで利用

手順は以上。
いろいろ依存関係があると、アンインストール→インストールは面倒で嫌だ。


[2015-09-22 追記]
何やらメモリを非常に多く消費している。
どうもMySQLのバグ（？）っぽい。my.cnfに下記設定を追加し、様子見。

      table_definition_cache=400
OpenMPのスケジューリングの確認

# はじめに

OpenMPのスケジューリングアルゴリズムにはstatic、dynamic、guidedなどがあるが、そのうちstaticとdynamicの動作を確認してみる。

# セットアップ

手元のマシンは4コア2ソケットのXeonが乗ったMac Pro。ハイパースレッド無しなので、普通にやると8スレッド立つ。使うコンパイラはg++ (MacPorts gcc49 4.9.3_0) 4.9.3。こいつに1つだけ重い処理がまざったタスクを渡す。タスクの重さはusleepでシミュレートする(だから石の動作周波数とか無関係)。ソースはこんな感じ。

```c++:test.cc
#include <stdio.h>
#include <algorithm>
#include <unistd.h>
#include <omp.h>

const int N = 43;
useconds_t data[N];

int
main(void){
  std::fill_n(data,N,500000); 
  data[0] = 3000000;
#pragma omp parallel for schedule(static)
  for(int i=0;i<N;i++){
    const int id = omp_get_thread_num();
    printf("%d: sleep %d\n",id,data[i]);
    usleep(data[i]);
  }
}
```

43個のタスクがあり、ほとんど0.5秒で終わるのだが、一個だけ3秒かかる奴がある。これを8スレッドで分担するのだが、普通にタスクの数で等分割してしまうと、一つのスレッドが3秒のタスク一つと0.5秒のタスク5個が降ってきて、5.5秒かかる。残りのスレッドは0.5秒のタスクが5〜6個なので、2.5〜3秒。なので2.5秒くらい遊んでしまう。

うまくタスク分割できれば、一人が3秒のタスク一つ片付けているうちに、残りの7スレッドが0.5秒のタスクを6つ片付けて、全体が3秒で終わるはず。

# 実行結果

## static

```shell-session
$ g++ -fopenmp test.cc
$ time ./a.out | sort 
0: sleep 3000000
0: sleep 500000
0: sleep 500000
0: sleep 500000
0: sleep 500000
0: sleep 500000
(snip)
./a.out  0.00s user 0.00s system 0% cpu 5.515 total

```
確かに0番のスレッドが、3秒のタスク1個と0.5秒のタスク5個来て、全体で5.5秒かかっている。

## dynamic

```shell-session
$ time ./a.out |sort
0: sleep 500000
0: sleep 500000
0: sleep 500000
0: sleep 500000
0: sleep 500000
0: sleep 500000
1: sleep 3000000
2: sleep 500000
2: sleep 500000
2: sleep 500000
2: sleep 500000
2: sleep 500000
2: sleep 500000
(snip)
./a.out  0.00s user 0.00s system 0% cpu 3.025 total
```
1番に3秒のタスクが割り当てられたが、1番の仕事はそれだけ。残りの7スレッドで0.5秒のタスクを6つずつ片付けたので、全体としても3秒で終わった。

# まとめ

OpenMPのスケジューリングのデフォルトは多分staticだが、タスクごとに重さがばらついており、しかもその重さが事前に推定できない場合、スケジューリングをdynamicにするとロードバランスが取れて良いかも。ちなみにこのコード＆環境ではスケジューリングをguidedにしても結果はstaticと同じになった。
オブジェクトファイル

## 用語
### オブジェクトファイル
~.oだけでなく実行形式もオブジェクトファイルと呼ぶこともある。

### 狭義のコンパイル
プリプロセス後、～.sファイルが作成されるまで。

### 広義のコンパイル
~.oをリンクして実行形式が作成されるまで。

### オブジェクトファイル(~.o)
各セクション情報を持っている、セクションヘッダをもつ。まだ、セクションはまとめられていないのでセグメントはもたない。よってプログラムヘッダももたない。

### オブジェクトファイル(実行形式)
~.oのセクションをまとめたもの、セグメントをもっている。各セグメントの情報を保持している、プログラムヘッダをもっている。

### セクション
.text .data .bssとか

### セクションヘッダ
各セクションの情報をもつ。リンクはセクション単位で行われる。

### プログラムヘッダ
各セグメントの情報をもつ。ローダはセグメント単位でロードする。

### シンボルテーブル
関数、変数の名前とアドレスの対応表。ここにアドレスを挿入することをシンボル解決。

### 再配置
オブジェクトファイルが実際の固定アドレスに割り当てられること
【MySQL】カラムの特定文字を一気にupdate


###userテーブルのnameカラムの「鈴木」を「佐藤」へ一気にupdateしたい場合。

* userテーブル

| name | age | 
|:-----------|:------------|
| 鈴木　太郎      |  27       |
| 鈴木　さとし       |        35 |
| 佐藤　五郎       |        42 |
| 斉藤　まさし        |       28 | 


updateとreplaceを合わることで一気にupdateできる。

```sql:sql
update user
set name = replace(name ,'鈴木','佐藤');
```

たぶん、whreで条件つけるともっと安全。

```sql:sql
update user
set name = replace(name ,'鈴木','佐藤')
where  name like '%鈴木%';
```

###右端から1文字を削除したい

例えば右端に半角スペース入っていて削除したいみたいな場合

```sql:sql
update user
set name = left(name,char_length(name)-1)
where name like '% ';
```

参考:[SQL文で右から1文字だけ削除するやり方](http://oshiete.goo.ne.jp/qa/8267962.html)
[メモ] Xcode7にして エラーが出た Cannot convert value of type 'String' to expected argument type '(_builtinStringLiteral: RawPointer, byteSize: Word, isASCII: Int1)' (aka '(_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1)')

**未解決**

# 現象
Xcode6ではエラーが無かったが、Xcode7にしたら下記エラーがでるようになった

```swift
lazy var testImg = UIImage(named: "test.png")
```

```
Cannot convert value of type 'String' to expected argument type '(_builtinStringLiteral: RawPointer, byteSize: Word, isASCII: Int1)' (aka '(_builtinStringLiteral: Builtin.RawPointer, byteSize: Builtin.Word, isASCII: Builtin.Int1)')
```

# 考察
検証してみると、lazyがつくとダメっぽい
Xcodeのバグなのか

# StackOverflow
- [String literals in lazy vars in Swift 2 / XCode 7 [Cannot convert value of type String …]](http://stackoverflow.com/questions/32658812/string-literals-in-lazy-vars-in-swift-2-xcode-7-cannot-convert-value-of-type)
Xcode7でDirectory not found for optionのWarningが表示される。


はじめに
--
Xcode7にバージョンアップするとDirectory not found for option ~(省略)のWarningが表示された。同様の現象で困っている人が居た場合の助けになればと思ったので共有

```
directory not found for option '-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator9.0.sdk/Developer/Library/Frameworks
```

解決手順
--
画像で説明したほうが早いと思いましたので下記のように纏めました。

![not Directory エラー.png](https://qiita-image-store.s3.amazonaws.com/0/42939/f81caedb-1fbd-d2e3-da0d-d08f1844673a.png "not Directory エラー.png")