Github 程式存取必須使用PAT(Personal Access Token)

之前寫過 用戶端github commit需要改用token密碼 才可以使用,
(或是web browser認證),

也就是說, 使用程式例如 JGIT套件, 帳號密碼,也需要使用token密碼, (ps. 我有時候久了就會忘記,真是糟糕)

Setting->Developer setting

點選Personal access tokens -> 點選 Generate new token , 產生新的token密碼

輸入相關資料, 過期時間(可選永不過期), 與該token權限

將token密碼複製,就可以使用了

android 檢查play store是否安裝

java

public static boolean isPlayStoreInstalled(Context context){
    try {
        context.getPackageManager()
                .getPackageInfo(GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0);
        return true;
    } catch (PackageManager.NameNotFoundException e) {
        return false;
    }
}

kotlin

fun isPlayStoreInstalled(context: Context): Boolean {
    return try {
        context.packageManager
            .getPackageInfo(GooglePlayServicesUtil.GOOGLE_PLAY_STORE_PACKAGE, 0)
        true
    } catch (e: PackageManager.NameNotFoundException) {
        false
    }
}

build.gradle

    implementation 'com.google.android.gms:play-services-base:18.0.1'

android app關於新版本更新的想法

android app 新版本更新,除了google play store之外, 有些不含play store的, 該怎麼做?

簡單的方式就是使用自動更新套件, 搭配自己手動維護版本訊息, app就能自行更新, 但是該套件需要”安裝權限”, 有很大機率會被拒絕, 當然現在也不能上架play store , 除非說明原因.

app也可以自行檢查有新版本(自己手動維護版本訊息), 若有,也可以導到play store或是自己的網頁下載apk程式自行安裝.


val appPackageName =  getPackageName()
val intent = Intent(Intent.ACTION_VIEW).apply {
  data = Uri.parse("https://play.google.com/store/apps/details?id=$appPackageName")
  setPackage("com.android.vending")
}
startActivity(intent)

另外若app可架play store成功, 可以額外下載play store簽名的apk, 使用該apk, 就可以避開簽名者不明的警告訊息呢.

android app字型不隨系統字型大小起舞

重點有二

  1. 在activity set content之前寫死字型大小
  2. 字型大小: resource的fontscale數值
  val resources: Resources = myactivity.getResources()
  var fontScale:Float = 1.0f
  if (resources != null && resources.getConfiguration().fontScale !== fontScale) {
    val configuration: Configuration = resources.getConfiguration()
    configuration.fontScale = fontScale
    resources.updateConfiguration(configuration, resources.getDisplayMetrics())
  }
 // 在set content之前
 setContent {
 }

eset protect企業防毒軟體-虛擬設備初體驗

公司從2010年開始就使用eset防毒軟體, 採用中央控管的方式,這對網管來說有很大的幫助,

但是最近要續約, 新版本9.x居然不支援windows 2008R2 server, 公司又沒有windows 2012R2以上的作業系統, 於是我到官網找了一下,發現有虛擬設備的安裝方式, 支援vmware,virtualbox, 與hyper-v, 只可惜沒有支援Proxmox VE.

不過沒關係, 我下載後,看到檔案是ova格式, 之前有過經驗,解開裡面是vmdk格式, 查了一下裡面的檔案, 使用的是 ide 驅動, 4 GB磁碟空間, 4 GB RAM, 2 CPU.

第一步我先將vmdk轉檔轉成qcow2格式, 作法請參考這裡

接下來到pve server新增一個vm, 然後將轉換後的qcow2檔案,直接覆蓋上去, 就可以啟動, 並且依照指示設定就完成eset安裝了,非常方便.

android強制停用深色模式(Dark Theme)

android 10開始,已經支援Dark Them深色模式, 但程式若沒有調整好, 就會出現有些字憑空消失,或是圖片失真問題,

因此必須修改程式, 先強制停用深色模式, 再思考人生.

  • Activity 加上以下程式 (若使用 AppCompat v1.1.0 ,可以不用加)
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
  • Activity的theme設定,增加 ( theme.xml 或是 style.xml )
   <style name="MyAppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
        <item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
    </style>
 <activity
    android:name=".MainActivity"
	...
    android:theme="@style/AppTheme" >
	...
 </activity>

