logiteca7のブックマーク (177)

  • https://jp.cuidevices.com/blog/fundamentals-of-switches

    logiteca7
    logiteca7 2024/07/13
  • Practical Scheme

    Shiro Kawai まだ下書き Schemeの特徴をあげるときに、「継続」や「call/cc」が出て来ないことはない。 でも、R5RSのcall/ccの項をいくら読んでも、どうもよくわからない。 call/ccを使えばC言語のbreakみたいなのとか、コルーチンとかいう スレッドもどきとかが書ける、というのはわかったけど、一体そういうのが書けて 何が嬉しいのか、そこんとこがピンと来ないんだ。 今、そこにある継続 プログラミングの世界の概念には、禅の公案のようなものがある。 それを説明する文章はほんの一文なのに、最初に目にする時、 その文は全く意味をなさない、暗号のように感じられる。 だがひとたびその概念を理解すると、 その概念の説明は確かにその一文で説明されているのがわかるのだ。 そんな、「分かれば分かる」という禅問答の中でも 「継続」は最も謎めいたものの一つと言えるだろう。 文献を紐

    Practical Scheme
  • CRubyはどうやってWebAssemblyに移植するか? 例外処理・Fiber実装・保守的GC…足りないパーツを埋めるAsyncifyの活用

    プログラミング言語Rubyの国内最大級のカンファレンス「RubyKaigi」。「RubyKaigi 2022」のKeynoteで登壇したのは、齋藤優太氏。「Ruby meets WebAssembly」のテーマで、WebAssembly上でRubyが動くようになった経緯、テクニック、ユースケースについて発表しました。全2回。後半は、WebAssemblyのユースケースについて。前回はこちら。 WASIでCRubyWebAssemblyにポートする方法 齋藤優太氏:ここまでが前半戦で、ここからどうやってCRubyWebAssemblyにポートしたかを紹介します。 CRubyはCで書かれたプログラムなので、すでにいろいろな環境にポートされています。このCRubyのソースコードは、かなりポータブルに書かれているので、CからWasmにコンパイルするコンパイラもあるしポーティングは簡単だなと。

    CRubyはどうやってWebAssemblyに移植するか? 例外処理・Fiber実装・保守的GC…足りないパーツを埋めるAsyncifyの活用
    logiteca7
    logiteca7 2024/07/11
    やっとこの文章が8割くらい理解できるようになった
  • ASLRの実装について

    logiteca7
    logiteca7 2024/07/04
  • 絶対に教科書に載らない桃鉄の(ついでにコナミとハドソンの)歴史|初心カイ

    はじめに 桃太郎電鉄 ~昭和 平成 令和も定番!~ が累計販売数350万を突破しました。おめでとうございます。 最新ニュースを掲載しました。 『桃鉄』と「日清焼そばU.F.O.」の異色コラボが実現! ~ 『桃鉄』 の累計販売数は350万を突破 ~https://t.co/AGox7AEIDw pic.twitter.com/8yPM7ozeRv — KONAMI 企業広報・IR (@Konami_PR_IR) March 22, 2022 この売上は驚異的なものです。日において300万以上売り上げたゲームソフトは、実は「任天堂/ポケモン関連」「ドラゴンクエスト」「ファイナルファンタジー」「モンスターハンター」「妖怪ウォッチ」しかありません。とんでもない化け物IPたちに桃鉄が仲間入りした、ということになります(元から長年の歴史を組んだ化け物IPな気がしますが)。 さて、そんな桃鉄

    絶対に教科書に載らない桃鉄の(ついでにコナミとハドソンの)歴史|初心カイ
    logiteca7
    logiteca7 2024/06/30
  • 槻ノ木隆の「BBっとWORDS」

    今回はスイッチについて説明したいと思います。最近のスイッチとルータは質的に同じと以前お話したと思います。ではなんでスイッチという言葉が登場したか、を説明しましょう。 スイッチの語源になるのは、「クロスバースイッチ(Crossbar Switch)」と呼ばれる方式です。日語では「腕木式」とも言われたりしますが、縦横2種類の配線を組み合わせる方式を指します。 このクロスバースイッチが最初に利用されたのは、電話交換機です。電話の場合、複数の人が同時に通話することが求められます。そこで例えば1~6までの拠点がある場合、これを図1のような構成で接続します。こうすると、例えば1と5、2と6、3と4が同時に通話したいと思ったときは、図2のように3カ所のスイッチをオンにすることで、お互いが同時に通話できることになります。 当然、回路などは巨大にならざるを得ないわけで、初期のクロスバースイッチ方式の電話

    logiteca7
    logiteca7 2024/06/28
  • VSCodeでGitのコミットを楽に整理して、レビュワーに「コイツできる」と思わせよう。

    はじめに Git Graphという拡張機能を使います。 Git GraphとGitLensという拡張機能を使います。[1] また、gitから開かれるエディタをvscodeにしておきます。 コミットのまとめかた(1分未満でできるよ) ステータスバーのGit Graphのボタンをクリックして、Git Graphの画面を開きます。 まとめたいコミットの一つ前のコミット(今回だとinit)を右クリックして、「Rebase current branch on this Commit...」を選択します。 「Launch Interactive Rebase in new Terminal」にチェックを入れて「Yes, rebase」をクリックします。 こんな画面が開きます。 まとめたいコミットを上から順にpickからsquashに変更します。最後の一つはpickのままにしておきます。そして「STAR

    VSCodeでGitのコミットを楽に整理して、レビュワーに「コイツできる」と思わせよう。
    logiteca7
    logiteca7 2024/06/26
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

    logiteca7
    logiteca7 2024/06/25
  • WASM Component Modelをまとめてみる

    この記事はWebAssembly Advent Calendar 2023 13日目の記事です。 まえおき 当はもっと発展した記事を書きたかったのですが、進捗ゼロに近いのでこのスクラップの焼き直しです。 また、あれから2ヶ月ほどたって仕様策定も進んでいると思われるのでそのキャッチアップも試みます。 WASM Component Model is 何? WASMはプログラミング言語非依存なバイナリーフォーマットで、Rustで書いたWASMモジュールをC#からも、Pythonからも利用するということが論理的には可能です。しかし、従来のWASM Core仕様で定義されるモジュール仕様はとてもプリミティブなもので、現実としては「Rustで書いたWASMモジュールをC#からも、Pythonからも利用する」というシナリオを実現するためには実装者がかなりの注意を払う必要がありました。 例えばCore仕

    WASM Component Modelをまとめてみる
    logiteca7
    logiteca7 2024/06/24
  • 動作するきれいなコード: SeleniumConf Tokyo 2019 基調講演文字起こし+α - t-wadaのブログ

    この文章は、2019年4月18日に開催された国際カンファレンス SeleniumConf Tokyo 2019 で行った基調講演の文字起こしを土台に加筆修正したものです。 当日の講演資料は speakerdeck で、動画は YouTube で公開されています。 Clean code that works - How can we go there? - Takuto Wada | SeleniumConf Tokyo 動作するきれいなコード - どうたどり着くか 日の講演タイトルは「動作するきれいなコード - どうたどり着くか」です。動作するきれいなコードへ至る道の話をさせていただこうと思います。 資料は公開予定で、講演の写真撮影も問題ありません。ツイッター等での実況も大歓迎です。ハッシュタグは #SeConfTokyo です。 改めて自己紹介です。和田卓人(わだたくと)といいまして、

    動作するきれいなコード: SeleniumConf Tokyo 2019 基調講演文字起こし+α - t-wadaのブログ
    logiteca7
    logiteca7 2024/06/19
  • Linuxカーネルハッカーになる4つの方法 | Yakst

    Linuxカーネル開発者になりたいと思っても、まず何から手をつけたらいいか分からず、始める前から挫折する人も多いだろう。すぐ始められる最初の一歩の例が、筆者の経験を交えて4つ挙げてある。 (これは、CUSECというイベントでの、カーネルは怖くないという話の続き) カーネルプログラミングを始めるにはどうしたらいいか、アドバイスを求めたことがある。その時は、こう回答があった。 仕事のためにカーネルを理解する必要がなくても、やってみたらどうだろう? Linuxカーネルメーリングリストに登録してみて、精一杯理解しようと頑張ってみよう。 メインのLinuxカーネルの一部にならないコードを書いているなら、時間の無駄だ。 これは私にとっては、全然、少しも役に立たなかった。そんなわけで、ここでは、あなたなりにOSやLinuxカーネルがどう働くか、楽しみながら理解していくための、いくつかの戦略について書いて

    Linuxカーネルハッカーになる4つの方法 | Yakst
    logiteca7
    logiteca7 2024/06/16
  • プログラムを高速化する話

    KMCの例会講座で用いたスライドを一部編集したものです。 ビット演算を組み合わせたトリッキーな方法で様々な操作を高速に行う方法を紹介します。

    プログラムを高速化する話
  • 明日使えないすごいビット演算

    KMCの例会講座で用いたスライドを一部編集したものです。 ビット演算を組み合わせたトリッキーな方法で様々な操作を高速に行う方法を紹介します。Read less

    明日使えないすごいビット演算
    logiteca7
    logiteca7 2024/06/06
  • 計算尺愛好会 keisanjyaku sliderule 旧名「泥沼愛好会」 

    ※ このサイトは基的にリンクフリーでおます。でも、商売のネタに使うのはやめとくれやす。 ※ ヤフオクの説明代わりに引用コピペ改変は絶対ダメ! ほんまええ加減にしいや

    logiteca7
    logiteca7 2024/06/03
  • 386と互換CPU

    演算は32bitでデータバスが16bitという半32bitCPU。 はっきり言って386DXの廉価版です。 16MHz、20MHz QFPのもの以外があるのかどうかよくわかりません。 こちらは386DXと違い、体感的には286機よりもやや高速と言った印象しかありません。 QFPのためにアップグレードパスが少なく、飼い殺しになったマシンも多いはず。 結婚して初めて買ったマシンがPC9801NS/eで、386sxの16MHzでおました。 QFPのCPUは基板にハンダ付けで、簡単には交換でけません。 この簡単に交換できないCPUを交換すると486マシン並になると言う夢のCPUが発売されて、購入後1年で互換CPUに世界にハマって行きよりました(~~; ベンチマークなんかを見ると、大したことないっすね。 286の高クロック品に負けそうなcpuだす。 せやけど、互換cpuに換装したら、倍速っちゅうのが

    logiteca7
    logiteca7 2024/06/03
  • STORES Product Blog

    2024-04-12 Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? Ruby Ruby のメソッド定義時に仮引数があるとき、それをカッコでくくらないのは私だけなの? 調べてみました。 2024-04-11 Rubyのスレッドをどう作るか/fluent interfaceに対する気持ち/コード補完を中断する理由【PPL 2024 非公式ふりかえり会 文字起こしレポート後編】 カンファレンス 2024年3月22日に『PPL 2024 非公式ふりかえり会』を開催しました。イベントでお話した内容を文字起こし形式で紹介します。こちらは後編です。 前編はこちら▼ product.st.inc 量子論理、型のエイリアス 藤村:次は『Automated Quantum Program Verification i… 2024-04-11 好きなプログラミング言語は

    STORES Product Blog
    logiteca7
    logiteca7 2024/06/02
  • Ruby "Quine" Paper Craftの解説 - STORES Product Blog

    STORESでフルタイムRubyコミッタをやっている遠藤(@mametter)です。 昨日は RubyKaigi 2024 の STORES ブースで開催していた企画 Ruby "enbugging" quiz の解説をしましたが、ブースでは Ruby Paper Craft というのも配布していました。今日はこちらを解説します。 STORES ブースで配布しているもの🎁 Ruby Paper Craft made by @mametter #rubykaigi pic.twitter.com/7tc62pZmkJ— STORES Tech (@storesinc_tech) 2024年5月15日 これは何 組み上げたらRubyっぽい形になるペーパークラフトです。 Ruby Paper Craftを組み上げた様子 遠藤が展開図を生成するプログラムを書きました。もちろんRubyで。そのスク

    Ruby "Quine" Paper Craftの解説 - STORES Product Blog
    logiteca7
    logiteca7 2024/06/02
    “2次ベジエ曲線”
  • Ruby3.0でRactorを入れた理由、M:Nスレッドの制限。深掘りRubyKaigi 2022 with ko1 & kateinoigakukun 文字起こしレポートvol.2 - STORES Product Blog

    2022年10月5日に『深掘りRubyKaigi 2022 with ko1 & kateinoigakukun~ RubyKaigiどうでした&RubyのWASI/並列どうなるの? ~』を開催しました。イベントでお話した内容を3部作でお届けします。こちらはvol.2です。 ko1の発表「Making *MaNy* threads on Ruby」をざっくり fujimura:では、笹田さんのパートに移ろうと思います。笹田さん、どうぞよろしくお願いいたします。 ko1:よろしくお願いします。 fujimura:最初にRubyKaigiのトーク内容のざっくりまとめと、感想及びその後の反響をお願いします。 ko1:ざっくりしたまとめで言うと、RubyにM:Nスレッドを入れたいという話を発表しました。M:Nスレッドとは何かというと、ユーザーレベルスレッドライブラリと、カーネルスレッドのよさをハイ

    Ruby3.0でRactorを入れた理由、M:Nスレッドの制限。深掘りRubyKaigi 2022 with ko1 & kateinoigakukun 文字起こしレポートvol.2 - STORES Product Blog
    logiteca7
    logiteca7 2024/06/02
  • Ruby のメソッドのソースコード(C言語)を初めて読んだ - ぺのめも

    この記事は、フィヨルドブートキャンプ Part 1 Advent Calendar 2023 の 18 日目の記事です。 はじめに こちらの記事のおかげ String#succ を読んでみる🙋‍♀️ 実装コードを確認する ① rb_str_succ 関数 ② str_succ 関数の前編(処理の準備) ③ str_succ 関数の後編 ④ enc_succ_alnum_char 関数 ⑤ enc_succ_char 関数 実装を読んでのまとめ irbで確認 漢字 絵文字 おわりに はじめに 自分はここ 2 年ほど Ruby on Rails を学習しており、個人開発で作った Web アプリ(これ)も、Rails で開発しています。 先日、Ruby の基礎を改めて復習しようと Ruby Silver の試験を受けたのですが、試験に向けた学習で色々なメソッドを触っているうちに、「これらの実装

    Ruby のメソッドのソースコード(C言語)を初めて読んだ - ぺのめも
  • Ruby中間表現のバイナリ出力を改善する - クックパッド開発者ブログ

    Ruby 開発チームに4週間インターン生として参加いたしました、永山 (GitHub: NagayamaRyoga) です。 私は「Ruby中間表現のバイナリ出力の改善」という課題に取り組み、Railsアプリケーションのコンパイルキャッシュのサイズを70%以上削減することに成功しました。以下ではこの課題の概要とその成果について述べたいと思います。 InstructionSequenceの概要 まず、RubyVM 内で実行される命令の中間表現、InstructionSequence (以下 ISeq と省略) について簡単に説明します。 通常の Ruby プログラムは、以下のような手順で実行されます。 ソースコードを構文解析し、抽象構文木を作る。 抽象構文木をコンパイルして、ISeq を作る。 RubyVM (YARV) で ISeq を解釈し、実行する。 ISeq は、このように Ruby

    Ruby中間表現のバイナリ出力を改善する - クックパッド開発者ブログ
    logiteca7
    logiteca7 2024/05/30