電影流水帳(2019/05/27~2019/06/21)

Embed from Getty Images

Pokémon Detective Pikachu

電影的這個故事跟動畫沒什麼關係,所以有沒有看過動畫對觀賞這部電影來說,影響不大。

電影的背景是設定在一個人與神奇寶貝共存的世界,Tim 收到了一個不幸的消息,他的父親 Harry 死了,他必須到 Ryme city 處理父親遺留下來的事物。在父親的房間裡,Tim 遇到了皮卡丘,一個能與他溝通的皮卡丘,但奇妙的是,其他人都無法理解皮卡丘在說些什麼。皮卡丘也不知道為什麼自己會在 Harry 的房間裡,不過,Tim 與皮卡丘兩人在房間裡發現了一些不尋常的東西。兩人慢慢的依照這線索進行調查,並接受了富豪 Howard 的委託,在調查的過程裡,電影同時也慢慢在介紹這個神奇寶貝世界。到了最後,他們發現原來在調查過程協助他們,看似好人的 Howard 其實有他的野心,想要藉著超夢來融合人與神奇寶貝。於是 Tim 跟皮卡丘合力阻止了 Howard。

在阻止之後,Tim 透過超夢與 Howard 的監視影像才明白到,在身邊的皮卡丘其實是自己的父親 Harry。Harry 在調查過程發生意外時,皮卡丘請求超夢超夢使用他的能力,讓 Harry 的靈魂附身到自己身上,而附身的代價是遺忘,這就是為什麼皮卡丘忘了很多事情,並且也只能跟 Tim 溝通的原因。總之,Tim 跟 Harry 兩人的心結冰釋,帶來一個歡樂結局。

說實話,電影前面有點悶,我能理解故事的鋪陳有其必要性。但從後面遇到魔牆人偶開始,再加上皮卡丘的配音,故事變得活潑起來。整體來說,我覺得還不錯。

Arrival

同學推薦我看的,剛好 Netflix 上了這部,就趕緊來看。

Louise 是個語言學教授,從有外星飛行物來到地球的那天開始,她就常常有奇怪的夢境。由於 Louise 有語言學專長,之前被軍方找去幫忙,現在有外星人來訪,軍方再次找上門,希望她能跟另外一個人合作,與外星人進行溝通。來到外星人登陸的地點,她認識了 Ian,接著他們就開始試著與外星人進行溝通。

溝通一開始並不順利,雙方並不了解彼此的語言與肢體動作,Louise 以她的想法,試著教導外星人,在這過程也試著去了解對方的肢體語言。溝通真的是很重要,其他國家就不是那麼順利,在相互猜疑的情況下,情勢慢慢緊張起來,連帶也讓美軍軍方的某些人有了持疑的態度。於是這些人試著要炸死外星人,Louise 跟 Ian 差點就被炸死,還好外星人救了他們。值此同時,中國決定進行武裝攻擊,透過夢境,Louise 明白了自己的使命,打電話給中國軍方領袖,並且說服了對方不要進行武裝攻擊。後來才了解到,這些外星人是因為未來會需要地球人的幫忙,所以才來到地球,讓 Louise 等地球人能了解他們的語言與想法。Louise 透過外星人語言的啟發得到了預知的能力,她所做的夢境,其實是未來會發生的事情。夢境裡的女孩就是她的女兒,在夢境裡,她的女兒最後因疾病而死去。電影的最後,Louise 即使已經知道了未來所發生的事情,她仍然面對,與 Ian 結婚…

Deadpool 2

Wade 原本以為在上集電影結束後,可以跟 Venessa 生個孩子,過快樂的生活。可是天不從人願,一群黑幫來追殺 Wade,流彈誤殺了 Venessa,Wade 忿怒的殺了黑幫之後,難過的想死去,但你知道,死侍是死不成的。

