2015年11月25日 (水)

生存報告

・・・なんてタイトルを使うことがあるとは思いませんでしたが・・・(^^;。

いや、もう、忙しい。忙しいのはいいことですが、賃金に反映されないのは・・・。まあ、個人的な部分も大きいので、しょうがないんですが。

気がつけば、一年以上、放置してたんですねぇ。頑張って、更新できるようにしていかないといけません。

ただ、この一年、ゲーム関係は全くプレイしていませんので、コンバーター関係の更新は期待しないでくださいませ。というか、Windowsタブレットが安くなったので、プレイするだけなら、わざわざ変換しなくても大丈夫になってきているのではないかと思いますし。

今後、わざわざ変換するとしたら、より快適なプレイを求めて、ということになるんでしょうね。

| | コメント (0) | トラックバック (0)

2014年8月 6日 (水)

本日の結果

チャートを見て、何となく嫌な予感がしたんですが・・・。

あまり動きがないような気がしたので、「相場が寝ている」というやつなのかなと思いながらも、「まあ、昨日予想外の収益があったし、負けてもいいから勉強のつもりでやってみるか」とチャレンジ。

結果、ボロ負け。何というか、心構えの面で、始める前から負けていたのかもしれませんが・・・。何と、勝率36%。欲に目がくらんだり、損失を減らそうとして墓穴をほったり・・・orz。
昨日はできていた自制が、ほとんどできていなかったという情けなさ。結果として、必要のない損失まで出してしまっています。

損失 53000円
収益 25690円

27310円のマイナスです。普段は、5000円のマイナスで止める、という方針でやっているんですが、なまじ昨日の貯金があるから、と思ってしまったのが敗因ですね。

教訓
・相場の動きが小さい時には、無理をしないで手を引くこと。
・自分で決めた損失ラインは守ること。

| | コメント (0) | トラックバック (0)

2014年8月 5日 (火)

本日の結果

損失 22000円
収益 40985円

というわけで、18985円のプラス。勝率は、72.5%。今日は運が良かったんでしょう。
時間は、あれこれやりながら平行してやってるのではっきりとはいえませんが、3時間半ぐらいでしょうか。

うーん、時給にしてみると・・・。片手間にできることを考えると良いバイトですね。まだ赤字ですが・・・orz。

| | コメント (0) | トラックバック (0)

2014年8月 2日 (土)

御無沙汰しております

いや、もう、バカバカしいぐらい忙しかったんですよ、ハイ。

だというのに、金はない、という状況なので、片手間にできる少額投資などを始めてみたわけですが、結構面白いですね。ゲームのつもりで墓穴を掘らない範囲でやってみようと思います。せめて黒字になるまでは頑張らないと(墓穴)。

残念ながら、最近は殆どONS関係の作業ができていません。文庫エディタの方も同様です。(全国に何人かいるかもしれない)楽しみにされている方には申し訳ありませんが、当分、こんな感じだと思ってください。

んで、備忘録がてら近況(と言っても、ここ2年位にあったことですが・・・)報告。

以前、ニアフィールドサラウンド環境を構築しておりましたが、フルHDプロジェクタを安く手に入れることができたので、本格的なホームシアターを構築。と言っても単なる六畳間ですが(^^;。
狭いので大型のスピーカーは置けませんので、例によってBOSEのキューブ型サテライトスピーカーとサブウーファーのセットで7.1chを構築しています。フロント、サラウンド、0.1ch用と、3台のサブウーファーをセットするという豪華(?)仕様です。まあ、サラウンドバック用にも一台確保してはあるんですが、フロントを左右独立にするかどうかで思案中です。

それにしても、サブウーファーがこれだけあると、音の善し悪しは別にしても、ハリウッド物の映画とか見てると低音がすごいことになります(^^;。田舎の一軒家なので、あまり防音に気を使う必要がないのがありがたいです。

その一方で、あまりのんびりとテレビの前に座っていることができなくなってしまいましたので、タブレット端末でのテレビの視聴環境を構築しました。「スマホのワンセグでいいじゃん」という声が聞こえてきそうですが、我が家は電波状態が悪いので、ワンセグはほとんど使用不可なんです。

というわけで、またしても近所のハードオフに行ったわけなんですが、どういうわけかあるんですよね、こういう時に。不思議なものです。というわけで購入しました、SLINGBOX PRO-HD。これで、家庭内および外部でのテレビの視聴環境が確保出来ました。有料ではありますが、アプリを導入することでAndroidタブレットやスマホでテレビの視聴ができます。一番のメリットは、ワンセグと違い画質がいいこと、ではなく、HDD録画機の操作ができることです。おかげでBSやWOWOWも見れるし、出先から録画予約を入れたり、不要な番組をHDDから削除することもできます。もちろん、画質もいいんですけどね。

で、あちこちでテレビやビデオが見れるようになったのはいいんですが、なかなかシアターで本格的に映画などを見る時間の余裕が無い。アンプやプロジェクタは消費電力もバカにならないので、うっかり寝てしまうと、電気代とかも気になりますし・・・。

というわけで、低消費電力での映画鑑賞を考えた時に復活したのが、数年前に中古で手に入れていたSonyのヘッドマウントディスプレイHMD-T1。誘惑に負けて買ったんだけど、動作チェックしたあとは、アバターの3D版を手に入れた時に使っただけという・・・orz。いや、ほんとに役に立ってなかったんですが、売らずに持ってたので使ってみると、意外に行けます。何と言っても、見ながら寝てしまってもほとんど気にならない消費電力(^^;。

ただし、初期型なので、調整機能を含め画質がいまいちこなれていないのと、オーディオフォーマットへの対応を含めたサラウンド関係の貧弱さが気になります。というか、映画では音響面の弱さは致命的です。でも、オープンエア型のヘッドホンとの一体型なので、改造する以外には対応する方法がありません。

どうしようかな~、とか思いながら1,2週間、近所のハードオフに通っていたら、ある日突然、HMD-T3Wの中古(ほぼ新品)が。・・・、ええ、買いましたとも、ローンで(笑)。深夜の映画鑑賞用に使っていたワイヤレスサラウンドヘッドホンとの組み合わせで、非常に良い感じになりました。

というわけで最近の映画鑑賞は、ソファーに横になっていつ眠り込んでもいい体勢で、ということが多くなりました。というか、疲れていることが多いので、最後まで見終わることは殆ど無いんですが・・・orz。

こうやって書いてみると、本当に我が家には中古で手に入れたものが多いですね。ハードオフには足を向けて寝られない感じになってきました。

| | コメント (0) | トラックバック (0)

本日の結果

 バイナリーオプションなる、初心者でもやりやすい投資があるということなので、始めてみました。といっても、知識も何にもなかったので、見事に10日で6万円ほど無くしてしまいましたが・・・。といっても、多少はルールが分かってきた感じで(もっと勉強しないといけませんが)、何とか様になってきました。

 で、記録していかないと何がどうなっているやら分からないということになってしまいそうなので、メモしていくことにしました。

損失 27000円
収益 32370円

5370円のプラス。勝率は22÷38ということで、57.9%。所要時間は3時間ほど。時給にすれば悪く無いですね。

 でもまあ、欲を出して失敗したり、損が嫌で墓穴をほったり・・・(^^;。自分のメンタルの弱さを実感できる良い機会でもあり、面白いですね。

| | コメント (0) | トラックバック (0)

2014年3月 8日 (土)

あけましておめでとうございます

・・・、三ヶ月遅れですが・・・orz。

いや、もう、なんでこんなに忙しいんでしょう? 本当にバタバタしております。
ソフトの開発も、仕事関係のものを休憩時間に少々触る程度で、ほとんどできてませんし・・・。「コンバータなんて、とてもとても。」という状況です。

とは言いながら、何も進展しないのも癪なので、開発マシンの方に少し手を入れてみました。
Macbook ProのHDDをSSDに換装したら、VirtualBoxがサスペンドでハングアップしてしまう症状が頻発したので、一念発起して、商用ソフトのParallelsDesktop9を購入してみました。と言いますか、AppleストアでParallels Desktop 9 for Mac 優待版が売っていたので、Fusionからの乗り換え版だと気が付かずに買ってしまいました(^^;。

気がついた時には、「どうしましょう~?」とか思いましたが、やってみたら、フツーにインストールできてしまったので一安心。しかし、さすが歴史のある商用ソフト、無料の
VirtualBoxとは比較にならない速度と機能性です。3Dゲームあたりも問題なく動きますし、もっと早く購入するのだったと、ちょっと反省。まあ、試しにインストールしただけで遊ぶ暇はないので、ゲーマーさんに十分かどうかはわかりませんが、ダメゲには十分でしょう。仮想環境を本格的に開発や遊びに使う気があるのなら、購入しても全く損はない買い物でしょう。

で、仮想環境を本格的にあれこれできるようになったのはいいのですが、となるとやっぱりSSDだけでは容量が足りません(Macbookでも、たまにはアニメも見たくなりますし・・・)。というわけで、内蔵DVDをHDDに換装してしまいました。ディスクが使えなくなるのは残念ですが、バッグと職場にポータブルを1つずつ確保しておけば実用上問題無いですし。というわけで、現在、SSD(256GB)とHDD(750GB)で、ほぼ1TBの容量が確保できるようになりました。これなら、出先でのストレージとしても十分に使えます。良かった良かった。

・・・。問題は、そんな使い方をする時間がどこにもない、というなんですが・・・orz。

気を取り直して。

まあ、こんな感じなので、今年の更新はかなりのスローペースになると思います。ほとんどいないとは思いますが、楽しみにしてくださっている方がおられましたら、ごめんなさいです。

| | コメント (0) | トラックバック (0)

2013年11月 8日 (金)

Qt on Androidにプロジェクトを移行する際にハマったこと その3

 さて、ずいぶんと間が開いてしまいましたが、さらに追記。あれこれググってみたりした結果、以前の問題がある程度解消しています。

◯ロケールがちゃんと取得できない、みたい。

 よく考えてみたら、ロケールを取得できないにしても、ロケールを設定できる方法はあってしかるべきです。というわけで、よく探してみたらありました。

    QApplication a(argc, argv);
    QLocale::setDefault( QLocale( QLocale::Japanese, QLocale::Japan ));

 とやってやれば、カレンダーやら数字やらがきちんと日本風に表示されるようになります。

◯QComboboxのプルダウンリストなどの文字サイズが最小化されてしまう問題。

 これについては、やはりフォント関係のバグの様で、以下の様にすればOKとのこと。

    androidDpi=QPaintDevice::physicalDpiX();
    androidFontsize=androidDpi/10; //割る数についてはお好みで。
    QFont myf=QApplication::font();
    myf.setPixelSize(androidFontsize);
    QApplication::setFont(myf);

 上記の様にすると、アプリ全体の基本的なフォントサイズをきちんと設定できます。

◯スクロールバーの幅が細くて、スクロールさせるのが大変。

 スタイルシートを設定してやればOK。ただし、コンボボックスの場合、スクロールバーだけ太くなると、見た目が悪いので、横のボタンも同時に太くしてやる必要があります。でも、別々に設定しようとすると、あとに設定したものだけ有効になってしまうので、まとめて設定する必要があります。とりあえず、こんな感じで問題なし。

    QApplication a(argc, argv);
    a.setStyleSheet(QString::fromUtf8("QScrollBar:vertical {"
                                      "    border: 2px solid #999999;"
                                      "    background:white;"
                                      "    width:50px;    "
                                      "    margin: 0px 0px 0px 0px;"
                                      "}"
                                      "QScrollBar::handle:vertical {"
                                      "    background: qlineargradient(x1:0, y1:0, x2:1, y2:0,"
                                      "    stop: 0  rgb(140, 160, 170), stop: 0.5 rgb(140, 160, 170),  stop:1 rgb(140, 160, 170));"
                                      "    min-height: 0px;"
                                      ""
                                      "}"
                                      "QScrollBar::add-line:vertical {"
                                      "    background: qlineargradient(x1:0, y1:0, x2:1, y2:0,"
                                      "    stop: 0  rgb(160, 160, 160), stop: 0.5 rgb(160, 160, 160),  stop:1 rgb(160, 160, 160));"
                                      "    height: 0px;"
                                      "    subcontrol-position: bottom;"
                                      "    subcontrol-origin: margin;"
                                      "}"
                                      "QScrollBar::sub-line:vertical {"
                                      "    background: qlineargradient(x1:0, y1:0, x2:1, y2:0,"
                                      "    stop: 0  rgb(160, 160, 160), stop: 0.5 rgb(160, 160, 160),  stop:1 rgb(160, 160, 160));"
                                      "    height: 0px;"
                                      "    subcontrol-position: top;"
                                      "    subcontrol-origin: margin;"
                                      "}"
                                      "QComboBox {"
                                      "border: 1px solid gray;"
                                      "border-radius: 3px;"
                                      "padding: 1px 18px 1px 3px;"
                                      "min-width: 6em;"
                                      "}"
                                      "QComboBox:editable {"
                                      "    background: white;"
                                      "}"
                                      "QComboBox:!editable, QComboBox::drop-down:editable {"
                                      "     background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
                                      "                                 stop: 0 #E1E1E1, stop: 0.4 #DDDDDD,"
                                      "                                 stop: 0.5 #D8D8D8, stop: 1.0 #D3D3D3);"
                                      "}"
                                      "QComboBox:!editable:on, QComboBox::drop-down:editable:on {"
                                      "    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
                                      "                                stop: 0 #D3D3D3, stop: 0.4 #D8D8D8,"
                                      "                                stop: 0.5 #DDDDDD, stop: 1.0 #E1E1E1);"
                                      "}"
                                      "QComboBox:on { /* shift the text when the popup opens */"
                                      "    padding-top: 3px;"
                                      "    padding-left: 4px;"
                                      "}"
                                      "QComboBox::drop-down {"
                                      "    subcontrol-origin: padding;"
                                      "    subcontrol-position: top right;"
                                      "    width: 50px;"
                                      "    border-left-width: 1px;"
                                      "    border-left-color: darkgray;"
                                      "    border-left-style: solid; /* just a single line */"
                                      "    border-top-right-radius: 3px; /* same radius as the QComboBox */"
                                      "    border-bottom-right-radius: 3px;"
                                      "}"
                                      "QComboBox::down-arrow {"
                                      "    image: url(/usr/share/icons/16x16/downarrow.png);"
                                      "}"
                                      "QComboBox::down-arrow:on { /* shift the arrow when popup is open */"
                                      "    top: 1px;"
                                      "    left: 1px;"
                                      "}"
                                      ""));

 赤字の部分は最低限、必要に応じて変更しないといけないところです。

 サンプルファイルやら、フォーラムの書き込みあたりから探してきたので、出典がどこか、分からなくなってしまっているのは御勘弁くださいませ。

◯Androidとそれ以外で処理を分ける。

 まあ、上記のような感じでAndroid用の処理が入ってくると、さすがに処理を分ける必要が出てきます。というわけで、以下のようにしてやればOKです。

#ifdef Q_OS_ANDROID
 Android用の処理
#else
 それ以外の処理
#endif

 これら以外にも、試行錯誤で気がついた部分などありますが、時間がないので、また別の機会に。ただ、実機でプログラムを動作させていると、スリープ後にハングアップしてしまうことがあります。その場合、「Fast Reboot」をインストールしておくと、すぐに復帰させることができるので、オススメです。

閑話休題

前の記事から随分間が開いてしまいました。単純に忙しかった、という事もありますが、それ以外にも、Qt5.1.1や5.2.0betaが出たので、あれこれ試してみたりもしてました。

が、しかし、・・・orz。

あくまでも個人的な意見で、かつ、Qt4で作成していたプロジェクトを移行する場合、という条件付きですが、

Qt5.1.1
 あれこれ試してみたが、実機で動かした場合、画面表示などがNecessitasの場合よりも崩れるなど、トラブルが多いのでパス。

5.2.0beta
 Ministroが対応していないため、実機で動かすのに支障があるので、パス。というか、ビルド&デプロイも、5.1.1より問題が多い感じで、まだ本格的に実機のアプリ作成には使えない感じ。ちなみに、QtCreatorの3.0が、VirtualBoxのUbuntuで起動しないというトラブルに遭遇しましたが、仮想マシンの3Dアクセラレータのチェックを外してやったら起動するようになりました。仮想環境で開発される方はご注意ください。

というわけで、結局、当面はNecessitasでの開発を続けることに決定。という感じで落ち着いています。早くQt5.2の方にも移行したいなぁ、とか思っているんですが、もうちょっと情報が増えるのを待つ感じですね。

| | コメント (0) | トラックバック (0)

2013年8月27日 (火)

Qt on Androidにプロジェクトを移行する際にハマったこと その2

無事、実機でデバッグできるようになったのはいいんだけど、不具合もいっぱい。まあ、自分のいい加減な作り方が悪い部分も(いっぱい)あるんだけど・・・。

○配色がおかしい&メニューの中身が真っ黒になってしまう、などなど

スタイルをちゃんと指定していないのが原因。アプリケーションを作成した後に、設定してやればOK。

    QApplication a(argc, argv);
    QPlastiqueStyle* as = new QPlastiqueStyle();
    a.setPalette( as->standardPalette() );
    a.setStyle(new QPlastiqueStyle());

Android用のスタイルもあるんだけど、すべてのウィジェットに対応できていないようなので通常のスタイルを設定してます。

○ロケールがちゃんと取得できない、みたい

というわけで、ファイルを保存すると文字化けしてしまったりするので、これも初めに指定。

    QApplication a(argc, argv);
    QTextCodec::setCodecForLocale( QTextCodec::codecForName( "UTF8" ));
    QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "UTF-8" ));

○QDialogを継承したクラスで、フォントサイズがおかしくなる。

と言い切っていいのかどうかは分かりませんが、アプリ全体のフォントサイズは、

    int normalFontSize = 8;

 QApplication a(argc, argv);
    QFont f = a.font();
    f.setPointSize( normalFontSize );
    a.setFont( f );

てな感じで指定できます。でも、ダイアログを開くと、一部で巨大化した文字表示されてしまいます。というわけで、ダイアログのコンストラクタで、おかしくなるフォントのサイズを指定してやることで修正。

    QFont fn = ui->label->font();
    fn.setPointSize( normalFontSize );
    ui->label->setFont( fn );

○QComboboxのプルダウンリストの文字サイズが最小化されてしまう。

    ui->comboBox->setFont( fn );

てな感じでやってみたら、エディタ欄に表示されている文字は大きくなるんだけど、プルダウンリストの文字には反映されません。これについては現在解決法が見つかりません。頭の痛いところです。

でも、まあ、Linux上で作成したものが、当たり前のようにAndroid端末で動いてしまうというのは、何というか、感動するものがありますね。よい時代になったものです。

| | コメント (0) | トラックバック (0)

2013年8月23日 (金)

Qt on Androidにプロジェクトを移行する際にハマったこと

さて、ある程度、形が出来上がってきたので、Linux環境(以下、環境L)で作成しているプログラムをAndroidに移植してみることにしました。と言っても、ソースはそのまま使えるはずなんですが・・・。

とか言いながら、やっぱりはまるところがあったので、メモ。開発環境は、仮想環境に構築したUbuntuにLxdeを入れた上で、Necessitas(以下、環境N)を導入してあります。

まず、ソースの移行方法は、もっとスマートな方法がありそうな気はするけれど、よくわからないので、環境Lの方で作ってるやつをフォルダごとUSBにコピーして、環境Nにコピー。その後、".pro"".pro.user"ファイルを削除して、端末を起動して、ソースフォルダからqmakeを起動してプロジェクトを新規に作成。うちの場合だと、こんな感じ。

> ../necessitas/Android/Qt/482/armeabi/bin/qmake -project

その後、QtCreatorで読み込むと、プロジェクトの初期設定画面になるので、右下のボタンを押して、プロジェクトを作成。

その後は問題なく動くんだけれど、ビルドすると、

> cannot find ELF information

というエラーが出て、AVDでも実機でも実行できない。と言うか、AVDでは、MinistroIIのダウンロードができなくて、だめなんだけど。でも、実機でも動かない。

あれこれやってみてもどうにもならず、頭を抱えつつ、メッセージをたよりにググってみると、

> 「画面左の「プロジェクト」をクリックして、「Deployment」の
> 「Package Configurations」の「Application」のところを*見れば*分かる。」

というようなメッセージが。という訳で見てみると、「Run」の項目に入るはずの実行ファイルの名前が空欄になっています。が、編集しようとしても、編集できません。

しばし悩んでから、先ほど新規作成したプロジェクトファイルを見ると・・・、分かりました。

> TEMPLATE = app
> TARGET =  ・・・ こいつが犯人。
> DEPENDPATH += .

という訳で、

> TEMPLATE = app
> #TARGET =
> DEPENDPATH += .

と修正してやることで、無事、実機での実行ができるようになりました。めでたしめでたし。

| | コメント (0) | トラックバック (0)

2013年8月 6日 (火)

QStringのファイル入出力について

もっといい方法があるのかもしれないけれど、とりあえずこのパターンでうまくいっているので、メモ。

<<出力>>

ofstream out;
QString txt = "テストです";

out << txt.toLocal8Bit().data() << std::endl;

<<入力>>

char buff[ MAX ];
ifstream in;
int pos = 0;
char c;

in.get( c );

while (( c != '\n' )&&( !in.eof() )){
        if ( pos <= MAX ) buff[ pos++ ] = c;
        in.get( c );
}
buff[ pos ] = 0;

QString ts="";

if ( buff[ 0 ] != 0 ){
        ts = QString::fromLocal8Bit( buff );
}

てな感じ。

| | コメント (0) | トラックバック (0)

«MACの仮想環境での、はみ出したWindowの移動