タグ

programmingとlinuxに関するstealthinuのブックマーク (17)

  • Webサーバーアーキテクチャ進化論2023

    はじめに 最近プログラマーとしてのキャリアに一区切りつけようと思っており、これまでのプログラミングの勉強の集大成となるブログを書きたくなったので書く。初めてプログラミングをして、フロントエンド開発をして、サーバーから値が返ってきたときは「どういう仕組みで値が返ってきたんだ?」と疑問に思っていた。ずっと理解したくて理解できていなかった。だからずっと勉強していた。そして最近になってようやく自分の言葉で説明できるようになった気がしたのでブログを書きたい。 2015 年版が自分の原点であり、この記事を書くモチベーションになった このような記事は実は過去に存在している。 FYI: https://blog.yuuk.io/entry/2015-webserver-architecture その記事はサーバーがどういう仕組みで動いていて、どのように進化し、2015 年に至るかを解説してくれた記事だ。自

    Webサーバーアーキテクチャ進化論2023
    stealthinu
    stealthinu 2023/03/31
    すごい力作。というか今やNode.jsから開発経験スタートでそのあたりしか触らずにこれてるって時代なのね…
  • Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル

    Common Lispの処理系であるSBCLをインストールしようとしたら、追加でlibzstd-develというのを新たに要求されるようになっていた。見るからに圧縮系のライブラリだけれど聞き慣れないのでちょっと調べてみた。 ちょろっと調べたところ、以下のことが分かった: Zstandard(ゼットスタンダード?)というのが正式な名前。 Facebookが開発した。 Deflateよりも速いことを主眼においている。 BSDライセンス。 Linuxカーネルまわりで使えるようになっているほか、一部のディストロではパッケージの圧縮フォーマットとして使われているようだ。 Webというよりはどちらかといえばバックエンド的な箇所で使われている印象がある。 facebook.github.io zstd コマンド使ってみた 他の名だたる圧縮アルゴリズム同様、Linuxで直接ファイルに対してこれを実行して圧

    Facebookが開発した圧縮アルゴリズムZstandardについて調べた(非常に高速)(今日から使えます) - Lambdaカクテル
    stealthinu
    stealthinu 2022/10/11
    zstdとう圧縮ツールが最近あるそうでgzipと同じくらいの圧縮性能だけど速度が段違いらしい。これは使えるかも。
  • Dirty Pipe(CVE-2022-0847)の発見経緯が面白かった - knqyf263's blog

    最初に断っておくと今回は万人向けの記事ではないです。面白かったので自分が忘れないようにまとめているだけです。 記事の位置付け はじめに 発見経緯 CRCのエラー HTTPアクセスログ 壊れたgzipのtrailerを見てみる 壊れたファイルの法則性 月次ログファイルの生成 Linuxカーネルのバグの可能性 バグ混入の歴史 ログ破損の原因 8バイトの謎 PoCの制約 まとめ 記事の位置付け Dirty Pipe(CVE-2022-0847)三部作の最後です。ダークナイト三部作で言うとダークナイト ライジングにあたります。ダーティとダークって似てませんか。 spliceを使って高速・省メモリでGzipからZIPを作る 20分で分かるDirty Pipe(CVE-2022-0847) Dirty Pipe(CVE-2022-0847)の発見経緯が面白かった(記事) 上の1, 2を前提知識と

    Dirty Pipe(CVE-2022-0847)の発見経緯が面白かった - knqyf263's blog
    stealthinu
    stealthinu 2022/03/31
    すごくおもしろかった。原因特定するまで大変だったろうけど、わかってきたときめちゃくちゃ楽しかったろうなあとも思う。この楽しさはこういうのやってる仕事じゃないと伝わらん気がするが。
  • 減り続ける利用可能メモリ……そしてついにリブート!

    減り続ける利用可能メモリ……そしてついにリブート!:Linuxトラブルシューティング探偵団 番外編(2)(2/3 ページ) メモリが足りなくなるとOSってハングアップするの? まずは、そもそもの疑問を整理しておきましょう。 お客さまは「メモリが足りなくなってリブートに至った」といっています。ですが今回の場合は、メモリ不足自体がリブートに直結したのではなく、ハングアップしていたところをASRによってハードウェア的に落とされたことが分かっています。ですから、質的な疑問は「メモリ不足がOSハングアップを引き起こし得るか?」ということです。 そもそもハングアップとは、カーネルパニックなどを起こしてシステムがクラッシュしている場合と、何らかの原因で極端に動作が遅くなっている場合がありますが、残念ながら疑問に対する答えは「Yes」です。メモリ不足がOSのハングアップを引き起こすことはあります。 「そ

    減り続ける利用可能メモリ……そしてついにリブート!
    stealthinu
    stealthinu 2017/04/13
    『mallocなどは実は仮想メモリの確保を目的としておりその先で物理メモリが確保できたかまでは意識しません。実際に物理メモリが確保されるのはメモリ領域を読み書きするとき』今の今まで認識間違ってたわ…
  • Tips (CGI, Perl, Unix and etc.)

    Tips 目次 Tips (CGI&SSI) ブラウザの表示を変化させない CGI スクリプト(Status: 204 No Content) 他の URI (URL) にジャンプする CGI スクリプト(Location フィールド) CGI のタイムアウトおよびブラウザの中断 CGIスクリプト中で重い処理をバックグランド実行 サーバによるタイムアウトを回避 サーバによるタイムアウトを回避&重い処理の保護 SSI における HTML 出力の中断 CGI出力内容のコピーをファイルに出力 CGIによるブラウザでのダウンロード POST のサイズ制限 Content-Encodig による gzip 圧縮 Tips (Perl) flock の使い方 排他制御 実効 UID の切替え perl の setuid スクリプト perl の system、exec、パイプ fork, system

    stealthinu
    stealthinu 2016/01/05
    perlのCGIで非常に時間がかかる処理をさせるような場合にSIGPIPEで死なないようにforkしてそっちで処理を継続させるサンプル。
  • 第6回 UNIXプログラミングの勘所(3) | gihyo.jp

    ネットワークプログラムとSIGPIPE 「私の書いたサーバが突然死するんです。どうしてでしょうか」という質問を受けることがあります。これは多くの場合、SIGPIPEの処理を忘れていることが原因です。SIGPIPEとは、切断されたネットワークソケットなどにデータを書き込もうとした際に送出されるUNIXシグナルです。特に設定しない限り、プロセスはSIGPIPEを受け取ると強制終了されます。そのため、通信が突然切断される可能性のあるTCPサーバにおいては、SIGPIPEを無視するよう設定する必要があります。 # デフォルトの動作(SIGPIPEの場合はプロセスの終了)に設定 $SIG{PIPE} = 'DEFAULT'; # SIGPIPEを無視するよう設定 $SIG{PIPE} = 'IGNORE'; # SIGPIPEを受信した際に実行するサブルーチンリファレンスを # 設定 $SIG{PI

    第6回 UNIXプログラミングの勘所(3) | gihyo.jp
    stealthinu
    stealthinu 2016/01/05
    perlのCGIなどでクライアントの接続が切れている状況で出力しようとするとSIGPIPEが発生してその時点でperlが死ぬ。$SIG{PIPE}を設定するか時間掛かる処理はforkしておく。
  • そのファイル、安全に更新できていますか?(アトミックなファイル操作:前編)

    ハートビーツ最年長エンジニアの滝澤です。以前、弊社CTOにシニアおっさんエンジニアから若手エンジニアに向けて何か書いてくれと言われた気がしたので、アトミック(atomic)なファイル操作について3編に分けて紹介します。この内容は弊社の社内勉強会で話した内容をまとめ直したものです。 そのファイル、安全に更新できていますか?(アトミックなファイル操作:前編)←今回 そのファイル、安全に作成できていますか?(アトミックなファイル操作:中編) そのファイル、安全にロックできていますか?(アトミックなファイル操作:後編) 今回は「みなさん、安全にファイルの更新ができていますか?」ということについて、考えてみましょう。 あなたはあるサーバ上のファイルの更新を依頼され、もらったファイルをサーバ上でコピーして上書きしました。しばらくして、データに異常が発生したので調べて欲しいと言われました。さて、何が起き

    そのファイル、安全に更新できていますか?(アトミックなファイル操作:前編)
    stealthinu
    stealthinu 2015/12/21
    unixでアトミックなファイル操作をする手法について確認しようとしたら滝澤さんのエントリーが一番に上がっていた。流石だ。
  • Visual Studio Code

    Version 1.85 is now available! Read about the new features and fixes from November.

    Visual Studio Code
    stealthinu
    stealthinu 2015/04/30
    inteli senseが効いてWinでもMacでもLinuxでも使えるコードエディタ。基本EmacsでSublimeとか試しても結局出戻りで例外的にPHP書く時はPhpStorm、Java書くときはNetBeans使えるようになったが、これはいけるかなあ。
  • [速報]マイクロソフト、コードを書くのに最適化したツール「Visual Studio Code」発表。Windows、MacOS、Linuxに対応、無料提供。Build 2015

    マイクロソフトは米サンフランシスコで開催中のイベント「Build 2015」で、開発用のコードエディタ「Visual Studio Code」を発表しました。WindowsだけでなくMacOSLinuxにも対応。無料で提供。 Visual Studio Codeはプログラミングのためのコードエディタで、Gitによるソースコード管理、IntelliSense、コードリファレンス、デバッガなどの機能を搭載。 Windows対応はもちろん、MacOS Xにも対応。

    [速報]マイクロソフト、コードを書くのに最適化したツール「Visual Studio Code」発表。Windows、MacOS、Linuxに対応、無料提供。Build 2015
    stealthinu
    stealthinu 2015/04/30
    おおお、MS本気だな。開発ツール会社としてのマイクロソフトとしては今まではWindowsが足かせになってたという気がする。SublimeやInteliJの強力なライバルとなりそう。
  • Linus氏のC++に対する最近の否定的見解 | taro-nishinoの日記 | スラド

    最近、Linus氏はまたしてもReal World TechnologiesのModerated DiscussionsフォーラムでC++に対する否定的見解を投稿したことは皆さんも御存知でしょう。主要な投稿は以下の5つです。 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110563&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110577&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110618&threadid=110549&roomid=2 ht

    stealthinu
    stealthinu 2015/03/16
    2010年の記事。なんというか問題に適した言語を使え、ということなのかなと思った。このエントリを読む限りc++でlinuxのカーネル書くのには向かないがRailsでやるようなことをこのレベルで気にする必要はないだろうし。
  • CC500: a tiny self-hosting C compiler

    Introduction I wrote this tiny compiler, which translates a subset of C into x86 machine code, for fun. It has no use, unless it counts as educational. I called it CC500 because I initally guessed it would take about 500 lines. It turned out to be about 600 lines even without the comments and blank lines. With the comments and blank lines it has about 750 lines. It could be made shorter, but I wan

    stealthinu
    stealthinu 2014/11/18
    すげえ。500行で自己コンパイル可能なtiny Cコンパイラ。必要最低限なgetcharとかmallocとかだけシステムコール呼ぶバイナリが書いてあるがあとはこのtiny Cで書いてある。トリッキーなコードはなかった。
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

    stealthinu
    stealthinu 2014/08/21
    forkの返り値がマイナスのチェックをなおざりにしてPID取得し-1にkillしちゃうとほぼすべてのプロセスが全滅すると… 自身がrootの場合。ひえええ。
  • 使いやすいシェルスクリプトを書く

    できればシェルスクリプトなんて書きたくないんだけど,まだまだ書く機会は多い.シェル芸やワンライナーのような凝ったことではなく,他のひとが使いやすいシェルスクリプトを書くために自分が実践していることをまとめておく. ヘルプメッセージ 書いてるシェルスクリプトが使い捨てではなく何度も使うものである場合は,体を書き始める前に,そのスクリプトの使い方を表示するusage関数を書いてしまう. これを書いておくと,後々チームへ共有がしやすくなる.とりあえずusage見てくださいと言える.また,あらかじめ書くことで,単なるシェルスクリプトであっても自分の中で動作を整理してから書き始めることができる.関数として書くのは,usageを表示してあげるとよい場面がいくつかあり,使い回すことができるため. 以下のように書く. function usage { cat <<EOF $(basename ${0})

    stealthinu
    stealthinu 2014/05/20
    色つけるとかはクリアコードさんも書いてたな。こうやってある程度ひな形化してあるとそれベースにして書きやすい。ということでこれコピーしてひな形にしとこう。
  • TOMOYO Linuxに学ぶ説得術 - 未来のいつか/hyoshiokの日記

    昨日、TOMOYO Linuxメインライン化記念合同勉強会(カーネル読書会、セキュアOSユーザ会、まっちゃ445)に行ってきて、小崎さんが匿名掲示板でガチでレビューしていたお話を聞いたので、早速過去ログを読んでみた。http://tomoyo.sourceforge.jp/2ch/thread-2.txt (追記:2009/7/4 21:03 なぜか後半部分、アスキーアートの後が切れてしまったので、前半部分を若干カットして(略)の部分、その2を追加しました。) LKML (Linux Kernel Mailing List)というのはLinuxカーネルの技術的なことを議論するもっとも権威(?)あるメーリングリストで、ここで議論され合意されたものがLinux体に取り込まれることになる。このLinux元の体(くどいな)のことをメインラインと呼ぶ。Linuxを創ったLinusさんに

    TOMOYO Linuxに学ぶ説得術 - 未来のいつか/hyoshiokの日記
    stealthinu
    stealthinu 2009/07/06
    パッチをメインラインに取り入れてもらうにはそう説得できるだけの材料の他に説得の仕方が重要。ものすご参考になった。
  • 常駐型サーバープログラムのデバッグ手法

    BOOK: WEB+DB Press TITLE: 常駐型サーバーのデバッグ手法(ドラフト版) AUTHOR: (株)プリファードインフラストラクチャー 太田一樹 *注: この文章はWEB+DB PRESS Vol.48に掲載された記事のドラフト版です はじめに 今回はデバッグ関連特集ということで、常駐型サーバープログラムを作成する際のハマりどころやそれに対する解析方法・解析ツール・対策を、実際の経験を交えながら紹介したいと思います。 筆者は(株)プリファードインフラストラクチャーでインメモリ分散検索エンジン「Sedue (セデュー)」を開発しています。モバイル向け検索エンジン「エフルート」や、2008/11/6にリニューアルされました「はてなブックマーク2」などの検索バックエンドとして使われております。 この検索エンジンはいくつかの常駐型サーバープログラムから構成されており

    stealthinu
    stealthinu 2009/04/07
    サーバプログラム、特に大規模なもので、リソースのリークまわりでの調査・対応のしかた。
  • Microsoft PowerPoint - 22_git20050422-debiantemplate.ppt

    stealthinu
    stealthinu 2007/10/18
    linuxのカーネル開発に使われてる、バージョン管理システム。分散リポジトリのSubversionみたいなもんか?
  • Shell: script (Japanese)

    ■ シェルスクリプト ちょっとだけシェルスクリプト。 csh 系ではなく sh 系で bash や zsh や ksh や POSIX shell などの話です。 * 使いましょ ? も便利 for 文 case 文 if 文 引数を扱う $* と $@ 標準入力を一行ずつ find と xargs 標準エラー出力 {} サンプル シンプルバックアップ YYYYMMDD ディレクトリを YYYY/MM/DD へ このページでは、コマンドラインから入力を「強調文字」にしています。 シェルの話題なので、入力がはっきりわかるようにするためです。 プロンプトは sh ということで「$ 」を使用しています。 ■ * 使いましょ シェルを使うときにファイル名の展開として ls コマンドを使うと思いますが、echo * という使い方もしっておいてください。 これはシェルのとっても基的なことなんですが、

  • 1