X 戰警救回了 Wade,並試著讓他加入 X 戰警。Wade 加入 X 戰警,擔任候補的第一個任務就出了狀況。Russell 是個變種人,在孤兒院裡被虐待,因此很忿怒,造成了騷動。對,Wade 的第一個任務就是要制止 Russell ,在制止的過程裡,Wade 發現內情並不單純,結果跟 Russell 一起進了監獄。兩人被強制戴上特殊儀器,抑制了變種人的超能力,在監獄裡過的不開心,Wade 沒有超能力,整個人快掛了,就對 Russell 並不是太友善。

Cable 是個未來人,他的妻女因為 Russell 而死去,他決心回到過去阻止 Russell。所以使用時光機器回到過去,闖進監獄,打算要殺掉 Russell。在騷動裡,Wade 身上的特殊儀器掉了,就阻止了 Cable。Wade 後來逃了出去,而 Russell 來不及逃出去,留在監獄裡。監獄裡的 Russell 聽了之前 Wade 的話,結交了 Juggernaut,心態轉變為惡,並打算逃出去。

逃出的 Wade 在夢境裡看到 Venessa,Venessa 暗示他家庭的事情,Wade 轉變了心意,決定回去救出 Russell。在得知要移轉監獄的消息後,Wade 找了 Domino 等人組了 X 特攻隊進行救援。結果他們跟 Cable 打了一架,不算成功救出 Russell,不過 Russell 跟 Juggernaut 因此逃了出去。

Cable 回頭去找了 Wade,因為 Russell 跟 Juggernaut 聯手了,Juggernaut 蠻強的,Cable 打不贏。Cable 告知 Wade 為什麼要殺 Russell 的原因後,Wade 跟 Cable 交換了條件,要讓他有機會能說服 Russell 改過向善。一行人再去找了鋼人尋求協助,然後就去找 Russell 了。大打一場之後,Wade 犧牲了自己,讓 Russell 省悟。Cable 則是用掉最後一次回去未來的能量,救回 Wade,一個皆大歡喜的結局。

シン・ゴジラ

某天在第四台看到這部電影的後半段,就被吸引住了。過了沒幾天,再次看到,剛好是電影剛開始沒多久,所以就補完了。

故事蠻簡單的,哥吉拉突然出現,日本政府找了政府體系裡的能人異士,一起依據哥吉拉留下的線索,進行發想、討論。過程裡,美國也來攪局,最終找到對策,並且成功阻止了哥吉拉。

電影裡的特攝特效其實不怎麼樣,吸引我的是文戲 (會議) 的部份,很充份的體現了日本人認真的精神,同時,也在進行的過程裡,帶入了沉默的艦隊那種國與國之間諜對諜的詭譎局勢。後來在網路才看到說,電影導演是執導新世紀福音戰士動畫的庵野秀明,這就難怪也有新世紀福音戰士的感覺了。

簡略的看 Tastypie

跟 DRF 不一樣,Tastypie 以 ModelResource 為主,埋下 Resource 時,就是完整的 LIST/CREATE/UPDATE/DELETE。

Resource 的 model 不一定要是 django model,也可以是自訂的 resource:https://django-tastypie.readthedocs.io/en/latest/non_orm_data_sources.html

  • Authentication 蠻多的,Basic/ApiKey/Session/Digest/OAuth/Multi 都有,OAuth 有內建。
  • Authorization 是指定允許的動作,像是 read_list / read_detail / create_list …. 等等。
  • Serializer 跟 DRF 有點不一樣,這邊僅指輸出的格式,DRF 主要是指輸出哪些欄位。
  • Throttling 可指定一秒內能呼叫的次數
  • 有支援 Paginator 翻頁。
  • 支援 GeoDjango!! 這倒是很方便,GeoDjango 看來是值得花時間來研究的。

缺點是,github 的活躍度不是太高,上次的更新是4個月前 (2018/9)。

跟 DRF 的比較可以參考這篇:https://stackshare.io/stackups/django-rest-framework-vs-tastypie

