OpenProject與GIT整合

OpenProject能與GitHub、GitLab深度整合,當然也包含一般git server或local git。整合後,專案成員可看到所有檔案內容,我覺得有必要管控權限,畢竟有些人只要看到修改記錄即可,如PM。

既然我的目標只是想讓OpenProject能看到git的修改記錄,於是硬著頭皮改openproject程式,好險不難,硬生生讓我改成只能看到修改記錄。

詳請參考咖啡偶之書。

https://book.kafeiou.pw/books/openproject/page/git

OpenProject 翻譯

我在進行OpenProject翻譯時,把特殊的部分列出來(後續在咖啡偶之書更新):

Placeholder Users  ->  非專案成員 ── 原本翻譯成佔位符用戶
Repository -> 版本庫  ── 大部分都翻譯成儲存庫,但在Open project很確定是版本控管git or svn

要抓特定檔案裏面特定字串,可執行以下指令

 find . -name '特定檔案' | xargs egrep "特定字串"

guacamole酪梨醬如何計算工時

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書架

我的軟體工程概念很差,最近遇到一個案子,我想要找人一起,但是那個同事主管說要寫提案,了解後才會分配資源。

於是我想到了「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上。

https://book.kafeiou.pw/

另外有個很棒bookstack網站建議大家參考一下 BUBU 知識庫 & 秉迅資訊.Studio

moodle 有email通知功能,居然要額外安裝測試外掛

只好安裝,才能測試是否設定成功

https://moodle.org/plugins/local_mailtest?nonjscomment=1&comment_itemid=1527&comment_context=50&comment_component=local_plugins&comment_area=plugin_general&comment_page=1

當然通知是可以關閉的

Administration -> General -> Messaging -> Notification settings

nextcloud誤刪檔案,還原失敗

慘,我的錯。

解決方式:
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 聯盟功能Federation

先講結論,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. 遠端使用者將會接收到分享目錄的請求

1 2 3 ... 5