特斯拉 Model 3 估 7 月投產,拚下半年如期交車

美國電動車廠特斯拉(Tesla)周三盤後公布前季財報再度由盈轉虧,不過這並不打緊,因為按照特斯拉說法,Model 3 平價電動車有望如期交車,這才是投資人所最關心的。

特斯拉獲利表現不理想,去年第四季淨損 1.21 億美元,或相當於每股 0.78 美元,若扣除一次性費用,每股虧損降低至 0.69 美元,但還是高於分析師原預估每股虧 0.53 美元。

當季營收來到 22.8 億美元,較去年同期成長88%,且優於分析師預估的 22.2 億美元。特斯拉去年 11 月 21 日已完成太陽能面板廠 SolarCity 的收購作業,SolarCity 當季貢獻營收 1.31 億美元。

特斯拉當日宣布,Model 3 預計2017年 7 月可限量投產,9 月產量可開始放大,預估 2018 年每周可產出 10,000 輛。特斯拉原預期 Model 3 可在下半年開始交車,現在兌現承諾的機率大大提高,這激勵特斯拉股價盤後大漲 2.49%、暫報 280.02 美元。

第四季 Model S、Model X 產量合計來到 24,882 輛,年增 77%;銷售量合計為 22,252 輛,成長 27%。(紐約時報)

展望 2017 年,特斯拉預期 Model S 與 Model X 交車量將介於 47,000 至 50,000 輛,換算年成長率最高為 71%。另外,特斯拉還說太陽能車頂下半年就能開始量產。

(本文內容由授權使用。圖片出處:Public Domain CC0)

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化

【SEED Labs】DNS Rebinding Attack Lab

Lab Overview

實驗環境下載:https://seedsecuritylabs.org/Labs_16.04/Networking/DNS_Rebinding/

在這個實驗中模擬的物聯網設備是一個恆溫器,用於控制室內溫度。要成功設置溫度,客戶端需要能夠與物聯網服務器交互。由於物聯網設備在防火牆後面,外部機器不能與物聯網設備交互,因此不能控制恆溫器。為了擊敗防火牆保護,攻擊代碼必須首先進入內部網絡。這並不難,當來自內部網絡的用戶訪問攻擊者的網站時,攻擊者的代碼(JavaScript代碼)實際上是從用戶的瀏覽器中運行的,因此在受保護的內部網絡中運行。然而,由於瀏覽器實現的沙箱保護,攻擊者的代碼仍然不能與物聯網設備交互,即使它現在在內部網絡中。

這個實驗的目標是使用DNS重綁定攻擊來繞過沙箱保護,這樣攻擊者的javascript代碼就可以成功地從設備獲得必要的信息,並使用這些信息來獲得溫度測量的一個非常高的值。

本實驗涵蓋以下主題:

• DNS server setup

• DNS rebinding attack

• Attacks on IoT devices

• Same Origin Policy

我們的攻擊目標是防火牆後面的一個物聯網設備。我們不能從外部直接訪問這個物聯網設備。我們的目標是讓內部用戶運行我們的JavaScript代碼,這樣我們就可以使用DNS重新綁定攻擊與物聯網設備交互。

許多物聯網設備都有一個簡單的內置web服務器,因此用戶可以通過web api與這些設備交互。通常,這些物聯網設備由防火牆保護,它們不能從外部直接訪問。由於這種類型的保護,許多物聯網設備沒有實現強大的身份驗證機制。如果攻擊者能夠找到與它們交互的方法,就很容易危及其安全性。

我們使用一個簡單的webserver來模擬這種易受攻擊的物聯網設備,該服務器提供兩個api:密碼和溫度。物聯網設備可以設置室溫。為此,我們需要向服務器的溫度API發送一個HTTP請求;請求應該包括兩部分數據:目標溫度值和密碼。密碼是定期更改的秘密,但可以使用密碼API獲取。因此,要成功設置溫度,用戶首先需要獲得密碼,然後將密碼附加到溫度API中。密碼不是用於身份驗證的;它用於抵抗跨站請求偽造(CSRF)攻擊。沒有這種保護,一個簡單的CSRF攻擊就足夠了;沒有必要使用更複雜的DNS重新綁定攻擊。為了簡單起見,我們硬編碼了密碼;在實際系統中,密碼將定期重新生成。

LabEnvironment

在這個實驗室中,我們將使用三台機器,分別稱為用戶VM、本地DNS服務器和攻擊者VM。為了簡單起見,我們使用VirtualBox中的NAT網絡適配器將這些虛擬機放在同一個網絡上。在現實世界中,它們不在同一個網絡上。我們還假設運行在用戶VM上的設備在防火牆後面,因此攻擊者VM不能直接訪問物聯網設備。這個實驗室的設置相當複雜,因為我們需要配置三個VM並在它們上運行多個服務器,包括一個IoT web服務器(在用戶VM上)、一個web服務器和一個DNS服務器(在攻擊者VM上)以及一個DNS服務器(在本地DNS服務器上)

LabTasks

Task1: Configure the User VM 

Step1. 減少Firefox的DNS緩存時間。為了減少DNS服務器的負載並加快響應時間,Firefox瀏覽器緩存DNS結果。默認情況下,緩存的過期時間為60秒。這意味着我們的DNS重新綁定攻擊需要等待至少60秒。為了讓我們的實驗更輕鬆,我們把時間減少到10秒或更少。在URL字段中輸入about:config。單擊警告頁面后,我們將看到首選項名稱及其值的列表。搜索dnsCache,找到以下條目並將其值更改為10:

