科技巨頭正在變成工業巨頭

網路經濟其實是貨真價值的實體經濟,現在的這些科技巨頭都快要變成工業巨頭了。

彭博社最近對比了一下全球最大的汽車製造商通用汽車和科技巨頭 Google,通用汽車全球 5.8 萬名員工每年製造 1 千萬台汽車,Google 的使用者則是坐在電腦前搜索訊息,打開網站播放影片,接著 Google 從中傳回相關的資料訊息。

通用汽車是美國營收排名第十二的大公司,貨真價實的製造業代表,然而它每年在其工廠、汽車裝配機器人和其他材料上的「資本財」(Capital Goods)花費,遠低於美國的科技網路公司。

去年通用汽車在資本財上的支出為 85 億美元,相比 2015 年的 72 億美元已經增加了將近 20%。

但讓人震驚的是,Google 母公司 Alphabet、蘋果、亞馬遜和 Facebook 這四家科技巨頭,去年一共花費了 800 億美元來升級資本財,以裝備它們用來提供服務的硬體設備。

例如 iPhone 產線上,那些組裝測試和拆解回收的流水線機器人。

還有 Facebook 的海底電纜工程,除了聯合微軟、西班牙電信公司 Telxius,在大西洋海底鋪設海底電纜,Facebook 還聯合軟銀、亞馬遜在太平洋海底打造長達 14000 公里的海底電纜,這都是為了我們在打開 Instagram 的時候,可以讓影片更快的出現在你的螢幕上。

「資本財」(Capital Goods)指的是用來協助生產其他商品或者服務的物品,是生產者投入的三大要素之一。資本財與土地、人力合稱起來,就是「生產要素」。

在 2015 年,這些科技公司在資本財上的投入的手筆已經高達 400 億美元。這個數字讓它們和汽車廠商、通訊廠商、石油開發商一樣,成為美國最大的資本財賣家。這些被認為會長期持有的資本財,包括工廠、重型設備、房地產等。

當一艘船沉入海底,它可能會遇見微軟的伺服器與此同時,科技互聯網公司的資料儲存也需要用到大量的硬體設備。今年 6 月,微軟在蘇格蘭奧克尼群島海岸線附近的水域中,部署了一個水下資料中心。這個像潛水艇一樣的設備,總共有 864 台伺服器,由一條連接歐洲海洋能源中心的水下電纜供電。 Facebook 和 Google 則是選擇把資料中心建在靠近北極圈的國家。

在中國,騰訊在貴州的山裡挖洞以存放資料,阿里巴巴則是在年平均氣溫 17 攝氏度的千島湖建立資料中心。

科技巨頭的大手筆,反映出很少有企業能夠異軍突起動搖它們的位置,這也讓人們開始擔憂行業的馬太效應。

正如彭博社提出的疑慮,Google 可以為自己的無人駕駛公司一年豪擲 200 億美元,以確保它用上最好的晶片和光達傳感器,那麼還有多少家無人駕駛公司擁有足夠的實力與之抗衡?

鴻海集團的郭台銘與阿里巴巴的馬雲,一個製造業大亨和一個網路大亨在製造業方面進行了隔空對話。

馬雲在 9 月 17 日的世界人工智慧大會上表示:

未來製造業不僅僅是製造業,而是製造業和服務業的完美結合,未來製造業的競爭力不在於製造本身,而是製造背後的服務和體驗,未來的製造業都是服務業。

郭台銘在 25 日的集團內部會議上,反對了馬雲的觀點,認為未來製造業競爭力仍在製造業本身:

如果沒有好的車刀、半導體、模具等硬體,不可能做出好的產品,製造業的關鍵競爭力還是在本身製造技術能力。

科技企業成長為巨頭枝繁葉茂後,產業佈局擴張到其他領域無可厚非。畢竟所有的網際網路,都是建立在實體經濟的基礎之上,因此「工業互聯網」這個詞語也越來越常見了。

Javascript 的事件觸發

onabort 圖像加載被中斷
onblur 元素失去焦點
onchange 用戶改變域的內容
onclick 鼠標點擊某個對象
ondblclick 鼠標雙擊某個對象
onerror 當加載文檔或圖像時發生某個錯誤
onfocus 元素獲得焦點
onkeydown 某個鍵盤的鍵被按下
onkeypress 某個鍵盤的鍵被按下或按住
onkeyup 某個鍵盤的鍵被鬆開
onload 某個頁面或圖像被完成加載
onmousedown 某個鼠標按鍵被按下
onmousemove 鼠標被移動
onmouseout 鼠標從某元素移開
onmouseover 鼠標被移到某元素之上
onmouseup 某個鼠標按鍵被鬆開
onreset 重置按鈕被點擊
onresize 窗口或框架被調整尺寸
onselect 文本被選定
onsubmit 提交按鈕被點擊
onunload 用戶退出頁面

