顯示具有 program_tool 標籤的文章。 顯示所有文章
顯示具有 program_tool 標籤的文章。 顯示所有文章

2022年6月13日 星期一

正則表達式的 URL 解法

 正則表達式的 URL 解法

前言

  URL 是個常見的正則表達式的應用,如果自己寫很浪費時間,所以在網上找了個使用範例,在此做個紀錄。


內容

  在 [ www.796t.com ] 匹配URL的正則表示式解析 裡可以找到,實際的運用如下

URL 的正則表達式


圖中的正則表達式使用的是"((http|ftp|https)://)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\&%_\./-~-]*)?",如果不需要通訊協定只需把前方的"((http|ftp|https)://)"截掉即可。


參考資料

[ www.796t.com ] 匹配URL的正則表示式解析

[ coding.tools ] 正則表達式在線測試工具

2022年6月6日 星期一

正則表達式的 E-mail 解法

 正則表達式的 E-mail 解法

前言

  最近臨時需要驗證 E-mail ,本想很簡單直接上網找了幾個現成的來用,但發現都有些小毛病,最後找到一個比較正確的,在此做個紀錄。


內容

  在 [ codertw.com ] 郵箱/郵件地址的正則表達式及分析(JavaScript,email,regex) 裡可以找到可用的正則表達式,實際的應用如下

E-mail 的正則表達式


使用的正則表達式是"([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})",這個結果實驗後可以符合大多狀況。


參考資料

[ codertw.com ] 郵箱/郵件地址的正則表達式及分析(JavaScript,email,regex)

[ coding.tools ] 正則表達式在線測試工具

2022年5月23日 星期一

正則表達式的非貪心量化

 正則表達式的非貪心量化

前言

  最近在 [ zh.wikipedia.org ] 正規表示式 裡發現非貪心量化的寫法,在此把學習的過程做個紀錄。


內容

  範例如下

const reg = /\d+?/dg;
let s = '123_456,12_34';
for( const match of s.matchAll(reg) ){
  console.log(match.indices );
}
//Result
//[[0, 1]]
//[[1, 2]]
//[[2, 3]]
//[[4, 5]]
//[[5, 6]]
//[[6, 7]]
//[[8, 9]]
//[[9, 10]]
//[[11, 12]]
//[[12, 13]]


所謂的非貪心量化是指在 + 、 * 、 ? 與 {,}的後方再加一個"?"這樣可以打搜尋的結果分割成每一個符合條件的個體,範例如果只使用"\d+"的話,搜尋的結果只會有 4 個,加了"?"後就變成每個數字都是結果了。


參考資料

[ zh.wikipedia.org ] 正規表示式


2022年5月16日 星期一

簡易的身分證字號的正則表達式

 簡易的身分證字號的正則表達式

前言

  最近在 [ zh.wikipedia.org ] 正規表示式 裡發現身分證字號的正則表達式,在此做個紀錄。


內容

  範例如下

簡易的身份證字號的正則表達式


表達是寫法是"\w[1289]\d{8}",要注意的是身份證字號的第一個數字只可能是 1 、 2 、 8 或 9 ,第二個身分證字號不符合是因為數字開頭不符合,當然這畢竟是簡易的,並非身份證字號的完整規則。


參考資料

[ zh.wikipedia.org ] 正規表示式

[ coding.tools ] 正則表達式在線測試工具

2022年5月2日 星期一

正則表達式的檢查非換行字元

 正則表達式的檢查非換行字元

前言

  最近看到正則表達式裡有"."的寫法,在此做個紀錄。


內容

  "."的寫法範例如下

"."的用法

查了一下 [ developer.mozilla.org ] 正規表達式 後解說如下"匹配除了換行符號之外的單一字元",在範例裡所有有"n"的內容都匹配了,但最後一個"n"卻不匹配,原因是因為它前方有換行符號,所以"."也可以換成"[^\r\n]",不過"."比較簡短就是了。


參考資料

[ developer.mozilla.org ] 正規表達式

[ coding.tools ] 正則表達式在線測試工具

2022年4月25日 星期一

在正則表達式過濾特定結尾的寫法

在正則表達式過濾特定結尾的寫法 

前言

  在 [ developer.mozilla.org ] 正規表達式 裡發現有個寫法我從來沒用過,在此把學習的過程做個紀錄。


