2018年8月1日 星期三

以物聯網賦能一線員工,斑馬技術助力企業邊緣化創新




文章摘要: 斑馬技術展示的工業印表機產品 手持式RFID讀取器 而TC20移動資料終端旨在滿足中小型企業的特定需求斑馬技術展示了一系列完整的物聯網解決方案



物聯網的概念最早誕生於2000年的美國,最常見的解釋是:通過射頻識別(RFID)、紅外感應器、全球定位系統、鐳射掃描器等資訊感測裝置,按約定的協議,把任何物品通過物聯網域名相連線,進行資訊交換和通訊,以實現智慧化識別、定位、跟蹤、監控和管理的一種網路概念。


7月31日至8月2日,2018(第十屆)國際物聯網博覽會在深圳會展中心舉辦,此次博覽會覆蓋物聯網感知層、網路層、應用層,涉及RFID(無線射頻識別)技術、感測網技術、物聯網通信技術、大數據處理、雲端計算、實時定位技術等,包含交通、工業、智慧電網、智慧家居、物流、智慧城市等領域的全面解決方案和成功應用展示。



億歐智庫報告《2018物聯網行業應用研究報告》指出, 採用物聯網技術的主要作用就是爲了獲取資料,而後可根據獲取的資料運用雲端計算、邊緣計算以及人工智慧等技術進行處理,幫助人們更好地進行決策。 物聯網等相關技術作為資料獲取的主要方式,在未來的發展中至關重要。


1998年出版的《邊緣競爭》一書,提出了一個全新的 邊緣競爭戰略理論 。在行業高速變革,更加不可預測的情況下,相比於源自核心競爭力的創新,企業在邊緣競爭力上的創新變得愈發重要。對於零售、製造、運輸與物流等領域的一線員工來說,他們在實際操作中的決策和互動行為,正是企業在邊緣競爭力上的重要突破點。另一方面,隨著資訊科技的高速發展,包括人員在內的企業數字化轉型,也已經成為必然趨勢。


作為此次物聯網博覽會的參展商之一,斑馬技術展示了一系列完整的物聯網解決方案,致力於使企業實現數字化運營, 助力零售、製造、運輸與物流等領域的一線員工提升效率 。創始於1969年,誕生於美國的斑馬技術(Zebra),通過為客戶提供完整的端到端解決方案,從移動資料終端和掃描器到專用印表機、RFID、軟體及服務,幫助客戶識別、追蹤和管理重要資產、人員和交易。


在當天下午的媒體交流會上,斑馬技術大中華區總經理吳堅介紹, RFID技術雖然還不是非常成熟,也存在一些硬傷,但每次風口過後,都不同程度地解決了技術本身的問題,解決方案也在不斷的完善和迭代中。 吳堅說道,「利用物聯網功能實現業務運營數字化對於企業至關重要,使其在當今的按需經濟中能與時俱進並保持競爭力。這也意味著需要確保一線員工擁有能夠提升其技能、提高生產力並減少錯誤的技術。無論是改善庫房的運作效率或是以更快的速度遞送包裹,我們的解決方案都能幫助企業‘把握邊緣優勢’,並推動數字化創新,實現更好的業績。」


據瞭解,斑馬技術在此次博覽會上展示的RFID產品,包括ZT410 Silverline工業印表機、TC20移動資料終端,以及定位解決方案等產品。其中ZT410 Silverline工業印表機專為列印和編碼Silverline標籤而設計,該標籤經專門設計可用於各種表面,包括被認為很難應用RFID的液體瓶和金屬圓筒,從而使企業充分發揮RFID追蹤的優勢,應用於更廣泛的物件。



斑馬技術展示的工業印表機產品




手持式RFID讀取器


而TC20移動資料終端旨在滿足中小型企業的特定需求,助力企業提高生產力並實現卓越的運營。通過使用TC20移動資料終端,一線員工可以體驗到移動智慧終端中的內建條碼掃描器、更長的電池壽命、增強的堅固性和更佳的連線性;此外,斑馬技術的定位解決方案,通過「斑馬草原」基礎平臺,能夠有效整合各種感應和定位技術,以及物聯網技術和第三方人工智慧技術(如無人機、視覺技術等),從而提供更靈活、更全面的解決方案包,幫助企業實時檢視資產位置,更好地管理和優化關鍵資產,簡化運營並建立更高效的工作流程。


2018年8月24日,億歐將在北京舉辦「 科技落地 物鏈未來——GIIS 2018物流產業創新峰會 」,就傳統物流企業、製造企業、物流科技應用場景及實操、物流科技新暢想等議題,攜行業人士一同探討新機遇下物流科技如何更好落地及發展走向。


報名連結: https://www.iyiou.com/post/ad/id/638



版權宣告


凡來源為億歐網的內容,其版權均屬北京億歐網盟科技有限公司所有。文章內容系作者個人觀點,不代表億歐對觀點贊同或支援。





http://www.kubonews.com/2018080127030.html

心情煩悶需要新鮮事刺激一下嗎?請上:http://www.kubonews.com

