阻擋廣告與被追蹤

目前網路上,充滿許多廣告,從網頁(Web)到行動裝置的應用程式(App),可能當你上了某個購物或商店的網站瀏覽商品後,再進入一些放置廣告的網站瀏覽時,會出現剛剛瀏覽過或是同類型的產品。除了很討厭見到廣告內容外,在行動裝置上更是會使用到可觀的行動網路流量,更重要的是,讓廣告商們能夠追蹤自己的瀏覽記錄與喜好等。Chrome 在今年(2018 年)二月加入了廣告過濾(AD Filtering),Google 在 Chrome 瀏覽器中,加入廣告過濾主要並不是想要保護使用者的隱私,因為使用者看不到廣告,與使用者不被追蹤是兩回事,沒看到廣告不表示你沒被追蹤。

下面會分享,自己目前或使用過的阻擋廣告、追蹤的方式與軟體(皆是開源的),主要分成瀏覽器、行動裝置端與其他。

瀏覽器端

在瀏覽器上瀏覽網頁,是透過 JavaScript 載入執行的程式,來顯示廣告或追蹤你點擊、瀏覽過的網頁,常見防止廣告與第三方追蹤的方式是阻擋特定的 JavaScript 檔案或特定的域名,來避免瀏覽器執行這些 JavaScript,或向特定域名送出 HTTP/HTTPS 請求。

uBlock Origin

uBlock logouBlock Origin 廣泛來說,並不是完全來阻擋廣告與被追蹤的工具,它提供了多種阻擋規則,包含了請求類型、主機名稱、網址、HTML DOM 等,也能利用正規表示式(regular expression)等來撰寫阻擋規則。(注意:uBlock Origin 與 uBlock 是不同的,可以從 logo 圖案來區分)

uBlock Origin 專案原始碼:https://github.com/gorhill/uBlock

如果你是 Firefox 瀏覽器使用者,請從 Firefox Add-on 安裝;如果你是 Chromium/Chrome 瀏覽器使用者請從 Chrome 線上應用程式商店安裝。

uBlock Origin 支援許多瀏覽器,像是 Firefox、Chrome、Safari 等,只要在瀏覽器內,安裝 uBlock Origin 擴充套件後就能使用,uBlock Origin 中也包含了許多的阻擋清單,讓你依照自己的需求,如阻擋的類型,或依照國家內常見的廣告與追蹤來阻擋。

Advanced uBlock
安裝完 uBlock Origin 後,也能查看到目前已經阻擋的連線請求及所有的連線請求有哪些。
uBlock logo 取自 Raymond Hill (@gorhill) https://github.com/gorhill/uBlock/blob/master/doc/img/ublock-16.svg,以公眾領域(CC0)釋出

繼續閱讀 “阻擋廣告與被追蹤”

阻擋廣告與被追蹤

Drupal 與 Laravel

Laravel Drupal
Laravel Logo 圖片來源:https://github.com/laravel/art/blob/master/laravel-l-slant.png Drupal Logo 圖片來源:https://www.drupal.org/about/media-kit/logos

在爬文章的時候看到一則是討論 Drupal 8 與 Laravel-Drupal Vs. Laravel,看到當天晚上就把一些想法發表回應到文章下面,可是作者遲遲還沒有允許張貼,這幾天一樣跑去看那篇文章看,還是沒被公開發佈,就先把回應寫在自己的部落格上。(現在,作者已經公布了)

以下是我回應給作者的內容(有改了一些拼字、文法錯誤…)

Berfore starting to build and develop Drupal sites for over 1 year, I use Laravel framework. I think in some website types, eg. media and content, Drupal is more suitable. Because, in Drupal 7/8, the ImageStyle is powerful, it can process different image size for different device screens. Especially, in Drupal 8, the cache system allows to control the cache of page easily and flexible.

In the beginning of developing Drupal 7, I cannot accept and realize the configurations are in database. Although, the features module can help export the configs into code. Sometimes, when deploying into production or stage site, the exported features may break or encounter the different tid. In Laravel, all configs are in code. When deploying, developers only pull the branch and set the config values into environment variables.

Sometimes, I hate to take much time to work on the customized displays or modifying forms in Drupal, since in Laravel or others development, I only need to change HTML or blade. In Drupal, I should implement hook functions to alter rener array or Form API.

BTW, I prefer Drupal 8, due to OO design, new config management, service container, plugins system, event listener, routing and so on. They provides more structural ways to maintain and develop.

繼續閱讀 “Drupal 與 Laravel”

圖片

開源的 IndicatorBarView-Android UI 元件

專案網址:https://github.com/ymhuang0808/IndicatorBarView-Android

授權:Apache License Version 2.0

為什麼開發?

這是自己的第一個 Android 開源專案,會建立這一個專案是因為自己的另外一個開源專案要用到數值指針的 UI component (謎之音:那個專案還躺在電腦中…),簡單說有點像溫度計,但是,沒有找到合適的 component。想了之後,先把這個 UI component 先開源出來好了,不過,還有蠻多事情還沒完成的 (請看 TODO),只是開源出來,能逼自己快點把這個專案弄得更成熟,或許也有更厲害的人能貢獻,這樣就自己不用寫太多了 (誤)

躺了超久的專案

如果去看 commit log 的話,會發現從 2016 年 08 月底就在動了,過了半年才有個雛形 (都已經從 Android 7.0 到 7.1.1 了)。

記得大學時候的專題,還一度想自己寫 Android 的 custom view,但是當初對 Android、Java 的熟捻程度還不夠,一直沒踏出第一步。寫 custom view 自己覺得還蠻苦的 XDD,尤其是 debug 的時候,經常遇到 Canvas, Paint 有執行,但是在 App 中就是沒出現,後來才發現,經常是 Canvas 指定的 x, y 值超出螢幕視線外,還有是 Paint 的顏色是白色 (因為背景是白的呀… 倒)。

BTW,如果有興趣開發 Android custom view 的開發者,推薦可以去觀看 Droidcon NYC 2016 – Measure, Layout, Draw, Repeat: Custom Views and ViewGroups,影片中提到蠻多開發 custom view 需要注意到的事項,會讓自己對 custom view 有更多的認識。

開源的 IndicatorBarView-Android UI 元件