內容

  在 [ developer.mozilla.org ] 正規表達式 裡發現有個寫法是過濾特定結尾的寫法,語法是"x(?=y)"與"x(?!y)","x" 的部分是要取得的開頭,"y"的部分則為結尾,"?="表示符合的結尾是結果,"?!"代表的是不符合的結尾是結果,聽起來有點難懂,可以利用 [ coding.tools ] 正則表達式在線測試工具 來實驗,實驗結果如下

使用"?="的寫法


使用"?!"的寫法

在使用"?="的寫法可以看到"That"並不會被當結果,只有"This"被當成結果,且結果只有"Th"的部分,並不包含"is",所以這個語法可以把它解釋成過濾特定結尾,"?!"的寫法其實就是相反的邏輯,不符合的結尾都是結果,所以只有"That"是結果,這兩個語法可以搭配"|"來過濾不同的結尾。

  這個寫法是專門針對結尾有特定規則的應用,目前沒想到哪裡用的到,不過還是學習了。


參考資料

[ developer.mozilla.org ] 正規表達式

[ coding.tools ] 正則表達式在線測試工具

2022年4月18日 星期一

正則表達式的剃除字元的用法

 正則表達式的剃除字元的用法

前言

  最近發現正則表達式有剃除字元的用法,雖然還沒想到在哪可以用到,但還是仔此做個紀錄。


內容

  一般如果要用正則表達式檢查單一數字會使用"\d",有或是"[0-9]",中括弧內可以自由地填入允許的字元,但最近發現有相反的寫法,如果要除了數字以外都允許的話,可以寫作"[^0-9]",又或可以用"\D"來代表,用法看起來相當直覺,所以我做了"[^\D]",這樣的結果其實和"[\d]"是一致的,可以把"^"當作是"反閘"的邏輯來想,這可能不讓人困惑,那如果是"[\d\D]"呢?,這樣會變成任何的字元都符合條件,可以想成中括弧內的字元都是用"或閘"邏輯來連結,還有一件有趣的事是通常"[\D]"可以寫作"[^0-9]",但如果把"[\d\D]"寫成"[\d^0-9]",會發現結果不正確!這是因為"^"要放在開頭才有效果,如果放在非開頭會判為允許"^"字元,這點請注意。


參考資料

[ developer.mozilla.org ] 正規表達式

2022年3月28日 星期一

手機號碼的正規表達式

 手機號碼的正規表達式

前言

  最近寫了手機號碼的正規表達式,在此做個紀錄。


內容

  在網上搜尋會達到以下

^09[\d]{8}$


不過這個病不支援以+886開頭的格式,所以我改成以下

^(09|\+886)[\d]{8}$


這是我第一次用"|",要記得把內容用"()"區隔和後面的連續 8 個數字,並記得 +886 的"+"要在前面補一個"\",不然會跟正規表達式的"+"混淆。


參考資料

[ coding.tools ] 正則表達式在線測試工具

2022年3月21日 星期一

關於 E-mail 的正規表達式

 關於 E-mail 的正規表達式

前言

  最今寫了 E-mail 的正規表達式,但上網查了一下答案遽然和我想得不太一樣,仔此把學習的過程做個紀錄。


內容

  首先我認為 E-mail 的正規表達式如下

^([a-z0-9_\.-]+)@([\da-z\.-]+)$


可以使用之前的工具 線上使用正規表達式 來驗證,如下圖

我認為 E-mail 的正規表達式


但上網對了一下答案發現遽然不一樣,答案如下

^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$


前半段是一樣的,不一樣的部分在最後的部分,也就是最後的網域一定是由 2~6 的字所組成,只能說還好我有對答案,不然就只能等原本的寫法發生問題才能發現了。


參考資料

[ www.fooish.com ] Regex Examples


相關文章與資料

線上使用正規表達式


2022年2月21日 星期一

用正則表達式檢查中文

 用正則表達式檢查中文

前言

  最近想了一下正則表達式的一些應用,發現似乎沒用過它來檢查中文過,所以就抽空來研究一下,在此做個紀錄。


內容

  這次會使用到 [ coding.tools ] 正則表達式在線測試工具 來做為驗證,如何使用可以參考 線上使用正規表達式。實驗了一下發現遽然可以直接輸入,如下圖

用正則表達式檢查中文

本以為這是線上工具的貼心設計,所以我實際打了個程式碼來驗證,如下

const reg = /一二/g;
let s = '一二..';
console.log( reg.test(s) );//true


