2021/10/29

透過.NET c#產生 odt 格式文件OpenDocument 文字 (.odt)

現在政府機關都會要求資訊人員要能產出可編輯的ODT文件,供下屬單位填報資料時運用,而不能使用原來的 Word Docx等格式。

如果把一個odt檔案的副檔名改為.zip,再用解壓縮檔解開,可以看到當中有content.xml這個檔案,他其實就是我們在LibreOffice內所編輯的文件內容(context)。所以準備好一個乾淨的範本文件,將content.xml置換為我們需要的內容,再重新壓縮該檔案、更改檔名,就能產出我們要的odt檔案。

一個基本的content.xml背後基礎是XML文件跟樣式檔,框架會包含字形、樣式以及文字。

<office:document-content office:version="1.2">

<office:font-face-decls>

</office:font-face-decls>

<office:automatic-styles>

</office:automatic-styles>

<office:body>

<office:text text:use-soft-page-breaks="true">

<text:p text:style-name="P1">Hello World</text:p>

</office:text>

</office:body>

</office:document-content>

該檔案遵循XML架構,但對不熟悉tag樣式標註方法的人,要手動拼湊出所有的樣式非常困難,必須靠不斷的預覽來比較跟Word文件裡所見到的內容,這也是早期OpenOffice常常被說做出來的元件不像Word,無法真正所見即所得的原因。所以,透過Word轉出包含大部分文件格式的框架,存成範本文件,再由C#讀出文字並替換需要的內容或表格,會是較簡便的方法。

以第一個區段而言,我們可以看到檔案中所用到的字形

以第二個區段而言,我們可以看到他用類似CSS標註方式的格式,將文字區段內用到的每個樣式都列出。以最佳化的角度而言,很多樣式應該是重複的,可以不用列出這麼多筆。但Word產出的東西就是這樣,有時一個反覆編輯的檔案,樣式設定的內容可能還比內文長。
要產出範本文件時,建議可以整理一下文件的格式,使其檔案大小不要太龐大。

上傳進度:已上傳 98530 個位元組 (共 98530 個位元組)。

內文的部分,則與一般HTML文件類似,主要有文字段落的<text:p>,以及較複雜的<table:table>等。如前文的建議,面對有複雜要求的表頭,先完成繪製與轉換成ods,再用字串取代置換content.xml,即可得到需要的內容。







2021/8/9

SonarQube 源碼掃描初體驗

 資安法通過上路之後,政府機關對於應用系統的防護實作必須更加精準,核心系統或採購金額大於一千萬元以上的系統必須執行源碼掃描。但源碼掃描的執行與修補耗費時間與可觀的成本,再交由第三方執行之前,先自己執行一次並完成可行的修補,會是比較好的做法。

1.  SonarQube 是開源套件,可從以下網址下載社群版

https://www.sonarqube.org/success-download-community-edition/

2.下載後解壓縮到D:\SonarQube

3.SonarQube使用JAVA 開發,因此需要安裝JDK 11以上,且設定  %JAVA_HOME% 為安裝目錄。以下雖然會用Docker安裝減少設定的複雜度,但在電腦上掃描時仍會遇到JAVA。請留意,裝 JAVA Runtime會一直鬼打牆,沒用!! 




4.利用Docker WSL2 安裝SonarQube,

4.1 安裝docker (建議至少要有8-16G的RAM)

4.2 取得 SonarQube 影像檔
在裝好Docker的電腦直接下:
docker pull sonarqube


裝好後記得啟動,第一次網址預設會在

5.設定啟動專案

6.準備好VS 2017的MSBuild 相關程式(跟你在開發的編譯器版本要一樣)

7.準備好待掃描原始碼,佈建client 掃描程式

我們的專案不能公開上傳到雲端平台,而且是需要編譯的C#程式,所以要佈建 .NET的Scanner掃描專案。注意,一個方案可能包含多個關聯的小專案,要掃描就要整包掃描,不然會發生找不到東西的問題。

Download and unzip the Scanner for .NET

Visit the official documentation of the Scanner for .NET to download the latest version, and add the executable's directory to the %PATH% environment variable


8.結果瀏覽與修補

Security優先

自動測試覆蓋率會影響分數

留意Code Smell(複製貼上、沒用到的變數、太多空白行、命名格式)、程式認知複雜度、巢狀if波動拳、沒必要的註解、不安全的外部程式碼、補齊無障礙網頁瀏覽的元素
 





2021/4/7

養成高效能的工作習慣



養成高效能的工作習慣


史蒂芬柯維在《與成功有約:高效能人士的七個習慣》一書中提到過幾個高效能的習慣:

一、積極主動 為抉擇負責
二、以終為始 謀定而後動
三、要事第一 優先做有價值的事 不被瑣事弄得團團轉
四、注重雙贏 群體互敬互惠
五、知彼解己 尋求理解
六、統合綜效 合作共好
八、不斷更新 養精蓄銳


另外一篇討論高薪族特質的文章,則談到『能否晉升至高薪之列的職涯關鍵期,只有短短的十五年、頂多二十年。「大概四十歲就可以見真章了,如果你四十歲時仍在低薪的職位上窮忙、瞎混,日後躋身高薪的機會,就越發渺茫了!」』對比泛泛之輩,高薪族普遍做到以下的事情:


一、敢於設定優於單位角色的工作目標
二、攸關整體組織利益的議題,勇於表達意見
三、睡前或上班前擬好工作清單,並定時更新
四、關心財經科技新聞
五、心中有學習效法對象
六、常常充電進修閱讀(一年至少參加一次進修或教育訓練)
七、換工作重視成長性(能否提升視野更勝於薪水多寡)
八、有固定運動習慣
九、能容忍工作時數長


綜合上述,可以發現共同的特質:

  • 主動積極,不只有規劃力,也有實踐力
  • 關心群體,不只獨善其身
  • 像貧鈾彈一樣「自銳」:強化個人、穿破困局,越磨越利

資料來源:https://www.managertoday.com.tw/articles/view/53116

2021/3/13

工作的熱情在哪裡??

人要完全從事有興趣的工作,很難。要從工作中獲得滿足感,更難。
對工作的精熟程度、影響力,技能的提升,人際的影響力,才是滿足感的來源。
從事工作越久,且越能掌握上述的成果,熱情終將隨精熟而生。
工作也許不會符合個人的興趣,但如果把標準降低,
不要那麼在意工作帶來的喜悅,
而是從工作中累積樂趣,還是會有得心應手的一天。
如果亂槍打鳥,則可能一無所獲。

所以,剛開始一份新工作前,要像埋頭苦幹的小學徒,精熟一些工作必備的東西。讓自己變強。

https://www.youtube.com/watch?v=5P9O5cLWCE0