作者: Jerry Lin

  • 《恐怖教授的怪奇課程》心得

    《恐怖教授的怪奇課程》心得

    《恐怖教授的怪奇課程》,是一部分析恐怖組織/邪教和恐怖份子的科普漫畫,剖析「恐怖主義」在歷史例證和作法,第二集甚至有一個以東京奧運作為恐怖攻擊來規劃的實作,讓我們作為旁觀者看一下如何成為一個合格的恐怖份子(X

    恐怖主義在各國、各種立場以及歷史上有不同定義,漫畫中也有提到,不過就像是駭客攻防,身為藍隊的我們,應該怎麼做才能成功的抵禦恐怖攻擊,或是避免成為恐怖份子利用/擴散的棋子呢?我整理幾個內容:

    1. 社會安全網建立:
      1. 確保能夠緊急聯繫的朋友圈。確保自己能夠獲得一手資訊的管道。
      2. 朋友圈立場價值觀應多元,也需要培養自己開放的心態。
      3. 確保資訊多元,除了監督媒體,也應該培養自己的媒體識讀能力。
    2. 警覺心,也是媒體識讀能力的培養:
      1. 確保資訊情緒強度,如果超過一定強度,請注意資訊來源。
      2. 保持對於資訊正確質疑,除了區分「觀點」和「事實」,也要區分「情緒」和「論述」的差異。
      3. 擁抱簡單的口號、影片等宣傳工具,但明白這不是說服你的理由和內容。
    3. 童軍規律第十條,勇敢:
      1. 勇敢維護自己的權益,這裡是台灣。
      2. 勇敢和不同立場的朋友討論,勇敢面對自己不喜歡的立場,多看看自己不喜歡的資訊。
      3. 正視自己內心的情緒,情緒沒有錯,懂得健康發洩,也懂得回歸平靜。(喜劇開場的練習有助於情緒平穩)
      4. 不應該為了「禮貌」、「溝通」、「正向思考」而寧願放棄事實,不同維度的東西不要混在一起了。
    4. 資方心態,需要你學習經營企業的技巧與心態:
      1. 政府是服務你的,他們領納稅人薪水。
      2. 你是股東,你負責選出經營團隊以及監督單位。
      3. 老闆不是消費者,別有消費者心態。
      4. 明白公共議題需要花時間去主動理解的,就和其他工作一樣,沒有速成。

    另外致敬漫畫最後一段戲,如果我是恐怖份子,我應該怎麼規劃才會有 PR ? 當然自己沒有能力做到很細節,來把一些標籤列出來,權當以後的 Alert:

    1. 創造一個敵人,妖魔化對方。
    2. 建立形象,創建個人形象最為簡便(教主崇拜)。
    3. 創造情緒的入口,建立仇恨對象(凝聚團結)、建立對象與自身的地位落差(賣慘文化)
    4. 補強自己正義的理由,以最小的成本產生足以獲得支持的貢獻。(e.g. 塑造單一而且好處理的價值觀)
    5. 利用自己塑造弱勢的效果,透過實際行動逼迫對手犯錯。(強化/實証對方「強大且邪惡」的事實)
    6. 把自己塑造成「已經沒有退路了」,藉以合理化激進行為。(合理化自身行為)
    7. 蒐集信徒的各種資料、建立嚴密的組織、建立行動控制的模式。
    8. 斷絕信徒的社交圈(讓他們去使用愚蠢的方式宣傳)。
    9. 孤立信徒,斷絕信徒多元的資訊來源,以求更能夠產生激進的行為環境。
    10. 建立對自身有利的媒體通路,掌握對外宣傳資源。
    11. 建立對內宣傳途徑,並且透過組織分級,力求不容易被破壞。

    漫畫中有一段關於採用自爆攻擊的恐怖份子和軍隊,其中兩者有何不同的定義:

    1. 軍隊:「被逼到絕境」而採用自殺戰術。
    2. 恐怖份子:視為打破「抗衡狀態」的手段而採用「自爆」。即使沒有危機也會使用。

    這應該算是一個滿精確的定義。同樣狀況在台灣常發生的是「抗議」行為的合理判斷,資方和勞方常常會為了是否真的「走投無路」而做爭辯。社會大眾在媒體識讀上也可以從這個角度出發來看待抗議事件。

    這本漫畫滿有趣的,身在台灣而且剛選完,在網路上的自己代入感很強阿。可惜目前只出到第二集,似乎還有後續還沒更新,也只能等嘍。另外有朋友推薦《異教主》這本漫畫,有四集,可惜 kobo 上找無,有空來看一下。

  • WordPress 上 Cookie 的 SameSite 問題

    WordPress 上 Cookie 的 SameSite 問題

    參考這篇問題,主要是描述在支付頁面 retun 支付成功之後,跳回網頁會因為 cookie samesite 的問題導致會員登出,主要解法如同文中所敘述,需要把記錄 user 的 cookie samesite 改成 none,文中也提供了 apache 作法,這邊記錄一下其他作法,基本上都是沒成功的:

    Nginx 於 server 的 Location 中填寫,可能是位置沒填寫正確,沒作用:

    proxy_cookie_path ~^/(.+)$ "/$1;Secure;SameSite='None';Partitioned";

    PHP 有兩種作法,一種是在程式中處理,參考這篇,在 session_start() 之前寫入:

    session_set_cookie_params(['samesite' => 'None']);

    不過他沒理我,在 php.ini 中替換:

    session.cookie_samesite = "None"

    注意 None 是字串,需要雙引號起來。 這個修改會對 session_cookie 起作用。

    不過我的目的是為了修改 wordpress 網站,wp 的 auth cookie 是透過程式寫入的,檢查後也沒反應。鬱悶。

    於是跑進去追了一下程式碼,發現他使用的 setcookie 是 php 7.2 以前的工法,可能是為了向下相容吧,但偏偏在 php7.2 寫入的方式和 php 7.3 不同(參考這裡),但因為 wp core 的寫法,導致無法 hack 從 define 設定的 cookiepath 中直接修改,鬱悶,總不能把網站環境再改回兩蔣統治時期,快樂的 php 7.1 or 7.2 ,這樣挺尷尬的,連 wp 升級都不行。

    後來挖到了這則討論串,看起來 wordpress 他們也正在煩惱。於是在討論串中挖到了一個在 github 上的外掛:

    這個外掛看起來沒啥問題,經過安裝啟用檢查過後,看起來是可行的, auth 相關的 cookie 已經正確顯示 samesite 為 none 了。

    這外掛設定的部分,如同 github 說明一樣,請在後台的「設定」選項中第一個「一般」,點進去以後會發現多一個 uthentication SameSite Cookie parameter 的設定,像是金流跳轉的問題,把他設定為 None 就可以嘍。

    另外得提一下如果 goolge 關鍵字 「wordpress SameSite」 會搜到一款還正在架上間諜外掛,同評論所講的,我也不明白作者為什麼要上架這款外掛,有點坑,而且如果 php 有設定之後,安裝啟用這款外掛還會造成 cookie 錯誤。 此時可以體現測試環境的重要性。

  • 《What If? 如果這樣,會怎樣?》第四部讀書心得

    《What If? 如果這樣,會怎樣?》第四部讀書心得

    這次是 #10 至最後,得承認最近工作的關係,雖然已經看完了但有些無力把內容整理出來。而這幾天再回頭看,較有感受的是〈芮氏規模15〉這篇。

    因為台灣地震實在太多了吧,且不論地牛翻身,光是樓上裝潢、附近蓋樓工地、隔壁脫水機安裝不良,身在一個老舊公寓租屋族的我都能感受到貧窮帶來的震撼。好奇再回頭查了內文,大概是芮氏規模 -4 到 -1 之間,老實說知道數字以後好像也沒啥特別的感覺,只是暗中祈禱希望不要大於 0。

    而看完這本書之前,自己一直在思考這本書應該如何閱讀,第一部心得時的註解是認為這本作為「小品故事」,或是提供給創意領域、文化工作者作為偏像是設定集的參考背景,或是理論模型使用,然而自己認為自己缺乏這種「需求」。 現在看來突然發現,有種回到小時候父母認為玩電腦「有什麼用?」的那種心情,當時認定的「你們都不懂」,長大也的確驗證了電玩是一種產業。想當然不是因為自己從小眼光獨到,而是我們應該擁抱各種不同的可能,保持好奇才行,也許在眼光長遠看來,更深層的需求是避免「自己錯過了可以發展的可能」,藉此更應該想辦法即便吸收不了,多看看,留一點印象這樣也是好的吧,至少要避免自己在尚未瞭解之前產生排斥的態度。

    而關於排斥這個態度,這是一個舊的課題,在灰階思考第二部心得中略有提到的關於資訊的態度。這塊最近有看到一篇文章提到關於除了把「觀點」與「事實」分開來之外,也應該把觀點之中的「劣質觀點」再區分出來,這樣可以避免因為自己閱讀到劣質的觀點產生直接把對方認定為惡人的二元心態。這呼應到立體的價值觀之中,除了正義並非一個面向的價值觀,其實也應該加入「不是所有人都這麼聰明」的預期,這樣就能夠做到不容易不耐煩,覺得對方浪費自己時間的情緒。 callback 回這本書的閱讀姿勢,不是「看這種書有什麼用」,也未必是「是我們程度不夠看不懂」,更也不用評論這本書究竟是不是一本好書,也許只是剛好自己目前還找不到看這本書的「用處」而已。

    再 callback 一次二十幾年前的自己,應該為了自己當時運氣好賭對了未來而開心,不過當自己在閱讀時感受到「這有什麼用?」的時候,也可以嘗試著開始有種和自己和解:我也是會產生和自己父母一樣的情緒的,因為沒有精力的餘裕,沒有時間餘裕所以反應才會這麼激烈吧,那如今我能夠控制自己的行為,我能夠怎麼做?未來如果在教育現場,我應該怎麼面對孩童?

    吊個書袋,這是一個當責的態度,目前自己的想法是:

    1. 建立優先權的 TODO List ,按照順序執行,並且準備好接受無法完成的代價。
    2. 協助孩童建立優先權的選項,以讓孩童學習「為自己負責」為目的,讓孩童練習選擇並且正確執行。
      • 這很大的一個程度也是讓自己練習如何透過第三方且監護角色的狀況下協助產生選項,某種程度上自己也是需要負責的。

    扯遠了,我是指自己有小孩這件事。

  • Linux 上使用 Monit 做監控

    Linux 上使用 Monit 做監控

    Monit 是一個不錯用的監控軟體,可以實作異常警報或是重啟等動作。網路上有滿多教學的,但是可能是名字的關係,google 時常常找到其他東西。這邊記錄一下。

    有幾個注意點:

    1. M/Monit 是另一款延伸的應用程式,需要付費但有更多功能
    2. 常用的功能:
      • monitrc 設定 stmp 和 alert 。提供警報通道。
      • 設定監控閾值和動作(例如要重啟/開/關或是 alert)
    3. 也有一些延伸功能,例如添加網頁存取,可以透過網頁查看。
    4. 最有需要的應該是 loadavg 和 mem, cpu 的警報。
    5. 有個缺點是無法做 server down/up 的警報。
    6. 重啟指令:monit reload
      • 如果 mail 設定成功,會收到一封重啟通知。
      • monitrc 設定中有 log 位置設定,debian 中預設 /var/log/monit.log 有任何問題可以先看 log

    目前我使用大多作為警報收信,應該是還沒遇到不穩定的系統需要實作自動重啟,算是一種成就??

    這裡貼上一個設定範本 + 說明:

    # 檢察系統效能
    check system $HOST
    
    # 主要設定中 daemon 參數設定 60s,2 cyvles 表示 120s
        if loadavg (5min) > 2 for 2 cycles then alert
        if loadavg (15min) > 2 for 2 cycles then alert
    
    # 有些 server 有 2 顆的 cpu 數字會需要設定超過 100%
        if cpu usage > 190% for 2 cycles then alert
        if memory usage > 85% for 1 cycles then alert
        if swap usage > 30% then alert
    
    # 監控網路行為,要注意 interface 在 server 中是哪個?
    check network public with interface ens4
        if failed link then alert
        if changed link then alert
        if saturation > 90% then alert
        if download > 10 MB/s for 10 cycles then alert
    
    # for 5 times within 30 cycles 意思是: 在 30 個循環裡面出現 5 次(滿足條件)的狀況下
        if upload > 20 MB/s for 5 times within 30 cycles then alert
    
    # 監控硬碟空間的行為, data_directory 是辨識用名稱, PATH 後面的路徑是要監控的路徑
    check filesystem data_directory PATH /data/
        if write rate > 50 MB/s for 5 cycles then alert
        if read rate > 50 MB/s for 5 cycles then alert
    # 因為通常 space 不太會降回去,所以設定的 cycles 數字比較大,相對要特別注意警告
        if space usage > 80% for 60 cycles then alert
    
    check filesystem root_directory PATH /
        if write rate > 50 MB/s for 5 cycles then alert
        if read rate > 50 MB/s for 5 cycles then alert
        if space usage > 80% for 60 cycles then alert

    附上實作顯示網頁的畫面截圖:

    同場加映找到的資源,以後可以少找一些吧。

    基於 centos 環境介紹和教學:

    基於 debian/ubuntu 環境這是介紹和教學(滿詳細的):

    這是延伸的監控服務,要付費的,但是功能更強大:

  • 《What If? 如果這樣,會怎樣?》第三部份讀書心得

    《What If? 如果這樣,會怎樣?》第三部份讀書心得

    這次的進度是問題#7 到 問題#9 結束,感覺這部分的大氣科學的部分滿多的,有種小時候去台中科博館地球環境廳的感覺,其中一個滿有趣的「冷知識」是〈軌道速率〉這個章節。

    〈軌道速率〉是關於火箭升空之後,如何停留在空中的原理。自己對應用科學滿有興趣的,其中有包含升空、切線速率以及重力等原理整合,還沒想到升空的火箭有很多燃料其實是為了「往前跑」用的 — 需要達到每秒 8 公里的速率才能取得維持在低軌道上的門票。這是發生在比雲層、飛機還高的空間,可能我們從地上看起來就是一個緩慢移動的小點點,但是如果能夠「靠近他」,他就是一個超乎想像快速的巨型物體,各種衛星或火箭等升空的人造物,也是為了服務我們日常生活或各種目的,離我們很遠但是也很近的事情,滿浪漫的。然而這章節看完之後也會想到更多問題,像是:「會不會有大氣摩擦力導致需要補充燃料?」或是「衛星會不會被流星雨,還是其他飛行器撞到?」

    不過自己的求知慾熱情似乎被年紀和生存壓力給磨平了,遙望年輕時的浪漫。真心建議如果有從事教育相關工作者或是為人父母,得正視孩子各種古怪的問題才行。

    另外關於〈聯邦快遞的頻寬〉一章說道用交通工具運送實體伺服器或儲存裝置的動作,在以前工作時還真遇過幾次這樣的狀況,例如用快遞把光碟燒錄好(沒錯,是光碟)送給客戶,或是客戶請上海和台灣的供應商把 server 處理好之後,從北京送去昆山繼續處理,放在目前網路速度快速的時代中是滿奇妙的體驗。

    關於「跑腿網絡」,其實滿多領域也是相同的,大概可以理解的是當某些條件的量大到一定程度的時候,很多常規的操作和想法其實都都滿容易有問題的。以前大學時社團有人在救國團接高空探索教育的活動(現在還在),關於器材的使用和保養,與我們社團活動就完全不是兩回事,原因也是因為使用量大到一定的程度,通常某些保養或是修補的流程就會以系統化處理,如果只是少量使用經驗的人,可能就完全不能理解也碰不到這類的流程。不只社團,在程式設計和系統結構的設計領域上,同樣服務,在流量大時也會常常看見很不同的結構。

    同場加映:

    關於低軌衛星的泛科學影片
  • 記錄一下已經結束的目標

    記錄一下已經結束的目標

    這份是前段時間建立的一份目標,主要是在健康上有所進步,也順道看能不能因為減少飲食費用順道省錢。

    專案時程已經完成一段時間了,看來達成率估有 80% 以上,效果還不錯並且有持續了一段時間。記錄一下,希望自己可以再一直完成設定的目標。

    目標:體重降到 80 公斤以下;降低體脂肪、內臟脂肪;肌肉量不變;不要多花錢。

    檢驗:用體態來看,體態應該要更好;消費總金額在 25k以下。

    已嘗試策略:

    目前策略:

    1. 減少熱量攝取:午+晚餐,每餐 150 NTD 以下,注意碳水和油。 如果要吃早餐,午餐儘量少一點。
    2. 含糖飲料非正餐不要吃,如果正餐有附,喝的量先有意識少一半。
    3. 多喝水,覺查飢餓感的狀態。先多喝一點睡過一陣子後再去吃飯。 多喝熱水,讓尿顏色維持透明。
    4. 睡眠好一點,過 23:30 遠離所有刺激來源。 00:30 以後不要喝水。
    5. 沒有安排運動的當天早晚練習揮 shadow-boxing
    6. 儘量抓時間去健身房,或是想辦法多一些活動量(加速代謝)。

    最近在檢討情緒穩定這件事,主要是被伙伴說太緊繃了(還賞了五百元去放鬆XD),我在嘗試覺察到情緒起伏的狀態,不禁想到以前公司前輩一句話:「你就是沒招了,所以才會在那邊『張(台語)』。」 意思就是除了情緒,核心利益的餘裕已經消耗光了,所以情緒就會被帶起來。

    好有道理,雖然很不爽但是無法反駁。所以幾個策略也許可以嘗試看看:

    補足核心利益的餘裕 就財務上無非就是開源節流;在接案上是要讓機會成本更低一些,或是想辦法看清楚風險適度的提高報價;運動上是要注意飲食、運動頻率;交際上也許嘗試多一些不同的操作,放鬆沒什麼不好,服務別人也不會很難受。貪心不是不對,不要想要凹,不要浪費別人時間,自己也要注意一點就是。

    心態調整 我認為可能要多利用稀缺的狀態讓自己覺查到危機意識,這能夠成為一種警報的保險拴,同時要注意管窺的 debuff。另外有些時候會覺得富足,我認為感覺到富足的時候不是想著感恩和反哺,這真的是正向思考遺毒XD 而是要讓富足的餘裕拿出來分配給未來,分一分會發現其實很不夠。 反哺和感恩的心不是犧牲奉獻,也絕對不應該是一門生意,可能有些人不能接受,但實打實的確是支出成本,他應該要放在規劃之內。

    養成需要的習慣 除了制訂策略和原則之外,也要回到大學時候,把「我想成為什麼樣的人」輪廓描述出來,在出社會能力提升之後,可以更細緻。要做一個「服務很細緻、報價公道,而且不只能夠寫程式的的程式設計師」、「有好的控制飲食習慣、懂得自律控制健康、保持代謝正常、懂得運動而且身材不錯的人」、「與人為善,但懂得避開神經病和喜歡貪小便宜的傢伙,不喜歡佔人便宜的好人」等等。

    治療自己的病 「每個人都有病」,這句話我也不知道是不是對的,但是我有病我知道,尤其是反覆測試過,其實很多訓練和經驗培養出來是對的,但是反覆的、容易被旁人的言語所影響,也很容易被以前的創傷影響。反而我應該去探究的是:為什麼會感受到負罪感?為什麼我會認為這是不道德的?為什麼做這件事情會被討厭?為什麼會有人帶有惡意攻擊我?好像學會放下很難,但也許可以想想怎麼學會課題分離,或是想辦法真的是為了自己好,而不是只是害怕受傷而選擇一個逃避的動作。逃避有用,不過還是回頭要看看機會成本。

    以上,重點是希望我能記得,最怕的不是想不清楚,而是需要實作前忘記,我得提醒我自己常常拿出來看,我的境界還不夠,「身是菩提樹,心如明鏡台,時時勤拂拭,勿使惹塵埃。」 這句話對我還是適用的。

    同場加映,用 AI 創造封面圖生成的兩張鋼彈背單槓:

  • 在 Mac 上使用指令列操作 Android Gradle

    參考 Android Developer 中的文章,我們可以使用 gradlew 指令來操作 Gradle。 Gradle 是 Android Studio 的建構工具,參考這裡

    要注意的部分有:

    1. 在 Android Studio Terminal 中,記得路徑在專案根目錄。執行 ls 會看到 gradlew 指令,就是他!
    2. Windows 系統操作的指令是
      gradlew {{指令}}
      MacOS 是:
      ./gradlew {{指令}}
    3. 最常用的是用
      gradlew assembleDebug 
      他預設會匯出成為
      {{module_name}}/build/outputs/apk/{{module_name}}-debug.apk 
      檔案。 module_name 預設通常都是 “app” 。
    4. 在 MacOS 中,通常產生指令以後還要去找檔案很麻煩,可以在同一個 terminal 中執行 open {{指令路徑}} 指令,可以直接開啟 finder 到指令路徑。
      例如在根目錄編譯好 app-debug.apk 檔案。 輸入:
      open app/build/outputs/apk/debug/
      直接開啟 finder 至 debug/ 目錄。

    另外這裡有較為詳細的說明:

    同場加映 Gradle 的一些操作 tips:

  • 《What If? 如果這樣,會怎樣?》第二部份讀書心得

    《What If? 如果這樣,會怎樣?》第二部份讀書心得

    延續上一篇,這次閱讀的進度是 問題#3 到 問題 #6 結束,其中有兩個章節還滿愛的,滿足童年幻想的篇章。分別是:〈閃電〉、〈人腦與電腦大戰〉。

    雖然我不是網路上的漫畫家,但是我也喜歡看東西著火、爆炸,尤其是大學山上野營的時候看著篝火那燒著,至今都是令人懷念的療癒的時刻。人生中也有遇過幾次落雷的經驗,好險的是上帝不太喜歡我那麼快看見祂,經歷過燦爛的「光景」顫抖的大概就只有心跳。當時記得會去查找,或是特別注意關於雷擊的安全知識,〈閃電〉這篇有講了落雷大概的原理原則,這邊用自己的話整理一下:

    1. 除非你想當月老,要不儘量別站在樹下(陰影區)。中獎機率也是偏高
    2. 待在車子內是安全的。
    3. 其實通常都反應不過來,我們能做的就是盡可能預防以及準備,其他就聽天由命吧。

    關於規劃和預防的態度和原則,結合之前在灰階思考第二部心得中提到的關於求證的機會成本,規劃和預防算是求證這個行為的目的之一(當然還有可能有其他目的 w)。這是一個滿有趣的課題,有機會寫一篇來分享。

    另外一篇〈人腦與電腦大戰〉,算是本科系的領域。雖然我電子系大學部沒有畢業,不過還好研究所有讀完而且還算是有一點點成績,還好是我還看得懂這篇內容,在應用科學的領域,我認為文中的比較分析(計算能力)其實滿沒有用處的XD,就跟科舉考試一樣只是想排名做利益分配而已(?),重點應該是擺在「完成指定任務的效率與機會成本」,不過這話題扯遠了。然而 2004 年已經過去快 20 年,AI 開始要推動新的一波工業革命,也許如文中說的「螞蟻似乎不太介意」,也許介意的部分不是在要「贏過」電腦,或是「戰勝」電腦這種事情,如同 AI 帶來的職場焦慮,讓我們擁抱新的生活環境吧!

    最後附上一個在章節結尾大量出現的文化差異的異國幽默結尾。總感覺他是一個 punchline。

    同場加映:

    電影《月老》,改編自九把刀同名小說,參考九把刀 官方網站。最近他要開拍《功夫》了,期待。

    一些回憶殺。

    附上十幾年前的跑去矮靈祭露營,這是在準備儀典活動用火把的時候。

    提到 punchline 這個英文詞彙,找到一句話滿有意思的,參考

    “punch down on me”

    Make a joke about me, even though I have less power than you.

    主要是因為年輕時候滿常有這種感受的(?)

  • WordPress Debug Journey – 後台無法開啟編輯器為例

    WordPress Debug Journey – 後台無法開啟編輯器為例

    最近開啟部落格新增文章時,發現新增文章編輯器變成一個空白畫面,於是開啟了 wordpress debug 之旅,記錄一下也分享難得的大型錯誤經歷。

    首先先看一下錯誤內容:

    This feature is only for JavaScript modules shipped with WordPress core. Please do not use it in plugins and themes as the unstable APIs will be removed without a warning. If you ignore this error and depend on unstable features, your product will inevitably break on one of the next WordPress releases.

    看起來是一個外掛程式和主題 hack 了一個內部 API 導致警告 or 錯誤。

    首先我們先做統一的預處理:使用無痕開網頁和清除快取。 快取部分除了 wordpress 的快取外掛之外,還有 Cloudflare 上的快取功能,清除確認一下是否問題還是存在。這裡必須特別提醒,通常產品上會有測試環境,更成熟的產品會有 DEV, UAT, 甚至本地的開發環境以及各層級的備份和版本控制機制,如果非必要,請不要再正式環境上搞。

    小提醒,如果有需要更新外掛的動作,請別忘記做備份。

    在這個案例中,清除完快取問題還是存在的,於是衡量一下機會成本,先鎖定外掛的部分,框列幾個可能的外掛,先停用看看,然後後台刷新編輯頁面。

    在我們外掛的開開停停測試中,發現是「Meta Generator and Version Info Remover」這個外掛造成的問題,把他停用以後後台就開啟正常,關閉後台有問題。於是我們繼續確認是否是設定的問題,同樣也是開開關關操作測試,於是發現是其中一個「Remove version from script (JS files)」選項設定有問題。把他停用即可。

    當然問題還沒完,首先關於開關停用的動作,這個案例中操作了 2 次,分別是外掛的開關操作以及外掛內設定的開關操作。自己的經驗是建議將需要開關的選項來分組,就這次的案例來看,錯誤訊息中可以看出編輯器的 js 有問題,於是我會先將分組為後台編輯器相關的外掛來測試,不會先動像是安全設定、核心功能、前台功能等外掛。這就很吃你的經驗和眼光,雖然有些運氣成分,也不是全然靠猜,而通常這類操作也是很好透過自動化和 AI 來取代的,不過 It’s Not Today,我們還是得靠自己努力先。

    再來是需要根除這個問題,於是我登入 wordpress.org 的這個外掛頁面打算抱怨一下,發現已經有人提出類似的問題,作者的意思大概是說這個鍋我不背,請檢查是否和其他外掛衝突。這樣,恩,我也在下面留言回報一下,當然要改外掛也是可以的,得考量維護成本以及後續更新的操作成本,對於一個不賺錢的小部落格是否值得修改?歡迎來到 wordpress 的外掛地獄。

    最後提供一個關於這個功能的實作解法,如果單就 js 來說,把 ver 的 query string 替換掉就是了。 請於佈景主題 function.php 中實作。另外提醒一點,建議修改操作都在 child 的佈景主題中動作會比較保險,如果不知道這是什麼請參考這裡

    // remove wp version number from scripts and styles
    function remove_css_js_version($src)
    {
        if (strpos($src, '?ver=')) {
            $src = remove_query_arg('ver', $src);
        }
        $src = add_query_arg('ver', 'hello-world', $src);
    
        return $src;
    }
    // add_filter('style_loader_src', 'remove_css_js_version', 9999); // 修改 css
    add_filter('script_loader_src', 'remove_css_js_version', 9999); // 修改 js

    對了,修改 query string 會影響快取,尤其如果 cloudflare 是設定用 query string 辨別快取檔案的話。這塊常常被遺忘了,愛注意。

  • 《What If? 如果這樣,會怎樣?》第一部份讀書心得

    《What If? 如果這樣,會怎樣?》第一部份讀書心得

    這本書在博客來網站上的中文書名叫做《如果這樣,會怎樣?:胡思亂想的搞怪趣問 正經認真的科學妙答》,真的是有夠長的。是由 xkcd.com 網路漫畫網站的作者 蘭德爾‧門羅 所推出的屠文書籍,作者在 2006 年離開 NASA 之後,專職網絡漫畫,後來甚至國際天文學協會將小行星4942以他的名字命名是一位被科學耽誤的漫畫家。

    這次的閱讀進度分四次,預計是今年的最後一本,為了電子書操作方便(目錄實在很亂),我把標記的問題 hashtag 當作章節開頭,自行稍微調整了一下進度:

    1. 開頭到標記的問題#2 結束
    2. 問題#3 到 問題 #6 結束
    3. 問題#7 到 問題#9 結束
    4. 問題#10 到結束

    以我目前的職業來說,這可以看做是一本小品故事書,基本上每個章節可以獨立來看。對我來說似乎不太能作為一本「工具書」,畢竟裡面講述的內容十分、難以、不太可能,會有機會需要用到。我認為這很推薦給對科學有興趣的小朋友,如果他們吵著要去科博館但是沒時間帶他們,可以把這本書丟給他們自己看(?),或是提供給文化創作者,科幻小說甚至喜劇藝術相關類型,需要一些簡單科學背景的話,這會能夠成為一本「工具書」。

    不太喜歡硬是從書裡面挖掘自己能用的體悟和心得,這類的「心得」網路上有滿多的,參考參考:個人覺得很多心得比較像是介紹書本和感嘆,身為理科生而且是問題兒童滿有感的,甚至到長大以後,不管在運動還是工作娛樂,常常遇到別人會覺得「你為什麼問這種問題」的狀況,不過細問之下其實未必是問問題的鍋,有各種各式各樣的原因導致問題無法被解答,被究責的狀況滿多是因為人們鼓勵「要問好問題」的心態導致的。不過得澄清,「要問好問題」以及「喜歡問問題」兩個核心價值並不衝突,我認為這是不同思考模式造成的期待落差,會建議讀者別因為看了這本書(或是別人寫的心得)跑去要求強迫別人一定要回答你的問題,除了可能影響個人形象和觀感之外,也有可能錯失了描述或觀點更深入的機會。可能我們需要做到的是看過這本書之後,理解不同人會有不同的思維,常常是自己想都沒想到的,然後在回答問題之前,先瞭解對方問題的思考方式,也許有需要的話,一起解決問題是很重要的。

    書本的內容其實對於一個許久沒有碰基礎科學的我來說也是滿硬的,主要是因為科學的描述會由許多基於事實和研究結果,組合成的理論,最後再產生推論和回答。在閱讀每個問題的回答時,腦中會先不斷質疑事實和理論是否正確,導致有點超載,而且因為科學有「觀察系統」的限制,所以即便是基於事實,也必須要先固定部分的變因,導致回答可能偏離事實(我覺得這也是會被認為「不要問這種蠢問題」的原因之一),或者是同一件事情可以由不同的理論、技術、甚至觀點切入,尤其是在〈大家一起跳〉的章節中,提到全世界的人從某一個位置上一起跳躍造成的問題,後面提到掏出手機的行為讓我開始感到困惑。 這也許是作者的美式幽默表現之一。