argius note

プログラミング関連

重み付き乱数列の生成 (Java)

個人的なコードを書いている中で、重みを付けた乱数列が必要になりました。
具体的には、数が大きいほど発生頻度が高くなるような乱数の生成です。

これについて、どうするのが一般的なのか知らなかったので、調べてみました。
(結論から言うと、一般的な方法がこれ、というのは分かっていません。)


計算式自体は言語を問いませんが、実装例はJavaを使っています。

続きを読む

PostgreSQLでbigintのid列を後付けでbigserialに変換する方法

短い記事です。

PostgreSQLのバージョンは、9.4.5です。

create as select ...でテーブルを作ったら、bigserialにすべきidbigintのままになっていて、アプリがコケていたというお粗末な話。


後からbigserialにできるのかどうか知らなかったので、とりあえずalter table column ...で変えようとしたけど、上手く行きませんでした。



調べた結果、参考にしたページはこちら。

求めていた答そのものがありました。
bigserialは実際のデータ型ではなく、create文のときに使える一種のコマンドのようなものらしいです。



スキーマschema1、テーブルをtable1とすると、以下のようにすれば
schema1.table1.idは、bigintpkeyです。

create sequence schema1.table1_id_seq;
select setval('schema1.table1_id_seq', 1500); -- idを1500から始める
alter table schema1.table1 alter column id set default nextval('schema1.table1_id_seq');
alter sequence schema1.table1_id_seq owned by schema1.table1.id;


シーケンスの開始値は、キリの良い数値にしたかったので固定値をセットしましたが、select max(id) + 1 from ...で取った方が良いかもですね。

Spring Web MVC をすぐに使いたい人のためのメモ

すぐに使いたかったのは私です。

これは主にリンク集で構成されている短めの記事です。
この際Spring Bootに入門してしまいたい方は、最後の方のリンクを参照してください。

続きを読む