2018年7月22日 星期日
不要在 rake task 裡定義 method
因為 rake task 的 scope 是 global 的,如果在裡面定義 method 等於是為 Object class 定義 private method,污染全部的 code
可行的做法之一是把要跑的 task 寫成 service 執行
另外推薦的做法是使用 `Rake::DSL`
```ruby
# lib/tasks/bicycle.rake
class BicycleTasks
include Rake::DSL
def initialize
namespace :bicycle do
task :assemble do
bicycle = Bicycle.new
# Assemble the bicycle:
attach_wheels(bicycle)
attach_handlebars(bicycle)
attach_brakes(bicycle)
end
end
end
private
def attach_wheels(bicycle)
# ...
end
def attach_handlebars(bicycle)
# ...
end
def attach_brakes(bicycle)
# ...
end
end
# Instantiate the class to define the tasks:
BicycleTasks.new
```
https://supergood.software/dont-step-on-a-rake/
2018年7月8日 星期日
Xcode Storyboard and NSCoder (Codable in swift)
.plist file 是一個 xml 格式的文件,意思是 Property List
Swift 可以用 Codable protocol 來處理這類文件
而 Xcode 的 Storyboard 也是類似的方式處理 View,只是用的是 OC 的 NSCoder
每當我們在 Storyboard 上更改什麼東西時,就會透過 NSCoder 轉換(encoding)成 Property 存在某個 .plist 文件裡,而當 App 啟動時則再用 NSCoder 讀取這些 Property 再轉化(decoding)為 UI 元件。
其實角色就像是 serializer
2018年7月7日 星期六
Swift weak keyword
weak keyword 是為了避免 ownership cycle,所謂 ownership cycle 就是當 Object A reference Object B 而 Object B 又 reference Object A 時,兩個 Objects 就會都無法釋放(Object 只有在沒有 strong reference 時才會被回收)
如果 Object 只有weak references ,也是會被回收。
所以此例 A 跟 B 其中一個用 strong reference 另一個用weak 就可以了
通常要用weak的地方就是 delegate
當然 UI 的東西也常常用 weak,但那是為了強調「ViewController」並不是 View Outlet 的 owner。
另外還有一個 keyword 叫做 unowned,下次再介紹
2018年7月2日 星期一
reset password token leaking
reset password 的網址常常是
https://yourdomain/password/reset?token=xxxx
但這樣就會被第三方網站從 `HTTP Referer` 內找到並紀錄起來 reset password 的 token,例如 google analytics,就有安全疑慮
幾個做法:
1. 一進到這個頁面馬上 invalidate 這個 token 然後generate 一個新的塞到 form 裡面
2. 進到 passwords#edit 時就把 params 移除存到 session 裡面再 redirect 回 passwords#edit 頁面,這樣 referer 就沒有token 資訊
https://robots.thoughtbot.com/is-your-site-leaking-password-reset-links
https://yourdomain/password/reset?token=xxxx
但這樣就會被第三方網站從 `HTTP Referer` 內找到並紀錄起來 reset password 的 token,例如 google analytics,就有安全疑慮
幾個做法:
1. 一進到這個頁面馬上 invalidate 這個 token 然後generate 一個新的塞到 form 裡面
2. 進到 passwords#edit 時就把 params 移除存到 session 裡面再 redirect 回 passwords#edit 頁面,這樣 referer 就沒有token 資訊
https://robots.thoughtbot.com/is-your-site-leaking-password-reset-links
讀書筆記 - 第一性原理
## 書名:
第一性原理
## 問題:
第一性原理是啥,怎麼應用
## 動機:
幫助自己成長,對創業以及人生自我管理
## 16 格筆記:
1. 絕對的真理
2. 要刻意練習
3. 發現真理後要身體力行
4. 為自己找習題,做習題增加肌肉記憶
5. 人90% 時間是靠潛意識
6. 所以要訓練潛意識
7. 回歸基本原理、回歸良知、事物本質
8. 道理有時間性和普世性,時間性代表古今適用,普世性代表跨領域適用
9. 還有所謂相對真理,
10.
11.
12.
13.
14.
15.
16.
## 察覺點:
## 總結:
用真理來解釋問題,事情就會明朗 新知識要靠刻意練習訓練自己的潛意識(肌肉記憶)才算學會
訂閱:
文章 (Atom)