合掌村失火!幸未殃及主聚落

摘錄自2019年11月5日聯合報報導

日本著名景點、岐阜縣大野群白川村的荻町附近木屋四日發生火災,事發時日本推特上不斷傳出被登錄為世界遺產的合掌村附近有木屋被烈焰吞噬,冒出濃煙,消防車警笛大作,幸好無人受傷,火勢也沒有延燒到合掌村。

起火地點並非被指定為重要文化財的合掌村聚落,而是距離五百公尺遠的一間木屋。附近店家表示,失火的木屋平日為車庫,在遊客用停車場的旁邊。起火處有白川鄉點燈活動使用的電源設備,目前不知道火災與其有無關連。但4日的點燈活動取消。



照片取自twitter

うぉーい!!
白川郷で火事起きてるぜ!?

— じゅりあーに3世 (@Messiah3rd)

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

三星收購電池部門 傳將研發電動車

蘋果(Apple)研發電動車的傳聞滿天飛,三星(Samsung)不甘示弱跟進,打算在電動車界跟蘋果再次一決雌雄?   韓聯社和 Tomˋs Hardware 報導,南韓電池製造龍頭 Samsung SDI 23 日宣布收購汽車零件商 Magna Steyr 的電池部門,購併金額未對外透露。   Tomˋs Hardware 網站認為,Samsung SDI 是 BMW i3 電動車的電池供應商,購併固然可能只是要強化電池部門實力,但也有可能代表三星打算跨足電動車。三星集團旗下業務橫跨電機、化學、造船、工具機等,如果真的要生產電動車,三星握有的技術資源更勝蘋果。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

台達電電動車驅動馬達 打入福斯供應鏈

電源供應器廠積極跨入車用市場,台達電耕耘 3 年的電動車驅動馬達打入福斯集團供應鏈,今年開始出貨;新巨微動開關則陸續取得德國雙 B、奧迪與福斯,美系福特和日系車廠訂單;康舒電源轉換器也與多家國際電動車大廠談合作。   台達電董事長海英俊表示,目前各國積極發展電動車,基礎設施也開始動起來,因此台達電最近在電動車零組件有不錯的進展,包括出貨給美國知名電動車廠充電樁、轉換器,台達電在歐、美、日、中國等各地的電動車標準都通過認證。   海英俊透露,台達電研發電動車驅動馬達,經過 3 年努力,已獲歐洲車廠認證。

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

※教你寫出一流的銷售文案?

※超省錢租車方案

雷軍:小米3至5年內不做電動車

今日,雷軍出席亞布力中國企業家論壇第十五屆年會,並發表了演講。對於進入電動車領域的傳聞,雷軍稱小米三到五年內不會涉及,主要目標是把現有產品做好。   他明確表示,小米佈局已經完成,包括三類、五種產品,包括手機、平板、電視、電視盒、路由器等,主要是為了智慧家居。他稱,「(不涉及電動車)跟市場好壞沒關係,我們專注的把現在幾個產品做好,就已經很不容易了。不是不看好,是精力有限。」

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

新北清潔公司,居家、辦公、裝潢細清專業服務

※別再煩惱如何寫文案,掌握八大原則!

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

※超省錢租車方案

Python 簡明教程 — 20,Python 類中的屬性與方法

微信公眾號:碼農充電站pro
個人主頁:https://codeshellme.github.io

與客戶保持良好的關係可以使生產率加倍。
—— Larry Bernstain

目錄

類中的變量稱為屬性,類中的函數稱為方法

類中的屬性分為:

  • 實例屬性:對象所有,互不干擾
  • 類屬性:類所有,所有對象共享

類中的方法分為:

  • 實例方法:定義中有self 參數
  • 類方法:定義中有cls 參數,使用@classmethod 裝飾器
  • 靜態方法:定義中即沒有self 參數,也沒有cls 參數,使用@staticmethod 裝飾器

1,實例屬性與類屬性

類的對象,就是類的一個實例。類的實例屬性被對象所有,包含在每個對象之中,不同的對象之間,互不干擾。類的類屬性被類所有,被包含在類中,是所有的類對象共享。

