Categories
程式開發

如何利用BLoC在Flutter和AngularDart中共享代碼?

2018年DartConf,谷歌推出了“業務邏輯組件”,即BLoC的開發模式。它的理念是在盡可能將業務邏輯隔離在純Dart代碼中,這樣就能打造在移動和Web平台之間共享的代碼庫。通過本文作者的介紹,你會發現,如果能正確實現,BLoC會大大縮短創建移動/Web應用所需的時間。

去年年中,我想把一個Android應用移植到iOS和Web上。我打算在移動平台上用Flutter,Web端該選擇什麼沒有想好。

雖說我對Flutter是一見鍾情,但也還是對它有些看法:Flutter的InheritedWidget或Redux(及其所有變體)在小部件樹上傳播狀態時的確做的不錯;但是對於Flutter這樣的新框架來說,你會期望視圖層的響應性能更多一些——比如,希望小部件本身是無狀態的,並根據從外部反饋的狀態來更改,但實際上並非如此。另外,Flutter彼時只支持Android和iOS,但我還想發佈到Web上。我的應用中已經有大量的業務邏輯了,我想盡可能地複用它,可是更改一次業務邏輯卻至少要更改兩個位置的代碼實在讓人無法接受。

我開始研究該如何解決這個問題,然後就遇到了BLoC。作為快速了解,建議你在有空的時候觀看“Flutter/AngularDart——代碼共享,一起用更好(DartConf 2018)”這個視頻。

BLoC模式

如何利用BLoC在Flutter和AngularDart中共享代碼? 1

