Archive

投稿者アーカイブ

スクフェスACカスタマイズサイト 発動スキル表示のバグ

プロフィールカード・協力プレイ時のスキル発動について、桐さんとの三日間にわたる検証の過程で副次的に発覚したバグのお話です。

本記事は、プロフィールカードのスキル発動タイミングについて、スクフェスAC ライブ撮影 Wikiの知識レベルを前提とします。

大雑把な結論から言ってしまうと、「プレイヤーのスキルが一部存在しない」「プロフィールカードのスキルが一部存在しない」「1,4,7番目の☆を落とす」のいずれかを満たすとき、
プロフィールカードと協力プレイヤーの発動スキルが履歴に表示されない不具合があります。

細かい条件と症状は、
1.「プレイヤーのスキルが一部存在しない」「1,4,7番目の☆を落とす」
この場合、プロフィールカード・協力プレイヤーの全ての同種スキルが表示されなくなります。
2. 「1枚目のプロフィールカードに一部スキルが存在しない」
この場合、2枚目のプロフィールカードと協力プレイヤーの同種スキルが表示されなくなります。
3. 「2枚目のプロフィールカードに一部スキルが存在しない」
この場合、おそらく協力プレイヤーの同種スキルが表示されなくなります。これだけ未確認。
4. 「2,5,8番目の☆を落とす」
星を落としても1枚目のプロフィールカードのスキルが発動する(仕様なんでしょうか)ため、影響はありません。

プログラマー的視点ではとっても簡単です。
発動しなかった場合にスキル表示を終端してしまい、以降を無視してしまうありがちなやつですね。
まあ、撮影部門メンバーでもないかぎりスキルなしのカードを読ませるだとか、星を落とすとかそういう変なことしませんからね・・・

この不具合のせいで根本の検証に3時間余計に持っていかれました。
「その雑でお気楽で大雑把な表記がどれだけの迷惑と混乱を引き起こしていると思っているのですか!!!」

4/30追記
問い合わせ上げたら「再現しないわー、ビジュアルスコアの計算もあってるわー」って帰ってきました。
いや合計値あってないって問い合わせ本文中で足し算して証明してるんですがね・・・
開発者まで上がってないんだと思いますが、最低限一般プレイヤーのレベルまで仕様を理解してから回答してほしいですね。もう二度と問い合わせしないけど。

www.msmrrenda.net リプレース計画 day4

ゴミリクエストしか来なくなったようなので tsuyukusa.msmrrenda.net をシャットダウンしました。
常設webサーバとしては3代目、稼働日開始は2014/10/7とかだったようです。

カテゴリー:未分類

www.msmrrenda.netリプレース計画 day3

レコードの向け変え、全作業おわりました。表示できないページがあったら教えてください。
tsuyukusa移行時に無効化されたsuexecが再有効化されたので、特にCGI周りが怪しい感じです。

(うまくつながらない場合、一時的に www-sakura.3sh.msmrrenda.net に繋いでみてください。)

2017/3/6 20:54追記: 朝7時半ごろまで、1/2の確率で間違ったバーチャルホストにつながる状態になっていました。現在は修正済みです。

カテゴリー:未分類

www.msmrrenda.net リプレース計画day2

いままではごちゃまぜに置いていた非公開ページを別ホストに分離しようとしてはまった件。

通常、公開用ページは ~/public_html に置きますが、ホームは全ホスト共有です。
したがって、非公開ページを ~/private_html に分離しました。

ところが、なにやってもcgiが呼び出せません。

Mar 4 22:22:24 ainya suexec[1158]: command not in docroot (/home/renda/private_html/env.cgi)

で、suexec -V とかしてみるとこんなことが書いてあります。

-D AP_DOC_ROOT="/var/www"
-D AP_GID_MIN=100
-D AP_HTTPD_USER="apache"
-D AP_LOG_SYSLOG
-D AP_SAFE_PATH="/usr/local/bin:/usr/bin:/bin"
-D AP_UID_MIN=500
-D AP_USERDIR_SUFFIX="public_html"

public_htmlでしか動かないんかーい。
安全上このディレクトリ設定はハードコードされており変更できないようです。
選択肢は二つ。apache全体のリビルドか、バイナリ弄ってGORIOSHI。
ま、手間的に後者かな!!!!