掘金 AMA - 聽騰訊 NOW 直播技術團隊 Leader Randzhu 談 Android 開發和團隊構建那些事




文章摘要: 在團隊碰到常用元件的問題上能夠給與解決思路或方案原生開發肯定優於RN、Flutter等跨平臺技術


上週沸點,掘金團隊請來了騰訊 NOW 直播技術團隊 Leader、Flutter 佈道者 [email protected] (朱政義) 做了為期三天的 Ask Me Anything (AMA) 活動。我們在此精選了一些來自使用者的提問及 Randzhu 的回答。


關於Randzhu:


  • 騰訊 NOW 直播技術團隊 Leader

  • Flutter 佈道者

  • 掘金個人主頁: juejin.im/user/5998f8…

  • 技術團隊專欄: juejin.im/user/5b4ee1…

社羣小夥伴提問


校招招Android客戶端開發看重什麼呢? ─ @擦肩的陽光


您好,請問一下校招招Android客戶端開發看重什麼呢?Java基礎,Android基礎,進階,開源專案原始碼,專案經驗,計算機基礎,演算法,分析解決的思路,程式碼能力,新熱點的學習能力?這些或其他能大致排個順序嗎?



基礎知識是基石,作為計算機從業人員的基本技能,這塊技能要紮實,就像一座大廈,基礎不穩容易倒;問題有沒有分析到本質,解決辦法是否有效,這個直接影響工作成果和效率;當前技術更新速度越來越快,不斷的面臨技術更新與轉型,對學習意願及能力要求也比較高。這三點很大程度上能影響到個人的發展空間。其他方面對於畢業生來講經驗肯定不如社招生。


在原生和跨平臺應用的效能上你們是怎麼來衡量 RN 和 Flutter? ─ @藍寶的尾巴


感謝大佬來傳播技術和經驗,我之前有使用RN開發過簡單的App應用(前端,目前還沒用過Flutter),想請教兩者效能和配套語言相關的問題: 1、在效能上,原生開發肯定優於RN、Flutter等跨平臺技術,我瞭解到的是Flutter > RN, 這個差距是多少?在原生和跨平臺應用的效能上你們是怎麼來衡量的,是否有做過深度的比較? 2、關於配套設施,RN基於Javascript,而Flutter基於Google自己開發的Dart,相對來講前者的普及度會更高一些,意味著使用Flutter,得一邊學Dart,這對於團隊來說是否有一定影響?如果是新手,能否快速上手Dart? 3、從長遠發展來看,Flutter有沒有可能超越RN成為最後的贏家?


很好的問題,這裏分享下我的經驗和思考。


問題1:我們在預研階段對同一個業務頁面實現了RN、Native和Flutter三個版本,做效能對比。結果是在cpu佔用,頁面載入時長,FPS這三個指標,Flutter跟Native非常接近,遠好於RN,在記憶體方面三者無太大差別。


2:上手Dart肯定要花些功夫的,從團隊的學習效果來看,做Java、JS開發的同學會比較容易上手。


3:Flutter解決效能更徹底,實現業務需求的能力也強於優於RN,但動態性不如RN,二者適用的場景是有些不同;再一個還要看二者的開發生態未來發展如何。


就現在的Android趨勢來講,哪些技術方向是值得學習的?─ @N1njaC


你好,感覺大佬能來分享經驗技巧,我想問的是:就現在的Android趨勢來講,哪些技術方向是值得學習的?


圍繞開發效率和質量的原則,從開發元件上,RxJava,EventBus,Retrofit,Picasso等依然是主流;從開發框架上來說,RN,Flutter,H5等混合開發使用越來越多;架構上來說,元件化,外掛化,MVP,MVVM等行業內也一直在探討。


可以分享下你的管理心得嗎??─ @DiDiQi


想問下團隊管理,我剛當上5人技術小組的組長,之前沒有管理經驗,您可以分享下你的管理心得嗎?


我自己轉變的時候也經歷過了一個過程,分享下我的思考:1. 團隊存在的價值在於業務輸出,因此圍繞著提高團隊整體戰鬥力的方向上在做事上,1)思路上要從自己做轉變為帶人做,傳遞做事的方法論,引導大家解決問題,而不是遇到問題自己直接撲上去;2)關注大家的個人成長,幫助大家有效的提高自身的能力。3)掃清阻礙效率和質量的障礙。2.管理者自身上:1)團隊的事情會很多,自己的時間要規劃,比如哪些事情必須得自己做,哪些是可以分配下去,重點關注業務價值大的事情。2) 注重目標規劃,大家目標清晰才能勁往一處使。3)時刻關注小夥伴的狀態,做好情感關懷,解決負面情緒。 推薦一本很經典的管理學書籍彼得·德魯克的-《卓有成效的管理者》。



騰訊過篩簡歷的時候,主要看哪方面?─ Chatc鯨魚


工作3年,期間換過2份工作,投遞過騰訊,但是簡歷石沉大海,想問下大佬,騰訊過篩簡歷的時候,主要看哪方面


