Hashed Timing Wheel, Hierarchical Timing Wheelsについて (あるいはNettyやAkka HTTPやKafkaの裏側にあるスケジューラについて)

この記事は FOLIO Advent Calendar 2024 - Adventar の21日目です。 先日 HashedWheelTimer が話題に上がったのですが、意外にも日本語で解説している記事が見当たりませんでした。(言及している記事はある。検索の仕方が悪いかもしれない。) HashedWheelT…

あるブランチをmainブランチにマージする時に差分としてcherry-pick済みのコミットが表示される理由

会社で説明したのでブログにもまとめておきます。 tl;dr gitには three dot diff と two dot diff がある compare画面のデフォルトだとthree dot diffが表示される three dot diffは共通祖先からのコミットが全て表示されるモード (base側にコミットが積まれ…

Slack Workflow Builder で、作成した Jira チケットのリンクをslackに投稿する方法

UPDATE slack公式で対応されたらしいのでこのhackは不要になりました 🎉 元記事 小ネタです。 背景 Slack Workflow Builderで Jiraチケットを作成したいケースがあります。 この場合 「<チケット◯◯> を作成しました!」のようなチケットへのリンク付きメッセー…

FOLIOでやってるマネージメント勉強会の紹介

この記事は FOLIO Advent Calendar 2023 - Adventar 9日目の記事です。 マネージメント技術の学び方 突然ですが、マネージメント技術ってどう学んでいますか? 特に新任のリーダーにとっては暗中模索だったり、とりあえず業務を回すのに精一杯でなかなか深掘…

FOLIO Scramble! #4 這い上がりベンチャーの組織改善 に登壇しました

FOLIOの自社イベントで登壇しました。 folio.connpass.com speakerdeck.com 内容的には以前発表した Inside Fintech Meetup ~ Finatext × Kyash × FOLIO ~で発表しました - だいたいよくわからないブログ の続きとなっています。 前回は初期開発フェーズに…

ScalaのHashMapに関する論文(Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collections)輪読会 in FOLIO メモその3 CHAMP編

本記事について FOLIOでやった輪読会のメモです。 Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collections で提案されている Scalaの immutable.HashMap に使われているCHAMPについてまとめます。 目次 ScalaのHashMapに関する論…

ScalaのHashMapに関する論文(Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collections)輪読会 in FOLIO メモその2 JVM CompressedOOPs編

本記事について FOLIOでやった輪読会のメモです。 本論には関係ないが Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collections の以下の記載について深掘りする。 Due to the JVM’s 8-byte memory alignment, adding the hash cod…

ScalaのHashMapに関する論文(Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collections)輪読会 in FOLIO メモその1 HAMT編

本記事について FOLIOでやった輪読会のメモです。 表題の論文は Scalaの immutable.HashMap に使われているCHAMPについての提案ですがベースとなるHAMTについて理解があったほうが読みやすいのでHAMTについて解説します。 ※ Trie木については本記事では解説…

ScalaのHashMapに関する論文(Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collections)輪読会 in FOLIOを開催した

Optimizing Hash-Array Mapped Tries for Fast and Lean Immutable JVM Collectionsの輪読会を開催したのでレポブログです。 OOPSLA2015で発表されたCHAMPというScalaのimmutable.HashMapとして採用されているデータ構造についての論文です。 実際にScalaの…

AIで自動文字起こしして発音採点までしてくれる英語学習用サービス Elsa Speech Analyzer がすごい

使ってて感動したので Elsa Speech Analyzer を紹介します。 speechanalyzer.elsaspeak.com サービス概要 自分が喋った英語を分析して発音やイントネーション、語彙力や文法などを採点してくれるサービスです。 Recordingをスタートして英語を話すと以下のよ…

コンテナセキュリティ本輪読会 in FOLIO を開催した

コンテナセキュリティという本が出たので社内輪読会を開催しました。 コンテナセキュリティ コンテナ化されたアプリケーションを保護する要素技術 コンテナのセキュリティ関連の知識は現代のアプリケーションエンジニアとしてはとても大事なものの、なかなか…

Database Design and Implementation を読んだ

Database Design and Implementation: Second Edition (Data-Centric Systems and Applications) を読んだのでメモ程度の読書感想文です。 これは何 この本はSimpleDBという機能を省略したRDBMSを作っていきながらDBの仕組みについて学んでいく本です。 機能…

scala 2.13でコンパイルが遅いときにprofileを取る方法

Scalaでコンパイルが遅くなった場合にprofileを取る方法について検索すると Speeding Up Compilation Time with scalac-profiling | The Scala Programming Language という記事がでてきたり、 https://github.com/scalacenter/scalac-profiling を利用した…

ソフトウェアアーキテクチャ・ハードパーツを読んだ

この記事は FOLIO Advent Calendar 2022の一日目です。 ソフトウェアアーキテクチャ・ハードパーツ ―分散アーキテクチャのためのトレードオフ分析 を読んだので感想です。 ※ この本は翻訳を担当された@snoozer05 さんから頂きました。ありがとうございます!…

証券Fintechに入ったエンジニアが証券ドメインの業界知識を身に着けたいと思って読んだ本

これは何 証券Fintechに入るぞ・入ったぞ!という人がドメインについて学べるような本・ページを集めてみました。 会社特有の業務知識ではなく業界で広く使える知識を学べる物を集めようとしていますが、筆者の守備範囲依存による分野の偏りは否めません。(…

aws s3でオブジェクトkeyの先頭にスラッシュ(/)をつけるとどうなるか?

これはなに s3はbucketとkeyの組み合わせでオブジェクトを保存している このbucketとkeyを s3://$bucket/$key のように組み合わせると S3URIとなる keyの先頭のslashがついているとき、aws cliを含む一部のツールでは 先頭のslashを削除する場合がある。 こ…

sbt-native-packagerでパッケージングしたアプリケーションのJVMオプションに-Jをつけるべきかどうか

普通に自分が分かってなかったのでメモシリーズ これはなに -Xmx オプションを指定する際に -J をつけている。 -Dfoo.barなどのプロパティ指定にはつけたりつけなかったりしている いつ -J をつけて、いつつけなくてよいのか、 -J の意味などをまとめる。 -J…

Error downloading org.scalameta:semanticdb-scalac_2.13.7:4.4.28 や scalafix-test-kit_2.12.13:0.9.29 と言われたら

この記事について scalafixに依存しているプロジェクトでscalaのバージョンを上げるとタイトルのエラーが出る場合があるので原因などを整理したもの ちょっと前のメモ書きをブログ化してるので各種バージョンは古いです 各エラーについて エラー1: Error dow…

BiTemporal Data Model導入時の注意点

これはなに BiTemporal Data Modelはこういうことができるよ!という内容ではなく、導入時の注意点やちょっとしたつまづきポイントなどをまとめたもの 背景 BiTemporal Data Modelについて、すでに何社かでは導入事例もあるようで*1、たまに BiTemporal Data…

AWS SDK javaのパッケージとv1, v2の共存について

死ぬほど今更ですがAWS SDK javaについて自分のほしい情報を早引きしたかったのでまとめ。 v1とv2のgroupid・パッケージの違い v1,v2はgroupidやパッケージが異なっているがどちらがv2なのかそこまで自明ではないので以下にまとめる。 以下のマッピングにな…

FOLIOでのrefined活用法 - ドメインを型で形式知化し、契約を型で表すことで認知漏れを防ぐ

FOLIOアドベントカレンダー2021 12日目です。 FOLIOではrefinedというライブラリを採用しているので、活用事例とその目的について考えていこうと思います。 お品書きは以下です。 refinedとは ドメイン知識の形式知化 契約を型で表すことによる認知漏れリス…

MySQLでのVARCHARサイズ変更を行うALTER TABLEについて

これは何 MySQLにはVARCHARの文字数を拡張するDDLをオンラインで行うための最適化が存在する。 一方でこの最適化は内部のバイナリ表現に依存した限定的な最適化であり、意図せずオフラインDDLとして実行される可能性がある。 本ページではこの最適化の仕組み…

refinedでPosInt + PosInt を PosIntにしたい

結論 オーバーフローしたら条件満たさないから無理 結論以外 refined はScalaでrefinement typeを表現するためのライブラリです。 このライブラリの中に「1以上のInt」を表すPosIntという型があるのですが、refinedは PosInt + PosInt = PosIntといった推論…

MySQLでカラム追加などのalter table中にクエリがブロックされるかなどについてのメモ

これは何 MySQLのカラム追加などのDDL, alter table時にそれぞれの操作がどれくらい危険なのか、負荷は?といった情報の見方を毎回忘れるのでメモしたもの まとめ 公式document に詳細な表があるのでそれを見ると良い。 ただし必ずしもその表通りになるわけ…

Places: Adding Message-Passing Parallelism to Racket を読んだ

はじめに ruby3で導入されるRactorという機構があり、そこの提案の中で This model is similar to Racket's Place abstraction. という記載があったのでRacketのPlaceを探してみると、Place自体はRacketの公式ドキュメント に記述を見つけることができました…

ぼんくらITエンジニアでもYouTubeとスタサプでTOEIC 900点突破できたので勉強法をまとめていく

2020/2にbefore 600点台(正確な値は紛失)から始めて2020/9に目標(900点以上)を達成しました₍₍ (ง´・_・`)ว ⁾⁾ うれC ₍₍ (ง´・_・`)ว ⁾⁾ ₍₍ (ง´・_・`)ว ⁾⁾ ₍₍ (ง´・_・`)ว ⁾⁾ pic.twitter.com/pKDX2mPmW6— まっちゃら (@matsu_chara) 2020年9月28日 英語学習は最初…

Inside Fintech Meetup ~ Finatext × Kyash × FOLIO ~で発表しました

speakerdeck.com Inside Fintech Meetup ~ Finatext × Kyash × FOLIO ~ - connpass という勉強会で発表しました。 ここ1年弱くらいずっとやってたので話すネタはいくつかあったんですが、Scala的な部分は趣旨じゃなさそうだしロボアドの仕組みを説明して…

pdfを翻訳機に書けやすくするchrome拡張を作った

FOLIO Advent Calendar 2019 - Qiita 13日目の代打です。 chrome拡張を作った pdfを翻訳機に書けやすくするchrome拡張を作りました。 GitHub - matsu-chara/pdf-translate-replacer 需要あるのかわかりませんがwebstoreにも公開しました*1 chrome.google.com…

ScaleCheck: A Single-Machine Approach for Discovering Scalability Bugs in Large Distributed Systemsを読んだ

FOLIO Advent Calendar 2019 - Qiita 18日目です。 前日は krrrrさんの RustでもServer::Starterでhot deployをする - decadence でした。 毎年この時期にしかFASTを読めていない まっちゃら (@matsu_chara) | Twitterです(´・_・`) 今回はFAST '19からScaleCh…

作ってそこそこ便利だったボットとかまとめ

FOLIO Advent Calendar 2019 - Qiita 10日目代打です。 9日目はlotzさんの 挿入ソートと選択ソートは双対 - Qiitaでした。 recursion schemesの応用って融合変換くらいしか知らなかったんですが身近なアルゴリズムの性質を表現できるのは面白いですね。 自分…