no_picture

Docker Hub を少し試してきた

Docker 初心者です。 難しいことはよくわかりません。 いまさら Docker Hub で遊んだ。 ちなみに #すごい広島 60 で遊んでたことらしいです。 今回は何をしたのか docker さえインストールされていれば、以下のコマンドを実行できます。 $ docker run eiel/banner ###### ####### ##### # # ####### ###### # # # # # # # # # # # # # # # # # # # # # # # # # # ### ##### ###### # # # # # # # # # # # # # # # # # # # # # ###### ####### ##### # # ####### # # $ docker run -e BANNER_ENV="happy hacking" eiel/banner # # # ###### ###### # # # # # # # # # # # # # # # # # # # # # # ####### # # ###### ###### # # # ####### # # # # # # # # # # # # # # # # # # # # ##### # # ### # # ##### # # # # # # # # # ## # # # # # # # # # # # # # # # ####### # # # ### # # # # # #### # # ####### # # # # # # # # # # # # # # # # # # # ## # # # # # # ##### # # ### # # ##### BANNER_ENV を設定すると出力を変えられます。 これの何が嬉しいかというと、banner コマンドの実行環境が簡単に用意できることだと思います。 redmine を実行するのに、 GitLab を実行するのに、Wordpressを実行するのに docker run でリポジトリ名を指定するだけでできるとしたらとても嬉しいと思います。 (実際にはDbのデータどうすんの?とかある気がするけど、どうするのがいいのかよく知らないけど) 定時実行するスクリプトが Docker さえインストールしていれば実行できたりするわけですね。 Docke Hub はどこで使ってるのか eiel/banner というイメージが Docker Hub にあいてあるので、docker run eiel/banner を実行すると、まだローカルにイメージがなければ取得して実行できます。 それだけ。 このイメージはここにあります イメージを作成するのに Dockerfile をつかっており、コードは GitHub に up してあります。 FROM eiel/gentoo-sample:banner MAINTAINER Tomohiko Himura <eiel.hal@gmail.com> ENV BANNER_ENV docker CMD banner $BANNER_ENV このファイルをカレントディレクトリに置いて docker build -t banner .

no_picture

さくらVPSでGentoo をインストールした時のはまったことのメモ

つかってた VPS がサービス終了してしまったので、さくら VPS に移行してみた。 折角なので OS は Gentoo Linux を選択した。 前の VPS では Debian をつかってた。 なんか、ウェブサーバの応答がよくなった気がする。 一応はまったことを書いておくけど大したことは書いていない。 iso アップロードして、普通にインストールした。 デバイス eth0 がみつからない なんか enp0s3 として認識してた。 おかげで、ネットワークつながらなくて苦労した。 参考 さくらのVPS(2G)でのハマリポイント(enp0s3) - /dev/curiosity ディスク が vda だった 「ディスクがねぇぇええ」って、デフォのCentOS起動してよくみたら sda じゃなくて vda だった。 GPT に挑戦したら GRUB が入らなかった 最近Linuxインストールしてなかった。GPTとやらにしてみることにした。 なにも考えずにデフォのCentOSのパーティションをそのまま利用して構築していた。 さあ、GRUBをインスールするぞ。というところで気づいたのだけど、BIOS boot partitionとやらなく、GRUBのインストールに失敗するので、対処を迫られた。 すでにカーネル配置済みの /boot の中身を一旦退避して、パーティションを書き換えてごまかした。 ブートCD がある方法で、ディスクブートする方法がわからない 15秒放置するだけでした。 virtio いれわすれてディスクがみつけられない とりあえず、 genkernel したからなにもいらないかとおもったけどダメだったらしい。 $ genkernel --virtio all とか genkernel にいろいろオプションがあるのを学んだ。 まとめ Gentoo力上がってるので、あんまりハマってない。 最初のネットワークが繋がらないで挫折しそうだったのは秘密である。

no_picture

Funtoo から Gentoo に戻してみた

この記事は すごい広島 #008 に参加中に書きました。 この間、我が家の Funtoo を Gentoo に戻してみた。 戻した理由 OpenRC のバージョン違いで munin が新しいのにできなかったから。 Gentooからの乖離が大きくなってきてるみたいですね。 #知らんけど 折角なので、戻す際に新規インストールせずに、そのまま移行できないか試みてみた。バックアップとるのがめんどくさかったとかでは決してない。たぶん。 Gentoo に関しては勉強不足なので、ここに書いてあることは鵜呑みにせず参考にするぐらいにしてください。 そういうこともできるだろうということでやってみたかった。 手順を考える 最初どうすればいいのかなぁ。考えてみた結果。 以下のとおりになりました。 portage tree を Gentoo のものに変える emerge -e @system を実行する meerge -e @world を実行する 結論からいうと概ね予定通りできましたが、それなりにはトラブルがありました。 portage tree を Gentoo のものに変える 一番苦戦したところです。 Funtoo は git を利用して portage tree を更新するので、参照先の Gentoo の rsync のものするだけでは emerge --sync がエラーになってしまいました。具体的には /etc/make.conf の SYNC です。 Gentoo の portage tree も Git を使う という手もあるのですが、これ最近 コミットされてないように見えます。

no_picture

Ruby の とあるクラスの実装がどこにあるかわからない時の方法 - コードリーディング

広島Ruby勉強会 のネタ探しをしていて、「実装見てなにか面白いネタないかなー。」 って時に使ったコマンドを紹介。 例は Method クラスの実装を探す。 まずは git でソースコードをとってきている場合。 $ git grep 'rb_define_class("Method"' proc.c: rb_cMethod = rb_define_class("Method", rb_cObject); git grep を使います。git grep はサクサクなのでメインの探索方法です。 Emacs上から使うとジャンプも楽チン。 「git リポジトリじゃねーよ」って時は ag を使います。 $ ag 'rb_define_class\("Method"' proc.c 2331: rb_cMethod = rb_define_class("Method", rb_cObject); こちらは行番号とかでます。 ( のエスケープがいります。 ag というのは the silver searcher のことです。こちらも emacs から使う helm-ag というのがあるのでオススメします。 使える正規表現も違うような気がするので凝ったことがしたいならこちらを。 rb_define_class というのは Ruby の C API で クラスオブジェクトを作成します。このあたりに メソッドをクラスに紐づける処理なんかがあったりします。 それでは Happy な ソースコードリーディングを。

no_picture

Gentoo Prefix で python3.2 がないって言われてインストールできない

いつのまにやら Gentoo Prefix が python 3.2 を入れようとするのだけど、 python 3.2 の ebuild はありません。 emerge -uDNt world とかで更新しようとしたとき python 関連のものがあると実行できない。以下のようなメッセージがでます。 emerge: there are no ebuilds to satisfy "dev-lang/python:3.2". python 3.3 はいってるし、別にいらないよね。 ということで USE フラグに -python_targets_python3_2 を追加したらうまくいった。 TARGET_PYTHONを調整したくなるのですが、これは 上記の USE フラグに展開される。