タグ

Cに関するyokochieのブックマーク (126)

  • JNIより簡単にJavaとC/C++をつなぐ「JNA」とは(1/4)-@IT

    インターネットの普及に加えて、リッチクライアント/RIAの発展とともに、アプリケーションの形態は、C/S(クライアント/サーバ)システムから、Webアプリケーションシステムにシフトしています。一般の情報発信システムだけではなく、企業の基幹情報システムまで、盛んにWebアプリケーションで構築するようになりました。 この変化の主役であるといわれる、Java技術は、Webアプリケーションシステムの発展とともに、ネットワークの親和性や、プラットフォーム適用の多様性で、広く受け入れられて、Webアプリケーションシステム開発の基盤技術になっています。 これまでのC/Sシステムでは、サーバロジックはC/C++で実装されるケースが一般的でした。C/SシステムからWebアプリケーションシステムにシフトする際に、Java技術を導入することを決めた場合、Java技術で、すべて新規開発するのは1つの選択肢ですが、

  • C MAGAZINE - プログラミングの禁じ手Web版 C言語編

    プログラミングの禁じ手Web版 C言語編 /Top/今週のソースコード/プログラミングの禁じ手Web版 C言語編/ [←前] [次→]  [C言語版一覧] [C++版一覧] 誌2000年4月号に掲載された「特集1 プログラミングの禁じ手 C言語編」よりWebサイト用に抜粋したものです。ソースコードとともに公開いたします。作者の真紀俊男様に感謝します。 プログラミングは,「なぜかうまく進めなくなる」,「だんだんと期待した通りに動かなくなる」など,とても「イヤ」な面があります。そうした現実に直面したときに稿がお役に立てれば幸いです。

  • 参照はポインタと比べるべきではない - みねこあ

    協力会社のデキるプログラマを次々と切り、代わりにあまりものの正社員が投入されてしまった現在の我が開発チームのレベルは低く、殆どプログラミング専門学校のような様相を呈しています。可愛い男の子が「わかりませーん」というのは萌えますが、30台後半のおじさまが「わかりませーん」というのは殺意が沸きます。 自称 「STLは使ったこと無いけど、C++ 自体は解ってます」な方なのですが、「C++出来ます」の自己申告は危険です。たとえば、曰く、参照がわからない、ですとか。・・・・テケスタ。テケスタ。 ただ、参照には教え方にコツがあるのではないかと思いました。 Cのポインタが文法も概念も引っかき回していった後だけに、他の言語では何でもない「参照」がこんがらかりやすいのは事実です。そういう風に思い直して、こんな解説をしてみました。 * * * C++ の参照と対になるのは、ポインタではなく、通常の変数です。C

    参照はポインタと比べるべきではない - みねこあ
  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

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

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
  • Charming Python: Functional programming in Python, Part 3

    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.

    Charming Python: Functional programming in Python, Part 3
  • C/C++ Technical Documents

    C++ 寄稿記事 επιστημη 氏から寄稿していただいた、開発者の方々にお役に立つテクニカルドキュメントです。Articles、References、Miscelaneousに分かれて説明しています。初心者の方からプロの方まで役に立つ読み物と資料集です。是非、開発のお役にお立て下さい。 Articles: 読み物 References: 資料集 Miscelaneous: 番外編

  • 【ハウツー】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よりも高速なメモリ割り当てを実現するライブラリであり、テスト

  • C/C++ から Ruby を動的に扱う « ますぽんの雑記

    RubyPython とよく比較される国産のインタプリタ言語で、文字列の扱いに定評があります。オブジェクト指向で、モジュール、クラス、例外処理、ガベージコレクション等最新の機能は一通り揃った魅力ある言語です。今回は、これを前回と同じように C/C++ から動的に扱ってみます。まずは、C/C++ から Ruby スクリプトを呼んでみます。 #include <Ruby/ruby.h> const char *script = "def multiply(x,y)\n" " return x*y\n" "end"; int main(int argc, char *argv[]) { VALUE value; ruby_init(); // スクリプトの読み込み rb_eval_string(script); // スクリプトの実行 value = rb_funcall(Qnil,rb_

  • インテル コンパイラー 1000本ノックプロジェクト | OSDN Magazine

    インテル コンパイラーにはさまざまな最適化機能が備えられており、そのためインテル コンパイラーでコンパイルしたプログラムは高速に動作すると言われている。しかし、そのためだけにわざわざソースコードからコンパイルを行うのは面倒だ、という人も多いだろう。そこでSourceForge.JP Magazine編集部では、インテル コンパイラーでコンパイルされたソフトウェアをより多くの人に試してもらうため、「インテル コンパイラー 1000ノックプロジェクト」と題し、インテル コンパイラーでコンパイルしたプログラムを公開することにした。 インテル コンパイラーには自動並列化や自動ベクトル化、プロシージャ間の最適化(Inter Procedural Optimization、IPO)など、高速に動作するバイナリコードを生成するための機構が備えられている。これによって、Visual C++やGCCなどで

  • お手軽転置インデクスを用いた検索エンジン: (1) AND検索編 - シリコンの谷のゾンビ

    突然Cでコードを書きたくなったので,なんちゃって転置インデクスを用いた検索プログラムを書いてみた. 転置インデクスとは,索引語と呼ばれる単語が出現する文書情報 (場合によっては位置情報も) を保持したデータ構造のことで,索引語と,それに対応する転置リストによって構成される. # 索引語 -> 転置リスト hoge -> 5: 1,2,3,4,5 fuga -> 3: 1,4,5 piyo -> 2: 4,5これは,hogeという単語が文書1,2,3,4,5に出現し,fugaという単語が文書1,4,5に出現し,piyoという単語が文書4,5に出現する情報を保持している.最初の5,3,2という数字はそれぞれ索引語がいくつの文書に出現したかという文書頻度 (document frequency; DF) を表している. 検索クエリhogeが入力された場合には,文書1,2,3,4,5を検索結果とし

    お手軽転置インデクスを用いた検索エンジン: (1) AND検索編 - シリコンの谷のゾンビ
  • UNIXネットワークプログラミングのお勉強 (1) - シリコンの谷のゾンビ

    3連休何をしようかと考えていたら,なんとなくデーモンプログラムを書いてみたくなったので,Cによるネットワークプログラミングを勉強することにした. 2年くらい前に文献[1]を購入し,過去に2回ほど勉強しようと思ったけれど,とにかくインクルードする必要があるヘッダーファイルが大量にある時点で嫌気が差して挫折してしまった. ソケットのイメージはわかっているつもりだけれど,実はよくわかっていなかった.なぜかわからないけれど,今日を読みながらてしてしコードを書いていたら色々つながって基的なことを理解することができた. デーモンを作るところまで行きたかったけれど,途中まででいったん中断.サーバプログラム,クライアントプログラムを書く手順をメモしておく. サーバプログラム socketをつくる bindする listenする acceptする いろいろ処理する クライアントプログラム socketを

    UNIXネットワークプログラミングのお勉強 (1) - シリコンの谷のゾンビ
  • [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - シリコンの谷のゾンビ

    一晩寝てからデーモンプロセスの作り方を眺めてとても簡単だということに気がついた.自分メモ. デーモンへの道のり fork()して子プロセス (次郎) を生成.親プロセス (太郎) を終了する 次郎プロセスでsetsid()する 次郎プロセスはセッショングループリーダになる この時点で次郎プロセスは制御端末を持たなくなる 次郎プロセスがfork()して孫プロセス (三郎) 生成.次郎プロセス終了 chdir("/")する. shutdown時のumount処理に迷惑をかけないため 標準入力,標準出力,標準エラー出力を閉じる サンプルコード 比較を行うために3つのプログラムを書いた. daemon 全部行う nondaemon 2度目のfork()をしない nondaemon2 setsid()しない #include <stdio.h> #include <stdlib.h> #includ

    [c][unix]UNIXネットワークプログラミングのお勉強 (2) デーモンの作り方 - シリコンの谷のゾンビ
  • tokuhirom blog

    Blog Search when-present<#else>when-missing. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: ${entry.path} [in template "__entry.ftlh" at line 3, column 25] - Reached through: #include "__entry.ftlh" [in template "entry.ftlh" at

  • 入門GTK+ | Ohmsha

    まえがき 第1章 GTK+ ってなんだろう 第2章 GTK+ で画像ビューワを作ってみよう 第3章 もっとGTK+ 第4章 GLib 第5章 GdkPixbuf を使った画像アプリケーションの作成 第6章 cairo による図形の描画 第7章 ウィジェットリファレンス 第8章 拡張ウィジェットの作成 第9章 統合開発環境によるソフトウェア開発 第10章 プログラミングの小箱 付録A GTK+の開発環境の構築 付録B Visual Studio 2008 Express Edition でのビルド方法 付録C GtkStockItem 一覧 付録D サンプルプログラムのソースコードリスト 索引 まえがき 第1章 GTK+ ってなんだろう 1.1 GTK+ 1.2 GUI ツールキット 1.3 GTK+ の特徴 1.4 プログラミング環境を整えよう 1.4.1 GUI によるアプリケーションの

    入門GTK+ | Ohmsha
  • GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん

    Twitter上で、@alohakun が言及していた GDB の reverse debugging の機能を使ってみました。 GDB にトレースと逆実行機能入ったのか。 http://www.gnu.org/software/gdb/news/reversible.html http://twitter.com/alohakun/status/4481139191 まずは簡単な使い方を説明したあとに、インストール方法を説明します。 こんなときに便利 「変なこと」が起きている大体の場所がわかっているとき デバッグ中に、大体どこで変なことが起きているかはわかっているけど、細かい場所は特定できていないとき、reverse debuggingが効果を発揮します。 GDBでステップ実行をしていて、「しまった!行きすぎた!」という経験はよくあると思います。こういうとき、今まではプログラムの実行を最

    GDBで歴史をさかのぼれるように!なりました! GDB 7.0 の新機能Reverse Debuggingを使ってみた - 日記を書く [・w・] はやみずさん
  • KMC Staff Blog:K&R C ができるまで

    2009年08月07日 K&R C ができるまで 少し前の話になりますが、いただいたコメントをきっかけに、puts になぜ改行が付くのかというネタについて調べていた時、面白い論文を教えてもらいましたので紹介します。 "C and the AT&T Unix Port -- A Personal History", Stephen C. Johnson (翻訳) http://roguelife.org/~fujita/COOKIES/HISTORY/USENIX/johnson.html 初期の UNIX v6 を書いた pre K&R C が、32 bit マシンへの移植を意識した時、どのように K&R C へと変遷していったかという歴史が書かれています。C に関しての疑問を調べていくと、やはり初期の言語 B や PDP-11 とのかかわりが鍵となってきます。 The Impact on

  • ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改

    ディレクトリの中にある大量のファイルを高速に読み込む方法が知りたかったので、実験してみた。想定しているシチュエーションは、一つ一つのファイルは数KB程度だが数が多い、という場合である。適当な順番でアクセスすると、ランダムアクセスになってしまいとても時間がかかる。個々のファイルを読み込む順番はどうでも良く、すべてのファイルを処理することさえできればいいので、原理的にはシーケンシャルアクセスで処理できてしかるべきである。 まず、ファイルシステムについて。HDDやSSDなどのハードウェアにアクセスする際には、ファイル名などという概念はもちろん存在しない。ファイル名と実際のディスク上の対応を管理するのがファイルシステムの主な役割である。ファイルシステムは、ファイル名からそのファイルに対応するブロック番号(メモリアドレスみたいなもんだな)を調べて、そのブロック番号を指定してHDDやSSDにアクセスす

    ディレクトリの中にある大量の小さなファイルを高速に読み込む方法 - 射撃しつつ前転 改
  • プログラミング言語 C の新機能

    7. 文法一般 この章では C 言語に新たに加えられた指示付きの初期化子や複合リテラルといった文法や、暗黙時の宣言に関する変更といった、変更された文法について説明します。 7.1 暗黙の関数宣言 現在の C 言語の規格では、ある関数から他の関数を呼び出す時、とくにその関数のプロトタイプを宣言しなくても使用することができました。例えば stdio.h を読み込まずに、printf を使用するといったことです。しかし、今度の C 言語ではそのような場合、その関数の呼び出しは規格上未定義の動作となります。ただ実際には多くの処理系では警告を出してコンパイルするよう実装されることでしょう。この辺の機能は C++ に近くなっていますね。 7.2 宣言時の暗黙の型 手続き型言語では、一般的に変数や関数などを宣言して使用する必要があります。もちろん C 言語も例外ではありません。しかし C 言語では特に型

    yokochie
    yokochie 2009/06/12
  • iPhone 開発に使える C99 仕様と gcc 拡張 - 2009-04-23 - Windchase

    iPhone アプリの開発には、コンパイラとして gcc 以外を使うことは基的にありません。 したがって、gcc に実装されている C99 仕様や gcc 拡張仕様を気がねすることなく利用することができます。 ここでは、便利な C99 仕様や gcc 拡張を紹介します。 配列の動的確保 (C99) 配列を定義するときに、動的にサイズを指定してメモリを確保することができます。 従来は、 int n = 100; char* buf = alloca(n); のように alloca を使っていたところを、 int n = 100; char buf[n]; と、言語仕様の範囲内で、より直観的に書けるようになりました。 case の範囲指定 (gcc 拡張) 従来、switch 〜 case で switch (n) { case 0: case 1: case 2: case 3: proc

    iPhone 開発に使える C99 仕様と gcc 拡張 - 2009-04-23 - Windchase
  • 常駐型サーバープログラムのデバッグ手法

    BOOK: WEB+DB Press TITLE: 常駐型サーバーのデバッグ手法(ドラフト版) AUTHOR: (株)プリファードインフラストラクチャー 太田一樹 *注: この文章はWEB+DB PRESS Vol.48に掲載された記事のドラフト版です はじめに 今回はデバッグ関連特集ということで、常駐型サーバープログラムを作成する際のハマりどころやそれに対する解析方法・解析ツール・対策を、実際の経験を交えながら紹介したいと思います。 筆者は(株)プリファードインフラストラクチャーでインメモリ分散検索エンジン「Sedue (セデュー)」を開発しています。モバイル向け検索エンジン「エフルート」や、2008/11/6にリニューアルされました「はてなブックマーク2」などの検索バックエンドとして使われております。 この検索エンジンはいくつかの常駐型サーバープログラムから構成されており