2022年1月27日 星期四

採購規劃階段RFI、RFP、RFQ的區别

委外的流程大致可分為:計畫準備、遴選承包廠商、合約執行與管理、運作與維護等階段。其中計畫準備階段則是指擬定RFP階段,基本流程如下:

在擬定RFP之前,則徵求先諮詢專家的意見(Request For Quotation;RFQ),以作為訂價之參考,降低需求不明確及預算不精確的專案風險;

在招標前,會徵求承包廠商意見(Request For Information;RFI),以使需求明確化;

當需求明確後,進行建議書徵求文件(Request For Proposal;RFP)的擬定工作;

在招標過程中,會針對投標者進行資格的審查(Request For Qualifications;RFQ),以挑選出符合需求的承包廠商。

招標或要求供應商報價前,會使用RFQ,以作為招標底價及比價的參考,在業主已寫定的規格中,價格是提案的重點。但私人企業招標時,為節省流程、採購標準化或再次採購時,有時會逕以RFQ取代RFP。

RFI及RFP要求供應商針對專案的建議與解決方案做說明,前者為業主有一些潛在的供應商,但不知他們的供應能力;或是業主要想解決一些面臨的問題,但沒有很具體的解決方式,於是廣邀潛在供應商提出RFI,然後據以篩選出較符合需求的專案執行公司,然後要求被選出的公司近一步提出RFP。基本上RFI階段大都不包含專案費用報價,故供應商提案時注意的重點是產品的規格/性能,或是最能解決業主問題的方法;RFP在階段,業主通常會辦理說明會解說需求或為潛在供應商釋疑,但不一定在每個RFP之前都有RFI。

【資訊需求書】Request for Information (簡稱RFI)

RFI又可稱為Call For Information(簡稱CFI),是一個業主/買家用來徵求供應商對產品、工程或服務規劃的文件。此僅為一資訊請求,並不作為對供應商採購的承諾。RFI不是必要之程序,且無制式格式,一般是以問答方式列出業主所想收集之資訊,在此階段雖大多不包含專案費用報價,但仍必須全力展現供應商的長處,若我商有對於此產品有特殊專利或Know-how,則應該先申請專利或智慧財產權保護的前提下,將業主或買主未來的RFP引導到我方特殊專利或規格上,也就是所謂的”Spec-in,此為絶佳時機。

【提案邀請書】Request for Proposal (簡稱RFP)

較大型標案中,甲方會提供RFP給所有有意願承包的乙方當參考資料,RFP的內容主要是針對甲方所欲外包的工作,做更詳細的說明,乙方可以更清楚地評估自身承接標案的能力,並據以評估時程、成本之後,做出報價。

【報價邀請書】Request for Quotation (簡稱RFQ)

通常業主在RFQ文件中必須詳細定義產品規格、品質要求、預計應用、驗證方式、出貨包裝、交貨數量及出貨日期等等,然後發出該RFQ給潛在供應商,而身為供應商的我方,應依照客戶需求依序列示我方產品的符合程度或提出更佳建議方案,並提出最具競爭力的價格方案。

什麼是Expression of Interest (EOI)?

EOI和LOI (Letter of Intend)都稱為意向書,是買方參與該案的意願表達,屬於很初始的文件,不具有任何約束力。前者通常在閱讀機密文件(Confidential Information Memorandum, CIM)但在作信用調查(due diligence, DD)及管理階層會議之前,所以多為很概略式的陳述;後者通常在仔細閱讀賣方條件、初步評估及DD之後,雖不具任何約束力,但形式上較EOI正式。

其內容通常包含一信函及有關團隊組成、公司營收資料及相關實績介紹等資料。

資料來源:https://gpa.taiwantrade.com.tw/zh/pages/success/project-documents

2022年1月21日 星期五

務實地評估磁碟儲存系統的效能

林振誠
現任普安科技技術處技術支援部資深副理,在磁碟陣列研發、測試領域有近10年的經驗。


效能永遠是一個充滿爭議的問題,廠商基於突顯產品特色的立場,必然會以最理想情況下測得的數值作為規格基準,而使用者在購入產品後,也必然希望它能發揮出和宣傳中數值一樣的效能。然而由於應用環境與操作方式的差異,用戶實際得到的產品效能與廠商宣稱多少有些差異,許多誤解也就由此產生。

就整個IT硬體架構而言,含有機械元件的磁碟系統一直是決定IT系統效能的關鍵,因此了解磁碟系統的I/O效能,也成為評估整個IT系統運作能力不可或缺的一環。

但對磁碟系統來說,存取性能往往會受到從前端伺服器到後端儲存裝置的每一環節所影響,普安科技技術處資深副理林振誠提醒,在評估採購需求或建置、調校磁碟系統時,必須注意存取資料流流經的每一環節,認清效能瓶頸所在,才能對症下藥。

