タグ

C言語に関するkorinのブックマーク (6)

  • Cのプロダクトを作るためにやったこと - Tomohisa Oda

    今年に入って Octopassというプロダクトを公開しました。それは、Linuxのユーザや権限をGithubのTeamと連携して運用を楽にするというツールでした。色んな方々のご協力により、多くのRetweetやはてぶいただいたことで、ある程度、Octopass を必要としそうな人の目に触れたのではないかと思っています。(Githubのスター数が少ないのは今後の課題)その中で「すごく便利」「ぜひ導入したい」というフィードバックは、継続して機能追加していくというモチベーションにつながっていて、非常にありがたいです。 さて、この Octopass は、Linuxユーザ名前解決をするためにの glibc の libnssモジュールをCで実装しています。cgoやその他の言語でShared Objectを吐き出しても良かったのですが、それだと技術的挑戦が足りないとして、触れてこなかったCに挑戦しました

    Cのプロダクトを作るためにやったこと - Tomohisa Oda
  • C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog

    はじめに こんにちは、Go界のシャールト・コプリーです。気がついたら最後のエントリから3ヶ月も経ってました。 Goを始めると「なんでこういう書き方になってるんだろう」とか、「そもそもなんでこういう仕様になってるんだろう」とか思うことがちらほらあると思います。これは大いにGoの作者の一人であるRob Pike氏の思想に依るところがあるのが見受けられます。彼のプログラムに対する考え方が25年前に公開され「Pike Style」として知られていますが、いまもその考え方は大きくは変わっていないと思われます。せっかくなので翻訳しました。文はC言語に関する文章ですがその質は言語に依らないものだと思います。 Notes on Programming in C (追記)25年前なのでコンパイラの動作に依存する部分(includeに関する記述)などは古い部分もありますが、プログラミングスタイルに関する部

    C言語でプログラミングする際の覚書(Notes on Programming in C) - YAMAGUCHI::weblog
  • 学習用C言語開発環境 Ver 0.1.13 - 苦しんで覚えるC言語

    「ブラウザで動く C言語実行環境」 のご紹介 ・もっと手軽にC言語を始めたい ・スマートフォン、タブレット、Macでも、手軽にC言語を始めたい という声にお答えして、C言語開発環境のブラウザ版を用意しました! ブラウザから今すぐC言語のプログラミングが開始できます。 一発インストール ファイルサイズはわずか3MB。たったそれだけで、エディタ、コンパイラ、実行環境、プログラミング学習に必要なものがすべて揃います。 長時間のダウンロードも、面倒な設定も、プラグインのインストールも、何もいりません。 あなたは今すぐにプログラミングを始めることができます! 自動プロジェクト あなたがやるべきことはプログラムの入力だけ! 起動すれば、プロジェクトが自動的に作成され、自動的に複数のソースファイルを認識します。 ビルドにまつわる面倒な設定はエディタが自動管理。プログラミングに集中できます。

    学習用C言語開発環境 Ver 0.1.13 - 苦しんで覚えるC言語
  • Phactory: C言語:メモリ破壊検出ツール electric fenceの使い方

    C言語に限らず、プログラム開発においてデバッグに多くの時間がかかるバグの一つとして、 メモリ破壊系バグが挙げられます。このバグは主に確保した配列を飛び越えてデータを書き込むことで 発生します。このようなプログラムは単純にprintf()等でシーケンスでバッグをしても、入力の種類に よって停止する位置が変わったりするので、まったくの無力です。逆にgdbでひとつひとつステップごとに 様々な変数やシーケンスをチェックしだすと、ものすごい時間を浪費します。 そんなとき、大活躍してくれるのがメモリ破壊検出ツールです。 いろんな検出ツールがあると思いますが、C言語で実装しているならば、手軽で実績もある electric fenceを試してみてください。 このツールは、プログラム中の動的配列(malloc等で確保した配列)の開始位置・終了位置を覚えて これらの配列の領域をポインタ等が踏み越えたときに

  • 安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)

    UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されますが、シグナルハンドラで行える処理には制約があり、これを無視したコードを書くと脆弱性につながる恐れがあります。今回はシグナルハンドラの制約に関するルールを見てみましょう。 シグナルハンドラの制約 UNIXなどPOSIX準拠のOSでは、割り込みや例外を抽象化した「シグナル」と呼ばれる仕組みを用いてプロセスに(非)同期イベントが通知されます。ユーザが[Ctrl]-[C]キーを押してプログラムを中断しようとしたり(SIGINT)、整数オーバーフローが発生したり(SIGFPE)すると、それらのイベントに対応するシグナルがカーネルからプロセスに対して通知されるのです。プログラマは、これらのシグナルを受信した時に特定の動作を行わせる「シグナルハンドラ」を書くことが

    安全なシグナルハンドラを実装するには ――C/C++セキュアコーディング入門(4)
  • Cコンパイラの創り方 - にがつうさぎ

    はじめに CQ出版社のDesign Wave Magazine 11月号に掲載されている第11回LSIデザインコンテストの課題は命令数が9つのとても小さいRISCプロセッサです.このRISCプロセッサのCコンパイラを作ります.命令数9つと限られていてメモリ空間もデータと命令にそれぞれ64ワードずつしかありませんから,汎用のCコンパイラではなく,1から100までの整数の和を計算する機械語を生成できればよしとします. なぜコンパイラを作るのか. ソフトウェアの開発速度を劇的に向上できるからです. 例えば先ほどの1から100までの和の合計を求めるコードを,アセンブラとC言語で書いてみて,記述にかかる時間と書いたコードの読みやすさを比較するとよく分かります.C言語はアセンブラと同等の効率のコードを読みやすく記述することができます. また1からプロセッサを設計するということは,ソフトウェア開発は設計

    Cコンパイラの創り方 - にがつうさぎ
  • 1