t100のプログラミング脱出作戦

自分のプログラミング脳をプログラムにして、いつかプログラミングから脱出してやるぞっ!とか夢見ながら、日々プログラム作っていく 百野 貴博 の日記です!今は、屋号『百蔵。』として、Silverlight・WPFを追跡中です! (2007/09/30)
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
【--/--/-- --:--】 | スポンサー広告 | トラックバック(-) | コメント(-) top↑
Excel2007より古い場合、XLLで扱える文字列は255バイト
ADD-IN EXPRESS を使って、ActiveX Comの Excelアドインを XLLに置き換えてたのですが
最後の最後に落とし穴が・・・(;´д⊂)

見出しのとおりなのですが、Excel2007より古い(2003とか、XPとか)場合、関数の戻り値として使える値が255バイトまで。という制限があるそうです・・・。まぢかー

こちらの記事では、Excel2007でその制限が緩和されたと書かれています。
Excel 2007 のアドイン (XLL) の開発


ADD-IN EXPRESS + XLL のアドインに変えると、レジストリを使わずにExcelのユーザー関数(UDF)を定義できるので、インストール権限の無いユーザーに対しても関数の追加・削除といったアップデートが可能になります。

なるんです。でも・・・
ActiveXバージョンで、長い文字列を返す関数を作っていたので互換性が・・・(´;ω;`)ウゥッ







ところで ADD-IN EXPRESS の開発元に関して、サイトが英語という理由で勝手にアメリカの会社かな
と思っていたのですが、会社概要みたらベラルーシでした。

うおお。
まぢですかー。

旧ソ連圏でMicrosoftパートナーって、どうなんだろう?とか素人発想で思ったりもしましたが
フォーラムに質問したら、結構早い速度で回答を書いてもらえますし、回答もなかなか親切です。
(ただし、残念ながら日本語が使えるスタッフは居ないです)

すごいー

ライセンスもそんなに高くないし、.net でOfficeのアドインを本気で作るには割とおススメかと思います。
#特に、複数バージョン対応部分に悩まなくて良いのが助かります。

でも、一ヶ月近くはまっちゃいましたが・・・(ダメ




ライセンス料に関しては、この海外移住情報サイトによると、2008年段階で ベラルーシの国民1人所得/2800ドル (日本は3万8千ドル)とのことなので、所得は日本の十分の一以下みたいですね。
(ですよね??)

とすると、安く見えるライセンス料も現地の価値にすると結構高いかもしれないですね。

やっぱり英語でソフトウェアを売り込めないとねー。


世界の人たちは母国語が英語じゃなくても、英語でソフト売ってるみたいよっ!
頑張ろう日本!(その前に、頑張ろう自分!)

SQLで大量データを一気に作るでござる(MySQL編)
開発をしていて、大量のテストデータが欲しいなーということが時々あります。

先日の、「MySQLの using temporary; using filesort が何故遅いのか」の内容も、実際に検証してみるには、sort_buffer_size を超える量のテストデータが必要になります。


しかし、これが意外と面倒くさいっ
使い慣れたスクリプト言語で、チョチョイとコードを書くのもOKなのですが、でもやっぱり面倒くさいっ
(ですよね?)


ということで、今回はSQLだけで大量データを作る方法を考えて見ます。
といっても、ストアドプロシージャでループとかじゃないです!

「単純結合」を使って、SQLで頑張るのです!

⇒続きを読む ヽ(´ー`)ノ

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

なぜ mysql の using temporary; using filesort が遅いのか
追記 2010-08-12

今回のエントリですが、「漢のコンピューター道 - Using filesort」で既に解説されていました・・・。
しかも、「漢のコンピューター道」さんの方が分かりやすいっ

