2019 年的 SEO…

Backlinko 分享了在 2019 年的 SEO 指南,用淺顯易懂的方式介紹了 Google 的 RankBrain:一個根據使用者行為來學習的搜尋結果排名方式。另外 Google 也提出了 Dwell Time 的概念──瀏覽者在搜尋的目的頁面待了多久的時間,來幫助 Machine Learning 的 Model 更加完善搜尋結果的排名。

另外值得一提的點是,Voice Search(就是 Google Home / Alexa)等,可能是未來在 SEO 領域會越來越重視的地方。當 FAANG 這些大廠商在智慧家電領域投資越來越多的時候,人機的交互介面可能從傳統的鍵盤滑鼠螢幕,轉換到影像聲音。目前智慧音箱仍然沒有特別的殺手級應用,並不像智慧手機十年前剛出現的時候迅速的改變世界;另外智慧音箱仍有隱私的爭議,這些問題仍然是未來智慧家電必須要一個一個解決的。

最後,傳統的SEO觀念,包含連入連結、原創內容,以及喊了很久的 Mobile First 策略,仍然是 2019 年 SEO 觀念中很重要且不可或缺的要點。基本功仍然要紮實,才有可能在其他的 Add-on 脫穎而出。

HCE 手機信用卡體驗心得

新聞說台灣年底前會開放 Apple Pay、Android Pay 跟 Samsung Pay,但是 HCE 手機信用卡已經先開放使用了(需安裝 tWallet+)。目前支援的銀行(台銀、華南、永豐等…)都不是發卡量最大的幾家,而且只支援 Master 卡,但整體來說使用上還蠻方便的。

之前就申請了 HCE 信用卡,但一直沒機會測試,今天到了遠百剛好有機會可以試試看。
首先要先輸入密碼:

店員看到還以為是 Friday 錢包…XD 我直接跟店員說用信用卡模式就刷過了,一次 OK。

刷卡後馬上就能查到消費紀錄:

目前只支援 Master 卡,希望能儘快支援 JCB…
我猜 Apple Pay 跟 Android Pay 初期也只會支援發卡量大的銀行(中信、國泰)的卡,但目前我的主力卡都不是這幾家啊…XD

GitHub 的 chatop (2016)

Velocity 2016 裡面,GitHub 分享了如何用 Slack 為平台,建立機器人來輔助開發流程(如 CI、Deployment、Monitor等等)。

對於開發者來說,可以一邊討論就一邊把事情完成,整合了 README 等文件撰寫的工作;對於 Operator 來說,由於討論的過程在 Slack 上,也可以設計一個流程,當有事件發生時就 Alert OP,這樣可以讓 OP 在開發過程中也被告知,獲得必要資訊。

缺點就是資訊流通太快了,可能開完一個一小時會議之後,事情跟前一個小時差距就變得很大 XD 這點是需要團隊成員適應的地方。

Galera 3.x 的 Replication Relaying

Galera 3.x 為了多機房間的 Replication,設計了 gmcast.segment 這個參數。前陣子 Percona 的人出來介紹了這個參數背後的機制:Automatic replication relaying in Galera 3.x (available with PXC 5.6)。大致摘錄如下:

  1. 同一個機房內資料庫的 gmcast.segment 參數要設為相同。
  2. 機房與機房之間的 Replication 會自動找一個 node 進行 Relay,以降低 Replication 需要的頻寬。

    Image from: Automatic replication relaying in Galera 3.x (available with PXC 5.6)

如果沒有設定 gmcast.segment 參數的話,同樣是三個 Node,會耗用兩倍的頻寬:

Image from: Automatic replication relaying in Galera 3.x (available with PXC 5.6)

原文中另外有對作了 segment 與不作 segment 的 commit latency 進行比較,結果作了 segment 的 commit latency 並沒有比較高。如果有跨機房需求,應該要設定 gmcast.segment。

MySQL 5.6 的 Index Condition Pushdown

MySQL 5.6 以前的 Multi-column Index,當位於 index 中間的 column(如下例的 j)需要進行 range query 的時候,只能利用到部分的 index,需要另外讀取資料列的內容來進行判斷。舉例來說,如果有一個 Table 結構是這樣:

CREATE TABLE mytable (
id int not null auto_increment primary key,
i int(11) NOT NULL,
j int(11) NOT NULL,
k int(11) NOT NULL,
val char(10) NOT NULL,
KEY ijk (i,j,k)
) ENGINE=InnoDB;

在 MySQL 5.6 之前,SQL Query 「SELECT sum(length(val)) FROM T WHERE i=1 AND j<100 AND k=100」 會把所有 i=1 的資料列拉出來,逐一比較 j 與 k 的值。MySQL 5.6 的 Index Condition Pushdown (ICP) 功能,把這個動作改為比較 Index tuple 而非資料列內容,可避免拉出整個資料列,降低磁碟 IO(因為資料列通常比 Index 大)。

詳細的說明可以看 MySQL 的官方文件:Index Condition Pushdown Optimization 與 Percona 的測試:Multiple column index vs multiple indexes with MySQL 5.6

Firefox 27 將移除 Flash Plugin,改用 Javascript Flash VM “Shumway” 代替

Geek.com: Firefox 27 will kill the Flash plug-in on January 21 看到這個消息,就試著去裝了 Shumway 的 Extension