問:影響磁碟儲存系統效能的因素有哪些?
答:從前端伺服器到後端儲存裝置,每一環節都會有影響,只要任一環節有所差異,得到的效能數值就會不同。

我們可以將整個磁碟儲存系統分成三部份來看;一、前端伺服器;二、伺服器與磁碟陣列間的傳輸通道;三磁碟陣列本身。

問:前端伺服器影響效能的因素有哪些?
答:伺服器本身的處理器、記憶體、磁碟系統以及匯流排規格,都關乎伺服器發起存取需求的能力。如果伺服器不夠快,發起存取需求的能力不夠,那傳輸通道頻寬再大、後端磁碟陣列再快,也沒辦法充分發揮,這會變成後端的磁碟陣列經常閒置,等待前端伺服器發起存取需求。這些規格中尤其是匯流排的影響經常被忽略。

對4Gb/s頻寬的光纖通道來說,採用PCI-X介面的伺服器已經無法滿足需求,目前企業級磁碟陣列與4Gb FC通道的性能都已經超過1條PCI-X的頻寬,如果用戶的伺服器是以1張PCI-X介面的FC HBA連接磁碟陣列,那無論如何都無法得到磁碟陣列的最大效能。要充分發揮傳輸通道的可用頻寬,最好是在兩條PCI-X上安裝兩張HBA卡,分別連接磁碟陣列上不同RAID Group,將負載分散到兩條PCI-X匯流排上。當然如果改用頻寬更高的PCI-e介面,問題就會減少許多。

問:伺服器應用程式的類型會不會造成影響?
答:會。有些應用程式如資料庫,需要的是隨機存取性能,有些應用程式如備份、視訊播放則注重連續存取效能,而不同磁碟陣列的存取特性都不同,某些差別還必須在有大量存取需求的大型環境中,才能發現。

以我們之前碰過的一個用戶為例,他們的應用系統講求的是:大量伺服器同時發出存取需求時,磁碟系統的回應時間(response time)。在測試中,某產品在少量存取需求時,還能維持相當短的回應時間,但若同時收到的存取需求增加,回應時間馬上大幅上升。相比之下,另一個產品在少量存取需求時的回應時間比較遜色,但在同時大量存取要求下,還能維持相對較低的回應時間。對用戶來說,他們需要的就是後面這個系統。但從這個例子來看,這種產品間的差異必須在特定環境下才能看出來。

問:傳輸通道的因素又是如何?
答:一般提到的磁碟效能規格中,傳輸通道頻寬是最清楚易懂的,4Gb/s的光纖通道比2Gb/s快,也比採用1GbE的iSCSI快,不過某些特殊類型的傳輸通道規格的頻寬,就不能這樣直接理解。如目前SAS規格是3Gb/s,也就是300MB/s的頻寬,但SAS具有四合一頻寬聚合技術,可以把4條SAS匯流排聚合成1組,因此頻寬就成為300MB/s×4,也就是說,當磁碟陣列以SAS纜線直接連接伺服器時,將能得到1.2GB/s的最大頻寬。

問:在磁碟陣列這一端,影響的因素有哪些?
答:不同的硬碟數量、轉速與控制器設計都會造成效能上的差異。目前1臺1.5萬轉硬碟的持續傳輸能力最高可達到125MB/s,7,200轉硬碟則在80、90MB/s左右,因此某些在宣稱能提供數萬個IOPS,或能達到上千MB/s傳輸速率的系統,事實上都是依靠大量硬碟的同時存取,並開啟多條FC通道才達到的,有時甚至還要外接的擴充硬碟櫃,以增加整體系統的硬碟數量。

另外,控制器對I/O處理能力也有很大的影響。同樣是16臺硬碟的磁碟陣列,由於控制器使用的處理器性能差異,對每秒處理的IO數有時可相差一倍以上。

問:對磁碟陣列來說,有哪些可以作為評估效能的指標?又有哪些工具可以使用?
答:主要是兩個指標:每秒處理的IO數量(Input/Output per second,IOPS),以及每秒傳輸多少MB(MB per second)。業界一般是以Iometer來測試磁碟陣列,透過參數的調整,可以模擬不同的存取行為。當然任何測試工具都有盲點,最好的評估方式,還是使用企業本身實際執行的應用程式,才能看出磁碟陣列的真實表現。整理⊙張明德


業界視為標準的磁碟效能測試工具:Iometer

