タグ

Unixとunixに関するmsakamoto-sfのブックマーク (110)

  • 低レイヤーを学ぶための技術書をまとめてみる - Qiita

    半年前から低レイヤーに関する勉強をしている。 その中で読んだ技術書の感想、そしておすすめの読む順番をここにまとめてみる。 OS 30日でできる! OS自作入門 おすすめ度:80(満点100) 一言:自作OSの初心者向け 自作OSでまず初めに候補に挙がるのがこの。2006年に出版されたではあるが、OSの根幹を理解するにはとても良い。最初からアセンブリでメモリ操作をがっつり書くため、アセンブリの経験やレジスタ周りの知識が無いと挫折してしまうかも知れない。そこを乗り越えれば楽しくOSを実装していける。 コンピュータシステムの理論と実装 ―モダンなコンピュータの作り方 おすすめ度:95 一言:一からOSを作って学べる格的な指南書 論理回路と呼ばれるレベルからメモリやCPUを作っていき、アセンブリ言語やアセンブラの開発、そして独自言語とそのコンパイラ、OSまで開発する。CPUなど各要点の考え方

    低レイヤーを学ぶための技術書をまとめてみる - Qiita
  • Windowsのパス区切り文字は、なぜ逆スラッシュになったのか?

    MS-DOS 2.0のソースコードが公開された 9月末にMS-DOS 2.0のソースコード(https://github.com/Microsoft/MS-DOS/tree/master/v2.0)が公開された。ここでは、ソースコードを見ながら、Windowsのパス区切り文字が、なぜ「\」(英語表示では逆スラッシュ)になったのかを考えてみる。 ただ、MS-DOSは8086のアセンブラで記述されているため、コードを説明するのではなく、必要な定義部分などを使って解説することにする。 まずは簡単にMS-DOSという名称について説明しておく。IBMがIBM PC用のOSとしてマイクロソフトに開発を依頼したため、IBM PC用のものはPC-DOSという名称であり、MS-DOSはIBM以外のメーカー用に使われた。この時点では、PC-DOSとMS-DOSはほぼ同一のものとしてよい。ここでは、すべてMS-

    Windowsのパス区切り文字は、なぜ逆スラッシュになったのか?
  • タイムゾーンを考慮した日時の扱いのベストプラクティス - エムスリーテックブログ

    こんにちは、server-side kotlinterraform を書くことが多い、エンジニアリングGの矢崎(id:Saiya)です。 タイムゾーンや日時の扱いについての話題がホットな昨今ですが、 そういった日時の扱いについて例えば以下のようなお話を受けることが少なからずありました: とりあえず日時は UTC からの時差情報付きで扱えばいいんでしょ? DB に保存するときもタイムゾーン情報付きで入れておけばいいんでしょ? こういったお話を振られた際に、思うところを一言でサッと説明できずもやもやする事もあり、 また web サービスにおいて日時・タイムゾーン・オフセットをどう扱うべきか?納得の行く説明をあまり見つけられなかったため、 筆者なりに考えをまとめてみました。 国家的祭典のために急にサマータイムが導入されるといった話に限らず、 クラウドサービスが UTC+0 の日時になってい

    タイムゾーンを考慮した日時の扱いのベストプラクティス - エムスリーテックブログ
  • Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR CONTAINER

    今回はソケットプログラミングについて。 ソケットというのは Unix 系のシステムでネットワークを扱うとしたら、ほぼ必ずといっていいほど使われているもの。 ホスト間の通信やホスト内での IPC など、ネットワークを抽象化したインターフェースになっている。 そんな幅広く使われているソケットだけど、取り扱うときには色々なアーキテクチャパターンが考えられる。 また、比較的低レイヤーな部分なので、効率的に扱うためにはシステムコールなどの、割りと OS レベルに近い知識も必要になってくる。 ここらへんの話は、体系的に語られているドキュメントが少ないし、あっても鈍器のようなだったりする。 そこで、今回はそれらについてざっくりと見ていくことにした。 尚、今回はプログラミング言語として Python を使うけど、何もこれは特定の言語に限った話ではない。 どんな言語を使うにしても、あるいは表面上は抽象化さ

    Python: ソケットプログラミングのアーキテクチャパターン - CUBE SUGAR CONTAINER
  • UNIX/Linux互換OSをゼロから作った話 - Qiita

    こんにちはredcap97です。 私は、UNIX互換OSをゼロから作っています。 ある程度動くようになったので紹介したいと思います。 デモ 現在、QEMUの上で動作するようになっています。CPUはx86ではなくARMを対象に作っています。シェルと基的なコマンドが動作するようになっていて、リダイレクトやパイプも利用できます。 Dockerを使うと簡単にOSを動かすことができます。 概要 33のシステムコールを実装している システムコールはLinuxと互換性がある シェルはDashが利用できる Coreutilsのコマンドが使える libcはmusl libcを使用している ファイルシステムはMinix File Systemを実装している 以上です。 私は実装がとても遅いので、ここまで作るのに2年ぐらいかかっています。 Linusの偉大さを肌で感じなら、これからもノロノロと作っていきたいと

    UNIX/Linux互換OSをゼロから作った話 - Qiita
  • BFDライブラリ - Wikipedia

    BFDライブラリ(ビーエフディーライブラリ、Binary File Descriptor Library)は、GNUプロジェクトにおいて、各種のオブジェクトファイルを取り扱う主要なメカニズムである。2003年時点で、約50のファイルフォーマットと約25のプロセッサ・アーキテクチャをサポートしている。 BFDライブラリは、オブジェクトファイルに共通の抽象的なビューを与えることにより動作する。オブジェクトファイルは、それぞれが名前・属性・データブロックを持つ複数の「セクション」、シンボルテーブル、リロケータブルバイナリのエントリ、を記述する「ヘッダ」を持つ。 内部的にBFDライブラリは、データを抽象的な形式から対象のプロセッサやファイルフォーマットが要求するビット/バイトレイアウトの形式に変換する。その主要なサービスはバイトオーダーの違いを取り扱うことである。例えば、リトルエンディアンのホスト

    BFDライブラリ - Wikipedia
    msakamoto-sf
    msakamoto-sf 2016/03/28
    ELFなど各種オブジェクトファイルを取り扱うライブラリ
  • BFD Internals

    msakamoto-sf
    msakamoto-sf 2016/03/28
    メモリ上からELFファイルのイメージを読み込むライブラリ
  • Roland McGrath - bfd function to read ELF file image from memory

    msakamoto-sf
    msakamoto-sf 2016/03/28
    メモリ上からELFファイルのイメージを読み込むライブラリ
  • sedがシンボリックリンクを破壊する話|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    sedがシンボリックリンクを破壊する話 こんにちは、mizuno_asです。 sedは便利ですよね。自動化する際や手順書を作る際、人間が対話的にやらなければならない操作をコマンドで自動化できるのはすばらしいです。 sedには入力元ファイルを上書きする-iオプションが存在します。みなさんも設定ファイルをコマンドラインから書き換えるような際に、よく使うのではないでしょうか。ところがsedの-iオプションはノーケアで使うと、シンボリックリンクを破壊することはご存知でしょうか? Photo via Visualhunt 例として以下のように、テキストファイルにシンボリックリンクを張っておきます。 $ echo hoge > test.txt $ ln -s test.txt link $ ls -l 合計 4 lrwxrwxrwx 1 h-mizuno h-mizuno 8 1月 15 11:57

    sedがシンボリックリンクを破壊する話|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
  • ln コマンドのおぼえかた - 学習する機械、学習しない人間

    ln -s でシンボリックリンクを作成するたびに、引数の一番目と二番目、どっちがリンクのパスで、どっちが元となるパスかがわからなくなる自分としては、以下の記事はまさに「そうそう!」だった。 lnコマンドって、たまに使うと2つのpathのどっちが[出発地]でどっちが[目的地]か、引数の順番を忘れることってありませんか? http://d.hatena.ne.jp/naotube/20100708/p1 今回は、ln コマンドの使い方を実践で学ぶことにする。 リンクの基礎 あるファイル(ディレクトリ)があって、そこへリンクを貼る、という行為は、「ファイル(ディレクトリ)へのポインタを持ったリンクファイルを作成する」ということ。出発地とそこからのポインタ(矢印)を合わせてリンクになる、すなわち [目的地]<------[出発地] |-------------| リンクのようになるわけだ。 この右

    ln コマンドのおぼえかた - 学習する機械、学習しない人間
    msakamoto-sf
    msakamoto-sf 2016/02/26
    ln -s
  • ln の引数の順番で迷わなくなった - Qiita

    ln は引数1つだけで実行できる ln に引数を1つだけ与えて実行すると,カレントディレクトリに指定したパスへのリンクを作成します. たしかに,どのファイルへのリンクを作るかを指定しなければリンクは作れないので納得できます. ~/work% ls -l 合計 0 ~/work% ln -s /bin/sh ~/work% ls -l 合計 0 lrwxrwxrwx 1 tn tn 7 6月 7 12:10 sh -> /bin/sh* lnコマンドを使うときの心の中 lnには少なくとも1つの引数が必要であることを知ってから,次のような順番で考えてコマンドを入力するようになったので引数の順番を間違わなくなりました. 「シンボリックリンクを作ろう」

    ln の引数の順番で迷わなくなった - Qiita
    msakamoto-sf
    msakamoto-sf 2016/02/26
    ln -s
  • 【翻訳】/binと/usr/binが分裂してる訳 - みっどメモ

    Translation of "Understanding the bin, sbin, usr/bin, usr/sbin split" Posted by midchildan on May 22, 2015 1969年、どのようにケン・トンプソンとデニス・リッチーはPDP-7でUnixを開発したか知っているだろうか。実は1971年に彼らは1.5MBのRK05ディスクパックを2つ搭載したPDP-11にアップグレードした。 彼らのOSが大きくなり、ルートファイルシステムとして使ってた1個目のディスクに収まりきらなくなったとき、保存しきれなくなったファイルは2個目のディスクに移した。このディスクにはもともとユーザーのホームディレクトリが保存されてたために /usr という名前でマウントされていた。こうして第二ディスクに /bin , /sbin , /lib , /tmp などOSのディレ

    【翻訳】/binと/usr/binが分裂してる訳 - みっどメモ
  • Linuxでソースからコンパイルしてインストールしたパッケージを管理する『porg』 | 俺的備忘録 〜なんかいろいろ〜

    yumやapt-getからインストールしたり、rpmやdebパッケージを利用してインストールした場合、アンインストールやアップグレードを行うのは簡単だ。 しかし、ソースファイルからコンパイルしたパッケージの場合、makeファイルにuninstallが用意されているならまだしも、もし用意されてないと、パッケージをアンインストールしたりするのは非常に大変だ。 そんなソースからコンパイルしmake installしたパッケージを管理してくれるのが、『porg』だ。pacoという、同じくソースからインストールしたパッケージの管理ツールが前身。 今回は、この『porg』をCentOS 7に実際にインストールし、ソースからインストールしたパッケージを管理してみることにする。 1.『porg』のインストール まずは『porg』のインストールから。 以下のコマンドを実行し、パッケージのソースコードをダウン

  • HUPシグナルとnohupとdisownとバック/フォアグラウンドジョブの理解 - Qiita

    人に教えるには自分が完全に理解していなければ、ということで調査・検証した結果。 動機 シェルからバックグラウンドで処理を行うには? nohup コマンド実行 & を使う。 コマンド実行 => Ctrl-Z => disown を使う。 定番は前者だが、両者の違いは何なのか? disownとは一体何をするのか? この機会に調べてみた。 結果のまとめ 長くなったので最初にまとめを。しかしまとめも長い。 (後自分が読む時に一番下にスクロールしたくないので…) ジョブテーブル シェルはセッションに紐づくジョブテーブルを持っている。 バックグラウンドジョブを登録している。 (フォアグラウンドジョブは未確認。ソースを読むしかないか) jobsビルトインコマンド で一覧を参照可能。 ここに見える限り、シェルのexit時にSIGHUPを送る。 この一覧にない場合、exit時にSIGHUPは送らない。 シェ

    HUPシグナルとnohupとdisownとバック/フォアグラウンドジョブの理解 - Qiita
  • Lessの便利な使い方

    最近 Stop using tail -f (mostly) や 「tail -f」を使うのは情弱、情強は「less +F」を使う などless押しな記事が幾つか上がっているんだけど、タイトルが煽り気味なのか若干反感を呼んでいるようなのでless派が職場で肩身の狭い思いをしないようにもう少し便利な使い方を紹介したい。 tail -fの様なScroll forward less +Fで起動またはless起動中にF 元記事にもあるtail -fと同様の振る舞い。正直この機能と検索だけでいいのであればtailで十分。lessの便利なところは様々な機能との組み合わせにあって、これから紹介する機能は基的にこのモードと組み合わせが可能だ。あと、less開いてFのほうがタイプが面倒くさくないのでおすすめ。 1行で表示する (改行しない) less -Sで起動またはless起動中に-Sr(-Sでモード切

    Lessの便利な使い方
  • 「Ctrl」+「S」でキー入力が受け付けられなくなる

    ついついWindows上で一般的なファイル保存のショートカット(「Ctrl」+「S」キー)に手が伸びてしまい、キー入力がまったく受け付けられなくなってしまった。これは、Linuxのコンソール上で「Ctrl」+「S」キーを押すとターミナルへの出力がロックされるためだ。 この場合には、焦らずに「Ctrl」+「Q」キーを押せば解除される。混乱を避けるためにこの機能そのものを無効にさせたい場合、次のように指定しよう。 まず現在の状況をモニタしてみる。コマンドラインから「stty -a」と入力すると「stop」機能が「Ctrl」+「S」に割り当てられていることが分かる。 これを無効にすることは簡単であり、コマンドラインから「stty stop undef」と入力すればよい。 # stty -a speed 38400 baud; rows 65; columns 100; line = 0; int

    「Ctrl」+「S」でキー入力が受け付けられなくなる
    msakamoto-sf
    msakamoto-sf 2015/01/07
    Ctrl-S C-s 押したら、C-q (Ctrl Q) で解除 or stty でstopをundef.
  • OpenSSHのユーザ認証で証明書を使う方法 - セキュリティ

    OpenSSHのユーザ認証で証明書を使用する方法について説明します。証明書で認証することにより、ユーザの柔軟な制限や鍵管理を容易にできます。 読み方 OpenSSH おーぷんえすえすえいち 証明書 しょうめいしょ 概要 Secure Shellでよく使用されるユーザ認証は、以下のものでしょう。 ssh-keygenなどで作成した鍵ペアを使用した公開鍵認証 パスワード認証 証明書を利用した認証では、証明書でユーザごとにオプションを許可することや有効期限を設定できます。authorized_keysが不要であるため、ユーザの鍵の交換も容易になります。 証明書を利用した認証でできること 証明書では、以下のことが実現できます。 証明書の失効により、「ユーザのログイン」を禁止する 証明書の有効期限を設定することで、「ユーザの有効期限」を設定する ユーザごとに X11のフォワーディング、sshポートフ

  • route - ルーティングテーブルの表示/設定を行う

    routeコマンドは、IPパケットをルーティングするためのルーティングテーブルの内容表示と設定を行う。ルーティングテーブルは、おもにOSが管理するルーティング情報を保管したメモリテーブルだ。テーブルのエントリーが経路を表している。経路はネットワークまたはホストへ到達するために通過する必要のあるゲートウェイを表している。 ここで、ルーティングテーブルの管理とは、 ルーティングテーブルの表示と確認 ルーティングテーブルへの経路の追加、削除、変更 を意味する。 書式 ●Windowsの場合 route[ -f][ -p][ PRINT| ADD| DELETE| CHANGE[ 宛先IPアドレス][ MASK サブネットマスクアドレス[ ゲートウェイIPアドレス][ METRIC メトリック数][ IF インターフェイス名]]

    route - ルーティングテーブルの表示/設定を行う
  • Community Blog ファイルロックと新OFDロック

    UNIXシステムには古くから実装され、現在ではPOSIX、SUSにより標準化されているファイルロックですが、実は予想外の動作に驚かされることがあります。この状況を打開する新しいファイルロックがLinux v3.15で導入されました。 排他制御とファイルロック プログラミングでは、排他制御の必要に迫られることが多くあります。複数の処理の流れが同じデータを使用する場面の多くが、これに該当します。スピンロック、セマフォ、mutexなど手法はさまざまですが、いずれも目的はデータの保護にあります。逆に言えば、データを保護していないロック(排他制御)があれば、シグナルやソケットなどのプロセス間通信を検討すべきと言えます。 処理の流れの代表例はプロセスです。処理対象が自プロセスのメモリ内のみに存在するデータならば、プロセスのメモリ空間は来独立しており他プロセスが使用することはできません。このため、排他

    Community Blog ファイルロックと新OFDロック
  • よくわかるLinux帯域制限 | GREE Engineering

    矢口です。 みなさんはLinuxのtcという機能をご存知でしょうか。送信するパケットの帯域制御を行うことができる大変強力な機能で、グリーでもいくつかの用途で使用されています。 具体的な事例の一つはRedisです。Redisではreplicationを新規に開始する際やfailoverが発生しmasterが切り替わった際(特に2.6系)にストアされている全データが転送されます。しかし帯域制限をかける機能がないため、ネットワーク帯域を圧迫してしまう危険性があります。また通常のクライアントとの通信でも大量のクエリにより予想以上の帯域を使用してしまう可能性があります。このような場合にtcを用いることでRedisの使用する帯域をコントロールできます。 このように有用なtcですが残念なことに日語/英語ともにわかりやすい解説や詳細な情報は多くありません。 私も社内において使われていたtcの設定に問題が

    よくわかるLinux帯域制限 | GREE Engineering