2023年1月18日 星期三

Uninstalling HEVC Video Extensions from Windows

Microsoft store packages are usually APPX format installations (HEVC Video Extensions is installed as APPX package)

You will need to use PowerShell with administrative privileges.

- Execute following command in powershell, it will list all the APPX packages installed on the system.

Get-AppxPackage | select Name,PackageFullName,NonRemovable

- Go thru the list and find the HEVC package in the list, in my case it was named Microsoft.HEVCVideoExtension_2.0.60091.0_x64__8wekyb3d8bbwe

- Next execute following command to uninstall this package:

Remove-AppxPackage <package name>


e.g. Microsoft.HEVCVideoExtension_2.0.60091.0_x64__8wekyb3d8bbwe


this will uninstall the package.


Now you can again go to microsoft store and install the package.

2019年4月24日 星期三

git刪除遠端的commit

1. 先退到相應的本地版本
# git reset --hard <commit>

* 使用 --hard 參數會拋棄當前的修改
* 使用 --soft 參數的話會回退到之前的版本,但是保留當前工作區的修改,可以重新提交

2. 
覆蓋遠端
# git push origin <branch> --force

* 參數--force強制忽略本地的版本落後於遠端的版本

2016年12月29日 星期四

Linux手動交換SSH Key

產生SSH Key的方法: ssh-keygen -t rsa -C "deray.xu@email.com"
"id_rsa" and "id_rsa.pub"


複製已經產生的"id_rsa" and "id_rsa.pub"到"~/.ssh"

$ chmod 600 id_rsa
$ chmod 644 id_rsa.pub
$ eval $(ssh-agent -s)
$ ssh-add

2016年10月2日 星期日

iTunes 認不到 iPhone

1. 在裝置管理員中,找到Apple iPhone,右鍵>內容
2. 上方選單 驅動程式>更新驅動程式
3. 選擇"從清單或特定位置安裝(進階)">下一步
4. 選擇第一個"在這些位置中尋找最好的驅動程式",並勾選"搜尋時包括這個位置"
    然後瀏覽選取以下路徑:C:\Program Files\Common Files\Apple\Mobile Device Support\Drivers
    然後下一步>完成
5. 開啟itunes,偵測到iPhone了

2016年8月9日 星期二

C語言巨集、單井號(#)和雙井號(##)

C(和C++)中的巨集(Macro)屬於編譯器預處理的範疇。
下面對常遇到的巨集的使用問題做了簡單總結。

單井號(#)和雙井號(##)

(#)的功能是將其後面的巨集引數進行字串化操作(Stringfication):

#define WARN_IF(EXP) /
do{ if (EXP) /
fprintf(stderr, "Warning: " #EXP "/n"); } /
while(0)

實際使用會出現下面的替換過程:

WARN_IF (divider == 0);

被替換為

do {
if (divider == 0)
fprintf(stderr, "Warning" "divider == 0" "/n");
} while(0);

定義單行巨集:主要有以下三種用法。

1) 前加##或後加##,將標記作為一個合法的識別字的一部分,例如:

#define A(x) T_##x // int A(1) = 10; 等效於 int T_1 = 10;
#define A(x) Tx##__ // int A(1) = 10; 等效於 int T1__ = 10;

2) 前加#@,將標記轉換為相應的字元,注意:僅對單一標記轉換有效:

#define B(x) #@x // B(a) 等效 'a',B(1) 等效 '1',但B(abc)卻不甚有效。

3) 前加#,將標記轉換為字串。

#define C(x) #x // C(1+1) 等效於 "1+1"


(##)連接子(concatenator),
            其功能是在帶參數的巨集定義中將兩個Token聯接起來,從而形成一個新的Token。
    但它不可以是第一個或者最後一個子串。

譬如做一個功能表項目命令名稱和函數指標組成的結構陣列,並在函數名和功能表項目命令名之間有直接名字上的關係:

struct command
{
  char * name;
  void (*function) (void);
};

#define COMMAND(NAME) { NAME, NAME ## _command }

struct command commands[] = {
  COMMAND(quit),
  COMMAND(help),
  ...
}

COMMAND在這裡充當一個代碼生成器的作用,這樣可以在一定程度上減少代碼密度,
間接地也可以減少不留心所造成的錯誤。
我們還可以n個##符號連接 n+1個Token,這個特性也是#符號所不具備的。譬如:

#define LINK_MULTIPLE(a,b,c,d) a##_##b##_##c##_##d

typedef struct _record_type LINK_MULTIPLE(name,company,position,salary);

// 這裡這個語句將展開為:
// typedef struct _record_type name_company_position_salary;

MSDN上的一個例子:

#define paster( n ) printf( "token" #n " = %d", token##n )
int token9 = 9;

// Main中調用 paster( 9 ); 這個語句將展開為:
// printf( "token" "9" " = %d", token9 );

注意到在這個例子中,paster(9); 中的這個”9”被原封不動的當成了一個字串,
與”token”連接在了一起,從而成為了token9。
而 #n 也被”9”所替代。可想而知,上面程式運行的結果就是在螢幕上列印出token9=9

2016年7月12日 星期二

Ubuntu mount folder automatically

Create your username/password file for access server

# sudo -s
# nano /root/.smbcredentials

Add the following to it

username=deray.xu
password=userpassword


Edit /etc/fstab

#nano /etc/fstab

Add the following to it
//file.server.com/folder /home/deray/mount cifs credentials=/root/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777,domain=deray.com,sec=ntlm 0 0


直接寫上帳號密碼的方式:
//file.server.com/folder /home/deray/mount smbfs defaults,username=deray.xu,password=userpassword,_netdev,file_mode=0777,dir_mode=0777 0 1


安裝cifs支援
# sudo apt-get install cifs-utils

Uninstalling HEVC Video Extensions from Windows

Microsoft store packages are usually APPX format installations (HEVC Video Extensions is installed as APPX package) You will need to use Pow...