發布日期:Sep 1, 2021

文章於 Sep 1, 2021 更新

20210901

事件紀錄

關於程式優化

在程式執行中,盡可能少產生一些龐大但使用次數少的物件,避免無謂佔用記憶體。
像是 cache 沒有控管地胡亂儲存累積,就可能會讓記憶體被塞滿,卡住其他行為。
或者是產生只用一次的大陣列,如果可以隨著產生的過程把後續需要的行為直接處理掉,就不必長出使用頻率很低的陣列出來佔空間。

關於 laravel 架構

  • app/Console/Kernel.php 是放置 php artisan commands 以及排程設定的地方
    • 在這邊設定排程後,在 laravel 專案用 php artisan schedule:list 可以檢查開啟的排程下一個執行時間是什麼時候,當執行時間與系統排程檢查對上時,就會執行 laravel 裡面設定的排程。

      • 系統的排程執行設定必須寫成這樣:
        • * * * * * php /path/to/artisan schedule:run >> /dev/null 2>&1
        • 讓系統排程每分鐘都去執行 laravel 的 schedule:run ,看看有沒有預定執行時間已經到的 laravel 排程需要跑。
        • 參考資源: 任務排程
    • 如果專案環境是用 docker 起最精簡的 container 設定排程後,在 container 要記得安裝 crontab ,不然不會有系統排程的功能

  • ide-helper 檔案是 ide-helper 套件自動產生的,作用是 mapping namespace 和 class ,以便在 auto load 時找到正確的 class,開發時也能夠藉由 reference 功能跳轉到對應程式檔案。
  • 由於 auto load 會去讀取 class 的 construct() ,所以 construct() 裡面不要放「起新物件」、「資料庫連線」之類跟環境設定和 .env 有關的東西。
  • Middleware 可以對收到的 request 進行前處理與後處理。
    • 所以後端要取得 hosts 或 header 資訊的話,合理的處理點是在 middleware 階段解析收到的 request ,拿到相應的資訊後才往 controller 拋。
    • 如果需要有無判斷 domain 都可登入的話,在 laravel 的框架下,可以很靈活的使用 route 抽換路徑對應的 controller ,也可以增加新的路徑對應組,就不用受限於只能用同一個 function 對應同一組商業邏輯。
    • laravel 的 middleware 機制可以靈活巢狀分群需要使用的 middleware 。 middleware 的概念可以想成處理 request 的共用機制,依照範圍區分的 middleware 是可以做出共用模式的。
    • middleware 前處理舉例: ETag ,可以對回傳的內容做標記,協助瀏覽器判斷資料可以直接從 cache 取,或者必須重新索取回傳內容。
      不過此運作的前提是瀏覽器有支援辨識 ETag
  • 部署教學
  • COMPOSER 安裝

關於常用指令

  • 切換執行身份
    • 切換成 root
      • sudo -s
    • 切換成其他使用者
      • sudo -su [other_user]
  • 在 docker 環境裡進入特定 container 裡,以 bash 指令的方式執行
  • 檢視目前所有的 docker 容器狀況
    • docker ps

關於資安

前後端都可以做資料隱蔽。
理論上前端不應該直接取得後端服務伺服器的資料,以免運行主要服務的後端 server 遭到攻擊。
後端也不必要看到前端資訊,除非需要追蹤足跡。
後端暴露資訊的可能位置:
cookiec 或 header 裡的 token 會帶有連線資訊如圖

在目前的公司專案架構下,前端的 koa 理論上會對前端遮蔽後端 server 資訊,也會對後端遮蔽前端訪問來源。
如果沒有遮蔽的話,會變成前端可以從 cookie 裡儲存的 Token 解析出把 request 往哪裡送(例如用 JWT 機制產生的 token 就可以反向解析);後端也能藉由直接取 host 或者 header 裡的 refer 得知前端資訊。
比較安全的做法是 koa 在處理時只對前後端揭露必要資訊,如果不需要,就不給多餘線索。

總結

1. 工作技能有沒有因此成長了?

長很多知識

2. 計畫如何改善現況或者可以試著做得更好?

X

3. 如何在這件事上提升效率?

X

4. 有沒有把時間花在刀口上?

X

關鍵字

  • 程式優化
  • laravel
  • 常用指令
  • 資安

題外話

昨天送走了一位好主管,還以為自己已經夠公私分明,沒想到真的面對離別還是這麼不捨。
謝謝你開拓了我在人生道路上的視野,以及做了很多技術與團隊合作上的示範。
我應該會很想念你一段時間的,希望你在未來的路上能過得越來越好!有緣再會。