中國就愛電動車,豐田氫燃料電池大計只好轉彎

豐田(Toyota)正全力推動氫燃料電池車,與過去盟友特斯拉(Tesla)分道揚鑣,鼓吹氫燃料電池才是未來汽車的主流,甚至不惜出售 5,000 億日圓特別股籌資以發展氫燃料電池車,不過,凡事遇到中國政府都得轉彎,豐田的大計也一樣,由於中國政府政策就是要電動車,豐田在屋簷下也不得不低頭。  
 
 
 
 
 
 
 豐田也曾經加入電動車陣營,自 2010 年起更與特斯拉合作,並進行資本投資,投資特斯拉 5,000 萬美元取得 2.4% 股份,雙方自 2010 年起合作打造豐田第二代 RAV4 EV 全電動車,然而,之後豐田轉向氫燃料電池,與特斯拉的合作於 2014 年結束,RAV4 EV 電動車於 2014 年 8 月停產,2014 年 10 月傳出豐田出售特斯拉持股,而在那之前,豐田就已經與特斯拉惡言相向,豐田唱衰電動車沒有未來,特斯拉的馬斯克(Musk)則說氫比較適合用來推動火箭,到 2015 年 1 月又直批氫燃料電池愚蠢。     豐田不理會舊合作夥伴的閒言閒語,鐵了心走氫燃料電池之路,宣布推出「未來」(MIRAI)氫燃料電池車,並全力押注在氫燃料電池車之上。2015 年 4 月 28 日,豐田宣布將發行 5,000 億日圓特別股籌資,特別股售價將高於普通股 2 成,並且有 5 年閉鎖期,股息自 0.5% 開始,每年提升 0.5% 直到 2.5%,雖然並不起眼,但在日本的低利環境下算是條件不差,特別股日後可選擇原價賣回,或轉換為普通股。   不過,任何事遇上中國政府,往往只能轉彎,豐田與電動車決裂,另立氫燃料電池車旗幟的大計,遇到中國政策,也只能低頭。   中國政府正推動本土電動車製造,要求國際大廠與其中國合作夥伴參與其中,各大廠為了討好中國政府,紛紛加入,《彭博新能源財經》估計 2015 年有 40 款電動車將在中國上市,豐田也無法例外,將於 2015 年與中國合作夥伴廣州汽車、中國第一汽車集團合作推出 Leahead 以及 Ranz 全電動車品牌。   豐田首席工程師田中良和(Yoshikazu Tanaka)於 2015 年 4 月 16 日表示,電動車的普及需要仰賴快速充電站,而快速充電對於電網產生很大負擔,他不認為電動車會普及,言猶在耳,豐田中國區董事長大西弘致卻於 4 月 21 日表示,在習近平全力推動電動車政策下,他相信包括充電站在內的基礎設施將發展快速。  
 

    豐田的自相矛盾,也再度顯示在中國做生意的政治風險,不過,產業界認為豐田在中國續推電動車,只是為了迎合上意作作秀,賣個一定數量交差即可,不會全心推動,畢竟豐田已經全力壓寶氫燃料電池車,沒有
 
 
 
 回頭路了,這也顯示用政策強迫推動產業,即使干預力量強如中國政府,仍有極限。     本文全文授權轉載自《科技新報》─〈〉

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

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

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

※回頭車貨運收費標準

LG 化學將為長城汽車供應電動車電池

據 LG 化學 17 日公布的消息指出,近日該公司與中國最大 SUV (運動型多用途汽車) 和皮卡制造商簽署了電動車電池供應合約。根據合約,LG 化學將為長城汽車自 2017 年起量產的插電式混合動力車 (phev) 車型提供電池。   由此,LG 化學將為中國 20 萬輛電動車提供電池,在中國市場搶占先機,並奠定進入中國 SUV 市場的堅實基礎。2014 年中國 SUV 銷量約達 410 萬輛,預計在 2016 年將達 620 萬輛。

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

【【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

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

易到用車APP上線數千輛新能源車 最低5元人民幣即可搭乘

