登入  |  English
感謝您對「自由軟體鑄造場」的支持與愛護,十多年來「自由軟體鑄造場」受中央研究院支持,並在資訊科學研究所以及資訊科技創新研究中心執行,現已完成階段性的任務。 原網站預計持續維運至 2021年底,網站內容基本上不會再更動。本網站由 Denny Huang 備份封存。
也紀念我們永遠的朋友 李士傑先生(Shih-Chieh Ilya Li)。
新聞

PourOver 與 Tamper 簡介

◎本文翻譯自 The New York Times,原作者為 Erik Hinton 與 Ben Koski︰
https://open.blogs.nytimes.com/2014/04/16/introducing-pourover-and-tamper/

這一年多來,我們投入於 PourOver.js 與 Tamper 的研發。它們是運用在 Red Carpet 專案、乳癌面貌 (Faces of Breast Cancer) 與高層建築讀者故事 (High-Rise reader stories) 背後的內部程式庫。

現在,你可以在 GitHub 上找到它們:

  • PourOver.js:一套在瀏覽器中過濾、分頁、更新、排序資料集合的程式庫。

  • Tamper:一套序列化 (serializing) 與壓縮分類資料 (categorical data) 的協定。

兩套專案都有完整文件,PourOver 更提供涵蓋基本功能的一系列範例。在 OpenNews Source 部落格上也有一篇協同報導,詳述專案的演進。

我們在此想用一些很酷的例子,來展示上述專案能做到的事:

  1. 你可以用 Boolean 操作串接過濾器。此種組合不需從頭到尾重複計算,只需花時間在找出過濾器索引的聯集、交集、差異即可。你可以拿顏色、尺寸大小、形狀過濾器,用它們找出紅或藍且不是方形的大號形狀:

    color_match_r = collection.filters.color.getFn("red") 
    color_match_b = collection.filters.color.getFn("blue") 
    size_match = collection.filters.size.getFn("big") 
    shape_match = collection.filters.shape.getFn("square") 
    big_red_non_squares = color_match_r 
    .or(color_match_b) 
    .and(size_match) 
    .not(shape_match)

  2. PourOver 允許混合單純的查詢與具有狀態的查詢。假如你需要的是一般的查詢,沒問題,過濾器不會記得上次 getFn 的結果。

    color_match = collection.filters.color.getFn("red")
    color_match.current_query // >> undefined

    如果你想要的是具有狀態的查詢,過濾器會記得你上次的 query 內容。

    collection.filters.color.query(“red”)
    collection.filters.color.current_query // >> [和紅色東西有關的 MatchSet]

     

  3. 你可以輕鬆利用 PourOver 建立 view,儲存你目前的頁面以及上次的查詢。當資料集合中的項目有所更動、新增或刪除,這個 view 都會自動更新。

    view = new PourOver.view(“my_view”,collection,{page_size: 1})
    view.page(1) // 向右 1 頁
    collection.addItems(new_items) 
    // view 會持續分頁在之前的項目上,有必要的話會更新頁面。還有如果有新的項目合乎目前選擇的過濾器,就會自動加進 view 目前的項目當中。

     

  4. 僅用 1KB ,Tamper 就能表達 1 萬張照片的分類資料: gist.github.com/bkoski/10779733#file-gistfile1-json

我們期望這些程式庫能對你有所幫助。歡迎在 GitHub 上提出問題 (issue) 或提交 pull request。你也可以直接寫信到 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看 這個 E-mail 地址已經被防止灌水惡意程式保護,您需要啟用 Java Script 才能觀看 。不論內部或外界,這些程式庫都正受到積極的採用,它們可望持續演進:我們會在此發佈更新訊息或重大釋出。




自由軟體鑄造場電子報 : 第 240 期 AngularJS - 指令

分類: 源碼專案