メインコンテンツまでスキップ

snake

DowntimeProxyはスタンドアロンのMinecraftサーバーソフトウェアです。

プログラムを実行するとMinecraftサーバーが起動します。プレイヤーはサーバーに接続することが出来ず、接続した場合にはkickされメッセージを受け取ります。そのためMinecraftサーバーリストのPingにのみ応答する軽量なマルチプレイサーバーとして利用できます。

更新履歴

2020/03/12     1.1.1 Release    exeファイルがウイルス判定されるのでexe配布終了    
2020/02/04 1.1 Release icon追加
log表示対応
起動時に使えるオプションを削除
終了時のメッセージ削除
2020/01/24 1.0 Release

配布先

Spigotmc.org

https://www.spigotmc.org/resources/downtimeproxy.74587/

GitHub.com

Releases · ViaSnake/DowntimeProxy

設定

プログラムの実行場所に生成される「server.ini」が設定ファイルとなります。

host = 0.0.0.0
port = 25565
motd = A Minecraft server\n&bDowntimeProxy
max_players = 20

[messages]
kick = Disconnect by DowntimeProxy

ソースコードはGitHubで公開されており、ライセンスはApache License 2.0が適用されます。

ViaSnake/DowntimeProxy

このソフトウェアはPythonライブラリであるQuarryを必要とします。

barneygale/quarry

snake

最近ノートパソコンが異常に重いと思ってタスクマネージャー眺めていたら、Vmmemなるプロセスがメモリを食いつぶしていました。

Vmmemってなんぞやって事で物知りのGoogle先生に聞いてみたら、どうやらWindowsでLinux動かす為のWindows Subsystem for Linux 2(WSL2)のプロセスみたいなんですよ。

でもWindowsに普通に入ってるシステムがメモリを食いつぶすなんて問題、普通であれば考えにくいので、もう少し調べたら「WSL 2 consumes massive amounts of RAM and doesn't return it」というGitHub issueが出てきました。

WSL 2 consumes massive amounts of RAM and doesn’t return it · Issue #4166 · microsoft/WSL

ほっとくとメモリ食いつぶすよっていう問題です。予想に反して、普通に問題でした。

私はDocker for Desktopを使っていて、WSL2をアンインストールすれば問題解決!みたいにはならないので解決方法も探したら、下記のQiitaの記事が出てきました。

WSL2によるホストのメモリ枯渇を防ぐための暫定対処 - Qiita

記事内で示されている対処法は、メモリサイズを固定して利用するメモリ量に制限かけるというものです。

一応、下記にやり方を示しておきます。

%USERPROFILE%に.wslconfigを作成する。

%USERPROFILE%C:\User\ユーザー名のこと。分からなければ、WindowsキーとRキーを同時押しして %USERPROFILE%を実行して表示された場所がそこです。

そこに.qslconfigを作ったらメモ帳か何かで開いて下記を記述してください。

[wsl2]
memory=2GB
swap=0

memoryが利用可能なメモリ量、swapがスワップメモリ量です。swapはお好みで、memoryは自分のパソコンのメモリとご相談ください。

WindowsにDocker for Desktop入れたらメモリが食いつぶされて枯渇していると悩んでいる方は、以上の解決策を試してみて下さい。

snake

MySQLのデータベースをSQLiteへ変換する必要があったので、手順をメモっておきます。

環境は以下の通りです。

  • CentOS Stream 8
  • MariaDB 10.3.27(MySQLでも可)
  • SQLite 3.26.0

SQLite3がインストールされていない場合、下記のコマンドでインストールしておいて下さい。

$ dnf -y install sqlite

下記のコマンドを実行して、データベースをdumpしてください。

$ mysqldump --skip-extended-insert --compact データベース名 > dump.sql

認証が必要な場合は下記のコマンド使って下さい。下記のコマンドではユーザー名がrootになってるので、適切なユーザー名に変更して下さい。

$ mysqldump --skip-extended-insert --compact -u root -p データベース名 > dump.sql

