OmniAICreator/Qiita-1.07M huggingface dataset:
メモ：Vagrant環境でCGI（試行錯誤中）

#### 設定ファイルを編集。

```
sudo vim /etc/httpd/conf/httpd.conf
```

vimが開いたら以下の箇所のコメントを外す。コマンドモードで探すと早いかも（```/cgi/g```とか）。

```vim
#
AddHandler cgi-script .cgi  # 多分ここ？
#
```

再起動。

```
sudo service httpd restart
```

以下のようなファイルを作成。

###### hello.cgi

```py
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print "Content-Type: text/plain"
print
print "hello world!"
```

http://[アドレス]/hello.cgi にアクセス。表示されると思いきや・・・・

> #### Forbidden
>
>You don't have permission to access /hello.cgi on this server.

Permissionと書かれているので、```chmod 755 hello.cgi```とかをやってみたが変わらず。

### 他にもどこか設定が必要なのだろうか？
自アプリのactivity一覧の取得

全アプリケーションのアクティビティ一覧を取得する方法はググると出てきますが、
自分のアプリケーションのアクティビティを取得する方法は見つからなかったので、
実装してみました。

実装方法

```java
private String getMainActivityName(){
    ActivityInfo[] activities = null;
    PackageManager pm = getPackageManager();
    try {
        //当アプリの全アクティビティを取得
        PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), PackageManager.GET_ACTIVITIES);
        activities = packageInfo.activities;
    } catch (NameNotFoundException e) {
        e.printStackTrace();
    }
    if(activities.length < 1) return null;
    //端末の全アプリのACTION_MAINで起動できる全アクティビティを取得
    Intent intent = new Intent(Intent.ACTION_MAIN, null);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    List<ResolveInfo> resolveInfo = pm.queryIntentActivities(intent, PackageManager.GET_RESOLVED_FILTER);

    //全メインアクティビティ内から当アプリのメインアクティビティを探す
    for(int i = 0; i < resolveInfo.size(); i++) {
        String activityName = resolveInfo.get(i).activityInfo.name;
        for(int j = 0; j < activities.length; j++){
            String name = activities[j].name;
            if(activityName.equals(name)) return name;
        }
    }
    return null;
}
```

中途半端な状態だったのに、ストックしてくれている方がいたので、取り急ぎコード掲載
よく忘れるMongoDBのコマンド、クエリー

## **mongoexportで時間指定**

**ポイント**
mongoexportで時間指定する場合、longで日時を指定しなければならない。※ISODateが使えない

**書き方**

* 'field'が'2014-01-22T09:55:47.924Z'のドキュメントを検索。

```text:クエリーの書き方
--query "{'field' : new Date(1390384547924)}" 
```
* 'field'が'2014-01-22T09:55:47.924Z'以前のドキュメントを検索。

```text:クエリーの書き方
--query "{'dateCreated' : {'$lt' : new Date(1390384547924)}}" 
```

**使用例**

```text:example
mongoexport -h localhost --port 27017 --db dbname --collection collectionname  --query "{'dateCreated' : new Date(1390384547924)}" 
```

## **条件を指定して１件削除する。** (findAndModify)

**ポイント**
{remove: true}として、findAndModifyを使う。
クエリーに合致するドキュメントを一つ削除する。

**書き方**

```text
db.Collection.findAndModify({query : {クエリー}, remove: true})
```

```text:example
db.myCollection.findAndModify({query : {"name" : "myDocument"}, remove: true})
```


## **ドキュメントの一部だけ更新する**

**ポイント**
update+$setを使う。

**書き方**

```text
db.collection.update({クエリー},{$set:{設定内容}})
db.collection.findAndModify({クエリー},{$set:{設定内容}})
```

**使用例**

```text:example
// 更新前ドキュメント確認
db.myCollection.find({"key" : "value1"}).pretty()
// 更新
db.myCollection.update({"key" : "value1"},{$set:{"field" : "value2"}})
// 更新後ドキュメント確認
db.myCollection.find({"key" : "value1"}).pretty()
```
```text:example
// ドキュメント検索＆更新
db.myCollection.findAndModify({"key" : "value1"},{$set:{"field" : "value2"}})
// 更新後ドキュメント確認
db.myCollection.find({"key" : "value1"}).pretty()
```
```text:example
// { multi: true }をつけると、複数行まとめて更新される
db.myCollection.update({"key" : "value1"},{$set:{"field" : "value2"}}, {"multi":true}))

```


## **JSONによるクエリーで、IDを指定して検索する。**

**ポイント**
ObjectId()が使えないケースは、$oidを使う。
使いどころは、クエリーをテキストで受け取って、検索を実行する場合など。
**書き方**

```text
db.collection.find({"_id": {"$oid": ID文字列}}})

※db.collection.find({"_id": ObjectId(ID文字列)}})と同じになる
```

**使用例**

```text:example
db.collection.find({"_id": {"$oid": "xxxxxxxxxxxxxxxxxxxxxx"}}})
```
bashのプロンプトにmercurialのbranch名を表示する

```.bashrc
# ブランチ表示用の関数を定義
branch() {
  hg branch 2> /dev/null | awk '{print "(" $1 ")"}'
}

# プロンプト定義
export PS1="[\\u@\\h \w\$(branch)]\n$ "
```

