Archive for the ‘ Coding ’ Category

[轉載][PHP]處理 UTF-8

轉載自: PHP 最佳實踐方法


此章節由 Alex Cabal 撰寫,節錄自 PHP Best Practices 並作為我們 UTF-8 建議的基礎。

這不是開玩笑的,請小心與細心並前後一致地處理它。

PHP 至今在底層仍未支援 Unicode。而有許多方式可以確認 UTF-8 字串的處理是正確的,但通常不容易,還需要從上而下翻遍程序所有階層,從 HTML、SQL 到 PHP。我們將會聚焦在簡短的實踐總結。

Read more

網站套件的「設定檔」安全性問題

這是我在 Facebook 上看到的安全資訊,我覺得很重要,也適用在任何的網站套件上。

以 WordPress 為例,首先,請查看你的 WordPress 目錄下是否有這些檔案:

  • wp-config.php~
  • wp-config.php.2
  • wp-config.php.bak
  • wp-config.php.old
  • wp-config.php.ori
  • wp-config.php.orig
  • wp-config.php.original
  • wp-config.php.sav
  • wp-config.php.save
  • wp-config.php.swp
  • wp-config_php
  • wp-config.php_2
  • wp-config.php_bak
  • wp-config.php_old
  • wp-config.php_ori
  • wp-config.php_orig
  • wp-config.php_original
  • wp-config.php_sav
  • wp-config.php_save
  • wp-config.php_swp

Read more

[Perl]Windows 上功能最齊全的 Perl 整合開發環境: DWIM Perl

功欲善其事,必先利其器!!

如果你在 Windows 上找不到容易上手的 Perl 整合開發環境(IDE),那你可以試試「DWIM Perl」。

「DWIM Perl」主要是由「Padre」、「StrawberryPerl」及一些常用的 CPAN 模組所組成,「DWIM」是「Do What I Mean」的縮寫,因此可以看得到它的用心,其中:

  • Padre」是一套 Perl 的程式編輯器,代表的圖像就是右邊那隻美麗的蝴蝶。
  • StrawberryPerl」與「ActivePerl」一樣,是一套運作在 Windows 上的 Perl 直譯器,但 StrawberryPerl 是 OpenSource,並且本身就已經集成了很多常用的 CPAN 模組,StrawberryPerl 的代表圖像就是一顆嬌豔欲滴、但有點曝光過度的大草莓

檔案下載: DWIM Perl

安裝「DWIM Perl」時請安裝在你的 D 糟,安裝好之後只要執行「Padre, the Perl IDE」就會進入它的整合開發環境。

Read more

[MySQL]MySQL 的欄位名稱可以用空白字元

今天被一個 Bug 困住好久,可能是之前自己的手誤造成!!

原因就是...MySQL 的欄位名稱竟然可以使用空白字元,而且還可以放在第一個字元,我真是學藝不精!!

經測試,連資料表的名稱也可以使用空白字元:

