2013年11月25日 星期一

JavaScript時間時區轉換

沒有留言:
在使用JavaScript去取得時間時,都會受限於使用者自己電腦時區時間的影響

若我們可以透過下列方法,去取得指定時區的時間



參考資料

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版本

沒有留言:
有時候因為安全性問題,想要讓我們提供的服務揭露越少自己的資訊,提高被攻擊的難度

關閉Apache Server版本顯示

在Apache設定檔中 (/etc/apache2/apache2.conf) 設定或加入
ServerTokens Prod
ServerSignature Off
重新啟動Apache,然後你就會看到Response Header中顯示為 Server: Apache



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 的查詢。


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建立捷運台北車站附近的捷運站座標資料,另外加入建立時間資料,我們會想要除了做地理位置搜尋,搜尋出來的資料還可以依照時間做排序。

ADS