更改后,應該退出Firefox瀏覽器,並重新啟動;否則,更改將不會生效。

Step 2. 改變/etc/hosts.我們需要將以下條目添加到/etc/hosts文件中。我們將使用www.seedIoT32.com作為物聯網web服務器的名稱。此服務器可以運行在不同的VM上,但為了簡單起見,我們在用戶VM上運行物聯網服務器(其IP地址為192.168.43.175):

 Step3.  Local DNS Server 。我們需要配置用戶VM以使用特定的本地DNS服務器。這是通過將本地DNS服務器設置為解析器配置文件(/etc/resolv.conf)中的第一個名稱服務器條目來實現的。一個挑戰是所提供的VM使用動態主機配置協議(DHCP)來獲取網絡配置參數,如IP地址、本地DNS服務器等。DHCP客戶機將用DHCP服務器提供的信息覆蓋/etc/resolv.conf文件。

要將信息導入/etc/resolv.conf而不用擔心DHCP,一種方法是將以下條目添加到/etc/resolvconf/resolv.conf.d/head文件(192.168.43.78為本地DNS服務器的IP地址):

 頭文件的內容將預先寫入動態生成的解析器配置文件。通常,這隻是一個註釋行(/etc/resolv.conf中的註釋來自這個頭文件)。在進行更改之後,我們需要運行以下命令使更改生效:

Step 4. Testing 。配置用戶VM之後,使用dig命令從您選擇的主機名獲取IP地址。從這個響應中,請提供證據證明這個響應確實來自你們的服務器。如果找不到證據,說明配置不成功。

 Task2: Start the IoT server on the User VM 

在此任務中,我們將在用戶VM上啟動物聯網服務器。通過web服務器,用戶可以與物聯網設備通信。

Step 1. 安裝 Flask. 我們使用Flask web框架來開發物聯網服務器     sudo pip3 install Flask==1.1.1

 Step 2. Start the IoT server. 物聯網服務器代碼包含在user_vm.zip,可以從實驗室的網站上下載。解壓縮文件后,進入user_vmf文件夾,通過運行準備好的腳本start IoT .sh或直接運行“flask run”啟動物聯網服務器。需要注意的是,我們使用端口8080作為物聯網服務器(該端口號在實驗室設置中是硬編碼的;將其更改為不同的数字將破壞實驗室設置)。

 Step 3. Testing the IoT server 。要測試物聯網服務器,請將瀏覽器指向用戶VM上的以下URL。如果一切都設置正確,我們應該能夠看到一個恆溫器。我們也可以通過拖動滑動條來改變溫度設置。

 Task3: Start the attack web server on the Attacker VM 

在本實驗室中,只能從防火牆后訪問物聯網設備,即,僅來自實驗設置中的用戶VM。將惡意代碼發送到用戶虛擬機上的一種典型方式是讓用戶訪問我們的網站,這樣放置在web頁面上的JavaScript代碼就可以進入用戶虛擬機上。在這個任務中,我們將啟動一個web服務器來託管這些web頁面。

Step 1. 安裝 Flask。 我們的惡意web服務器也是基於Flask web框架開發的。

Step 2. Start the attacker’s web server 。攻擊者的服務器代碼包含在attacker_vm.zip,可以從實驗室的網站上下載。解壓縮文件后,進入attacker_vm文件夾,通過運行準備好的腳本start_webserver.sh或直接運行“flask run”來啟動web服務器。

 Step3. Testing the Attacker’s web server. 

Task4: Configure the DNS server on the Attacker VM 

攻擊者VM也充當了attacker32.com域名的命名服務器。BIND9服務器已經在攻擊者VM上運行,我們需要為它準備一個區域文件。一個示例區域文件包含在attackr_vm文件夾中。我們應該相應地更改區域文件,並將其複製到/etc/bind文件夾中。

將以下區域條目添加到/etc/bind/name .因此上面的區域文件將由BIND9服務器使用。

 如果一切都設置正確,我們可以嘗試以下dig命令,看看我們得到的響應是否與我們放在區域文件中的響應相同

Task5: Configure the Local DNS Server

在本地DNSserver上,我們設置attacker32.com域的轉發記錄,因此每當本地 DNS 服務器收到此域內主機的 DNS 查詢時,它只需將 DNS 查詢發送到指定轉發記錄的 IPaddress,而不是前往 root server 和the .com server,以找出attacker32.com域的名稱服務器的位置。

要將此類記錄添加到本地 DNS 服務器,我們需要將以下行添加到 /etc/bind/named.conf

 

 

 

在用戶機上測試,dig成功:

Task6. Understanding the Same-Origin Policy Protection

同源策略是一種約定,它是瀏覽器最核心也最基本的安全功能。瀏覽器的同源策略,限制了來自不同源的“document”或腳本,對當前“document”讀取或設置某些屬性。影響“源”的因素有:host(域名或IP地址,如果是IP地址則看做是一個根域名)、子域名、端口、協議。在瀏覽器中,<script>、<img>、<iframe>、<link>等標籤都可以跨域加載資源,而不受同源策略的限制,但是瀏覽器限制了JavaScript的權限,使其不能讀、寫返回的內容。

