タグ

ブックマーク / qiita.com (211)

  • 食べログの大規模なレガシーシステムを段階的に改善していく取り組み - Qiita

    こんにちは、べログシステム部長の京和です。 今年の4月から部長になりました。さらに4月に娘が生まれました エントリではべログで1年を通じて取り組んだ、大規模なレガシーシステムの段階的な改善について紹介します。[翻訳] Shopifyにおけるモジュラモノリスへの移行 に続いて2記事目のアドベントカレンダーになります。 どのように段階的に進めるか べログは今年で15年目のサービスで、Railsになってからは13年が経過しています。これだけ歴史があればあちこちにガタが来ているのは当然で、無数にある課題に対してどこからどのように取り組んでいくかを最初に決める必要がありました。 まず最初の前提として以下のように考えました。 既存のビジネスや開発を止めるような悪影響を与えない。むしろなるべく早くポジティブな影響を与えていきたい。 これだけ歴史のあるシステムを改善していくのは長い時間がかかる

    食べログの大規模なレガシーシステムを段階的に改善していく取り組み - Qiita
    nurse
    nurse 2021/01/15
  • [翻訳] Shopifyにおけるモジュラモノリスへの移行 - Qiita

    こんにちは、べログシステム部長の京和です。 エントリでは Shopify の Engineering Blog から、Kirsten Westeinde による「Deconstructing the Monolith: Designing Software that Maximizes Developer Productivity」を翻訳して掲載します。 べログではユーザーや飲店に価値を届けるスピードを最大化するべく、マイクロサービス化などをはじめとしたこれまでの組織やアーキテクチャを刷新するための取り組みを始めています。しかし、マイクロサービスはアプリケーションアーキテクチャとインフラアーキテクチャが複雑に絡み合ったシステムで技術的難易度が非常に高く、適切に構築できなければ「分散されたモノリス」と呼ばれるアンチパターンに陥ります。1 Shopifyではマイクロサービスではなく、

    [翻訳] Shopifyにおけるモジュラモノリスへの移行 - Qiita
    nurse
    nurse 2020/12/31
  • 技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita

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

    技術選定/アーキテクチャ設計で後悔しないためのガイドライン - Qiita
    nurse
    nurse 2020/12/20
  • Linuxにおける非同期IOの実装について - Qiita

    はじめに Linux 5.1に新しい非同期IOの仕組みとしてio_uringがマージされてから既に1年以上経ってしまいましたが、これまでのLinuxにおける非同期IOの使い方や実装を見ていきながら、io_uringが登場した背景やLinux AIO(libaio)の問題点をどのように解決しているのかについてまとめました。アプリケーションの書き方については大まかにしか説明していないので、それについてはmanページや別の記事を参照してください。 またIOという範囲が広いのですが、ここではブロックデバイス上のファイルシステムにおける通常ファイルに対するread/writeについて考えています(ネットワークは考えていないのでepollの話はないです)。 前提知識 簡単に前提となる話をおさらいします。 同期IOと非同期IO IOを行うシステムコールとしてすぐに思いつくのはread(2)/write(

    Linuxにおける非同期IOの実装について - Qiita
    nurse
    nurse 2020/12/06
  • Implementing keepalive on Fetch API - Qiita

    はじめまして、ひらのです。Blink 上でネットワーク関連の API (XHR, fetch API, WebSocket, …) の実装や、ローディング関連の実装を行っています。 稿では、Fetch API における Request および RequestInit の keepalive プロパティの実装について解説します。このプロパティの実装は、Chromium のリソースローディングパスのかなりトリッキーな既存実装をいじる必要があり、また、Chromium のマルチプロセスアーキテクチャを意識することも必要なため、(いわゆる下位レイヤーですでに実装されているスイッチに配線するだけの実装と違い) 楽しい実装です。 リンク集 稿では仕様の説明はほとんど行いません。以下を参照ください。 Fetch Spec (fetch, CORS) SendBeacon Content Securi

    Implementing keepalive on Fetch API - Qiita
    nurse
    nurse 2020/11/20
    “SendBeacon”
  • 2020年で最も需要のあるプログラミング言語 - Qiita

    記事はMost in-demand programming languages in 2020の日語訳です。翻訳元に報告していますが、もし苦情が来たら消します。 翻訳は不慣れなので変なところもあると思いますが、ご容赦ください。 ソフトウェア開発業界は絶えず変化しており、それは開発者の能力に対する企業のニーズも変化していることを意味します。そのため、あなたが想像できるように、Webアプリケーション、ゲーム、アルゴリズムなどのあらゆる側面の開発をカバーするために、選択できるプログラミング言語はたくさんあります。その上で、私たちは2020年で最も需要のあるプログラミング言語とその主な特徴について触れます。 JavaScript (回答者の71%がこのスキルに関する求職者を探している) Java (57%) C# (53%) Python (51%) PHP (40%) Ruby (15%)

    2020年で最も需要のあるプログラミング言語 - Qiita
    nurse
    nurse 2020/09/29
  • 四元数を用いた三次元回転計算の幾何学的意味 - Qiita

    任意方向の軸を中心にした三次元回転を計算する際、四元数(クォータニオン、quaternion)を用いる方法がよく使われる。 p' = q p \bar{q} \\ \left( q = \cos \frac{\theta}{2} + I \sin \frac{\theta}{2} = e^{I\theta / 2}, \quad I = n_x i + n_y j + n_z k, \quad |I| = 1 \right) この方法はオイラー角や回転行列を使う方法よりすっきりしていて、回転を表す $q$ の構築・解読も簡単に行える。一方で、この計算が成り立つことを示す説明は色々あっても、式の直接的な意味を説明していることは少ないように思う。私は以下の疑問を持っていた。 なぜ左右両方から掛けるのか? なぜ半分の角度を用いるのか? なぜ共役四元数を用いるのか? 四元数を片方だけ掛けた状態は何

    四元数を用いた三次元回転計算の幾何学的意味 - Qiita
    nurse
    nurse 2020/09/17
  • Amazon Aurora, Redshift, DynamoDBのワークロード別性能を比較する - Qiita

    はじめに AWSが提供する代表的なDBサービスには、クラウド前提で設計されたRDBAmazon Auroraデータ分析特化型RDBAmazon Redshift、ワイドカラム型DB(NoSQL)のAmazon DynamoDB1があります。AWSの各DBサービスの使い分けについては、一般的には概ね業務系システムのDBにはAuroraやDynamoDB、分析系システムのDBにはRedshiftを利用すれば良いとされていますが2、その根拠について定量的に確かめてみたいと思ったので、実際にOLTP/OLAPワークロード別の負荷をかけて各DBサービスの性能特性の違いについて確認してみました。 ※実際のシステム性能は様々な条件により変動します。あくまでも参考情報の一つとして捉えていただきますようお願いします。 前提知識 まず前提となる考え方として、OLTP/OLAPワークロードについて概説し

    Amazon Aurora, Redshift, DynamoDBのワークロード別性能を比較する - Qiita
    nurse
    nurse 2020/09/09
  • 旧石器時代のポインタをご利用の皆様へ ~provenance入門~ - Qiita

    現代のプログラミング言語ではポインタは単なるアドレスではなく,provenanceを伴った参照として扱われています. 世界は既に変わっています. 概要 ポインタは単なるアドレスではありません. ポインタにはprovenanceという,どのオブジェクト由来かの情報が含まれています. Provenanceを使うことで,最適化が効きやすくなったり,堅牢なプログラムを書きやすくなったりします. 追記: 次の英語記事を読むとprovenanceが必要な理由についてもっとよく知ることができます.クリックしよう!!!!(2020-12-15) https://www.ralfj.de/blog/2020/12/14/provenance.html ポインタはアドレスではない 次のCプログラムを見てみましょう. #include <stdio.h> #include <string.h> int main

    旧石器時代のポインタをご利用の皆様へ ~provenance入門~ - Qiita
    nurse
    nurse 2020/09/07
  • 未経験者がフロントエンドの仕事を2年やって、各言語や仕事に抱いた感想 - Qiita

    プログラミング言語やフレームワークに関する疑問をググるとだいたいQiitaの記事がヒットして、開くたびにアカウント登録しろしろとうるさいのでキレながらアカウント作りました。サブカルメンヘラクソ女の@hg0です。折角なのでアカウント登録のついでに書こうと思います。 大学は芸術系で、デザインやメディアアートをかじっていた程度なのですが、縁があってWebエンジニア業界に就職することが出来ました。 2年ほど、フロントエンドのお仕事・勉強をさせて頂いて思ったこと、躓いたこと、各言語やフレームワークを使って思ったことを振り返りながら書いてみようと思います。 言語・フレームワークについて HTML/CSS/JavaScript 「Webサイト制作」「フロントエンド」の勉強をするにあたって、誰もが一番最初に学ぶのは間違いなくこれだと思います。どれも国際的な団体が、仕様や書き方を中立的に定めている、Web業

    未経験者がフロントエンドの仕事を2年やって、各言語や仕事に抱いた感想 - Qiita
    nurse
    nurse 2020/08/29
  • AWS Cost Explorerに渡す、Metricsの値の意味 - Qiita

    🔶 Metrics AWS Cost ExplorerのGetCostAndUsage等に渡すリクエストパラメータには、Metricsというパラメータがあります。 リクエストパラメータ例 { "Filter": { "Tags": { "Key": "string", "Values": [ "string" ] } }, "Granularity": "string", "Metrics": [ "string" ],  // <--この値です "NextPageToken": "string", "TimePeriod": { "End": "string", "Start": "string" } } このMetricsにセットできる値は、マニュアルには以下の7つがセットできるとだけ書かれています。 Valid values are AmortizedCost, BlendedCo

    AWS Cost Explorerに渡す、Metricsの値の意味 - Qiita
    nurse
    nurse 2020/08/20
  • 【エンジニアリング組織論への招待】を10~15分で読めるように1万文字程度でまとめてみた - Qiita

    ■ はじめに エンジニアリング組織論への招待というを読みました。 ジョブ理論 に続く名著でした。 理想に向けて、事業を最速かつ生産性高く成長させるには、「未来」と「他人」という2つの不確実性をマネジメントすることで、成し遂げられる ソフトウェア開発における不確実性のマネジメントには、不確実性に立ち向かえるチーム開発が何よりも重要である(ex. メンタリング、権限移譲、信頼関係、透明性) の2点を中心に、事業成長×組織の幸せに必要なフレームワークを提供してもらえるものでした。 ソフトウェア関連の事業やプロダクトに関わっている人(特にマネジメントしている人)は職種限らず読むと、みんな幸せになれそうなので、1人でも多くの人がこの概念に触れられるように、私なりの視点で雑多にまとめました。 (ちなみに著者の 広木さん - hiroki_daichi には個別にご連絡し、要約した記事の公開許可は(

    【エンジニアリング組織論への招待】を10~15分で読めるように1万文字程度でまとめてみた - Qiita
    nurse
    nurse 2020/08/16
  • 2億資金調達してから二年、結構量子コンピュータ頑張った結果 - Qiita

    はじめに 2008年に起業してからコツコツやっていましたが、2014年くらいから量子コンピュータの研究開発をがんばりました。資金調達もしてある程度技術に目処がついたのと、若者から起業したいという相談をよくもらうので、まとめておきます。 経営は大事 簡単にいうとベンチャーをやろうとしたら技術よりもキャッシュが大事です。なので、財務や経営感覚がついてから技術をつけないと結構大変と思います。特に1年目は慣れない事務に忙殺されますし、二年目以降はキャッシュが厳しくなります。 あとは、最初は経営に夢見て舞い上がりがちなので、その気持ちがおさまって厳しさが一通り身についたところからが番です。 調達の前に譲渡 2008年から10年くらいはコツコツ会社をやっていた上、そんなに頑張るタイプでもなかったのですが、たまたま2014年からやっていた量子コンピュータのニュースが巷で新聞に載るようになってから、周辺

    2億資金調達してから二年、結構量子コンピュータ頑張った結果 - Qiita
    nurse
    nurse 2020/07/26
  • めくるめくLinuxカーネルじゃないLinux実装の世界 - Qiita

    EDIT^7: blink と box86、FEX。 EDIT^6: Unikraft 。 EDIT^5: Tilck 。 EDIT^4: コメント。gVisor はすっかり忘れていました!Linuxを拡張するためにLinuxを実装した良い例だと思います。LINE有りましたね。。 SF.netのCVSはもう死んでしまったので除外にしました。。 OSvのバイナリ互換 はPIEであることが要求なので。。といっても世間的にはもうLinux = Debian/Ubuntu で良いですかね。。表現を調整しました。 EDIT^3: Noah忘れてた! EDIT^2: Cygwinは 下書き段階で削ってしまった 。。 qemuを移植したとき に互換性がイマイチだったので。。特殊fdやprocfsの充実ぶりとかを考えると "かなりLinux" と言って良いとは思うけど、 mmap 等でLinuxとWind

    めくるめくLinuxカーネルじゃないLinux実装の世界 - Qiita
    nurse
    nurse 2020/07/15
  • 「(HTML) + CSS」のみを使って、今「リアルな電卓」を作ってみた - Qiita

    続編を書きました。CSSも大幅改善してるので、一度見てみてください。 【小数点実装】「(HTML +) CSS」のみを使って、今「もっとリアルな電卓」を作ってみた - Qiita 完成品 まずは、CodePenで完成品を紹介します。ボタンを押して計算を試してみてください。 ※ スマホだと反応が悪い場合があります。 See the Pen qiita_calc_last by j5c8k6m8 (@j5c8k6m8) on CodePen. はじめに はじめて、CSS カウンター の存在をはじめて知ったときは驚きました。 テーブルの行番号は (必要であればJavaScriptで動的に) HTMLに記載するしか方法がない と思っていたからです。 Qiitaにも、CSSカウンターのサンプルを載せた良記事があります。 CSS でテーブルに行番号を振る - Qiita CSSで見出しタグに連番をつけ

    「(HTML) + CSS」のみを使って、今「リアルな電卓」を作ってみた - Qiita
    nurse
    nurse 2020/07/15
  • TypeScript 4.0で導入されるVariadic Tuple Typesをさっそく使いこなす - Qiita

    今日、Anders HejlsbergさんによってTypeScript 4.0に導入予定の新機能のプルリクエストが出されました。この記事では、この新機能Variadic Tuple Typesを解説します。 ちなみに、現在(この記事の執筆時)のTypeScriptのバージョンは3.9であり、4.0はその次のバージョンです。一見メジャーバージョンアップに見えますが、TypeScriptはsemantic versioningを採用していないため、3.9 → 4.0は特別なリリースというわけではなく、3.8 → 3.9とかと規模は同程度です。 Variadic Tuple Typesの基 さて、Variadic Tuple Typesは、一言でいえばタプル型の中に...Tと書ける機能です。この構文はよく知られたスプレッド構文のいわば型バージョンであり、あるタプル型の要素たちを別のタプル型に埋

    TypeScript 4.0で導入されるVariadic Tuple Typesをさっそく使いこなす - Qiita
    nurse
    nurse 2020/06/22
  • 日本の住所の正規化に本気で取り組んでみたら大変すぎて鼻血が出た。 - Qiita

    先日、弊社では Community Geocoder というサービスをリリースしました。 Community Geocoder 紹介記事 さて、このジオコーダーは、住所を正規化してそれを「大字町丁目コード」という12桁の数字に変換し、そのコードをファイル名として GitHub ページ上に大量においた JSON ファイルにアクセスして緯度経度を取得するということをやっています。 つまり、住所の正規化からコードに変換する部分がとても重要で、そもそも正規化に失敗してしまうとどうしようもないという仕様なんです。 さいわい先日経産省が公開した IMI コンポーネントツール である程度のことをやってくれるのですが(というかそうであることを期待したのですが)、いろいろ調べ始めると住所という仕組みはほんとに複雑で、Facebook で絡んでくださった @hfu さんいわくまさに「自然言語処理そのもの」であ

    日本の住所の正規化に本気で取り組んでみたら大変すぎて鼻血が出た。 - Qiita
    nurse
    nurse 2020/06/05
  • すべてのエディタでSQLの自動補完をするためにSQL Language Server(sqls)を作った - Qiita

    sqlsとは sqlsとは、いま私が開発中のSQL用Language Serverです。SQLをエディタで編集するときの支援機能を実装したサーバとなっており、主な特徴は以下です。 Language ServerなのでLSクライアントが存在するエディタであればどんなエディタでも利用可能 SQL編集支援機能 自動補完(テーブル名、カラム名など) 定義参照 SQL実行 複数のRDSMSに対応 MySQL PostgreSQL SQLite3 Language Serverとは Language Server(あるいはLanguage Server Protocol)とは、プログラム言語の開発支援機能をエディタに提供するサーバ、およびその通信内容を規定したプロトコルです。ただしサーバといってもほとんどの場合ローカル内にホスティングしてローカルのエディタと通信をします。 ここでは主題ではないので詳し

    すべてのエディタでSQLの自動補完をするためにSQL Language Server(sqls)を作った - Qiita
    nurse
    nurse 2020/05/28
  • Windows における su(sudo) 事情考察 - Qiita

    su (sudo)とは suというと、通常は UNIX(Linux)で、ログアウトせずにユーザを切り替えるコマンドを指し、主に root (管理ユーザ)に切り替える用途に使われることが多い。そして、sudo は1コマンドだけユーザを切り替えて実行するコマンドだ。 最近、Windows でも su(sudo)的なコマンドが現れたが、これは常に管理ユーザで使われがちの Windows においては、ユーザを切り替えるというよりも、管理者権限を獲得するためのコマンドという位置づけとなっていることが多い。 文書では、管理者権限を得てコマンドを実行する操作について、手法を紹介してみたい。 管理者権限があるかどうかのチェック C++ advapi32.dll の OpenProcessToken と GetTokenInformation という API を組み合わせてチェックするという方法がある。詳

    Windows における su(sudo) 事情考察 - Qiita
    nurse
    nurse 2020/05/17
  • Windowsの標準NVMeドライバでNVMe SSDにアクセスする(Read/Write/Dataset Management) - Qiita

    なお、Windows Driver KitはVisual Studio Installerではインストールできません。このため、Webページ[8]に記載の手順に従ってインストールする必要があります。 Windowsのストレージアーキテクチャ 具体的なアクセス方法の説明の前に、Windowsのストレージアーキテクチャについて、一部推測も含みますが、簡単にまとめます。 Windowsのストレージアーキテクチャは、デバイスドライバを含めた各種プログラムやライブラリが階層構造を構成しています[5][6][7][9][10][13]。 通常、ユーザランドで動作するアプリケーションプログラムがストレージにアクセスする場合、アクセスの対象としてファイルを指定します。例えばファイルの読み書き処理です。 これらの処理要求は、アクセス対象のファイルを管理するファイルシステム、ファイルシステムが存在するボリュー

    Windowsの標準NVMeドライバでNVMe SSDにアクセスする(Read/Write/Dataset Management) - Qiita
    nurse
    nurse 2020/05/10