カテゴリー : C++

このカテゴリーの登録数:13件 表示 : 1 - 13 / 13

Aug 29, 2009

めまぐるしくSilverlightにSQL Serverを経由して、結局WTLの世界にカムバック中

もうホントに労組活動で疲弊している今日このごろです…執行委員辞めたのに収入源に直結する昼間任務がまったく減らない。夏休みとったのもありますが、今月は10万円減となってしまいました。そして5連休のある来月も似たような感じになりそうで、資金不足により冬はあんまり旅行できそうにありません。
でもこれは単純に、現下で抱える争議がたまたま日程的にバッティングの嵐になっている影響もありまして。
一番ムカついてるのが、いきなり第1回めの団交の冒頭で実質拒否をされて、抗議したら雇用側から労働審判に訴えてきたっていうやつ。先方の弁護士はヤメ検で、かの大手悪徳金融業T社で社外取締役をやっていたという輩。要するに、中小企業での労使問題の解決のノウハウなどまったくなく、「そんなの労働審判に持ち込んだらあんたらむしろ簡単に負けますよ」っていう話をわざわざお金かけて訴えてきて、んで実際に第1回審判で雇用側敗北がほぼ必須になっちゃってるわけです。しかしとはいえ、労働審判なのでこちらも弁護士を立てねばならなくなる上に、こちらが勝訴しただけではそれが持ち出しに終わるっていうまったく腹立たしい話なんですよね。労組も解雇された本人も金銭的に困るし、担当の私も昼間の時間を吸い取られてやっぱり金銭的に困るっていう。いわゆるSLAPPとは規模はまるで違いますが(^^;;)、でも構造としてはこれ、単に労働者への嫌がらせっていうだけです罠。

さて、しかし、確かに収入源は、こゆ身では精神的には深刻ではあるのですが、でもたぶんそれをより増幅して感じてしまうのは、むしろ労組活動ではなくて仕事のせいじゃないか、という話だったりもします。

つい先日まではFlexだなんだと格闘してて、で実際にFlexについてはかなりモノにできてきた感じなのですが、しかし先々週に突如申し渡された「よねざわさん、Silverlightの手伝いをしてください」との声。
んな、Flexの対抗馬とはいえ、それM$でしょ?C#でしょ?とビビりながらも、当該任務に困っているSさん(このぶろぐで久々に登場!)からアドバイスを受けながら、1日で最低限マスターして逆にコード書きの手伝いをはじめたりして、おお、Silverlight面白いけど「なんでもコード書いて解決すりゃええやん」という私にはFlexの方がなじむなぁ、なんてぶつぶつ言いつつバリバリSilverlightでお仕事。

しかしそれが収束に向かい始め、先週頭に仕事ないですよー、と訴えたら、今度は別の部署から「よねざわさん、SQL Serverの手伝いをしてください」との声。
えーっまたM$かよ!と思いつつ、Windows Serverはセットアップしてくださるってことなんで、今度はC#かはたまた懐かしのVBか(笑)、と思ってたら、「SSIS使ってください」。
な、な、なんじゃこの電子ブロックは!?!?と、M$な世界がよくわかってない私は率直に思うわけですが、結局これで複数のExcelシートからデータインポートするパッケージを作ることになったわけです。
列行変換があるのでそこはC#で書いて、でようやく昨日できあがったんですけど、できてしまえば意外にシンプル、でもSSIS以前にSQL ServerもADOもなーんも分かってない私にとって、むしろそれらのスキルが不足つーかほとんどない状態から作るのは相当の苦行でした。

で、それは昨日できあがったわけですけども、実は今週頭からはさらに別の任務が並行化。「よねざわさん、インストール不要なWin32アプリを作ってください」とのお声がまたまたかかり、イマドキなんでやねん、と思いつつも、それならと利用を提案してめでたく通りまして、実に久々にWTLですよ!!!
Silverlight開発のためにVS2008はインストールしていただいてたので、そこにWTL8.1を入れて、さっそくモック作って「早いですね!」ってほめられましたが、これは明らかにWTLがほめられただけですね。笑
それにしてもWTL、8.1になってたんですね! しかも日本語パック出てて、Wizardから出力されるリソースがデフォルトでCP932だし!!!

