2014/11/09

evernote_uplooder を作ってみた

最近 Evernote の有料会員になったので,がしがし色々ファイルをアップロードしよう と企んでいるのだけど,ひとつずつ Evernote のクライアントでアップロードするのも 面倒なので,コマンドラインからノートを作ってファイルをアップロードするスクリプ トを作ってgem化した.

evernote_uploader

rubygems にはあげてない.ソースは https://github.com/tanahiro/evernote_uploader. ここからダウンロードして,rake install でインストール可能.

準備

まず, https://www.evernote.com/api/DeveloperToken.action にアクセしてEvernote のトー クンを作る.それを,.evernote-tokenというファイルに貼り付けて,HOME に保存 する.

使い方

evernote_uploader [options] <files>
  options
    -n, --notebook NOTEBOOK          Name of notebook (default: web clip)
    -t, --title TITLE                Title of the note
    --token TOKEN                    Token for evernote or filename
    --tags TAGS                      Tags

ファイルは複数指定可能.すべてのファイルはひとつのノートに添付される. 今のところ,対応しているファイルは,pdf, epub, mobi, jpg, png のみ. (まぁ,これはMIMEのタイプの指定の問題なので,拡張は簡単かも)

指定したノートブックが存在しない場合は,エラーで止まる.

タグも複数指定可能. --tags tag1,tag2 のように指定する.

2014/07/15

World cup 2014 Brazil

ワールドカップも終わってしまったので,印象に残ったことなんかをつらつらと.

ドイツ優勝

いやー,めでたい.ドイツ在住者として,やっぱりドイツは気になるわけですよ. 98年にクロアチアに 0-3 でボロ負けしてから,特にワールドカップではもう少しのとこ ろまでいくけど優勝には手が届かなかったのに,ここに来てようやく.

  • ノイアー:特にアルジェリア戦での守備範囲の広さに驚きを通り越して呆れたという かなんというか.ディフェンス並みにスライディングタックルまでやったり. ハイボールに対する安定性は相変わらず.

  • クローゼ:ワールドカップ通算得点記録を更新.しかもそれまでの記録保持者のロナ ウドも観戦するブラジル戦で.1戦目と2戦目は途中出場だったけど,3戦目からスタメ ン.ジョーカー的な方が活躍できるかなと思ったけど,決勝は88分まで出場する活躍 ぶり.今大会2得点だったので,どうせならもっと取れてれば,と思ってしまうのは贅 沢ですかね.

  • ボアテング:ボアテングのディフェンスはあんまり安心できない印象だったし,どこ に出してるのかよくわからないパスも多かったのだけど,決勝のディフェンスは最高 でした.特に前に出て行くディフェンス.お見逸れしました.

  • ラーム:相変わらずの安定ぶり.ボールは取られないし,1対1は負けないし.

  • エジル:あんまり調子が上がってない印象.ブラジル戦の立ち上がり,球際負けまく っててどうなりかと思った.もっとシュート打ってもよかったのでは?ディフェンス 頑張りました.

  • クロース:レアルマドリードへの移籍が噂される今日このごろ.コーナーキックはほ ぼ蹴ってたかな.

  • シュールレ:頼れるジョーカー.決勝はケディラの怪我とか,クラマーのアクシデン トで出場が早めになった気がするけど,延長後半にアシスト.ブラジル戦では後半, 空気読まない2得点 笑

  • ゲッツェ:最初の方はスタメンだったけど,第3戦からはサブに.決勝もサブだったけ ど,88分に投入されて,延長後半にボレーで得点.

  • フンメルス:アルジェリア戦では風邪で欠場で,ブラジル戦も後半は交代するも,安定したディフェンスとパス.

ブラジルの守備崩壊

準決勝でドイツに1-7,3位決定戦でオランダに0-3という惨敗っぷり. 意識がボールに集中しすぎて,マーク外しまくり. オランダ戦の2失点目とか.ペナルティエリア内やすぐそばに5人はディフェンスいたの に,ペナルティエリア内のブリントにフリーでシュートを打たれる体たらく.

オランダ選手全員出場

コスタリカ戦でPK直前にキーパー交代したり,3位決定戦で余裕すぎて第3ゴールキーパ ーを交代させたりで23人全員出場.ロッベンは最後の最後まで走りきる怪物ぶり.カイ トもよかった.

イングランド戦のピルロのフリーキック

入ってたら大会ベストフリーキックだったろうに.

アメリカでの盛り上がりっぷり

アメリカでも "サッカーは女子と子供のスポーツ" ではないくらい盛り上がったようで. こんなものまで出回る始末 笑

日本を含め,アジア勢1勝もできず

印象に残らなかったのが印象に残った感じ.アジア枠が減るかも...一方で,北中米やアフリカからのチームがよかった.

スペイン,イタリア,イングランドがグループリーグで敗退

ドイツとオランダがベスト4までいった一方で,スペインなどの強豪国はグループリーグ で敗退.明暗がくっきり別れた感じ.

