2016-10-14: systemd-nspawn で portage の binary package (binpkg) ビルドをいい感じにする

この記事は KMC アドベントカレンダー 2016 の 12 日目です。前日は spi8823 の「Unityでパーティクルをドット絵風にするShader」 でした。
… 2 日遅れです。完全に登録してた事わすれとった。すいませんでした。休暇でシドニー放浪してました。

みなさんは Portage もとい Gentoo 使ってますか? 選択肢がたくさんあり、最新のパッケージがわりとすぐ降ってきて、その上何か足りないものがあっても ebuild 書いて転がしとくだけで気楽にインストールできるの便利ですよね。

わたしはサーバーで Gentoo を使うようになってからかれこれ 4〜5 年ほど経過しています。ただ、まあ、問題となるのは emerge にかかる時間と CPU リソースですよね。VPS の上での emerge -uDNav @world は割と億劫だしつらいものになる。

今年の初めくらいからゆっくりとご家庭インフラの式年遷宮を進めるなかで、運用を見直してちゃんとうどん回せるようにしよう、と Binary package 導入をしてみたのでそのはなしです。

binary package

Portage には binary package 機能 が存在します (以後 binpkg)。Gentoo Wiki にある通り、複数のシステムがあるなかで何度もビルドするのは無駄・ハードウェアのスペックの問題でビルドが困難、といった状況をサポートするためにあります。便利ですね。これを使わない手はない。

そして実際 AWS t2.micro インスタンスで手元の base cookbook を完走させるには swap が数 GB 必要…。さらに 2 時間くらいかかる。なので、何かテストするためにインスタンス立ち上げてセットアップしてもやってられるかって感じである (AMI を作れという話はあるけれど)。つらい。

