2017年10月4日水曜日

PocketMineの旧プラグインAPI対応方法

pmmp公式のプラグインAPIが変更となりました。
が、多くのプラグインは新APIに対応していません。
あえて新APIにプラグインを書き直す理由もわからないので、スクリプトを組みました。

Error: Declaration of DevTools\DevTools::onCommand(pocketmine\command\CommandSender $sender, pocketmine\command\Command $command, $label, array $args) must be compatible with pocketmine\command\CommandExecutor::onCommand(pocketmine\command\CommandSender $sender, pocketmine\command\Command $command, string $label, array $args): bool

こんなエラーがAPI不一致で発生します。

https://github.com/haniokasai/PocketMine-OldAPI-Replacer

型をコマンドで置き換える単純なものです。


http://jenkins.haniokasai.com/view/PocketMineS/
ここのsrcはすべて旧APIのものです。置き換えるのが面倒ならば、お使いください。


Ubuntuでのネットワークアダプタの探し方。

/etc/network/interfacesに
auto eth1
iface eth1 inet static
とか書きますけど、なんでeth1断定できるのかわけわかんない。
どんな環境でも絶対eth0とか1なのかよ。。。

そんなことはありません。てなわけで、ネットワークアダプタの探し方を紹介します。
ls /sys/class/net
すると、アダプタ一覧が表示されました。
[email protected]:~# ls /sys/class/net
enp0s3  enp0s8  enp0s9  lo
[email protected]:~# vi /etc/network/interfaces
^[[[email protected]:~# ifup enp0s3
Internet Systems Consortium DHCP Client 4.3.3
Copyright 2004-2015 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/enp0s3/0ああああ
Sending on   LPF/enp0s3/0ああああ
Sending on   Socket/fallback
DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 3 (xid=0xebc6721b)

DHCPDISCOVER on enp0s3 to 255.255.255.255 port 67 interval 6 (xid=0xebc6721b)
DHCPREQUEST of ああ on enp0s3 to 255.255.255.255 port 67 (xid=0x1b72c6eb)
DHCPOFFER of ああ from あああ
DHCPACK of ああ from あああ
bound to ああ -- renewal in 40279 seconds.
[email protected]:~# 
[email protected]:~# ping haniokasai.com
PING haniokasai.com (104.27.142.118) 56(84) bytes of data.
64 bytes from 104.27.142.118: icmp_seq=1 ttl=54 time=57.0 ms
64 bytes from 104.27.142.118: icmp_seq=2 ttl=54 time=55.6 ms
^C
--- haniokasai.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 55.672/56.344/57.017/0.713 ms
[email protected]:~# 

ようやくネットが使えるようになりました。。。
うまく動かなくなったvirtualboxで。。。

参考文献
https://askubuntu.com/questions/293816/in-virtualbox-how-do-i-set-up-host-only-virtual-machines-that-can-access-the-in



2017年9月23日土曜日

PocketMine(pmmp) Minecraft PE1.2対応版phar配布

こんにちは。はにおかさいです。
アプデ対応がつらかったのですが、公式を改造して使用可能な状態にしました。

注意:PHP7.2ですので、Binの更新が必要です。
ソース https://github.com/haniokasai/PocketMine-MP/
phar   http://jenkins.haniokasai.com/job/PocketMine-72/

バイナリ: Linux x64 https://jenkins.pmmp.io/job/PHP-7.2-Linux-x86_64/
Windows https://ci.appveyor.com/api/buildjobs/30k579nj3xn4kc5j/artifacts/php-7.2.0RC2-vc15-x64.zip

本家との違い:
onCommandが旧API仕様なので、プラグインの更新の手間がない。

composerをごまかした

pluginのapiバージョンの無視

2017年8月21日月曜日

無料のMinecraftPEマルチプレイサーバーのMiRmMCPE運営して早2ヵ月...

どうも。はにおかさいです。

MiRmを運営して早く、2ヵ月経ちました。6月14日から運用しています。

mirm.infoとは、MinecraftPE/PCの完全無料のレンタルサーバーです。
プラグインはすでにいれてあるものを使えます。

そもそも、MiRmの名前の由来を知っていますか?私はあまり知りませんw
たぶん、MiはMinecraft,Rmはもともとの仮プロジェクト名”Racoom”が由来します。

運用していて、いくつかわかったことがあります。


・Javaは割と長く動かしてもメモリリークしない
-かなり安定して動いてます。

・やっぱ利用者の質は、、、
-小中学生の利用者が多いので、どうしても民度が下がるようです

・内容がマンネリしやすい
-プラグインがダブるので、どうしても

・バグ報告がうまくいかない
-利用者的にあまり報告がうまくなされません。チャット検索等で運用状況をすくう必要があります。

・使いこなせないユーザーも一定数いる
-使い方を理解したユーザーが教えあっているようで、一応はなんとかなっています。


今は夏休み需要で利用客が多いのですが、今後も維持するにはさらなる改善が必要とは感じます。ただ、有料の方との兼ね合いもあるのでなかなか大変そうです。

☆課金制度は導入しないと思います




2017年8月20日日曜日

[PocketMine-MP]チャット制限プラグイン公開!

こんにちは、はにおかさいです。
今回は、MiRmで使っているチャット制限プラグインを公開します。

https://github.com/haniokasai/ChatPermitter/

このプラグインは、MiRmで嫌われているプラグインナンバー1でしょう。



こんな感じでチャットを制限できます。

こうするメリットは、チャット荒らしや、不毛な会話を減らすことができます。
コードも公開してますから、自由に改造しちゃってください。

@config_enable コンフィグを読むか
@chaturl チャットコードを見れるurl
@deleteurl チャットコード消化用url
@deleteday チャット権限の削除日数

2017年7月17日月曜日

cloudflareのUnder DDoS Modeのサイトからファイルを拾ってくる in Python

こんにちは、haniokasaiです。

https://forum.pmmp.jp が廃止になるため、慌ててデータを落としたくなりました。

https://github.com/haniokasai/XenDownloder

こちら。

import cfscrape


scraper = cfscrape.create_scraper()


print scraper.get("https://forum.pmmp.jp/").content
これで、ふつーのテキスト的な感じでダウンロードできます。

res = scraper.get("https://forum.pmmp.jp/attachments/" + str(i) + "/", stream=True)
fname = re.findall("filename=(.+)", res.headers['content-disposition']) #ファイル名を取得します。
parsedfname = fname[0].replace("\"", "")
#phar名編集
\
if res.status_code == 200:
with open(parsedfname, 'wb') as file:
for chunk in res.iter_content(chunk_size=1024):
file.write(chunk)

こちらのコードで、ファイルを保存できます。

これで、cloudflareがあってもdlできます。

参考;https://torina.top/detail/161/

2017年6月12日月曜日

Javaがメモリ足りてるのにメモリ不足で動かないとき。Ubuntu

Javaで、立ち上げるとKilledやら強制終了やら、
Native memory allocation (mmap) failed to map 262144 bytes for committing reserved memory.
やらOut of memoryとか言われることがあります。
でもメモリは10GBほど余っています。

4時間ほど格闘した末、Jenkinsだけがはっきり答えを示してくれたので、まとめました。


環境 Ubuntu 16.04 64Bit ,"Oracle" Java 8

最初に以下のことを試してみました。

Javaが動いてると、Text file Busyって言われますから、
killall Java
killall Java
killall Java
....
でJavaを殺してあげてください。

初回の時のみ最初に(このコマンドが扱える形式にする?そうです)
paxctl -c /usr/lib/jvm/java-8-oracle/jre/bin/java

1度でいいかは不明ですが、MPROTECTを解除します。
paxctl -m /usr/lib/jvm/java-8-oracle/jre/bin/java

これで、立ち上げられました。と思ったらこれでもダメ。

仕方ないので、OOM Killerに黙ってもらうことにしました。

テキストエディタで  /etc/sysctl.confに追記してください。

vm.overcommit_memory = 1

保存して、コンソールで

sysctl -p

と打つとapplyされます。これで解決したのですが、根本的な対策ではないと思うので、原因が見つかったら直さないといけませんね。この修正で今のところシステムは快調です。


参考

https://stackoverflow.com/questions/27262629/jvm-cant-map-reserved-memory-when-running-in-docker-container

http://passingloop.tumblr.com/post/11957331420/overcommit-and-oom-killer

PocketMineの旧プラグインAPI対応方法

pmmp公式のプラグインAPIが変更となりました。 が、多くのプラグインは新APIに対応していません。 あえて新APIにプラグインを書き直す理由もわからないので、スクリプトを組みました。 Error: Declaration of DevTools\DevTools::...