選購 Casio 太陽能電波錶

用過幾款手錶跟手環, 決定買 Casio 電波太陽能錶, 主要功能: 電波自動校時.

健康手環興起時, 也用過幾款跟手機校時以及 GPS 校時的手錶/手環, 但都有一個特點: 耗電, 大約只有 1 週到 1 個月. 後來有一款 Garmin VivoFit 3 可以撐 1 年, 算是比較重要的突破, 而跟手機連線, 還是有一點點不方便.

而目前用的手錶錶面已經有不少刮痕, 錶帶換過一次後, 最近又有點裂開的樣子, 考慮之後決定再買支新錶.

這時候就考慮入門電波錶在一萬元內, 網友經驗是 Casio 的校時成功率較高, 就挑了幾款:
1. STW-1000 : 簡易運動型, 日本才有, 約 $2700 .
2. M5610 系列 : 經典型, 台灣有, 約 $3200 .
3. M100 / M510 : G-Shock 運動風, 台灣有, 約 $4200 .
4. M700D : 金屬錶帶, 石英錶風格, 日本才有, 約 $7000 .

原本考慮請親友從日本帶 STW-1000 實用取向, 也考慮網購平行輸入 M700D 搭配襯衫參加正式場合.
考慮在台灣使用, 可能還是有保固為佳, 有問題再請以前的同事幫忙送台灣卡西歐; 雖然很喜歡 M700D , 但正式場合太少, 求職也只要戴原本的經典款就好.

然後觀察幾天, 剛好在網購有特價, 就選了 M100 系列, 跟 M510 只差在外殼, 機芯一樣, 現在就等貨到了.

https://www.linkedin.com/pulse/%25E9%2581%25B8%25E8%25B3%25BC-casio-%25E5%25A4%25AA%25E9%2599%25BD%25E8%2583%25BD%25E9%259B%25BB%25E6%25B3%25A2%25E9%258C%25B6%25E5%25BF%2583%25E5%25BE%2597-%25E8%2590%258A%25E5%25A7%2586-%25E5%258F%25B2

土法煉鋼找出重複檔案較多的目錄

網路磁碟已經成為許多公司共用檔案的地方, 但也因為每個人使用習慣不同, 常常把檔案複製到不同地方, 而造成版本不同.

