Quantcast
Channel: 神魂顛倒論壇-Flash--Front-end網頁前端討論最新50篇論壇主題-全文
Viewing all 735 articles
Browse latest View live

[Javascript]說了這麼多,Edge 到底能不能秒掉 Chrome?

$
0
0
[Javascript]說了這麼多,Edge 到底能不能秒掉 Chrome?

類型:
Javascript



在新視窗檢視









昨天一天忙活完 Windows 10 的稿件,然後趕忙打車去參加 Windows 10 insider 會員的慶祝活動,就連的士廣播里都傳來地道的主持腔:「美國公司微軟今日正式發表了全新的作業系統——視窗 10。」



以上為 7 月 29 日,王姓編輯被 Windows 10 「淹沒」的一天。

昨天發表的 Windows 10 系統擁有眾多全新特性,Edge 瀏覽器就是其中的一項重點。微軟曾表示 Edge 瀏覽器使用體驗均高於其它知名瀏覽器。

當然,體驗這種東西見仁見智。Mashable 則做了一項相對簡單的測試《Edge VS Chrome》,比拼兩款瀏覽器的效能以及速度。

首先這項測試在同一平台下進行,他們找到了一台 HP 的Notebook,規格是 Core i5 & 8GM RAM。為了公平公正,這兩款瀏覽器都是 Reset 的狀態,並且未安裝任何外掛程式,各項測試與測試之間都先進行 Cookie 以及瀏覽記錄的釋放,測試迴圈三次,取平平均值。

測試一共分為四項,三項為瀏覽器的 Javascript 效能測試,另外一項則是統計大眾站台的連線速度。

連線速度上,Mashable 選擇了自己的主站 Mashable , 社交站台 Facebook 以及媒體主站 NewYork Times 作為測試站台。在這項測試中,兩個瀏覽器在三個站台開啟的作業迴圈做三次,每個站台統計出來的平均連線速度都是 Chrome 佔優。

而三項 Javascript 測試分別為 Futuremark Peacekeeper(得分越高越好), SunSpider JavaScript(得分越低越好),V8 Benchmark Suite(得分越高越好),這三項測試則體現產品效能。



在新視窗檢視



Futuremark Peacekeeper(得分越高越好)



在新視窗檢視



SunSpider JavaScript(得分越低越好)



在新視窗檢視





V8 Benchmark Suite(得分越高越好)

而根據上面的成績來看,Chrome 在兩項測試中比 Edge 的成績要好。

不過,Mashable 的編輯也表示了如果實際使用並安裝上外掛程式的話,兩款瀏覽器的速度會更慢一些。不過考慮到 Windows 10 的剛剛發表,Edge 瀏覽器還是對他有極大的新鮮感。

不過,想必這些測試可能並不妨礙你繼續更新 Windows 10,而在國內更新 Windows 10 也出現了一些小問題。

在 Insider 的粉絲活動上,微軟宣布了與 360 ,騰訊以及百度展開合作,用來幫助使用者儘快更新至 Windows 10,但是這裡就出了問題。

首先,一些正版使用者並沒有在當天收到更新的知會,這有可能是因為微軟優先推送 Insider 會員的規則,而一些使用 360 安全衛士以及騰訊電腦管家的使用者在更新程序中也遇到問題,他們遭遇了重啟,藍螢幕甚至更新中斷等問題,還有一些使用者在更新完成後不能上網或沒有聲音。

騰訊先叫停了 Windows 10 的更新助手,並在社區內發表了下架更新助手的公告。而隨後 360 也發表聲明,並下架了升級助手。

英國 The register 科技博客爆料了他們使用 Windows 10 遇到的漏洞。在更新到 Windows 10 後,若使用者下載了多於 512 個應用的話,這些應用則可能會遺失。而這個漏洞的原因主要是因為 Windows 10 程式碼將輸入程式數量限制在了 512 個。

微軟的專案經理 Arunjeet Singh 則在 Twitter 上回應了抱怨的使用者:

我們正在處理這個問題。



聽起來有一些像「正在處理一些事情」。

?

題目來自:yam





想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 愛范兒











在新視窗檢視

分享到Facebook


[Javascript]駭客組織「匿名者」駭掉多個政府站台,Tonyq:突顯我國對資安不重視

$
0
0
[Javascript]駭客組織「匿名者」駭掉多個政府站台,Tonyq:突顯我國對資安不重視

類型:
Javascript



在新視窗檢視



國際駭客組織「匿名者」聲援台灣反課綱運動,持續運用以分散式阻斷服務(DDoS)攻擊,讓政府部會、國民黨多個黨部站台相繼癱瘓。這樣的成果不但警告示威意味濃厚,也凸顯出台灣政府對於新世代的資安攻防戰,似乎還沒做好萬全準備。

匿名者亞洲分部從 7 月 31 日起陸續發動攻擊,政府的重要部會站台成為攻擊目標,直到今天下午,仍有台灣銀行、國民黨青年團等數個站台相繼癱瘓,短暫出現連結不穩或無法正常提供服務。

在新視窗檢視

這些部會站台遇到 DDoS 攻擊就無法抵擋,到底是駭客技術太強無法抵擋,還是站台本身的安全架構堪憂呢?根據柯文哲競選網路軍師、JavaScript.tw 技術社團創辦人王景弘(Tonyq)解釋:

「DDoS 是短時間內製造大量流量的攻擊方式,一般來講就是過濾大量攻擊來源忽略、加入前面 loadbalance 的能量,就是硬碰硬的作法。核心來說,只要 DDoS 到達一定規模就會很難防禦。」





但是他也指出,國民黨青年部受攻擊時出現 503 這種內部錯誤頁面,就是站台本身內部有系統弱點,比起達到抗爭訴求本身,這些企業的資訊安全程度更令人擔心,他說:

「即使沒有這種訴求,這些企業也應該力求自己網路服務之穩定健全。我個人是覺得,這次匿名者的作為對訴求本身沒有幫助。如果這真是我們所知的那個匿名者的作為,勉強只能突顯出我國政府對資安的掌握程度跟不重視吧。」



王景弘接?解釋新世代網路攻擊的樣式是十分多元的,他說:

「一般來說資訊安全攻擊是多軌並進的,不會只用一種攻擊方式,DDoS 基本上也是一種蠻消極的攻擊方式,多數人會直覺想要的還是直接打進去掌握伺服器主導權。若掌握到伺服器主導權,就會有資料外洩的危機。」



政府近來也開始?手有關於「資安防護」的政策措施,不論實作成果為何,都需要從這次的經驗學到一些教訓,了解到即使沒有駭客攻擊,這些企業、部會站台也應該力求自己網路服務的穩定健全。

(圖片來源:Anonymous Asia Facebook、?JacobDavis, CC licensed)





想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視





在新視窗檢視





原文站台: TechOrange











在新視窗檢視

分享到Facebook

[css]loading.io 可產生 CSS、SVG、GIF 的網頁 loading 動畫表徵圖產生器

$
0
0
[css]loading.io 可產生 CSS、SVG、GIF 的網頁 loading 動畫表徵圖產生器

類型:
css



製作網頁如果預期會有較長時間的等待,通常會在等待的時間加入一個 loading 的動畫表徵圖來告知,避免使用者誤以為網頁沒有反應而離開,想要加入一個等待載入的動態表徵圖,可以來試試



loading.io 站台所提供可客製表徵圖動態速度與顏色的動畫表徵圖產生器,不但可產生 GIF 檔外,還可產生出 CSS 或 SVG 檔,還提供範例語法,讓你輕易地運用到網頁裡。





















【loading.io 站台資訊】







站台語言:英文



服務性質:免費



站台網址http://loading.io/

































想在手機查閱更多css資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 關鍵應用











在新視窗檢視

分享到Facebook

[Javascript]不會不專業!只要懂這五題你就是 Pro 級的 JavaScript 工程師

$
0
0
[Javascript]不會不專業!只要懂這五題你就是 Pro 級的 JavaScript 工程師

類型:
Javascript



在新視窗檢視

最近我到 Quora 問:「你怎麼用五個問題判斷一個人是不是 Javascript 工程師?」,以下這幾個問題是我得到的答案。請注意,這個問題只有適用在懂 Javascript 這個知識的人上,並不是要判定他們的一般程式語言知識。所以其實這些問題是很難去想出來的。如果你不能回答以下五個問題也別太擔心說你不是玩 Javascript 的料,只是暗示你還不是一位高手高手高高手,還需要好好加油!



Q1:你能解釋出什麼是 apply 函式嗎?

這只是稍微的陳述一下,懂的人能不用太多的話來回答這個問題,而如果無法,那他們就會跟你講一拖拉庫的東西。只要有寫一個或超過兩個 Library 而不用其它 Library 來建立的 JavaScript 工程師他們都會懂這個問題在問什麼。

附帶一提:很多人會覺得一定得把第一題放進問題中,站在我的立場上我非常明白這是一定要放的!因為假使你不會用 apply ,你將會錯過這程式語言最強大的函式,這也是在暗示還沒獨立建立過一個 Library 的你,當之後你在建立 Library 時你一定要記得最常使用的 apply 函式!

Q2:你能跟我解釋一下什麼是 map 嗎?

對於任何 CompSci 人來說都知道其實 Map 是一個極致好用的功能性撰程式設計觀念, 如果有人不認識這個觀念那就代表?他們缺乏對於資訊工程領域的了解或是是缺乏對於程式語言的了解。此外,這個也在解釋你在跟人談論程式語言時是不是很有 sence !如果真懂 map 問題的人,不仿就再問問有關 reduce 方法。如果你不懂什麼是 map ,這代表?你在功能性撰程式設計程度是零!但千萬別放棄治療,建議你從這快開始你的學習之旅:A dirt simple introduction to higher order functions in JavaScript.



Q3:能解釋什麼是 blind 嗎?

這個其實是個好問題,因為這個已經是一個比?this 更深層的觀念,你可以用這個在很多的面試者上進行基礎訓練,就像是個大 subject。當一個工程是跟你討論這個話題時你對他也會有高度的興趣,如果面試者回答這個問題答得非常好石,不仿你可以再問問看他們 prototype 。

Q4:解釋一下什麼是?closures??

這是一個對於聲稱有相當背景工程師的好問題,但並不代表是有 JavaScript 的背景。Closures 是一個通用撰程式設計的觀念但在 JavaScript 的世界裏卻非常重要。如果他們非常懂什麼是 Closures,他們也大致上有相當足夠的 JavaScript 底子了。

Q5:你可以說說有關你曾經從面對 JavaScript 問題到成功解決的故事嗎?

這個就將會告訴你這個人他有多了解 JavaScript 了,值得留意的是他們應該會開始讚美 Google 的開發工具,但理論上是不會佔用太多的時間。



如果你對於以上這幾個問題還不是非常的駕輕就手,也別氣餒!因為這只是在跟你說,其實程式語言世界裏還有很多的事情是值得你去挖掘的,而且只要你真的有心去學習,相信你一定會學到超多超酷的知識!

(資料來源:Medium;本文作者:Mattias Petter Johansson;圖片來源:sh1mmer,CC Licensed)





想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視





在新視窗檢視





原文站台: TechOrange











在新視窗檢視

分享到Facebook

[Javascript]vTaiwain揪大眾來談分享經濟,Uber與政府協商進入實質討論階段

$
0
0
[Javascript]vTaiwain揪大眾來談分享經濟,Uber與政府協商進入實質討論階段

類型:
Javascript







在新視窗檢視



2009 年成立的 Uber為世界帶來新的行動方式與能源利用概念,在新商業樣式背後,也引起不少爭議。在台灣,政府民間也十分關注共用經濟的適法性與安全隱憂。Uber台灣總經理顧立愷曾多次釋出善意,希望與主管機關共商對策,如今真的有譜了。

行政院虛擬世界法規調適線上顧問會議(VTaiwan.tw)即將在27日,針對Uber等共用經濟業者召開適法性會議,邀請交通部、的士業者與Uber共同出席參與,並且就共用經濟如何在台灣落實一事進行討論。有鑒於去年底交通部、的士業者、Uber三方立場看似沒交集,這次VTaiwan.tw特別公開徵求大眾對於分享經濟的意見,作為民意基礎調查。



