RSS

日々のメモ書き

Debian Developerが綴るメモ

名古屋フンタ会 2017#3 開催しました

3/18に名古屋フンタ会 2017#3 ボードゲーム&ディプロマシー合同会を開催。

結構人が集まった。ディプロマシーも早々に事前申し込みの枠が埋まり,キャンセルが出てもすぐに埋まると今回は非常に人気だった。

いくつかやったゲーム。

Ponzi Scheme

詐欺師となって株券を集めるゲームらしいが,実際やっていると多重債務者がパンクしないように必死になって借金を重ねる気分になるゲーム。最初から高利回りのカードに手を出し大変なことに。3人でやったがそれでも破産せずに2位ゴール。5ターンで回る長期のカードにしたおかげで助かった感じ。株の取引どころじゃなくて資金繰りだけ必死にやっていたのであった。かなり面白いゲーム。

カラヤのスルタン

正体隠匿だがインスト聞いていても何やるのか意味不明だったが一度やってみたら理解できた。

この手の軽い正体隠匿でNラウンドやるとかX点になった人が勝利とかあるけど単純にその場で勝った負けたで十分だと思うだがね。

Zoo Police

圧勝してしまった。2回目ということでコツがわかっていた。わざと外すことにも意味があるというテクニックとか。

Team Play

相方とお前は協力する気あるのかと互いに罵り合いながらも高得点カードを集めて1位だった。

飲み会用計算機を作る

飲み会のよくある飲んだひと4500円で飲まなかった人3500円とか計算がめんどくさいの計算Webアプリを作った。

単に電卓で計算してもめんどくさいので作った。Reactでさっさと作成。携帯で画面に入るように調整するのが面倒だった。

内部の技術的にはreduxのstoreをImmutable.jsをつかっていること。モデルを別で作ってユニットテストを書けば見通しがよくなるのでこの方針はわかりやすい。ただJavaScript自体が型が適当な言語なのでいまいちなところもある。TypeScriptを使えってか?

御在所 本谷

冬の御在所本谷を登る

やたら御在所に雪が降っているようなので本谷に行くことにした。藤内沢はあっさり谷が埋まってしまうのだが本谷は上のほうまで行っても埋まらず流れが残っていた。

雪は中道の登山道の入口からしっかり積もっていた。雪は深くてトレース外すと膝ぐらいまでなら普通に埋まる。人はちょこちょこいて団体もいた。

結構遠いなあという感じで,しかも最後のところでロープウェー駅側に行けるかと頑張っていたが雪が深くてどうにもならなかった。あともうちょっとという感じだったが断念してクライムダウン。そうなんだよなあ,とても前向きには降りられない角度になっていた。

最後はひーひー言いながら登山道に出たが,どこが登山道だかわからないぐらいの雪の積もりかただった。

仮想環境(KVM)内でICカードリーダーを使う

KVM上のWindows環境でe-taxをやりたいという話。

普段はLinuxで作業していてe-taxを使うためにWindowsを別で起動するのめんどくさいなあと思っていた。KVM(virt-manager)に入っているWindowsでICカードを読めれば楽だなあと思って試しにやってみたら何も苦労することなくできた。

具体的にはvirt-managerのハードウェア管理でUSBリダイレクトを追加する。種類はSpiceチャンネルのままで良い。このデバイスがあるとLinuxPCに接続されたUSBデバイスをLinux側で使わずにそのまま仮想PC上のOS側に接続させることができる(例えば仮想マウスはX/Linux側が管理している情報をvirt-managerを通して渡していることとの違い)。

このあとICカードリーダー(SonyのRC-S330)をLinuxPCに接続したあとにvirt-managerのメニューから仮想マシン→USBデバイスのリダイレクトを選ぶと一覧の表示されるのでチェックを入れる。こうすると仮想PCのWindows側で認識される。あとの手順は通常の実PCと同じようにやるだけ。ちなみにマウスを間違ってUSBデバイスのリダイレクトでつなぐとめんどくさいことになる…(PC自体から引き抜いて復旧)。

ScalaでDiplomacyの命令解決ライブラリを作成その2