うわぁぁぁん。゜(゚´Д`゚)ノ


----

帰宅してからBlog書こうと思っていたら、さっそく帰宅後の仕事でハマってしまってBlogが中断してしまいました、、、

いけませんね!
というわけで、日中の仕事の中でもBlogのネタを溜めるようにして頑張ります!


さて、今日はMySQLのチューニングネタです!

mysql のSQLをチューニングしていて、EXPLAIN を使って実行計画を見たときに
using temporary; using filesort に出くわす場合があります。

調べてみると、これはなんとしても回避した状況が内部で起こっているサインのようなんですが
じゃぁ何処を見直せばいいのかという判断は、意外と難しかったりします。

そもそも、このサインはなぜ遅いのか?なぜ発生してしまうのか?
その仕組みを理解しておかないと、原因調査もままなりません。

が、日本語サイトでは、なかなかそこまでの情報が引っかからないんですよね・・・。


というわけで、意を決して英語サイトに当たりを付けてみました。

中学の片言英語的な恥ずかしい条件でアタックw

mysql using filesort why



と思ったら、なんかいい感じのサイトがヒットしましたーっ!!

やりました。(`・ω・´)9m ビシッ

What does Using filesort mean in MySQL?

ここでもザックリ解説してあるのですが
さらに詳細として、セルゲイのサイトを紹介してくれています。

すばらしい。(`・ω・´)9m ビシッ


How MySQL executes ORDER BY


というわけで、以下訳です!
英語が苦手なので、雰囲気レベルの翻訳ですがご容赦ください・・・。

#英語が読める方は、元サイトを直接読まれることをオススメします。
#また、間違いを見つけた方は、指摘いただけるとありがたいです・・・。

⇒続きを読む ヽ(´ー`)ノ

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

ADD-IN EXPRESS 買ってみました。
Excelのユーザー定義関数の速度アップの方法を探していたら
海外パッケージで、有料の開発用フレームワーク(?)を見つけたので買ってみました。

開発者ライセンスあたり$349で、評価版は無いのですが30日返金保障が付いています。


Excelのユーザー関数開発には、VBAマクロ開発、ActiveX開発、XLL開発と幾つか方法があります。
(VSTOは、Excel2003以降という要件が私のプロジェクトにマッチしなかったので今回は評価しませんでした)

それぞれ、前者になるほど開発の難易度は低いが速度が遅いというトレードオフになっています。
最後のXLLは、Excel SDKを使うので、Excelの内部関数と同じスレッドで処理されるということらしいのですが
普通に開発するとC++で行う必要があり、非常に難易度が高いです。

さらに日本語ドキュメントも、ほぼ無い状況と言えます。


その為、速度アップを重視する場合 ActiveX を使うことになるのですが
それでも処理がセル単位で実行されるため(並列実行されない為)、どうしても体感できる程度の差が出てしまいます。


しかし!


今回見つけた、Add-in Express は凄いです!

XLL形式のDLLから .netのコードを呼び出す仕組みを提供してくれているのです!

そう!XLL形式でExcelに組み込まれるにも関わらず、開発は .net で出来てしまう素敵フレームワークなのです!
(注:全部C++で作った場合に比べると、やはり速度劣化は発生してしまいます)

素敵!

C++でActiveXなんて泣いてしまいそうな部分の知識はゼロでOK!
なのにハイパフォーマンス!素敵!!

しかも開発者ライセンス!(ランタイムライセンスじゃない!)
素敵!!


とりあえず既存関数をざくっと移植して試してみましたが、体感するほどの速度向上がありました!
素敵!!!


次回、簡単なベンチマークで速度を比較してみたいと思います!!(たぶん!)



おやすみなさい(*´д`*)

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

Eclilpse 3.6 で PHP
PHPのデバッグ環境を整えようと思って、Pleiades のサイトから
3.6 の PHP 開発環境を入れてみました。

で、WordPress 3.0 でデバッグできるか試してみようとしたところ
プロジェクトとして組み込んだところで、フルビルドでメモリ不足発生、、、

メモリを1G割り当てて再起動してみても、HTMLのパースエラーの箇所を表示しようとして
メモリ不足エラー、、、


うむむ(・ω・)

仕方がないので、Pleiades の 3.5 PHP開発環境にしてみたところ
さくっとデバッグできました。

良かったー。
Vistaだけど、今のところApacheハングアップもしないです。

でも、XAMPPのコントロールパネルは、3.6に含まれていたやつのほうが便利だったな~。


Pleiades 3.5 で、XAMPPだけ 3.6 に含まれるものに置き換えれば快適かな?

Eclipse 3.6 は、まだもうちょっと様子見かな~。
自分でプラグイン選んで環境を組み立てられる猛者じゃないと、まだちょっと調整が難しいのかも?


とりあえず、3.5 + XAMPP 1.7.3 の組み合わせでいきます~。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。