Linux 裡也能用 MacOSX

之前是知道 VirtualBox 可以執行 MacOSX,但我一直沒試過。前幾天,在 Twitter 上看到這個專案:https://github.com/foxlet/macOS-Simple-KVM/ ,說可以用 Linux 的 KVM 來執行 MacOSX。

今天來試試看,基本上不用做太多修改,就可以順利開機起來。
這邊紀錄一下幾件遇到的情況:

  1. 不需要額外設定 Bridged network:原本以為網路需要用 Bridged,結果照著網站上的說明去設定,反而網路有問題,這會導致安裝程序無法進行。
  2. Disk utility:到安裝程式時,先選 Disk utility 去初始化之前用 qemu-img 所建立的磁碟,後續才選 Reinstall 那個項目。
  3. 安裝以後的重開機:安裝以後重開機,不要再選到安裝,要注意看一下,選到從 SystemDisk 開機那個項目 (從右邊數過來第二個)
  4. virt-manager:可以安裝 virt-manager ,會有個類似 virtualbox 的管理工具 (就只是類似,不代表一模一樣)。這邊有幾件事情要做:
    1. 安裝:sudo apt-get install virt-manager
    2. 加入 kvm 群組:sudo usermod -a -G libvirt,kvm <your_username> ,做完這步要重新開機,virt-manager 才能順利連接 QEMU/KVM。
    3. virt-manager 是在系統工具裡,中文名字是虛擬機管理員。
    4. 使用 ./make.sh –add 將機器組態匯入以後,如果有遇到不能開機的情況,可以參考這個 pull request,使用這個指令 qemu-system-x86_64 –machine help | grep q35 | cut -d” ” -f1 | egrep -oe “.*-[0-9.]+” | sort -rV | head -1 取得 machine type,修改 template.xml 以後,再用 sudo virsh define ./template.xml 去更新機器組態。
    5. 要用虛擬機管理員自行新增硬碟。

安裝以後的設定:

  1. 輸入法:不使用 CapsLock 切換輸入法,改用 ctrl-space 來切換的話,第一步是在系統偏好設定 > 鍵盤 > 輸入方式那邊,將「使用大寫鎖定鍵來切換…」的那個勾選給取消掉。然後到系統偏好設定 > 鍵盤 > 快捷鍵那邊,在左邊找到輸入方式,將右邊的兩個項目給勾選起來,這樣就可以用 ctrl+space 來切換輸入法了,長按住 ctrl,再按 space 則是切換輸入法。
  2. homebrew:就是安裝常看到的 brew 指令。

電影流水帳(2019/04/15~2019/05/26)

Embed from Getty Images
  • The World’s End (IMDB, Wikipedia),台譯:醉後末日。
  • Avengers: Endgame (IMDB, Wikipedia),台譯:復仇者聯盟四-終局之戰。
  • Pirates of the Caribbean: Dead Men Tell No Tales (IMDB, Wikipedia),台譯:加勒比海盜-神鬼奇航:死無對證。
  • Pirates of the Caribbean: On Stranger Tides (IMDB, Wikipedia),台譯:加勒比海盗-神鬼奇航:幽靈海。

The World’s End

Gary 一直惦記著在畢業那天沒完成的願望,畢業那天,他跟其他四個死黨打算喝遍鎮上十二個酒吧,在喝的過程裡,發生了許多事情,只是他們並沒有喝到最後。幾個死黨也因為這天的事情,互不聯絡了好幾年。Gary 之後過的並不如意,工作不順利,也有了酗酒的習慣。他一直想著如果當初喝完這十二間酒吧,之後的事情會不會變得不一樣。直到這天的戒酒互助會,他在裏面聽到一句話,他決心找過去的好友一直去挑戰這十二間酒吧,完成他心裡的願望,彌補遺憾。