日前,易到用車啟動了「E-Car計畫」,將陸續在北京、上海、廣州、深圳上線數千輛新能源車型,打造新能源出行平台;與此同時易到用車還宣佈將與普天新能源、龐大集團、騰勢等品牌展開深度合作,共同打造新能源出行聯盟,共建新能源城市。   屆時,易到用車App將上線開通「新能源」車型選項。此次加入易到「E-Car計畫」的車型包括混合動力的雙擎普銳斯、沃爾沃S60L、北汽EV系列以及特斯拉,用戶可通過易到用車App,在「新能源」車型中按需選擇,價格最低5元人民幣(下同)起步,0元/分鐘,0.99元/公里。   易到方面介紹,作為聯盟計畫的一部分,易到用車將與普天合作,在未來共同建設1000個充電樁設施,也同時尋找更多合作夥伴,提供場地共同建樁,而且充電樁建好後,將面向社會全面開放使用。

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

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

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

※台北網頁設計公司全省服務真心推薦

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

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

※推薦評價好的iphone維修中心

為電動車佈局?鴻海2250萬美元入股上海嘉銘

根據《經濟日報》5月19日報導,鴻海集團昨日代子公司富泰華工業(深圳)有限公司發佈公告,取得嘉銘融資租賃(上海)有限公司股權,預計投資金額為2,250萬美元,持股比例將達75%。   市場猜測,鴻海集團投資此融資租賃公司,應該與電動車佈局有關。現在中國大陸融資租賃、分時租賃是電動車銷售的主要動力,大陸日前也有報告指出,目前,新能源汽車領域融資租賃的滲透率約為14%。預計到2025年,新能源汽車銷量將不低於500萬輛,融資租賃滲透率至少達到22%。汽車金融及租賃服務是新能源汽車業價值鏈中最具有獲利能力的環節,毛利率甚至可望高達30%左右。

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

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

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

※回頭車貨運收費標準

見證大火中的滅絕 大型農企開發摧殘亞馬遜雨林 有如殖民故事翻版

環境資訊中心外電;鄭景文 翻譯;彭瑞祥 審校;稿源:Mongabay

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

【【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

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

澳洲野火危機蔓延 維省紅色警戒危險霧霾罩雪梨

摘錄自2019年11月21日中央通訊社雪梨報導

澳洲消防人員今天(21日)在全國各地與近200處野火搏鬥之際,當局對維多利亞省(Victoria)部分地區發布紅色警戒,雪梨則是連續第3天籠罩在危險霧霾中。

路透社報導,維多利亞省氣溫料將突破攝氏40度,官員下令全面實施禁火令,並警告居住在高度危險地區的民眾隨時準備撤離。

紅色警戒是防範野火的最高級警戒,意味可能陷入最嚴重危機,一旦起火,火勢便會迅速蔓延,情況難以捉摸甚至可能失控。

野火連日來肆虐澳洲多省,令許多社區居民身處險境。截至本月為止,烈焰已奪走至少4條人命,燒毀面積約100萬公頃的農地和灌木林,並摧毀400多戶家園。

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

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

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

※台北網頁設計公司全省服務真心推薦

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

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

土耳其經歷最熱11月 專家:氣候變遷致極端氣溫

摘錄自2019年11月20日中央通訊社綜合報導

氣象預報顯示,土耳其冬季遲來,安卡拉和伊斯坦堡較正常氣溫高出攝氏2到5度。報導引述專家說,土耳其位處氣候變遷影響最嚴重地區之一,正經歷歷年來最熱的11月。

土耳其「國民日報」(Milliyet)19日引述土耳其氣象總局預報部主任烏恰爾(Ahmet Uçar)表示,氣溫將於12月首週才會開始下降,局部地區可望降雨。他說:「根據預測,未來一週沒有冬天的跡象,我們預期到12月氣溫才會下降並且會降雨。諸如安卡拉和伊斯坦堡會比季節的正常氣溫高攝氏2到5度。」

伊斯坦堡科技大學(Istanbul Technical University)氣象工程系教授申(Orhan Şen)指出,土耳其位處受到氣候變遷影響最嚴重地區之一。「現在正在發生的情況就是,11月已經開始出現極端氣溫,這就是為什麼冬天遲到了。11月出現這種高溫、15到20天沒有降雨,這是天然災害。根據氣象資料,這是土耳其第3次經歷當前這樣的歷來最熱11月。」

