はてなブックマークアプリ

サクサク読めて、
アプリ限定の機能も多数!

アプリで開く

はてなブックマーク

  • はてなブックマークって?
  • アプリ・拡張の紹介
  • ユーザー登録
  • ログイン
  • Hatena

はてなブックマーク

トップへ戻る

  • 総合
    • 人気
    • 新着
    • IT
    • 最新ガジェット
    • 自然科学
    • 経済・金融
    • おもしろ
    • マンガ
    • ゲーム
    • はてなブログ(総合)
  • 一般
    • 人気
    • 新着
    • 社会ニュース
    • 地域
    • 国際
    • 天気
    • グルメ
    • 映画・音楽
    • スポーツ
    • はてな匿名ダイアリー
    • はてなブログ(一般)
  • 世の中
    • 人気
    • 新着
    • 新型コロナウイルス
    • 働き方
    • 生き方
    • 地域
    • 医療・ヘルス
    • 教育
    • はてな匿名ダイアリー
    • はてなブログ(世の中)
  • 政治と経済
    • 人気
    • 新着
    • 政治
    • 経済・金融
    • 企業
    • 仕事・就職
    • マーケット
    • 国際
    • はてなブログ(政治と経済)
  • 暮らし
    • 人気
    • 新着
    • カルチャー・ライフスタイル
    • ファッション
    • 運動・エクササイズ
    • 結婚・子育て
    • 住まい
    • グルメ
    • 相続
    • はてなブログ(暮らし)
    • 掃除・整理整頓
    • 雑貨
    • 買ってよかったもの
    • 旅行
    • アウトドア
    • 趣味
  • 学び
    • 人気
    • 新着
    • 人文科学
    • 社会科学
    • 自然科学
    • 語学
    • ビジネス・経営学
    • デザイン
    • 法律
    • 本・書評
    • 将棋・囲碁
    • はてなブログ(学び)
  • テクノロジー
    • 人気
    • 新着
    • IT
    • セキュリティ技術
    • はてなブログ(テクノロジー)
    • AI・機械学習
    • プログラミング
    • エンジニア
  • おもしろ
    • 人気
    • 新着
    • まとめ
    • ネタ
    • おもしろ
    • これはすごい
    • かわいい
    • 雑学
    • 癒やし
    • はてなブログ(おもしろ)
  • エンタメ
    • 人気
    • 新着
    • スポーツ
    • 映画
    • 音楽
    • アイドル
    • 芸能
    • お笑い
    • サッカー
    • 話題の動画
    • はてなブログ(エンタメ)
  • アニメとゲーム
    • 人気
    • 新着
    • マンガ
    • Webマンガ
    • ゲーム
    • 任天堂
    • PlayStation
    • アニメ
    • バーチャルYouTuber
    • オタクカルチャー
    • はてなブログ(アニメとゲーム)
    • はてなブログ(ゲーム)
  • おすすめ

    ブラックフライデー

