OmniAICreator/Qiita-1.07M huggingface dataset:
eclipse 環境構築メモ（プロクシ設定編）

# eclipse 環境構築メモ（プロクシ設定編）


## はじめに
PHPでのプログラミングとして、いつもはテキストエディタか規模が大きくなると、NetBeanseをつかっていました。eclipseのPHP版など使いたくなかったのですが、eclipseができて、NetBeanseができないことがあります。それは、ひとつのプロジェクトのなかで文字コードが混在する場合、eclipseだとファイル単位で文字コードを指定することができることです。NetBeanseはプロジェクト単位で文字コードを統一しないといけません。使い勝手や起動の速さなど個人的にはNetBeanseが好きなんですが、改修という業務で使う場合、文字コードが混在することはよくあります。現場によっては、メジャーなフリーソフトしか使ってはダメというところがあるので、eclipseを選択しました。

現職ではプロクシをつかっているため、eclipseにも適用させないといけません。
そのときのメモなど。上から順に試していって、つながったら以降はしなくてOKです。


## 実施環境
■MergeDoc Project: Eclipse
http://mergedoc.sourceforge.jp/

Eclipse 4.3 Kepler PHP ver.
Standard

■XAMPP
http://www.apachefriends.org/jp/index.html

環境変数など設定するのが面倒なので個別インストールが良し



## eclipse側設定
[ウィンドウ] -> [設定] -> [一般] -> [ネットワーク接続]
「Active」を「Manual」に変更し、「HTTP」および「HTTPS」の設定を行えばOK。
なお、プロキシ側にsocksの設定が無い場合、下手に「SOCKS」を設定してしまうと接続できなくなるので注意。
プロキシが HTTP/HTTPS にしか対応していない場合でも、SOCKS のところにプロキシ設定が入力されていると、Galileo以降 はそちらを使おうとしてしまい、接続できなくなることがある。解決するには、SOCKS の行を選択して、右側の Clear ボタンを押す (もちろんその後 Apply を押すのも忘れずに)



## 設定を直接書き換える（それでもつながらない場合）
[ウィンドウ] -> [設定] -> [一般] -> [ネットワーク接続]
この設定が書き込まれるファイルは以下のため直接書き換える。
eclipse -clean で起動。


```xml:\eclipse\configuration.settings\org.eclipse.core.net.prefs

eclipse.preferences.version=1
nonProxiedHosts=
org.eclipse.core.net.hasMigrated=true
proxiesEnabled=true
proxyData/HTTP/hasAuth=true
proxyData/HTTP/host=<PROXYSERVER>
proxyData/HTTP/port=<PORT>
proxyData/HTTPS/hasAuth=true
proxyData/HTTPS/host=<PROXYSERVER>
proxyData/HTTPS/port=<PORT>
systemProxiesEnabled=false

```


## NTLMv2 を使用している環境でプロキシ認証に失敗する現象（それでもつながらない場合）
eclipse.ini に起動オプション を末尾に追記する。
Eclipse 起動時のシステムプロパティに以下を指定する。
1 行目は HttpClient を使わないようにする設定。
2 行目以降はプロキシの設定なので、自分の環境に合わせて書き換える必要がある。
パスワードを書かなければいけないので、やや危険。
NTLMv2 と BASIC 認証の両方をサポートしているプロキシの場合、HttpClient を有効にしたままでも、ユーザ名を「mydomain\myusername」の形式で入力すると通ることがある。通常はユーザ名のみでOK。
eclipse -clean で起動。


```xml:\eclipse\eclipse.ini

-Dorg.eclipse.ecf.provider.filetransfer.excludeContributors=org.eclipse.ecf.provider.filetransfer.httpclient
-Dhttp.proxyPort=8080
-Dhttp.proxyHost=myproxy
-Dhttp.proxyUser=mydomain\myusername
-Dhttp.proxyPassword=mypassword
-Dhttp.nonProxyHosts=localhost|127.0.0.1

```


## 他バージョン管理でプロキシ設定が残っている現象（それでもつながらない場合）
.eclipse\org.eclipse.equinox.security\secure_storage をリネーム
eclipse -clean で起動。

SVN とか Maven とか git とかの proxy設定は、それぞれ別の設定ファイルがあるからそっちで設定。



## 参考資料
http://xiaoxia.exblog.jp/18687963


## まとめ
Android開発でeclipseを使っていたのでそれほど操作に違和感はないけど、できればNetBeanseが好き。
NetBeanseいいよ、NetBeanse･･･
Esenthelエンジン始めるなら「今」？！、、、かも！！