最近數月缺雨也影響水壩供水。官方數據指出,伊斯坦堡的水壩蓄水率已降為37.97%。其中在提供伊斯坦堡巿民飲水的10座水壩中,最高的蓄水率僅27.6%。

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

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

台北網頁設計公司這麼多該如何選擇?

※智慧手機時代的來臨,RWD網頁設計為架站首選

※評比南投搬家公司費用收費行情懶人包大公開

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

app自動化測試環境配置:adb環境配置、monkey環境配置、appium環境配置大全

1. 安裝jdk

安裝參考鏈接:https://www.cnblogs.com/erweimalaoshi/p/13204509.html

2. 安裝配置Andriod sdk

  安裝Andriod sdk前首先需要安裝配置好jdk環境。

  然後安裝Android sdk

  安裝完成后需要配置環境變量:ANDROID_HOME。

  (1)直接將Android sdk解壓到對應文件路徑下,比如我解壓到c盤根目錄andriod文件夾下

 

  (2)配置環境變量,系統變量裏面添加變量名 ANDROID_HOME 路徑為實際存放SDk的路徑

 

  (3)其他幾個路徑添加到系統環境變量Path中如下圖所示:

    第一個path

 

 

    第二個path

 

 

    第三個path

 

  (4)配置好后檢查一下

    在cmd中輸入adbaapt來判斷安裝是否成功

 

3.  模擬器的安裝夜神

  (1)默認快速安裝,安裝后打開夜神模擬器設置

 

  (2)還可以多開創建一個新的模擬器

 

4.  元素獲取工具-UIAutomator

  (1)進入Android sdk安裝目錄,找到tools文件夾,找到uiautomatorviewer.bat點擊運行,使用它獲取元素

  (2)首先,檢查手機設備是否連接了電腦,在手機設置開發者選項中勾選usb調試,如果沒有開發者選項,在關於平板中連續點擊7次就可以彈出來

  (3)在手機中打開要獲取元素的app

  (4)點擊UIAutomator中的按鈕

  (5)然後可以獲取app元素的信息。這個是1.0版本,2.0版本是集成在appium中的

5.  啟用adb調試

  adb ( Android Debug Bridge)是一個通用命令行工具,它允許你與模擬器實例或連接的 Android 設備進行通信。它可為各種設備操作提供便利,如安裝和調試應用。

  在 android_sdk/platform-tools/ 中找到 adb 工具,然後根據其具體的路徑配置好環境變量(環境變量在2中已經配置過)。然後啟動cmd 輸入‘adb’即可查看是否配置成功。

6. Appium環境搭建

  請安裝新版本node.js

  node.js安裝

  下載地址:https://nodejs.org/en/download/releases/

  注意:Node.js版本要注意與Appium兼容,Appium版本是1.13.0,則選擇的Node.js版本為12.11.1

  默認下一步安裝

  雙擊安裝包

 

  安裝好后通過cmd去查看是否安裝成功,用node -v 查看版本,如果提示不是內部命令,可能是環境變量錯誤或者用管理員身份運行

  查看包管理工具,用命令npm -v相當於python中的pip

Appium的安裝

  Appium Server其實可以通過命令 npm install -g appium來安裝。不過由於眾所周知的網絡原因,直接使用這樣安裝會非常非常慢,甚至會安裝失敗,所以我們可以使用國內鏡像來安裝。

  選用的鏡像是 淘寶NPM鏡像https://npm.taobao.org

鏡像設置

  npm install -g cnpm –registry=https://registry.npm.taobao.org

  執行完成命令看到如下提示則表示設置完成

  鏡像設置好后,就可以進行appium的安裝了

  #安裝最新版本

  cnpm install -g appium

  #安裝指定版本

  cnpm install appium@1.13.0 -g

  檢查是否安裝成功,在控制台輸入命令 appium即可啟動appium服務,appium -v查看版本

  如果輸入appium后显示:“appium不是內部或外部命令,也不是可運行的程序或批處理文件” 可以將appium安裝的路徑 如: “C:\Users\m1877\AppData\Roaming\npm”配置到系統環境變量Path中

