分類
發燒車訊

ASP.NET Core Blazor Webassembly 之 漸進式應用(PWA)

Blazor支持漸進式應用開發也就是PWA。使用PWA模式可以使得web應用有原生應用般的體驗。

什麼是PWA

PWA應用是指那些使用指定技術和標準模式來開發的web應用,這將同時賦予它們web應用和原生應用的特性。
例如,web應用更加易於發現——相比於安裝應用,訪問一個網站顯然更加容易和迅速,並且你可以通過一個鏈接來分享web應用。
在另一方面,原生應用與操作系統可以更加完美的整合,也因此為用戶提供了無縫的用戶體驗。你可以通過安裝應用使得它在離線的狀態下也可以運行,並且相較於使用瀏覽器訪問,用戶也更喜歡通過點擊主頁上的圖標來訪問它們喜愛的應用。
PWA賦予了我們創建同時擁有以上兩種優勢的應用的能力。
這並不是一個新概念——這樣的想法在過去已經在web平台上通過許多方法出現了多次。漸進式增強和響應式設計已經可以讓我們構建對移動端友好的網站。在多年以前的Firefox OS的生態系統中離線運行和安裝web應用已經成為了可能。
PWAs, 不但如此,更是提供了所有的甚至是更多的特性,來讓web更加優秀。

引用自MDN

說人話就是PWA可以讓你的web程序跟一般應用一樣運行,有桌面圖標,能離線,沒有瀏覽器地址欄,一切看起來想個普通的程序/APP。

新建Blazor PWA程序

使用VS新建一個Blazor程序,選擇Webassembly模式,勾選支持PWA。

支持PWA的Blazor程序主要是多了幾個東西:

  1. manifest.json
  2. service-worker.js

manifest.json

manifest.json是個清單文件,當程序被安裝到設備上的時候會讀取裏面的信息,名稱是什麼,圖標是什麼,什麼語言等等。

{
  "name": "BlazorPWA",
  "short_name": "BlazorPWA",
  "start_url": "./",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#03173d",
  "icons": [
    {
      "src": "icon-512.png",
      "type": "image/png",
      "sizes": "512x512"
    }
  ]
}

service-worker.js

service-worker用來跑一些後台任務。它跟瀏覽器主進程是隔離的,也就是說跟原來的JavaScript運行時是分開,當然了它不會阻塞頁面。我們可以用它來完成一些功能,比如對所有的fetch/xhr請求進行過濾,哪些請求走緩存,哪些不走緩存;比如在後台偷偷給你拉一些數據緩存起來。

// Caution! Be sure you understand the caveats before publishing an application with
// offline support. See https://aka.ms/blazor-offline-considerations

self.importScripts('./service-worker-assets.js');
self.addEventListener('install', event => event.waitUntil(onInstall(event)));
self.addEventListener('activate', event => event.waitUntil(onActivate(event)));
self.addEventListener('fetch', event => event.respondWith(onFetch(event)));

