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

2017年5月28日日曜日

nginxでライブストリーミング!nginx-rtmp-module

生配信サーバーを構築してみたかったのですが、nginxのエクステンションでできることがわかって構築しました。
サーバーはこれで構築できました。
macbook air obs-(wifi 100mbps)>ubuntuサーバー-(wifi)>macbook air vlc
での遅延が3秒のようですから、私には実用的な遅延レベルです。

しかし、クライアントがHLSとなると36秒遅延しています。

なぜそうなるのかはどうやら、HLSは遅延をなくすには向いていないようです。
HLSでも遅延を減らせなくはなさそうなので、最初はHLSで頑張ってみます。
今回の受信者はAndroidを想定しています。視聴者は少数であるという想定です。

まずは、nginxのrtmpの設定で、

# HLS fragment の長さ(1個のtsファイルの動画の長さ)
hls_fragment 1s;

としてみました。

すると、遅延は25秒になりました。

続いて

#m3u8ファイルに何秒分のtsファイルを掲載するか
hls_playlist_length 4s;
#なぜか必要です 
wait_video off;



遅延が22秒!
ただし、安定性が落ちるようです。

この秒数を2とするとそもそも開けなくなりました。

次に、

hls_max_fragment 8s;

としてみます。

すると、、、
遅延を17秒までにできました!うぅ!

4秒にしてみます。

12秒までに削減できました。

2秒にすると、14秒になるので減らし過ぎもいけません。

ところが
githubのissueを見ようとした時に、誤って、リポジトリ検索したら、html5でrtmpを見るというものを見つけてしまいました。


なので、HLSでの試みはここで放棄します()


留意点
これらの低遅延の設定を施すと、cpuに負荷がかかります。core i7の 37なんとかsだかtでやったのですが、1コアだけ与えた仮想マシンで、cpu100パーセントにしばしばなりました。
vpsで構築する人には辛いかもしれません。


余談
OBSの配信停止をしてから、nginxを止めないと、OBSがクラッシュします

参考文献

2017年5月24日水曜日

Minecraft PEサーバーソフトウェア集(PocketMineと多言語サーバー)2017年5月版

こんにちは、haniokasaiです。
PocketMine-MP公式がshogicp氏のMojang入社に伴い死んでしまったため、どのサーバーソフトを使えばいいかわかんないという人は非常に多いです。
ですから、いつものように私がソフトをまとめていきたいと思います。

☆言語別にまとめます。

PHP

PocketMine派生

