タグ

cに関するsudoemacsのブックマーク (30)

  • Cより高速なCommon Lispコードを書く - 八発白中

    Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。 “If you can't outperform C in CL, you're too good at C.” — Eric Naggum 最近、Common Lispの非同期Webサーバ「Wookie」を高速化する過程で、ボトルネックになっていたHTTPリクエストのパース部分を高速に処理するライブラリを書きました。 fast-http - A fast HTTP request/response parser for Common Lisp 既存のライブラリ「http-parse」よりも約10倍速く、Cのライブラリ「http-parser」より5%ほど高速です。 追記 (2014/10/26): 最適化をやり直し、現在は「http-parse」よりも約27倍速く、Cの「h

    Cより高速なCommon Lispコードを書く - 八発白中
  • 32bit/64bit 両対応な printf の書き方 - pyopyopyo - Linuxとかプログラミングの覚え書き -

    32bit/64bit両対応のコードを書いていると,よく printf() で引っかかります."%d"のような"書式"がややこしいからです. というわけで,変数の"型"と"書式"の対応を,表で整理してみました. 型 書式 注意事項 ssize_t %zd size_t %zu intmax_t %jd uintmax_t %ju ptrdiff_t %t signed char %hhd unsigned char %hhu short int %hd unsigned short int %hu int %d unsigned int %u long int %ld unsigned long int %lu long long int %lld unsigned long long int %llu int32_t %PRId32 以下,#include が必要(下記参照) uint3

    32bit/64bit 両対応な printf の書き方 - pyopyopyo - Linuxとかプログラミングの覚え書き -
  • Linux共有ライブラリの簡単なまとめ - wagavulinの日記

    Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • いやなブログ: Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか

    Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで

  • Google Code Archive - Long-term storage for Google Code Project Hosting.

    Code Archive Skip to content Google About Google Privacy Terms

    sudoemacs
    sudoemacs 2010/12/09
  • Re:超テキトー図解ポインタ - K.Maebashi's はてなブログ

    id:mktx さんの「超テキトー図解ポインタ」、絵はかわいいですし面白い試みだと思うのですが、内容にちょっと問題があるように見えますので指摘しておきます。 冒頭で、ポインタをWindowsのショートカットや標識にたとえています。これについてブコメで批判もありますが、たとえ話は所詮たとえ話ですし、主観や感性の問題ですのでそこはよいかと思います。ショートカットでたとえるのはなかなかうまいと思いますし。 問題は、その後の「★気をつけること」です。 1.変数名に「*」をつけたものがポインタではない! たとえば「int a;」としてint型の変数aを宣言し、これに*を付けて「*a」と書いてもポインタにはなりません。コンパイルエラーです。*ではなく&を付けて、「&a」と書けば、変数aへのポインタになります。 これは当たり前なので、おそらくここで言いたいことは、 int a; という宣言に対し、 in

    Re:超テキトー図解ポインタ - K.Maebashi's はてなブログ
    sudoemacs
    sudoemacs 2010/11/10
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • C言語・C++言語用テスティングフレームワーク - Cutter

    最新リリース 2019-09-13にリリースされた1.2.7が最新です。 [ダウンロード] [変更点] Cutterとは Cutterは書きやすさ・デバッグのしやすさを重視したC言語・C++言語用のテスティングフレームワークです。メンテナンスしやすく、利用効果の高い単体テスト(ユニットテスト)の開発を支援します。 また、テストを苦痛ではなく、楽しいものにすることも重視しています。スクリーンショットはテスト結果の通知機能を利用している様子です。文字としてテストのパス・失敗を伝えるだけではなく、視覚的にも通知することで、テスト結果をわかりやすくします。わかりやすいので、頻繁にテストを実行したくなります。この機能はnotify-sendコマンド(Linuxや*BSDなどの場合)またはgrowlnotifyコマンド(macOSの場合)を利用します。 動作環境 CutterはDebian GNU/L

  • #include の魔力 - Cube Lilac

    何気なく呟いた言葉が確変状態になっていました。 それで、反応を眺めていると「何をやってるか分からない」と言うものがいくつかあったので、一応簡単な補足説明を載せておきます。 #include は指定したファイルの内容をその位置に追加します。 1, 2, 3, 4, 5, 6, 7, 8, 9,例えば、上記の内容を hoge.csv と言う名前で保存して、 int hoge[] = { #include "hoge.csv" }; と記述すると、(プリプロセスが終了すると)以下のように記述した事と同じになります*1。 int hoge[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, }; このように、#include を利用することによって、内容が変化しない*2データ配列などの定義を自力で打ち込んだりコピペしたりせずに済むようになります(なることがあります)。s/int/co

    #include の魔力 - Cube Lilac
    sudoemacs
    sudoemacs 2010/09/05
  • モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人

    まだC, C++がないようなので書いてみた。主にLinux(DebianとかUbuntu)での環境構築について。 コンパイラ まずはapt-getでコンパイラをインストールする。UbuntuやDebianなら以下のコマンドでgccやg++および標準ライブラリ等がインストールされる。 $ sudo apt-get install build-essential デバッグツール デバッガおよびデバッグツールは少なくとも以下の三つは入れる。(あとltraceも欲しいかな?) GDB 言わずと知れたGNUのデバッガ Valgrind メモリリークや不正メモリアクセスの検出 strace システムコールのトレース $ sudo apt-get install gdb valgrind strace ビルドツール C, C++のビルドツールといえばまずmakeが浮かぶけど、最近ではSConsやCMak

    モダンなC, C++の開発環境の構築方法 - 考える人、コードを書く人
  • ファイルディスクリプタについて(1) ~ファイルディスクリプタの概要

    ファイルディスクリプタは、プログラムの外部との入出力を行う抽象的なインタフェースです。Unix/Linuxのファイルディスクリプタは、一般的なファイルだけでなくデバイスやソケットやパイプも対象としています。当連載は、ファイルディスクリプタの機能や管理方法などを提示します。第1回では、ファイルディスクリプタの概要を紹介します。 はじめに ファイルディスクリプタ(Windowsではファイルハンドル)は、プロセスや実行ファイルにとって外部の資源にアクセスしたりアクセスされたりする際に使用される抽象的なインターフェースです。 今日のプログラムは必ずと言っていいほど外部とのインターフェースを持っていますが、新しいディスクリプタや効率的な使い方がそれほど明確ではなかったりします。 当連載では、ファイルディスクリプタに関する調査・試行錯誤した結果、新しいディスクリプタを使用した感想や効率的な管理方法など

    ファイルディスクリプタについて(1) ~ファイルディスクリプタの概要
  • fgets()結果の改行要らないんだけど - syuu1228's blog

    Cの文字列処理がよく分からん。 fgets()してみたら改行が最後に入っててうざかったから char buf[20], *p; fgets(buf, 20, stdin); for (p = buf; *p != '\0'; p++) ; p--; *p = '\0'; とかやって消したんだけど、バカっぽい。 普通どうするの?fscanf()? 追記 id:yshigeruさんの指摘はこういう感じかな。 char buf[20], *p; fgets(buf, 20, stdin); p = buf + strlen(buf) - 1; *p = '\0'; まぁこれなら見なかったことに出来なくはないかなぁ…。 追記2 id:kazuhookuさんとsodaさんからツッコミを頂いたので、ちゃんとエラーチェックなどやってみる。 char buf[20], *p; if (fgets(buf,

    fgets()結果の改行要らないんだけど - syuu1228's blog
    sudoemacs
    sudoemacs 2010/01/16
  • 絵で見てわかるC言語入門 - 第1章 - J

    そういえば勉強会の時に、「関数ポインタを返す関数はどうやって書くか?」みたいになったが、僕はそういう時は$ man signal して調べる派である。 http://www.linux.or.jp/JM/html/LDP_man-pages/man2/signal.2.html さて、C言語を使い慣れた人には常識ですが、C言語初心者にとって少し難しいのが、変数の宣言です。 例えば、初心者にとって、関数ポインタの配列へのポインタを返す関数の宣言を書くのはあまり簡単ではありません。 C言語の初心者には、以下のようなコードを書くのは少し難しく、また、C言語にあまり慣れていない人は、typedefなどを使ってしまいがちです。 typedef int (*func_t)(int); typedef func_t func_arr_t[10]; extern func_arr_t *x[40]; in

    絵で見てわかるC言語入門 - 第1章 - J
  • ギャップ・バッファ

    説明 ギャップ・バッファは,テキスト・エディタなどで用いられる,シーケンスを扱うデータ構造です. ここで公開するプログラムはK. Inaba氏の制作されたエディタ,GreenPadにおいて使われているギャップ・バッファをC++言語に含まれるSTLのvectorを使うように改造したものです. また,それをC言語のみで書き直したものも公開しています. 両方ともNYSL(ライセンス)とします. ダウンロード C++言語版: (2003年3月26日) gapbuffer.h C言語版: (2008年9月19日)- 仮の実装なのでバグがあるかもしれません. gbuf.h gbuf.c 解説 ギャップ・バッファはテキスト・エディタのテキスト・バッファなど,長く連なるデータを保持する際に用いられるシーケンス・コンテナです. 局所的な要素の挿入,削除を頻繁にする場合に適したデータ構造です. 双方向リスト(

  • テキストエディタ実装技術

    バグつぶしばかりやっていると飽きてくるので、目先を変えるために技術的な文書を作成し、ここで公開することにする(01/06/04)。 意見・質問・間違いのご指摘は 津田 までメールまたはツイートしてください。 新着順 「関数電卓」アプリにおける陽関数グラフ描画 (2016/10/09) mate法を用いた Numberlink 問題自動生成 (Jly-2016) Unity C# Script プログラミング 入門(Nov-2015) C/C++ プログラミング 入門(Nov-2014) JavaScript 入門(Nov-2014) C/C++ static 修飾子 入門(Oct-2014) マップクラス std::map 入門(Oct-2014) 双方向リストクラス std::list 入門(Oct-2014) cocos2d-x 3.1 KeyboardTest(Jun-2014) c

  • 碧落 - C 言語でオブジェクト指向プログラミングを行う

    はじめに この記事では C 言語でオブジェクト指向プログラミングを行う方法を、 アドレス帳ソフトの作成を例にしながら紹介します。 とは言っても、 現在「オブジェクト指向プログラミング」という言葉で表されることを完全に実現するわけではありません。 Bjarne 氏が言うところの 「データ抽象化のスーパーセットであるオブジェクト指向プログラミング」 を現実的な手間で実現します。 これによって次に挙げる点の向上を狙います。 安全性 可読性 他言語との相互運用性 オブジェクト指向とは オブジェクト指向という言葉が魔法の呪文のように唱えられた時代は終わったように思いますが、 オブジェクト指向という言葉は何を表すのでしょうか。 隠蔽、継承、多相性という 「オブジェクト指向の三原則」 を満たさなければオブジェクト指向言語ではないとしてプログラミング言語が批判されたこともありました。 しかし「オブジェクト

    sudoemacs
    sudoemacs 2009/10/26
  • IPA セキュア・プログラミング講座:C / C++言語編

    IPA 独立行政法人 情報処理推進機構 セキュリティセンターによるセキュア・プログラミング講座:C / C++言語編

  • Linux カーネル コーディング規約

    Linux カーネル コーディング規約 [プレインテキスト版] 原著作者: Linus Torvalds <torvalds at osdl dot org> 翻訳者: Ken Iwamoto <iwamoto dot kn at ncos dot nec dot co dot jp> Toshikazu Nakayama <nakayama dot ts at ncos dot nec dot co dot jp> Nobuo Yoshida <yoshida dot nb at ncos dot nec dot co dot jp> バージョン: 2.6.24 翻訳日時: 2008/03/26 ================================== これは、 linux-2.6.24/Documentation/CodingStyle の和訳 です。 翻訳団体: JF

  • JF: Linux Kernel 2.6 Documentation: HOWTO

    Linux カーネル開発のやり方 [プレインテキスト版] 原著作者: Greg Kroah-Hartman 翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com> バージョン: 2.6.27 翻訳日時: 2008/08/05 ================================== これは、 linux-2.6.27/Documentation/HOWTO の和訳です。 翻訳団体: JF プロジェクト < http://www.linux.or.jp/JF/ > 翻訳日: 2008/8/5 翻訳者: Tsugikazu Shibata <tshibata at ab dot jp dot nec dot com> 校正者: 松倉さん <nbh--mats at nifty dot com> 小林 雅典さん

    sudoemacs
    sudoemacs 2009/10/23