2022/11/22

big query 配列 uunest

 キー以外の内容はkey-valueの配列かな
RDBと違う
配列の中身を取るに UNNEST関数を使う
NESTは階層で、UNNESTは階層をなくす、平準化にする
例えば。
epは配列で
select 他のカラム、ep.key, ep.value.string_value
from xxxx, UNNEST(配列のカラム) ep

以上は検索できるが、
問題は、配列中の値の複数を条件として検索できない
ep.a=a AND ep.b=b で取れない
で、それで別々に検索して、JIONなどのSQL技で解決。
複雑なSQLになる。


SELECT GENERATE_ARRAU(11,33,2) AS some
start,end,step(default 1)

+--------------------------------------------------+
| some                                             |
+--------------------------------------------------+
| [11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33] |
+--------------------------------------------------+


GENERATE_ARRAU(1,10)


cloud spanners shard

 - record->split->node
 - どこに保存されるはprimary keyで決める
- autoIncrementの仕組みがない、順番に保存するのは特定のnodeに集中するので、望ましくない(hotspot発生)
- autoIncrement以外のIDの生成方法

uuid 1~uuid4

  - uuid1はtimestampペース、mac addressを使う
連番になる可能性
- uuid4はランダムの乱数で、分散性が高い、衝突になる可能性が0ではない

snowflake

ULID

timestampを使ってIDを生成する場合、どうしても分散率が低い。

なので、
shardId=hash(key)%N
PRIMARY KEY(shardId,分散率低い値のcolumn)
の複合キーで対応する

内部のHash関数を使う。
 - farm_fingerprint
 - など




2022/07/04

@MockkBean SpykBean

 @MockkBeanではevery文で定義しなかった関数は何も返さない関数に置き換わりますが、

@SpykBeanではevery文で定義しなかった関数はそのままオリジナルの関数の定義を引き継ぎます。

2022/06/29

What is username and password when starting Spring Boot with Tomcat?

user name: user

password: 

2022-06-29 17:17:09.586  WARN 1242 --- [           main] .s.s.UserDetailsServiceAutoConfiguration :


Using generated security password: 7b324ed9-1181-461e-bd5e-0a26ebdd3013


This generated password is for development use only. Your security configuration must be updated before running your application in production.




curl post json file

 curl -X POST -H 'Content-type:application/json' \

  --data-binary @some.json some_url

2022/02/28

2022/02/20

mac java version

久しぶりにJavaを触った。

many many jdks ...so how to mange so many jdks


  • show jdks version on your mac pc
    /usr/libexec/java_home -V

  • env is a good idea. 
    • python->pyenv
    • node->nodenv
    • ruby->rbenv
    • golang->gvm
    • java->jenv

  • install jenv
      brew install jenv
     export JENV_ROOT="$HOME/.jenv"
    echo 'eval "$(jenv init -)"' >> ~/.bash_profile
    source ~/.bash_profile
    jenv doctor

  • add jdk path to jenv
    jenv add /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home

  • use some version
    jenv local 11     

2022/02/16

Gradle The JavaExec.main property has been deprecated

deprecated gradle features were used in this build, making it incompatible with gradle 8.0.


 => add ↓ to gradle.properties

org.gradle.warning.mode=all


then 

he JavaExec.main property has been deprecated


change build.gradle


plugins {
id "application"
}
apply plugin : "java"
application {
mainClass = 'xxx.xxx'
}

then 

gradle run