發表文章

IT|軟體|測試|JMeter 自動生成測試報告

圖片
Jmeter 簡介 JMeter 是 Apache 組織下一套百分之百由 Java 來開發的 open source 軟體,主要設計用來測試軟體行為在負載較重的情況下是否能夠正常運作且不出錯,以及測量軟體在給定負載量(or給定壓力)下的效能表現。 官方網站: http://jmeter.apache.org/ Jmeter   自動化測試 Jmeter  可根據設定好的測試計畫(jmx)來執行測試。執行測試後,產生  Jmeter  測試結果(jtl)。最後根據  Jmeter  測試結果(jtl),來產生測試報告(網頁)。 自動生成測試報告,可分為兩種: 全新產生:jmeter 測試結果(xx.jtl) 以及測試報告路徑(xx\resultReport\)不可存在,否則  Jmeter 會執行失敗。 結合先前的  Jmeter  測試結果(jtl),產生這次的測試報告 # 全新產生本 次測試報告 jmeter -n -t test.jmx -l result.jtl -e -o /tmp/ResultReport 說明: -n: 非GUI模式執行 JMeter -t: 執行測試檔所在的位置 -l: 指定生成測試結果的保存檔,jtl 檔案格式 -e: 測試結束後,生成測試報告 -o: 指定測試報告的存放位置 注意:-l -o 指定的檔及資料夾,必須不存在,否則執行會失敗 寫好的 bat 內容: set _jmeter_root=C:\lab\400\apache-jmeter-3.1 For /f "tokens=1-4 delims=- " %%a in ('date /t') do (set _thisdate=%%a%%b%%c) For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set _thisTime=%%a%%b) set _jmeter_resultReport_root=%_jmeter_root%\bin\tmp\ResultReport_%_thisdate%_%_thisTim...

IT|軟體|程式語言|Java String 效能

String 的其他最佳實踐      2016-12-27 Tue #用 equals 時總是把能確定不為空的變量寫在左邊,如使用"".equals(str) 判斷空串,避免空指針異常 #第二點是用來排擠第一點的.. 使用 str != null && str.length() != 0來判斷空串,效率比第一點高。 #在需要把其他對象轉換為字符串對象時,使用 String.valueOf(obj) 而不是直接調用 obj.toString()方法,因為前者已經對空值進行檢測了,不會拋出空指針異常。 #使用 String.format()方法對字符串進行格式化輸出。 #在 JDK 7及以上版本,可以在 switch 結構中使用字符串了,所以對於較多的比較,使用 switch 代替 if-else。 參考資料: [1] Java 字符串拼接效率分析及最佳實踐

IT|資訊安全|Java 中常用的加密方法

