ini_parserを 使う前に 言っておきたい 事がある
基本的には、こんなコードで読み込みができます
サンプル
sample.ini
[常識] CLANNAD = 人生 AIR = 青春
に対するcpp
#include <boost/property_tree/ini_parser.hpp> using namespace boost; int main(){ property_tree::ptree pt; property_tree::read_ini("sample.ini", pt); if (optional<std::string> value = pt.get_optional<std::string>("常識.CLANNAD")) { std::cout << "CLANNADは " << value.get() << std::endl; dt.xmlList.push_back(bcl::widen(value.get())); }else {} if (optional<std::string> value = pt.get_optional<std::string>("常識.AIR")) { std::cout << "AIRは " << value.get() << std::endl; dt.xmlList.push_back(bcl::widen(value.get())); }else {} }
注意点など
- ファイル名はstd::string
- ちょこっと手を加えればなんとかなるかなと思ったけどptree周りがほとんどstringベタ書きだったのでbasic_string
置換作戦は時間がかかりそうですね
- ちょこっと手を加えればなんとかなるかなと思ったけどptree周りがほとんどstringベタ書きだったのでbasic_string
- 同じセクション名あるとread_iniで例外とびます
- まあこのへんはマニュアル読んでとしか
- (ptreeだと)大文字、小文字は区別します
- itreeを使いましょう(コメント参照。egtraさんありがとうございます)
F#はじめました
明日はF#読書会だそうです。
そして、ちょっと勉強がてらこちらのを写経してみました。
⇒#98 FunctionalでReactiveなGUIを作る
普通に写経するのも単調なのでGUIにはGTK#を使って見ます
使ったことないけど上手に使えますかね
ReactiveForm.fs
module ReactiveForm open Gtk open Gdk type ReactiveWindow () as self = inherit Gtk.Window("Form1") let numLabel = new Gtk.Label ( "0", Allocation = new Gdk.Rectangle (261, 9, 11, 12), TooltipText = "Num" ) let incButton = new Gtk.Button ("値を増やす", Allocation = new Gdk.Rectangle(197, 24, 75, 23), TooltipText = "B1" ) do let controlBox = new Gtk.VBox( Allocation = new Gdk.Rectangle(0, 0, 100, 100) ) //↓なんかここが冗長で気に入らない Add [ A; B] みたいにできないの // というかctorで書かせて controlBox.Add numLabel controlBox.Add incButton self.DefaultSize <- new Gdk.Size(200, 200) self.Add controlBox let increment_click = incButton.Clicked |> Observable.scan(fun n e -> n + 1) 0 let mutable counter = 0 do increment_click |> Observable.subscribe(fun ob -> numLabel.Text <- ob.ToString()) |> ignore
Program.fs
module Program open ReactiveForm open Gtk [<EntryPoint>] let main _ = Gtk.Application.Init(); let mainWindow = new ReactiveWindow(); mainWindow.ShowAll(); Gtk.Application.Run(); 0
まあサイズとか全然違うじゃねーかって突っ込みはなしでお願いします
(2011/09/08追記)Addキモいよねの解決策
こういうのがあれば、Addを一個ずつしなくてよくなりますよねと
let rec GtkAddMany (container:Gtk.Container) (widgets:Gtk.Widget list )= match widgets with | x::xs -> (container.Add x; GtkAddMany container xs ) | [] -> ignore;
GtkAddMany controlBox [ numLabel; incButton] |> ignore
名前はこちらからいただきました
さらに追記
ご指摘いただきました
let GtkAddMany (container : Gtk.Container) (widgets : Gtk.Widget list) = List.iter (fun widget -> container.Add widget) widgets
これAddあるコンテナに対してDuck typingできるんじゃない?
inlineを使えばもうちょっと抽象化できるんだけどリンク先の通りご利用は控えめにという感じですね
いすみ市に海水浴場の砂ってどうなのよ?って聞いてみた
ので、メモしておきます
発端
都内在住で8月に友達と海に行こうぜ的な話をしていました
そこで、そういえば海水浴場の海とか砂ってどうなのよと思って、いすみ市ホームページを見る。
こんなのを発見した
ん?
ん?
異常値の基準値として用いたなら納得できるが、どうなんだ?
ついったで
なんてつぶやいてみたものの詳しい人いるかな的な期待は崩れ去りとりあえず聞いてみるか、という方向で帰着
送ったもの
お世話になっております 都内に住んでいるのですが、 今年の夏ごろに海水浴場(大原駅最寄)によらせていただく予定です。 楽しく遊ぶためにも、質問に答えていただければと思います。 というのは、いすみ市で提供いただいている資料が、よくわからないからです いすみ市海水浴場等砂の検査結果(平成23年7月1日現在) http://www.city.isumi.lg.jp/topics/housyanou%20suna.pdf これについては、砂がある程度の指標を満たしていることがわかります。 ですが、「どこで測ったのか」がわかりません 地表に接地して測ったのか? 砂地から1m離して測ったのか? 離して測ったことによる値が問題ないのならば、そこを歩く上では問題になりません。 ですが、そこで砂遊びをしたり寝転がったりするには、砂地に接地した状態での放射性物質の状態が必要です。 砂地表面でも現状はさほど問題ないレベルでは、と思っていますが、これは「成人男性に」だと思われます。 「子供にとって」と、「出産のありえる年齢の女性にとって」安全なのか、 が重要な指標となりますので、厳正にチェックしていただき、必要ならば砂の入れ替えなどを行っていただければ、と思っています。 以上、ご回答ください
で、このまま送ったけど改行が全部消えた状態で送られたのでいすみ市さんはもうちょっとまともなフォームとか使ってほしいと思いますね
回答
電話できた
あとでまとめる(かも)
- 砂を採取して測っている
- 基準点を設けて、半径1mを90度四方にわけ、中心と合計5点の砂を採取
- その結果の測定値として、測定器の下限以下の値をしめしていたようなので「なし」という記述をしている
- 今後は大人が遊ぶ場合の高さ(1m前後?)・子供が遊ぶ場合の高さ(50cm前後?)にも注意して測定してみようと思う
というおへんじがきました。
(あ、そういえば転載許可もらってない・・・ 文句出たら消します
海水浴場の砂とか気になっている人の参考になればと思います
Boost勉強会に行ってまいりました
自分はというと、座席表の後ろのほうでおお、あれがtogetter職人様の手さばきか!とか関心しながら見ていたわけです。
Boost.Fusion
変数に名前付けてパースができますよ的な
便利ですNE!
会社で使いたいんだがちょっと厳しいかなと
セキュリティ入門
まあBoostというかC++あまり関係ない箇所も多数ありましたが。
知らない単語だらけだったので復習が必要です
OpenAL
結論としてOpenSL使いましょうというのがなんともかんともry
独特だけど慣れるのはそんなに苦じゃなさそうな構文だったかな
Live Streamingについて
IIJによる、この勉強会の配信に使われているストリーミングとは?というもの
M3U8 Live Streaming?
配信で見てる人は神画質だなとか書いていたので評価は高いようですね
proto
うーん、よくわからん・・・
dtl
どんなコードでも!ってのがミソですね。誰かD言語版をry
あとちょいちょいわからん用語があったのでフォローが必要
shared_ptr
HWNDはー・・・なんかうまくラッピングできそうだけどなあ
最近ちょっとGUIやってないから頭まわらんけどもこういう感じでやろうよねとしか考え付かない
Optional
便利だよねってことはわかってるけど拡張うんぬんがちとわかってない。
復習しましょう
TR18015
計測大事!
どうも自分で読んだほうが楽しそうなので翻訳される前に読んでしまえという考えもなきにしも
ゲーム開発
計測大事!
カスタムアロケータなどをうまいこと用いて上手にゲーム開発をしましょう、ということのようだ
C++ではまる
localeはいらない子です。
でもlocaleないと困る処理も絶対あるよねというのが123,456にあらわれていました
(まあそんなんSTL任せにするのかよとか思ってる人もいそうですが
progress_display
boostにこんなんあったんだ!!!!
マジ使いどころがないんですけど!!!!
timerのオマケ枠的な扱いなんですかね
後日談
お昼ごはんを最寄のファミマで買ったんですが、お釣りの10円玉のうちひとつがスペイン5セント硬貨だったようです
スペインの5セント硬貨ってのはこれなんですが、10円玉より一回りくらい小さい事を除くとなかなかパッと見で見分けがつかんわけで・・・
しかも5セントってことは6円くれーじゃねーかというひどいオチつき
win32++とはなんぞや
Win32++: A Simple Alternative to MFC.
なんだろうこれ
とりあえず使ってみた
あ、環境はVS2010でUNICODEでっす。環境によってはL""をTEXT("")とかにするとかSetWindowText()にするとか
つーかヘルプに書いてあるこれ↓うごかんだろ・・・
//ページ:"CWinApp Class" return WndProcDefault(hWnd, uMsg, wParam, lParam);
ほぼサンプルからコピペ
#include "win32pp\wincore.h" class CView : public CWnd { public: CView() {} virtual ~CView() {} virtual LRESULT WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: //End the program when window is destroyed ::PostQuitMessage(0); break; } //Use the default message handling for remaining messages return WndProcDefault(uMsg, wParam, lParam); } }; int APIENTRY WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { // Start Win32++ CWinApp MyApp; // Create our view window CView m_View; m_View.Create(); // Run the application return MyApp.Run(); }
ボタンつけてみる
#include "win32pp/stdcontrols.h" #include "win32pp/wincore.h" class HelloBtn : public CButton { public: virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam) { switch (HIWORD(wParam)) { case BN_CLICKED: MessageBox(L"Hello World!", L"hello", MB_OK); return TRUE; }; return FALSE; } }; class CView : public CWnd { HelloBtn testBtn1; public: CView() {} virtual ~CView() {} virtual LRESULT WndProc(UINT uMsg, WPARAM wParam, LPARAM lParam) { switch (uMsg) { case WM_DESTROY: //End the program when window is destroyed ::PostQuitMessage(0); testBtn1.Destroy(); break; } //Use the default message handling for remaining messages return WndProcDefault(uMsg, wParam, lParam); } virtual void OnCreate() //いにしゃる { testBtn1.Create(this->m_hWnd); testBtn1.MoveWindow(10,10,100,100); testBtn1.SetWindowTextW(L"test"); } }; //mainは略
てきとーに書いたけど動いた!わりと便利かも!
リンクなど
【書籍】Presentation Materials: Overview of the New C++
Overviewで300ページ超とかどういうことなん?
でもMeyers氏の本だしはずれではなさそうだよね
Highscore : The boost C++ libraries
書籍の電子化らしい?いまさら見つけたけど結構データはある
でもちょっと古い(1.34くらい?Filesystemがv2だし)
Visual Studio のツールと拡張機能
VS2010の便利ツール一覧
多分使わん
GitでWebサイト管理をしてみる
T/O
あとでよむ・・・・かも
オープンソースプロジェクトに対して、よりよいサポートを得るには?
Ten ways to get (better) support for an open source projectの和訳
まだ途中。多分書かない(てめえ
- MLに入ろう - Google GroupとかLibrelistとかの自分が気になるものに入ろう、質問する前に過去ログ読めよ!
- IRCに入ろう - IRCで開発者と直接コンタクトがとれるかもよ!
- 問題を見つけよう
- 意地悪になる理由はないよ
- 問題を見つけたら詳細に報告しよう
- こけるテストを書こう
- パッチを出そう
- 質問をつぶやこう!でも気取ったりいやらしくふるまっちゃだめだよ!
- お金を払ってあげよう
- 開発者に感謝を忘れないこと!
gaspってどう訳すりゃいいんだ・・・