タグ

cに関するkenjiro_nのブックマーク (154)

  • 侍エンジニア塾のC言語のサンプルがヤバすぎる。

    C言語はもうかれこれ10年くらい書いていないけど、流石にこれはヤバい。 正直な感想として、ブランド毀損するくらいの危険性をはらんでいると思う。 当該記事からコピーしてきた。 #include <stdio.h> #include <stdlib.h> // 構造体の宣言 typedef struct { int num; char *str; } strct; int main(void) { // 実体を生成 strct *entity; // 動的メモリの確保。確保したメモリをstrct型ポインタにキャスト。 entity = (strct*)malloc(sizeof(strct)); // メンバの初期化 entity->num = 0; entity->str = (char*)malloc(sizeof(32)); // メモリに文字列を代入 sprintf(entity->s

    侍エンジニア塾のC言語のサンプルがヤバすぎる。
  • JNI:Java Native Interface

    JavaからC/C++言語を呼び出す、またはその逆の方法として、JNI(Java Native Interface)というAPIが提供されています。記事では、JavaからC/C++言語をネイティブメソッドとして呼び出すコードとそのコンパイル・リンク・実行手順、およびC/C++言語からJavaを呼び出すコードとそのコンパイル・リンク・実行手順を記します。 JNIに必要なもの JNIは、Javaで記述する部分とC/C++で記述する部分があります。Java側はJDKがあればよいのですが、C/C++側はC/C++コンパイラが別途必要となります。 Windows環境で必要なもの Windows環境のJavaVMはネイティブメソッドをDLL(Dynamic Link Library)という形で用意されていないといけないので、DLLを構築できるC/C++コンパイラが必要となります。 Windows環境

  • JNIより簡単にJavaとC/C++をつなぐ「JNA」とは(1/4)-@IT

    インターネットの普及に加えて、リッチクライアント/RIAの発展とともに、アプリケーションの形態は、C/S(クライアント/サーバ)システムから、Webアプリケーションシステムにシフトしています。一般の情報発信システムだけではなく、企業の基幹情報システムまで、盛んにWebアプリケーションで構築するようになりました。 この変化の主役であるといわれる、Java技術は、Webアプリケーションシステムの発展とともに、ネットワークの親和性や、プラットフォーム適用の多様性で、広く受け入れられて、Webアプリケーションシステム開発の基盤技術になっています。 これまでのC/Sシステムでは、サーバロジックはC/C++で実装されるケースが一般的でした。C/SシステムからWebアプリケーションシステムにシフトする際に、Java技術を導入することを決めた場合、Java技術で、すべて新規開発するのは1つの選択肢ですが、

  • TechCrunch

    [A version of this piece first appeared in TechCrunch’s robotics newsletter, Actuator. Subscribe here.] Earlier this month, Google’s DeepMind team debuted Open X-Embodiment, a database of robotic

    TechCrunch
    kenjiro_n
    kenjiro_n 2017/07/18
  • C言語初心者がQiitaユーザー向けインスタンス「Qiitadon」でC++を勉強してみた

    先週、「マストドン飽きた」という記事を書いたら、記事を読んだ人から「超巨大インスタンス以外のインスタンスに入ること」を勧められた。その人いわく、小規模インスタンスではユーザーはローカルタイムラインで「チャット」をしており、誰もフォローしなくてもタイムラインで交流が持てるのがMastodon(マストドン)の最大の特徴らしい。トゥートとツイートでは、全く異なるのだという。 実際に規模の小さいインスタンスに行くとそのおもしろさが分かるというので、どのインスタンスに入ろうか迷っていた。すると、5月29日にQiitaのユーザー向けインスタンス「Qiitadon」が試験的に公開されたとの情報が。ここに決めた! Qiitadonの最大の特徴は、コードブロック記法とハイライト機能があること。Markdown記法と同様にコードを「```」で囲むと投稿がコードブロックとして認識・表示される。 Qiitadon

    C言語初心者がQiitaユーザー向けインスタンス「Qiitadon」でC++を勉強してみた
  • CUDAを使ったGPUプログラミング超入門 - Qiita

    ゼロから始めるGPU Computing http://www.gdep.jp/page/view/248 一般的に数倍~100倍以上の速度と言われている 補足:なぜ演算性能が高いのか? GPUでは、CPUに搭載されている分岐予測・投機実行 アウトオブオーダーが簡素化されており、その分、コア数を増やすことができる。 分岐予測・投機実行とは? 条件分岐した際の処理を前もって実行しておくこと。 過去の実行履歴から実行される可能性の高い命令を実行しておく。 [イメージ] ---------------------------------------------------- arr = [1, 3, 5, 7, 8]; for (elm as arr){ if(elm % 2 == 1){ echo "odd"; //奇数が続くためCPUは事前にこの処理を予測し実行しておく }else{ ech

    CUDAを使ったGPUプログラミング超入門 - Qiita
  • 第456回 Ubuntu 16.04 LTSでCUDA 8.0を使用する | gihyo.jp

    NVIDIAが提供するCUDAは、NVIDIA製のGPUを用いて高速な並列処理を行うためのプラットフォームであり、ツールキットです。ここ数年話題になっている深層学習でも基的な技術の一つとして採用されています。今回はこのCUDAの最新版である8.0をUbuntu 16.04 LTSにインストールする方法を紹介しましょう。 CUDAを使うために必要なハードウェア グラフィック処理の心臓部であるGPU(Graphics Processing Unit)は、その用途からシェーダーの汎用化・並列化が進んだ結果、特定の精度の単純な計算処理であればCPUの数倍の能力を持つまでに至りました。これは3Dゲームを主体としたCGのレンダリングに使われるべく進化したのですが、せっかくの計算能力をゲームだけに使うのはもったいないとして生まれたのが「GPGPU(General-Purpose computing o

    第456回 Ubuntu 16.04 LTSでCUDA 8.0を使用する | gihyo.jp
  • いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記

    私はつい最近まで勘違いしていました。 ここのページに書いてあるような方法で、一様分布する整数が得られると。 int random(int n) { return (int)(( rand() / (RAND_MAX + 1.0) ) * n); } この方法、一見すると実に一様分布が得られそうに見えるんですよね。 どういう思考回路を通っているかというのを自己分析すると、次のような感じです。 1. rand() では 0〜RAND_MAX のランダムな整数が得られる。 2. それを RAND_MAX + 1 で割ると、[0, 1) に一様分布する実数が得られる。 3. [0, 1) の一様な実数を n 倍して小数点以下を切り捨てたら、0 から n-1 に一様分布する整数が得られる。 これの罠なところは、1 と(特に)3 が正しいというところだと思います。 ただ、2 がダウト。 思いっきりダウ

    いつからその方法で偏りのない乱数が得られると錯覚していた? - アスペ日記
  • GWだからWindowsのC&C++フリー開発環境MinGWをインストールしたら、またも世の中から取り残されていたことに気づいた(前編) - 🍉しいたげられたしいたけ

    4月27日 と 28日 のエントリーに、確率統計の再勉強中であることを書いた。高校時代から思っていたのだが、答えの正確性を担保するものがないことに、つらつら不満を感じた。問題集だったら巻末に答えが載っているが、現実に直面する問題にはそういうものはないから、間違えたら間違えっぱなしじゃないかということである。そして人間は必ず間違いを犯す存在なのだ。 のっけから話はズレるが、その点、複式簿記ってすごいですよ。貸借平均の原理というのに基づいて、間違いを検出するシステムが構築されている。あれも間違いなく人類の偉大な知的遺産の一つだと思っている。もっと勉強せねばと思いつつ果たしていない。 スポンサーリンク 話を戻して、高校時代に比べて今の自分は無駄に年を取ったわけでなく、ちっとは知識を蓄積しているはずだ。すぐに思いつくのは、簡単なプログラミングによってシミュレーションをすることだった。しかしマシンの

    GWだからWindowsのC&C++フリー開発環境MinGWをインストールしたら、またも世の中から取り残されていたことに気づいた(前編) - 🍉しいたげられたしいたけ
    kenjiro_n
    kenjiro_n 2016/04/30
    bash on Windowsが正式に追加されてからそちらでgccをインストールするかすぐ使えるVisual Studio (Community|Express) がある現状だとあえてMinGWを選んだようにも思えるけど、そのあたりの話は続きで読めるんだろうか。
  • http://harold-spm.com/cgengo-content/

  • 2016年、C言語はどう書くべきか (後編) | POSTD

    (前編はこちら: 2016年、C言語はどう書くべきか (前編) ) (編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) システム依存の型 まだ「32 bitのプラットフォームでは32 bitのlong型、64 bitのプラットフォームでは64 bitのlong型がいい」という不満があるようですね。 プラットフォームに依存する2つの異なるサイズを使うため、 故意に コードを難しくすることを考えたくなければ、システム依存の型のために long を使おうとは思わないでしょう。 この状況では、プラットフォームのためにポインタ値を保持する整数型、 intptr_t を使うべきです。 モダン32-bitプラットフォームでは、 intptr_t は int32_t です。 モダン64-bitプラットフォームでは、 intptr_t は int64_t です。 int

    2016年、C言語はどう書くべきか (後編) | POSTD
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
    kenjiro_n
    kenjiro_n 2016/02/21
    レガシーとの連続性、いやレガシーそのものを扱っている人間には勉強にはなったが俺のこの数年間を返せと言いたくなるような記事。
  • やり直しC言語:複雑な宣言の読み方

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

    やり直しC言語:複雑な宣言の読み方
    kenjiro_n
    kenjiro_n 2016/01/21
  • ゲームボーイアドバンスのゲームを書こう | POSTD

    子どもの頃は、ゲームボーイのゲーム(たいがい、かなりひどいもの)で遊ぶのにたっぷり時間を費やしました。 これまでは「標準の」一般的な目的に使われるコンピュータ以外のためにコードを書いたことはなかったのですが、最近考えるようになりました。 「ゲームボーイ(アドバンス)のゲームは簡単に書けるだろうか?」 ゲーム機には詳しくない方のために説明すると、ゲームボーイアドバンス(GBA)は、任天堂が発売した人気携帯型ゲーム機でした(写真下)。 240 x 160 (3:2) 15ビット カラーLCDディスプレイ、6種類のボタンと十字キーが付いています。 ゲームボーイアドバンス 内部を見ると、GBAのCPUは32-bit ARM7TDMI RISCコア(16.78MHz)です。 標準の32-bit ARMのインストラクションのほかに、 このチップは16ビットThumb のインストラクションも実行できます

    ゲームボーイアドバンスのゲームを書こう | POSTD
    kenjiro_n
    kenjiro_n 2015/09/25
    懐かしいなあ。
  • GCC 5系初のリリースとなる「GCC 5.1」登場 | OSDN Magazine

    GNU ProjectとGCC開発者は4月22日、「GNU Complier Collection(GCC)5.1」」を公開した。Cのデフォルトモードの変更、最適化エンジンの強化、JITコンパイラ対応など多数の機能が盛り込まれている。 2014年4月に公開されたGCC 4.9に続くもので、GCC 5系で最初のリリースとなる。変更点としては、まずCのデフォルトモードが-std=gnu89(GNU89)から-std=gnu11(ISO C11ベースのGNU11)に変更された。また、C++ランタイムライブラリlibstdc++ではデフォルトで新しいABIを利用するようになっている。古いABIのサポートも継続するデュアルライブラリとなり、「_GLIBCXX_USE_CXX11_ABI」パラメータで利用するABIを設定できる。libstdc++ではC++11のサポートが完全対応となった。また、C++

    GCC 5系初のリリースとなる「GCC 5.1」登場 | OSDN Magazine
  • サービス終了のお知らせ - NAVER まとめ

    サービス終了のお知らせ NAVERまとめは2020年9月30日をもちましてサービス終了いたしました。 約11年間、NAVERまとめをご利用・ご愛顧いただき誠にありがとうございました。

  • C言語分かってなかった (I Do Not Know C) - Qiita

    Dmitri Gribenko氏によるBlog記事 "I Do Not Know C" より訳出。原文および訳文のライセンスは CC BY-SA 3.0 に従う。 この記事の目的は、皆に(とくにCプログラマに)「C言語分かってなかった」と言わせることです。 C言語の死角は思っているよりも身近にあり、よくある単純なコードですら 未定義動作(undefined behavior) を含む可能性があると示したいと思います。 記事は質問に対する回答の形をとります。全ての例示コードは別々のファイルに分かれていると考えてください。 (訳注:Qiita/Markdown表現の制約から、読中ネタバレ防止のため文章順序を変更しています。前半には質問のみを、後半には質問と回答の対を訳出しました。) 質問編 1.

    C言語分かってなかった (I Do Not Know C) - Qiita
  • GNAT開発環境について〜gcc付属ツール - Note

    2012年12月時点でのgccまたはGNAT GPLをインストールした際に付属する「公式」ツール群の紹介を行う。 多岐に渡るので、一つ一つの詳しい説明は行わない。 各ツールの細かい情報はそれぞれのドキュメントを参照して欲しい。 もし知らないツール名があったらちょっと読んでみて欲しい。 もしかしたらあなたの問題を解決するツールがあるかもしれないから。 ★は重要度。五点満点。 なおこの記事は某所のパクリです。あとAda Advent Calendarとは何の関係もありません。 gcc ★★★★★ コンパイラ。説明不要。 Adaという言語のポテンシャルを全く引き出していない上にバグの多い糞コンパイラですが、現状Ada2012が使えるフリーのAdaコンパイラはこれしかないので仕方がないです。 (別に私一人が言ってるわけでもなく、comp.lang.adaでAda, the best languag

    GNAT開発環境について〜gcc付属ツール - Note
  • J

    Cで汎用ライブラリをつくってると、void*の嵐になって型安全が無くなると思う。 ちょっとした手間で、それをなんとかする話。 struct varray { int nelem; void *values; }; #define VSET( t, a, i, e ) (((t*)a##t.values)[i] = e) #define VDECL( t, name ) struct varray name##tこんなふうにして。 int main() { VDECL( int, a ); VSET( int, a, 0, 4 ); }こんなふうにする。 変数宣言がちょっとキモくなるのと、配列アクセスが、キモくなる。のと、配列アクセスするときに型の名前がいる。 のだけど、 int main() { VDECL( int, a ); VSET( float, a, 0, 4.0 ); }こうい

    J
    kenjiro_n
    kenjiro_n 2015/02/14
  • 2007-01-26

    当にSFを読むのが趣味でもいいじゃないですか。(翻訳作品専門) あー、積ん読が増えて行く……。 引っ越し前に荷物増やしてどうするよ俺!? ディアスポラ 最後の最後に打ち明けられる衝撃の真実!主人公は女性だった!isbn:4150115311 ヒューマン 殺してやりたいぐらいのイチャツキありレイプあり獣姦ありの目眩く性の世界を描くSF。isbn:4150115206 あなたの人生の物語 おかねをはらわなくていいメイドの話。短編集。isbn:4150114587 祈りの海 男女間で性器を渡す、身体の仕組みが違う世界の性のおはなし。ちょっと描写が濃いです。短編集。isbn:4150113378 こんな風に紹介すると、読んだ時にガッカリすること請け合いです。 template無しで型安全なコンテナを作るには、昔っからgeneric.hというものがあります。 詳細は「επιστημηのオブジェクト

    2007-01-26
    kenjiro_n
    kenjiro_n 2015/02/14