20100225

網頁內嵌編輯器(Fckeditor+Filemanager),讓你的網頁圖文並茂

今年的天氣不曉得是怎麼搞得~去大陸沒遇到下雪,回國隔天就下了...

接著過年一整天都沒出去,因為都在下雨T_T....

然後....阿批也有CASE要趕,所以只好....也乖乖待在家做CASE...

anyway....還是得做,就算世界末日也要做完阿(誤).....

----------我是言歸正傳的分隔線--------------

越來越多網站後台都會須要用到編輯器,一來是可以讓一些使用者更方便的編輯,二來有些人不想要寫程式,可以用編輯器蒙混一下(XD),再來就是.....阿批拖稿拖太久~連老師都看不下去了(誤)

這篇文章要介紹的是阿批最近使用的一款編輯器-Fckeditor

這款編輯器目前已有更新的強化版-Ckeditor...但是,卻沒有阿批想要的功能-圖片上傳 Orz,讓原本使用Ckeditor的阿批,瞬間被丟到垃圾山(喔~其實是心情跌到谷底拉~)...其實有第三方作者寫的程式一樣可以支援上傳,但只能做簡易的上傳,至於真的需要上傳的朋友可能還是不夠用,因此這篇文章還是以Fckeditor無痛內嵌為主!

雖說Ckeditor是較新的版本,但對像阿批這種
其實是跟一般的Fckeditor使用者沒有甚麼差別。而基於想要更方便的(其實是懶惰...)使用圖像上傳功能,於是download了Fckeditor來玩玩....

Fckeditor跟Ckeditor都是同一家公司的,所提供的原始碼都是免費的。而雖然Ckeditor較新且功能完整,但使用Fckeditor的網站還是佔多數(當然要尋求幫助也比較有門路)。可以先至官網玩玩看Demo的版本,但Demo版以Ckeditor為主,(上面的上傳圖片功能是騙人的:P,下載後不會有)

首要工作:認識一下會用到的檔案吧!

  • fckconfig.js:工具列設定、外觀設定...等等都靠它!
  • fckeditor.php:有提供php用的呼叫函式和功能。因為阿批是寫PHP,當然就要找它來幫我呼叫嚕!
  • fckeditor/editor/filemanager/connectors/php/config.php:圖片上傳的設定檔,稍後用到
  • 傳送及接收參數的頁面:放心,這邊阿批會寫一點範例給大家先玩玩!
主要是以上幾個檔案就可以很簡單的設定Fckeditor!再來就開始我們的Fckeditor簡易設定之旅!
1.打開你要置入的php頁面,加入:

include_once(“./fckeditor/fckeditor.php”) ; //呼叫fckeditor設定檔,也可把此檔放在你的include資料夾方便分類
$editor = new FCKeditor(‘fck_editor′) ; //new一個物件來用,要傳送的變數名稱,可自行修改
$
editor ->BasePath = ‘./fckeditor/’ ; //Fckeditor的路徑
$
editor ->ToolbarSet = 'Default' ;
$
editor ->Value = ‘Hello World’ ; //要顯示在編輯器內的預設文字,你可以把資料庫抓出來的內容變數丟在這邊。
$
editor ->Width = ‘500′; //編輯器寬度
$
editor ->Height = ‘400′; //編輯器高度 "; ";

2.因為要有參數傳送的路徑,所以我們給個Form,直接承上接續(方法不一定要照此,可自行變化)

echo "< /form action="接收的頁面路徑" method="post">
"; //建立表單(因網至設定問題,直接複製請把form前的斜線(/)拿掉

$editor ->Create() ;
//建立FCKeditor編輯器的物件
echo "< /form>
";
//結束form

3.以上程式碼已可顯示一個編輯器以供使用,但現今的網站都有搭配後端資料庫,故以下提供簡短的接收DATA的程式碼做接收示範
$content = $_POST['fck_editor'];
//接收編輯器的內容變數,因編輯器所Create時的變數為第1步驟程式碼所設定,故需一至(本例以fck_editor為變數名稱)

設定完以上的程式碼,就可以先玩一下編輯器了~OK~大功告成!!!總算........不對,還有圖片上傳功能啊!!!!
別急著走開~以下我們要介紹上傳圖片的設定,當然也是非常無痛的設定!

在首要準備工作的第三個檔案,位於
fckeditor/editor/filemanager/connectors/php/內,因阿批是使用php,所以就進入php資料夾來設定(若是其他語言的使用者則可以選擇其他的程式語言資料夾),內有一config.php檔案,打開並設定:

$Config['Enabled'] = true ; //預設是關閉的,只要將它設為true就可以開啟圖片上傳功能。