要跑起來花了一點功夫…

  • 要把 Flash Block 關掉
  • 要把 Flash Plugin 改為「啟用時詢問」
  • about:config 內要把 shumway.ignoreCTP 設成 true。原本沒有這個設定,要自己加上。

跑起來結果如下:

會看到下方出現 Shumway 的字樣,表示這個 SWF 檔案是用 Shumway 解析的。

另外測試了幾個影音網站,全部都不能動。YouTube 是直接強制用 Flash Plugin:

Vimeo 是黑色畫面:

ニコニコ動画也不會動:

距離 1/21 剩下三個多月了耶,這樣真的不會大爆炸嗎 😮

Linux 的閏秒問題

根據 Wikipedia 閏秒這個條目,最近一次的閏秒剛好發生在 GMT 2012/6/30 23:59:60,也就是台北時間昨天早上 8:00 左右。結果踩到了 Linux 以及一些軟體的 Bug:

只要重開 OS / App 就可以解決問題。

使用 Virtual Box Headless 跑 Virtual Machine

VirtualBox 是 Sun (後來被 Oracle 買下) 開發的一套虛擬化軟體。他的 Host OS 可以是 Windows, Linux, MacOS, FreeBSD。除此之外,VirtualBox 可以在 Terminal 下執行,顯示的畫面由 RDP/VNC 輸出,亦即 Headless 模式。要特別注意的是,RDP 輸出僅限於專屬授權版本,OSE (Open Source Edition) 版本是沒有這個功能的。

要使用 VNC 輸出,必須在安裝的時候加入 VNC 支援:

# cd /usr/ports/emulators/virtualbox-ose; make WITH_VNC=yes all install clean

安裝好 VirtualBox 之後,必須再安裝 kernel module:

# cd /usr/ports/emulators/virtualbox-ose-kmod; make install clean

接著把需要的 Kernel Module 載進來:

# kldload vboxdrv; kldload vboxnetadp; kldload vboxnetflt

之前寫在 /boot/loader.conf 會導致開機時 Kernel Panic,但如果開完機手動載入就不會,目前還沒找出原因。

接下來新增一個 Virtual Machine:(以下都可以不需要 root 權限)

% VBoxManage createvm winxp --register

然後設定 VM 的資源需求:

% VBoxManage modifyvm winxp --acpi on --ioapic on --memory 1024 --cpus 2 --nic1 bridged --nictype 82540EM --bridgeadapter1 em1

以上的範例分配了 1024MB (1GB) 的 RAM 與 2 個 Virtual CPU 給 winxp 這個 VM,另外建立了一張虛擬網卡,型號為 Intel 82540EM,橋接到實體的 em1 這張網卡上。

再來建立一個新的 120GB 虛擬硬碟:

% VBoxManage createhd --filename winxp --size 122880

在 VM 裡增加一個 IDE Controller:

% VBoxManage storagectl winxp --name "IDE Controller" --add ide

把硬碟與安裝 ISO 檔連接到 IDE Controller:

% VBoxManage storageattach winxp --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium winxp
% VBoxManage storageattachwinxp --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium winxp.iso

接著就可以開機了:

% VBoxHeadless -s winxp --vnc --vncport 5900 --vncpass password

執行成功後,可以用 VNC 連入看到安裝 Windows XP 的畫面:

關機、重開機可以使用 VBoxManage 來完成:

% VBoxManage controlvm winxp poweroff

VP8 Open Source,名為WebM

這幾天Google IO 2010的消息之一:VP8 Open Source,命名為WebM,程式碼本體以 3-clause BSD style 授權發布,而Bitstream檔案格式以CC-by 3.0發布。

目前 FirefoxOpera 的使用者可以下載 WebM 的測試 build。Chromium (Chrome的開放原始碼版本) 也已經可以取得原始碼自己編譯,而預先編譯好的版本 (dev channel build) 還要等個幾天。

目前 YouTube 已經支援以 VP8 播放影片,只要開啟 HTML 5 模式,然後在影片URL後面加上 &webm=1 即可。

Flash 已經宣佈會在接下來的版本內建支援WebM,而微軟也宣佈將在IE9中支援 ((使用者必須在系統內安裝相關的 codec))。接下來就看 Apple 的反應了。

用 USB 隨身碟安裝 Windows 2008 Server 與 Windows 7

今天打算把閒置不用的機器灌成 Windows 2008 Server 來玩,結果不管怎麼試,DVD 就是不能開機。最後火大直接找有沒有辦法用 USB 隨身碟來安裝,結果果然找到了這篇文章:Q: Can Windows 2008 install from USB Key?

必須注意,這個作法只能在 Windows Vista 下作才能成功,Windows XP 的 diskpart.exe 版本不同。

  1. 執行 diskpart.exe
  2. list disk 找出 USB 隨身蝶的 ID
  3. select disk <id>
  4. clean
  5. create partition primary
  6. select partition 1
  7. active
  8. format fs=fat32 quick
  9. assign
  10. exit
  11. 接著執行 robocopy.exe D: I: /s
    (D:為放有 2008 DVD 的光碟機代號,而I: 為USB隨身碟的代號)

copy 完了以後,放到想安裝的機器上用 USB 隨身碟開機就可以了。在文章的 Comment 有人提到也可以用同樣的方法安裝 Windows 7,我自己是沒試過,試過的朋友可以另外寫一篇 Blog 來看看有沒有需要注意的問題。