dumpが完了したら、下記のコマンドでmysql2sqliteというスクリプトダウンロードして下さい。

$ wget https://raw.githubusercontent.com/dumblob/mysql2sqlite/master/mysql2sqlite

mysql2sqliteはMySQLからSQLiteへと変換してくれるやつです。詳細はGitHubを確認して下さい。 dumblob/mysql2sqlite

スクリプトがダウンロード完了したら、下記のコマンドでスクリプトを実行して下さい。

$ ./mysql2sqlite dump.sql | sqlite3 sqlite.db

スクリプトの実行が完了すると、ディレクトリ内にsqlite.dbが生成されています。

以上で変換完了です。

snake

GitHubへデータサイズの大きいリポジトリをPushする際に、下記のようなエラーが発生することがあります。

remote: fatal: pack exceeds maximum allowed size
fatal: The remote end hung up unexpectedly

このエラーはGitHubに設定されているサイズ上限を超えた場合に発生します。

GitHubでは2GB以下のリポジトリサイズが推奨されていますが、2GB以上のサイズにできない訳ではないので、分割してサイズを小さくしてpushをしてやればエラーはなくなります。

分割pushするためには下記の手順を行ってください。

1. 分割部分のコミットにタグを作成する

タグを作成するコミットは好きなところでいいですが、500コミットぐらいで区分してやれば問題ないと思います。

タグを作成するコマンドは下記のとおりです。

$ git tag <tag_name> <commit>

tag_nameにはタグ名、commitにはコミットのSHA-1ハッシュを入れてください。

複数のタグを作る場合、異なるtag_nameを設定してください。

tag_nameは後で使うので覚えるかメモしておいてください。

2. 指定したタグまでpushする

$ git push origin `git show <tag_name> | grep commit | cut -d' ' -f2`:refs/heads/master

tag_nameは手順1で作成したタグのタグ名を入れてください。

pushが終わったら次のタグ名を入れて再度実行してください。

これでサイズを超過したリポジトリをGitHubにpushできます。

参考

snake

数日前にアイコンを変更しました。

もっとsnakeが蛇してるアイコンに変更しました。 次に蛇なら蛇らしくしろとか文句言ってきたヤツ居たら、お前に蛇のおもちゃ着払いで送りつけるからな、覚悟しろよ。

前のアイコンは何かに使います。 pic.twitter.com/MwUbZLJ9mD snake (@viasnake) January 16, 2021

アイコンに使っている蛇についてはちゃんとライセンス買ってます。権利についてうるさい人は安心してください。

アイコン変更した動機について書き連ねておこうと思います。VTuberが世間で流行り海外でも流行った結果、DMとかで何でVTuberの画像使ってるのとか、そのキャラクターの名前教えてくれとかを稀に言われるようになり、面倒くさくなった為アイコン変えました。一部でアイコン使いたい時に、キャラクターだと不都合なタイミングがあるとか、このキャラクター画像で紹介されて中身として男が出てきてもあまり受けないとか、他にも理由はいくつかあります。

アイコンは変わりますが、今後もよろしくおねがいしますね。

以前使用してた下記のアイコンについては、そのうち何かに使います。使ってない間に変に使われるのは嫌なので、一応viasnake.comと入れておきます。

いちいち突っかかりには行かないですけど、変なことに使うのだけはやめてくださいね。

snake

Oracle社が展開するOracle Cloud Infrastructure(OCI)上でufwを用いてポートを開放できない問題に遭遇したので解決策について書いておきます。

本記事ではCanonical Ubuntu 20.04 Minimalをインストールしたインスタンス想定で話しますが、Canonical Ubuntu 20.04でも同様の問題が発生したのを確認しています。

結論だけ先に言っておくと、Oracle Cloud上だとufwはバグっているのでiptablesをいじってポート開放すればいいです。iptablesについて理解している人は、普通にiptablesコマンドかファイル編集でポート開放してください。

