Rebuilding Rails的心得

Ch1 Zero to “It Works!” Gem的檔案結構 $ bundle gem rulers create rulers/Gemfile create rulers/Rakefile create rulers/LICENSE.txt create rulers/README.md create rulers/.gitignore create rulers/rulers.gemspec # !! create rulers/lib/rulers.rb # !! create rulers/lib/rulers/version.rb Initializating git repo in src/rulers rulers/rulers.gemspec放的是gem的資訊與dependency rulers/lib/rulers.rb就是主程式 dependency分成development與runtime # rulers.gemspec gem.add_development_dependency "rspec" gem.add_runtime_dependency "rest-client" rack進入點 與 rack app回傳值的資料結構 # best_quotes/config.ru run proc { [200, {'Content-Type' => 'text/html'}, ["Hello, world!"]] } 狀態值,header,資料 rack app 的 interface # rulers/lib/rulers.rb require "rulers/version" module Rulers class Application def call(env) [200, {'Content-Type' => 'text/html'}, ["Hello from Ruby on Rulers!...

April 17, 2020 · 7 min · zhengcf

The Seasoned Schemer讀後筆記

前言 The Seasoned Schemer(TSS)的目的是補完TLS中沒有提及的狀態。 這篇筆記同樣不依照章節順序,用主題式的方式,把我心中的這本書呈現出來。 行前須知 知道什麼是? Scheme 遞迴 accumulator parameter reverse 如果要反轉list,在有append情況下可以寫成 (define (rev l) (if (null? l) '() (append (rev (cdr l)) (cons (car l) '())))) 但我們需要一直append嗎? 如果我們可以從第一個開始就先cons出來的東西,不就是我們要的。 (define (rev l acc) (if (null? l) acc (rev (cdr l) (cons (car l) acc)))) 引入acc可以記下我們從頭到目前看過的東西。 flatten 同樣在要攤平list時,如果有append可寫成 (define (atom? x) (and (not (pair? x)) (not (null? x)))) (define (fl lol) (cond [(null? lol) '()] [(atom? (car lol)) (cons (car lol) (fl (cdr lol)))] [else (append (fl (car lol)) (fl (cdr lol)))])) 這裡是不是可以利用剛剛acc可以記下目前看過的東西的特性來改寫呢?...

April 15, 2020 · 5 min · zhengcf

The Little Schemer讀後筆記

前言 The Little Schemer(TLS)的目的是教讀者寫遞迴。 這篇筆記不依照章節順序,用主題式的方式,把我心中的這本書呈現出來。 行前須知 知道什麼是? base 與 inductive case 在歸納法中大概的意思 快速Scheme Tutorial 調用: (<function-or-operator) <args...>) 宣告變數: (define <var-name> <value>) 條件式: (if <predicate> <when-true> <when-false>) (cond [<predicate> <do-somthing>] ... [else <do-somthing>]) 函數: (define <func-name> (lambda (<args...>) <do-somthing>)) ;; OR (define (<func-name> (<args...>)) <do-somthing>) 匿名函數: (lambda (<args...>) <do-somthing>) 本書用到的資料結構介紹 Atom <line-of-characters>還有數字 List of OO 有哪些可能性(case) base case: 空 inductive case: 有東西 建構 空 的case : ‘() 有東西 的case : cons 分解 有東西 的case : car 與 cdr 對應到cons有兩個參數,所以會有兩個解構子。 區分case 空 的case : null?...

April 15, 2020 · 7 min · zhengcf

ubuntu-mirror

灌了ubuntu第一件事,不是更新,是換一個快的mirror script #! /bin/bash new=free.nchc.org.tw old=$(cat /etc/apt/sources.list | grep main | awk '{ print $2 }' | cut -d'/' -f3 | sed -n '3P') sudo sed -i "s/$old/$new/g" /etc/apt/sources.list sudo sed -i "s/security.ubuntu.com/$new/g" /etc/apt/sources.list sudo apt update bash的複習: 各種expansion 給個變數 hi=123 Arithmetic expansion Variables expansion 單雙引號不一樣 最通用的 Command expansion Ref bash的資料 改mirror的資料

April 15, 2020 · 1 min · zhengcf