坤熙的程式部落
Collections of JavaScript, ActionScript, Flex, Php, Java, SQL, Shell
2010年9月14日 星期二
[HOWTO] 在 Mac OS X 上如何更改 sshd 的 port ?
在 Mac OS X 上如何將 sshd 的 port 由 22 改到 443 (或其他你喜歡的 port)?
A:
在一般 Linux 中,你只需要輕鬆改變 /etc/ssh/sshd_config 這個檔案裡的 Port 設定即可。但在 Mac OS X 上,更變這個設定檔 ( /etc/sshd_config ) 的 Port 設定,並沒辦法起甚麼作用!這是因為 Mac OS X (10.4版↑)是由 launchd 在控制 Server 啟動時的所有服務。
因此,我們要更改的是 launchd 所帶的 Daemon 設定檔 /System/Library/LaunchDaemons/ssh.plist !
2009年1月7日 星期三
[Memo] Linux bash 設定檔載入順序
Linux bash shell 設定檔載入順序:(->表示若沒找到就繼續往下找)
Step 1.Global Setting : /etc/profile -> /etc/profile.d -> /etc/inputrc
Step 2.User Setting : ~/.bash_profile -> ~/.bash_login -> ~/.profile
Step 3.Run Time Setting : ~/.bashrc
參考文件:鳥哥-認識 BASH Shell
2009年1月6日 星期二
[HOWTO] Linux 中如何在使用者登入時自動產生使用者的HOME資料夾?
在 Linux 中如何在使用者登入時自動產生使用者的HOME資料夾 - /home/$USR?
A:
利用 Linux 的 PAM 設定,將自動產生使用者的HOME資料夾的 Library:pam_mkhomedir,設定上去即可。
編輯此檔案/etc/pam.d/login (或其他/etc/pam.d下的設定檔),並加入這行設定:
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
2008年12月18日 星期四
[HOWTO] 如何設定 Linux 上跑起 Eclipse 的 JAVA?
如何設定 Linux 上跑 Eclipse 的 JAVA?
A:
Linux 上跑 Eclipse 用的 JAVA,並不是讀 Shell 的環境設定,而是設定在 ~/.eclipse/eclipserc 中。以 JAVA 6 跑 Eclipse 為例,eclipserc 設定為:JAVA_HOME=/usr/lib/jvm/java-6-sun
[HOWTO] 如何找出 Linux 中一資料夾下檔案內容中含有某字串的檔案?
如何找出 Linux 中一資料夾下檔案內容中含有某字串(searchString)的檔案?
A:
可以利用 find 指令,然後把結果 Pipe 給 grep 執行,如下:
找出檔案中有searchString字串的檔案
find . -exec grep -q "searchString" '{}' \; -print
2008年8月18日 星期一
[HOWTO] 如何刪除 Linux 單一資料夾的大批檔案?
2008年8月17日 星期日
[HOWTO] 如何清除目前 DNS 的 Cache
當我更改了我的 DNS IP,我要如何清除我設定前 DNS 抓到的 Cache,讓系統去抓新的 DNS?
A:
在 M$ Windows 中,開始 > 執行 > cmd ,在 Console 中打:
C:\>ipconfig /flushdns
若為了要測試想"暫時"不使用 Windows 的 DNS Cache:
net stop dnscache
在 Mac OSX 下清除 DNS Cache:
bash-2.05a$ dnscacheutil -flushcache
或
bash-2.05a$ lookupd -flushcache
在 Linux 下清除 DNS Cache:重新啟動 nscd (Name Service Cache Daemon)
/etc/init.d/nscd restart
2008年8月12日 星期二
[Sample] 漸近式載入圖片 AS3 程式碼
因為有人寫信問要如何才能漸近地載入圖片(Progressvie Loading:載入一張之後再載入下一張),所以寫了一個AS範例程式碼(點我下載),說明都在註解裡,概念上只是入門的Recursive呼叫和Array Index的應用而已,自己參考看看摟:
package
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.net.URLRequest;
public class Sample_ProgressiveLoading extends MovieClip
{
private var myFileUrlArr:Array;
//用這個loadedCount變數來記錄目前載到第幾個檔案
private var loadedCount:uint = 0;
public function Sample_ProgressiveLoading()
{
//假設你知道所有要下載的檔案總共有幾個: myFileUrlArr中我設了3張圖檔URL要下載(當然也可以是Swf)
myFileUrlArr = new Array("picture_1.jpg","picture_2.jpg","picture_3.jpg");
//把第1張圖在Array中的位置(Array從0開始)傳給loadTargetPicture(), 指示它去把第1張圖抓下來
loadTargetPicture(loadedCount);
}
//準備變數給loadTargetPicture()使用
private var urlLoader:Loader;
private var pictureUrl:URLRequest;
private function loadTargetPicture(fileArrIndex:uint):void
{
urlLoader = new Loader();
//到myPictureArr中去取的在fileArrIndex位置的圖片URL資料給URLRequest;
pictureUrl = new URLRequest(myFileUrlArr[fileArrIndex]);
//先註冊Event再去執行load
urlLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(pictureUrl);
//將loadedPicCount+1,指到下一張
loadedCount++;
}
private function completeHandler(event:Event):void
{
//Event觸發到這個function表示目標圖已經載完, 用 content 取出載入的照片給 myPicture
//這裡的 e.target 就是我們的 urlLoader.contentLoaderInfo
//因為你把 event 註冊給它,所以 target 就是指它。
var myPicture:DisplayObject = DisplayObject(event.target.content);
//這裡看你想怎麼設定你載入的這"單一張"圖片(或Swf)隨便你
myPicture.x = loadedCount*100;
myPicture.y = loadedCount*100;
this.addChild(myPicture);
//最後再次呼叫loadTargetPicture(), 因為我們在上一次的loadTargetPicture中
//把 loadedPicCount+1 了,所以圖片已經指到還沒下載的那一個檔案...
if(loadedCount<myFileUrlArr.length) //判斷是不是最後一張(小於總張數)
{
//如果小於總張數, 就再去執行 loadTargetPicture() 載入下一張
loadTargetPicture(loadedCount);
}
}
}
}
P.S:上面的程式碼有經過HTML編排,建議直接下載原始碼。另,這個範例程式有個不算小的Bug,就是如果其中有一個檔案沒有成功下載(自然沒去觸發到completeHandler()),那後面的檔案也都不會下載了...這部分就請自己想辦法摟~(逃)
2008年7月31日 星期四
[HOWTO] 在Flex中設定SWF的場景(Stage)大小
Q:
在 Flash 中有場景大小可以設定,那在 Flex 中要如何設定主程式場景(Stage)大小?
A:
在 Flex 中要設定場景大小,必需使用 Flex 的 Compile Arguments 參數下給編譯器:在你的專案資料夾上點右鍵 > 選 Properties > 在屬性選單中找到 Flex Compiler > 在 Additional Compiler Arguments 的地方填入
-default-size 440 330
-default-size 後就是我要設定的寬(width)440和高(height)330。當你漏打了height,Flex 還會在上面貼心的告訴你-default-size需要兩個參數,而目前還缺1個...
(圖片中還多設訂了 locale 設定程式中會用到的語言)
另,如果你的 ActionScript(3) 經過 Flex 編譯後有場景被切掉的問題,試著在 ActionScript 中調整它的對齊方式:將場景對齊到左上
stage.align = StageAlign.TOP_LEFT;
更多Compile時的參數,可參考這份 Flex 3 : Compiler Options 線上文件。
2008年7月23日 星期三
[HOWTO] HTML/JavaScript 如何傳參數給SWF
Q:
假設我有一個變數叫MY_VAR,我希望由外部HTML/JavaScript傳入MYFLASH.swf中來改變顯示畫面,要如何撰寫?
A:
在HTML中的寫法:
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" name="SWF_NAME" width="800" height="600" align="middle" id="SWF_ID">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="true" />
<param name="movie" value="MYFLASH.swf" />
<param name="FlashVars" value="MY_VAR1=MY_VALUE1&MY_VAR2=MY_VALUE1" />
<param name="quality" value="high" />
<param name="bgcolor" value="#CCCCCC" />
<param name="sacle" value="exactfit">
<embed src="MYFLASH.swf" width="800" height="600" align="middle" quality="high" bgcolor="#CCCCCC" name="SWF_NAME" allowScriptAccess="sameDomain" allowFullScreen="true" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" scale="exactfit" />
</object>
要傳入的變數寫在 param name="FlashVars" 後的 value 屬性中。傳入的變數與變數間用&分開(即MY_VAR1=MY_VALUE1&MY_VAR2=MY_VALUE2)。同時,要注意傳入的變數值(MY_VALUE1與MY_VALUE2)必須要用 urlencode(在PHP是 urlencode(), JSP是response.encodeURL()) 相關函式將字編碼成 MIME。
使用Flash CS3發佈的Javascript:AC_RunActiveContent.js 中的寫法:
<script language="javascript">
if (AC_FL_RunContent == 0) {
alert("這個頁面必須具備 AC_RunActiveContent.js。");
} else {
AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
'name','SWF_NAME','width','800','height','600','align','middle','id','SWF_ID',
'src','MYFLASH','quality','high','bgcolor','#CCCCCC','allowscriptaccess','sameDomain',
'allowfullscreen','true','pluginspage','http://www.macromedia.com/go/getflashplayer',
'scale','exactfit','movie','MYFLASH','FlashVars','MY_VAR1=MY_VALUE1&MY_VAR2=MY_VALUE2' ); //end AC code
}
</script>
基本上AC_FL_RunContent()中的值都是兩個兩個對應...所以 'movie' 後的下一個參數位置就是你的.swf名稱(即MYFLASH),而你要傳進去給 MYFLASH.swf(的ActionScript程式參數) 的眾多變數參數(MY_VAR1、MY_VAR2)就設定在'FlashVars'後的下一個位置。
而Flash的部分,在ActionScript 3中,我用以下程式來取得由外部傳入的變數MY_VAR1與MY_VAR2:
var strVar1:String = String(root.loaderInfo.parameters.MY_VAR1); //依需求轉型成String
var strVar2:int = int(root.loaderInfo.parameters.MY_VAR2); //或int