タグ

designに関するtri-starのブックマーク (101)

  • 続々・リトライと冪等性のデザインパターン - あらゆる操作を冪等にする方法 - Blog by Sadayuki Furuhashi

    いつも心に冪等性。古橋です。 リトライと冪等性のデザインパターンの完結編です。 だいぶ間が空いてしまいましたが! 最後に冪等性を実装する汎用的な実装手法についてまとめていきます。 パターン6:操作ログとリクエストIDでUPDATEを冪等にする 同じIDで識別される値がUPDATEされる場合、つまりmutableである値の管理は、一般に冪等に行うのが難しい。 例えば、ユーザーごとに「最後に購入したアイテム」を更新する操作を考えてみると: 1. ユーザーAが最後に購入したアイテムをアイテム1に変更する(UPDATE) 2. ユーザーAが最後に購入したアイテムをアイテム2に変更する(UPDATE) この操作に何の対策もなくリトライを実装した場合、後続のUPDATE処理の結果を古い内容で上書きしてしまう可能性がある: 1. ユーザーAが最後に購入したアイテムをアイテム1に変更する(UPDATE)→

    続々・リトライと冪等性のデザインパターン - あらゆる操作を冪等にする方法 - Blog by Sadayuki Furuhashi
  • 俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita

    ちなみに、最初に結論だけ言っておくと、まずSandi Metzの「オブジェクト指向設計実践ガイド」を読め、という話です それだけで終わってしまいたい気持ちはあるが、不親切過ぎるしもうちょっとRails向けの話を書こうと思う。 ただ言いたいことは、よく分かってないのに使うのは止めろということ。 自分もで書いたりした手前、それが参考にされた結果なのかもしれないが、世の中には当に酷いクラスが存在するもので、雑にサンプルで書くと以下の様な感じのコードが存在したりする。 class HogehogeService # Hogehogeはモデル名まんま def process(hogehoge, option_a: nil, option_b: nil, option_c: false) history = hogehoge.histories.last unless hogehoge.activ

    俺が悪かった。素直に間違いを認めるから、もうサービスクラスとか作るのは止めてくれ - Qiita
    tri-star
    tri-star 2017/06/14
    ドメインサービスについて
  • リアルタイムサーバーのプロトコル設計 - Qiita

    はじまり 汎用リアルタイム通信サーバーを設計するにあたり, 既存のプロトコルの採用ではなく独自プロトコルを作成したのでその時の考えなどをつらつらとまとめます. 前日譚 もともとフィーチャーフォン(ガラケー)向けブラウザゲームを作っていたので, スマホ時代になっても主要な通信は全て HTTP ベースで行われていました. そこそこのオーバーヘッドはありつつも, 社内外にノウハウは豊富ですしステートレスの恩恵を受けて信頼性の高いシステムを構築可能でした. しかしゲーム業界の方向性がより高頻度の双方向通信を求めるようになってきたことで, ステートフルな通信環境をどうすれば安定して運用できるかを考える必要が出てきました. 通信モデルを決める 独自開発を選択した理由については他の記事に譲るとして, ひとまず目的としては以下の一点です. 多クライアント間での双方向通信を可能にする ただ NAT 環境下に

    リアルタイムサーバーのプロトコル設計 - Qiita
  • [ Android ] - これからの「設計」の話をしよう | Recruit Tech Blog

    はじめまして。 6/1より入社いたしましたAndroidエンジニアの釘宮です。よろしくお願いいたします。 今日はAndroidの設計について語ってみようと思います。 その前に 「良い設計とはなにか」という議論が「正義とはなにか」という議論のようにいつまでたっても結論がでないのは、環境やチームメンバのスキルセット、ステークホルダーによって目指すべきゴールが変わるためだと考えます。 つまるところ、設計に正解はありません。 そのため以下で話すことは、「これが設計の正解だ!!」というわけではなくて、「こういう設計の仕方するとうまくいくっぽい」くらいのノリです。 あと、特にMVCとかDDDとか人によって解釈のズレが起きやすいところなどは、冗長になるのを嫌って自分の解釈で言い切っています。ご了承ください。 設計の目的について ハードルが下がったところで、早速。 まず設計の目的ってなんでしょうか? この

    [ Android ] - これからの「設計」の話をしよう | Recruit Tech Blog
  • 新規プロジェクトがいつまでも良いコードであり続けるための、僕なりの5つのルール | FiNC Developers Blog

    新規プロジェクトがいつまでも良いコードであり続けるための、僕なりの5つのルール はじめまして。FiNCでWeb Application Engineerをしている清水です。サーバーサイドからフロントエンドまで、アプリケーション全般の設計と実装を担当しています。 ウェルネスサーベイというプロジェクトをここ一年半やってきました。過去の新規プロジェクトをゼロからやることは何度かありましたが、やはりやる度にこうしておけばよかったという反省・学びがあるので一度まとめようと思います。ちなみに言語はRubyRailsを使って開発しています。 新規プロジェクトの初期の一年で起こること新規プロジェクトの初期の一年は、エンジニアの視点で見れば度々来る 仕様変更 との戦いでした。 実際、今回の我々のプロジェクトにかぎらず、一定の仮説の上で始まるどんな新規サービスも、一年後にまったく同じ仕様というとは逆に稀で、

    新規プロジェクトがいつまでも良いコードであり続けるための、僕なりの5つのルール | FiNC Developers Blog
  • ネストしたリソースのクラス名 - komagataのブログ

  • 翻訳: WebAPI 設計のベストプラクティス - Qiita

    これは Enchant の開発者である Vinay Sahni さんが書いた記事「Best Practices for Designing a Pragmatic RESTful API」1を、ご人の許可を得て翻訳したものです。 RESTful な WebAPI を設計しようとすると、細かなところで長考したり議論したりすると思います。また、他の API に倣ってやってはみたものの、当にそれでいいのか、どうしてそうしているのか分からない、何てことも少なくはないと思います。 この記事では、そのようなハマリどころについて Vinay さんなりの答えを提示し、簡潔かつ明快に解説してくれています。 今後 WebAPI を設計される方は、是非参考にしてみてください。 なお、誤訳がありましたら編集リクエストを頂けると幸いです。 まえがき アプリケーションの開発が進むにつれて、その WebAPI を公

    翻訳: WebAPI 設計のベストプラクティス - Qiita
  • Bootstrap Live Customizer

    × Custom LESS code applied after bootstrap's LESS files, can use any of the variables and mixins

    Bootstrap Live Customizer
  • Admin Templates - Bootstrap Zero

  • フロントエンドに対するAPIバックエンドの提供パターン

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    フロントエンドに対するAPIバックエンドの提供パターン
  • バッチ処理、ジョブ管理について書いてみる - wyukawa's diary

    僕はHive, Pythonでバッチ処理を書いてAzkabanでジョブ管理するシステムを構築、運用した経験が2年ほどあるので今日はバッチ処理、ジョブ管理について書いてみようと思います。 僕の経験上Hadoop特有の部分、例えばテスト環境が作りづらいとかバッチサーバーはジョブをsubmitするだけなので負荷はそんなにかからないとか、はあるけれど割と汎用的なのではないかと思います。そもそもバッチ処理、ジョブ管理について書かれたものはほとんど見た事がないので参考になれば嬉しいし、こういう良い方法もあるよ!とかあれば是非ブログ等に書いてほしいと思っております。 最初に言っておくとバッチ処理、ジョブ管理において重要なのは障害時のリカバリのしやすさです。正常時はまあいいでしょ。 なので例えば引数に日付を持てないようなバッチ書いたら辛いですし、LL言語で書く方がコンパイル、パッケージングとか楽です。CP

    バッチ処理、ジョブ管理について書いてみる - wyukawa's diary
  • Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita

    注:記事の内容はJavaで公式にドキュメントされているものではなく筆者の見解です。とはいえクラスを設計する上で有用な指針たり得ると思われるので公開したものです。 おさらい - 検査例外と非検査例外 Javaの例外クラスには「catchしないとコンパイルエラーになる」検査例外(チェック例外、checked exception)とそうでない非検査例外(非チェック例外、unchecked exception)があります。 検査例外は最近は嫌われる傾向がありC#では採用されていませんしAltJava言語も軒並み不採用、さらにはJavaの新しめのライブラリにも非検査例外しか投げないものが出てきていますが、適切に使えば安全なプログラミングのための強力な武器であり、検査例外の有意義さについては @irxground さんの Javaの検査例外の存在意義 をご覧ください。 例外クラスを自作する場合、検査

    Javaの検査例外は、呼び出し側で「どんなに注意しても防げない」異常系 - Qiita
  • DELETE_FLAG を付ける前に確認したいこと。 - Qiita

    DELETE_FLAG という思考停止フラグ DELETE_FLAG という boolean の列が DB 設計でよく話題になります。 論理削除という言葉で上手に論理武装し、スキを見せるとすぐに入れたがる人がおり、 一方でそれにつよく反対する人もいます。 自分の経験としては、広義の論理削除はありえると思いますが、実現方法が DELETE_FLAG だとなった時、それはあまり考えてないでなんとなくパターンとして盛り込んでる場合が多いと感じます。 ただし、設計に唯一の答えは無いので、もしかしたらそれが妥当な設計である場合があるかもしれません。 今回は「DELETE フラグがなぜダメなのか?」などという話をするつもりも、アンチパターンだと断言するつもりもありません。 問題は、仕様をきちんと把握すると、「最適な設計は DELETE_FLAG ではない」という場合が有って、その場合は、その最適な設計

    DELETE_FLAG を付ける前に確認したいこと。 - Qiita
    tri-star
    tri-star 2015/03/24
    論理削除、削除フラグについて
  • Diagramly - Draw Diagrams Online

    Flowchart Maker and Online Diagram Software draw.io is free online diagram software. You can use it as a flowchart maker, network diagram software, to create UML online, as an ER diagram tool, to design database schema, to build BPMN online, as a circuit diagram maker, and more. draw.io can import .vsdx, Gliffy™ and Lucidchart™ files . Loading... Please ensure JavaScript is enabled.

  • コマンドラインツールを作るときに参考にしている資料 | SOTA

    コマンドラインツールについて語るときに僕の語ること - YAPC::Asia Tokyo 2014 コマンドラインツールが好きで昔からつくってきた. 今年のYAPCで,そのコマンドラインツールをつくるときにどういうことを意識して作っているのか?どのような流れで開発しているのか?といったことを語る機会をもらえた. 具体的な内容については,是非トークを聴きに来てもらうとして, スライドをつくるにあったって過去に読んだ資料や,よく参考にしている記事を集め直したので,その一部を参考資料としてまとめておく. UNIXという考え方 UNIXという考え方 Mike GancarzによるUNIXの思想や哲学をまとめた.古いが全然色あせてない. コマンドラインツールの作り方を書いたではないが,これらの思想の上で動くツールはこの思想に準拠して作られるべきだと思う.何度も読んで考え方を染み付かせた. 小さい

  • Building a Ruby Library: The Parts No One Talks About

    Building the World's Largest Websites with Consul and Terraform

    Building a Ruby Library: The Parts No One Talks About
  • 例外に関するAPIデザインのベストプラクティス

  • MVC2モデルとMVCモデルの違い - プログラマの思索

    MVC2モデルとMVCモデルの違いについて、良い記事があったのでリンクしておく。 【元ネタ】 MVCをWebに適用した「MVCモデル2」 : Java好き MVCモデルのバリエーション: プログラマの思索 (引用開始) 「MVC」と「モデル2」の違いが、「モデル」の設計に影響を与える 違いは、「モデル」が「ビュー」に状態が変わったことを通知することがWebの性質上なくなった点。 サーバー側からいきなり「モデル」の状態変更が通知されることは HTTPではできないので、必然的にそうなる。 大したことのない変化に思えるが、これにともない「モデル」の構成が「MVC」と大きく変わる。 「モデル」が状態が変わったことを通知することができないことは、 毎回最新の状態のモデルを作ることにつながる。 「MVC」では前状態を保持しつつ状態変化に対応させるといった「モデル」の使い回しが可能だった。 しかし、「モ

    MVC2モデルとMVCモデルの違い - プログラマの思索
  • Bootstrap 3 学習ノート - Qiita

    (2014-06-09 ... 18) Bootstrap 3の学習記録ノートです。 できるだけ手を抜かず隅々まできちんと調査し、コードはほぼ全て実際に試して確認しました。 元々公開を意図したものではありませんが、ここまで詳細に調べた資料はそうはないと思いますので最低限の体裁を整えて公開します。みなさんのお役に立てば幸いです。 なおHTML部分はほぼ全てjadeで記述しています。jadeを知らないと理解できないノートになってしまっていますが、生のHTMLではとてもこのスピードでは学習できません。どうかご了承下さい。 なお「ここは違うのでは」「こうした方がよいのでは」などという点がありましたらGitHubのissuesかpull requestなどでお教え頂けるとありがたいです(6/19記)。 (Qiita用に追加) Qiitaコメントでのご指摘も歓迎します。 その後しばらくしてバージョンが

    Bootstrap 3 学習ノート - Qiita
  • センス上がった!タイプ別に分けたWebデザインの参考になるサイトまとめ

    作成:2014/06/30 更新:2014/11/01 Webデザイン > サイトのデザインセンス、または操作性などが良いのか悪いのかわからない。 オシャレで洗練されたデザインにするため、少しでもセンスを上げるために色々なサイトをチェックしておきたい。 今回はただWebデザインギャラリーサイトを紹介するのではなく、ページ別・職種・動き・制作別など「サイト制作時に役立つ」くくりでまとめました。コーポレートサイトやECサイト・自社サービスのデザイン考えるとき、提案前に一度は見ておきたいまとめ。 エンジニア速報は Twitter の@commteで配信しています。 もくじ 配色 1.グラデーション+フラットデザイン 2.ダッシュボードの配色例 3.高級感を出す配色 ページ別 4.採用ページ 5.404ページ 職種別 6.和菓子系(不足の美) 7.女性向け(エディトリアルデザイン) 8.医療系 9

    センス上がった!タイプ別に分けたWebデザインの参考になるサイトまとめ