タグ

Cに関するsiroccoのブックマーク (41)

  • 増井雄一郎(@masuidrive)さんの「数十時間悩んだあげく1行で直るコード」問題解説記事 #c #mruby|CodeIQ MAGAZINE

    増井雄一郎(@masuidrive)さんの「数十時間悩んだあげく1行で直るコード」問題解説記事 #c #mruby 2013.12.12 Category:CodeIQ問題解説・リーダーボード Tag:C ,masuidrive ,mruby ,Ruby 増井雄一郎さんから初の問題!「数十時間悩んだあげく1行で直るコード」の解説記事です。 この問題は、実際に増井雄一郎さんとまつもとゆきひろさんのお二人が数十時間悩んだ結果解決した経験が元になっています。 あなたはこの問題解けましたか? by CodeIQ運営事務局 増井雄一郎です。 初のCodeIQへの出題でかなり緊張しましたが、想定より多くの方に答えていただき、驚きと喜びで一杯です。 出題後、問題文に”1行”と書いたことで混乱させてしまったかもしれないと不安になりましたが、解答を見ているとあまり問題ではなかったようで安心しました。 問題文

    増井雄一郎(@masuidrive)さんの「数十時間悩んだあげく1行で直るコード」問題解説記事 #c #mruby|CodeIQ MAGAZINE
    sirocco
    sirocco 2013/12/13
    C言語怖い・・・Orz
  • アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ

    子供のころからできるだけ手抜きして成果を挙げることだけは長けている山です。 今回は、C/C++ で作ったプログラムが運用中にクラッシュするときのデバッグ方法のお話しです。 開発中のデバッグは gdb などでソース追いながらデバッグできますが、運用中ですと strip していたり最適化していたりしてデバッグが難しくなります。 そもそも、いきなりクラッシュすると情報が残らずに困ってしまいます。そんなときどうするか。 Step1. スタックトレースを出力する こんな関数を用意しましょう。Linux 以外の人はそれなりに実装してください。 #include <execinfo.h> #include <unistd.h> void dump_stack() { void* bt[100]; int n = backtrace(bt, 100); backtrace_symbols_fd(bt,

    アセンブリ読んだら負けかなと思ってる - 誰かの役に立てばいいブログ
    sirocco
    sirocco 2013/07/05
    "ここまで読んでくれる人は何人いるでしょうか。多分大半の人が脱落していると思いますが、一番書きたかったのはここだったりします" w
  • C言語テトリスのソースコードを読む - itouhiroはてなブログ

    C言語テトリスの記事 http://itouhiro.hatenablog.com/entry/20121112/tetris のソースコードを詳しく読んでみよう。 まず、 int board[12][25]; これがグローバル変数で、ウィンドウ内の画面を管理している。 ゲーム画面を見る限り、横10 x 縦20 の箱でできている。 しかしデータ上は 横12 x 縦25 で管理しているのだ。(C言語は1からではなく0から数えはじめる google:0オリジン ので、1~12ではなく0~11になる) 「Y軸を上に行くと+」という数学的座標系でこのソースは書かれている。 次はブロック定義の部分。 typedef struct _TAG_BLOCK { int rotate; POSITION p[3]; } BLOCK; BLOCK block[8] = { {1, { {0, 0}, { 0,

    sirocco
    sirocco 2013/01/20
    ニコニコ動画「テトリスを1時間強で作ってみた【実況解説】」のソースコード解説。丁寧にすみずみまで図解されている。
  • あなたもできる!C言語でテトリスを40分で作る方法 · DQNEO日記

    デモ ニコニコ動画の伝説の動画 「テトリスを1時間強で作ってみた【実況解説】」という動画をご存知でしょうか? 2009年にニコニコ動画で公開されて話題になった動画です。 インタビュー記事:「テトリスを1時間強で作ってみた」動画の投稿者にインタビュー──「プログラミングの楽しさ伝えたい」 この動画ではテトリスをいちから作ってわずか62分で完成させています。 しかし実はスタート直後はMinGWのインストール、EmEditorのインストールに続いてブロック画像の作成などをしており、プログラミングが始まるのは開始13分のところからです。 さらに次の10分は「空のウィンドウ」を作るために時間を使っており、実質的にテトリスのプログラミングが始まるのは動画23分のところからです。 つまり、実質的に40分のプログラミングでテトリスを完成させています。 で、動画を見ながら同じようにやれば誰でもテトリスを作れ

    あなたもできる!C言語でテトリスを40分で作る方法 · DQNEO日記
    sirocco
    sirocco 2012/11/11
    MinGWがインストールされているので動かしてみた。 unzip CppTetris-master.zip; cd CppTetris-master; ./make.bat ; ./a.exe
  • postscript

    ページ記述言語 - ポストスクリプトマニュアル - ポストスクリプトマニュアル >ダウンロード (ポストスクリプトマニュアル(冊子)は水島研にて300円で販売しています.) 目次  1.はじめに 2.ポストスクリプトの概要と命令 3.ポストスクリプトの使い方の基例 4.ポストスクリプトの応用例 5.オペレータのまとめ 6.Fortranからの利用 7.Cからの利用 8.作図プログラム 9.TeXにポストスクリプトファイルを貼りこむには A. Fortran ライブラリー (psbasic.for) B. C ライブラリー (psbasic.cpp) C. 作図プログラム1 Fortran77 プログラム 基命令プログラム psbasic.for サンプルプログラム ダウンロード samp1.for  samp2.for  samp2s.for  samp3.f

    sirocco
    sirocco 2012/10/03
    Cの関数を逆ポーランド記法に書き換えている。辞書や配列は呼ぶ言語のものを使えばよいが length や stringwidth のように値をスタックに積んで返す手続きは対応していない。
  • 呼出規約 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "呼出規約" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2020年12月) 呼出規約(よびだしきやく)ないし呼出慣例(よびだしかんれい)(英: calling convention)は、コンピュータの命令セットアーキテクチャごとに取り決められるABIの一部で、サブルーチンが呼出される際に従わねばならない制限などの標準である。名前修飾について、データを渡す「実引数」、戻るべきアドレスである「リターンアドレス」、データを戻す「返戻値」などを、スタックなどに対してどのように格納するのか、また各レジスタを、呼び出し側とサブルーチンのどちらの側が

  • Cでのポインタの読み方

    Cでのポインタの読み方 Cのポインタの読み方は、ルールを知らないと摩訶不思議です。 ルールを覚えれば、 int (*p[5])[3]; char (*(*fp)(void))(int); なんてのも解読する事ができます。 大事な前程 ポインタを読む際には、「英語で読む」必要があります。 「え~、英語~」 と思う方もいるかもしれませんが、逆に日語で読む方が大変です。 基ルール ルール 後置演算子が優先。 関数の() 配列の[] 前置はあとで。 要は、「後ろに何かあったら、後ろが優先」です。 演算子の英語での読み方 * pointer to ... () function returning ... [] array of ... Lesson 1 まず、演算子が単独で出てくる場合です。 Lesson 1-1 pointer to ... int *p; これは、まずpを見ましょう。 i

    sirocco
    sirocco 2012/01/17
    たぶん使わないけどブクマ。
  • POINTER「配列とポインタの完全制覇」「C言語 ポインタ完全制覇」

    タイトルは「C言語 ポインタ完全制覇」。 このページの書籍化とはいえ、内容の大半は書き下ろしですので、 既にWebで読んでおられる方にも決して損はさせません。 詳細はこちらへどうぞ。 「C言語 ポインタ完全制覇(第2版)」書籍情報 「C言語 ポインタ完全制覇」書籍情報(旧版) 技術評論社さんによる書籍案内はこちら。 第2版 旧版 修正履歴は、このページの末尾にあります このページについて 全くもって僭越ながら、恐れおおくも偉そうにも、 こんな文書をWWWで公開させていただくことにしました。 この文書は、もともと社内向けの教科書として作成したものです。 私は、一介の文系出身プログラマであり、 特に情報関係の教育を受けたわけでもなく、 プログラミング言語に深い造詣を持っているわけではありません。 この文書にも多くの誤りや、誤解を招く表現があるかと思います。 そのような記述を見付けられた方は、ぜ

    sirocco
    sirocco 2011/01/02
    "ポインタが難しいのではない。C言語の、配列とポインタにかかわる文法が混乱しているだけだ。(略)結局、自分でCのサブセットのコンパイラを書いてみて、始めて理解したことがいくつもあります。"
  • C言語講座:現在の年月日と時刻

    [コンピュータの時計]←このソース→[現在時刻と年月日と曜日を表示] /* 今日は、typedef 文と、時間に関する関数について学びます。ヘッダーファイル time.h を開くと、下記の記述があります。 typedef long time_t; 重要:コンパイラによっては、下記のように記述されています。 typedef unsigned long time_t; time_t 型のデータがうまく表示されなかったら、time.h を見て下さい。型に合った書式指定子に変えれば、問題は解決します。 typedef は、新しい名前のデータ型を定義します。標準ライブラリ関数 time( ) は、time_t 型をこのように使っています。 #include <time.h> time_t time(time_t *timer); この関数を呼び出すには、time.h を、インクルードして、timer

    sirocco
    sirocco 2010/12/31
  • サービス終了のお知らせ

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

    sirocco
    sirocco 2010/12/31
  • Gauche:拡張ライブラリ入門

    Gauche:拡張ライブラリ入門 Gauche:拡張ライブラリ入門参考spigot学習(Cによる拡張)最終成果物Gauche:MeCab学習mqueue学習(C++によるglue)実習仕切り直しgd.hをgauche-gd.hに変更元祖gd.hをincludeしてみるconfigure.acとMakefile.in一応おっけ?graphic.gdへ変更Subversionへgd.hまずgdlib.stubへ、長いCのコードが出てきたらgd.cへclassを追加少し手直しいくつかの疑問初日終了&ダウンロードCreate/Destroyつまりインスタンスの生成と消滅cprocの引数は?ScmForeignPointerを使用ツッコミとかvoid* 型 参考 Gauche:MeCab spigot学習(Cによる拡張) ざっと眺める。ソースツリーのGauche/examples/spigotを参照

    Gauche:拡張ライブラリ入門
  • ホワット・ア・ワンダフル・ワールド gauche の入出力 port を C から使う

    以下メモ. やりたいこと.C 文字列 (ヌル終端) を Scheme コード片として評価し,結果を C 文字列の形で受け取る. C 文字列 (とりあえず,コマンドライン引数として与えている) を評価して,結果を標準出力に書き出すまではできた. $ gauche-config -I -I'/usr/lib/gauche/0.8.7/include' $ gauche-config -L -L'/usr/lib/gauche/0.8.7/i486-pc-linux-gnu' $ gauche-config -l -lgauche -ldl -lcrypt -lutil -lm -lpthread $ tcc -I/usr/lib/gauche/0.8.7/include /dev/stdin -L/usr/lib/gauche/0.8.7/i486-pc-linux-gnu -lgauche

  • C言語からS式をGaucheに投げてを評価させる(Eval_CString) - Kawarabayashi Tomomi Laboratorium

  • ロベールのC++教室 - 第4章 参照先は何もなし? -

    sirocco
    sirocco 2010/05/31
  • ファイルディスクリプタについて(5) ~多重I/O「Multiplex I/O」の種類の特徴、使い方

    はじめに 前回は、プログラムの内外部から発行されたシグナルイベントを補足し、通知するためのシグナル用ディスクリプタ「signalfd」について解説しました。今回は、複数のファイルディスクリプタを一元管理する「多重I/O」機能について解説してきます。 連載概要 第1回:ディスクリプタの概要 第2回:イベント用ディスクリプタ「eventfd」の特徴 第3回:タイマー用ディスクリプタ「timerfd」の特徴 第4回:シグナル用ディスクリプタ「signalfd」の特徴 第5回:多重I/O「Multiplex I/O」の種類の特徴、使い方 第6回:多重I/Oの性能とC10K問題 第7回:シグナル駆動I/Oの特徴、使い方 第8回:非同期I/O「Asynchronous I/O」の使い方と性能差 第9回:ファイルディスクリプタパッシングの特徴、使い方 サンプルプログラムは100行前後程度までは画面に記載

    ファイルディスクリプタについて(5) ~多重I/O「Multiplex I/O」の種類の特徴、使い方
  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

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

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
    sirocco
    sirocco 2009/11/08
  • S 式ベースC言語における変形規則による言語拡張機構 | CiNii Research

    sirocco
    sirocco 2009/09/03
  • 第3回 Cの「ポインタ」を調査せよ!

    Cには「ポインタ(pointer)」という便利で厄介な機能がある。Cの学習者が最初に突き当たる壁だとよく言われる。百戦錬磨のベテランでさえ,ポインタがらみのバグは少なからず経験しているだろう。今回はCのポインタについて調べてみた。 アドレスを保持して何になる? ポインタは“point + er”→「ポイントするもの」→「指し示すもの」という意味で,メモリー上のデータを間接的に指し示すことが大きな役割だ…ってことは,ご存じだろう。 どのような変数も,使用する前に初期化しなければならない。ポインタ変数*1ももちろん変数のアドレスで初期化する必要がある。例えば,int型の変数をポインタを介して扱うなら,以下のようになる。 int *p;       ―― int型のポインタ変数pを宣言 int num;         ―― int型の変数numを宣言 num = 123;        ――

    第3回 Cの「ポインタ」を調査せよ!
    sirocco
    sirocco 2009/07/23
  • 石田晴久氏が死去 UNIX、インターネットの国内普及に尽力

    国内のUNIX普及などに尽力した石田晴久氏(東京大学名誉教授、サイバー大学IT総合学部長)が3月9日、心筋梗塞のため都内の病院で死去した。72歳だった。 東大大型計算機センター在職時の1970年代に日に初めてUNIXを紹介し、83年には日UNIXユーザー会(JUS)を村井純氏らと設立。UNIXやC言語の基書の邦訳者としても親しまれた。1984年、国内インターネットの基礎となった「JUNET」(Japan University Network)のスタートにも東大への接続で協力するなど、インターネットの発展にも大きく貢献した。

    石田晴久氏が死去 UNIX、インターネットの国内普及に尽力
  • 【ハウツー】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よりも高速なメモリ割り当てを実現するライブラリであり、テスト

    sirocco
    sirocco 2009/01/28