PocketMine-MP
開発:pmmpチーム(リーダーはhttps://github.com/dktapps
ライセンス:LGPLv3
開発状況:活発

公式を半ば乗っ取った形でスタート。必要最低限の機能を持っていて、あまり機能追加をしない。dtkappsは性格が悪いため、Genisysを終わらせた人の1人。バグは少ない。

開発:BlueLightJapan(リーダーkametan0730MC)
ライセンス:GPLv3
開発状況:活発

かめたんが率いるBlueLight.https://github.com/ken77731により、設立が提案。
政治的に安定しており、新機能追加・バージョン対応がいち早い。ほかのsrcに比べると、開発環境が自由で、おのおのが独立して新機能更新している。そのためか、バグが多い。

Steadfast2
開発:Hydreon Corporation
ライセンス:LGPL2
開発状況:それなりに活発

Lifeboat 鯖のSRC。新バージョン対応が早い。ただそこまで実用的なSRCではない。一応企業開発のため滞りは少ない。

ExtraCorePE
開発:ExtraCorePE
ライセンス:GNU Affero General Public License v3.0
開発状況:やばそう(悪い意味で)

日本人のNought57(零月)が所属。チーム内でごたごたがあって、更新はあまりよくない。一部人に人気なそう。

開発:TesseractTeam
ライセンス:GPL3
開発状況:細々と更新

Genisysベース。機能の多さと、動作の安定が両立できている。それなりに人気のSRC。この怪しげなデベロッパーhttps://github.com/AppleDevelopsはPMMP界の破壊に奮闘していた時期も。
チーム内では争いが絶えないよう。

開発:EventaxhlTeam
ライセンス:
開発状況:たまに

ロシア製SRC。Tesseractベース。更新頻度が低いが細々と続けられてはいる。ロシア語メインなので日本人にはわけわからない。コマンドでコードが実行できるらしいがevalなので危険そう。


Nukkit
開発:Nukkit
ライセンス:GPLv3
開発頻度:活発

みんな大好きNukkit。共産圏の開発者が多い。プラグインも非PMMPにしては一番多いし、私haniokasaiもそれなりに作りました。プラグイン開発も容易です。
機能追加は消極的、バグは多くない。
パフォーマンス的にJavaを生かし切れていないと指摘される。

BukkitPE
開発:BukkitPE
ライセンス:GPLv3
開発頻度:一定程度安定

あまり有名でない。ドメインやVPSが死んでるものの開発は続いているよう。レッドストーンが使えます。

死んでる
voxelwind

C#
MiNET
開発:NiclasOlofsson
ライセンス:Mozilla Public License 2.0
開発頻度:なぜか活発

ある意味、一番息の長いサーバーソフト。機能はほぼなく、すべてプラグインで補う必要がある。プラグインは作りやすいが、機能がなさすぎる。コードは一番洗練されていると感じる。噂によると、コードをmojangからもらっているそう。

D言語
sel-server
開発:Kripth
ライセンス:LGPLv3
開発頻度:活発

次世代のサーバーソフト。更新は異様に活発だが、企業が関与しているのだろうか?
ハブとノードで分散できるのが最大の特徴。
残念ながらD言語がわからないので詳細がわからずテストもできず。

停止
Swift
SwiftMine
開発:
ライセンス:Apacheライセンス
開発状況:停滞
C++
BenchMine


まとめ
サーバーソフトは生まれては消えを繰り替えしているのですが、なんとか消え失せたりはしていません。PCに比べて活発さはないのですが、公式のサーバーソフトがない故、特色のあるMCPEサーバーは多くあります。死んでいて紹介していないものもありますけど、多くを網羅できていると思うので、是非参考にしてみてください。

2017年5月5日金曜日

MCPEのパケット解析結果を見れるサイト!

こんにちは、haniokasaiです。
すごそうなサイトを見つけたので紹介します。
D言語で書かれた、MCPEサーバープロジェクト、https://github.com/sel-projectで、パケット解析をしていることに気づきました。
Githubでサーフィンしていたら、たまたまphpやjavaなど多数の言語のMCPEのライブラリを見つけて、その投稿者のホームページをみたら、詳細な解析結果が載っていました。

https://sel-utils.github.io/



















上から、Minecraft PC、MCPE,Raknet,(sel-serverの)hubとnode通信パケット、(sel-serverの)外部からwebsocketで操作するパケットが書かれています。

たとえば、https://sel-utils.github.io/pocket/112.htmlを見てみると、1つ1つのパケットの型、id、サーバーかクライアントが処理するかが書かれています。
これさえ読み解ければ、パケット解析をしなくとも、パケットが読めるというわけです。

しばらくはブログ更新できそうですので、その読み方を解説できればなぁと思います。

2017年5月4日木曜日

appwchr氏のMCPEのマルチプレイアプリで遊んでみた!

こんにちは、はにおかさいです。
精神状態がやばいけれども、それがある意味安堵できる状況でもあるという状態です。

mixiappwchr氏がマルチパーティというアプリを作ったようなので、レビュー書きます。
彼はもともとおしゃまるプロジェクトの開発者でしたが、おしゃまるがなんやかんやで終わってしまいました。でもマイクラで何かをしたかったそうで、今回のマルチプレイのアプリを作ったようです

Android端末が2台ありますので、試してみました。

まず、マイクラPEとマルチパーティーをインストールします。

次に、開きます

許可を開始を押します。(オレンジ色のボタンは長押ししないと反応しないのでしょうか。)


心優しいappwchr氏は変なことをしないと思うので、許可。


許可。

これも許可してください。

設定はこれで終了です!


ーーマルチプレイのワールドを開く側ーー

「パーティー」を作るには、パーティー名を決めて、右下のオレンジボタンを押してください。


名前を決めて、「開始」ボタンを長押しします。
根気強く工夫して押さないとなぜか反応しません。

このあと、マイクラPEのアプリが立ち上がるので、マルチプレイしたいワールドを開いてください。


ーーマルチプレイに参加する側ーー
設定後、アプリを立ち上げます。


先ほどのパーティー名と同じパーティーを押します。




パーティーに参加の参加ボタンを長押しします。


遊ぶを押します。


LANゲームにパーティーを開いた人の名前の部屋があるはずなので、それを押して、参加します。

読み込みを待つと、、


マルチに入れました!


感想
mob等をふ化させて、動きを確認しましたが、今回のこのアプリはおしゃまると違って、サーバーを通さないで通信するので快適にできました。
コマンドはうまく使うことができません。
欠点としては、パーティーに入る際、許可がいらないので、知らない人がどんどんきちゃうことです。テスト中も関係ない人が入ってきて困惑しました。
まだまだ、開発途中ですので、そこは改善してほしいです。。。
1年ほど前、まだ自分に割と友達がいたころにこのアプリがあったら、結構使ってたことでしょうね....
どんどんこれからもMCPEの記事を書けるのであれば、書きたいと思っています。









宇都宮で餃子食べてきた!

どうも、はにおかさいです。
GWどこにも行かないのも寂しいので、宇都宮で餃子食べてきたました。

数時間かけて、宇都宮に行ったのですが、思った以上に栄えてまして驚きました。

まずは、宇都宮 みんみん ステーションバル店に。
11:8ごろ(GWの水)に行ったのですが、一応並ばずには入れました。
注文してから15分後、商品が届きました。

水餃子と焼き餃子を注文、安かったのですが味もそこそこでした。
店には遠出をしていて途中で寄ってる人が多いようです。新幹線もありますからね。


つぎは、同じ駅ナカ(あとで建物が同じことに気づきました())の青源に行きました。
(11:30ごろから)15分ほど並び、店に入って、注文。また10分ほどたったら、オーダーしたものが来ました。

ネギみその焼き餃子
程よい濃さのみそで、ねぎも味噌が染みてて、今回食べた餃子の中では一番気に入りました。


水餃子。みそに浸かってて、味が染みています。スープは酸味が効いてて、餃子にあいますが、飲むには少し酸っぱい気がします。(スープも飲めると書いてあるので飲むことも想定されてるでしょう。)

宇都宮駅から15分ほど歩いて、来らっせ本店に着いた(13時ごろ)のですが、数
十人が既に並んでいて、とても並ぶ気になれなかったのであきらめました。

そっから、オリオン通りに行きました。昔の商店街みたいなところでしたが、正直見どころは少ないです。

歩いていたら、餃子ナンピザなるものを発見!ヒルズカフェ(HillsCafe)という店でした。

店内は、一階がお土産ショップ、2階がレストランです。レストランはファストフードのコーナー的なものを想定して行ったのですが、レストラン色が強かったです。

味はいいのですが、 具が少ない 上に載ってる餃子の焼いた皮がもはやただのせんべい 冷めてる ナンという割には、薄すぎる生地 隣の客がキ〇ガイでからまれた(店関係ないww) 
でいい気分しませんでした。ラー油をかけると、餃子っぽくなっておいしいです。
店はかなり空いてました(二時半ごろ)

また、ぶらぶらしたら、宇都宮餃子館を発見しました。


店内に入るのに、10分(3時ごろ)、店内では2,30分待たされました()


川越シェフも来たことがあるようw


湯葉入り餃子。高いですけど、おいしい。具はほんのり湯葉感がしました。
わさびをつけて食べます。
皮は一番おいしかったです。ちょうどいい歯ごたえ。。。

帰り、駅前の「餃天堂」に行こうとしたのですが、15:30にもかかわらず、1時間以上ほど並んでいそうだったのであきらめて帰りました、、、。
食べたかった。。。。

まとめ
味としては、ねぎみそ焼き餃子。餃子の皮は宇都宮餃子館の餃子がよかった。
んー。全体的に店が混んでます。ゴールデンウイークだったからでしょうか。
正直、宇都宮の名所というものはなさそうなので、行くとしたら餃子食べ歩きがメインになりそうです。
後悔としては、オリオン通り近くの焼きそば屋に行きたかったことです。
店が一見さん厳しい感じだったので入れませんでした。。。
焼きそばが250円。かなり安い。おいしいのかなぁ。
1日中歩き回ってへとへとです。文章のグラマーもなんか変かもしれません。
初食レポ記事なので、だいぶ編集が雑ですけど、ご容赦くださいませ。

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

こんにちは、haniokasaiです。 https://forum.pmmp.jp  が廃止になるため、慌ててデータを落としたくなりました。 https://github.com/haniokasai/XenDownloder こちら。 import cfsc...