const cacheNamePrefix = 'offline-cache-';
const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`;
const offlineAssetsInclude = [ /\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/ ];
const offlineAssetsExclude = [ /^service-worker\.js$/ ];

async function onInstall(event) {
    console.info('Service worker: Install');

    // Fetch and cache all matching items from the assets manifest
    const assetsRequests = self.assetsManifest.assets
        .filter(asset => offlineAssetsInclude.some(pattern => pattern.test(asset.url)))
        .filter(asset => !offlineAssetsExclude.some(pattern => pattern.test(asset.url)))
        .map(asset => new Request(asset.url, { integrity: asset.hash }));
    await caches.open(cacheName).then(cache => cache.addAll(assetsRequests));
}

async function onActivate(event) {
    console.info('Service worker: Activate');

    // Delete unused caches
    const cacheKeys = await caches.keys();
    await Promise.all(cacheKeys
        .filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName)
        .map(key => caches.delete(key)));
}

async function onFetch(event) {
    let cachedResponse = null;
    if (event.request.method === 'GET') {
        // For all navigation requests, try to serve index.html from cache
        // If you need some URLs to be server-rendered, edit the following check to exclude those URLs
        const shouldServeIndexHtml = event.request.mode === 'navigate';

        const request = shouldServeIndexHtml ? 'index.html' : event.request;
        const cache = await caches.open(cacheName);
        cachedResponse = await cache.match(request);
    }

    return cachedResponse || fetch(event.request);
}

項目里有2個service-worker.js文件,一個是開發時候的沒邏輯,還有一個是發布時候的有一些緩存的邏輯。

運行一下

如果是PWA程序,在瀏覽器地址欄有個+號一樣的圖標,點擊可以把程序安裝到本地。

安裝完了會在桌面生成一個圖標,打開會是一個沒有瀏覽器地址欄的界面。

這樣一個PWA程序已經可以運行了。

離線運行

如果只是這樣,僅僅是沒有瀏覽器地址欄,那PWA也太沒什麼吸引力了。個人覺得PWA最大的魅力就是可以離線運行,在沒有網絡的情況下依然可以運行,這樣才像一個原生編寫的程序。

修改service-worker

離線的原理也很簡單,就是請求的數據都緩存起來,一般是緩存Get請求,比如各種頁面圖片等。

// In development, always fetch from the network and do not enable offline support.
// This is because caching would make development more difficult (changes would not
// be reflected on the first load after each change).

self.addEventListener('fetch', event => event.respondWith(onFetch(event)));
self.addEventListener('install', event => event.waitUntil(onInstall(event)));

async function onInstall(event) {
    console.info('Service worker: Install');
}


async function onFetch(event) {
    let cachedResponse = null;
    const cache = await caches.open('blazor_pwa');
    if (event.request.method === 'GET') {
        const request = event.request;
        cachedResponse = await caches.match(request);
        if (cachedResponse) {
            return cachedResponse;
        }
        var resp = await fetch(event.request)
        cache.put(event.request, resp.clone());
        return resp;
    }

    return fetch(event.request);
}

修改一下sevice-worker.js,把GET請求全部緩存起來。這裏為了演示圖方便,其實情況顯然不會這麼簡單粗暴。為了能緩存頁面,顯然必須先在線運行成功一次。

模擬離線

當我們修改完上面的js,然後在線正常一次后,可以看到所有GET請求的資源都被緩存起來了。

我們可以用chrome來模擬離線情況:

選擇offline模式,然後刷新我們的頁面,如果依然可以正常運行則表示可以離線運行。

總結

使用Blazor可以快速的開發PWA應用。利用PWA跟Blazor Webassembly的特性,可以開發出類似桌面的應用程序。或許這是跨平台桌面應用開發除了electron的又一種方案吧。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

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

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

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

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

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

※回頭車貨運收費標準

分類
發燒車訊

BMW 高階電動車 i3 與 i8 正式登陸

BMW Corp  21 日首度針對中國大陸消費者行銷純電動車「i3 」,讓當地剛剛萌芽的高階電動車市場競爭開始升級。   華爾街日報 22 日報導,i3 21 日在大陸正式開賣、定價約 73,000 美元。i3 是 BMW 在大陸第一款純電動車,電動車製造商特斯拉 (Tesla) 才剛在 4 月份將大陸第一台「Model S」電動車交給當地顧客。Model S 在大陸的定價約 121,000 美元。   BMW 雖然並未透露正式的銷售目標,但該公司中國分部執行長 Karsten Engel 曾在 4 月表示,BMW 希望 2014 年能在當地賣出 1,000 台左右的 i3 與 i8。BMW 目前已經在北京、上海、深圳以及瀋陽指定了 7 家經銷商。   特斯拉成長動能逐漸趨緩,得在亞洲(尤其是大陸)加把勁,才能達成 2014 年預設的銷售目標。現在 BMW 又來搶食大餅,特斯拉可得趕緊擬定對策了。  

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

BERT的前世今生

Transformer

Transformer來自論文: All Attention Is You Need

別人的總結資源:

  1. 谷歌官方AI博客: Transformer: A Novel Neural Network Architecture for Language Understanding
  2. Attention機制詳解(二)——Self-Attention與Transformer谷歌軟件工程師
  3. 放棄幻想,全面擁抱Transformer:自然語言處理三大特徵抽取器(CNN/RNN/TF)比較中科院軟件所 · 自然語言處理 /搜索 10年工作經驗的博士(阿里,微博);
  4. Calvo的博客:Dissecting BERT Part 1: The Encoder,儘管說是解析Bert,但是因為Bert的Encoder就是Transformer,所以其實它是在解析Transformer,裏面舉的例子很好;
  5. 再然後可以進階一下,參考哈佛大學NLP研究組寫的“The Annotated Transformer. ”,代碼原理雙管齊下,講得也很清楚。
  6. 《Attention is All You Need》淺讀(簡介+代碼)這個總結的角度也很棒。

A High-Level Look

可以將輸入的語言序列轉換成另外一種序列,比如下圖的神經機器翻譯:

Transformer模型由編碼器-解碼器組合組成,解碼器負責對序列進行編碼,提取時間和空間信息,解碼器負責利用時間和空間特徵信息進行上下文預測,下圖是單個結構:

編碼器和解碼器堆棧的組合結構,在谷歌的實驗結構中採用了6個編碼器和6解碼器相對應,使模型的編碼能力和解碼能力達到一個平衡狀態(堆棧式結構):

編碼器-解碼器的內部結構,類似seq2seq模型:

seq2seq模型:

Encoder: 由6個相同的層組成, 每層包含兩個sub-layers.第一個sub-layer就是multi-head attention layer,然後是一個簡單的全連接層。其中每個sub-layer都加了residual connection(殘差連接)和normalisation(歸一化)。

Decoder: 由6個相同的層組成,這裏的layer包含三個sub-layers, 第一個sub-layer 是masked multi-head attention layer。這裡有個特別點就是masked, 作用就是防止在訓練的時候,使用未來的輸出的單詞。比如訓練時,第一個單詞是不能參考第二個單詞的生成結果的。Masked是在點乘attention操作中加了一個mask的操作,這個操作是保證softmax操作之後不會將非法的values連到attention中,提高泛化性。

Self-Attention at a High Level

假設下面的句子就是我們需要翻譯的輸入句:

”The animal didn’t cross the street because it was too tired”

當模型處理單詞的時候,self attention層可以通過當前單詞去查看其輸入序列中的其他單詞,以此來尋找編碼這個單詞更好的線索。

Self-Attention in Detail

第一步是將輸入的嵌入詞向量通過三個不同的參數矩陣得到三個向量,分別是一個Query向量,一個Key向量和一個Value向量,參數矩陣分別為Wq,Wk,Wv,,如下圖所示:

第二步是通過當前詞的q向量與其他詞的k向量計算當前詞相對於其他詞的得分,分數採用點積進行計算,如下圖所示:

第三步和第四步是講得到的分數除以k值維數的平方根(k值維數為64,可以使訓練過程有更加穩定的梯度,這個歸一化的值是經驗所得),再通過softmax得到每個得分的標準化得分:

第五步是對當前詞所得到的標準化值對所有value向量進行加權求和得到當前詞的attention向量,這樣就使不同單詞的嵌入向量有了attention的參与,從而預測上下文句子的時候體現不同的重要的重要程度。

Matrix Calculation of Self-Attention

  • Attendtion向量計算的矩陣形式,通過全職矩陣進行詞向量的計算大大加快了神經網絡的速度

  • X矩陣中的每一行對應於輸入句子中的一個單詞。(圖中的4個方框論文中為512個)和q / k / v向量(圖中的3個方框論文中為64個)

公式中濃縮前面步驟2到5來計算self attention層的輸出。

The Beast With Many Heads

使用“Multi-headed”的機制來進一步完善self-attention層。“Multi-headed”主要通過兩個方面改善了Attention層的性能,參數組成和子空間映射:

Many Heads的優缺點:

  • 它拓展了模型關注不同位置的能力。Multi head 的每個參數矩陣都會記錄單詞的位置信息,使原來的單個位置信息變得更加複雜。

  • 它為attention層提供了多個“representation subspaces”。由下圖可以看到,在self attention中,我們有多個個Query / Key / Value權重矩陣(Transformer使用8個attention heads),使特徵的提取變得更加複雜,而不是作為一個整體的特徵進行,每個單獨的子空間都會進行上下文的信息融合

在8個不同的子空間進行self-attention的操作,每個單詞生成獨立的8個向量

將8個子空間生成的向量壓縮成一個大向量,每個向量的子空間矩陣能夠學習到更多細節,壓縮過程採用一個更大的參數矩陣進行,對multi-head向量進行組合,生成最終的特徵向量。

整體的框圖來表示一下計算的過程:

Representing The Order of The Sequence Using Positional Encoding

其實上面介紹的網絡裏面並沒有考慮序列的位置信息,在RNN中不同時刻的信息是通過遞歸網絡的時間t來刻畫的,有明顯的時間刻度,所以引入了位置向量來解決時間刻度問題。

為了讓模型捕捉到單詞的順序信息,添加位置編碼向量信息(POSITIONAL ENCODING),位置編碼向量不需要訓練,它有一個規則的產生方式,生成與詞嵌入向量有着相同的向量就可以。

通過構造函數sin、cos來對位置進行嵌入,pos為單詞位置信息,而i用來表達dimension 這裏為了好說明,如果2i= dmodel, PE 的函數就是sin(pos/10000)。這樣的sin, cos的函數是可以通過線性關係互相表達的,通過兩個函數對奇偶維度進行編碼。位置編碼的公式如下圖所示:

個人認為選擇正餘弦函數主要是在-1和1之間是一個對稱關係,兩個相鄰的維度編碼相差比較大,在位置上有更好的區分性,1000是序列的長度,一般盡量將取值範圍控制在四分一個周期裏面,這樣會使每一個序列的每一個維度都取唯一的值。

The Residuals

編碼器和解碼器裏面的每一層都採用殘差的思想進行訓練,目的就是為了解決網絡過深情況下的難訓練問題,殘差連接可以將目標值問題轉化成零值問題,一定程度也可以減少網絡的過擬合問題。

使用殘差連接的編碼器內部結構:

使用殘差連接的編碼器-解碼器內部結構:

The Decoder Side

通過自回歸方式進行預測,解碼器每一個時間步輸入一個單詞,然後輸出一個單詞,將預測的單詞作為下一時刻的輸入進行單詞的預測,直到預測結束。

The Final Linear and Softmax Layer

  • 線性層是一個簡單的全連接神經網絡,模型一次生成一個輸出,我們可以假設模型從該概率分佈中選擇具有最高概率的單詞並丟棄其餘的單詞。

  • 對於最終句子的生成有2個方法:一個是貪婪算法(greedy decoding),一個是波束搜索(beam search)。

Bidirectional Encoder Representation from Transformers

Word Embedding

  • 線性模型,主要是對高維空間進行映射,其實是對one-hot向量的空間轉換。

  • 通過神經網絡對輸入的詞進行映射,獲取詞向量,一般有cbow和skip-gram兩種方法,此方法訓練的詞向量與上下文無關,並沒有參考位置信息,只是對詞的有無進行參考,採用的是負採樣,預測的時候進行的是一個二分類器,模型認為只要在下文中找出正確的詞就認為是完成了任務。

尚未解決一詞多義等問題。比如多義詞Bank,有兩個常用含義,但是Word Embedding在對bank這個單詞進行編碼的時候,是區分不開這兩個含義的,因為它們儘管上下文環境中出現的單詞不同,但是在用語言模型訓練的時候,不論什麼上下文的句子經過word2vec,都是預測相同的單詞bank,而同一個單詞占的是同一行的參數空間,這導致兩種不同的上下文信息都會編碼到相同的word embedding空間里去。所以word embedding無法區分多義詞的不同語義,這就是它的一個比較嚴重的問題。

Embedding from Language Models(ELMO)

  • ElMO採用雙向的LSTM做上下文相關的任務,從前到后和後到前分別做一遍LSTM的encoding操作,從而獲得兩個方向的token聯繫。

  • Word Embedding本質上是個靜態的方式,所謂靜態指的是訓練好之後每個單詞的表達就固定住了,以後使用的時候,不論新句子上下文單詞是什麼,這個單詞的Word Embedding不會跟着上下文場景的變化而改變,所以對於比如Bank這個詞,它事先學好的Word Embedding中混合了幾種語義 ,在應用中來了個新句子,即使從上下文中(比如句子包含money等詞)明顯可以看出它代表的是“銀行”的含義,但是對應的Word Embedding內容也不會變,它還是混合了多種語義。

ELMO的本質思想是:

事先用語言模型學好一個單詞的Word Embedding,此時多義詞無法區分,不過這沒關係。在我實際使用Word Embedding的時候,單詞已經具備了特定的上下文了,這個時候我可以根據上下文單詞的語義去調整單詞的Word Embedding表示,這樣經過調整后的Word Embedding更能表達在這個上下文中的具體含義,自然也就解決了多義詞的問題了。所以ELMO本身是個根據當前上下文對Word Embedding動態調整的思路。

一樣的,在具體進行下游任務的時候,採用神經網絡參數微調的方法根據不同的詞的上下文環境對詞向量進行調整,從而得到同一詞的不同向量表示。

缺點:

  • LSTM的抽取能力遠遠落後於Transformer,主要是并行計算能力

  • 拼接方式融合雙向特徵能力偏弱

Bidirectional Encoder Representation from Transformers

BRET採用兩階段模型,首先是語言模型預訓練;其次是使用Fine-Tuning模式解決下游任務。在預訓練階段採用了類似ELMO的雙向語言模型,雙向指的是對於預測單詞的上文和下文是否參与,如果都參与預測那麼就是雙向,雙向容易導致自己看自己的問題,後面提出mask來解決

經過預訓練的BRET模型,其已經具備了豐富的詞向量特徵信息,然後將此詞向量信息與下游任務進行組合進行NLP下游任務,例如文本生成,文本分類。

如何能夠更好將BRET模型與下游任務進行改造是一個比較複雜的問題,再好的預訓練語言模型都要與下游的任務模型相結合才有好的效果, BRET的優勢在於可以自由根據預訓練模型進行單詞級別的任務和句子級的任務。

BRET模型的創新

就是論文中指出的Masked 語言模型和Next Sentence Prediction。而Masked語言模型上面講了,本質思想其實是CBOW,但是細節方面有改進。

Masked 語言模型:

  • 而Masked語言模型上面講了,本質思想其實是CBOW,但是細節方面有改進,掩蓋的同時,要輸出掩蓋的詞的位置,然後用真實詞來預測。
  • Mask LM主要是為了增加模型的魯棒性和實際性能,但是在訓練時使用mask過多會影響實際任務的表現,所以做了一些處理:隨機選擇語料中15%的單詞,把它摳掉,也就是用[Mask]掩碼代替原始單詞,然後要求模型去正確預測被摳掉的單詞。但是這裡有個問題:訓練過程大量看到[mask]標記,但是真正後面用的時候是不會有這個標記的,這會引導模型認為輸出是針對[mask]這個標記的,但是實際使用又見不到這個標記,這自然會有問題。為了避免這個問題, BRET改造了一下,15%的被選中要執行[mask]替身這項光榮任務的單詞中,只有80%真正被替換成[mask]標記,10%被狸貓換太子隨機替換成另外一個單詞,10%情況這個單詞還待在原地不做改動。這就是Masked雙向語音模型的具體做法。

Next Sentence Prediction:

  • 指的是做語言模型預訓練的時候,分兩種情況選擇兩個句子,一種是選擇語料中真正順序相連的兩個句子;另外一種是第二個句子從語料庫中拋色子,隨機選擇一個拼到第一個句子後面。
  • 我們要求模型除了做上述的Masked語言模型任務外,附帶再做個句子關係預測,判斷第二個句子是不是真的是第一個句子的後續句子。之所以這麼做,是考慮到很多NLP任務是句子關係判斷任務,單詞預測粒度的訓練到不了句子關係這個層級,增加這個任務有助於下游句子關係判斷任務。所以可以看到,它的預訓練是個多任務過程。這也是BRET的一個創新,一般用於句級任務。

Transformer&BERT總結

  • 首先是兩階段模型,第一階段雙向語言模型預訓練,這裏注意要用雙向而不是單向,第二階段採用具體任務Fine-tuning或者做特徵集成;

  • 第二是特徵抽取要用Transformer作為特徵提取器而不是RNN或者CNN;

  • 第三,雙向語言模型可以採取CBOW的方法去做(當然我覺得這個是個細節問題,不算太關鍵,前兩個因素比較關鍵)。 BRET最大的亮點在於效果好及普適性強,幾乎所有NLP任務都可以套用BRET這種兩階段解決思路,而且效果應該會有明顯提升。可以預見的是,未來一段時間在NLP應用領域,Transformer將佔據主導地位,而且這種兩階段預訓練方法也會主導各種應用。

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

新物種!泰國發現巨大「鯊齒龍」 位居食物鏈頂端

摘錄自2019年10月11日自由時報報導

由泰國、日本大學合力進行的研究,在泰國發現一種具有鯊狀齒的大型肉食性恐龍,長逾8公尺,是同一時期已知最大體型的掠食性恐龍。

這份研究由泰國NRRU大學及日本福井縣立大學的研究人員合作進行,9日發表於,研究人員表示,從泰國出土、帶有鯊魚狀牙齒的掠食性恐龍被證實是前所未見的新物種,生存於1.15億年前的下白堊紀,並獲命名為「Siamraptor suwati」。

研究報告指出,在這次考古研究中,科學家發現的化石至少來自4隻不同恐龍的個別部位,其中包括頭骨、齒骨、脊椎、尾部及四肢,推測其行進時以後二肢站立,前足則負責抓扣、撕扯。

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

看衰電動車?傳豐田也出售部分特斯拉持股

繼德國車廠戴姆勒(Daimler AG)於 22 日宣布出售特斯拉 3.9% 持股、解除雙方的資本合作關係之後,傳出日本汽車業龍頭豐田汽車(Toyota)也出售了部分特斯拉持股。   日經新聞 24 日報導,豐田於 2010 年和特斯拉進行資本/業務合作,對特斯拉出資 5,000 萬美元,而截至 2014 年 3 月底為止,豐田持有特斯拉約 2.4% 股權,據悉豐田已出售部分特斯拉持股。報導指出,雖不清楚豐田出售了多少特斯拉持股,但因特斯拉目前股價達豐田出資時(2010 年)的 10 倍,假設豐田出售 1% 股權的話,就可獲得高達約 100 億日圓的獲利。   據報導,豐田雖在電動車的研發上和特斯拉漸行漸遠,但雙方今後仍將就插電式油電混合車(PHV)的補助電源用電池領域進行合作。目前特斯拉仍是豐田「RAV4」電動休旅車的電池與馬達供應商。RAV4 是在 2012 年發售,但至今僅賣出 2,000 台,而特斯拉、豐田的供應合約也即將在今年結束。  

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

12部委發文 新能源汽車將減免過路過橋費

10月30日,中國發改委、環保部、財政部、交通部、質檢總局等12部委聯合印發《加強“車、油、路”統籌,加快推進機動車污染綜合防治方案》的通知。其中大力推廣新能源汽車是《方案》推出的重要措施之一。   《方案》指出,未來兩年國家機關以及新能源汽車推廣應用城市的政府機關及公共機構,購買的新能源汽車占當年配備更新汽車總量的比例不低於30%,以後逐年擴大規模;還將落實並完善鼓勵新能源汽車使用的財稅政策,逐步減少對城市公車燃油補貼和增加對新能源公車運營補貼,實施限購、限行的地區要對新能源汽車給予優惠和便利;研究制定減免過路過橋費、免費停車等政策。   《方案》要求明確建築物配建停車場、城市公共停車場預留充電設施建設條件的要求和比例,所有新建、改建和擴建停車場必須配套建設充電設施,現有停車場及高速公路收費節點和客貨運交通樞紐周邊有序推進充電設施建設。同時制定全國統一的充電設施國家標準和行業標準,完善充電設施用地政策,抓好電動汽車充電設施用電扶持性電價政策實施。

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

成大氫能電動機車 預估續航力可達 160 公里

  台灣機車密度是世界之最,造成嚴重的污染問題,電動、綠能機車的開發一直是學者致力的目標。國立成功大學近日整合關鍵技術,研發出以新型氫能燃料與鋰電池做為混合動力的新電動機車「飛馬一號」,首航測試即輕易完成 80 多公里路程,估計實際續航力可達 160 公里。   由成大航太工程學系賴維祥教授帶領的研究團隊,一年半前在經濟部能源局「能源學界科技專案」補助下,開始與銓寶工業、福桑聯合企業進行產學合作,共同研發代號「飛馬一號」氫能電動機車。   成大指出,「飛馬一號」是從銓寶公司提供的電動車改裝而來,除了原有的鋰電池外,研究團隊另外在車後加裝了 3,000 瓦級的燃料電池,以及 2 支容積達 6.8 公升、能儲存 300 大氣壓的儲氫瓶,原理大致與汽車大廠 TOYOTA 年底即將量產的氫氣電動車相同。   「飛馬一號」的動力系統是以新高壓儲存技術填充氫氣,可達傳統方式的 4 倍密度,利用氫能直接啟動燃料電池,再讓燃料電池把電傳給鋰電池,鋰電池的電力則驅動馬達運轉,此一模式可讓鋰電池在行進間同時充電,延長使用壽命。     (Source:)

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

Zookeeper分佈式過程協同技術 – 概念及基礎

Zookeeper分佈式過程協同技術 – 概念及基礎

Zookeeper是什麼?

  • Zookeeper是一種分佈式過程協同技術,其所提供的客戶端API功能強大,其中包括:
  • 保障強一致性。有序性和持久性。
  • 實現通用的同步原語的能力。
  • 在實際分佈式系統中,併發往往導致不正確的行為。Zookeeper提供了一種簡單的併發處理機制。

關於Zookeeper名字的來源

Zookeeper由雅虎研究院開發,開發團隊原來想使用動物命名項目,在討論時大家覺得分佈式系統就像一個動物園,胡亂且難以管理,而Zookeeper就是將這一切變得可控。遂起名為Zookeeper,意為動物園管理員。

Zookeeper使用場景

  • 命名服務

命名服務是指通過路徑名稱來獲取服務的地址。首先zookeeper創建一個全局路徑,服務方在全局路徑下寫入服務的地址(或者名稱),服務消費方在啟動后watch全局路徑的數據和變化。注意,這裏的節點均為臨時節點,在服務連接中斷或者宕機時,通過臨時節點消失能夠通知訂閱方感知變化。

  • 配置管理

服務分佈部署在不同的機器上,將全局的配置信息存放於zookeeper的節點下,客戶端通過訂閱節點的數據變化獲取到配置信息。當節點中的配置信息發生變化時,客戶端可以通過watch節點發送的消息感知,從而修改服務本地的配置管理信息。

  • 集群管理

當有新機器加入集群時,由新機器的客戶端在指定的目錄下新建臨時節點,服務註冊管理端通過訂閱指定目錄的變化,收到了新增節點的通知后,將新機器加入集群服務的列表。當機器退出集群或者宕機時,臨時節點將會被刪除,同樣可以通知服務註冊管理端,有機器退出了集群。

  • 分佈式鎖

zookeeper的分佈式鎖可以分為2種,保持獨佔或者控制時序。

對於保持獨佔來說,可以把一個節點看做是一把鎖,通過創建節點的方式來搶佔鎖資源。如果創建節點成功,客戶端也就持有了這把鎖,如果創建失敗,則訂閱節點的變化,如果收到節點刪除消息,再次嘗試創建節點來搶佔鎖資源。

對於控制時序來說,通過在指定目錄下創建臨時有序節點,編號最小的節點首先持有鎖資源,每個後續節點都訂閱前一個節點。擁有鎖資源的客戶端在操作完畢后,刪除自己創建的節點。後續節點收到前置節點的刪除通知后,即獲取了鎖資源,可以進行業務操作。

Zookeeper基礎

Zookeeper通過節點(znode)來實現原語的功能,並不直接暴露原語。Znode指Zookeeper操作和維護一個小型的數據節點,類似於文件系統的層級樹狀結構進行管理。

    圖:Zookeeper數據結構示例

·  /作為跟目錄節點,根節點下有/workers和/tasks兩個字節點。

· /workers節點作為父節點,其下的每一個znode子節點用於保存系統中的可用worker,節點中保存着worker子節點的元數據信息。

· /tasks節點作為父節點,其下每個znode子節點用於保存一個代執行的任務,節點中保存着任務的詳細數據。

API概念

ZookeeperAPI提供了以下方法來實現地znode的控制。

create /path data

  創建一個名為/path的znode節點,並包含數據data。

delete /path

  刪除名為/path的znode。

exists /path

  檢查是否存在名為/path的節點。

setData /path data

  設置名為/path的znode節點的數據為data。

getData /path

  返回名為/path節點的數據信息。

getChildren /path

  返回所有/path節點的所有子節點列表。

Znode類型

在新建znode時,需要指定該節點類型,不同的類型決定了znode節點的行為方式,Zookeeper提供了4種不同的znode類型。

持久節點和臨時節點

znode節點可以是持久(persistent)節點,還可以是臨時(ephemeral)節點。持久的znode,如/path,只能通過delete來進行刪除。臨時的znode與之相反,當創建的客戶端崩潰或者關閉了與Zookeeper的連接時,這個節點就會被刪除。

持久znode是一種非常有用的znode,可以通過持久類型znode為應用保存一些數據,即使znode的創建者不再屬於應用系統時,數據也可以保存下來而不丟失。例如,在主-從模式中,需要保存從節點的任務分配情況,即使分配任務的主節點已經崩潰了。

一個臨時znode,在以下兩種情況會被刪除:

  1. 當創建該znode的客戶端的會話因超時或主動關閉而中止時。
  2. 當某個客戶端(不一定是創建者)主動刪除該節點時。

注:因為臨時的znode在其創建者的會話過期時被刪除,所以我們現在不允許臨時節點擁有子節點。

有序節點

一個有序znode節點被分配唯一一個單調遞增的整數。當創建有序節點時,一個序號會被追加到路徑之後。例如,客戶端創建一個有序znode節點,其路徑為/tasks/task-,那麼該znode節點為/tasks/task-1。有序znode通過提供了創建具有唯一名稱的znode的簡單方式。同時也通過這種方式可以直觀地查看znode的創建順序。

Znode一共有四種:持久節點、臨時節點、持久有序節點,臨時有序節點。

監視與通知

Zookeeper提供基於通知的機制提供對節點的監視能力。客戶端向Zookeeper註冊需要接收通知的znode,通過對znode的設置監視點(watch)來接收通知。監視點是一個單次觸發的操作,每次設置只會觸發一次。為了接收多個通知,客戶端必須在每次通知後設置新的監視點。在設置新監視點前客戶端會先讀取znode中的數據,所以不同擔心會錯過狀態的變化。

Zookeeper可以定義不同類型的通知,如監控znode的數據變化、監控znode子節點的變化、監控znode的創建或刪除。

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

我家也有太陽能:屋頂型太陽能對鳥兒的致命吸引力

文:宋瑞文(加州能源特約撰述)

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

【其他文章推薦】

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

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

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

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

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

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

分類
發燒車訊

智慧電動機車與電池交換站體系並進,Gogoro 打造「平民特斯拉」

  台灣新創企業 Gogoro 挾著創辦人陸學森、主要投資人尹衍樑,以及 1.5 億美元募資總額,吸引了產業界的注意。Gogoro 揭櫫智慧城市與智慧能源的大方向,但主要專利卻集中在電動機車相關領域,電動機車與智慧城市的連結乍看似乎有些牽強,使得產業界相當好奇 Gogoro 為何研發機車卻言必稱智慧城市?   至 CES 2015,謎底揭曉,Gogoro 一方面展出設計與功能上均讓人驚豔的智慧電動機車,但更重要的戰略性意義,則在於搭配機車的電池交換站體系之上,電池交換站體系不僅作為電動機車的後勤系統,更可望藉由機車位入口,打進未來智慧城市基礎建設的重要領域。   Gogoro 先前對其產品三緘其口,頗有蘋果飢餓行銷策略之風範,也成功的引起媒體關注與好奇,CES 2015 上正式發表產品後,國內外多家科技媒體均第一時間報導,一時成為產業新聞熱門焦點,Gogoro 此次產品發表,較引人注目的主體是智慧電動機車,但實際上,Gogoro 可說是同時發表兩種產品,電動機車只是其一,電動機車的電池交換站則可說是另一個關鍵產品,兩者的戰略性一樣重要。  
 

   
革新電動車充電   Gogoro 電池交換站「GoStation」,系統設計風格相當簡潔,大小約如同一般的 ATM 機台,全白機身微微傾斜,上有 8 個容納電池的槽孔,頂端為智慧面板,旁邊可以單體 8 個槽孔為單位擴充,以利在熱門地段,能提供更多交換用電池,電池上有綠色提把設計,點綴於白色整體外觀之中,可說兼具時尚與實用的風格,這樣的設計可說較為偏向消費性電子產品風格,而非傳統的汽機車設計風格。  
 

    Gogoro 電動機車使用的電池與特斯拉(Tesla)Model S 電動車相同,為 Panasonic 18650 鋰電池,這呼應了先前 Gogoro 與 Panasonic 合作的消息,電池外觀大小有如鞋盒大小,重約 9 公斤,為一般人雙手可提起的重量,內建 NFC 等 25 種感測器,Gogoro 主打電池交換概念,當機車騎到電池沒電時,並不用慢慢等著充電,而是騎到 GoStation,將機車電池取出,放入空槽孔中,6 秒鐘後,會由其他槽孔跳出充滿電力的電池,拿取後直接上路。  
 

    (Source:)   過去電動機車為人詬病之處就是充電慢、行駛距離不足,但若能在城市中遍布 GoStation,則可解決此二個問題,因為隨時交換電池只需 6 秒鐘,只要在 GoStation 普及的範圍內,可說實際上不用擔心行駛距離問題,而由於機車在亞洲大多為市區交通,如通勤、快遞送貨等使用,只要能在市區內普遍設立 GoStation,就可大為提升電動機車的實用性,解除過去電動機車銷售上最大的障礙。而 GoStation 設置成本也並不高,每座約為 1 萬美元。    
邁入智慧城市   另一方面,GoStation 與交通有關、存有大量電池,並與電力網路相連結的特性,一旦普遍設立,將成為進軍智慧城市的踏腳石。   智慧城市的重要領域包括交通、能源、水資源、保健、廢棄物處理等領域,GoStation 的交換資料,能夠讓城市政府交通相關單位掌握機車的使用熱點,進而做出更好的市政規劃,而 GoStation 內部存放大量充電中的電池,在歐美,類似的設施,如特斯拉的電池交換站,都設想到可以同時作為智慧電網的一環,如當市區內某區域能源需求突增,可由附近的站點暫停充電,甚至從電池饋電,來因應變化,而不至於跳電,而 GoStation 也可能在夜間電力離峰時間充電,降低白天尖峰的用電壓力。  
 

 

  除此之外,《富比世》(Forbes)報導,陸學森表示,當大都會人口成長,尖峰用電需求不斷上升,想像 Gogoro 智慧電動機車與 GoStation 能收集車主何時、在何處交通的資料,將有助於城市的智慧電網了解與預測用電需求,因而能提早因應。如此一來,城市電力網路將不必為了尖峰流量而大幅擴建或更新輸配系統,可節省大量預算。   陸學森接受科技媒體《SlashGear》採訪時也指出,在都會化的趨勢下,世界最終將有 6 成人口居住在大城市之中,而目前的都市居民有 12% 的收入,都花費在能源相關的開銷上,其中有一半是汽油,若能節約這一大部分的開支,不僅對人類有幫助,也是廣大的市場,更有助於降低全球碳排放。   由此可知,GoStation 不僅只是推動電動機車的推手,其最終願景為協助城市以及電力網路智慧化。此外,GoStation 的智慧面板,若與智慧城市的資訊系統結合,不僅可提供氣候等資訊,甚至可能作為智慧服務功能。    
以亞洲都市為起點   智慧城市目前為全球主流趨勢,在台灣也成為多個市政府的重要施政目標,如台北市長柯文哲即期望建立智慧政府、智慧城市與智慧市民,也因此造成資訊局長一度難產,最初柯文哲市長期待新任資訊局長能夠成為台北智慧城市的資訊長,然而,智慧城市牽涉專業領域過廣,並非單一一人所能勝任,所需要的人才規格,也非市政府的薪資標準所能負擔,於是有了「香蕉的待遇只能僱到猴子」之嘆,最後折衷辦法為市府成立智慧城市委員會,由各領域專業的委員協助制定策略,資訊局負責執行。   由台北市資訊局長一度難產,可看出智慧城市千頭萬緒,對每個城市來說都是相當大的挑戰,若城市內以機車需求,由民間力量普設 GoStation,將可成為智慧城市推動的一大助力。  
 
 
 
 
 
  (Source:)
 
 
 
 
    Gogoro 於 CES 2015 中透露,2015 年將於一個亞洲城市開始進行 GoStation 計畫,但尚未明言將為哪個城市,可說繼承一貫的飢餓行銷策略,推測 Gogoro 可能於下一個消費性電子展會或是汽機車重要展會發表其首要主打城市。而《富比世》則報導,Gogoro 將選擇超過 1,000 萬人口的大都會,作為第一個起步的城市。    
消費性電子產品設計思維   然而,如此廣大的願景,仍然要 Gogoro 的智慧電動機車本身成功,才有可能成真。在機車本身,Gogoro 的表現可說也讓人相當驚艷,其機車的設計可說跳脫了傳統電動機車的既定印象,與 GoStation 的設計風格一樣,偏向消費性電子產品風格,而非傳統的汽機車設計風格,多家歐美科技媒體認為,這樣的特立獨行風格,來自於陸學森為設計消費性電子產品出身,過去從未設計過機車。但如此一來,反而帶來了新鮮感。科技媒體《The Verge》譽為「你所買得起最酷的機車」。   機車車身與零組件也與過去電動機車不同,並不利用現有機車零組件,全數零組件含傳動系統、懸吊系統、前後輪碟煞、LED 車燈、底盤與所有的電子系統都是由 Gogoro 原創設計打造。  

  機車的車身可說以輕便、小巧、簡潔的都市風格為主,在性能上,可由停車狀態在 4.2 秒鐘內加速到 30 英里(48.3 公里),最高速度約達 60 英里(96.6 公里),內建雙電池槽,兩個電池都充滿電的狀態下,行駛距離達 100 公里,以市區行駛來說這樣的性能與續航力已經相當足夠,CES 2015 上 Gogoro 更展示機車壓車快速轉彎與燒胎,宣告其智慧電動機車絕非過去一般人印象中「無力」的舊式電動機車。  

    (Source:)   目前全球機車市場最主流的機車為 125cc 車種,約佔 8 成市場,Gogoro 也以 125cc 為「假想敵」,其傳動系統動力在鋁輕量化車身上的表現,比 125cc 對手快上 16%。而 Gogoro 機車也加強防水性,而比內燃機機車防水性更佳,當亞熱帶地區下大雨積水,傳統機車擔心排氣管浸水拋錨,Gogoro 機車卻沒有這樣的顧慮。   Gogoro 強調其產品為智慧電動機車(Smartscooter),非僅是一般電動機車,身為智慧產品,除了頭燈會在天色暗時自動開啟這種智慧功能以外,與智慧型手機的連結更是重點。  
 

     
電動車與智慧手機的結合   陸學森曾於宏達電任職的經歷,為 Gogoro 帶來了更完整的與智慧型手機整合的概念,除了會在智慧型手機 app上顯示基本的行駛路線、電池電力等資料,可以用 app 開行李箱,以及可透過手機 app 個人化設定諸如機車面板顏色、鎖車燈號顏色等等以外,車身上有 30 種感測器,含電池上的 25 種感測器,隨時檢查車身與電池狀況,每 10 分鐘回報,若是車子有了任何問題,就會即時在手機上通知車主,若是車主沒有看手機,則會在下次交換電池時,在 GoStation 的智慧螢幕上通知車主,確保車主的安全。  
 

  (Source:)   Gogoro 智慧電動機車還有一個對手機重度使用者最貼心的功能:在行李箱裡頭就有 USB 埠可以幫手機充電。   車身上的感測器更結合了演算法,當車主買回 Gogoro 智慧電動機車,開始騎乘後,感測器收集的資料,會讓智慧電動機車不斷學習車主的行駛模式,一邊調整能源管理模式,最後,機車的能源管理,將能完全配合車主的日常需求,達到最省電的效果。    
用手機模式走一條不一樣的路   甚至連電動機車的商業模式也可能模仿手機。手機往往與電信業者結合,以便宜價格推出,但是收取服務費用,《富比世》報導,Gogoro 表示,電動車最大的成本來源就是電池,電池本身佔 4 成成本,若把電池與充電迴路除去,機車車身成本就會大為降低,如此一來,Gogoro 將可以追求手機商業模式,也就是說,機車本身以相當低廉的價格販售,主要從電池充電服務收費來得到營收。   如此一來,更能避免電動機車過去不能普及的另一個主要障礙:價格過高。Gogoro 雖然尚未宣布其價格,但預期若在手機商業模式下的補貼後,將比想像中低,由於其設計風格,與可能的低價,相對於特斯拉的高價,科技媒體《SlashGear》將 Gogoro 譽為「平民特斯拉」(Tesla for the everyone)。   大部分國內媒體,將 Gogoro 視為一般電動機車報導,但從許多外媒報導可看出,歐美媒體以及產業界已經看出 Gogoro 的野心與潛力,全球目前估計約有 2 億輛機車,而機車產業已經幾乎 20 年沒有重大創新,的確是進行破壞式創新的適當領域,而 Gogoro 結合智慧城市概念的遠大願景,將從哪個城市開始落實,發展是否順利,不僅是電動機車界動見觀瞻,也將成為智慧能源與智慧城市領域的注意焦點。   (首圖來源:)      本文全文授權轉載自《科技新報》─〈〉

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

【其他文章推薦】

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

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

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

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

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

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