iptablesをわからない人は下記の手順をやってください。

本記事の内容については一切責任取らないので、自己責任でやってください。

1.(Ubuntu Minimalの人のみ)vimをインストール

vimである必要は無いので他の使いたい人は他のインストールしてください。

$ sudo apt install vim

2. /etc/iptables に移動

下記のコマンドを実行してください。

$ cd /etc/iptables

3. rules.v4 を編集

下記のコマンドを実行してください。

$ sudo vim rules.v4

4. 下記の行を追記

vimで開いたファイルに下記を追記してください。

-A INPUT -p tcp -m state --state NEW -m tcp --dport [ポート番号] -j ACCEPT

追記箇所はおまかせしますが、怖い場合は最初から記載されているポート22の行の下に挿入すればいいと思います。

挿入後は下記のようになるかと思います。

# CLOUD_IMG: This file was created/modified by the Cloud Image build process
# iptables configuration for Oracle Cloud Infrastructure
# See the Oracle-Provided Images section in the Oracle Cloud Infrastructure
# documentation for security impact of modifying or removing these rule

*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [463:49013]
:InstanceServices - [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p udp --sport 123 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport [ポート番号] -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
~~~ 以下、省略 ~~~

5. 更新を適用

下記のコマンドを実行してください。

$ sudo iptables-restore < /etc/iptables/rules.v4

心配な場合は、再起動してください。再起動コマンドは下記です。

$ sudo reboot

以上でOracle Cloud上でのポート開放です。

本不具合はウェブサイト上で既知の問題として紹介されていますので、一応URLの方を載せておきます。細かいことはご自身でご確認ください。

Oracle Cloud Infrastructureに関する既知の問題のリスト

ちなみにstackoverflowとかでもいくつか解決策が提示されています。本記事のやり方はあくまで一例というのをご理解ください。

snake

知ってる人はいるかもしれませんが、私はMinecraft: Java Editionのマルチプレイサーバーを8年(?)ほど運営しています。名前は何度か変わっていますが、現在は「MCPlayNetwork」という名で落ち着いています。

2020年は新型コロナによってオンライン化が進み、自由に使える時間が増えたので、かなりの時間をMCPlayNetworkというかMinecraftに投資できました。

MCPlayNetworkは2020年の間にかなりの進化を遂げました。その過程では様々な問題があったのですが、オンライン化に伴う自由な時間の増加によって何とか運営を継続できました。

2020年最初の課題は通信量増加に伴う、ISPからの通信遮断でした。ISPさんは基本的に通信を遮断したり、速度を一時低下させても連絡を一切くれず、こっちから確認しないと教えてもくれないし、直してもくれないので、原因の特定に凄く長い時間がかかりました。HGWやルータも何度も交換したし、業者にも来てもらいました。結局は業者も分からなくて、3日ほど来てもらっていたのですが、最後は本社へ連絡して確認してもらい解消されました。

本当にあの時は復旧まですごく時間がかかった。大変だった。もうISP変えたんですけどね。

次に、新しいサバイバルサーバーを作ろう!これまでの問題を解決するには根底を作り替えるのが手っ取り早い!という考えのもとに新たなゲームモードの制作を開始しました。

これは6月ごろに始まり、作業が終了したのが12月の第1週です。これは長期間プロジェクトとなっていたので、非常に大変でした。作業するのが一人だと終わりも見えてこないので、本当につらかった。まだベータリリースで問題は山積みなので、まだまだリリースまでは時間かかると思いますが、長い目で見守ってほしいです。

さて2020年どのぐらい作業したのかについてですが、明確な作業時間は割り出せないし、割り出したいとも思わないので、Gitでのコミット数を載せておきます。

1年間で4871コミット行いました。すべてがMCPlayNetworkにかかわることではないですが、このぐらい作業しています。1コミットは1つの作業と考えてもらえればいいと思います。

実際は数個の作業を1コミットにまとめるみたいなことをしてたので、5000コミット分ぐらいは何かやってる気がします。Gitで管理していないものもたくさんあるのでね。

塵も積もれば山となる。積み重ねてアップデートすればいつかは完成する。そう願いながら、2021年もMCPlayNetworkの制作を行っていきたいと思います。

2020年、ありがとうございました。2021年も宜しくお願い致します。

snake

snakeっていう名前でインターネット彷徨っている人がいるのですが、ウェブサイトがいつまでも「Error 521 Web server is down」なのはまずい!と感じたらしく、ウェブサイトが作られたらしいです。

個人サイトがトレンドにのっているので、ぜひ私のサイトも見てください。

サイト名はError 521 Web server is downです。 pic.twitter.com/8bfhn7RRwx snake (@viasnake) November 5, 2020

ウェブサイトの制作にあたり自分の中でどうするか考えた結果、下記の5つの条件を設定しました。

  1. どうせならこれまで使ったこと無いサービスやシステムで動かしてみたい
  2. コストは低コストに抑えたい
  3. 立ち上げと管理にあまり面倒なことはしたくない
  4. ブログとして使えるウェブサイトにしたい
  5. 面倒な機能はいらないからシンプルにしたい

条件1があったので最初にWordPressが消えました。‌‌

条件2で無料で使えるサービスやオープンソースのCMSに絞られました。

条件3で無料サービスの中のBloggerやGoogle サイト、OSSのGrav、Ghost、その他2個ぐらいに絞られました。

条件4でGoogle サイトが消えました。決してブログとして使えないわけではないのですが、ブログとして使おうとすると管理が面倒になり条件3に反します。

条件5でその他のOSSのCMS2個が消えました。単純にシンプルさにかけると感じたっていうのが理由です。

最後に残ったBlogger、Grav、Ghostですが、最初にBloggerがウェブサイトデザインを含む細かな設定が不可能という理由から消えました。シンプルさではかなり上位なのですが、細かいことがいじれないのは少しつまらなそうです。

次にGravが消えました。GravはフラットファイルCMSであり、かなり新しい技術が取り入れられているので魅力は感じたのですが、条件3にある立ち上げに面倒なことしたくないというのに引っかかりました。GravさんDocker Hubにいい感じのImageがなくて立ち上げにDocker使えるGhostさんが優勢になってしまいました。

上記のような経緯のもと、ウェブサイトにはGhostが選ばれました。Ghostさんを選んだ理由には他にもコミットされてる。ユーザーいる。コントリビュータたくさん。などなどいくつかあります。最終的には私の直感と使ってみたいという欲求になりますけど、どうせ自分しか使わないですし、まあ良いでしょう...

もはや施行を羅列しただけなので、読んでて楽しいものではないと思いますが、こんな感じで思考ダダ漏れ、適当文章でブログ的な何かを書いていこうと思います。もしよろしければTwitterとかフォローしてください。

Ghost

snake

Steamに投稿したAnimaze by FaceRigのレビューです。

Facerigを利用していましたが、新たにAnimazeがリリースされたので軽く触ってみました。

Facerigと比較して、とんでもなくトラッキング性能が向上しています。またアバターのカスタマイズが組み込まれているために、誰でも簡単にアバターをいじる事ができます。色を変えたり、装飾品のせたりですが、姿を写しながらみんなで楽しむ分には十分です。

リリース最初の段階では一部機能がうまく動いてなかったりしますが、大半の機能は問題有りません。すぐにバグも修正されると思います。

Animazeからはサブスクリプションが存在しており、サブスクリプションに入ると機能が開放されたり、制限を超えた商用利用できるようになったります。個人的に利用する分には不便しませんが、配信に利用したりする場合にはロゴが邪魔だったりするので、ちょっと使うだけでも一番下のサブスク契約を検討した方が良いかと思います。

仮想カメラはFacerigで無制限利用可能でしたが、Animazeからは90分の制限有りになったので、長時間利用する場合には気をつけてください。更に使ってみて気になったこととかあればあとから追記します。