OmniAICreator/Qiita-1.07M huggingface dataset:
Ubuntu 15.10 から LINE にアクセスする

Ubuntu から LINE にアクセスしたかったので。

http://altrepo.eu/git/purple-line

今回は、これが良いらしいので、使うことにしました。
libpurple を LINEプロトコルに対応させるプラグインのようです。

`pidgin` はディストリビューションで標準的なメッセンジャーツールですが、
未インストールの場合、apt-get でいれておきます。

```
$ sudo apt-get install pidgin
```

purple-line をコンパイルするには、libpurple の開発環境と Apache thrift が必要らしいです。

## libpurple の開発環境

```
$ sudo apt-get install libpurple0 libpurple-dev libpurple-bin
```

## Apache thrift

```
$ sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev python-dev
```

最新のソースコードをダウンロードしてきます。

http://www.apache.org/dyn/closer.cgi?path=/thrift/0.9.3/thrift-0.9.3.tar.gz

※　私はホームディレクトリに　src というディレクトリを掘っているので、そこに落とします。

```
$ cd ~/src/thrift-0.9.3/
$ ./configure
$ make
$ sudo make install
```

## その他 install しておくべきもの

```
$ sudo apt-get install libgcrypt-dev
```

## purple-line

```
$ git clone http://altrepo.eu/git/purple-line.git/ ~/src/purple-line
```

purple-line を取得してきて、

```
$ cd purple-line
$ make
$ sudo make install
$ sudo ldconfig
```

## 起動

Pidgin を起動し、アカウント種別の中からLINEを選択します。
ユーザー名にメールアドレスをいれ、パスワードを設定すればみることができます。


## References

* http://blog.livedoor.jp/hiroumauma/archives/1710677.html
* https://thrift.apache.org/
* http://altrepo.eu/git/purple-line
* http://www.linuxintro.org/wiki/Error_messages_and_their_solutions
演算子はfreezeしてテストしよう

Rubyで演算子の再定義を駆使するようなコードを書く場合、テスト時にはオブジェクトを`.freeze`させたほうがいいな、と思いました。

# 演算子の再定義について
「C++、Ruby、Python、Swiftにあって、Java、JavaScript、PHP[^1]にない」と、あるなしクイズみたいに有無が分かれる機能が「演算子の再定義」です。

Rubyの場合、「（複合代入を含めた）代入」と「`? :`や`&.`や`||`のようにショートサーキットになる演算子」「スコープの`::`」を除いて、ほとんどの演算子を再定義できます。

## 演算子をグループ分けしてみる
定義可能な演算子をグループ分けしてみます。

```rb
# 算術演算系（+@と-@は単項のプラス・マイナスです）
+ - * / % ** +@ -@

# 論理演算系
| ^ & ~

# 比較系
< <= == >= > <=> === =~

# シフト系
<< >>

# 添字系
[] []=

# 特殊用途
! !~ != ` 
```

よほど狙って特殊なものを作る[^2]のでないかぎり、何かしらのクラスを作る上で、「算術演算系」「論理演算系」「比較系」の演算で両辺を変えてしまうのは**やめたほうがいいです**。「`a + b`」で`a`や`b`が変化してしまうとなると、おそらく大混乱となるでしょうし、比較演算で値が変わってしまうのは（通常の構文中では）もはや悪夢です。

一方で、`[]=`は破壊的操作を前提とした演算子ですし、`Array#<<`に見られるように、シフト演算子も「破壊的な用途に使う」文化のある演算子です。

なお、「特殊用途」に挙げた否定形の演算子や、バッククオート演算子[^3]はかなり癖がありますので、基本的には上書きしないほうがいいでしょう。

# 演算子のSpecを書く際に
演算子を実装するときに、「うっかり元の内容を破壊する形で実装してしまう」というトラブルもやらかしがちかもしれません。ということで、Specを書く際に、本来破壊的操作するはずでない演算子については、テストするレシーバや引数に渡すオブジェクトを事前に`.freeze`するのが楽です。

`.freeze`したオブジェクトに対して（故意・過失を問わず）破壊的操作をかけようとすれば`RuntimeError`となって、そして（`.raise_error`で例外発生自体をチェックする場合は別として）例外が飛べばRSpecもFAILになってくれるので、わざわざ「元のオブジェクトが変化していないか」のチェックを書く必要もありません。

[^1]: 「PHP自体を拡張する」という力技はおいておきます（言語内だけからはできません）。
[^2]: それこそRSpecのように、「Ruby文法を使ってDSLを構築する」とかならまた別かも知れません。
[^3]: バッククオートでくくった文字列の動作も演算子として入れ替えられる…のはいいのですが、Qiitaのマークアップと被ってしまってインラインで書けないです。
アプリ作成時にレイアウトファイルでRendering Problemsが出た時の対処

Rendering Problemsの解決方法を簡単に記載する。

#環境
Android Studio 1.5.1

#エラー内容

アプリ作成時に以下のようなエラーが出る時があった。

```
Rendering Problems The following classes could not be instantiated:
- android.support.v7.app.WindowDecorActionBar (Open Class, Show Exception, Clear Cache)
 Tip: Use View.isInEditMode() in your custom views to skip code or show sample data when shown in the IDE  Exception Details java.lang.NullPointerException   at android.support.v7.app.WindowDecorActionBar.getDecorToolbar(WindowDecorActionBar.java:241)   at android.support.v7.app.WindowDecorActionBar.init(WindowDecorActionBar.java:198)   at android.support.v7.app.WindowDecorActionBar.<init>(WindowDecorActionBar.java:190)   at java.lang.reflect.Constructor.newInstance(Constructor.java:526)   at com.android.layoutlib.bridge.bars.AppCompatActionBar.<init>(AppCompatActionBar.java:89)   at com.android.layoutlib.bridge.impl.Layout.createActionBar(Layout.java:237)   at com.android.layoutlib.bridge.impl.Layout.<init>(Layout.java:151) Copy stack to clipboard  Failed to find the style corresponding to the id 2147418176 (6 similar errors not shown) Failed to load AppCompat ActionBar with unknown error. (3 similar errors not shown)
```

#対処方法
res/values/style.xmlファイルを編集する。

以下の1行を

```xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
```

次のように変更する。

```xml
<style name="AppTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar">
```

以上
CentOSからmailコマンドでファイルの中身を本文にいれてメール飛ばすときに、本文にならず添付ファイルになっちゃうのをとりあえず解決


~~~
cat $ERR_TXT | mail -s $SUBJECT -r $FROM_ADDR $TO_ADDR
~~~

みたいな感じで、サーバからファイルの内容をメール本文にしてメールで飛ばすときに、
メール本文が空っぽになってしまって、かわりによくわからんバイナリファイルが添付でくっついてきた。

#対応

結論だけ先に書くと、catコマンドのオプション -v を使えば解決した。

~~~
cat -v $ERR_TXT | mail -s $SUBJECT -r $FROM_ADDR $TO_ADDR
~~~

