ErogameScapeにおける各ゲームのデータの入力数はべき分布に従う(たぶん)

ErogameScapeのデータをグラフにして眺めていたら、ErogameScapeにおける各ゲームのデータの入力数はべき分布に従ってるなーと思いました。
その感動を共有したくて、この文書を書いております。
オチはございません…


各ゲームについてユーザーさんのデータが入力された数(具体的にはusereviewテーブルのplayがtrueになっている行の数)を調べて、横軸にデータが入力された数、縦軸に入力された数に該当するゲームの本数として、グラフにした結果が以下のとおりです。
100刻み

データが入力された数は100刻みしています。
入力されたデータ数が0から100の場合は1に、101から200の場合は101に、カウントして棒グラフを描いています。
データ数が0から100のゲームは18339本、101から200のゲームは917本ありました。

これはベキ分布のグラフそのものだ…と思いました。

次に、データが入力された数を10刻みにして、入力数が500以下のゲームに絞ってグラフを描きました。
10刻み

べき分布はスケール不変性という性質があって、スケールをかえても同じようなグラフになります。
スケールを100刻みから10刻みにしても同じようなグラフになっています。

さらに、データが入力された数を5刻みにしてみます。
5刻み

2刻みにしてみます。
2刻み
2刻みまできてやっと最頻値が左端からずれました。

べき分布は、縦軸と横軸を対数にする(両対数にする)と、直線になります。
両対数グラフを描いた結果が以下のグラフです。
log刻み
ほぼほぼ直線かな…と思います。

やってみてないですが、POVの入力数だったり、各ユーザーさんのゲームの入力数だったりも、べき分布に従っているのかなあと思います。

[FATAL] There is nothing to do here, since there are no nodes with any plugins. Please refer to http://munin-monitoring.org/wiki/FAQ_no_graphs at /usr/share/munin/munin-html line 40

muninをverupしたら、グラフが更新されなくなりました。

[契機]
munin-node-2.0.33-1.el6.noarchからmunin-node-2.0.40-2.el6.noarchにverupしたとき

[対処]
/etc/munin/munin.confの全行がコメントアウトされているのを確認したため、muninが動くのに必要な行のコメントアウトを解除したり、書き加えたりした。

[考えたこと]
おそらくverupの際に、既存の/etc/munin/munin.confを上書きしたのかと思います。
そして、上書きしたmunin.confはすべてコメントアウトされているファイルだったのだと思います。
※思いますと書いているのは、事前の状態が分からないからです。

muninをインストールしたとき、/etc/munin/munin.confを書き換えずとも動いたので、munin-node-2.0.40-2.el6.noarchに組み込まれているmunin.confは全行がコメントアウトされている…のだと思います。
※確かめていません

yumでアップデートしている際のメッセージは
warning: /etc/httpd/conf.d/munin.conf saved as /etc/httpd/conf.d/munin.conf.rpmsave
だけでした。

[エラーメッセージ]
/var/log/munin/munin-cgi-html.log
に以下のメッセージが記録されていました。

[FATAL] There is nothing to do here, since there are no nodes with any plugins.  Please refer to http://munin-monitoring.org/wiki/FAQ_no_graphs at /usr/share/munin/munin-html line 40


エロゲーのマスターアップは発売日の何日前?

この文書はエロゲーのマスターアップは発売日の何日前なのかを調べたものです。
低価格のゲームはマスターアップが遅い(発売日に近い)、高価格のゲームはマスターアップが早い(発売日から遠い)、のかなあ…と思っていたのですが、まったくそんなことはなかった、ということが分かりました。


抽出したゲーム
2016年9月9日以降2018年9月9日までにパッケージが発売されErogameScapeにマスターアップの日付が記録されているゲーム。
該当のゲームは549本でした。

条件
パッケージとダウンロード版が発売された場合は早く発売された方を発売日とする。

その他
マスターアップの日付は正確ではないことがある。


横軸は発売日とマスターアップ日の差(単位は日)
縦軸は該当ゲームの本数
です。

すべてのゲーム
all_games
4000円以下のゲーム
to4000_games8000円以下のゲーム
to8000_games
8000円を超えるゲーム
morethan8000_games
すべてのゲーム、価格別色分け
all_games_2考察
価格帯をわけてもマスターアップが早いとか遅いとかの傾向は見られませんでした。
自分は勝手にマスターアップの日は、正規分布っぽくなると思っていたのですが、発売日の2週間前、3週間前、4週間前、に集中することが分かりました。
マスターアップの日を金曜日に設定しているのか、マスターアップの報告日を金曜日に設定しているのか、なのかなと推測します。
この日を超えると発売延期になる…という傾向がグラフから分かるかと思ったのですが、そもそも元となるマスターアップの日を適当に入力していることもあり、デッドラインはいまいち分かりませんでした。



WARNING: relation "povlist" page 25 is uninitialized --- fixing

povlistテーブルのidが258のデータが存在するのに、SELECT出来ないという事象が発生しました。
具体的には以下のような事象です。
ap2=# SELECT id FROM povlist WHERE id = 258 ORDER BY id DESC ;
 id
----
(0 行)
ap2=# SELECT id FROM povlist WHERE id <= 258 ORDER BY id DESC ;
 id
-----
 258
 254
 253
 250
 245
 244
