發表文章

目前顯示的是 2012的文章

利用 google 取得經緯度

根據標準google推出的做法,我們需要串接
http://maps.googleapis.com/maps/api/geocode/json?address=地址
這支API ,不過這支API是有限制使用量的
最近遇到一個問題就是我要批次轉換地址和經緯度,結果就被封鎖起來了

現在這個問題有解決方案了,亂逛亂逛的結果讓我找到另一支隱藏的API。(正確來源我也不知道打哪來的),順手就寫成一個 function 備用吧!


下面的兩個 function 需要同時使用,因為getLatLng會需要用到object_2_array這個函式
function getLatLng($address) { // $address = urlencode($address); $url = 'http://maps.google.com/maps/geo?q='.$address.''; $curl = curl_init() ; curl_setopt($curl , CURLOPT_URL , "$url") ; curl_setopt($curl , CURLOPT_RETURNTRANSFER , 1) ; $info = curl_exec($curl) ; curl_close($curl) ; // print_r($info); $a = json_decode($info); $b = object_2_array($a->Placemark); $c = object_2_array($b[0]->ExtendedData); $d = object_2_array($c['LatLonBox']); // $b = $a->results[0]; // print_r($d); $r['lat'] = $d['north']; $r['lng'] = $d['east']; if($r['lat…

systemctl 來了 Fedora15 之後的服務管理方式

之前我都是用Fedora 13的機器,習慣使用service httpd restart這種指令。但是今天拿到一台Fedora 17的時候卻失靈了。

原因是因為在Fedora15 之後,systemd替代掉了原先的服務管理方式。原先的指令:

service httpd restart 改為
systemctl restart httpd.service 他這樣改應該是有它的用意吧(變長了~好累)

參考說明:
http://forum.icst.org.tw/phpbb/viewtopic.php?f=16&t=20837

利用JavaScript 傳送POST表單

當我們在提交資料的時候都會使用form來傳遞相關需要的資料給下一個頁面,通常如果接收端沒有限定的話,我們要傳遞同時跳轉時也可以用$_GET的方式進行。也就是直接寫在網址上面帶參數。

但是在某些安全性有顧慮的服務,例如金流,通常都會要求必須要使用POST的方式傳遞。而$_POST的方式不像$_GET一樣可以直接在連結上面使用。這時就必須要用JavaScript 自動丟出表單的方式了。

其實這個動作很簡單:只要在中加入

form.submit(); 這樣就可以了,不過網路慢的環境還是會看到一個跳轉的頁面,所以有心的人可以在裡面做個轉場或是讀取中的動畫也可以喔!

php 取得圖片資訊 getimagesize

取得圖片資訊 getimagesize

getimagesize("http://www.acde.com.tw/images/works/2_pic2.png"); getimagesize不需要安裝GD函式庫就可以使用,如上範例指令執行的結果會取回一個陣列型態的資料
Array ( [0] => 640
[1] => 422
[2] => 3
[3] => width="640" height="422"
[bits] => 8
[mime] => image/png ) 其中:[0]->寬度,[1]->高度,[2]->檔案的型態,[3]->寬度和高度,[4]->圖檔位元(和檔案大小無關),[mime]->圖檔的nime(類似檔案的header宣告檔案型態的資訊)。
比較特別的是[2]->檔案的型態的部分,會對應以下的副檔名型態:
1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM 利用getimagesize就可以抓到圖檔的尺寸和規格啦

資料來源:
http://tw1.php.net/manual/zh/function.getimagesize.php

google API 製作線上圖表就是這麼容易

圖片
很久以前其實google就已經推出API可以製作圖表了
不過最近重新再檢視一次的時候忽然發現完全不同了呢

早期的方式是會回傳一個png圖檔給我們顯示,雖然方便但是美中不足的是只能顯示靜態圖檔。
現在google推出的Google Chart Tools 採用JavaScript的方式操作,圖表上面可以出現動態效果!實在是太優秀了。

Google Chart Tools 官方網站
https://developers.google.com/chart/?hl=zh-TW

範例檢視
https://developers.google.com/chart/interactive/docs/examples?hl=zh-TW


當然,像是Google這麼專業的線上API團隊,線上的直接編輯測試環境是免不了的啦!
http://code.google.com/apis/ajax/playground/?type=visualization

jQuery解析遠端JSON資料

我們在使用一些後端伺服器運算和前端的頁面溝通時,通常會用JSON或是XML作為交換的格式。

在網路上面可以找到很多jQuery可以解析JSON格式的方法,也就是使用$.getJSON函式。
不過有一件很重要的事情,如果是在同一個網域的環境中可以直接調用檔案名稱和參數

$(document).ready(function(){ $.getJSON("social.php", function(data){ alert(data.social.social_qty.like); }) }); 如上面的範例所示,我們只要設定social.php的JSON內容丟到function(data)中再一路解析下面的節點就可以了
但是如果說API的路徑在遠端呢?
這時候你會發現這樣怎麼執行都沒有反應,因為要使用遠端的JSON是要先在SERVER端宣告的
我們要先在SERVER端設定 if($_GET["callback"] != ""){ echo $_GET["callback"].'('.urldecode(json_encode($social_arr)).')'; }else{ echo urldecode(json_encode($social_arr)); 這是說如果收到$_GET["callback"]時,就用一個$_GET["callback"](json內容)包住,接下來在jQuery的設定也要改成 $(document).ready(function(){ $.getJSON("http://www.app6.sdt.net.tw/api/social.php?act=do&type=like&id=totem.james@gmail.com&workItem=1&format=json&callback=?", function(data){ …

php 快速解析中央氣象局一周預報

圖片
當我們要在網路上面顯示氣象資料時,通常我們第一時間會想到google的API資料
不過最近發生了一件事情

We're sorry...

... but your computer or network may be sending automated queries. To protect our users, we can't process your request right now.
See Google Help for more information.

是的!google把我判定成利用自動方式拜訪的...是的!我是!...
所以我已經被封鎖不能用了

怎麼辦呢?

不要忘記~其實我們還有中央氣象局。
於是花了點時間來處理一下,寫一個函式來抓取中央氣象局的各地區一周預報網站資料。現在把這個東西放上google code上需要的人請自取。

http://code.google.com/p/central-weather-bureau/

原理就不贅述了

使用方式:
直接使用 getWeather ($city)函式,而$city就是中央氣象局網站上的各個城市的檔名。
請參照這頁
http://www.cwb.gov.tw/V7/forecast/taiwan/Taipei_City.htm
看到這個連結嗎?Taipei_City就是$city。

這個函式會回傳一周天氣陣列
包含了
date:日期
temperature:溫度
title:天氣狀態
img:天氣圖檔

需要注意的一件事情是...這裡面不包含今天的天氣。所以是由明天開始的七天資料喔!

然後我們就可以簡單的製作出

中央氣象局各地區一周預報函式下載路徑:
http://code.google.com/p/central-weather-bureau/

Android 取得唯一碼 ANDROID_ID

圖片
Android 中有提供一個指令可取得唯一碼Android_id

String AndroidID = Secure.getString(getContentResolver(),Secure.ANDROID_ID); 不過要記得要import
import android.provider.Settings.Secure;

Android入門 - 發布APK檔案到Play商店上

圖片
開發完成的Android軟體檔案我們會封裝成apk檔讓Android可以進行安裝,同時需要上傳到Android play市集上提供給使用者下載。

當然,你也可以選擇不上傳到Play上,而是自己提供載點也是可以的,這點Android倒是沒有像iOS一樣有那麼嚴格的要求。

不過我們這篇還是預設是要上傳到Google play分享的

Step1.申請Google Play開發者帳號:
開發者帳號請在https://play.google.com/apps/publish/signup申請,就如同畫面指示地進行填寫一下子就可以申請完成。不過開發者帳號需要支付25美金的費用喔!
因此在填寫完畢以後,google會要求你付費,同時註冊google checkout服務。當然如果你本來帳號就有開啟google checkout就最方便啦!
Step2.上傳apk檔 付完款後馬上就可以上傳APK檔案了,只需要兩個步驟1.上傳APK檔,2.填寫相關資料(play上面要顯示的)送出後就可以審核了,基本上google play目前的審核非常的寬鬆,小灰狼的第一支程式丟上去默默地兩個小時內就通過發布了。


在進行這個動作的時候有一點需要特別注意,就是我們在Eclipse中編輯時產生的apk檔是不能用的,雖然我們自己丟到手機裡面可以安裝,但是Google Play為了確認你不是盜用別人的程式來上傳的,所以在裡面會有所謂的金鑰。必須要用匯出的方式才可以產生,(所以如果沒有要經過Play其實就不用擔心)。



APK檔案包含金鑰的匯出方式: 在專案名稱上按右鍵選擇 Android Tools->Export Signed Application Packege  然後請照著填寫
用這個步驟匯出的apk才能上傳到Play商店喔

參考: Android Market


Android入門 - 建立我的第一個Android專案

圖片
假設我們已經完成 Eclipse 的 Android 環境設定了,那麼本篇要來講一下建立一個專案的動作啦!

Step1.建立Android專案


Step2.填寫專案相關資料 這個步驟會需要輸入Project Name ,需要注意的是只能是英文喔(這個名稱也會變成專案資料夾的名稱)可以大小寫混用。 接下來就要選擇最低支援的Android版本,以目前的情況來看我都選2.3.3這個版本比較普遍(據說接下來4.x會是大宗)。
接下來這個步驟Application name是應用程式的標題名稱(顯示在手機桌面上的那個)這個就可以用中文啦
Package name:這個是這支Java程式套件的名稱。是以域名的方式表示,也就是中間以半形句點(.)間隔。注意喔!只能是小寫英文!!!!
接下來就完成啦

PS.由於Eclipse版本不斷地在更新,所以步驟有可能會有點不一樣。不過欄位的標題名稱都一樣啦!

參考來源 [Android 教學] Android 開發環境建置教學 & Android 模擬器安裝教學課程講義 (For Eclipse IDE)

幫你的Linux 瘦身 移除桌面環境 GNOME KDE

話說
雲端伺服器的空間是永遠不夠用的~~因為我塞了太多東西上去嗎?
除了一些tmp檔案 或是 log檔案可以清掉以外,其實我們還可以把預設的軟體套件給幹掉

例如Linux的X-window介面 GNOME和KDE等。當我們可以使用遠端SSH的時候其實就不太常用到它了,甚至大部分的狀況可以說是用不到,但是他卻預設安裝而且還占掉不少空間

我們可以用下面的動作進行移除

移除GNOME yum groupremove "GNOME Desktop Environment" 移除KDE yum groupremove "KDE (K Desktop Environment)" 這樣就可以把"相關的"通通一掃而空(包含一些桌面才有可能會用到的軟體例如office之類的)
如果有一天很不幸的要桌面怎辦 安裝GNOME yum groupinstall "GNOME Desktop Environment" 安裝KDE yum groupinstall "KDE (K Desktop Environment)"
移除的時候建議把GNOME KDE都移掉,但是安裝的時候其實只要安裝一個就好了
安裝完重新開機就行了。

Linux 下的 zip 指令

通常我們在linux上要打包檔案都會建議用tar
但是如果說我們想要用zip也是可以的喔

最基本的作法就是在指令列上輸入:

zip 參數 封裝後檔名.zip 封裝路徑
而我們最常用到的參數就是-r了,和其他大部分的指令相同,r代表下面所有的子目錄都要操作。

而解壓縮的指令如下:

unzip 參數 檔名.zip

linux上使用vnc-server進行遠端桌面遙控

通常我們再針對遠端linux控制管理的時候都會使用pietty這種軟體做ssh的指令控制,雖然速度快又方便但是有一個缺點:沒有桌面環境,當我們要用到非要在這台機器上看到的網頁時就會變成一件非常困擾的事情。 在windows上面我們常常使用 遠端桌面服務或是VNC進行遠端桌面遙控。
而遠端的linux機器呢?
其實還是有vnc服務可以用
在fedora中我們只要用yum安裝vnc-server這個套件就行了。

step1.安裝

yum -y install vnc-server step2.設定可以使用的使用者和port
設定檔在:vim /etc/sysconfig/vncservers
VNCSERVERS="100:root" # 設定 user1 的VNC
VNCSERVERARGS[100]="-geometry 1024x768" # 指定解析度
上面的VNCSERVERS 表示 編號100的使用者root允許進入,而100這個數字同時也表示vnc客戶端連入的時候使用的port。但是連入的port並不是100而是5900這個預設port+100也就是6000啦
而VNCSERVERARGS[100]這一行則是設定這個root用戶連入的環境項目。
step3.設定使用者密碼:
離開vim以後,在指令模式下輸入vncpasswd就可以設定vnc客戶端登入的密碼了。需要注意的是,登入帳號需要是系統用戶名單有的帳號,但是密碼卻不需要是這個帳號本來的密碼,設定完成後vnc的密碼也不會去影響本機使用者的密碼。


step4.關閉防火牆&啟動VNC-SERVER service iptables stop service vncservice restart 當然你如果在iptables上已經把這個要連線的port打開了,那麼當然就不需要特別關掉防火牆啦!

FaceBook 應用程式開發 取消FaceBook應用程式授權

圖片
我們在建立FaceBook應用程式開發的時候,還有設定外部網站授權驗證的時候都會遇到要反覆測試的問題。但是我們又進不了FB的資料庫刪除我們的帳號,這該怎麼辦呢?重新申請一個FB帳號吧!

不要害怕!沒那麼可怕。我們只要去取消應用程式的授權就好啦。

這個功能不是單純開放給工程師用的,任何一個覺得自己莫名其妙被授權很多有的沒的應用程式的人都可以使用。



1.在自己的帳號頁面右上角找到隱私設定

2. 選取廣告、應用程式及轉貼後面的編輯設定

3.找到你要修正的應用程式名稱,滑鼠移過去會出現一枝筆,點下去

4.移除掉

完成以後FaceBook就會取消你和這個應用程式的任何關係啦!

FaceBook 應用程式開發 外部網站的共通會員驗證 Oauth2.0

FaceBook在最近這幾年已經採用Oauth2.0的認證方式了,這個方式可以讓其他外部網站也能存取使用者的資料,讓使用者可以減少會員註冊的手續,只要有一個FB的帳號就可以通行很多地方,他的概念跟多年前的OpenID很像,只是他很剛好的不在OpenID的清單中。

在開始實作之前,我們必須要先取得FaceBook的應用程式帳號,這個部份我在前一篇文章有介紹過,就不再說明了。
接下來的部分都是在我們自己的網站上面要建立的程式碼,需要注意的是,因為FB在驗證的時候會跟網域有關,因此無法在本機上面使用。
1.設定必備的變數
$app_id = "應用程式ID/API 鑰匙"; $app_secret = "應用程式密鑰"; $my_url = "API返回的網址"; 其中上面提到的app_id和app_secrect請在開發者工具的應用程式中尋找,詳情請見上篇FaceBook 應用程式開發 - 建立FB應用程式 2.驗證登入狀態和送出驗證
session_start(); $code = $_REQUEST["code"]; if(empty($code)) { $_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection $dialog_url = "https://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url) . "&state=" . $_SESSION['state'].'&scope=user_birthday,email'; echo("<script> top.location.href='" . $dialog_url . "'</script>"); } 這一段的作用其實簡單的說就是判斷…

FaceBook 應用程式開發 - 建立FB應用程式

圖片
到現在還是有很多公司想要使用FB的應用程式API作網站的會員系統。所以我們還是來介紹一下吧! 目前為止(2012/07)FaceBook的會員登入API已經正式採用OAuth2.0了。我們可以在FB的開發者工具中找到 不過重點是我們要先建立一個FB的應用程式,請注意!不是粉絲團喔!我們如果要使用FaceBook的API請記得要申請的是應用程式,粉絲團本身是不提供API服務的。 所以我們先來研究一下怎麼建立一個FaceBook的應用程式吧!





在facebook的畫面最下方找到"開發人員"




在開發人員頁面上方選擇"應用程式"

點選建立新應用程式後會出現一個彈出視窗,請輸入以下內容 App Name 必填,就是你的應用程式名稱,其他的可以選擇不要填寫沒有關係。
申請完成後你會看到以下的畫面:
其中"應用程式ID/API 鑰匙"和"應用程式密鑰"這兩個參數是最重要的,也是之後我們和API交換資料時會驗證最主要的鑰匙,要記好喔!

如果我們的成是不是放在FaceBook底下,那麼你必須要去打開許可的網域名稱,否則到時候驗證也是不會通過的。 這時我們就要在剛剛申請完成的畫面右邊找到"編輯設定",有兩個項目是依定要填寫的。 App Domains和Website with Facebook Login
接下來就可以開始使用FaceBook API 搂

相關連結: FaceBook 開發者工具FaceBook Oauth2.0 FaceBook 應用程式開發 外部網站的共通會員驗證 Oauth2.0



Linux 執行 php 檔案

php 除了可以拿來寫網頁以外還可以拿來做很多Linux上的控制,
通常沒有意外的話只要在指令列上輸入:
php 執行檔案的路徑

php /var/www/html/do_this.php 這樣的指令就可以直接執行這個檔案中的內容,但是僅限於本次連線狀態時使用,當你登出後指令也會隨之關閉。


如果我們需要讓指令在背景執行,即便是在關閉視窗後也不會中斷就要在前面再加上 nohup nohup php /var/www/html/do_this.php

工商服務時間:「砌與器」特展

圖片
「砌與器」特展官方網站
又到了工商服務時間了,2012建築家創意設計展開始報名摟


官方網站暫時先只有報名的資訊和報名表下載,為什麼呢?
因為我還沒做完,不過有興趣報名的可以去看看瞜
「砌與器」特展官方網站

jQuery 上下左右鍵盤控制事件

jQuery中,偵測鍵盤行為的指令如下:

keydown()  按下時觸發keyup()  彈起來觸發keypress()  敲擊觸發

我們應付不同的鍵盤動作可以用switch的方式分別給指令

$(window).keydown(function(event){
  switch(event.keyCode) {

  }
});   其中,event.keyCode是鍵盤的ASCII碼,因為我暫時只用到上下左右而已所以先貼出上下左右的ASCII碼


上:38下:40左:37右:39 例如: $(document).ready(function(){ $(window).keydown(function(event){ switch(event.keyCode) { case 38: alert("top"); break; case 40: alert("down"); break; case 37: alert("left"); break; case 39: alert("right"); break; } }); });

相關連結:
ACSII對照表

Linux 硬碟爆滿清理

LINUX滿了要怎麼辦?
最簡單的想法一定是去清理 /var/log 這個資料夾
不過久了以後發現清了以後還有東西 找了半天發現原來還有 /var/spool/clientmqueue 這個資料夾 是cron用來將執行結果寄送給管理者的資料,當我們沒有特別設定寄送資料或是資料無法寄出就會存在這裡,然後就滿了



另外我們可以用
du --exclude="proc" | sort -g -r | head 查詢到有那些東西是佔用了大部分的空間

PHP排除陣列中重複的值

在MYSQL中我們如果要排除重複的值可以用group by的動作進行收攏的動作,在array陣列中也可以進行同樣的行為。只需要把原本的陣列丟入到array_unique()這個函數就可以摟!

$w2 = array_unique($w2); 這樣就可以輕鬆的把陣列重新寫成不重複的數組摟!

Linux 中安裝 php-zip 模組

圖片
php-zip模組在phpexcel這個功能套件中是屬於必要的項目,但是很不幸的,這個東西沒辦法直接用yum來安裝。
這個時候google一下大部分的都會教你自己下載package安裝。不過這個對於我們來說實在是太麻煩了~因為還要自己編譯。
翻了一個晚上以後終於找到有趣的方法了
用PECL的方式安裝
步驟1.
yum -y install pcre-devel gcc zlib zlib-devel 步驟2.
pecl install zip 快好了~~步驟3.
請在php.ini中加上
extension_dir= "./usr/lib/php/modules/";
extension=zip.so; 其中extension_dir的路徑其實在執行完步驟2之後就會有訊息提示你摟
最後:
service httpd restart

成功以後phpinfo()會多出這個:

參考文章: Install zip module php-zip on Fedora 16 在 Fedora 13 安裝 pecl! linux下安装php zip模块(不用重新编译PHP)


解決PHP JSON 中文亂碼的問題

圖片
通常我們在和其他廠商串接資料時的API除了使用XML製作外,JSON格式也是一個選項。
小灰狼通常會用XML作為API的介質,不過總是會遇到例外。

在PHP中要將資料轉換成JSON格式只需要用json_encode這個函示就可以搞定。
$arr = array('a'=>'小灰狼');
echo json_encode($arr); 不過,有趣的是,PHP中若是把中文做json_encode會變成亂碼。當然這也是有解藥的(不然我寫這個幹嘛)
$arr = urlencode(array('a'=>'小灰狼'));
echo urldecode(json_encode($arr)); 這個原理很簡單,因為只有中文會讓json_encode出現亂碼,那麼我們先用urlencode讓字串不會有中文,當被編碼後的字串被JSON處理過後,再利用urldecode將剛剛的字串轉回來。

參考資料:

PHP 输出中文 JSON 字符串

減少MySql的sleep執行序

最近網站忽然變得很慢
我看單純不要使用MySQL的頁面其實不慢 網站的傳輸量也沒有很大
這時候忽然想到會不會是MySQL的執行序滿了

在檢查MySQL的連線狀態時發現累積了大量的sleep狀態連線,那麼我們就來動點小手腳來釋放掉它們吧!

一般而言如果沒有特別去設定那麼一條MySQL連線的中斷時間為
wait_timeout=28800
換算一下:28800/60 = 480分鐘  480/60 = 8小時 (幹嘛那麼久)


所以我們來設定一下
在指令列中輸入

vi /etc/my.cnf 來編輯一下MySQL的設定檔在[mysqld]區塊中加入wait_timeout=想要設定的數值,存檔後離開。
最後記得重新啟動mysqld 服務就可以了

Linux 即時網路流量監控 iftop

很多時候我們會需要知道網路到底有哪些人連線進來,這個時候我們就需要iftop這個指令。
不過這不是預設就會安裝的,這時候我們就要自己安裝啦!所幸這個套件只需要用yum就可以安裝了。

安裝iftop

yum install flex byacc libpcap ncurses ncurses-devel
安裝完以後我們可以用最簡單的方式來看看每個流入流出的訊號
iftop -i eth0 上面的是最基本的語法,他可以讓你看到eth0這張網卡的流入流出狀態,不過我本人比較喜歡同時顯示PORT這樣我可以更容易的知道別人是怎麼流進來的
iftop -P -i eth0 還有更多的功能請直接看一下 iftop --help 看看說明吧


參考網站
Linux流量监控工具 - iftop (最全面的iftop教程)

jQuery 表單驗證套件 Jquery Validate

jQuery 的輸入表單驗證套件目前用起來覺得最簡單也最乾淨的就是這套了

Jquery Validate
官網下載

下載完成後會有很多東西,不過最簡單的使用看起來只需要用到這兩個檔案

jquery.jsjquery.validate,js

使用方式
step 1.載入js檔案
jquery.js
jquery.validate,js
step 2.設定表單啟用,假設表單設為id=form
$(document).ready(function() { $("#form").validate(); }); 接下來只要在input的class中放上各種預設的設置就可以了




預設配置
required:必填欄位 email:格式要符合E-Mail格式 url:格式要符合網址格式,如:http://www.minwt.com number:數字格包含小數點 digits:數字為正整數 date:日期格式 dataISO:日期格式,格式必需為YYYY/MM/DD、YYYY-MM-DD、YYYYMMDD equalTo:與某一欄位值相同 minValue:最小字元長度 maxValue:最大字元長度 rangeValue:字元長度區間長度 minLength:最小字元長度(漢字算一個字符) maxLength:最大字元長度(漢字算一個字符) rangeLength:字元長度區間長度(漢字算一個字符)
參考資料:
jQuery教學-jQuery.validate萬用表單驗證元件直接套用
Jquery Validate 驗證中文字

PHPExcel 用PHP匯出成EXCEL

圖片
很多的客戶給他查詢後台還不夠,它們還想要excel的檔案
雖然到現在我還是不懂為什麼,不過既然都有這樣的需求了那我們就來做吧

PHPExcel 就是一個這樣的套件,他支援excel5,excel2003(xls),excel2007(xlsx),csv等等格式

先講一下動作的原理吧
1.載入元件庫
include "Classes/PHPExcel.php"; require_once "Classes/PHPExcel.php"; require_once "Classes/PHPExcel/IOFactory.php"; $objPHPExcel = new PHPExcel(); $objPHPExcel->setActiveSheetIndex(0);
2.設定每一個值的座標
$objPHPExcel->getActiveSheet()->setCellValue('A1','中文'); $objPHPExcel->getActiveSheet()->setCellValue('B2','許'); $objPHPExcel->getActiveSheet()->setCellValue('C3','test3'); $objPHPExcel->getActiveSheet()->setCellValue('D3','test4');
3.存檔
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('test.xlsx');
上面的範例是最簡單的做法,PHPExcel有更多的設定參數可以使用可以讓你做出來的Excel變得很複雜和多樣化
不過我不打算要讓事情變得這麼複雜所以這樣就好啦


附記:
要使用這個套件php環境必須要有

php_zipphp_xmlphp_xmlrpc
php_xml和php_xmlrpc只要用yum install …

台灣縣市合併後的新版行政區php陣列

這個東西其實就不是個教學,只是有用到順便筆記一下
就當作是懶人包吧


$block_arr[]['name'] = '臺北市'; $block_arr[]['name'] = '新北市'; $block_arr[]['name'] = '臺中市'; $block_arr[]['name'] = '臺南市'; $block_arr[]['name'] = '高雄市'; $block_arr[]['name'] = '基隆市'; $block_arr[]['name'] = '嘉義市'; $block_arr[]['name'] = '桃園縣'; $block_arr[]['name'] = '新竹縣'; $block_arr[]['name'] = '苗栗縣'; $block_arr[]['name'] = '彰化縣'; $block_arr[]['name'] = '南投縣'; $block_arr[]['name'] = '雲林縣'; $block_arr[]['name'] = '嘉義縣'; $block_arr[]['name'] = '屏東縣'; $block_arr[]['name'] = '宜蘭縣'; $block_arr[]['name'] = '花蓮縣'; $block_arr[]['name'] = '台東縣'; $block_arr[]['name'] = '澎湖縣'; $block_arr[]['name'] = '連江縣'; 這個陣列只要再經過foreach處理一下就可以做出簡單的下拉選單啦

Rewrite ! 修改網址的URL 入門

我們在做動態網站的時候,通常都會利用GET的方式來將一些參數交給頁面處理,我們的網址中就會多出很多的=&等這些符號,如果我們並不想要讓使用者看到這個樣子呢?我們就可以用rewrite的方式來把網址做個改寫的動作。

首先,我們要在網站的根目錄製作一個 .htaccess 檔案,這個檔案中輸入 RewriteEngine On 這段文字是告訴這個網站要啟用改寫網址的引擎 RewriteEngine
下面的例子就要實作最基礎的網址改寫 RewriteEngine On
RewriteRule ^([0-9A-Za-z]+)_([0-9A-Za-z]+)$ index.php?id=$1&name=$2 第一行解釋過了,就是開啟rewrite
RewriteRule就是要改寫的規則,表示方式如下:
RewriteRule (第一個變數的規則)_(第二個變數的規則)$ 舊的規則
在舊的規則中,我們會看到$1和$2,就是用來套用到每一組變數規則,也就是說id這個參數會被套用到第一個規則name會被套用到第二個規則中。 第一個變數規則和第二個變數規則的兩個括號()_()中有包夾一個底線_
這是用來分隔兩個變數的分隔符號,我們可以自訂各種符號作為分隔例如:/_等都可以喔 原先的網址如果是
http://127.0.0.1/index.php?id=1&name=jameswolf

就會被改寫成
http://127.0.0.1/1_jameswolf 這樣php在讀取$_GET['id']就會是1,$_GET['name']則會是jameswolf

這樣可以讓網站多人使用的情況下看起來會好像幫每個人建立自己的資料夾。試試看吧!



相關網站:
http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_rewrite.html

php 撰寫 xml格式

我們在製作網站的時候如果有要和其他的介面串接,最常使用的方式就是用xml的格式。
不過我們要製作XML格式的檔案時,因為產生的副檔名一樣都是.php,所以大部分的瀏覽器都只會把它當作有XML內容的網頁,雖然對方"應該"也是可以正常解析,但是不太適合閱讀。

其實我們只需要在php的檔案裡面下header就可以克服這個問題。


header('Content-Type: text/xml');
如此一來就可以告訴瀏覽器這個文件請用XML的方式讀取。
剩下的就請按照XML的標準階層寫法echo出來吧!

PHP IDE 編輯器推薦 NetBeans 7.1 中文版 [現在只剩下殘體中文]

圖片
之前小灰狼在編輯網頁的時候使用的php編輯器都是用notepad++這套軟體,老實說已經很好用了。有支援顏色的區別還可以直接ssh連線到linux上面修改內容。非常方便,重點是輕薄短小不占記憶體。


不過現在有了新歡 NetBeans 7.1 中文版,這是我在找尋Zend Framework的時候順便發現的。早期的版本好像不支援中文和Zend不過現在通通都是標準配備摟!連下載的頁面也是中文了(雖然中文化的程度有點不足,大約只有一半左右)


有沒有看到有沒有看到!
你可以直接選擇PHP的項目下載,他會連同外掛一起幫你裝好好的!夠貼心吧!上面有一個選項IDE語言記得要挑選"正體中文"喔!


推薦NetBeans 7.1的理由:


完整支援PHP語言,包含debug的項目都幫你做進去了!也就是說終於不用肉眼除錯了!效率up up支援CSS,丟掉DreamWave吧!想要編輯CSS又不想記完整語法的看過來, NetBeans 他對於CSS的支援程度超乎你的想像,甚至是你用的語法支援什麼瀏覽器、怎麼用通通都告訴你。

還不快去使用看看!

NetBeans 官網出現php_exif.dll錯誤這樣解決ubuntu 推薦php編輯器 Geany


jQuuery UI 打造美觀的 alert 介面

圖片
早期我們在編寫網頁的時候如果要出現彈出警告,通常都會用JS的alert語法。例如:

alert("錯誤訊息");
這樣產生出來的訊息就只會是這樣:

其實我們在jQuery UI的協助下可以做出比較美觀的介面。像這樣:

這次我們選用Dialog這個樣式功能,它的原理其實很簡單,先建立一個專屬的div這個div的名稱將會和jQuery的程式與法對應。如下圖: 由於這個function的原理是呼叫一個div出來顯示,所以你裡面想要包什麼東西都可以。圖檔、連結、表格等等通通可以塞進去。
其實最簡單乾淨的語法只是這樣就可以執行: $(function() { $( "#dialog-modal" ).dialog(); });
其他的東西都是參數而已,例如我們如果要再加上背景遮罩的話就在.dialog()動作中再加上
modal: true
變成 $(function() { $( "#dialog-modal" ).dialog({ modal: true }); });


大家試試看吧!還有更多的細部設定都可以在jQuery UI的官方網站中找到 http://jqueryui.com/demos/dialog/

利用jQuery UI 快速擁有常用的網頁功能icon css

圖片
上篇自訂你的 jQuery UI中,小灰狼提到jQuery UI中有多項自訂的UI風格。而我們網站上常用的icon其實也是其中一個jQuery UI有提供的項目。
和一般的用法不太相同的是,他是使用一張icon的總覽圖,藉由指定不同的位置來顯示不同的icon 就像上面那張圖,jQuery提供了這樣的一整個icon表。讓我們快速的使用在網站中,這樣在網站上面要用到的icon風格就可以很簡單統一啦!真是佛心來的。
不過有一個問題就是:要怎樣可以快速地挑選到我們要的那個icon呢?

快速挑選jQuery UI icon小秘訣 step1:先下載並解壓縮
打開index.html 是的!這個頁面算是一個簡單的demo頁面。很剛好的裡面就有所有的icon圖檔,我們可以用firebug看一下。就可以看到相對應的樣式名稱。夠簡單吧!


後記: 經過布丁大大的指點,這個技術叫做css sprite。簡單的說就是把一堆icon拼貼成一張圖以後再定位的CSS手法。既然都已經知道是這樣做了那麼我們就補充一下線上的產生工具吧!
http://tw.spritegen.website-performance.org/

自訂你的 jQuery UI

圖片
在編輯網頁的時候,我們常常會用到jQuery來作為實現AJAX效果的輔助工具。而jQuery中最著名且最常用的不外就是jQuery UI了。
jQuery UI在官方網站中有提供各種常用的widgets
Autocomplete(input自動完成)Accordion(收合式選單及內容 這個適合做Q&A)button(裡面很多效果的button樣式) Datepicker(下拉日期選單) 快速製作日期選單 -jQuery UI datepickerDialog(alert的美化樣式?) Progressbar(百分比bar) Slider(利用拉bar的方式選擇數字及範圍) Tabs(這個不解釋了、就是tabs) 這麼多種不同的樣式應該可以滿足"基本"的網站頁面需求啦!不過這些東西如果樣式沒有統一的話那麼頁面應該會一整個怪異吧!這時候就要用到自訂項目下載的方式瞜! 如下圖所示:選擇右手邊的 Build 就可以進入編輯下載樣式和功能的頁面(其實點選Download也是進到這裡啦)
進入後可以在這邊勾選你要的項目,如下圖我右手邊框起來的地方可以選擇樣式的套版

如果你對他預設的套版有意見,想要自己設計或是你根本不知道那些套版長什麼樣子。你可以點選design a custom theme這個連結可以讓你做很多的細部修正和即時預覽,可以讓你玩到爽以後再下載。 參考資料
jQuery UI 官方網站jQuery UI 入門