OmniAICreator/Qiita-1.07M huggingface dataset:
WatchOS3 SceneKitやSpriteKitでサウンドを再生

WatchOS3からはSceneKitやSpriteKitを使用することができる
サウンドを再生させる方法はいろいろあるが
あくまでゲームを作成するのを目的でSceneKitやSpriteKitでサウンドを再生させる
ソースコードを公開する。
まだ試行錯誤なので時間があれば更新していきます。

***

*SceneKit

SCNActionでサウンドを鳴らす場合
使用用途はSEを鳴らす場合

```objc:InterfaceController.m
    SCNNode *soundNode = [SCNNode node];
    SCNAudioSource *sorce = [SCNAudioSource audioSourceNamed:@"ok.mp3"];
    SCNAction *action = [SCNAction playAudioSource:sorce waitForCompletion:true];
    [soundNode runAction:action];
    [scene.rootNode addChildNode:soundNode];
```

SCNAudioPlayerでサウンドを鳴らす場合
使用用途はBGMを鳴らす場合
注意)シミュレーターでは再生できても実機では再生されないしかしshouldStreamをtrueにすると再生できるようになる

```objc:InterfaceController.m
    SCNAudioSource *audioSource = [SCNAudioSource audioSourceNamed:@"battle1.mp3"];
    audioSource.loops = YES; //ループ
    audioSource.volume = 1.0; //ボリューム
    audioSource.positional = NO;
    //[audioSource load];
    audioSource.shouldStream = true; //true:再生時間が長い曲でも再生される
    SCNAudioPlayer *player = [SCNAudioPlayer audioPlayerWithSource:audioSource];
    [scene.rootNode addAudioPlayer:player];
```
***

*SpriteKit 

SKActionでサウンドを鳴らす場合
使用用途はSEを鳴らす場合

```objc:InterfaceController.m
    SKAction *action = [SKAction playSoundFileNamed:@"ok.mp3" waitForCompletion:true];
    [spriteNode runAction:action];
```

SKAudioNodeでサウンドを鳴らす場合
使用用途はBGMを鳴らす場合

```objc:InterfaceController.m
    SKAudioNode *node = [[SKAudioNode alloc] initWithFileNamed:@"battle1.mp3"];
    node.autoplayLooped = true;
    [spritekitScene addChild:node];
```
Travis CI の PHP プロジェクトで NodeJS の最新版をインストールする


Travis CI の `language: php` なプロジェクトで、`node --version` って叩いたら `0.10` だった。。。orz

いろいろググったら `apt-get install` する方法ばかり出て来たんですが、これだと `sudo: required` をセットしないといけない。

というわけで、調べたらちゃんと `nvm` が入ってて、`sudo` しなくてもよかった。

.travis.yml

```
language: php

php:
- '7.0'
- '5.6'

...

before_install:
  - nvm install node
  - nvm alias default node
  - node --version
```

これで最新版の NodeJS が使えるようになりました。
自鯖設置ひよんとふのサーバリスト一覧に自鯖を追加する方法

# 記事の目的

