これまで説明してきたGHCの並列化機能は,いずれもスレッドやプロセスのような並行実行の仕組みを抽象化の内側に隠ぺいしたものでした。しかし,このようにユーザーの目から詳細を隠してくれる特徴が,かえってわずらわしく思えることもあります。 GHCの並列化機能は,「ある一つの計算の処理速度を向上させる」という目的を直接的に反映したものです。このため,処理速度の向上以外の部分には,十分に手が届かないこともあります。例えば,グラフィカル・ユーザー・インタフェース(GUI)などを実現するための対話的なプログラムでは,「ある一つの計算の速度を向上させる」だけでは,プログラム全体の反応速度を思うように上げられません。プログラムをうまく制御して全体での速度向上を目指すことが重要だからです。しかし,これまで説明してきた並列化機能には,こうした制御を実現するのに必要なセマンティックス(意味論)は特に規定されていま
概要 HaskellのスレッドシステムとSTMについて調べたので、ここにまとめます。 Haskellのスレッドシステムは、予想よりも複雑でした。 Haskellの世界で閉じた処理ならば、比較的簡単なのですが、 FFI(Foreign Function Interface: 外部のCの関数を呼び出す仕組み)を使うと、 とたんに複雑になってしまいます。 一度に書くと、量が多いため、数回に分けて書こうと思っています。
C++ は .NET や PHP などと違い、Twitter 関係のライブラリが充実していません。また、解説サイトも少なくプログラムを組むのはなかなか困難です。既存の Twitter クライアントでも、.NET や AIR をベースとして構築しているものが多いのが現状です。 しかし、今回は、OAuth の仕組みを学ぶということを目的とし、C++ で組むこととしました。C++ 自体のスキル向上という目的もあります。 ※ ただし、ネットワークや暗号化などにはライブラリを利用しています ■ 開発環境 Ubuntu 10.10 g++ version 4.5.5 Cygwin g++ version 4.3.4 ※ クロスプラットフォームライブラリを利用しているので、Windows でもコンパイル可能 (未検証) ■ 利用ライブラリ ・ cURLpp 通信処理 ・ CLX C++ Librarie
これまで並行処理のためのデータ型として,第12回ではTVar型やMVar型,第14回ではChan型やTChan型などを取り上げてきました。一方,並列処理のためのデータ型はあまり説明してきませんでした。取り上げたのは,第10回や第24回のコラムで説明したデータ並列Haskellの並列配列くらいです。 たしかに,並列HaskellやParモナドを利用すれば,並列処理のための特別なデータ型を使わなくても並列処理は可能です。しかし,目的とする処理の並列化に特化したデータ型が用意されているのであれば,それを利用したほうが簡単かつ効率的に処理を行えます。 そこで今回は,並列処理用のデータ型の一つとして提供されている「repa(REgular PArallel arrays)」の並列配列の基本を説明します。repaはデータ並列Haskellプロジェクトの一環として開発が進められているライブラリです。デー
リツイート数が30を超えたので、Haskell での例外処理について説明します。僕が思うに、Haskell での例外処理が分かりにくいのには、2つ理由があります。 ライブラリの混乱 パラダイムの違い 歴史的経緯により、Prelude にも Control.OldException にも Control.Exception にも catch があります。歴史的経緯を説明するのは面倒なので、これだけ覚えて下さい。「Control.Exception だけを使って、それ以外は忘れる」 そもそも純粋関数型で catch とか言われても分からないかもしれません。Haskell では、純粋な関数と IO とでは、例外処理の方法が異なります。命令的な catch などを使うのは IO です。純粋な関数には Maybe か、Either を使います。 純粋な関数 純粋な関数では、原則として例外を投げてはい
beagleboneで、arduinoみたいなことをやってみようということでいろいろ調べています。 よく、付属のLEDの点灯の記事を見かけるのですが、そんなのではなくて、arduinoみたいに外部のLEDをピカピカさせたいのです。 また、beaglebone付属のIDEを使って、webからやるのではなくて、せっかくlinuxが入っているのですから、コマンドラインやプログラムから、ピカピカさせたいものです。 beagleboneは名刺入れサイズの大きさのPCです。 中身はふつーのlinuxです。 gccやg++も最初から入っていますので、いろいろ遊べます。 boostなども入れることができます。(コンパイルに数時間かかりますけど) また、beagleboneのCPU Cortex-A8には、NEONというSIMD命令が搭載しています。 gccのオプションを設定すれば、高速に浮動小数点演算がで
"Image dans le néant" by gelinh boost.GILは凄い!開発者の頭の良さがビシビシと伝わってくる! ということで、今回はGILに関しての紹介記事を書こうと思います。 概要 あなたは画像処理のエキスパート。顧客の依頼で、8bitのRGB画像を処理するアルゴリズムを記述していたとします。ところが対象となるデバイスの仕様を調べていた際に、実はRGBA画像にも対応させなければいけないことが分かりました。面倒だと思いながら書いていた矢先、さらにBGRやABGR,さらには16や24bitにも対応したアルゴリズムを記述しなければならないことが判明しました。なんということでしょう…これらの画像すべてに対してアルゴリズムを書くなんて、とてもじゃないですがやってられない。やめてくれ!って感じです。 boostに付いてくるGILを用いることで、画像に対する操作をよりジェネリック
distcc is a program to distribute builds of C, C++, Objective C or Objective C++ code across several machines on a network to speed up building. It should always generate the same results as a local build, is simple to install and use, and is usually much faster than a local compile. Further, one can use it together with native Arch build tools such as makepkg. Terms client The client is the compu
Let’s do some OAuth communication in Javascript, shall we? This morning, after a quick research I found three potential libraries that can be used: Made by Netflix – javascript oauth United Heroes' – OAuthSimple Rob Griffiths' jsOAuth The first one looks quite old, and I couldn’t find any good docs. Second one, has some docs, but leaks with variables like crazy (the sign() method returns DOMWindow
「デバッグ モードでの署名」にあるデバッグ用キーストア/キーをコマンドライン(DOS+keytool)から生成する方法。 keytoolが使えるか確認。 C:¥>keytool -help でヘルプが表示されればOK。JDKが入ってれば通るハズ。 デバッグ用のキーストア/キーは以下の値で生成する。 キーストア名「debug.keystore」 キーストアのパスワード「android」 キーのエイリアス「androiddebugkey」 キーのパスワード「android」 CN「CN=Android Debug,O=Android,C=US」 DOSから C:¥>keytool -genkey -v ^ -keystore debug.keystore ^ -alias androiddebugkey ^ -keyalg RSA ^ -validity 10000 ^ -
GitHub がオープンソースの場として魅力的な理由は、Git という優れた分散・協調型リビジョン管理システムのリポジトリー・ザーバーとして誰でも利用できるということはもちろん、README などのドキュメント生成機能やコメンティング機能、問題のトラッキング機能など、Git を補助し、オープンな分散・協調開発を支えるサブシステムが充実している点が挙げられるでしょう。無料でもかなりのことができるのに、ビジネスとしてもちゃんと成立している理由はこんなところにあるように思います。 ただ、同種サービスの Google Code や Bitbucket と決定的に異なり、GitHub の最大の魅力となっているのは、GitHub Pages という1種のホスティング・サービスではないかと思います。成果物をただずらずらと味気ないページに並べるのではなく、趣向を凝らした紹介ページを自由に作り、プロジェクト
業務でgoogle play(旧アンドロイドマーケット)にデベロッパー登録しなくてはならなかったので、備忘録を残しておきます。 デベロッパーとして利用するGoogleアカウントを既に持っている方はstep.2から参照してください。 Step.1 Googleアカウントの登録 Android Marketのデベロッパー登録を行う前に、Googleアカウントを開設しておかなければなりません。 https://accounts.google.com/NewAccountにアクセスしてください。 下記ページが表示されたら必要事項を入力し、利用規約、プライバシーポリシーを読み、「同意して、アカウントを作成します」をクリックします。 下記ページが表示されたらgoogleアカウントの作成が完了です。 step.2 Android Market デベロッパー決済 googleアカウントの登録ができたらgo
条件変数(condition variable)同期プリミティブに対する待機/通知で発生する現象と回避策のメモ。 条件変数とミューテックスを使ったコードにおいて次のような現象が生じる。 スレッドAが条件変数cvに対して通知を行う。 条件変数cvに対してブロックされていたスレッドBのブロックが解除される。ただし、ミューテックスmtxはスレッドAにロック保持されたままのため、再びスレッドBはミューテックスmtxに対してブロックされる*1。 スレッドAがミューテックスmtxのロックを解放する。 ミューテックスmtxに対してブロックされていたスレッドBがブロック解除され、同ミューテックスのロック獲得に成功する。 #include <pthread.h> int data = 0; // 待機条件: 非0になるまで待機 pthread_mutex_t mtx; pthread_cond_t cv;
MSYSでGTK+をビルドする手順をまとめました。 ビルド後のパッケージ一覧は前回の記事を参照してください。 MSYSでGTK+をビルド (1) http://7shi.hateblo.jp/entry/2012/04/30/181459 ビルドには非常に時間と手間が掛かります。自分でビルドしなくても本家でWindowsバイナリが公開されています。 http://www.gtk.org/download/win32.php 参考までに私がビルドしたバイナリを置いておきます。/usr/localに展開することが前提のアーカイブです。 これは一時ディレクトリにインストールしたファイルを固めたものです。make installの代わりに使うスクリプトを作成したので、参考までに置いておきます。 https://gist.github.com/2569475 Python Windows用のPyth
Boost.Heapの優先順位付きキューの特徴として、「イテレータを持っている」というのがあります。 さらに、iteratorに加えてordered_iteratorというを持っている優先順位付きキューのバリエーションがあります。 これらの違いを確認しようと思います。 まず、イテレータを使わない場合の操作。pushしてpopしていきます。 この操作では、優先順に処理されます。 #include <iostream> #include <boost/heap/fibonacci_heap.hpp> int main () { boost::heap::fibonacci_heap<int> que; que.push(3); que.push(1); que.push(4); while (!que.empty()) { std::cout << que.top() << std::endl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く