tag:blogger.com,1999:blog-45722293877016606612024-03-06T07:47:03.493+09:00緑之庵(緑之杜)ぐうたらプログラマの不定期更新日記。
最近さっぱり記事を書いていませんが、近々再開予定です。サークル名に合わせてタイトル修正しましたが、まだどちらにするか悩んでいます。hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.comBlogger85125tag:blogger.com,1999:blog-4572229387701660661.post-90977172276780798442016-04-19T13:10:00.001+09:002016-04-19T13:10:43.317+09:00Qt勉強会 @Tokyo #34 を開催しました<div style="margin:4px">
2016年04月16日(土曜日)に <a href="https://qt-users.doorkeeper.jp/events/42420">Qt 勉強会 #34 @Tokyo</a> を <a href="http://www.ptp.co.jp/">株式会社 PTP</a> のミーティングルームで開催しました。
</div>
<h3 style="margin:4px;font-size:large">簡単な自己紹介</h3>
<div style="margin:4px">
今回の申し込み者数も18人。一名来なかった方もいらっしゃいますが、前回同様、ほぼ満員ですね。今回も初参加の方や、わざわざ愛知からいらっしゃった方もいてうれしい限りです。
</div>
<h3 style="margin:4px;font-size:large">たすくさんのThe Qt Company就職</h3>
<div style="margin:4px">
これまで東京での勉強会を引っ張ってらっしゃった鈴木さんが、The Qt Companyへ就職されました。現在、事務所を探したり、人員を探したりをされているそうです。まだ組織として出来上がってはいませんが、今後の日本としてのアップストリームの活動が期待されます。<br />
就職に伴い、アップストリームの側がユーザーコミュニティの運営に携わるのは避けようということで、勉強会の主導をhermit4はじめ現在の勉強会メンバーで引きついていくことになります。元々、お子さんが生まれたばかりで大変ということもあって、hermit4の方で告知や報告を担当しはじめましたので、特に大きく変わることもありませんけどね。<br />
<br />
今後、日本でのイベント開催も年末までにはやりたいなという意向はあるようなので、その際はユーザー会としてお手伝いも募集する事になるかと思います。ぜひご協力の程、よろしくお願い致します。<br />
</div>
<h3 style="margin:4px;font-size:large">もくもく勉強タイム</h3>
<div style="margin:4px">
というわけで、その後は普段通り、もくもくと勉強タイムとなりました。途中で帰宅されて成果発表されなかった方もいますが、分る範囲でみなさんの成果報告まとめ
</div>
<ul>
<li>
<h4 style="margin:4px;font-size:medium">QMLのプロファイラと記述方法によるパフォーマンスの計測</h4>
<div style="margin:4px">
<a href="http://doc.qt.io/qt-5/qtquick-performance.html">ドキュメント</a>にはQMLについてこういう書き方は駄目ですよという情報がありますが、実際にその通り書いてみてプロファイルをしてみたそうです。
Resolving Propertiesについては、微々たる違いだそうですが、Property Bindingsについては、loop内で何度も参照されるのとtemporary変数を作るのとでは相当時間差があるとの事。なんでか速度が出ないとお悩みの方は、ドキュメントを読んで、ぜひプロファイルしてみて下さい。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">qgroundcontrolを調べてました</h4>
<div style="margin:4px">
現在使っているドローン用のコントロールソフトの使い勝手が悪く、<a href="http://qgroundcontrol.org/">QGroundControl</a>への移行を考えているそうです。
最近のドローンコントロール系はQtで書かれているものも多いそうです。
本日は、ビルドが終了しデバッグができるところまでたどり着いたとの事。
QGroundControlは、iOS/Androidの実装もあるそうで、今後に期待したいところです。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">今日はQtを使って開発した製品を持ってきたのでデモしておきます</h4>
<div style="margin:4px">
計測器や電源の開発を行っている会社で働いていて、今回製品にはじめてLinuxとQtとを採用したそうです。
色々はじめてだったため、色々つまずく事もあったそうで、ずいぶん苦労されたようですが、無事に<a href="http://www.kikusui.co.jp/catalog/?model=plz5w">製品リリース</a>したとの事。QtのおかげてGUIについては楽にできたそうです。
はじめの製品こそ苦労したものの、次の製品開発の立ち上がりはうまくいっているようなので、今後が楽しみですね。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">nVidiaの開発ボードでの作業を継続中です</h4>
<div style="margin:4px">
仕事柄、立体視関連をやっていて奥行き推定とかをやるそうなのですが、とりあえずカメラ位置調整ツールを作ろうとしています。
メーカーから提供されているQt 5.2が部分的に実装されているだけだったので苦労しているそうです。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">Raspberry Piはじめました</h4>
<div style="margin:4px">
Raspberry piにQtを入れるところまでやろうと思ってましたが、色々必要な機材がない事がわかって借りたりしていたので、
今回はOSを入れたところで時間切れとなりました。
待ち時間の間、仕事柄組込みでQtを使っているので軽いインジゲータを実装していました。とりあえず2種類完成です。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">QtModelingの調査をしていました</h4>
<div style="margin:4px">
今回はQtModelingを使ってみようとソースコードを入手してコンパイルしようとしていましたが、うまくいきませんでした。
どうやら、一部のコードでC++1zを要求しているようで、XCodeのバージョンが少し前の物なので対応していないことが原因の模様。
XCodeを上げるところからやらないと駄目ですかねぇ・・・ということだそうです。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">Sailfish OSでBluetoothの日本語キーボード対応をしていました</h4>
<div style="margin:4px">
今回は2つ目標を持っていて、入手したSailfish OSの乗ったタブレッドでBluetooth日本語キーボードを使えるようにしたいのと、
FontManagerのSailfish OSへの移植をしたいと考えていましたが、後者まではたどり着きませんでした。
日本語キーボードの件は、設定ツールと呼び出している内容を調べたところ、設定項目が抜けているだけとわかりました。
設定ツールのQML内のリストにエントリーを追加したら設定できるようになりました。
日本語のキーでキーコードが対応していないものについてはシンボルを追加し、パッケージングを行い、OpenReposのリポジトリにアップするところまで行ったとの事。
Sailfish談義したくて来たって方に話しかけられっぱなしだったにも関わらずなかなか優秀な成果を出していますよね。素晴らしい。
なお、FontManagerは、実は朝木さんが実装したものだそうです。近いうちにSRAの会場も借りてみる予定なので、その時来られるといざというときは質問できるかも。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">制作中のエディタで日本語の単語移動を実装していました</h4>
<div style="margin:4px">
Qtでエディタを鋭意作成中なのですが、利用していたQPlainTextEditでは日本語の単語単位移動できないことがわかり対応していました。
最初は、QTextBoundaryFinderを使っていたのですが、カタカナ以外はうまく移動できないとの事。
調べた結果、QTextBoundaryFinderはUnicodeの規格に則って作られているのですが、日本語だとそれでは足りないそうです。
ICUは辞書も使い日本語の単語区切りができるので、ICUのコードを呼び出すようにカスタムして対応できたとの事。
問題は、辞書ファイルが存外巨大で、フットプリントが大きいということで、悩ましい感じですよねぇ。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">Base64と戦っていました</h4>
<div style="margin:4px">
Base64はデフォルトでは+や/等のURL safeではない文字を変換結果に含んでしまうのですが、そのせいで数日ハマったとの事。
そこで、URL Safeに変換できるように修正しようと意気込んでいましたが、QByteArray自体には既にその機能があり、QMLから利用する際の
atobが対応していないだけなことが判明。というわけで、atobにオプションを渡せるようにAPIを変更していたそうです。
なお、その後テストも書いてcommitしたよとのつぶやきがあるので、次期バージョンからは、QMLでもURL safeなBase64変換が使えるように
なるかと思われます。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">作ったアプリのデプロイ方法を調べていました</h4>
<div style="margin:4px">
作ったアプリをどうやってデプロイしたものかということで、調査していたそうです。windeployqtを使えば簡単だよと聞いたけど、動かないそうで。 windeployqtは、必要なQtライブラリはかき集めてくれるのですが、残念ながらQtライブラリが必要なライブラリは探し出してくれないのです。
とりあえず、教えてもらった通りに、dllをフォルダにぶちこんだら動いたそうで、この後教えてもらった <a href="https://t.co/oW56QKtyqA">ドキュメント</a>を読んでみようと思っているとの事。ただ、Go言語などに比べるとデプロイが難しくて面倒だなぁとのご意見も。
確かに、Qt自体のライブラリ数も多い上に、Qtが必要とするライブラリも多いですからね。Windows, Mac, Linuxともそれぞれ違いますし。
一応、Windowsについては、面倒を感じているのでバイナリを解析しながら必要なライブラリの一覧を作れるツールをhermit4が鋭意開発中なのですが、メインの仕事ではないのでだいぶ遅延しています。qmake本書きが落ち着いたらなんとかします。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">いろいろ挫折していました</h4>
<div style="margin:4px">
先月に引き続きD-busを触っていました。もっとわかりやすいサンプルを作りたいと思ってがんばっていたのですが、想定した方法で実現できず挫折しましたとの事。その後、仕事の方で問題になっていた、Qt5.6からstackを連続で呼ぶと落ちるという現象を追いかけようと目標を変えたのですが、なんとこちらは再現せずという結果に。再現しなければ解決もできませんからねぇ・・・。色々挫折して終わったそうですが、そういう日もあります。めげずに頑張ってください。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">Soft bodyの関係で、Bullet Physicsの調査をしていました</h4>
<div style="margin:4px">
やわらかbodyの物理演算について調査していたとの事です。お隣に詳しい方がいたので、色々話を聞けて、PhysXを使えばCUDAで物理演算してくれるらしくて、10-20倍位早くなるようです。これをQtから使えるようにするには、ちょっと工夫しないと動かないらしいという事までは理解しましたとの事。Soft Bodyだと計算に時間がかかってしまうので、GPUで演算できると早くなるのではないかなぁと期待しているそうです。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">VLMCのリファクタリングをしていました</h4>
<div style="margin:4px">
GSoCに参加したいと思っていて、VideoLAN Movie Creator(VLMC)をSceneで実装されているものをQMLへ書き直すというのをやりたいと思っているそうです。ここ<a href="https://code.videolan.org/luyikei/vlmc/commits/master">最近色々コミットしている</a>のですが、今日はリファクタリングに明け暮れましたとの事。今後の活躍に期待します。
</div>
</li>
<li>
<h4 style="margin:4px;font-size:medium">QtIFW本の続編のレビューをしていました</h4>
<div style="margin:4px">
理ログの理音伊織さんの新刊のレビューを続けています。実際手を動かしているところで、あとちょっとで完了予定です。
なお、内容は、コントロールスクリプトを使った自動インストールの方法となります。
当落発表はまだですが、<a href="https://techbookfest.github.io/">技術書典</a>に応募中なので、当選すれば6月25日に秋葉原で販売予定です。
</div>
</li>
</ul>
<h3 style="margin:4px;font-size:large">懇親会</h3>
<div style="margin:4px">
お借りしている部屋の掃除の後、懇親会へ。
今回は、いつものお店が空いていてすんなり入れました。The Qt Company Japanの現状を聞いたり、今の日本の技術について話したり、わいのわいのやって解散となりました。
</div>
<h3 style="margin:4px;font-size:large">ツイート記録</h3>
<script src="http://togetter.com/js/parts.js"></script><script>tgtr.ListWidget({id:'963869',url:'http://togetter.com/',width:'320px',height:'240px'});</script>hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-30582411097830729392016-03-21T01:06:00.000+09:002016-03-21T01:09:20.680+09:00Qt 勉強会 #33 @Tokyo2016年03月19日(土曜日)に <a href="https://manage.doorkeeper.jp/groups/qt-users/events/40363">Qt 勉強会 #33 @Tokyo</a> を <a href="http://www.ptp.co.jp/">株式会社 PTP</a> のミーティングルームで開催しました。
<br />
<br />
<br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">簡単な自己紹介</span></h3>
<br />
今回の申し込み者数は18人。会議室が20人マックスですので、だいぶ一杯になってきました。残念ながらhermit4は遅刻しましたので、自己紹介は途中からしか聞けていませんが、今回は初参加の方がちらほらといらっしゃいました。<br />
<br />
<br />
<br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">OSCの出展報告</span></h3>
<br />
先月行われたOSC 2016 Tokyo/Springの報告をしてきました。インフルエンザで急遽参加できなかったAuguestさんはずいぶん気にされていたようですが、大丈夫、無事に出展してきましたよと報告してきました。
<br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;"><br /></span></h3>
<div>
<span style="font-size: large;"></span><br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">
<span style="font-size: large;">スパイダーのデモ</span></span></h3>
<span style="font-size: large;">
</span></div>
今回は初参加の方も多いとのことで、会場をお貸し下さっているPTPさんのスパイダーという製品のデモが行われました。まだQMLが出たばかりの頃だったので、C++で作られているバージョンだそうですが、UIはかっこ良く、パフォーマンスもよく動いていいですよね、スパイダー。なお、PTPさんではQtプログラマーも熱烈募集中のようです。
<br />
<div>
<span style="font-size: large;"><br /></span></div>
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">成果発表</span></h3>
<div>
<span style="font-size: large;"><br /></span></div>
というわけで、その後は普段通り、もくもくと勉強タイムとなりました。
<br />
<br />
<br />
<h4>
<span style="color: #38761d;">Qtのセットアップで終わってしまいました</span></h4>
<br />
一日前に届いたPCをなんとかセットアップまで終えて来られたそうなのですが、なんとインストールしたKitが足りていななかった事がわかり、Qtを再セットアップをしたところ、セットアップが終わらず・・・(他の方の成果発表中にセットアップが終わったようです)、こんなものを作りたいという案を取りまとめて終わったそうです。車が趣味の方で、車のデータを色々やって遊ぶ予定との事で、今後が楽しみですね。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">サポートに明け暮れました</span></h4>
<br />
質問を受けてお手伝いがメインだったため、Qtのあれこれブログの「Qt 5.6.0リリース」の記事の作成にとりかかったものの終わらなかったとの事です。
とりまとめが楽しみですね。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">コラージュ療法用アプリのメンテナンスを続けていました</span></h4>
<br />
背景画像を固定する機能を追加しました。あとは背景の台紙の色の選択機能とグラデーション周りの設定機能も追加しています。現在は、大きな画像の編集と保存時に時間がかかりすぎるので、マルチスレッド化しようとあれこれ挑戦中のようです。今月末には早稲田大学の方にお渡しするとのことで、最後の大詰めの作業のようです。
まだ原因のつかめない不具合がいくつか残っているということでそれが少し気がかりのようですが、早く原因が特定出来ると良いですね。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">トラブルシューティング</span></h4>
<br />
前回参加した時に教えてもらった内容を実施していたのですが、Qtにバグがあるようで、先に進みませんでした。今日は、 VFBをX11で動かすことを教えてもらったので、今後はそちらを試す予定です。
ということで、苦労が続いているようです。良い解決策が見つかると良いですねぇ。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">Enterprise Architectureの吐き出すモデルをパースするツールをQtで作れないかなと調査中</span></h4>
<br />
久しぶりに仕事を離れた何かを作ってみようかなと、EAで生成したモデルをパースするツールの作成の検討中。関連で調査している際にQtModelingというのがある事を発見。なお、どうやらQt CreatorにもModel Editorというプラグインがあるようですね。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">自作の文字幅チェックツールをLinuxで作っていたものをWindowsに移植してました</span></h4>
<br />
今日見せてもらったスパイダー(PTPの製品)のUIに触発されて、ちょっとアニメーションチックに動かしたいと思って、朝木さんのご協力のもとボタンがくるくる回るようになりました。
ということで、ボタンを押すとくるくるって良くまわってました。
なお、QFontMetricsは、フォントに対象言語の無い場合のfall-backを設定した場合に文字幅を正しくだせていないようで、注意が必要との事でした。お使いの方はご注意下さい。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">D-busの勉強をしていました</span></h4>
<br />
しばらく名古屋に帰っていましたが、このたびPTP社に転職して戻ってきたとの事です。
今回は、QDBusの勉強のために、色々試していたようで、とりあえずQDateTimeのデータをアプリケーション間で受け渡し、3つのアプリでデータを同期するサンプルを作成されていたようです。
PTP社での活躍頑張って下さい。今後、会場係とか、色々よろしくお願いします。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">FXアプリの検討中</span></h4>
<br />
最近趣味でFXを始めたのですが、いきなり5万負けてしまって、なんとか勝てるようになるアプリが作れないかなぁと検討中との事です。
方法としてはアメリカの発表を調べる方法とチャートから傾向を読む方法があるようですが、よく分からないのでチャートを読む方法を考えているそうで、とりあえず、チャートの取り込み機能部と、レートの上がり下がりでアラートをあげる機能を実装したとの事。現在は、移動平均の算出方法を調べてみているところだそうです。
儲かったら、美味しいおやつの持ち込み期待してますとか言っておいてみよう。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">AndroidアプリをQt化してiPhoneで動かしたい</span></h4>
<br />
以前Android向けに自作したアメリカの服サイズを日本のサイズに変換するツールをiPhoneでも動かしたいのでQtでiPhoneアプリを作る環境構築をしていたとの事です。
なにやら苦労されていたようですが、無事に環境は整ったようですので、移植頑張って下さい。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">Qtの5.7のビルド中です</span></h4>
<br />
Qt Quick Controlsの最新版を試してみたいと思い、ソースコードのzip版をダウンロードしたのですが、ビルドが出来なくて悩んでたとの事。zip版はWindowsで文字コード等の問題があって、ビルドできなかったそうで、tar.gzの方をダウンロードしたらビルドが始まったとの事です。
なお、ビルド待ち中に色々みていたそうですが、1.0と2.0はずいぶんと作るも違っているらしいです。1.0までは部品一つが結構複雑に作られていたものが、現在はずいぶんシンプルになっているとのことで、コレならパフォーマンスも期待出来るのではって事なので、興味深いですよね。
Ioriさんあたりが、さっくり同人誌で新しいバージョンについて書いてくれないかなぁ・・・。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">先月に引き続き時計アプリを作成しています</span></h4>
<br />
お気に入りのPalmの時計アプリの移植を続けているとの事です。今日はカレンダー部分とタイマーを作成していたとの事で、着実に先に進んでいるようですね。
最終的にはRaspberry Piにつないだ2.8 inchに表示するそうなので、完成が楽しみです。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">Qt+OpenGL+Bulletのビデオを見ながら勉強していました</span></h4>
<br />
以前、名古屋の勉強会で行われたビデオを見ていたそうです。だいぶ後になってわかったのですが、かなり古い情報だったらしくて、Qt3D等も現在とは全く違うものだったようです。
ちなみに、この頃の情報だとBulletがQt5に入るという事で、実際に一時期入れられようとしていたようなのですが、現在は抜かれているようです。
Qt3D自体を大幅見直ししている途上ですから、将来また導入が検討されるといいですよね。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">Android上でQMLの動作確認していました</span></h4>
<br />
昨日環境を整えたばかりだそうで、QMLのアプリのピンチイン・ピンチアウトがきちんと動作するのか確認していたそうです。
ちゃんと動いていたようで何よりです。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">自作のメディアプレイヤーを作成中</span></h4>
<br />
Androidで動かす前にPCで動かしていたそうです。今日はSQLiteに書かれている情報の読み込みとMP3の音が出せるところまでは行けたのですが、タイトルが取れず調査中との事で、うまく行くと良いですね。頑張って下さい。なお、本当はゲームを作成したいと思っていたのですが、ゲームの方は、QMLの課題にぶち当たってしまって現在止まっています・・・とのことで少しみんなでコード見ていました。設定をグローバルで行っているのが問題で、個別に持たせるべきとの話でした。なお、アドバイスとして、QMLでは、バインディングと代入の違いは面倒くさいので、その辺りを気をつけてくださいとの話となりました。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">次の製品もめでたくQtを使えることになったので、それに向けての準備をしていました</span></h4>
<br />
というわけで、製品の紹介等をされていましたが、どこまで書いて良いのか確認していないので割愛しますね。
今回はQtもLinuxも初採用との事で色々苦労されていたようですが、実りがあって何よりです。次の製品もうまくいくと良いですね。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">スパイダーの再生エンジンの設計をがりがり書いていました</span></h4>
<br />
どうやら、PTPの会場係は「仕事」として会社に認知されたそうで、休日出勤扱いだそうです。お世話になっています。
でも、休日出勤だからか、お仕事の方をされていたようで。ご迷惑をおかけしてすいません。会場についてはSRAさんも使えそうということで、一社の負担がすくなくなるよう、今度お試しで利用させてもらう算段をつけていますので、コレからもどうぞよろしくお願いします。
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">Qtのパッチを作成していました</span></h4>
<br />
ビルド時にconfigureの--no-guiが例によってうまく動作しなくなっていたそうで、パッチを作成していたそうです。Qt 5.6と 5.7で作りが違うそうで、2種類パッチ作成ということで、コントリビュートおつかれさまです。僕もそろそろQtにもパッチ書くようにならないといけないかなぁ・・・。あとは、伊織さんの同人誌のレビューに手を付け始めました
<br />
<h4>
<span style="color: #38761d;"><br /></span></h4>
<h4>
<span style="color: #38761d;">伊織さんの同人誌のレビューを開始しました</span></h4>
<br />
The Art of Qtの第三弾の作成に取りかかっているとの事で、今回はインストーラの自動インストール周りのお話です。これは興味のある人結構いるでしょうから、レビュー頑張っておきます。<br />
<br />
<br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">懇親会</span></h3>
<div>
<span style="font-size: large;"><br /></span></div>
懇親会は11名。こちらもだいぶ参加者が増えてきましたが、今回はいつもの鬼へいがいっぱいでして、2件回って3件目のお店に入りました。<br />
そらみみさんのドールのお話と、コミケの話題とで盛り上がって、1次会終了。hermit4は確定申告のつかれと溜まった家事とで疲れ気味だったので、一次会で撤収させていただきました。<br />
<br />
というわけで、今月も皆それぞれもくもくとQt関係の勉強を楽しみました。<br />
また来月もよろしくお願い致します。<br />
<br />
<br />
<script src="http://togetter.com/js/parts.js"></script><script>tgtr.ExtendWidget({id:'952054',url:'http://togetter.com/'});</script>hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-11557426346906229782016-02-28T03:03:00.001+09:002016-03-04T23:04:13.093+09:00ガルパンはいいぞなんて話をつぶやいたせいか、おすすめされたhermit4です。<br />
<br />
まぁ、ただのアフィリエイト記事ですが、30% Offらしいので、買うまでに至って無かったけど映画見ちゃってやっぱり欲しくなったあなたは、今がチャンスなのかも。
<br />
<embed frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00BCQY71O" style="height: 240px; width: 120px;"></embed>
<embed src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00BCQY750" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></embed>
<embed src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00BCQY75K" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></embed>
<embed src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00BCQY71E" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></embed>
<embed src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00BCQY78W" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></embed>
<embed src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00BF1592C" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></embed>
<embed src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00IIEERM2" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></embed>
ガルパンはいいぞ。
P.S.
3/4追記: 明日が誕生日なので、全部購入し、2日かけて夜更かしして全部見直したのはここだけの秘密です。
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com1tag:blogger.com,1999:blog-4572229387701660661.post-54316277098221099472016-02-27T23:30:00.000+09:002016-02-28T00:00:33.615+09:00OSC 2016 Tokyo/Springに出展しましたどうも、最近は日本Qtユーザー会のご報告ばかり書いている気がするhermit4です。<br />
<br />
昨日から二日間、明星大学日野キャンパスの方で行われた、オープンソースカンファレンス 2016 Tokyo/Springに、日本ユーザー会として出展してきました。<br />
<br />
今回は、いつものメンバーはお子さんが生まれたり、結婚されて週末活動が難しかったり、無事ではないけど生きてますって状態だったりと、メンバーが圧倒的に少なく、二日間3名と少しの時間経立ち寄って手伝って下さった1名の4名で切り盛りしていました。<br />
<br />
初日は、いつものiPad mini, iPod touch, Nexus5, Nexus7の上で動くデモと、Macで動いているQt Chartのexampleを展示しました。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTI4P6r3gnKgYSBjDKlh6MN1ZCAafKVrd7XX2q9OmFJF_vYVZ9WfwQCVPFNdUtkqaco0BSb3V7kGZ2GMPGcib6rFZT4dzd1UtgCVI8vEpvsR_Ad97b1dP29Nr67c36AhZuwl2k5SF52CT7/s1600/CcGn-xGUsAA9JlN.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTI4P6r3gnKgYSBjDKlh6MN1ZCAafKVrd7XX2q9OmFJF_vYVZ9WfwQCVPFNdUtkqaco0BSb3V7kGZ2GMPGcib6rFZT4dzd1UtgCVI8vEpvsR_Ad97b1dP29Nr67c36AhZuwl2k5SF52CT7/s320/CcGn-xGUsAA9JlN.jpg" width="320" /></a></div>
<br />
二日目は、OpenGLの回転制御のデモも展示していただきました。<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkIVaZUyuvF1d26zdBjiJYwfahIBiZgfg2_c8T6KcFP6-pWNawOGjSqhMuzqxbkvvmEeke4i_Bzo2V3oLeqyS3_ytMmv8Y2-NTSa4CF4vCV7vMO4TK79M_BR5QDhrLbme6GCXffCQfGKYx/s1600/CcLrCKhUUAEfzeL.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgkIVaZUyuvF1d26zdBjiJYwfahIBiZgfg2_c8T6KcFP6-pWNawOGjSqhMuzqxbkvvmEeke4i_Bzo2V3oLeqyS3_ytMmv8Y2-NTSa4CF4vCV7vMO4TK79M_BR5QDhrLbme6GCXffCQfGKYx/s320/CcLrCKhUUAEfzeL.jpg" width="320" /></a></div>
<br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/mO0DHpDWBZs" width="560"></iframe>
多くのツールが3Dモデルの背面を表示させた状態から回転をくわえるとおかしな回転をしてしまう事が多いそうなのですが、それを克服し360度どうまわしてもおかしくならないように修正されているそうです(3Dはさっぱりなので、どのくらいすごい事なのかは不明なのですが)。<br />
<br />
ついでに、先週の勉強会後の懇親会で、ガルパンおじさんによる洗脳を受けてしまったため、うっかりガルパンを見てしまい、戦車もまわしてみたくなりましたと、戦車のモデルも探し出してきてくるくるまわしていました。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisulAHoLOFauWxtsNkddeOqvhN3nbsmalIU_lxHVkwntFI6OScjGfL6FJv9pM-mvwsKmDyljYkxOvjw6nogvW1f2HUnMGgDTxH836YGwgqIoewM2KO61FUiuIOXNMCQKPjJm0PQkw89RsM/s1600/CcLqKJQUEAAaT5D.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisulAHoLOFauWxtsNkddeOqvhN3nbsmalIU_lxHVkwntFI6OScjGfL6FJv9pM-mvwsKmDyljYkxOvjw6nogvW1f2HUnMGgDTxH836YGwgqIoewM2KO61FUiuIOXNMCQKPjJm0PQkw89RsM/s320/CcLqKJQUEAAaT5D.jpg" width="320" /></a></div>
<br />
カメラの位置を考えてあげると砲身が前に来た時の迫力が出るんですよ〜と熱く語る姿はすっかりガルパンおじさんですね。見に来て話をされる学生さんも、先週ガルパンはいいぞって言われてみてしまって、戦車まわしてみたくなりましてという話がでると、顔をほころばせながら聞いているのが印象的でした。ガルパンはいいですねぇ。<br />
<br />
人が少ない時間帯は、現役高校生とランバート反射をアニメ向けにカスタムしたいと考えている回転大好きな2人組は、良い式が無いかと数式談義に。おお、コレで良いかもというところで、まって、こっちの方が良いかもしれないですと、白熱中。学生さんの数人が興味深そうに数式の出てる画面に熱い視線を送ってましたが・・・Qtのデモより目立つとか・・・。<br />
<br />
午後からは、小さなお子さんを連れた方が結構見物にきていました。どうやら今日は、明星大学でちびっこドッジなるイベントが行われていたようで、お父さんが怪しげなガジェットを目をきらきらさせながら眺めているのを首を傾げながら見ている女児というシーンも。一応、子供の目にもとまりそうな惑星をくるくる回すサンプルも展示に追加してみました。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIEa9l62o87Jvz_tbci1XkSJw6JEzwe8TxFH6730cRUtKOW0nIEr_DqSkHBehdItwKRPMOTicbKIP77lMblzaZ1ueIVUl4ZsbINd8k4cvRA5Kw79hjEV5-2_u24tbtbp9vn3fJDeHMBV7I/s1600/CcMIAbwUsAAmVQT.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIEa9l62o87Jvz_tbci1XkSJw6JEzwe8TxFH6730cRUtKOW0nIEr_DqSkHBehdItwKRPMOTicbKIP77lMblzaZ1ueIVUl4ZsbINd8k4cvRA5Kw79hjEV5-2_u24tbtbp9vn3fJDeHMBV7I/s320/CcMIAbwUsAAmVQT.jpg" width="320" /></a></div>
<br />
が・・・残念ながらちびっこたちは、ぬいぐるみのある展示とか、体の動きに合わせて音のするガジェットの展示に夢中。そうか、宇宙はまだ早すぎたか・・・。<br />
今日は、明星大学の入学前教育という高校生さんたちも大量に部屋につめかけたため、一時あふれんばかりの感じでした。<br />
<br />
レイアウト的には人の流れから少し外れる場所でお客さんも少ない方だったのでしょうが、少人数で切り盛りするのは初めてだったせいかぐったり。次回は何か音の出そうなものも用意したいなぁなんぞと思いつつ、なんとか二日間、勉強会にぜひ遊びにきて下さいと、出来るだけ笑顔で話しかけて終わりました。<br />
<br />
ちなみに、一緒に展示してくださった方に、最初はひげ面で怖い人かと思ってましたと言われて、できるだけ笑顔で居たつもりですが、もし引きつったひげ面にQtはいいぞ!って言われて怖かった人がいらっしゃったらごめんなさい。笑い慣れていないもので。<br />
<br />
今回は、人数が少なくて他のブースはほとんど回れず、疲れもあって閉会式もパスして、みんな現地解散となりました。戦利品は、少しだけ抜け出して仕入れた書籍数冊とポスターが一枚。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjikm_jM2-HMMbUoCHpLxdsSep3xQKg6yIY0L7yPJ6yFEJJB3UiwmcWYXjggG3RnFoF578y1zhvGVX4FHEpZDl9dijalF7-Tl3GzkVV89-_6xGSJ_zRB6vXxiKF3F3zfpv81iW-DEjoJr1X/s1600/CcG1xupUAAA6W-5.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjikm_jM2-HMMbUoCHpLxdsSep3xQKg6yIY0L7yPJ6yFEJJB3UiwmcWYXjggG3RnFoF578y1zhvGVX4FHEpZDl9dijalF7-Tl3GzkVV89-_6xGSJ_zRB6vXxiKF3F3zfpv81iW-DEjoJr1X/s320/CcG1xupUAAA6W-5.jpg" width="320" /></a></div>
<br />
「君、いい腕をしているな」じゃなく、「貴様、いい腕をしているな」だろっていうTLでのツッコミの会ったポスターですが、どこかに飾っておきたいなと思います。<br />
<br />
なお、戦車は、いずれはガルパンに埋め込んでも遜色のないくらいにぬるぬる動かしてみたいとのことで、次回の展示までには重みを表現出来るように動かせるようにしたいと意気揚々のようですので、楽しみにしたいところです。<br />
<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-65256193551531279492016-02-22T01:49:00.001+09:002016-02-22T21:09:03.971+09:00Qt 勉強会 #32 @Tokyo に参加しました<span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;">2016年02月20日(土曜日)に </span><a href="https://manage.doorkeeper.jp/groups/qt-users/events/38820" style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;" target="_blank">Qt 勉強会 #32 @Tokyo</a><span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;"> を </span><a href="http://www.ptp.co.jp/" style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;" target="_blank">株式会社 PTP</a><span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;"> のミーティングルームで開催しました・・・という報告は、いつも鈴木佑さんが行われているのですが、</span><br />
<span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;"><br /></span>
<br />
<blockquote class="twitter-tweet" data-lang="ja">
<div dir="ltr" lang="ja">
PTP を退職しました - Qt 5 の未来は明るいブログ <a href="https://t.co/GQkBY0FZVt">https://t.co/GQkBY0FZVt</a></div>
— Tasuku Suzuki (@task_jp) <a href="https://twitter.com/task_jp/status/695085830109409282">2016, 2月 4</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
<br />
<span style="font-size: x-small; line-height: normal;">という事があったため、色々な人から飲みのお誘いがあるそうで</span><br />
<br />
<blockquote class="twitter-tweet" data-lang="ja">
<div dir="ltr" lang="ja">
昨日3時まで飲んでたせいでまだぼけーっとなってる。</div>
— Tasuku Suzuki (@task_jp) <a href="https://twitter.com/task_jp/status/700910818313969664">2016, 2月 20</a></blockquote>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>
<br />
というわけで、今回もhermit4からご報告ということで<br />
<br />
<br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">簡単な自己紹介</span></h3>
<div>
<br /></div>
<div>
今回の参加者は15人。論文が落ち着いたので久しぶりにこられた方、最近仕事は管理やドキュメンテーションが多くてコードを書きたくてこられた方、飲み会続きでグロッキーな方色々ですが、みんなでモクモクしてました。<br />
<br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">オープンソースカンファレンスのお手伝い募集</span></h3>
<div>
<br /></div>
<div>
<span style="font-size: large;"><span style="font-size: small;">来週、26日(金)・27日(土)に明星大学で行われるオープンソースカンファレンスにQtユーザー会も出展予定のため、お手伝いの募集をしました。</span></span></div>
<div>
<span style="font-size: large;"><span style="font-size: small;">今回は、予定が空いている人が少ないようでちょっと大変かもしれませんが、お手伝いに名乗りを上げて下さった方は、どうぞよろしくお願いします。</span></span></div>
<div>
<span style="font-size: large;"><span style="font-size: small;"><br /></span></span></div>
<div>
<span style="font-size: large;"><a href="http://www.ospn.jp/osc2016-spring/">http://www.ospn.jp/osc2016-spring/</a></span></div>
<br />
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;"><br /></span></h3>
<h3 style="color: #003212; font-family: helvetica, 'helvetica neue', arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">成果発表</span></h3>
</div>
<div>
<br /></div>
<h4>
<span style="color: #38761d;">Qtのスレッド・メモリ使用量の調査をしていました</span></h4>
<br />
Qtの利用するリソースについて調査していたそうです。簡単なCUI/GUI/QMLのアプリケーションを立ち上げてはリソースモニターでみていたそうで、CUIはスレッドは1つ、GUI/QMLは、時間経過と主にスレッド数が推移するそうです。GUIと比べるとQMLの消費メモリ量が多いとの事で、大きめのアプリを作った時にどうなるのか気になる所ですね。<br />
<br />
<h4>
<span style="color: #38761d;">QMLで作成したアプリのデバックをしていました</span></h4>
<br />
大学で研究されている方に成果をお渡しする事になっているそうで、あれこれやっているそうです。タブレットで利用して必要に応じて縦横を切り替えるようにしたそうなのですが、縦から横への回転は速いのに横から縦に戻す時に妙に時間がかかるそうで。<br />
勉強会で、プロファイラの話を聞いて、この辺りになにかありそうという所まではいったようなのですが、原因までは突き止められていないようです。<br />
諸々やっていました<br />
<br />
<h4>
<span style="color: #38761d;">作成中のルービックキューブアプリを公開に向けて手直ししました</span></h4>
<br />
cmakeについては教えてもらったチュートリアルで少しずつ勉強中<br />
今日の本命で現行のランバート反射のアルゴリズムに異論を唱えている方の動画を見ながら自分でアルゴリズムを考えてみるというを実行中。実際に影を当ててみながら検討中とのことです。<br />
なお、最初は有償にしようかと悩んでいたルービックキューブはバイナリ無償公開として、ソースコードについては、欲しいという人がいたら考えようかなっという所だそうです。楽しみですねぇ。<br />
<br />
<h4>
<span style="color: #38761d;">Qtのスタイルシートについて調査し</span></h4>
<br />
Qtはスタイルシートを使ってデフォルトのGUIをカスタマイズできるのですが何がどこまで変えられるのか調査してたとの事です。<br />
Qtとしてはあまりメンテナンスされていない部分で、QStyleを使った方が良いというコメントも出ましたが、みんな割とちょっとした所で使ってみてる人がちらほらと。<br />
hermit4も、ちょっとした所を動的に変えたい時に使ってたりします。<br />
<br />
<h4>
<span style="color: #38761d;">QMLでグラフを表示する部分を実装していました</span></h4>
<br />
先月はBluetooth通信部を実装していて、今月はそのデータをグラフ化する部分に着手とのことで、着々と進めていらっしゃるようです。職場ではQtは少数派らしいので、ぜひ頑張って欲しい所です。<br />
<br />
<h4>
<span style="color: #38761d;">自作のテキストエディタのデバック中です</span></h4>
<br />
JavaScriptでプラグインを作れるテキストエディタの開発の続きだそうで、現在はハイライトの処理のデバック中だそうです。他のエディタの言語ルールを利用できるようにしている部分の処理がなかなか複雑だそうで、バグが取り切れて居ないとの事。<br />
有償を検討しているそうですが、近日中にはリリースしたいとの事で期待したいです。<br />
<br />
<h4>
<span style="color: #38761d;">NVIDIAのK1にCUDAのささっているボードと格闘中</span></h4>
<br />
しばらく寝かせていたボードで、車載向けのSOCであるK1にCUDAの刺さっているものについて、qt.ioのブログに色々書いてある内容をなぞりながら、使ってみようと格闘して居たとの事。ブログの方法はCUDA部分もqmakeでなんとかしようとしているのですが、他の方からCUDA部分はEclipseでライブラリ化してしまってQtアプリとはリンクするようにする方が楽ですよとのコメントがありました。<br />
<h4>
<span style="color: #38761d;">QLocalServerの使い方を学習していました</span></h4>
<br />
QLocalServerの使い方を復習していたとの事です。昔使った際は、不意に落ちるとLinux/Macではテンポラリファイルが残って使えなくなるためそこで利用を断念していたそうですが、現在はQLocalServer::removeServerが用意されて解決できるようになっていたとの事です。<br />
<br />
<h4>
<span style="color: #38761d;">QWebChannelについて調べていました(*QWebSocketじゃなかったので訂正)</span></h4>
<br />
まずはSlackでSibukawaさんが報告されていたGoとQtを密結合するためのLocalSocketというプロジェクトのドキュメントに見つけたtypoのpull requestを送った後、QWebChannelについて調べていたとの事です。用意したHTMLを開いたブラウザとQtアプリケーション間で通信ができることを確認した後、GoogleMapを表示したQtアプリからマップの移動を検知させる仕組みを作りたい・・・・と思ったのですが、うまく行かずにあれこれやっていたとのことです。<br />
hermit4もQWebChannelはなかなか興味深いので今度使ってみたいなと思ってます。<br />
<br />
<h4>
<span style="color: #38761d;">ラズパイで動く時計アプリの作成中です</span></h4>
<br />
もともとPalmで動いているお気に入りのアプリがあったそうなのですが、ラズパイでも使いたくてラズパイ向けに一から実装中との事です。少しずつ機能を増やして行く予定とのことで、完成が楽しみですね。<br />
<br />
<h4>
<span style="color: #38761d;">論文作成用のグラフ出力ツールを作っています</span></h4>
<br />
論文にのせるグラフを簡単に作成できるようにしたいとQtアプリからPythonのライブラリを使って簡単にグラフを作成出来るツールを作っているそうです。もう実際に動作していて、論文に使うグラフを作成したそうで、公開する予定もあるそうで、非常に楽しみですね。<br />
<br />
<h4>
<span style="color: #38761d;">go-qmlの勉強をしていました</span></h4>
<br />
go-qmlをやってみようと簡単なお試しをしていたとのことです。その他、QtCreatorの見た目を変更したいと思ってCSSと格闘中との事。<br />
<br />
<h4>
<span style="color: #38761d;">Konquerorのカスタムのために調査中</span></h4>
<br />
最近のブラウザはセキュリティや変なサイトを開いた時のハングアップを防ぐためにタグを開くたびに内部的には新しいプロセスを使い、表示だけを一つに見せていますが、Konquerorは古い実装のために1つのプロセスになっているため、その辺りを直したいと勉強中との事です。<br />
Qt4は、QX11EmbedWidgetがあったのですが不具合もあってパッチを本家に投げたりしていたのですが、Qt5では無くなってしまっている事もあって、他の方法での実装を検証中との事です。<br />
<br />
<h4>
<span style="color: #38761d;">GoogleDriverのAPIで遊んでいました (*OneDriverはhermit4の記憶違いです)</span></h4>
<br />
今日は特に何も考えずに来てしまったので、Google DriveのAPIで遊んでいましたということのようなのですが、実は発表の最中にMac Book Proがクリックを受け付けなくなるというトラブルが発生していてよく聞いてませんでした。ごめんなさい。<br />
<br />
<h4>
<span style="color: #38761d;">hermit4はというと</span></h4>
<br />
商用ライセンスを使って最新のQt Chartを試してみていました。<br />
Qt 5.7からはQtにGPLライセンスで統合されるとの事で、現在、コードは既に公開されています。商用ユーザーへの優位性を残すためか、残念ながらLGPLにはならないので、GPLを採用しない人には使えませんが、GPLを使ったアプリではちょっとおしゃれなグラフの作成を楽しめます。<br />
なお、オープンソースカンファレンスでは、GPLでソースが公開されていますので、商用版でビルドしたexampleですが動かしているのをお見せしようかと思っています。気になる方はぜひQtブースにお立ち寄り下さい。<br />
<div>
<br /></div>
<script src="http://togetter.com/js/parts.js"></script><script>tgtr.ExtendWidget({id:'941344',url:'http://togetter.com/'});</script>hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-14776014199034423772016-01-18T00:20:00.001+09:002016-01-18T12:26:15.237+09:00Qt 勉強会 #31 @Tokyo 開催しました<span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;">2016年01月16日(土曜日)に </span><a href="https://manage.doorkeeper.jp/groups/qt-users/events/37171" style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;" target="_blank">Qt 勉強会 #31 @Tokyo</a><span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;"> を </span><a href="http://www.ptp.co.jp/" style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;" target="_blank">株式会社 PTP</a><span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;"> のミーティングルームで開催しました・・・という報告は、いつも鈴木佑さんが行われているのですが、めでたい事に、鈴木さんは先日パパさんになりまして。</span><br />
<span style="font-family: HiraKakuProN-W3; font-size: 13px; line-height: normal;"><br /></span>
<br />
<blockquote class="twitter-tweet" lang="ja">
<div dir="ltr" lang="ja">
3286g の女の子が無事誕生しました!</div>
— Tasuku Suzuki (@task_jp) <a href="https://twitter.com/task_jp/status/685653546323185664">2016, 1月 9</a></blockquote>
今日まで奥様のご実家のある北海道にいらっしゃるので変わってご報告します。<br />
<br />
(2016/01/18 たすくさんの漢字が間違っていて訂正しました。大変失礼いたしました)<br />
<br />
<h3 style="color: #003212; font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">簡単な自己紹介</span></h3>
<div>
<br /></div>
<div>
今回は参加者が15人。半年ぶりの方、1年ぶりの方、炎上中のプロジェクトに居ながら女性の新人さんを引き連れてきて下さった方、無事留学が決まった現役高校3年生等、色々な方がご参加下さいました。</div>
<div>
<br /></div>
<div>
<h3 style="color: #003212; font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.25em; margin: 0px;">
<span style="font-size: large;">もくもく&成果発表</span></h3>
</div>
<div>
<br /></div>
<div>
今回もいつもの通りのモクモク勉強会。</div>
<div>
<br /></div>
<div>
<h4>
<span style="color: #38761d; font-size: large;">QWSでおこっている問題の調査をしていました</span></h4>
</div>
<div>
組込みでQt4.8を使われていて、マウスカーソルを消した所、緑のゴミが画面上に表示されてこまってるということで、調査をされていました。動的に消すと色々問題がおきそうで、カーソルを無効化してQtをビルドし直すのが一つの解決策かもというのが今日の成果との事です。解決すると良いですね。</div>
<div>
<br /></div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">KDEのKonqueror周りに手を入れようと作業に着手しました</span></h4>
</div>
<div>
<br />
KDEをビルドするためQtのビルドをしましたが、Qtのビルドで終わってしまったとの事。ぜひそのまま頑張って下さい。</div>
<div>
<h4 style="color: #003212; font-family: Helvetica, 'Helvetica Neue', Arial; font-size: 1.25em; line-height: 1.125em; margin: 0px;">
</h4>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;"><br /></span></h4>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">Qtでテキストエディタを作成中です</span></h4>
<div>
<span style="color: #38761d; font-size: large;"><br /></span></div>
<span style="color: black; font-size: xx-small; font-weight: normal;">JavaScriptでプラグインを作れる部分を実装中です。Node.jsのイベントをQtのシグナルとスロットの仕組みとつなぐためJavaScriptからQtの側を呼び出す処理を実装するようV8のAPIをいじってました。</span><br />
<div>
<br /></div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">東芝のFlash Air用クライアント作成中です</span></h4>
</div>
<div>
<br />
Flash AirのサムネイルからローカルにDrag And Dropでコピーする部分の処理を実装していました。ただ、リリースビルドだと動かない事が発覚したので、帰宅したら調べてみます。</div>
<div>
<h4 style="color: #003212; font-family: Helvetica, 'Helvetica Neue', Arial; font-size: 1.25em; line-height: 1.125em; margin: 0px;">
</h4>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
</h4>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">ロボコン向けに諸々作成していました</span></h4>
</div>
<div>
<br />
という話をされていましたは、突然手元のMacが堕ちてあたふたしていたので詳細は聞き逃しました。ごめんなさい。</div>
<div>
<br /></div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">アプリケーションの国際化対応のための機能について調べていました</span></h4>
</div>
<div>
<br />
仕事でやっている作業の一貫でQtの翻訳周りのツールを使ってみていたとの事。動的な切り替えはまだ試せていないものの、かなり便利な印象との事です。</div>
<div>
<br /></div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">仕事用のデータベースの作成を行っていました</span></h4>
</div>
<div>
<br />
仕事はフィールドサービスエンジニアなのですが、欲しいアプリを組んでもらえないので自分で始めたとの事。普段はアメリカ在住でたまたま戻ってきていたので、立ち寄ったとの事で、来週にはアメリカに戻ってしまうとそうですが、わざわざ貴重な一日を使って来て下さってありがたい事です。</div>
<div>
<br /></div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">ルービックキューブアプリの続き</span></h4>
</div>
<div>
<br />
先月に率い続き、ルービックキューブの作成を続けていました。見た目をかっこ良くした後、スカイボックスを使って背景をつけようとしたのですが、なぜかうまくいかず・・・残念。</div>
<div>
<br /></div>
<div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">スクリーンショット機能の実装</span></h4>
</div>
</div>
<div>
<br />
フレームバッファの変更を検出してPNGに変換した後QMLに設定する所まで出来上がりました。その他QScriptEngineについて調べていました。</div>
<div>
<br /></div>
<div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">独自ボードとAndroid間のBluetooth通信と表示を実装してました</span></h4>
</div>
</div>
<div>
<br />
Bluetooth経由で受け取ったデータをQMLでグラフ表示する機能を実装していました。PCで作ったものがそのままAndroidでも動くので良いですとの事。色々な機能が実装され本当にいい感じですよね、最近のQtは。</div>
<div>
<br /></div>
<div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">コラージュソフトの手直し中です</span></h4>
</div>
</div>
<div>
<br />
ここまで作ってきた開発版をベースに改善方法を模索中との事です。</div>
<div>
もうすぐ本業は定年との事ですが、コラージュ療法ソフトの方はこれから本格的に大学の方と協力して色々やっていかれるそうで、悩みながら模索中のようです。</div>
<div>
<br /></div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">OpenCVとOpenCLの相互運用サンプルのプログラムを動かしていました</span></h4>
</div>
<div>
<br />
ほっとくとOpenCLの側のバッファが取れなくなって落ちてしまうので、本当にGPUを使ってるのかも含めて怪しいので調査していました。ただ手元の環境ではIntelのツールが動かず、帰宅後に別の環境で調べてみるつもりです。</div>
<div>
本当にやりたいのは、メニューを作ったりとかQtを使った別の事なので、まだまだこれからのようです。どんなものを作られるのか興味津々です。</div>
<div>
<br /></div>
<div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">他の方々のやってる事を聞いてました</span></h4>
</div>
</div>
<div>
<br />
今回はつれられてきたので、特に何も考えてなかったそうで、他の方々のやっている事を聞いたり、簡単な事をやってみたりしていたそうです。ぜひ次回はやりたい事を見つけてもらえるといいなぁ。</div>
<div>
<br /></div>
<div>
<h4 style="font-family: Helvetica, 'Helvetica Neue', Arial; line-height: 1.125em; margin: 0px;">
<span style="color: #38761d; font-size: large;">ステートチャートを簡単に書けるようにするツールを作成中です</span></h4>
</div>
<div>
<br />
ステートの遷移をGUIで視覚的に作っていけるツールだそうです。生成したステートはQMLとして保存でき、そのままQMLアプリに埋め込めるので、手でガリガリ書くより生産性が高いそうです。ついでに、Unityのゲームも手を付けているとの事でUnity向けのExport機能もほぼ実装出来た所との事。</div>
<div>
<a href="https://github.com/unseon/StateMachineEditor" target="_blank">Github</a>で公開されているので、ぜひ触ってみて下さい。</div>
<div>
<br /></div>
<div>
<br /></div>
<div>
ということで、皆さん色々やってらっしゃいました。</div>
<div>
隠者の方は、qmakeについて、相変わらずこそこそと調査継続中。</div>
<div>
本にしたいなぁと思いつつ、自分の中でどう説明していったらいいか構想中です。</div>
<div>
<br /></div>
<div>
</div>
<script src="http://togetter.com/js/parts.js"></script><script>tgtr.ExtendWidget({id:'926600',url:'http://togetter.com/'});</script>
<script async="" charset="utf-8" src="//platform.twitter.com/widgets.js"></script>hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-4042645233368526802015-12-10T20:44:00.000+09:002015-12-10T22:13:03.909+09:00Qtユーザー会のご紹介<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
<div style="color: #4a4a4a; line-height: 1.875;">
<span style="font-size: 16px; line-height: 1.875;">Qtユーザー会、おやつ部部長のhermit4です。<a href="http://qiita.com/advent-calendar/2015/qt" target="_blank">Qt Advent Calendar 2015</a>もついに10日目となりました。</span></div>
<div style="color: #4a4a4a; line-height: 1.875;">
<span style="font-size: 16px; line-height: 1.875;"><br /></span></div>
<div style="color: #4a4a4a; line-height: 1.875;">
<span style="font-size: 16px; line-height: 1.875;">昨日は、</span><a href="http://qiita.com/informationsea" style="background-color: transparent; box-sizing: border-box; color: #337ab7; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 14px; line-height: 18.2px; text-decoration: none; white-space: nowrap;">informationsea</a> さんによる「<a href="http://qiita.com/informationsea/items/df2775c325769d6f56b3" style="background-color: transparent; box-sizing: border-box; color: #337ab7; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; line-height: 1.875; text-decoration: none;">Windows + Visual Studio で Static Link できる Qt をビルドする</a>」でしたね。GPLで公開アプリケーションをdll使わずに動かしたいケース、たとえばdll自体をインストールするインストーラのようなケースではstatic link版は非常に役に立ちますよね。</div>
<div style="color: #4a4a4a; font-size: 16px; line-height: 1.875;">
<span style="line-height: 1.875;"><br /></span></div>
<span style="color: #4a4a4a; font-size: 16px; line-height: 1.875;">さて、本日なのですが、残念ながらエントリのないまま、日も暮れてきましたので、何か書こうかと思い立ちました。</span><span style="color: #4a4a4a;"><span style="line-height: 1.875;">ただ、ちと持病の皮膚病治療で紫外線治療受けて、背中が強い日焼け状態・・・というか水ぶくれできているので、ちょっと失敗してやけど状態的な感じで集中力もないので、本日は技術ネタではなく、</span><span style="line-height: 30px;">コミュニティ</span><span style="line-height: 1.875;">の紹介ということでお茶を濁しておきます。</span></span><br />
<span style="color: #4a4a4a;"><span style="line-height: 1.875;"><br /></span></span>
<span style="color: #4a4a4a;"><span style="line-height: 1.875;">本日は技術ネタではないので、ものすごく久しぶりに自分のブログに投稿しておきます。</span></span></div>
<h1 style="background-color: white; border-bottom-color: rgb(238, 238, 238); border-bottom-style: solid; border-bottom-width: 3px; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 24px; font-weight: normal; line-height: 1.2; margin: 64px 0px 12px; padding-bottom: 8px;">
<span class="fragment" id="qtユーザー会とは" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#qt%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E4%BC%9A%E3%81%A8%E3%81%AF" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a><a href="http://qt-users.jp/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">Qtユーザー会</a>とは</h1>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
<a href="http://qt-users.jp/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">Qtユーザー会</a>は、Qt の日本での普及を目指すために、日本各地で活躍している Qt ユーザーによって作られたコミュニティです。<br />
日本語での Qt の情報の発信や、Qt をはじめたばかりの方のサポート、Qt や Qt Creator などの日本語訳、勉強会などの活動を日々行っています。</div>
<h2 style="background-color: white; border-bottom-color: rgb(238, 238, 238); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 22px; font-weight: normal; line-height: 1.225; margin: 64px 0px 12px; padding-bottom: 8px;">
<span class="fragment" id="歴史" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#%E6%AD%B4%E5%8F%B2" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>歴史</h2>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
Qt自体は日本でもだいぶ昔から利用されていたものの、ユーザーコミュニティはありませんでした。古くは、日本KDEユーザー会が、勉強会などもしていたようなのですが、残念ながら詳細は知りません。</div>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; margin-top: 1.6em; word-wrap: break-word;">
確認できている中で、QtのユーザーがQt勉強会として立ち上げたのは、2010年に福岡で開催されたQt@福岡 勉強会が初かと思います。<a href="http://vivi.dyndns.org/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">viviというエディタを作られている津田さん</a>をはじめ面白そうな人たちが集まって勉強会をしていたのですが、同じころ、触発されたかのように関東や名古屋、関西でもぽつぽつと勉強会が発足し、それぞれバラバラに活動が開始されました。</div>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; margin-top: 1.6em; word-wrap: break-word;">
2年後の2012年の夏に、当時中学生だったluyikei君が、Qtは日本語のドキュメントも少ないし、コミュニティはばらばらに活動してるし、どうなってるんだと声を上げて、関東勉強会に殴り込みをかけ、いい歳こいたおっさん連中が、中学生にごめんなさいという事件がありまして、何とかして統一しましょうよと若者に説教を受けました。</div>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; margin-top: 1.6em; word-wrap: break-word;">
当初は、luyikei君が各地の勉強会にメッセージを流したり、Webページの計画を立ててくれたりしていたのですが、ただでさえ忙しいエンジニアが片手間にやっているわけで、なかなか前に進まず、ちょうどNokia社がQtを手放す事になり、Qtの会社からユーザー側に移ってしまった鈴木たすくさんが、当時の関東勉強会を仕切りなおしてQtユーザー会の勉強会として再スタートを切ったのが、2013年の7月でした。</div>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; margin-top: 1.6em; word-wrap: break-word;">
というわけで、実はQtユーザー会自体は、まだ駆け出し2年ちょっとの若いコミュニティで人でも体制も整っているわけではありません。</div>
<h2 style="background-color: white; border-bottom-color: rgb(238, 238, 238); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 22px; font-weight: normal; line-height: 1.225; margin: 64px 0px 12px; padding-bottom: 8px;">
<span class="fragment" id="運営" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#%E9%81%8B%E5%96%B6" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>運営</h2>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
誰がリーダーとか、誰が運営とかは実はきちんと決まっていません。なんとなく東京ではたすくさんが勉強会を仕切ったり、なんとなくhermit4がOSCでの配布物を作成したり、なんとなくけんやさんがWebサーバーをメンテしたり、なんとなく手伝う人が決まったりと、非常にゆるふわな体制で過ごしてきました。The Qt Companyとのやり取り等の苦労から、いずれ責任や立場をはっきりさせる必要があるかもという話はしているので、来年中にはもう少し色々決まるかもしれませんが。なにせQt関係者はめんどくさがりの人が多いので、自然とこうなってしまうのですよね。</div>
<h2 style="background-color: white; border-bottom-color: rgb(238, 238, 238); border-bottom-style: solid; border-bottom-width: 1px; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 22px; font-weight: normal; line-height: 1.225; margin: 64px 0px 12px; padding-bottom: 8px;">
<span class="fragment" id="活動" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#%E6%B4%BB%E5%8B%95" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>活動</h2>
<h3 style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 20px; font-weight: normal; line-height: 1.43; margin: 24px 0px 0.7em;">
<span class="fragment" id="webページ-httpqt-usersjp" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#web%E3%83%9A%E3%83%BC%E3%82%B8-httpqt-usersjp" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>Webページ: <a class="autolink" href="http://qt-users.jp/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">http://qt-users.jp/</a></h3>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
発足当時はluyikei君をはじめ数名Wordpressで作成して下さっていましたが、現在のWebページは、鈴木さんの作成されたQMLでWebページを書きましょうというマニアックなWebサーバーの<a href="http://silk.qtquick.me/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">silk</a>で作り直されています。</div>
<h3 style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 20px; font-weight: normal; line-height: 1.43; margin: 64px 0px 0.7em;">
<span class="fragment" id="メーリングリスト" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#%E3%83%A1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%AA%E3%82%B9%E3%83%88" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>メーリングリスト</h3>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
Webページの方から参加登録できますが、メーリングリストを使っても情報交換がされています・・・というほどにメールは流れていませんが。</div>
<h3 style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 20px; font-weight: normal; line-height: 1.43; margin: 64px 0px 0.7em;">
<span class="fragment" id="勉強会-httpsqt-usersdoorkeeperjp" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#%E5%8B%89%E5%BC%B7%E4%BC%9A-httpsqt-usersdoorkeeperjp" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>勉強会: <a class="autolink" href="https://qt-users.doorkeeper.jp/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">https://qt-users.doorkeeper.jp/</a></h3>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
DoorKeeperを使って管理されており、現在は、東京で毎月もくもく形式の勉強会が、大阪で不定期に発表形式の勉強会が、開催されています。<br />
他の地方でも開きたい方がいらっしゃったら、できるだけお手伝いさせていただきます。</div>
<h3 style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 20px; font-weight: normal; line-height: 1.43; margin: 64px 0px 0.7em;">
<span class="fragment" id="slack-httpsqtjpslackcom" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#slack-httpsqtjpslackcom" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>Slack: <a class="autolink" href="https://qtjp.slack.com/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">https://qtjp.slack.com/</a></h3>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
Slackという登録型のIRCのようなツールを使い、コミュニケーションをとっています。<br />
最近はあまり人がいませんが、時折ログインして目を通しているので、質問などがあれば、適当に流しておくと誰か答えてくれるかもしれません。</div>
<h3 style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 20px; font-weight: normal; line-height: 1.43; margin: 64px 0px 0.7em;">
<span class="fragment" id="qt-developer-dayqt-summit--httpwwwqtioqtjapansummit2015" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#qt-developer-dayqt-summit--httpwwwqtioqtjapansummit2015" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>Qt Developer Day/Qt Summit : <a class="autolink" href="http://www.qt.io/qtjapansummit2015/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">http://www.qt.io/qtjapansummit2015/</a></h3>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
Digia社、その後 The Qt Company主催のイベントですが、日本で開催されたものは、Qtユーザー会のメンバーが色々とお手伝いや、一部募金を募って出資をしています。ちなみに、日本では無償開催されて弁当まで配布されていますが、海外では基本有料のイベントだったりします。<br />
2016年がどうなるのかはまだわかりませんが、開催の際にはお手伝いの募集や告知も行われるので、興味があれば、ユーザー会のメーリングリストへの登録をしておいて下さい。</div>
<h3 style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 20px; font-weight: normal; line-height: 1.43; margin: 64px 0px 0.7em;">
<span class="fragment" id="open-source-conference--httpwwwospnjp" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#open-source-conference--httpwwwospnjp" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>Open Source Conference : <a class="autolink" href="http://www.ospn.jp/" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;">http://www.ospn.jp/</a></h3>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
東京で行われるOSCには、ここ数回はQtユーザー会として出展しています。暇村さんのように日本全国行脚できる程、時間的な余裕がある人が居ないのが残念な所ですが。こちらは、近い時期になるとslackにチャンネルができるので、slackをチェックしていただければと思います。<br />
東京以外の地域のOSCに、代わりに出展しにいくよという方がいれば、色々お手伝いできることはお手伝いできるので、ぜひメーリングリストで呼びかけてみて下さい。</div>
<h1 style="background-color: white; border-bottom-color: rgb(238, 238, 238); border-bottom-style: solid; border-bottom-width: 3px; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 24px; font-weight: normal; line-height: 1.2; margin: 64px 0px 12px; padding-bottom: 8px;">
<span class="fragment" id="まとめ" style="box-sizing: border-box; display: block; position: relative; top: -10px;"></span><a href="http://qiita.com/drafts/d3cf99a23c8c7f481e7a#%E3%81%BE%E3%81%A8%E3%82%81" style="background-color: transparent; box-sizing: border-box; color: #337ab7; text-decoration: none; word-break: break-all; word-wrap: break-word;"></a>まとめ</h1>
<div style="background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: 'Helvetica Neue', Helvetica, 'ヒラギノ角ゴ ProN W3', 'Hiragino Kaku Gothic ProN', メイリオ, Meiryo, sans-serif; font-size: 16px; line-height: 1.875; word-wrap: break-word;">
ということで、本日はコミュニティの宣伝を入れさせていただきました。<span style="line-height: 1.875;">技術ネタではなくてごめんなさい。</span><br />
<span style="line-height: 1.875;"><br /></span>
<span style="line-height: 1.875;">まだまだできて月日の浅いコミュニティで、MLなどもあまり活発ではありませんが、めんどうだから楽するために苦労しようかなって思う人とか、お手軽に作りたいなって感性のプログラマが集まる場所なので、のほほんと参加できるかと思いますので、ぜひご参加ください。</span><br />
<span style="line-height: 1.875;"><br /></span>
<span style="line-height: 1.875;">明日も残念ながらエントリーの予定は立っていません。どなたか、Qtで面白いネタを思いついたらぜひAdvent Calendarも登録していただけると嬉しいです。</span><br />
<span style="line-height: 1.875;"><br /></span></div>
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-5152805285941422972015-01-01T17:27:00.000+09:002015-01-01T21:58:26.978+09:00謹賀新年新年、あけましておめでとうございます。<br />
<br />
昨年は、すっかりおさぼり気味だったhermit4です。昨年は、仕事は忙しく、プライベートでも色々ございまして、ブログの長さの文章を書くテンションが不足してしまい、結局ワーストを記録してしまいました。まぁ、そもそも他の年も殆ど記事書いてないだろうといわれると、その通りなのですが・・・。<br />
<br />
実は、ここ2年でそれまで続けてきた生活とすっかり生活習慣が変わりました。仕事が忙しくて電車だと色々不便ということもあり、客先の近くに駐車場を借りて、自動車通勤になりました。車も新しいものに乗り換え、ふらっと仕事帰りに遠くのポータル(Ingressやってます)まで足を伸ばしてみたり、今までより人付き合いが増えてみたりと、周りからは相変わらずに見えるようですが、本人としては色々様変わりした激動の1年でした。<br />
<br />
今年は、何か新しく色々始めようかと思っていた所に、御神籤ではこれまで通りこつこつと、新しい事は始めるなとの御神託でして、例年通りのんびりゆっくりやっていこうかなと、しょっぱなからへたれ気味だったりしますけど、とりあえず、割と棚上げになってきたQMLと、少しずつ始めている英会話の能力アップが今年の当面の抱負でしょうか。<br />
<br />
そうそう、昨年末、Qt Advent Calender 2014で、Qtネタを<a href="http://qiita.com/hermit4" target="_blank">Qiita</a>の方に何件か上げています。使い分けが難しそうですが、今後は基本的にある程度調べ終わってはっきり言えそうな事とか、サンプルコードの解説等はQiitaに、個人的な見解や考察、調査がメインの内容はブログに載せて行こうかなと思っています。<br />
<br />
そんなわけで、例によって「hermit4さんがんばらない」という1年を送るかと思うhermit4ですが、今年も一年、どうぞよろしくお願い致します。<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-55636115517507091592014-10-17T22:25:00.000+09:002014-10-17T22:27:54.531+09:00Qtユーザー会の一員としてOSC 2014 Tokyo/Fallに参加予定ですQtユーザー会おやつ部長を襲名しているhermit4です。<br />
<br />
Qtの勉強会に、自分の食べたいお土産用のお菓子をせっせと運んでるうちに、なぜかおやつ部長とかいう役職を拝命しまして・・・。<br />
<br />
まずは、長い間、ブログを放置していて申し訳ございませんでした。<br />
ここ最近いただいているお仕事は、少人数でまわすのが普通になってきてしまって、忙しくしていたのですが、さらに新しい案件は、いやいやいや、いくらなんでも無理じゃない?っていうくらいの詰め込み仕事をいただいてまして、溺死寸前なくらいにバタバタと生きてます。<br />
<br />
閑話休題<br />
<br />
Qtユーザー会では、過去のOSCの参加の反省から、 OSC 2014 Tokyo/Fallに向けてパンフレットを作ろうよという話になったのですが、見栄えよく間隔を整えたり、イラストレータで配置したりとか、非常に<s>面倒</s>繊細な作業なので、高校から付き合いのある編集業に就いた友人に作成を依頼しました。<br />
<br />
私と同じく、フリーランスで、これまた同じく仕事に追われて忙しそうな身です。初稿は色々とバグが入ってます。というわけで、ユーザー会で間違いを見つけてもらって、その修正を依頼したのが、そろそろ印刷にまわさないと危険という日だったりして。<br />
<br />
<span style="font-size: x-small;"><i># お前、それでももの作りに携わってる人間かよとかいう突っ込みはなしの方向で・・・。</i></span><br />
<br />
もう少し余裕もって連絡して欲しいな・・・とおそらく思いつつ、直してくれたのですけど、駆け込みであれこれ言ったので、一度修正されたミスがデグレード。焦り補正で大丈夫と思ったhermit4が駆け込みで印刷にまわした結果がこれ・・・。<br />
<br />
<a class="ProfileTweet-originalAuthorLink u-linkComplex js-nav js-user-profile-link" data-user-id="22603751" href="https://twitter.com/hermit4" style="color: #0084b4; font-family: Arial, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Osaka, メイリオ, Meiryo, 'MS Pゴシック', 'MS PGothic', sans-serif; font-size: 14px; line-height: 14px; text-decoration: none !important;"><img alt="" class="ProfileTweet-avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/1347250209/Andromeego_normal.png" style="border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; border: 0px; float: left; height: 24px; margin: 0px 6px 0px 0px; width: 24px;" /></a><br />
<div class="ProfileTweet-header u-cf" style="-webkit-transition: color 0.15s; background-color: white; color: #8899a6; font-family: Arial, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Osaka, メイリオ, Meiryo, 'MS Pゴシック', 'MS PGothic', sans-serif; font-size: 14px; line-height: 19.25px; margin: 0px; transition: color 0.15s;">
<div class="ProfileTweet-authorDetails" style="line-height: 14px; padding-top: 2px;">
<a class="ProfileTweet-originalAuthorLink u-linkComplex js-nav js-user-profile-link" data-user-id="22603751" href="https://twitter.com/hermit4" style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; color: #0084b4; text-decoration: none !important;"><span class="ProfileTweet-originalAuthor u-floatLeft u-textTruncate js-action-profile-name" style="float: left !important; max-width: 60%; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; word-wrap: normal !important;"><b class="ProfileTweet-fullname u-linkComplex-target" data-aria-label-part="" style="color: #292f33;">緑の翁(hermit4)</b> <span class="ProfileTweet-screenname u-inlineBlock u-dir" data-aria-label-part="" dir="ltr" style="color: #8899a6; direction: ltr !important; display: inline-block !important; font-size: 13px; max-width: 100%; unicode-bidi: embed;"><span class="at">@</span>hermit4</span></span></a><span class="u-floatLeft" style="float: left !important;"> · </span><span class="u-floatLeft" style="float: left !important;"><a class="ProfileTweet-timestamp js-permalink js-nav js-tooltip u-textUserColor" href="https://twitter.com/hermit4/status/523059296691449857" style="-webkit-transition: color 0.15s; background-color: transparent; background-position: initial initial; background-repeat: initial initial; color: rgb(0, 132, 180) !important; display: inline-block; font-size: 13px; text-decoration: none; transition: color 0.15s; white-space: nowrap;" title="19:33 - 2014年10月17日"><span aria-hidden="true" class="js-short-timestamp js-relative-timestamp" data-long-form="true" data-time="1413542028">2 時間</span><span class="u-hiddenVisually" data-aria-label-part="last" style="border: 0px !important; clip: rect(1px, 1px, 1px, 1px) !important; height: 1px !important; overflow: hidden !important; padding: 0px !important; position: absolute !important; width: 1px !important;">2 時間前</span></a></span></div>
</div>
<div class="ProfileTweet-contents" style="background-color: white; color: #292f33; font-family: Arial, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Osaka, メイリオ, Meiryo, 'MS Pゴシック', 'MS PGothic', sans-serif; font-size: 14px; line-height: 19.25px; margin-left: 30px; margin-top: -5px;">
<div class="ProfileTweet-text js-tweet-text u-dir" data-aria-label-part="0" dir="ltr" lang="ja" style="direction: ltr !important; font-size: 26px; letter-spacing: 0.01em; line-height: 32px; margin-bottom: 5px; unicode-bidi: embed; white-space: pre-wrap;">
ぎゃーす。印刷されてきたの見たらドメイン間違ってる。途中まで直ってたのになぁ。表紙側の左右の直してもらったら、ドメイン間違ってる方で入れ替わってるし・・・orz </div>
<div class="js-tweet-details-fixer tweet-details-fixer" style="margin-bottom: 10px;">
<div class="TwitterPhoto js-media-container" style="margin: 10px 0px;">
<div class="TwitterPhoto-container" data-card-type="photo" data-card-url="//twitter.com/hermit4/status/523059296691449857/photo/1" data-element-context="platform_photo_card" style="max-width: 100%; text-align: center; vertical-align: top;">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGGDqGCTyx18Pb56COYntjnhaN8X6ir_NLlDc-rQ2GadkyjlDBcI69IFt624ZiJPneuA_MYFpUBvNlRkBG3eJkCV1jD2X9Ri-6OdJRGOVciCYmxV8ohlPkMiCuP610QbiwL3fWSaQUYXwW/s1600/B0JHpvZCYAEh5Wv.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGGDqGCTyx18Pb56COYntjnhaN8X6ir_NLlDc-rQ2GadkyjlDBcI69IFt624ZiJPneuA_MYFpUBvNlRkBG3eJkCV1jD2X9Ri-6OdJRGOVciCYmxV8ohlPkMiCuP610QbiwL3fWSaQUYXwW/s1600/B0JHpvZCYAEh5Wv.jpg" height="320" width="240" /></a></div>
</div>
</div>
</div>
</div>
<br />
qt-users.jp とすべきところが qt-useres.jp となる始末・・・。何せ、<a href="http://www.ospn.jp/osc2014-fall/" target="_blank">OSC Tokyo 2014/Fall</a>は、明日から2日間で開催されるので、もう直している暇はありません・・・シール貼るべきかと思っていたら<br />
<br />
<ol class="stream-items js-navigable-stream" id="stream-items-id" style="color: #292f33; font-family: Arial, 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', Osaka, メイリオ, Meiryo, 'MS Pゴシック', 'MS PGothic', sans-serif; font-size: 14px; line-height: 18px; list-style: none; margin: 0px; padding: 0px; position: relative;">
<li class="js-stream-item stream-item stream-item
js-activity js-activity-reply" data-component-context="reply_activity" data-item-id="523059805724745728" data-item-type="activity" id="stream-item-activity-523059805724745728" style="background-clip: padding-box; background-color: white; border-left-color: rgb(225, 232, 237); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(225, 232, 237); border-right-style: solid; border-right-width: 1px; line-height: inherit;"><div class="tweet original-tweet js-stream-tweet js-actionable-tweet js-profile-popup-actionable js-original-tweet
" data-expanded-footer="<div class="js-tweet-details-fixer tweet-details-fixer">
<div class="entities-media-container js-media-container" style="min-height:0px">
</div>
<div class="js-machine-translated-tweet-container"></div>
<div class="js-tweet-stats-container tweet-stats-container ">
</div>
<div class="client-and-actions">
<span class="metadata">
<span>19:35 - 2014年10月17日</span>
&middot; <a class="permalink-link js-permalink js-nav" href="/junNGYM/status/523059805724745728" tabindex="-1">詳細</a>
</span>
</div>
</div>
" data-has-parent-tweet="true" data-is-reply-to="true" data-item-id="523059805724745728" data-mentions="hermit4" data-name="永山純一" data-screen-name="junNGYM" data-tweet-id="523059805724745728" data-user-id="10212872" data-you-block="false" data-you-follow="true" style="background-color: #f5f8fa; border-bottom-color: rgb(225, 232, 237); border-bottom-style: solid; border-bottom-width: 1px; cursor: pointer; min-height: 51px; padding: 9px 12px; position: relative;">
<div class="content" style="margin-left: 58px;">
<div class="stream-item-header">
<a class="account-group js-account-group js-action-profile js-user-profile-link js-nav" data-user-id="10212872" href="https://twitter.com/junNGYM" style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; color: #8899a6; text-decoration: none;"><img alt="" class="avatar js-action-profile-avatar" src="https://pbs.twimg.com/profile_images/497074399506231296/Jb4JLtAH_bigger.jpeg" style="border-bottom-left-radius: 5px; border-bottom-right-radius: 5px; border-top-left-radius: 5px; border-top-right-radius: 5px; border: 0px; float: left; height: 48px; margin-left: -58px; margin-top: 3px; width: 48px;" /><strong class="fullname js-action-profile-name show-popup-with-id" data-aria-label-part="" style="color: #292f33;">永山純一</strong> <span class="username js-action-profile-name" data-aria-label-part="" style="direction: ltr; font-size: 13px; unicode-bidi: embed;"><span style="color: #b1bbc3;">@</span>junNGYM</span> </a><small class="time" style="color: #8899a6; font-size: 13px;"> <a class="tweet-timestamp js-permalink js-nav js-tooltip" href="https://twitter.com/junNGYM/status/523059805724745728" style="background-color: transparent; color: #8899a6; text-decoration: none;" title="19:35 - 2014年10月17日"><span aria-hidden="true" class="_timestamp js-short-timestamp js-relative-timestamp" data-long-form="true" data-time-ms="1413542150000" data-time="1413542150">2時間</span><span class="u-hiddenVisually" data-aria-label-part="last" style="border: 0px !important; clip: rect(1px, 1px, 1px, 1px) !important; height: 1px !important; overflow: hidden !important; padding: 0px !important; position: absolute !important; width: 1px !important;">2時間前</span></a></small></div>
<div class="js-tweet-text tweet-text" data-aria-label-part="0" lang="ja" style="white-space: pre-wrap; word-wrap: break-word;">
<a class="twitter-atreply pretty-link" dir="ltr" href="https://twitter.com/hermit4" style="background-color: transparent; background-position: initial initial; background-repeat: initial initial; color: #0084b4; text-decoration: none;"><span style="color: #66b5d2;">@</span>hermit4</a> 急遽ドメイン押さえてリダイレクトww</div>
<div class="stream-item-footer" style="display: table; font-size: 12px; padding-top: 3px; width: 506px;">
<a class="details with-icn js-details" href="https://twitter.com/junNGYM/status/523059805724745728" style="background-color: transparent; color: #8899a6; display: table-cell; margin: 0px; text-decoration: none;"><span class="Icon Icon--conversation" style="background-color: transparent; color: #0084b4; display: inline-block; font-size: 16px; margin-right: 4px; position: relative; top: 2px; vertical-align: baseline;"></span> <span style="color: #0084b4;">会話を表示</span></a><br />
<ul class="tweet-actions js-actions" style="display: table-cell; list-style: none; margin: 0px; padding: 0px; text-align: right;">
<li class="action-reply-container" style="display: inline;"><a class="with-icn js-action-reply js-tooltip" data-modal="tweet-reply" data-original-title="" href="https://twitter.com/hermit4#" role="button" style="background-color: transparent; color: #8899a6; margin-left: 8px; text-decoration: none;"><span class="Icon Icon--reply" style="background-color: transparent; display: inline-block; margin-right: 4px; position: relative; top: 1px; vertical-align: baseline; width: auto;"></span> <span style="color: inherit;">返信</span> </a></li>
<li class="action-rt-container js-toggle-state js-toggle-rt" style="display: inline;"><a class="with-icn retweet js-tooltip" data-modal="tweet-retweet" data-original-title="" href="https://twitter.com/hermit4#" role="button" style="background-color: transparent; color: #8899a6; margin-left: 8px; text-decoration: none;"><span class="Icon Icon--retweet" style="background-color: transparent; display: inline-block; margin-right: 4px; position: relative; top: 1px; vertical-align: baseline; width: auto;"></span> <span style="color: inherit;">リツイート</span> </a></li>
<li class="action-fav-container js-toggle-state js-toggle-fav" style="display: inline;"><a class="with-icn favorite js-tooltip" data-original-title="" href="https://twitter.com/hermit4#" role="button" style="background-color: transparent; color: #8899a6; margin-left: 8px; text-decoration: none;"><span class="Icon Icon--favorite" style="background-color: transparent; display: inline-block; margin-right: 4px; position: relative; top: 1px; vertical-align: baseline; width: auto;"></span> <span style="color: inherit;">お気に入りに登録</span> </a></li>
<li class="more-tweet-actions" style="display: inline;"><div class="action-more-container" style="display: inline-block;">
<div class="dropdown" style="display: inline-block; position: relative;">
<button class="btn-link with-icn dropdown-toggle js-dropdown-toggle js-tooltip" data-original-title="" style="background-image: none; border-bottom-left-radius: 0px; border-bottom-right-radius: 0px; border-top-left-radius: 0px; border-top-right-radius: 0px; border: 0px; box-shadow: none; color: #8899a6; cursor: pointer; font-family: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px 0px 0px 8px; overflow: visible; padding: 0px;" type="button"><span class="Icon Icon--dots" style="background-color: transparent; display: inline-block; font-size: 12px; margin-right: 4px; position: relative; top: 1px; vertical-align: baseline; width: auto;"></span> <span style="color: inherit;">その他</span></button></div>
</div>
</li>
</ul>
</div>
</div>
</div>
</li>
</ol>
<br />
と言うアドバイスをいただいたので、まじですか・・・とかいいつつ、お名前.comで<a href="http://qt-usere.jp/" target="_blank">ドメイン</a>を取り、レンタルサーバーにページを立て、ごめんなさいのお詫びのHTMLをごそごそ書いて、放り込んできました。<br />
<br />
というわけで、ごめんなさい、明日、明後日に、明星大学で行われるOpen Soruce Conference 2014 Tokyo/Fall ではドメイン 間違ったままのパンフレット配ります。<br />
<br />
みんな、m9(^<span style="background-color: white; color: #545454; font-family: arial, sans-serif; font-size: x-small; line-height: 18px;">Д</span>^)とかしに来て下さい。お待ちしています。<br />
<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-80714431418418815312014-02-24T13:09:00.000+09:002014-02-26T13:22:51.463+09:00PayPalには、ちょっと懲り懲りです。先日の日記にも書いたチャージバックについてです。2013年12月発売でPre Orderが開始されていたため、昨年の10月にPre Orderをしたものの、12月発売のまま1月以降、メールへの問い合わせにも返信が無く、音信不通になっていたEmopulse。<br />
<div>
<br /></div>
<div>
仕方がないので、PayPalさんとEmoPulseが利用していたonline shop構築サービスのShopifyさんにメールで問い合わせ出してました。</div>
<div>
<br /></div>
<div>
PayPalからは、期日超えてるから何もできないのでカード会社に連絡してください、こちらは記録だけしておきますといわれました。Shopifyからきた返事では、多くの苦情があったためshopサービスを止めました、チャージバックのケースなので、カード会社にご相談をというアドバイスに従って、カード会社に相談した所、カード会社が対応中となっています。</div>
<div>
<br /></div>
<div>
この結果、Emopulse社ではなく、PayPal社がカード会社と売り手との仲立ちをしているようなのですが、一応、買い手側にも状況がある程度見れるようです。ただし、売り手とのやり取り内容はいっさい開示されていません。</div>
<div>
<br /></div>
<div>
ところで、このPayPalは金銭徴収の代理をする信用の必要なサービスを提供しているのに、かなりいい加減な対応が目立ちました。チャージバックを始めた最初のステータスではお客様が二重に注文した結果ですとされており、ふと気がつくと未承認の取引があったとされていました。<br />
<br /></div>
<div>
確かに、不正アクセスがあったかもしれないので、アカウント回復のために、パスワード変えろとか、運転免許書提示しろとか、提示されたのが日本語だからアカウントの住所を日本語に変えろとか、さらにクレジット番号がすべて入った請求書のコピーを出せとか色々要求を突きつけてきていましたが・・・。</div>
<div>
<br /></div>
<div>
日記にも書きましたが、商品が発送されないまま、音信不通になったので、原因は商品の未達なんですけどね・・・。</div>
<div>
<br /></div>
<div>
売り手からの回答期限がきても、売り手はだんまりだったようなのですが、PayPalのステータスが未承認の取引となってるのも気になって、商品が未達なのが原因ですよというメールをPayPalに出したところ、その直後、売り手からメールがあったとの事で、PayPalが異議を行ったというステータスになってました。おそらくPayPal側からカード会社宛に異議が上がったのだと思いますけど・・・。いやいやいや、そのメールって、売り手じゃなくて買い手側からのメールなんじゃないでしょうか。いくらなんでもこのタイミングで?!という状況でして。<br />
<br /></div>
<div>
もし売り手側から「何らかの手続きが未達だから発送してない」とのメールと誤認して異議でも上げられていたらたまったものじゃありません。<br />
<br />
もう一度、PayPalに、売り手のメールだと称して異議を行ったというステータスは、買い手からのメールじゃありませんか?誤解した情報で買い手のカード会社に対する信用を落とされると困るので、良く確認して欲しい、カード会社の言い分と、商品が未達との買い手の言い分が一致していないなら、その旨買い手にも連絡すべきでは?というメールを出したのですが、チャージバックをキャンセルしたいなら、公証人つきの書類を出してどうこう・・・というおかしなメールが届いてかなり憂鬱な気分になりました。<br />
<br />
翌朝、大慌てで電話をかけたところ、片言の日本語で対応してくれたスタッフの方によると、メールへの返信は日本語があまりわからないアメリカスタッフが、間違った内容のメールを送ったとの事でしたが・・・はたしてちゃんと理解してくれているのでしょうか・・・。お詫びの言葉は書いてあるものの、PayPalを使うメリットがどうのこうのというメールが送られてきただけで、異議の履歴は「売り手からのメール」のままになってました。<br />
<br /></div>
<div>
銀行のクレジットカードということもありますし、後日の信用問題に関わるので、PayPalに誤りを指摘する連絡しただけだったのですけど・・・。カード会社にも連絡すべきなのか悩ましい所です。</div>
<div>
<br /></div>
<div>
まぁ、ともかく、予約した商品が届かないという面倒な状況が、さらにチャージバックという手続きで面倒で悩ましい状況になってしまって、届かなかった事より、日本語が通じてない第三者のPayPalがああだこうだと動いている事にうんざりしています。<br />
<br />
たしか、クレジットカードで直接やり取りする手段もあったはずなので、PayPal使わずに、普通にクレジットカードを入力して処理すれば良かったのかもしれませんね。<br />
面倒な手続きばかりで、PayPalにはもううんざりです。<br />
<br />
<br /></div>
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-68616665201745724912014-01-29T01:46:00.000+09:002014-03-22T13:40:34.674+09:00[追記] スマートウォッチに飛びついて失敗・・・大変ご無沙汰しておりました隠者です。<br />
<br />
毎年一月だけは頑張ってブログ書いているのですが、今年は早々にインフルエンザに倒れ、埋め合わせに追われている中に、新年会等が重なったので、すっかりご無沙汰してしまいました。<br />
<br />
さて、そんながっかりな新年を迎えていましたが、もう一つ残念な結果に成った事があります。昨年、仕事仲間から面白そうなスマートウォッチの話を聞いて、すごく興味を持っていました。<br />
<br />
クラウドファインディングのIndiegogoで、投資を求めていた<a href="http://www.emopulse.com/">EmoPulse</a>のスマートウォッチです。projectサイトは既に閉鎖されていますが、<a href="http://web.archive.org/web/20130608013144/http://www.indiegogo.com/projects/watches-of-the-future?">WebArchive</a>で見る事ができます。<br />
<br />
日本でも、いくつかのサイトでちらほらと紹介されていました。<br />
・<a href="http://www.roomie.jp/2013/07/85989/">Roomie</a><br />
・<a href="http://youpouch.com/2013/06/12/123785/">pouch</a><br />
・<a href="http://www.gigamen.com/smile-emopulse.html">Gigamen</a><br />
・<a href="http://techtech.info/2013/08/smile-emopulse.html">テクテク</a><br />
<br />
ただ、投資募集のタイミングでは、スマートフォンとの明確な差がデザインだけなのと、さすがに機能てんこ盛り過ぎて、時計としてはちょっとなぁと思う所もあって、投資するほどでもないかと悩んでいるうちに期限がきてしまったようでして。<br />
<br />
昨年は色々辛い日々だった(<span style="font-size: x-small;">やらずに後悔する事の多い日々でした</span>)こともあって、想像以上にがっかりしていた所で、割とすぐにPre Orderが始まったという話を聞いたので手続きをとろうとしたのですが・・・あなたの国へのShipは設定されていませんとのつれない状況。でも、しばらくして10月にふと思い立って手続きしたところ、なんとPre Orderが通ってしまいました。<br />
<br />
12月発売ということで、1月後半には日本に届くかなと楽しみにしていたのですが、年が開けても12月発売の内容のまま、何の情報更新もなかったので、さすがに心配になって英語で質問メールを出しました。しかし、10日たっても返信なし。返信を待っている間に、Pre Orderのページがクローズされてしまうに至って、あわてて支払いを仲介したPayPalやら、Pre Orderページを運営していたShopifyに確認の連絡を取ってみました。<br />
<br />
Pre Orderなのに注文時点でPayPal経由で課金はされてしまっていて、すでに3ヶ月が経過済み。PayPalには、発売日を過ぎても発売された様子がない事と、メールに応答がないのだけど、メール以外で販売者に連絡を取る手段はないでしょうかと聞いたのですが、返事は素っ気なく、お金を払ってから45日経過すると返金処理できないので、カード会社と相談してくれとの事でした。まぁそうだよねぇ・・・。<br />
<br />
Shopifyからは、似た苦情が来ているので店をCloseしました。PayPalやカード会社に連絡を取りキャンセルやCharg Backの手続きを取る事を推奨します。彼らは、何も出荷した様子がありません。とのお返事。<br />
<br />
肝心のEmoPulseからは何の返信も来ないので、状況はさっぱりわかりません。単純に遅れているだけなのか、Projectが失敗したのか、それとも・・・。<br />
<br />
とりあえず、一番近くにいるはずの通販会社がカード会社に連絡を推奨するという返事をくれるくらいだから、駄目なんでしょうね。PayPalや店の薦めに従って、クレジットカード会社に連絡し、セキュリティ部門にご相談して商品未達の不正使用を受けたという事で処理に入っていただく事になりました。<br />
<br />
まぁ、さすがに時計として腕につけて持ち歩くか?と問われると、ちょっと落としそうだし、重そうだし、電池持たなさそうなので、机の飾りに終わるかもとは思ってましたが、面白そうなガジェットだったので、期待していたのですけどねぇ。<br />
<br />
今に成ってみると、IndiegogoのProjectページが消えていたり、twitterやfacebookの情報更新の少なさ、予約の段階でPayPalから請求書がきたりと、不審感を感じる所は多々あったのですが、面白そうという気持ちが強すぎて、冷静さを欠いていましたね。<br />
<div>
<br /></div>
次回からは、もうPre Orderでのお金先払いは、投資しても良いという時以外は避ける事にします。<br />
<br />
カード会社の処理が終わるまで2ヶ月くらいかかるそうで。お金が返ってくるのかはまだ不明です。PayPal経由でも不正扱いの処理だと即時カード停止で番号も変わるとの事で、再発行待ち。メインバンクのキャッシュカードと一体型のせいで、キャッシュカードも停止で、再発行が行われるまでの2週間、非常に不便な事になってしまいました。まぁ、スマートフォンと同じくらいの金額なので、多少の不便は我慢して戻ってくる事を期待したいなと思います。<br />
<br />
<br />
<a name='more'></a>2014.02.02 追記<br />
昨夜、本件についてPayPalからメールがありました。どうやら、問題解決にあったっては、クレジットカード会社から連絡をもらったPayPalが、状況確認に入るようです。<br />
調べたら、<a href="https://www.paypal.com/jp/cgi-bin/webscr?cmd=xpt/Marketing/securitycenter/sell/ChargebackGuide1-outside">チャージバックに関しても記載がありました</a>。<br />
まぁ、どちらかと言えば売り手のために積極的に動きますよ的な内容でがっかりしますが・・・。<br />
<br />
こちらはカード会社への連絡前に取引についてPayPalに異議を出していたため、わりとスムーズに進んでいて、異議の継続という形で、相手へもチャージバックに関する連絡が行っているようです。<br />
現在、相手の応答待ちで、10日間以内にチャージバックへの異議を申し立てる必要があるようなので、それであちらの状況がわかるのかもしれません。<br />
とりあえず、このページのView数が伸びているので、気になっている人もいるのでしょう。状況に変化があり次第またご報告します。<br />
<br />
なお、カード会社のチャージバックも、利用できる期間等があるようです。ご自身の取引については、早めにご自身でご確認下さい。<br />
<br />
-------<br />
2014.03.22<br />
<br />
PayPalの対応は変な感じでしたが、クレジットカード会社から、無事にチャージバックの手続き完了のお知らせが来ました。PayPalの流れを見ていると、EmoPulse社との連絡は取れなかったのではないかと思われます。本当に、どうなってるんでしょうねぇ。残念です。<br />
<br />
とりあえず、キャッシュカードが使えなくなったり、クレジットカードの番号が変わったりと面倒な手続きでしたが、一件落着しました。hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-53208857177496387392014-01-06T23:56:00.000+09:002014-01-07T02:28:40.473+09:00はじめてのReVIEW読了正月早々3日坊主ならぬ2日坊主だった隠者です。<br />
<br />
いや、年末年始の甥っ子姪っ子の攻撃ですっかりHPがゼロでしたので・・・。<br />
コミケで買って来たおもちゃの猫絵のお札をプレゼントしたら、同じ額の本物のお札欲しいなって幼稚園児にねだられて困りました。1万猫が5枚、五千猫が5枚、千猫が5枚ですからねぇ。<br />
どうやら、お駄賃とかでお金を蓄えさせて、欲しいものは自分で買わせてるとの事で、幼稚園児なのにお金に興味津々のようでした。あの年頃は、紙のお金で売買ごっこなんじゃないのかな。ゲーム買うにはあといくらで・・・を真面目に計算する幼稚園児は怖いです。<br />
<br />
さて、コミケで売り子をやっていたので、開店直後にテクブのブースに並んで、テクブ本購入してきました。<br />
<br />
中でも、一番気になっていたのが、ReVIEW本です。<br />
<a href="https://github.com/kmuto/review/blob/master/doc/quickstart.rdoc">ReVIEW</a>は、軽量マークアップ形式であるReVIEW記法を使ってテキストベースで書いた内容をEPUBやPDFに変換してくれるツールです。<br />
<br />
実は、隠者のお客様はドキュメントについての定型というものがありません。人によっては、Textで書く人、Wordで書く人、HTMLで書く人をはじめ、Excelで書く人や中にはPowerPointで書く人までいる状況でして。正直よくないと考えています。<br />
そこで、お客様にこの辺りのドキュメントのフォーマットを統一できないかという話をしたくて、だいぶ前にこの手のツールを調べていました。<br />
<br />
既に個人的にはReVIEWではなく<a href="http://sphinx.shibu.jp/index.html">Sphinx</a>を使ってドキュメントを用意するようにつとめているのですが、TLではReVIEWを使っている人が多いようなので、もしかしたらReVIEWの方が国内では流行るのかもという気もしていて、今後の動向が気になっています。<br />
<br />
ReVIEWは、Rubyのソースコード完全解説本や、Rubyを256倍使う本の無道編の著者である、青木峰郎さんが作成され、現在は、独習○○系本で良く名前をお見かけする武藤健志さんをはじめとする方々がメンテナンスをされている、書籍を書く事に重点を置いて作成されているツールのようです(調べてたくせに制作者がこの方々とは知らなかった)。<br />
<br />
ReVIEW本では、環境の構築から、簡単なドキュメントの生成、スタイルをつかった整形まで、電子書籍等を作る場合に必要になりそうな基礎がしっかり入っていました。<br />
特に、悩みそうなスタイル部分と、コマンドの解説のあたりは重宝しそうです。<br />
<br />
ちなみに仕事で使うつもりといったSphinxですが、こちらはPythonで書かれたツールで、reStructuredText記法を使ってテキストベースで書いた内容をHTMLやPDFやEPUB形式に変換してくれるツールです。まぁ、ReVIEWと思いっきりかぶっているのですが、使った感触では、ReVIEWは書籍のような出版系に、Sphinxの方はHTMLベースでの運用も含めた仕様書やマニュアル系に向いている気がしています(注:個人的な感想ですが)。<br />
<br />
ReVIEWの方の調査は半端で止めてしまった(というか、仕事の環境の都合で早めに断念した)ため拡張方法は不明ですが、Sphinxはいろいろと拡張できるように設計されているようで、拡張モジュールもいくつか提供されていて、特にテキストでの表記から図を生成できる、blockdiagとかmscgenとかinheritance_diagramとか、慣れは必要なものの便利な機能もあったりします。<br />
<br />
取っ付きやすさと面でいうと、機能がしぼられている分、ReVIEWの方が取っ付きやすいように思いますけど、仕様書のために使いたいと思うと、少し物足りない感がありますね。<br />
<br />
ただ、Sphinxの残念なところは、PDF化の時に、なんだか思い通りに出力させるのが大変だった気がしています。とりあえず、仕事上はHTMLでも十分な感じなので、一応は満足しているのですが。<br />
<br />
何にせよ、どうせなら仕様書もテキストベースに切り替えて、きっちりバージョン管理したいものですねぇ。<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-38662855296859227312014-01-02T23:56:00.000+09:002014-01-03T09:45:05.952+09:00Qtのバグレポートを書いてみました甥っ子と姪っ子の相手でふらふらの隠者です。この子供達と毎日つきあうと思うと、弟夫婦には頭が下がる思いです。<br />
<div>
<br /></div>
<div>
<div>
さて、そんな二人が寝静まった後、先日見つけた間違いのうち、Qt5.2のMac版では、PluginPackageMac.cppが使われていない問題を初バグレポートしてみました。</div>
</div>
<div>
<br /></div>
<div>
どうやってバグをレポートするのかについての紹介は以下のサイトにあります。</div>
<div>
<a href="http://qt-project.org/doc/qt-5/bughowto.html">http://qt-project.org/doc/qt-5/bughowto.html</a> (簡易版)</div>
<div>
<a href="http://qt-project.org/wiki/ReportingBugsInQt">http://qt-project.org/wiki/ReportingBugsInQt</a> (詳細版)</div>
<div>
<br /></div>
<div>
Qtでは、<a href="http://bugreports.qt-project.org/">JIRA</a>を使ってバグ管理がされています。バグレポートを上げるには、まずはJIRAのアカウントが必要になります。アカウントが無い場合、<a href="https://bugreports.qt-project.org/secure/Signup!default.jspa">Sign Up</a>から簡単にアカウントの作成が可能です。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfJJxOCTTnEsUzRY6HuY7k5I-GRhWmd8OwgGQeccs2NwUCLWNIl37HBRbhGp_XSQyLH2MJeBIoBrcUdyhREL-SE323Av629QAytRZVyMf5RyLo0KnNvlTf5tN7rWJSuxY1BWjZvL-W-r74/s1600/bugsignup.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="313" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhfJJxOCTTnEsUzRY6HuY7k5I-GRhWmd8OwgGQeccs2NwUCLWNIl37HBRbhGp_XSQyLH2MJeBIoBrcUdyhREL-SE323Av629QAytRZVyMf5RyLo0KnNvlTf5tN7rWJSuxY1BWjZvL-W-r74/s400/bugsignup.jpg" width="400" /></a></div>
<br /></div>
<div>
<br /></div>
<div>
アカウントが用意されたら、まずはJIRAのIssueリストで類似の問題が無いか、キーワードを考えて右上のQuick Searchで検索してみます。が、この検索、デフォルトでCloseされた問題も一緒に検索したり、バージョン指定で検索しにくかったり、いまいち使いにくいですね。JIRAには結構期待してたのにちょっと残念。</div>
<div>
<br /></div>
<div>
まぁ、重複登録しないにこした事はないのですが、考えたキーワードで見当たらなければ仕方が無いので、バグを登録してしまいましょう。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQ1s9FVPCHkEDTIW2mtBejjne3wJ2U5Wmea121BmZ4Soc2eEUruj5hHCfwLLQCuS_ScyiOXYRSzMEe0mRrvdTy_qNGKshEXRe7JIkZ2Dd9y37v8FiTD9LqGR2JIWOirKuEGbKxMtrc9OY/s1600/createbug.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="252" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDQ1s9FVPCHkEDTIW2mtBejjne3wJ2U5Wmea121BmZ4Soc2eEUruj5hHCfwLLQCuS_ScyiOXYRSzMEe0mRrvdTy_qNGKshEXRe7JIkZ2Dd9y37v8FiTD9LqGR2JIWOirKuEGbKxMtrc9OY/s400/createbug.jpg" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
Issueのページには、Create Issueのボタンがありますので、それをクリックすると、バグ登録のページが表示されます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD6ATILgjiwBJqreNKLxIrUpTi0agXm5w9rYbUmaxxEtSeB1v5Fpru5Vc-Gp7JBMIX1fUj1OhutcLjt4-pDXGWP5xHBO0dzpw2RqF_j_ST1aRXebsbYHS7MNogZyEfaTjvF0CULIUtoYJm/s1600/IssueDialog.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="315" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhD6ATILgjiwBJqreNKLxIrUpTi0agXm5w9rYbUmaxxEtSeB1v5Fpru5Vc-Gp7JBMIX1fUj1OhutcLjt4-pDXGWP5xHBO0dzpw2RqF_j_ST1aRXebsbYHS7MNogZyEfaTjvF0CULIUtoYJm/s400/IssueDialog.png" width="400" /></a></div>
バグ報告の場合、ProjectはQt、Issue TypeはBugのままで良いです。<br />
<br />
Summaryには、バグを簡潔かつ具体的に記載するのが良さそうです。長過ぎたり、曖昧だったり(うまく動かないみたいな記載は駄目)するのは良くないです。<br />
<br />
Affects Version/sには、問題が発生するバージョンを記載します。今回は、Qt 5.2.0の検証のために、v5.2.0をチェックアウトしたコードで試したので、5.2.0を選択しました。<br />
<br />
Component/sでは、問題の根本原因と思われるコンポーネントを選択します。今回は、WebKitを選択しました。<br />
<br />
Descriptionは、説明になります。一般的には<br />
・何をしたのか1ステップずつ再現に必要な手順を記載する<br />
・何を期待したのか記載する<br />
・何が起きたのか期待する<br />
といった事を書くと良いようです。<br />
<br />
Environmentは、問題の再現した環境の説明になります。<br />
・使用しているコンパイラ名とバージョン<br />
・使用しているOS名とバージョン<br />
・Qtのバージョンやその構成(ビルドしたQtならconfigureのオプションとかも入れるとよさそう?)<br />
<br />
今回は、問題の原因に近い部分まで探っていたので、Descriptionについては、どこの変更が原因で、何が動いて、どうなったのかを、なんちゃって英語で軽く書いて見ました。こういうの書くと、英語のスキルの無さが露呈して、悲しくなりますね・・・。<br />
<br />
<a href="https://bugreports.qt-project.org/browse/QTBUG-35899">https://bugreports.qt-project.org/browse/QTBUG-35899</a><br />
<br />
入力して3日も立たずに、これを試してくれというメッセージが追加されました。<br />
<br />
<a href="https://codereview.qt-project.org/#change,74564">https://codereview.qt-project.org/#change,74564</a><br />
<br />
修正内容は、おおよそは調べていたものと同じですが、こちらで考えた修正では足りてない部分もあったようです。まぁ、残念ながら実家の貧弱な回線だとgit fetchがさっぱり終わらず(というか途中で止まる)、まだ試せていませんが、自宅に帰り次第試してみたいなと思います。<br />
<br />
まぁ、上記で記載したバグのレポートが、Qtのプロジェクトに貢献する一番楽な部類になるのではないかと思います。さらに進んだ貢献をしたいという方は、以下のURLを参考にがんばってみて下さい。<br />
<br />
<a href="http://qt-project.org/contribute">http://qt-project.org/contribute</a><br />
<br />
<br /></div>
<div>
<span class="aui-icon icon-required" style="background-color: white; background-image: url(data:image/png; background-position: 0px 0px; background-repeat: no-repeat no-repeat; border: none; color: #333333; display: inline-block; font-family: arial, tahoma, verdana, sans-serif; font-size: 13px; height: 16px; line-height: 13px; margin: 0px; padding: 0px; position: absolute; right: -10px; text-indent: -999em; top: 0px; vertical-align: text-bottom; width: 10px;">Required</span></div>
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-90530937749790996232014-01-01T23:48:00.000+09:002014-01-02T01:19:37.884+09:00新年あけましておめでとうございます昨日は初コミケかつ初サークルお手伝いだった隠者です。<br />
<br />
年が明けたにも関わらず、昨日のイベント疲れか、いまいち新しい気持ちに成れていませんが、皆様は良い年を迎えられましたでしょうか。<br />
<br />
さて、昨日はできなかったので、とりあえずこの1年を振り返り、今年を考えてみようかと。<br />
<br />
個人事業を始めて2年と数ヶ月に成るわけですが、もうドタバタした1年でした。落ち着くかと思った矢先にといった感じで色々起こっては、常に何かしら騒ぎの渦中にいた感じでした。Twitterでは割合と明るい内容で過ごしていましたけど、フリーランスなんて社会の底辺で食っている技術者ですから、不安とプレッシャーの中の綱渡りで、冷や汗たらたらで立ち回る日々ですよ、いや、本当に。<br />
<br />
どれほど忙しくても、勉強会にはそこそこ出席し、ツイッターでアホな事をつぶやきつつも、お客様の信頼を失わないように、必要な情報を集めて回る。自分の範疇の外にある事も、とにかく解決策を模索して、お客様と一緒に悩み、困りながら、何かしらの道を探す。あまり有益な結果を残せなかったのではないかという後悔と、自分の至らなさへの憤りで過ごす。そんな日々でした。<br />
<br />
冬に成る頃には、なんとかひと心地ついて、仕事も開発に戻っての年末を迎えられたので、今年こそは・・・・いえ、フラグを立てるのは、もうやめましょう。<br />
<br />
プライベート的には、2012年の秋以降、こちらの不義理で関係が途絶えてしまったネトゲ仲間とは全く連絡が取れなくなってしまって、昨年落ち着き始めてからしばらく、後悔の日々も過ごしましたが、まぁ、ネットだけの付き合いなんてものは、一度切れてしまうともうどうしようもないものですし、後ろを向いて生きられる程残りの人生長くないので、詫びのメッセージだけ一方的に送りつけて、あまり深く考えない事にしました。ごめんなさい。<br />
<br />
両親の体調不良も落ち着いた後は、僕個人の体調が少し崩れていましたけど、幸い無事に乗り切りました。プライベート的には、大きな出来事的なものはその程度でしょうか。<br />
<br />
さて、昨年の抱負として課題に挙げたものは、<br />
<br />
<ul>
<li>Wayland</li>
<li>Qt/QML</li>
<li>Silk</li>
</ul>
<br />
だったわけですが、どれもあまり学習が進展しませんでした。変わりに艦メモをちょっといぢろうとしながら、独り秋の夜長に、うっかりゲームの方にはまってしまう始末でして。何一つ成し遂げられなかったようにも思います。<br />
<br />
で、Qt 5.2が出た現在の抱負ですが、Qt 5.2の品質の悪さに愕然としつつ、少しQtに貢献でする必要があるかとも感じています。<br />
また、個人的には少し体調を崩して色々検査したりもあったので、年も年なので、体調にも気を使いながら、ドタバタで消耗した自分のペースをつかみ直す一年にしたいなと思います。<br />
<br />
まぁ、そんなわけで<br />
<br />
<ul>
<li>医者に勧められたのでダイエット</li>
<li>Qt/QMLの勉強・普及促進・学習</li>
<li>艦メモ</li>
</ul>
<div>
あたりが、とりあえず今年の前半の抱負になるでしょうか。</div>
<div>
え、昨年に比べてもさらにいい加減すぎるって?まぁ、なんだ。1年ドタバタやって気がついた事は、根っから真面目に何かに取り組んだとしても、解決しない事は解決しないって事でしょうか。</div>
<div>
<br /></div>
<div>
少しゆるいくらいで先を見て、少しぬるいくらいで前を目指して、少しずつやってくしか無いんですよね、人生なんてものは。</div>
<div>
<br /></div>
<div>
というわけで、新年早々ですが、のほほんとのんびりがんばりますので、今年もどうぞよろしくお願いいたします。</div>
<div>
<br /></div>
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-4894737486914607292013-12-29T16:33:00.000+09:002013-12-29T23:19:13.392+09:00Mac版 Qt 5.2のWebViewはPlugin機能が無効になっていた件未だに年賀状が倒せていない隠者です。年の瀬も近づいて来ていますが、皆様進捗どうですか?<br />
<br />
さて、先週の土曜日に、Qt勉強会 #6 @Tokyoに参加して来ました。Qt 5.2も出たことなので、艦メモをビルドしようとがんばったのですが、なぜかFlashがインストールされていません扱いでした。Mac Book Proではソースからビルドしていたのですが、MBAでは横着して5.2の正式版はパッケージから入れており、Beta版のソースコードも削除した直後で、ビルドのできないSrc(<span style="font-size: x-small;">インストーラからinstallできるけど、configureなどは入っていない</span>)はあるものの、デバッグまではできませんでした。<br />
<br />
一応、勉強会では時間いっぱい粘って、WebKitのおおよそのソースコード構成は把握してまして、年末休みに突入してから、こちらでもない、あっちでもないとあれこれ彷徨いましたが、何の事はないそもそもPluginが有効になってない事がわかりました。<br />
<br />
WebKitは、様々なアーキテクチャや下回り用に、コードの一部をMakefileで切り替えて使うように構成されています。今回問題になったのは、PluginPackageの下回りの切り替え部分でした。<br />
<br />
通常、Mac版では<br />
<br />
<i>qtwebkit/Source/WebCore/plugins/mac/PluginPackageMac.cpp</i><br />
<br />
が使われるべき所が、<br />
<br />
<i>qtwebkit/Source/WebCore/plugins/PluginPackageNone.cpp</i><br />
<br />
のコードが使われていました。このコードは、プラグイン未使用環境用で処理の実装はなく、失敗を返すように実装されています。これでビルドされている限り、Pluginは利用できなくなります。<br />
<br />
<br />
<i>qtwebkit/Source/WebCore/Target.pri</i> を読むと<br />
<br />
<hr width="60%" />
<div style="border-width: 1px; border: solid;">
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> enable?(NETSCAPE_PLUGIN_API) {</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> SOURCES += plugins/npapi.cpp</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> unix {</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> mac {</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> SOURCES += \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugins/mac/PluginPackageMac.cpp</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> OBJECTIVE_SOURCES += \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> platform/text/mac/StringImplMac.mm \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> platform/mac/WebCoreNSStringExtras.mm \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugins/mac/PluginViewMac.mm</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> } else {</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> SOURCES += \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugins/qt/PluginPackageQt.cpp \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugins/qt/PluginViewQt.cpp</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> }</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> }</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> :</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> } else {</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> SOURCES += \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugins/PluginPackageNone.cpp \</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugins/PluginViewNone.cpp</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> }</span><br />
<br /></div>
<div>
<div>
<br />
となっています。つまり、NETSCAPE_PLUGIN_APIが有効になっていないわけです。</div>
<div>
ごそごそっと検索かけると、この辺の定義は以下で行われていました。</div>
<div>
<i>qtwebkit/Tools/qmake/mkspecs/features/features.prf</i></div>
<div>
<br /></div>
<hr width="60%" />
<div style="border-width: 1px; border: solid;">
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> # Nescape plugins support (NPAPI)</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> xlibAvailable() {</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WEBKIT_CONFIG += \</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> netscape_plugin_api \</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> use_plugin_backend_xlib</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> # WebKit2</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WEBKIT_CONFIG += \</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugin_architecture_x11 \</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> plugin_process</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> } else: unix|win32-*:!embedded:!wince* {</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WEBKIT_CONFIG += netscape_plugin_api</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> # WebKit2</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WEBKIT_CONFIG += plugin_architecture_unsupported</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> } else {</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WEBKIT_CONFIG += plugin_architecture_unsupported</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> }</span></div>
</div>
</div>
<div>
<br /></div>
<div>
<div>
Macの場合、xlib扱いにはなっておらず、その次のunix:!embedded:!wince* に引っかかるはずなのですが、ここに入らずにelseに入っていました。</div>
<div>
<br /></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">!embedded {</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> message("!!!!! embedded? !!!!")</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">}</span></div>
<div>
<br /></div>
<div>
というのを追加してビルドするとメッセージが出力されるじゃないですか。どうやら、誰かがembeddedを立てているようです。そのせいで、netscape_plugin_apiがWEBKIT_CONFIGに追加されない状態でビルドされていました。</div>
<div>
<br /></div>
<div>
本来はembeddedを落とすのが正しい対処なのですが、誰が立ててるのか見当たらないというか、grepすると多く出過ぎるので、とりあえず暫定的に以下を追加しました。</div>
<div>
<br /></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">} else : mac {</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WEBKIT_CONFIG += netscape_plugin_api</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WEBKIT_CONFIG += plugin_architecture_unsupported</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">}</span></div>
<div>
<br /></div>
<div>
そうすると今度は、Source/WebCore/platform/qt/FileSystemQt.cpp がビルドエラーじゃないですか・・・・なんと言う嫌がらせ。</div>
</div>
<div>
<br /></div>
<div>
<div>
調べてみたら、原因はこれでした。</div>
<div>
<br /></div>
<div>
<a href="http://qt-project.org/doc/qt-5.0/qtdoc/mac-differences.html">http://qt-project.org/doc/qt-5.0/qtdoc/mac-differences.html</a></div>
<div>
<ul>
<li>Q_WS_MAC is no longer defined in Qt 5.</li>
</ul>
<div>
<div>
そう、no longer definedとされていた、Q_WS_MACが定義されなくなってます。</div>
<div>
<br /></div>
<div>
でも、ソースコードでは、未だに数カ所使われていました。そのうち以下の場所でエラーに成ってくれました。エラーでなかったら気がつかないだろう、それ。</div>
<div>
<br /></div>
<hr width="60%" />
<div style="border-width: 1px; border: solid;">
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> bool unloadModule(PlatformModule module)</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> {</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> #if defined(Q_WS_MAC)</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> CFRelease(module);</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> return true;</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> #elif defined(Q_OS_WIN)</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> return ::FreeLibrary(module);</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> #else</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> #ifndef QT_NO_LIBRARY</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> if (module->unload()) {</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> delete module;</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> return true;</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> }</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> #endif</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> return false;</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> #endif</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> }</span><br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
</div>
</div>
</div>
</div>
<div>
<br /></div>
<div>
というわけで、複数ある、Q_WS_MACをQ_OS_MACに置き換える必要がありました。<br />
変更箇所は多いので、diffで上げておきます。<br />
<br /></div>
<hr width="60%" />
<div style="border-width: 1px; border: solid;">
<div>
<div>
<span style="font-size: x-small;"><i><span style="color: #c27ba0;">diff --git a/Source/WebCore/page/qt/EventHandlerQt.cpp </span></i>b/Source/WebCore/page/qt/EventHandlerQt.cpp</span></div>
<div>
<span style="font-size: x-small;">index f45f81d..885fcde 100644</span></div>
<div>
<span style="font-size: x-small;">--- a/Source/WebCore/page/qt/EventHandlerQt.cpp</span></div>
<div>
<span style="font-size: x-small;">+++ b/Source/WebCore/page/qt/EventHandlerQt.cpp</span></div>
<div>
<span style="font-size: x-small;">@@ -52,7 +52,7 @@</span></div>
<div>
</div>
<div>
<span style="font-size: x-small;"> namespace WebCore {</span></div>
<div>
</div>
<div>
<span style="font-size: x-small;">-#if defined(Q_WS_MAC)</span></div>
<div>
<span style="font-size: x-small;">+#if defined(Q_OS_MAC)</span></div>
<div>
<span style="font-size: x-small;"> const double EventHandler::TextDragDelay = 0.15;</span></div>
<div>
<span style="font-size: x-small;"> #else</span></div>
<div>
<span style="font-size: x-small;"> const double EventHandler::TextDragDelay = 0.0;</span></div>
<div>
<span style="font-size: x-small;"><br /></span></div>
<div>
<i><span style="color: #c27ba0; font-size: x-small;">diff --git a/Source/WebCore/platform/FileSystem.h b/Source/WebCore/platform/FileSystem.h</span></i></div>
<div>
<span style="font-size: x-small;">index e1d5b7e..b5fcfa6 100644</span></div>
<div>
<span style="font-size: x-small;">--- a/Source/WebCore/platform/FileSystem.h</span></div>
<div>
<span style="font-size: x-small;">+++ b/Source/WebCore/platform/FileSystem.h</span></div>
<div>
<span style="font-size: x-small;">@@ -48,7 +48,7 @@</span></div>
<div>
<span style="font-size: x-small;"> #endif</span></div>
<div>
<span style="font-size: x-small;"> #endif</span></div>
<div>
</div>
<div>
<span style="font-size: x-small;">-#if USE(CF) || (PLATFORM(QT) && defined(Q_WS_MAC))</span></div>
<div>
<span style="font-size: x-small;">+#if USE(CF) || (PLATFORM(QT) && defined(Q_OS_MAC))</span></div>
<div>
<span style="font-size: x-small;"> typedef struct __CFBundle* CFBundleRef;</span></div>
<div>
<span style="font-size: x-small;"> typedef const struct __CFData* CFDataRef;</span></div>
<div>
<span style="font-size: x-small;"> #endif</span></div>
<div>
<span style="font-size: x-small;">@@ -80,7 +80,7 @@ typedef GModule* PlatformModule;</span></div>
<div>
<span style="font-size: x-small;"> #elif PLATFORM(EFL)</span></div>
<div>
<span style="font-size: x-small;"> typedef Eina_Module* PlatformModule;</span></div>
<div>
<span style="font-size: x-small;"> #elif PLATFORM(QT)</span></div>
<div>
<span style="font-size: x-small;">-#if defined(Q_WS_MAC)</span></div>
<div>
<span style="font-size: x-small;">+#if defined(Q_OS_MAC)</span></div>
<div>
<span style="font-size: x-small;"> typedef CFBundleRef PlatformModule;</span></div>
<div>
<span style="font-size: x-small;"> #elif !defined(QT_NO_LIBRARY)</span></div>
<div>
<span style="font-size: x-small;"> typedef QLibrary* PlatformModule;</span></div>
<div>
<span style="font-size: x-small;"><br /></span></div>
<div>
<span style="font-size: x-small;"><i><span style="color: #c27ba0;">diff --git a/Source/WebCore/platform/qt/FileSystemQt.cpp </span></i>b/Source/WebCore/platform/qt/FileSystemQt.cpp</span></div>
<div>
<span style="font-size: x-small;">index b5d0096..1cd8e2c 100644</span></div>
<div>
<span style="font-size: x-small;">--- a/Source/WebCore/platform/qt/FileSystemQt.cpp</span></div>
<div>
<span style="font-size: x-small;">+++ b/Source/WebCore/platform/qt/FileSystemQt.cpp</span></div>
<div>
<span style="font-size: x-small;">@@ -242,7 +242,7 @@ int writeToFile(PlatformFileHandle handle, const char* data, int length)</span></div>
<div>
</div>
<div>
<span style="font-size: x-small;"> bool unloadModule(PlatformModule module)</span></div>
<div>
<span style="font-size: x-small;"> {</span></div>
<div>
<span style="font-size: x-small;">-#if defined(Q_WS_MAC)</span></div>
<div>
<span style="font-size: x-small;">+#if defined(Q_OS_MAC)</span></div>
<div>
<span style="font-size: x-small;"> CFRelease(module);</span></div>
<div>
<span style="font-size: x-small;"> return true;</span></div>
<div>
<span style="font-size: x-small;"><br /></span></div>
<div>
<span style="font-size: x-small;"><i><span style="color: #c27ba0;">diff --git a/Source/WebCore/platform/qt/RenderThemeQStyle.cpp </span></i>b/Source/WebCore/platform/qt/RenderThemeQStyle.cpp</span></div>
<div>
<span style="font-size: x-small;">index f85a75b..81f9278 100644</span></div>
<div>
<span style="font-size: x-small;">--- a/Source/WebCore/platform/qt/RenderThemeQStyle.cpp</span></div>
<div>
<span style="font-size: x-small;">+++ b/Source/WebCore/platform/qt/RenderThemeQStyle.cpp</span></div>
<div>
<span style="font-size: x-small;">@@ -117,7 +117,7 @@ RenderThemeQStyle::RenderThemeQStyle(Page* page)</span></div>
<div>
<span style="font-size: x-small;"> {</span></div>
<div>
<span style="font-size: x-small;"> int buttonPixelSize = 0;</span></div>
<div>
<span style="font-size: x-small;"> m_qStyle->getButtonMetrics(&m_buttonFontFamily, &buttonPixelSize);</span></div>
<div>
<span style="font-size: x-small;">-#ifdef Q_WS_MAC</span></div>
<div>
<span style="font-size: x-small;">+#ifdef Q_OS_MAC</span></div>
<div>
<span style="font-size: x-small;"> m_buttonFontPixelSize = buttonPixelSize;</span></div>
<div>
<span style="font-size: x-small;"> #endif</span></div>
<div>
<span style="font-size: x-small;"> }</span></div>
<div>
<span style="font-size: x-small;">@@ -228,7 +228,7 @@ void RenderThemeQStyle::adjustButtonStyle(StyleResolver* styleResolver, RenderSt</span></div>
<div>
<span style="font-size: x-small;"> // Ditch the border.</span></div>
<div>
<span style="font-size: x-small;"> style->resetBorder();</span></div>
<div>
</div>
<div>
<span style="font-size: x-small;">-#ifdef Q_WS_MAC</span></div>
<div>
<span style="font-size: x-small;">+#ifdef Q_OS_MAC</span></div>
<div>
<span style="font-size: x-small;"> if (style->appearance() == PushButtonPart) {</span></div>
<div>
<span style="font-size: x-small;"> // The Mac ports ignore the specified height for <input type="button"> elements</span></div>
<div>
<span style="font-size: x-small;"> // unless a border and/or background CSS property is also specified.</span></div>
<div>
<span style="font-size: x-small;">@@ -239,7 +239,7 @@ void RenderThemeQStyle::adjustButtonStyle(StyleResolver* styleResolver, RenderSt</span></div>
<div>
<span style="font-size: x-small;"> FontDescription fontDescription = style->fontDescription();</span></div>
<div>
<span style="font-size: x-small;"> fontDescription.setIsAbsoluteSize(true);</span></div>
<div>
</div>
<div>
<span style="font-size: x-small;">-#ifdef Q_WS_MAC // Use fixed font size and family on Mac (like Safari does)</span></div>
<div>
<span style="font-size: x-small;">+#ifdef Q_OS_MAC // Use fixed font size and family on Mac (like Safari does)</span></div>
<div>
<span style="font-size: x-small;"> fontDescription.setSpecifiedSize(m_buttonFontPixelSize);</span></div>
<div>
<span style="font-size: x-small;"> fontDescription.setComputedSize(m_buttonFontPixelSize);</span></div>
<div>
<span style="font-size: x-small;"> #else</span></div>
</div>
</div>
<div>
<br /></div>
<div>
まぁ、これでも実はビルドエラーが残っていまして、PluginPackageMac.cppで、他にもエラーが出ました。どうやら、WTF::RetainPtrが一部変更になっているようですが、ヘッダを帰ると影響が読めないので、PluginPackageMac.cppの方を一部修正しました。</div>
<div>
<br /></div>
<div>
<br /></div>
<hr width="60%" />
<div style="border-width: 1px; border: solid;">
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><i><span style="color: #c27ba0;">diff --git a/Source/WebCore/plugins/mac/PluginPackageMac.cpp </span></i>b/Source/WebCore/plugins/mac/PluginPackageMac.cpp</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">index 6b6c417..b40f0d4 100644</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">--- a/Source/WebCore/plugins/mac/PluginPackageMac.cpp</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">+++ b/Source/WebCore/plugins/mac/PluginPackageMac.cpp</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">@@ -138,7 +138,7 @@ bool PluginPackage::fetchInfo()</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> if (mimeTypesFileName && CFGetTypeID(mimeTypesFileName.get()) == CFStringGetTypeID()) {</span></div>
<div>
</div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WTF::RetainPtr<CFStringRef> fileName = (CFStringRef)mimeTypesFileName.get();</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">- WTF::RetainPtr<CFStringRef> homeDir = adoptCF(homeDirectoryPath().createCFString());</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">+ WTF::RetainPtr<CFStringRef> homeDir = homeDirectoryPath().createCFString();</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WTF::RetainPtr<CFStringRef> path = adoptCF(CFStringCreateWithFormat(0, 0, CFSTR("%@/Library/Preferences/%@"), homeDir.get(), fileName.get()));</span></div>
<div>
</div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WTF::RetainPtr<CFDictionaryRef> plist = readPListFile(path.get(), /*createFile*/ false, m_module);</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">@@ -255,7 +255,7 @@ bool PluginPackage::load()</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> return true;</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> }</span></div>
<div>
</div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">- WTF::RetainPtr<CFStringRef> path = adoptCF(m_path.createCFString());</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;">+ WTF::RetainPtr<CFStringRef> path = m_path.createCFString();</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> WTF::RetainPtr<CFURLRef> url = adoptCF(CFURLCreateWithFileSystemPath(kCFAllocatorDefault, path.get(),</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"> kCFURLPOSIXPathStyle, false));</span></div>
<div>
<span style="font-family: Arial, Helvetica, sans-serif; font-size: x-small;"><br /></span></div>
</div>
<div>
<br />
これ、自動テストにプラグインの登録、PluginViewの利用が入っていないのでしょうねぇ。</div>
<div>
入っていれば、さすがにこんな大きなデグレード、しかもビルドも通されていない等というお粗末な状態をRelease版として出さないのでしょうけど・・・。</div>
<div>
<br /></div>
<div>
一応、このQt5.2でビルドした艦メモさんは無事に起動して、利用できました。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzIxbW-d7PM8KCHIogVG9dQHMaFx4zLc_XsHi0XgFfroVECjNnVjrGXENolraidA2zxhZsyKKfi26QmV9SXwjMN_yDVu4frryA-dfuPDUjB0ZFFLJy0emW1OIjRlgcqHvtYxtdsa2yyP8/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-12-29+14.14.12.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="251" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwzIxbW-d7PM8KCHIogVG9dQHMaFx4zLc_XsHi0XgFfroVECjNnVjrGXENolraidA2zxhZsyKKfi26QmV9SXwjMN_yDVu4frryA-dfuPDUjB0ZFFLJy0emW1OIjRlgcqHvtYxtdsa2yyP8/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-12-29+14.14.12.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
まぁ、timerでこけるという変な現象は出ましたが、とりあえずはゲームできて、画像付きでつぶやけたから、良しとしましょう。あとは、誰がembeddedを立ててるか調べないとなぁ・・・というあたりで、今日はここまでで、ゲームに戻ってろ号任務をクリアしてきます。</div>
<div>
<br />
<br />
<a name='more'></a>追記:<br />
調査の結果、embeddedが立っているのは、<br />
<br />
qtwebkit/Tools/qmake/mkspecs/features/unix/default_pre.prf<br />
<br />
というファイルに、5.2から以下の設定が追加された事が原因。<br />
<br />
# If Qt is configured with embedded or QPA we set a convenience config<br />
# flag that can be used to test for either of these situations.<br />
contains(QT_CONFIG, qpa)|contains(QT_CONFIG, embedded): CONFIG += embedded<br />
<br />
Mac版をビルドした時には、どうやらQT_CONFIGにqpaが含まれている模様。<br />
このため、embeddedが立ってしまい、結果としてnetscape_plugin_apiがdisableになるということらしい。<br />
<br /></div>
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-72702974116458722182013-11-05T02:00:00.001+09:002013-11-05T02:06:49.523+09:00QQuickViewを子にもつQDialogをrootObjectのサイズで固定する方法はないものか・・・艦コレ絶賛はまり中の隠者です。<br />
<br />
先ほど、初めて撃沈を体験しました。改造直前だし、中破だけどイベントボス戦だから、いけるかなと思ったのですけど、がっかりです。最後にスクリーンショットとっておくべきでしたね・・・。<br />
<br />
さて、そんな艦コレ専用ブラウザの艦メモですが、先日の記事に載せたように、タイマーダイアログが英語版だとうまくダイアログ内に収まっていませんでした。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqhAZ5nu61a0ZYSz4R95H8ejICAp8l5vixC8hby6KsFjNmf4XMXXMS0_KhIcRvGcC-mm36tlMybeF65aynqTOoBEddxV34MKFSIe5heqgI-9J0OqefW7H-n8X3mxN2FZvdHO4ACCJT9v2S/s1600/KanMemoTimer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiqhAZ5nu61a0ZYSz4R95H8ejICAp8l5vixC8hby6KsFjNmf4XMXXMS0_KhIcRvGcC-mm36tlMybeF65aynqTOoBEddxV34MKFSIe5heqgI-9J0OqefW7H-n8X3mxN2FZvdHO4ACCJT9v2S/s320/KanMemoTimer.png" width="189" /></a></div>
<br />
このTimer Dialogですが、QDialogの中にQQuickViewを入れてあり、実際のダイアログはQMLで作成されています。Setで呼ばれる一覧等は、先日の日記の伊織さんのコメントから、ダウンロードされている事がわかりました。<br />
<br />
で、このQDialogですが、uiファイルでサイズが固定にされていました。<br />
しかし、後からQMLを変更したり、フォントなどの関係で、どうしてもQML部のサイズが事前に固定できない場合が出てきます。<br />
<br />
さらにtimerDialog.qmlのrootのRectangleはサイズ指定がありません。内部のColumnに表示されるItemの分だけ自動でサイズが決まるようです。<br />
<div>
<br /></div>
QQuickViewの内部のコンテンツサイズを取得するにはどうしたらよいのでしょうか。QQuickView::rootObjectで、rootのQQuickItemを取得し、QQuickItem::childrenRect()を取り出せば、子のRectが入手できます。あとは、そのsizeに適度なマージンを入れて、QDialogのsetMinimumSizeとsetMaximumSizeに設定してあげれば、QMLのサイズに合わせてダイアログのサイズを固定できそうです。<br />
<br />
void TimerDialog::showEvent(QShowEvent *event)<br />
<div class="p1">
{</div>
<div class="p1">
Q_UNUSED(event);</div>
<div class="p1">
if(m_viewer == NULL){</div>
<div class="p1">
m_viewer = new QtQuick2ApplicationViewer(windowHandle());</div>
<div class="p1">
connect(m_viewer->engine(), SIGNAL(quit()), this, SLOT(closeQml()));</div>
<div class="p2">
<br /></div>
<div class="p1">
//C++のデータをQML側へ公開</div>
<div class="p1">
m_viewer->rootContext()->setContextProperty("timerData", &m_timerdata);</div>
<div class="p2">
<br /></div>
<div class="p1">
//QML設定して表示</div>
<div class="p1">
m_viewer->setSource(QUrl("qrc:///qml/KanmusuMemory/timerDialog.qml"));</div>
<div class="p1">
m_viewer->show();</div>
<div class="p1">
<span style="color: red;"> QSize contentSize = m_viewer->rootObject()->childrenRect().toRect().size() + QSize(DIALOG_MARGIN,DIALOG_MARGIN);</span></div>
<div class="p1">
<span style="color: red;"> setMinimumSize(contentSize);</span></div>
<div class="p1">
<span style="color: red;"> setMaximumSize(contentSize);</span></div>
<div class="p1">
}</div>
<br />
<div class="p1">
}</div>
<br />
childrenRectは、RectFを返すので、toRect()でRect化した後、size()を取って、それにマージンを加えています。<br />
<br />
<a href="https://github.com/hermit4/KanmusuMemory/commit/8fa8674b379c0ea149cb29618eb841c0db958009">Github</a>には入れておきましたが、まだMacでしか確認していないので、修正をWindowsとLinuxで確認したらpull Requestしてみますか。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_nDGsBX2SUMxCn2dTjiLUNOlFAgjjVyQln4KDZrGPduJCZ5d-00uDr7qj60Mw4vBFIRDzgy7qtN3Jt_maodBAdAD_Ww7D7cKvxp5uNdzL4DrM0upRh-WjdO3Lo3EgpedTGycqy3hXMDfv/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-05+1.59.30.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_nDGsBX2SUMxCn2dTjiLUNOlFAgjjVyQln4KDZrGPduJCZ5d-00uDr7qj60Mw4vBFIRDzgy7qtN3Jt_maodBAdAD_Ww7D7cKvxp5uNdzL4DrM0upRh-WjdO3Lo3EgpedTGycqy3hXMDfv/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-11-05+1.59.30.png" width="179" /></a></div>
<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com1tag:blogger.com,1999:blog-4572229387701660661.post-78116361585717133172013-10-30T23:47:00.002+09:002013-10-31T00:54:26.537+09:00艦メモのメモ先週の金曜日に、うっかり着任してしまい、艦コレはまり中の隠者です。<br />
<br />
先日、開発者の @<a href="http://twitter.com/IoriAYANE" style="background-color: white; color: #274a78; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; line-height: 20px;">IoriAYANE</a> さんから、Qtユーザー会の方でも開発者募集のメールが出ていた<a href="https://github.com/ioriayane/KanmusuMemory">艦メモ</a>について、メモ書きを残しておこうと思います。<br />
<br />
まずは、伊織さんからのメッセージの転載。<br />
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> こんばんわ</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> アプリはさくっと作ってさくっと放流の、いおりです。</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> MLをもっとフランクに使っていこうぜって話題があったので。</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> 艦メモという、DMMのゲーム「艦隊これくしょん」<wbr></wbr>を遊ぶためのアプリを作ってます。</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> ソースをGithubで公開しているので、<wbr></wbr>もし艦これで遊んでてちょっといじってやるぜ!って</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> 提督さんはぜひビルドしてみてください。</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> そして、ぜひプルリクエストを送ってください!</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> (チート機能は禁止ですよー、マクロとか)</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> 艦これ</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> <a href="http://www.dmm.com/netgame/social/application/-/detail/=/app_id=854854/" style="color: #1155cc;" target="_blank">http://www.dmm.com/netgame/<wbr></wbr>social/application/-/detail/=/<wbr></wbr>app_id=854854/</a></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> 艦メモの紹介</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> <a href="http://relog.xii.jp/mt5r/2013/08/post-349.html" style="color: #1155cc;" target="_blank">http://relog.xii.jp/mt5r/2013/<wbr></wbr>08/post-349.html</a></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> ビルド方法</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> 艦メモのビルド方法(Windows編)</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> <a href="http://relog.xii.jp/mt5r/2013/08/windows-4.html" style="color: #1155cc;" target="_blank">http://relog.xii.jp/mt5r/2013/<wbr></wbr>08/windows-4.html</a></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> 艦メモのビルド方法(Ubuntu編)</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> <a href="http://relog.xii.jp/mt5r/2013/08/ubuntu.html" style="color: #1155cc;" target="_blank">http://relog.xii.jp/mt5r/2013/<wbr></wbr>08/ubuntu.html</a></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> 艦メモをビルドしてみた(MacOSX編)</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> <a href="http://nowsprinting.hatenablog.com/entry/2013/08/29/030419" style="color: #1155cc;" target="_blank">http://nowsprinting.<wbr></wbr>hatenablog.com/entry/2013/08/<wbr></wbr>29/030419</a></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> Github</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
> <a href="https://github.com/ioriayane/KanmusuMemory" style="color: #1155cc;" target="_blank">https://github.com/ioriayane/<wbr></wbr>KanmusuMemory</a></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 14px;">
<br /></div>
続きまして、ディレクトリツリー。一度ビルドした後で取ったので、余計なものも入っているかもしれませんが。<br />
<div style="font-family: Menlo; font-size: 11px;">
<br /></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;">KanmusuMemory</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - aboutdialog.cpp [いわゆるaboutダイアログ。貢献するとここにアカウント名が表示されるっぽい]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - aboutdialog.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - aboutdialog.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - cookiejar.cpp </span><span style="font-size: x-small;">[クッキー保存オブジェクト]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - cookiejar.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - favoritemenu.cpp </span><span style="font-size: x-small;">[お気に入り機能、webpageform用かな?]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - favoritemenu.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - gamescreen.cpp </span><span style="font-size: x-small;">[キャプチャ時のGame画面切り出し?]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - gamescreen.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - i18n/ </span><span style="font-size: x-small;">[<b>翻訳ファイル - 伊織さんは英語で作ってから翻訳を作るそうです。すばらしぃ</b>] </span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qt_ja.qm</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qt_ja_JP.qm</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qt_ja_JP.ts</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - imageeditdialog.cpp </span><span style="font-size: x-small;">[画像編集ダイアログ]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - imageeditdialog.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - imageeditdialog.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory.icns</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory.ico</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory.pro </span><span style="font-size: x-small;">[<b>Qtのプロジェクトファイル。QtCreator使いはコレをQtCreatorで開く</b>]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory.qrc </span><span style="font-size: x-small;">[<b>Qtのリソース設定ファイル</b>]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory.rc </span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - kanmusumemory_global.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - LICENSE </span><span style="font-size: x-small;">[Apach2ライセンスですね]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - main.cpp </span><span style="font-size: x-small;">[<b>main関数はここ</b>]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - mainwindow.cpp </span><span style="font-size: x-small;">[<b>main windowです</b>]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - mainwindow.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - mainwindow.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - memorydialog.cpp </span><span style="font-size: x-small;">[View Memoryダイアログ]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - memorydialog.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - memorydialog.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qml/</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory/</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - ClipTool.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - GradientEx.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - imageEditDialog.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - ImageEditView.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - images/ </span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - spinner.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - js/</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - HttpAccess.js</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - memoryDialog.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - test.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerDialog.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - TimerItem.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - TimerSetting.qml</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qtquick/</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - clipcursor.cpp</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - clipcursor.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - operatingsystem.cpp</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - operatingsystem.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qfileasync.cpp</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qfileasync.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qmlfile.cpp</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qmlfile.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qtquick.pri</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qtquick2applicationviewer.cpp</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - qtquick2applicationviewer.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - thumbnailprovider.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerdata.cpp</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerdata.h</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - README.md </span><span style="font-size: x-small;">[<b>githubでの説明用</b>]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - Readme.txt </span><span style="font-size: x-small;">[艦メモについての説明書き]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - resources/ </span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - alarm.mp3</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - downloaddata/</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - favoritedata.json</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerselectguide.json</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerselectguide_en.json</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - fav_icon_off.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - fav_icon_on.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - go_back.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - go_forward.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - icon.svg</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory128.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory16.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory256.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory32.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory48.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory512.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory64.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory80.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory96.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - mobile_icon.svg</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - mobile_icon_off.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - mobile_icon_on.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - reload.png</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - scripts/ [</span><span style="font-size: x-small;">主にビルド後の配布パッケージ作成用スクリプト</span><span style="font-size: xx-small;">]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - deb/ </span><span style="font-size: x-small;">[Ubuntu用debパッケージ作成用]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - deploymac-dmg.sh </span><span style="font-size: x-small;">[dmgパッケージ作成用]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - deploymac.sh </span><span style="font-size: x-small;">[Macデプロイ用スクリプト]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - deploymaclibs.txt </span><span style="font-size: x-small;">[Macで利用するライブラリリスト]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - deployubuntu.sh </span><span style="font-size: x-small;">[Ubuntuデプロイ用スクリプト] </span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - KanmusuMemory.sh </span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - macdeployhelper510.sh </span><span style="font-size: x-small;">[deploymac.shから呼び出される]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - Readme.txt </span><span style="font-size: x-small;">[Macデプロイスクリプトについて]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - translate.bat </span><span style="font-size: x-small;">[lupdate呼び出し簡略化用?]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - settingsdialog.cpp </span><span style="font-size: x-small;">[設定ダイアログ]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - settingsdialog.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - settingsdialog.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - tabwidget.cpp </span><span style="font-size: x-small;">[WebPageFormにタブを表示する用]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - tabwidget.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerdialog.cpp </span><span style="font-size: x-small;">[Timerダイアログ]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerdialog.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - timerdialog.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - tweetdialog.cpp </span><span style="font-size: x-small;">[ツイート用ダイアログ]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - tweetdialog.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - tweetdialog.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - twitterinfo_sample.h </span><span style="font-size: x-small;">[ツイッター用のヘッダサンプル。ビルド手順に従い、コピーと設定が必要]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - webpageform.cpp </span><span style="font-size: x-small;">[Web表示ウィジェット - 配布版はまだ入っていない、ブラウザ</span><span style="font-size: x-small;">分割</span><span style="font-size: x-small;">ウィンド]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - webpageform.h </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - webpageform.ui </span><span style="font-size: x-small;">[同上]</span></div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - webview.cpp </span><span style="font-size: x-small;">[QWebView拡張。WebPageFormとメインウィンドウで利用]</span></div>
<div style="font-family: Menlo;">
</div>
<div style="font-family: Menlo;">
<span style="font-size: xx-small;"> - webview.h </span><span style="font-size: x-small;">[同上]</span></div>
<div>
<br /></div>
<div>
ほかのOSでも調べてからIssue登録予定だけど、Mac OS X(10.9)で、ビルドした環境での起動(英語表示)だと、以下の表示がウィンドウ内におさまってないらしい。</div>
<div>
<br /></div>
<div>
Timer Dialog</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRkq_BA_12izmT8jNsVUeOammZ4Y-ZvCpcC2wCGBwp8ndOj3sf4csDFv4XYj0A1YGinSxnL384i_YW9Qdr0X_MurJLp6EZjMuMz76l-Re8Zpb6pqf5OBmDcQZX9tmOn5LwJDjlVXF9fqO9/s1600/KanMemoTimer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRkq_BA_12izmT8jNsVUeOammZ4Y-ZvCpcC2wCGBwp8ndOj3sf4csDFv4XYj0A1YGinSxnL384i_YW9Qdr0X_MurJLp6EZjMuMz76l-Re8Zpb6pqf5OBmDcQZX9tmOn5LwJDjlVXF9fqO9/s320/KanMemoTimer.png" width="189" /></a></div>
<div>
<br /></div>
<div>
思い出のダイアログも以前は収まってなかったけど、update/merge後に試したら修正済みだったようです。最初にビルドした時は、キャンセルボタンも見えてなかったので、強制終了させてしまったのですけどね。同じ状態が再現した人はウィンドウを拡大すればキャンセルボタンがあるので、それでキャンセルできます。</div>
<div>
<br /></div>
<div>
ところで、Timerダイアログの参考時間は使いやすいのだけど、英語版でもそこだけは日本語なんですよねぇ。さすがにすべて英語訳するのは大変そうですけど。</div>
<div>
<br /></div>
<div>
大雑把にですがコードは読んだので、何か機能思いついたらごそごそ入れていってみたいなと思います。<br />
<br />
P.S.<br />
どうやら、翻訳ファイルには艦名が入っている模様。Timer用の翻訳データに見えるけど・・・・。もう少し調査が必要そう。</div>
<div>
<br /></div>
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com2tag:blogger.com,1999:blog-4572229387701660661.post-51189559818582699022013-10-21T13:36:00.004+09:002013-10-21T13:36:52.646+09:00OSC2013 Tokyo/FallにQtユーザー会として参加してきました先週は、準備に追われていた隠者です。本日はちょっとお疲れモードです。<br />
<br />
10/19(土)と10/20(日)の二日間に渡り、明星大学にてOpen Source Conference 2013 Tokyo/Fallが開催されました。隠者の参加するQtユーザー会もこちらに出典してきました。<br />
<br />
展示内容は、実は12日に各自で作りましょうというおおざっぱな流れとなり、1週間で用意したものだったのですが、みんながんばったために、机に置ききれないという事態に。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjptO-W1do7E6y-Kon4SMonSaTAHT_sEcMZrD5p5oqcVRe-WbP__ZNzaKEJrns8AKOUmSM2Zh2cxibQZkQfWvB4v4J7Jc6Z48tYRyEjAQvV9frZCSnBYZOCzqQlJtPBGpMd3_UCPTlHlMPj/s1600/BW581bPCIAAzu4G.jpg-large.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjptO-W1do7E6y-Kon4SMonSaTAHT_sEcMZrD5p5oqcVRe-WbP__ZNzaKEJrns8AKOUmSM2Zh2cxibQZkQfWvB4v4J7Jc6Z48tYRyEjAQvV9frZCSnBYZOCzqQlJtPBGpMd3_UCPTlHlMPj/s400/BW581bPCIAAzu4G.jpg-large.jpeg" width="400" /></a></div>
<br />
iPad mini(iOS), iPod touch(iOS), Nexus7 (Android 4.3), Galaxy Nexus(JCROM 4.3), Galaxy Nexus(Ubuntu Phone?), Nexus7(Plasma Active), Armadillo 480(Linux) , Raspberry pi(Linux), あと機種をメモし忘れましたが、Android端末のほか、展示担当者が用意したPC等でQt/QMLを動かして展示していました。<br />
<br />
20日の方は、QML本の折戸さんも名古屋から駆けつけてくださり、大切な自分のアカウントでログインして艦メモのデモを見せてくださいました。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN5JiuFS_yVVkzuMw9OgfWKgcwAWBZm4XcXbO_-uK7ZsS54DZ_ucc8rKZ7YatQsAYCQpbX_w8pwRpvmz4tGYxHARqu483Dlzc6W9BOTnV-0oH3utq3MaMsgxP7czLdztdUjci9b8AJRN5-/s1600/BW_JTERCIAApcmx.jpg-large.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN5JiuFS_yVVkzuMw9OgfWKgcwAWBZm4XcXbO_-uK7ZsS54DZ_ucc8rKZ7YatQsAYCQpbX_w8pwRpvmz4tGYxHARqu483Dlzc6W9BOTnV-0oH3utq3MaMsgxP7czLdztdUjci9b8AJRN5-/s320/BW_JTERCIAApcmx.jpg-large.jpeg" width="320" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<span style="text-align: -webkit-auto;">「ぜ、絶対に出撃とか、資源使い尽くしたりとかやめてください」といいながら、はらはしつつずっと近くにいらっしゃいましたが・・・。</span></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
こちらの<a href="http://relog.xii.jp/mt5r/2013/08/post-349.html">艦メモ</a>は、Qtに含まれるブラウザの機能で艦コレをプレイしながら、画面のキャプチャー画像をつけてTwitterにつぶやく機能付きの艦メモ専用ブラウザだそうです。実装は、Qt5のQtWidgetsとQMLのハイブリットだそうです。ソースコードもGithubで公開されています。</div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
</div>
<div style="text-align: center;">
<iframe frameborder="0" marginheight="0" marginwidth="0" scrolling="no" src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&bc1=000000&IS2=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=hermit4-22&o=9&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=4048915126" style="height: 240px; width: 120px;"></iframe></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: -webkit-auto;">
上記は隠者のAmazon アソシエイトのリンクですので、回避したい方は、Amazonで直接探してみてください。 「Qt Quickではじめるクロスプラットフォーム UIプログラミング」です。なお、達人出版会の方で、<a href="http://tatsu-zine.com/books/qt-quick">電子書籍版</a>も販売されています。お値段的には、電子書籍の方が安いので、おすすめです。</div>
<div style="text-align: -webkit-auto;">
<br /></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4MAPtDHWxI2OMaBCCAymgsEqcA1ro7Uizrb7MTBK12M54TKIxcjlZFaw4PGi4NghiSjNj4G0IGhxon3uztDG0ubtmkVRcH_VPTU5Z2ouZhUibjzLgWvDHr0isw2uG4G4poAhD_GcRxnn/s1600/BW_g4ekCcAA84FM.jpg-large.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgp4MAPtDHWxI2OMaBCCAymgsEqcA1ro7Uizrb7MTBK12M54TKIxcjlZFaw4PGi4NghiSjNj4G0IGhxon3uztDG0ubtmkVRcH_VPTU5Z2ouZhUibjzLgWvDHr0isw2uG4G4poAhD_GcRxnn/s320/BW_g4ekCcAA84FM.jpg-large.jpeg" width="240" /></a></div>
<br />
一応、書籍もずらずら並べてみたりして、アピールしてみました。わずかでもQtに興味を持ってくださった方が居たらいいなぁ。<br />
<br />
ちなみに、隠者は、勢いで展示用に購入したMacBookAir (2013)で、VMWare Fusionを使ってMac, Linux, Windowsでのデモ動作を展示してました。PCの方の展示は持ち回りで午前中だけだったりしたので、見れなかった人も多いかもしれませんが・・・。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMYSuu0EJNbcQi5i5SUrGHn7stiLiQtc60JE2ENRHDc1h2Qf8YQtJbf9cOKPj-OjTiVyhsaH6aLhI5QFAQYYETyLqGjnlsAhlrhEtYnSUbbkyNBySNKT56z0PiInrKcgaOCcGzflmweIl/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-21+12.34.14.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgFMYSuu0EJNbcQi5i5SUrGHn7stiLiQtc60JE2ENRHDc1h2Qf8YQtJbf9cOKPj-OjTiVyhsaH6aLhI5QFAQYYETyLqGjnlsAhlrhEtYnSUbbkyNBySNKT56z0PiInrKcgaOCcGzflmweIl/s320/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-21+12.34.14.png" width="320" /></a></div>
<br />
<br />
蛇足ですが、20日は、Android ABC 2013a も重なっていて、そちらにも顔を出したかったのですが、片付けの都合もあって、残念ながら裏会のみの参加になってしまいました。裏会を見る限りかなりにぎわっていたので、盛り上がったのかな。<br />
<br />
ABCに参加していなかったことと、最近はあまりAndroid側の活動をしていないので、はじっこの方で小さくなっておきました。とりあえず、知らない人も多かったので、フリーで撮って良しなかっしーだけ貼っておきます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD5EwJHNBLxbl3rC3hAI_Yu9u7MMkid9tYN5wy5RmqHUW6Uu9Gs0naNYZpUgvFF7SkzbER4uo-02WHjBMsmj-MxQhGPBdzeVkRf6X-vedpKz8Icoh3pWJuViXaeSdQjBQUni7UKCsEZ8vA/s1600/BXBGgsACUAA5qSj.jpg-large.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD5EwJHNBLxbl3rC3hAI_Yu9u7MMkid9tYN5wy5RmqHUW6Uu9Gs0naNYZpUgvFF7SkzbER4uo-02WHjBMsmj-MxQhGPBdzeVkRf6X-vedpKz8Icoh3pWJuViXaeSdQjBQUni7UKCsEZ8vA/s320/BXBGgsACUAA5qSj.jpg-large.jpeg" width="240" /></a></div>
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-59245845761781049802013-10-16T23:53:00.001+09:002013-10-16T23:53:46.856+09:00Qt5.2-alpha1 for iOS先週土曜日にQtユーザー会の勉強会 #4 @東京に参加してきた隠者です。<br />
<div>
<br /></div>
<div>
既に残すところ1週間なのですが、来週の19日、20日に行われるOSC2013 Tokyo/Fall への出し物について 話し合いがもたれました。実は、参加自体は決定していたものの、のんびりまったりがモットー(?)の集まりですので、参加以外はほとんど決定してませんでした。</div>
<div>
<br /></div>
<div>
そんなわけで、分担を決めた結果、OSXやiPhoneユーザーの隠者は、iOS版について調査することになりました。というわけで、ちまちまやってみました。</div>
<div>
<br /></div>
<div>
まず、iOS版を使うには、iOS開発環境が必須となります。</div>
<div>
<br /></div>
<h3>
用意するもの</h3>
<div>
<ul>
<li>XCodeの動作するMac OS X</li>
<li>XCodeのインストール</li>
<li>XCodeへのCommand Line Toolsのインストール</li>
<li>(ハードウェアで動かすには) Apple Developer Programへの登録(有償)</li>
</ul>
<div>
XCodeは、App Storeから無償で入手できます。</div>
<div>
Command Line Toolsは、XCodeのメニューからPreference→Downloadsと選択していくと、一覧にあるので、そこからインストールしておいて下さい。</div>
</div>
<div>
<br /></div>
<div>
<br /></div>
<h3>
Build手順</h3>
<div>
現状ではシミュレータ版とハードウェア版でビルド手順が異なります。つまり2種類用意しておかなくてはならないようです。</div>
<div>
<br /></div>
<h4>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;">Simulator版</span></h4>
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;"><b>1. Full Sourceコードの入手(5.2.0 Alpha1)</b></span></div>
$ cd ~/<br />
$ git clone git://gitorious.org/qt/qt5.git qt5-ios-sim<br />
$ cd qt5-ios-sim<br />
<div style="text-align: left;">
$ git checkout refs/tags/v5.2.0-alpha1<br />
$ perl init-repository</div>
<br />
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;"><b>2. qtbaseのビルド(ビルドは一部のみ)</b></span></div>
$ cd ~/qt5-ios-sim/qtbase<br />
$ ./configure -xplatform macx-ios-clang -developer-build -opensource -confirm-license -nomake examples -nomake tests -release -sdk iphonesimulator<br />
$ make -j 4<br />
<br />
<div>
<b>3. (オプション) QtQuick 1.0用のビルド</b></div>
$ cd ~/qt5-ios-sim/qtscript<br />
$ ~/qt5-ios-sim/qtbase/bin/qmake<br />
$ make -j 4<br />
$ cd ~/qt5-ios-sim/qtquick1<br />
$ ~/qt5-ios-sim/qtbase/bin/qmake<br />
$ make -j 4<br />
<br />
<div>
<b>4. simple demoを使って動作検証</b></div>
$ cd ~/<br />
$ git clone git://github.com/msorvig/qt-ios-demo.git qt-ios-demo-sim<br />
$ cd qt-ios-demo-sim<br />
$ ~/qt5-ios-sim/qtbase/bin/qmake<br />
$ open qt-ios-demo.xcodeproj<br />
<br />
IOS版のアプリは、プロジェクトファイルをXCodeで起動してビルド・実行になります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicsM4gDruBTriVfNjkQBJ6YOyNqmaj8KWeJVU7jZN-ulQZ-DxACCxLieZeE7SQOgcN-moAqOZk0XbjJRgXWkK-rQsY-252KzcS0eZ_vJ9Ch7slW-Q7mpRi3xiTmd5VBnYLomMfJTqUol3J/s1600/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-16+23.01.08.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="217" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEicsM4gDruBTriVfNjkQBJ6YOyNqmaj8KWeJVU7jZN-ulQZ-DxACCxLieZeE7SQOgcN-moAqOZk0XbjJRgXWkK-rQsY-252KzcS0eZ_vJ9Ch7slW-Q7mpRi3xiTmd5VBnYLomMfJTqUol3J/s400/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88+2013-10-16+23.01.08.png" width="400" /></a></div>
<br />
<br />
ちなみに、<span style="font-size: 16px;">qtbase/examples/widgets/graphicsview/chip も4と同じようにqmakeしてXCodeで開くと、実行できました。</span><br />
<span style="font-size: 16px;"><br /></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifuNCqrAruRElyIud6GuDvxL-QUh9CNTPY9E9Pc-1l4U5veEqOZqBsPWYvK3_lHsCJr8yKrrV4NF5rPqjdhRaGwDtPHJ0jeyvVMDHbNyPJi1Sjw2nQFjOSOXPAmjOwqiOCxHxRPGYcnsOi/s1600/iOSEmu.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="250" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifuNCqrAruRElyIud6GuDvxL-QUh9CNTPY9E9Pc-1l4U5veEqOZqBsPWYvK3_lHsCJr8yKrrV4NF5rPqjdhRaGwDtPHJ0jeyvVMDHbNyPJi1Sjw2nQFjOSOXPAmjOwqiOCxHxRPGYcnsOi/s400/iOSEmu.png" width="400" /></a></div>
<span style="font-size: 16px;"><br /></span>
<br />
<h4>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;">実機版</span></h4>
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;">わざわざ分けましたけど、ほとんど変わりありません。自分で再現作業するときに楽なので分けただけです。変更点は色を変えています。</span><br />
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;"><br /></span></div>
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;">ただ、実機版で試すためには、Apple Developer Programを購入して、Appleの認証を受ける必要があります。証明書の取得、App IDの入手、実機の登録なども当然必要で、この辺りの手順は、各種書籍やWebサイトにHow To がありますので、そちらを参照して、まずは簡単なアプリの実機動作を確認しておいてください。</span></div>
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;"><br /></span></div>
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;"><b>残念ながら、Qtはそこら辺りを省略したり、楽にしたりするものではありません。</b></span></div>
<div>
<br /></div>
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;"><b>1. Full Sourceコードの入手(5.2.0 Alpha1)</b></span></div>
$ cd ~/<br />
$ git clone git://gitorious.org/qt/qt5.git <span style="color: blue;">qt5-ios</span><br />
$ cd <span style="color: blue;">qt5-ios</span><br />
<div style="text-align: left;">
$ git checkout refs/tags/v5.2.0-alpha1<br />
$ perl init-repository</div>
<br />
<div>
<span style="background-color: white; font-family: arial, helvetica, osaka, 'MS PGothic', sans-serif; font-size: 15px; line-height: 27px;"><b>2. qtbaseのビルド(ビルドは一部のみ)</b></span></div>
$ cd ~/qt5-ios/qtbase<br />
$ <span style="color: blue;">./configure -xplatform macx-ios-clang -developer-build -opensource -confirm-license -nomake examples -nomake tests -release</span><br />
$ make -j 4<br />
<br />
<div>
<b>3. (オプション) QtQuick 1.0用のビルド</b></div>
$ cd ~/<span style="color: blue;">qt5-ios</span>/qtscript<br />
$ ~/<span style="color: blue;">qt5-ios</span>/qtbase/bin/qmake<br />
$ make -j 4<br />
$ cd ~/<span style="color: blue;">qt5-ios/</span>qtquick1<br />
$ ~/<span style="color: blue;">qt5-ios</span>/qtbase/bin/qmake<br />
$ make -j 4<br />
<br />
<div>
<b>4. simple demoを使って動作検証</b></div>
$ cd ~/<br />
$ git clone git://github.com/msorvig/qt-ios-demo.git<br />
$ cd <span style="color: blue;">qt-ios-demo</span><br />
$ ~/<span style="color: blue;">qt5-ios</span>/qtbase/bin/qmake<br />
$ open qt-ios-demo.xcodeproj<br />
<br />
これで、XCodeが起動しますので、実機で起動することになります。<br />
iPad miniで動かすと以下のような感じになります。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipLRqu-wXlm5o8PZ7McmPXWS7DtJyAFvPr_5zyTWUl0X4HazeEFI2rJ1ZyvhJFjLtpK8y8bpA4joHyEvQLej2e5-e8F3ou_fQSYXuvBwMSBBaoZ4Sc7o6IZiTfraXombf-6oGSIUODQhom/s1600/IMG_1075.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipLRqu-wXlm5o8PZ7McmPXWS7DtJyAFvPr_5zyTWUl0X4HazeEFI2rJ1ZyvhJFjLtpK8y8bpA4joHyEvQLej2e5-e8F3ou_fQSYXuvBwMSBBaoZ4Sc7o6IZiTfraXombf-6oGSIUODQhom/s320/IMG_1075.jpg" width="320" /></a></div>
<br />
ついでなので、実機でも4000 chipデモ<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg86CppWqp4D3wHxv3yu9LjWWkQ7F_twJTNHC2znyKaTDE38jlRLMgyacbW9PriGsnJ73ZtJonNo0XnxnHZDp4ptZIa2smdh0gfWopGMR27JMxF5embf_TGq8TXREuNQ3SOUdsbLnaxtMbh/s1600/IMG_1076.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg86CppWqp4D3wHxv3yu9LjWWkQ7F_twJTNHC2znyKaTDE38jlRLMgyacbW9PriGsnJ73ZtJonNo0XnxnHZDp4ptZIa2smdh0gfWopGMR27JMxF5embf_TGq8TXREuNQ3SOUdsbLnaxtMbh/s320/IMG_1076.jpg" width="320" /></a></div>
<br />
これらは、今週末のOSC2013 Tokyoにて展示しておきますので、興味があればお立ち寄り下さいませ。<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-61054474335332140232013-10-08T04:38:00.000+09:002013-10-08T04:40:56.835+09:00QPlanetのコード公開そして後悔ご無沙汰しておりました隠者です。<br />
<div>
<br /></div>
<div>
本当は勉強会参加直後にブログを書く予定だったのですが、ここ最近いろいろと立て続けにあった関係で、ずるずると先延ばしという相変わらずの恥ずかしい状況でしたが、寝付けないのを良いことに朝4時にこそこそ書いていたりします。</div>
<div>
<br />
<div>
さて、名古屋の勉強会ネタにと調べ、そしてQtユーザー会@東京の1,2,3の時間を使ってこそこそやっておりました、QtでPlanetを作ってみよう計画は、一応いろいろと問題を残しながらある程度のところまできました。</div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqF_jDADrYnX6_ooA6KPRqCrZAzZsOMW5AZ4gSJL1IdJN0W8gHpEGfl9Sy9nupInWHxGwcG6WM0fLcdLb4SSJTrCL1rYMvxH9jaQKxwUwg1O55FiX7J8tumUSk-AIWMDpnQvxPOCxyrXF/s1600/qplanet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="203" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgMqF_jDADrYnX6_ooA6KPRqCrZAzZsOMW5AZ4gSJL1IdJN0W8gHpEGfl9Sy9nupInWHxGwcG6WM0fLcdLb4SSJTrCL1rYMvxH9jaQKxwUwg1O55FiX7J8tumUSk-AIWMDpnQvxPOCxyrXF/s320/qplanet.png" width="320" /></a></div>
<div>
<br /></div>
<div>
本家の画像とスタイルを真似させていただいて、それらしい格好のページを作れるようにはなりました。</div>
<div>
<br /></div>
<div>
ソースコードも、中途半端で使い方とかビルド方法とかのドキュメントが全く用意できていないかなり恥ずかしい感じのコードなのですが、とりあえず<a href="https://github.com/hermit4/qplanet">github</a>に登録しておきました。</div>
<div>
<br /></div>
<div>
そもそもが、Qtを使ってとは名ばかりで、ほとんどXQueryで書いています。</div>
<div>
Qtには、QXmlPatternsというモジュールがあり、XQueryが使えるようになっているのですが、どうもいまいち何に使うのか謎が多く、今まで遠くから眺めていました。</div>
<div>
<br /></div>
<div>
でまぁ、ネタ的に利用してみたのですが、コレが使いにくい、使いにくい。</div>
<div>
XQueryのコードは何とも気持ち悪い感じ(<span style="font-size: x-small;">*個人的な感想です</span>)になってしまいますし、おまけに、QXmlPatternsのよく落ちる事・・・。ちょっと変な事をすると、すぐにSIGSEGV。</div>
<div>
<br /></div>
<div>
bindVariable系は鬼門な感じで、思うように動作せず、結局いびつな感じの処理の仕方になっています。</div>
<div>
<br /></div>
<div>
RSSから必要なデータを抜き出してHTML化するわけなのですが、まぁ、XMLを扱う言語ですので、変換途中に、一部を除いてC<span style="background-color: white; font-family: sans-serif; font-size: 15px; line-height: 22.640625px;">haracter Reference</span>が扱えません。&copy;とか出てくるとエラーになります。おまけに、RSSにはHTMLのタグが参照文字に置換されて配信されていたりするわけですが、この置換をQXmlPatternsの内部で処理できず、Qtのコード側にひっぱってきて変換をかけるという情けない感じになってしまいました。</div>
<div>
<br /></div>
<div>
<div>
Qt4.8とQt5.1で試しましたが、どちらも似たような感じで、この落ち方からすると、たぶん利用者は少ないのだろうなぁと感じています。</div>
<div>
<br /></div>
</div>
<div>
元Nokiaの某たすくさんには、この無駄な努力をかわいそうな人を見る目で見られるし、泣きながら作業する感じでしたね。</div>
<div>
<br /></div>
<div>
<div>
まぁ、隠者は不勉強で、XQuery自体を使うのが初めてだったせいもあるでしょう。がんがん使っている人がきちんと考えて書けば、もっときれいで、もっと効率的で、もっとすっきりと、QXmlPatternsでさっくり動くQuery文が書けるものだと信じたいところですが・・・・まぁ、はやらないのにはそれなりの理由があるんですかね。</div>
<div>
<br /></div>
</div>
<div>
無理にQXmlPatternsですべてやるという方針は捨てて、QXmlPatternsで必要な情報を拾い出す事だけに専念して、メインの変換処理は、すべてQtで実装さえすれば、たぶん1日かからずに終わったでしょうねぇ・・・とほほ。<br />
<br /></div>
<div>
公開しておいてなんですが、実はRSSに相対アドレスが埋め込まれていたりするものがあるので、この変換のためには、HTMLに変換した後で、src属性を修正しなくてはならないのですが、前述の通り、文字参照の扱いがQXmlPatterns内部では処理できず、かなりいただけない状況です。<br />
<br />
時間ができたら、やっぱりXQueryをあきらめるという方針で作業してみようかなと思っています。</div>
<div>
<br />
いや、XQueryでできるだろ!って人は是非直して見てください。<br />
<br />
P.S.<br />
いや、QXmlPatternsを直せよ!って心の声は聞かなかった事に・・・。</div>
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-34917179799584895512013-07-25T00:35:00.000+09:002013-07-25T01:07:24.664+09:00Qt勉強会#1 @Tokyoに参加してきました 途中まで書きかけ日記を数日放置していた隠者です。<br />
日曜日にはほとんどできていたのですが、装飾とか色づけとか、小さな手直しとか余計な事をちまちまやっていたら、水曜日になってました。内容は、20日(土)に参加してきた勉強会のお話です。<br />
<br />
関東Qt勉強会を改めQtユーザー会による「<a href="http://workshop.qt-users.jp/?p=73">Qt勉強会 #1</a>」に参加してきました。今回は発表はなしの「もくもく会」です。<br />
<br />
ちなみに、知らない人のために、もくもく会とは、一つ所にあつまりながら、各自黙々とお勉強をするお勉強会でして。ただ一人だけでやってるわけではなく、困った事があったら、プロジェクターを借りて、こんな事になっちゃったのだけど、誰かなにかしりませんか?と聞く事も出来る会です。<br />
<br />
隠者のように独り身で、部屋で勉強し放題という人間ばかりではないので、こういう機会が貴重な方もいらっしゃいますし、普段人前で発表なんて無理って人でも、ちょっとこんな事でっていう話をするだけなら、敷居も低いということで、こういう勉強会も面白いものです。<br />
<br />
ちなみに、隠者の内職は、名古屋で話してきたQPlanet(仮)の続きです。<br />
Planetというのは、この隠者のブログを、Qtユーザー会のPlanetというページで転載しているPython製のFeed agregatorというアプリケーションです。qt-users.jpでは、これをcronで動作させているそうです。<br />
<br />
RSSやAtom等をかき集めて静的なページを作成してくれるツールなのですが、Slide Shareの埋め込み iframe が反映されなかったり、タスクさんのSilk製のBlogも登録されていないようで、もう少し簡単に登録管理や、反映できるようにQtで作れないものかなぁと思ってしまいまして。よし、QPlanetを作ろうとか思ってみています。<br />
<br />
QtのXML Patternsモジュールを使えば、XMLを簡単に取得・加工できる事は、名古屋行きの時に調べてありましたが、RSS 1.0, RSS 2.0, Atom 1.0等の3種類を分別して、変換していくという辺りの途中で止まっていたので、続きをやってきました。<br />
詳細は全部完成したら、Qt勉強会でまた発表したいなと思っていますが、ざっくりと。<br />
<br />
<h3>
XQueryによるFeedリストの取得とSimpleなXMLへの変換</h3>
<div>
<br /></div>
xmlpatternsに含まれるQXmlQueryクラスは、XQueryの実行ができます。<br />
そこで、与えられたFeedのURLリストを巡回して、RSSやAtomを取得していき、静的Webページに載せる必要最小限の共通XMLへと変換します。<br />
<br />
ベースとなる記事は、IBMにぴったりの物があります。<br />
「<a href="http://www.ibm.com/developerworks/jp/xml/library/x-xqueryrss/">RSS と Atom の情報を XQuery を使って集約する</a>」<br />
ただし、バージョンの違いか、実行エンジンの違いか、IBMの記事そのままでは動作しませんでした。そこで、自分なりに試行錯誤して、Qtで使えるコードに修正しました。<br />
ただし、隠者は、XQueryはこれが初めてで、正直いってどこまで正しいか不安があります。<br />
ツッコミはコメントのこしていただくか(ただしいつコメントに気がつくか不明)、@hermit4 でつぶやいて下されば直す努力はします。<br />
<br />
なお、出来上がるXMLのauthor情報は、著者の情報が無いFeedもありまして、その辺りについてまだ調査中のため、ダミーが入ってたりします。ごめんなさい。<br />
<br />
<div style="border: solid;">
<span style="font-size: xx-small;">declare namespace atom="http://www.w3.org/2005/Atom";</span><br />
<span style="font-size: xx-small;">declare namespace rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";</span><br />
<span style="font-size: xx-small;">declare namespace rss="http://purl.org/rss/1.0/";</span><br />
<span style="font-size: xx-small;">declare namespace dc="http://purl.org/dc/elements/1.1/";</span><br />
<span style="font-size: xx-small;">declare namespace content="http://purl.org/rss/1.0/modules/content/";</span><br />
<span style="font-size: xx-small;">declare variable $months := ('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">declare function local:convDate($origdate as xs:string) </span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> let $dateTokens := tokenize($origdate,' ')</span><br />
<span style="font-size: xx-small;"> let $month := string(index-of($months,lower-case($dateTokens[3])))</span><br />
<span style="font-size: xx-small;"> let $date := concat($dateTokens[4],'-',</span><br />
<span style="font-size: xx-small;"> if (string-length($month)=1) then concat('0',$month) else $month,</span><br />
<span style="font-size: xx-small;"> '-',$dateTokens[2])</span><br />
<span style="font-size: xx-small;"> let $time := string($dateTokens[5])</span><br />
<span style="font-size: xx-small;"> return string(concat($date,'T',$time,'Z'))</span><br />
<span style="font-size: xx-small;">};</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">declare function local:formatDate($orgdate as xs:string) as xs:dateTime</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> if (matches($orgdate, "^[0-9]{4}-[0-9]{2}-[0-9]{2}T.*")) then </span><br />
<span style="font-size: xx-small;"> xs:dateTime($orgdate)</span><br />
<span style="font-size: xx-small;"> else </span><br />
<span style="font-size: xx-small;"> xs:dateTime(local:convDate($orgdate))</span><br />
<span style="font-size: xx-small;">};</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">declare function local:simple-feed($title,$pubdate,$content,$link,$name)</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> let $convdate := local:formatDate($pubdate)</span><br />
<span style="font-size: xx-small;"> return </span><br />
<span style="font-size: xx-small;"> <item></span><br />
<span style="font-size: xx-small;"> <title>{$title}</title></span><br />
<span style="font-size: xx-small;"> <pubdate>{$convdate}</pubdate></span><br />
<span style="font-size: xx-small;"> <link>{$link}</link></span><br />
<span style="font-size: xx-small;"> <content>{$content}</content></span><br />
<span style="font-size: xx-small;"> <author></span><br />
<span style="font-size: xx-small;"> <name>{$name}</name></span><br />
<span style="font-size: xx-small;"> </author></span><br />
<span style="font-size: xx-small;"> </item></span><br />
<span style="font-size: xx-small;">};</span><br />
<div style="font-size: x-small;">
<br /></div>
<span style="font-size: xx-small;">declare function local:convert-atom($feeddoc)</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> for $i in $feeddoc/atom:feed/atom:entry</span><br />
<span style="font-size: xx-small;"> return local:simple-feed ($i/atom:title/text(),</span><br />
<span style="font-size: xx-small;"> $i/atom:published/text(),</span><br />
<span style="font-size: xx-small;"> $i/atom:content/text(),</span><br />
<span style="font-size: xx-small;"> $i/atom:link[@rel="" or @rel="alternate"][href],</span><br />
<span style="font-size: xx-small;"> $i/atom:author/atom:name/text())</span><br />
<span style="font-size: xx-small;">};</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">declare function local:convert-rss10($feeddoc)</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> for $i in $feeddoc/rdf:RDF/rss:item</span><br />
<span style="font-size: xx-small;"> return local:simple-feed($i/rss:title/text(),</span><br />
<span style="font-size: xx-small;"> $i/dc:date/text(),</span><br />
<span style="font-size: xx-small;"> $i/content:encoded/text(),</span><br />
<span style="font-size: xx-small;"> $i/rss:link/text(), "aaa")</span><br />
<span style="font-size: xx-small;">};</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">declare function local:convert-rss20($feeddoc)</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> for $i in $feeddoc/rss/channel/item</span><br />
<span style="font-size: xx-small;"> return local:simple-feed($i/title/text(),</span><br />
<span style="font-size: xx-small;"> $i/pubDate/text(),</span><br />
<span style="font-size: xx-small;"> if (count($i/content:encoded) > 0 ) </span><br />
<span style="font-size: xx-small;"> then $i/content:encoded/text() </span><br />
<span style="font-size: xx-small;"> else $i/description/text() ,</span><br />
<span style="font-size: xx-small;"> $i/link/text(), "bbb")</span><br />
<span style="font-size: xx-small;">};</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">declare function local:convert-feed($url)</span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> let $feeddoc := doc($url)</span><br />
<span style="font-size: xx-small;"> return if (count($feeddoc/atom:feed/atom:entry) > 0) then </span><br />
<span style="font-size: xx-small;"> local:convert-atom($feeddoc)</span><br />
<span style="font-size: xx-small;"> else if (count($feeddoc/rdf:RDF/rss:item) > 0) then </span><br />
<span style="font-size: xx-small;"> local:convert-rss10($feeddoc)</span><br />
<span style="font-size: xx-small;"> else </span><br />
<span style="font-size: xx-small;"> local:convert-rss20($feeddoc)</span><br />
<span style="font-size: xx-small;">};</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">let $merged := for $url in tokenize($feedlist,',')</span><br />
<span style="font-size: xx-small;"> return if (doc-available($url)) then local:convert-feed($url)</span><br />
<span style="font-size: xx-small;"> else ()</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">let $merged := for $item in $merged</span><br />
<span style="font-size: xx-small;"> order by $item/pubdate descending</span><br />
<span style="font-size: xx-small;"> return $item</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">return</span><br />
<span style="font-size: xx-small;"><planet> </span><br />
<span style="font-size: xx-small;">{</span><br />
<span style="font-size: xx-small;"> for $item in $merged[days-from-duration(current-dateTime() - xs:dateTime(./pubdate)) <= $recentdays or position() <= $minitems]</span><br />
<span style="font-size: xx-small;"> return $item</span><br />
<span style="font-size: xx-small;">}</span><br />
<span style="font-size: xx-small;"></planet></span></div>
<br />
いきなり長い上に、見慣れない長いコードですが、これがXQueryというやつです。<br />
Qt部分から設定する変数を使って動作するため、これだけ見るとXQueryを知っている人もさっぱりかもしれません。<br />
<br />
Qt部分では、イカのコードで変数を設定します。<br />
<br />
<div style="border: solid;">
<span style="font-size: xx-small;"> QStringList urls = QStringList() << "http://qt5.jp/rss.qml"</span><br />
<span style="font-size: xx-small;"> << "http://relog.xii.jp/atom-qt.xml"</span><br />
<span style="font-size: xx-small;"> << "http://blog.hermit4.info/feeds/posts/default/-/Qt"</span><br />
<span style="font-size: xx-small;"> << "http://qt-labs.jp/feed";</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> QXmlQuery query(QXmlQuery::XQuery10);</span><br />
<span style="font-size: xx-small;"> query.bindVariable("feedlist", QVariant(urls.join(",")));</span><br />
<span style="font-size: xx-small;"> query.bindVariable("recentdays", QVariant(int(7)));</span><br />
<span style="font-size: xx-small;"> query.bindVariable("minitems", QVariant(int(6)));</span></div>
<br />
これにより、Qtのプログラム側から、XQueryで利用する変数が定義できるのです。<br />
いずれ、Qt側でファイルから読み込むコードを書く予定ですが、今の所は、以下の変数の事だけ覚えておいて下さい。<br />
<br />
<ul>
<li>$feedlist = URLの","区切り文字列</li>
<li>$recentdays = 7</li>
<li>$minitems = 6</li>
</ul>
<h4>
</h4>
<h4>
1. namespaceの定義</h4>
<div>
<br /></div>
まずは、読み込むfeedのXMLが利用しているnamespaceを定義します。<br />
<br />
<div style="border: solid;">
declare namespace atom="http://www.w3.org/2005/Atom";</div>
<br />
というやつですね。これがないと、思うようにXMLを取得できません。必要な名前空間をすべて記載していっています。Qt側でも出来るようなのですが、まぁ、よしとしましょう。<br />
<br />
<h4>
2. 関数の定義</h4>
<div>
<br /></div>
<div>
XQueryでは、処理を関数化する事ができます。隠者は以下のような関数を作成しています。</div>
<div>
<ul>
<li>local:convDate($origdate as xs:string)<br />
英語表記の日時表現を、YYYY-MM-DDThh:mm:ssの表現に変換する。<br />
タイムゾーンは現状、GMTしか無かったので、常にZを付けてしまっていて修正が必要</li>
<li>local:formatDate($orgdate as xs:string) as xs:dateTime<br />
文字列の日時表記をxs:DateTime型変数に変換する
</li>
<li>local:simple-feed($title,$pubdate,$content,$link,$name)<br />
共通XMLのフォーマット
</li>
<li>local:convert-atom($feeddoc)<br />
Atom 1.0のデータをパースして、simple-feedに渡す
</li>
<li>local:convert-rss10($feeddoc)<br />
RSS 1.0のデータをパースして(ry</li>
<li>local:convert-rss20($feeddoc)<br />
RSS 2.0のデータをパースして(ry</li>
<li>local:convert-feed($url)<br />
feedがどのフォーマットか判別して変換関数を呼び出す</li>
</ul>
</div>
<div>
といった関数を用意しています。<br />
<br />
<br />
<h4>
3. XQueryの開始部</h4>
</div>
<div>
では、これか関数を使って変換を実装している箇所が何をしているのか順を追ってみていきます。<br />
<br />
<div style="border: solid;">
let $merged := for $url in tokenize($feedlist,',')<br />
return if (doc-available($url)) then local:convert-feed($url)<br />
else ()</div>
<div>
<br /></div>
$feedlist変数のカンマ区切り文字列を","で文字配列に分けています。その上で、配列の一つずつを取り出して、そのURLが有効なdocを取得できるURLか検証し、有効なものであれば、convert-feedを実行します。実行結果は、$merged変数に格納されます。<br />
<br />
まぁ、後はこの中でフォーマットを判別して、記事の情報について必要な所だけ抜き出してsimpleな共通のXML表現<item>リストに変換しているわけです。<br />
<br />
<div style="border: solid;">
let $merged := for $item in $merged<br />
order by $item/pubdate descending<br />
return $item</div>
<div>
<br /></div>
</div>
<div>
続いて、変換されたSimpleなXMLの中をループしながら、日付降順で並べ変えて$merged変数に入れ直しています。</div>
<div>
<br /></div>
<div style="border: solid;">
<div>
<div>
return</div>
<div>
<planet> </div>
<div>
{</div>
<div>
for $item in $merged[days-from-duration(current-dateTime() - xs:dateTime(./pubdate)) <= $recentdays or position() <= $minitems]</div>
<div>
return $item</div>
<div>
}</div>
<div>
</planet></div>
</div>
</div>
<div>
<br />
最後に、出来上がったXMLから$recentdays以内の記事か、$minitems数に達するまでのfeedを抜き出して、<planet>タグで覆って完了です。</div>
<div>
<br /></div>
<div>
これを実行すると、以下のようなXMLが出来上がるという寸法です。</div>
<div>
<br /></div>
<div style="border: solid;">
<span style="font-size: xx-small;"><planet></span><br />
<span style="font-size: xx-small;"> <item></span><br />
<span style="font-size: xx-small;"> <title>Qt 勉強会 #1 @Tokyo 開催しました</title></span><br />
<span style="font-size: xx-small;"> <pubdate>2013-07-22T09:50:00Z</pubdate></span><br />
<span style="font-size: xx-small;"> <link>http://qt5.jp/qt-meetup-1-tokyo-report.html</link></span><br />
<span style="font-size: xx-small;"> <content>&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 2013年7月20日(土曜日)に &lt;a href="http://qt-users.doorkeeper.jp/events/4619" target="_blank"&gt;Qt 勉強会 #1 @Tokyo&lt;/a&gt; を &lt;a href="http://www.ptp.co.jp/" target="_blank"&gt;株式PTP&lt;/a&gt; さんのミーティングルームで開催しました。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 今回からは「関東Qt勉強会」ではなく、「Qt 勉強会」という名前で再スタートしました。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;Qt 勉強会 &lt;a href="http://t.co/1O5ArTQl85"&gt;pic.twitter.com/1O5ArTQl85&lt;/a&gt;&lt;/p&gt;&amp;mdash; Tasuku Suzuki (@task_jp) &lt;a href="https://twitter.com/task_jp/statuses/358440009327587328"&gt;July 20, 2013&lt;/a&gt;&lt;/blockquote&gt;</span><br />
<span style="font-size: xx-small;">&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 今回はもくもく会ということで、各自好きなことをしながら分からないことがあったら誰かに聞くというゆる〜い感じでした。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 私は、10月/11月に開催される &lt;a href="http://www.qtdeveloperdays.com/" target="_blank"&gt;Qt Developer Days&lt;/a&gt; の発表の応募のための文章を必死に考えていました。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;h3&gt;Qt 勉強会 #2 @Tokyo&lt;/h3&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> &lt;a href="http://qt-users.doorkeeper.jp/events/5014" target="_blank"&gt;Qt 勉強会 #2 @Tokyo&lt;/a&gt; を &lt;a href="http://www.google.com/calendar/event?action=TEMPLATE&amp;text=Qt+%E5%8B%89%E5%BC%B7%E4%BC%9A+%232+%40Tokyo&amp;details=http%3A%2F%2Fqt-users.doorkeeper.jp%2Fevents%2F5014&amp;dates=20130810T040000Z%2F20130810T090000Z&amp;location=&amp;trp=truesprop=website:http%3A%2F%2Fqt-users.doorkeeper.jp%2F&amp;sprop=name:Qt+%E5%8B%89%E5%BC%B7%E4%BC%9A+%28Doorkeeper%29" target="_blank"&gt;2013/08/10 (土)&lt;/a&gt; に開催します。お気軽にお越しください。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> &lt;a href="http://qt-users.doorkeeper.jp/events/5014" class="doorkeeper-registration-widget"&gt;Qt 勉強会 #2 @Tokyo&lt;/a&gt;</span><br />
<span style="font-size: xx-small;"> &lt;script src="https://d1dqic1fklzs1z.cloudfront.net/assets/widget.js" type="text/javascript"&gt;&lt;/script&gt;</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"></content></span><br />
<span style="font-size: xx-small;"> <author></span><br />
<span style="font-size: xx-small;"> <name>bbb</name></span><br />
<span style="font-size: xx-small;"> </author></span><br />
<span style="font-size: xx-small;"> </item></span><br />
<span style="font-size: xx-small;"> <item></span><br />
<span style="font-size: xx-small;"> <title>Qt Quickはじめませんか?</title></span><br />
<span style="font-size: xx-small;"> <pubdate>2013-07-16T13:27:10Z</pubdate></span><br />
<span style="font-size: xx-small;"> <link/></span><br />
<span style="font-size: xx-small;"> <content></span><br />
<span style="font-size: xx-small;"> &lt;p&gt;というわけで、Qt Quickの入門書を書きました。8/1発売です。&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">&lt;p&gt;「Qt QuickではじめるクロスプラットフォームUIプログラミング」&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">&lt;p&gt;と、題してQt Quickでの開発からリリースまでを解説しています。&lt;br /&gt;</span><br />
<span style="font-size: xx-small;">Qt Quickで使用するQMLはCやJavaとは少し雰囲気の違う言語なので、どのように組み上げていくかを解説しています。&lt;br /&gt;</span><br />
<span style="font-size: xx-small;">Qt Quickのすべての機能を解説しきれませんが、開発に必要な内容はひと通り網羅しています。&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">&lt;p&gt;Windows/Linux/Macへの対応方法も必要に応じて解説してます。&lt;br /&gt;</span><br />
<span style="font-size: xx-small;">Androidへの対応も進んでいて、紹介しているサンプルをAndroidで動かすこともできます。&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">&lt;p&gt;これからますますおもしろくなりそうなQt Quickをはじめませんか?&lt;br /&gt;</span><br />
<span style="font-size: xx-small;">ぜひ、本書を手にとって頂ければと思います。&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">&lt;p&gt;&lt;iframe src="http://rcm-fe.amazon-adsystem.com/e/cm?lt1=_blank&amp;bc1=000000&amp;IS2=1&amp;bg1=FFFFFF&amp;fc1=000000&amp;lc1=0000FF&amp;t=ioriayane-22&amp;o=9&amp;p=8&amp;l=as4&amp;m=amazon&amp;f=ifr&amp;ref=ss_til&amp;asins=4048915126" style="width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">&lt;p&gt;(出版を無事迎えれそうなのは、お世話になっている皆様のおかげです。特にO氏、S氏、D氏に感謝です。)&lt;br /&gt;</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;"> </span><br />
<span style="font-size: xx-small;"> </content></span><br />
<span style="font-size: xx-small;"> <author></span><br />
<span style="font-size: xx-small;"> <name>IoriAYANE</name></span><br />
<span style="font-size: xx-small;"> </author></span><br />
<span style="font-size: xx-small;"> </item></span><br />
<span style="font-size: xx-small;"> <item></span><br />
<span style="font-size: xx-small;"> <title>QtQuick本ついに</title></span><br />
<span style="font-size: xx-small;"> <pubdate>2013-07-16T03:45:00Z</pubdate></span><br />
<span style="font-size: xx-small;"> <link>http://qt5.jp/the-qtquick-book-coming-soon.html</link></span><br />
<span style="font-size: xx-small;"> <content>&lt;blockquote class="twitter-tweet" data-partner="tweetdeck"&gt;&lt;p&gt;発売日を人に聞いて知ったよ、QtQuick本ついに。 &lt;a href="http://t.co/VIzo4zGQAl"&gt;http://t.co/VIzo4zGQAl&lt;/a&gt; via @&lt;/p&gt;&amp;mdash; 理音伊織 (@IoriAYANE) &lt;a href="https://twitter.com/IoriAYANE/statuses/355961176745705472"&gt;July 13, 2013&lt;/a&gt;&lt;/blockquote&gt;</span><br />
<span style="font-size: xx-small;">&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 「&lt;a href="http://ascii.asciimw.jp/books/books/detail/978-4-04-891512-0.shtml" target="_blank"&gt;Qt QuickではじめるクロスプラットフォームUIプログラミング&lt;/a&gt;」が 8/1 に発売されます。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 初心者から上級者まで、Qt Quick に興味がある人すべてにおすすめできる本なので、今すぐ &lt;a href="http://amzn.to/15hhZ64" target="_blank"&gt;Amazon&lt;/a&gt; で予約を!</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</content></span><br />
<span style="font-size: xx-small;"> <author></span><br />
<span style="font-size: xx-small;"> <name>bbb</name></span><br />
<span style="font-size: xx-small;"> </author></span><br />
<span style="font-size: xx-small;"> </item></span><br />
<span style="font-size: xx-small;"> <item></span><br />
<span style="font-size: xx-small;"> <title>名古屋Qt勉強会#9 に参加しました</title></span><br />
<span style="font-size: xx-small;"> <pubdate>2013-07-16T03:30:00Z</pubdate></span><br />
<span style="font-size: xx-small;"> <link>http://qt5.jp/qt-meetup-nagoya-9-report.html</link></span><br />
<span style="font-size: xx-small;"> <content>&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 7月13日に &lt;a href="http://xmldo.jp/seminarroom" target="_blank"&gt;ニューキャスト様セミナールーム&lt;/a&gt; で開催された &lt;a href="http://www.zusaar.com/event/826006" target="_blank"&gt;名古屋Qt勉強会#9 7/13&lt;/a&gt; に参加してきました。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> &lt;a href="http://www.zusaar.com/event/326005" target="_blank"&gt;名古屋Qt勉強会 #5&lt;/a&gt; 以来、約1年ぶり(多分)4回目の参加になります。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;h2&gt;&lt;a href="http://www.ustream.tv/recorded/35744325" target="_blank"&gt;Qt for Android&lt;/a&gt;&lt;/h2&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 年末にリリース予定の Qt 5.2 で正式対応となる Qt for Android の最新状況についての発表でした。発表は Qt 5.1 RC1 ベースだったのですが、Qt 5.1 の正式版と Qt Creator 2.8.0 の組み合わせでどのくらい状況が改善されているのかが気になるところでした。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> 最近お友達に Android 端末をもらったので、何か作ってみようと思います。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;Qt名古屋勉強会の発表資料です。 &lt;a href="http://t.co/6LEhAzVZke"&gt;http://t.co/6LEhAzVZke&lt;/a&gt;&lt;/p&gt;&amp;mdash; 理音伊織 (@IoriAYANE) &lt;a href="https://twitter.com/IoriAYANE/statuses/355930919082786818"&gt;July 13, 2013&lt;/a&gt;&lt;/blockquote&gt;</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;">&lt;h2&gt;&lt;a href="http://www.ustream.tv/recorded/35745459" target="_blank"&gt;RaspberryPiを使ってQtでプレゼン&lt;/a&gt;&lt;/h2&gt;</span><br />
<span style="font-size: xx-small;">&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;これからはプレゼンは持ち歩く時代らしい。 Raspberry Piをプロジェクターに直結し電源もUSBから &lt;a href="http://t.co/7VNUPcFp"&gt;http://t.co/7VNUPcFp&lt;/a&gt; &lt;a href="http://t.co/lOnrfm4I"&gt;http://t.co/lOnrfm4I&lt;/a&gt; &lt;a href="http://t.co/CmA4PwC8"&gt;http://t.co/CmA4PwC8&lt;/a&gt;&amp;#10;&lt;a href="https://twitter.com/search?q=%23QtJP&amp;amp;src=hash"&gt;#QtJP&lt;/a&gt;&lt;/p&gt;&amp;mdash; nekomatu (@nekomatu) &lt;a href="https://twitter.com/nekomatu/statuses/279822352756383746"&gt;December 15, 2012&lt;/a&gt;&lt;/blockquote&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> を実際に自分で試したみたという発表でした。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;blockquote class="twitter-tweet"&gt;&lt;p&gt;Qt名古屋勉強会#9の発表資料です。 &lt;a href="http://t.co/4tYr4OhSVY"&gt;http://t.co/4tYr4OhSVY&lt;/a&gt;&amp;#10;&lt;a href="https://twitter.com/search?q=%23qtjp&amp;amp;src=hash"&gt;#qtjp&lt;/a&gt; &lt;a href="https://twitter.com/search?q=%23qtngy&amp;amp;src=hash"&gt;#qtngy&lt;/a&gt;&lt;/p&gt;&amp;mdash; sazus (@sazus) &lt;a href="https://twitter.com/sazus/statuses/355943723919622144"&gt;July 13, 2013&lt;/a&gt;&lt;/blockquote&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> どうでもいいことなのですが、なるべく短い HDMI ケーブルを用意して、電源もプロジェクターの USB から取って無線のマウスで操作するなどの細かい工夫が必要です。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;h2&gt;&lt;a href="http://www.ustream.tv/recorded/35746715" target="_blank"&gt;Qtでウェブサービスを作ろう&lt;/a&gt;&lt;/h2&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> &lt;a href="http://silk.qtquick.me/" target="_blank"&gt;QML を使ったシンプルなウェブフレームワーク Silk&lt;/a&gt; と、Silk を使って作られた、「あとで」「後で」で始まる自分のつぶやきを、自動で pocket に保存する簡単なサービス &lt;a href="http://tweet2pocket.com/" target="_blank"&gt;Tweet 2 Pocket (ベータ)&lt;/a&gt; の紹介をしました。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> &lt;script async class="speakerdeck-embed" data-slide="6" data-id="888edd90cd340130e3ce465a590f0cb7" data-ratio="1.33507170795306" src="//speakerdeck.com/assets/embed.js"&gt;&lt;/script&gt;</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> クライアントサイドもサーバーサイドも Qt で書けるようになると楽ですね。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;h2&gt;&lt;a href="http://www.ustream.tv/recorded/35747717" target="_blank"&gt;Q Planetに挑戦中&lt;/a&gt;&lt;/h2&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;</span><br />
<span style="font-size: xx-small;"> QtXmlPatterns を使って RSS リーダー?を作るという発表でした。QtXmlPatterns はなかなか使わないのでとても勉強になりました。</span><br />
<span style="font-size: xx-small;">&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;blockquote class="twitter-tweet" data-partner="tweetdeck"&gt;&lt;p&gt;QPlanet作成に挑戦中 &lt;a href="http://t.co/A2mDf7JC0x"&gt;http://t.co/A2mDf7JC0x&lt;/a&gt; &lt;a href="https://twitter.com/search?q=%23qtjp&amp;amp;src=hash"&gt;#qtjp&lt;/a&gt; &lt;a href="https://twitter.com/search?q=%23qtngy&amp;amp;src=hash"&gt;#qtngy&lt;/a&gt;&lt;/p&gt;&amp;mdash; hermit4(がんばりたい) (@hermit4) &lt;a href="https://twitter.com/hermit4/statuses/355930442567925760"&gt;July 13, 2013&lt;/a&gt;&lt;/blockquote&gt;</span><br />
<span style="font-size: xx-small;">&lt;script async src="//platform.twitter.com/widgets.js" charset="utf-8"&gt;&lt;/script&gt;</content></span><br />
<span style="font-size: xx-small;"> <author></span><br />
<span style="font-size: xx-small;"> <name>bbb</name></span><br />
<span style="font-size: xx-small;"> </author></span><br />
<span style="font-size: xx-small;"> </item></span><br />
<span style="font-size: xx-small;"> <item></span><br />
<span style="font-size: xx-small;"> <title>Qt 5.1.0 の変更点(補足)</title></span><br />
<span style="font-size: xx-small;"> <pubdate>2013-07-16T02:28:51Z</pubdate></span><br />
<span style="font-size: xx-small;"> <link>http://qt-labs.jp/2013/07/changes-in-qt-5-1-0-additional-notes.html</link></span><br />
<span style="font-size: xx-small;"> <content>&lt;p&gt;&lt;a href="http://qt-labs.jp/2013/07/qt-5-1-0-released.html"&gt;Qt 5.1.0 がリリース&lt;/a&gt; されました。5.1.0 の主な変更点は &lt;a href="http://qt-labs.jp/2013/04/qt-5-1-alpha.html"&gt;5.1.0 アルファ版のリリース記事&lt;/a&gt; に書いていますが、そこにない変更点について補足しておきます。&lt;/p&gt;</span><br />
<span style="font-size: xx-small;">&lt;p&gt;&lt;/p&gt;</content></span><br />
<span style="font-size: xx-small;"> <author></span><br />
<span style="font-size: xx-small;"> <name>bbb</name></span><br />
<span style="font-size: xx-small;"> </author></span><br />
<span style="font-size: xx-small;"> </item></span><br />
<span style="font-size: xx-small;"> <item></span><br />
<span style="font-size: xx-small;"> <title>名古屋Qt勉強会#9に参加しました</title></span><br />
<span style="font-size: xx-small;"> <pubdate>2013-07-14T14:51:00+09:00</pubdate></span><br />
<span style="font-size: xx-small;"> <link/></span><br />
<span style="font-size: xx-small;"> <content>どうも、さっぱりブログを書かない日々が続いています隠者です。&lt;br /&gt;&lt;br /&gt;今回、3連休ということもあって、ぶらっと3泊4日で名古屋に出かけてきました。&lt;br /&gt;今回の目的は、名古屋Qt勉強会 #9への参加です。&lt;br /&gt;&lt;br /&gt;今回の内容は&lt;br /&gt;&lt;ul&gt;&lt;li&gt;IoriAYANEさんによる「Qt for Android」&lt;/li&gt;&lt;li&gt;sazusさんによる「RaspberryPiを使ってQtでプレゼン」&lt;/li&gt;&lt;li&gt;taskさんによる「Qtでウェブサービスを作ろう」&lt;/li&gt;&lt;/ul&gt;といった内容のあと、せっかくなので、こっそり飛び入りで、「 QPlanetに挑戦中」ってな内容で発表させていただきました。 &lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" mozallowfullscreen="" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/24195504" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" webkitallowfullscreen="" width="427"&gt; &lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;内容は、関東Qtユーザー会で話した続きのつもりで、実際こんな物を作ろうとしています。今こんな感じですって発表のつもりでしたけど、元々予定に無かった発表なので、思いっきりはしょって飛ばして話して来ました。&lt;br /&gt;&lt;br /&gt;本当は、名古屋もQtユーザー会として名前とか色々統一しませんか的な話もしなきゃならなかったのですが、名古屋Qt勉強会というと著名人の「ザウルス先生」とか「帽子猫の王」とか「さるぼぼの王」とかいらっしゃいますし、かなりドキドキしながらの参加でしたので、結局話せずじまい。&lt;br /&gt;&lt;br /&gt;本当は、たすくさんが話すだろうなと思って、フォローするつもりで参加したのですが、たすくさんは隠者が話す物だとおもっていたようで。&lt;br /&gt;&lt;br /&gt;なにせ名古屋というと、PF部等で濃いお話を聞かせて下さるまごろく先生とか、隠者自身の職業プログラマとしての最初の師匠も名古屋出身ということで、凄い技術者がごろごろしている所という印象が強かったりします。&lt;br /&gt;&lt;br /&gt;まぁ、でも、懇親会のピザも美味しかったり、色々食べ歩いたり、見て歩いたりと、普段は出不精で旅行らしい旅行なんて凄い久しぶりだったので、堪能しました。&lt;br /&gt;&lt;br /&gt;</content></span><br />
<span style="font-size: xx-small;"> <author></span><br />
<span style="font-size: xx-small;"> <name>hermit4(隠者)</name></span><br />
<span style="font-size: xx-small;"> </author></span><br />
<span style="font-size: xx-small;"> </item></span><br />
<span style="font-size: xx-small;"></planet></span></div>
<br />
まぁ、正直ここまで書いておいてなんですが、XQueryの構文はいまいち気持ちが悪くてなじめないのですよねぇ。もっとシンプル簡単簡潔に書けないものなのでしょうか・・・。<br />
<br />
ちなみに、上記のXQueryをagregate.xqという名前で保存して、それを使って呼び出すお試しコードは以下の通りです。<br />
<br />
<div style="border: solid; font-size: xx-small;">
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><!--StartFragment--><span style="color: navy;">#include</span><span style="color: silver;"> </span><span style="color: green;"><QCoreApplication></span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: navy;">#include</span><span style="color: silver;"> </span><span style="color: green;"><QTextStream></span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: navy;">#include</span><span style="color: silver;"> </span><span style="color: green;"><QStringList></span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: navy;">#include</span><span style="color: silver;"> </span><span style="color: green;"><QXmlQuery></span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: navy;">#include</span><span style="color: silver;"> </span><span style="color: green;"><QFile></span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: navy;">#include</span><span style="color: silver;"> </span><span style="color: green;"><QDebug></span></pre>
<pre style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: olive;">int</span><span style="color: silver;"> </span><span style="color: black;">main</span><span style="color: black;">(</span><span style="color: olive;">int</span><span style="color: silver;"> </span><span style="color: black;">argc</span><span style="color: black;">,</span><span style="color: silver;"> </span><span style="color: olive;">char</span><span style="color: black;">*</span><span style="color: silver;"> </span><span style="color: black;">argv</span><span style="color: black;">[])</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: black;">{</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: purple;">QCoreApplication</span><span style="color: silver;"> </span><span style="color: black;">app</span><span style="color: black;">(</span><span style="color: black;">argc</span><span style="color: black;">,</span><span style="color: silver;"> </span><span style="color: black;">argv</span><span style="color: black;">);</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: purple;">QFile</span><span style="color: silver;"> </span><span style="color: black;">agregate</span><span style="color: black;">(</span><span style="color: green;">"agregate.xq"</span><span style="color: black;">);</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;">agregate</span><span style="color: black;">.</span><span style="color: black; font-style: italic;">open</span><span style="color: black;">(</span><span style="color: purple;">QIODevice</span><span style="color: black;">::</span><span style="color: purple;">ReadOnly</span><span style="color: black;">);</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;">
</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: purple;">QStringList</span><span style="color: silver;"> </span><span style="color: black;">urls</span><span style="color: silver;"> </span><span style="color: black;">=</span><span style="color: silver;"> </span><span style="color: purple;">QStringList</span><span style="color: black;">()</span><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span><span style="color: green;">"http://qt5.jp/rss.qml"</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span><span style="color: green;">"http://relog.xii.jp/atom-qt.xml"</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span><span style="color: green;">"http://blog.hermit4.info/feeds/posts/default/-/Qt"</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span><span style="color: green;">"http://qt-labs.jp/feed"</span><span style="color: black;">;</span></pre>
<pre style="-qt-block-indent: 0; -qt-paragraph-type: empty; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;">
</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span>QXmlQuery<span style="color: silver;"> </span><span style="color: black;">query</span><span style="color: black;">(</span>QXmlQuery<span style="color: black;">::</span>XQuery10<span style="color: black;">);</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;">query</span><span style="color: black;">.</span>bindVariable<span style="color: black;">(</span><span style="color: green;">"feedlist"</span><span style="color: black;">,</span><span style="color: silver;"> </span><span style="color: purple;">QVariant</span><span style="color: black;">(</span><span style="color: black;">urls</span><span style="color: black;">.</span><span style="color: black;">join</span><span style="color: black;">(</span><span style="color: green;">","</span><span style="color: black;">)));</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;">query</span><span style="color: black;">.</span>bindVariable<span style="color: black;">(</span><span style="color: green;">"recentdays"</span><span style="color: black;">,</span><span style="color: silver;"> </span><span style="color: purple;">QVariant</span><span style="color: black;">(</span><span style="color: olive;">int</span><span style="color: black;">(</span><span style="color: navy;">7</span><span style="color: black;">)));</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;">query</span><span style="color: black;">.</span>bindVariable<span style="color: black;">(</span><span style="color: green;">"minitems"</span><span style="color: black;">,</span><span style="color: silver;"> </span><span style="color: purple;">QVariant</span><span style="color: black;">(</span><span style="color: olive;">int</span><span style="color: black;">(</span><span style="color: navy;">6</span><span style="color: black;">)));</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;">query</span><span style="color: black;">.</span>setQuery<span style="color: black;">(&</span><span style="color: black;">agregate</span><span style="color: black;">);</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: olive;">if</span><span style="color: black;">(!</span><span style="color: black;">query</span><span style="color: black;">.</span>isValid<span style="color: black;">())</span><span style="color: silver;"> </span><span style="color: black;">{</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: navy;">qDebug</span><span style="color: black;">()</span><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span><span style="color: green;">"invalid</span><span style="color: silver;"> </span><span style="color: green;">query"</span><span style="color: black;">;</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: olive;">return</span><span style="color: silver;"> </span><span style="color: navy;">1</span><span style="color: black;">;</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;">}</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: purple;">QString</span><span style="color: silver;"> </span><span style="color: black;">result</span><span style="color: black;">;</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: olive;">if</span><span style="color: black;">(!</span><span style="color: black;">query</span><span style="color: black;">.</span>evaluateTo<span style="color: black;">(&</span><span style="color: black;">result</span><span style="color: black;">))</span><span style="color: silver;"> </span><span style="color: black;">{</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: navy;">qDebug</span><span style="color: black;">()</span><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span><span style="color: green;">"eavaluate</span><span style="color: silver;"> </span><span style="color: green;">error"</span><span style="color: black;">;</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: black;">}</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: purple;">QTextStream</span><span style="color: black;">(</span><span style="color: navy;">stdout</span><span style="color: black;">)</span><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span><span style="color: black;">result</span><span style="color: silver;"> </span><span style="color: black;"><<</span><span style="color: silver;"> </span>endl<span style="color: black;">;</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: silver;"> </span><span style="color: olive;">return</span><span style="color: silver;"> </span><span style="color: navy;">0</span><span style="color: black;">;</span></pre>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"><span style="color: black;">}</span></pre>
<br />
<pre><!--EndFragment--></pre>
</div>
<pre style="-qt-block-indent: 0; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-indent: 0px;"></pre>
<br />
次回の日記は、上記のXMLをHTMLに変換する辺りを頑張りたいと思います。hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-28238301613202909632013-07-14T14:51:00.000+09:002013-07-24T22:42:14.447+09:00名古屋Qt勉強会#9に参加しましたどうも、さっぱりブログを書かない日々が続いています隠者です。<br />
<br />
今回、3連休ということもあって、ぶらっと3泊4日で名古屋に出かけてきました。<br />
今回の目的は、名古屋Qt勉強会 #9への参加です。<br />
<br />
今回の内容は<br />
<ul>
<li>IoriAYANEさんによる「Qt for Android」</li>
<li>sazusさんによる「RaspberryPiを使ってQtでプレゼン」</li>
<li>taskさんによる「Qtでウェブサービスを作ろう」</li>
</ul>
といった内容のあと、せっかくなので、こっそり飛び入りで、「 QPlanetに挑戦中」ってな内容で発表させていただきました。 <br />
<br />
<iframe allowfullscreen="" frameborder="0" height="356" marginheight="0" marginwidth="0" mozallowfullscreen="" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/24195504" style="border-width: 1px 1px 0; border: 1px solid #CCC; margin-bottom: 5px;" webkitallowfullscreen="" width="427"> </iframe><br />
<br />
内容は、関東Qtユーザー会で話した続きのつもりで、実際こんな物を作ろうとしています。今こんな感じですって発表のつもりでしたけど、元々予定に無かった発表なので、思いっきりはしょって飛ばして話して来ました。<br />
<br />
本当は、名古屋もQtユーザー会として名前とか色々統一しませんか的な話もしなきゃならなかったのですが、名古屋Qt勉強会というと著名人の「ザウルス先生」とか「帽子猫の王」とか「さるぼぼの王」とかいらっしゃいますし、かなりドキドキしながらの参加でしたので、結局話せずじまい。<br />
<br />
本当は、たすくさんが話すだろうなと思って、フォローするつもりで参加したのですが、たすくさんは隠者が話す物だとおもっていたようで。<br />
<br />
なにせ名古屋というと、PF部等で濃いお話を聞かせて下さるまごろく先生とか、隠者自身の職業プログラマとしての最初の師匠も名古屋出身ということで、凄い技術者がごろごろしている所という印象が強かったりします。<br />
<br />
まぁ、でも、懇親会のピザも美味しかったり、色々食べ歩いたり、見て歩いたりと、普段は出不精で旅行らしい旅行なんて凄い久しぶりだったので、堪能しました。<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-64924837298488624392013-06-17T01:11:00.002+09:002013-06-17T01:11:43.238+09:00関東Qt勉強会 #16で発表してきました相当お久しぶりな隠者です。<br />
いやぁ、仕事にはまりすぎて、なかなか身動きできない状態でした。<br />
<br />
昔から地雷仕事を踏みやすい傾向にあるのですが、最近顕著な気がします。<br />
まぁ、そんな愚痴は置いておいて。<br />
<br />
関東Qt勉強会 #16で発表してきました。鈴木さんに主催がバトンタッチされてから、モクモク形式で、集まって各自自由に勉強している雰囲気が強かったのですが、たまには発表もしましょうということで。<br />
<br />
内容は、Qt小技集ということですが、とりあえずCUIでアプリ書こうよ的な話をしたくてCUI中心にもっていこうとして、微妙にこけた感じでしょうか。つまらなくてごめんなさい。<br />
<br />
次回はもう少しまともなネタを発表できるように頑張ります。<br />
<br />
<br />
<br />
<br />
<br />
<iframe frameborder="0" height="400" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/23063916" width="476"></iframe><br />
<br />
<br />
なお、今回をもって関東Qt勉強会としての活動は終了で、次回からQtユーザー会 @関東 となります。なにせ2カ所で告知したりするのめんどくせーという人とかいるので、リファクタリングしましょうということで。<br />
楽しく活動できる会になるといいですね。hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com0tag:blogger.com,1999:blog-4572229387701660661.post-90033663052063389892013-01-07T23:59:00.000+09:002013-01-08T01:27:24.208+09:00Qt の過去のNews Titleを途中まで<br />
Webarchiveでnewsの過去ログを漁ってみた隠者です。<br />
YAPF部の部長-黒の王-が時期等も含めて、Qt/Embeddedの流れとか知りたいなとおっしゃられていたので、少しまとめてみたいなぁと思ったのですが、抜けているものも多くて。<br />
<br />
過去のものは楽だったのですが、2006年以降の動的なページはアーカイブされていないものも多いようでして。<br />
<br />
Nokiaさんがサイト作ってた頃は、Trolltech時代のnewsまでArchiveしていてくれたのですが、Digiaさんでは見当たりませんでした。まとめるどころか、まだ日付とタイトルを並べただけですが、一応残しておきます。この続きどうしよう・・・。<br />
<br />
<br />
1998/03/27<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Announces Qt Snapshots<br />
1998/04/05<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Presents Qt-Based Port of Netscape Navigator 5.0<br />
1998/04/08<span class="Apple-tab-span" style="white-space: pre;"> </span>The KDE Free Qt Foundation Announced<br />
1998/07/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 1.40 released<br />
1998/10/01<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 1.41 release<br />
1998/11/18<span class="Apple-tab-span" style="white-space: pre;"> </span>Next Generation of Qt Free Edition to be Open Source<br />
1998/12/02<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 1.42 released<br />
1999/03/02<span class="Apple-tab-span" style="white-space: pre;"> </span>Linux version of Opera to be based on Qt<br />
1999/03/04<span class="Apple-tab-span" style="white-space: pre;"> </span>QPL 1.0 released<br />
1999/03/12<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 1.44 released<br />
1999/06/25<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 2.0 released<br />
1999/07/23<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 2.0.1 released<br />
1999/09/30<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 2.0.2 released<br />
2000/03/09<span class="Apple-tab-span" style="white-space: pre;"> </span>The Embedded Linux Consortium launched<br />
2000/03/20<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt/Embedded (Preview)<br />
2000/04/12<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 2.1 released<br />
2000/05/31<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt version 2.1.1 released<br />
2000/06/19<span class="Apple-tab-span" style="white-space: pre;"> </span>Beta release of Qt/Embedded<br />
2000/06/27<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt Designer preview<br />
2000/07/10<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Donates Qt/Windows Site Licenses to Educational Institutions<br />
2000/08/07<span class="Apple-tab-span" style="white-space: pre;"> </span>Partnership with Ericsson<br />
2000/08/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech and NEC Cooperate<br />
2000/09/04<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt free edition goes GPL<br />
2000/09/06<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech and Loki Partnership <br />
2000/09/06<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 2.2 released<br />
2000/09/25<span class="Apple-tab-span" style="white-space: pre;"> </span>Opera Software, PalmPalm and Trolltech form Strategic Alliance<br />
2000/09/26<span class="Apple-tab-span" style="white-space: pre;"> </span>Embedded partnerships in Asia<br />
2000/10/05<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 2.2.1 released<br />
2000/10/24<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt Linguist pre-released<br />
2000/10/26<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech congratulates KDE<br />
2000/10/30<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech to add GPL licensing to Qt/Embedded<br />
2000/11/13<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt/Embedded available for download (with Qt Palmtop)<br />
2000/11/13<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 2.2.2 released<br />
2000/12/07<span class="Apple-tab-span" style="white-space: pre;"> </span>What's the Difference Between a Linux Smart Phone and an Expensive Paper-Weight?<br />
(PalmPalm http://www.mobilemag.com/2001/04/05/tynux-the-first-linux-based-smart-phone/)<br />
Tynix OS<br />
2000/12/12<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 2.2.3 released<br />
2000/12/18<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt Palmtop Environment 1.1 released<br />
2000/12/19<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt Palmtop Environment 1.1.1<br />
2001/01/31<span class="Apple-tab-span" style="white-space: pre;"> </span>Voice control on desktop Linux applications<br />
2001/02/02<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 2.2.4 released<br />
2001/03/07<span class="Apple-tab-span" style="white-space: pre;"> </span>I can see clearly now (Qt 2.3 released)<br />
2001/03/12<span class="Apple-tab-span" style="white-space: pre;"> </span>Prime time for Embedded Linux<br />
2001/03/12<span class="Apple-tab-span" style="white-space: pre;"> </span>Concept Engineering's Support for Qt Provides Boost to C++ EDA Developers<br />
2001/04/03<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech's Qt University Makes the Dean's list<br />
2001/04/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Previews Enterprise Ready Cross-Platform Application Framework<br />
2001/04/09<span class="Apple-tab-span" style="white-space: pre;"> </span>MontaVista and Trolltech Join Forces: Embedded Linux and Graphical Toolkit<br />
2001/04/10<span class="Apple-tab-span" style="white-space: pre;"> </span>Lineo and Trolltech expand Embedded Linux partnership<br />
2001/04/11<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech and Lynuxworks provide a robust GUI solution for embedded Linux devices<br />
2001/05/21<span class="Apple-tab-span" style="white-space: pre;"> </span>A Whole New Universe of Applications Available for the Mac<br />
2001/03/22<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 3.0 Beta Release<br />
2001/06/04<span class="Apple-tab-span" style="white-space: pre;"> </span>Embedded Industry Leaders Establish Open Standards Java and Linux Platform for Device Manufacturers<br />
2001/06/15<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 2.3.1 Released<br />
2001/06/20<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech, NeoMagic Collaborate on Platform for Handheld Internet and Personal Entertainment Devices<br />
2001/06/26<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Makes Qt/Windows Available Under New Non-Commercial License<br />
2001/07/31<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt Palmtop Environment 1.3.1<br />
2001/08/06<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech releases an Open Beta of Qt/Mac<br />
2001/08/28<span class="Apple-tab-span" style="white-space: pre;"> </span>Linux-Based PDA Suite Preview<br />
2001/08/29<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 3.0 beta released<br />
2001/09/03<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech to include Qt/Mac in the Qt Academic Program<br />
2001/09/13<span class="Apple-tab-span" style="white-space: pre;"> </span>New release of Linux-based mobile computing platform (Qt palmtop 1.4)<br />
2001/10/15<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt/Mac, OS X<br />
2001/10/15<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt 3.0<br />
2001/11/05<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance release: Qt 2.3.2<br />
2001/11/05<span class="Apple-tab-span" style="white-space: pre;"> </span>Sharp, Trolltech Put Embedded Linux Applications in the Palm of Your Hand<br />
2001/12/03<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Launches Worldwide Developer Contest for Sharp's Zaurus SL-5000D<br />
2001/12/12<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.0.1<br />
2002/01/23<span class="Apple-tab-span" style="white-space: pre;"> </span>Windows Evaluation Version Available<br />
2002/01/31<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 3.0 Nominated for Product of the Year 2001<br />
2002/02/25<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.0.2<br />
2002/03/25<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.0.3<br />
2002/03/25<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Unveils Qtopia<br />
2002/03/25<span class="Apple-tab-span" style="white-space: pre;"> </span>Qtopia SDK (1.5)<br />
2002/04/23<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech's New ActiveQt Speeds and Simplifies Creation of ActiveX Controls<br />
2002/05/03<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.0.4<br />
2002/07/15<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.0.5<br />
2002/10/23<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.0.6<br />
2002/11/13<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech releases Qt 3.1<br />
2002/12/17<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.1.1<br />
2003/02/03<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.0.7<br />
2003/02/12<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech's Qtopia Included in IBM's Embedded Linux Reference Platform<br />
2003/02/19<span class="Apple-tab-span" style="white-space: pre;"> </span>Qtopia Pre-integrated and Productized for the new MontaVista Linux Consumer Electronics Edition<br />
2003/03/03<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: Qt 3.1.2<br />
2003/03/05<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech launches latest version of Qtopia (1.6)<br />
2003/06/24<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt/Mac GPL Released<br />
2003/07/02<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Introduces Qt Script for Applications, (QSA) Version 1.0<br />
2003/07/23<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt 3.2<br />
2003/07/31<span class="Apple-tab-span" style="white-space: pre;"> </span>Maintenance Release: QSA 1.0.1<br />
2003/08/05<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech releases Qtopia 1.7<br />
2003/08/27<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech releases Qt 3.2.1<br />
2003/10/16<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech releases Qt 3.2.2<br />
2003/10/31<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Unveils Qtopia Phone Edition<br />
2003/10/31<span class="Apple-tab-span" style="white-space: pre;"> </span>Motorola selects Trolltech for the A760 Linux smartphone<br />
2003/11/14<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech releases Qt 3.2.3<br />
2004/02/04<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech releases Qt 3.3 and QSA 1.1<br />
2004/03/01<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 3.3.1 released<br />
2004/04/27<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 3.3.2 released<br />
2004/05/26<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qtopia Phone Edition To Customers<br />
2004/08/11<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt 3.3.3<br />
2004/08/27<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt Script for Applications (QSA) 1.1.1<br />
2004/09/27<span class="Apple-tab-span" style="white-space: pre;"> </span>Qtopia Development Environment for Linux Devices Now Available on TI's OMAP Processor<br />
2004/09/27<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech's Qtopia Phone Software Powers Yuhua TelTech's Upcoming Normandy Mobile Phone<br />
2004/11/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Major Upgrade to Qtopia Software for Embedded Linux Devices(Qtopia 2.1)<br />
2004/11/09<span class="Apple-tab-span" style="white-space: pre;"> </span>New Motorola Linux-based Mobile Phones Built on Trolltech Platform<br />
2004/11/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Datang Mobile Picks Qtopia for New Linux-Based Mobile Phone Platform<br />
2004/11/15<span class="Apple-tab-span" style="white-space: pre;"> </span>Philips Multimedia Software to Support Qtopia for Mobile Devices<br />
2004/11/16<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech and Toshiba to Provide Embedded Linux Software<br />
2004/12/22<span class="Apple-tab-span" style="white-space: pre;"> </span>Qtopia PDA Edition Released Under GPL License(Qtopia 2.1)<br />
2005/01/17<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt Script for Applications (QSA) 1.1.2<br />
2005/01/26<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt 3.3.4<br />
2005/02/07<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech to Extend Dual Licensing to Qt for Windows<br />
2005/02/14<span class="Apple-tab-span" style="white-space: pre;"> </span>Leadtek Chooses Qtopia Software for IP VideoPhones<br />
2005/02/14<span class="Apple-tab-span" style="white-space: pre;"> </span>Ningbo Bird Standardizes on Trolltech's Qtopia Software for Linux-based Mobile Phones<br />
2005/02/14<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech's Qtopia Software Available on Philips NexperiaTM Mobile Platforms.<br />
2005/06/06<span class="Apple-tab-span" style="white-space: pre;"> </span>Qt 4 Release Candidate Now Available<br />
2005/06/28<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Launches Major New Version of Qt<br />
2005/08/03<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qtopia SDK for Archos PMA400<br />
2005/08/19<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases QSA for Qt 4<br />
2005/08/19<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt 4.0.1<br />
2005/09/05<span class="Apple-tab-span" style="white-space: pre;"> </span>New Cellon Phone Platform Built with Trolltech's Qtopia<br />
2005/09/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt 3.3.5<br />
2005/11/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Partners with Nissin Systems to Accelerate Embedded Linux Adoption in Japan<br />
2005/11/09<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Inks Agreement with NeoMore to Resell Qtopia and Qt Embedded in France<br />
2006/02/08<span class="Apple-tab-span" style="white-space: pre;"> </span>Teleca and Trolltech enter strategic partnership to deliver Linux-based mobile phone solutions<br />
2006/02/13<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech's Qtopia Strengthens Design and Flexibility of Latest Linux-based Mobile Phones<br />
2006/02/13<span class="Apple-tab-span" style="white-space: pre;"> </span>Amoi Phone Built on Cellon's Qtopia®-Based Handset Design<br />
2006/02/13<span class="Apple-tab-span" style="white-space: pre;"> </span>Accton uses Trolltech's Qtopia for Embedded Peer-to-Peer Wi-Fi VoIp Phone<br />
2006/02/13<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech raises bar again with Qtopia 4 Series<br />
2006/02/22<span class="Apple-tab-span" style="white-space: pre;"> </span>Trolltech Releases Qt 4.1.1<br />
<br />
<br />
hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com1tag:blogger.com,1999:blog-4572229387701660661.post-15892677874094535872013-01-06T23:53:00.001+09:002013-01-07T00:01:36.010+09:00Ubuntu for Phoneのアプリケーション作成チュートリアル(その3)<br />
本日から、こちらのブログのQtネタは<a href="http://planet.qt-users.jp/">planet</a> で<a href="http://qt-users.jp/index.html">日本Qtユーザー会</a>に転載される事に成りました。<br />
<br />
Google Bloggerの機能だけだと、コードとかわかりやすくするのが難しいので、手書きHTMLで枠をつけたりしていたのですが、Atomを使った転載だと消えてしまうようでして。<hr>とか使って、区切りを入れたりとか、少し工夫してみる事にします。直前までの記事をわざわざ大仰に手直ししたりはしないので、planetでお読みの方は、読みづらい記事が多くてごめんなさい。<br />
<br />
あと、Twitter経由の知り合いの読者が多いので、割と内輪ネタが多い場合もあります。ご不快でしたらごめんなさい。<br />
<br />
さて、それでは引き続きにゅあんすで翻訳しつつ、適当に補足しつつ、<a href="http://developer.ubuntu.com/resources/app-developer-cookbook/mobile/currency-converter-phone-app/">チュートリアル</a>のにゅあんすで〜翻訳を続けようかと思います。3ページ目、4ページ目は少ないですから、続けて行っちゃいます。<br />
<br />
<hr />
<h3>
UIのアレンジ</h3>
<div>
ここまで、通貨コンバータアプリのためにバックエンドと素材のセットアップをしてきました。それでは最終のステップに移り楽しみましょう。それらを統合して、結果をみてみます。<br />
<br />
ここまでと同様に最後の断片を追加しましょう。<br />
<br /></div>
<hr style="width: 70%;" />
<div style="border: solid;">
<span style="font-size: xx-small;"> Column {</span><br />
<span style="font-size: xx-small;"> id: pageLayout</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> anchors {</span><br />
<span style="font-size: xx-small;"> fill: parent</span><br />
<span style="font-size: xx-small;"> margins: root.margins</span><br />
<span style="font-size: xx-small;"> topMargin: title.height</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> spacing: units.gu(1)</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> Row {</span><br />
<span style="font-size: xx-small;"> spacing: units.gu(1)</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> Button {</span><br />
<span style="font-size: xx-small;"> id: selectorFrom</span><br />
<span style="font-size: xx-small;"> property int currencyIndex: 0</span><br />
<span style="font-size: xx-small;"> property TextField input: inputFrom</span><br />
<span style="font-size: xx-small;"> text: currencies.getCurrency(currencyIndex)</span><br />
<span style="font-size: xx-small;"> onClicked: PopupUtils.open(currencySelector, selectorFrom)</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> TextField {</span><br />
<span style="font-size: xx-small;"> id: inputFrom</span><br />
<span style="font-size: xx-small;"> errorHighlight: false</span><br />
<span style="font-size: xx-small;"> validator: DoubleValidator {notation: DoubleValidator.StandardNotation}</span><br />
<span style="font-size: xx-small;"> width: pageLayout.width - 2 * root.margins - root.buttonWidth</span><br />
<span style="font-size: xx-small;"> height: units.gu(4)</span><br />
<span style="font-size: xx-small;"> font.pixelSize: FontUtils.sizeToPixels("medium")</span><br />
<span style="font-size: xx-small;"> text: '0.0'</span><br />
<span style="font-size: xx-small;"> onTextChanged: {</span><br />
<span style="font-size: xx-small;"> if (activeFocus) {</span><br />
<span style="font-size: xx-small;"> inputTo.text = convert(inputFrom.text, selectorFrom.currencyIndex, selectorTo.currencyIndex)</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> function update() {</span><br />
<span style="font-size: xx-small;"> text = convert(inputTo.text, selectorTo.currencyIndex, selectorFrom.currencyIndex)</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> Row {</span><br />
<span style="font-size: xx-small;"> spacing: units.gu(1)</span><br />
<span style="font-size: xx-small;"> Button {</span><br />
<span style="font-size: xx-small;"> id: selectorTo</span><br />
<span style="font-size: xx-small;"> property int currencyIndex: 1</span><br />
<span style="font-size: xx-small;"> property TextField input: inputTo</span><br />
<span style="font-size: xx-small;"> text: currencies.getCurrency(currencyIndex)</span><br />
<span style="font-size: xx-small;"> onClicked: PopupUtils.open(currencySelector, selectorTo)</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> TextField {</span><br />
<span style="font-size: xx-small;"> id: inputTo</span><br />
<span style="font-size: xx-small;"> errorHighlight: false</span><br />
<span style="font-size: xx-small;"> validator: DoubleValidator {notation: DoubleValidator.StandardNotation}</span><br />
<span style="font-size: xx-small;"> width: pageLayout.width - 2 * root.margins - root.buttonWidth</span><br />
<span style="font-size: xx-small;"> height: units.gu(4)</span><br />
<span style="font-size: xx-small;"> font.pixelSize: FontUtils.sizeToPixels("medium")</span><br />
<span style="font-size: xx-small;"> text: '0.0'</span><br />
<span style="font-size: xx-small;"> onTextChanged: {</span><br />
<span style="font-size: xx-small;"> if (activeFocus) {</span><br />
<span style="font-size: xx-small;"> inputFrom.text = convert(inputTo.text, selectorTo.currencyIndex, selectorFrom.currencyIndex)</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> function update() {</span><br />
<span style="font-size: xx-small;"> text = convert(inputFrom.text, selectorFrom.currencyIndex, selectorTo.currencyIndex)</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-size: xx-small;"> Button {</span><br />
<span style="font-size: xx-small;"> text: i18n.tr("Clear")</span><br />
<span style="font-size: xx-small;"> width: units.gu(12)</span><br />
<span style="font-size: xx-small;"> onClicked: {</span><br />
<span style="font-size: xx-small;"> inputTo.text = '0.0';</span><br />
<span style="font-size: xx-small;"> inputFrom.text = '0.0';</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span><br />
<span style="font-size: xx-small;"> }</span></div>
<hr style="width: 70%;" />
これは、前の断片よりも長いコードの一部ですが、かなり単純で新しい構文はでてきません。ここでは、root のエリアにユーザーインターフェースを提供するための視覚コンポーネントの配置とシグナルハンドラの設定を行っています。<br />
<br />
どのようにonClickedシグナルハンドラが、ユーザーが通貨の選択しをクリックした時の動作(例えばpopupを開く)動作を定義しているか、onTextChengedハンドラが入力された通貨の変換ように事前に定義された関数をどのように呼び出すのか、そしてcurrentSelector コンポーネントで前回期待されていたlist view itemのupdate()関数を定義している事に着目して下さい。<br />
<br />
レイアウトを設定するためにColumnと2つのRowを使用しています。各行には、通貨選択ボタンと、通貨変換値を表示入力するためのテキストフィールドがあります。下には両方のテキストを一回でクリアするためのボタンも設置しています。これは、レイアウトのモックアップ画像です。<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSUBb0DFtDuFQ_ywiq5p9lOLf_gfkoj5uYNnR4TEnr3Vp0rYMUf3h0D-OslnMKv5YvXG9c2QhHbAfxKJStBxpPgTjeoNmmmF_OykuezToGXTDIHR8ASDpxc7TZwt5aSNkuoM8HIP3O_mA9/s1600/PageLayout_2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="207" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSUBb0DFtDuFQ_ywiq5p9lOLf_gfkoj5uYNnR4TEnr3Vp0rYMUf3h0D-OslnMKv5YvXG9c2QhHbAfxKJStBxpPgTjeoNmmmF_OykuezToGXTDIHR8ASDpxc7TZwt5aSNkuoM8HIP3O_mA9/s320/PageLayout_2.png" width="320" /></a></div>
<h3>
驚く事なかれ!</h3>
<div>
これでおしまいです。さぁ、もうのんびりと作ったものを楽しめます。好きな方法でqmlsceneを呼び出して下さい(私は、Ctrl+Shift+Pのカスタムショートカットを使っています)、そして、あなたがほんの数行のコードで書いた、完全な機能の素敵な通貨変換をご覧下さい。</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifgDKbg-Uk9O8O1_TaZGqyKd0tcrQKLmtf0g5BJYIgvBb7R0dwqWd-2auIKr_mkIxc09PfCPkq9DTKhVfr-lcfjqWM6D1r9lQBsnhMoNJCnItHKGF-aSTibx76QVvIuxs3bMOayYz0Atz7/s1600/curconvert.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifgDKbg-Uk9O8O1_TaZGqyKd0tcrQKLmtf0g5BJYIgvBb7R0dwqWd-2auIKr_mkIxc09PfCPkq9DTKhVfr-lcfjqWM6D1r9lQBsnhMoNJCnItHKGF-aSTibx76QVvIuxs3bMOayYz0Atz7/s320/curconvert.png" width="230" /></a></div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBoxwSLN6AOpMX3i-kOTjOp1JVcGQs2ZKCnmQJtLY_DEjAZvkSCz6zWAVSegsXVpbkozEXrpsNVyTD4yiesqnamVi5nO-ZbB7QDJMG9sCJskic9b_RaWvW86Eddaci-sY12DfoXRs9ur9Q/s1600/selection.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBoxwSLN6AOpMX3i-kOTjOp1JVcGQs2ZKCnmQJtLY_DEjAZvkSCz6zWAVSegsXVpbkozEXrpsNVyTD4yiesqnamVi5nO-ZbB7QDJMG9sCJskic9b_RaWvW86Eddaci-sY12DfoXRs9ur9Q/s320/selection.png" width="230" /></a></div>
<h3>
まとめ</h3>
<div>
これで、フォームファクター非依存の携帯電話向けUbuntuアプリケーションの作成方法を学びました。ここまでで、あなたはQML, JavaScriptと色々なUnuntuコンポーネントのようなパワフルなテクノロジーを組み合わせて、素敵に奇麗なUbuntuルックのアプリケーションを作り出しました。</div>
<div>
<br /></div>
<div>
あなたは、これらのテクノロジーがもたらすとても大きな可能性に気がついた事でしょう。ここからはあなた次第です。私たちのtoolkitのpreviewを試し、フィードバックをすることで、Ubuntuが新しい多数の携帯電話に搭載されるお手伝いをして下さい。</div>
<div>
<br /></div>
<h3>
詳細は</h3>
<div>
この先は、Toolkitの話ですが、こちらは<a href="http://blog.hermit4.info/2013/01/ubuntu-for-phone.html">以前のエントリ</a>に書いたのでそちらをどうぞ。</div>
<hr />
<h4>
ここまでの記事
</h4>
<a href="http://blog.hermit4.info/2013/01/ubuntu-for-phone_4.html">その1</a>、<a href="http://blog.hermit4.info/2013/01/ubuntu-for-phone_5.html">その2</a>、<a href="http://blog.hermit4.info/2013/01/ubuntu-for-phone.html">Toolkitについて</a><br />
<hr />
<h4>
ここまでのコード</h4>
<div style="border-width: 1px; border: solid; font-size: x-small;">
import QtQuick 2.0<br />
import QtQuick.XmlListModel 2.0<br />
import Ubuntu.Components 0.1<br />
import Ubuntu.Components.ListItems 0.1<br />
import Ubuntu.Components.Popups 0.1<br />
<br />
Rectangle {<br />
id: root<br />
width: units.gu(60)<br />
height: units.gu(80)<br />
color: "lightgray"<br />
<br />
property real margins: units.gu(2)<br />
property real buttonWidth: units.gu(9)<br />
<br />
Label {<br />
id: title<br />
ItemStyle.class: "title"<br />
text: i18n.tr("CurrencyConverter")<br />
height: contentHeight + root.margins<br />
anchors {<br />
left: parent.left<br />
right: parent.right<br />
top: parent.top<br />
}<br />
}<br />
<br />
ListModel {<br />
id: currencies<br />
ListElement {<br />
currency: "EUR"<br />
rate: 1.0<br />
}<br />
<br />
function getCurrency(idx) {<br />
return (idx >= 0 && idx < count) ? get(idx).currency: ""<br />
}<br />
<br />
function getRate(idx) {<br />
return (idx >= 0 && idx < count) ? get(idx).rate: 0.0<br />
}<br />
}<br />
<br />
XmlListModel {<br />
id: ratesFetcher<br />
source: "http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml"<br />
namespaceDeclarations: "declare namespace gesmes='http://www.gesmes.org/xml/2002-08-01';"<br />
+"declare default element namespace 'http://www.ecb.int/vocabulary/2002-08-01/eurofxref';"<br />
query: "/gesmes:Envelope/Cube/Cube/Cube"<br />
<br />
onStatusChanged: {<br />
if (status === XmlListModel.Ready) {<br />
for (var i = 0; i < count; i++)<br />
currencies.append({"currency": get(i).currency, "rate": parseFloat(get(i).rate)})<br />
}<br />
}<br />
<br />
XmlRole { name: "currency"; query: "@currency/string()" }<br />
XmlRole { name: "rate"; query: "@rate/string()" }<br />
}<br />
<br />
ActivityIndicator {<br />
anchors.right: parent.right<br />
running: ratesFetcher.status === XmlListModel.Loading<br />
}<br />
<br />
function convert(from, fromRateIndex, toRateIndex) {<br />
var fromRate = currencies.getRate(fromRateIndex);<br />
if (from.length <= 0 || fromRate <= 0.0)<br />
return "";<br />
return currencies.getRate(toRateIndex) * (parseFloat(from) / fromRate);<br />
}<br />
<br />
Component {<br />
id: currencySelector<br />
Popover {<br />
Column {<br />
anchors {<br />
top: parent.top<br />
left: parent.left<br />
right: parent.right<br />
}<br />
height: pageLayout.height<br />
Header {<br />
id: header<br />
text: i18n.tr("Select currency")<br />
}<br />
ListView {<br />
clip: true<br />
width: parent.width<br />
height: parent.height - header.height<br />
model: currencies<br />
delegate: Standard {<br />
text: currency<br />
onClicked: {<br />
caller.currencyIndex = index<br />
caller.input.update()<br />
hide()<br />
}<br />
}<br />
}<br />
}<br />
}<br />
}<br />
Column {<br />
id: pageLayout<br />
<br />
anchors {<br />
fill: parent<br />
margins: root.margins<br />
topMargin: title.height<br />
}<br />
spacing: units.gu(1)<br />
<br />
Row {<br />
spacing: units.gu(1)<br />
<br />
Button {<br />
id: selectorFrom<br />
property int currencyIndex: 0<br />
property TextField input: inputFrom<br />
text: currencies.getCurrency(currencyIndex)<br />
onClicked: PopupUtils.open(currencySelector, selectorFrom)<br />
}<br />
<br />
TextField {<br />
id: inputFrom<br />
errorHighlight: false<br />
validator: DoubleValidator {notation: DoubleValidator.StandardNotation}<br />
width: pageLayout.width - 2 * root.margins - root.buttonWidth<br />
height: units.gu(4)<br />
font.pixelSize: FontUtils.sizeToPixels("medium")<br />
text: '0.0'<br />
onTextChanged: {<br />
if (activeFocus) {<br />
inputTo.text = convert(inputFrom.text, selectorFrom.currencyIndex, selectorTo.currencyIndex)<br />
}<br />
}<br />
function update() {<br />
text = convert(inputTo.text, selectorTo.currencyIndex, selectorFrom.currencyIndex)<br />
}<br />
}<br />
}<br />
<br />
Row {<br />
spacing: units.gu(1)<br />
Button {<br />
id: selectorTo<br />
property int currencyIndex: 1<br />
property TextField input: inputTo<br />
text: currencies.getCurrency(currencyIndex)<br />
onClicked: PopupUtils.open(currencySelector, selectorTo)<br />
}<br />
<br />
TextField {<br />
id: inputTo<br />
errorHighlight: false<br />
validator: DoubleValidator {notation: DoubleValidator.StandardNotation}<br />
width: pageLayout.width - 2 * root.margins - root.buttonWidth<br />
height: units.gu(4)<br />
font.pixelSize: FontUtils.sizeToPixels("medium")<br />
text: '0.0'<br />
onTextChanged: {<br />
if (activeFocus) {<br />
inputFrom.text = convert(inputTo.text, selectorTo.currencyIndex, selectorFrom.currencyIndex)<br />
}<br />
}<br />
function update() {<br />
text = convert(inputFrom.text, selectorFrom.currencyIndex, selectorTo.currencyIndex)<br />
}<br />
}<br />
}<br />
<br />
Button {<br />
text: i18n.tr("Clear")<br />
width: units.gu(12)<br />
onClicked: {<br />
inputTo.text = '0.0';<br />
inputFrom.text = '0.0';<br />
}<br />
}<br />
}<br />
}</div>
<br />
<hr />
ということで、Ubuntu for Phoneのチュートリアルをにゅあんすでー翻訳してみましたけど、いかがでしたでしょうか。<br />
<br />
細かい説明をと考えていましたが、このチュートリアルをやるうちに、実はこのチュートリアル、QMLを知らないといまいち良くわからずに流れてしまう気がしてきました。<br />
<br />
そんなわけで、QMLについて、もうちょっと何かわかりやすい方法で、チュートリアル作れたらなぁなんて思ってます。<br />
<br />
Twitterでは、今の円・ドルレート表示とかも欲しい的な話を聞きましたので、XMLでデータをくれそうな所を探しています。見つかったらさっくり作ってみたいなと思います。<br />
QMLでグラフ書くのはちょっと大変そうなんで、まぁ、最初は文字だけ表示でしょうけど。<br />
<br />
ちなみに、Rectangleの代わりにImageを指定し、colorプロパティの代わりにsourceプロパティを指定して、画像ファイルをURL指定するとこんな事も出来ちゃいます。<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_UXZsUqCpybEvuKvLf0DKttQ423FPhFozSNPQhGle8xbrFodQbtV4oynlI5sTTyHX6YQH13q61-e-AobrzRy3wJUu_dXDnb7RsyCl64KYDaV5FIN186q8KZaf_GXPf9X2C7VA22VHtQP0/s1600/hermit4apl.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_UXZsUqCpybEvuKvLf0DKttQ423FPhFozSNPQhGle8xbrFodQbtV4oynlI5sTTyHX6YQH13q61-e-AobrzRy3wJUu_dXDnb7RsyCl64KYDaV5FIN186q8KZaf_GXPf9X2C7VA22VHtQP0/s320/hermit4apl.png" width="230" /></a></div>
<br />
え、なんでアニメを使わないかって?さすがにQtユーザー会に転送されますからねぇ。そういう無茶はできませんでした。誰か、一定のルールで背景に使わせてくれる、いけてる萌え絵の絵師さんを紹介してくれませんか・・・。<br />
<br />hermit4(隠者)http://www.blogger.com/profile/08431101127595932847noreply@blogger.com1