ぶっちゃけると、 [ひよんとふのGitHubページ](https://github.com/Shunshun94/hiyontof)見たらとてもわかり易く
`/main/hiyontof.conf.js`
が置いてありソースにもとてもわかりやすくコメントが入っているので、それでわかる方には不要な記事です。

ただ、こかげ工房さんの解説を参考にとにかくコマンドをよくわからないままコピペして設置して、

- サーバリストのドロップダウンに公式鯖とかあるのか
- 自鯖のURLを毎回コピペするのめんどくさいな
- でもどこいじったら良いんだろう？
- README見ても見つからないしどこかに解説ないの？

という方の場合は便利かもなーと、思ったのでとりあえず投稿だけしておきます。

まあ、私が一番最初に設定とか書いてないかなーとREADMEを見ても特に書いてなくて。
順番にフォルダを1分程かけて探していったのでそういう手間()を省ける人がいたらいいなーというレベルのノリです。

# サーバリスト一覧に自鯖を追加する方法

## 設置環境

- 設置場所：さくらのレンタルサーバスタンダードプラン
- ひよんとふ：Ver. 20161026
- ひよんとふのディレクトリ構成：[こかげ工房さん 簡単 ひよんとふ設置マニュアル](https://cokage.works/trpg/make-hiyontof/)そのまま

## サーバの追加方法

1. ひよんとふ設定ファイルを開く
2. 「ログインできるサーバ一覧」に自鯖のURLと表示名を追加  

以上!

### 1.ひよんとふ設定ファイルを開く

以下の場所にひよんとふの設定ファイル`hiyontof.conf.js`があるので、それを編集。

``` sh
% /home/******/www/hiyontof/main/hiyontof.conf.js
```


sshでログインしてそのままvim等で編集orFTPクライアントで手元で編集して再アップロード、好きな方法でどうぞ。

### 2. 「ログインできるサーバ一覧」に自鯖のURLと表示名を追加 

表示用のドロップダウンリスト一覧である、
`com.hiyoko.tofclient.ServerList.SERVER_LIST={}`
に自鯖のURLと表示名を追加します。

一番上に入れればリストの1番上に、最後に入れればリストの最後に追加します。
下のサンプルでは、リストの一番上に追加されるようにしてあります。

``` javascript:hiyontof.conf.js

/**
 * ログインできるサーバ一覧
 */

com.hiyoko.tofclient.ServerList = com.hiyoko.tofclient.ServerList || {};

/**
 * 最初から登録されているサーバ一覧。
 * ここに追加すれば別のサーバをデフォルトで表示させておくことができるし、
 * ここから削除すればそのサーバはデフォルトでは表示されなくなる。
 * 例えば、もしも自鯖にひよんとふを設置するならば、あなたのサーバをここに追加するといいかもしれない。
 */
com.hiyoko.tofclient.ServerList.SERVER_LIST = {
		'http://自鯖のURL':'ドロップダウンリストに表示したい自鯖名',
		'https://www.taruki.com/DodontoF_srv1/DodontoF.swf':'公式第三世代第壱鯖',
		'https://www.taruki.com/DodontoF_srv2/DodontoF.swf':'公式第三世代第弐鯖',
		'https://www.taruki.com/DodontoF_srv3/DodontoF.swf':'公式第三世代第参鯖',
		'https://www.taruki.com/DodontoF_srv4/DodontoF.swf':'公式第三世代第四鯖',
		'http://onse01.wtrpg.com/DodontoF/DodontoF.swf':'クラウドゲート公式',
		'http://dodontof.incoglab.com/DodontoF.swf':'インコグ・ラボ',
		'https://d1.trpg.net/DodontoF.swf':'TRPG.NET 第1',
		'https://d2.trpg.net/DodontoF.swf':'TRPG.NET 第2',
		'https://d3.trpg.net/DodontoF.swf':'TRPG.NET 第3',
		'http://trpg.gigafreaks.com/dodontof/DodontoF.swf':'如月翔也さん',
		'http://egotex.net/DodontoF/DodontoF.swf':'EGOTEX',
		'https://dodontof.cokage.works/': 'こかげサーバ'
};
```


以上を追加すれば、こんな感じでサーバリストに自鯖が追加されます。


<img width="987" alt="スクリーンショット 2016-11-06 13.46.58.png" src="https://qiita-image-store.s3.amazonaws.com/0/101788/c49fd4a2-83a7-3a7d-3f1e-023c62d5a28e.png">

自鯖へのアクセスだけでいいとか割り切るなら、自鯖だけ残して各種公式鯖等は削除してしまってもいいかもしれません。


## その他の設定項目

基本的に、`hiyontof.conf.js`のコメントが丁寧なのでそれで十分わかるのですが、
ここ以外に自鯖設置でデフォルトから設定変更するなら

サーバリストに登録されているサーバ以外へのアクセスを不可にする

``` javascript:hiyontof.conf.js


/**
 * 最初から登録されているサーバ以外のどどんとふへのアクセスを不可とするか、否かを設定する。
 * false (初期値)。 webif でつなげるすべてのサーバへの接続を許可する。
 * true にすると com.hiyoko.tofclient.ServerList.SERVER_LIST に登録されているサーバにしかアクセスできないようになる。
 */
com.hiyoko.tofclient.ServerList.RESTRICTION = true;

```
 
ここくらい？という感じがしています。

他鯖へのアクセスが重くて、自鯖での動作に支障が出るようなときくらいしか必要が無いような気もしますが。
そこまで負荷かかるものなのかは私にはよくわかっていないので、教えてえらいひと！


あとは実際に使ってみて通信量やら通知やらを見て変更かなという感じがします。


以上、ぐだぐだメモでした。

どどんとふは本当に自鯖にすると

- BGMもカットインもデフォルト設定し放題
- 部屋放置しても誰にも迷惑かけない
- スタンダードでも月500円とかオフセするのにカラオケなり公民館借りるより安い
- つまりコスパ最強

なので、どどんとふ自鯖設置はいいぞ！！！！

とダイレクトマーケティングをして終了します。
Windowsでdjango-compressorを導入する方法

Windowsでdjango-compressorを導入しようとしたら躓いたので内容をメモする

# 躓いた箇所
```py
pip install django-compressor
```
単純にこうインストールすると、rjsminとrcssminで以下のエラーが出る
```
Failed building wheel for rjsmin
~~~中略~~~
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
```
VC++の14.0をダウンロードしろって事らしいが、いざダウンロードしても同じようなエラーが出る

# 対策
https://github.com/spz-signup/spz-signup/issues/17
ここからの丸コピーで申し訳ないが
```
pip install rjsmin --install-option="--without-c-extensions"
pip install rcssmin --install-option="--without-c-extensions"
pip install django-compressor
```
これで一応動いた。
c-extensionsを無視するのはあまり望ましくない気がするが、そこはもう諦めよう
Vagrantの共有フォルダでCreate React Appを使用するならNFSでやってみる


##環境

- macOS Sierra 10.12.1
- Vagrant 1.8.7
- VitualBox 5.1.6
- CentOS 7.2.1511 x86_64
- Node.js 6.9.1
- NPM 3.10.8

##内容
Reactの公式サイトのQUICK STARTをやろうと思って、Vagrantを立ち上げて共有フォルダで、`create-react-app hello-world`ってやったらエラーになった。原因としては、共有ディレクトリの共有の速度の問題なのかもしれない。多分ね。

最初は、下記の設定でVagrantを立ち上げた。

```ruby:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "geerlingguy/centos7"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.provision "shell", inline: <<-SHELL
    yum update -y
    yum group install "Development Tools" -y
    timedatectl set-timezone Asia/Tokyo
    localectl set-locale LANG=ja_JP.UTF-8
    curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
    yum install nodejs -y
    npm install -g create-react-app
  SHELL
end
```

その後、ゲストOSにログイン後に、共有フォルダでcreate-react-appを実行した。

```bash
cd /vagrant/
create-react-app hello-world
```

結果、下記のエラーが出て失敗した。

```base
npm ERR! Linux 3.10.0-327.3.1.el7.x86_64
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "install" "--save-dev" "--save-exact" "react-scripts"
npm ERR! node v6.9.1
npm ERR! npm  v3.10.8
npm ERR! path /vagrant/hello-world/node_modules/react-scripts/node_modules/acorn-globals/node_modules/acorn/bin/acorn
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall chmod

npm ERR! enoent ENOENT: no such file or directory, chmod '/vagrant/hello-world/node_modules/react-scripts/node_modules/acorn-globals/node_modules/acorn/bin/acorn'
npm ERR! enoent ENOENT: no such file or directory, chmod '/vagrant/hello-world/node_modules/react-scripts/node_modules/acorn-globals/node_modules/acorn/bin/acorn'
npm ERR! enoent This is most likely not a problem with npm itself
npm ERR! enoent and is related to npm not being able to find a file.
npm ERR! enoent 

npm ERR! Please include the following file with any support request:
npm ERR!     /vagrant/hello-world/npm-debug.log
npm ERR! code 1

```

むむむ。となって、ホストOS（Mac）とゲストOSでやってみるが、どちらも成功した。共有フォルダのみで発生しとるっぽい。

ファイルが無いって言われましてもと思いながら、ググったがヒットせず。
みんなこんな事せずに、ローカルでやってるよねって思いつつも、やりたいので、考えた結果、共有速度が間に合ってないのかと思い、synced_folderに`type: "nfs"`を追加してやってみたら成功した。

nfsの方が共有の速度が速いとのことで、推測だけど、chmodをした時にはまだ共有されてなくて、ファイルが無いのかなとなった。速度の問題ならPCによって成功しないのか？困ったもんだ。
なので、タイトルは「やってみる」にしとく。

ゲストOS側で、共有ディレクトリに行って、ファイルを作成した時の動きを意識したことがなかった。そのうち調べよう。

最終のVagrantfileは下記となりました。

```ruby:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure("2") do |config|
  config.vm.box = "geerlingguy/centos7"
  config.vm.network "private_network", ip: "192.168.33.10"
  config.vm.synced_folder ".", "/vagrant", type: "nfs"
  config.vm.provision "shell", inline: <<-SHELL
    yum update -y
    yum group install "Development Tools" -y
    timedatectl set-timezone Asia/Tokyo
    localectl set-locale LANG=ja_JP.UTF-8
    curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
    yum install nodejs -y
    npm install -g create-react-app
  SHELL
end

```
Stackをhaskell-modeで使ってみよう

## はじめに

Stackをhaskell-modeで使えるように設定してみました。

StackはHaskellのビルドツールです。インストールは[こちら](https://docs.haskellstack.org/en/stable/install_and_upgrade/#mac-os-x)を参照しました。

haskell-modeはEmacsのプラグインです。インストールはパッケージ管理ツールのpackage.elを使いました。

ここでは設定と簡単な使い方を紹介します。

## 設定

`.emacs`などに下記のソースコードを追加します。

``` .emacs
;; フックを設定
(add-hook 'haskell-mode-hook 'haskell-indentation-mode)
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(add-hook 'haskell-mode-hook 'haskell-decl-scan-mode)
(add-hook 'haskell-mode-hook 'haskell-doc-mode)
;; (add-hook 'haskell-mode-hook 'view-mode)

(setq haskell-process-type 'stack-ghci)
(setq haskell-process-path-ghci "stack")
(setq haskell-process-args-ghci "ghci")

;; 環境変数PATHを設定しない場合は必要な設定
(add-to-list 'exec-path "~/stack-1.1.2-osx-x86_64")
```

考え方としては`stack`を経由させるという単純な考えです。

PATHを通せば不要になるものもあるかもしれませんが、こんな感じで使っています。

## 使い方

仕事で使っているわけではないので、`C-c C-l`のみを使っています。このキーシーケンスは`haskell-process-load-file`コマンドを実行するキーシーケンスです。

使い方は適当にhsファイルなどを開き、`C-c C-l`を押すだけです。

ほかにもたくさんの機能があるので、興味のあるかたはこちらを参照していただければと思います。

- [Haskell Mode](http://haskell.github.io/haskell-mode/manual/latest/)

もし`C-c C-c`などを使いたい場合はPATHを通してプロジェクトを作成する必要があります。

プロジェクトを作成するためには下記のようなコマンドを実行します。

```
$ stack new hello1106
$ cd hello1106
$ stack setup
```

もし、GHCのバージョンを指定したい場合は下記のようなコマンドを実行します。

```
$ stack new hello1106
$ cd hello1106
$ stack setup 8.0.1
```

## まとめ

最近はHaskellを触ることが少ないのですが、GHCの8.0.1が出ているのでこの機会に試してみるのもおもしろいかもしれませんね :coffee:

## 参照URL

- [stackでghc-modを使う試行錯誤のメモ - Qiita](http://qiita.com/hiratara/items/15aba2534b16c2af8a02)
- [Haskellプログラミングしてみた dec07 (12/07 20:45追記) - Qiita](http://qiita.com/nobsun/items/20c48cc6623573a396dc)
- [Intero for Emacs - Qiita](http://qiita.com/hiratara/items/a963960f7593db4b43ab)
- [Haskell Mode](http://haskell.github.io/haskell-mode/manual/latest/)
- [Haskell 用の emacs カスタマイズ例 - わからん](http://d.hatena.ne.jp/kitokitoki/20111217/p1)
- [Home - The Haskell Tool Stack](https://docs.haskellstack.org/en/stable/README/)
- [emacs-haskell-tutorial/tutorial.md at master · serras/emacs-haskell-tutorial · GitHub](https://github.com/serras/emacs-haskell-tutorial/blob/master/tutorial.md)
Wgetを使ってWebDAVからダウンロードする方法

##WebDAV = http + Basic認証

WebDAVの実体はhttp（https）とBasic認証を利用したWebサーバのため、Wgetでダウンロードできる

```
wget --http-user="ユーザ名" --http-passwd="パスワード" https://hogehoge/
```

`-r`を追加すれば丸ごとダウンロードできる

```
wget --http-user="ユーザ名" --http-passwd="パスワード" -r https://hogehoge/
```

`--ask-password`追加でパスワードを隠すことができる

```
wget --http-user="ユーザ名" --ask-password -r https://hogehoge/
```
センター試験過去問(2007年～今年)をまとめてダウンロードする

某衛星予備校のオンライン過去問DBは無料でそれなりに便利なのですが、
以下の理由からローカルにコピーを取ろうと思い、bashでがんばりました。

+ オンラインでないとアクセスできない(当然ですが…)
+ しばしば動作が不安定
+ 遅い
+ UIがIE向けに最適化されてる(!)

実行環境は Ubuntu 16.04.01 上の GNU bash 4.3.46 です。
bash on Windows でも動くかどうかは検証してませんが、おそらくPowerShellでも同じことができると思います。

過去問、解答、解説をPDFで取得し、
カレントディレクトリ以下に、年度ごとにフォルダを区切って保存します。
この過程で`wget`の`-P`オプションの存在をはじめて知りました。

以下、そのスクリプトです。

```bash:dlCenter.sh
#! /bin/bash

function download (){
	if [ -e $1/$2.pdf ] ; then
		echo $1/$2.pdf found. Skipping...
	else
		wget -P $1 $3/$2.pdf
	fi
}

for year in $(seq 2007 `date +%Y`)
do
	for subject in "eigo" "listning" "kokugo" "kokugo_k" "sekaishi-b" "sekaishi-a" "nihonshi-b" "nihonshi-a" "chiri-b" "chiri-a" "g-shakai" "rinri" "s-keizai" "rinri_seikei" "sugaku-1a" "sugaku-1" "sugaku-2b" "sugaku-2" "butsuri" "kagaku" "seibutsu" "chigaku" "rikasougou-a" "rikasougou-b"
	do
		#年度によってリクエスト先が異なる…なんてこった
		if [ $year -le 2011 ] ; then
			host="www.toshin.com/center/${year}/pdf"
		else
			if [ $year -eq `date +%Y` ] ; then
				host="sokuhou.toshin.com"
			else
				host="sokuhou.toshin.com/${year}"
			fi
		fi

		#問題
		download ${year} ${subject} ${host}/q
		#解答
		download ${year} ${subject}_ans ${host}/a
		#解説
		download ${year} ${subject}_k ${host}/kaisetsu
	done
done
```

年度によっては教科があったりなかったりするので、かなり404が出るかと思いますが、
とりあえず自分が受験する教科だけダウンロードできればいいので、目を瞑ることにします。

なお、2007年より前の問題はディレクトリ構造がバラバラなので対象外としています。
Xamarin.Forms でGPSを使用する

Mastering Xamarin.Forms[^1]を見ながら、Xamarin.FormsでGPSを使用して、緯度・経度を取得する方法をまとめてみました。

動作確認環境

- Mac OS X

- Xamarin Studio 6.0

##PCLの実装

###位置情報（緯度・経度）を格納するクラスの実装

```csharp:GeoCoords.cs
/// <summary>
/// 位置情報格納クラス
/// </summary>
public class GeoCoords
{
    /// <summary>
    /// 緯度
    /// </summary>
    public double Latitude { get; set; }
    /// <summary>
    /// 経度
    /// </summary>
    public double Longitude { get; set; }
}
```

###位置情報取得処理のインターフェース追加
XamarinのIoC機能を使用して

```csharp:ILocationService.cs
/// <summary>
/// 位置情報取得サービス
/// </summary>
public interface ILocationService
{
    /// <summary>
    /// 位置情報取得処理
    /// </summary>
    Task<GeoCoords> GetGeoCoordinatesAsync();
}
```

Android

```csharp:LocationService.cs
/// <summary>
/// 位置情報取得サービスのAndroid実装
/// </summary>
public class LocationService : ILocationService
{
    public async Task<GeoCoords> GetGeoCoordinatesAsync()
    {
        var locator = new Geolocator(Forms.Context)
        {
            // 解像度を1.3mに設定
            DesiredAccuracy = 30
        };

        var position = await locator.GetPositionAsync(30000);

        var result = new GeoCoords
        {
            Latitude = position.Latitude,
            Longitude = position.Longitude
        };

        return result;
    }
}
```

iOS

```csharp:LocationService.cs
public class LocationService : ILocationService
{
	public async Task<GeoCoords> GetGeoCoordinatesAsync()
	{
		var locator = new Geolocator
		{
			DesiredAccuracy = 30
		};

		var position = await locator.GetPositionAsync(30000);

		var result = new GeoCoords
		{
			Latitude = position.Latitude,
			Longitude = position.Longitude
		};

		return result;
	}
}
```

[^1]: Mastering Xamarin.Forms(Ed Snider 2016/1/30) ISBN:978-1-78528-719-0
図形を整列させるショートカットキーの作り方

# <i class="fa fa-check-circle-o"></i> クイックアクセスツールバー

Office系ソフトのクイックアクセスツールバー、使いこなしていますか？
クイックアクセスツールバーとは、リボンメニューの上にある、図の左上にあるやつ。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/0995e9f7-fbf1-8b21-1799-491b2c05ec60.png)

ツールバーを使いこなすと、メニューをたどる必要がなくなり、作業がラクになります。
ここではPowerPointの図形を整列させるショートカットキーを例に、使い方を解説します。


# <i class="fa fa-check-circle-o"></i> コマンドを追加しよう

PowerPointのクイックアクセスツールバーに、自分の好きな操作ボタン(コマンド)を追加してみます。

▼メニューをクリックして、その他のコマンドをクリックします。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/6ab67bdf-cdaa-8c5a-ee12-da68cf48f51e.png)


「図ツール」から、「オブジェクトを中央に揃える」をクリック、「追加」をクリックします。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/211d04ce-46ef-6991-a2b8-9a9385c8ff83.png)



「オブジェクトを中央に揃える」操作ボタン(コマンド)を追加しました。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/48372b86-f5ed-f119-02c5-469705051eca.png)

おでんのようなアイコンが増えています。


# <i class="fa fa-check-circle-o"></i> 使ってみよう
PowerPointあるあるネタとして、ちょっとずれた図形たちを整列させましょう。
「グリッドに合わせる」をしていても、ちょいちょいずれる図形たち。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/0ffc3c7f-243e-ccc3-aa0b-c3d93bd10ed4.png)

「オブジェクトを中央に揃える」操作ボタン(コマンド)を押します。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/7b0b2197-bd23-692b-1669-e4bb441d3c16.png)

一発で揃いました。いちいちメニューをたどる必要もありません。
同様に、「上下に整列」などの他の整列ボタンも作れます。

# <i class="fa fa-check-circle-o"></i> Altメニューからも使える

設定したコマンドボタンは、ショートカットとしても使えます。
図を囲って、Altを押してください。4 が割り振られています。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/bdf8fcf9-bc20-5759-7903-58c6f576111e.png)

つまり、Alt + 4 を押すと一発で整列できるわけ。

設定次第で、こっちはAlt + 4で「左右に整列」、こっちはAlt + 5で「上下に整列」などショートカットで、バシバシできます。これは便利ですね。

![image](https://qiita-image-store.s3.amazonaws.com/0/1582/b7429a54-7030-0b90-dded-119053391842.png)


終わり
SqlAlchemyのyield_perの挙動について

# SqlAlchemyのyield_perというメソッド

Railsで言う、find_in_batchesですかね。大量データをselectする時に結果を全部メモリに格納することなく逐次処理してくれる素敵メソッドですね。

てっきりlimitとかoffsetとかをよしなにハンドリングしてくれるメソッドかと思ったら、そんなことなくて、selectした結果をストリームとして処理するメソッドなのですね。

SQLのログを見て、思い（込んだ）通りにSQLが出てこないことに悩む人が、きっと僕以外にもいるだろうと思ったのでメモしておきますね。

念のため使い方メモ

```yield_per.sample.py
sess = Session(engine)
for obj in sess.query(Customer).filter_by(ownd_uid = n).yield_per(10):
   hogehoge(obj)
```

このように書いておくとfilterの条件で選択したレコードが大量にあっても10件ずつselectしながら処理をしてくれるので、selectの結果を全部メモリに載せることなく逐次処理してくれます。

最高ですね。


## おや？N本の接続を使っている？
MySQLの方でshow processlistしてみると、yield_perで呼び出しているコネクションはそれぞれ一本のコネクションを貼っているようですね。言われてみればそうか。

<img width="1012" alt="screen 2016-11-06 12.16.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/51782/1413a5f0-29af-f49a-0ea4-4a3427aa2cf5.png">

一番最初の945秒かかってるのが最上位のループなんですが、はてconnect_timeoutで切れないのだろうか...。（切れそうな気がする）

こういうの大量データを使ってないと見えないところだったりしますので、エラーが出たら、使い方について継続的にメモしていきますね。

## 結果：接続エラーは出ませんでした。

１〜２時間かかる処理でしたが、問題なく終わりました。

もしかして、長時間の接続をキープしてるとshow processlistにクエリ出なくなったりします？！

是非、MySQL側でどのような処理になっているのか、挙動を調べてみてください！
256GBのマイクロSDに1万曲の音楽を入れた!

###256GBのマイクロSDに音楽を入れた!
256GBのマイクロSDを入手した。もっている音楽はロスレスであるため、約1万曲(20,687ファイル)で200GBほどになり、これまでは持ち歩くのことが不可能だったのだ。やっと持ち運び可能になる。普通おなじことをiPod(MP3)で行えば、圧縮率を1/10とすれば20GBになるので2001～2003年くらいには可能だったはずなので、もう周回遅れどころの話ではない。最先端を生きているのか、最後尾を生きているのか、自分でもよくわからない。

####1.8HDD
一度たしか2004年ごろに、東芝のHDDを使った音楽マシンを使ったことがあって、そのときのハードディスクは1.8型で20GBだったか40GB程度で、それなりではあったが、それでも曲を選んで入れるのがたいへんで、選ぶというのは人間の価値観の反映だから、かんたんには行えないのだった。ハードディスクはすぐに壊れた。1年もたなかったと思う。このときに、選ぶのは駄目だと痛感した。選ぶとか好みとかをちゃんとすることは無理だと感じた。

####latest or newest or explorer
もっとも、iTunes(2001/01/10)は15年経ってもまだ違うと個人的には思うし、iPodは最大でも160GB(1.8型HDD版か)程度なので、まだ達成していないようには思うけれども。つまり最先端であることはあるのだと思うのだが、まあそれはよい。
なにを達成したいのか、というゴールの設定が、アップルとは違うのだなとは思う。つまり、聞こえない音ならなくてもいいと大胆に割り切るか割り切らないか、というようなところである。
なぜ音楽好きがそれでよいと思うのか、我慢強いのか、調教されちゃったのか、それ以外には選択肢がないとだまされたのか。よくわからないけれども、すくなくともわたしはアップル主義者ではないようだ。Mac miniはもっているし、もっと深くMacにコミットしていたこともあった気がするけれどもまあそれはどうでもいい。


####copy 2 micro SD
ともあれそれで、256GBのマイクロSDに、200GBの音楽と、その他のデータ約30GB程度をコピーすることにした。
最初に30GBをコピーするのだが、ここで悩むのが接続方式である。
Windows10のPCとElite X3を繋ぐ接続方式は、MSC、MTP、PTPの3種類がある。 MSCはマスストレージクラスでUSBメモリやUSBのHDDと同じ接続方法。MTPはメディアデバイスとして接続する(Media device)方法。PTPはカメラとして接続する方法である。MTPとPTPの切り替えは、USB接続時の通知メッセージから行うことができるというが、できなかった。そもそもMTPとしてメディアデバイスとして接続すると、PCから単純なディスクドライブとしてマウントするわけではないので、変換に時間がかかる。どのくらいかかるかというと、30GBをコピーするのに24時間くらいかかるのだった。やってみた。

####1week 2 6hours
で、さすがにこれはどうよと。30GBで1日なら200GBは1週間だ。単なるコピーを1週間連続で行うのもどうかと思うが、もし途中でエラーになって再開するとしたら、ファイルシステムの整合性をチェックする必要があって、そういうことをしてぱくれないわけだ。あるいはしてくれるかもしれないが、半分手作業だったりして、まあありえないな～と。
そこで、あらためて256GBのマイクロPDをElite X3から取り出して、タブレットPCに入れた。富士通のArrowsである。OSはWindows10だ。これに、音楽の入っている4TBのハードディスクをUSBで接続した。どちらも完全にファイルシステムとしてマウントしているわけでこれが最速である。それでコピーした。だいたい15MB/s程度の速度は出ていて、合計のコピー予測時間は約6時間。7日かかるのに較べて、ざっくり1/24くらいの速度が出るわけだ。あれ計算あってるよね。うん。あってる。概算である。MSCはMTPより24倍速い。

####future
一度コピーしてしまえば、あとは差分だけなので、こんなにはかからないはず。それにしても、いずれはWifi, FTPなどを含めて、シンクロの方法を検討する必要があるな～。
Elite X3は最大で2TBのマイクロSDを使用できて、まだそんなマイクロSDは販売していないか、あるいは高額で購入できないのではあるけれども。256GBで2万円だから、単純計算すると1TBで8万円、2TBで16万円になる。たいした金額ではないけれど、所有している全データ約4TBを入れることはできないので、いずれ4TBを駆動できるマシンとメディアが出たときには入れ換えが必要で、その作業時間はぜんぶロスになる。まあ世代的にβ/VHS、LD、DVD、Blu-rayなどとメディアチェンジしてきたのだから、いまさらメディアチェンジに対する忌避感は大きくはないがそれにしても、である。ビバデジタルなのであって、シンクロは楽なのに越したことはない。
Swift3 Generics

# Swift Genericsについて

### Genericsとは：
　型に依存でず、一つの値があらゆる型を持つことができ、再利用性を高くする概念らしい
　百聞は一見にしかずなので下記の使いかたをテストしてみる。

----
以下はパラメターを明示的にInt型に設定してあるのでInt型しか使えない。

func swapTwoInts(_ a: inout Int , _ b: inout Int) {
    
    let tempA = a
    a = b
    b = tempA
}
var someInt = 3
var anotherInt = 107

swap(&someInt, &anotherInt)

---
しかしInt型ではなくDoubleやfloat,Stringなどの型を使う場合には
パラメター型だけが異なる同じ処理のメソッドを重複して書くことになる

func swapTwoInts(_ a: inout Int , _ b: inout Int) {
    
    let tempA = a
    a = b
    b = tempA
}

func swapTwoInts(_ a: inout Double , _ b: inout Double) {
    
    let tempA = a
    a = b
    b = tempA
}

func swapTwoInts(_ a: inout String , _ b: inout String) {
    
    let tempA = a
    a = b
    b = tempA
}

...

パラメター型だけ異なって処理が全く同じであるいわゆる再利用可能な処理に変換
するためにGenericを使えばいい。

※Generic型名はTで指定いるが、型名は何でもいい（例: <Element>(_ a: inout Element , _ b: inout Element)） 
func swapTwoInts < T > (_ a: inout T , _ b: inout T) {
    
    let tempA = a
    a = b
    b = tempA
}

こうすることでこのメソッドはどんな型に対しても同じ処理をしてくれる。

使ってみよ！

var someInt1 : Int = 5
var someInt2 : Int = 8

var someString1 : String? = "dog"
var someString2 : String? = "cat"

var someDouble1 : Double = 5.0
var someDouble2 : Double = 8.0

//Int型Swap
swap(&someInt1, &someInt2)
//String型Swap
swap(&someString1, &someString2)
//Double型Swap
swap(&someDouble1, &someDouble2)
BigQueryで自然対数の底を計算してみよう


前回は<a hred="http://qiita.com/shiozaki/items/97648fee7849cc45e8ab">こちらの記事</a>で円周率を計算してみましたが、今度は自然対数の底を計算してみましょう。

計算には以下の式を利用します。

$$
e = \sum _{{n=0}}^{{\infty }}{\frac {1}{n!}}
$$

階乗の計算をどのようにするのかが鍵になりそうですね。
SQLには和を計算するSUM関数はありますが、積を計算する関数はありません。

# とりあえず、答え
```sql
SELECT
  SUM(1/factorial) + 1
FROM
  (SELECT
    (SELECT CAST(ROUND(EXP(SUM(LN(x)))) AS INT64) FROM UNNEST(T.ary) AS x) AS factorial
  FROM
    (SELECT n, GENERATE_ARRAY(1, n) as ary FROM UNNEST(GENERATE_ARRAY(1, 20)) AS n) as T)
```

このSQLで上記の式の第20項までの和を計算します。実行しで見ると、`2.7182818284590455`という結果が得られました。小数点以下15位まで、正確なことがわかります。
計算時間は2.7秒でした。

円周率の計算と比べて精度が上がったのは、使用した級数の収束の早さに起因するものだと思います。

# 仕組み
まずは、<a href="http://qiita.com/shiozaki/items/2827e18be40335668902">この記事</a>を参考にして、1~20の連番を作ります。
その後は、各行に対して、1~その行の数までの連番からなる配列を作ります。
後は、その配列の要素を全て掛け合わせてそれらの和を取れば完成です。

配列内の全要素の積の計算には<a href="http://qiita.com/shiozaki/items/68a94d7e049e49493a77">こちらの記事</a>を参考にしました。
元記事では、ある列の中の全ての要素の積を求めていましたが、今回は配列中の全ての要素の積を求める必要があるため、式を少し修正しました。
Homebrew Cask でEmacsをインストールする

[前回](http://qiita.com/makky_tyuyan/items/50d89dc5671613e14017)は、

ダウンロードは[コチラ](https://emacsformacosx.com/)から。

とダウンロードサイトからのインストールを勧めましたが、
今回は、[Homebrew](http://brew.sh/index_ja.html)を使ってEmacsインストールする方法です。

## Homebrewをインストールする

パッケージ管理の[Homebrew](http://brew.sh/index_ja.html)を利用します。

``` Homebrewのインストール
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
```

``` Homebrewのアップデート
$ brew update
```

## Homebrew Caskをインストールする

```
$ brew tap caskroom/cask
```

## Emacsをアップデートする

初期のemacsはバージョンが古い（事が多い）ため、Homebrewをインストール後、
アップデートを行ないます。
※El Capitan だと、 22.1.1 だった

最新版のEmacsをインストール
``` 
$ brew cask install emacs
```

caskを使わない場合
``` 
$ brew install --with-cocoa --srgb emacs
$ brew linkapps emacs
```
※caskを使わない場合、Applicationにシンボリックリンクを設定しておく必要があった

既にcaskを入れている場合以下のようなメッセージが表示されました。
``` 
Please try the Cask for a better-supported Cocoa version:
  brew cask install emacs

To have launchd start emacs now and restart at login:
  brew services start emacs
Or, if you don't want/need a background service you can just run:
  emacs

.app bundles were installed.
Run `brew linkapps emacs` to symlink these to /Applications.
```

この場合は、メッセージに従って

最新版のEmacsをインストール
``` 
$ brew cask install emacs
```

でインストールしましょう。
「いや、別にいいよ」って人は `brew linkapps emacs` して進んじゃいましょう。

## 確認

インストールが完了すると

```
==> Verifying checksum for Cask emacs
==> It seems there is already an App at '/Applications/Emacs.app'; not
==> Symlinking Binary 'emacsclient' to '/usr/local/bin/emacsclient'
==> Symlinking Binary 'ctags' to '/usr/local/bin/ctags'
==> Symlinking Binary 'ebrowse' to '/usr/local/bin/ebrowse'
==> Symlinking Binary 'etags' to '/usr/local/bin/etags'
🍺  emacs was successfully installed!
```

となります。
ターミナルを再起動してバージョンの確認をします。

```
$ emacs --version

GNU Emacs 25.1.1
Copyright (C) 2016 Free Software Foundation, Inc.
GNU Emacs comes with ABSOLUTELY NO WARRANTY.
You may redistribute copies of GNU Emacs
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING.
```

これで最新のEmacsが準備できました。
古いEmacs.appを利用されていた場合、アイコンが新しくなっています。

**古い**
![ 2016-11-06 11.31.48.png](https://qiita-image-store.s3.amazonaws.com/0/6311/8b9a1465-2d2f-4477-84fc-a0308ae580e3.png " 2016-11-06 11.31.48.png")

**新しい**
![ 2016-11-06 11.43.52.png](https://qiita-image-store.s3.amazonaws.com/0/6311/2d30735c-ccae-8373-799b-88759443992a.png " 2016-11-06 11.43.52.png")

アイコンが変わっていない場合、もともと入っている Emacs.app が残っているからなので、ApplicationのEmacs.appを削除し、`brew linkapps emacs` を実行してシンボリックリンクを設定すると新しいバージョンへのシンボリックリンクがApplicationに配置されます。

### まとめ

Homebrew Cask はとっても便利なので Emacs に関わらず活用することをお勧めします。
はてブの検索結果をRSSフィードとしてslackに垂れ流す

はてブの検索結果をslackに垂れ流したいなと思い、その方法を調べました。

## RSSフィードとして取得したい項目の準備
URL、パラメータ、オプションを組み合わせて、RSS用のURLを作成します。

### URL
```GET:GET
http://b.hatena.ne.jp
```
### パラメータ
| パターン | パラメータ |
|:--|:--|
| キーワード検索 | /search/text?q={キーワード}&mode=rss |
| タグ検索 | /search/tag?q={キーワード}&mode=rss |
| タイトル検索 | /search/title?q={キーワード}&mode=rss |

### オプション
|項目|オプション|
|:--|:--|
| 新着順 | sort=recent |
| 人気順 | sort=popular |
| 最低はてブ数 | threshold={数字} |
| 開始日 | date_begin={YYYY-MM-DD} |
| 終了日 | date_end={YYYY-MM-DD} |
| セーフサーチ | safe={on / off} |

### URL例
- javascriptで検索したい場合
    - http://b.hatena.ne.jp/search/text?q=javascript&mode=rss

## slack側の準備
### RSSインテグレーションのインストールと設定
1. https://あなたのチーム名.slack.com/apps にアクセス
2. RSSで検索する
    <br><img width="650" alt="RSSの検索" src="https://qiita-image-store.s3.amazonaws.com/0/52545/5a0075d6-04c0-15ba-3cc1-711c74135588.png">
3. スクリーンショットにあるRSSを選択する
4. Installボタンを押す
    <br><img width="380" alt="RSSのインストール" src="https://qiita-image-store.s3.amazonaws.com/0/52545/5f1b3492-850c-bc7f-a956-3b6641778794.png">
5. Add RSS Integrationを押す
    <br><img width="277" alt="slack_integration_add_rss_integration.png" src="https://qiita-image-store.s3.amazonaws.com/0/52545/985bfdaf-24ad-026b-8210-9f78c9ccbc1b.png">
6. 上記で作成したRSSのURLと、RSSを流したいチャンネルを選び、Subscribe to this feedを押す
    <br><img width="1014" alt="slack_integration_rss_setting.png" src="https://qiita-image-store.s3.amazonaws.com/0/52545/a52b629d-e92c-005a-d963-8d375f164fa8.png">

## こんな感じでslackに表示される
<img width="965" alt="slack_rss.png" src="https://qiita-image-store.s3.amazonaws.com/0/52545/5112a4bb-1d58-2abb-3cd2-acf6bf2a62e2.png">
Squirrel の API sq_instanceof 関数がマニュアルと実装で挙動が異なる件

確認したのは SQUIRREL 3.1 stable です。

Squirrel の API sq_instanceof 関数はマニュアルでは以下となっています。

> SQBool sq_instanceof (HSQUIRRELVM v ) 
>        Parameters 
>        •  v (HSQUIRRELVM) – the target VM 
>        Returns SQTrue if the instance at position -2 in the stack is an instance of the class object at position -1 in the stack. 

スタック上の 「-2 の位置にあるインスタンス」が 「-1 の位置にあるクラスオブジェクト」のインスタンスの場合、SQTrue を返すと記述されています。

しかし、自分が実際に使った場合何故かエラーがでたのでソースを確認すると以下となっていました。

```sqapi.cpp
SQBool sq_instanceof(HSQUIRRELVM v)
{
    SQObjectPtr &inst = stack_get(v,-1);
    SQObjectPtr &cl = stack_get(v,-2);
    if(type(inst) != OT_INSTANCE || type(cl) != OT_CLASS)
        return sq_throwerror(v,_SC("invalid param type"));
    return _instance(inst)->InstanceOf(_class(cl))?SQTrue:SQFalse;
}
```

明らかに -1 の位置がインスタンスで -2 の位置が暮らすオブジェクトと想定されており、実際に使用すると -1 の位置にインスタンスが、-2 の位置にクラスオブジェクトが無いとエラーになります。なのでこの関数を使う際は注意が必要になります。

本当は本家に報告をした方が良いのでしょうけど、英語とかそういうのが苦手なので…。
Mayaで選択していないコンポーネントがいっしょに動いてしまうときの対処法

# 参考
ここ見たほうが早いかも
http://cgjishu.net/blog-entry-123.html

# 問題
UV編集時、板ポリごとに個別選択できていたのが突然できなくなった
コンポーネントの一部選択をしているつもりなのに**すべてがいっぺんに動いてしまう**

![2016-11-06.png](https://qiita-image-store.s3.amazonaws.com/0/17879/bcea64cc-6728-5a23-c27e-b175e2901880.png)

# 原因
**「ソフト選択」**がONになっていた
誤ってホットキー**「Bキー」**を押してしまったため

# 解決策
**ソフト選択をOFFにする**
**再度「Bキー」を押してソフト選択を解除する**

個別に板ポリを選択できるようになった
![2016-11-06 (1).png](https://qiita-image-store.s3.amazonaws.com/0/17879/ca2d9f8b-d9a6-48de-4dc7-ce6b2d4e42dd.png)
ニフティクラウド mobile backendとやりとりするChoregrapheのboxを作成する

## 準備するもの

いくつかライブラリをChoregrapheプロジェクトのlibフォルダ（なかったら作成)にコピーする必要があります

- [petitviolet/py\_nifty\_cloud: Python wrapper for Nifty Cloud Mobile Backend](https://github.com/petitviolet/py_nifty_cloud)
 - ZIPをダウンロードして、py_nifty_cloudフォルダを追加
- [kennethreitz/requests: Python HTTP Requests for Humans™](https://github.com/kennethreitz/requests)
 - ZIPファイルをダウンロードして、requestsフォルダを追加
- [PyYAML – PyYAML](http://pyyaml.org/wiki/PyYAML)
 - ZIPパッケージをダウンロードして、lib配下のyamlを追加
- [ニフティクラウド mobile backend](http://mb.cloud.nifty.com/)のプロジェクト
 - 無料IDを作成し、プロジェクトを作成してください
 - APIキーをあとで使います

### setup.ymlの用意

APIキーをメモしたsetup.ymlを、プロジェクト直下（manifest.xmlと同じところ）に配置

```yaml
APPLICATION_KEY: YOUR_APP_KEY
CLIENT_KEY: YOUR_CLIENT_KEY
```

プロジェクトのファイル構成は以下のようになります
![pj_structure.png](https://qiita-image-store.s3.amazonaws.com/0/38157/71501b66-3260-c619-b92d-833137bdb167.png)


## pythonのboxを作成

以下のサンプルコードでは、postメソッドを利用してデータをmobile backendに送信しています。
実行したあとにmobile backendのダッシュボードを開いて、データが保存されているか確認してください。

```python
class MyClass(GeneratedClass):
    def __init__(self):
        GeneratedClass.__init__(self)

    def onLoad(self):
        self.framemanager = ALProxy("ALFrameManager")
        self.folderName = None

    def onUnload(self):
        import sys
        if self.folderName and self.folderName in sys.path:
            sys.path.remove(self.folderName)
        self.folderName = None

    def onInput_onStart(self):
        import sys, os
        self.folderName = os.path.join(self.framemanager.getBehaviorPath(self.behaviorId), "../lib")
        if self.folderName not in sys.path:
            sys.path.append(self.folderName)
        #import
        from py_nifty_cloud.nifty_cloud_request import NiftyCloudRequest
        
        # instanciate with yaml file contains APPLICATION KEY and CLIENT KEY
        ncr = NiftyCloudRequest(os.path.join(self.framemanager.getBehaviorPath(self.behaviorId), "../setup.yml"))
        path = '/classes/TestClass'
        method = 'POST'
        
        # post a new recode
        values = {'key': 'test'}
        response = ncr.post(path=path, query=values)
        print(response.status_code)


    def onInput_onStop(self):
        self.onUnload()
        self.onStopped()
```
TypeScriptで始めるAWS Lambda開発

## はじめに
みなさんは型必要派でしょうか？不要派でしょうか？色々な意見があると思いますがぼくは必要派です。
Lambdaを作成するときにnodeを選択することが多いのですが、JavaScriptには静的型付けがなくてやりづらい思いをしています。

そこで、TypeScriptとServerlessを使ってLambdaを作成する方法を説明していきます。

## リポジトリ
この記事の最終的なプロジェクトはGitHubにあります。
いいからコード見せろ派の方は[こちら](https://github.com/goto63/lambda-with-typescript)も合わせてどうぞ！

## 準備
### Serverlessのインストール
```
$ npm install serverless -g
```

Serverlessのバージョンが表示されればOKです。

```
$ sls -v
1.1.0
```
- 注:```sls```は```serverless```のショートカットです。

## 手順
### Lambda Functionを作る
適当にlambda-with-typescriptなどと

```
$ sls create --t aws-nodejs --path lambda-with-typescript
```

- my-service
	- event.json : テスト実行する際に使用するイベント(パラメタ)値のファイルです。
	- handler.js : 関数の本体です。※後ほど".ts"へ変更します。
	- serverless.yml : 設定ファイルです。


### 依存関連を追加
TypeScriptとwebpack関連のパッケージを追加します。

```
$ npm i --save-dev typescript webpack ts-loader serverless-webpack
```
node_modules内に

### TypeScriptの設定
TypeScriptのコンパイラオプションを設定します。
とりあえず動かすだけなのでtscコマンドで生成するかtsconfig.jsonを作成してください。

```
tsc --init
```
```/tsconfig.json
{
    "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": false
    }
}
```

### ハンドラを修正
コードをTypeScriptで書くためhandler.jsをhandler.tsにリネームします。
ハンドラのコードは適当なTypeScriptコードを書いておきます。

```/handler.ts
export function hello(event, context, callback) {  
  callback(null, { 
    message: 'Hello from TypeScript!'
  });
};
```

### Webpackを設定を追加する
TypeScriptをトランスパイルさせるためwebpack.config.jsを修正します。

```/webpack.config.js
var path = require('path');

module.exports = {  
  entry: './handler.ts',
  target: 'node',
  module: {
    loaders: [
      { test: /\.ts(x?)$/, loader: 'ts-loader' }
    ]
  },
  resolve: {
    extensions: ['.ts', '.js', '']
  },
  output: {
    libraryTarget: 'commonjs',
    path: path.join(__dirname, '.webpack'),
    filename: 'handler.js'
  },
};
```

### Serverlessのコンフィグを修正
serverless-webpackプラグインを使えるように末尾にpluginsを追加します。

```/serverless.yml
~~~ 略 ~~~
plugins:
  - serverless-webpack
```

## 実行
### ローカル実行
ターミナルで下記のコマンドを実行します。

```
$ sls webpack invoke -f hello -p event.json
```

先ほど作成した```Hello from TypeScript!```が帰ってきていますね。

```
Serverless: Bundling with Webpack...
ts-loader: Using typescript@2.0.6 and /Users//Projects/lambda-with-typescript/tsconfig.json
Time: 785ms
     Asset     Size  Chunks             Chunk Names
handler.js  1.61 kB       0  [emitted]  main
Serverless: Run function hello...
{ message: 'Hello from TypeScript!' }
```

## おわりに
TypeScriptでLambda関数を作成できましたがいかがだったでしょうか。
しかし、この例ではeventなどがanyなのでまだ型の恩恵を受けられていません。次回はこのあたりを改善したいと思います。

## 参考
- [serverless-webpack](https://github.com/elastic-coders/serverless-webpack)
- [Getting Started With Serverless and TypeScript](http://gregshackles.com/getting-started-with-serverless-and-typescript/)
Macのスクリーンショットの保存先と名前を変更する


Macではキーボードショートカットでスクリーンショットが取れますが、
そのスクリーンショットは、デフォルトだとデスクトップに保存されます。

また、保存される際のファイル名は「スクリーンショット 2016-11-06 10.25.29」という感じで長いので変えたいなーと思ってしまいました。

これがターミナル上のコマンドで変更できるということでやってみました。

## 保存先を変更する

*任意の場所に変更する*

```
$ defaults write com.apple.screencapture location ~/ScreenShot/
$ killall SystemUIServer
```

*デスクトップに戻す*

```
$ defaults delete com.apple.screencapture location
$ killall SystemUIServer
```

## ファイル名を変更する

*スクリーンショット*の個所を消す場合

```
$ defaults write com.apple.screencapture name ""
$ killall SystemUIServer
```

*スクリーンショット*の個所を他の名前に変更する場合

```
$ defaults write com.apple.screencapture name "ScreenShot"
$ killall SystemUIServer
```

ファイル名から日付を消す場合

```
$ defaults write com.apple.screencapture include-date -bool false
$ killall SystemUIServer
```

ファイル名に日付をつける場合

```
$ defaults delete com.apple.screencapture include-date
$ killall SystemUIServer
```

## まとめ

私は、日付をつけておかないといつキャプチャしたのかわからなくなるので、
ファイル名は日付だけにしました。
デフォルトの *スクリーンショット* は全く不要なので消してスッキリしました。
Webpackチュートリアル

tutorial) http://webpack.github.io/docs/tutorials/getting-started/

# Step1: src.js -> dst.js

```bash
# install webpack
$ mkidr /path/to/dir
$ npm init
$ npm install webpack --save-dev
```

```js
// js/entry.js
document.write('it works');
```

```bash
# entry.js -> bundle.js
$ node_modules/webpack/bin/webpack.js js/entry.js js/bundle.js
```

# Step2: content.js -> entry.js -> bundle.js
```js
// content.js
module.exports = 'it works';

// entry.js
document.write(require('./content.js'));
```

```bash
# content.js -> entry.js -> bundle.js
$ node_modules/webpack/bin/webpack.js js/entry.js js/bundle.js
```

# Step3: CSS loading
```bash
$ npm install css-loader style-loader
```

```css
/* css/style.css */
body {
    background-color: yellow;
}
```

```js
// entry.js
require('../css/style.css');
...
```

```bash
$ node_modules/webpack/bin/webpack.js ./js/entry.js ./js/bundle.js --module-bind 'css=style!css'
```


#Step4 Config file
```js
// webpack.config.js
module.exports = {
    entry: "./entry.js",
    output: {
        path: __dirname,
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /\.css$/, loader: "style!css" }
        ]
    }
};
```

```bash
$ node_modules/.bin/webpack
```


# Tips
```bash
# Display progress
$ webpack --progress --colors

# Watch
$ webpack --watch
```
OCS初参加！2年目SEが満喫してきた話 

[OSC（オープンソースカンファレンス）2016 Tokyo/Fall](http://www.ospn.jp/osc2016-fall/) というイベントがあることを知り、突撃してきました！
めっちゃ楽しんで、勉強にもなったので、レポートを書いて良さを広めることにしました。（主に会社の若手勉強会でのシェア用）

# 目次
1. OSCって何？
2. こんな感じでした
3. 楽しかったポイント
4. 勉強になったポイント
5. 個人的に良かったこと

# OSCって何？
* オープンソース関連の企業とユーザグループの展示会
* 全国各地で実施、入場無料
* 今回は土日の二日間に渡り実施。(土)に参加！
* セッション（[タイムテーブル](https://www.ospn.jp/osc2016-fall/modules/eventrsv/?id=1&noform=1)あり）とブース（期間中常設）がある

以前ハッカソンでご一緒した方から教えていただき、興味があったので行ってみることに。
IBM（自社）のブースもあるようなので、何をしてるかも気になりました！

# こんな感じでした
文化祭みたい！
![IMG_2273.JPG](https://qiita-image-store.s3.amazonaws.com/0/96286/59c6d657-b4ae-1484-9342-78e11315e9f0.jpeg)

* 東京郊外にある明星大学の1棟を借りて実施。スタッフにも明星の学生さんがちらほら。ありがとうございます。
* 参加者は学生と社会人で3:7くらい？
* ブースは企業とユーザグループと半々くらい？
* 最新のOSSが多いのかと勝手に思っていたけど、よく知られたOSからDBから何でもいた。
* スタンプラリー、アンケート提出時の景品など、参加者が楽しむための仕掛けもあった。

# 楽しかったポイント
* 各ブースの、ラズパイを使った実演が面白かった！
    * サーバ監視ツール、モバイルバックエンド、各種OS、どのブースでも「ハード」を使ってデモ。
    * ニフティさんのハンズオンに参加！ラズパイ-node.js-ニフティクラウド mobie backendを繋いでみた。

疑問だらけの私に丁寧に教えてくださったニフティの担当者さん。
![IMG_2274.JPG](https://qiita-image-store.s3.amazonaws.com/0/96286/80cf668f-7072-b7ec-13b7-70acbbf5623d.jpeg)

* グッズがたくさん貰えて嬉しい！
    * 快くシールをくれる。
    * 無料とは思えない厚さのパンフも。
* 特別展示のプラレールを使った半加算器がインパクト大！
* みなさん親切で嬉しい！
    * インフラ寄りがおぼつかない私の質問にも丁寧に答えていただきました…勉強しよう。

プラレール半加算器
![IMG_2270.JPG](https://qiita-image-store.s3.amazonaws.com/0/96286/17111d72-9fa1-e34b-7f23-3ef7b2bb126e.jpeg)


# 勉強になったポイント
* 気になっていたことをいろんな人に質問できた！
    * オープンソースのユーザグループってどうやって収益を得ているの？
        * 普通の企業と同じように技術サポートやレクチャーの依頼などを受ける。
        * 障害対応だけでなく、アプリの新規構築の依頼もあるそう！
    * 社内開発したリソースのオープンソース化、ぶっちゃけどんなメリットが？
        * エンジニアが会社に魅力を感じてくれる（せやな）
        * 外部でおおっぴらに話せる
        * 社外からのプルリクエスト等、実際にあるのか？ -> 利用頻度によって差があるそう
            * 人気がある -> 頻繁にリクエストがある
            * ニッチ -> たまに使えなくなっている旨の報告が来る程度  
* OSSのエコシステムにいろんな要素があることが分かった！
    * 例えばOpenstackでは、Oracle等のように資格がある
    * OSS関連のコンサルティングを生業にする人たちもいるんだ！
* OSSユーザ企業のセッションは、要件もロールも普段の業務と違って興奮した！
    * はてなの新人さんの社内事例共有が勉強になりました。自分もインフラ寄りの勉強を進めよう…！

# 個人的に良かったこと
* IBMのブースもあったよ。
    * Softlayer([今度からBluemix Infrastructureになる](http://www.publickey1.jp/blog/16/softlayerbluemix_iaasbluemixsoftlayer.html))、Bluemixの紹介してました。
![IMG_2271.JPG](https://qiita-image-store.s3.amazonaws.com/0/96286/e8301a3d-58b5-412d-ce3d-2afd4ec80f96.jpeg)
  
* 青空文庫のシステム運営の支援をされてる方([#aozorahack](http://aozorahack.org))とお話ししました！
    * 青空文庫は、文学の入力・チェックをしてくださる貢献者に比べて、システム周りの貢献者が圧倒的に少ないそう。それを何とかしたいとのこと。素晴らしい取り組み！
![IMG_2272.JPG](https://qiita-image-store.s3.amazonaws.com/0/96286/589a1119-c011-6322-2670-1886a8d010c7.jpeg)
windowsからssh接続をする：PowerShell/Win32-OpenSSH

#メモ：windowsからssh接続をする

Microsoft公式のWin32-OpenSSHを使いSSH接続

##インストール
①以下のgithubリポジトリからzipファイルをDLする。
https://github.com/PowerShell/Win32-OpenSSH

②解凍したフォルダを任意の場所にコピー

③上記フォルダのパスを環境変数に追加

※pwershellから以下コマンドを打ってパスが通っている確認。

```
$ ssh
usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]
```

④Powershellから対象のサーバにssh接続を行う。

以上です。とても簡単。
Emacsを使ってみる

「好きなテキストエディタは何ですか？」→「好きとかじゃないですけど、とりあえずVim使ってます。」という人向けのEmacsの導入編です。

## Emacsってなんですか？

![EmacsLogo.png](https://qiita-image-store.s3.amazonaws.com/0/6311/fb9a1889-8566-8bce-1555-03874ff6c3c4.png "EmacsLogo.png")


イーマックス　って読みます。
テキストエディタです。
（マニュアル引用：拡張およびカスタマイズが可能で、自己文書化を行い、リアルタイム表示を行うエディタ）

[GNU Emacs](https://www.gnu.org/software/emacs/)

最新のVersionは Emacs 25.1 − latest release です。
ダウンロードは[コチラ](https://emacsformacosx.com/)から。

```Wikipedia
Emacsはviと並びUNIX文化における伝統的なエディタ戦争の主要な当事者の2つである。Emacsとviは共に未だに現役である古来のアプリケーションの中では最古の部類である。
```

## よく出てくる表現等

### C

C：Ctrlキーのこと。 C-x は、Ctrl+x という意味です。C-x u という記述は、Ctrl+x を押した後、Ctrlを離してuを押す。重要です。

### M

M：Meta（メタ） のこと。キーボードによって、AltやEscで利用されている。Metaキーをどのキーにバインドするかで、Emacsの使いやすさを左右します。（知らないと、Metaキーが使いづらいという理由で挫折するケースがある。）。MacのデフォルトはEscとなっている。

### Buffer

Buffer：バッファーのこと。Emacs内のファイル領域で、複数ファイルが同時に開けるのはこれのおかげ。画面下部に Mini Bufferがあり、コマンド内容が表示される。

## 基本操作

### 起動

emacs [filename]

emacs -nw [filename]
※nw：Linux等のターミナル内でemacsを起動する場合のオプション

### 終了

C-x C-c

編集中のBufferがなければ即終了できます。

### コマンドをキャンセルする

C-g

誤ったコマンドを打った場合、このコマンドでキャンセル出来ます。

### カーソル移動

|概要|コマンド|
|:---|:---|
|右（→）	|C-f|
|左（←）	|C-b|
|上（↑）	|C-p|
|下（↓）	|C-n|
|前の単語|M-b|
|次の単語|M-n|
|前のページ|M-v|	
|次のページ|C-v|	
|行頭|C-a|
|行末|C-e|
|ファイル先頭|M-<|
|ファイル最後|M->|

Metaキーを利用するコマンドはよく使いますが、
MacだとEscで使いづらいので設定変更したほうがよいです。

### 編集系

|概要|コマンド|
|:---|:---|
|改行|C-j|
|コピー|M-w|	
|カット|C-w|	
|貼り付け|C-y|
|削除|C-d|
|Undo|C-x u|	
|Redo|C-g C-/|

### 検索・置換

|概要|コマンド|
|:---|:---|
|検索|C-s|
|逆方向に探す|C-r|
|置換|M-%|

※置換は、y:yes n:no !:all q:quit というコマンドで実行します。
emacsはデフォルトで、大文字と小文字を区別しません。

### ファイル操作

|概要|コマンド|
|:---|:---|
|ファイル名を指定して開く|C-x C-f|
|保存|C-x C-s|
|名前を変えて保存|C-x C-w|

### Window操作

|概要|コマンド|
|:---|:---|
|上下分割:horizontal|C-x 2|	
|左右分割:vertical|	C-x 3|	
|ウィンドウ切り替え|C-x o|
|ウィンドウを閉じる|C-x 0|
|分割を全て解除|C-x 1|

### Buffer操作

|概要|コマンド|
|:---|:---|
|buffer listの表示|C-x C-b	|
|buffer の切り替え|C-x b|
|削除フラグをつける|d|	
|保存フラグをつける|s|
|保存/削除の実行|x|
|フラグを解除する|u|
|バッファメニューを終了|q|

buffer list を表示させると、以下の様なWindowが表示される。

![EmacsBuffer.png](https://qiita-image-store.s3.amazonaws.com/0/6311/1cfd0c1b-48d6-139d-cfd5-ae27bfbf5693.png "EmacsBuffer.png")

buffer list を操作する画面で、上記の d,s,x,u が使用できるようになります。

d(バッファを閉じる) s(バッファをファイルに保存する)等の設定を指定した後、xでまとめて実行出来る。バッファが閉じられるだけで、物理ファイルには影響はありません。

### Shell

M-x shell で Buffer内でShellを立ち上げることが出来る。
![EmacsShell.png](https://qiita-image-store.s3.amazonaws.com/0/6311/f896ddfd-eb10-936a-985d-87b3797608e9.png "EmacsShell.png")

## まとめ

ほんの入口のみ紹介しました。
使ったこと無い方は、とりあえずインストールして触ってみましょう。
キーボードショートカットの正しいマークアップ

Qiita、ブログなどの技術系記事やGitHubなどでドキュメントを書くとき、しばしばショートカットキーを書く必要に迫られます。

そんなとき、皆さんはどのようにマークアップしていますか？

直で書いたり、`<pre>`で囲ったり、`<em>`を使う人もいるかもしれません。

僕は最近まで`<pre>`でしたが、ある日[MDN](https://developer.mozilla.org)で[`<kbd>`要素](http://webmem.hatenablog.com/entry/kbd-element)（以下`<kbd>`）というものを見つけました。

同記事には

>キーボードインプット要素（`<kbd>`）はコンピューターへのユーザーの入力コードを表します。要素名はキーボードの略字ですが、音声入力や手書き入力など他の入力方法も含みます。多くのデフォルトスタイルは、等幅フォントのインラインで表示するものとなっています。

とあります。

Qiitaでは（というより多くのMarkdown記法では）`<kbd>`はサポートされていませんのでHTMLで書く必要があります。

例：

```html
<kbd><kbd>Ctrl</kbd>+<kbd>C</kbd></kbd>を押下してください。
```

<kbd><kbd>Ctrl</kbd>+<kbd>C</kbd></kbd>を押下してください。

これを見てあれ？と思った方もいるでしょう。`<kbd>`が無駄にネストされているように見えるのです。

一見これは奇妙ですが、

- 外側の`<kbd>`でキーボード入力であることを示す
- 内側の`<kbd>`で押されたキー自体を示す

ということなのです。

QiitaのCSSもそれに合わせていい感じになっています。

また、GitHubでは![2016-11-17_20:02:57_範囲を選択.png](https://qiita-image-store.s3.amazonaws.com/0/104663/ab676682-7e7f-be16-b763-9ffe69a02cea.png)のように見えます。




ちなみにこの「押下」ですが、[こちらの記事](http://qiita.com/yaju/items/0ceb6a0343561b4d208e)に面白いことが書かれているので、見てみてはいかがでしょうか？

また、`<kbd>`は

```html
<kbd>cmd</kbd>を入力し、OKボタンをクリックします。
```

<kbd>cmd</kbd>を入力し、OKボタンをクリックします。

のように、単なるユーザーが入力した文字にも使えます。

メニュー項目やシステムによってエコーされる場合などにも使える`<kbd>`ですが、ここはショートカットキーの説明の記事なので割愛します。参考の記事にいろいろ書いてあります。

## まとめ
- キーボードショートカットには`<kbd>`を使おう！
- キーを表す場合は`<kbd>`をネストしよう！

## 参考
[kbd 要素 - HTML | MDN](https://developer.mozilla.org/ja/docs/Web/HTML/Element/kbd)
[kbd要素を正しくマークアップできていますか？](http://webmem.hatenablog.com/entry/kbd-element)
onlineTool | latex > free-online-latex-equation-editor > latexからイメージを作成 | latex入力簡略化アイコン

http://qiita.com/Ryuichirou/items/97d923671a0015256173
> こういう数式をサクッと書きたいのだけど何かいい方法はないかなあ…。

http://www.sciweavers.org/free-online-latex-equation-editor

というツールを使って

- latex書式をポチポチ押して入力
  - 偏微分や分数の記載など入力が面倒なところで使う
  - 空で覚えているlatex書式は手打ち
- 適宜Convertを押してプレビューを見る

latexで「E( \theta ) =  \sum_i ({y^{(i)} - f_ \theta(x^{(i)}) }^2 」

```math
E( \theta ) =  \sum_i ({y^{(i)} - f_ \theta(x^{(i)}) }^2 
```


上記の入力に40秒程度かかった。

それほど早くはないが、latex書式を全部手打ちするよりは早い気がする程度。

### 1

latex:  \theta_0 := \theta_0 - \eta( \frac{\partial E}{\partial \theta_0} )

```math
 \theta_0 := \theta_0 - \eta( \frac{\partial E}{\partial \theta_0} )
```

### 2

latex:  \theta_1 - \eta( \frac{\partial E}{\partial \theta_1} ) = \theta_1 - 2 \eta (  \frac{\partial}{\partial \theta_1}  ( \frac{1}{2} E)  ) 

```math
 \theta_1 - \eta( \frac{\partial E}{\partial \theta_1} ) = \theta_1 - 2 \eta (  \frac{\partial}{\partial \theta_1}  ( \frac{1}{2} E)  ) 
```

### 3

latex: \theta_1 := \theta_1 - \eta  \frac{\partial E}{\partial \theta_1} = \theta_1 - \eta ' ( \frac{\partial E}{\partial \theta_1} ) 

```math
\theta_1 := \theta_1 - \eta  \frac{\partial E}{\partial \theta_1} = \theta_1 - \eta ' ( \frac{\partial E}{\partial \theta_1} ) 
```

### 4

latex: \theta_0 := \theta_0 - \eta  \frac{\partial E}{\partial \theta_0} = \theta_0 - \eta  \frac{\partial}{\partial \theta_0} ( \sum_i {(y^{(i)}-f_\theta(x^{(i)}))}^2 )  = \theta_0 - \eta (  \sum_i 2 ( y^{(i)} - f_\theta (x^{(i)} )  )^2 )

```math
\theta_0 := \theta_0 - \eta  \frac{\partial E}{\partial \theta_0} = \theta_0 - \eta  \frac{\partial}{\partial \theta_0} ( \sum_i {(y^{(i)}-f_\theta(x^{(i)}))}^2 )  = \theta_0 - \eta (  \sum_i 2 ( y^{(i)} - f_\theta (x^{(i)} )  )^2 )
```

### 余談

Qiitaにlatex入力用のアイコンがつけばプレビュー見ながら数式をどんどん入力できそう。
問題はそういう機能を追加した時にUIをきちんと設計していないと、ユーザが迷うようになる。
UIとしては「latex入力」機能チェックボックスが付き、デフォルトはOFF。ONにした時だけ、編集画面にlatex入力用アイコン群が表示され使用可能となる、など。
fluentdで集めたログをS3へ

#メモ：fluentdでログを2箇所に出力する
-ログ集約サーバへの出力
-S3への出力

S3にアーカイブしておくことでログの保管要件を満たしつつ、
ログ集約サーバのストレージサイズを抑える

※ちなみに前回の記事からの発展です
環境、前提は前回を踏襲し、EC2(B)への設定を変更していく。
http://qiita.com/ohayougenki/items/5341b313a2226093480b

#前回から追加になった前提
1)EC2(B)はS3へ接続が可能であること
※今回はインターネット経由ですが、VPCエンドポイント、NAT gatewayでもいいかも？（要検証）

2)今回は設定ファイルにアクセスキー/シークレットアクセスキーを直書き。

```
<source>
  type forward
  port 24224
  bind 0.0.0.0
</source>

<match apache.access>
  type copy
  <store>
    type file
    path /var/log/td-agent/collect/httpd/access.log
    time_slice_format %Y%m%d%H%M　※この設定だと分ごと適宜修正
  </store>
  <store>
    type s3
    aws_key_id <アクセスキー>
    aws_sec_key <シークレットアクセスキー>
    s3_bucket <事前に作成したs3bucket名>
    s3_region <s3bucketのあるリージョン ex)ap-northeast-1>
    buffer_path /var/log/td-agent/s3
    time_slice_format %Y%m%d%H%M　※この設定だと分ごと。適宜修正
  </store>
</match>
```

一時的にbuffer_pathにS3出力用のログがバッファとしてたまり、
しばらくしたら、S3に配置される。

★汎用性と、階層構造を自動で持ってもらえるように
タグでの管理ができるところまで落とし込みたい。
<時間ができたら書きます。>

バッファの動きについてすごくわかりやすく書いてある。
参照：https://blog.tnmt.info/2012/10/19/about-fluentd-out-file-plugin/
TensorFlowをWindowsでビルドする

**※0.12から公式でWindowsビルドが提供されるようになりました！**

[Release 0.12.0/Major Features and Improvements](https://github.com/tensorflow/tensorflow/blob/r0.12/RELEASE.md#release-0120)

最近(たぶん2016/10ぐらいから)、TensorFlowがWindowsでビルドできるようになりました。
以下に、CMakeを利用したビルドの手順が公開されています(ただ、今後は[bazelへ移行する](https://github.com/tensorflow/tensorflow/issues/17#issuecomment-248633094)と思われます)。

[tensorflow/tensorflow/contrib/cmake/README.md](https://github.com/tensorflow/tensorflow/blob/master/tensorflow/contrib/cmake/README.md)

かなり丁寧に書かれているので、基本的にはこの通り行っていけばビルド、またPythonラッパーの生成を行いWindowsネイティブでPython x Tensorflowを使用することができます。
ただ、ビルドに結構時間がかかるので、手っ取り早く使いたい方は以下に私がビルドしたものを置いてありますので、使ってみてください。[イントロダクション](https://www.tensorflow.org/versions/r0.11/get_started/index.html)のコードが動くところまでは確認済みです。

[icoxfog417/tensorflow-windows-build](https://github.com/icoxfog417/tensorflow-windows-build)

なお、Windowsでのビルドは2016/11現在ではまだアルファ版の扱いであり、サポートされていない関数などもあるようです。そのため、通常使いとしてWindowsで運用するなら`bash on Windows`を利用して導入したほうが良いと思います(WindowsネイティブビルドができればGPUを使えるというメリットはありますが)。

## ビルド環境

以下に、私がビルドした環境について記載しておきます。自分で試してみたい、という方はご参考ください。

* Windows10(x64, Intel Core i7)
* Python 3.5.2
 * Pythonはビルドの関係で、3.5系である必要がある
* Visual Studio Community 2015
 * インストール時、Visual C++のオプションを選択しておく必要あり
* cmake 3.6.3
 * 3.3.1だとなぜか途中でビルドエラーになる
* numpy: 1.11.2
* swig: 3.0.10
* zlib: 1.2.8

miniconda/Anacondaを利用すると、ビルドのための環境を簡単に作成できます。

```
conda create -n tensorflow-win swig numpy zlib
```

ほんとは`conda install`で`cmake`も入るんですが、ここで入る`cmake`のバージョンが`3.3.1`で、これだとビルドエラーが発生しました。そのため、`cmake`については[こちら](https://cmake.org/download/)から`3.6`系の最新版を落としてきて利用しました。ビルドのスクリプトは以下のような感じになります。

```
cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release ^
-DSWIG_EXECUTABLE=<your_conda_env_path>\Library\bin\swig.exe ^
-DPYTHON_EXECUTABLE=<your_conda_env_path>\python.exe ^
-DPYTHON_LIBRARIES=<your_conda_env_path>\libs\python35.lib
```

※GPU版をビルドする場合、NVidia CUDA Toolkit 8.0とNVidia CUDNN 5.1が必要になります。これらを用意した後、以下のオプションを追加します。なお、MSBuildにあたっては[こちら](https://github.com/tensorflow/tensorflow/pull/5421)の修正を適応しておく必要があるので要注意。

```
More? -Dtensorflow_ENABLE_GPU=ON ^
More? -DCUDNN_HOME="<cudnn展開ディレクトリ>\cuda"
```

なお、ビルドにあたっては以下のリソースが必要です。

* `2G`程度のディスク容量(かなり食う)
* `1 ~ 1.5` 時間はビルドにかかる(8Gメモリ・Core i7)

ぜひWindowsでのTensorFlowライフに挑戦してみてください。
Linux | 現在使っているシェルの種類を確認する ( echo $0 )


# 例

```bash
$ echo $0

-zsh
```

# 環境

- Mac OS X El Capitan

# 参考

- http://askubuntu.com/questions/590899/how-to-check-which-shell-am-i-using








<!-- Update From Qiita API -->

# チャットメンバー募集


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

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





# Twitter


https://twitter.com/YumaInaura


<!-- Update From Qiita API -->