2011年3月29日 星期二

facebook sdk 開發環境備註

 在開發 facebook 應用程式時 , 找空間需注意事項除支援 php + mysql 外 , 也要支援 php_curl.dll , 因 facebook 回傳資訊會使用SSL的方式 , 而官網提供的 php sdk 也運用到 php_curl.dll 內的函式庫 , 可查看 src/facebook.php19 行 , 一開始就判斷 php.ini 有沒有引用 php_curl.dll
src/facebook.php

if (!function_exists('curl_init')) {
  throw new Exception('Facebook needs the CURL PHP extension.');
}

要如何知道自己免空有無支援 php_curl.dll方式
phpinfo

<?
phpinfo(); // 使用phpinfo 查出有無 curl 資訊
?>

facebook 無 php_curl.dll 會出現之錯誤訊息 PS : 線上空間有時會hidden訊息,可用 .htaccess 方式顯示出

Fatal error: Uncaught exception 'Exception' with message 'Facebook needs the CURL PHP
PS : 這是直接執行 php sdk 範例的錯誤訊息


自管server 的話 , 請安裝 php_curl.dll 即可解決 , 而線上空間的話就只能請空間商幫你安裝  php_curl.dll , 如果你使用免空呢 , 就只能換空間 ORZ....
使用免空者不要想用 dl() .htaccess 的方式引用 , 因自行測試結果為 dl()方式會被關閉,怕被攻擊 , .htaccess 不支援 dll 引用載入 , 所以換空間會比較快

空間測試列表
co.cc    PS : 網上說免費只有一年限制 ( 找不出空間設定 , 只有測出設定DNS )
kodingen.com 測試後很棒 , 推行

2011年3月28日 星期一

fckeditor . ckeditor 變更skin 佈景主題

fckeditor 2.x 預設佈景主題有三個分別為 default . office2003 . silver
php

$FCKeditor = new FCKeditor('content');
$FCKeditor->BasePath = '/fckeditor/'; //fckeditor 放置位置
$FCKeditor->Config['SkinPath'] = 'skins/office2003/' ; //變更 skins 資料夾中的佈景主題
$FCKeditor->Value =$content; // 預設值
$FCKeditor->CreateHtml();

js

FCKConfig.SkinPath = '/office2003/' ;


變更文字區顏色,更改 fck_editor.css
PS : 方法測試後 ie 無法顯示設定顏色

#xEditingArea {
background-color: #000;
}


ckeditor 預設佈景主題有三個分別為 default . office2003 . v2
js
mysitestyles.css

body
{
/* Font */
font-family: Arial, Verdana, sans-serif;
font-size: 12px;

/* Text color */
color: #f0f0f0;

/* Remove the background color to make it transparent */
background-color: #353c42;
}

html
{
/* #3658: [IE6] Editor document has horizontal scrollbar on long lines
To prevent this misbehavior, we show the scrollbar always */
_overflow-y: scroll
}

img:-moz-broken
{
-moz-force-broken-image-icon : 1;
width : 24px;
height : 24px;
}
img, input, textarea
{
cursor: default;
}


javascript

var editor = CKEDITOR.replace('content',{skin : 'office2003' , contentsCss : 'mysitestyles.css' }); // 使用skin變更佈景
CKFinder.SetupCKEditor( editor, '/ckfinder/' ) ;

2011年3月27日 星期日

網站使用 .htaccess 教學

將檔案命名為 .htaccess 放在 web 根目錄 , 放入後其web設定值 php.ini 將會以 .htaccess 為主

ERROR訊息開起
php.ini

display_errors = Off // on 或 off

.htaccess
php_flag display_errors off
php_flag html_errors off

設定檔案最大上傳大小
php.ini

upload_max_filesize = 2M

.htaccess

php_value upload_max_filesize 2M

2011年3月24日 星期四

尋找某字在字串中出現次數 RegExp

使用 RegExp 進行尋找
html

<textarea onchange="reg_find(this.value)" ></textarea>
<div id="info"></div>

javascript

<script>
function reg_find(val){
 var find_str = "a" ;
 var reg = new RegExp(find_str,"g");
 var result = val.match(reg);
 var count = (result)?result.length:0;
document.getElementById("info").innerHTML = "數量有:" + count + "個" ;
}
</script>

範列:查詢文字框 a 的數量


2011年3月20日 星期日

ckfiner 嵌入網頁

檔案管理使用 ckfiner 套件直接嵌入網頁畫面,而不在另開視窗動作
php