一般情況下,實例屬性會在__init__ 方法中聲明並初始化,並且使用self 來綁定。而類屬性是在類作用域中被聲明,並且不使用self 來綁定。

例如下面代碼中,country 為類屬性,__name 為實例屬性:

#! /usr/bin/env python3

class People:

    country = 'china'

    def __init__(self, name):
        self.__name = name

訪問實例屬性時使用對象.屬性名的格式,實例屬性屬於對象各自的,互不影響:

>>> p1 = People('小明')
>>> p2 = People('小美')
>>> 
>>> p1.get_name()
'小明'
>>> p2.get_name()
'小美'

類屬性被所有對象共有,一旦被改變,所有對象獲取到的值都會被改變。訪問類屬性時使用類名.屬性名的格式,也可以使用對象.屬性名的格式來訪問:

>>> People.country              # 用`類名.屬性名`的格式訪問
'CHINA'
>>> p1.country                  # 用`對象.屬性名`的格式訪問
'china'
>>> p2.country
'china'
>>> 
>>> People.country = 'CHINA'    # 類屬性的值被改變
>>> p1.country                  # 每個對象獲取到的值也會被改變
'CHINA'
>>> p2.country
'CHINA'

注意,在使用對象.屬性名的格式訪問對象時,不要以這種格式對類屬性進行賦值,否則結果可能不會像你想象的一樣:

>>> p1 = People('小明')
>>> p2 = People('小美')
>>> People.country
'china'
>>> p1.country
'china'
>>> p2.country
'china'
>>> p1.country = '中國'   # 使用`對象.屬性名`的格式對類對象進行賦值
>>> p1.country           # 只有 p1.country 被改變
'中國'
>>> p2.country           # p2.country 沒有被改變
'china'
>>> People.country       # People.country 也沒有被改變
'china'

從上面代碼中可以看到,在Python 中以對象.屬性名格式對類屬性進行賦值時,只有p1.country 的值被改變了,p2.countryPeople.country 的值都沒有被改變。

實際上,這種情況下,類屬性的值並沒有被改變,而是對象p1 中多了一個country 實例屬性,此後,p1.country 訪問的是p1 的實例屬性,p1.country對屬性country的訪問屏蔽了類中的country屬性,而p2.countryPeople.country 訪問的依然是原來的類屬性

所以,類名.屬性名對象.屬性名的格式都可以訪問類屬性的值,但盡量避免使用對象.屬性名的格式對類屬性的值進行賦值,否則可能會發生混亂。

建議:

不管是訪問還是改變類屬性的值,都只用類名.屬性名的格式

2,實例方法,類方法,靜態方法

Python 類中有三種方法:

  • 實例方法
  • 類方法
  • 靜態方法

實例方法屬於對象,方法中都有一個self 參數(代表對象本身)。實例方法只能由對象調用,不能通過類名訪問。實例方法中可以訪問實例屬性和類屬性。

類方法屬於類,方法中都有一個cls 參數(代表類本身)。類方法即可以通過類名訪問,也可以通過對象訪問,類方法中只能訪問類屬性,不能訪問實例屬性。

注意:

Python 解釋器在構造類與對象時,是先於對象產生的。

因此,類屬性與類方法是先於實例屬性與實例方法 產生的。

所以當類方法產生時,還沒有實例屬性,因此,類方法中不能訪問實例屬性。

靜態方法中,沒有self 參數,也沒有cls 參數。因此,在靜態方法中,即不能訪問類屬性,也不能訪問實例屬性。靜態方法可以使用類名訪問,也可以使用對象訪問。

在Python 中,定義類方法需要用到裝飾器@classmethod,定義靜態方法需要用到裝飾器@staticmethod

實例方法演示

#! /usr/bin/env python3

class People:

    country = 'china'

    def __init__(self, name):
        self.__name = name

    # 實例方法中有self 參數
    def instance_method_test(self):
        # 在實例方法中訪問了實例屬性和類屬性
        print('name:%s country:%s' % (self.__name, People.country))

使用:

>>> p = People('小明')
>>> p.instance_method_test()
name:小明 country:china

在實例方法中訪問了實例屬性__name和類屬性country,均可以被訪問。