經過Uber的統整、公佈,列舉台灣民眾對於Uber與背後所代表的共用經濟樣式有三大共識,包含:

支援共用經濟,並且期待共用經濟為社會帶來的正面效益

法規應隨?科技進步與時並進

安全是最重要的前提

行政院也對於共用經濟業者提出兩大但書,表示對Uber、Airbnb業者持有正面鼓勵態度,但是要求業者配合:

Uber、airbnb等網路平台業者須在台灣設立子公司,依法繳稅

業者必須保證消費者安全

推動VTaiwan.tw的行政院政委蔡玉玲先前曾透過此平台推動閉鎖型公司法,讓新創業者組公司更自由,也曾針對網路霸凌等網路世界議題,提出討論。本次針對共用經濟與相關業者的適法性進行公開討論,看得出政府在推動網路新型態產業的誠意,也代表Uber與政府的協商已經進入實質討論階段,會議將會在8月27日晚間7點,屆時也有線上直播頻道(請點這),讓民眾皆可參與

(資料來源:vTaiwan.twUDN,圖片來源:vTaiwan.tw





想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視





在新視窗檢視





原文站台: TechOrange











在新視窗檢視

分享到Facebook

[Javascript]沒有產品思維的設計都沒路用!UX 設計師必問的產品心法

$
0
0
[Javascript]沒有產品思維的設計都沒路用!UX 設計師必問的產品心法

類型:
Javascript







在新視窗檢視

《TO》導讀:原文來自《Medium》,作者?Nikkel Blaase是專業使用者經驗設計師,目前任職於提供企業社交平台服務的 XING



提到「使用者經驗(User Experience;UX)」,很多人第一聯想到的是簡單、美觀及容易上手的產品介面,但事實上,產品介面只是產品中只有占冰山一角的成敗關鍵。

也因此市面上滿坑滿谷的商品中,其實也只有少數是真正從使用者問題的角度設計。因此,我在這裏要特別提起「產品思維(Product thinking)」這個概念,產品思維意指「站在特定使用者角度出發,從使用者的工作程序、目標與收入等方向來設計產品的功能」。

UX 的核心無法一言以蔽之,但它卻是使用者使用產品的最大原因。例如 Uber 的核心使用者體驗是隨時隨地能輕鬆叫到的士,利用倒數計時顯示的士的抵達時間就是項值得發展的使用者體驗。

功能與產品之間只有單向的依存關係:要有產品,才能發揮功能,這也是設計師需要先從產品事例端開始設計的最大原因。



發現產品會被使用的原因

每個產品都有其核心使用者體驗,這也是為什麼產品會存在的原因,它滿足或解決人們所遭遇的問題,因此產品才有它的價值。如果問題已經不存在,或是產品的使用方式已不再適合解決此項問題時,產品就會失去存在意義,而人們也不會再使用它,於此同時就是產品消失的時候。

產品設計走錯解決方式還可以被修正,但解決一個不存在問題的產品卻是連修改的空間都沒有。



● 因此設計師該如何抓住真正的問題?

我們無法 100% 定義真正的問題為何,但至少透過觀察或直接接觸使用者去降低找錯問題、走錯路的風險。因此,發現問題與協助客戶解決真正的問題才是設計師要專注的方向。

「了解‘他們’需要什麼並不是客戶的工作。」—Steve Jobs



Clay Christensen 教授曾經嘗試改善奶昔的銷售情況,他做過許多不同的嘗試,像是提供更甜或不同口味的奶昔,還有在消費者無察覺的情況下加入杯子的大小,但沒有一項是成功的,直到他開始觀察購買奶昔的消費者。他發現購買奶昔的顧客大多是為了讓早上開車上班的路程不會那麼無聊,奶昔最大好處在於綿密扎實的口感比其它飲料更能填飽肚子,也能維持較久時間不會肚子餓,但消費者卻沒有意識到這點。最後 Christensen 教授決定讓奶昔更濃稠,這也真的加入了奶昔的銷售量。

「愛上發現問題,而不是愛上發現解決方法。」—?Laura Javier





從產品角度切入,建立對的功能給對的使用者

擁有產品思維的設計師,更能順利替產品設計出成功合適的功能。

設計產品的程序中,這幾個問題是最重要的核心:

「[b]為什麼我們要創造出這個產品?」來定義產品解決什麼問題;

誰有這方面的困擾?」來鎖定產品使用的目標族群;

我們該怎麼設計才能解決問題?」則能給設計師足夠的指引設計出合適的新功能。

[/b]

簡而言之,組態正確目標能大幅幫助設計出正中客戶需求的成功功能。

當產品提供的功能能適切解決問題時,產品才有意義,而解決方案則需要正確描述問題怎麼被解決,因此,Problem/solution Fit 定義了產品的核心使用者體驗,根據產品核心 UX 才能發展出強大無可取代的功能。

雖然互動設計(Interaction Design)與視覺設計(Visual Design) 能加入產品的美觀、容易使用,甚至使使用者產生愉悅的使用體驗進而比競爭者突出,但這些特性都不能使產品具有存在意義,這也是為什麼尋求最關鍵的 problem-solution-fit 對於產品的成功與否有最關鍵性的意義。

UX 設計者在尋求產品思維時應該要先定義出下面幾個問題:

我們要解決什麼問題?(使用者需求);

我們為了誰而設計?(目標使用者);

為什麼我們要設計這項產品?(願景);

我們要怎麼做?(規則);

我們想要達到什麼樣的效果?(目標)。

都想過一輪後,再來開始思考我們真正要做出甚麼(功能)。



「設計功能很容易,但設計對的功能給對的使用者卻是一項莫大的挑戰。」

產品思維能讓 UX 設計師去問對的問題,進而設計出對的功能,也更能與股東有更共鳴的溝通方向。產品思維也能使設計者在決定加入新功能之前有可以說不的立基點。

無論是否是產品需要新功能,或是某人有新產品的點子,設計師在畫出草圖之前都必須先問:「這項功能適合用在產品上嗎?」、「這項功能能解決使用者真正的問題嗎?」、「客戶是想要還是需要這個功能?」等,這些事前的問句都能促使產品更有被設計出來的存在價值。

UX設計的下一件大事:產品思維

站在產品的角度去思考,讓設計者能針對對的使用者與對的問題進行最佳功能設計,設計出來的產品才會是使用者真正需要的。而產品思維仰賴於產品管理與 UX 設計之間的關係,藉此才能產生出在市場上最強而有力的產品,也就因此,要說產品思維是 UX 設計的下一件大事也不為過了。

(資料來源:Medium;圖片來源:mollystevens,CC Licensed)





想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視





在新視窗檢視





原文站台: TechOrange











在新視窗檢視

分享到Facebook

[Javascript]分享20款行動開發中很有用的 jQuery 外掛程式

$
0
0
[Javascript]分享20款行動開發中很有用的 jQuery 外掛程式

類型:
Javascript

今天,很顯然每個站台都需要有一個行動最佳化的界面以提高行動使用者的使用體驗。在開發任何行動專案時,要儘可能保持每一種資源尺寸都儘可能的小,以給最終使用者提供一個好的體驗是非常重要的。在這篇文章中我們已經編製了今年新出爐的 jQuery 行動外掛程式清單,在清單中收集了滑塊,旋轉木馬,畫廊,觸摸外掛程式,選單等幫助你創建響應式的,美麗和引人注目的 Web 應用程式。

?

1. jQuery TouchSwipe Carousel



在新視窗檢視



jQuery touchSwipe Carousel/Slider plugin is required for detecting swipe events on on touch input devices and falling back to mouse ‘drags’ on the desktop.

2. Slider Pro



在新視窗檢視



Slider Pro is a modular, responsive and touch-enabled jQuery slider plugin that enables you to create elegant and professionally looking sliders.

3. Item Slide



在新視窗檢視



ItemSlide.js is a jQuery plugin for a touch enabled carousel that works both on desktop and mobile.

4. Editable Listview



在新視窗檢視



Editable Listview is a jQuery Mobile Listview Widget that features an intuitive UI to allow insertion of new list items and removal of existing ones.

5. Owl Carousel 2



在新視窗檢視



OWL Carousel 2 is a fully responsive and touch friendly carousel for jQuery/Zepto. It comes with number of features such as infinity loop, handle 1000’s items on mobile devices, smart speed, callback events, item margin, anchors navigations and many more.

6. Browserswipe.js



在新視窗檢視



BrowserSwipe.js is a simple tool to allow for trackpad swipeevents when you have disabled scrolling on your site.

7. iScroll



在新視窗檢視



iScroll is a high performance, small footprint, dependency free, multi-platform javascript scroller. iScroll can handle any element that needs to be moved with user interaction. It adds scrolling, zooming, panning, infinite scrolling, parallax scrolling, carousels to your projects and manages to do that in just 4kb. Give it a broom and it will also clean up your office.

8. Shifter



在新視窗檢視



Shifter is a jQuery plugin for simple slide-out mobile navigation. Shifter works by checking for target elements in the DOM and binding events to them.

9. TouchSwipe



在新視窗檢視



TouchSwipe is a jQuery plugin to be used with jQuery on touch input devices such as iPad, iPhone etc.



10. Glide.js



在新視窗檢視



Glide is responsive and touch-friendly jQuery slider. Based on CSS3 transitions with fallback to older broswers. It’s simple, lightweight and fast.

Also it has features such as; Swipe event, Arrows and bullets navigation, Keyboard navigation, Autoplay, Pause on hover etc…

11. R.T.P. Slider



在新視窗檢視



Its an extremly versatile and flexible slider. Strong support for fluid / responsive designs, mobile browsers and touch devices. Has nearly every feature that you can find in other sliders on the web.

12. Menutron



在新視窗檢視



Menutron transforms your navigation menus from a list to a select menu when resizing your browser. On mobile devices, the select menu pulls up a native control, making it easier to pick an item.

13. Touch Image Gallery



在新視窗檢視



Touch Image Gallery is a simple image gallery that caters to mobile and desktop browsers alike, by being touch/swipe friendly, in addition to the traditional way of navigating.

14. Swiper



在新視窗檢視



Swiper – is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. Designed mostly for iOS, but also works great on latest Android, Windows Phone 8 and modern Desktop browsers. Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity.

15. mMenu



在新視窗檢視



mmenu is a jQuery plugin for creating slick, app look-alike sliding menus for you mobile website or responsive website.

16. Flip



在新視窗檢視



Flip is jQuery/jQuery mobile plugin to give Flipboard app like effect. Flip effect uses css 3d transform. Flip effect currently works on WebKit browsers (e.g. Chrome, Safari, including iOS mobile safari) or Firefox 11. It still works with other browsers but the 「slide」 effect will be selected forecely.

17. Dragendjs



在新視窗檢視



Dragend JS is a swipe plugin for jQuery. It’s open source and uses hammer.js for observing multi-touch gestures.

18. jQuery Navobile



在新視窗檢視



jQuery Navobile is a jQuery plugin that makes mobile navigation easy. Navobile uses CSS to apply CSS3 translations, Mobile device detection and fixing the position of nav.

19. Responsive Nav



在新視窗檢視



Responsive Nav is a tiny JavaScript plugin which helps you to create a toggled navigation for small screens. It uses touch events and CSS3 transitions for the best possible performance. It also contains a 「clever」 workaround that makes it possible to transition from height: 0 to height: auto, which isn’t normally possible with CSS3 transitions.

20. SlideToucher



在新視窗檢視



SlideToucher is a touch enabled jQuery plugin for content swiping. Supports vertical and horizontal swipes.

想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 夢想天空

歡迎任何形式的轉載,但請務必註明出處。











在新視窗檢視

分享到Facebook

[css]CSS 如何讓 整個頁面秀出的高度:100%

$
0
0
[css]CSS 如何讓 整個頁面秀出的高度:100%

類型:
css

網頁內容假設只有一行(或不定行數,達不到頁面高度),但是想要組態整頁的背景色彩,就會需要組態高度(height:800px 之類的),要如何組態才能整個可視範圍都不會有問題呢?



CSS 如何讓 整個頁面秀出的高度:100%

將 height:100% 組態在 ,只有內容部分的背景色會換掉,整頁的背景還是白色的。

想要完美解決此問題,可以將 height 設在 上,範例如下:

html {

height: 100%;

}

body {

min-height: 100%;

}

參考自:css - height: 100% or min-height: 100% for html and body elements?

相關網頁

貓箱: [CSS冷知識 #2] 最被人忽略的家伙: html和body

Using 100% Height in CSS

想在手機查閱更多css資訊?免費下載【香港矽谷】Android App

在新視窗檢視







[b]原文站台:
Tsung Hao

This work, unless otherwise expressly stated, is licensed under a

Creative Commons Attribution-ShareAlike 3.0 Unported License.











在新視窗檢視

分享到Facebook


[Javascript]推倒站台追蹤的時代已經到來?

$
0
0
[Javascript]推倒站台追蹤的時代已經到來?

類型:
Javascript



在新視窗檢視

編者按 : 賈斯汀·克勞斯(Justin Krause)是 Asana 的商業智慧和網頁開發團隊的負責人。

我們正在見證網路發展中的一個分水嶺——在蘋果推出內容攔截器後,我們看待和理解我們網上的使用者的方式將發生深刻的改變。

這看上去並沒有多麼重要。雖然廣告攔截器在桌面瀏覽器上存在了很多年,但類似谷歌分析的產品仍然成為了測量和監測站台的行業標準。但這些都即將改變——個人產品和分類將因為行動版 Safari 上的一個小小的技術轉變而受到很大影響,有自己的站台的機構也將必須適應這一轉變,否則就會在競爭中處於劣勢。

為什麼改變會在現在發生呢?簡單地說,這是因為站台追蹤的Legacy系統已經無法工作了。由於現有的廣告攔截器,它已經不能準確地擷取使用者在站台上的活動了,行動端內容攔截器的加入會進一步影響它收集到的資料的準確性。它無法在單頁面站台應用程式上工作,是因為它是基於頁面加載而組建的。出於相同的原因,它更無法擷取行動應用上的活動,因為行動應用中 90%的動作都不是頁面加載,而且行動應用的多堆堆疊資料通常整合化較低。不過,Legacy系統最大的缺陷是把資料藏起來,即把關於你的客戶的關鍵資料放在一個無法存取的地方,只有使用費用高昂且脆弱的 API 整合才能整合資料及進行自動作業。

行動內容攔截器是對Legacy系統的致命一擊。相比桌面廣告攔截器,它對使用者更有吸引力——節省網路頻寬和更快的頁面加載對行動端非常重要。防止收集隱私訊息只不過是一個附帶的功能。當用智慧手機使用網路的趨勢已經無法阻擋時,如果很難收集 iOS 使用者的訊息——這些使用者在網上花的錢和時間最多,將影響資料的準確性,讓資料變得不可靠。

這些變化不是一蹴而就的。但是,安卓也會步 iOS 的後塵,採用類似的技術,而且,當使用者熟悉這種技術後,他們將更有可能使用桌面攔截器。甚至連瀏覽器也有可能內建這種技術。

受影響的 不只是發表者

這種技術將深刻影響數位廣告和歸因,進而會影響發表者和其它依靠廣告盈利的公司。但這只有只有是開始。

讓我們檢查一下任何電商或 B2B 站台,看看它們所有的 cookie 和請求(通常是通過谷歌追蹤程式碼管理器發出的)。這些站台(以及各種追蹤程式碼管理器),連同所有與它們合作的創意機構和市場銷售人員,將受到巨大影響。而那些在這種平台上進行銷售的公司將受到更大的影響——那麼,電商公司將如何可靠地重新定位使用者呢?

在行動端減少網路頻寬佔用以及清理大量繁瑣的東西是值得追求的目標。

想觸及那些最精通科技的使用者將變得更加困難;對廣告網路的逆向選擇實際上會越來越頻繁。衰落的歸因樣式將降低對投資回報率的信心,讓廣告專案——甚至是任何銷售專案都更難有把握地進行量化,也更缺乏具體的合理性。

除數位廣告和歸因之外,Optimizely 之類的前端的站台測試訊框架也將受到影響,這是因為 Optimizely 是加載測試偏差和以非同步方式傳送資料的 JavaScript 片段。如果你的 A/B 測試只考慮了較少使用行動端、不那麼精通科技的人群,結果會怎樣?測試結果仍然有效、可作業嗎?

從最基本的層面看,理解網上的使用者行為將變得更加困難。試圖將谷歌分析中的資料與內部系統中的資料相結合的分析人員已經知道兩者間幾乎總存在明顯的分歧,而第三方系統扣留的資料越多,分歧就越嚴重。沒有合適的資料對很多產品和銷售團隊來說就像雙目失明一樣——他們不知道在他們的使用者那裡究竟發生了什麼,也無法對其採取明智的應對措施。

接下來該怎麼做?額外負擔將會轉移

站台追蹤的未來很好理解,但要承認它卻很難;我們不能再依賴第三方 cookie 和 JavaScript 片段了。額外負擔從使用者的瀏覽器上轉移回了我們自己的站台伺服器上,而且這個轉移會讓站台的堆堆疊變得更複雜。但是,這個轉移中卻暗含?一個絕佳的機會,能讓我們統一我們的資料,改進我們理解使用者的方式;那些最有遠見的團隊將從轉移的努力中收穫成果。

新的內容攔截器將時常阻止使用者的瀏覽器向谷歌或 Optimizely 傳送請求,但不可能阻止傳送給來源的請求(正如我們所知道的,如果阻止,則會破壞任何類似 AJAX 的東西,並會破壞網頁)。因此,合理的解決方案是,依賴向第三方域名傳送非同步請求的解決方案應該發表服務端庫。你將把 PHP 或 Ruby 庫連同你的 JavaScript 片段一起粘貼到你的伺服器上;JavaScript 會把請求發回你自己的伺服器上,然後你的伺服器會以 REST 形式與這些第三方服務進行通信。

就像行動應用的生態系統產生了更多工作量以及混亂和變化一樣,站台分析上的轉變不會那麼容易。



但這麼做有一些根本性的問題。第一,只有精通技術的開發者能有把握地調整伺服器端程式碼。對大多數站台管理者而言,他們會依賴他們的主電腦或 WordPress 外掛程式來替他們完成這項工作。最終,在部署這些解決方案時,這將產生更多的衝突和延遲,降低它們的吸引力。精通技術的開發者會產生這樣的疑問:「如果我已經在部署客戶端和服務端的程式碼,為什麼還要使用第三方系統?」開源的分析解決方案將得到推動,而且更多機構將選擇把更多分析和訊息工作交給其內部完成。

另一個問題是可延伸性。現在大部分的網頁屬性都被最佳化為提供頁面,而不是處理分析資料流。新的服務端解決方案必須簡單、可靠、有內聚力。如果我們不考慮效能就加入大量請求和像素,就像現在的情況一樣,那麼我們最終將衝垮我們自己的伺服器,加入成本和潛在的延遲。成功的解決方案會把前端資料與服務端處理器在一個單一、精心設計的管道上結合起來,然後把資料從伺服器匯出到資料倉庫(和第三方服務)中,可以是批次匯出。

在這種轉變中,很多機構將不會採取行動,並將依靠越來越糟糕的有缺陷的資料。資料是無濟於事的,而偏見會導致糟糕的訊息和決策。對開發人員、分析人員和銷售人員來說,這將是一段混亂的時期,而複雜的團隊中則可能產生分歧,出現一部分人採用新工具、另一部分人依然固守舊工具的情況。

是時候進行革新了

雖然混亂,但如果能超越內容攔截的問題,解決與站台追蹤有關的更深層次的問題——把前端資料與多堆堆疊內部資料相結合,不以頁面加載為中心、而是以網頁和應用上的事件和session衡量站台使用體驗,並為更多機構實作第一方、特有的資料,那麼這一轉變將開啟重要的市場機遇,將現有的參與者重新洗牌。

公司在銷售和產品上的投資需要行之有效的解決方案,新工具將演化以填補這一空白——而且,由於新工具越來越複雜,具有深層次測量的專業技能的新開發人員和分析人員將湧現出來,並會非常吃香。

理想的解決方案是什麼樣的?鑒於前端和和後端的堆堆疊都多種多樣,系統需要變得非常靈活。對於情況如何發展,第三方錯誤追蹤指出了一個令人興奮的方向。Bugsnag 之類的服務幾乎每種語言都有庫,這些庫能在伺服器層執行,並能以 REST 方式與流資料就錯誤和例外進行互動。分析也可以以同樣的方式進行。

不過,希望機構能利用這一機遇收回他們對其資料的所有權,並且開源工具能得到推動,幫助流資料進入像 Redshift 這樣的第一方資料倉庫,與內部資料結合,被更靈活地使用。整個社區應該聯合起來,為 Web 2.0 應用程式規定一種合理的通用樣式。Looker 之類的第三方 BI 服務應該建立在這種專有資料之上,而不是像谷歌分析現在所做的那樣把這些資料藏在無法存取的地方。

如果這些都能實作,我們就是用一個簡單但殘缺的站台分析系統換來了一個能夠帶來更深刻的洞見的更加豐富、更加複雜的系統。這需要大量的投資和更多的專業技能,但回報將是更好的訊息,以及最終更好的產品、更好的使用者體驗和更出色的商業成果。

最終, 這 將 對 使用者 非常有益

與某些人聲稱的內容攔截器是蘋果促使更多人使用本地新聞閱讀器的秘密詭計正相反,這一改變至少是對使用者非常有益的。在行動端減少網路頻寬佔用以及清理大量繁瑣的東西是值得追求的目標。如上所述,這些頻寬中的一部分無疑將被轉移到來源上,但總體而言,Safari 行動使用者的體驗應該會更好(而且最終當我們把整個網路都清理乾淨後,其它所有使用者的體驗都會更好)。

有自己的站台的機構將必須適應這一轉變,否則就會在競爭中處於劣勢。

這一改變還有隱私上的考慮——移除第三方 cookie 將能減少那些與我們已經從購物車裡刪除的商品有關、在網上到哪都能見到的令人尷尬的廣告。但總體而言,對網上隱私的影響可能有限,因為這些公司有別的方法分享資料——其中最重要的就是只有通過分享信件清單分享資料。通過定製受眾定位,Facebook 已經使這一方法成了主流。通用 ID 和 IP 和解將被更廣泛地使用,對銷售人員和內容平台將變得更為重要。

這對網路也非常有益

通過使我們轉換為使用行動端、行動應用,以及從 Safari 開始對我們如何測量、追蹤、定位的現狀發起挑戰,蘋果迫使我們對網路進行反思。就像行動應用的生態系統產生了更多工作量以及混亂和變化一樣,站台分析上的轉變不會那麼容易。但它也會產生大量的機會和新的贏家。它會為在這個生態系統中更好、更靈活地分析和理解使用者和產品的機制敞開大門。它將促使我們變得更好——更整合、意圖更清晰、更睿智。

是時候了。

題圖來自:JAMBRO/SHUTTERSTOCK

The Web-Tracking Tipping Point

想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: TechCrunch 中?











在新視窗檢視

分享到Facebook

[Javascript]高雄接棒推出預算視覺化!最有錢的教育局預算能讓你享受 4 分鐘太空旅行

$
0
0
[Javascript]高雄接棒推出預算視覺化!最有錢的教育局預算能讓你享受 4 分鐘太空旅行

類型:
Javascript



在新視窗檢視



之前「北市預算視覺化」一出驚豔全台,站台元老開發者之一、JavaScript.tw 的創辦人 Tonyq 昨天再發第二彈「高雄市 2016 預算視覺化」,使用跟台北市同樣的模板,讓大家可以一眼看出各種預算的佔比 >>> 站台傳送門

這個 po 文一出,再度引起討論,除了北市、高雄,許多來自台灣各地的網友也紛紛表示,希望看看自家縣市預算書視覺化後長相,不過在討論串中,大家也發現目前地方政府公開的預算書資料多是 PDF 等資料檔,雖然適合瀏覽器上閱讀,卻不適合機器閱讀,從而將資訊擷取再製為其它呈現方式。



在新視窗檢視



從這邊也可以看出來,即便這幾年政府勤推廣「開放資料」,整體環境還是進步緩慢,需要持續 Push 地方政府跟上。



回到高雄市的預算視覺化圖表,此圖可以一次看出哪個市府單位享用最多預算,以及每個預算的實際金額、佔比比例。例如教育局 2016 年的全額預算就佔了 421.91 億台幣。比照上次我們分析台北市教育局預算,這次我們也來算高雄市預算換算成民眾有感的單位後,各為多少:

421.91 億台幣

16.87 億份營養午餐

13 萬人的年薪

4 萬分鐘太空旅遊

6.2 億碗鬍鬚張魯肉飯

8.43 億個便當

14.06 億杯珍奶

7.03 億份雞排加珍奶

0.021 座冰島

162 萬支iPhone5

54.7 次北市重陽敬老禮金



看完後是不是更有感呢?

Tonyq 也在他的臉書上呼籲「歡迎其它縣市跟進,只要公開 excel 版的預算書,我直接處理到好,而且原始碼都完全公開!

不過相較上次台北市預算上線後,迅速得到許多網路社群迴響,這次顯得平靜的多(預估可能是花媽沒有分享的關係),但好東西必須與好朋友分享,高雄鄉親快一起來推廣下~

(參考資料:預算視覺化站台







在新視窗檢視



TO 給你新鮮事!





想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視





在新視窗檢視





原文站台: TechOrange











在新視窗檢視

分享到Facebook

[Javascript]程式語言那麼多,為什麼 Google 偏愛 JS?

$
0
0
[Javascript]程式語言那麼多,為什麼 Google 偏愛 JS?

類型:
Javascript



在新視窗檢視

《TO》導讀:本文以第一人稱撰寫,原文來自《雷鋒網》專欄作家威靈頓



我從事軟體開發的相關工作已經有 15 年了。目前的工作主要集中於 Web 和行動應用方面。在這麼多年裡,我對 JavaScript 的態度可能比較能代表一大群工程師的看法:從一開始對 JS 的不屑一顧到最後驚奇它的表現和潛力。

曾經的 JavaScript 像玩具一樣

在 2000 年那會兒,我也從事過一段 web 應用開發。開發平台是 Windows,主要使用 Asp。那個時候的 JavaScript 主要用途是檢驗頁面輸入資料是否正確。錯誤的時候,會彈出個警告窗口。當時整個 Web 開發、應用環境,實際上都是十分簡陋的。Web 開發者看待 JavaScript 估計就如同玩具一般。因為它能做的真的是十分有限。如果你能找到 2000 年時候的有關 JS 的 IT 圖書,內容多半大同小異,充斥?告訴你怎麼用 JS 做個什麼跑馬燈、怎麼製造煩死人的彈窗,如此這般。這些內容也進一步抑制了大家對 js 的期望。

後來,我轉向 C/C++,因為「真正的工程師使用 C++」。這一轉身就是很多年,我對 JS 的印象,也就止於那點功用了。

這幾年,因為種種變化,我又轉回來了。這個時候再回顧 Web 開發,已經可以用天翻地覆來形容。相關的概念層出不窮,發展出的各種技術、工具,五花八門,讓人眼花繚亂。而且更要命的是,這些知識除了基礎的幾類,大部分都十分的不穩定,並且在這種不穩定的情況下迅速發展,以瘋狂的速度淘汰更新。今天還在用的工具,可能明天就有更新、更好的了。

為什麼會這樣?因為社會需要的熱點在這裏「需求推動」這個社會的生活、生產,逐漸轉移到了站台上、行動端,這就是這些領域快速發展進步的主因。

這個時候再回頭看當年的玩具語言:JavaScript,也早已今非昔比。

它已經成長為網路時代不可或缺的前端頂樑柱。現在已經不可想像沒有 JS 的站台是否還能正常執行。不只有如此,它的觸角居然還深入到了後端服務,Node.js 方興未艾。一些新一代的產品,如 MongoDB,甚至內建了 JS 語言支援,作為應用互動的工具。

這是很多人都無法想像到的場景,包括我在內。對此,我不得不回過頭看一下,思考 JavaScript 為什麼會擁有現在的地位。

在新視窗檢視

冥冥之中註定的語言

JavaScript 的總體設計有亮點,但問題也很多。它是作者在 10 天內設計出來的。因為時間倉促,很多細節未及推敲、深思熟慮就推上了市場,以至於充斥了漏洞、糟粕。Douglas Crockford 在《JavaScript 語言精粹》(英文名《JavaScript:The Good Parts》)裏面提到:「Javascript 中糟粕的比重超出了預期。」(註:Douglas Crockford,JavaScript 開發社區最知名的權威,是 JSON 、JSLint、JSMin 和 ADSafe 之父,著有《JavaScript: The Good Parts》。)

連 Brendan Eich(JavaScript 的創造者)自己都說:「與其說我愛它,不如說我恨它。它是 C 語言和 Self 語言一夜情的產物。十八世紀英國文學家約翰遜博士說得好:‘它的優秀之處並非原創,它的原創之處並不優秀。’(the part that is good is not original, and the part that is original is not good.)」

但是,似乎是在冥冥之中註定,JavaScript 在一開始就抓到了未來程式開發語言的方向:函式式程式開發。

「JavaScript 設計的最出色的就是它的函式的實作。它近乎接近於完美。…… 函式在 javascript 中是頂級對象,它是第一個成為主流的 Lambada 語言,它是披? C 外衣的 Lisp。?」

—— Douglas Crockford





讀過《駭客與畫家:矽谷創業之父 Paul Graham 文集》(主要介紹駭客即優秀工程師的愛好和動機,討論駭客成長、駭客對世界的貢獻以及程式語言和駭客工作方法等話題)的人,都會記得作者的預言:Lisp 才是語言的終極趨向。(註:LISP 源自清單處理 LISt Processing 的縮寫,由來自麻省理工學院的人工智慧研究先驅 John McCarthy 在 1958 年基於λ演算所創造,是一種通用進階電腦程式語言,長期以來壟斷人工智慧領域的應用,也是第一個函式式程式設計語言。)

在新視窗檢視

矽谷創業之父 Paul Graham

函式式程式開發的流行之勢

函式式程式開發並不是新發明,它的歷史甚至比一些主流語言還早。因為效能和實作等問題,一直飽受冷落。而如今,電腦的硬體效能大大提高,改變了很多事物。原本不夠經濟的,變得可行;原本不夠好的,在新條件下變得不錯。鑑於函式式程式開發的優良特性和強大能力,它的流行其實並不意外。「程序化 -> 針對對象 -> 函式式」的應用開發範型發展趨勢是可以預見的。

這些年,指令碼/直譯式程式語言大行其道,使用 Python/Ruby/PHP 代替原本靜態語言開發的應用比比皆是,傳統的 C/C++ 應用開始逐漸縮減到桌面應用、高效能伺服器應用、驅動、系統介面等領域。因為大部分的應用的效能已經不是問題,CPU 相對過剩,I/O、網速才是瓶頸,因為人們總是更重視開發效率。而 JavaScript 因為一開始就有這樣的設計能力,把握住了技術的先機,緊隨了這股浪潮。

當然,運氣也不可或缺。世界上的程式開發語言至少也有個幾百種。一種語言想獲得認可並得到流行,光有好的技術設計是不夠的,它還需要位置乃至契機

程式開發語言要找到適合自己應用的領域,深深的紮下根來,並以此為基地,向外伸展。這個時間,有時候需要 20 年以上。比如 PHP 專注於 Web 開發,C 對於系統開發不可缺少,Python 在科學計算、網路程式開發有諸多應用。

在 2004 年,JavaScript 就得到了一次契機:Google 推出了使用 Ajax 技術的Gmail信箱,那堪比桌面的無刷體驗,引發了業界轟動和模仿浪潮。而 Ajax 的作業核心就是 JavaScript。此後,JS 在瀏覽器中的地位變得十分穩固,已經成了事實標準。在 2009 年,基於 Google 強大 V8 JS 引擎的 Node.js 出現了,它意味? JS 向其它領域開始進軍,發揮它的語言威力。微軟當年也宣稱在伺服器端可以內建支援 JavaScript,不過這完全不可比。

網路時代的需要,JavaScript 捷足先登。瀏覽器一開始就繫結了 JS 指令碼/直譯式程式技術,這讓它取得先發優勢。當年的瀏覽器大戰後,微軟的瀏覽器佔據統治地位,IE 裏面是可以編寫 vbscript 的,但微軟在網路時代的停滯不前,讓他遺失了很多機會。

在新視窗檢視

由於網路帶來的低成本訊息互動以及更低的開發、部署成本,越來越??多的產品基於瀏覽器做為界面。JS 在應用開發上當仁不讓。業界出於需求,制定了幾版相關的技術標準,比如 HTML、CSS、JS 便都有了自己的位置和開發標準規範,它們相互緊密協作,融為一體。Web 應用開始侵蝕以往的桌面應用。

時間證明了 JavaScript 的價值,它並沒有被淹沒在歷史的發展裡。只要應用領域有足夠的渴求,原本有很多不足的東西也會獲得強大的推動力,把它改造的更好。

Brendan Eich 在今年年 5 月份做了一個 PPT,回顧了 JS 語言的創造程序和這 20 年的發展、前景。(觀看地址:http://brendaneich.github.io/ModernWeb.tw-2015/?;按右鍵到下一頁)

那麼我也藉用他的話來結尾吧:

[b]My advice:always bet on JS.?

[/b]

在新視窗檢視

(本文轉載自合作夥伴《雷鋒網》;圖片來源:ruiwen,CC Licensed;未經授權,不得轉載)







在新視窗檢視



TO 給你新鮮事!





想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視





在新視窗檢視





原文站台: TechOrange











在新視窗檢視

分享到Facebook

[Javascript]程式開發語言那麼多,為什麼Google獨愛JS?

$
0
0
[Javascript]程式開發語言那麼多,為什麼Google獨愛JS?

類型:
Javascript

我從事軟體開發的相關工作已經有15年了。目前的工作主要集中於Web和行動應用方面。在這麼多年裡,我對JavaScript的態度可能比較能代表一大群程式員的看法:從一開始對js的不屑一顧到最後驚奇它的表現和潛力。

曾經的JavaScript像玩具一樣

在2000年那會兒,我也從事過一段web應用開發。開發平台是Windows,主要使用Asp。那個時候的JavaScript主要用途是檢驗頁面輸入資料是否正確。錯誤的時候,會彈出個警告窗口。當時整個Web開發、應用環境,實際上都是十分簡陋的。Web開發者看待JavaScript估計就如同玩具一般。因為它能做的真的是十分有限。如果你能找到2000年時候的有關js的IT圖書,內容多半大同小異,充斥?告訴你怎麼用js做個什麼跑馬燈,怎麼製造煩死人的彈窗,如此這般。這些內容也進一步抑制了大家對js的期望。

後來,我轉向C/C++,因為「真正的程式員使用C++」。這一轉身就是很多年,我對js的印象,也就止於那點功用了。

這幾年,因為種種變化,我又轉回來了。這個時候再回顧Web開發,已經可以用天翻地覆來形容。相關的概念層出不窮,發展出的各種技術、工具,五花八門,讓人眼花繚亂。而且更要命的是,這些知識除了基礎的幾類,大部分都十分的不穩定,並且在這種不穩定的情況下迅速發展,以瘋狂的速度淘汰更新。今天還在用的工具,可能明天就有更新、更好的了。

為什麼會這樣?因為社會需要的熱點在這裡:需求推動。這個社會的生活、生產,逐漸轉移到了站台上、行動端,這就是這些領域快速發展進步的主因。

這個時候再回頭看當年的玩具語言:JavaScript,也早已今非昔比。

它已經成長為網路時代不可或缺的前端頂樑柱。現在已經不可想象沒有js的站台是否還能正常執行。不只有如此,它的觸角居然還深入到了後端服務,Node.js方興未艾。一些新一代的產品,如MongoDB,甚至內建了js語言支援,作為應用互動的工具。

這是很多人都無法想象到的場景,包括我在內。對此,我不得不回過頭看一下,思考JavaScript為什麼會擁有現在的地位。

在新視窗檢視

冥冥之中註定的語言

JavaScript的總體設計有亮點,但問題也很多。它是作者在10天內設計出來的。因為時間倉促,很多細節未及推敲、深思熟慮就推上了市場,以至於充斥了漏洞、糟粕。Douglas Crockford在《JavaScript語言精粹》(英文名《JavaScript:The Good Parts》)裡面提到:「Javascript中糟粕的比重超出了預期。」(註:Douglas?Crockford,JavaScript開發社區最知名的權威,是JSON、JSLint、JSMin和ADSafe之父,著有《JavaScript: The Good Parts》。)

連Brendan Eich(JavaScript的創造者)自己都說:"與其說我愛它,不如說我恨它。它是C語言和Self語言一夜情的產物。十八世紀英國文學家約翰遜博士說得好:"它的優秀之處並非原創,它的原創之處並不優秀。"(the part that is good is not original, and the part that is original is not good.)"

但是,似乎是在冥冥之中註定,JavaScript在一開始就抓到了未來程式開發語言的方向:函式式程式開發。

「JavaScript設計的最出色的就是它的函式的實作。它近乎接近於完美。...... 函式在javascript中是頂級對象,它是第一個成為主流的Lambada語言,它是披?C外衣的Lisp。」

——?Douglas Crockford



讀過《駭客與畫家:矽谷創業之父Paul Graham文集》(主要介紹駭客即優秀程式員的愛好和動機,討論駭客成長、駭客對世界的貢獻以及程式開發語言和駭客工作方法等話題)的人,都會記得作者的預言:Lisp才是語言的終極趨向。(註:LISP源自清單處理LISt Processing的縮寫,由來自麻省理工學院的人工智慧研究先驅John McCarthy在1958年基於λ演算所創造,是一種通用進階電腦程式語言,長期以來壟斷人工智慧領域的應用,也是第一個函式式程式設計語言。)

在新視窗檢視

矽谷創業之父Paul Graham

函式式程式開發的流行之勢

函式式程式開發並不是新發明,它的歷史甚至比一些主流語言還早。因為效能和實作等問題,一直飽受冷落。而如今,電腦的硬體效能大大提高,改變了很多事物。原本不夠經濟的,變得可行;原本不夠好的,在新條件下變得不錯。鑒於函式式程式開發的優良特性和強大能力,它的流行其實並不意外。「程序化->針對對象->函式式」的應用開發范型發展趨勢是可以預見的。

這些年,指令碼/直譯式程式語言大行其道,使用Python/Ruby/PHP代替原本靜態語言開發的應用比比皆是,傳統的C/C++應用開始逐漸縮減到桌面應用、高效能伺服器應用、驅動、系統介面等領域。因為大部分的應用的效能已經不是問題,CPU相對過剩,I/O、網速才是瓶頸,因為人們總是更重視開發效率。而JavaScript因為一開始就有這樣的設計能力,把握住了技術的先機,緊隨了這股浪潮。

當然,運氣也不可或缺。世界上的程式開發語言至少也有個幾百種。一種語言想獲得認可並得到流行,光有好的技術設計是不夠的,它還需要位置乃至契機

程式開發語言要找到適合自己應用的領域,深深的紮下根來,並以此為基地,向外伸展。這個時間,有時候需要20年以上。比如PHP專註於Web開發,C對於系統開發不可缺少,Python在科學計算、網路程式開發有諸多應用。

在2004年,JavaScript就得到了一次契機:Google推出了使用Ajax技術的Gmail郵箱,那堪比桌面的無刷體驗,引發了業界轟動和模仿浪潮。而Ajax的作業核心就是JavaScript。此後,js在瀏覽器中的地位變得十分穩固,已經成了事實標準。在2009年,基於Google強大V8 js引擎的Node.js出現了,它意味?js向其它領域開始進軍,發揮它的語言威力。微軟當年也宣稱在伺服器端可以內建支援jscript,不過這完全不可比。

網路時代的需要,JavaScript捷足先登。瀏覽器一開始就繫結了js指令碼/直譯式程式技術,這讓它取得先發優勢。當年的瀏覽器大戰後,微軟的瀏覽器佔據統治地位,IE裡面是可以編寫vbscript的,但微軟在網路時代的停滯不前,讓他遺失了很多機會。

在新視窗檢視

由於網路帶來的低成本訊息互動以及更低的開發、部署成本,越來越多的產品基於瀏覽器做為界面。js在應用開發上當仁不讓。業界出於需求,制定了幾版相關的技術標準,比如HTML、CSS、JS便都有了自己的位置和開發標準規範,它們相互緊密協作,融為一體。Web應用開始侵蝕以往的桌面應用。

時間證明了JavaScript的價值,它並沒有被淹沒在歷史的發展里。只要應用領域有足夠的渴求,原本有很多不足的東西也會獲得強大的推動力,把它改造的更好。

Brendan Eich在今年年5月份做了一個PPT,回顧了js語言的創造程序和這20年的發展、前景。(觀看地址:http://brendaneich.github.io/ModernWeb.tw-2015/?)

那麼我也借用他的話來結尾吧:

My advice:always bet on JS.?



在新視窗檢視

想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 雷鋒網

【本文著作權歸雷鋒網所有,未經許可不得轉載。文章只有代表作者看法,如有不同觀點,歡迎新增雷鋒網微信公眾號(微訊號:leiphone-sz)進行交流。 】











在新視窗檢視

分享到Facebook

[Javascript]RePhone:讓一切事物都成為手機

$
0
0
[Javascript]RePhone:讓一切事物都成為手機

類型:
Javascript



在新視窗檢視

做台手機不是什麼難事兒。到礦廠里采些礦出來,提煉出各種金屬,然後加入其它礦廠里生產的一些零配件。接?拿到 FCC 許可,生產鋰離子電池。最後,你需要編寫一個貪吃蛇遊戲。如果你沒法走完以上步驟的話,嘗試下 RePhone 吧。

這個專案其實就是一個帶 SIM 卡槽的小型電路板,還有一塊可選螢幕幕。它還支援藍牙。你可以購買 49 美元的 Kit Create,這個看起來像塊手錶的套裝包含了一個小外殼以及所有的模組。等於不到 50 美元就能獲得一台無鎖的小手機。

這顯然是塊實驗性的電路板,不過我一周前試玩了一下,看起來執行得相當不錯。它還包含 Arduino IDE、Lua 和 Javascript 的程式開發庫,你可以讓這款手機連上網路甚至是 IFTTT。



這個小專案非常有趣,而且執行得很好。雖然你沒法獲得採礦煉金、製造電線的經驗,也沒法學到芯片製造,但 RePhone 可以讓你簡單快速地組裝出一台手機,對於我們這些沒有採礦權的業務愛好者來說這再好不過了。

在新視窗檢視

翻譯:顧秋實



RePhone Lets You Turn Anything Into A Phone

想在Android 手機欣賞更多有趣圖集?免費下載 GigCasa App

在新視窗檢視







原文站台: TechCrunch 中?











在新視窗檢視

分享到Facebook

[Javascript]自製指紋鎖,實在太帥辣!

$
0
0
[Javascript]自製指紋鎖,實在太帥辣!

類型:
Javascript



在新視窗檢視

現在很多公司都採用了指紋考勤,然而你自己也可以在家裡製造一個指紋鎖了!在指紋辨識的情況下,螺線管栓塞就會彈出,門也就開啟了。

我們需要的芯片是ARM?Cortex?M3,用於控制光學感知器和指紋辨識系統。指紋存儲在模組里,採用非同步串口方式辨識使用者請求。而螺線管的程式,我們打算用Kinoma?Create開發。

準備材料如下:

下載Kinoma?Studio(Kinoma?Studio是適用於Mac、Windows和Linux的整合開發平台)。

電晶體指紋掃描儀

5V大小的螺線管

電路板,用於控制螺線管

麵包板

步驟一:接線



在新視窗檢視



把螺線管和開發好的Kinoma電路板連線,將指紋掃描儀和背面的RX?介面連線。

前端的兩個介面,一個設為+5V,一個接在51?pin上,作為數位輸出。(如圖所示)

步驟二:麵包板組裝



在新視窗檢視



螺旋管是用於開關門的,所以需要額外的兩個電子器件,分別是電晶體和二極體。前者接上5V電源,用於控制螺旋管的開關。後者用於保護電路。

步驟三:預覽界面





在新視窗檢視



開啟KinomaJS的申請界面,會看到指紋授權的內容,分別有「登記」、「授權」以及「清除」的選項。

在指紋儀上登記了訊息後,會存儲在系統內並顯示在螢幕幕上;授權鍵指的是確認使用者的訊息能夠開啟門鎖,未經授權的指紋即使登記了,也無法成功開鎖。「清除」就很簡單了,指紋訊息將從系統中抹去。

步驟四:程式碼

完整的程式碼可參考GitHub上的內容,具體包括程式碼,元件及BLL。

步驟五:指紋處理



在新視窗檢視



掃描器模組捕獲需要存儲的指紋訊息和映像;應用程式則通過調用函式控制GT511C3掃描儀。BLL則經由Kinoma?Create傳送指令。

手指需要在掃描儀上擷取三次才能被存儲,應用程式採用KinomaJS來記錄三次指紋掃描,LED燈在存儲一次指紋後就會啟動,並等待下一次掃描。

當系統存儲了指紋訊息後,只要將手指放在掃描儀上就能開鎖了。

步驟六:指紋映像



在新視窗檢視



資料庫里存儲的是二進位的指紋資料,而get_rawimage?BLL函式能夠用於檢索掃描儀掃描的原始指紋映像。函式會傳回一個160*120的32位元組/像素的映像。(為了節省存儲空間,應用已經對映像作了壓縮)映像支援png、jpeg、gif、bmp等格式。我們也可用JavaScript組建一個BMP檔案夾,以存儲上述的映像。

最後,我們可以用一個FingerprintPicture的指紋模板顯示這些BMP格式的映像。而整個指紋清單也可以在偏好項檔案夾里存儲為JSON。

這樣一來,應用程式在啟動時便會自動讀取偏好項,並且調用對應的資料。

最後一步:測試使用!

將這個裝置安裝在門上,執行Kinoma?Studio的應用程式碼,這樣就大功告成啦!如果還有什麼不理解的地方,可以到這個討論組里提問。

via instructables

想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 雷鋒網

【本文著作權歸雷鋒網所有,未經許可不得轉載。文章只有代表作者看法,如有不同觀點,歡迎新增雷鋒網微信公眾號(微訊號:leiphone-sz)進行交流。 】











在新視窗檢視

分享到Facebook

[Javascript]揭秘後台技術架構!看 Uber 怎麼練成 4 年業務增長近 40 倍

$
0
0
[Javascript]揭秘後台技術架構!看 Uber 怎麼練成 4 年業務增長近 40 倍

類型:
Javascript



在新視窗檢視



本文由伯樂線上至秦翻譯,黃利民校稿。未經許可,禁止轉載!

英文出處:Todd Hoff



據報導,Uber 只有在過去 4 年的時間裏,業務就激增了 38 倍。Uber 首席系統架構師Matt Ranney ?在一個非常有趣和詳細的訪談《可延伸的 Uber 實時市場平台》中告訴我們 Uber 軟體是如何工作的。

本次訪談中沒有涉及你可能感興趣的峰時定價(Surge pricing,譯註:當 Uber 平台上的車輛無法滿足大量需求時,將提升費率來確保乘客的用車需求)。但我們了解到 Uber 的排定系統,他們如何實作地理空間索引、如何擴充系統、如何提高可用性和如何處理故障,例如在處理資料中心故障時,他們甚至會把司機電話作為一個外部分散式存儲系統用於恢復系統。

訪談的總體印像是 Uber 成長得非常快速。很多他們選擇的的架構是快速成長的結果,同時也想讓建置不久的團隊可以盡可能快地行動。因為他們的主要目標是讓團隊的工程速度盡可能得快,所以在後台使用了大量的技術。



在經歷一個稍顯混亂但非常成功的開端後,Uber 似乎學習到很多:他們的業務和他們需要做什麼才能成功。他們早期的排定系統只是為了送人。由於 Uber 的使命成長為除了送人以外,還要處理箱子和雜物(編註:Uber 已涉及快遞業務。),他們的排定系統已經被抽象並組建在可靠的和智慧的架構基礎上。

雖然 Matt 認為他們的架構可能有點瘋狂,使用一致性哈希環(Consistent Hashing)和 gossip 協定的想法非常適合他們的使用場景。

很難不被 Matt 幹事業的熱情所迷住。當談到他們的排定系統——DISCO,他興奮地說就像學校裡的旅行推銷員問題(traveling salesman problem)。這是一個很酷的電腦科學問題。雖然解決方案不是最優的,但這是現實世界中一個規模很大,要求實時性,由容錯和可延伸的部件建立起來的問題。這是不是很酷?

讓我們看看 Uber 內部是如何工作的。下面是我對 Matt’s 談話的註解:

統計

·Uber 地理空間索引的目標是每秒一百萬次寫入,讀取速度比寫入速度快很多倍

·排定系統有數以千計的節點



平台

·Node.js (譯者註:Node.js 是一個開源的、跨平台的、用於伺服器和網路應用的執行環境。Node.js 應用用 JavaScript 編寫)

·Python 語言

·Java 語言

·Go 語言

·iOS 和 Android 上的本機應用程式

·微服務

·Redis(譯者註:Redis 是一個開源、支援網路、基於記憶體、鍵值對存儲的資料庫,使用 ANSI C 編寫。)

·Postgres(譯者註:PostgreSQL 標榜自己是世界上最先進的開源資料庫。)

·MySQL 資料庫

·Riak (譯者註:Riak是由技術公司basho開發的一個類 Dynamo 的分散式 Key-Value 系統。以分散式、水平延伸性、高容錯性等特點著稱。)

·Twitter 公司提供基於 Redis 的 Twemproxy (譯者註:一個快速和輕量的代理)

·谷歌的 S2 地理函式庫

·ringpop —— 一致哈西環

·TChannel ——網路多路復用和 RPC 幀協定(譯者註:RPC,Remote Procedure Call,遠端程序調用)

·Thrift (譯者註:Thrift 是一個跨語言的服務部署訊框架)



概述

Uber 是一個用來連線乘客和司機的運輸平台。

他們的挑戰是:實時符合動態的需求和供給。在供給方面,司機可以自由地做他們想做到的任何事情。在需求方面,乘客可以隨時要求運輸服務。

而 Uber 的排定系統是一個實時的市場平台,通過行動電話來符合司機和乘客。根據統計,新年前夕是 Uber 一年中最忙碌的時候。

架構概述

驅動了所有這些的原因是乘客和司機在他們的手機上執行他們的 App。後台主要是服務行動電話的流量。客戶端通過行動資料和盡力而為的網路和後台溝通。10 年前你可以想像有個基於行動資料的業務嗎?而我們現在可以做這樣的事情,太棒了。沒有使用私有網路,沒有花哨的 Q0S (服務品質),只有只有是開放的網路。

客戶端連線排定系統,它協調司機和乘客,供給和需求。排定系統幾乎都是用 node.js 編寫的,原來排程把它移植到 io.js 上,不過後來 io.js 和 node.js 合併了。

你可以用 javascript 做一些有趣的分散式系統的工作。不過記得決不要低估熱情帶來的生產力,而且節點開發者都相當有熱情。他們可以非常快速地完成很多事情。

整個 Uber 系統可能看上去相當簡單。為什麼你還需要這些子系統和這些人呢?只要它看上去是那樣,那就是成功的標記。只要看上去他們很簡單地完成了他們的工作,就有很多事情需要去做。

[b][b]地圖或 ETA(預期到達時間):[/b]為了讓排定做出更加智慧的選擇,必須要取得地圖和路線訊息。街道地圖和曾經的行駛時間可以用來預測當前的行駛時間。至於語言很大程度上取決於系統整合,所以這裏有 Python、C++ 和 Java。

服務:這裏有大量的業務邏輯服務。使用了一種微服務的方法;大部分用 Python 編寫。

[b]資料庫:[/b]使用了很多不同的資料庫,最老的系統是用 Postgres 編寫的;Redis 也使用了很多,而有些是基於 Twemproxy;有些是基於一個客制化的集群系統。

此外也使用了 MySQL 資料庫;Uber 正在建立自己的分散式列存儲,那是一堆精心策劃的 MySQL 案例。最後有些排定服務還停留在 Riak 上。

旅行後期的流水處理:一個旅行結束後要處理很多事情,包括收集評分、發 email、更新資料庫、安排支付;用 Python 編寫。

金流:Uber 整合了很多支付系統。

[/b]

舊的排定系統

原有排定系統的局限性開始限制了公司的成長,因此 Uber 不得不改變它。

儘管? Joel Spolsky?聲稱幾乎整個系統都被重寫了。但大部分其它系統沒有被觸及,甚至有些排定系統的服務也被保留下來。

舊系統是為專用客車運輸所設計的,做了很多假設:

·每個車輛一個乘客,不適用? Uber Pool (拼車服務)。

·運送人的想法深深內嵌到資料模型和介面裡。這樣限制了延伸到新的市場和產品上,比如運送食物和箱子。

·最初的版本是按城市劃分的。這對於可延伸性而言是好的,因為每個城市可以獨自運營。但當越來越多的城市加入,這變得越來越難以管理。城市有大有小,負載也不一樣。



由於建造得很快,他們沒有單點故障,都是多點故障。

新的排定系統

為了解決城市分片和支援更多產品,供給和需求的概念應該是廣義的,所以供給服務和需求服務被創建出來。

》供給服務追蹤所有供給的效能和狀態機:

有很多屬性模型可以追蹤車輛:座位數目、車輛類型、是否有兒童座椅、可以放進輪椅嗎,諸如此類。

規格需要被追蹤。例如,一輛車可能有三個座位但是有兩個都被佔用了。



》需求服務追蹤需求、訂單和需求的方方面面:

如果一名乘客要求一個小車座位,庫存必須滿足需求。

如果一名乘客為了更便宜的價錢,不介意和別人分享一輛車,這也是要塑模的。

如果需要行動一個箱子,或是遞送食物呢?



》符合所有供給和需求的邏輯是一個被稱為 DISCO(排定最佳化)的服務:

舊系統只符合當前可用的供給,這意味?當前路上等著工作的車輛。

DISCO 支援未來規劃和使用可用的訊息。例如,在旅行程序中修改路線。

[b]geo 供給:
基於供給來自哪裡和哪裡需要它,DISCO 需要一個地理空間索引做決策。

geo 需求:需求也需要一個 geo 索引。



要使用所有這些訊息需要有一個更好的路由引擎。

[/b]

排定

當車輛行動的位置更新被傳送到 geo 提供者。為了符合乘客和司機,或是只有是在地圖上顯示車輛,DISCO 傳送一個請求給 geo 提供者。

接? geo 提供者會先粗略過濾一遍,得到附近滿足需求的候選人。然後清單和需求傳送給路線或 ETA(預計到達時間);用以計算它們距離遠近的 ETA,是基於道路系統而不是地理上的。

接?根據 ETA 排序然後把它傳回給提供者,再派給司機。至於在機場,Uber 不得不類比一個虛擬的計程車佇列。因為考慮到他們到達的順序,提供者必須排隊。

地理空間索引

必須有相當的可延伸性。設計目標是每秒處理一百萬次寫入。寫入的速度源自司機每 4 秒傳送的行動更新。至於讀取速度的目標是要比寫入速度快很多,因為每個開啟應用的人都在進行讀取作業。

通過一個簡化的假設——只有追蹤可排定的供給,舊地理空間索引可以很好地工作。大部分供給正在忙?做其它事情,所以支援可用供給的子集就很容易。在為數不多的行程中,有一個全域索引存儲在記憶體裡。很容易做簡單的符合。



在新世界裏必須追蹤所有狀態下的供給。Uber?必須追蹤它們涉及的路線;這是相當多的資料。此外,新的服務執行在好幾百個行程上

而因為地球是一個球體,Uber 很難只有依靠經度和緯度做出總結和近似。所以 Uber 通過 Google S2 函式庫將地球分割成微小的單元,每個單元有一個唯一的 ID。

可以通過一個 64 位整數(int64)代表地球上的??每一平方厘米。Uber 使用一個等級為 12 的單元,根據你所在的位置,面積從 3.31 到 6.38 平方公里。盒子根據它們在球體中的位置,改變它們的形狀和大小。



S2 可以給出一個形狀的覆蓋面積是多大。如果你想以倫敦為中心畫一個半徑 1 公里的圓,S2 可以告訴你填充這塊欄位需要多少單元。由於每個單元都有一個 ID,這個 ID 可以作為一個分區鍵。當供給到達一個位置,這個位置的單元 ID 就知道了。可以用一個做為分區鍵的單元 ID 來更新供給位置。然後傳送多個副本。

當 DISCO 需要找到附近位置的供給,會以乘客所在位置為中心計算一個圓的面積。藉助單元 ID,讓所有在這個範圍內的分區都回饋供給資料。

所有這些都是可延伸的。儘管它不像你想像得那樣高效,但因為扇出相對便宜,寫入負載總是可以通過加入更多的節點來加以擴充。讀取負載可以通過使用複制來擴充。如果需要更大的讀取能力,可以加入複制因子。(譯者註:fanout,扇出,IC 概念,一個邏輯門在正常工作下,其輸出端可接的同族系 IC 門的數目,成為此門的扇出數。簡單的說,其所能推動同種類的次級門的數目就稱為扇出。)

一個限制條件是單元尺寸固定在等級 12 的大小。未來可能會支援動態的單元尺寸。但這需要權衡利弊,儲存格越小,查詢的扇出就越多。

路線

討論完地理空間,我們來討論路線的選擇必須分級。

有一些主要目的:

[b]減少空載([b]extra driving):[/b]開車是人們的工作,他們希望可以更有效率。空載不會給他們帶來收入(譯者註:感覺此處有筆誤)。理想情況下,司機一直在行駛中。一堆賺錢的工作排隊等?他們。

減少等待:乘客等待要盡可能的短。

整體 ETA 最少(整體預計到達時間)

[/b]

舊系統讓需求查詢當前可用的供給,加以符合並最終完成。這很容易實作和讓人理解。這在專車運輸下工作得相當好。

但只有看當前可用的,並不能做出好的選擇:其想法是一個正在運送乘客的司機可能更適合這位叫車的客戶,因為目前空閒的司機距離比較遠。挑選正在途中的司機減少了客戶的等待時間,也讓遠端司機的空載時間降到最小。

在可預見的未來,這個模型可以更好地處理動態條件:

例如,一名客戶附近剛好有一名司機上線,但是這個客戶之前已經分派給另一位距離位置遠一點的司機,這種情況下就不應該改變排定決策。

另一個例子是客戶希望可以分享一輛車。通過在非常複雜的情況下嘗試預測未來,可以進行更多的最佳化。



當考慮到運送箱子或是食物,所有這些決策會更加有趣。在這些情況下,人們通常會做其它事情,就需要有其它不同的考量。

可延伸的排定

排定使用 node.js 組建;他們組建了一個有狀態的服務,所以無狀態的延伸方法不能工作。

Node 執行在一個單獨行程上,所以必須想一些辦法讓 Node 可以執行在同一台機器的多個 CPU 上和多台機器上。而用 Javascript 重新實作所有 Erlang 的實作是個笑話。

延伸 Node 的一個解決方案是 ringpop,它是一個基於 gossip 協定的一致哈希環,實作了一種可延伸的和容錯的應用層分區。在 CAP 術語中,ringpop 是一個 AP 系統,權衡一致性和可用性。一些不一致性要比無法服務更好解釋。最好是可以一直可用只是偶爾出錯。

ringpop 是一個可以包含在每一 Node 行程的內嵌式模組。



Node 基於一個成員集合實作 gossip 。一旦所有節點相互認可,它們可以獨立和高效地進行查詢和轉寄的決策。這是真正得可延伸:加入更多的行程可以完成更多的工作。這可以被用來切分資料,或作為一個分佈的閉鎖系統、或協調一個發表或是訂閱的會合點、或是一個長時間輪詢的 socket。

Gossip 協定一種基於可擴充可傳導的弱一致性行程群組成員協定(SWIM,Scalable Weakly-consistent Infection-style Process Group Membership Protocol);為了提升收斂時間已經做了一些改善。

一系列線上的成員都在「傳播流言」?(gossip around 譯註:雙關用語)。當更多的節點加入,它就是可擴充的。SWIM 中的「 S 」代表可延伸的,並且的確可以工作;這可以延伸到數千個節點的程度。(SWIM 結合了健康檢查和成員變更,並把它們作為協定的一部分。)

在一個 ringpop 系統中,所有 Node 行程都包含 ringpop 模組。它們在當前成員中「傳播流言」。

從外面看,如果 DISCO 想要使用地理空間,每個節點都是相等的。可以選擇任意一個健康的節點。通過檢查哈希環,接受請求的節點會負責把這個請求轉寄給正確的節點。如下圖所示:

在新視窗檢視

讓這些躍點和對端可以相互溝通聽上去很瘋狂,但可以得到一些很好的特性,比如在任意機器上加入案例就可以擴充服務。

ringpop 的組建基於 Uber 自己的遠端程序調用(RPC,Remote Procedure Call)機制,被稱為 TChannel。它是什麼?

這是一個雙向的請求和響應協定,它的靈感來自 Twitter 的 Finale。

一個重要的目標是控制跨不同語言的效能;特別是在 Node 和 Python 中,很多現有的 RPC 機制不能很好地工作,因此需要 redis 層級的效能。而?TChannel 已經比 HTTP 快 20 倍。

需要一個高效能的轉寄路徑,這樣中間層不需要知道整個負載,就可以很容易做出轉寄的決策。

需要適合的流水線,這樣就不會有排頭擁塞的問題,任何時候任何方向都可以傳送請求和響應,每個客戶端也是一個伺服器。

需要內嵌負載檢驗、追蹤和一流的功能。在系統內處理中,每個請求都應該是可被追蹤的。

需要一個乾淨的脫離 HTTP 的方法。HTTP 可以非常自然地被封裝到 TChannel 裡。

[b]Uber 正在遠離 HTTP 和 Json 業務
。都在遷往基於 TChannel 的 Thrift。

[/b]

ringpop 基於持久連線的 TChannel 實作 gossip 協定。同樣這些持久連線被用來延伸或是轉寄應用流量。TChannel 也被用來進行服務間的通信。

排定可用性

可用性很重要:Uber 有競爭對手而且切換成本非常低。如果 Uber 只是短暫掛掉,這些錢就會被其它人賺走。其它產品的粘性更強,客戶也願意再次嘗試它們。Uber 不一定如此。

讓每件事情都可以重試:如果有些事情不能工作,那它就要可以重試。這就是如何繞過錯誤。這要求所有的請求是冪等的。例如一次排定的重試,不能排定兩次或是刷兩次某人的信用卡。(譯者註:一個冪等作業的特點是其任意多次執行所產生的影響均與一次執行的影響相同)

讓每件事情都可以終止:失敗是一個常見的情況。任意終止行程不應該造成損害。

只有崩潰:沒有優雅的關閉;優雅的關閉不需要練習。需要練習的是當不遇期的事情發生了(要怎麼辦)。

小塊:要把事情失敗的成本降到最低就是把它們分成小塊。可以在一個案例中處理全部流量,但如果它掛掉了怎麼辦?如果有兩個,就算一個掛了,只是效能減半。所以服務要可以被分割。這聽上去像一個技術問題,但更像一個文化問題。很容易就擁有一對資料庫。這是一件很自然的事情,但配對就不好。如果你能夠自動發起一個和重新啟動新的備用,隨機終止它們是相當危險的。

終止一切:就算終止所有資料庫來確保可以從失敗中恢復過來。這需要改變資料庫的使用規則。他們選擇 Riak 而不是 MySQL。這也意味?使用 ringpop 而不是 redis。因為 redis 案例通常相當大和昂貴,終止一個 redis 案例是一個很昂貴的作業。

把它分成小塊:談到文化轉變。通常服務 A 通過一個負載等化器和服務 B 溝通。如果等化器掛掉會怎樣?你要如何處理這種情況?如果你沒有練習過你永遠都不知道。你應該終止負載等化器。你如何繞過負載等化器?負載均衡的邏輯已經在服務裏面。客戶端需要有一些訊息知道如何繞過問題。這和 Finagle 的工作方式類似。

一個集群的 ringpop 節點創建了服務發現和路由系統,讓整個系統有可延伸性和應對後台的壓力。

整個資料中心的故障

雖然不會經常發生,但還是會出現一個意想不到的串聯故障或是一個上游網路提供商的故障。Uber 維護了一個備份的資料中心,通過適當的開關可以把所有事情都切換到備份的資料中心。

問題是在途的旅行資料可能不在備份的資料中心。他們會把司機手機當作旅行資料的源頭而不是資料的副本。

結果排定系統會周期傳送一個加密的狀態摘要給司機的手機。現在假設有一個資料中心發生故障轉移。司機手機下一次傳送位置更新給排定系統,排定系統將會偵測到它不知道這個旅行,它會問(手機)要狀態摘要。然後排定系統根據狀態摘要進行更新,這個旅行會繼續就像什麼事情都沒有發生過。

不足之處

Uber 解決可延伸性和可用性問題的不足之處,可能在於 Node 處理轉寄請求和傳送訊息給大量扇出所帶來的高延遲。在一個扇出系統中,微小的波動和故障都會有驚人的影響,系統的扇出越高出現高延遲請求的機會就越大。

一個好的解決方案是可以跨伺服器取消備份的請求。這個一流的功能已經內嵌到 TChannel 中。一個請求的訊息同時傳送給服務 B1 和 B2;傳送給服務 B2 的請求會有些延遲,當 B1 完成這個請求,它會在 B2 上取消這個請求。由於這個延遲通常情況下 B2 不會工作,但如果 B1 出了問題,B2 就可以處理這個請求,這樣會比 B1 先嘗試逾時後 B2 再嘗試情況下的回饋要快一些。

(本文轉載自合作夥伴《伯樂線上》;未經授權,不得轉載;圖片來源:bfishadow,CC Licensed)





在新視窗檢視

穩賺直達→FB, Google Adwords 密技











想在Android 手機欣賞更多有趣圖集?免費下載 GigCasa App

在新視窗檢視





在新視窗檢視





原文站台: TechOrange











在新視窗檢視

分享到Facebook


[css]CSS峰會關注企業訊息安全 百位CTO閉門探討「2016第一步」

$
0
0
[css]CSS峰會關注企業訊息安全 百位CTO閉門探討「2016第一步」

類型:
css

15年初,攜程信用卡拖庫門事件引發恐慌,近日爆發的網易郵箱過億使用者資料泄露則再次引起行業震蕩。關於企業訊息安全,在中國一直處於重要但不被重視的環境,而在國外眾多網路公司,則非常重視企業訊息安全工作,專門設有CSO(Chief?Security?Officer,首席安全官)來負責企業訊息安全相關業務。面對更為複雜的新生態網路環境,我國企業如何推進企業訊息化建設?

據悉,首屆中國網路安全領袖峰會將於11月3日至4日在北京國家會議中心召開,此次峰會將舉辦題為「CSO的2016第一步」?企業安全閉門交流會,旨在為網路訊息服務企業及網路訊息安全相關負責人搭建一個交流平台,共建中國網路訊息安全的新生態。企業安全閉門交流會一經推出,便有數百位CTO報名參會,其中不乏政府、企業、安全界權威人士。

訊息全方位互聯?企業訊息安全亟需生態化建設本屆網路安全領袖峰會以「智慧互聯?安全新生態」為主題展開討論。據記者了解,組委會提出這一理念的初衷在於,不同於傳統網路訊息防護「特徵碼引擎+病毒樣本庫」殺毒樣式靜態化、平面化,防護效果取決於一兩家安全軟體廠商研發能力的特點。

在訊息全方位互通的智慧互聯時代,作業系統多元化,智慧裝置多樣化,使用場景立體化,病毒木馬等安全威脅一旦侵入訊息流動頻道,傳播速度之快、危害範圍之廣,只有憑廠商一家的力量難以控制,亟需產業鏈中各環節從系統整合商、硬體製造企業,到網路產品運營機構,共同樹立起一致的企業訊息安全生態理念,以立體化安全防護的手段,建立起一個全新的企業訊息安全防護生態機制。

百位CSO閉門探討?聚焦產業鏈安全相較於傳統訊息安全管理中,由公司內的CTO(首席技術官)全面負責的狀況,本屆網路安全領袖峰會提出的CSO(Chief?Security?Officer,首席安全官)職位概念,能夠幫助中國企業更為聚焦於訊息安全管理,以提升行業對於企業訊息安全的重視程度,並推動整個行業的安全生態建設。



作為重要議程,「CSO的2016第一步」?企業安全閉門交流會,將重點圍繞「XCode引發的供應鏈安全和開發安全」、「雲計算安全的挑戰及CSO的決策」、「十三五期間CSO的演進展望」和「安全責任的新態勢」四個主題展開充分的交流,探討網路訊息服務領域所面臨的行業挑戰和趨勢,促進網路訊息服務相關企業的行業交流,提升訊息安全服務專業性,同時以此次會議為契機搭建產業融合及交流的社區平台,為未來更多線下交流及業務合作促成打下良好的基礎。

本次企業安全閉門交流會,由知道創宇、啟明星辰、騰訊安全平台部、玄武實驗室、烏雲、安天承辦,將以圓桌交流和企業嘉賓主題分享的形式進行,屆時將有超過百位訊息服務企業的安全技術及運維人員,專門針對網路訊息服務領域的安全隱患和風險、安全事故應對機制、企業安全技術及運維人才訓練等方面內容進行深入探討和交流,以促進行業安全服務的穩定性和專業性,為網路訊息服務企業及網路訊息安全相關負責人搭建一個交流分享平台,為「智慧互聯?安全新生態」主題的落實,開展建立產業鏈各環節齊參與的網路安全新生態邁出重要的第一步。

本次企業安全閉門交流會邀請到了玄武實驗室負責人TK教主、啟明星辰首席戰略官潘柱延、知道創宇COO楊冀龍、烏雲創始人方小頓、騰訊應用安全運維中心負責人胡珀、安天副總工楊祖明等網路訊息安全領域的眾多大咖作為圓桌常駐嘉賓,分享在各自領域取得的最新研究進展和安全管理經驗。

目前,首屆中國網路安全領袖峰會入場門票正在火熱預訂中,官網也開通了限時免費頻道,點選報名網址:http://www.thecss.cn/css/regi.html?取得。

中國網路安全領袖峰會官方站台:http://www.thecss.cn?

在新視窗檢視

想在手機查閱更多css資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 雷鋒網

【本文著作權歸雷鋒網所有,未經許可不得轉載。文章只有代表作者看法,如有不同觀點,歡迎新增雷鋒網微信公眾號(微訊號:leiphone-sz)進行交流。 】











在新視窗檢視

分享到Facebook

[css]網路進入智慧互聯時代 CSS將推進行業安全生態建設

$
0
0
[css]網路進入智慧互聯時代 CSS將推進行業安全生態建設

類型:
css



在新視窗檢視

由中央網信辦指導籌備的第一屆中國網路安全領袖峰會(Cyber?Security?Summit)將於11月初在北京召開,屆時將有來自網路安全監管機構、科研院校、BAT三大巨頭、網路安全組織和各類網路企業的3000餘位嘉賓廣泛參加。近期,記者從組委會了解到峰會將圍繞「智慧互聯,安全新生態」的主題和」立體化安全「的理念展開深入探討,為推動中國網路安全發展獻計獻策。?

???????

智慧互聯時代?亟需建設安全新生態傳統的網路安全機制,源自有?二十多年歷史的殺毒軟體的工作原理,即「特徵碼引擎+病毒樣本庫」的方式,就是安全廠商及時發現各種各樣的病毒,找出病毒的通性特徵,將這些特徵訊息以病毒庫的形式通過殺毒軟體更新升級到使用者的電腦端,在使用者的電腦上辨識出病毒並予以殺除。在這種機制下,評定一款安全軟體好壞的辦法就是實驗室測試,拿出已知的病毒樣本庫掃描做檔案偵測,測試安全軟體對已知病毒木馬的偵測能力,以測出百分之多少的檢出率來衡量。由此可見,傳統的網路安全防護是安全軟體廠商一家唱獨角戲的舞台,防護結果的好壞極大程度上取決於安全軟體廠商對訊息資源的掌握程度和自身水平的高低。

在智慧互聯時代,作業系統多元化,智慧裝置多樣化,使用場景立體化,各類公用、私有的訊息在多平台、多場景下流動傳輸,安全威脅的入口前所未有地增多,病毒木馬一旦侵入訊息流動頻道,則傳播速度之快、危害範圍之廣難以想象。在這種情況下,單憑廠商一家的力量難以控制住病毒如洪水般的衝擊,亟需建立起一個新的安全防護生態。在本次峰會主會場的圓桌論壇上,來自騰訊、阿里、百度和微軟的安全高管們將一起探討建立一個全新的網路安全新生態,呼籲產業鏈上從系統整合商、硬體製造企業,到網路產品運營機構,共同樹立起一致的安全生態理念,將各自管理環節提供的安全防範產品對危害威脅的監測訊息共通共用,摒棄傳統危害-治理的單一安全機制,建立預警-防範-治理-資料共用的新型安全機制,突破安全行業局限,產業鏈各環節、各行業在做好各自環節安全管理的同時,將安全威脅訊息、威脅處理規則各類應對訊息即時通過雲端等手段在產業鏈條中流通,做到立體、動態的防範、管理,共同參與防範治理網路安全問題。



立體化安全?保障網路安全新生態健康發展傳統的安全軟體廠商在為使用者提供安全殺毒產品和服務時,只有只有是針對桌面作業系統,只要做出一套殺毒軟體就能解決安全問題。但是在智慧互聯的時代,使用者在工作、生活場景中使用的智慧裝置,執行的作業系統更加立體化、多元化,除了桌面的PC裝置,還有多種行動智慧終端機、穿戴裝置、智慧汽車等新型智慧裝置,作業系統更加多元化,安全威脅在各個場景下即有機會侵害,傳統上網安全的解決方案明顯力不從心。

新型的立體化安全機制,?重在智慧裝置終端機使用場景立體化的情況下,對網路訊息安全的防護保障同樣做到立體化、多元化、跨平台。在網路訊息流動的生態鏈條中,從傳統常規的桌面作業系統,手機、Pad行動智慧終端機,到針對個人身體偵測、虛擬體驗的穿戴裝置,以及交通出行中的智慧汽車等工作、娛樂、生活各類使用場景中,對每一方面的數位訊息進行安全防護。關閉病毒木馬在網路生態鏈條中實作侵害的各類入口,切斷病毒在生態鏈條中傳輸的頻道路徑。

據悉,本次峰會除探討網路安全新生態的主會場外,還將設網路金融安全、智慧城市安全、智慧交通安全、智慧生活安全四個分會場,聯合產業鏈中各行業人士共同研究涵蓋智慧應用多元、立體場景下的網路安全防護管理問題。

在智慧互聯時代,各類智慧應用、硬體飛速發展,使用者使用智慧裝置的場景更加多元化、立體化,對網路訊息的安全防護也亟需建立立體化保護的機制。同時作業系統多元化、多平台化,智慧裝置多樣化的演進,使得安全廠商一家的防護也捉襟見肘,需要產業鏈上各環節組織機構的鼎立參與,樹立一致的安全生態觀,提供開放、互聯的介面,讓安全威脅無門可入、無路可走。

目前,首屆中國網路安全領袖峰會入場門票正在火熱預訂中,官網也開通了限時免費頻道,點選報名網址:http://www.thecss.cn/css/regi.html?取得。

中國網路安全領袖峰會官方站台:http://www.thecss.cn?

想在手機查閱更多css資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 雷鋒網

【本文著作權歸雷鋒網所有,未經許可不得轉載。文章只有代表作者看法,如有不同觀點,歡迎新增雷鋒網微信公眾號(微訊號:leiphone-sz)進行交流。 】











在新視窗檢視

分享到Facebook

[Javascript][jQuery] 動態建立元素的事件觸發

$
0
0
[Javascript][jQuery] 動態建立元素的事件觸發

類型:
Javascript



我們有個舊專案使用早期的jQuery 1.2,剛巧新增功能的動態建立新元素讓原有的事件無法被觸發,測試後才知道「的有元素」的事件程式無法套用給「未來動態建立的元素」,在jQuery 1.7後使用 .on() 就能有效處理的有與未來元素的事件作業了。

▼ 測試網頁

在新視窗檢視

靜態 tr 元素一切正常

表格 TABLE1 原本有5個靜態的 tr,點選換背景色與刪除、修改等皆能正常運作。但按下〔Add〕動態新增的 tr 完全無法觸發這些 click 事件。





.highlight {

color: white;

background-color: highlight;

}





[i]



static text 1[i][i]

static text 2[i][i]

static text 3[i][i]

static text 4[i][i]

static text 5[i][i]





動態建立的新元素

只要把 click 事件改寫成 .delegate() 或 .on() 才能解決這個問題。範例直接使用 .on()和.delegate() 來撰寫。.on()的使用語法是:



selector.on( events [, sub-selector ] [, data ], handler )

例如:

$("table tr").on("click", "td:nth-child(1)", function() {

// some code...

});

修改後的原始碼如下:





.highlight {

color: white;

background-color: highlight;

}





[i]



static text 1[i][i]

static text 2[i][i]

static text 3[i][i]

static text 4[i][i]

static text 5[i][i]





測試基本資料下載或執行

點選執行或按右鍵另存新檔。

靜態元素版本:http://jdev.tw/files/table1-step1.html

動態元素版本:http://jdev.tw/files/table1-step2.html

##

-->

想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 簡睿 JDev.tw











在新視窗檢視

分享到Facebook

[css]用CSS+DIV畫表格(table)進行網頁排版

$
0
0
[css]用CSS+DIV畫表格(table)進行網頁排版

類型:
css



在新視窗檢視





以往傳統網頁設計都喜歡使用table(表格)來建構網頁,這樣的建構方式對於網頁整體排版來講並沒有太大的問題,可以完美相容於各個瀏覽器。但是時代在進步,還在用table排網頁感覺就有點過時了。會這樣說並不是想引起table和div之戰,而是想要說對於網頁的維護,table表格是比較麻煩一點的,再加上原始碼不太乾淨、過多的巢狀,對於搜尋引擎來講,也比較難發現其中重要的部分。

那如果用CSS+DIV進行網頁排版,就會比較好嗎?基本上是可以這樣講,但是大家又會遇到網頁校正的問題,一口氣要調整四、五種版本的瀏覽器,這樣很可能讓網頁設計者又跑回去用table表格排版。但其實在CSS中,已經有語法是支援表格的了,並不是對表格進行樣簡單的樣式定義,而是透過CSS的表格屬性,完美畫出表格,排除瀏覽器相容的問題,讓傳統的table排版的設計師,也可以快速轉換。

在香腸之前的imXD佈景版本中,就已經將分類文章改採清單的排版方式,目的主要是不讓搜尋引擎收錄過多的重覆內容,另一方面也不希望大家找文章不好找,所以改用清單的方式。本來想說使用table來產生清單排版,免除瀏覽器校正問題,但礙於搜尋引擎對表格式的網頁不好解析其內容,所以還是使用DIV排版,並默默的校正一堆瀏覽器。

但是這回imXD5因為網頁HTML5化,因此所有的CSS與DIV幾乎是重構的狀態,所以在本來的分類文章清單中,樣式也順便進行重構,可是問題來了?「重構=花時間」,因為要用CSS+DIV類比成table的樣式,如果一直使用float來排版,校正上其實很麻煩,當然在瀏覽器的校正上,更是頭大。後來找了一下發現有有不錯的好東西,在diplay的屬性上,有table相關的屬性值可以使用!



在新視窗檢視



傳統的table構版的問題

一般來講,table打好語法就可以呈現效果了,而且語法很簡單,就單純的table、tr、td,這三個語法就可以畫出表格,在各個瀏覽器下也都可以正常的顯示。如果覺得排版不漂亮,就直接在語法內加上width、color等等的屬性值,效果很容易就達到了,可是這樣會讓原始碼雜亂。對於搜尋引擎來講,他們抓站台內容通常不會一次抓完,會先抓到一定的網頁大小,之後再來,如果你把樣式調整的原始碼都放進去,很快的,搜尋引擎可能光收錄你的表格樣式,還沒抓到重點就已經達到抓取額度了,重要的資料沒被收錄,倒是收錄了一些不重要的樣式組態。



在新視窗檢視



使用CSS構版的優點

的然表格不推薦,那我們可以考慮改用CSS+DIV來構版。CSS+DIV構版的好處就是將網頁樣式組態和主要內容分離,透過style.css基本資料來控制樣式,而且可以很方便的改,只要站台架構不變,可以隨你開心設計好幾個版本的樣式表,哪天心情好,換一下style.css的基本資料,網頁就整個大不同。這也就是為什麼那一些BSP部落格(例如無名、痞客邦),會有這麼多不同的套版,他們網頁架構都相同,就只是CSS基本資料的不同,透過CSS的變換,可以營造出不一樣的效果。





在新視窗檢視



開始進行CSS+DIV畫表格

為了讓大家方便在DIV和table之間的轉換,所以在CSS的命名上主要就是使用「css_」作為開頭,方便做一個對照。首先,以前面的範例table範例語法:

標題

回應

日期

如何停用WordPress內建搜尋功能?

5

2011-10-30

接?,我們將以上語法改成CSS+DIV的切板樣式,如同前面所說,為了方便對照,所以CSS的定名開頭採用「css_」。

標題

回應

日期

如何停用WordPress內建搜尋功能?

5

2011-10-30

接下來,我們套上CSS的語法,效果就會出現了!

#css_table {

display:table;

}

.css_tr {

display: table-row;

}

.css_td {

display: table-cell;

}

CSS語法與table比對

事實上,從上面的語法來看,要用table改成css的方式並不困難,所有的樣式定義需要全部透過CSS的id或是class全部獨立出來,其它部分寫起來是差不多的。上面的語法,並沒有對CSS畫出的表個做顏色、邊線、寬度作定義,可能看起來醜醜的,這部分就請大家自己摸索了。這篇文章主要是要告訴大家,利用CSS也是可以達到table的效果。下面列出一些display對應table的屬性:

inline-table:顯示成前後沒有換行的表格

table:對應標籤,以表格方式顯示。

table-row:對應標籤。

table-row-group:對應標籤。

table-cell:對應標籤。

table-caption:對應標籤。

table-column:對應標籤

table-column-group:對應標籤。

table-header-group:對應標籤。

table-footer-group:對應標籤。

IE7以下不相容

沒錯,這樣的CSS屬性很巧的,只有在IE8以上才有支援,如果是IE7以下的瀏覽器,必須做CSS的相容性校正了,這是小可惜的地方。但目前瀏覽器的使用量,IE7的比例也逐漸下降,因為大多XP使用者如果要升級瀏覽器,都會直接升級IE8。如果要校正,那就要善用幾個屬性:display:block、float:left,還有padding和margin進行校正了。

(轉自香腸炒魷魚)

想在手機查閱更多css資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: Terence











在新視窗檢視

分享到Facebook

[Javascript]【】Popmotion – 小巧,靈活的 JavaScript 運動引擎

$
0
0
[Javascript]【】Popmotion – 小巧,靈活的 JavaScript 運動引擎

類型:
Javascript

Popmotion 是一個只有12KB的 JavaScript 運動引擎,可以用來實作動畫,物理效果和輸入追蹤。原生的DOM支援:CSS,SVG,SVG路徑和DOM屬性的支援,開箱即用。Popmotion 站台上有很多很贊的效果,趕緊去體驗一下。

?

在新視窗檢視

?



?

馬上去試試

 

想在手機查閱更多Javascript資訊?免費下載【香港矽谷】Android App

在新視窗檢視







原文站台: 夢想天空

歡迎任何形式的轉載,但請務必註明出處。











在新視窗檢視

分享到Facebook

Viewing all 735 articles
Browse latest View live