タグ

Cに関するCliffordBrownのブックマーク (12)

  • lsコマンドをハックしてみよう

    ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、ショッピング事業部開発部の吉野です。 Yahoo!ショッピング開発部では新人エンジニア向けにコマンドのソースコードを読むことを奨励しています。 その初期の題材として、lsコマンドがよく挙げられます。 今回は「lsコマンドをハックしてみよう」と題し、lsコマンドについてお話しさせていただきます。 突然ですがエンジニアの皆さん、lsコマンドのソースコードを読んだことはありますか? 読んだことのない方はぜひ一度、目を通しておくことをおすすめします。 意外と知られていませんが、lsはcd,pwdなどのコマンドと違いシェルの組み込みコマンドではありません。 一口にlsと言っても、複数のソースコードが存在します。 代表的なのはGN

    lsコマンドをハックしてみよう
  • http://www.machu.jp/posts/20090307/p01/

    http://www.machu.jp/posts/20090307/p01/
  • アルゴリズムとデータ構造演習

    演習の目的は、プログラミング言語C及びSchemeの基礎を習得し、 それらの言語を通じて、講義「アルゴリズムとデータ構造」の理解を深めることにあります。 重要なお知らせ 特に重要な連絡事項はここに掲載されます。 課題について 課題には、A課題とB課題があります。(課題番号の末尾が種類を表します。) B課題が基礎的な課題で、A課題が発展的な課題となっています。 B課題を全問解くことが、単位取得の目安です。 C入門第1回(10月10日) C入門第2回(10月17日) C入門第3回(10月24日) C入門第4回(10月31日) C第1回(11月7日) C第2回(11月14日) C第3回(11月21日) C第4回(11月28日) C第5回(12月5日) Scheme第1回(12月12日) Scheme第2回(12月19日) Scheme第3回(1月9日) Scheme第4回(1月16日) C補講

  • 【ハウツー】今こそ再考察! C言語ポインタ徹底解説 (1) ポインタと1次元配列の関係 | エンタープライズ | マイコミジャーナル

    C言語は、ポインタが使える言語です。ポインタを使えば、メモリの直接的な操作など、より柔軟なプログラミングが可能です。一方、そのためにはポインタがどのようなメモリ領域を指し示しているか、またポインタ自体が有効なアドレスを保持しているかなどについて十分な理解が必要です。 稿では、C言語のポインタについて、配列との対比に焦点を当てて解説を行います。 *** C言語では、ポインタを配列のように扱うことができます。また、配列名はポインタに変換可能で、別のポインタに代入できます。 まずは1次元の場合について、ポインタと配列の関係を考えてみましょう。 宣言文の記述 いま、ポインタと配列を次のように宣言したとします。 char *p; ← char型へのポインタpを宣言 char a[5]; ← char型を要素とする、要素数5の配列aを宣言 この宣言の結果を図にすると、図1、図2のようになります。 図

  • C言語講座:sizeof

    サイトマップ / C言語講座>出入り口>総目次>目次:関数>sizeof( )演算子 sizeof( )演算子 [文字列を浮動小数点数に変換]←このソース→[トークンの取り出し] /* sizeof( ) 演算子 */ /* 今日はsizeof( )演算子について学びます。sizeof( )は関数ではなく、演算子です。今日のソースプログラムはsizeof( )演算子を使って、整数と浮動小数点数の各データ型が何バイトかを表示させます。 sizeof( )の戻り値は、unsigned intであることを前提にしてソースプログラムを作りました。プログラムを実行すると異常な値が表示されるようならば、unsigned intでない可能性があります。処理系により sizeof( )の戻り値が unsigned longのものもあります。その場合は書式指定子を "%u"から"%lu"に変更して下さい。

  • http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide15-1.html

    CliffordBrown
    CliffordBrown 2008/05/29
     データ型
  • 原始的Ruby入門 - takkan_mのNo planな日常

    最近、Rubyを書いていないので再入門しようと思い、Hello World のチュートリアルを書こうと思う。 まず、Rubyを入手する。ここから最新のソースを入手し、コンパイルしておこう。何事も新しいのはいいことだと思う。とりあえず、今回は、安定版の最新ソースを入手。 次に、お好きな vim で新しいファイルを作る。ファイルをつくるのは、先ほど落としたRubyのソースと同じディレクトリがいいだろう。ファイルの先頭には、おきまりのおまじないを書かなくてはいけない。 #include "ruby.h" これは、Rubyを勉強していくうちに理解できると思う。 Rubyは、完全なオブジェクト指向言語なので(信じられるかい?数値や文字列までオブジェクトなんだ。Javaのようにプリミティブな型なんて存在しない。)、まずはオブジェクトを作成しなければならない。作成の方法は、 VALUE my_obj =

    原始的Ruby入門 - takkan_mのNo planな日常
  • 第1回 IPv6ソケットプログラミング [C++] | Netsphere Laboratories

    (2006.8.5 ページを独立。) C/C++でのIPv6ソケットプログラミングについて。 ソケットについてはすでに掃いて捨てるほど解説サイトがあるが、IPv6に対応した、しかもポータブルな書き方を紹介しているところは見当たらなかった。 目次: サーバを作る クライアントを作る IPv6, IPv4を区別するサーバ @ サーバを作る まず、ソケットでIPv4あるいはIPv6クライアントからの接続を受け付けるプログラムを作ってみる。Fedora Core 5 Linuxで試した。 IPv4 onlyのときの典型的なコードは、次のようになる。※現代ではこのように書いてはいけません。 /** * TCP で listen する. IPv4 only. 実コードで使用不可! * * @param node bind() するホスト名. NULL の場合 INADDR_ANY. * @param

  • ネットワークプログラミング

    ネットワークプログラムの方法の初歩について説明します。 ネットワークプログラムの概要 ネットワークプログラムには、コネクション型とコネクションレス型がありますが、ここでは、コネクション型を利用します。 通信をする場合、データを提供する側のコンピュータをサーバといい、データを参照する側のコンピュータをクライアントと呼びます。 Hello サーバという、クライアントから接続されると "Hello world." を出力するサーバと、Hello サーバに接続し出力された文字列を表示するクライアントを作成してみます。 ネットワークプログラミングの関数の流れ socket 関数は、ネットワーク上でデータをやりとりする時に必要な領域の確保を行います。 socket 関数で取得した領域は、close 関数で開放できます。 サーバのbind, listen, accept 関数は、セットで、クライアントか

  • 小俣光之:コンピューターのページ(C言語講座)

    <body stylesrc="computer.htm"> <!--webbot bot="Include" tag="BODY" u-include="computer.htm" startspan --> <hr> <p align="center"><font size="6">小俣光之:コンピューターのページ(C言語講座)</font> </p> <hr> <h3 align="center"><font size="3">が出来ました。「C for UNIX」</font></h3> <p align="center"><img src="book-1.jpg" alt="book-1.jpg (46421 バイト)" width="500" height="358"></p> <p align="center"><img src="book-2.jpg" alt="book

  • コンピューター:C言語講座:mmapについて

    コンピューター:C言語講座:mmapについて 概要 mmapはファイルをメモリにマッピングするものです。わかりやすく言うと、UNIXのOSが行なっているページングやスワッピングを自プロセスで行なうようなものです。 これを使うメリットとしては、メモリ確保サイズが確保開始時に決定できない場合、簡単にはmalloc()で適当な量を確保し、足りなければrealloc()を使用して拡大することになりますが、realloc()を繰り返すとメモリ領域中に空きが出来やすく、大規模なシステムでは実際使用しているメモリより空き空間の方が数倍大きくなってしまい、メモリ不足で実行不可能になる場合があります。mmapを使用すれば、別々に拡大していくような管理が可能なので、また、スワップスペースとは別の位置に置くことにより、多数の動的メモリを必要とする場合に安全に動作することが可能になる場合があります。ただし、基

  • FrontPage - Linuxカーネルメモ

    Linux Kernel(2.6)の実装に関するメモ書き 書き殴っているので書き方/内容にムラあり。 3.6系に関する記述は【3.6】と記載。 カーネル プロセス プロセスのBlockとWakeup プロセスの優先度 コンテキストスイッチ プリエンプション スケジューラ RunQueue WaitQueue WorkQueue 例外処理 割り込み処理 ページフォルト ページフォルト - 個々のハンドラ ソフト割り込み システムコール 排他制御関連 モジュール 64bit環境での32bitプロセスの動作 メモリ管理 アドレス空間 アドレス空間の管理 カーネル空間のメモリマップ 64bitでのアドレス空間 HighMemory kmalloc,vmalloc 物理ページ管理 スラブアロケータ Rmap proc/meminfo 空きページの確保 kswapd Swap Swap - Swap領

  • 1