OpenProject與GIT整合
OpenProject能與GitHub、GitLab深度整合,當然也包含一般git server或local git。整合後,專案成員可看到所有檔案內容,我覺得有必要管控權限,畢竟有些人只要看到修改記錄即可,如PM。
既然我的目標只是想讓OpenProject能看到git的修改記錄,於是硬著頭皮改openproject程式,好險不難,硬生生讓我改成只能看到修改記錄。
詳請參考咖啡偶之書。
OpenProject能與GitHub、GitLab深度整合,當然也包含一般git server或local git。整合後,專案成員可看到所有檔案內容,我覺得有必要管控權限,畢竟有些人只要看到修改記錄即可,如PM。
既然我的目標只是想讓OpenProject能看到git的修改記錄,於是硬著頭皮改openproject程式,好險不難,硬生生讓我改成只能看到修改記錄。
詳請參考咖啡偶之書。
我在試用openproject的時候,官方提供的docker指令只能看出容器大版本,很難看出細一點的數字(openproject/community:13),於是我找到一個程式,後面接容器名稱,就能列出所有的版本。
https://github.com/axil/docker-registry-list/tree/master
python3 -m pip install requests
wget https://github.com/axil/docker-registry-list/raw/master/docker-registry-list.py
chmod +x docker-registry-list.py
./docker-registry-list.py <container image name>
我在進行OpenProject翻譯時,把特殊的部分列出來(後續在咖啡偶之書更新):
Placeholder Users -> 非專案成員 ── 原本翻譯成佔位符用戶
Repository -> 版本庫 ── 大部分都翻譯成儲存庫,但在Open project很確定是版本控管git or svn
要抓特定檔案裏面特定字串,可執行以下指令
find . -name '特定檔案' | xargs egrep "特定字串"
guacamole是很棒的網頁版遠端連線工具,就差在切換輸入法不是那麼簡便。
公司可以安裝酪梨醬,綁定員工帳號只能連到員工主機,也不開放員工自行設定連線,搭配現在guacamole已經可以設定遠端開機,就可以讓員工遠距連線工作,而公司方面可以計算員工工時,若員工加班也能有所憑證。
我安裝的酪梨醬使用mysql,計算工時的語法如下:
# 可計算同一天連線小時(小數第二位)
SELECT username ,DATE_FORMAT(start_date, "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
group by username,the_same_date
order by username,the_same_date desc
#若資料庫時區沒有調整,預設是UTC,可暫時使用CONVERT_TZ轉換正確時區
SELECT username ,DATE_FORMAT(CONVERT_TZ(start_date,'+00:00','+08:00'), "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
group by username,the_same_date
order by username,the_same_date desc
# 排除每次連線低於30分鐘
SELECT username ,DATE_FORMAT(start_date, "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
where TIMESTAMPDIFF(MINUTE,start_date,end_date) >= 30
group by username,the_same_date
order by username,the_same_date desc
#若資料庫時區沒有調整,預設是UTC,可暫時使用CONVERT_TZ轉換正確時區
SELECT username ,DATE_FORMAT(CONVERT_TZ(start_date,'+00:00','+08:00'), "%Y%m%d") the_same_date, cast(sum(TIMESTAMPDIFF(MINUTE,start_date,end_date))/60 as decimal(9,2)) overtime_hour
from guacamole_connection_history
where TIMESTAMPDIFF(MINUTE,start_date,end_date) >= 30
group by username,the_same_date
order by username,the_same_date desc
為了員工健康,要設定上線時間
另外酪梨醬預設60分鐘沒有任何遠端連線,會整個登出。
可搭配遠端桌面連線相關設定
vi guacamole.properties
##### 修改30分鐘整個網頁登出(必須在沒有任何連線的情況下)
api-session-timeout:30
可以搭配設定閒置30分鐘後,遠端桌面連線自動登出,此時酪梨醬沒有任何連線了,過30分鐘也跟著登出了。
bookstack 真是越來愈好用,其「變動日誌」類似git版控系統commit messages功能,可以記錄修改原因。
https://book.kafeiou.pw/books/bookstack/page/bookstackiso
我的軟體工程概念很差,最近遇到一個案子,我想要找人一起,但是那個同事主管說要寫提案,了解後才會分配資源。
於是我想到了「SRS(Software Request Spec)軟體需求規格」當作提案,但是又不想要用傳統的word檔案書寫(很難維護),於是上網找了一下軟體需求與功能規格書的範例,終於找到滿意的書寫格式-使用gitbook
https://mason1762.gitbook.io/samxinbakery/gong-neng-ge
可惜gitbook自架很麻煩,於是我又找到相似而且可以自架、開源的系統-bookstack
bookstack宣稱是wiki軟體,也可以當知識管理,以書架、書本為基本架構的系統
https://demo.bookstackapp.com/books
安裝方式很簡單,我這次寫在網誌裡,也沒放在svn系統(https://docs.kafeiou.pw/!/#iammis),而是直接現學現賣,把安裝方式寫在自架的bookstack上。
另外有個很棒bookstack網站建議大家參考一下 BUBU 知識庫 & 秉迅資訊.Studio 。
慘,我的錯。
解決方式:
1. 到nextcloud該使用者目錄,找出<user>/files_trashbin/files 複製到 <user>/files
2. 執行 php occ files:scan –all
若出現 Exception during scan: “files/xxx”) is locked 則進入資料庫,刪除資料表資料 DELETE FROM oc_file_locks WHERE 1;
刪除之後,再次執行 php occ files:scan –all 還原檔案後,原本分享的狀態可能會不見,要自己重新設定了。
先講結論,nextcloud聯盟功能分享的目錄,並不會把檔案傳到對方服務器。(這樣就無法達到檔案兩邊都有的需求)
如何正確啟用聯盟功能
1. 啟用「Federation」app
2. 在管理介面->分享頁面,做好設定以及加入遠端服務器
3. 設定檔加上「allow_local_remote_servers = true」
修改 config/config.php
或是下指令
occ config:system:set allow_local_remote_servers --value true --type bool
4. 同步位址簿(需加入crontab定期執行)
occ dav:sync-system-addressbook occ federation:sync-addressbooks
5. 分享目錄給遠端的聯盟使用者
6. 遠端使用者將會接收到分享目錄的請求