Skip to content

Instantly share code, notes, and snippets.

View KisaragiEffective's full-sized avatar
🔧
painful state

Kisaragi KisaragiEffective

🔧
painful state
  • Some(_)
  • Hokkaido, Japan
View GitHub Profile
@KisaragiEffective
KisaragiEffective / MANUAL.md
Last active June 3, 2019 13:08
How To Contribute Guidance

TODO: 全体的に画質が荒いです

はじめに

ギガンティック☆整地鯖(以下、当鯖)のプラグイン開発をしてみたいけど、Java難しい!助けて!という方に向けての簡単なチュートリアルページです。

前提

知識

本内容は読者が以下を心得ている前提で記述しています。

* Java入門書で学べる最低限の知識
** プログラミング言語自体初めてという方には「スッキリわかるJava入門 第2版 (スッキリシリーズ)」をおすすめします。
@KisaragiEffective
KisaragiEffective / ChunkDataImpl.kt
Created June 24, 2019 10:43
Yes, that's piece of harder survival.
package com.github.kisaragieffective.hardest
import org.bukkit.Material
import org.bukkit.block.data.BlockData
import org.bukkit.generator.ChunkGenerator
import org.bukkit.material.MaterialData
class RandomizedHardestChunkData : ChunkGenerator.ChunkData {
private val kk = mutableMapOf<Triple<Int, Int, Int>, BlockData>()
override fun setRegion(xMin: Int, yMin: Int, zMin: Int, xMax: Int, yMax: Int, zMax: Int, material: Material) {
  • shadowJarタスクを定義する必要がある
// ...
shadowJar {
}
// ...
  • IDEAは気を利かせてくれないので、手動でタスクをコンフィグから追加する
@KisaragiEffective
KisaragiEffective / asdf.md
Last active August 13, 2019 06:14
Rust vs Java
  • varargはありません。代わりに、マクロを使ってください。
  • nullはありません。代わりに、Option<E>を使ってください。
  • try-catch-finallyはありません。代わりに、Result<V, E>を使ってください。
  • アノテーションは@で始めず、[]の間に書きます。
  • メソッドはfnで宣言します。
  • raw型はありません。
  • 継承はありません。代わりに、mix-inを使ってください。
  • 配列の境界チェックは添字アクセスでのみ挿入されます。したがって、要素をイテレートするのにindex-forは向いていません。
  • 配列は共変ではありません。
  • JVMでは (当然) 動きません。
/*
.da-container {
padding: 0;
}
*/
.da-timestampCompact {
display: none;
}
6 7 8 9 10 11 12
1.8
1.9
1.10
1.11
1.12 x (#3935) x (#3935) x (#3935) x (#3935)
1.13 ■ ([#5174][2]) ■ ([#5174][2]) ■ ([#5174][2]) ■ ([#5174][2])
@KisaragiEffective
KisaragiEffective / main.md
Created August 18, 2019 13:26
それぞれの言語の利点・問題点

C

By: AT&T From: '80s Spec: アセンブラから機種依存性を排除した。

メリット

  • 低レイヤを操作するのにほぼ必須
  • 優秀なコンパイラが優秀に最適化をしてくれる
  • 実行可能ファイルを生成する

デメリット

@KisaragiEffective
KisaragiEffective / ef.md
Created August 18, 2019 13:33
おまじない
import java.lang.reflect.Array;

@ForReferenceType
@SupressWarnings("unchecked")
public static <T> T[] newArray(final Class<T> type, final int size) {
  return Array.newInstance(type);
}

public static boolean[] newBooleanArray(final int size) {
  • 路線図はグラフ
    1. エッジをふるい落とす・コストを再設定する (e.g. 乗り継ぎ料金)
    2. 目的関数を設定する (最短時間・最短経路・最安経路)
    3. ダイクストラなど適当な方法で最良の経路を求める
    • 最安経路の場合は適当に距離をテーブルから引いて乗り継ぎ料金や特急列車乗車券などの料金を足せば良い
    • 最短時間・最短経路の場合は通常のダイクストラ法を適用すれば良い
  • マークダウンの箇条書きはアスタリスクを増やすのではなく1レベルごとに2つ先頭に空白を増やす
  • 末尾再帰は関数f()について最後にf()ただ一つが来る形のもの
  • したがってフィボナッチ数をナイーブに求めただけでは末尾再帰には当てはまらない
// https://github.com/GlowstoneMC/Glowstone/blob/dev/src/test/java/net/glowstone/block/itemtype/ItemBowTest.java
package net.glowstone.block.itemtype;
import static net.glowstone.TestUtils.checkInventory;
import static org.bukkit.Material.ARROW;
import static org.bukkit.Material.BOW;
import static org.bukkit.Material.SPECTRAL_ARROW;
import static org.bukkit.Material.TIPPED_ARROW;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyInt;