もぐてっく

人は1つ歳をとるたび、1ビットづつ大きくなれると信じてた。

時間が!Linuxサーバが!スキルが無くても大丈夫!たった5分でオンプレミスにGitHub的なサービスを立ち上げる方法 ~GitBucketすげー!~

こんなお悩みないですか?

  • チームのためにGitHubみたいなソース管理のソリューションが欲しいけど、Linuxのインストール&Nginxの設定&MySQLの設定&PHPの・・・きぃぃぃぃぃ!そんなのやってる時間無いわよ!

  • 社内ディストピアには(情シス部門が管理しきれない)Linuxサーバなんて無いわよ。この前試しにWindows PCでモダンなサービスを動かそうとしたら地獄を見たわよ。

  • そもそも構築できたとして、こんなOSSで出来た砂の城を誰も保守できないわよ!脆弱性を放置した挙句ハッキングされて懲戒解雇されるのが目に見えてるわよ!!

ちくしょう!転sy・・・くっ!住宅ローンがそれを許さない!

的な悶々とした日々を送ってました。

そんな僕に天使が舞い降りた

ある日、なんとなく社内サーバの「情シス承認済みフリーソフト」のフォルダを覗いてたらGitBucketなるフォルダを発見。

戯れにフォルダの中身を開いて見ると、そこにあったのはJavaサーブレットgitbucket.warたった一つ。

お?これJavaだからWindowsでも動くんでは?そして最近のwarファイルってTomcatが内蔵されてたりするし、もしかしてjavaコマンドでロードすれば動くんでは?

試しに手元のWindowsで実行・・・うわ動いた。

しかも動作は軽快。GitHubにある各種機能が完備。 保守も定期的に最新のwarファイルを入れ替えてけばOK!

数年来の悩みが5分で解決しちゃったよ。

ほんとに誰でも5分で出来るんです

ダウンロード

GitHubのGitBucketリポジトリからgitbucket.warをダウンロードします。 https://github.com/gitbucket/gitbucket/releases

Javaをインストールしていないなら、JREもダウンロードしてください。 https://java.com/ja/download/

実行

コマンドプロンプトから以下のコマンドを実行します。

java -jar c:\Users\moguno\Downloads\gitbucket.war

たったこれだけで準備完了。凄いっすよね!

使ってみる。

IEかEdgeでhttp://localhost:8080にアクセスしてください。

そこには夢にまでみたモダンなソース管理サービスが!

f:id:moguno:20200412221956p:plain

ちなみに管理者ユーザーはroot。パスワードもrootです。

注意

GitBucketはDBとしてH2と言う内蔵の簡易的なRDBを使っていますが、本格的に運用するならMySQLとかPostgreSQLとかを使う様にした方が良いみたいです。

あの伝説の不思議なダンジョン系ゲーム「jnethack」をUbuntu19.10にインストールしようとしたら、そっちはそっちで大冒険だった

sshでサーバにログインしたら、シェルじゃなくてゲームが始まったら楽しくね?」

と言ういまいちよく分からない欲求が爆発して、ターミナルで動くゲームを色々物色してました。

orebibou.com

有名なゲームは大体実装されている印象。

しかしながらアクション系は再描画の頻度が激しすぎててチラつきとか動作に引っかかりがあったりで割とイマイチ。

なので、ここは定番のCUI RPGRogueにしようかなと思った次第です。

あ、そういえばRogue派生の「NetHack」ってやったことないなぁ。
確かJNetHackって言う日本語版もあるんだよね。aptにはなさげ。じゃあコンパイルしますか。

と言うことでJNetHackコンパイルにチャレンジしてみました。

f:id:moguno:20200128001742p:plain

時は2020年。物語の舞台はUbuntu 19.10 Serverです。

ゲーム本編と同様、結構な数の罠が待ち構えていたので攻略のポイントを書いておこうと思います。

ライブラリ・ツールのインストール

まずはapt-getで以下のパッケージをインストールします。

  • build-essential
  • libncurses-dev
  • bison
  • flex

なんでかプログラミング言語を作るときの必須ツールであるyaccとlexを要求されます。
こいつら、そのものずばりの名前じゃなくてbisonとflexと言うパッケージになっています。第一の罠ですね。

ソースコードの展開とパッチの適用

$ tar xvzf NetHack-3.6.2_Release.tar.gz
$ gzip -d jnethack-3.6.2-0.1.diff.gz

$ cd NetHack-NetHack-3.6.2_Release/

$ patch -p1  < ../jnethack-3.6.2-0.1.diff

patchコマンドの-pオプションの数字がいまだに謎で手が止まるのと、差分ファイルをリダイレクトで渡さないといけないのが地味なハマりポイントです。第二の罠ですね。