attacker_vm的change界面

單擊click之後,user_vm的溫度並不會改變

 user_vm的change界面

單擊click之後,user_vm的溫度變為99℃

Task7. Defeat the Same-Origin Policy Protection 

擊敗同源的主要想法保護來自這樣一個事實:策略執行基於主機名,而不是IP地址,所以只要我們使用www.attacker32.com的URL,我們遵守SOP的政策,但這並不意味着我們是限制與www.attacker32.com web服務器進行通信。

在用戶的瀏覽器向www.attacker32.com發送請求之前,它首先需要知道www.attacker32.com的IP地址。一個DNS請求將從用戶的機器發出。如果IP地址沒有緩存在本地DNS服務器上,一個DNS請求最終會被發送到attacker32.com的nameserver,它運行在攻擊者的VM上。因此,攻擊者可以決定在響應中放入什麼。

Step 1: Modify the JavaScript code. 在攻擊者虛擬機中,在www.attacker32.com:8080/change中運行的JavaScript代碼存儲在以下文件中:attacker_vm/rebind_malware/templates/js/change.js。由於該頁面來自www.attacker32.com服務器,根據同源策略,只能與同一服務器交互。因此,我們需要將代碼的第一行從http://www.seediot32.com:8080更改為以下內容:

 Step2: Conduct the DNS rebinding 。我們的JavaScript代碼發送請求到www.attacker32.com,請求將返回到攻擊者VM。這不是我們想要的,我們希望將請求發送到iot服務器。這可以通過DNS重新綁定技術實現。我們首先映射 www. attacker32.com 為攻擊者VM的IP地址,這樣用戶可以從http: //www.attacker32.com/change獲得實際頁面。在我們點擊網頁上的按鈕之前,我們重新映射www.attacker32.com主機名到iot服務器的IP地址,按鈕觸發的請求將到達iot服務器。這正是我們想要的。

修改好相應文件進行刷新:

同源策略是瀏覽器的一個安全功能,不同源的客戶端腳本在沒有明確授權的情況下,不能讀寫對方資源。所以xyz.com下的js腳本採用ajax讀取abc.com裏面的文件數據是會被拒絕的。同源策略限制了從同一個源加載的文檔或腳本如何與來自另一個源的資源進行交互。這是一個用於隔離潛在惡意文件的重要安全機制。不受同源策略限制的1. 頁面中的鏈接,重定向以及表單提交是不會受到同源策略限制的。2. 跨域資源的引入是可以的。但是js不能讀寫加載的內容。如嵌入到頁面中的<script src=”…”></script>,<img>,<link>,<iframe>等

Task8. Launch the Attack 

使用用戶機訪問下列url:

 

 

每當10秒倒計時為0,溫度將會被設定為88度:

 

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

【其他文章推薦】

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

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

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

※南投搬家公司費用需注意的眉眉角角,別等搬了再說!

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

股價飆升有理,大摩指Tesla潛在市場大

 

美國電動車廠特斯拉(Tesla),股價一度飆破300美元,並超越福特汽車,躍居美國第二大車廠。到底特斯拉值不值得此一高價?特斯拉多頭出面力挺,指出特斯拉不只是電動車業者,也是運輸和基礎建設公司,潛在市場極大,300美元合情合理。

MarketWatch、巴倫(Barron’s)報導,4日特斯拉股價首次突破300美元大關,漲勢之快讓大多頭也吃驚。摩根士丹利(大摩)分析師Adam Jonas等人報告稱,他們訝異於特斯拉近來漲勢,在短短時間內就站上300美元,認為技術因素戰勝基本面。

儘管如此,大摩認為,特斯拉並非配不上此一價碼。報告稱,他們和投資人交談後發現,大家比預期更快了解特斯拉的潛在市場。大摩說,特斯拉潛在市場包括10兆美元的輕型車移動市場、1兆美元的物流市場、2~3兆美元的能源市場。另外,消費者待在車上時間高達6,000億小時,特斯拉能從數兆美元的影音內容傳輸等服務獲利。

大摩指出,上次特斯拉飆高時,是在2014年9月,當時少有投資人以此種角度看待特斯拉,多認為大摩報告衝太快,那個時候特斯拉被視為純電動車廠,有機會觸及電池/能源儲存系統。但是這2.5年來情況已大幅轉變。特斯拉佔據三大重要趨勢的中心位置:電動車、自駕系統、車輛共享。

大摩說,特斯拉的「Tesla Mobility」將在2018年問世,此一隨選服務提供自動化運輸功能,預期特斯拉將在共享移動(shared mobility)革命中,扮演領導角色。

需要強調的是,Benzinga報導,Jonas向來看來極為看好特斯拉,2015年年中曾預測特斯股價將站上465美元,被外界稱為「特斯拉啦啦隊」。

特斯拉5日股價拉回,下跌2.86%收在295美元。

特斯拉第1季交車量意外跳高,帶動股價一飛衝天,如今已超越福特(Ford Motor Co.),成為全美市值第二大的汽車製造商。

特斯拉4日終場勁揚1.74%、收303.70美元,創歷史收盤新高。MarketWatch報導,根據計算,特斯拉的市值已達495億美元,一口氣超車福特的444億美元。在汽車類股中,特斯拉的市值如今僅次於通用汽車(General Motors Co.)的513億美元。