![Esenthel](http://www.esenthel.com/site/images/logo/esenthel.png)
ゲームエンジンはUnity, Unreal, CryEngineの3大エンジンが高度な機能を提供しながら熾烈な競争をしている。

そんな中で安価な独立系ゲームエンジンがあることを知り、また予想外に高機能なので紹介することにしてみた。

また内容については[Esenthel Engineというゲームエンジンが予想外に面白かったのでメモ](http://qiita.com/yasei_no_otoko/items/a85c677714fb12903f81)という素晴らしいまとめがあったのでこれを参考に色々とEsenthelで遊んでみた。

#Esenthelのイチオシ
* 値段がたった199ドル？！
* Win/Mac/Linux/iOS/Android対応
* WebGLに対応。早くも[Liveデモ](http://esenthel.com/?id=live_demo)を公開
* 39.99ドルの[MMOのサンプル](http://www.esenthel.com/?id=store&item=7)がある
* C++が書ける

![Knight](http://esenthel.com/site/images/screens/Fantasy%20Knight/8.jpg)

#日本語情報
ウェブ上では先のまとめを除いて、ほとんど存在しない様子。2014年のSoftwareDesign4月号にEsenthel Engineを使っみよう！という記事はあるそうだ。

日本語でやりとりしている掲示板もなく、ここは苦労するだろう。公式マニュアルについては有志で翻訳されているので参考になるかもしれない。
（まだ一部翻訳だが、インストールからデモ起動まで画面コピー付きでカバーされている。）

####原文

* [Esenthel Document](http://esenthel.com/?id=doc#Welcome)

####翻訳

* [Esenthelドキュメント（非公式翻訳）]
(http://gamesonytablet.blogspot.jp/2014/03/esenthel.html)

![Game](http://esenthel.com/site/images/screens/Tales%20of%20Ocean%20Fantasy/2.jpg)
windows8.1 のexplorer.exeで右クリックするとクラッシュする問題の対処法

以前からWindows8.1を使用しているのですが、explorer.exeで右クリックすると必ずクラッシュするという大変苦しい不具合が発生しておりました。
今回私の場合の解決策が見つかったので、私のブログにまとめてみました。↓
http://infotech776.blog.fc2.com/blog-entry-47.html

同じ症状でお困りの方がいらっしゃいましたら、ご覧になってみてください！
「PHP」関数を使ってみる。


PHPに組み込まれた「関数」を使うと、文字列や数値の加工を含め、さまざまな処理を組み立てる事が出来ます。
実際どれくらいの関数が使えるかというと、、なんと1000を超える関数がPHPでは使用出来ます。


##`round`関数(四捨五入する関数)を使って見てみましょう。

・関数の呼び出し方↓round関数を例に書いてみました。

![kansuu01.png](https://qiita-image-store.s3.amazonaws.com/0/35975/98dd0e00-e3ef-0bee-14a5-06ff46d4f742.png "kansuu01.png")

このような順番で書きます。

結果は

```php
<?php
//「123.456」を小数点以下第1位で四捨五入する
$a = round(123.456, 1);
echo $a;  //123.5
?>

```
以下結果↓
![kansuu002.png](https://qiita-image-store.s3.amazonaws.com/0/35975/cadde2a5-d722-2ef2-a5e0-c7c60ec1ef68.png "kansuu002.png")


##PHP関数の使い方を調べるには(使える関数をどこで探すのか)

どの処理でどの関数を使うのか？、、これについては後々紹介します。
しかし、取り急ぎ「どんな関数があるのか？」を知りたいときには、、、

「PHPの公式ホームページ」にある「PHPマニュアル」を参照する事が一般的であるようです。
・PHPマニュアルのURL↓
[http://www.php.net/manual/ja/](http://www.php.net/manual/ja/)
メールに添付されたPDFをテキスト形式にする

とある会社からPDFが添付されたメールが送られてくる。

GmailなどPDFも検索できるメールサービスを使うのも手だが、あまり外部に出したくないのと、特定のキーワードが見つかった場合に適当に処理させたかったので、PythonのpyPdfを試してみた。

まず。メールの設定から。普段、使ってるメールソフトを「サーバにメールを残す」という設定にして、サーバに残ってるメールをfetchmailとprocmailで取得する。今回はCygwin環境のものを使い、下記のような設定ファイルを書いた。


```text:.fetchmailrc
defaults
  fetchall
  keep
  mda "/usr/bin/procmail"

poll pop.xxx.com
  protocol pop3
  port 110
  username "XXXXX"
  password "XXXXX"
```


```text:.procmailrc
MAILDIR=$HOME/Mail/
DEFAULT=/dev/null

:0 H
* ^From:.*test@example.com
/var/spool/mail/t.uehara/
```

こう書くことで、test@exampleからのメールは/var/spool/mailに格納され、他のメールは/dev/null（つまり廃棄）。fetchmail側でkeepと書いているのでサーバ上には残される。格納先はどこでもいいのだが、Muttなどで読めた方が動作確認に便利なので、/var/spool/mailにしておいた。

次にpyPdfをダウンロードしてpython setup.py installする。

http://pybrary.net/pyPdf/

[pyPdfのサンプルプログラム](http://pybrary.net/pyPdf/)と、[emailパッケージを使って添付ファイルを書き出すサンプル](http://docs.python.jp/2/library/email-examples.html)を適当にコピペして、適当なフォルダにPDFファイルと、PDFファイルからテキストを抜き出したファイルを生成するスクリプトを書く。

```python:pdfmail.py
import os
import sys

import email
import mailbox
import mimetypes

import pyPdf

def pdfmail(msgfile):

    fp = open(msgfile)
    msg = email.message_from_file(fp)
    fp.close()

    counter = 1
    for part in msg.walk():
        if part.get_content_maintype() == 'multipart':
            continue
        fname = part.get_filename()
        if not fname:
            ext = mimetypes.guess_extension(part.get_type())
            if not ext:
                ext = '.bin'
            fname = 'part-%03d%s' % (counter, ext)
        counter += 1

        if fname.find('.pdf') != -1:

            print fname

            fp = open('pdf/'+fname, 'wb')
            fp.write(part.get_payload(decode=True))
            fp.close()

            c = getPDFContent('pdf/'+fname).encode("ascii","xmlcharrefreplace")
            fp = open('pdf/'+fname+".txt", 'wb')
            fp.write(c)
            fp.close()
def getPDFContent(path):
    content = ""
    pdf = pyPdf.PdfFileReader(file(path, "rb"))
    for i in range(0, pdf.getNumPages()):
        content += pdf.getPage(i).extractText() + "\n"
    content = " ".join(content.replace(u"\xa0", " ").strip().split())
    return content

if __name__ == '__main__':

    maildir = '/var/spool/mail/t.uehara'
    m = mailbox.Maildir(maildir)
    for key in m.keys():
        pdfmail(maildir+'/new/'+key)
```

最後に、こんな感じでバッチファイルを作って、Windowsのタスクスケジューラ等で定期的に回せばOK。

```bat:pdfmail.bat
C:\cygwin\bin\bash --login -i -c "fetchmail"
C:\cygwin\bin\python2.7.exe pdfmail.py
```
《REST思想》と《リソース指向》と《Webページ》を一緒にしてはいけない

## はじめに

Ruby on Rails や同種のフレームワークを使っていると、《REST思想》と《リソース指向》と《Webページ》がごちゃまぜになったWebアプリケーションをつい設計してしまいます。
三つの違いを意識し、適切なWebアプリケーションを作成するようにしましょう。でないと後悔することになります。

なお、この三つの用語は本来の意味とずれているかもしれません。
「コメント」、「編集リクエスト」大歓迎です。

## 解説

`http://yourhost/books` のURLで本の一覧が取得できるようなWebサービスを提供するとします。
では `/books` を含めた各URLはどのように振る舞うべきなのでしょうか。

（URLと言っている部分でも実際はpathを指している場合があります。ご了承ください）

### REST思想

本に対してCRUD操作を行うインタフェースとして、以下のようなものを提供します。

|役割|method + URL|
|----|----|
|本一覧を取得|GET /books|
|一つの本を取得|GET /books/1|
|新しい本を追加|POST /books|
|既存の本を修正|PUT /books/1|
|既存の本を削除|DELETE /books/1|

各本の情報はJSONで表現されます。`/books` にGETリクエストした場合はレスポンスとして本の一覧がJSONとして返されます。

本の追加や削除を行う場合は、本情報をJSON形式でPOSTリクエストのボディとして送ります。`application/x-www-form-urlencoded`形式で送ることは避けるべきです。
更新に失敗した場合、失敗した理由をJSON形式で返します。
ステータスコードは、取得時・更新成功時には`200 OK`を、更新失敗時には4XX番代を使うのがよいでしょう。

情報はJSON形式と書きましたが、XMLなどでも構いません。
しかし、正常系・異常系ともにアプリケーション内で統一された形式を利用してください。

### リソース指向

本の情報は`/books`にあるとして、拡張子を変えることで、様々なフォーマットでデータを利用できるようにします。
例えば本の一覧をJSON形式で欲しければ`/books.json`にリクエストし、csv形式で欲しければ、`/books.csv`にリクエストします。
`/books.xls`のようにバイナリを提供してもかまいません。 

更新用のAPIは用意しない方が良いでしょう。
`/books.csv`に対する更新を行う場合は、はPOSTリクエストのボディとして何を送ればよいのでしょうか。CSV形式で良いのでしょうか。JSONでしょうか。
また、更新に失敗したときのエラーはどう返すべきでしょうか。もし`/books.csv`にリクエストししたにも関わらず、JSON形式でエラーを返ってくることになると、クライアントは苦労するでしょう。

### Webページ

サーバはHTMLを返し、ブラウザはAjaxを使わずHTML FormでデータのCRUDを行います。

Webページの場合、RESTと違い以下のようなインタフェースを提供すべきです。

|役割|URL|
|----|----|
|一覧画面を表示|GET /books|
|詳細画面を表示|GET /books/1|
|追加formを表示|GET /books/new|
|追加アクション|POST /books/new|
|編集formを表示|GET /books/1/edit|
|編集アクション|POST /books/1/edit|
|削除確認画面を表示（任意）|GET /books/1/delete|
|削除アクション|POST /books/1/delete|

REST同様にCRUD用のAPIを提供しますが、Webページの場合は更新Formを表示するためのページが必要になります。
さらに更新に失敗した際、適切にエラーを見せるには

- 更新FormページのURLとPOST先のURLを同じにする
- 成功した場合、一覧ページあるいは詳細ページにリダイレクトする
- 失敗した場合、エラーを表示し、Formを直前の入力で埋める

のがよいでしょう。

URLを同じにすることで、CSSなどのリソースのパスや、リクエストパスに依存したコードを書きやすくなります。
成功時にリダイレクトすることで、`F5`対策になります。リダイレクトには`303 See Other`を利用してください。
失敗時にリダイレクトせずそのまま表示することで、エラーや直前の入力をFormに表示しやすくなります。

HTML FormではリクエストメソッドとしてGETかPOSTしか利用できません。取得はGET、更新はPOSTを利用しましょう。わざわざ`_method=put`のようなリクエストパラメタを利用しても、得られるものはありません。

## まとめ

同じURL `/books` であっても様々な設計があるということを理解してもらえたと思います。

この三つ全てをまとめて提供することは可能です。しかしControllerのコードは複雑になり、一部の機能はほとんど使われず、削除したくても一度提供したので消せないという結末に終わります。

もし複数提供する必要がある場合、URLを別にするのが良い解決案です例えば以下のように分けることができます。
（※ ただしドメイン直下は常にWebページを提供するのが良い）

|目的|URL|
|----|----|
|REST|http://yourhost/api/books|
|リソース|http://yourhost/books|
|WEBページ|http://yourhost/web/books|

要件にあわせ、素敵なアプリケーションを設計してください。
[WIP]GDC2014水曜日メモ

[WIP]GDC2014水曜日GDC Expoフロアーも開く。前二日よりもお祭り感が出てくる。書きかけたので帰国したら清書する。

火曜日のレポートは->http://qiita.com/shibacow/items/2849fc2e38c6b2de4762

月曜日のレポートは->http://qiita.com/shibacow/items/ce28226085fd90f860c0
 
## Flash Forward

http://schedule.gdconf.com/session-id/828302

各セッションの発表者が、発表の内容を３０−４５秒程度にまとめて、つづけさまにプレゼンする。紹介ビデオや紹介イメージも流されるので、見栄えのするグラフィック関連の人が多かった。一人、Rainの日本人ディレクターの人が、たどたどしい英語で紹介しており、凄く好感が持てた。

## Multitasking with Coroutines

http://schedule.gdconf.com/session-id/828019

うってかわって、プログラミングのセッション。eve onlineというMMOでは、client,serverともに、stackless pythonを使っている。この会では、ステートマシン、マルチスレッド、イベントドリブン方式と比較して、コルーチンの利点を説明していた。処理をシンプルに出来て、パフォーマンスの低下が無い事が大きな利点だと言っていた。
eveオンラインでは、serverで5万タスクレット(スレッドみたいな物)を処理しているそうだ。

## U.S. National Investment in the Future of Games?

http://schedule.gdconf.com/session-id/826063

アメリカ政府のゲーム産業への取り組み。４人の後援者が連続で、講演する。政府のゲームに対する取り組みは主に３種の分野がある。一つにはゲームのアーカイビング化、後は、教育、そして面白いのが、軍。この三つの分野がある。アーカイビングでは、センターを作ろうとしている様だった。教育では、セカンドライフ風の仮想世界にアバターとして入って、授業を受けるような事をしていた。軍は面白くて、フライトシミュレーターとか、陸軍向けのシミュレーターの開発をゲーム会社にしてもらっていた。日本ではあまり聞かなくなったがシリアスゲームの文脈で、ゲーム文法のゲーム以外の応用を探しているようだった。
アメリカも、研究者とゲームメーカーの間で溝があると嘆いてたのが面白かった。あと、DRMを掛けられると後の世代に伝えづらいそうだ。考えれば、ソーシャルゲームも後の世代に向けて、保存するのは難しそうだ。

## Game History MUsium.

歴史的ゲームを展示して遊べるコーナーが一画にもうけてあった。募金ベースでやっているようだった。任天堂のゲームボーイやら、ディスクシステムやら懐かしい機材がずらっと置いてあった。公共セクターもそうだが、歴史的な価値がある物を残そうという価値観があるのだと思った。

## Big Data Analytics 101: From DAU to Predictive Modeling

http://schedule.gdconf.com/session-id/825782

データ分析の入門向けコース。これ以外にデータ分析に関するサミットは無かったように思う。結構大入り満員だった。DAU/MAUと言った基本KPIの話から、予測の話までを一通り喋った。特にゲームに限定した話ではなく、一般的な話だった。DAUはMAU重視は、日本とかわらないが、DAU/MAU重視なのは面白かった。
 平均だと、一人の廃ユーザーに引きずられすぎるので、標準偏差やジニ係数を見ろと言っていた。後はコホート(小集団)分析やファンネル分析の話と、回帰分析の話をしていた。
最後はネットワーク分析の話で、太っている人の周りにいる人は太りやすいという分析結果を披露していた。
アメリカで重視する項目も日本とそこまでかわらないかもと感じた。

## Is Your Business Model Evil? The Moral Maze of the New Games Business

http://schedule.gdconf.com/session-id/825590

DeNAの人によるF2Pゲームビジネスモデルの擁護。F2Pモデルは、良く非難されるが、それはどのような点で、非難されるかを話していた。良く非難される子供が高額課金をするのという話は間違いで、本当は、アグレッシブなマーケティングの方が問題になると言っていた。
アーケードや、商品小売り、F2P、ゲーム内広告、クラウドソーシング等複数のビジネスモデルに対して、スコアを付けて善し悪しを判断しているのはさすがだと思った。F2Pは単純に新ので批判されていると言っていた。
言っている事は、そこまでお隠し無かったが、DeNAの人間である事をプレゼン中に明示しないのはポジショントークととらえられても仕方が無いなと思った。
スコアリングの仕方で、ポイントが上下するのではないかと思った。つまり、言う程悪くないの根拠が崩れると思った。

## IGF & Choice Awards

http://schedule.gdconf.com/session-id/827912

インディゲームの大賞を決める物と、ゲーム開発者が決める今年一番のゲームフェスティバル。
ペーパープリーズという入国審査間になるゲームは面白かった。同行した人が、インディゲームは、メディアアートに似ていて世の中の把握の仕方を少し変えてくれると言っていたが本当にそうだと思った。結構インディゲームの方が人気があるようで、インディゲームの大賞が発表された後、みんなぞろぞろ退席していたのは面白かった。
あと、亡くなった故人を顕彰する映像が流れて、任天堂の山内さんが紹介されていた。きちんとゲーム開発の発展に貢献した人に敬意を払う文化があると感じた。
MATLAB-Sample 【基礎】データを作る

いろいろなデータを作ってみる。

# 等間隔のデータを作る
次のような奇数のデータを作ってみる。

```math
A = \left( \begin{array}{cc} 1 & 3 & 5 & 7 & 9 \end{array} \right)
```
初期値が1、間隔が2、最終値が9となるので、次のように記述する。

```matlab
> A = 1:2:9;
> A

A =

  1 3 5 7 9
```

ちなみに、真ん中の数字を省略すると、間隔1のデータが生成できる。

```matlab
> A = 1:9;
> A

A = 

  1 2 3 4 5 6 7 8 9
```

# 数学関数の値を作る

前項の「等間隔のデータを作る」で作ったデータから、数学関数のデータを作り出せる。ここでは次の式、

```math
y = \sin(x) \hspace{20pt} (0 \leq x \leq 2\pi)
```

の $y$ を配列で求めてみる。まずは $x$ の値を作る。整数だとなめらかなsinカーブにならないので、実数で定義してみよう。間隔は0.01ぐらいで。
尚、円周率 $\pi$ は、MATLABでは定数`pi`で参照できる。

```matlab
> X = 0.0:0.01:2 * pi;
> X

X =

  ... %大量のデータが出力されるので省略
```

では `X`から$y$ の値を生成してみる。

```matlab
> Y = sin(X);
> Y

Y =

  ... %やはり大量のデータが出力されるので省略
```
とても簡単。が、これでは気軽に確認できない。もうちょっとこう視覚的に見たいので、少しだけ勇み足で`plot`関数を使ってグラフを表示してみる。（`plot`関数の細かい説明は別トピックスに記載する予定。）

```matlab
> plot(X, Y);

```

こんなグラフが出ればOK。

![sinカーブ.png](https://qiita-image-store.s3.amazonaws.com/0/39876/c6ef099c-965b-3e89-cd10-4791033395d6.png)


sin関数は、引数に1次元配列だけでなく、スカラ値（単に一つの数値）、行列も入力できる。

```matlab
> X = [ 0 pi/2 ; pi pi * 3/2 ];
> Y = sin(X);
> Y

Y =

         0    1.0000
    0.0000   -1.0000
```

各要素毎にsin関数を適用した値の行列が返される。

他にも同じような使い方ができる関数があると思う。


# ランダムなデータを作る

肝になるのは`rand`関数。デフォルトで0～1の間の実数を返す。
基本的な使い方は、引数のとり方を２つ覚えれば十分かと。

まずは引数を１つだけ指定した場合。引数をnとした場合、n行n列で、0～1の間の乱数を要素とする行列を返す。

```matlab
> %
> X = rand(1);
> X

X =

    0.2714 

> X = rand(2);
> X

X =

    0.2174    0.2305
    0.6897    0.1721
```

次に引数を２つ指定した場合。第1引数をm、第2引数をnとすると、m行n列で、0～1の間の乱数を要素とする行列を返す。

```matlab
> X = rand(2, 3);
> X

X =

    0.9545    0.2276    0.1522
    0.7410    0.7689    0.6552
```
Androidの単体テストプロジェクトでassetsを使う

Test Project(IDEAならModule)側のassetsを読みたいときはInstrumentationTestCaseを継承した単体テストクラスを使う。

```java
public class AssetsTest extends InstrumentationTestCase
{

    public void testReadJson() throws Exception
    {
        AssetManager assets = getInstrumentation().getContext().getAssets();
        String buffer = "";
        try(InputStream is = assets.open(fileName);
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader reader = new BufferedReader(isr))
        {
            String str;
            while((str = reader.readLine()) != null)
            {
                buffer += str;
            }
        }
        assertNotSame("", buffer);
    }
}
```

今回はモックオブジェクト用の外部APIからのレスポンスjsonを単体テストで用いるためにこれが必要になった。
テストにしか使わないファイルはテスト側のプロジェクトに置いておけるので便利。
<del>ここで取得できるAssetManagerで本体プロジェクト側のassetsにアクセス出来るのかはまだ試してない。</del>
コメントで補足していただきました。
attrs.xml に同じ名前・型の属性名を定義したい

CustomView を作っていると、独自の xml の属性を定義するために`attrs.xml`を作って、`<declare-styleable>`でアトリビュートを定義する場面があります。

この時、同じ型で同じ名前の属性を、複数の CustomView にまたがって使い回したい場面で、以下のようにすると、エラーでビルドできません。

```xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CompoundRelativeLayout">
        <attr name="checked" format="boolean|reference"/>
    </declare-styleable>
    <declare-styleable name="CompoundFrameLayout">
        <attr name="checked" format="boolean|reference"/>
    </declare-styleable>
    <declare-styleable name="CompoundGridLayout">
        <attr name="checked" format="boolean|reference"/>
    </declare-styleable>
    <declare-styleable name="CompoundLinearLayout">
        <attr name="checked" format="boolean|reference"/>
    </declare-styleable>
</resources>
```

同じ名前・型の属性を複数宣言していることになるため、コンパイルに失敗します。

`<attr>`タグは、`<declare-styleable>`タグの子要素としてだけでなく、`<resources>`タグの子要素としても配置することが出来、`<resources>`タグの子要素としておくことで、複数の CustomView で共通な名前・型の属性を宣言することになります。

```xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="checked" format="boolean|reference"/>
    <declare-styleable name="CompoundRelativeLayout">
        <attr name="checked"/>
    </declare-styleable>
    <declare-styleable name="CompoundFrameLayout">
        <attr name="checked"/>
    </declare-styleable>
    <declare-styleable name="CompoundGridLayout">
        <attr name="checked"/>
    </declare-styleable>
    <declare-styleable name="CompoundLinearLayout">
        <attr name="checked"/>
    </declare-styleable>
</resources>
```

これで無事コンパイルできるようになりました。
「ライトついてますか」から学ぶ問題発見の心得

この記事は自分の[ブログに書いた記事](http://kimh.github.io/blog/jp/thoughts/important-things-about-problem-finding-learnd-from-are-your-lights-on-ja/)を早く読めるように短縮したものです。

エンジニアの一日は問題解決の連続です。普段は当たり前すぎて意識していませんが、気にしてみるといかにそうであるかがわかります。

 - 落ちたサーバを復旧させる
 - 与えられた文字列を正規化するコードを書く
 - 関係者全員のスケジュールが合うようにミーティングをセッティングする

優れた解決方法を考えだすには、まず問題を正しく定義しなければいけません。

この記事では問題発見学の名著、「[ライトついてますか]("http://www.amazon.co.jp/%E3%83%A9%E3%82%A4%E3%83%88%E3%80%81%E3%81%A4%E3%81%84%E3%81%A6%E3%81%BE%E3%81%99%E3%81%8B%E2%80%95%E5%95%8F%E9%A1%8C%E7%99%BA%E8%A6%8B%E3%81%AE%E4%BA%BA%E9%96%93%E5%AD%A6-%E3%83%89%E3%83%8A%E3%83%AB%E3%83%89%E3%83%BBC%E3%83%BB%E3%82%B4%E3%83%BC%E3%82%B9/dp/4320023684")」 から重要な点を引用して、どのようにすればより良い問題定義ができるかについて書きたいと思います。

**注：**引用が英語なのは原本しか読んでいないからです。"訳："とあるところは自分で翻訳しただけなので日本語版の実際の言い回しとは異なります。
また今回読んだKindle版にはページ情報がなかったので、引用元はページ番号ではなくその引用があった章を代わりに書いています。

## 問題とは何か？
***A problem is a difference between things as desired and things as perceived*** **（３章）**

**訳：**問題とはそうあるべき状態と今ある状態の差である

そもそも問題とはなんでしょうか？著者は問題を上記のように定義しています。
問題をこのように定義するといいことがひとつあります。それは、見方を変えることで問題が解決する可能性があることです。

***Don't take their solution method for a problem definition*** **（４章）**

**訳：**他人の解決方法を問題の定義としてはいけない

人が問題だと言っていることが本当の問題とは限りません。問題の解決方法について相談を受けた時は、本当に解決したいことは何なのかを詳しく聞くことが大事です。

## 問題を解決する前に
問題がきちんと定義されれば解決することはさほど難しくありません。しかし、ちょっと待ってください。その問題はあなたの問題ですか？本当にあなたが解決しないといけませんか？

まずは、次の質問を自分に問いかけてみましょう。

***Whose problem is it?*** **（１１章）**

**訳：**誰の問題か？

本当にあなたが解決しなければいけませんか？もし、その問題が誰かの問題ならあなたが解決しようとするべきではありません。
もし、あなたの問題でなければ、頼まれないかぎり何もしないのがベストです。私たちは自分の問題解決に時間に忙しいはずですから。

***Where does this problem come from?*** **（１４章）**

**訳：**この問題はどこから来たのか？

この問いも問題が本当に自分の問題なのか調べるのに役立ちます。なぜ自分はその問題に直面しているのか？なぜこんなことになったのか？
自分に落ち度があるか？それとも、誰か他人に巻き込まれたか？

***Ignoring the problem*** **（３章）**

**訳：**問題を無視する

時には問題そのものを無視するのもありです。気づかないふりをしていまいましょう。問題は、あるべき状態と現在の状態の差ですが、
人間はすぐに適応する生き物です。最初はみんな問題だと感じてもいつの間にかそれが当たり前のようになるものです。

## 考えをやめない
あなたは問題を正しく定義して適切な解答を導き出しました。しかし、まだリラックスはできません。

***Each solution is the source of the next problem*** **（７章）**

**訳：**あるひとつの解決方法は別の新しい問題を生む

私たちが問題を解決してもリラックスできないのは、その解決方法がまた別の問題を生み出すからです。これはエンジニアは直感的に理解していると思います。

***The really important thing in dealing with problems is to know that the question is never answered, but that it doesn't matter, as long as you keep asking*** **（第６章）**

**訳：**最も重要なことは問題は解決されることがないと知ることだ。しかし、考えることを止めなければは大したことではない。

無事に解決方法を見つけても、その解決方法が最も正しかったかどうかはわかりません。それどころか、問題定義がそもそも正しくなかったかもしれません。

自分の出した答えが完璧だったと信じることが一番厄介です。なぜなら、完璧な答えなどないからです。だから、私たちは常に問題を振り返って見直さなければいけないのです。
[WIP]GDC2014 火曜メモ

# [WIP]GDC2014火曜日めも
GDC2014に言って来た帰国したら清書するが、雰囲気を伝える為に速報をメモする。

月曜日のメモはこちら-> http://qiita.com/shibacow/items/ce28226085fd90f860c0


## The Programming of Gone Home: How to Succeed by Being Lazy

http://schedule.gdconf.com/session-id/826827

どのように楽にプログラミングを書くかというセッション。怠惰は美徳を如何に実践するかが主な議題だった。最初に考える事は、どのように楽にインハウスで、仕組みを作るかではなく、その機能を実現するために最も効果的な事は何かが先であるという話は面白かった。
デザイナーが出来る事に落とし込むと良い。キーボードからは鳴れる。twitterで他人に助けを乞う。クラウドソーシングしてみるとか、タスクをコンピューターではなく、他の人にうまく割り振る事をテーマにしていた。
アセットも外部の人を利用しろと言っており、UnityのAsset(他の人が作った物を流用できる仕組み)の利用を呼びかけていた。質疑応答で、そのUnityのAssetを使った場合の著作権問題について突っ込まれていた。外部のリソースを勝手にunityに登録した人がいて、そのリソースを使った場合、責任はどこになるのかという話。そこは、Unityを信用すると苦しい受け答えをしていた。
そこまで面白い話ではなかった。


## Emerging Communities: A Snapshot of the Brazilian Indie Game Development Scene

http://schedule.gdconf.com/session-id/827405

ブラジルのインディゲーム業界の話。ブラジルは外部からは、リオのカーニバルトサッカーのイメージしかない。PS4が1700ドルとやたら高い。ゲーム開発者の規模は増えているがAAAカンパニーはまだ無い。ブラジルのゲーム産業は主に、英語で成り立っている。ほとんど英語で作られている。

##Most Effective User Acquisition Techniques

http://schedule.gdconf.com/session-id/827562

GREEによるユーザー集客の話。集客の為にしている事は、アプリ説明文やアイコンのA/Bテストなどが主で、文化として数字を凄く追う文化になっていると感じた。ゲームのライフサイクルに応じて、取るべき対応が異なっており、集客、その後のLTVと分けていた。全般的に、よどみない発表で、出来る人のオーラが半端無かった。


  
## Volunteers: Collaborative Engagement at its Finest!

http://schedule.gdconf.com/session-id/827533

SOEによる、如何にボランティアとともに協業して、ゲームを作って行くかという話。ゲームのコミュニティー運営にもボランティアが関わっており、そこは面白かった。
ボランティアを使うといっても、何でもお任せするというよりも、ちゃんとSOEがモデレートしてユーザーとコミュニケーションを取っているのが面白かった。
お任せではなく会社がコミュニティーに関わる場合、コミュニティー間のえこひいき問題が発生すると思うが、それにどのように対応しているか分からなかった。



  
## Why Whales Sing: Heavy Spenders Drive Virality and Retention

http://schedule.gdconf.com/session-id/827516

ヘビーユーザーの分析。どこからこんなデータを集めたのかと思いたくなる程面白いデータ。
スライドはこちら。アメリカの廃課金者の話が主だ。
http://www.slideshare.net/abyssi/why-whales-sing

月50ドル以上課金する人は、全体の1パーセント。 ６割の人は無課金。
廃課金者はよく遊んでいる。タブレットが好き。コンバット、アクション、RPG,カジノにお金を払う。主な属性は、男性、中年、iOS好き、週に10時間以上遊ぶユーザーだ。
普通の人は、暇つぶしと休息が主な目的だが、ヘビーユーザーは、競争と現実逃避が主な目的だ。
ゲームをどの湯に見つけるか？
オンンラインで、友人の言及から探す。
元々に熱心に探している。
実況動画は効果的だ。
YoutubeとFaceBookが主な導入口になっている。
廃課金者は、ゲーム内のソーシャル機能が好き。
強いコミュニティーは全ての人にアピールする。
ニックネームとアバターは、凄くすき。
廃課金者は、攻略情報をシェアしたがる。
FaceBookが一番シェアしており、次がYoutube.
プレイヤーはシェアする事でゲームコミュニティの一部になったと感じる。
ヘビーユーザーは、競争的なゲームを好み、そして、コミュニティに貢献する為、情報のシェアも喜んでする。
EmacsでF#

たまにはEmacsでF#の開発環境を構築したいなー、って思ったりする。

## `fsharp-mode`を入れる

ぐぐったらいろいろあって混乱するんですけど、[fsharp/fsharpbinding](https://github.com/fsharp/fsharpbinding/tree/master/emacs)にあるバージョンが、たぶんいちばんいいです。

### [El-Get](https://github.com/dimitri/el-get)

僕は情弱くて[`package.el`とかよくわからない](http://qiita.com/tadsan/items/c4a80f46623ea266f5c5#3-1)。

`init.el`から読まれるところに`(el-get 'sync 'fsharp-mode)`って書くだけ。お手軽！

### `pakcage.el`

[MELPA](http://melpa.milkbox.net/)をリポジトリに登録すればうまく行くんじゃないかと思ったけどうまくいかなかったので僕は[El-Getに逃げた](https://github.com/dimitri/el-get/pull/1635)んです。あとはよろしく！

### パッケージマネージャに頼らない

[fsharpbinding/emacs/README.md at master · fsharp/fsharpbinding](https://github.com/fsharp/fsharpbinding/blob/master/emacs/README.md)を読んで自分でビルドしてもいいんですけど、お手軽には[rneatherway/emacs-fsharp-mode-bin](https://github.com/rneatherway/emacs-fsharp-mode-bin)を`git clone`してきてディレクトリに`load-path`を通すだけでいいです。

## Usage

ふつうにF#のコードが書けるようになります。

のみならず、エディタからそのまま範囲を評価してEmacs内で開いた対話環境内で実行できます。

### キーバインド

[コード嫁](https://github.com/fsharp/fsharpbinding/blob/master/emacs/fsharp-mode.el#L67)。

要約すると、標準のキー設定だと範囲を指定して`C-c C-r`で選択範囲を評価(`fsharp-eval-region`)、`C-c C-e`で入力中の文を評価(`fsharp-eval-phrase`)したり、`C-c C-c`で編集中のファイルをビルドしたりできるます。べんり。

## さいごに

![BjLP5qbCUAAAUM8.jpg](https://qiita-image-store.s3.amazonaws.com/0/4121/b37cc2fc-03ff-a08c-5261-c044bd96d72b.jpeg)

[すごいF#たのしく学ぼう！](https://gihyo.jp/dp/ebook/2012/978-4-7741-5127-4)
Capistrano3.1でnginx+unicornでRails4.1を動かす


capistrano3-unicornというGemをいれてCapfileで使えるようにする
https://github.com/tablexi/capistrano3-unicorn

`config/unicorn/production.rb `を下記URLのを使わせてもらう
http://bekkou68.hatenablog.com/entry/2013/12/21/173641


`set :unicorn_rack_env, "production"`を`config/deploy/production`で設定しないとunicornの起動コマンドが正しくならなかった。capistrano3-unicornのバグだろうか
ctags で PyPI モジュールにもタグジャンプ


プロジェクトのコードの他に PyPI のモジュールにもタグジャンプできるとコードの深追いが出来てハッピーです。

色々なやり方があると思いますが、自分はプロジェクトのルートディレクトリでワンライナーを叩いてます。

    $ctags -R `pyenv prefix`/lib/python2.7 `pyenv prefix`/lib/python2.7/site-packages .


環境は [pyenv](https://github.com/yyuu/pyenv) で python 2.7 系の利用を前提としています。

あとはお気に入りのエディタでタグジャンプの設定をして快適な ctags ライフを送りましょう！
iOS+OpenCV: Getting started

http://opencv.org/

#Download & Install
##リリース版
* [OpenCV - DOWNLOADS](http://opencv.org/downloads.html)
 * v2.4.9 (2014/5/13現在)
 * ビルドせずにそのまま使える

##最新版
* [GitHub - Open Source Computer Vision Library](https://github.com/itseez/opencv)
* [Installation in iOS](http://docs.opencv.org/doc/tutorials/introduction/ios_install/ios_install.html#ios-installation)を見ながらビルド
 * CMakeが無い人は[CMake - Get the Software](http://www.cmake.org/cmake/resources/software.html)で準備しておく
 * ビルド失敗‥よく分からないので放置 (2014/3/20)

#Samples
##[OpenCV+iOS tutorials](http://docs.opencv.org/doc/tutorials/ios/table_of_content_ios/table_of_content_ios.html#table-of-content-ios)
* OpenCV iOS Hello
* OpenCV iOS - Image Processing
* [OpenCV iOS - Video Processing](http://qiita.com/fuzzball/items/e1eb3f38b3491740ee8c)

##["OpenCV for iOS" book samples](https://github.com/Itseez/opencv_for_ios_book_samples)
[OpenCV for iOS](http://www.packtpub.com/to-build-real-time%20computer%20vision%20applications%20for-ios-using-opencv/book)という電子書籍に掲載されているサンプルのソースコード集

* Chapter01 Hello World
* Chapter02 Displaying Image
* Chapter03 Linking OpenCV
* Chapter04 Detecting Faces
* Chapter05 Printing Postcard
* Chapter06 Working with Gallery
* Chapter07 Applying Retro Effect
* Chapter08 Taking Photos from Camera
* Chapter09 Creating Static Library
* Chapter10 Capturing Video
* Chapter11 Advanced Camera Control
* [Chapter12 Processing Video](http://qiita.com/fuzzball/items/cfd84fbef453111e1711)
* Chapter13 Saving Video
* Chapter14 Optimizing with NEON
* Chapter15 Detecting Facial Features
middlemanでbuild後に何か処理を行いたい

訳あってビルド後に/build/nantoka/を消す必要がありました。
extentionを使用する方法もあるようですが、
検索したところ上記を解決する方法が別にあったので紹介。

##方法

config.rbのconfigure :build doの中にafter_build doを追加し、
systemで実行したいコマンドを書く。
コマンドが実行される場所はプロジェクトのルートになるようです。

```config.rb
configure :build do
  after_build do
    system 'rm -d build/nantoka/'
    system 'echo hoge'
    system './hoge.sh'
  end
end
```

参考になったやりとり：
http://forum.middlemanapp.com/t/execute-ruby-file-after-build/1170/4

##あとでわかったこと
単にnantokaディレクトリをbuild内に残したくないだけであれば、
configure :build do 内にignoreでフォルダを指定するほうがシンプルですね。

```config.rb
configure :build do
  ignore 'nantoka/*'
end
```

参考になったやりとり：
http://forum.middlemanapp.com/t/ignore-folder-when-build/1162/4
自動で歌詞を取得してiTunesで見る

https://github.com/maple0705/mp3Lyric

アーティスト名などがタグ付けされてる曲に使ってみてください。

![mp3lyricrslt.png](https://qiita-image-store.s3.amazonaws.com/0/38265/262b883d-b127-bf5a-891b-13ca65c0d4cc.png)
図1：成功例

![mp3lyricrslt2.png](https://qiita-image-store.s3.amazonaws.com/0/38265/45608938-99fc-cbd8-a3c9-c6cde1232fe9.png)
図2：失敗例
vimrc

kaoriya gvim

```gvimrc
"バックアップdir設定
set backupdir=$VIM/bak

"swpファイル生成dir指定
let &directory = &backupdir

"undoファイル出力先
set undodir=$VIM/undo

let $mydoc='$HOME/My Documents'
let $desktop='$HOME/デスクトップ'

"初期カレントディレクトリの設定
:cd $desktop

function! GetB()
  let c = matchstr(getline('.'), '.', col('.') - 1)
  let c = iconv(c, &enc, &fenc)
  return String2Hex(c)
endfunction
" :help eval-examples
" The function Nr2Hex() returns the Hex string of a number.
func! Nr2Hex(nr)
  let n = a:nr
  let r = ""
  while n
    let r = '0123456789ABCDEF'[n % 16] . r
    let n = n / 16
  endwhile
  return r
endfunc
" The function String2Hex() converts each character in a string to a two
" character Hex string.
func! String2Hex(str)
  let out = ''
  let ix = 0
  while ix < strlen(a:str)
    let out = out . Nr2Hex(char2nr(a:str[ix]))
    let ix = ix + 1
  endwhile
  return out
endfunc
"ステータスラインに文字コードと改行文字を表示する
if winwidth(0) >= 120
  set statusline=[%n]%1*%m%*%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %F%=[%<%{fnamemodify(getcwd(),':~')}]%-8([%{GetB()}]%)\ %-11(%l,%c%V%)\ %4P
else
  set statusline=[%n]%1*%m%*%r%h%w%{'['.(&fenc!=''?&fenc:&enc).':'.&ff.']'}%y\ %f%=[%<%{fnamemodify(getcwd(),':~')}]%-8([%{GetB()}]%)\ %-11(%l,%c%V%)\ %4P
endif

set number
set noautoindent
set cindent
set expandtab
set tabstop=4
set shiftwidth=4
set ruler
set list
set nowrap
set guifont=ゆたぽん（コーディング）Backsl:h12:cSHIFTJIS

set fileencoding=utf-8
set fileformat=dos
```
特定の条件でRailsのログ出力を抑止する


にゃんぱすー

ロードバランサのヘルスチェックで log/production.log が埋め尽くされるのが辛いので、特定の条件でログ出力を抑止する方法を調べたよ。

ロガークラスを作成する
--------------------

まず、Rails::Rack::Loggerを継承したCustomLoggerを作成する。

```ruby:lib/custom_logger.rb
class CustomLogger < Rails::Rack::Logger
  def call(env)
    if env["REMOTE_ADDR"] =~ Moe::Application.config.action_dispatch.trusted_proxies and !env["HTTP_X_FORWARDED_FOR"]
      Rails.logger.silence do
        super
      end
    else
      super
    end
  end
end
```

ここでは、ロードバランサのIPアドレスはtrusted_proxiesにマッチすること、通常のクライアントからのアクセスはヘッダにX-Fowarded-Forが付いていることを前提として、ヘルスチェックの場合のみRails.logger.silenceを呼び出してログ出力を抑止している。(クライアントのIPアドレスに置き換わるrequest.remote_ip的な情報が取れれば良いのだが、見つからなかった。)


ロガークラスの入れ替え
--------------------


config/initializers に適当なファイルを置く。

```ruby:config/initializers/custom_logger.rb
require "custom_logger"
Moe::Application.config.middleware.swap Rails::Rack::Logger, CustomLogger
```

テスト
--------------------

wgetとかtelnetで。

```sh
# ログが記録される
wget -O /dev/null --header="X-Forwarded-For: 192.0.2.100" http://www.example.com/

# ログが記録されない
wget -O /dev/null http://www.example.com/
```

おしまい。
セルの値だけクリップボードにコピーするマクロ

Excelのセルをコピーして数値しか入らないInputBoxに貼り付けられないと言われた。
数値しか入らないInputBoxは、空白が入ると貼り付けが出来ない様子。

毎回別の箇所にコピーして末尾の空白と改行を消して貼り付けるよう言ったが面倒臭がられたので調べてみた。

DataObjectを使えるようにする手順
=======

1. Visual Basicから「挿入＞ユーザーフォーム」をクリック。

![1.png](https://qiita-image-store.s3.amazonaws.com/0/25728/a47f3a91-f53a-ac7a-23f5-acfdae4ddb1f.png)

2.「ツール＞参照設定」をクリック。

![2.png](https://qiita-image-store.s3.amazonaws.com/0/25728/66fece58-1a70-3d53-e67b-18bf856928c1.png)

3. 「Mirosoft Forms 2.0 Object Library」にチェックが付いていることを確認。

![3.png](https://qiita-image-store.s3.amazonaws.com/0/25728/a67e9728-ab30-15f9-a946-f7ba3f56d33d.png)

マクロ
=======

4.以下コードをマクロに登録。

```vbnet:
Sub copy_e6()
'
' copy_e6 Macro
'

    Dim myDO As New DataObject
    myDO.SetText Range("E6").Value
    myDO.PutInClipboard

End Sub
```

5.ボタンとか配置して上のマクロを割り当てると完了。
  ボタンをクリックしてE6のValueがクリップボードに入ることを確認。
iTunesの歌詞に歌詞を追加

参照設定からiTunes Libraryを追加してください。

```csharp:myiTunes.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTunesLib;

namespace mp3Lyric {
    public class MusicInfo {
        public string Artist { get; set; }
        public string Album { get; set; }
        public string Title { get; set; }
        public string Lyric { get; set; }
    }

    /// <summary>
    /// iTunesをどうにかするクラス
    /// </summary>
    public class MyiTunes {
        #region プロパティ

        /// <summary>
        /// 曲情報
        /// </summary>
        public MusicInfo Info {
            get;
            private set;
        }

        /// <summary>
        /// iTunesAppのインスタンス
        /// </summary>
        private iTunesApp _iTunes = null;

        /// <summary>
        /// アルバムの検索結果
        /// </summary>
        private IITTrackCollection _searchRsltAlbum;

        #endregion

        #region コンストラクタ

        public MyiTunes() {
            _iTunes = new iTunesApp();
            Info = new MusicInfo();
            Info.Artist = Info.Album = Info.Lyric = Info.Title = null;
        }

        #endregion

        #region メソッド

        /// <summary>
        /// 曲情報を入力します。
        /// </summary>
        /// <param name="info">曲情報</param>
        public void SetInfo(MusicInfo info) {
            Info = info;
        }

        /// <summary>
        /// 歌詞を曲に追加します。
        /// </summary>
        /// <returns>成功したかどうか</returns>
        public bool SetLyric() {

            if (!isSet()) {
                Console.Error.WriteLine("! SetInfo()を使って曲情報を入力してください。");
                return false;
            }

            // その曲が収録されてるアルバムを検索
            _searchRsltAlbum = _iTunes.LibraryPlaylist.Search(
                Info.Album, ITPlaylistSearchField.ITPlaylistSearchFieldAlbums);
            if (_searchRsltAlbum == null) {
                Console.Error.WriteLine("! 指定したアルバムが存在しません。");
                return false;
            }

            var song = _searchRsltAlbum.get_ItemByName(Info.Title);
            if (song == null) {
                Console.Error.WriteLine("! 指定した曲が存在しません。");
                return false;
            }
            if (((IITFileOrCDTrack)song).Lyrics != null) {
                Console.Error.WriteLine("! すでに歌詞が付けられています。");
                return false;
            }
            ((IITFileOrCDTrack)song).Lyrics = Info.Lyric;

            return true;
        }

        /// <summary>
        /// 曲情報がすでに入力されているかどうか
        /// </summary>
        /// <returns></returns>
        private bool isSet() {

            return Info.Artist != null;
        }

        #endregion
    }
}

```
透明度を設定する方法

###opacity

div要素内全てに透明度を適用。
```css:全て透明
<div style="background-color:red;opacity:0.1;">
    <img src='hoge'>
</div>
```

###opacity
背景にのみ透明度を適用。
```css:背景だけを透明
<div style="background-color:rgba(0,0,255,0.1)">
    <img src='hoge'>
</div>
```
Atomをmarkdownエディタとして使い始めたのでメモ

[Atom](https://atom.io)

## やりたいこと
"ブラウザを使わずに"
"リアルタイムでプレビューを見ながら"
"vimのキーバインドで"
"markdownを書きたい"

## 入れたプラグイン
* [vim-mode](https://github.com/atom/vim-mode)
 vimのキーバインドを可能にする

## 覚えるコマンド
1. markdownプレビューの表示 : `ctrl + shift + m`
1. ファイルのfuzzy検索 : `command + p`
1. 新規作成 : `command + n`
1. ツリービューの表示 : `command + \`

## できれば覚えるコマンド
1. コマンド検索 : `command + shift + p`
1. 設定画面を開く : `command + ,`

## その他
[keyremap4macbook](https://pqrs.org/macosx/keyremap4macbook/index.html.ja)を使って
insertモードから抜けるときに、IMEをOFFにするようにした[記述例](https://github.com/wanashi/config/blob/master/mac/private.xml#L21-L28)
ページのTOPへボタン

```html:html
<!-- ブートストラップ使用 -->
<button id="back-to-top" class="btn btn-success" style="position:fixed;right:5px;bottom:5px;display:none;opacity:0.8;">
    <i class="icon-arrow-up"></i>このページのトップへ
</button>

```

```js:jQuery
//下へスクロールすると表示され、上へスクロールすると非表示に。
$(window).scroll(function(){
    if($(this).scrollTop() > 60){
        $('#back-to-top').fadeIn();
    }else{
        $('#back-to-top').fadeOut();
    }
});
//クリック時にTOPへ
$('#back-to-top').click(function(){
    $('body').animate({
        scrollTop:0
    },500)
});

```
Jenkins から Slack へ通知する方法

### Slack 側

``/services/new/jenkins-ci`` に行き, 新規 integration を追加.
Token をメモ.

### Jenkins 側

``/pluginManager/available`` に行き, Slack Plugin をインストール.
``/configure`` に行き, Global Slack Notifier Setting で 以下のように設定.

|設定項目|説明|
|---|---|
|Team Domain|Slack のチームドメイン|
|Integration Token|取得した Token|

他の項目はオプションなので空欄で良い.

job の設定に行き, Slack Notifications に以下を設定.

|設定項目|説明|サンプル|
|---|---|---|
|Project Channel|プロジェクトのチャンネル|#hogehoge|

Notify ~~ は適当にチェックを入れる.

最後にビルド後の処理に Slack Notifications を入れ, 保存.

## Reference

- [JenkinsでSlackに通知してみた - Perl日記](http://r9.hateblo.jp/entry/2014/01/26/145538)
Slack の incoming WebHook で post する簡単なサンプル

https://${チーム名}.slack.com/services/new で Incoming WebHooks を追加し,
path をコピーする.

```slack.rb
require 'net/http'
require 'uri'
require 'json'

def post(text)
  data = {
    "text" => text
  }
  request_url = "https://${チーム名}.slack.com/services/hooks/incoming-webhook?token=${トークンキー}"
  uri = URI.parse(request_url)
  http = Net::HTTP.post_form(uri, {"payload" => data.to_json})  
end

post("test")
```
【CakePHP】エレメント

ビューの一部を使いまわしたい場合にエレメントとして切り出すことができる。

## エレメントの使い方
app/View/Elementsの配下に「エレメント名.ctp」で配置する。
viewの中でエレメントを呼び出す。

```php:呼び出し方
echo $this->element('エレメント名');
```

エレメントをディレクトリでグループ化することもできる。
app/View/Elements配下にディレクトリをきりその中にエレメントを置く。
viewの中では、「ディレクトリ/エレメント名」で呼び出す。

```php:呼び出し方
//エレメントがapp/View/Elements/dir/sidebar.ctpの場合
echo $this->element('dir/sidebar');
```

##エレメントへパラメータを渡す

view上からforeachなどでエレメントにパラメータを渡すには、以下のように第二引数に連想配列で['変数名'=>'値']として渡す。コントローラからはview同様変数を渡せる。

```php:呼び出し側
echo $this->element('sidebar', ["count" => 20]);
```

```php:エレメント
<?php
//20が出力される
echo $count;
?>
```
Jenkins「保留 - 利用可能な次のエグゼキューターを待っています。」


# これは何？

ジョブを実行した際に、

　「保留 - 利用可能な次のエグゼキューターを待っています。」

と表示され、いつまで待ってもジョブが実行されない場合の対処法

# 1. オンラインのノードがあるか確認する
Jenkinsの管理 > ノードの管理

オンラインのノードがあることを確認。
全てオフラインになっている場合、ジョブを実行する人がいないため、いつまでたっても保留状態になります。

原因はつかめていないが、使っているJenkinsがこの状態になりました。

# 2. Jenkinsサーバのディスク容量に、十分な空きがあるかを確認する

via.
http://d.hatena.ne.jp/hiro_nemu/20100127/1264574707
Rubyでオブジェクト指向を学ぶ方へ | For those learning "Object Oriented Design" in Ruby


##"Practical Object-Oriented Design in Ruby"という本をご存知ですか？
http://www.poodr.com/
未邦訳ですが、自分はこれを夜な夜な読むことで、初めて"オブジェクト指向プログラミング"とは何か、勉強するスタートポイントに立てた気がしました。
ちなみに __"POODR"__ と略すらしいです。

-
追々、本を読んで学んだことを順序立てて構成していきます。
最初は、本の中で最も強調されていたことから紹介させてください。

##OOPとは、オブジェクトが相互にメッセージを送ることである
***なぜなら、プログラムは、以下の二つの無関係、もしくは矛盾する要求に応えなければいけないから。***

* プログラムが、今後の（現時点では決して分からない）変更に耐えうる仕様になっていること
* その段階で利用者がもっとも使いたい形で提供されていること

####*OOP is all about "Objects sending messages each other"*
*cuz, optimization for program to adapt unexpected changes differs from optimization for a user to use that service at the most desirable context __"at that time"__.*


-

つまり、

* __利用者が使いたい文脈に沿って、__
* __壊れにくい再利用しやすい形でつくられたオブジェクトが相互に動くのが、__
* オブジェクト指向で取り組むべき設計。

この前提で、オブジェクトが持つ構造（クラス、メソッド、アトリビュート）などが紹介されています。
本の中では、まずはクラス構造という静的なものが理解しやすいということで紹介が始まりますが、
繰り返し章を重ねて語られる中で、こういった動的な振る舞いでの再説明がなされています。

###ちなみに..
POODRの著者である __Sandi Metz__さんは、"Sandi Metz Rule"として、あなたのコードをオブジェクト指向へと「矯正」する方法を紹介しています。
http://tech.a-listers.jp/2013/05/20/sandi-metz/

これを実際に実践した thoughtbot社(FactoryGirl Gemの開発元です)は、「ルールを取り入れる実験は成功だった」として、自分たちのベストプラクティスドキュメントに取り入れたということです。
[JavaScript]クロージャについての現在の理解


# クロージャの概要
クロージャとは。

- 関数を入れ子にする
- 外側の関数をエンクロージャ、内側の関数をクロージャと言う
- エンクロージャはクロージャへの参照を返す
- この参照を保持することで、関数呼び出し時のコンテキストがメモリ上から解放されないようにする
- これによりエンクロージャ内で定義した変数が永続化される
- ただしエンクロージャ内に定義した変数にアクセスできるのはクロージャのみである
- コンテキストはエンクロージャの呼び出し毎に異なる

## 典型的なクロージャの例

```js
function fn(n) { // エンクロージャ
    return function() { // クロージャを返す
        return ++n; // nは同じコンテキストで共有
    }
}
var f1 = fn(0);    // fnコンテキストの生成(1)
var f2 = fn(10);   // fnコンテキストの生成(2)
console.log(f1()); // =>1
console.log(f2()); // =>11
console.log(f1()); // =>2
console.log(f2()); // =>12
```

# クロージャの使いどころ

- クラス/オブジェクトのカプセル化

[[JavaScript]クラス、関数、オブジェクト - Qiita](http://qiita.com/maccotsan/items/45b348d4eb52f473b0e3)

# クロージャのデメリット

- 実行速度の低下
- メモリリーク

以下はMozillaのドキュメント。

>クロージャの良くない副作用として、Internet Explorer で簡単にメモリリークを発生させることがあります。JavaScript はガベージコレクトを行う言語です。オブジェクトは生成時にメモリが割り当てられ、オブジェクトへの参照がなくなったときにメモリがブラウザによって回収されます。ホストの環境から提供されるオブジェクトは、その環境に管理されます。
*via [JavaScript 「再」入門 - JavaScript | MDN](https://developer.mozilla.org/ja/docs/Web/JavaScript/A_re-introduction_to_JavaScript)*

また、GoogleのJavaScript規約では次のように書いている。
>使っても良い. ただし慎重に.  クロージャは JavaScript の中でも最も便利でよく見る機能です. クロージャについて詳しくはこちらを参照してください.  ただし一点注意すべき点は, クロージャはその閉じたスコープへのポインタを保持しているという点です. そのため, クロージャを DOM 要素に付加すると循環参照が発生する可能性があり, メモリリークの原因となります. 
*via [Google JavaScript Style Guide 和訳 — Google JavaScript Style Guide 和訳](http://cou929.nu/data/google_javascript_style_guide/#id19)*

# 参考URL

[JavaScript のスコープチェーンとクロージャを理解する - tacamy.blog](http://tacamy.hatenablog.com/entry/2012/12/31/005951)
[クロージャの復習 | blog.makitasako.com](http://blog.makitasako.com/posts/2013-08-14-closure/)
[[JavaScript]クロージャをファクトリーパターンとして理解する by Utage Blog](http://utage.headwaters.co.jp/blog/?p=117)
[JavaScriptのクロージャはどういった場合に利用するのでしょうか。どんな場合にメ... - Yahoo!知恵袋](http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12100823817)
[メモ] confirmなどに使えるpost処理


POSTの値を保持する処理の一例。
メールフォームなどに使えるかも。

```post.php
$array_post = array('subject','name','mail','message');
foreach($array_post as $value) {
	$post -> $value = isset($_POST[$value]) ? $_POST[$value] : null;
	$html -> $value = htmlentities($post->$value);
}

print <<<HTML
<form action="send.php" method="post">
	件名：<br>
	<input type="text" name="subject" size="30" value="{$html->subject}"><br>
	送信者名：<br>
	<input type="text" name="name" size="30" value="{$html->name}"><br>
	メールアドレス：<br>
	<input type="text" name="mail" size="30" value="{$html->mail}"><br>
	本文：<br>
	<textarea name="message" cols="30" rows="5">{$html->message}</textarea><br>
	<br>
	<input type="submit" value="送信する">
</form>
HTML;
```
Vimを使う上で､覚えておくべき3つのこと


##はじめに

Vimを使いたい人は､以下に紹介する3つの操作方法を覚えているだけでも､便利に使えると思います｡

##q

まずは、`qa`、`記録したい操作`、`q`という順にキーを押すことで､自身が行った操作手順を記録し､それをいつでも呼び出せます｡

|キー|内容|
|---|---|
|qa|記録開始|
|編集|なんでもいいので編集する|
|q|記録終了|
|@a|記録した編集を実行する|


ちなみに、ここで使う`a`はレジスタの指定なので、`b`、`c`なども使えます｡

このような操作は`マクロ`と呼ばれることがあります｡

試しに、一度、やってみるといいでしょう。


1. 手順は非常に単純です。操作はなんでもいいので､`qa`を押した後、編集したい部分を自分なりの操作方法で編集します｡

2. ちなみに、移動も記録されますので､繰り返したい場所に移動するまで記録しましょう｡

3. 最後に､`4@a`など回数を指定して､マクロを実行します｡

4. すると、記録した編集手順が4回実行されることになります｡

このようなマクロは､日常的に使っても良いし､難しい編集を繰り返す場合にも使えます｡

何度も使いそうな手順は､とにかく記録し、保存しておく癖をつけましょう。

ちなみに、`a`の部分を変えると、幾つもの手順を保存しておけます｡例えば､`qb`で保存を開始したとすると、`@b`で使えます｡

Vim初心者のかたは､とりあえずこれだけ覚えておけば良いと思うのですが､後､2つくらい便利そうなコマンドがあるので紹介しておきます｡



##.

`.`(ドット)

直前の操作を繰り返すキーです｡

##*

`*`(アスタリスク)

カーソル下の単語を検索するキーです。

##さいごに

ということで、Vimを使う人は､以下のキーを覚えておきましょう｡


|キー|内容|
|---|---|
|q|レジスタ(a-z)を指定し、編集を記録するキー。記録停止は`q`、実行は`@`+レジスタ|
|.|直前の操作を繰り返すキー|
|*|カーソル下の単語を検索するキー|

ちなみに、マクロ`q`は、レジスタを大文字で指定すると､マクロを元の値(操作)に代入(追加)できます。

レジスタの確認は､`:reg a(レジスタ)`で出来ます｡

この場合､操作の追加は、`qA`になりますね。

`100@a`とすると、マクロの実行回数(この場合は100回)も指定できるので、便利です｡

Vimは、いろいろな操作に回数を指定できるので､覚えておいて損はないかと思います｡

|キー|内容|
|---|---|
|100yy|100行をコピーする|
|100p|100回貼り付けを行う|
|100dd|100行削除|

##補足

Vimは、以下の様な操作が脚光を浴びがちですが、ドットやマクロも便利ですよ。

|キー|内容|
|---|---|
|de|単語の最後まで削除|
|daw|単語を削除|
|dib|括弧内を削除|
|dap|かたまりを削除|
|dvip|かたまりを最初の行以外削除|

ちなみに、`d`の部分は､削除(Delete)を意味します｡この部分を入れ替えることで､ヤンク`y`、置換`c`などにも使えます｡

そして、このような操作の場合、`a`は「外側も含め」を意味し､`i`は「内側だけ」を意味することが多いです｡

最後の行は､その対象を現す場合が多いです。例えば､`w`単語の意味。

つまり、それぞれのアルファベットが意味するところを覚えておくと､実践で使えるようになります。

```bash:
yaW -> 単語(W)を外側も含め(a)、ヤンク(y)する

diw -> 単語(w)を内側だけ(i)、デリート(d)する
```
NHK 番組表 API for Clojure を作ってみた。

ちょっと前のことですが、Clojureで遊びたかったので、作りました。

Clojureは楽しいですね。
単に不慣れなせいもあるけど、頭がグニグニして気持ち良い。
LightTableも楽しい。

ただ、Clojure的なお作法がよく分からなかった。

## [NHK番組表API](http://api-portal.nhk.or.jp/ja/)

NHKが先日番組表API発表していて、
その途端に先人たちが色々と作っていたのを見て、
なんだか楽しそうなので乗っかってみました。

[tgfjt/clj-nhkapi](https://github.com/tgfjt/clj-nhkapi)

## 先人のいろいろ

- **Ruby**
http://mitukiii.hatenablog.com/entry/2014/02/07/015233

- **Perl**
http://moznion.hatenadiary.com/entry/2014/02/05/221347

- **Emacs**
http://gongo.hatenablog.com/entry/2014/02/09/223704

- **Python**
http://drillbits.hatenablog.com/entry/nhk_api

- **Go**
https://github.com/mattn/go-nhk

- **Scala**
http://seratch.hatenablog.jp/entry/2014/01/26/040338

- **PHP** http://localdisk.hatenablog.com/entry/2014/01/26/NHK%E7%95%AA%E7%B5%84%E8%A1%A8API_for_PHP_%E3%82%92%E6%9B%B8%E3%81%84%E3%81%9F%E3%82%88

- **Titanium Mobile**
http://h5y1m141.hatenablog.com/entry/2014/02/08/092048

- **Node**
http://yosuke-furukawa.hatenablog.com/entry/2014/03/08/115537

---
### ※ Notice
* やってみた！というだけなので例外処理とか何もない。
* これを使って何をするかは分からない
* 一覧化してWEB表示の方が良いかもしれない。
複数Excelブックの、特定シート、特定列を全部マージする

複数のExcelブックに登録された申込データから、
メールアドレスだけを抜き出す、
とかいう作業を手でやるのは苦痛。
というわけで作ったマクロ。

Sheet1に、以下の通り対象データリストを格納しておく。

------------+-------+-------+---------+
ディレクトリ名|ブック名|シート名|先頭セル名|
c:\Directory\|データ.xlsx|申込|D2|

実行すると、新しいブックを作成する。
対象データリストのシートから、データを抽出して、Sheet2に集約していく。
「先頭セル名」で指定されたセルの列にあるデータが全部マージされる。


```vb:データ抽出
Option Explicit

Sub データ抽出()
    Dim bkInput As Workbook
    Set bkInput = ThisWorkbook
    Dim shtInput As Worksheet
    Set shtInput = bkInput.Sheets(1)
    Dim bkOutput As Workbook
    Set bkOutput = Workbooks.Add
    shtInput.Copy Before:=bkOutput.Sheets(1)
    Dim shtOutput As Worksheet
    Set shtOutput = bkOutput.Sheets(1)
    Dim shtOutputData As Worksheet
    Set shtOutputData = bkOutput.Sheets(2)
    
    Dim sPath As String
    Dim sBook As String
    Dim sSheet As String
    
    Dim Target As Range
    Set Target = shtOutputData.Cells(1, 1)
    
    
    Dim nRow As Integer
    nRow = 2
    Do While shtOutput.Cells(nRow, 1) <> ""
        sPath = shtOutput.Cells(nRow, 1)
        sBook = shtOutput.Cells(nRow, 2)
        sSheet = shtOutput.Cells(nRow, 3)
        
        Dim bkData As Workbook
        Dim shtData As Worksheet
        
        Set bkData = Workbooks.Open(Filename:=sPath & "\" & sBook, ReadOnly:=True)
        Set shtData = bkData.Worksheets(sSheet)
        
        Dim sInputCell As String
        sInputCell = shtOutput.Cells(nRow, 4)
        
        
        Dim Source As Range
        Set Source = shtData.Range(sInputCell).Resize(shtData.Range(sInputCell).End(xlDown).Row) ' 行だけ最終行まで持っていく
        
        Source.Copy Target

        bkData.Close

        Set Target = shtOutputData.Cells(1, 1).End(xlDown).Offset(1, 0) '最終行の一つ下を次のTargetにする

        nRow = nRow + 1
    Loop
    
End Sub
```
Excelで作ったcsvファイルの改行^MをViで見れるようにする(Mac)

Excel等で作成したcsvが
行末のはずのところに^Mのように表示され
実際に改行されていないファイルの場合。

: %s/^M/^M/g

初めの^Mを入力するときは
``ctl``+``v`` の後 ``ctl``+``m``
次の^Mを入力するときは
``ctl``+``v`` の後 ``ctl``+``エンターキー``
Dotenv使ってみた

## Dotenvとは

https://github.com/bkeepers/dotenv

* .envファイルに書いた設定を環境変数として簡単に読み込めるgem
* .env自体はruby以外からも使えて便利
  * sourceやshで環境変数設定とか
* 複数のツールで同じような設定使いたい時とか便利

## さっそく使ってみる

* 準備

```
$ echo -e "source 'https://rubygems.org'\ngem 'dotenv'"
$ bundle install
$ echo HOGE=\"hogehoge\" > .env
```

```rb:dotenv1.rb
require 'dotenv'

puts ENV["HOGE"]
Dotenv.load
puts ENV["HOGE"]
```

* 実行結果

```
$ ruby dotenv1.rb

hogehoge
```

## 既に環境変数が設定されている場合、Dotenv.loadでは上書きされない

```
$ export HOGE="hoooogeeee"
$ ruby dotenv1.rb 
hoooogeeee
hoooogeeee
```

## ファイル指定でもloadできる

```rb:dotenv2.rb
require 'dotenv'

puts ENV["HOGE"]
Dotenv.load ".env.test"
puts ENV["HOGE"]
```

```
$ echo HOGE=\"hogehoge\" > .env.test
$ ruby dotenv2.rb

fugafuga
```

## .envファイルがない場合は何もloadしない

```rb:dotenv3.rb
require 'dotenv'

puts ENV["HOGE"]
Dotenv.load ".env.aaa"
puts ENV["HOGE"]
```

```
$ ruby dotenv3.rb


$ ls .env.aaa
ls: cannot access .env.aaa: そのようなファイルやディレクトリはありません
```

## スクリプト内で環境変数を上書きしたい

```dotenv4.rb
require 'dotenv'

puts ENV["HOGE"]
Dotenv.overload
puts ENV["HOGE"]
```

```
$ export HOGE="hoooogeeee"
$ ruby dotenv4.rb 
hoooogeeee
hogehoge
```

## .envファイルがない場合、例外を発生させたい

```rb:dotenv5.rb
require 'dotenv'

Dotenv.load! ".env.aaa"
```

```
$ ls .env.aaa
$ ruby dotenv5.rb 
/home/***/.rvm/gems/***/gems/dotenv-0.10.0/lib/dotenv.rb:24:in `block in load!': No such file or directory - /home/***/tmp/.env.aaa (Errno::ENOENT)
	from /home/***/.rvm/gems/***/gems/dotenv-0.10.0/lib/dotenv.rb:22:in `each'
	from /home/***/.rvm/gems/***/gems/dotenv-0.10.0/lib/dotenv.rb:22:in `load!'
	from dotenv5.rb:4:in `<main>'
```

## 複数ファイルをloadしたい

```rb:dotenv6.rb
require 'dotenv'

puts ENV["HOGE"]
puts ENV["FUGA"]
Dotenv.load(
  File.join(File.dirname(File.expand_path(__FILE__)), '.env'),
  File.join(File.dirname(File.expand_path(__FILE__)), '.env.second')
)
puts ENV["HOGE"]
puts ENV["FUGA"]
```

```
$ echo FUGA=\"fugafuga\" > .env.second
$ ruby dotenv6.rb 


hogehoge
fugafuga
```

## 複数ファイルをloadして環境変数が重複した場合、最初に読み込んだ値が適用される

```rb:dotenv7.rb
require 'dotenv'

puts ENV["HOGE"]
Dotenv.load(
  File.join(File.dirname(File.expand_path(__FILE__)),
 '.env'),
  File.join(File.dirname(File.expand_path(__FILE__)), '.env.third')
)
puts ENV["HOGE"]
```

```
$ echo HOGE=\"hhhhhhhogeeeeee\" > .env.third
$ ruby dotenv7.rb 

hogehoge
```

* 別の書き方でも確認

```rb:dotenv8.rb
require 'dotenv'

puts ENV["HOGE"]
Dotenv.load File.join(File.dirname(File.expand_path(__FILE__)), '.env')
puts ENV["HOGE"]
Dotenv.load File.join(File.dirname(File.expand_path(__FILE__)), '.env.third')
puts ENV["HOGE"]
```

```
$ ruby dotenv8.rb 

hogehoge
hogehoge
```

railsやcapistrano向けのは機会があれば書く。
web サイト作った時に色々チェックする


1. https://cyh.herokuapp.com/cyh

	HTTPヘッダーに書き込むセキュリティ情報をチェックするサイト

1. https://www.ssllabs.com/ssltest/
	
	SSL 設定の確認サイト

その他にも色々あるけどとりあえず。
dvipdfmxで「warning: iCCP: known incorrect sRGB profile」というエラーが出る場合の対処方法

これはlibpngの問題だそうです。

http://tex.stackexchange.com/questions/125612/warning-pdflatex-libpng-warning-iccp-known-incorrect-srgb-profile

上記のサイトにあるように、ImageMagickのconvertコマンドを使って、

```shell-session
convert "foo.png" -strip "foo.png"
```

と変換し、プロファイルやその他のメタデータを削除するとエラーが出なくなります。
SSH 秘密鍵・公開鍵の作り方


## コマンド

```bash
ssh-keygen -t rsa
```

## sshdの設定

/etc/ssh/sshd_config の以下の部分のコメントは外す

```bash
#PubkeyAuthentication yes
```

↓

```bash
PubkeyAuthentication yes
```

## パーミッションの設定

```bash
chmod 700 ~/.ssh/
chmod 600 ~/.ssh/authorized_keys

```

## sshdの再起動

```bash
/etc/init.d/sshd restart
```
Xcode5.1にしたら32bit向けにビルドしたいアプリがエラーになった


Xcode5.1から64bit向けのビルドもデフォルトで行うようになったらしいです。

あるプロジェクトで組み込んでいるライブラリの関係上32bitのみでビルドしたかったのですが、上記の内容が関係してXcode5.1にしたとたんエラーになってしまいました。

解決方法は「Build Settings」→「Architecture」に`$(ARCHS_STANDARD_32_BIT)`を追加し、もともと入力されている`$(ARCHS_STANDARD)`を削除することです。

この`$(ARCHS_STANDARD)`の示す値がXcode5.0までだと64bit(`arm64`)が入っていない、ということですかね。


[shoma2daをフォロー](https://twitter.com/intent/user?screen_name=shoma2da)
WindowsのPowerShellを管理者権限で起動する方法


コマンドプロンプトからPowerShellを管理者権限で起動するには､以下の様な感じになると思います｡

```bash:cmd.exe
> @powershell -NoProfile -ExecutionPolicy unrestricted -Command "Start-Process powershell.exe -Verb runas"
```

PowerShellからは、以下のコマンドになります｡

```bash:powershell.exe
> Start-Process powershell.exe -Verb runas
```

右クリック > 「管理者として実行」が嫌な方は使ってみてください｡