続く
id指定だと検索出来ないのに、id<=258だと検索出来ていました。
試しに、VACUUM ANALYZEを実行したところ、以下のようになりました。
ap2=# VACUUM ANALYZE ;
WARNING:  relation "povlist" page 25 is uninitialized --- fixing
WARNING:  relation "povlist" page 26 is uninitialized --- fixing
WARNING:  relation "povlist" page 27 is uninitialized --- fixing
WARNING:  relation "povlist" page 28 is uninitialized --- fixing
WARNING:  relation "povlist" page 29 is uninitialized --- fixing
WARNING:  relation "povlist" page 30 is uninitialized --- fixing
WARNING:  relation "povlist" page 31 is uninitialized --- fixing
WARNING:  relation "povlist" page 32 is uninitialized --- fixing
この後、VACUUM ANALYZEは完了の応答が返ってこなくて、以下のようなメッセージが表示されました。
FATAL:  terminating connection due to administrator command
サーバとの接続が想定外にクローズされました
        おそらく要求の処理前または処理中にサーバが異常終了
        したことを意味しています。
サーバーへの接続が切れました。リセットしています: 成功。
この後、id258が検索されるかを確認したところ、完全にSELECT出来なくなりました。

ap2=# SELECT id FROM povlist WHERE id <= 258 ORDER BY id DESC ;
 id
-----
 254
続く
 [pgsql-jp: 33210] Re: vacuumでエラー?によると、VACUUM FULLで回復しそうでしたので、実行しました。
ap2=# VACUUM FULL ;
FATAL:  terminating connection due to administrator command
サーバとの接続が想定外にクローズされました
        おそらく要求の処理前または処理中にサーバが異常終了
        したことを意味しています。
サーバーへの接続が切れました。リセットしています: 成功。
完了の応答は返ってこなかったのですが、無事id 258番が検索できるようになりました。

ap2=# SELECT id FROM povlist WHERE id = 258 ;
 id
-----
 258
(1 行)

Failed authorization procedure.

ErogameScapeではLet's EncryptのSSL証明書を更新する際に以下のコマンドを実行しています。

# letsencrypt-auto renew --force-renew

今まで問題なかったのですが、本日以下のようなエラーを吐いて更新出来ませんでした。

/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
  DeprecationWarning
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/erogamescape.dyndns.org.conf
-------------------------------------------------------------------------------
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for erogamescape.dyndns.org
Waiting for verification...
Cleaning up challenges
Attempting to renew cert from /etc/letsencrypt/renewal/erogamescape.dyndns.org.conf produced an unexpected error: Failed authorization procedure. erogamescape.dyndns.org (tls-sni-01): urn:acme:error:connection :: The server could not connect to the client to verify the domain :: Timeout. Skipping.

All renewal attempts failed. The following certs could not be renewed:
  /etc/letsencrypt/live/erogamescape.dyndns.org/fullchain.pem (failure)
1 renew failure(s), 0 parse failure(s)

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: erogamescape.dyndns.org
   Type:   connection
   Detail: Timeout

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address. Additionally, please check that
   your computer has a publicly routable IP address and that no
   firewalls are preventing the server from communicating with the
   client. If you're using the webroot plugin, you should also verify
   that you are serving files from the webroot path you provided.

NOTEに該当する部分はまったく問題ないので、何をどうすれば直るかさっぱり分かりませんでした。
いつもはサブコマンドに「renew」を指定しているのですが「run」を指定してみたら、なぜか更新できました…
※renewとrunの違いは、途中で何かを聞かれるか否かの違い…だと思っています。

# letsencrypt-auto run --force-renew -d erogamescape.dyndns.org
/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
  DeprecationWarning
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for erogamescape.dyndns.org
Waiting for verification...
Cleaning up challenges
Deploying Certificate for erogamescape.dyndns.org to VirtualHost /etc/httpd/conf.d/ssl.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
-------------------------------------------------------------------------------
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 1

-------------------------------------------------------------------------------
Your existing certificate has been successfully renewed, and the new certificate
has been installed.

The new certificate covers the following domains:
https://erogamescape.dyndns.org

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=erogamescape.dyndns.org
-------------------------------------------------------------------------------

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/erogamescape.dyndns.org/fullchain.pem. Your
   cert will expire on 2017-10-12. To obtain a new or tweaked version
   of this certificate in the future, simply run letsencrypt-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "letsencrypt-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

再度、オプションを「renew」にしたら、更新できました。

# letsencrypt-auto renew --force-renew
/root/.local/share/letsencrypt/lib/python2.6/site-packages/cryptography/__init__.py:26: DeprecationWarning: Python 2.6 is no longer supported by the Python core team, please upgrade your Python. A future version of cryptography will drop support for Python 2.6
  DeprecationWarning
Saving debug log to /var/log/letsencrypt/letsencrypt.log

-------------------------------------------------------------------------------
Processing /etc/letsencrypt/renewal/erogamescape.dyndns.org.conf
-------------------------------------------------------------------------------
Renewing an existing certificate
Performing the following challenges:
tls-sni-01 challenge for erogamescape.dyndns.org
Waiting for verification...
Cleaning up challenges

-------------------------------------------------------------------------------
new certificate deployed with reload of apache server; fullchain is
/etc/letsencrypt/live/erogamescape.dyndns.org/fullchain.pem
-------------------------------------------------------------------------------

Congratulations, all renewals succeeded. The following certs have been renewed:
  /etc/letsencrypt/live/erogamescape.dyndns.org/fullchain.pem (success)

何がいけなかったのでしょうか…
記事検索