SHA     21 November 2016  是一種數據加密演算法,該演算法經過加密專家多年來的發展和改進已日益完善,現在已成為公認的最安全的散列演算法之一,並被廣泛使用。 該演算法的思想是接收一段明文,然後以一種 不可逆的方式將它轉換成一段(通常更小)密文 ,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信 息摘要或信息認證代碼 )的過程。 散列函數值可以說時對明文的一種"指紋"或是"摘要"所以對散列值的數字簽名就可以視為對此明文的數字簽名。 SHA 與 MD5 比較     21 November 2016  因為二者均由  MD4  導出, SHA-1  和  MD5  彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同: 對強行攻擊的安全性:最顯著和最重要的區別是  SHA-1  摘要比 MD5 摘要長 32 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對  MD5  是 2^128 數量級的操作,而對  SHA-1  則是 2^160 數量級的操作。這樣, SHA-1  對強行攻擊有更大的強度。 對密碼分析的安全性:由於  MD5  的設計,易受密碼分析的攻擊, SHA-1  顯得不易受這樣的攻擊。 速度:在相同的硬件上, SHA-1  的運行速度比  MD5  慢。 BASE64     21 November 2016  按照 RFC2045 的定義,Base64 被定義為:Base64 內容傳送編碼被設計用來把任意序列的8位字節描述為一種不易被人直接識別的形式。(The Base64 Content-Transfer-Encoding is designed to represent arbitrary sequences of octets in a f...

IT|軟體|POI Apache Microsoft Office 格式檔案讀和寫功能

怎麼會命名成 Poor Obfuscation Implementation     15 November 2016  POI 套件從 2001 年就開始了初始專案,由於 MS 的封閉特性,Office 檔案格式並沒有開放,作者就戲稱這個檔案格式是非常難以被理解,很混亂的一種檔案,就用了 Poor Obfuscation 這兩個字,當然還是成功地被 reverse-engineered,成就了這個專案,除了 MS Office 軟體之外,我們現在也可以用程式產生 Office 檔案。 主要元件     15 November 2016  Excel (XSSF=HSSF+XSSF) HSSF, XSSF Excel 分為兩種檔案格式,比較舊的是 HSSFWorkbook,檔案格式為 Excel 1997-2003 版的Excel,副檔名是 xls,XSSFWorkbook 是 Excel 2007-10 的版本,副檔名是 xlsx。 基本的階層概念為一個 xlsx 檔案 XSSFWorkbook,裡面有多個工作表 XSSFSheet,每一個 Sheet 下面有一個表格,裡面有多列資料 XSSFRow,每列資料中有多欄資料儲存格 XSSFCell。 階層關係 XSSFWorkbook -> XSSFSheet -> XSSFRow -> XSSFCell 物件與檔案格式對應關係 Word (HWPF+XWPF) PowerPoint (HSLF+XSLF) OpenXML4J (OOXML) OLE2 Filesystem (POIFS): OLE 2 Compound Document format 的Java Implementation OLE2 Document Props (HPSF): Open Packaging Conventions (OPC) 的 Java Implementation Outlook (HSMF) Visio (HDGF+XDGF) TNEF (HMEF): Microsoft's TNEF (Transport Neutral Encodi...

IT|資料庫|PostgreSQL 在同一台主機執行多個實例

圖片
PostgreSQL 介紹 PostgreSQL 是以加州大學伯克利分校計算機系開發的 POSTGRES 版本 4.2 為基礎的對象關係型數據庫管理系統( ORDBMS ), 簡稱  pgsql, 是一個自由的對象 - 關係數據庫服務器 , 由社區驅動的的對象 - 關係型 數據庫系統 , 它支持大部分 SQL 標準並且提供了許多其他現代特性 , 它在靈活的 BSD- 風格許可證下發行 . 越來越多的人用它來取代 mysql 。 已成為開發首選的開源關係型數據庫 。 在同一台主機上開多個 PostgreSQL 程序     2016-12-06 9:24      PostgreSQL 的使用方式是先初始化一個資料庫並且啟動它,接著就會啟動相關程序,並去監聽 port。一個 Postgres 程序,是用他開啟的資料庫 instance 來區分的。 同一台主機上,也就能夠開很多個 PostgreSQL,而且也不見得一定要由 PostgreSQL 專有帳戶 postgres 來開一個資料庫 instance。 方式只要初始化一個新的資料庫就有了。 初始化新資料庫: 執行下面指令,就會產生出兩個資料夾,這兩個個別就代表一個資料庫 postgres $ initdb -D /var/lib/pgsql/9.5/data/ --locale=zh_TW.UTF-8 -A md5 -W cchsu $ initdb -D /home/cchsu/pgsql/9.5/ --locale=zh_TW.UTF-8 -A md5 -W 接者啟動時,指定不同 port 分別為5432及5433來開,就會跑出兩個 Postgres instance 了 postgres $ pg_ctl -D /var/lib/pgsql/9.5/data/ -o "-p 5432" -l logfile start cchsu $ pg_ctl -D /home/cchsu/pgsql/9.5...

IT|資料庫|MySQL 安裝於 Mac OS

圖片
安裝 MySQL [開始下載] MySQL官網下載頁面: https://dev.mysql.com/downloads/mysql/ [安裝] 在此選擇的是最後一個 dmg 格式的安裝檔,下載後直接安裝製可 Mac OS 安装 MySQL 需要注意事項     [關於 my.cnf 路徑] 透過以下指令查詢 my.inf 路徑 mysql --help | grep 'Default options' -A 1 Kevins-MacBook-Pro:etc Kevin$ mysql --help | grep 'Default options' -A 1 Default options are read from the following files in the given order: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf /usr/local/mysql/my.cnf ~/.my.cnf Mac  MySQL 軟體安裝在此 /usr/local/mysql-5.7.17-macos10.12-x86_64 將 my-default-cnf 檔案拷貝到 /etc 目錄 sudo cp /usr/local/mysql-5.7.17-macos10.12-x86_64/support-files/my-default.cnf /etc/my.cnf [修改使用者密碼] 方法一:使用有權限或要修改的使用者本身登入mysql # mysql -u root -p mysql> SET PASSWORD FOR 'username'@'localhost' = PASSWORD('password'); mysql> flush privileges; 方法二:使用有權限的使用者登入mysql # mysql -u 登入使用者 -p mysql> use mysql; mysql> UPDATE us...

IT|作業系統|Linux|CentOS|CentOS 7 安裝於 VirtualBox

圖片
安裝 CentOS    2017-12-17 週日  首先需要下載 CentOS,請按以下連結下載即可。若有 Docker 安裝需求,由於只支援 CentOS 6.5 或以上,最後安裝 CentOS 7.x 以上的版本。 CentOS 下載: https://www.centos.org/download/ VirtualBox 虛擬化軟體下載: https://www.virtualbox.org/wiki/Downloads 安裝好 VirtualBox 後,執行左上方「[新增」選單 配置 Guest OS 記憶體,建議配置不要少於 3GB,惟須考量 Host OS 實體記憶體大小。 按下「繼續」,這步是要求大家設定虛擬硬碟的類型。為節省空間選擇「立即建立虛擬硬碟」,再按「建立」。 選擇虛擬影像檔格式,建議採用 VirtualBox 專屬檔案類型 VDI,便於日後空間不足時可動態擴充。 接著選「動態配置」便可。 然後是分派 Size,按自己實際需要進行設定即可,然後再按下「建立」便完成 VirtualBox Guest OS 的設定了。 此時會見到這畫面。在這裡請於左方剛建立的名稱按下滑鼠右鍵,然後選「設定值」即可。 請選上方的「存放裝置」選單,然後選「空」再於右方的光碟圖示按一下,並再選擇「選擇虛擬光碟檔案」,然後選取剛下載回來的 CentOS ISO 檔案後再按下方「完成」即可。 [進入 CentOS 安裝] 然後請按上方的 「啟動」按鍵,接著會彈出一個黑色畫面,此時代表終於開始安裝 Linux 了。 第一個畫面請選「Test this media & Install CentOS 7」。以預設的安裝設定完成安裝,假如大家對 Linux 熟悉話,請自行以常用方法解決 Linux 安裝部份。 請等一會,此時會出現這畫面,這裡就是開始安裝 CentOS 的畫面,請先選擇安裝過程採用的語言後再按「Continue」。 接著按「Installation Destination」,進行初步設定後按下「Begin Installation」。 ...

IT|資訊系統|專案管理|Redmine Project management system (PMS) 協同專案管理系統建置

圖片
專案管理的優缺點     2016年7月12日 Redmine 是一個開源的項目管理系統,它有如下優勢讓我選擇它作為我的項目管理工具。 [優點] Redimne 是免費的!如果會安裝也會維護的話,可以省下不少錢。 彈性的角色管理。 有甘特圖跟日曆功能可以使用。 開 issue 跟開 ticket 很方便。 支援透過電子郵件新增問題。 有繁體中文介面可以使用。 [缺點] 要自己安裝,而且電腦要裝好 Ruby on Rails 的環境,這對一般使用者來說就是一個頗高的門檻。 [實務上的困難] 通常一人專案的開發者容易採取邊做邊想的方式來做專案,這跟上述的思考方式、和習慣完全背道而馳,也無法估計時間,因此如果要組織一個團隊做事、享受團隊所帶來效率,勢必要改變習慣,而過程其實是需要練習摸索的。 使用 Docker 搭一个Redmine  CentOS 結合 Docker + Redmine [ 安裝步驟 ] 安裝 fig sudo yum install -y python-pip sudo pip install -U fig 若出現錯誤,使用以下兩行指令更新 sudo easy_install six sudo easy_install requests 創建 redmine 資料夾 mkdir ~/docker/redmine Docker search redmine; 查詢看官方是否出  Docker 鏡像或者其他人作好鏡像了,若是有就直接引用就好。     $ docker search redmine     NAME                            ...

IT|軟體|VirtualBox 虛擬空間動態調整與通訊轉送

圖片
介紹 VirtualBox 是免費好用的虛擬機器,不過偶而會遇到一種情況:剛開始裝設的虛擬機器只是用來測試,所以一開始沒有配給很大的虛擬硬碟,不過後來測試的東西越來越多導致原有硬碟容量不足,在以前的 VirtualBox 版本中虛擬硬碟 (VDI,Virtualbox Disk Image) 一旦決定了最大值是無法事後擴增的,因此只能建立一個新的。在 VirtualBox 4.x 以後的版本已經支援 VDI 容量擴增與壓縮,不過官方並不建議這樣做,故沒有製作 GUI 的調整方式,僅提供指令來 擴充/壓縮 硬碟映像檔。 [ 動態空間調整 ] 放大硬碟空間 (限定使用  vdi 格式 )    July 20, 2016  放大硬碟空間 VBoxManage modifyhd  Win7-旗艦版.vdi  --resize 512000 壓縮虛胖的硬碟空間     2016年5月19日 VirtualBox同時支援自己的虛擬硬碟格式VDI和Vmware的VMDK格式,兩種格式的壓縮略有不同。 [磁碟重組] : 第一步要做的是磁碟重組,打開虛擬機器,執行下面的命令: Linux下 sudo dd if=/dev/zero of=/EMPTY bs=1M sudo rm -f /EMPTY Windows下 Windows系統需要下載  Sysinternals Suite   解壓縮後 路徑請放在: C:\SysinternalsSuite 執行以下指令 sdelete –z Sysinternals Suite 壓縮檔 [壓縮資料] 關閉虛擬機器,現在可以開始壓縮虛擬硬碟了如果你的虛擬硬碟是 VirtualBox 自己的VDI格式,找到你的虛擬硬碟檔,執行命令: MAC VirtualBox 應用程式安裝路徑:/Applications/VirtualBox.app/Contents VBoxManage.exe modifyhd mydisk.vdi --compact 如果你的虛擬硬碟是V...

IT|軟體|開發|Gradle 專案建置自動化工具

圖片
簡介 Gradle 簡單說就是 Java 世界的 Makefile,它可以幫忙打理那些在專案開發過程中的瑣事,舉凡編譯、測試、檢查程式碼、產生文件、清理或壓縮檔案、上傳、發佈、重新啟動伺服器到送出電子郵件,都可以利用 Gradle 撰寫的 Script 來自動完成作業。 Java 建構工具 Ant、Maven vs Gradle 比較    2016年7月15日 [Ant]  Ant 的主要優點在於對構建過程的控制上; Ant是第一個「現代」構建工具,在很多方面它有些像Make。2000年發佈,在很短時間內成為Java項目上最流行的構建工具。它的學習曲線很緩,因此不需要什麼特殊的準備就能上手。它基於過程式編程的 idea。在最初的版本之後,逐漸具備了支持插件的功能。 主要的不足是用 XML 作為腳本編寫格式。 XML ,本質上是層次化的,並不能很好地貼合  Ant  過程化編程的初衷。 Ant 的另外一個問題是,除非是很小的項目,否則它的  XML  文件很快就大得無法管理。 後來,隨著通過網絡進行依賴管理成為必備功能, Ant  採用了 Apache Ivy 。 [Maven] Maven  發佈於 2004 年。目的是解決碼使用  Ant  所帶來的一些問題。 因為  Maven  主要聚焦於依賴管理,實際上用  Maven  很難寫出複雜、定制化的構建腳本,甚至不如  Ant 。 Maven  的主要優點是生命週期。只要項目基於一定之規,它的整個生命週期都能夠輕鬆搞定,代價是犧牲了靈活性。 Maven  仍舊使用  XML  作為編寫構建配置的文件格式,但是,文件結構卻有巨大的變化。 Ant  需要碼將執行  task  所需的全部命令都一一列出,然而  Maven  依靠約定( convention )並提供現成的可調用的目標( goal )。不僅如此,有可能最重要的一個補充是, Maven  具備從網絡上自動下載...