類方法演示

#! /usr/bin/env python3

class People:

    country = 'china'

    def __init__(self, name):
        self.__name = name

    # 類方法中都有cls 參數
    @classmethod
    def class_method_test1(cls):
        print('在類方法中訪問類屬性country:%s' % cls.country)

    @classmethod
    def class_method_test2(cls):
        print('在類方法中訪問實例屬性__name:%s' % self.__name)

使用:

>>> p = People('小明')
>>> p.class_method_test1()         # 在類方法中訪問類屬性,可以
在類方法中訪問類屬性country:china
>>>
>>> p.class_method_test2()         # 在類方法中訪問實例屬性,出現異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/wp/to_beijing/People.py", line 18, in class_method_test2
    print('在類方法中訪問實例屬性__name:%s' % self.__name)
NameError: name 'self' is not defined

從上面代碼中可以看到,在類方法中可以訪問類屬性,但在類方法中訪問實例屬性,會出現異常。

靜態方法演示

#! /usr/bin/env python3

class People:

    country = 'china'

    def __init__(self, name):
        self.__name = name

    # 靜態方法中即沒有self 參數也不沒有cls 參數
    @staticmethod
    def static_method_test1():
        print('在靜態方法中訪問類屬性country:%s' % cls.country)

    @staticmethod
    def static_method_test2():
        print('在靜態方法中訪問實例屬性__name:%s' % self.__name)

使用:

>>> p = People('小明')
>>> p.static_method_test1()      # 在靜態方法中訪問類屬性,出現異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/wp/to_beijing/People.py", line 14, in static_method_test1
    print('在靜態方法中訪問類屬性country:%s' % cls.country)
NameError: name 'cls' is not defined
>>>
>>> p.static_method_test2()     # 在靜態方法中訪問實例屬性,出現異常
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/wp/to_beijing/People.py", line 18, in static_method_test2
    print('在靜態方法中訪問實例屬性__name:%s' % self.__name)
NameError: name 'self' is not defined

從上面代碼中可以看到,在靜態方法中無論訪問實例方法還是類方法,都會出現異常。

3,專有方法

我們之前講到過的魔法方法,即以雙下劃線__開頭且結尾的方法__xxx__,就是專有方法。這些方法都被Python 賦予了特殊的含義,用戶可以根據需要,來實現這些方法。

下面我們介紹一些 Python 中常見的專有方法。

__len__ 方法

實現該方法的類的對象,可以用len() 函數計算其長度。

__str__ 方法

實現該方法的類的對象,可以轉化為字符串。

__call__ 方法

實現該方法的類的對象,可以像函數一樣調用。

__iter__ 方法

實現該方法的類的對象,是可迭代的。

__setitem__ 方法

實現該方法的類的對象,可以用索引的方式進行賦值。

__getitem__ 方法

實現該方法的類的對象,可以用索引的方式進行訪問。

__contains__ 方法

實現該方法的類的對象,可以進行in 運算。

__add__ 方法

實現該方法的類的對象,可以進行加+運算。

__sub__ 方法

實現該方法的類的對象,可以進行減-運算。

__mul__ 方法

實現該方法的類的對象,可以進行乘*運算。

__div__ 方法

實現該方法的類的對象,可以進行除/運算。

__pow__ 方法

實現該方法的類的對象,可以進行乘方運算。

__mod__ 方法

實現該方法的類的對象,可以進行取模運算。

__eq__ 方法

實現該方法的類的對象,可以進行相等==比較。

__ne__ 方法

實現該方法的類的對象,可以進行不等於!=比較。

__gt__ 方法

實現該方法的類的對象,可以進行大於>比較。

__ge__ 方法

實現該方法的類的對象,可以進行大於等於>=比較。

__lt__ 方法

實現該方法的類的對象,可以進行小於<比較。

__le__ 方法

實現該方法的類的對象,可以進行小於等於<=比較。

(完。)

推薦閱讀:

Python 簡明教程 — 15,Python 函數

Python 簡明教程 — 16,Python 高階函數

Python 簡明教程 — 17,Python 模塊與包

Python 簡明教程 — 18,Python 面向對象

