[RouterOS] 讓 RouterBoard 支援從 Internet 喚醒 (WOL) 區網內的電腦

RouterOS version: 6.39.2

要從 Internet 喚醒區網內的電腦有三個部份要設對,分別是電腦要啟動 WOL,RouterOS 要建立相關規則,WOL clinet 軟體要設定正確。

RouterOS 部份只需建立兩條規則即可,以下是可以喚醒區網中兩台電腦的範例。

規則1: 防火牆設定

繼續閱讀 “[RouterOS] 讓 RouterBoard 支援從 Internet 喚醒 (WOL) 區網內的電腦”

[VC] UAC + requireAdministrator + 開機自動執行

在 UAC 開啟的情況下,要開機自動執行需管理管權限的(requireAdministrator) 的程式,必需使用 Windows 的排程設定(schtasks)來啟動程式,才不會在開機時出現 UAC 要求權限的視窗。

範例:

 
void RegAutoRun(bool cmd)
{
  if (cmd == 1)
  {
    //加入啟動排程
    CString str;
    str.Format(L"/Create /F /TN \"AppName\" /SC ONLOGON /RL HIGHEST /TR \"\\\"%s\\App.EXE\\\"\"", GetLaunchDir());
    ShellExecute(NULL, _T("open"), _T("schtasks.exe"), str, _T(""), 0);
  }
 else
 {
  //從排程中移除
  ShellExecute(NULL, _T("open"), _T("schtasks.exe"), _T("/Delete /F /TN \"AppName\""), _T(""), 0);
  }
}

[C++] 函式指標

typedef 傳回值 (*函式指標名稱) (傳遞參數) ;

typedef int (*PFUN) (int x, int y);

int ADD(int x, int y) {
    return x+y;
}

int SUB(int x, int y) {
    return x-y;
}

main()
{
    int n;
    PFUN pf = NULL;

    pf = ADD;
    n = pf(10,5);  //n=15

    pf = SUB;
    n = pf(10, 5); //n=5
}

[VC] 結構的對齊 struct member alignment

compiler為了程式的執行效率,大都會對程式進行最佳化的動作,在結構中則會進行資料對齊以加快執行速度,作業系統、Compiler、CPU都影響資料對齊的邊界 (boundary alignment)。

Wiki – Data structure alignment 說明

來看看這個例子:

 
struct
{
 char c1;  //1 bytes
 char c2;  //1 bytes
 int  i1;  //4 bytes
 char c3;  //1 bytes
}S;

繼續閱讀 “[VC] 結構的對齊 struct member alignment”

[Synology NAS] 實作可在 Synology NAS 上執行的 SVN Docker Image

簡介 Docker

img_56a5b3dd208fdDocker 允許開發者可以封裝 (package) 應用程式與其所有相依軟體成為一個映象檔 (Image),映象檔中包含了完整的檔案系統與執行所需要的軟體元件、應用程式,這可以保證映象檔在任何 Docker 伺服器 (也稱為 Docker Engine) 上都能有相同的執行結果。

Docker 能進行快速部署,提供獨立運作的作業環境,支援許多平台,包括實體機器、虛擬機、公有雲、私有雲、個人電腦、伺服器等。

Docker 是一個輕羽量級的虛擬引擎,是在作業系統層面上實作虛擬化,直接使用本地主機的作業系統,而傳統虛擬化方式則是在硬體層面實作。

img_56a5b5c72e6ee 繼續閱讀 “[Synology NAS] 實作可在 Synology NAS 上執行的 SVN Docker Image”

[Synology NAS] 修正 DSM6 beta2/RC .htaccess 問題

在 DSM6 Beta2 或 DSM6 RC 啟用 wordpress 後,如果使用 Hyper Backup 備份 MariaDB, 在每次備份後 web/wordpress/.htaccess 檔案就會被誤刪。

解決方法:

  1. 暫時先不要備份 MariaDB,等 Synology 修正問題。

2. 在排程加入自定義指令,每次備份完就還原/重建 .htaccess 檔案。

3. 修改  /var/packages/WordPress/scripts/start-stop-status 檔案, 約在 47 行位置

# Setup .htaccess
[ -e "$HTACCESS_FILE" ] && -f mv $HTACCESS_FILE $HTACCESS_FILE.syno

改成

# Setup .htaccess
[ -e "$HTACCESS_FILE" ] && mv -f $HTACCESS_FILE $HTACCESS_FILE.syno

即可。

[Synology NAS] 同步 iTunes 與 Audio Station 音樂播放清單 (舊)

本文為舊版本文章,新版文章請看: [Synology NAS] 同步 iTunes 與 Audio Station 音樂播放清單 (新)

不知有沒有人跟我一樣,在電腦上使用 iTunes 整理音樂,在手機使用 Synology Audio Station (DS Audio) 播放音樂。ilx2sasp 是我寫的小程式,可以單向同步 (iTunes -> Audio Station) 音樂播放清單,ilx2sasp 執行後會長駐在系統通知區域,只要 iTunes 播放清單有變更,ilx2sasp 就會自動更新 Audio Station 的播放清單。

