Carbon常用功能

Laravel的Carbon日期套件非常好用(比手刻的或另外載入的日期套件好幾百倍),但是常有一些功能會忘記如何使用,在這邊紀錄常用的Method

取得當月第一天

Carbon::now()->startOfMonth()->format('Y-m-d')

取得當月最後一天

Carbon::now()->endOfMonth()->format('Y-m-d')

加/減一個單位的年月日

Carbon::now()->addDay()->format('Y-m-d H:i:s')
Carbon::now()->subDay()->format('Y-m-d H:i:s')
Carbon::now()->addMonth()->format('Y-m-d H:i:s')
Carbon::now()->subMonth()->format('Y-m-d H:i:s')
Carbon::now()->addYear()->format('Y-m-d H:i:s')
Carbon::now()->subYear()->format('Y-m-d H:i:s')

加/減多個單位的年月日

Carbon::now()->addDays(<帶數字>)->format('Y-m-d H:i:s')
Carbon::now()->subDays(<帶數字>)->format('Y-m-d H:i:s')
Carbon::now()->addMonths(<帶數字>)->format('Y-m-d H:i:s')
Carbon::now()->subMonths(<帶數字>)->format('Y-m-d H:i:s')
Carbon::now()->addYears(<帶數字>)->format('Y-m-d H:i:s')
Carbon::now()->subYears(<帶數字>)->format('Y-m-d H:i:s')

加/減一個單位的年月日

Carbon::now()->addDays()->format('Y-m-d H:i:s')
Carbon::now()->subDays()->format('Y-m-d H:i:s')
Carbon::now()->addMonths()->format('Y-m-d H:i:s')
Carbon::now()->subMonths()->format('Y-m-d H:i:s')
Carbon::now()->addYears()->format('Y-m-d H:i:s')
Carbon::now()->subYears()->format('Y-m-d H:i:s')

格式化為YYYY-mm-DD H:i:s

Carbon::now()->toDateTimeString()

使用parse帶入日期資料

Carbon::parse(<日期資料>)




Windows與LINUX的hosts位置

因為老是記不起來hosts放在哪裡,雖然Windows已經放在桌面上很好存取,但是連線到LINUX主機時又要再找一次,所以特別記錄位置

Windows

C:\\Windows\system32\drivers\etc\hosts

Linux

\etc\hosts

VSCode、瀏覽器、Windows快捷鍵統整(左手就是輔助)

在VSCode、瀏覽器、Windows有需多快捷鍵是共用的,這邊統整我常用的好用的共用的快捷鍵,讓很多功能都能讓左手不用離開鍵盤就可以執行。

VSCode(以下簡稱V)、瀏覽器(以下簡稱B)、Windows(以下簡稱W)共用

「Ctrl+W」關閉頁籤-VBW

「Ctrl+E」搜尋檔案-VBW

「Ctrl+R」重新整理-BW

「Ctrl+Shift+R」重新加載網頁資料-BW

「Ctrl+Shift+T」重新開啟關閉頁籤-VB

「Ctrl+Y」還原下一步-VBW

「Ctrl+A」全選-VBW

「Ctrl+S」存檔-VBW

「Ctrl+F」搜尋關鍵字-VBW

「Ctrl+Z」還原上一步-VBW

「Ctrl+X」剪下-VBW

「Ctrl+C」複製-VBW

「Ctrl+V」貼上-VBW

VSCode獨有(包含自行修改設定)

「Ctrl+`」跳到上一個焦點

「Ctrl+1」跳到下一個焦點

「Ctrl+2」跳到定義

「Alt+`」開啟終端機

「Alt+Q」選取目前文件語言格式

「Ctrl+D」選擇單字

「Ctrl+Shift+L」選擇整篇文章的這個單字

「Ctrl+Shift+F」所有資料夾搜尋關鍵字

「Alt+Shift+F」格式化程式碼

「Ctrl+G」跳到指定行

「Ctrl+B」對稱大括號

Windows獨有

「Win+E」開啟檔案管理視窗

「Win+R」開Cmd視窗

「Win+S」開啟Window搜尋功能

「Win+Shift+S」開啟內鍵截圖功能

「Win+D」顯示桌面(連續按兩次會還原桌面)

「Win+V」使用歷史剪貼簿功能



瀏覽器快捷鍵