1)過往的專案,主要看專案中承擔的責任、碰到過哪些困難、怎麼解決的,取得了什麼效果,有沒有沉澱出方法論。2)體現出技術熱情和追求,比如自己主動研究新技術,並且到什麼程度,有沒有主動優化專案等。 從短短的幾段文字中要體現出主動,思考,方法論和效果。


作為一位資深的 Android 開發者,請問您覺得哪些技能點是比較重要的?─ @Snailer


作為一位資深的 Android 開發者,請問您覺得哪些技能點是比較重要的?


1.從技術方面,圍繞著快速高效的解決問題來講: 1)熟練掌握效能優化手段,包括卡頓,FPS,CPU,佈局優化,記憶體優化等。 2)架構能力,熟練掌握MVP,MVVM,元件化,並能夠針對業務場景實施合適的架構方案。 3)開發元件上,要熟練掌握常用元件的原理及擴充套件方式,比如圖片載入庫,RxJava,OkHttp等,在團隊碰到常用元件的問題上能夠給與解決思路或方案。 4)掌握系統原理,比如安裝包結構,打包安裝過程,外掛原理等。


2.從軟技能上,要培養分享溝通表達能力,這些能力對傳播知識和方法論,培訓新生力量,提高整個團隊的戰鬥力有很大的幫助。


請問如何在面試中發現一個人的優點?─ @zyg8090


請問如何在面試中發現一個人的優點? 最近一直在麪人~ 面到懷疑人生 承認是個不合格的面試官 為啥我發現都是別人的缺點 T-T


人無完人,即使再牛的人,也有技術盲點。我自己的招聘原則是,先制定標準(標準要是多方位的),比如技術能力需要達到什麼程度,能搞定多大的事情,有沒有哪方面的技術研究比較深等,然後按照標準來評估面試者。關注點在於面試者的能力能否cover崗位要求。


比如,面試者有提到主動發現問題,主動做優化,主動推進專案,體現出主動性和責任心,那就是比較好的做事態度。 面試者做了多少總結,寫了哪些部落格文章,部落格文章有沒有上熱門,有多少引用等,體現總結能力和影響力。 詢問有沒有工作中或生活中碰到的挫折,看看面試者回答,或者處理方式是否積極有效。 看看面試者問答過程中,是否準確理解你的問題,回答是否到位,體現溝通理解能力。


Randzhu AMA 福利:《碼農翻身》


嘉賓 Randzhu 從所有提問中選擇一個他覺得最有價值的問題贈送對應的提問者 @ 藍寶的尾巴 ,同樣,掘金社羣根據問題獲得的最高點贊數@ sea_ljf 分別贈送一本《碼農翻身》,書籍《碼農翻身》由博文視點提供,京東購買連結:戳這,書籍如圖:



兩位小夥伴看到記得加清蒸好友送書給你喲,微訊號:evaz0711


本期 AMA 社羣小夥伴提了許多實用問題,同樣感謝 Rand 認真地為掘金小夥伴解答了不少疑問。瀏覽更多的問答,可以到 Rand 的AMA進行閱讀和討論。


本週 AMA:螞蟻金服分散式架構 SOFA 的開源負責人 — 黃挺


本週 AMA 正在活動正在進行 時間:2018.07.31 - 2018.08.02 ,活動傳送::point_right:戳這裏


本週 AMA 嘉賓為螞蟻金服分散式架構 SOFA 的開源負責人 — 黃挺,大家有任何關於 SOFA/微服務/分散式架構/個人成長/螞蟻金服中介軟體/開源 相關的問題可以和他溝通交流~


本期 AMA 結束,黃挺將會指定一名他覺得提出好問題的小夥伴贈送一本書籍 《可伸縮服務架構:框架與中介軟體》。同樣的,官方會根據誰的提問獲得最多點贊贈送他一本《可伸縮服務架構:框架與中介軟體》,書籍由博文視點提供,京東購買連結:戳這,書籍如圖:





http://www.kubonews.com/2018080127028.html

心情煩悶需要新鮮事刺激一下嗎?請上:http://www.kubonews.com

深入理解單例模式(下)




文章摘要: Object rep = desc.invokeReadResolve(obj)Object rep = desc.invokeReadResolve(obj)


Effective Java》已經告訴我們,在單例類中提供一個readResolve方法就可以完成單例特性。這裏大家可以自己去測試。


接下來,我們去看看Java提供的反序列化是如何建立物件的!


ObjectInputStream

物件的序列化過程通過ObjectOutputStream和ObjectInputputStream來實現的,那麼帶著剛剛的問題,分析一下ObjectInputputStream的readObject 方法執行情況到底是怎樣的。


爲了節省篇幅,這裏給出ObjectInputStream的readObject的呼叫棧:




大家順著此圖的關係,去看readObject方法的實現。
首先進入readObject0方法裡,關鍵程式碼如下:


