OmniAICreator/Qiita-1.07M huggingface dataset:
Djangoのデータベース設定でschemaを指定する方法

Django:1.10

settings.pyのDATABASESのOPTIONSにスキーマ名を指定する。

```python:settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'testdb',
        'USER': 'testuser',
        'PASSWORD': 'testpassword',
        'HOST': 'localhost',
        'PORT': '5432',
        'OPTIONS': {
            'options': '-c search_path=schema_name'
        },
    }
}
```
Mac | Ctrl + k でカタカナに変換できない

# 問題

文字変換中に <kbd>Ctrl + k</kbd> を押しても何も起きない。

# 解決

<kbd>Ctrl + i</kbd> で変換できた。

# 原因

「Windows風のキー操作」を設定していたからだった。

![image](https://qiita-image-store.s3.amazonaws.com/0/89618/de0fef1d-dbce-a7a1-3a14-e5f68e2d3cf5.png)



# 環境

- Mac OS X El Capitan








<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
MacからWindowsへリモートデスクトップ接続した際の使いづらいキーボードを改善する方法

## はじめに
MacからWindowsへリモートデスクトップ接続して使っている方はどの程度いらっしゃるでしょうか？
接続するだけなら簡単なのですが、常用しているとキーバインドがデフォルトでUS配列だったりと不便なことが多いです。(手元のMacはJIS配列

このエントリでは、MacからWindowsへリモートデスクトップ接続した際の使いづらいキーボードを改善する方法を説明していきます。

## 課題1:キーボードがUS配列として認識される
なぜだかわかりませんが[Microsoft Remote Desktop](https://itunes.apple.com/jp/app/microsoft-remote-desktop/id715768417?mt=12)を使うとデフォルトのキーバインドがUS配列として認識されます。

### 対処1-1:レジストリを修正する
調べたところキーボードの設定はレジストリの下記のレジストリにて制御されているようです。
```HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\KeyboardType Mapping\JPN
"00010002"="kbd101.dll"
```
この値をJIS配列である```kbd106n.dll```に設定します。

### 対処1-2:Remote Desk Top Betaを使用する
上記の設定だけではなぜだかまだUS配列としてしか認識されません。しかし、Beta版のRDPを使うとこの問題を解決できます。
ダウンロードは[Microsoft Remote Desktop for Mac](https://rink.hockeyapp.net/apps/5e0c144289a51fca2d3bfa39ce7f2b06/)からできます。

## 課題2:CommandがWindowsキーになり使いづらい
### 対処2:Karabinarでキーバインドを変更する。
- [Karabinar](https://pqrs.org/osx/karabiner/index.html.ja)というキーボードカスタマイズツールがあります。
これを使用すると「RDPアプリがアクティブののときCommandをControlとして扱う」といった高度なキーバインドの変更ができます。

- インストール後、Preferencesを開き下記にチェックを入れます。
	- Command_L to Control_L
	- Control_L to Command_L

- 注1:```Change Key```タブの```Search```へ```virtual```と入力すると楽です。

## 終わりに
SCSS で&を後置した時の忘備録

タイトルの通り、後置で & を書きたい時に軽く詰まったので
簡単に忘備録を残しておきます。

テーブルに拡張クラスを追加する時、
既存のクラスの後ろに追加したクラス名が付くように書き出されて欲しいとか思って
以下のような事をすると物の見事にエラーで怒られました。

```
.table-my {
  .table& th,
  .table& td { padding-right: 2em }
}
```

と言う事で軽く調べてみると、下記の記事に幾らか参考になりそうな記述が。
[Sass 3.3で追加された「&」の新機能と@at-rootまとめ解説 | HTML5Experts.jp](https://html5experts.jp/kosei27/3297/)

`#{&}` と書く方法もあるそうで。
文字列に連なる場合は判別できないんでしょうね。

早速でこうしてみた。

```
.table-my {
  .table#{&} th,
  .table#{&} td { padding-right: 2em }
}
```

ら…、`.table-my .table.table-my tX` とコンパイルされた。。
いやいや、、なに繰り返しとんねん！ と。

もうちょっと読んでみると `@at-root` と言うのがあるそうで、
以下のようにすると意図通りの結果になった。

```
.table-my {
  @at-root {
    .table#{&} th,
    .table#{&} td { padding-right: 2em }
  }
}
```

ほんまにコレで良いんでしょうかね。。？

時間をかけずに素直にやりたければ下記にするのがベターでしょう。
たまにそれでは行けないケースもありそうではありますが。

```
.table-my {
  &.table th,
  &.table td { padding-right: 2em }
}
```

### 追記 @ 2017-02-20

こう書いた方が綺麗ですんなり行く気がしたので追記しておきます。

```
.table {
  &#{&}-my th,
  &#{&}-my td { padding-right: 2em }
}
```



---

### 余談

参考にした記事は数年前の物のようですが、
BEM は今だと以下の様な書き方が出来ると思います。

```
.block {
  ...

  // .block__element
  &__element {
    ...

    // .block__element--modifier
    &--modifier { ... }
  }
}
```

変なこと書いてましたら突いてやってくださいませ。
以上！
Chainerの基本オブジェクトについて〜optimizers編〜

[前回](http://qiita.com/moroku0519/items/b693e87e301411e41a08)はChainクラスについて書きました。Chainクラスを使えば、訓練データを与えることで損失関数をパラメータで微分した値が求まります。
次にやりたいことは、微分値を元にしてパラメータの更新を行うことです。（パラメータの推定がニューラルネットワークの鍵）
optimizersオブジェクトは、パラメータを更新して最適化するという処理をやってくれます。

#optimizers

例えば、[確率的勾配降下法（SGD）](http://qiita.com/moroku0519/items/3188382ad85a8654cc42#%E5%8B%BE%E9%85%8D%E9%99%8D%E4%B8%8B%E6%B3%95)でパラメータを最適化するとします。

```
model = MyChain()
optimizer = optimizers.SGD()
optimizer.setup(model)
```

最適化アルゴリズムとしてSGDを選択してあげたoptimizersに対して、setupメソッドの引数に、Chainオブジェクトを渡しています。

そして、「ひとつの訓練データのバッチ（x, y）を与えると、パラメータが１回更新される」という処理は

```
model.zerograds()  #勾配を初期化
loss = model(x, y) #順方向に計算して誤差を算出
loss.backward()    #勾配の計算（微分）
optimizer.update() #パラメータの更新
```

と書くことができます。パラメータの更新がたったの１行で表現できます。
これらの処理をループさせれば、最適なパラメータに近づけることができます。

#Chainerの基本オブジェクトの紹介まとめ
今回でChainerの基本オブジェクトの紹介はおしまいです。
Chainerの提供してくれるオブジェクトを使うことでニューラルネットワークの構築に必要な面倒臭い計算をライブラリに任せることができます。
現在、深層学習の勉強中の身で、至らない点やおかしな点が数多くあったと思います。
また勉強していく過程で修正、加筆していけたらと思っています。

次回からは、これらのオブジェクトを使って実際に学習させてみた様子などを書いていきたいと思います。

#参考

山下隆義
イラストでわかるディープラーニング 講談社
新納浩幸
Chainerによる実践深層学習～複雑なNNの実装方法～　オーム社
Arch LinuxでAndroid端末にカスタムリカバリーを焼き付けるメモ

# きっかけ

AndroidのROMを焼くために、以前はWindowsを使っていたが、メインとしてArch Linuxを使っているのでそちらでできないか試した。

その結果、案外あっさりと成功した。

Linuxを使ってカスタムリカバリーを焼く情報が、海外サイト含めあまり見つからなかったので、自分のメモも含めて書いておく。

# 環境

- Arch Linux
- RedMi 2(HM2014813)

多分他のLinuxでも同様にできると思う。

# やり方

## 準備

まず、Android機と接続するために必要なツール一式をインストールする。

```bash
sudo pacman -S android-tools
yaourt -S android-sdk android-sdk-platform-tools android-sdk-build-tools
```

次に、カスタムリカバリーイメージをダウンロードする。
端末に合わせたイメージ（recovery.img)がどこかにあるはずなので、見つけておく。

カスタムリカバリーにはいくつか種類があり、下記が人気のようだ。

- Clock Work Mod(CWM)
- Team Win Recovery Project(TWRP)
- PHILZ

自分の場合はRedMi2という端末を使っており、また以前にCWMを使ったことがあるので、「redmi 2 clockworkmod」あたりでググって探した。

## 本番

PCとAndroid機をつなぐ。
PCに認識されたら、Android側で接続方式をカメラに、USBデバッグモードを有効にする。

下記コマンドで接続を確認。

```bash
adb devices
```

Android機の電源を切り、ボリュームダウン(端末によってはアップの場合も有り）ボタンを押しながら起動して、fastbootに入る。

下記コマンドで、CWMを一時的に起動できる。

```bash
sudo fastboot boot recovery.img
```

問題が無ければ、下記コマンドで、CWMを永続的に焼くことができる。

```bash
sudo fastboot flash recovery recovery.img
```

後はカスタムROMを焼いたり、バックアップを取るなり楽しめる。
自分はCyanogenmod 13を焼いた。

# 参考

- http://en.miui.com/thread-120001-1-1.html
- https://wiki.archlinuxjp.org/index.php/Android
AndroidStudioの便利ショートカット - 行数表示＋α

新しいPCで「Android Studioで行数表示するのどうやるんだっけ…？」と探した結果かなり便利なショートカットを発見したのでメモ。

とりあえず一般的な（設定画面を使用した）行数表示の設定方法はこちらです。

# 通常の方法で行数表示をする場合
1. AndroidStudio > Preferencesで設定画面を開く
2. Editor > Appearance内の"Show line numbers"をチェック
3. OKを押して完了

今までは上記手順でやってたのですが、
行数表示やらショートカット設定やらする際に毎回「どこの項目だっけ？」となり
軽く探す→見つからず→調べる→設定
という無駄に長いことをやっていました…。

で、今回発見したのが以下のショートカット

# 各種設定を確認 / 設定するためのショートカット

Mac

```
Cmd + Shift + A
```

Windows

```
Ctrl + Shift + A
```

上記ショートカットを入力すると、こんな画面が表示されて
<b>様々な設定が検索＆設定できるようになります。</b>
<img width="475" alt="スクリーンショット 2016-11-05 10.31.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/85904/8c9e74a0-183b-e3df-b28b-c02824fabc3e.png">

[TIPS]
スクショでは行数表示用の項目を結果した場合のサンプルです。
"Active Editor"（ハイライトされている行）をタップして ON/OFF 切り替えもできますが
二行目の用な右側に<b>"Preferences"</b>と表示されている行をダブルクリックすると
簡単に<b>その項目に関連した設定画面</b>を開くことができます

# おまけ
上記画面で```generate```と入力すると様々なコードを簡単に生成することができるようでした。
毎回Getter/Setterなど、定型文を描くのがめんどい、という方はかなり楽になると思います

その他にも色々と活用方法があると思いますので、ぜひお試しください :yum:

※Generate検索時の項目
<img width="429" alt="スクリーンショット 2016-11-05 10.48.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/85904/1e7d346c-b33e-9903-3e30-5d131b4d6654.png">


※Generateタップ後
<img width="201" alt="スクリーンショット 2016-11-05 10.48.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/85904/62e5ada3-4977-68c3-1f56-d24d869b3bc7.png">
Wikipediaの数式のTexを簡単にコピペする方法


Wikipediaにこんな記述があって、この中から数式のTexをコピペしたいときにはどうすればいいでしょうか？
数式を見ながら、一からTexを書いてもいいですが、もっと簡単な方法もあります。

![スクリーンショット 2016-11-05 12.48.11.png](https://qiita-image-store.s3.amazonaws.com/0/74551/525529e0-958e-7198-bddc-0b7dad4f1bc9.png "スクリーンショット 2016-11-05 12.48.11.png")

# 方法

webインスペクタを使い、この数式のimage要素を調べてみると・・・

![スクリーンショット 2016-11-05 12.50.58.png](https://qiita-image-store.s3.amazonaws.com/0/74551/63268b69-d5d0-40f6-bf7a-368046050718.png "スクリーンショット 2016-11-05 12.50.58.png")

alt属性の部分に数式が埋め込まれていますね。
あとはそれをコピペすれば簡単に数式を取り出すことができます。

$$
e^{{i\pi }}+1=0
$$

ねっ、簡単でしょう!
AES暗号化力勝負、Raspberry PI 3 vs PINE64 vs Intel vm 

# Pine64+到着

64bit対応のARMのおもちゃ、Pine64+到着。思ったよりかなりデカいよ。。。真ん中はチップは同じARMv8のA53 64bitではまともに動かないラズパイ3。上はラズパイゼロだけど今日は戦力外。Armv8のAESアクセラレータが気になってたので、Intelの同様のAES-NIと比較。Intelは某IaaSのインスタンスで実験。
![image](https://qiita-image-store.s3.amazonaws.com/0/132165/527a03e9-64a4-ae0d-4ebd-beea361cc357.png)

# 基本スペック

|  | Pine64+ | RapberryPi3 | Intelのvm |
|:-:|:-:|:-:|:-:|
| (v)CPU  | A53 1.2GHz 4Core | A53 1.2GHz 4Core |  Xeon E5-2676 v3 @ 2.4GHz 4vCore |
|  OS | Ubuntu for Pine64 改  | Raspbian(32bit ARMv7扱い)  | Ubuntu 16 |
| Memory  | 1GB  | 1GB  | 16GB!!  |
| Price | $19  |  $35 | $0.239/1時間  |

# とりあえずハノイの塔
きちんとベンチマークを測ればいいのだけど、省略。Cで書いたやっつけハノイの塔30段勝負。解き終わる時間が早いほうが強い。予想通りIntel圧勝ですが、クロック以上の差がでてますね～。当然処理を分散させるわけもなく、1コアに負荷は偏ってますｗ
![image](https://qiita-image-store.s3.amazonaws.com/0/132165/98aa2710-2891-24a2-5b6d-fae3bc9f495d.png)

#AES処理対決方法
さて本題。AESの処理速度をお手軽に比較するために今回はopensslを利用。1秒当たりの処理数（キロバイト）を表示してくれるらしい。なるほど。
```
$openssl speed  aes-256-cbc
```
-multiで使うコアを増やせるらしい。へえー
```
$openssl speed  aes-256-cbc -multi 4
```
-evpで暗号化エンジンを使って暗号化処理してくれるらしい。なるほど。ちなみにRaspberry3は/proc/cpuinfoでAES accelerator featureを確認できず。無理やり64bit kernelに上げても駄目だったのであきらめた。エンジンなし。 
```
$openssl speed  aes-256-cbc -evp
```
＊Pine64は-evpを外しただけではAESアクセラレータが外れてくれず、kernelやらopensslやらcryptodevやらいろいろいじったんだけど、今日は詳細は省略

#いざ対決
まずはアクセラレータなし、１コア。Intel勝ってる。ハノイの塔ほど差はつかず。ざっくりGhzに比例してるのかな？
![image](https://qiita-image-store.s3.amazonaws.com/0/132165/531186b0-542d-a31e-984b-0c5906eb9672.png)

そしてアクセラレータオン。処理バイトサイズが大きくなるとPine64がAES-NI超えた!!　Intel負けてる。Raspberry Pi 3 はAES accelerator なしなので全然だめですね。
![image](https://qiita-image-store.s3.amazonaws.com/0/132165/28637910-bcc4-23aa-b02d-c2e0e3267028.png)

次にアクセラレータなし、4コア分散。あれ、ARMは1コアのときより4倍弱ぐらいまで速度向上してるけどIntelは2倍ぐらい。Intel勝ってるけどやばいぞ、と思ったけど、ARMは物理４コアだけどたぶんIntelは4 Hyper Threadが2コアに乗っかってるだけかもしれないのでイーブンな勝負じゃないのかな。

![image](https://qiita-image-store.s3.amazonaws.com/0/132165/a099c52e-35a0-8dab-331a-dbb16ca26fe7.png)

最後にアクセラレータオン、4コア分散。基本的に1コアの時 似たような結果ですが、1コアのときｙりIntel強し。コア跨いだ処理だとさすがにXeon強いのかな。
![image](https://qiita-image-store.s3.amazonaws.com/0/132165/10348cc3-5b8e-5b87-9d88-83c5704c45d1.png)

#最後に
2000円程度のARMv8が予想以上にスゴイ。汎用プロセッサーとしてはIntel圧勝だけど、特定用途サーバとしてならすでにけっこう使えるんかもね。そしてIntelとARMでは明確に設計思想に差が。
OCamlでCSVの数値データ読み込みとPDFへの描画

OCamlでCSVを読み込んでPDFにプロットしてみた。

まずOPAMで依存パッケージをインストールしておく。

```shell
opam install batteries csv camlpdf
```

以下のソースコードを作成し、`ocamlbuild -pkgs camlpdf,csv,batteries main.native`でコンパイルし、`./main.native`で実行する。手元のMacBook Air (13 inch, Mid-2011)で時間を測ると、コンパイルは1.3秒程度、実行時間は45個のCSVファイル（合計6.5 MB）の読み込み＋PDF作成で2.8秒と、かなり速くて良い感じ。


```ocaml:main.ml
open BatList

type t = {
	x: float;
	y: float;
}

let write_pdf points path =
	let f p =
		Pdfops.Op_l (p.x *. 50.,p.y *. 1000.)
	in let ps = map f points
	in let ops =
	  concat [[Pdfops.Op_cm (Pdftransform.matrix_of_transform [Pdftransform.Translate (50., 100.)]);
	   Pdfops.Op_SC [0.5;0.5;0.];
	   Pdfops.Op_w 1.;
	   Pdfops.Op_m (0.,0.)
	   ];
	   ps;
	   [Pdfops.Op_S]
	   ]
	in
	  let page =
	    {(Pdfpage.blankpage Pdfpaper.a4) with
	        Pdfpage.content = [Pdfops.stream_of_ops ops]}
	  in
	    let pdf, pageroot = Pdfpage.add_pagetree [page] (Pdf.empty ()) in
	      let pdf = Pdfpage.add_root pageroot [] pdf in
	        Pdfwrite.pdf_to_file pdf path

let show_points p =
	Printf.sprintf "Point {%f,%f}" p.x p.y

let read_csv path =
	let dat = Csv.load path in
	let dat = drop 13 dat in
	let a = 1 in
	let decode [x;y] =
		{x = float_of_string x; y = float_of_string y} in
	map decode dat

let () =
	let f i =
		let points = read_csv (Printf.sprintf "testdata/%02d.csv" i) in
		write_pdf points (Printf.sprintf "%02d.pdf" i) in
	iter f (range 1 `To 45);;

```

なお、csv, camlpdfともにドキュメントがほぼないに等しいのでソースコードを読む必要がある。

csvは`CSV.load`というのが`string -> string list list`という型で、ファイル名を指定するとCSVの二次元リストを返す関数。

PDFの出力については、AdobeのPDF仕様書を読みながら`Pdfops.Op_l`（PDFの線を描画する`l`演算子）などの意味を紐解いていく必要があったが、PDFをいじったことのある人であればなんとかなる感じ。
Macのクイックルックを賢くするプラグイン


Macの標準機能にクイックルック（Quick Look）というのがあります。

ファイルを選択してスペースを押せば簡単にプレビューが表示できるアレです。

標準だと、テキストファイルやPDF、画像等が表示できると思います。

ここでは、便利なプラグインがおすすめだったので、紹介します。

※brew caskを使ってインストールします。 brew cask については [コチラ](https://caskroom.github.io/)

## [QLColorCode](https://github.com/anthonygelibert/QLColorCode)

ソースコードをシンタックスハイライトして表示できる。
![スクリーンショット 2016-11-05 11.43.10.png](https://qiita-image-store.s3.amazonaws.com/0/6311/030f4a14-bdb8-16ba-bf94-8cc12f8c7e53.png "スクリーンショット 2016-11-05 11.43.10.png")

HTMLも
![スクリーンショット 2016-11-05 12.05.16.png](https://qiita-image-store.s3.amazonaws.com/0/6311/5e1aecff-3be0-7e84-7055-76c40684dcf9.png "スクリーンショット 2016-11-05 12.05.16.png")

`$ brew cask install qlcolorcode`

## [QLStephen](https://github.com/whomwah/qlstephen)

READMEのようなプレーンテキストファイルを、拡張子なしでも表示できる。
![スクリーンショット 2016-11-05 11.39.02.png](https://qiita-image-store.s3.amazonaws.com/0/6311/0aac0fc9-f5d4-3746-df6a-02e9ebca6672.png "スクリーンショット 2016-11-05 11.39.02.png")

`$ brew cask install qlstephen`

## [QLMarkdown](https://github.com/toland/qlmarkdown)

Markdownを表示できる。
※相当嬉しかった
![スクリーンショット 2016-11-05 11.41.31.png](https://qiita-image-store.s3.amazonaws.com/0/6311/8c8b5237-eacc-a5a5-01b1-3899592d4df4.png "スクリーンショット 2016-11-05 11.41.31.png")

`$ brew cask install qlmarkdown`

## [QuickLookJSON](http://www.sagtau.com/quicklookjson.html)

JSONを表示できる。
プレビュー内の[ - ]で折りたたみができる。
![スクリーンショット 2016-11-05 11.45.35.png](https://qiita-image-store.s3.amazonaws.com/0/6311/a7a3cfdb-fb84-66af-3ca5-d1989c08413c.png "スクリーンショット 2016-11-05 11.45.35.png")

`$ brew cask install quicklook-json`

## [QLPrettyPatch](https://github.com/atnan/QLPrettyPatch)

.patchファイルを表示できる（らしい）。
※私の環境では、グラフィカルには表示されなかった（qlcolorcodeが優先された感じ）

本当はこうなる
![スクリーンショット 2016-11-05 11.49.50.png](https://qiita-image-store.s3.amazonaws.com/0/6311/c64dc677-584d-7c00-8489-fb0ae5a1906e.png "スクリーンショット 2016-11-05 11.49.50.png")


`$ brew cask install qlprettypatch`

## [QuickLookCSV](https://github.com/p2/quicklook-csv)

CSVをカラムと行数も含めて表示できる。
※素敵過ぎて涙でそう
※文字化けは別問題だと思う
![スクリーンショット 2016-11-05 11.52.53.png](https://qiita-image-store.s3.amazonaws.com/0/6311/2dc55987-06b4-9478-304b-e08a9c3bc937.png "スクリーンショット 2016-11-05 11.52.53.png")

`$ brew cask install quicklook-csv`

## [BetterZipQL](https://macitbetter.com/BetterZip-Quick-Look-Generator/)

圧縮ファイルの中身を表示できる。
Zip以外も表示できる。（ためしてはいない）
![スクリーンショット 2016-11-05 11.55.21.png](https://qiita-image-store.s3.amazonaws.com/0/6311/baa0fbaf-6974-96a9-dad7-db1ae47f604b.png "スクリーンショット 2016-11-05 11.55.21.png")

`$ brew cask install betterzipql `

## [qlImageSize](https://github.com/Nyx0uf/qlImageSize)

クイックルックしたときのプレビューのタイトルバーにサイズが表示できる。
![スクリーンショット 2016-11-05 12.01.12.png](https://qiita-image-store.s3.amazonaws.com/0/6311/9f503faa-4709-a455-74ba-b3f506f759de.png "スクリーンショット 2016-11-05 12.01.12.png")


`$ brew cask install qlimagesize`

## [ProvisionQL](https://github.com/ealeksandrov/ProvisionQL)

Provisioningファイル（.ipa）が表示できる。
意外と重宝しそう。
![アップロード中 スクリーンショット 2016-11-05 12.41.49.png]()


### 纏めてインストール

`$ brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlprettypatch quicklook-csv betterzipql qlimagesize provisionql`
Googleの計算資源を使って、無料で円周率の計算をしてみよう


Google BigQueryの課金体系はスキャンしたテーブルのサイズに対して課金されるシステムです。
そのため、無からテーブルを生成し、それに対して計算を行えば、理論上は無料で計算を行うことができるはずです。

というわけで、その1つの実例として、円周率の計算をしてみます。

計算には以下のライプニッツの公式を使います。

$$
\sum _{n=0}^{\infty }\,{\frac {(-1)^{n}}{2n+1}}\;=\;{\frac {\pi }{4}}
$$

[出典] https://en.wikipedia.org/wiki/Leibniz_formula_for_%CF%80

円周率を計算する公式の中では収束が遅い方ですが、式の形が簡単なので、計算のサンプルには良さそうです。

```sql
SELECT
  SUM(4 * POW(-1, n) / (2 * n + 1)) as pi
FROM
  (
    SELECT  GENERATE_ARRAY(1000 * l - 1000, 1000 * l - 1) AS m
    FROM UNNEST(GENERATE_ARRAY(1, 1000000)) AS l
  ),
  UNNEST(m) AS n
```

このSQLでライプニッツの公式の第10億項までの和を求めます。
試しに実行してみると、 `3.1415926525880504` という結果が得られました。
計算時間は410秒でした。
この結果と数表を比較してみると、小数点以下第8位までは正確な値になっていることがわかりました。

もちろん、計算にかかった費用はゼロ円です。

![スクリーンショット_2016-11-05_12_39_34.png](https://qiita-image-store.s3.amazonaws.com/0/74551/ebc10b58-1914-894e-287c-e95d47157eb5.png "スクリーンショット_2016-11-05_12_39_34.png")

誤差の評価を全然していないので、本気で数値計算をしている方々からは怒られそうですが、ネタ記事なのでこのくらいのテキトー加減で許してください。
GR-CITRUSのFirmwareをビルドする方法 for Windows

[GR-CITRUS](http://gadget.renesas.com/ja/product/citrus.html)は、mrubyが気軽に使える小型ボードです。Chrome Appの「Rubic」を使うことでプログラムの作成から実行までスムーズに行うことができます。

標準のファームウェアでもそれなりに遊べますが、ちょっとしたものを作ろうとするとカスタマイズしてビルドしたくなることがあります。GR-CITRUSの作者の方によるビルドの手順が["GR-CITRUSのmrubyソースをmakeする方法"](http://qiita.com/tarosay/items/39bbf4cba373ec9aff41)にも投稿されていますが、ここではWindows版のIDE for GRを使ったもう少し簡単なビルド手順を紹介します。

なお、Ubuntu16.04系でビルドする場合は、がじぇっとるねさすコミュニティに投稿されている[手順](http://japan.renesasrulz.com/gr_user_forum_japanese/f/144/t/3447.aspx)に従いクロスコンパイル環境を作ることでmakeができることを確認しています。

#必要なもの
この記事ではWindows10を使っています。

* [git for windows](https://git-for-windows.github.io/)

#IDE for GRのダウンロード
がじぇっとるねさすのWebサイトから[IDE for GR 0.8.0](http://gadget.renesas.com/ja/product/ide4gr.html)をダウンロードします。
zipファイルの中身を任意のフォルダに解凍します。
この記事では`D:\ide4gr-E0.8.0\`に解凍しました。

#GNU_RX_elf.batの修正
IDE for GRを解凍した後にできる`ide4gr-E0.8.0\hardware\tools\gcc-rx`フォルダにある`GNU_RX_elf.bat`ファイルを自分の環境にあうように書き換えます。書き換えるのは、`Set PATH=`です。`cd`の行はコメントアウトします。

```text:GNU_RX_elf.bat
@Echo Off
Set PATH=D:\ide4gr-E0.8.0\hardware\tools\gcc-rx\rx-elf\rx-elf\bin;D:\ide4gr-E0.8.0\hardware\tools\gcc-rx\Other Utilities;D:\ide4gr-E0.8.0\hardware\tools\gcc-rx\rx-elf\rx-elf\libexec\gcc\rx-elf\4.8-GNURX_v14.03;%PATH%
Set MAKE_MODE=unix

REM cd "C:\Program Files\KPIT\GNURXv14.03-ELF"

Cmd "cd\" /k
```

GNU_RX_elf.batをダブルクリックして起動します。表示されたコマンドプロンプトで、`rx-elf-gcc.exe --version`を実行してエラーが表示されないことを確認してください。

```
D:\ide4gr-E0.8.0\hardware\tools\gcc-rx>rx-elf-gcc.exe --version
rx-elf-gcc.exe (GCC_Build_1.01) 4.8-GNURX_v14.03
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


D:\ide4gr-E0.8.0\hardware\tools\gcc-rx>
```

#GR-CITRUSのソースコードの取得
コマンドプロンプトを起動して、githubの[wakayamarb/wrbb-v2lib-firm](https://github.com/wakayamarb/wrbb-v2lib-firm)リポジトリからmasterブランチをクローンします。

```
D:\work>git clone https://github.com/wakayamarb/wrbb-v2lib-firm
```

#makefileの修正
cloneしたソースコードのfirmwareフォルダにあるmakefileを自分の環境に合うように書き換えます。書き換えるのは`GNU_PATH:=`の一箇所だけです。IDE for GRをインストールしたパスに書き換えます。

```text:makefile
GNU_PATH := D:/ide4gr-E0.8.0/hardware/tools/gcc-rx/rx-elf/rx-elf/
GCC_VERSION := 4.8-GNURX_v14.03
```

#make
上記で修正した`GNU_RX_elf.bat`をダブルクリックして起動します。
makeでは表示されたコマンドプロンプトを利用します。
上記で修正した`makefile`があるフォルダに移動し、`make`コマンドを実行します。

```
D:\ide4gr-E0.8.0\hardware\tools\gcc-rx>cd D:\work\wrbb-v2lib-firm\firmware

D:\work\wrbb-v2lib-firm\firmware>make

(中略)

rx-elf-objcopy -O binary ./gr_build/citrus_sketch.x  citrus_sketch.bin
rx-elf-objcopy -O srec -I elf32-rx-be-ns ./gr_build/citrus_sketch.x  ./gr_build/citrus_sketch.mot

D:\work\wrbb-v2lib-firm\firmware>
```

正常終了すると、`makefile`と同じフォルダにある`citrus_sketch.bin`ファイルが更新されているはずです。

ビルドしたファームウェアを書き込む場合は、GR-CITRUSのリセットボタンを押してUSBメモリとして認識させた後、`citrus_sketch.bin`ファイルをコピーしてください。
webデザイナーがMacでホントに使うアプリ2016決定版

#はじめに。
webデザインやプログラミングを行う自分が、Macに入れていて本当に使う/使えるアプリを整理してみた。

なぜこのタイミングかって？
新型Macを買うか迷っているからさ､､､

その記録です。

#web制作関連
・[Atom](https://atom.io)
GItHub製のエディターで、自分好みにカスタムしやすい。
コーディングやプログラミングで使うエディター。

・Adobe Creative Cloud
グラフィックソフト。

・[Pixelmator](https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0ahUKEwj2rb7GypDQAhWET7wKHWh4CfgQFggnMAE&url=https%3A%2F%2Fitunes.apple.com%2Fjp%2Fapp%2Fpixelmator%2Fid407963104%3Fmt%3D12&usg=AFQjCNED5OsKAmS-mfrRhYEYcAL146kxAA)
photoshopよりも手軽に画像加工が出来るアプリ。おもに写真の加工をしたい場合に使用する感じ。

・[Sip](https://itunes.apple.com/jp/app/sip/id507257563?mt=12)
カラーピッカーアプリ。
Mac標準のDigital Color Meterより使い勝手が良いような。


・[SourceTree](https://ja.atlassian.com/software/sourcetree)
ファイルのバージョン管理に使っている。
ソースだけでなくデザインデータも管理でき、「昨日の状態に戻したい！」なんてときに簡単に戻せ重宝します。



#効率化
・[Alfred](https://www.alfredapp.com)
検索型ランチャー。
spotlightも優秀だが、こっちのが検索が早い。

「アプリの起動にアイコンクリックなんて、いちいちクールじゃない！」とクールな先輩に教わったアプリ。


・[CheatSheet](https://www.mediaatelier.com/CheatSheet/)
使用アプリのショートカットが確認できるアプリ。
コマンドキーを長押しすることでショートカットの一覧が表示されます。

・[Display Menu](https://itunes.apple.com/jp/app/display-menu/id549083868?mt=12)
ディスプレイの解像度をかんたんに変更できるアプリ。
状況に応じて、解像度を変更でき便利です。

・[Dr. Cleaner](https://www.macupdate.com/app/mac/52661/dr-cleaner)
メモリ使用量の確認と解放ができるアプリ。
無駄に使用しているメモリを開放し、最適な状態をキープ。


・[ShiftIt](http://shift-it.en.softonic.com/mac)
windowsのようにmacのウィンドウを分割できるアプリです。
左にブラウザ、右にエディターが簡単に行え超便利。


・[⌘英かな](https://ei-kana.appspot.com)
USキーボードの英数/かなを変換するアプリ。
左右のコマンドキーで英数/かな可能にする。

・[Flux](https://justgetflux.com)
ブルーライトをカットしてくれるアプリ。

・[Fluid](http://fluidapp.com)
WebサービスをMacアプリ化できるアプリ。
ぼくはFacebookやPinterest、プロジェクトで使用するwebサービスなどをアプリ化してる。そうすることで、Alfredから一発で呼び出せるようになり神。

#情報整理・ストック系
・[Evernote](https://evernote.com/intl/jp/download/)
良いと思ったデザインや記事など全てここで管理している。
検索もでき最高にスペシャルなノート！！

・[Pocket](https://itunes.apple.com/jp/app/pocket/id309601447?mt=8)
あとで読みたい記事をストックするアプリ。
スマホとの連携が秀逸で、気になった記事をストックしあとでスマホで確認などチョー便利。

・[Google ドライブ](https://tools.google.com/dlpage/drive?hl=ja)
チームで共有の共有に使用することが多い。
多くの人がグーグルアカウント持ってることもあり、選択しやすいく、使いやすい。

・[Dropbox](https://itunes.apple.com/jp/app/dropbox/id327630330?mt=8)
クラウド上のデータ置き場。


#まとめ。
もっと多いかと思ったが15個くらい。

このアプリ良いよなんてものがあれば教えてください。
使い方も含めてくれると嬉しいっ。

それでは良きMacライフを。

Catch you later.
VMWareの仮想ネットアダプタに遊ばれた件

# 環境
Windows10 Insider Preview 14936
CoreOS 1122.2.0
ルーター: ASUS RT-AC87U

# 結論
 記事タイトル通りVMWareのNetAdapterがCoreOSと同じIPを取得していたのが原因でした。
 でもstaticじゃないのになんで同じIP発行されてたんだろう...
 
 まぁつまり最初のネットワーク図が下の状態だったわけです
![netwotk1.png](https://qiita-image-store.s3.amazonaws.com/0/114420/c55a11fe-6e67-9d76-da7a-186314bc26c9.png)


# 何が起きているのか
簡単な構成図です

![network.png](https://qiita-image-store.s3.amazonaws.com/0/114420/8eb1a39d-1b3d-f78f-27c6-00404ffa2dc0.png)

CoreOS側でnginxをdockerコンテナ上で実行しPort: 80でページを閲覧できるようにしておきます。
RouterにもPort: 80の通信はCoreOSにポートフォワーディングしておきます

この時点で外部からCoreOS側のページは外部から閲覧できるようになっています

仮に下図の用にローカルアドレスを振ったとします

![IP.png](https://qiita-image-store.s3.amazonaws.com/0/114420/1331f492-72c0-f297-08c5-162cf853b892.png)


Windows側からhttp://192.168.1.3 へアクセスすれば見えるはずですが**アクセス拒否**されてしまいます。
一応pingを全方向から打ってみましょう

![ping.png](https://qiita-image-store.s3.amazonaws.com/0/114420/2865872e-b58c-a8b6-e985-bbfa424efdb0.png)

青がpingを打った方向です。
すべてpacket loss無しでした。

tracerouteを実行してみます。

![traceroute.png](https://qiita-image-store.s3.amazonaws.com/0/114420/39de6313-58c7-e8ad-718e-81ce8f87b1c6.png)

Windows側からCoreOS側を**見つけられません**。

もう何が何だか僕にはわからないのでWindows側でPort: 80でWebサーバを開きましょう
そうしてCoreOSにアクセス( http://192.168.1.3 )するとWindowsで開いたWebサーバのページが見えます。

ルーターにiPhoneを繋いでみましょう。
下のようになります。

![iphone.png](https://qiita-image-store.s3.amazonaws.com/0/114420/0e4e839d-0c93-127f-89e7-4505bd55ce07.png)

そこからWindows, CoreOS側に繋いでみます。
すべて**正常に見えます**。

# 終わりに
僕にはもうわかりません。
~~誰か解決策ください。~~
~~でもなんかWindowsぽい感じはある~~
何かあればコメントか
Twitter: [@syu_chan_1005](https://twitter.com/syu_chan_1005)
までどうぞ。
BigQuery Standard SQLで配列中の全要素の和を求める方法


```
WITH T AS (
SELECT 1 AS n, GENERATE_ARRAY(1, 1) AS ary UNION ALL
SELECT 2 AS n, GENERATE_ARRAY(1, 2) AS ary UNION ALL
SELECT 3 AS n, GENERATE_ARRAY(1, 3) AS ary UNION ALL
SELECT 4 AS n, GENERATE_ARRAY(1, 4) AS ary UNION ALL
SELECT 5 AS n, GENERATE_ARRAY(1, 5) AS ary
)

SELECT
  n,
  (SELECT SUM(x) FROM UNNEST(T.ary) AS x) AS sum
FROM
  T
ORDER BY n
```

このクエリを実行すると以下のような結果が得られます。

| n | sum |
|---|-----|
| 1 | 1   |
| 2 | 3   |
| 3 | 6   |
| 4 | 10  |
| 5 | 15  |
雲勉【勉強会：初心者向け/デザイナー向け】今日から使いたくなる！Webデザイナー・フロントエンジニアのためのAWS超入門に参加した記録

## リンク
https://kumoben.doorkeeper.jp/events/51338

## クラウドって何？

### クラウド
- 従量課金制
- スペック・台数が自由に変更できる（Yahoo砲などに対応しやすい）
- 組み合わせて使える
- 多様なサービス

### レンサバ
- 固定月額制
- 共用の場合安い
- スペック・台数が固定
- 単一の利用

## AWS のサービス
### EC2
サーバをそのまま提供
### Lambda
イベントをきっかけに処理を実行するサービス
### S3
リソース提供サーバ
### RDS
MySQL などを載せる様のサービス
### Machine Learning
機械学習用のサービス

## フルマネージドサービス
AWSをまず始めるならこれ！

- Cloud Front
- S3

## S3 でできること
バゲット単位でデータを貯めこむ。それに対してURLを設定することができるので、基本的なWebサーバとしての機能が存在する。

→マルチドメイン対応のサーバが作れる

※エンドポイントは**https**をサポートしていないので、注意！

- IPによるアクセス制限
- 独自ドメイン設定

※BASIC認証はできない。

お名前.com などで取った独自ドメインを Route53 によってドメインとドメインをつなぐ設定が出来るが、注意点

- バケット名はドメインと同じ名前にする
- Route53 でエイリアスレコードを設定する
- リダイレクト設定も可能


## Cloud Front でできること
エッジサーバー（キャッシュサーバ）を使ってコンテンツを配信できるサービス
オリジンを配信するサーバからデータを取得して、オリジンに流さなければならないものは流し、そうでないものはキャッシュから返答するようにすることが出来る

**噛ませるとかなり落ちにくくなる**

### 嬉しいポイント

- 圧縮ファイルを活用できる

gzip でファイルを提供する設定をできるので、クライアント側の読み込みも早くなる
転送量が下がるので料金もお得
- HTTP/2対応

管理画面からチェックを入れるだけで HTTP/2 対応に出来る
※SSL対応していないとできない
- 独自ドメインによるSSL対応

AWS Certificate Manager を使えば無料で HTTPS 通信対応が可能に

- エラーコードの設定

カスタムエラーページが設定できる

- アクセス制限

AWS WAF を使えばIP制限が簡単に出来る


## 質問
S3 と DainamoDB などをつなぐことはあるが、S3 とRDSだったり、様々なサービスとつなぐことはあるのですか？
→ cognito や SNS 、Lambda などがハブとなるサービスになり、さまざまなサービスを連結することが出来る。ただし、相性があるので、連携させることが出来ないものもある。
SQLである列の要素すべての積を求める方法


SQLで列の要素すべての和を求めるためにSUM関数を使います。
一方で列の要素すべての積を求めるためにはどうすればいいでしょうか？

※以下のSQLはすべてGoogle BigQueryのStandardSQLで動作確認を行っています。

# 目的
| n  |
|----|
| 1  |
| 2  |
| 3  |
| 4  |
| 5  |

上のようなテーブルTが与えられた時、n列の数値すべての積の計算を行うSQLを書く。

# 解答
とりあえず、答えを書いておきます。

```sql
SELECT
  CAST(
    ROUND(
      IF(
        COUNTIF(n = 0) > 0,
        0,
        EXP(SUM(LN(IF(n = 0, NULL, ABS(n))))) * IF(MOD(COUNTIF(SIGN(n) = -1), 2) = 0, 1, -1)
      )
    )  AS INT64
  )AS prod
FROM
  T
```


# 方法
この答えに至る道筋です。

## 積を和に変換

そのものずばりな関数はないので、工夫して計算する必要があります。
累乗の性質を利用して、$ \prod $ を $ \sum $ に変換しましょう。
計算尺の原理と同じですね。

$$
\prod_n a_n = \exp \left\\{ \sum_n \ln \left(a_n \right) \right\\} \qquad (1)
$$

この式をSQLにしてみます。

```
SELECT
  EXP(SUM(LN(n))) AS prod
FROM
  T
```

実行してみると、`119.99999999999997`という結果になりました。
計算途中で浮動小数点型に変換している部分があるので、それに起因する誤差が発生しました。
今回のケースでは、計算結果が整数であることは明らかなので、四捨五入をした後に整数型にキャストしましょう。
計算対象の列が浮動小数点型のときには、この処理は不要です。

```sql
SELECT
  CAST(ROUND(EXP(SUM(LN(n)))) AS INT64) AS prod
FROM
  T
```

これで、結果が`120`になりました。

## 負の数に対応
ところが、上のSQL文ではまだ問題のある場合があります。
それは、かけ合せる要素内に負の数が存在する場合です。
このときにはLN関数引数が定義域の外に出るためエラーになってしまいます。
SIGN関数を使って、この問題を解決してみましょう。

(1)式を $ a_n $　が負の場合も考慮して拡張すると以下のようになります。

$$
\prod_n a_n = \exp \left\\{ \sum_n \ln \left| a_n \right| \right\\} \times \prod_n sign( a_n )
$$

前半の因子は前節と同じ方法で計算ができます。
後半の因子はSIGN関数の性質から以下のように計算することができます。
なお、あるnに対して $ a_n $ が $ a_n = 0 $ になるケースについては次節で考慮するので、ここでは考えないこととします。

$$
\prod_n sign(a_n) = \left\\{
\begin{array}{ll}
1 & \mathrm{the\ number\ of\ } sign(a_n) = -1 \mathrm{\ is\ even} \\\\
-1 & \mathrm{the\ number\ of\ } sign(a_n) = -1 \mathrm{\ is\ odd}
\end{array}
 \right.
$$

これをSQLで表現すると以下のようになります。

```sql
SELECT
  CAST(
    ROUND(
      EXP(SUM(LN(ABS(n)))) * IF(MOD(COUNTIF(SIGN(n) = -1), 2) = 0, 1, -1)
    )  AS INT64
  )AS prod
FROM
  T
```

これで一件落着かと思いきや、まだ考慮する必要のある場合があります。

## ゼロに対応
前節で紹介したSQL文でも、 $ a_n $ が0の場合にはエラーになってしまいます。
それに対応するためのIF式を挿入します。
1つ以上の因子が0の時には積が0になることをSQLで表現してみます。

```sql
SELECT
  CAST(
    ROUND(
      IF(
        COUNTIF(n = 0) > 0,
        0,
        EXP(SUM(LN(ABS(n)))) * IF(MOD(COUNTIF(SIGN(n) = -1), 2) = 0, 1, -1)
      )
    )  AS INT64
  )AS prod
FROM
  T
```

これでは、まだエラーになってしまいます。
IF関数の評価が正格なために、第1引数がTRUEの時にも第3引数の評価が行われてしまいます。
LN関数の引数を強制的にNULLにしてしまいましょう。

```sql
SELECT
  CAST(
    ROUND(
      IF(
        COUNTIF(n = 0) > 0,
        0,
        EXP(SUM(LN(IF(n = 0, NULL, ABS(n))))) * IF(MOD(COUNTIF(SIGN(n) = -1), 2) = 0, 1, -1)
      )
    )  AS INT64
  )AS prod
FROM
  T
```

これで完成です。
Ruby | ファイル内容から正規表現で複数のマッチ結果をキャプチャする

`File.open.read` と `scan` を組み合わせる。

# ファイル内容

```text:who_is_fine.txt
ALICE IS FINE, BOB IS CLOUDY
CAROL IS CLOUDY, DAVE IS FINE
EVE IS FINE, FRANK IS FINE
```

# スクリプト


```rb
File.open('/tmp/who_is_fine.txt') { |f| fines = f.read.scan(/([A-Z]+) IS FINE/); f.close; fines }

# => [["ALICE"], ["DAVE"], ["EVE"], ["FRANK"]]
```

# 環境

- ruby 2.0.0








<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->
Ubuntu 14.04 LTS / GTX 1070 / CUDA 8.0 > CUDA8.0インストール後に再起動するとUbuntuが起動しなくなった > NVIDIAドライバのreinstallが重要

```txt:動作環境
GeForce GTX 1070
ASRock Z170M Pro4S [Intel Z170chipset]
以下のOSのdual boot
---
Windows 8.1 pro (64bit)
---
Ubuntu 14.04 LTS desktop amd64
```

ロングバージョン
http://qiita.com/7of9/items/b8af28c9145bb43e8995

以下は簡略版

- ビデオカードをGTX 1070に変更後、CUDA 8.0をインストール
   - Ubuntu起動しなくなった
- Ubuntu再インストール後、CUDA 8.0をインストール　
  - Ubuntu起動しなくなった
- Ubuntu再々インストール後、CUDA 8.0をインストール
   - 参考http://qiita.com/hidenorly/items/a3eb3a0375e6703d163b
   - > おそらく、再起動後、まともに動かない状態かと思いますので、
   - > $ sudo apt-get install nvidia-367 --reinstall
   - 上記をすることでUbuntuが起動できるようになった

自分の環境だけなのか不明だが、これで解決するまで2時間は無駄にした。
VBAから非同期でSendKeysを行う

# 概要
VBAからPowerShellを非同期で実行し、.NETのSendWaitを実行するだけ

# コード

```vbnet

''' <param name="iKeys">
'''送信する文字列
'''</param>
''' <param name="pSendDelayMilliSec">
'''SendWaitを実行する前の待ち時間（ミリ秒）。
'''PowerShell起動そのもののオーバヘッドもあるため、既定値は0ミリ秒
'''</param>
Public Sub AsyncSendKeys(ByVal iKeys As String, Optional ByVal pSendDelayMilliSec As Long = 0)
    Dim psCmdTxt(4) As String
    Let psCmdTxt(0) = "PowerShell.exe -sta -Command &""{"
    Let psCmdTxt(1) = "Start-Sleep -Milliseconds " & pSendDelayMilliSec & ";"
    Let psCmdTxt(2) = "Add-Type -AssemblyName System.Windows.Forms;"
    Let psCmdTxt(3) = "[System.Windows.Forms.SendKeys]::SendWait('" & iKeys & "')"
    Let psCmdTxt(4) = "}"
    
    Call VBA.Shell(VBA.Join(psCmdTxt, ""), vbHide)
End Sub
```

# 経緯
1. あるプログラムの操作を自動化しようと考えた。
2. 該当のプログラムはCOMオブジェクトとして操作可能なため、自分の慣れもあってVBAを使うことにする。
3. 大部分の処理が出来た時点で、一部操作がCOM側から操作不可能なことが判明（確認漏れ）。
4. 幸いOfficeの`ExecuteMso`に相当するものが存在したので、GUIを表示させて、キーボード操作で対応することにする。
5. `ExecuteMso`相当コマンドが、GUI表示中は呼び出し元の動作を停止する仕様であることが判明。
6. 非同期でSendKeysすれば良いのでは？（上記のコード）
7. 「呼び出し元」の動作を停止するので、PowerShellから非同期で`ExecuteMso`相当をすれば良いじゃん（最終結論）。

# まとめ
PowerShellを使えばコマンドライン実行でも、COMオブジェクト操作・.NETライブラリの使用が可能。
あまり常用すべきでは無いと思うが、可能であることを知っておくのは悪くないと思う。
python Anaconda のバージョンアップ

# 概要
2016/6 頃にインストールしたAnaconda-4.0.0を 2016/11 時点の最新版に更新する手順

# 環境
- MacBook Pro (Mid 2012) with NVIDIA GeForce GT 650M 1024 MB
- OS X El Capitan
- Xcode 7.3  command-lineツールもインストール済
- homebrew インストール済み
- pythonの環境（更新前） Anaconda-4.0.0

---

# 手順

1. terminal を起動
2. conda list  で condaコマンドが使えることを確認。
3. conda update conda でconda自体の更新、Proceed ([y]/n)?　と聞かれるので、 y
4. conda update anaconda でanacondaの更新、Proceed ([y]/n)?　と聞かれるので、 y

以上で更新完了

---

# 確認

1. conda list で、Anacondaのバージョンが 4.2.0 になっていること
2. Anaconda Navigatorを起動、独自に作った Environmentも問題なく使えること

# 参考、参照、Special Thanks
- http://oyamazemi.wiki.fc2.com/wiki/Anaconda%20のアップデート
レコードを検索


## SELECT・FROM

SELECT文の最も基本的な構文は次のような形です。

※SELECT 句の実行順序
FROM →  WHERE  → GROUP BY →  HAVING →  SELECT →  ORDER BY

```sql
SELECT 列名 FROM テーブル名
```

SELECT句では、si.shop_idやi.item_nameのように__テーブル別名__.__列名__という記述のしかたをします。これは、テーブルが 1 つだけの場合と違って、結合の場合、どの列をどのテーブルから持ってきているかが不明瞭になりやすいため、それを防ぐための措置です。

この形式で記述をしなければならないのは、2つのテーブルに存在している列（ここではitem_id）のみであり、他の列は「shop_id」のように列名だけ書いてもエラーにはなりません。しかし、前述のように混乱を避けるという理由から、結合の場合は SELECT 句の全ての列を<テーブルの別名>.<列名>の書式で書くようにすることが望ましい。


## WHERE

WHERE句を使用して条件を指定することで、取得したいデータのみを取得することができます。

```sql
SELECT 列名1 ,列名2, ...
FROM テーブル名
WHERE 条件式
```

条件式は列名と演算子、関数などを使用して表現します。以下の例をご覧下さい。従業員テーブルから年齢が20歳以上の従業員名を取得しています。

```sql
SELECT 従業員名
FROM 従業員
WHERE 年齢 >= 20
```

| 比較演算子 | 説明 |
|:------------:|:------------:|
|=|等しい|
|<|小さい|
|>|大きい|
|<=|以下|
|>=|以上|
|<>, !=|等しくない|


論理演算子を使用することでWHERE句の中で複数の条件を指定することができます。 以下の例をご覧下さい。従業員テーブルから年齢が20歳以上かつ性別が男性の従業員名を取得しています。

```sql
SELECT 従業員名
FROM 従業員
WHERE 年齢 >= 20
  AND 性別 = '男性'
```

WHERE句で使用できる論理演算子には以下のようなものがあります。
WHERE句で使用できる論理演算子

|論理演算子|説明|
|:------------:|:------------:|
|AND|論理積，　○○かつ○○|
|OR|論理和，　○○または○○|
|NOT|否定，　○○でない|
問題解決報告書 資料作成術 企画提案書 プレゼン資料 アナロジー思考 革新的なアイディア

###はじまり

はぁ

うぉ〜〜〜
アイディアがたくさん生まれるぞ！！！
資料作成なんてたくさんかいてしまえば簡単だ！！！

、、、（数時間後）、、、

プレゼン後

チーン

なんで、どうして僕のアイディアが斬新なものばかりで一杯あるのに、、、

と資料作成で悩んでいる方！！聞いてください。

書けばいいってわけでも
何も考えずに行動していても意味がありません

説得力のある資料作りとして有名な「PREP（プレップ）法」を使う人もいると思います。

「Point」（要点）
「Reason」(理由)
「Example」(例)
「Point」(要点)

まずは、要点を書き、次にその理由を説明して、さらに具体例を出した後、再び結論にまとめる方法です。

口頭で説明する時に頭の中がわかりやすいです。
文章で説明すると文字がダラダラと続いてしまい、長ければ長くなるほど理解しにくくなります。
しかも、最初の結論がズレていたらダメな資料となってしまいます。

資料作成において、現状を徹底的に観察し、問題が起きている理由を深く分析するのが第一歩になり、本質的なことだけを紙一枚に書くようにしましょう。

##資料作りの「７つのステップ」
「７つのステップ」に仕事術がある。

テーマ：
１、背景
２、現状
3、目的設定
4、真因分析
5、解決策（代替案）
6、実行計画
7、結果検証

この７つのステップによって説得力のある業務改善提案や組織改革提案などの問題解決の資料が作れるのです。

##STEP1 背景
なぜ、そのテーマを設定するのかを説明する。
「背景」を埋めていくと、設定しているテーマは本当に解決すべきかどうかが自分でもわかってきます。さほど重要ではないと思ったら柔軟にテーマを変えよう！
・背景の説明
問題を取り上げる事情を書きます。世の中の流れや業界事情といった視点からテーマを書くことも大事。
・あるべき姿
上記の背景説明を踏まえて、自分たちの目標を書きます。
※上記を補足するための図表やグラフ、データを入れるとより説得力が増します！！

##STEP2 現状
今どうなっているのかを説明する。
「現状」【三現主義】で現状を明らかにします。
・定量データ集め
数字で表現されているデータを集めます
・定性データ集め
インタビューのコメントや意見など、数値ではわからない生の声を集めます
※上記を補足するための図表やグラフ、データを入れるとより説得力が増します！！
特質要因図で定性データをまとめる
オフィスワークでは定量データの推移血が取りにくい現場もあります。
その場合、聞いた意見や、クレームをグルーピングし、その定性データを特性要因図で整理すると分かりやすくなります。

##STEP3 目標設定
具体的に何を目指すのかを説明する。
「目標」ステップ１の「背景」で書いた「あるべき姿」とステップ２の「現状」を見て、達成すべき現実の目標を書きます。
「目標」を書く際の３つのポイント
1、いつまでに達成するかの期限を明記する。
2、具体的な数値目標を書く
3、目標を達成する手段は書かない

問題解決の目標
現状→目標→あるべき姿
問題解決の目標は、現状とあるべき姿の間にある。

５回の「なぜ？」を繰り返していく中に問題の神髄が見つかる

##STEP4 真因分析
目標と現状にギャップができている問題の原因は何かを分析する。

##STEP5 解決策（代替案）
STEP4 で導いた原因に対する対策案を複数リストアップし、それぞれを評価して何に取り組むかを決定する。

##STEP6 実行計画
誰が、いつまでに、何を実行するのか、スケジュールを設定する。

##STEP7 結果検証
実行して結果があったかどうかを書き、わかったことを組織で共有する。



各ステップを埋めていくことで、本質的な思考を身につけることができます。
問題解決力、企画提案力、人を納得させるためのストーリー化（シナリオ化）する力の３つを主に指します。

###PDCA

####Plan(計画)
背景
現状
目標
分析
解決策
実行計画

####Do(実行)
実行計画

####Check(評価)
結果検証

####Action(改善)
結果検証

Planを重視します。
現状や問題の原因の把握の前に焦って実行することが問題解決の最大の落とし穴になります。

## 関連記事

【About】(http://qiita.com/sunstripe) - サンストライプ

---

## 制作チーム：サンストライプ

[![sunstripe_logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/80600/322f2d60-f19d-af9e-2b6f-7290ca546848.png)](http://sunstripe.main.jp/)
http://sunstripe.main.jp/

(月１WEBコンテンツをリリースして便利な世の中を作っていくぞ！！ボランティアプログラマー/デザイナー/イラストレーター/その他クリエイター声優募集中！!)

### 地域情報 THEメディア
THE メディア 地域活性化をテーマに様々なリリース情報も含め、記事をお届けしてます！！
https://the.themedia.jp/

### ゼロからはじめる演劇ワークショップ
多様化の時代に向けて他者理解を鍛える

https://workshop.themedia.jp/

### プログラミングワークショップ・ウェブ塾の開講！！！
様々なテーマでプログラミングに囚われずに取り組んでいきます。
詳しくはこちら　↓　↓　↓　↓　↓　↓　↓　↓
[プログラミングサロン 月１だけのプログラミング学習塾](https://workshop.themedia.jp/posts/7057553?fbclid=IwAR32CfRQ7RvDOhvuogoSwqxDLMOU7Jvuzljlnx-TMc27qBPX1BnWsfLcBR8
)

### 協力応援 / 支援者の集い
## チーム：サンストライプ
#### プログラミングラボ
https://twitter.com/sunstripe2011

一緒にポートフォリオを作りませんか？現場の体験やそれぞれの立場から年齢関係なく作品を作りたい方々と一緒にチームを作って、作品を作っています。現場に行きたい人には、職場紹介や職場の体験や悩み相談なども受けております。
様々な職種からプログラミングの知識を得たい、デザインの知識を得たい、データーベースの知識を得たいという人が集まっております。
週１のミーティングにそれぞれの近況と作業報告して、たまにリモート飲み会などをしております！！

興味がある方は、DMに話しかけてみてください。

## トラストヒューマン
http://trusthuman.co.jp/
私たちは何よりも信頼､人と考えてます｡

｢コンサルティング｣と｢クリエイティブ｣の両角度から｢人材戦略パートナー｣としてトータル的にサポートします！！

キャリア教育事業
広域学習支援プラットフォーム『のびのび日和』
https://slc-lab.amebaownd.com/

#スポンサー募集
Ubuntu > link > dual boot環境でのUbuntu 14.04 LTS 再インストール

```txt:動作環境
GeForce GTX 1070
ASRock Z170M Pro4S [Intel Z170chipset]
以下のOSのdual boot
---
Windows 8.1 pro (64bit)
---
Ubuntu 14.04 LTS desktop amd64
(但し、起動できない）
```

http://qiita.com/7of9/items/b8af28c9145bb43e8995
において起動しなくなったUbuntu。

Ubuntuの再インストールをすることになった。
過去（１０年以上前）にdual boot環境で失敗してきたのは、grubの中にlinuxメニューが２つになったり、Windowsが見えなくなったりしたことだった。

以下を試してみることにした。
http://linux-suomi.net/modules/letsubuntuyuiat/tips/tips_rinstall.html
<font color=red>上記の方法はUbuntuをインストールし終えるまでWindowsが起動できなくなるので、注意が必要だ。</font>

そしてインストール用DVD-Rを読み込んで5分ほど動かない。

再起動してDVD-Rを読み込ませて「Ubuntをインストール」を選択した。

３分ほどしてからインストール関連の設定画面にたどり着いた。
「Windowsとは別にUbuntuをインストール」を選択した。
GTX 1070のドライバがないためか、文字がぼやけているが、なんとかインストールできる状況ではある。
機械学習論文読みメモ_11

[Low-rank tensor completion: a Riemannian manifold preconditioning approach](http://jmlr.org/proceedings/papers/v48/kasai16.pdf), ArXiv
リーマン多様体に基づく条件付けを用いた、低ランク制約付きテンソル補間問題を扱う。
新たなリーマン計量の提案により、二乗誤差損失関数の性質と、テンソル分解におけるTucker decompositionの対称構造を活用する事が可能になる。
リーマン最適化の利用も可能になり、非線形共役勾配法、確率勾配法をバッチ、オンライン設定の双方において利用可能になった。
さらに、各最適化手法に関連したテンソル分解時に用いられる行列表現（Tucker manifold）も提案されている。

[On Symmetric and Asymmetric LSHs for Inner Product Search](https://arxiv.org/pdf/1410.5518.pdf), ICML2015
[locallity sensitive hashing](https://en.wikipedia.org/wiki/Locality-sensitive_hashing)（LSH)について、内積類似度に基づく構成法と、LSHの非対称性の効果について論じる。
従来研究では対称性を持つLSHの構成は存在しないと主張されていたが、本論ではそれが存在する事を示す。
この対称性を持つLSHのは非対称なものよりも強いgaruanteeが可能で、また実際の性能も良い。

[Additive Approximations in High Dimensional Nonparametric Regression via the SALSA](https://arxiv.org/pdf/1602.00287v3.pdf), ICML2016
高次元空間におけるノンパラメトリック回帰はその難しさが知られていて、その下界バウンドは次元に関して指数的に増大してしまう事を知られている。
この次元の呪いを克服する手法として、１次オーダーの可算モデルを用いる方法がある。
このモデルでは、各次元毎に関して定義される互いに独立な関数の和として回帰を行う。
分散を制御できる利点があるものの、このモデル設定は現実に適用するには厳しすぎる。
加法モデルでないモデルは基本的に大きな分散を持ちがちで、逆に可算モデルは大きな偏差を持ちがちである。
この２つのトレードオフを扱い、中間表現を考える。
提案モデルSALSAでは、各変数間の関連性を、ある一定のオーダーまでという制約で取り入れたモデルを用いる。
SALSAは二乗誤差をRHKSでの二乗ノルムを罰則項に取り入れた形で最小化する。
これは可算カーネルに関するカーネルリッジ回帰と見る事が出来る。
回帰関数が可算であれば、excess riskを次元に対して多項式オーダーで抑える事が出来る。
Mikulus動画を簡単に撮影する方法 その2：GeForce Experienceの録画を使う

#:angel:Mikulus動画を簡単に撮影する方法
![mikulus-small.jpg](https://qiita-image-store.s3.amazonaws.com/0/71326/04f32153-8960-7002-320a-5b080c82a632.jpeg)

 PC画面を録画するネタ、その2です！
その1はこちら:link:[Windows10のXboxゲームバーの録画を使う](http://qiita.com/shiftsphere/items/626097cd6770a760bdec)。

##:video_camera:nVidiaソフトウェアについてくる録画機能
###:video_game:GeForce Experience
　[:link:Unityでマイクアイコンが大量表示されたときの対処法](http://qiita.com/shiftsphere/items/0fa7f08206ae536a5e8c)の記事で出てきた謎アイコンを生じさせるあの`GeForce Experience`が出番です。

![micandloopicongennin.png](https://qiita-image-store.s3.amazonaws.com/0/71326/c840416e-a9dc-1bd3-8ee8-fc62c8ad9208.png)

こちらを使えばBandi＊＊＊とか**ロゴを付けずにデスクトップを録画**できます。

###:red_circle:録画方法
　常に録画状態にしておき、ショートカットキーで保存する「**インスタントリプレイ**」という機能が利用できます。ゲームのウィンドウ内が録画されたXboxゲームバーとは異なり、**メインディスプレイ全体が録画**されます。

　Mikulusの場合は**タイトルバーをダブルクリック**か、**`alt + Enter`**で全画面化してしまいましょう。この場合、他アプリのウインドウはサブディスプレイにて行うことになります。

###:fast_forward:ショートカットキー
![Ge-Rec-shortcuts.jpg](https://qiita-image-store.s3.amazonaws.com/0/71326/2153cae4-0d83-590b-9646-9224d28a1d08.jpeg)

- alt + F9  手動録画　オンオフ
- alt + F10 インスタントリプレイ：過去五分の録画を保存。
- alt + z メニュー表示

###:wrench:設定方法
　GeForce Experienceを起動したら、**三角形アイコン**からメニューを出します。
![shadowplay-01s.png](https://qiita-image-store.s3.amazonaws.com/0/71326/7d8893f7-1cc4-db19-bd8d-cc34d63657de.png)

・インスタントリプレイをオンにすると何時でも録画を保存できます。
・歯車アイコンから設定を開くことができます。
![Ge-Rec.jpg](https://qiita-image-store.s3.amazonaws.com/0/71326/dcb236e5-c092-5d78-4db9-cd707bb99cd8.jpeg)

###:heavy_exclamation_mark:インスタントリプレイや録画が有効に出来ないとき
　設定から「プライバシー管理」で「はい」（キャプチャを有効にする）を選択してください。
![Ge-Priv.jpg](https://qiita-image-store.s3.amazonaws.com/0/71326/486013ef-87a7-7012-0883-25748b813e7e.jpeg)

###:floppy_disk:動画の保存先
保存先は`\Videos\GameDVR`になっていました。ゲームタイトルごとかな？
フルHD、2分で566MB程。結構大きいので残容量にご注意です。

###:earth_asia:アップロード機能
「基本設定＞接続する」でログインしておくと、そのままYoutubeなどにアップロードができます。
なんとここで**簡単なカット編集**ができてしまう！これ便利！
![Ge-RecUploadEditor.jpg](https://qiita-image-store.s3.amazonaws.com/0/71326/35be0b99-6615-c699-664e-c08bc7a6ee25.jpeg)

アップロードしてみました。音声無しです。
VirtualDesktopの反射が髪飾りに映り込んでいるのが分かりますか？
[:link:MikulusCV1 VR Hatsune Miku in White world](http://www.youtube.com/watch?v=13NN3Bav8Q0)
[![MikulusCV1 VR Hatsune Miku in White world | GeForce GTX を使用して撮影 ](http://img.youtube.com/vi/13NN3Bav8Q0/0.jpg)](http://www.youtube.com/watch?v=13NN3Bav8Q0)

###:+1:360度写真にも対応しているらしい
![Ge-panor.jpg](https://qiita-image-store.s3.amazonaws.com/0/71326/165d852d-7596-fff7-d168-cec3ca26d88f.jpeg)
いじってて見つけました。立体画像は3D対応時代からあるかもしれませんが、360度も既に対応済みだったとは。GPUの付属ソフトレベルでこの対応…( ﾟДﾟ)スゲー


#:loudspeaker:最後に
　録画方法2本立ていかがでしたでしょうか。こんなに簡単に動画記録とれちゃうんですね。
　もちろんMikulus以外でもアプリの操作風景(UnityやUE4とかBlenderとか)とかをさっと撮影して動画にしてカットしてすぐYoutubeへ…なんてのもできちゃいます。
　ハードがないので不明ですが、きっとAMDのほうにも似た様な録画機能があるのかもしれません。

良い動画が撮れたら是非シェアしてみてください！
ミクさんといっしょ動画、みんなで増やしていきましょう！
技術英語 > who has simply made [a modest oversight] / overhear

@ Code Complete (No. 17387 / 36077)

> who has simply made a modest oversight

http://ejje.weblio.jp/content/oversight
> 見落とし、手落ち、監視、監督

意訳「単にわずかな見落としをした」

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

http://ejje.weblio.jp/content/overhear
> (…を)(話し手に気づかれずに)ふと耳にする、ふと聞く
PL/SQL行トリガー例文

PL/SQL基礎中の基礎をメモとして残します。

>＜＜行トリガーの作成＞＞
SQL> CREATE OR REPLACE TRIGGER 注文_在庫_TRIG
  2  AFTER INSERT ON 注文　FOR EACH ROW
  3  BEGIN
  4     UPDATE 在庫
  5     SET    在庫数 = 在庫数 - :NEW.注文数
  6     WHERE  製品名 = :NEW.製品名;
  7  END;
  8 /


行トリガー例。
・2行目のタイミングには「BEFORE」もしくは「AFTER」を指定。
　BEFOREであればDML処理の前に起動し、AFTERであればDML処理の後に起動。
・3行目のイベントには、トリガーの起動するDML文の種類、　すなわち「INSERT」「UPDATE」「DELETE」
・4行目には、このトリガーを設定する表の名前を指定
・「ON 表名」の後ろに「FOR EACH ROW」というキーワードがあれば行トリガーであり、なければ、文トリガー。

・OLDとNEW

:OLD.列名 ←DML操作前の列値
:NEW.列名 ←DML操作後の列値


- 参考サイト
http://www.istudy.ne.jp/training/serial/plsql/038.html
ただの画像をSource Image として使う

> 直面した問題

あまり手の込んでないちょっとした画像なんかをUnityで使いたいとき、Macのプレビューとかで編集して取り込んじゃいたかった。が、Source Imageの選択肢に取り込んだ画像が表示されなかった。

>解決法

画像の ** Texture type **を**Sprite(2D and UI)**にする。

>参考

https://docs.unity3d.com/ja/current/Manual/class-TextureImporter.html
【WIP】Rubymine / IntelliJ Ideaを100%使いこなす！Rails開発入門！

# 対象となる読者とゴール
* Ruby on Railsをちょっと使いこなせるようになった初学者
* AtomやSublimeを使い始めてRails開発している中級者
* 最強のエディタ、IDEを求めている人

上記に当てはまる人が、Rubymine / IntelliJ Ideaを使い、爆速でRails開発ができるようになることをゴールとしています。

# 前提
OS: Macを想定、ただし、Windowsでも使えると思いますが、ショートカットキーはMacのものを紹介します。

# もくじ
## Rubymine / IntelliJ Ideaの概要、導入、設定
* [Rubymine / IntelliJ Ideaについて](http://qiita.com/ogontaro/items/dfc5544f2ca70882518a)
* [Rubymine / IntelliJ Ideaの導入＆プラグイン＆設定](http://qiita.com/ogontaro/items/67e7fa83fbea873270d4)

## Rails開発スタートアップ
* [Railsの導入](http://qiita.com/ogontaro/items/a352d80189c7748b6d7d)
* コーディング
* デバッグ
* specテスト

## 機能限定(よくつかう機能の限定)
* 機能
* plugin
* ショートカット集

## 機能紹介(網羅)
* 機能
* plugin
* ショートカット集

## 参考サイト
[Rubymine解説動画(英語)](https://www.jetbrains.com/ruby/documentation/)
Rubymine / IntelliJ Ideaについて

[Topへ](http://qiita.com/ogontaro/items/4f293101cc618ad72fca)
# Rubymine / IntelliJ Idea概要
いわゆるIDE(統合開発環境)と言われているものです。
いわゆるエディタと呼ばれているものと大きく異なる点はプログラミング用の機能がかなり充実している点です。
例えば、以下のような機能を提供しています。

* 状況に応じたスマートな補完機能
* コードの静的解析
* コード修正の提案
* インラインデバッガの提供
* GUIでのコマンドの提供
* GitやDBのGUIの提供…など

[詳しくはこちら](https://www.jetbrains.com/idea/features/)

## 対応言語
### IntelliJ idea
* Java
* JavaFX (1 と 2 以降)
* JavaScript
* CoffeeScript
* TypeScript
* HTML/XHTML/CSS
* XML/XSL
* ActionScript/MXML
* Python/Cython
* Ruby/JRuby
* Groovy
* Kotlin
* SQL
* Perl (個別提供のプラグイン)
* PHP (個別提供のプラグイン)
* Scala (個別提供のプラグイン)
* Clojure (個別提供のプラグイン)
* Dart (個別提供のプラグイン)
* Haxe (個別提供のプラグイン)
* TypoScript (個別提供のプラグイン)
* Haskell (個別提供のプラグイン)

### Rubymine
IntlliJ IdeaからRubyとwebのフロント部、バックエンドのインフラ部の機能を抽出
* Ruby/JRuby
* JavaScript
* CoffeeScript
* TypeScript
* HTML/XHTML/CSS
* XML/XSL
* SQL

# ライセンス料とライセンス形態
共に年間ライセンスです。継続して利用することで安くなります。
機能制限がある分、Rubymineのほうが安いです。
**同時起動しなければ、1ライセンスで何台でも導入できます。**
[詳細はこちら](http://samuraism.com/products/jetbrains/intellij-idea)

# どちらを購入するか
まずは1ヶ月の無料試用があるので、試してみましょう。
しばらく使い、Railsの開発がメインになるならRubymine、PythonやScalaなどいろんな言語に使いたいならIntelliJ ideaを選択するのがよいでしょう。
ただ、基本的にはRubymineなどの言語を絞ったものをおすすめします。
というのも、言語ごとにショートカットキーの割当が異なり(Rubymineだとrakeタスク用の割当がある)、Intellij Ideaでプラグインを入れる場合、よくブッキングします。
GraphQLをちょこっと触ってみた

2016/11/04の夜にTLにGraphQLっていうのがいっぱい流れてきたのでなにそれ？ってつぶやいたら公式などにフォローされたりグループの仲間入りされたりしたのでちょい触ってみた。

# GraphQL
http://graphql.org/
みてね

# GraphQLってなぁに？
ちょっと触った限りの直感では結果指定できるRESTfulAPIじゃないかなって感じ(nodejsでサーバー立ててやったからかもしれないけど)

# サンプル(nodejs)
```package.json
{
  "devDependencies": {
    "express": "^4.14.0",
    "express-graphql": "^0.5.4",
    "graphql": "^0.7.2"
  }
}
```

```server.js
var express = require('express');
var graphqlHTTP = require('express-graphql');
var { buildSchema } = require('graphql');

var schema = buildSchema(`
	type Query {
		character(val: Int): Character!,
		func(val: Int): Int
	},
	type Episode {
		name: String!
	},
	type Character {
		name: String!
		episodes: [Episode]!
	}

`);

var root = {
	character : {
		name: "name1",
		episodes: [
			{ name: "child1"},
			{ name: "child2"},
			{ name: "child3"},
		]
	},
	func: (val) => {
		console.log(val);
		return val.val * 2;
	},
};

var app = express();
app.use('/graphql', graphqlHTTP({
  schema: schema,
  rootValue: root,
  graphiql: true,
}));
app.listen(4000, () => console.log('Now browse to localhost:4000/graphql'));
```
npm install
でパッケージのモジュール入れて
node server.js
で実行

# 結果
http://localhost:4000/graphql
にブラウザでアクセスすると

![image](https://qiita-image-store.s3.amazonaws.com/0/142784/78f7efc1-bf75-49eb-549f-a7090bfe71a9.png)

なのでてきて

![image](https://qiita-image-store.s3.amazonaws.com/0/142784/a4a9e91b-5721-41a2-89e0-b0e83fee4716.png)

左がクエリー内容で右が結果になります。
サーバーでできた結果(JSON)からこういうフィールドだけくれって指定できる感じがしますよね？ｗ
関数の引数も指定できるから色々できそうだよね？ｗ

#注意
スキーマに
type Query
が無いと怒られます(多分ルートノードの構造定義で名前決められてると思う)

# 感想
リクエスト来てクライアントで必要になるであろうデータの最大項目でKVSにしてあげて、あとはクライアントの要望したのだけ返すとかできそう＆フォーマット指定できるからテストとかでもエラーってわかりやすそうかなって思う。
あと、スキーマにインターフェイス使えたり、自身で作ったタイプとか指定できるのでいいかもしれない。
けど、型にInt64がなかったりするのはなんでだろうなぁって思う。
あと、公式サイトのドキュメントにどういうデータを利用してるのか書いてないからわかりにくいのなんとかして欲しい・・・(引数で30分ぐらい悩んだのでorz
Tips: Automatically backup Bitnami Redmine for Windows

Windows 向け Bitnami Redmine の自動バックアップについて

方針としては、 Windows のタスクスケジューラを使って定期実行を試みる。
タスクスケジューラは定期的に実行する実行ファイルを指定できるので、実行ファイルとしてバッチファイルを作成する。
バックアップ先はイントラネットのファイル共有サーバとする。

```bat:backup.bat
@echo off

<Bitnami Redmine インストールドライブ。C なら C:>
cd <Bitnami Redmine インストールパス htdocs まで>

<Bitnami mysql インストールパス>mysqldump -u root -p<password> bitnami_redmine > backup.sql

net use <ファイル共有サーバパス>

copy config¥database.yml <ファイル共有サーバパス> /Y
copy config¥configuration.yml <ファイル共有サーバパス> /Y
copy backup.sql <ファイル共有サーバパス> /Y
xcopy files <ファイル共有サーバパス>¥files /Y /I /S
xcopy plugins <ファイル共有サーバパス>¥plugins /Y /I /S
xcopy public¥themes <ファイル共有サーバパス>¥themes /Y /I /S
copy log¥production.log <ファイル共有サーバパス> /Y
```

タスクスケジューラはルートパスで実行されるのでドライブの移動と cd が必要。
また Bitnami のコマンドラインではなく、 Windows 標準のコマンドラインで実行されるので、 mysqldump のフルパス指定も必要だった。（これに気づくまでハマってしまった）
特大ペッパソン2016参加者向け参考リンク集

#リンク集について
DataSpider関連が中心となっていますが、役立ちそうだなというリンクが見つかり次第アップしていこうと思います。

#Pepper
- [Pepper ハッカソンに役に立ちそうな ボックスを 4つ](http://qiita.com/tkawata1025/items/df181d22e44f9150a01d)
- [Wifi環境が良くないところでPepperを動かしたいとき](http://qiita.com/UMasaU/items/11d90ea3e5632f26eaee)

#Pepperとの連携について
- [Pepper アプリプロジェクト内に独自の Webサーバーを立てる](http://qiita.com/tkawata1025/items/a4f249a981a406b262c9)
- [DataSpiderをつかってPepperと連携する方法](http://qiita.com/appresso_wakino/items/137145752ea3a7c91ba7)
- [IBM Blluemix を Pepper とつないでみよう](http://www.slideshare.net/TakujiKawata/ibm-blluemix-pepper)
- [「駅すぱあとWebサービス」をPepperで使えるようにしてみる](http://blog.val.co.jp/2016/10/pepper-webservice.html)

#APIパートナーさん
- IBM　[特大ペッパソン用IBM input資料](https://speakerdeck.com/gitmorizumi/te-da-petupasonyong-ibm-inputzi-liao)
- Microsoft [Discover the APIs](https://www.microsoft.com/cognitive-services/en-us/apis)

#DataSpiderの使い方について
- [ハッカソンでDataSpiderを使って開発をする](http://qiita.com/appresso_wakino/items/1e678c1168a8d79d02d3)
- [【はじめてのDataSpider】CSVファイルからJSONに変換してみる](http://qiita.com/appresso_wakino/items/bfa5d3f427c3b5cc49fd)
- [DataSpiderを使った連携処理開発の進め方](http://qiita.com/appresso_wakino/items/b4468538176fca812bc8)

#その他APIとの連携について
- [DataSpiderを使ってAutodesk Forgeプラットフォーム連携を試してみる](http://qiita.com/appresso_wakino/items/2dfb308af60aae142a44)
- [DataSpiderを使ってMicrosoft Cognitive ServicesのEmotion APIを呼び出す](http://qiita.com/appresso_wakino/items/2573d57cd62a778df61d)
- [DataSpider で CSVデータを AITalk® WebAPI を使って音声化してみる](http://qiita.com/propellerpanda/items/898a93d689b4f0dcfb67)
- [Twilio REST API を使用して DataSpider から電話をかける](http://qiita.com/enk/items/94e7b74036475d2fdd47)



まだ追加する予定でいます。。。
MacからVncに接続した時にキーボードショートカットが意図せず動作する場合


`Ctrl-A` などが動作せず，悩んでしまったがクライアントのMacでKarabinorを使っていたからであった．

`Disable all settings while you are using Remote Desktop or VNC.`


をオンにしたら，正しく動きました．

![スクリーンショット 2016-11-05 1.24.57.png](https://qiita-image-store.s3.amazonaws.com/0/75935/6caffb96-ffec-87e7-6f5a-f21aec235cba.png "スクリーンショット 2016-11-05 1.24.57.png")