瀏覽器有很多好用的快捷鍵,當常常需要使用到瀏覽器時,有好用的快捷鍵就會便捷許多,不會同一個動作要做很多次,浪費力氣。

  1. 「F5」或「Ctrl + R」重新整理
  2. 「Ctrl+F5」或「Ctrl+Shift+R」重新加載網頁資料並且重新整理
  3. 「F11」全螢幕,在瀏覽文件的時候很好用的功能
  4. 「Ctrl+Shift+N」開啟無痕模式(VSCode也適用)
  5. 「Ctrl+Shift+C」檢視元素

  6. 「Ctrl+Shift+T」開啟最後關閉的分頁,這個功能在無痕模式無法使用,不過真的是超級好用,尤其剛剛無意間在VSCode、Sublime、notepad++上按下這個快速鍵發現也有作用,真的統一性非常好,就不用因為不同介面要記不同快捷鍵了(VSCode也適用)
  7. 「Ctrl+W」關閉分頁,同樣也可以在VSCode上使用,不過目前來講按錯將正在使用的頁面關掉的頻率比真正想使用的情況還要多,不過按錯也可以使用「ctrl+shift+T」重新開啟(VSCode也適用)
  8. 「Alt+D」將游標focus到網址列上,這個的好處是如果手都放在鍵盤上的話,要把複製的網址貼上瀏覽器執行就不用再用到滑鼠了
  9. 「Ctrl+Shift+B」切換是否顯示書籤列,網址下方的書籤列雖然很方便,但是不使用的時候又覺得占空間,意外找到可以切換的快捷鍵功能
  10. 「Ctrl+E」開啟網頁搜尋模式,游標跳到網址列,但是因為開啟搜尋模式,無法直接輸入網址連過去


MYSQL常用語法/指令

記錄MYSQL常用但是要用的時候都要另外google的語法

查詢是否有重複的資料 

SELECT * FROM {table_name} HAVING COUNT(*) > 1;

新增欄位

ALTER TABLE {table_name} ADD [column_name] VARCHAR(255) NULL DEFAULT '' AFTER [another_column_name] COMMENT '';

子查詢

SELECT *
FROM {table_name1}
WHERE [column_name1] IN
(
SELECT [column_name] FROM {table_name2}
);

建立索引

CREATE [UNIQUE] INDEX [column_name] ON {table_name} ([column_name]);


用root帳號登入

mysql -u root -p <密碼>

新增User

CREATE USER '<帳號>'@'localhost' IDENTIFIED BY '<密碼>';

設定帳號最高權限

GRANT ALL PRIVILEGES ON *.* TO 'account'@'localhost';

設定帳號存取my_db權限

GRANT ALL PRIVILEGES ON my_db.* TO 'account'@'localhost';

my_db設定CRUD權限

GRANT SELECT, INSERT, UPDATE, DELETE ON my_db.* TO 'account'@'localhost';

移除使用者權限

REVOKE ALL PRIVILEGES ON my_db.* FROM 'account'@'localhost';

重新載入權限

FLUSH PRIVILEGES;

刪除使用者

drop user '<account>'@'host';

備份資料表

mysqldump -u[username] -p[password] [database] {[table]} > [filepath]/[filename]

在linux一行指令下SQL語法

#-s 是靜默模式的標誌,因此 shell 的輸出較少。
#-N 防止從結果中輸出列名。
#-e 表示應該執行 -e 標誌後面的語句,然後退出 shell。
mysql -u[username] -p[password] [database] -sNe "[SQL語法]"



Windows 10 常用快捷鍵

Windows有很多好用的快捷鍵,使用不僅快速省力又省時,而且還可以節省一些腦容量去記一些設定的位置。

  1. 「Ctrl + N」或「Windows鍵 + E」開新資料夾
  2. 「Alt + D」選取路徑
  3. 「Ctrl + N」開啟新的檔案總管視窗
  4. 「Ctrl + W」關閉目前視窗
  5. 「Alt + Enter」開啟內容視窗
  6. 「F11」視窗最大化
  7. 「Windows鍵 + V」啟用歷程剪貼簿
  8. 「Windows鍵 + X」開啟快速連結表
  9. 「Windows鍵 + R」開啟執行視窗
  10. 「Windows鍵 + D」縮小視窗(馬上再執行一次會復原所有視窗)
  11. 「Windows鍵 + Pause」鍵 開啟系統資訊
  12. 「Windows鍵 + Shift + S」開啟內建截圖
  13. 「Windows鍵 + S 」開啟搜尋系統程式視窗

Word保持純文字貼上的快捷鍵