Python 簡明教程 — 19,Python 類與對象

歡迎關注作者公眾號,獲取更多技術乾貨。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

緊張關係緩解 加拿大豬牛肉將恢復出口中國

摘錄自2019年11月6日中央社外電報導

加拿大總理杜魯道(Justin Trudeau)今天(6日)宣布,中國同意恢復進口加拿大牛肉和豬肉,顯示兩國緊張關係有所突破。

杜魯道發推文表示:「今天加拿大農民有個好消息:加拿大對中國的豬肉和牛肉出口將恢復。」他讚揚9月才上任的加拿大駐中國大使鮑達民(Dominic Barton)和加拿大肉品業,「為我們肉品生產商和其家人重新打開這個重要市場」所做的努力。

在中國和加拿大之間的外交紛爭升級下,中國6月停止進口加拿大牛肉和豬肉,指稱從加拿大進口的一批豬肉產品含有瘦肉精,又發現加拿大豬肉涉及偽造獸醫衛生證書,渥太華當局則否認這些指控。

目前還不清楚說服北京當局改弦易轍的原因為何。但肉品生產商表示,加拿大食品檢驗局(Canadian Food Inspection Agency)將立刻開始簽發銷往中國的出口證書。加拿大貿易部長卡爾(Jim Carr)和農業部長畢博(Marie-Claude Bibeau)在聲明中表示,加拿大外交部和食品檢驗局過去幾個月來就取消牛肉和豬肉禁令「與中國交涉」。「我們未來幾天和幾週,將繼續與牛肉和豬肉生產商和加工商密切合作,確保成功恢復貿易。」

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

學寫PEP,參与Python語言的設計

如果你為Python寫了一篇PEP,這篇PEP成功的被Python指導委員會接受了,那麼以後你在吹牛皮的時候你就可以說我主導了Python語言某個特性的設計工作.

                              					-- 跬蟒

我就問你主導Python語言特性設計牛不牛皮,今天我就寫一篇文章告訴大家如何去為Python設計一篇PEP,並且整個PEP從一個想法到Python語言去實現它的這一套流程:

假設你已經是一個Python高手了,在使用Python給過程中你覺得Python語言在某方面還不夠完善,你有一個不錯的想法可以去改善Python這方面的不足,你打算把你的想法加入到Python語言裏面,所以你打算寫一篇PEP,為Python的發展獻言建策,那首先需要做什麼呢?

  1. 首先你要確保你的想法是個新的想法是個比較大的想法,是一個由必要去建立一個PEP的想法,也許你發現了Python的一些小問題,但是這些小問題如果提交一個小補丁就可以解決了,那就沒必要提PEP
  2. 當你確定自己的想法很牛B之後,你也不是馬上就要提PEP,你首先要做的事情是引發社區的討論,看看其他人怎麼看,然後自己去實現一下這個想法看是否是可行的,並且發帖到 python-list@python.org mailing list或者到 python-ideas@python.org mailing list 進行進一步的確定,看看大家對你的想法是否認同,如果你能讓大多數人都認同,那你就有戲,在你發帖之前最好準備一份高質量的PEP草稿,這樣的話才會更容易的被接受
  3. 總之就是先討論,得到大家的認可,避免後期不必要的撕逼,然受自己也要做好準備,最好有個簡單的實現,然後還有個高質量的PEP草稿

寫PEP你不得不知道的幾個Python社區角色

PEP champion : PEP擁護者 也就是PEP的發起人,也就是跟大家說我有個非常XXX的想法的人

PEP author: PEP作者 就是寫PEP的人,PEP從一個想法到一篇PEP草稿,再到一篇擁有官方PEP編號的PEP文檔,到後面PEP審核通過,PEP複審出現改動,PEP被接受這個過程中維護PEP文檔的人就是PEP的作者,大部分PEP作者就是PEP擁護者本人

PEP reviewer: 這個角色不是單指某一個人,一個PEP從想法到實現需要經過很多此review, 每一次參与review的人都可以被稱作 PEP reviewer

PEP editor: PEP編輯者 就是對PEP進行初步審核的人,審核通過的PEP進入到github上面的PEP倉庫的master分支,進行下一輪的評審