安裝Appium-desktop

  下載地址:https://github.com/appium/appium-desktop/releases

  Appium-desktop工具其實封裝了Appium server和Node.js依賴環境。

  appium-desktop是初學者最容易上手的工具

7.python環境安裝配置

  安裝成功之後輸入命令 python –version看到如下提示即可

 

8.安裝Appium-Python-Client

  安裝此項的前提是python安裝好,並且pip安裝好

  通過命令: pip.exe install Appium-Python-Client 進行安裝。

 

  安裝后可以通過如下命令來檢測是否安裝成功。

  輸入命令from appium import webdriver” 回車,如果控制台沒有報錯,則說明安裝成功。

  如果出現如下報錯,則說明安裝失敗

  ImportError: No module named ‘appium’

  ImportError: cannot import name “webdriver”

  說明:裝Appium-Python-Client安裝后的路徑一般為:

  {Python 安裝路徑}\Lib\site-packages\appium

9.安裝 appium-doctor

  appium-doctor可以檢測Appium整體依賴環境配置情況。

  先安裝工具C:\Users\m1877>cnpm install appium-doctor -g

   在控制台輸入命令:appium-doctor 看到如下提示說明整體環境配置成功。

  如果上面某一項显示為“X”則說明相關環境沒有配置好,需要重新安裝配置。

  如果都是√表示appium環境安裝配置已經好了。

附加:(以下工具可安裝也可以不安裝,自行選擇)

 opencv4nodejs安裝

  為什麼要安裝這個,請參考:https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/image-comparison.md

  首先先裝好git。

  安裝opencv4nodejs:cnpm i -g opencv4nodejs

 ffmpeg安裝

  在官網下載好

  直接解壓到目錄中,然後通過bin目錄配置環境變量

  配置好后cmd中,輸入ffmpeg -version驗證是否安裝成功

mjpeg-consumer安裝

  cnpm i -g mjpeg-consumer

bundletool.jar安裝

  下載地址:https://github.com/google/bundletool/releases/tag/0.9.0

  http://appium.io/docs/en/writing-running-appium/android/android-appbundle/

 

出處:https://home.cnblogs.com/u/erweimalaoshi/
歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。

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

【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?

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

※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!

※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化

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

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

Electron: 如何以 Vue.js, Vuetify 開始應用

  • Electron: 使用 JavaScript, HTML 和 CSS 等 Web 技術創建原生程序的框架
  • Vue.js: Web 前端用於構建用戶界面的漸進式框架
  • Vuetify: Vue.js 的 Material Design 組件框架

看完以上介紹,也明白了本文要做的事:用 Vue.js 與 Vuetify 組件,基於 Electron 來創建原生桌面應用。

  • 環境準備
    • Visual Studio Code
    • Node.js
    • Yarn
    • Vue CLI
  • 創建 Vue.js 應用
  • 添加 Vuetify 組件
  • 添加 Electron 構建
  • 發布 Electron 應用
  • 參考
  • 結語

環境準備

Visual Studio Code

建議使用的 VS Code 編輯代碼,下載地址: https://code.visualstudio.com/ 。

同時可安裝如下些擴展:

  • ESLint: 代碼檢查
  • Prettier – Code formatter: 代碼格式化
  • Vetur: Vue 代碼工具
  • Vue 2 Snippets: Vue 代碼提示(可選)

查看 VS Code 版本:

$ code -v
1.46.1
cd9ea6488829f560dc949a8b2fb789f3cdc05f5d
x64

Node.js

Node.js 開發環境,下載地址: https://nodejs.org/en/download/ 。

建議選擇 Latest LTS Version ,因為 Electron v9 仍舊使用的 Node.js v12 。

查看 Node, NPM 版本:

$ node -v
v12.18.1

$ npm -v
6.14.5

Yarn

Yarn 包管理工具,相比 NPM 而言: Fast, Reliable, Secure 。

GitHub: https://github.com/yarnpkg/yarn

全局安裝 Yarn :

npm config set registry https://registry.npm.taobao.org
npm install -g yarn

查看 Yarn 版本:

$ yarn -v
1.22.4

Vue CLI

Vue CLI 是 Vue.js 開發的標準工具。

GitHub: https://github.com/vuejs/vue-cli

全局安裝 Vue CLI :

