ブックマーク / kumagi.hatenablog.com (29)

  • 間接参照を巨大仮想メモリで飲み込む - Software Transactional Memo

    この記事はデータベース・システム系 Advent Calendar 2023の3日目の記事である。昨日の記事も僕でした。 間接参照を巨大仮想メモリで飲み込む メインメモリはハードディスクやSSDより容量が小さく、この問題は当面は解決の目処が立たない。 そもそも今のDRAMより速くて安くて大きいストレージが仮に発明されてもそれがDRAMに取って代わるメインメモリの立ち位置になるだけであってその下のレイヤーには依然としてそのメインメモリより安くて大きなストレージが置かれる事になる。大局的な観点ではストレージの階層構造とは経済活動の鏡像でもある。 バッファプール さて、耳にタコができるほど繰り返しているが現代のデータベースはディスクなどの永続ストレージにデータの尊が保存され、メインメモリはそれに対する読み書きを高速化するためのデータ一時置き場としての役割を担当している。 代表的なRDBMSは3

    間接参照を巨大仮想メモリで飲み込む - Software Transactional Memo
  • 「禅とオートバイ修理技術」をプログラマが読んだ - Software Transactional Memo

    「禅とオートバイ修理技術」これら2つの間にどのように関係があるのかまるで見当が付かず、タイトルだけ聞くとキワモノのようだがWikipediaによるとアメリカでは一番良く売れた哲学書とされている。 海外エンジニアのブログを読み漁っていた時にオススメされていたのでKindleで買って読んだのだが想像以上に良かったのでメモを残したい。と言ってもwikipediaで説明されている内容を改めて説明しても面白くないのでソフトウェアエンジニアとして響いた部分を引用して僕の感じた事を書き連ねていく。 大都市の重工業地帯に一歩でも足を踏み入れてみれば、そこにはその全てが存在している。テクノロジーである。正面には有刺鉄線を施した高い塀が立ちはだかり、門は常に閉ざされ、「立入禁止」の札が掛かっている。そしてその向こうの薄汚れた大気の中には、金属や煉瓦で造られた醜い建物が立っている。その目的は不明であり、またそ

    「禅とオートバイ修理技術」をプログラマが読んだ - Software Transactional Memo
  • Re: 空想のNFTと現実のNFT - Software Transactional Memo

    前回の記事に長文で反論が付いていたので興味深く拝読した。 sasakill.substack.com 書いた人はSmartnews社のVice Presidentのようで、予想外のところまで記事がリーチしたのは少し驚いている。 メタバースNFTの使い途の一部でしかなく、Web3によって完璧な非中央集権的な社会が実現するなんてこともない。 僕の記事では「メタバースNFTは不要」と言ったのに「NFTメタバースは不要」というような受け取られ方をしているあたりは少し気になるが、彼が論点に挙げたいのはメタバースでもWeb3でもなくNFT単体であるようだ。そのつもりで僕の意見をまとめる。 私の考えでは「ノーコストでコピーが可能」という議論の土台にそもそも穴がある。 繰り返すがコピーはやはりノーコストである。この記事の読者が自身のデバイスに僕の記事を表示させるまでのコピーに掛かった電気代・通信費の

    Re: 空想のNFTと現実のNFT - Software Transactional Memo
  • NTTによるブロッキング論点の整理 - Software Transactional Memo

    NTTがブロッキングを発表してから様々な反響があったのでざっと眺めて反応を主観でカテゴライズしてみる。 TL;DR; NTTも政府もしっかりしろ。あと違法行為はやっぱりダメだ。 今回の措置に賛成だよ派 困ってる人がいるからしょうがないよ派 プロバイダ責任制限法を越えるから仕方ないよ派 やまもといちろうが気にわないよ派 他の国ではやってるよ派 反対派は漫画村ユーザだよ派 ブロッキングは合法だよ派(宛先は通信の秘密に当たらないよ派) 政府がそう言ったらしいよ派 緊急避難が適用されるから合法だよ派(児童ポルノと同じだよ派) なるべく速やかに立法すべきだよ派(結果整合派) 違法だからどうした派(アナーキー派) 今回の措置に反対だよ派 当に緊急回避が成り立つなら賛成だよ派(漫画村もうないじゃん派) 立法の後なら賛成だよ派 さっさと立法しろ派(法治重視派) 憲法21条も一緒に修正しろ派(整合性重視

    NTTによるブロッキング論点の整理 - Software Transactional Memo
  • NTTによるブロッキングの何が許せないのか - Software Transactional Memo

    注意: この記事は私の所属する組織の意思も意見も絶対に断固として欠片すらも表明する事を意図して書いていません TL;DR;今回のサイトブロッキングは私見ではダメだと思ってるけど、国の言うロジックは一応わかるし勘違いベースで応援するのも叩くのも止めて欲しい 前提知識 まず大前提として、日には憲法というものがあり、その21条にはこのように明記されている。 憲法第二十一条 集会、結社及び言論、出版その他一切の表現の自由は、これを保障する。 検閲は、これをしてはならない。通信の秘密は、これを侵してはならない。 憲法に沿った国の運営をするためここから派生して制定されている法律のうち、今回の件に関係が深いのは電気通信事業法である。 電気通信事業法 (検閲の禁止)第三条電気通信事業者の取扱中に係る通信は、検閲してはならない。 (秘密の保護)第四条電気通信事業者の取扱中に係る通信の秘密は、侵してはならな

  • 分散システムについて語らせてくれ。顛末と反省。 - Software Transactional Memo

    8/10のNTT Tech Conference #2 にて発表の時間をもらってこのタイトルで喋ってきた ntt-developers.github.io 発表が決まるまで これはNTTグループ内のソフトウェア・ネットワーク系技術者が集まるコミュニティで、誰が発表者になれるかは投稿されたProposalに対するコミュニティ内での投票によって選考される。 何を話したいか自分の中でも固まりきっていなかった上に、主催者の話をロクに聞いていなかった自分は小さい部屋で僕のことを知る人しか集まらない不人気セッションを勝手に想像しており、abstractを書く欄に「実世界で使われている分散システムを構成する際に理解してほしい議論についてkumagiが一人で滔々と語る。」という漠然とした説明を書いた。初心者にこそ聴いて欲しいという身勝手な理由でレベル設定をBeginnerにし、自己紹介欄に至っては当は経

    分散システムについて語らせてくれ。顛末と反省。 - Software Transactional Memo
  • 『夢のデータベース?「Cloud Spanner」の実力は?』について - Software Transactional Memo

    こんな記事が目に入った。 www.itmedia.co.jp 大雑把に完全に間違ったことを言っているわけでもないが、読んでいくといろいろ鼻につくところがあり、どのあたりから間違っているのかと自分に問いただすのは現時点での自分の知識を棚卸しするためにも有用かも知れないと思ったので一言一句漏らさず思うところを書いていこうと思う。 中には枝葉末節な難癖もあるので全部を真に受けない感じで読んで欲しい。 Cloud Spannerの特徴は、これまでリレーショナルデータベースで不可能とされていた「トランザクション処理の大規模分散処理」を実現したところにあります。 単一のトランザクション処理を分散して実行しているかというと、Spannerはトランザクションごとに担当のトランザクションマネージャがそのトランザクション処理全体を取り仕切って行う仕組みになっている。なので「トランザクション処理の大規模分散処理

    『夢のデータベース?「Cloud Spanner」の実力は?』について - Software Transactional Memo
  • 分散プログラミングモデルおよびデザインパターンの考察 その4 - Software Transactional Memo

    引き続き分散システムのデザインパターンの話をしていく。例によって適切な名前を見つけられなかった場合にはその場で適当に名づけているので、ここに書いてある名称が技術レベルでの正式名称だとは思わず、正式名称を見つけたらそっとコメント欄で教えてください。 Application Level Ack リクエストを受け取った際にAcknowledgment(Ack) を返却するのは重要であるというのは異論の余地はない。だが、どのレベルで返却すべきかというのはデザインスペースの一部である。 ご存知の通り、TCPはそもそもSYN → SYN-ACK →ACKの3方向ハンドシェイクを行い、それぞれの通信ペイロードにシーケンス番号を付けて送達を確認している。SO_LINGERを使えばclose時に未送信パケットが残っていればそれを送り終わるまでclose()をブロッキングする事もできる。TCPのトランスポート

  • 分散プログラミングモデルおよびデザインパターンの考察 その3 - Software Transactional Memo

    昨日に引き続いて分散システムのデザインパターンについて書いていきたい。 だがそれ以前に故障モデルに関する前提を忘れてはならない。人によって様々な方針があるが、個人的には分散システムの世界において意識しなくてはならない故障モデルは4つだと考えている。僕は前回のブログに書いた Replication のをベースに書いており、少し言葉遣いや定義が他とやや違う点は許して欲しい。また、通信の脱落・遅延とはレイヤーが異なる議論である。 故障モデルの分類 故障が起きないモデル これは故障が起きない世界を仮定するモデルである。これ自体はプロダクションにそのまま投入できるものではない。だがこの故障モデルを想定しても解けない問題は故障が発生する状況では絶対解けない事が断言できたり、合意プロトコルが正しいかを議論する土台となったり、様々な実用的なアルゴリズムや分散システムの土台となるアルゴリズムが生まれる土壌

    分散プログラミングモデルおよびデザインパターンの考察 その3 - Software Transactional Memo
  • 分散プログラミングモデルおよびデザインパターンの考察 その2 - Software Transactional Memo

    前回の記事では 分散システムのデザインパターンと銘打っておきながら並列・並行システムの分野の話からクラウド環境へとこじつける事を「分散システム」と呼んだ事。 システム全体を決定づけるわけでもない通信パターン上の選択肢の一部を切り出してシステムの質のように呼んだ事。 プログラミングモデルと言いながらプログラミングモデルの話が一切出なかった事。 のうち一番上についてしか書かなかったので次に真ん中の項目についての話をする。物事を分類する際の一般論としては MECE であることが好まれるがYahoo!の記事はレイヤーも目的も様々な物を一緒くたに語っており、取り繕おうにも議論の空間があやふやなので何に対して網羅的なのかも議論ができない。「マスターやワーカーというのは役割の議論であり通信パターンの議論ではない」「Producer-Consumerはデータフローの一種と呼べないのか?」「データフローは

    分散プログラミングモデルおよびデザインパターンの考察 その2 - Software Transactional Memo
  • ブロックチェーンの作り出す価値に付いて - Software Transactional Memo

    TL;DR 疑いの目を向けてみると怪しい奴ばかり 通貨発行は楽しい、これは真理である。 www.sinseihikikomori.com 1人プレイ用のゲームの中で敵を倒してゲーム内の通貨を得る行為は広義の通貨発行と見做せる。ドラクエの世界でスライムを倒して3ゴールドを得る行為すら通貨の発行であるという観点で考えた時、このブログの読者は誰しも通貨発行の体験があるはずである。 現実で使われる通貨を鋳造したら普通の犯罪であるが、この日で法に触れずにこれに近い行為を達成できるのが借金である。人から10万円を借りて、その引き換えに「x万円を○月○日までにお返しします」と借用書を書けばその「○月○日にx万円を受け取る権利」自体が債権としてそれなりの値段y円で市場で取引される一方で自分はx万円を得ることができ、世界に存在する価値の総量がy円だけ増えたことになる。これは経済の基である。 この借用書、

    ブロックチェーンの作り出す価値に付いて - Software Transactional Memo
  • Re: ドメイン固有型(値オブジェクト含む)を再考する - Software Transactional Memo

    blog.j5ik2o.me 値オブジェクトはドメイン固有型の一種です。なので、不変と等価判定だけではなく、なにかしらのドメイン固有の不変条件(invariant)を維持する責任があると考えます(もちろん型として切り出すわけですからその投資に見合うだけの見返りがないといけません)。 違う。値オブジェクトとはID以外で等価判定をするオブジェクトの事であって、RubyのHash、Pythonのdict、C++のstd::unordered_setすらも値によって等価判定を行うのでこれらは値オブジェクトであるがドメイン固有型ではない。RubyでHashに入れて渡されたユーザ入力値をValidationしてドメイン固有型に詰め直すのはもちろん必要ならやれば良いが、Hashクラスそのものにモンキーパッチなり特異クラスなりを行って不変条件を維持する責任を負った自分専用Hashを作って普通のHashクラ

    Re: ドメイン固有型(値オブジェクト含む)を再考する - Software Transactional Memo
  • 正しいクラウドはある意味で遅い - Software Transactional Memo

    TL;DR 正しく設計するとキャパシティは常にカツカツになる これはpyspaアドベントカレンダーの8日目の記事です。前日はShibukawaさんです。 世はクラウド時代、ソフトウェアはひとたび作られたら何億回実行されても摩耗するものではないので、どんな間抜けなロジックであろうと動く以上は別のどこかで瑕疵が出てくるまで使い倒されるのは日常茶飯事である。 サービスを負荷の前提の上に定義する クラウドより前の時代においてサービスを支えるマシンは「ロードアベレージが1.0を超えてなければとりあえずOK、超えたらマシンを増やして負荷を分散する」というノリのベストプラクティスがよく言われていたがそれはサーバ資源の確保にそれなりに時間がかかる時代の常識であって、クラウド時代でサーバは分単位で確保できるようになった。 クラウドの利点としてその即時的なスケーラビリティが常套句として使われて久しいが、これは

    正しいクラウドはある意味で遅い - Software Transactional Memo
  • Re: Re: Re: 空想のNFTと現実のNFT - Software Transactional Memo

    前回の記事に更に返事を頂いた。応酬が全部長文なのでこの記事から読み始める人は「まとめ」から読んで興味が湧いたかどうかで全文を追うか検討して欲しい。 sasakill.substack.com まさか当に返事が貰えるとは思っていなかったが、実に興味深く、かつ知見として共有すべき事が書いてあったので「いつまでそのネタ擦ってんだよ」と突っ込まれるのを覚悟の上でさらなる返事をまとめる。 kumagiさんは「アテンション・エコノミーが最高であるとは思っていないが、市場の競争によって良い体験が生まれていることは認める」というもので、一方私は「アテンション・エコノミーの影響力が強くなりすぎていて、それ以外の良い体験の可能性を押しつぶしている」ととらえている。 これは確かにそうで40億回/日の再生数のうちどれだけが真にユーザーの利益になったかどうかについて僕は何らコメントできる立場にない。全ユーザーが全

    Re: Re: Re: 空想のNFTと現実のNFT - Software Transactional Memo
  • Re: ブロックチェーンでそんなことはできない - Software Transactional Memo

    はじめに chike0905.hatenablog.com この記事は大変楽しく拝読したが、ブロックチェーン素人ながら気になる点がいくつかあったので指摘する。要旨は以下である。 タイトルで「できない」と言ってる割には「できるけど筋が悪い」だけに見える 研究中で結論が出ていないトピックを「できない」と呼ぶのは違うのではないか 文体が学術めいている割には用語の使い方がやや雑に見える ブロックチェーンに「不可能」な事にフォーカスすべき 浮足立つ界隈に対して問題提起するならば的を絞って指摘すべきで、容易に解決可能そうに見えてしまう批判はかえって混乱を招く恐れすらある ノードの独立性 各自で検証し、他のノードに依存するプロセスは定義のブロックチェーンの動作の中には含まれない。 従って、他のノードに何かを問い合わせる必要もなく、信頼する第三者などは存在しない。 この部分はあまり正しく理解している人が

    Re: ブロックチェーンでそんなことはできない - Software Transactional Memo
  • キャリアハックの奇行 - Software Transactional Memo

    エンジニアの奇行 嚢中の錐という言葉がある。有能な人物は自ずと傑出していくという意味だが、有能さとは例えば学歴の高さとは一致しない。 たとえMIT卒であろうとも大成するとは限らないし、ましてや入試の点数などで見れる人間の側面は限定的である。 企業などで採用する側からしてみたら当然ながら採用後の活躍を期待して雇用するのであり、入社をゴールとしてそれ以降働かなくなる人は望ましくないし、学歴や入試の点数によってそういう人かどうか判定する事はできない。 活躍という観点で言うと長いキャリアにおいてより重要となるのはキャリア開始時での能力の高さよりも、険しく長い道のりを自己メンテナンスしながら歩み続けられる根気の強さが重要とされている。その根気の源泉は執着だったり崇拝だったり妄信だったりトラウマだったり原体験だったり人によって様々だが、ここではひっくるめて「やる気」と簡略化して呼ぶことにする。 さて「

    キャリアハックの奇行 - Software Transactional Memo
  • 娘が1歳半になるまでに助かった便利アイテムたち - Software Transactional Memo

    TL;DR アフィ記事です 1歳半になりました 先日めでたく友人に子供が生まれ、他でも安定期に入ったとかめでたい報告が相次いでおり、そういう年代に入った実感が湧いてきた。 前々回の記事で書いた娘が無事に一歳半検診を終え、この期間であっても学んだ事は多い。特に子育てに関わる便利アイテムというのは実際に子育てをしないと触れる機会もないし、子供も家庭事情も千差万別なので有用なものもあればそうでないものもある。 実際に子育てを始めるまでは、3ヶ月までは首が座らないとか(そもそも首が座るって何さ?)、そのうち首が座ってもまだ腰が座らないとか、乳児の中でも複数の段階に別れていることすら知らなかった。  スイマーバで遊ぶ娘 6ヶ月にもなれば徐々に離乳を始めていくことになるのだけど、離乳事の教育であることも考えるとできれば座ってべさせたいのが親心である。が、6ヶ月というのは首は座っていても床や

    娘が1歳半になるまでに助かった便利アイテムたち - Software Transactional Memo
  • きれいなコードを書けという話について - Software Transactional Memo

    前回のブログから90日以上経ってしまったので広告が載ってしまったから短文でもアウトプットしておく。 プログラマとして仕事をしているとコードと向き合っている時間の9割以上は既存のコードを読んでいる、だから読みやすさは重要である、という言説は耳にタコができるほど誰もが言っている。 仕事で書かれるコードが誰のレビューも通ること無くマージされている現場は凄惨だが、自分より明らかに経験を積んだ人たちが何度もレビューを重ねたコードが読みやすいかというとそうとは限らない。良いコードが守るべきルールをすべて守っていても不可解なコードはあるし、どんなに読みやすいコードでも数千行の規模になってくるとやはり脳内からこぼれて一度に覚えておける範囲からはみ出る。 変数名や関数名をわかりやすくするとか不必要な技巧を凝らさないとかわかりやすい設計にするとか主観的な事を偉そうに語るは山ほどあり、それらのを崇める事は悪

    きれいなコードを書けという話について - Software Transactional Memo
  • 徐々に高度になるリングバッファの話 - Software Transactional Memo

    リングバッファのイメージ図 1. リングバッファとは何か 機能的にはFirst In First Out (FIFO)とも呼ばれるキューの一種であるが、リング状にバッファを置いてそれの中でReadとWriteのインデックスがグルグルと回る構造をとる事によって容量に上限ができることと引き換えに高速な読み書き速度を得たものである。キューを単に実装するだけなら山ほど方法があって線形リストを使ってもいいしスタックを2つ使っても原理的には可能だ。その中でもリングバッファを用いた方法の利点はひとえに性能の高さでありメモリ確保などを行わないお陰でシステム系の様々な場所で使われている。 これの実装自体は情報系の大学生の演習レベルの難度であるが少し奥が深い。まずリングバッファのスタンダードなインタフェースと実装は以下のようなものである。 class RingBuffer { public: explicit

    徐々に高度になるリングバッファの話 - Software Transactional Memo
  • NFTとメタバースについて思うこと - Software Transactional Memo

    TL;DR NFT投機界隈のデタラメに気をつけましょう ブロックチェーンはデータに価値をもたらすのか もたらさない。 NFT界隈がよく言う「希少性」自体には何の価値もない、部屋の隅に落ちている埃だって厳密には世界に全く同じ物は存在しないしデジタルデータのように完璧かつ無制限に複製することもできない、それでも価値はない。 ブロックチェーンのwalletを作成したら既にそのwalletは自分の唯一無二な所有物となるが作成時点でwallet自体の価値は空である。希少や有限であること自体を根拠に出資を迫ってきたらそれは詐欺である。 希少or有限な物にお金を払うモチベーションがあるとするならばそれは実需を除くとそういう信仰があるからに他ならない。伏見稲荷大社に21万円払えば5号の鳥居が奉納できるがやってる事はそれと変わらない。伏見稲荷大社に置ける鳥居の数は当然有限だが、有限であることだけを理由に奉納

    NFTとメタバースについて思うこと - Software Transactional Memo