本站推薦的 Chrome 瀏覽器擴充套件 (Extensions)

要使用這些擴充套件,你得先安裝 Google Chrome 瀏覽器。

書籤/稍後閱讀

  1. Save to Pocket: 快速儲存連結及網頁內容到它的「Pocket」網站,之後你可以在它的網站或行動裝置上閱讀儲存的網頁 (Pocket 行動裝置版本)。它會重新編排網頁,讓網頁更加容易閱讀。以前它的名字叫「Read it Later」。
  2. Diigo Web Collector: 網路書籤,其功能像以前「Delicious 美味書籤」的加強版。

Read more

設定 MediaWiki 可以上傳 zip 檔

MediaWiki 預設只能上傳 png、gif、jpg、jpeg 這些圖檔,我們可以在 LocalSettings.php 編輯:

$wgEnableUploads  = false;
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg' );

加入你額外想要上傳的檔案類型 (找不到這兩行的話就自己加上去):

$wgEnableUploads  = true;
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'zip', 'pdf', 'rar' );

上面的目的是為了可以額外再上傳 zip、pdf、rar 類型的檔案。可惜事與願違,上傳 pdf 與 rar 檔都沒問是,但要上傳 zip 檔卻給我出現:

MIME 類別 "application/zip" 不是容許的檔案格式。

原來是因為 MediaWiki 有設一些副檔名的「黑名單」,剛好 zip 就在其中,設定檔在: includes/DefaultSettings.php

找到內容:

$wgMimeTypeBlacklist= array(
        # HTML may contain cookie-stealing JavaScript and web bugs
        'text/html', 'text/javascript', 'text/x-javascript',  'application/x-shellscript',
        # PHP scripts may execute arbitrary code on the server
        'application/x-php', 'text/x-php',
        # Other types that may be interpreted by some servers
        'text/x-python', 'text/x-perl', 'text/x-bash', 'text/x-sh', 'text/x-csh',
        # Client-side hazards on Internet Explorer
        'text/scriptlet', 'application/x-msdownload',
        # Windows metafile, client-side vulnerability on some systems
        'application/x-msmetafile',
        # A ZIP file may be a valid Java archive containing an applet which exploits the
        # same-origin policy to steal cookies
        'application/zip',
);

將「'application/zip',」刪除即可。

至於上傳 zip 檔未來的後果會是如何...這我就不能預料了。

解決 Windows 10 自動開機的問題

查看系統的電源設定

1. 查詢最近一次電腦被喚醒的原因

C:\>powercfg /lastwake

喚醒記錄計數 - 1
 喚醒記錄 [0]
 喚醒來源計數 - 1
 喚醒來源 [0]
  類型: 喚醒計時器
  擁有者: [SERVICE] \Device\HarddiskVolume2\Windows\System32\svchost.exe (SystemEventsBroker)
  擁有者提供的原因: Windows 將執行 'NT TASK\2BrightSparks\SyncBackFree\ASUS-User\DailyBackup' 排定要求喚醒電腦的工作。

2. 查詢系統中已設定用來喚醒電腦的程序

C:\>powercfg /waketimers

沒有的話會顯示:

系統沒有使用中的喚醒計時器。

有的話會顯示:

[SERVICE] \Device\HarddiskVolume2\Windows\System32\svchost.exe (SystemEventsBroker) 設定的計時器在 下午 10:59:29 的 2017/2/11 到期。
 原因: Windows 將執行 'NT TASK\2BrightSparks\SyncBackFree\ASUS-User\DailyBackup' 排定要求喚醒電腦的工作。

你得依查詢的狀況去找出程式來關閉喚醒電腦功能。

例如,根據上面於我的電腦執行 powercfg 所得到的結果,我必須去執行 SyncBack 程式,將 Profile: DailyBackup 於排程設定中的「Wake the computer to run this task」選項給關閉。

自動維護

Windows 的「自動維護」功能也會喚醒電腦。

關閉喚醒的步驟:

  1. 進到 控制台 \ 系統及安全性 \ 安全性與維護 \ 自動維護。
  2. 將「允許排定的維護在排定的時間喚醒我的電腦」給取消勾選:

 

解決 Chrome 遺失 chrome_elf.dll 的問題

最近我的 Google Chrome 瀏覽器常出問題,不知道從哪一版開始,當要從外部的程式開啟網頁時,就會出現遺失「chrome_elf.dll」的問題:

除了出現這個錯誤之外,經常還會有網頁打不開,或是網頁停止回應的狀況!!

