プログラミング

データベースのPRIMARY KEYを自動採番せずにアプリケーション側で生成する

データベースの自動採番 データベースにはPRIMARY KEY(要はID)を自動採番で生成してくれる機能を提供していることが多い。 MySQLのAuto Increment PostgreSQLのSerial OracleのSequence etc サロゲートキーのような、特に意味のないデータのIDを発行するとき…

期間の範囲を示すパラメータ名について考えてみた #programming

概要 APIのパラメータとして期間の範囲を表す命名について、職場でいい議論がなされたので自分なりにまとめておく。 期間の範囲というのは「開始日時」「終了日時」のようなものを想定。 start-end 扱いやすそうなのはこれ。 日時の場合は、終了側が排他的で…

Javaで期間の日数を計算する #java

概要 2016年1月7日から2017年4月27日みたいな期間の日数を数える方法。 Period…惜しい 日付の期間を扱うには java.time.Period クラスがあるが、悲しいことに日数をカウントするAPIがない。 getDays() は日付だけで計算をするため、月をまたいだ日数のカウン…

データ抽出のテストにはモブプログラミングを使うといいかも #MobProgramming

モブプログラミングとは? この記事では複数人で行われるプログラミングの意です。 ペアプロの延長線上だと考えて下さい。 正確な定義とは異なるかもしれません。 参考までに以前書いた記事です。 su-kun1899.hatenablog.com データ抽出のテストって? 何ら…

モブプログラミングやってみたら最高だった #MobProgramming

今日チームでモブプログラミングを初めてやってみたのだけれど、最高だったのでテンションのままにブログを書く。 きっかけ ふりかえりでたまたまJoy.Incの話になり、あの会社は全部ペアでやってるらしく、ペアプロしたくなるという話をした。 そうしたら、…

Collectors.toMapで、同一キーを処理する #java

streamでMapに詰める Javaのstreamを使ってMapにつめかえる場合、Collectors.toMapを使う。 Map<Long, String> fooMap = fooList.stream() .collect(Collectors.toMap( Foo::getId, Foo::getName ); しかし上記の場合だと、キーが重複していた場合に IllegalStateException</long,>…

最近迷っていること: メンバーオブジェクトのアクセサを用意すべきか? #java #プログラミング

最近迷っていること。 クラスのメンバーオブジェクトのアクセサを直接定義するよりは、隠蔽してあげたほうがいいんじゃないかと思うこと。 最終的にケースバイケースだろうとは思いつつ、気にする観点やポリシーなどはまだまだ引き出しが少ない。 直接アクセ…