<?
//引用 ckfinder plug
include_once '/ckfinder/ckfinder.php';
$finder = new CKFinder() ;
//指定路徑
$finder->BasePath = '/ckfinder/' ;
// 顯示圖片為縮圖資料夾內的圖片
$finder->DisableThumbnailSelection = true ; // true / false
$finder->RememberLastFolder = true ; // true / false
// 設定預設開起路徑位置 , RememberLastFolder 需設false才會動作
$finder->StartupPath = 'Contract:/';
$finder->Create() ;
?>

javascript

<script type="text/javascript" src="/ckfinder/ckfinder.js"></script>
<script type="text/javascript">
var finder = new CKFinder();
//指定路徑
finder.BasePath = '/ckfinder/';
//指定顯示區塊
finder.Skin = 'ckfinder_basket';
finder.RememberLastFolder = false ;
finder.Create();
</script>
<div id='show_ckfinder' ><div>

2011年3月18日 星期五

元件開發 SQL 導入

xml code

<install> <!-- Runs on install -->
  <sql>
    <file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
  </sql>
</install>

測試後 install 的SQL檔案文件,需存成 utf8 格式,因預設格式中文字串會產生錯誤或空白字串 , charset 要設定utf8,讓文件使用 utf8 格式匯入資料庫

sql/install.mysql.utf8.sql

CREATE TABLE IF NOT EXISTS `#__helloworld` (
`id` int(11) NOT NULL auto_increment,
`greeting` varchar(25) NOT NULL default '' ,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ;

INSERT INTO `#__helloworld` (`greeting`) VALUES
('Hello World!'),
('Good bye World!'),
('測試文字');

資料庫表格名命規則:#__{自行定義名稱}
例:#__helloworld

2011年3月17日 星期四

outlook 錯誤代碼

參考網路上查詢出代碼

一般性錯誤
0x800C013E 可能是Folders.dbx 檔案屬性錯誤或損壞.
0x800CCC00 身份驗證(Authentication)未載入
0x800CCC01 認證(Certificate)內容錯誤
0x800CCC02 認證日期錯誤
0x800CCC03 使用者已聯機
0x800CCC05 未聯機到服務器
0x800CCC0A 郵線下載未完成
0x800CCC0B 服務器忙碌中
0x800CCC0D 找不到主機(檢查你的SMTP服務器是不是設錯)
0x800CCC0E 聯機到服務器失敗,無法與主機建立聯機。等一段時間再試。或者用ping 等網絡命令測試一下看看能否連的通服務器
0x800CCC0F 服務器結束聯機(對方服務器負荷過重、網絡傳輸壅塞易造成此現象,可以試著增加你聯機逾時的等候時間試試看,或是換一聯機品質較佳的ISP)
0x800CCC10 服務器無法辨認此郵件地址
0x800CCC11 服務器無法辨認的 Mailing list
0x800CCC12 無法傳送 Winsock request
0x800CCC13 無法接收 Winsock reply
0x800CCC14 無法起始 Winsock
0x800CCC15 無法開啟 Windows Socket
0x800CCC16 無法辨認使用者賬號,使用者賬號錯誤
0x800CCC17 使用者中斷操作
0x800CCC18 登入失敗

(例如:不需要安全密碼認證登入,但卻設了安全密碼認證登入)
0x800CCC19 作業逾時
0x800CCC1A 無法以 SSL 建立聯機
Winsock 錯誤
0x800CCC40 Network subsystem 無法使用
0x800CCC41 Windows Sockets 不支持此應用程序
0x800CCC43 Bad address.
0x800CCC44 Windows Sockets 無法加載
0x800CCC45 Operation now in progress..
SMTP 錯誤
0x800CCC60 不合法的回應
0x800CCC61 不明的錯誤代碼
0x800CCC62 收到語法錯誤
0x800CCC63 語法參數不正確
0x800CCC64 指令不完整
0x800CCC65 不正確的指令序列
0x800CCC66 指令不完整
0x800CCC67 沒有這個指令
0x800CCC68 郵件信箱被鎖住或忙碌中
0x800CCC69 找不到郵件信箱
0x800CCC6A 處理要求錯誤
0x800CCC6B 郵件信箱不在此服務器上
0x800CCC6C 已無空間儲存郵件
0x800CCC6D 已超過限制的儲存容量上限
0x800CCC6E 不合法的郵件信箱名稱
0x800CCC6F Transaction error,出現這訊息,可能是服務器不接受你的郵件,請跟你的ISP 聯絡。
0x800CCC78 不明的寄件者,或郵件回复(reply-to)地址不正確
0x800CCC79 收件者被服務器拒絕
Relay Denie d:Outlook Express 的SMTP 設定不正確,請使用提供你聯機服務的ISP公司之SMTP服務器來寄信,)
0x800CCC7A 沒有指定寄件者
0x800CCC7B 沒有指定收件者
POP3 錯誤
0x800CCC90 登入郵件服務器發生錯誤,檢查一下你是不是有使用該服務器的權限。或者:不需要安全密碼認證登入,但卻設了安全密碼認證登入
0x800CCC91 使用者名稱錯誤或找不到此使用者
0x800CCC92 賬號、密碼錯誤
0x800CCC93 無法解釋響應
0x800CCC94 需要指令
0x800CCC95 服務器上已無郵件
0x800CCC96 沒有郵件標記為要下載
0x800CCC97 Message ID 超出範圍
NNTP 錯誤
0x800CCCA0 新聞服務器響應錯誤,可能你沒有擁有可使用該服務器的權限。
0x800CCCA1 讀取新聞群組失敗
0x800CCCA2 要求服務器郵件清單失敗
0x800CCCA3 無法顯示清單
0x800CCCA4 無法開啟群組
0x800CCCA5 服務器無此群組
0x800CCCA6 郵件不在服務器上
0x800CCCA7 找不到件標題
0x800CCCA8 找不到郵件本文
0x800CCCA9 無法發佈到服務器上
0x800CCCAA 無法開啟下封郵件
0x800CCCAB 無法顯示日期
0x800CCCAC 無法顯示標題
0x800CCCAD 無法顯示 MIME 標題
0x800CCCAE 使用者名稱或密碼不正確
RAS 錯誤
0x800CCCC2 未安裝撥號網絡
0x800CCCC3 找不到撥號網絡
0x800CCCC4 撥號網絡錯誤
0x800CCCC5 Connectoid 壞或遺失
0x800CCCC6 取得撥號設定時錯誤
IMAP 錯誤
0x800CCCD1 登入失敗
0x800CCCD2 Message tagged
0x800CCCD3 Invalid response to request.
0x800CCCD4 語法錯誤
0x800CCCD5 不是 IMAP 服務器
0x800CCCD6 Buffer 已超過上限
0x800CCCD7 Recovery error
0x800CCCD8 數據不完整
0x800CCCD9 聯機被拒
0x800CCCDA 不明的回應
0x800CCCDB User ID 已更改
0x800CCCDC User ID 指令失敗
0x800CCCDD Unexpected disconnect
0x800CCCDE Invalid server state
0x800CCCDF 無法認證客戶端