Gary 費了很大功夫,才說服他的四個好友一起回去挑戰。回到這小鎮開始挑戰以後,他們覺得這小鎮變得怪怪的了,只是這種感覺隱隱約約的,不知道是太久沒回來的關係還是真的怪怪的。隨著挑戰的進行,他們確定了小鎮真的怪怪的,同時他們也慢慢化開心結。喝到後面幾間的時候,他們確定了小鎮的人們被外星人慢慢的替換掉,本來是打算喝到最後一間酒吧「世界末日」之後,再偷偷離去。但是外星人發現了他們知道了,試著要跟他們談判,不過,他們義無反顧的拒絕了。於是展開一場追逐戰,追逐戰的最後,Gary 、Andy 跟 Sam 逃出小鎮。小鎮爆炸了,而這爆炸將地球的所有電磁設備都摧毀了,地球回到黑暗時代。

Avengers: Endgame

這篇很尷尬,看完不能馬上寫,所以拖了很久才敢寫。

接續之前復仇者聯盟三的劇情,薩諾斯消滅了宇宙一半的人,然後他去養老了。在太空漂流的鋼鐵人與涅布拉被驚奇隊長給推回地球去,回去的鋼鐵人跟剩下的成員們吵了一會就跟小辣椒走了。剩下的成員們找到薩諾斯之後,跑去找他算帳,看能不能拿回無限寶石救回被消滅的人,結果,薩諾斯拿無限寶石消滅了無限寶石。這下沒戲唱了,生氣的索爾砍了薩諾斯。

失望的復仇者成員們回到地球,想要做點什麼,卻又沒辦法做什麼,沈浸在無力感之中。五年很快的過去了,未來看似仍然沒有希望。舊金山的某處倉庫裡,有輛看來熟悉的車子,老鼠在車子的後車廂活動時,觸動了某項儀器的開關,蟻人史考特橫空出世。在蟻人與黃蜂女電影的彩蛋裡,史考特被困在量子領域,現在才出現。史考特出了倉庫以後,在外面溜轉了一圈,他心裡想,「薩諾斯讓這世界已經變得不一樣了啊,那我的女兒呢?」他趕緊去看了紀念碑,碑上沒有女兒的名字 (話說這紀念碑是很多沒錯,但是一個碑上能刻多少人?同名同姓又有多少人?),於是他趕往之前女兒的住處。按了門鈴,來應門的是個婷婷玉立的少女,「啊~女兒都長這麼大了!」,「啊~是爸爸!」兩人緊緊的抱住。史考特了解狀況之後,突然想到了重要的事情,告別女兒之後,匆匆趕往復仇者聯盟總部。

在復仇者聯盟裡,史考特跟美國隊長與黑寡婦交代了前因後果,認為量子領域可以帶他們回到特定的時間點,改變時空。於是他們去找了專家,東尼史考特,試著請他幫忙。但東尼認為這可不是時間旅行電影,不太可能這樣子做,美國隊長等人只好離去,轉而尋求浩客幫忙。美國隊長等人找到浩克,浩克並不是量子領域的專家,他還是答應幫忙,不過實驗並不順利。

東尼雖然拒絕了他們,但心裡一直掛念著這個點子,並且試著做摹擬與推算,然後發現了這是個可行的點子。在跟小辣椒商量以後,他決定還是幫這個忙,於是他前往復仇者聯盟總部。果然在東尼幫忙之下,他們順利的完成可以在量子領域裡指引方向的儀器,並且擬定了計劃,要分成三組人,到不同的時間與地點去借回無限寶石。在計劃的進行中,發生了不少故事。這裏面最讓我感動的是東尼遇到他父親以及美國隊長再次見到卡特的那段,東尼再次遇到他父親,其實是有點不知所措的,不過聊起了對孩子的期許,就開始有話聊了。東尼從父親的口中知道,對他一向嚴厲的父親其實是很愛他的,在交流裡,他也分享了他自己對於孩子的想法。

