ラベル OSS の投稿を表示しています。 すべての投稿を表示
ラベル OSS の投稿を表示しています。 すべての投稿を表示

2017/10/07

Akatsuki を OSS 化した

Akatsuki を OSS 化して GitHub で公開しました。



Akatsuki とは琉球大学情報工学科のシステムです。具体的には
  • 学生のIP申請
    • 対応するドメインを内向き DNS へと登録
    • その IP を DHCP で配れるように
  • 学生のVM新規作成/起動
  • 学生のパスワード変更
    • unix login
    • 802.11X で無線に繋ぐ際の RADIUS を提供
といったことができます。


つまり今まで記事で部分部分を解説していたものの本体です。
関連している記事は以下。


公開にあたって

もちろん大学の内部情報をそのまま GitHub に投げるわけにはいきません。
なので、こいつは OSS 化用にいじってあります。
具体的には漏れたらまずい情報を消してあります。
あとライセンスは MIT だし気にせず自分でいじって公開していく。

その手順として
  • $ git rm very-important-information
    • で公開してはいけない情報を消して
  • $ git commit
    • コミットします。
  • $ git rebase -i --root
    • その後に rebase します。
    • 全部 fixup して一つのコミットにまとめてしまいます
    • fixup しないと復元ができてしまうので、消しても意味がない。
    • ということで、逆に言えばこの手順を踏めばアカンやつを隠蔽できます。


まとめ

所謂実績の一つとして見てもらえると良いかなー、と思って OSS 化しました。
ということで、大学生/大学院生時代にしていた仕事の1つが OSS になりました。

2017/09/23

RGhost に PR を送ってマージされた

現プロジェクトで画像を扱う機会があって RGhost を使っていました。
その時以下のようなエラーが。パッと見て何が起きたか何も分からない。

具体的にその時は Tempfile を渡していたのですが、nil 関係無くても出てくる。

ちょっと困ったなー、ということで調べてみる。
具体的にエラーが発生しているのは shellescape というメソッド。
これを呼んでるのはこことかこことかここ。
RGhost は ImageMagick を使って画像を変換するのでそれ用に引数を shellescape しているようです。
(書いてて思ったけれど ImageMagick 側は何もAPIとか提供してないのかな)

それで、よくよく見てみると file_in は case を使って @document のクラスで確定するらしい。
あー、それなら Tempfile は扱えないな。
ということで File にして一時の問題は解決。
他の人にも同じ轍を踏んで欲しくないので、対応してないのならメッセージが出るとかした方が良いな、と思う。

ということで PR にしてみました。
やったことは単純で、case に else 節を足して例外を投げるように変更。
RGhost::Document と File と String しか対応してないよー、と例外経由でメッセージが出るようになった。
RSpec ももちろん追加。
gemspec に RSpec のバージョンが指定されていないのが若干ひやひやものである。
3.0 未満の RSpec だと raise_error とか無かった気がする。
あと浮動小数の値がちょっと違う。なんか最近YARVに変更入ったっけ。分からない。
そのあたりも含めて最新に合わせつつ、バージョン情報とかを PR に書いて投げた。
そしたら一晩でマージしてくれた。対応早くてうれしい。

という訳で Rubykaigi の熱がさめないうちに OSS 活動をしたのであった。まる。