其他的設定在config檔案裡都有說明,路徑、擴充套件等等,就讓大家自己摸摸啦!!不然就等下次的教學文(誤!)OK~這次真的是大功告成!!!可以再偷懶一陣子了~XD

20090901

在Vista的中心呼喊"執行"

喔~這可不是新的作業系統影片~也不是任何有關作業系統的影片

這完全是最近有些人及阿批的疑問...

使用Vista的朋友一定(其實也不一定)會疑惑..

XP的"開始"→"執行"小功能似乎在Vista裡消失了...

看來繼消失的密室之後....喔~不是....這完全跟電影無關....

咱們來將"消失的執行"呼喊出來吧.....(被踹)

首先請在可愛的"開始"鈕上按下"右鍵",選擇"內容"

然後點選"開始功能表"標籤

點選"自訂"

勾選"執行命令",接著按下"確定"

再次開啟開始功能表,登登登登~~~出現了~~~請各位客官盡情享用!!

20090702

My Note - K-means Cluster

K-means 分群法
使用分割式分群法(partitional clustering)時,必須先指定群聚的數目,然後藉著反覆疊代運算,逐次降低一個誤差目標函數的值,直到目標函數不再變化,就達到分群的最後結果。
在所有的分割式分群法之中,最基本的方法,就是所謂的 K-means 分群法(k-means clustering),又稱為Forgy's algorithm。主要目標是在大量高維的資料點中找出具有代表性的資料點,這些資料點可以稱為是群中心(cluster centers)、代表點(prototypes)、codewords等,然後在根據這些群中心,進行後續的處理,這些處理可以包含:
1.資料壓縮:以少數的資料點來代表大量的資料,達到資料壓縮的功能。2.資料分類:以少數代表點來代表特定類別的資料,可以降低資料量及計算量,並可以避免雜訊的不良影響。分割式分群法的目的是希望盡量減小每個群聚中,每一點與群中心的距離平方誤差(square error)。E = Sk=1~c ek分群的方法,就變成是一個最佳化的問題,換句話說,要如何選取 c 個群聚以及相關的群中心,使得 E 的值為最小。 也可以用另一方式來描述,給定一組 n 點資料 X = {x1, ..., xn},每一點都有 d 維,k-means 分群法的任務是找到一組 m 個代表點 Y = {y1, ..., ym},每一點也是d維,以使下列的目標函數越小越好: J(X; Y, U) = Si=1nxi-yk2在演算法開始進行前,必須事先決定好預期分群的群聚數目。假設預期的分群群聚數目為c,則根據上述觀察,可經由下列步驟來進行 k-means 分群法: 1.隨機選取 c 個資料點,將之分別視為c 個群聚的群中心,這就是Y。 2.由固定的Y,產生最佳的U。換句話說,對每一個資料點x,尋找與之最接近的群中心,並將x加入該群聚。 3.計算目標函數 J(X; Y, U),如果保持不變,代表分群結果已經穩定不變,所以可以結束此疊代方法。 4.再由固定的U,產生最佳的Y。跳回第2個步驟。由於只能找到局部最小值,所以如何選一組好的起始點,就變得很重要。以上述方法來說,若要選取 c 個起始中心典,常用的選取方法有下列幾種: 1.從資料裡面隨意選出 c 點資料2.找出離所有資料平均值最遠的 c 個資料點3.找出離所有資料平均值最近的 c 個資料點 4.找出距離平方和最小的 c 個資料點上述討論的方法,通常又稱為 batch k-means algorithm,另一個類似的方法稱為 sequential k-means algorithm 或是 on-line k-mean algorithm,則是每當收集到一筆資料時,就可以更新群中心,方法如下: 1.隨機選取c的起始點,將之分別視為c個群聚的群中心 2.對每一個資料點x,尋找與之最接近的群中心,並將x加入該群聚,隨即計算新的群聚中心(該群聚中原有的資料點加上x後的平均向量) 3.檢查每一個資料點目前與之最接近的群聚中心是否和他的群聚分配一致,如果不是,則回到步驟二,反覆疊代,直到收斂。 一般而言, sequential k-mean algorithm的優點如下: 1.適用於資料特性隨時間而變的情況。 2.計算簡單,適用於硬體實現。
除非有特殊情況,否則很少使用 sequential k-mean algorithm。
發現叢集(Discovering Group, Clustering)
群集分析(cluster analysis)又稱為資料切割(data segmentation)、非監督式分分類(unsupervised classification),他是一種多變量統計分析(multivariate statistical analysis)的技術,主要目的是將資料集合中的資料紀錄,又稱為資料點、觀察值或案例,加以分群成數個群集(cluster),使的每個群集中的資料點間相似程度高於其他群集中資料點的相似程度。因此群集分析主要的杜地在於分析資料彼此間的相似程度,藉由分析所找到的群集結果,推論出有用、隱含、令人感興趣的特性和現象。相對於分類法中每一筆訓練資料紀錄都給訂一個類別資訊,並企圖從中找出一個判斷模式來預測未知類別資訊得資料紀錄;在群集分析的過程中,並沒有預先指定好的類別資訊,也沒有任何資訊可以表示資料紀錄彼此之間是相關的,所以群集分析被視為一個非監督式學習(unsupervised learning)的過程。
群集在data mining中所扮演的角色:
*資料精簡:透過群集分析將原本大量的資料加以分群成數個群集,並從每一個群集中挑選具有代表性的資料
記錄來進行後續的處理。
*推論假設的產生:利用群集分析推斷出所關注資料中可能存在的某些特性或現象。
*推論假設的驗證:可以對推論假設作有效性的驗證。
*歸屬預測:將群集分析後的分群結果應用於未知分類之資料記錄上,以預測資料所歸屬的群集。
資料分群(data clustering)或是分群演算法(clustering algorithms)是一種將資料分類成群的方法,其主要的目的乃在於找出資料中較相似的幾個群聚(clusters),並找出各個群聚的代表點,稱為中心點(centroids)或是原型(prototypes)。使用這些中心點來代表原先大量的資料點,就可以達到兩個基本目標:
降低計算量
資料壓縮
一般而言,分群法可以大致歸為兩大類:
階層式分群法(hierarchical clustering):群數(number of clusters)可以由大變小,或是由小變大,來進群聚的合併或分裂,最後再選取最佳的群數。
分割式分群法(partitional clustering):先指定群數後,再用一套疊代的數學運算法,找出最佳的分群方式以及相關的群中心。
所有的分群法都有相似的流程,大略可歸納為下列三點:
收集資料
使用某種方法進行分群
測試分群結果
檢測分群結果,如果未達預期效果,則回到步驟二,再一次進行分群