計劃大致上是順利的,不過仍然有無法預期的部份,像是黑寡婦的犧牲,以及遇到薩諾斯。無限寶石已經取回,浩克以他強壯的身體使用了無限手套,回復了之前被消滅的另一半人。可是在那個時空點的薩諾斯利用了涅布拉也來到這個時空,為了無限手套,復仇者聯盟與薩諾斯展開大戰。經過一番精彩的打鬥之後,東尼使用了無限手套,消滅了薩諾斯等人,可是東尼沒有浩克強壯的身體,承受不了使用無限手套的後果而死去,最後就在失去東尼的哀傷中結束。

Pirates of the Caribbean: Dead Men Tell No Tales

在幽靈海之後,故事試著延續之前第三集的故事。

Henry 是前三集男女主角 Will 跟 Elizabeth 的兒子,Henry 知道自己父親犧牲而被詛咒纏身,必須得永世當飛翔荷蘭人號的船長。為了破除這個詛咒,他開始尋找波賽頓的三叉戟。在尋找的過程裡,他找到 Carina 與 Jack Sparrow ,並與他們合作。經過一番冒險之後,終於他們找到了三叉戟,並且破除了詛咒。Will 跟 Elizabeth 終於能重新在一起,而 Henry 也跟 Karina 在一起,一個皆大歡喜的結局。

在維基百科條目裡看到最後 Will 與 Elizabeth 同床時,有看到人影,同時發現地上有藤壺的痕跡,這似乎是表明了有第六集的可能。

Pirates of the Caribbean: On Stranger Tides

這故事是個新的開始,大致是在講 Angelica 要 Jack 幫忙尋找青春之泉,來讓她父親-黑鬍子能延續生命。不過最後 Jack 想讓 Angelica 看清她父親的真面目,弄出兩個杯子讓黑鬍子選擇,結果黑鬍子選擇錯誤,喝下了錯誤的青春之泉而死去。

比較讓我印象深刻的是那幕美人魚的戲碼,我搞不清楚傳教士到底怎麼了。為了取得人魚的眼淚,黑鬍子一行人在人魚灣獵捕兇惡的人魚,經過一番亂戰之後,好不容易撿到一條美人魚,一行人帶著這條人魚前往青春之泉。在路上,傳教士對人魚動了情,並幫助她。而之後 Angelica 利用了人魚對傳教士的感情,取得了眼淚。後來在青春之泉的三方會戰時,傳教士受了重傷,他找到趁亂逃脫的人魚,人魚帶走了傳教士。我以為傳教士是被人魚帶走並被殺死了,但維基百科裡說是被人魚帶走救治,所以到底是?

celery 無法 inspect

環境:

  • Celery 4.2.1
  • Broker backend: RabbitMQ
  • Result backend: Redis

想使用 celery inspect 來查 memory leak 問題,但是 celery inspect 時,都會出現 Error: No nodes replied within time constraint. 的訊息。

察看 log 以後,確定當 celery log 出現 warning,connection reset by peer 時,celery status 就會出現 “Error: No nodes replied within time constraint.” ,在這個同時,rabbitmq server log 也會出現 Missed heartbeats from client, timeout: 20s 的 ERROR ,有看過以下 issues,但沒幫助

後來找到這篇 rabbitmq报Heartbeat missing with heartbeat = 60 seconds ,參考內容把 celery 的 broker_heartbeat 設定改為 0,避免 RabbitMQ 做 heartbeat 的檢查。看來就解決了。

原理的解說可以參考這篇:Detecting Dead TCP Connections with Heartbeats and TCP Keepalives 大致上是說,RabbitMQ 有連線 heartbeat,當 client 沒回應的時候,RabbitMQ 會主動斷掉。而這個 heartbeat 是可以透過 client 在初始化連線時去設定的,所以調整 celery 設定,請 RabbitMQ 不要做 heartbeat 檢查就可以了。