西村さん

開幕戦のブラジルークロアチア戦でレフリーを担当.フレッジへのPKが物議を醸す.ク ロアチアディフェンスの手はかかってたので誤審というほどではないと思うけど.あれ をとるか,という感じ.まぁ,西村さんはとるんだよね.他にもっと明らかな誤審が他 の試合でもあったけど,このジャッジほどは話題にはならず.結局日本審判団は,決勝 含めて2回第4審判やっただけに.

2014/05/10

TREK FX 7.3 のメンテナンスと新しいサイクルコンピュータ

ミュンヘンに来てからはたまにしか使ってなかったクロスバイク1, 引っ越してオフィスの距離もそこそこだし, そろそろ暖かくもなってきたので,週に1,2回くらいは通勤で使おうかと思って, TREKのプロショップでメンテナンスをしてもらった.

で,ついでにアタッチメントのつめが壊れたサイクルコンピュータも新調. 一番安かった Bontrager の Trip 1 写真はこれまで使ってたやつ,の Odo. 新しいほうの Odo はこれを初期値に設定した.

ミュンヘンの天気は基本的に不安定なので,どこまで通勤で使えるかは微妙なところで はあるけれども,health ahead ということで.


  1. 日本にいるときは通学でほぼ毎日使ってたんだけどね. 

2014/04/28

Neue Pinakothek Guided Tour

会社の Social Event で,Neue Pinakothek のツアーが日曜にあったので参加してきた. ツアーは一時間半で,ガイドさんがいくつかの絵について,歴史的背景なんかも含めて(英語で)説明してくれたのだけど, こういう説明はやっぱり面白いよね.

写真はゴッホのひまわり.この他にも3枚ゴッホの絵があって,それぞれの絵の描かれた時代による違いとか説明してくれて,なるほどー,という感じ. ちなみに,この絵の黄色は本来もっと明るい色だったのだけど,絵の具の酸化で茶色っぽい色になってしまったらしい.

ところでこういうツアーって,もちろんすべての絵を説明してもらえるわけではないわけだけど,どういう基準で説明する絵を選ぶのだろ. ガイドさんの趣味かな?

2014/04/20

vim コマンド ノーマルモード編

移動

key move
ge 前の単語の末尾
gi 直前の挿入が行われた場所に移動し,挿入モードになる
g;/g, 変更が行われた場所を移動 (:changes)
CTRL-O/CTRL-I 以前カーソルがあった場所に戻る/進む (:jumps)

編集

key operation
daw 単語の削除 (続くスペースを含む)
ciw 単語の編集 (続くスペースを含まない)
ca"/ci" "で囲まれた範囲の編集("を含む/含まない)
cat/cit タグで囲まれた範囲の編集(タグを含む/含まない)

2014/04/18

vim コマンド 挿入モード編

ダイグラフによる特殊文字

<C-k>{char1}{char2}
char1 char2 文字
A : Ä
s s ß
+ - ±
* X ×
o C
詳細は:h disgraphs-default

ヤンク

key Operation
<C-r>" 無名レジスタの内容を挿入
<C-r>0 ヤンクレジスタの内容を挿入

2014/04/06

vim syntax の syntax

syntax items

vim が理解する3つのタイプ
  • Keyword
  • Match
  • Region

優先順位

  1. 複数の Match や Region が同じ場所で始まった場合,最後に設定された item が優先される.
  2. Keyword は Match や Region よりも優先される.
  3. より前の位置で始まる item が優先される

Case

:syntax case [match|ignore]
Case sensitive or not.

Spell

:syntax spell [toplevel|notoplevel|default]
Syntax item のなかに入ってないテキストに対してスペルチェックをするかどうか.

Keyword

:syntax keyword {group-name} [{options}] {keyword} .. [{options}]
キーワードを設定.
  • group-name: keyword のグループ.(ex. Comment, Type)
  • keyword: syntax となる keyword
  • options: オプション.どこに来てもいい. 詳細は arguments を参照

Matches

:syntax match {group-name} [{options}] [excludenl] {pattern} [{options}]
  • group-name: match のグループ.(ex. Comment)
  • options: オプション.詳細は arguments を参照
  • excludenl: 行末 "$" を含むパターンに対して,行末以降まで拡張しない.
  • pattern: 正規表現のパターン

Regions

:syntax region {group-name} [{options}]
               [matchgroup={group-name}]
               [keepend]
               [extend]
               [excludenl]
               start={start_pattern} ..
               [skip={skip_pattern}]
               end={end_pattern} ..
  • group-name: region のグループ
  • options: オプション.詳細は arguments を参照
  • matchgroup={group-name}: region と,その開始,終了パターンで別のハイライトを用いる
  • keepend: 内包された match が終了パターンを超えないようにする
  • extend: この region を含む item の "keepend" を上書きする
  • start={start_pattern}: region の開始のパターン
  • skip={skip_pattern}: end_pattern を探さないパターン
  • end={end_pattern}: region の終了のパターン