在word裡貼上從別的地方複製的資料時,會將複製的格式和字形一併複製過來,但有時我們只是想要單純複製純文字就好,這時候可以用Ctrl+Alt+V貼上,就可以選擇純文字貼上


從VSCode複製註解

貼到word上時連底色與註解的顏色都複製過去

改使用Ctrl+Alt+V貼上,跳出選擇性貼上的視窗可以選擇貼上的格式,選擇「未格式化文字」

貼上後即可使用純文字貼上,不需要貼上後再來清除文字的格式,減少步驟





LINUX常用指令

  1. 以root權限執行

    sudo <指令>

  2. 回上一層資料夾

    cd ..

  3. 回使用者資料夾

    cd

  4. 進入指定資料夾

    cd <資料夾相對/絕對路徑>

  5. 確認目前資料夾

    pwd

  6. 以ssh方式連到ip端的電腦

    ssh <ip>

  7. 刪除檔案/資料表

    rm <檔案/資料表名稱>

  8. 刪除遞迴檔案/資料表

    rm -r <檔案/資料表名稱>

  9. 強制刪除檔案/資料表

    rm -f <檔案/資料表名稱>

  10. 搬移(重新命名)檔案/資料表

    mv <來源檔案/資料表名稱> <目標檔案/資料表名稱>

  11. 顯示目前資料表(詳細)

    ll

  12. 顯示目前資料表(簡略)

    ls

  13. 顯示目前資料表(詳細)並且包含隱藏資料

    ll -al

  14. 建立軟連結

    ln -s <目的> <來源>

  15. 移除軟連結

    unlink <連結名稱>

  16. 移動檔案

    mv <被複製的檔案/資料夾> <複製後的路徑+檔案/資料夾名稱>

  17. 切換root

    sudo su

  18. 切換其他使用者

    su <使用者名稱>

  19. 修改使用者密碼

    passwd <使用者名稱>

  20. 刪除使用者

    userdel <使用者名稱>

    刪除使用者, 並且將目錄以及郵件都刪除

    userdel -r <使用者名稱>

  21. 查詢使用者隸屬那些群組

    groups <使用者名稱>

  22. 將使用者剔除群組

    gpasswd -d <使用者名稱> <群組名稱>

  23. 刪除群組

    groupdel <群組名稱>

  24. 查詢自己是從哪裡連過來的

    who

  25. 清除檔案內容

    > <檔案名稱>

Git常用指令

  1. 查看分支/目前分支
    git branch
  2. 新增分支
    git branch <分支名稱>
  3. 刪除分支
    git branch -d <分支名稱>
  4. 切換分支
    git checkout <分支名稱>
  5. 拉取origin分支資料,等同於執行git fetch + gti merge 目前的分支
    git pull
  6. 推送分支到遠端, ex.git push origin leohuang
    git push <數據庫簡稱> <分支名稱>
  7. 合併分支
    git merge <分支名稱>
  8. 查看提交紀錄
    git log
  9. 查看目前檔案狀態
    git staus
  10. 單一檔案加入索引
    git add <檔案名稱>
  11. 全部加入索引
    git add -A
    git add -all
  12. 提交紀錄
    git commit -m "<填寫版本更新資訊>"
  13. 合併提交, 將第二行的 "pick" 改為 "squash",儲存後並退出
    git rebase -i HEAD~~
  14. 查看圖形多分支顯示的提交紀錄指令
    git log --all --graph --decorate --oneline
  15. 註冊縮短指令
    git config --global alias.<自訂命令> <原始命令>
  16. 縮短checkout
    git config alias.co checkout
  17. 縮短branch
    git config alias.br branch
  18. 縮短commit
    git config alias.ci commit
  19. 縮短stasus
    git config alias.st status
  20. 縮短美化後的git log樣式(斷行是為了文章方便閱讀,實際上不能斷行)
    git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset
    -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

PHP的三元運算與Ternary Operator與Null coalescing operator

PHP有提供(?:)三元運算,可以讓簡單的if...else條件做更精簡的判斷

$value = ($boolean) ? 't' : 'f';
 
//上例等同於
 