Python Core Developers: Python核心開發人員 就是開發Cpython解釋器的那群人,都是大佬,都是大佬

Python’s Steering Council: Python指導委員會 大佬中的大佬,從Python核心開發人員中選擇出來的指導Python語言開發工作的一群人,對於PEP是否接受有着最終發言權

PEP的工作流程是這樣的:

  1. PEP champion 先有一個高質量的idear(經過討論分析和理性驗證)
  2. 你去github上面去fork PEP倉庫
  3. 在倉庫中創建一個 pep-9999.rst的文件去把你的PEP草稿粘貼進去
  4. 確定你的PEP的類型,PEP的狀態設為草稿,PEP頭部按照模板寫一波
  5. 把你的pep-9999.rst push到PEP倉庫
  6. 然後PEP editors 會去審核你的提交
  7. 如果審核通過,這個本來是草稿的PEP會拿到一個正規的PEP編號,如果沒有審核通過那PEP editors 會打回去讓 PEP author 去修改
  8. 如果PEP審核通過拿到了PEP編號 PEP editor 會把這個新提交的PEP合併到PEP倉庫的 master 分支
  9. 如果你的PEP的類型是Standards Track類,那你提交的PEP還會被發送給Python-dev list 成員進行再次review, 確保你的新PEP沒有坑
  10. 有些聽起很不錯的PEP在實現的時候其實是非常蛋疼的,沒做的時候想的挺好,真正去實現的時候才知道是否靠譜,最好的情況時你在提交PEP的時候你手裡就已經有一個這個PEP的原型實現了,所以如果你的PEP類型是Standards Track類型那你就不僅需要準備設計文檔,你還需要準備一個參考實現,以此來避免一些不切實際的想法

當然凡事都有例外,有些Python的核心開發者是不會走這個流程的因為他們本身的權限比較大,他們有直接push內容到PEP倉庫的權限,所以有時候他們會直接給自己的PEP分配一個PEP編號push進入PEP倉庫的master分支,當然這並不意味着這個PEP就被接受了,他只是繞過了PEP editor的審批而已,PEP被接受和PEP通過審批是完全兩碼事兒,只有通過Python指導委員會的同意,PEP計劃實現,才能叫做PEP被接受.

如果我寫的PEP無法審核通過被拒怎麼辦?

PEP被拒絕是很正常的事情,不要灰心,只要能夠堅信自己的PEP是真正對Python有用的東西,真正好的idear,修改一下繼續上就行了,但是被拒肯定是有原因的,最主要的原因就是下面幾條:

  1. 該特性已經存在了
  2. 技術上不合理
  3. Python不需要去實現這樣的特性,也就是說偽需求
  4. 無法進行後向兼容
  5. 不符合Python的設計哲學(Python設計哲學可以在Python交互解釋器中輸入import this獲取)其實在PEP的審批階段可以拿着自己的PEP idear去諮詢Python指導委員會,因為PEP最終會不會被接受其實是由Python指導委員會所決定的,所以如果真的想要自己的PEP被接受,做好提前的溝通還是非常有必要的
  6. 奧對了還有一個蛋疼的要求,就是你的PEP草稿必須帶着至少一名Python核心開發人員一起寫,或者有一個Python核心開發人員指導你寫,或者有一個經過Python指導委員會批準的非Python核心開發人員一起寫,反正就是需要有一個能夠被Python指導委員會所信任的人參與了你的PEP設計,如果沒能滿足這個條件 PEP editor有權直接駁回你的PEP草稿

PEP的複審和決定機制

一篇PEP是否最終被接受並且決定去實現是需要經過層層複審的,反正要經過很麻煩了一個流程,下面有個Python官方畫的簡單流程圖:

但是實際情況比較複雜,有時候不會按照這個流程圖來,但是這個流程圖給人們提供了一個比較清晰的PEP工作流的概覽

PEP格式和模板