2011年3月16日 星期三

判斷瀏覽器語系

判斷瀏覽器使用的語系 , 但測試後 , 判斷有些問題 , 問題在於 firefox 可設定優先語系 , 但其在取得語系資料時 , 無法判斷其優先順序 ORZ...
目前測試正確顯示方式為php , 可解決語系優先順序
javascript 語法

if (navigator.appName == 'Netscape')
  var language = window.navigator.language;
else
  var language = window.navigator.browserLanguage;
var hrefPage = "en/index.htm";

if (language.toLowerCase().indexOf('tw') > -1) hrefPage = "tw/"; //繁體中文
if (language.toLowerCase().indexOf('en') > -1) hrefPage = "en/"; //英文
if (language.toLowerCase().indexOf('ja') > -1) hrefPage = "ja/"; //日本
location.href = hrefPage ;

php 語法

$lang = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
$url = "tw/" ;
if( strpos( '.' .$lang[0] , 'tw' ) ) {
  $url = "tw/" ;
}else if ( strpos( '.' .$lang[0] , 'en' ) ) {
  $url = "en/" ;
}

echo '<script type="text/javascript">location.href = \''. $url. '\';</script>';

2011年3月10日 星期四

限定中文顯示字數

使用 mb_strimwidth 函式

mb_strimwidth({字串}, {開始位置}, {顯示字數}, {超出後出現顯示字串}, {文字編碼格式}) ;

範例

$str = "測試文字顯示";
$length = 4 ;
mb_strimwidth($string, 0, $length, '...', 'UTF-8');

latin1_swedish_ci 轉 utf8_general_ci

工作時在備份前人的資料,發現它的結構竟然是用 latin1_swedish_ci 的格式,一整個讓人... , 為了日後方便作業,解定將它轉成 utf-8 備份
前置作業
現很多都雲端管理資料庫,所以可能無法使用mysqldump 的指令,除你可用ssh 連入管理OS,但我沒有權限 ORZ..,所以只好找方法進行。
在資料雲使用 phpmyadmin 匯出資料 (匯出的格式為utf8),在本機端 phpmyadmin匯入,匯入時需選文字編碼檔案格式為 latin1,匯入後本機端就可以進行 mysqldump

