PHP 正規表達式,清除隱藏字元,整齊排列輸出的字元

清除隱藏字元,整齊排列輸出的字元,
其實這並不是一個很重要的工作啦,
但如果你看到下面輸出的XML會感到很痛苦的,
那你跟我一樣有這種偏執狂

看到這樣亂七八糟真的很痛苦,
主要是因為我們在編輯程式的時候,
有些隱藏字元會被我們加在字串中,
當輸出的時候就會一起被輸出,
比較長見的隱藏字元 n r t 就是造成這些很怪縮排的兇手,
我們可以透過正規表達式把這些字元取代,
第二個參數空白就是刪除,
echo preg_replace(‘/[nrt]/’, ‘ ‘, $xml);

不過這樣好像太乾淨了齁,
修改一下不要拿掉斷行n,

echo preg_replace(‘/[rt]/’, ‘ ‘, $xml);

哇屋~是不是舒服多了。

[……]

閱讀更多

PHP simplexml to Array XML 轉 Array

引用網址
https://gist.github.com/tfnet/2037443

PHP 使用 simplexml_load_string() 解析 XML 資料,
要一直 $node->children() 一個節點一個節點的取,這樣用實在很麻煩,
如果能一次把 XML 結構資料轉成 Array 在讀裡面的資料就非常好用了,
網路查了一下看到神人分享的function,完全用原本的XML結構打造成Array,非常好用,
該網址提供的程式碼較適用於Class中,我做了一點小小的修改,
原版本請連文章上方引用網址,修改後版本請於文章下方 Download

<?php
/**
 * Converts a simpleXML element into an array. Preserves attributes.<br/>
 * You can choose to get your elements either flattened, or stored in a custom
 * index that you define.<br/>
 * For example, for a given element
 * <code>
 * <field name=”someName” type=”someType”/>
 * </code>
 * <br>
 * if you choose to flatten attributes, you would get:
 * <code>
 * $array[‘field’][‘name’] = ‘someName’;
 * $array[‘field’][‘type’] = ‘someType’;
 * </code>
 * If you choose not to flatten, you get:
 * <code>
 * $array[‘field’][‘@attributes’][‘name’] = ‘someName’;
 * </code>
 * <br>__________________________________________________________<br>
 * Repeating fields are stored in indexed arrays. so for a markup such as:
 * <code>
 * <parent>
 *     <child>a</child>
 *     <child>b</child>
 *     <child>c</child>
 * …
 * </code>
 * you array would be:
 * <code>
 * $array[‘parent’][‘child’][0] = ‘a’;
 * $array[‘parent’][‘child’][1] = ‘b’;
 * …And so on.
 * </code>
 * @param simpleXMLElement    $xml            the XML to convert
 * @param boolean|string    $attributesKey    if you pass TRUE, all values will be
 *                                            stored under an ‘@attributes’ index.
 *                                            Note that you can also pass a string
 *                                            to change the default index.<br/>
 *                                            defaults to null.
 * @param boolean|string    $childrenKey    if you pass TRUE, all values will be
 *                                            stored under an ‘@children’ index.
 *                                            Note that you can also pass a string
 *                                            to change the default index.<br/>
 *                                            defaults to null.
 * @param boolean|string    $valueKey        if you pass TRUE, all values will be
 *                                            stored under an ‘@values’ index. Note
 *                                            that you can also pass a string to
 *                                            change the default index.<br/>
 *                                            defaults to null.
 *
 * @return array the resulting array.
 */