switch (tc) {
//省略部分程式碼

case TC_STRING:
case TC_LONGSTRING:
return checkResolve(readString(unshared));

case TC_ARRAY:
return checkResolve(readArray(unshared));

case TC_ENUM:
return checkResolve(readEnum(unshared));

case TC_OBJECT:
return checkResolve(readOrdinaryObject(unshared));

case TC_EXCEPTION:
IOException ex = readFatalException();
throw new WriteAbortedException("writing aborted", ex);

case TC_BLOCKDATA:
case TC_BLOCKDATALONG:
if (oldMode)
bin.setBlockDataMode(true);
bin.peek(); // force header read
throw new OptionalDataException(
bin.currentBlockRemaining());
else
throw new StreamCorruptedException(
"unexpected block data");


//省略部分程式碼

這裏就是判斷目標物件的型別,不同型別執行不同的動作。我們的是個普通的Object物件,自然就是進入case TC_OBJECT的程式碼塊中。然後進入readOrdinaryObject方法中。
readOrdinaryObject方法的程式碼片段:


private Object readOrdinaryObject(boolean unshared)
throws IOException
//此處省略部分程式碼

Object obj;
try
obj = desc.isInstantiable() ? desc.newInstance() : null;
catch (Exception ex)
throw (IOException) new InvalidClassException(
desc.forClass().getName(),
"unable to create instance").initCause(ex);


//此處省略部分程式碼

if (obj != null &&
handles.lookupException(passHandle) == null &&
desc.hasReadResolveMethod())

Object rep = desc.invokeReadResolve(obj);
if (unshared && rep.getClass().isArray())
rep = cloneArray(rep);

if (rep != obj)
handles.setObject(passHandle, obj = rep);



return obj;

重點看程式碼塊:



 Object obj;
try
obj = desc.isInstantiable() ? desc.newInstance() : null;
catch (Exception ex)
throw (IOException) new InvalidClassException(
desc.forClass().getName(),
"unable to create instance").initCause(ex);

這裏建立的這個obj物件,就是本方法要返回的物件,也可以暫時理解為是ObjectInputStream的readObject返回的物件。


isInstantiable:如果一個serializable/externalizable的類可以在執行時被例項化,那麼該方法就返回true。針對serializable和externalizable我會在其他文章中介紹。 
desc.newInstance:該方法通過反射的方式呼叫無參構造方法新建一個物件。


所以。到目前為止,也就可以解釋,為什麼序列化可以破壞單例了?即序列化會通過反射呼叫無引數的構造方法建立一個新的物件


接下來再看,為什麼在單例類中定義readResolve就可以解決該問題呢?還是在readOrdinaryObjec方法裡繼續往下看。


if (obj != null &&
handles.lookupException(passHandle) == null &&
desc.hasReadResolveMethod())

Object rep = desc.invokeReadResolve(obj);
if (unshared && rep.getClass().isArray())
rep = cloneArray(rep);

if (rep != obj)
handles.setObject(passHandle, obj = rep);


這段程式碼也很清楚地給出答案了!
如果目標類有readResolve方法,那就通過反射的方式呼叫要被反序列化的類的readResolve方法,返回一個物件,然後把這個新的物件複製給之前建立的obj(即最終返回的物件)。那readResolve 方法裡是什麼?就是直接返回我們的單例物件。



public class Elvis implements Serializable 
public static final Elvis INSTANCE = new Elvis();

private Elvis()
System.err.println("Elvis Constructor is invoked!");


private Object readResolve()
return INSTANCE;


所以,原理也就清楚了,主要在Singleton中定義readResolve方法,並在該方法中指定要返回的物件的生成策略,就可以防止單例被破壞。


單元素列舉型別


第三種實現單例的方式是,宣告一個單元素的列舉類:


// Enum singleton - the preferred approach
public enum Elvis
INSTANCE;
public void leaveTheBuilding() ...

這個方法跟提供公有的欄位方法很類似,但它更簡潔,提供天然的可序列化機制和能夠強有力地保證不會出現多次例項化的情況 ,甚至面對複雜的序列化和反射的攻擊下。這種方法可能看起來不太自然,但是擁有單元素的列舉型別可能是實現單例模式的最佳實踐。注意,如果單例必須要繼承一個父類而非列舉的情況下是無法使用該方式的(不過可以宣告一個實現了介面的列舉)。
我們分析一下,列舉型別是如何阻止反射來建立例項的?直接原始碼:
看Constructor類的newInstance方法。


public T newInstance(Object ... initargs)
throws InstantiationException, IllegalAccessException,
IllegalArgumentException, InvocationTargetException

if (!override)
if (!Reflection.quickCheckMemberAccess(clazz, modifiers))
Class> caller = Reflection.getCallerClass();
checkAccess(caller, clazz, null, modifiers);


if ((clazz.getModifiers() & Modifier.ENUM) != 0)
throw new IllegalArgumentException("Cannot reflectively create enum objects");
ConstructorAccessor ca = constructorAccessor; // read volatile
if (ca == null)
ca = acquireConstructorAccessor();

@SuppressWarnings("unchecked")
T inst = (T) ca.newInstance(initargs);
return inst;

這行程式碼(clazz.getModifiers() & Modifier.ENUM) != 0 就是用來判斷目標類是不是列舉型別,如果是丟擲異常IllegalArgumentException("Cannot reflectively create enum objects"),無法通過反射建立列舉物件!很顯然,反射無效了。



接下來,再看一下反序列化是如何預防的。依然按照上面說的順序去找到列舉型別對應的readEnum方法,如下:


private Enum> readEnum(boolean unshared) throws IOException 
if (bin.readByte() != TC_ENUM)
throw new InternalError();


ObjectStreamClass desc = readClassDesc(false);
if (!desc.isEnum())
throw new InvalidClassException("non-enum class: " + desc);


int enumHandle = handles.assign(unshared ? unsharedMarker : null);
ClassNotFoundException resolveEx = desc.getResolveException();
if (resolveEx != null)
handles.markException(enumHandle, resolveEx);


String name = readString(false);
Enum> result = null;
Class> cl = desc.forClass();
if (cl != null)
try
@SuppressWarnings("unchecked")
Enum> en = Enum.valueOf((Class)cl, name);
result = en;
catch (IllegalArgumentException ex)
throw (IOException) new InvalidObjectException(
"enum constant " + name + " does not exist in " +
cl).initCause(ex);

if (!unshared)
handles.setObject(enumHandle, result);



handles.finish(enumHandle);
passHandle = enumHandle;
return result;

readString(false):首先獲取到列舉物件的名稱name。
Enum> en = Enum.valueOf((Class)cl, name):再指定名稱的指定列舉型別獲得列舉常量,由於列舉中的name是唯一,切對應一個列舉常量。所以我們獲取到了唯一的常量物件。這樣就沒有建立新的物件,維護了單例屬性。



看看Enum.valueOf 的JavaDoc文件:


  • 返回具有指定名稱的指定列舉型別的列舉常量。 該名稱必須與用於宣告此型別中的列舉常量的識別符號完全匹配。 (不允許使用無關的空白字元。)

具體實現:


public static > T valueOf(Class enumType,
String name)
T result = enumType.enumConstantDirectory().get(name);
if (result != null)
return result;
if (name == null)
throw new NullPointerException("Name is null");
throw new IllegalArgumentException(
"No enum constant " + enumType.getCanonicalName() + "." + name);

enumConstantDirectory():返回一個Map,維護著名稱到列舉常量的對映。我們就是從這個Map裡獲取已經宣告的列舉常量,通過這個快取池一樣的元件,讓我們可以重用這個列舉常量!


總結


  1. 常見的單例寫法有他的弊端,存在安全性問題,如:反射,序列化的影響。

  2. 《Effective Java》作者Josh Bloch 提倡使用單元素列舉型別的方式來實現單例,首先建立一個列舉很簡單,其次列舉常量是執行緒安全的,最後有天然的可序列化機制和防反射的機制。

參考


  • 《單例模式的七種寫法》

  • 《單例與序列化的那些事兒》

  • 《Effective Java》




http://www.kubonews.com/2018080127026.html

心情煩悶需要新鮮事刺激一下嗎?請上:http://www.kubonews.com

聯想大動作,神祕技術+超聲波+迴歸價,華為很淡定




文章摘要: 這款產品將會採用三星公司的AMOLED螢幕據說聯想公司將會推出的旗艦產品將會是擁有一個遊戲手機的定位


原標題:聯想大動作,神祕技術+超聲波+迴歸價,華為很淡定


原來的「中華酷聯」四大字頭,現在也就華為公司現在有成就,其他三大字頭都已經在手機行業慢慢沒落,最近酷派公司推出最新一代的產品—酷玩7,這款產品卻沒有獲得使用者和市場的認可,特別是相較於上代的酷玩6來說,效能強烈縮水,各項引數指標都有下降的趨勢,之前酷派公司提到的誠意滿滿,現在酷玩7出來何談誠意,酷派公司本就在手機領域這塊的專業度已經降下不少,難以再有好的表現,曾經的國內手機界的巨頭已經不復當年了。



另外聯想還算是有點成績,上半年推出的聯想Z5,就還算一款實力的價效比產品,也沒有多少人為這款產品買單。畢竟現在聯想公司的品牌效應在國內的手機市場因為投票事件受損嚴重,即便如此,聯想手握兩大手機品牌,怎麼會就此沉淪呢,據說馬上聯想公司將會有大動作,準備靠著一款全新的旗艦產品重回巔峰,不是一戰成名,就是跌落低谷,有些冒險的做法,只不過聯想公司也需要一些激進的營銷策略,來調動自己的熱血,全心全意的打造一款實力旗艦。




據說聯想公司將會推出的旗艦產品將會是擁有一個遊戲手機的定位,不出意外的話,會作為這款產品的主推賣點,這款產品將會採用三星公司的AMOLED螢幕,全面屏設計會採用劉海全面屏設計,就是能夠將這項設計優化一下,去掉多餘的黑邊,相信這款產品的顏值會有很大的提升,這麼高階的一款產品,能配得上它的也只有效能強勁的高通驍龍845處理器,說明了聯想公司有著十分的誠意,下血本去打造這一款產品,還是很難得的。



還會在其中搭載3D人臉識別,超聲波屏下指紋解鎖,還會有一項超級給力的神祕技術,據說是從聯想公司電腦領域拷貝過來的,可以降低手機使用功耗,提升手機執行速度,具體訊息還需進一步的瞭解,聯想公司在手機界重回巔峰的夢想看來不遠了。當時與聯想公司齊名的華為公司,現在已然做到了國內手機行業的龍頭和領軍人物,華為公司的產品製造水平和製造工藝都是穩定持續的拔高,科研水平也是處於國內的領先地位,力壓國內數個品牌,連國外的三星公司和蘋果公司面對著華為公司都是有些懼怕。



聯想這款新旗艦雖然沒有對飆華為的意圖,但是作為迴歸之作,必然要直面華為的影響力,如果不能再某些方面力壓華為的話,那麼這款新旗艦還有什麼強勢迴歸的意義呢?因此這款新旗艦在價格上非常良心,據行業人士預測,僅僅4000+起步,這樣的配置還是很有競爭力的,另外在釋出時間上,據說會提前到華為mate20之前釋出,到底如何?我們拭目以待吧!返回搜狐,檢視更多


責任編輯:





http://www.kubonews.com/2018080127024.html

心情煩悶需要新鮮事刺激一下嗎?請上:http://www.kubonews.com

通過區塊鏈技術來簡化DevOps流程




文章摘要: 這就是為什麼手動測試在DevOps流程中會不可避免地成為瓶頸所在雲環境讓DevOps團隊能夠為分配基礎設施建立自助服務方法——這意味著他們不需要等待分配資源


DevOps是近年來推動技術進步的動力。DevOps為我們提供了一個進入未來的通道,在那裏,軟件技術始終保持最新,一切都可以在眨眼之間完成載入,你再也不會遇到另一個應用程式故障。這怎麼可能?密切的團隊溝通、快速反饋和關鍵流程的自動化讓DevOps團隊能夠不斷創新,導致傳統IT看起來極其笨重而繁瑣。今天的軟體公司已經到了做出抉擇的時候:「採用DevOps,或慢慢死去。」


在進一步討論這個話題之前,先讓我們澄清一下DevOps的概念。DevOps是一種軟體交付的整體方法,它統一了軟件開發(Dev)和軟體運營(Ops)。它涉及軟體工程各階段的自動化和更短的開發週期。Netflix是成功應用DevOps的最著名的公司之一——它能夠通過無處不在的自動化來支援公司的快速增長,包括故障自動化(一種名為「Chaos Monkey」的工具通過定期隨機關閉伺服器例項來測試Netflix應用程式的穩定性)。



話雖如此,DevOps仍然存在一些問題——主要與自動化流程、基礎設施不足以及計算能力不足有關。所幸的是,在標記化的基礎設施市場、自動化GRID和人工智慧的幫助下,有很多專案可用於解決某些DevOps所面臨的挑戰。在本文中,我們將詳細描述它們並將它們與非區塊鏈解決方案進行比較。


DevOps與傳統IT:感受差異


採用DevOps的好處包括:處理安全問題所花費的時間將減少50%、故障恢復速度將提高24倍、變更故障率將降低3倍。此外,當今最具適應性和發展最快的科技公司正在使用DevOps來達到接近「隨需速度(speed of need)」的目標。他們可以快速獲得產品反饋,並以最小的延遲滿足新出現的需求。


DevOps究竟與用於建立大多數現有網站的傳統IT模型有何不同?


專注的跨職能團隊


任何一家採用DevOps的公司都由專門的跨職能團隊而不是以技能為中心的孤島(獨立部門,它們之間沒有進行充分的溝通)組成。在傳統的IT環境中,由三四個孤島輪流開發新功能,有時候出現返工,需要將功能回退給上一個孤島。但DevOps團隊是自給自足的,它們由專注於一個應用程式的開發人員、測試人員、運營人員和業務分析人員組成。這樣一個跨職能的團隊可以在不向其他人推卸責任的情況下處理新功能。在準備好進入部署階段時,工作就算完成了,因此不會在交接上浪費時間。根據1/4-2-20法則(每四分之一的完成時間,可以讓生產效率提升2倍,並減少20%的成本),週期時間每減少25%,生產力就會翻倍,並減少20%的運營費用。


頻繁的小批量交付


DevOps適用於頻繁的小批量交付,而不是每年進行幾次大型的釋出。從DevOps的角度來看,大批量風險太大、太複雜、難以協調,而小批量可以進行必要的全面測試。如果出現任何問題,可以迅速解決。除此之外,頻繁釋出小版本可以更好地響應客戶的需求。


自動化


DevOps文化傾向於提倡自動化,因為這樣可以讓團隊處理創造性任務而不只是常規任務。系統自動構建和測試程式碼,並通過管道傳遞給消費者(已經通過測試)。不過需要注意的是,完全自動化不是必需的。自動化水平取決於每個團隊的流程和痛點,過度自動化可能導致不理想的結果。爲了達到完美的平衡,每個團隊應評估自己的需求,找出瓶頸,並確定優先順序——遺憾的是,並不存在適合所有需求的通用方案。


採用DevOps將會面臨的挑戰


如果DevOps是一種可以帶來競爭優勢的方法,為什麼不是所有人都採用它?它已經存在好幾年了,首次出現在2010年,而2018年的情況如下:只有30%的軟體公司宣佈完全(17%)或幾乎完全(13%)引入DevOps,僅22%剛剛開始向這種方法過渡。


當然,最關鍵的是整個公司的大規模心態轉變——從管理層到入門級員工。這就是為什麼剛開始引入DevOps會很難以及成功完成實施會更難。大多數企業的開發和運營團隊都試圖實現相反的目標:鼓勵前者進行創新,鼓勵後者保持正常執行時間和連續性。要消除二者之間的摩擦並讓他們組合在一起並非易事。這就是為什麼公司管理層應該通過引入面向協作的目標和促進跨職能培訓來轉向DevOps。它將幫助Dev和Ops超越他們通常的職責範圍,並意識到他們都處在同一個團隊中。



是什麼阻止DevOps滲透到整個行業?


除了企業文化的轉變,DevOps的採用受到了一些不可避免的功利問題的阻礙,這些問題與基礎設施、同步和自動化流程有關。沙盒專家Quali進行的調查表明,阻礙引入DevOps的主要障礙是公司文化(14%)、測試自動化挑戰(13%)、遺留基礎設施(12%)、應用程式複雜性(11%),以及預算限額(11%)。


自動化挑戰


測試自動化是DevOps的基石之一:它讓持續整合成為可能,並節省了團隊的時間,讓他們可以專注於更具創造性的工作。測試旨在檢查一段程式碼是否按預期工作,以及它是否滿足所有的技術或業務要求。有各種各樣的測試型別,這就是為什麼手動測試在DevOps流程中會不可避免地成為瓶頸所在。雖然測試自動化需要額外的努力,但絕對是值得的。對於FinTech之類的解決方案或電子商務網站等應用程式來說尤其如此——即使最小的停機時間也會導致重大的利益損失。


自動化測試的一個常見問題是,在資源有限的本地基礎設施上執行時,可能會過於耗時。有時候,你甚至可能需要在晚上進行自動化測試,以便在第二天獲得結果,甚至等到週末。如此低的速度對於DevOps流程來說是不可接受的,但很少有公司能夠負擔得起構建強大的本地基礎設施的成本。


基礎設施挑戰


遺留基礎設施是很多公司抵制採用DevOps的另一個原因。快速開發(DevOps的特徵之一)主要基於微服務架構,與傳統架構完全不同。遷移到微服務將大幅增加工作量,在大多數情況下,傳統的基礎設施需要進行昂貴的升級。


另一個與基礎設施有關的問題是DevOps工具與現有IT系統的整合——整合過程很少能夠順利進行,因為涉及的變化太多。例如,Dev和Ops團隊通常使用不同的工具和指標,但爲了實現真正的DevOps效率,他們必須進行整合和統一——他們需要組成一個跨職能團隊。


應用程式的複雜性


DevOps的最佳環境是雲,原因很明顯:雲提供了必要的規模、最佳的速度和最大的靈活性,所有這些通常都無法在有限的本地部署上實現。雲環境讓開發人員可以更好地控制組件並減少等待時間。除此之外,雲環境讓DevOps團隊能夠為分配基礎設施建立自助服務方法——這意味著他們不需要等待分配資源。但是,向雲遷移並非總是可行的:據調查,44%在內部部署環境中執行的應用程式因為太過複雜而無法遷移到雲環境中。


基於區塊鏈的DevOps平臺


現在已經出現了很多數字加密專案,以滿足該行業對計算資源和基礎設施日益增長的需求。它們使用了不同的技術,但都有一個共同點:激勵社區發展並作為使用資源獎勵的代幣。


Buddy


作為最有前途的去中心化DevOps平臺之一,Buddy通過提供對兩個自動化網格的訪問來解決基礎設施問題。受信任的高可用私有自動化網格和共享自動化網格可以執行時間密集型和計算密集型自動化操作,甚至整個管道。因此,DevOps團隊可以以最高的效率完成他們的工作(並且無需擔心基礎設施可用性問題)。最重要的是,Buddy支援複雜的企業級應用程式、多雲工作流和混合環境。



Buddy使用者可以通過受支援的自動化操作來建立管道。目前有80個操作,不過很快會出現更多的操作,這要歸功於Buddy市場。這個市場是爲了鼓勵社區發展和支援有才華的開發者而推出的。第三方開發人員可以向Buddy的生態系統提交自己的自動化操作,可以是有償的,也可以是免費的。


私有自動化網格是由Buddy例項組成的網路,為DevOps流程的自動化提供按需自動伸縮的基礎設施。使用者可以在他們認為合適的地方執行Buddy例項:在他們自己的物理基礎設施上、私有云或IaaS伺服器上。Buddy還可以使用由合作伙伴或SaaS整合(如Google Cloud、Amazon Web Services等)提供的受信任網格。根據不同的負載,Buddy會自動建立新例項,並在不再需要它們時將它們移除。


共享自動化GRID在不需要受信任基礎設施的情況下使用。可以向具有可用資源的Buddy例項網路分配時間密集型和計算密集型的任務。執行這些例項的使用者將獲得每個計算單元的BUD代幣。該網格不能用於核心開發,但可用於測試(由數百個Buddy例項來執行測試將花費更少的時間)或其他不需要高度信任級別的任務——例如效能監控或可用性監控。


DevOps工程師還可以在Buddy沙箱的幫助下消除開發瓶頸,他們可以直接在一次性執行環境中從Git倉庫執行應用程式或網站。沙箱不需要任何物理伺服器或虛擬機器。


Buddy支援與以下生態系統整合:Github、Bitbucket、GitLab、Slack、DigitalOcean、Vultr、AWS、Google Cloud、Microsoft Azure等。它還有一個內建的Git,使用者可以選擇使用它來託管專案。


基於以太坊的BUD代幣旨在作為去中心化經濟的基礎,並在Buddy生態系統中建立積極的反饋迴圈。如果沒有代幣,平臺就缺乏對參與網格計算進行激勵的經濟因素,因為法定支付太慢而且效率太低,不足以推動社羣的發展。


Fetch.ai


Fetch.ai是一個基於區塊鏈的智慧賬本(Smart Ledger,下一代分散式賬本技術)專案。它為數字世界提供動力,在這個世界中,自主軟體代理可以通過出售資料或空閒資源來獲得Fetch代幣。DevOps團隊顯然可以從這個市場中受益:這是一種購買計算資源以進行測試、監控或執行其他DevOps時間密集型任務的便利方式。從DevOps的角度來看,它有點類似於上面提到的Buddy共享自動化網格,只是人為干預較少。


這項技術還可以怎麼用?簡而言之,就是可以在Fetch數字世界中出售資料。物聯網裝置可以出售對於其他代理來說有用的資訊:例如,軟體代理可以將車輛擋風玻璃刮水器的使用資訊作為氣候資訊的來源。空閒計算機可以為遠端客戶執行測試任務或執行其他計算。除此之外,還可以將舊資料接入Fetch並使其成為可銷售的資產。



隨著時間的推移,Fetch網路可能會擴充套件並獲得巨大的計算能力,因此代理將獲得新的資料洞察力。得益於整合到Fetch系統中的機器學習技術,網路能夠自己建立寶貴的知識。最終,受信任的數字代理將能夠取代人類中間人,並建立全新的行業。資料和基礎設施不會像現在這樣依賴人類——它們將創造新市場並進行自主銷售。


Fetch代幣將用作網路中所有交易和操作的內部貨幣,它們還將作為某些行為的可退還押金,以確保安全以及防止不良行為。


Golem


Golem專案釋放了閒置計算機資源的潛力,建立了另一個帶有基於以太坊的代幣的去中心化市場。Golem網路是一個結合了使用者可用資源的全域性超級計算機,DevOps團隊顯然可以有效地使用它來執行密集的自動化任務。然而,這些資源的可靠性和可用性存在疑點:家用計算機(即使放在一起數量很大)是否與Buddy的受信任雲基礎設施一樣可靠?


Golem網路的參與者——包括人類和應用程式——可以請求或銷售機器週期。那些共享資源個人電腦或大型資料中心,都可以從Golem網路代幣(縮寫為GNT)的請求者那裏立即獲得報酬。沙箱環境提供了必要的安全級別,其中計算與主機系統是完全隔離的。


除此之外,軟件開發人員還可以使用Golem生態系統來建立、部署、發行和貨幣化應用程式。Golem為這些活動提供了應用程式登錄檔和事務框架。


目前,Golem仍然處於測試階段,因為它的建立者專注於讓它變得更加強大和靈活。他們還計劃為開發人員和軟體公司新增各種工具,讓Golem成為雲提供商的可行替代方案。


結論


本文中提到的基於區塊鏈的平臺解決了對計算資源的迫切需求,計算資源在未來幾年必然會變得更加嚴峻。雖然傳統雲提供商在提供基礎設施和計算能力方面似乎非常有效,但在社羣參與和獨立性方面,去中心化解決方案更具前景。一旦它們獲得足夠的動力,就會開始以自己的方式發展和成長,吸引有才華的開發者,這些開發者將帶來新的功能和可能性。人工智慧、機器學習和其他尖端技術將推動它們進一步發展——有一天,我們會驚訝地發現,未來已經到來。


基於區塊鏈的平臺幾乎允許所有人都來參與這個市場,並通過銷售閒置資源來賺取代幣。這意味著,如果有必要,去中心化平臺有可能可以利用全世界所有的計算能力。





http://www.kubonews.com/2018080127023.html

心情煩悶需要新鮮事刺激一下嗎?請上:http://www.kubonews.com