GitHubへのコミットをIRCにリアルタイム通知するには?
GitHubのリポジトリにコミットしたとき、CIA.vcを利用してIRCにメッセージが飛ぶようにします。簡単、無料です。
GitHub の設定
- リポジトリの Admin ページを開く (管理者アカウントが必要)
- Service Hooks をクリックして、一覧からCIAを選択
- Active にチェックを入れて、Update Settings で変更を保存
これだけ、じつに簡単です。ほかにも Twitter などとも連携できるようです。
CIA.vc の設定
アカウントを持っていなければ、CIA.vc - Register an Account から登録してください。アカウント名やメールアドレスなど、若干の基本的な情報を聞かれるだけで簡単、無料です。また、アカウント名以外はあとから変更できます。
アカウントが準備できたら、ログインして CIA.vc - Your Account ページを開きましょう。
まず、通知メッセージを流したいチャンネルを追加します。左側のメニューから Bots → Add bot... とクリック、サーバとチャンネル名を入力して Add します(例:Freenode, TASers)。
追加されたチャンネルが一覧に表示されるのでクリック、Filter by project を選択して入力欄にプロジェクト名を入力してください(たとえば https://github.com/snes9xgit/snes9x の場合であれば snes9x と入力する。また、複数のプロジェクトの状況を監視したければ改行区切りで入力する)。Save を押して変更を保存すれば、これで指定のIRCチャンネルにコミット情報が通知されるようになります。
高度なフィルタリング (forkの考慮)
上記の方法でプロジェクトを追加すると、forkによる派生版の情報もIRCに流されます。派生リポジトリが本家のアップデートをマージすると、その分のコミット情報もすべて流れてきます。いくつか派生版があって、それらすべてがこまめに本家リポジトリの更新を取り込んでいるとすると、IRCに同じ情報が何度も流れてきて非常に不都合です。
状況を改善するには、Filter by project の代わりに Custom filter を選択して、より細かなフィルタリングを行います*1。フィルタリングの記法は CIA.vc - Advanced Filtering で説明されています。難しくはないので、内容に関しては割愛します。
以下にフィルタの例を示します。snes9xgit/snes9x の gocha さん以外からのコミットと、snes9x-rr の gocha さんからのコミットだけを通知しています。
<or> <and> <match path="project">snes9x</match> <or> <and> <find path="url">github.com/snes9xgit/snes9x</find> <not><match path="author">gocha</match></not> </and> <and> <find path="url">github.com/snes9x-rr/snes9x</find> <match path="author">gocha</match> </and> </or> </and> </or> <formatter medium="irc"/> <formatter name="IRCProjectName"/>
なお、特定の人のコミット情報は http://cia.vc/stats/author/gocha のようなURLから閲覧可能です。Link をたどるとコミット情報を記した XML データを閲覧することができます。フィルタの作成にあたっては、一度どのようなデータが含まれているか眺めてみると役に立つことでしょう。
*1:Filter by project と Custom filter の併用はできない。乗り換える場合は <match path="project"> を記述して同等の効果を得るようにする。
古い Snes9xで使うライブラリのビルド方法 (zlib, libpng)
2011 年時点の Snes9x 向けの zlib と libpng のビルド手順です。2019 年現在は公式ビルドガイドに沿っていればこういったことを考える必要はありません。
本体のビルドについては、Snes9x のソースコードをコンパイルするをご覧ください。
使用するツールとライブラリ
- Visual Studio 2013 Community Edition
- zlib 1.2.8
- libpng 1.6.17
- snes9xgit (2015-04-19, 1.5.4 interim?)
スタティックライブラリをビルドします。DLLであれば些細なバージョン違いでのエラーは発生しないと思うので、手間なく継続的に開発できるようにするには、DLLとリンクする方が良いかもしれません。
本記事では Snes9x 向けのライブラリをビルドするので、文字コード(MBCS/Unicode 両サポート)周りで通常のビルドとは異なる手順を必要とします。
コンパイル手順
前準備
- zlib と libpng のソースコードをダウンロードして展開する
- libpng/projects/vstudio/zlib.props を開いて、ZLibSrcDir を修正する(相対指定は zlib.vcxproj からの相対位置になる)
- zlib/contrib/masmx86/bld_ml32.bat を開いて、ml のオプションに /safeseh を追加する(/safeseh 追加の参考)
- 修正したらソリューション vstudio.sln を開いて、デフォルト設定のビルドが成功することを確認する
Win32 ビルド
*** 最適化及びデバッグオプションの統一
[Debug Library] [Release Library] のオプションを、zlib, libpng についてそれぞれ変更する。
*** zlib コンパイルの修正
- 「error LNK2001: unresolved external symbol _gzclose」への対策を行う
以上を設定後、libpng プロジェクトをリビルドする。
x64 ビルド
Win32 ビルドの構成を複製するので、ビルド設定を完了後に実施してください。
- メニュー [ビルド]-[構成マネージャー] を開いて、Win32 構成を元に x64 構成を新規作成する
- 出力ファイル名を適宜変更する
以上を設定後、libpng プロジェクトをリビルドする。
Unicode ビルド
その他
ライブラリのビルド以外における留意事項です。
- libpng/scripts/pnglibconf.h.prebuilt を pnglibconf.h にリネームして snes9x の所定ディレクトリに配置する
古い Snes9x のソースコードをコンパイルする
LuaでTwitterにpost!
LuaスクリプトでTwitterにツイートを投稿する手順をお教えします!
半年前に同じ記事を書いたときはBasic認証を利用していましたが、Basic認証は廃止されてしまいました。そこで今回はOAuth認証を行うことにします。
基本的にはignacioさんのLuaOAuthをそのまま利用して実現しています。この場を借りてお礼申し上げます。
OAuth認証して投稿するための手順
OAuth認証と言われてもぴんとこない人もいるかもしれませんが、ある程度Twitterを使っている人なら、下の画像のような「拒否する」「許可する」の画面を一度は見たことがあると思います。
今回、Luaからツイートできるようにするために、事前にこのような認証を完了しておかねばなりません。
本記事でのツイート完了までの大まかな道のりはこんな感じです。