yarn global add @vue/cli

查看 Vue CLI 版本:

$ vue -V
@vue/cli 4.4.6

創建 Vue.js 應用

vue create my-app

跟隨引導進行工程配置,如下:

Vue CLI v4.4.6
? Please pick a preset: Manually select features
? Check the features needed for your project: Babel, TS, Router, Vuex, Linter
? Use class-style component syntax? Yes
? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? Yes
? Use history mode for router? (Requires proper server setup for index fallback in production) Yes
? Pick a linter / formatter config: Prettier
? Pick additional lint features: Lint on save
? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files
? Save this as a preset for future projects? No
? Pick the package manager to use when installing dependencies: Yarn

~/.vuerc 會保存一些可復用的 preset :

$ cat ~/.vuerc
{
  "useTaobaoRegistry": true,
  "packageManager": "yarn"
}

運行應用:

cd my-app
yarn serve

瀏覽器打開 http://localhost:8080/

添加 Vuetify 組件

Vuetify 是 Vue.js 的 Material Design 組件庫。也可以換用其他的,如 Element 等。

GitHub: https://github.com/vuetifyjs/vuetify

添加 Vuetify :

cd my-app
vue add vuetify

preset 選擇 Default

? Choose a preset: Default (recommended)

添加完成后,編輯下 tsconfig.json

{
  "compilerOptions": {
    ...
    "types": [
-      "webpack-env"
+      "webpack-env",
+      "vuetify"
    ],
    ...
  },
  ...
}

運行應用:

yarn serve

瀏覽器打開 http://localhost:8080/

編輯 tsconfig.json 是為了修正如下錯誤

ERROR in /Users/John/Codes/ikuokuo/start-electron/my-app/src/plugins/vuetify.ts(2,21):
2:21 Could not find a declaration file for module 'vuetify/lib'. '/Users/John/Codes/ikuokuo/start-electron/my-app/node_modules/vuetify/lib/index.js' implicitly has an 'any' type.
  Try `npm install @types/vuetify` if it exists or add a new declaration (.d.ts) file containing `declare module 'vuetify/lib';`
    1 | import Vue from "vue";
  > 2 | import Vuetify from "vuetify/lib";
      |                     ^
    3 |
    4 | Vue.use(Vuetify);
    5 |

添加 Electron 構建

如果你可以建一個網站,你就可以建一個桌面應用程序。 Electron 負責將 Web 構建成原生桌面應用。

而將 Vue.js 應用構建成 Electron 應用,現在用 Vue CLI Plugin Electron Builder 即可。

首先,指明下 node 版本:

yarn add @types/node@12 --dev

之後,添加 Electron Builder :

cd my-app
vue add electron-builder

Electron 版本選擇 9.0.0

? Choose Electron Version ^9.0.0

添加完成后,編輯下 src/router/index.ts

...
const router = new VueRouter({
-  mode: "history",
+  mode: process.env.IS_ELECTRON ? "hash" : "history",
  base: process.env.BASE_URL,
  routes
});

export default router;

運行應用:

yarn electron:serve

現在是桌面窗口了:

命令定義在了 package.json

{
  ...
  "scripts": {
    "serve": "vue-cli-service serve",
    "build": "vue-cli-service build",
    "lint": "vue-cli-service lint",
    "electron:build": "vue-cli-service electron:build",
    "electron:serve": "vue-cli-service electron:serve",
    "postinstall": "electron-builder install-app-deps",
    "postuninstall": "electron-builder install-app-deps"
  },
  ...
}

yarn 執行即可,如下:

$ yarn lint
yarn run v1.22.4
$ vue-cli-service lint
 DONE  No lint errors found!
  Done in 3.17s.

yarn add @types/node@12 --dev 是為了修正如下錯誤

ERROR in /Users/John/Codes/ikuokuo/start-electron/my-app/node_modules/electron/electron.d.ts(1659,31):
1659:31 Cannot extend an interface 'NodeJS.EventEmitter'. Did you mean 'implements'?
...

編輯 src/router/index.ts 是為了修正如下警告

 WARN  It is detected that you are using Vue Router. If you are using history mode, you must push the default route when the root component is loaded. Learn more at https://goo.gl/GM1xZG .