一開始以為是裝了哪個擴充套件造成,但問題一直解決不了!!

Read more

[JavaScript]如何防止自己的網站被別人以 iframe 蓋台嵌入 (與反制辦法)

「iframe (內置框架)」是用來在網頁中的特定位置嵌入另一個網頁。目前 Facebook、Google+、Twitter...等用來在網頁上顯示社群內容的社群元件,幾乎都是以 iframe 實作出來的。

原本框架是一種很好的應用,但如果是自己辛苦製作的網頁被別人的網站以 iframe 嵌入,因而出現在別人的網站裡,成為別人網站的一部份!!這種感覺就像是自己的心血被別人整碗捧走一樣!!

兩個解決方法

方法 1

於網頁的原始碼加入以下 Script:

<script type="text/javascript">
if( top.location != document.location ){
	top.location.href = document.location.href;
}
</script>

以上的 Script 會檢查瀏覽器最上層視窗的網址是否與目前網頁的網址一致,如果不一致,則把最上層視窗的網址改為目前網頁的網址,就醬。

方法 2 (反制辦法)

於網頁的原始碼加入以下 Script:

<script type="text/javascript">
if( top.location != document.location ){
	document.write("<h1 style='color:#FF0000'>未經授權嵌入別人的網頁是可恥的行為!!</h1>(<a href='"+document.location+"' target='_blank'>原站網址</a>)");
}
</script>

以上的 Script 會檢查瀏覽器最上層視窗的網址是否與目前網頁的網址一致,如果不一致,就顯示:

未經授權嵌入別人的網頁是可恥的行為!!
(原站網址)

我比較不喜歡與人家互嗆,所以我通常是用「方法 1」啦!

[MySQL]資料庫的備份與還原

資料庫匯出/備份

1. 備份單一資料庫:

$ mysqldump -u Username -p --opt DatabaseName > Backup.sql

2. 僅備份特定資料庫下的資料表:

$ mysqldump -u Username -p --opt DatabaseName Table1 Table2... > Backup.sql

3. 僅匯出資料表結構:

$ mysqldump -u Username -p --opt --no-data DatabaseName > Backup.sql

4. 備份全部的資料庫:

$ mysqldump -u Username -p -A --opt > AllBackup.sql

mysql/mysqldump/mysqladmin 與「登入」有關的參數說明:

  • -u Username: 用來存取 mysql 資料表的用戶名稱。此參數可省略,若省略,則表示為目前登入 linux 的用戶名稱。
  • -p: 於執行時再詢問密碼。
  • -pPassword: 用來存取 mysql 資料表的密碼,-p 與 Password 的中間不可有空格。

資料庫匯入/還原

1. 建立資料庫,再從備份檔匯入單一資料庫:

$ mysqladmin -u Username -p create DatabaseName
$ mysql -u Username -p DatabaseName < Backup.sql

2. 從備份檔匯入全部的資料庫 (不需先建立資料庫):

$ mysql -u Username -p < AllBackup.sql

狀況處理:

狀況 1.

匯入資料庫時出現錯誤訊息: Unknown collation: 'utf8mb4_unicode_ci' Unknown collation: 'utf8mb4_unicode_520_ci'

說明:

MySQL 於 v5.5.3 版之後才有「utf8mb4」的編碼格式。原本 utf8 的最大編碼長度為 3bytes,而 utf8mb4 的最大編碼長度為 4bytes,因此它比 utf8 可以儲存更多的字元。但是以常用的文字來講,utf8 已經完全足夠使用了。若不昇級 MySQL Server,則只須將匯入的字元編碼格式改為原本的 utf8。

解決方法:

先將備份檔中的 utf8mb4 字串替換成 utf8: (以下的三行指令需依照順序執行)

$ sed -i 's/utf8mb4_unicode_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4_unicode_520_ci/utf8_general_ci/g' Backup.sql
$ sed -i 's/utf8mb4/utf8/g' Backup.sql

全部替換完再進行匯入:

$ mysql -u Username -p DatabaseName < Backup.sql

狀況 2.

以 mysqldump 匯出資料庫時出現錯誤訊息: Got error: 1044: Access denied for user 'backup'@'localhost' to database 'test' when using LOCK TABLES

說明:

這錯誤訊息已說明了用來執行 mysqldump 的帳號沒有「LOCK TABLES」權限! 通常用 root 帳號匯出資料庫不會發生這個問題,因為我們會給 root 所有的權限。然而我們在設定其它帳號時可能會忘了給它設定「LOCK TABLES」權限,而執行 mysqldump 至少需要「SELECT」與「LOCK TABLES」權限才行,最好再加上「SHOW VIEW」、「EVENT」與「TRIGGER」。