(余談だけれど、 https://github.com/sorah/gentoo-build というのがあって、systemd based Gentoo box を作るためのシェルスクリプト集と、AMI 作成用の packer script があってめちゃくちゃ便利です。)

binpkg の作り方

いくつかあります: quickpkg コマンド、emerge --buildpkg オプション、または FEATURES=buildpkg

quickpkg はシステム上にインストールされたファイルをパッケージにしてくれます。この方法だと config を含めようともクリーンでない場合があるのでオススメできないとのこと (使ったことないから分からん)。

emergeFEATURES あるいは --buildpkg で渡した場合、ビルドディレクトリからパッケージ生成をするのである程度クリーンになります。

作例

これだけ。

sudo emerge --buildpkg dev-libs/boost

すると、 /usr/portage/packages/dev-libs/boost-1.56.0-r1.tbz2 とかが生成されます。メタデータである /usr/portage/packages/Packages には、

BUILD_TIME: 1480786879
CPV: dev-libs/boost-1.56.0-r1
DEFINED_PHASES: compile configure install preinst prepare setup test
DEPEND: virtual/libiconv[abi_x86_64(-)] app-arch/bzip2[abi_x86_64(-)] sys-libs/zlib[abi_x86_64(-)] !app-admin/eselect-boost =dev-util/boost-build-1.56*
EAPI: 5
IUSE: context debug doc icu +nls mpi python static-libs +threads tools python_targets_python2_7 python_targets_python3_4 abi_x86_32 abi_x86_64 abi_x86_x32 abi_mips_n32 abi_mips_n64 abi_mips_o32 abi_ppc_32 abi_ppc_64 abi_s390_32 abi_s390_64
KEYWORDS: alpha amd64 arm ~arm64 hppa ia64 ~mips ppc ppc64 ~s390 ~sh sparc x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~sparc64-solaris ~x86-solaris ~x86-winnt
LICENSE: Boost-1.0
MD5: b3720e94e07a32c7c076cec4c1c0207c
PROVIDES: x86_64: libboost_atomic.so.1.56.0 libboost_chrono.so.1.56.0 libboost_container.so.1.56.0 libboost_date_time.so.1.56.0 libboost_filesystem.so.1.56.0 libboost_graph.so.1.56.0 libboost_iostreams.so.1.56.0 libboost_locale.so.1.56.0 libboost_log.so.1.56.0 libboost_log_setup.so.1.56.0 libboost_math_c99.so.1.56.0 libboost_math_c99f.so.1.56.0 libboost_math_c99l.so.1.56.0 libboost_math_tr1.so.1.56.0 libboost_math_tr1f.so.1.56.0 libboost_math_tr1l.so.1.56.0 libboost_prg_exec_monitor.so.1.56.0 libboost_program_options.so.1.56.0 libboost_random.so.1.56.0 libboost_regex.so.1.56.0 libboost_serialization.so.1.56.0 libboost_signals.so.1.56.0 libboost_system.so.1.56.0 libboost_thread.so.1.56.0 libboost_timer.so.1.56.0 libboost_unit_test_framework.so.1.56.0 libboost_wave.so.1.56.0 libboost_wserialization.so.1.56.0
RDEPEND: virtual/libiconv[abi_x86_64(-)] app-arch/bzip2[abi_x86_64(-)] sys-libs/zlib[abi_x86_64(-)] !app-admin/eselect-boost
REQUIRES: x86_64: ld-linux-x86-64.so.2 libbz2.so.1 libc.so.6 libgcc_s.so.1 libm.so.6 libpthread.so.0 librt.so.1 libstdc++.so.6 libz.so.1
RESTRICT: test
SHA1: bebdceba8188c82399a7d655d97315c79a2a0454
SIZE: 9514605
SLOT: 0/1.56.0
USE: abi_x86_64 amd64 elibc_glibc kernel_linux nls python_targets_python2_7 python_targets_python3_4 threads userland_GNU
MTIME: 1480786898
REPO: gentoo

のように記録される。

あとは /usr/portage/packages を http(s) で見えるところに置いて make.conf の PORTAGE_BINHOST に書いて FEATURES=getbinpkg を指定すれば、emerge 時に Packages ファイルをとりにいって binpkg が利用可能であればそれを利用するようになる。

These are the packages that would be merged, in order:

Calculating dependencies... done!
[binary  N     ] dev-libs/boost-1.56.0-r1:0/1.56.0::gentoo  USE="nls threads -context -debug -doc -icu -mpi -python -static-libs -tools" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_4" 0 KiB

ちなみにわたしは S3 に置いてます。

binpkg の落とし穴

ビルド時の依存や USE フラグが異なると利用されません。

たとえば、 icu USE flag がオンになっていない binpkg がある状態で、USE=icu emerge -av dev-libs/boost とかするとこうなる。

Calculating dependencies... done!
[ebuild  N     ] dev-libs/icu-58.1-r1:0/58.1::gentoo  USE="-debug -doc -examples -static-libs" ABI_X86="(64) -32 (-x32)" 0 KiB
[ebuild  N     ] dev-libs/boost-1.56.0-r1:0/1.56.0::gentoo  USE="icu nls threads -context -debug -doc -mpi -python -static-libs -tools" ABI_X86="(64) -32 (-x32)" PYTHON_TARGETS="python2_7 python3_4" 0 KiB

Total: 2 packages (2 new), Size of downloads: 0 KiB

!!! The following binary packages have been ignored due to non matching USE:

    =dev-libs/boost-1.56.0-r1 -icu

NOTE: The --binpkg-respect-use=n option will prevent emerge
      from ignoring these binary packages if possible.
      Using --binpkg-respect-use=y will silence this warning.

--binpkg-respect-use=n--binpkg-changed-deps=n を指定すれば存在する binpkg を常に利用しようとするけれど、USEフラグは反映されることはない。依存はABI差で苦しんだり可能性があるってくらいかな。オススメはしない。

なお、複数の USE フラグのコンビネーションが想定される場合は FEATURES=binpkg-multi-instance を有効にすると良い。 (make.conf(5) を参照)
最新 1 binpkg だけでなく、同じバージョンに対するビルドが複数保持されるようになります。そのかわりクリーニングは自分でやらなくちゃいけない、という感じ。

binpkg を便利に運用する

binpkg はうまく運用すれば便利ですが、実際の運用はどうするのが良いでしょう? というのがこのポストの本題です。

需要

  1. emerge -uDNav @world をばしばし実行したいので binpkg 最新のがいろいろ常にあってほしい
  2. 依存が変わった・更新されたら binpkg 更新されてほしい

前者に関しては binpkg 実行するホスト用意して定期的に叩けば良い。
後者が問題で、そもそもサーバーやマシンによっては不要なパッケージハあるし、システムにインストールするのは微妙。 --buildpkgonly でも結局 build dependencies は必要になってしまうのでこれもだめ。

そこで systemd-nspawn を使う

systemd-nspawn とは

systemd-nspawn は systemd が提供している、Linux の namespace を活用したコンテナを実行するためのツールです。シンプルでたいへん便利。init プロセスを実行させ、さらに個別の IP を持たせて実際の仮想マシンの用に使えるコンテナを作る事もできれば、単純に chroot では実現できないので namespace を使ってコマンドを実行したい、といういろんな需要に対応できます。

ArchWiki の systemd-nspawn 記事も参考にすると分かりやすいと思う。

これをいい感じに使うと binpkg 運用に便利ができそうです。自力で chroot するより楽なのもあるし。

やってみる (emerge -uDNv world)

./base に stage3 を展開した物、 ./etc-portage/etc/portage 相当の物がある事が前提にしています (/etc/portage と読み替えても良いが、コピーを推奨。理由は後述)

まずは emerge -uDNav @world の場合。

sudo systemd-nspawn \
  --register=no \
  --bind=/usr/portage:/usr/portage \
  --bind-ro=$(pwd)/etc-portage:/etc/portage \
  --directory=./base \
  emerge --buildpkg -uDNv @world

--bind, --bind-ro は Docker でいう -v で、ホストシステムのディレクトリをコンテナ内でマウントできる。
/usr/portage はバイナリパッケージが置かれるのと、そもそも repo もホストシステムのを使えば良いので書き込み可能で --bind している。 /etc/portage は書き込み不要なので --bind-ro 、という具合。

これで ./base の上にある Gentoo システムを更新しつつ binpkg のビルドもされます。まずはこれを定期実行する事で上記需要の (1) は達成できます。既存のシステムと隔離されていることから、cron (あるいは systemd.timer) で実行する事もできるはず。

やってみる (個別にインストール)

./etc-portage/make.conf に適切な PORTAGE_BINHOSTFEATURES=getbinpkg などを設定した上で、単純に下記のように実行すれば OK。

sudo systemd-nspawn \
  --register=no \
  --bind=/usr/portage:/usr/portage \
  --bind-ro=$(pwd)/etc-portage:/etc/portage \
  --directory=./base \
  --ephemeral \
  emerge --buildpkg -v dev-libs/boost

--directory に実際にファイルの変更を反映させない状態でコンテナを起動できる --ephemeral を指定するのが良いです。これでまずビルド用の rootfs は綺麗に保たれます (なお ./base の親ディレクトリは btrfs である必要があります)。

また、ビルド環境の make.confFEATURES=getbinpkg を指定しておく事で、既にある binpkg が利用可能であればそれが利用されるし、なければ更新が走るという挙動になります (依存含めて)。これで (2) もおおむね達成できる。

ビルド環境の /etc/portage の管理

正直ここはまだ固まっていません。少なくとも、

  • USE フラグ (package.use) は依存含めて揃えておく必要がある
  • package.mask, package.unmask, package.accept_keywords も揃えておいた方が良い、あるいはインストール時に個別に指定しておく

というのが必要です。

つまり、想定しうる全部の package.use 等に書かれる指定をビルド環境の /etc/portage には含めておく必要がある。
全システムで一緒ならそれを使い回せばいいですが、実際場合によって USE フラグが異なる事もしばしばあるでしょう。たとえば net-analyzer/zabbix では agent, server, proxy といった具合に、役割毎に必要となるフラグが違います。

わたしは /etc/portage 以下の変更を itamae と sorah/itamae-plugin-resource-portage で書き換えています。itamae レシピを解析をするのはややしんどそうなので、今のところは全サーバーから package.use などを集めてきて手で整理してます。

(
  for x in rin udzuki mio; do
    ssh -T "${x}" 'sh -c "cat /etc/portage/package.use/*"'
  done
) | sort --key 1 | uniq > /tmp/package.use
vim /tmp/package.use
cp /tmp/package.use ./etc-portage/package.use/hoge

なお先に例に上げた net-analyzer/zabbix を USE=server としているサーバーはまだ式年遷宮されてない…。やるとしたら --ephemeral で実行しつつ emerge 実行前に設定を変更するしかない。

こういうケースを含め、自動実行を踏まえて通知がいい感じに欲しいとか、いろいろ欲求がでてきているので、なんか便利なラッパーツールでも書くかぁ、という気持ちになっています。

まとめ

わたしの運用は現状こんな感じになってます。みなさんも Gentoo でたのしくインフラ運用しましょう。

ツールたぶんそのうち作ります (いや、リポジトリはもうあるんだけどまだいい感じになってません)。

なお、このアドベントカレンダーの翌日担当は walkure の「ゼネコン辞めた話」 だそうです。

Published at 2016-10-14 23:59:59 +0900

2016-04-10: Windows Server 2012 R2 と strongSwan + Quagga で IPsec の Site-to-Site VPN 接続を張る

Remote Access 情報無さすぎてウケる。

さくらの VPS for Windows Server がどうやら無印な VPS とローカルネットワークが別物っぽくて、VPN 張らないと連携が取れないので必要に迫られた (バックエンドが Hyper-V ベースだったりするらしいからその関係なんだろうなあ)。

既に quagga の ospfd と strongSwan と VTI でいくつかのネットワークを結んでるので、まあそこにいい感じに乗っける。ハマりどころとしてはとにかくドキュメントが足りていない RRAS と仲良くすることと、RRAS が投げる IKEv2 Proposal の内容を把握すること。

実験は Windows Server 2012 R2 を AWS の t2.micro インスタンスでたててやりました。接続先はさくらの VPS。

... Continue Reading...
Published at 2016-04-10 08:43:20 +0900

2016-02-05: 19 になったので 2015 年まとめ

2/4 にとりあえずまた年を重ねてしまったのでとりあえず去年のまとめをします。干し芋とかは http://amzn.to/sora_h にあります。なんかくれるとよろこびます。

tl;dr

今年は大きなアウトプットがなかったのが悔しいところ。コードとしては残してないけど、成果としては ISUCON 5 準優勝がでかいんじゃなかろうか。あとは仕事が普通に忙しくなって家のマシン環境とかも崩壊しつつあるのが課題となっている気がする。

2016 年もまあ生きる事を抱負とします…。家が物理的にも論理的なのどうにかしたいとは思ってるんだけど。

エンジニア面

仕事

まあ Twitter や sorah.jp、社の開発者ブログにはちらっと書いていたけれど、2015 年 4 月を持って技術部開発基盤グループを離れ、インフラストラクチャー部に異動した。ボスが @mirakui になり、まあ仲良くやってます。

そもそも production を弄ることが増えていたり、仕事の内容がインフラ寄りになりつつあったところ機会が降ってきたというのが経緯。
仕事内容はもちろん production を見るのもそうだけど、今迄通り開発基盤としての仕事も割合が変わったと言え継続している。なので現在は「インフラストラクチャー部 開発基盤エンジニア」と名乗ってる。

まあ、仕事量が増えました。が、開発基盤グループにも @k0kubun とか優秀な人が増えたりしているので、予想よりは増えず 1.5 倍くらいといったところ。責務が増えたぶん、裁量も広がって動きやすいです。裁量があるとどう動いたもんかたまに停止することもあるけれど、去年の評価を見れば改善点はあるがうまく立ち回れている模様。

一方で、仕事が増えたこともあり日々の production および開発環境の構築・運用・改善業がメインになってしまっていた。

今年は何か大きな新しいプロダクトを完成させたい。去年からぼちぼち作ってはいるのだけど、完成させるには至らなかったのだった。

... Continue Reading...
Published at 2016-02-05 08:00:00 +0900

2015-11-02: ISUCON5 で準優勝してきた #isucon

予選に引き続き、チーム白金動物園として rosylilly, mirakuiISUCON 5 の決勝に参加した。

なんと 2 位を獲得した。やったぜ! いや fujiwara 組に負けたのは悔しいけど。

分担は予選とあんま変わってなくて、mirakui がインフラ・分析、rosylilly が実装 (あと博打)、わたしが実装とインフラを良い感じにやっていた。

やったこと

... Continue Reading...
Published at 2015-11-02 08:25:00 +0900

2015-09-28: ISUCON5 予選に参加した (白金動物園) #isucon

A photo posted by Shota Fukumori (@sora_h) on

ISUCON 5 予選に白金動物園として @mirakui, @rosylilly と参加してきました。結果は 15666 点で両日通したランキングの内 top 4 を除いて 5 位 で本戦にはなんとか出場できそうって所。

問題

高負荷に耐えられるSNSコミュニティサイトへようこそ!

まあそのうち公式で解説・講評あがってくると思うから詳しくは書かないけど、ISUxi という SNS Web アプリで、予選にしてはそこそこ MySQL のテーブル数が多くて複雑なもの。 (users, salts, profiles, entries, comments, footprints, relations)

ログイン・ログアウト・プロフィールページ・友達・日記 (友達限定公開あり) の個別ページ、ユーザー日記リスト・足あと、諸々の情報を全部見れる便利なトップページ、などなど。

個人的に問題を読んだ限り倒すべき鍵となりそうなポイントは is_friend?get_user あたり。初期実装ではどちらも愚直に SQL を叩いていて、どちらも N+1 問題らしい感じになっていた。

特にトップページがそれにより重いコードになってて、とりあえずそのへんを潰す事に集中してた。

なおチームの暗黙的了解としていざ仕事で書くとさすがにそれはみたいな感じの奴は避ける、ってのがあった気がする。具体的には過剰なオンメモリとかね。ただアプリケーション仕様を考えて妥当だな、という類のキャッシュはアリ。

やったこと

... Continue Reading...
Published at 2015-09-28 08:15:00 +0900

2015-09-23: リスアニ! ナイト Vol. 05

リスアニ! ナイト、今回初めて知ったけどたまたま近所でデイイベントとして開催されていたので行ってきた。

このイベント、出演者のバラエティがやばくて、中村先生、水島監督という声優やアニメーション監督から、PandaBoY と DJ WILDPARTY、kz (livetune) (敬称略) がいて、さらに北川勝利さん、岩崎琢さん (作曲家) + Lotus Juice とかが来る…? みたいな意味わからないイベント。ゲストボーカルに Yun*chi とみみめめMIMIもいたね。

端的に言ってただただ最高。特に作曲家が本人の曲をフロアにドロップしてくれるのが特に最高。

  • オープニング DJ でススメ☆オトメとカレンダーガールが来て開幕からのエンディング感
    • Sparkling Daydream で指くるくるしたの楽しかったですネ
  • アイカツ! 曲を把握してから自分が DJ した時に何度かかけたりはしてたけど、浴びる事はなかったのでとにかく楽しかった。KIRA☆Power もアイドル活動! も Let's アイカツ! も fashion check もたのしいょ
  • 水島監督、この後 Yunchi 出るのに Lucky Girl かけちゃうっていう
    • っていうか水島監督が COLORFUL BOX かけるの本当にずるい
    • ダイヤモンドハッピーと GO MY WAY!! で圧縮されて吹っ飛ばされたよ
  • PandaBoY さん開幕 KIRA☆Power で上がる
    • 公式リミックスしたからかごちうさ映像が普通に VJ から出てくる
    • ヤーマンアロハ案件ありがとうございます
    • ありがとうたまこラブストーリー
    • DnB最高です
    • おジャ魔女カーニバル!! →シュタゲ→まどマギの流れよかった。
  • 北川先生、自分の曲だけで 30 分くらい完璧にやってるし一個一個に殴られてる感じだった、最高
  • よっぴー、トークしながら DJ しててめっちゃいい
    • あっこれなんだっけガールフレンド(仮)だ
    • 春香さんのアイスキャンディーカバーじゃん
  • 岩崎琢 feat Lotus Juice のライブめっちゃいい
    • 岩崎さんが一部生ボコーダー・演奏してるのアガった。
  • Yun*chi よかった
  • 中村先生の DJ、なんか人生語りはじめてじぐそうくん思い出した。
    • あの夏の最高の思い出! と言いながらアニサマの例のアレで、µ's をドロップしはじめたのはすごい良かったですね
    • おっころあずじゃん LiSA じゃんってなってた
  • ワイパさん M@STERPIECE スタートだ
    • 油断してたらヤバいことになってた
    • その後もあずみんの Kosmos, Cosmos とか流してくれてて良い。あとやよいのもじぴったん…
    • アオくユレている
    • #ありがとうたまこマーケット
    • 締めはキルミーベイベーだった
  • kz さんもだいたい自分の曲で纏めててすごくいい
    • 最後の方でせーのっ! をアカペラからかけはじめて優勝したかと思いきやラストは Star☆Glitter ですごくよかった…ナナシスちゃんとおわなきゃ
  • 2 ANIMEny DJs 、全然知らなかったけどミトさんとかがやってるんですね
    • 作曲者がドロップする Poppin' Bubbles よかったぞ
    • 振り付けコピ勢だ
  • ハッピー☆マテリアルやっぱり良いよね…
  • ふ・れ・ん・ど・し・た・い 盛り上がるよなあ、地味に
    • コールが楽しい気がする。
Published at 2015-09-23 23:59:59 +0900

2015-08-30: 映画 3 本ハシゴ (バケモノの子, アイカツ! ミュージックアワード, 劇場版デート・ア・ライブ)

なんか流れに身を任せてたら 3 本映画見ることになっていた。

13:00 バケモノの子 @ 新宿バルト9

細田守の作品だなあとちらほら思っていた。あと人間界の背景描写がリアルだった。「おおお代々木競技場第一体育館では???」とおもってたら終盤本当に出てきたりした。ていうかチコって諸星すみれだったのか…。

物語自体は割と良かった。(こなみ)

16:00 アイカツ! ミュージックアワード みんなで賞をもらっちゃいまSHOW! @ 新宿バルト9

1 時間ひたすらライブシーンが流れててよかった。最後の方いちごまつりとか映像に表示されてるしむりやり繋げてる感があって「さすがにちょっと…」と思ったけど 3D で大画面でライブシーン最高ですありがとうございましたとにかくかわいい。

マラソンもおかしいだろ…とおもいながら見てましたとにかくかわいい。

スマホおうえんライブだったのでアプリ事前に落としていろいろやってたけど、これカヤックが絡んでるのかぁ、と思いつつ。音声に信号のっける技術はいろいろあった気がするからそのへんつかってるのかなぁ、と思いながらさくっと連動してたけどこれめっちゃバッテリーもっていかれた。普通にサイリウム・ペンライト振ったほうがたのしいきがする。あと普通にクラップしたくなる曲が多いのでクラップくらいしたかったなあ。まわりの空気が…… (幼女先輩は少なかったとはいえ)。

スマホアプリ、その後放置しておくとローカルプッシュであかりちゃんから着信があったりとか、上映中もアプリの方でいろいろ情報が表示されたりで楽しかった。キラキラッターとか。

19:00 劇場版 デート・ア・ライブ 万由里ジャッジメント

3本目!

A photo posted by Shota Fukumori (@sora_h) on

アニメ2期も原作みてないけど大丈夫かな、と思ったけど全然大丈夫だった。デート中イヤモニとかもないしとにかく最高な部分だけが濃縮されてて、まあ仕方なし程度にシリアスっぽいストーリーが載せてある感じで期待よりだいぶ良かった。かわいいは正義。

(だいたいあってる)

もうだいぶ忘れてるのか2期みてないせいなのかは分かんないけど冒頭「あー茅原実里さんだー」と思いながらスタートしてました。

特典のイラストカードがかわいい。


さすがに映画 3 本はつかれるなという感想です。こちらからは以上です。

Published at 2015-08-30 23:30:00 +0900

2015-08-29: はちがつにじゅうくにち

Charlotte の原画展に行くつもりで秋葉原にいったら知り合いが何人かいたのでゲーセンいったりご飯たべたりした。チュウニズム にハマりそう。

(それだけ)

Published at 2015-08-29 23:59:59 +0900

2015-07-22: "攻殻機動隊 新劇場版" を見てきた

@giginet とかといってきた。こんな出遅れでも特典があって地味にうれしかったり。

ネタバレ回避してもしなくても「伏線どこにあったんや…」っていうのが率直の感想。これ ARISE からゆっくり見直したほうがいいんだろうか………… とはいえなんかイノセンスとか GHOST IN THE SHELL よりはストーリーわかりやすい気がした。

Published at 2015-07-22 23:59:59 +0900

2015-07-20: "コードギアス 亡国のアキト 第4章 憎しみの記憶から" を見た

"コードギアス 亡国のアキト 第4章 憎しみの記憶から" を見てきた。

なんというかこれ本当にあと 2 章で完結するんか…って感じだ。どう決着つけるつもりなんだろうなぁ。という程度の感想しかみえない。ジュリアス・キングスレイとスザクはどうしてしまったんや。

(前回 5/8: コードギアス 亡国のアキト 第3章 輝くもの天より堕つ)

Published at 2015-07-20 23:59:59 +0900

2015-07-12: しちがつじゅうににち

MILLION FESTIV@L!! 2

MILLION FESTIV@L!!2 にいってきた。出遅れたら yae さんのメイキング本は売り切れているし (これは自分が悪い) さらに箱の人口密度がやばすぎて知ってるサークルの数冊だけ購入してさっさと退散してしまった。

ミリオン、いろんなオンリーとかでも思うんだけど需要と供給のバランスが崩壊している気がする…育ってくれ…たのむ…………

本屋

いろいろあってそのまま秋葉原に流れたのだけど、@lastcat_ に本屋いくつかつれられた結果、6000 円強を落とすという結果になった。

恋と嘘(2) (講談社コミックス)
ムサヲ
講談社 (2015-06-09)
売り上げランキング: 3,190

1 巻は電子書籍でかってたけど 2 巻はなぜか物理でかってしまった。

恋は光 1 (ヤングジャンプコミックス)
秋 枝
集英社 (2014-06-19)
売り上げランキング: 34,286
恋は光 2 (ヤングジャンプコミックス)
秋 枝
集英社 (2015-01-19)
売り上げランキング: 18,866

秋★枝さんのあたらしいやつ。ヒロインのかっこういい(?)ようなところは秋★枝さんだなぁと思う。とにかく良い。

生徒会のヒメゴト(1) (メテオCOMICS)
みなづき忍
ほるぷ出版
売り上げランキング: 91,372
生徒会のヒメゴト(2) (メテオCOMICS)
みなづき忍
ほるぷ出版
売り上げランキング: 97,259
生徒会のヒメゴト(3) (メテオCOMICS)
みなづき忍
ほるぷ出版
売り上げランキング: 98,500

そういえばホリグレが言及していた気がするしかっとくかみたいな感じでとりあえず 3 冊買ってきた。かわいいものはよい。

今日も2人は仲良しです。 ~くずしろ短編集~ (IDコミックス/REXコミックス)
くずしろ
一迅社 (2015-03-18)
売り上げランキング: 18,702

かわいいものはよい。

美容院

髪を梳いた (記録)

前回は 4/19

Published at 2015-07-12 23:59:59 +0900

2015-07-06: #kosendj #kosenvj を支える技術 (バックエンド編)

2015-06-27 16.42.40

#kosenvj を支える技術(フロント編) のバックエンド編です。 高専DJ部 (kosendj-bu) 御用達の「GJ」とよばれる VJ もどきシステムのバックエンドについて説明したい。

GJ? VJ?

詳細は ↑ の @neo6120 が書いたエントリを見てほしいのだけど、簡単に言うとインターネットにありふれた gif を適当につかって VJ をしようみたいな試み。 ↓ の動画をみるとなんとなくわかるかも。

やばいかんじある #kosendj

A video posted by yuya fujiwara (@asonas) on

現場の様子です #kosendj

A video posted by yuya fujiwara (@asonas) on

... Continue Reading...
Published at 2015-07-06 08:11:29 +0900