CentOS 7 docker 防火牆設定

CentOS 7安裝docker之後, 要確認防火牆是否阻擋不需要對外的container

iptables -I DOCKER 1 -i <對外網卡介面名稱>  -p tcp  --dport <埠號碼> -j DROP
# example
# iptables -I DOCKER 1 -i ens19 -p tcp --dport 4822 -j DROP

之前一直以為firewall-cmd 預設都會擋下來, 沒想到docker安裝後,container 似乎都開放了, 看起來還是要小心為妙

2023/09/06

後來發現還是無法阻止外面連到container port 這很奇怪,可能我是早期的docker 20.10.x ,最後追加以下指令直接阻擋container ip

firewall-cmd --direct --add-rule ipv4 filter DOCKER 0 -i eth0 -d 172.0.0.0/8 -j DROP

安裝自己的照片管理軟體-piwigo

這陣子研究清末明初古幣, 於是想起乾脆架設一個照片管理服務器(self hosting), 功能也不用太多, 有hash tag, 搜尋功能也不是很需要, 試用了一款最有名的 https://photoprism.app/ 發現功能太多, 還有AI自動辨識功能, 不符合我的需求.

最後終於找到簡單好用的 https://piwigo.org/ piwigo也有docker版本, 真是太棒了.

我架設了錢幣照片管理網站 – 布書 , 有不輸之意, 古代為錢之意.

安裝piwigo非常簡單

  • 先準備好mysql 這個container, 底下範例,名字叫做 my-mariadb
  • 指令如下, 請注意紅色部分需修改
docker volume create piwigo_config
docker volume create piwigo_gallery

docker run -d  --restart always --name=piwigo --link  my-mariadb:mysql -e PUID=1000 -e PGID=1000 -e TZ=Asia/Taipei -p 2342:80 -v piwigo_config:/config -v  piwigo_gallery:/gallery --restart unless-stopped  lscr.io/linuxserver/piwigo:12.3.0
  • 登入 http://ip:2342
    數據庫輸入mysql , 對應到以上指令中的 –link my-mariadb:mysql
    再輸入該資料庫的帳號密碼, 以及資料庫名稱(這部分我是先創建好資料庫, 沒試過未創建是否自己建立)
    加上 httpd 反向代理, 這樣就大功告成了

更改預設頁面,例如改成tags, docker 進入container, 修改設定檔案

cd /gallery/local/config
vi /gallery/local/config/config.inc.php
############################
$conf['random_index_redirect'] = array(
PHPWG_ROOT_PATH.'tags.php' => 'return true;',
);
############################

2022/10/15

piwigo釋出13.0.0 , 我迫不急待進行升級,結果失敗, 原因應該是我使用非官方的docker版本.
最後只能硬著頭皮,
1. 把舊版(12.3.0) piwigo_images 資料表匯出到新版本(13.0.0)去,
2.並且把舊版本/gallery/_data/i 目錄, 以及/gallery/upload 目錄複製到新版本去, 這樣新版本就告訴你有未處裡的照片, 再自己手動重新建立相本吧, 這也是無可奈何的事情, 希望官方能有解決方案.

python起手式,建立python虛擬環境

網管人員學python, 看到虛擬環境,第六感覺得這很重要

  1. 安裝python
    https://www.python.org/downloads/
    ps. windows安裝,記得要把python程式路徑加到PATH的選項打勾
  1. 安裝virtualenv建立虛擬環境程式
windows:
  pip3 install virtualenv
linux:
  sudo pip3 install virtualenv
  or
  sudo apt install python3-virtualenv
  1. 使用virtualenv建立虛擬環境
virtualenv -p <python程式位置>  <虛擬環境名稱>
or 
sudo -p <python程式位置>  <虛擬環境名稱>

#範例
windows :
  virtualenv -p C:\Users\x\AppData\Local\Programs\Python\Python310\python.exe my-env
linux:
  sudo virtualenv -p /usr/bin/python3 my-env
  1. 進入虛擬環境

    Windows:
    .\xxx\Scripts\activate.bat

Linux:
source ./xxx/bin/activate

william@william-Inspiron-3891:~$ source ./my-env/bin/activate
(my-env) william@william-Inspiron-3891:~$ 
1 ... 14 15 16 17 18 ... 75