解決方法:

重新授予用戶權限:

grant SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER on *.* to 'backup'@'localhost' identified by '{Password}';
flush privileges;

狀況 3.

從 cpanel 下載的 MySQL 檔案格式為 *.gz,可以用 gunzip 解壓縮:

$ gunzip Backup.sql.gz

注意: 使用 gunzip 解壓縮後,原本的 *.gz 會被刪除!!若要保留舊檔,須改用下列指令:

 $ gunzip -c Backup.sql.gz > Backup.sql

資料庫離線備份/還原

MySQL 的資料庫放在 /var/lib/mysql 下,以資料庫的名稱做為目錄的名稱。直接將 /var/lib/mysql 下的資料庫目錄用 tar 指令個別壓縮起來即可做為備份。要還原再把檔案解壓縮回去。

要以這種方式執行備份與還原都必須先停止 MySQL 的服務:

$ service mysqld stop

參考網頁

處理 DNS 的 CNAME 造成收件者錯誤的問題

第一次遇到客戶因為自己 Server 的 DNS 問題,造成我方要寄信給客戶時,收件者的 EMail Address 會於 SMTP Server 端被自動變更 (寄給 user@example.com 會變成寄給 user@other.example.com),以致於客戶收不到 EMail 的問題!! (客戶可能以為是我方的問題)

我自己測試的結果是與 DNS 的 CNAME 有關:

C:\>nslookup -type=cname example.com
  Server:  dns.hinet.net
  Address: 168.95.1.1
  example.com canonical name = other.example.com

同時我在網路上找到一篇微軟的 KB 文件,已經寫得很清楚了,我就直接把內容放上來。

Read more

免跑銀行,直接線上領取 Google AdSense 廣告收入 (西聯匯款)

2020/12/30 更新:

Google 通知,將於 2021 年初停止透過西聯匯款支付款項,所以本網頁的教學大概也沒什麼用了。
如要繼續收到 Google 支付的款項,你必須登入自己的帳戶,然後新增或選取其他收款方式 (匯款或支票)。

之前的內容:

Google AdSense

約莫等了半年,終於又收到了一筆 Google AdSense 的廣告收入了,算是農曆過年前的一個小小小紅包。

在台灣,AdSense 的用戶可以使用「西聯匯款」來進行收款,目前台灣有支援西聯匯款的銀行有京城銀行大眾銀行元大銀行

我是使用「京城銀行」,這個有點陌生的銀行。它的「網路西聯匯款」服務可以直接將我的 AdSense 廣告收益從美金轉為台幣存入我的銀行帳戶,並且不收取任何手續費、不用等待,但是會有匯損的問題

不過我今天要操作收款時,發現做為「匯款人」的 Google 的身份又改變了! 原本的身份「Google Ireland Ltd. (愛爾蘭)」,更早之前是「Google Inc. (美國)」,現在的匯款人身份則為「Google Asia Pacific Pte. Ltd. (新加坡)」!

這個付款人的資訊會影響我們能否正常收款,不過沒關係,下面會教你如何識別付款者的身份。

Read more

[JavaScript]簡易網頁下拉選單,可支援 MouseOver 與 Click 事件

在網頁界已經有很多的「下拉選單」程式了,不過似乎都搞得太過複雜或太華麗了。

其實下拉選單的原理很簡單,一開始只是先讓「子選單」隱藏,當滑鼠移至「主選單」時再讓子選單顯示。因此,只要能控制網頁元件的 display 樣式屬性就已經成功一半了。

因為本人喜歡重新發明輪子,所以也寫了一個簡易的網頁下拉選單的程式,可以做為初學者入門的參考。

在範例的原始碼中,我儘量讓程式碼看起來淺顯易懂,並且只用 JavaScript,不使用 jQuery 或其它 Framework。我也儘量多寫一些註解,希望 JavaScript 的初學者能看得懂。

Read more

加入 Spotify Premium 會員 3 個月只要 NT$19

歡慶聖誕節,Spotify 從現在起至 12/31 止,加入 Premium 會員 3 個月只需要 NT$19 元,其中包括了收聽音樂時不會突然有廣告的插播、沒有網路也可以收聽清單中的音樂...等。

  • 活動介紹與線上訂購: Click Me
  • 限非 Premium 會員申請

三個月後就會調整回原價 NT$149 元,記得要在第三個月去停止信用卡繼續付款喲!

return top