.NET でカスタムイベントを UserControl に追加する方法を何度か調べている気がしたので、まとめておく。
たしか .NET 2003 のときは結構面倒くさかった気がしたけど、今はクラスに event handler 定義するだけでプロパティパネルにも簡単に表示させることができるんだね。
とりあえず環境
VisualStudio 2005 C# .NET
Plesk で php 関連の作業していると、必ずといっていいほど毎回 open_basedir とか safe_mode のエラーではまり、その度に解決策を探しているので、とりあえずメモっておく。
今回の Plesk 環境は以下の通り。
Fedora Core 6
PSA-3.2.0
任意のテキストを、指定した幅に改行無しで一行に表示させたい時に、 JavaScript でフォントのサイズを変化させて実現する例。
<span id="scaled" style = "white-space: pre;">ここに動的に変化するテキスト</span>
Prototype.js 使ってます。
function fitFont() { var fs = 40; // 標準フォント var fw = 300; // max width Element.setStyle($("scaled"), {"font-size": fs + "px"}); while( true ) { if( Element.getWidth($("scaled")) > fw && fs > 1) { fs -= 1; Element.setStyle($("scaled"), {"font-size": fs + "px"}); } else { return; } } }
GridView を使用してやる方法です。
GridView を使って Excel にエクスポートすると、どんな形式のクエリでも書式でもうまいことできるのでとても便利。
とりあえず環境
VisualStudio 2005
ASP .NET C#
簡単な手順
1) GridView と SqlDataSource を追加する
2) Select したいクエリを SqlDataSource に指定する
3) GridView の Columns を適切に追加したり書式とか整理したりする
4) GridView の RenderControl で出力してやる
これ見ても分からんのでコードを見るのがいいと思う。
Flash から JavaScript の関数を呼んだり、 JavaScript から Flash の関数を呼んだりしたいことがかなりあって、どんな方法があるのか調べたときのメモ。
ただ単に呼び出す方法が分かっても、JavaScript と Flash のロードし終わるタイミングなんかもあって色々と厄介だったのでその辺の回避方法もついでに書いておく。
Flex で何かと使える TitleWindow をマウスで普通のウインドウみたいにリサイズを可能にしてみた。
そもそもなぜこのコントロールはこんなに中途半端なんだろう。クローズボタンはあるのに。
基本 MouseEvent を拾ってるだけ。
その時のソース。
単純に Web 上にある XML データをロードしたい場合は、 mx:HTTPService と mx:DeataGrid の dataProvider 属性を使って以下のように簡単にできる。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="xmldata.send()" layout="absolute"> <mx:HTTPService id="xmldata" url="http://blog.enjoitech.jp/upload/33_datagrid.xml" useProxy="false"/> <mx:Panel title="xml data"> <mx:DataGrid id="dgUser" dataProvider="{xmldata.lastResult.users.user}"> <mx:columns> <mx:DataGridColumn headerText="Name" dataField="name" /> <mx:DataGridColumn headerText="Gender" dataField="gender" /> </mx:columns> </mx:DataGrid> </mx:Panel> </mx:Application>
もし POST データを渡して動的に変化する値を取得するには。
動的な HTML で様々なイメージサイズが想定されるイメージの width と height の比率は固定したまま、一定の高さと幅のスペースに収めたいときがある。
例えば AxB サイズの画像の幅と高さを固定したまま、 300x200 のスペースに収めたいという感じ。
高さが幅より高いときもあれば幅が高さより広い場合もある。
そんな時は css の max-width と max-height を使うと便利。
ただこれは IE6 では対応していないので、じゃーどうしようか。
Actionscript から Application.application.parameters クラスが使える。
まず HTML
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="myflash" width="100%" height="100%" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"> <param name="movie" value="myflash.swf" /> <param name="quality" value="high" /> <param name="bgcolor" value="#869ca7" /> <param name="allowScriptAccess" value="sameDomain" /> <param name="flashvars" value='my_param=hello'> <embed src="myflash.swf?my_param=hello" quality="high" bgcolor="#869ca7" flashvars='my_param=hello' width="100%" height="100%" name="myflash" align="middle" play="true" loop="false" quality="high" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"> </embed> </object>
このコードからパラメータ my_param を取得するスクリプトが以下
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="initVars()"> <mx:Script> <![CDATA[ import mx.controls.Alert; [Bindable] private var param:String; private function initVars():void { Alert.show(Application.application.parameters.my_param); } ]]> </mx:Script>
Alert.show(mx.core.Application.application.url);ドメイン名だけを取得したければ、
Alert.show(URLUtil.getServerName(mx.core.Application.application.url));
最近個人的にはまってる Facebook アプリケーションを開発したときのメモ。
まだそんなに日本では有名じゃないけど、こういう形の Web アプリは個人的に好きだし、こういうアイデアを知っておくととても面白いと思う。
しかも Facebook アプリの作成は比較的簡単にできる。
とりあえず今回の環境は以下の通り。
CentOS-4.4
PHP-5
App URL: http://www.enjoitech.jp/facebook_dev/
実際は php 以外の言語でも非公式ながらそこそこライブラリがそろってる。
Flash Player の上に css の z-index で何かをかぶせたいときは、 Flash Player に param タグで wmode っていうパラメータを指定してやらないと駄目らしい。
<object type="application/x-shockwave-flash" data="hoge.swf"> <param name="movie" value="hoge.swf" /> <param name="wmode" value="transparent"> </object>
あとは z-index で調整する。
古いバージョンの php から新しいバージョンの mysql にアクセスした際に、こんなエラーをくらうことがある。
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in *.php on line * couldn't connect: Client does not support authentication protocol requested by server; consider upgrading MySQL client
MySQL のパスワード認証方法が 4.0 から 4.1 でちょっと変わった事が原因。
サーバ側で php が新しくなるまで old password を使うように設定してやればいい。
# vi /etc/my.cnf
... [mysqld] old_passwords=1 ...
もしくは、 mysql のユーザのパスワードを古い形式に変更してやる。
$ mysql mysql> SET PASSWORD FOR user_name = OLD_PASSWORD('user_password');
今まで mojavi 、 symfony と php のフレームワークを使ってきたわけだけど、今回 Zend Frameworkを使ってみて明らかに一番使い易かった(入りやすかった)ので、ちょっとそれについてまとめておこうかなと。
# Cake はソースコードを見た時点で使う気うせた。。
まあ zend がやってるってことで、少くてもやっておいて損は無いかと。とりあえず QuickForm と Smarty は手放せないので、その当たりを交えてうまいこと C-MVC を構築する方法のメモ。
環境
CentOS-5
php-5.1.6
Zend Framework-1.0.1
QuickForm2-1.4
Smarty-2.6.18
$myarr = array(1, 2, 3); $smarty->assign("myarr", $myarr);と php 側でやった場合、
{$myarr|@count}で取得できる。
新しくアプリケーションのネタが浮かんだので、せっかくだから ruby on Rails でやってみようと思いとりあえずセットアップまでしてみた。
今回は CentOS 5 だけど、サーバは 4 なので、そちらもセットアップしたら違いを追記する予定。
とりあえず、 RPM パッケージでセットアップできるものは以下のとおり。
ruby ruby-devel rdoc mysql mysql-server mysql-develand dependencies.
HTML_QuickForm_Rule クラスを継承したクラスを定義し、その validate 関数を加工してやればできます。
よく使う年月日を別々のテキストボックスで入力させてチェックさせたい場合などを例にします。
class IsDateExist extends HTML_QuickForm_Rule { function validate($value) { for ($i = 0; $i <= 2; $i++) { if (! ereg ("^[0-9]+$", $value[$i])) { return false; } } return ( checkdate($value[1], $value[2], $value[0]) ); } }
|cat: を使ってやります。
例えば $str1 と $str2 をくっつけて間に "_" をいれて $str3 を連結したい場合を例にすると。
value = {$str1|cat:$str2|cat:"_"|cat:$str3}
zip ファイルなどを圧縮した際に、自己解凍形式のファイルを出力するソフトとかあるじゃないですか。
あんな感じで exe ファイルを生成するソフトの .NET 版を作ってみたいなと思い、色々リサーチしてみたので、その時のメモ。
実は .NET には CSharpCodeProvider というとんでもないクラスが存在しているので、これを使ってみました。
今回開発した EnjoiCrypto にもこのテクは使っています。
一応環境。
.NET Framework 1.1/Mono 1.2