20090519

PHP -利用mkdir函數建立中文資料夾無亂碼方案

因為自己龜毛,想要在家族的網站上設立一個為使用者開啟個人資料夾的功能,因為這樣可以讓使用者方便將自己的東西直接上傳到資料夾內(先前的網站必須還要由管理者移動),管理者才不用事後移來移去(其實管理者很懶惰XD)

於是乎

這種想法產生就也伴隨著無止盡的殘忍後果

正當我很高興的mkdir("0777","中文")給它時...

蝦米,是亂碼!!!!!!

好吧,既然他誠心誠意的出現了

我也要大發慈悲的解決他!!!!

我找阿找,找遍怕太太(這大概只有老一輩玩過BBS的人才知道這個名稱吧~)和X學園,不是建議用英文就是講一堆廢話然後叫你不要有這個想法(這我要特別提出來講是因為,如果有一天你老闆同樣交代了這件事,你會沒試過就要跟他說沒辦法嗎?雖然並非老闆要求,但這種不敬業的態度我做不到)

於是乎有位鄉民暗丟水球給我,跟我講了另一個方法可試試看,真是太感謝了!!!!

我就去找了iconv來玩玩

結果,壓呼!!!!壓倒性的勝利....喔不,是暫時解決了這個問題!!!!

好,於是我高興到想要將他PO出來,因為我真的找不到這個問題的解決方案,而且我有一些也要說明阿~~~~

來來來,做法是這樣

$dir_name=iconv("utf8", "big5", $dir_name); //將資料夾名稱編碼為big5,utf8是我寫程式所用的編碼

$path="upload/reports/$dir_name"; //路徑,我習慣額外設定

mkdir($path,'0777'); //建立資料夾!!!!

就是這樣~~喵~~~

各位看倌不曉得看這麼多廢話後,你有沒有豁然睜大雙眼的感覺!!?

20090428

Smarty - 陣列用法


這幾天忙CASE忙到快瘋掉,但是有發現一些不常用的東西,整理出來避免忘掉吧!!!

這幾天做問卷統計,卻發現,統計總筆數的時候用foreach會照問卷數跑許多迴圈

於是乎,查了一下smarty手冊,發現其實要print陣列有其他的方法

假如說我的陣列是二維以上

$array[first][second];

那麼當assign $array後,在template要如何取出

只要用

{$array.first.second}即可!!!

first及second可以跑迴圈直接填入0-N的數字!妙吧!!

長尾理論 - The Long Tail

長尾理論,這個理論探討因Internet/大型通路的活動,打破了舊的80/20法則,而產生了一種新的銷售/購買行為:The Long Tail。

