アレルギーで目が痛い。 |
|
| 何故かアレルギーで左目をやられてしまい目が真っ赤。体の調子もちょっと悪くてだるい。 マケスピのRSSを利用したアプリケーションの開発については、今日のところは簡単な作業にとどめておこう、と思って、ファイルの読み込みだけを実装しておいた。あと、これから作りこみたい部分の雛形を頭の中で妄想してみるも、妄想のままで終わる。現在値の動きを保存する機能は既につけてあるけど実際に動作するかどうかがかなり不安なため、とりあえず値動きが活発そうな銘柄を300種類程度(マケスピRSSの限界)恣意的に選んで今度テストするつもり。 それにしても目が痛い。
||\/|\/|\/|\/|| ||\/|\/|\/|\/|| ||.....|....|.....|... |. ∩ .| .. |....|| ||.....|... |.....|....| .. |....|.....|....|| ||.....|....|.....|.. ∧甘∧ ..|....|| ||.....|... |.....|Ж .. |....|.....|....|| ||.... _ ....|..( ´∀`) |....|| ||.....|... |.∧⇔∧|....|....._|| ||..(( ))..|/| ̄[] ̄|ヽ ....|| ||.....|... |.(*゜ー゜).....|..(( )) ||......`|' /  ̄|∞| ̄.\.|| ||.....|./||。▽。|\|.....`|'.|| ||.....|│ .\< ̄.人 ̄>../|| ||.....|(_ノノ人ヾ__) ... |..|| ||.....|┴四四四四四四四..||....四四四四四四四┴||  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
| |
|
6月20日(火) | トラックバック(0) | コメント(0) | 日記 | 管理
|
DDEサーバーへの明示的なリクエストが遅い |
|
| RSSのログをとってファイルに出力する処理を書いてみた。CSVファイル形式で出力すればいつでもEXCELで見ることができてデバッグにも都合が良いと思ったのですが、まだはっきりとは確認していないけど、それだと1日あたり15MBくらいになりそう。バイナリ形式で出力したほうがいいのかもしれないと思ったのですが、今の段階ではまだテストが全然出来ていない状態なので、見た目でおかしいところを簡単に判断できるようにEXCELで扱えたほうがよいと考えてそのままにしています。 前からちょっと気になっていたのですがRSSが一度接続できないとその後も接続できないという問題が発生していました。こちら側で勝手にライブラリ側の問題だろうと思い違いをしていたのですが、どうやらこちら側のミスだったらしい模様。ひとつのTRY~CATCHの中にDDEリクエストをするコードとDDEイベントを開始するコードを一緒に書いていて、そのうちのリクエストの方が失敗するとDDEイベントの開始ができなくなるという単純ミス。リクエストは失敗しても、その後DDEイベントを開始するコードが上手くいけば、とりあえずは問題無いようです。 ただ、DDEのイベントは値が変化するまで呼ばれないため、アプリを起動する前から全然値が変わらないようなDDEアイテム(前日終値とか)は、イベントを待っていてもいつまでも取得できないままという状態になります。その場合はやはりDDEリクエストが必要になるわけですが、このDDEリクエストが何か遅い。マルチスレッドにしてみようと思って色々やってみたのですが失敗。デバッガで見るとDDEの例外コード16387番というのが出てくるのですが、DDEML列挙子の値の内容とか載っているサイトが見当たらなかったです(もうマイクロソフト自体が半分捨てたような技術だしなあ……)。起動して1分も2分も動かないようなアプリは流石に使い難いので何とかしなければ。前日の値とかは一日を通して固定されているし、どこか別のところから拾ってきたほうがいいのかも。 完成には日に日に近づいてきているようにも思うのですが、結構遠そう…… |∧∧ |・ω・) ダレモイナイ... |⊂ バルタン スルナラ | イマノウチ...
フォッフォッフォッ (V)∧_∧(V) ヽ(・ω・)ノ / / ノ ̄ゝ
フォッフォッフォッフォッフォッ (V)∧_∧(V) ヽ( )ノ / / ......ノ ̄ゝ
| |
|
6月19日(月) | トラックバック(0) | コメント(0) | 日記 | 管理
|
VB.NETのデストラクタで嵌る |
|
| VB.NETのクラスオブジェクトが破棄されるタイミングについてよくわからなくて気持ち悪い思いをしています。_| ̄|○il|||liうげぇげえっげえぇえええぇえ とりあえず今までは、自分が作ったクラスオブジェクトについては、破棄するときにはオブジェクト型にNothingを代入するようにしていたのですが、明示的に破棄する関数を用意していませんでした。何故そうしていたのかというと、明示的にデストラクタを呼び出すような方法は無いと勝手に間違って解釈していたからです。 これによって結果的に嵌ってしまった部分があり、とりあえず目星をつけてFinalize関数を派生してみたのですが、何だか知らないけどオブジェクトが破棄されるはずのタイミングできちんと呼ばれませんでした。どうもガベージコレクションと関係があるらしいのですが。VB.NETでは確保されたインスタンスが開放されるタイミングが決まっておらず、ガベージコレクションされる際に開放されるようです。オブジェクト型にNothingを代入してもその場でガベージコレクションされるとは限らないので、Finalize関数を派生してもダメなケースがあるということのようです。 で、どうやらIDisposableという奴をImplementsして、Dispose関数というのを派生すればいいみたいです。ややこしい……
チャート表示部分でも作ろうと思ったけどその前にまずログをファイルに入出力するところを作らないとダメだということに今更気が付いた。ログの出力は多分かなり簡単なのですが、ログの入力もやろうとすると結構実装が不足していることに気付いた。特にRSSを接続していない状態での個別銘柄の株価の表示方法とか。正直あまり面白い部分じゃないので停滞中。 |\__/|.. |\__/| |\__/| l|\__ /|l / .▼▼▼ \ / \ / 川 \ ,ril|||l'" "'l||lli;, | (●) (●) | | (●) (●) | .| (●) (●) | | (●) (●) | | 三 (_又_) 三.|. . | 三 (_又_) 三.| | 三 (_又_) 三.| | 三 (_又_) 三.| \ _ ^ _/ \ _ ^ _/ \ _ ^ _/ \ _ ^ _/ /ー(Ω)-\ /ー(Ω)-\ /ー(Ω)-\ /ー(Ω)-\
| |
|
6月18日(日) | トラックバック(0) | コメント(0) | 日記 | 管理
|
【売買記録】\(^o^)/一旦全額出金した\(^o^)/ |
|
| マケスピRSSに関するアプリを作ってから相場に再参入しようと考えているので、暫く売買の予定がありません。SMBCフレンド証券を使っていたのですが、月額固定手数料10500円が流石にちょっと勿体無いので一旦全額出金しました。もし今後もスイングを続ける場合、手数料のことを考えると来月までお預けになります。月額固定じゃない手数料が最低でも860円というのは流石に厳しい。 肝心のRSSのアプリは全然進んでいません。6月14日の日記に書いた構造体の件で、全体の構造を色々変えてみると、クラス化することでさらに記述量を減らすことができることがわかったので、プログラムの見通しを良くするために色々書き換えていました。思いつきで行き当たりばったりな開発だからこうなるんだな……急がねば。 、 , ⌒⌒ヽ `) ズザザーッ リノヽ、卯) `)⌒`) 、ゞ9、゚ ヮ゚ノミ ≡≡≡;;;⌒`)≡≡⊂'⌒iて)yミつ. ;;⌒`)⌒`) `` ̄ ̄ ̄
本日買った銘柄 なし
本日決済した銘柄 なし
現在保有中の銘柄 2316.OJ モスインスティテュート 1株@437円→現在値 428円
資産:1188975円 前日比:+8円 前週比:+17円 投資をはじめてからの利益:-246577円
| |
|
6月16日(金) | トラックバック(0) | コメント(0) | 売買記録 | 管理
|
ぬるぽの回避でデッドロックみたいなのに遭遇する |
|
| マケスピのRSSからとってきたデータをフォームに表示させようとしたのですが、このデータ取得部分はフォームのスレッドとは別のスレッドでやっています。そのため、フォームの画面の更新にはInvokeメソッドを使っています。 ここでフォームの閉じるボタンを押すと、データ取得用のスレッドが終了する前にフォームオブジェクトが破棄されてしまうので、破棄されたフォームに対してデータ取得スレッドがInvokeメソッドを呼び出してしまい、ぬるぽ(ガッみたいなエラーが出てしまいます。 そこで、これを回避するために、フォームオブジェクトを破棄する際に呼ばれる関数をオーバーロードして、その前にスレッドを終了させてみようと思いました。 ところがヘルプを見ても、こういうスレッドの使い方をしたときに、どのタイミングでスレッドを停止すればいいのかということがわかりませんでした(もう少し詳しく読めばどっかに書いてありそうだけど)。 まずFinalizeをオーバーロードしてみたのですが、こうすると全く改善が見られず、結局Invokeメソッドのところでぬるぽ。そこでDisposeをオーバーロードしてみたのですが、ここでわけのわからない挙動に嵌ってしまいました。 データ取得用スレッドを終了させる方法として、スレッドの挙動を管理するBool型の変数を用意。データ取得用スレッドを起動したときにはこのフラグをTrueにしておき、これがFalseになるまでループを回してデータを取得。で、フォームが破棄されるときにこのフラグを外部からFalseにして、さらにjoinで待機することによって、無限ループを開放してスレッドを自然に終了させようとしました。 この方法は、フォームの破棄以外のタイミングでやると正常に動作します。joinの待機時間は60秒に設定していますが、実際にはあっという間にスレッドが終了してくれます。joinの待機時間をオーバーした場合にはAbortで無理やり停止させるようにしていますが、こんなことは起こりません。 しかし、Dispose関数内部からこの方法を呼び出すと、何故かjoinの待機時間が終わるまで待たされます。何で? しかもjoinの待機時間中には、データ取得用スレッドそのものが全く動かない状態になってしまいます。さらに、joinの待機時間を過ぎてAbortが呼び出されると、joinによって勝手に止められていたスレッドがようやく動き出して、スレッド停止フラグを検出してスレッドが終了する、という有様。どうも、Disposeから呼び出したjoinが待機しているスレッドは、データ取得用スレッドじゃない何か別のモノみたい。 で、解決策なのですが、join関数の手前にapplication.doevents()を追加したら、何故か解決してしまいました。何で?理由が全くわからないです。 多分Dispose関数は複数回呼ばれるとかヘルプに書いてあったので、それが原因? |l| | |l| | _,,..,,,,_ ./ ゚ 3 `ヽーっ l ゚ ll ⊃ ⌒_つ )`'ー---‐'''''"(_ ⌒) (⌒ ビターン ⌒
| |
|
6月15日(木) | トラックバック(0) | コメント(0) | 日記 | 管理
|