essoduke's blog

五年來,jQuery tinyMap 已邁入 v2.8.4,期間也是因為有許多網友們的建議,才能有逐漸成型的今日,就連 Facebook 分享數都突破了 300 大關,真是深感意外。

所以我整理了幾個比較特殊的問題並整理成範例讓更多人可以參考。

找出距離最近的標記

可以利用 Google Maps API 提供的幾何圖形程式庫來計算各點與目前的直線距離。

要使用該程式庫,在引入 API 時需加上 libraries=geometry 參數:

<script src="http://maps.google.com/maps/api/js?sensor=false&libraries=geometry"></script>

在 Map Idle 事件內用迴圈逐一比對各標記與某點之間的距離,並將所得結果(公尺)存入陣列,再找出陣列最小值的索引值即可。

繼續閱讀

前陣子一直在玩 Starbound(雖然目前已荒廢),當時為了想推坑所以就想架個伺服器試試,於是找到了這篇入門文章,經由作者同意後我就翻譯貼上來了。

原文連結: Daniel Sokolowski’s Blog: Starbound Dedicated Server Setup

Thanks to Daniel Sokolowski.

Starbound 專用伺服器架設

使用 Debian 架設全天候的 Starbound 伺服器

Starbound 是一款類 Terraria 的外太空生存 / 建造遊戲。

在觀看一些影片並且實際試玩了一下後,我只能說這款遊戲內的豐富生態和可掠奪的星球設定很對我胃口。因此除了原有的 minecraft.danols.com 之外,我決定再為 Starbound 架設一個全年無休的專用主機 starbound.danols.com,以下就是架設教學。

取得 Debian linux 伺服器

如果你尚未擁有 Linux 伺服器,我推薦 Linode Xen VPS 提供的主機服務 – 最基本的方案就行了。至今我使用他們的服務超過五年,覺得無可挑剔。

雖然坊間還有其他更便宜的主機商,但是一分錢一分貨是不變的真理;況且最基本的方案就足以讓我架設 FreeSWITCH VOIP、Minecraft、電子郵件以及跑一些網站了。

繼續閱讀

javascript-i18n-core 可以輕鬆在專案內加入 javascript 的本地化。

v1.1 版更新了語系檔嵌套的支援。

舊語法只能使用一對一的字串,對於管理維護不太方便:

{
    "hello world": "你好,世界。"
}

新版本則支援嵌套方式。

{
    "hello": {
        "world": "世界",
        "%1 kitty ", "%1 的凱蒂"
    }
}

使用上如同以往,除了嵌套需以 . 來呼叫(也就是語系檔的 KEY 除了嵌套之外不能使用)。

i18n._('hello.world');
i18n._('hello.%1 kitty', 'my');

fullurl 是一個可以取得或產生子網域的小函數,好像很難說明…

假設網站使用下列三個包括使用 https 和不同埠號子網域、以及兩組主網域(開發 test.com、上線 test.tw):

  • http://www.test.com, http://www.test.tw
  • http://user.test.com:5678, http://user.test.tw:5678
  • https://ec.test.com, https://ec.test.tw

若在開發環境內需要產生連結至 https://ec.test.tw 的網址,以往的方式可能就是 parse_url$_SERVER 來組合,甚至是將主網域寫死等到上線再改一次,依照懶人哲學這實在是浪費生命又不環保,於是 fullurl 就出現了。

以上述為例,我只需要呼叫 fullurl('ec', true); 在開發環境能產生 https://ec.test.com,而上線後則會自動產出 https://ec.test.tw

至於埠號也是能經由參數任意控制,例如 fullurl('user', false, 5678); 就能產出 http://user.test.com:5678;或是帶入 0 消除埠號,例如在 http://user.test.com:5678 的環境下使用 fullurl('www', false, 0); 能產出 http://www.test.com

更多例子、沙盒及原始碼:

http://app.essoduke.org/sandbox/fullurl.php

echo fullurl();
// Get the current URI.
// output: http://app.essoduke.org

echo fullurl('ftp');
// Replace 'ftp' with current subdomain.
// output: http://ftp.essoduke.org

echo fullurl('hello.');
// Append 'hello' to current subdomain.
// output: http://hello.app.essoduke.org

echo fullurl('ssl', true);
// Set HTTPs on
// output: https://ssl.essoduke.org


好像是個無關痛癢的小分享…