OmniAICreator/Qiita-1.07M huggingface dataset:
PepperのPythonで自作Box作成をしていくメモ


PepperのBoxを作ってみます。色々と他の人が書いた記事は出てるけど備忘録です。

>参考
>pythonモジュール追加 http://qiita.com/hws-hitorobo/items/5b0178d291e87c643bf3
>自作関数 http://qiita.com/Ryo87/items/77e1d19b80c77d2733c8
>HTTP GETボックスの作成 http://qiita.com/Atelier-Akihabara/items/acc8d2ad6c3881f112a4

## 環境

* Choregraphe 2.3.1
* Python 2.7

## 作成

`Box libraries > Programming > Templates`にある`Python Script`のBoxを追加しましょう。

![](https://i.gyazo.com/2829e64674eb652f5f9b94733359d459.png)

ダブルクリックすると初期コードがみれます。

```app.py
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        #put initialization code here
        pass

    def onUnload(self):
        #put clean-up code here
        pass

    def onInput_onStart(self):
        #self.onStopped() #activate the output of the box
        pass

    def onInput_onStop(self):
        self.onUnload() #it is recommended to reuse the clean-up as the box is stopped
        self.onStopped() #activate the output of the box
```

### ログを出してみる

JavaScriptでいう`console.log()`が欲しいところだけど、
`self.logger.info()`が使えそうです。

わかりやすくするために初期コメントを消して追記しました。

```app.py
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        pass

    def onUnload(self):
        pass

    def onInput_onStart(self):
        self.logger.info("はろー") #←追記
        pass

    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()

```

![](https://i.gyazo.com/9db3d0e79e32569b0cd6aa145d3b563d.png)

実行するとこんな感じでLog Viewerに流れます。

### しゃべらせる

`self.tts = ALProxy('ALTextToSpeech')`でしゃべる機能を使う準備です。
`self.tts.post.say()`で実際にしゃべります。

```app.py
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)
        self.tts = ALProxy('ALTextToSpeech') #←追記

    def onLoad(self):
        pass

    def onUnload(self):
        pass

    def onInput_onStart(self):
        self.logger.info("はろー")
        self.tts.post.say("りゅうざきさん、おはようございます。") #←追記
        pass

    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()
```

ちょうど通りかかった龍崎さんに話しかけました。

![](https://i.gyazo.com/23a932aaa009a6fb3864c207b7106f9d.png)
http://liginc.co.jp/member/member_detail?user=dragon

##まとめ

`self.logger.info()`と`self.tts.post.say()`を覚えた。
Emacs で `|>` を楽に入力する

Elixir を書いていて関数をパイプ記号 (`|>`) でつなげていくのは快感ですが、記号の入力は苦痛です。パイプ記号 `|` はなんかキーボードの端っこの方にあるし、`>` とも遠いしで。

で、こうすりゃいいんじゃないかとやってみたら快適でした。`M-J` を押すと改行して `|>` を入れるだけです。行の途中からでも大丈夫です。

もっと早くにやっておけばよかった。同案多数かもしれませんが置いときます。


```~/.emacs.d/init.el
(eval-after-load "elixir-mode"
  #'(progn
      ;; 改行して行頭に |> をつける
      (defun my-elixir-newline-and-insert-pipe ()
        (interactive)
        (move-end-of-line 1)
        (newline-and-indent)
        (insert "|> "))
      (define-key elixir-mode-map (kbd "M-J") 'my-elixir-newline-and-insert-pipe)))
```
iTerm2でエラーをトリガーにDockアイコンをbounceさせたりしたい

標準の機能で出来ます。
https://www.iterm2.com/documentation-one-page.html

##設定

`Profiles > Advanced > Trigger`からEditにはいる。

![Screen Shot 2016-03-08 at 12.00.24.png](https://qiita-image-store.s3.amazonaws.com/0/21225/40bc86bd-643e-e669-ccee-6768d121d2ce.png)

左下の「＋」でトリガーを追加する。
表題の「エラーをトリガーに」というのは、例えば**エラー時に「error」という文字列が表示されたとき**に何かを実行させるようにする。そしてAction、ここでは`Bounce Doc Icon`にする。

![Screen Shot 2016-03-08 at 12.08.22.png](https://qiita-image-store.s3.amazonaws.com/0/21225/557e96dd-11bd-4fab-f794-80ff99abcbf8.png)
すると、こんな感じ。

![iterm2トリガーデモ](https://cdn.rawgit.com/hiloki/f/master/Screen.Capture.on.2016-03-08.at.12-12-08.gif)


Actionsは色々。エラーなら`Ring Bell`とかでも良いかも。

![Screen Shot 2016-03-08 at 12.08.14.png](https://qiita-image-store.s3.amazonaws.com/0/21225/bbaf1fc0-69ca-015f-96b0-3b12a8be65f5.png)


コマンドの実行などもできるので、使いようによってはgulpやらGruntで色々書かなくても、簡易的なビルドタスクとかに使ってもよいかも。
まだ正規表現のスラッシュエスケープで消耗しているの？

URLやパス、`YYYY/MM/DD`形式の日付など、スラッシュを含むものに正規表現マッチをさせたいこともよく発生します。しかし、正規表現リテラルは両端がスラッシュとなるために、これらの文字列とヒットさせようとすればスラッシュをエスケープすることになってしまいます。…面倒ですよね？

# Ruby
Rubyの場合、[%記法](http://qiita.com/mogulla3/items/46bb876391be07921743)という書き方のリテラルが存在します。`%W`などはよく使われると思いますが、`%r`を使えば正規表現を構築することも可能です（少なくとも[Ruby 1.8.7からあります](http://docs.ruby-lang.org/ja/1.8.7/doc/spec=2fliteral.html#percent)）。また、ふつうの正規表現リテラルと同様、末尾に修飾子を付けることもできます。

で、区切り文字としては英数字でなければ何でも使えます。正規表現のメタ文字を避けて、`@`や`!`、`<>`などの中から、内部に現れない文字を選べばいいでしょう。

```rb
# 普通のリテラル
/\d{4}\/\d{2}\/\d{2}/m

# パーセント記法
%r@\d{4}/\d{2}/\d{2}@m
```

# PHP
PHPに正規表現リテラルは存在しないのですが、PCRE（`preg_`で始まる関数群）を使う場合、修飾子の都合もあってか、`'/regex/'`のようにデリミタ付きの文字列を指定します。

…ですが、実はこのデリミタには**多くの文字を指定できます**（英数字、スペース、バックスラッシュ以外）。[PHPのマニュアル](http://php.net/manual/ja/regexp.reference.delimiters.php)では、スラッシュ以外に`#`や`~`をすすめています。

```php
// スラッシュ区切り
preg_match('/\d{4}\/\d{2}\/\d{2}/u',$haystack);

// #区切り
preg_match('#\d{4}/\d{2}/\d{2}#u',$haystack);
```

# まとめ
正規表現を連ねていくと、加速度的に読みにくくなります。記法の工夫で少しでも読みやすくなるなら、しておいて損はないでしょう。
cronで実行した時と、手動で実行した時のint型のビット数が変わった

実行環境は `linux/arm`

Go言語でBattlefield4のバトルログAPIからユーザ情報を取得するライブラリを作りました。
[bf4-stats](https://github.com/Rompei/bf4-stats)
これはjsonから構造体にマッピングしてそれを返すだけのライブラリです。
これを使ったソフトウェアを手動で実行するとエラーはでませんが、cronに実行させると下記のエラーがでました。

```
panic: json: cannot unmarshal number 17179869184 into Go value of type int
```

これは、構造体の[この](https://github.com/Rompei/bf4-stats/blob/master/stat.go#L177)部分の変換で起こっていました。現在は修正したので、mapの値が`[]int64`になっていますが、エラーが出ていた時は`[]int`型になっていました。

つまり、手動で実行した時は`[]int`型が64ビットintスライスとして評価され、cronで実行した時は32ビットintスライスとして評価されていたようです。

CPUアーキテクチャは同じはずなのでint型も手動と同じビット数で扱われると考えていましたが違うようでした。

##まとめ
もしかしたらアーキテクチャがarmだからかもしれませんが、このようなことがあったので、大体のビット数がわかっていればちゃんとオーバーフローしないように型を定義したほうがいいみたいです。
Golangでweb開発に使えるもの一式メモ

# emacs
+ go-mode
+ go-autocomplete
+ go-eldoc
+ flymake-go
+ go-direx
+ go-rename
+ go-projectile

# coding
+ gocode
+ godef
+ goflymake
+ golint
+ goimports

# framework
+ revel
+ gin
+ echo

# mongo driver
+ mgo

# orm
+ gorm

# BDD
+ Ginkgo

# react
+ go-duktape

# パッケージ管理
+ gom
+ srlt
+ godep

# その他
+ gvm
+ go-bindata
+ goemon
+ cgo
passport.deserializeUserがたくさん呼び出される場合の対処法

# passport.deserializeUserがたくさん呼び出される場合の対処法

## Quick Fix
publicフォルダ等の静的コンテンツパス設定をPassportの設定より先に行うよう修正する。

```js:[NG]
// passportの設定
app.configure(function() {
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.session({ secret: 'keyboard cat' }));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
});

// 静的コンテンツの設定
app.use(express.static('public'));
```

```js:[OK]
app.configure(function() {
  app.use(express.static('public')); // 静的コンテンツの設定
  app.use(express.cookieParser());
  app.use(express.bodyParser());
  app.use(express.session({ secret: 'keyboard cat' }));
  app.use(passport.initialize());
  app.use(passport.session());
  app.use(app.router);
});
```

## 環境
* Nodejs 
* Expressjs 
* passportjs 

## 現象
本当は1アクセスに1回だけ呼び出される予定なのに、何回も呼び出されてしまう。

## 原因
Passportの設定の後に静的コンテンツパスの設定を行っているため、静的コンテンツへのアクセスがある時にもPassportの処理が呼び出されている。

## 対処法
Passportの設定をする前に、静的コンテンツパス設定を行うように修正することで解消する。

## 参考サイト
[passport.deserializeUser called multiple times](https://github.com/jaredhanson/passport/issues/14#issuecomment-4863459)
[Passport:middleware](http://passportjs.org/docs#middleware)
c++ builder XE4, 10.2 Tokyo > dialog > 初期ボタンを設定する方法 > MessageBox()を使う

```txt:動作確認
C++ Builder XE4
Rad Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
```

OK, CANCELなどの確認ダイアログを表示するとき、誤操作防止の観点からCANCELボタンにフォーカスが移っていて欲しい場合がある。

C++ Builderで知っている方法としては以下の方法がある。

```Unit1.cpp
void __fastcall TForm2::Button1Click(TObject *Sender)
{
	String cnfmsg = L"Are you sure?";

	if (IDOK == MessageBox(Handle, cnfmsg.c_str(), L"Confirmation",
		  MB_ICONQUESTION | MB_OKCANCEL | MB_DEFBUTTON2) ) {
		ShowMessage(L"DONE");
	}
}
```

MB_DEFBUTTON2 がCancelボタンに対応する。

他のメッセージ表示機能では調べた限りでデフォルトフォーカスの設定変更方法は見つかっていない。
OK,Cancelボタンの場合、OKがデフォルトになっていて、誤操作を誘発する。


検索キーワード

- MessageDlg()
実行状況に応じた横断的構造を、AspectJにより分離する

# 翻訳元サイト
[Production Aspect Chapter 1. Getting Started with AspectJ](https://eclipse.org/aspectj/doc/released/progguide/starting-production.html)

 
# キーワード
- context passing　実行状況
- croscutting structure　横断的構造

# 本文概要
 
 実行時の状況に応じた横断的構造は、Javaのプログラムが複雑化する重要な原因のソースコードになるでしょう。
 
AspectJでは、このような実行時状況の性質をモジュール化する方法で実装できます。

以下のColorControl.ajではafter adviceが、FigureクラスのファクトリメソッドがColorControllingClientクラスのメソッド上より呼び出された際に実行されるようになっています。

```aspectj:ColorControl.aj
pointcut ColorControl {
    
    pointcut CCClientCflow(ColorControllingClient client):
        cflow(call(* *(..)) && target(client));
        
   pointcut make(): call(FigureElement Figure.make*(..));
   
   after(ColorControllingClient c) returning (FigureElement fe):
       make() && CCClientCflow(c){
           fe.setColor(c.colorFor(fe));
       }  
}

```

このアスペクトが影響を及ぼすのは少ない数のメソッドのみになりますが、AOPを用いないでこの機能を実装した場合より多くのメソッドの編集が必要になると思われます。特に、クライアントからファクトリメソッドへの制御フロー内のすべてのメソッドが編集対象になるでしょう。

# 参考資料
![ContextPassing.png](https://qiita-image-store.s3.amazonaws.com/0/77704/7887f3d2-0a7f-e9d6-79cf-25ebbc353773.png)
[Sharepoint] 「管理者が設定したしきい値 (8) を超えているため」 と表示される。



sharepointで参照列を多様すると以下の様なメッセージが出る場合がある。
管理者には表示されなく、ユーザーが使おうとして表示されるので、なかなか見つけにくい


>このビューに含まれる参照列とワークフローの状態の列の数が、管理者が設定したしきい値 (8) を超えているため、このビューを表示できません。  



![Clipboard01.png](https://qiita-image-store.s3.amazonaws.com/0/49910/4d66162a-c0fe-ca2b-f113-e617761ddc0a.png)

#サーバーの全体管理　画面に入る

###Web アプリケーションの管理 を選択
![WS000000.JPG](https://qiita-image-store.s3.amazonaws.com/0/49910/5693659e-5ba1-6236-501a-4ca70726d64d.jpeg)


###サーバーの一覧から対象のサーバーをクリックする。

![WS000001.JPG](https://qiita-image-store.s3.amazonaws.com/0/49910/401c189b-e0fc-9fdf-ea7a-df2490dca8eb.jpeg)


###すると上部のメニューから、全般設定が選べるようになるので、
ドロップダウンメニューから「リソースの管理」を選択する。

![WS000004.JPG](https://qiita-image-store.s3.amazonaws.com/0/49910/6daa188b-f86b-aa69-efc0-d5e648d76718.jpeg)




###リストビューのしきい値の値を適宜変更する

![WS000007.JPG](https://qiita-image-store.s3.amazonaws.com/0/49910/bd5ba79e-0e62-68fa-527f-16e87a2b86ea.jpeg)






#参考サイト
http://sharepoint.sdk-ltd.com/?eid=47

https://support.office.com/ja-jp/article/%E3%82%A2%E3%82%A4%E3%83%86%E3%83%A0%E6%95%B0%E3%81%8C%E5%A4%9A%E3%81%84%E3%83%AA%E3%82%B9%E3%83%88%E3%81%A8%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B-b8588dae-9387-48c2-9248-c24122f07c59
You are running composer with xdebug enabled. This has a major impact on runtime performance.対策

新しい記事「[必要な時にのみxdebugをオン](http://qiita.com/koriym/items/29f81514706a39e3b7c1)」を投稿しました(2017/05/19)


---

> Composer 1.3.0 - https://github.com/composer/composer/blob/1.3.0/CHANGELOG.md

> Fixed ext-xdebug not being require-able anymore due to automatic xdebug disabling
> 自動で無効化されるようになったので、ユーザー側のワークアラウンドはもはや不要になったようです。

以上はコメント欄で@tadsanさんが教えてくれた内容です。
composerでの対策は不要になりましたが、記事の内容はxdebug あり／なしを実行単位で変える時に有効です。

--

`xdebug`をインストールしたphpで`composer`を使うとパフォーマンスが悪化し(x3-x4)警告が出ます。

マニュアル [Xdebug impact on Composer](https://getcomposer.org/doc/articles/troubleshooting.md#xdebug-impact-on-composer)に載っているようにxdebugの読み込みをコメントアウトします。（iniファイルの場所は`php --ini`で分かります）

```
;zend_extension = "/path/to/my/xdebug.so"
```


ツールの実行は`xdebug`なしで、`phpunit`のテストカバレッジや`PhpStorm`では`xdebug`ありでとPHPの実行を使い分けたくなりますが、切り替えをする方法が簡単ではありません。

そこで環境を切り替えるのではなく、実行時に明示的に指定するようにします。

## シェル

```:~/.bash_profile
alias phpx="php -dzend_extension=xdebug.so"
alias phpunitx="phpx $(which phpunit)"
```

これで`phpx`, `phpunix`がそれぞれ`xdebug`付きで実行されます。テストでカバレッジが取れるようになり`xdebug`なしの`php`, `phpunit`と使い分けができます。

## PhpStorm

Language & Frameworks > `...` > Advanced > Configuration optionsでdirectiveに`zend_extension`、値を`xdebug.so`と設定するとxdebug付きでPHP実行されるようになります。

![スクリーンショット 2016-03-08 11.03.09.png](https://qiita-image-store.s3.amazonaws.com/0/3940/424e3d89-f2a0-1db9-0de1-e4dd8f993285.png)
Angular2勉強会に参加しました

# 勉強会の基本情報

* 【日　時】2016年02月25日 19:00~21:00
* 【会　場】いいオフィス(東京都台東区東上野2-18-7 )
* 【参加費】無料
* 【主　催】株式会社LIG
* 【申し込み】http://lig.connpass.com/event/26115/

# 概要
### Angularjsとは
* Single Page Application向けに、オープンソースのJavaScriptフレームワークです
* 2012年6月にバージョン1.0.0がリリースされました
* 2015年12月にバージョン2のBetaがリリースされました

### ngとは
* [angularjsのDirective前に、よくngが追加されている](https://docs.angularjs.org/api/ng)


### 勉強会について
* angular2入門 - 金井 健一さん
 * Angular1、Angular2の基本を紹介しました

* Angular2を便利にするライブラリたち - lacoさん
    * Angular2に関するライブラリを紹介しました

* ngUpgradeでのマイグレーション - 稲葉 聡さん
    * 1から2へのアップグレートにいて、紹介しました

# 内容
## angular2入門

### Angular1のconcept
* Data Binding
* Template Engine
* Routing
* Ajax Support
* Test
* Security
* DI(Dependency Injection)

### Angular2からのconcept
* Component-base
* Universal JavaScript

### Dependencies
* ES2015, ESNext
* RxJS
* TypeScript
* SystemJS

説明

* SystemJS
    * 動的にjavascript moduleをロードする
* ES2015
    * ECMAScript 2015の略称です。
    * Ecmaインターナショナルが中心となり、JavaScript標準化したのECMAScript 6th editionです
    * 元々は、ES5のように呼ばれるが、今後は年単位のより細かいリリースを計画しているようです
* ESNext
    * ES2015をES5に変換するnodeモジュールです
* RxJS
    * Rx(Reactive Extensions)はFRP(関数型リアクティブプログラミング)を実現するライブラリです
* TypeScript
    * マイクロソフトによって開発されたフリーでオープンソースのプログラミング言語です


## Angular2を便利にするライブラリたち

### Official Libraries

* ngResource
    * ngResourceモジュールは、$resourceサービスを経由してRESTfulサービスを提供します
* ngRoute
    * ngRouteモジュールは、ルーティングとディープリンクサービスを提供します
* ngMock
    * ngMockモジュールは、ユニットテスト用のモックです


### npmのライブラリ

* https://www.npmjs.com/search?q=angular
    * 結果：6110 results for ‘angular’
* https://www.npmjs.com/search?q=ng
    * 結果：2454 results for ‘ng’
* 2016/03/08時点



## ngUpgradeでのマイグレーション

* マイグレーション戦略
    * Angularjs2で一から書き直す
    * 少しずつマイグレーション -> ngUpgrade
* ngUpgradeライブラリ
    * Angularjs2パッケージはマイグレーションを補助するツール



# 感想

### いろいろなメリット
* 画面遷移は、サーバーと経由しなくて、クライアントのみで画面遷移できて、スピードが速いです
* jsonでサーバーと通信できるので、iOSやAndroidアプリと同じAPIを使えて、実装コストが少なくなります
Spoonで端末を２台以上接続した時に「Timeout getting device list」してしまう時は


[Spoon](http://square.github.io/spoon/)使おう！と思ってかんたんなコードを書き、２台の端末をつないで実行したら以下のようなエラーが出ました。

```
...
2016-03-08 11:06:56 [SR.runTests] [03103a11d0238834] Starting execution.
2016-03-08 11:06:56 [SDR.runInNewProcess] [03103a11d0238834]
2016-03-08 11:06:56 [SR.runTests] [01498AC603012008] Starting execution.
2016-03-08 11:06:56 [SDR.runInNewProcess] [01498AC603012008]
2016-03-08 11:06:57 [SDR.printStream] [03103a11d0238834] STDOUT 2016-03-08 11:06:57 [SDR.main] ERROR: Unable to execute test for target.  Excep
tion message: Timeout getting device list.
2016-03-08 11:06:57 [SDR.printStream] [01498AC603012008] STDOUT 2016-03-08 11:06:57 [SDR.main] ERROR: Unable to execute test for target.  Excep
tion message: Timeout getting device list.
2016-03-08 11:06:57 [SDR.printStream] [03103a11d0238834] STDOUT java.lang.RuntimeException: Timeout getting device list.
2016-03-08 11:06:57 [SDR.printStream] [01498AC603012008] STDOUT java.lang.RuntimeException: Timeout getting device list.
2016-03-08 11:06:57 [SDR.printStream] [03103a11d0238834] STDOUT         at com.squareup.spoon.SpoonUtils.waitForAdb(SpoonUtils.java:143)
2016-03-08 11:06:57 [SDR.printStream] [01498AC603012008] STDOUT         at com.squareup.spoon.SpoonUtils.waitForAdb(SpoonUtils.java:143)
2016-03-08 11:06:57 [SDR.printStream] [01498AC603012008] STDOUT         at com.squareup.spoon.SpoonUtils.initAdb(SpoonUtils.java:104)
2016-03-08 11:06:57 [SDR.printStream] [03103a11d0238834] STDOUT         at com.squareup.spoon.SpoonUtils.initAdb(SpoonUtils.java:104)
2016-03-08 11:06:57 [SDR.printStream] [03103a11d0238834] STDOUT         at com.squareup.spoon.SpoonDeviceRunner.main(SpoonDeviceRunner.java:452
)
2016-03-08 11:06:57 [SDR.printStream] [01498AC603012008] STDOUT         at com.squareup.spoon.SpoonDeviceRunner.main(SpoonDeviceRunner.java:452
)
2016-03-08 11:06:57 [SDR.printStream] [01498AC603012008] STDERR Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
2016-03-08 11:06:57 [SDR.runInNewProcess] Process.waitFor() finished for [01498AC603012008] with exitCode 1
...
```

https://github.com/stanfy/spoon-gradle-plugin/issues/82

このエラーのこちらに解決方法が載ってました。
`adbTimeout`を設定すれば良いようです！

```java:app/build.gradle
spoon {
    debug = true
    adbTimeout = 60 //秒 【この行を追加する】
}
```
pyenvでのpython3.5にopenCV3.1をインストールした

#環境
OS: Manjaro 15.12 Capella
pyenv: 20160202-14-g0c4392b
Python: Python 3.5.1 :: Anaconda 2.5.0 (64-bit)
numpy: 1.10.4

#openCVインストール
http://qiita.com/shohohoh/items/4d692d2a92e7db87fed2 と
https://gist.github.com/pohmelie/cf4eda5df24303325b16 を参考にした。

```
$ cd
$ wget https://github.com/Itseez/opencv/archive/3.1.0.zip
$ wget https://github.com/Itseez/opencv_contrib/archive/3.1.0.zip
$ unzip 3.1.0.zip
$ unzip 3.1.0.zip.1
$ cd opencv-3.1.0
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_opencv_java=OFF \
-D WITH_IPP=OFF -D WITH_1394=OFF \
-D WITH_FFMPEG=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_opencv_python2=ON \
-D BUILD_opencv_python3=ON \
-D BUILD_opencv_video=OFF \
-D BUILD_opencv_videoio=OFF \
-D BUILD_opencv_videostab=OFF \
-D PYTHON_EXECUTABLE=$(which python) \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/opencv_contrib-3.1.0/modules ..
$ make -j4
$ sudo make install
$ cd ~/.pyenv/versions/anaconda3-2.5.0/lib/python3.5/site-packages/
$ ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so cv2.so

```

これでpythonからcv2をimportできたら成功

おわり
いいからやる。CentOS7 + Apache + MySQL + PHP7

CentOS7 + PHP7 の環境が必要になったので
先達の知見をコピペさせていただき、vagrantで環境をつくった。

流したコマンドをprovisioningファイルとして残したのでメモ。
とりあえず何も考えず以下の手順を流してしまえば、CentOS7 + PHP7 環境が手に入る。

ファイルはGithubに登録した
https://github.com/ayayan-z/vagrantfile.git

## 環境前提
* OS なんでも （検証マシンは、OSX ElCapitan 10.11）
* virtualBox インストール済み
* vagrant インストール済み
* Git インストール済み

## インストールされるもの
* httpd
* PHP7
* MySQL

※ 2016/03/07 現在問題なく動作すること確認済み。

## 手順

### CentOS7 の vagrant box を入手
```
vagrant box add centos7 https://github.com/tommy-muehle/puppet-vagrant-boxes/releases/download/1.1.0/centos-7.0-x86_64.box
```

### vagrantfile を clone

（vagrant box のバージョンが上記と異なる場合は、Vagrantfileの中身を書き換える）

```
git clone https://github.com/ayayan-z/vagrantfile.git
```

### vagrant 起動

```
cd vagrantfile
vagrant up
```
時間かかる。ネットワーク状況による。15分〜

## ざっと動作確認
* 起動したVMにssh接続

```
vagrant ssh
```

* Apache, PHP, MySQLのバージョンが表示されたらインストールOK

```
httpd -v 
php -v
mysql -v
```

<img width="448" alt="スクリーンショット 2016-03-08 0.36.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/116449/d2bdbd23-e1ba-c6cf-2830-8667b44d68ef.png">

* Apache + PHP

以下にアクセスしてphpinfo画面が表示されたらOK
http://192.168.33.10

もし接続できなければ、```vagrant reload```（困ったら再起動）

## 使う

あとはphpをぽいぽい書いて、いろいろ便利に使う。
SequelProでER図を出力する方法

MySQLのMac用GUI無料クライアントの[Sequel Pro]でER図を出す方法です。


<img src="https://qiita-image-store.s3.amazonaws.com/0/889/4f2c8a27-2eb6-cc19-d3fa-1e79b85dbab6.png" class="img-thumbnail">


こんな感じのER図が出せます。

## graphvizを入れとく

```
brew install graphviz
```

## dotファイルをエクスポートする

Sequel Proで File > Export… > Dot を出力形式で選択 > Export。

## dotファイルをpngに変換する

```
dot -Tpng localhost-db.dot > localhost-db.png
```

以上。


## 今回使ったDBのDDL

ちなみに今回出力してみたDBのDDLは次になります。

```sql
-- Create syntax for TABLE 'categories'
CREATE TABLE `categories` (
  `id` mediumint(8) unsigned NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- Create syntax for TABLE 'items'
CREATE TABLE `items` (
  `id` int(11) unsigned NOT NULL,
  `category_id` mediumint(8) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `category_id` (`category_id`),
  CONSTRAINT `items_ibfk_1` FOREIGN KEY (`category_id`) REFERENCES `categories` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```


[Sequel Pro]: http://www.sequelpro.com/
Rubyに触れてみる【1日目】

Rubyプロジェクトに関わりそうなので、Rubyに触れて学んだことを逐次書いていこうとおもいます。

## 筆者のバックグラウンド

* PHP歴、JavaScript歴12年~
* Scala, Go 2年くらい
* Python 賞味3ヶ月くらい

## Rubyを最新にする

Rubyのバージョンを確認してみる。

```console
$ ruby --version
ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]
```

2.2.3、2015年8月15日のものらしい。このRubyはMacビルトインのものだろうか？Homebrewで入れたものだろうか？

```
% which ruby
/usr/local/bin/ruby
```

どうやら、Homebrewで入れていたものらしい。きっと、Ruby系のDevOpsツールを入れた時に同時に入っていたものだろう。

アップグレードしてみる：

```
$ brew upgrade ruby
$ ruby --version
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
```

2.3になった。今日時点で最新と思われる。

## CodeRunnerのRubyバージョンを確認する

```rb
puts RUBY_VERSION
```

こちらも2.3.0になっている。

## 他の言語の知識を活用する

プログラミングが初めてでなければ、他の言語と比較した記事が役立つと思う。

[PHPer向けのRuby入門 - Qiita](http://qiita.com/yamamoto_hiroya/items/08ee8d7bf5deafeebf75)
[[Ruby]他言語使用者のためのRuby入門知識まとめ - Qiita](http://qiita.com/cabbage/items/238ebd7b91f83e99681e)

一通り目を通して、予習する。

## 出力系関数を確認する

Rubyコードスニペットを書きながらRubyを体に叩き込む。そのために、まずは出力系関数を確認する。

| Ruby | PHP | Scala |
|:-:|:-:|:-:|
| puts x  | echo $x . PHP_EOL; | println(x) |
| print x  | echo $x;  | print(x)  |
| p  | var_dump($x);  |  println(x) |

文字列出力には、`puts`、変数をダンプするには`p`を使うと良いようだ。

```rb
puts [1,2,3]
p [1,2,3]
print [1,2,3]
print "hello"
```

```txt:出力結果
1
2
3
[1, 2, 3]
[1, 2, 3]hello
```

## Ruby 2.3の言語仕様を読む

体系的に言語仕様を知っておきたいので、Hello Worldから始まる入門書ではなくリファレンスを読んでみる。[オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (Ruby 2.3.0)](http://docs.ruby-lang.org/ja/2.3.0/doc/index.html)。


### Rubyの特徴

[はじめに (Ruby 2.3.0)](http://docs.ruby-lang.org/ja/2.3.0/doc/spec=2fintro.html)を読む。

* インタプリタ
* 変数に型が無い (動的型付け)

PHPやJSと似てると見える。ScalaやGoとは違う。

* ユーザによるメモリ管理が不要
* 全てがオブジェクト
* クラス、継承、メソッド
* クロージャ
* 強力な文字列操作/正規表現
* 例外処理機能

ふむふむ。今までやってきた言語にもありそうなやつだな。

* 単純な文法

この辺はVagrantfileのDSLなどでお世話になってます。

* 変数宣言が不要「変数の種類(ローカル変数、グローバル変数、インスタンス変数など)は 変数名から知る事ができます。」

おお、これはどういうことだろう！後で変数名の仕様を確認しよう。

* 特異メソッド「ある特定のオブジェクトにメソッドを付加することができます。」

初めて聞く用語。JSとかでオブジェクトにメソッド生やしたりしていたけれど、それと同じものだろうか？

* モジュールによるMix-in「Rubyは多重継承は複雑さの源であるという見地から、 意図的に多重継承を持っていませんが、 モジュールを使ってクラス階層を横断して実装を共有できます。」

ScalaやPHPのtraitとはどう違うんだろう？

* ブロック付きメソッド呼び出し(イテレータ)「制御構造の抽象化を援助するブロック付きメソッド呼び出しという機能があります。」
* ダイナミックローディング「OSが許せば、オブジェクトファイルを実行時に読み込む機能が提供されます。」

この辺は想像がつかないので後で確認しよう。


### 変数と定数

「変数の種類(ローカル変数、グローバル変数、インスタンス変数など)は 変数名から知る事ができます。」というのが気になったので、早速「変数」について見てみる。[変数と定数 (Ruby 2.3.0)](http://docs.ruby-lang.org/ja/2.3.0/doc/spec=2fvariables.html)

Rubyには変数名に次のルールがあるらしい。

* ローカル変数: 小文字または`_`で始まる
* インスタンス変数: `@`で始まる。PHPなら`$this->`。CoffeeScriptの`@`の元ネタはこれかな？
* クラス変数: `@@`で始まる。PHPなら`self::`/`static::`。
* グローバル変数: `$`で始まる。
* 定数：アルファベット大文字 ([A-Z]) で始まる

> またクラス定義式はクラスオブジェクトの生成を行うと同時に、 名前がクラス名である定数にクラスオブジェクトを代入する動作をします。

```rb
class C
end
p C    # => C
```

クラスの定義は定数的なものなのか！


つづく
sublime Text セットアップ

# プラグイン
## プラグインをインストールする準備
プラグインをインストールするにはPackage Controlが必要。
以下の公式サイトからPackage Controlをインストールするコードをコピペする。
https://packagecontrol.io/installation

そして、view > show commandからコンソール用のフォームを表示させる。
そこに先ほどコピペしたコードをペーストしてエンター。成功すればおk。

## おすすめプラグイン
```
{
	Alignment,
	AutoFileName,
	BracketHighlighter,
	Emmet,
	HTML5,
	SublimeLinter,
	Theme itg,flat //こちらはテーマ
}
```

### HTML/CSS/JS Prettify
コードの整形(インデント揃え)をしてくれるプラグイン。
インストールにはnode.jsをインストールする必要があるよ！

### Emmet
HTML,CSSの記述を簡潔にするプラグイン。省略記法。

チートシート(http://docs.emmet.io/cheat-sheet/)

# sublimeのテーマ(見た目)を変更
Package Controllを開いて、テーマの名前を入力してエンターでインストール。

そのあと、`Preferences > Settings`を選択して表示される設定ファイルにて以下の場所にテーマを有効化させる記述をしよう。

```
{
    "color_scheme": "Packages/User/SublimeLinter/itg.dark (SL).tmTheme",　//文字色のスキーム
    "font_size": 19,
    "ignored_packages":
    [
	"Vintage"
    ],
    "theme": "itg.flat.dark.green.sublime-theme",　//sublimeのテーマ
    "word_wrap":"true" //文字の折り返しを有効化
}
```

## おすすめテーマ
- material-theme:https://github.com/equinusocio/material-theme

```
"color_scheme": "Packages/Material Theme/schemes/Material-Theme.tmTheme",
"theme": "Material-Theme.sublime-theme",
```

- itg.flat:http://itsthatguy.com/post/70191573560/sublime-text-theme-itgflat

```
"color_scheme": "Packages/Theme - itg.flat/itg.dark.tmTheme",
	"theme": "itg.flat.dark.sublime-theme",
```
 
# Sass用の設定やパッケージ
http://book.scss.jp/about/c7/editor/st.html
Java SE7 Gold 取得を目指して (7)

Java SE7 Gold をとりたい…!
===

本日は第7回目です。
6章の半分を進めました。

## 今日のこぼれ話
お久しぶりの勉強です。
別にJavaが嫌になったとかそういうわけではなく、単純に朝時間がとれなかったというのが原因です。
朝の勉強はいいですね。電車も空いてますし、頭も(比較的)さえてますし、誘惑や障害も少ない気がします。
特に資格の勉強にはもってこいの時間ですよ。是非。

[人は何故、早起きを他人に押し付けたがるのか？朝活する人はなぜ押し付けがましいのか？](http://e0166.blog89.fc2.com/blog-entry-1157.html?utm_source=buffer&utm_campaign=Buffer&utm_content=buffer8cc27&utm_medium=twitter)

## 本日知ったこと(6章 1/2)
* Collection
  * List

    クラス | 特徴など 
    :---|:---
    ArrayList|おなじみ ランダムアクセス得意 挿入/削除不得意 非スレッドセーフ
    LinkedList|挿入/削除得意 ランダムアクセス不得意 非スレッドセーフ
    Vector|ArrayListのスレッドセーフ版 パフォーマンス考慮してつかう

  * Set
     * 一意性判定には`equals()`が使われる 

    クラス | 特徴など 
    :---|:---
    HashSet|おなじみ 要素へのアクセス高速 順序付け無し 非スレッドセーフ
    TreeSet|要素へのアクセス低速 ソート済み 非スレッドセーフ
    LinkedHashSet|HashSetの挿入順保持版 ソートではないので注意

  * Queue
     * 操作失敗時に例外の発生するものと、特殊値(null/falseなど)を返すメソッドがある

    操作|例外発生版|特殊値返却版
    :---|:---|:---
    要素の挿入|add(E e)|offer(E e)
    先頭の要素を取り出し削除|remove()|poll()
    先頭の要素を取り出し|element()|peek()

  * Deque(デック)
     * LinkedList は Dequeインタフェースを実装する 

    操作|例外発生版|特殊値返却版
    :---|:---|:---
    先頭へ要素の挿入|addFirst(E e)|offerFirst(E e)
    先頭の要素を取り出し削除|removeFirst()|pollFirst()
    先頭の要素を取り出し|getFirst()|peekFirst()
    末尾へ要素の挿入|addLast(E e)|offerLast(E e)
    末尾の要素を取り出し削除|removeLast()|pollLast()
    末尾の要素を取り出し|getLast()|peekLast()

* Map
  * MapはCollectionの派生クラス(インタフェース)ではない

    クラス | 特徴など 
    :---|:---
    Hashtable|非nullのオブジェクトがキー/値となる スレッドセーフ
    HashMap|おなじみ Hashtableのnull使用可・非スレッドセーフ版
    LinkedHashMap|キー挿入の順序を保持するHashMap
    TreeMap|NavigableMapを実装する(Java1.6から) キーで昇順ソート 非スレッドセーフ

  * NavigableMap
     * SortedMapのサブインタフェース
     * 指定されたキーに近い要素を返すメソッドが定義されている

      メソッド|概要
      :---|:---
      higherKey(K key)|指定されたキーよりも確実に大きいキーの中で最小のものを返す
      lowerKey(K key)|指定されたキーよりも確実に小さいキーの中で最大のものを返す
      higherEntry(K key)|指定されたキーよりも確実に大きいキーの中で最小のものをキーとするエントリを返す
      lowerEntry(K key)|指定されたキーよりも確実に小さいキーの中で最大のものをキーとするエントリを返す
      subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive)|fromKey~toKeyまでの部分ビューを返す booleanの引数は境界を含めるかどうか

* ジェネリクス
  * メソッド定義でのジェネリクス
     * 定義方法 `public <T> T method(T t) { ... }`
     * 呼び出し方 `obj.method(s);` or `obj.<String>method(s);`
  * ワイルドカード
     * `List<? extends Super>`
         * Superを親に持つクラス型の要素を格納
         * 要素の追加はできない
         * Superがインタフェースでも`extends`
     * `List<? super Sub>`
         * Subの親クラス型の要素を格納
         * 型パラメータに一致する要素を追加できる

知っているようで、なかなか奥が深いコレクションの世界。
ulやtableにお手軽に足したり引いたり絞り込みしたりできるlist.js

v1.2がリリースされたようです。
あまり記事がなかったので備忘代わりにまとめておきます。

# 公式サイト

http://www.listjs.com/

# どういうライブラリ？

ulで作ったリストを、jsで手軽にliを追加したり、条件指定して削除したり、
絞り込みしたりソートしたりする機能を提供します。
jsのみでcssは一切ないので、UIは好きにできます。

# インストール

http://www.listjs.com/overview/download

上記に書いてある通り。
npmでもbowerでもCDNでもzipで落として解凍しても大丈夫です。

# 使い方サンプル

ざっくりhtmlファイルとjsファイルを作るとこんな感じになります。

ディレクトリ構成
>/ ---- index.html
   |
   |-- index.js
   |
   |-- bower_components/ ---- list.js/ ---- dist/ ---- list.min.js


```index.html
<html>
  <head>
  </head>
  <body>
    <!-- ここのリストが動的に変わる -->
    <div id="shop-list">
      <ul class="list">
      </ul>
    </div>

    <!-- 追加用 -->
    <input type="text" id="input-text" placeholder="name" />
    <button type="button" name="add">add</button>

    <!-- 削除ボタン -->
    <button type="button" name="delete">delete</button>

    <!-- ソートボタン -->
    <button type="button" class="sort"  data-sort="name">sort</button>

    <!-- 検索用 -->
    <input type="text" class="search" placeholder="search" />
    <button type="button" id="search">search</button>

    <script src="./bower_components/list.js/dist/list.min.js"></script>
    <script src="./index.js"></script>
  </body>
</html>
```

```js:index.js
'use strict';

var options = {
    // リストカラム名
    valueNames: ['name', 'id'],
    // アイテムが追加されるときのタグ
    item: '<li><h3 class="name"></h3><p class="shop"></p></li>'
};

// リストを生成
this.shopList = new List('shop-list', options);
// 一旦グローバルにidを置いておいてprimary keyにしとく
this.id = 0;

// 追加ボタンイベント登録
document.querySelector('[name=add]').addEventListener('click', () => {
  this.shopList.add({
    name: document.getElementById('input-text').value,
    id: this.id++,
  });
});

// 削除ボタンイベント登録
document.querySelector('[name=delete]').addEventListener('click', () => {
  this.shopList.remove("id", --this.id);
});

// ソートボタンイベント登録
document.querySelector('.sort').addEventListener('click', () => {
  this.shopList.sort('id', {order: "desc"});
});

// 検索ボタンイベント登録
document.getElementById('search').addEventListener('click', () => {
  this.shopList.search(document.querySelector('.search').value, ['name']);
});
```
LoadAverage(ロードアベレージ)について

ロードアベレージの事がよく分かってなかったのでメモ。
実際には本を見つつ、コマンドの部分は実際に動かしながら確認。

# 参考

この本に全て書いてありました。
Linuxの性能の話などすごく分かりやすかったです。
詳細はこちらの4章を見ていただくのが良いかと思います。

[［24時間365日］サーバ/インフラを支える技術 ……スケーラビリティ，ハイパフォーマンス，省力運用](https://gihyo.jp/magazine/wdpress/plus/978-4-7741-3566-3)


# 結論

本に書いてあるまんまですが、ロードアベレージとは以下の状態のプロセス数を表示しています。

+ プロセスの状態がTASK_RUNNINGの状態(実行はされていない)
+ プロセスの状態がTASK_UNINTERRUPTIBLEの状態

TASK_RUNNINGはプロセスにCPUが割り当てられれば実行可能な状態。TASK_UNINTERRUPTIBLEはディスクのI/O待ち状態。
なので、 **上記2つは処理を実行したくても待たされている状態** という意味になります。ロードアベレージでは上記のプロセス数を表示するので、値が高ければサーバーの処理が詰まってしまってしまい、負荷が高い状態となっていると言えると思います。

# プロセスの状態

プロセスの状態には以下の5種類があるようです。

+ TASK_RUNNING->CPUが割り当たれば実行可能な状態。CPUが割り当たって処理実行中もこの状態に当たる。(実行中のプロセスはロードアベレージの数値には換算されない)
+ TASK_INTERRUPTIBLE->割り込み可能な待ち状態。sleepやユーザーからの入力待ちなど。 **この状態のプロセスはロードアベレージには換算されない**
+ TASK_UNINTERRUPTIBLE->割り込み不可能な待ち状態。ディスクのI/O待ち
+ TASK_STOPPED->サスペンドのシグナルが送られて実行中断になっている状態
+ TASK_ZOMBIE->子プロセスがexitして親プロセスにリープされるまでの状態

# どうやってロードアレベージを調べるのか

top,uptime,sarコマンドなどで確認できます。

以下はtopコマンド実行結果のキャプチャです。

```bash
$top
top - 23:01:13 up  9:38,  2 users,  load average: 0.00, 0.01, 0.04
Tasks:  71 total,   1 running,  70 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.1%st
Mem:   1019444k total,   450140k used,   569304k free,    16368k buffers
Swap:        0k total,        0k used,        0k free,   369504k cached
```

上記の場合、 「load average: 0.00, 0.01, 0.04」という表示の部分がロードアベレージの値です。左から直近1分, 5分, 15分間のロードアベレージの値です。

uptimeコマンドでも同様に現在の状態を確認できます。
ロードアベレージだけ見たい場合にはこちらの方が見易いですね。

```bash
$uptime
 23:08:34 up  9:45,  2 users,  load average: 0.00, 0.01, 0.04
```

sarコマンドでは過去の状況の確認もできます。(sysstatパッケージのインストールが必要)

```bash
$sar -q
Linux 4.1.17-22.30.amzn1.x86_64 (ip-172-31-29-53) 	2016年03月07日 	_x86_64	(1 CPU)

13時30分01秒   runq-sz  plist-sz   ldavg-1   ldavg-5  ldavg-15
13時40分01秒         0        76      0.00      0.01      0.03
13時50分01秒         0        76      0.00      0.01      0.03
14時00分01秒         0        76      0.00      0.01      0.03
14時10分01秒         0        77      0.00      0.01      0.03
```

「ldavg-1,ldavg-5,ldavg-15」がtopやuptimeと同じように対象時間をベースにした直近1分、5分、15分間のロードアベレージの時間となっています。
Qiita ＞ ストックが見えない > 見える状態になった

昨日(2016年3月7日)の6時くらいから、Qiita webの「ストック」が見えない状態になっている。

ストックをクリックしても以下のメッセージが表示される。

> フィードの読み込みに失敗しました。
画面の再読み込みをお試しください。

Qiita の Twitter には特に不具合情報としてあがってない。

以下の環境で試した

- Mac OS X 10.8.5 + Chrome
- Mac OS X 10.8.5 + Safari
- Windows 7 pro 32bit + Chrome
- Windows 8.1 pro 64bit + Chrome

ストックが見えないのはちょっと困る。

Twitterには「xxxストック」という情報が多すぎて、障害情報が見にくい。
障害情報だけ別ページに用意することを検討いただきたい。

<hr>
(追記 2016/03/08 16:00、追記2016/03/09 06:10)
僕のアカウントではストックが見える状態になっています。
他のアカウントでは回復してないという報告がコメントにあります。
技術英語 > ... is the wisest course of action? / Think twice before you do it. / double-check one's data

@ Star Trek Voyager > MANEUVERS

危険をおかしても敵を追うと主張するJaneway に対してNeelix が

> ... is the wisest course of action?

http://eow.alc.co.jp/search?q=course+of+action&ref=sa

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

> Think twice before you do it.

ソースは失念。`before you do it`の部分は別のフレーズだったかもしれない。`before you go`???

<hr>
Think twice 関連で思い出したのは

http://eow.alc.co.jp/search?q=double+check

> double-check one's data
Unityのインストールからプロジェクトの作成まで

#目次
１．はじめに
２．Unityとは？
３．インストールをしてみよう！
４．プロジェクトを作ってみよう！
５．終わりに

#１．はじめに
今回の記事ではUnityがどういうものか、Unityを使う上で必要なことを記事として残しておきたいと思いました
また今回の記事ではUnityの説明、インストールからプロジェクトを作るところまでを説明させていただきます
インストールするUnityのバージョンは5.3.3です

#２．Unityとは？
知っている方も多いですし、バリバリ使っています！という人もいっぱいいますが改めてUnityを説明させていただきます

Unityとは、ユニティ・テクノロジーズが開発した複数のプラットフォームに対応したゲームエンジンです
コンシューマのゲーム、スマートフォンのゲームなどさまざまなプラットフォームに対応しているので多くの開発者に使われています
ゲームエンジン自体はC++で書かれていますが、C#、JavaScript、Booでスクリプトを書くことができます
さまざまなゲーム機器などに対応しておりVR/ARの開発もすることができます

また最近ではパチンコ・パチスロや遊技機の開発用ライセンスの「Unity for 遊技機」の販売が開始されました

簡単にUnityを説明しますと、**最強のゲームエンジン**と私は思います

割と何でもできる上に3dと2dの開発ができる、おまけに最先端の技術を使うことができるので他のエンジンと比べ頭一つ抜けていると感じます

#３．インストールをしてみよう！
文字ばかりなのは飽きてしまうので早速インストールしてみたいと思います！

[Unity](http://japan.unity3d.com/)

Unityのサイトにアクセスするとこのような感じの画面が出てきます
![スクリーンショット 2016-03-08 05.39.26.png](https://qiita-image-store.s3.amazonaws.com/0/77197/d1976b07-878c-f56d-7b75-2fa061cb1b10.png)

赤枠で囲ってある「Download」を選択します

![スクリーンショット 2016-03-08 05.42.39.png](https://qiita-image-store.s3.amazonaws.com/0/77197/67d1ff37-4b91-b957-0863-6fff78b05dc2.png)

そうしますとこのようなダウンロードをする画面に移るので早速インストーラーをダウンロードしましょう！

![スクリーンショット 2016-03-08 05.44.32.png](https://qiita-image-store.s3.amazonaws.com/0/77197/57f8f671-48ea-7dc5-5c91-72a188b6b729.png)

インストーラーを起動するとこのような画面が出てくるので「Next」を選択しましょう

![スクリーンショット 2016-03-08 05.46.46.png](https://qiita-image-store.s3.amazonaws.com/0/77197/178f0666-83e9-9f64-9491-80324e62a421.png)

「I accept the terms of the license Agreement」のチェックボックスを入れ「Next」を選択しましょう

![スクリーンショット 2016-03-08 05.51.44.png](https://qiita-image-store.s3.amazonaws.com/0/77197/7291ed14-76d6-d383-a953-3a7e1a8efb65.png)

左側にある「Android/iOS Build Support」のチェックボックスを入れておかないとビルドしたいと思ったときにできないので
自分が開発したい環境を選択しましょう
今回はAndroid向けに開発するので「Android Build Support」のチェックボックスを入れましょう

![スクリーンショット 2016-03-08 05.51.50.png](https://qiita-image-store.s3.amazonaws.com/0/77197/0b3640a1-00a7-b7bb-f95a-02a8799aae33.png)

インストール場所を変更したい際は場所を変えてください

![スクリーンショット 2016-03-08 05.51.57.png](https://qiita-image-store.s3.amazonaws.com/0/77197/37c86b75-e2de-b157-73ed-482d238811c1.png)

ここまでくるとインストールが始まります

![スクリーンショット 2016-03-08 05.56.16.png](https://qiita-image-store.s3.amazonaws.com/0/77197/42f064fc-2cd4-6662-5aeb-e5f83668f003.png)

インストールが終了するとこのような画面に移るのでそのまま「Finish」を選択しましょう
インストールの作業はここまでとなります

#４．プロジェクトを作ってみよう！

ここからはプロジェクトを作る工程に移りたいと思います

![スクリーンショット 2016-03-08 05.58.06.png](https://qiita-image-store.s3.amazonaws.com/0/77197/fe951873-4fd2-f2df-98d6-0054c67a8c59.png)

こんな感じの画面が出てくると思いますので「New」を選択しましょう

![スクリーンショット 2016-03-08 06.00.28.png](https://qiita-image-store.s3.amazonaws.com/0/77197/d71b3d0e-43df-fd68-a460-c579b55f7571.png)

プロジェクトの名前と保存場所が選ぶことができます
今回はデフォルトのままで行きたいと思います

![スクリーンショット 2016-03-08 06.03.59.png](https://qiita-image-store.s3.amazonaws.com/0/77197/aea216ab-950b-fe90-772e-bbafd724ce5c.png)

このような画面が出てきたらプロジェクトの作成に成功しています
プロジェクトの作成の作業はここまでとなります

#５．終わりに
10分から15分ほどでプロジェクトの作成まで行くことができるのでとても早いと思います
このインストールの簡潔さもUnityの良いところなのではないかと思います

次回の記事では空間に3Dオブジェクトを置いたり、実際に操作して動かしてみたいと思います
（実際に動かせるものをここに載せてみたいと思っているので頑張って勉強したいと思います）
Bundlerでmecabをインストールする際に 'mecab.h' file not found になった時の対処

# 概要

以下の環境で `bundle install` した際に `'mecab.h' file not found` になったので、解決策とエラー内容をメモっておきます。

- Mac OS X El Capitan
- ruby-2.2.3p173 (rbenv)
- MeCab-0.996をHomebrewでインストール済み
- mecabのgemをBundlerでインストールしようとする

# 解決策

`bundle config` で `mecab.h` の在処を教えてやればOK

```
$ bundle config build.mecab --with-cppflags=-I/usr/local/Cellar/mecab/0.996/include
```

# エラー内容

```
$ bundle install --path vendor/bundle
...
Installing mecab 0.996 with native extensions

Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    /usr/local/var/rbenv/versions/2.2.3/bin/ruby -r ./siteconf20160308-35660-17ft5zo.rb extconf.rb
checking for make... yes
checking for main() in -lstdc++... yes
checking for main() in -lmecab... yes
checking for main() in -lstdc++... yes
checking for mecab.h... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling mecab_wrap.cpp
mecab_wrap.cpp:1855:10: fatal error: 'mecab.h' file not found
#include "mecab.h"
         ^
1 error generated.
make: *** [mecab_wrap.o] Error 1

make failed, exit code 2
...
```

# 参考

- [Bundlerでビルドオプションを指定する](http://qiita.com/Th3_Ma5t3r/items/101c6b329830fb1fb27d)
vSphere CLI 5.5 on CentOS6

# Overview
 GUI操作は視覚的に操作できるが故に便利なのだが
「複数ホストを一斉操作」したり「他のシステムと連携」する時には不向き。
よって使いこなしてみようと思う。

　そもそもWindows嫌いだし。

# How to Install
　VMwareのサイトからインストーラをダウンロードする
2016.3.7現在におけるvSphere CLI 5.5の最新版は以下の通りだった。

- VMware-vSphere-CLI-5.5.0-1384587.x86_64.tar.gz

## Require packages
<pre>
 # yum install openssl-devel
 # yum install \
   perl-XML-LibXML perl-XML-LibXML-Common perl-XML-SAX \
   perl-XML-DOM perl-XML-Parser perl-XML-RegExp perl-Crypt-SSLeay \
   perl-Data-Dump perl-Class-MethodMaker perl-Compress-Raw-Zlib
 # yum install libuuid-devel libxml2-devel 
</pre>

## Install vSphere CLI 5.5
<pre>
 # tar zxvf VMware-vSphere-CLI-5.5.0-1384587.x86_64.tar.gz 
 # cd vmware-vsphere-cli-distrib/
 # ./vmware-install.pl 
</pre>

# How to use
myThingsのSORACOMチャンネルについて

## はじめに
2016年2月25日、myThingsにSORACOMチャンネルが追加されました。
ここではSORACOMチャンネルでできること、その活用方法を紹介します。
![f1d13aa244cc0f3bf3e3.jpg](https://qiita-image-store.s3.amazonaws.com/0/51093/3503bf07-86fd-4087-9f80-d5339857bec8.jpeg)


## トリガー
|トリガー名|設定項目|アクションに引き渡せる項目|
|:--------|:-------|:---|
|特定のSIMの通信量が指定した値を上回ったら|SIM<br>通信量の閾値<br>集計期間<br>再評価|IMSI<br>通信量(MiB)<br>ユーザーコンソールURL|
|特定のSIMが切断したとき|SIM|名前<br>セッション状態<br>速度クラス<br>コンソールURL|
|特定のSIMが接続したとき|SIM|名前<br>セッション状態<br>速度クラス<br>コンソールURL|
|指定した請求予定額を上回ったら|請求予定額の閾値|請求予定金額<br>課金情報URL|

###特定のSIMの通信量が指定した値を上回ったら
SORACOMユーザーコンソールの[監視設定](https://console.soracom.io/#/watch)でも通信量に閾値を設けて、メール通知を行うことができますが、このトリガーを利用するとSlackやプッシュ通知などメール以外の手段でも通知が可能になります。

###特定のSIMが切断したとき / 特定のSIMが接続したとき
SIMのセッション状態をトリガーにすることができます。
自作デバイスでこのトリガーを活用すればハートビート代わりに活用することができそうです。
（※ただしmyThingsのトリガー確認が15分間隔なので、死活監視に即時性が求められる場合は注意）

###指定した請求予定額を上回ったら
通信量ではなく、全体の請求予定額に閾値を設けてトリガー化することができます。
請求予定額の閾値に0を設定し、実行タイミングを一日一回にすることで、請求予定額を日々チェックすることができるようになります。
（※請求予定額に変化が無い場合はトリガーは発火しません）
![08d60c81407730235320.jpg](https://qiita-image-store.s3.amazonaws.com/0/51093/975ffa7f-9adb-78e3-1ad5-a261371c4f35.jpeg)


## アクション
|アクション名|設定項目|
|:--------|:-------|
|特定のSIMの速度設定を変更する|SIM<br>速度クラス|
|特定のSIMを有効化する|SIM|
|特定のSIMを無効化する|SIM|

###特定のSIMの速度設定を変更する
何らかのトリガーが発火した際に、指定したSIMの速度設定を変更することができます。
直接SORACOM APIを活用することなく、メールの件名に特定文字列があった場合に速度変更を行ったり、位置情報チャンネルと組み合わせて自宅や職場など自分のいる場所に応じて速度を変更する、Jawboneチャンネルと組み合わせて睡眠/起床に合わせて速度を変更するといったことが可能です。

###特定のSIMを有効化する / 特定のSIMを無効化する
何らかのトリガーが発火した際に、指定したSIMの状態を変更することができます。
決まった金額内で自作デバイスを運用した際など、前述の「特定のSIMの通信量が指定した値を上回ったら」トリガーや、「指定した請求予定額を上回ったら」と相性が良さそうです。

##まとめ
以上、SORACOMチャンネルでできること、そしてその活用例をご紹介しました。SORACOMは便利なAPIが沢山公開されており、それらを使いこなせば様々なことが可能になります。

ただ、直接APIを使うほどではない場面や、APIを実行する条件が複雑な場面（位置情報と連動したい、睡眠/起床といった人の状況と連動したいなど）では、myThingsを活用するとあっさり実現できるといったこともありますので、そういった際には是非myThingsのSORACOMチャンネルをご活用ください！

こういった新機能リリースのお知らせは内容にあわせて、[Facebookグループ](https://www.facebook.com/groups/iotmythings/)や[ブログ](http://blogs.yahoo.co.jp/mythings_staff)でお知らせしてますので、こちらもあわせて購読頂ければと思います。
やってみた: Elixirで試しに何か書いてみる(1) を参考にやってみた


ほぼ完全に [Elixirで試しに何か書いてみる(その1)](http://qiita.com/HirofumiTamori/items/602d9b326cb4816c2fe6) の写経です。
丁寧にまとめてくださっていて感謝。

自分メモなので読まれることは想定していません。

## install (ubuntu 14.04)

```shell-session
$ wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
$ sudo apt-get update
$ sudo apt-get install elixir
```

## vimプラグインを入れる

```vim
NeoBundle "elixir-lang/vim-elixir"
```

## mix new

```shell-session
$ cd ~/workspace
$ mix new vercheckex
$ cd vercheckex
$ mix test
```

## 依存ライブラリ指定

* httpoison (https://github.com/edgurgel/httpoison)
* floki (https://github.com/philss/floki)
* timex (https://github.com/bitwalker/timex)

上記のREADME.mdを参考に、mix.exsにdeps,applicationsに追加。

```shell-session
$ mix deps.get
```

hexがないと言われるので入れる。

## コード書く

まるっと写経。githubの構造が変わってて動かない部分は適宜修正。
tzdataがお試し時点でバグってたのでtimezoneの変換はちょい諦め。

https://github.com/douhashi/vercheckex/blob/master/lib/vercheckex.ex

## ビルド

```shell-session
$ mix run lib/vercheckex.ex
```

* rebarも入ってないと言われるので入れる。

TODO: warning出るので直す。

今日はここまで。
AWS IoT -> DynamoDBを設定する際に気をつけること

AWS IoTでRulesを指定してDynamoDBに値を流し込みたい。この要件を満たすためにRulesを何度か作ってみて試験的につながるかどうかを試すことはあるかと思います。その際の注意点。

# 生成したIAMロールは、そのDynamoDBテーブルにしかアクセス権限がないことを認識すべし

タイトルの通りです。
IAMロールを事前に作成してAWS IoTのRulesを作る人はあまりいないのでは？（Rulesに精通していれば話は別ですが。）Rulesを記述している途中で気づいて作っちゃうもの。自分がそうでした。

これです。

![スクリーンショット 2016-03-08 1.35.15.png](https://qiita-image-store.s3.amazonaws.com/0/102769/e0152d1d-eea2-bb09-3f2c-dd21a2edbee4.png)

ここで作成するIAMユーザは、あくまでこのアクセス対象のDynamoDBにしかアクセス権限を持っていません。（当たり前っちゃ当たり前なんですが）

これに気付かずに別のタイミングで作成したDynamoDBアクセスのルールを流用し、設定後データを流し込もうとすると、エラーも出さずに「ただデータが入らない」という事態に陥ります。

# IAMロールのポリシーの編集方法

そんなときは、IAM → ロール → ポリシーの編集 で以下のようにResourceを複数定義しましょう。

```
{
    "Version": "2012-10-17",
    "Statement": {
        "Effect": "Allow",
        "Action": "dynamodb:PutItem",
        "Resource": [
            "arn:aws:dynamodb:ap-northeast-1:XXXXXXXXXXXX:table/sensor_result",
            "arn:aws:dynamodb:ap-northeast-1:XXXXXXXXXXXX:table/sensorResult03"
        ]
    }
}
```

これで複数のDynamoDBテーブルにアクセスできるようになります。
ResourceSpaceを再インストールしたら画像へのリンクが全て消えたけど直った

[ResourceSpace](http://www.resourcespace.org)をrevision7009から最新のstable版である7683へ一気にアップデートした際、うっかり起こしてしまった事故。結果的にバージョンアップはあまり関係がなかったのだが、config.phpをリセットすると起こりうるので注意。

# 画像のリンクが全部消えた

事前にデータベースだけテスト環境に移植して動作確認をしていたので、アップグレード後も多分大丈夫だろうと思っていた。しかし、いざ本番環境に反映すると画像へのリンクが全部消えてしまっていた。

一旦過去のデータからデータベースをそっくりそのままインポートし直しても表示されない。一瞬すごい焦った。

## `config.php`の`$scramble_key`を維持しないと駄目

ここで、config.phpを作り直していたことに気付く。大体の設定を移植していたつもりだったが、`$scramble_key`というあやしい変数を忘れていた。

この`$scrumble_key`は、画像ファイル名を適当にランダムっぽくするためのシード値のようなもので、**この変数の中身が変わると、それまでファイルを保存していたパスを、ResourceSpaceが辿れなくなってしまう**。

`$scrumble_key`をうっかり忘れるとたいへんなことになるので、こういったコンフィグファイルはしっかりバージョン管理しておいた方が良いだろう。


# こちらもどうぞ!

[Vagrant・CoreOS・Dockerでインフラ素人が自宅サーバを立てた話 - Qiita](http://qiita.com/y_hokkey/items/3dd0d8f20f9daadbbf0b)
→ ResourceSpaceをこちらで紹介している自宅サーバ環境で運用しています。サンプルファイルあり

[オープンソースのDAMシステム、ResourceSpaceのまとめ - Qiita](http://qiita.com/y_hokkey/items/20336a3adc8672a41a4f)
#1 Cocos2d-xの画面設定的なやつ

// 学校の先生に教えてもらったCocos2d-xの実機での画面サイズ変更等(※メモ)

// #1 縦向きに表示するゲームを実機でテストしたら横向きで表示される。

A. proj.android\\AndroidManifest 内のscreenOrientetion = landescape ←をportraitに変える
(※landescape = 横向き / portrait = 縦向き)

// #2 画面のサイズが合わない

A. AppDelegate.cpp内の
   /* Size frameSize = glview->getFrameSize();
　　　　　　　　　　　︙
   } */
   register_all_packages();の前の"}"までコメントアウト又は消す
日本で利用できるPayPalの決済サービス（一対一、一回のみの決済）

日本で利用できるPayPalの決済サービス（一対一、一回のみの決済）は下記をまとめました：

1.ウェブサイトペイメントスタンダード(Website Payments Standard)
特徴：必要な技術レベルは一番低い、HTMLのFormでPayPalにパラメータを送る形です。
　　　商品の数は少ない場合は、PayPalアカウント中のボタン作成ツールで一個一個ボタンを作成しても可能、技術が分からない方でも実装できます。

製品案内：
https://www.paypal.com/jp/webapps/mpp/website-payments-standard
導入ガイド：
https://www.paypal.jp/jp/contents/support/introduction/web-payment-standard/
https://www.paypal.jp/uploadedFiles/wwwpaypaljp/Supporting_Content/jp/manual/PP_JP_Website_Payments_Standard_Integration_Guide-J.pdf



2.エクスプレスチェックアウト(Express Checkout)
特徴：API型のサービスです。いろんなAPIを利用することより、PayPalの決済や取引の管理などを柔軟に制御できます。

製品案内：
https://www.paypal.jp/jp/contents/support/introduction/express-checkout/
導入ガイド：
https://www.paypal.jp/jp/contents/support/introduction/express-checkout/
https://www.paypal.jp/uploadedFiles/wwwpaypaljp/Supporting_Content/jp/manual/PP_JP_ExpressCheckout_IntegrationGuide.pdf
各言語のSDK：
http://paypal.github.io/sdk/#merchant


3.ウェブサイトペイメントプラス(Website Payments Plus)
特徴：ペイパルアカウントなしにクレジットカードでの決済できます。

ウェブサイトペイメントプラス(Website Payments Plus)
https://www.paypal.com/jp/webapps/mpp/webpayment-plus
ウェブサイトペイメントプラスを利用するには、下記のページで利用申請してください。
https://www.paypal.jp/jp/contents/support/introduction/web-payment-plus/
導入ガイド：
https://www.paypalobjects.com/webstatic/ja_JP/developer/docs/pdf/paymentsplus_jp.pdf
Swift as!について

Swiftのas!について記載

asはクラスの型変換に使われますが、asとas!、as?との違いがあります。

as:キャストが成功すると保証されるときに使用（アップキャストなど）
as!:強制ダウンキャストの際に使用
as?:ダウンキャストが成功するか分からない場合に使用(失敗すると戻り値はnil)

```swift
class Car {}
class Bike: Car {}
class Track:Car {}

let a: Car = Bike()
a as Bike		//ダウンキャストではエラーが発生
a as! Bike		// 強制ダウンキャストは成功

let b = Bike()
b as Car		// 上位クラスへのアップキャストは成功

let c:Car = Bike()
c as? Track		// nilが返る
c as! Track		// エラー
```

以上
underscoreコードリーディング（isObject）


underscoreに詳しくないので、勉強半分でソースコードを読む。



##利用するバージョン
[underscore.js(v1.8.3)](https://github.com/jashkenas/underscore/tree/1.8.3)


##isObjectとは


###[underscorejs.orgのisObject](http://underscorejs.org/#isObject)

こんな説明。
>####_.isObject(value) 
>Returns true if value is an Object. 
>Note that JavaScript arrays and functions are objects, while (normal) strings and numbers are not.


```javascript
_.isObject({});
=> true
_.isObject(1);
=> false
```

------------- 
valueがobjectだった場合にtrueを返します。
Javascriptの配列や関数もobjectとして扱われますが、stringやnumberは扱われません。

###[underscore.isObject](https://github.com/jashkenas/underscore/blob/1.8.3/underscore.js#L1211)
コード的にはこのあたり。

```javascript
  // Is a given variable an object?
  _.isObject = function(obj) {
    var type = typeof obj;
    return type === 'function' || type === 'object' && !!obj;
  };
```

type === functionもしくはtypeがobjectで、かつobjの2重否定がtrueの場合のみtrueを返す。
ElectronのBrowserWindowでexternal linkを踏んだ時にブラウザで開く

`target='_blank'`なリンクを踏んだ時にブラウザで開いていたのがなぜかどこかのバージョンから適当な小さいウィンドウで開くようになってしまった。これを強制的に元の挙動に戻すには、

```js
import { shell } from 'electron';

mainWindow = new BrowserWindow({ ... });
mainWindow.webContents.on('new-window', (event, url) => {
  event.preventDefault();
  shell.openExternal(url);
})
mainWindow.loadURL(...);
```

のように`webContents`の`new-window`イベントにフックして`shell.openExternal`すればよい。
Nginx+PHP-FPMで異なるSSL証明書を使う時の覚書

SNIを用いて異なるSSL証明書を使ったサイトを複数構築する場合で
どういうわけか、表示されるものと表示されない状態のものが多発したので
テストサーバ上で検証した結果、セッションに原因があることを把握した。

### いつもは "php.ini" や ".user.ini" に記述していた。

```ini
session.save_path = "/var/lib/php/session"
```

ところが、Apacheで運用するにはそれでも良かったが
NginxとPHP-FPMを使う今回の仕様では

### "/etc/php-fpm.d/www\.conf" の最終行付近に該当箇所を発見。

```ini
php_value[session.save_path] = /var/lib/php/session
```

それを必要数分だけ　"/etc/php-fpm.d/www\.conf" をコピーしてそれぞれに合う設定ファイルを作成した。

### 重複してはならない該当箇所のみ修正。
例）異なるSSL証明書でWordPressとconcrete5を共存させる場合

```shell-session
# WordPress
sed -i "s|^\[www\]$|[wp]|g" /etc/php-fpm.d/wp.conf
sed -i "s|^listen = /var/run/php-fpm/www.sock$|listen = /var/run/php-fpm/wp.sock|g"  /etc/php-fpm.d/wp.conf
sed -i "s|php_value\[session.save_path\]|;\0|g" /etc/php-fpm.d/wp.conf
sed -i "s|php_value\[soap.wsdl_cache_dir\]|;\0|g" /etc/php-fpm.d/wp.conf
sed -i "423a\php_value[session.save_path]    = /var/www/wp_session" /etc/php-fpm.d/wp.conf
sed -i "424a\php_value[soap.wsdl_cache_dir]  = /var/www/wsdlcache" /etc/php-fpm.d/wp.conf
```

```shell-session
# concrete5
sed -i "s|^\[www\]$|[c5]|g" /etc/php-fpm.d/c5.conf
sed -i "s|^listen = /var/run/php-fpm/www.sock$|listen = /var/run/php-fpm/c5.sock|g"  /etc/php-fpm.d/c5.conf
sed -i "s|php_value\[session.save_path\]|;\0|g" /etc/php-fpm.d/c5.conf
sed -i "s|php_value\[soap.wsdl_cache_dir\]|;\0|g" /etc/php-fpm.d/c5.conf
sed -i "423a\php_value[session.save_path]    = /var/www/c5_session" /etc/php-fpm.d/c5.conf
sed -i "424a\php_value[soap.wsdl_cache_dir]  = /var/www/wsdlcache" /etc/php-fpm.d/c5.conf
```

これに加えて、Nginxの設定ファイルもそれぞれに読み込む "WebSocket" を指定する。

```nginx
# WordPress
    location ~ \.php$ {
        try_files                       $uri =404;
        include                         /etc/nginx/fastcgi_params;
        fastcgi_pass                    unix:/var/run/php-fpm/wp.sock;
        fastcgi_index                   index.php;
        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param                   HTTPS on;
        fastcgi_pass_header             "X-Accel-Redirect";
        fastcgi_pass_header             "X-Accel-Expires";
    }

# concrete5
    location ~ \.php($|/) {
        try_files                       $uri =404;
        include                         /etc/nginx/fastcgi_params;
        fastcgi_pass                    unix:/var/run/php-fpm/c5.sock;
        fastcgi_index                   index.php;
        fastcgi_param                   SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param                   HTTPS on;
        fastcgi_pass_header             "X-Accel-Redirect";
        fastcgi_pass_header             "X-Accel-Expires";
    }

```

最後にテストしてエラーが出なければリロードする。

### おまけ

共存するサイト数に依っては、サーバスペックに依存するので
"/etc/php-fpm.d/*\.conf"の"pm.max_children"の数値をデフォルトから変更しておくとサーバへの負荷が抑えられるので、サイト数に応じて丁度よい加減を見つけてみるといいかもしれない。

### 追記
SSLを扱うのに入れておかなければならない項目を忘れてました <(_ _)>
下記を "php.ini" 及び ".user.ini"へ追記します。

```ini
session.cookie_secure = On
```