参考：
[CentOS 6.xのmailコマンドでメールを送信すると添付ファイルになる場合の対処](http://nmtysh.hatenablog.com/entry/2014/01/26/235000)
[mailx コマンドで日本語を本文に入れると添付ファイルになってしまう？]
(http://zisakuzien.exblog.jp/20406030)

ただし、今回の件は上記2件とはちょっと異なる状況だったのでメモ。

#やろうとしたこと。
cronで動かしてるバッチファイル（シェルスクリプト）を使って、定期的にsftpでとあるログファイルをログ保存サーバへ飛ばしている。
sftpの処理に失敗したら、失敗した旨の標準エラー出力をメール本文に貼りつけてメールで飛ばしたい。

#つまったこと。
動作確認のために、わざとログ保存サーバのiptablesで飛ばし元サーバからのアクセスを遮断して、
sftpの処理に失敗したことを正しくメールで通知してくれるか確認しようとしたら、
メール本文がからっぽで、かわりに添付ファイル(.bin)がくっついてた。なんだこれ？

#切り分け。
###1 sftpが失敗している標準エラー出力をちゃんとシェル変数にしまっているか？
こんな感じで取得させてる。

~~~
SFTP_RESULT_TXT=`sftp -oIdentityfile=$SSHKEY -b $BAT sftpuser@$REMOTE_LOG_SERVER 2>&1`
SFTP_RESULT=$?
~~~

で、SFTP_RESULTが0じゃなかったら、メール通知、っていう流れ。
成功したらそのまま（メール通知なし）。

で、ちゃんと取れてることを以下のように確認。

- 処理の中で、そのまま \$SFTP_RESULT_TXT を標準出力に吐かせてみて出力されることを確認。
- \$SFTP_RESULT_TXT をメール本文になる \$ERR_TXT に吐かせてみて出力されることを確認。

どちらも問題なし。

※ちなみにエラー内容は以下のもの。普通のsshのタイムアウト（ホスト名はてきとうです）。

~~~
ssh: connect to host hogehoge port 22: Connection timed out
Couldn't read packet: Connection reset by peer
~~~

###2 取得したエラーメッセージはメール本文用のテキストファイルに書かず、そのまま$ERR_TXTをmailコマンドで送信してみる。

こちらもちゃんとできる。
もちろんこちらの実施結果では、メール本文にsftpが失敗した時の標準エラー出力は表示されない（テスト用の文章のみ）。

###3 想定した流れでメールを飛ばしてみる。

 => やっぱり添付ファイルになる！なんぞこれ。

#わからんのでググりましょう。

素直に先人の知恵を借りましょう。でさくっとヒットしたのが参考の2ページ。もいちど貼る。

参考：
[CentOS 6.xのmailコマンドでメールを送信すると添付ファイルになる場合の対処](http://nmtysh.hatenablog.com/entry/2014/01/26/235000)
[mailx コマンドで日本語を本文に入れると添付ファイルになってしまう？]
(http://zisakuzien.exblog.jp/20406030)

うーん、パッと見、どちらもlocaleを問題にしてるみたいだけど、関係あるかなー、、と思いつつわからんので試してみると、
正しく飛びました。ちゃんちゃん。という流れでした。

#考察
標準エラー出力をシェル変数経由でファイルに吐かせたのが問題だったのでしょうか？
ちなみにcat -v のmanを見ると、

~~~
-v, --show-nonprinting
       use ^ and M- notation, except for LFD and TAB
~~~

とのこと。
[WEBで確認](https://linuxjm.osdn.jp/html/gnumaniak/man1/cat.1.html)すると、

~~~
-v, --show-nonprinting
<LFD> と <TAB> とを除く制御文字を `^' 表記を使って表示する。 高位ビットがセットされている文字は、前に `M-' を置いて表わす。
~~~

とのこと。。うーん、制御文字の問題？？
mongodb

# commands
## backup MongoDB data
- running on the same machine and on the default port of 27017
- backup data is dumped on dump directory.

```
mongodump -u <username> -p <password> -h <hostname> --port <port> -d <database> --out <outputfile>
```

## restore MongoDB data
- restore MongoDB data from specified directory

```
mongorestore -u <username> -p <password> -h <hostname> --port <port> -d <database> <restore data directory path>
```


## start mongod daemon with specified configuration file

```
mongod --config /usr/local/etc/mongod.conf
```

## execute mongodb command from javascript file

```
mongo <database host ip or fqdn>/<database name> <javascript file path>
```

## add a new field all documents in a collection
- https://glassonionblog.wordpress.com/2012/03/19/mongodb-adding-a-new-field-all-documents-in-a-collection/

```
db.<collection name>.update({},{ '$set': {"<field.field": ""} }, false, true)
```

## find minimum value from nested object

document example (sample collection)

```
{
  "_id": ObjectId("xxxxxxxxxx"),
  "pair": {
    "x": 12,
    "y": 34
  }
}
{
...
}
```

find minimum value of x

```
db.sample.aggregate([
{
  $group: {
    _id: {},
    minX: {
      $min: "$pair.x"
    }
  }
}
])
```

find minimum value of x and minimum value of y

```
db.sample.aggregate([{
  $group: {
    _id: {},
    minX: {
      $min: "$pair.x"
    },
    minY: {
      $min: "$pair.y"
    }
  }
}])
```

## GridFS
### remove file by name

```
mongofiles -v -d <database name> delete <filename>
```
Mac OS XのAuto Correctで勝手に修正されて腹ただしい単語まとめ

Mac OS X El Capitanから、Auto Correctという機能が実装されました。
名前の通り、スペルが間違っていれば自動的に修正してくれるというものです。
ところが、ソフトウェア界隈の一般的でない用語に対してもガンガン修正をかけてくるので、twitterに呟いたら別の単語になっているなど、Auto Typoとしての性能を遺憾なく発揮しています。
例えば、「qiitaでgolangの記事書いた」と書こうとすると、「quiteでgaolingの記事書いた」に修正されます。意味が分かりませんね。

ここではAuto Correctの極悪非道なる行いが風化してしまわないよう、悪行の数々を記録していきたいと思います。

| 元の単語 | 意味 | 腹ただしい修正 | 修正後の意味|
|---------|-----|--------------|-----------|
|npm|node package manager|nam|ナミビアの国名コード|
|golang|go言語|gaoling|中国の女子バドミントン選手|
|cacoo|図作成webサービス|cache|キャッシュ
|trello|TODO管理webサービス|troll|北欧伝説に登場する怪物|
|qiita|ここ|quite|非常に、完全に|

許せませんね。
皆さんもやられたら教えてください。
Swiftにおける良いコードとは何か

株式会社[Nanameue](http://nanameue.jp/?lang=ja)
iOSエンジニアの[bati](https://www.facebook.com/hiroshi.chiba.54)です
Objective -CからSwiftに乗り変えて2か月。
今は新規プロジェクトをPure Swift でやっている状況で、
そろそろ、Swift最高じゃんもうObjective-Cには戻れないわ
と感じている頃です。

Swiftは超べんりです。
Objective-Cに比べてはるかにいろんな書き方ができて楽しい毎日を過ごすことができます。
しかし、デメリットとしてObjective-Cに比べてはるかに表現力が高い分、いろんな書き方があって結局どれがいいのか迷う事があります。

例えば、変数の定義の仕方にしても文字列の場合

```let string: String = "a"```
とも書けますし
```let string = "a"```

とも書けます。

Arrayの場合

```let array: Array<String> = ["a"]```
```let array: [String] = ["a"]```
```let array = ["a"]```

と3種類の書き方があります。

これだけ表現の仕方が多様だと、チームで開発している時など、
様々なArrayの宣言コードがいたるところに散乱しているような状態になってしまいます。

一人で開発する分にはいいのですが、チームで開発する時に、統一性のないコードになってしまうという問題が発生してしまいますね。

この問題をどう解決していけばいいのか。
僕なりの良いSwiftコードにするための3か条を発表します。

***1.誰のための良いコードか考えろ***

あなたが書いているコードは誰のためでしょうか？チームメンバーのためでしょうか？
自分のためでしょうか？初心者教育のためでしょうか？

多くの人は、チームメンバーのためだと思います。
チームメンバーのために良いコードを書くためには、良いコードとは何かチームの中で定義する必要があります。
一番大事なことなチームメンバーがストレスなく開発できることです。
第3者から見てイケてないコードだとしても、チームメンバーにとってストレスなく読め、最速ででき、メンテナンスがしやすいコードがチームにとっていいコードだと僕は思うのです。

コード数が少ないものがいいコードなのか? 少し長くなってもいいから可読性を意識したものが良いコードなのか？とにかくnil safe, 型safeなコードでしょうか？クロージャの書き方どうしよう？

とにかくスマートに書きたい、短くスッキリ書く事が良いコードだとしたら、
変数の宣言は簡潔に

```let array = ["a"]```
とすべきでしょう

またif文なども、なるべくelseが多くならないように、条件式を工夫するなども必要です。
また、なるべくオプショナルバインディングを使わない工夫も必要かもしれません。
オプショナルバインディングは便利ですが、冗長なコードを増やしてしまいます。
いたるところに
```if let a = b { }```
があると単純な作業なのにコードが長くなってしまいます。
本当に必要な時のみ使うべきでしょう


可読性をとにかく意識したいのであれば、
if文などもelse文が多くなったとしても丁寧でわかりやすい条件で書くべきかもしれません

どんなコードも一長一短あり、チームとしてどんなコードがいいのか、徹底的に話あう必要があります。
それはSwiftの高い表現性ゆえにです。高い表現性ゆえチームとして制約を設けないと、統一性のない、メンテナンスしにくいコードになってしまいます。

Wantedlyさんのコーディング規約などを参考にしながら、決めるというのもいいかもしれません。
(http://qiita.com/susieyy/items/f71435cc962e70d81b37)


***2. チームでコーディング規約を決める際はストレスなく書ける、読めるに重きをおけ***

Swiftは表現力が高いゆえに書きたいように書けます。なるべくチームメンバー全員がストレスなく書きたいように書けるにポイントを落としどころに決めたコーディング規約を作ることができるのはSwiftならでばでしょう。
書きたいように書く、エンジニアがこれほど生産性を上げられるものはないと思います。

**書きたいように書く**

書きたいように書く、これはもはやエンジニアの趣味の領域です。それはエンジニアの心であり情熱であり芸術性を帯びた何か得体の知れないものです。
この何か得体の知れないものを共有しましょう。
ちなみに僕はプロトコルの多様はあまり好きではありません。理由は特にないです。
感覚です。何か```protocol extension```を見かけると多少ムカつきます。
これはまさに得体の知れない何かだとしか説明がつきませんね

**読める**
逆説的な話になりますが、ルールはたくさん設けた方が、ストレスなく読めます。
書きたいように書くけどルールはたくさん設けるべきでしょう
ルールに縛られた方が実装も迷いなくできます。


***③　感謝と思いやりの精神***

誰かが良いコードを書いてくれたら最大限の敬意を持って感謝しましょう。
How great code it is!!!
君のおかげで今日も明日も爽やかで良い1日を過ごせそうだ
そんな気持ちで良いコードをmergeしてあげましょう
そして言葉で伝えましょう。
あなたの書いたコードを愛していますと

そして自分がコードを書くときは、チームメンバーのことを思いやりながら愛しながら書きましょう。
僕のコードはこのすばらしいチームのためにあるのです。ああなんてすばらしいチームだ
と思いながら書きましょう。

その瞬間コードの神様が天から降りてきて、あなたの頭脳にささやかなヒラメキと、
コードを書く情熱を授けてくれるでしょう

その瞬間の積み重ねが人類のテクノロジーを一歩前へ、また一歩前へと進める動力源となるのです


すばらしいSwiftライフを


またこちらも合わせてどうぞ

[Skyland Tech Blog](http://skytechblog.hatenablog.com/)
AWSリザーブドインスタンスについて



# 概要
1年契約または3年契約でインスタンスを予約しておくもので、見返りとして通常のインスタンスより割引が受けられるというもの。

* EC2、RDS、ElastiCache、Redshiftで選べる
* 1年か3年の利用コミットを選べる
* 1年契約だと2割〜5割引きくらいになる
* スケールアップした場合も、他に条件があうインスタンスがあれば、そちらに割引料金が適用される
![スクリーンショット 2016-05-01 14.49.05.png](https://qiita-image-store.s3.amazonaws.com/0/18614/2402bd41-177e-c31a-5bbb-97032150f172.png "スクリーンショット 2016-05-01 14.49.05.png")



# 1年or3年
* 3年RIの支払い総額と、1年RIを2回買った場合の支払総額は同じくらい
* 途中でAWSの価格改定があって値下げされても、RIの場合は購入時の割引単価が適用されるので注意

# 3種類のRI
## 1. 前払いなし（No Upfront）
* 予約金なし
* 割引単価での毎月の支払い（割引率：低）
* 利用コミットによる割引単価適用
* ※前払いなしは1年RIのみ選択可能

## 2. 一部前払い（Partial Upfront）
* 予約金あり
* 割引単価での毎月の支払い（割引率：高）
* 既存RIの「重度利用」と同じ考え方

## 3. 全前払い
* 予約金あり
* 毎月の支払いなし
* 年間時間課金分の一括前払い

※1と2については毎月「割引単価 × 24時間 × 日数」を請求


# RI向きのインスタンス
* 定常的に起動しているサーバーやDB
* オンデマンドとの損益分岐点を上回る利用率がありそうなサーバーやDB


# 購入・適用にあたって
## 購入画面（RDS）
![スクリーンショット 2016-05-01 14.52.55.png](https://qiita-image-store.s3.amazonaws.com/0/18614/ecafccc3-4e5e-0f8d-d4fa-5ed1d1f4913f.png "スクリーンショット 2016-05-01 14.52.55.png")



## 購入時にインスタンスの停止や再起動は必要ない
* まずはオンデマンドインスタンスで始めて、様子を見てからリザーブドインスタンスを適用することも可能

## インスタンスIDを指定する必要はない
* 条件に合致するインスタンスがあれば自動的に適応される
* 割引の権利はAWSアカウント単位で自動的にひもづく


## 適用後のAZの変更など
* 適用後のRIのAvailability Zone変更可能
* 適用後のClassic/VPCの変更可能
* ただし、変更できない場合もある（特に変更成功/失敗の通知はないのでしばらくしてからステータスを確認する必要がある）
* 変更失敗しても、時間をおいてやり直すと成功することがある


## スケールアップなどインスタンスタイプ変更時
* スケールアップすると適用が外れるので注意！
* なので1年以内にスケールアップする可能性があるかどうかはRI購入前によく検討する
* ただし、インスタンスタイプ変更後、新たにRI適用対象の別のインスタンス野立てれば自動的に割引適用される



# RIを売る
## 前提条件
* 購入後30日以上ステータスがアクティブだったRI（前払い金を支払い済み）
* RI MarketPlaceに登録済（米国の銀行口座が必要）
* 自由に設定できる販売価格はRIの前払金のみ（AWSの手数料はその12%)
 時間課金価格は購入時の料金が適用




# （補足）逆にオンデマンドインスタンスの使いドコロ
* 1年間のうち25%未満しか使わない倍
* 一時的/一定期間必要なインスタンス
 * ピーク対応で増設するサーバー
 * キャンペーンサイト
 * 開発検証サーバー


# 参考
http://www.slideshare.net/AmazonWebServicesJapan/20150325-aws-blackbeltrispotpublic
http://www.slideshare.net/HiroshiTakayama/jawsdays20140315-publix
jQeuryのモジュール



### アコーディオン

- 引用：<a href="https://syncer.jp/accordion-content" target="_blank">初心者にも分かる！なアコーディオンの作り方</a>
 - セレクター部分を一部追加 
```
$(function(){
	$('dt , .btn-close').click(function() {
		$('dd').slideToggle();
	});
});
```
CSSの備忘録


### タグの入れ子ルールまとめ
- 引用：<a href="http://matome.naver.jp/odai/2137515842633207101" target="_blank">【HTML】 もう悩まない！タグの入れ子ルールまとめ - NAVER まとめ</a>
 - dtにはインライン要素。dd内にはブロック要素は可能。

### before擬似要素 …… 要素の直前に内容を挿入する
- 引用：<a href="http://tenman.info/labo/css/?p=401" target="_blank">:before content image のサイズを指定する – CSS note</a>
 - contentの他にdisplay:blockを指定しないとbackgroundは反映されない。
StructでObjectをソートするのが便利

executed_dateとaction_dateで以下のObjectをソートしたいです。

```ruby
system_log = SystemLog.create type: "clean", executed_date: Time.today
user_log= UserLog.create action_type: "create user", action_date: Time.today.yesterday,:info: "info"
```
Structでソートしたら簡単になると思います。

```ruby
Log = Struct.new :log, :date
logs = Array(Log.new(system_log, system_log.executed_date), Log.new(user_log, user_log.action_date)
logs.sort_by(:&date)
```
Objective-C:バージョンを取得する

アプリ起動時にバージョンを表示したい、
サーバーから対応バージョンを取得して起動しているアプリのバージョンと比べたいなど
バージョンを取得したい時があるかと思います。

アプリ内のどこかにプログラムで定義している方もいるかと思いますが、
<img width="826" alt="ver_bandle.png" src="https://qiita-image-store.s3.amazonaws.com/0/120102/738197f1-2fe4-f306-21a3-cd6ee1f97bef.png">
Xcode(7.2.1使用)のTARGET設定のGeneralに表記されている
　Version
　Build
に記載してある情報を取得したいと思います。

versionは主にアプリ配信時のバージョンです。申請時はiTunes Connectに登録したバージョンと一致してないといけません。

buildは、アプリのビルドのバージョンで、iTunes Connectにアップしたバージョンと被らなければ大丈夫です。
プロジェクト作成時は値が１になっているかと思います。
連続した数字で大丈夫のようですが、私は配信バージョンの最後にbuild番号を入れてアップしております。
（なぜそうしているかは[おまけ](http://qiita.com/t_punch/items/1019b47f0cbfe1e39664#%E3%81%8A%E3%81%BE%E3%81%91)で説明）

**バージョン：Version**
`NSString *ver = [[NSBundle mainBundle] infoDictionary][@"CFBundleShortVersionString"];`

**ビルドバージョン：Build**
`NSString *ver_b = [[NSBundle mainBundle] infoDictionary][@"CFBundleVersion"];`

このように取得できます。
必要に応じて好きな方を取得して使用してください。


#おまけ

versionを取得するのとは別ですがAppleのTestFlight外部配信、
審査が通ればBuildを上げるだけでよほどのことがない限り審査無く外部配信ができるようです。
例えば
TestFlight審査のためにアプリをアップ。Versionは1.0.0　Buildは1.0.0.0
　↓
審査が通ってTestFlight外部配信。
　↓
問題を修正して再度配信したい。
　↓
毎回配信Version上げて審査していられないので、
Build（1.0.0.0 → 1.0.0.1）を変更してアップロードします（以後1.0.0.＊（＊の数値を上げていく））
よほどの事がない限り即配信が可能かと思います。

*buildバージョン設定をversionの値と同じにしてその後ろに設定している理由*
TestFlight配信でどれだけ数値が上がるかわからない
バージョンアップを重ねる毎にどんどんbuildの数値が上がっていくのが嫌なのでそうしてます。
また、配信バージョンがかわればbuidのバージョンが被っていないので０から振り直しがでできます。
ログを残したければ、この配信バージョンではbuildはここまで行ったか、、という記録も残せます。
（自動ではないので自分で記録しないといけませんが）
[swift] status barの文字色を白にする

iOS7からは、ステータスバーの文字色はViewController単位で設定するようになったようです。
ViewControlelrに以下のメソッドを追加すると、文字色が白になります。

```swift
# HogeViewController.swift:

  override func preferredStatusBarStyle() -> UIStatusBarStyle {
    return UIStatusBarStyle.LightContent
  }
```

# 参考

- [iOS 7でのStatusBarの文字色、非表示](ehttp://blogios.stack3.net/archives/2016)
ubuntu 15.10 における resolvconf まわりの初期設定

私の環境だと、 ubuntu 15.10 におけるデフォルトの resolvconf 設定だと、
頻繁に google.com の名前解決ができなくなる現象が発生した。

これを解決するために、以下を実施した。

* eth0 に固定アドレスを設定
* `/etc/avahi/avahi-daemon.conf` の domain-name の箇所を `domain-name=.alocal` と修正
* `/etc/nsswitch.conf` を修正
* `/etc/NetworkManager/NetworkManager.conf` の `dns=dnsmasq` をコメントアウト


## eth0 に固定アドレスを設定

eth0 に固定アドレスを設定するようにした。
(`/etc/network/interfaces`, `/etc/resolvconf/resolv.conf/base` などを設定した)

例:

* /etc/network/interfaces

```
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 192.168.11.2
    netmask 255.255.255.0
    gateway 192.168.11.1
    dns-servers 8.8.8.8 8.8.4.4
```

結果として、 `/etc/resolv.conf` が生成される

設定を有効にするには、 `resolvconf` コマンドを実行すれば良い。

```
$ sudo resolvconf -u
```


## `/etc/avahi/avahi-daemon.conf` を修正


`/etc/avahi/avahi-daemon.conf` の `# domain-name=local` の箇所に、

```
domain-name=.alocal
```

と追記。

## `/etc/nsswitch.conf` を修正

`/etc/nsswitch.conf` の次の箇所を修正する。

変更前:

```
files mdns4_minimal [NOTFOUND=return] dns mdns4
```

変更後:

```
files dns
```


## `/etc/NetworkManager/NetworkManager.conf` の `dns=dnsmasq` をコメントアウト

`dns=dnsmasq` をコメントアウト。



## Trouble Shooting

> "ping: unknown host google.com" but IP's works fine

の時は `resolvconf` を入れなおした。

```
sudo apt-get remove --purge resolvconf && sudo apt-get install --reinstall resolvconf
```

## References

* http://www.tecmint.com/set-static-ip-address-in-ubuntu-15-10-server/
* http://www.asterisk-works.jp/wiki/index.php/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E8%A8%AD%E5%AE%9A(Ubuntu)
* http://d.hatena.ne.jp/zzkater/20140713/1405250096
* http://askubuntu.com/questions/368435/how-do-i-fix-dns-resolving-which-doesnt-work-after-upgrading-to-ubuntu-13-10-s
* http://askubuntu.com/questions/455338/ping-unknown-host-google-com-but-ips-works-fine
* http://askubuntu.com/questions/465729/ping-unknown-host-google-com-in-ubuntu-server
* https://forums.ubuntulinux.jp/viewtopic.php?id=17345
* http://geektrainee.hatenablog.jp/entry/2014/09/23/002443

* https://forums.ubuntulinux.jp/viewtopic.php?id=16090
* http://stuartfeeser.com/2013/02/11/ubuntu/
* http://askubuntu.com/questions/688557/after-15-10-upgrade-networkmanager-using-30-cpu

* http://askubuntu.com/questions/134121/how-to-restore-recreate-etc-resolv-conf-files
確認画面がある場合のcarriewaveで画像アップロード

new→confirmation→completeとアクションを移動するイメージ


#確認画面のview (confirmation.html.erb)

```
#確認画面用の画像
<%= image_tag(@user.image.url) %>
#キャッシュファイル名を渡す
<%= hidden_field_tag :"cache[image]", @user.image.cache_name %>

```



#送信画面 (コントローラー内のcompleteアクション)

```
#キャッシュから画像を復元する
@user.image.retrieve_from_cache! params[:cache][:image]
@user.save!
```
jqGridメモ

jqGridのオプションは、jqGrid wiki http://www.trirand.com/jqgridwiki/doku.php に全て載っているわけではなく。
# 移動不可列の定義
sortableで移動不可列を定義できる。

```js
$('#hogeTbl').jqGrid({
　　　　// 移動不可列を定義
　　　　sortable: {
　　　　　　　　exclude: '#hogeTbl_CHECK'
　　　　},                
})
```
# データを一括して読み込む
(一応、wikiに記述はあるが、やや分かり難いような)
jqGridはデータを一括して読み込むことができる。

```js
$('#hogeTbl').jqGrid({
　　　　// データを一度に読み込み、100行ごとに生成する
　　　　loadonce:true,
　　　　scroll:1,
　　　　rowNum:100,        
})
```

## リロード時のオプションについて
jqgrid reloadGrid with loadonce set to true
http://stackoverflow.com/questions/5397671/jqgrid-reloadgrid-with-loadonce-set-to-true

# 固定列について
jqGridは固定列(Frozen Cols)が利用できるが、DOMで実体化したテーブルに対しての固定列化処理となる為、これは動的読み込みと相性が悪い。
この場合、SlickGridの方がいいかも。

# free版
最新のjqGridは有償だが、4.7ベースは無償(MITライセンス)。
https://github.com/free-jqgrid/jqGrid
【Raspberry Pi3】購入と初期セットアップ

![ras1.jpg](https://qiita-image-store.s3.amazonaws.com/0/111861/6b9d7c13-19c9-a3f1-b8fd-d096c92274d5.jpeg)

折角の何も予定のないGW（５月１日現在）どうせなら勉強しよう！とゆうわけで
社内でじわじわ人気の出てきてるRaspberry Piに手を出しました。

今回ど初心者な自分が備忘録としてQiitaに残しておこうと思います！

@@編集５月２日
設定後、SDの容量がおかしかった為再設定しました。
その再設定内容で編集しました。

#目標
最終的な目的はIoTとして何かできればと漠然的な目的です。
しかしいろんなタスク等を考慮して５月の目標として以下を設定。
1.購入（一人で秋葉いって購入）
2.OSインストールして起動
3.初期設定（ネットワークや日本語化）

#必要なもの
買わなければ何も始まらないので、４月３０日に秋葉原に行ってまいりました。
何気に初めての一人秋葉原。そもそも何が必要なのか....
下記リンク先はラズパイ２についての記事ですがこちらと
ラズパイ公式サイトを参考にリストアップしました！

>[ラズベリーパイを始めるためには何が必要なの？【入門グッズ編】](http://liginc.co.jp/231837)

・Raspberry Pi3 Model B(社内ラズパイ先駆者達が２の為３に挑戦）
・MicroSDカード　８G（class10)
・USB電源アダプタ(5V/2.5A対応？）、マイクロUSB
・モニター
・キーボード
・マウス
・HDMI
・LANケーブル
・ラズパイケース

３になってwifi等は標準搭載になっているらしいです。
電源アダプタについて2.5A対応がなかったのでお店の方に聞いたら
大抵の方は2A対応を購入しているとのことなので2A対応のものを購入。
ちなみにラズパイをいじり倒す時は社内でと決めているので
社内にすでにあるモニター、キーボード、マウス、HDMI、LANケーブルは
今回購入しません。
余談ですがモニターでなくてもテレビでもいけるらしいですね！

とゆうことで秋葉に買いに行ってまいりました。
総額としては１万もいってないですね。
お店によってはラズパイの価格がちょっと違うので
秋葉原堪能がてらぐるぐる回ってもいいかもしれません。
途中LED(Lチカさせたい...)やスイッチ（押したい...)と遭遇し、
購買意欲に駆られましたが私にはまだ早い。
ぐっとこらえて秋葉を後にしました。
購入してきた商品はトップにある画像のものです。


#OSインストール
購入後寄り道をしつつ会社へ。
休みの日だろうとお勉強させて貰えるので本当にありがたいです。

早速購入したものを開封し、テンションマックスでした。
社内先駆者達の作業を遠目にみていた記憶と、
先駆者に借りた本（２のやつですが）と、
ネット上にすでにあがっている記事等を活用させていただきました。

>[Raspberry Pi を NOOBS LITE ではじめる](http://video-36.hatenablog.com/entry/2014/07/23/173234)

##SDフォーマット
初回フォーマット時の設定が悪かったのかSDの容量がまさかの60M。
お話になりませんわ...。
なので別方法でフォーマット及びインストールします。
※wifiが使える環境前提ですのでお気をつけください

SDフォーマットのソフトは下記からダウンロードします。
今回MACは別作業で使っていた為、Windowsで作業しました。
>[SD Card Formatter](https://www.sdcard.org/downloads/formatter_4/)

インストール後は解凍を行ってください。
解凍後、SDを差し込み、ソフトを起動します。

フォーマットの設定は３つほどありますが、
今回私は
・消去設定：クイックフォーマット
・論理サイズ：ON
でいきます。（Offでも可能なようです。）
![ras1.png](https://qiita-image-store.s3.amazonaws.com/0/111861/1eed4c28-20fe-97e4-4728-e511410f7eed.png)


##OSダウンロード
OSは公式サイトから
>[公式ダウンロードサイト](https://www.raspberrypi.org/downloads/)

今回はNOOBS LITEをダウンロードします。
ダウンロード後は解凍し、SDにファイルをコピーしてください！
問題なくコピーできればWindowsでの作業はここまでです。

##OSインストール
ようやくここでラズパイを使います！（わーーーい）
ケース装着の写真で申し訳ありませんがざっくりこんな感じ。
![ras2.png](https://qiita-image-store.s3.amazonaws.com/0/111861/6ce1888d-f03b-2f3c-9e81-18d83b3e7493.png)
※ここで注意はマイクロUSBをさす前にUSBやHDMIをさすこと。

しばらくすると画面がたちあがります！！
かわいい！！！！
そしてRaspbianをインストールするので下記画像（荒くてすいません）の
箇所を選択して上にあるInstallをクリックします。
最初にwifiの設定を聞かれるので設定してあげてくださいね。
![ras3.png](https://qiita-image-store.s3.amazonaws.com/0/111861/c66e1428-b196-e6a5-5fa7-40111d800f65.png)

で、選択するとインストールが開始します。
あとはコーヒー飲んだり、会社の人が買ってきてくれた
GWのお土産をいただき、私もGW前半満喫した気分になって待ちます。
（所要時間15分ほど）



#起動
無事にSDにOSインストールが完了したので、
さっそく起動してみます。やったーーーーー！！（２回目）
![ras2.jpg](https://qiita-image-store.s3.amazonaws.com/0/111861/7f653c5a-2780-8fe3-86c7-ddeb9effa22f.jpeg)


#次回
起動後の設定等について現在行っているため
ある程度まとめたら記事にしようと思います。
（日本語化....→go言語とPHPとRuby入れてる)

初回投稿のため至らない点が多いかと思いますが
修正やアドバイス等ご教授いただければと思います。
php-buildを単独で使う

## 途中で気づいたけど

y_utiさんの記事にめっちゃ詳しく書いてあったから、皆こっちを読むといいよ！

[php-build をカスタマイズして使う - y_uti のブログ](http://y-uti.hatenablog.jp/entry/2015/12/11/091058)


## ここから元の文章↓

php-buildは単独でインストールすることもできる。

[phpenvやphpbrewの雑な比較 - Qiita](http://qiita.com/Hiraku/items/61eeec22f78e9a6217ee)

phpenvとrbenvの競合で消耗した記憶から、phpenvは入れなくてもいいんじゃないかって気になった。というわけで単独でセットアップする方法についてまとめる。

## インストール

php-buildはPHPの新しいバージョンがリリースされる度にアップデートが走る。そのためgit pullを頻繁にできたほうが良い。
私はhomeをpeco+ghqの標準的なディレクトリ構成にしているので、素直にその構成に従ってgit cloneする。

```bash
$ ghq get git://github.com/php-build/php-build.git
```

あとはsrc/github.com/php-build/php-build/bin/に対して`$PATH`を通せばいいが、`$PATH`が汚れるのは嫌なので、元々通してある~/binにシンボリックリンクを作っておく。

```bash
$ ln -s src/github.com/php-build/php-build/bin/php-build ~/bin/php-build
```

これで動くはず。

```bash
$ php-build
usage: php-build [options] <definition> <prefix>

  <definition>       What release should be used, as well as release-specific
                     configuration. This is either the name of a builtin
                     definition file (as listed with --definitions) or a path
                     to the definition file.
  <prefix>           All built executables, configurations and libraries are
                     placed in this directory. It's created if it doesn't
                     exist.

  --definitions      Lists all available definitions and exit
  -h|--help          Display this help and exit
  -i|--ini <env>     php.ini to use. If <env> is a file then this file is
                     used, otherwise php.ini-<env> from the source
                     distribution is used. Defaults to "production".
  -v|--version       Display version information and exit
```

## PHPの置き場所を作る

```bash
$ mkdir ~/.php
```

## ビルド

php-buildでビルドするにあたっては、いくつか依存ライブラリを予めインストールしておく必要がある。環境によってまちまちなので、各自調べてください。brew install openssl && brew link openssl --forceとかは必要かも。

php-buildの対応しているPHPバージョンは--definitionsで出力できる。自然順じゃなくて読みにくいのでPHPでソートするとよい。

```bash
$ php-build --definitions | php -r '$lines=file("php://stdin");natsort($lines);echo implode("",$lines);'
```

適当に欲しいPHPを見繕ったら、おもむろにビルド。

```bash
$ php-build -i development {,~/.php/}7.0.6
```

これで~/.php/7.0.6/bin/にphp-7.0.6が入る。

## もっと複雑なビルドオプション

環境変数を使うともう少し色々設定できるらしい。

### PHP_BUILD_DEFINITION_PATH

> PHP_BUILD_DEFINITION_PATH=path/to/def など

definitionsの置いてあるパスを置き換える。自分の書いたdefinitionsに従ってインストールしたい時などに使う。

### PHP_BUILD_KEEP_OBJECT_FILES

> PHP_BUILD_KEEP_OBJECT_FILES=on など

make cleanしなくなる。
連続して色々なオプションを試したいときはいいかも。

### PHP_BUILD_EXTRA_MAKE_ARGUMENTS

> PHP_BUILD_EXTRA_MAKE_ARGUMENTS=-j2

make時のオプション。通常は何も指定しなくて良いが、`-j2`など並列オプションを使えばビルド時間を短縮できる。

### PHP_BUILD_INSTALL_EXTENSION

> PHP_BUILD_INSTALL_EXTENSION="apcu=@" など


追加でインストールするextensionを指定する。スペース区切りで複数指定できる。何でもインストールできるわけではなく、`share/php-build/extension/definition`に記載してあるものだけが有効。

### PHP_BUILD_CONFIGURE_OPTS

> PHP_BUILD_CONFIGURE_OPTS="--enable-re2c-cgoto --enable-phpdbg"

./configureスクリプトに渡すオプションを追加することができる。何も指定しなければphp-buildの標準仕様に従ってオプションが決定される。

### PHP_BUILD_ZTS_ENABLE

> PHP_BUILD_ZTS_ENABLE=on

ZTSを有効にしてビルドする。
middlemanインストールでハマった


middlemanをインストールした際に以下のエラーになった。

```
$ bundle install --path vender/bundle
（略）
Gem::InstallError: ruby_dep requires Ruby version >= 2.2.4, ~> 2.2.
An error occurred while installing ruby_dep (1.1.0), and Bundler cannot
continue.
Make sure that `gem install ruby_dep -v '1.1.0'` succeeds before bundling.
```

なので、2.2.4以上のRubyをインストールして再度挑戦する

```
$ rbenv install 2.2.5
$ rbenv global 2.2.5
$ gem install bundler
$ bundle install --path vender/bundle
（略）
Bundle complete! 1 Gemfile dependency, 46 gems now installed.
Bundled gems are installed into ./vender/bundle.
```


でけた。
AMPの実装

<h1>AMPとは？</h1>
米Googleは現地時間2015年10月7日、モバイルWebページの高速表示を実現するためのプロジェクト「Accelerated Mobile Pages」（AMP）を発表した。AMPは高速レンダリング静的コンテンツ用のWebページを構築する方法です。
<h1>Webコンテンツのサポート</h1>

<table>
<tbody>
<tr>
<th>Tag</th>
<th>Status in AMP HTML</th>
		</tr>
		<tr>
			<td>script</td>
			<td>&nbsp;<code>application/ld+json</code>以外サポートされない</td>
		</tr>
		<tr>
			<td>base</td>
			<td>禁止</td>
		</tr>
		<tr>
			<td>img</td>
			<td>img代わりにamp-img</td>
		</tr>
		<tr>
			<td>video</td>
			<td>video代わりにamp-video.</td>
		</tr>
		<tr>
			<td>audio</td>
			<td>audio代わりに amp-audio.</td>
		</tr>
		<tr>
			<td>iframe</td>
			<td>iframe代わりにamp-iframe.</td>
		</tr>
		<tr>
			<td>frame</td>
			<td>禁止</td>
		</tr>
		<tr>
			<td>frameset</td>
			<td>禁止</td>
		</tr>
		<tr>
			<td>object</td>
			<td>禁止</td>
		</tr>
		<tr>
			<td>param</td>
			<td>禁止</td>
		</tr>
		<tr>
			<td>applet</td>
			<td>禁止</td>
		</tr>
		<tr>
			<td>embed</td>
			<td>禁止</td>
		</tr>
		<tr>
			<td>form</td>
			<td>禁止.&nbsp;<a href="https://github.com/ampproject/amphtml/issues/1286">Support coming in the future</a>.</td>
		</tr>
		<tr>
			<td>input elements</td>
			<td>禁止(input, textarea, select, option)。
ボタンだけサポート</td>
		</tr>
		<tr>
			<td>button</td>
			<td>サポート</td>
		</tr>
		<tr>
			<td><code>style</code></td>
			<td>
&nbsp;<code>amp-custom</code>属性でStyleをheadタグに設定しなければならない。</td>
		</tr>
		<tr>
			<td>meta</td>
			<td>&nbsp;<code>http-equiv</code>&nbsp;だけ禁止。他の属性はサポート</td>
		</tr>
		<tr>
			<td><code>a</code></td>
			<td><code>javascript:</code>含めない&nbsp;<code>href</code>&nbsp;属性がサポート。<code>target</code>&nbsp;があれば、値を<code>_blank</code>に設定なければならない。</td>
		</tr>
		<tr>
			<td>svg</td>
			<td>ほとんどサポート</td>
		</tr>
	</tbody>
</table>
#viewsでのRailsの実装

layout='responsive'を設定すると、parentのDivがAmpタグのStyleに効く。
リンクを設定する

```ruby:posts/show.html.erb
<%= link_to "google.com", target: "_blank" %>
```

イメージとリンクを設定する

```ruby:posts/show.html.erb
<%= link_to posts_path(post.id) do %>
  <amp-img layout='responsive' height='300px' width='400px' src="#asset_path('image.jpg')">
  </amp-img>
<% end %>
```

YoutubeのIDでYoutube-ampを設定する

```ruby:posts/show.html.erb
<amp-youtube layout='responsive' data-videoid='yIV1SQWSzzI' width='600px' height='400px'>
</amp-youtube>
```
Video-ampにhttpsがあるURLをせっていする

```ruby:posts/show.html.erb
<amp-video width=400 height=300 src="https://yourhost.com/videos/myvideo.mp4">
  <source type="video/mp4" src="foo.mp4">
  <source type="video/webm" src="foo.webm">
</amp-video>
```
amp-iframeにhttpsがあるURLを設定する

```ruby:posts/show.html.erb
<amp-iframe width=300 height=300
    sandbox="allow-scripts allow-same-origin"
    layout="responsive"
    resizable
    frameborder="0"
    src="https://foo.com/iframe">
</amp-iframe>
```
ロカルでURLに#development=1を付けたら、ブラウザのコンソールは以下のように表示したら、OKです。
<code>AMP validation successful.</code>
サーバに反映したら以下のURLでチェックができる。your_urlのかわりにUrlを入れてください
<code>https://cdn.ampproject.org/v/your_url?amp_js_v=4</code>
例えば：
<code>https://cdn.ampproject.org/v/www.asahi.com/amp/articles/ASJ2V51K7J2VUHBI013.html?amp_js_v=4</code>
もしページの内容が表示できたら、成功になりました。
#参考
https://www.ampproject.org/
https://www.youtube.com/watch?v=yIV1SQWSzzI
https://takuyokomizo.com/google-amp/
proxy配下でAtomのPackageをインストールできるようにする

コーディングにAtomを利用している方は多いかと思います。私もそのひとりです。
今回は「Proxy配下だとAtomのPackageのインストールができない問題」の解消を目指します。

## Proxyの設定を入れる
設定を入れる方法は２つあります。

### 設定方法その１：コマンドを打つ

下記コマンドを投入します。

```lang:Terminal
$ apm config set http-proxy [ID]:[PassWord]@http://[proxy-server-url]:[port]
$ apm config set https-proxy [ID]:[PassWord]@http://[proxy-server-url]:[port]
```

・IDとPassWord
Proxyに認証が必要な場合は記入してあげましょう。
認証が不要な場合は省略可です。（＠も）

・proxy-server-url
プロキシサーバのURLです。
（FQDNと違う場合があるので注意です。プロキシの担当者に聞いてみましょう。）
**※注意**
https-proxyでもプロキシサーバのURLはhttpです。なぜ？わかりませんがこれで動きます。

・port
プロキシサーバアクセス時のポート番号です。


### 設定方法その２：ファイルに直接記入する
上記のコマンドをファイルに直接記入する事も可能です。

1.　~/.atom/.apmrcを作る
~/.atom/.apm/.apmrc　を、~/.atom にコピーします。

```lang:Terminal
$ cp ~/.atom/.apm/.apmrc ~/.atom
```

コピー先のファイルに下記２行を追記します。

```lang:.apmrc
http-proxy [ID]:[PassWord]@http://[proxy-server-url]:[port]
https-proxy [ID]:[PassWord]@http://[proxy-server-url]:[port]
```

**※注意**
コピー元の~/.atom/.apm/.apmrc を編集してもダメです。上書かれて元に戻ってしまいます。
Ubuntuにpythonと機械学習のライブラリをセットアップ

# 背景
仕事で機械学習をやることになったので、セットアップ方法をメモ。

# 環境
* Ubuntu 16.04 LTS

# 事前準備

pythonのインストールに必要なモジュールを先にインストールします。

```bash
sudo aptitude install gcc g++ make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
```

# pyenv, pyenv-virtualenvのインストール

バージョンやライブラリをディレクトリごとに切り替えられるようにpyenvとpyenv-virtualenvを利用します。

```bash
git clone https://github.com/yyuu/pyenv.git ~/.pyenv
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc 
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc 
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
source ~/.bashrc
pyenv install 3.5.1
pyenv rehash
pyenv global 3.5.1
```
# 作業するフォルダに機械学習のライブラリをインストールします。

```bash
mkdir work
cd work
pyenv virtualenv 3.5.1 3.5.1_work
pyenv local 3.5.1_work
pip install numpy
pip install scipy
pip install scikit-learn
pip install gensim
```
```pip freeze```で確認するとworkフォルダの中でだけ、インストールしたライブラリ一覧が表示されます。

```bash
pip freeze

boto==2.40.0
bz2file==0.98
gensim==0.12.4
...
```

# mecab

テキスト系をやるのでついでにmecabもインストールしておきます。

```bash
sudo aptitude install libmecab-dev
sudo aptitude install mecab mecab-ipadic-utf8
mecab --version
pip install mecab-python3
```
Node.js 環境構築

Node.jsを勉強し始めたので自分用メモを兼ねて。

## Node.jsとは？
```lang:wikipedia
Node.js はイベント化された入出力を扱うUnix系プラットフォーム上の
サーバーサイドJavaScript環境である（V8 JavaScriptエンジンで動作する）。
 Webサーバなどのスケーラブルなネットワークプログラムの記述を意図している。
```
なるほど。要するにサーバサイドで動くJavaScriptってこと。

## Node.jsを扱う準備
### Node.jsのインストール
本家に行ってインストールする。
windows用やMac用があるので、それぞれで必要なものをインストールしましょう。
https://nodejs.org/en/download/

![スクリーンショット 2016-05-01 13.40.15.png](https://qiita-image-store.s3.amazonaws.com/0/84307/dc5aed78-1f37-d6ef-1acd-d66610493b4a.png)

### インストール完了の確認
インストールが終わったらコマンドを実行できるか確認します。

```lang:terminal
$ node -v
```
<img width="682" alt="スクリーンショット 2016-05-01 13.42.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/84307/de6353f0-db71-870b-9630-97cec756dd52.png">


以上です。
ただ、Node.jsで開発を進めるにはnpmが欠かせない（というかあったら非常に楽）なので、一緒に入れておきましょう。

## npmを扱う準備
### npmのインストール
上記の手順でNode.jsをインストールすると、npmも一緒に入っているはずです。特に作業は不要です。

### インストール完了の確認
コマンドを確認して見ましょう。

```lang:terminal
$ npm -v
```
<img width="682" alt="スクリーンショット 2016-05-01 13.48.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/84307/1d770550-dfe4-b3b9-02ab-07e2578e161e.png">


### 最後に
Node.jsの勉強には[ドットインストール](http://dotinstall.com/)を使いました。非常に詳しく解説されていますのでおすすめです。
Rapberry Pi > UDP通信の応答がなくなる > GW-USNANO2A (Realtek RTL8192CU) > 対策 @ RPi forum

```txt:動作確認
Raspberry Pi2
```

http://qiita.com/7of9/items/faae2a627443ff137c84#_reference-06dbceff9f816fe7a46b
のpythonソフトをRPiで動作しているが、しばらく放置しているとUDP通信の応答がなくなる。

対策としては、Windowsからコマンドプロンプトでpingを実行して、Timeoutがなくなるのを待つようにしている。

RPi側の省電力設定はOFFにしたつもりだが、まだどこか設定オフにしないといけないのだろうか。

## アダプタ

PLANEXのGW-USNANO2A
http://qiita.com/7of9/items/d0c6b86e6da26dffd3d7

以下によるとChipset は Realtek RTL8192CU
http://d.hatena.ne.jp/rideonshooting/20141110/1415637481

## 状況と対策

https://www.raspberrypi.org/forums/viewtopic.php?t=61665
に8192CUでの問題と対応が記載されている。

状況としては、30秒通信がないとWiFi通信の応答がなくなる

対策は by MrEngman » Sun Nov 24, 2013 5:47 pm を参照

実際にRPi2でファイルをみたところ /etc/modprobe.d/8192cu.conf というファイルはなかったので新規作成して、optionsの行を追加した。
【深層学習】畳み込みニューラルネットの各関数の使い方を調査 [DW 3日目]

# Convolutional Neural Network (CNN) とは
画像に特化したニューラルネット。通常の多層パーセプトロンが入力層、中間層、出力層から成るのに対して、CNNはそれに加えて畳み込み層、プーリング層、局所正規化層(LRN層)をもつ。

Chainer ExampleにあったAlexNet (ILSVRC2012のトップ) を見てみると、以下のようになっている。

 - [ImageNet Classification with Deep Convolutional
Neural Networks(原文)](https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)
 - [Chainer Example AlexNet](https://github.com/pfnet/chainer/blob/master/examples/imagenet/alexbn.py)
 
~~~python:AlexBM.pyの抜粋
# …(略)
class AlexBN(chainer.Chain):

    """Single-GPU AlexNet with LRN layers replaced by BatchNormalization."""

    insize = 227

    def __init__(self):
        super(AlexBN, self).__init__(
            conv1=L.Convolution2D(3,  96, 11, stride=4),
            bn1=L.BatchNormalization(96),
            conv2=L.Convolution2D(96, 256,  5, pad=2),
            bn2=L.BatchNormalization(256),
            conv3=L.Convolution2D(256, 384,  3, pad=1),
            conv4=L.Convolution2D(384, 384,  3, pad=1),
            conv5=L.Convolution2D(384, 256,  3, pad=1),
            fc6=L.Linear(9216, 4096),
            fc7=L.Linear(4096, 4096),
            fc8=L.Linear(4096, 1000),
        )
        self.train = True

# …(略)
~~~

5つの畳み込み層と3つの全結合層から成っている。また、論文では活性化関数ReLu、マルチGPU、LRN、プーリングが大事だと言っている。上のChainer ExampleではLRNの代わりにバッチ正規化を使っている。バッチ正規化については以下が詳しい。

- [BatchNormalizationの仕組みとその直感的な理解](http://qiita.com/conjugate_box/items/a5efcbe7d9be977367b8)

# 畳み込み層
~~~python
L.Convolution2D(3,  96, 11, stride=4)
~~~

畳み込みの計算式はいろんな参考書に書いてあるので割愛。ここでは、この関数を使えるようになることを目指す。
　まず、畳込みとは画像にフィルタをかけ変換すること。フィルタも画像と同じように画素数とチャネルという変数をもつ。画像の画素数を $N\times N$ 、チャネル数を $K$ としたとき、画像のサイズを $N\times N\times K$と書くように、フィルタのサイズも $H\times H\times K$のように書く。画像とフィルタのチャネル数は同じになる。
　画像にかけるフィルタは複数種類あっても良い。$M$ 種類のフィルタをかけると、出力画像のチャネル数は $M$ 変換される。 また、フィルタをかける際はフィルタを動かしながら画像に対して部分的にかけていくのだが、その動かしていく幅をストライド幅という。ストライド幅を大きくすると画像特徴を取りこぼしやすくなるので、小さいほうが望ましい。また、画像の縁の外側に仮想的な画素を設けることをパディングと呼ぶ。パディングを与えることで、畳み込んだ時の画像の縮小を抑えることができる。入力と同じサイズにしたい場合はパディングサイズを $H/2$ の少数切り捨てにする。
 今までをまとめると`pythonL.Convolution2D()`の引数は

  - 第1引数 = 入力チャネル数。 $K$のこと。
  - 第2引数 = 出力チャネル数。 $M$のこと。
  - 第3引数 = フィルタサイズ。 $H$のこと
  - 引数名stride = ストライド幅。（小さいほうが良い。入力画像サイズとの兼ね合いか？）
  - 引数名pad = パディング幅。（ $H/2$ の少数切り捨てにすることが多い）

となる。入出力画像の画素数に関する指定は無い。

# バッチ正規化
~~~python
L.BatchNormalization(96)
~~~
引数には正規化の対象となる画像のチャネル数を与える。直前の畳込みの出力チャネル数( $M$のこと)と同じになる。

# プーリング層
~~~python:AlexNet.pyから抜粋
  h = self.bn1(self.conv1(x), test=not self.train)
  h = F.max_pooling_2d(F.relu(h), 3, stride=2)
~~~

畳み込み層の結果をReLuに入力した後にプーリングを行う。プーリングは、フィルタのように一定の領域に注目し、あるルールに従ってその領域の代表値を1つ出力する。これによって位置不変性を獲得できる。プーリングには色々なバリエーションがある。

  - 平均値プーリング： 領域内の値の平均をとる
  - 最大値プーリング： 領域内の最大をとる
 
AlexNetでは最大値プーリングを採用している。

`F.max_pooling_2d()`の引数をまとめると、

  - 第1引数： 入力画像
  - 第2引数： プーリング領域サイズ。領域を大きくし過ぎると精度がさがる。
  - 第3引数： ストライド幅。通常2以上にする。

こちらも、入出力の画素数については指定しない。

# AlexNetを使ってみた
次の記事(執筆中)でAlexNetを使ってみた結果を書く。
文字と数字を使わず、Rubyでプログラミングしましょう。


#1.Ruby in normaly
 階乗 n! を計算する
<img width="170" alt="スクリーンショット 2016-04-26 23.18.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/121276/11fa130f-2ce8-c71c-6d02-7b312781adba.png">
-Variable
-Method
-Number value
-String
-Structure
-Output

#2. How to use Ruby without using any numbers or letters
##全部文字と数字を削除しましょう
###1.Variable

Rubyに_とか＄などでVariableを作られます。
普段：
my_number = 2
=>
_ = 2

###2. Number
Ruby_docsによると

```code
pid -> Integer
カレントプロセスのプロセス ID を返します。変数 $$ の値と同じです。
＄＄の値はいつも != 0
```

```+,-,x,/, << ```で任意ナンバーが作られます。

```code
$$/$$ = 1
$$ - $$ = 0
```
```my_number = 2``` は ```_ ＝ ＄＄/＄＄ + $$/$$``` になります。
楽しい? 
###3. String

普段：

```rb
my_string = "basic"
"basic" = "b" << "a" << "s" << "i" << "c"
```

ASCIIに基づけASCIIコードを使って、Stringが作られます。

```ruby
 "b" << "a" << "s" << "i" << "c"  <=> '' << 98 << 97 << 115 <<105 << 99
```

結果：

```rb

__ = '' << 98 << 97 << 115 <<105 << 99
```

###5. Method
普段：

```rb

def count
    x = 1
    x += 1
    p x
end
```
メソッドの理想
 ``` “package code first, call it later”```

Procとほぼ一生です。

```rb

my_proc = Proc.new{|x| x + 1; p x}
... # more code
my_proc.call(2)  #=> 3
```

characterとnumberを削除しる

```rb

_ = $$/$$
___ = Proc.new{|__| __ + _; p __}
... # more code
___.call(_+_)  #=> 3
```

``` Proc.new ```の代わりに、 ```->``` シンボルが作られます。
```call```使わず、 ```[]``` シンボルが作られます。
結果：
_ = $$/$$
___ = -> {|__| __ + _; p __}
... # more code
___.[(_+_)]  #=> 3
almost finish!
###6. structure
どんな言語でも、Structureの種類は３つがあります。
   - 1.sequence
   - 2.selection
   - 3.iteration
####6.1.Sequence
Sequenceでは,普通な実装です。上から下までで実行します。
####6.2.selection

Character禁止なので、```if-esle```がつかえない。
だが、```if-else```の代わりに、```？：```のシンタックスを作る

####6.3.interation
        
ループを作るために、リカーシブとLambdaシンタックスを兼ねる。
普段：

 ```rb
(1..10).each do |x|
  p x
end
```

Alphanumericを使わない:

```rb

(___ = -> {
    x += 1
    p x
    x <= 10 ? ___[] : 0
})[]
```
6. Output
今まで、結果を表示するために、putsのコマンドを作っています。
Rubyに```$>```シンボルはputsの使い方と同じです。

```rb
 puts "basic" 
```
 <=>

```rb

 $> '' << 98 << 97 << 115 <<105 << 99  # => basic
```
#3.Summary
例

```rb
def factorial n
  return n if n == 1
  n*factorial(n - 1)
end

p factorial 5
```

```rb
_ = $$ / $$  #1
__ = _ + _   #2
@_  =  _  +  _ #  2
$_  = @_  +  _ #  3
$__ = @_  + $_ #  5
$-_ = $__ * $_ # 15

@__ = $-_*$__ + $-_*$_ - $__
@___ = $__*__*$__ + $__ + $_
$___ = '' << @__ - _ << @__ - _ - $__*@_ - $_ << @__ << @__ + __ << @__ + $_ - $__*@_ << @__ + _ << @___
            #r    #e     #s     #u      #l    #t    #:
(___ = -> (__){
  __ != _ ? __*___[__ - _] : _
})
$> << $___
$> << ___[$__]


```

参考：http://threeifbywhiskey.github.io/2014/03/05/non-alphanumeric-ruby-for-fun-and-not-much-else/
ボットのfacebookではまるところ



#はまるポイント１

http://qiita.com/pochi-sato/items/f3f5598e36c1fa92d840
これとレンタルサーバーで最初から付いているSSLでできました。
はまりそうなところは
curl -ik -X POST "https://graph.facebook.com/v2.6/me/subscribed_apps…"
ここでトークンを叩いた時に""の打ち忘れてはまりました。
わからないことあったらここ書いちゃいましょう！



#はまるポイント２

証明書がついてないサーバーない方は
http://qiita.com/fuji_syan/items/85723cb5e53ec6dc9e95
このような形でHerokuを使うといいと思います！

ただ、herokuだとdeployがめんどうなので、
SSLが入っているさくらのレンタルサーバーがいいです。


#はまるポイント３

データをとれるようになったらしたのようなデータの型をしらないとデータをただしくとれないです。

![sile.png](https://binary-team.qiita.com/files/007ccd8c-532c-617d-f997-b152fd5fa818.png "sile.png")



http://qiita.com/tempura/items/d72f3918bc55865f55c2

この記事通りやればできます。
play framework2.4のフォームヘルパーでハマったこと

ここでは、scala初心者の私がscala+play framework2.4のフォームヘルパーを使う際にはまったことを書きたいと思います

環境
　・ubuntu14.04
　・scala
　・play framework2.4

ハマったこと
フォームヘルパーを利用する際に、case classを使ったフォームの定義をcontrollerクラス内で指定していたため、実行時にtype mismatch;のエラーが発生していました。

解決策
case classを別ファイルに定義し、controllerではそれをimportすることでエラーが発生しなくなりました。また、クラス定義を以下のように修正しておきます。
以下に修正後のソースを抜粋します。

modelsのパッケージ内に以下の名前でファイルを作成します。

```lang:models/Myform.scala
case class MyFormData(name:String, mail:String)
```


```lang:controllers/HomeController.scala
import models.MyFormData

class HomeController @Inject() (val messagesApi: MessagesApi) extends Controller with I18nSupport {

--中略--

}
```



これで動くようになりました。
以上です。
BeagleBone Black DebianでWeb Server

BeagleBone BlackをWeb Serverに使う時のメモです。

# 前提条件
Debian 8.3 2016-01-24 [こちら](https://beagleboard.org/latest-images)から入手。
インストール方法は[こちら](http://qiita.com/hitokuno/items/a366e089fa7fb3a81067)からどうぞ。

# Web Server
実は何も設定しなくてもNode.jsとapache2が動いています。

### Node.js
*  アクセス  
[http://beaglebone.local/](http://beaglebone.local/)
*  実体  
`/usr/local/lib/node_modules/bonescript/`
* [http://beaglebone.local/bone101/Support/bone101/](http://beaglebone.local/bone101/Support/bone101/)に転送されます  
`/var/lib/cloud9/bone101/Support/bone101/index.html`

### apache2
* アクセス  
[http://beaglebone.loca:8080l/](http://beaglebone.local:8080/)
* Document root  
`/var/www`
* CGI  
`/usr/lib/cgi-bin`
* 設定ファイル群  
`/etc/apache2/`  
  DashでもPerlでも動きました。
ASP.NET Core MVC アプリケーション作成手順

今後、.NET Coreを利用したアプリケーションを作成することになりそうなので、作成のための手順を備忘録的に書いておきます。

#前提条件
##確認済み環境
・Windows 10 64bit

##ツール
インストールされていること
- Node.js（Yoemanなどを実行するのに必要）
- Yoeman（プロジェクト作成に使う）
- bower（クライアントサイドのライブラリ管理）
- Gulp（タスクツール）
- Grunt（タスクツール）
- Visual Studio Codeなどのテキストエディタ

#作成手順
## 1. .NET Coreのインストール
[ASP.NET vNext Home](https://github.com/aspnet/home)を参考にして、.NET Coreをインストールする
コマンドライン
`@powershell -NoProfile -ExecutionPolicy unrestricted -Command "&{$Branch='dev';$wc=New-Object System.Net.WebClient;$wc.Proxy=[System.Net.WebRequest]::DefaultWebProxy;$wc.Proxy.Credentials=[System.Net.CredentialCache]::DefaultNetworkCredentials;Invoke-Expression ($wc.DownloadString('https://raw.githubusercontent.com/aspnet/Home/dev/dnvminstall.ps1'))}"`

## 2. Yoemanのジェネレータをインストール
コマンドライン or Powershellからコマンドを実行
`npm install -g generator-aspnet`

## 3. ASP.NET Core MVCのプロジェクトを作成
プロジェクトを作成するディレクトリに移動
`yo aspnet`
プロジェクト名：適当なプロジェクト名
プロジェクトの種類：Web Application もしくは Web Application Basic [without Membership and Authorization]
※*Web Application Basic [without Membership and Authorization]*を選択するとEntity Framework Core 1.0やASP.NET Identityがインストールされない

## 4. プロジェクトの実行
`cd プロジェクト名`
プロジェクトの復元（nugetパッケージの復元）
`dnu restore`
プロジェクトのコンパイル
`dnu build`
プロジェクトの実行
`dnx web`
Kestrelが実行され、5000ポートで待ち受けが行われる
MacでSecurity.saltとSecurity.cipherSeedを生成する

いつもやり方忘れてググってる。

**Security.salt**
$ cat /dev/urandom | LC_CTYPE=C tr -dc '[:alnum:]' | head -c 40

**Security.cipherSeed**
$ cat /dev/urandom | LC_CTYPE=C tr -dc '[:digit:]' | head -c 29

参考
http://d.hatena.ne.jp/pasela/20120710/random
Rで、多量の相関係数を求めて、相関係数の値の絶対値を求めるところまで。

#イントロ
−−−−
　多くの相関係数を表形式で求める方法は、[私の２回目の投稿 (Rで、相関係数を求めて、csv出力したかったのです。)](http://qiita.com/ryotenabe/items/c2b894fc67a192fe91ca)で行いました。
今回は、[３回目の投稿 (R ggplot でループを利用した散布図（scatter plot）を描きpdf出力したかったのです)](http://qiita.com/ryotenabe/items/a35ffdae762254367b82)グラフの作成に使った`combn`関数を利用して相関係数を求めて見たいと思います。
　また、ベクトルから行列への取り扱いなどをテーマにします。
　使うデータはirisデータです。本質的に新しい訳ではないのですが。
　簡単に書いて見ます。

#スクリプトコード
−−−−

```R:cor_combn.R
#相関係数
#カラム行の名前を取り出すことと、combnで組み合わせ
x <- NULL # ベクトルｘを作る。
z <- combn(colnames(iris[1:4]), 2)
for (i in (1:6)) {
  #irisデータの列の組み合わせについてcorを得て、ベクトル化する。
  x[i] <-  c(cor(iris[,z[1,i]], iris[,z[2,i]]))
}
#xをベクトルから行列形式へ変換する。
x <- matrix(x)
#有効数字を小数点２位までにする。
x <- round(x, digits = 2)
#絶対値を求める
abs_x <- abs(x)
#zを転置して、ｚとｘとを付け加える。＞データフレーム形式になる。
iris_cor <- cbind(t(z),x, abs_x)
colnames(iris_cor) <- c("SampleName1","sampleName2", "cor", "abs of  cor" )
View(iris_cor)
write.csv(file = "cor_combn_abs.csv", iris_cor)
```

言い訳になりますが。
`sort`, `subset`, `>`などの関数を使って、並べ替えるところまでは、私は、分かりませんでした。

#説明と実行結果
−−−−
変数ｚは、

`z <- combn(colnames(iris[1:4]), 2)`
という部分が次のような結果になります。

![スクリーンショット 2016-05-01 11.24.42.png](https://qiita-image-store.s3.amazonaws.com/0/22082/7b1ff772-240e-c679-80fd-224f628844e1.png)

View(iris_cor)とした後で、下記の図では絶対値の大きい物順にRStudioにて、並べ替えを行っています。


![スクリーンショット 2016-05-01 11.25.09.png](https://qiita-image-store.s3.amazonaws.com/0/22082/297058d9-3da7-990b-fbb4-425f2cfa0c30.png)

###実行環境
−−−−
なお、実行環境は以下の通りです。
Mac OS X 10.11.4
R version 3.2.4
R studio 0.99.896 

##蛇足（dplyrでのパイプ演算子%>%）
−−−−
　上述のスクリプトのうち、ネスト（入れ子構造）されている箇所は、次のようにも書き換えが出来ますね。
　今は、パイプ演算子`%>%`を使った方が、モダンな書き方で、可読性が良くなる、ということで好んでらっしゃる方もいるようです。

`dplyr`というパッケージを利用する方法を下記に示します。
インストールしていなければ、`install.packages(dplyr)`を一度、行う必要があります。
`library(dplyr)`を行った後で次のスクリプトを実行すれば、別の表現で同じ結果を見ることができます。


変数zについての箇所
コメントアウトしている所と、同じ結果を得るパイプでの書き方です。

```R:pipe1.R
#z <- combn(colnames(iris[1:4]), 2)
iris[1:4] %>% colnames %>% combn(., 2) -> z
```

変数abs_xについての箇所
コメントアウトしている所と、同じ結果を得るパイプでの書き方です。

```R:pipe2.R
#x <- matrix(x)
#x <- round(x, digits = 2)
#abs_x <- abs(x)
x %>% matrix(.) %>% round(., digits =2) %>% abs(.) -> abs_x 
```
GoogleChromeで特定のサイトのクッキー(Cookie)情報を確認する方法

クッキーを見ようと思って調べたのでメモ。

## 設定画面から調べる

1. Chromeの設定画面に行く(`chrome://settings`)
2. 下の方に行って高度な設定リンクを押す ※英語は"Show advanced settings..."
3. コンテンツの設定リンクを押す ※英語は"Contents setting..."
4. すべてのCookieとサイトデータリンクを押す ※英語は"All cookies and site data..."

以下写真で解説 ※英語

### 設定画面に行く

![skitch.png](https://qiita-image-store.s3.amazonaws.com/0/34733/a0e7afcc-79fd-33fa-239d-56f32dd265a3.png)

### すべてのクッキーデータを確認

![skitch2.png](https://qiita-image-store.s3.amazonaws.com/0/34733/4d4db8ba-d29b-d191-0604-32e1396e75fa.png)

### 確認したいサイトを検索

![skitch3.png](https://qiita-image-store.s3.amazonaws.com/0/34733/441656cd-7156-269c-f0dc-01cb3dcc90c2.png)

### 確認できたー

![skitch4.png](https://qiita-image-store.s3.amazonaws.com/0/34733/3f5bf9a0-d08f-da60-8a99-b8c37660de26.png)

### 補足

すべてのCookieとサイトデータ画面には `chrome://settings/cookies` から直接飛べる

## いま見てるサイトのクッキーを見る

いま見てるサイトのクッキーなら、もっと簡単に見られる。

1. アドレス横にあるアイコンをクリック
2. 表示されたポップアップのクッキーの項目をクリック

### アドレス横のアイコンをクリック

![chrome_cookies_1.png](https://qiita-image-store.s3.amazonaws.com/0/2094/ea0311b8-7917-6df3-ab71-e5232996c06d.png)

この白い紙のアイコンをクリックすればいい。HTTPSのサイトは鍵のアイコンになっているので、そちらはそれを。

### ポップアップのクッキーの項目をクリック

![chrome_cookies_2.png](https://qiita-image-store.s3.amazonaws.com/0/2094/30e70cd0-0c86-82cd-dde3-37a716416f2c.png)

アイコンをクリックするとポップアップが出てきて、そのサイトのプライバシー関連情報（クッキーや位置情報やカメラの権限情報）が出てくる。そこで出てくるクッキーの数がリンクになっているので、そこをクリック。

### クッキーのポップアップ

![chrome_cookies_3.png](https://qiita-image-store.s3.amazonaws.com/0/2094/43763503-0e69-a3a1-975b-dec91bd1eb28.png)

サイトに関連したクッキーのポップアップが出てくるので、気になるものを選ぶと値がみられる。

![chrome_cookies_4.png](https://qiita-image-store.s3.amazonaws.com/0/2094/9723c548-b7ed-2091-e78a-48781b0189b3.png)
MobaXtermでsshdの起動

## sshdの起動

```
/etc/init.d/ssh start
```

## その他便利ツール

```
apt-cyg install bash-completion
apt-cyg install autossh
apt-cyg install expect
```


## plugins

http://mobaxterm.mobatek.net/plugins.html

* git
* screen

## screenの起動

```
chmod 700 /tmp/uscreens/S-username
screen -R
```