特斯拉甫於週日(4月2日)宣布,第1季的Model S、Model X交貨量超過了25,000台,創單季歷史高,比去年同期大增了69%之多。這高於分析師原先預估的23,000~24,500台。特斯拉並預估,今(2017)年上半年的汽車交貨量有機會達到47,000~50,000台。

(本文內容由授權使用。圖片出處:Public Domain CC0)

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化

一起玩轉微服務(7)——單一職責

 

單一職責

單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的相應職責,或者可以定義為:就一個類而言,應該只有一個引起它變化的原因。

單一職責原則是實現高內聚、低耦合的指導方針,它是最簡單但又最難運用的原則

單一職責原則是最簡單的面向對象設計原則,它用於控制類的粒度大小

設計原則很重要的一點就是簡單,單一職責,也就是我們經常所說的專人干專事。

一個單元(一個類、函數或者微服務)應該有且只有一個職責。無論如何,一個微服務不應該包含多於一個的職責。職責單一的後果之一就是職責單位(微服務,類,接口,函數)的數量劇增。據說Amazon,Netflix這些採用微服務架構的網站一個小功能就會調用幾十上百個微服務。但是相較於每個函數都是多個業務邏輯或職責功能的混合體的情況,維護成本還是低很多的。 SRP中的“單一職責”是個比較模糊的概念。對於函數,它可能指單一的功能,不涉及複雜邏輯;但對於類或者接口,它可能是指對單一對象的操作,也可能是指對該對象單一屬性的操作。總而言之,單一職責原則就是為了讓代碼邏輯更加清晰,可維護性更好,定位問題更快的一種設計原則。

什麼是高內聚低耦合?

這犀利的措辭一看就是來自開發界的術語。高內聚是說一個功能模塊最好僅完成一個獨立的子功能並且完成的很好。低耦合是指模塊與模塊之間盡量獨立/聯繫少/接口簡單。

這個原則出現的背景是為了讓程序“可復用/可擴展/夠靈活/可維護”。干過一陣子產品的人對這幾個詞應該都不陌生。對於程序設計者來說,這幾個詞是十分重要的,不亞於產品經理口中的“用戶體驗”(原則or擋箭牌)。

優點

單一職責的優點如下:

•類的複雜性降低,實現什麼職責都有清晰明確的定義。•可讀性提高,複雜性降低。•可維護性提高,可讀性提高。•變更引起的風險降低,變更是必不可少的,如果接口的單一職責做得好,一個接口修改只對相應的實現類有影響,對其他的接口無影響,這對系統的擴展性、維護性都有非常大的幫助。

記得在三字經裡邊有這樣一段 教之道,貴以專(出自三字經) 說的就是無論學習還是構建團隊,最重要的是專才,而不是全才。就好比一個足球隊,如果都是前鋒或者都是後衛,那麼這樣的球隊一定不能出成績,反而是將各個位置上的人進行統一協調,根據分工不同,共同協作,形成1+1>2的效果,那麼這樣的團隊就非常容易出成績。

有很多公司為了趕進度,經常會招聘一些所謂的全能型人才,但是這種人往往專業的程度不夠,當遇到某些棘手的問題的時候,往往不能夠非常快速的解決問題。從而導致最終交付的質量較差。

單一職責的目的

實施單一職責的目的如下:

•以類來隔離需求功能點,這樣當一個點的需求發生變化的時候,不會影響別的類的邏輯,這個和設計模式中的開閉原則類似,對於擴展持開放態度,對於修改持關閉態度。•是一個原子模塊級的粒度,至於原子的粒度到底是什麼樣的,應該因業務而異,設計的過程中同時考慮業務的擴展,所以這就要求在設計的過程中,必須有業務專家共同參与,共同規避風險。•粒度小,靈活,復用性強,方便更高一級別的抽象。

每個微服務單獨運行在獨立的進程中,能夠實現松耦合,並且獨立部署。

如何做

分3步:

1.把一個具體的問題抽象成一類問題;

2.根據用戶體驗流程劃分功能模塊;

3.針對每個功能設計封閉的解決方案。

最佳實踐

在實際工作中,有一個經常會用到的設計模式,DAO模式,又叫數據訪問對象,裏面定義了數據庫中表的增、刪、改、查操作,按照單一職責原則,為什麼不把增、刪、改、查分別定義成四種接口?這是因為數據庫的表操作,基本上就是這四種類型,不可能變化,所以沒有必要分開定義,反而經常變化的是數據庫的表結構,表結構一變,這四種操作都要跟着變。所以通常我們會針對一張表實現一個DAO,一張表就代表一種類型的職責。

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化

以機器人生產取代海外代工EV,特斯拉望提升獲利

蘋果海外代工太花錢,美國電動車商特斯拉(Tesla)誇下海口,要靠機器人大軍,快速提升獲利,未來市值將與蘋果並駕齊驅。

MarketWatch、CNBC報導,2015年特斯拉創辦人兼執行長馬斯克(Elon Musk)曾說,特斯拉市值會在十年內衝上7,000億美元。他說,要是十年都能維持50%成長率,獲利達到10%,本益比為20倍,特斯拉市值將追上蘋果。要達到7,000億美元市值不簡單,勢必需要龐大的資本開支。

