OmniAICreator/Qiita-1.07M huggingface dataset:
【Yosemite】 認証画面の文字化け

#現象
MacをYosemiteにしてからパスワードとか入れるダイアログで文字化けしてしまい困っていた

#原因
フォントの重複なので、これを解決すれば良い

##解決方法

1. Font Bookを起動
2. Command+Aで全選択
3. 右クリック＞重複を解決

参考：[【Mac OSX】Yosemiteにおける認証ダイアログ（キーチェーン系）が文字化けする場合の解決法 | Crazy One - glad design blog -](http://gladdesign.net/2015/03/10/mac-osx-keychain-dialog-mojibake-approach/)
Chrome 41だとflex justify-content: centerを上書きしてspace-betweenとかすると始点がおかしくなる。

↓みたいな感じで、ベースのクラスに`justify-content:center`つけてるけど、一部`space-between`にしたいんだよねって時に

```css
.flex-base {
  color: #fff;
  display: flex;
  margin: 15px auto 0;
  justify-content: center;
}

.flex--justify {
  justify-content: space-between;
}
```

```html
  <div class="flex-base flex--justify">
    <div class="flex__item">A</div>
    <div class="flex__item">B</div>
  </div>
```


DEMO:

http://codepen.io/st44100/pen/ZYmbgj


↓Chrome 41だと崩れる。


![chrome41.png](https://qiita-image-store.s3.amazonaws.com/0/2204/44b478de-dfce-29ab-7b0d-cb61c0ff0a4a.png)

↓Chrome 43だとOK

![Chrome_canary.png](https://qiita-image-store.s3.amazonaws.com/0/2204/4af456a0-8444-dd85-c59e-be00b24ebe32.png)



↓Vivaldiもついでに崩れてる。

![Vivaldi.png](https://qiita-image-store.s3.amazonaws.com/0/2204/9bab384a-4a59-0e66-6f4a-d47bca40aceb.png)

↓　Safari 7.1.3
![safari.png](https://qiita-image-store.s3.amazonaws.com/0/2204/dae3b8f2-f08b-0a4c-0431-5ea9ef72450a.png)

↓Firefox 36
![firefox.png](https://qiita-image-store.s3.amazonaws.com/0/2204/f3858a96-d2bd-683c-24a2-091cf3f50995.png)


Stack overflow探すと案の定

http://stackoverflow.com/questions/28203658/chrome-not-properly-overriding-justify-content-for-flex-box/28204601#28204601

Chrome 42ではなおるから安心してだって

つらい・・・ :cry:
zshの連想配列の使い方まとめ

zshでは連想配列が使える。でも、普通のプログラム言語と違ってちょっと癖があるので、ここで使い方についてまとめてみる。

## 宣言
連想配列は必ずtypesetかlocalで宣言が必要になる。`typeset -A`または`local -A`という形で宣言する。

```zsh
# ローカル変数として宣言する
local -A hash1
# または
typeset -A hash2
```

```zsh
# グローバル変数として宣言する
typeset -g -A hash1
```

連想配列に限らないことだけど、関数の中でtypesetで宣言した場合は関数内のローカル変数になる。typesetで宣言しつつグローバル変数にしたい場合は-gオプションを付ける。

## 代入

連想配列全体に値を代入するには、カッコでくくって、「キー」「値」の順にスペース区切りで並べて書く。

```zsh
typeset -A user1
user1=(id 13 name mollifier address Kobe)
# { id => 13, name => mollifier, address => Kobe } という連想配列になる

# カッコだけ書くと空の連想配列になる
typeset -A empty_hash
empty_hash=()
```

## 要素の参照

連想配列の各要素を参照する方法はこんな感じ。

```zsh
typeset -A user1
user1=(id 13 name mollifier address Kobe)

echo $user1[id] #=> 13
echo $user1[name] #=> mollifier

# {}で囲っても良い
echo ${user1[address]} #=> Kobe
```

要素全体を参照する方法は以下。

```zsh
# [@]または[*] で値全体の配列になる
echo $user1[@] #=> Kobe 13 mollifier
echo $user1[*] #=> Kobe 13 mollifier

# [@]と[*]は"で囲んだときに違いが出る
# [@]は各要素がそれぞれ"で囲まれる
# [*]は要素全体が"で囲まれて一つの文字列になる(echoでは違いがわからないけど)
echo "$user1[@]" #=> "Kobe" "13" "mollifier"
echo "$user1[*]" #=> "Kobe 13 mollifier"

# $user1[*]は省略して$user1と書ける
echo $user1 #=> Kobe 13 mollifier

# (k)を付けると、すべてのキーを含む配列になる
echo ${(k)user1} #=> address id name

# (kv)を付けると、キー、値、と順に並べた配列になる
echo ${(kv)user1} #=> address Kobe id 13 name mollifier

# 要素数(キー/値の組の数)も取得できる
echo ${#user1} #=> 3
```

## 追加、変更、削除

キーを指定して値の追加、変更、削除ができる。

```zsh
typeset -A user1
user1=(id 13 name mollifier address Kobe)
# この時点では { id => 13, name => mollifier, address => Kobe }

# 追加
user1[age]=17
# この時点 { id => 13, name => mollifier, address => Kobe, age => 17 } になる

# 変更
# すでに存在するキーに対して値を代入すると、値の変更になる
user1[age]=27
# この時点 { id => 13, name => mollifier, address => Kobe, age => 27 } になる

# 要素の削除("で囲む必要があることに注意)
unset "user1[address]"
# この時点 { id => 13, name => mollifier, age => 27 } になる
```

## ループ
ループしたいときは、`${(k)連想配列名}`のかたちですべてのキーを取り出してそれでループする。

```zsh
typeset -A user1
user1=(id 13 'super name' 'super mollifier' address Kobe)

for key in ${(k)user1}; do
  echo "$key => $user1[$key]"
done
# 出力
# super name => super mollifier
# address => Kobe
# id => 13
#
# キーや値に空白が入っていても大丈夫
```

## キーを持つかどうかのチェック
`${連想配列名[(i)キー名]}`という形で、「キー名」にマッチするキーが文字列として取得できる。もしキーが見つからなかったら空文字列になる。これで、連想配列に特定のキーが含まれているかどうかがチェックできる(他の言語でいうところのhas_keyのようなやつ)。

```zsh
typeset -A user1
user1=(id 13 name mollifier empty '' address Kobe)

# 指定したキーが含まれる場合
if [[ -n "${user1[(i)id]}" ]]; then
  echo "user1 has id"
else
  echo "user1 doesn't have id"
fi
#=> user1 has id

# 指定したキーが含まれない場合
if [[ -n "${user1[(i)hoge]}" ]]; then
  echo "user1 has hoge"
else
  echo "user1 doesn't have hoge"
fi
#=> user1 doesn't have hoge

# 値が空文字列でもキーが存在するかどうかがチェックできる
if [[ -n "${user1[(i)empty]}" ]]; then
  echo "user1 has empty"
else
  echo "user1 doesn't have empty"
fi
#=> user1 has empty
```

この`(i)`は、代わりに`(I)`と書いても同じ意味になる。

こんな感じでzshの連想配列が使えるので、試してみてください!
netctlでwi-fiに接続できなかった場合 2015.03


```bash:ArchLinux
$ sudo pacman -S downgrade

$ downgrade netctl

1) netctl-1.10-1-any.pkg.tar.xz (local)
2) netctl-1.9-1-any.pkg.tar.xz (remote)
3) netctl-1.8-1-any.pkg.tar.xz (remote)

3<Enter>

ダウングレード netctl
```

`netctl-1.8`を使いましょう。

(最近、`Network-Manager`推しの流れが強いのかなあ...でも、オススメは`netctl`なのです)

```bash:
$ netctl list

$ sudo netctl start wlan0xxxxxx

または、

$ sudo netctl start `find /etc/netctl/wlp* | cut -d / -f4`
$ sudo netctl start `find /etc/netctl/wlan* | cut -d / -f4`
```

見ての通り、`/etc/netctl/`を探すと良いです。

こんな感じの設定を書いておけば便利かもしれません。下記を見てもらえれば分かるかもしれませんが、`netctl-auto`は今年の1,2月頃に使えなくなっていたのを確認しています。

```bash:~/.zshrc
nn (){
    case $OSTYPE in
        linux*)
            #netctl-auto list
            netctl list
            #key=`netctl-auto list | cut -b 1`
            key=`netctl list | grep wlp | cut -b 1`
            case $key in
                #'*') netctl-auto disable-all ;;
                '*') sudo netctl stop-all ;;
                #'!') netctl-auto enable-all ;;
                *) sudo netctl start `find /etc/netctl/wlp* | cut -d / -f4` ;;
            esac
    ;;
    esac
}
```

##追記

`netctl-1.10-any`にて動作するのを確認しました。


```bash:
$ sudo vim /etc/pacman.conf

$ sudo pacman -Syu
or
$ sudo pacman -S netctl

$ ifconfig -a

$ sudo ifconfig wlan0 down

$ sudo netctl start xxxxxxxxx
```
macでscrapyをpipでインストールしたら動かなかった時の対処



普通にpipを使ってscrapyをインストールしたら以下のエラーが出てうんともすんとも行かない状態になったので対処方法をまとめておく

```
cffi.ffiplatform.VerificationError: importing '/PATH/.virtualenvs/hoge/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_f3e4673fx399b1113.so': dlopen(/PATH/.virtualenvs/hoge/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_f3e4673fx399b1113.so, 2): Symbol not found: _CRYPTO_malloc_debug_init
  Referenced from: /PATH/.virtualenvs/hoge/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_f3e4673fx399b1113.so
  Expected in: flat namespace
 in /PATH/.virtualenvs/hoge/lib/python2.7/site-packages/cryptography/_Cryptography_cffi_f3e4673fx399b1113.so
```

原因
---

opensslをmacports経由でインストールしていたので、cryptographyでopensslのリンクが上手いことできなくなるのが原因っぽい

対処
---

pipでライブラリをインストールする際にmacportsのlibを使うように指定する。

``` python
# 普通にscrapyを入れる
pip install scrapy

# cryptographyを一度消す
pip uninstall cryptography

# macportsのlibとかを使うように指定して入れなおす
ARCHFLAGS="-arch x86_64" LDFLAGS="-L/opt/local/lib" CFLAGS="-I/opt/local/include" pip install cryptography
```
WebBrowserコントロールのレンダリングモードを変更するには？

"このサイトは Internet Explorer xx 以上で..." に対応する方法。

WPFやWindows.Formsで`WebBrowser`コントロールのレンダリングモード(バージョン)を変更するには、レジストリ *FEATURE_NATIVE_DOCUMENT_MODE* に実行ファイル名とモード指定値をセットします。

```
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_BROWSER_EMULATION
                     MyApp.exe = (DWORD) 00009000
```

モード指定値に使用可能な値は、Internet Explorer Dev Center の以下のページから *Browser Emulation* の項を参照してください。

[Internet Feature Controls (B..C) (Internet Explorer)](https://msdn.microsoft.com/en-us/library/ie/ee330730%28v=vs.85%29.aspx)

---
</br>

```c#:
// C#でレジストリに値をセットするサンプル
string key = @"HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION";
string valueName = Process.GetCurrentProcess().ProcessName + ".exe";
int value = 9000; // Rendering mode IE9

Registry.SetValue(key, valueName, value, RegistryValueKind.DWord);
```
Visual Studioでのデバッグ時は、`MyApp.vshost.exe`といったように実行がファイル名に "vshost" が付くことに注意しましょう。

## 参考

[Internet Feature Controls (B..C) (Internet Explorer)](https://msdn.microsoft.com/en-us/library/ie/ee330730%28v=vs.85%29.aspx)

[WebBrowser Control Rendering Modes in IE8](http://blogs.msdn.com/b/ie/archive/2008/03/18/webbrowser-control-rendering-modes-in-ie8.aspx)
Herokuへ定期的にアクセスしてスリープさせないアプリ「heroku patroller」を作りました。

### ※ この情報は今は使えません。

Herokuの無料版は1日に6時間は必ずスリープするようになりました。

参考
http://sideci.hatenablog.com/entry/2015/05/08/094043

なのであー昔はこんなことができたんだなーとか、
ポーリングってこうやってやるんだなーとか、
Railsの勉強位の認識で見ていただければと思います。

### はじめに

HerokuのRailsアプリは一定時間アクセスが無いとスリープしてしまいます(確か30分)。
そこでスリープをさせないために定期的に登録したURLにアクセスするWebアプリを作りました。

ソースコードのURLはこちら↓で
https://github.com/yoshioota/heroku-patroller
このページのDeploy to Herokuボタンを押していただければあなたのHeroku Appliとしてデプロイが可能となってます。

http://www.eigotype.com/ で使うために作りました！
英語を学習している方はぜひこちらもお試しいただければと、

※ New Relic のping機能でも同じことはできるんですけどね、つい。

### 開発環境

rails 4.2.0
ruby 2.2.1

### 開発用の定番gem

以下の3つは特におすすめで、これが無いと開発効率が90%はダウンします。
ぜひ皆さんも使ってみていただければと思います。

```
better_errors, binding_of_caller
rails-footnotes
guard-livereload
```

### ソースコードの説明

#### app/utils 系と app/services 系フォルダを作成し、そこの下に対象ソースを置く

* app/utils/*** 以下

いわゆる便利系クラスでコピれば他でも使えそうなクラスを置いてあります。

* app/services/*** 以下

いわゆるサービスクラス系を置いてあります。
例えば複数のモデルが関係して、どちらのモデルに置くか迷ったりしたものはserviceとして切り出し、とりあえずここへ置いておくのがマイブームです。

### パンくずとベーシック認証

concern にて切り出してapplication_controller.rbにてinclude。
こうしておくと別プロジェクトで利用するときもファイルのコピペができて便利。

BASIC認証
https://github.com/yoshioota/heroku-patroller/blob/master/app/controllers/concerns/basic_auth_concern.rb

パンくず
https://github.com/yoshioota/heroku-patroller/blob/master/app/controllers/concerns/simple_breadcrumbs.rb

### Deploy to Heroku button とその設定

当アプリのapp.jsonが以下で、addonの追加とrake db:migrateが設定されています。

https://github.com/yoshioota/heroku-patroller/blob/master/app.json

ここを参考に設定しました。

https://devcenter.heroku.com/articles/app-json-schema

### 使用上の注意

同一URLへは9分間はキャッシュする実装をしていますが、ドメインは考慮していません。
なので同一ドメインで利用する場合はよくよく注意して下さい。
自分が関係するプロジェクトだけに利用するのが良いかと思います。
図書管理システム karitakke 概要


研究室に本が増えてきて、管理が難しくなってきたので本を管理するシステムを作ろうと思います。

## システム名
karitakke(仮)

## 要求定義
 - 研究室にある本を登録・管理し、検索できる
 - 貸出管理ができる

## 基本的な機能
### 一般ユーザ
 - 本の貸出・返却処理
 - 本の検索（どこの部屋にあるか、誰が借りているか）

### 管理者
 (一般ユーザの機能に加えて)
 
 - 本の登録・削除
 - ユーザの管理
 - 貸出図書一覧表示

## 詳細な機能
### 貸出・返却機能について
バーコードリーダーでISBNを読み取って、貸出・返却処理を行う（手打ちでも可）

### 本の登録
バーコードリーダーでISBNを読み取って、AmazonAPIから本の情報を取得して登録を行う

## 開発環境
 - Mac OS X 10.10.2
 - Rails 4.2.0
 - Ruby 2.2.1p85
 - gem 2.4.5
 - bundle 1.8.5
 - rbenv 0.4.0
 - rake 10.4.2
Arda@0.13&BabelでHello, World

バージョンを上げたら動かなかったので備忘録。

```js
window.React = require('react');
window.Promise = require('bluebird');
import {Context, DefaultLayout, Router, mixin} from 'arda';

var App = React.createClass({
    mixins: [mixin],
    render: ()=> {
        return <h1>Hello, World.</h1>;
    }
});

class AppContext extends Context {
    get component() { return App; }
}

window.addEventListener('DOMContentLoaded', ()=> {
    let router = new Router(DefaultLayout, document.body);
    router.pushContext(AppContext, {});
});
```

大きいところでは、Arda.Componentが無くなったこと。React側がES6のclassではmixinをサポートしない件の絡みだと思われ。あとは、~~static~~ get component()と、staticでなくなったとか、Arda.\*と書けなくなったとか？(ES6の文法は詳しくないので書き方の問題かもしれない)

今までの記事のコードは直すとしても時間が掛かるので、取り急ぎ。
capistrano3のdeployが「SSHKit::Command::Failed: rake stdout: Nothing」だった時にやったこと

Rails4+capistrano3で自動デプロイする際に
とてもとてもつまずいていたので、備忘録的に残しときます。
結論から言うと長い処理の途中で「ssh connection closed」されちゃったら、
「set :pty, true」されているか確認しましょう。というお話。

## 対象
「コンソールで手動ではデプロイできるんだけど、自動化(サーバ起動時、定期実行等)したら、
assets:compileでずっと止まったままなんだけど、どうしたら良いの」な人

## 環境
Linux(Amazon Linux)
Rail 4.0.*
Capistrano 3.1

## 1. sshd_configにClientAliveIntervalを設定する
>SSHコマンドでKeepAliveするにはどうすればいいのでしょうか
http://takuya-1st.hatenablog.jp/entry/20110429/1304102944

私のケースではClientAliveIntervalだけ設定でいけました
<pre>
# vi /etc/ssh/sshd_config
ClientAliveInterval 60
</pre>

## 2. deploy.rbにset :pty, trueを追加
>Capistrano3を最後にもう一度だけ懇切丁寧にまとめてみる
http://chroju89.hatenablog.jp/entry/2014/04/12/215628
<pre>
vi deploy.rb 以下をを追記
set :pty, true
</pre>

## 3. It's ready!
以上の設定を適用した所で、deployさせてみます。
すると「assets:compile」の途中で一度cpu使用率が1桁台になります。

すわ「コネクションが切れたか！」状態になるかと思いますが、
数秒~数十秒後に復活(?)しますので、killせずにお待ちください。
GoとGoogle App EngineでBackLogの鬼メールから解放される方法


## 何がしたい?
タスク管理をBacklogでやってるプロジェクトの場合、バンバンメールが飛びまくってしまう&メールのフィルタリングがしづらいのでメールの山になってしまうのがいまいちです(自分とそんなに関係ない細かい会話まで全部見るのはちょっと)。そこで、自分と関係ありそうな通知だけをある程度まとめてslackに流すボットを作ります。

![通知.png](https://qiita-image-store.s3.amazonaws.com/0/12850/e773ffb0-5b4d-3732-9941-b064a7828044.png "通知.png")


## なぜGo
以前javaでGAEのアプリ作ろうとしたときに、手順のあまりのめんどくささに挫折した記憶があるので、シンプルなGoでリベンジです。(appengine-web.xmlとか、web.xmlとか、、。そもそもGetしてPostするだけのクソアプリを作るのにeclipse開いてプロジェクト作るのも嫌です)。
hubotの使い方を覚えるのすらめんどいのでGoでべたべた書きます。


## 準備
### API
Backlogの、自分へのお知らせ取得するAPIと
Slackの通知APIのエンドポイントをゲットします。(自分だけ使うので@Slackbotへ通知します)

[BacklogのAPIドキュメント][link1]
[SlackのAPIドキュメント][link2]

[link1]:http://developer.nulab-inc.com/ja/docs/backlog/api/2/get-notifications
[link2]:https://api.slack.com/incoming-webhooks

### GAE
[App Engineのチュートリアル][link3]を参考にSDKをダウンロードしたりします。
[link3]:https://cloud.google.com/appengine/docs/go/gettingstarted/devenvironment

私はhomebrewでいれましたが。

```shell-session:
$ brew install go-app-engine-64
```

ちょっと困ったところとして、Go GAEライブラリをインポートする際は

```go:
import "appengine"
```
という書き方をするのですが、appengineライブラリをシンプルに$GOROOT配下にgetしてくる事はできません

```shell-session:
$ go get appengine # できない
```

"appengine"をimportする為にはGOROOTを、GAE SDK配下の"goroot"ディレクトリに設定してやる必要があります。

ただ私はGOROOT をいちいち切り替えるのがめんどくさかったので
GOROOT/packages/pkgの下と、GOPATHの下に、goroot下の"appengine"ディレクトリと"appengine_internal"へのシンボリックリンクを張る事にしました。
(go buildしたら、あともう一つ何か必要だとエラーが出ましたが、これは普通にgo getできます。なんだったか忘れました)

## 書く

[ソース][srclink]
[srclink]:https://gist.github.com/kuxuxun/d33c21ad853772944949

GAEアプリとして認識させるためにはapp.yamlを作って、チュートリアルから8行ほどコピペするだけです。
(appengine-web.xmlとは大違いの簡単さ)

main.goでやってる事はBacklog APIからお知らせをGetしてSlackボットへPostするだけです。
お知らせは既読のものを弾いたり前回取得した物はとらないようにMinIdを指定したりしてます。

注意点は、httpクライアントはgoのhttpパッケージのものではなく、appengine/urlfetchというパッケージの物を使う必要があることです(GAEのURL Fetch Quotaの制御のためですね)

で、これはappengineのContextから貰う必要があり、appengineのContextを取得するためにはhttp.Requestが必要になります。
つまり必ずwebアプリにする必要があるようです(多分)
goroutine内でぐるぐる回してGet,Postしようかと思ってましたが、できません。

どうやって定期的にGet,Postするかですが、GAEはcronを用意してくれているのでそれを使って定期的にURLを叩きます。cronを使うには、簡単なcron.yamlをコピペして作るだけです。

## 動かす
ローカルで動かすには

```shell-session:
$goapp serve
```


デプロイは、web上のGAEのコンソールへログインしてプロジェクトを作り、

```shell-session:
$goapp deploy -oauth -application project_id
```
をたたきます。立ち上がりが早いです。


## GAE簡単で良い
herokuよりもさくさくデプロイまでたどり着いたイメージです。
必要なファイルは3ファイルのみ。
PHPUnitでテストしたいならクラス化しよう

PHPUnitがテスト対象としてうまく扱えるのはクラスとそのメソッドだけ。

PHPではrequired_onceやinclude_onceで外部ファイルを読み込んだ時点で、そのファイルにクラス以外のものが定義してあったら、即座にそれを実行してしまう。
だから、ソースの一行目にApacheのセッションからユーザー情報を取得して・・・みたいなソースがありそれをPHPUnitテストクラスのソースでincludeすると、直ちに上の処理が実行されてしまいテストが失敗する。

クラスファイルなら、PHPUnitテストからincludeされても実行されることはない。
NetBeansでPHPUnit

NetBeansでSeleniumを試そうとしたら、PHPUnitの設定ではまったときのメモ。
(2015/3/15現在)

#環境
OS:OS X Yosemite(10.10.2)
IDE:NetBeans IDE 8.0.2 (Build 201411181905)

#参照
NetBeansのドキュメント見ながら
https://netbeans.org/kb/docs/php/phpunit_ja.html

#実際にやった手順
####brewでインストール
PHPUnitとphpunit-skeleton-generatorを入れる。

```
brew search phpunit
brew install phpunit
brew install phpunit-skeleton-generator
```
ここで入ったのは、<b>phpunit-4.3.4.phar</b>と<b>phpunit-skelgen-1.2.1.phar</b>

####NetBeansの設定
・プロジェクト右クリック
->[プロパティ]
->[テスト]

```
テスト・プロパティ：PHPUnitにチェック
```

・[NetBeans]-[Preferences]
->[PHP]タブで以下を指定

```
PHPUnitスクリプト:~/phpunit-4.3.4.phar
スケルトン・ジェネレータ・スクリプト：~/phpunit-skelgen-1.2.1.phar
```

####テストの作成
Calculatorを右クリック
->ツール
->テストを作成
->テストソースに「tests」フォルダを作成して指定

すると、以下のエラーが発生
```phpunit The referenced parameter '--ansi' is not registered```

Google先生に聞いたら、(http://stackoverflow.com/questions/26121062/netbeans-8-0-1-phpunity-generator)

####<b>「phpunit-skelgen古くね？」</b>
と言われたので、とりあえず https://phar.phpunit.de/phpunit-skelgen.phar からダウンロード

ダウンロードしたpharファイルを、~/phpunit-skelgen-1.2.1.pharと同じディレクトリに移動。

####phpunit-skelgen.exeの書き換え
「phpunit-skelgen」のexeがダウンロードしたpharファイルを見るように書き換え。

```
#!/usr/bin/env bash

/usr/bin/env php -d allow_url_fopen=On -d detect_unicode=Off /~/libexec/phpunit-skelgen.phar $*
```

一応バージョン確認したら、

```
phpunit-skelgen --version
>phpunit-skelgen 2.0.1 by Sebastian Bergmann.
```

バージョン上がってますね。

NetBeans側も修正して、

```
スケルトン・ジェネレータ・スクリプト：~/phpunit-skelgen.phar
```

再度「テストの作成」を実行。

```
Wrote skeleton for "CalculatorTest" to "~/Calculator/tests/CalculatorTest.php".
```
無事スケルトンができました。
npmにライブラリをアップロードするときに.npmignoreで生成物を公開/制限するパターン


やっと理解したのでメモ

## 何がしたいか

- npmパッケージを登録する時にcoffeeやtypescriptのコードをコミットせず生成したjsだけをアップロードしたい
- 自動生成したjsをgitで管理したくない

## どうやるか

`src/**` にソース、`lib/**` に実体があるとする


.npmignore に npm にアップロードしたくないものを書く

```
src/
test/
examples/
```

.gitignore にバージョンコントロールしたくないコードを書く

```
lib/
```

package.json にnpmに登録する際のフックのスクリプトを書く。(この例はcoffee)

```
  "scripts": {
    "prepublish": "$(npm bin)/coffee -o lib -c src/*"
   },
```

npmで公開する。これは mizchi/ardaの例

```
$ npm publish
> arda@0.13.1 prepublish /Users/mizchi/proj/arda
> $(npm bin)/coffee -o lib -c src/*
+ arda@0.13.1
```

## 注意点

npm publishしたときに .npmignoreが存在しない場合、.gitignoreでignoreされたファイルを自動的に使う。これのせいでprepublishされたファイルが.gitignoreされていた場合公開されない。npm prepublishで生成されたファイルを無視しないために、明示的に.npmignoreは必ず用意する必要がある。

ってのを下のIssue読んでて気づいた。

[prepublish hook on package.json causes npm to publish empty packages · Issue #4778 · npm/npm](https://github.com/npm/npm/issues/4778 "prepublish hook on package.json causes npm to publish empty packages · Issue #4778 · npm/npm")

[Misleading `npm prepublish` docs · Issue #28 · npm/docs.npmjs.com](https://github.com/npm/docs.npmjs.com/issues/28 "Misleading `npm prepublish` docs · Issue #28 · npm/docs.npmjs.com")

今までprepublishの挙動でめっちゃ悩んでいて、coffeeとjs両方コミットしていたけど、やっと解決しそう。

babelな方もどうぞ。
pyenv-virtualenvのpythonバージョンを変更する

# はじめに
Heroku を最初にいじってた頃は python のランタイムは 2.7.8 だったので、ついつい runtime.txt に python-2.7.8 と書いてしまっていた。最近では python2.x系なら 2.7.9 が使えるようになっているので、heroku のアプリを 2.7.9 にアップグレードしたい。

python の環境は pyenv-virtualenv を使って管理している。

# まずやること
python-2.7.9 を pyenv 管理に入れるために、`pyenv install 2.7.9` を実行する。

# 各プロジェクトでやること
* pip で管理してるパッケージを保存するために`pip freeze > requirements.txt`する（Heroku のプロジェクトなら必ずやってあるはず）
* `pyenv versions` で使っている python の名前を確認する
* `pyenv uninstall <name>` で該当する環境を削除する
* `pyenv virtualenv 2.7.9 <name>` で python 2.7.9 で作り直す
* `pip install -r requirements.txt` で pip でパッケージを入れ直す
* `echo python-2.7.9 > runtime.txt` で Heroku で使う python も 2.7.9 にする。
* `git commit` `git push heroku master` して Heroku 側もバージョンアップする

# 所感
特に難しいことは無いが、matplotlib とかの大型パッケージの場合にコンパイルタイムアウトになる心配があるかも。
学生のうちに登録しておいた方がいいサービス・ツール

他になにかあればどんどんedit requestを送ってください！！

## JetBrainsのエディター

https://www.jetbrains.com/student/

## Student Developer Pack

https://education.github.com/pack

## Cacoo学生プラン

https://cacoo.com/lang/ja/academic

## Xamarin is free for students

http://xamarin.com/student

## Microsoft Imagine

https://imagine.microsoft.com/ja-JP/Home
Raspberry Pi 2（ラズベリーパイ２）へイメージをコピーする方法

#はじめに
Raspberry Pi 2 Model Bを使用
MicroSD 16G
![IMG_1845.JPG](https://qiita-image-store.s3.amazonaws.com/0/25895/1a779207-415a-87c6-5251-540bd9380258.jpeg)

#イメージのコピー
Linux系の保守などをしたことが在る方ならお分かりだと思いますが、現在は、いろいろ面倒なのでまるっとバックアップが主流です。

まるっとイメージファイルをコピーしそれをddで入れたい先へコピーするイメージです。

#Macでの方法
Macでは、ターミナルがあるのでそれでddコピーすれば、良いのかと思っていましたが、意外と苦戦しました。

1. 現在は、ほとんど買った状態でフォーマット済みなのですが、名前など変えたければ、MicroSDをフォーマットします。
![スクリーンショット 2015-03-15 16.37.54.png](https://qiita-image-store.s3.amazonaws.com/0/25895/cb18b45c-5051-b270-06df-bdb682117f69.png)

1. インストールしたいimageをさがし、用意する。わたしは[ubuntu](https://wiki.ubuntu.com/ARM/RaspberryPi)にしました。

1. df -hで、ドライブやパテーションを確認する。左側のFilesystemの名前を使用します。
![スクリーンショット 2015-03-15 16.28.09.png](https://qiita-image-store.s3.amazonaws.com/0/25895/dc1e97b1-ac87-ac06-8c6e-5bf67c8dfe17.png)

1. ddコマンドでコピーするのですが、最初にドライブをunmountDiskします。
![スクリーンショット 2015-03-15 16.40.42.png](https://qiita-image-store.s3.amazonaws.com/0/25895/02f57e07-5c1a-9692-9e97-ed192ef8db26.png)

1. sudo dd bs=1m if=InputImageFileName.img of=/dev/disk1を入力し、enter returnでイメージをコピーするのですが、体感で１０分以上待つ感じでとちゅうは何も表示されないので、気長に待ちましょう。
![スクリーンショット 2015-03-15 16.42.37.png](https://qiita-image-store.s3.amazonaws.com/0/25895/d5460cad-d320-0126-6353-e52aeb5d184f.png)

#起動てすと
MicroSDをラズパイの裏側のスロットに入れ、USBキーボード、USBマウス、LANケーブルを接続してAndroidとかのUSBケーブルで電源供給するとインストールしたイメージのLinuxが起動できました。
![IMG_1847.JPG](https://qiita-image-store.s3.amazonaws.com/0/25895/71389fc7-fe81-f14c-c7c2-f434d376dbd0.jpeg)
![IMG_1846.JPG](https://qiita-image-store.s3.amazonaws.com/0/25895/74db6d0f-6284-52fd-8c6a-6e0314b7aee5.jpeg)

#結局GUIが使いたかったので、Raspbianにした。
[GameGeek@NodaSatoru-no-MacBook-Pro:~/Desktop/Raspberry Pi]$ sudo dd bs=1m if=2015-02-16-raspbian-wheezy.img of=/dev/disk1
Password:
3125+0 records in
3125+0 records out

![IMG_1851.JPG](https://qiita-image-store.s3.amazonaws.com/0/25895/8618969e-511a-cab1-96b2-3f1e669af5fc.jpeg)


#参考
http://www.raspberrypi.org/downloads/
https://wiki.ubuntu.com/ARM/RaspberryPi
http://www.raspberrypi.org/documentation/installation/installing-images/mac.md
http://d.hatena.ne.jp/Michael_e29/20140701/1404181242
Unity2D での batches(Drawcall) 削減について

現在のバージョンでは同じ結果にならないため、一旦記事を削除させていただきます。
今調整中のものがありますので、機会があれば現ヴァージョンの考察・実装についての云々などかければと思っています。
記事を見ていただいた皆様、ありがとうございました。
(2016/03/04 現在)
ReactでTwitterの共有ボタンを置く

ReactでTwitterの共有ボタンを置くのに色々やったのでメモ。
以下はbabelで書いてある。

```js
class TwitterShareButton extends React.Component {
  render() {
    return <a href="https://twitter.com/share" className="twitter-share-button">Tweet</a>
  }

  componentDidMount() {
    // scriptタグが埋め込まれた後にTwitterのaタグが置かれても機能が有効にならないので、すでにscriptタグが存在する場合は消す。
    var scriptNode = document.getElementById('twitter-wjs')
    if (scriptNode) {
      scriptNode.parentNode.removeChild(scriptNode)
    }

    // ボタン機能の初期化（オフィシャルのボタン生成ページで生成されるものと同じもの）
    !function(d,s,id){
      var js,
          fjs=d.getElementsByTagName(s)[0],
          p=/^http:/.test(d.location)?'http':'https';
      if(!d.getElementById(id)){
        js=d.createElement(s);
        js.id=id;
        js.src=p+'://platform.twitter.com/widgets.js';
        fjs.parentNode.insertBefore(js,fjs);
      }
    }(document, 'script', 'twitter-wjs');
  }
}
```

Twitter共有ボタン機能は、widgets.jsというコードを動的に読み込み、指定のaタグを共有ボタン化することで実現される。が、widgets.jsを読み込んだ後にaタグを貼り付けても意味が無い。

Reactの仕組み上（というかSPAの仕組み上）widgets.jsの読み込み後に共有ボタンのHTMLを貼り付ける場合があるので、widgets.jsを強制的に破棄してもう一度読み込む仕組みにした。

本来はwidgets.jsを解析して中の初期化メソッドを呼ぶべきだと思う。上記の方法だと、aタグのレンダリングからボタン機能の有効化までに間が空いてしまい、一瞬素のaタグが見えてダサい。
Twitter Bootstrapでリスト出力の入れ物を作る

## Twitter Bootstrap
[いまさら聞けない「Twitter Bootstrap」とは？](http://ascii.jp/elem/000/000/795/795948/)

#### 1. [Twitter Bootstrapの公式サイト](http://twitter.github.io/bootstrap/)からDownloadボタンをクリックし、zipファイルをダウンロード

#### 2. 解凍したディレクトリ直下にindex.html作成

```html:index.html

<!DOCTYPE html>
<html lang="ja">
  <head>
    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" media="screen, projection" />
    <script type="text/javascript" src="http://code.jquery.com/jquery.js"></script>
    <script type="text/javascript" src="js/bootstrap.min.js"></script>　
    <meta charset="utf-8">
    <title>Webサービス開発者のためのTwitter Bootstrap入門　第1回</title>
  </head>
  <body>
    <div class="container">
      <div class="page-header">
        <h1>Webサービス開発者のためのTwitter Bootstrap入門</h1>
      </div>
      <table class="table table-striped" border="1">
        <thead>
          <tr><th>#</th><th>title</th><th>action</th></tr>
        </thead>
        <tbody>
          <tr>
            <td>1</td><td>sample1</td><td><button type="submit" class="btn btn-success">Submit</button></td>
          </tr>
          <tr>
            <td>2</td><td>sample2</td><td><button type="submit" class="btn btn-primary">Submit</button></td>
          </tr>
        </tbody>
      </table>
    </div>
  </body>
</html>
```

###### 出力結果はこんな感じ
[index01.html.JPG](https://qiita-image-store.s3.amazonaws.com/0/66467/181fbfd2-4d79-20fc-d2e2-eb3141caec11.jpeg)
Pythonでctypesを使ってコールバック関数でchar*を返すには

PythonでC言語から呼んでもらう例は、qsortのint型を返す例くらいしか
見つからず、後は難しいWindowsの構造体を返す方法があったような。

## 今回のコールバックの型

```py3
CBFUNC=CFUNCTYPE(c_char_p,c_char_p)
cbfunc=CBFUNC(py_cb_func)
```

普通に

```py3
msg = "Hello, Trusterd.this is Python."
buf = create_string_buffer(msg.encode('UTF-8'))
return buf
```

だと

```shell-session
Traceback (most recent call last):
  File "_ctypes/callbacks.c", line 302, in 'converting callback result'
TypeError: bytes or integer address expected instead of c_char_Array_32 instance
Exception ignored in: <function py_cb_func at 0x1041dd510>
```

と、C言語側で戻り値を受けてれるものの、
意図した文字列を受け取ることは出来ませんした。

# 試行錯誤の結果

```py3
msg = "Hello, Trusterd.this is Python."
buf = create_string_buffer(msg.encode('UTF-8'))
c = cast(buf, POINTER(c_char))
return addressof(c.contents)
```

これで、C言語側に意図した文字列を返すことが出来ました。

ちなみに、通常のC言語側を呼び出す際の引数の指定は

```py3
hogefunc(create_string_buffer(msg.encode('UTF-8')))
```
で問題なく出来ます。

# 関連記事

- [OSXのBlenderでctypesを試した](https://abrakatabura.hatenablog.com/entry/2015/01/31/091848)
AndroidでiOS風のすりガラス効果をつけた画像を生成する

# はじめに
AndroidでiOS風のすりガラスエフェクトをかけようとしたら案外面倒だったのでメモ
多少無理やりな方法ですがそれっぽいものを作ることができました。

# 必要なもの
GPUImage for Androidを使うので、gradleのdependencyに追加します。

```app.gralde
repositories {
    mavenCentral()
}

dependencies {
    compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.2.3'
}
```

# ソースコード
すりガラス的なエフェクトはガウスブラーをかけることで再現できます。

```java:
Bitmap source; //これがフィルターをかける画像のBitmap

GPUImageGaussianBlurFilter filter_gaussian = new GPUImageGaussianBlurFilter();
GPUImageNormalBlendFilter filter_blend = new GPUImageNormalBlendFilter();

// 白っぽくするために前面に置くBitmapを生成する
Bitmap bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888);
Canvas cv = new Canvas(bitmap);
Paint p = new Paint();
p.setColor(0x30FFFFFF);
cv.drawRect(0, 0, 1, 1, p);
filter_blend.setBitmap(bitmap);

GPUImage gpuImage = new GPUImage(context);
gpuImage.setImage(source);
gpuImage.setFilter(filter_blend);
gpuImage.setImage(gpuImage.getBitmapWithFilterApplied());
gpuImage.setFilter(filter_gaussian);
filter_gaussian.setBlurSize(10.0f);
gpuImage.setImage(gpuImage.getBitmapWithFilterApplied());
filter_gaussian.setBlurSize(5.0f);
gpuImage.setImage(gpuImage.getBitmapWithFilterApplied());
filter_gaussian.setBlurSize(1.0f);
Bitmap filtered = gpuImage.getBitmapWithFilterApplied(); // filteredがフィルターをかけたあとの画像

filter_blend.setBitmap(null);
bitmap.recycle();
// もう元画像を使わないのであればメモリ解放
source.recycle();
```

これで、filteredの中にいい感じにフィルターが掛かったBitmapが保存されます。
![device-2015-03-15-141904.png](https://qiita-image-store.s3.amazonaws.com/0/29459/0c5ec644-0a96-59e6-8d84-7f578ca43077.png)


GPUImage for Androidのガウスブラーのサイズ指定で1.0f以上を指定すると大きくブラーがかかりますが、変な感じになってしまいます。
(ソースを見る限り、0.0f-1.0fまでしか対応していない)
この方法では、わざとおかしくなるように大きくブラーをかけて、もう一度小さくブラーをかけることで滑らかにしています。
いろいろ試した結果、10.0f→5.0f→1.0fの順にフィルタをかけるとそれっぽくなりました。
ただ、この方法だとフィルターを複数回掛ける必要があるので、連続的に処理が行われるような使い方には向いていないかもしれません。

# ちなみに
OpenCVを使えば、一回の変換でうまくフィルターをかけることができます。
ただ、アプリサイズが大きく増えてしまうので、それでも問題ない場合にはそちらのほうが手っ取り早いでしょう。
Semantic UI使用メモ

ちょっと詰まったところがあれば、それを追記していく。

# Framework
playframework
ディレクトリ構成は標準のまま

# インストール
```
npm install semantic-ui --save
```
とりあえずAutomatic

その流れで

```
gulp build
```
# routes
```
GET     /assets/*file            controllers.Assets.versioned(path="/semantic", file: Asset)
```

# main.scala.html
Assetを追加したので修正する必要あり

```html
<link rel="stylesheet" media="screen" href="@routes.Assets.versioned("/public", "stylesheets/main.css")">
        <link rel="stylesheet" media="screen" href="@routes.Assets.versioned("/semantic", "dist/semantic.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.versioned("/public", "images/favicon.png")">
        <script src="@routes.Assets.versioned("/public", "javascripts/hello.js")" type="text/javascript"></script>
```

# 補足
以下の記載でAssetの追加が出来るようだが、上手く行かなかった。

```scala:build.sbt
unmanagedResourceDirectories in Assets += baseDirectory.value / "semantic"
```

http://stackoverflow.com/questions/25217624/use-multiple-assets-route-in-play-framework-2

http://stackoverflow.com/questions/24923235/how-to-have-more-than-1-public-directory-in-play-framework-2-3-2

# 問題

## icon が表示されない
`semantic.css` と同じディレクトリ配下(※)に `themes` 配下のフォルダを置く。
> ※ `/public/stylesheets` のこと

## 余計な装飾なしにセンタリングしたい
```html
<div class="ui basic center aligned segment">
  Center
</div>
```

basic をつけることで無駄な装飾がつかない

# gulpfile.js
```gulpfile.js
var gulp = require('gulp');

gulp.task('copy', function() {

  console.log('Hello gulp')
  
  // copy javascript
  gulp.src('semantic/dist/*.js').pipe(gulp.dest('public/javascripts'))

  // copy css
  gulp.src('semantic/dist/*.css').pipe(gulp.dest('public/stylesheets'))
  
  gulp.src('semantic/dist/themes/**').pipe(gulp.dest('public/stylesheets/themes'))
  
});
```
コマンド基本まとめ(iTerm2)


# 画面操作
## 全画面表示
### command + return
## 画面分割
#### command + d
## 画面切り替え
#### command + [


# 基本操作
## ディレクトリ移動
### cd 
※自動補完機能について
cd Des のように途中まで入力してから tab キーを押すと残りの文字を補完してくれる。
## 画面のクリーンアップ
### control + L

# ディレクトリ操作
## 現在のディレクトリのフルパス表示
### pwd
## 新規ディレクトリ作成
#### mkdir (dirname)

## 空のディレクトリを削除
### rmdir (dirname)

## ディレクトリを強制削除
### rm -rf (dir名)
中のファイルごと強制的に削除する


## ディレクトリAをディレクトリBにコピー
### cp -r (dirA) (dirB)


## 現在ディレクトリのファイル一覧表示
### ls 

# ファイル操作
## ファイル
### cat (file名) -n

## ファイルをディレクトリに移動
### mv (file名) (dir名)

## ファイルを新規作成
### touch (file名)

## ファイルの検索
### find / -name aaaaa.txt
aaaaa.txt をルートディレクトリ以下から探すという事。もしファイル名の一部から検索したい場合は以下を利用する

* 「?」一文字のワイルドカード ex)Photo???.jpg　のように文字数がわかっているときにつかう。
*  「*」0文字以上の文字列をあらわsうワイルドカード


#その他
## パーミッションの変更
### chmod -R 755 dirname
-Rをつける事でディレクトリ配下のファイルやディレクトリ全てのパーミッションを変更する。-Rを付けなければ指定のディレクトリだけ。

## リンクファイルを作成する
### ln 
- -s　でシンボリックファイルを作成する
- -f　で強制的に上書きする。

ex) ln -fs /vagrant /var/www/html
これで/vagrantへのシンボリックリンク「/var/www/html」を作成。
リンクファイルはWindowsのショートカットやMacOSのエイリアスのようなもの。ハードリンクとシンボリックリンクの2種類ある。

http://webcache.googleusercontent.com/search?q=cache:OtI9-4KHV9cJ:www.fse.cs.ritsumei.ac.jp/~takayuki/unix.html+&cd=8&hl=ja&ct=clnk
vagrant upでエラー

いつものように`vagrant up`しようとしたら、

```linux
[yusuke@Yusukes-MBP myLocalEnvironment]$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 3000 => 3000 (adapter 1)
    default: 22 => 2222 (adapter 1)
==> default: Running 'pre-boot' VM customizations...
==> default: Booting VM...
The SSH connection was unexpectedly closed by the remote end. This
usually indicates that SSH within the guest machine was unable to
properly start up. Please boot the VM in GUI mode to check whether
it is booting properly.
```

なに？SSH接続が途切れた？GUIで正しくブートされているか確認してみよ、とのこと。VMを見てみたらちゃんと起動されている。

なんやねん、と思いながら`vagrant reload`。

```linux
[yusuke@Yusukes-MBP myLocalEnvironment]$ vagrant reload
An action 'reload' was attempted on the machine 'default',
but another process is already executing an action on the machine.
Vagrant locks each machine for access by only one process at a time.
Please wait until the other Vagrant process finishes modifying this
machine, then try again.

If you believe this message is in error, please check the process
listing for any "ruby" or "vagrant" processes and kill them. Then
try again.
```

別のプロセスがゲストマシン上で動いているためreloadができません。と。`vagrant halt`をしてみても同じ結果だった。

`Vagrant locks each machine for access by only one process at a time.`のエラー文をじっとみつめる。

複数のアクセスが一つのプロセスから同時に行われた場合、そのマシンをロック、する・・と、いう解釈でいいのかな。

SSHアクセスの他にホスト → ゲストに向けて何かしらアクセスをしようとしている、のかな？

明示的にやった覚えはないので、勝手に起こっちゃってるっぽいので、取り急ぎ実行中のプロセスをみてみる。

```linux
[yusuke@Yusukes-MBP myLocalEnvironment]$ ps
  PID TTY           TIME CMD
  423 ttys000    0:00.01 -bash
  528 ttys000    0:00.00 vagrant-notify-server (2250)  
```

お！`vagrant-notify-server`あやしすぎる。

```linux
[yusuke@Yusukes-MBP myLocalEnvironment]$ kill 528
```

これで無事`vagrant reload`、`vagrant ssh`できました。
[Rails Assets] Find the js file name


[Rails Assets](https://rails-assets.org) is so helpful and convenient.
But sometimes to find a js file name to write `//= require some-js-file` in `application.js` is conofused.


When you use Rails Assets, your `Gemfile` is like this.

```Gemfile
source 'https://rails-assets.org' do
  gem 'rails-assets-hoge'
end
```
Move to the gem's directory. And show the js file name.

```
> cd $(bundle show 'rails-assets-hoge')
> ls app/assets/javascripts
hoge.js
```

Just write the js file name without `.js`

```app/assets/javascripts/applicaton.js
//= require hoge
```
gem install rmagickでchecking for Magick-config... noがでる解決方法

rmagickのインストールをしようとしたところエラーがでました。Railsプロジェクトの開発で環境はVagrant上のCentOSです。

# rmagickのインストールでエラーが発生
rmagickをインストールしようしましたが、エラーがでて失敗します。

```bash:rmagickのインストールでエラー 
gem install rmagick

Fetching: rmagick-2.13.4.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
	ERROR: Failed to build gem native extension.

    /home/vagrant/.rbenv/versions/2.2.0/bin/ruby -r ./siteconf20150313-7941-u2y4vg.rb extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
checking for pkg-config... yes
checking for ImageMagick version >= 6.4.9... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.
以下略
```
どうやら**checking for Magick-config... no**という部分があやしいですね。ImageMagickがそもそも無いのかと。

# ImageMagickとImageMagick-develのインストール
ImageMagickをインストールします。

```bash:ImageMagickをインストール
sudo yum -y install ImageMagick
```
この後にrmagickをインストールしようとすると失敗しました。

```bash:再びrmagickのインストールでエラー 
gem install rmagick

Building native extensions.  This could take a while...
ERROR:  Error installing rmagick:
	ERROR: Failed to build gem native extension.

    /home/vagrant/.rbenv/versions/2.2.0/bin/ruby -r ./siteconf20150313-8135-6yh4ql.rb extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
checking for pkg-config... yes
checking for ImageMagick version >= 6.4.9... yes
以下略
```
まだ何か足りないみたいです。
ImageMagick-develもインストールします。

```bash:ImageMagick-develをインストール
sudo yum -y install ImageMagick-devel
```
ImageMagick-develがインストールされます。

# rmagickのインストールが成功
rmagickを再度インストールします。

```bash:rmagickのインストール
gem install rmagick

Building native extensions.  This could take a while...
Please report any bugs. See https://github.com/gemhome/rmagick/compare/RMagick_2-13-2...master and https://github.com/rmagick/rmagick/issues/18
Successfully installed rmagick-2.13.4
Parsing documentation for rmagick-2.13.4
Installing ri documentation for rmagick-2.13.4
Done installing documentation for rmagick after 7 seconds
1 gem installed
```
今度はrmagickのインストールが成功しました。

# 参考
http://qiita.com/hiroara@github/items/6b1c6c7257042a159cc9
MacでJavaScriptのステップ数をカウントする

Macでステップ数をカウントする"Ohcount"が使えそうなのでメモ．
[Ohcount](https://github.com/blackducksw/ohcount)

ライセンスの下調べもできる．

# 環境
- Mac OS X Yosemite
- Homebrew 0.9.5
- ohcount 3.0.0

# インストール

homebrewがあれば簡単．

`$brew install ohcount`

# 使い方

### ヘルプ

`$ohcount --help`でヘルプが出る．

## サマリ表示

カウントしたいフォルダで実行すると，言語別にカウントしたサマリを出力する．
集計結果が表組みで出力されて分かりやすい．
コメント率も出るので親切な印象．

出力結果から見ると，`ohcount -s`と同じ効果．

```
$cd /countTarger
$ohcount
Examining 451 file(s)

                          Ohloh Line Count Summary                          

Language          Files       Code    Comment  Comment %      Blank      Total
----------------  -----  ---------  ---------  ---------  ---------  ---------
javascript          175      28213      14452      33.9%       7568      50233
cpp                   6       3392        356       9.5%        596       4344
make                 11        873        316      26.6%        255       1444
python                2        562        316      36.0%        146       1024
xml                   2        139          8       5.4%         16        163
html                  1         10          0       0.0%          0         10
----------------  -----  ---------  ---------  ---------  ---------  ---------
Total               197      33189      15448      31.8%       8581      57218

```

## ファイル別にカウント

`ohcount -i`で個別のステップ数を返す．

```
Examining 451 file(s)
                              Ohloh Line Count                              
Language               Code    Comment  Comment %      Blank      Total  File
----------------  ---------  ---------  ---------  ---------  ---------  ----------------------------------
javascript                2          3      60.0%          1          6  browser.js
javascript              293         88      23.1%        114        495  index.js
javascript               60          9      13.0%         21         90  register.js
javascript              999         39       3.8%         85       1123  async.js

...

javascript               31          0       0.0%          0         31  tinycolor.js
cpp                     100          5       4.8%         12        117  bufferutil.cc
cpp                     112         11       8.9%         22        145  validation.cc
xml                     111          8       6.7%         16        135  pom.xml
```

## ライセンスを調べる

`ohcount -l`でソースコード中のライセンスを解析してくれる．
該当するライセンスが不明な場合は，出力結果に表示されない．

試した範囲では`mit`, `gpl`, `lgpl`を判別している．

```
$ohcount -l

lgpl index.js
mit async.js
lgpl index.js
mit es6-promise.js
mit es6-promise.min.js
lgpl Endpoint.js
lgpl Filter.js
lgpl Hub.js
lgpl index.js
```
GAEでThe import com.google.appengine.api.datastore.Key cannot be resolvedエラー

突然GAEで下記エラーが出ました。

`The import com.google.appengine.api.datastore.Key cannot be resolved`

解決策
いつのまにかApp Engine SDKの参照が外れていました。
そこでプロジェクトのプロパティから、Java Build Path → Order and Export でApp Engine SDKにチェックを入れる。

これで解決しました。
オブジェクトたちの協調ぶりを白日の下に晒すための野蛮なロガー

コンストラクター役の Function を new して作成したインスタンス役のオブジェクトたちが、言われたとおりに仲良く力を合わせながら、ちゃんとおのおのの役目を果たしているのか確かめたい。
あるいは、いきなり面倒をみろと言われた見知らぬアンドキュメントなオブジェクトたちが、いったいどのように協調して成果を出そうとしているのか把握したい。

そんなとき、おそるおそるコードをまさぐってコツコツとデバッグプリントやブレークポイントで証拠を集め、次第に全体像をつかんでいくという地道なアプローチをとるのではなく、おおよそでもはじめから俯瞰で全体を見渡すことができたら仕事は相当捗るはずです。

たとえば、インスタンスを生成する前に、次のように監視したいクラスを指定しておくと、

    var logger = new ObjectLogger();
    
    logger.watch( [ 
    	{ constructor: Man, className: "Man" },
    	{ constructor: Dog, className: "Dog" }
    ] );

その後で、それらのクラスから生成されたインスタンスたちの働きぶりを次のようなチャートで確認できるとしたら。


<img src="https://raw.githubusercontent.com/takahashihideki-git/objectLogger.js/master/sample/screenshot-chart.png">

ObjectLogger は、watch() で指定された Function オブジェクトのプロトタイプとプロトタイプチェーンを調べ、ロギング機能を注入します。
実際には、プロトタイプに定義されている関数を所定のプレフィクスを加えた別名の関数にコピーし、元の名前の関数をロギングしつつ元の関数を実行するあらたな関数で上書きするという野蛮な荒業を繰り出します。

監視対象に指定したクラスのインスタンスたちの仕事が一通り終わったあとに、ObjectLogger の chart() を実行すると、画面上に position:absolute の canvas 要素で上記のチャートを描画します。 

UMLのシーケンス図風にインスタンスごとにレーンを描き、レーンの上に時系列で実行されたメソッドの call と return をプロットしていきます。

レーンの先頭のクラス名をクリックすると、当該のインスタンスを console に出力します。

レーンにプロットされた call 時点のメソッド名をクリックすると、メソッドに渡された引数（arguments）を含むログ情報を console に出力します。return 時点のメソッド名をクリックすると、メソッドの戻り値（value）を含むログ情報を console に出力します。

ソースとサンプルは下記の URL で入手できます。

https://github.com/takahashihideki-git/objectLogger.js
gitのdifftoolにKaleidoscopeを使う

## Kaleidoscopeの設定

menu→Integrationを選択。「git」を選択。

![スクリーンショット 2015-03-15 11.40.26.png](https://qiita-image-store.s3.amazonaws.com/0/37716/f4127c43-9464-52ab-e154-c5de5e0990fb.png "スクリーンショット 2015-03-15 11.40.26.png")

- step1で「Install」をクリックしてKaleidoscopeのCLIをインストール
- step2で「Configure」をクリックしてKaleidoscopeをgitの`diftool`、`margetool`のデフォルトに設定

## gitのdiftoolでKaleidoscopeを使用

上記の設定が完了していれば、デフォルトのdiftoolにKaleidoscopeが設定されてるので下記のコマンドでKaleidoscopeが立ち上がる。

```
git difftool
```

![スクリーンショット 2015-03-15 11.54.04.png](https://qiita-image-store.s3.amazonaws.com/0/37716/d45f303f-5dae-2064-96f2-9af05549c2da.png "スクリーンショット 2015-03-15 11.54.04.png")



## デフォルトのツールには指定したくないが時々使いたい場合

上記同様、menu→Integration→gitを選択。
下部の方に`diftool`としてKaleidoscopeを選択できる設定がある。

![スクリーンショット 2015-03-15 11.46.29.png](https://qiita-image-store.s3.amazonaws.com/0/37716/d1feb09b-685d-1dda-80d6-d80c923fc52b.png "スクリーンショット 2015-03-15 11.46.29.png")

- step1で「Install」をクリックしてKaleidoscopeのCLIをインストール
- step2で「Configure」をクリックしてKaleidoscopeをgitの`diftool`、で選択できるように設定


## gitのdiftoolでKaleidoscopeを選択

デフォルトのdiftoolには別のツールを設定しつつ、下記のコマンドでdiftをKaleidoscopeで確認できる。

```
git difftool -y -t Kaleidoscope
```


### 備考
KaleidoscopeのCLIをインストールすると、

```
ksdiff
```
でドキュメント、画像、フォルダ内のファイル差分表示などGUIと同じ操作が行える。
UnityでSQLiteを扱う方法

iOSやAndroidではApplication内にデータを保存する方法として、SQLiteが使われています。

少ないデータであれば、PlayerPrefsを使用するだけで十分ですが、大量のデータを扱う場合にSQLiteを使えると便利です。

また、SQLiteは他の開発言語でも使えるので、Objective-CやJavaでの開発する場合でもデータはそのまま使用できるので汎用性に優れています。

今回はSQLiteが予めインストールされているMacで試しました。
* OS X 10.9.5
* SQLite 3.7.13

# SQLiteUnityKitをgithubから取得する

今回、UnityでSQLiteを使う方法として、GithubにあるSQLiteUnityKitを使用します。

[Busta117/SQLiteUnityKit · GitHub](https://github.com/Busta117/SQLiteUnityKit)

SQLiteUnityKitを取得します。ターミナルからgitでクローンします。

```
$ git clone https://github.com/Busta117/SQLiteUnityKit.git
```

# プロジェクトにSQLiteUnityKitを配置する
プロジェクトにSQLiteUnityKitを取り込みますが、そのままの配置ではなく、下記の図のように配置します。

![unity2015-03-06_16_05_17.png](https://qiita-image-store.s3.amazonaws.com/0/67320/70d7450e-3fc2-0914-1d51-817d7c73e4ff.png)

# StreamingAssetsフォルダを作成する
プロジェクトに「StreamingAssets」フォルダを作成します。StreamingAssetsファイルをそのままアプリに持っていけるフォルダです。
このフォルダにSQLiteのデータベースファイルを入れることで、そのままアプリに配置されます（ビルドしたときにエンコードなど余分な変換がされない）。

[Unity - マニュアル: ストリーミングアセット](http://docs.unity3d.com/ja/current/Manual/StreamingAssets.html)

# SQLiteデータベースファイルを作成する
今回は既にあるSQLiteデータベースファイルからUnityから取り出す方法を説明します。

なので、まずはターミナルからSQLiteを使用して、データベースファイルを作成します。

```
// StreamingAssetsフォルダに移動する
$ cd ~/Unity/SQLiteSample/Assets/StreamingAssets

// データベースファイル「config.db」を作成します
$ sqlite3 config.db
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"

// userというテーブルを作成します
sqlite> create table user(id integer, name text, old integer, address text);
sqlite> .q
```
# スプリクトを作成する
次にスクリプトを作成して、データベースからデータを追加・取得します。
スクリプト名は「Database.cs」とします。

```
using UnityEngine;
using System.Collections;

public class Database : MonoBehaviour {

	// Use this for initialization
	void Start () {
		// Insert
		SqliteDatabase sqlDB = new SqliteDatabase("config.db");
		string query = "insert into user values(1, 'Yamada', 19, 'Tokyo')";
		sqlDB.ExecuteNonQuery(query);

		// Select
		string selectQuery = "select * from user";
		DataTable dataTable = sqlDB.ExecuteQuery(selectQuery);

		string name = "";
		foreach(DataRow dr in dataTable.Rows){
			name = (string)dr["name"];
			Debug.Log ("name:" + name);
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}
```

スプリクトをシーン上のゲームオブジェクトに追加します。ここでは「DatabaseObject」に追加しました。

![unity2015-03-15 10.37.48.png](https://qiita-image-store.s3.amazonaws.com/0/67320/35bcd484-bb40-7682-1424-e7172a7a3ce6.png)

# 実行する
Playボタンを押して、実行すると、Consoleビューに指定したデータを取得できたことを確認してください。

![unity2015-03-15 10.42.10.png](https://qiita-image-store.s3.amazonaws.com/0/67320/f2c2976e-afd4-7855-a515-fad3b352ec1d.png)


# 参考サイト
[UnityでSQLite](http://bribser.co.jp/blog/post-319/)
[Unity SQLiteUnityKitで日本語を使うときの注意](http://bribser.co.jp/blog/sqliteunitykit/)
excel vba db接続

##環境　
excel2013

##フォルダ構成
* ticketMasterImport_ErrCheckフォルダ

* errCheck.xls
* errCheck.ini
* errMstフォルダ
* - errMst.xls
* resultフォルダ
* - errresult_yyyymmdd.xls

##処理目次

1. ユーザーフォームで日付入力
1. excelからDB接続（sqlサーバー）
1. 新規excelファイルを作成
1. 入力日付と合致するレコードをセレクトし、シートのセルに値をセット
1. errMst.xlsをオープン
1. errMst.xlsからエラーコードでエラー名称を取得
1. excelファイルを別名保存(errresult_yyyymmdd.xls)
1. errMst.xlsをクローズ
1. DB切断
1. errCheck.xlsをクローズ

##TIPS
###excelからDB接続（sqlサーバー）
####サンプルコード
>http://www.excel-excel.com/tips/vba_287.html

####ユーザー定義型は定義されていません
結論：つかってるクラスライブラリを参照できてなかった
>http://www.tsware.jp/tips/tips_334.htm

####DB接続のクラスはado(ActiveXデータオブジェクト）
#####ADOライブラリを参照（VBE-ツール-参照設定）して使えるようにする
>http://home.att.ne.jp/zeta/gen/excel/c04p01.htm

#####参照設定がグレーアウトしている場合（デバッグ中はグレ>http://answers.microsoft.com/ja-jp/office/forum/office_2010-excel/excel2010%E3%81%AEvba%E3%81%AE%E5%8F%82%E7%85%A7/360f7066-27d3-4c91-b8b3-79131ab4ba28

####Option Explicitとは？
変数を宣言しないと使えなくなる呪文
>http://officetanaka.net/excel/vba/beginner/11.htm

####その他
>accdbなどの新しいデータベース形式を利用するには、「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」というオプションをインストールしなくてはならない場合があります。http://www.happy2-island.com/access/gogo03/capter00416.shtml
BitLocker To GOでUSBメモリを暗号化(8.1pro,7ultimate限定)

## 参考

* [BitLocker To Go を利用したリムーバブルディスクの暗号化について | 慶應義塾 三田ITC](http://www.mita.itc.keio.ac.jp/ja/com_bitlocker2go.html)

* [Windows 7で強化されたUSBメモリの暗号化機能「BitLocker To Go」を試す - クラウド Watch](http://cloud.watch.impress.co.jp/epw/docs/series/2008r2lab/20090724_304045.html)

## BitLocker To GOとは

* windows7ultimate, windows8pro以降に搭載されている、USBメモリを暗号化する。
  * マウント時にパスワードを要求されるようになる。
  * 初回設定は上記エディションで行う必要があるが、以降は他のwindows7,8.1でも利用可能。
  * vistaは読み取りのみ可能

* windows10プレビュー版にも搭載されていると思うので、対応OSを持っていない人はそちらで試してみるのも良いかも。

* windows7proに搭載されていなかったのは残念である。
UnityでJSONファイルを読み込む（SimpleJSON編）

UnityでJSONを扱う方法として、SimpleJSONを使用してJSONをパースします。今回はWeb上からJSONファイルを取得する方法ではなく、プロジェクトのAssetフォルダにJSONファイルがあることとします。

## JSONパーサーをダウンロードする
JSONを読み込むためのパーサーを組み込みます。使用するのはSimpleJSONです。

[SimpleJSON - Unify Community Wiki](http://wiki.unity3d.com/index.php/SimpleJSON)

リンク先からSimpleJSON.zipをダウンロードします。

# SimpleJSONをプロジェクトにインポートする
SimpleJSON.zipを解凍すると、中にSimpleJSON.unitypackageというUnity Packageが入っています。

メニュー > Asset > Import Package > Custom Package を選択（もしくは、Projectビューで右クリック > Import Package > Custom Packageを選択）してください。

SimpleJSON.unitypackageを選択してプロジェクトにSimpleJSON.unitypackageを取り込んでください。

![unity2015-03-14 22.16.59.png](https://qiita-image-store.s3.amazonaws.com/0/67320/3187d10f-874b-5649-ff5d-c63dd88a3447.png)

## ソースコードを記述する
SimpleJSONを使ってJSONファイルを読み込むスプリクトを記述します。

Scene上のゲームオブジェクトにAdd Componentでスクリプトを追加します。
（今回は空のゲームオブジェクトを作成し、スクリプトを追加しました。）

ProjectビューからCreate > C# Script でスプリクトを作成します。
ファイル名は「JSONSample.cs」としました。

JSONSample.cs

```
using UnityEngine;
using System.Collections;
using System.IO; //System.IO.FileInfo, System.IO.StreamReader, System.IO.StreamWriter
using System; //Exception
using System.Text; //Encoding
using SimpleJSON;

public class JSONSample : MonoBehaviour {

	public string jsonFileName;
	private JSONNode json;

	// Update is called once per frame
	void Update () {
		// スペースキーを押したらファイル読み込みをする
		if (Input.GetKeyDown (KeyCode.Space)) {
			ReadFile ();
		}   
	}
	// 読み込んだ情報をGUIとして表示
	void OnGUI()
	{
		if (json != null) {
			// キーワードがnameの値を取り出す
			GUI.TextArea (new Rect (0, 0, Screen.width, Screen.height), "name:" + json["name"]);
		}
	}

	// 読み込み関数
	void ReadFile(){
		string fileText = "";

		// FileReadTest.txtファイルを読み込む
		FileInfo fi = new FileInfo(Application.dataPath + "/" + jsonFileName);
		try {
			// 一行毎読み込み
			using (StreamReader sr = new StreamReader(fi.OpenRead(), Encoding.UTF8)){
				fileText = sr.ReadToEnd();
				// JSONをパースして値を取り出す
				json = JSONNode.Parse(fileText);
			}
		} catch (Exception e){
			// 改行コード
			fileText += "\n";
		}
	}
}
```

# JSONファイルを指定する
スクリプトをInspector上で表示すると、JSONファイル名を指定できるようになっているはずです。JSONファイルをプロジェクトに取り込み、ファイル名を指定してください。

![unity2015-03-14 22.55.54.png](https://qiita-image-store.s3.amazonaws.com/0/67320/36d8c94f-2586-3983-64c4-ea25a97a167b.png)

サンプルで使用するJSONファイルは以下です。

sample.json
```
{"ID":null,"name":"Doe","first-name":"John","age":25,"hobbies":["reading","cinema",{"sports":["volley-ball","snowboard"]}],"address":{}}
```

# 実行結果
Playボタンを押して実行し、Spaceキーを押したら、以下の画面が表示されJSONファイルから指定したデータが読み込まれたことが確認できたら成功です。

![unity2015-03-14 23.02.46.png](https://qiita-image-store.s3.amazonaws.com/0/67320/3f60e982-ee31-f648-603a-c77018180f93.png)

## 参考サイト
[Unityで外部データ読み込み - Qiita](http://qiita.com/wasman3/items/5e4d3df219bba2a14f81)
[SimpleJSON - Unify Community Wiki](http://wiki.unity3d.com/index.php/SimpleJSON)

## ソースコード
ソースコードは下記のリンクよりダウンロードできます。

[UnityExample/JSONSample - GitHub](https://github.com/kawai-hiroyuki/UnityExample/tree/master/JSONSample)
PycURL をインストールした時のメモ

はじめに
---
テキストベースでウェブサイトの情報を拾いたい時には、これまで普通に cURL を使っていた。出力を拾ってあれこれやろうと思うといろいろ大変かなぁと思っていた。しかし Python には PycURL という強い味方があったのだ。これで行ける！と喜んだのもつかの間...

つまづく
----
早速 PIP インストールして使おうとしたらエラーが出る。現物のエラーをコピっておくのを忘れてしまったが確かこんな感じのエラーだったように記憶している。

pycurl: libcurl link-time ssl backend (nss) is different from compile-time ssl backend (openssl)

ようは何を言っているかというと Compile 時の SSL ライブラリと libcurl の Link 時の SSL ライブラリが一致してないよということらしい。それを合わせてあげる必要がある。

[Network Security Services について(wikipedia)より](http://ja.wikipedia.org/wiki/Network_Security_Services)
 
とりあえず私が対処した方法は以下の通りで、一旦 pycurl をアンインストールして、環境変数で PycURL のコンパイルオプションで SSL ライブラリを nss に変更してあげたらちゃんと動いた。

```
# pip uninstall pycurl
# export PYCURL_SSL_LIBRARY=nss
# pip install pycurl
```

おわりに
---
本当はこういうのはハマった時に対処しながらブログなり Qiita なりにまとめるべきだと思った。いっつもハマったことを解決できた瞬間にわーいと忘れるので成長しないのだなぁと思っている。
追加で指示する

`make`コマンド打ってから、あービルド終わったらインストールもしておいてほしいな、だとか、スリープに入って欲しいな、のように思うことがあったのだけれども、追加で指示する方法が分かったので書いておく。

```shell-session
% make
** 長い長い作業
** ここでCtrl+Zを押して中止する
^Z
zsh: suspended  make
% fg && make install
** 作業再開、make終了後 make install が行われる
```

要は`fg`コマンドや`bg`コマンドをちゃんと活用しましょうってことです。