gradle cheatsheet
# Create Java Application Project $ gradle init --type java-application ... $ gradle test BUILD SUCCESSFUL in 0s 3 actionable tasks: 3 up-to-date $ gradle run > Task :run Hello world.
...
Read More# Create Java Application Project $ gradle init --type java-application ... $ gradle test BUILD SUCCESSFUL in 0s 3 actionable tasks: 3 up-to-date $ gradle run > Task :run Hello world.
...
Read MoreRead Moreimport org.apache.commons.cli.base.*; final Options options = new Options(); final Option helpOpt = OptionBuilder .hasArg(false) .withArgName("help") .isRequired(false) .withDescription("このヘルプ") ...
phax/ph-css の使い方
Read More// parsing css and get CSSOM final CascadingStyleSheet css = CSSReader.readFromString( ".index h1,\n" + ".index h2,\n" + ".index h3,\n" + ".index h4,\n" + ".index h5,\n" + ".index h6 {\n" + " font-family: \"ヒラギノ明朝 ProN W3\", \"HiraMinProN-W3\", serif;\n" + " font-size: large;\n" + "}", ECSSVer...
結城先生のデザパタ本マルチスレッド編 第 1 章のまとめ
複数のスレッドがインスタンスを共有している状態で、 それぞれのスレッドがインスタンスの状態を勝手に変更すると、インスタンスの安全性が失われます。
そこで、そのままではインスタンスが不定な状態に陥ってしまう範囲を定めます。 これをクリティカルセクションと呼びます。 このクリティカルセクションを synchronized を用いて 1 つのスレッドだけが実行できるようにガードします。 このようなパターンを Single Threaded Execution パターンと呼びます。
以下のようなカウンターがあったとします
Read More
結城先生のデザパタ本マルチスレッド編がサクッと読めそうだったので読み進めているので、自分用メモ。ほとんど知っている内容ではあったけど、体系的に知識が入っていなかったので、よい確認になる...。
スレッドを起動する方法は 2 つある
Read Moreclass ThreadSubclass extends Thread { private final Logger logger = LoggerFactory.getLogger(this.getClass()); public void run() { IntStream.range(0, 10).forEach(i -> logger.info(Integer.toString(i))); } } class RunnableImpl im...
この記事では Java8 で書いたメソッドを AWS Lambda に実行させ、その実行結果を API Gateway を用いて外から取得できるような簡単なアプリケーションを作成していきます。
めっちゃ雑にいうと、Java で String を返すメソッドを書いて、その文字列を返す API を作るというようなことをやります。
この際、String を返す Java のコードを実行するのが、AWS Lambda の役割で、その実行結果を取得できるエンドポイントを提供するのが API Gateway の役割になります。
また、ちょっと手を加えるだけで簡単に JSON を返す API を作ることもできるので、使い方次第では遊べるツールになるのではないでしょうか?
まず、あるエンドポイントを叩くと、ただ文字列が帰ってくるだけの API を作成しながら、AWS Lambda と API Gateway の使い方を確認していきます。
gradle で適当にプ...
Read MoreJava で論理演算を行うとき、もっぱら && と || を利用すると思います。if (isHoge() && isFoo()) { ... } 的な感じで。
これらは短絡評価されるので、たとえば false && true という式があったとして、前者を評価した時点でこの式全体は false が返ることは明らかなので、後者の true は評価されません。
こんなコードは読みたくないのですが、もし boolean を返すメソッドが副作用を持っていて、短絡評価された場合当たり前ですが、動作に影響がでます。たとえば以下のような最悪な感じのメソッドを考えてみましょう。
Read Moreprivate static boolean isTrueWithSideEffect() { System.out.println("hoge"); return true; } private static boolean isFalseWithSideEffect() { System.out.println("foo"); return fal...
Scala の trait を解剖してみた
trait Trait { val value: String = s"$getOne" def getOne: Int = 1 def getTwo: Int }
これを jad すると
Read More// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: Trait.scala import scala.Predef$; import scala.StringContext; import scala.runtime.BoxesRunTime; public abstract class Trait$class { public static int getOne(Trait ...
Scala の末尾再帰除去を実際に jad を使って確かめただけの簡単な記録。 jad の導入は以下のとおり。
brew tap homebrew/binary brew install jad
簡単な階乗関数で確認すればわかりやすい
object Math { def fact(n: Int): Int = if (n < 2) 1 else n * fact(n - 1) def fact2(n: Int): Int = { def go(n: Int, acc: Int): Int = { if (n < 2) acc else go(n -1, n * acc) } go(n, 1) } }
こんなのをコンパイルして jad でどうなっているか確認します。以下その結果。
Read Morepublic final class Math$ { public int fact(int n) { return n >= 2 ? n...
ウェブ界隈でエンジニアとして労働活動に励んでいる @gomi_ningen 個人のブログです。