為了容易找到重複檔案較多的目錄, 就用試算表軟體簡單地分析一下, 用這些步驟來完成:

  1.     快下班的時候, 先把網路磁碟的檔案建立清單. ( dir /a-d /b /s > a.txt )
  2.     用試算表開啟 a.txt , 另存成試算表檔案.
  3.     開始加工, 用 find 函數找出所有 "\" , 這邊沒有用巨集, 而是重複多次, 再用 iferror , 如果已經沒有 "\" , 就用前一次找到的位置.
  4.     例如總共取 10 次. A 欄是"C:\Windows\System32\cmd.exe" , B 欄是 0 , C~L 欄是 =iferror(find($A1, "\", B1+1), B1)
  5.     (過渡時可以用 M1 = L1 - K1 , 然後計算全部 M 欄, 如果加總為 0 , 表示 K 跟 L 是一樣的, 那 L 就超過最後一個 "\" 的位置了, 再往前推就可以找到有最後一個 "\" 位置的檔名.
  6.     找出 "\" 位置後, 就可以用 iferror(mid($a1, c1+1, c1-b1-1),"") 取得每層目錄的名稱. 與前面一樣, 如果字串異常, 就用空白代替.
  7.     這樣就找出網路磁碟上的所有檔案, 以及每個檔案各層目錄以及檔名了. 接下來讀最靠右邊的兩欄, 就是最後一層目錄跟檔案名稱, 這邊比較單純, 用好幾層 if(Z1="",if(Y1="",....,Y1),Z1) 這樣來找出檔名跟上一層目錄.
  8.     篩選掉檔名是 Thumbs.db , _DS_Store 等檔案, 然後對剛剛找到的最下層目錄跟檔名, 合併產生另一欄.
  9.     這邊原本想用 countif(AD:AD,AD1) 的方式, 找出重複的檔案, 但是發現太耗CPU資源, 而且只需要"找到重複字串(最後一層目錄+檔名)", 不需要"統計重複次數; 所以改了一個方式, 把"最後一層目錄+檔名"這欄排序(假設是 AD ), 再用函式 if(AD2=AD1,1,if(AD2=AD3,1,0)) , 這樣就可以找出所有重複的檔案(連最後一層目錄也相同).
  10.     找出重複檔案後, 再用檔名跟最後一層目錄排序, 就可以找到有重複檔案的樣本目錄, 再把目錄字串複製到 WinMerge 等軟體比對, 就可以發現裡面檔案不一致的情況, 再通知該目錄使用者.

就這樣, 其實工具用得不多, 而重要的是每個步驟需要的作法, 再把資料轉成不同格式處理.

https://www.linkedin.com/pulse/%25E5%259C%259F%25E6%25B3%2595%25E7%2585%2589%25E9%258B%25BC%25E6%2589%25BE%25E5%2587%25BA%25E9%2587%258D%25E8%25A4%2587%25E6%25AA%2594%25E6%25A1%2588%25E8%25BC%2583%25E5%25A4%259A%25E7%259A%2584%25E7%259B%25AE%25E9%258C%2584-%25E8%2590%258A%25E5%25A7%2586-%25E5%258F%25B2

沖牙機心得....


其實沖牙機買了一陣子了, 因為小時候牙齒就沒在顧, 工作一陣子就植牙兩顆, 然後開始留意牙間刷, 牙線及電動牙刷, 過好幾年才發現有沖牙機.

因為牙刷再軟, 能接觸的面積也有限, 牙縫間還是容易有殘渣, 而需要其他工具, 牙間刷適合牙縫已經很大的情況, 而適當地用牙線可以協助清除牙縫間的殘渣, 只是最好選"微蠟"的種類, 比較滑順.

但是清除殘渣後, 其實還有很多小碎片, 以及看不見的細菌, 而沖牙機就是在使用牙線清除大塊殘渣後, 沖洗牙縫還有智齒後面不容易刷到的空間.

沖牙機的選擇, 建議可以的話, 選插電且使用水槽的款式.
個人買的是為了在公司用, 所以選電池跟攜帶型的款式, 使用上水量只能沖 1.25 輪, 開新的鹼性電池可以用一個多月, 還是稍微不太方便.

為了牙齒健康, 早點養成 牙刷 + 牙線 + 沖牙機 來維護牙齒健康.

判斷程式的條件

寫程式最重要的是判斷各種條件, 不過要如何判斷程式的條件, 其實也是一個條件.

因為產線有些資料需要判斷是否有異常, 會以時間判斷, 而上午 00:00~09:59 , 在某些資料檔顯示 0:00~9:59 , 在有些資料檔卻是 00:00~09:59 , 所以程式要比對時, 就需要加工處理. 但是這個"加工"過程, 在批次檔內無法處理, 所以只能"分別判斷".

這個"分別判斷", 就是調整程式上的選擇, 前一版的程式, 是用目前時間 %TIME:~0,1% 是否為 0 (00:00~09:59), 若是 0 , 則比對資料檔時, 就用 空白+%TIME:~1,3% ( 0:00~ 9:59)來比對, 如果 %TIME:~0,1% 不是 0 , 比對資料就用 %TIME:~0,4% (10:00~23:59)來比對.

1. 目前時間的十位數是否為 0 , 若是 -> 2 , 若不是 -> 3 .
2. 將十位數用空白取代, 比對資料檔是否有遺漏, 有遺漏則重新啟動撈取程式 -> 結束.
3. 比對資料檔是否有遺漏, 有遺漏則重新啟動撈取程式 -> 結束.

這幾天覺得這樣依目前時間來決定哪些動作, 後續有一些程式都是雷同的. 而有個想法: 原本考慮是因為最後有共同的結束動作, 才會先分成兩部分, 各別跑完再結束, 而批次檔可以"提早離開(exit)", 有了這個想法, 就回頭檢視比對的條件, "是否需要依不同時間比對"?

思考的結果還是需要, 但可以兩種判斷都執行一次, 只要最後 AND 的結果符合就好, 不符合就可以直接"提早離開(exit)", 程式碼就改成:

1. 比對資料檔是否有遺漏, 沒有遺漏則結束.
2. 將十位數用空白取代, 比對資料檔是否有遺漏, 沒有遺漏則結束.
(通過這兩道表示有遺漏)
3.  判斷目前程式是否執行中, 若在執行中, 則強制停止.
4. 啟動程式.

這樣雖然效能低一點點, 但檢查的項目其實變少, 程式也變短了.
所以很多程式的寫法, 是有許多變化, 而就當下的效率, 去找出合適的做法.

https://www.linkedin.com/pulse/%E5%88%A4%E6%96%B7%E7%A8%8B%E5%BC%8F%E7%9A%84%E6%A2%9D%E4%BB%B6-%E8%90%8A%E5%A7%86-%E5%8F%B2/?published=t

Windows 工作排程 + 網路芳鄰 要登入才能用?

Windows 工作排程有一項設定是: "不論使用者登入與否皆執行". 這個設定非常適合主機上有例行性的工作, 管理員不需要登入主機也可以自動運作.

但是這一個設定, 在使用網路芳鄰時卻會遇到問題, 就是工作排程執行時的環境, 與使用者登入時的環境並不同, 如果連線網路芳鄰並取一個磁碟代號(例如: N: ), 在工作排程登入時, 是不會有 N: , 如果要執行的程式設定從 N: 讀寫資料, 在設定"不論使用者登入與否皆執行"的情況下就會發生異常.

要克服這個情況, 就必須在程式執行前, 再完成一次連線網路磁碟機的動作, 所以把原本工作排程執行特定程式, 改成執行一個包裝後的批次檔, 批次檔內容則是:

  • if not exist n:\. net use n: \\ip\share
    或 (net use | find "N:") || (net use n: \\ip\share)
  • (原本要執行的程式)
這樣就可以讓程式需要的網路磁碟環境符合需求了.