タグ

Cに関するsuginoyのブックマーク (54)

  • Top | 間違ったコードはコンパイルできないようにする

    ハンガリアン記法に関する間違った意見をよく目にする。Making Wrong Code Look Wrong (間違ったコードは間違って見えるようにする)の記事では、ハンガリアン記法でもアプリケーションハンガリアンは有用だと主張している。もちろん、わかりやすい変数名を使用することには賛成だが、変数名を人間が目で見て正しいかどうかを判断しなければならないようなルールに価値はないと確信している。ワインバーグではないが、計算機が得意なことは計算機にやらせればよいのであって、人間がやることではないのだ。ソフトウェア工学的に正しいのは、間違ったコードはコンパイルエラーになるようにする、ということだ。 アプリケーションハンガリアンが善だと思い込んでる素人は、この続きを読まずにマンガ喫茶にでも行って時間を過ごして欲しい。 当のソリューションは静的解析で正しさを証明すること 前述の記事では、アプリケーシ

  • [LT] Gitの作り方

    YAPC::Asia Tokyo 2015 (c) CC-BY-NC http://yapcasia.org/2015/news/08/lightning-talks-aug-21.html

    [LT] Gitの作り方
    suginoy
    suginoy 2015/08/29
  • Build Your Own Lisp

    If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you.In just a few lines of code, I'll teach you how to use C, and together, we'll start building your very own language.Along the way we'll learn about the weird and wonderful nature of Lisps, how to develop a real-world project, concisely solve problems, and write beautiful code!

    Build Your Own Lisp
    suginoy
    suginoy 2015/08/18
  • Linkers and Loaders

    These are the uncorrected manuscript chapters for my Linkers and Loaders, published by Morgan-Kaufman. See the book's web site for ordering information. The text in these files is the unedited original manuscript. M-K has fine copy editors, who have fixed all the minor typos, spelling, and grammar errors in the printed book, but if you come across factual errors I'd still appreciate help getting a

    suginoy
    suginoy 2015/04/25
  • Linus氏のC++に対する最近の否定的見解 | taro-nishinoの日記 | スラド

    最近、Linus氏はまたしてもReal World TechnologiesのModerated DiscussionsフォーラムでC++に対する否定的見解を投稿したことは皆さんも御存知でしょう。主要な投稿は以下の5つです。 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110563&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110577&threadid=110549&roomid=2 http://www.realworldtech.com/forums/index.cfm?action=detail&id=110618&threadid=110549&roomid=2 ht

    suginoy
    suginoy 2015/03/15
    “コミュニケーションを避けるための一番の方法は、ある"文化"を持つことだ。それは別の言い方で、"人は知っているので、書下ろしたり、話す必要の無いルールのコレクション"とも言える。”
  • On Loving C.. 日本語訳

    以下の文章は、Michael Feathers による On Loving C.. の日語訳である。 文中の固有名詞などについて理解の助けとなるよう Wikipedia へのリンクを加えさせてもらった。 認めなければならないことがある。私は C を愛している。しばらくはそれを意識していても、忘れがちだ。Ruby、Haskell、OCaml、C++Java、そして C# に心移りしたこともある――今も多くの言語に時間を割いているが、C の元に戻ってくると、私は故郷に帰ったような気持ちになる。 私は何十年も前に Kernighan と Ritchie のをパラパラとめくったときのことを覚えている。C にはとても欲求不満を感じた記憶もあるが、とても満足を与えてくれたことも覚えている。C にはヘンなところがあるが、振り返ってみると、それは多くの他の言語のヘンさに比べれば不可解なところはずっと

    suginoy
    suginoy 2015/01/01
  • 「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみた - Qiita

    Help us understand the problem. What is going on with this article? 「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみました。 原文はこちらです。紹介については許可を貰っています。 How we've made Raptor up to 4x faster than Unicorn, up to 2x faster than Puma, Torquebox とても読みやすい英語ですので是非原文も読んでみてください。 How Ruby app servers work Rackアプリケーションの構成についての紹介と、コネクションをどのように扱うのかについて。 prefork/threadingやBlocking I/OおよびEvent I/Oの組み

    「RaptorはどのようにしてUnicornの4倍、Puma, Torqueboxの2倍の速度を達成したのか」を読んでまとめてみた - Qiita
    suginoy
    suginoy 2014/11/11
  • niw.at — Mac OS Xで動的ライブラリのバージョン違いの警告が出た

    たまに、nokogiri.gemを使っているときに、 WARNING: Nokogiri was built against LibXML version 2.7.8, but has dynamically loaded 2.7.3 と言われて凹むことがあります、というか、先日ありました。原因は多分Mac OS X 10.7.3にしたことなんですがこういう時に何をすればいいのかという話です。 nokogiri.gemはlibxml2を使ったRubyのXML/HTMLパーサーなんですが、ビルド時に利用したlibxml2のバージョンを覚えていて、実行時に違うバージョンを使うと文句を垂れます。というのも特定のlibxml2はバグがアレすぎてnokogiri.gemがまともに動かないのでそれを排除する目的でそういうことをしているんだと思います。 さて、こうなった時には誰が違うバージョンのlibx

  • スクールガールストライカーズの 内製クライアントエンジン

    近年、ハイスペックなスマートフォン、高品質なネットワークが普及し、それによりモバイルゲームの制作手法やそれを取り巻く環境も変化してきました。スクウェア・エニックスでは、そのような環境の変化に対して、日々新たなチャレンジをし続けています。そして、このようなスピード感溢れる業界の流れには、会社の枠を超えた技術情報の共有、交流が欠かせないと感じております。 そこでこの夏、社内のエンジニア・テクニカルディレクターによる最新のモバイル開発の技術情報や社内モバイルエンジン、開発秘話によるセッションをメインに、スクウェア・エニックス モバイル オープンカンファレンスを開催する運びとなりました。また、セッションの後は登壇する弊社スタッフと直接ディスカッションやフリートークができる場を設けております。この機会にスクウェア・エニックスという会社についても、より詳しく知って頂ければ幸いです。 マネージャー・テク

  • ポインタ虎の巻

    ポインタ虎の巻 初級篇~ポインタはなぜ難しいか? C言語を学ぶ上で、ほとんどの人が引っかかり、往々にCの勉強を放棄するきっかけとなるのがポインタである。しかし、ポインタはC言語という特定のプログラム言語だけではなく、コンピュータというものを理解する上で、必要不可欠な重要な機能である。C言語参考書では、ポインタを解説する上で「箱」のモデルを使って解説することが多いが、この虎の巻では、より突っ込んだ具体的な動作を解説することでポインタというものの質を解明して見ようと思う。参考書ではC言語の抽象レベルの上で解説がされるのが通例だが、虎の巻では単純化されたアセンブリ命令を使って具体的に解説する。 初級篇目次 変数とは何か? 疑似アセンブリの定義 文字列の処理 アドレスの取得 ポインタの型 関数呼び出しの手法 構造体とポインタ リスト構造 NEW 二進木 NEW 中級篇~ポインタの高度な技 ポイン

    suginoy
    suginoy 2014/05/04
  • restrictキーワード(ポインタの曖昧性除去)

    キーワード ポインタ, 最適化 これだけは覚えよう 同じ空間を指すポインタをエイリアスと言う エイリアスはない方がいい (同じ空間を指すポインタをなくす) エイリアスって? エイリアス(alias)を辞書で引くと、「別名」と出てきます。 我々が使っているプロセッサは、値を操作するときにはレジスタを使用します(Load/Store architecture)。そのため、C言語やJavaのような高級言語を処理する言語処理系(コンパイラ+リンカ)は、変数に対してレジスタを割り付ける作業を行います。例えば、i = j + kという式がある場合、i→R0, j→R1, k→R2を割り付け、「R1←j (R1にjの内容をロード)」「R2←k (R2にkの内容をロード)」「R0←R1+R2 (R1+R2を計算しR0に結果を出す)」「i←R0 (R0の内容をiに格納)」といったコードを実行します。変数名に

    suginoy
    suginoy 2014/04/17
    “念のためにもう一回メモリからロードしなおす命令”
  • Learn C • Build Your Own Lisp

    Build Your Own Lisp Learn C and build your own programming language in 1000 lines of code! If you're looking to learn C, or you've ever wondered how to build your own programming language, this is the book for you. In just a few lines of code, I'll teach you how to use C, and together, we'll start building your very own language. Along the way we'll learn about the weird and wonderful nature of Li

  • 読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    きっかけはこのツイート。 基礎的なことなんだろうけど理解できてないこと。 読み取り権限のない実行権限だけのファイルってどういう扱いになるんだろう。— ゑぬぽい改@電探が出(ん)たん? (@NPoi) March 27, 2014 実際にやってみるとわかるけど、実行権限だけついてるファイルは実行可能です。でも、「読み込めないのに実行できる」というのは直感に反するような気もしますね。だって、実行するためにはプログラムをメモリに読み込む必要がありますから!ではなぜ実行権限だけのファイルが実行できるのか、その仕組みを解説します。 実行とはなにか、どういう仕組みなのか Linux において実行とは「forkしてexecする」です(そのへんの詳しい話は プロセスさん を読もう!)。 fork も exec もシステムコール(正確には execve がシステムコールで exec はそのフロントエンドだけ

    読み取り権限がなく実行権限だけのファイルが実行できるのはなぜ? - カーネルのソースを読む - - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
    suginoy
    suginoy 2014/03/30
    こういう調査過程がわかる記事はほんとすばらしいな。
  • mrubyを小さくしたり大きくしたりした話 - スペクトラム

    最近mrubyにコミットしているので自分の活動をまとめます。 mrubyを小さくした話 mrubyでは、文字列の扱いはシンプルにchar*を構造体でラップしていました。 struct RString { MRB_OBJECT_HEADER; mrb_int len; union { mrb_int capa; struct mrb_shared_string *shared; } aux; char *ptr; }; そのため1つの文字列毎に、構造体分と文字列分の2回のmalloc/freeが発生していました。 ここでCRubyのRStringを見てみます。 #define RSTRING_EMBED_LEN_MAX ((int)((sizeof(VALUE)*3)/sizeof(char)-1)) struct RString { struct RBasic basic; union {

    mrubyを小さくしたり大きくしたりした話 - スペクトラム
    suginoy
    suginoy 2014/03/15
  • ruby/ruby#495日本語解題

    三行で卜部って口だけ野郎でどうせたいしたもん書けないんでしょ? [1] [2]→ 見せてやんよゴラァ→ ごらんの有様教訓: 陰口は人に聞こえない所で。さすがに名指しはまずい。 どういうパッチかRubyのオブジェクトサイズを変更(大きく)する。そのことにより第一義的にはCPUキャッシュミスヒットが削減される。副次的作用として大きくなった余剰の領域にデータを詰め込めるので中間構造体を減らしてメモリアロケーションが最適化される。それらの総合的な結果として全体に高速化する。 前史とはいえこのアイディア、べつに最近涌いて出たものでもない。というか、俺がまだ大学院でNetBurstと戯れてたころの発想だから、かれこれ7~8年物だな。しかもこの間べつに秘密にしてたわけでもなくて、Rubyのオブジェクトって素数幅でいくなくね?ってのは、わりと口頭では折に触れて言ってたので、聞いたことがある人もいるはずか

    ruby/ruby#495日本語解題
    suginoy
    suginoy 2014/01/11
  • Clang - Wikipedia

    Clang ([ˈklæŋ]:クランのように発音[5]) は、プログラミング言語 C、C++、Objective-C、Objective-C++ 向けのコンパイラフロントエンド英語版)である。OpenMPディレクティブ[6]や、OpenCL C/C++カーネル言語[7]も正式サポートしている。バックエンドにLLVMのコンパイラ基盤を使用しており、LLVM 2.6以降はLLVMのリリースサイクルに組み込まれている。 Clang/LLVMベースの派生プロジェクトとして、RenderScript(英語版)、CUDAのNVCC[8]、ROCm(英語版)のHIP-Clang[9]といった、Cライクなドメイン固有言語 (DSL) を組み込んだGPGPUフレームワークにおけるコンパイラフロントエンドとしても採用されている。 プロジェクトの目標は、GNUコンパイラコレクション (GCC) を置き換えるこ

    Clang - Wikipedia
    suginoy
    suginoy 2014/01/03
  • The 67th Yokohama kernel reading party

    Explaining glibc malloc internals. slide: http://www.slideshare.net/kosaki55tea/glibc-malloc

    The 67th Yokohama kernel reading party
  • lsを読まずにプログラマを名乗るな! - 秀和システム あなたの学びをサポート!

    LinuxMac OS X、BSD、SolarisといったUNIX系OSにおいて最も身近なコマンドであるlsのソースコード解説書です。UNIX系OSを使っているプログラマであれば、誰でもlsコマンドを日常的に使っていることでしょう。実際、lsコマンドを実現しているプログラムは汎用性が高く、大量のデータも処理できるよう作られており、そのソースコードを読み解くことはプログラマの成長にとって大変役立ちます。書は、C言語に習熟している人を対象に、GNU coreutiles 8.21のlsソースコードを解説します。lsのソースコードを読めば、マルチプラットフォーム対応の注意点、大量のデータを可能な限り継続処理する方法、実行性能や利便性とのバランスの取り方がわかります。 【サポートはこちら】→https://www.shuwasystem.co.jp/support/7980html/3943.

    lsを読まずにプログラマを名乗るな! - 秀和システム あなたの学びをサポート!
  • 初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵

    30日でできる! OS自作入門 出版社 : 毎日コミュニケーションズ 発行日 : 2006/3/1 良いです。アカデミックの匂いが良い意味で全くしない。その上での実践的なは日語で他に無いと思います。ガチムチアカデミックの批判にあえて真っ向勝負してるような意欲作です。 正しい知識だの用語だのそんなもんはどうでもいいから手を動かしてやってまえみたいな感じで。こういうのは頭いい人たちから批判されやすいですね。俗物な私にはぴったりでしたが。 書はWindows用のサンプルしかないんですがMac用に整えたので、それ公開するついでに思ったことつらつらと書いときます。 開発環境 Mac サンプルがWindows用なのでいろいろMac仕様にしなきゃいけない(後述) テキストエディタ EmacsだのVimだのなんでもいいので適当に用意 バイナリエディタ Macだと0xEDが良い http://www

    初めてのC言語で『30日でできる!OS自作入門』の通りに初めてのOSを作ってみた - 三等兵
    suginoy
    suginoy 2012/07/30
    いつかじっくりやりたいなーとおもいつつ数年経つなぁ。
  • MySQL/MariaDBにバグ、256分の1の確率で間違ったパスワードでも認証されてしまう | スラド セキュリティ

    特定のバージョンのMySQLおよびMariaDBにおいて、「256分の1の確率で、パスワードが間違っていたとしてもパスワード認証を突破できてしまうう」バグが発見された(SecLists.Org、SecManiac)。 このバグを使用すると、300回程度のアクセスを試みるだけでrootを含む任意のユーザーでのログインが可能であり、事実上パスワード認証が意味を成さなくなってしまうとのこと。 ただしこれらの影響を受けるビルドは少なく、多くの公式ベンダが提供するビルドでは問題はないそうだ。 対象となるMariaDBおよびMySQLのバージョンは5.1.61、5.2.11、5.3.5、5.5.2。こただしこの問題が発生するか否かはmemcmpの実装によって異なり、GCCビルトインのものやBSDのlibcのものについては安全だが、LinuxのSSE最適版glibcに含まれるmemcmpについては安全で

    suginoy
    suginoy 2012/06/13
    Mariaも256回アタックすれば落ちる。