電影流水帳(2020/01/01~2020/01/15)

轉眼就是2020年,流水帳開張啦!

Embed from Getty Images

Spider-Man: Far From Home

我覺得這集的節奏比較鬆散,沒那麼緊湊,沒上一集來的好看。但特效跟該加的梗還是很有誠意,該有的都有了。

前面簡單交代了因為彈指消失而回來的學生的處境,然後 Peter 就跟同學們去歐洲玩。這次 Peter 去歐洲玩,有件很重要的事情,就是跟 MJ 告白,為了告白,他計劃了好久。總之,一行人就出發了。

正所謂,無心插柳柳橙汁,Peter 的好友,Ned 反而莫名其妙的跟隔壁座的女同學熱戀起來了。Peter 旅途不是很順利,不時遇到奇怪的元素眾,神盾局局長也來亂,請他跟 Mysterio 一起處理元素眾的事情。

邊處理元素眾的過程裡,Peter 跟 Mysterio 熟悉起來,進而 Peter 有了想把 Tony 給他的智慧眼鏡交給 Mysterio 的想法,然後就真的交給他了。Peter 交給 Mysterio 以後,也準備跟 MJ 告白。在跟 MJ 告白時,才發現是表錯情,MJ 一直想說的是,「你就是蜘蛛人吧」,而 Peter 一直以為是 MJ 對他有意思,

總之,在表錯情的最後,MJ 拿出一個投射器,照出了之前元素眾的樣子,Peter 意識到自己可能犯了大錯。於是,Peter 跟 MJ 試著去彌補這件事情,過程中才揭露出 Mysterio 是之前史塔克企業的員工,自己的全息投影被 Tony 講的一文不值,他很怒,才聯合之前史塔克企業的員工們一起策畫出這起事件,讓自己能夠成為超級英雄,從而取得利益。最後,Peter 跟 Mysterio 展開一場激戰,取回 Tony 的智慧眼鏡,並且揭露了 Mysterio。

信長協奏曲

電影是日劇的總結跟延伸,所以在一些劇情交代上就簡單的帶過去,不多做著墨。

三郎從現代回到日本戰國時代,遇到了織田信長,信長發現三郎跟自己長的非常相似,就請託他代替體弱多病的自己。想不到,織田家因為信長(三郎)的活躍,而有了一統日本的機會。

故事大致是從第三次信長包圍網開始,一邊交代信長目前的困境,一邊交代人物之間的關係。明智光秀是織田信長本人;秀吉小時候因為幼時信長而家破人亡,對信長有一份怨恨。而三郎的人格特質卻讓原本有反心的明智光秀以及眾家臣們信服。

接著就交代為什麼明智光秀要反信長,簡單的說,就是秀吉掌握了光秀的痛處,要脅光秀殺死在本能寺的信長。光秀不得已放火燒本能寺,但卻讓信長(三郎)快走,趕來的秀吉跟光秀(真信長)說明了自己的怨忿之後,光秀非常驚訝也感到非常抱歉,跟秀吉談判說,請讓信長能統一日本,讓日本能和平,但秀吉不聽,殺了光秀。秀吉聲稱光秀逃了出去,光秀的面孔跟信長一模一樣,所以逃走的三郎只能頂替光秀的身份。三郎和勢弱的光秀軍隊,名義上又不能用信長的名字,跟秀吉一戰的結果,三郎戰敗,被秀吉逮了。三郎在秀吉面前高喊著不要忘了要讓日本和平之後就被斬首。不過三郎並沒有死,而是回到了現在。之後,有點嘴炮的說三郎的理想影響了當時追隨信長的人,然後讓日本安然的到現在。

看完去查了漫畫的資料,發現漫畫好像還沒收尾耶,不過電影這樣收尾算是不錯的了。小栗旬真的很有他個人魅力,一人分飾兩角,都能夠恰如其分;然後飾演秀吉的山田孝之也很厲害,把那種陰沉跟冷酷表現的很好;這兩個人是我印象比較深刻的。

Django開發者常犯的7個錯誤

從這篇 7 common mistakes that django developers make 整理出來的

  • Reinventing the wheel
    • 儘量找人家已經寫好的 package 來用,不要沒事自己在那邊重新刻
  • Monolith application structure
    • 要切 app ,該切就切。
    • 我自己目前有比較 confuse 的是,有用到其他 app 的東西時,該怎麼降低耦合度,又能使用方便,這中間去找到一個平衡點。這邊要等以後再來慢慢想怎麼做會更好了。
  • Writing fat representations and thin models
    • View 不要寫太多邏輯
    • 把邏輯抽到 module 或是 model 裡,讓邏輯統一,才能儘量重複使用。
  • Too many queries per view, or unoptimized queries
    • 一個 view 有太多資料庫查詢或是沒有將查詢最佳化,這個會導致速度變慢。
    • 我建議這邊同時可以考慮儘量使用 cache ,來減輕資料庫負擔。
  • Redundant model fields
    • 思考是不是要有真實的資料庫欄位,思考是不是可以使用 property 來做到同樣的事情。
  • Not adding indexes on models
    • 常用來查詢的欄位 (放在 filter 裡的) 記得加 index :db_index=True,該加就加。
  • Inconsistent data validation
    • model 的檢查跟 form 的檢查要一致。

用 go 的 docker image 來建置 go 專案

指令蠻簡單的,而且可以指定用 go 的哪個版本來進行建置。

# 先切到你的專案目錄下
cd "$WORKSPACE"

# 執行 docker run
docker run --rm -e GOBIN=/usr/src/myapp -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.6 bash -c make
  • –rm 表示執行完就把 container 刪掉
  • -e GOBIN=/usr/src/myapp 是設定環境變數,GOBIN 這環境變數是指編譯好的執行檔所放的位置
  • -v “$PWD”:/usr/src/myapp 表示把當前的目錄掛載到 container 裡的 /usr/src/app
  • -w /usr/src/myapp 表示把工作目錄指定到 /usr/src/myapp
  • golang:1.6 這是表示要使用 golang 1.6 這版,其他版本可以參考 dockerhub
  • bash -c make 是指用 bash 來執行 make,要用 bash 的原因是大部份 Makefile 都是假設用 bash,用其他 shell 會很容易踩到雷。

dockerhub 上有更多說明。

查程式連網速度

之前家裡 wordpress 速度慢慢的,看了 PHP slow log ,發現是使用 libcurl 去外面抓資料時慢。後來用 SSH 連上去在命令列下使用 curl 試試,第一次會慢慢的,之後就比較正常了。

那,為什麼 curl 會慢?上網找了,有在 StackOverflow 上找到一個方法可以顯示 curl 在各階段處理時所花費的時間。先在 $HOME 下新增一個 .curlrc ,然後把下面內容貼進去

-w "dnslookup: %{time_namelookup} | connect: %{time_connect} | appconnect: %{time_appconnect} | pretransfer: %{time_pretransfer} | starttransfer: %{time_starttransfer} | total: %{time_total} | size: %{size_download}\n"

再去執行 curl ,輸出結果後面就會出現 curl 所花費的時間

dnslookup: 0.253 | connect: 0.264 | appconnect: 0.773 | pretransfer: 0.773 | starttransfer: 0.809 | total: 0.809 | size: 6665

那個時候,我連網速度慢的主因是 dnslookup 慢,所以就根據這點,去做調整。至於這個調整,就又是另外一個故事了。