タグ

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

  • CRDT (Conflict-free Replicated Data Type)を15分で説明してみる - Qiita

    下記はスライドの講演の書き下しのようになっているので、スライドだけ見るんじゃなくて、スライドを見ながら文章を読み進めたい方向けです。 CRDTとは 今回は、CRDTというデータ構造について紹介します。CRDTはそもそも2011年にSSS(Stabilization, Safety, and Security of Distributed Systems)という国際会議で、INRIA(フランス国立情報学自動制御研究所)のMarc Shapiro博士によって発表された、比較的新しいモノです。 CRDTは"Conflict-free Replicated Data Type"の略で、日語で言うと、__コンフリクトしない複製可能なデータ__といった感じです。 CRDTには実現方法によって2種類の呼び方が存在します(それぞれの略もまたCRDTなのでややこしいですが)。 Commutative Re

    CRDT (Conflict-free Replicated Data Type)を15分で説明してみる - Qiita
    hoppie
    hoppie 2024/03/26
  • 【Kaigi on Rails 2023】発表資料まとめ - Qiita

    2023/10/27, 28 に行われた Kaigi on Rails の資料まとめです。 資料が公開され次第、内容を更新します。公開済みのURLがあれば教えてください。 10/27 スケーラブルActive Jobs with Sidekiq Enterprise (スポンサーLT) Rails アプリの 5,000 件の N+1 問題と戦っている話 HTTPリクエストを手で書いて学ぶ ファイルアップロードの仕組み 生きた Rails アプリケーションへの delegated types の導入 Async Gem で始める ruby 非同期プログラミング Exceptional Rails やさしいActiveRecordのDB接続のしくみ Update Billion Records 初めてのパフォーマンス改善〜君たちはどう計測す(はか)るか〜 Simplicity on Rails

    【Kaigi on Rails 2023】発表資料まとめ - Qiita
    hoppie
    hoppie 2023/10/30
    “Hotwire的な設計を追求して「Web紙芝居」に行き着いた話”
  • Wi-Fiの接続が不定期に切れる状況(イベントID: 1014DNS Client Events)を解決する - Qiita

    はじめに 約半年(2021/9末)前から、Wi-Fiの接続が不定期に切れる事象が自分のPCで発生してました(スキマ時間で調べていた)。 ネットワークに詳しくないなりに調べて、「接続が切れたときにWindows イベントログにID: 1014DNS Client Events」が記録されていることがわかりました。 調査結果と対策を記載してみようかと思います。 調査結果 事象 Wi-Fiの接続が不定期(数十分~数時間と間隔は不定期)に切れる。 環境について OS: Windows10 Home 64bit version 21H1(OSビルド19043.1546) モデム: HUMAX HGJ310 ネットワークアダプタ: Qualcomm Atheros QCA61x4A Wireless Network Adapter バージョン 12.0.0.938 2.4GHzの周波数帯を利用している

    Wi-Fiの接続が不定期に切れる状況(イベントID: 1014DNS Client Events)を解決する - Qiita
    hoppie
    hoppie 2023/06/04
  • gccの最適化指示-Ofastは危険 - Qiita

    はじめに gccの最適化指示である-Ofastをお気軽に使ってる記事を見掛けたので注意喚起的なやつです。 -Ofastとは何ぞや gccのドキュメントから引用 https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-Ofast -Ofast Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for all standard-compliant programs. It turns on -ffast-math, -fallow-store-data-races and the Fortran-specific -fstac

    gccの最適化指示-Ofastは危険 - Qiita
    hoppie
    hoppie 2023/02/07
  • 要注意!?本当に怖いCloudFront - Qiita

    はじめに 先日、海外向けに運用していた個人ブログがDDoS攻撃を受けてしまいました。 こういったサイバー攻撃は、企業に対して行われるものという先入観がありました。 しかし、調べてみると、最近では個人ブログも標的になってきていると報告があがっていました。 CloudFrontとS3で作成する静的サイトが人気になっており、特にCloudFrontの危険性について紹介したいと思います。 DDoS攻撃って? ざっくり説明すると、ウェブサイトやサーバーに対して過剰なアクセスやデータを送付するサイバー攻撃です。 インフラストラクチャーレイヤー攻撃(レイヤー3、4)とアプリケーションレイヤー攻撃(レイヤー6、7)の2つに分類されます。 ご指摘を頂きましたので、訂正いたします。 厳密には、EDoS攻撃でした。 AWS Shield Standard AWSを利用した場合、defaultでAWS Shiel

    要注意!?本当に怖いCloudFront - Qiita
    hoppie
    hoppie 2022/11/07
  • タグを入れるだけで Web サイトを高速化する Repro Booster について思うこと - Qiita

    こんにちは。ぬこすけです。 最近(2022/10/26)に、マーケティングツールを開発する Repro が、タグを入れるだけでウェブサイトの表示速度を高速化させるツール「 Repro Booster 」をリリースしました。 ニュース Repro 公式サイト PRTIMESより引用 表示速度アップの仕組みは簡単にいうと、ユーザーのクリックを予測して次のページのデータを先読み & 端末にキャッシュして次のページの読み込み速度を上げるようです。 たまたま SNS でこのニュースを見かけた時、「 ほげえええ 」と衝撃が走りました。 表示速度アップの仕組み自体はエンジニアだったらあまりびっくりはしないかもしれません。 例えば、 Next.js には next/link でリンクを元にデータの先読み機能があったり、 gueess という機械学習を用いてユーザーが次にアクセスする可能性が高いページを予測

    タグを入れるだけで Web サイトを高速化する Repro Booster について思うこと - Qiita
    hoppie
    hoppie 2022/11/02
  • 【RSpec】Railsのモデルスペックでバリデーションのテストは書くべきか否か? - Qiita

    はじめに:単純なバリデーションならテストコードは不要(という私見) Railsでモデルスペックを書くとき、バリデーションのテストを書く人をよく見かけます。 たとえば以下のようなイメージです。 RSpec.describe User, type: :model do # こういうテストは書く?書かない?? describe 'validation' do example 'nameは必須' do user = User.new(name: '') expect(user).to be_invalid user.name = 'Alice' expect(user).to be_valid end end end 決して、バリデーションのテストを書くことが悪いことだとは言いませんが、個人的には単純なバリデーションであれば別に書かなくてもいいかな、と考えています。 単純なバリデーションにテストコ

    【RSpec】Railsのモデルスペックでバリデーションのテストは書くべきか否か? - Qiita
    hoppie
    hoppie 2022/08/24
    自分は “presence: true” のところtypoしたりするマンなので(shoulda matchers活用しつつ)テスト書いたりします
  • opentelemetry-ruby で Rails アプリケーションをトレーシングしてみる - Qiita

    はじめに まだ beta 版のようですが、気になってた opentelemetry-ruby を使って Rails アプリケーションへのリクエストをトレースし、Jaeger で可視化するところまでやってみようと思います。 Opentelemetry とは OpenCensus と OpenTracing の2つのプロジェクトが統合されたもので、Tracing だけでなく Metrics、Logs といった Observavility 全体を実現するための標準化された API およびライブラリが提供されています。今回は、Opentelemetry のなかの Tracing を使ってみようと思います。 公式ページの絵がかわいくてほっこりしますよね。 なお、Opentelemetry のアーキテクチャについては、New Relic 社の『OpenTelemetry: 計装器を長く使い続けるために

    opentelemetry-ruby で Rails アプリケーションをトレーシングしてみる - Qiita
    hoppie
    hoppie 2022/07/30
  • CrystalでAtCoder青色になりました(色変記事) - Qiita

    AtCoder競技プログラミングを始めて二年半で青色コーダーになりました。使用言語はCrystalです。この記事はいわゆる色変記事ですが、Crystal言語推しを目的としています。 自己紹介 54歳で競技プログラミングを始めて56歳で入青 帯、一人娘(大学院)あり 元ゲーム開発者、現金融系SIer技術系管理職 Perl生まれのRuby育ち。毎年一つは新しい言語を覚えたい。 数学科出身 AtCoder開始~入緑まで 会社の後輩に紹介されてAtCoderの存在を知り興味を持って始めました。趣味でも仕事でも使用していたRubyを選択。ABC144から始めましたが、ビギナーズラックで水パフォを取り、毎週参加するようになっていきます。丁度10回目で入緑。 緑~水まで 件の後輩氏は「1年で青になる」と宣言して会社を辞めてしまったのですが、当方は世界の腕自慢と競えるオンラインゲームの感覚で、趣味

    CrystalでAtCoder青色になりました(色変記事) - Qiita
    hoppie
    hoppie 2022/06/05
  • "𝑰𝑵𝑻𝑬𝑹𝑵𝑬𝑻" のような装飾文字に変換するJavaScriptのライブラリを書いた - Qiita

    Web上では、アルファベット(ASCII文字)を 𝑰𝑵𝑻𝑬𝑹𝑵𝑬𝑻 や 𝓘𝓷𝓽𝓮𝓻𝓷𝓮𝓽 のような Unicode 上の装飾文字(記号)を用いて表記するお遊びがあると思います。俗に「フォント変換」1などと呼ばれているアレです。 ブラウザからであればyaytextなどで簡単に"変換"できるのですが、Discordのbotに組み込むにあたって(自分にとって)望ましい挙動をするライブラリが見当たらなかったので、サクッと作ってnpmに公開しました。 ドキュメントは https://www.npmjs.com/package/unicode-text-decorator をご覧ください。 使い方 Note: 「背景」の節で言及しているアクセシビリティ上の問題についてもご一読ください。 非常にシンプルです。 const utd = require('unicode-te

    "𝑰𝑵𝑻𝑬𝑹𝑵𝑬𝑻" のような装飾文字に変換するJavaScriptのライブラリを書いた - Qiita
    hoppie
    hoppie 2022/05/17
  • Java開発者に送る、Kotlinのジェネリック - Qiita

    KotlinのジェネリックはJavaで表現可能な仕様と、そうでないものがあります。 まずは、Javaで表現可能なものから見ていきます。 ジェネリック関数 Kotlinでジェネリック関数を宣言してみます。 // Kotlin fun <T> convertToString(arg: T) : String { return arg.toString() }

    Java開発者に送る、Kotlinのジェネリック - Qiita
    hoppie
    hoppie 2022/05/05
  • OAuth アクセストークンの実装に関する考察 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに この記事では、OAuth 2.0 のアクセストークンの実装に関する考察を行います。記事の執筆者人による動画解説も『OAuth & OIDC 勉強会 【アクセストークン編】』で公開しておりますので、併せてご参照ください。 English version of this article is here → "OAuth Access Token Implementation". 1. アクセストークン実装方法の分類 OAuth のアクセストークン※1の実装方法は認可サーバーの実装依存です。 実装依存ではありますが、RFC 67

    OAuth アクセストークンの実装に関する考察 - Qiita
    hoppie
    hoppie 2022/04/09
  • Gradleのマルチプロジェクトを使ってモジュラモノリスを実現する - Qiita

    エキサイト株式会社メディアの開発担当の佐々木です。 弊社では、現在CMSの再開発をSpringBoot使って構築しています。現時点では人数とかも少数な為、モノリスな構成になっていますが、将来的にはマイクロサービスにはする予定で、最近少し聞くようになってきたモジュラモノリスの構成を意識して、プロジェクトを作成しています。Gradleのマルチプロジェクトを使用してモジュールごとにプロジェクトを分けて開発を行っています。下記にて概要を解説します。 一般的なSpringBootの構成 一般的なSpringBootのディレクトリ構成は下記のようになります。 ├── gradle │   └── wrapper └── src ├── main │   ├── java │   │   └── com │   │   └── example │   │   └── demo │   │   ├── c

    Gradleのマルチプロジェクトを使ってモジュラモノリスを実現する - Qiita
    hoppie
    hoppie 2022/03/21
  • graphql-rubyのmutationが勝手にInputObjectを生成する理由 - Qiita

    最近、新しくgraphql-ruby(v1.12.3)を使ったRailsアプリケーションを作ったら、下記のようなMutationのBaseクラスが生成されるようになっていました。 module Types class BaseMutation < GraphQL::Schema::RelayClassicMutation argument_class Types::BaseArgument field_class Types::BaseField input_object_class Types::BaseInputObject object_class Types::BaseObject end end 私が初めてgraphql-rubyを使った時(v1.9系)はBaseMutationが生成されなかったため、GraphQL::Schema::Mutationを継承してMutationク

    graphql-rubyのmutationが勝手にInputObjectを生成する理由 - Qiita
    hoppie
    hoppie 2022/03/19
  • エンジニアの"有害な振る舞い"への対処法 - Qiita

    記事の続編として、自分が有害な振る舞いをしないようにする改善の取り組みを扱った記事も書いてます。 エンジニア上司が"有害な振る舞い"を改善する方法 ※「難しい人」は概念として用い説明するのに便利な言葉でしたが、誤解を生じたり、記事のポリシーに沿わない使用(難しい人というラベリングを特定個人に適用する使い方)が容易にされてしまいそうだと分かりました。そのような誤用を防ぐことを最優先とするため、代わりに「有害な振る舞い」という表現を使用し、人ではなく振る舞いに着目するタイトル及び文章に変更致しました。 はじめに 以下の記事を読んだ際に「難しい人」という表現が何となく面白い響きで印象に残ったので、これを機に自分の考えを今までの経験をもとに書きたいと思います。 “難しい人”が1人入ると、チームの生産性は30〜40%低下する 対抗せずに、場の「安心感」を作るための3つの条件 - ログミーBiz

    エンジニアの"有害な振る舞い"への対処法 - Qiita
    hoppie
    hoppie 2022/01/03
  • StackOverflowからのコピペをやめろ。今すぐにだ。 - Qiita

    Original article:https://dev.to/dotnetsafer/rip-copy-and-paste-from-stackoverflow-trojan-source-solution-4p8f その昔コピペできない文章というものがありました。 実際は単にフォントを変えているだけというものですが、人間の目に見える文字と実際の文字が異なることを利用した攻撃の一種と見ることもできます。 さて、最近になって似たような攻撃に関する論文が公開されました。 人間には見えない文字を織り交ぜることによって、一見問題ないコードが実は脆弱になってしまうというものです。 ただ論文は堅苦しいうえに長くて読むのがつらいので、具体的に何がどうなのかよくわかりません。 平易に解説している記事があったので紹介してみます。 以下はDotnetsafer( Twitter / GitHub / Web

    StackOverflowからのコピペをやめろ。今すぐにだ。 - Qiita
    hoppie
    hoppie 2021/12/31
    多分Rustが11月に対応してたやつと同じ攻撃 https://blog.rust-lang.org/2021/11/01/cve-2021-42574.html
  • AtCoder に登録したら解くべき精選過去問 10 問を Rust で解いてみた - Qiita

    はじめに drken さんの素晴らしい記事で紹介されていた AtCoder に登録したら解くべき精選 10 問 を、Rust で解いてみました。 扱う問題一覧はこちらです。 自分が Rust競技プログラミングを始めたときはかなり躓いてドキュメントや stackoverflow を何度も調べたので、そのような負担を少しでも軽減できればと思い書きました。 対象 この記事は以下の入門書を軽く読んだ方、または他の言語経験があり Rust の雰囲気だけでも知りたい人が対象です。 The Rust Programming Language 入出力 どの言語でも最初に躓くのが入力だと思います。Rust も例にもれずそうなりがちですが、tanakh 先生による便利なマクロがおすすめです: Rust競技プログラミングの入力をスッキリ記述するマクロ この記事は上記の記事が書かれる前に書かれたので、以下の

    AtCoder に登録したら解くべき精選過去問 10 問を Rust で解いてみた - Qiita
    hoppie
    hoppie 2021/12/28
  • そのフィールド、nullable にしますか、requiredにしますか - Qiita

    プリミティブな型としては、 integer, number, string, boolean の4種類のみです。 さらに format というプロパティを指定すると、値の詳細なフォーマットを定義することができます。 int32, int64, float, double あたりは言わずもがなですね。 string に関しては byte と binary の他に、ISO 8601(RFC3339)で定義されている日付形式が表現可能です。 基形式: 20191129T203637+0900 拡張形式: 2019-11-29T20:36:37+09:00 password はいまいちよく分かりません。 OASとして定義されているフォーマットは以上なのですが、 format には他にも自由に値を設定することができます。 email や uuid, uri, hostname, ipv4, ipv

    そのフィールド、nullable にしますか、requiredにしますか - Qiita
    hoppie
    hoppie 2021/12/19
  • Renovateを半年運用して得た知見 - Qiita

    「Ateam Finergy Inc. Advent Calendar 2020」7日目は @okonomi が担当します。 はじめに 「Renovate」は依存ライブラリの自動更新ツールです。 私が担当しているサービスでもRenovateを導入していて、半年ほど運用してみてそれなりに軌道に乗ってきたので、一度振り返ってみようと思います。 前提として、下記のような環境・アプリで運用しています。 self-hosted Gitlab フロントエンドのコードを含んだRailsアプリ Renovateはローカルでも試せる Renovateに対する私の理解不足だったんですが、RenovateWebサービスとしての提供のほかにOSSとしても公開されており、ローカル環境で動かすことができます。 https://docs.renovatebot.com/self-hosting/#installing

    Renovateを半年運用して得た知見 - Qiita
    hoppie
    hoppie 2021/11/15
  • Macの日本語キーボード環境でのAlacrittyの文字サイズ拡大ショートカットについて - Qiita

    デフォルトキーバインドの確認 デフォルトではCmd-=にショートカットが割り当てられていると思うのですが、 おそらくMacの日語キーボード環境でAlacrittyの文字サイズ拡大が設定変更なしだとできません。 | Key0, ModifiersState::CTRL; Action::ResetFontSize; | | Equals, ModifiersState::CTRL; Action::IncreaseFontSize; | | Add, ModifiersState::CTRL; Action::IncreaseFontSize; | | Subtract, ModifiersState::CTRL; Action::DecreaseFontSize; | | Minus, ModifiersState::CTRL; Action::DecreaseFontSize; | 間

    Macの日本語キーボード環境でのAlacrittyの文字サイズ拡大ショートカットについて - Qiita
    hoppie
    hoppie 2021/10/18