momonga.vim #6に行けません
きっとこういうオフィスでやります。
ドワンゴの新オフィス「歌舞伎座タワー」のリア充感がすごかった - NAVER まとめ
momonga.vim #2 に行っていません
行っていません。
momonga.vim #3 に行ってきました
Q. 既にmomonga.vim #4が終わっているのですが、それでもレポートが成り立つと思っているんですか?
A. お使いの時空間が最新ではありません。最新の時空間へアップデートすることをお勧めいたします。
はじめに
momonga.vim #3に行ってきました。(2ヶ月半ぐらい前に。)
私は普段emacsを使っており、vimは全然わかりません。しかし、最近ごくたまに小指が痛くなることがあったり(emacs小指)、仕事でいろんなLinuxサーバ上で作業するときはviを使ったりするため、ある程度のキーバインドは習得しておきたいということは前々から思っていました。
しかし、今まではvimtutorをやっても「Ctrlキーを押したい」という誘惑に耐え切れず、その度にvimがアアッということになり、私もアアッとなって「:q→emacs -nw」のコンボを決めるというのがお決まりでした。
これを解消しようというのが今回の目的です。
やったこと
ちなみに環境はCentOS 6.4です。
インストール
sudo yum install vim
インストールすらしていないという。
Neobundle
NeoBundleでモジュール入れるの便利すぎる。
NeoBundleFetch 'Shougo/neobundle.vim'
NeoBundle 'Shougo/vimproc'
gips-vim
Emacsのキーバインドを覚えた時は鬼軍曹.elを使っていました。vimでもそのようにしましょう。
NeoBundle 'modsound/gips-vim'
これにより矢印キーを無効にできます。
しかしこれだけではインサートモードで矢印が使えてしまいます。無効にしましょう。
inoremap <Right> <nop>
inoremap <Left> <nop>
inoremap <Up> <nop>
inoremap <Down> <nop>
それからあれこれ設定して、短い.vimrcができました。
dotfiles/.vimrc at master · aomoriringo/dotfiles · GitHub
ここまででとりあえず基本設定ができたので、しばらくあれこれ触りました。
この後はvimrc勉強会のログを参考にvimrcを育てようと思ってたんですが、vim-mathematicaというプラグインを見つけてしまいました。mathematica狂いとしては気になります。
vim-mathematica
vim-mathematicaでは数式に使う特殊記号を特殊記号の見た目のままで表示してくれるという機能があるらしく、これは見た目的にもきもいしやってみたいと思いました。
しかし調べてみるとconcealという機能が必要らしい。concealはvim7.3からの機能です。
$ vim --version
VIM - Vi IMproved 7.2 (2008 Aug 9, compiled Apr 5 2012 10:17:30)
oh...
ということでvimの最新版のビルドをしました。オプションの付け方でビルド自体が失敗したり、gvimが必要だったり、フォントが足りないのでインストールしたり・・・ということを繰り返してるうちにmomonga.vimが終わってました。
最終的にビルドとインストールはできたんですが、結局vim-mathematicaは意図通りには動いてくれず、またうまくいったビルドのオプションとかも全く覚えてないです。つらい。
まとめ
もう2ヶ月以上前だしあまり覚えていない。
momonga.vim #4 に行ってきました
momonga.vim #4に行ってきました。
momonga.vim #3に引き続き2回目の参加です。前回は完全にvimがわからず、sudo yum install vimから始まりました。
前回のおかげでvim自体は入れられましたが、元々使用しているエディタはemacsです。vimを立ち上げても、「emacsだとこうなんだけど、vimだとどうすれば・・・?」というのをいちいち調べるのがめんどくさくなって、結局emacsを起動してしまうわけです。ダメなやつです。
というわけで、今回はそれを解消できるようにvimrc・・・というかそれ以前に今の疑問をちゃんと解消するということをしました。
やったこと
タブ
まずタブがよくわからんので調べました。
Vimの便利な画面分割&タブページと、それを更に便利にする方法 - Qiita
タブと画面分割のコマンドを覚えました。
Unite.vim
そういえばいれてなかったのでいれました。
unite.vim について語る - C++でゲームプログラミング
Unite fileとかUnite tabとか、ああ便利。
キーバインド
今使えているvimのキーバインドはほんとに最低限で、hjkl, x, i, ESC, yy, p, dd, G, :q ぐらいでした。かなりやばさです。
(矢印キーはvimrcで無効にしてある)
以下のコマンドを覚えました。
コマンド | |
Ctrl + u | 半画面分 上へ |
Ctrl + d | 半画面分 下へ |
Ctrl + b | 一画面分 上へ |
Ctrl + f | 一画面分 下へ |
zz | バッファ位置をカーソルが画面の真ん中に位置するようにする |
zt | バッファ位置をカーソルが一番上に位置するようにする |
zb | バッファ位置をカーソルが一番下に位置するようにする |
前述のタブ、画面分割のコマンドは省略してます。
あ、そういえば矩形選択とか・・・ううっ
Pythonの設定
もともとemacsのelもそこまでもりもり設定を書いている方ではないし、とりあえずこのぐらいかな?ということでaomoriringo/number_bot · GitHubの進捗を出していました。
しかし、なにかおかしい。インデント幅が8だし、改行時に毎回カーソルが一番左にくる、これはめんどい。
そこでPython用の設定を書きました。
# ~/.vim/after/ftplugin/python.vim
setlocal shiftwidth=4 softtabstop=4 expandtab
この辺はthincaさんが教えてくれる通りに端末を打つだけの猿になりきっており、ファイルパスの意味とかよくわかってないです。
momonga.vim
momonga.vimの様子についても書いておきましょう。
開始前
momongaさん、thincaさん、rbtnnさんと一緒にお昼ごはんを食べました。thincaさんはラーメン大好きthincaさんと化していました。
(momonga.vim #4 に行ってきた - 永遠に未完成)
効果・効能
やったことを並べるとかなり大したことないのですが、momonga.vimでは周りが全員vimmerです。
Twitterで「これどうすればいいのかな・・・」とか書くと、replyが即座に3つぐらい飛んできて大変便利です。(マサカリではない)
momonga.vimにおけるマサカリ
thincaさんとLindanさんが「進捗どうですか?」という名のマサカリを満面の笑みで投げていました。
終了後
晩御飯を食べつつカラオケに行きました。しかしそこはやはりvimmerです、全員ノートPCを開いて進捗を出し、合間に歌うという状態でした。
— りんだん deprecated (@Linda_pp) 2014, 6月 7
wgetでhttpsに接続すると証明書エラー
ハマったので書いておきます。
環境
- CentOS 6.5
現象
$ wget https://bitbucket.org/ringo/hogehoge/downloads/hoge.tar.gz --2013-12-05 19:27:59-- https://bitbucket.org/ringo/hogehoge/downloads/hoge.tar.gz bitbucket.org をDNSに問いあわせています... 131.103.20.168, 131.103.20.167 bitbucket.org|131.103.20.168|:443 に接続しています... 接続しました。 エラー: bitbucket.org の証明書(発行者: `/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert High Assurance EV CA-1')の検証に失敗しました: 発行された証明書はまだ有効ではありません。 bitbucket.org に安全の確認をしないで接続するには、 `--no-check-certificate` を使ってください。
wgetのURL、上記例ではbitbucketですが、https接続だとどこに接続してもこんなエラーが出る状態。
-
- no-check-certificateを使えばダウンロードは可能ですが、そもそもなぜこれが出るのだろう、というお話です。
解決に向けて
- ca-certificatesパッケージのインストール
2007/04/18-06、wget、証明書の検証エラー - debian-etch に関するメモ(後、lennyへアップグレード)
- crtファイルの有無
githubで証明書エラー(certification error)になったときの対応 : : まめしみ
上記2点を確認しましたが現象は変わらず。頭をひねりながらエラーメッセージを眺めていたところ、変なメッセージが目につきました。
発行された証明書はまだ有効ではありません。
「まだ」有効ではありません・・・?
$ date 2013年 12月 5日 木曜日 18:30:11 JST $ date -s "2014/05/23 10:58" 2014年 5月 23日 金曜日 10:58:00 JST $ wget https://bitbucket.org/ringo/hogehoge/downloads/hoge.tar.gz --2014-05-23 10:58:03-- https://bitbucket.org/ringo/hogehoge/downloads/hoge.tar.gz bitbucket.org をDNSに問いあわせています... 131.103.20.168, 131.103.20.167 bitbucket.org|131.103.20.168|:443 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 302 FOUND (中略) `hoge.tar.gz'に保存中 100%[===============================================>] 1,401,247 573K/s 時間 2.4s 2014-05-23 10:58:07 (573 KB/s) - `hoge.tar.gz' へ保存完了 [1401247/1401247]
時間かよ!盲点すぎた。
結論
エラーメッセージを良く読もう。
2013
そらはさんの記事Looking back at 2013を見て良いなと思い、マネ|パクリ|オマージュしました。
以前2013年第1四半期を振り返るという記事を書いており、四半期ごとに書ければよいと思っていたのですが、私の人生で3ヶ月の期間にあえて言うようなイベントはそうそう起こるものではないらしく、結果この体たらくです。
At the statistics
5 posts
ブログに関してはほとんど書けていなくて、ひどいとしか言い様がない。しかしMathematicaで任意画像の輪郭を数式に変換する記事がはてブの400以上のブックマークを頂きました。これまで自分の記事がこんな事になったことがなく、伸びまくるブクマをみてそわそわしていました。
大学時代にMathematicaを使ってGUIプログラミングしたりTwitterにPostしたりしていたせいで学内で「Mathematicaのヘンな人」と言われてしまったことがありましたが、結局大学を出ても私が一番言及できる言語はC#でもPythonでもなくMathematicaであるらしいです。2014年も機会があればMathematicaネタを投下したいです。
5651 tweets
Twitterをヘビーに使用している方から見るととても少ないかもしれませんね。
Twilogを見ても分かる通り、毎日10~30postあたりで安定しています。また、Twilog Statsによるとつぶやいた日数: 1723日、つぶやかなかった日数: 9日ということで、ほぼ毎日何かしら書いているようです。無理なく続いているとも言えるでしょう。
26 conferences/events
思ったより行っててびっくりした。
半分ぐらいは会社で主催している分散システム本読書会です。タネンバウムのDistributed Systemsを輪読する会で、日本語訳書籍の翻訳がとにかくひどいと話題になりました。そういえばこの本もピアソン桐原のアレで絶版になってしまいましたね。
その他はHaskell系、u-aizu系、Twilio系などに参加していたようです。
Haskell, 2013年の前半ははまってProject Eulerも30~40題ぐらい解いたのですが、最近めっきりやってませんね。
44 books, 366 comics
本については読書メーターで管理しています。
小説は筒井康隆、漫画は押切蓮介にはまった一年です。漫画以外の読了書籍44冊のうち、半分ぐらいが筒井康隆です。活字苦手の私としては結構読めたほうだと思います。
割と厚い本も読めており、例としてはゲーデル、エッシャー、バッハ、マルドゥック・スクランブル、ソドムの百二十日あたりです。
特にゲーデル、エッシャー、バッハをきちんと読み終えることができたのはよかったです。
24 amazon orders
本と他の方へのプレゼントがほとんどです。今年自分のために買った大きな買い物といえばScanSnap iX500ぐらいでしょうか。たまに思いついて自炊しまくっています。疲れます。
87 CDs imported
だいたいTSUTAYAレンタルのせいでかなりの数になっています。
今年のマイベストはdieTunes Label Sampler 01 / YOJI IN THE MIXでした、もうすぐ売り切れると思うのでみなさん買いましょう。
Activity
所属する会社の規模が6人になりました。大変ミニマルな構成で快適にお仕事しています。
問題としては、事務の方を除くと、私と10歳以上年が離れたメンバーしかいないという点です。たまには同世代の人と話したいなあと寂しくなるので、誰かご飯とか誘ってください。
2014?
てきとーにやります。
あと、Vim活を始めるかもしれません。
FAX画像で学ぶMathematicaワンライナー画像処理
FAX Advent Calendar2日目の記事です。
FAXをやっていくということなので、Mathematicaで例の画像をいじり倒して見たいと思います。
画像の読み込み
まずはMathematicaで画像を読み込みます。
img = Import["https://dl.dropboxusercontent.com/u/330501/resource/lingr.com/fax.jpeg"]
URLやローカルのパスを書くことで取り込むことができます。
このImport関数はMathematica ver.9の時点で177個の形式に対応しており、Mathematicaで扱える形に変換してくれます。BMPやJPEGはもちろん、PDF, AVI, LaTeX, MIDI, Maya, 3ds, QuickTimeなどあらゆる方面の拡張子に対応しており、完全に頭がおかしい。
ヒストグラム
まずはさくっとヒストグラムを出しましょう。
ImageHistogram[img]
オプションを与えることで別々に表示したりできます。
ImageHistogram[img, Appearance->"Separated"]
画像の変換
Binarize[img]
二値化です。オプションにより閾値をいじったり、閾値を決定する手法を選択することもできます。
ImageTransformation[img, Sqrt]
与えられた関数(この場合はSqrt)によって、画素の位置を変換します。
自己主張強い感じになりましたね。
f[x_, y_] := With[{r = N@Sqrt[(x - .5)^2 + (y - .5)^2], a = ArcTan[x - .5, y - .5], R = .5}, rn = r*r/R; {rn*Cos[a] + .5, rn*Sin[a] + .5}]; ImageTransformation[img, f[#[[1]], #[[2]]] &]
少しがんばることで魚眼レンズのような効果も作れます。
ImagePerspectiveTransformation[img, {{0.9, 0.1, 0}, {0.3, 0.9, -0.1}, {0, 0.1, 1}}]
アフィン変換とか言うやつです。
フィルタ
数が多すぎるので、適当にいくつか紹介。
Erosion(収縮処理)
Erosion[img, 2]
Dilation(膨張処理)
Dilation[img, 2]
木炭デッサン効果
ImageEffect[img, "Charcoal"]
ポスタリゼーション
ImageEffect[img, {"Posterization", 5}]
その他にもClosing, Opening, ガウシアンフィルタ、中央値フィルタ、油絵効果、ソラリゼーション・・・などなどとにかくいっぱいあります。
こんな感じで画像処理を簡単に書けるわけです。
特徴抽出
EdgeDetect[img]
エッジ抽出です。抽出手法はデフォルトだとCannyが使用され、Sobel, ShenCastanを選択することもできます。
Show[img, Graphics[{Thick, Yellow, Line/@ImageLines[EdgeDetect[img]]}]]
ImageLinesは線分を抽出する関数です。上記コードは、エッジ抽出した結果から線分をもとめ、それを元々の画像と重ねあわせて描画します。
パラメータを変えることにより、線分がとれすぎたりとれなさすぎたりします。
この他に交差点抽出、特徴点抽出などの関数があります。
文字認識
TextRecognize[img, Language="Japanese"]
画像から文字を抽出します。ファックス画像からは残念ながら抽出できませんでした。もともと英語圏のソフトですから、縦書きには弱いようです。
横書きの日本語が含まれた画像でやってみましょう。
イラスト部分からヘンなものまで読み取ってしまっていますが、「進捗どうですか」が取得できていることがわかりますね。
おまけ: キャプチャ
CurrentImage[]
CurrentImageと書くだけでWebカメラの画像を取り込むことができます。
CurrentImageで取得した画像はこれまでの画像と同じように扱えるため、画像処理をかけていくことができます。
EdgeDetect[CurrentImage[]]
エッジ抽出された私です。
これをDynamicに渡すと画像ストリーム取り込みとなり、Webカメラの画像をリアルタイムで表示します。
Dynamic[CurrentImage[]]
実行すると、Mathematica上でWebカメラの映像が見えるようになります。楽です。