タグ

ブックマーク / cero-t.hatenadiary.jp (6)

  • Verificationについて - 谷本 心 in せろ部屋

    このorderメソッドの中で、itemオブジェクトの属性に 矛盾がないかどうかの整合性チェック(Verification)を行ないます。 Webアプリケーションを作るなら、まずサービス設計をする。 - 谷 心 in せろ部屋 なにげにVerificationと書きましたが、 これについて、以前も書いたことがあります。 http://d.hatena.ne.jp/cero-t/20070731/1185892239 要するに、バリデーションは「ユーザビリティ向上」のためと捉えて、 それ以上のものは、全部Verificationで行ないます。 Verificationまで到達した段階で、 想定される用途で使っていたユーザーには、正常にデータをコミットさせますが 悪意を持って、あるいは意図しない操作を行なったユーザーには、エラーを返します。 ただ、Verificationのコードは、バリデーシ

    Verificationについて - 谷本 心 in せろ部屋
    ikosin
    ikosin 2025/04/11
  • ValidationとVerification - 谷本 心 in せろ部屋

    こないだのドン引き最終回でもチラっと出た、これ。 ValidationとVerification。 言葉的には「妥当性の確認」と「検証」なんだけど、 ここでは「画面入力のチェック」と「サービスの引数チェック」って事にしておく。 図にするとこんな感じ。 Webアプリケーションのセキュリティでウダウダ言ってる問題って 実は、この2種類に分ければ、随分と上手く整理できそうなんですよね。 ときに、 フレームワーク使って開発してると、バリデーションの責務が増えがち。 だって、バリデータとロジックの双方でチェックなんてしたくないから。 だから複数フィールドバリデータとか、無理してキモい事やったり バリデータからDBにアクセスしたり、おいおい、それ何てLogic? みたいな状況になる。 逆に、バリデータはソコソコに、ロジックできっちりチェックすると 決めてるプロジェクトも多いと思うんだけど、 そんな場合

    ValidationとVerification - 谷本 心 in せろ部屋
    ikosin
    ikosin 2025/04/11
  • 100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋

    要約 技術的な話だけ教えて、という方のために先に結論だけ書いておきますと、PostgreSQLはクエリを実行した時点で全レコードの情報を一気に読んできてヒープを埋めてしまう場合がある、ということ話です。 たとえば、ResultSet#nextメソッドを使いながら処理を回すようなコードを書いて、少ないヒープでも処理できるようにするのは常套手段だと思いますが、そういうコードを書いていても一気にヒープを消費してしまうことがあるのです。詳しくはこのドキュメントを見てください。 https://jdbc.postgresql.org/documentation/head/query.html#query-with-cursor ことの発端 ちょっと仕事Java + jOOQ + PostgreSQLで、DBのデータを集計するようなバッチ処理を書いてまして、もちろん俺様の書いたコードにバグなんてある

    100万件ぐらいのレコードを扱ったらOOMEが出た話。 - 谷本 心 in せろ部屋
    ikosin
    ikosin 2020/08/13
    原因追求の手順が参考になる
  • AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋

    以前のエントリーで、AWS LambdaJavaを使ってDynamoDBを呼び出した際に、初回起動にとても時間が掛かったという話を書きました。 http://d.hatena.ne.jp/cero-t/20160101/1451665326 今回は、この辺りの原因をもう少し追求してみます。 なぜ1回目と3回目のアクセスが遅いのか? AWS Lambdaの中身はよく知りませんが、おそらく、アップロードしたモジュールをTomcatみたいなコンテナとして起動させて、外部からコールしているんだろうと予想しました。それであれば、2回目以降のアクセスが早くなることは理解ができます。 ただ、1回目と3回目だけが極端に遅くて、2回目、4回目以降は早くなるというところは腑に落ちません。 その辺りを調べるべく、staticなカウンタを使って、値がどんな風に変化するかを調べてみました。 こんなソースコードです

    AWS Lambda + Javaは、なぜ1回目と3回目の処理が重いのか? - 谷本 心 in せろ部屋
    ikosin
    ikosin 2016/01/07
  • https://cero-t.hatenadiary.jp/entry/20151212/1449929908

    ikosin
    ikosin 2015/12/21
  • BootのO/RマッパーにMyBatisを使いたい。 - 谷本 心 in せろ部屋

    DBアクセス層に何を使うかって、当によく話題になりますよね。 「これで間違いないでしょ」っていう鉄板の選択肢がないから、だと思うわけですが 「SQLを書きたい日人」な僕としては、消去法的にMyBatisを使っています。 消去法って言うからには、消えた選択肢があるわけで。 Hibernate : アイドントライク ハイバネートサン JPA : アイドントライク ハイバネートサン Doma : アイドントライク APT S2JDBC : キャノット ユーズ ウィズ スプリング DBflute : 少し文化が違うんです。 Mirage : 開発止まっちゃったし。 ホントはMirageあたりが大好物で、過去に実案件に投入した時には まったく問題が起きなくて素晴らしかったのですが 開発が止まっていることと、実績的なアレでなかなか使いにくいんです。 そんなわけで消去法的に残ったMyBatisを使う

    BootのO/RマッパーにMyBatisを使いたい。 - 谷本 心 in せろ部屋
    ikosin
    ikosin 2014/12/13
  • 1