自從上一篇 利用 PhotoShop 製作 CSS Sprite 發佈後我又改了 JSX 好幾次,現在終於修到讓我自己滿意了,順便來寫一下使用方法。
由於我的 PhotoShop 是 CS2 的,太舊的版本可能會沒有 Script 的功能,在這裡先聲明一下。
檔案連結:css_sprite_ps-script.jsx
2010-09-12 02:12
2010-09-03 03:28
用 Eclipse CDT 編譯 CppSQLite3
工作上為了讓 sqlite 可以在 platform 上執行,所以必須從完整的 source code 開始編譯,對於不怎麼熟悉 Makefile 的我這真是一件麻煩的事,還好以前有玩過 CDT,索性就利用他可以自動建立 Makefile 的功能來做。
不過我是使用 Eclipse 3.2 版的 CDT,Eclipse 3.5 的 CDT 裡的 Makefile 我不太會用,也沒有時間去找文章。
這裡我下載了兩個檔案:
SQLite -> sqlite-source-3_7_2.zip
CppSQLite -> CppSQLite_3_1_demo_and_src.zip
首先建立動態連結庫
再來建立主程式專案
不過我是使用 Eclipse 3.2 版的 CDT,Eclipse 3.5 的 CDT 裡的 Makefile 我不太會用,也沒有時間去找文章。
這裡我下載了兩個檔案:
SQLite -> sqlite-source-3_7_2.zip
CppSQLite -> CppSQLite_3_1_demo_and_src.zip
首先建立動態連結庫
- 新增 "Managed Make C++ Project" 專案 -> 名稱 "cppsqlite"
- 在 Project Type 中選擇 Shared Library
- 在專案下新增 src 資料夾
- 複製 sqlite-source-3_7_2.zip 中所有的 source code 至 src 除了 shell.c 與 tclsqlite.c
- 再複製 CppSQLite_3_1_demo_and_src.zip 中的 CppSQLite3.h 與 CppSQLite3.cpp
- 開啟:專案 -> 內容
- 增加 Defined symbols 變數 -> SQLITE_CORE

- 在 C++ 跟 C 的 Optimization 的參數中增加 -fPIC 最佳化參數

