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


讀書筆記 - 第一性原理

## 書名:
第一性原理


## 問題:
第一性原理是啥,怎麼應用


## 動機:
幫助自己成長,對創業以及人生自我管理


## 16 格筆記:
1. 絕對的真理

2. 要刻意練習

3. 發現真理後要身體力行

4. 為自己找習題,做習題增加肌肉記憶

5. 人90% 時間是靠潛意識

6. 所以要訓練潛意識

7. 回歸基本原理、回歸良知、事物本質

8. 道理有時間性和普世性,時間性代表古今適用,普世性代表跨領域適用

9. 還有所謂相對真理,

10.

11.

12.

13.

14.

15.

16.


## 察覺點:

## 總結:
用真理來解釋問題,事情就會明朗 新知識要靠刻意練習訓練自己的潛意識(肌肉記憶)才算學會