Skip to content

Instantly share code, notes, and snippets.

View koji-k's full-sized avatar

koji koji-k

  • Germany
View GitHub Profile
@koji-k
koji-k / gist:5614f1331b5b8249b9b65d422be1dc45
Last active April 20, 2020 14:33
Javaのライセンスメモ

Javaは無料

無料で利用できます。
本当に無料です。もし、「Javaの勉強を始めたい」という段階の方であれば、本当に意識する必要はありません。
安心してJavaの素晴らしい世界に飛び込みましょう!

何が有料?

  • テクニカルサポートを受けたい場合(Oracleへの直接問い合わせ等)
  • 特定バージョンのJavaの長期間のバグフィックス版を使いたい場合(Oracleが提供)
  • 特殊でニッチな、普通のJavaには含まれていない機能を利用したい場合
@koji-k
koji-k / Sample1.java
Created July 24, 2018 13:56
RxJavaでIntervalを設けつつのjustの使い方
import io.reactivex.Flowable;
import java.util.concurrent.TimeUnit;
public class Sample1 {
public static void main (String... args ) throws Exception {
Flowable<Integer> flowable1 = Flowable.just(1, 2, 3).map(s -> s * 2);
Flowable<Long> flowable2 = Flowable.interval(1000, TimeUnit.MILLISECONDS);
Flowable ziped = Flowable.zip(flowable1, flowable2, (f1, f2) ->f1);
ziped.subscribe(System.out::println);
@koji-k
koji-k / README.md
Last active July 3, 2018 10:37
NonBlockingなデータストアへのアクセスについて

Client(Browser) <----> Web/App(Netty) <----> DataStore(MongoDB/PostgreSQL etc)

前提条件: NettyのEventLoop数は1とする。

DataStoreへ接続するWebアプリケーション(以下Nettyアプリ)のNonBlockingの動作予想。

  1. ClientがNettyアプリに接続(HTTPリクエスト)
  2. NettyアプリからDataStoreに接続&データ取得処理(例えばSELECT * FROM hoge
  3. ただしNonBlockingなので2番の処理が終わるのを待つこと無く速攻returnされる
@koji-k
koji-k / interpritor_sample.groovy
Created July 12, 2017 08:51
インタープリタのサンプル?
trait GOperator {
abstract execute(List args)
}
class AddOperator implements GOperator {
Object execute(List args) {
args.sum()
}
}
@koji-k
koji-k / grails-spring-security-rest-auth-memo.md
Last active July 3, 2017 13:21
GrailsのSpringSecurityRESTでの認証についてのメモ

GrailsのSpringSecurityREST(とSpringSecurityCore)を使って、RESTfulな認証を実現。

  1. クライアント(JavaScript)から、ユーザIDとパスワードをGrailsに送信
  2. 問題なければGrailsからaccess_tokenrefresh_tokenが返ってくる(とりあえずlocalStorageとかに保存)
  3. クライアントからGrailsのAPIを呼び出す際には、ヘッダーに「Authorization: Bearer サーバから貰ったaccess_token 」を指定して通信。
  4. access_tokenは制限時間有りなので、refresh_tokenを使って新しいaccess_tokenを再取得する。(できる)
     /oauth/access_tokenに対して、refresh_tokenを投げることで、2番と同様のフォーマットで新しいaccess_tokenが返ってくる。
     このパス(/oauth/access_token)は、URLMappingの設定で、permitAll(誰でもアクセス可)にしておく必要がある。 

   

@koji-k
koji-k / Bin.groovy
Created May 8, 2017 11:47
16進数(Byte)から2進数の文字列を得る
class Bin {
Integer maxBit = 8
Byte b
String binaryString
String latestPaddingPrefix
static of (Integer b) {
new Bin(b as Byte)
}
@koji-k
koji-k / load_file_from_groovysh.groovy
Last active April 12, 2017 12:41
groovyshから起動するスクリプト
a = 1
b = 10
r = (a..b).collect {
it * 2
}.inject {l,r ->
l + r
}
println r
@koji-k
koji-k / tori.groovy
Created April 3, 2017 13:24
トリボナッチ数
def tori = {Long n ->
List result
if (n <= 2) {
result = [0]
} else if (n == 3) {
result = [0, 0, 1]
} else {
result = (4..<n).inject([0, 0, 1] as Queue){queue, i ->
queue.offer(queue.sum())
queue.poll()
@koji-k
koji-k / delegation_oop_sample.groovy
Last active February 28, 2017 16:58
委譲のサンプル
trait Persistence {
abstract Boolean save(String text)
}
class Cloud implements Persistence {
Boolean save(String text) {
println "save to cloud: ${text}"
}
}
<?php
class Introduce {
    private $arraylist = array();

    public function regist($num) {
        $this->arraylist[] = $num; 
    }

 public function show() {