備份方式1 -- 使用phpmyadmin
1. 到 phpmyadmin 修改 phpMyAdmin/libraries/select_lang.lib.php 檔案

尋找 $mysql_charset_map = array 陣列 , 將
'utf-8' => 'utf8', 變更為 'utf-8' => 'latin1' ,

2. 至 phpmyadmin 匯出檔案 , 匯出檔案會使用 latin1 格式匯出
3. 使用文字編輯器開起後,使用全部取代

CHARSET=latin1 取代為 CHARSET=utf8

4. SQL 存檔格式記得要變更為 utf8

備份方式 2 -- 使用指令mysqldump
1. cmd 指令, 進入到 mysql/bin 底下
2. 備份SQL

平日備份方式
mysqldump -u{帳戶} -p {資料庫} > {備份檔名}.sql

範列:
mysqldump -uroot -p datebase > db.sql
以上是未處理格式的備份方式,所以備份出的格式看latin1會有亂碼,寫出來只是為了看平常如何用mysqldump備份



轉編碼格式備份方式
mysqldump -u{帳戶} -p --default_character-set={原編碼格式} --skip-set-charset {資料庫} > {備份檔名}.sql

範列:
mysqldump -uroot -p --default_character-set=latin1 --skip-set-charset datebase > db.sql
匯出後直接為 utf8 格式


匯入方式,目前未試出最完美的方式,因有一些資料紀錄的編碼會有其它的編碼格式,所以在編輯器會發現它是以亂碼的方式顯示,所以只好在編輯器內刪除無法匯入的紀錄,在進行匯入的動作

中華家用電話自動轉接

家用電話設定立即轉接功能,需在需轉接電話上設定,如果想從另一台電話設定,需加入中華電話申請時預設密碼,為指定轉接+密碼。
請注意轉接+密碼3次錯誤會被鎖碼,就要臨櫃辦理解碼囉!

中華設定說明頁

電話轉接

指定轉接
*77欲轉接之電話號碼#
取消轉接
#77#

遠端轉接

指定轉接+密碼
*97*密碼*欲轉接之電話號碼#
取消
#97*密碼#

background 屬性

背景透明化

body {background:transparent;}


背景圖固定最上層

body {background-attachment: fixed;
background-image: url("bk.jpg");
background-repeat: no-repeat;
}


背景圖位移
在 position 控制值分別為 {上下} {左右} ,
可用 center 或 50px 等控制顯示方式
方式 1

body { background-image: url("bk.jpg");
background-repeat: no-repeat;
background-position: center center;
}

方式 2

body{background:url(bk.jpg) 5px 10px no-repeat; }

2011年3月9日 星期三

JS 小數點取兩位

使用 onkeyup 強制限定,超出位數會自己清除

onkeyup="this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3')"

中華行動費率電話變更

手機直播『 318+發送鍵 』即可進入語音變更
emome 費率查詢

android 開發環境準備工作

開發環境
1. 安裝 java JDK
2. 下載 android SDK 套件
3. 開發軟體  Eclipse  (本人用Eclipse  3.6 )

android SDK 準備工作
WIN 系統
1. 執行 SDK Manager.exe
2. 選擇 installed packages 執行線上 install 動作
3. Virtual devices 為設定 android 虛擬機器的模擬器

Eclipse 準備工作
android 官方安裝說明文件

請注意 3.5 版 和 3.4 版 download位置不一樣
-- 3.5 or up --
1. Help -> Install New Software
2. Add 輸入下載位置 , 名稱任意輸入 ADK

https://dl-ssl.google.com/android/eclipse/

(如果https無法下載可變更為http )

3. select all -> Next
開始安裝

4. 安裝完成後 File -> New 就會出現 Android Project 選項

5. 選擇引用 android SDK,無引用的話 Build Target 將無法選擇開發版本,

Window -> Preferences -> Android -> SDK Location
SDK Location 的位置指到本機端 Android SDK存放目錄,在點Apply即設定完成


6. 進行專案開發 Android Project , 注意 Package name 的命名一定要 com. 開頭哦

Eclipse 錯誤訊息
1. Project name must be specified
未選擇 Android SDK 引用位置
處理方式

Eclipse 準備工作 -> 5項

2. An SDK Target must be specified.
Build Target 未選擇

3. Package name must have at least two identifiers.
Package name的命名錯誤

命名規則
com.{檔名}
範例
com.hollword

4.The API level for the selected SDK target does not match the Min SDK Version.
Min SDK Version 資料格式錯誤
專案建立中

