並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 75件

新着順 人気順

低レイヤーの検索結果1 - 40 件 / 75件

低レイヤーに関するエントリは75件あります。 プログラミングprogrammingnetwork などが関連タグです。 人気エントリには 『Webページがブラウザに表示されるまでに何が起こるのか?』などがあります。
  • Webページがブラウザに表示されるまでに何が起こるのか?

    ## # Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost 上記で「127.0.0.1 localhost」とあるように、[IPアドレス] [ホスト名]というフォーマットで書かれます。 HOSTS.TXTが使われていた当時 ( 1970年代 ) では、わずか数百台のホストしかなかったので、ネット上の全てのホスト情報の記載が可能でした。 しかし、インターネットが普及していくにつれてHOSTS.TXTは肥大化していき、1983年には、ホスト数はおよそ数万台になりました。もはやHOSTS.TXTによる名前解決は不可能となったので、現在のようなDNS

      Webページがブラウザに表示されるまでに何が起こるのか?
    • 大学に行かずにコンピュータサイエンスを学ぶときに優れている教科書や講義映像はどんなものがあるのか?

      急速なIT化の進行によってエンジニアが不足しており、情報系の学位を取得せずに独学やプログラミングスクールを通してエンジニアになる人も増えています。そうした人たちがコンピュータサイエンスを学ぼうとしたときにおすすめの分野や本・オンライン講義などが「teachyourselfcs.com」というサイトにまとめられています。 Teach Yourself Computer Science https://teachyourselfcs.com/ ◆コンピュータ・アーキテクチャ コンピュータが実際にどのように機能しているのかをしっかりとイメージできなければ、安定した抽象化を行うことはできません。この分野を学ぶのにおすすめなのは「コンピュータ・システム ~プログラマの視点から~」という本で、タイトルに「プログラマの視点から」とついている通り、高速で効率的で信頼性の高いソフトウェアを作成するという目的

        大学に行かずにコンピュータサイエンスを学ぶときに優れている教科書や講義映像はどんなものがあるのか?
      • 『ゼロからのOS自作入門』に込めた思い - uchan note

        2021 年 3 月 22 日に『ゼロからの OS 自作入門』を出版する予定です。 本書は OS を手作りする本で、現代のパソコンでちゃんと起動する点が特長です。 15 年前の 2006 年に出版された『30 日でできる!OS 自作入門』を読んで育った私(uchan)が その後継となるだろう本を書いたということで、執筆の裏話を記してみたいなと思います。 書籍の概要 タイトル:ゼロからの OS 自作入門 著者:内田公太(uchan) 出版予定日:2021 年 3 月 22 日 ページ数:768(最大。実際はもっと少なくなる予想) ISBN:978-4-8399-7586-9 出版社の書籍ページ:ゼロからのOS自作入門 | マイナビブックス 本書は OS 作りに関する知識がないところから始め、オリジナルの OS「MikanOS」を作る一通りの過程を説明します。 パソコンの電源を入れ、他の OS

          『ゼロからのOS自作入門』に込めた思い - uchan note
        • プロトコルスタックを写経してネットワークを完全に理解したかった日記

          Webページはどうやって表示されるのでしょうか. 「ブラウザでアドレスバーにURLを入力してEnter押してからページが表示されるまでに何が起きているか説明してください」面接で使っていた質問が面白いと話題に 上記の質問には様々なレイヤーでの回答があると思うのですが,私はネットワークの動作に興味を持ちました.というのも,TCP,IP,ARP,Ethernetといったキーワードが関連しているのは教科書や講義で聞いた気がするのですが,それ以上のことはうまく説明できなかったからです. これらのプロトコルは,普段はカーネル内部に隠れていてあまり意識できません. しかし,以下の資料を参考にプロトコルスタックを写経すれば,少しは身近に感じられるかもしれないと思いました. 3月に開催したプロトコルスタック自作キャンプの講義資料を公開しました。1週間でTCP/IPのプロトコルスタックを自作してUDPやTCP

            プロトコルスタックを写経してネットワークを完全に理解したかった日記
          • はじめに | OS in 1,000 Lines

            1000行でOSを作ってみよう ​本書では、小さなOSをゼロから少しずつ作っていきます。 OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基本機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。 本書ではコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。 「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法

            • はじめに - Writing an OS in 1,000 Lines

              本書では、小さなOSをゼロから少しずつ作っていきます。 OSと聞くと腰が引けるかもしれませんが、OS (特にカーネル) の基本機能は案外単純です。巨大なオープンソースソフトウェアとしてよく挙げられるLinuxでさえ、バージョン0.01はたった8413行でした。様々な要求に応えるために次第に肥大化していっただけで、当初は大変素朴な実装になっていました。 本書では素朴なコンテキストスイッチ、ページング、ユーザーモード、コマンドラインシェル、ディスクデバイスドライバ、ファイルの読み書きをC言語で実装します。これだけ様々な機能が詰め込まれているのに、コードは合計でたった1000行未満です。 「1000行なら1日でできそう」と思うかもしれませんが、初学者には少なくとも3日はかかるでしょう。OS自作のハマりポイントは「デバッグ」です。アプリケーション開発とは違うデバッグ手法・能力を習得する必要がありま

                はじめに - Writing an OS in 1,000 Lines
              • 1,000行で作るオペレーティングシステム

                「Writing an OS in 1,000 Lines」 というオンラインブックを書きました。ゼロから1,000行でOSを作るという内容です。 『自作OSで学ぶマイクロカーネルの設計と実装』 とは違い、最初の一歩の部分を重点的に解説しています。シンプルなモノリシックカーネル設計で、実装の解説だけでなくカーネルプログラミング特有の難しい部分、特に「カーネルをどうデバッグすれば良いか」をおさえた、初学者向きの内容になっています。 3日ほどあれば済むボリュームです。夏休みの自由研究がてら、ぜひチャレンジしてみてください。

                  1,000行で作るオペレーティングシステム
                • Linux システムコール 徹底入門

                  Linux システムコールについて調べたことをまとめる。システムコールの仕組みを理解すると、 OS とアプリケーションがどのように連携して動いているのかを理解できるようになります。 システムコールは CPU に依存する処理が多いため、 x86_64 に絞ります。 検証環境]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core) ]# uname -a Linux localhost.localdomain 4.18.0-80.11.2.el8_0.x86_64 #1 SMP Tue Sep 24 11:32:19 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux ]# cat /proc/cpuinfo | head processor : 0 vendor_id : GenuineInte

                    Linux システムコール 徹底入門
                  • コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み

                    Kernel/VM探検隊はカーネルや仮想マシンなどを代表とした、低レイヤーな話題でワイワイ盛り上がるマニアックな勉強会です。植山氏は、制作中のリンカである「mold」について発表しました。全2回。前半は、リンカの概要について話しました。 LLVMのリンカ「lld」オリジナルの作者 植山類氏:植山類です。今僕が作っているmoldというリンカについて発表します。 今回の発表の概要です。リンカが何かを知っている人はそんなにたくさんいないと思うので、まず説明します。次に、「mold」のポイントは速いことなのですが、速いと何がうれしいのかを説明します。そのあと、どれくらい速いのかを説明した上で、どう実現されているのか、概要を紹介します。詳細になると何時間あっても終わらないので、かなりハイレベルな話をします。 自己紹介のスライドを入れていませんが、僕はリンカを何度か作ったことがあって、LLVMのlld

                      コンパイラが作ったバイナリをつなぎ合わせるプログラム 「lld」の作者が語る、リンカの仕組み
                    • ゼロからのハイパーバイザ自作入門

                      本書では、64-bit ARM (ARMv8/AArch64) アーキテクチャを前提としたハイパーバイザの仕組みをできるだけ分かりやすく解説し、実際にラズベリーパイ4やQEMUで動作するハイパーバイザ (Type1) を自作する方法を解説しています。 ソースコード: https://github.com/HidenoriMatsubayashi/evisor ⬛︎ 注意 本書はまだ作成中(現在5章を作成中)ですが、モチベーション維持のために公開している状態です(章立てなど今後変わる可能性ありです)。内容は随時更新していますので、気になる方はウォッチやコメント等をお願いします。 ⬛︎ 学べること ・ハイパーバイザとその仕組みと原理 ・64-bit ARM (ARMv8/AArch64) アーキテクチャの仮想化支援機構 ・自作ハイパーバイザの作り方 ⬛︎ コミュニティ 質問や間違い指摘など本書

                        ゼロからのハイパーバイザ自作入門
                      • コンピュータ講座 応用編 第1回

                        第1回 CPUは数百本の足を持つトランジスタのかたまり 第一回目は、CPUを物理的・電気的な部品として解説します。パソコンに使用されるCPUの外観は、数百本の足(ソケットに挿すピン)を持ち、1億個を超えるトランジスタを集積したICで、VLSI(大規模集積回路)と呼ばれます。今回は、このCPUを外側から眺めて、物理的な仕組みや電気的な働きを説明します。 CPUの構造 CPUの解説の最初に、CPUの構造を概観します。そのために少し遠回りですが、ICの製造方法に触れておきます。 ICの製造方法 ICの材料にもっとも多く使われるのはシリコンです。土や砂の主成分であり入手しやすい事や、動作が安定していること、その絶縁膜が半導体に適しているという理由からです。 実際に材料として使われるのはシリコンが酸化物と結びついた珪石です。珪石をいくつかの工程を経て、高純度化(純度99.999999999、イレブン

                        • SSH接続をWebブラウザの純粋なHTTP上で実現する - nwtgck / Ryo Ota

                          HTTPといえばHTML/CSS/JavaScriptや画像などの小さめの限りがあるデータを手に入れるためによく使われている印象がある。REST APIのようなHTTPを使ったAPIでも限りのあるデータがリクエストとレスポンスになる印象が強い。

                            SSH接続をWebブラウザの純粋なHTTP上で実現する - nwtgck / Ryo Ota
                          • Goでゼロから作る 自作TCP/IPプロトコル サーバー

                            「マスタリングTCP/IP を読んだけど理解がイマイチ進まない。Goがどのようにサーバーを立てているのか気になる。」 そんなスキマを埋めるための本です。 Goの標準パッケージである net package を一切利用せずに、自作TCP/IPプロトコルでサーバーを作ります。 パケットをどのようにやり取りするかハンズオン形式で解説し、最後にToDoリストAPIを実装します。

                              Goでゼロから作る 自作TCP/IPプロトコル サーバー
                            • Nand2Tetris(コンピュータシステムの理論と実装)でCPUからOSまで一気通貫で作るのが最高に楽しかった話 - ( ꒪⌓꒪) ゆるよろ日記

                              どうも、しいたけです。 去年あたりからローレイヤー周りの知識を充実させようと思い、 低レイヤを知りたい人のためのCコンパイラ作成入門 を読んでCコンパイラを書いてみたりx86_64の勉強をしたりしていました。 今年に入ってから、よりローなレイヤー、具体的にはハードウェアやOSについてもう少し知りたいと思い始め、手頃な書籍を探していました。 CPUなどのハードウェア周りについては概要しか知らなくて手を動かしたことがないので、実際に何か作りながら学べるものとして、 O'Reilly Japan - コンピュータシステムの理論と実装 に挑戦することにしました。 O'Reilly Japan - コンピュータシステムの理論と実装 成果物は以下のリポジトリに置いてあります。 yuroyoro/nand2tetris 結論から言うと、やってみて大変楽しめました! 特にハードウェア周りは今まで挑戦したこ

                                Nand2Tetris(コンピュータシステムの理論と実装)でCPUからOSまで一気通貫で作るのが最高に楽しかった話 - ( ꒪⌓꒪) ゆるよろ日記
                              • 表紙 - 本物のC

                                このサイトは「本物の C 言語」について学習する機会の提供を目的としています。 「本物の」とはつまり、 標準規格(仕様)が C 言語をどういうものとして定めているか C プログラムが実際に CPU をどう動かすか という二つの意味合いに於いてです。 どうも巷間にはその辺りを気にせず何となくで書かれた資料が多い様なので、このサイトにより少しでも世界が最適化される事を期待します。 権利について 当然ですがこのサイト全体は著作権法により保護されています。法と良心に則って御利用下さい。 連絡はcontact<アット>real-c.infoまで。

                                • SIMってなんだ? ~セルラー通信がつながる仕組み、解説します~

                                  2023年4月6日開催「SORACOM UG Online #16 ~SIMの日イベント~」で、ソラコム今井(factory)が発表した資料です。

                                    SIMってなんだ? ~セルラー通信がつながる仕組み、解説します~
                                  • Linuxカーネルで学ぶC言語のマクロ - 覚書

                                    はじめに 本記事は電子書籍版もあります。 linuxカーネルはC言語のマクロを駆使して書かれています。それらのうち、凝ったマクロになじみの無い人には初見では意図がわからない&わかってみれば面白いであろうものをいくつか紹介いたします。対象読者は、C言語のユーザだけれども、マクロは定数定義くらいにしか使わないというライトなマクロユーザです。 マクロを使用する場所に依存するエラーを防ぐ 次のマクロは、二つの引き数の値を置換するだけの単純なものです。 #define swap(a, b) \ do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0) 注目すべきはマクロの定義全体を囲んでいるdo { ... } while (0)という表記です。初見の人には何のことかわからないと思います。考えられる最も単純な定義から遡って、なぜこ

                                      Linuxカーネルで学ぶC言語のマクロ - 覚書
                                    • フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記

                                      モチベーション なぜRustを選んだか? 私はQEMUは「アーキテクチャエミュレーション界のLLVM」だと思っている QEMUが高速な理由:TCG Binary Translation ゲスト命令(RISC-V) → TCG → ホスト命令(x86)の処理をRustで作ろう RISC-Vの命令をフェッチしてデコードする RISC-Vの命令をTCGに変換する TCGをx86に変換する 実装結果 Binary Translation実行を高速化するための様々なテクニック BasicBlock分まで複数命令をまとめて変換 TCG Block Chainingの実装 評価結果 TB Lookup and Jumpの実装 評価結果 まだ完成していないところ 一部の最適化はまだ未実装となっている ゲストアーキテクチャがx86のみとなっている。TCGによる複数プラットフォーム対応として、まずは環境のそろ

                                        フルスクラッチから作って理解するQEMU (Rust編) - FPGA開発日記
                                      • A Visual Guide to SSH Tunnels: Local and Remote Port Forwarding

                                        Bridge vs. Switch: What I Learned From a Data Center TourNetworking Lab: Ethernet Broadcast DomainsNetworking Lab: L3 to L2 Segments MappingNetworking Lab: Simple VLANDon't miss new posts in the series! Subscribe to the blog updates and get deep technical write-ups on Cloud Native topics direct into your inbox. TL;DR SSH Port Forwarding as a printable cheat sheet. SSH is yet another example of an

                                          A Visual Guide to SSH Tunnels: Local and Remote Port Forwarding
                                        • WEB+DB PRESS Vol.122に特集「Rustで実装!作って学ぶRDBMSのしくみ」を書いた - Write and Run

                                          KOBA789 です。 時が経つのは早いもので、気づけば2月末に無職になってから1ヶ月以上が過ぎていました。 その間に何をしていたのかといえば、表題の特集記事の執筆をしていました。 宣伝 このブログ記事は WEB+DB PRESS Vol.122 を読みたくなるためのものです。ぜひ買ってね。買ったらちゃんと読んでね。 作って学ぶ RDBMS のしくみ、書きました。みんな大好き Rust を使って解説してます https://t.co/nm526qQYnm— KOBA789 (@KOBA789) April 8, 2021 gihyo.jp 使用言語は Rust だし、RDBMS はそもそも難しいトピックだしで結構重めの内容ですが、まずは読み物として寝転びながらでもいいので読んでみてほしいです。 ゴールデンウィーク*1の自由研究のお供にもどうぞ。たぶんちょうどいい分量なんじゃないかなぁ。ゴー

                                            WEB+DB PRESS Vol.122に特集「Rustで実装!作って学ぶRDBMSのしくみ」を書いた - Write and Run
                                          • Go コンパイラのコードを読んでみよう - kosui

                                            はじめに 本記事は、 DeNA Advent Calendar 2020 の 11 日目の記事です。 突然ですが、「コンパイラのコードを読んでみよう」なんて言われても、「どうせ巨大で難解で複雑なロジックを理解しないと読めないんでしょ?」と思いませんか。 コンパイラの構造を理解しようとしても聞いたことのないような専門用語がずらりと並び、コードを読もうとしたらそれらをすべて完全に理解してないと一行も理解できないんじゃないか...。Go のコンパイラ gc のソースコードを読むまでは、私もそう思っていました。 しかし、あまりにも暇な休日のある日、思い立って gc のコードを読んでみました。すると、「コンパイル」という難解な響きの処理も、一つひとつを小さなタスクに分解することで、少しずつ読み進めることができると分かったのです! 何よりも感動したことは、 gc そのものが全て Go で書かれていて、

                                              Go コンパイラのコードを読んでみよう - kosui
                                            • 無から始める自作CPU

                                              クレイジーピエロ 著 無から始める自作CPU CPUは作れる!!!!!!!!ご存知でしたか!!!?????? CPU、それは我々が暮らす情報社会の基盤となる魔法の石です。 世に存在する全てのソフトウェア、例えばゲーム、AI、Webサーバ、OS、これらは全てCPUが無ければ動きませんし、今や車や飛行機、家電にも全てCPUが入っている時代です。 そんな誰もがCPUに依存している時代にも関わらず、CPUについて理解を持っている人間は余りにも僅か、というのが現状です。 そんな今こそCPUを作りましょう。 CPUを作り、完全に理解する事で、CPUによって成り立つ技術を学ぶ上での、揺るぎない自信と確証を身につける事が出来るでしょう。 本記事ではCPUという究極のブラックボックスに光を当て、半導体やプログラミングの知識が無の状態から、CPUを作る事を目標としています。 必要な物 本記事の内容の99%はW

                                                無から始める自作CPU
                                              • パケットキャプチャで理解する TLS1.3

                                                TLS は Transport Layer Security の略で、盗聴、あるいは通信相手のなりすましの可能性がある通信路において、安全に通信を行うための暗号通信プロトコルです。 本書では、Go 言語を使って TLS サーバ・クライアントを用意し、その通信を Wireshark で観察しながら、TLS のプロトコルについて説明します。 本書を読むことで、TLS の通信で実際にどのようなパケットが送受信されているかが確認でき、TLS の学習の助けになると思います。 また、TLS には複数のバージョンがありますが、本記事では、最も広く使われており、かつ最新である TLS1.3 に焦点を当てます。

                                                  パケットキャプチャで理解する TLS1.3
                                                • Goから学ぶI/O

                                                  GoにはI/Oに関わるパッケージが数多く存在します。io, os, bufio, fmtなどなど……。これらの立ち位置や、I/O実行の裏で何が起こっているのか本当に理解していますか?この本では、この問への答えをまとめました。

                                                    Goから学ぶI/O
                                                  • Go言語でゲームボーイアドバンスのエミュレータを作った話

                                                    CPUはなんとARMのCPUを採用しています。(そのおかげでLLVMのターゲットに指定できる) ゲームボーイとの違い CPU 最大の違いはCPUです。ゲームボーイ(以降、GB)ではZ80を独自カスタムしたLR35902というCPUを使っていますが、このCPUは8bitで動作するCPUです。つまり命令のサイズが8bit(1byte)しかありません! しかも、LR35902は掛け算命令など現代のCPUでサポートしている基本的な命令をサポートしていません。 これに比べてGBAに搭載されているARM7TDMIは32bit CPUです。つまり命令のサイズが4byteとGBの命令の4倍の大きさになります! このおかげでCPUの命令セットがさまざまな命令をサポートできるようになりました。(まあ後述の理由で実質16bit CPUですが...) またクロック数もGBの4MHzから16MHzに伸びました。 B

                                                      Go言語でゲームボーイアドバンスのエミュレータを作った話
                                                    • Rustでゲームボーイエミュレーターを書いた

                                                      RustでTGB-Rというゲームボーイエミュレーターを書きました。 とりあえずWindowsとLinuxで動作確認をしていて、エミュレーションの精度もそれなりに出ているはずです(以下は非公式ROMによるスクリーンショット)。 GameBoy WORDLE 2048gb Hi-Colour Demo Bad Apple!! 名前は、以前私が書いていたゲームボーイエミュレーターの精神的後継だったり、Rustで書いていたりとかでこうなりました。 以前書いたエミュレーターもオープンソースで公開していたのですが、ふと検索してみたら、GitHubにプロジェクトができていて、メンテナンスが続けられていました。 私がこれを書いていた時期はGitHubどころかgit自体が存在しないような時代で、サーバーを借りてそこに手作りのアーカイブをしこしこアップロードしていたような、あまりに素朴な開発でしたが、そんな時

                                                        Rustでゲームボーイエミュレーターを書いた
                                                      • 第2章 詳解QUIC ~ TCPに代わり下位層で使用する新しいトランスポートプロトコル | gihyo.jp

                                                        本章では、HTTP/3がTCPに代わって下位層で用いるQUICについて解説します。 QUICはトランスポートプロトコル QUICはトランスポートプロトコルです。QUICの説明に入る前に、トランスポートプロトコルついておさらいします。 TCP/IPの4階層モデル プロトコルは階層で役割を分担しています。TCP/IPの4階層モデルでは、アプリケーション層、トランスポート層、インターネット層、ネットワークインタフェース層に分かれます(図1⁠)⁠。 図1 TCP/IPの4階層モデル アプリケーション層に分類されるアプリケーションプロトコルは、クライアントやサーバで動作するアプリケーションの動作に関するデータやメッセージの通信ルールを規定します。たとえばSMTP(Simple Mail Transfer Protocol)は、メールを送信する通信ルールを規定しています。HTTPはこの層に属します。

                                                          第2章 詳解QUIC ~ TCPに代わり下位層で使用する新しいトランスポートプロトコル | gihyo.jp
                                                        • TLSが難しい?RustとLinuxカーネルで実装しよう!

                                                          TLS(Transport Layer Security)が難しすぎると、お嘆きのセキュリティファースト世代の皆様、RustでLinuxカーネルを実装しながら学んでみましょう! カーネルモジュールの実装は難しい?それは誤解です。TLSをアプリケーションとして実装しようとすると、各種のライブラリを検索していたつもりが、SNSを眺めていて、一日が終わっていることありますよね。カーネルモジュールを実装するために使えるのはカーネルの機能だけです。検索する必要はなく、雑念が生じる余地はありません。その集中力があれば、カーネル開発は難しくありません。 TLSとLinuxカーネル皆様の中には、LinuxカーネルはTLSをサポートしているのでは?と思っている方がいるかもしれません。TLSは実際のデータの送受信の前に、ハンドシェイクと呼ばれる、暗号鍵の合意や相手の認証を実施します。ハンドシェイク後、Linu

                                                            TLSが難しい?RustとLinuxカーネルで実装しよう!
                                                          • チルダ(~)はどうしてホームディレクトリになるのか - Lambdaカクテル

                                                            たまに忘れてコケたり,周りでも困っている人がいるようだったのでメモ. 追記(2020-09-06T11:25+09:00) この記事では仕組みのほうについて記述しており,由来については書いてなかったのですが,ブコメでホームディレクトリがチルダで表記されるようになった由来について幾人かの識者にご指摘いただきました. unix.stackexchange.com ちょうどHOMEキーと同じ場所にチルダキーがあったんですね.ありがとうございました. tl;dr ~/は$HOME/と同義である ~/が$HOME/に,ひいては実際の$HOME/の中身に展開されるのはシェル(e.g. bash, zsh, etc...)の拡張機能 シェルを使わなければその機能は使えないので,手で展開する必要がある シェルを使わない状況: プログラム中からパスをいじるような場合,DockerfileのCMDなど ~--

                                                              チルダ(~)はどうしてホームディレクトリになるのか - Lambdaカクテル
                                                            • eBPFに3日で入門した話 - CADDi Tech Blog

                                                              はじめに eBPF とはなにか ざっくり概要 「Packet Filter」なのに「Virtual Machine」? eBPFでなにができるか? カーネルイベントのフック ユーザーランドアプリケーションとのやりとり eBPFの主な用途 eBPFが注目される背景 eBPFの仕組み アーキテクチャと処理フロー カーネルモジュールとeBPFの違い eBPFプログラムの作り方 eBPFプログラムを作ってみる 環境の準備 Hello world もう少し複雑なサンプル その他のサンプル HTTPリクエストのダンプ TCP接続先の調査 tcplife dirtop filetop oomkill まとめ eBPFはなにに使えるか 参考サイト はじめに こんにちは、Platformチームの小森です。 eBPF (extended Berkley Packet Filter) について、2022年8月2

                                                                eBPFに3日で入門した話 - CADDi Tech Blog
                                                              • Webサーバの仕組みについて入門してみた(Python実装) - iimon TECH BLOG

                                                                はじめに 株式会社iimonでSREエンジニアをしているhogeです。 本記事はiimonアドベントカレンダー9日目の記事となります。 今回の記事は技術的な棚卸しとして、普段大変お世話になっているWebサーバがどういった仕組みで動いているのかを実装しながら深堀りしていこうと思います。 弊社のバックエンドはDjango/FastAPI + Gunicornの構成で動作しているため、Pythonを絡めた説明が多くなるかと思います。サンプルコードもPythonで実装をしています。 途中、システムコールやファイルディスクリプタなどにも踏み込んだ話をするのですが、低レベルなプログラミングをちゃんとやったことがないため、間違えている部分があるかもしれません。今後学習して行く中で気づいたら都度修正していきたいと思います。 環境・使用ツール 言語 Python OS Ubuntu(Linuxのシステムコー

                                                                  Webサーバの仕組みについて入門してみた(Python実装) - iimon TECH BLOG
                                                                • 「ゼロからのOS自作入門」を Rust でやる (第1章~第4章) - gifnksmの雑多なメモ

                                                                  ゼロからのOS自作入門 を 一通り写経 したところ、 Rust に移植したくなったのでやっていきます。 次回: 「ゼロからのOS自作入門」を Rust でやる (第5章) - gifnksmの雑多なメモ 関連記事一覧: ゼロからのOS自作入門 カテゴリーの記事一覧 - gifnksmの雑多なメモ github.com Rust で OS なので名前は "錆OS" です。安直です。 "sabios" でざっとググったところ、スペイン語で "賢い" って意味があるようです。 良いですね。 クレバーな実装を目指したいところです。 方針 「ゼロからのOS自作入門」の章立てに沿って1章から順番に実装していきます。 C++ で一通り写経は完了しているので完成形の OS と関係ない節はスキップしていきます。 せっかく Rust で実装するので安全性や抽象化という点で MikanOS との差異を出せたら良

                                                                    「ゼロからのOS自作入門」を Rust でやる (第1章~第4章) - gifnksmの雑多なメモ
                                                                  • 『基礎から学ぶ 組込みRust』を書きました - 低レイヤ強くなりたい組込み屋さんのブログ

                                                                    はじめに 2021年4月20日、『基礎から学ぶ 組込みRust』(C&R研究所) を出版します。Rust の文法から組込み Rust でファームウェアを作成するところまでを、片手で持てる (多分!まだ持ったことないけど!) 1 冊の本にまとめた、喉から手が出るほど (私が) 求めていた書籍です。 先日、無事入稿を果たしたので、今の気持ちを徒然なるまま綴ったのが、このエントリです。 基礎から学ぶ 組込みRust 作者:中林 智之,井田 健太発売日: 2021/04/20メディア: 単行本(ソフトカバー) 一番始めに言いたいこととしては、今現在、「組込み Rust がプロダクションレディか?」、と問われると、「ほとんどのプロジェクトに対してそうではない」というのが私個人の見解です。セーフティクリティカルな分野では、機能安全をはじめとする認証の問題があり、そんなにおいそれとプログラミング言語変更

                                                                      『基礎から学ぶ 組込みRust』を書きました - 低レイヤ強くなりたい組込み屋さんのブログ
                                                                    • ARM入門/arm introduction

                                                                      2020/08/08 ARM入門勉強会の発表資料です。 https://connpass.com/event/180812/

                                                                        ARM入門/arm introduction
                                                                      • golangで作るTCPIPプロトコル

                                                                        はじめに とりあえずIT業界に入ったら読んでおけという名著はいろいろありますが、その中の1冊がマスタリングTCP/IP入門編でしょう。 僕も買ってはいたものの読むのを途中で挫折していたので、今回しっかり読んでTCP/IPを再勉強してみたいと思います。 マスタリングTCP/IPを読みながらその他わからんことはググりつつ、golangでTCPIPプロトコルそのものを自作してみます。 方針は以下のようにします。 ethernetから作る データのやり取りにnetパッケージは一切使わない (訂正、PCのIPやMacアドレスを取るのにだけ使用しますた) データのやり取りに使うのはsyscallのsendtoとrecvfromだけ socketはRAW_SOCKETを使う golangやネットワークについても初心者の駆け出しですので間違えや実装ミス、変なコードがあるかもですが、生暖かい目でよろしゅうお

                                                                          golangで作るTCPIPプロトコル
                                                                        • Goのメモリ管理 / Memory management in Go

                                                                          テレメトリーシグナルの相関、してますか? 第一原理からのデバッグを支える計装 / Do you utilize telemetry correlations?

                                                                            Goのメモリ管理 / Memory management in Go
                                                                          • 低レイヤー技術を教えるにあたって Part 1: 用語集 - Qiita

                                                                            はじめに こんにちは、Latte72 です。 慶應義塾大学公認サークル Computer Society で低レイヤーを扱うシステム班の班長を務めることになったので、後輩たちに低レイヤー技術(特に自作言語やコンパイラ・インタプリタの実装)について興味を持ってもらうにはどうしたらいいかと考えながらこの記事を書いています。 この記事は私のサークルに入会した新入生や、プログラミング言語がどのようにして動いているのかに興味がある人、低レイヤーにあまり詳しくないけど自作言語や自作コンパイラに興味がある人たちに向けたものです。 プログラミングに関する事前知識がなくても読めるように、多くの補足をつけています。 既にプログラミングに精通している方にとっては説明が不適切に感じる部分があるかもしれません。温かい目でご覧いただき、コメント欄にてご指摘いただければありがたいです。 当初は1つの記事として公開しよう

                                                                              低レイヤー技術を教えるにあたって Part 1: 用語集 - Qiita
                                                                            • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

                                                                              GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) に食わせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

                                                                                アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
                                                                              • How does the Linux Kernel start a Process

                                                                                ...and how to ptrace the entry point and m3ss w1th da stack. In this article, you will learn what happens inside the Linux Kernel when a process calls execve(), how the Kernel prepares the stack and how control is then passed to the userland process for execution. I had to learn this for the development of Zapper - a Linux tool to delete all command line options from any process (without needing r

                                                                                  How does the Linux Kernel start a Process
                                                                                • 1000 行で実現する Linux on Browser

                                                                                  menu基盤チームによるGoogle Cloudの活用事例~Application Integration, Cloud Tasks編~

                                                                                    1000 行で実現する Linux on Browser

                                                                                  新着記事