Ohotech 特盛 #10 ( http://ohotech.connpass.com/event/7517/ )で発表した資料です。Read less
![C++ マルチスレッドプログラミング](https://cdn-ak-scissors.b.st-hatena.com/image/square/aaa1ea6e5c013cff3024d2195f300bd0089ee4fa/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Fc-140901094641-phpapp01-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)
2014年12月03日12:00 カテゴリプログラム Eigen - C++で使える線形代数ライブラリ C++ Advent Calender 2014 絶賛協賛中!! みなさん、Eigenをご存知ですか?? EigenはC++のテンプレートで実装された線形代数ライブラリです。 私自身、配信中の2本のiPhoneアプリで使っており、「これはとても使いやすい!!」と感じています。 その経験から、「C++でベクトル・行列を扱うなら、Eigenオススメ!!」と推しまくってます!!!! 使うメリットライブラリのビルドが不要(使いたいソースでインクルードするだけ)高速(テンプレートが展開され、余計な変数が生成されない)直感的でシンプルなAPI(数式に近いコードが書ける)MPL2なライセンス(closed-source なソフトでも使える)そこで今回は、簡単ながら、ゲームアプリでよく使うであろうベクト
This page has moved to https://chibash.github.io
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 初めましての方は初めまして、そうでない方はこんにちは。DtYaZsKです。 この記事はKMC Advent Calendar 2013の22日目の記事です。 昨日はwackyさんの東アジア文字幅問題との戦いの記録でした。 今回はISO/IEC 14882:2011、通称C++11で追加されたC++の新しい要素の内私が独断と偏見で選んだものを5つほど簡単に説明します。 C++11超入門と銘打っていますがそれ以前のC++、所謂C++03までの知識、特にtemplateとポインタとSTLの基礎知識は前提としています。 怖いC++erの方々にとってはすでに知ってる内容ですし、逆にC++のことがさっぱりな方にとっては意味不明な内容かもしれません。 今回やる内容はgccやclangではもちろ
おシゴトでJSONを扱うことになりました。どこぞのサーバがWeb-serviceをホストしてて、サービスとのやりとり(リクエストとその応答)がJSONで行われるらしく、C++でJSONを読み取る方法をリサーチしてくれとのこと。 Web-serviceのインターフェースはXMLがよく用いられますが、近頃はJSONが増えてきたみたいです。JSONはXMLに比べフォーマットが単純で伝文がコンパクト、軽量インターフェースなのでスマホのような(デスクトップ機よりは)非力なクライアントでも楽に扱えますからね。そんなわけでC++でJSONを扱うべくリサーチを始めました。 JSONの構造 JSON:JavaScript Object Notation(JavaScriptオブジェクト記法)、RFC4627(PDF)で規定されています。英文とはいえ10ページにも満たない小さな規格ですからさほどの苦労もなく理
メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。 libmemcacheは開発終了とのことで、libmemcachedを使ってみることに。 教えてもらった http://alpha.mixi.co.jp/blog/?p=119 を読破。 まず、http://tangent.org/552/libmemcached.html からlibmemcachedをダウンロードっす。 現行0.20が最新かもしれません。 そしたら、展開。 $ tar xvzf libmemcached-0.20.tar.gz で、configure。 $ cd libmemcached-0.20 $ ./configure で、make。 $ make へー。 libmemcachedでは
typedef int (*sqlite3_callback16)(void*,int,__wchar_t**, __wchar_t**); int sqlite3_exec16( sqlite3 *db, /* The database on which the SQL executes */ const __wchar_t *zSql, /* The SQL to be executed */ sqlite3_callback16 xCallback, /* Invoke this callback routine */ void *pArg, /* First argument to xCallback() */ __wchar_t **pzErrMsg /* Write error messages here */ ){ int rc = SQLITE_OK; const __wc
PC/AndroidのGoogle Chrome (グーグルクローム)、Edge(エッジ)の最新バージョン127にて、ビデオ通話がご利用いただけない不具合が起こっておりましたが、修正をリリースいたしました。ご利用されている皆様には大変ご迷惑おかけいたしましたことをお詫び致します。 現在、PC/AndroidのGoogle Chrome (グーグルクローム)の最新バージョン127にて、ビデオ通話がご利用いただけない不具合が確認されており、調査中となっております。ご利用の皆様にはご迷惑をおかけ致しますが、ご理解ならびにご協力の程、何卒宜しくお願い申し上げます。 9月14日(水)午前5時~5時30分(日本時間)に、サイトのメンテナンスを行ないます。その間は、一時的にチャットが中断される場合がございます。メンテナンス期間は、作業状況により多少前後することもございます。ご利用の皆様にはご迷惑をおかけ
VisualStudioではC++の開発が行えます。しかし、C++とC言語は微妙にちがいます。 たとえば、型変換や、intの省略などで違いが出てきます。C++はC言語よりも安全性と正確性を高めるための工夫がされています。 なのでC言語用に作られたプログラムをコンパイルしようとすると、その違いのせいでコンパイルエラーになることがしばしばあります。 では純粋なC言語としてコンパイルすることは出来ないのか?いえ、実は簡単に出来ます。 意外と知らない人がいるようなのでまとめておきます。 2通りのやり方があるようです。 2008の無料版で説明しますが、他のバージョンでも大して変わらないはずです。 [やり方1]拡張子を変える ソリューションエクスプローラから拡張子を変更します。もともとは「cpp」となっています。cppはC++のことです。 それをcに変えると自動でC言語としてコンパイルできるはずです。
C言語のポインタは難しいと言われます。しかし,ポインタについて覚えるべき文法は,それほど多くはありません。Cを勉強してきて,ポインタのところでつまずいたという場合でも「&や*などのポインタに関する文法はわかるのだけれど」という人は多いでしょう。むしろ,ポインタで難しいのは,その考え方にあります。 考え方さえわかってしまえば,ポインタはそれほど難しいものではありません。もしプログラムを読んでいて,ポインタの動作が理解できない場面があったら,そのポインタが「何の機能を実現するために使われているか」を考えてみることが理解につながります。この特集では,考え方に重点を置いてポインタを説明したいと思います。 Cではポインタは必須 読者の中には,JavaやC#,Perlなどのプログラミング言語を使っている人もいるでしょう。これらをはじめとする多くの言語では,ポインタというものは無いか,あったとしても,あ
僕がプログラミングに触れた当時は、プログラミングといえば「まず C 言語」でした。それから 10 年以上が経ちました。学校の授業や企業の研修では未だに C 言語を教えているところがあるようです。関数型プログラミング言語という波が来ている 2012 年にもなって未だに C 言語をやっているというのはまるで進歩が無く残念な気もしますが、比較的多くのプログラマに浸透している共通言語を最初に教えるというのは、一方では喜ばしい事だと解釈する事もできるのかもしれません*1。まぁとにかく、本意にせよ不本意にせよ現場で プログラム初心者に C 言語を教える羽目になった 人がたくさんいて、プログラム初心者なのに C 言語を学ばざるを得なくなった 若者がたくさんいるということです。 C 言語を教えるときに避けて通れないのがポインタで、プログラム初心者が C 言語を学ぶときにやたらとつまずく人が多いのがポインタ
「C言語とC++がわかる本」というムック(2013年4月2日発売)の作業で、Windows 8/RTで動く「Windowsストア アプリ」をC++で作った。元記事はVisual BasicとC#(シーシャープ)で作っていたので、それをC++で書き直すというわけだ。 これが想像をはるかに超えて難しく、土日に働き続けるのはもちろんのこと、1日の睡眠時間を2時間に削ったりして長時間取り組んでも、思うように進まなかった。印刷会社にデータを渡す日は近付くしプログラムは動かないしで、10年に1度クラスの大ピンチ。冷や汗をかき、涙目になりながら書き続けて何とか間に合わせたのだが、どこが最大の難所だったかというと、「順次処理を書いたつもりなのに順次処理してくれない」という、常識破りの大変化があったことだと思う。 手続き型のプログラミング言語でプログラムを書く場合、プログラマが と記述したら、コンピュータは
ライブラリの使い方 XML 形式のファイルを解析する場合 SXML ライブラリの簡単な使い方を説明します。 ここでは例として、 次に示す XML 形式の内容を記述したファイル(ex.xmlとします)の構造を解析するプログラムを考えます。 <server> <address>192.168.1.234</address> <port>25</port> </server> 下記ソースコードに XML を解析する場合に利用する SXML の基本的な関数が含まれています。 #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <sxml.h> #define TAG_ROOT "server" #define ROOT_ATTR_NAME
C/C++でスレッドを扱う場合は、プラットフォームによって使用するライブラリが違います。 Windows なら Windows API の thread で、 UNIX や Linux 系ならば pthread ライブラリ等を使用します。プラットフォーム依存するコードは可搬性に難があり、解決策の1つとしてプリコンパイルで依存部分をプラットフォームに合わせたライブラリを選択してコンパイルする方法があります。 boost ライブラリの boost::thread は、上のような処理をラップして共通のインターフェイスとして実装されています。 boost/thread.hppの一部 #if defined(BOOST_THREAD_PLATFORM_WIN32) #include <boost/thread/win32/thread.hpp> #elif defined(BOOST_THREAD_
Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh
Visual C++ 2010 Express は、Microsoft社が無償で提供しているIDEです。 C言語で記述したソースファイルから実行ファイルを作り出すには、IDEによるコンパイルが必要不可欠であるため、 IDEをお持ちでない方はこの機会にインストールしてみては如何でしょうか。 Visual C++ 2010 Expressのインストール Visual C++ 2010 Expressの設定 作成したアプリケーションの配布 Visual C++ 2010 Expressのインストール 下記URLアクセスし、ページの中ほどにあるVisual C++ 2010 Expressの「Webインストール」を選択します。 https://www.microsoft.com/japan/msdn/vstudio/express/ 「Webインストール」を選択すると、次のようなダイアログが表示さ
Solarisの例: % cc -G -I /usr/java/include -I /usr/java/include/solaris JniJikken.c -o libJniJikken.so Solarisでのmakefileの例: all: libJniJikken.so lib%.so: %.c %.h cc -G $< -I /usr/java/include -I /usr/java/include/solaris -o $@ %.h: %.class javah $* %.class: %.java javac $< ↑この例の場合、javaのコンパイル・javahでの生成まで含んでいる。 VC++の例: インクルードパスの追加方法参照。 ↓JDK1.6の場合 C:\Program Files\Java\jdk1.6.0\include,C:\Program Files\
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く