作者: Jerry Lin

  • ChatGPT 的 Sublime Text4 外掛

    ChatGPT 的 Sublime Text4 外掛

    Sublime Text 是我一直很愛用的編輯器,他輕巧和可客製化真的很方便,無論是開啟速度和需要才使用的外掛,我再處理 PHP 、Python 、Nodejs 甚至是 Vue3 的專案時都滿常用他來開啟的,我在 Sublime Text 上使用的 AI 工具是 Tabnine 這套外掛的免費版本,主要是不連網路使用。而有時也會想要方便有外掛可以連網,但是好像找不到相關可用的外掛安裝,於是自己研究做了一個,有空在研究看怎麼上傳到官方的套件管理上吧。

    先上 repository 位置,這裡

    安裝前需要準備:

    1. Sublime Text 最新版
    2. OpenAI 帳號,已有信用卡儲值(我們需要用 OpenAI API)

    安裝的方式有別於使用 Package Control 安裝,這使用手動安裝,主要是把 git 中的 “chatgpt” 資料夾放到 Sublime Text 的 Packages 資料夾中就行了。 Packages 資料的夾的位置請參考這裡,可以從 Sublime Text 的 “Preferences -> Browse Packages” 開啟。

    另外我們需要設定 OpenAI 的 API Key,請參考官方網站這裡 取得,在 Sublime Text 的的外掛設定: “Preferences -> package-settings -> 👽 ChatGPT -> Settings – User” 之中添加 koken 參數(也可以複製修改 Default 的設定格式)

    使用上有設定 keymap,因為我是 mac用戶,所以操作上,選定一串文字以後快速鍵 cmd+g ,稍等幾秒 ChatGPT 將會回覆資料,將回應貼到選定文字的後面。
    修改快速鍵的話,也是從 “Preferences -> package-settings -> 👽 ChatGPT-> Key Bindings – User” 修改即可。

    手動執行的話也能在 Topbar 的 Tools 中找到 “👽 ChatGPT” 選項,點一下就執行。記得要選取你要的對話文字喔!

    最後來秀一下資料夾內容

    其中 data 參數可以依照自己的需要修改,如果你是習慣用 Sublime Text 來寫文章的朋友,可以把 system 的 content 改成你要的提示,或是模型按照需求和官方支援修改也行。官方文件參考,這裡

    以上,謝謝大家。

  • 伺服器轉移的 Check List

    伺服器轉移的 Check List

    伺服器轉移的時機點包括了:

    • 更換系統(e.g. centOS -> Debian)
    • 更換主機商
    • 主機需求迫不得已需要轉移

    各種各樣的問題,而如果不是使用 panel,或是沒有提供/規劃快速轉移的服務的話,這邊列一個轉移前後需要檢查的點,目前以 LEMP 環境,帶一些常用的服務/語言為主:

    1. 有上 git 的檔案
      • 如果不要完整備份,是否有備份 config, uploads, logs, writeable 等 ignore 的檔案?
      • 如果要完整備份,是否有把 .git 檔案包含在其中?
    2. 全部檔案
      • 除了 document root 資料夾之外,有沒有外部/連結/其他服務所使用到的資料夾?
      • Compose 等是否需要重新 build?
    3. 網站設定/環境
      • 程式本身使用到哪些服務/設定: user.ini, .htaccess 等等
      • 其他環境使用到哪些服務/設定:Node.js, python, Memcached, Redis 等等。
    4. GIT 使用的 private key 是否可重複使用,或是需要重新申請。
    5. PHP 使用的版本、擴充套件、啟用的套件、環境設定等。
    6. Nginx 的 vhost 設定,包含 log 路徑位置等;Apache 設定。
    7. SSL 的證書,其他服務可能使用到的憑證等。
    8. DNS 設定是否需要更動。
    9. FTP 的用戶、密碼與路徑(如果有用的話)
    10. Docker 的 image, compose, container 或是 dockerFile 等(如果有的話)
    11. IP 防火牆設定,請注意主機商或主機內都有機會設定。
    12. MySQL/MariaDB 或是其他資料庫服務等備份,請注意用戶權限,建議是備份成為 .sql 檔案,參考備份的 shell Script
    13. Cron 中對於網站的設定,注意除了網址呼叫之外,是否有針對路徑的呼叫?路徑是否有改變。
    14. Linux 的安全設定,包含是否有 ip 限制 SSH 連線、VPS 的設定等等以及驗證。
    15. Email 的設定,如果新的 server 不支援 email 設定的話可能得把這塊移轉到其他伺服器/服務商上面。
    16. 其他服務串接:包含了可能串接對方服務會有 ip 驗證或是作為 server 端, client 呼叫可能會產生的問題(例如設計上直接呼叫 ip)等。

    寫一寫發現有點多,主要還是怕避免落人口舌就越寫越多,肯定是還有遺漏的,畢竟我不是專職做系統工程師的角色,而伺服器鬼故事很多,天知道配合的 SE 是哪方天神。愛惜自己的肝,請從良好的配置習慣開始。

    1. 培養資料管理的態度和原則,一開始分類、整理好,以後採雷少。
    2. 建立一個關於自己技術成長的規則,避免自己被自己搞死
      • 例如我會利用每一台伺服器來做分類,舊的伺服器會遵循同一個資料管理的方法並且適時的更新,等於是對自己的技術作版本管理。
    3. 如果是接別人的 server/code ,除非自己能夠重構或是改好,要不遵守對方的規則為上策。等於是做一個版本的 branch 。
    4. 萬一很複雜(而且沒有管理系統),做文件是好的。
    5. 如果查看修改的頻率不高,做文件是好的。
    6. 最好的管理是給使用者自主管理,讓使用者有意識到那是他的東西,讓他懂得維護的方法。
      • 當然要做好期待管理以及費用的問題。通常使用者就是客戶。

    以上。

  • 解決 Sublime text 4 上 Package Control 無法使用的問題

    解決 Sublime text 4 上 Package Control 無法使用的問題

    自從開始使用 Mac 時,Sublime text 就是自己愛用的文字編輯器,基本上 PHP 的網站製作從 Sublime text 2 用到了 4,前年發現更新 mac 之後突然無法使用 package contol 的功能了。最近才有辦法解決,筆記一下,附上解決邏輯:

    首先先更新一下,看是否有需要更新。

    備份設定檔案、外掛檔案:
    開啟 Top Bar 上的「Sublime Text」->「Settings」-> 「Browse Packages…」,會開啟 finder 得到一個路徑,返回上一頁把 Sublime Text 資料夾的東西先備份起來,可能會用到 Installed Packages 和 Packages 這兩個資料夾,放的是外掛檔案設定。

    查看 sublime text 上的 log:
    重新開啟,點開 Top Bar 上的 「View」,選擇「Show Console」,會顯示 runtime 的執行訊息。

    至此我發現錯誤訊息:

    AttributeError: dlsym(0x7f876fc44440, EVP_PKEY_size): symbol not found

    查資料找到這篇文章,看起來是因為更新 Mac 產生 OpenSSL 的問題:

    附上文章內提供的解決方法翻譯:

    簡單來說,在 console 中執行這段指令(使用 urllib 透過 sublime 自帶的 ssl )重新安裝 Package Control 即可:

    from urllib.request import urlretrieve;urlretrieve(url="https://github.com/wbond/package_control/releases/latest/download/Package.Control.sublime-package", filename=sublime.installed_packages_path() + '/Package Control.sublime-package')

    安裝以後依照提示,裝置會需要重啟兩三次。
    而我有因為有把 Sublime Text 重新安裝,如果操作上資料會消失的話,可使用備份把檔案放回去即可。

    以上。我認真覺得 Sublime Text 是一個輕便好用的編輯器,尤其是同時需要開其他 IDE 或是編輯器的時候,電腦不起飛阿。

  • 使用 Dropbox 實作異地備份

    使用 Dropbox 實作異地備份

    這邊是以線上運作中的 web 網站作為目標備份,備份包含運作中、不包含git內的上傳檔案、資料庫資料內容。不包含系統環境、環境設定檔。在講異地備份之前,提一下自己心目中的異地備份服務是從 VPS 廠商出發的:

    1. 如果資料庫是獨立服務,可以把資料庫當成一個獨立伺服器的運作方式,如果不是,則需要定期/手動操作把 sql 檔案轉換出來。
    2. 對於一個獨立伺服器,確定他是否使用額外硬碟。如果是額外硬碟責備份額外硬碟即可。
    3. 廠商提供備份與下載服務。如果沒有下載,應該也能夠提供備份至不同地區的資料中心的服務。
    4. 提供備援(備份且恢復資料)服務。

    如果廠商提供異地備援(備份+還原)的功能,這會是好的。需要考慮的有:

    1. 網站使用的狀態,會考慮到需要備份的頻率。
    2. 網站重要性。是否不能斷線?是否有資安問題、金流問題?是否實時有用戶在使用?
    3. 有沒有需要備份可編輯的原始碼?
    4. 能不能正確的抵擋天災、人禍?

    這次因為種種原因,以從系統環境的層級著手處理異地備份。

    異地備份如果要把檔案下載到電腦上再儲存起來實嫌麻煩,嘗試讓他跟自己常用的服務做雲端傳輸就好。於是我選了使用 Dropbox 做備份,筆記下來。

    實作的目標是:備份檔案、資料庫。
    使用的服務與環境是:debian 11, dropbox, Dropbox-Uploader, mysql_backup.sh

    這邊採用手動單次操作,如果需要用 cront job 動作的話要請配置好一個 script。

    手動操作的流程是:

    1. zip 要備份的檔案
    2. 透過 dropbox-uploader 上傳
    3. backup mysql 資料庫們
    4. 透過 dropbox-uploader 上傳

    幾個注意事項:

    1. 網站檔案記得先 zip ,要不檔案(尤其是 uploads/ )多到會瘋掉。
    2. 資料庫備份預設會被壓縮成 .sql.gz 。
    3. mysql 備份檔案內不會有對 database 的 use / drop / create 動作,要的話要自己加。
    4. dropbox-uploader 會執行多個會單個操作,其實沒啥影響,都是用同一個 upload 指令。
    5. 如果使用終端機 ssh 進去 server 的話,建議 keep session 操作避免長時間等待不小心離線,我是使用 screen 來實現,這是介紹

    再來關於兩個 shell script 的操作說明。

    關於 mysql_backup.sh 操作:

    請先下載 shell 或是創建以後複製貼上,記得更新權限

    chmod +x mysql_backup.sh

    設定其中的資料夾位置、帳號密碼,如果 mysql 路徑不一樣的話記得變更 PATH 變數, KEEP_BACKUPS_FOR 他會檢查路徑中舊的檔案來保留/移除,如果是用 cron job 動作的話好用。

    這定完成以後執行即可,會有資訊顯示。

    ./backup_mysql.sh

    關於 Dropbox-Uploader 的操作:

    首先先下載 script

    curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh

    設定權限並且執行他

    chmod +x dropbox_uploader.sh
    ./dropbox_uploader.sh

    系統會提示怎麼做,主要幾個步驟:

    1. 請開啟 dropbox developer 創建一個 app ,選擇 App folder 的 type 並且創建好名字。
    2. 創建完之後,在 Permissions 的 tab 中選擇 “files.metadata.read/write” 和 “files.content.read/write” 這四個權限。記得點擊 Submit 送出。
    3. 在 Settings 的 tab 中找到 App key 並且點擊 show 顯示 App secret ,記錄起來。
    4. 回到指令列上,依照要求輸入 key, secret
    5. 接著會跳出 access token 的請求網址,用瀏覽器開啟,會得到一組 token,依照要求把這組 token 輸入進去。
    6. 提示是否確認,輸入確認「y」之後就可以使用了。

    可用的指令可參考官網,這邊附上範例和中文翻譯:

    基本上會使用到的就是 upload 這個指令而已。

    另外,如果資料輸入錯誤,或是手動上傳完畢了不想留資料,除了移除 dropbox 的 app 之外,記得執行刪除設定檔的動作:

    rm ~/.dropbox_uploader

    以上。

    同場加映

  • ionCube 加密/混淆 PHP for Codeigniter4 筆記

    ionCube 加密/混淆 PHP for Codeigniter4 筆記

    前陣子在搞 Android 的混淆,在第三方套件和映射的機制上吃了不少苦頭,最近嘗試把 codeigniter4 做加密,選擇使用 ionCube 套件。這套件並非免費的,pro 版本折合台幣大約 10k 左右,也是不便宜,而選擇他的優點有幾個:

    • 目前最新版尚未有破解、解密的服務。
    • 加密功能選項完整,可設定 ip 限制、網域限制、限制時間等以及外部金鑰檔案等等。參考
    • 可選作混淆功能(不過這樣不會很難 debug 嗎?)
    • 可設定需要加密的檔案,並非直接整個專案加密。
    • 可以設定非 PHP 檔案加密(未嘗試)
    • 可執行 hook 等多種設定,詳細參考官網

    估計他的版本週期是跟著 PHP 版本走的, 所以購買最佳實機應該是在 PHP 出了一個新版本之後再來購買會比較好。

    而他簡單實作的是無框架的 PHP 服務。我針對使用 Codeigniter 4 的框架做了加密動作,以下筆記幾個注意事項:

    1. 可加密的範圍是 app/ 內除了 Config/ 資料夾以外的檔案資料夾。參考圖一
    2. 設定專案時可以把整個專案設定在內,除了可加密範圍之外,其他選擇 copy 動作。
    3. skip 的動作可以是 .DS_Store、 .user.ini 等等或是其他不想要發布的檔案,可充當過濾檔案使用。
    4. 混淆的選項請不要混淆 class 和 method ,弄個不好會有名字對不起來的問題。參考。更建議連 function 也別混淆,呼叫操作很容易對不上的。
      update:解決方法可以參考這裡,不過尚未嘗試。
    5. 如果使用 git 發布的話,要記得考慮清楚原始未加密的程式碼是否也要上 git。
    6. 有部分版本無法加密,參考
    7. 伺服器要能夠安裝 ionCube loader 套件,這滿重要的,不裝起來會無法讀取,如果有設定金鑰的話也需要確認是否可以放置。

    以上。

    圖一。 可加密的檔案範圍。
    圖二。混淆功能選項。
    圖三。截至 2024-03-09 所支援的加密版本。
  • 《底層邏輯:看清這世界的底牌》心得

    《底層邏輯:看清這世界的底牌》心得

    《底層邏輯:看清這世界的底牌》這本書的作者劉潤,是中國知名的商業顧問,經歷滿厲害的。這本目前有出了兩本,分別為《底層邏輯:看清這世界的底牌》和《底層邏輯2:帶你升級思考,挖掘數字裡蘊含的商業寶藏》,最終還是往商業的行為邁進,不難理解受眾導向,所以可以期待一下底層 1 這本並不是什麼心靈成長或是勵志書的模版。

    目前看完了第一集。我認為《底層邏輯:看清這世界的底牌》這本可以當作一本嘗試透過一些整理好的通則、分類,來解釋從自己開始到與他人連結、與社會連結的各種狀況。整理從通則,如同書名一樣,成為「不變的道理」之後就能夠更為通透豁達,有更多面對問題的底牌與手段。

    先講結論:我認為這本所提供的分類和闡述的內容十分精闢有見地,裡面有許多內容,可以看得出是有歷練以及經過深刻觀察之後得到觀點,但我認為並非適用於所有人,如同健身一樣,未必真的是「底層邏輯」,但不失為一個價值觀/信念的參考。

    人是立體和被感性影響的,階級和社會形態也是流動且多元的,我想表達的是「底層邏輯」並非「最」底層的邏輯,也並非真理,作者拋磚引玉提供了一套觀點出來,但如果真的把他奉為圭臬,或是認知這就是「不會變」的邏輯,就有些錯失美意了。

    這本書每個章節都是獨立分開的,依照面對的對象整理成五個大章節。其中有滿多我可能在不同的書本或文章中有看過了,例如關於「人脈的定義」,或是複利累積、期數和報酬率的謬誤等,作者也透過文字把一些可能還在思考,尚未成型的價值觀,就像是遊戲攻略一般直接出書呈現出來,看這本書時突然有種「我這樣算不算作弊?」的感覺(笑),

    列出幾個對價值觀有衝擊的點,我想嘗試用我自己的話來表達:

    人生應該有三種價值觀

    關於事實對錯、整個社會成本、損失收益,這三種價值的評估發展。這讓我可以比較「看得懂」一些無法認同的觀點,其實背後的價值觀出處不同,並非單純的是「信仰」不同,或並非他是「壞人」,不要怪他,他沒用你的價值觀來思考而已。換句話說,我們換個分類來想,也能夠有不同的對錯結論,像是上述提到「我這樣算不算作弊」的道德疑惑,在社會成本與損失收益來說是好的,但以「考試就應該不能看攻略」以及「人生就是一場考試」的前提之下,的確作弊事實成立,以這個問題來說倒還偏輕微就是,頂多就會在鄙視鏈上容易被一些自恃老成的傢伙給瞧不起罷了。從文句上,的確「自恃老成的傢伙」是一種貶義用詞,但他們真的是「壞人」嗎??到也還好。

    「Why, What, How」的「心法」

    其中提到一個「注射式洗腦」深有同感,我也是愛用者,尤其是要攻擊一些莫名其妙的觀點時,還滿喜歡先弄亂他的價值觀在趕緊跑掉。得記住,如果要洗腦他們我沒那個屁股也沒那種需求,但是我可以趕緊離開,讓他們為了浪費我時間,付出一些代價,這是我溫柔的報復。

    另外在「知行合一」使用「Why, What, How」這個方法來提升肯定的動力是滿有用的,不過他需要大量的練習,我覺得是一個很值得練習的事情,尤其是在需要嘗試新的習慣、工作模式、規劃時,要提升持久力,以及在各種檢查點或是規劃時需要處理好前後因果,都滿值得把「Why, What, How」列表出來的。

    人脈的本質

    我認為講到「本質」這的詞就有些武斷了,但關於這篇的描述深有同感。這篇講到你的財富源自於「自己的本事」與「連結他人的本事」,而關於「連結他人的本事」,也就是「人脈」,是源自於你能幫助到的人,不斷輸出自己的價值給能夠實際獲益的人,這些人才是你的人脈。

    前幾年很愛出去喝酒,是源自大學泡酒吧的美好經驗,出社會後常常在酒吧透過同事或朋友遇到一些「大人物」,有一天再和一位酷妹(現已為人妻)聊時他講到一個詞:「酒鬼的謊言」,幡然醒悟。「人脈」這個詞可能早些年被傳銷給玩壞了,還好的是現在比較少有人談及這些內容,要不還滿想拿書砸他們的。

    邊界感的本質,是對所有權的認知

    我認為關於邊界感的描述是十分精闢的分類,這個章節的標題貫穿全文,也講述了「巨嬰」的行為模式源自於沒有得到授權而闖入私領域的行為。除了有形的邊界之外,近年來應該也越來越多家庭和職場會在意無形的邊界意識,包含了時間、隱私或權益等等,授權的概念也可以描述「為什麼他可以我不行」的這種「不公平」的質疑。以「所有權」的概念來講是很貼切的類比。

    什麼是幽默

    其中講了三種:優越感、錯愕感、釋放感。最近對這三種理論滿有感覺的,有時朋友或是網路上有人會講「這不好笑」,就會有股想要解釋「他為什麼好笑」的衝動,還滿常忍不住的,然而也未必是需要真的認真解釋,畢竟他大概也看不懂,這是一種源自優越感的幽默。 然而我覺得這篇大概是為了表達同章節名稱「幽默是溢出的智慧」這個斷言的解釋,沒有什麼其他延伸。剛好最近台灣賀瓏夜夜秀以及之前許多喜劇節目、喜劇演員炎上的事情,我也是很關心台灣現場喜劇的觀眾,覺得很有感觸。

    以上。後面還有些關於商業相關的內容,不過現今滿多商業文章或觀點表達都滿像的,我覺得如果是最近才看的話,應該會覺得有似曾相識的感覺,而我認為如果是剛出社會或是長年做為員工的中壯年人來看這本書的話,也不妨把後面都看完,把自己的人生當作公司來經營會別有一番風味,雖然會比較累一點,但如果有餘裕能夠克服其中遇到的問題的話,長期來看會是好的。

    關於「我這樣算不算作弊」這種心情,有時就會很想去凸那些正義感十分強烈到溢出的網路鄉民,轉換一角色、轉換一下觀點或是價值觀,即時就滿容易讓對方認知到「正義」的行為變成一種惡意(而且得直接忽略他無知的部分)。有時真的很不想去認知對方是不是「只是不知道而已」這樣,「覺得對方只是笨而已」是一種溫柔,有時溫柔還是有上限的。而我們都知道即便「主持正義」很爽,但私刑就是不對,更遑論群眾暴力、網絡暴力、冷漠暴力或是各種霸凌,也許我們最低的底線就是在溫柔盡失的狀況下,離那個「壞人」遠一點吧。

    之前分享一本書想嘗試把筆記內容呈現出來,結果似乎流於流水帳,而非心得了,我認為應該記錄我自己所不知道、有衝擊的、很有感受的,亦或是我所學習到的新的內容才是。寫心得不是什麼「我懂很多」這種用來吊書袋的競爭,也不是為了當作看過這本書的證明,可能太病態了,原本希望透過閱讀治療自己的初衷還是別忘了才好。

  • 斜線與反斜線

    斜線與反斜線

    單純整理一下,處理積怨已久分不太清楚的兩個符號。

    斜線的 wiki:

    又稱為斜線號、斜槓、前斜線或正斜線,用作標點符號或其他用途。

    反斜線的 wiki:

    是一種主要用於編寫電腦程式的專門符號。

    辨別方式:

    一、程式語言使用反斜線,標點符號是斜線

    程式語言中,跳脫字元使用反斜線,如果要在正規表達式中打出斜線「/」,需要打「\/」這樣才行,作為轉義字符使用。

    另外還有許多使用場景,參考:

    斜線作為標點符號使用,歷史比較老。雙斜線為古早時期的等號,後來等號躺平了成為現在常看到的「=」。斜線也是作為數學的除法符號使用。在電腦應用上,聊天軟體常用斜線來做命令輸入開頭標示,例如 wordpress 或是 obsidian 中,編輯器輸入命令的開頭,使用的便是斜線。

    其他斜線的使用場景,參考:

    windows 檔案路徑使用反斜線,但是 url 和 mac 的檔案路徑都是使用斜線。

    簡單來說,大部分都是使用斜線的場景,反斜線可以當作影子用途(?)。

    二、外觀差異

    如果以全形表示,斜線為「/」,閱讀順序如果是以左至右的話,斜線為往前傾倒的樣子;反之反斜線:「\」,為往後傾倒的樣子。

    可以簡單記住:「向右轉,前傾是正的,後傾是反的。」呵呵,幼稚園口訣。

    另外可以用中文「八」來記,筆畫第一筆為「丿」,是(正)斜線,第二筆是反斜線。

    三、名稱不同、鍵盤上位置不同

    斜線:slash、斜線、除法運算福、斜槓。

    反斜線: backslash、反斜線、逆除法運算符、反斜槓。

    斜線在標準鍵盤偏下方位置,使用右手小拇指點擊;反斜線在較上方位置,跟「|」符號一起,我的小拇指太短碰不到。

  • 《薩提爾的自我覺察練習》心得

    《薩提爾的自我覺察練習》心得

    我想先把這本書的幾個重要關鍵字列出來:不一致、內在冰山、情緒、情境、情緒、觀點、期待、動機、僵化、轉化。

    這本書的目的在我的理解中是:
    在壓力狀態下,我們很多行為常常「不一致」,而我們需要往「一致」的行為邁進。一致的行為模式才會才是幸福的正確方向。

    「一致的行為」意思是指:在「有覺察(知道自己在做什麼)」且「有選擇(有其他作法可選)」狀況下,顧全「情境」、「自己」、「他人」這三者的行為。書中有舉例並且統計出四種常見的不一致行為模式,分別為:討好型、指責型、超理智型、逃避型。 還真的滿常見的,書中滿大篇幅會以這四種常見不一致模型作分析與探討。

    我認為有一個 SOP:
    覺察情緒 -> 分析行為 -> 從冰山模型開始檢查抓漏 -> 轉化「觀點、渴望、期待」 -> 產生一致性行為 -> 放下情緒。

    在轉化之前,首先要鬆動自己的核心觀點(價值觀),需要避免僵化,保持開放、立體與多元價值觀的心態。

    以下整理書本重點與我的觀點:

    1. 壓力之下會產生慣性行為,有很多行為在壓力之下其實並非如此理性的,此時冰山模型就會派上用場。通俗的來說就是要「內化」才能也在壓力狀態下發揮好的效果,書中提到的是要「逐步改變價值觀與信念」才會是整體的改變,整體改變才能真正的影響到我們的行為模式。
    2. 書中舉了很多例子能夠充分說服我一致的行為是好的。而很多不一致的行為最大的問題就是適得其反,卻又常常不知道問題為何。
    3. 書中提到了四種常見的行為模式(討好型、指責型、超理智型、逃避型),可以當作常用模組來看,作為分類使用。
    4. 檢查情緒是否正常:是否符合「演化法則」(利於存活的情緒動機)、是否符合比例原則(時間、強度、原因)?
    5. 面對、接受、處理、放下情緒,聽起來很像證嚴法師會講的台詞,不過可以當作是一種「面對一個無可避免卻非好事的處理邏輯」。
    6. 其中有一個原則滿重要的「情緒無法圍堵,只能疏導」,在做到「一致」的處理之後,就得把情緒放下來,這是一種負責任的作法,我們得有努力過後去接受代價的勇氣呀。
    7. 分析的方法之一,「我練習」是一種造樣造句:「當 XXX(情境)的時候,我感覺 XXX(情緒),因為我認為 XXX(觀點),我希望 XXX(期待)。」 國語文能力很重要的。我訊息也可以作為轉化的檢查,判斷是否達到一致。
    8. 「吾日三省吾身」還滿重要的,設立檢查點做行為檢查,書中列出幾個可以被改變的常見狀態:「可以不循循善誘」、「可以不掌控全局」、「可以不辯論到底」、「可以不順其自然」。也就是說如果當我們遇到:「阿,我現在要 循循善誘 / 掌控全局 / 辯論到底 / 順其自然 」時, 就是設定檢查點的時候,可以先暫停一下,用意識去想看看是不是不一致的行為產生了。
    9. 渴望(動機)有幾個大分類:愛人、被愛、被尊重(符合標準)、被接納(討好型人格容易被接納,但是不容易被尊重)、更有自由、滿足意義。如果渴望不被滿足,就容易有情緒。我們需要誠實面對自己,當情緒來時,我們要誠實的把未被滿足的渴望給抓出來。 我認為,針對渴望產生期待,除了檢查是否渴望沒有被滿足以外,也檢查是否期待的事情是「真正」且「有效」的。

    附上一個簡化的冰山模型圖,書中圖片表格是文字的整理精華版,建議看過書後,可以嘗試把表格和圖片記下來練習:

    2024-02-21 update

    可能有點流水帳了,變成筆記了。下次改進。

  • 〈希望8+9都去死〉心得

    〈希望8+9都去死〉心得

    昨天阿欣傳了一篇文章給我:

    主要講 8+9 的惡形惡狀,標題為〈希望8+9都去死〉,想和我討論觀點。

    先用 ChatGPT 上摘要:

    原文描述了作者對於新搬來的鄰居的不滿和憤怒。這些鄰居的行為包括在家附近舉辦烤肉活動、喧嘩、在公共場所進行不雅行為,以及恐嚇報警的警察。作者對於這些行為感到極度不滿,並表達了對這些鄰居的憤怒和願望。

    我覺得台灣人有一個通病是對於名詞的特徵描述非常不精確,所以我想先定義 8+9 的標籤。也就是說滿足這些標籤才會被稱為 8+9(以下簡稱 +9)。 先聲明,+9 與宮廟文化及使高度重疊,且名詞諧音/來源相同,但我不認為該詞彙於現今社會中是宮廟文化的一環。

    必要條件有:意氣用事、血氣方剛、用暴力解決問題、凶神惡煞、愛出風頭。

    選要條件有:刺青、從事非正規工作、浪漫非理性、宮廟文化出身、講究「義氣」、沒有遠見。

    我認為從以上整理的特徵來看, +9與「年輕人」的特徵其實高度重疊,尤其是 True Colors 中外顯橘色的個性(衝動)相符。在這樣的狀態下,如果又缺乏健全家庭、同儕等健康的社會關係網絡,以及缺乏正確的職業訓練和價值觀培養的話,年輕人很容易會被「某種管道」給浸染,培養出與社會善良偏差甚巨的價值觀。而且,「某種管道」其實指的不只是被黑道把持的宮廟,邪教與透過仇恨、崇拜渲染年輕人偏差價值觀的組織不勝枚舉,各自也是透過自己的手段希望不同個性、不同社會階層的人們。

    我聽過兩種 +9 由來的說法:

    1. 早期武裝力量,現今承平時代無用武之地,被黑道吸收
    2. 早期國民黨將地痞流氓拉去管理本由地方仕紳掌握的宮廟勢力,權力鬥爭。

    先不考究歷史,結果而言以 +9 成為亂源的狀態來看,是因為在台面上無用武之地,最後因為經濟因素、社會價值等,大多只能被黑道勢力吸收,淪為小弟或人頭(我實在不願稱打手,體格不太優)。原本我個人推薦通通抓去做消防隊、或是充軍,不過這是天方夜譚罷了,台灣中華民國歷史和黑道密不可分,而現在 +9 人口也幾乎由黑道把持,這塊利益十分難以撼動。雖然本質是悲觀的,但也因為黑道涉足娛樂圈的歷史,我想到其實可以通通去打比賽,拳擊、踢拳、泰拳、綜合格鬥或是傳武都行,如果地下社會也興體育運動的話,也許能消耗精力,降低對社會風險,也能提高社會價值與社會地位,對於台灣富強也能夠有貢獻吧。

    悲觀的認為,還是會有許多歷史因素,毒品氾濫就會造成「體育人才計畫」失敗,黑道利益也可能會影響 +9 寧願爽爽過也不想工作。我認為最根本的源頭還是在健康的社會關係網絡,與健全職訓和教育,除此之外,針對法律體制上,犯錯再教育的機制其實也是有改進的空間的,如同吸毒犯勒戒所被詬病為研究所一樣,如何將原本缺乏的社會關係網與教育等補齊,這會比「叫他們都去死一死」來的有價值許多。

    所以,我覺得「希望8+9都去死」一言,基本上就是跟 8+9,或是我稱之為黑社會底層小弟小妹,想的程度是差不多的。差別只是他們敢殺人,你只是希望,你不敢。

    文中警察沒有發揮作用的話,可以申訴,去釘爆你支持的立委,串聯鄰居去「恐嚇」你們轄區警局和政黨,也有媒體手段,錄影後爆料也是方法,也有律師和法律手段。如果那發現不是違法,那是不是法源有問題,惡法非法,回頭去尋求倡議和修法支持。基本上花錢花時間要做的事情,為什麼不做?我們溫柔的嘗試理解,可能你只是陷入的「政治上的貧窮陷阱」,公民教育失敗導致我們大多數人根本不知道公民的權力義務所在,就只是笨而已。不服氣嗎?如果不服氣的話那請你想想,你跟 8+9 有什麼區別?

    回頭到我們自己身上,如果已經察覺到了,那麼我們該怎麼做擺脫「沒有用的 8+9」 這個標籤??

    1. 我們理解,我們不要作自己討厭的事情。
    2. 積極解決問題,透過體制內的方法處理,解決困擾的問題。
    3. 如果最終體制內無法可管,尋求倡議與修法途徑。
    4. 如果太慢,且有安全問題,尋求體制外作法。

    當你尋求體制外作法時,也就是和 8+9 做一樣的事情,請記得別自我合理化原因,會受到法律代價的請別逃避。

    在此之前,我會建議可以平常多關心「政治」:不是什麼候選人和政黨那種高射砲的遠方,而是請多關心自己產業內、生活周遭甚至自己興趣的法律、規範、風氣、方向等。去積極理解、支持、認同和討論,這也是我們能夠和 8+9 不一樣的地方,而且可以大幅減少上述在遇到問題,尋求解決方法時所耗費的時間和精力。遠離「政治上的貧窮陷阱」。

    同場加映:

    True Colors 介紹。

    台灣宮廟與黑道介紹的影片| 志祺 77 

    宮廟角頭歷史介紹。

  • 《原子習慣》讀書心得

    《原子習慣》讀書心得

    這次的讀書心得原本有分三個階段,分別是:第一章結束、第二章與第三章、第四章。 這次我想要把三個階段分成一次打完,一來是這本書滿多內容,但因為很久以前看過,也有嘗試實作,所以我想要把這本書以實際執行的方式來記錄,期待可以複製經驗為其他習慣鋪路。

    這邊一階段分章節,列出原則、注意事項與心得。

    前言

    1. 壞習慣產生的後果可以看做貧窮陷阱的過程,可以當作化學的二級反應或是三及反應的過程。
    2. 好習慣系統運作過程比目標重要,我們要做的是讓好習慣系統累積成效讓他的化學反應係數增加。
    3. 大的習慣是由許多小習慣而來。這在以前有人提倡「大的目標是由許多小目標環環相扣」是類似的概念。
    4. 改變習慣最有效的方法,是改變身份認同。這在很多習慣書中有提到應用,非常實用。
    5. 習慣建立遵守「正向行為螺旋(我忘記原本名字了)」:提示、渴望、回應、獎賞。許多流量池模型中有類似的應用。所以養成好習慣,需不斷重複執行產生這 4 個階段,擴大螺旋至成為我們想要成為的人(身份認同)。
    6. 維持身份認同是非常重要的。重點在「維持」。

    書中把好壞習慣產生的「代價」作為一個「門檻」,我認為描述並不精確,有種拜飛機的感覺。我認為習慣未必一定會達到成效,很多組成要素是運氣以及當下的知識、系統化,以及推動習慣的拉力/推力。可能壞習慣所產生問題在情緒上會是驚覺的,突然發現的,造成了越過「壞習慣的門檻」的感受;但是好習慣卻常常不會輕易的被發現,較容易產生「哪時候才是一個頭」的這種感嘆,如同書中所講到:「決定成功失敗的,不是目標,而是系統。」產生習慣拉力的能量應該是由系統本身產生,而非一個目標或是一個門檻。

    其中提到「溜溜球效應」是滿有感受的,之前在健身減重的的過程中,有嘗試過滿多不同方法,極端飲食和代餐也測試過,的確在事後會發生溜溜球效應,特別記錄權當一個提醒,希望未來可以警覺、避免這種效應發生。

    對於「改變身份認同」,我認為重點有幾個:

    1. 需要以主動的詞彙來描述,避免否定詞彙。
    2. 小的改變較為容易,遵守程式設計中「單一責任原則」,將身份的定義與實作描述清晰。
    3. 語言的重要性由此體會的出來,國文要學好阿。
    4. 身份認同不是絕對固定的,是滾動的,是要時時修正的,是自己賦予的,不應該是他人決定的。

    而身份認同的實作,也 callback 到書中提到維持習慣系統的拉力(動力)之一。

    最後,我覺得最重要的是「維持」這件事,其實這本書有點像是把我們對於習慣的價值觀,從平面拉成立體的狀態,以我來說:透過解釋行為心裡學中的螺旋模型,建立起實作的基礎,的原本的「目標」取代成「身份認同」,透過「應由系統產生獎勵」取代目標完成後的獎勵行為,並且提示了維持習慣的方法:「用最少的能量與努力解決生活中的問題。」在這個框架下,維持「身份認同」可避免矯枉過正或是虎頭蛇尾的結果,也是提供一個解決方向,讓我們最終讓能夠往更多好的習慣養成。

    法則一

    1. 改變習慣需要透過意識層面實現(e.g. 習慣計分卡、指差確認)
    2. 加強提示,嘗試降低使用到的「意識空間」:更容易規劃(時間、地點、行為)、更容易實作(小動作、堆疊、環境提示)。
    3. 透過習慣來加強習慣(習慣堆疊)。
    4. 獎勵回饋很重要,但是習慣更重要。
    5. 短期依賴自制力(意識),長期依賴環境。

    有一個詞彙叫做「門口效應」,是指在空間界線切換時,很容易發生「健忘」的狀況,這會阻礙我們使用意識層面來改變習慣。我們可以客服的解決方案是透過大腦外包,讓記憶放在紙本、環境提示上,例如鑰匙就掛在門邊,流程設計成需要拿起鑰匙才能開門(我把鑰匙掛在門栓上),出門的流程規劃為:出門前把要帶的東西先列出清單,出門前再檢查一次(e.g.「手機鑰匙錢包」口訣),這些都是惠我良多的實作技巧,我覺得重點在於大腦外包的方法,初期我會在 Notion 或是備忘錄上列出清單,現在很多流程已經內化成不需要意識去查看清單(已經背起來了),但是檢查這個動作變成習慣,整體習慣實作上就很方便。

    由此可知道環境的重要性,孟母應該是本書的作者。而環境可以切分為:

    1. 心理環境:心態和價值觀所建立的內在環境,包括了滿足、喜悅、成就感;厭惡、愧疚、噁心等等。
    2. 物理環境:外在造成方便/不方便的環境,包括了很花時間、流程很多、容易被刁難;有費用、輕便、迅速等等。

    習慣堆疊也是可以生成好習慣環境一個很重要的實作方法,我會建立自己的「儀式」,包括起床儀式、工作儀式等等,實際上目的是為了建立更有效率或是更舒服的環境,也許一些靈性工作中所強調的「儀式感」,會是相同的原理(老祖宗的智慧?)。

    法則二、法則三

    1. 把回饋獎勵放到習慣之中。
    2. 環境:社交圈的力量。
      • 親近的人(耳濡目染)
      • 多數的人(羊群效應)
      • 有力的人(個人崇拜)
    3. 心理環境的重要性:正向回饋。
    4. 釐清壞習慣的吸引力從何而來。
    5. 行動關鍵詞:簡單的、重複的。習慣的養成在於頻率、而非時間。
    6. 最小努力原則,兩分鐘法則:讓好習慣的行動在 2 分鐘內就能實現完成。
    7. 增加壞習慣的成本。(法則四還有詳述)

    對於壞習慣,我認為重要的是誠實的面對自己,判斷壞習慣造成的影響以及之所以要改掉壞習慣的原因,說不定這不是一個壞習慣? 確認之後也許能更誠實的面對,找到其中慾望的源頭進而去解決。這裡也另外推薦參考《被討厭的勇氣》其中有說到「選擇」的原因以及「一切煩惱都是由人際關係而來」這個觀點,對於尋找慾望源頭這個行為會滿有衝擊的。

    而對於環境,延續上一部份中心理環境的重要性,特別關於社交圈配置也是影響環境重要的一環。最近看了一本漫畫《恐怖教授的怪奇課程》,感想額外寫了一篇心得,有興趣可以看下。

    我很喜歡影集《魔鬼神探》中一句路西法常講的台詞:「what’s your really desire?」然後犯人就會自己揭穿剛剛的謊言,說出真實心中的慾望。瞭解自己內心慾望是一個成熟的大人具備的美德,而控制內心的慾望,是成熟大人需要的技能之一,兩者需要兼備。

    有一個譬喻:如同程式設計工作,我們的人力、財力等資源相當於習慣養成的所有能量。當程式完成可藉由伺服器(最小的成本)運作系統程式,然而設計程式需要把單一責任、最小的 units 抓出來做成模組,讓他執行可重複性的工作;程式設計師不斷的調整,執行維護調整優化的動作(檢視習慣),優化時須把握最小修改原則,儘量讓新的功能(習慣)消耗、修改是可以以最低耗能、最高效率運作;程式設計師也會將開發環境、測試環境、生產環境等等,在第一次開工時佈置好環境,以後調整處理運作除了不但可以快速上手進入狀況,也可以確保運作環境穩定、不容易有未知的錯誤;同時也要確保生產環境的資安問題,例如禁止未知的 port 和 ip 登入伺服器(避免壞習慣產生)、添加指定容易有問題 query deny(避免自己思考方向違背好習慣)等等。

    這是我對於這章節的譬喻,可能非程式領域的人聽不懂,管他的。

    法則四、結語

    1. 立即滿足與延遲滿足(獎賞、回饋等都是類似的意思)
    2. 除了兩分鐘法則補完計畫:立即回饋的設計 -> 往未來邁進的系統。
    3. 補完系統框架的技巧「環境」:讓想要的更容易達成、不想要的更困難實現。
    4. 成就感的解決方案之一:追蹤記錄。
    5. 遇到的挑戰:中斷習慣、比較、目標導向、無聊、優越感。
    6. 加強壞習慣的困難度:問責伙伴、契約。

    我覺得能處理的好延遲滿足的人十分厲害,就像是下棋時已經能看到好幾十步以後的年輕棋士。雖然我很想把原因至少切一部份出來歸咎於家庭/校園經驗傳承 + 運氣上面,但實際上對方的確做到了,而我們即便運氣不好,結果論而言無論如何也是需要努力才行。

    看書之後能夠明白的是:在養成習慣的的領域上,未必單純依靠意志力完成的,需要一個方向,未來的目標未必十分重要。這樣我不必一定要像是職業棋士一樣,需要用大腦記住未來 10 步以後的棋路,我能夠把他設計成一個模組,重複的不斷執行,甚至未來他是一個 AI ,能夠預測提醒與協助完成;我能花更少的力量與精力去達到想要的效果,這樣好的習慣就會越來越簡單養成。這些都是屬於建構「環境」的威力,壞的習慣也能夠因環境而改善,我覺得整合書中所講到的方式,我自己實作抵抗壞習慣的操作有幾個滿重要的策略:

    1. 把習慣的中斷當成旅途上的風景,記在心裡,記住產生的後果,然後認錯,去修正。
    2. 心態上,必須要時刻提醒:決策與行為都是對自己負責,這也是某種程度上的處事態度。
    3. 與他人的比較、設定目標、透過外部壓力監督都是一種手段,並非目的。
    4. 保持有趣,在習慣養成的機制中添加各種趣味,保持精彩樂趣,這非常非常的重要。
    5. 把意識花費在「檢查」系統上,去調整規劃、調整心態。

    Callback 回身份認同這件事情上,如同一開始說的「身份認同不是絕對固定的,是滾動的,是要時時修正的,是自己賦予的,不應該是他人決定的。」對自己負責,保持有趣精彩。

    我認為重點關鍵字有幾個:

    1. 身份認同。
    2. 心理與外在環境建立。
    3. 對自己負責的心態。
    4. 保持樂趣。
    5. 保持能夠隨時調整的能力與意識。

    以上。