タグ

k0yoshitsuguのブックマーク (9,803)

  • SPF (やDMARC) を突破する攻撃手法、BreakSPF | 朝から昼寝

    SPF レコードで許可されている IPアドレスの実態がクラウドやプロキシ等の共用サービスのものであるケースは多く、それらの IPアドレスが第三者によって利用できる可能性があることを悪用し、SPF 認証を pass、結果的に DMARC 認証まで pass して詐称メールを送信できてしまうことを指摘した論文が公開されています。 この論文では、上記のような SPF の脆弱な展開に対する攻撃手法を BreakSPF と呼び、関連するプロトコルや基盤の実装に対する分析と共に、その内容が体系的にまとめられています。 記事では、その論文を参照しながら、簡単に概要をまとめておきます。 補足事項 (2024/3/5) 記事につきまして、(当サイトとしては) 多くのアクセスいただいているようで (ちょっとビビってま) す。まことに大変ありがたいことに色々とシェアいただいたりしたようです。 そこで、記事の

    SPF (やDMARC) を突破する攻撃手法、BreakSPF | 朝から昼寝
  • Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社

    概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Performance impact of the memoization idiom on modern Ruby | Rails at Scale 原文公開日: 2024/02/14 原著者: Jean Boussier(byroot) Ruby 3.2における主要な内部変更のひとつに、オブジェクトシェイプ(object shape)の導入があります。 記事では、オブジェクトシェイプが導入された理由、仕組み、制限事項について解説します。 🔗 オブジェクトのインスタンス変数はどのように保存されるのか Rubyは非常に動的な言語なので、インスタンス変数へのアクセスという単純な操作でも多くの作業を伴います。 Rubyオブジェクトは、ほとんどの場合インスタンス変数を「参照の配列」に保存します。 たとえば、インスタンス変数を2個持つ

    Ruby: メモ化のイディオムが現代のRubyパフォーマンスに与える影響(翻訳)|TechRacho by BPS株式会社
  • LocoはRailsにインスパイアされたRustの新しいフレームワーク

    垂直スケーラビリティと効果的なテストによる金融取引システムのパフォーマンスと効率の最大化 Peter Lawrey氏はJavaチャンピオンであり、Chronicle SoftwareのCEOとして、開発者を鼓舞してソリューションのクラフトマンシップを高めることに情熱を注いでいる。経験豊富なソフトウェアエンジニアとして、Lawrey氏はソフトウェア開発プロセスにおけるシンプルさ、パフォーマンス、創造性、革新性を奨励することに努めている。

    LocoはRailsにインスパイアされたRustの新しいフレームワーク
  • うるう日にしか発生しないバグ

    昨日うるう日にしか発生しないバグに遭遇した。Javascriptを書く人には有名な話だとは思うので大して面白くはないかもしれないが一応メモ。 詳しくは書けないがバグが発生した関数の仕様としてはざっくりと下記のような感じ。 対象の年月日が基準日の1年前から1年後の間に含まれる場合はtrueを返しそうでない場合はfalseを返す 引数として2020-12-24というフォーマットの文字列が渡される(判定対象の日) 引数として2021-01-01というフォーマットの文字列が渡される(+-1年の基準日) Javascriptで書く (例) 対象の日: 2024/10/10 基準日: 2024/01/28 この時、trueになる範囲は2023/01/28 ~ 2025/01/28。なので2024/10/10はtrue。2023/01/28も2025/01/28もtrueになる。閉区間。 とあるコードの

    うるう日にしか発生しないバグ
  • AWSが教えてくれないコスト削減の小話いろいろ | 外道父の匠

    米ドル/円 が150円と計算しやすくなり、コスト削減の圧力が日々強まる中、皆様お宝探しと垂れ流し回収の真っ最中でございましょうか。 最近はコスト削減や予算について見ることが多いので、その中で出てきた面白げな話に雑談を加えてとりとめなく書いてみようと思います。 削減余地はある 昨年にご好評いただいた AWSコスト削減とリソース管理 | 外道父の匠 を含め色々な削減施策を試みてきましたが、サクッと成果になる箇所から泥沼に動かない所まで様々あったりします。 ただ、どんなアカウントでもトラフィックや処理負荷には波があり、それに対する余剰リソースを確保して構成しているので、その辺をキュッと絞ることまで含めればやれることは必ず一定以上存在することになります。 そういう大きなお宝ではない小さなお宝だと様々あり、古びたとか退職者が作ったとかで、ほぼ使っていない垂れ流しリソースやデータをかき集めれば、チリツ

    AWSが教えてくれないコスト削減の小話いろいろ | 外道父の匠
  • WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)

    WebブラウザでOS動かしてどうすんだよ という根源的な疑問に回答が無いままとりあえずできちゃった。。 ※ コマンドが終了してもプロンプトが出ません。Enterを空打ちする必要があります (バグ) WasmLinuxは、WebAssembly "ネイティブ" なLinux環境です。カーネルもユーザーランドも、WebAssemblyのツールチェインでコンパイルされたWebAssemblyモジュール(をwasm2cでCにしたもの)です。 前回はカーネルしか動いていなかったんですが、今回はブラウザ上で ifconfig lo up して ping 127.0.0.1 したり top したり vi したりできます。BusyBox入ってるので。 ただしまだ実用性は皆無 です。Proof of Conceptって奴ですね。 前回の記事: 今回はMUSL libcを移植してBusyBoxが動くようになっ

    WasmLinux: WebブラウザでLinuxカーネルとBusyBoxを動かす(エミュレーションなしで)
  • smh docs

  • Unification-free ("keyword") type checking

    From my perspective, one of the biggest open problems in implementing programming languages is how to add a type system to the language without significantly complicating the implementation. For example, in my tutorial Fall-from-Grace implementation the type checker logic accounts for over half of the code. In the following lines of code report I’ve highlighted the modules responsible for type-che

    Unification-free ("keyword") type checking
  • リレーショナル・データベースの世界

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

  • On the Diverse And Fantastical Shapes of Testing

    Pyramids, honeycombs, trophies, and the meaning of unit testing There's been a recent resurgence on twitter and the like about how teams should divide up their testing efforts. In particular, Tim Bray argues compellingly in favor of taking automated testing seriously. Anyone familiar with my writing will know that I'm very much in agreement with him. One of the points he raises in his post refers

    On the Diverse And Fantastical Shapes of Testing
  • テストピラミッド万歳 | POSTD

    クイックサマリー:「テストピラミッド」は、自動テストをUI、サービス、ユニット単位に整理することで、開発に自動テストを組み込む方法を示すために作成されました。2012年に定義されて以降、このモデルは次第に使われなくなってきたように思いますが、当に廃れてしまったのでしょうか。この記事では、最新のテスト戦略を紹介するとともに、今日のソフトウェア開発におけるテストピラミッドの関連性を検討します。 筆者の同僚であるジャン・フィリップ・ピエトルチェクが、かつてコードを書く開発者の責任について、次のように述べました。 none「我々の仕事の成果を最終的に使用する人々は、(中略)我々がただ最善を尽くすだけでなく、実際に機能するものを作ることを期待しているのです。」 — ジャン・フィリップ・ピエトルチェク 彼の言葉は、私たちが書くコードをそれに依存する人々の観点からとらえている点で非常に印象に残りました

    テストピラミッド万歳 | POSTD
  • 「ティンパニに頭から突っ込む曲」のコンサートを見てきた

    クラシック音楽にはたまに驚くような破天荒な曲がある。打楽器として大砲を撃つ曲に、タイプライターを使った曲、ステージ上で卓球をする曲なんてのもあるそうだ。 中でも有名なびっくり曲に、クライマックスで「ティンパニ(太鼓)に奏者が頭から突っ込む」曲がある。マウリシオ・カーゲルの「ティンパニとオーケストラのための協奏曲」だ。 このたびその曲が聴けるコンサートがあるというので、行ってきた。 インターネットユーザー。電子工作でオリジナルの処刑器具を作ったり、辺境の国の変わった音楽を集めたりしています。「技術力の低い人限定ロボコン(通称:ヘボコン)」主催者。1980年岐阜県生まれ。 『雑に作る ―電子工作で好きなものを作る近道集』(共著)がオライリーから出ました! 前の記事:おもちゃでつくるピタゴラ装置型 楽器 (デジタルリマスター) > 個人サイト nomoonwalk 期待感がすごい お邪魔したの

    「ティンパニに頭から突っ込む曲」のコンサートを見てきた
  • You Don't Need Next.js | ドクセル

    [beta] Next.jsクイズ2 • <p>にはなにが表示されるでしょうか? /app/page.tsx "use client"; import { useCallback, useEffect, useState } from "react"; export default function Home() { const [date, setDate] = useState(); const fetchDate = useCallback(async () => { const response = await fetch("/api"); const data = await response.json(); setDate(data.date); }, []); useEffect(() => { fetchDate(); }, [fetchDate]); return ( <

    You Don't Need Next.js | ドクセル
  • Multi-platform images

    OverviewGet Docker Docker Desktop Overview Install MacUnderstand permission requirements for MacWindowsUnderstand permission requirements for WindowsLinux Installation per Linux distro UbuntuDebianFedoraArchSign in Explore Docker Desktop OverviewExplore ContainersExplore ImagesExplore VolumesExplore BuildsResource Saver modePause Docker Desktop Hardened Docker Desktop Overview Settings Management

    Multi-platform images
  • ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog

    注意喚起の記事になります。タイトルが結論です。 既にこの問題に言及している記事はいくつかあるのですが*1、私は気付かずに踏んでしまったので、タイトルで「おっと、うちは大丈夫かな」と思ってもらえるようにこの記事を書いています。 joinableとは何か 問題として挙げているjoinableオプションですが、これはネストしたトランザクションの挙動に影響を与えます。少しややこしいので、サンプルコードを見せながら説明します。 # frozen_string_literal: true require "bundler/inline" gemfile(true) do source "https://rubygems.org" git_source(:github) { |repo| "https://github.com/#{repo}.git" } gem "activerecord", "7.

    ActiveRecord::Base.transaction(joinable: false)を使ってはいけない - SmartHR Tech Blog
  • ベロシティ Deep Dive。スクラムにおけるベロシティのアンチパターンと適切な使い方とは(前編)

    開発プロジェクトにおいて、開発スピードを測る尺度としてよく使われるのが「ベロシティ」です。このベロシティによって示される数字を適切に扱い、開発に活かしていくにはどうすればよいのでしょうか。 そのことを詳しく株式会社アトラクタ 吉羽龍太郎氏のセッション「ベロシティ Deep Dive」が、1月に都内で開催されたアジャイル開発の代表的な方法論であるスクラムをテーマにしたイベント「Regional Scrum Gathering Tokyo 2024」で行われました。 吉羽氏のセッションの内容をダイジェストで紹介しましょう。 記事は前編、中編、後編の3つに分かれています。いまお読みの記事は前編です。 これから「ベロシティ Deep Dive」ということで「ベロシティ」についてお話をしていきたいと思います。 ベロシティを使っているっていう方、会場にどれぐらいいますか? (手が挙がる) 結構多いで

    ベロシティ Deep Dive。スクラムにおけるベロシティのアンチパターンと適切な使い方とは(前編)
  • UTF-8のバリデーションとオートマトン

    UTF-8は今日の文字エンコーディングの中で最も重要なものと言って差し支えないでしょう。UTF-8の仕様はこの辺で確認できます: Unicode 15.1.0 > 3.9 UTF-8 RFC 3629 - UTF-8, a transformation format of ISO 10646 この記事では、読者はすでにUTF-8にある程度の馴染みがあるものとして、UTF-8のバリデーションの細かいところを考えます。 UTF-8のバリデーションを行うには、以下のことを確かめなければなりません: 最初の1バイトが所定の範囲にあること:ASCII (0x00-0x7F) または0xC2以上。 後続のバイト(たち)が0x80-0xBFの範囲にあること。 長すぎないこと:U+007F以下の文字はちょうど1バイトで表現されていること、U+0080以上U+07FF以下の文字はちょうど2バイトで表現されて

    UTF-8のバリデーションとオートマトン
  • Miso: A tasty Haskell front-end framework

    Miso by dmjio. BSD3 licensed. The source code for this website is located here.

  • Announcing Gild, a formatter for Haskell package descriptions

  • Ruby Parser開発日誌 (18) - Rearchitect Ripper - かねこにっき

    Rubyのparserを語る上で忘れてはいけない存在としてRipperというライブラリがあります。 RipperはRubyのコードを構文解析するためのライブラリとしてirbやrdocなどで長く使われてきました。 一方でBug #10436のように長い間未解決のバグがあったり、Bug #18988のようにパーサーと挙動が異なる箇所があったりと完璧でない部分があります。 今回Ripperのアーキテクチャを見直すことでRipperの抱えている問題を解決することができたので、この記事で紹介したいと思います。 関連するPRとticketはそれぞれ以下のとおりです。 github.com bugs.ruby-lang.org Ripperとは RipperはRubyのパーサーライブラリです。入力されたコードに対応するS式を返すRipper.sexpを使ったことがある人もいるのではないでしょうか。 Ri

    Ruby Parser開発日誌 (18) - Rearchitect Ripper - かねこにっき