BLoC是谷歌發明的一個花哨的名詞,意為“業務(b

Categories
程式開發

日活2000萬的Microsoft Teams,現在出了Linux版

日活2000萬的Microsoft Teams,現在出了Linux版 4

12月10日,微軟發布Microsoft Teams for Linux公共預覽版

據悉,Microsoft Teams是這家公司移植到Linux平台上的第一個Office應用。用戶可以從…

Categories
程式開發

如何在 Kubernetes 上運行數據庫服務?

導讀: Kubernetes 已經成為了集群調度領域最炙手可熱的開源項目之一。用Kubernetes 來部署和管理Web 應用、移動後端和API 服務等相對容易,因為這些應用通常都是無狀態應用,通過基本的Kubernetes API 就能運行,可以在沒有其他知識的情況下進行擴展並從故障中恢復。但要是用 Kubernetes 來運行有狀態應用呢?比如數據庫、緩存和監控系統。這就為我們帶來了不小的挑戰。因為這些系統需要應用領域的知識才能正確擴展、升級和重新配置,從而防止數據丟失或不可用。

Categories
程式開發

比BERT提升近10个点!百度预训练模型ERNIE登顶GLUE榜单

北京时间12月10日,百度预训练模型界ERNIE在自然语言处理领域权威数据集GLUE中登上榜首,并以9个任务平均得分首次突破90大关刷新该榜单历史,其超越微软MTDNN-SMART, 谷歌T5、ALBERT等一众国际顶级预训练模型的表现。

比BERT提升近10个点!百度预训练模型ERNIE登顶GLUE榜单 6

众所周知,通用语言理解评估基准GLUE是自然语言处理领域最权威的排行榜之一,由纽约大学、华盛顿大学、谷歌DeepMind等机构联合推出,以其涵盖大量不同类型的NLP任务,包括自然语言推断、语义相似度、问答匹配、情感分析等9大任务,成为衡量自然语言处理研究进展的行业标准。因此,吸引了谷歌、Facebook、微软等国际顶尖公司以及斯坦福大学、卡耐基·梅隆大学等顶尖大学参加。GLUE排行榜的效果,在一定程度上成为了衡量各机构自然语言处理预训练技术水平最重要的指标之一。此次能够超越国际顶尖公司及高校荣登榜首,背后是百度NLP技术的长足积累。

2018年底以来,以BERT为代表的预训练模型大幅提升了自然语言处理任务的基准效果,取得了显著技术突破,基于大规模数据的预训练技术在自然语言处理领域变得至关重要。众AI公司纷纷发力预训练领域,相继发布了XLNet、RoBERTa、ALBERT、T5等预训练模型。百度也先后发布了ERNIE 1.0、ERNIE 2.0,在16个中英数据集上取得了当时的SOTA。

从GLUE排行榜上来看,BERT使用预训练加微调的方式,相对过往的基线成绩大幅提升各任务的效果,首次突破了80大关。XLNet、RoBERTa、T5、MT-DNN-SMART等模型则分布在88-89分范围,人类水平则是87.1。

百度ERNIE此次登顶,成为首个突破90大关的模型,并在CoLA、SST-2、QQP、WNLI等数据集上达到SOTA。相对BERT的80.5的成绩,提升近10个点,取得了显著的效果突破。

比BERT提升近10个点!百度预训练模型ERNIE登顶GLUE榜单 7

百度ERNIE 2.0原理示意图…

Categories
程式開發

支撐PB級數據的架構、技術選型案例解析

每個人的電腦上都有一個被數百個進程使用的文件系統。但是,如果要讓成千上萬的用戶同時操作數億個文件,這些文件又包含了 PB 級的數據,那就困難了。一個是磁盤空間不足,一個是無法進行彈性擴展,一個是如果運行一些 IO 密集型的進程或者與其他多個用戶協作就會出現瓶頸。在這篇文章裡,我們把場景轉到一個有數百萬個付費用戶的雲原生文件系統上,你將看到我們如何使出渾身解數來擴展這個系統,讓它支持持續增長的用戶以及 SLA 需求,同時還能提供類似本地文件系統那樣的體驗。

Egnyte …

Categories
程式開發

蘋果起訴前iPhone芯片金牌設計師,當事人反訴其非法監視行為侵犯隱私

蘋果將一名前僱員送上了法庭。據外媒報導,蘋果正在起訴前公司頂級芯片處理器設計師Gerard Williams(杰拉德· 威廉姆斯)。後者於今年2月份離開了蘋果,並聯合創辦了數據處理器公司Nuvia,並擔任首席執行官。蘋果指控Williams違反了勞動合同,理由是他還在蘋果公司工作時就成立了自己的芯片設計公司。

蘋果起訴前芯片設計師

杰拉德· Williams曾是前iPhone芯片王牌設計師,根據LinkedIn的個人資料,Williams 從2010年2月至2019年2月在蘋果工作,他是所有Apple CPU和SOC開發的首席架構師,曾主持了蘋果iPhone和iPad芯片處理器的創建。…

Categories
程式開發

谷歌為 AI 合成音視頻質量引入了新的度量標準

谷歌人工智能的研究人員發布了兩個新的度量標準來衡量由深度學習網絡生成的音頻和視頻的質量,分別是 Fréchet Audio Distance (FAD)Fréchet

Categories
程式開發

神经网络剪枝领域优秀研究论文汇总

剪枝是深度学习中用来帮助开发更小、更高效神经网络的技术。它是一种模型优化技术,通过移除权重张量中冗余的值来实现模型优化。它实现了神经网络的压缩,让神经网络运行得更快,减少了网络训练的计算开销,这在把模型部署到手机或者其他终端设备上时显得尤为重要。在这篇指南中,我们会浏览一下神经网络剪枝领域的一些研究论文。

神经网络剪枝领域优秀研究论文汇总 17

Pruning from Scratch(2019)

这篇论文的作者提出了网络剪枝流水线,能够从一开始训练模型时就进行剪枝。基于CIFAR10和ImageNet数据集做的压缩分类模型实验,可以看出这个流水线减少了原来通用流水线方法里产生的预训练开销,同时还增加了网络的精度。

神经网络剪枝领域优秀研究论文汇总 18

论文网页:https://arxiv.org/abs/1909.12579

下图所示是传统剪枝过程的3个阶段。这个过程包括预训练、剪枝和微调。

神经网络剪枝领域优秀研究论文汇总 19

来源:https://arxiv.org/pdf/1909.12579.pdf

Categories
程式開發

Spark Streaming源碼分析:DStream的內置和運行

貝殼實時計算平台已承接公司各種實時數據任務100多個,日處理消費總量接近250億,採用的底層引擎包括Spark-Streaming和Flink。為了提升數據處理速度和穩定性,我們對各種引擎的處理特性進行了深入研究。在Spark-Streaming中,對流的抽像是使用DStream來定義的,所以想要理解Spark-Streaming的流處理模型,理解DStream的內部實現以及其如何構建和運行是很有必要的。

DStream的構建

我們在定義一個流的處理邏輯時,首先從一個數據的流入源開始,這個數據源使用InputDStream定義,它是DStream的一個子類,之後我們會在其上調用一些tranform類型算子,像map, reduce,filter等等,每調用一個算子,都會創建一個新的DStream,每一個新創建的DStream都保留著當前節點所依賴的上一個節點和當前節點的執行邏輯這兩個部分,這樣,多個DStream節點就構成了一個邏輯執行鏈。

比如如下代碼會生成圖1的執行鏈

stream.map(...).filter(...).foreachRDD(...)

Spark Streaming源碼分析:DStream的內置和運行 39

虛線箭頭描述的是依賴關係

最後當調用action類型的算子時,所有action類型的算子,底層都是通過ForEachDStream實現的。

我們來看ForEachDStream的源碼

Categories
程式開發

超4400萬微軟用戶賬戶易受黑客攻擊

超4400萬微軟用戶賬戶易受黑客攻擊 43

近日,據外媒securityaffairs披露,微軟發現因使用洩露了的密碼,有4400萬個微軟Azure AD和Microsoft Services賬戶容易遭到黑客劫持。

據悉,微軟威脅研究團隊的專家分析了一個數據庫,其中包含來自不同安全漏洞的30億個洩露憑證。

“微軟威脅研究小組檢查了從不同洩露事件中獲取的數十億個憑證,來查找微軟系統中的受損憑證。“微軟在帖子中寫道,“到目前為止,2019年,威脅研究團隊檢查了超過30億個憑據,找到超過4400萬個Azure AD和Microsoft Services賬戶的匹配項。”…