文:宋瑞文(媽媽監督核電廠聯盟特約撰述)
本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
據報導,由於沃爾沃2015年全球銷量首次突破50萬輛大關,創下同期銷量紀錄,該公司計畫到2025年實現100萬輛電動車的銷量目標。
2015年,沃爾沃全球銷量同比增長了8%至503,127輛。該公司稱其計畫為每款車型都增添至少兩個混合動力版,在2019年推出一款純電動車,到2025年電動車銷量達到100萬輛。
除沃爾沃汽車集團外,雷諾-日產公司2015年電動車全球銷量達302,000輛,其計畫到2017年3月31日實現150萬輛電動車銷量目標,去年銷量則遠遠落後於此目標。
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
在上一篇文章中我們分享了,如何開發桌面應用。在本章文章中,來解決一下為何在 Mac 中無法發出網絡情況的原因。
事情起因是這樣的:我總覺得寫一個 Demo 不足以體現我們開發同學的能力。直到最近,我發現了一個可以改善的小點,可幫助我們的測試同學提高測試效率。
大體情況就是在某天晚上,客戶端的一個小問題,需要進行驗證。但是呢,測試同學要做回歸測試,把所有的數據都重新創建了一遍。但是此過程用了很久,理論來說,應該十來分鐘搞定的事情。我就靜靜的在她身旁看着,內心捉急萬分,畢竟我想早點回家(睡覺,打遊戲,看電視)。最後晚上 11 點多打車回家,一路上我都在想,這個問題應該很快就能驗證好吧,為何要折騰這麼就呢?也許是流程真這麼長吧,那我們無法改變流程,那就做出能提升效率的工具吧。
次日,我把我的想法告訴了她,但是她說我們有自己的網頁工具,可以解決啊,只是現在沒時間創建腳本。隨後我擱置這個想法,但是這種提升效率的想法一直縈繞在我的心頭。
再然後,某天突然意識到,同樣是工具,大家都會使用順手好用的,幹嘛使用哪種傳統老土的工具呢?基於這一點,我開啟了新的探索。
我不僅要做客戶端的,還要做網頁的,更要做桌面應用(測試同學最關注)。我要體驗更好,不僅方便我自己測試,還要給所有的測試同學提供便利,減少加班是我的最終目的,哈哈哈。
想法有了,那就開始實施吧。之前遇到一個問題,一直沒解決,但是此刻必須解決了。那就是之前 Flutter 構建的 Mac 應用后,無法發出網絡請求。
添加 Dio 以後,會遇到這種情況:

提示,當前系統不支持該操作。
為何會有如此問題,在 Dio 上支持 Other,也就是支持 Mac ,Windows, Linux, 為何我們直接運行有錯誤呢?

實際是因為 Mac 應用有沙箱限制,需要在對應文件中開啟即可。
<key>com.apple.security.network.client</key>
<true/>

添加以後,效果如下:

