別再被室內設計師騙錢了! 四驅智能化,安全最大化 石澤研究所!限量出清中 強化操控性,後輪轉向系...

iThome產品技術報簡介/舊報明細寄送本期電子報
PChome Online電子報
 
每週二∼六出刊.2018.08.17
 
本 期 目 錄 簡介/舊報明細
導入64層3D NAND技術,WD首款15.36 TB、雙埠SSD問世
靜動皆宜的型態提示

優惠訊息

行銷!就用中文網址輔助
DevOpsDays Taipei 9/10~9/12 強勢展開!
前進吧!成為更好的自己

產品快報 

導入64層3D NAND技術,WD首款15.36 TB、雙埠SSD問世

WD推出新款雙埠SAS SSD,基於英特爾64層3D NAND技術的快閃記憶體而來,儲存容量上看15.36 TB



兩年前,三星發表儲存容量高達15.36 TB的雙埠式12Gb SAS SSD,名為PM1633a,去年8月,Seagate也跟進,推出同樣具有雙埠設計、最大儲存容量為15.36 TB的Nytro 3000 SAS SSD。

到了今年7月,WD首款15TB企業級固態硬碟終於登場,機型為Ultrastar DC SS530 SAS SSD,預計在這一季之後正式上市。相較於上述兩款產品,WD這款SSD具備更良好、讀寫速度較為平衡的存取效能,循序讀寫作業各為2254 MB/s、2222 MB/s,隨機讀寫則為44萬IOPS、32萬IOPS,而閒置狀態的平均功耗,也只有3.2瓦。

就採用的快閃記憶體類型而言,SS530是基於英特爾發展的第二代64層3D TLC NAND技術,而能提供更強大的存取效能,以及用電效率(早先推出的Ultrastar SS300 SAS SSD,採用的是第一代32層3D TLC NAND技術),並非WD與Toshiba合作的3D NAND技術。

除此之外,這款固態硬碟和其他Ultrastar SAS SSD一樣,採用了WD與英特爾共同開發的第三代儲存控制器,而具有穩定的效能與可靠度。

至於耐用度的部份,這系列SSD沿用了Ultrastar DC系列產品的特性,年故障率(AFR)為0.35%,平均故障間隔時間(MTBF)為250萬小時,每日寫入量(DW/D)最高可達到10次(三星和Seagate的同級產品最高為3),當中可選擇3.2 TB、1.6 TB、800 GB、400 GB等儲存容量。

同時,SS530也提供每日寫入量為3和1的機型,支援不同的儲存工作負載需求。前者比起每日寫入量為10的機型,多了6.4 TB的選擇,後者則提供15.36TB、7.68TB、3.84TB 、1.92TB、960GB與480GB,共6種容量。

而在資料安全防護應用的部份,SS530也提供多種規格的機型,可支援安全抹除(Secure Erase,SE)、快速安全抹除(Instant-Secure Erase,ISE),以及TCG訂定的自我加密硬碟(SED),WD也預告第四季將推出支援TCG SED與FIPS 140-2驗證的機型,以符合政府對於應用系統儲存資料時的要求。

 閱讀全文
專欄 

靜動皆宜的型態提示

typing模組在Python這套語言當中,是必要的嗎?該如何理解型態提示、型態標註資訊,以及用於靜態時期分析與執行時期檢查的狀況?

基本上,Python是一門動態定型語言,然而,從Python 3.5開始,加入了型態提示(Type Hints),到了3.6,則將暫定(provisional)狀態的typing模組,正式納入標準API,並增加註解區域變數型態的特性。

在Python中能宣告型態,已不是新聞,既然如此,何妨深入一下呢?

直譯器忽略型態提示?

在先前專欄〈思考Python的型態提示〉以及〈Type Hints的野心〉,曾經談過Python中為何加入型態提示,以及相對於動態定型語言來說,型態提示還具有什麼樣的可能性。

相信許多開發者,也已經或多或少地,在專案中使用型態提示的功能了,那麼,可曾想過,為什麼使用型態提示時,通常還要搭配typing模組,而且,它還是在Python 3.6之後,才正式成為標準API?

這表示它就是個模組程式庫,而不是語法嗎?

