「C/C++」記事一覧
-
2019/09/24
Windows電卓の中はどうなっているのだろう?(後編) ~オープンソースのコードを改造してみよう
Windows 10に標準で入っている「電卓」アプリのソースコードが公開されています。C++/CXで書かれたUWPアプリです。このソースコードは、UWPアプリのアーキテクチャや、C++/CXとXAMLを使ったUWPアプリの書き方などの勉強になります。カスタマイズした「電卓」を配布することもOKです。今回は、そのソースコードを実際に改造してみましょう。
-
2019/07/26
Windows電卓の中はどうなっているのだろう?(前編) ~オープンソースのコードを見てみよう
Windows 10に標準で入っている「電卓」アプリのソースコードが公開されています。C++/CXで書かれたUWPアプリです。このソースコードは、UWPアプリのアーキテクチャや、C++/CXとXAMLを使ったUWPアプリの書き方などの勉強になります。カスタマイズした「電卓」を配布することもOKです。今回は、そのソースコードをちょっと覗いてみましょう。
-
2018/07/06
Visual Studio 2017 updateでサポートされた「C++17のparallel algorithms」
3月に書いた前回のアーティクル以来、ずいぶんと間が空いてしまいましたゴメンナサイ。いやー実は心筋梗塞で死にかけましてね、数週間病院暮らししてました。おかげさまで平常運転に戻れたけれどモノカキの調子を取り戻せていませんで……リハビリを兼ねてマルチスレッド番外編:「C++17 parallel algorithms」のおはなし。
-
2018/03/05
C++11:スレッド・ライブラリひとめぐり【補足編:3】
こんなはずじゃなかったんです。かなり昔に書いたスレッド・ライブラリの紹介があまりにざっくりしてたので、つけ足しのつもりで筆を進めてて気がつけば三部作になっちゃったという。標準C++ライブラリの一つthread support libraryの(補足のハズだった)解説、おしまいはスレッド間の同期をサポートしてくれるcondition_variableのおはなし。
-
2018/02/15
C++11:スレッド・ライブラリひとめぐり【補足編:2】
マルチスレッド・アプリケーションでは複数のスレッドが互いに干渉することなくフルスピードでぶん回ってくれるのが最もパフォーマンス高くて理想的。ところが実際にはそうも言ってられません、他のスレッドから邪魔されないよう一時的に他スレッドに待ってもらわなければならないことがしばしば起こります。前回に引き続きC++スレッドサポートライブラリによるスレッドの排他のおはなし。
-
2018/01/10
C++11:スレッド・ライブラリひとめぐり【補足編:1】
「g++で書かれた(ちょい昔の)LinuxアプリをWindowsにportしたい」って相談事が舞い込んできました。聞けばそのアプリ、スレッドまわりにおなじみpthreadを使ってて、pthreadとWindows-APIとの対応表を作って欲しい、みたいなお話でした。ざっくり元コードを眺めたところほとんどがC++のスレッドサポートライブラリで置き換え可能だったので「C++11なら一本のコードでLinux/Windowsの両方で動くよ」とアドバイスし、6年ほど前に書いたアーティクル:「スレッド・ラ...
-
2017/12/21
C++Builder 10.2 TokyoでレトロなラケットゲームをiOSで再構築してみる
古いラケットゲームのソースを取り出し、最新のC++Builderを使ってiOS向けに再構築してみることにします。せっかくのモバイルアプリですから、サウンドやタップ操作などにも対応し、イケてる感じのレトロゲームに仕上げたいと思います。
-
2017/10/23
OpenCppCoverageによるカバレージの計測
カバレージを計測したいと思うことが、しばしばあります。アプリケーションやライブラリを作ったら当然ながらテストするんですが、テストの漏れ・抜けが心配になるんですよ。一連のテストのついでにカバレージを計測すればソースコードの各行が実行されたか否かが判明し、実行されなかった行があるならそこを通るテストを追加できます。お手軽なカバレージ計測ツール:OpenCppCoverageを試してみました。
-
2017/07/26
高速軽量XMLパーサ:RapidXMLを触ってみた
年に数本、ちょっとしたツール作成の依頼が舞い込みます。こんなこともあろうかと、文字コードの変換やマルチスレッドなど、よく使うライブラリを1つのディレクトリにまとめた"おどうぐばこ"を用意しています。先日XMLを読み取って加工する小さなツールを頼まれました。"おどうぐばこ"にはXMLパーサの定番:Apache Xerces-Cが入ってはいるのですが、Xerces-Cは高機能な分だけライブラリが大きいために小さなツールに使うのがためらわれ、もっと軽量なXMLパーサを探して「RapidXML」に辿り...
-
2017/03/28
データフローの構築と実行をサポートする、Microsoft PPLの「Asynchronous Agents」
前回、Microsft PPL(Parallel Patterns LIbrary)の並列コンテナを紹介しました。PPLには他にも面白いマルチスレッドのからくりが仕込まれています。その中からデータフローの構築と実行をサポートしてくれるAsynchronous Agents(非同期エージェント)を軽くひとめぐり。
-
2017/02/02
スレッド間のデータ共有に使える「Microsoft PPLの並列コンテナ」
C++11で、<thread>、<future>、<mutex>などで定義されたスレッド・ライブラリが標準化されました。おかげで従来OSごとに異なるAPI(Linuxならpthread、WindowsならWinAPI)で実装してたスレッド周りが1つのコードで済むようになりました。しかしながら標準化されたのはスレッド絡みの基本的なものに限られていて、アプリケーション実装にはまだ足りないものが少なくありません。その一つがスレッド間のデータの共有(受け渡し)に使え...
-
2016/12/01
ページランクのアルゴリズムをC++で試してみる
前回Google Mockを紹介したこともあって、Googleがらみのトピックを探していたところ、"How Google Finds Your Needle in the Web's Haystack:GoogleはどうやってWebの干草の山から針を見つけ出すのか"というタイトルの解説記事に辿り着きました。Googleでの検索結果は有用な(あるいは人気のある)ページが検索リストの上位に並びます(広告云々は別として)。各ページの有用さの度合いを計算し、それをキーに並び替えを行っているのでしょう。...
-
2016/08/03
「入れ替えを行わないソート」のおはなし
今回のお題は「ソート」です――なにをいまさらソートなんか、ではありますけど、先日少々変則的なソートを実装する必要に迫られ、プログラミングのトピックとして面白いんじゃないかと取り上げることにしました。要素の順序を入れ替えないソートのおはなしです。
-
2016/05/30
疎行列の計算を実装してグラフ理論をかじってみる
長いお休みの間コードを触ってないと休み明けのリハビリがしんどいので、それといった目的もなくVisual Studioと戯れておりました。せっかくだから(?)普段めったにやらない分野で遊ぼうと「グラフ理論を行列で学ぶ」ってお題でコードを書いてたんですけど、なんだか面白い結果が出てきちゃったので紹介しておきますね。
-
2016/04/20
50年前に作られたメモリ管理アルゴリズム「Buddy memory allocation」
4月ですねー、この世界に身を置いて三十数年目の春です。当時のノートを読み返すと、組み込み用途のメモリ管理ルーチンをアセンブラで書いたりしてました。黄ばんだノートの覚え書きの中から、メモリ確保/解放のスピードを重視したメモリ管理アルゴリズム:Buddy memory allocationを紹介しましょうか。
-
2016/01/08
C++/CXでHelloUWP!(後編)
Windows 10 UWP(Universal Windows Platform)アプリケーション開発セミナーのC++/CXによる再演、後編です。前編ではページの作り方、およびページとコードビハインド間のバインディングの基本を解説しました。続く後編では複数ページ間の移動のおハナシ。Windows 8で登場したストアアプリの発展形/進化形ともいえるUWPでのUI制御のキモとなる部分です。
-
2015/12/17
C++/CXでHelloUWP!(前編)
11月20日、品川でマイクロソフト主催のハンズオン・セミナーが開かれました。Windows 10の目玉の一つ:UWP(Universal Windows Platform)アプリケーションの開発を体験しようってセミナーです。真っ白なウィンドウを表示するだけのひな型から始まって、デバイスに応じたUIデザイン、ライブタイル、Azure連携さらには手書き文字認識からコルタナさんまでぎっちり詰め込んだ盛りだくさんの内容、ここ半年ほどVisual Studioを立ち上げてもほとんどC++ばっかり書いてて...
-
2015/12/07
IoTをかじってみよう(2) ~mbedから取得したセンサデータをWebアプリケーションで可視化する
連載第1回では、mbedの概要とオンラインIDEの使い方を紹介し、最後に簡単なプログラムを作成して動かすところまでを行いました。第2回では、アプリケーションボードでmbedを拡張し、mbedからセンサデータをサーバに送信してアプリケーションでビジュアルに表示できるところまでを、まったくコードを書かずに実践します。
-
2015/11/30
Visual C++ 14で見つけた<experimental>(試験的)な機能
Windows 10に併せてリリースされたVisual Studio 2015、哀しいことに(インストールは済ませたものの)いまだにじっくりと触ることができていません。いつもならせっせとプロジェクトを引っ越し、ピカピカの環境で遊んでいるはずなのに……。いろんなオトナの事情でもうしばらくはVisual Studio 2013に留まらざるを得ないのですが、このままほったらかして、ずるずると遅れをとってるわけにもいかないので、ちょっとのヒマを見つけては新しいVisual C++ 14の味見を続けてい...
-
2015/10/30
IoTをかじってみよう(1) ~mbedの概要とオンラインIDEの使い方
本連載では、比較的入手しやすく、オンラインIDEで開発環境も構築しやすいmbedを使った作例を通して、IoT(Internet of Things)でどんなことができるのか、またどんな点に注意すればよいのかを紹介していきます。第1回では、mbedの概要とオンラインIDEの紹介、簡単なプログラムを作成して実行するところまでを解説します。