2017/6/6

Regex 正規表示式 比對跟前面出現過的那個值相等的方法

markdown 我想要比對跟前面出現過的那個值相等 ,有可能用正規表示式做嗎? 可以的。 [regex維基百科連結](https://zh.wikipedia.org/wiki/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F) 這在術語上稱為向後參照(back-reference) 我想要找兩個相同字元,但是中間卡一個-號,要怎麼寫呢? ``` (.)-\1 ``` 實際案例:[http://rubular.com/r/upTounDuFk](http://rubular.com/r/upTounDuFk) 我想要找兩個連續的不同字元(第二個字跟第一個字不同)要怎麼寫呢? ``` (.)(?!\1) ``` 實際案例:[http://rubular.com/r/JlJx8n2ZCB](http://rubular.com/r/JlJx8n2ZCB) 我想要找某一個字元的下一次出現點呢? ``` (.)((?:(?!\1).)+)\1 ``` 實際案例:[http://rubular.com/r/6pXhub7mOt](http://rubular.com/r/6pXhub7mOt)

2017/4/5

那個美感

我寫字很慢,從小就不喜歡寫字。因為不喜歡寫字、沒練字,所以字也就醜。 一兩年前看到一本書「禮元錄」提到一句話:「字,是一個人的臉面。」 當時看到這句話,我心裡想的是:「哇!那我不就醜爆了?」那還不練嗎? 剛好那時同事正在推一波鋼筆坑,我想說那就入一下坑吧,希望買了筆之後,會讓自己更有動力寫字。 買了筆之後,只寫了些字,當然還是醜,顯然字醜不醜跟用什麼筆來寫,關係不大。 能寫得一手好字的同事,不管他用什麼筆,都能寫出比我好看的字,而那肯定是花時間練出來的。 結果後來還是沒花時間練,現在字還是一樣醜。 最近我學 illustrator 跟 photoshop 時,發現相同的問題又出現了。 illustrator 跟 photoshop 其實只是另一種的高級「筆」,如果沒有去練那個美感,就算學會 illustrator 跟 photoshop 其實也沒搞頭。 回過頭來說寫字,字好不好看很重要。但比起字體本身的美,文字所表達的內涵又更重要。 其實寫程式也是這樣,排版、開發工具、套件、框架、設計模式很重要,但比起那些,可讀性跟效能又更重要。 仔細想想,絕大多數的東西都只是「筆」,只有少數的、最核心的那個美感,那個表達力才是最需要練、最有價值的東西。

2017/3/25

在 Postgresql 使用 uuid 的方法

markdown (以下指令都是在 postgresql cli 輸入) 想要生成uuid的話,只要呼叫 uuid_generate_v4 就可以生成 ``` select uuid_generate_v4() ``` 正常情況下會看到 ``` uuid_generate_v4 -------------------------------------- 98a4f867-8dcd-4982-aa3a-14e1030bcd88 ``` 如果看到 ``` ERROR: function uuid_generate_v4() does not exist ``` 表示你的postgresql 沒有安裝 uuid-ossp 模組 安裝uuid-ossp模組的指令 ``` CREATE EXTENSION "uuid-ossp"; ``` 移除uuid-ossp模組的指令 ``` DROP EXTENSION "uuid-ossp"; ``` 查看目前安裝過的模組 ``` select * from pg_extension; ``` 查看可安裝的模組 ``` select * from pg_available_extensions; ```

2017/3/23

建立一個line bot的所需知識

markdown 架構 * 程式語言:ruby * web server framework:rails * 資料庫:postgresql * 協定:https post * 資料傳輸格式:json 開發環境 * 硬體:macbook * 軟體 * rvm * rails * bundle/gem * sublime text 發布環境 * 硬體(heroku) * 軟體 * git * heroku cli

2017/3/21

rails db & postgresql cli 使用方法

markdown # postgresql 相關指令 查看有哪些資料庫 ``` \l ``` 連線到資料庫 ``` \c db_name ``` 查看有哪些表格 ``` \dt ``` 查看有哪些欄位 ``` \d+ table_name ``` 查看執行過的資料庫遷移 ``` select * from schema_migrations; ``` # rails db 相關指令 開啟含有 rails 環境的 irb ``` rails console ``` 連線到資料庫 ``` rails dbconsole ``` 建立資料庫,如果資料庫已經存在則不做事 ``` rails db:create ``` 刪除資料庫 ``` rails db:drop ``` 根據 db/schema.rb 檔產生對應的資料表(此動作會將資料庫內的資料清空) ``` rails db:schema:load ``` 根據資料庫狀態更新 db/schema.rb 檔 (但只要叫 db:migrate 就會自動執行這個了) ``` rails db:schema:dump ``` 執行db/seed.rb ``` rails db:seed.rb ``` ##快速功能 ###setup ``` rails db:setup ``` 等於以下指令 ``` rails db:create rails db:schema:load rails db:seed ``` ###reset ``` rails db:reset ``` 等於以下指令 ``` rails db:drop rails db:setup ``` 在這裡要注意的是setup跟reset指令不是重新執行migrate,所以如果你的schema檔是壞的,你下這兩個指令完還是壞的。 如果想要根據migration檔重新建立一個資料庫應該下的指令是 ###migrate:reset ``` rails db:migrate:reset ``` 等於以下指令 ``` rails db:drop rails db:create rails db:migrate ``` 這裡要注意的是, db:migrate:reset 指令並不會執行 db:seed 執行資料庫遷移,會把所有還沒執行過的都執行完,然後自動更新 db/schema.rb 檔 ``` rails db:migrate ``` 查看資料庫遷移結果 ``` rails db:migrate:status ``` 還原上一筆資料庫遷移 ``` rails db:rollback ``` 執行下一筆資料庫遷移 ``` rails db:forward ``` ##參考資料 [RailsGuide Migrations(資料庫遷移)](http://guides.ruby.tw/rails3/migrations.html)