そんな感じで過ごしてきた今月のお仕事でしたが、でもやっぱり…FlexとPHP開発を入れて、さらに仕事じゃないけどこちらのサーバセットアップ(ようやく終わりました…)を合わせると、今月だけで6技術の並走、うち2技術は完全に初歩から。
このトシでこれはやっぱりキツいよ…
キツいけどそれはそれで面白かったりもして、でその面白さが時間の不足や脳ぢからの不足を責め立てるからこそ、疲労もたまるし愚痴も出るんじゃないかなぁ。

…とこれ自体が愚痴か。笑

Oct 07, 2006

Pocket PC 2003 Emulator が起動しません。。。

大雨で東北の鉄道がほとんどすべて止まってしまい、福島からバス2本乗り継いでなんとか鳴子温泉入りできました。。。

で、もうプロとしてC++屋はできないと思われる私が、アマとして最後の悪あがきで、昨晩eMbedded VC++ 4.0を自宅PCとれっつのにインストールして、自分で使うW-ZERO3用のアプリを組もうというわるだくみ。今回は体調最悪なのでリアル湯治で、宿から買物以外では出ずに開発だけしてよう、と思いインストールと起動確認だけして出発して、電車の中で軽くやってみたのですが。。。

もののみごとに、Pocket PC エミュレータにイメージが転送できません。。。

せっかく久々に新たな環境で何かやってみようかな、と、相当心にドーピングで臨んだにもかかわらず、この体たらくですよ。。。

そして先ほどやってみたら、何の問題もなく転送成功。もしやと思いテストしてみましたが、要するにLANかインターネットとつながってないとエミュレータ起動しねーよってことでしょうか。。。

解決策もモバイル環境でぐぐったレベルではちょっとみつけられなかったので、とりあえず電車の中ではできないけれど宿の中ではできる、ということで今のところナットクしたことにしておきますが、まぁこんなものですよねぇ。。。99粒の涙

Aug 31, 2006

もうC++でプリミティヴはムリ(ってこればっか…)

ポスト @ 1:14:05 | プログラミング,C++,BREW

昨日更新しようと思ったのですが、まったくキーボード上の指が動きませんでした。。
というわけで多少復調した今夜書いています。

ただいまのお題はBREW上で動かす非決定性有限オートマトンエンジンを作る。ちなみにオライリー本は持っておらず買うつもりもありませんので、純粋に理論から組みます。

BREWなのでメモリ制限(正確には、フラグメンテーションに対する制限)がキツいのですが、とりあえずは普通にノードを構造体で抱えてグラフを作ることにします。

そして、それらノードを抱えておくメモリプールをどう管理すればよいのか、で時間が空しく失われてしまっていったのでした…涙

もっと読む...

Aug 25, 2006

ARM C++ Compiler のバグというかだめだめなところ

ポスト @ 0:37:10 | プログラミング,C++,BREW

BREW用C++ライブラリを作っていていつもハマるのが、ARMコンパイラのC++、特にテンプレート絡みでのバグの多さです。。。

今日ハマったのは、こんなケースです。(実際にはもっとテンプレート引数多し)

template<class Key> class EqualTo { ... };
template<class Key> class DefaultHasher { ... };
template<> class DefaultHasher<int> { ... };
template<> class DefaultHasher<const CString&> { ... };

template<class Key, claee Value, class Hasher = DefaultHasher<Key>, class Compare = EqualTo<Key> > class CHashTable { ... };

CHashTable<int, CPairT<int, int> > map; // <- ERROR OCCURRED!

コンパイラのメッセージとしては「テンプレート引数が無効」だとか…

いろいろ調べましたが、どうやら、以下のようなカラクリがあるようでした。

  • テンプレートクラスのテンプレート引数に、前方参照で引数を用いるテンプレートがあって、
  • そのテンプレートに、その引数で一致する特別バージョンがあると、
  • ARMコンパイラはそのテンプレートを解決済みの普通のクラスとみなしてしまい、
  • 大元のテンプレートクラスをインスタンス化する際に「テンプレート引数の型が合わない」とみなしてしまう

あぁなんのこっちゃ。。。

ちなみに、特別バージョンのない EqualTo<Key> ではそういう問題は起こりません。

ARMコンパイラは、少なくとも VC6 よりはテンプレートをまともに解釈できるようですが、そのまともぶりが中途半端なので、時としてこういうよくわからないワナにはまってしまうのでした。。。。涙

Aug 15, 2006

もうC++でプリミティヴはムリ

