關於作者:Sky

介紹
以分享PHP, MYSQL, HTML, CSS等網頁技術方面的資訊,但未必每篇文章都深入介紹,部分文章甚至純粹個人記錄,如無法理解某些技術文章中的知識,請自行研究。

Sky 發表

0

VestaCP 繁體中文安裝後內置的BUG修復

VastaCP 的是不錯的VPS控制平台,不過安裝後如果你修改為繁體中文,就會發生一些問題,比如空白頁面等等

不過你可以SSH進入你的主機,執行以下指令

wget https://raw.githubusercontent.com/neltseng/VestaCP-Traditional-Chinese/master/tw.php -O /usr/local/vesta/web/inc/i18n/tw.php

作者及來源:https://github.com/neltseng/VestaCP-Traditional-Chinese

標籤: ,
0

[PHP] BBCode Parser (簡單的BBCode to HTML 的function)

最近有個web2.0的project,安全理由當然不會讓用戶用HTML發表內容

所以就選擇上一些BBCODE 的編輯框,保存到SQL是BBCODE這個問題不大

但解讀時就需要用PHP來翻譯一下BBCODE,將BBCODE轉義為HTML

基本上都知怎麼做,但想取一下靈感就上網找一些簡單的class , function 起步

github有非常多,但因為我自己個人對編輯器做了特殊的修改,所以用別人的class會有些不便,同時有些作品太過大型,我想小巧易改一點

所以就想了下面這個簡單的function開始

基本上沒有特別功能的可以直接使用

但我認為還需要加2~3個功能:
1. 表情附號的轉義
2. 自動感應link / 圖片型的網址 / youtube 等等

<?php

/* Simple PHP BBCode Parser function */

//BBCode Parser function

function showBBcodes($text) {

// BBcode array
$find = array(
'~\[b\](.*?)\[/b\]~s',
'~\[i\](.*?)\[/i\]~s',
'~\[u\](.*?)\[/u\]~s',
'~\[quote\](.*?)\[/quote\]~s',
'~\[size=(.*?)\](.*?)\[/size\]~s',
'~\[color=(.*?)\](.*?)\[/color\]~s',
'~\[url\]((?:ftp|https?)://.*?)\[/url\]~s',
'~\[img\](https?://.*?\.(?:jpg|jpeg|gif|png|bmp))\[/img\]~s'
);

// HTML tags to replace BBcode
$replace = array(
'<b>$1</b>',
'<i>$1</i>',
'<span style="text-decoration:underline;">$1</span>',
'<pre>$1</'.'pre>',
'<span style="font-size:$1px;">$2</span>',
'<span style="color:$1;">$2</span>',
'<a href="$1">$1</a>',
'<img src="$1" alt="" />'
);

// Replacing the BBcodes with corresponding HTML tags
return preg_replace($find,$replace,$text);
}

// How to use the above function:

$bbtext = "This is [b]bold[/b] and this is [u]underlined[/u] and this is in [i]italics[/i] with a [color=red] red color[/color]";
$htmltext = showBBcodes($bbtext);
echo $htmltext;

?>
標籤:
0

用mb_strwidth將utf8中文作2個字元計算

有時候使用UTF8想計算文字的數量時,很簡單很常見就是

最常見的計算方式:

strlen("中文字abcd1234")

結果:17
分析:中文字=9字元(3文字*3字元) + 8個字元 (英數1文字=1字元)

mb_strlen("中文字abcd1234",'UTF-8')

結果:11分析:中文字=3字元 (3文字*1字元) + 8個字元 (英數1文字=1字元)

最常見的統計是這兩個字方法來計算,
但1個中文字以3個字元計算,在前台視覺上有點不合邏輯。
在一些討論區或者註冊會員時,都會看到限制會員名長度,一般中文會當2個字元,比如會員名限制不得多於10個字元,就代表可以使用10個英/數字,或者5個中文字
php有個內置函數,直接可以將中文以2個字元計算

$utf8_text = mb_strwidth("測試123",'UTF-8');
echo $utf8_text;

做個視覺上的測試
1234567890 (mb_strwidth 10字元)
一二三四五 (mb_strwidth 10字元)
這樣看來是否覺得合理很多? 長度選擇中英會員名的用戶在長度限制上是否更公平?

0

[CDNJS] 使用JS的CDN為網站分擔流量並加速

開發網頁或設計網頁的時候經常會使用一些公開的免費JS或CSS檔

比如 jQuery 等等

