タグ

Cに関するat_yasuのブックマーク (20)

  • やり直しC言語:複雑な宣言の読み方

    C言語は宣言文が非常に読みにくいことで有名で、後発のGo言語はこれを批判して宣言の構文を変えています。私もずっと読むのが苦手だったのですが、私の頭が悪いのではなく、C言語の仕様がヘン、ということらしい。 今まで飽きるほどこの手の解説は書かれてきてるわけですが、自分なりにまとめないと覚えた気がしないので、あえてまとめておきます。ここに書いてある内容は、「C言語ポインタ完全制覇」に詳しく書いてあります。 型の派生 C言語では、int, char, floatなどの基型から、配列やポインタを派生していくことができます。対象を並べたものが配列で、対象を指し示すのがポインタです。 配列やポインタからも配列やポインタを派生できるので、派生パターンは無限に存在します。 int int の配列 int の配列 の配列 ... int へのポインタ int へのポインタ へのポインタ ... int への

    やり直しC言語:複雑な宣言の読み方
  • 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

    at_yasu
    at_yasu 2014/10/02
  • C言語は今でも価値のある言語か?

    Couchbaseの作者Damien Katz氏は,C言語はバックエンドプログラミングにおいて現在でも優れた言語である,という意見を持っている。しかし他の開発者は,C言語はあまりにも欠陥が多いとしてC++Javaを支持するもの,あるいはいずれも好まないというものなどさまざまだ。 CouchDB の開発者であるDamien Katz氏は,The Unreasonable Effectiveness of C と題した先日のブログ記事において,C言語がバックエンドのための優れた言語であると断言した。氏はC++Java,さらにはErlangやRubyのようなより現代的な言語よりも,今後もC言語を支持していくつもりだという。ただし単純に,C言語を他のどれよりも優れた言語だと言っている訳ではない。"言語自体のパフォーマンスと信頼性が重視される場面においては,C言語に比類する言語は皆無である",別

    C言語は今でも価値のある言語か?
    at_yasu
    at_yasu 2013/01/28
    だいたい同意。VMがバグってたら話しならんもんね…
  • CVE-2012-2122 MySQL における認証迂回の脆弱性について – IIJ Security Diary

    この脆弱性は2012年5月7日にリリースされた MySQL バージョン 5.1.63 と 5.5.24 において修正されました。認証時に指定するパスワードは何でもよく、認証要求を繰り返すと一定確率でログインが可能というかなり奇妙な脆弱性です。すべての環境において発生するわけではありませんが、攻撃成立時には深刻な影響を受けます。 該当するバグチケットは以下です。リリースバージョンも同様の修正でした。 MySQL Bugs: #64884: logins with incorrect password are allowed Rapid7 により PoC や影響が確認された環境等が纏められています。 CVE-2012-2122: A Tragically Comedic Security Flaw in MySQL アプリケーションに対するコード修正は1行のみ、発生する環境が限られている、非常

    CVE-2012-2122 MySQL における認証迂回の脆弱性について – IIJ Security Diary
    at_yasu
    at_yasu 2012/06/15
    稀にあるtypecastのバグ
  • C言語の開発者、デニス・リッチー氏が死去

    C言語およびUNIXの開発者の1人として知られるコンピュータ科学者のデニス・リッチー氏が亡くなった。享年70歳だった。同氏が2007年の引退後もコンサルティングをしていたベル研究所のジェオン・キム所長が公式ブログで明らかにした。 同氏の元同僚で現在Googleに務めるロブ・パイク氏のGoogle+への投稿によると、リッチー氏は先週末、長い闘病の末、ニュージャージー州の自宅で亡くなったという。 リッチー氏は1967年にベル研究所に入り、そこで開発したプログラミング言語のコンパイラをケン・トンプソン氏とともに発展させてC言語とした。また、同研究所で開発されたUNIXのC言語への書き換えを統括したことで、UNIXの父とも呼ばれる。リッチー氏とブライアン・カーニハン氏が1978年に出版した解説書「プログラミング言語C」は、現在も世界中で読み継がれている。リッチー氏は1983年にトンプソン氏とともに

    C言語の開発者、デニス・リッチー氏が死去
    at_yasu
    at_yasu 2011/10/14
    合掌
  • Dennis Ritchie, Creator of UNIX and C, Dead at 70 – OSnews

    Home > Unix > Dennis Ritchie, Creator of UNIX and C, Dead at 70 Twitter is currently buzzing about the death of Dennis Ritchie, the visionary creator of UNIX and C, among other things. We hope it’s just a false rumor. Story developing, we will be updating. Update: Unfortunately, it seems to be confirmed. Rob Pike, co-creator of the Plan 9 and Inferno OSes, who has worked with Ritchie in the past,

    at_yasu
    at_yasu 2011/10/13
    え!?!?デニス・リッチも死んでたのか!!
  • ISO/IEC 14882:2011

    ISO/IEC 14882:2011 specifies requirements for implementations of the C++ programming language. The first such requirement is that they implement the language, and so ISO/IEC 14882:2011 also defines C++. Other requirements and relaxations of the first requirement appear at various places within ISO/IEC 14882:2011. C++ is a general purpose programming language based on the C programming language as

    ISO/IEC 14882:2011
    at_yasu
    at_yasu 2011/09/03
    C++11仕様書
  • 2038年問題 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "2038年問題" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2015年7月) 2038年問題(にせんさんじゅうはちねんもんだい)は、2038年1月19日3時14分7秒(UTC、以下同様)を過ぎると、コンピュータが誤動作する可能性があるとされる年問題。 経緯[編集] 上から、2進・十進・問題のある時刻・正しい時刻。(GIFアニメ)3時14分7秒を超えたところで負の値となり、時刻に狂いが生じる恐れがある。 コンピュータおよびコンピュータプログラムにおける時刻の表現として「UNIX時間」《協定世界時における1970年1月1日0時0分0秒から

    at_yasu
    at_yasu 2010/09/21
    「NTPやMicrosoft Windowsなど、1900年1月1日からの積算秒数で時間を表現するシステムもあり、符号なし32ビットの値が2036年2月6日にオーバーフローすることによって問題が発生する」
  • 2010年2月1日 2009Q4報告: GCC-LLVM Clang入れ替え作業進捗報告、フラットデバイスツリー開発、Asterisk DAHDIサポート他 | gihyo.jp

    FreeBSD Daily Topics 2010年2月1日2009Q4報告: GCC-LLVM Clang入れ替え作業進捗報告、フラットデバイスツリー開発、Asterisk DAHDIサポート他 heads-up 2009Q4 FreeBSD Status Reportが公開されました。報告されているプロジェクトから興味深いプロジェクトを紹介します。 Clang replacing GCC in the base system ベースシステムのGCCをLLVM Clangに置き換えるための作業が進められています。各アーキテクチャにおける状況は次のように報告されています。 FreeBSD/amd64 - 起動可能カーネルの構築可能 FreeBSD/i386 - 起動可能カーネルの構築可能 FreeBSD/powerpc - Nathan Whitehorn氏の修正で大部分が動作するようにな

    2010年2月1日 2009Q4報告: GCC-LLVM Clang入れ替え作業進捗報告、フラットデバイスツリー開発、Asterisk DAHDIサポート他 | gihyo.jp
    at_yasu
    at_yasu 2010/02/02
    llvmへの以降が進んでいる話。
  • やる夫と学ぶプログラミング言語 C | スラド デベロッパー

    AA(アスキーアート)を用いて歴史上の出来事・ゲームの内容・調理法など様々な内容をストーリー形式で紹介するやる夫シリーズに、プログラミング言語Cを紹介するスレッドが出ていたようだ(まとめサイト第1話、第2話、第3話、最終話:プログラムの内容については第2話から)。 内容はprintf/scanfを使った標準入出力、if/while、switch、関数はmain()のみなどポインタ以前のC言語について解説したもの。main()のみだが、初心者に変数がグローバル変数だけと思わせるような筋、stdio.hをインクルードする理由を解説しない点についてはタレこみ人はどうかと思うが、C言語のとっかかりとしてコミカル(若干)に解説してるものとしては面白い試みだと思う。

  • Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ

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

    Cプリプロセッサメタプログラミングで、文字列系泥沼関数型プログラミング - 簡潔なQ
    at_yasu
    at_yasu 2009/11/09
    Oh... Crazy...
  • Big Sky :: jjencodeをc++に移植してみた。

    先日「jjencodeをApacheのmod_ext_filterに仕込む」という記事でhasegawaさんのjjencodeをgoogle chromeなんかで使われているjavascriptエンジン"v8"で動かしてみたのですが、あまりに遅いですし、一回javascriptエンジンが走ってしまうという事がボトルネックに繋がっているんだ...という勝手な推測の元、「jjencodeをv8に依存しない形でc++に移植しよう」と思い始めたのがこの記事をポストする30分前。今出来上がりました。テストしながら書いてます。 まず、オリジナルのまま関数で移植しました。ふつーのC++のコードです。 #include <sstream> #include <iostream> #include <string> using namespace std; string jjencode(string gv

    Big Sky :: jjencodeをc++に移植してみた。
  • S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル: 3世,サムエル・P. ハービソン, ガイ・L.,ジュニア スティール, 3,Samuel P. Harbison, Guy L.,Jr. Steele, 玉井 浩: Ama

    S・P・ハービソン3世とG・L・スティール・ジュニアのCリファレンスマニュアル: 3世,サムエル・P. ハービソン, ガイ・L.,ジュニア スティール, 3,Samuel P. Harbison, Guy L.,Jr. Steele, 玉井 浩: Ama
  • 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
    at_yasu
    at_yasu 2009/05/02
    GCC4.0.1とC99の話/__FILE__とか__LINE__はよく使う。
  • HowTo: Using ccache on FreeBSD

    Notes, tips, tutorials, how-tos, etc... All related to Unix-like OS namely FreeBSD and Linux. My way of giving a bit back to the community. ;) ccache is a compiler cache. It speeds up re-compilation of C/C++ code by caching previous compiles and detecting when the same compile is being done again. The following is a step by step guide to how to enable and use ccache on FreeBSD 7.1: % su# cd /usr/p

    at_yasu
    at_yasu 2009/01/23
    コンパイラーのキャッシュ
  • C/C++ リファレンス

  • OpenCL 1.0リリース | スラド デベロッパー

    GPUやDSPなどを使った汎用計算のための技術規格「OpenCL(Open Computing Language) 1.0」が正式発表された(プレスリリース、日経Tech-onの記事[要登録])。 OpenCLはC言語をベースに並列計算向けの拡張やデータ/タスクの協調動作などのためのAPIを追加したもので、マルチコアCPUGPU、Cell、DSPなどの並列プロセッサといった様々なデバイスでの利用が想定されている。 規格の策定にはAMD、NVIDIA、IntelといったCPU/GPUメーカーだけでなくAppleやActivision Blizzard、Electronic Artsといったソフトウェアメーカーや、BroadcomやEricsson、Motorola、Nokia、Samsungといったモバイル通信関連企業も参加しており、来年にもリリースされると言われているMac OS X 1

    at_yasu
    at_yasu 2008/12/10
    おー、出てきましたか。楽しみ:)
  • C-users.jp - 日本のC/C++ユーザのためのハブサイト

    YAPC::Asia 2008でMichael Schwernは「SEOに有効な独自ドメインを取って、もっとPerl初心者が集まりやすいniceなPerlの情報を集めたサイトを作れ!」といったそうです。そして「Perl-users.jp - 日Perlユーザのためのハブサイト」ができました。これはC/C++も同じではないのか。そう思い、c-users.jpドメインを取って、ここにC-users.jpを開始します。平成二十年六月四日 流れに乗っかって、発作的にドメインを取ってサイトだけ立ち上げましたが、当然の如くノープランです。 ポリシー的な物 C及びCの拡張言語(C++C++/CLI、Objective-C、Cg、SystemCなど)の話題について広くキャッチアップしたいと思います。 後継言語(C#、Dなど)については関与しません。 Win32 APIやDirectXなどの話題があっ

  • ついカッとなって実行バイナリにパッチ - memologue

    とある都合で、ソフトウェア開発の際にソースコードの提供されていないツールを使うことになりました。x86なLinux上で動く、ちょっとしたtoolchainです。が、そのツールの処理速度が遅く、入力サイズに対して、結果が出てくるまでの時間がどうもO(N^2)かそれよりひどい。遅くてイライラするので、昨晩ついカッとなってパッチを当てました。そのメモです。また、ありがちな事態(?)な気もするので、みなさんどうしてるのかなー的なお伺いも兼ねて。 ボトルネックの特定 そのツール(以下A)の実行バイナリはstripされておらず.symtabが残っていました。のでまず、どこが遅いのかgoogle-perftoolsをLD_PRELOADしてそのソフトウェアを実行し、実行プロファイルを取りました。すると、嬉しいことにある一つの関数(以下F)で全体の90%以上の時間を消費していることがわかりました。関数Fは

    ついカッとなって実行バイナリにパッチ - memologue
  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • 1