とうとう7月になりました。
夏になるとバイオリズムがめちゃくちゃになってあまり進まなくなると思うので、梅雨のうちにかたをつけてしまいたいところです。
前回の進捗で入れたい機能があと6つあるという話をしたんですが、この1週間で3つ消化出来ました。そして1つ諦めたのであと2つです。
いい感じのペースだと思います。しかし残った2つは最高レベルの重要な機能だと思っているもので、実装もなかなか大変だと思います。そして大手を振って人前に出すためにはそれなりにデバッグしてまともに動かせるところまではやらないといけません。
ここから一週間としばらくはペースをいけるところまで上げていこうと思います。それでバッチリ公開できるでしょう。
2015年7月1日水曜日
2015年6月29日月曜日
System.Drawing.Graphicsのマルチスレッド非対応問題
Graphics.DrawImageはマルチスレッド対応していない。
http://tiltcorrector.seesaa.net/article/249984715.html
この時点でも驚愕の情報なんですが、DrawImageとDrawStringが並列処理でかちあうと例外が飛んでくるようなのです。Paintイベント時のGraphicsと、ビットマップから取り出したGraphicsでどこにかち合う要素があるのか全くわからないのですが。本当に、本当におかしなライブラリですWindows.Formsは。昔使ってた時は簡単にいろんなことが出来るなあと思いましたが、複雑なことは出来ないようです。複雑なことに使ったことがなかったので気付かなかったのですが、本当に全く困りました。これでは満足なパフォーマンスが出せそうにありません。
まあWinForm版はパイロット版という位置づけに自分の中でいつの間にか変わっていたので、パフォーマンスがそこまででなくてもいいような気もしますけれど。
しかも「InvalidOperationException オブジェクトは現在他の場所で使用されています」という例外で、MSDNにも記述がない上、私はいつも例外スロー時点でデバッグ中断する設定なのですが、InvalidOperationExceptionではあまりにも一般的すぎて例外スロー中断の例外に設定するわけにもいきません(結局設定しました。自分で投げてたInvalidOperationExceptionは全部他の例外に変えました。もっといい方法がないものでしょうか)
http://tiltcorrector.seesaa.net/article/249984715.html
この時点でも驚愕の情報なんですが、DrawImageとDrawStringが並列処理でかちあうと例外が飛んでくるようなのです。Paintイベント時のGraphicsと、ビットマップから取り出したGraphicsでどこにかち合う要素があるのか全くわからないのですが。本当に、本当におかしなライブラリですWindows.Formsは。昔使ってた時は簡単にいろんなことが出来るなあと思いましたが、複雑なことは出来ないようです。複雑なことに使ったことがなかったので気付かなかったのですが、本当に全く困りました。これでは満足なパフォーマンスが出せそうにありません。
まあWinForm版はパイロット版という位置づけに自分の中でいつの間にか変わっていたので、パフォーマンスがそこまででなくてもいいような気もしますけれど。
しかも「InvalidOperationException オブジェクトは現在他の場所で使用されています」という例外で、MSDNにも記述がない上、私はいつも例外スロー時点でデバッグ中断する設定なのですが、InvalidOperationExceptionではあまりにも一般的すぎて例外スロー中断の例外に設定するわけにもいきません(結局設定しました。自分で投げてたInvalidOperationExceptionは全部他の例外に変えました。もっといい方法がないものでしょうか)
2015年6月24日水曜日
進捗
前回25日までに仕上げたいといって、そしてもう25日にならんとしてるところですが、まだあと少しかかります。
あと6個ぐらい機能を追加できれば、実用的に使えるとまではいかないまでも、プラグインで拡張したブラウザで見るのと比べてどう便利にできるのかを感じ取ってもらえるレベルまで進められると思います。そこまでいければソフトウェアサブレあたりでひっそりと公開して、フィードバックをもらったり、寄付を募ったりも出来るようになるはずです。
インターネット代金未払の督促状がだいたい毎月5日あたりにくるので、その辺をデッドラインとして、それより前に仕上げないといけないので、あと1週間と考えて、1日1個機能を実装できればうまくいきます。1週間なら限界を振りきって1日10時間ぐらいやっても、燃え尽きずにやれるはずです。しかし急ぎすぎてコードの品質を下げてしまうのはもうコリゴリなので、品質を下げないでやりたいところですが、普通にやると2日で機能1個ぐらいのペースになってちょっと間に合いません。
やや急ぎながら、コードの品質は下げずに、一週間ちょっとで燃え尽きるぐらいのペースでやっていこうと思います。
あと6個ぐらい機能を追加できれば、実用的に使えるとまではいかないまでも、プラグインで拡張したブラウザで見るのと比べてどう便利にできるのかを感じ取ってもらえるレベルまで進められると思います。そこまでいければソフトウェアサブレあたりでひっそりと公開して、フィードバックをもらったり、寄付を募ったりも出来るようになるはずです。
インターネット代金未払の督促状がだいたい毎月5日あたりにくるので、その辺をデッドラインとして、それより前に仕上げないといけないので、あと1週間と考えて、1日1個機能を実装できればうまくいきます。1週間なら限界を振りきって1日10時間ぐらいやっても、燃え尽きずにやれるはずです。しかし急ぎすぎてコードの品質を下げてしまうのはもうコリゴリなので、品質を下げないでやりたいところですが、普通にやると2日で機能1個ぐらいのペースになってちょっと間に合いません。
やや急ぎながら、コードの品質は下げずに、一週間ちょっとで燃え尽きるぐらいのペースでやっていこうと思います。
2015年6月13日土曜日
今後の予定
ようやく全体的な再設計が出来ました。私はコードを書きながら設計するので、実装も大体終わった感があります。
あとはデバッグして機能を追加して出すだけですが、口で言うのは本当に簡単です。しかし設計のために悩み苦しむフェーズが終わったので、ここから一気にスピードアップして、うまくいく可能性も、かなりあるような、楽観的観測をしています。
来月までにお金が入らないと死んでしまうので、ベータ版を出して寄付を募って、実際に寄付が集まるまでの時間を考えると(本当に集まればいいんですが)、25日ぐらいには出さないといけないでしょう。そこから逆算して取捨選択して、どの機能を実装していくか決めていく必要があります。
ベータ版を出した後の予定ですが、デバッグしながら英語版を準備し、さらに間に合わなかった機能を追加していき、デバッグと機能追加が終わったら、Mono>K#環境に移植して、マックやLinuxでも動くようにしようと思っています。今やっているWindows Form環境だとどうしても描画がカクつくのが直せないらしいのです。
http://dobon.net/vb/dotnet/control/doublebuffered.html
>フォームに大量のコントロールを配置している時のちらつきには別の理由があり、上記の方法では解決できません。
>このようにすると、一部のコントロールが正常に表示されなくなったり、最小化ボタンなどのアニメーションが無効になったり、Aeroを有効にしていると機能しなかったりなど、様々な問題があるようです。よって、できれば使用しない方が良いでしょう。
変な設定を入れるとかなり描画がスムーズになるのですが、その設定がバグだらけでいろいろとおかしくなるということです。しかしこれ以外に頼れるものがないので今回はこれでいきます。
バグだらけの設定に頼るのは一時的にして、最終的には全てのベースになる、ちゃんとしたPC版を作らなければならないように思います。いずれはスマホにも移植しようと思っていますが、ベースがしっかりしていなければ難しいでしょう。
スマホ版はXamarin.Formsを使ってAndroid/iPhone両対応にする予定ですが、いきなりクロスプラットフォームにするのは難しいので、これに合わせて一旦Windows/Mac/Linuxのクロスプラットフォーム版を作ることにしました。オブジェクト指向のテクニックを使ってWindows FormとGTK#、.NetとMonoに両対応させます。UIをブラックボックス化して入れ替えられるように設計しなおしたので、おそらくうまくいくでしょう。
実際はGTK#を使ったことがないので、カクつかずうまく描画できるか、そもそもまともに動かせるのか、といったことはやってみないとわからないのですが、まあ何をするにもわからないことだらけです。楽観的にいこうと思います。
あとはデバッグして機能を追加して出すだけですが、口で言うのは本当に簡単です。しかし設計のために悩み苦しむフェーズが終わったので、ここから一気にスピードアップして、うまくいく可能性も、かなりあるような、楽観的観測をしています。
来月までにお金が入らないと死んでしまうので、ベータ版を出して寄付を募って、実際に寄付が集まるまでの時間を考えると(本当に集まればいいんですが)、25日ぐらいには出さないといけないでしょう。そこから逆算して取捨選択して、どの機能を実装していくか決めていく必要があります。
ベータ版を出した後の予定ですが、デバッグしながら英語版を準備し、さらに間に合わなかった機能を追加していき、デバッグと機能追加が終わったら、Mono>K#環境に移植して、マックやLinuxでも動くようにしようと思っています。今やっているWindows Form環境だとどうしても描画がカクつくのが直せないらしいのです。
http://dobon.net/vb/dotnet/control/doublebuffered.html
>フォームに大量のコントロールを配置している時のちらつきには別の理由があり、上記の方法では解決できません。
>このようにすると、一部のコントロールが正常に表示されなくなったり、最小化ボタンなどのアニメーションが無効になったり、Aeroを有効にしていると機能しなかったりなど、様々な問題があるようです。よって、できれば使用しない方が良いでしょう。
変な設定を入れるとかなり描画がスムーズになるのですが、その設定がバグだらけでいろいろとおかしくなるということです。しかしこれ以外に頼れるものがないので今回はこれでいきます。
バグだらけの設定に頼るのは一時的にして、最終的には全てのベースになる、ちゃんとしたPC版を作らなければならないように思います。いずれはスマホにも移植しようと思っていますが、ベースがしっかりしていなければ難しいでしょう。
スマホ版はXamarin.Formsを使ってAndroid/iPhone両対応にする予定ですが、いきなりクロスプラットフォームにするのは難しいので、これに合わせて一旦Windows/Mac/Linuxのクロスプラットフォーム版を作ることにしました。オブジェクト指向のテクニックを使ってWindows FormとGTK#、.NetとMonoに両対応させます。UIをブラックボックス化して入れ替えられるように設計しなおしたので、おそらくうまくいくでしょう。
実際はGTK#を使ったことがないので、カクつかずうまく描画できるか、そもそもまともに動かせるのか、といったことはやってみないとわからないのですが、まあ何をするにもわからないことだらけです。楽観的にいこうと思います。
2015年5月28日木曜日
今後の予定
本当にお金が全然なくなってしまったので、とにかく可及的速やかにそれなりに動くものを作って、寄付を求めたいと思います。6月中に出せなければ完全にアウト、インターネットが繋がらなくなるのでこのプロジェクト自体が破綻してしまいます。寄付が集まらなくてもアウトですが、そこは今は考えないようにします。(最後の手段として親に土下座するというのもありますが、そこも今は考えないことにします)。
進捗状況を言うと、現在全くまともに動いていないような状態です。ただ、今はひたすら最終形を目指して作っているので、動くようになった段階で、いきなり最終形に近い、機能がそれなりに揃った状態のものが出てくる予定です。
いつの頃からか、最終形を目指して全面的に書き直すことになっていました。意識的にそう決断したわけではなく、目の前にあるコードが考えている最終形とあまりにも違いすぎるので、衝動的に書きなおし始めてしまったというのが実際のところです。
本当はそれが出来た後にどうするかを書こうと思って書き始めたのですが、あまりにも取らぬ狸の皮算用すぎるので、やめます。まともに動く最初のバージョンを作らないことには、その先の予定を言っても虚しく響くだけになってしまうでしょう。とにかく早くまともに動く専ブラを出したいと思います。
進捗状況を言うと、現在全くまともに動いていないような状態です。ただ、今はひたすら最終形を目指して作っているので、動くようになった段階で、いきなり最終形に近い、機能がそれなりに揃った状態のものが出てくる予定です。
いつの頃からか、最終形を目指して全面的に書き直すことになっていました。意識的にそう決断したわけではなく、目の前にあるコードが考えている最終形とあまりにも違いすぎるので、衝動的に書きなおし始めてしまったというのが実際のところです。
本当はそれが出来た後にどうするかを書こうと思って書き始めたのですが、あまりにも取らぬ狸の皮算用すぎるので、やめます。まともに動く最初のバージョンを作らないことには、その先の予定を言っても虚しく響くだけになってしまうでしょう。とにかく早くまともに動く専ブラを出したいと思います。
2015年5月22日金曜日
進捗
内部動作を全部作り直して、その過程でいろいろな部分が壊れてしまいましたが、どうにか再び動き出しました。大手術でしたがなんとか生還できたようです。
http://i.imgur.com/n8nfhMW.png
ちょっと頑張れば元の機能は戻せるでしょうし、もうちょっと頑張ればいろいろな機能を付け加えて、そこそこちゃんと動く専ブラになると思います。
http://i.imgur.com/n8nfhMW.png
ちょっと頑張れば元の機能は戻せるでしょうし、もうちょっと頑張ればいろいろな機能を付け加えて、そこそこちゃんと動く専ブラになると思います。
2015年5月3日日曜日
進捗
こんな初心者みたいなことを報告したくはないのですが、やってもやってもコンパイルエラーのまま進みません。
マークダウンの実装のためにしばらく時間を置いていた間に私の考えているアプリの動作が今まで書いてきたコードと全然あわなくなってしまっていて、変更範囲がものすごく広範囲に及んでいて全部書き直したほうが早いんじゃないかという気さえします。
あまりコンパイルエラーを出したくないので変更を最小限にとどめようとして、旧仕様と現在の共通点を見つけようとする作業が、ほとんど共通点自体が無いため冷静に考えてみるとものすごく無駄が多く、また元のコードを新しい仕様のコードに置き換えていくたびに記憶も上書きしていかねばならず、旧仕様を忘れる→新仕様を覚える と忘れる作業が入る分ただ書くより辛い感じがします。
いい加減な考えで適当に書いていた旧仕様を一気に新しくしようとして、いろんな泥沼に飲み込まれている感じがありますが、決して諦めて投げ出して進まなくなっているわけではありません。どこかを直すたびに他の部分と齟齬が出てコンパイルエラーの数は一向に減りませんが、最終的に必要なところを全部書き直せば終わるはずです。
マークダウンの実装のためにしばらく時間を置いていた間に私の考えているアプリの動作が今まで書いてきたコードと全然あわなくなってしまっていて、変更範囲がものすごく広範囲に及んでいて全部書き直したほうが早いんじゃないかという気さえします。
あまりコンパイルエラーを出したくないので変更を最小限にとどめようとして、旧仕様と現在の共通点を見つけようとする作業が、ほとんど共通点自体が無いため冷静に考えてみるとものすごく無駄が多く、また元のコードを新しい仕様のコードに置き換えていくたびに記憶も上書きしていかねばならず、旧仕様を忘れる→新仕様を覚える と忘れる作業が入る分ただ書くより辛い感じがします。
いい加減な考えで適当に書いていた旧仕様を一気に新しくしようとして、いろんな泥沼に飲み込まれている感じがありますが、決して諦めて投げ出して進まなくなっているわけではありません。どこかを直すたびに他の部分と齟齬が出てコンパイルエラーの数は一向に減りませんが、最終的に必要なところを全部書き直せば終わるはずです。
登録:
投稿 (Atom)