- 按下『確定』後就會開始編譯,檔案有點多要稍微等一下
再來建立主程式專案
- 新增 "Managed Make C++ Project" 專案 -> 名稱 "sqlite-test"
- 在 Project Type 中選擇 Executable
- 在專案下新增 src 資料夾
- 複製 CppSQLite_3_1_demo_and_src.zip 中的 CppSQLite3Demo.cpp 至 src
- 開啟:專案 -> 內容
- 新增 Include paths -> "../../cppsqlite/src"
這個設定是在告知編譯時額外 Include 的進來 Header(*.h) 的路徑。
- 新增連結路徑:
Library search path -> "../../cppsqlite/Debug"
Libraries -> cppsqlite
這個設定是給 gcc 在做連結時需要的搜尋路徑,以及需要連結的對象名稱。
- 按下『確定』後就會開始編譯
- 接著要將 cppsqlite.dll 複製到 sqlite-test/Debug 下
Windows 的 lib 名稱為 "cppsqlite.dll"
Linux 的 lib 名稱為 "libcppsqlite.so" - 然後就可以執行 sqlite-test.exe 了 (一整個就很快樂)
2010-09-01 23:50
利用 PhotoShop 製作 CSS Sprite
原本想用 PhotoShop 的巨集來製作 CSS Sprite 的圖片,但沒想到巨集沒辦法很方便的匯入圖片到圖層上,最後找到一個可行的方法就是寫 PhotoShop 的 Script。
我只有兩個需求:雖然已經寫完了,但是還是有一些小小的 Bug,對於透明底色的 png 會有定位上的偏差,我的解決辦法就是在四個角畫上 1px 透明為 1% 的白色,雖然美中不足但勉強夠用。
這個小 Bug 已經解決了。
這個 Script 的執行方式很簡單
只要將需要合併的圖檔全部開啟
接著『檔案 -> 指令碼 -> 瀏覽』選擇下載後的 css_sprite_ps-script.jsx
執行後會建立一個新圖檔,並且要選擇輸出的 CSS 的檔案名稱
檔案下載:css_sprite_ps-script.jsx
有對這個興趣的朋友可以參考 PhotoShop 安裝目錄下的 "JavaScript Reference Guide.pdf" 的開發文件,雖然裡面全部都是英文的但還不置於看不懂。
我只有兩個需求:
- 處理圖檔組合
- 紀錄每張圖的起始定位
這個小 Bug 已經解決了。
這個 Script 的執行方式很簡單
只要將需要合併的圖檔全部開啟
接著『檔案 -> 指令碼 -> 瀏覽』選擇下載後的 css_sprite_ps-script.jsx
執行後會建立一個新圖檔,並且要選擇輸出的 CSS 的檔案名稱
// css_sprite_ps-script.jsx
#target photoshop
/** 建立參考線
* @param {Int} pixelOffSet 偏移像素
* @param {String} orientation ["Vrtc" => 垂直 ,"Hrzn" => 水平]
*/
function makeGuide(pixelOffSet, orientation) {
var id8 = charIDToTypeID( "Mk " );
var desc4 = new ActionDescriptor();
var id9 = charIDToTypeID( "Nw " );
var desc5 = new ActionDescriptor();
var id10 = charIDToTypeID( "Pstn" );
var id11 = charIDToTypeID( "#Rlt" );
desc5.putUnitDouble( id10, id11, pixelOffSet ); // integer
var id12 = charIDToTypeID( "Ornt" );
var id13 = charIDToTypeID( "Ornt" );
var id14 = charIDToTypeID( orientation ); // "Vrtc", "Hrzn"
desc5.putEnumerated( id12, id13, id14 );
var id15 = charIDToTypeID( "Gd " );
desc4.putObject( id9, id15, desc5 );
executeAction( id8, desc4, DialogModes.NO );
}
function main(){
//判斷是否有開啟圖檔
if (app.documents.length = 0) {return;}
//設定前景色為白色
app.foregroundColor.rgb.hexValue = 'FFFFFF';
var atDoc;
var list = [];
var length = app.documents.length;
//新增目標圖片文件
var newPic = app.documents.add(
1, 1, 72,
"css_sprite",
NewDocumentMode.RGB,
DocumentFill.TRANSPARENT
);
var height=0;
var width = newPic.width;
//複製所有圖檔至新建立的圖檔
for (var i=0; i<length; i++){
atDoc=app.activeDocument=app.documents[i];
//記錄圖層資訊
var newLayer={
name: atDoc.name, //檔名
width: atDoc.width,
height: atDoc.height,
top: height
};
//累計高度
height += app.documents[i].height.value;
//最大寬度
if(width < atDoc.width){ width=atDoc.width;}
//新增圖層
var aLayer = atDoc.activeLayer=atDoc.artLayers.add();
//複製背景底圖
try {
atDoc.backgroundLayer.duplicate(aLayer,ElementPlacement.PLACEAFTER);
atDoc.backgroundLayer.remove();
} catch (e){}
//將新圖層與下一層互換
aLayer.move(atDoc.layers[1],ElementPlacement.PLACEAFTER);
//標註四周的定位點
var w=atDoc.width.value, h=atDoc.height.value;
atDoc.selection.select([[0,0],[1,0],[1,1],[0,1],[0,0]]);
atDoc.selection.fill(app.foregroundColor)
atDoc.selection.select([[0,h-1],[0,h],[1,h],[1,h-1],[0,h-1]]);
atDoc.selection.fill(app.foregroundColor)
atDoc.selection.select([[w-1,0],[w-1,1],[w,1],[w,0],[w-1,0]]);
atDoc.selection.fill(app.foregroundColor)
atDoc.selection.select([[w-1,h-1],[w-1,h],[w,h],[w,h-1],[w-1,h-1]]);
atDoc.selection.fill(app.foregroundColor)
//設定透明度
aLayer.fillOpacity=1;
//合併可見圖層
atDoc.mergeVisibleLayers();
//複製圖層
atDoc.selection.selectAll()
atDoc.selection.copy()
//貼上圖層
atDoc=app.activeDocument=newPic;
newLayer.obj = atDoc.paste();
list.push(newLayer);
};
//變更圖片大小
atDoc=app.activeDocument=newPic;
atDoc.resizeCanvas(width,height,AnchorPosition.TOPLEFT);
//變更圖層定位
for (var i=length-1; i>=0; i--){
//關閉複製過的檔案
app.documents[i].close(SaveOptions.DONOTSAVECHANGES);
//移動圖層
list[i].obj.translate(0,list[i].top);
//建立參考線
if(i>0){ makeGuide(list[i].top,"Hrzn"); }
};
// 輸出 CSS 定位檔
var mySavefile = File.saveDialog("輸出 CSS 定位檔","*.css");
if(!mySavefile){return};
if(mySavefile.exists && !confirm("你確定要覆蓋這個檔案?")){
return false;
}
// 開啟檔案
var fileRef = new File(mySavefile);
if (!fileRef.open("w","","")){
alert("無法開啟檔案!!");
fileRef.close();
return false;
}
// 輸出 CSS 定位設定
for (var i=0; i<list.length; i++){
fileRef.writeln(
list[i].name+'{ background-position: 0 -'+list[i].top+'px; }'
);
};
fileRef.close();
}
//把Photoshop推到最上層
app.bringToFront();
//設定使用的單位為「像素(Pixel)」
app.preferences.rulerUnits = Units.PIXELS;
main();
檔案下載:css_sprite_ps-script.jsx
有對這個興趣的朋友可以參考 PhotoShop 安裝目錄下的 "JavaScript Reference Guide.pdf" 的開發文件,雖然裡面全部都是英文的但還不置於看不懂。
分類:
分享好物,
CSS,
PhotoShop Script (JSX)
0
回應
2010-08-28 19:42
Eclipse + PHPEclipse + Aptana 安裝
要安裝 Eclipse 說實在的還需要一點經驗
首先 Eclipse 是 Base 在 Java 上的應用程式,所以先到 Java.com 去下載 Java Runtime Environment。
再來到 Eclipse Downloads 去下載 Eclipse 主程式。
這裡我還是用我熟悉 3.5 版本 Eclipse Galileo 做範例,既然 Web 開發那就直接下載 Eclipse for PHP Developers 這個有封裝 PDT 的 Package
Downloda : eclipse-php-galileo-win32.zip
再來我們先來去找中文語言包 Eclipse Babel Project Downloads
Downloda :
BabelLanguagePack-eclipse-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-tools.mylyn-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-tools.pdt-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-tptp.platform-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-rt.equinox-zh_TW_3.5.0.v20100814074441.zip
下載好後將全部解壓縮就可以了,然後執行 eclipse.exe
先來安裝 PHPEclipse,進入 -> 說明 -> Install New Software
在 Work with 貼上 PHPEclipse 的線上安裝路徑,然後按下 Enter,選項出現後選擇 PHPEclipse,下一步 下一步 同意 完成 (因為是線上安裝,所以會有點久)
http://phpeclipse.sourceforge.net/update/stable/1.2.x/
再來安裝 Aptana,進入 -> 說明 -> Install New Software
在 Work with 貼上 Aptana 的線上安裝路徑,然後按下 Enter,選項出現後選擇 Aptana Studio,下一步 下一步 同意 完成
http://download.aptana.com/tools/studio/plugin/install/studio
最後來安裝我常用的套件
進入 -> 說明 -> Install New Software
在 Work with 的選項中選擇 Galileo - http://download.eclipse.org/releases/galileo,然後按下 Enter,然後就會出現一堆官方套件選擇
一樣 下一步 下一步 同意 完成
重開之後會跳出 Subversive 的選項,OS 是 Windows 的話選擇下面的選項:
因為額外多裝了一些官方套件,順便來去下載語言包
BabelLanguagePack-datatools-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-technology.subversive-zh_TW_3.5.0.v20100814074441.zip
最後最後中肯的建議,別在單一一個 Eclipse 上加太多套件,不然 Eclipse 會變成吃效能的怪物,最好依工作性質分成幾個不同類型的開發環境。
首先 Eclipse 是 Base 在 Java 上的應用程式,所以先到 Java.com 去下載 Java Runtime Environment。
再來到 Eclipse Downloads 去下載 Eclipse 主程式。
這裡我還是用我熟悉 3.5 版本 Eclipse Galileo 做範例,既然 Web 開發那就直接下載 Eclipse for PHP Developers 這個有封裝 PDT 的 Package
Downloda : eclipse-php-galileo-win32.zip
再來我們先來去找中文語言包 Eclipse Babel Project Downloads
Downloda :
BabelLanguagePack-eclipse-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-tools.mylyn-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-tools.pdt-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-tptp.platform-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-rt.equinox-zh_TW_3.5.0.v20100814074441.zip
下載好後將全部解壓縮就可以了,然後執行 eclipse.exe
先來安裝 PHPEclipse,進入 -> 說明 -> Install New Software
在 Work with 貼上 PHPEclipse 的線上安裝路徑,然後按下 Enter,選項出現後選擇 PHPEclipse,下一步 下一步 同意 完成 (因為是線上安裝,所以會有點久)
http://phpeclipse.sourceforge.net/update/stable/1.2.x/
再來安裝 Aptana,進入 -> 說明 -> Install New Software
在 Work with 貼上 Aptana 的線上安裝路徑,然後按下 Enter,選項出現後選擇 Aptana Studio,下一步 下一步 同意 完成
http://download.aptana.com/tools/studio/plugin/install/studio
最後來安裝我常用的套件
- Database Developers:可以撰寫 SQL script 跟連接 Database
- Subversive:用來連接 SVN 的 Client 套件
- RSE:可以連接 SSH 跟 SFTP 的遠端連接套件
進入 -> 說明 -> Install New Software
在 Work with 的選項中選擇 Galileo - http://download.eclipse.org/releases/galileo,然後按下 Enter,然後就會出現一堆官方套件選擇
- Data Tools Platform Enablement Extender SDK
- Data Tools Platform Extender SDK
- Subversive SVN Integration for the Mylyn Project
- Subversive SVN Team Provider
- Remote System Explorer End-User Runtime
- Remote System Explorer User Actions
一樣 下一步 下一步 同意 完成
重開之後會跳出 Subversive 的選項,OS 是 Windows 的話選擇下面的選項:
- JavaHL 1.5.4 Win32 Binaries
- JavaHL 1.6.0 Win32 Binaries
- Native JavaHL 1.5 Implementation
- Native JavaHL 1.6 Implementation
- Subversive SVN Connectors
因為額外多裝了一些官方套件,順便來去下載語言包
BabelLanguagePack-datatools-zh_TW_3.5.0.v20100814074441.zip
BabelLanguagePack-technology.subversive-zh_TW_3.5.0.v20100814074441.zip
最後最後中肯的建議,別在單一一個 Eclipse 上加太多套件,不然 Eclipse 會變成吃效能的怪物,最好依工作性質分成幾個不同類型的開發環境。
2010-08-23 14:37
[轉載] Apache之AllowOverride參數詳解
轉載自: Apache之AllowOverride參數詳解
日期:2008-06-20 作者:喜騰小二 來源:PHPChina
通常利用Apache的rewrite模組對 URL 進行重寫的時候, rewrite規則會寫在 .htaccess 檔案裡。但要使 apache 能夠正常的讀取.htaccess 檔案的內容,就必須對.htaccess 所在目錄進行配置。從安全性考慮,根目錄的AllowOverride內容一般都配置成不允許任何Override ,即
在 AllowOverride 設定為 None 時, .htaccess 檔案將被完全略過。當此指令設定為 All 時,所有俱有 “.htaccess” 作用域的指令都允許出現在 .htaccess 檔案中。
而對於 URL rewrite 來說,至少需要把目錄設定為
AllowOverride的參數:
日期:2008-06-20 作者:喜騰小二 來源:PHPChina
通常利用Apache的rewrite模組對 URL 進行重寫的時候, rewrite規則會寫在 .htaccess 檔案裡。但要使 apache 能夠正常的讀取.htaccess 檔案的內容,就必須對.htaccess 所在目錄進行配置。從安全性考慮,根目錄的AllowOverride內容一般都配置成不允許任何Override ,即
<Directory /myblogroot/>
AllowOverride None
</Directory>
在 AllowOverride 設定為 None 時, .htaccess 檔案將被完全略過。當此指令設定為 All 時,所有俱有 “.htaccess” 作用域的指令都允許出現在 .htaccess 檔案中。
而對於 URL rewrite 來說,至少需要把目錄設定為
<Directory /myblogroot/>
AllowOverride FileInfo
</Directory>
AllowOverride的參數:
- AuthConfig
- 允許使用與認證授權相關的指令(AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, 等)。
- FileInfo
- 允許使用控制文檔類型的指令(DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, mod_mime中的 Add* 和 Remove* 指令等等)、控制文檔元資料的指令(Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName)、mod_rewrite中的指令(RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule)和mod_actions中的Action指令。
- Indexes
- 允許使用控制目錄索引的指令(AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, 等)。
- Limit
- 允許使用控制主機訪問的指令(Allow, Deny, Order)。
- Options[=Option,...]
- 允許使用控制指定目錄功能的指令(Options和XBitHack)。可以在等號後麵附加一個逗號分隔的(無空格的)Options選項清單,用來控制允許Options指令使用哪些選項。
2010-08-23 13:52
利用 Apache .htaccess 修改 PHP 系統設定
RewriteEngine on RewriteRule ^.*$ index.php #將所有請求轉至 index.php #除特定檔案的請求以外的轉至 index.php #RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php php_flag register_globals off #將傳入參數註冊為全域變數 php_flag magic_quotes_gpc off #對特殊字元加上的反斜線 php_flag display_error off #在網頁上顯示錯誤訊息 php_flag output_buffering on #開啟輸出緩衝 php_flag log_error on #紀錄錯誤訊息 php_flag allow_url_fopen off #fopen 可開啟遠端網頁 php_flag expose_php off #顯示PHP 版本資訊 php_flag safe_mode on #安全模式 php_value include_path "/path/to/lib" #自訂函數庫的位址
參考網址:
php_flag + php_value + Apache 在不更改 php.ini 的情況下更改預設值
Apache之AllowOverride參數詳解
2010-07-16 22:41
用 Eclipse 寫 Wiki
在 Eclipse 中的 Mylyn 內建 WikiText 這個編輯器
讓你在 Eclipse 中也可寫 Wiki 文件
這真是一件快樂的事 至少可以不用去面對那永遠對不準的 word
WikiText 提供下列五種格式的 wiki 編寫
*.textile, *.tracwiki, *.mediawiki, *.twiki, *.confluence
首先在專案中建立副檔名為 .textile 的純文字文件

