てくてくテック☆

千里の道も一歩から。テック(Tech)の道をてくてく歩く。

Sublime Text 2 で日本語入力の変換候補を [Tab] 選択できるようにする

Sublime Text 2 のデフォルトでは、
日本語入力で表示された変換候補を [Tab] で選択できません。。
(矢印キーを使えば、選択できます

これを解消するための手順がこちらです↓

  1. [Sublime Text 2] > [Preferences] > [Key Bindings - Default] を選択する
  2. 以下の部分をコメントアウトして、変更した内容を保存する
    { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": true} },
    { "keys": ["tab"], "command": "insert_best_completion", "args": {"default": "\t", "exact": false},
        "context":
        [
            { "key": "setting.tab_completion", "operator": "equal", "operand": true }
        ]
    },

これですぐに設定が反映されて、
[Tab] で日本語入力の変換候補が選択できるようになります。

参考

Windows版 Sublime Text 2 でインラインでの日本語入力を可能にする

なぜか Windows 版の Sublime Text 2 では、
日本語入力すると、画面左上に入力窓?が表示され、
確定すると反映されるという謎の動きをします。
(エディタ上でなぜか入力できない。。

これの解消方法を見つけたのでメモとして残しておきます。

インラインでの日本語入力を可能にする

手順は以下のとおり。

  1. [Ctrl] + [Shift] + [P] で Command Pallet を開く
  2. 「install」と入力し、「Package Control: Install Packages」を選択する
  3. プラグインのリストの中から、「IME Support」を検索する
  4. [Enter] を押下すると、選択したパッケージがインストールされる

無事にインラインで日本語入力できるようになりました。
めでたしめでたし。

参考

Sublime Text 2 に Package Control をインストールする

パッケージ(Sublime Text 2 の拡張機能)の導入を
簡単にしてくれる「Package Control」をインストール方法です。

  1. メニューの [View] > [Show Console] をクリックする
  2. 表示されたコンソールボックスの下の枠に、以下をコピー&ペーストする

    import urllib2,os;pf='Package Control.sublime-package';ipp=sublime.installed_packages_path();os.makedirs(ipp) if not os.path.exists(ipp) else None;open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read())

  3. [Enter] を押下して、Sublime Text 2 を再起動する
  4. メニューの [Sublime Text 2] > [Preferences] を表示する
  5. サブメニュー内に [Package Control] があれば OK

参考

Sublime Text 2 で Markdown 記法を使う

今流行?の Markdown 記法を
Sublime Text 2 で使えるようにするための手順です。

パッケージの導入が簡単になる、
Package Control のインストール方法はこちら

Markdown 関連のパッケージをインストールする

Sublime Text 2 で快適に Markdown を使うために、
全部で 3 つのパッケージをインストールします。

  • OmniMarkupPreviewer
    • Markdown をプレビューする
  • Monokai Extended
    • Markdown をシンタックスハイライトする
  • Markdown Extended
    • Markdown 内のコードをシンタックスハイライトする

手順は以下のとおり。

  1. [Command] + [Shift] + [P] で Command Pallet を開く
    • Windows 版では [Ctrl] + [Shift] + [P] に読み替え
  2. 「install」と入力し、「Package Control: Install Packages」を選択する
  3. プラグインのリストの中から、前述の 3 つのパッケージをそれぞれ検索する
  4. [Enter] を押下すると、選択したパッケージがインストールされる

パッケージの設定

Markdown Extended を有効化します。

  1. 拡張子が md のファイルを作成し、Sublime Text 2 で開く
  2. メニューの [View] > [Syntax] > [Open all with current extension as...] > [Markdown Extended] を選択する

次にカラースキーマを Monokai Extended に変更します。

  1. メニューの [Sublime Text 2] > [Preferences] > [Color Schema] > [Monokai Extended] を表示する
    • Windows 版では、メニューの [Preferences] > [Color Schema] > [Monokai Extended] に読み替え
  2. 「Monokai Extended Bright」または「Monokai Extended」のどちらかを選択する

OmuniMarkupPreviewer の機能

  • ブラウザで(リアルタイム)プレビュー
    • [Command] + [Option] + [O]
      • Windows 版では [Ctrl] + [Alt] + [O] に読み替え
  • Markdown ファイルを html ファイルとしてエクスポート
    • [Command] + [Option] + [X]
      • Windows 版では [Ctrl] + [Alt] + [X] に読み替え
  • Markdown ファイルを html ファイルとしてコピーする
    • [Command] + [Option] + [C]
      • Windows 版では [Ctrl] + [Alt] + [C] に読み替え

参考

「Java ルールブック ~ 読みやすく効率的なコードの原則」を読んで

Java のコーディング規約的なものを扱っていて、
かつ、初心者でもとっつきやすい本はないか、ということで。

Java ルールブック ~ 読みやすく効率的なコードの原則」という本を
読んでみました。

Javaルールブック ?読みやすく効率的なコードの原則

Javaルールブック ?読みやすく効率的なコードの原則

全体的な印象

  • 短い時間でさらっと読める
    • (知ってる内容が結構あったのも大きいかもだけど)通勤 1 往復程度で読了
  • ルールに対する違反例と修正例がサンプルコードとして載っていて分かりやすい
    • 対比できるのがいい!
  • 全体的に文字もじしすぎてなくて初心者でも手に取りやすい
    • 特にサンプルコードの文字が大きめで説明に埋もれてしまわない
    • 全体的に見やすい!
  • 範囲が多岐に渡る(文法やクラス継承、マルチスレッドなど)
    • 一通りやったことがある人向け?

細かいところとしては「いいね!」って素直に思える部分と
初版が 2011 年でちょっと古いせいもあるのか、
「モヤッと」疑心暗鬼な部分があったので、
とりあえず、メモしておきます。
( 「モヤッと」については実際のところどうなのか、細かく調査していきたい。。

いいね! なところ

  • 符号の向きは左向き("<"、"<=")にする
    • 意識してやったことはないですが、こういうルールは個人的に好きです
  • java.lang パッケージはインポートしない
    • 正直に言うと、これ知りませんでした。。
    • なんで java.lang だけ特別なのか、気になりますが。
  • 戻り値が配列や Collection の場合、null を返さない
    • 意識が甘いときがあったかも、と不安になったので戒めとして。
  • 文字列の連結には StringBuilde クラスを利用する
    • これ、(確か)「パーフェクト Java」でも見た気が。。
  • システム依存記号(\n、\r など)は使用しない
    • 必要に迫られなかったとはいえ、目から鱗
    • System.getProperty() 。。覚えておこう。
  • 誤差なく計算したいときは、BigDecimal クラスを使う
    • 金額計算とか使ってた理由が今さら分かった。。
  • 補助文字を使用する場合は、String#length() と String#charAt() を使わない
    • 必要に迫られなかったとはいえ、補助文字は扱ったことあるので覚書として。
  • Cloneable#clone() を使わず、自前のコピーメソッドを利用する
    • シャローコピーとディープコピーのお話
  • キャスト処理は instanceof で囲む
    • 囲むのを徹底して意識できてなかったと思う。。これも戒め
  • 車輪の再発明をしない
    • ルールじゃなくて、(コラム的な)MEMO から抜粋
  • ロギングライブラリを使おう
    • これも MEMO から抜粋
    • つい標準入出力使っちゃうところがあるので戒め。。
  • wait()、notify()、notifyAll() は syncronized ブロックの中で利用する
    • 苦手なマルチスレッド。。自分への覚書です。
  • wait() メソッドの後で前提条件を再確認する
    • wait() する条件は if 文じゃなく、while 文にする
  • 処理の待ち合わせにはポーリングループを利用せずに CountDownLatch などの既存の仕組みを利用する
    • CountDownLatch を知らなかったので、備忘録として残しときます
  • マルチスレッド環境下では ConcurrentHashMap や CopyOnWriteArrayList を使う
    • これも使ったことが(おそらく)ないので、備忘録として残しときます

モヤッと、なところ

  • インタフェース名と実装クラス名の対応関係を明確にする
    • XXX インタフェースの実装クラスは XXXImpl にする、というやつ
    • インタフェースと実装クラスが 1 対 1 じゃない場合はどうなの?と思ったので。。
  • 条件分岐では、「!」を使わない
    • わりと良く使ってました。。一般的にはどうなのか、ちょっと知りたい。
  • Date、Calendar の代わりに long の利用を検討する
    • もやっと、というよりは Java SE 8 とあわせて見直したい
  • 時間の単位変換には TimeUnit を使う
    • これも 1 つ上と同様に Java SE 8 とあわせて見直したい
  • static インポートは利用するかどうかを統一する
    • 過去に統一できてなかった思い出が。。
    • もやっと、というよりはどちらが一般的なのか気になる。
  • Java 2 以降のコレクションクラスを利用する
    • Vector とか使ってないけど、なぜダメなのかを深堀したい
  • wait() メソッドの後で前提条件を再確認する
    • 「スプリアスウェイクアップ」をさらっと調べてみたけど、有用な情報が得られなかった。。