tyrogのブックマーク (463)

  • Prisma ORMを2年運用して培ったノウハウを共有する

    TSKaigi 2024 ref: https://tskaigi.org/talks/tockn

    Prisma ORMを2年運用して培ったノウハウを共有する
    tyrog
    tyrog 2024/05/12
  • BigQuery クエリ - pokutuna

    BigQuery 関連: Colaboratory 標準 SQL 語彙の構造  |  BigQuery  |  Google Cloud リテラル等の仕様 その場でデータを作ってクエリする 動作確認に便利 code:struct.sql SELECT MIN(status) FROM UNNEST([ STRUCT('unexamined' AS status), STRUCT('unexamined' AS status), STRUCT('ng' AS status) ]) 型ほしい時は型を書く code:complex_struct.sql SELECT * FROM UNNEST( ARRAY<STRUCT<count INT64, time TIMESTAMP>>[ STRUCT(3, TIMESTAMP "2020-07-01 10:00:00"), STRUCT(5, TIM

    BigQuery クエリ - pokutuna
    tyrog
    tyrog 2024/04/24
  • 特定のページが更新されたら通知する仕組みを作ってみた - Qiita

    はじめに RSS対応のサイトだと、更新情報追いやすいけど、RSS非対応のページも追いたいよね。って人向けの記事です。 RSS対応しているサイトなら、RSSリーダーを使った方が早いです また、Discordのチャンネルにも通知がしたかったので、メールとDiscord両方に通知を行っています。 Discord側にWebhook用のURLが必要ですが、記事では紹介しません 参考サイトのZennの記事が細かく書かれていますので、そちらをご覧ください なお、この仕組みは更新を検知したいサイトに確認リクエストを送ります。 高頻度で設定してしまうと、サーバーに負荷がかかる為、 高頻度での設定はしないようにお願いします 参考サイト 構成図 コードについて(Lambda) コードについては、基的に、クラスメソッドさんの記事を参考にしています Discordの通知部分については、AmazonBedrock

    特定のページが更新されたら通知する仕組みを作ってみた - Qiita
    tyrog
    tyrog 2024/03/25
  • たった2つのステップを意識するだけで書けない単体テストがほぼなくなる - Qiita

    はじめに この記事は レガシーコード改善ガイド: 保守開発のためのリファクタリング を参考に手を動かしてみて、ある程度自分の中で体系的にまとまった知識のアウトプットです。 この記事で扱う内容 この記事で扱うのは主にレガシーコードで単体テストを書く際のハードルになりがちな 依存関係の排除 に関する手法を紹介します。 この記事を読んだ後に、 『この観点を持っておけば単体テストをスムーズに書いていけそう!』 『今までモック使ってたけど意外とモック使わなくても書けるね!』 となったらいいな、と思います。 ちなみに、今まであんまりテスト書いたことないよーて人は以下の記事など参考にして一度やってみてください。 前提の話: この記事の旨は「テスト書きにくいプロダクトコードも依存関係を排除すれば楽にテスト書けるよ」なので、それ設計的にアウトでは?リファクタリング耐性低くない?みたいな話は度外視してます。

    たった2つのステップを意識するだけで書けない単体テストがほぼなくなる - Qiita
    tyrog
    tyrog 2024/03/19
  • SaaSのグローバル化は幻想か? 生成AIが「ベンダーの逆風」となり得る理由

    SaaSのグローバル化は幻想か? 生成AIが「ベンダーの逆風」となり得る理由:らんぶるの「コッカラSaaS」 SalesforceのM&A分析ばかりでも単調化しそうなので、少し俯瞰して今後のSaaS業界のグローバル化について考えてみる。 SaaSに限ったことではないが、売り上げを増やすには顧客数を増やすか、単価を上げるしかない。SaaSを含むソフトウェアに限って言えば、提供価値を定数とした時の単価は上がらないようになっている。これはソフトウェアが常に改善されるという前提に依存し、その前提はおおむね正しい。 従って単価を上げるためには、技術開発のコモディティ化よりも速く提供価値を向上させる必要があるが、生成AIの到来により技術開発のコモディティ化が加速することは一目瞭然である。もちろん技術的革新は続く。しかしSalesforce誕生から25年、SaaS製品顧客としてわれわれが一貫して経験して

    SaaSのグローバル化は幻想か? 生成AIが「ベンダーの逆風」となり得る理由
    tyrog
    tyrog 2024/03/14
  • Conventional Commits

    Conventional Commits 人間と機械が読みやすく、意味のあるコミットメッセージにするための仕様 Conventional Commits 1.0.0 概要 Conventional Commits の仕様はコミットメッセージのための軽量の規約です。 明示的なコミット履歴を作成するための簡単なルールを提供します。この規則に従うことで自動化ツールの導入を簡単にします。 コミットメッセージで機能追加・修正・破壊的変更などを説明することで、この規約は SemVer と協調動作します。 コミットメッセージは次のような形にする必要があります: 原文: <type>[optional scope]: <description> [optional body] [optional footer(s)] 訳: <型>[任意 スコープ]: <タイトル> [任意 文] [任意 フッター] あな

    tyrog
    tyrog 2024/03/13
  • ドメイン駆動設計入門【DDDをわかりやすく解説】 | 楽水

    突然ですが、エンジニアの皆さま、Javaで開発したWebアプリケーションの構成、このようになっていませんか? データとgetter/setterだけのオブジェクト(JavaBean) 画面のコントロールやビジネスロジックの処理はServletが行う データベースのアクセスは、DAO(Data Access Object)に任せる もしそうであれば、そのシステム、ドメインモデル貧血症に陥ってます。 これは、データとgetter/setterだけのオブジェクトを、Anemic(貧血症になって元気がない)オブジェクトと称し、オブジェクトとはいうものの実質的にはデータであり、それをやりとりするだけの手続き型システムなっていることを嘆いたものです。 今回は、来のオブジェクト指向に立ち返り、そのメリットである高い保守性、再利用性、拡張性を備えた変化に強いシステムを作るための設計方法、ドメイン駆動設計

    tyrog
    tyrog 2024/03/13
  • 【Next.js14】CSR・SSR・SSG・ISRの違いと実装方法 - Qiita

    Next.jsでは、レンダリング手法をCSR・SSR・SSG・ISRの中から選ぶことができます。 記事では、それぞれの特徴に触れつつ、実装方法を紹介します。 CSR (Client Side Rendering) クライアントからのリクエストに対して、サーバーは空のHTMLJavaScriptを返します。 このJavaScriptがブラウザ上で実行されることにより、実際に表示するHTMlをレンダリングします。 メリット サーバーとの通信が初期遷移時のみに抑えられる ページ遷移が高速 デメリット 初回読み込み時に全てのデータを一括して取得するので、ページが表示されるまでの時間が長い(アプリケーションの規模が大きくなればなるほど、時間が長くなる) JavaScriptはブラウザで実行されているので、ページ表示までの時間(JavaScriptの実行時間)が使用しているマシンスペックに依存して

    【Next.js14】CSR・SSR・SSG・ISRの違いと実装方法 - Qiita
    tyrog
    tyrog 2024/03/10
    “自動再ビルドにより、たまに更新がある場合にも画面に反映することができる ”
  • データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3

    Similar to データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3

    データ履歴管理のためのテンポラルデータモデルとReladomoの紹介 #jjug_ccc #ccc_g3
    tyrog
    tyrog 2024/03/09
  • 履歴データテーブルとの向き合い方_PHPerKaigi2024

    PHPerKaigi2024 の登壇資料です。 履歴データテーブルとの向き合い方 https://fortee.jp/phperkaigi-2024/proposal/47cf9f17-825a-4021-bf33-86e4a62bc222

    履歴データテーブルとの向き合い方_PHPerKaigi2024
    tyrog
    tyrog 2024/03/09
  • やっとわかる!Next.js App Routerのcacheにおけるrevalidateと苦戦した話

    こんにちは。ココナラテックエージェントの開発をしているエンジニアのみんです。 新技術が常に登場しているフロントエンドの開発で、時代の波に乗り、キャッチアップすることが我々エンジニアの使命です。 ココナラテックエージェントのフロントエンドNext.js アプリケーションです。2023年の9月から、App Routerへの移行を始めています。 つい9月末に、ココナラテックエージェントの案件一覧ページをApp Routerに移行しました! 案件一覧と検索を含め、案件まわりのキャッシュ再検証(revalidate)の実装に全身全霊を注いだ成果をシェアしたくて、この記事を書きました。 App Routerのキャッシュ種類 Next.jsは、レンダリングの効率を上げるために、オプション指定がない場合に全てのリクエスト結果をキャッシュする方針です。 公式ドキュメントによると、App Routerのキ

    やっとわかる!Next.js App Routerのcacheにおけるrevalidateと苦戦した話
    tyrog
    tyrog 2024/03/04
  • TypeScriptでクリーンアーキテクチャを実践する

    概要 記事は、スクラムを管理するアプリケーションをクリーンアーキテクチャの考え方で実装し、WebからもCLIからも動かせるようにしたという実践を紹介するものです。学習のための個人開発で作成したサンプルアプリケーションの設計と実装を適宜紹介することで、クリーンアーキテクチャに対する理解を深めることが目的です。 モチベーション なぜ現代の開発現場で定着しているクリーンアーキテクチャのアプリを手元で実装してみようと思ったかというと、私自身Webエンジニアとして働く中で、クリーンアーキテクチャの実践例は入出力をWebに限定したものばかりだったからです。 しかし、「詳細に依存せず抽象に依存すること」と唱えるクリーンアーキテクチャにとって、Webはただの詳細です。そこで、入力元、出力先を問わないアプリケーションはどのような書き味になるのか、自分で確かめてみたくなりました。 例えば、「ドメイン層は独立

    TypeScriptでクリーンアーキテクチャを実践する
    tyrog
    tyrog 2024/03/03
    “すると、scrum-team, productなどの操作対象に対して、一つの UseCase を実装しています。この UseCaseは write のみを担当しており、read は query-service というディレクトリにあるクラス群が担うことになります。 UseCase は単一なのに
  • 各デザインパターンの「使いどころ」を一言でまとめてみた - Qiita

    はじめに 各デザインパターンが「どんな場合に有用なのか」の一覧があったら便利かと思いまとめてみました。GoFの23パターンの他に「Game Programming Patterns」のパターンも掲載してます。 生成に関するパターン パターン名 使いどころ

    各デザインパターンの「使いどころ」を一言でまとめてみた - Qiita
    tyrog
    tyrog 2024/02/29
  • リレーショナル・データベースの世界

    序文 私の仕事は、DBエンジニアです。といっても別に望んでデータベースの世界へきたわけではなく、当初、私はこの分野が面白くありませんでした。「Web系は花形、データベースは日陰」という言葉も囁かれていました。今でも囁かれているかもしれません。 ですが、しばらくデータベースを触っているうちに、私はこの世界にとても興味深いテーマが多くあることを知りました。なぜもっと早く気づかなかったのか、後悔することしきりです。 もちろん、自分の不明が最大の原因ですが、この世界に足を踏み入れた当時、先生も、導きの書となる入門書もなかったことも事実です。 今でこそバイブルと仰ぐ『プログラマのためのSQL 第2版』も新入社員には敷居が高すぎました (2015年2月追記:その後、自分で第4版を訳出できたのだから、 人生は何があるか分からないものです)。 そこで、です。このサイトの目的は、データベースの世界に足を踏み

    tyrog
    tyrog 2024/02/29
  • 失敗例から学ぶSOLID原則

    PHPカンファレンス北海道2024 https://fortee.jp/phpcon-hokkaido-2024/proposal/7d223fcd-ecc8-4cfb-92b2-4987749463d8 Lについての補足記事 https://asumikam.com/entry/2024/01/12/144338 Sについての補足記事 https://asumikam.com/entry/2024/01/13/152513

    失敗例から学ぶSOLID原則
    tyrog
    tyrog 2024/02/23
  • 擬人化で完全に理解するクリーンアーキテクチャ

    tyrog
    tyrog 2024/02/12
  • モデルとはなにか / what is model?

    PHPカンファレンス関西2024にて発表。 トーク概要: https://fortee.jp/phpcon-kansai2024/proposal/b3f6ed97-8551-40da-90b1-3a14697df303

    モデルとはなにか / what is model?
    tyrog
    tyrog 2024/02/12
  • VISAカードの裏側と “手が掛かる” 決済システムの育て方

    YAPC::Hiroshima 2024

    VISAカードの裏側と “手が掛かる” 決済システムの育て方
    tyrog
    tyrog 2024/02/11
  • 超入門!テーブル設計をデータモデリングから考えよう

    から学ぶ テーブル設計 超入門! 〜データモデリングとテーブル設計の基を学ぼう〜 https://modeling-how-to-learn.connpass.com/event/242944/ にてお話した際のプレゼン資料です。 入門者に向けて、テーブルを設計する上でモデリングすると良いよという話をしました。(熟練者は、そうだよねーっておさらいするか、そこは別の考え方があるんじゃないなどを呟いて貰えればといった内容です) モデリングして設計する際に、色々なモデルがあります。その中で、データモデルは静的な要素が強いモデルなので、モデリング全般を考えた際に、入門者にとって捉えやすいのではと考えています。 テーブルを設計する上で、データモデリングをしてデータモデルを作ることで、より良いテーブル構造を考えやすくなります。 #テーブル設計 #モデリング #データモデル #RDRA #概念モデ

    超入門!テーブル設計をデータモデリングから考えよう
    tyrog
    tyrog 2024/01/25
  • 実践Immutable Data Model - 紙箱

    ランキング参加中プログラミング はじめに この記事では、Immutable Data Modelと呼ばれる設計手法をもとに、リレーショナル・データベースにおける、テーブル設計の話を書いています。また、今回の実践で利用する、別の考え方の背景を理解するために、Out of the tar pitという小論文の内容にも言及します。 「状態とは何か?」というややこしい話がたくさん出てきますし、データベースのテーブル設計についての話であることから、たくさんのSQLが出てきます。なので、データモデリングとか状態管理とか、特にSQLとかに興味がない人には面白くないと思います。 そのあたりに興味ある方は、読んでみて欲しいです。 Immutable Data Modelを、実際のアプリケーションで使うデータベースに採用するにあたり、どういう考え方で、どのようにテーブルを構成したか、自分なりの経験を書いていま

    実践Immutable Data Model - 紙箱
    tyrog
    tyrog 2024/01/10