若我們可以透過下列方法,去取得指定時區的時間
2013年11月25日 星期一
Node.js中Socket.io套件傳送訊息方式
傳送訊息方式
廣播資訊給在socket.room的人,除了發送者自己
socket.broadcast.to(socket.room).emit('updatechat', msg);
傳送更新資訊給自己
socket.emit('updatechat', msg);
socket.to(socket.room).emit('updatechat', msg);
傳送資訊給所有socket
io.sockets.emit('updatechat', msg);
傳送資訊給在socket.room的連線
io.sockets.in(socket.room).emit('updatechat', msg);
參考資料
2013年11月13日 星期三
使用指令(command line)看phpinfo
直接觀看phpinfo
$ php -i
將phpinfo資訊存成檔案輸出
若phpinfo的資訊太多,導致整個畫面無法顯示所有phpinfo資訊,則可以將phpinfo輸出成檔案,以便查找
$ php -i > phpinfo.txt
或
$ echo "<?php phpinfo(); ?>" | php > phpinfo.txt
參考資料
關閉Response Header中的Apache Server版本及PHP版本
有時候因為安全性問題,想要讓我們提供的服務揭露越少自己的資訊,提高被攻擊的難度
在PHP設定檔中 (
關閉Apache Server版本顯示
在Apache設定檔中 (
/etc/apache2/apache2.conf) 設定或加入ServerTokens Prod重新啟動Apache,然後你就會看到Response Header中顯示為 Server: Apache
ServerSignature Off
| ServerTokens Value | Server Sends |
|---|---|
| Full (or not specificed) | Server: Apache/2.2.17 (Win32) PHP/5.2.17 |
| Prod (or ProductOnly) | Server: Apache |
| Major | Server: Apache/2 |
| Minor | Server: Apache/2.2 |
| Min (or Minimal) | Server: Apache/2.2.17 |
| OS | Server: Apache/2.2.17 (Win32) |
關閉PHP版本顯示
在PHP設定檔中 (
/etc/php5/apache2/php.ini) 設定或加入expose_php Off重新啟動伺服器,然後你就會看到Response Header中,原本的
X-Powered-By:PHP/5.3.2-1ubuntu4.21 這樣的訊息就不見了參考資料
2013年9月18日 星期三
使用MongoDB做地理位置查詢(進階版)
在"使用MongoDB做地理位置查詢(簡易版)"一文中有提到,當我們在做LBS查詢時,還想要對資料做排序及分頁功能時,資料的結果會不符合我們的預期,因為當你在使用limit去做資料筆數的限制時,MongoDB 的作法撈取距離最近的筆數資料,撈出來後再做時間的排序,所以才會看到這樣的結果。
如果我們想要對LBS的查詢結果再去做子查詢,來達到資料分頁的效果,則需要使用 MongoDB 的 Aggregation 功能,Aggregation 可以針對上一查詢的結果,再去做另外的子查詢,所以 Aggregation 的順序是有差別的,盡可能好將能夠快速過濾資料的查詢語法放到最前方,這樣可以提升查詢時的效能。
但我們如果要使用 Aggregation 做地理位置查詢,則需要將該LBS 查詢放在 Aggregation 查詢的第一個位置才可以做 LBS 的查詢。
如果我們想要對LBS的查詢結果再去做子查詢,來達到資料分頁的效果,則需要使用 MongoDB 的 Aggregation 功能,Aggregation 可以針對上一查詢的結果,再去做另外的子查詢,所以 Aggregation 的順序是有差別的,盡可能好將能夠快速過濾資料的查詢語法放到最前方,這樣可以提升查詢時的效能。
但我們如果要使用 Aggregation 做地理位置查詢,則需要將該LBS 查詢放在 Aggregation 查詢的第一個位置才可以做 LBS 的查詢。
PHP5.4安裝MongoDB PHP extension發生mongo: Unable to initialize module解決方法
最近在測試環境將PHP升級到5.4後,要照先前"在Ubuntu12.04安裝MongoDB及PHP extension"文章寫的步驟安裝 MongoDB PHP extension時,發現一直讀取不到 Mongo extension 的問題,查了一查才發現原來是安裝到PHP 5.3版的MongoDB extension Driver,所以才導致讀取不到Mongo extension 的狀況。
$ php -v
PHP startup mongo: Unable to initialize module
Module compiled with module API : 20090626
PHP compiled with module API : 20100525
These options need to match.
2013年9月17日 星期二
使用MongoDB做地理位置查詢(簡易版)
因為智慧型手機的普及,LBS(Location Based Service) 的服務在近期還算是蠻夯的服務,例如找附近的人,找附近的店家,找附近的大眾運輸工具...等等之類的在地化服務,若要將這類的服務資料查詢做在 MySQL ,對於資料庫來說是相當沉重的負擔,因為要服務的使用者每次位置座標皆不相同,所以要查詢的每個標的與使用者的距離也不相同,所以每次的查詢就要針對資料庫的的所有資料去做運算,或是限制要查詢資料的座標範圍以減少查詢計算的資料量,像是只找台北的標的資料,可是這樣的資料量還是相當龐大的,如果有
10 萬 筆資料要做查詢計算, 100 個 使用者做查詢就需要對 1000 萬筆(100 * 100000) 資料做查詢計算,這對於資料庫的運算是一個很大的負擔,而 MongoDB 有提供這類地理查詢的方法及優化。使用 $near 做地理位置查詢
建立測試資料(以台北捷運為例)
我們在MongoDB建立捷運台北車站附近的捷運站座標資料,另外加入建立時間資料,我們會想要除了做地理位置搜尋,搜尋出來的資料還可以依照時間做排序。
訂閱:
文章 (Atom)
