タグ

ブックマーク / qiita.com (1,255)

  • マイクロサービスの Saga パターンについて - Qiita

    以前の記事で『Microservice Patterns』について要約したが、その中の一つの Saga パターンについて、もう少し詳しく掘り下げてみる。 どういう文脈で Saga パターンを使うか? 各サービスがそれぞれの Bounded Context (整合性の境界)で自前のデータストア(Database per Service)を持っているマイクロサービスアーキテクチャで、複数サービスにまたがるワークフローのデータ整合性を維持したい。 どういう制約のもとで Saga パターンを使うか? 以下のような事情で、分散トランザクションは使いたくない。 モダンでメジャーな NoSQL やメッセージブローカではサポートされていないものが多い。 CAP 定理の認知度が高まって、Consistency を絶対視する風潮が見直され、Availability をより重視するシステムも増えている。 分散ト

    マイクロサービスの Saga パターンについて - Qiita
    syuu256
    syuu256 2020/12/18
  • 【業務系】世の中に逆行するJavaのWebアプリでの画面フレームワーク選定 - Qiita

    これは何? Java Advent Calendar 2020 を見て、記事の少なさ (後で見たら参加者増えてた!)、よい記事なのにLGTMの少なさに驚愕して、少しでもJava言語を盛り上げたく記事を書きます。 Webな業務アプリにおいて画面を作る画面系フレームワークの選択肢について、偏見たっぷりに書いてみます 想定読者:Javaで画面フレームワーク?ReactとかVueとかじゃねーの?っていう人向け。 業務系 && Webアプリ で画面フレームワークといったら?(前置き) 普段はBtoBでJavaで業務アプリを開発しています。Spring Framework(Boot)だったり、JavaEE(JakartaEE)にお世話になっております。 今時の定番でいえば、やはり、Spring MVCでしょうか? 更にモダンになると、RESTfulAPI + Vue.js とか ReactJs とか

    【業務系】世の中に逆行するJavaのWebアプリでの画面フレームワーク選定 - Qiita
    syuu256
    syuu256 2020/12/16
  • 桃太郎電鉄の「いけるかな」を実現する高速なアルゴリズムの実装と考察 - Qiita

    この記事は「データ構造とアルゴリズム Advent Calendar 2020」16日目の記事です。 15日目の記事はyurahunaさんの「木分解上の動的計画法」で、 17日目の記事はtsukasa__diaryさんの「Lawler の K-Best 列挙アルゴリズム」です。 この記事内で使用しているプログラムやそのテストプログラムは全て以下のGitHubリポジトリで閲覧可能です。プログラムの詳細に興味がある方はこちらをご覧ください(ついでにStarを押していってくれると喜びます🙂)。 Github: ashiba/Imprementation_of_IKERUKANA: Momotaro Dentetsu is a game. 変更履歴 2020/12/21に「最終的に貧乏神が付かない移動方法 ~貧乏神持ちの場合~」, 「最終的に貧乏神が付かない移動方法 ~貧乏神がついていない場合~

    桃太郎電鉄の「いけるかな」を実現する高速なアルゴリズムの実装と考察 - Qiita
    syuu256
    syuu256 2020/12/16
  • 技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita

    はじめに 稿は、ソフトウェア開発を進める際に直面する様々な技術的な意思決定やライブラリ・フレームワーク・XaaS等を選択し正しく活用していくのかについての考え方をサポートすることを目的としています。「すべてにおいてこのようなワークフローを通じて検討すべきである」という主張ではありません。読者の抱える問題領域に応じて、必要な箇所を取捨選択するための1種の考え方を提供するものです。 そもそもアーキテクチャ・技術選定に時間をかけるべきか まず第一に伝えておきたいことは、技術選定やアーキテクチャ設計に常に慎重であるべきではないということです。ソフトウェアの規模やライフサイクルに応じて、そもそも時間をさく必要がないということも多くあります。書き捨てのシェルスクリプトにも読みやすいコードを求めて書くことは非常に重要ですが、だからといって組織だって議論・検討するようなものでもないのです。一方で、5年も

    技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita
    syuu256
    syuu256 2020/12/15
  • WSL2でスタートアップスクリプトを実行するHack - Qiita

    序論 WSL2 では起動時に systemd を自動スタートさせたり、/etc/rc.local によるスタートアップスクリプトの実行ができません。 Windowsスケジューラにスクリプトを登録するなど、回避策はありますが、筆者はなるべく Linux 環境内で設定を完結させたいと考えていました。 そのような訳で、WSL2Docker を使いたい場合、起動時にいちいち以下のようなコマンドを打っていました。 # dockerデーモン起動 $ sudo service docker start # WSL2 には cgroup 用ディレクトリがデフォルトで作られていないため作成しておく ## これをしておかないと Docker でプロセスのグループ化が必要になったときにエラーが起きる $ sudo mkdir -p /sys/fs/cgroup/systemd $ sudo mount -

    WSL2でスタートアップスクリプトを実行するHack - Qiita
    syuu256
    syuu256 2020/12/14
  • WebTransportとWebCodecsを組み合わせてビデオチャットを実装してみる - Qiita

    この記事は? こんにちは。NTTコミュニケーションズのyuki uchidaです。普段はSkyWayというWebRTCプラットフォームの開発やWebRTCリサーチャー(見習い)をしています。 この記事は NTTコミュニケーションズ Advent Calendar 2020 10日目の記事です。昨日はy-i さんの記事、 「グループ内プログラミングコンテストをオンライン上で開いた件」でした。 前回、 NTT コミュニケーションズのアドベントカレンダー3日目の記事として、「WebSocketの次の技術!?WebTransportについての解説とチュートリアル」という記事を投稿しました。 WebTransportが出てきた背景や、双方向通信の歴史について解説しているため、興味があれば是非ご覧ください。 今回の記事は、そのWebTransportとWebCodecsを組み合わせてビデオチャットを実

    WebTransportとWebCodecsを組み合わせてビデオチャットを実装してみる - Qiita
    syuu256
    syuu256 2020/12/11
  • とあるテーブルの中身を一括更新した話から学ぶPITR - Qiita

    この記事は番環境でやらかしちゃった人のアドベントカレンダー9日目の記事です。 https://qiita.com/advent-calendar/2020/yarakashi-production 去年に引き続き、今年も参加させてもらいました。 ※去年の記事はこちら→ データ移行をしただけなのに…(起こってしまったメール誤配信) 今年のネタも15年くらい前の事で、且つ自分が直接関わった事案ではないのですが、「そういやあの事件、今MySQLだったらどうするかな」と思い書くことにしました。 何があったか もうタイトルで出落ちしていますが番でUPDATE文を実行する際にWHERE句を付け忘れたという事故です。 当時の状況を整理するとこんな感じだったと思います。 対象サービス: 年商10億円くらいの自社サービス 作業内容: 仮登録されている顧客の情報を指定された情報で更新する 作業環境: DB

    とあるテーブルの中身を一括更新した話から学ぶPITR - Qiita
    syuu256
    syuu256 2020/12/10
  • 2020 年版 Command Line Tool を作ってみる in Rust - Qiita

    2 年前に書いた記事 Command Line Tool を作ってみる in Rust が今でも参照されることがあるようなので、2020 年版にアップデートした内容を書いていきます。 概要 この記事では Rust で Command Line Tool を作るときに、便利なライブラリ、ツール、そしてサービスを紹介します。主に CLI working group が取り組んでいる Command Line Applications in Rust(以後 Book と呼称)のアップデート内容が中心です。その他にプラスアルファして個人的に便利だと思うツールやサービスを紹介していきます。 こちらに完全なサンプルコードを公開しています。 見やすさの都合上、説明と直接関係のないコードや設定は省略して表示します。手元でビルドして確認したい場合はこちらのソースコードをダウンロードしてご確認ください。 エラ

    2020 年版 Command Line Tool を作ってみる in Rust - Qiita
    syuu256
    syuu256 2020/12/08
  • 管理者用初期化URLを踏んでWebサービスのデータをふっとばした話 - Qiita

    自己紹介 職のエンジニアではありませんが、ちょっとICT系に詳しそうなやつって感じで、部署のサーバ管理を任されたりもしています。 背景 私の(当時所属していた)部署では、毎年、数週間かけて前年の各人の業務実績をとりまとめて一つの冊子(PDF)にするという仕事があり、この作業を少しでも自動化するため、Webサービスが内製されました。当初は単純に各ユーザが自分の業務実績一覧をテキストで用意してアップロードするというものでしたが、秘伝のタレのように毎年少しずつ改良されたり、大幅に作り直されて別システムから業務データを取り込んでからブラウザ上で編集できるようになったりしつつ、なんやかんやあって私が引き継ぎます。他にやりたい人もなく、ひとり鯖管です。OSはCentOS6でした。 このシステムでは、毎年新しいデータを編集するため、その作業開始時にデータを初期化する必要があります。この作業も自動化し、

    管理者用初期化URLを踏んでWebサービスのデータをふっとばした話 - Qiita
    syuu256
    syuu256 2020/12/08
  • NetBSDを手探りで移植したときの話 - Qiita

    この記事は自作OS Advent Calendar 2020 7日目の記事となります。 はじめに 現在のオープンソースOSは、たとえばLinux開発ボードであればボードベンダーから移植済みのLinux環境が提供されたり、たとえばNetBSDであればクロスコンパイル環境が整備済みでドキュメントも用意されていて、最低限の移植作業で移植が完了したりします。 ぼくがNetBSDを移植した当時(1993年)はそうではありませんでした。ドキュメントもなくいろいろ手探りで、それも一人でやらざるを得ませんでした。苦労話のことは置いておいて、技術的にどういう物が用意され何を調べてどういう手順で移植していったかを記録に残せればと思います。(って前置きした割に苦労話が多いような気がします、すみません) かなり昔の話なので、けっこう忘れてることも多く、微妙に記憶が間違っていたりすることも、順番が前後していることも

    NetBSDを手探りで移植したときの話 - Qiita
    syuu256
    syuu256 2020/12/08
  • APIの向き先を間違えたままでリリースしたらTwitterトレンドに載った話 - Qiita

    はじめに この記事は 番環境でやらかしちゃった人 Advent Calendar 2020 の7日目の記事です。 注意事項 まじでTwitterのトレンドに載ったので、特定は控えてください。。 あくまでも事象を共有して、この世から番環境の事故を無くそうという強い想いです。 特定対策として多少なりフェイクを織り交ぜます そして現職の話ではないです。 背景 遠い過去の話 開発者ワイだけ EC2の構築は別会社に委託 「コードレビュー??甘えるな感じろ!!」な職場 Twilio API触るの初めて はじまり ある暑い夏の日、あるプロジェクトを1人で開発することになりました(まぁいつものこと) 要件はある条件化で発生するリクエストに対してTwilio API (以降はTwilio) でリクエストを受け取り、 そのリクエストを自身が開発したAPIサーバーで処理してレスポンスを返すというもの Twi

    APIの向き先を間違えたままでリリースしたらTwitterトレンドに載った話 - Qiita
    syuu256
    syuu256 2020/12/07
  • 1年半のソフトウェアエンジニア長期インターンで出会ったオススメ本をたくさん紹介します - Qiita

    イントロ ABEJAアドベントカレンダーの4日目に一昨日飛び込みました、長期インターン生の佐藤(Twitter: @TodayInsane)です。 去年は機械学習を通して、TWICEというK-POPグループへの愛を語りました。 ABEJAには昨年4月、「当に何も出来ないけど、休学してプログラミングとかエンジニアの経験を積みたいんです」という何とも不安な主張をするぼくを受け入れていただきました。 この1年半のエンジニア / リサーチ両インターンの過程で出会った良いをどしどし紹介します。 ちなみにインターン開始時は プログラミング、Pythonだけならちょびっと書けます!(ABCのB問題とか機械学習ライブラリの写経) HTMLってどんな風になってるんですか?(?) サーバ...??リクエスト...?? JavaScript、名前は聞いたことあります 英語の論文しんどい、2時間ぐらいかけてI

    1年半のソフトウェアエンジニア長期インターンで出会ったオススメ本をたくさん紹介します - Qiita
    syuu256
    syuu256 2020/12/06
  • 今時のPythonはこう書く2020 - Qiita

    はじめに システム作ってるとかライブラリ作ってるみたいなある程度Pythonを綺麗に1書くことが求められる方々に向けた記事です。 (機械学習系のライブラリを使うためにPython書いてる方とか、初学者の方にはちょっとあわないかも知れません) 綺麗に書くための作法の難しさって共有が面倒なところだと思うんですよね。その書き方は間違いじゃない、間違いじゃないけどもっといい書き方があるぞみたいなやつってなかなか指摘し辛いですし、じゃあ1人に対してレビューしたら他のメンバーにはどう伝える?そもそも伝える必要?俺の工数は?みたいになりがちです。 一番いいのはこういう時はこう書く!みたいなドキュメントを作って「ドキュメント違反です」ってレビューをしてあげることなんですが、まーそれもそれで超面倒じゃないですか。なのでこの記事がそのドキュメントの代わり、とまではいかなくとも礎くらいになればいいなと思って書き

    今時のPythonはこう書く2020 - Qiita
    syuu256
    syuu256 2020/12/06
  • 可視化や統計でデータに『恣意的なストーリーを語らせる』16の闇の魔術【bad charts】 - Qiita

    闇の魔術に対する防衛術 Advent Calendar 2020の三日目 はじめに データの可視化は非常に難しい。 まずデータの抽出が難しい ・データソースごとの整合性が取れているか ・取得したデータとソースデータに欠損が生じていないか ・SQL文を実行したサマリの結果が部分的に抜け落ちていないか。 その確認は時間的にも精神的にも苦痛。 しかし、苦労して抽出したデータも使い方で全くの無駄になる その例として「可視化や統計」部分に着目してお話をしようと考えた。 データの背景を知らない人には、データ可視化が歩み寄る手段になるし、伝えたい事をインパクトを伴って伝えられるなど非常にメリットである。 ※ただし 「可視化」の使い方によっては誤った理解をさせることも可能。 伝えたい事だけを正しいように見せる方法もあり、 可視化に詳しくない人に誤解を与えて自分の主張を通すこともできるかもしれない。 これは

    可視化や統計でデータに『恣意的なストーリーを語らせる』16の闇の魔術【bad charts】 - Qiita
    syuu256
    syuu256 2020/12/04
  • もしあなたが急にAndroidアプリを業務で作るはめになった場合の選択肢(2021年初頭版) - Qiita

    記事はAndroid Advent Calendar 2020の2020/12/01分です。 初っ端ということなので、2020年末と2021年頭でのAndroidエンジニアとして初めて業務でやる場合に抑えておいたほうが良い最低限の部分を書いていこうと思います。(ツッコミ待ちです) 対象 2021年3月ぐらいまでに !!業務!! でAndroidアプリを作らされる事になった可愛そうな人が居たとします この人は手続き型言語でオブジェクト指向プログラミングができる知識があり、Androidアプリもなんとなく趣味で作ったこともあるぐらいのレベル感です(なので上長からいきなりお前Android担当なと言われた) 最低限のAndroidアプリの作成の知識はあるものとします(画面の表示にはActivityがいるよとかは書かない) ゲームは対象外です 業務でAndroidアプリを作ることを想定しています

    もしあなたが急にAndroidアプリを業務で作るはめになった場合の選択肢(2021年初頭版) - Qiita
    syuu256
    syuu256 2020/12/02
  • AWS re:Invent 2020で発表された新サービス/アップデートまとめ - Qiita

    AWS re:Invent 2020の会期中に発表された新サービス/アップデートのまとめです。 今年も、後から出来るだけ素早く簡単に振り返ることができるようにまとめました! 凡例 (無印) 新サービス (Update) 既存サービスのアップデート (APN) パートナー制度に関連したリリース/アップデート 12/1 (火) 今年の開幕は「Amazon EC2 Mac instances」でした。 Amazon EC2 Mac instances macOS用のAmazon Elastic Compute Cloud (EC2) Macインスタンス EC2 Macインスタンスを使用すると、iPhoneiPadMacApple Watch、Apple TV、Safari用のアプリ開発者は、macOS環境を数分でプロビジョニングしてアクセスし、必要に応じて容量を動的に拡張し、AWSの従量課

    AWS re:Invent 2020で発表された新サービス/アップデートまとめ - Qiita
    syuu256
    syuu256 2020/12/02
  • AWS LambdaでAPI開発するときのパターン集 - Qiita

    背景 AWS LambdaAPI開発をする AWS LambdaAPI Gatewayを組み合わせることでサーバレスのAPIを開発することが可能です。サーバレスで構築することで手間をかけずにスケーラビリティやコストの最適化を手に入れることができ、さらに死活監視等が不要のため運用のコストを大幅に下げることができます。 開発パターンがまとまっていない サーバレスによるAPI開発は非常にメリットが多いのですが、開発パターンが様々あり一貫した方法があるわけではありません。例えば、Lambdaのデプロイは手動でzipをアップロードする方法や、SAM/ServerlesssFrameworkなどのデプロイ支援ツールを利用する方法、さらにオンラインエディタのCloud9を利用することもあります。関数ごとにディレクトリを分離する場合もあるし、ソースコードを共有してエントリーポイントだけ切り替える場合も

    AWS LambdaでAPI開発するときのパターン集 - Qiita
    syuu256
    syuu256 2020/11/29
  • 【C#】TCP/IPサーバで通信の切断を検出する - Qiita

    TCP/IPサーバでクライアントと通信している時、クライアントとの接続が切れた場合の処理のまとめです。 接続が切れたとは、以下の場合です。 クライアントが回線を切った クライアントが強制終了した ケーブルが外れるなど通信経路が切れた クライアントが接続を切った クライアントがshutdownを実行して回線を切った場合、サーバーのNetworkStream.Read()は長さ0の通信を受け取って終了します。

    【C#】TCP/IPサーバで通信の切断を検出する - Qiita
    syuu256
    syuu256 2020/11/25
  • M1 Macの開発環境 - Qiita

    MacBook Pro (M1)でのメモです。インストールできるかどうか状況確認メモです。 自分がよく使うものを中心に。なるべくARMネイティブになるように。もしプライマリーで提供されているインストール手段(.dmg利用など)でARM対応が済んでいればそれを紹介しますが、もしそれで対応していない場合にはMacPortsやソースビルドなどの結果も合わせて紹介します。 PowerPC->x86->x86_64とユニバーサルバイナリを挟んで対応してきたMacPortsはこういう過渡期に強いです。 なお、ここで紹介するバージョンは最新版から古い可能性がありますが、「M1サポートが追加された前後のバージョン」を明記するのを目標にしていますので、これより新しければ問題ないと見てもらえればと思います。 編集リクエストウェルカムです。 現在の状況 IDE/エディタ Eclipseはあまりきちんと試していま

    M1 Macの開発環境 - Qiita
    syuu256
    syuu256 2020/11/22
  • お願いがあります.オリジンサーバを暗号化なしの HTTP で運用しないでください. - Qiita

    インフラもセキュリティも,まだまだ未熟な私ではありますが,これだけはお願いします. オリジンサーバを暗号化なしの HTTP で運用しないでください. TL;DR ここで,オリジンサーバは,ファイアウォールやゲートウェイを通った先の最も奥にある,最終的にリクエストを処理するサーバをいいます.アプリケーションサーバが当てはまることが多いですが,静的ファイルサーバも例外ではありません.対して,間に入るサーバをエッジサーバと呼ぶことにします. また,この記事では暗号化なしの HTTP を HTTP , TLS レイヤ上の HTTP を HTTPS として記述します.HTTPS における TLS 上での通信も HTTP ではあるため,差別化のために明記しておきます. 何がだめなのか 近年, Web サイトのほとんどが TLS を用いた HTTPS で運用されています.パブリックな静的コンテンツに対し

    お願いがあります.オリジンサーバを暗号化なしの HTTP で運用しないでください. - Qiita
    syuu256
    syuu256 2020/11/19