タグ

cに関するhiromarkのブックマーク (165)

  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    hiromark
    hiromark 2016/02/19
  • C言語分かってなかった (I Do Not Know C) - Qiita

    Dmitri Gribenko氏によるBlog記事 "I Do Not Know C" より訳出。原文および訳文のライセンスは CC BY-SA 3.0 に従う。 この記事の目的は、皆に(とくにCプログラマに)「C言語分かってなかった」と言わせることです。 C言語の死角は思っているよりも身近にあり、よくある単純なコードですら 未定義動作(undefined behavior) を含む可能性があると示したいと思います。 記事は質問に対する回答の形をとります。全ての例示コードは別々のファイルに分かれていると考えてください。 (訳注:Qiita/Markdown表現の制約から、読中ネタバレ防止のため文章順序を変更しています。前半には質問のみを、後半には質問と回答の対を訳出しました。) 質問編 1.

    C言語分かってなかった (I Do Not Know C) - Qiita
    hiromark
    hiromark 2015/03/10
  • Ruby用拡張ライブラリをCで作る

    Ruby用拡張ライブラリをCで作る Rubyは、C(あるいはC++)で書いたコードを動的(あるいは静的)にリンクして利用する事ができる。うまく使えば、Rubyで書くより高速な動作が期待できる。 たとえば、GUIライブラリである「Ruby/GTK」は、描画部分にCで書かれたライブラリを利用する事で、実用的な画面描画速度を確保している。 その、Ruby用拡張ライブラリをCで書く方法である。 ■ 拡張ライブラリ作成の流れ Rubyはオブジェクト指向言語である。オブジェクト指向言語におけるプログラムとは、基的にクラス定義である(と、少なくとも私は思っている)。そこで、ここではクラス定義に話を絞る。 メソッドの実体となる関数を定義する Init関数を作る rb_define_classで、新しいクラスを作る rb_define_methodで、クラスに1で作成したメソッドを追加する Makefil

  • CLion— C / C++ デベロッパ向けの新しいIDE | Post Blog

    待望のC/C++ IDEをCLionとして公開致します! JetBrainsはソフトウェア開発を生産的で楽しいものにするため常に注力しています。Javaのシンプルなリファクタリングツールに始まり、Java、.NETPythonRuby/Ruby on RailsPHPJavaScriptHTML、Objective-Cなど様々な言語、プラットフォームに対応してきました。 JetBrainsのスマートなツール群はコードの品質を高めたり、効率良くリファクタリングしたりコーディング出来ることで広く知られています。 CとC++はプログラミング言語の中でも特に歴史が長く、原始スープ(primordial soup)の中でも根強く生き残っているの言語として認識されています。そこでJetBrainsは信念に基づき、C/C++デベロッパの作業をより効率的なものとするため専用のIDEをリリースする

    CLion— C / C++ デベロッパ向けの新しいIDE | Post Blog
    hiromark
    hiromark 2015/02/07
    いれてみよ
  • ネイティブからJavaを呼び出す

    前章でやったのは、Javaプログラム内から、dll内の関数(ネイティブメソッド)を呼び出す方法となります。 これを利用する事で、OS依存のネイティブAPIJavaから使用する事も可能になります。 今度は逆に、Windowsアプリケーションの中から、Javaのメソッドを呼び出すという方法を紹介します。 Javaのメソッドを呼び出すわけですが、正確に記述するとJavaVMを起動し、JavaVM上でJavaのメソッドを実行させることになります。 呼び出されるJavaソース public class JNIHello2 { public static String getMessage(){ return "Hello World"; } } 呼び出されるJavaソースファイルは、特に呼び出される事を意識する必要はなくて、普通に作成すればよいです。 今回は、ネイティブ側から単に関数を呼び出すだけ

    ネイティブからJavaを呼び出す
  • JNI その2:ネイティブコードからJavaメソッドを呼び出す - ぷ~ろぐ

    ぐはああ、 /com/android/sdklib/ISdkLog=コマンドプロンプトでeclipse -clean (立場が変わっても…) ぐはああ、 /com/android/sdklib/ISdkLog=コマンドプロンプトでeclipse -clean (立場が変わっても…) ◎聖闘士星矢Ω第1話星矢が救った命!甦れ聖闘... (ぺろぺろキャンディー) 静岡:淡島リゾートとシダックスと”てんかん発作”の彼女 (脳挫傷による見えない障害と闘いながら) 複数のボタンの動作を設定する (初心者の初心者のためのAndroidアプリ開発!) オープンソースナレッジベース : Opensource Knowlege Base (オープンソースナレッジベース : Opensource Knowlege Base) 川崎:相変わらずの“勝負弱さ”/磐田戦から (サッカーはエンターテインメントだ!)

    JNI その2:ネイティブコードからJavaメソッドを呼び出す - ぷ~ろぐ
  • 有効なWikiNameではありません - PukiWiki for PBCGLab

  • C言語からJavaのメソッドを呼び出す - Miyo's Page

    [プログラミング] [Java] [C言語] /opt/blackdown-jdk-1.4.2以下にJavaがインストールしてある場合です. linuxおよび,linuxエミュレータを導入しているFreeBSDでも実行できることを確認しました.ただし,この場合は,linux版のgccでコンパイルすることが必要です. サンプルコード 以下のTest.javaを呼びだすC言語のコードを書くことにする. public class Test{ public static void testmethod(){ System.out.println("succeseed of calling."); } public int sumation(int a, int b){ return a+b; } } C言語側のコード #include <jni.h> #include <stdio.h> #inc

  • C/C++からJavaのライブラリを呼ぶ with JNI - #define NO_MONEY 0

    JavaのライブラリをC/C++から呼ぶ方法のメモ. フルのソースコートはこちら 参考にしたページ: シンプルな C言語からJava言語を呼び出すJNIサンプル ここでは以下のようなJavaのクラスをC++から利用することを想定する. package my.hoge; public class Hoge { public Hoge() { } public void printHoge(){ System.out.println("Hoge!"); } public String getHoge(){ return new String("Hoge"); } public int add(int i, int j) { return i + j; } public String getMsg(String msg){ return new String("Hoget is " + msg)

    C/C++からJavaのライブラリを呼ぶ with JNI - #define NO_MONEY 0
  • mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場

    @ITに以下のような記事が出て、 今回からしばらくの間は、まったく逆の例、つまり使うとプログラムの処理性能が上がるというシステムコールを紹介していく。システムコールを呼ぶ回数は少ない方が処理性能は高くなるという原則は変わらないが、呼び出しておくと処理性能が向上するシステムコールというものが存在するのだ。こうしたシステムコールを使わないでいることは、とてももったいない。 今回紹介するシステムコールは「mmap(2)」だ。ここでは詳しく仕組みを解説しないが、mmap(2)は、プログラムの処理性能に必ず良い影響を与える。 やはりあった? 高速化に効くシステムコール (1/2):知ってトクするシステムコール(3) - @IT それを真に受けたのか、「Go言語でmmapシステムコールを使ったファイル読み込みの高速化検討とC言語のコンパイラの話 - ryochack.blog」のようなブログエントリも

    mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場
  • Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱

    二十五日半狂乱、6日目(の分...orz)の記事 Cのエラーハンドリングを毎回やるのは面倒だ! 前回も言ったが、Cではエラーハンドリングに戻り値とerrnoを用いる. それはそうと例外設計において"無視"は大罪である. だから、関数を呼び出したら戻り値は漏らさずチェックすべきだ. ということで、例えば以下のように逐一戻り値をチェックする. if(send(sockfd, buf, len, 0) < 0){ ERROR("send"); exit(1); } あぁ、面倒だ. 一体コードのどの部分が正常系の処理なのか? ほとんどエラーハンドリング*1で埋め尽くされるじゃないか. そもそもエラーハンドリング部分に書くのは毎回同じコードだし、コードの繰り返しは防ぎたい. エラー処理部分をラッピングして楽をする unpv12eの中でラッパーを被せることによってこの面倒を回避する方法を知った. in

    Cのエラーハンドリングと例外設計、例外処理のメモ - 百日半狂乱
    hiromark
    hiromark 2014/10/31
  • 問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ

    問.Cでオブジェクト指向プログラミングを行なえ。ただし「オブジェクト指向プログラミング」とは、次のような特徴を持つプログラミング技法であるものとする: オブジェクトの実装はオブジェクトのユーザーからは隠蔽される(カプセル化/隠蔽) 同一型のオブジェクトと同一メソッドを与えた時、実際のメソッドの動作はオブジェクトの内容により変化する(ポリモーフィズム/多態性) なお、ユーザーが既存のオブジェクトをカスタマイズして新たなオブジェクトを作成する機能は、必要ないものとする。 この問いの狙い よく、「オブジェクト指向プログラミング」と「オブジェクト指向言語」は混同されます。が、前者はプログラムを設計する上での考え方で、後者はその考え方を容易にソースコードに書けるような仕様になっている言語の事で、全く違うものを指しています。 その証拠を示すため、「非オブジェクト指向言語」たるC言語で「オブジェクト指向

    問.Cでオブジェクト指向プログラミングを行なえ - 株式会社CFlatの明後日スタイルのブログ
    hiromark
    hiromark 2014/10/20
    中途半端にやってメンテナンス性を悪くした苦い思い出が(^^;)
  • 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

  • sprintf を最大10倍以上高速化するプリプロセッサ「qrintf」を作った

    最近H2OというHTTPサーバを書いているのですが、プロファイルを取ってみるとsprintfが結構な時間をっていて不満に感じていました。実際、sprintfは数値や文字列をフォーマットするのに十徳ナイフ的に便利なので、HTTPサーバに限らず良く使われる(そしてCPU時間を消費しがちな)関数です。 では、sprintfを最適化すれば、様々なプログラムが より高速に動作するようになるのではないでしょうか。ということで作ったのが、qrintfです。 qrintfは、Cプリプロセッサのラッパーとしてソースコードに含まれるsprintfの呼出フォーマットを解析し、フォーマットにあわせたコードに書き換えることで、sprintfを高速化します。 たとえば、以下のようなIPv4アドレスを文字列化するコード片を sprintf( buf, "%d.%d.%d.%d", (addr >> 24) & 0xf

  • 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
    hiromark
    hiromark 2014/08/16
  • C Magazineが電子書籍で復刻! - WWW.SBCR.JP トピックス

    コンピュータ勃興期の1989年9月に創刊しました『C Magazine』が電子書籍として帰ってきました! 1989年はNEC PC-98シリーズ全盛であり、東芝のダイナブックシリーズの初代が発売された年でもありました。 『C Magzine』は人気プログラミング雑誌として刊行を続け、2006年4月号を最後に休刊になりました。刊行冊数は199冊にもなり、日プログラマーに長く愛された雑誌であることは間違いありません。 人気連載を担当されていた方の多くは、現在も当社各種IT書籍の執筆陣として活躍しています。 今回は愛読者だった方からの熱い要望に答える形で電子書籍として復刻致します! ■配信フォーマット 電子書籍版はEPUB固定フォーマットか、PDF(準備中)での販売を行います。また、今回配信するのは創刊から100号までになります。 ■ご注意 1)この電子書籍は紙の印刷物をスキャンしたデータを

    C Magazineが電子書籍で復刻! - WWW.SBCR.JP トピックス
    hiromark
    hiromark 2014/06/13
    ああああ、なつかしい!
  • jemalloc について調べたのでまとめた - zonomasaの日記

    ※この記事は3回シリーズのうちの一つ jemalloc について調べたのでまとめた - zonomasaの日記 続 jemalloc について調べたのでまとめた(ビルドと組み込み方法) - zonomasaの日記 jemalloc の解析機能 - zonomasaの日記 photo by mutednarayan jemalloc とは jemalloc は、標準ライブラリで定義されているmalloc, free 等のメモリアロケーション APIの実装である。 jemalloc : 公式ページ jemalloc は2005年より、Jason Evans によって開発されており、SMPでのスケーラビリティのためにFreeBSD のlibcに取り込ま標準アロケータとなっている。 その他にも、Facebook の内部や、KVS のRedis、fluentd などにも取り込まれている。 具体的には

    jemalloc について調べたのでまとめた - zonomasaの日記
  • ポインタ宣言の*記号、左寄せ派? 右寄せ派?

    C/C++でポインタ変数を宣言するときの*記号をint* a;のように左寄せで書くか、int *a;のように右寄せで書くか。 右寄せで書く場合、「Cでは宣言と使用の文法を一致させる」という規則から考えれば素直に解釈できるという話。

    ポインタ宣言の*記号、左寄せ派? 右寄せ派?
    hiromark
    hiromark 2014/03/27
    右寄せで書くのがもうクセになってて。
  • C99の仕様

    長い歴史を持ちながら、依然として人気の高いC言語。その最新仕様の情報にキャッチアップするための連載スタート。今回は1999年に策定された「C99」を取り上げる。 連載 INDEX 次回 → C言語(以降、単にC)はDennis Ritchieによって1969~1973年の間にベル研にて開発されたプログラミング言語である。長い歴史を持つと共に非常にポピュラーな言語で、プログラマーでCを知らない人はまずいないと言っていいだろう。プログラミング言語のシェアを調査しているTIOBEでも、ここ最近は常に1、2位を占めている。 Cの言語仕様は今から25年近く前である1989年に初めて規格化され、これは一般に「ANSI-C」と呼ばれている。ANSI-Cは長らくCの言語仕様のスタンダードの位置を占め、世の中の大半のプログラマーは、このANSI-Cに慣れ親しんでいることだろう。しかし、実はCの言語仕様はその

    C99の仕様
    hiromark
    hiromark 2014/02/07
  • 訃報: C 言語の開発者、デニス・リッチー氏が死去 | スラド デベロッパー

    Google+ で Rob Pike 氏が語ったところによると、C 言語の開発者、K&R の R であるところの Dennis Ritchie 博士が亡くなられた。70 歳 (Rob Pike 氏による Google+ への投稿) 。 長らく闘病中だったとのことで、先週末に自宅で息を引き取ったそうだ。

    hiromark
    hiromark 2011/10/15
    なんと。。