結果正確,真的可以直接輸入!如果要檢查所有的中文字可以用 [/u4e00-/u9faf] 來檢查一個中文字。


  不知是不是我對 JavaScript 的偏見,總是認為在 JavaScript 使用中文位很麻煩,必須不斷把字串轉成字碼再搭配"\u"來表達,但現在的 JavaScript 遽然可以直接就檢查中文,真是讓我改觀了。


參考資料

[ coding.tools ] 正則表達式在線測試工具

[ www.itread01.com ] 匹配中文字符的正則表達式: [/u4e00-/u9fa5]


相關文章與資料

線上使用正規表達式

2022年2月14日 星期一

線上使用正規表達式

 線上使用正規表達式

前言

  每次使用正規表達式都要打程式碼會不會覺得很麻煩呢?這次介紹可以在線上使用正規表達式,而且可以馬上得到結果,不須像打程式碼還要按"Run"得到結果,在此做個紀錄。


內容

  使用的線上工具式是 [ coding.tools ] 正則表達式在線測試工具 ,使用的畫面如下

正規表達是在線測試工具的使用畫面


在畫面"1"處輸入正規表達式,在畫面"2"處就是要檢查的內容,工具會把符合的結果反白,這是即時的不須按下任何的按鍵,用起來相當直覺簡單。


  接著提供一些常用的技巧,如果要檢查不是多行,只是單行字串符合某種格式的的話,可以參考以下

^ *ABC *$


上述的例子會檢查去頭尾空白並且中間有"ABC",利用"^"與"$"來放頭尾即可,如果要檢查多行的結果這就不適合,之前的 用正規表達式檢查IP 就有使用這個方法。善用"[]"來限制符合條件的字元,如果要檢查字母後有數字的結果可以使用以下

[A-Za-z]+\d+


範例限定大小字母才能符合資格,接著要搭配"+","+"指的是前面的結果至少出現 1 次,如果有需要還可以搭配"*"與"?","*"是指前面的結果出現 0 次或多次,"?"是指前面的結果出現 0 次或 1 次。如果要檢查帶有小數的數字可以用以下

\d+(.\d+)?


這次要使用"()"來包覆結果,並搭配檢查次數的"?"(檢查前面的結果出現 0 次或 1 次)。如果要檢查"()"包覆的內容可以用以下

\(.*\)


利用"\"後加特殊字元來表明"()",範例中的"."指的是任意字元,所以".*"就可以解釋成任意字元出現 0 次或多次。


參考資料

[ coding.tools ] 正則表達式在線測試工具


相關資料與文章

用正規表達式檢查IP

2021年9月27日 星期一

在 Obsidian 使用 Youtube 影片

 在 Obsidian 使用 Youtube 影片

前言

  在之前的 好用的筆記軟體 Obsidian 介紹了 Obsidian  ,但最近因為需要在筆記裡放上 Youtube 影片,如果使用超連結的做法會無法即時看到影片,所以就來研究如何即時看到的方法在此做個紀錄。


內容

  要即時看到 Youtube 影片的做法是先到要貼的  Youtube 影片頁面,如下圖

按下"分享"按鍵


按下頁面的"分享"按鍵可以得到下圖

按下"嵌入"按鍵

按下"嵌入"後可以得到下圖

複製右側的內容


複製右側的內容直接貼到 Obsidian 就可以直接看到 Youtube 影片,如下圖

結果


參考資料

[ www.reddit.com ] Obsidian Basics: iframe - Embed widgets, Tweets, Weather, YouTube, stock data, map, calendar, etc.


相關文章與資料

好用的筆記軟體 Obsidian


2021年9月20日 星期一

好用的筆記軟體 Obsidian

 好用的筆記軟體 Obsidian

前言

  常見的文書處理軟體像 Notepad++ 處理單一文件時很好用,但如果文件與文件之間有關連性的時候就不是很好用,尤其是文件很多又有關聯性,這時候就需要用筆記軟體,筆記軟體可以輕鬆地建立關聯性,這裡推薦使用 Obsidian ,在此做個紀錄。


內容

  軟體可以在 [ obsidian.md ] Obsidian 官網 取得,完全免費並且不用註冊帳號,軟體的使用介面如下

Obsidian 的操作介面


操作介面不太像傳統 Windows 的樣子,但其實不難懂,畫面"1" 的位置就是功能列,可以新增檔案與資料夾,畫面"2" 的地方會顯示工作資料夾下的文件,畫面"3"的部分會顯示文件與功能視窗,每個都是浮動式窗可以自己規劃。 Obsidian 的每個文件都是".md",不難想像他支援時下流行的 markdown 語法,如果要新增圖片可以用拖曳的方式新增, Obsidian 會自動把圖片複製一份到工作資料夾下,這功能很好用,接著是 Obsidian  特有的語法,這是為了建立關聯性而新增的,如下圖