arguments

すべての command で使える

  • conceal:concealable とする
  • ccar:'conceal' とされている keyword のなかでも表示される文字
  • contained:トップレベルでは認識されず,別の match の中で指定された時に認識される
  • containedin:
  • nextgroup:
  • transparent:
  • skipwhite:
  • skipnl:
  • skipempty

match と region で使える

  • contains={group-name}:ここで指定されたグループは,そのアイテムのなかで始まることができる.ms=me=でオフセットを設定可能.
  • fold:折りたたみレベルを1つ増加させる
  • display:検出されたハイライトが表示されない時にはスキップされる.行末を超えて継続しない場合など.
  • extend:

region で使える

  • oneline:一行のみで完結
  • concealends:

Group name

Comment
Constant
String
Character
Number
Boolean
Float
Identifier
Function
Statement
Conditional
Repeat
Label
Operator
Keyword
Exception
PreProc
Include
Define
Macro
PreCondit
Type
StorageClass
Structure
Typedef
Special
SpecialChar
Tag
Delimiter
SpecialComment
Debug
Underline
Ignore
Error
Todo

2014/02/10

PCLの PCD フォーマットにおけるbinary_compressed

Point Cloud Library (PCL)のデータフォーマットであるPCDでは,各ポイントのデータをアスキー文字列で保存する形式 (ascii) と,バイナリで保存する形式 (binary) があって,これはドキュメントに載っているのだけれども,実はもう一つ,バイナリを圧縮した binary_compressed というのがある.でも,これは(なぜか)ドキュメントには載ってない,のでここでちょっとメモ.

PCL から binary_compressed なデータを書き出すのは pcl::PCDWriter::writeBinaryCompressed 関数を使う.ソースコードは この辺

ここでポイントは,

  • データ部分の最初の4バイトは unsigned int の圧縮後のデータサイズ
  • 次の4バイトは unsigned int の圧縮前のデータサイズ
  • 次は LZF 圧縮されたバイナリデータ.ただし,データはポイントごとに並べたのではなくて,フィールドごとに並べたもの.(例えば,XYZXYZXYZ...ではなくて,XXX...YYY...ZZZのように)

LZF 圧縮に関しては,ハッシュテーブルあたりで微妙にオリジナルと違うのだけれども,この辺がどう影響するかは未確認..

2014/02/02

R cheat sheet

データ

combine function c()

>  sample <- c(6, 7, 15, 36, 39, 40, 41, 43, 47, 49)
  [1] 6 7 15 36 39 40 41 43 47 49

: operator

> sample <- 1:10
  [1] 1 2 3 4 5 6 7 8 9 10

seq() function

> sample <- seq(0, 100, by=10)
  [1] 0 10 20 30 40 50 60 70 80 90 100

CSVからインポート

> sample <- read.csv('data.csv', header=TRUE, sep=",")

ディレクトリ

カレントディレクトリを表示
> getwd()
ディレクトリを移動
> setwd(dir)
カレントディレクトリ内のファイル,フォルダを表示
> dir()

関数

ライブラリをロード

> library('qualityTools')
> showClass('gageRR')
> example('gageRR')

スクリプトを実行

> source("script.R")

Vector データ関連

  • length(v): Vector の要素数
  • mean(v) : Vector の平均
  • median(v) : Vector の中央値
  • sd(v): 標本標準偏差 (unbiased)
  • var(v): 標本分散 (unbiased)
  • summary(v): 最小値,第一四分位数,中央値,平均値,第三四分位数,最大値を表示 Minitab との違い (Minitab はwikipediaの説明における Method 1, R のsummary は Method2)
  • fivenum(v): Tukey's five number を vector として返す.

2014/01/26

休暇

年末年始は休暇で日本でした.以下いろいろやったことリスト,など.

  • 大昔にご近所さんだったO家とディナー.(昔過ぎて懐かしさはあんまり..笑)
  • 高校サッカー全国大会,桐光学園-高知商業@三ツ沢競技場を観戦
  • ミラーレス一眼 SONY NEX-5TLを購入
  • 川崎大師に初詣.初詣って,出店がでるんだね.
  • 高校の部活の同期で初蹴り@代々木.
  • 親戚に会いに関西方面へ.約束までに時間があったから,大阪城見学.結構外国人の見学者も多かった.博物館としては,,もうちょっと頑張ってくれても..
  • サカサマのパテマを鑑賞.舞台設定の部分とか,中途半端に感じてしまうところもあったけど,面白かったと思う.CVの一人が昔のバイト先で一緒だったという噂もあるのだけど,誰も確認できなかったので詳細は不明.というか,僕が見た次の回で本人来てたのか.
  • "大泉エッセイ"読了.どこの本屋に行っても平積みでした.
  • "孤独なバッタが群れるとき"読了.バッタ博士の今後にも注目.
その他友達と会ったり,積読がまったく消化できないくらい,遊び呆けてた..