ScalaでDiplomacyの命令解決ライブラリを作成中。撤退フェイズと調整フェイズの実装を行う。Civil Disorderの実装は終わってないが一旦区切りをつける。

DATCの6.J.5-6.J.11を除いてテストのパスを確認した。Civil Disorderの実装は理屈はわかるが無意味にめんどくさいし割とどうでもいいので延期することにした。100%パスですと胸張っていいたいところだがそれは我慢する。

RetreatとAdjustmentはjDipのDATCのテストケースの記述にバグがあって通らないことがいくつか。jDipのテストの実装はどうなっていたんだろう(なんとなく想像できる)。Civil Disorderはテストケースが大丈夫かかなり怪しい気がする。

それはおいといて実装に区切りがついたのでしばらくはコードのリファクタリングを頑張ることにしよう。

 

 

 

ScalaでDiplomacyの命令解決ライブラリを作成

ScalaでDiplomacyの命令解決ライブラリを作成中。現在行軍フェイズの処理まで作成済み。

jDipがあまりにも古い(10年以上まともにメンテされてない)のでどうにもこうにも使いにくいのでなんとかならんのかと考えていたが,結局Scalaで一から書き起こすことにした。現在DIPLOMACY ADJUDICATOR TEST CASES(DATC)のSection.AからSection.G,つまり行軍フェイズ部分のテストは100%パスしている。行軍フェイズに比べれば撤退フェイズ・調整フェイズはかなり楽なので一山越えた。というところでgithubに登録しておいた。

基本的なデータ構造はjDipをかなり参考にした。地図のデータなどはjDipからそのままコピーしてきた。

jDip自体は先に述べたようにかなり古臭くなっている。なんせJava 1.3とか1.4の時代に書かれていてenumもgenericもないという恐しいものになっている。それは仕方がないが制御構造を例外処理で行うのはひどすぎた。最初はjDipをリファクタリングしてけばなんとかなるかと思ったが目が潰れそうなコードが多いのであきらめた。jDipのコード自体は参考にならなかったが,考え方は参考になった。

Scalaによる実際の作成はライブラリに助けられた部分も大きい。特にscala-graphのおかげでめんどくさいグラフ探索をする必要がなくなったことは非常に楽にしてくれた。parser combinatorはテストケースの作成の手助けとなった。

DATCのテストケースはもちろんエッジケースが記述してあるわけだが,まださらに実際には発生しないだろうが変な行軍を考えれば明確に決定できない例も考えられなくもないなという気はする。輸送と支援がサイクルを構成してサポートカットするようなテストケースはてこずった(6.F.23とか6.F.24)。実際のところ実は現在の公式ルールでは解決できないという説明があったりする。このあたりはややこしくていくつかのルールが提案されていたりする。紙に図を書いてデバッガで状態チェックしながらなかなかめんどくさかった。このあたりは結局命令の依存関係グラフを作成してサイクルを検出して…という処理が必要になる。

最初にjDipのコードを読みだしたのが約1年前で,ダラダラやっていたせいもあるがなんとか目処がつくところまで来た。テスト走らせてIDEが警告表示だらけなのを本当に全部潰せるのかよと思いながらやっていてオールグリーンになってほっとした。次はやっつけ仕事になっている部分をきれいに書き直しつつDATCのSection.H(retriating)とSection.I(Building)の部分を作成しよう。

あとScalaで書いた理由はjDipのようなマルチプラットフォームなGUIまで作りたかったのでScalaにはJavaFX(ScalaFX)があるという理由。GUIまでたどりつくのはかなり先だと思われるが。

LVM+btrfs+RAID1 rootの試み

LVMのLVを使ってbtrfsのRAID1をrootを挑戦した。なんとか問題は解決したがきれいではない。

環境はDebian8(Jessie)で実行。最初にRAID1を設定するところまでは問題なかったのだが再起動するとこける状態になった。btrfs RAID1のroot自体はドキュメントも見つかるのでできないはずではないのに謎なことになった。

ディスクは2台ありsdaとsdbとする。まず作業手順だが普通にインストールする。sdaとsdaにそれぞれ別にLVMのvgを作成する(vg0とvg1とする)。そのあとlvも作成(/dev/vg0/rootと/dev/vg1/root)。

