2017年9月11日 星期一

[laravel4課程筆記] laravel4 - 手把手建立登入與欄位驗證

以下摘自 udemy Laravel 4 課程

雖然 Laravel 5 有些語法已經不太一樣,但概念上很像,
主要是這堂課是免費的,想買其他英文課程前,
可以先聽看看這堂有沒有辦法吸收,
再決定要不要下手買其他的課,
畢竟現在新同學前6hr每堂課都300實在太誘人 哈哈

下面是一些簡單的摘要


  1. control table
    1. Schema::create('table_name', function($table){$table->increments('id_name')})
    2. Schema::drop();
  2. Blade
    1. Unless
      1. 排除陣列中的某個元素
    2. 注意本課程示範的
  3. show error in browser
    1. app.php change debug to true
  4. model
    1. model name 對應的 table name 會自動加上複數 ex. class nam 為 book 對應的資料庫 table為 books
    2. setFieldnameAttribute 方法在 setvalue 時會自動觸發 (ex. $model->Fieldname)
    3. 設定好 hasMany、 belongsTo等關聯就可以簡單用箭頭取得 join的資料
    4. $fillable 欄位是允許被變更的, $guarded 相反
  5. migrations
    1. migrate:make
      1. 在 up 方法中使用 schema方法設定建立table結構的方法
      2. down方法中設定 rollback 的方法
    2. 先跑 artisan migrate:install
    3. artisan migrate
      1. 執行up方法
    4. artisan migrate:rollback
      1. 在資料被玩壞的時候執行定義好的 down 方法
  6. seed
    1. seeds 資料夾中 databaseSeeder.php 使用 $this->call($SeederName) 方法註冊自訂的seeder class
    2. seeder 中在run方法設定 modelsName::Create([colName => val]); 設定想建立的資料列, 這部分可以跟 faker 套件配合
    3. 通常會在 create 資料前 trancate table 避免因為資料被玩壞造成的非預期結果
    4. artisan db::seed 可以執行 run 方法中設定好的指令
  7. auth
    1. auth::attempt(validate_array, remember_var) 第二個參數如果給true的話儘管session過期仍會記住使用者
  8. validator
    1. $validator->passes() 和 $validator->fails() 都可以用來判斷是否驗證成功
  9. 注意:
    1. 本課程使用的 form 等一些自動產生html的方法在laravel 5 中已經不是內建的功能
    2. 設定filter.php做權限轉頁相關的設定在 laravel5 都移到 middleware 去做了

2017年9月10日 星期日

[公開課閒聊] 計算機概論第十二講 程式語言 - 台大 于天立

Ped隨手摘


  1. 程式語言大概分三~四代
    1. Machine instructions
    2. 組合語言 Assembly
      1. 容易記的記憶體名字
      2. 容易記的OP-code<operation-code> 
    3. C、C++、JAVA等
      1. 跨機器
      2. compiler and interpreter 分解譯與直譯
        1. compiler 效能較好
        2. interpreter 方便跨平台
        3. high-level primitives 一個primitive就能對應多個機械碼
  2. 自然語言與正規語言後者文法更嚴謹
  3. 程式分類
    1. 物件導向(OO)
      1. 隱藏資訊以減少程式設計師使用時犯錯
      2. 比如 封裝(encapsulation)、多型(pomorphism)
    2. 程序導向(Imperative)
      1. 找到演算法
      2. L-value = left-value
    3. 函式導向 functional 整個程式被視為一個函式
    4. declarative 定義清楚後他自己會去運算出結果
  4. control structures
    1. for、if、while 這些幾乎都是用 goto 實作而來
  5. calling procedures
    1. function name 是一個指標
    2. 有些程式語言預設會給予procedure固定 size 記憶體(local stack), 需動態配置記憶體的話宣告需額外告知
      return 後 local stack 記憶體會解放
    3. 術語
      1. local scope  、 global scope
      2. formal parameter 宣告函式中傳入的參數 、 actual parameter 實際使用函式時傳入的值
      3. function vs procedure
        1. function 會 return vallue
        2. procedure 不必 return
    4. procedure
      1. procedure header
        1. 要在function宣告前的程式碼使用時須加入
        2. ex.javascript function 宣告使用 funtion declaration 應該就是有做這個動作
      2. 參數傳遞方式
        1. call by value
          1. 替傳入的值建立一個新抽屜
        2. call by reference
          1. 傳入的是抽屜別名
        3. call by address
          1. 傳入的是抽屜號碼
    5. compiler
      1. lexical analyzer
        1. 將stament切分出最小單位(token)
      2. parser
        1. 建立語法樹
      3. code generator
        1. 產生操作碼

2017年9月9日 星期六

[公開課閒聊] 計算機概論第十一講 Algorithm - 台大 于天立

Ped隨手摘
  1. 如何評斷演算法表現
  2. 會受機器等其他因素影響
    1. 計算執行時間
    2. 執行的數量
  3. 相關指標
    1. Big-O
      1. f(n) 屬於 O(g(n)) f(n) upper bound 不會超過 big O 
      2. 指數為n總是比多項式為n來的大 ex.n100次方 屬於(=) O(2n次方)   computer science在這裡常把屬於寫成=
      3. 只在意n極大時的是否能bound住
        1. 不在意n小的時候的表現? n如何算小該如何定義? n很大的時候Big-O仍然比f(n)表現好嗎?
    2. Big-Omega
      1. f(n) 屬於 O(g(n)) f(n) lower bound 不會超過 big Omega
    3. Big-Theta
      1. f(n)既是Big-O又是Big-Omega
  4. 主要先抓三種情境 best、worst、average
    1. 因為表現會被輸入資料影響所以才需區分情境
    2. 分析通常最重視 average 有時為了預期最壞的情況會注意worst比較少注意 best的情境
  5. 演算法主要issue
    1. 運算結果正確
    2. 效能
  6. loop須注意三個屬性
    1. precoditions
      1. 進入前的狀況
    2. loop invariants
      1. 在loop中不會改變
    3. Termination condition
      1. 最後停止loop的條件