タグ

patternに関するkiyo_hikoのブックマーク (65)

  • ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました

    この記事で紹介した手順をライブラリ化して公開しました🎉 こちらの別記事 で使い方など詳しくご紹介していますので、ぜひご参照ください! 2024/05/07 追記 最新の登壇スライドバージョンはこちらです。 登壇時の様子がYouTubeに上がっているのでよろしければあわせてご覧ください。 はじめに 言い切りタイトルすみません 僕を含む一定数の人にとって現時点でのベストプラクティスとなりうる手法という意味で紹介しています 極めてシビアな帳票出力の世界にいる人から見ると使い物にならない内容かもしれないと思います 帳票印刷の世界では SVF というサービスが有名らしいです。が、こういった外部サービスは使わずに自力で実装するというのがこの記事の前提です 動的に明細行の数が増減する連票はこの記事の解説では考慮していませんが、追加で実装するのはそれほど難しくないということは読んでいただければ分かるかな

    ついに、Webアプリでの帳票印刷のベストプラクティスを編み出しました
    kiyo_hiko
    kiyo_hiko 2021/06/06
    へー。帳票は苦労の連続だったもんなあ
  • ゲームの仕様書を書こうまとめ

    ゲームの仕様書を初めて作成する人のための足掛かりのスライド ▼以下のスライドを一つにまとめました ・ゲームの仕様書を書こう1 仕様書作成の分業とリストの作成 https://www.slideshare.net/ChizuruSugimoto/ss-173331109 ・ゲームの仕様書を書こう2 仕様書に記載する機能内容 https://www.slideshare.net/ChizuruSugimoto/ss-173332578 ・ゲームの仕様書を書こう3 仕様書に記載するデータと画面 https://www.slideshare.net/ChizuruSugimoto/ss-173333150 ・ゲームの仕様書を書こう4 仕様書作成で楽をするconfluenceの活用 https://www.slideshare.net/ChizuruSugimoto/confluence-17333

    ゲームの仕様書を書こうまとめ
    kiyo_hiko
    kiyo_hiko 2020/03/12
    参考になる
  • Not Found

    kiyo_hiko
    kiyo_hiko 2019/01/21
    "厄介なのは罪を罪と認識できず何年も罪を量産している「クソコード耐性の高いベテランプログラマ」である。CIやlintを設定しても、開発の邪魔なので閾値をあげて実質、無効化してしまうベテランプログラマが多数いる"
  • DockerとAnsibleの使い分けを手探りで考えてみた - Taste of Tech Topics

    皆さんこんにちは。 アキバです。 久しぶりにエントリ書きます。 突然ですが、今、システムをデプロイすると言ったら自動化しますよね。 そこで、皆さんは何を使っていますか? 私は、最近、DockerとAnsibleを仕事でガチに触る機会がありました。 ※番運用のサーバもDockerを使って動作させました。 今回は、そこで得たことについて書きます。 皆さんの参考になればと思います。 命題:Dockerを使うべきか、Ansibleを使うべきか。 作るべきシステムは、いわゆるWebシステムで、WEBサーバとAPサーバで構成しています。 WEBサーバとAPサーバはそれぞれN台のクラスタ構成です。 ※以下の図は、番運用で想定しているサーバ構成を今回の説明用に抽象化したものです。 N台のクラスタ構成ということで、Dockerを使おうとなりました。 コンテナでスケールアウト出来るから…ですね。 さてここ

    DockerとAnsibleの使い分けを手探りで考えてみた - Taste of Tech Topics
  • idやclassを使ってテストを書くのは、もはやアンチパターンである - Qiita

    いきなり結論を書くと、idやclassはスタイルのためのものなので、テストでそれを使うのはやめましょう。そして、カスタムデータ属性を使いましょう。(idやclassはスタイルのためだけではないという意見はごもっともです!しかし、主にとしてスタイルに使われるということでご了承頂いて以下の駄文に付き合って頂けると幸いです🙇) 先に断っておくと主にreactについての話で、JSXを前提とします。(手法はReactに限りませんが理由は後述) 2020/03/23 追記 この記事は1年以上前に書かれた記事なのでテストフレームワークとしてenzymeを使っていますが、現時点ではTesting Libraryの使用をオススメします。data-testid に対応するクエリを備えています。 React Testing Library · Testing Library はじめに ご存知の通り、ロジックと

    idやclassを使ってテストを書くのは、もはやアンチパターンである - Qiita
  • Selenium の locator とうまくつきあうための話 - Qiita

    Selenium を使って、ブラウザの操作を自動化するときに、どのリンクをクリックするか、どのフォームに値を入力するかを指定する必要があります。 画面上のどの要素を操作するかを指定するための情報をSeleniumではlocatorといいます。Seleniumでは、ブラウザ(厳密にいうとSelenium Server)とクライアント間の仕様としてJSON Wire Protocolが定められており、利用できるlocatorもそれに従います。 要素を探索する場合 /session/:sessionId/element に、locatorを含むJSONをPOSTするのですが、その locator として、class name、css selector、id、name、link text、partial link text、tag_name、xpath と様々なものが利用できます。 様々なものが利

    Selenium の locator とうまくつきあうための話 - Qiita
    kiyo_hiko
    kiyo_hiko 2017/07/28
    input name > css selector > xpath > link textとその理由。
  • セッションC2:テストコードクリニック

    + JaSST'15 Tokyo テストコードクリニック 2015/02/20 太田健一郎 テスト自動化研究会 株式会社SHIFT + アジェンダ n Selenium Design Patterns and Best Practices n あるある残念なテストコード n 残念なテストコードを生み出すデザインパターン n テストコードを改善するデザインパターン n 更なる改善のために + Selenium Design Patterns and Best Practices n Seleniumを使ったGUIテストのデザイン パターンとベストプラクティスを解説した 書籍です n 残念なテストコードから始めて各種の デザインパターンとベストプラクティ スを適用しながら品質の高いテスト コードへと変えていく手法が見事です n 書籍のコードはRubyですが、Web上 にJava

  • Java で簡単マルチスレッドプログラミング - にょきにょきブログ

    仕事でマルチスレッドを扱うようになったので備忘録として Executors 関連のメモを残しておく。 あるタスクを別スレッドで実行したい時、Executors クラスを使えば自前でスレッドの管理をすること無く簡単に並列処理を行えるようになる。 もちろん完全に簡単になったわけではなく、マルチスレッドプログラミングの困難さは健在だが、自前でスレッドの管理をしない分バグを仕込む可能性も減るだろう。 はじめに Executors はタスクと呼ばれる処理の最小単位を別スレッドで実行する仕組みである。マルチスレッドなのでシングルスレッドに比べると複雑性は若干上がるものの、通常のマルチスレッドプログラミングに比べれば少ない複雑性、高い安全性を備える。そして何より、パフォーマンスの向上が期待できる。 この仕組みはジョブキューモデルそのものである。ジョブはタスク、キューは後述する Executor に相当す

    Java で簡単マルチスレッドプログラミング - にょきにょきブログ
    kiyo_hiko
    kiyo_hiko 2016/06/17
    ExecutorServiceにThreadPoolを作ってCallable<T>を実装したTaskクラスをバシバシ突っ込んで行き、必要ならFuture<T>に落としてgetで回収したり、Executors.newFixedThreadPoolで同時実行数を制限したりな話。便利。
  • マルチスレッドプログラミングのFutureパターン – ザワプロ!

    マルチスレッドプログラミングのパターンの一つにFutureパターンというものがある。 これは、ある処理を別スレッドで非同期に実行させて、その結果を受けたいときに用いられるパターンである。 特徴的なのは、処理の実行担当者(JavaではExecutorServiceがそれにあたる)は、処理(JavaではCallable)が渡されると別スレッド上で処理を開始して、メインスレッドには即座にFutureオブジェクトを返すことである。 なぜこのオブジェクトがFutureと呼ばれるかというと、今現在はまだ結果を取得できないが、将来のある時点で取得することになるからである。 その後、Futureのget()メソッドを呼ぶと、メインスレッドはCallableの処理が終わるまでブロックされる。 そして別スレッドで処理が終わった時点で結果が取得できる。 プログラム例を以下に示す。 public static v

    kiyo_hiko
    kiyo_hiko 2016/06/17
    なるほど。親スレッドでExcecutorにCallable<T>を渡してsubmitするととりあえずFuture<T>を返し別スレッドを開始する。その間親では別処理とかできる。future.get()を呼ぶと親はCallable<T>を待ち、終わったら結果を受け取ると。
  • Linuxに使われる日々 : RPGパターン? - livedoor Blog(ブログ)

    Linuxに使われる日々 主にLinux関連の話題中心にお届けしております。 たまに、家族や友達のこと。パソコンのことなど趣味や日々の思い付きを書いてます。 < たけのこ狩りお花見!? > 2010年04月20日11:27 カテゴリ業務連絡(ただの覚書)Webサービス RPGパターン? My Yahoo!に追加 今日までずっと「RPG」パターンだと思ってました。 ←RPGなイメージ ロールプレイングゲームパターンってなんやねん!とか思ってました。 どうもすいません。 正解は「PRG」パターンです。 何のことだか分からない人は分からないと思いますが、Webサービスを作るときなどに使用する仕組みのことです。 通常のWebアプリでデータを登録するような処理を書くと入力内容を送信してデータベースに書き込みした後、完了画面のようなものがでます。 で、そのときになんの処理もかまさないマヌケなサーバ処理

    kiyo_hiko
    kiyo_hiko 2016/05/12
    二重登録などを防ぐ
  • 開発契約書の契約パターンを上流下流工程に分け徹底解説! - 契約書の作成リーガルチェックは企業法務経験豊富な行政書士へ

    開発契約書の契約パターンを上流下流工程に分け徹底解説! 最終更新日:2023年8月8日 開発契約書の契約パターンについて、徹底解説をしております。 上流工程と下流工程 ソフトウェアやシステムの開発契約書では、基契約書を締結して、その基契約書に基づき個別契約書を締結したり、基契約書を締結せず個別に業務委託契約書を締結したり、すべて1つの業務委託契約書で締結したりするパターンがあります。契約相手ごとに対応が違うようで、分かりにくいですので、それについて解説します。 その前に、開発契約書は大きく分けて、上流工程と下流工程の2つの工程に分類することができます。まず、開発契約書の締結パターンを論じる前に、まずこの2つの工程について、みていきます。 上流工程 上流工程では、委託者は、受託者から要求分析・定義、外部設計を委託されますが、これらについては、委託者の協力が不可欠であり、受託者が委託者の

    kiyo_hiko
    kiyo_hiko 2016/04/05
    "上流工程の開発契約書には、以下の内容を盛り込む必要があります…ユーザの…協力が必要なことを明確にしておく/仕様に変更・追加があることが多いので、その手順を明確にしておく/準委任である旨を明確にしておく"
  • RubyにHaskellよりも強力なパターンマッチを実装した - Qiita

    require 'egison' include Egison match_all(object) do with(pattern) do ... end end match(object) do with(pattern) do ... end with(pattern) do ... end ... end パターンマッチに成功すると、withに渡されたブロックが実行され、その結果が返されます。 このライブラリのパターンマッチでは、パターンマッチの結果が複数あるということがあります。 match_all構文はそのすべてのパターンマッチの結果それぞれについてwithに渡されたブロックを実行し、すべての結果をまとめた配列を返します。 match_all構文は1つのwith節を取ります。 一方、matchは複数のwith節を取ります。 先頭のwith節のパターンから順番にパターンマッチに成功

    RubyにHaskellよりも強力なパターンマッチを実装した - Qiita
    kiyo_hiko
    kiyo_hiko 2016/04/04
    すごくつよい感じ
  • Rails antipattern-public

    This document summarizes several common Rails antipatterns including monolithic controllers, fat controllers, voyeuristic models, duplicate code, and messy migrations. It provides examples of each antipattern and recommendations for refactoring code to avoid them, such as extracting logic into modules, using service objects, and avoiding external dependencies in migrations.Read less

    Rails antipattern-public
  • シュードキーニートフリーク

    kiyo_hiko
    kiyo_hiko 2016/02/22
    Auto Incrementは一件行ナンバーに見えるが、両者を混ぜてはいけないということ
  • 2章 Naive Trees(素朴な木) - Qiita

    第二章 ナイーブツリー 「ブログのコメント欄をスレッド形式で見れるようにしたいよね・・・」 目的 階層構造を格納して、クエリを実行する こんなテーブル設計したとして、 comment_id parent_id comment etc

    2章 Naive Trees(素朴な木) - Qiita
    kiyo_hiko
    kiyo_hiko 2016/02/22
    閉包テーブルが一番安全そうな印象
  • ITエンジニアはSQLアンチパターンを読むべし! 軽いまとめ

    もうこれだけでBad smellしかしませんね。検索とか考えると頭が痛いです。重複考慮した更新や削除とかも同じくきついですね。 従属テーブル作って対応しましょう。 8. メタデータトリブル(メタデータ大増殖) 全く同じテーブルなのに年や月で分かれていたり、同じような列が連続しているやつです。 CREATE TABLE LOG_2013 ( ... ); CREATE TABLE LOG_2014 ( ... ); CREATE TABLE LOG_2015 ( ... ); データが多すぎるから分けた、というケースが多いと思います。古いデータは使わないし、かといってテーブル1つにするとクエリが遅くなるし、みたいな。 上記のようなケースならOKだし、実際そういう経験はありますが。LOG_2014テーブルの2014/12/31のデータが間違ってたので、UPDATEして2015年のデータにしよう

  • Rails 5の404/500エラーページ、簡単作成手順

    Railsアプリケーションで簡単に自分で作った404/500エラーページを表示させる手順です。404/500エラーページもユーザービリティの面やコンバージョンの面で非常に重要ですよね! あるRailsアプリケーションでルーティング系のエラーはルートにリダイレクトするようにしていたのですが、SEO的にはNGだと知りました。 『ソフト404エラー』と呼ばれており、ルーティングがないのに404ステータスを返さないのは検索エンジンさん的にはなはだそうです。 ということで、Webサービスを作るときにはルーティングと、エラー時の挙動をしっかり制御したほうがいいと反省中です。

    Rails 5の404/500エラーページ、簡単作成手順
    kiyo_hiko
    kiyo_hiko 2016/01/02
    "『ソフト404エラー』と呼ばれており、ルーティングがないのに404ステータスを返さないのは検索エンジンさん的には無しだそうです"
  • concerned_withパターンでModelを分かりやすく分割する

    記事では、concerned_withパターンを使ってModelを分かりやすく分割する方法について解説します。 この方法を覚えておくと、gemでよく見かける下記のような不思議な書き方を自分で実装できるようになります。 concerned_withパターンとは concerned_withパターンとは、RailsのModelを機能単位で分割する時に使えるデザインパターンです。 少なくとも2011年の時点で存在してたようですが、Webで検索してもあまり情報が見付からない、不遇な?デザインパターンです。 一例として、バリデーションだけを別ファイルに定義する例はこんな感じです。

  • SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)

    14. SELECT c1.*, c2.*, c3.*, c4.* FROM Comments c1 -- 1階層目 LEFT OUTER JOIN Comments c2 ON c2.parent_id = c1.comment_id -- 2階層目 LEFT OUTER JOIN Comments c3 ON c3.parent_id = c2.comment_id -- 3階層目 LEFT OUTER JOIN Comments c4 ON c4.parent_id = c3.comment_id -- 4階層目 アンチパターンにより起こること 素朴すぎる故に アンチパターン

    SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
    kiyo_hiko
    kiyo_hiko 2015/12/08
    "べからず集ではなくパターン"
  • gitとプルリクエストに関して思うことまとめ - Qiita

    ※この記事は元々「Gitのこれやめて!リスト」として2015年11月に投稿したものを改訂したものです。 この記事について 私が個人的にgitとプルリクエストについて、「こうして欲しい」とか「これはやらないで!!」とか思っていることをまとめたものです。 元々は2015年に私がコードレビューをしてる時に気になったことを、あまり推敲もせず思うがままに書いた記事でした。今改めて読み返すと稚拙な文章なのと、他に思うところとがあったりしたので、改めて書き直しました。いいね貰ってるのに書き直すのに若干後ろめたさがあるのですが、よりいい内容にできればと思います。 コミットログがきれいだとレビューしやすい 一人で開発するときはgit使っててもブランチ切らないし、プルリクもださないしで、コミットログも"First Commit"の次が"Second Commit"とかでも支障はないです。しかし、チームで開発す

    gitとプルリクエストに関して思うことまとめ - Qiita