はてブを再開するがTwitterはあいかわらず見ない

Twitterとはてブを見ない - assoutの日記

はてブTwitterを絶ってから1ヶ月経ったが、はてブのみ再開する。

もともと空いた時間(主に電車)で本読んだり、TODO整理したり、より生産的なことができると考えていた。 最初の一週間は読む本が目に見えて増えた。流し読みだが、もともと月1,2冊ペースが週4,5冊は読んでいた。しかし、徐々にそのペースも落ちていき今ではほぼ元のペースに戻っている。 電車では寝るか漫画読むなど以前より怠惰な過ごし方をしている。

水は低きに流れる。どうせ楽な道を選ぶなら、まだはてブ見てた方が良いと考えた。

Twitterは一瞬再開しかけたが無意味すぎてそっと閉じた。

Twitterとはてブを見ない

思うところあり、iPhoneからTwitterはてブクライアントを削除しようと思う。 何かにつけ見てしまうことにより、失うことが多いと感じたからである。 情報が入ってこなくなるが、大きな問題はないということはわかっている。 空いた時間で、自分と周りについて見つめ直そうと思う。また、Kindleで本を読んだりする時間も増えれば良いが。 いつまで続くことやらだが、とりあえず2週間ほど様子を見る。

Vim タブ派からウィンドウ派に移行する方法

はじめに

vim複数ファイルを編集するには、

  • ウィンドウ機能
  • タブ機能

のどちらか、あるいは両方を使用する方法がある。 私は、もともとタブ機能派だったがウィンドウ機能派に宗旨替えをした。 その時に行った設定やプラグインについて備忘メモとして残す。

キーマッピング

before

    nnoremap <C-h> gT : 前のタブへ
    nnoremap <C-l> gt : 次のタブへ

after

    nnoremap <C-h> <C-w>h : 左のウィンドウへ
    nnoremap <C-j> <C-w>j : 下のウィンドウへ
    nnoremap <C-k> <C-w>k : 上のウィンドウへ
    nnoremap <C-l> <C-w>l : 右のウィンドウへ

所感

ウィンドウにすることで複数ファイルを比較しながら編集でき見通しが良くなる

プラグイン

マルチウィンドウを使うと編集中にウィンドウ最大化・復元を頻繁にしたくなることがある。 良いプラグインがないかいろいろあさった結果、↓が一番使い勝手が良かった。

    NeoBundle 'szw/vim-maximizer' " windowの最大化・復元

以下の設定で、<C-t>で最大化・復元をトグルできる。

    let g:maximizer_default_mapping_key = '<C-t>'

まとめ

とりあえずウィンドウ使いこなすと良い

英語学習メモ

齢28にしてゼロから英語を学習しようと思い立ったため、学習方針・目的を整理しておく。 至極飽きっぽい性格につき、戦略無く挑んだところで惨敗となるのは目に見えているため。

目的

まず目的。次の通りごく単純な動機による。

英語で書かれた技術情報にアクセスしたい

仕事がら(SE)、英語で書かれた技術情報を読むことが多い。英語での一次情報は、日本語化された情報に比べ、量・鮮度ともに圧倒的に優位性がある。 今は、翻訳サイトを頼りつつニュアンスで読んでるが、そもそも翻訳サイトでは限界があることと、時間的なコストも大きい。

ソフトウェア開発にてスムーズに英語を用いたい

コードコメント、コミットコメント、クラス名・メソッド名の名前付けなど、あらゆる場面で英語の知識が必要となる。

※以下は副次的な目的
TOEICでなんとなく泊を付けたい

現在の勤め先では、資格・TOEICについては、参考程度に評価される程度。また、転職市場でも大きな武器とはならないと思われる。(スコア900以上など飛び抜けていれば別だろうが) ただ、何が起こるかわからないポイズンな世の中、ある程度汎用的なスキルを保持しておきたい。TOEICはその指標としてまあ、妥当かなと。

日本語文章のスキルアップ

英語のライティングを学ぶと日本語での文章作成スキルにも良い影響を与えると聞く。文法をロジカルに意識する必要があるからかな。

前提

現時点の自分の英語スキルはゼロ。中学1年レベルの内容をなんとなく覚えてる程度。なんでこんなことになってしまったのかは置いといて、ここから現実的に上記目的を達するには何が必要か。

まず、一般的に英語の習得には3000時間程度必要と聞く(英語+学習時間とかでググるといくつも出てくる)。 現実的に一日に学習に使える時間は多くて1hくらい。(仕事へ影響が出なくその他の学習等も考えて)。 すると、一日1h計算で約8年かかる。。流石に気が遠くなるので、まず3000時間は度外視し、前述した目的に特化する。

学習についての学習

巷に溢れる英語学習についての書籍、サイトをまずパラパラっと読んで見る。 (自分はこれをやってる時が一番楽しい <- 結局ものにならない人の類型) Kindle多し。

パラパラっとみたところ、「Mr. Evineの中学英文法を〜」が最も自分にあってそう。5文型から始まっているのが入りやすかった。

とりあえず

とりあえず「Mr.Evineの中学英文法を〜」が30日でできる触れ込みのため、予定通り終わらせる。 (当エントリーの初回ポストが2014/12/30)

VimとVrapperとVichromeでキーマッピングを揃えたい

VimとVrapperとVichromeという素晴らしいソフトがある。

  • Vrapper -> Eclipse上でVimの挙動をシミュレートする
  • Vichrome -> Chrome上でVimの挙動をシミュレートする

今回、上記ソフト同士でなるべくキーマッピングを統一し、より快適に使えるようにしたい方法を検討する。
各ソフトの詳細な説明はしない。(よいページが既にたくさんある)

