調べることはありますか?
内容の一覧
< すべてのトピック
Print

A things what you should know:開発陣として知っておくこと

1.OSについて

  • Linuxについての知識特にTerminalを使いこなせてほしい。
  • UBUNTUの優位性、Gnomeの優位性。=みんなが使っているほどバグが叩かれてなくなる。そのためなるべくデフォルトを使う事。デフォルトと異なる設定をしている場合には、記録しておかないと戻せなくなるので、致命的なエラーを残すことや細かいことで身動きがとれなくなるので決まりは守る。
  • UBUNTUのGnomeの左ペインのタスクバーの使い方は当たり前。
  • TerminalがShellにつながって機能することを知っていること。sh,bash,csh,zshなどShellによってスクリプティングがちがう。
  • Javaオプションが長いからと言って命名規則を整えないといけないようなくだらないシェルスクリプトはかえって混乱するのでshellの履歴機能を使う事。
  • デフォルトのNautilusファイラの操作、gnome-text-editorがつかえるのは当たり前。さらに、Terminalでは、viやvim,emacsとかは使えるに越したことはない。最低限でもnanoは使えるようにしよう。
  • 初期のデーモン起動にあたってSystemdの仕組みをできれば知っておくこと、systemctrlコマンドは当たり前に使う。とくのSQLデーモン監視など。

2.SQL(Mariadb)、Redisについて

  • Ubuntu22.04 MariaDBのインストールとデータベースの作成が良い記事で一通りのSQLサーバとそのリッスンやSOLクライアントで設足を試せれば、原因究明に役立つ。
  • RedisはRedis は、Key-Value型 の NoSQL データベースでSQLより速い。他のサーバからも値を返すようにして、SQL前に早めに動きたい場合につかう。とくにHuskSyncでは、2サーバ(162.168.0.8:6379)を使っている。

3.javaについて

  • JavaはC++に似たOOPを言語。
  • Javaバイトコードという中間表現にコンパイルしてjarファイルとして配られるため、機種依存依存の無い動作を行える。
  • Java初期のインタプリタ式で走行されるJavaプログラムの実行速度は遅かったが、実行時コンパイラ技術と動的再コンパイル技術 (dynamic recompilation) の導入によって実行速度問題はほぼ解決した。実行時コンパイラとは、一定のJavaバイトコードをまとめてネイティブコードにコンパイルして継続的に実行させる技術である。そのため、実行していくうちにインタープリタ回数の多いものは、動的コンパイルしてだんだん早くなっていく特徴がある。(MSPTがだんだん下がっていくのはこのことによる)

3.1.GraalVMの起用について

  • Oracle GraalVMは、高パフォーマンスのJDKで、代替の実行時(JIT)コンパイラを使用することで、JavaおよびJVMベースのアプリケーションのパフォーマンスを高速化
  • GraalVMをJITモードで使用する場合、JVMはGraalVM JITコンパイラを使用して、アプリケーションを実行しながら、Javaバイトコードからプラットフォーム固有のマシンコードを作成。プログラムの実行中にコンパイルが増分的に実行され、頻繁に実行されるコードに追加の最適化が適用される。このアプローチでは、積極的なインライン化、部分的なエスケープ解析、その他の高度な最適化により、ホットスポット内のコードを非常に高速に実行することができる。一部の最適化では、オブジェクトの割当てを減らして、ガベージコレクタの負荷を軽減します。これにより、長時間実行アプリケーションのピークパフォーマンスが向上しする。
  • UBUNTUではデフォルトの環境でのセットアップの方法はない。Download Oracle GraalVMからダウンロードして、/usr/lib/jvm以下において、そのアーカイブのbin/javaがそのファイルとなる。通常のopen-Jdk21-jreなどをバックアップに入れておいて、Altanetiveを使って切り替える。

4.PluginServerについて、PurPurの起用について

  • すべてはMojangのバニラサーバから始まる。
  • Bukkitによるプラグイン導入、これをフォークしてSpigotによる高速化さらにフォークしてPaperで高速化さらにPurPurとフォークという系譜が続いている(1.21.4)まで
  • 1.21.5からPaperはバニラからのハードフォークとなる。ただし、1.21.4時点でのBukkit・SpigotPluginインターフェースは残すため、これらのサーバの新しい機能を使わないなら動くことになる。そのため、だんだんとBukkit・Spigot Pluginは使えなくなる。
  • PurPurはPaperからのフォークなので当然同様の影響を受けることとなる。
  • 現在のシェアから言ってPaperはトップであるため、HuskSyncなどのようにSpigotサイトでの有料販売もPaper対応となる可能性が大きいが、フリーの作者はどうするかわからないので今後の注意が必要で、もしも対応待ちとなった場合最新バージョンに取り残されることになる。

5.個別のPluginについて

  • WikiやDiscordなどによって必要な知識は当たれるようにしておきたい。
  • とくにMultiverce Core|Potal|Nether Potalは必須。そうでないと1サーバ1ワールドで終わってしまう。
  • 上述4の可能性があるために雑な選定ができない。できれば必要分のみとしたいところになる。

6.多数開発でのLogの大切さ

  • たった1つのプラグインに1文字を入れただけでも、プラグインは動かない。
  • 良かれと思ってやってていても、ログを残さないのは問題のさまたげになったばあい、それを探すために最低工数でも2分法をを使うことになる。コストはプラグインの多さにかかわり、数時間に及ぶ。そのためたった1つのメモ的なものでもその無駄な行為を無くせることはとても有意義である。

 

 

Categories
Translate »
著作者:pikisuperstar/出典:Freepik