發布 Electron 應用

Vue 應用了 Electron Builder 插件,所以直接用此工具即可。

GitHub: https://github.com/electron-userland/electron-builder

yarn electron:build 編譯發布:

# 淘寶鏡像,國內下載 Electron 更快
export ELECTRON_MIRROR="https://cdn.npm.taobao.org/dist/electron/"

# macOS 下禁用簽名。若要簽名,見最後參考
export CSC_IDENTITY_AUTO_DISCOVERY=false

cd my-app
yarn electron:build

dist_electron/ 下即是發布內容。

例如 macOS 可見打包好的 dmg

雙擊 dmg 試用或安裝:

若要修改發布格式或內容,見 Electron Builder 文檔: https://www.electron.build/ 。

export CSC_IDENTITY_AUTO_DISCOVERY=false 是為了避免如下錯誤

...
  • signing         file=dist_electron/mac/my-app.app identityName=gdb_codesign identityHash=BC899AF362F80B3FDB39F966A1601E2AFAFA100B provisioningProfile=none
(node:10223) UnhandledPromiseRejectionWarning: Error: Command failed: codesign --sign BC899AF362F80B3FDB39F966A1601E2AFAFA100B --force --timestamp --options runtime --entitlements /Users/John/Workspace/Codes/start-electron/my-app/node_modules/app-builder-lib/templates/entitlements.mac.plist /Users/John/Workspace/Codes/start-electron/my-app/dist_electron/mac/my-app.app/Contents/Frameworks/Electron Framework.framework/Versions/A/Helpers/chrome_crashpad_handler
error: The specified item could not be found in the keychain.
...
(node:10223) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:10223) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

參考

  • electron-app
  • start-electron
  • Electron
    • Application Distribution
  • Electron Builder
    • Code Signing
    • Notarize app for macOS

結語

Go coding!

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

【其他文章推薦】

※為什麼 USB CONNECTOR 是電子產業重要的元件?

網頁設計一頭霧水??該從何著手呢? 找到專業技術的網頁設計公司,幫您輕鬆架站!

※想要讓你的商品成為最夯、最多人討論的話題?網頁設計公司讓你強力曝光

※想知道最厲害的台北網頁設計公司推薦台中網頁設計公司推薦專業設計師”嚨底家”!!

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

nginx web服務器概念了解 配置

服務器

服務器

服務器是一種提供高效計算的機器,與普通的PC主機相比,具有可觀的穩定性,高併發性,可擴展性。

互聯網任何一個應用都是以服務器為基礎設施的,沒有服務器我們就無法訪問網絡上的任何內容,只能使用單機的應用。例如網站,我們訪問的任何一個網站都是保存在某個服務器上的,域名被DNS(域名解析服務器)解析到IP地址后,瀏覽器就能通過IP地址訪問對應的服務器資源了。

就好比:服務器是人的家,人名相當於域名(不可重名),身份證號相當於IP地址。通過人名搜索到身份證號,通過身份證號獲取到家的地址。

Web服務器

Web服務器不再是一種硬件設施,而是一種部署在服務器上的軟件應用,它服務於各種網絡請求,將網絡請求進行處理,分發。

所以Web服務器的處理能力很大程度決定了該網站的併發能力。著名的Web服務器有:Apache Nginx

Web應用服務器

Web應用服務器是專門處理邏輯代碼的服務器,同時還具有了處理網絡請求的能力,一般為了提高併發能力,會在Web應用服務器上套一層Web服務器。

例如:Tomcat uwsgi gunicorn,后兩個是Python的Web應用服務器,專門處理Python的邏輯代碼。

聯繫

其中Web服務器和Web應用服務器都部署在服務器上。

Nginx服務器

Nginx (engine x) 是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。其主要特點如下:

  • 輕量級 併發能力強
  • 支持處理靜態資源,以減少應用服務器的壓力
  • 負載均衡

負載均衡

大型的網站應用網站應用往往是由無數個服務器服務的,就像淘寶這種,單靠一個是不可能承受的了如此大的併發量,因此有了負載均衡。負載均衡又分為硬負載均衡軟負載均衡,硬負載均衡是通過硬件的方式實現負載均衡,比如F5,成本都比較昂貴,軟負載均衡則是通過軟件的方式實現,比如Nginx和Apache。

