上班打卡鐘資料格式轉換(java 8)

導入新系統最麻煩的就是: 新舊系統並行,

舊的考勤導出文件只有一種格式, 因此新系統必須能夠讀懂舊文件, 再導進新系統,

若無法讀取, 或是舊版打卡有缺陷, 例如2021沒有20,只有21, 那必須寫轉資料程式, 加上20, 反正就是把一份純文字, 再加工轉成另一份純文字文件.

JAVA 文件範例如下,請自行加工:

android取得藍芽裝置連線狀態

Java

public static boolean isConnected(BluetoothDevice device) {
    try {
        Method m = device.getClass().getMethod("isConnected", (Class[]) null);
        boolean connected = (boolean) m.invoke(device, (Object[]) null);
        return connected;
    } catch (Exception e) {
        throw new IllegalStateException(e);
    }
}

Kotlin

fun isConnected(device: BluetoothDevice): Boolean {
  return try {
    val m: Method = device.javaClass.getMethod("isConnected")
    m.invoke(device) as Boolean
  } catch (e: Exception) {
    throw IllegalStateException(e)
  }
}

運作中AD Server,vm操作不當被刪,還原後悲哀結局

運作中網域伺服器(AD Server), 因操作不當其vm被刪除, 剛好兩天前有snapshot, 於是還原起來, 乍看之下運作正常, 其實是失敗.

因內網有兩個AD, 被刪除AD的資料早已跟另一台同步,因此回朔兩天前AD, 其資料也是異常的, 間接造成各式各樣,依賴網域認證的系統, 跟著異常, 好慘.


原本想說來個強制重新同步,將還原的AD,強制從正常的AD同步回來, 但是怕怕的, 還是決定刪了就刪了,也不還原, 再另外安裝一台AD重新同步吧.


postfix ldap測試/查詢帳號是否存在

postfix 很常見搭配微軟的AD , AD的設定檔長這樣, 檔案名稱為 xxx.cf

server_host = <AD server IP>
search_base = ou=xx,dc=yyy,dc=com
version = 3
query_filter = (&(objectclass=*)(mail=%s))
result_attribute = samaccountname  #Account from DC
result_format = %s/Maildir/
bind = yes
bind_dn = cn=zzz,cn=Users,dc=yyy,dc=com
bind_pw = password

配合以下指令,可以用來查詢email對應的帳號是否正確

postmap -q  abc@yyy.com ldap:/directory/xxx.cf

這樣就可以測試帳號是否存在了

git lfs下載時出現404 object not found問題

解決方式

  1. 下載mirror git專案
    git clone --mirror <git url>
  2. 找出有問題的object OID
    cd git專案
    git lfs fetch --all
  3. 透過OID,找出有問題的LFS檔案, 並且把檔案名稱都記下來
    git log --all -p -S <OID>
  4. 下載BFG repo cleaner (java 程式)
    https://rtyley.github.io/bfg-repo-cleaner/
  5. 清理檔案
    java -jar bfg.jar --delete-files <file name> <git location : xxx.git>
  6. 重新整理
    cd xxx.git
    git reflog expire --expire=now --all && git gc --prune=now --aggressive
  7. 收工
    git push
1 2 3 ... 52