Min SDK Version為SDK 的版本,輸入參考依API Level顯示數字,例:選擇版本為 Android 3.0 其輸入資料為 11

專案建立後

如果專案建立完成,但需修改版本錯誤,可至AndroidManifest.xml修改
1. 點 Manifest ExtrasU 選項
2. 點 Uses Sdk 出現 Attributes for Uses Sdk
3. 將 Min SDK version 變更你要的 API Level , Ctrl+S 存檔

2011年3月8日 星期二

JS 鎖右鍵

網路上找到的方式
方式 1 ( ie . firefox 適用 )

/*
Copyright by Audi 2006
http://audi.tw
http://www.carousel.com.tw
歡迎應用於無償用途散播,並請勿移除本版權宣告
*/

var omitformtags=["input", "textarea", "select"];
function disableselect(e)
{
for (i = 0; i < omitformtags.length; i++)
{
if (omitformtags[i]==(e.target.tagName.toLowerCase()))
return;
}
return false;
}
function reEnable()
{
return true
}

document.write('<div style="position:absolute;visibility:visible;top:-3000px;left:-3000px;"><form name="_hiddenFrom"><input type="text" value="Ctrl-A Error !" name="_hiddenText"></form></div>');
if (typeof document.onselectstart=="undefined")
{
document.onmousedown=disableselect;
document.onmouseup=reEnable;
}
else
{
document.onmousedown=new Function("return false");
document.onmouseup=new Function("return false");
}
document.onselectstart=new Function("return false");
document.onselect=new Function("return false");
document.oncontextmenu=new Function("return false");
document.onload=document._hiddenFrom._hiddenText.focus();

2011年3月4日 星期五

radiobox . checkbox 運用方式

radio box說明:

取出 radio box 選中值

$("input[name='items[]']:checked").val();

設定 radio box 值

$("input[name='items[]']").get(1).checked = true;

radio box html code

<form name="radio_form" >
  <input type="radio" id="items1" name="items[]" value="1" />1
  <input type="radio" id="items2" name="items[]" value="2" />2
  <input type="radio" id="items3" name="items[]" value="3" />3
</form>


check box說明:

全選.取消全選 check box

//全選
$("#clickAll").click(function(){
  $("#clickAllcanel").attr("checked",false);
  if($("#clickAll").attr("checked")){
    $("input[name='items[]']").each(function() {
      $(this).attr("checked", true);
    });
  }
});
//取消全選
$("#clickAllcanel").click(function(){
  $("#clickAll").attr("checked",false);
  if($("#clickAllcanel").attr("checked")){
     $("input[name='items[]']").each(function() {
       $(this).attr("checked", false);
    });
  }
});

check box html code

<form name="check_box">
  <input id="clickAll" type="checkbox"> 全選
  <input id="clickAllcanel" type="checkbox"> 取消全選
  <input id="items1" name="items[]" type="checkbox" value="1" />
  <input id="items2" name="items[]" type="checkbox" value="2" />
  <input id="items3" name="items[]" type="checkbox" value="3" />
</form>

2011年3月3日 星期四

Google Blog 標記Code 顯示方式

google 的編輯器無特別針對code的地方做標計的動作 ,我們可自已在設計加入 css 語法
設定code 顯示區域

<head> 中加入 css 語法</head>

CODE { display: block; /* fixes a strange ie margin bug */ font-family: Courier New; font-size: 8pt; overflow:auto; background: #f0f0f0 url(http://klcintw.images.googlepages.com/Code_BG.gif) left top repeat-y; border: 1px solid #ccc; padding: 10px 10px 10px 21px; max-height:200px; line-height: 1.2em; }


編輯文章使用方式


<code>
-- code 內容 --
</code>

table 表格框線

使用 table border 的框線無法表現出細框的效果,可加入css語法
css語法

table {
border: 1px solid #000;
border-collapse: collapse;
}
tr, td {
border: 1px solid #000;
}


顯示範列
1 2 3
4 5 6

hinet smtp

hinet net 用戶可用 smtp
msa.hinet.net
設定在smtp 即可發信

css - 文字 分散對齊

html 想做出 Doc 分散對齊效果 for ie

css 語法

.justify{
text-align: justify;
text-justify :inter-ideograph;
width:200px;
border:1px solid #CCCCCC;
padding:5px;
}




顯示效果
測試文章
文測試文測試文章
測試文章

lightbox

版本限定
jquery 版本限定 1.4 or heigh

引用
jquery1.5.1 .

使用範例

$(function(){
$(".open").colorbox();
});