diff --git a/Chapter2/Flutter.typ b/Chapter2/Flutter.typ index dc70cbb..2897f2a 100644 --- a/Chapter2/Flutter.typ +++ b/Chapter2/Flutter.typ @@ -115,7 +115,7 @@ Linux การใช้ตัวฝังตัว โค้ด Flutter สา - ดำเนินการตามตรรกะทางธุรกิจ - นักพัฒนาแอปเป็นเจ้าของ - เฟรมเวิร์ก (Framework) - - ให้ API ระดับสูงสำหรับการสร้างแอปคุณภาพสูง (ตัวอย่างเช่น วิดเจ็ต การทดสอบการกด + - ให้ API ระดับสูงสำหรับการสร้างแอปคุณภาพสูง (ตัวอย่างเช่น วิดเจ็ต การทดสอบการกด#jb การตรวจจับท่าทาง การเข้าถึงได้ และการอินพุตข้อความ) - ประกอบต้นวิดเจ็ตของแอปพลิเคชันเป็นฉาก #pagebreak() diff --git a/Chapter2/HTTPS.typ b/Chapter2/HTTPS.typ index 72ea3b6..e7a3861 100644 --- a/Chapter2/HTTPS.typ +++ b/Chapter2/HTTPS.typ @@ -121,8 +121,8 @@ HTTP เริ่มต้นด้วย "http://" และใช้พอร === ชั้นเครือข่าย -#iiii HTTP ทำงานที่เลเยอร์สูงสุดของโมเดล TCP/IP นั่นคือเลเยอร์แอปพลิเคชัน -เช่นเดียวกับโปรโตคอลความปลอดภัย TLS (ซึ่งทำงานเป็นเลเยอร์ย่อยที่ต่ำกว่าของเลเยอร์เดียวกัน) +#iiii HTTP ทำงานที่เลเยอร์สูงสุดของโมเดล TCP/IP นั่นคือเลเยอร์แอปพลิเคชัน#jb +เช่นเดียวกับโปรโตคอลความปลอดภัย TLS (ซึ่งทำงานเป็นเลเยอร์ย่อยที่ต่ำกว่าของเลเยอร์เดียวกัน)#jb ซึ่งเข้ารหัสข้อความ HTTP ก่อนส่ง และถอดรหัสเมื่อข้อความมาถึง โดยเคร่งครัดแล้ว HTTPS ไม่ใช่โปรโตคอลใหม่ที่แยกจากกัน แต่หมายถึงการใช้ HTTP ทั่วไปบนการเชื่อมต่อ SSL/TLS ที่เข้ารหัส (เป็นส่วนต่อขยายจาก HTTP อย่างที่กล่าวไปข้างต้น) diff --git a/Chapter2/NFC.typ b/Chapter2/NFC.typ index 5fd312b..09e7535 100644 --- a/Chapter2/NFC.typ +++ b/Chapter2/NFC.typ @@ -28,9 +28,9 @@ ISM ที่ไม่มีใบอนุญาต ซึ่งใช้กั #iii โปรแกรมอนุญาตสิทธิ์สิทธิบัตรสำหรับ NFC กำลังอยู่ระหว่างการใช้งานโดย France Brevets ซึ่งเป็นกองทุนสิทธิบัตรที่จัดตั้งขึ้นในปี 2011 โปรแกรมนี้อยู่ระหว่างการพัฒนาโดย Via Licensing -Corporation ซึ่งเป็นบริษัทสาขาอิสระของ Dolby Laboratories และยุติลงในเดือนพฤษภาคม 2012 -ไลบรารี NFC แบบโอเพนซอร์สและอิสระต่อแพลตฟอร์ม libnfc -มีให้บริการภายใต้ใบอนุญาตสาธารณะทั่วไปแบบผ่อนปรนของ GNU +Corporation ซึ่งเป็นบริษัทสาขาอิสระของ Dolby Laboratories และยุติลงในเดือน#jb พฤษภาคม +2012 ไลบรารี NFC แบบโอเพนซอร์สและอิสระต่อแพลตฟอร์ม libnfc มีให้บริการภายใต้ใบอนุญาต GNU +Lesser General Public License (LGPL) #iii แอปพลิเคชันปัจจุบันและที่คาดว่าจะมีในอนาคต ได้แก่ ธุรกรรมแบบไร้สัมผัส การแลกเปลี่ยนข้อมูล และการตั้งค่าการสื่อสารที่ซับซ้อนมากขึ้น เช่น Wi-Fi ที่ง่าย diff --git a/Chapter3/Chapter3.typ b/Chapter3/Chapter3.typ index e0e511e..d9e6b70 100644 --- a/Chapter3/Chapter3.typ +++ b/Chapter3/Chapter3.typ @@ -123,104 +123,13 @@ === ผังการดำเนินงาน -#diagram( - node-stroke: 1pt, - spacing: 2em, - node((0, 0), [เริ่มต้น], shape: pill), - edge("-|>"), - node((0, 1), shape: circle, radius: 1em), - edge("-|>"), - node((0, 2), [ศึกษาข้อมูลและทฤษฏีที่เกี่ยวข้อง], width: 2.5in), - edge("-|>"), - node((0, 3), [ออกแบบและวางแผนการดําเนินงาน], width: 2.5in), - edge("-|>"), - node((0, 4), [เครื่องยืนยันตัวตนด้วย NFC], width: 2.5in), - edge("-|>"), - node((0, 5), [ทดสอบประสิทธิภาพ], shape: diamond), - edge("r,u,u,u,u,l", "-|>", [ไม่ผ่าน]), - edge("-|>", [ผ่าน]), - node((0, 6), [จัดทำเอกสาร], width: 2.5in), - edge("-|>"), - node((0, 7), [นำเสนอ], width: 2.5in), - edge("-|>"), - node((0, 8), [สิ้นสุด], shape: pill), -) +#include "ProjectFlowchart.typ" #pagebreak() === ผังการทำงาน -#diagram( - node-stroke: 1pt, - spacing: 2em, - node([เริ่มต้น], shape: pill), - edge("-|>"), - node((1, 0), [ตั้งค่า LittleFS]), - edge("-|>"), - - node((1, 2), [มี Wi-Fi บันทึก\ ไว้อยู่หรือไม่], shape: diamond), - edge("l", "-|>", [ไม่มี]), - edge((1, 2), (1, 3), "-|>", [มี]), - - node((0, 2), [รอรับรายละเอียดเครือข่าย\ (ESP-Touch)]), - edge("d,r", "-|>"), - node((1, 3), [เชื่อมต่อเครือข่าย]), - edge("-|>"), - - node((0, 4), [มีอุปกรณ์ควบคุม\ หลักแล้วหรือไม่], shape: diamond), - edge("-|>", [ไม่มี]), - edge("d", "-|>", [มี]), - - node((1, 4), [สร้างโทเค็นสำหรับการยืนยัน\ อุปกรณ์ควบคุมหลัก]), - edge("-|>"), - - node((1, 5), [รออุปกรณ์ควบคุมหลัก\ แตะเซนเซอร์ NFC]), - edge("-|>"), - - node((0, 5), [ตั้งค่าเซิร์ฟเวอร์ HTTPS]), - edge("-|>"), - - node((0, 6), shape: circle, radius: 1em), - edge("-|>"), - - node((0, 7), [มีการแตะเซนเซอร์\ NFC ขาเข้าหรือไม่], shape: diamond), - edge("-|>", [ไม่มี]), - - node((0, 9), [มีคนผ่านเซนเซอร์ PIR\ โดยไม่ได้รับอนุญาตหรือไม่], shape: diamond), - edge((0, 9), (0, 10), [ไม่มี]), - edge((0, 7), (1, 6), "-|>", [มี]), - - node((1, 6), [อยู่ในโหมดลงทะเบียน\ หรือไม่], shape: diamond), - edge("-|>", [ใช่]), - edge((1, 6), (2, 7), [ไม่]), - - node((1, 7), [นำ ID อุปกรณ์เข้า\ สู่รายการทะเบียน]), - edge((1, 7), (0.6, 7), (0, 9), "-|>"), - - node((2, 7), [ID ของอุปกรณ์อยู่\ ในทะเบียนหรือไม่], shape: diamond), - edge("-|>", [อยู่]), - edge((2, 7), (1, 8), "-|>", [ไม่อยู่], label-sep: -5pt), - - node((2, 8), [ส่งเสียงคอนเฟิร์ม]), - edge((2, 8), (2, 8.5), (0.4, 8.5), (0, 9), "-|>"), - - node((1, 8), [ส่งเสียงแสดงความผิดพลาด]), - edge((1, 8), (0.5, 8), (0, 9), "-|>"), - - node((1, 9), [แจ้งเตือนทางเสียง\ และแอปพลิเคชัน]), - edge((1, 9), (0, 10), "-|>"), - edge((0, 10), (1, 10), "-|>", [มี]), - - node((0, 10), [มีคำขอ HTTPS\ ใหม่หรือไม่], shape: diamond), - edge((0, 10), (-2, 10), "-|>", [ไม่มี], label-pos: 10%), - edge((0, 9), (1, 9), "-|>", [มี], label-anchor: "center", label-sep: -8pt), - - node((1, 10), [ประมวลผลคำขอ HTTPS]), - edge((1, 10), (1, 11), (-2, 11), (-2, 10), "-|>"), - - node((-2, 10), shape: circle, radius: 1em), - edge((-2, 10), (-2, 6), (0, 6), "-|>"), -) +#include "ProductFlowchart.typ" #pagebreak() #set par(leading: 1em) diff --git a/Chapter3/ProductFlowchart.typ b/Chapter3/ProductFlowchart.typ new file mode 100644 index 0000000..dab79ac --- /dev/null +++ b/Chapter3/ProductFlowchart.typ @@ -0,0 +1,74 @@ +#import "@preview/fletcher:0.5.8" as fletcher: diagram, edge, node +#import fletcher.shapes: circle, diamond, pill + +#diagram( + node-stroke: 1pt, + spacing: 2em, + node([เริ่มต้น], shape: pill), + edge("-|>"), + node((1, 0), [ตั้งค่า LittleFS]), + edge("-|>"), + + node((1, 2), [มี Wi-Fi บันทึก\ ไว้อยู่หรือไม่], shape: diamond), + edge("l", "-|>", [ไม่มี]), + edge((1, 2), (1, 3), "-|>", [มี]), + + node((0, 2), [รอรับรายละเอียดเครือข่าย\ (ESP-Touch)]), + edge("d,r", "-|>"), + node((1, 3), [เชื่อมต่อเครือข่าย]), + edge("-|>"), + + node((0, 4), [มีอุปกรณ์ควบคุม\ หลักแล้วหรือไม่], shape: diamond), + edge("-|>", [ไม่มี]), + edge("d", "-|>", [มี]), + + node((1, 4), [สร้างโทเค็นสำหรับการยืนยัน\ อุปกรณ์ควบคุมหลัก]), + edge("-|>"), + + node((1, 5), [รออุปกรณ์ควบคุมหลัก\ แตะเซนเซอร์ NFC]), + edge("-|>"), + + node((0, 5), [ตั้งค่าเซิร์ฟเวอร์ HTTPS]), + edge("-|>"), + + node((0, 6), shape: circle, radius: 1em), + edge("-|>"), + + node((0, 7), [มีการแตะเซนเซอร์\ NFC ขาเข้าหรือไม่], shape: diamond), + edge("-|>", [ไม่มี]), + + node((0, 9), [มีคนผ่านเซนเซอร์ PIR\ โดยไม่ได้รับอนุญาตหรือไม่], shape: diamond), + edge((0, 9), (0, 10), [ไม่มี]), + edge((0, 7), (1, 6), "-|>", [มี]), + + node((1, 6), [อยู่ในโหมดลงทะเบียน\ หรือไม่], shape: diamond), + edge("-|>", [ใช่]), + edge((1, 6), (2, 7), [ไม่]), + + node((1, 7), [นำ ID อุปกรณ์เข้า\ สู่รายการทะเบียน]), + edge((1, 7), (0.6, 7), (0, 9), "-|>"), + + node((2, 7), [ID ของอุปกรณ์อยู่\ ในทะเบียนหรือไม่], shape: diamond), + edge("-|>", [อยู่]), + edge((2, 7), (1, 8), "-|>", [ไม่อยู่], label-sep: -5pt), + + node((2, 8), [ส่งเสียงคอนเฟิร์ม]), + edge((2, 8), (2, 8.5), (0.4, 8.5), (0, 9), "-|>"), + + node((1, 8), [ส่งเสียงแสดงความผิดพลาด]), + edge((1, 8), (0.5, 8), (0, 9), "-|>"), + + node((1, 9), [แจ้งเตือนทางเสียง\ และแอปพลิเคชัน]), + edge((1, 9), (0, 10), "-|>"), + edge((0, 10), (1, 10), "-|>", [มี]), + + node((0, 10), [มีคำขอ HTTPS\ ใหม่หรือไม่], shape: diamond), + edge((0, 10), (-2, 10), "-|>", [ไม่มี], label-pos: 10%), + edge((0, 9), (1, 9), "-|>", [มี], label-anchor: "center", label-sep: -8pt), + + node((1, 10), [ประมวลผลคำขอ HTTPS]), + edge((1, 10), (1, 11), (-2, 11), (-2, 10), "-|>"), + + node((-2, 10), shape: circle, radius: 1em), + edge((-2, 10), (-2, 6), (0, 6), "-|>"), +) diff --git a/Chapter3/ProjectFlowchart.typ b/Chapter3/ProjectFlowchart.typ new file mode 100644 index 0000000..09fcf14 --- /dev/null +++ b/Chapter3/ProjectFlowchart.typ @@ -0,0 +1,25 @@ +#import "@preview/fletcher:0.5.8" as fletcher: diagram, edge, node +#import fletcher.shapes: circle, diamond, pill + +#diagram( + node-stroke: 1pt, + spacing: 2em, + node((0, 0), [เริ่มต้น], shape: pill), + edge("-|>"), + node((0, 1), shape: circle, radius: 1em), + edge("-|>"), + node((0, 2), [ศึกษาข้อมูลและทฤษฏีที่เกี่ยวข้อง], width: 2.5in), + edge("-|>"), + node((0, 3), [ออกแบบและวางแผนการดําเนินงาน], width: 2.5in), + edge("-|>"), + node((0, 4), [เครื่องยืนยันตัวตนด้วย NFC], width: 2.5in), + edge("-|>"), + node((0, 5), [ทดสอบประสิทธิภาพ], shape: diamond), + edge("r,u,u,u,u,l", "-|>", [ไม่ผ่าน]), + edge("-|>", [ผ่าน]), + node((0, 6), [จัดทำเอกสาร], width: 2.5in), + edge("-|>"), + node((0, 7), [นำเสนอ], width: 2.5in), + edge("-|>"), + node((0, 8), [สิ้นสุด], shape: pill), +) diff --git a/References.yaml b/References.yaml index 6aa2db6..079d66f 100644 --- a/References.yaml +++ b/References.yaml @@ -336,7 +336,9 @@ ansiC: date: 1988 serial-number: isbn: 0131101633 - url: https://archive.org/details/the-ansi-c-programming-language-by-brian-w.-kernighan-dennis-m.-ritchie.org + url: + date: 2025-12-11 + value: https://archive.org/details/the-ansi-c-programming-language-by-brian-w.-kernighan-dennis-m.-ritchie.org ghEsp32Partition: type: Web