タグ

programmingとcに関するhiromarkのブックマーク (74)

  • C/C++のポータブルな実行環境としてのGoogle NaCl - nabeyangの日記

    ここ数日、Google NaClを使ってC++コードをweb上で実行できるようにするということを試していました(できたのはこれです)。使ってみた感想としては、この仕組みがwebサービスとして使われるようになるかは分かりませんが、C/C++コードで書かれたアプリケーションを実行できる状態で見せるといった用途では、現段階でも十分に使えるんじゃないかというものでした。 Google NaClを使うと、C/C++コードをweb上で動かすことができます。ちょうど、ruby, pythonなどのC APIを使った拡張モジュールのようなことがブラウザ上で動くJavaScriptでもできるようになったようなものだと思ってください。(ただし、NaClプラグインが動くのは現在のところGoogle Chromeだけです) というのも、C/C++で書かれたプログラムを実行しようと思ったら、まず自分以外の環境でもビ

    C/C++のポータブルな実行環境としてのGoogle NaCl - nabeyangの日記
  • パスワードの判定にstrcmpを使うべきでない理由

    strcmpを使ってパスワードを判定すると、タイミング攻撃 (timing attack) にやられる危険性があることの説明 (約20分)。 まとめ: パスワードなどの文字列を strcmp関数 (およびそれに類する関数) を使って判定すると、 その判定にかかる時間を測定することで、パスワードが推測できてしまう場合がある。 これをタイミング攻撃 (timing attack) という。 この例では、36種類の文字を使った8文字分のパスワードを推測するのに、 通常のしらみつぶしな方法 (bruteforce attack) … 368 = 2821109907456回 の試行が必要なのに対して、 タイミング攻撃を使った方法 … 10000×8 = 80000回 しかかからない。タイミング攻撃を成功させてしまうと、 重要な情報が漏洩してしまう危険性がある。 これを防ぐためには、なるべく実行時間

  • Manpage of GETPWNAM

  • Manpage of EXECVE

    Section: Linux Programmer's Manual (2) Updated: 2008-08-07 Index JM Home Page roff page 名前 execve - プログラムを実行する 書式 #include <unistd.h> int execve(const char *filename, char *const argv[], char *const envp[]); 説明 execve() は、filename によって指定されたプログラムを実行する。 filename は、バイナリ実行形式か、 以下の形式の行で始まるスクリプトでなければならない。 #! interpreter [optional-arg] 後者の詳細は、後ろの「インタプリタ・スクリプト」の節を参照のこと。 argv は新しいプログラムに渡される引き数文字列の配列である。 e

    hiromark
    hiromark 2010/03/10
    忘れとる。
  • review of C functions

    MS-Windows上では mode 文字列にはさらに 't' または 'b' を 加えることでテキストファイルとして読み書きするか、 バイナリファイルとして読み書きするかの選択ができます。 UNIX上ではその意味はありません。 fdopen関数は既に低水準でファイルが開いている場合に、 それを高水準でも扱えるように、その descriptor を扱う file stream を 作成します。 fileno関数は file stream の核をなす file descriptor の番号を返します。 fputs,puts,fgets,gets 一行読み書き #include <stdio.h> int fputs(const char *str, FILE *stream) int puts(const char *str) char* fgets( char *str, size_t s

    hiromark
    hiromark 2010/03/10
    使い方忘れとる。
  • strtok(区切り文字による文字列の切り分け) - ICPC突破専用ザク

    STLのstringで,str="100 200 400"のような文字をスペースで切り分けて,a=100,b=200,c=400...のようにしたいことがある. この場合,str.split(" "); のようにすれば適当に切り分けてvectorにでも出力してくれるんじゃないかと思っていたのだけど,調べたところsplitのようなものはどうも無いっぽく,代わりにCでstrtokという関数があるそうなのでこれを利用する. (stringから使う場合は(char*)str.c_str();する) strtokはstring.hの関数で,以下のような挙動をする. http://www9.plala.or.jp/sgwr-t/lib/strtok.html 【書式】 #include char *strtok(char *s1, const char *s2); 【説明】 分解対象文字列 s1 を、

    strtok(区切り文字による文字列の切り分け) - ICPC突破専用ザク
  • 構造体メンバの配置 | 移植性のあるCプログラミング

    一定期間更新がないため広告を表示しています

    構造体メンバの配置 | 移植性のあるCプログラミング
  • アルゴリズムの紹介

     ここでは、プログラムなどでよく使用されるアルゴリズムについて紹介したいと思います。 元々は、自分の頭の中を整理することを目的にこのコーナーを開設してみたのですが、最近は継続させることを目的に新しいネタを探すようになってきました。まだまだ面白いテーマがいろいろと残っているので、気力の続く限りは更新していきたいと思います。 今までに紹介したテーマに関しても、新しい内容や変更したい箇所などがたくさんあるため、新規テーマと同時進行で修正作業も行なっています。 アルゴリズムのコーナーで紹介してきたサンプル・プログラムをいくつか公開しています。「ライン・ルーチン」「円弧描画」「ペイント・ルーチン」「グラフィック・パターンの処理」「多角形の塗りつぶし」を一つにまとめた GraphicLibrary と、「確率・統計」より「一般化線形モデル」までを一つにまとめた Statistics を現在は用意して

    hiromark
    hiromark 2009/10/16
    サンプルコードがうれしい。
  • 画像研究入門

    【目次】 0.C言語基礎 0-1.当の基礎 0-2.配列とポインタ 0-3.文字列操作・ファイル操作 1.画像基礎 1-1.画像フォーマット 1-2.テキストとバイナリ 1-3.配列とポインタ 2.画像処理基礎 2-1.エッジ処理 2-2.背景差分処理 3.グラフ描画基礎 3-1.gunplot 3-2.折れ線グラフ 3-3.ヒストグラム表示 4.アルゴリズム基礎 4-1.k-平均アルゴリズム 4-2.EMアルゴリズム 5.画像表示基礎 5-1.OpenGL 5-2.OpenGLによる二次元表示 5-3.OpenGLによる三次元表示 はじめに これから画像処理・認識の研究を始めようという人を対象とした入門書を作っています.対象は研究室に配属されたばかりの情報系大学の4年生を想定していますが,誰が読んでも分かるように心がけているつもりです.読み進めながら課題を解いていくうちに画像の基礎知識

    hiromark
    hiromark 2009/08/24
    レファレンスに便利。
  • C言語による輪郭追跡処理について

    ここでは、私、酒井理雄(TSUGU)が卒業研究において作成した DIB画像の輪郭追跡プログラムのアルゴリズムについて解説をしたいと思います。 ご意見やご感想、また、ここおかしいんじゃない?というような所があれば連絡していただけると作者が喜びます。 最初にこのドキュメント中の画像の見方について説明します。 下のような画像が多数出てきますが、その色は次のような意図で塗られています。

    hiromark
    hiromark 2009/06/26
    なんかに使えそう。
  • Write in C

    An Homage to the Beatles "Let It Be"... Write in C When I find my code in tons of trouble, Friends and colleagues come to me, Speaking words of wisdom: Write in C. As the deadline fast approaches, And bugs are all that I can see, Somewhere, someone whispers: Write in C. Write in C, write in C, Write in C, oh, write in C. LOGO's dead and buried, Write in C. I used to write a lot of FORTRAN, For sci

    hiromark
    hiromark 2009/05/20
    なんだこれw
  • メモリリークしない安全なプログラムの書き方

    とりあえず動くプログラムを書く ここでは例として、Fooという構造体の2次元配列を、引数で指定された幅と高さで作る、createFooMatrixという関数を作ってみます。 なお、配列の各要素を、initializeFoo関数で初期化しています。 Foo **createFooMatrix ( int width, int height ) { Foo **ptr = NULL; int w, h; ptr = (Foo **)malloc(height * sizeof(Foo *)); for (h = 0 ; h < height ; h++) { ptr[h] = (Foo *)malloc(width * sizeof(Foo)); for (w = 0 ; w < width ; w++) { initializeFoo(&ptr[h][w]); } } return ptr;

    hiromark
    hiromark 2009/03/03
    よくまとまってる。
  • perlembed - C プログラムに perl を埋め込む

    名前 perlembed - C プログラムに perl を埋め込む 説明 前書き あなたの欲しいのはどれ? Perl から C を使う perlxstut, perlxs, h2xs, perlguts, perlapi を読みましょう. Perl から Unix プログラムを使う バッククオート及び perlfunc にある system と exec を読みましょう. Perl から Perl を使う "do" in perlfunc 及び "eval" in perlfunc, "require" in perlfunc, "use" in perlfunc を読みましょう. C から C を使う 構成を考え直してみましょう. "><C から Perl を使う> このままどうぞ... 道のり C プログラムのコンパイル C プログラムに Perl インタプリタを追加 C プログラ

    hiromark
    hiromark 2009/02/04
    これ、たまにやりたくなる。
  • 私的 XS メモ - IT戦記

    参考にしたサイト集 perlxs - perldoc.perl.org perlxstut - perldoc.perl.org perlguts - perldoc.perl.org perlapi - perldoc.perl.org http://d.hatena.ne.jp/tokuhirom/20081209/1228829454 Perl XS メモ - typemap と MAGIC をからめて - daily dayflower http://pub.ne.jp/wakapon/?entry_id=1109553 http://pub.ne.jp/wakapon/?entry_id=1109664 準備 $ h2xs -A -n MyXSS Makefile.PL CC => 'g++', 型 SV スカラー AV 配列 HV ハッシュ CV コード GV グロブ RV リ

    私的 XS メモ - IT戦記
    hiromark
    hiromark 2009/01/28
    これは嬉しいまとめ。
  • 確率分布ライブラリ

    /* dist.c */ #include <stdio.h> #include "sslib.h" double qnorm(double u) { static double a[9] = { 1.24818987e-4, -1.075204047e-3, 5.198775019e-3, -0.019198292004, 0.059054035642,-0.151968751364, 0.319152932694,-0.5319230073, 0.797884560593}; static double b[15] = { -4.5255659e-5, 1.5252929e-4, -1.9538132e-5, -6.76904986e-4, 1.390604284e-3,-7.9462082e-4, -2.034254874e-3, 6.549791214e-3,-0.01055762

    hiromark
    hiromark 2009/01/05
    こりゃ便利かも。
  • Cはワンマン向け - 神様なんて信じない僕らのために

    だと考えるようになった。 いや、あくまで自分の中ではです。 今、Cで作られたものを参考にしてC++に移す作業をしていたりするんだけれども、 至る所に出現する、 void* コールバック 謎フラグ hoge->foo->bar->ptr ううーん。 これだけをして、ダメというのは何かもしれないけれど、 void*は至る所で何かに化ける。 根底にあるのは汎用ワークだからして、 その場その場で姿が変わる。 メモリマッピングとしてはそれが当然だからして当然なのだが、 型安全性とは真逆。 コールバック、 StateやStrategy風なことをしようとしてコールバックの嵐になるんだけれども、 あっちやそっちやこっちに飛んだりして遷移が読みづらい。 何でもかんでもコールバックで指定すりゃ良いってもんでもない。 謎フラグ、 至るところにあるhoge_flag & HOGE_FOO_BAR、 フラグの名前だ

    Cはワンマン向け - 神様なんて信じない僕らのために
    hiromark
    hiromark 2008/12/29
    あ、すべてよくやります (^_^;
  • OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん

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

    OMake つかったらC言語でプログラム書く手間がバカみたいに減った - 日記を書く[・ _ゝ・]はやみずさん
    hiromark
    hiromark 2008/12/04
    プログラミングの生産性あがりそうだな。
  • Linuxでプロセスの優先度を上げて、ずっと俺のターン - sttsのソースコードMemoブログ

    Linuxカーネル徹底理解に載っていた、Linuxで他のプロセスにCPUを使わせないぐらい優先度を上げる方法のメモです。 2008/02/15追記 わざわざコードを書かなくてもLinuxにスケジューリングを変更するコマンドが用意されていました。 chrt [options] [prio] [pid | command [arg]...] 解説 Linuxでは、sched_setschedulerシステムコールを使いスケジューリングアルゴリズムや優先度を変更します。 sched_setscheduler(pid, policy, &spp) 選べるスケジューリングポリシーは、4つあります。 SCHED_FIFO 入出力待ちまで他に制御が移らない SCHED_RR 入出力待ち以外にも時間切れで他のプロセスに制御が移る SCHED_OTHER デフォルトのスケジューリングポリシー SCHED_B

    Linuxでプロセスの優先度を上げて、ずっと俺のターン - sttsのソースコードMemoブログ
    hiromark
    hiromark 2008/11/11
    sched_setscheduler
  • 関数ポインタとmprotectを使って関数の領域を上書き2 - Ryoの開発日記 Neo!

    http://d.hatena.ne.jp/kanbayashi/20081005/p1 とかやってみたついでに遊んでみる。 #include void hoge(){ printf("hoge\n"); } void bar(){ printf("bar\n"); } void main(){ bar(); } こうすると当然 barと出力されるわけだけど、ここでbar関数にhoge関数の中身をコピーして、出力される文字列を入れ替えちゃおう。 下調べ とりあえず、hoge関数とbar関数の中身をobdumpで調べる objdump -d hoge_bar.out 08048414 : 8048414: 55 push %ebp 8048415: 89 e5 mov %esp,%ebp 8048417: 83 ec 08 sub $0x8,%esp ====================

    関数ポインタとmprotectを使って関数の領域を上書き2 - Ryoの開発日記 Neo!
    hiromark
    hiromark 2008/10/06
    とりあえず面白い。
  • memcpy 最適化 - kazuhoのメモ置き場

    バイト単位でコピーするアホなコードの方が、勝手にベクトル化される分、gcc 内蔵のヤツより最大3倍高速なんだってwww memcpy() compiled with vectorizing compilers All current compilers for linux should support SSE2 auto-vectorization with #include <string.h> void *(memcpy)(void *restrict b, const void *restrict a, size_t n){ char *s1 = b; const char *s2 = a; for(; 0<n; --n)*s1++ = *s2++; return b; }(中略) x86-64 gcc memcpy() (中略) Linking in a user-compiled

    memcpy 最適化 - kazuhoのメモ置き場
    hiromark
    hiromark 2008/06/17
    まじすか?