電腦是怎麼運作的?從圖靈到 8086
本文由 Claude Code 生成。 一、圖靈是什麼1936 年,艾倫·圖靈(Alan Turing)提出了一個思想實驗: 如果一台機器能做到這三件事,它就能計算世界上任何可以被計算的問題。 這三件事是: 讀寫資料 — 能把東西存起來,也能讀出來 條件判斷 — 能根據結果決定下一步做什麼 重複執行 — 能一直跑,直到答案出現 這個概念叫做圖靈機,它不是一台真實的機器,而是一個理論模型,用來定義「什麼叫做計算」。 重要的是,圖靈說:計算的能力跟材料無關。 不管用真空管、電晶體、還是 CSS,只要能做到這三件事,就是一台電腦。這也是為什麼後來有人可以用 CSS 實作 x86 CPU——理論上,任何圖靈完備的系統都能模擬另一個圖靈完備的系統。 圖靈的貢獻是:他在電腦被造出來之前,就先用數學證明了「電腦能做什麼、不能做什麼」。現代所有電腦,本質上都是圖靈機的物理實現。 二、寫程式 === 紙打孔在鍵盤出現之前,人類告訴電腦要做什麼的方式,是在卡片上打洞。 打孔卡片的原理12有洞 = 1沒洞 = 0 一張卡片有 80 欄 × 12 行,每個位...
duti - macOS 預設應用程式管理工具
什麼是 duti?duti 是一個 macOS 命令行工具,用於設定特定文件類型或 URL scheme 的預設處理應用程式。相較於在系統偏好設定中逐一修改,duti 讓你可以透過指令批次管理預設應用程式。 安裝使用 Homebrew 安裝: 1brew install duti 基本用法查詢目前的預設應用程式查詢特定檔案類型的預設應用程式: 1duti -x txt 輸出範例: 123Visual Studio Codecom.microsoft.VSCode/Applications/Visual Studio Code.app 設定預設應用程式設定預設應用程式的基本語法: 1duti -s <bundle_id> <uti_or_extension> <role> 參數說明: bundle_id:應用程式的 Bundle Identifier(例如 com.microsoft.VSCode) uti_or_extension:UTI(Uniform Type Identifier)或副檔名 role:角色類型 all:所有角色 ...
Git osxkeychain 帳密設定
Git http(s)帳密設定通常在Git私倉的建置中,我們通常是透過http協定來存取Git私倉上的資源,在macOS上為了方便,透過我們會利用Keychain來安全管理使用者的帳號及密碼,因此大略都會透過下列指令設定 git credential osxkeychain 用戶憑證的管理方式。 1git config --global credential.helper osxkeychain 帳密更新方式隨著時間一久,突然要上傳異動至repo專案時發現為何突然間提示權限不足,經過檢查線上權限都有開啟,那可能是因為帳密跑掉或錯誤而影響。 1234$ git credential-osxkeychain gethost=github.comprotocol=https> [Press Return] 可以透過上列的指令可以查看目前對照的帳號及密碼是否正確 如果不確定,也可以透過下列指令先刪除原有設定,後續在進行git指令操作時就會需要重新輸入帳密 1234$ git credential-osxkeychain erasehost=github.comprotocol=...
跨來源資源共用(CORS)
故事背景今日上班的時候,隔壁的小王跑來跟我說,目前線上遇到CORS的問題,深入了解後才曉得在後端的工程人員對於CORS的認識不深,因此在進行新環境部署的時候缺少環境的設定檔,面對總是有類似的狀況一再發生,是否有什麼方式可以改善。 同源策略要說起CORS的由來,主要還是在於安全性考量,在瀏覽器上大部份是採用同源政策(Same-origin policy)限制了不同網域資源間的活動。因此當我們API站的網址、埠號、協定不一致的時候,通常我們會在開發者工看到下面的錯誤訊息: CORS隨著目前網站提供的功能與內容的豐富度越來越高,經常會有需要存取第三方資源的狀況,因此大部份都會透過一些跨域存取的方法達到請求資源的目的,CORS就是其中一種可以達成存取資源方法。伺服器會透過preflight request機制使用OPTIONS方法發出一個請求,確認伺服器是否支援跨域請求以及相關內容,當伺服務允許之後,才會實際發送資源請求的動作,並告知客戶端是否有需要相關的認證資訊(Cookie、Header)之類的。 解法方法根據伺服器的不同,通常很容易在網路上找到各自對應的設定方式,這邊我以大家...
如何在VSCode上進行TypeScript Debugging
前言日常工作上經常性使用VSCode這款原始碼編輯器做為開發工具,但大部份都只用來寫寫代碼、透過擴充套件highlight代碼,以及進行相關編輯、搜尋、取代等文書工作,甚少直接使用編輯器來運行程式,這次來記錄一下如何使用內建的Debug功能進行Typescript的Debugging。 參考內容:https://code.visualstudio.com/docs/editor/debugging 測試代碼日常在進行除錯或是閱讀代碼時,經常需要在不同的程式碼檔案中進行切換,腦中還需要記憶各種不同的變數以及執行流程,稍微不注意就會需要重頭來過。 下面代碼我是近期在研究的colyseus開源專案,正在理解該專案的技術是如何做到C/S架構之間資料狀態同步的這件事,接下來我們試著使用VSCode Debug功能來追蹤程式碼運行的方式。 首先準備一段測試代碼,先克隆colyseus/schema下來,在根目錄隨意取個test.ts檔名做為ts-node執行時進入點: Debug功能參數設定使用Shift + Command + D切換至Run and Debug選單功能,若當...
