タグ

ブックマーク / qiita.com/tajima_taso (6)

  • 【Linuxカーネルを読む】ChatGPTで爆速コードリーディング - Qiita

    はじめに OpenAIによって開発されたChatGPTが話題になっています。特に、2023年3月14日に公開された最新モデルであるGPT-4は、これまで私達がAIに持っていた認識を根底から覆したのではないでしょうか? 私は、「普通に人間とやりとりしているのと変わらんやん…」と率直に驚きました。 エンジニアの業務の中でも、自動コーディング支援、技術的課題の壁打ち相手、ドキュメント自動生成、学習支援等さまざまな用途に活用する可能性を皆さん検証している段階です。私もその波に乗っている真っ最中です。 そこで今回は、ソースコードリーディングをChatGPTをメンターにしたら爆速にできるのではないか?という仮説を検証してみました。 そしてどうせやるなら、ソースコードリーディングのハードルの高さナンバーワン(個人調べ)の「Linuxカーネル」を題材にしてみました。 なお、使用したモデルはGPT-4です。

    【Linuxカーネルを読む】ChatGPTで爆速コードリーディング - Qiita
    labunix
    labunix 2023/04/12
  • 原理原則で理解するbashの仕組み - Qiita

    はじめに 以前書いたエントリー、重大な脆弱性(CVE-2017-5932)で少し話題になったbash4.4の補完機能の便利な点で、bash4.4からでないとタブの補完機能のソート処理が制御できないという問題について、ソースコードレベルで調べた結果をまとめていたのですが、bashの実装そのものを深く掘り下げ過ぎてしまい、内容が膨大になったので、何回かに分けて書こうと思います。 今回はbashが起動されてからインタラクティブモードでキーボードの入力を待ち受けるまでのお話です。普段使っているbashがどのような処理を行っているのか一緒に覗いてみませんか? 検証ソースコード Bash version 4.1.0(1) release GNU bashの生誕 bashのプロセスが起動されるのはOSへのログイン時にユーザーのログインシェルがbashに設定されている場合、あるいはログイン後に明示的にba

    原理原則で理解するbashの仕組み - Qiita
    labunix
    labunix 2017/03/22
  • 原理原則で理解するDocker - Qiita

    はじめに この記事は、オールアバウト Advent Calendar 2016の23日目のエントリーです。 私、@tajima_tasoからは【原理原則で理解するDocker】と題して書かせて頂きます。 Dockerってそもそも何?ってところから、内部実装部分についても触れています。 Dockerとは何か? まず、Dockerとは何なのか?について軽くおさらいしましょう。 今更聞けないという方も、なんとなくイメージが掴めたら嬉しいです。 何故、今Dockerなのか? Docker ソフトウェア開発を行う環境にいる方々の中で、この言葉を耳にする機会が増えてきているのではないでしょうか? 実際の業務において導入まではしていないとしても、何となく盛り上がっている技術用語であることは肌感覚としてあると思います。 実は、Docker実現のベースとなっているLinuxコンテナという技術自体はずっと前か

    原理原則で理解するDocker - Qiita
    labunix
    labunix 2016/12/24
  • 原理原則で理解するフォアグラウンドプロセスとバックグラウンドプロセスの違い - Qiita

    topはバックグラウンドで実行できない? 突然ですが、Unixライクな端末上での処理で下記のようになる理由はわかりますか? また、こうなってしまうのを防ぐ方法はないのでしょうか? シェルでOSを操作するときに、バックグラウンドプロセスとフォアグラウンドプロセスという言葉をしばしば耳にしていると思います。 エンジニアであれば、聞いたことがないという人はいないでしょうし、その違いも何となく知っているとは思いますが、体系的に理解する機会があまりなかったという人もいるのではないでしょうか? もともとはデーモンプロセスについてQiitaに投稿しようと思って記事を書いていたのですが、デーモンプロセスの性質上どうしてもバックグラウンドプロセスというものに言及しなければならなく、その説明も含めて一個のエントリにしてしまうと煩雑になると思い、今回はバックグラウンドプロセスにフォーカスしてみました。 上記はプ

    原理原則で理解するフォアグラウンドプロセスとバックグラウンドプロセスの違い - Qiita
    labunix
    labunix 2016/11/09
  • Linuxのファイルディスクリプタをハックする - Qiita

    Linuxでネットワーク経由のデータを処理するプログラムでも、ローカルファイルのデータを処理するプログラムでもファイルディスクリプタ(ソケットディスクリプタ)という言葉を聞いたことがありますよね。 C言語で学ぶソケットAPI入門 第1回 サーバ編にもソケットディスクリプタとして登場しました。 プロセスとやりとりできる状態になったファイルを識別するための整数値ということは、ほとんどの人が理解していると思いますがそれ以上になるとそこまで深くは知らないという方もいるのではないでしょうか? もちろんLinux上でアプリを作る限りにおいては、それ以上知る必要はなくファイルディスクリプタを使ってCRUDにかかわるAPIを適切に選択してプログラミングすることができれば、プログラマーとしては何も問題ありませんよね。 (ファイルディスクリプタにまつわる問題として、プロセスが開くことができるファイルディスクリ

    Linuxのファイルディスクリプタをハックする - Qiita
    labunix
    labunix 2016/10/05
  • Linuxのforkシステムコールをハックする - Qiita

    最近C言語で学ぶソケットAPI入門という投稿をアップさせて頂いていて、TCP、UDPを使ったプログラムまではとりあえず書いてみたので、そろそろネットワークプログラミングでは必要不可欠な並列化処理や多重化処理の方に移ろうと思っています。 そこで、今回はマルチプロセスの処理について掘り下げようと思ってます。マルチプロセスを実現するにあたって重要なシステムコールはforkです。 もともとLinuxで子プロセスを生成するシステムコールはforkというものであることは知っていますし、使い方も何となく知ってはいました。 ただ、それがどういった実装によって実現されているのかまでは知らなかったので、この際ちゃんとソースコードを追って調べてみました。 とはいえソースコードだけ追っていくのが辛い場面もあったりしたので、そんな時はとりあえずfork関数を使った適当なコードをgccで静的リンクさせたオブジェクトコ

    Linuxのforkシステムコールをハックする - Qiita
    labunix
    labunix 2016/09/22
  • 1