全人類の快適なブラウジングのために

Chrome ウェブストア - CustomBlocker
https://chrome.google.com/webstore/detail/customblocker/elnfhbjabfcepfnaeoehffgmifcfjlha

(^o^)< 今日も動画作るよ!
( ˘⊖˘) 。o(Youtubeにアップしてみんなに見てもらおう!)
Youtube| ┗(☋` )┓三
( ◠‿◠ )☛ 貴様の動画は気に入らん。HTML上から消えてもらう
▂▅▇█▓▒░('ω')░▒▓█▇▅▂うわあああああああああああああああああああああああ

Youtubeは公式にNG機能を提供していないようなので、「おすすめ動画で表示された特定ユーザの動画だけ非表示」を実現するためのChrome拡張を探してきた。「Youtubeの中で特定ユーザを非表示」だと範囲が狭すぎるのか手頃な拡張が見つからなかったので、汎用的にHTMLの要素を非表示にできる拡張を使うのが良さそう。

開発用VM+VM構築自動化=プログラム可能な開発環境?

vagrant+VirtualBoxでできそう。VMwareでも類似のツールはあるかも。思想信条だか宗教的なアレでOSS版がある方が好ましかったのでひとまずこれを調べてみる予定。

開発環境の構築は無人化すべきである

プログラム可能な素材 → 思い通りの物になる魔法の砂、ナノマシン
プログラム可能な開発環境 → 開発環境用VM+VM内の環境構築自動化

VM内に構築することで、まっさらな環境に必要なツールやデータだけの環境ができる。構築自体を自動化しておけば下記のような状況で便利。

  1. コードとして構築の手順を残せる
    1. 仮に開発用PCを物理的に壊してもリポジトリから構築手順を取り出せる
  2. ゴミデータを一気に掃除したい場合の再構築
  3. 複数人での開発など複数の環境構築
  4. 他の開発をする時に構築用のコードを使いまわして別環境を作れる

主な同期はgoldbook/jpshp2db · GitHubの開発の続きをやりたくなったので。下記のような作業は自動化したい

  1. Rubyの実行環境をインストール
  2. 必要なGemのインストール
  3. postgisのインストール
  4. shpデータのDBへのインポート
  5. ホスト側からターミナルへ接続できるよう設定
  6. 共有フォルダ内にソースを置いてホスト側から直接編集できるよう設定

notepad++を64bit環境で使う時の注意

バージョンの数字が違う以外に、VM名の部分が異なる。notepad++が32bitアプリケーションのために呼ばれるコマンドプロンプトも32bit版になっている?

  1. Windows7 64bit版で作業中
  2. notepad++からコマンドプロンプト起動
  3. java -versionでjavaのバージョン確認
  4. 直接コマンドプロンプトを起動
  5. 直接起動したコマンドプロンプトの場合と呼ばれるjavaのバージョンが違う

Notepad++から起動したコマンドプロンプト

java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b11)
Java HotSpot(TM) Client VM (build 23.3-b01, mixed mode, sharing)

直接起動したコマンドプロンプト

java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

Javaの仕様を復讐する

これはCOBOLの分! これはC言語の分!

オーバーライドとオーバーロード
サブクラスでのメソッドの上書きと同名メソッドの複数定義。前者はシグネチャとメソッド名が同一。後者はメソッド名は同一だが、シグネチャは異なる。
ローカルクラス
メソッド内で定義されたクラス。アクセス修飾子を付けられないので

Enumの呼び出し方

例外処理
RuntimeExceptionとそのサブクラス=実行時例外は実行するまで発生するか予見できないので、キャッチすることは必須でない。*1
拡張for文
for文の条件文が若干異なる。「型 変数名 : 配列等」

java.ioの仕様
Readerクラスはabstractなのでインスタンス化不可
オブジェクト直列化と復元
直列化するオブジェクトのクラスがサブクラスの場合、継承元クラスがSerializableを継承していないと復元時に継承元クラスのコンストラクタが呼ばれる。
Scannerクラス
テキスト処理を行うクラス。デフォルトではスペース区切りで文字列を取り出す

*1:故意に「必ずRuntimeExceptionが発生するコード」も作れるが