Nextcloud又一個坑,使用onlyoffice造成的

上次提到我又回歸使用 onlyoffice 75.1版,過了一段安穩日子後,沒想到居然遇到有個pdf,裡面小圖片不見的靈異現象,我還罵同事眼睛業障重,叫同事把看不到圖的那個pdf檔案,直接下載改用adobe reader看看,結果是「要不是我親眼所見,我是萬萬不能相信啊」,還真的連我都業障重,onlyoffice就是看不到小圖片,而adobe reader可以。

後來我先解除onlyoffice檢視pdf檔案設定,改使用nextcloud外掛 pdf.js, 就可以看到原本看不到的小圖片了,坑真的很多很大。

問題雖暫時解決,但pdf.js 功能太少了,不能鎖下載,也不能有浮水印,Gold害。

在沒有更好的處理方案前,我只好先搞定“公司規定不能下載PDF”的規定;最後手動修改程式,直接暴力停用pdf.js的下載功能
環境是:nextcloud 26,pdf.js 2.6

vi /var/www/html/apps/viewer/js/viewer-main.js
# 找到以下字串,將紅色部分刪掉
,e.canDownload?t(“NcActionLink”,{attrs:{download:……,e._v(” “),e.canDelete?…

cd /var/www/html/apps/files_pdfviewer
egrep -r "toolbarViewerRight" .|more
# 找到toolbarViewerRight 後面加上 hidden='true'

另外,安裝完pdf.js 我不確定是否要執行”啟用” javascript功能,但還是記下來好了(官網有特別提到此指令)

docker exec --user www-data -it nextcloud2 php occ config:app:set files_pdfviewer enable_scripting --value=yes

			
		

Android 13真真氣死人,APP欲取得外部檔案真實路徑有夠困難

後來我才知道 Android 10 (API Level 29) 已經預告取得外部檔案真實路徑的方式已經改

好險,有神人寫了好用的程式能「取得檔案的絕對路徑」,並且在 stackoverflow 說明原由,使用方式也超級方便的,請參找此神人的程式 https://github.com/HBiSoft/PickiT,一定不會失望而歸的。

「FydeOS – 为中国用户打造的ChromeOS」初體驗

公司希望Android撰寫的測試程式移植到windows平台上,但是這樣做很耗時,程式要重新開發; 因此我想到讓筆電或電腦桌機能夠直接執行android, 這樣就能解決問題了。

我排除已知的解決方案之一-Android模擬器、windows 11模擬andorid不考慮(因為要停用了)。

最後我希望類似chrome book 使用chrome OS直接支援android 的方式,沒想到還真的找到了 –FydeOS

安裝FydeOS有些眉角要注意的:

  1. 筆電-panasonic CF-NX3,12G Ram
  2. 官方安裝方式,我要連續安裝好幾次才成功
  3. 安裝時,我的舊電腦BIOS先調整非UEFI才能安裝,安裝後再調回UEFI,才能啟用開發者模式(v18版)
  4. 安裝時,我使用本機帳號,不線上註冊
  5. 安裝完畢,FydeOS系統成功開機,啟用Android位置權限失敗,後來發現安裝Open GApps,GApps會將Play商店裝起來,才能啟用位置權限
  6. Play商店無法登入(未通過Play防護安全認證)
  7. 其他方面很順,簡直就是chrome book

Linux背景執行

以前我在Linux要背景執行程式,在最後面加上 「&」即可,後來發現這樣好像不正統,因此改用nohub以shell方式執行。

啟動(start.sh)

#!/bin/bash
nohup /usr/lib/jvm/jdk-17-oracle-x64/bin/java -jar api.jar &> /dev/null &

結束(stop.sh)

#!/bin/bash
ps -ef | grep "api.jar" | grep -v grep | sed 's/ [ ]*/:/g'|cut -d: -f2| kill -9 `cat`

nohub解釋如下(出處)

說明
nohup 指令會執行 Command 參數及任何相關 Arg 參數所指定的指令,忽略所有掛斷信號 (SIGHUP) 或修改使用 -p 選項指定的處理程序以忽略所有 SIGHUP 信號。 SIGHUP 是在處理程序的控制端關閉時傳送給處理程序的信號。

在登出之後,也可以使用 nohup 指令在背景中執行程式。 To run a nohup command in the background, add an & (ampersand) to the end of the command.

nextcloud帳號停用會發生什麼事情

所有分享的檔案與目錄,都會失效
  1. 若公司綁定M$ Active Directory(網域主控伺服器),只要停用主控站帳號即可,不會造成分享的檔案目錄失效,而nextcloud的帳號也不需停用

  2. 若沒有綁定網域主控伺服器,則需要移轉檔案所有權(files:transfer-ownership),然後再停用nextcloud的帳號。

    使用該帳號進行移轉



    使用指令方式移轉

https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/occ_command.html#file-operations

另外還可透過資料庫,查詢所有分享連結,以及其擁有者,語法如下

# 例如某個連結失效了 https://cloud.test.com/s/T8wnofnnZjHk93e
# 我們可以透過以下語法,找到哪個帳號停用了
select * from (
select uid_owner uid,ldap_dn name,token from oc_share,oc_ldap_user_mapping where uid_owner=owncloud_name
union
select uid_owner uid,displayname name,token from oc_share,oc_users where uid_owner=uid
) as NewUnionTable
where token='T8wnofnnZjHk93e'

強制”只”將特定分支push到git 伺服器上

我的git用戶端只要是push就會把阿貓阿狗分支都push上去,這樣無腦的方式有時候反而有點麻煩,尤其是有些分支不想push上去。

若只想要把本地端master push上去,其他分支都不用,就不能借助有UI的用戶端程式,只能靠指令了。

git push -f origin master

修改註冊表以停用切換中文輸入法(shift鍵)

話說我一度以為酪梨醬解決了切換中文輸入的問題,結果並沒有,真是掉漆。

後來我只能退而求其次,使用酪梨醬之前,先關掉左邊shift鍵來停用主機本體的中文切換,這樣就可以解決遠端連線切換問題;使用完畢後,再還原主機本體的左邊shift鍵。

這樣做法對我來說不是很難,但難的是”會忘記”切換回來,所以我也不用問麻瓜了,自己都不能接受這做法。

於是我再再退而求其次,找到透過「修改註冊表」的方式,來「停用/啟用」切換中文輸入法。

# dos 指令
# 0x00000001 (啟用)、0x00000002 (停用)
powershell -Command Set-ItemProperty -Path 'HKCU:\Software\Microsoft\IME\15.0\IMETC' -Name 'Left Shift Usage' -Value 0x00000002

這樣或許我就可以寫個簡單的windows程式,或是批次檔案,一旦執行,會先關閉左邊shift鍵切換中文功能,然後召換chrome瀏覽器帶出酪梨醬網址,使用完畢後,程式或是批次檔案會自動回原回原本的設定,這樣就不會再忘記切換回來了。

# dos 指令 (存成bat檔案)
powershell -Command Set-ItemProperty -Path 'HKCU:\Software\Microsoft\IME\15.0\IMETC' -Name 'Left Shift Usage' -Value 0x00000002


powershell -NoProfile -Command ^
Start-Process -passthru chrome.exe '酪梨醬網址' ; ^
while ((get-process -name chrome).count -ne 0){} 


powershell -Command Set-ItemProperty -Path 'HKCU:\Software\Microsoft\IME\15.0\IMETC' -Name 'Left Shift Usage' -Value 0x00000001

更改windows 10、11開機後顯示登入的帳號

一般來說個人用的Windows,本機帳號可以直接登入;若為公司網域帳號或個人m$的帳號,就必須經過認證(密碼,認證器)才能登入。而且windows會記住上次登入的帳號,重開機後,會直接顯示該帳號,我們只要輸入密碼,就能登入了。

但是麻瓜們總是會忘記自己登入的帳號,一旦有人用其他帳號登入,那麼下次開機,windows顯示的就不是原本麻瓜的帳號,這樣麻瓜會爆走,IT就挨踢了。

為了解決這個問題,我挖阿挖阿挖,在這裡找到解法,只要修改註冊值,重新開機就好了。

註冊表

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI

註冊值

LastLoggedOnDisplayName 設定「網域\帳號」,如:SHORTDOMAIN\kafeiou    (這我沒看到,沒設定好像也沒差)
LastLoggedOnSAMUser  設定「網域\帳號」,如:SHORTDOMAIN\kafeiou
LastLoggedOnUser  設定「網域\帳號」,如:SHORTDOMAIN\kafeiou
LastLoggedOnUserSID 輸入該帳號的SID,如:S-1-5-21-112
SelectedUserSID  輸入該帳號的SID,如:S-1-5-21-112


其中SID取得方式:

wmic useraccount where name='登入帳號'

另外還有人說這個地方也要改

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\LastUsedUsername

也有人說要檢查這裡

netplwiz

**臨時用其他帳號登入,又不想被人家發現,可以以照上述方法(需管理者權限),改回原本登入帳號。

1 2 3 4 5 6 ... 77