3日晚間的財報會議上,有人問兩年過去了,現在馬斯克怎麼想?馬斯克看法未變,回答說或許他是癡心妄想,但是有明確方法可以辦到;那就是用機器生產機器,這需要大量軟體,不只是機器人,還要撰寫程式讓機器人互動,比汽車軟體更複雜。馬斯克認為,用機器取代人力,可提升獲利,利潤將高於蘋果的海外代工。他說,機器人生產的作法,其他業者很難模仿,要是他處於別家廠商的位置,會不知如何是好。

特斯拉的平價車款「Model 3」擬用先進機器生產,未來幾個月有三個新產線上線。以美國加州Fremont廠為例,目前該廠每年生產10萬輛汽車,2018年底時,產量將飆至每年50萬輛。另外,Model 3能低價出售的主因是,特斯拉要在美國內華達州超級電池廠(Gigafactory),自行生產鋰電池,以便壓低成本。電池廠正在裝設新產線,預料由特斯拉的特別軟體操控,未來鋰電池產量將超越全球總和。

特斯拉能否圓夢不得而知,2016年特斯拉虧損6.75億美元,蘋果一季的獲利就超越特斯拉去年的年度營收。3日為止,特斯拉市值為510億美元,蘋果為7,720億美元。

(本文內容由授權使用。圖片出處:Tesla)

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化

電動車發展腳步快,石油恐2040年前觸頂

Thomson Reuters報導,嘉能可(Glencore)董事長Tony Hayward 22日表示,電動車的快速進步意味著石油需求可能會在2040年以前觸頂,深海鑽油、加拿大油砂等高成本原油生產商恐將先被淘汰出局,擁有生產成本優勢的石油輸出國組織(OPEC)相對較不受衝擊。Hayward曾任英國石油公司(BP Plc)執行長。

嘉能可執行長Ivan Glasenberg表示,石油需求可能提前觸頂對嘉能可有利、因為旗下投資組合並沒有太多的原油。Glasenberg指出,如果電動車在2035年拿下90-95%的市占率,全球年度銅需求量可望較目前的2,300萬噸呈現倍增。德國總理梅克爾(Angela Merkel)22日指出,鋰電池技術已經進步到可以讓電動車擁有1千公里的續航力、遠高於目前的200-300公里,德國必須大舉投資以確保產業繼續保有優勢。

戴姆勒(Daimler AG)董事長Deiter Zetsche 22日表示,預估到2022年旗下將有超過10款的純電動轎車系列。戴姆勒旗下全資子公司ACCUMOTIVE 22日在德國卡門茨(Kamenz)為第二座電池工廠舉行奠基儀式、邀請梅克爾出席。這座工廠耗資5億歐元、預計在2018年年中正式營運。

英國金融時報去年8月報導,麥格理集團全球能源策略師Vikas Dwivedi指出,沙烏地阿拉伯對電動車的長期發展存有戒心,這可能就是它為何宣布將讓沙烏地阿拉伯國家石油公司(Saudi Aramco)初次公開發行(IPO)的原因之一。

通用汽車(General Motors)Chevrolet Bolt電動車續航力達238英里(383公里)、建議零售價37,495美元起(註:最多可取得7,500美元的聯邦折抵稅額、扣除後入手價相當於29,995美元)。美聯社報導,IHS Markit汽車業分析師Stephanie Brinley指出,Bolt續航力遠高於美國平均來回通勤距離(40英里),但有時人們回家後可能忘了或沒有足夠時間進行充電,這是電動車主得多加費心的地方。

(本文內容由授權使用。圖片出處:public domain CC0)

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化

莫斯科140年最暖冬季 俄國氣象局長直呼罕見

摘錄自2020年03月01日中央通訊社俄羅斯報導

俄羅斯氣象局今天(1日)表示,首都莫斯科出現有紀錄以來最暖冬季,過去幾個月大多不見傳統的白雪皚皚景象。

俄羅斯氣象局長費爾芬德(Roman Vilfand)告訴新聞媒體塔斯社(TASS),俄羅斯去年12月到今年2月平均氣溫,比1960年到1961年冬季的攝氏負2.8度紀錄高出約2.5度。他表示,紀錄之間差距這麼大非常罕見。俄羅斯在140年前就開始記錄。「我相信我們很長一段時間不會再看到如此暖的冬季。」他還說,俄羅斯整體冬季紀錄也很可能會被打破,不過相關資料還在彙整。

2019年也是俄羅斯有紀錄以來最熱的一年。老一輩莫斯科居民的記憶中,數十年來,這座城市每到冬季就會變得乾冷,公園被大雪覆蓋。克里姆林宮承認全球暖化,總統蒲亭(Vladimir Putin)12月曾表示,俄羅斯暖化程度比地球上其他地方嚴重2.5%。不過他對全球暖化是人為因素抱持懷疑態度,表示可能與宇宙發展過程有關,「沒人知道氣候變遷的原因」。

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

【其他文章推薦】

※自行創業缺乏曝光? 網頁設計幫您第一時間規劃公司的形象門面

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

※想知道最厲害的網頁設計公司"嚨底家"!

※幫你省時又省力,新北清潔一流服務好口碑

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

※產品缺大量曝光嗎?你需要的是一流包裝設計!

matplotlib 強化學習

matplotlib 強化學習