寫下這簡單的 wiki 文件
在[概要]中會出現文件中所有的標題,在編輯時還可以使用[折疊](天阿!一整個就太快樂了)

編輯完後在文件上按右鍵選擇[WikiText->Generate HTML]就會自動產生 html 檔

接著用 Browser 開啟剛剛生成的 html 就可以看到美美的文件了

當然也可以自訂自己想要的樣式,在[視窗->喜好設定->一般事項->編輯器->文字編輯器->WikiText]中就可以設定自己想要的樣式了

參考來源:
Getting Started With WikiText | Eclipse Zone
Help - Eclipse SDK: Mylyn WikiText User Guide
讓你在 Eclipse 中也可寫 Wiki 文件
這真是一件快樂的事 至少可以不用去面對那永遠對不準的 word
WikiText 提供下列五種格式的 wiki 編寫
*.textile, *.tracwiki, *.mediawiki, *.twiki, *.confluence
首先在專案中建立副檔名為 .textile 的純文字文件

寫下這簡單的 wiki 文件
h1(#id). 標題1 * 無序列表 * 無序列表 ** 無序列表 ** 無序列表 *** 無序列表 h2. 標題2 # 有序列表 # 有序列表 ## 有序列表 jhgjhgjgjgj h3. 標題3 p. 文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落,文字段落 h4. 標題4 h4. 標題4 h5. 標題5 h3. 標題3 h6. 標題6
在[概要]中會出現文件中所有的標題,在編輯時還可以使用[折疊](天阿!一整個就太快樂了)

編輯完後在文件上按右鍵選擇[WikiText->Generate HTML]就會自動產生 html 檔

接著用 Browser 開啟剛剛生成的 html 就可以看到美美的文件了

當然也可以自訂自己想要的樣式,在[視窗->喜好設定->一般事項->編輯器->文字編輯器->WikiText]中就可以設定自己想要的樣式了

參考來源:
Getting Started With WikiText | Eclipse Zone
Help - Eclipse SDK: Mylyn WikiText User Guide
2010-07-16 18:42
[Ubuntu] PHP 連接 Oracle 語系設定
PHP 的環境變數必須在 Apache 中設定
開啟:
vim /etc/apache2/envvars
在最後面加入:
export NLS_LANG="AMERICAN_AMERICA.UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
參考來源:
如何新增apache使用的環境變數
開啟:
vim /etc/apache2/envvars
在最後面加入:
export NLS_LANG="AMERICAN_AMERICA.UTF8"
export NLS_DATE_FORMAT="YYYY-MM-DD HH24:MI:SS"
參考來源:
如何新增apache使用的環境變數
訂閱:
文章 (Atom)