Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

c-langに関するudzuraのブックマーク (63)

  • 高機能なマイナープログラミング言語Valaについて

    記事は、現時点ではマイナーだが優れたプログラミング言語Valaについて書かれたものとなる。 元の記事は2009年4月に書かれたが、2つに分かれていた記事を統合した上で多数の記述を追加している。ただし、言語の仕様や機能などを全て扱うことはできないため、内容が偏っていたり不足していたりする可能性がある。 Python言語の基文法や型などに関する個人的まとめValaについてVala言語の機能(一部)Vala/Genieで使用可能なライブラリコードのコンパイル簡単なコード例ValaについてVala言語は、C言語でオブジェクト指向プログラミングを行う仕組みを提供するGObjectライブラリ[1]を用いてC#言語に近い文法で記述できるオブジェクト指向言語Valaのコンパイラ[2]を用いると、Vala言語もしくはGenie言語という独自言語によって記述されたプログラムからC言語の中間コードを作り、そ

    udzura
    udzura 2017/04/07
    いろいろ出てくるな.....
  • Cのプロダクトを作るためにやったこと - Tomohisa Oda

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

    Cのプロダクトを作るためにやったこと - Tomohisa Oda
    udzura
    udzura 2017/03/07
    Criterion良さそう
  • RustだけでRuby native extensionを書く

    この記事は Rust Advent Calendar 2015 10日目の記事です。 Rustは共有ライブラリを生成してCのプログラムとリンクすることが可能らしいので、Rubyからrequireしてちゃんと動くnative extensionをRustだけを使って書いてみる。 既に似たようなことをやっている例はあるんだけど、Cファイルを用意してそこからRustを呼び出す形になっているので、今回はCを書かずにやってみたいと思う。ちなみに実用性は特に無いのであしからず。 Dylib Rustで共有ライブラリを作成してCから呼び出すには、以下のようにすればよい。 #![crate_type = "dylib"] #[no_mangle] pub extern fn rust_test(s: i32) { println!("rust_test {0}", s); }

    RustだけでRuby native extensionを書く
    udzura
    udzura 2017/03/06
    このサンプル便利
  • CからRustの構造体を使う - Qiita

    RustからCを使う ここを読んで下さい CからRustを使う 上記のドキュメントもほんの少し触れているが、関数が使えるようになるだけ Rustの構造体使いたい 純粋なCだとあまり恩恵がなさそうだが、Objective-CやSwiftC++とのブリッジングを想定している Rustのコード use std::mem; /// Rustの構造体 pub struct Greeter { name: String, } impl Greeter { fn new(name: &str) -> Greeter { Greeter { name: name.to_string() } } fn greet(&self) { println!("Hello, {}.", self.name); } } /// ヒープ領域からメモリを確保してCのポインタ型を返す #[no_mangle] pub un

    CからRustの構造体を使う - Qiita
    udzura
    udzura 2017/03/02
    なるほどな...
  • Headersroot: headers — Documentation by YARD 0.9.20

    Generated on Wed Nov 27 22:35:12 2019 by yard 0.9.20 in mruby mode 0.3.0 (ruby-2.5.5).

  • GitHub - benhoyt/inih: Simple .INI file parser in C, good for embedded systems

    inih (INI Not Invented Here) is a simple .INI file parser written in C. It's only a couple of pages of code, and it was designed to be small and simple, so it's good for embedded systems. It's also more or less compatible with Python's ConfigParser style of .INI files, including RFC 822-style multi-line syntax and name: value entries. To use it, just give ini_parse() an INI file, and it will call

    GitHub - benhoyt/inih: Simple .INI file parser in C, good for embedded systems
    udzura
    udzura 2017/02/14
    これシンプルでいいなー
  • unlikelyマクロについて - SIGSEGV

    MySQLのソースやLinuxカーネルのソースを眺めるとしばしば出てくる、 if (unlikely(a == b)){ .... }みたいな構文ですが、これの解説。 このunlikelyはマクロ関数で、引数として渡された条件がほとんどの場合に偽になることをコンパイラに教えるものです。コンパイラはこの指示に従い、条件が成り立たない場合に有利となるアセンブラコードを出力します。unlikelyの対はlikelyです。 具体的にどういうマクロかというと、MySQLのソースにおいては include/my_global.h にて下記のように宣言されています #if !defined(__GNUC__) || (__GNUC__ == 2 && __GNUC_MINOR__ < 96) #define __builtin_expect(x, expected_value) (x) #endif #

    unlikelyマクロについて - SIGSEGV
    udzura
    udzura 2017/01/30
    知らなかった...
  • テクノとしてのC言語、あるいはC99的書き方のすすめ - Qiita

    以下、読書感想文としてのポエムである。 21st Century C1(以下 21CC と略)という、いささか変わったがある。C言語のプログラマの多くが1980年代の知識に固まってしまっているのを打破しようと書かれたなのだろうと、ざっと自分が1st editionを読んだ感じ2では思っている。C89 aka ANSI Cがいまだに標準だと思っている人3には、おすすめかもしれない。 「Cはパンクロックだ」 21CCでは C is Punk Rock 4 という表現が書籍の最初と最後に出てくる。このパンクロックが何であるかについての議論はしない5。ただ、パンクロックの例えが「シンプルかつ荒削りだけど力強い」言語に対するものであるというのは、個人的なパンクロックへの印象、そしてC言語の特徴をふまえれば良くわかる。 私も気がつけば30年ぐらいC言語で仕事をしていたりする。そして現在の2015年

    テクノとしてのC言語、あるいはC99的書き方のすすめ - Qiita
  • _Static_assert とは - とくにあぶなくないRiSKのブログ

    C言語の次期規格 C1X で追加される _Static_assert キーワード。こいつは一体何者で,またどのように使うのでしょうか? 制約のチェック プログラムの正しさを確認するためにチェックコードを入れることがあります。まずどのようにチェックするか,またどの時点でチェックするのか考えてみたいと思います。その流れで _Static_assert の必要性を見つけてみましょう。 assert による実行時のチェック 次のコードを見てみましょう。 #include<assert.h> #include<stdio.h> // 文字列 s を出力する。改行を付け足すことはしない。 // 事前条件:s は NULL ではない static void put_string(const char* const s){ assert(s); printf("%s", s); } int main(){

    _Static_assert とは - とくにあぶなくないRiSKのブログ
  • mruby-passwd のサンプルからわかるmgem(あと、C言語)を書くときの罠 - ローファイ日記

    mruby advent calendar 8日目 としてやっていかせていただきます。7日目はけいぞうくんのすごい記事でした。 keizobookman.hatenablog.com さて先日、mrubyのgemをコーディングするスクリーンキャストを撮り、実際にコードを残しました。 udzura.hatenablog.jp ですが、mrubyのお作法的な点、後そもそもの題材である getpwnam_r(3) とpasswd構造体の扱いについて不適切なところがあった点の2ヶ所で、補足しないといけないところが見つかりましたので、今回記事を書かせていただこうと思います。 まずは、先日の時点での最終形としたコードを眺めてみましょう。 先日のコード なお、記事の環境としてはLinux、x86_64 の Ubuntu Xenial、gcc 5.4.0-6ubuntu1~16.04.4 を利用していま

    mruby-passwd のサンプルからわかるmgem(あと、C言語)を書くときの罠 - ローファイ日記
    udzura
    udzura 2016/12/08
    いろいろ追記して勉強になる感じになりました...。valgrind便利
  • Amazon.co.jp: 高速化プログラミング入門: 北山洋幸: 本

    Amazon.co.jp: 高速化プログラミング入門: 北山洋幸: 本
  • mruby gemを作るスクリーンキャストです - ローファイ日記

    mruby advent calendar 2016 5日目の記事なのですが、公開が遅れ失礼します。 前日の様子です。 qiita.com 先日の Fukuoka.rb で、mrbgemをライブコーディングで作る、という一芸をやったのですが、とはいえ特に映像などを記録するでもなくという感じでした。 せっかくですのでもう少し違う実装で再現してスクリーンキャストを撮ってみました。公開します。 www.youtube.com struct passwd をバックデータに getpwnam(3) をmrubyでラップしたgemを作っています。 ただ、このスクリーンキャストのままのコードだと、 getpwnam(3) の返り値を free しかねないということに気づいてしまったので、デモはデモとして、より適切であろう最終形を gist に残しておきます。 mruby advent cal 2016

    mruby gemを作るスクリーンキャストです - ローファイ日記
    udzura
    udzura 2016/12/06
    「mgemを作る流れ」をもっと実際の作業に寄せてみた
  • (nim-fuse) 調査: FUSEのコード調査 - テストステ論

    ドキュメントを読む fuse_mainを呼ぶ fuse_mountはソケットの組を作る. FUSE_COMMFD_ENVにその片方を設定して, fusermountを実行する. fusermountは/dev/fuseをオープンして, fuse_mountにそのハンドル(fd)を送り返す. fuse_mountは, そのハンドルをfuse_mainに返す. 最後にfuse_loopを呼び出す. fuse_loopは/dev/fuseからファイルシステム呼び出しを読み出し, fuse_operationsを呼び出す. (before calling fuse_mainは意味不明) 結果は/dev/fuseに書き戻されて, system callに返される. When your user mode program calls fuse_main() (lib/helper.c), fuse_m

    (nim-fuse) 調査: FUSEのコード調査 - テストステ論
  • C言語を独学で習得するのに適した入門書を探してまとめてみた件について - 旧ID:itiriのブログ

    ※2017年11月8日、「やさしいC 第5版」「かんたん C言語」「ふつうのLinuxプログラミング」「C言語による スーパーLinuxプログラミング」「モダンC言語プログラミング」のリンクを修正。 Amazonで評判が良いを、発売日順に並べてみた。 入門書 脱 初心者 アルゴリズム リファレンス Linuxプログラミング プログラミング技術 デバッグ その他 厳選6冊 その他 Webサイト 入門書 『C言語改訂版1、2』を読んだ後に『独習C』を読めばだいたい理解できると思う。 やさしいC 第5版 (「やさしい」シリーズ) 作者: 高橋麻奈出版社/メーカー: SBクリエイティブ発売日: 2017/06/14メディア: 単行この商品を含むブログを見る価格2,700円高橋麻奈さんのはどれも分かりやすい(『やさしいJava』とか、『やさしいXML』とか)。ただし内容は薄いので、他のプログラ

    C言語を独学で習得するのに適した入門書を探してまとめてみた件について - 旧ID:itiriのブログ
    udzura
    udzura 2016/12/02
    絶版だらけだ…
  • バイナリレベルでの調査に使用するLinuxコマンドメモ - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    バイナリレベルでの調査に使用するLinuxコマンドメモ - Qiita
  • C言語、知ってるつもり? | POSTD

    「Cならわかるよ」というプログラマーは大勢います。確かにCの文法はよく知られているし、44年の歴史を誇るわけだし、あいまいな機能に悩まされることもありません。簡単ですよね! あ、「Cならわかるよ」と 言うだけなら 簡単ですよねっていう意味ですよ。学校で習った人もいるだろうしお仕事で使ったことがある人もいるでしょう。覚えることもそんなに多くないし、完璧だという人もいるかもしれません。いいでしょう。でも、Cって実は、そんなにシンプルではないのです。 嘘だと思うなら、今から挙げる問題を解いてみましょう。たった5問です。基的にはどれも同じで「戻り値は何ですか?」という問題ばかりです。四択方式で、どの問題も正解はひとつだけです。さあどうぞ。 第1問

    C言語、知ってるつもり? | POSTD
    udzura
    udzura 2016/11/30
    最後の段落の重み
  • UNIX/Linux gccによるC共有ライブラリの作成 webzoit.net

    gccとはbash同様FSFのGNUプロジェクトによって開発されたコンパイラでGNU C Compiler、後にC/C++/Objective C/FORTRAN/Java...といった各種プログラミング言語に対応したことからGNU Compiler Collectionとして知られています。 コンパイルの過程 コンパイラとコンパイルではUNIX/Linux及びシェル環境におけるコンパイラとコンパイルについてccとgccの関係、続くUNIX/Linux C コンパイル過程では、実行ファイルができるまでに具体的に何が行われているのかについて、その流れを追いました。 そして実際にgccでコンパイルと中間ファイルの残し方、更にstatic library/スタティックライブラリ/静的ライブラリ(拡張子.a/archive/アーカイブ)ファイルの作成とリンクによる実行ファイルの作成をしてみました。

    UNIX/Linux gccによるC共有ライブラリの作成 webzoit.net
    udzura
    udzura 2016/11/16
    魔法がいろいろ書いてある...
  • GitHub - redis/hiredis: Minimalistic C client for Redis >= 1.2

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - redis/hiredis: Minimalistic C client for Redis >= 1.2
    udzura
    udzura 2016/11/02
    ちょーどblockingなSUBSCRIBEのサンプルがある
  • C 言語で行う Web フロントエンドプログラミング - builderscon tokyo 2016

    Abstract emcc helloworld.c -o helloworld.html C や C++ のプログラムを書かれたこのある方ならば、 このコマンドを見たときに、目を疑うはずです。 そうです。このコマンドを実行すると、C++ で書かれたプログラムをコンパイルして JavaScript ファイルと、それを動作させる HTML ファイルが生成されます。 生成された HTML は、手を加えることなくブラウザ上で動作します。 すでに Web は、x86 や ARM と同じく、C や C++ コンパイラのターゲットアーキテクチャとなっています。 それぞれのアーキテクチャに向けてビルドするのと同じように、Web に対して C / C++ のコードをビルドできるのです。 実現したのは、コンパイラに代表されるビルドツールに対する Web コミュニティの貢献と、 各ブラウザベンダーによる Ja

    C 言語で行う Web フロントエンドプログラミング - builderscon tokyo 2016
    udzura
    udzura 2016/10/28
    なるほど、
  • 【みんな】Caffeより手軽かつ高速! Cで書かれた必要十分な深層学習フレームワーク darknetを試す【意外と知らない】:電脳ヒッチハイクガイド:電脳空間カウボーイズZZ(電脳空間カウボーイズ) - ニコニコチャンネル:生活

    チャオ! オレだ。 深層学習を手軽に使いたいというニーズは日に日に高まっているはずなのに、ガクシャ先生どもと来たら、やれMatlabだ、やれPythonだのと軟弱言語の話しかしやしねえ。どこかに気骨溢れたナイスガイはおらんのか! と思ったら、居た。 それが今回紹介するdarknetだ。 darknetという名前から想像する異常にダークである。 バーン どうよこのダークネス感 いまどき黒いページというのは珍しい。 そして無駄に凝った魔法陣のようなロゴ。ダークだ。 しかしダークネット、厨二満開とせせら笑っていられるのもいまのうちだ。 このダークネット、実に必要十分な機能を最短で試せる超絶優れたツールなのである。 CaffeやTensorFlowほどの知名度はないが、実用性皆無なTensorFlowに比べてdarknetはものすごく実用的。Cが分かる人ならばこれほど使いやすいものもちょっと他にな

    【みんな】Caffeより手軽かつ高速! Cで書かれた必要十分な深層学習フレームワーク darknetを試す【意外と知らない】:電脳ヒッチハイクガイド:電脳空間カウボーイズZZ(電脳空間カウボーイズ) - ニコニコチャンネル:生活
    udzura
    udzura 2016/10/06
    Cだ、これはmrubyでラップするしかない…