所謂負載均衡就是將多個請求分發到不同的服務器上去,每個服務器都有處理請求和邏輯的應用服務器,以此來提高併發量。

下面使用Nginx來實現負載均衡配置

配置Nginx需要到/etc/nginx/nginx.conf文件內進行編輯

http {
##http的配置

server {
        listen 80;//監聽端口
        server_name 域名;
        location / {
            proxy_pass http://lca;
        }
    }
 upstream lca {//採用輪詢方式,依次將請求轉發到各個服務器
        server  192.168.1.1:5000;
        server  192.168.1.2:5000;
        server  192.168.1.3:5000;
    }
}

上面是採用輪詢的方式實現端口轉發 負載均衡,還有幾種方式實現:

  • 權重方式:指定每個服務的權重比例,weight和訪問比率成正比,通常用於後端服務機器性能不統一,將性能好的分配權重高來發揮服務器最大性能.
 upstream lca {
        server  192.168.1.1:5000 weight=1;
        server  192.168.1.2:5000 weight=2;
        server  192.168.1.3:5000 weight=3;
    }
  • iphash
    每個請求都根據訪問ip的hash結果分配,經過這樣的處理,每個用戶固定訪問一個後端服務。
 upstream lca {//權重與iphash結合
        ip_hash
        server  192.168.1.1:5000 weight=1;
        server  192.168.1.2:5000 weight=2;
        server  192.168.1.3:5000 weight=3;
    }

解決跨域問題

跨域請求問題

為了提高瀏覽器的安全性,引入了跨域限制,也就是同源策略。

所謂源:如果兩個頁面(接口)的協議,端口或者域名都相同,那麼兩個頁面就有相同的源。如果在同一個頁面訪問不同源的資源,則會出現500錯誤。

  • 瀏覽器從一個域名的網頁去請求另一個域名的資源時,域名、端口、協議任一不同,都是跨域
  • 跨域限制主要是為了安全考慮

前端在請求後端資源時,往往會出現錯誤代碼500的情況。

nginx解決跨域問題

解決跨域問題的方式有很多,在這裏介紹通過nginx來解決跨域問題。

上面說到客戶端瀏覽器同時請求服務器的不同資源若不是同源就會引發同源策略問題,那要是服務器請求服務器呢?那麼照這個思路就想到了nginx的反向代理。
我們可以使用nginx的反向代理,將不同源的服務器集中到一個nginx web服務器下,也就是通過nginx來反向代理各個服務器。

server
{
 listen 80;
 server_name cola666.top;
// =/ 表示精確匹配路徑為/的url,真實訪問為http://localhost:8000
 location = / {
 proxy_pass http://localhost:8000;
 }
//當匹配到/a的url自動去localhost:8000
location /a{
 proxy_pass http://localhost:8001;
 }
 location /baidu/ {
 proxy_pass http://www.baidu.com/;
 }
}
  • 當有請求www.cola666.top的資源時,服務器接收到,會自動將請求內容交給localhost:8000web服務器處理。
  • 當有請求www.cola666.top/a下的資源時,服務器接收到,會自動將請求內容交給localhost:8001web服務器處理。
  • 當有請求www.cola666.top/baidu/下的資源時,服務器接收到,會請求百度的服務器資源。

雖然請求同源url,但實際上nginx幫助我們轉發到其他web服務器,所以實際上訪問的是非同源url資源,以實現跨域問題

location匹配規則
  • 當一個url匹配到多個location時,nginx將請求轉發給匹配最長的location來處理
  • 代理
 location /b/ {
 proxy_pass http://www.baidu.com/;
 }

 location /b/ {
 proxy_pass http://www.baidu.com;
 }

二者的區別為後者會將location中的/b/也添加進url中,比如,後者則代理到http://www.baidu.com/b/xxx,前者則是http:///www.baidu.com/xxx

下面為一個比較簡易的完整的nginx配置

worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65; 
    server {
        listen       80;
        location / {
         proxy_pass http://localhost:8080;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

最後附加一個全面的nginx配置,包括靜態資源緩存,負載均衡,Https,等等

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}

http {
		#自定義的日誌格式
		log_format  main  '[($remote_addr) - ($remote_user [$time_local]) $request" '
		'($status) '
		'($http_user_agent)($http_x_forwarded_for)'
		'($upstream_addr) ($upstream_response_time) ($request_time) ]';

		proxy_cache_path /data/nginx/tmp-test levels=1:2 keys_zone=tmp-test:100m inactive=7d max_size=10g;

		access_log  /var/log/nginx/access.log  main;

		gzip  on;
		gzip_min_length 1k;
		gzip_buffers    16 64k;
		gzip_http_version 1.1;
		gzip_comp_level 4;
		gzip_types  text/plain application/javascript application/x-javascript text/javascript text/xml text/css;
		gzip_vary on;
		sendfile            on;
		tcp_nopush          on;
		tcp_nodelay         on;
		keepalive_timeout   65;
		types_hash_max_size 2048;
		include             /etc/nginx/mime.types;
		default_type        application/octet-stream;

		include /etc/nginx/conf.d/*.conf;

		#allow to access by the same origin
		add_header 'Access-Control-Allow-Origin' '*';
		add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
		add_header 'Access-Control-Allow-Credentials' 'true';

	upstream zzm {
		server localhost:8000;
		#server locahost:8001;
	}

	server {
		listen       80 default_server;
		listen       [::]:80 default_server;
		server_name  _;
		root         /usr/share/nginx/html;

		# Load configuration files for the default server block.
		include /etc/nginx/default.d/*.conf;

		location /static{
			alias /var/static;
		}

		location /{
			proxy_cache tmp-test;
			proxy_cache_key $uri;
			add_header Access-Control-Allow-Origin *;
			add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
			add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
			#include uwsgi_params;
			proxy_pass http://zzm;

			# if django be used socket model to start up,using uwsgi of the following
			#uwsgi_pass 127.0.0.1:8000;
			#uwsgi_read_timeout 180;

			proxy_redirect off;
			proxy_set_header        Host    $host;
			proxy_set_header        REMOTE_ADDR     $remote_addr;
			proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

			real_ip_recursive on;
		}

		error_page 404 /404.html;
			location = /40x.html {
		}

		error_page 500 502 503 504 /50x.html;

		location = /50x.html {

		}
	}


	#配置https
	server {
		listen       443 ssl http2 default_server;
		listen       [::]:443 ssl http2 default_server;
		server_name  cola666.top;
		root         /usr/share/nginx/html;

		ssl_certificate  /var/xxx.pem;#ssl兩個證書路徑
		ssl_certificate_key /var/xxx.key;
		ssl_session_cache shared:SSL:1m;
		ssl_session_timeout  10m;
		ssl_ciphers HIGH:!aNULL:!MD5;
		ssl_prefer_server_ciphers on;

		# Load configuration files for the default server block.
		include /etc/nginx/default.d/*.conf;

		#靜態資源路徑
		location /static{
			alias /var/static;
		}

		location / {
			#緩存路徑
			proxy_cache tmp-test;
			proxy_cache_key $uri;

			add_header Access-Control-Allow-Origin *;
			add_header Access-Control-Allow-Headers "Origin, X-Requested-With, Content-Type, Accept";
			add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
			#include uwsgi_params;
			#uwsgi_pass 127.0.0.1:8000;
			proxy_pass http://zzm;
			proxy_redirect off;
			#將客戶端ip地址交給服務器後端
			proxy_set_header        Host    $host;
			proxy_set_header        REMOTE_ADDR     $remote_addr;
			proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
			real_ip_recursive on;
		}

		error_page 404 /404.html;
			location = /40x.html {
		}
		error_page 500 502 503 504 /50x.html;
			location = /50x.html {
		}
	}
}
```![](https://img2020.cnblogs.com/blog/1624549/202006/1624549-20200628205157078-48009301.png)

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

【其他文章推薦】

USB CONNECTOR掌控什麼技術要點? 帶您認識其相關發展及效能

※評比前十大台北網頁設計台北網站設計公司知名案例作品心得分享

※智慧手機時代的來臨,RWD網頁設計已成為網頁設計推薦首選

※評比南投搬家公司費用收費行情懶人包大公開

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