キーマッピングの方針

  1. なるべくvimのデフォルトから離れたくない
    -> これが一番重要かも。(個人的な趣味)
  2. <大文字キー>系,<C-?>系,<Space>hoge系である程度統一したい
    -> 何をいってるかというと、(H,L,J,K)と(<C-h>,<C-l>,<C-j>,<C-k>)と(<Space>h,<Space>l,<Space>j,<Space>k>)などの単位で似たようなオペレーションとしたい。
  3. eclipsechromeのタブ移動は頻繁かつ連続で実行するのでなどの2ストロークはしたくない
    (そうすると<C-hoge>とかくらいしか無さそう)
  4. なるべくeclipse,chromeの有用なキーを潰したくない
  5. vimでは<C-h>,<C-l>,<C-j>,<C-k>を縦横スクロールに使いたい。
    -> たぶんここが一番ネック。(vrapper,vichromeでは別のマッピングに使いたい。)
    -> vrapper,vichromeでは横スクロールがほとんど必要ないが、vimでは結構頻繁にやるんだよなあ。。。(俺だけ?)

結局どれかとどれかはトレードオフなはずですべてを満足は不可能。 (どれとどれが競合するかが整理できてないので、時間掛かっているのかな。。。)
あと、vimのタブと、eclipse,chromeのタブは概念が若干違いそう。(実践Vimにあるとおり、vimのタブはワークスペースに近いので、vimのバッファ or ウィンドウと、eclipse,chromeのタブを同一のキーバインドで扱いたい)

決定事項

  • <C-o> -> 戻る, <C-i> -> 進む
    -> これはvimで頻繁に使うので、eclipse,chromeでも同様のキーマッピングとする

  • H -> 最上にカーソル移動, L -> 最下にカーソル移動
    -> これ、正直vimでもあまり使わないけど、デフォルトから替えたくないので、このままとする。   chromeの場合だけ、とする。

最終的なまとめ

案1

  • コマンド -> (vim, vrapper, vichrome) h -> 左タブ, 左タブ, 左タブ S-h -> 画面最上, 画面最上, NOP C-h -> 左スクロール, 左タブ, 左タブ C-o -> 戻る, 戻る

  • まとめ

  • <C-?>系が統一されない

案2 - vimでの<C-hoge>でのスクロールをあきらめた場合

たぶん一番シンプルに統一できる。

Vimでset numberしているとき:printコマンドの結果にも行番号が表示されてしまう件

問題

タイトルのとおり。 これググっても特に困ってる人が出てこないんだけど、自分は軽く困った(ている)のでメモしておく。

set nonumber
:print
-> 結果に行番号が表示されない

しかーし、

set number
:print
-> 結果に行番号も表示されてしまう!

これの何が困るのかというと:printコマンドの結果をレジスタに格納して使いたいことが(たまーに)あるのである。 そのときは、行番号は余計なので除きたい。 しかし、自分は普段は、行番号を表示させておきたいので、vimrcでset numberをしているのである。

結論

ダメでした。一時的にset nonumberするしかなさそう。(:printのときだけ直前で:set nonumberを自動でかますことはできそう?)
以下は作業記録。

調査

まずは:helpである。

:help :print

:[range]p[rint] [flags] とでてきてflagsが怪しいので見てみると、#をつけると行番号が表示されるとある。
しかし、set numberのときは、このフラグに依らず、必ず行番号が出力されてしまうっぽい。(set nonumberのときは確かに上記フラグで切り替えられた。)

まとめ

そういうものなんでしょうね。

読書メモ 珠玉のプログラミング

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造

珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造

CleanCodeなど今までの技術書とは毛色が異なり、特定の言語に限らない、アルゴリズムとデータ構造について論じている。 第1部から第3部の全15のコラムに分かれている。

  • 第1部 コラム1~5 プログラミングの基礎である、問題定義、アルゴリズム、データ構造、プログラムの検証とテスト
  • 第2部 効率に関するコラム
  • 第3部 今までのテクニックをソート、探索、文字列などの重要な問題に応用

コラム1 真珠貝を開いて

重複のない単純なデータのソートを、ビット列というデータ構造を用いて実現する。

例題

入力ファイルには、重複のない7桁の正の整数が記録されている。
入力された整数を昇順にソートした一覧を出力したい。
ただし、メモリには1MB程度の余裕しかない。

ビット列で実現!

原則

正しい問題
問題定義をきちんとする。アルゴリズム、データ構造を考える上で、問題の前提条件などきちんと整理する。
ビット列というデータ構造

ビット列は、「限られた範囲内にあり、密で、重複が無く、付随する情報もないようなデータのセット」を表すのに有効です。

例えば、20より小さい整数を、20個のビット列で表すことができる(整数nが存在する場合、ビット列のn番目のフラグを立てる)

コラム2 「ああ(そうか)!」アルゴリズム

ひらめきが大事。

例題

例題1
最大40億個の32ビット整数がでたらめな順に入っているファイルから、このファイルに含まれていない整数を探し出す。
例題2
要素がn個の配列を左方向にi要素分回転させる。
例題3
英語の辞書が与えられたときに、すべてのアナグラムを見つける。

2分探索、(まとめるための)ソート、印付け(値を同値クラスに振り分ける)

原則

ソート
ソートの用途は、整列された出力を作るだけではない。
2分探索
ソートされたデータの探索方法として非常に有効。あらゆる場面で使われる。
印(シグネチャ、署名)
ある値を決まったルールでグループにわけ、印をつけておく。その印で、ソートするなどして効率的に処理できる。
ここでは、アナグラムの検索を実現している。