大家一般都可以在官方或者Google API(Google Code)找到外連檔鏈結入

其實除了Google以外還有其他選擇,今天就推薦其中一個給各位。

英文官方:http://cdnjs.com/

中文官方:http://zh-tw.cdnjs.com/

除了常見的jquery 和 jquery UI 等等,甚至連ckeditor的相關文件都可以引入

注:雖然名字叫做CDNJS,但是其實有很多CSS都可以經由這個網站引入,各類型的bootstrap都有

CDNJS簡介:

CDNJS是使用cloudflare這個雲服務的,也是較為知名的,速度在香港,台灣等等連線都有不錯,不過在中國連線很不太穩定,中國用戶多的話不建議使用,較早前甚至不能連線。
為什麼我推薦要使用多個CDN分流?

其實或許說我迷信吧,又或者說我是極端分子,當我開發的網站是預計很多用戶的話,那怕是0.001秒的載入我都會很在意。

我個人做法是,網站上自己寫的js及css當然只能放在自己網站上引入,但只要是常用的JS或CSS,我都會考慮使用這一類CDN引入

個人迷信 :

比如一個頁面有6個JS, 4個CSS,一個用戶連線時如果全部都放在我自己的主機上,用戶除了要在同一個連線讀取這10個文件,同當還要讀取當前頁面的HTML代碼,如果是PHP的話還需要運算,再如果背後還有MYSQL等數據庫的話....即代表用戶連線你的網站時,同時載入10個JS,CSS文件還需要運算PHP(或其他程式語言)、基本的HTML,等待SQL數據庫的返回,等等....

但如果,10JS CSS個文件中,有6個是jquery ,jquery UI, bootstrap, ckeditor等等...

如果分流在google code 及 CDNJS等等的...那麼用戶將會同時連接我的網站讀取基本HTML及自己的CSS還有PHP等等,然後其他的JS CSS都使用各種CDN分流,這樣一來用戶連線的速度就更快。

以上的理論是自己幻想的,其實情況其實還要看用戶本身連線如何,不過...難度用戶連接你的主機會比GOOGLE更快嗎?

實際情況,我在較大型及複雜的網站中,使用CDN及沒有使用CDN的分別,即使沒有人流還在測試段階的時候,的確已經有「肉眼看得出」的分別。

使用與否,自己嘗試一下實際的結果吧。

標籤: ,
0

常見的16GB型號手機實際可用容量

以下數據是網上找到而轉貼的,是一些常見的16GB手提電話

iPhone不用說是當然不能插SD卡的,但沒有ROOT的Android電話apps不能安裝在SD卡(聽聞, 不熟Android)

下列圖片可以給你參考一下,你能實際使用的容量有多少

0

CSS 圓角生成器及基礎代碼

自CSS3開始,做圓角不必要再使用圖片。

只需要打幾行CSS就可以

-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;

但有如果是左上角右上角圓角,左下角右下角是正角的話,代碼就開始變得繁複一些。

所以可以使用CSS的圓角生成器節省時間

http://border-radius.com/

輸入完你要的圓角數值就會自動生成,你再加在你想變成完成的CSS中就可以
標籤:
0

Dreamweaver "無法更新選單。將不會安裝擴充功能" 解決方法

今天準備安裝一個Dreamweaver 的插件(即擴充功能),安裝了數次,甚至下載不同版本,才知道原來不是插件的問題。
Windows 7 下的解決方案:
進入如下目錄 (紅字是可能有變數的目錄名)

C:\Users\你的WINDOWS用戶名\AppData\Roaming\Adobe\Dreamweaver CS6\zh_TW\Configuration\Menus

如果有Menus.xbk和menux.xml這兩個文件,請先刪除,或建議先COPY一份做後備。

Windows XP 下的解決方案:
進入如下目錄 (紅字是可能有變數的目錄名)
C:\Documents and Settings\你的WINDOWS用戶名\Application Data\Adobe\Dreamweaver CS6\zh_TW\Configuration\Menus如果有Menus.xbk和menux.xml這兩個文件,請先刪除,或建議先COPY一份做後備。

如果你安裝的是DW CS5的話,目錄路徑會是Dreamweaver CS6,如果你不是繁體中文的話,後面目錄路徑可能也不是\zh_TW\
標籤:
0

[推介] Table CSS快速生成器

Table在網頁處理大量資料時還是經常用到的,在此推薦一個網站給各位

http://www.csstablegenerator.com/