import matplotlib.pyplot as plt
...![](https://img2020.cnblogs.com/blog/1642028/202006/1642028-20200621111043462-144482637.png)


plt.show()		#显示圖像;下面都要寫,就不重複了

二維圖表

1. 基本圖表

  1. 用plot方法畫出x=(0,10)間sin的圖像
x = np.linspace(0, 10, 30)  #產生0-10之間的30個均勻數組
plt.plot(x, np.sin(x));		#以x為橫坐標,sin(x)為縱坐標打印出圖像

注:

  • linspace生成的是包含結尾的數組,比如0-10生成11個數才是0,1,2,3,4,5…
  • 生成10個數則是0,1.11111111, 2.22222222, 3.33333333, 4.44444444…;
  • 而arrange是不包含結尾的,0-10生成10個數是0,1,2,3…
  1. 用點,線的方式畫出x=(0,10)間sin的圖像
plt.plot(x, np.sin(x), '-o');
#'o’代表每個數據點用小圓圈表示,且數據點之前不用線連接,看起來很像散點圖
#'ro'代表小圓圈是紅色的
#'-'就是最普通的線型,數據點之間用實線連接。
#'--'設置線性為虛線

!

  1. 用scatter方法畫出x=(0,10)間sin的點圖像
plt.scatter(x, np.sin(x));		#散點圖

  1. 用餅圖的面積及顏色展示一組4維數據
rng = np.random.RandomState(0)
x = rng.randn(100)			#生成隨機數組
y = rng.randn(100)
colors = rng.rand(100)
sizes = 1000 * rng.rand(100)

plt.scatter(x, y, c=colors, s=sizes, alpha=0.3,
cmap='viridis')
plt.colorbar(); 			# 展示色階

繪製柱狀圖

x = [1,2,3,4,5,6,7,8]
y = [3,1,4,5,8,9,7,2]
label=['A','B','C','D','E','F','G','H']

plt.bar(x,y,tick_label = label);	#縱向升高
plt.barh(x,y,tick_label = label);	#換成橫向

直方圖

data = np.random.randn(1000) #生成1000個隨機數
plt.hist(data);				#畫出圖像

!

2. 自定義圖表元素

x = np.linspace(0,10,100)
plt.plot(x, np.sin(x))
plt.ylim(-1.5, 1.5);		#設置y軸显示範圍為(-1.5,1.5)
x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y, label='sin(x)')
plt.xlabel('variable x');			#設置x,y軸標籤variable x,value y
plt.ylabel('value y');
plt.title('三角函數');					#設置圖表標題“三角函數”
plt.text(3.2, 0, 'sin(x)', weight='bold', color='r');	#註釋

plt.annotate('maximum',xy=(np.pi/2, 1),xytext=(np.pi/2+1, 1),weight='bold',color='r',arrowprops=dict(arrowstyle='->', connectionstyle='arc3', color='r'));					#箭頭標識

显示網格

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.grid()

...
參數
matplotlin.pyplot.grid(b, which, axis, color, linestyle, linewidth, **kwargs) axis : 取值為‘both’, ‘x’,‘y’。就是想繪製哪個方向的網格線。不過我在輸入參數的時候發現如果輸入x或y的時候,             輸入的是哪條軸,則會隱藏哪條軸

color : 這就不用多說了,就是設置網格線的顏色。或者直接用c來代替color也可以。
plt.grid(c='g') 設置顏色為綠色

linestyle :也可以用ls來代替linestyle, 設置網格線的風格,是連續實線,虛線或者其它不同的線條。 | '-' | '--' | '-.' | ':' | 'None' | ' ' | '']
plt.grid(linestyle='-.')

linewidth : 設置網格線的寬度
...

繪製平行於x軸y=0.8的水平參考線