Linux用のMakefileの作成

$ sh sys/unix/setup.sh sys/unix/hint/linux

常識を疑わず./configureを探し続けてしまう呪いでまたハマり。
シェルスクリプトMakefileを錬成します。第三の罠。

gccSJISなソースを解釈させるためのおまじないを追加する

ここが最大の難関でした。
JNetHackはどんな歴史的経緯かわかりませんが、ソースコード内の日本語がSJISコードで書かれています。

UTF-8を基本としている最近の?gccだとこのソースをそのままコンパイルすることができません。

具体的には、SJISコードには2バイト目が\な文字がいくつかあり(「表」とか)、それが入ると後続の文字がエスケープされてしまします。

このせいで、良くてメッセージ内の「表」の文字が文字化け。
最悪は文字列のダブルクォートをエスケープしてコンパイルエラーになってしまいます。

/* 「表」の2バイト目に含まれる\のせいで後続のダブルクォートがエスケープされて「文字列がダブルクォートで囲まれてへんぞ!」エラーになる。 */

char *str = "表";

じゃあ、ソースコードUTF-8にあらかじめ変換すればいいかと言うとそうでもなくて、JNetHackLinuxで動くときはSJISのメッセージをUTF-8に変換して出力していたり、SJISコードらしい16進数を抱えてたりするので、なんとかSJISのままでコンパイルを通さないと不味そうです。

幸い、gccにはUTF-8以外のソースコードgccの内部コードUTF-8に変換するオプション「-finput-charset」と、逆に内部コードのUTF-8をそれ以外のコードに変換してバイナリを作る「-fexec-charset」ってオプションがあるので、それをMakefileに組み込むことにします。

src/Makefile:27

CFLAGS=-g -O -I../include -DNOTPARMDECL -DDLB -finput-charset=cp932 -fexec-charset=cp932

コンパイルする

ここからは簡単。定番のmakeとmake installです。

$ make
$ make install

これで/usr/local/games・・・ではなくて、~/nh/install/games/
と言うよくわからないディレクトリにjnethackコマンドをインストールしてくれます。
最後まで罠の多いソフトでした。

終わりに

移動がvimと同じhjklキーだったり、ショートカットキーを覚えないとなにも出来なかったりで色んな意味で難易度の高いゲームですが、中毒性は半端ないですね。
今後はログインシェルをjnethackに差し替えたユーザを用意して、ネットのみんなでランキングを争ったりとかしたいですね。

2020年1月22日。無料はてなブログでGoogle Adsenseに合格しました。

Google Adsenseに5回の再申請で合格しました。
無料はてなブログでも通るんですね。

2020/1/9

新年。ふと不労所得が欲しくなってGoogle Adsenseに申し込んでみました。

審査のためのスクリプトを自分のサイトに張り付けると、最長2週間で審査をして合否を判定してくれるとのこと。

スクリプトは正常に読み込めました」と言うメッセージに安心して就寝。

翌日。GmailAdsenseからメールが。お、早いね。

結果は「サイトの停止または利用不可」

いや、動いてるし。てかあんたこの前正常に読めたって言ってたし。

ググると、設定でHTMLが埋め込めるところに片っ端にスクリプトを入れろ。と言う情報を得たのでそうして再申請。

2020/1/11

「サイトの停止または利用不可」

申請サイトのURLの末尾に/が無いとダメッて情報を得たので再申請。

2020/1/13

「サイトの停止または利用不可」

さらにググってみると独自ドメインじゃないと申請に通らないって言う情報を発見。

うーん・・・独自ドメインが\100/月で独自ドメインが設定できるはてなブログProが月額\600。

もぐてっくのPVだと全然ペイ出来ない。
所詮は人気者の遊びだったか・・・諦めよう。

一応再申請しつつ諦める。

楽天アフィリエイトを見つけたのでそれサイドバーに張ってみる。

2020/1/18

「サイトの停止または利用不可」

なんだか審査に時間がかかるようになってきた。
優先順位が落ちた?

無料はてなブログでも申請が通るって情報を得たので期待せず再申請。

他に、一時的にダミーの独自ドメインブログを作って申請を通せばその後は自由にサイトを追加できるので、そこではてなブログを追加すればよいみたいな情報を見つけたり。
その技使えなくなってるよみたいな情報も見つけたり。

情報錯そうしすぎじゃないです?

2020/1/22

あ・・・通った。

なんで?

なんなんですかね?
途中から人力での判断に変わって、優しい担当者に当たった感じなんですかね?

なんにせよ、無料はてなブログAdsenseは通る。と言うことが分かりました。