highlight

2017年11月11日土曜日

2017年9月20日水曜日

emacs 起動時のウィンドウの位置や大きさを設定する

非ターミナルの GUI 版 emacs を起動する際、毎回定位置に移動させたりサイズを変更するのは面倒なので、起動時に自動的にセットしたい。前回起動時の設定を記憶する elisp も多分探せばあると思うが、emacs は常に定位置で一定サイズなのでよければ、基本機能である customize で事足りる。

2017年6月14日水曜日

昔の話

恐竜好きの息子(四歳)に、私が子供の頃の話をすると、
「パパの小っさい頃は、ティラノサウルスったん?」 と尋ねられた。 ふーむ、数十年前も先史時代も一緒くたに、「昔」と理解しているんだな。どうやって説明しようか。 因みに息子は、恐竜の図鑑に付属していた、ドラえもんが恐竜について説明してくれる DVD を(時々私も一緒に)何回も見ているので、白亜紀に恐竜が絶滅したことは理解している。

2017年3月13日月曜日

空が青い理由

# facebook の投稿(2015-07-29)より再掲

息子(二歳)が訊いてきた。
息「どうして空は青いの?」

これは俺もなんでかなと思って調べた事がある。よしきた任せろ!

2017年3月11日土曜日

Apache Tez を Ubuntu 16.10 にインストールする

Hive on Spark をセットアップしてみようと思ったが、上手くいかなかった。生(MapReduce) Hive で良いかと思ってたが、hive を使っていると相変わらず、hive 2 を使うなら on Spark か Tez を使え。嫌なら Hive 1 にしとけ、と警告が出てくる。じゃあ Hive on Tez を使うか、という事で Tez をインストールする。

まず、Hive on Spark が動かない原因について。 Hive から Spark のタスクを起動しようとするときに、JavaSparkListener クラスが無いという例外が発生する。 Hive のバグレポートにも挙がっているが、現在の Spark では SparkListener クラスを使うようになっていて、JavaSparkListener は Spark 2.0 では deprecated どころか、削除されてしまったらしく、これを使っている現行 Hive 2.1.1 では Spark 2 が使えない。Hive のソースリポジトリの trunk だと、既に SparkListener を使うようになっていたので、checkout してビルドしてみようとも思ったが、metastore のスキーマバージョンが変わったりするし、spark は開発が活発過ぎて、尖った変更がさらっと入ったりする。それがまあ魅力でもあったりする訳だが、この先も互換性が取れなって苦戦するケースがあり得そうだし、ということで、ここでは Tez を使うことにした。Hive on Spark 2 は、Hive 2.2 がリリースされたら、また試してみる事にしよう。

2017年3月8日水曜日

Spark を Ubuntu 16.10 にインストールする

Spark をインストールする。

方針

  • ローカルモードで動かしてみて、Standalone master-slave 方式で動かす。その後 YARN で動かしてみる。
  • YARN で動かすので、Spark History サーバを動かさないと、WebUI での実行履歴が見られない(私が誤解しているかもしれないが)様なので、History サーバは動かす
  • Hive は以前のエントリでセットアップした Metastore サーバを使用する
  • とりあえず spark ユーザは作らず、hadoop ユーザを spark 管理ユーザも代行させる方針。専用ユーザを作ったほうが良さそうなら、改めて設定し直す。

2017年3月2日木曜日

Hive を Ubuntu 16.10 にインストールする

方針

Hadoop はインストール済み、という前提

  • /opt/hive を $HIVE_HOME とする
  • Hive 用ユーザ hive を作成する
  • metastore には、mariadb を利用する
  • Hive ユーザ認証は取り敢えず設定しない。つまり NOSASL

2017年3月1日水曜日

Ubuntu で eclipse をインストールする

Ubuntu には eclipse がパッケージで用意されているが、バージョンを見てみると 3.8.1 だった。Indigo あたりになるのだとすると、流石にちょっと古すぎる。Neon をダウンロードしてインストールしたほうが良さそうだ。

eclipse はホームディレクトリに eclipse ディレクトリを作って、そこに tar xvzf するだけ。あとは、Ubuntu のランチャアイコンを用意すれば、一々端末を起動しなくて済む。

2017年1月27日金曜日

c++ 抽象クラスを関数テンプレート実引数に渡したい

c++ では、抽象クラスを関数テンプレートの実引数に使うことが出来ない事になっている。 これを何とかしてブチ込む必要がある場合には、どうすれば良いのか。

具体例を挙げる。以下のような AbstractName という純粋仮想クラスを、 関数テンプレートとして定義されている tfrun に渡したいような、func0() 実装中の様な場面。