This commit is contained in:
uetchy 2018-07-19 20:53:12 +09:00
parent 2b72e5536f
commit 5ab2e98877
28 changed files with 273 additions and 284 deletions

View File

@ -3,10 +3,10 @@ title: Deconvolutionと呼ぶのはもうやめよう
date: 2017-03-05 13:44:00 +09:00
---
深層学習において、Convolutional Layer (畳み込み層)とは、あるシェイプのテンソルをそれ以下のサイズに縮約する性質のレイヤーです。一方でDeconvolution Layer (逆畳み込み層)とは、[Jonathan Long, et al](https://arxiv.org/abs/1411.4038)の論文で提案されたレイヤーで、あるシェイプのテンソルをそれ以上のサイズに拡大する性質を持ちます。
深層学習において、Convolutional Layer (畳み込み層)とは、あるシェイプのテンソルをそれ以下のサイズに縮約する性質のレイヤーです。一方で Deconvolution Layer (逆畳み込み層)とは、[Jonathan Long, et al](https://arxiv.org/abs/1411.4038)の論文で提案されたレイヤーで、あるシェイプのテンソルをそれ以上のサイズに拡大する性質を持ちます。
ところが実際のところ、このレイヤーはTransposed Convolution Layer (転置畳み込み層)と呼ぶべきです。なぜかを以下に示します。
ところが実際のところ、このレイヤーは Transposed Convolution Layer (転置畳み込み層)と呼ぶべきです。なぜかを以下に示します。
> Upsampling is backwards strided convolution. (アップサンプリングは
[Stack Exchange](http://datascience.stackexchange.com/questions/6107/what-are-deconvolutional-layers)での議論を踏まえると
[Stack Exchange](http://datascience.stackexchange.com/questions/6107/what-are-deconvolutional-layers)での議論を踏まえると

View File

@ -10,4 +10,3 @@ date: 2017-02-27 01:28:00 +09:00
- Udacity
## Books

View File

@ -8,4 +8,4 @@ date: 2017-06-02 23:02:00 +09:00
Have you ever imagined what if you know which commits are unpushed or which changes are uncommitted yet, for all of the repositories you have cloned on your machine?
You might want to check out my ongoing project `gst`:
it might help you to know what ongoing changes are remained to be committed or pushed among entire your local repositories.
it might help you to know what ongoing changes are remained to be committed or pushed among entire your local repositories.

View File

@ -9,9 +9,11 @@ layout: post
</div>
## Handwriting Typeface Template for Alphabet A-Z
[Download (.pdf)]({{ site.baseurl }}/images/typeface/Typeface_A-Z.pdf)
## Handwriting Typeface Template for Hiragana (ひらがな)
[Download (.pdf)]({{ site.baseurl }}/images/typeface/Typeface_Hiragana.pdf)
## Typeface Design Kit (.sketch)

View File

@ -4,7 +4,7 @@ permalink: "/wallpaper"
layout: post
---
Right-click and choose __Save Image__ to download wallpapers designed for OS X.
Right-click and choose **Save Image** to download wallpapers designed for OS X.
![Ridge]({{ site.baseurl }}/images/wallpaper/ridge.png)
@ -32,4 +32,4 @@ Right-click and choose __Save Image__ to download wallpapers designed for OS X.
![Bricks Monochrome]({{ site.baseurl }}/images/wallpaper/bricks-mono.png)
![Shrine Monochrome]({{ site.baseurl }}/images/wallpaper/shrine-mono.png)
![Shrine Monochrome]({{ site.baseurl }}/images/wallpaper/shrine-mono.png)

View File

@ -7,9 +7,9 @@ date: 2013-11-05 09:00:00 +09:00
大学のネットワークに接続している時だけプロキシを設定したい時がある。
Macのネットワーク環境は`networksetup -getcurrentlocation`コマンドで取得することが出来るので、
Mac のネットワーク環境は`networksetup -getcurrentlocation`コマンドで取得することが出来るので、
__.zshrc__ 辺りに以下のシェルスクリプトを書いておけばTerminalで新しいタブを開いた時に自動でプロキシを設定してくれるはずである。
**.zshrc** 辺りに以下のシェルスクリプトを書いておけば Terminal で新しいタブを開いた時に自動でプロキシを設定してくれるはずである。
```bash
proxy=proxy.hogehoge.ac.jp
@ -22,11 +22,11 @@ if [ "`networksetup -getcurrentlocation`" = "$switch_trigger" ]; then
fi
```
## Gitのプロキシ設定も書き換えたい
## Git のプロキシ設定も書き換えたい
Gitはhttp_proxyを見てくれないのでリモートリポジトリにpush出来なくて困ることがあった。そこでhttp_proxyと一緒にGitのプロキシ設定も書き換えるようにしたい。
Git http_proxy を見てくれないのでリモートリポジトリに push 出来なくて困ることがあった。そこで http_proxy と一緒に Git のプロキシ設定も書き換えるようにしたい。
Gitのプロキシは以下のコマンドで設定出来る。`--global`の代わりに`--system`を使っても良い。
Git のプロキシは以下のコマンドで設定出来る。`--global`の代わりに`--system`を使っても良い。
```bash
git config --global http.proxy $proxy
@ -80,14 +80,15 @@ else
fi
```
このコードを __.zshrc__ に保存して適当なターミナルで新しいセッションを開くと、`switch_trigger`で指定されたネットワーク環境下にいる時だけプロキシを通すことが出来る。
このコードを **.zshrc** に保存して適当なターミナルで新しいセッションを開くと、`switch_trigger`で指定されたネットワーク環境下にいる時だけプロキシを通すことが出来る。
既に開いているセッションに対してプロキシを適用する方法がわからなかった。
Workaroundとして、コードを __~/.switch_proxy__ 辺りに置いて、
Workaround として、コードを **~/.switch_proxy** 辺りに置いて、
```bash:~/.zshrc
alias nswitch=~/.switch_proxy
```
```
`.zshrc`に書いておくことで、`nswitch`とタイプしてプロキシを切り替えられるようになる。
```

View File

@ -3,23 +3,23 @@ title: Qiitaでストックした記事をインクリメンタルサーチす
date: 2013-12-05 09:00:00 +09:00
---
コードを書いている時に、ストックしておいたQiitaの記事を検索したくなるシーンが最近増えてきた気がする。
コードを書いている時に、ストックしておいた Qiita の記事を検索したくなるシーンが最近増えてきた気がする。
そこで、以前作った[Qiitaの記事をインクリメンタルサーチするAlfred 2 Workflow](http://qiita.com/o_ame/items/f23e75bfc11e9e7b3a08)に、ストックした投稿を検索するコマンドを追加した。
そこで、以前作った[Qiita の記事をインクリメンタルサーチする Alfred 2 Workflow](http://qiita.com/o_ame/items/f23e75bfc11e9e7b3a08)に、ストックした投稿を検索するコマンドを追加した。
![s1.png](/uploads/alfred-qiita-workflow.png)
> [Githubリポジトリ](https://github.com/uetchy/alfred-qiita-workflow)から[ダウンロード](https://github.com/uetchy/alfred-qiita-workflow/archive/master.zip)
> [Github リポジトリ](https://github.com/uetchy/alfred-qiita-workflow)から[ダウンロード](https://github.com/uetchy/alfred-qiita-workflow/archive/master.zip)
## 使い方
1. `qiita setup <username> <password>`でQiitaのアクセストークンを取得
2. `qiita stocks <query>`でストックした記事の検索
3. `qiita search <query>`で普通の検索
1. `qiita setup <username> <password>` Qiita のアクセストークンを取得
2. `qiita stocks <query>`でストックした記事の検索
3. `qiita search <query>`で普通の検索
## まとめ
今度はRubyで書きなおして日本語も受け付けるように修正したので、需要はともかく個人的にかなり使いやすくなった気がする。
今度は Ruby で書きなおして日本語も受け付けるように修正したので、需要はともかく個人的にかなり使いやすくなった気がする。
~~なお、このWorkflowはRuby 2.0.xで動作するので必然的にOS X Mavericksが必要になってくる。~~
__Ruby 1.9.xでも動作するように書きなおしたので古いOS Xでも動くようになった。__
~~なお、この Workflow Ruby 2.0.x で動作するので必然的に OS X Mavericks が必要になってくる。~~
**Ruby 1.9.x でも動作するように書きなおしたので古い OS X でも動くようになった。**

View File

@ -3,7 +3,7 @@ title: Run dokku with Dockland
date: 2014-05-30 09:00:00 +09:00
---
ローカルからheroku-toolbeltライクにdokkuコマンドを叩くdockland gemをリリースした。
ローカルから heroku-toolbelt ライクに dokku コマンドを叩く dockland gem をリリースした。
Github: [uetchy/dockland](https://github.com/uetchy/dockland)
@ -17,9 +17,9 @@ gem install dockland
### 普通のやり方
まずは普通にdokkuコマンドを叩く。
まずは普通に dokku コマンドを叩く。
`ssh -t dokku@example.com <command> <app-name> <options>`でリモートのdokkuコマンドを直接叩ける。
`ssh -t dokku@example.com <command> <app-name> <options>`でリモートの dokku コマンドを直接叩ける。
```bash
$ ssh -t dokku@example.com config:set sushi-app KEY1=VALUE
@ -33,9 +33,9 @@ KEY1: VALUE
しかしこれではホスト名やアプリ名を毎回打ち込む羽目になって大変だ。
### docklandのやり方
### dockland のやり方
docklandで同じことをやる。
dockland で同じことをやる。
```bash
$ cd sushi-app # ローカルのプロジェクトリポジトリに移動
@ -64,7 +64,7 @@ KEY1: VALUE
alias dokku='dockland'
```
という具合にaliasを張っておけば、まるでリモートで`dokku`を実行している感覚でローカルから`dokku`コマンドを触ることが出来る。
という具合に alias を張っておけば、まるでリモートで`dokku`を実行している感覚でローカルから`dokku`コマンドを触ることが出来る。
```bash
$ cd rails-app
@ -76,9 +76,10 @@ $ dokku logs
```
## 結論
### 良い所
- リモートのdokkuコマンドを叩きたい時はプロジェクトのGitリポジトリに入ってdocklandコマンドを叩くだけで良い
- リモートの dokku コマンドを叩きたい時はプロジェクトの Git リポジトリに入って dockland コマンドを叩くだけで良い
### 悪いところ

View File

@ -3,36 +3,35 @@ title: HomebrewでmacOSに構文解析システムKNPを入れる
date: 2014-09-23 09:00:00 +09:00
---
HomebrewでmacOSに構文解析システムKNPをインストールします。
Homebrew macOS に構文解析システム KNP をインストールします。
# 前提
OS X用のパッケージ管理ツール Homebrew がインストールされている必要がある。
OS X 用のパッケージ管理ツール Homebrew がインストールされている必要がある。
インストール方法は[こちら](http://www.engineyard.co.jp/blog/2012/homebrew-os-xs-missing-package-manager/)
# インストール
デフォルトのHomebrewリポジトリにKNPは含まれていないので [homebrew-nlp](https://github.com/uetchy/homebrew-nlp) をtapする。
デフォルトの Homebrew リポジトリに KNP は含まれていないので [homebrew-nlp](https://github.com/uetchy/homebrew-nlp) を tap する。
```bash
brew tap uetchy/nlp
```
Tapし終わったら、`knp`をインストールする。knpが依存している形態素解析システム`juman`とデータベース`tinycdb`はHomebrewによって自動でインストールされる。その内の`juman`は上記の __oame/nlp__ Tapによって提供されている。
Tap し終わったら、`knp`をインストールする。knp が依存している形態素解析システム`juman`とデータベース`tinycdb` Homebrew によって自動でインストールされる。その内の`juman`は上記の **oame/nlp** Tap によって提供されている。
```bash
brew install knp
```
固有表現解析を行いたい場合は __--with-crf++__ オプションを付けてインストールする。このオプションを付けると、依存解決のために`crf++`も同時にインストールされる。
固有表現解析を行いたい場合は **--with-crf++** オプションを付けてインストールする。このオプションを付けると、依存解決のために`crf++`も同時にインストールされる。
```bash
brew install knp --with-crf++
```
KNPのインストールにはありえないくらい時間が掛かる。
KNP のインストールにはありえないくらい時間が掛かる。
# チェック

View File

@ -9,12 +9,12 @@ homebrew-cask を単純なダウンローダーとして使う。
# 理由
1. **pkg 形式** で配布されているアプリケーションはインストール時にオプションをカ
スタマイズ出来ることが多い。
2. にも関わらず`brew cask install`を使うと、それらのオプションを選べずにインスト
ールされてしまい悲しい。
3. そこで、`brew cask`で fetch までは自動化して、インストール自体は手動でやろう
( スマートではないが。)
1. **pkg 形式** で配布されているアプリケーションはインストール時にオプションをカ
スタマイズ出来ることが多い。
2. にも関わらず`brew cask install`を使うと、それらのオプションを選べずにインスト
ールされてしまい悲しい。
3. そこで、`brew cask`で fetch までは自動化して、インストール自体は手動でやろう
( スマートではないが。)
# 方法

View File

@ -3,19 +3,19 @@ title: Sketch 3 plugin 'StickyGrid'
date: 2014-12-03 09:00:00 +09:00
---
選択したシェイプのポイントをグリッドに吸い付かせるプラグインStickyGridを作りました。
選択したシェイプのポイントをグリッドに吸い付かせるプラグイン StickyGrid を作りました。
![](http://randompaper.co.s3.amazonaws.com/Sketch-StickyGrid/stickygrid.gif)
Vectorツールで軽くスケッチしてからこのプラグインを適用することで、簡単に幾何学的なオブジェクトを作ることが出来る。
Vector ツールで軽くスケッチしてからこのプラグインを適用することで、簡単に幾何学的なオブジェクトを作ることが出来る。
![](http://randompaper.co.s3.amazonaws.com/Sketch-StickyGrid/tf1.png)
# インストール
[リリースページ](https://github.com/uetchy/Sketch-StickyGrid/releases/latest)からzipアーカイブをダウンロードし、__StickyGrid.sketchplugin__ をダブルクリックしてインストールする。
[リリースページ](https://github.com/uetchy/Sketch-StickyGrid/releases/latest)から zip アーカイブをダウンロードし、**StickyGrid.sketchplugin** をダブルクリックしてインストールする。
もし、より_CLI-way_がお好みであれば、以下のコマンドでもインストールすることが出来る。
もし、より*CLI-way*がお好みであれば、以下のコマンドでもインストールすることが出来る。
```bash
cd $HOME/Library/Application Support/com.bohemiancoding.sketch3/Plugins
@ -24,9 +24,9 @@ git clone https://github.com/uetchy/Sketch-StickyGrid.git
# 使い方
吸い付かせたいシェイプを1つ、または複数選択して __`ctrl` + `⌘` + `G`__ を押すと、パスがグリッドの交差点に吸い付く。
吸い付かせたいシェイプを 1 つ、または複数選択して **`ctrl` + `⌘` + `G`** を押すと、パスがグリッドの交差点に吸い付く。
ショートカット以外にも、メニューから__Plugins > Sketch-StickyGrid > Snap to Grid__を選んでも良い。
ショートカット以外にも、メニューから**Plugins > Sketch-StickyGrid > Snap to Grid**を選んでも良い。
シェイプはもちろん、グルーピングされたシェイプも、逆にシェイプポイントだけでも吸い付く。
@ -36,24 +36,24 @@ git clone https://github.com/uetchy/Sketch-StickyGrid.git
## プラグインのデバッグ
デバッギングには[Sketch-DevTools](https://github.com/turbobabr/sketch-devtools)を使っていましたが、最新版のSketchでは使えなくなってしまった。
デバッギングには[Sketch-DevTools](https://github.com/turbobabr/sketch-devtools)を使っていましたが、最新版の Sketch では使えなくなってしまった。
その代わりにMac標準アプリの __Console.app__ を使う方法が公式デベロッパーサイトの記事 [Debugging - Sketch Developer](http://developer.sketchapp.com/code-examples/debugging/) で紹介されている。
その代わりに Mac 標準アプリの **Console.app** を使う方法が公式デベロッパーサイトの記事 [Debugging - Sketch Developer](http://developer.sketchapp.com/code-examples/debugging/) で紹介されている。
スクリプト内で`log`関数を呼び出すと、Console.appにログが出力される。
スクリプト内で`log`関数を呼び出すと、Console.app にログが出力される。
```js
log(context.document.gridSize);
log(context.document.gridSize)
```
## ドキュメントの情報源
ドキュメントは公式デベロッパーサイト [Sketch Developer](http://developer.sketchapp.com) があるものの、パス編集に関するドキュメントは全くなかった。
そこで、[class-dump](http://stevenygard.com/projects/class-dump/) を使って Sketch.app のヘッダーファイルを抽出し、ひたすら __目grep__ をしてシェイプ操作とグリッドに関するAPIを探し出し、プラグインの実装に役立てた。
そこで、[class-dump](http://stevenygard.com/projects/class-dump/) を使って Sketch.app のヘッダーファイルを抽出し、ひたすら **目 grep** をしてシェイプ操作とグリッドに関する API を探し出し、プラグインの実装に役立てた。
また、先人によって公開されている数多のSketchプラグインのソースを見ることも、開発の助けになった。
また、先人によって公開されている数多の Sketch プラグインのソースを見ることも、開発の助けになった。
# 結論
苦行僧じみたSketchプラグインの開発には __class-dump____Console.app__ が必携。
苦行僧じみた Sketch プラグインの開発には **class-dump****Console.app** が必携。

View File

@ -3,7 +3,7 @@ title: Sketch 3 plugin 'StickyGrid'
date: 2014-12-03 09:00:00 +09:00
---
For practicing Sketch plugin development, I created __StickyGrid__ to let shape points sticked with grids.
For practicing Sketch plugin development, I created **StickyGrid** to let shape points sticked with grids.
![](http://randompaper.co.s3.amazonaws.com/Sketch-StickyGrid/stickygrid.gif)
@ -13,7 +13,7 @@ Draw something in rough and apply this plugin then you'll get geometric shapes a
# How to install
From [GitHub releases](https://github.com/uetchy/Sketch-StickyGrid/releases/latest), Download a zipped archive then unarchive it then double click __StickyGrid.sketchplugin__ so you are prepared for using StickyGrid.
From [GitHub releases](https://github.com/uetchy/Sketch-StickyGrid/releases/latest), Download a zipped archive then unarchive it then double click **StickyGrid.sketchplugin** so you are prepared for using StickyGrid.
Loving _CLI-way_ than anything, You also want to run those commands to get the same thing.
@ -24,9 +24,9 @@ git clone https://github.com/uetchy/Sketch-StickyGrid.git
# Usage
At first, selecting __`ctrl` + `⌘` + `G`__ を押すと、パスがグリッドの交差点に吸い付く。
At first, selecting **`ctrl` + `⌘` + `G`** を押すと、パスがグリッドの交差点に吸い付く。
ショートカット以外にも、メニューから__Plugins > Sketch-StickyGrid > Snap to Grid__を選んでも良い。
ショートカット以外にも、メニューから**Plugins > Sketch-StickyGrid > Snap to Grid**を選んでも良い。
シェイプはもちろん、グルーピングされたシェイプも、逆にシェイプポイントだけでも吸い付く。
@ -36,24 +36,24 @@ At first, selecting __`ctrl` + `⌘` + `G`__ を押すと、パスがグリッ
## プラグインのデバッグ
デバッギングには[Sketch-DevTools](https://github.com/turbobabr/sketch-devtools)を使っていましたが、最新版のSketchでは使えなくなってしまった。
デバッギングには[Sketch-DevTools](https://github.com/turbobabr/sketch-devtools)を使っていましたが、最新版の Sketch では使えなくなってしまった。
その代わりにMac標準アプリの __Console.app__ を使う方法が公式デベロッパーサイトの記事 [Debugging - Sketch Developer](http://developer.sketchapp.com/code-examples/debugging/) で紹介されている。
その代わりに Mac 標準アプリの **Console.app** を使う方法が公式デベロッパーサイトの記事 [Debugging - Sketch Developer](http://developer.sketchapp.com/code-examples/debugging/) で紹介されている。
スクリプト内で`log`関数を呼び出すと、Console.appにログが出力される。
スクリプト内で`log`関数を呼び出すと、Console.app にログが出力される。
```js
log(context.document.gridSize);
log(context.document.gridSize)
```
## ドキュメントの情報源
ドキュメントは公式デベロッパーサイト [Sketch Developer](http://developer.sketchapp.com) があるものの、パス編集に関するドキュメントは全くなかった。
そこで、[class-dump](http://stevenygard.com/projects/class-dump/) を使って Sketch.app のヘッダーファイルを抽出し、ひたすら__目grep__をしてシェイプ操作とグリッドに関するAPIを探し出し、プラグインの実装に役立てた。
そこで、[class-dump](http://stevenygard.com/projects/class-dump/) を使って Sketch.app のヘッダーファイルを抽出し、ひたすら**目 grep**をしてシェイプ操作とグリッドに関する API を探し出し、プラグインの実装に役立てた。
また、先人によって公開されている数多のSketchプラグインのソースを見ることも、開発の助けになった。
また、先人によって公開されている数多の Sketch プラグインのソースを見ることも、開発の助けになった。
# 結論
苦行僧じみたSketchプラグインの開発には__class-dump__と__Console.app__が必携。
苦行僧じみた Sketch プラグインの開発には**class-dump**と**Console.app**が必携。

View File

@ -3,7 +3,7 @@ title: Take control of Chrome with Myo Armband
date: 2014-12-16 09:00:00 +09:00
---
Thalmic LabsのMYOアームバンドが届いたのでGoogle Chromeをマイノリティ・リポートっぽいジェスチャーで操作するMyo Scriptsを書いてみる。
Thalmic Labs MYO アームバンドが届いたので Google Chrome をマイノリティ・リポートっぽいジェスチャーで操作する Myo Scripts を書いてみる。
### 主な情報源
@ -13,9 +13,9 @@ Thalmic LabsのMYOアームバンドが届いたのでGoogle Chromeをマイノ
# 基本
Luaで記述し、拡張子は__.myo__を使う。
Lua で記述し、拡張子は**.myo**を使う。
作成したスクリプトはMyo Connectを経由してアームバンドとやりとりをすることになる。
作成したスクリプトは Myo Connect を経由してアームバンドとやりとりをすることになる。
> デバッグコマンドとして`myo.debug(obj)`が用意されている。
@ -35,7 +35,7 @@ function onForegroundWindowChange(app, title)
end
```
onForegroundWindowChangeの返り値が__true__の場合、スクリプトをアクティブにする。つまり上のように書けばGoogle Chromeのウィンドウが最前面に出ている時だけスクリプトを有効化させることが出来る。
onForegroundWindowChange の返り値が**true**の場合、スクリプトをアクティブにする。つまり上のように書けば Google Chrome のウィンドウが最前面に出ている時だけスクリプトを有効化させることが出来る。
いかなる状況でもジェスチャーをハンドルしたい場合は以下のように書く。
@ -45,7 +45,7 @@ function onForegroundWindowChange(app, title)
end
```
実際には、__親指と中指でダブルタップ__ するジェスチャーを検知した後に、全てのMyo ScriptsのonForegroundWindowChangeを呼び出している。そしてtrueが返ってきたスクリプトのみを実行している。
実際には、**親指と中指でダブルタップ** するジェスチャーを検知した後に、全ての Myo Scripts onForegroundWindowChange を呼び出している。そして true が返ってきたスクリプトのみを実行している。
アクティブになったスクリプトは一定時間が経過してアームバンドがロックされるまでイベントハンドラーが呼ばれ続ける。
@ -63,17 +63,17 @@ function onPoseEdge(pose, edge)
end
```
### poseの種類
### pose の種類
|pose|意味|
|----|---|
|rest|安静時|
|fist|握り拳|
|fingersSpread|手を開く|
|waveIn|手首を手前に曲げる|
|waveOut|手首を手前とは逆に曲げる|
|doubleTap|中指と親指でダブルタップ|
|unknown|判別不能|
| pose | 意味 |
| ------------- | ------------------------ |
| rest | 安静時 |
| fist | 握り拳 |
| fingersSpread | 手を開く |
| waveIn | 手首を手前に曲げる |
| waveOut | 手首を手前とは逆に曲げる |
| doubleTap | 中指と親指でダブルタップ |
| unknown | 判別不能 |
## onPeriodic()
@ -84,24 +84,24 @@ function onPeriodic()
end
```
onPeriodicはスクリプトがアクティブな間ずっと呼ばれ続ける。常にアームバンドのジャイロ情報を取得してなんやかんやしたい時に使う。
onPeriodic はスクリプトがアクティブな間ずっと呼ばれ続ける。常にアームバンドのジャイロ情報を取得してなんやかんやしたい時に使う。
# 実装
以上のハンドラーを駆使し作ってみる。
今回のようにGoogle Chromeのスクロール操作をアームバンドのジェスチャーでやりたい場合、__onPeriodic__`myo.getRoll()`メソッドを呼び出せば手首の回転する角度を取得出来るわけである。しかし、そのまま__onPeriodic__上にスクロールを行うコードを続けて書くと常にアームバンドの傾き具合でスクロールされてしまい困る。
今回のように Google Chrome のスクロール操作をアームバンドのジェスチャーでやりたい場合、**onPeriodic**`myo.getRoll()`メソッドを呼び出せば手首の回転する角度を取得出来るわけである。しかし、そのまま**onPeriodic**上にスクロールを行うコードを続けて書くと常にアームバンドの傾き具合でスクロールされてしまい困る。
そこで、「握り拳を握っている間だけ手首の傾きによってウェブページをスクロールさせる」ようにする。
## 握り拳を握っている間だけ手首の傾きによってウェブページをスクロールさせる
初めにグローバルで `enableScroll` 変数を宣言し、falseで初期化する。
初めにグローバルで `enableScroll` 変数を宣言し、false で初期化する。
```lua
enableScroll = false
```
そして、onPoseEdgeに握り拳が握られるとenableScrollをtrueに、戻るとfalseにするコードを書く。
そして、onPoseEdge に握り拳が握られると enableScroll true に、戻ると false にするコードを書く。
```lua
function onPoseEdge(pose, edge)
@ -113,7 +113,7 @@ function onPoseEdge(pose, edge)
end
```
最後に onPeriodic で手首の角度を取得してキーボードの↑か↓を連打するコードを書く。
最後に onPeriodic で手首の角度を取得してキーボードの を連打するコードを書く。
```lua
function onPeriodic()
@ -135,9 +135,9 @@ function onPeriodic()
end
```
実際にこのスクリプトを動かしてみると上手くスクロールしない。myo.getRoll()で取得した角度は絶対的な角度だからだ。握り拳が作られた瞬間の角度を0として扱った方がプログラムの見通しも良くなる。
実際にこのスクリプトを動かしてみると上手くスクロールしない。myo.getRoll()で取得した角度は絶対的な角度だからだ。握り拳が作られた瞬間の角度を 0 として扱った方がプログラムの見通しも良くなる。
そこで新たにinitRoll変数をグローバルで宣言する。そしてonPoseEdgeを以下のように修正する。
そこで新たに initRoll 変数をグローバルで宣言する。そして onPoseEdge を以下のように修正する。
```lua
function onPoseEdge(pose, edge)
@ -150,7 +150,7 @@ function onPoseEdge(pose, edge)
end
```
続けてonPeriodicの
続けて onPeriodic
```lua
roll = myo.getRoll()
@ -164,12 +164,12 @@ roll = myo.getRoll() - initRoll
に修正する。
これで、絶対角度を握り拳が握られた瞬間の手首の角度を0とする相対角度を取得出来る。
これで、絶対角度を握り拳が握られた瞬間の手首の角度を 0 とする相対角度を取得出来る。
実際に動くスクリプトをGithubで[公開している](https://github.com/uetchy/myo-scripts)。
実際に動くスクリプトを Github で[公開している](https://github.com/uetchy/myo-scripts)。
### 番外編
Myo C++ SDKを使ってアイアンマンみたいなジェスチャーでレーザーガンを撃った気分になれるアプリを作った。
Myo C++ SDK を使ってアイアンマンみたいなジェスチャーでレーザーガンを撃った気分になれるアプリを作った。
[uetchy/myo-gun](https://github.com/uetchy/myo-gun)

View File

@ -3,7 +3,7 @@ title: CaboCha on RubyGems
date: 2015-02-26 09:00:00 +09:00
---
日本語係り受け解析器CaboChaのRubyバインディング [cabocha-ruby](https://github.com/uetchy/cabocha-ruby) をリリースした。とは言っても [公式](https://code.google.com/p/cabocha/) のSWIGバインディングをベースにしたものだ。
日本語係り受け解析器 CaboCha Ruby バインディング [cabocha-ruby](https://github.com/uetchy/cabocha-ruby) をリリースした。とは言っても [公式](https://code.google.com/p/cabocha/) の SWIG バインディングをベースにしたものだ。
## 導入
@ -12,11 +12,12 @@ gem install cabocha
```
でインストール出来る。
> cabocha-ruby をインストールする前に、CaboCha を`brew install cabocha`かなんかでインストールしておかないとmakeが失敗するので注意すること。
> cabocha-ruby をインストールする前に、CaboCha を`brew install cabocha`かなんかでインストールしておかないと make が失敗するので注意すること。
## 使う
requireする時は`require "cabocha"``require "CaboCha"`、どちらを使っても正しい。
require する時は`require "cabocha"``require "CaboCha"`、どちらを使っても正しい。
```ruby
require "cabocha"

View File

@ -3,61 +3,58 @@ title: 'gulp + decomposer: Best way to sassy-@import bower components'
date: 2015-02-26 09:00:00 +09:00
---
gulp + Browserify(+ debowerify)という構成でWebサイトを作っていると、SASSにもdebowerify相当のものが欲しくなってくる。
gulp + Browserify(+ debowerify)という構成で Web サイトを作っていると、SASS にも debowerify 相当のものが欲しくなってくる。
ちなみに、__debowerify__ というのは、
ちなみに、**debowerify** というのは、
```js
var Velocity = require("velocity");
var Velocity = require('velocity')
```
というJavaScriptを、
という JavaScript を、
```js
var Velocity = require("./../../bower_components/velocity/velocity.js");
var Velocity = require('./../../bower_components/velocity/velocity.js')
```
という風に、bower_components内のパスに解決してくれるBrowserify transformだ。
欲しいのはこれのSASS版。
という風に、bower_components 内のパスに解決してくれる Browserify transform だ。
欲しいのはこれの SASS 版。
「あったらいいのにな〜」と思うようなライブラリはGithubで検索すれば必ず出てくる。はずだったが、無かった。
「あったらいいのにな〜」と思うようなライブラリは Github で検索すれば必ず出てくる。はずだったが、無かった。
そこで [decomposer](https://www.npmjs.com/package/decomposer) というgulpプラグインを作った。
そこで [decomposer](https://www.npmjs.com/package/decomposer) という gulp プラグインを作った。
# 使い方
まずは`npm install --save-dev gulp gulp-sass decomposer`で必要なものをインストールしておく。既存のプロジェクトに追加するならdecomposerだけでいい。
まずは`npm install --save-dev gulp gulp-sass decomposer`で必要なものをインストールしておく。既存のプロジェクトに追加するなら decomposer だけでいい。
__gulpfile.js__ はこのように定義しておく。
**gulpfile.js** はこのように定義しておく。
```js
var gulp = require('gulp');
var sass = require('gulp-sass');
var decomposer = require('decomposer');
var gulp = require('gulp')
var sass = require('gulp-sass')
var decomposer = require('decomposer')
gulp.task('styles', function() {
gulp.src('src/styles/**/*.sass')
gulp
.src('src/styles/**/*.sass')
.pipe(decomposer())
.pipe(sass({indentedSyntax: true}))
.pipe(gulp.dest('dist/css'));
});
.pipe(sass({ indentedSyntax: true }))
.pipe(gulp.dest('dist/css'))
})
```
ポイントは`sass` __よりも前__`decomposer`を挟むこと。なぜなら、外部から@importしたmix-insや変数はSASSコンパイル時に解決されるからだ。`sass`よりも後に置くと、SASSが@importを解決出来ずにエラーが発生する
ポイントは`sass` **よりも前**`decomposer`を挟むこと。なぜなら、外部から@import した mix-ins や変数は SASS コンパイル時に解決されるからだ。`sass`よりも後に置くと、SASS @import を解決出来ずにエラーが発生する。
続けてSASSを書こう。
続けて SASS を書こう。
```scss
@import normalize.sass
@import styles/font
body
font-family: $ff-gothic
@import normalize.sass @import styles/font body font-family: $ff-gothic;
```
> `$ff-gothic`は [uetchy/styles](https://github.com/uetchy/styles) の _font.sass_ で定義されているfont-familyだ。
> `$ff-gothic`は [uetchy/styles](https://github.com/uetchy/styles) の _font.sass_ で定義されている font-family だ。
最後にBowerを使って必要なアセットをインストールする。
最後に Bower を使って必要なアセットをインストールする。
```bash
bower i --save normalize.sass
@ -68,43 +65,43 @@ bower i --save uetchy/styles
# ファイルパス解決時のポイント
decomposer はBowerモジュールに入っている任意のファイルを指定して@importすることが出来る
decomposer は Bower モジュールに入っている任意のファイルを指定して@import することが出来る。
記法はこのようになる。
```scss
@import [Bowerモジュール名]/[ファイル名]
@import [Bowerモジュール名]/[ファイル名];
```
例えば、よく使うスタイルをまとめた [uetchy/styles](https://github.com/uetchy/styles) の___font.sass__ を@importするなら
例えば、よく使うスタイルをまとめた [uetchy/styles](https://github.com/uetchy/styles) の**\_font.sass** を@import するなら
```scss
@import styles/font
@import styles/font;
```
と書ける。
ここでもし`@import styles`と、ファイル名を省略して書くとどうなるのだろうか? コンパイルに失敗する? そんなことはない。
モジュール名だけを書くと、decomposerは__bower.json__に書かれているmainファイルを見つけ出して、それを@importしてくれるのだ
モジュール名だけを書くと、decomposer は**bower.json**に書かれている main ファイルを見つけ出して、それを@import してくれるのだ。
もしmainファイルが複数指定されていたら、`index.sass``[モジュール名].sass`、または__mainっぽい名前__ を持つファイルを@importする
もし main ファイルが複数指定されていたら、`index.sass``[モジュール名].sass`、または**main っぽい名前** を持つファイルを@import する
つまり、
```scss
@import normalize.sass
@import normalize.sass;
```
と書けば、
```scss
@import ../bower_components/normalize.sass/normalize.sass
@import ../bower_components/normalize.sass/normalize.sass;
```
という風に解決される。
# まとめ
これでスタイルの@importをすっきり書けるようになった
とはいえ、component対応やPlain CSSのインライン展開や.less対応など、追加したい機能は色々ある。
これでスタイルの@import をすっきり書けるようになった。
とはいえ、component 対応や Plain CSS のインライン展開や.less 対応など、追加したい機能は色々ある。
もしContributionに興味があるなら、[Githubリポジトリ](https://github.com/uetchy/decomposer)をフォークしてほしい。
もし Contribution に興味があるなら、[Github リポジトリ](https://github.com/uetchy/decomposer)をフォークしてほしい。

View File

@ -5,31 +5,31 @@ date: 2015-03-10 09:00:00 +09:00
![](/uploads/create-icns-from-sketch/intro.png)
Gulpをつかって .sketch から .icns を生成するために、[gulp-sketch](https://github.com/cognitom/gulp-sketch) の出力結果を.icnsへ変換する [gulp-iconutil](https://github.com/uetchy/gulp-iconutil) というプラグインを作りました。
Gulp をつかって .sketch から .icns を生成するために、[gulp-sketch](https://github.com/cognitom/gulp-sketch) の出力結果を.icns へ変換する [gulp-iconutil](https://github.com/uetchy/gulp-iconutil) というプラグインを作りました。
# はじめに
.icns を作るには様々なサイズのアイコン画像を格納した __iconset__ をつくり、それを `iconutil` に渡します。ここで面倒なのは iconset です。
.icns を作るには様々なサイズのアイコン画像を格納した **iconset** をつくり、それを `iconutil` に渡します。ここで面倒なのは iconset です。
iconset の作成には16×16 ... 512×512の6種類のサイズのアイコンと、さらにそれぞれのRetina用のアイコンも加えて、計12種類ものサイズの画像が必要です。
iconset の作成には 16×16 ... 512×512 6 種類のサイズのアイコンと、さらにそれぞれの Retina 用のアイコンも加えて、計 12 種類ものサイズの画像が必要です。
唯一の救いは、最大サイズの画像だけ用意しておけば、不足している小さいサイズの画像は`iconutil`が自動で生成するということでしょう。
今回作った [gulp-iconutil](https://www.npmjs.com/package/gulp-iconutil) は、Gulpからこの`iconutil`コマンドへの橋渡しをしてくれます。
今回作った [gulp-iconutil](https://www.npmjs.com/package/gulp-iconutil) は、Gulp からこの`iconutil`コマンドへの橋渡しをしてくれます。
# アイコンをデザインする
Sketch上に512×512サイズのアートボードを作成し、アプリのアイコンをデザインします。
Sketch 上に 512×512 サイズのアートボードを作成し、アプリのアイコンをデザインします。
![](/uploads/create-icns-from-sketch/dock.png)
> Dock上でアイコンの見栄えをチェックするために、[sketch-dockpreview](https://github.com/fnky/sketch-dockpreview)を使っています。これは本当に便利なプラグインです。
> Dock 上でアイコンの見栄えをチェックするために、[sketch-dockpreview](https://github.com/fnky/sketch-dockpreview)を使っています。これは本当に便利なプラグインです。
# .sketch から .icns へ
.sketchからiconsetを作成するために、[gulp-sketch](https://github.com/cognitom/gulp-sketch) を、そして iconset から .icns へ変換するために今回作った [gulp-iconutil](https://www.npmjs.com/package/gulp-iconutil) を使います。npm からインストール出来ます。
.sketch から iconset を作成するために、[gulp-sketch](https://github.com/cognitom/gulp-sketch) を、そして iconset から .icns へ変換するために今回作った [gulp-iconutil](https://www.npmjs.com/package/gulp-iconutil) を使います。npm からインストール出来ます。
Gulpタスクは以下のように書きます。
Gulp タスクは以下のように書きます。
```coffee
gulp = require 'gulp'
@ -46,14 +46,14 @@ gulp.task 'icons', ->
.pipe gulp.dest 'icons/'
```
iconsタスクを実行すると、iconsフォルダの中に__app.icns__が生成されます。
icons タスクを実行すると、icons フォルダの中に**app.icns**が生成されます。
![](/uploads/create-icns-from-sketch/result.png)
Electronアプリ開発者はこのアイコンファイルをOS X向けビルドにそのまま使えます。
Electron アプリ開発者はこのアイコンファイルを OS X 向けビルドにそのまま使えます。
# まとめ
デザインデータのポストプロセスの自動化がGulpとsketchtoolのおかげでやりやすくなりました。
デザインデータのポストプロセスの自動化が Gulp sketchtool のおかげでやりやすくなりました。
[gulp-iconutil](https://github.com/uetchy/gulp-iconutil) は今週リリースしたばかりで若干不安定なので、もしバグを見つけたら[Issue](https://github.com/uetchy/gulp-iconutil/issues)を作るか、[PR](https://github.com/uetchy/gulp-iconutil/pulls)を投げてください!

View File

@ -5,19 +5,19 @@ date: 2015-09-07 09:00:00 +09:00
![Cover](/uploads/alfred-qiita-workflow.png)
Rubyで書かれている [Alfred Qiita Workflow](https://github.com/uetchy/alfred-qiita-workflow) を[バグ修正](https://github.com/uetchy/alfred-qiita-workflow/issues/3)のついでにGoで書き直した。
Ruby で書かれている [Alfred Qiita Workflow](https://github.com/uetchy/alfred-qiita-workflow) を[バグ修正](https://github.com/uetchy/alfred-qiita-workflow/issues/3)のついでに Go で書き直した。
Qiita API v2に対応し、ユーザー名とパスワードの代わりとして、[Personal Access Token](https://qiita.com/settings/tokens/new)を使い始めた。
Qiita API v2 に対応し、ユーザー名とパスワードの代わりとして、[Personal Access Token](https://qiita.com/settings/tokens/new)を使い始めた。
これで、ストックした記事や自分で書いた記事を検索することがより気軽に出来る。
Alfredに返却するXMLの生成には[go-alfred](https://github.com/pascalw/go-alfred)というライブラリを利用した。
Alfred に返却する XML の生成には[go-alfred](https://github.com/pascalw/go-alfred)というライブラリを利用した。
## go-qiita
Alfred Qiita Workflow の APIクライアント部分を切り出して [go-qiita](https://github.com/uetchy/go-qiita) としてリリースした。Workflowで必要だった部分しか実装してないが、記事の検索など基本的なことは出来る。
Alfred Qiita Workflow の API クライアント部分を切り出して [go-qiita](https://github.com/uetchy/go-qiita) としてリリースした。Workflow で必要だった部分しか実装してないが、記事の検索など基本的なことは出来る。
設計はGoogleの [go-github](https://github.com/google/go-github) を参考にしている。クライアントの初期化時に、以下のようにhttp.Client互換のInterfaceを渡してやれば、それを経由して通信するようになっている。
設計は Google の [go-github](https://github.com/google/go-github) を参考にしている。クライアントの初期化時に、以下のように http.Client 互換の Interface を渡してやれば、それを経由して通信するようになっている。
```go
// Personal Access Tokenを使ったOAuth2クライアントを作る
@ -31,7 +31,7 @@ client := qiita.NewClient(tc)
items, _, _ := client.AuthenticatedUser.Items()
```
このようにすることで、APIクライアントは認証系を気にせずAPIサーバーとのやりとりを考えることが出来る。このやり方はかなりスマートだと思うのでもっと流行って欲しい。
このようにすることで、API クライアントは認証系を気にせず API サーバーとのやりとりを考えることが出来る。このやり方はかなりスマートだと思うのでもっと流行って欲しい。
ちなみに認証をしない場合は`NewClient()``nil`を渡せばよい。

View File

@ -3,19 +3,19 @@ title: Gluing Installed Atom Packages and apm Stars Together
date: 2015-12-16 09:00:00 +09:00
---
Atomにインストールしているパッケージと[Atom.io](https://atom.io/packages)上のスターを同期するCLIツール [Atom Package Diff](https://www.npmjs.com/package/atom-package-diff) を公開した。
Atom にインストールしているパッケージと[Atom.io](https://atom.io/packages)上のスターを同期する CLI ツール [Atom Package Diff](https://www.npmjs.com/package/atom-package-diff) を公開した。
# 導入
npm経由でインストールする。
npm 経由でインストールする。
```bash
$ npm install -g atom-package-diff
```
# インストール済みパッケージとスターのdiff
# インストール済みパッケージとスターの diff
`apd status`コマンドでインストール済みパッケージとスターしているパッケージのdiffを見ることができる。
`apd status`コマンドでインストール済みパッケージとスターしているパッケージの diff を見ることができる。
```bash
$ apd status

View File

@ -5,7 +5,7 @@ date: 2016-01-24 09:00:00 +09:00
![](/uploads/essentials-for-new-macbook-spec.png)
新しいMacBookを買ったので、普段使っているアプリの整理も兼ねて、幾つかポリシーを決めてセットアップすることにしました。
新しい MacBook を買ったので、普段使っているアプリの整理も兼ねて、幾つかポリシーを決めてセットアップすることにしました。
## 1. シンプル
@ -13,21 +13,21 @@ date: 2016-01-24 09:00:00 +09:00
## 2. デフォルト重視
なるべくデフォルトで用意されているものを使います。カスタマイズもOS X標準機能の範囲内で行います。
なるべくデフォルトで用意されているものを使います。カスタマイズも OS X 標準機能の範囲内で行います。
# 使っているアプリ
## [Homebrew](http://brew.sh)
OS X向けのパッケージマネージャーです。
OS X 向けのパッケージマネージャーです。
## Atom
Sublime Textも良いのですが、やはりターミナルやGitが一画面で使えるのはMacBookのフルスクリーンアプリに合っています。
Sublime Text も良いのですが、やはりターミナルや Git が一画面で使えるのは MacBook のフルスクリーンアプリに合っています。
## LaunchControl
`launchctl`のGUI版です。変なAgentが差し込まれていることがあるので、たまにチェックしています。
`launchctl` GUI 版です。変な Agent が差し込まれていることがあるので、たまにチェックしています。
## [Papers](http://papersapp.com/mac/)
@ -37,23 +37,23 @@ Sublime Textも良いのですが、やはりターミナルやGitが一画面
![](/uploads/essentials-for-new-macbook-typora.png)
これまで様々な Markdown エディタを試してきましたが、どれもエディタとプレビューが分離しているUIを採用しており、それが私には不合理に思えて仕方がありませんでした。
これまで様々な Markdown エディタを試してきましたが、どれもエディタとプレビューが分離している UI を採用しており、それが私には不合理に思えて仕方がありませんでした。
Typora は入力した記法がリアルタイムに反映されるので直感的に文章を書くことが出来ます。 加えてGithub Flavored Markdown、MathJax、Mermaidなどのシーケンス図に対応しており、何気にニッチな需要を攻めている、小粋なアプリです。
Typora は入力した記法がリアルタイムに反映されるので直感的に文章を書くことが出来ます。 加えて Github Flavored Markdown、MathJax、Mermaid などのシーケンス図に対応しており、何気にニッチな需要を攻めている、小粋なアプリです。
## [英かな](https://ei-kana.appspot.com)
## [ 英かな](https://ei-kana.appspot.com)
US配列キーボードの左右⌘を英かなに割り振ることが出来るアプリです。実装がシンプルで軽量です。アイコンをデザインしてPull-requestを送ったらマージしてくれました。
US 配列キーボードの左右 を英かなに割り振ることが出来るアプリです。実装がシンプルで軽量です。アイコンをデザインして Pull-request を送ったらマージしてくれました。
## [Paw](https://paw.cloud/)
Web APIを作りたい時に使えます。無くても困りませんが、あると便利です。
Web API を作りたい時に使えます。無くても困りませんが、あると便利です。
## [Dash](https://kapeli.com/dash)
API ドキュメントを素早く検索出来るアプリです。
無いと困るようなアプリではありませんが、遅いWi-Fiに繋いでいる場合でも素早くドキュメントを閲覧できるので外で作業するならあると便利でしょう。
無いと困るようなアプリではありませんが、遅い Wi-Fi に繋いでいる場合でも素早くドキュメントを閲覧できるので外で作業するならあると便利でしょう。
## [Tower](http://www.git-tower.com)
@ -63,33 +63,33 @@ Git の GUI クライアントです。
## [Google Chrome](https://www.google.com/chrome/browser/desktop/index.html)
普段はSafariを使っていますが、Chromeでしか動かない前時代的なWebサービスを使う時や、Webアプリケーションをデバッグする時のために入れました。
普段は Safari を使っていますが、Chrome でしか動かない前時代的な Web サービスを使う時や、Web アプリケーションをデバッグする時のために入れました。
## Xcode
iOSアプリを作るときに必要なので入れました。
iOS アプリを作るときに必要なので入れました。
gccやGitなど、基本的なビルドツールチェインが必要な場合、Xcodeをインストールする代わりに `sudo xcode-select —install` でそれらを導入できます。
gcc Git など、基本的なビルドツールチェインが必要な場合、Xcode をインストールする代わりに `sudo xcode-select —install` でそれらを導入できます。
## [ForkLift 3] (http://www.binarynights.com/forklift/)
## [ForkLift 3](http://www.binarynights.com/forklift/)
SFTPサーバーやS3に接続するためのアプリです。接続したサーバーのディレクトリをFinderにマウントする機能があるので、ローカルで普通にファイルを扱う感覚でリモートのファイルをやりとり出来ます。Transmitから乗り換えました。
SFTP サーバーや S3 に接続するためのアプリです。接続したサーバーのディレクトリを Finder にマウントする機能があるので、ローカルで普通にファイルを扱う感覚でリモートのファイルをやりとり出来ます。Transmit から乗り換えました。
## [Kaleidoscope](http://www.kaleidoscopeapp.com)
さすがに標準のFileMergeだと機能不足が否めないので。
さすがに標準の FileMerge だと機能不足が否めないので。
## [Sketch](https://www.sketchapp.com)
Bohemian Coding が開発しているベクターデザインツールです。アイコンやUIをデザインする時に使っています。
Bohemian Coding が開発しているベクターデザインツールです。アイコンや UI をデザインする時に使っています。
## RightFont
フォント管理アプリです。FontCase、FontExplorer X Proなどを使ってきましたが、今はこれに落ち着いています。Google FontsやTypeKitに対応しており、またアイコンフォントを一覧できる機能が便利です。
フォント管理アプリです。FontCase、FontExplorer X Pro などを使ってきましたが、今はこれに落ち着いています。Google Fonts TypeKit に対応しており、またアイコンフォントを一覧できる機能が便利です。
## Adobe Creative Cloud
Affinityシリーズに乗り換えたので、今はIllustratorとTypeKitを使うために入れています。
Affinity シリーズに乗り換えたので、今は Illustrator TypeKit を使うために入れています。
## [Dropbox](https://www.dropbox.com)
@ -97,15 +97,15 @@ Affinityシリーズに乗り換えたので、今はIllustratorとTypeKitを使
## 1Password
パスワードマネージャーです。2要素認証のトークンもまとめて管理できます。
パスワードマネージャーです。2 要素認証のトークンもまとめて管理できます。
## f.lux
iOSのNight ShiftをmacOSに持ってきたようなアプリです。長時間の作業でも目が痛くなりません。
iOS Night Shift macOS に持ってきたようなアプリです。長時間の作業でも目が痛くなりません。
## Reeder
RSSリーダーです。Feedly Web版でも良いですが、Readability機能が便利なので使っています。
RSS リーダーです。Feedly Web 版でも良いですが、Readability 機能が便利なので使っています。
## [AppCleaner](https://freemacsoft.net/appcleaner/)
@ -113,11 +113,11 @@ RSSリーダーです。Feedly Web版でも良いですが、Readability機能
## [Pocket](https://getpocket.com)
「あとで読む」を管理するためのアプリです。Reading Listでもいいと思うので好みですね。
「あとで読む」を管理するためのアプリです。Reading List でもいいと思うので好みですね。
## [TripMode](https://www.tripmode.ch)
通信出来るアプリを個別に許可できます。外出先でテザリングをする際にTripModeがあれば、データ制限を気にせずインターネット接続ができるので便利です。
通信出来るアプリを個別に許可できます。外出先でテザリングをする際に TripMode があれば、データ制限を気にせずインターネット接続ができるので便利です。
# 導入を見送ったもの
@ -127,28 +127,28 @@ RSSリーダーです。Feedly Web版でも良いですが、Readability機能
## [Evernote](https://evernote.com/intl/jp/)
Notes.appに移行しました。
Notes.app に移行しました。
## Flash
ニコニコ動画が見れなくなるので泣く泣く導入していましたが、公式でHTML5に対応したので不要になりました。
ニコニコ動画が見れなくなるので泣く泣く導入していましたが、公式で HTML5 に対応したので不要になりました。
## [VirtualBox](https://www.virtualbox.org)
仮想環境を構築するためのアプリです。[Docker Machine](https://docs.docker.com/machine/)と組み合わせていましたが、Docker for Macの登場によって不要になりました。
仮想環境を構築するためのアプリです。[Docker Machine](https://docs.docker.com/machine/)と組み合わせていましたが、Docker for Mac の登場によって不要になりました。
## Karabiner
US配列キーボードのCommandキーを英かなに振り分けるため、Karabinerを使っていましたが、よりシンプルで軽量な[英かな](https://ei-kana.appspot.com)に移行しました。
US 配列キーボードの Command キーを英かなに振り分けるため、Karabiner を使っていましたが、よりシンプルで軽量な[ 英かな](https://ei-kana.appspot.com)に移行しました。
## Seil
US配列のcaps lockキーをCtrlキーへ変更するために使っていましたが、いつからかmacOS標準で出来るようになっていたので不要になりました。
US 配列の caps lock キーを Ctrl キーへ変更するために使っていましたが、いつからか macOS 標準で出来るようになっていたので不要になりました。
## Google 日本語入力
最近のOS標準のIMに搭載されているライブ変換機能が優秀なので、あえてサードパーティのIMを入れる必要性がなくなりました。
最近の OS 標準の IM に搭載されているライブ変換機能が優秀なので、あえてサードパーティの IM を入れる必要性がなくなりました。
## Alfred
便利そうなワークフローを色々入れても、実際に使う頻度はあまり高くないことに気がつき、この際なのでSpotlightに切り替えました。
便利そうなワークフローを色々入れても、実際に使う頻度はあまり高くないことに気がつき、この際なので Spotlight に切り替えました。

View File

@ -9,11 +9,11 @@ date: 2016-02-11 09:00:00 +09:00
![](http://randompaper.co.s3.amazonaws.com/Polyglot/screencast1.gif)
この Extension は __Google Translate API__ を使っている。だからこれを Safari で使うためには、まず Google Cloud Platform から APIキーを手に入れなくてはならない。その手続きは少しばかり面倒なので、[スクリーンショット付きのガイド](https://github.com/uetchy/Polyglot/wiki/How-to-obtain-Google-Cloud-Platform-API-key)を作った。
この Extension は **Google Translate API** を使っている。だからこれを Safari で使うためには、まず Google Cloud Platform から API キーを手に入れなくてはならない。その手続きは少しばかり面倒なので、[スクリーンショット付きのガイド](https://github.com/uetchy/Polyglot/wiki/How-to-obtain-Google-Cloud-Platform-API-key)を作った。
## Inside Safari Extension
技術的に特段おもしろいことをしているわけではない。ES2015 でコードを書き、webpack と babel を使って Extension向けにトランスパイルしている。意外だったのは、Safari Extension の構造が Google Chrome 拡張機能のそれとよく似ていたことだ。これならば Chrome 開発者でも容易に Safari Extension を作れるだろう。
技術的に特段おもしろいことをしているわけではない。ES2015 でコードを書き、webpack と babel を使って Extension 向けにトランスパイルしている。意外だったのは、Safari Extension の構造が Google Chrome 拡張機能のそれとよく似ていたことだ。これならば Chrome 開発者でも容易に Safari Extension を作れるだろう。
## プラットフォーム間の差異を無くすには

View File

@ -7,12 +7,12 @@ date: 2016-05-26 09:00:00 +09:00
<https://stairlab.doorkeeper.jp/events/44958>
> 第2回目の今回は、機械学習の研究者で、トピックモデル (機械学習プロフェッショナルシリーズ)の著者でもある、NTTコミュニケーション科学基礎研究所の[岩田具治](http://www.kecl.ntt.co.jp/as/members/iwata/index-j.html)先生をお招きし、「教師なしオブジェクトマッチング」というタイトルで、先生の最近の研究について講演していただきます。
> 第 2 回目の今回は、機械学習の研究者で、トピックモデル (機械学習プロフェッショナルシリーズ)の著者でもある、NTT コミュニケーション科学基礎研究所の[岩田具治](http://www.kecl.ntt.co.jp/as/members/iwata/index-j.html)先生をお招きし、「教師なしオブジェクトマッチング」というタイトルで、先生の最近の研究について講演していただきます。
- 教師なし学習
- PCAが主流
- t-SNEで次元削減してプロット
- PCA が主流
- t-SNE で次元削減してプロット
- 教師ありオブジェクトマッチング
@ -38,9 +38,9 @@ date: 2016-05-26 09:00:00 +09:00
- 提案 : 教師なしクラスタマッチングのための潜在変数モデル
1. 各ドメインのデータを共通の低次元潜在空間へ埋め込む
2. 潜在空間でクラスタリング
3. 同じクラスタになったオブジェクトが対応
1. 各ドメインのデータを共通の低次元潜在空間へ埋め込む
2. 潜在空間でクラスタリング
3. 同じクラスタになったオブジェクトが対応
- 確率的生成モデルによるクラスタリング
@ -53,10 +53,10 @@ date: 2016-05-26 09:00:00 +09:00
- 混合定期分布によるクラスタリング
- k-meansの確率版
- k-means の確率版
- 生成過程
- クラスタ毎の平均は $\{\mu_1, \mu_2, … \mu_k\}$
- Forオブジェクト $n = 1, …, N$
- For オブジェクト $n = 1, …, N$
- クラスタ割り当てを決める$S_n \sim Categorical(\theta)$
- 教師なしクラスタマッチング生成モデル
@ -69,14 +69,14 @@ date: 2016-05-26 09:00:00 +09:00
- 異なるドメインのオブジェクトを共通のクラスタに割り当てできる
- ドメイン毎に異なる特徴次元や統計的性質を考慮できる
- ドメイン毎に異なるオブジェクト数でも良い
- 確率的EMアルゴリズム
- Eステップ : クラスタ割り当てsをgibbsサンプリング
- Mステップ : 写像行列Wを最尤推定
- 潜在ベクトルz、クラスタ割り当て$\theta$、精度$\alpha$は解析的に積分消去
- 確率的 EM アルゴリズム
- E ステップ : クラスタ割り当て s gibbs サンプリング
- M ステップ : 写像行列 W を最尤推定
- 潜在ベクトル z、クラスタ割り当て$\theta$、精度$\alpha$は解析的に積分消去
- [Adjusted Rand index](http://y-uti.hatenablog.jp/entry/2014/01/19/133936) (高いほど良い)
- 反教師あり
- 少数の対応データが得られる場合もある
- Eステップで対応データは必ず同じクラスタに割り当てられるとする
- E ステップで対応データは必ず同じクラスタに割り当てられるとする
- 結論
- 教師なしクラスタマッチング手法を提案
- 対応データ不要

View File

@ -36,4 +36,4 @@ make -C 1_Utilities/deviceQuery
## Build from source
{% gist 568d86da5ce555e9bc6618f59391f9cd 03_build_tensorflow.sh %}
{% gist 568d86da5ce555e9bc6618f59391f9cd 03_build_tensorflow.sh %}

View File

@ -7,44 +7,44 @@ date: 2016-12-03 09:00:00 +09:00
# ガジェット
## [12インチMacBook](http://www.apple.com/jp/shop/buy-mac/macbook/%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89-512gb)
## [12 インチ MacBook](http://www.apple.com/jp/shop/buy-mac/macbook/%E3%82%B4%E3%83%BC%E3%83%AB%E3%83%89-512gb)
持ち運びに特化した超コンパクトなMacBook。スペックに過度な期待は禁物。
持ち運びに特化した超コンパクトな MacBook。スペックに過度な期待は禁物。
## [EARIN](https://earin.com)
持ち運びに特化した超コンパクトなBluetoothイヤホン。取り回しが多少ピーキーであるため、万人受けしないプロダクトであるが、世界最小の謳い文句は本物。
持ち運びに特化した超コンパクトな Bluetooth イヤホン。取り回しが多少ピーキーであるため、万人受けしないプロダクトであるが、世界最小の謳い文句は本物。
## [Bose QuietControl 30](https://www.bose.co.jp/ja_jp/products/headphones/earphones/quietcontrol-30.html)
ノイズキャンセラー付きイヤホン QuietComfort 20の後継機種。ワイヤレス化して、取り回しがよくなった。QuietControlの名の通り、ノイズキャンセリングの度合いを調整するボタンが搭載された。しかし、実際のところ最大と最小しか使わないので、ボタンを押す手間がかえって不便に感じる。
ノイズキャンセラー付きイヤホン QuietComfort 20 の後継機種。ワイヤレス化して、取り回しがよくなった。QuietControl の名の通り、ノイズキャンセリングの度合いを調整するボタンが搭載された。しかし、実際のところ最大と最小しか使わないので、ボタンを押す手間がかえって不便に感じる。
## [Apple Watch series 2 Nike+](http://www.apple.com/jp/shop/buy-watch/apple-watch-nike/%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%B0%E3%83%AC%E3%82%A4-%E3%82%A2%E3%83%AB%E3%83%9F%E3%83%8B%E3%82%A6%E3%83%A0-%E3%83%96%E3%83%A9%E3%83%83%E3%82%AF-%E3%83%9C%E3%83%AB%E3%83%88-%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%84%E3%83%90%E3%83%B3%E3%83%89?preSelect=false&product=MP0J2J/A&step=detail#)
初代Apple Watchから買い換えた。毎日のように改札やコンビニで裏拳している。
初代 Apple Watch から買い換えた。毎日のように改札やコンビニで裏拳している。
スペックアップの恩恵はあまり感じない。
アルミブラックに合う[42mmケース用ミッドナイトブルーレザーループ](http://www.apple.com/jp/shop/product/MLHM2FE/A/42mm%E3%82%B1%E3%83%BC%E3%82%B9%E7%94%A8%E3%83%9F%E3%83%83%E3%83%89%E3%83%8A%E3%82%A4%E3%83%88%E3%83%96%E3%83%AB%E3%83%BC%E3%83%AC%E3%82%B6%E3%83%BC%E3%83%AB%E3%83%BC%E3%83%97-l)を買った。
アルミブラックに合う[42mm ケース用ミッドナイトブルーレザーループ](http://www.apple.com/jp/shop/product/MLHM2FE/A/42mm%E3%82%B1%E3%83%BC%E3%82%B9%E7%94%A8%E3%83%9F%E3%83%83%E3%83%89%E3%83%8A%E3%82%A4%E3%83%88%E3%83%96%E3%83%AB%E3%83%BC%E3%83%AC%E3%82%B6%E3%83%BC%E3%83%AB%E3%83%BC%E3%83%97-l)を買った。
[Belkin Valet Charge Dock for Apple Watch + iPhone](http://www.apple.com/jp/shop/product/HJC92PA/A/belkin-valet-charge-dock-for-apple-watch-iphone)はiPhoneとApple Watchを同時に充電できる。デザインも良い。
[Belkin Valet Charge Dock for Apple Watch + iPhone](http://www.apple.com/jp/shop/product/HJC92PA/A/belkin-valet-charge-dock-for-apple-watch-iphone)は iPhone Apple Watch を同時に充電できる。デザインも良い。
## [M-Audio Keystation 88](http://m-audio.com/products/view/keystation-88)
88鍵MIDIキーボード。Oxygen 88が壊れたので同じメーカーの別製品に買い替えた。Oxygen 88の重さ(21kg)に懲り、持ち運びが容易な鍵盤を選んだ。
88 MIDI キーボード。Oxygen 88 が壊れたので同じメーカーの別製品に買い替えた。Oxygen 88 の重さ(21kg)に懲り、持ち運びが容易な鍵盤を選んだ。
## [BALMUDA The Pot](https://www.balmuda.com/jp/pot/)
トースターで有名なBALMUDAが11月に出した電気ケトル。お茶を飲むときしか使わないので0.6Lでも十分だと感じた。注ぎ口の切れが良く、気に入っている。
トースターで有名な BALMUDA 11 月に出した電気ケトル。お茶を飲むときしか使わないので 0.6L でも十分だと感じた。注ぎ口の切れが良く、気に入っている。
## [Z-LIGHT LED デスクライト](https://www.amazon.co.jp/gp/product/B00J2R0DEU/ref=oh_aui_detailpage_o06_s00?ie=UTF8&psc=1)
Pixarのロゴに付属しているデスクライトみたいなフォルム。フィリップスのHueに付け替えて使用している。
Pixar のロゴに付属しているデスクライトみたいなフォルム。フィリップスの Hue に付け替えて使用している。
## [IRKit](http://getirkit.com/)
平たく言うと、DIYな学習リモコン。[Raspberry Pi](https://www.raspberrypi.org/)と[homebridge](https://github.com/nfarina/homebridge)を組み合わせて、HomeKitに対応させた。
平たく言うと、DIY な学習リモコン。[Raspberry Pi](https://www.raspberrypi.org/)と[homebridge](https://github.com/nfarina/homebridge)を組み合わせて、HomeKit に対応させた。
Siriに「暖房をつけて」と尋ねるだけで済むというのは、中々近未来を感じさせる。
Siri に「暖房をつけて」と尋ねるだけで済むというのは、中々近未来を感じさせる。
## [Knirps Fiber T2 Duomatic](http://www.knirps.jp/product.html)
@ -52,53 +52,53 @@ Siriに「暖房をつけて」と尋ねるだけで済むというのは、中
## [Shure MOTIV MV88](https://www.shure.co.jp/go/motiv-mic/jp/mv88/)
非常にコンパクトなコンデンサーマイク。Lightning端子を備えており、iPhone/iPadに繋いで録音ができる。
非常にコンパクトなコンデンサーマイク。Lightning 端子を備えており、iPhone/iPad に繋いで録音ができる。
## [LEZYNE CNC Floor Drive ABS2](http://www.wiggle.jp/lezyne-cnc-floor-drive-abs2-%E3%83%95%E3%83%AD%E3%82%A2%E3%83%9D%E3%83%B3%E3%83%97/)
デザインと機能性が両立した自転車の空気入れ。仏式と米式バルブに対応している。回転するねじ込みノズルが特徴的で、BROMPTONのような小口径タイヤを持つ自転車でも問題なく使える。
デザインと機能性が両立した自転車の空気入れ。仏式と米式バルブに対応している。回転するねじ込みノズルが特徴的で、BROMPTON のような小口径タイヤを持つ自転車でも問題なく使える。
## [iPad Pro 9.7 インチ](http://www.apple.com/jp/ipad-pro/)
[Apple Pencil](http://www.apple.com/jp/shop/product/MK0C2J/A/ipad-pro%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEapple-pencil)との組み合わせがとても良い。ノートを書いたり、絵を描くのに使っている。
スタンドは、Twelve Southの[Compass 2](http://www.apple.com/jp/shop/product/HF022ZM/B/twelve-south-compass-2-stand-for-ipad)を使っている。折りたたむとApple Pencil2本分くらいに小さくなる。
スタンドは、Twelve South の[Compass 2](http://www.apple.com/jp/shop/product/HF022ZM/B/twelve-south-compass-2-stand-for-ipad)を使っている。折りたたむと Apple Pencil2 本分くらいに小さくなる。
これはあってもなくてもいい。
## [Anker PowerPort 4](https://www.amazon.co.jp/gp/product/B00VTJS58U/ref=oh_aui_detailpage_o04_s00?ie=UTF8&psc=1)
旅の友。嵩張らず、4つのUSBポートが使える。
旅の友。嵩張らず、4 つの USB ポートが使える。
## [Kindle Voyage Wi-Fi + 3G](https://www.amazon.co.jp/gp/product/B00GMUPAIO/ref=oh_aui_detailpage_o01_s01?ie=UTF8&psc=1)
Amazonの電子書籍リーダー。特殊な電子インクディスプレイを備えており、長時間の読書にも(目が)耐えうる。
Amazon の電子書籍リーダー。特殊な電子インクディスプレイを備えており、長時間の読書にも(目が)耐えうる。
今買うなら、PaperwhiteやOasisでも良い。
今買うなら、Paperwhite Oasis でも良い。
# Webサービス
# Web サービス
## [Spotify](https://www.spotify.com/jp/)
洋楽やポップスが多めの音楽ストリーミングサービス。Apple Musicのアクティビティプレイリストを前面に押し出したようなサービス。無料プランもあるが、プレミアムになると高音質なオフライン再生も出来る。
洋楽やポップスが多めの音楽ストリーミングサービス。Apple Music のアクティビティプレイリストを前面に押し出したようなサービス。無料プランもあるが、プレミアムになると高音質なオフライン再生も出来る。
## [Moneytree](https://moneytree.jp/)
良くデザインされた家計簿アプリ。懸念すべきは、Web版に2段階認証が採用されていないところ。
良くデザインされた家計簿アプリ。懸念すべきは、Web 版に 2 段階認証が採用されていないところ。
## [Flipboard](https://flipboard.com/)
雑誌のようにパラパラめくれるレイアウトのニュースリーダー。惜しむべくはFeedlyとの連携が欠けていることか。
雑誌のようにパラパラめくれるレイアウトのニュースリーダー。惜しむべくは Feedly との連携が欠けていることか。
## [Namecheap](https://www.namecheap.com/)
ドメインレジストラ。お名前.comからiwantmyname、そしてNamecheapへと移行してきた。この手のサービスにしては良くデザインされており、使いやすい。
ドメインレジストラ。お名前.com から iwantmyname、そして Namecheap へと移行してきた。この手のサービスにしては良くデザインされており、使いやすい。
一度転送でトラブルがあり、カスタマーサポートのお世話になったことがあったが、しっかりとした仕事をしてくれた。
## [CloudFlare](https://www.cloudflare.com/)
DNSサービス。このサイトのドメインもお世話になっている。
DNS サービス。このサイトのドメインもお世話になっている。
## [Heroku](https://www.heroku.com/)
@ -128,9 +128,9 @@ PaaS。`git push`したと思ったらもうサービスがデプロイされて
## [月は無慈悲な夜の女王](https://www.amazon.co.jp/gp/product/B00DM4ZH3Q/ref=oh_aui_d_detailpage_o01_?ie=UTF8&psc=1)
今NetflixオリジナルでやっているEXPANSEに原書があるとすれば、これになるのだろうか。
Netflix オリジナルでやっている EXPANSE に原書があるとすれば、これになるのだろうか。
## [華氏451度](https://www.amazon.co.jp/gp/product/B00MHLSAUC/ref=oh_aui_d_detailpage_o06_?ie=UTF8&psc=1)
## [華氏 451 度](https://www.amazon.co.jp/gp/product/B00MHLSAUC/ref=oh_aui_d_detailpage_o06_?ie=UTF8&psc=1)
焚書が地方公務員の仕事になった世界の話。

View File

@ -3,12 +3,12 @@ title: 海外旅行におけるSIMカードの選択
date: 2017-02-02 00:20:00 +09:00
---
世界中で3G通信が出来る[GigSky](http://www.gigsky.jp)のSIMを3日間の台湾旅行で使ってみました。
世界中で 3G 通信が出来る[GigSky](http://www.gigsky.jp)の SIM 3 日間の台湾旅行で使ってみました。
GigSkyでは、その国の最初のアクティベーションに限り、3日・100MB分が無料で使えるので、今回の旅行では課金をせずにSIMを使うことが出来ました。
GigSky では、その国の最初のアクティベーションに限り、3 日・100MB 分が無料で使えるので、今回の旅行では課金をせずに SIM を使うことが出来ました。
料金設定は現地で購入できるSIMと比べてかなり高く、旅行先で都度SIMを購入する手間とのトレードオフとなります。
料金設定は現地で購入できる SIM と比べてかなり高く、旅行先で都度 SIM を購入する手間とのトレードオフとなります。
GigSkyアプリをインストールしておくと、データ残量が半分以下になったタイミングでプッシュ通知を飛ばしてくれます。また、データ通信枠をトップアップする仕組みなので、追加データ枠の購入さえしなければ余計な課金をせずに済むという利点があります。
GigSky アプリをインストールしておくと、データ残量が半分以下になったタイミングでプッシュ通知を飛ばしてくれます。また、データ通信枠をトップアップする仕組みなので、追加データ枠の購入さえしなければ余計な課金をせずに済むという利点があります。
ただ、やはり価格設定が高めなのに加えて現地でのSIM購入はそこまで苦ではないので、3日以上の旅行で使う機会は無いでしょう。
ただ、やはり価格設定が高めなのに加えて現地での SIM 購入はそこまで苦ではないので、3 日以上の旅行で使う機会は無いでしょう。

View File

@ -3,27 +3,33 @@ title: Markdownフレンドリーなノートアプリ
date: 2017-02-13 21:52:00 +09:00
---
GFMが書けて、UIデザインが秀逸なノートアプリを紹介します。
GFM が書けて、UI デザインが秀逸なノートアプリを紹介します。
# ノートアプリの種類
ノートアプリには大きく分けて2種類があります。それはNotesのようにノートを一箇所にまとめて管理するシングルトンタイプと、TextEditのように、テキストファイル別にウィンドウが開くタイプです。
この記事では、前者をNotesタイプ、後者をTextEditタイプと呼称してアプリを区別したいと思います。
ノートアプリには大きく分けて 2 種類があります。それは Notes のようにノートを一箇所にまとめて管理するシングルトンタイプと、TextEdit のように、テキストファイル別にウィンドウが開くタイプです。
この記事では、前者を Notes タイプ、後者を TextEdit タイプと呼称してアプリを区別したいと思います。
# Notesタイプのアプリ
# Notes タイプのアプリ
## Notion
<https://notion.so>
サンフランシスコのNotion Lab社が開発する多機能ノートアプリです。Web版、iOS/Android版とMac版が用意されており、Markdownライクな記法で自由度の高いノートテイキングが出来ます。
サンフランシスコの Notion Lab 社が開発する多機能ノートアプリです。Web 版、iOS/Android 版と Mac 版が用意されており、Markdown ライクな記法で自由度の高いノートテイキングが出来ます。
## Bear
<http://www.bear-writer.com>
北イタリア産のノートアプリです。記事中に __ハッシュタグ__ を書き込むと、リストでまとめてくれる機能が秀逸です。
iCloudを使って、macOSとiOSアプリの間でノートを同期することが出来ます。
北イタリア産のノートアプリです。記事中に **ハッシュタグ** を書き込むと、リストでまとめてくれる機能が秀逸です。
iCloud を使って、macOS と iOS アプリの間でノートを同期することが出来ます。
## SnippetsLab
<https://www.renfei.org/snippets-lab/>
正確にはスニペット管理アプリですが、Markdown+MathJax をサポートしており、数式を使ったメモを書くことが出来ます。
## Inkdrop
@ -31,10 +37,10 @@ iCloudを使って、macOSとiOSアプリの間でノートを同期すること
個人開発のノートアプリです。プラグインにより多くの機能を追加することが出来ます。
# TextEditタイプのアプリ
# TextEdit タイプのアプリ
## Typora
<https://typora.io>
エディタとプレビューが一体化したタイプのエディタです。これ以外にお勧めできるアプリはありません
エディタとプレビューが一体化したタイプのエディタです。左右分割よりも WYSIWYG エディタの方がわかりやすい派なので、これ一択です

View File

@ -3,15 +3,15 @@ title: Install NVIDIA GeForce GTX TITAN X in MacPro Early 2008
date: 2017-02-13 14:20:00 +09:00
---
MacPro Early 2008 という骨董品にNVIDIA Titan X (Maxwell)を積んだところ、いくつかの問題にぶつかりました。この記事でそれらの問題と解決策について書きます。
MacPro Early 2008 という骨董品に NVIDIA Titan X (Maxwell)を積んだところ、いくつかの問題にぶつかりました。この記事でそれらの問題と解決策について書きます。
# NVIDIAドライバーが非対応
# NVIDIA ドライバーが非対応
あまりにも古いアーキテクチャのMacProに対してNVIDIAのグラフィックドライバーが対応していません。
あまりにも古いアーキテクチャの MacPro に対して NVIDIA のグラフィックドライバーが対応していません。
そこで、適切なバージョンの[NVIDIA Web Driver](http://www.macvidcards.com/drivers.html)をインストールすることでこれを解決しました。
これには問題もあります。macOSのアップデートをインストールするたびに、それに対応したドライバーを都度インストールする必要がありました。
これには問題もあります。macOS のアップデートをインストールするたびに、それに対応したドライバーを都度インストールする必要がありました。
ドライバーをインストールするまでは画面に何も映りません。そこで、pkg形式のドライバーを`scp`でMacProに転送して、`installer`を使ってドライバーをインストールすることにしました。
ドライバーをインストールするまでは画面に何も映りません。そこで、pkg 形式のドライバーを`scp` MacPro に転送して、`installer`を使ってドライバーをインストールすることにしました。
```
scp driver.pkg MacPro.local:~
@ -21,7 +21,7 @@ sudo installer -pkg ./driver.pkg -target /
# 電源ユニット(PSU)のパワー不足
TITAN X(Maxwell)が要求するパワーをMacProのPSUは提供することが出来ません。
そこで、秋葉原のPCパーツショップで追加のPSUを購入して、GPU専用の電源として使いました。
ここで新たな問題が生まれます。正しくパワーを提供するためにはMacProのPSUと追加のPSUを同期させる必要があり、またそれを実現するパーツもあるのですが、場合によってはGPUを破損してしまう危険性がありました。
TITAN X(Maxwell)が要求するパワーを MacPro PSU は提供することが出来ません。
そこで、秋葉原の PC パーツショップで追加の PSU を購入して、GPU 専用の電源として使いました。
ここで新たな問題が生まれます。正しくパワーを提供するためには MacPro PSU と追加の PSU を同期させる必要があり、またそれを実現するパーツもあるのですが、場合によっては GPU を破損してしまう危険性がありました。
今回は電源を同期することは見送り、個別にスイッチを入れることで解決しました。

View File

@ -42,4 +42,4 @@ python3 -m venv venv
source ./venv/bin/activate
```
then `venv` will creates virtual envs on __./venv__ folder on the root of your project.
then `venv` will creates virtual envs on **./venv** folder on the root of your project.

View File

@ -1,67 +1,63 @@
---
---
@import url(https://fonts.googleapis.com/css?family=PT+Serif:400,700);
@import url(https://fonts.googleapis.com/css?family=PT+Serif:400, 700);
$break-small: 500px;
$break-large: 840px;
body {
width: 800px;
margin: 0 auto;
padding: 0 20px;
font-family: 'PT Serif', "ヒラギノ明朝 ProN", "Hiragino Mincho ProN", serif;
font-family: 'PT Serif', 'ヒラギノ明朝 ProN', 'Hiragino Mincho ProN', serif;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
font-feature-settings: 'kern', 'palt', 'pwid';
-webkit-font-feature-settings: 'kern', 'palt', 'pwid';
-moz-font-feature-settings: 'kern', 'palt', 'pwid';
-moz-font-feature-settings: 'kern=1', 'palt', 'pwid';
@media screen and (max-width: $break-large) {
width: auto;
margin: 0;
}
}
// MathJax
#MathJax_Message {
display: none;
}
// Highlight.js
} // Highlight.js
.hljs {
border: 1px solid #d7d7d7;
border-radius: 3px;
background-color: #fff;
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-size: 14px;
padding: 12px 16px;
line-height: 1.8em;
}
code {
padding: 0 12px;
}
p code {
padding: 3px 10px;
background: #f6f6f6;
border-radius: 3px;
font-size: 16px;
}
a:hover, a:active, a:link, a:visited {
a:hover,
a:active,
a:link,
a:visited {
color: black;
text-decoration: none;
}
h1, h2, h3, h4, p {
h1,
h2,
h3,
h4,
p {
margin: 0;
padding: 0;
line-height: 1.333em;
}
hr {
display: block;
width: 100%;
@ -70,7 +66,6 @@ hr {
border: 0;
margin: 40px 0;
}
.header {
display: flex;
flex-wrap: wrap;
@ -78,42 +73,34 @@ hr {
align-items: center;
padding: 5px 0;
border-bottom: 1px solid #efefef;
@media screen and (max-width: $break-small) {
justify-content: center;
}
.logo {
font-size: 24px;
font-weight: bold;
margin: 10px 0 10px;
}
.menu {
list-style: none;
padding: 8px 0;
display: flex;
flex-flow: row wrap;
.menu__item:not(:last-child) {
margin-right: 20px;
}
@media screen and (max-width: $break-small) {
padding: 0;
margin: 10px 0;
}
}
}
.metro {
text-align: center;
padding: 80px 0 40px;
.logo {
font-size: 60px;
}
.menu {
list-style: none;
padding: 8px 0;
@ -122,19 +109,15 @@ hr {
justify-content: center;
margin-top: 20px;
font-size: 20px;
.menu__item:not(:last-child) {
margin-right: 20px;
}
}
@media screen and (max-width: $break-small) {
padding: 50px 0 40px;
.menu {
font-size: 15px;
}
}
}
@import 'post'
@import 'post';