pandax381のブックマーク (138)

  • TCP/IP スタックを自作する - かーねるさんとか

    最近、TCP/IP スタックを自作しており、少し動くようになってきたので、それについて記事にしてみようと思いました。 主に、ポータブル(特定の CPU、NIC、OS、ライブラリ、コンパイラ機能に依存しない)かつマルチコア環境で利用できる実装があればいいなと思ったことが、モチベーションになっています。 まだ実装の途中ではありますが、ソースコードは GitHub に置いてありますので、よろしければお試しください。 GitHub - yasukata/iip: iip: an integratable TCP/IP stackgithub.com モチベーション TCP/IP スタック実装はインターネット上でいくつか見つけることができるのですが、それらの多くが可搬性についてあまり意識されておらず、込み入ったことをしようと思うと取り回しが良くない、というような印象を持っていました。 具体的には、既

    TCP/IP スタックを自作する - かーねるさんとか
    pandax381
    pandax381 2023/10/18
    昨日のiijlabさんのセミナーで紹介されてたやつだ!
  • キャリアハックの奇行 - Software Transactional Memo

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

    キャリアハックの奇行 - Software Transactional Memo
    pandax381
    pandax381 2023/07/21
    ”カリキュラムの中でネットワークスタック自作を迫られるキャンプなんてものもあり” 🤔
  • 詳解V4L2 (video for linux 2)

    この記事は「自動運転システムをエッジデバイスに組み込むための技術」を3回に分けて紹介するTURINGのテックブログ連載の第3回の記事「詳解V4L2 (video for linux2)」です。 第1回の「C++OpenCV完全入門!」、第2回の「OpenCVをNPPにした結果→10倍高速に!」もぜひご覧ください! はじめに こんにちは。TURING株式会社(以下、TURING)で、インターンをしている東大B3の中村です。 TURINGは、完全自動運転EVを作ることを目的に設立されたベンチャー企業です。自動運転システムとそれを搭載したEV車の開発を行っています。 TURINGの自動運転システムは、カメラからの映像入力を肝としています。これまではOpenCVを入力のインターフェイスとして利用していました。OpenCVを使用していたのは、 buildや使用法についての情報が多い コードが簡単に

    詳解V4L2 (video for linux 2)
    pandax381
    pandax381 2023/02/10
  • golangで便利ツール作ろうと思ったらos/execでハマった話 - Qiita

    はじめに PoCの初期段階などで、いくつかのシステムを組み合わせて動作させるような場面では、 リポジトリが分散し、開発者ごとに違う言語で小規模なシステムを構築していることがあります。 そんな中で、動作確認をしたり、不具合を再現させたりする際、以下のような手作業が発生していました。 1. システムAを実行してCSVを吐く 2. CSVをシステムB直下にコピーする 3. システムBを実行して結果を得る プログラマーの三大美徳の怠惰担当の私は、手動で何かをすることが嫌いなので、自動化するツールを作成していきます。 シェルスクリプトで書いても良いのですが、実行するデータパターンが複雑だったり、分岐したりすると面倒なので、私はgolangで作成することが多いです。 この記事では、そんな中でハマった出来事と、回避方法をご紹介します。 根解決していないものが多いので要注意&コメントお待ちしています。

    golangで便利ツール作ろうと思ったらos/execでハマった話 - Qiita
    pandax381
    pandax381 2023/01/17
    wordexp(3) でシェルと同じようにワイルドカードや変数の展開ができることを最近知ったのだけど Go でも使えたりしないかしら?
  • 快適なリモートワークに向けて自宅インターネット環境を良い感じにするための7つのこと

    注 : オーバースペックはロマン 自宅のインターネット環境が某ro光からフレッツ光クロスに切り替わったことを記念して書きます。 1. インターネット回線は10G タイプにする おすすめはフレッツ光クロス ドコモ光 10ギガ auひかり ホーム10ギガ 導入できるかどうかはエリアと建物による エリアは広がってきているがまだ狭い フレッツ光、フレッツ光ネクストが入っていても光クロスは設備が別なので注意 マンションでおそらく初のクロス契約者でしたが、いけました 集合住宅マンションであっても VDSL ではなくホームタイプを敷く 2. 10G 対応ルーターを利用する WAN(ONUと接続する側)が 10Gbps 対応なのはマスト、LAN(有線でPCなどに接続する側)は利用するようであれば、最低1ポートは 10Gbps 対応。不要なら気にしない v6 プラスに対応していること(光クロスの場合マスト

    快適なリモートワークに向けて自宅インターネット環境を良い感じにするための7つのこと
    pandax381
    pandax381 2022/12/16
    フレッツ光クロスのサービス区域内なのにマンションにVDSL設備しかない場合、管理組合の理事長に就任して総会で光配線方式の設備導入の議案を可決させると幸せになれます。#私はこれで10ギガ回線を手に入れました
  • プロトコルスタックを写経してネットワークを完全に理解したかった日記

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

    プロトコルスタックを写経してネットワークを完全に理解したかった日記
    pandax381
    pandax381 2022/10/16
    自作コミュニティもあります!プロトコルスタック自作していきましょう!!!
  • Using unwrap() in Rust is Okay - Andrew Gallant's Blog

    One day before Rust 1.0 was released, I published a blog post covering the fundamentals of error handling. A particularly important but small section buried in the middle of the article is named “unwrapping isn’t evil”. That section briefly described that, broadly speaking, using unwrap() is okay if it’s in test/example code or when panicking indicates a bug. I generally still hold that belief tod

    pandax381
    pandax381 2022/08/12
  • Rustの良質な学習リソースをまとめる - BioErrorLog Tech Blog

    Rustの勉強に良さげな学習リソースをまとめます。 はじめに Rust学習リソースまとめ The Rust Programming Language Tour of Rust Rust by Example The Rust Reference The Cargo Book Crate docs Rust API Guidelines Rust Design Patterns The Rustonomicon Secure Rust Guidelines Command line apps in Rust おわりに 参考 はじめに こんにちは、@bioerrorlogです。 最近、Rustを触り始めました。 多様な領域で盛り上がりを見せているRustですが、私は最近ハマっているブロックチェーンのエコシステムでRustが使われることが直接の理由となり、Rustに入門しました。 Rustは学習

    Rustの良質な学習リソースをまとめる - BioErrorLog Tech Blog
    pandax381
    pandax381 2022/06/24
  • Obsidianというアプリをより良く知るための外部リンク集

    Obsidianは日語の情報が少ない? 確かにそうかも知れません。 でもね…当にヤバい奴らって、Googleで「obsidian 〇〇」って検索するだけじゃ出てこなかったりするんですよ。いやホントに。 というわけで今回は、僕がObsidian関連で読み漁った記事の中から「こいつマジでヤベぇw」と感じた外部記事をご紹介します。 (一応言っておきますが褒め言葉です) これからObsidianを始めたいObsidianのことをもっと深く知りたい先人の活用法を知りたいあなたがそう思うなら、ぜひ一度読んでみてください。

    Obsidianというアプリをより良く知るための外部リンク集
    pandax381
    pandax381 2022/05/09
  • Obsidianは最高のマークダウン『メモ』アプリである

    僕は今までマークダウンエディタを資料作成ツールとして使ってきました。見出しやリスト、表を簡単に記述でき、それをCSSで整形して表示できるマークダウン記法は、ブログの下書きや業務で使うPDFなど、「他人に見せるための資料を作る」という役目にピッタリです。 逆に言えば、個人的なメモには向いていないと思っていました。 その固定概念をぶち壊したのがObsidian(オブシディアン)です。今回はマークダウン『メモ』アプリとして無くてはならない存在となったObsidianの特徴と、一般的なマークダウンエディタとの使い分けについてお話ししたいと思います。

    Obsidianは最高のマークダウン『メモ』アプリである
    pandax381
    pandax381 2022/05/08
  • [Rust] モジュールのベストプラクティス

    Rust のモジュールシステムは私の知る中でもトップクラスによくできた仕組みだと思います。特にリファクタリングによってモジュールを再構成するときのやりやすさは他の言語では経験できないものです。例えばそれなりの規模の Python プロジェクトを回帰バグを導入せずにモジュール構造のリファクタリングするのは不可能に近いですが、 Rust ではそのような不安を覚えたためしがありません。 Rust のモジュールシステムがどういうものかは、 The book にも書かれていますし、すでに大量のガイドが書かれていると思います。しかし、どのように使うべきかについては意外なほど情報が少なく感じます。 ベストプラクティスというのもおこがましいですが、数年使ってきて Rust のモジュールシステムを使う上でスムーズに感じる方法をまとめておきたいと思います。 Rust のモジュールシステム 稿の主題はモジュー

    [Rust] モジュールのベストプラクティス
    pandax381
    pandax381 2022/05/04
  • Python 3.15からデフォルトのエンコーディングがUTF-8になります - methaneのブログ

    Pythonがファイルを開くときなどに使われるエンコーディングはロケール(WindowsではANSIコードページ)依存でした。 Unixの世界ではどんどんUTF-8ロケールが一般的になっている一方、WindowsのANSIコードページはなかなかUTF-8になりません。 そのために、Unixユーザーが open(filepath) のようにエンコーディングを指定しないままUTF-8を仮定するコードを気軽に書いてしまって、Windowsユーザーがエラーで困るといった問題が発生します。 また、Windowsでもメモ帳(Notepad.exe)やVSCodeはすでにUTF-8をデフォルトのエンコーディングで使用しています。ANSIコードページがUTF-8になるのを待っていたらどんどん周りの環境から置いていかれ、レガシー化してしまいます。 Pythonがデフォルトで利用するエンコーディングをWind

    Python 3.15からデフォルトのエンコーディングがUTF-8になります - methaneのブログ
    pandax381
    pandax381 2022/04/27
  • 他のBSDユーザのためのOpenBSD管理入門

    ストレージ、ファイルシステム関連 ディスク関連の設定はインストール時に行われるが、運用開始後に変更や増設をする時に、以下のノウハウを把握しておくと有用: OpenBSDでは、fdiskパーティションとdisklabelパーティションが個別に存在する。 fdiskパーティションとdisklabelパーティションの設定は連動しない。fdiskパーティションのOpenBSD領域とdisklabelパーティションのOpenBSD boundaryはセクタ単位で合わせておく必要がある(インストール時には自動で合わせられる。手動で合わせる場合はdisklabel -Eのbサブコマンドを使用する)。 disklabel -Eコマンドによるパーティション操作は、OpenBSD boundaryの範囲内でのみ可能。 ディスクパーティションは例えば /dev/sd0a のように命名される デバイス wd :

    pandax381
    pandax381 2022/04/26
  • The Illustrated QUIC Connection: Every Byte Explained

    Every byte explained and reproduced QUIC is a secure UDP-based stream protocol that forms the basis of HTTP/3. In this demonstration a client connects to a server, negotiates a QUIC connection with TLS encryption, sends "ping", receives "pong", then terminates the connection. Click below to begin exploring. The connection begins with the client generating a private/public keypair for key exchange.

    The Illustrated QUIC Connection: Every Byte Explained
    pandax381
    pandax381 2022/04/25
  • The Illustrated TLS 1.3 Connection

    In this demonstration a client connects to a server, negotiates a TLS 1.3 session, sends "ping", receives "pong", and then terminates the session. Click below to begin exploring. The client begins by generating a private/public keypair for key exchange. Key exchange is a technique where two parties can agree on the same number without an eavesdropper being able to tell what the number is. An expla

    The Illustrated TLS 1.3 Connection
    pandax381
    pandax381 2022/04/23
  • 「Rustでやると知らないうちに詰む設計」を避けるためのTipsを集めてみる

    とりあえず、よく言われてるやつから埋めていこうと思う。 構造体にライフタイムを持たせない 構造体にライフタイムを持たせるのは「基的に」避けよ、というのが重要なのは間違いないのだけど、これをもう少し実践的な内容にしたい。ちょっと考えてみたけど、こういうのはどうだろうか。 ある関数呼び出しの中でしか絶対に使わない。returnするまでにその構造体のデータは全て破棄される。static変数に退避させることもできない。アロケーションもその関数が面倒を見る。そういう一蓮托生できる関数呼び出しに心当たりはあるか? ある→ 構造体にライフタイムを持たせてもよい。 ない→ ライフタイム禁止。 そう考えてみると、DIとかReduxとかとも通じるところがあるかもしれない。「つべこべ言ってないで全部の責務を一番外側に持っていく」という決断ができるときは構造体ライフタイムが選択肢に入る。

    「Rustでやると知らないうちに詰む設計」を避けるためのTipsを集めてみる
    pandax381
    pandax381 2022/02/07
  • Raspberry Pi Picoで組込みRust開発(開発環境構築編) - Qiita

    はんだ付けが難しい場合、価格は少々高くなりますが、スイッチサイエンスからピンヘッダ実装済みのPicoが販売されているので、それを購入するのもよいでしょう。 ピンヘッダのはんだ付けが完了したら、ブレッドボードに挿入します。PCとUSBケーブルで接続するので、ケーブルが出る方の端に配置すると、残りの部分に部品を置きやすくなります。 それでは、以下より開発環境を構築していきます。 実行環境 Mac mini (2018) macOS Big Sur 11.5.2 HomebrewでGitをインストール済み Macでの手順を記述しますが、Linuxでも同様に実行できると思います。 開発に必要なツールの準備 まず、Rustのツールチェインをはじめとした、開発に必要なツールをインストールします。 Rustツールチェインの準備 https://rustup.rs/ の手順に従い、Rustのツールチェイン

    Raspberry Pi Picoで組込みRust開発(開発環境構築編) - Qiita
    pandax381
    pandax381 2022/01/01
  • Rustでサイトを再実装

    このサイト r7kamura.com の実装言語をRubyからRustに変えてみた。 アプリケーションの概観 このサイトには、大別すると次の6種類のルーティングパターンがある。 GET / トップページ GET /articles/:article_id 記事ページ GET /feed.xml RSSフィード GET /links リンク集 GET /sitemap.txt サイトマップ (Google Search Console等が利用する) GET /* その他の静的ファイル (CSSや画像など) Rubyの実装では、適当なRackアプリケーション + rack-captureという構成で、Webアプリケーションとして実装しつつGitHub Pagesのために静的ファイルも吐き出せるという仕組みになっていた。 Rustの実装もほぼ同じで、適当なHTTPサーバー + 適当なHTTPクラ

    Rustでサイトを再実装
    pandax381
    pandax381 2021/11/08
  • Rustのメモリ管理機能とその特徴

    初出:技術評論社刊「ソフトウェアデザイン 2021年9月号」 先日、技術評論社よりRustのメモリ管理機能についての特集に寄稿させて頂きました。 この記事は自分が寄稿させていただいた記事をブログ用に一部推敲・加筆を加えたものです。 なお、ソフトウェアデザインでの特集ではより実践的な例でのメモリ管理についての解説もあるので、興味のある方は誌のほうも手にとっていただければと思います。 プログラム言語におけるメモリ管理の課題プログラミングにおける課題の一つとしてどうやってメモリ領域(ヒープ領域)を管理するかというものがあります。 C言語ではmalloc/free関数などを用いて手動でメモリを管理しています。 これらの関数はメモリアドレスを示すポインタを介してメモリ管理を行います。 malloc関数は必要なメモリ領域を確保してその先頭番地のポインタを返し、プログラム内ではその番地のメモリを読み書

    pandax381
    pandax381 2021/11/08
  • インフラエンジニアなら気になるQUICのロードバランサ (方式編)

    図1: QUICコネクションを振り分けるロードバランサはじめに記事では、バックエンドのWebサーバへリクエストを振り分ける装置の意味でのロードバランサ(図1)について、QUIC対応の議論状況を紹介します。方式編と実装編にわけて二編を予定しており、稿は方式についての解説です。 IETFでは、F5 Networksとマイクロソフトから提案されたロードバランシング方式が議論されています。稿では下記のインターネットドラフトをQUIC-LBと表記します。 QUIC-LB: Generating Routable QUIC Connection IDs https://datatracker.ietf.org/doc/html/draft-ietf-quic-load-balancers 執筆時点の -07 をベースとしますが、ドラフトですので今後の議論次第で改版が続きます。あらかじめご承知おき

    インフラエンジニアなら気になるQUICのロードバランサ (方式編)
    pandax381
    pandax381 2021/08/26