個人覺得這個生成器預設的一個設定「Box Shadow 」,實在不美觀,Box Shadow即整張TABLE的陰影。

只需要在左上的方框「Table Setting」中把最底的「Box Shadow 」取消就可以了。

 進入後有多個設定可以給你調整,調至你認為無問題的時候就直接copy左下方的:CSS Code

至於html code是沒有必要的,你只需要在你已完成的Table中加入「class="CSSTableGenerator"」也就一樣可以了。

這樣的話你不用重新再做一次你的html table,這個推薦給大家很大的原因,也就是因為無修改動太多,可以將現有的TABLE美化一下。

有關TABLE與DIV....

不知什麼時候,大家開始很推崇DIV+CSS,認為這樣是最好的HTML風格。

的確DIV比TABLE排版來得好太多,以前想要做個複雜些的排版,如果沒有DIV,只用TABLE的確太煩,要在TABLE中再加入N個TABLE才能做到...

但近年來看到越來越多新學HTML的朋友越來越誇張,網站排版用DIV來完成這個是正確也是理應的,但我見過有些大型的資料表格竟然用了DIV->UL -> LI 去完成...

在排版HTML代碼時是多麻煩的一件事,在此建議一下各位朋友,某一段時間大家都拋棄TABLE,是因為出現了一個更好排版模式,可以用DIV去做,但處理資料來說,TABLE本人覺得仍然是最合理及最方便的。

如果你喜歡直接在代碼模式中輸入TABLE資料,那麼你一定明白我為什麼認為TABLE是比較輕鬆。

另外table 有些很好的網頁插件(或者說網頁特效)可以使用,也就是大家所說的JQuery , JS等等。

推薦一個,很多國外的admin template都在用:https://datatables.net

詳細如何使用,日後會再整理一篇詳細文章分別

標籤: ,
0

Ubuntu移動版正式推出,進軍手機市場

Ubuntu於2013年1月3日,在其官方網正式推出了移動版操作系統,正式殺入手機操作系統市場。

電腦版Ubuntu是桌面應用為主的Linux操作系統,與Windows與MAC OS的使用率相比遠遠不及,但由於極速的開機時間及免費開源的原因,在世界各位都均擁有大量擁躉。

移動版Ubuntu完全開源免費,並且分為"普通版"和"高級版"兩個版本。其中"普通版"對手機配置的要求較低,但是功能有限。

移動版Ubuntu完美支援HTML5 WEB應用,HTML5 WEB應用可以在移動版Ubuntu中獨立運行,完全不需打開網頁瀏覽器,Google、Facebook等已推出了HTML5的應用。

除了上述的內容,Ubuntu One雲同步服務也會登錄該系統,用戶可以在多台設備之間共享文件。

最具特色的還應該屬該系統的"高級版"對手機底座的支持,具體說來是當手機放入底座使得手機的內容能夠投射到別的設備上時,用戶可以使用桌面版Ubuntu系統,兼容普通應用程序。

0

[解決] Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

最近遇到一個php的問題,發現pdo連結時一直發生一個錯誤

 Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'.........

我是因為使用了 MYSQL_ATTR_INIT_COMMAND 來設定CHARSET編碼,所以發生錯誤

$this->_pdo = new PDO(DB_DNS, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND=>'SET NAMES '.DB_CHARSET));

後來出現了這句ERROR

Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

網上搜尋了很多很多相關的解決方法,無一可解決,當然比如說可以用exec()來執行等等...但想了想終不是辦法,後來拜託朋友幫手解決,才得知可能是PHP.INI設定問題!

其實PDO應該要用到兩個extension,但不知為何我自己本機測試的PHP只開了php_pdo.dll 卻沒有開啟php_pdo_mysql.dll ,所以導致PDO無法訪問MYSQL才可能出現這個錯
修改如下

打開「php.ini」→ 搜尋「pdo」→ 找到下面兩行代碼 → 如果前面有「;」 → 去掉就可 → 「重開Apache」

如果找不到,手動加上在extension的代碼部分就可以

正確

extension=php_pdo.dll
extension=php_pdo_mysql.dll

錯誤

;extension=php_pdo.dll
;extension=php_pdo_mysql.dll

我自己是因為php_pdo_mysql.dll沒有打開而發生錯誤,其實是否正常的解決方法,或者邏輯是否正常我不知道(可能有些人開了也有這個問題),終知我解決了自己的問題,不過提一提各位,終言知如果要用PDO去操作MYSQL,這兩個extension是應該要打開的。

標籤: