ก๊วนซอฟท์แวร์ </softganz> SoftGang (Gang Software)

Web &amp; Software Developer Gang.

Topic List

โดย Little Bear on 15 ก.ค. 69 07:48

เหตุการณ์ที่เกิดขึ้นคือ Mac เกิดอาการกระตุก trackpad กระโดด คุมไม่อยู่ เพลงที่เปิดเสียงติดๆ ขัดๆ ตรวจสอบ process CPU เป็นปกติ RAM กินเยอะมาก

เบื้องต้นมีปัญหาเรื่องการอ่าน/เขียน SSD คาดว่าเกิดจาก Spotlight จึงทำการปิดระบบ Spotlight ทั้งระบบไม่ให้ทำงาน

ลำดับเหตุการณ์ที่ทำให้เกิดปัญหานี้ (The Root Cause):

  1. Flutter Extension ตรวจเจอ Xcode: พอคุณเปิด VS Code ตัวปลั๊กอินเห็นว่าเครื่องนี้มีแอป Xcode ติดตั้งอยู่ (Xcode 26.6) มันจึงเข้าใจว่าคุณต้องการจะพัฒนาแอปสำหรับ iOS ด้วย [1]
  2. ปลั๊กอินพยายามสั่งเปิด simctl: ปลั๊กอินจึงส่งคำสั่ง xcrun simctl ไปยังระบบปฏิบัติการ เพื่อดึงรายชื่อเครื่องจำลอง iPhone/iPad ออกมาแสดงบนหน้าจอ [1]
  3. เกิดการ Crash (พัง) เบื้องหลัง: แต่เนื่องจากคุณไม่ได้กดดาวน์โหลดตัว iOS Simulator (Component) เก็บไว้ใน Xcode พอคำสั่ง simctl วิ่งไปหาไฟล์จำลองระบบแล้วไม่เจออะไรเลย มันจึงช็อกและปิดตัวเองลงทันที (Shutting down / Cleaning up ที่เราเห็นใน Log รอบแรก) [1]
  4. ติดลูปไร้สิ้นสุด: ตัว Flutter Extension ใน VS Code ไม่ยอมแพ้ พอมันเห็นว่ากระบวนการเช็กอุปกรณ์ดับไปโดยยังไม่ได้คำตอบ มันจึงสั่งรันคำสั่ง simctl ใหม่ซ้ำอีกครั้งในอีก 4 วินาทีถัดไป วนลูปไปเรื่อย ๆ จนทำให้ฮาร์ดดิสก์ทำงานหนัก [1]

สรุปคำแนะนำ

การที่เราแก้ปัญหาด้วยการเปลี่ยนชื่อไฟล์ simctl เป็น .bak ไปก่อนหน้านี้ ถือเป็นการแก้ทางที่ถูกต้องและปลอดภัยที่สุดสำหรับกรณีของคุณแล้วครับ เพราะเป็นการบอกตัวปลั๊กอินตรง ๆ ว่าไม่ต้องพยายามไปเรียกหาเครื่องจำลองที่ไม่มีอยู่จริงอีกต่อไป [1]

ตราบใดที่คุณยังไม่ได้ใช้ทดสอบ iOS คุณสามารถปล่อยให้ flutter doctor ขึ้นเครื่องหมาย ! แบบนี้ทิ้งไว้ได้เลย โดยไม่มีผลเสียใด ๆ กับการเขียนโค้ดฝั่ง Android หรือ Web ครับ [1]

แก้อาการอ่าน/เขียน SSD ตลอดเวลาเพื่อยืดอายุ SSD

จัดการกับ Spotlight

  1. คำสั่งปิดการทำงานทั้งหมดของ Spotlight:

bash sudo mdutil -a -i off

  1. คำสั่งเปิดกลับมาใช้งานตามปกติ:

bash sudo mdutil -a -i on

วิธีปิดการทำงาน mds_stores แบบถาวร

  1. ปิด

bash sudo mdutil -a -i off

  1. ปิดกระบวนการที่ค้างอยู่ทันที: bash sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.metadata.mds.plist<br />

แก้อาการ launchd ทำงานตลอดเวลาเพื่อ run app simctl

ตรวจสอบว่า launchd ว่ากำลังทำอะไรอยู่ด้วยคำสั่ง:

bash log show --predicate 'process == "launchd"' --last 1m

พบว่าทุก 4 วินาทีจะทำการ run simctl แต่ไม่สำเร็จ ก็เลยสั่ง run ใหม่ทุก 4 วินาที ทำให้เกิดการทำงานที่ไม่ควรทำขึ้น

หลังจากพยายามมาหลายวิธีก็ยังไม่สำเร็จ จึงจัดการขั้นเด็ดขาดด้วยการ rename ชื่อ app simctl เพื่อไม่ให้ระบบ run app ได้อีกต่อไป

วิธีที่ 1: เปลี่ยนชื่อเครื่องมือค้นหา iOS เบื้องหลัง (เด็ดขาดและตรงจุดที่สุด)

เมื่อคุณไม่ได้ใช้ Xcode และไม่ได้ลงตัวจำลอง iOS ไว้ ไฟล์คำสั่ง simctl ในเครื่องคุณมักจะมาจากโฟลเดอร์ของ Command Line Tools เราจะไปทำการเปลี่ยนชื่อไฟล์หรือตัดสิทธิ์เพื่อไม่ให้ปลั๊กอิน Flutter สามารถหาคำสั่งนี้เจออีกต่อไป:

  1. เปิดแอป Terminal
  2. คัดลอกและวางคำสั่งด้านล่างนี้เพื่อตรวจสอบว่าระบบ macOS นำไฟล์ simctl ไปซ่อนไว้ที่ไหน:

bash xcrun -f simctl

  1. โดยปกติระบบจะแสดงที่อยู่ไฟล์ เช่น /Library/Developer/CommandLineTools/usr/bin/simctl ให้คุณสั่งเปลี่ยนชื่อไฟล์นั้นเพื่อซ่อนมันจาก VS Code ด้วยคำสั่งนี้ครับ:

bash sudo mv $(xcrun -f simctl) $(xcrun -f simctl).bak (ระบบจะให้พิมพ์รหัสผ่านเครื่อง Mac ของคุณเพื่อยืนยัน)

  1. เมื่อเปลี่ยนชื่อไฟล์เสร็จแล้ว ต่อให้ VS Code หรือตัวปลั๊กอินจะพยายามสั่งรันถี่ยิบแค่ไหน ระบบก็จะขึ้นว่าหาไฟล์ไม่เจอ (Command Not Found) ทันที และลูปทุก 4 วินาทีจะหยุดทำงานอย่างถาวรครับ!
  2. ตรวจสอบว่า simctl ยังคง run อยู่อีกหรือไม่

bash log show --predicate 'process == "launchd"' --last 1m

  1. อนาคตหากต้องทำงานกับ iOS ให้เปิดกลับมาใหม่ เนื่องจากได้ลองปิด services ไปหลายตัวมาก เช่น VSCODE, Flutter อาจะต้องเปิดกลับมาหลายรายการ bash sudo mv $(xcrun -f simctl).bak $(xcrun -f simctl) flutter config --enable-ios
โดย Little Bear on 26 เม.ย. 68 14:29

Shortcut

  • Command palette : Cmd ⌘ + P
  • Warp text : Option ⌥ + Z
  • Undo: Cmd ⌘ + Z
  • Redo: Cmd ⌘ + Shift ⇧ + Z
  • Bookmark next: Cmd ⌘ + Option ⌥ + L
  • Bookmark previous: Cmd ⌘ + Option ⌥ + J
  • Bookmark toggle: Cmd ⌘ + Option ⌥ + K

Settings

  • Text wrapping by default -> "editor.wordWrap": "on"
  • Access the json file with the settings by typing CTRL + SHIFT + P, then typing 'open default settings (JSON)'

How can I customize the space-to-tab conversion factor in VS Code?

Code → Preferences → Settings

// The number of spaces a tab is equal to. This setting is overridden
// based on the file contents when editor.detectIndentation is true.
"editor.tabSize": 2,

// Insert spaces when pressing Tab. This setting is overriden // based on the file contents when editor.detectIndentation is true. "editor.insertSpaces": false,

// When opening a file, editor.tabSize and editor.insertSpaces // will be detected based on the file contents. Set to false to keep // the values you've explicitly set, above. "editor.detectIndentation": false

ที่มา How can I customize the tab-to-space conversion factor in VS Code?

Setting ให้ ตำแหน่ง cursor ยังคงอยู่ที่เดิมเมื่อ vscode refocus

โดยการ disable the setting window:click through inactive หรือ window.clickThroughInactive to false

ที่มา [Can you stop VS Code from moving the cursor when you tap to refocus a window?](https://stackoverflow.com/questions/61789575/can-you-stop-vs-code-from-moving-the-cursor-when-you-tap-to-refocus-a-window)