function simpleXMLToArray($xml,$attributesKey=NULL,$childrenKey=NULL,$valueKey=NULL)
{

if($childrenKey && !is_string($childrenKey)){
$childrenKey = ‘@children’;
}
if($attributesKey && !is_string($attributesKey)){
$attributesKey = ‘@attributes’;
}
if($valueKey && !is_string($valueKey)){
$valueKey = ‘@values’;
}

$return = array();
$name = $xml->getName();
$_value = trim((string)$xml);
if(!strlen($_value)){
$_value = null;
};

if($_value!==null){
if($valueKey){
$return[$valueKey] = $_value;
}
else{$return = $_value;
}
}

$children = array();
$first = true;
foreach($xml->children() as $elementName =&g[……]

閱讀更多

PHP POST RAW 使用 cURL

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL,            “http://yourdomain.com.tw” );

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST,           1 );
curl_setopt($ch, CURLOPT_HTTPHEADER,     array(‘Content-Type: text/plain’)); 
curl_setopt($ch, CURLOPT_POSTFIELDS,     “POST RAW 資料” ); 


$result=curl_exec ($ch);


引用資料

RAW POST using cURL in PHP
http://stackoverflow.com/questions/871431/raw-post-using-curl-in-php

[……]

閱讀更多

Chrome – Postman – 測試 API 的好工具

轉自:林品翔 (tonilin)

http://blog.roachking.net/blog/2012/11/07/postman-restful-client/

POSTMAN in Google APP Store

因為工作的關係,常常寫一些 API 供 APP 使用。
以前傻傻的,每次測試的時候都會自己刻一個 HTML 的表單,一個一個填入 input ,接著送出。 後來覺得這樣太慢了,就用 JavaScript 寫了一個程式來送, 可是效率都沒有很好,尤其是需要反覆測試更改條件的時候。

之後在同事的推薦下用了 Burpsuite ,而這套軟體確實是可以做到沒錯,但是讓人有一種「殺雞焉用牛刀」的感覺。 因此又陸續找了幾個模擬 HTTP requests 的工具,卻都不甚理想。最近終於找到一套滿意的,也就是今天要介紹的 Postman。

Postman 是一個 Chrome 的 Extension,安裝以後可以在分頁欄裡面看到 Postman 的 Icon:

Postman 的主要功能

模擬各種 HTTP requests:從常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至還可以送出檔案、送出額外的 header。

Collection 功能:Collection 是 requests的集合,在做完單一個測試的時候, 你可以把這次的 request 存到特定的 Collection 裡面,如此一來,下次要測試的時候,就不需要重新輸入。
養成習慣以後,網站 API 的每個方法都寫好存進去,以後在開發的時候,就可以迅速得看到結果。 而 Collection 還可以 Import 或是 Share 出來,讓團隊裡面的其他人,可以一起使用你建立起來的 Collection。

整理過後的回傳結果:一般在用其他工具來測試的時候,回傳的東西通常都是純文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。這會造成閱讀時的障礙 ,而 Postman 可以針對回傳資料的格式自動美化。 JSON、 XML 或是 HTML 都會整理成人類可以閱讀的型態。

設定環境:Postman 可以自由新增 Environment,一般我們可能會有多種環境, development 、 staging 或 local, 而這幾種環境的 request URL 也各不相同。新增 Environment,可以讓我們設定一些環境變數,使得切換環境測試的時候, 不用重寫 request。

小測試

我們丟一個 Request 到 Google Geocoding API ,讓大家看看實際的執行結果:

可以 一目瞭然地看到,送出什麼要求、得到什麼回應, 而 JSON 也整理好,且上好了顏色。
小結

自從用了 Postman 很滿意以後,也陸續推薦給其他同事,現在整個公司都在用 Postman 了!

如果你的專案也常常在處理 request,而且苦無測試工具,你可以試試 Postman。

[……]

閱讀更多

13種 網站測速

轉自:http://0123456789.tw/?p=1334

cputheo

前一陣子換了新主機之後,對於網站的連接載入速度還算滿意,r就這麼使用了半個月之後,突然有一天我連不上本站http://0123456789.tw/,我查看了管理的後臺,才發現可能是因為CPU limit過高?才使伺服器開啟了CPU節流閥(cpu throtting),而使網站被停用了1800秒?就是30分鐘,而這個改變是前一周我的伺服器供應商bluehost有說要更新,之後就多出了CPU throtting這個選項,原本以為是好的功能,確變成時常把我主機關閉的主因,然而納悶的是我的網站也才沒超過10人同時上站為何會這樣呢?不爽中…= =
好了廢話說完,本篇要介紹的是13個可以檢測你的網站速度的網站,傳說人們忍耐網頁載入的極限是7秒,若在七秒內你的網站沒有開啟完畢,大概要進入你的網站的人就掰掰你了,我不常上無名小站因為在他還沒賣給YAHOO之前的那陣子整個龜速到不行,而久而久之就沒習慣上去了,因為真得太龜了,即便是現在,還是有很多人的側邊攔掛了太多有的沒的外掛widget讀取還沒完我就沒耐心等下去了,而人類要養成一個習慣要66天,我養成的習慣是不上無名小站,呵,所以站在使用者立場或者網站SEO優化的立場來說,如果下列網站都將你的網站載入速度測出超過七秒的話,你就要好好思考如何減輕你的網站讀取的東西,例如一些外掛,或者圖片的數量,我再想是因為計算0123456789的首頁有很多縮圖,導致在讀取時會增加CPU的負荷,再觀察看看,若還是這樣可能就要考慮更換佈景主題了,哭哭。

計算網站讀取的資訊網站13個,使用方法都是填入你要測試的網址就OK了
1.

http://webwait.com/
這個網站他會一直讀取你的網頁,所以只有第一次的是比較準確的數值,因為後來的就關係到你本機的快取檔案會加快讀取的速度,


2.

http://tools.pingdom.com/

這個網站測試的蠻詳盡,包括每一個檔案讀出的速度,以及外掛,CSS檔或者script等其他可能是放在他處的檔案,可以看出是誰拖慢速度


3.

http://www.websiteoptimization.com/services/analyze/

這個網站也是詳盡一派的,還列出不同速度的網路會花費多少時間


4.

http://www.iwebtool.com/speed_test

這就很簡單,只有列出幾K幾秒跟平均讀取速度


5.

http://www.selfseo.com/website_speed_test.php

簡單派之二,說穿了網站速度就是列屬於SEO工具的其一


6.

http://www.vertain.com/?sst

這個說是用10MBPS的網路去連接的,下行還列出其他超快速度的網站參考值,不過14.31秒?好像不是很正確


7.

http://www.websitegoodies.com/tools/speed-test.php

這個0.758秒還真鮮,到了小數點下三位,只是我自認沒那麼快,我想是因為讀取太多次硬碟快取檔案加快的原因


8.

http://www.hostpulse.com/hosting/networktools/speedtest.asp

這個其實就是去PING你要測試的網站,你可以開啟MS-DOS自行輸入PING HTTP://XXX.XXX.XXX也可以查看一樣的數值


9.

http://www.linkvendor.com/seo-tools/speedtester.html

這個有分為非HTML跟HTML的部分去測試大小


10.

http://www.webkaka.com/

這是大陸那邊的側是網站,網路卡卡這名稱還真有創意,他可以測試由大陸13個點及國外4個點連入你網站的速度


11.

http://www.aptimize.com/website-speed-test

這個很龜毛,但也算專業,他們是協助你改善速度的公司,註冊後才能使用,他會將測試結果MAIL給你,做成一個PDF的檔案共三頁,我擷圖如下,這個也是第一次讀取要15秒,慘了


12.

http://www.freespeedtest.com/

這個可以測試由世界九個點連入的速度


13.

http://wonderwebware.com/page-speed-tester/

這個是要下載到PC上安裝測試的,測試可以看到他讀取的過程,個人覺得挺公正的,推薦

[……]

閱讀更多

磁碟陣列 RAID 0 和 RAID 1 和 RAID 5 的差別

RAID 0 跟 RAID 1 都是將二顆硬碟組合成一顆硬碟,但結果是不同的

假設有a b硬碟都為20G

RAID 0 的結果為 在系統內看到一顆硬碟容量為 20+20=40G

RAID 0 可以將二個硬碟容量加總,資料寫入時是一部分寫入第一顆硬碟,一部份寫入第二顆硬碟,優點是寫入跟讀取速度增加,但缺點是沒有容錯功能.一旦其中一顆硬碟損壞,將造成資料的損壞.

RAID 1 的結果為 在系統內看到一顆硬碟容量為 20+20=20G (Mirror鏡射)

RAID 1 雖然也是將a b硬碟組合成一顆硬碟,但是它是將b硬碟作成a硬碟的鏡射碟.也就是說資料在寫入a硬碟時同時也寫入了一份複本在b硬碟,優點是資料在存取時同時有一份是備分檔,缺點是會浪費一顆硬碟,因為二顆硬碟是存放著相同的資料。

RAID 5 的組成一定是3顆以上的硬碟,其容量的計算是(n-1)顆

假設有a b c 三顆硬碟是20G

組成 RAID 5 之後容量是 20+20+20=40G

RAID 5 結合了 RAID 0 跟 RAID 1,它將硬碟的容量加總了,但是又保留了一顆的容量在作檔案的容錯,在寫入資料時會透過其演算法去寫入三顆硬碟之中,假設C硬碟掛掉了,只要將一顆新的 20G取代 C 硬碟,RAID 5 的容錯機制會由A B 二顆硬碟中留下的資料來還原 C 硬碟的資料,但前提是壞一顆硬碟,如果同時壞二顆,那資料亦是全毁.

RAID 0 可以將硬碟容量加總,增加讀取速度,但是沒有容錯功能.

RAID 1 可以將資料鏡射一份,但是讀取速度沒有增加.而且要浪費一顆硬碟.

RAID 5 可以將硬碟容量加總,亦可以增加讀取速度,也有容錯功能.而且多顆組合起來只會浪費一顆硬碟.不像RAID 1每二顆硬碟會浪費一顆.

由於RAID 5 只容許同時有一顆硬碟損壞.就有了RAID 0+1 或 RAID 1+0

這是更安全的作法.但相對的也更浪費硬碟.

假設有4個硬碟 A B C D 各20G

RAID 0 A+B => 20+20=40(E)

RAID 0 C+D => 20+20=40(F)

在這裡由A B C D 組成了二顆RAID 0的硬碟.雖然容量加總了.但並沒有容錯功能

所以

RAID 1 E+F => 40+40=40(G)

RAID 1+0 則是反過來運作

RAID 1 A+B => 20+20=20(E)

RAID 1 C+D => 20+20=20(F)

RAID 0 E+F => 20+20=40(G)

作RAID 最好是都用相同容量的硬碟,如果容量不同.則以當中容量最小的為基準

如 A=20G B=30G C=40G

RAID 0 A+B => 20+30=40

RAID 1 A+B => 20+30=20

RAID 5 A+B+C => 20+30+40 => 20+20=40 (n-1)

各種RAID架構比較表

RAID方案
硬碟數
可用容量
效能
安全性
主要應用
JBOD
大於2
全部
不變
幾乎等於0
容量至上
RAID 0
大於2
全部
最高
危險
追求效能的狂熱玩家
RAID 1
2
總容量的50%
稍有提升
最高
完全不能出錯的資料備份
RAID 0+1
4以上的偶數
總容量的50%
極高
同時需要備份和效能,且預算無上限
RAID 5
3以上
N-1顆
讀快寫慢
同RAID 0+1但預算限制

[……]

閱讀更多

美國虛擬主機比較表 (2014年10月最新評估)

文章出處
http://www.lowest-price-web-hosting.com/big5/compare-plans.shtml?b5

概括BlueHostHostMonsterIX Web HostingHostGatorJustHost主機商運作年數14149104客戶人數1,900,0001,700,000200,000400,000300,000獎章數目889338 月費BlueHost
PlusHostMonster
PlusIX Web Hosting
Expert PlanHostGator
Baby PlanJustHost
Just Plan貨幣美金美金美金美金美金1個月月費–$9.95月費
+ $30設定費$7.96月費-3個月預繳月費–$7.95月費
+ $30設定費–6個月預繳月費—$7.96月費-12個月預繳月費 $7.95月費$7.95月費$6.95月費
$3.95月費
43%折扣優惠$7.96月費
20%折扣優惠!$3.95月費24個月預繳月費$6.95月費$6.95月費$6.95月費
$2.95月費
58%折扣優惠$7.16月費$3.50月費36個月預繳月費$5.95月費$5.95月費$6.95月費
$1.95月費
71%折扣優惠$6.36月費$2.75月費主要主機規格BlueHostHostMonsterIX Web HostingHostGatorJustHost網頁存放空間無限制無限制無限制無限制無限制每月網站流量無限制無限制無限制無限制無限制可建立額外網站無限制無限制無限制無限制無限制多組獨立FTP帳號1,000無限制2,500無限制無限制支援匿名 FTP 登入–有有-支援CGI-BIN, Perl, Python & SSI有有有有有支援PHP有有有有有支援FrontPage Extensions有有有有有支援下載主機流量檔案有有有有有支援文件夾密碼保護有有有有有電子郵件功能BlueHostHostMonsterIX Web HostingHostGatorJustHost可開立Email帳號數
(POP3/IMAP)無限制無限制2,500無限制無限制Email自動轉寄功能無限制無限制無限制無限制無限制Email自動回覆功能無限制無限制無限制無限制無限制網頁收發電子郵件Webmail有有有有有Email 防垃圾信功能有有有有有作業系統/軟件BlueHostHostMonsterIX Web HostingHostGatorJustHost主機作業系統 LinuxLinuxLinux (Red Hat)LinuxLinux網站管理介面
(Control Panel)CPanel X
(支持中文)CPanel X
(支持中文)特制
(H-Sphere)CPanel X
(支持中文)CPanel X
(支持中文)網站流量分析Webalizer, AWStatsWebalizer, AWStatsWebalizerWebalizer, AWStatsWebalizer, AWStatsMySQL 資料庫功能BlueHostHostMonsterIX Web HostingHostGatorJustHost支援MySQL資料庫無限制無限制50個無限制無限制支援PHPMyAdmin網上資料庫管理有有有有有域名支援功能BlueHostHostMonsterIX Web HostingHostGatorJustHost支援次網域
(Subdomains)無限制無限制無限制無限制無限制支援指向域名
(Domain Pointer)無限制無限制有無限制無限制網站購物功能BlueHostHostMonsterIX Web HostingHostGatorJustHost共用加密套接字協議層
(Shared SSL)有有有有有支援網上購物車 Agora, osCommerce, Cube, ZenAgora, osCommerce, Cube, ZenosCommerceosCommerce, Cube, ZenAgora, osCommerce, Cube, Zen付款方式BlueHostHostMonsterIX Web HostingHostGatorJustHost信用卡有有有有有PayPal有有有有有技術支援BlueHostHostMonsterIX Web HostingHostGatorJustHost24/7 Email技術支援有有有有有24/7 電話客服支援有有有有有Live Chat 支援有有有有有其他BlueHostHostMonsterIX Web HostingHostGatorJustHost免費域名有有有-有退款保證任何時候任何時候30 天45 天任何時候瀏覽網站BlueHostHostMonsterIX Web HostingHostGatorJustHost閱讀評論BlueHostHostMonsterIX Web HostingHostGatorJustHost
[……]

閱讀更多