為什麼型態標註不能直接使用內建型態?

當然,在簡單的情況下,使用內建的型態,其實就足夠了。

以Python 3.6為例,如果想限定區域變數只能指定字串,我們可以撰寫name: str = 'Justin',開發者能使用int、str、list、set、dict等內建型態來標註變數型態,實際上,在自定義的類別當中,像是若有個User類別,也可以user: User = User('Justin')來進行這樣的標註。

問題在於,想要進一步地,限定list中只能有int呢?查看型態提示相關的說明或教學文件,基本上,都說要from typing import List,然後使用names: List[str]的方式進行標註。但如果沒有typing模組,是否還能進行標註呢?names: list[str]是行不通的,因為使用python直譯器執行時,就會出現'type' object is not subscriptable了。

嗯?python直譯器不是會忽略型態提示嗎?這並不是完全正確的答案,因為,冒號左邊的標註是會被執行的!

實際上,標註型態時,冒號右邊必須是個type實例,或者說必須傳回type實例,該實例提供了必要的型態資訊,如果願意,對於下列這類標註型態變數,python直譯器也是會忽略型態標註:

def Str():
return str
x: Str() = 'Justin'


深入typing模組

不過,Str()並不是型態提示規範中預期的協定,因此僅僅是python直譯器忽略罷了,若是使用mypy進行型態檢查,則會出現invalid type comment or annotation的錯誤,因為,mypy預期必須是[]的標註方式。

熟悉Python的開發者,此時,應該馬上就會想到[]與__getitem__這特殊的方法掛鉤之間的關係,可以用來標註型態的物件,必然實作了__getitem__,而some[xxx]的結果,必然是傳回類型實例,一個單純的範例就是:

class Foo:
def __getitem__(self, type):
return type
foo = Foo()
x: foo[str] = 'Justin'


這會使得mypy的錯誤訊息轉而變成Invalid type,當然!因為被傳回的類型實例,必須提供相關的型態資訊,以供mypy之類的工具提取資訊進行型態檢查,因而還有其他相關協定必須實作,不過,有了這樣的出發點,接著,就可以開始探索typing模組的原始碼了。

在typing模組的原始碼中,有個值得特別注意的get_type_hints函式,其docstrings中寫到,基本上與obj.__annotations__作用相同,__annotations__是用來獲得標註資訊的,例如,若在模組層級撰寫了name: str = 'Justin',那麼,透過模組實例的__annotations__,例如globals()['__annotations__'],就可以取得{'name': }資訊。

透過typing模組的get_type_hints函式,還可以指定作用範圍,因而能更方便地指定模組、類別、函式等實例,從而取得被標註的類型。

例如,若有個函式def add(n1: int, n2: int) -> int,透過typing.get_type_hints(add),可以取得# -> {'n1': , 'n2': , 'return': }這樣的資訊。

執行時期型態驗證

等等!無論是透過__annotations__,或者是透過get_type_hints函式,這些不都是執行時期出現的行為嗎?

 閱讀全文
前期文章 全部歷史文章
出刊日期 出刊主題
2018-08-16 雙鴻翻新ERP全面大改造,瞄準...
2018-08-15 安聯人壽數位轉型策略,以客戶...
2018-08-14 新型資安服務MDR崛起
2018-08-11 簡報成功關鍵是幫對方找到重點
我要訂閱這份報紙 我要取消這份報紙 訂報說明
.本電子報內容由 iThome online 提供
PChome ePaper 電子報版權所有,關於電子報發送有任何疑問,請聯絡 客服中心
廣告刊登消費者保護兒童網路安全關於PChome徵人
網路家庭版權所有、轉載必究 Copyrightc PChome Online



 
轉寄 iThome產品技術報 2018-08-17 這期電子報
寄件人暱稱或姓名
+
寄件人E-mail
+
收件人暱稱或姓名
+
收件人E-mail


 
/usr/home/epaper/webmama/adm/include/footer_last.htm
 
廣告刊登 消費者保護兒童網路安全關於PChome徵人
網路家庭版權所有、轉載必究 Copyright© PChome Online
PChome Online and PChome are trademarks of PChome Online Inc.