裝了 YCM 後知道寫 C# 跟 C++ 會自動完成很好用, 最近再找 html/css 自動完成才發現 YCM 可以跟 vim 內建的 html/css Omnicomplete 結合, 不用再裝其他 plugin 就可以做到 html/css 自動完成, 只要在 vimrc 裡面加上下面 config 就好
let g:ycm_semantic_triggers = {
\ 'scss,sass,css': [ 're!^\s{4}', 're!:\s+' ],
\ 'html': ['<', '"', '</', ' '],
\ }
在這邊還有人貼出更多的 language support
2017年4月19日 星期三
2017年4月15日 星期六
RS232 接頭
RS232是序列通訊傳輸用的接頭, 有分 DB9 跟 DB25 兩種, 現在大部分的儀器通訊介面應該都會走 usb 比較多, 但是一些比較老的設備還是會用 RS232, 不過目前見過的都是用 DB9, 還沒見過用 DB25 的
DB9 pin 腳定義
![https://www.lammertbies.nl/picture/db9_pin_name.png](https://www.lammertbies.nl/picture/db9_pin_name.png)
實體長相
DB25 pin 角定義
![https://www.lammertbies.nl/picture/db25_pin_name.png](https://www.lammertbies.nl/picture/db25_pin_name.png)
實體長相
DB9 pin 腳定義
![https://www.lammertbies.nl/picture/db9_pin_name.png](https://www.lammertbies.nl/picture/db9_pin_name.png)
實體長相
DB25 pin 角定義
![https://www.lammertbies.nl/picture/db25_pin_name.png](https://www.lammertbies.nl/picture/db25_pin_name.png)
實體長相
grep 出現 Binary file (standard input) matches
在用 grep 時出現 Binary file (standard input) matches 這個錯誤, 看起來像是從 standard input 讀到 binary file 所以不能做 grep, 但我很確定我是餵文字檔給它吃
後來發現加 -a 參數就可以掃 binary file, 用了之後發現是中文, grep 看不懂中文就會以為掃到 binary file
後來發現加 -a 參數就可以掃 binary file, 用了之後發現是中文, grep 看不懂中文就會以為掃到 binary file
2017年4月12日 星期三
C# 確保 event handler 只註冊一次
有時候不確定 event handler 是否已註冊到某個 event 中, 這時可以先 remove 一次再 register, 因為即使 event handler 沒有註冊過也是可以安全的 remove 的
恩, 是個很實用的方法
obj.MyEvent -= MyEventHandler obj.MyEvent+= MyEventHandler
恩, 是個很實用的方法
2017年4月10日 星期一
C# virtual com port 無法接收資料
最近在 C# 中用 SerialPort 這個 class 來打開一個 virtual COM port, 並跟一個裝置溝通, 但怎麼樣都無法從裝置中收到資料, 後來發現要設定了 RtsEnable 這個屬性為 true, 才能收到資料
估狗了一下, 在這裡有寫到 virtual COM port 這個屬性要設為 true 才會觸發接收資料的流程, 在 stackoverflow 也有人寫到應該設定 HandShake 為 RequestToSend, 讓 driver 幫你設定適合的 RtsEnable 值, 測了一下只設定 HandShake 的確也是可以收到資料
猜測比較有可能的原因是 virtual COM port 會需要這些設定, 因為網路上也有一些用 real COM port 的例子是不需要設定 RtsEnable 的屬性就可以接收資料
估狗了一下, 在這裡有寫到 virtual COM port 這個屬性要設為 true 才會觸發接收資料的流程, 在 stackoverflow 也有人寫到應該設定 HandShake 為 RequestToSend, 讓 driver 幫你設定適合的 RtsEnable 值, 測了一下只設定 HandShake 的確也是可以收到資料
猜測比較有可能的原因是 virtual COM port 會需要這些設定, 因為網路上也有一些用 real COM port 的例子是不需要設定 RtsEnable 的屬性就可以接收資料
2017年4月7日 星期五
用 python 剪輯影片
markdown
想要從影片檔中剪一段出來, 用 python 就可以輕鬆辦到, 不過要先下載 moviepy 套件, 只需要幾行 code 就可以將你想要的片段剪出來
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip ffmpeg_extract_subclip("video1.mp4", t1, t2, targetname="test.mp4")moviepy 套件其實背後是使用 ffmpeg 這個強大的工具, 如果你沒有的話, moviepy 也提供了 API 去下載它, 下載後會存到 C:\Users\[user_name]\AppData\Local\imageio\ffmpeg\ 目錄下 ffmpeg 的功能非常多, 若是不想用 python, 直接用這個工具, 也可以做到編輯影片的功能
2017年4月4日 星期二
C# 的 event, delegate, System.Delegate 解析
C# 寫了一段時間, 但幾乎只用過 delegate, 對 event, delegate 之間的關係一直很模糊, 甚至 System.Delegate 類別也不知道是做甚麼用的, 故先在這裡記錄一下
上面這段 code 宣告了一個名為 MyDelegate 的型別, 所以可以用 MyDelegate 來 create 變數 d, 並且可以用 () 運算子直接呼叫, 概念上跟 C/C++ 的函式指標很類似
event 是用來修飾 delegate 欄位的修飾詞, 被 event 修飾過的 delegate 欄位, 本質上還是 delegate, 但實際上 compiler 會幫你把這個欄位加料, 變成類似屬性的用法, 讓 User 使用這個欄位時多了一些限制, 例如 event 欄位不能用 = 賦值, 只能用 +=, -= 去註冊或註銷你要掛上去的 event handler
所有的 delegate 類別都會繼承這個類別, 它定義了一些 delegate 都會用到的功能, 例如 Combine 和 Remove, 但我們不該, 也應該沒有機會直接使用他, 通常是 compiler 會用到
delegate
public delegate void MyDelegate(); MyDelegate d = () => { }; d();
上面這段 code 宣告了一個名為 MyDelegate 的型別, 所以可以用 MyDelegate 來 create 變數 d, 並且可以用 () 運算子直接呼叫, 概念上跟 C/C++ 的函式指標很類似
event
public delegate void EventHandler(object sender, My_EventArgs args); public event EventHandler Click;
event 是用來修飾 delegate 欄位的修飾詞, 被 event 修飾過的 delegate 欄位, 本質上還是 delegate, 但實際上 compiler 會幫你把這個欄位加料, 變成類似屬性的用法, 讓 User 使用這個欄位時多了一些限制, 例如 event 欄位不能用 = 賦值, 只能用 +=, -= 去註冊或註銷你要掛上去的 event handler
System.Delegate
所有的 delegate 類別都會繼承這個類別, 它定義了一些 delegate 都會用到的功能, 例如 Combine 和 Remove, 但我們不該, 也應該沒有機會直接使用他, 通常是 compiler 會用到
訂閱:
文章 (Atom)