OmniAICreator/Qiita-1.07M huggingface dataset:
textShadow で擬似アウトライン


昨日ふんわり理解できたのでメモ
margin, paddingのような順序は特になく、
方向を自分でつけられるのがややこしくしていた。

, 区切りで多方向に影をつけることで擬似的にアウトラインを実現している。

ぼかしを入れないとアンチエイリアスを切ったような表示になるため、
rgba の前の0を指定するときっちりとしたアウトラインにはならないが、
気持ちアンチエイリアスがついたような表示になる



```css:css

text-shadow: 1px -1px 0 rgba(0,0,0,1), 1px 1px 0 rgba(0,0,0,1), -1px 1px 0 rgba(0,0,0,1), -1px -1px 0 rgba(0,0,0,1);

```


```scss:scss
text-shadow: 1px -1px 0 rgba(0,0,0,1), // 右上
             1px  1px 0 rgba(0,0,0,1), // 右下
            -1px  1px 0 rgba(0,0,0,1), // 左下
            -1px -1px 0 rgba(0,0,0,1); // 左上
```
コンソールプログラムでデバッグ文を表示する

CUIプログラムで、画面を崩すことなくデバッグ文を表示したかった。以下の方法で今のところ上手く行ってます。

標準エラー出力にデバッグ文を出力するマクロを定義。（C99の`__VA_ARGS__`を使用）

```c
#define debug(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "\n"); }
```

デバッグ文を散りばめ、プログラムをビルド。

```c
debug("hello %s!", "world);
```

ターミナルで、以下を実行。

```bash
tail -f debug.log
```

コンソールプログラムを実行する際、標準エラー出力を上記のファイルにリダイレクトする。

```bash
your_cui_program 2> debug.log
```
UE4 開発ざっくり方法とSwarmを少々

#はじめに
みなさんこんにちは、UE4エンジンって使っていますか？
私はそれほど使っていませんが、知れば知るほど良いゲームエンジンです。

#UE4重いなー
このゲームエンジン、Unityのモバイル用より重いです。
なぜならば、PC用ゲームエンジンだからなのです。
（知っている人には当たり前のお話です）
と言うのは、嘘でUnityでもプロジェクトのサイズが50GB以上とかだと、ファイルのリードだけでもかなりの時間が掛かるので、重くなります。UE4もそれと同じ理屈で基本的にハイクオリティな画像ファイルを多様するのがAAAタイトルな為だと思うのですが、空のThirdPersonプロジェクトをC++で作成するし、一旦開くとテンポラリファイルなどが作成されるため、８ＧＢ程度の容量占有します。

この時点で、感のよい人ならひらめくと思うのですが、メモリー８ＧＢのパソコンで開こうとするとＯＳの動きもモッサリな上にＵＥ４みたいな豪華なツールを動かす訳ですから、そりゃ～も～ＰＣ内部は大騒ぎさとなり、結果、使っている人から見るとなかなか反応が返って来ないフリーズ状態に見えます。

筆者は、ＣＰＵｉ７ ４Ｇクロック メモリ１８ＧＢ ＧＴＸ１０６０ ３Ｇ ｃドラＳＳＤ５００ＧＢ ですが、UE4EditorでVRモードとかにすると多少、もたつきます。 

重いなーと思っても慌てずに、CTL + Shift + ESCでタスクマネージャーを出しUE4Editor.exeが動いているか確認した方がよいと思います。慌ててカチカチするとその分、ＰＣがUE4を起動しようとして複数立ち上がるなんてことも現場では、よくあります。


#UE4でグループ開発する場合
バージョン管理が大変なのですが、実は簡単に管理できます。
Epic Launcherを使わなくても対象バージョンのUE4Editorは起動でき、プロジェクトプロジェクトファイルをContents配下にコピーすれば開発はできます。



MacのOpenGLはそれ用のよいサンプルが無く、PC用のプロジェクトでは、テックスチャーが剥がれます。
プログラムもPC用とは構造が違います。


#当然キレイが一番

#Swarm
win+e 
C:\Program Files (x86)\Epic Games

検索
swarm