這裏說明一下 ilx2sasp 的工作方式,ilx2sasp 只是單純去解析 iTunes Library XML 中的播放清單,將其轉成 Aduio Station 的播放列表格式 (*.m3u) 並儲存在 playlists 資料夾。再利用 Cloud Station 的同步功能, 將音樂檔案與播放列表同步到 NAS Audio Station。

當然也可以在 Windows 中新增磁碟機指向 NAS music 資料夾,然後在 iTunes 偏好設定中變更資料庫位置,指向新增磁碟機。因為資料庫放在 NAS 上,在 iTunes 中操作時因為讀寫都需透過 LAN,速度太慢我不喜歡,所以不使用此種方法。

採用 Cloud Station 同步會在 PC 與 NAS 都保留一份檔案,雖然佔空間但也較安全,不怕遇到硬碟損毀的情況,下面是針對同步方法設定說明。

在使用程式前確認下列都已安裝:

繼續閱讀 “[Synology NAS] 同步 iTunes 與 Audio Station 音樂播放清單 (舊)”

[WordPress] WordPress 與 Google Web Fonts

WordPress 控制台與某些佈景主題會使用 Google Fonts,如果因為某些特殊原因不想使用 online web fonts 可以將其禁用或將 web fonts 下載下來,由自己的 WordPress 網站提供。

所謂的 online web fonts 是指:當你的網站使用了 google web fonts 時,使用者瀏覽你的網站時瀏覽器會自動連線到 google web fonts 伺服器自動下載需要的字型來使用。

好處是字型不會因為作業系統不同而造成顯示的畫面不一樣,而缺點則是因為要下載字型所以網路流量會大一點。

而大陸地區因為 google 服務被完全封鎖封的關係,那會造成在瀏覽有使用 google web fonts 的網站時,速度非常慢。

如何檢查 WordPress 是否使用 google web fonts ?

繼續閱讀 “[WordPress] WordPress 與 Google Web Fonts”

[EDK2] 使用 VS2008+EDK2 build EFI Shell 可執行檔

開發環境: Windows7 32 + VS2008 + WINDDK 7600.16385.1 
開發目標: EFI Application for AMI BIOS UEFI SHELLx64 

下載 EDK2

使用 TortoiseSVN  將 EDK II (http://www.tianocore.org/edk2/) 目錄下所有檔案全部下載。

EDK II 相關文件可以 http://www.tianocore.org/edk2/ 找到。

設定 EDK2

繼續閱讀 “[EDK2] 使用 VS2008+EDK2 build EFI Shell 可執行檔”

[PHP] UTF8 簡繁轉換

UTF-8 最大的一個特點,就是它是一種長度不固定的編碼方式。它可以使用 1~6個 bytes 表示一個字元,根據不同的字元而變化 byte 長度。 

在 2003年11月UTF-8被RFC 3629重新規範,只能使用原來Unicode定義的區域,也就是最多 4 bytes ( U+0000到U+10FFFF )。

UTF-8的編碼規則很簡單,只有二條:

1)對於 1 byte 的字元,byte 的最高 bit 設為 0,後面 7 位為這個字元的 unicode碼。因此對於英語字母來說,UTF-8 編碼和 ASCII 碼是相同的。

繼續閱讀 “[PHP] UTF8 簡繁轉換”

[Ubuntu] Ubuntu 顯示 grub 開機選單

在單一 ubuntu 狀況下,grub預設是不顯示的,如果要強迫顯示就必需修改grub文件:
sudo gedit /etc/default/grub

找到
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
改成
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true

再來更新 grub 設定即可:
sudo update-grub

[Synology] Synology Audio Station 歌詞外掛

自己寫的兩個歌詞外掛, 讓 Synology AudioStation 或是 DS Audio 在播放歌曲時可以顯示動態歌詞。

  1. 魔鏡歌詞外掛 (mojim1.0.aum) – 歌詞來源就是魔鏡歌詞網

2. 千千靜聽歌詞外掛 (ttplayer1.0.aum) 是- 歌詞來源為千千靜聽伺服器,外掛會將歌詞自動轉為繁體中文。外掛是參考網路上其他人的發表的歌詞外掛修改而成,因為千千靜聽伺服器會擋台灣 IP,因此加入透過 proxy 來取得歌詞的功能。

繼續閱讀 “[Synology] Synology Audio Station 歌詞外掛”

[PCIE] PCIE Configuration Space – Class Code

Class Code The upper byte (at offset 0Bh) is a base class code which broadly classifies the type of function the device performs
The middle byte (at offset 0Ah) is a sub-class code which identifies more specifically the function of the device
The lower byte (at offset 09h) identifies a specific register-level programming interface (if any) so that device independent software can interact with the device

Class Codes

The Class Code, Subclass, and Prog IF registers are used to identify the device’s type, the device’s function, and the device’s register-level programming interface, respectively. The following table represents the possible device types:

繼續閱讀 “[PCIE] PCIE Configuration Space – Class Code”