這年頭寫啥文檔沒個模板真不行,PEP也是文檔,所以模板搞起來:

  1. 首先PEP是UTF-8編碼的rst文件,首先你需要去指導rst文件的格式,如果rst的語法格式你已經會了,那你就可以閱讀官方的PEP 12--Sample reStructuredText PEP Template,沒錯PEP12是介紹rst格式PEP模板的PEP(有點繞),為什麼要用rst格式?官方給出的解釋是 容易轉成html進行在線發布和閱讀
  2. 每一篇PEP必須有一個標準的PEP頭部,如下所示,帶* 號是可寫可不寫的,不帶* 號的是必須要寫的,記住寫PEP頭的時候,頭的各個字段的順序,必須按照下圖的內容去寫,先後順序不能亂

寫道這裏就講的差不多了,但是其實PEP的書寫還有很多的內容比如:

  1. 如何判斷PEP是不是一個成功的PEP
  2. PEP提交之後發現內容有bug怎麼解決
  3. PEP所有權以及所有權轉移問題
  4. PEP editor的詳細職責和工作流
  5. 等等問題,我就不寫了,寫不動了…..

想寫PEP的可以先根據上面流程走一波,
然後等到遇到問題的時候再去查資料吧.

如果感覺本篇內容還不錯,微信的朋友請點個在看,其他平台的朋友可以(近距離)掃描下方的二維碼關注我的公眾號 早睡蟒更多優質原創無廣告內容等你來看.

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

管理出包? 大堡礁集水區驗出高濃度殺蟲劑

環境資訊中心綜合外電;姜唯 編譯;林大利 審校

本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

電動車電池與太陽能成本下降飛快,再生能源主宰的日子不遠了?

  電動車電池的成本下降速度超乎預期,甚至低於國際能源署(IEA)原本預估的 2020 年成本數值,且不少研究也指出,太陽能在 2020 年代將某些地區成為最便宜的能源選項,彭博新聞認為,便宜的電池與太陽能發電兩者相輔相成的結果,將加速再生能源主宰能源市場的趨勢。   國際能源署在 2013 年時,原本預估 2020 年電動車電池價格將會下降至每度電 300 美元,不過,由斯德哥爾摩環境機構最近登上《自然氣候變化(Nature Climate Change)》期刊的研究中指出,全球電動車電池價格已從 2007 年的每千瓦小時 1,000 美元,下降至 2014 年的每千瓦小時 410 美元,平均每年成本下滑 14%,且特斯拉(Tesla)及 Nissan 等電動車製造商領頭羊的價格也年減約 8%,來到 2014 年的每千瓦小時 300美元,提早 6 年達到國際能源署預定目標。   但這所謂的每千瓦小時 300 美元,除了顯示電動車電池成本下降速度超乎預期外,是否還意味著電動車躍起的時代即將來臨呢?全球顧問公司麥肯錫(Mckinsey & Company)在 2011 年曾做了一張圖表,顯示不同的油價與電池價格情況下,純電動車、插電式混合電動車、油電混合車及一般汽車何者較具競爭力,灰色區塊的部分則是 2011 年的價格區間。從下圖圖表中可以看出,當電動車電池價格位於每千瓦小時約 300 美元左右時,就是電動車競爭力逐漸起飛的時刻。    
 

  (Source:)     雖然在過去一年中,油價已下跌至每加侖 2 美元,但若電池價格也跟著不斷下跌,圖表中的灰色矩形就會繼續向左移動。該研究作者認為,若按照特斯拉執行長 Elon Musk 所言,特斯拉正在興建的超級電池工廠真能大舉降低電池組成本 30%,且天然氣價格若反彈回 3 美元區間,將可能使電動車成功在大多數地區取代一般汽車的主宰地位。   此外,根據聯合國環境署(UNEP)於 3 月 31 公布的數據指出,2014 年全球對於再生能源投資額達 2,700 億美元,而新增的再生能源裝置容量,也超過往年的成長數字,來到歷史新高的 103 GW。   即便如此,但 2014 年全球再生能源發電總量僅占 9.1%,較 2013 年的 8.5% 成長 0.6 個百分點,雖然成長速度相當緩慢,且若等到再生能源發電量占全球發電量一半的份額,得等到 2080 年才可望實現。不過,太陽能發電成本下降速度增快,加上不少研究都預估太陽能最快將在 2020 年代就能成為最便宜的能源類型,或許照這樣看來,不用等到 60 年後,就能預見再生能源主宰能源市場的世界了。   便宜的電池與太陽能發電兩者可說是相輔相成,彭博新聞認為,電動車電池價格下跌能將汽車從傳統的汽油切換到電網連結,雖然目前大多數的電網仍然由燃煤發電驅動,但若太陽能發電成本下降速度夠快,搭配如特斯拉等公司欲打造的便宜家用儲能電池組,或許能解決太陽能發電不夠穩定、無法成為基載電力的缺點,以取代燃煤發電在電網中的主導角色。     本文全文授權轉載自《科技新報》─〈〉     (首圖來源:Flickr/CC BY 2.0)