關聯性語法


畫面"1" 的地方把要關聯的文件檔名用"[["與"]]"包起來就可以建立關聯性,如果點擊畫面"2"的地方就可以直接跳到該文件,這功能就像是網站的超連結一樣相當好用。


參考資料

[ obsidian.md ] Obsidian 官網

[ wcc723.github.io ] 十分鐘快速掌握 Markdown

2020年2月10日 星期一

把螢幕畫面錄成 GIF 檔的軟體

把螢幕畫面錄成 GIF 檔的軟體

前言

  Windows 的截圖功能很好用,但有的時候需要能動的圖像,而表達能動的圖片看來就只有 GIF 檔能勝認了,於是上網找到 [ www.screentogif.com ] ScreenToGif  這個軟體,用起來相當簡單,在此把學習的過程做個紀錄。

內容

  先到 [ www.screentogif.com ] ScreenToGif  下載軟體,如下圖
下載 ScreenToGif

下載完後解壓,再開啟軟體,可以看到下圖
開啟 ScreenToGif

開啟後按下螢幕錄影,可以看到以下
錄影視窗

錄影視窗的中間是透明的,可以在下方調整錄影視窗的大小,再按下錄影後開始錄影,錄到想要的時間按下停止,可以得到以下
編輯畫面

到了編輯畫面後在左上按下"檔案"的按鍵後,再按下"另存新檔"後,可以得到以下
存檔介面

在存檔介面設定存檔路徑與檔明後按下"儲存"就可以取得結果。

參考資料

[ www.screentogif.com ] ScreenToGif

2020年1月13日 星期一

查詢 GPU 的 Extension

查詢 GPU 的 Extension

前言

  要取得 GPU 的 Extension 的話直接透過繪圖 API ( OpenGL 、 OpenGLES 與 Vulkan )來取得即可,但這個前提是機器必須在身邊,在手機平台的話,難道要把所有的機器的買來取得資料嗎!?幸運的有個網站可以查詢,在此做個紀錄。

內容

  在 [ gpuinfo.org ] gpuinfo.org 可以查詢繪圖API的資訊,進入網站後可以看到以下
gupinfo.org 的網頁

根據要查詢的繪圖API點選,網站會引導到查詢網頁,以下以 Vulkan 為例,會看到以下
查詢 Vulkan 的 Extension

上方的輸入可以用來依據需求來過濾想查詢的 GPU ,接著會以 AMD Radeon RX 570 series 為例,會看到以下
查詢 AMD Radeon RX 570 series 的 Extension

在上方可以發現其實不只可以查詢 Extension ,還包含 Formats 等資訊,用起來相當簡單。

參考資料

[ gpuinfo.org ] gpuinfo.org

2019年9月30日 星期一

觀看 Vulkan 的 Extension 的軟體

觀看 Vulkan 的 Extension 的軟體

前言

  要觀看 Vulkan 的 Extension 可以利用官方 SDK 裡的 Vulkan Configuration Tool 來觀看,但我覺得介面做的不是很好看,所以找了另一個軟體來替代。

內容

   Vulkan Configuration Tool 在"(Vulkan SDK root)/(SDK version)/Tools/vkconfig.exe",執行後畫面如下
Vulkan Configuration Tool 

執行後點選 Installation Analzer 頁面,裡面的資料相當完整,但點選的介面個人不是很喜歡,Extension 的部分使用表格的方式顯示,但很佔畫面,感覺不是很密集。

  GPU Caps Viewer 這個軟體的排版就是我喜歡的密集排法,執行畫面如下
GPU Caps Viewer

用法也很簡單,執行後點選 Vulkan 頁面就可以看到所有的 Extension ,顯示方式密集比較不佔空間。

參考資料

GPU Caps Viewer

2019年3月4日 星期一

在Atom裡關閉預設外掛

在Atom裡關閉預設外掛

前言

  最近開啟Atom時會發生卡死的情況,畫面會停留上次開啟的檔案,但ㄏ不會有對任何輸入有反應,一陣子後會出現"Editor is not responding"的視窗,選擇"Force close"會直接關閉Atom,選另一個就在等一陣子又跳"Editor is not responding"視窗,這個情形要怎麼解決呢?在此把過程作個紀錄。

