タグ

patternに関するa2ikmのブックマーク (20)

  • Go の channel 処理パターン集 | Hori Blog

    Hori Blogフリーランスでバックエンドエンジニアとして活動している Ryota Hori のブログです。 最近はテック系記事より雑記ブログ気味。 この記事は Go Advent Calendar 2017 の 1 日目の記事です。 Go の長所に goroutine による非同期処理がありますが、どうしても channel の取り回しで黒魔術化しがちです。少しでも闇を減らしていきたいので、 channel らへんの取り回しについてパターンをまとめました。チートシート的に使えれば嬉しいです。 Go の channel の基礎 入門資料として使いたいので、題に入る前にざっくり基礎を。 定義のパターン channel には capacity という概念があります。 capacity は channel 内でバッファリングしておける容量のことで、 capacity に空きが無い場合は送信側

    Go の channel 処理パターン集 | Hori Blog
  • 補正トランザクション | Microsoft Docs

    このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 一連のステップで構成される最終的に整合性がある操作を使用するときは、補正トランザクション パターンが役立ちます。 具体的には、1 つ以上のステップが失敗した場合、補正トランザクション パターンを使用して、ステップで実行された作業を元に戻すことができます。 通常、最終的整合性モデルに従う操作は、複雑なビジネス プロセスとワークフローを実装するクラウド ホスト型アプリケーションで見受けられます。 コンテキストと問題 クラウドで実行されるアプリケーションでは、データが頻繁に変更されます。 このデータは、異なる地理的場所にあるさまざまなデータ ソースに散在している場合があります。 分散環境で競合を回避しパフォーマンス

    補正トランザクション | Microsoft Docs
  • https://github.com/kufu/activerecord-bitemporal/blob/master/README.md

    https://github.com/kufu/activerecord-bitemporal/blob/master/README.md
  • プロビジョニングツールにおける設定ファイルの管理方法について - Qiita

    プロビジョニングツールでミドルウェアの設定ファイルを管理する時の方式について論じる。 例えば nginx の conf を管理するとして、管理しているアプリが10個ほどあり、それぞれのアプリで微妙に conf が異なるとする。 1. テンプレート方式 その場合、典型的には nginx.conf を erb などでテンプレート化すると思う。そして、異なるパラメータを erb 内の変数で埋めたり、場合によっては、パラメータで分岐させたりする。 まぁ、普通かな、という気はするがこの方式を取ると、ロジックが入り込んで複雑怪奇、完成系が erb を見ただけで予測できない、複雑なので単体テストが必要、などの問題が生じてくる。規模が大きくなるほど複雑さが増して来る。 2. ファイル分離方式 そこで、提案したい設定ファイルの管理方法がファイル分離方式である。アプリごとに conf が異なるならば、ファイル

    プロビジョニングツールにおける設定ファイルの管理方法について - Qiita
  • コンテナのデザインパターンを学べる論文「Design patterns for container-based distributed systems」を読んだ - kakakakakku blog

    2016年に USENIX Conference で発表された論文「Design patterns for container-based distributed systems」を読んだ.タイトルの通り,コンテナのデザインパターンがまとまっていて,これからコンテナ設計をする人も,既にコンテナを運用している人も,デザインパターンを学べるのは価値があると思う.一部ミスリードをしているかもしれない. Design patterns for container-based distributed systems 論文も公開されている. https://static.googleusercontent.com/media/research.google.com/ja//pubs/archive/45406.pdf パターン一覧 Single-container management pattern

    コンテナのデザインパターンを学べる論文「Design patterns for container-based distributed systems」を読んだ - kakakakakku blog
  • The Ruby Module Builder Pattern

    There’s an interesting pattern I’ve discovered recently in Ruby that is very powerful, yet apparently not widely known or appreciated.1 I call this pattern the Module Builder Pattern. I’ve used it heavily in designing Mobility, a pluggable translation framework I released a couple months ago, and it served me so well I thought I should share what I’ve learned. At its core, the Module Builder is an

    The Ruby Module Builder Pattern
  • RubyでNull Objectパターンを使えるようにするgem「Naught」のすすめ - Qiita

    Null Objectパターンの実装を支援するgemとして、Naught というgemがあるのですが、Qiitaでは、業界のjoker1017さんの 俺がGitHubでスターを付けたリポジトリ一覧 という記事ぐらいしか見つからなかったので、その使い方と有用性をざっくり説明したいと思います。 Null Objectパターン is 何? 私も最近になって知ったのですが、 こちらの記事 NullObjectパターン によると、 あるオブジェクトが nil でなければ、メソッドを呼び出す こういうパターンが頻出する場合、obj に nil の代わりに何もしないメソッドを持つオブジェクト を格納しておく インターフェースだけ持って、何もしないオブジェクトを用意することで、 そのオブジェクトを使う側は、オブジェクトが生成されなかった場合を気にする必要がなくなる → オブジェクトの状態を意識する必要が無

    RubyでNull Objectパターンを使えるようにするgem「Naught」のすすめ - Qiita
  • form objectを使ってみよう - メドピア開発者ブログ

    こんにちは。メドピアのRuby(Rails)化をお手伝いしている@willnetです。 Ruby化のプロジェクトが始まって1年が過ぎました。新しいメンバーも入り、Railsのコード量は日に日に多くなっています。可読性を保ちつつアプリケーションを大きくしていくために、使える知見をチームメンバーに効率よく伝えていくのが大事だと感じる今日このごろです。 普段メドピア内ではコードレビューや社内勉強会などで知識のシェアを行っています。そんなとき、ブログ記事や書籍などのまとまった文章があると「これ読んでおいて」と言うだけで良くなるので楽です。先日form objectを使ったほうがいいですよーという内容でレビューコメントをつけようとしたところ、日語で詳しくまとまった文章が見当たりませんでした><なければ自分で書くしかありません。そこで今回はRailsにおいて可読性を保つための知見である、form o

    form objectを使ってみよう - メドピア開発者ブログ
  • マイクロサービスのデザインパターン

    第1版 2015年9月21日 第2版 2015年12月24日 Bluemixでは,たくさんのサービスやAPIが提供されており,それらを組み合わせることでアプリケーションを開発することができます.単一のプログラム言語を使って,多数のライブラリやクラスファイルを結合して作る大きなアプリケーションにももちろん利点がありますが,新しい機能やUXを継続的に提供したい時や,目的に合わせてプログラミング言語やデータベースを選択したい場合には,それぞれが独立したサービスを組み合わせるやり方が有利です.この考え方の根底にあるのが,James LewisとMartin Fowlerが提唱しているマイクロサービスです.彼らのブログ記事にあるマイクロサービスの定義にあたる部分を訳してみました. マイクロサービス(Microservices)アーキテクチャスタイルは、それぞれが独立のプロセスで実行され,HTTPリソ

    マイクロサービスのデザインパターン
  • CDP:Bootstrapパターン - AWS-CloudDesignPattern

    解決したい課題 マシンイメージからサーバーを作成する方法、すなわちStampパターンの適用に際し、どの程度の頻度でマシンイメージを取得するかは運用効率に対する課題として、しばしば議論となる。 Stampパターンでは、ミドルウエアからアプリケーションまですべてが設定済みで、立ち上げるだけでそのまま動くマシンイメージを作成することもできる。この場合、仮想サーバーの起動は非常に早いが、ミドルウエアの一つをバージョンアップしなければならなくなった場合や、アプリケーションの設定に変更が入った場合、マシンイメージを再度作成し直す必要が出てきてしまう。 クラウドでの解決/パターンの説明 クラウドではマシンイメージの作成が容易にできるだけでなく、起動時にパラメータを設定できるものがある。この機能を利用してサーバー構成に必要なパラメータを渡すことで、サーバーを起動する際に必要な設定をサーバー自ら取得し、イン

  • トランザクションスクリプト - Strategic Choice

    1ビジネスロジックを1メソッドで。どういうこと?ビジネスアプリケーションは、一連のトランザクションとして考えることができます。トランザクションには、データの単純な表示・登録や、ビジネスロジックが含まれています。トランザクションスクリプトは、ビジネスロジックを1つのメソッド(プロシージャ)にまとめて、データベースを直接ないし薄いラッパーを介して呼び出します。「トランザクション」という言葉を使用しているのは、ほとんどの場合、データベーストランザクションごとに1つのトランザクションスクリプトを使用しているからです。「スクリプト」という言葉は、「スクリプト言語」のことではなく、「コード片」を意味しています。どうすれば?それぞれのビジネスロジックが、それ専用のトランザクションスクリプトを持たせます。1ビジネスロジックに1トランザクションスクリプトなので、他のトランザクションスクリプトは気にする必要が

  • 状態管理用の変数をインスタンスに持たせるなこのタコって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    たとえば、今、「ユーザーが方向を入力したらプレイヤーが動くゲーム作りたい」みたいなはなしがあるとする。その場合、モデルクラスはまあシンプルな実装として下のようなものが考えられると思う。 「できたよー」って見せにいったら、今度は「あのさー、『高速移動モード』っていうモード欲しいんだよね。そのモードだと二倍速で動くの」って言われたとする。シンプルにやるとこうなりますね。 「できたよー」って見せにいったら、今度は「なあ、すげえ面白いこと考えたんだけど、『蟹モード』って面白くない?横は4倍速で動くんだけど縦は半分の速度で動くの」とか言われたわけです。あなたは「お、おう」と言って、以下のようにコードを修正しました。 これ、ヤバい感じしますね。破滅の匂いがする。「今度は『よっぱらいモード』欲しいな〜。入力に関係なくランダムに動くの」みたいなこと言われたら確実に複雑さが爆発してメンテ不能になりになり死

    状態管理用の変数をインスタンスに持たせるなこのタコって話 - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • リソースモデリングパターン

    Webアプリケーションについて、RESTfulなURL・リソース設計のパターンを見出すことで、 どのパターンかを判断するだけで、既存の Good Practice が適用できる 名前をつけて呼べるようにしたい Railsなどのフレームワークで簡単に適用できるようにしたい ということを目指しています。 ほんとうに役立つか これはパターンと言えるのか もっと他にもある だいぶ粒度がバラバラ 名前の付け方(パターンは名前重要) など、ぜひご意見をください。 パターン Collection & Member Resource パターン Singular (Singleton) Resource パターン Filtered Collection パターン Filtered Subresource パターン Multi-member Resource パターン Partial Resource パター

    リソースモデリングパターン
  • Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと

    GoFのデザインパターンとは、「プログラミングのベストプラクティスを体系化したもの」です。このベスト・プラクティスをしっかりと理解して設計すれば、ソフトウェア設計の効率を高めることができます。またデザインパターンが「プログラミングの思想」の共有をよりスムーズにしてくれます。先人たちの試行錯誤の結果を効果的に利用して、プログラミングをもっと楽しんでしまいましょう! 🗻 デザインパターンのポイントGoFのデザインパターンには下のプリンシパルがあります。 変わるものを変わらないものから分離する インタフェースに対してプログラミングし、実装に対して行わない 継承より集約 委譲、委譲、委譲 必要になるまで作るな(You Ain’t Gonna Need It./YAGNI) 🤔 デザインパターン一覧 アブストラクトファクトリ ビルダ ファクトリメソッド シングルトンパターン アダプタ コンポジッ

    Ruby 2.0.0で学ぶ、14個のデザインパターンを作りました[GoF][Design Pattern] - 酒と泪とRubyとRailsと
  • Data Models

    Data Models: A Comprehensive Guide to Structuring Information for Optimal Insights and Decision-Making In the realm of data management, the use of effective data models plays a pivotal role in organizing and representing information in a structured and meaningful way. Data models serve as the blueprint for databases, facilitating efficient data storage, retrieval, and analysis. This article delves

    Data Models
  • MapReduce Patterns, Algorithms, and Use Cases

    In this article I digested a number of MapReduce patterns and algorithms to give a systematic view of the different techniques that can be found on the web or scientific articles. Several practical case studies are also provided. All descriptions and code snippets use the standard Hadoop’s MapReduce model with Mappers, Reduces, Combiners, Partitioners, and sorting. This framework is depicted in th

    MapReduce Patterns, Algorithms, and Use Cases
  • 「クラウドデザインパターン」をAmazonが公開。システム冗長化、突発的トラフィック対応、動的コンテンツ処理など45種類

    Amazonクラウドを使ったシステム設計の際に直面する典型的な問題に対して、解決策を分かりやすく分類、解説した「AWSクラウドデザインパターン」(略称CDP)が公開されました。Facebookページも開設されています。 作成したのはAmazonのスタッフやサードパーティのエンジニアら。 CDPのWebサイトはWikiで作られているため、誰でも新たなデザインパターンなどを追加可能。現在45種類のパターンが登録されており「あと3つ加えると“CDP48”と言えるようになるので、ぜひ追加してください」(玉川氏。JAWS Summit 2012でCDPの公開について説明した際に)と、呼びかけています。 45種類のパターンが9のカテゴリに分類 それぞれのパターンには、名前、解決したい課題、クラウドでの解決方法、実装方法、解説図、メリットと注意点、関連パターン情報などが含まれています。 例えば、サーバの

    「クラウドデザインパターン」をAmazonが公開。システム冗長化、突発的トラフィック対応、動的コンテンツ処理など45種類
  • AWS-CloudDesignPattern CDP2.0候補

    AWSクラウドデザインパターンとは? AWSクラウドデザインパターン (AWS Cloud Design Pattern, 略してCDPと呼ぶ)とは、AWSクラウドを使ったシステムアーキテクチャ設計を行う際に発生する、典型的な問題とそれに対する解決策・設計方法を、分かりやすく分類して、ノウハウとして利用できるように整理したものである。 これまで多くのクラウドアーキテクト達が発見してきた、もしくは編み出しきた設計・運用のノウハウのうち、クラウド上で利用が可能なものをクラウドデザインのパターンという形式で一覧化し、暗黙知から形式知に変換したものであるといえる。 パターンの中には、クラウドでなくても実現できるもの、今まででも実現されていたものも含まれているが、クラウド上でも今まで通りのアーキテクチャが実現でき、かつクラウドを利用する事で、より安価にそしてより容易に実現できるものは、CDPとして収

  • Inversion of Control コンテナと Dependency Injection パターン

    以下の文章は、Martin Fowler の「Inversion of Control Containers and the Dependency Injection pattern」を、かくたにが翻訳したものです。原著者の許可を得て翻訳・公開しています。 翻訳にあたっては、kdmsnr さんにご協力をいただきました。ありがとうございます。公開後の改訂履歴を記事の最後に記述しています。 Java コミュニティでは軽量コンテナが花盛りである。 軽量コンテナは、異なるプロジェクトのコンポーネントをひとまとまりのアプリケーションとして組み立てることを支援する。 このようなコンテナの根底には、コンポーネントの結び付け方についての共通したパターンがある。 そのパターンのコンセプトは「Inversion of Control(制御の反転)」と、まことに包括的な名前で呼ばれている。 記事では、このパタ

  • BDDの導入 - Dan North - Digital Romanticism

    この記事はDan North氏の記事「Introducing BDD」を氏の許可を得て翻訳した公式版("the official translation")です。(原文公開日:2006年9月20日) 私は1つ問題を抱えていました。様々な環境にあるプロジェクトでテスト駆動開発(TDD)のようなアジャイルのプラクティスを用いたり、あるいは教えていると、いつも同じような混乱や誤解に行き当たったのです。プログラマが知りたいと望むのは、どこから始めれば良いのか、何をテストすれば良いのか、何をテストする必要がないのか、1つのものに対してどの程度テストすれば良いのか、テストをなんと呼べば良いのか、テストが失敗した理由をどう理解すれば良いのか、ということでした。 TDDに深く入り込むほどに、自分の道程が、言われたことをコツコツやれば徐々に上達するようなものではなく、むしろ行き詰まりの連続であると感じました

    BDDの導入 - Dan North - Digital Romanticism
    a2ikm
    a2ikm 2011/05/22
    テストと設計
  • 1