本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案

作為一個Java開發你用過Jib嗎

1. 前言

JibGoogle開發的可以直接構建 Java應用的DockerOCI鏡像的類庫,以MavenGradle插件形式提供。它最騷操作的是可以在沒有Docker守護程序的情況下構建,也就是說,您不必在計算機上安裝docker守護程序!儘管Spring Boot 2.3.0.RELEASE已經推出了構建鏡像的功能,胖哥還是忍不住要試試Jib

其實最騷的還是名字。

2. Docker構建流程和Jib的構建流程

沒有對比就沒有傷害。我們還是要對比一下這兩者的構建流程。

Docker構建流程需要我們先把項目打成Jar然後編寫Dockerfile,然後使用Docker構建功能進行構建鏡像、運行容器。流程如下:

而Jib是這樣構建的:

作為一個Java開發者,不用再關心各種無關的命令和操作,只需要專註於Java,而且高效穩定以及可復用的增量構建。為什麼Jib能這麼快而高效?

傳統上,將Java應用程序與應用程序Jar一起構建為單個圖像層,而Jib的構建策略將Java應用程序分為多層,以進行更細化的增量構建。更改代碼時,僅重建更改,而不重建整個應用程序。

3. Jib構建Spring Boot應用

接下來我將演示如何將Spring Boot 應用打成鏡像並上傳到Dockerhub倉庫。

Maven工程為例,我們只需要在pom.xml中引入Jib Maven 插件。默認情況下Jib會把我們打好的鏡像上傳到Googlegcr.io倉庫,實際中我們會把打好的鏡像上傳到私有倉庫,所以我們要加一些個性化配置。這裏我以dockerhub倉庫為例添加一些個性化配置:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.4.0</version>
    <configuration>
        <!-- 相當於 Dockerfile 中的 FROM -->
        <from>
            <image>amazoncorretto:8</image>
        </from>
        <to>
            <!--構建鏡像名稱,這裏我使用maven中定義的項目名稱-->
            <image>daxus/${project.name}</image>
            <!--私有倉庫的賬號密碼-->
            <auth>
                <username>felordcn</username>
                <password>yourpassword</password>
            </auth>
            <!--Docker 鏡像的 tag 這裏使用maven定義的版本號-->
            <tags>
                <tag>
                    ${project.version}
                </tag>
            </tags>
        </to>
    </configuration>
</plugin>

然後在項目根目錄執行mvn clean compile jib:build就可以了。

其實也可以簡單引入Jib插件:

<plugin>
    <groupId>com.google.cloud.tools</groupId>
    <artifactId>jib-maven-plugin</artifactId>
    <version>2.4.0</version>
</plugin>

只不過我們的命令會更複雜一些,需要指定一些必要的參數,例如:

mvn clean compile jib:build \
    -Djib.to.image=myregistry/myimage:latest \
    -Djib.to.auth.username=$USERNAME \
    -Djib.to.auth.password=$PASSWORD

更多的定製命令可參考官方文檔:

https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin#extended-usage

4. 總結

Jib使用起來非常簡單,讓開發人員以Java的風格來完成Docker鏡像的構建,能夠大大改善編程的體驗。多多關注:碼農小胖哥 獲取更多有用的編程乾貨教程。

關注公眾號:Felordcn 獲取更多資訊

個人博客:https://felord.cn

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

【其他文章推薦】

網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

※教你寫出一流的銷售文案?

※超省錢租車方案