matsu_charaのブックマーク (3,266)

  • PF_PACKETの仕組み - めもめも

    Software Design 2012年6月号の『「生」ネットワークプログラミング』が妙にツボにハマって面白かったのですが、さすがにあのページ数でPF_PACKETを語ると、ついていけない読者も多くて残念かも。 ということで、参考までに概要図を書いてみました。 C言語のソケットプログラミングをなんとなく勉強した方は多いと思います。ソケットは、カーネル内部のネットワークレイヤーとユーザ空間を結びつけるインターフェース(API)なわけですが、カーネル内部では、通常、上図(右側)の流れで受信パケットが処理されていきます。 物理NICが受け取ったパケットは、デバイスドライバがL2プロトコルの処理をして、さらにL3プロトコルの種類(IPv4/IPv6などの違い)の判別まで行います。 判別した結果に基づいて、適切なL3プロトコルのハンドラーが呼び出されて、L3プロトコルの処理をして、さらにL4プロト

    PF_PACKETの仕組み - めもめも
  • Bloom filter for Scala, the fastest for JVM

    TL;DR My implementation of Bloom filter in Scala. The source code on github The fastest implementation for JVM. (Take me straight to the benchmarks) Zero-allocation and highly optimized code. No memory limits, therefore no limits to the number of elements and false positive rate. Extendable: plug-in any hash algorithm or element type to hash. Yes, it uses sun.misc.unsafe :blush: Intro “A Bloom fil

    Bloom filter for Scala, the fastest for JVM
  • Immutable Collections

  • Immutable Collections

  • Efficient MySQL Performance を読んだ

    とても良いだった。 MySQL の初級・上級のは既刊であるが、その間を埋めるものがないので書かれたというもので、難易度を 1 ~ 5 で表すと 4 くらい、難易度 5 は 実践ハイパフォーマンスMySQL とのことだった。 あくまで深堀りしたいアプリケーションエンジニア向けので、DBA 向けではないと明記されていた。実際 MySQL (InnoDB) の実装詳細の説明が適度に打ち切られていて、ただし必要十分なトピックはカバーされていて、学習効率が良い。 筆者は Hack MySQL を運営していたり、過去に Percona で数々のツールを作ってきた実績 もあり、信頼が置ける。 1. Query Response Time まず North Star Metrics としてクエリのレスポンスタイムを定義し、その改善に必要な項目を体系立てて説明している。この構成がかなり良くて、明確な指

    Efficient MySQL Performance を読んだ
  • パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)

    jq(https://stedolan.github.io/jq/)の紹介では、「JSON処理のワンライナー〈一行野郎〉としてめちゃくちゃ便利!」とアピールするのが定番です。もちろんそれは当で、「めちゃくちゃ便利!」です。が、実は jq は、ワンライナー記述にとどまらない、かなり格的なプログラミング言語です。 JSON処理のためのDSL〈Domain Specific Language | 領域特化言語〉なので、汎用言語ではありません。しかし、汎用言語が備えている言語機能の一部(関数定義、モジュールシステムなど)を jq も持っています。また jq は、独特で楽しいプログラミング・パラダイム -- “パイプライン指向”に基づいて設計されています。 この記事では、ワンライナーを超えた jq の使い方と、プログラミング言語としての jq の特徴を紹介します。長い記事になってしまったので、一

    パイプライン指向JSON処理プログラミング言語 jq - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • JDK 16 : stream.toList() に見るAPI設計の難しさ - A Memorandum

    はじめに JDK 16 で導入された stream.toList() Collectors.toList() の API と実装 stream.toList() の API と実装 stream.toList() には安易に切り替えられない はじめに JDK 16 で追加された stream.toList()。 タイプ量が減るのは良いのですが、API 設計から見た場合、多少の気持ち悪さが残ります。 そして、.collect(Collectors.toList()) から .toList() へは、単純に置き換えることができないよ という話です。 JDK 16 で導入された stream.toList() JDK 16 で Stream に stream.toList() が追加されました。 今までは Collectors を使う必要があり、以下のように書いてきました。 List<Strin

    JDK 16 : stream.toList() に見るAPI設計の難しさ - A Memorandum
  • 書評:並行プログラミング入門 - Software Transactional Memo

    TL;DR 並行処理を実装する人のこれからのスタンダードになる一冊。買い。 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ 作者:高野 祐輝 オライリージャパン Amazon 買ったら思いの外早く届いたのでパラパラと読み始めたら一気に読み終えてしまった。 総評 敢えて雑な喩え方をするなら The Art of Multiprocessor Programming (通称TAoMP) の内容を薄めてRustやアセンブラや計算モデルを足したようなだった。 日語の書籍としてはかなり珍しくWait-Free, Lock-Free, Obstruction-Freeの違いなどを適切に論じており、TTAS Lock, MCS Lock, TL2といった日語では希少な情報が書かれているレアなである。これらに付いて論じている日語のは知る限り (TAoMPと昔僕

    書評:並行プログラミング入門 - Software Transactional Memo
  • The design and implementation of a lock-free ring-buffer with contiguous reservations - Ferrous Systems

    The design and implementation of a lock-free ring-buffer with contiguous reservations Building a lock free continuous ring buffer This is the story of how Andrea Lattuada (PhD student at ETH Zurich) and James Munns (from Ferrous Systems) designed and implemented (two versions!) of an high-perf lock-free ring-buffer for cross-thread communication. If any of those words look scary to you, don't fret

    The design and implementation of a lock-free ring-buffer with contiguous reservations - Ferrous Systems
  • 非公開URLと不正アクセス行為概念 : いわゆるZoom-bombing問題を契機として.

    研究ノート 非公開 URL と 不正アクセス行為概念 ── いわゆる Zoom-bombing 問題を契機として ── 岡 部 天 俊 目 次 Ⅰ.はじめに Ⅱ.非公開 URL によるアクセス・コントロールの概要 Ⅲ.不正アクセス行為概念の概要 Ⅳ.法2条における非公開 URL の位置づけ Ⅴ.非公開 URL 提供行為の可罰性 Ⅵ.おわりに Ⅰ.はじめに 新型コロナウイルス感染症 (COVID-19) の流行に伴い、従来対面で行われ てきた活動の非対面化が急速に進みつつある。そのために不可欠なツールの一 つとなってきたのが、いわゆるウェブ会議システムである。ウェブ会議システ ムをめぐっては、利用者の急増に伴い、セキュリティ上の懸念も指摘されるよ うになった。とりわけ、ウェブ会議システム 「Zoom」 においては、参加者とし て想定されていない第三者が悪意をもって参加する “Zoom-bom

  • 決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ

    エンジニアの佐野です。今日はカンムの決済システムでユーザの残高管理をどうやっているかについて書きます。 カンムの製品であるバンドルカードはプリペイド方式のカードです。ユーザによる入金、店舗での利用、運営事由の操作などによりユーザの残高が増減します。このような残高の管理について単純に考えると user_id と balance と updated_at あたりをもったテーブルを用意して balance と updated_at を更新していく方法があるかもしれません。しかしながらカンムでは残高を管理するテーブルを持たず、これらイベントの履歴のみで残高を管理しています。以下、記事ではこれらユーザの残高が増減するイベントのことをトランザクションと呼びます。ここでは DB の Transaction Processing を意味しません。 記事のポイントは 残高を管理をするテーブルは作らず、ト

    決済システムの残高管理周りの DB 設計と戦略 - カンムテックブログ
  • みずほ銀行システム障害に学ぶ

    みずほ銀行システム障害の調査報告書が公開されたのがニュースになって、Twitterなどで色々な人がコメントをしているのを見た。140文字しか書けない空間で他人の失敗談の揚げ足取りをするのは簡単だが、そこからは一時の爽快感以外に何も得るものがないので、僕はそういうのはカッコ悪いと思っている。 そこで、ちゃんと読んでみたら全く他人事でない部分も沢山あるし、非常に面白く勉強になったので、ブログにまとめてみる。 技術的な話 銀行のシステムがどのようになっているのか、全然イメージが湧いていなかったので、それがまず勉強になった(p.29)。 トラフィックのソースに応じて用意された色々なシステムから基幹システム「MINORI」の取引メインバスにトラフィックが流れ、そこから各種システムへとリクエストが送られていく。この辺はService Oriented Architectureらしい。開発当時としては(

    みずほ銀行システム障害に学ぶ
  • 「なんとなく元気がない」状態には名前があり対応が必要だと全マネジャーは知っていたほうが良い - tomoima525's blog

    ポッドキャスト Today I Learned FMの28 回目はメンタルヘルスの話題について話しました。この記事はその収録に関する追記です。 anchor.fm 「なんとなく元気がない」 = languishing www.nytimes.com "バーンアウトでもないし、うつでもない。けどどこか希望がない。なんか楽しくないし、目的ももてない。なんだかモヤモヤする。" この症状に対し、社会学者の Corey Keyes 氏は languishing という名称をつけました。日語だと"衰弱"という意味ですが、要はゆるやかに不調になっている状態を指します。 languishing のやっかいなところは、これまで明確に言語化されていなかったために、症状として認識されていなかった点です。認識されていないために早期の対応が遅れ、やがて当のうつに移行していく可能性が高いです。 元記事では、パンデ

    「なんとなく元気がない」状態には名前があり対応が必要だと全マネジャーは知っていたほうが良い - tomoima525's blog
  • Binary search with modern processors

    第16回 StringBeginners での発表資料

    Binary search with modern processors
  • ContainerJFR入門: コンテナのためのJDK Flight Recorder - 赤帽エンジニアブログ

    Red Hat で Solution Architect として OpenJDK を担当している伊藤ちひろ(@chiroito)です。 この記事は、Red Hat Developerのブログ記事、Introduction to ContainerJFR: JDK Flight Recorder for containers - Red Hat Developer の翻訳記事です。 OpenJDKは長い間、実世界のアプリケーションやワークロードのトップに君臨してきました。これは、パフォーマンス、互換性、信頼性、そして観察可能性を一体化して選ばれています。長年にわたり、JDK Flight Recorder (JFR) と JDK Mission Control (JMC) は、OpenJDKの成功に貢献してきました。しかし最近まで、どちらも商用機能であり、特定のユーザやワークロードでしか利用

    ContainerJFR入門: コンテナのためのJDK Flight Recorder - 赤帽エンジニアブログ
  • Java 11のFlight Recorderを試す · matsumanaの技術メモ

    個人的にJava 11で一番嬉しい新機能はFlight Recorderです。 Flight RecorderはOracle JDK 7u40から使える有償機能でしたが、OSS化されJava 11からOpenJDKに入りました。 (Flight Recorderは元々JRockitに搭載されていたもので、JRockitがHotSpot VMに統合されたのが7u40らしい) Mission ControlもOSS化されていますが、OpenJDKには含まれていないので別途ダウンロードが必要です。 JDKの新しいリリース・モデル および提供ライセンスについて JEP 328: Flight Recorder JDK Mission Control 7 JMC ダウンロードページ ※2018/10/15現在、バージョンは「7 Early-Access」です。GAは2019/01/30の予定 Jav

  • Tekton

    Tekton is a powerful and flexible open-source framework for creating CI/CD systems, allowing developers to build, test, and deploy across cloud providers and on-premise systems. Get started with Tekton. Tekton standardizes CI/CD tooling and processes across vendors, languages, and deployment environments. It works well with Jenkins, Jenkins X, Skaffold, Knative, and many other popular CI/CD tools.

    Tekton
  • Gradle における Java Platform Module System (JPMS) の運用 - A Memorandum

    はじめに Gradle でのモジュールシステムの運用 モジュールの依存関係の定義 非モジュール・ライブラリの利用 複数モジュールから構成されるアプリケーションの例 list モジュール utilities モジュール application モジュール まとめ はじめに Java 9 で導入されたモジュールシステムの Gradle における扱い方について見ていきます。 Java Platform Module System については以下を参照してください。 blog1.mammb.com Gradle でのモジュールシステムの運用 Gradle 6.4 よりモジュールのビルドが直接サポートされています。 以下の3つの条件を満たす場合に、classpath ではなくmodule-path に依存 Jar を配置します。 modularity.inferModulePath が有効になってい

    Gradle における Java Platform Module System (JPMS) の運用 - A Memorandum
  • Spring Boot and Cloud Native Buildpacks Hands-on Lab

    以下のソフトウェアをインストールしてください。 Java 11 docker pack curl jq この資料は次のバージョンで動作確認しています。 $ java -version openjdk version "11.0.10" 2021-01-19 LTS OpenJDK Runtime Environment (build 11.0.10+9-LTS) OpenJDK 64-Bit Server VM (build 11.0.10+9-LTS, mixed mode) $ docker version Client: Docker Engine - Community Cloud integration: 1.0.9 Version: 20.10.5 API version: 1.41 Go version: go1.13.15 Git commit: 55c4c88 Built

  • ノストロ・アカウントのノストロはイタリア語だった? - ゆるり多言語

    先月のNHKラジオ講座のまいにちイタリア語で、所有形容詞のnostro(ノストロ、わたし達のという意味)とvostro(ボストロ、あなた達のという意味)という単語がでてきたのですが、ふと、あれ?どこかで聞いたことがあったようなと思い、記憶をたどっていったところ、、、思い出しました。ノストロ・アカウントとボストロ・アカウントです。 ノストロ・アカウントは、銀行間取引で資金決済をおこなう当方の決済口座のことで、ボストロ・アカウントは、反対に、先方の決済口座を指します。 この用語は、以前、銀行システムの保守をしていたときに頻繁に出てきた用語なのですが、ずっとただの専門用語だと思っていたので、今回、ノストロとボストロがイタリア語だと知ってびっくりしました。 何でイタリア語なんだろうと思ってすぐに調べてはみたのですが、残念ながら、由来などはよくわかりませんでした。ただ、銀行のbankは元々イタリア語

    ノストロ・アカウントのノストロはイタリア語だった? - ゆるり多言語