因為身邊有不少電子產品、遙控器等器材,所以在 10 年前就開始使用鎳氫充電電池。但使用充電電池比較頭大的,應該就是鎳氫電池的供電電壓在 1.2V 而已,因此充滿電的電池相較於鹼性電池的 1.5V 電壓算是偏低,甚至部份器材會直接說電池電量偏低。
這幾天在找東西的時候,無意間發現台灣廠商做出了 1.5V 的 3 號、4 號鋰電池,可以讓電壓維持在 1.5V 左右,並且有過度放電保護,會在電池用盡之前自動斷電。而 OXOPO 家則是使用鋰電池的一些特性,取代原有 3 號、4 號電池的電池。
軟體開發、伺服器和生活瑣事
在約 15 年前有嘗試想要自己做一個縮網址服務 (現在我做加長網址服務 XD),當時用來產生 string ID 的方法有弱點,被學弟抓出來打爆 (可以被預測下一個產生出來的 ID,然後建立 unliminted redirection)。最近摸到 crunch 這個工具,在重新思考以後,終於搞清楚向 ppt.cc 請教時得到的說明是什麼意思。
先說明有問題的作法,先建立 valid characters list,URL 有部份特出字元是 reserve character (RFC3986),所以像是 ?
、=
、@
等字元有特殊用途不能被拿來當作參數傳遞,然後做「N 進位」轉成 string ID:
<?php $char = ['a', 'b', 'c', '.....', '7', '8', '9', '0'];
例如:數字是 1
時,產生出來的 ID 是 a
、數字是 116
時產生出來的 ID 是 a1
。當時我是依照流水號,所以 ID 是可以被預測的,導致弱點被利用。
當時得到 ptt.cc 的回覆是「先產生完 key 再隨機選取可用的 key」。
這陣子才搞懂這個說明,先用 crunch 之類的工具把所有可用的 string 都先產生出來,然後需要時再隨機選取一個 string 來當作 key/ID 使用。這個作法有些優點:
接下來要傷腦筋的,大概就是怎麼樣有效率的從 DB 隨機取 key 了。
ps. 目前使用 3 個 digits,大概就有 20 多萬個 unique string 可用了,爽。
SQL server 並不支援 MySQL 連線或查詢,但可以透過 ODBC 和 SQL server 的「Linked Database」功能將 query 轉送至 MySQL 執行。
SQL server 是透過 MSDASQL 功能來與 ODBC 連線,所以建立連線前要先做好 ODBC 資料來源設定和 MSDASQL 的設定。ODBC 的 MySQL 來源設定可以參考弊站稍早「安裝 MySQL ODBC driver」的說明,MSDASQL 的設定必須先透過 SSMS 的 sa 帳號,從「物件總管」=>「伺服器物件」=>「連結的伺服器」=>「提供者」=>「MSDASQL」點選右鍵,檢視「屬性」,檢查是否需要特殊的設定 (一般用途使用預設值即可):
確認 MSDASQL 的參數均正確後,在「連結的伺服器」點選右鍵「新增連結的伺服器」開始設定新的連線。在資料來源選項中要注意「提供者 (provider)」必須選擇「ODBC drivers」,資料來源的名稱必須與 ODBC 中的資料來源名稱一致 (注意名稱中的英文大小寫及符號):
ODBC 的原文是「Open Database Connectivity」,透過各家 DBMS 實作指定的 API / interface 來支援各種不同的資料庫系統、儲存格式。這邊將安裝 ODBC MySQL connector/ODBC 並建立 MySQL connection resource。
透過搜尋引擎可以找到很多 ODBC driver,這邊要裝的是 MySQL driver,所以會下載 Oracle 發佈的 MySQL ODBC driver。安裝過程全部使用預設值即可。
安裝完畢後,可以在開始功能表的「Windows 系統管理工具」中找到「ODBC 資料來源」,執行並準備連到 MySQL:
要建立 MySQL resource 預先需要一些準備工作,讓 ODBC 可以透過指定的 MySQL user 連線:
安裝好 SQL server 後打開 SSMS,預設會使用 Windows 安裝者的帳號當作 sa 作為系統管理員登入。但往後建立的帳號若均使用 SQL server 進行認證的話,則無法使用 SSMS 操作。以下將說明如何設定 SQL server 同時支援二種類型的驗證方式。
More “透過 SSMS 設定 SQL Server 同時支援 Windows 認證與 SQL Server 認證” »