ポスト @ 23:59:01 | 日常,プログラミング,C++,BREW

昨日はまずまずの調子も、今日は昼までもう大変な状態になってしまい、落ち着いたところで出勤、その後はなんとか過ごせました。。。

で、今は例外が使えない(のでboostどころかSTLすら使えない)BREW用にC++のライブラリを実装しているのですが。。。

もう、私の脳では、プリミティヴなメモリ管理をしながらも汎用性を持つようなクラスを書くのはかなり困難だってことを、改めて感じつつも作業しています。
まだギブアップしていませんししなくて済みそうな気もするのですが、いかんせん作業遅すぎ重過ぎなのでした。

似たことをしてるJavaのサンプルソースを見て、これならまだ今の自分にだって楽に書けるさ、とかは正直思うのですが…この落差、確実に「感じていなかった」少し前までの自分を思い出すに、老化をリアルに体感しています。。。

Apr 27, 2006

恐るべし関数オブジェクト

ポスト @ 23:38:23 | プログラミング,C++,BREW,ATL/WTL

本日のお題は、BREWのログ取りです。

BREWには DBGPRINTF() という、シリアルにログを吐くマクロがありますが、これが今3くらい信頼性に欠けるものでして、しっかりログを取るためにはやはりファイルにダンプできることも必要になってきます。

そこで私に与えられた任務:リリースビルドではきれいさっぱり消滅し、それ以外は条件コンパイルでシリアルログ・ファイルログを切り替えられる CLogger を作れ。

そしてこれを実装しようとしてすぐ直面するのが、「マクロで可変長引数を実現する」手法です。

「リリースビルドで消滅」は、、マクロ定義を切り分けて、その場合に ';' のみに置換してしまえば問題ありません。デバッグログなので、__FILE__ と __LINE__ を出力に埋め込むのは必須ですが、これもマクロの中に埋め込めばよいわけです。

そしてここではたと困るのが、DBGPRINTF() ってくらいなんだから可変長引数にしなくちゃいけないんだけど、マクロにそんな機能なんかないよ、というところなのです。

ちなみにBREWのマクロは、おおむねこんな感じ。

もっと読む...

Apr 12, 2006

ごまかしはききませんでした、笑

ポスト @ 22:53:19 | プログラミング,C++,BREW

土日は青森で癒されて空気入れられて(大笑)、で月曜から仕事にふたたび集中。

月曜はKさんが風邪でお休みとなり、その合間に、結局は一部メンバを privateから protectedに変更することで逃げまくって、ウィンドウイングとか動くようになりましてほっ。

しかし当然、そんなコードにはダメ出しが出るに決まってました。笑

火曜にはKさんにいろいろぶつぶつ言われ、結局は書き直すことに。笑

とはいえ、とりあえず提出するブツの期限というのもありますから、今のところはこれを使って、他のタスクが空いたときに、きちんとウィンドウマネージャを書き直すつもりであります。

Apr 07, 2006

もうダメですかね、笑

ポスト @ 23:29:50 | プログラミング,C++,BREW

今宵は青森に向けて旅立ってます。速報はいつもどおり旅blogで

それで、会社から直接出発したのですが、その出発直前で仕事にドン詰まり。
フレームワークのウィンドウクラスを設計して実装したのですが、さーいよいよコンパイルしてみてテストしよー、とかなったときにKさんにあっさり言われた「あ、friend 使わないでくださいね。」

…さー困った。
なにせウィンドウの生成時にだけ、ベースクラスが持つべきウィンドウの情報や親子関係を、ウィンドウの種類によってカスタマイズするため、それらを private にして、各ウィンドウ種のやはりベースクラスだけがそれらをいじる、とするために friend 使ってしまってるのです。もち、このフレームワークを使う人はそれらメンバには触れないわけですが。

きちんと OOP させるためには、friend は演算子オーバロード以外ではご法度、というのは私もわかっています。
が、所詮 C++ 使う開発ぢゃん、という甘えにおぼれてきた私は、いつも friend でさくさくやってたので、とても困ってしまいました。

仕方がない、全体としてやりたいことは明確になっているので、生成&管理部分とそれ以外を分割して全部書き直すかなぁ。

あぁ、こうして私の今後の休日はどんどん減っていくのでした。
そして、言われてからすぐに方針を決められなかったという現実、もうプログラマとしての終焉が、やっぱり近づいてるんだなぁ、と思わずにはいられません。