CREATE TABLE ` test table` (
` field 1` TINYINT NOT NULL ,
PRIMARY KEY ( ` field 1` )
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;

上面看得出我在資料表與欄位的名稱都用了空白字元嗎? 而且還是放在第一個字元!

我想,如果想要陷害別人絕對可以用 MySQL 這一招。

至於處理空白欄位名稱的問題,你可以:

  1. 將錯誤的欄位名稱改掉。
  2. 存取資料表與欄位時,在前後加上 ` `,例如: ` test table`.` field 1`。

 

[轉載]21 天教你學會 C++

轉載自: 酷殼 - 21 天教你學會 C++


下面是一個《Teach Yourself C++ in 21 Days》的流程圖, 請各位程式設計師同仁認真領會。如果有必要, 你可以查看這個圖書以作參照: http: //www.china-pub.com/27043

看完上面這個圖片, 我在想, 我學習 C++ 有 12 年了, 好像 C++ 也沒有學得特別懂, 看到 STL 和泛型, 還是很頭大。不過, 我應該去考慮研究量子物理和生物化學, 這樣, 我才能重返 98 年殺掉還在大學的我, 然後達到 21 天搞定 C++ 的目標。另外, 得要特別提醒剛剛開始學習 C++ 的朋友, 第 21 天的時候, 小心被人殺害。呵呵。

Read more

[JavaScript]模擬 jQuery 的 CSS 選擇器 (Selector)

2017/03/21 更新:

可能是之前為了要相容舊版 IE (v9.0 之前) 的緣故,所以沒發現到 JavaScript 還有 querySelector()querySelectorAll() 這兩個函式,它們的功能分別為:

範例中可以得知,這兩個函式遵循 CSS 語法,可以實現複雜的 CSS 選擇器的層級、屬性、分組、串聯、偽元素...等判斷,功能已不是 getElementById()getElementsByClassName()getElementsByTagName() 可以比擬!

當然複雜的 CSS 層級可改由 querySelector() 或 querySelectorAll() 來取得元素,不過若是目標明確,考量效率我還是用 getElementById() 來處理可能會比較好。

自訂函式 $$() 改寫如下:

function $$(element, isFirst){
    if(isFirst === 1){
        // 強制回傳第一筆符合的元素
        return(document.querySelector(element));
    }
    else if(/^\#[\w\-]+/.test(element)){
        // 以 $$("#id") 回傳元素
        return(document.getElementById(element.slice(1)));
    }
    else{
        // 回傳元素陣列
        return(document.querySelectorAll(element));
    }
}

($$() 增加了第二個參數: isFirst,若設為 1 則強制回傳第一筆符合 CSS 選擇器的元素,而非元素陣列)

之前的內容:

自訂函式

JQuery 強大、方便的選擇器 (Selector) 是 jQuery 不可或缺的功能之一。不過如果我們不想載入 jQuery 而只想使用類似 jQuery 選擇器的功能,那可以用自訂函式的方式做到:

function $$(element){
    switch(element.charAt(0)){
    case("#"):
        // 以 $$("#id") 回傳元素
        return(document.getElementById(element.slice(1)));
    case("."):
        // 以 $$(".class") 回傳元素陣列,IE 要 v9.0 之後才支援
        return(document.getElementsByClassName(element.slice(1)));
    default:
        // 以 $$("tag") 回傳元素陣列
        return(document.getElementsByTagName(element));
    }
}

或是單純一點,僅傳回指定 id 的元素就好:

function $$(element){
    return(document.getElementById(element));
}

我把這個自訂的函式命名為 $$(),用以與 jQuery 的工廠函式 $() 做區隔。

但是要注意,以上自訂函式回傳的都是 DOM 元素,與 jQuery 在其它操作上並不相同。

換掉 jQuery 的工廠函式

如有需要也可以用 jQuery.noConflict() 換掉 jQuery 的工廠函式 $(),ex:

var jq = jQuery.noConflict();

這樣就能改用 jq() 來做為 jQuery 操作,而原本的 $() 只要再次重新定義為自訂函式即可使用,不會與 jQuery 衝突。

幫大家試過用 ¥ 做為自訂函式的名稱,不過都失敗,大家可以不用試了!

參考網頁

[jQuery]《網頁設計-愛上jQuery》讀書心得及評論

使用 JavaScrip 的程式庫來開發網頁的程式可以加快開發的速度,其中 jQuery 也是頗受歡迎的一員。

不過目前可以買得到的 jQuery 中文書籍實在寥寥可數,以下是最近閱讀《網頁設計-愛上jQuery》這本書的心得及評論 (作者是羅子洋)。 Read more

[MySQL]處理字元編碼的一些心得

因為我在寫程式所用的到的 MySQL,同時有 3.x 版及 5.x 版要處理,所以對 MySQL 的字元編碼問題需要特別做研究,研究了一陣子之後,終於有了一些初步的心得,列出舊版及新版的 MySQL 做為比較:
Read more

[轉載][MySQL]MySQL 的 SET NAMES xxx 字元編碼問題分析

轉載自: PHPChina


近來接受 BBT 的培訓,做一個投票系統。系統程式碼倒不是很難,但是我的時間主要花費在了研究字符集和編碼上面。MySQL 和 Apache 兩個系統的編碼 (字符集) 問題讓我費勁腦筋,吃盡苦頭。網上對這些問題的解決比較零散,比較片面,大部分是提供解決方法,卻不說為什麼。於是我將這幾天收穫總結一下,避免後來者再走彎路。這篇文章對 PHP 編寫有一點幫助 (看完你就知道,怎樣讓你的 PHP 程式在大部分空間提供商的伺服器裡顯示正常),但是更多幫助在於網路伺服器的架設和設置。
Read more

[PHP]讓 FCKeditor 瀏覽圖檔時,可以顯示縮圖

FCKeditor 雖然有提供很多種程式語言的檔案瀏覽程式,讓你可以很方便地上傳及插入遠端伺服器上的圖檔,但在瀏覽檔案的同時,我們最需要用到的圖檔卻不能顯示縮圖,感覺很不方便 (應該是故意留了一手)。

雖然官方網站上有建議使用 CKFinder 這支外掛程式來管理伺服器上的檔案,但 CKFinder 卻不是免費的。

思考了一下,雖然我的 PHP 很爛,但只是要做個縮圖的功能應該還難不倒我,於是就花了幾個小時把縮圖的功能實做出來。原理很簡單,只是先在相同目錄下產生 ".thumb.gif" 的縮圖檔,在列示時將縮圖顯示出來。

Read more

return top