具體參考: https://github.com/google/flutter-desktop-embedding/issues/546
import 'dart:io';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
// Sets a platform override for desktop to avoid exceptions. See
// https://flutter.dev/desktop#target-platform-override for more info.
void _enablePlatformOverrideForDesktop() {
if (!kIsWeb && (Platform.isMacOS || Platform.isWindows || Platform.isLinux)) {
debugDefaultTargetPlatformOverride = TargetPlatform.fuchsia;
}
}
void main() {
_enablePlatformOverrideForDesktop();
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
String requestData = "";
void _incrementCounter() {
setState(() {
_counter++;
getHttp();
});
}
void getHttp() async {
try {
Response response = await Dio().get("http://www.gdky005.com");
requestData = response.toString();
print(requestData);
} catch (e) {
print(e);
requestData = e.toString();
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
Container(
height: 400,
child: ListView(
children: <Widget>[
Text(
'$requestData',
)
],
),
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
),
);
}
}
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
球系統科學家Surendra Adhikari表示,研究團隊設計出一套地球自旋物理學電腦模型,加入20世紀大陸冰川(冰蓋)與海水平衡變化的所有數據,終於找出影響地軸飄移至關重要的第2個原因:格陵蘭島冰蓋大量融化。
目前地球上僅存的大陸冰川只剩下南極洲與格陵蘭島,南極冰蓋覆蓋範圍約1,400萬平方公里,隨著20世紀氣溫上升加劇,格陵蘭冰蓋至今已有約7,500億噸的冰融化進入海洋,這導致地球質量分佈發生變化,進而使地軸飄移。一旦南極冰蓋融化,全球海平面將上升61.1公尺;格陵蘭冰蓋則佔據格陵蘭島82%陸地面積,如果格陵蘭冰蓋融化,將導致海平面上升7.2公尺。這項研究明確顯示了人類活動正在改變地球的基本性質及運作方式。
本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
![]() |
特斯拉(Tesla)計畫在2018年大規模量產平價電動車Model 3,時程較原先計畫提早兩年,雖然展現特斯拉執行長穆斯克(Elon Musk)強大企圖心,但也飽受專家質疑,甚至特斯拉旗下供應商對於是否能達成目標也沒把握。 Model 3已開放預定,特斯拉目前累計收到37.3萬輛的訂單、預計2017年底開始交車。但外界所不知道的是,供應商是在三個月之前才被告知增產計畫提前,相關準備作業是否先完成令人質疑。據路透社引述知情人事消息報導指出,特斯拉最新計畫把2017年Model 3產出規模提高兩倍至10萬輛,2018年更將達成40萬輛的產出水平。 穆斯克4月28日曾在財報法說會上對分析師誇下海口,2018年整體產出規模(含Model S、Model X、Model 3)將來到50萬輛,是去年的十倍,也較預設時程快了兩年。不過Model 3設計目前還要等到6月才定案,距初次量產僅剩13個月。 電動車零組件何其多,且缺一不可,特斯拉如何在短時間內搞定供應商、備齊所有零組件,雖然並非完全不可能,但挑戰難度絕對相當高,這也考驗穆斯克的管理協調能力。值得一提的是,北美目前僅有少數汽車產線有年產50萬輛的能力,且背後都有幾十年經驗的車廠在運籌帷幄。 (本文內容由授權使用;首圖來源: CC BY 2.0)
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
JSON Web Token 是 出的一份標準,使用 JSON 來傳遞數據,用於判定用戶是否登錄狀態。
jwt 之前,使用 session 來做用戶認證。
以下代碼均使用 javascript 編寫。
傳統判斷是否登錄的方式是使用 session + token。
token 是指在客戶端使用 token 作為用戶狀態憑證,瀏覽器一般存儲在 localStorage 或者 cookie 中。
session 是指在服務器端使用 redis 或者 sql 類數據庫,存儲 user_id 以及 token 的鍵值對關係,基本工作原理如下。
在服務器端使用 sessions 存儲鍵值對
const sessions = {
"ABCED1": 10086,
"CDEFA0": 10010
}
每次客戶端請求帶權限數據時攜帶 token,在服務器端根據 token 與 sessions 獲取 user_id, 完成認證過程
function getUserIdByToken (token) {
return sessions[token]
}
如果存儲在 cookie 中就是經常聽到的 session + cookie 的登錄方案。其實存儲在 cookie,localStorage 甚至 IndexedDB 或者 WebSQL 各有利弊,核心思想一致。
關於 cookie 以及 token 優缺點,在 中有討論。
如果不使用 cookie,可以採取 localStorage + Authorization 的方式進行認證,更加無狀態化
// http 的頭,每次請求權限接口時,需要攜帶 Authorization Header
const headers = {
Authorization: `Bearer ${localStorage.get('token')}`
}
推薦一個前端的存儲庫 ,使用
IndexedDB,WebSQL以及IndexedDB做鍵值對存儲。
session 需要在數據庫中保持用戶及token對應信息,所以叫 有狀態。
試想一下,如何在數據庫中不保持用戶狀態也可以登錄。
第一種方法: 前端直接傳 user_id 給服務端
缺點也特別特別明顯,容易被用戶篡改成任意 user_id,權限設置形同虛設。不過思路正確,接着往下走。
改進: 對 user_id 進行對稱加密
服務端對 user_id 進行對稱加密后,作為 token 返回客戶端,作為用戶狀態憑證。比上邊略微強點,但由於對稱加密,選擇合適的算法以及密鑰比較重要
改進: 對 user_id 不需要加密,只需要進行簽名,保證不被篡改
這便是 jwt 的思想:user_id,加密算法和簽名組成 token 一起存儲到客戶端,每當客戶端請求接口時攜帶 token,服務器根據 token 解析出加密算法與 user_id 來判斷簽名是否一致。
jwt 根據 Header,Payload 以及 Signature 三個部分由 . 拼接而成。
Header 由非對稱加密算法和類型組成,如下
const header = {
// 加密算法
alg: 'HS256',
type: 'jwt'
}
Payload 中由 以及需要通信的數據組成。這些數據字段也叫 Claim。
Registered Claim 中比較重要的是 "exp" Claim 表示過期時間,在用戶登錄時會設置過期時間。
const payload = {
// 表示 jwt 創建時間
iat: 1532135735,
// 表示 jwt 過期時間
exp: 1532136735,
// 用戶 id,用以通信
user_id: 10086
}
Signature 由 Header,Payload 以及 secretOrPrivateKey 計算而成。secretOrPrivateKey 作為敏感數據存儲在服務器端,可以考慮使用 vault secret 或者 k8s secret
對於 secretOrPrivateKey,如果加密算法採用 HMAC,則為字符串,如果採用 RSA 或者 ECDSA,則為 PrivateKey。
// 由 HMACSHA256 算法進行簽名,secret 不能外泄
const sign = HMACSHA256(base64.encode(header) + '.' + base64.encode(payload), secret)
// jwt 由三部分拼接而成
const jwt = base64.encode(header) + '.' + base64.encode(payload) + '.' + sign
從生成 jwt 規則可知客戶端可以解析出 payload,因此不要在 payload 中攜帶敏感數據,比如用戶密碼
在生成規則中可知,jwt 前兩部分是對 header 以及 payload 的 base64 編碼。
當服務器收到客戶端的 token 后,解析前兩部分得到 header 以及 payload,並使用 header 中的算法與 secretOrPrivateKey 進行簽名,判斷與 jwt 中攜帶的簽名是否一致。
帶個問題,如何判斷 token 過期?
由上可知,jwt 並不對數據進行加密,而是對數據進行簽名,保證不被篡改。除了在登錄中可以用到,在進行郵箱校驗,圖形驗證碼和短信驗證碼時也可以用到。
在登錄時,輸入密碼錯誤次數過多會出現圖形驗證碼。
圖形驗證碼的原理是給客戶端一個圖形,並且在服務器端保存與這個圖片配對的字符串,以前也大都通過 session 來實現。
可以把驗證碼配對的字符串作為 secret,進行無狀態校驗。
const jwt = require('jsonwebtoken')
// 假設驗證碼為字符驗證碼,字符為 ACDE,10分鐘失效
const token = jwt.sign({}, secrect + 'ACDE', { expiresIn: 60 * 10 })
const codeImage = getImageFromString('ACDE')
// 給前端的響應
const res = {
// 驗證碼圖片的 token,從中可以校驗前端發送的驗證碼
token,
// 驗證碼圖片
codeImage,
}
短信驗證碼與圖形驗證碼同理
現在網站在註冊成功後會進行郵箱校驗,具體做法是給郵箱發一個鏈接,用戶點開鏈接校驗成功。
// 把郵箱以及用戶id綁定在一起
const code = jwt.sign({ email, userId }, secret, { expiresIn: 60 * 30 })
// 在此鏈接校驗驗證碼
const link = `https://example.com/code=${code}`
關於無狀態和有狀態,在其它技術方向也有對比,比如 React 的 stateLess component 以及 stateful component,函數式編程中的副作用可以理解為狀態,http 也是一個無狀態協議,需要靠 header 以及 cookie 攜帶狀態。
在用戶認證這裏,有無狀態是指是否依賴外部數據存儲,如 mysql,redis 等。
思考以下幾個關於登錄的問題如何使用 session 以及 jwt 實現,來更加清楚 jwt 的使用場景
因為 jwt 無狀態,不保存用戶設備信息,沒法單純使用它完成以上問題,可以再利用數據庫保存一些狀態完成。
session: 只需要把 user_id 對應的 token 清掉即可jwt: 使用 redis,維護一張黑名單,用戶註銷時把該 token 加入黑名單,過期時間與 jwt 的過期時間保持一致。session: 使用 sql 類數據庫,對用戶數據庫表添加 token 字段並加索引,每次登陸重置 token 字段,每次請求需要權限接口時,根據 token 查找 user_idjwt: 假使使用 sql 類數據庫,對用戶數據庫表添加 token 字段(不需要添加索引),每次登陸重置 token 字段,每次請求需要權限接口時,根據 jwt 獲取 user_id,根據 user_id 查用戶表獲取 token 判斷 token 是否一致。另外也可以使用計數器的方法,如下一個問題。對於這個需求,session 稍微簡單些,畢竟 jwt 也需要依賴數據庫。
session: 使用 sql 類數據庫,創建 token 數據庫表,有 id, token, user_id 三個字段,user 與 token 表為 1:m 關係。每次登錄添加一行記錄。根據 token 獲取 user_id,再根據 user_id 獲取該用戶有多少設備登錄,超過 5 個,則刪除最小 id 一行。jwt: 使用計數器,使用 sql 類數據庫,在用戶表中添加字段 count,默認值為 0,每次登錄 count 字段自增1,每次登錄創建的 jwt 的 Payload 中攜帶數據 current_count 為用戶的 count 值。每次請求權限接口時,根據 jwt 獲取 count 以及 current_count,根據 user_id 查用戶表獲取 count,判斷與 current_count 差值是否小於 5對於這個需求,jwt 略簡單些,而使用 session 還需要多維護一張 token 表。
session: 在上一個問題的基礎上,刪掉該設備以外其它所有的token記錄。jwt: 在上一個問題的基礎上,對 count + 5,並對該設備重新賦值為新的 count。session: 在 token 表中新加列 devicejwt: 需要服務器端保持設備列表信息,做法與 session 一樣,使用 jwt 意義不大從以上問題得知,如果不需要控制登錄設備數量以及設備信息,無狀態的 jwt 是一個不錯的選擇。一旦涉及到了設備信息,就需要對 jwt 添加額外的狀態支持,增加了認證的複雜度,此時選用 session 是一個不錯的選擇。
jwt 不是萬能的,是否採用 jwt,需要根據業務需求來確定。
本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
財政部日前發佈聲明,表示對新能源汽車推廣騙補核查的第一部分工作,即現場核查,已經完成,目前仍處於對核查結果的會審階段,並稱對於核查和處理情況將按資訊公開有關規定及時公開。
業內人士原來普遍預期財政部能在4月或最遲5月公佈此項調查結果,但現在看來調查比預計的更耗時。
1月下旬,財政部、工信部等多個部委聯合發佈新能源汽車推廣應用核查工作的通知,在全國範圍對獲得中央財政補貼的新能源汽車及其生產企業和用戶展開核查。
在財政補貼的刺激下,2015年新能源汽車生產 34.05萬輛,銷售33.11萬輛,同比分別增長3.3倍和3.4倍。今年第一季度,增長有所放緩,但4月份又開始加速。
據中汽協統計,今年4月國內新能源汽車生產31266輛,銷售 31772輛,同比分別增長178.3%和190.6%。前4個月累計產銷量均超9萬輛,相比去年同期增長近130%。
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
![]() |
特斯拉(Tesla)電動車需求火熱,日本電池製造商Panasonic為滿足大客戶需求,其位在美國那華達州的鋰電池工廠量產進度也配合提早約數個月。 按原先時程表,Panasonic美國工廠要等到特斯拉2016會計年度,也就是2017年初期才會投產。但據日經新聞周二報導,Panasonic工廠今年七月就將啟用,並在十一月開始生產電池芯。特斯拉首輛大眾化電動車Model 3自從發表後,訂單應接不暇,想必Panasonic加快量產時程應該與此有關。 除此之外,Panasonic擴廠腳步也將同時加速,據某Panasonic高層表示,原先16億美元、分八期的投資計畫可能會做修改,目的是避免特斯拉因電池供應不及而被迫中斷生產。 特斯拉目前正在中國尋找合適設廠地點,美國媒體報導指出,上海先馳得點,其國營金橋集團已與特斯拉簽訂不具約束力協定,使上海雀屏中選的機率大增。如果未來成案,特斯拉與金橋將各出資45億美元,其中金橋主要負責取得工廠用地。 (本文內容由授權使用;首圖來源: CC BY 2.0)
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?
大陸國家動力電池創新中心昨日(6月30日)舉行成立大會,目的在於將研究資源進行整合,力求在動力電池核心技術取得突破;該創新中心將以國聯公司作為重要合作機構,聚合一汽、東風、北汽等諸多大型汽車集團。
陸媒報導指出,大陸動力電池主要為磷酸鐵鋰電池或三元電池,而三元電池比磷酸鐵鋰電池的能量密度更高、標準電壓更強、電芯占空間更少。同時作為電動車的心臟,動力電池的續航能力也是非常重要的一點,三元電池的續航里程和儲能強於傳統鋰電池,鋰電池每月衰減3%的電量,而三元電池反復使用後每月衰減僅1%-2%,近期已有多家大陸主流汽車廠商表示已生產和使用三元電池。
另從大陸工信部新能源汽車產銷數據來看,大陸電動汽車產業已進入快速增長階段,而作為電動車必備的動力電池需求量也已水漲船高;目前,三元材料較多應用在乘用車領域,作為三元電池的主要需求端,多款車型在政策支持力道不斷提升的同時,對三元材料的需求也在快速增長。
在此之前,大陸科技部發佈的《國家重點研發計畫新能源汽車重點專項實施方案》明確表示,轎車動力電池到2020年單體電池指標達到350Wh,系統達到250Wh以上。中泰證券研究報告預計,到2020年,車用三元材料將達20萬噸,年均增速將達到54%。大陸工信部預測,2018年三元電池的出貨量可望首度超過鋰電池,成為續航電池的主流材料。業內人士預計,三元電池產業可望迎接加速增長,進一步佔領動力電池的市場份額。
(本文由授權提供)
本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】
※想知道網站建置、網站改版該如何進行嗎?將由專業工程師為您規劃客製化網頁設計及後台網頁設計
※不管是台北網頁設計公司、台中網頁設計公司,全省皆有專員為您服務
※Google地圖已可更新顯示潭子電動車充電站設置地點!!
※小三通物流營運型態?
※快速運回,大陸空運推薦?