將 "使用「DNS預先擷取」以增進網頁載入效能" 取消
Google 瀏覽器就會跟據作業系統的 hosts 設定去更新 DNS 了。
2008/10/27
2008/10/24
C# WebService Client 設定
開發環境為 Visual Studio 2008
設定完成後會有一個 MasterService 類別,使用這個類別的 Service 就可對 WebService 的各個方法進行存取了。
MasterService.Service service = new MasterService.Service();
service.XXXWebMethod();
點選左下角的 Advanced... 按鈕
點選左下角的 Add Web References ...
輸入 URL: http://www.diija.com.tw/API/MasterService.asmx, 注意:不用加上 ?WSDL"
crossdomain 設定
須取名為 crossdomain.xml,並放在網站上的根目錄
http://www.diija.com.tw/crossdomain.xml
*.2kuso.com : wildcard 設定,www.2kuso.com, ww2.2kuso.com 都符合規則,因此會套用。
domain 可以設為 ip 格式, domain="140.119.182.100"
headers="SOAPAction", 有些瀏覽器(IE)如果沒有設 SOAPAction 會無法取得 WebService 的回傳內容。
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM
"http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<!-- secure = false, means allow https access -->
<allow-access-from domain="*.2kuso.com" secure="false" />
<allow-access-from domain="*.diija.com" secure="false" />
<allow-access-from domain="*.diija.com.tw" secure="false" />
<allow-access-from domain="140.119.182.100" secure="false" />
<allow-http-request-headers-from domain="*.2kuso.com" headers="SOAPAction"/>
<allow-http-request-headers-from domain="*.diija.com" headers="SOAPAction"/>
<allow-http-request-headers-from domain="*.diija.com.tw" headers="SOAPAction"/>
<allow-http-request-headers-from domain="140.119.182.100" headers="SOAPAction"/>
</cross-domain-policy>
2008/10/23
VirtualBox NAT forword 設定
注意,在 Guest 裡 NAT 設定是 ping 不到主機的。
#CentOS-5.2 為 Guest 名稱。
如果改壞了設定,可以到 $HOME/.VirtualBox\Machines\CentOS-5.2\CentOS-5.2.xml 修改。
改完必須重新啟動 VirtualBox 才會生效。
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" value="TCP"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" value="22"/>
<ExtraDataItem name="VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" value="22"/>
##pcnet/0 是掛載的第一張網路配接卡, 1 是第二張,依此類推。
## ssh 是 key
Protocol, HostPort, Guest 必須對應到同一個 key, 這個 key 可以是任何合法字串。
#SSH TCP 標定
C:\Program Files\Sun\xVM VirtualBox>
VBoxManage setextradata "CentOS-5.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP
#從 Host Port 22 轉到 Guest Port 22
C:\Program Files\Sun\xVM VirtualBox>
VBoxManage setextradata "CentOS-5.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 22
C:\Program Files\Sun\xVM VirtualBox>
VBoxManage setextradata "CentOS-5.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
#HTTP TCP 標定
C:\Program Files\Sun\xVM VirtualBox>
VBoxManage setextradata "CentOS-5.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/Protocol" TCP
#從 Host Port 22 轉到 Guest Port 22
C:\Program Files\Sun\xVM VirtualBox>
VBoxManage setextradata "CentOS-5.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/HostPort" 80
C:\Program Files\Sun\xVM VirtualBox>
VBoxManage setextradata "CentOS-5.2" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/apache/GuestPort" 80
Flex 取得某範圍亂數
程式function 如下:
public function GetRangeRandom(min:Number,max:Number):Number
{
return Math.round(Math.random()*(max-min))+min;
}
ex.我要如何取得 10 到 100的亂數 即可以呼叫
GetRangeRandom(10,100) ;
有沒有很溫馨..因為不知道AS Lib有沒有懶得查..
2008/10/22
C# PNG 轉 JPG 會變黑的問題
參考程式碼:
Image img = Image.FromFile(@"c:\source.png", true);
Bitmap bmp = new Bitmap(img );
Graphics graf = Graphics.FromImage(bmp);
graf.Clear(Color.White);
graf.DrawImage(img, 0, 0, img.Width, img.Height);
bmp.Save(@"c:\source.jpg", ImageFormat.Jpeg);
有沒有很溫馨
2008/10/20
使用 FABridge 來呼叫 Flex App 內的函式
FABridge 介紹:
透過 FABridge 可以讓 JavaScript 幾乎可以完全存取 FlexApp 內的函式以及變數,讓 Flex 與 JavaScript 的溝通變得相當簡單,不用額外透過 ExternalInterface 來定義要存取的函式。
最極端的使用 FABRidge 就是在 Flex 拉好 UI,並透過 JavaScript 來控制這些 UI,可以省掉編譯的冗長等待,並且讓只會 JavaScript 的開發人員也可以開發 FlexApp。但缺點是工具不支援,以及 Client 端必須啟用 JavaScript。
FABridge 安裝:
Flex 端的設定:
MyMain.xml
<bridge:fabridge id="externalBridge" rootobject="{this}" bridge="bridge.*" />
將 C:\Program Files\Flex Builder 3\sdks\3.0.0\frameworks\javascript\fabridge\src\bridge\FABridge.as 複製到 src 的 bridge/FABridge.as
HTML 端的設定
將 C:\Program Files\Flex Builder 3\sdks\3.0.0\frameworks\javascript\fabridge\src\bridge\FABridge.js 複製到 html-template/ 資料夾。
在 html-template/index.template.html 中加入
<script type="text/javascript" src="FABridge.js"></script>
<script type="text/javascript">
window.onload = function() {
FABridge.addInitializationCallback('flash', initCallback); //初始化,等到 FlexApp 初始化完成時會去呼叫 initCallBack。
};
function initCallback() {
app = FABridge.flash.root(); //取出 MyMain
facade = app.getFacade(); //取出 MyMain 內的 facade,注意存取變數必須以 getter 方法取出。 facade 在 MyMain 中只是定義為 public var facade:IFacade; , 而不是 public function getFacade();
//alert('facade : ' + facade);
app.addEventListener('loginSucceed', function() { //取得登入結果事件,並接收登入資訊
userProxy = facade.getUserProxy();
//alert('userProxy : ' + userProxy);
userToken = userProxy.getUserToken();
//alert('userProxy.userToken : ' + userToken);
}
2008/10/17
Flex 檔案下載
private var fr:FileReference = null; //注意,要寫在外面,否則會被記憶體回收掉,下載時會找不到來源,按存檔時會無作用。
private function downloadClipboard(event:MouseEvent):void
{
var clip:Cls_Clipboard = this.selectedClipboard;
if (clip != null) {
fr = new FileReference()
fr.addEventListener(Event.COMPLETE, function():void {
fr = null; //載入完成時,才設成 null 等待記憶體回收。
trace('fr set null');
});
fr.download(new URLRequest(clip.ClipboardPath_Fix), getDownloadFilename(clip.ClipboardPath_Fix, "clipboard-"));
} else {
DiijaUtils.popMsg('請選擇一張剪影才能下載');
}
}
/**
* 回傳如下格式 clipboard-20081017150538.png
*/
private function getDownloadFilename(url:String, prefix:String="clipboard-"):String
{
var formater:DateFormatter = new DateFormatter();
formater.formatString = "YYYYMMDDHHNNSS"; //日期格式請參考 http://livedocs.adobe.com/flex/3/langref/mx/formatters/DateFormatter.html
var split:Array = url.split('.');
return prefix + formater.format(new Date()) + '.' + split[split.length - 1];
}
2008/10/15
如何讓 SWFLoader 與 被載入的程式作溝通
如果使用 SWFLoader 要跟其內部 程式 傳遞參數時,
只要被載入的程式有開放介面提供外部呼叫,
就可以透過 System Manager 來呼叫。
例如:
被載入的程式(SWFLoaded)開放的介面:public function setVarOne(newText:String):void
主程式範例:
private function onCompleteAppLoader(oEvent:Event):void
{
var smAppLoaded:SystemManager = SystemManager(oEvent.target.content);
smAppLoaded.addEventListener(FlexEvent.APPLICATION_COMPLETE, onCurrentApplicationComplete);
}
private function onCurrentApplicationComplete(oEvent:Event):void
{
_appLoaded = Application(oEvent.target.application);
SWFLoaded(_appLoaded).setVarOne("This value set from main app!");
}
參考連結:http://www.cflex.net/showFileDetails.cfm?ObjectID=690
2008/10/13
Flex 取得外部參數
假設你使用Flex 製作出一顆 SWF檔案
需要讀出外部參數
譬如
http://www.sample.com.tw/Main.swf?UserId=Lucifer
因為程式需求需要把UserId讀進來
你可以透過
Application.application.parameters["UserId"];
這方法讀進來
很溫馨吧 !!
2008/10/08
Flex Color Picker 範例
<mx:ColorPicker id="colorPicker" change="onColorPickerChange(event)" enter="onColorPickerEnter(event)"/>
/** 選取顏色觸發 **/
private function onColorPickerChange(event:ColorPickerEvent):void {
var color:uint = event.currentTarget.selectedItem as uint;
var colorHex:String = StringUtils.intToHexColor(color);
this.setStyle("backgroundColor", colorHex);
}
/** 輸入顏色值按 Enter 觸發 **/
private function onColorPickerEnter(event:ColorPickerEvent):void {
var colorHex:String = StringUtils.intToHexColor(event.color);
this.setStyle("backgroundColor", colorHex);
}
/** 將 int 轉為 #FFFFFF 顏色字串格式 **/
public static function intToHexColor(value:uint):String
{
var mask:String = '000000';
var str:String = mask + value.toString(16).toUpperCase();
return '#' + str.substr(str.length - 6);
}