內容

  遇到這個問題馬上就google到這篇‘restore to default settings’ setting,這篇會說Atom的資料夾在"~/.atom",所有的設定包含外掛都會儲存在該資料夾,只要將該資料夾刪除後再開啟Atom就可以正常開啟,但不幸地的是所有的外掛與設定與開啟的專案都會消失,實在不是個好方法。

  到底是什麼樣的資料造成這個問題呢?答案是"外掛",外掛安裝的資料夾在"~/.atom/packages",所以我就一個一個刪掉來實驗室哪一個外掛,最後找到兇手
"linter-eslint",只要刪掉就可以正常開啟Atom了,只需重裝"linter-eslint"即可,比整個重裝好多了。但這樣還是不夠的,因為"linter-eslint"的安裝時間不算短,既然只有在開啟時會有問題,所以只要在開啟時不啟動該外掛不就可以了,接著我注意到這個檔案"~/.atom/config.cson",打開後可以看到以下
"*":
  core:
    disabledPackages: [
      "wrap-guide"
      "bracket-matcher"
      "welcome"
    ]
  "exception-reporting":
    userId: "a8e98b83-80d4-4e7b-aa3f-f3465fae1a95"
  "linter-ui-default": {}
  welcome:
    showOnStartup: false

注意"disabledPackages",我觀察了一下內容,都是我disable的外掛,接著我以實驗的精神在內容填上"linter-eslint",如下
"*":
  core:
    disabledPackages: [
      "wrap-guide"
      "bracket-matcher"
      "welcome"
      "linter-eslint"
    ]
  "exception-reporting":
    userId: "a8e98b83-80d4-4e7b-aa3f-f3465fae1a95"
  "linter-ui-default": {}
  welcome:
    showOnStartup: false

就這樣"linter-eslint"如我所願在開啟時不會被啟動,Atom也順利開啟。

參考資料

‘restore to default settings’ setting

2019年2月25日 星期一

在Atom裡使用makefile建置C++

在Atom裡使用makefile建置C++

前言

  在Linux使用makefile建置C++時有個麻煩,當Target很多的時候會發生忘記Target的名稱,所以就會要開起makefile來複製Target的名稱,如果可以直接選擇Target不是很好嗎?最近發現Atom有個外掛可以達成,在此做個紀錄。

內容

  首先來安裝需要的外掛,外掛的名稱是"build-make-file",如下圖所示
安裝外掛"build-make-file"

裝完後,開啟一個makefile的檔案,接著按下"F7"後就可以看到下圖
選擇Target

選擇後就會執行,用起來非常簡單。這個外掛有些小缺陷,有時按下"F7"後會沒有即時更新Target,請等個1~2後再按"F7"就會即時更新Target,另外這個外掛只有當開啟的檔案是makefile時才會動作,並不是選取專案的任意檔案就會自動偵測的類型,這點請注意。

2019年2月18日 星期一

在Atom裡使用node.js

在Atom裡使用node.js

前言

  以前要跑node.js的專案我會選用NetBeans來建置專案,雖然NetBeans是跨平台,但編輯器的使用習慣跟我的習慣有落差,所以考慮使用Atom來替代,在此做個紀錄。

內容

  由於Atom本身並不支援node.js,但可以透過外掛來支援,所以安裝完後要先裝外掛,請依下圖只是開啟設定
Atom開啟設定
開啟後可以看到下圖
選擇要安裝的外掛
在"2"的地方輸入可以搜尋外掛,下方顯示的就是搜尋的成果,那要安裝那些外掛呢?請看下圖
node.js所需的外掛
第一個外掛是"build",這個外掛很重要,很多需要"建置"的外掛都需要透過這個外掛,第二個外掛是"build-npm-apm",這個就是基於"build"外掛來支援npm。

  安裝完後,建一個專案來測試外掛式正常,如下圖
測試專案
選擇"package.json"後按下"F7"後,可以看到下圖
選擇要執行的Target
這裡就可以選擇要執行的Target,按下後就會執行很簡單。如果沒跳出Target的話,請重開Atom,這個外掛似乎只會在開啟後掃描一次,之後就不會重新掃描,所以如果Target有進行更新的話也請重開Atom。

  整個用起來和上次在初探Visual studio code裡介紹的VSCode(Visual studio code)差不多,VSCode建置時需要比較多次的選擇,但Target會即時更新,Atom則是有比較少的選擇步驟,但Target不會即時更新,最後我選了Atom,雖然Target不會即時更新,但Target其實並不會時常更新,反倒是執行Target要時常使用。

相關文章

初探Visual studio code