てくてくテック☆

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

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() メソッドの後で前提条件を再確認する
    • 「スプリアスウェイクアップ」をさらっと調べてみたけど、有用な情報が得られなかった。。

.bash_profile と .bashrc の違い

.bash_profile の特徴

  • 設定用のシェルスクリプト
  • ユーザのホームディレクトリ(~/)にある
  • ログイン時に読み込まれる

.bashrc の特徴

  • 設定用のシェルスクリプト
  • ユーザのホームディレクトリ(~/)にある
  • ログイン時に .bash_profile から読み込まれる
  • 他のシェルが起動した場合にも読み込まれる
  • エイリアスやユーザ定義関数、シェルの起動の度に実行するコマンドなどを登録する

Linuxでカレントディレクトリのコマンドを実行する方法

AWSAmazon Linux上にJava
elasticsearchをインストールしてみました。


↓インストール手順はこちらを参考

ソフトウェア/Javaの開発環境をCentOSにインストールする方法 - Linuxと過ごす
CentOS に elasticsearch を入れてみた - akishin999の日記


で、Windowsで起動してたときみたいに
ES_HOME(elasticsearchのホームディレクトリ)/bin に移動して、

elasticsearch

ってコマンド打ってみたら、
「elasticsearch: command not found」って出た。。

lsコマンドで確認すると確かにそこにいるのに!!


なんでだー!?

って思って、いろいろ調べたら原因が判明。

Linuxではカレントディレクトリのコマンドをそのままたたいても、
認識しない?んだとか。。

カレントディレクトリのコマンドを実行したい場合は

./elasticsearch

ってコマンドの前に「./」が必要らしい。。

ちなみに、elasticsearchの場合、上のようにやると
バックグラウンドで動いちゃう


Windowsと同じように、ターミナル上で動かしたいときは
さらに追加でオプションを指定しないといけないという。。

こんな感じ↓

./elasticsearch -f


超初歩的かもですが、
普通のサーバ構築をしたこともない子(Linuxド素人)が
AWSに手を出すとこうなるのねー。。