プロジェクトがあるので見ればわかります。
![無題.png](https://qiita-image-store.s3.amazonaws.com/0/25895/715a75db-a993-e93e-549f-68295b0f195c.png)
Serverless Framework ver0.5.x（for AWS Lambda）再入門

Serverless Framework ver0.5.x（for AWS Lambda）再入門
----

### Serverless Frameworkとは

Serverless FrameworkはAWS Lambdaを使って、サーバレスなアプリケーションサービスを構築するためのフレームワークで、
主にAWS LambdaとAPI Gatewayで動作します。
メンテナンス性とスケーラビリティがが高いサービスを構築することができます。

[Serverless Frameworkとは](http://qiita.com/susieyy/items/1c2af0ef7b88b742c37a)

[サーバーレスアーキテクチャ](http://qiita.com/zerobase/items/3bc0d15980b472af841d)という概念が最近盛り上がっています。
これは、サーバーの管理もクラウドに任しちゃって、スケーリングと運用を気にしないようにしちゃおう！
というものです

それを実現するための方法を手供しているのが、[Serverless Framework](https://github.com/serverless/serverless)です。

2016年7月21日時点では、V.1 Alpha と v0.5.6があります。
v1では、AWS以外のクラウドに対応する構成になっており、v0.5.6から変化があります。

今回は、情報の多いv0.5.6をベースに情報を集めてみました。

### インストール

```npm install serverless -g```

### 使い方

- [Hello World](https://github.com/sadayuki-matsuno/pdf/wiki/serverless%E3%81%A7HelloWorld)
- [Create Project](http://tech.pero.li/entry/2016/04/08/142649)
- [使ってみた](http://haws.haw.co.jp/tech/serverless-framework/)
- [入門](http://blog.serverworks.co.jp/tech/2016/06/16/development-in-lambda/)
- [Slide](http://www.slideshare.net/akiraotsuka142/serverless)
- [ServerlessでReactする](http://qiita.com/Eiryyy/items/3f16b9ebad51883869e5)
- [Qiita](http://qiita.com/tags/serverless/items)

### v1系の情報

- [Serverless Framework1.0がリリースされたので触ってみる](http://www.slideshare.net/akiraotsuka142/serverless)
- [まとめ](http://hatena.mineblue.com/api/search/tag?q=Lambda&p=)


以上、まとめでした！！
uiautomator 2.0参考資料

# UiAutomator2参考
- [testdroid | What’s New in UI Automator 2.0 and How to Get Started](http://testdroid.com/tech/how-to-get-started-with-ui-automator-2-0)
- [Yukiの枝折 | Android: UIAutomator 2.0](http://yuki312.blogspot.jp/2015/03/android-uiautomator20.html)
- [github | googlesamples/android-testing](https://github.com/googlesamples/android-testing/tree/master/ui/uiautomator/BasicSample)
- [Build UiAutomator 2.0 from command line](http://stackoverflow.com/questions/29301693/build-uiautomator-2-0-from-command-line)
- [生まれ変わったUI Automatorを使いこなす](http://sssslide.com/speakerdeck.com/sumio/how-to-use-brand-new-ui-automator-perfectly)

# 日本語入力
- [Androidテストで便利なuiautomatorviewer、UiScrollableの使い方、テキスト入力API制限事項の回避方法 (4/4)](http://www.atmarkit.co.jp/ait/articles/1411/05/news038_4.html)

# TODO

- gradleでjarファイルを作成して、androidに転送して実行してみる。
- kotlinでコードを書く
The Keras Blog を feedly で読む

[The Keras Blog](http://blog.keras.io/index.html) を feedly で購読しようとすると、以下のように表示され、登録できませんでした。

![2016-07-21_08-43-05.png](https://qiita-image-store.s3.amazonaws.com/0/42252/cdb249b6-9b0e-c0c7-0707-a730b2da9245.png)

HTMLのソースを見てみると、headタグに設定されているlinkがおかしいようです。

```html
<link href="http://blog.keras.io/" type="application/atom+xml" rel="alternate" title="The Keras Blog ATOM Feed" />
```

ブログのシステムはPelicanというものらしいので、Atomフィードの設定を参照します。
http://docs.getpelican.com/en/3.6.3/settings.html

多分このままなんじゃないかという予測のもとに、以下にアクセスしてみたらビンゴでした。
http://blog.keras.io/feeds/all.atom.xml

無事登録完了です。

![2016-07-21_08-43-53.png](https://qiita-image-store.s3.amazonaws.com/0/42252/1c62cbc1-7a30-4b89-606e-efee5a603a98.png)
Unityで〜 Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. a〜


〜Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. a〜


こういうエラーがでたら、Editorのファイルが怪しい。
SDK類で、重複で不要でファイルが入っていないかみてみた。

UntiyAPIで、xcodeの設定等をいじる PostProcessBuilderを修正したら改善されました。
同様な事象の方の参考になれば幸いです！
Turbolinks.visit の流れ

対象：Turbolinks v5.0.0

[`Turbolinks.visit(location)`](https://github.com/turbolinks/turbolinks/tree/v5.0.0#turbolinksvisit) の流れを追いかけた覚書です。

# Turbolinks.start

![start.png](https://qiita-image-store.s3.amazonaws.com/0/5179/a4151496-3cd7-1b82-cb3f-669c13722ccb.png)

# Turbolinks.visit

![visit_1.png](https://qiita-image-store.s3.amazonaws.com/0/5179/49b94520-a486-944c-c778-b2a6a7023a63.png)

![visit_2.png](https://qiita-image-store.s3.amazonaws.com/0/5179/ec6005d8-8ffa-3519-5f72-45cc0633bd48.png)

![visit_3.png](https://qiita-image-store.s3.amazonaws.com/0/5179/913644ce-9f5d-8d36-43ee-13fdc83c0931.png)

![visit_4.png](https://qiita-image-store.s3.amazonaws.com/0/5179/c5e3dd1f-9825-522a-e07a-f2f593a05a76.png)
<Python> Jupyter Notebook データ分析専用サーバーを構築する

# TL;DR
リモートサーバー（Cent OS 6.8）をJupyter Notebook専用サーバーにしたときのステップを再現してみました。チームで分析専用サーバーとして使え、便利です。

# 環境
* Cent OS 6.8
* Anaconda (Python 3.5.1) 
* Jupyter Notebook (4.1.0)
* Pyenv (20160509-74-ge93ae00)
* Nginx (nginx/1.10.1)

<img width="300" alt="Test.png" src="https://qiita-image-store.s3.amazonaws.com/0/119686/2a1eeeb8-dfb3-4af1-9b51-947aad22b0be.png">


# 1. Pyenvをインストール
複数のPythonバージョンを簡単にスイッチングできるように[Pyenv](https://github.com/yyuu/pyenv-installer)をインストールする。

```
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
```

```pyenv -v```でバージョンが表示されたらOK

```
pyenv 20160509-74-ge93ae00
```

# 2. PyenvでAnacondaをインストール
Anacondaは、データ分析系分析ライブラリがたくさん詰まっているディストリビューション。Jupyterもこの中に入ってる。

```
pyenv update
pyenv install -l // anacondaの最新版を確認
pyenv install anaconda3-4.1.0 // 最新版インストール
pyenv global anaconda3-4.1.0 // デフォルトのPythonがanacondaに切り替わる
```

ややインストールに時間がかかるが、```jupyter --version```でバージョンが表示されたらOK

```
4.1.0
```

# 3. Nginxをインストール
1つのIPを複数のサービスで使うことも考えて、Nginxを使う。

まずは最新Nginxを取得できるようにrepoを登録

```/etc/yum.repos.d/nginx.repo
 [nginx]
 name=nginx repo
 baseurl=http://nginx.org/packages/centos/6/$basearch/
 gpgcheck=0
 enabled=1
```
yumを最新にし、Nginxをインストール

```
sudo yum update
sudo yum install nginx
```

``` nginx -v ```でバージョンが表示されたらOK

```
nginx version: nginx/1.10.1
```

NginxのJupyter専用設定ファイルjupyter.confを作成する前にincludeしておく

```/etc/nginx/nginx.conf
http {
  include /etc/nginx/conf.d/jupyter.conf;
}
```
jupyter.confを作成。9999をListen。

``` /etc/nginx/conf.d/jupyter.conf
location / {
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "upgrade";
  proxy_set_header Origin "";
  proxy_pass http://127.0.0.1:9999;
}
```

Nginx起動

```
sudo service nginx start
```

# 4. Jupyter 設定

Jupyterの設定ファイルを作成する

```
jupyter notebook --generate-config
```

```jupyter notebook```コマンドはデフォルトでブラウザが起動する。
起動しないようにしつつ、Notebookが使うデフォルトポートを9999に設定する。

```.jupyter/jupyter_notebook_config.py
c.NotebookApp.open_browser = False
c.NotebookApp.port = 9999 
```

# 5. いよいよJupyter起動！

入力するのは、これだけ！

```
jupyter notebook
```

サーバーのIPにアクセスして、下の画面が出たら起動完了。コマンドを打ったディレクトリのファイル、ディレクトリが表示される。

早速、"New"を押して新規ファイルを作成してみる

<img width="800" alt="Home.png" src="https://qiita-image-store.s3.amazonaws.com/0/119686/8847c1ba-50f3-d9e5-e108-4d93db8e354a.png">

Notebookという名前の通り、試し書き的にコードを書け、1行 = １つのコードの集まりといった感じで、1行ずつ実行できる。
自分の場合、1行目で必要なライブラリをすべてimportして、autocompleteが効くようにしている。

<img width="600" alt="Test.png" src="https://qiita-image-store.s3.amazonaws.com/0/119686/2a1eeeb8-dfb3-4af1-9b51-947aad22b0be.png">

# 5. Jupyterサーバーに簡単ssh接続

サーバーのポートやユーザーを設定後に、クライアント側でいちいち長いsshコマンドを入力して、リモートと接続するのは面倒なので、``` ssh jupyter ```で接続できるようにしておく。

```~/.ssh/config
Host jupyter
    HostName        IP_ADDRESS
    Port            SSH_PORT
    IdentityFile    SECRET_KEY
    User            USERNAME
```
技術英語 > to have 20 percent go into creating [mediocre] design alternatives / apprentice

@ Code Complete (No. 4418 / 36077)

> to have 20 percent go into creating <font color=red>mediocre</font> design alternatives

http://ejje.weblio.jp/content/mediocre

並の、平凡な、劣った、二流の

<hr>
関連して思い出したのは

http://ejje.weblio.jp/content/apprentice
> apprentice
> (昔の)徒弟、年季奉公人、初心者、実習生、練習生

「見習い」という意味で使われているのをよく目にする。

<hr>
見習いで思い出したのは「新しいこと」

@ 我らクレイジー☆エンジニア主義 - 日本の技術を支える常識やぶりの男たち -

MITの石井裕教授がMITに移籍することになった時の話。

> そして95年、採用が正式に決まった席で、ネグロポンテ所長がいった言葉は私を驚かせました。「君が取り組んできた研究の面白さはわかった。でも、MITでは同じ研究は絶対に続けるな。まったく新しいことを始めろ。人生は短い。新しいことへの挑戦は最高のぜいたくだ」
kubernetes kubectlがめんどくさすぎたが既に最新版で補完機能があった話

# 追記

`2016/08/03` の更新でgcloud付属の`kubectl`が1.3.3になった :tada: 
kubectlを別個に入れる必要なく利用できるようになりました。

- - -

gcloud付属の`kubectl >= 1.3.0`になったらまるで役に立たない情報。

# tl;dr

gcloud付属の`kubectl`にはまだcompletionがないから
最新版を持ってきて`kubectl`の補完機能を使って幸せになろう。

1. kubectl 1.3.0を[ここからDownload] (https://coreos.com/kubernetes/docs/latest/configure-kubectl.html)
2. `$ source <(kubectl completion zsh)`
 
- - -
# 便利

logsでpod nameだけじゃなくて
multi container podの場合、中で何が動いてるかも判定してくれる。(nginx, fluentdの例)
![kubectl.gif](https://qiita-image-store.s3.amazonaws.com/0/24105/46f3ff54-9410-9812-fbb5-d757cf09ab76.gif)

# これ以降読まなくていいやつ

kubectl shellの補完が効かなくて死ぬほどめんどくさい。
どうにかなんねーのかなと思ってたら
kubectl 1.3.0のCHANGELOGに気になる記述があった


>Add zsh completion for kubectl (#23797, @sttts)

>Move shell completion generation into 'kubectl completion' command (#23801, @sttts)

え、マジで？ 最高の夏かよ

gcloud付属の`kubectl`はまだ1.2.5(2016/07/21現在)なので使えない
最新版を持ってきてら確かにコマンドがあった。最高

`$ kubectl completion zsh`
`$ kubectl completion bash`

他にも気になる事が書いてあったし CHANGELOG読むべきだなって思った。
Azure App Service上でSlackのbotkitを動かす

herokuにbotkitをデプロイする感覚で、Azure App Service上でbotkitを動かしてみる。
Azure App Serviceではnode.jsをサポートしているため、botkitも簡単に動く。

今回は主に以下の記事が参考になった。
[Azure App Service での Node.js Web アプリの使用](https://azure.microsoft.com/ja-jp/documentation/articles/app-service-web-nodejs-get-started/)


#前提
・node.js、npmが利用出る環境
・Azureアカウントは事前に取得済み
・Slackにbotユーザーを登録&APIトークンは取得済み →参考 [Slackの新しいフレームワークBotkitを試してみる](http://qiita.com/icb54615/items/af08862dfaefbf2bbcbe)



#Azure CLIのインストール
今回はnpm経由でインストールをした。(インストーラからもインストール可能)

```
npm install azure-cli -g
```
[Azure CLI のインストール](https://azure.microsoft.com/ja-jp/documentation/articles/xplat-cli-install/)

#botkitの導入

botkitのクローン

```
git clone https://github.com/howdyai/botkit.git
```

モジュールのインストール

```
cd botkit
npm install
```
今回はbotkitのリポジトリに含まれるサンプルのslack botを動かす。
`botkit/slack_bot.js`が標準的なslack botのサンプルに当たるので、コピーしてリネーム
ここでは、bot.jsとした。

```
cp slack_bot.js bot.js
```


#各種設定

###アカウント設定
azureにログイン

```
azure login
```

確認のメッセージが表示される

```
Select y to enable data collection :(y/n) 
You choose not to participate in Microsoft Azure CLI data collection.


info:    Executing command login
|info:    To sign in, use a web browser to open the page https://aka.ms/devicelogin. Enter the code <コード> to authenticate.
```

ブラウザからリンク先のページにアクセスして、コードを入力する。
![スクリーンショット_2016-07-21_2_55_43.png](https://qiita-image-store.s3.amazonaws.com/0/79414/3d1a736a-2960-e0e9-1d29-e486dffac87e.png)

Azureに既にログイン状態の場合、つぎのような画面が表示され利用するアカウントを選択する。
![スクリーンショット_2016-07-21_2_56_18.png](https://qiita-image-store.s3.amazonaws.com/0/79414/192547ba-9802-4d9e-7556-ebfe01edd98f.png)

コンソールに戻り、ログインされていることを確認する。

```
+
info:    login command OK
```

###package.jsonの変更

アプリケーション(bot)のルートファイルを指定するために、以下の項目を追加

```
"scripts": {
    "start": "node bot.js"
  }
```

### App Serviceの設定
AzureポータルのApp Serviceから作成したアプリを選択し、
「設定」->「アプリケーション設定」から以下の項目を変更する。

![setting.png](https://qiita-image-store.s3.amazonaws.com/0/79414/228f1f86-9ae4-3a01-4513-151d81883fe5.png)

「アプリ設定」には環境変数としてtokenに取得済みのAPIトークンを設定します。


#デプロイ

Azure に App Service アプリ リソースを作成
ロケーションの選択と、gitで使用するアカウントの作成を求められるので選択する。

```
azure site create --git <アプリ名>
```

gitコマンドでデプロイ

```
git add .
git commit -m "azure first commit"
git push azure master
```

以上、ここまででAzure App Service上にbotkitをデプロイできました。

#その他
今回、以前から使い慣れているbotkitを使用したが、MSからMicrosoft Bot Frameworkというぼっとフレームワークが出ているらしい。Azure上に簡単にデプロイ出来る機能とかあるのかな?
Rails5でassetsをRailsに配信させる

Rails5で、本番環境でNginxなどのwebサーバーを使わずassetsファイルを配信させる

Rails4.1までは多分こう

```rb
# config/environments/production.rb
  config.serve_static_assets = true
```

Rails5からはこう

```rb
# config/environments/production.rb
  config.public_file_server.enabled = true
```

はまった。。。
マウスカーソルの位置にオブジェクトを置きたい時

こんな感じで、Cubeをカーソルを追いかけるように移動させたい時は

![a.gif](http://i.giphy.com/26BoE7Ctxs3YbFssw.gif)

こんなScriptを書いてCubeに貼ります。

```csharp:MouseScript.cs
using UnityEngine;
using System.Collections;

public class MouseScript : MonoBehaviour {

	Vector3 screenPoint;
	
	// Update is called once per frame
	void Update () {
		this.screenPoint = Camera.main.WorldToScreenPoint(transform.position);
		Vector3 a = new Vector3 (Input.mousePosition.x,Input.mousePosition.y,screenPoint.z);
		transform.position = Camera.main.ScreenToWorldPoint (a);
	}
}


```
npmでglobalに入れているパッケージを確認する

制作環境を人に伝えるときなど、どういうものが入っていたかと確認したくなるときがあります。

YeomanやGulpなど、制作環境として普遍的に使うものに関しては```npm install packagename -g```とする派です。
しかし、ユーザーディレクトリ直下で```npm ls```と入力しても

``` $ npm ls
/Users/woopsdez
└── (empty)
```

となってしまい、確認ができませんでした。node.jsに詳しい人が教えてくれたのですが、

``` npm ls -g ```

とオプションでグローバルを指定しないといけない模様。
※ 言われるままにパッケージ入れてると表示されるまでけっこう重かったりします。

## まとめ
```npm ls```だと、現在地のpackage.jsonを探してしまうようです。 ```npm ls -g```としましょう。
[番外編]　Play1.4系でJava webアプリ入門してみる。

#序
[こちらの記事](http://qiita.com/y_q1m/items/45f0747c8d7a53dcbfa5)を拝見して、懐かしのPlay 1系が今も生きていることを知り、Java 8入門にふさわしいのではとので、ちょっと試してみます。

Play 2.5系の入門メモ書き、割合とストックされているんたけど、最近の仕事ではAndroid Javaを使う一辺倒なもんで、更新できずの、罪滅ぼしも兼ねて。

ぶっちゃけ、Javaでwebをまじにいじるならば、まずはSpring bootかその対抗フレームワークなのだと思う。Play 2.xは(ORM/FRM周りの...な事態はいったんさておいても)scalaで書く方が生産性が高いわけで。

でも、Play 1.4ならば、、Java(8)でそこそこなものを書けそう。

...けっこう前の先進フレームワークなわけで、過度な期待はせずに、まずは、あくまでお勉強目的ということで、試してみる。...ふだんスクリプト言語の方が、なじみがいい感じで、ただ仕事ではJava書いてる人におすすめなネタかな。

#Play1系のダウンロード～初回実行

上の記事の方も書かれているように、本家ページの下の方から、Play 1.4.2あたりのzipをダウンロードして、解凍して、play new/play runするのみ。

具体的にどどうすればよいかは、Play1.2.x時代のHello World’ チュートリアル(日本語訳チュートリアル)がそのまま使える("Play は Java 5 以降 を必要とします。"といったくだりが時代の流れを感じされるけどそのあたりはスルーで)。
https://www.playframework.com/documentation/ja/1.2.x/firstapp

play new以降はrailsっぽいフォルダ単位の管理なので、atomのようにフォルダ単位でファイルを扱えるエディタを使って管理するのがお手軽かな(フォルダ構成が以下のように一覧できる)。

![atom_play1.png](https://qiita-image-store.s3.amazonaws.com/0/16455/ff08927e-aeed-cba3-3c11-99c991ab68d0.png)

特にatomを強く進めるものではないが、ファイルの新規作成くらいはエディタ内で行えた方が、play的にはやはり便利: 
![play-atom2.png](https://qiita-image-store.s3.amazonaws.com/0/16455/7e3dd46f-c6c6-7041-be7b-5d73df60280f.png)

#おしまい。

本日の確認事項 : 昔々の日本語チュートリアルは今でも大丈夫。

で、今もメンテをしてくださっている有志がいるので、ちょっとしたwebアプリをJava縛りで書かなければならない場合には、このお気軽ソリューションも、今後数年間は、実用的かつ有効なのかな。

今晩は、Java 8で問題なく動いていることの確認にとどめ、Java 8固有の機能のPlay 1.xでの使いどころについて、そのうち追記したい。
Raspbian Jessie 設定

### アップデート

    sudo apt-get update
    sudo apt-get upgrade
    sudo rpi-update

### 日本語環境

- NotoSansCJKjp
- jfbterm
- fcitx-mozc



        apt-get install jfbterm fcitx-mozc


### Chromium

http://mmays.hatenablog.com/entry/2016/05/07/194111

一番下のネイティブインストールのやり方

### キーボードのキーコードを調べる

    xev
ChatWorkからファイルも含めてログをエクスポートしたいならgoodbye_chatworkだ！KDDI ChatWork対応

## goodbye_chatwork
**使用前に必ず注意も読んでください。**
ChatWorkのログが必要だ！バックアップせねば！
いろいろあると思いますがChatWorkから全データをローカルにダウンロードしたいと言った場面が出てくるかもしれません。
KDDI ChatWorkにはエクスポート機能あるけど普通のプランでは利用できない！
しかもKDDI ChatWorkでも管理者しかエクスポート機能は使えません。
そんな時に便利なのが[goodbye_chatwork](https://github.com/swdyh/goodbye_chatwork)！
rubyのgemとして公開されています。
もちろんKDDI ChatWorkにも対応！（バージョン0.0.5から）
利用するためにはrubyのインストールが必要です。
また、MacOSの場合はCommand Line Toolsも必要です。

## 注意
goodbye_chatworkでエクスポートできるのは**自分が属しているチャットルームのみ**です。
**存在するすべてのチャットルームがエクスポートできるわけではない**ことに注意してください。
グループでChatWorkを活用している方は、一つのアカウントをすべてのチャットルームに参加させてからそのアカウントでエクスポートすることをお勧めします。

## goodbye_chatworkのサポートについてのお願い
現在goodbye_chatworkの更新は私が行なっています。本記事のコメントに問題をご報告いただくことがあります。問題報告自体はとても嬉しくありがたいですが、情報の一元管理のために可能であれば[英語で本プロジェクトサイトのissueを作成](https://github.com/swdyh/goodbye_chatwork/issues/new)していただきたいです。
issueとはプロジェクトの課題や問題、解決までの履歴を一元管理できる機能です。このissueを通してやりとりをすることで、今後同じ問題に直面した方への大きな助けとなります。

書き方は
[When a PDF file downloads in Windows, it's embedded and is lacking in a font. · Issue #11 · swdyh/goodbye_chatwork](https://github.com/swdyh/goodbye_chatwork/issues/11)
を参考にしてください。

内容には

* 発生している問題の概要（わかる範囲で構いません）
* 自分の環境の情報
    * OS（Windows 10, MacOSX Sierra, CentOS等）
    * Rubyのバージョン
* 問題発生までの手順
    * 実行コマンド
    * コマンド実行から終了までのログ（Eメールアドレスやパスワードは別のものに置き換えるなどしてマスキングしてください）
    * 等

などを記載してください。

本記事へのコメントでもできる限り対応しますが、可能な方はよろしくお願いします。

## インストール
```console:システム全体にインストール
gem install goodbye_chatwork
```
```ruby:Bundlerを使うならGemfileに
gem 'goodbye_chatwork'
```
## 使い方
### 自分がアクセスできるチャットルーム一覧の出力（room_id, room_name）
```console:console
goodbye_chatwork -i example@example.com -p your_password
```
### 指定したチャットルームIDのテキストログのみをcsvで出力
```console:console
goodbye_chatwork -i example@example.com -p your_password -e room_id
```
### 指定したチャットルームIDのテキストログとファイルを出力
```console:console
goodbye_chatwork -i example@example.com -p your_password -x room_id
```
### ダウンロードフォルダの指定
以下のように`-d`オプションをつけるとそのディレクトリにログがダウンロードされます。デフォルトではコマンドを実行した時点でのカレントディレクトリ直下に`chatwork_logs`ディレクトリが作成され、そこに保存されます。
```console:console
goodbye_chatwork -i example@example.com -p your_password -x room_id -d path/to/log/directory
```
### 自分がアクセスできるチャットルーム全てのテキストログのみをcsvで出力
```console:console
goodbye_chatwork -i example@example.com -p your_password -e all
```
### 自分がアクセスできるチャットルーム全てのテキストログとファイルを出力
```console:console
goodbye_chatwork -i example@example.com -p your_password -x all
```
バイバイチャットワーク
"Adaptive UI"について勉強してみた


##はじめに
この記事を書き始めた2016年7月20日現在。iOSを搭載した端末には様々なものが存在します。
iPhone、iPad、AppleWatchなどなど。
以前は縦向きか横向きか、程度でしかレイアウトを考慮しなくて良かったのですが、現在では様々な端末のサイズに対応しなければなりません。
そこで、登場したのが"Adaptive User Interface"という考え方です。

というわけで、今回のお題は「"Adaptive UI"について勉強してみた」です。

※この記事は「[よくわかるAuto Layout](https://www.amazon.co.jp/dp/B01HG97S7K/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)」を参考にしています。


##そもそも"Adaptive UI"って何？
WWDC2014で登場したAdaptivity（順応性）という概念があり、Adaptivityがあるレイアウト、つまりどのような画面サイズであっても柔軟にレイアウトを維持できることを実現する……それが"Adaptive UI"です。

簡単に言うと、"Auto Layout"や"トイコレクション"という概念を組み合わせることにより、様々な端末に対応したレイアウトを作成するということです。

##Auto Layout
"Auto Layout"とは、Constraint（制約）を用いたレイアウト方法です。
位置やサイズに関する制約を設定することで、異なる大きさの端末でも自動的に制約に合ったレイアウトに調整してくれる機能です。

※本記事では"Auto Layout"に詳細には触れません。

##Size Class
トイコレクションと呼ばれる抽象的な画面情報を持つオブジェクトに含まれる値の１つで、画面の高さと幅を抽象的に表すものです。
"Size Class"は端末の縦と横を小さいサイズを表すCompactと大きいサイズを表すRegularで表します。

こちらの記事にわかりやすい表が載っているので参考にして下さい。
http://dev.classmethod.jp/references/ios8-trait-collection/

※本記事では"Size Class"に詳細には触れません。


##まとめ
"Adaptive UI"を担う"Auto Layout"と"Size Class"。
"Auto Layout"はわりと普通に使っていましたが、"Size Class"に関してはあまりよくわかっていませんでした。
おそらく、私と同じような感じの方は多いのではないか、と思います。
そういう方はこれを期に"Auto Layout"だけでなく、"Size Class"について学んでみるのはいかがでしょうか。
dotnet new コマンドから様々な形式のプロジェクトを作成する。

__2017年03月追記__
.NET Core Tools Preview 2 を対象とした内容となっています。
最新の.NET Core Tools Preview 4 を対象とした内容については
[公式のドキュメント](https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet-new)が詳しいです。

.NET Coreで開発する際に(betaやRCの時は特に) Visual Studio Codeにはプロジェクトテンプレートからプロジェクトを作成する機能がないため、
yeomanなどのスキャフォールディングツールをインストールしてプロジェクト作成してねとよく書かれていたのですが、
そういう類のツールを追加でインストールしなくてもプロジェクトテンプレートを利用したプロジェクトの作成が`dotnet new`コマンドからもできるようです。

具体的には`-t`パラメータに特定の文字列を渡すとそれに応じたプロジェクトが作成されます。

| コマンド | 作成されるプロジェクト |
|:-------|:--------------------|
| dotnet new [-t console] | コンソールプロジェクト|
| dotnet new -t web|ASP.NET Core MVCプロジェクト|
| dotnet new -t lib|クラスライブラリ|
| dotnet new -t xunittest| xUnitテストプロジェクト|

上記を見た限りでは基本的なプロジェクトは作成できます。
が、やはり認証だとかDBアクセス周りを最初から設定したプロジェクトもyeoman の方で作成ができるので、
本格的に.NET Coreで開発するんだという場合は別途インストールしたほうが良さそうですね。

参考
--
dotnet-new
https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet-new
kintone 郵便番号データ（カナとローマ字）の作成

#郵便番号データ

郵便番号データは、いくつか公開されているようですが、元は日本郵便が公開しているcsvデータがベースになっているようです。
[郵便番号データダウンロード](http://www.post.japanpost.jp/zipcode/download.html)
ここで公開されているデータは、データベースとして使うにはいくつか問題があり、加工が必要です。

加工して公開されている郵便番号データは、ほとんどカナデータのようですので、カナとローマ字を統合したものを作ってみます。
データ統合用ツールとしては、ACCESS を使いました。
SQLで処理できないところは、VBA で細かな洗い替えができます。


#カナとローマ字のデータ比較

| DATA | 件数 |市区町村|
|:-:|:-:|:-:|
|カナ１|123,932|札幌市中央区|
|カナ２|123,932|札幌市中央区|
|ローマ字|123,803|札幌市　中央区|


- カナとローマ字を比較すると件数が違います。
- 市区町村の持ち方（空白の有無）

#無理やりキーを合わせて統合

- 町域が長くて、複数行に渡っているものを統合

町域の漢字が異なって、カナが同じものはそのままにしておきます。
問題のデータは、京都の住所ですね。

![image](https://qiita-image-store.s3.amazonaws.com/0/100572/3763b66c-1ef5-f7c5-f203-b9392afc9b06.png)

町域カナをキーにして、複数行になっているものを抽出します。

![image](https://qiita-image-store.s3.amazonaws.com/0/100572/d63bcf89-596b-f242-e16a-4bad53a5d317.png)


複数行の連結は、SQLでは無理なので VBA で行います。

```
Sub update_NK1()

    Dim cn As ADODB.Connection
    Dim rs1 As ADODB.Recordset
    Dim rs2 As ADODB.Recordset
    
    Set cn = Application.CurrentProject.Connection
    Set rs1 = New ADODB.Recordset
    Set rs2 = New ADODB.Recordset
    
    rs1.Open "KEN_ALL_K2_ダブり4カナP2_ID", cn, adOpenStatic, adLockReadOnly
    rs2.Open "KEN_NK1", cn, adOpenKeyset, adLockOptimistic
    
    rs1.MoveFirst
    
    Do Until rs1.EOF
        rs2.Find "ID='" & rs1![IDの最小] & "'"
            rs2![町域] = rs2![町域] & rs1![町域]
            rs2.Update
    
        rs1.MoveNext
    Loop
    
    rs1.Close
    rs2.Close
    cn.Close

End Sub
```


- 市区町村の空白削除
- 町域の"以下に掲載がない場合"を削除
- カナデータをベースにして、ローマ字データを統合
- マッチしないレコードは、都道府県と市区町村のローマ字のみ設定

この辺の処理は、SQL でいけます。

![image](https://qiita-image-store.s3.amazonaws.com/0/100572/2f2b4b14-c762-7937-22ac-8c02444e0d75.png)


- レコードの分割
- csv エクスポート

kintone アプリで読み込めるように、１０万件以下に分割します。

```
SELECT TOP 60000 KEN_NK2.*
FROM KEN_NK2
ORDER BY ID;

SELECT KEN_NK2.*
FROM KEN_NK2
WHERE ID > (select max(ID) from KEN_NK2_1_60000)
ORDER BY ID;
```

#kintone 郵便番号アプリ

郵便番号アプリを用意して、csv を読み込めば完成です。
漢字・カナ・ローマ字が揃っていますので、いろいろ使える用途が増えます。
ただし、ローマ字のビル名などにはデータ自体に間違いもありますので、町域の部分は都度マニュアル修正が必要です。

![image](https://qiita-image-store.s3.amazonaws.com/0/100572/f791e5e3-abd5-4aaa-da6f-1a84e3b4227a.png)


#作成した郵便番号テンプレートと郵便番号データの公開

rex0220 stores で公開しました。
[ kintone 郵便番号テンプレート＆郵便番号データ](https://rex0220.stores.jp/)
今更だけど、手っ取り早くPowershellで並列処理をする方法

# はじめに
本記事で扱うPowershellの並列処理は「マルチプロセス」ではないです。
同一プロセス中で
- Copy-Item
- Move-Item
といったシーケンシャルな動作をするコマンドや、
```function Start-MyFunc{...}```
```c:\work\Start-MyFunc.ps1```
といった自作関数などを並列に動作させたい場合について記載します。

また、本記事でのPowershellはv4.0を利用しています。


# 単純な並列処理
```ps1:parallel1.ps1
workflow Copy-AllItem {
    ForEach -parallel ($count in @(0..99)){
        Copy-Item -path "hogehoge" -destination "fugafuga$count"
    }
}

# 実行
Copy-AllItem
```
これで100件のコピー処理が並列に動作し（たように見え）ます。
もちろん（ほとんど）同時に処理が開始されただけです。
実際にはCopy-Itemの実行完了を待たず、次のCopy-Itemを実行しているだけです。

ですが、実際にはこんな簡単な処理を並列で動作させるケースは稀です。
おそらくは引数で配列を渡すケースが多いでしょう。


# 引数をもとに並列処理を実行
```ps1:parallel2.ps1
workflow Copy-AllItem {
    param(
        $counts
    )
    ForEach -parallel ($count in $counts){
        Copy-Item -path "hogehoge" -destination "fugafuga$count"
    }
}

# 実行
Copy-AllItem -counts @(0..99)
```

はい。普通にパラメーターとして設定してあげればよいです。

ここで幾つか試された方は気付くと思います。
自作関数でForEach -Parallelを実行すると怒られます。
「InlineScriptとして定義しろ」だのと言われ、実際にInlineScript{}で囲むと、今度は「引数が読めない」と怒られます。

う～んこまった。


# 自作関数をInlineScriptとして並列処理するときに引数を読み込ませる方法
```ps1:parallel3.ps1
workflow Copy-AllItem {
    param(
        [PSObject[]]
        $items
    )
    ForEach -parallel ($item in $items){
        InlineScript{ C:\work\Start-MyCopyFunc.ps1 -path $Using:item.fullname -destination $Using:item.destination }
    }
}

# 実行
Copy-AllItem -items MyObjects
```
InlineScriptで怒られたときは「$Using:変数名」にしましょう。

>もっと詳しく知りたい人は以下の記事を参照。
[PowerShell における Windows Workflow Foundation 4.0 (WF) 利用のすすめ](http://tech.guitarrapc.com/entry/2013/09/08/170940)



# まだまだある課題
```ps1:parallel4.ps1
workflow Copy-ItemInVsphere {
    param(
        [PSObject[]]
        $items
    )
    ForEach -parallel ($item in $items){
        InlineScript{ Copy-DatastoreItem "vmstore:\$Using:item.fullname" "c:\work\$Using:item.name"}
    }
}

# 実行
Copy-ItemInVsphere -items MyObjects
```
といったように、PowerCLIで動作させようとしたら「Copy-DatastoreItemなぞ知らん」と怒られました。
workflowオブジェクトの中でPowerCLIモジュールを読み込ませる処理が必要なのだろうか。。

今のところ未解決案件。



　- 以上 -
jQueryのclickイベントが動かない問題

##問題
railsのajaxで生成した要素のclickイベントの処理がはしらない。



##解決方法


はじめはこう書いていたが、

```coffeescript:coffeescript
$('.sample-elem').click ->
    console.log("work")
```


動的に生成した要素に.clickイベントは効かないらしい。
なので以下のように書いた。

```coffeescript:coffeescript
$('#table').on 'click', '.sample-elem', ->
    console.log("work")
```

##参考サイト
[CoffeeScriptでjQuery使うときのメモ](http://www.webopixel.net/javascript/660.html)
[clickイベント(jQuery)の罠](http://www.websuppli.com/javascript/25/)
[Ajaxで生成した要素にjQueryのclickイベントが動かない問題](http://chmod.tech/?p=981)
誰でも出来るRuby on Railsの環境構築手順

### はじめに
Ruby on Railsの環境構築手順がどこも書き方がバラバラで必要のないものまでインストールが促されていたりしてわかりにくい記事が多かったので、一番簡単にMacでRuby on Railsの環境が構築出来る手順について書きたいと思います。
※ Macでのやり方になりますので、Windowsの方はすいません。
* * *

### 1. インストールとかとりあえずやっておくこと
[oh my zshの導入手順](http://ken-sayama.hateblo.jp/entry/2015/08/23/191743)
まずこの記事の通りにターミナルの環境を整えてしまいましょう。
oh my zshを入れることで、ターミナルが初心者でも予測変換が出たりして触りやすくなります。
上の記事では
・コマンドラインツールのインストール
・homebrewのインストール
・oh my zshのインストール
をしています。
以上が終わりましたら以下

```
// $は入力しなくて大丈夫です。
$ brew update
$ brew install git rbenv ruby-build //gitとrbenvとruby-buildをインストール
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ export PATH=“$HOME/.rbenv/bin:$PATH” // パスを書き換える
$ source ~/.zshrc //zshをお使いの場合はこちら(この記事ではzshでの説明なのでこちらになります)
$ source ~/.bash_profile //bashのままの場合はこちら
```

### 2.RubyとRailsをインストールする
先ほどインストールしたrbenvはRubyのバージョンを管理してくれるツールです。
例えばAという案件でRuby2.2.0を使っていて、Bという案件でRuby2.3.0を使っていた時など、プロジェクトごとにRubyのバージョンをrbenvを使えば切り替えることができます。

Rubyをインストールします。

```
$ rbenv install -l //このコマンドでインストール出来るバージョンが確認できます。
$ rbenv install 2.3.0 // Ruby2.3.0をインストールします。
$ rbenv rehash
$ rbenv global 2.3.0 // 基本的に2.3.0を使いますという宣言
$ rbenv local Rubyのバージョン //このコマンドをRubyプロジェクトのドキュメントルートで打てばプロジェクトごとに違うバージョンを指定できます。
$ rbenv rehash
$ ruby -v //ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]のように出ればOKです。
```

### 3.Railsのインストール

```
$ gem install bundler rails //gemのbundlerとrailsをインストール(最新版)
$ rails -v //おそらく5.0.0が出るかと思います。
$ rbenv rehash
```

### 4.Railsを動かしてみる

```
$ mkdir RailsProjects
$ cd RailsProjects
$ rails new app //appという名のアプリケーションを作成します。
$ cd app
$ rails s //railsのサーバーを立ち上げるコマンド、サーバーを止めるには「control+c」
```

以上でRailsのwelcome画面が出れば完成です。

### 5.おすすめのデモアプリ作成記事
・ https://openbook4.me/projects/92
・ http://qiita.com/yoshioota/items/635f33da154cd305bcc3
・ http://qiita.com/garannodou@github/items/ed6dfe4770e03e62b403

### 6.おすすめのRails学習サイト
・ http://prog-8.com/
・ https://www.codecademy.com/
などがいいと思いました。

### 7. おすすめの書籍は
・ [パーフェクトRuby](https://www.amazon.co.jp/%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88Ruby-Ruby%E3%82%B5%E3%83%9D%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%BA-ebook/dp/B00P0UR1CA)
・ [パーフェクトRuby on Rails](https://www.amazon.co.jp/%E3%83%91%E3%83%BC%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88Ruby-Rails-%E3%81%99%E3%81%8C%E3%82%8F%E3%82%89%E3%81%BE%E3%81%95%E3%81%AE%E3%82%8A-ebook/dp/B00P0UR1RU/ref=pd_sim_351_1?ie=UTF8&dpID=51YrQYJdmPL&dpSrc=sims&preST=_AC_UL160_SR122%2C160_&psc=1&refRID=GRJSB8G4F4ABPW0H2WGB)

この二冊がすごく読みやすかったです。
nginx起動、再起動


起動
`$ sudo service nginx start`

再起動
`$ sudo nginx -s reload`


停止
`nginx -s stop`

設定ファイルのチェック
`nginx -t`


設定ファイルの場所

メインの設定ファイル
`cd /etc/nginx/`

各サーバー甩設定ファイル
`cd /etc/nginx/conf.d/`
特定のカラムを元に、1行の書式を変更する

![スクリーンショット 2016-07-20 23.07.13.jpg](https://qiita-image-store.s3.amazonaws.com/0/32839/5a87e5a8-b1e1-9cb5-0401-1ba0f80f8c27.jpeg)

こんなやつ。

+ 条件付き書式を追加する。
+ 範囲を色を変えたい範囲を指定する。  
※表全体でいいと思う。
+ セルの書式設定の条件から「カスタム書式」を選択する。
+ ``=$B2="果物"``　などと入れる。  
※B2（valueの始点）とするのがポイント。B1とすると、1個ずつズレて適用されることになる。
+ 書式設定のスタイルを決定する。
+ 完了ボタンを押す。

以上!
[Objective-C]外部に公開する定数は、UIKIT_EXTERNを使う？？

# 概要
定数については、下記のように認識していましたが、『UIKIT_EXTERN』の方が安全らしい。

・外部に公開する定数は、extern constを付与
・内部でのみ使用する定数は、static constを付与

## UIKIT_EXTERNを利用する例
```:SDTAPIBaseURL.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface SDTAPIBaseURL : NSObject

UIKIT_EXTERN NSString *const SDTBaseURL;

@end
```

```:SDTAPIBaseURL.m
#import "SDTAPIBaseURL.h"

@implementation SDTAPIBaseURL

NSString *const SDTBaseURL = @"https://hogehoge.jp";

@end
```

# 理由
C と C++ の差を吸収してくれるようです。

```:UIKitDefines.h
#ifdef __cplusplus
#define UIKIT_EXTERN        extern "C" __attribute__((visibility ("default")))
#else
#define UIKIT_EXTERN            extern __attribute__((visibility ("default")))
#endif
```

# まとめ
C++ を使う可能性がある、または特に理由がなければ、 UIKIT_EXTERNを使う！
他の理由があれば、ご教授頂ければ幸いです。

# 参考サイト
[When to use UIKIT_EXTERN vs just extern](http://stackoverflow.com/questions/17668018/when-to-use-uikit-extern-vs-just-extern/17669269#17669269)
[Java使いのための「Objective-Cではこう書く」](http://qiita.com/hidekuro/items/650d8aedd28e86d7a2aa)
【Unity】未経験で3Dアクションゲーを作った際のメモ

私は、主にプログラム面で参加しました。
普段の仕事では、ActionScript, JavaScript, PHPを主に使用しています。

3DやC#等、個人的には不慣れな領域でしたが、
インタラクティブなゲームの作り方を含めて非常に勉強になりました。
同時に、チームで物を作る楽しさを改めて実感できて、良い刺激になりました。

以下、メモを箇条書きでつらつら書き、
最後に所感をまとめています。


# アニメーションの状態を取得する
var animator: Animator = GetComponent("Animator");
animator.GetCurrentAnimatorStateInfo(0).IsName("wait");

 - Create State後に、Inspector上でNew Stateに表記されている文字が入る
 - 今回は待機モーションかどうかを取得したかったのでこのように記述
 - 返り値はbool

主にプレイヤーキャラのMechanimが矢印だらけでカオスなことになってしまいました。
（モーション間の遷移をユーザーストレスなくやろうとすると...。
この辺りはスクリプトで管理したいなと思いました。
Mechanimをガッツリいじってモーションのタイミング調整したり～があれば、デザイナーさんに依頼しようと思います。


# SceneManagerでシーン管理
5.2以前の記述方法だとWarningが出ます。

### シーンを読み込む
△　Application.LoadLevel("scene01")
〇　SceneManager.LoadScene("scene01")

### 現在のシーンファイル名を取得
△　Application.loadedLevelName
〇　SceneManager.GetActiveScene().name

※ 現状、どちらの記述方法でも可能（移行期間っぽい）ですが、近いバージョンでなくなりそうです。

# 使用していないアセットをアンロード
 - Resources.UnloadUnusedAssets();
 - 今回はゲームの場面ごとにシーンを作成したので未使用でしたが、今後、中規模以上のゲームをガッツリ作っていく場合、細かいパーツをシーンとして加算ロードなどする場合には必要になりそうです。

## 作成したシーンの構成
 - scene_title
  * タイトル用のシーン。3D背景の上に、2Dのロゴ、スタートボタン、操作説明ボタンを表示。
 - Player
  * JokerScriptを使用したシナリオ再生用シーン。元々ライブラリにあったシーンを使用。
 - scene_game
  * プレイヤーが主に触ることになるゲーム本編のシーン。
 - scene_result
  * ゲームの結果を表示するシーン。

# プレハブをインスタンス化し、子要素に配置
GameObject obj = (GameObject)Instantiate ～

 - 操作説明画像の表示に使用。次回はスライダー等、最適なものを探りたい。

# シーンファイルが競合しないように
複数人で触ることになり、何度か競合してしまいました。
シーンファイルはバイナリの為、マージできないようです。
　→　シーンごとに作成者を分ければいい？
　→　そもそも、シーンをほとんど触らない様な体制で行くのが良い。スクリプトで管理する感じで。

### 対策？
 - Menu > Edit > Project Settings > Editor > Inspector
 - Version Control を Visible Meta Files
 - Asset Serialization を Force Text

へ変更することで、
シーンファイル、プレハブをテキストエディタで確認できるようになりました。
これでも競合しそうですが..。


# プロファイラの使い方
ゲームプレイ時、スマホにたまる熱がヤバかったので何とかしたくて調べましたが、
今回は自分の理解が足りておらず扱えませんでした。。
次回は少しでも理解できるように。

# プロジェクト内に新規作成したファイルは、バージョン管理しないと編集できない？
MonoDevelop使用時、キーボードの反応がなくなる（SVNと連携している場合に限る？
MonoDevelopは軽いので使っていましたが、より扱いやすいIDEがあれば乗り換えようと思います。

バージョン管理の話で言うと、次回は勉強もかねてGitを使っていきたいなと思います。
今回は、[AWS上にSVNを設置](http://qiita.com/off_ants/items/9c9e740fbad0831496de)しました。


# 所感
小規模なものであればデザイナ視点だけでも扱いやすいですが、複数人でUnity上のファイルを編集することになる場合、色々と問題が発生してきました。
中規模以上のコンテンツを作っていくことになる場合（[こちら](#シーンファイルの競合が発生しないように)でも書いた通り）プロジェクトで利用するファイルを管理するプログラマの視点で、デザイナと取り組む体制を整える必要がありそう。
また、Unity云々より、プログラミングのスキルが足りていないことを実感。磨く。
個人的には、クライアントサイドよりサーバサイドを学びたい気分が増してきました..。
どんどんチャレンジしていきたいです。
Pokemon GO が日本の Google Play で配信された事を定期的にチェックするスクリプト書いた。

iTunesSearchAPI でリリースをチェックする人たちは既に居ました。
http://qiita.com/touyoubuntu/items/af5d8e9e69e099945da1
http://qiita.com/mojibakeo/items/1287998f510e7ef7104c
http://qiita.com/haminiku/items/991d4ac380ca3ef29dd1

ただ、Google Play でリリースされたかをチェックしている人が見当たらなかったので、
自分でさくっと bash スクリプトを組んでみました。

#方法
Google Play は公式で API を出しているわけではないっぽいので、
実際のアプリダウンロードページを curl で取得してくる事にしました。
しかし、ぱっと html を覗いてみても日本で配信状態かどうかのフラグが見当たりませんでした。
そこで、Pokemon GO の日本語紹介文に
「日本版は近日公開！もう少しだけお待ちください！」と書かれている事に注目しました。
リリース時にはこの文言は消えているはずなので、これが消えたタイミングで通知を行う様にします。
今回は通知先に Slack を選びました。
(Twitter とかでつぶやく設定にしてしまうと、誤情報を送った時のダメージがすごいと思うので…。)

#実装
```bash
#!/bin/bash

# アプリ
APP_URL="https://play.google.com/store/apps/details?id=com.nianticlabs.pokemongo&hl=ja"
APP_DESC="日本版は近日公開！もう少しだけお待ちください！"

# スリープ設定
SLEEP_TIME="60s"

# slack
SLACK_URL="https://slack.com/api/chat.postMessage"
SLACK_TOKEN="<SLACK_API_TOKEN>"
SLACK_USERNAME="<投稿者名>"
SLACK_ICON_EMOJI=":投稿者のアイコンに使用する絵文字:"
SLACK_CHANNEL="#チャンネル名"
SLACK_TEXT="Pokemon GO がリリースされたかもー?"

SLACK_PARAMS="token=$SLACK_TOKEN&username=$SLACK_USERNAME&icon_emoji=$SLACK_ICON_EMOJI&channel=$SLACK_CHANNEL&text=$SLACK_TEXT"

while : ; do
	if curl -s -S "$APP_URL" | grep "$APP_DESC" > /dev/null; then
		sleep $SLEEP_TIME
		continue
	fi

	echo "$SLACK_TEXT"
	curl -s -S "$SLACK_URL" --data "$SLACK_PARAMS" -XPOST
	break
done
```

#まとめ
Pokemon GO 早くやりたいですねー。

#追記
日本でも配信が開始されましたが、
公開当時は近日公開の文言が削除されておらず通知が来ませんでした…。
jQueryのfor文を使って、選択数に応じたフォームを複数生成する

## はじめに
お申し込みシステムの開発時に、お申し込み客数(selectタグのoptionで人数が選べる)に応じて、名前の入力フォームを人数分出すという実装をjQUeryでしたので、書いておきます。

HTML

```
<select id="form-people" name="peopleNum">
  <option>1</option>
  <option>2</option>
  <option>3</option>
  <option>4</option>
  <option>5</option>
</select>


<!-- 参加者名の入力領域 -->
<div>
  <label">参加者名を入力してください</label>
<div id="template-show"><!--ここにjQueryでテンプレートが呼ばれる--></div>
<!-- 以下がテンプレート -->
<div id="template" style="display: none">
  <div class="template-item">
      <input type="text" name="peopleName[_number_]" value="">
  </div>
</div>

```

jQuery

```js
$(funciton(){
  $('#form-people').on("change", function(){
    var peopleVal = $('[name=peopleNum]').val(); //人数を取得
    var $('#template-show').find('.template-item').remove(); // 初期化
    for (var i = 0; i < peopleVal; i++) {
      var template = $('.template-item input').html().replace(/_number_/g, i); //テンプレートを変数に格納して、[_number_]の部分をreplaceで順になるように置き換え
      $('#template-show').append(template); //appendで#template-showの中にtemplateを追加
    }
  });
});
```

以上で完成です。
http でのアクセスでカメラの映像を取得する

実運用の場合は https でアクセスする環境を用意するはずですので、これは開発時や検証時用です。

Google Chrome で、getUserMedia を使用してカメラ映像を取得する場合は https でのアクセスが必要になりますが、ssh ポート転送を使用することで、http でのアクセスでもカメラの映像を取得することが可能です。


## 例

下記のように ssh ポート転送を指定しておくことで、http://127.0.0.1:18000/ へのアクセスで 192.168.1.105 上の Web サーバにリクエストが転送されるため、https でアクセスしなくてもカメラの映像が取得できます。

```
$ ssh -L 18000:127.0.0.1:8000 ubuntu@192.168.1.105
```


### http で直接アクセスした場合

<img width="857" alt="スクリーンショット 2016-07-20 21.12.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/36202/f185a35c-d89b-8ba0-1349-33d16c4b5f29.png">

### ssh ポート転送を使用して http でアクセスした場合

<img width="853" alt="スクリーンショット 2016-07-20 20.57.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/36202/b7b4706e-8cf8-74ee-036b-0a782aa4833c.png">
iOS:リリースしたアプリをデバッグする

OSX Yosemite(10.10.5)
Xcode 7.2.1
Swift version 2.1.1
を使用しております。

自分のリリースしたアプリをダウンロードして実行。
作成されたセーブデータ等を簡単に抜き出せればいいかもしれませんが
リリースしたアプリを使って（正しくは上書きですが）デバッグする方法です。
大抵の方はわかっているかと思いますが、結構気付かなかったりするものです。

保存した内容はそのままにデバッグできます。
配信アプリで不具合が出た時、確認するのに良いかと思われます。
（元に戻るかは保証はできないので他人の端末を借りて試す場合は注意が必要です。）

リリース時に使用したDistribution Provisioningファイルと同じIDで
Development Provisioningを用意します。

Macに端末を接続してXcodeを起動。
ビルドする際に、用意したDevelopment Provisioningを設定してビルド実行します。
ただし、デバッグビルドとリリースビルドだと挙動が変わる場合があるので(初期化忘れた変数など)、
本番に近いリリースビルドで実行することをお勧めします。
また、ブレークした時に変数の中身は見れませんのでObjective-C(NSLog)、Swift(print)で変数の中を表示して確認。
不具合の状況が分かり次第デバッグビルドに変えるのもいいかと思います。

普通にインストールしたリリースアプリに上書きされるので確認が可能となります。
ただしPush通知は使っているProvisioningファイルの問題で本番環境からの通知はされないので注意です。


Xcodeから上書き実行した場合、
アプリのダウンロードサイトを見るとProvisioningが変わっているので再ダウンロード可能状態になってます。
editorconfig-emacs 使用時にエンコードエラーが発生する問題を（少し以前に）修正しました

数週間くらい前にこの問題を回避する修正をこっそり入れたのですが、よく考えたら潜在的に困ってた人は（特に日本人に）意外と多かったかもしれないと思いついたので、何がどんな感じに修正されたのかを記事として書いておきます。

どんな感じに良くなかったの
===================

editorconfig-mode を有効にし、ある条件でファイルを編集・保存すると、

```
These default coding systems were tried to encode text
in the buffer `xxxxx.txt':
  (undecided (123 . 45678))
```

というエラーが出てエンコーディングをざわざわ選択しなければならなくなり、うるさかったです。
`init.el` で `prefer-coding-system` を `utf-8` にするなどしても解決しません。

これは、ここで書かれているのとだいたい同じ問題です。
http://qiita.com/kotatsu360/items/4f2b6b0b63b77cc8f889
以前 `charset` 設定のサポートを editorconfig-emacs に追加したので、それでこの問題は解決したと思っていたのですが、部分的に解決されてませんでした :hear_no_evil: 


具体的にどんなときに出たの・修正されてどうなったの
=======================

まず、この問題は、一例として以下のような再現手順で発生しました。

1. `editorconfig-mode` を有効にし、
2. 見える場所に `.editorconfig` が配置されて **いない** ディレクトリで、
3. ascii 文字のみが含まれるファイルを開き、
4. 日本語などの ascii 文字以外の文字を追加して保存しようとすると
5. `init.el` にエンコーディングの設定をしていたとしてもエンコーディングを自動で決めてくれない


今回の修正により、以下のようになりました。

1. 見える場所に `.editorconfig` が配置されていない場合、 `init.el` などに書かれている設定をちゃんと使ってくれるようになりました
    * `(prefer-coding-system 'utf-8-unix)` などと書いておけば自動的に utf-8 を使ってくれます
2. `.editorconfig` がある場合、このエラーが引き続き出ることがあります
    * その `.editorconfig` に `end_of_line` の設定があり `charset` の設定がない場合、上の手順で引き続き発生します
    * この場合、 `.editorconfig` に `charset` の設定を書くべきなので、追加すればエラーが出なくなります

こんな感じになりました。


おわりに
======

バグ・改善案・その他の Issue の報告はいつもとてもありがたいです。
Issue tracker としては、 Emacs 固有のものは [editorconfig/editorconfig-emacs](https://github.com/editorconfig/editorconfig-emacs/issues) 、 EditorConfig 全体のものは [editorconfig/editorconfig](https://github.com/editorconfig/editorconfig/issues) があります。
SBCL ＋ ASDF3 ＋QuickLispでプロジェクトの作り方

# 何の記事？

SBCL（Steel Bank Common Lisp)でASDF3 (Another System Definition Facility) と
QuickLispを使ってプロジェクトの作り方からロードの仕方までを簡単に説明します。
プロジェクトの作成にはQuickLispからインストールするcl-projectを使います。

# プロジェクトを作る

## QuickLispのインストール

[QuickLispのWebサイト](https://www.quicklisp.org/beta/)からquicklisp.lispをダウンロードして
REPLで以下を実行します。

```shell-session
(load "quicklisp.lisp")
(quicklisp-quickstart:install)
(ql:add-to-init-file)
```

## cl-projectのインストール

REPLで以下を実行します。

```shell-session
(ql:quickload :cl-project)
```

## cl-projectでプロジェクト作成

REPLで以下を実行します。
カレントディレクトリのfoo/にプロジェクトのフォルダができます。

```shell-session
(ql:quickload :cl-project)
(cl-project:make-project #p"foo/")
```

## .sbclrcの設定

SBCLでASDFがカレントディレクトリを見に行くように設定します。


```cl:~/.sbclrc
;;; The following lines added by ql:add-to-init-file:
#-quicklisp
(let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
                                       (user-homedir-pathname))))
  (when (probe-file quicklisp-init)
    (load quicklisp-init)))

;; ここから
(setf asdf:*central-registry*
  '(*default-pathname-defaults*))
;; ここまでを追加
```

## ASDFでロード

REPLで以下を実行すると作成したプロジェクトをロードすることができます。

```shell-session
(asdf:operate 'asdf:load-op 'foo)
```

# 試してみる

プロジェクトfooを作成して、foo/src/foo.lispを以下のように変更。

```cl:foo/src/foo.lisp
(in-package :cl-user)
(defpackage foo
  (:use :cl)
  (:export :hello))
(in-package :foo)

(defun hello () (print "hello ASDF!"))
```

プロジェクトのフォルダをカレントディレクトリにして、
REPLで以下のように実行する。
（カレントディレクトリ以下を再帰的に探索してくれるらしいので、
プロジェクトのフォルダより上の階層ならどこでもいいはず。）

```shell-session
(asdf:operate 'asdf:load-op 'foo)
```

プロジェクトが読み込まれるので、ここで

```shell-session
* (foo:hello)

"hello ASDF!"
"hello ASDF!"
```

となれば成功。

いくつかのファイルをロードする必要があるときは、foo/foo.asdファイルを変更する。
foo/src/bar.lispを読み込みたければ以下のようにする。

```cl:foo/foo.asd
(defsystem foo
  :version "0.1"
  :author ""
  :license ""
  :depends-on ()
  :components ((:module "src"
                :components
                ;; ここに必要なファイルを追加していく。
                ((:file "foo")
                 (:file "bar")))))
.....
```

# 環境
* OS : Windows 10 x64
* 処理系 : Steel Bank Common Lisp 1.3.7
レスポンシブウェブデザインに使える多機能なカルーセル


いろいろなプラグインを使ってきましたが、今までで一番いろいろできるカルーセルのプラグインです。

## slickについて
公式HPにいろいろなデモが載っているんですが一部を紹介します。
* 横カルーセル
* 縦カルーセル
* カルーセルのグループ化
* ブラウザの横幅で表示個数を変える
* 遅延読み込み
* カルーセルシンク
等など

MITライセンスなので商用利用も可能です。

### 公式HP
http://kenwheeler.github.io/slick/

### GitHub
https://github.com/kenwheeler/slick/

ダウンロードは上記公式HP(下方)かGitHubからお願いします。
ちにみにCDNも用意されているのでHEADで読み込むだけという方法もあります。
URLはGitHubのREADMEを参照してください。

## slickの使い方
GitHubからダウンロードすると以下のファイルが入っているので、適当な所に置いて読み込みましょう。

* slick.css
* slick-theme.css
* slick.min.js

```html
<style rel="stylesheet" type="text/css" src="./slick.css"></style>
<style rel="stylesheet" type="text/css" src="./slick-theme.css"></style>
<script type="text/javascript" src="./slick.min.js"></script>
```

公式HPのデモから抜粋してコードを紹介します。

### カルーセルシンク
asNavForというオプションにシンクさせたいカルーセルのclassを指定するだけ！

```html
<div class="slider slider-for">
	<div><h3>1</h3></div>
	<div><h3>2</h3></div>
	<div><h3>3</h3></div>
	<div><h3>4</h3></div>
	<div><h3>5</h3></div>
</div>
<div class="slider slider-nav">
	<div><h3>1</h3></div>
	<div><h3>2</h3></div>
	<div><h3>3</h3></div>
	<div><h3>4</h3></div>
	<div><h3>5</h3></div>
</div>
```
```js
$('.slider-for').slick({
  slidesToShow: 1,
  slidesToScroll: 1,
  arrows: false,
  fade: true,
  asNavFor: '.slider-nav'
});
$('.slider-nav').slick({
  slidesToShow: 3,
  slidesToScroll: 1,
  asNavFor: '.slider-for',
  dots: true,
  centerMode: true,
  focusOnSelect: true
});
```
### 複数画像を一緒にスライド
slidesToScrollにグループ化したい画像数を指定するだけ！
(slidesToShowも同じ数にしたほうがキレイだと思います)

```html
<div class="slider multiple-items">
	<div><h3>1</h3></div>
	<div><h3>2</h3></div>
	<div><h3>3</h3></div>
	<div><h3>4</h3></div>
	<div><h3>5</h3></div>
	<div><h3>6</h3></div>
	<div><h3>7</h3></div>
	<div><h3>8</h3></div>
	<div><h3>9</h3></div>
</div>
```
```js
$('.multiple-items').slick({
  infinite: true,
  slidesToShow: 3,
  slidesToScroll: 3
});
```

### ブラウザの横幅で表示個数を変える
responsiveオプションの中に表示を切り替える横幅を指定(breakpoint)して、表示個数を設定(slidesToShow)するだけ！

```html
<div class="slider responsive">
	<div><h3>1</h3></div>
	<div><h3>2</h3></div>
	<div><h3>3</h3></div>
	<div><h3>4</h3></div>
	<div><h3>5</h3></div>
	<div><h3>6</h3></div>
	<div><h3>7</h3></div>
	<div><h3>8</h3></div>
</div>
```
```js
$('.responsive').slick({
  dots: true,
  infinite: false,
  speed: 300,
  slidesToShow: 4,
  slidesToScroll: 4,
  responsive: [
    {
      breakpoint: 1024,
      settings: {
        slidesToShow: 3,
        slidesToScroll: 3,
        infinite: true,
        dots: true
      }
    },
    {
      breakpoint: 600,
      settings: {
        slidesToShow: 2,
        slidesToScroll: 2
      }
    },
    {
      breakpoint: 480,
      settings: {
        slidesToShow: 1,
        slidesToScroll: 1
      }
    }
    // You can unslick at a given breakpoint now by adding:
    // settings: "unslick"
    // instead of a settings object
  ]
});
```

## おわり
簡単にカルーセルが作れるので参考にしてみてください。
オプションを設定したのにドットやアローが表示されない！という人はslick-theme.cssが読み込まれているか確認してみてください。
Ruby on Rails | DateTime / Time を マイナス1秒するいろいろな方法

# こういう場合

```rb
datetime = DateTime.now

# => Wed, 20 Jul 2016 20:47:39 +0900
```

以下は全て同じ結果が返る。

## 引き算

```rb
datetime - 1.second

# => Wed, 20 Jul 2016 20:47:38 +0900
```

## advance 

```rb
datetime.advance(seconds: -1)

# => Wed, 20 Jul 2016 20:47:38 +0900
```

## ago

```rb
datetime.ago(1.second)

# => Wed, 20 Jul 2016 20:47:38 +0900
```

# 補足

この記事では DateTime の例で書いたが、Time でも同じく引き算できるっぽい。


# 環境

- Rails 4.2.6








<!-- Update From Qiita API -->

# チャットメンバー募集


何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
CSSだけでアコーディオンを実装

今回はCSSのみでアコーディオンメニューを実装します。

#DEMO
http://codepen.io/takanorioki4/pen/grZpOp

![image.gif](https://i.gyazo.com/409552cfd77e6f48d5b9dde912e883f4.gif)

#HTML
`input`のcheckboxを使って開閉を判断します。

inputの属性をradioにすると、複数あるうちの１つのメニューしか開かないように設定できます。

[radioにした時のDEMO](http://codepen.io/takanorioki4/pen/mExJOZ)

```html
<div class="menu">
    <label for="menu_bar01">MENU01</label>
    <input type="checkbox" id="menu_bar01" class="accordion" />
    <ul id="links01">
        <li><a href="">Link01</a></li>
        <li><a href="">Link02</a></li>
        <li><a href="">Link03</a></li>
        <li><a href="">Link04</a></li>
    </ul>
    <label for="menu_bar02">MENU02</label>
    <input type="checkbox" id="menu_bar02" class="accordion" />
    <ul id="links02">
        <li><a href="">Link01</a></li>
        <li><a href="">Link02</a></li>
        <li><a href="">Link03</a></li>
        <li><a href="">Link04</a></li>
    </ul>
</div>
```


#CSS
`input`のcheckedになっている時だけ要素が表示されるようにCSSで設定します。

`overflow-y: hidden`がないとaタグの中身が見えてしまいます。お忘れなく。


```css
.menu li {
    max-height: 0;
    overflow-y: hidden;
}

#menu_bar01:checked ~ #links01 li,
#menu_bar02:checked ~ #links02 li {
    max-height: 46px;
    opacity: 1;
}
```

以下全文

```css
.menu {
	max-width: 400px;
	margin: 0 auto;
	padding: 0;
}

.menu a {
	display: block;
	padding: 10px;
	text-decoration: none;
	color: #000;
	line-height: 1;
}

label {
	display: block;
	margin: 0 0 2px 0;
	padding :12px;
	line-height: 1;
	color :#fff;
	background :#007bbb;
	cursor :pointer;
}

input {
	display: none;
}

.menu ul {
	margin: 0;
	padding: 0;
	background :#f4f4f4;
	list-style: none;
}

.menu li {
	max-height: 0;
	overflow-y: hidden;
	-webkit-transition: all 0.5s;
	-moz-transition: all 0.5s;
	-ms-transition: all 0.5s;
	-o-transition: all 0.5s;
	transition: all 0.5s;
}

#menu_bar01:checked ~ #links01 li,
#menu_bar02:checked ~ #links02 li {
	max-height: 46px;
	opacity: 1;
}
```
kubernetes(GKE)でgcePersistentDisk使う上で注意すること

二点ほどはまった

1. pod起動後にContainerCreatingから進まない
1. Root以外のユーザーが利用する場合 permissionがない

他にはGKE cluster作るときにdisk read/write scopeがないとダメかも？(自分は最初っからRWで作った)

# pod起動後にContainerCreatingから進まない

[これをコピペしてはまった](https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes/blob/master/jenkins/k8s/jenkins.yaml#L54)
`partition: 1`を指定するとpod statusがContainerCreatingから進まない。
きっちりと調べずにおまじない的になってしまうのはあんまりよくないけど 動いたからよしとする。

deployment.yml

~~~yaml
volumes:
- name: pd-test
  gcePersistentDisk:
    pdName: "pd-test"
    fsType: ext4
    # partition: 1 # サンプルには結構書かれてるけどこれがあると止まるから消す
~~~

# Root以外のユーザーが利用する場合

基本`root`になってるため、mountされたあとのdiskにpermissionがない。
これは`pod.Spec.SecurityContext`にlinux group idを書くことによって解決する。　
http://kubernetes.io/docs/user-guide/security-context/

kubernetes関連深い項目でもdocumentが結構わかりづらい位置にあったりする。
探し方が悪い
㌧

deployment.yml

~~~yaml
#対象のcontainerの中に入って `id`コマンドで実行userのgidを調べておく。
spec:
  securityContext:                                             
    fsGroup: 1000 # container user gid  
  containers: 
    # do_something...
~~~

- - -

最後にGKE上にjenkins clusterを作った時にgcePersistentDiskを使った例です。
https://github.com/Sho2010/k8s-jenkins/blob/master/k8s/jenkins-deploy.yml

GKE上で全てのjenkinsをContainer化するの極めて快適だからこの話もいつかしたい
「オブジェクトの特異クラスをオープンしてそこにメソッドを追加する構文」

`class << object`構文「オブジェクトの特異クラスをオープンしてそこにメソッドを追加する構文」

『プログラミング言語Ruby』にはこう書いてあった。

毎回これ言うの大変…。誰か短い名前教えて :confounded:
[Atom][Remote-FTP]Vagrant に接続できなくなった。

# 突然Vagrant と接続できなくなった。  

それは、突然やってきた。
何もしていない。
何の設定も変えていない。
だけど、Atom の Remote-FTP で Vagrant 上のファイルを操作できなくなった。
なんか解決したので、超ニッチな問題だが書いておく。

# 解決策
```
"keyboardInteractive": true
```
を `.ftpconfig` に追記する。
これだけ。
このシンプルな解決策で、僕の Atom が復活した。

# 参考

https://github.com/mgrenier/remote-ftp/issues/83

このissue の真ん中付近に解決策が載っていた。

# せっかくなので

せっかくなので、keyboard-Interactive について調べてみた。
↓ 答え
http://e-words.jp/w/%E3%83%81%E3%83%A3%E3%83%AC%E3%83%B3%E3%82%B8-%E3%83%AC%E3%82%B9%E3%83%9D%E3%83%B3%E3%82%B9%E8%AA%8D%E8%A8%BC.html

どうやら、より安全に通信するための仕組みらしい。
勉強になった。

# .ftpconfig  
どうせだから、Remote-Ftpの使い方も書いておく。

- Atom に Remote-Ftp というパッケージをインストールする。
- その後、適当にフォルダを作る。
- 素のatom を開く。
- command-o で、さっき適当に作ったフォルダを開く
- メニューバーのPackage Remote-Ftp を開く
- create SFTP config file を選択
- 設定ファイルを書く。
- メニューバーの Package->Remote-Ftp を選択
- connect ボタンを押す

以上！
実物が見たい方は、
http://rfs.jp/sb/atom-github/atom_package_remote_ftp.html
に詳しく書かれています！

ちなみに、僕の設定ファイルはこんな感じ！

```json
{
    "protocol": "sftp",
    "host": "10.0.42.12",
    "port": 22,
    "user": "vagrant",
    "pass": "vagrant",
    "promptForPass": false,
    "remote": "/var/www/html/saipan/",
    "secure": false,
    "secureOptions": null,
    "connTimeout": 10000,
    "pasvTimeout": 10000,
    "keepalive": 10000,
    "watch": [],
    "keyboardInteractive": true
}
```
watch ってなんなんですかね？

============================
追記
時々`disconnect` される。
何なんだこの現象はーーーーーーーーー！
なんとなくMac を再起動してみたけど、原因はそんなことじゃないらしい。
何なんだこの現象はーーーー