Iometer是目前業界量測儲存系統I/O效能的標準工具,可藉由負載產生器(Workers)的參數調整,透過測試元件產生不同區塊大小的輸入輸出請求與讀取/寫入的分布比例,模擬網路伺服器、檔案伺服器以及線上交易資料庫的讀寫行為。由測試得出系統的最大I/O處理能力、傳輸速率與CPU占用率,使用者即可評估在不同應用環境下,伺服器儲存系統或是外接儲存設備的性能。Iometer本身是一套開放原始碼軟體,最新的版本為2006.07.27,可支援Windows、Linux、Solaris與Mac OS X等平臺。

Iometer重要參數:
Iometer內可調節的參數相當多,我們從一般效能測試中常用的一些參數,逐一簡單說明。

拓墣面板
Worker:設定每個磁碟同時執行的執行緒(thread)數目。對一些高性能伺服器或企業級儲存設備,必須增加Worker數目,才能測得最大的效能。

磁碟目標面板
# of Outstanding IO:設定每個磁碟同時發起I/O的數量,若是模擬串流檔案的播放或類似環境,可用預設值1。若要模擬同時有多個應用程式發出存取需求的環境,可依不同狀況設定。不過如果設太大的話,系統很可能會當機。

存取明細對話框
Transfer Request Size:每個I/O存取需求的Bytes大小,要測試系統最大I/O處理能力可設為512Bytes,要測試最大傳輸能力(MB/s)可設為128kB到512kB。

Percent Read/Write Distribution:讀取/寫入比例,模擬一般應用程式存取可設為50%讀+50%寫,或60%讀+40%寫;若要模擬備份寫入行為,可設為100%寫入;若要模擬還原動作,可設為100%讀取。

若要讓GbE這類全雙工通道發揮最大效率,可設為50%讀+50%寫,以便啟動雙向傳輸。

Percent Random/Sequential Distribution:隨機/循序存取比例,若要模擬多媒體串流檔案播放,或是大量連續資料的備份/還原,可設為100%循序存取;若要模擬高交易資料庫,可設為100%隨機存取。

測試設定選單
Run Time:測試執行時間,一般設為30到60秒。

Ramp Up Time:在測試某些擁有大量快取記憶體的系統時,為避免系統剛開始測試時一些異常或不穩定的數值,影響測試統計結果,可設定15到60秒的Ramp Up時間,等待系統進入穩定後再錄取測試數值。

Iometer的結果顯示面板可顯示IOPS、傳輸頻寬、回應時間、處理器占用率等6類測試結果,點選個別類型還有更精細的結果分析。


資料來源:https://www.ithome.com.tw/tech/47376

2022年1月10日 星期一

linux下awk內置函數的使用(split/substr/length)

 一、split 初始化和類型強制

awk的內建函數split允許你把一個字符串分隔為單詞並存儲在數組中。你可以自己定義域分隔符或者使用現在FS(域分隔符)的值。
格式:

split (string, array, field separator)
split (string, array) -->如果第三個參數沒有提供,awk就默認使用當前FS值。


例1:替換分隔符

time="12:34:56"
out=`echo $time | awk {split($0,a,":");print a[1],a[2],a[3]}`
echo $out

例2:計算指定範圍內的和(計算每個人1月份的工資之和)

$ cat test.txt 
Tom     2012-12-11      car     5       3000
John    2013-01-13      bike    4       1000
vivi    2013-01-18      car     4       2800
Tom     2013-01-20      car     3       2500
John    2013-01-28      bike    6       3500
$ awk {split($2,a,"-");if(a[2]==01){b[$1]+=$5}}END{for(i in b)print i,b[i]} test.txt   
vivi 2800
Tom 2500
John 4500

例3:

$ head industryList.txt 
IT
IT,互聯網
IT服務(系統/數據/維護)
IT服務(系統/數據/維護),專業服務/咨詢(財會/法律/人力資源等)
IT服務(系統/數據/維護),專業服務/咨詢(財會/法律/人力資源等),學術/科研,計算機軟件
$ head industryList.txt | awk {split($0, arr, ","); for (i in arr) print arr[i]}
IT
IT
互聯網
IT服務(系統/數據/維護)
IT服務(系統/數據/維護)
專業服務/咨詢(財會/法律/人力資源等)
IT服務(系統/數據/維護)
專業服務/咨詢(財會/法律/人力資源等)
學術/科研
計算機軟件
$ cat industryList.txt | awk {split($0, arr, ","); for (i in arr) print arr[i]} | sort | uniq > industryList_split.txt

二、substr 截取字符串
返回從起始位置起,指定長度之子字符串;若未指定長度,則返回從起始位置到字符串末尾的子字符串。
格式:
substr(s,p) 返回字符串s中從p開始的後綴部分
substr(s,p,n) 返回字符串s中從p開始長度為n的後綴部分
例子:

$ echo "123" | awk {print substr($0,1,1)}
1