public_htmlよりもprivate_htmlの方が1文字長いので、この際private_htmになっていただきました。が、なぜか動かない。

Mar 4 22:50:08 ainya suexec[1375]: uid: (500/renda) gid: (500/renda) cmd: env.cgi
Mar 4 22:50:08 ainya suexec[1375]: failed to setgid (500: env.cgi)

あれ?suidかsgidでもついてたかなん?と思い、他ホストと見比べます。cap2
cap3
パーミッションは変わらないけどなんか赤い。これはいったい・・・。最悪apacheのリビルドも覚悟し、srpmの中身を覗いてみたら・・・

%caps(cap_setuid,cap_setgid+pe) %attr(510,root,%{suexec_caller}) %{_sbindir}/suexec

そっかー。
cap1

# setcap 'cap_setgid,cap_setuid+ep' /sbin/suexec

したら動きましたとさ。善い子の皆さんは横着せずにapacheをrpmbuildしましょう・・・

カテゴリー:GNU/Linux タグ:

www.msmrrenda.net リプレース計画day1

FreeBSD10で動いていたtsuyukusa.msmrrenda.netをFreeBSD11で作り直そうと時期をうかがっていたものの、
glusterfsとの相性が残念な感じだったのでCentOS7で作り直すことにしました。とりあえず最低限動いたラインなう。

ざっくりとした変更点
・www.msmrrenda.net宛てのアクセスは(他のサービスと違って)proxy-mikanを経由せずに直接tsuyukusaが受けていましたが、こちらもすべてproxy-mikan経由にします。
 ・したがって、自宅全ダウン中でも、chika/anjuのどちらかが生きていれば503くらいは出してくれます。
・tsuyukusaは冗長構成ではありませんでしたが、今回は2台にします。
 ・冗長構成にできない各種サービスは終了します。
・スクフェスボーダー入力用ページが混ざってましたが、それはそれで分離します。

カテゴリー:未分類

systemd socketでxinetdからcatしたみたいにする

なんにもない状態のminimal installしたCentOSにプログラムを流し込むため、
telnetでつなぐととりあえず好き放題出力して終わるだけのsocketが作りたかった。

コツは二つ。
1. socket側に、Accept=true をつける
これやらないと事前にserviceを立ち上げちゃって駄目。中身がcatとかなので、出力だけして死ぬからfailedとか言い出して接続しても何も返してくれなくなる。

2.service側の名前にちゃんと@をつけておく
これ忘れてはまった。

できたのはこんなの。22526/tcpに繋ぐとサーバ側のファイルを吐き出してくる。

socketファイル

[Unit]
Description=rndnet bootstrap script distributor socket

[Socket]
ListenStream=0.0.0.0:22526
Accept=true

serviceファイル

[Unit]
Description=rndnet bootstrap script distributor

[Service]
ExecStart=/bin/cat /path/to/output/file
StandardInput=socket
StandardOutput=socket
Restart=always

Q. minimalのCentOSってtelnetないけどどうすんの?
A. cat < /dev/tcp/hostname/port ってやるととれるんだよ!!!

カテゴリー:未分類

mariadb galera clusterの起動ではまる

2台目の起動時にこんなエラーがでて上がってこない。はて。

Feb 4 21:26:01 umi mysqld: 2017-02-04 21:26:01 140466259486464 [Note] WSREP: (13fdcf24, 'tcp://0.0.0.0:4567') connection to peer 2a8ccdd2 with addr tcp://192.168.2.114:4567 timed out, no messages seen in PT3S

1台目を見ると、なんか知らないけど別のインターフェイスで通信しているように見える。

Feb 4 21:25:58 suzu mysqld: rsync: failed to connect to 192.168.1.124 (192.168.1.124): No route to host (113)

1台目のstatusをみるとこんなことを言っている。

| wsrep_incoming_addresses | 192.168.1.114:3306 |

どうやら、複数のifがある場合、my.cnf.d/server.cnfで明示的に

wsrep_node_address=192.168.2.114

とかやらないと駄目だったらしい。(横着してbindを0.0.0.0にしてるのが悪い説もある。)

カテゴリー:未分類