1897 年,義大利經濟學者帕列托發現了80/20法則(Pareto Principle),即20%的人口享有80%的財富,80%的收穫,來自於20%的付出;80%的結果,歸結於20%的原因。如果能找到關鍵的 20%,並分配多數資源,那麼就可以花最小的力氣,賺到最多的錢。「一分耕耘,一分收穫」,並不能解釋現實世界中大部份的情況。付出與努力之間的關係,不 是五十/五十,而是八十/二十。這樣的不平衡,出現在幾乎所有的工作領域與生活範圍:在工作方面,大部分的員工對公司的收益來說是沒有正面幫助的,少數的 顧客為公司帶來大部分的利潤,少數居高位的人拿走了大部分的酬勞。集中精力在20%的成效上,就能發揮最大的效益。

2004年10月,《連線》雜誌主編Chris Anderson在一篇文章中,首次提出了一個 長尾理論(The long tail) :只要通路夠大,非主流的、需求量小的商品「總銷量」也能夠和主流的、需求量大的商品銷量抗衡。長尾就是80%的過去不值得一賣的東西,長尾實現的是許許 多多小市場的總和,長尾是熱賣品向niches的轉變。由此可見,The Long Tail的適用對象,是瞄準「大型通路」,例如:Internet、量販店、大型書店、超商連鎖店,有點像是用亂槍打鳥的方式,平衡收益。通路大提供的商 品就多,因此可以在熱賣商品以外,創造出次暢銷品的銷售數字。

在Internet上的實例就是 Amazon跟Google,Google目前有一半的生意,來自於的AdSense,廣告不再高不可攀,它是自助的,價廉的,誰都可以做的,對成千上萬 的Blog站點和小規模的商業網站來說,在自己的站點放上廣告已成舉手之勞,數以百萬計的中小企業代表了一個巨大的長尾廣告市場。Google目前因為沒 有其他的競爭對手,因此可以寡佔 80% 的中小企業長尾廣告市場,然而這個現象會不會在對手提供類似服務後,市場佔有率下降後消失呢?我也不曉得,但至少目前看來,Internet上的世 界,Amazon跟Google還是第一品牌。

對個人或是提供產品的公司來說,The Long Tail就是一個參考的指標與現象,必須瞭解到,一旦鋪貨上架後,如果不是暢銷商品,就必須要等一段時間,才能夠回收,有點像是「撐得越久,領得越多」的 感覺。換句話說,假設今天你想要換工作,你就要考慮採用「80/20」或是「Long Tail」哪一種策略,「80/20」的代表就像是李開復從MS跳槽到Google,短時間內就能取得最大的效益(薪資),而一般人大都採用「Long Tail」策略,因為瞭解自己並不是一項熱賣商品,所以要用略低的薪資來換取業主的青睞,並以時間(年資)來換取金錢。

對於自己來說,當 然得要致力於開發 20% 的價值,現在的社會是專業導向,花 80% 的時間經營自己,在某一項專業領域中,自然能獲得最佳的利潤回饋。彼得杜拉克說,人要學習強化長處,客服缺點,並以持續專心的態度,階段性學習新事物,也 就是集中心力學習一個項目,學會之後再進入下一個項目,這個學習方法,就有點像是「Long Tail」的法則,如果把你自己當作大型通路,能夠上架販賣的東西越多,自然越能得到Long Tail的效果,但先決條件是,你掌握的技術比須都要上得了檯面而不是一知半解的,「樣樣精通樣樣鬆」的產品,絕對沒有市場的。

20090426

PHP 字串間加入特殊符號

最近改CASE改到焦頭燥耳..

但是也不能因此而冷落掉我的BLOGGER~

來分享一下PHP的一些延伸用法

這次改CASE遇到廠商要求把行動電話號碼
0912345678改成0912-345678的問題

不管是針對電話號碼還是其它的格式,使用
substr函數通通可以輕鬆搞定

$str="0912345678"; //欲開刀的電話號碼字串
$split= "-"; //要插入的特殊符號
$fin_str = substr($str,0,4).$
split.substr($str,4); //字串前4個字+特殊字符+字串第4個字元後的字串
echo $fin_str; //叫出來看看!!!如果怕許功蓋可用
htmlspecialchars再輸出

簡單的用法就如上所述,尚有其他技巧,等這週忙完再來PO!!!

你還在幫別人打造舒適圈?

 師不順路,不好為人師,談何容易.... 人總是在為自己的做法找"理由",找一個漂亮的包裝,找一個可以說服人的方式,找一個立足點....然而,這個為自己所做的一切,往往是一個自私的隱性表現,因為你要達到的就是"滿足"自己。 但要如何滿足自己...