if ($boolean) {
    $value = 't';
else {
    $value = 'f';
}


在PHP5.3版之後,推出了?:運算,能更精簡判斷變數為空的情況

$value = $data ?: $default;

//上例等同於

if (!empty($data)) {
    $value = $data;
else {
    $value = $default;
}

 

在PHP7.0版之後,又推出了??運算,補足?:運算在變數尚未宣告時的情況

$value = $data ?? $default;

//上例等同於

if (isset($data)) {
    $value = $data;
else {
    $value = $default;
}

 

 

參考文章:

PHP ?: 和 ?? 運算子差異

 

 

Laravel隨手筆記

這篇會隨手紀錄在學習Laravel與RESTFUL API與Vue.js...等等的程式的時候,自己常常會忘記的架構或語法。

Laravel

  • route位置 => /routes/
  • view位置 => /resource/views/
  • controller位置 => /app/Http/Controller/
  • model位置 => /app/
  • 資料庫連線設定位置 => config/database.php
  • 在blade中 {{ $titile }}就是<? echo htmlentitles($title);?>的意思
  • 在blade中 {!! $titile !!}就是<? echo $title;?>的意思
  • 模板繼承範例
    • 在母模板使用@yield('title'),@yield('content')
    • 子模板@section('title',$title) => 直接帶入變數帶回母模板的@yield('title')
    • 子模板@section('content')~程式碼~@endsection =>將子模板區塊中的程式碼帶回母模板的@yield('content')
  •  資料驗證(Validator)
    • $rules['email'=>['required','max:150','email']] => 表示email欄位必填,最長150個字,驗證是否符合email的規則
    • $rules['password'=>['required','same:password_confirmation','min:6']] =>表示password欄位必填,必須與password_confirmation欄位的數值相同,最少6個字
    • $rules['password_confirmation'=>['required','min:6']] =>表示password_confirmation欄位必填,最少6個字
    • $rules['type'=>['required','in:G,A']] =>表示type欄位必填,僅限定G或A這兩種數值
    • 最後套入Validator::make(request->all(),$rules)判斷是否有錯誤
  • blade的三元運算 => {{ isset($name) ? $name : 'Default' }}可以簡寫為{{ $name or 'Default' }}
  • redirect()->withInput => 可以將input資料再傳回到導向的畫面,該畫面再以old('欄位名稱')將資料帶回原本欄位
  • Hash
    • Hash::make(密碼) //用來對密碼加密
    • Hash:check(輸入的密碼,資料庫的密碼) //檢查密碼是否正確
  • 列印EloquentSQL語法的方法
    • DB::enableQueryLog(); //啟用紀錄SQL語法
    • $user = User::where('email',$imput['email'])->firstOrFail(); //撈取使用者資料
    • var_dump(DB::getQueryLog());//列印出資料庫目前所有執行的SQL語法
  • session
    • session()->put(鍵值) //將資料存入
    • session()->has(鍵值) //判斷是否有資料
    • session()->forget(鍵值) //清除session資料
  • 交易功能
    • DB::BeginTransaction();//開始交易
    • DB::commit();//完成交易
    • DB::rollBack();//取消交易
  • $request
    • $request->ip()取得使用者IP
    • $request->path()取得uri
    • $request->method()取得HTTP請求方式 
    • $request->isMethod()判斷HTTP請求方式ex: ($request->isMethod('post')?true:false)

Migration

  1. php artisan make:migration => 建立migration檔案(snake_case)
  2. php artisan migrate => 執行migration檔案
  3. php artisan migrate:rollback => 恢復上一版本的migration檔案
  4. php artisan migrate:reset => 清除所有的migration版本
  5. php artisan migrate:refresh => 重設所有的migration版本並立即重建新的資料表

Seeder

  1. php artisan make:seed UserTableSeeder => 建立seeder
  2. php artisan db:seed => 執行所有seeder
  3. php artisan db:seed --class=UserTableSeeder =>執行單一seeder
  4. seeder可以搭配faker產生資料參考 https://bonze.tw/laravel-faker/ 這篇文章撰寫

HTTP Method

  1. GET 讀取資源
  2. PUT 替換資源
  3. PATCH 更換資源部分內容
  4. DELETE 刪除資源
  5. OPTIONS 回傳該資源所支援的所有 HTTP 請求方法
  6. CONNECT 將連線請求轉換至 TCP/IP 隧道
  7. POST 新增資源

RESTful API

  1. 瀏覽全部page畫面=GET:http://localhost/page/
  2. 瀏覽一筆page資料=GET:http://localhost/page/:id
  3. 新增一筆page資料=POST:http://localhost/page
  4. 修改一筆page資料=PUT:http://localhost/page/:id
  5. 刪除一筆page資料=DELETE:http://localhost/page/:id