最近の記事

リンク

$suiの成分分析

$suiの成分分析

Amazon人気商品

月別アーカイブ

カテゴリー

RSSフィード

ブログ内検索

FC2アフィリエイト

タグ+カテゴリ クラウド

Youtubeやニコニコ動画のサムネイルをアートワークにするためのソフト

http://sui.ps.land.to/ThumbnailTune.zip

Youtubeニコニコ動画サムネイルアートワークにするためのソフトを作ってみました。
CravingExplorerを使ってる人なんかにはそれなりに使えるもんじゃないのかなと思います。
再生中のものとかではなくて割と一括で処理できる感じになってます(全て一括ではありませんが)
普通にYahooから画像検索もできます。

まだいろいろ不具合は見られそうなので、もし見つけた場合はここに報告してもらえれば助かります。

テーマ : ソフトウェア - ジャンル : コンピュータ

タグ : プログラム C# Youtube ニコニコ動画 iTunes サムネイル アートワーク

スレッドの怪

大学で習うレベルだと「誰が得するんだよ」って程度にしか考えてなかったスレッドだけど
ほんとにちょっと使えるプログラム作ろうとするとありがたいもんで。

しかしなんだかC#でのスレッドの挙動が奇妙。
iTunesのトラックにアートワークをがしがし設定させる部分で
何故か全部スレッドはき出すと終了してしまう。

        private void Work()
        {
            IITTrack[] t= it.GetTracks();      //どこぞから設定するトラックをもってくる
            for (int i = 0; i < this.one_page; i++)
            {
                if (i > t.Length)
                {
        //トラックを設定するメソッドをスレッドで走らせる。
                    Thread th = new Thread(this.trackArray.GetArray()[i].SetTrack);
                    th.Start((t[i]));
                }
                //↓こいつを入れると何故か終了しない。☆
      //Debug.Writeline(i);
            }
        }

・☆のデバッグ用の行を吐けば終了しないでくれる。
・デバッグ行をifブロック内に入れるとやはり終了される。
・スレッドをコメントアウトすれば終了しない。


        private void Work()
        {
            IITTrack[] t= it.GetTracks();      //どこぞから設定するトラックをもってくる
            for (int i = 0; i < this.one_page; i++)
            {
                if (i >= t.Length)
                {
                     break;
                }
        //if文を使用せずにスレッドを走らせる。
                Thread th = new Thread(this.trackArray.GetArray()[i].SetTrack);
                th.Start((t[i]));               
            }
        }

この文で問題は消えた。
しかし原因は全くの謎。thread走らせてるメソッド内で事件が起きてる可能性もかなりありそうだけど

テーマ : プログラミング - ジャンル : コンピュータ

Contains遅い。

DictionaryだのList型では要素があるかどうかをチェックするとき

if(dictionary[key]==null)

としたい。
しかし例外が帰ってきてしまうのでこれは出来ない。
C#の例外処理は重くなるのでなるべく使いたくない。

そのためにこんな感じのを使ってきていた
if(dictionary.ContainsKey(key))
が、重い。驚異的に重い。
特にDirectory等が大きいときは死にたくなる重さ。

で、ちょっと調べるとこんなんがあるらしい。
if(dictionary.TryGetValues(key,out result)
keyに検索キーを入れてその結果がresultに返ってくる。
速度はいい。けどチェックするだけならresultをいちいち作るのが邪魔。
空オブジェクトでも入れておけばいいのかもしれんがそんなやり方がわからない。


なんだかんだでHashtableを使ってしまうのが一番楽なんじゃなかろうか。
Hashtableであれば
if(hash[key]==null)
で可能。

なんかこれの方が楽じゃね?
まあHashtableは型指定ががっちりしてない分使いづらいところあるけど

テーマ : プログラミング - ジャンル : コンピュータ

継承

C#は継承するとコンストラクタが勝手に動作している。
これをさせたくない。
どうしよう。

で、とりあえずオーバーロードで引数をとらないやつを作って対応した。
どんどんやぼったくなる・・・

テーマ : プログラミング - ジャンル : コンピュータ

タグ : C# プログラム コンストラクタ オブジェクト指向

C#のRandom

C#にはRandomがあるがどうもこれがやたらと重いらしいことがわかった。
rnd.next()とかが遅いのではなく
Random rnd = new Random()が遅いらしい。

どっか小さいクラス無いでバカバカインスタンス生成させてるとものすごい遅さになってしまった。

で、まずやってみたのが各クラスに一個ずつRandomを持たせてやること。
ただここで思ったのが同時タイミングで生成されてしまうとseedが同じになってしまう
これが若干まずそう

ということでメインプログラムにstaticで一個生成してそれをどこでも使いまわすようにした。
それもそれでやぼったいやり方だけどかなり速度があがった

テーマ : プログラミング - ジャンル : コンピュータ

| ホーム |


 BLOG TOP  » NEXT PAGE