2017年12月1日 星期五

Windows「執行」指令筆記

  • Windows執行指令快捷鍵 Win + R
  • 在C:\Windows的目錄下可加入應用程式的捷徑,便可以從「執行」啟動

常用程式
calc 小算盤
mspaint 小畫家
snippingtool 剪取工具
notepad 記事本
write WordPad
cmd 命令提示字元
powershell Windows PowerShell
explorer 檔案總管
shell:startup 系統啟動資料夾

系統資訊
msinfo32 系統資訊
msconfig 系統設定
regedit 登錄編輯程式
control 控制台
dcomcnfg 元件服務
winver 顯示windows版本

系統配置
tpm.msc TPM管理
devmgmt.msc 裝置管理員
diskmgmt.msc 磁碟管理
eventvwr.msc 事件檢視器
taskschd.msc 工作排程器

2017年10月30日 星期一

Shell script 筆記

Parameter Expansion

${parameter#word}
${parameter##word}
${parameter%word}
${parameter%%word}
#跟##是從parameter前面開始匹配word,並移除成功匹配的部分,而%與%%則是從後面開始匹配。 "*"可用以表達任意長度字元。#與##的差別在於#為non-greedy而##則是greedy,%跟%%差別亦然。


Command

read [variable]
將鍵盤輸入值存入variable
-s 不在terminal顯示鍵盤輸入值
-r 不使用escape character
-p [prompt] 顯示字串prompt
-n [nchars] 讀取nchars個字元

read -rsp $'Press any key to continue...\n' -n 1
"按任意鍵以繼續"的功能實作,可用來當作batch中的pause

2017年6月11日 星期日

Regular Expression Quick Guide

Metacharacter Description
^ Matches the beginning of a line
$ Matches the end of the line
. Matches any character
\s Matches whitespace
\S Matches any non-whitespace character
* Repeats a character zero or more times
*? Repeats a character zero or more times(non-greedy)
+ Repeats a character one or more times
+? Repeats a character one or more times(non-greedy)
[aeiou] Matches a single character in the listed set
[^XYZ] Matches a single character not in the listed set
[a-z0-9] The set of characters can include a range
(pattern) Defines a marked subexpression to extract
(?:pattern) Defines a marked subexpression not to extract
x|y Matches any one of several subexpressions
? Matches the preceding subexpression zero or one time
{n} Matches the preceding subexpression n times
{n,} Matches the preceding subexpression at least n times
{n,m} Matches the preceding subexpression at least n and not more than m times

Assertion Lookbehind Lookahead
Positive (?<=pattern) (?=pattern)
Negative (?<!pattern) (?!pattern)


regex101
https://regex101.com/

2017年6月10日 星期六

在Blogger中添加CSS樣式


在Blogger中添加可以應用在所有文章內容的CSS樣式。以在其他部落格中常見的code block為例, 便於我們在張貼程式碼能時有特別的樣式highlight出來。

首先,進入Blogger的控制面板。並點選左列的「主題」,接者點選「自訂」按鈕。

接著會進入到Blogger主題設計工具的頁面。點選最左列的「進階」,接著點選「新增CSS」。 在「新增自訂CSS」中就能添加自己的CSS了!


將下面的CSS樣式輸入進去,並點選「套用至網誌」,再把要套入樣式的HTML標籤加上class='code_seg', 就能獲得跟下面樣式一樣的效果。
.code_seg {
    display: block;
    font-family: Courier New;
    font-size: 8pt;
    overflow: auto;
    background: #f0f0f0;
    border: 1px solid #ccc;
    padding: 10px 10px 10px 15px;
    max-height: 200px;
    line-height: 1.2em;
}

display: block
每個HTML的element都會有個預設的display屬性。例如:
div、p、form等的預設display為block,block的特性是會讓其內容在新的一行開始顯示,並盡可能把容器撐滿。 a、span、img等為inline,inline的element會連在一起,不會換行。

font-family: Courier New
字型設為Courier New

font-size: 8pt
字型大小設為8pt

overflow: auto
若文字超過block則自動產生捲軸

background: #f0f0f0
背景顏色設為#f0f0f0

border: 1px solid #ccc
邊框的寬度1px、樣式solid及顏色#ccc。

padding: 10px 10px 10px 15px
邊框內的內距,padding-top 10px、padding-right 10px、padding-bottom 10px及padding-left 10px。

max-height: 200px
element的最大高度200px。

line-height: 1.2em
行間距為1.2em

2017年4月14日 星期五

Git 常用指令筆記

Basic Workflow
git init 將當前目錄設為working directory
rm -rf .git 刪除git的追蹤

git status 顯示working directory中已修改檔案清單
-s 僅會顯示檔案名稱
-b 顯示分支的資訊
-s -b 僅顯示分支與檔案名稱

git add [filename] 註冊filename到staging area
git add . 註冊所有檔案

git diff 列出working directory與repository的差異
git diff [filename] 僅列出filename與repository的差異
git diff [commit1] [commit2] 比較commit1與commit2的差異

git commit 將staging area的檔案提交到repository
git commit --amend 可以用來修改上次的 commit內容及 log
git commit --amend --author="authorname <authoremil>" --no-edit 修改上次提交
的 Author,--no-edit代表不開啟編輯

git log 顯示commit的列表
git log --pretty=oneline 使用單行顯示commit的列表
gitk 使用圖形化界面顯示commit的列表


Git Config
git config --global user.name "[username]" git config --global user.email "[useremail]" 設定全局的 ~/.gitconfig設定檔中的使用者名稱及 email,通常在第一次使用 git時就設定

git config --local user.name "[username]" git config --local user.email "[useremail]" 設定此目錄 .git/config設定檔所要使用的使用者名稱及 email

git config --global --list git config --local --list 列出全局或此目錄設定檔中的設定

How to Backtrack
HEAD為最近一次的commit

git show 查看 commit的詳細記錄
ex: git show HEAD 查看最近一次commit的紀錄

git checkout HEAD [filename] 把在工作目錄中更改過的filename還原成最近commit的狀態

git checkout [commit_SHA] checkout到 commit_SHA。這時狀態為 dached HEAD state,意思是 HEAD指向某個
commit,而不是 branch。
git switch -
復原這個操作,將 HEAD重新指向 branch。
git switch -c [new_branch]
在此狀態下建立到新的 branch。

git reset [filename] 把在Staging Area中的filename移出Staging Area

git reset HEAD [filename] 把在Staging Area中的filename移出Staging Area並還原成最近的commit狀態

git reset [commit_SHA] 改變git log的history,將commit_SHA 變為最近的 commit,檔案移出 staging area

git reset --soft [commit_SHA] 將 HEAD指向 commit_SHA,不改變git log的history

git reset --hard [commit_SHA] 將 commit_SHA變成最近的 commit,移除之前所有的commit

git cherry-pick [commit_SHA] 將另一個 branch的 commit_SHA "摘下來",加進當前的branch

Git Branching
git branch 顯示目前所在分支

git branch [new_branch] 建立名為new_branch的branch
-d 刪除branch

git checkout [branch_name] 切換分支到branch_name
-b 建立名為 branch_name的分支,並切換到該分支

git merge [branch_name] 將branch_name所做的改變加到當前分支


Git Teamwork
git clone [remote_location] [clone_name] 將遠端的Repository(remote_location URL)複製到Local端命名為clone_name

git remote 顯示遠端Repository的詳細情況
git remote -v 顯示目前 remote所使用的名稱及 URL
git remote set-url [remote_name] [remote_url] 修改 remote所使用的 URL

git fetch 更新Local端Repository


標籤
git tag 列出標籤
git tag [tag_name] 輕量級標籤(lightweight)
git tag -a [tag_name] -m [message] commit_SHA 含附註標籤

git push origin [tag_name] 將標籤推送到遠端
git push --tags 推送所有標籤到遠端

Submodule
git submodule add [remote_location] [submodule_name] 將遠端的Repository(remote_location URL) 設為submodule,並放到submodule_name folder中

Patch
git format-patch -[n] 產生最近n個commit的patch

git format-patch [commit_SHA] 產生commit_SHA之後到最新commit的所有patch (不含commit_SHA)

git format-patch -1 [commit_SHA] 只產生commit_SHA的patch

git apply [patch] 匯入patch但不會commit
git apply --check [patch] 檢查patch是否能apply成功,不會做任何改動

git apply -R [patch] 撤銷 patch但不會commit

Stash
git stash push 將當前的修改存到 "stash entry",並恢復到 HEAD

2017年4月8日 星期六

製作含有USB3.0 Driver的Windows 7開機隨身碟

由於Windows 7本身並沒有集成各家廠商的USB3.0 Driver,所以在有些主機板只有USB3.0 port的情況下,會遇到沒有辦法安裝Windows 7的情況。

所以本篇介紹使用Windows 7* USB 3.0 Creator UtilityDISM,來製作含有USB3.0 Driver的Windows 7開機隨身碟,這樣就能夠使用USB Drive來安裝並操作Windows 7。

這兩種工具都需事先準備好可開機的Windows 7 USB Drive。


Windows 7* USB 3.0 Creator Utility

若工作機是Windows7,下載Win7-USB3.0-Creator-V3-Win7Admin版本。而Windows8.1及Windows10就下載Win7-USB3.0-Creator-V3。

此Utility只適用於Intel USB3.0公板Driver,Driver已經包在裡面,所以不用再另外下載。

1. 開啟Windows7* USB3.0 Creator Utility目錄,在USB_Drivers的目錄下就是此Utility所提供的USB3.0 Driver,另外Utility及DISM的使用方法可以參考Win7-USB3.0-Creator-Readme-v3.pdf。

2. 執行Installer_Creator.exe。

3. 在USB Drive Path選擇Windows 7開機隨身碟根目錄,並執行Create Image

4. 操作完成後,USB 3.0 Driver就被掛載到USB Drive中了。


DISM Graphical User Interface (GUI) Tool
DISM在使用前除了可開機的Windows 7隨身碟外,還需要到主機板廠商的網站下載支援該主機板的USB3.0 Driver。如果沒有的話,就要到Intel或AMD的網站下載適合主機板的公板Driver。要注意Driver是否支援Windows 7

以Intel公版的USB3.0 Driver為例。在Intel的下載頁面https://downloadcenter.intel.com,搜尋Intel® USB 3.0 eXtensible Host Controller Driver就能找到。

1. 建立工作目錄來方便我們操作DISM。例如D:\WIM用來放wim檔案,D:\WIM\MOUNT作為DISM的掛載點。並從下載好的Intel(R)_USB_3.0_eXtensible_Host_Controller_Driver中複製\Drivers\Win7\x64放在D:\WIM\USB3。

2. 從Windows7開機隨身碟的目錄\source複製我們要掛載driver的image檔,install.wim及boot.wim到D:\WIM。

3. 使用系統管理員權限執行DISM GUI.exe

4. 在Mount Control標籤頁,點擊Choose WIM,選擇剛放在D:\WIM下的install.wim。並依據USB Drive中的Windows 7版本選擇index號碼。
1 = Home Basic
2 = Home Premium
3 = Professional
4 = Ultimate

5. Choose Folder選擇D:\WIM\MOUNT作為Mount Location,並確認不要勾選Read Only

6. 執行Mount WIM,並等待一段時間完成。

7. 接著切換到Driver Management標籤頁,點擊Choose Driver,選擇放在D:\WIM\USB3的x64目錄。

8. 如果Driver是unsigned的話,勾選Force Unsigned,並確認有勾選Recurse。之後執行Add Drivers

9. 回到Mount Control標籤頁,點擊Dismount WIM。選擇YES確認變更,並等待一段時間完成。

10. 接著重複相似的步驟。在Mount Control標籤頁點擊Choose WIM,選擇D:\WIM下的boot.wimindex選擇2(Windows Setup。index 1為Windows PE)。Choose Folder選擇D:\WIM\MOUNT。一樣不勾選Read Only

11. 執行Mount WIM,並等待一段時間完成。

12. 切換到Driver Management標籤頁,點擊Choose Driver,選擇D:\WIM\USB3的x64目錄。

13.  如果Driver是unsigned的話,勾選Force Unsigned,並確認有勾選Recurse。之後執行Add Drivers

14. 回到Mount Control標籤頁,點擊Dismount WIM。選擇YES確認變更,並等待一段時間完成。

15. 最後再將修改過的install.wim及boot.wim複製回USB Drive的\source目錄下,取代原本的檔案,含有USB3.0 Driver的開機隨身碟就完成了。