OmniAICreator/Qiita-1.07M huggingface dataset:
#8 【攻略】RubyWarrior Level8

RubyWarrior Level8の攻略
新しい要素がどんどん追加されていて、さらにRPGっぽくなってきてます。

#概要
今回追加されたのはwarrior.lookとwarrior.shoot!です。
warrior.look!は周りに対象物(敵とか)がいないかどうか確認するスキル。
warrior.shoot!は弓矢を発射するスキル。

敵にも新キャラのWizardが登場してます。
攻撃力が高く、一回の攻撃で半分持ってかれるのでさっき紹介したwarrior.shootで遠距離攻撃して倒しましょう。


まずは近くのcaptiveを救出して、Wizardがいたら弓矢で遠距離攻撃、という流れにします。

#スクリプト
```
class Player
  def initialize()
    @saved = 0
  end
  
  def play_turn(warrior)
    if @saved == 0
      if warrior.feel.captive?
        warrior.rescue!
        @saved += 1
      else
        warrior.walk!
      end
      
    else
      if warrior.look.any? {|space| space.enemy? }
        warrior.shoot!
      else
        warrior.walk!
      end
    end
  end
end
```
今回は敵に接近して攻撃はしないので、@healthに体力を保存しません。
ただ、captiveは救出しなければならないので救出した数を@savedに保存。

fieldにWizardがいるかどうかの判定はany?でループを回しました。

#解説
warrior.lookは三つの要素を含んでいるarrayオブジェクトを作り出します。
ちなみに方向も決めることができて、デフォルトは:forward。

これを、

```
if warrior.look.any? {|space| space.enemy? }
  warrior.shoot!
else
  warrior.walk!
end
```

という感じでany?のループに渡してあげる。
any?ではブロック引数に指定された変数spaceにwarrior.lookの要素を1個ずつ入れてあげます。trueを返したら処理を中止し、以下の処理を実行します。

このspace.enemy?の部分はゲーム画面のabilityで確認できるので使ってみてください。
敵がいるかどうかを確認するためのメソッドです。

スクリプトは短いけれど、warrior.lookの使い方がちょっと難しい...
empty?とか使ってもいけそうな気が...しなくもない。
CouchbaseServerをざっくり試してみる Index

# はじめに
この記事は、SoftwareDesign 2016年12月号(以下、SD誌)のKVS特集中のCouchbaseServer紹介記事に関する補足記事となります。
CouchbaseServerの簡単な紹介から、実際に手を動かして利用してみるところまでを対象としています。

Couchbaseサーバに関する公式のドキュメントは大量にあるのですが、バージョンが古いものも大量に残っていたり、リンク切れなどがあるため、まずざっくり触ってみたいというときに参考にして頂きたいと思います。
この記事はCouchbase4.5を元に記載しています。