x = np.linspace(0.05, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.axhline(y=0.8, ls='--', c='r')#水平參考線

3. 自定義圖像

在一張圖裡繪製sin,cos的圖形,並展示圖例

x = np.linspace(0, 10, 1000)
fig, ax = plt.subplots()

ax.plot(x, np.sin(x), label='sin')
ax.plot(x, np.cos(x), '--', label='cos')
ax.legend();

多子圖

在2個子圖中,显示sin(x)和cos(x)的圖像

fig = plt.figure()
ax1 = fig.add_axes([0.1, 0.5, 0.8, 0.4], ylim=(-1.2, 1.2))
ax2 = fig.add_axes([0.1, 0.1, 0.8, 0.4], ylim=(-1.2, 1.2))

x = np.linspace(0, 10)
ax1.plot(np.sin(x));
ax2.plot(np.cos(x));

for i in range(1, 7):		#用for創建6個子圖,並且在圖中標識出對應的子圖坐標
plt.subplot(2, 3, i)
plt.text(0.5, 0.5, str((2, 3, i)),fontsize=18, ha='center')

組合繪製大小不同的子圖

grid = plt.GridSpec(2, 3, wspace=0.4, hspace=0.3)
plt.subplot(grid[0, 0])
plt.subplot(grid[0, 1:])
plt.subplot(grid[1, :2])
plt.subplot(grid[1, 2]);

三維圖像

#38.創建一個三維畫布
from mpl_toolkits import mplot3d
fig = plt.figure()
ax = plt.axes(projection='3d')

#39.繪製一個三維螺旋線
ax = plt.axes(projection='3d')
# Data for a three-dimensional line
zline = np.linspace(0, 15, 1000)
xline = np.sin(zline)
yline = np.cos(zline)
ax.plot3D(xline, yline, zline);

#40.繪製一組三維點
ax = plt.axes(projection='3d')
zdata = 15 * np.random.random(100)
xdata = np.sin(zdata) + 0.1 * np.random.randn(100)
ydata = np.cos(zdata) + 0.1 * np.random.randn(100)
ax.scatter3D(xdata, ydata, zdata, c=zdata, cmap='Greens');

import numpy  as np
from matplotlib import pyplot  as plt
from mpl_toolkits.mplot3d import Axes3D
q1 = np.arange(0.01, 1, 0.01)
q2 = np.arange(0.01, 1 , 0.01)  #生成一位基底
q1, q2 = np.meshgrid(q1, q2)    #混合成二維數組,形成二維基底

pCDa = (1-q1)
pCDb = (np.sqrt((1-q1)**2+q1**2)-q1)
s_pCD = -q1* np.log2(q1) - (1-q1) * np.log2(1-q1)
Q_MID1 = s_pCD *q2 /q2        #AB或CD的關聯值,下圖是(s_x_pCD - s_pCD) *q2;  *q2/q2后才是圓柱體

fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(q1,q2,Q_MID1)     #表面圖
ax.set_xlabel('value of q2')
ax.set_ylabel('value of q1')
ax.set_zlabel('the value of Q_MID1(pCD)')
plt.show()

#參數
ax.plot_surface(X, Y, Z, *args, **kwargs)
X,Y,Z:數據
rstride、cstride、rcount、ccount:同Wireframe plots定義
color:表面顏色
cmap:圖層

參考文獻:

  1. https://www.kesci.com/home/project/5de9f0a0953ca8002c95d2a9 50題matplotlib從入門到精通

  2. https://www.cnblogs.com/knightoffz/p/12933716.html 大創項目經歷

  3. https://matplotlib.org/mpl_toolkits/mplot3d/tutorial.html 官方文檔

  4. https://www.cnblogs.com/xingshansi/p/6777945.html 參考博客

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化

CIEVE 2013 中國國際新能源汽車產業博覽會

展會名稱:

CIEVE 2013 中國國際新能源汽車產業博覽會

展會日期:

2013年9月5-7日

展會地點:

北京.中國國際展覽中心新館

主辦單位:

商務部中國國際經濟合作學會、全國節能與新能源汽車產業聯盟

承辦單位:

上海勵德展覽展示服務有限公司

展會簡介:

中國已經成為世界第一大汽車生產國和消費國,2011年汽車產銷量超過1800萬輛,預計到2030年中國汽車中乘用車保有量將會達到2.5億輛。然而,隨著節能減排,降低能源依賴逐漸成為國際汽車工業和環保工業的發展趨勢,加之油價不斷上漲給汽車工業帶來的壓力,中國政府近幾年制定了相應的節能與新能源汽車發展戰略。

新能源汽車作為發展可替代能源,建設可持續發展低碳社會的重要一環,越來越受到世界各國的高度重視,我國政府也已正式將新能源汽車列入七大戰略性產業之一。

隨著近日(2012.7.9)國務院正式公佈《節能與新能源汽車產業發展規劃(2012—2020年)》,近年來圍繞新能源汽車的一系列爭議也一錘定音。在技術路線之爭上,新能源汽車規劃敲定以純電動汽車和插電式混合動力汽車作為戰略方向,並兼顧普及混合動力汽車。在產業化目標上,規劃要求“到2015年,純電動汽車和插電式混合動力汽車累計產銷量力爭達到50萬輛;到2020年,純電動汽車和插電式混合動力汽車生產能力達200萬輛、累計產銷量超過500萬輛”。相關行業調研機構對產業規模進行了測算,到2015年新能源汽車產業將孕育千億元的市場,未來10年將是我國電動汽車產業發展的關鍵時期。

展品範圍:

→整車產品:

純電動車:轎車、大巴、公車、各型旅行車、低速微型車、各種純電動特種車(環衛車、電力車、郵政車、小型客貨車、高爾夫車、房車、叉車、搬運車、牽引車、旅遊觀光車、醫療車、警用車、摩托車、三輪車等);混合動力車:轎車、大巴、公車、旅行車等,增程式電動車,插電式混合動力車;其他新能源車:燃料電池車、節能內燃機汽車、氫能車、生物燃料車、太陽能車、天然氣車等各種新能源、清潔燃料及低排放、環保節能型車;

→三大部件:電池、電機、電控,低排放節能型發動機、混合動力發動機及清潔燃料發動機;動力電池,鋰電池、燃料電池、鉛酸蓄電池,電池管理系統BMS,正負極材料,隔膜,電解液,超級電容器;整車匯流排與控制系統;非同步電機、開關磁阻電機和永磁電機(包括無刷直流電機和永磁同步電機),電控系統,動力總成,整車控制系統等;

→充換電裝置及設施;儲能裝置;能源管理系統;電力電容器、飛輪、逆變器、電熱泵、電動助力轉向、電動空調、功率模組等;相關材料、工藝、技術;相關檢測、監控、試驗、安全防護裝備;維修、製造設備和工具;充電站專案規劃及成果展示;充電站充電機、充電樁、充電連接器、配電設備、變壓器、電纜等相關基礎設施;充換電池及電池管理系統;電能監視系統;供電解決方案等

→相關附件:新能源車的內外裝飾及座椅,輪轂輪胎,儀錶儀盤,車燈,線束,車載電子,新能源汽車的整車及系統控制設計,裝備製造等;

→其他:檢測認證機構,行業協會,產品研發,貿易服務,經銷商,管理培訓及其他相關產品或服務等。

參展費用:

標準展位:9平米/個,(配置包括:9平米場地、展位內地毯、三面展板、一張洽談桌、兩把椅子、兩個射燈、公司楣板、一個220V電源插座)

內資企業:RMB 8800元/個;合資企業:10800元/個;

外資企業:USD 3200元/個

光   地(36平方米起租,無任何配置):

內資企業:RMB 880/平方米;合資企業:1000元/平米;

外資企業:USD 300元/平方米

1、廣告宣傳價格

會刊封面:25000元        會刊封二:15000元  

會刊封底:20000元        會刊封三:10000元         

會刊扉頁:10000元        門票廣告:10000元/5千個

彩頁整版:5000元         參觀證廣告:20000元/5千個

2、展會現場廣告項目及價格(詳情請來電索取)

3、各項展會贊助方案及報價(詳情請來電索取)

聯繫方式:

CIEVE 2013北京新能源汽車產業博覽會組委會

聯繫人:高    晟            手  機:18049755269    

電  話:021-54289707        傳  真:  021-54287017

E-mail:cieve88@163.com    網  站:www.cieve.org   

地  址:上海市徐匯區銀都路298號九潤商務大廈210室(200230)

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化

QT槽函數獲取信號發送對象

Qt 在槽函數中獲取信號發送對象

Qt中提供了一個函數 qobject_cast(QObject *object),可以通過這個函數判斷信號發出對象

Qt 幫助文檔的解釋:
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns nullptr. If object is nullptr then it will also return nullptr.
The class T must inherit (directly or indirectly) QObject and be declared with the Q_OBJECT macro.
A class is considered to inherit itself.
The qobject_cast() function behaves similarly to the standard C++ dynamic_cast(), with the advantages that it doesn’t require RTTI support and it works across dynamic library boundaries.

  • 簡單來說 就是使用這個函數會得到你轉型的的一個實例,但是這個類必須繼承自QObject 或者其子類並且聲明Q_OBJECT 這個宏
  • QT 幫助文檔中一個Example
    QObject *obj = new QTimer; 
    QTimer *timer = qobject_cast<QTimer *>(obj);
    

這裏順便記錄一下RTTI 與RAII,RAII 通常應用於對象資源管理,RTTI 可以動態判斷對象類型,但使用RTTI會增加程序運行時間,這裏簡單記錄區分一下 。

  1. RTTI : Run-time type information
    #include <iostream>
    #include <typeinfo>
    
    class Base {
    public:
        virtual ~Base() = default;
    };
    
    class Derived : public Base {};
    
    int main() {
        Base base;
        Derived derived;
        Base* ptr = &derived;
        Base& ref = derived;
        std::cout << typeid(base).name()<< std::endl;  // class Base 
        std::cout << typeid(derived).name()<< std::endl;  // class Derived
        std::cout << typeid(ptr).name()<< std::endl;  // class Base *
        std::cout << typeid(*ptr).name() << std::endl;  //class Derived           
        std::cout << typeid(ref).name() << std::endl;  //class Derived
    
    }
    
  2. RAII : Resource Acquisition Is Initialization
    代碼來源 https://en.cppreference.com/w/cpp/language/raii
    std::mutex m;
    
    void bad() 
    {
        m.lock();                    // acquire the mutex
        f();                         // if f() throws an exception, the mutex is never released
        if(!everything_ok()) return; // early return, the mutex is never released
        m.unlock();                  // if bad() reaches this statement, the mutex is released
    }
    
    void good()
    {
        std::lock_guard<std::mutex> lk(m); // RAII class: mutex acquisition is initialization
        f();                               // if f() throws an exception, the mutex is released
        if(!everything_ok()) return;       // early return, the mutex is released
    }
    

下面是QT通過qobject_cast獲取信號發送對象的一個Demo,通過Qt Desinger 繪製兩個按鈕和一個文本框,將兩個按鈕的點擊事件連接到同一個槽函數,在槽函數裏面判斷信號的發送者並作出不同的響應
主要的代碼如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

public slots:
    void onButtonClicked();

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H


#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QDebug>
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    connect(ui->leftButton,&QPushButton::clicked,this,&MainWindow::onButtonClicked);
    connect(ui->rightButton,&QPushButton::clicked,this,&MainWindow::onButtonClicked);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::onButtonClicked()
{
    QPushButton *button =  qobject_cast<QPushButton *>(sender());

    ui->textLabel->setText(button->text());

    if(ui->leftButton == button)
    {
        qDebug()<<"left Button clicked";
        ui->textLabel->setStyleSheet("background-color:yellow");
        button->setStyleSheet("background-color:yellow");

    }
    else
    {
        ui->textLabel->setStyleSheet("background-color:green");
        button->setStyleSheet("background-color:green");
    }

}


完整的代碼已上傳Github

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

【其他文章推薦】

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

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

※Google地圖已可更新顯示潭子電動車充電站設置地點!!

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

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

※網頁設計最專業,超強功能平台可客製化