『開発思考実験日記』

  • 人気
  • 新着
  • すべて
  • 値に有効期間を持つマスタデータの設計パターン - 開発思考実験日記

    3 users

    dotnetmemo.hatenadiary.org

    値に有効期間を持つマスタデータの設計パターンを整理してみました。FowlerのTemporal Patternsであげられているものを参考にしました。 設計パターンとしては大きく3つの方法を考えました。 有効期間ごとにマスタデータを保持している(Temporal Object) マスタデータが有効期間ごとに属性を保持している(Temporal Property) マスタデータが有効期間ごとに別マスタとの関連を保持している(Effectivity) さらに、トランザクションデータから過去や未来のマスタデータを識別子で直接参照できるようにするかしないかで分類すると、最初のパターンのTemporal Objectを、直接参照できるパターンと出来ないパターンの2つに分類できます。ちなみにTemporal Propertyは属性をValueオブジェクトとして表現しているだけなので直接参照できません。

    • 暮らし
    • 2014/03/04 10:53
    • C#でMapReduceを作成して実行する - 開発思考実験日記

      3 users

      dotnetmemo.hatenadiary.org

      MapReduce MapReduceはHadoop上で分散処理するためのプログラミングパターンです。言わずと知れたものですよね。 Hadoop Streaming Java以外の言語でMapReduceを作成する場合、Hadoopストリーミングを利用します。仕組みは簡単でデータを標準入出力を介して受け渡す方式です。標準入力からテキストデータを受け取り、標準出力にテキストデータを出力することでHadoop側とやり取りを行います。コンソールアプリを作成すれば標準入出力を行うプログラムが作成できますので、今回はこの方式でMapReduceを作成します。 サンプル お題はMapReduceのチュートリアルといえばこれ、ワードカウントのサンプルで、Running HDInsight C# Hadoop Streaming Sampleのサンプルを参考にしました。 Mapperコード using S

      • 暮らし
      • 2014/02/16 17:59
      • ASP.NET MVCを利用した業務アプリについて - 開発思考実験日記

        3 users

        dotnetmemo.hatenadiary.org

        今年はASP.NET MVCを利用したアプリケーション開発に携わったのでその感想をまとめます。 軽量・小回りが利く ASP.NET WebFormに比べて出力するHTMLを全てコントロール可能でシンプルなHTMLを出力することができます。このためCSSやJavaScript(jQuery)の利用も直観的で相性も良いです。 WebFormに比べ欠点としてはVSデザイナによる画面作成ができない点がありますが、実行すれば画面確認できるので、微調整はHTML修正保存・ブラウザ更新のサイクルで行えばそれほど苦になりません。またテーブル形式にタグを配置したり用のレイアウトを支援するヘルパーを作成するなどの工夫をすることができます。今回、タブレットとPC両方がターゲットでリキッドレイアウトが基本なのでこの仕組みは役に立ちました。 HTMLメッセージパターン 今回ほぼ全てのリクエストをajaxで行います。

        • テクノロジー
        • 2013/01/01 13:08
        • お手軽ビジネスルール管理(BRMS) - 開発思考実験日記

          3 users

          dotnetmemo.hatenadiary.org

          最近BRMSという言葉とよく聞くようになりました。言葉だけは以前から知っていいて昔のエキスパートシステムの派生版のように思っていました。しかし、現在はより広範囲に、(少し違和感を感じますが)プログラムの自動生成的なものにもBRMSという言葉を使うケースもあるようです。 今回は前者のエキスパートシステムで利用されるIF−THEN型ルール実行エンジンを.NET環境でお手軽に導入できるので紹介します、 WF(Windows Workflow Foundation)ビジネスエンジン ビジネスルールを実行するためのエンジンは実は.NET FrameworkのWFに以前から用意されています。どのような機能があるかはWindows Workflow Foundation ルール エンジンの紹介を参考にしてもらえば分かると思いますが、このルールエンジンはワークフローデザイナで利用するのが一般的なのですが、

          • テクノロジー
          • 2012/04/21 11:30
          • .NET
          • WPFのDataGridヘッダーを2段組にする方法 - 開発思考実験日記

            5 users

            dotnetmemo.hatenadiary.org

            簡単にできるかなと思って手をつけたのですが案外大変です。 最初のDataGrid まずは出発点となるDataGridですが以下のような3つの列を持つものです。 ヘッダーを2段にする ヘッダーを2段にする方法をまず検索したところいくつかアイデアが見つかりました。大まかに分けてDataGridのDataGridColumnHeaderのレイアウトと変える方法とDataGridの上部にGridを配置する方法です。どちらも試した見たのですが、後者の方がColumnSpanがし易そうなので採用しました。 WPF multi-column super headerを参考にコードを追加しました。 Elementバインドを利用してDataGridのリサイズにも対応できています。しかし問題があります。まず横スクロールに対応していません。また上部ヘッダーでカラムのリサイズ機能が利用ができないです。順番に対処を

            • テクノロジー
            • 2012/03/27 17:48
            • WPF
            • DataGrid
            • .NET
            • プログラミング
            • C#のvolatileって結局なんの効果があるの? - 開発思考実験日記

              7 users

              dotnetmemo.hatenadiary.org

              volatile 修飾子 C#にはvolatileという修飾子がある。MSDNのC# リファレンスでは以下のように説明している。 volatile キーワードは、同時に実行中の複数のスレッドによってフィールドが変更される可能性があることを示します。 volatile と宣言されているフィールドは、シングル スレッドによるアクセスを前提とする、コンパイラの最適化の対象にはなりません。このため、フィールドには常に最新の値が含まれます。 volatile 修飾子は、通常、アクセスをシリアル化する lock ステートメント (C# リファレンス) ステートメントが使用されない場合に複数のスレッドによりアクセスされるフィールドに対して使用します。 まず、前半部分は他のスレッドより変更される可能性があるフィールドに対して最適化を禁止するためのもの、これはまあまあ想像できる。以下のようなコードでコンパイ

              • テクノロジー
              • 2011/11/25 10:31
              • C#
              • volatile
              • いま.NETで業務アプリを作成するんだったらRIA Serviceフレームワークを利用する - 開発思考実験日記

                4 users

                dotnetmemo.hatenadiary.org

                今.NETで業務アプリを作成するのであればRIAService+Silverlightを使うことを勧めするだろうな。理由は高い生産性。 サーバー側の仕組みはEntity FrameworkとRIA Serviceで本当に簡単に作成できるし、クライアント側についてもRIA Serviceの呼び出しやエンティティを生成してくれる。しかも、アグリゲータやプレゼンテーションモデルの概念が組み込まれているので単なるテーブルのCRUDレベルではない機能についても十分実用的に利用できる点が素晴らしい。 RIAアプリが簡単に作れる どの程度の手間でアプリが作成できるか、AdventureWorksLTデータベースを使って以下のようなTreeViewをカテゴリを選択して製品一覧を表示し編集できる画面を作成したみた。 RIAServiceのプロジェクトを作成 まず最初にRIAServiceのプロジェクトを作成

                • テクノロジー
                • 2011/10/31 09:35
                • .NET
                • SQL Serverに1億件のテストデータを高速に作成する - 開発思考実験日記

                  37 users

                  dotnetmemo.hatenadiary.org

                  SQL Serverに1億件を超える大量のテストデータを作成する必要がありできるだけ高速な方法を調べてみた。 ストプロを試してみる まずはストプロを作成してどの程度になる確認してみる。単純にループを回してINSERTを1件づつ行う方法でまずは100万件で試してみる。 ALTER PROCEDURE dbo.CreateData AS SET NOCOUNT ON DECLARE @RowCount INT SET @RowCount = 0 WHILE @RowCount < 1000000 BEGIN INSERT INTO TestTable VALUES (@RowCount, 'DATA' + right('0000000000' + convert(varchar, @RowCount), 10)) SET @RowCount = @RowCount + 1 END RETURN

                  • テクノロジー
                  • 2011/10/17 08:49
                  • SQL Server
                  • SQLServer
                  • sql
                  • ソフトウェアテスト
                  • insert
                  • MySQL
                  • MVVMアプリケーションにおけるメモリリーク対策 - 開発思考実験日記

                    5 users

                    dotnetmemo.hatenadiary.org

                    フレームワークレベルでは丁寧なメモリリーク対策が必要と思いますが、アプリケーションレベルではメモリリークに対して神経質なコードを書かなくても良いと思っています。 ライフサイクルの長いオブジェクトを識別し管理する メモリリークの定義もいろいろありますが、少しぐらいViewやViewModelのインスタンスが残る程度は問題にせず、継続的にメモリが増加するような場合について対策できていれば多くのアプリでは問題にならないのではないでしょうか? ようは、MVVMのViewやViewModel、Modelのライフサイクルがそれほど長くないのであればお互いが参照していても問題が発生しないという考え方で、あとは、ライフサイクルの長いオブジェクトを識別して適切に管理するという、一般的なメモリリーク対策に落とし込むアイデアです。 MVVMの長いライフサイクルをもつオブジェクトとしては、Viewであれば起動時の

                    • テクノロジー
                    • 2011/08/10 04:29
                    • windows
                    • MVVMについて - 開発思考実験日記

                      3 users

                      dotnetmemo.hatenadiary.org

                      MVVMをかなり使い込んで来たのでいろいろまとめたい内容があるのだがなかなか時間がとれない。 とりあえずポイントをメモ書きしておく 業務アプリでのMVVMでのメリットは テスト性の向上などはあるが、最大のメリットはテクノロジ非依存に画面ロジックを作成でき保守性・移植性が高くできる点を挙げておこう。 逆にデメリットは ViewとViewModelの分離など設計時の初期コストが高くてっとり早く作れない点だろう。 MVVMの設計ポイント 以下の3つの要素に分けて画面を整理する コマンド ユーザ操作に対する処理でViewModel上のデータや状態に対して影響を与える処理。ViewModel上のメソッドとして実装される。 データ ユーザが確認・入力する情報。ViewModel上で論理的に適切な構造で保持されプロパティとして実装される。Viewで適切な形式に変換して表示し、入力されたデータはViewM

                      • テクノロジー
                      • 2011/03/08 12:04
                      • .net
                      • C#でシンボルを実現する - 開発思考実験日記

                        13 users

                        dotnetmemo.hatenadiary.org

                        これはいい。 Symbols in C# 3.0 http://themechanicalbride.blogspot.com/2007/03/symbols-on-steroids-in-c.html 以下のようにobjectクラスを拡張すると public static string GetPropSym<TObj, TProp>( this TObj @this, Expression<Func<TObj, TProp>> expression) { return ((MemberExpression)expression.Body).Member.Name; } ラムダ式を使ってプロパティをシンボルのように使える。タイプセーフになる。 public class Hoge { public string Name { get; set; } } class HogeTest { pu

                        • テクノロジー
                        • 2009/09/13 20:14
                        • C#
                        • .net
                        • 開発思考実験日記

                          4 users

                          dotnetmemo.hatenadiary.org

                          1年に1回だけの記事ですが今年もふりかえりをします。 Keep ・自転車と水泳はずっと続いている。今年は念願の北海道に輪行ツーリングしてきた。留萌から羽幌・稚内、利尻島、旭川、富良野と周ってきた。楽しかった。来年も北海道には行きたい。 ・週休3.5。仕事量を減らしてもらった。1,2週間程度の休みも何度か取れらしてもらっていい感じで働くことができた。来年も続けることができるかはわからないが、可能であればこのペースは気に入ってるので続けたい ・ChatGPTの利用。去年のふりかえりにGPT-3をあげているけどLLMの進化の早さに驚いている。プログラミングやデータ分析などで使っているけど素晴らしい。AGIを予感させるというか個人的には今のレベルで汎用性が高くAGIと言ってもいいように感じる Less of ・FX。去年と逆でサヤ取りが封鎖されたので。ただ新しい方法を現在探索しているので復活はある

                          • テクノロジー
                          • 2009/05/21 21:41
                          • AdventureWorksをモデリングしてDDDしながらドメインモデルで実装してみる(1) - 開発思考実験日記

                            10 users

                            dotnetmemo.hatenadiary.org

                            都合の良いシナリオでサンプルを作成するのではなく、既存のDBを使って実際に概念モデリングを行い、ドメイン駆動設計からドメインモデルにつなげて行きたいと思います。 ターゲットのデータベース AdventureWorksのテーブル定義はここにあります。並べるとこれだけです。それなりにあります。 Address ProductModelProductDescriptionCulture AddressType ProductPhoto AWBuildVersion ProductProductPhoto BillOfMaterials ProductReview Contact ProductSubcategory ContactCreditCard ProductVendor ContactType PurchaseOrderDetail CountryRegion PurchaseOrder

                            • テクノロジー
                            • 2009/05/13 11:29
                            • DDD
                            • Modeling
                            • 設計
                            • テスト代替の連続性について検討する - 開発思考実験日記

                              3 users

                              dotnetmemo.hatenadiary.org

                              テストをするために利用するコード「テスト代替(Test Doubles)」には様々な形態があり連続して利用されるという点を説明した良い記事です。Mocks Aren't Stubsと併せて読むのがお勧め。 ダミー ダミーは必要なパラメータを埋めることだけを目的とする。実際に呼び出されないということから、コンパイラをとパスすために利用。作成が極めて容易だが有効性は低い。 internal class DummyShopDataAccess : IShopDataAccess { public decimal GetProductPrice(int productId) { throw new NotImplementedException(); } public void Save(int orderId, Order o) { throw new NotImplementedExcepti

                              • 暮らし
                              • 2007/09/05 00:21
                              • test
                              • dev
                              • ドメインモデルをLINQで構築する - 開発思考実験日記

                                3 users

                                dotnetmemo.hatenadiary.org

                                まだまだLINQについて調べたいことはたくさんあるが、とりあえず、いくつかのドメインモデルのパターンを作成したので振り返りまとめとします。 ORMとしてLINQ to SQL 一言でいってよくできたORMフレームワークです。 Expression TreeをSQLに変換するアイデアは、直前まで実行を遅延することができより的確なSQL文を発行できる点や、Expression TreeをQuery Objectとしてビジネスロジックで検索条件を記述でき・しかも型付きである点などは便利だと感じました。また、オブジェクト更新などのトラッキング機能や今回書きませんでしたがオブジェクトのキャッシュ機能など細かな点もよく考えられています。個人的には複数のテーブルにまたがるオブジェクトの読み出しや永続化のより細かな制御が行えるようにもう少し強化してもらいたい点はありますが汎用的なORMとしてはこのあたりが

                                • テクノロジー
                                • 2007/08/20 11:29
                                • development
                                • 遅延ロードを避ける - 開発思考実験日記

                                  3 users

                                  dotnetmemo.hatenadiary.org

                                  シンプルなドメインモデル実装 ドメインモデルを作成するときに、遅延ロードを利用すると、データアクセスのコストやロック、トランザクションなど様々なことを意識する必要がありかなり難しくなります。ドメインモデル実装が難しいという方の意見としても遅延ロードを上げる方が多いように思います。逆に考えれば、遅延ロード機能を利用しなければかなりシンプルに実装することが可能になるということです。 リーズナブルなデータアクセス 遅延ロードを利用すると、関連データをアクセス時までモデルに読み込みことを保留することで不必要なメモリ消費や余計なデータアクセスを避けるメリットがあります。逆に遅延ロードを利用しないと大量のメモリと多くのデータアクセスを引き起こす可能性があります。なので、遅延ロードを避けるのであれば、この点についてうまい方法が必要になります。明らかに不必要なデータを読み込むことを避け、必要と予想されるデ

                                  • 世の中
                                  • 2007/07/29 00:31
                                  • IEのクローズ処理をハンドリングする - 開発思考実験日記

                                    8 users

                                    dotnetmemo.hatenadiary.org

                                    普通はそんなの難しいからあきらめてもらうのだが、どうしてもやりたいというので考えることにした。 まずは、Googleで調べてみるとそれなりにHITする。みんな苦労しているんだな。 onbeforeunload 最初にたどり着いたのは、onbeforeunload イベントを利用する方法。onbeforeunload は ページがアンロードされる前に発生するものなので、リンクを押したりしたりするだけでも発生する。なので、クローズ以外でも発生することが問題になり、これを対策する必要がある。がんばってみよう。 よく利用されている対策は、onbeforeunloadイベントが発生した際の event.clientYやevent.clientXを調べて0より小さい場合はCloseだと判断する方法である。しかし、この方法だと更新ボタンを押してもCloseだと判断してしまう問題がある。 これを対策する方

                                    • テクノロジー
                                    • 2007/01/27 01:22
                                    • IE
                                    • JavaScript
                                    • .net
                                    • HTML
                                    • プログラミング
                                    • programming
                                    • TIPS
                                    • Windows Formの検証機能 - 開発思考実験日記

                                      7 users

                                      dotnetmemo.hatenadiary.org

                                      Windows Formの検証機能は2.0で大幅に強化されそれなりに実用的になっている。 しかし、案外癖があって???状態になることも多い。 以前部分的に書いたことがあったのだが、利用上のポイントを簡単にまとめてみたい。 Validatingイベント 最初にWindows Formで検証を行うために用意された最も基本的な仕組みは各コントロールのValidatingイベントである。 Validatingイベントの処理では入力された値のチェックを行い、もしエラーがあればエラーメッセージを表示したりする処理を記述する。CancelEventArgsのCancelプロパティをtrueにするとそのコントロールにフォーカスを残すことができる。 private void textBox1_Validating(object sender, CancelEventArgs e) { int work; i

                                      • テクノロジー
                                      • 2007/01/26 10:51
                                      • Visual Studio
                                      • .net
                                      • ドメインモデルでどうやって一意制約チェックを実装するか - 開発思考実験日記

                                        3 users

                                        dotnetmemo.hatenadiary.org

                                        まずは、ナイーブなOO的な発想?で、全てのデータをメモリに読み込んでやる方法。これは基本的には難しいですよね。よっぽど少数のデータであればOKかも知れませんが。 次は、ドメインモデルでやらないで、その手前の処理(入力チェックなど)で行う方法が考えれますね。この方法はドメインモデルとして一意制約チェックをする方法にはならないので今回はNGですが、個人的にはこの方法はよく利用します。ドメインモデルをある程度理想的な条件が成り立っているモデルとすることで、複雑さを低減することができます。 では、どうするか? チェックは検証ルールと考えればいいので、ドメインモデルでは対応する検証ルール用のクラスすなわち一意制約用の検証Specクラスを作成して利用するようになります。チェック方法は、Repository経由でチェックするIDのオブジェクトを読み出せるかどうかで簡単に判断できます。 public cl

                                        • テクノロジー
                                        • 2006/10/13 23:33
                                        • 設計

                                        このページはまだ
                                        ブックマークされていません

                                        このページを最初にブックマークしてみませんか?

                                        『開発思考実験日記』の新着エントリーを見る

                                        キーボードショートカット一覧

                                        j次のブックマーク

                                        k前のブックマーク

                                        lあとで読む

                                        eコメント一覧を開く

                                        oページを開く

                                        はてなブックマーク

                                        • 総合
                                        • 一般
                                        • 世の中
                                        • 政治と経済
                                        • 暮らし
                                        • 学び
                                        • テクノロジー
                                        • エンタメ
                                        • アニメとゲーム
                                        • おもしろ
                                        • アプリ・拡張機能
                                        • 開発ブログ
                                        • ヘルプ
                                        • お問い合わせ
                                        • ガイドライン
                                        • 利用規約
                                        • プライバシーポリシー
                                        • 利用者情報の外部送信について
                                        • ガイドライン
                                        • 利用規約
                                        • プライバシーポリシー
                                        • 利用者情報の外部送信について

                                        公式Twitter

                                        • 公式アカウント
                                        • ホットエントリー

                                        はてなのサービス

                                        • はてなブログ
                                        • はてなブログPro
                                        • 人力検索はてな
                                        • はてなブログ タグ
                                        • はてなニュース
                                        • ソレドコ
                                        • App Storeからダウンロード
                                        • Google Playで手に入れよう
                                        Copyright © 2005-2025 Hatena. All Rights Reserved.
                                        設定を変更しましたx