Nov 29, 2005

そりゃーstableになんねーよ! 笑

ポスト @ 20:47:33 | プログラミング,C++

本日のドジ。

CContentDataクラスの、特定のメンバで比較を行う Less関数オブジェクトを作りまして、それをstd::stable_sort()に食わせて、std::deque をソートする機能を作りました。

で、それができた後、「同じソート用キーが何度も押されたら、トグルで昇順・降順でのソートを切り替えてくださいよ」てな話になりまして。

std::stable_sort(list.begin(), list.end(), CContentData::HogeLess());

なんてコードで昇順ソートはできていたので、降順用に

std::stable_sort(list.begin(), list.end(), std::binary_negate(CContentData::HogeLess()));

って書いてみたのですがコンパイルエラー。

もっと読む...

Nov 14, 2005

いっちょあがり!

ポスト @ 22:34:36 | プログラミング,C++,ATL/WTL

というわけで、当初提出した線表のとおりでもののみごとにCOMコントロールが一応の完成。
まだ、本来 IStream から読むべきオブジェクトを fstream から読んでたり、描画はベタベタだったり、最後に返すのはオブジェクトでコレクション化したほうがよかったりと問題は多々あるのですが、とりあえず現状このクオリティでよいということで。

もちろん、明日から次の任務が始まるので気は抜けないのですが、ATL7にも慣れてきましたし、徐々に温泉&全駅制覇レポートも再開してこうかなーとか思ってますです。

しかしATL7はいいなぁ。今日、元バイト(で今は代表取締役社長)のKさんから聞いたんですけど「これ、3のときと別人が書いてるんじゃ?」と。生粋のMSっ子(笑)のKさんは少々ご不満もあるようですが、STLとの親和性が大幅に向上したATL7、私は大好きです♪

Nov 11, 2005

Bidirectional Iterator の end() に -- できるのね

ポスト @ 14:55:07 | プログラミング,C++

.net 2003 のSTLではできました。実装覗き見しても確かにできます。
でもこれって、STLの仕様としてはどうなんだろう…できそうな気もしますが。

Nov 02, 2005

うぉー遅めに出した予定の2倍をもくろんでいたけど終わらなかった

ポスト @ 23:18:18 | プログラミング,C++,ATL/WTL

お仕事も順調に2日め。いやーもうATL7.1の、3.0からの変わりっぷりに目を白黒させつつ、いつものパターンであーでもないこーでもないと試行錯誤を繰り返しているうちにあっという間に過ぎ行く時間。「2日かかります」としてあったボリュームのパートを、ヒソカに今日中に終わらせようとしましたが到底無理で、その分の75%くらいの進捗でしょうか。
2年半ぶりにC++、Windows、ATLに手を出してみて思ったのは、やっぱりC++って、悩むところがCとは本質的に違うなぁ、って率直に感じてます。Cだと、戦略で悩むのが90%で、それが決まったらひたすら書いてくだけ、という感じですが、C++だとなぜか「どう実装するのがいいのかなぁ」と、戦術の部分で悩む時間がとても長くなってしまいます。ただでさえ順応するのに時間がかかる、アタマの硬い私(私は、いったん習得したことを速くこなすのは得意なのですが、習得を早くこなすのが大の苦手なのです)には、仕事上のつらさが身にしみるところです。

Nov 01, 2005

はつしごと〜

ポスト @ 23:44:45 | プログラミング,C++,ATL/WTL

昔懐かしの職場に久々に出勤。前と同じ顔ぶれは半分くらいだけど「おひさしぶりです」とご挨拶しつつさっそくお仕事。さっそく、まずまずのボリュームのCOMコントロールの製作を割り振られまして、久々に見るATL、つーか7.1はずいぶん3.0と変わってるよ!(汗) という感じでなんとかやっております。

今回のは9・10月よりさらに報酬がよいのですが、さすがに10月のあの地獄のようなことはないだろう、というスケジュール。ということで、「どのくらいでできる?」との問いに「××日くらいで…」とそれなりの返答をしてみたのですが、チーフさん明らかに渋い顔…

つーか正直、この仕事をその日数でできる人ですら限られてると思うんですけども。笑

あぁ、やっぱり報酬高いだけあるなぁ。
9・10月は無理無茶難題という意味で精神も肉体も大変でしたが、これからの3ヶ月間は純粋に脳みその問題として大変そうな感じです。