Javascript 判斷 null 或 undefined 的方法

https://dotblogs.com.tw/rickeysu/2013/11/08/127332

以下是正确的方法:
var exp = null;
if (!exp && typeof exp != "undefined" && exp != 0)
{
    alert("is null");
}
  • typeof exp != "undefined" 排除了 undefined;
  • exp != 0 排除了数字零和 false。
更简单的正确的方法:
var exp = null;
if (exp === null)
{
    alert("is null");
}

尽管如此,我们在 DOM 应用中,一般只需要用 (!exp) 来判断就可以了,因为 DOM 应用中,可能返回 null,可能返回 undefined,如果具体判断 null 还是 undefined 会使程序过于复杂。

Javascript 使用 XMLHttpRequest (AJAX 應用)

使用 XMLHttpRequest(XHR)物件與伺服器互動,你可以從 URL 擷取資料且不須刷新整個頁面。這使得網頁可以只更新其中的一部分而不中斷使用者的操作。XMLHttpRequest 被大量使用於 AJAX 應用。

僅管名字用的是 XML 與 HTTP,XMLHttpRequest 其實可以用來接收任何類型的資料,並不限於 XML。同時它也支援 HTTP 以外的通訊協定(包括 file 與 ftp)。

如果你的通訊涉及接收從server來的事件或是訊息資料,可以考慮透過EventSource介面使用server-sent 事件。對於全雙工的通訊,WebSockets 可能是較佳的選擇。

https://developer.mozilla.org/zh-TW/docs/Web/API/XMLHttpRequest


實作時常用到的參數詳解:
http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_send.asp
https://itbilu.com/javascript/js/EkIzWrt7.html
https://itbilu.com/javascript/js/NkzjoC4j.html


javascript 實現 ajax 的幾種方法:
http://www.phpernote.com/javascript-function/904.html


Ajax 的安全議題:https://21st.each1.net/2018/10/pushstate-ajax-pjax.html

訴訟費1億元 他用這招讓蘋果御用律師告不成

iRobot與松騰資本額相差100倍,當松騰挨iRobot告專利侵權時,外界皆認為松騰穩輸無疑。

由於iRobot主打售價約9千至3萬元的高價位掃地機,過去松騰皆將價位定在iRobot的一半以下,當松騰實力成熟,想往上爭奪高價市場,iRobot便備感威脅。燕成祥分析,iRobot市場正在萎縮,也想攻取低價市場,因此才請出蘋果御用律師控告包括松騰在內的11家歐洲、中國和台灣公司侵權,迫使對手退出市場。

不想坐以待斃,燕成祥向工研院購買4項台灣與中國皆適用的專利反擊,把戰場拉到中國,在中國狀告iRobot,「影像地圖系統的專利,刺中他們最新系列主打方向定位的要害,可以禁止iRobot在中國販賣。」擔心中國製造廠遭封,iRobot今年1月撤告和解。小蝦米借力使力,竟從大鯨魚口中游出生路。

訴訟戰讓松騰燒掉1億元,卻因禍得福,獲益更豐。「我的對手不是iRobot,是大陸那些仿冒者,但iRobot把這些都幹掉了,現在全美國只有我跟iRobot可以賣,其他人要進去只能找我代工或授權。」燕成祥估計,松騰整體市場至少成長3成。

Javascript 建立、讀取、刪除cookie值

Javascript/Jquery 建立、讀取、刪除cookie值
https://n.sfs.tw/content/index/10319
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 建立cookie
function createCookie(name, value, days, path) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
    var expires = "; expires=" + date.toGMTString();
  }
  else var expires = "";
  document.cookie = name + "=" + value + expires + "; path=/";
}
//讀取
function readCookie(name) {
   var nameEQ = name + "=";
   var ca = document.cookie.split(';');
   for (var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == ' ') c = c.substring(1, c.length);
      if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
   }
   return null;
}
//刪除
function eraseCookie(name) {
   createCookie(name, "", -1);
}
使用範例:
讀取
   ds= readCookie('showadv');
建立(有效3日)
  var ds="some value";
  createCookie('showadv', ds, 3);
刪除(等於建立一個逾期的cookie)
  eraseCookie('showadv');

程式語言編年史

程式語言編年史原文 下面這張圖片描繪了整個程式語言的歷史。包括各種程式語言的發明人、程式語言的特點和適用領域、被什麼網站或公司使用等 (檢視 完整高清圖 )。 之所以會有那麼多不同的程式語言是因為設計程式語言的初衷不同、對語言學習曲線的追求不同、不同程式之間的執行成本差異...