[こちら](http://ymotongpoo.hatenablog.com/entry/20110115/1295082759)を参考にしました
コマンドラインでビデオ再生

縁あってmpvというコマンドラインのメディアプレーヤーアプリに出会った。homepageはhttp://mpv.io/ だが、githubへのリンクが張られているだけで少し寂しい感じ。むしろ「[2014年に使うべきビデオプレイヤー: mpv](http://henry.animeo.jp/wp/?p=1955)」という素晴らしい日本語の紹介記事があるのでそちらを見るのが良いでしょう。

そこにも書かれているが、OSX向けにはHomebrewで簡単インストールできる。まずはPythonのテキスト処理ツールであるdocutilsを入れ、

```
$ pip install docutils
```

その後に、

```
$ brew tap mpv-player/mpv
$ brew install --HEAD mpv-player/mpv/libass-ct
$ brew install mpv
```
でインストール完了。必要に応じてオプションで様々なライブラリのあり・なしをコントロールできるが、それは上記ブログ記事を参照ください。

これでバッチリ入るのだが、ffmpegが入っていないとそのコンパイルもあり、やや時間がかかる。バイナリパッケージもあるので、もっと横着したいという人のために homebrew-cask で取れるようにしてみた。

```
$ brew cask install mpv
```

あとは再生したいファイルを引数に実行するだけ。

```
$ mpv <media_file>
```

んー、楽チン。

基本はソースからインストールだと思うけど、取り敢えず試してみたい人はこういうやり方もあるということで。

(追記)
homebrew-caskってなんじゃらホイ？の方は「[コマンドラインでMacのアプリをインストール](http://qiita.com/ksato9700/items/6f594597fe11c1bbeff8)」をご参照ください。
railsのturbolinksってーのはajax使って画面遷移を使わず画面更新するものだったと知った（リンクのみ）

http://kray.jp/blog/must-know-about-turbolinks/
なるほどー。どうしてapplication.jsに全部詰め込んでいいのかわかったぞと。
※実はどうやってそれぞれの画面用のjsを作成していくのかを調べていました。
クリアボタンみたいなの

「IE10はテキストボックスにクリアボタン出るじゃん、あれつけてよ」

って言われたのでそれっぽいの作った
まぁ 横に☓ボタン追加しただけですけどね。

```js
	$(".clearField").each(function(){
		var targrt = $(this);
		$(this).after(
			$('<span>', {id : 'clearButton_' + $(this).attr('id') })
			.button({
				icons : {
					primary: 'ui-icon-close'
				},
				text : false
			})
			.width(11)
			.click(function(){
				targrt.val("");
			})
		);
	});
```

`clearField`クラスが入ったフィールドの横にバツボタンを追加し、クリックでクリアします。
ボタン画像にはjQuery UI も使用してます。

適用するとこんなかんじです。
![ie10っぽいクリアボタン.png](https://qiita-image-store.s3.amazonaws.com/0/25904/12b24114-e12a-4db5-dca1-c0729a1636c7.png)


本当はIE10みたいにマウスオーバー時だけ出したかったけど、モックなのでひとまずこれで・・・
PHPUnitのDBUnit拡張でフィクスチャをYAMLで書く

ドキュメントでは、YamlDataSetの使い方はこんな感じ。

[PHPUnit Manual – 第8章 データベースのテスト](http://phpunit.de/manual/current/ja/database.html#database.available-implementations)

```php
class YamlGuestbookTest extends PHPUnit_Extensions_Database_TestCase
{
    protected function getDataSet()
    {
        return new PHPUnit_Extensions_Database_DataSet_YamlDataSet(
            dirname(__FILE__)."/_files/guestbook.yml"
        );
    }
}
```

`/_files/guestbook.yml`みたいなファイルを作りたくない場合はこうしてます。


```php
    protected function createInlineYamlDataSet($yaml)
    {
        $meta = stream_get_meta_data($tmp = tmpfile());
        fwrite($tmp, $yaml);
        return  new PHPUnit_Extensions_Database_DataSet_YamlDataSet(
            $meta['uri']
        );
    }

    protected function getDataSet()
    {
        $yaml = <<<EOD
guestbook:
  -
    id: 1
    content: "Hello buddy!"
    user: "joe"
    created: 2010-04-24 17:15:23
EOD;
        return $this->createInlineYamlDataSet($yaml);
    }
```

`stream_get_met_data`のところは、自動的に削除される一時ファイルを作成してオープンしつつ、そのファイル名を取得しています。こちらが参考になります。

* [PHPで一時的なファイルポインタを扱う方法 - Qiita [キータ]](http://qiita.com/mpyw/items/f24d3764fe3eedf132ff)
IntelliJでDescribe Key

IntelliJ使ってる時に、「このキーバインド、何に割り当ててあるんだろう？」って思うときありますよね。
僕もともとEmacs使いなんですけどEmacsには`describe-key`って関数がデフォルトで用意してあって、それで確認出来るんですけど、IntelliJでこの`describe-key`したい！って思ったわけで、調べたらズバリなpluginがあったので、その紹介。

これ

- http://plugins.jetbrains.com/plugin/81?pr=idea

インストールの仕方は、「Preferences -> Plugins -> Browse repositories」から右上の検索窓でdescribe keyで検索すると見つかるので、そいつをダブルクリックしたらインストール出来ます。

で使い方は、こいつがCommand+Option+K(WindowsだとCtrl+Alt+K)に割り当ててあるので、それで起動。

![スクリーンショット 2014-01-23 21.16.39.png](https://qiita-image-store.s3.amazonaws.com/0/94/eaa26eec-248d-6f1a-731a-2431a1b442c6.png)

で、例えばここでCommand+Option+Lとか押すと

![スクリーンショット 2014-01-23 21.17.02.png](https://qiita-image-store.s3.amazonaws.com/0/94/db7e284b-bca9-e9fb-ba03-e341af54d911.png)

こうなって、何に割り当てられているか分かる、という感じです。

ちなみにCommand+Shift+Aでdescribe keyで検索して起動することも出来ます。こっちのが覚えること少なくていいですね。
[Ruby]基礎から日記。正規表現って記号を検索できなくて挫折する

表題の通り、記号を検索するのが難しい。「$」はドルとして、「^」はなんと呼べばいいのかわからないので、それぞれ「行頭の記号」「行末の記号」と呼ぶことにする。

そしてとうとうコードの挿入の仕方がわかったぞ。

```ruby:Ruby-37
print("enter words. \n")
str = gets.chomp

if /pen/ =~ str
  print("match\n")
else
  print("not match\n")
end
```

この「/pen/」の前に「^」、後ろに「$」を入れたりするわけだ。記号がついてる方に「pen」があればtrueということで。

```ruby:Ruby-39
1. p.n
2. p*n
3. p+n
4. p?n
5. p(aei)n
6. ^...$
7. ^$
```

1はpとnの間に1文字なら何でもOK。
2はpとnがどこかに含まれていればOK。
3はpとnが接していればOK。
4は2と同じ？
5はpan,pen,pinのどれもダメ。かといってponもダメだ。意図がわからん。
6は3文字ならなんでもよさそう。
7は文字が入ったらアウト。

というわけでメシ食ったら5だけもう一回見直そう。ふらふら。
LLVM の SPARC v9 バックエンドの開発が活発です.


一時期メンテナが居なくて存亡の危機に面した SPARC バックエンド(http://llvm.1065342.n5.nabble.com/is-anyone-using-the-sparc-backend-td23161.html) ですが, Venkatraman Govindaraju さんという WISC 大の方が引き継ぎ(?) 2013 年に大きく更新が始まりました.

2014 年 1 月 20 日くらいの LLVM ToT(top of trunk) でのmake check の結果は以下の通り. fp compare 周りでちょっとした問題(http://comments.gmane.org/gmane.comp.compilers.llvm.bugs/25706) がありますが, それ以外では JIT を使わなければ実務的に動かせそうですね! 

clang もビルドできるので, g++ に加えて C++11 コンパイラの選択肢が広がります.

SPARC バックエンドでも MC 対応が始まっていますので今後にさらに期待です. コミッターやバグレポートも期待したいですね.


```
Failing Tests (37):
    LLVM :: CodeGen/SPARC/64cond.ll
    LLVM :: DebugInfo/debug-info-qualifiers.ll
    LLVM :: DebugInfo/debuglineinfo.test
    LLVM :: DebugInfo/enum.ll
    LLVM :: DebugInfo/inlined-arguments.ll
    LLVM :: DebugInfo/member-order.ll
    LLVM :: DebugInfo/namespace.ll
    LLVM :: DebugInfo/template-recursive-void.ll
    LLVM :: DebugInfo/tu-composite.ll
    LLVM :: DebugInfo/two-cus-from-same-file.ll
    LLVM :: ExecutionEngine/2002-12-16-ArgTest.ll
    LLVM :: ExecutionEngine/2003-01-04-ArgumentBug.ll
    LLVM :: ExecutionEngine/2003-01-04-LoopTest.ll
    LLVM :: ExecutionEngine/2003-01-15-AlignmentTest.ll
    LLVM :: ExecutionEngine/2003-05-06-LivenessClobber.ll
    LLVM :: ExecutionEngine/2003-05-07-ArgumentTest.ll
    LLVM :: ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll
    LLVM :: ExecutionEngine/2005-12-02-TailCallBug.ll
    LLVM :: ExecutionEngine/hello.ll
    LLVM :: ExecutionEngine/hello2.ll
    LLVM :: ExecutionEngine/mov64zext32.ll
    LLVM :: ExecutionEngine/simpletest.ll
    LLVM :: ExecutionEngine/stubs.ll
    LLVM :: ExecutionEngine/test-call-no-external-funcs.ll
    LLVM :: ExecutionEngine/test-call.ll
    LLVM :: ExecutionEngine/test-common-symbols.ll
    LLVM :: ExecutionEngine/test-fp-no-external-funcs.ll
    LLVM :: ExecutionEngine/test-fp.ll
    LLVM :: ExecutionEngine/test-global-init-nonzero.ll
    LLVM :: ExecutionEngine/test-global.ll
    LLVM :: ExecutionEngine/test-loadstore.ll
    LLVM :: Linker/type-unique-simple-a.ll
    LLVM :: Linker/type-unique-simple2-a.ll
    LLVM :: Linker/type-unique-simple2.ll
    LLVM :: MC/Disassembler/Sparc/sparc-fp.txt
    LLVM :: MC/Sparc/sparc-fp-instructions.s
    LLVM :: tools/llvm-cov/llvm-cov.test

  Expected Passes    : 3759
  Expected Failures  : 10
  Unsupported Tests  : 5754
  Unexpected Failures: 37
```
Cloud FormerのJSONを可視化するツールを作ってみた


こんにちは。
もともとGoogle好きなWeb屋なのに、お仕事的にAWSでインフラっぽいお仕事をしているサントリーこと大橋です。

今日はCloud FormerのJSONを可視化する「Cloud Former Visualizer」ってのを作ったぜという話です。

[Cloud Former Visualizer](http://soundtricker.github.io/cloud-former-visualizer/) 


※なおこのページの使い方は下の方に書いてあります。
※ご利用は自己責任でお願いします。 

コードは[ここ](https://github.com/soundTricker/cloud-former-visualizer)

技術的な話をキボンヌの場合はストック数が多くなったら書きます。
バグとか要望はgithubのissueにぶっこんで下さい。


![スクリーンショット 2014-01-23 18.47.37.png](https://qiita-image-store.s3.amazonaws.com/0/2965/94e9efae-5935-cd65-0a08-0b8cff503bbc.png "スクリーンショット 2014-01-23 18.47.37.png")


#導入

皆さんCloud Formationはお好きでしょうか？
個人的にはシステム構成をテキスト(JSON)として扱え、テンプレート化できて非常に素敵ですし、また現状のAWSの構成をJSONで吐き出すことが可能なCloud Formerはとても素敵なツールだと思います。

ただWeb屋の僕としては正直何があってどういうデータのつながりなのかわかりません。

なのでデータのつながりが見えるようにするツールが欲しかったのです。

#ということで作った

作ってみました。

[Cloud Former Visualizer](http://soundtricker.github.io/cloud-former-visualizer/) 


# 使い方

テキストエリアが1つあるので、
そこにCloud Formation用のテンプレートファイルの中身を貼り付けてもらって、Visualizeボタンを押して下さい。

最初に書かれいるJSONはAWSのサイトにおいてあったやつで見た目が良さそうなものをとりあえずおいてあります。

確か[ここ](http://aws.amazon.com/jp/cloudformation/aws-cloudformation-templates/)にある「multi-tier-web-app-in-vpc.template」です。

# その他言い訳

* まだベータ版です
* 自己責任で使って下さい。
* もともとCloud Formerで出力されるファイル向けに作ったものなので、Cloud Formationで利用可能なメソッドとかの対応はしてないです。
* そのうち見やすい見た目にしていきます。
Vagrant VM上で立ち上げたnREPLサーバにホストのEmacsから接続する方法



サーバ (lein repl on VM)
-------

まず`Vagrantfile`で立ち上げるVMのprivate ipを固定する.

```ruby:Vagrantfile
Vagrant.configure("2") do |config|
  config.vm.define :debian do |debian|
    debian.vm.box = "debian7.2"
    debian.vm.network :private_network, ip: "192.168.99.99"
  end
end
```

```sh:host
$ vagrant up debian
$ vagrant ssh debian
```

vm上でClojureプロジェクトを作成し, `lein repl`を実行する.

```sh:vm
$ lein new hoge && cd hoge
$ edit project.clj
```

ちなみにここでデフォルトのまま`lein repl`を起動すると`127.0.0.1`のみ受け付ける設定になっているので, `project.clj`に`:repl-options {:host "0.0.0.0"}`の設定を加えてどこからでも接続できるようにする.

```clojure:project.clj
(defproject hoge "0.1.0-SNAPSHOT"
  :description "FIXME: write description"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.5.1"]]
  :repl-options {:host "0.0.0.0"})
```

起動.

```clj:vm
$ lein repl
nREPL server started on port 41080 on host 0.0.0.0
REPL-y 0.3.0
Clojure 1.5.1
    Docs: (doc function-name-here)
          (find-doc "part-of-name-here")
  Source: (source function-name-here)
 Javadoc: (javadoc java-object-or-class-here)
    Exit: Control+D or (exit) or (quit)
 Results: Stored in vars *1, *2, *3, an exception in *e

user=>
```

`host 0.0.0.0` となっていればok.

portは毎回変わるが, `./target/repl-port`にポート番号が吐き出されていて, ciderが接続時にこれを見てくれるので気にしなくていい.

クライアント (Emacs)
--------------------

`slime` + `swank-clojure`とか`nrepl.el`とかあるけど, ナウいのは [clojure-emacs/cider](https://github.com/clojure-emacs/cider) らしい.

```lisp:emacs
M-x package-install <RET> cider <RET>
```

ssh経由でvm上のファイルを開く. `vagrant ssh-config`を使って`~/.ssh/config`を設定しておくと繋ぎやすい.

```sh:host
$ vagrant ssh-config debian >> ~/.ssh/config
```

`C-x C-f`でFind fileを開き, `/ssh:...`でリモートのファイルを開くことが出来る.

```lisp:emacs
Find file: /ssh:vagrant@debian:/path/to/clojure/hoge/src/hoge/core.clj
```

無事開けたら, ciderで起動中のnREPLサーバに繋ぐ.

```clj:emacs
M-x cider <RET>
  Host: 192.168.99.99 <RET> (Vagrantfileで定義したip)
  Port: 41080 <RET> (最初から入ってるはず)
```

別ウィンドウで`*cider-nrepl*`バッファが開けば成功. `in-ns`でプロジェクトのnamespaceに移って作業を始められる.

```clj:emacs
; CIDER 0.5.0alpha (package: 20140111.332) (Clojure 1.5.1, nREPL 0.2.3)
user> (in-ns 'hoge.core)
hoge.core> 
```
MACでフォルダ内の画像を一括でリサイズする方法

MACでフォルダ内(サブフォルダ含む)の画像を縮小したいなって時に
ちまちま、一個一個はめんどくさかったので、
「Automator」を使えないかな～
って思ってやってみたら便利だったので備忘録に。
(一応、画像以外のファイルが入っていても大丈夫・・・なはず)

# 「サービスの作り方」

1. Automatorを起動して、「サービス」を選んで、新規作成
　　(右クリック時に表示される「サービス」から実行できるようにするため)
　　・Automatorは、アプリケーション一覧フォルダ内にある・・・はず^^;

1. 入力設定は「ファイルまたはフォルダ」にして、検索対象を「Finder」にする

1. アクション＞ライブラリ＞ファイルとフォルダ＞「Get Folder Contents」を選択
　　・サブフォルダから取得のチェックも入れる

1. アクション＞ライブラリ＞ファイルとフォルダ＞「Filter Finder Items」を選択
　　・条件：「種類」が「イメージ」「である」

1. アクション＞ライブラリ＞ファイルとフォルダ＞「Duplicate Finder Items」を選択

1. アクション＞ライブラリ＞写真＞「Scale Images」を選択
　　・コピーアクションは「追加しない」を選択
　　・比率指定：50

1. アクション＞ライブラリ＞ファイルとフォルダ＞「Rename Finder Items」を選択
　　・「テキストを置きかえる」：「 のコピー」を「@low」に置換
　　※置換文字は、適時変更

1. サービスを保存
　　・保存する時に、名前を付ける

６を変更する事で、指定ピクセルにすることも可能だし、
４と６を変えれば、画像だけじゃなく他にも色々応用が効きそうな気がする。

---
・イメージはこんな感じ
![ImageScales.png](https://qiita-image-store.s3.amazonaws.com/0/15906/27194d9d-ee98-af43-8298-4e1519e102dc.png)



# 「使い方」

1. フォルダ、ファイルで右クリック
1. 一番下の「サービス」から保存時に設定した名前を選択
1. 色々やってるのでちょっと待つ
　　(ファイルが多いとそこそこ時間がかかるみたい)
1. できた！

ファイルが多いと処理に時間が掛かるけど、
さっくり作れるってのもあるし、そこは・・・まぁ・・・ね^^;
(MACアプリできっちり作るともっと早くなるのかな・・・)


　参考URL：
http://www.madeinthepain.com/automator-resize-images/
http://superuser.com/questions/240439/mac-automator-save-to-current-directory
Xcode5でiOS5以前用のアイコン設定を行う

#エラー発生
突然、Validate時にこんなエラーが出るようになった。

```text
Missing required icon file. The bundle does not contain an app icon for iPad
of exactly '72x72' pixels, in .png format for iOS versions < 5.0.
```

もちろんDistributeでも同様のエラーが出る。
先週まではなんともなかったのに！（今日は2014/1/23）

#原因と対策
`General` - `App Icons` でアイコンを登録してもiOS5以前用の設定が行われないようなので手動で設定を行う。

#設定
Info.plistにKeyを追加する。

* Universalアプリの場合

```text
Icon files   Array
   Item 0    String   icon72
   Item 1    String   icon57
```

* iPhone専用アプリの場合（未検証）

```text
Icon file    String   icon57
```

* iPad専用アプリの場合（未検証）

```text
Icon file    String   icon72
```

.xmlだとこんな感じ。

```xml
<key>CFBundleIconFiles</key>
<array>
  <string>icon72</string>
  <string>icon57</string>
</array>

<key>CFBundleIconFile</key>
<string>icon57</string>

<key>CFBundleIconFile</key>
<string>icon72</string>

```

#補足
* お約束の名前（Icon-72.pngなど）の場合は追加設定しなくても大丈夫っぽい？
* ```Deployment Target``` が5.0以上のアプリには関係ありません。
PhpStomr+xampp+xdebugでブレークポイントをはるところまで(Windows環境)

PhpStomrとxamppは既にインストール済み前提。

##php.iniの設定
xamppには既にxdebugが入っているため、設定を有効にする。

```ini
[XDebug]
zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "127.0.0.1"
xdebug.remote_port = 9000

```

apache再起動後、phpinfo.phpで設定が反映されていることを確認する。

##PhpStormの設定
File->Settings->PHP->Debug
Debug portはデフォルトで9000だけど一応確認。(xdebug.remote_portと同じ値にする。)

##動作確認
メニューバーの電話マークを押して、ブレークポイントをはってブラウザからリクエストして、ブレークポイントで止まることを確認する。
ある既存ユーザ持つ表全てに参照権限のみを付与

アプリケーション側で「テーブル参照のみさせたい」ユーザを作成してくれという依頼が最近ありました。

大抵はselect any table 権限をつければ良いんですが、個別ユーザの全テーブルを参照させたい場合は各テーブル分、オブジェクト権限を付ける必要があります。

これが結構面倒臭い作業なので、以下の手順でSQL文を生成して実行してやります。

テーブル参照ユーザーにて下記SQLを実行
SQL> set pages 0
SQL> SELECT 'grant select on '||table_name|| ' to <参照させたいユーザ>;' FROM user_tables;
grepしてもpsコマンドのヘッダ行を表示するいくつかの方法

```bash
$ ps aux | grep hoge
```
ってやったときにgrepのヘッダ行がないと、どのカラムが何かわからないので不便です

調べてみたらいくつか方法がありました

1. `ps aux | head -1 && ps aux | grep hoge`

1. `ps aux | grep -e hoge -e %MEM`

2回コマンドを叩くことが苦じゃなければ、どのコマンドでフィルタすればいいんだっけ
って悩まないで済む、以下のような感じでもいいのかもしれません

```bash
$ ps aux | head -1
USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND
$ ps aux | grep hoge
...
```
CREATE TRIGGER 構文 TEMPLATE

```mysql
DROP TABLE IF EXISTS `tbuser`;
DROP TABLE IF EXISTS `his_tbuser`;
CREATE TABLE `tbuser` (
   `id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
   `account` varchar(50) NOT NULL,
   `mailaddress` varchar(50) NOT NULL,
   `role` varchar(50) NOT NULL,
   `password` varchar(50) NOT NULL,
   `created` datetime,
   `updated` timestamp,
   `deleted` date,
   `version` INT
);
-- PRIMARY KEY DELETE HISTORY
CREATE TABLE `his_tbuser` AS SELECT * FROM `tbuser` LIMIT 0;

DELIMITER |

CREATE TRIGGER trig_tbuser_bi BEFORE INSERT ON tbuser
  FOR EACH ROW BEGIN
    SET NEW.created  = now();
    SET NEW.updated  = now();
    SET NEW.password = MD5(NEW.password);
    SET NEW.version = 1;
  END;

|
CREATE TRIGGER trig_tbuser_ai AFTER INSERT ON tbuser
  FOR EACH ROW BEGIN
  END;
|
CREATE TRIGGER trig_tbuser_bu BEFORE UPDATE ON tbuser
  FOR EACH ROW BEGIN
    SET NEW.created = OLD.created;
    SET NEW.updated = now();
    SET NEW.password = IFNULL(NEW.password, OLD.password,MD5(NEW.password));
    SET NEW.version = OLD.version + 1;
    INSERT INTO his_tbuser SELECT * FROM tbuser WHERE id = OLD.id;
  END;

|
CREATE TRIGGER trig_tbuser_au AFTER UPDATE ON tbuser
  FOR EACH ROW BEGIN
  END;
|
CREATE TRIGGER trig_tbuser_bd BEFORE DELETE ON tbuser
  FOR EACH ROW BEGIN
    INSERT INTO his_tbuser SELECT * FROM tbuser WHERE id = OLD.id;
  END;
|
CREATE TRIGGER trig_tbuser_ad AFTER DELETE ON tbuser
  FOR EACH ROW BEGIN
  END;
|

DELIMITER ;

INSERT INTO tbuser  
SET 
  `account`     = 'admin',
  `mailaddress` = 'webmaster@mail.example.com',
  `role`        = 'tomcat',
  `password`    = 'password'
;

SELECT * FROM tbuser;
SELECT * FROM his_tbuser;

UPDATE tbuser t
SET
  t.password= 'password2'
WHERE
  t.id = 1;

UPDATE tbuser t
SET
  t.account = 'admin2'
WHERE
  t.id = 1;

SELECT * FROM tbuser;
SELECT * FROM his_tbuser;

DELETE t 
FROM tbuser t
WHERE
  t.id = 1;

SELECT * FROM tbuser;
SELECT * FROM his_tbuser;
```
ネットワーク調査するツール作った

```bash:nmapでも調べられる。
nmap -sP 192.168.100.1-255
```

go-ipscan
=========

ネットワーク調査ツール
ネットワーク内にてどのホストがいるのか確認用に作った。pingに対応してないのが残念。
22, 80, 23 ポートが開いているか調査。開いているポートが一つでも見つかったら終了。

goのマルチスレッドを使ってみたかったんです。

オプション
----------
	ipscan [-o|--one] [hostname|ip] [-p|--port port_number]
	ipscan [-m|--multi] 192.168.11. [-p|--port port_number]
	ipscan -h

単体調査
---------
* ./ipscan -o mydomain.local
* ./ipscan -o 192.168.11.2

複数調査
---------
* ./ipscan -m 192.168.11.
  * 192.168.11.1 - 192.168.11.254まで調査します。

調査するポート追加
------------------

* 22, 80, 23 ポートのチェック後に8080ポートのチェックを追加したい場合
  * ./ipscan -o mydomain.local -p 8080
  * ./ipscan -m 192.168.11. -p 8080

* 22, 80, 23 ポートのチェック後に8080 8081 8082ポートのチェックを追加したい場合
  * ./ipscan -o 192.168.11.2 -p 8080 8081 8082
  * ./ipscan -m 192.168.11. -p 8080 8081 8082


Download
=============
* [Download](https://github.com/tukiyo/go-ipscan)
Hubotにlogbot機能を追加する

Hubotに会話ログを取って閲覧する機能を追加したいと思います。今回は"hubot-logger"というものを使います。
特にIRCなどはそのままで使っていると全くログが残りません。
また、すでにlogbotがある場合でも、Bot機能を一元化して運用の手間を減らしたりできると思います。

所要時間はだいたい5分程度です。

なお、まだHubotを設定していない！という方はこちらを参考にセットアップしてみてください。
http://qiita.com/Morikuma_Works/items/0a10dfcef089d344000c

#環境
* Ubuntu 12.04LTS
* Node.js v0.10.24
* IRC用のアダプタを用いてテスト済み
* `~/mybot/` がHubotがあるディレクトリだとします

#パッケージを追記する
##package.jsonを編集する
`~/mybot/package.json` を編集します。

```Bash:package.json
...
"dependencies": {
...
 "hubot-logger": "~0.0.11"
 }...
```

カンマなどを辻褄が合うように編集します。
##external-scripts.jsonを編集する
もしない場合は新規作成、ある場合は下記を追記

```Bash:external-scripts.json
["hubot-logger"]
```

#依存関係を解決する

```Bash
npm install
```

をして、依存関係にあるパッケージをインストールします。

#環境変数を設定する
Hubotの起動スクリプト（ここではrunbot.sh）に環境変数を追記します。

```Bash:runbot.sh
export IRCLOGS_PORT=3000 #expressがlistenするポート番号
export IRCLOGS_FOLDER="/path/to/where/i/want/logs" #ログの保存先
```

#起動する
起動しましょう。

```Bash
./runbot.sh
```

#ログをウェブ上で閲覧するためには

サーバをexample.com、設定したポート番号が3000だとすると、
http://example.com:3000/irclogs/
でアクセスできます。
しかし、例えばIRCで日本語のchannel名(例えば #エンジニア など)を使っている場合、Webからログにアクセス出来きません！
というわけで、hubot-loggerのソースコードをちょっと改変します。

#hubot-loggerを2byte文字対応させる
`~/mybot/node_modules/hubot-logger/views/channel.jade`
に書かれている`escape()`が原因です。
`escape()`を`encodeURIComponent()`に書き直します。
詳しくはこちら:
http://www.m-bsys.com/code/javascripr-encodeuri

```Bash:channel.jade
extends layout

block body
  div.channels
    ul
      - each channel in channels
        li
          a(href= '/irclogs/' + encodeURIComponent(channel) + '/latest') #{channel}
          = ' ('
          a(href= '/irclogs/' + encodeURIComponent(channel) + '/index') index
          = ' | '
          a(href= '/irclogs/' + encodeURIComponent(channel) + '/latest') latest
          = ')'
```

#まとめ
特にIRCなど、自動的にログが取れないようなチャットの仕組みを使っている場合でも、
今の時代15〜30分程度でログを取るような機能が得られてしまいます。時代の進歩ってすごいですね。

次回は、coffeescriptでbot機能の作成方法と、自分が使わせて頂いているおすすめ機能を紹介したいと思います。
AndroidStudio で gradle.build に記述した依存関係が完全に解決できなくなった時に見るページ

AndroidStudio 0.4.2 で、build.gradle の dependencies に依存関係を記述して Sync Project with Gradle Files した時、aar ファイル自体は解決できているものの、その中にある jar にパスが通らず、ライブラリのパッケージが解決できない時がある。

そうなった時には、以下の手順でこの不具合を解消する事ができる。

1. AndroidStudio を終了する
2. プロジェクト内の iml ファイルを rm する
3. 再度 AndroidStudio を立ち上げ、プロジェクトの読み込みを待つ

追記

AndroidStudio 0.4.3 でこの問題は修正されました！めでたしめでたし
markdown-modeのヘッダの色変更


org-modeの色を引っ張ってくるのがよい．

	(custom-set-faces
 	 '(markdown-header-face-1 ((t (:inherit org-level-1))))
 	 '(markdown-header-face-2 ((t (:inherit org-level-2))))
	 '(markdown-header-face-3 ((t (:inherit org-level-3))))
	 '(markdown-header-face-4 ((t (:inherit org-level-4))))
	 '(markdown-header-face-5 ((t (:inherit org-level-5))))
	 '(markdown-header-face-6 ((t (:inherit org-level-6))))
	)

https://gist.github.com/rysk-t/2dcd140663676de14dbe


2014-02-02 修正
コマンドに引数が指定されているかどうかを区別したい

M-x foo と C-u M-x foo を区別したいような場合で、引数の値自体はどうでもいい場合。

`(interactive "P")` を指定し、引数が nil かどうかをチェックすればよい。

```el
(defun foo (arg)
  (interactive "P")
  (if arg
      "引数が指定された"
    "引数が指定されなかった"))
```
org.springframework.beans.factory.NoSuchBeanDefinitionException


```
org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [org.codehaus.jackson.map.ObjectMapper] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
```

スタックトレースで、上記の例外が発生した場合、application-context.xmlにorg.codehaus.jackson.map.ObjectMapperのBean定義漏れが原因である。
AutoScale の設定値以上に Instance が増える！？


まぁ、結論から言えば、オレの調べ方が甘かっただけなんですが。

# 前提

* AWS の AutoScaling 機能を利用して EC2-Classic なインスタンスを負荷率に応じて増減させている
* ソレとは別に、負荷が高い時間帯のちょっと前とちょっと後に ScheduledAutoScaling (crontab 記法で書くヤツね) を利用して、予めインスタンスを増減させることもしてる

# 現象

負荷率は問題無いのに、設定している min-size よりも多い台数が ELB の下にぶら下がりっぱなし

# 原因

ちょっと前に発生した障害の対応として、手動でインスタンスを増やして ELB に紐付けていた。

しかしながら AutoScaling の仕組みとして「AutoScaling によって増えたサーバであるかどうか」を判定しているらしく、インスタンス増減の基準として、手動起動したインスタンスは対象にならないっぽい。

結果として、AutoScaling 側で「あ、指定の台数に足りてねーじゃん」と判断してインスタンスが自動起動されて、 **手動起動したインスタンス数 + 自動起動したインスタンス数** がぶら下がった状態となってしまっていた。

# 備考

Management Console から AutoScaling の設定が出来るようになったのは、非常に便利ですね…！

後は ScheduledAutoScaling も設定出来るとより素敵なんだが…っ！
<span style="color: #999999;">中の人、お願いします！！ｗ</span>

# 参考

* makotouehara39　さんの [SlideShare](http://www.slideshare.net/makotouehara39/aws-st-20130617autoscaling) が非常に勉強になりました。
一からUnityを触ってみる　第二回

昨日はダウンロードで終わってしまったので、
本日はインストールを。
設定は、デフォルトのまま。

![スクリーンショット 2014-01-23 12.32.25.png](https://qiita-image-store.s3.amazonaws.com/0/36225/a59f43ec-9df1-fa19-0cf2-3de0c1546da2.png)
![スクリーンショット 2014-01-23 12.32.30.png](https://qiita-image-store.s3.amazonaws.com/0/36225/2a2f9df5-0349-4404-8aeb-c4442b03b25b.png)
![スクリーンショット 2014-01-23 12.32.35.png](https://qiita-image-store.s3.amazonaws.com/0/36225/c7986d10-50eb-fe78-4eba-c9e0e5a9e2e5.png)

インストール後、アプリを起動すると「Activate your Unity licence」画面が出るので、
「Activate a free 30-day trial of Unity Pro」にチェック。

![スクリーンショット 2014-01-23 12.43.09.png](https://qiita-image-store.s3.amazonaws.com/0/36225/43b056d6-1e90-57d3-90b1-cceef8540482.png)

アカウントは持っていないので、「Create Account」を選択。
スクリプト言語からの任意の値をアクセスログへ記録するApacheモジュール


# 作ったきっかけ

以前にPythonのWEBアプリケーションで、Apacheアクセスログのカラムに分析用のデータを出力しようとしたところ、Pythonには PHPの apache_note() に相当する機能がなかったので、であればApahceモジュールとして拡張しようと思い作りました。
※ちゃんと調べてないので、もしかして Python でも頑張ればできたかもしれません^^; 

せっかくなので GitHub に置きました（ソース量は恐ろしく少ないですが..）

https://github.com/hkusu/mod_header_note

Apache2.2のフィルターとして動作するので、WEBサーバがApacheであれば任意のスクリプト言語で利用することができます。

# 特記事項

上にも記載していますが、PHPの場合は apache_note() で事足ります。
また、Apacheカスタムログの書式 `%{hoge}e` でApache環境変数の値を、 `%{hoge}o` でHTTPレスポンスヘッダの値をApacheアクセスログへ記載できますので、その方法で同じことは出来ます（いま落ち着いて考えると、もしかしてPythonで環境変数に値をセットできたかもしれない..）
※HTTPレスポンスヘッダの場合は、クライアント側へヘッダの内容が渡ってしまうので注意です。

# 参考URL

[Apache2.2のmod_log_config公式ドキュメント](https://httpd.apache.org/docs/2.2/ja/mod/mod_log_config.html)
Macでzip→cpgz→zipとなって無限ループし、圧縮ファイルが解凍できない場合の対処法

原因は分からないけど、（デフォルトツールのバージョンが古いからというのがあるけど、未確認）  
コマンド叩いたら正常に解凍できたのでシェア。

## 手順
1. ターミナル（端末）を開き、解凍したい圧縮ファイルがあるディレクトリまで移動
2. 移動後、以下のコマンドを例に入力後、`Enter`で実行

```
unzip 圧縮ファイル名.zip
```

手順通りにやるとうまく解凍できた。いじょー
splitコマンドでとりあえずログファイルを分割

## きっかけ

ローテーションを設定していなかったアプリのログを、一部の期間に限って提出する必要が出てきました。
気がつくと、サイズは51MB, 5万行くらいになっています。

Apacheのログのように1行ごとに日付が入っていない、railsのproduction.logログだったので、指定期間の分だけどうやって抽出するのか悩みました…。
## splitコマンドを使おう
連結にはcatを使うのは知っていましたが、分割用のコマンドは知りませんでした…。

分割の単位は、行数やバイト数が指定できるそうです。
また、分割されたファイル名には、アルファベットの連番の拡張子がくっつくそうです。

やってみたところ…

```
# ls -sh production.log
51M production.log

# split -l 1000 production.log production.log.
# ls
production.log     production.log.ca  production.log.eb  production.log.gc  production.log.id  production.log.ke  production.log.mf  production.log.og  
# … 以下略
```

たくさんできました。

### 疑ってかかっているので確かめる

できたファイルが本当に1000行単位なのか、確かめてみます。

```
# for FILE in `ls production.log.*`; do wc -l $FILE; done

1000 production.log.aa
1000 production.log.ab
1000 production.log.ac

# 途中略…

1000 production.log.vu
1000 production.log.vv
1000 production.log.vw
1000 production.log.vx
1000 production.log.vy
1000 production.log.vz
814 production.log.wa
```
大丈夫のようです。

肝心の、『x月x日から、x月x日まで』というあたりは、grepでStartを含むファイル、Endを含むファイルを見つけて、その間のファイルを提出という、あまり上手くない方法となりました…。

サーバ／インフラエンジニアの皆さんは、この辺りのテクニックは駆使していらっしゃることと思いますが、とりあえずsplitを覚えて、『どうしよう？』な少し心配事が減った次第です。
多くのディレクトリの中にある、それぞれのファイルを一つ上のディレクトリにコピーする

レアな例の上に適切なタイトルかわかりませんが。
あるディレクトリの子として多くのディレクトリがあり、その子ディレクトリ内にあるファイルを親ディレクトリにコピーさせます。日本語難し。
例えば下記のような状態、埼玉県内にある市町村(70個くらい)の名前が付いたディレクトリがあり、その中にファイルが格納されています。

```
D:\basepoint\さいたま市\さいたま市.csv
D:\basepoint\川越市\川越市改算.csv
D:\basepoint\川越市\点検図川越.pdf
D:\basepoint\熊谷市\熊谷市.csv
D:\basepoint\川口市\川口市変更.csv
・
・
・
D:\basepoint\蕨市\蕨市.csv
```

それをこんな感じにしたいわけです。

```
D:\basepoint\さいたま市.csv
D:\basepoint\川越市改算.csv
D:\basepoint\点検図川越.pdf
D:\basepoint\熊谷市.csv
D:\basepoint\川口市変更.csv
・
・
・
D:\basepoint\蕨市.csv
```

で、操作は`D:\basepoint\`に`cd`した後に下記のようなコマンドイッパツで。

```ps1
Get-ChildItem -Recurse -Name | Where-Object { Test-Path $_ -PathType Leaf } | Where-Object { Copy-Item $_ ./ }
```

特定の拡張子、例えばCSVファイルだけ取りたければ`Select-String "csv"`を追加して

```ps1
Get-ChildItem -Recurse -Name | Where-Object { Test-Path $_ -PathType Leaf } | Select-String "csv" | Where-Object { Copy-Item $_ ./ }
```

こんな感じ。


`Get-ChildItem -Recurse -Name`でカレントディレクトリ以下にあるファイルとディレクトリを再帰的に取得します。
パイプで繋いで`Where-Object { Test-Path $_ -PathType Leaf }`で取得したパスがファイルであるもののみを取得します。
最後に`Where-Object { Copy-Item $_ ./ }`でファイルをカレントディレクトリにコピーして終わり。

エクスプローラで`D:\basepoint\`を開いて`F3`キーを押した後に検索条件入れてコピペした方が楽で早いなんてご意見もあると思いますが、PoerShellでやってみたかったんですよ…。
x-webkit-speechが実装されているかどうか確認する方法


HTML5でテキストフィールドへの音声入力をサポートするx-webkit-speechという属性があります。

```html
    <input type="text" x-webkit-speech>
```


これだけでテキストフィールドの右端にマイクのアイコンが出てきて音声入力ができるので大変ラクチンですなのですが、
いかんせんchromeの実装なので他の一般的なブラウザではおそらく使えません。
この実装をサポートしているかどうかを確認するスクリプトが下記になります。


```javascript
    if (document.createElement('input').webkitSpeech === undefined) {
      alert("NG さぽーとされてない");
    } else {
      alert("OK さぽーとされてる");
    }
```

ちなみに現時点で同じchromeでもPC版はOK、android版はNGでした。
迷惑メールに引っかからないdns設定


共有のレンタルサーバなど、IPアドレスが同じで複数ドメインを扱うことで迷惑メールフィルタに捨てられることがある場合の対策

というか、もはやMXやAレコードと並ぶ必須の設定項目らしいのでメモ

借りてるサーバのGLOBAL IPが192.168.10.2 だった場合

DNS設定に以下のレコードを追加
>
IN  TXT "v=spf1 +ip4:192.168.10.2 -all"


wikipediaに必要十分な情報有りました

>
http://ja.wikipedia.org/wiki/Sender_Policy_Framework

はぁ。もっと善意に基づいて運用したいなぁ。
.tmux.confでOS固有処理を書く


`if-shell`で実現可能

### 例
```.tmux.conf
if-shell "uname | grep -q Darwin" "source-file ~/.dotfiles/.tmux.conf.osx" ""
```
`~/.dotfiles/.tmux.conf.osx`にはMacOSX固有処理を書くなど

# 参考
[tmux configuration conditional to OS - Super User](http://superuser.com/questions/539595/tmux-configuration-conditional-to-os)
deviseを改造してパスワードなしでログインできるようにする


モデルはrails g devise users で作成したものを前提とします。
まず、カスタマイズ用のコントローラを作成します。
app/controllers/users/sessions_controller.rb
とでもしておきます。
次にroutes.rbを編集して、今作成したコントローラをdeviseから利用できるようにします。

```ruby:routes.rb
  devise_for :users, :controllers => {
    :sessions => 'users/sessions'
  }
```

次にdeviseが本来使用しているログイン用のコントローラを継承してオーバーライドしていきます。
https://github.com/plataformatec/devise/blob/master/app/controllers/devise/sessions_controller.rb
上のclassを先ほど作成したsessions_controller.rbにまるまるコピペして、class定義の部分だけ以下のように修正します。

```ruby:sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
```

これで継承できました。
ログイン時の認証を担当しているのはcreateメソッドですので、次はそちらを修正します。

```ruby:sessions_controller.rb
  # POST /resource/sign_in
  def create
    #元の認証ロジック
    #self.resource = warden.authenticate!(auth_options)
    
    #emailだけでログインできるように変更
    self.resource = User.where(:username => params[:user]['email']).first

    set_flash_message(:notice, :signed_in) if is_flashing_format?
    sign_in(resource_name, resource)
    yield resource if block_given?
    respond_with resource, :location => after_sign_in_path_for(resource)
  end
```

元の認証ロジックで返されるself.resourceの中身をログに出してみるとわかりますが、これはUserモデルのオブジェクトになっています。
従って、Userモデルをそのまま扱えば自前のロジックを実装できます。
これを応用してアカウントを作成しないゲストユーザーを認証させたいような場合に使えると思います。
RStudio+XeLaTeX on Windows

XeLaTeXで日本語を表示させるということをWindowsのRStudioでやってみる。
そのまんまだと、\sectionやチャンク内で日本語が表示されない。

```html 
\documentclass{article}
##ここに日本語フォントを指定
\usepackage{xeCJK}
\setCJKmainfont{MS Mincho}
\setCJKsansfont{MS Gothic}
\setCJKmonofont{MS Gothic}
\XeTeXlinebreaklocale "ja"


\title{Sweave使いたい}
\author{名前}

\begin{document}

\SweaveOpts{concordance=TRUE}

\maketitle
\newpage

\section{Rで解析}
次のChunkはコンパイルに問題ない。
<<lib>>=
# パッケージの読み込み
library(car) # scatterplot
library(MASS) # stepAIC
@

\section{なぜに？}
<<reading>>=
# あやめデータ
head(iris)
@

チャンク内と同様にverbatim環境でも日本語が表示される
 \begin{verbatim} 
 Japanese 日本語
 \end{verbatim}

\end{document}
```
zsh起動時にtmux同時起動


~/.zshrcに１行追加

```.zshrc
[[ -z "$TMUX" && ! -z "$PS1" ]] && tmux
```

# 参考
[zsh起動時にtmuxやtscreenやscreenを起動する - Humanity](http://d.hatena.ne.jp/tyru/20100828/run_tmux_or_screen_at_shell_startup)


# 補足
screenも併せて使いたい場合の注意点

```
[[ -z "$TMUX" && -z "$WINDOW" && ! -z "$PS1" ]]
```
とやっておかないとscreen起動時にもtmuxが起動してしまいます。
超絶簡単に、HTMLをMarkdownに変換する方法：url2markdown（インスコ不要）


Markdown→ HTMLは普通ですが、一旦HTML化して保存してしまったブツをMarkdown形式にしたいと思って探して見つけた一つの方法です。

[「url2markdown」というOSS（Python製）](https://github.com/kennethreitz/url2markdown)で出来ます。
変換したいだけなら、`curl`コマンドで変換対象URL投げるだけでOKです。

先に書いておくと、変換は完璧では無いです。ただ、以下に書いた私の要件は満たせたので書いています。


# 目的
HTML形式→ Markdown形式に変換したい。しかもなるべく簡単に。

# 何でこんなことをやりたいのか？
以前、WordPressでブログを始めた際、「Markdown on Save Improved」というMarkdown→HTMLプラグインを入れて書いてたんですが、公開するとHTMLとして保存されてました。

でも、これだと、編集が超絶めんどくさいのと、そもそもWordPressも試しに始めただけなので、本格的にブログ始める前に、デフォでMarkdown使える＆SEOも強いと言われる、はてなブログに乗り換えることにしました。

で、移行したんですが、その時点だと、やっぱり過去記事に関しては何も対応してないのでHTML形式で保存されたままです。
過去記事もちょっと編集したい時があったので、Markdown形式に変えたいなと思って探したのが今回記事内容のキッカケです。

## 色々探してみた
で、まず例によってググると色々出て来ます。
適当にひと通り軽く見てみて、楽に変換できそうな以下の記事に目をつけました。
記事には、日本語ダメと書いてましたが、私の環境だと何も意識せずいけました。

## 参考記事
* [どんどん変換。HTMLをMarkdown化「url2markdown」](http://www.moongift.jp/2013/10/20131014-3/)


# 私の要件（優先順位順）
1. 当然、日本語変換出来ないとダメ
1. インスコ不要（準備なし）がいい：上記日本語の前提外すと、この手軽さが最優先事項
1. 完璧でなくてもいいんで、修正かなり少なくて済むぐらいには変換してくれる

# 試した環境
他は試してません。すいません。
* OS：OSX 10.9.1
* 必要なモノ：curl

# やり方
では、やり方です。

* ```$ curl http://url2markdown.herokuapp.com/?url=[変換対象URL(つまりHTML)]```

これだけ。超簡単ですね。

ただ、これだとコンソールにダラっと変換結果が出力されるだけなので、普通に考えるとファイルにリダイレクトしたり、ある程度まとまった量を一度に変換かけるならシェル等のプログラムに噛ませば良いと思います。

## 使用例
これは、[私が書いたブログ記事](http://humangas.hatenablog.jp/entry/2014/01/22/193847)をMarkdown形式に変換して、ファイルに出力する例です。

1. ```$ curl http://url2markdown.herokuapp.com/?url=http://humangas.hatenablog.jp/entry/2014/01/22/193847 > ~/Desktop/test.md```


# 感想
うーん、どうでしょう。

上記例の結果を自分で書いたMarkdownファイルと比べてみましたが、いくつか情報が抜け落ちてるのと、若干形式がおかしいですね。。。

ここまで読ませといて最後にそんなガッカリしたこと書くなよ。て感じですが、どうせワンタイムでしか使わないし、だいたい変換出来てて、後はちょっと手修正入っても良いぐらい思ってる自分にとっては、まぁ使えるかなという感覚でした。

完璧な変換を求める方にはオススメ出来ません。

ただ、HTMLの形式や、サイトの構成によっては、もうちょっと綺麗に変換がかかるかもしれません。
そこまで試してはいないです。すみません。
「Sublime Text 2で全角スペースをハイライト表示するプラグインを作る」コメント欄のTipsをマージしてみた。

[Sublime Text 2で全角スペースをハイライト表示するプラグインを作る]("http://qiita.com/kuronekomichael/items/865e1a6605b1146d4341")のコメント欄をマージしときました。

```py:AlwaysHighlight.py
#!/usr/bin/python
# -*- coding: utf8 -*-
import sublime
import sublime_plugin

class AlwaysHihghlight(sublime_plugin.EventListener):
    # highlight
    def highlight(self, view):
        pattern = view.settings().get('alwayshighlight_pattern')
        if view.settings().get('fullwhitespace_viewable') == True:
            if pattern:
                view.add_regions('AlwaysHighlight',view.find_all(pattern), "invalid", sublime.DRAW_OUTLINED)
        else:
            view.erase_regions('highlight')
    # Called after changes have been made to a view.
    # @override
    def on_modified(self, view):
        self.highlight(view)

    # Called when a view gains input focus.
    # @override
    def on_activated(self, view):
        self.highlight(view)

    # Called when the file is finished loading.
    # @override
    def on_load(self, view):
        self.highlight(view)
```

設定は下記

```text:Preferences.sublime-settings
	// 全角スペースのハイライトをするかどうか
	"fullwhitespace_viewable" : true,
	//"fullwhitespace_viewable" : Flase,
	// "foo"、"bar"、全角空白、全角英数字を常にハイライトする
	"alwayshighlight_pattern": "foo|[　０-９Ａ-Ｚａ-ｚ]",
```

皆様に感謝！
Dockerのバージョンを上げる

Dockerの勉強用メモ、続きです。

## ときどきバージョンを確認しよう
dockerのイメージが要らなくなったので、削除しようと思ったら、うまく削除できないことがありました。
そういう場合は、ひとまずバージョンを確認。

```
vagrant@precise64:~/work$ docker version
Client version: 0.7.2
Go version (client): go1.2
Git commit (client): 28b162e
Server version: 0.7.2
Git commit (server): 28b162e
Go version (server): go1.2
Last stable version: 0.7.5, please update docker
```
最新バージョンと違うからupdateしてね、といった表示が…。

ubuntuはあまり良く知らないので、[Upgrading](http://docs.docker.io/en/latest/installation/upgrading/) の解説に従って、apt-get しました。
単純なdocker ではなくて、 **lxc-docker** なんですね。

### 手順

- sudo apt-get update 実施
- sudo apt-get install lxc-docker 実施で新しいバージョンへ更新。

## 確認ログ

以下、ログです。

```
vagrant@precise64:~/work$ sudo apt-get install lxc-docker
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following extra packages will be installed:
  lxc-docker-0.7.5
The following packages will be REMOVED:
  lxc-docker-0.7.2
The following NEW packages will be installed:
  lxc-docker-0.7.5
The following packages will be upgraded:
  lxc-docker
1 upgraded, 1 newly installed, 1 to remove and 161 not upgraded.
Need to get 2,681 kB of archives.
After this operation, 185 kB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 https://get.docker.io/ubuntu/ docker/main lxc-docker amd64 0.7.5 [1,872 B]
Get:2 https://get.docker.io/ubuntu/ docker/main lxc-docker-0.7.5 amd64 0.7.5 [2,679 kB]
Fetched 2,681 kB in 55s (48.7 kB/s)                                                                                                                                                                              
(Reading database ... 81695 files and directories currently installed.)
Preparing to replace lxc-docker 0.7.2 (using .../lxc-docker_0.7.5_amd64.deb) ...
Unpacking replacement lxc-docker ...
(Reading database ... 81695 files and directories currently installed.)
Removing lxc-docker-0.7.2 ...
docker stop/waiting
Processing triggers for ureadahead ...
Selecting previously unselected package lxc-docker-0.7.5.
(Reading database ... 81693 files and directories currently installed.)
Unpacking lxc-docker-0.7.5 (from .../lxc-docker-0.7.5_0.7.5_amd64.deb) ...
Processing triggers for ureadahead ...
Setting up lxc-docker-0.7.5 (0.7.5) ...
docker start/running, process 2915
Setting up lxc-docker (0.7.5) ...
```
うまくいったようなので、バージョン確認します。

```
vagrant@precise64:~/work$ docker version
Client version: 0.7.5
Go version (client): go1.2
Git commit (client): c348c04
Server version: 0.7.5
Git commit (server): c348c04
Go version (server): go1.2
Last stable version: 0.7.5
```
Rails 4 + Bower + Bootstrap 3 + Font Awesome 4

[Rails 4.0 + Bower + Twitter Bootstrap 2.3](http://qiita.com/milkcocoa/items/a2c462f91ab6c81404fc) のアップデートです。

一番の問題は Web Font をどうするかです。これには Web Font のパスが変数になっていることを利用し、その変数に [cdnjs](http://cdnjs.com) のパスを設定することで解決しました。cdnjs ではすでに Access-Control-Allow-Origin: * も設定されており、[CORS の問題](http://qiita.com/Oakbow/items/dae3d383d87d7d0c6344)も解決されているので、面倒な設定をする必要がありません。

# application.rb の設定

いらなくなりました。less-rails 2.4.1 の[このコミット](https://github.com/metaskills/less-rails/pull/72)で修正されたものと思われます。

# Bootstrap の設定

app/assets/stylesheets/bootstrap.css.less

```less
@import 'bootstrap/less/bootstrap';
@icon-font-path: '//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.0.3/fonts/';
```

app/assets/javascripts/bootstrap.js

```js
//= require bootstrap/js/transition
//= require bootstrap/js/alert
//= require bootstrap/js/modal
//= require bootstrap/js/dropdown
//= require bootstrap/js/scrollspy
//= require bootstrap/js/tab
//= require bootstrap/js/tooltip
//= require bootstrap/js/popover
//= require bootstrap/js/button
//= require bootstrap/js/collapse
//= require bootstrap/js/carousel
//= require bootstrap/js/affix
```

# Font Awesome の設定

app/assets/stylesheets/font-awesome.css.less

```less
@import 'font-awesome/less/font-awesome';
@fa-font-path: '//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.0.3/fonts';
```

# 参考

* [Rails 4.0 + Bower + Twitter Bootstrap 2.3](http://qiita.com/milkcocoa/items/a2c462f91ab6c81404fc)
* [S3+CloudFrontでWebフォントを利用する（FireFox対応）](http://qiita.com/Oakbow/items/dae3d383d87d7d0c6344)
* [Font Awesome not working in Firefox (possible fix found) · Issue #755 · cdnjs/cdnjs](https://github.com/cdnjs/cdnjs/issues/755)
* [Fix import hooks to allow relative paths to files by jurglic · Pull Request #72 · metaskills/less-rails](https://github.com/metaskills/less-rails/pull/72)
Windowsで快適にTeX

# 前書き

**「Windows大好き！Linux何それおいしいの？」** 的な人の願望を叶えるための記事です。大学のレポートもWindows上でサクサク書いてしまいましょう！

# TeX

**[TeX Wiki - TeX installers for Windows](http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?TeX%20installers%20for%20Windows)** からお好きな物を選択してインストールしてください。私は2番目の **「TeX インストーラ 3」** を使って **「W32 TeX」** をインストールしました。ダウンロード・インストールにはそれなりに時間がかかると思います。

ぁ、ぅんWindowsだヵら$\rm\LaTeX$でゎなぃ（笑
って思ったけどパッケージの中に結局$\rm\LaTeX$同梱されてるっぽいね

# Notepad++

Windows最強のエディタと言えばやっぱり **Notepad++** でしょ！

**[Notepad++](http://notepad-plus-plus.org/)**


**[Notepad プロジェクト日本語トップページ - SourceForge.JP](http://sourceforge.jp/projects/notepad-plus/)**


## 基本設定

（日本語プラグインで英語のままになっているところがあると思いますが、適当に対応してください）

1. 「設定」→「環境設定」→「新規作成」を開く。
1. フォーマットで **「Unix」** を選択、エンコードで **「UTF-8(BOM無し)」** を選択して **「開いているANSIファイルに適用」** にチェックを入れる。TeX編集にしかこのエディタを使わないのであればデフォルトの言語に **「TeX」** を指定しておく。
1. 「設定」→「環境設定」→「ファイルの関連付け」を開く。
1.  **「.tex」** を登録。
1. 「設定」→「環境設定」→「タブ設定」を開く。
1. タブサイズで **2～4** 程度の任意の値を指定する。タブ文字よりも半角スペース複数個の方が好みであれば「半角スペースで置換」にチェックを入れる。
1. 「設定」→「環境設定」→「入力補完」を開く。
1. 「入力毎の入力補完を有効にする」にチェックを入れる。 **「関数補完」** と **「単語補完」** の2種類がある。最低限の補完が欲しければ前者、鬱陶しいぐらいに候補を出してほしいなら後者を選択。補完を有効にする最小文字数は **3** あたりが無難。

常に編集は
![d8083222-d988-6dd6-e8c0-8a533cca745d.png](https://qiita-image-store.s3.amazonaws.com/0/25060/1d373345-63cf-6618-effd-2d96a77ba3a3.png)
この状態で行う。

## 便利な機能

- **入力候補を強制的に表示**<br />→ `Ctrl` `Space` を押す。
- **まとめてインデント**<br />→ 複数行選択して `Tab` を押す。
- **まとめてアンインデント**<br />→ 複数行選択して `Shift` `Tab` を押す。

そのほか…
**全角入力中に `￥￥` と2回連続して入力すると `\\\\` に変換してくれる。**

## **TeX** ファイルから **PDF** ファイルを生成する

### 下準備

```bat:(A)
@echo off

cd /d %1
if %errorlevel% neq 0 (
  pause
  exit /b 1
)

del %4 >NUL 2>&1
platex -guess-input-enc -jobname=%3 -interaction=nonstopmode %2
if %errorlevel% neq 0 goto error

dvipdfmx %7
if %errorlevel% neq 0 goto error

del %4 %5 %6 %7 >NUL 2>&1
%8
goto :eof

:error
del %4 %5 %6 %7 >NUL 2>&1
pause
exit /b 1
```

```bash:(B)
"$(NPP_DIRECTORY)/pdfplatex.bat" "$(CURRENT_DIRECTORY)" "$(FILE_NAME)" "$(NAME_PART)" "$(NAME_PART).aux" "$(NAME_PART).log" "$(NAME_PART).out" "$(NAME_PART).dvi" "$(NAME_PART).pdf"
```

1. **notepad++.exe** が存在するフォルダに、 **(A)** を記述したバッチファイルを作成する。ファイル名は **pdfplatex.bat** とする。
1. 「実行」→「ファイル名を指定して実行」を開く。
1. 「実行するファイル」に **(B)** を入力して「登録」を押す。ショートカットキーはお好みで。

### 実行

1. 開いているTeXファイルを上書き保存。
1. 登録したショートカットキーを押す。
1. コマンドプロンプトが起動し、生成されたPDFファイルが開ければ成功。
vimコマンドを端末から実行する


neobundleのコマンド`:NeoBundleInstall`をシェルスクリプトから叩く方法。

環境を毎回構築するのは面倒なのでスクリプト叩くだけにしたい→vimのコマンドって端末からどうやって叩くんだよ←イマココ

`:NeoBundleInstall`を叩くだけにvimを毎回起動していたのですが、どうにかできないか探していたときに見つけた方法です。

# 結論

	#!/bin/sh
	cd $HOME/.vim/bundle
	git clone git://github.com/Shougo/neobundle.vim.git
	vim +":NeoBundleInstall" +:q

この投稿で大事なのは上のスクリプトの最後の1行だけです。
[neobundle.vim.git](https://github.com/Shougo/neobundle.vim)を落とした後、vimを起動してNeoBundleInstallを実行します。
vimのコマンドの前に`+`をつけるだけなので簡単ですね。
私には応用力がないのでNeoBundle以外の利用方法が思い浮かびませんでした。。

このままchefに記述すればvimプラグインがはいると思います(未検証)
でも、個人的には開発環境新調するときしか使わないのでシェルスクリプトで十分満足しています。

間違い等ありましたらご指摘ください。
AWSのハードウェアMFAデバイスが壊れた話

少し前の話で。
AWSはMulti-Factor Authenticationに対応していて、マネジメントコンソールにログインする際にユーザー名とパスワードの他にMFAデバイスからの認証コードの要求を設定することができる。
認証コードはMFAデバイス上で一分間に一回更新される。
仮想MFAデバイスとハードウェアMFAデバイスの2種類があり、[公式サイト上](http://aws.amazon.com/jp/mfa/)ではハードウェアMFAデバイスの方がセキュリティに最良とされている。
なので、とあるサービスのインフラを構築する際にハードウェアMFAデバイスを購入し、ルートアカウント用に使うことにした。
購入したのは[これ](http://onlinenoram.gemalto.com/)で、Amazonで注文するとすぐに送られてくる。
開封して最初に、「結構安っぽいなー」と思った。
3ヶ月くらい使った頃に、errと表示されて壊れた。
ネットで色々調べると、ネットゲームでよく用いられており、割とすぐ壊れるという情報が転がっていたので残念な気持ちになった。
（Amazonのレビューも結構荒れている）


気を取り直し、[公式の問い合わせ窓口](https://portal.aws.amazon.com/gp/aws/html-forms-controller/contactus/aws-token-support)から問い合わせてみたところ、少しして電話がかかってきた。
なんとシアトルからで、緊張しながら電話に出ると案の定英語だった。
頑張ってみるものの上手くコミュニケーションできず、メールを送ってくれとお願いして電話を切った。
しかしなかなかメールが来ないので、日本のサポート窓口に連絡した。
すると、すぐに連絡があり解除手続きをすることができた。


ハードウェアMFAデバイスのほうがセキュアだとあったけど、壊れるとかなり困る。
（この時は、たまたまルート権限が必要な作業がなかったから良かった。）
仮想MFAデバイスはスマホのアプリ(google authenticatorなど)なので壊れる可能性は低いと思われるが、過去google authenticatorはアプリアップデートしたらトークン設定が吹っ飛ぶということもやらかしているのでそういうリスクもある。
MFAデバイス導入するのであれば、IAMをうまく使い複数アカウントでリスク分散をしておくべきだと思いました。
あと、英会話力大事。
Emacs の画面分割時にバッファを入れ替える

Emacs で画面を分割して使っているとき、左右のバッファを入れ替えるのはけっこう手間だったりします。

もしそれを頻繁に行いたければ [rotate.el] (https://github.com/daic-h/emacs-rotate) を使ってみるのをオススメします。 rotate.el を使えば tmux 風にレイアウトの変更や分割したウィンドウの中身の回転が簡単に行えます。

rotate.el の使い方や動作の様子は以下の URL に詳しく書いていますのでそちらをどうぞ。

http://a-newcomer.com/56

さて、この rotate.el ですが、バッファの回転においてカーソルはバッファで維持されるのではなくウィンドウで維持されます。

個人的には回転前と同じバッファにカーソルがある方が好みです。もしも同じ意見の人は、以下のコードを .emacs に書くと解決します。

```common-lisp
(defadvice rotate-window (after rotate-cursor activate)
  (other-window 1))
```

派手な機能ではないですが、毎日の Emacs 生活がほんの少し便利になる Elisp の紹介でした。
【Ruby】Macにruby2.1.0とrails4を入れる（2014/1/23版）【rails4】


Mac前提です。

#rubyのインストール

http://qiita.com/ryam/items/4ad7269a720297121bc5
の開発ツール等のインストールのところまで進めて下さい。

#### rbenvでインストール可能なrubyのリスト

```shell
$ rbenv install -l
```

2014/1/23時点のstableの最新である2.1.0を入れます。

[参考](http://qiita.com/shu_0115/items/ba33b692373f002cc568)

#### 2.1.0のインストール

```shell
$ RUBY_CONFIGURE_OPTS="--with-readline-dir=$(brew --prefix readline) --with-openssl-dir=$(brew --prefix openssl)" rbenv install 2.1.0
```

#### デフォルト設定

```shell
rbenv global 2.1.0
```

#### バージョン確認

```shell
ruby -v
```
2.1.0とか何とか表示されればOK。

#railsのインストール

[参考](http://qiita.com/zss_tr/items/8c1ff505532aa17d8b47)

####インストール

```shell
gem install rails
```

結構時間かかったよ。2014/1/23時点では、4.0.2が入りました。

####バージョン確認

```shell
rails -v
```
relenium をインストールしててはまったとこ

[Rでseleniumが使えるようになった - BOD](http://d.hatena.ne.jp/dichika/20140106/p1)
ここを参考に [relenium](https://github.com/LluisRamon/relenium) パッケージをインストールしようとしたんだけど、下記のようなエラーが出てはまりました。

> Error : .onLoad failed in loadNamespace() for 'rJava', details:
>  call: inDL(x, as.logical(local), as.logical(now), ...)
>  error: unable to load shared object 'C:/Users/hoge/R/win-library/3.0/rJava/libs/i386/rJava.dll':
>  LoadLibrary failure:  %1 は有効な Win32 アプリケーションではありません。

解決としては、[ここ](http://stackoverflow.com/questions/7019912/using-the-rjava-package-on-win7-64-bit-with-r)を参考に、JAVA_HOME の設定を一時的に消すとうまくいきました。原因は不明のまま。

いちおう手順としては(Windows)、
１． [Rtools](http://cran.r-project.org/bin/windows/Rtools/) をインストールする。
２． rJava をインストールする。(うまくいかない場合は[ここ](http://qiita.com/hoxo_m/items/3e41d6608dd8712b505b)参照)

```r
install.packages('rJava', repos='http://www.rforge.net/')
library(rJava)
```

３． devtools をインストールする。

```r
install.packages("devtools")
library(devtools)
```

４． JAVA_HOME を無効にして seleniumJars と relenium をインストールする。

```r
if (Sys.getenv("JAVA_HOME")!="") Sys.setenv(JAVA_HOME="")
install_github('seleniumJars', 'LluisRamon')
install_github('relenium', 'LluisRamon')
```

という感じです。
いろいろいじってたので何が効いたのかはよくわからない。
あとは Java も最新版をインストールしました。
geditでタブの部分が黒くなってファイル名が見れない時の対処法

![RubyDev.png](https://qiita-image-store.s3.amazonaws.com/0/21371/e19b2c94-b06d-945e-fdce-a59f2ac31f9d.png)
geditでのタブ部分（上の画像でここと示している部分）が真っ黒になっててファイル名が判別できないことがあったので残しときます。

環境はUbuntu 12.04 LTS + LXDE

やること
--
といっても解決法は簡単です。GTK2/3を入れるだけ

```shell-session:dash
sudo apt-get install libgtk2.0-dev
sudo apt-get install libgtk-3-dev
```

で、geditを開いていた場合はgeditを再起動すると一番上の画像になっているはずです。
Debian系列以外のディストリビューションの人はそれぞれ自分でgtk2/3が入るパッケージを調べて読み替えてください。
Lubuntuでは発生しなかったのはなんでだろう。
これからRを始める際に役立つドキュメントまとめ


## Rのインストール
- [R CRAN ミラーサイト](http://www.r-project.org/)
- [Rインストール方法 (Windows)](http://www.andrewheiss.com/blog/2012/04/17/install-r-rstudio-r-commander-windows-osx/)
- [Macintoshの場合](http://cran.r-project.org/bin/macosx/)
pkgインストールなので、特に説明はいらないと思います。

## 開発環境
- [RStudio](https://support.rstudio.com/hc/en-us/categories/200035113-Documentation)
私はこちらを使っています。グラフがすぐに見れたり、ファイルの管理などが簡単なのでオススメです。　　
- [Emacs + EES](http://ess.r-project.org/)
普段使ってるEmacsでRのプログラムを書きたいという方にはこちらがオススメ

## ライブラリ・フレームワーク等

### Webフレームワーク
- [Shiny](http://rstudio.github.io/shiny/tutorial/)
RのネイティブWebアプリを作成するためのフレームワーク。

### Ruby関連
- [R in Ruby](https://sites.google.com/a/ddahl.org/rinruby-users/documentation)
ruby上でRを動かしたい人は、こちらのクイックスタートを参考にしてください。正直あまり使う機会がない。。。
- [rserve simpler](https://github.com/jtprince/rserve-simpler) Ruby on RailsでRを動かすためのGem。こちらはRails上で統計処理を行いたい際によく利用します。

### python関連
- [RPy2](http://rpy.sourceforge.net/rpy2/doc-2.0/html/index.html)
RのコードをPythonで動かしたいときにはこちらのドキュメントをよく参考にしています。
- [rPython](http://rpython.r-forge.r-project.org/)
逆にRからPythonのコードを呼び出したい場合はこちらを使用します。

>>
[RStudio Server](http://www.rstudio.com/ide/docs/server/getting_started)など、大規模なデータを処理するためのRの技術は少しずつ進んでいるみたいですが、Rだけ使ってビッグデータ処理などはあまりしないほうがいいみたいです。最近ではRをビッグデータ用に最適化する研究も進んできているみたいです。とりあえず現段階では、RubyやPythonなどで集めてきたデータを、ローカル環境のRで統計処理することがオススメです。