顯示具有 程式 標籤的文章。 顯示所有文章
顯示具有 程式 標籤的文章。 顯示所有文章

107.08.25 C 語言 static 和 shared 函式庫

函式庫 (Library) 主要分成二種,靜態函式庫 (static library)、動態函式庫 (shared library)

107.08.24 C 語言編譯到執行流程

很久之前寫過這篇 106.02.11 程式編譯流程
但是覺得還不夠深入,剛好學過編譯器了
雖然不是學到的主要內容,不過多整理有助於記憶,順便記錄專有名詞的英文這樣

先上總覽
參考 Create a program – C  - CodingMeta
language-processing for C

107.08.06 關於 code reuse 的問題,投票囉

最近寫程式發現設計頗為重要
也通常是花最多時間的部分
在 code reuse (程式碼重用) 部分我就發現有幾種寫法
也不知道怎麼查相關的資料
這好像是比較偏向 coding style,所以並沒有正解 吧
總之就來統計個 (雖然應該很少人才是 QuQ
Picture from MonkeyUser.com

code reuse 最簡易的就是把會重複的部分寫成函式
以我最近正在寫的為例,我盡量簡化@@,也會提供詳盡的程式碼區塊
總共三種版本,每個版本各有三個函式

107.08.04 c 的指標怎麼寫怎麼念

<注意> 本文不是教指標怎麼用,而是記錄一下寫法和念法
不然好像每次寫指標都在重新查怎麼寫 QuQ
當然寫法只是一種 style 並不強制

107.07.18 簡單設定截止時間執行指令

情境:在設定的時間要去 clone (有點像是禁止遲交)
簡單解法:利用 sleep 跟 date 兩個 system call

舉例:在 2018 年 7 月 17 日 23:59:59 執行 ls

上程式碼:(test.sh)
deadline=$(date -d"2018-07-17 23:59:59" +%s)
now=$(date +%s)
during=$(($deadline-$now))
sleep $during;
ls

執行:
$ bash test.sh

把 ls 換成想要執行的指令即可,e.g.  git clone ....
執行後就等時間到吧
注意不要關掉終端機嘿 OuO

107.04.16 程式語言作業(二) diff

前言

程式語言的作業二是用 Lisp 寫一個 diff 程式

題外話
其實作業二有三小項可選,後面是寫該項目可以拿幾分
1: 80、2: 90、1+2: 100、3: 100
我懶得寫 1+2 而切那個好像還要說明一堆東西所以直接挑戰 3 也就是本篇主題啦

所謂 diff 程式就是可以比較兩個檔案的差異,如下圖
不要問我為啥有 end 這個東西,因為助教的說明文件就打這樣,可能是新版的 endl 吧(誤

107.04.02 vim runner 介紹

aben20807/vim-runner
來,久等了,星起來,星起來 OuO

107.03.13 vim surrounder 介紹

aben20807/vim-surrounder
同樣來一篇 surrounder OuO
星星都來吧 (x

107.03.13 vim commenter 介紹

aben20807/vim-commenter
感覺就算寫了 README、寫了 doc 還是沒人看啊 QuQ
雖然在這裡介紹也差不多 QuQ
有 GitHub 的可以順手按個星星之類的,我會很感激 QuQ
不過還是想用繁體中文寫一個超完整(?)的介紹
總之,目前寫了3個 plugin 了,沒意外就各來一篇 OuO

107.02.15 c++ template iterator

今天除夕
祝大家新年快樂啦 OuO

記錄一下把 C++ 中的 vector 函式改成 template
只改 vector 是頗容易,但是加上 iterator 就出現錯誤

原本只能使用 int 當作元素的函式
void print_vector(vector<int> a)
{
    vector<int>::iterator iter;
    for (iter = a.begin(); iter != a.end(); iter++) {
        printf("%d ", *iter);
    }
    printf("\n");
}

107.02.09 解決 clang 找不到 iostream

環境:(其他環境應該也可以用類似解法只是路徑不同要自己找一下)
Cygwin
clang++ --version:5.0.1

主要是要寫 C++ 時,ale 報錯:
([clang] 'iostream' file not found [W])
感覺是 clang 的問題,就來解決啦
p.s. 圖片中的 10055_Hashmat_the_brave_warrior 就自動換成 test 囉

107.02.07 如何寫 vim plugin

<注意>
本篇只會紀錄大致需要的架構和一些注意事項、建議以及參考資料
讓以後的我或是想寫一個自己 plugin 的人快速入手或是方便查找相關資料
本篇並不會真的教你寫出一個 plugin 喔

檔案架構

yourplugin/
    doc/
        yourplugin.txt
    plugin/
        yourplugin.vim
    ...
    README
    LICENSE

107.01.21 讓make變色

轉眼間又過了一年@@
大三上實在是太多事情
但也說不上充實,大部分都是課業....

正題
直接展示最終成果OuO
顏色很美我知道(x

106.12.02 win10背景執行命令提示字元程式

好的
因為筆電回來了
所以又去找 ActivityWatch
這裡可以下載應用程式,linux、windows、mac 三種都有

不過windows的執行如下
會跑出一個框框,關掉之後程式就消失了OAO

所以就找了一下有沒有可以在背景執行的方式OuO


106.11.05 C 動態字串透過strcpy給別人後要free

<< 前面這塊有嵌入動畫,可能只有電腦看的到吧www >>

<< 動畫結束 >>

106.10.12 rust 字串處理

輸入String
使用 text_io (真心覺得這個很好用,可不只用在字串
在 Cargo.toml 的 [dependencies] 下方加上
text_io = "0.1.6"

main.rs的最上方記得加上
#[macro_use] extern crate text_io;

再來就可以用類似 C 的方式輸入
let s: String;
scan!("{}\n", s);


106.09.13 win10 加密隱藏資料夾

先說這個只能算是隱藏起來,無法做到絕對安全
也就是說不用密碼,或是打開 .bat 就知道密碼了
唯一好處就是勾選顯示解隱檔也看不到
所以我就乾脆改成不用密碼的,反正也沒人知道要點哪個才會出現隱藏資料夾OuO

<<注意>>
看到有先評論說不穩定還是啥的,不建議使用在無備份的重要資料上
還有,有密碼也不保證安全

106.08.05 completor.vim supported rust in cygwin

因為我目前只會用到C、C++、Rust....
然後裝YCM不知道失敗幾次了QuQ
赫然發現 maralla/completor.vim
優點是不用另外編譯
而且也是非同步補全,不會讓vim卡死
C、C++我不知道為何可以正常使用沒出錯(?
但是Rust就一直不行
之前使用vim-racer也不行
推測是racer不支援cygwin的問題
主要原因可能是cygwin呼叫racer時若使用相對路徑則會發生找不到指定路徑
fork專案過來之後改個地方就解決了,就來記錄個OuO

106.07.26 vim 前置數字v:count使用

同樣是我在寫 aben20807/my_vim/.surround.vim 遇到的
就是前置數字
功能就是
用前置數字來代表要括幾個單字
無前置就是游標所在的單字
然後就查到 v:count

所以~map就可以這樣寫
nnoremap <silent> <Plug>SurroundNadd :<C-u>execute 'call '
    \v:count? '<SID>surroundNadd(v:count)' : '<SID>surroundNadd(1)'<CR>
nmap <M-s> <Plug>SurroundNadd


106.07.26 win10 caps lock換成esc

老實說我沒有很常用到 caps lock
或者說幾乎不用
一般大寫只需要 shift 按住就好
caps lock 反而會造成誤按
然後近期又幾乎使用 vim 所以就來找個方法把 caps lock換成esc
<注意>修改機碼會有未預期錯誤請謹慎使用
<注意>不是 caps lock、esc 交換,而是 caps lock、esc 都變成 esc
要交換還是理解更詳細原理請去這裡(超詳細解說


首先將下面那段存成 capslock2esc.reg (注意副檔名
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,01,00,3a,00,00,00,00,00
^ Top