vg0/rootをbtrfsにして通常のインストール。インストール終了したあとにRAID1を作成する。

# btrfs device add /dev/vg1/root /
# btrfs fi balance -mconvert=raid1 -dconver=raid1

そのあと再起動…するとinitramfsの処理中にこける。rootflags=degradedをつけてブートするととりあえずブートするが片肺運用になるのでよろしくない。なぜこういうことになるのか,ということだが結論はinitramfsのLVMが必要最低限のlvしかactivateしないことが原因だった(rootflags=device=/dev/mapper/vg0-root,device=/dev/mapper/vg1-rootとかいろいろやったんだよ)。

なんかローカルで設定持てばいいんだろうということで解決は以下のよう。/usr/share/initramfs-tools/scripts/local-top/lvm2/etc/initramfs-tools/scripts/local-top にコピーする。

下のほうに activate "$ROOT"とある下に activate "/dev/mapper/vg1-root" を追加。これで解決したがゴリ押しっぽくていまいち美しくないいのでもっと簡潔な方法がないか考え中。

解決するまで何度も何度もリブートかけて仮想マシンとは言え面倒だった。時々壊れてマウントできなくなるので仮想CDから復旧かけるとか…。

Mini Debian Conference Japan 2016 に参加

12/10のMini Debian Conferenceに参加。大統一Debian2013以来のDebianのイベントになる。

Mini Debian Conferenceに参加するために東京へ。今回は会場はサイボウズの会議スペースだった。大学以外にこういう企業に会議スペースを提供してもらってイベントをする事例が増えた気がする。

オープニング。プレゼンでWindowsを使っていたら会場からブーイングが飛ぶ。

最初にAndrew LeeのOpen Build Serviceの話。パッケージの健全性のチェックのためのビルドテスト環境ということで良いのかな。Debianでパッケージのチェックのためにいろいろツールがあるのはわかるんだが何がどうなっているのか把握できてないのでBTSで言われるまで放置という感じになっている。

昼休みにキーサインパーティ。事前登録を忘れていたので野良参加者として参加。DDの参加者が思ったより少なかったな。GPGキーのローマ字表記と免許証の漢字表記のずれの問題とかほんとにどうしようね。あとパスポート以外にローマ字表記の公的身分証は無いものか。

やまねさんのOSSライセンスの話。知識の再確認。

弦本さんのGo言語のパッケージング。Go言語は全然使ってないのでふーんという感じだがパッケージ名称がああなっている理由はわかった。

岡部さんのEmacsのverilog-modeの話。第二のテーマとしてあったXEmacsってまだ続いてんのかな。自分のパッケージは問題が起きたらサポート終了させているが。

台湾の張正一さんのFOSSバーチャルシンガーの徴音梅林。デモ聞いてぶっとんだ。こんな品質高いのか。

g新部さんのGnuPGの話。最近のGnuPG2の動向など。英語と日本語を交互にプレゼンするのは苦労していた。

DebConf 2018台湾の準備状況など。

そのあと同時開催だったLibreOffice kaigiと共同で懇親会。BTSとかレガシーすぎていつまで使うんだとかいう話で盛り上がる。なんでもかんでもバッチ処理なのもどうかとか。あと酔っ払うと英語の理解力がひどく落ちる。

また来年もやる予定なので来年も来よう。

 

鈴鹿8耐 2016 秋

相変わらずの秋の成績のひどさよ。33Laps。

レース前にトレーニングどころかMTBでもろくに走らないひどい生活を続けてどうなるのかと思ったが例年と変わらなかったな。最初からサイクリングペースで行こうと適当に走っていた。最初からインナー使ってダンシングでシケイン登る気も全然なく適当に走っていたがやはり5時間過ぎたあたりから足が痛くなり全然踏めなくなってきた。どうしようもないらしい。多分最低レベルの状態でここまでは頑張れるとか考えておこう。

dlvr.itに移行

twitterfeedが終了するのでdlvr.itに移行した。

twitterfeedの前にも別のサービスを使っていたが終了して移行したはずなんだよな。どんどん終わっていくなあ。動作テストも兼ねての記事。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 >