タグ

cに関するneumannのブックマーク (66)

  • 第22回・国際難解Cコードコンテストの入賞コードが公開される | スラド デベロッパー

    国際難解Cコードコンテスト(International Obfuscated C Code Contest、IOCCC)第22回で入賞したソースコードが同サイトで公開された。 IOCCCは、「故意に読みづらいC言語のコードを書き、その汚さなどを競うというハッカーの奇祭」(Wikipediaより)。 複数の部門があり、それぞれ入賞コードが挙げられているが、日人では遠藤侑介(Yusuke Endoh)氏が「Most tweetable 1-liner」wおよび「Most lazy SKIer」、「Most recyclable」、「Most solid」の4部門で入賞している。それぞれのコードは遠藤氏のブログで解説されている(「Most lazy SKIer」と「Most recyclable」のコードの解説、「Most tweetable 1-liner」と「Most solid」のコード

    neumann
    neumann 2014/01/07
  • C言語 バイナリファイルの読み込み - stdio.h - [ fread ] | 勇躍のゴミ箱

    C言語 目的別 画面への文字出力 画面へ1文字単位で出力 画面へ1行単位で出力 画面へ書式付きで出力 可変個引数を書式付き表示 キーボードから文字入力 入力を1文字単位で取得 入力を1行単位で取得 入力を書式付きで取得 ストリームに1文字戻す 文字列データの入出力 文字列から書式付きで取得 文字列へ書式付きで出力 可変個引数を書式付き出力 ファイルオープン ファイルを開く ファイルを閉じる ファイルオープンのモード 標準入出力について ファイルの読み込み テキストファイルの読込 空白区切りファイルの読込 CSVファイルの読込 バイナリファイルの読込 ファイルの書き込み テキストファイルの書込 CSVファイルの書込 バイナリファイルの書込 可変個引数をファイルへ書込 ファイル関連 ファイル位置の取得 ファイル位置の設定 ファイル位置の取得2 ファイル位置の設定2 ファイル位置を先頭に戻す フ

    neumann
    neumann 2013/07/13
    バイナリファイルのread
  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

    今年の文化祭で書いた記事です。 - C言語といえば、いやなイメージ、過去の遺産といった感じがあるかもしれません。 C言語のネガティブな側面というと、やはりポインタやメモリ管理などが難しい、ということが思いつくかもしれません。 しかし、C言語のポインタは表記に騙されやすいだけで、仕組み自体は全く難しくありません。 文法も、どこぞのPerlC++と比べたら屁でもない単純さです。 実のところ、仕様が煩雑で難しいのは、Cプリプロセッサなのであります。 普段からあまり複雑な使いかたをしないから気づかないかもしれませんが、Cプリプロセッサの置換処理は、欺瞞と裏切りに満ちた世界なのです。 これが進化するとテンプレートなどといったもっと面白いものになるのですが、今回はCプリプロセッサで計算をしちゃったりするところまで試しにやってみましょう。 (なお、GCCにより実験的に調べた記事なので、他のCコンパイラ

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
    neumann
    neumann 2009/11/09
    プリプロセッサ マクロ
  • 微分積分

    静岡理工科大学情報学部コンピュータシステム学科菅沼研究室のページです.主として,プログラミング言語( HTML,C/C++, Java, JavaScript, PHP, HTML,VB,C# ),及び,システムエンジニアとしての基礎知識(数学,オペレーションズ・リサーチやシステム工学関連の手法)を扱っています.

    neumann
    neumann 2009/02/28
    コンピュータの歴史書のような風情
  • 【ハウツー】Cアプリを高速化せよ! - 正式リリースされたgoogle-perftoolsを試す (1) google-perftoolsとは | エンタープライズ | マイコミジャーナル

    google-perftoolsはGoogleによって提供されている、C/C++アプリケーションのパフォーマンスを改善するための開発ツールキットである。2005年3月に初めて公開され、およそ4年を経て7日に正式版がリリースされた。The BSD Licenseの下で提供されており、LinuxをはじめとしてFreeBSD、Mac OS X、Solaris 10、Windows XPなど、各種プラットフォームでの動作が確認されている(ただし、Linux以外については一部機能を除く)。 google-perftoolsには次に挙げる4つのツールが含まれている。 高速メモリアロケータTCMalloc ヒープチェッカー ヒーププロファイラ CPUプロファイラ TCMalloc(Thread-Caching Malloc)は通常のmallocよりも高速なメモリ割り当てを実現するライブラリであり、テスト

    neumann
    neumann 2009/01/29
  • はやいTCPサーバを書く際に忘れがちなこと - kazuhoのメモ置き場

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ で id:nyaxt さんが書いてらっしゃるように、 epoll や kqueue を使う TCP_NODELAY, TCP_DEFER_ACCEPT *1 等を活用する TCP パケットを意識する I/O システムコールの回数を最小にする sendfile といったあたりは、確実にやるべきことだと思います。一方で、TCP 関連以外のオーバーヘッドが実は結構あって、 接続のタイムアウト処理 ログの出力 メモリの確保や解放をやらない あたりにも気を配る必要がある、と思います。 接続のタイムアウト処理については、以前 Kazuho@Cybozu Labs: 高速なCometサーバを書いてみた件 に書いたように、ビットアレイのリングバッファを使うのがベストだと思います。 ログの出力について、複数行を1回のシステムコールにまとめてもいいかど

    はやいTCPサーバを書く際に忘れがちなこと - kazuhoのメモ置き場
  • はやいTCPサーバの書き方 - nyaxtのPC作業ログ

    cagra高速化にあたってのノウハウを一部公開してみます。また明日校正/更新します。つっこみ待ちです。 select(2)の代わりにepoll_wait(2), kqueue, /dev/epoll等を使う 他に山ほど解説ページがあるので略 大量のディスクリプタを処理するようなサーバの場合、多少効果があるかもしれません。しかし、クライアント数が少ない場合、劇的な性能の向上は見込めないとおもいます。クライアント数が多い場合は、1セッション1スレッドなモデルではOS側のタスクスイッチングのオーバーヘッドが効いてくることも多いです。クライアント数を増やすには複数のセッションを1スレッドで処理できるようにすると良いです。実装にあたっては、non-blocking ioを活用すると効果的です。 TCP_NODELAYを設定する Nagleアルゴリズムをオフにします。多少応答性が良くなります。 これっ

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ
  • バイナリシリアライズ形式「MessagePack」 - Blog by Sadayuki Furuhashi

    Googleが公開したバイナリエンコード手法であるProtocol Buffersは、クライアントとサーバーの両方でシリアライズ形式を取り決めておき(IDL)、双方がそれに従ってデータをやりとりするようにします。 この方法では高速なデータのやりとりができる反面、IDLを書かなければならない、仕様を変えるたびにIDLを書き直さなければならない(あらかじめしっかりとIDLを設計しておかないとプログラミングを始められない)という面倒さがあります。 ※追記:Protocol BuffersのデシリアライザはIDLに記述されていないデータが来ても無視するので(Updating A Message Type - Protocol Buffers Language Guide)、仕様を拡張していっても問題ないようです。 一方JSONやYAMLなどのシリアライズ形式では、何も考えずにシリアライズしたデータ

    バイナリシリアライズ形式「MessagePack」 - Blog by Sadayuki Furuhashi
    neumann
    neumann 2008/12/28
  • よりそいプログラミングのすすめ

    ちょっと前の話なんですけれど,あたしが知ってる生身の人の中で,もっとも優秀なプログラマさんのコーディングを見せてもらうことがありました。知らないライブラリの使い方をたずねたのがきっかけなんですけれど,「ちょっと作ってみるから見てて」ってな話になったのでした。これがすごかった。 「よりそいプログラミング」というのは,ここで作った言葉で,単純に片方が寄り添う形で行うプログラミング方法です。片方がひたすらプログラミングして,それを傍から見るというモノ。ここで,似たような言葉のペアプログラミングは,もちろん製造工程の話だけれど,「よりそいプログラミング」は開発工程とは異なる,教育目的のプログラミングです。だから,生産性云々とかは,とりあえずさておいてください。 さて,そのプログラマさんのプログラミングを見ていたところ,とにかくペースがものすごい。傍から見ていると,言葉を出すのと同じ感覚で,考えたこ

    neumann
    neumann 2008/12/24
    中身が固まってたら、まずコメントで疑似コード書くよね? 個人的には変数名を決めるのが作業のボトルネックかな。
  • Re: [RFC] Convert builin-mailinfo.c to use The Better String Library. [LWN.net]

    On Wed, 5 Sep 2007, Dmitry Kakurin wrote: > > When I first looked at Git source code two things struck me as odd: > 1. Pure C as opposed to C++. No idea why. Please don't talk about portability, > it's BS. *YOU* are full of bullshit. C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate tot

    neumann
    neumann 2008/12/18
    the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C.
  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

    OMakeすごい。OMakeはマジですごい。 OMakeはGNU makeの代替品みたいなものなんだけど、正直なところこのツールの強力さはGNU makeと比べると失礼なくらいすごい。これのおかげで、「コード修正→ビルド→デバッグ→コード修正→・・・」のループの、ビルドにあたる作業がほぼ消え去った。 ファイルの依存関係の解析がとにかくすごい。よくあるユースケースなんかの場合、最小限の手間でほぼ完璧に依存関係を網羅して、よしなにビルドしてくれる。 とりあえず、はやみずが実際に使ってみたケースを例にとってそのすごさの一端を紹介しようと思う。 case study 論より証拠ということで、自分が OMake を試しにつかってみたケースを紹介する。C言語でスタティックライブラリを作っていて、それに加えて簡単なテストプログラムを書いている。 /include/ 以下にヘッダファイルが全部ある /sr

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
    neumann
    neumann 2008/12/04
    よしなにビルド
  • 無料サービスを使え! – 役立つ無料サービスのレビュー、まとめ、比較記事を紹介

    コンテンツへスキップ 無料で使える!HubSpotの顧客リストの活用法 無料のアンケート作成ツール 比較/まとめ 無料「Excel」 テンプレート 比較/まとめ 無料で使えるノートアプリ比較 (Evernote / OneNote / Google Keep) おすすめの無料Web会議システム5選 WebP Converter 徹底解説!初心者でも直ぐに使える HubSpot は、マーケティング、セールス、サービスのためのCRM(Continue reading 多くの人の声を聞くことで改善できることも多い 企業や団体など運営していContinue reading 就職・転職には必須となる履歴書・職務経歴書 これから就職活動をスタートContinue reading 便利なノートアプリで効率的な仕事をしよう いつの時代も仕事をしていてメContinue reading 近年、リモートワーク

  • autoreconfを使って簡単にビルド環境を作る - にたまごほうれん草アーカイブ

    前回も軽く触れたけれども、automake/autoconfでビルド環境を作るのは少し面倒な印象があった。 ところが、autoreconfを使うと途中の面倒な作業を大幅に軽減できることがわかったので、メモがてら一連の流れについて書くことにする。 手順 ソースコードを用意する Makefile.amを用意する configure.acを用意する autoreconfを実行 あとは./configure && make && make install 1. ソースコードを用意する 今回は、以下のような簡単なソースコード(hello.c)からhelloという実行バイナリを作成するプロジェクトを作成する。 #include <stdio.h> int main(int argc, char* argv[]) { printf("Hello, world!\n"); return 0; } 2. M

    autoreconfを使って簡単にビルド環境を作る - にたまごほうれん草アーカイブ
    neumann
    neumann 2008/11/11
    今はこんなことになってたんですね!! autoreconf -vfi
  • C言語〜ゲームプログラミングの館〜

    ※ 更新履歴 ※ 2017/11/03 ・sp.8章追加 2017/10/11 ・配布しているプロジェクトをVisualStudio2017に更新(それにまつわる説明も更新) 2015/09/12 ・s.3章 Androidのようなボタンの作り方(C++) 追加 2013/09/02 ・VisualC++2012のプロジェクトを追加 2013/02/23 ・d3.5章追加 2013/02/20 ・d3.1章追加 ・d3.2章追加 ・d3.3章追加 ・d3.4章追加 2013/01/19 ・sp3章追加 ・sp4章追加 ・sp5章追加 ・sp6章追加 ・sp7章追加 2012/06/23 ・3.14章追加 2012/06/16 ・sp1節追加 ・sp2節追加 2012/02/11 ・d6節追加 2011/11/10 ・h11章追加 2011/10/31 ・s1章追加 ・s2章追加 2011/

  • C言語: 実行時間測定の方法

    C言語において実行時間を測定する為の方法はいくつかある。gettimeofday, clock, getrusage, timesを利用する方法である。ここではこれらの方法について検証してみる。これは2005/12/30時点での情報であり、古い亊が考えられるので注意して頂きたい。さらに、内容のほとんどはmanを移しただけなので、正確な情報を得るためにそれぞれの関数のmanを見ることを強く推奨する。 System: Linux 2.6.12 glibc: glibc 2.3.5-1ubuntu12 gettimeofdayを使用する方法 通常はこの関数を使用するのをお勧めする。 gettimeofdayはSVr4, BSD 4.3準拠である。返り値の型はsys/time.hに定義されるstruct timevalで有る。

    neumann
    neumann 2008/10/27
    時間 計測
  • Supplement for patch (compile error)

    症  状(コンパイルエラー) 最近のCコンパイラ(gcc)でコンパイルする場合, glib のバージョンによっては, src/pad2ps/pad2ps.c のコンパイル時に, error: initializer element is not constant といった,エラーが生じます。 原  因 出力ファイルのポインタ変数 fp の初期化, FILE *fp = stdout; の部分が該当します。 標準出力 stdout が構造体のためです。 エラーを回避するために,この初期化をしないでコンパイルすると, pad2ps 関係のコマンド実行時に出力ファイル名を指定しないと, Segmentation fault (core dumped) となる不具合が生じます。 対処パッチ ( src/pad2ps/pad2ps.c ) #if defined(__linux__)

  • C言語

    C言語をやってみよう,ふと思い立った.かなり久しぶりだ.大学当時Cは講義であった.学生時代怠けまくった結果(?)私はCよりも,趣味でやっていたJavaの方が書いたコードの行数は多い.だが,やはり「たしなみ」としてC言語はやっておかねばなるまい. 基(?)ライブラリ編 プロセス制御 シグナル パイプ IPC Pthread Socket 端末制御 curses CUnit OpenSSLを使用したCプログラミング その他 基(?)ライブラリ編とりあえず,ライブラリにある関数をいろいろ試してみる.もちろん(?)Debian環境で. ファイル操作 2003-07-20T15:13+09:00 matsu GNU/Linuxシステムでのファイル操作について.ここでは特にシステムコールを用いてファイル操作する方法について. 標準入出力ライブラリでのファイル操作 2003-07-20T15:13+

    neumann
    neumann 2008/09/20
  • 3.C/C言語

    計算機アーキテクチャとC/C++ 変数や関数名の有効範囲 派生型 関数 クラス 承継・基クラス・派生クラス ライブラリ 総目次に戻る 計算機アーキテクチャとC/C++ Keywords:要素,farポインタ,C,C++,アーキテクチャ Cは「高級アセンブラ」とも言われるように,計算機の一般的な構成を知っていると学習に有利です.アセンブラ・プログラマから見た計算機の構成を「アーキテクチャ(architecture)」と呼びます. 計算機にはCPU(Central Processing Unit;中央処理装置)があって,メモリ(main storage)上の機械語プログラムを逐次読み込み,解釈し,実行します.パソコンなどのCPUには8程度の16/32ビットの汎用レジスタ(general-purpose registers)があり,その内容は単なるビット・パターンとして使われることもあれば,

    neumann
    neumann 2008/08/11
  • SC: The SC Language System

    Japanese / English SC言語は,Common Lispで実装された,S式の(Scheme風の)構文を持つC言語です.たとえば,以下のようなCコード long sum(long *ar, int n){ long s=0; int i=0; do{ if (i >= n) break; s += ar[i++]; } while(1); return s; } を,SCでは, (def (sum ar n) (fn long (ptr long) int) (def s long 0) (def i int 0) (do-while 1 (if (>= i n) (break)) (+= s (aref ar (inc i))) ) (return s) ) と書くことができます. また,拡張SC言語から別のSC言語への「変形規則」

    neumann
    neumann 2008/06/14
  • C-users.jp - 日本のC/C++ユーザのためのハブサイト

    neumann
    neumann 2008/06/13