‘技術メモ’ カテゴリーのアーカイブ

C++: lambda の参照キャプチャは const 性を損なわない? このエントリーをはてなブックマークに追加

2014 年 7 月 25 日 金曜日

C++ の勉強ということでちょいちょいスモールケースを書いては意味もなく github に commit するということをやっているのですが…

んー、何でしょうねこの雑なコード(^_^;A これ自体は確か、ステータスの変化を検知してステータスの種類にかかわらず共通の処理を自動で走らせるようにしたいんだけど、そうするとあれとこれとそれを変更しようとした時にあれを変更した時にもこれを変更した時にもそれを変更した時にも処理が重複して走っちゃうから無駄だよねってケースを想定して、じゃあ今あるステータスを全部一時的な構造体に突っ込んだものを引数にとってその構造体に変更を加えて返すコールバックを引数に取るようにすればいいんじゃね? って思ったんだけど、そんなの lambda で書きたいに決まってるけど変数キャプチャ付きの lambda は関数ポインタに変換できないじゃんねっていう訳で、コールバックに関数ポインタじゃなくて lambda を受け取る template メソッドにしてしまえ、ということを試してみたくて書いていたものでした (今考えたらそも素直に std::function 使えよ…って話ですねorz)。
(さらに…)

Pimpl とかファクトリとか – C++ のための API デザイン このエントリーをはてなブックマークに追加

2014 年 6 月 19 日 木曜日

otoco プロジェクトの開発に着手するにあたって、私はまだ C++ でのライブラリ開発を 1 からコーディネートした経験がなかったので、クロスプラットフォームに対応したライブラリ API の開発手法を学ぶ必要があると感じました。ちょうどいい感じの教材が割りと最近出ていたようで、早速購入し、勉強を進めています。

C++11 についても若干触れられているようで (原著執筆当時はまだ C++0x と呼ばれていた模様…)、この手の教材の中では比較的情報が新しい方なんではないかと思われます。

実はこの本を買って勉強し始めたのはもう結構前 (確か前原にいた頃… 昨年の暮れ頃?) なのですが、ここしばらく本業やら引っ越しやらが忙しくてなかなか手を回せずにいたので、久しぶりの着手ということで、すでに履修していた第3章の、 Pimpl イディオムとファクトリメソッド辺りを復習してみました。
(さらに…)

DataTable から値を引っ張る方法あれこれ このエントリーをはてなブックマークに追加

2013 年 6 月 10 日 月曜日

C# で DB を扱う場合などで、よく DataTable を使うことになると思うのですが、こいつから値を取り出すときの書き方が人によって結構まちまちだな、と思うことが結構あるので、ちょっとおさらいしてみることにします。

今回は割と初歩的な内容になります。あと、記事中のコードはテストしてないので動作を保証できません。
(さらに…)

Trac で .wsgi ファイルを複数設定する場合の留意点 このエントリーをはてなブックマークに追加

2013 年 3 月 21 日 木曜日

小ネタですが…

重要な Note: 複数の .wsgi ファイルを使用する場合 (それぞれのファイルに別個の Trac environment を設定するケースなど) は、 os.environ['TRAC_ENV'] には Trac environment のパスを 設定しない でください。この方法を使うと、別の Trac environment の設定が Trac にロードされてしまうことがあります。 (以前にロードした Trac environment のパスが使われてしまいます。) この問題は .wsgi ファイルの内容を下記の通り変更することで回避できます:

import os

os.environ['PYTHON_EGG_CACHE'] = '/usr/local/trac/mysite/eggs'

import trac.web.main
def application(environ, start_response):
  environ['trac.env_path'] = '/usr/local/trac/mysite' 
  return trac.web.main.dispatch_request(environ, start_response)

(さらに…)

WPF と MVVM で時刻入力コントロール このエントリーをはてなブックマークに追加

2013 年 3 月 1 日 金曜日

ご無沙汰しております。

会社としての仕事がなかなか収入につながらないため、昨年の秋から個人事業主として某所で頂いた設計の仕事に従事しています。当初は 1~2ヶ月程度の短期の仕事として契約しておりましたが、のっぴきならない諸処の事情 (^-^; により、最低でも今月末まで、できればその後の開発の方にも~、ってな感じでなにげに長引きそうであります。

お金がないので (泣、仕事があること自体はありがたいことではあります… 残業続きですでにへとへとですが。

で、そのお仕事なのですが、 Windows 向けの業務アプリでありまして、開発には C# (Visual Studio 2010 / .NET 4.0) と WPF を利用することが決まっております。我々設計部隊も、画面イメージ作成のために XAML を書いたり、レビューの際の説明のために簡単な制御ロジックを書いたりもしています。

まぁ画面作りに時間をかけてばかりも居られないので、たいていの人は WYSIWYG の XAML エディタで枠だけ書いて終わり、制御ロジックを書くにしても code behind に直接書くだけなのですが (そもそも WPF とか知らん、さらにいえばプログラミング自体ほとんど経験無いって人も少なくなく…)、開発工程にも関わる可能性があり、なおかつ WPF なんて現場ではほとんど使われていないために経験がある技術者が見つかりにくいという中で、いい機会なのでこの際勉強もかねて MVVM スタイルでの記述を心がけるようにしていたりするわけです。割と楽しいし。

そんなわけで、当ブログではこれからしばらくの間、 WPF と MVVM 関連のネタを綴っていくことにしようかと思っております。どうぞお付き合いくださいませ…。
(さらに…)

コンテナの種類は問わないが、要素の型は限定したい。 このエントリーをはてなブックマークに追加

2012 年 9 月 27 日 木曜日

C++ で STL などによる任意のコンテナを引数に取る関数を実装する際、そのコンテナの種類は問わないものの、そのコンテナが持つ要素の型は限定したい、あるいは要素の型に応じて処理内容を切り替えたい、といったニーズがあると思います。

そのような場合、 C++11 であれば、 <type_traits> を利用します。

以下は、整数の型を要素に持つ任意のコンテナを受け取り、その全要素の合計を返す関数 calcSum() の実装例です。
(さらに…)

SVG の 要素を JavaScript で生成して DOM ツリーに追加しても何も表示されない←んなこたぁない このエントリーをはてなブックマークに追加

2012 年 8 月 10 日 金曜日

(投稿直後に追記: この問題は既に解決しております…)
(さらに…)

unorderd_map のキーに enum 型を使用する このエントリーをはてなブックマークに追加

2012 年 1 月 2 日 月曜日

新年明けましておめでとうございます。去年はちっとも儲からなかったので、今年は本腰入れて開発やって自力で稼げる事業を立ち上げたく、その準備を進めて参る所存でございます。どうぞ生暖かく見守っていただければと思います…。

さて、前回の記事でお見せした、 iconv のラッパークラスをテンプレートクラスに作り直す際、 <unorderd_map> を利用していて気づいたことの備忘録です。

(さらに…)

C++11 で Unicode プログラミングのススメ このエントリーをはてなブックマークに追加

2011 年 12 月 27 日 火曜日

このエントリは、C++11 Advent Calendar 2011 への参加記事です。

初心者表明を免罪符にするつもりは毛頭無いのですが、 C++0x/11 の学習、およびそれを用いた経験はまだまだ浅いため、内容的に拙い部分が多々あることを、あらかじめご容赦願いたいと思います m(_ _)m 。ていうか突っ込みだいかんげいでつ。

一応 ISO/IEC 14882:2011 の draft “n3242″ を参照しています。 GCC は 4.7 入れるの面倒だったので、動作確認できるものについては Ubuntu 11.10 に入っていた 4.6.1 を用いています。

Unicode に対応したリテラル

文字リテラルについてはドラフトの 2.14.3、文字列リテラルについては 2.14.5 に記述があります。
(さらに…)

Android プログラミング(5) – インテント入門 このエントリーをはてなブックマークに追加

2011 年 9 月 29 日 木曜日

シリーズとして、下記の書籍にて学習したことについてのメモを綴っています。

今回は、「HACK#8 インテント入門」 (p.63~71) の内容について触れていきます。
(さらに…)