解釋:
awk -F ‘,‘ ‘{print substr($3,6)}‘ ---> 表示是從第3個字段裏的第6個字符開始,一直到設定的分隔符","結束.
substr($3,10,8) ---> 表示是從第3個字段裏的第10個字符開始,截取8個字符結束.
substr($3,6) ---> 表示是從第3個字段裏的第6個字符開始,一直到結尾

三、length 字符串長度
length函數返回沒有參數的字符串的長度。length函數返回整個記錄中的字符數。

$ echo "123" | awk {print length}
3
$ cat info.json | jq .industryList | awk -F " {print $2} | awk {if (length > 0) print $0} | sort | uniq > industryList.txt

四、gsub函數

gsub函數則使得在所有正則表達式被匹配的時候都發生替換。gsub(regular expression, subsitution string, target string);簡稱 gsub(r,s,t)。

舉例:把一個文件裏面所有包含 abc 的行裏面的 abc 替換成 def,然後輸出第一列和第三列

$ awk $0 ~ /abc/ {gsub("abc", "def", $0); print $1, $3} abc.txt

參考:

http://gdcsy.blog.163.com/blog/static/12734360920130241521280/

http://www.cnblogs.com/sunada2005/p/3493941.html

linux下awk內置函數的使用(split/substr/length)

資料來源:https://www.itread01.com/content/1506498963.html


Linux awk 指令

https://www.hy-star.com.tw/tech/linux/awk/awk.html


2022年1月6日 星期四

How to show color text in shell script or bash

You can use the awesome tput command (suggested in Ignacio's answer) to produce terminal control codes for all kinds of things.

Usage

Specific tput sub-commands are discussed later.

Direct

Call tput as part of a sequence of commands:

tput setaf 1; echo "this is red text"

Use ; instead of && so if tput errors the text still shows.

Shell variables

Another option is to use shell variables:

red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`
echo "${red}red text ${green}green text${reset}"

tput produces character sequences that are interpreted by the terminal as having a special meaning. They will not be shown themselves. Note that they can still be saved into files or processed as input by programs other than the terminal.

Command substitution

It may be more convenient to insert tput's output directly into your echo strings using command substitution:

echo "$(tput setaf 1)Red text $(tput setab 7)and white background$(tput sgr 0)"

Example

The above command produces this on Ubuntu:

Screenshot of colour terminal text


Foreground & background colour commands

tput setab [1-7] # Set the background colour using ANSI escape
tput setaf [1-7] # Set the foreground colour using ANSI escape

Colours are as follows:

Num  Colour    #define         R G B

0    black     COLOR_BLACK     0,0,0
1    red       COLOR_RED       1,0,0
2    green     COLOR_GREEN     0,1,0
3    yellow    COLOR_YELLOW    1,1,0
4    blue      COLOR_BLUE      0,0,1
5    magenta   COLOR_MAGENTA   1,0,1
6    cyan      COLOR_CYAN      0,1,1
7    white     COLOR_WHITE     1,1,1

There are also non-ANSI versions of the colour setting functions (setb instead of setab, and setf instead of setaf) which use different numbers, not given here.

Text mode commands

tput bold    # Select bold mode
tput dim     # Select dim (half-bright) mode
tput smul    # Enable underline mode
tput rmul    # Disable underline mode
tput rev     # Turn on reverse video mode
tput smso    # Enter standout (bold) mode
tput rmso    # Exit standout mode

Cursor movement commands

tput cup Y X # Move cursor to screen postion X,Y (top left is 0,0)
tput cuf N   # Move N characters forward (right)
tput cub N   # Move N characters back (left)
tput cuu N   # Move N lines up
tput ll      # Move to last line, first column (if no cup)
tput sc      # Save the cursor position
tput rc      # Restore the cursor position
tput lines   # Output the number of lines of the terminal
tput cols    # Output the number of columns of the terminal

Clear and insert commands

tput ech N   # Erase N characters
tput clear   # Clear screen and move the cursor to 0,0
tput el 1    # Clear to beginning of line
tput el      # Clear to end of line
tput ed      # Clear to end of screen
tput ich N   # Insert N characters (moves rest of line forward!)
tput il N    # Insert N lines

Other commands

tput sgr0    # Reset text format to the terminal's default
tput bel     # Play a bell

With compiz wobbly windows, the bel command makes the terminal wobble for a second to draw the user's attention.


Scripts

tput accepts scripts containing one command per line, which are executed in order before tput exits.

Avoid temporary files by echoing a multiline string and piping it:

echo -e "setf 7\nsetb 1" | tput -S  # set fg white and bg red

See also

  • See man 1 tput
  • See man 5 terminfo for the complete list of commands and more details on these options. (The corresponding tput command is listed in the Cap-name column of the huge table that starts at line 81.)

 

資料來源: https://stackoverflow.com/questions/5947742/how-to-change-the-output-color-of-echo-in-linux