# 公開中記事Index
* [1章 Couchbase とは](http://qiita.com/taruhachi/private/6040502a1fb7dbad5304)
* [2章 Couchbase EnterpriseEditionとCommunityEditionについて](http://qiita.com/taruhachi/private/0c31b1a8ce06b81e2ece)
* [3章 Couchbaseを使うまでの準備](http://qiita.com/taruhachi/items/0c7aa970ed51e41df4e7)
* [4章 CouchbaseをKVSとして利用してみよう](http://qiita.com/taruhachi/items/ccd12fc1b4daadebfc13)
* [5章 Couchbaseの横断検索機能を利用してみよう](http://qiita.com/taruhachi/items/8b666c8cec7fa613c3c4)


# 全体Index

* [1章 Couchbase とは](http://qiita.com/taruhachi/private/6040502a1fb7dbad5304)
 * Couchbaseの特徴
 * クラスタの概念の説明
 * バケットの説明
 * ドキュメントの説明
 * Couchbaseを構成する4つのサービスとは
 * Couchbaseを選ぶ理由
  * スケーラビリティーについて
  * 可用性について
  * 横断検索機能について
  * メンテナンス性について

* [2章 2章 Couchbase EnterpriseEditionとCommunityEditionについて](http://qiita.com/taruhachi/private/0c31b1a8ce06b81e2ece)
 * CommunityEditionの機能制限について

* [3章 Couchbaseを使うまでの準備](http://qiita.com/taruhachi/items/0c7aa970ed51e41df4e7)
 * Couchbaseのインストール
 * 商用環境で利用する際に変更しなければならない設定について
 * クラスタの初期化
 * 管理コンソールの利用開始
 * デフォルトバケットの削除
 * 新規バケットの追加
 
* [4章 CouchbaseをKVSとして利用してみよう](http://qiita.com/taruhachi/items/ccd12fc1b4daadebfc13)
 * PHP SDK利用準備
 * PHPスクリプトからの利用サンプル

* [5章 Couchbaseの横断検索機能を利用してみよう](http://qiita.com/taruhachi/items/8b666c8cec7fa613c3c4)
 * ダミーデータの登録
 * Viewを利用した検索
  * Viewの新規作成
   * Development Viewの追加
   * ProductionViewにPublish
  * 管理コンソールからの検索の実施
  * PHPスクリプトを利用した検索の実施
  * Viewを利用する際に注意すること
 * N1QLを利用した検索
  * 概要紹介
  * 管理コンソールからのIndexの作成・クエリの実行
  * PHPスクリプトを利用した検索の実施
 * N1QLを利用する際に注意すること
MacにGulpをインストール

Macにgulp環境を構築する際のメモ。

# インストール手順
1. node.jsインストール
1. gulpをインストール

# node.jpインストール

[こちら](/kyosuke5_20/items/c5f68fc9d89b84c0df09)にて記述。

# gulpインストール

```
$npm install gulp -g
```

グローバルにインストール。
グローバルってなんだって思ったけど、npmにはローカルとグローバルがあるとのこと。

ローカル・・・インストールしたパッケージをそのプロジェクトフォルダ内のみ使用する。
グローバル・・・そのマシン上のどこからでも利用できるようになる。

へーーー。

また、npmでは各プロジェクトで使用するパッケージを管理できるとのこと。
管理情報はプロジェクトの```package.json```に記述する。

オプションで```--save-dev```をつけることで開発用パッケージとして```package.json```で登録されるらしい。

```
$npm install gulp --save-dev
```

とりあえず、以上で完了。

# 参考：
https://app.codegrid.net/entry/gulp-1
peco + ghq on Windows

便利すぎてヤバいです。

# Install Chocolatey
https://chocolatey.org/install

```bat:
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
```

# Install peco
https://github.com/peco/peco

```
choco install peco
```

# Install ghq
https://github.com/motemen/ghq

```bat
go install github.com/motemen/ghq
```

# Create Batch File
http://mattn.kaoriya.net/software/peco.htm

```bat:peco-ghq.bat
@echo off

for /f %%i in ('ghq list -p ^| peco') do (
  cd %%i
  break
)
```
New Relicで無料でRakeタスクの実行時間やプロファイルを記録


New Relicは無料でも大活躍してくれています。以前、[詳解 NewRelic で監視＆性能改善](http://qiita.com/wapa5pow/items/e3ef018af270cc2ad014)という記事をかいてまとめたりしてました。

その中で、Rakeのタスク実行時間が簡単にとれないかなーと思っていたのですが、3.13.0 (release on 28 Jul 2015)からできるようになっていました。以下のようにRakeタスクの実行時間がいい感じで見れます。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/d04b1f20-dbdf-746c-221b-226b533f4255.png)

# 設定方法

newrelic.ymlに以下のようにNew Relicのタスクを記録することを設定します。
tasksの設置は正規表現を入れれば大丈夫です。除きたいタスクなどがあるひとは適宜設定してください。

```yaml
  rake:
    tasks: ['.*']
```

その後、各rakeタスクファイルの最上部に以下のrequire文を入れます。

```
require 'tasks/newrelic'
```

これで完了です。以下のようにTransactionsからRakeタスクを選べば出てきます。

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/ef84f476-1af3-4169-6770-82351132db98.png)


# まとめ

New RelicのRuby Agentを使って、Rakeタスクの実行時間やプロファイルが確認できる設定を見てみました。
Agentは頻繁に更新されているみたいで、いままでなかった機能も足されているので、[CHANGELOG](https://github.com/newrelic/rpm/blob/master/CHANGELOG)を時々、見てみるのもいいかもしれません。
複数のXcodeのデバイスディスクイメージを共有する

複数のXcodeを入れている場合に容量がかさみます。
GrandPerspectiveなどでみると分かるのですが、Xcodeの容量の多くを`Device Support`というものが占めています。
このDeviceSupportは、iOSのバージョンごとに存在する上にひとつひとつの容量が大きいため複数のXcodeで共有したいところです。
Xcodeのバージョンが違えど基本的にはDeviceSupportは参照さえできれば使えるので、最新のXcodeからDeviceSupportを抜いて全てのXcodeがそこを参照するようにすれば良いのです。

`sudo mv /Applications/Xcode82b2.app/Contents/Developer/Platforms /Applications/Platforms`

/Applicationに配置してみました。（/Developerの方がいいか…
Platformsの中にDeviceSupportがいるのでまるごとでOKです。

次にXcodeに元からあるPlatformsを消していきます。

`sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms`
`sudo rm -rf /Applications/Xcode81.app/Contents/Developer/Platforms`
`sudo rm -rf /Applications/Xcode82b2.app/Contents/Developer/Platforms`

あとは以下の用に全部のXcodeに撒けばOK

`sudo ln -s /Applications/Platforms /Applications/Xcode.app/Contents/Developer/Platforms`
`sudo ln -s /Applications/Platforms /Applications/Xcode81.app/Contents/Developer/Platforms`
`sudo ln -s /Applications/Platforms /Applications/Xcode82b2.app/Contents/Developer/Platforms`

#副作用

古いバージョンのXcodeも新しいDeviceSupportが参照出来るようになるので、Xcode7.3でiOS10.2へビルド出来るようになったりする
canvasでテキストをパーティクルにする方法 [JS]

#canvasでテキストをパーティクルにする方法

http://jsdo.it/k.tanaka/YrLO
これがすごかった。
どうやっているのか気になったので、他にもいろいろ参考にして自分なりに作り直してみた。

結果がこれ
<p data-height="265" data-theme-id="0" data-slug-hash="eBdRxm" data-default-tab="js,result" data-user="sakamoto-ryouta" data-embed-version="2" data-pen-title="particleTxt" data-preview="true" class="codepen">See the Pen <a href="http://codepen.io/sakamoto-ryouta/pen/eBdRxm/">particleTxt</a> by 坂本龍太 (<a href="http://codepen.io/sakamoto-ryouta">@sakamoto-ryouta</a>) on <a href="http://codepen.io">CodePen</a>.</p>
<script async src="https://production-assets.codepen.io/assets/embed/ei.js"></script>

パーティクルであってるのかな？

とりあえず、テキストをドットにするのはできた。

##簡単な処理の流れ。

1. キャンバスを黒く塗りつぶす
2. 白いテキストを書く
3. canvas全体のピクセルの色を取得
4. ピクセルが白いところがテキストがあるピクセルなので、その位置を取得
5. キャンバスを好きな色で塗りつぶして、テキストを消す
6. テキストがあった位置にドットを置いていく

以上です。
canvasのピクセルの色を調べれるのは驚きでした。
調べるだけじゃなくて、上書きもできます。
https://developer.mozilla.org/ja/docs/Web/API/CanvasRenderingContext2D/getImageData

canvasすごい
AnsibleでNew RelicにDeployの通知をする


New Relic は無料版でもいつデプロイしたかどうかを記録する事ができます。
([参考NewRelicページ](https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/recording-deployments))

![image](https://qiita-image-store.s3.amazonaws.com/0/30079/4a310959-60ef-90cb-e53e-2acbcc844646.png)

Ansibleでは[newrelic_deployment](http://docs.ansible.com/ansible/newrelic_deployment_module.html)を使えば簡単にできます。
以下は抜粋ですが、こんな風にすればいけます。
なお、環境変数にNEWRELIC_API_KEYは設定しています。

```
  - name: checkout repository
    git: repo={{ repository }}
         dest={{ dest }}
         version={{ branch }}
         accept_hostkey=yes
    register: gitresult
  - name: notify deployment to New Relic
    newrelic_deployment: token={{ lookup('env', 'NEWRELIC_API_KEY') }}
                         application_id={{ newrelic_app_id}}
                         revision={{ gitresult.after }}
                         description={{ branch}}
```

# 参考
* https://docs.newrelic.com/docs/apm/new-relic-apm/maintenance/recording-deployments
*
Excel > link > 見えない空のテキストボックスを見つけ出す

```txt:動作環境
Excel 2013 on Windows 8.1 pro (64bit)
```

EXCELシートで以下のような現象があると報告を受けた。

- 特定のセルの一部においてカーソルがIの形になる
   - D列の右側30%程度のところ
   - E列の左側30%程度のところ

何か見えないオブジェクトがあるようだ。

そのオブジェクトの見つけ方は以下に情報があった。
http://ciao.aoten.jp/ciao/2008/07/post-e405.html

> 画面右に「オブジェクトの選択と表示」作業ウィンドウが表示され、シートに含まれる図形、クリップアート、グラフ、SmartArtなどのオブジェクトが一覧表示されます。

情報感謝です。

一覧から自分が実際には作っていないオブジェクトを選択してDeleteを押して削除する。

### 選択方法その2

- ホームタブ > オブジェクトの選択、を有効にする
- 何かありそうな範囲をその矢印で選択
  - マウス左クリックしたまま、右下に動かして選択領域を拡張し、左クリックを離す

これで見えないテキストボックスが見えるようになる。

こちらの選択方法だと、自分が実際に作ったオブジェクトを除外して削除できそう。

削除した後は以下を行って通常作業に戻る。

- ホームタブ > オブジェクトの選択、を無効にする
Ruby on Rails で Vimeoのコレクション（チャンネルかアルバム）にあるビデオ全てのVideo idを取り出す方法

Ruby on Rails で Vimeoのコレクション（チャンネルかアルバム）に登録されているビデオ全てのVideo idを取り出す方法を教えていただけないでしょうか？

動画サイト(YoutubeとVime）を利用して、Youtubeはプレイリストから、Vimeoはコレクションからそれぞれ登録されているVideo idを引っ張ってきて、rails上で動画を再生したいと思っています。

YoutubeのプレイリストからVideo idを取り出す方法はytというgemを使って以下のコードで取り出すことができました。

require 'yt'

Yt.configuration.api_key = "API_key"

playlist = Yt::Playlist.new id: 'PLrVMpe5AbZT5EN_3MEp5Xsc1mvWyS0OBn'

    playlist.playlist_items.each do |item|
        puts item.video_id 
   end

ただ、Vimeoで取り出す方法がわかりません。

よろしくお願いします！
BigQuery Standard SQLで配列を逆順にする方法

先日に公開した、文字列を逆順にする方法を応用して、配列を逆順にするUDFを書いてみました。
基本的な原理は文字列を逆順にする方法と同じです。

```sql
#standardSQL
CREATE  TEMPORARY FUNCTION ARRAY_INT64_REVERSE(arr ARRAY<INT64>)
RETURNS ARRAY<INT64> AS ((
  SELECT ARRAY(SELECT arr[OFFSET(ARRAY_LENGTH(arr) - seq)] FROM UNNEST(T.seqs) AS seq
  ) FROM (
    SELECT arr, GENERATE_ARRAY(1, ARRAY_LENGTH(arr)) AS seqs
  ) AS T
));

SELECT ARRAY_INT64_REVERSE([1, 2, 3, 4, 5])
```

BigQueryのUDFではジェネリックプログラミングを使えないので、ARRAYの要素の型を具体的に書く必要があり、やや面倒です。
composerだけxdebugを無効にする

2020/11/30 追記
**Xdebug 3.0のアップデートでxdebug.modeが実装され、環境変数でON/OFF出来るようになったのでxdebug.modeを活用してください。**

# やりたいこと

開発環境でxdebug使ってると、composerが
```
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebug
```
と言ってくる。気になる&遅くなるのがいや。composerだけxdebugなしにしたい。

# そうだ、php.iniを切り替えよう!!

ヘルプによれば
```
-c <path>|<file> Look for php.ini file in this directory
```

とあるのでphp.iniをコピーしてxdebugを無効にしたiniファイルを作る。
```
$ diff php.ini php-noXdebug.ini
1892d1891
< zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so
```

いちいち設定ファイルを指定するのが面倒なのでcomposerのaliasを作って完了
```
alias composer='php -c /path/to/php-noXdebug.ini /path/to/composer.phar'
```
[Unity]MonoDevelop便利機能


## ソースを整形してくれる

インデントとか一瞬でそろう

![フォーマット.jpg](https://qiita-image-store.s3.amazonaws.com/0/113504/7b1b32d3-d724-2c6e-19dc-618f9a144945.jpeg "フォーマット.jpg")
std::call_once on Ubuntu

Ubunbu(16.04)上で、ごく単純な`std::call_once`を呼ぶコードをコンパイル・リンクして実行すると、

```cpp
#include <mutex>
#include <iostream>

int main(void) {
    std::once_flag flag;
    std::call_once(flag, []() {
        std::cout << "hello world\n";
    });
}
```

```bash
$ g++ -std=c++11 a.cpp
$ ./a.out 
terminate called after throwing an instance of 'std::system_error'
  what():  Unknown error -1
Aborted (core dumped)
```

なぜか実行時に例外が投げられます。しかし`-pthread`を付けると、

```bash
$ g++ -std=c++11 a.cpp -pthread
$ ./a.out 
hello world
```

上手く動きます。MacOSでは`-pthread`なしでも問題ありませんでした。

参考：
http://stackoverflow.com/questions/15311469/throwing-an-exception-from-stdcall-once
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60662
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58929
【ざっくり】Android初心者向けAndroid開発チェックリスト(kotlinとRetrofitも使ってます)


今年の11月からAndroidアプリを開発しています。

内容としては以下のような開発環境です。

- Kotlin 1.0.3
- Retrofit 2.0.2
- Android Studio 2.2.2
- gms:9.2.0
- google-service 3.0.0
- Git
- Bitbucket
- Slack
- Mac

そんな開発環境下で


 - レビュワーからの同様の指摘を避け、品質の高いコードを書き、修正→レビューの頻度を最小限に抑える
 - レビュワーのレビュー負担の軽減
 - Androidアプリ開発の効率化

を目的に以下の内容をセルフチェックとして設けてみました。

初心者なので当たり前な内容がほとんどですが…

## チェック内容

### 見た目
 - [ ] ボタンレイアウトは統一されているか。ズレてないか。
 - [ ] 表示漏れ/表記ゆれは発生していないか。
 - [ ] 誤記はないか
 - [ ] 見切れなどは発生していないか
 - [ ] ダイアログなどで表示している文言はその処理の状態を表しているもしくはユーザーの満足度を下げる仕様になっていないか(実行中です…ではなく、検索中です…などの表現を用いているか、ダイアログの文言の速度は適切かどうか)
 - [ ] ユーザーが欲しい情報を適切(過不足ない状態)かどうか
 - [ ] 押しにくい、使いづらいなどのユーザーの満足度を下げる仕様になっていないか
 - [ ] 同タイトルiOSアプリで同等の機能がある場合はそれを参考にテキストの半角/全角、小文字/大文字の違いを意識して書いてるか確認する(UI周りで多い)
 - [ ] ゲームを除く、「ターゲットユーザーが使うであろうAndroidアプリ」、「ユーザー属性に関係なくCMなどをやってる人気アプリ」などをDLして実現予定の機能と同様の機能があった場合、それを参考にする
 - [ ] マテリアルデザインを利用する場合、マニュアルを踏襲した実装内容になっているか確認する


### 基本
 - [ ] gmsバージョンのアップグレードは慎重に行われているか。現行のバージョンにより近いバージョンで対応出来ないか確認する(大幅なアップデートで意図しない権限が付与されている場合がある)(例:バージョンが9.2.0でも実現出来ることを9.6.0などにしていないか)

 - [ ] 変数定義がvalになっているか(値設定時にエラーが出る場合は対象外)
 - [ ] typoがないか
 - [ ] メソッド名が動詞+実現したいこと+小文字から始まるキャメルケースの命名に沿っているか
 - [ ] 使われていない変数/メソッドが存在しないか
 - [ ] インデント半角空白4の設定で行われているか
 - [ ] 不要なimportが入っていないか(ctl + alt + Oで最適化になる)
 - [ ] 使ってないコードが無いか(XML含む)
 - [ ] kotlinExtension(Kotlinだと「import kotlinx.android.synthetic.main.fragment_search_tag_dialog.*」などと指定すればbindView不要)が適用されているか。不要なbindViewが混入されていないか
 - [ ] Androidのライフサイクルを無視した実装方法になっていないか
 - [ ] 不要な改行コードが入っていないか
 - [ ] 無理矢理ワンライナーで書いてみづらいコードになってないか
 - [ ] if(){}ではなくif() { } などスペースなどを空け、見やすいコードになっているか
 - [ ] git のcommitが適切かどうか(不要なものはgit rebase などでまとめる。コメントの内容が分かりづらい場合はgit rebase --amendで直す)
 - [ ] デグレがないか確認する(リファクタリングの意図以外で修正しなくても良い部分が修正されていないか確認する)
 - [ ] ファイル名とクラスが一致しており「ファイル名は頭大文字のキャメルケース」になっているか確認


### 実装部分
 - [ ] actvityで使用しているfragmentManagerになっているか(Fragment内で記述する場合はchildFragmentManager)
 - [ ] オプショナルの「?」や「!!」を不要に使っていないか
 - [ ] observableを新たに作る場合はflatMapを使い、作る必要がなく単純なtransformの場合はMapを用いる
 - [ ] viewTypeが一つにも関わらずgetItemViewTypeをoverrideしてないか
 - [ ] 不要なtoListが使用されていないか
 - [ ] 定数や固定値が「なんの固定値か」が理解しやすい名称になっているか
 - [ ] 挿入する値の初期値が決まっている場合は型定義は不要で直接値を代入する書き方になっているか(var intent = Intent(this, MainActivity::class.java))
 - [ ] メソッド名や、変数名がわかりづらくなっていないか。処理内容を端的に表現している名前になっているか。
 - [ ] tvStatus.textなどのテキストの値設定の場合、コード重複を避けるため                tvStatus.text = when (item.status) {
                    "contacting" -> holder.itemView.context.getString(R.string.contacting_message)といった内容に纏められないか確認する

 - [ ] 複数箇所で呼ばれる場合、Utilオブジェクトを作成し、そこから呼び出す方法を検討する
 - [ ] reciverで受け取る値や内容が変更となった場合はクラス名をリファクタリングする(Android Studioのリファクタリング機能を活用)


### その他

適宜、以下の内容を確認し、現行のAndroidアプリ開発と照らし合わせてリストに追加すべき内容があれば追加、
またはその後のレビューでチェック内容以外の指摘があった場合は追加していく。

[参考サイト](https://www.infoq.com/jp/articles/effective-code-reviews)
Slack で日報を運用する

[日報は死ね](https://blog.animereview.jp/slack-funho/) などと言われる昨今の IT 業界だけど、いま自分が所属しているチームにおいては情報共有の文化がまだまだ醸成されておらず、分報を導入するにはちょっとハードルが高いという状況にある。そういうチームにとって情報共有の習慣を身につけるステップのひとつとして日報という手法はまだまだ有効なのではないかと思っている。

カジュアルに日報を書いてもらうためには日報専用の Web サービスみたいなのを導入してはいけない。わざわざ Web ページを開いてまで他人の日報は読まない。普段使っているコミュニケーションツールにさりげなく日報を投稿させるほうがカジュアルに決まっている。

というわけで僕のチームでは Slack に日報用のチャンネルを作って投稿させることにした。

Slack で日報を運用するときのデメリットは「テンプレート機能がない」こと。別の場所にテンプレートを用意しておいて「そこからコピーしてきて」というのも手間なので、SlackBot のリマインダー機能を使ってテンプレートを投稿させることにした。

![](https://qiita-image-store.s3.amazonaws.com/0/16369/d2916899-57c8-1654-664c-73b5784cfd73.png)

設定方法はこんな感じ。

> /remind @here
> at 18:00 every weekday
> to 今日も一日おつかれさまでした！ 日報を書きましょう！
> ```
> ■ 今日のひとこと
> 
> ■ 今日やる予定だったこと
> 
> ■ 今日やったこと
> 
> ■ 困ったこと・学んだこと・共有したいこと
> 
> ■ 明日やる予定のこと
> ```

- `at 18:00 every weekday` で「平日18時」にリマインドできる
- `to` に指定する文字列は改行しても大丈夫だし、[マークダウンぽい記法](http://qiita.com/amanoiverse/items/186c71af92c9494ab26f)も使える

あたりがポイント。

いまのところこれでいい感じに運用できているので、日報を投稿させる場所に悩んでいる人は参考にして欲しい。
Cognos Report Authoring 逆引き辞典 A2 表のサイズをピクセル単位で調整したい

![image](https://qiita-image-store.s3.amazonaws.com/0/147246/e6e4e386-c672-dc8e-e5ec-9f182fa8e2b6.png)


■ 詳細手順
http://www.slideshare.net/ShinsukeYamamoto/cognos-reportauthoring-a2listsize

**Cognos Report Authoring 逆引き辞典 - 目次一覧**
http://qiita.com/shinyama/items/756cb4a40d31f6cee9f8
Force.com(Apex)でJWTを使ってハマったこと

# 概要

- Force.com（Salesforce.comのプラットフォーム）でWebAPIで使われるJWT（Json Web Token）を使う場面で秘密鍵ファイルの作り方がズレててハマったときのメモ
- もう少し詳しく書くと、手順どおりに実装したつもりなのに謎エラーが発生して動かない→数時間かけて対処方法が分かったときのメモ

# 謎エラーメッセージ

```
System.SecurityException: Invalid Crypto Key
```

# エラーになっている行の記述
- アプリケーションからのパラメータである秘密鍵の電子署名を取得する、感じの記述と思われる
 
```
Blob x = Crypto.sign('RSA-SHA256', input, privateKeyBlob);
```

※force.comのApexはJavaに似た記述の言語です

# 公式のリファレンスページ
- https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_classes_restful_crypto.htm

# 最終的に解決につながるページ

- http://blog.jeffdouglas.com/2010/07/06/using-rsa-sha1-with-salesforce-crypto-class/

※Jeff氏はforce.com MVPの人っぽい
※6年前の2010年に解決していた

# 要するになんだったのか
- 渡している秘密鍵のフォーマットが違うというエラー
- PKCS #8フォーマットである必要がある
- なんでハマるかって？APIコールの実装サンプルは載っているけど、そこで使う秘密鍵を作成するコマンドは載ってないから
    - 「pemファイルを準備する」という記述だと `ssh-keygen` か `openssl genrsa` で作ると思う

# 対処するためのコマンド
- うまくいかなかった鍵ファイル＝`input.pem`
- 下記コマンドで生成された `output.pem` を使えばOK

```
$ openssl pkcs8 -topk8 -nocrypt -in input.pem -outform PEM -out output.pem
```

# 変更前後のpemファイルを比べてみる
## 変更前のpemファイル

```
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAvmUhsJC9zK2VqGFFdb/AbM227wUhFHjWiVHLim5+CGyQgZvi
wjeObU0dbqLCD0Lr15yr6b9G0cv8zYrL/OjYqEkPj97LQ0/f0Qb3uGm+1rulC6UQ
(snip)
Q+YwQAFA182wiCN0a9sbFrpKeaLlP4BH7f1z1kKMAmVHShg7QaPV39yK2X0vlvHD
YRH2ap45+4GroiQQUBdtd/alnF9A4fKnN+2/Ck8glJnOGvLTOBcStx8=
-----END RSA PRIVATE KEY-----
```

## 変更後のpemファイル
- ヘッダー、フッター部からRSAが消えている
- （よくわからないけど）文字列部分ももちろん異なる。

```
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC+ZSGwkL3MrZWo
YUV1v8BszbbvBSEUeNaJUcuKbn4IbJCBm+LCN45tTR1uosIPQuvXnKvpv0bRy/zN
(snip)
gEft/XPWQowCZUdKGDtBo9Xf3IrZfS+W8cNhEfZqnjn7gauiJBBQF2139qWcX0Dh
8qc37b8KTyCUmc4a8tM4FxK3Hw==
-----END PRIVATE KEY-----
```
position:fixedによる画面位置固定が出来ない、そんなときもあるよね。

# おや、サイドナビゲーションの位置固定ができないぞ？

みたいな事態、たまに起きるんです。まあ起きてたんですよね。私の周りでも。
ちょっとしたあるあるなのでメモ残しておきます。

## position:fixedを使いたい理由

position:fixedの最大のメリットは画面位置に対しての絶対座標指定で手軽に固定出来ることですが、何よりスクロールイベントを見て位置を修正し続けるといった事をする必要もなく低負荷です。かつてはiOSなどのモバイルブラウザで使えなかったのですが、今となっては使えるのでハンバーガーメニューの固定などに使います。

まあそもそもヘッダ等の固定の是非というものはあるのですが（実のところ、私はグローバルナビゲーションを追従する仕様は否定的に見ています。回遊率を上げるためと言われますが、それに寄与しているとも思っていません)、この要件は非常にありがちな為position:fixedは度々こういった用途に用いられます。

## position:fixedが使えない状況
position:fixedは親要素からの位置を取得したりといった事を行いません。あくまで画面に対しての絶対位置指定です。親がrelativeだろうがabsoluteだろうが使えるものです。
が、ひとつ大きな例外があります。

**親要素にtransformを掛けられている場合です。**

あれ？別になんの変形も指定してないし、特にそんな様子もないけど、fixedが効かなくなっちゃってるよ？って？
そうだよね、だから悩んでるんだよね、きっと。

仕様的なところは多分この辺読んだら出てくるのかな？面倒だからそこまで追いかけてない。暇なら読んでちょ。

https://www.w3.org/TR/css-position-3/


## なぜtransformが掛かってるの？

実はtransformには変形以外の使い方としてtransform3d指定を付けることでその要素のレンダリングをGPU任せに出来るという一種のパフォーマンスチューンに使われる一面があります。
こいつが曲者で、たしかにハンバーガーメニューなどで画面の押し出しをしたい場合などに使いたくなるんですが、反面こいつを掛けることでposition:fixedが効かなくなります。これ知らずにやっちゃって僕も割と面倒な事になった淡い記憶があります。

要するに何らかのJSだったり、jQueryプラグインだったり、CSSライブラリが知らぬ間にtransformを掛けてる場合があるわけです。特にサイドからドロア出すやつとかな！やつとかな！やつとかな！（大事な事なのでｓ

## まとめ

結局のところ拾い物のコードは注意しましょうとしか言えないです。DOMを操作してしまうJSはどうあがいてもドキュメントに何らかの影響を及ぼします。コードを全部読めとまでは言わなくても、明らかにCSSを操作しているような箇所なんざは軽く検索して見つけれたりしますんで、拾い食いは慎重にしましょう。（このケース、何度か見てるんですが、大体拾い食いのせいです）
Shinyでスパークラインを表示する

役に立つかは不明だが、表示されるとちょっとうれしいスパークラインをShinyで出してみましょう。

##リソース
####git_hubオフィシャルページ
http://bart6114.github.io/sparklines/
####設定項目の解説(利用しているJSライブラリのページです)
http://omnipotent.net/jquery.sparkline/#s-docs

##インストール方法
まだCRANにはありません。githubからインストールしましょう。
`devtools::install_github("Bart6114/sparklines")`

###動作コード
オフィシャルサンプルをベースにちょっとだけいじってみました。これ以外にbulletチャート、pieチャートが使用できます。まだ開発中ということもありW/Hを指定してもサイズに収まらないものがいくつかあるようです。

```
library(shiny)
library(sparklines)

server <- function(input, output) {
  output$spark1 <- renderSparkline(sparkline(runif(input$values, -5, 5), "line", width = 150, height = 30))
  output$spark2 <- renderSparkline(sparkline(runif(input$values, -5, 5), "bar", width = 150, height = 30))
  output$spark3 <- renderSparkline(sparkline(runif(input$values, -5, 5), "discrete", width = 150, height = 30))
  output$spark4 <- renderSparkline(sparkline(runif(input$values, -5, 5), "tristate", width = 150, height = 30))
  output$spark5 <- renderSparkline(sparkline(runif(input$values, -5, 5), "box", width = 150, height = 30))
}

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      sliderInput("values", "Number of values:", min = 5, max = 100, value = 10)
    ),
    mainPanel(
      div(sparklineOutput("spark1")),
      div(sparklineOutput("spark2")),
      div(sparklineOutput("spark3")),
      div(sparklineOutput("spark4")),
      div(sparklineOutput("spark5"))
    )
  )
)

shinyApp(ui = ui, server = server)
```
<img width="506" alt="スクリーンショット 2016-11-17 09.24.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/103775/b7c8f022-4ab3-f19e-1ce8-228b154ae6ea.png">

「おー」って感じですね！。「おー」の後なかなか分析につながらないのがスパークラインではありますが、それっぽさ醸成のために飾りとして使うのはアリかと思っています。
Cognos Report Authoring 逆引き辞典 A1 レポートのレイアウトを整える

![image](https://qiita-image-store.s3.amazonaws.com/0/147246/e3944da1-7dc6-a212-8735-7759cd163aa6.png)



■ 詳細手順
http://www.slideshare.net/ShinsukeYamamoto/cognos-reportauthoring-a1layout

**Cognos Report Authoring 逆引き辞典 - 目次一覧**
http://qiita.com/shinyama/items/756cb4a40d31f6cee9f8
python3の標準出力でUnicodeEncodeError奮闘記

# 標準出力をするとUnicodeEncodeError

```python3
>> print("ほげほげ")
UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-3: ordinal not in range(128)
```

デバッグがし辛かったので解決方法を調べた．

# 環境を日本語化する
以下の環境で解決しました．
CentOS6.5
Python3.5.2
日本語化する方法はこちら
[http://d.hatena.ne.jp/yk5656/20140527/1402758009](http://d.hatena.ne.jp/yk5656/20140527/1402758009)

```python3
>> print("ほげほげ")
ほげほげ
```

原因は単純に日本語がその環境にインストールされていなかった．
環境を日本語化することで解決．


奮闘記とはいえ，筆者がUnicodeEncodeErrorで挫折を繰り返していただけです．


## Ubuntuの場合はこっちを参考にすると良さそう
[http://qiita.com/toshihikoyanase/items/47407551d8f3d4e8c39a](http://qiita.com/toshihikoyanase/items/47407551d8f3d4e8c39a)
認定スクラムマスター研修とは？

2016年11月9日〜11日に大阪で江端さんの認定スクラムマスター研修を受けてきたので、その研修で得られた内容をまとめました。

# 認定スクラムマスター研修とは？
認定スクラムマスター研修（CSM）は、認定スクラムトレーナー（CST）によって開催される Scrum Alliance 認定研修です。 

# スクラムとは
- プロジェクトの現状を把握するフレームワーク
- 生産性は向上しない
 - 人が成長し結果として向上する
- 19個のルールを満たせば何を使っても良い 

## 弱点
- チーム存在期間が3ヶ月未満
 - 文化が作れない
- プロダクトの複雑性
 - 単純だと向いてない
 - 安定したら辞める
- マーケットに対して不確実なものの判断はできない 

## 人気の理由
- マーケットで勝負する必要がある
 - 以前は作ったら売れた 
- みんなやっている

## 最適な人数は？
- ７± ２人

## 自律的組織化とは？
- 持続可能性
 - 息切れしない 
- 文化形成
 - 自ら力を発揮する
- 流動的でもOK  

## 自律的なチームとは？
- ゴールが明確
- 個人がゴールを達成するために何をすべきか、「0.1秒以内」に判断して行動している
- チームのバウンダリーが明確
 - 静的なルール
 - 役割 

## アンチパターンは？
- 人数を増やす
 - 自律的なチームを壊すので、別チームをつくるのが良い
- リリーススプリント
 - スプリント完了毎にリリースできる状態がベスト
 - ウォーターフォールと同じ

## ベロシティを安定化させるために必要な期間は？
- 3ヶ月
 - 3ヶ月でダメなら失敗ととらえる 

## スプリントプランニングが重要
- 設計まで行う
- 実現可能性も明らかにする
- 内容を最優先でやる
 - 計画だけでおわらせない
 - スプリントプランニング以外は時間を優先する
- 後は作業するだけにする
 - メンバー間のスキル格差が無効化できる

## レトロスペクティブ 
- チームが生産性を向上するために次のスプリントで行わなければならない具体的なアクションを1つ以上決める 

## 役割および求める能力
- 役割を果たすのが目的

### プロダクトオーナー
- スクラムチームのROI
 - コスト削減
 - 手間を省く
 - 認識を間違わない
- 求められる能力が変わる
- 情報収集能力
- 戦略に基づいた決断力
- 決断するために必要な情報収集能力

### チーム
- できないことをできないと言う
- 生産性向上を常に意識して動く  

# スクラムマスターとは
- 物事や事象に謙虚
- 自分と異なる意見を取り入れ、共存させ、新しいアイディアを出す
- 人に興味がないとダメ
 - 人に対して接するため 
- 勝手に決めつける人はダメ
 - 固定概念、先入観で議論するのは危険 
- 権限はいらない
- 耐える力が必要
- 着実に進める
- プロジェクトのリスクを顕在化する 
- ステークホルダーの思考の流れを把握する
- プロジェクトにおけるサーヴァントリーダー
- シープドック 

## 一流のスクラムマスターとは？
- １チームに専念できている

## 必要なスキル
- ティーチング
- ファシリテ‐ティング
- メンタリング
- コーチング
- シチュエーショニング

## スクラムマスターとしてスキルアップするには？
- 良い師につく（お弟子さん制度）

# その他
## 決定とは
- (時間 vs 内容) / リスク

## プロセス変更とは
- 80%を目指す（100%は目指さない）
- 20％のデメリットを敢えて作る

## 会議での役割
### ファシリテーター
- ゴールの明確化と確認
- 現在地点の認識を持ち、参加者全員のすべきことを明らかにすることに責任を持つ

### 議事録
- 発言内容をもらさず、かつ内容を要約して参加者全員が内容を理解することに責任を持つ

### その他
- ゴールの実現に協力し、ファシリテーターのすべきことに注力する
- すべき事を実現・実行するために最善を尽くす

# 所感
スクラムマスターを目指さない人も、スクラムを理解するのには最適な研修だと思います。 
もちろん、スクラムマスターを目指す人やスクラムマスターにとってもいろいろな気づきがあり、即現場で実践できるノウハウが得られると思います。 

# 補足
2年毎に更新が必要（$100)
- [参考ページ](https://www.linkedin.com/pulse/how-renew-your-certified-scrummaster-csm-membership-/)
MacBook Pro (Retina, 13-inch, Early 2015) セットアップ

#初めに
指導教官のグラントから新しい計算機を買ってもらえることになったので、MagSafe の付いてる型落ちのを安くで買ってもらいました、English keyboard デビューです。
2008 のMacBook Air をまだ使ってるくらいなので、新鮮ですねぇ。

以下自分のセットアップの流れです。

#OS のクリーンインストール
まずもってやるのはクリーンインストールです、何はともあれ。
[ここを参照](https://wayohoo.com/mac/tips/how-to-clean-install-macos-sierra.html)しました、アカウントを切らずに最初からクリーンインストールもできるかもわからないのですが、よくわからなかったのでまず適当にアカウントを作った後、載ってたやり方でクリーンインストールしたという感じです。
途中でApple ID の二段階認証がうまくいかず他のマシンでApple ID のパスを更新してからやり直す羽目になりましたが、普通は概ねうまくいくはずです。

#使い勝手の為の設定
だいたいデフォルト、ただし、、、

##Doc 周り
まずはDoc を左に、普段は隠す設定に。
ホットコーナーはなんとなく右側が何かを探すときにしているので、右上をデスクトップ右下をMission Control(あるいはアプリケーション)
左上をDashboard にしてみました、あまり使わないけど天気とか見ることもあるので。
左下はLaunchpad にしてみました、使うかなぁ、、、

##トラックパッド周り
スクロールをデフォルトとは逆にしてます、下に行きたい時は下に引っ張るという感じです。
あとタップでクリックと三本指でホールド、分かりにくいことにこれだけちょっと違うところに置かれているので探し出すのに少し苦労、最終的には[アップル様に載ってました](https://support.apple.com/ja-jp/HT204609)のでめでたしめでたし。
あとクリック音がフェイクだと！びっくりしたついでに消えていただきました。

##ターミナルでの名前
Sharing （共有）からコンピュータの名前というやつを適当に変更。
英語でアカウントを切ったのでまぁ大丈夫でしたが、それでも無駄に長いので。
日本語で切ったら名前の漢字を変な読みされたの嫌な気持ちになるのです、、、

##ディスプレイの解像度
せっかくRetinaなので広く使いましょう、ということで最大に広く使っています。
あと明るさの自動調整は切りました。

##キーボード
ここで日本語を足しました、google 日本語を入れるか迷うところですがまだ入れてません。
ライブ変換がチラつくのが気になったので、これは切っておきます。
あと後ほど気になったので、スペルミスの自動補完を切りました、大文字かも切っておきます。
ハイライトで十分。

追加でcaps lock とcontrol の入れ替えも行いました、使いにくいもんなぁと思ったら割とメジャーな変更だったと後から検索して納得しました。

#homebrew
何はともあれ[homebrew](http://brew.sh)

##Maxima
[こちらにぶら下がってるそうです、従ってhomebrew/science/maxima で呼ばねばならない。](http://brew.sh/homebrew-science/)
ここでいつも時間が掛かるので、気をつけなければいけないポイント。
まずmaxima を取ってくる前にgnuplotを片付けるべきなのです。

###gnuplot
ありがたいことに綺麗にまとまっていました、[こちらです](http://qiita.com/noanoa07/items/a20dccff0902947d3e0c)。
homebrew で出力先を指定してインストールする必要があります。

```
brew install gnuplot --with-x11
```

この辺の何処かの過程でx11がインストールされてたので、まぁよし。
あとはgnuplot で

```
set terminal
```

としてx11 が候補で出てきたらok、念のため

```
plot sin(x)
```

とかがちゃんと描かれるかみておきました。

###Maxima に戻って
ありがたいことにrlwrap も呼んでくれたので普段はrmaxima を呼んでいます。
あとは

```maxima-init.mac
gnuplot_command:"/usr/local/bin/gnuplot"$
```

を書いておいて正しいgnuplotを呼んでくれるようにしてあげましょう。
ここでもplot2d とかで同様に適当な関数を描いてみてチェックしました。

グラフィック周りがいつも時間泥棒なので、今回はややすんなり行きました。
次からはgnuplot からやっていこうと決意。

##Haskell
stack で、だそうなので。
homebrew でstack-haskell を取ってくる。
このあといつもどうしたら良いかわからなくなるのだけど、たぶんstack setup をしてghc を取ってこないといけない、のだと思います。
今回はThe Glorious Glasgow Haskell Compilation System, version 8.0.1 になってくれてました。

##.dotfiles
デフォルトからあまり動かしてないので閑散としてますが[こちら](https://github.com/raydsameshima/dotfiles)が私の.dotfiles 置き場になってます。
不可視ファイルにしてホームディレクトリにおいて、普段はシンボリックリンク？で参照してもらうようにしてます。
[こちらのまとまった記事を参照しました](http://qiita.com/okamos/items/7f5461814e8ed8916870)。

ちょっとディレクトリの名前とかを変えたので微調整しました。

##homebrew-hep
一応高エネルギー屋の端くれなので、いくつか必要なものが[ここ](http://davidchall.github.io/homebrew-hep/)にあるので、メモ。
いつかここに自分のパッケージをおきたいもんです。

##mit-scheme
ちょっと遊びでSICP を読みだしているのでSchemeを。
真面目にやるなら[Gauche](http://practical-scheme.net/gauche/)とかの方が良いのかもしれませんが。

#todo?
##vim
ちょっと気になっているのはvim ですが、特にヘビーな使い方をしてないのでmac に最初から載ってるのを使っています。
もしかしたらこの辺の最初からバンドルされているソフトもhomebrew で管理した方が良いのかもしれませんが、どうなんでしょう？
[Microsoft][ASP.NET] ASP.NET MVC 5リンク集

# リンク集

- リファレンスマニュアル<br>https://msdn.microsoft.com/ja-jp/library/dn448362(v=vs.118).aspx
- チュートリアル<br>Visual Studio 2013のテンプレートからアプリを作成<br>http://www.asp.net/mvc/overview/getting-started/introduction/getting-started
- Entity Framework 6と組み合わせたチュートリアル<br>http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

## リファレンスマニュアル

- Controllerクラス<br>コントローラの基底クラスです。<br>https://msdn.microsoft.com/ja-jp/library/system.web.mvc.controller(v=vs.118).aspx
VMwareセキュリティアドバイザリVMSA-2016-0020

vRealize Operations 6.xについて、セキュリティアドバイザリが出ていました。

* [VMSA-2016-0020: vRealize Operations update addresses REST API deserialization vulnerability.](http://www.vmware.com/jp/security/advisories/VMSA-2016-0020.html)

使用してないので、簡単にメモだけ。

* REST APIでのデシリアライズに関連した脆弱性。
* 6.4.0版が出ているので、それに更新すればOK。<br/>※6.4版ではDirty COW問題も修正されている。
VMwareセキュリティアドバイザリVMSA-2016-0019

VMware WorkstationとFusionについて、セキュリティアドバイザリが出ていました。

* [VMSA-2016-0019: VMware Workstation and Fusion updates address critical out-of-bounds memory access vulnerability](http://www.vmware.com/security/advisories/VMSA-2016-0019.html)

使用してないので、簡単にメモだけ。

* 範囲外のメモリへアクセスされる脆弱性。
* Workstationは12.5.2で、Fusionでは8.5.2で解消
* Workstation ProとFusionではドラッグアンドドロップとコピーアンドペーストの無効化がワークアラウンド（※Workstation Playerはワークアラウンドなし）
iPhoneでvideoタグにloopオプションを入れている場合、動画再生後にサムネイル表示に戻す方法

# やりたいこと
iPhoneではvideoタグをクリックすると別画面で動画が流れますが、
その後元のページに戻るとサムネイルではなく動画の画面が表示されてしまいます。

この時に動画の画面ではなくサムネイルを表示させる場合は下記の方法で対応できました。

# 対処法

```js
$('video').on('pause',function(){
  $(this).load();     
});
```

上の方法では、videoタグにloopがある場合です。無い場合はpauseをendedにすることで、サムネイルを表示させることができました。


#参照

http://stackoverflow.com/questions/14245644/html5-video-end-of-a-video-poster

http://www.antytle.com/js/video-element-events#pause
iPhoneでvideoを挿入するときにデフォルトの再生ボタンを消す方法

# やりたいこと
iPhoneでは再生ボタンが表示されサムネイルが隠れてしまうので、CSSで再生ボタンを隠したい。

#対処法

```style.css
*::-webkit-media-controls-panel {
  display: none!important;
  -webkit-appearance: none;
}

*::--webkit-media-controls-play-button {
  display: none!important;
  -webkit-appearance: none;
}

*::-webkit-media-controls-start-playback-button {
  display: none!important;
  -webkit-appearance: none;
}
```

#参照元
http://stackoverflow.com/questions/8911247/hide-iphone-html5-video-play-button
Kivyのインストール

Kivyのインストールで地味につまずいたのでメモ

Kivyは`pip`コマンドでインストールすることができるのでやってみる

## 前提条件
|OS・ミドルウェア|バージョン|
|:----|:-----|
|OS|MacOS |

```
$ pip install kivy
Collecting kivy
  Downloading kivy-1.9.1.tar.gz (16.4MB)
    100% |████████████████████████████████| 16.4MB 72kB/s 
    Complete output from command python setup.py egg_info:
    Using distutils
    
    Cython is missing, its required for compiling kivy !
    
    
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/private/var/folders/nl/t_zwrvg91g3_9x7hg8b_cd7r0000gn/T/pip-build-j9gy40qn/kivy/setup.py", line 184, in <module>
        from Cython.Distutils import build_ext
    ImportError: No module named 'Cython'
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /private/var/folders/nl/t_zwrvg91g3_9x7hg8b_cd7r0000gn/T/pip-build-j9gy40qn/kivy/
```

なんか「Cythonがない」とエラーが出ている模様。公式ドキュメントには`pip`コマンドでのインストールの時にCythonが必要になる記載が見つからなかったけれど。

気を取り直して先にCythonをインストールする

```
$ pip install cython
Collecting cython
  Downloading Cython-0.25.1-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (4.1MB)
    100% |████████████████████████████████| 4.1MB 297kB/s 
Installing collected packages: cython
Successfully installed cython-0.25.1
```

改めてKivyをインストール

```
$ pip install kivy
Collecting kivy
  Using cached kivy-1.9.1.tar.gz
Collecting Kivy-Garden>=0.1.4 (from kivy)
  Downloading kivy-garden-0.1.4.tar.gz
Collecting requests (from Kivy-Garden>=0.1.4->kivy)
  Downloading requests-2.12.1-py2.py3-none-any.whl (574kB)
    100% |████████████████████████████████| 583kB 1.4MB/s 
Building wheels for collected packages: kivy, Kivy-Garden
  Running setup.py bdist_wheel for kivy ... done
  Stored in directory: /Users/<ユーザ名>/Library/Caches/pip/wheels/45/ef/1e/12e29951308821d5c80cbd14b3aef28f76a0380309885a4adf
  Running setup.py bdist_wheel for Kivy-Garden ... done
  Stored in directory: /Users/<ユーザ名>/Library/Caches/pip/wheels/27/08/88/88938a7cf5b20073ff1f0432b7c0dd172531185cc74d97f5da
Successfully built kivy Kivy-Garden
Installing collected packages: requests, Kivy-Garden, kivy
Successfully installed Kivy-Garden-0.1.4 kivy-1.9.1 requests-2.12.1
```

インストールし終わったらこんな感じ

```
$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (or define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
Cython (0.25.1)
Kivy (1.9.1)
Kivy-Garden (0.1.4)
pip (9.0.1)
requests (2.12.1)
setuptools (28.8.0)
wheel (0.29.0)
```

ひとまずこれでインストール自体はできた。
技術英語 > If you [go past the time limit], resign yourself to the idea that ..., and [flush it out] the hard way. 

@ Code Complete (No. 17703 / 36077)

近道の方法を試すための時間制限を設けて

> If you <font color=red>go past the time limit</font>, resign yourself to the idea that ..., and <font color=red>flush it out</font> the hard way.

<hr>
[flush it out] the hard wayに関連して思い出したのは

@ 調理場という戦場 by 斉須政雄

> まず彼は、最初の方法を１日でやめた。１日でやめる決心は、なかなかつかないですよ？なのに彼は次の日にはもう、静かに隅っこの方で皮をきちんと剥いた違う方法を試していた。


<hr>
go past the time limit に関連して思い出したのは

> We're five seconds behind schedule. 

http://qiita.com/7of9/items/ed225be5a86f916af5d0

時間通りに事をなしとげないと未来が変わってしまうという状況の中で。

( 参考 「ニワカ雨ニモマケズ」by NICO Touches the Walls ) 

### 余談

自分がQiitaに蓄積している情報というのは、将来に時間制約が厳しい中でベストパフォーマンスを出せるようにという考えがある。
そういう時は調べ物をしている時間が惜しい。過去に取り組んでおいた情報は、(特に自分がしたことは、)頭の片隅に残っていて、そのキーワードを持ってQiitaを通して検索することができる。
Qiita以前のシステムでは検索に時間がかかり、思い通りの効率で過去の作業を掘り起こすことはできなかった。

そういう点でQiitaというシステムには非常に感謝をしている。

何が将来の自分に役立つのかはまったく分からない。99%くらいは無駄なことをしているかもしれないが、残り1%が役立つ効果は大きい。
scikit-learnでkmeans++

# 動機
自前のクラスタリング手法においてkmeans++を使いたい．
`sklearn.cluster.KMeans`の初期化方法にkmeans++があるので，これをなんとか呼び出したい．

# できる
```py

from sklearn.cluster.k_means_ import _k_init
from sklearn.utils.extmath import row_norms
import numpy as np

# x: データ, k: クラスタ数
c = _k_init(x, k, row_norms(x, squared=True), np.random.RandomState())
```
Microsoft Connect(); 2016 雑感(おもに Xamarin 周り)

[Microsoft Connect(); 2016](https://connectevent.microsoft.com/) の、日本でのライブを観てました。

## Visual Studio for Mac

* [Visual Studio for Mac](https://www.visualstudio.com/vs/visual-studio-mac/)

まあ、記憶から消してたアレ。
Xamarin Studio をベースにした IDE だけど、 .NET Core アプリ開発や Azure 連携が入るみたい。

個人的には、これは標準のIDEとして使いつつも、コーディングには JetBrains の [Rider](https://www.jetbrains.com/rider/) に期待している。VS for Mac にも ReSharper や CodeLens 並みの機能が載ってくれば別だけど。

Xamarin Studio は OSS だったけど、VS for Mac はどうなんだろう？ MonoDevelop との関係は？

## Visual Studio 2017

* [Visual Studio 2017 RC](https://www.visualstudio.com/vs/visual-studio-2017-rc/)

何というか、 Xamarin の導入が簡単になってるといいな。

## Visual Studio Mobile Center

* [Visual Studio Mobile Center](https://www.visualstudio.com/vs/mobile-center/)

なんか Microsoft の ｍBaaS はこれになるっぽい？
サイトに、

> Mobile platforms	Objective-C, Swift, Java, Xamarin, React Native
> Lifecycle features	Build, Test, Crash, Beta Distribution, Analytics
> Cloud features	Authentication, Easy tables, Offline sync

と書いてあるので。あれ？ [Azure Mobile Apps](https://docs.microsoft.com/ja-jp/azure/app-service-mobile/app-service-mobile-value-prop) と被るよねこれ？

mBaaS に加えて CI の要素もあるようなので、AWS の Mobile Hub や Google Firebase を超える機能を持つことになりますね。

## Xamarin.Forms.Platforms.Tizen

ふいたｗ
まさかの Tizen 復活、そしてそれは Xamarin.Forms のチカラによってｗ

なんか、 「Xamarin.Forms.Platforms.WinForms」 とか自作できそう。

## かんそう

なんか勢いあるねマイクロソフト。

[Google が .NET Foundation に加わったり、MS が Linux Foundation に加わったり](http://www.windowscentral.com/microsoft-joins-linux-foundation-welcomes-google-net-community) 、企業間抗争もしてないし、オープンソースとも仲良くやってる感じ。

ライブ始まってから２時間経っても Windows のトピックが出てこなかったり、デモが Mac だったり iPhone だったり、「もうそんな時代じゃねーんだよ」とは以前から言ってるけど、ここまでとはｗ

日本のライブのゲストに及川さん(は元MSだけど)や、伊藤直也さんを呼んだのも、そういう「広がり」を意識してるのかな？

いろいろな世界と仲良くしつつ、モダンさを保ち続けられる C# と .NET が使える場所を広げていく。
改めて、「.NET Framework と C# ってスゴい」ですね！

Xamarin人材としては、Xamarin Studio →  Visual Studio for Mac や Xamarin test cloud → Visual Studio Mobile Center など、徐々に「Xamarinブランド」が Visual Studio に吸収されていくのは仕方ないけど、一方で Tizen 対応などに Xamarin Platform の発展を見ることができるので、Microsoft のなかで重要なポジションに位置するモノであり続けるのかな、と思いました。

いや、Stackoverflow や teratail で Xamarin タグが無くなると質問するのに困るし、「Xamarinはいいぞ！」って言い続けたいしね。

ともあれ、「ざまりん三銃士」おつかれさまでした！

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">なう <a href="https://twitter.com/hashtag/MSFTConnect?src=hash">#MSFTConnect</a> <a href="https://twitter.com/hashtag/vsjp?src=hash">#vsjp</a> <a href="https://t.co/VLbtzYV2rL">pic.twitter.com/VLbtzYV2rL</a></p>&mdash; 田淵 義人＠エクセルソフト (@ytabuchi) <a href="https://twitter.com/ytabuchi/status/798883310277513216">2016年11月16日</a></blockquote>
<script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

[Connect(); の２日目](https://connectevent.microsoft.com/#day2) も Visual Studio や Xamarin のトピックがあるので、あー睡眠時間がー。 

(ライブ中に naoya_ito さんが、テストサービスについて「Windows Phone は使えないんですかね？」って場を凍らせてたけど、KeyNote後の Miguel と Nat への Q&A で「対応するよ」的なこと言ってた気がする)
anyenvを用いたndenvの導入

# ndenvの導入方法
　今回はanyenvを用いて、ndenvを導入していきます。導入する過程は、下記のコマンドを入力していくだけです。

anyenvでインストールできるenvを表示します。
```
anyenv install -l
```

インストールしたいenvを選択し、インストールします。
```
anyenv install ndenv
```

インストールできたら、ndenvで使用したいバージョンを確認し、インストールします。

```
ndenv install -l
ndenv install v6.0.0
```

インストールしたenvのバージョンを設定・変更を行うには、以下のコマンドで行います。

```
ndenv global v6.0.0
```

他のenvも同様にインストールすることが可能です。
Visual Studio for Macをインストールしてmono4.8+が無いと怒られた時の対処法

__もうこんなことは起こらないのでブラウザバック__

![スクリーンショット 2016-11-17 3.19.49.png](https://qiita-image-store.s3.amazonaws.com/0/104085/23d10b1c-4f83-14b1-b1a7-ba330c5893c5.png)
こんな感じのエラーを吐いて起動が出来なくなってしまった人向け．

Xamarinで開発しているとシステムに複数のmonoがインストールされていることがあるが（私の環境では他に4.6.2，あとbrewで入れたものも入っている），その時優先的に呼び出される
`/Library/Frameworks/Mono.framework/Versions/Current`
の差す先が4.8.0以上でないと認識してくれない様子．

暫定的な対処法としては，そのCurrentの差す先を変えればいいので，
`sudo ln -nfs 4.8.0 Current`
で参照先を変更する．
これで大丈夫かと思われる．
なおこの状態でもXamarin Studioの方は動作した．

そもそもMono4.8.0がインストールできてないんだけどっていう人向けの裏ルート
https://dl.xamarin.com/MonoFrameworkMDK/Macx86/MonoFramework-MDK-4.8.0.344.macos10.xamarin.universal.pkg
どっから落としてきてたっけっていうのを確かめてたら確認できたURL（ちゃんとインストーラ走らせれば落とせるはずなので，最終手段的に

画像に[Download Mono Framework](http://www.mono-project.com/download/)ってあって押してみても現在の最新版が4.6.2だからこれは詰みか，と思ってしまった．
Release Notesには4.8.0の記述があるからそろそろ公式リンクが貼り出されそう？
GitHubの基本的な使い方

# GitHubの基本的なコマンド
　これは個人的なメモとして書いています。曖昧な点を思い出すのに活用してください。


## pushするための過程

　まず、リモートリポジトリの状態を確認する。

```
git status
```

　次に、変更された点があれば、その変更ファイル(memo.txt)をaddする。

```
git add memo.txt
```

　そして、commitして、そのコメントを記述する。

```
git commit
```

　最後に、親ブランチ(origin)に子ブランチ(dummy)をpushする。

```
git push origin dummy
```

**Point**
　pushしたログを確認する。

```
git log
```

 より見やすいログの表示方法。

```
# commitを一行で表示
git log --oneline

# commitをグラフで表示
git log --graph

# commitをグラフ且つ一行で表示
git log --oneline --graph
```

### commitをやり直す方法
　直前のcommitをやり直すためには、commitする際に--amendを記述する。

```
git commit --amend
```

### commit自体を削除する方法
　ワークディレクトリの内容を保持して、commitだけを削除する。

```
git reset --soft
```
Macの「Too many open files」エラーを解消



「Too many open files」と出てで、ファイルが保存できないことがあった。
Railsを起動して、Gulpも起動してほげほげしてるとよく起こる。
Sublime Textでこのエラーが出ると設定も何もかも保存されないし、HotExitも効かないし、ファイルは開けないし詰む。
Atomでも起こるしOSのエラーと気づけた。
どうやらMacのファイルの上限に引っかかってしまっている模様。


### 確認する（初期）
コマンドで現在の上限数を確認。

```bash
$ launchctl limit
```

```bash                               
	cpu         unlimited      unlimited      
	filesize    unlimited      unlimited      
	data        unlimited      unlimited      
	stack       8388608        67104768       
	core        0              unlimited      
	rss         unlimited      unlimited      
	memlock     unlimited      unlimited      
	maxproc     709            1064           
	maxfiles    256            unlimited 
```

`maxfiles`が`256`になっている。これが上限に達しているらしい。


### 設定ファイルを作成する

`/Library/LaunchDaemons/limit.maxfiles.plist`に設定ファイルを作成する。初期ではファイルはないはず。



```bash
$sudo vi /Library/LaunchDaemons/limit.maxfiles.plist
```

`vi`でも`nano`でも`code`でもお好きなエディタのコマンドで下記コードをコピペ。


```limit.maxfiles.plist
<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">  
  <dict>
    <key>Label</key>
    <string>limit.maxfiles</string>
    <key>ProgramArguments</key>
    <array>
      <string>launchctl</string>
      <string>limit</string>
      <string>maxfiles</string>
      <string>524288</string>
      <string>524288</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>ServiceIPC</key>
    <false/>
  </dict>
</plist>  
```
`524288`としてますが、よしなな数値で構いません。

### plistファイルを読み込んで適用させる
```bash
$ sudo launchctl load -w /Library/LaunchDaemons/limit.maxfiles.plist
```
再起動でもできるっぽい。


### 適用を確認する
```bash
$ sudo launchctl limit                                              
	cpu         unlimited      unlimited      
	filesize    unlimited      unlimited      
	data        unlimited      unlimited      
	stack       8388608        67104768       
	core        0              unlimited      
	rss         unlimited      unlimited      
	memlock     unlimited      unlimited      
	maxproc     709            1064           
	maxfiles    524288         524288   
```

`maxfiles`が`524288`になった。
「Too many open files」のエラーも出なくなった。
よかったよかった。
Docker for Mac をとりあえず入れてみてnginxを立ててみる

# そもそも[Docker](https://www.docker.com/)とは

- ホストOS上に仮想的に別のOSを動かすための仮想化ソフトウェア
- Docker Inc. が主導で開発しているOSS
- ハイパーバイザー型の仮想化サービスではなく、コンテナ型の仮想化サービス
- 環境の整備が簡単なため、CI（継続的インテグレーション）を実現するための重要なテクノロジとして注目されている。

![image](https://qiita-image-store.s3.amazonaws.com/0/142359/1811040a-36ba-24b8-8f14-f05c3b37fe25.png)

# Docker の特徴

- コンテナ型仮想化のため、OS部分を一部ホストOSと共有するため、VMごとにOSをインストールをする必要はない
    - ハイパーバイザ型仮想化（VMWare ESXi）やホスト型仮想化（Linux KVM）は、VMごとにOSをインストールする必要がある
- コンテナはカーネル部分をベースのOSと一部共有するため、リソース使用量が非常に少ない
- Docker社が用意しているリポジトリ（DockerHub）に、構築済みのコンテナイメージがあるので、構築作業が不要
- コンテナの作成からプロダクトのインストール・設定するまでの手順を、“Dockerfile”というテキストファイルに定義できる（インフラのコード化）。このDockerfileを用いることで、Dockerが導入されている環境であればどこであっても、準備した環境を稼働させられるため携帯性が高くなる。

(一部引用：https://thinkit.co.jp/story/2014/12/02/5456)

# Docker for Macをインストール
#### Docker for Macとは
- Mac OS X上でVirtual BoxなしでDockerを利用するためのツール

#### インストール
- ダウンロードはここから　→　https://docs.docker.com/docker-for-mac/

![image](https://qiita-image-store.s3.amazonaws.com/0/142359/3b93d2c3-f780-c9ae-4881-6592ad327c37.png)

- インストールが完了してアプリを起動すると、ステータスバーにこのようなクジラが現れる

![image](https://qiita-image-store.s3.amazonaws.com/0/142359/bb5e8ead-2e4d-8d1a-7af2-ac9af28e36c3.png)

# とりあえずwebサーバを立ててみる
- ターミナルを起動して以下のコマンドを叩きます。
- [nginx](https://ja.wikipedia.org/wiki/Nginx)(Webサーバ)をtestserverという名前で立てます

```text:ターミナル
docker run -d -p 80:80 --name testserver nginx
```
- 無事処理が終わると、ローカルの上にコンテナにtestserverが立っているはずです。
- ブラウザを開いて　http://localhost にアクセスすると、このような画面が現れるはず。

![image](https://qiita-image-store.s3.amazonaws.com/0/142359/76a56a9a-1f6a-6a6c-0dba-efc756ac9117.png)

- 下記のコマンドを叩くとコンテナの状態がわかります。

```text:ターミナル
docker ps -a
```
Atomパッケージ Terminal-Plus コマンドが表示されないのを修正


Atomを1.12.0以降にアップデートしたあたりから、Atom内でターミナルが使える便利パッケージ
「Terminal-Plus」が、パネルを開いてもカーソルだけで何も表示されなくなった。


![9cb66edc-a907-11e6-8e4b-678525def9d4.png](https://qiita-image-store.s3.amazonaws.com/0/16548/d5fb1d4d-e85d-5dbc-7b60-c955bf1e5967.png "9cb66edc-a907-11e6-8e4b-678525def9d4.png")
_カーソルだけで何も出まてん。_

https://github.com/jeremyramin/terminal-plus/issues/386
https://github.com/jeremyramin/terminal-plus/issues/383

この辺りのIssueを参考に。
lessを書き直すとかも書いてあったが、入れ直しだけで表示はできた。


一時的なバグだと思うが、出ないととても困るのでapm経由でインストールすることで修正。
いずれ直ると思うので、直ったらPackagesパネルから入れ直そうかなと。


## 修正方法（暫定）



### 1. terminal-plusをアンインストール
Setting > Packages から `terminal-plus` を検索。Uninstallボタンポチー

### 2. apm経由でインストールし直す

```shell
apm install LarsKumbier/terminal-plus
```

ターミナルからコマンドを実行


### 3. 再起動

![スクリーンショット 2016-11-16 15.21.21.png](https://qiita-image-store.s3.amazonaws.com/0/16548/381225e7-061a-46f5-a6dc-367b298f7595.png "スクリーンショット 2016-11-16 15.21.21.png")

_出ました。_

apm経由でインストールすると`Git Packages`に分類される


---


パッケージのバージョンは同じ`0.14.5`なので、apm経由だと表示されるかは謎。
swiftでにゃしぃフォント改二を表示する

とあるまとめサイトでにゃしぃフォントの存在を知ったので、それをiOS上に表示する方法を書いて見ました

#フォントをダウンロードする
[作者様のサイト](http://marusexijaxs.web.fc2.com/)の手書きフォントから
TrueType(ttf)とOpenType(otf)の二つの拡張子がありますが、XCodeではどちらも対応しているのでどちらでもいいのでダウンロードする

#XCodeにインポートする
ダウンロードした　zipファイルを解凍し、その中にある　otfまたはttfのファイルを作成したプロジェクトにドラックアンドドロップします

![image](https://qiita-image-store.s3.amazonaws.com/0/96484/1e059ef1-8c12-b688-6fb9-b706c735d42a.png)

するとこのような選択肢が出ると思うので、
Copy items if needed と　Add to targetにチェックします
これで導入は終わりです


#使用方法
##storyboard上
textViewなどのテキストを表示するビューの中の Attributes inspectorの中にあるFontの欄の右側にあるTみたいなをクリックすると別ウィンドウが開くので
FontをCustomにするとFamilyが明るくなるので
![image](https://qiita-image-store.s3.amazonaws.com/0/96484/2a40aeea-ad4e-9d58-8c28-30b0d8fedd73.png)

そのFamilyからNyashiを選ぶとできます
適応されます

![image](https://qiita-image-store.s3.amazonaws.com/0/96484/7df6aa2c-372e-03ee-6086-4c0fae898af5.png)

##コードで指定

```Swift
let textView = UITextView()
textView.font = UIFont(name: "Nyashi", size: UIFont.systemFontSize)

```

とすると指定できます
ubuntu16.04のApache2設定/cgi設定

## Apacheのインストール・設定

(参考) http://tobysoft.net/wiki/index.php?Ubuntu%2Fapache2

```shell-session
$ sudo apt-get install apache2
$ apaches -v
Server version: Apache/2.4.18 (Ubuntu)
```

/etc/apache2/apache2.confやhttpd.confは使わない. 
(設定ファイルの場所が結構変わっている)

|設定フォルダ| 設定内容|
|:------------|---------|
| /etc/apache2/site-available |サイト設定を 000-default.confをもとに新規作成 |
|  /etc/apache2/conf-available | 必要に応じてsecurity.confなどを修正|
|  /etc/apache2/mods-available | モジュール設定はここ|
|  /etc/apache2/site-enabled | a2ensite/a2dissiteで設定が反映/削除|
|  /etc/apache2/conf-enabled | a2enconf/a2disconfで設定が反映/削除|
|  /etc/apache2/mods-enabled | a2enmod/a2dismodで設定が反映/削除|
| /etc/apache2/port.conf| port変更の設定はここ? ``(Listen 8080など)

サイト設定でまとめてCGI設定などもするのが吉？
cgi-binフォルダは公開フォルダ(html下)に置かないこと ([参考](http://qiita.com/YasuyukiKawai/items/231821dd22a72194b3fb))

```apache:/etc/apache2/site-available/xxxx.conf
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
AddHandler cgi-script .cgi .py

<Directory "/var/www/cgi-bin">  
        AllowOverride None
        Require all granted
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
</Directory>
```

```shell-session
$ a2ensite xxxx.conf
$ sudo service apache2 reload
```

**注意**
- ubuntu16.04では，apach2は **"www-data"** のuser idで動作している. (apacheやhttpdではない)
- apache2ctl status を出すためには lynxを入れること. (無いとwww-browser: not found で怒られる)

## CGIでpoweroffを実行する (root権限で実行する)

(参考) http://changineer.info/server/centos_basic/sudoers.html

/etc/sudoers.d に設定を追加することで，apache (www-data) から，poweroffが実行可能

```shell-session:/etc/sudoers.d/apache
Defaults:www-data !requiretty
Cmnd_Alias POWEROFF = /sbin/poweroff
www-data ALL = (ALL) NOPASSWD: POWEROFF
www-data ALL = (ALL) NOPASSWD: /sbin/reboot
```

* /etc/sudoers の最後で ``"#includedir /etc/sudoers.d"`` が有効なことを確認すること
(頭に#がついているが，コメントではない)

(参考)apachのCGI設定
http://qiita.com/YasuyukiKawai/items/231821dd22a72194b3fb

* documentrootの下にcgi-binを置かない

(参考)apache2.4系はアクセス許可の設定の書き方が違うので注意
https://www.softel.co.jp/blogs/tech/archives/3142

* cgi-binのScriptAliasは conf-available/serve-cgi-bin.conf でも設定されているので，site.confで設定する場合，a2disconf serve-cgi-bin で停止．

## PHPのインストール

```shell-session
$ sudo apt-get install php
$ sudo apt-get install libapache2-mod-php
```

ブラウザからphpが動作するか確認.

```php:/var/www/html/info.php
<?php
    phpinfo();
?>
```

設定ファイルは /etc/php/7.0/apache2/php.ini
windows + vagrant +centos + ansible

![install.png](https://qiita-image-store.s3.amazonaws.com/0/137675/3907174b-5522-0ce4-bb17-69856fae26eb.png)

:airplane:
1.test(任意)とsungbum(任意)　フォルダをDドライバーに作成する。

![1.png](https://qiita-image-store.s3.amazonaws.com/0/137675/921e1159-951b-bdb4-444e-f5995f5664a6.png)

testフォルダには下記のVagrant ファイルを配置します。

![2.png](https://qiita-image-store.s3.amazonaws.com/0/137675/a77db85f-f9fe-490d-7358-4138b8b359ce.png)

Vagrantfile
--------------------------------------------------------------------

  Vagrant.configure("2") do |config|
  config.vm.box = "bento/centos-6.8"
  config.vm.hostname = "sungbum-dev"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder "D:/sungbum", "/sungbum", mount_options:　["dmode=777", "fmode=777"]
  # config.vm.synced_folder "~/sungbum", "/sungbum", type:"nfs" #<--mac configuration
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
   end

  config.vm.provision "shell", inline: <<-SHELL
    sudo yum install -y epel-release
    sudo yum install -y ansible
  SHELL
  end

--------------------------------------------------------------------
 "D:/sungbum" and host "/sungbum"フォルダが同期されます。

:airplane:
2.コマンドプロンプトでカレントDドライバーに移動します。

C:\>cd /d D:\test
![3.png](https://qiita-image-store.s3.amazonaws.com/0/137675/2a0fe50e-90b6-4ce5-8a71-941dcb629108.png)

:airplane:
3.さっそくインストールして見ましょう。
![vagrantup.png](https://qiita-image-store.s3.amazonaws.com/0/137675/13686827-4978-9f7f-64c5-3f4079653407.png)


![install2.png](https://qiita-image-store.s3.amazonaws.com/0/137675/e1ffad1a-38db-c0e8-e793-7542f86e9bc2.png)

![install3.png](https://qiita-image-store.s3.amazonaws.com/0/137675/dcb9cfb1-dcd2-4170-4984-0c5ea7a31686.png)

:airplane:
4.バチャルサーバに接続します。(ssh terminalは任意) 
username => vagrant
passphrase => vagrant

![4.png](https://qiita-image-store.s3.amazonaws.com/0/137675/dd37f43f-9a44-de64-1a03-fd406594dd28.png)

![5.png](https://qiita-image-store.s3.amazonaws.com/0/137675/06a7487e-a203-87b1-0b79-cc18dab6d82a.png)

:airplane:5.file comparison
![7.png](https://qiita-image-store.s3.amazonaws.com/0/137675/3b7bfd0e-bd8f-838b-0633-7499144f28ee.png)
![8.png](https://qiita-image-store.s3.amazonaws.com/0/137675/c1db71dc-be35-8607-2e86-df0ab5bbdc06.png)

お疲れ様でした。