※このまとめに含まれるプログラムは一種のパズル的な遊びです。 くれぐれも用法用量を守った上で正しくご利用ください>< 実用するならば、“言うまでもなく” if か ?: を利用すべきです。 やばい連中に喧嘩を売ってしまった……。 続きを読む
LLVM Project Blog: What Every C Programmer Should Know About Undefined Behavior #1/3 LLVM Project Blog: What Every C Programmer Should Know About Undefined Behavior #2/3 LLVM Project Blog: What Every C Programmer Should Know About Undefined Behavior #3/3 コンパイラ基盤 LLVM のブログで、未定義の動作という C 言語のダークサイドについての記事が3回シリーズで公開されている。 C 言語で未定義の動作を実行したら、「鼻から悪魔が飛び出しても文句が言えない」というジョークは有名で……いや、そんなのを知ってるのは年寄りくらいか(参考:nasa
株式会社きじねこは大阪のソフトウェア開発会社です。組込み系・業務系のプログラム開発から電子回路の設計までおまかせください。 これも根が深い迷信です。この迷信を根拠に、scanf は使うべきではないという人も大勢います。おそらくこういうことでしょう。 char s[10]; scanf("%s", s); 確かにこれでは、ユーザーが10文字以上入力した時点で未定義の動作を引き起こしてしまいます。しかし、これは書式指定が不適切なために発生する脆弱性であって、scanf の問題ではありません。 バッファオーバーランを回避するには次のようにします。 char s[10]; scanf("%9s", s); これで差し当たっての問題はなくなりました。 さて、熱心な迷信の信者は、何とかして scanf の名誉回復を阻むために、巧みに論点のすり替えを行いながら、scanf を貶めようとすることでしょう。
2010年07月26日18:30 カテゴリMath C - で私も素数を数えてみた 世間は夏休みだそうだし、連日の猛暑で体調も底だし、というわけで私も素数を数えてみた。 10兆までの素数のリストを作ってみませんか? - 記者の眼:ITpro もしあなたがプログラマだったら、プログラムを書いて10兆までの素数のリストを作ってみてほしい。情報システムの開発に携わる人であれば、10兆までの素数のリストを出力するシステムの見積もりを考えてみてほしい。費用はどれくらいかかるか、納期はどれくらいか、あなたはどんな答を出すだろうか。仕様書はうまく書けるだろうか。 プライムナンバーズ David Wells / 伊知地宏監訳 / さかいなおみ訳 [原著:Prime Numbers: The Most Mysterious Figures In Math] といっても原田記者と同じように書いても芸がないので
ちょっと使えるかどうか調べた時に思ったこと。 libmemcached/connect.c /* libmemcached will always use nonblocking IO to avoid write deadlocks */ int flags; do flags= fcntl(ptr->fd, F_GETFL, 0); while (flags == -1 && (errno == EINTR || errno == EAGAIN)); unlikely (flags == -1) { return MEMCACHED_CONNECTION_FAILURE; } else if ((flags & O_NONBLOCK) == 0) { int rval; do rval= fcntl(ptr->fd, F_SETFL, flags | O_NONBLOCK); whil
http://github.com/tokuhirom/p5-module-install-forc Module::Install のアーキテクチャを利用した configure/SCons 等のサブセットをつくりました。 記法は SCons を参考にしており、Rake のような黒魔術的でとっつきにくい記法ではなく、シンプルでわかりやすい記法になっています(もちろん主観ですが、Rake の記法は Rake を知らない人にとって非常にとっつきにくく、見通しがわるいというのが個人的見解です。慣れても見通しがいいとはおもいませんが。。。)。 Perl Monger がちょっとした C のコードを書くときに便利なのではないかとおもいます。Module::Install をつかってるので inc/ もいっしょに配布すれば、perl5.8.0 以上さえあればうごくということになります。便利です。 最
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog こんにちは、ショッピング事業部開発部の吉野です。 Yahoo!ショッピング開発部では新人エンジニア向けにコマンドのソースコードを読むことを奨励しています。 その初期の題材として、lsコマンドがよく挙げられます。 今回は「lsコマンドをハックしてみよう」と題し、lsコマンドについてお話しさせていただきます。 突然ですがエンジニアの皆さん、lsコマンドのソースコードを読んだことはありますか? 読んだことのない方はぜひ一度、目を通しておくことをおすすめします。 意外と知られていませんが、lsはcd,pwdなどのコマンドと違いシェルの組み込みコマンドではありません。 一口にlsと言っても、複数のソースコードが存在します。 代表的なのはGN
みんな大好きなmemcached。今日はBrian AkerのC言語用クライエントライブラリについて書きたいと思います。日本語の情報がとても少なく、ドキュメンテーションも英語だけという事で興味はあるけど手をつけていないという方のお役に立てれたらなと思います。 本題の前に why libmemcached? 既にlibmemcacheが存在するのに何故、libmemcached?かと言うと理由の一つは最近libmemcacheの開発が止まったからです。本家ではそれが理由でlibmemcacheではなくlibmemcachedを推奨してますね。又、効率的なメモリ使用、Consistent Hashing、様々なハッシュアルゴリズム、新しいオペレータに対応している等という宣伝文句があります。apr_memcacheというライブラリも存在しますが自分は使った事がないためノーコメント。 ただ、推奨さ
次のようなプログラム test.c について考える: #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <string.h> struct test { int32_t len; int8_t buf[16]; }; int main(int argc, char *argv[]) { struct test *p = malloc(sizeof(struct test)); int8_t buf[16]; p->len = sizeof(p->buf); bzero(p->buf, p->len); printf("0x%lX-0x%lX => 0x%lX\n", (long)p->buf, (long)p->buf+p->len-1, (long)buf); bcopy(p->buf, buf,
http://mkosaki.blog46.fc2.com/blog-entry-416.html このへん見ててなんか前なんかの拍子に OOM killer をながめたのを思い出しました。場所は mm/oom_kill.c 。 こんなかの badness() で各プロセスのメモリに関しての危険度を調べてるんだけど、さっきの switch でどの最適化使うか、って部分もそうなんですが、こういうヒューリスティックスの塊を見るのは面白いなぁと思いました。 例えば一番最初の /* * swapoff can easily use up all memory, so kill those first. */ if (p->flags & PF_SWAPOFF) return ULONG_MAX; とかはああなるほどねえと。 PF_SWAPOFF ってのは swapoff(2) を発行したプロセスに
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く