TERRA RPC

กำลังเตรียมกระดาน…

Agent Dev Thai Academyprinciples · patterns · architecture
หลักสูตร · Design Patterns ในโค้ดจริง
0/9
Design Patterns · แปดกระดาน แปดชื่อที่ AI รู้จัก

ชื่อที่ใช้สั่ง AI ได้ในคำเดียว

แพทเทิร์นไม่ใช่ท่าโชว์ มันคือรูปทรงของไฟล์ที่คนเจอปัญหาเดียวกันมาแล้วหลายพันครั้ง แล้วตั้งชื่อให้ พอคุณพิมพ์ว่า “ทำส่วนลดเป็น Strategy” AI รู้ทันทีว่าต้องมีแบบกลางหนึ่งอัน แคมเปญละไฟล์ และจุดเลือกที่เดียว ถ้าไม่พูดชื่อ AI จะเติมเงื่อนไขอีกหนึ่งก้อนในไฟล์เดิม ทุกครั้งที่มีแคมเปญใหม่

ร้านคอร์สออนไลน์ร้านเดิมจาก Clean Architecture ขายบนเว็บและ LINE แปดกระดาน แปดงานจริงที่คุณสั่ง AI ซ้ายใช้แพทเทิร์น ขวาเขียนแบบที่ AI เขียนเมื่อไม่มีใครบอก กดถัดไปแล้วนับว่าฝั่งไหนต้องเปิดกี่ไฟล์ ทดสอบซ้ำกี่เรื่อง และอะไรพัง ทุกขั้นมีข้อความที่คุณส่งให้ AI ได้เลย บทจะถูกนับว่าเรียนจบเมื่อคุณไปถึงขั้นสุดท้ายของกระดาน

1
ตอนที่ 1 · แคมเปญละไฟล์ ตัวเลือกที่เดียวเพิ่มแคมเปญส่วนลดใหม่ทุกเดือน แล้วเว็บกับ LINE เริ่มลดไม่เท่ากัน
เรื่องย่อ

ร้านคอร์สของคุณมีส่วนลด Gold กับโค้ดคูปองอยู่แล้ว เดือนนี้คุณอยากเพิ่มแคมเปญซื้อ 3 คอร์สลด 20% เดือนหน้าเพิ่มจองก่อนเปิดลด 15% กติกาของร้านคือใช้ได้ทีละอย่าง และเลือกอันที่ลดมากที่สุด

บนฝั่งขวา กติกาข้อนั้นไม่มีอยู่ในโค้ด ลำดับของเงื่อนไขทำหน้าที่แทน AI ใส่จองก่อนเปิดไว้บนสุดในเว็บ แต่ต่อท้ายใน LINE ใน diff แต่ละไฟล์ดูถูก ต่างกันแค่ลำดับบรรทัด

ซ้าย ทุกแคมเปญเป็นไฟล์ของตัวเอง ที่ตอบคำถามเดียวว่าลดเท่าไร และมีที่เดียวที่เลือกว่าใช้แคมเปญไหน ขวา แคมเปญเป็นเงื่อนไขต่อกันในหน้าชำระเงิน และบอท LINE ก๊อปชุดเดียวกันไป คุณจะสั่ง AI เพิ่มสองแคมเปญ แล้วเปลี่ยนกติกาการเลือกหนึ่งครั้ง

กล่องบนกระดานนี้ · 5
ส่วนทำอะไรทำไม
แบบกลางของแคมเปญทุกแคมเปญตอบคำถามเดียวกัน ว่าลดเท่าไรตัวเลือกถามทุกแคมเปญแบบเดียวกันได้
แคมเปญซื้อ 3 คอร์สแคมเปญหนึ่งตัว หนึ่งไฟล์เพิ่มแคมเปญโดยไม่เปิดไฟล์ของแคมเปญอื่น
รายชื่อแคมเปญบรรทัดละแคมเปญแคมเปญใหม่คือหนึ่งบรรทัดในไฟล์นี้
คิดราคาและเลือกส่วนลดเลือกแคมเปญที่ลดมากที่สุดกติกาการเลือกมีที่อยู่ที่เดียว
บอท LINEช่องทางขายทาง LINEซ้ายถามตัวเลือกเดิม ขวาก๊อปเงื่อนไขมาทั้งชุด
1
Strategy · แคมเปญละไฟล์ ตัวเลือกที่เดียวคุณจะสั่ง AI ว่าอะไร
1
Strategy · แคมเปญละไฟล์ ตัวเลือกที่เดียว
ตอนที่ 1 · สถานการณ์

ร้านคอร์สของคุณมีส่วนลด Gold กับโค้ดคูปองอยู่แล้ว เดือนนี้คุณอยากเพิ่มแคมเปญซื้อ 3 คอร์สลด 20% เดือนหน้าเพิ่มจองก่อนเปิดลด 15% กติกาของร้านคือใช้ได้ทีละอย่าง และเลือกอันที่ลดมากที่สุด

เพิ่มแคมเปญส่วนลดใหม่ทุกเดือน แล้วเว็บกับ LINE เริ่มลดไม่เท่ากัน

แคมเปญละไฟล์ · ตัวเลือกที่เดียว
เงื่อนไขสองชุด · เว็บกับ LINE

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

แคมเปญละไฟล์ · ตัวเลือกที่เดียว
เงื่อนไขสองชุด · เว็บกับ LINE
แคมเปญละไฟล์ · ตัวเลือกที่เดียว
ตัวเลือก · ที่เดียวที่ตัดสิน
คิดราคาและเลือกส่วนลดที่เดียวที่ตัดสินว่าใช้แคมเปญไหน
ใช้ ← รายชื่อแคมเปญ
คิดราคาสุทธิเลือกแคมเปญที่ลดมากที่สุด
แบบกลางของแคมเปญแบบกลางทุกแคมเปญทำตาม
ทุกแคมเปญบอกได้ว่าลดเท่าไร
แคมเปญ · แคมเปญละไฟล์
รายชื่อแคมเปญบรรทัดละแคมเปญ
รายชื่อแคมเปญ บรรทัดละตัว
แคมเปญ Goldแคมเปญละไฟล์
ใช้ ← แบบกลางของแคมเปญ
Gold ลด 10% ไม่เกิน 500
แคมเปญคูปองแคมเปญละไฟล์
ใช้ ← แบบกลางของแคมเปญ
ลดตามโค้ดคูปอง
ช่องทางขาย · เว็บและ LINE
หน้าชำระเงินบนเว็บเรียกตัวเลือก
ใช้ ← คิดราคาและเลือกส่วนลด
แสดงราคาในหน้าชำระเงิน
บอท LINEเรียกตัวเลือก
ใช้ ← คิดราคาและเลือกส่วนลด
ตอบราคาให้ลูกค้าใน LINE
เงื่อนไขสองชุด · เว็บกับ LINE
ตัวเลือก · ที่เดียวที่ตัดสิน
ไม่มีตัวเลือก · ลำดับเงื่อนไขคือกติกา
แคมเปญ · แคมเปญละไฟล์
ไม่มี · แคมเปญเป็นเงื่อนไขในหน้าจอ
ช่องทางขาย · เว็บและ LINE
หน้าชำระเงินบนเว็บแคมเปญเป็นเงื่อนไขในหน้านี้
ถ้าเป็น Gold ลด 10%ไม่งั้นถ้ามีคูปอง ลดตามโค้ดแสดงราคาในหน้าชำระเงิน
บอท LINEก๊อปเงื่อนไขชุดเดียวกันมา
ถ้าเป็น Gold ลด 10%ไม่งั้นถ้ามีคูปอง ลดตามโค้ดตอบราคาให้ลูกค้าใน LINE
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลากเงื่อนไขทุกตัวจากเว็บและ LINE ไปเป็นไฟล์ละแคมเปญ

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ไฟล์เดียวกับที่แก้แดง: เว็บกับ LINE ลดไม่เท่ากัน

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย มีแคมเปญ Gold กับคูปอง ไฟล์ละตัว และส่วนคิดราคาที่เลือกอันที่ลดมากสุด ขวา มีเงื่อนไข ถ้า Gold ลด 10% ไม่งั้นถ้ามีคูปอง ลดตามโค้ด อยู่ในหน้าชำระเงิน และอีกชุดเหมือนกันในบอท LINE

ขั้นที่ 1เพิ่มแคมเปญซื้อ 3 คอร์ส ลด 20%

ซ้าย AI เพิ่มไฟล์แคมเปญใหม่ แล้วเพิ่มบรรทัดเดียวในรายชื่อแคมเปญ ทดสอบซ้ำ 2 ตัว ขวา AI เพิ่มเงื่อนไขซื้อ 3 คอร์ส ทั้งในเว็บและใน LINE แล้วทดสอบซ้ำ 8 ตัว รอบนี้ยังไม่พัง

ขั้นที่ 2เพิ่มจองก่อนเปิด ลด 15%

ซ้าย AI เพิ่มไฟล์แคมเปญอีกไฟล์ กับอีกบรรทัดในรายชื่อ ขวา AI ใส่เงื่อนไขจองก่อนเปิดไว้บนสุดในเว็บ แต่ต่อท้ายใน LINE สมาชิก Gold ซื้อ 15,000 ผ่าน LINE เลยไปไม่ถึงบรรทัดนั้น ได้ลด 500 แทน 2,250

ขั้นสุดท้ายกรอกโค้ดเมื่อไร ให้คูปองชนะ

ซ้าย AI แก้ส่วนที่เลือกแคมเปญ ไฟล์เดียว ไฟล์แคมเปญไม่ถูกเปิด ขวา AI ย้ายเงื่อนไขคูปองขึ้นบนสุดทั้งสองไฟล์ ในเว็บ เงื่อนไขเดิมของจองก่อนเปิดกลายเป็นชุดใหม่ แล้วเขียนทับส่วนลดของคูปอง

หลักการ ในภาษาของโค้ด

ถ้าวิธีทำมีหลายแบบ และต้องเลือกตอนใช้งาน ให้แต่ละแบบเป็นไฟล์ของตัวเองที่มีรูปเดียวกัน แล้วให้การเลือกอยู่ที่เดียว ลำดับของเงื่อนไขไม่ควรเป็นกติกาของร้าน

ถามก่อนรับ diffกติกาว่าจะใช้แบบไหน อยู่ที่เดียว หรือซ่อนอยู่ในลำดับของเงื่อนไขหลายไฟล์

Strategy (Gamma, Helm, Johnson, Vlissides, Design Patterns 1994): define a family of algorithms, encapsulate each one, and make them interchangeable; the algorithm varies independently from the clients that use it
2
ตอนที่ 2 · เหตุการณ์เดียว คนรอลงชื่อเองหลังจ่ายเงินร้านต้องทำอีกหลายอย่าง พอข้อความ LINE ส่งไม่ผ่าน ลูกค้าจ่ายแล้วเข้าเรียนไม่ได้
เรื่องย่อ

ทุกครั้งที่ลูกค้าจ่ายเงิน ร้านส่งใบเสร็จ ส่ง LINE และเปิดสิทธิ์เข้าเรียน ตอนนี้คุณอยากเพิ่มแต้มสะสม อยากเห็นสถิติยอดขาย และอยากให้ข้อความ LINE มีปุ่ม บนฝั่งขวา ทุกงานเริ่มที่การเปิดไฟล์จ่ายเงิน

ในไฟล์นั้น ทุกอย่างทำต่อกันเป็นแถว ตัวไหนช้า ลูกค้าก็รอทั้งก้อน ตัวไหนล้ม บรรทัดถัดไปก็ไม่ถูกทำ ใน diff คุณเห็นแค่บรรทัดที่เพิ่ม ไม่เห็นว่ามันทำให้การจ่ายเงินช้าลงเท่าไร

ซ้าย ส่วนจ่ายเงินตัดเงินแล้วประกาศว่าจ่ายแล้ว ส่วนงานหลังจ่ายแต่ละอย่างเป็นไฟล์ที่ลงชื่อรอเอง ขวา ส่วนจ่ายเงินส่งใบเสร็จ ส่ง LINE และเปิดสิทธิ์เข้าเรียนเองทีละบรรทัด คุณจะสั่ง AI เพิ่มแต้มสะสม เพิ่มสถิติยอดขาย แล้วเปลี่ยนข้อความ LINE

กล่องบนกระดานนี้ · 5
ส่วนทำอะไรทำไม
กระดานประกาศเหตุการณ์รับลงชื่อ และประกาศเมื่อเกิดเหตุการณ์ตัวหนึ่งล้ม ไม่ลากตัวอื่นไปด้วย
จ่ายเงินตัดเงิน แล้วประกาศว่าจ่ายแล้วซ้ายไม่รู้ว่าใครรอ ขวาเรียกทุกอย่างเอง
รายชื่อคนรอบรรทัดละงานที่ต้องเกิดหลังจ่ายอ่านไฟล์เดียวก็รู้ว่าจ่ายแล้วเกิดอะไรบ้าง
ข้อความ LINEส่งข้อความหลังจ่ายพังเมื่อไร ก็พังแค่ข้อความ LINE
สถิติยอดขายส่งยอดขายเข้าระบบสถิติช้าแค่ไหน ลูกค้าก็ไม่ต้องรอ
2
Observer · เหตุการณ์เดียว คนรอลงชื่อเองคุณจะสั่ง AI ว่าอะไร
2
Observer · เหตุการณ์เดียว คนรอลงชื่อเอง
ตอนที่ 2 · สถานการณ์

ทุกครั้งที่ลูกค้าจ่ายเงิน ร้านส่งใบเสร็จ ส่ง LINE และเปิดสิทธิ์เข้าเรียน ตอนนี้คุณอยากเพิ่มแต้มสะสม อยากเห็นสถิติยอดขาย และอยากให้ข้อความ LINE มีปุ่ม บนฝั่งขวา ทุกงานเริ่มที่การเปิดไฟล์จ่ายเงิน

หลังจ่ายเงินร้านต้องทำอีกหลายอย่าง พอข้อความ LINE ส่งไม่ผ่าน ลูกค้าจ่ายแล้วเข้าเรียนไม่ได้

ประกาศครั้งเดียว · คนรอลงชื่อเอง
ส่วนจ่ายเงินทำทุกอย่างเอง

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

ประกาศครั้งเดียว · คนรอลงชื่อเอง
ส่วนจ่ายเงินทำทุกอย่างเอง
ประกาศครั้งเดียว · คนรอลงชื่อเอง
จ่ายเงิน · ประกาศครั้งเดียว
จ่ายเงินตัดเงิน แล้วประกาศ
ใช้ ← กระดานประกาศเหตุการณ์
ตัดเงินประกาศว่าจ่ายแล้ว
กระดานประกาศเหตุการณ์ลงชื่อกับประกาศไม่ถูกแตะ
ลงชื่อรอเหตุการณ์ประกาศเหตุการณ์
หลังจ่าย · ลงชื่อรอเอง
รายชื่อคนรอรายชื่อคนรอบรรทัดละตัว
ใช้ ← กระดานประกาศเหตุการณ์
รายชื่อคนรอ บรรทัดละตัว
ใบเสร็จทางอีเมลไฟล์ละเรื่อง
ใช้ ← Resend
ส่งใบเสร็จทางอีเมล
ข้อความ LINEไฟล์ละเรื่อง
ใช้ ← LINE
ส่งข้อความ LINE
เปิดสิทธิ์เข้าเรียนไฟล์ละเรื่อง
เปิดสิทธิ์เข้าเรียน
ส่วนจ่ายเงินทำทุกอย่างเอง
จ่ายเงิน · ประกาศครั้งเดียว
จ่ายเงินตัดเงิน แล้วทำทุกอย่างเองในฟังก์ชันเดียว
ใช้ ← Resend, LINE
ตัดเงินส่งใบเสร็จทางอีเมลส่งข้อความ LINEเปิดสิทธิ์เข้าเรียน
หลังจ่าย · ลงชื่อรอเอง
ไม่มี · การจ่ายเงินเรียกทุกอย่างเอง
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลาก ใบเสร็จ ข้อความ LINE เปิดสิทธิ์ แต้มสะสม และสถิติ ไปเป็นไฟล์ละตัวที่ลงชื่อรอ

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ฟังก์ชันเดียวกับที่แก้แดง: พัง เพราะตัวอื่นช้าหรือล้ม

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย ส่วนจ่ายเงินตัดเงินแล้วประกาศว่าจ่ายแล้ว ส่วนใบเสร็จ ข้อความ LINE และเปิดสิทธิ์เข้าเรียน อยู่ไฟล์ละตัว และลงชื่อรอเหตุการณ์นั้นเอง ขวา ไฟล์จ่ายเงินตัดเงิน ส่งใบเสร็จ ส่ง LINE และเปิดสิทธิ์ เรียงกันในที่เดียว

ขั้นที่ 1เพิ่มแต้มสะสม ทุก 100 บาท ได้ 1 แต้ม

ซ้าย AI เพิ่มไฟล์แต้มสะสม กับหนึ่งบรรทัดในรายชื่อคนรอ ทดสอบซ้ำ 2 ตัว ขวา AI เพิ่มแต้มสะสมต่อท้ายในไฟล์จ่ายเงิน แล้วต้องทดสอบซ้ำทั้ง 5 เรื่อง รวมการตัดเงินด้วย รอบนี้ยังไม่พัง

ขั้นที่ 2ส่งยอดขายเข้าระบบสถิติ

ซ้าย AI เพิ่มไฟล์สถิติยอดขาย ส่งช้าแค่ไหน ส่วนจ่ายเงินก็ตอบลูกค้าไปแล้ว ขวา การส่งสถิติรอ 2 ถึง 4 วินาที การจ่ายเงินทั้งก้อนใช้ 9 วินาที หน้าชำระเงินหมดเวลาที่ 8 วินาที ลูกค้ากดจ่ายอีกรอบ แล้วถูกตัดเงินสองครั้ง

ขั้นสุดท้ายเปลี่ยนข้อความ LINE เป็นแบบมีปุ่ม

ซ้าย AI แก้ไฟล์ข้อความ LINE แล้ว LINE ไม่รับข้อความ เพราะรูปแบบผิด พังแค่ข้อความ LINE บันทึกบอกชื่อ ลูกค้ายังเข้าเรียนได้ ขวา ข้อความ LINE ล้มกลางไฟล์จ่ายเงิน การเปิดสิทธิ์ที่อยู่บรรทัดถัดไปไม่ถูกทำ ลูกค้าจ่ายแล้วแต่เข้าเรียนไม่ได้

หลักการ ในภาษาของโค้ด

ของที่ต้องเกิดหลังเหตุการณ์หนึ่ง ให้มาลงชื่อรอเหตุการณ์นั้นเอง ตัวที่ประกาศไม่ต้องรู้ว่าใครรอ ตัวไหนช้าหรือล้ม ก็พังแค่ตัวมัน และต้องมีบันทึกบอกชื่อ

ถามก่อนรับ diffถ้าบรรทัดที่เพิ่มนี้ล้ม หรือช้า 5 วินาที การจ่ายเงินยังผ่านไหม

Observer (Gamma, Helm, Johnson, Vlissides 1994): define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified
3
ตอนที่ 3 · คำของเรา ตัวแปลงต่อผู้ให้บริการย้ายวิดีโอบทเรียนจาก Vimeo ไป Bunny แล้วไม่มีใครเรียนจบ 100%
เรื่องย่อ

วิดีโอบทเรียนทั้งหมดอยู่บน Vimeo คุณอยากย้ายไป Bunny เพราะถูกกว่าครึ่ง ก่อนย้ายอยากได้หน้าคลิปตัวอย่างฟรีอีกหน้า บนฝั่งขวา AI ต้องหาเองว่าโค้ดตรงไหนบ้างที่รู้จัก Vimeo

Vimeo กับ Bunny ไม่ได้ต่างกันแค่ลิงก์ เครื่องเล่นของ Vimeo บอกว่าดูไปกี่เปอร์เซ็นต์ ส่วน Bunny บอกแค่วินาทีที่ดูกับความยาวคลิป ไฟล์ที่อ่านเปอร์เซ็นต์ไม่มีคำว่า Vimeo สักคำ เลยไม่ถูกเปิดตอนย้าย แล้วบันทึกค่าว่างเงียบ ๆ

ซ้าย หน้าเว็บคุยกับคลิปด้วยคำของเราเอง แล้วมีตัวแปลงหนึ่งไฟล์ที่รู้จัก Vimeo ขวา หน้าเรียน หน้าอัปโหลด และส่วนบันทึกความคืบหน้า ต่างคนต่างอ่านข้อมูลแบบของ Vimeo เอง คุณจะสั่ง AI เพิ่มหน้าคลิปตัวอย่าง ย้ายไป Bunny แล้วยกเลิกบัญชี Vimeo

กล่องบนกระดานนี้ · 5
ส่วนทำอะไรทำไม
คำของเรา สำหรับคลิปอัปโหลด ขอลิงก์ฝัง ดูไปแล้วกี่ส่วนหน้าเว็บไม่เห็นชื่อข้อมูลของผู้ให้บริการ
ตัวแปลง Vimeoแปลงข้อมูลของ Vimeo ให้เข้ารูปคำของเรารู้จัก Vimeo ไฟล์เดียว
ตัวแปลง Bunnyแปลงข้อมูลของ Bunny ให้เข้ารูปเดียวกันคิดสัดส่วนที่ดูจากวินาทีหารความยาวให้
จุดต่อสายเลือกว่าใช้ตัวแปลงไหนย้ายผู้ให้บริการคือแก้บรรทัดเดียว
บันทึกความคืบหน้าบันทึกว่าเรียนถึงไหนซ้ายได้ 0 ถึง 1 เสมอ ขวาอ่านเปอร์เซ็นต์ของ Vimeo
3
Adapter · คำของเรา ตัวแปลงต่อผู้ให้บริการคุณจะสั่ง AI ว่าอะไร
3
Adapter · คำของเรา ตัวแปลงต่อผู้ให้บริการ
ตอนที่ 3 · สถานการณ์

วิดีโอบทเรียนทั้งหมดอยู่บน Vimeo คุณอยากย้ายไป Bunny เพราะถูกกว่าครึ่ง ก่อนย้ายอยากได้หน้าคลิปตัวอย่างฟรีอีกหน้า บนฝั่งขวา AI ต้องหาเองว่าโค้ดตรงไหนบ้างที่รู้จัก Vimeo

ย้ายวิดีโอบทเรียนจาก Vimeo ไป Bunny แล้วไม่มีใครเรียนจบ 100%

คำของเรา · ตัวแปลงละผู้ให้บริการ
ทุกหน้าคุยกับ Vimeo ตรง ๆ

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

คำของเรา · ตัวแปลงละผู้ให้บริการ
ทุกหน้าคุยกับ Vimeo ตรง ๆ
คำของเรา · ตัวแปลงละผู้ให้บริการ
คำของเรา
คำของเรา สำหรับคลิปคำของเรา
อัปโหลดคลิปขอลิงก์ฝังคลิปดูไปแล้วกี่ส่วน (0 ถึง 1)
ตัวแปลง · ผู้ให้บริการละไฟล์
ตัวแปลง Vimeoตัวแปลง Vimeo
ใช้ ← คำของเรา สำหรับคลิป, Vimeo
แปลงที่อยู่คลิปของ Vimeo เป็นรหัสใช้ลิงก์ฝังคลิปของ Vimeoแปลงเปอร์เซ็นต์ของ Vimeo เป็นสัดส่วน
ต่อสาย
จุดต่อสายเลือกตัวแปลง
เลือกตัวแปลงที่ใช้
หน้าเว็บ
หน้าเรียนหน้าเรียน
ใช้ ← คำของเรา สำหรับคลิป
แสดงหน้าเรียน
หลังบ้านอัปโหลดคลิปหลังบ้านอัปคลิป
ใช้ ← คำของเรา สำหรับคลิป
บันทึกบทเรียน
บันทึกความคืบหน้าบันทึกว่าเรียนถึงไหน
ใช้ ← คำของเรา สำหรับคลิป
บันทึกว่าเรียนถึงไหน
ทุกหน้าคุยกับ Vimeo ตรง ๆ
คำของเรา
ไม่มี · ใช้คำของ Vimeo ทั้งแอป
ตัวแปลง · ผู้ให้บริการละไฟล์
ไม่มีตัวแปลง · ทุกหน้าคุยกับ Vimeo ตรง ๆ
หน้าเว็บ
หน้าเรียนคุยกับ Vimeo ตรง ๆ
ใช้ ← Vimeo
ฝังคลิปด้วยลิงก์แบบของ Vimeoอ่านเหตุการณ์จากเครื่องเล่นของ Vimeoแสดงหน้าเรียน
หลังบ้านอัปโหลดคลิปคุยกับ Vimeo ตรง ๆ
ใช้ ← Vimeo
อัปโหลดขึ้น Vimeo ตรง ๆเก็บรหัสคลิปแบบของ Vimeoบันทึกบทเรียน
บันทึกความคืบหน้าอ่านข้อมูลแบบของ Vimeo
อ่านเปอร์เซ็นต์จากข้อมูลของ Vimeoบันทึกว่าเรียนถึงไหน
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลากทุกชิ้นที่รู้จัก Vimeo ไปไว้ในตัวแปลง Bunny

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ไฟล์เดียวกับที่แก้แดง: พังในไฟล์ที่ไม่มีใครเปิด

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย หน้าเรียน หน้าอัปโหลด และส่วนบันทึกความคืบหน้า พูดกับคลิปด้วยคำของเรา ส่วนตัวแปลง Vimeo แปลงที่อยู่คลิป ลิงก์ฝัง และเปอร์เซ็นต์ให้ ขวา สามหน้านั้นถือลิงก์ฝัง รหัสคลิป และเปอร์เซ็นต์แบบของ Vimeo เอง

ขั้นที่ 1เพิ่มหน้าคลิปตัวอย่างฟรี

ซ้าย AI เพิ่มหน้าคลิปตัวอย่างที่ขอลิงก์ฝังผ่านคำของเรา ขวา AI เพิ่มหน้าเดียวกัน แต่ก๊อปลิงก์ฝังแบบของ Vimeo มาจากหน้าเรียน รอบนี้ยังไม่พัง ขวามีไฟล์ที่รู้จัก Vimeo เพิ่มเป็น 4 ไฟล์

ขั้นที่ 2ย้ายไป Bunny

ซ้าย AI เพิ่มตัวแปลง Bunny แล้วแก้บรรทัดเดียวที่จุดต่อสาย ขวา AI แก้ลิงก์ฝัง เหตุการณ์เครื่องเล่น การอัปโหลด และรหัสคลิปในสองไฟล์ แต่ไม่มีใครเปิดส่วนบันทึกความคืบหน้า มันอ่านเปอร์เซ็นต์ที่ Bunny ไม่ส่ง เลยบันทึกค่าว่าง และไม่มีใครเรียนจบ 100%

ขั้นสุดท้ายยกเลิกบัญชี Vimeo

ซ้าย ไม่ต้องแตะไฟล์ไหน ตัวแปลง Vimeo ไม่มีใครใช้แล้ว ลบได้ทั้งไฟล์ ขวา ก็ไม่ได้แตะไฟล์ไหน แต่หน้าคลิปตัวอย่างยังเรียก Vimeo อยู่ คลิปตัวอย่างขึ้นจอดำ ไม่มีข้อความผิดพลาด

หลักการ ในภาษาของโค้ด

อย่าให้ชื่อข้อมูลของผู้ให้บริการกระจายไปทั้งแอป ตั้งคำของเราเอง แล้วให้ตัวแปลงหนึ่งไฟล์ต่อผู้ให้บริการ แปลงรหัส หน่วย และเหตุการณ์ให้เข้ารูปนั้น

ถามก่อนรับ diffdiff นี้มีชื่อข้อมูลของผู้ให้บริการ อยู่นอกไฟล์ตัวแปลงไหม

Adapter (Gamma, Helm, Johnson, Vlissides 1994): convert the interface of a class into another interface clients expect; adapter lets classes work together that couldn't otherwise because of incompatible interfaces
4
ตอนที่ 4 · ห่อของเดิม ไม่เปิดของเดิมขอบันทึกเวลา ลองใหม่ และจำผล ให้การอ่านคอร์ส แล้วหน้าชำระเงินสร้างออเดอร์ซ้ำ
เรื่องย่อ

หน้าคอร์ส บอท LINE และหน้าชำระเงิน อ่านข้อมูลคอร์สจากฐานข้อมูล คุณอยากรู้ว่าการอ่านไหนช้า อยากให้ลองใหม่ตอนฐานข้อมูลหลุดช่วงอัปเดตระบบ แล้วอยากจำผลไว้ 60 วินาทีให้หน้าคอร์สกับ LINE บนฝั่งขวา AI เปิดไฟล์คนเรียกทีละไฟล์

โค้ดลองใหม่กับจำผลสั้นจน AI เขียนใหม่ในทุกไฟล์ที่เรียก และแต่ละชุดไม่เหมือนกัน ชุดในหน้าชำระเงินห่อการสร้างออเดอร์เข้าไปในลูปด้วย ใน diff มันดูเป็นแค่ย่อหน้าที่ขยับเข้าไป

ทั้งสองฝั่งอ่านข้อมูลคอร์สผ่านไฟล์เดิมที่ไม่มีใครอยากเปิดแก้ ซ้าย ห่อมันด้วยตัวห่อสามชั้นที่มีรูปเดียวกับของเดิม แล้วต่อชั้นที่จุดต่อสาย ขวา คนเรียกทั้งสามไฟล์เขียนบันทึกเวลา ลองใหม่ และจำผลเอง

กล่องบนกระดานนี้ · 5
ส่วนทำอะไรทำไม
แบบกลางของการอ่านคอร์สอ่านคอร์สตามรหัส และอ่านรายชื่อคอร์สตัวห่อทุกชั้นมีรูปเดียวกับของเดิม
อ่านคอร์สจากฐานข้อมูลของเดิมไม่ถูกเปิดเลยทั้งสามงาน
ตัวห่อลองใหม่ลองใหม่เฉพาะการอ่านห่อการสร้างออเดอร์เข้าไปไม่ได้
ตัวห่อจำผลจำผลไว้ 60 วินาทีอายุของผลที่จำอยู่ที่เดียว
จุดต่อสายต่อชั้นห่อตามลำดับเลือกได้ว่าใครอ่านผ่านตัวจำผล
4
Decorator · ห่อของเดิม ไม่เปิดของเดิมคุณจะสั่ง AI ว่าอะไร
4
Decorator · ห่อของเดิม ไม่เปิดของเดิม
ตอนที่ 4 · สถานการณ์

หน้าคอร์ส บอท LINE และหน้าชำระเงิน อ่านข้อมูลคอร์สจากฐานข้อมูล คุณอยากรู้ว่าการอ่านไหนช้า อยากให้ลองใหม่ตอนฐานข้อมูลหลุดช่วงอัปเดตระบบ แล้วอยากจำผลไว้ 60 วินาทีให้หน้าคอร์สกับ LINE บนฝั่งขวา AI เปิดไฟล์คนเรียกทีละไฟล์

ขอบันทึกเวลา ลองใหม่ และจำผล ให้การอ่านคอร์ส แล้วหน้าชำระเงินสร้างออเดอร์ซ้ำ

ห่อของเดิม · ต่อชั้นที่จุดต่อสาย
คนเรียกเขียนเองทุกไฟล์

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

ห่อของเดิม · ต่อชั้นที่จุดต่อสาย
คนเรียกเขียนเองทุกไฟล์
ห่อของเดิม · ต่อชั้นที่จุดต่อสาย
แบบกลาง · รูปเดียวกัน
แบบกลางของการอ่านคอร์สแบบกลางตัวห่อทุกชั้นมีรูปนี้
อ่านคอร์สตามรหัสอ่านรายชื่อคอร์ส
ของเดิม
อ่านคอร์สจากฐานข้อมูลของเดิมไม่ถูกเปิด
ใช้ ← แบบกลางของการอ่านคอร์ส
อ่านคอร์สตามรหัสอ่านรายชื่อคอร์ส
ตัวห่อ
ต่อสาย
จุดต่อสายต่อชั้นห่อ
ต่อชั้นห่อ แล้วส่งให้คนเรียก
คนเรียก · หน้าคอร์ส LINE หน้าชำระเงิน
หน้าคอร์สไม่รู้ว่าถูกห่อกี่ชั้น
ใช้ ← แบบกลางของการอ่านคอร์ส
แสดงหน้าคอร์ส
บอท LINEไม่รู้ว่าถูกห่อกี่ชั้น
ใช้ ← แบบกลางของการอ่านคอร์ส
ตอบใน LINE
หน้าชำระเงินไม่รู้ว่าถูกห่อกี่ชั้น
ใช้ ← แบบกลางของการอ่านคอร์ส
แสดงหน้าชำระเงิน
คนเรียกเขียนเองทุกไฟล์
ของเดิม
อ่านคอร์สจากฐานข้อมูลของเดิมไม่ถูกเปิด
อ่านคอร์สตามรหัสอ่านรายชื่อคอร์ส
ตัวห่อ
ไม่มีตัวห่อ · คนเรียกเขียนเอง
คนเรียก · หน้าคอร์ส LINE หน้าชำระเงิน
หน้าคอร์สห่อเอง
ใช้ ← อ่านคอร์สจากฐานข้อมูล
แสดงหน้าคอร์ส
บอท LINEห่อเอง
ใช้ ← อ่านคอร์สจากฐานข้อมูล
ตอบใน LINE
หน้าชำระเงินห่อเอง
ใช้ ← อ่านคอร์สจากฐานข้อมูล
แสดงหน้าชำระเงิน
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลาก บันทึกเวลา ลองใหม่ และจำผล จากทุกไฟล์ ไปเป็นตัวห่อ

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ไฟล์เดียวกับที่แก้แดง: สำเนาที่เขียนต่างกันแล้วพัง

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย คนเรียกทั้งสามรับตัวอ่านคอร์สมาจากจุดต่อสาย และไม่รู้ว่ามันถูกห่อกี่ชั้น ขวา คนเรียกทั้งสามเรียกไฟล์อ่านฐานข้อมูลตรง ๆ

ขั้นที่ 1บันทึกว่าการอ่านไหนช้า

ซ้าย AI เพิ่มตัวห่อบันทึกเวลา กับหนึ่งบรรทัดที่จุดต่อสาย ทดสอบซ้ำ 2 ตัว ขวา AI เพิ่มการบันทึกในทั้งสามไฟล์ ไฟล์ละรูปแบบ ทดสอบซ้ำ 6 ตัว รอบนี้ยังไม่พัง

ขั้นที่ 2ลองใหม่ 3 ครั้งตอนฐานข้อมูลหลุด

ซ้าย AI เพิ่มตัวห่อลองใหม่ ที่ห่อแค่การอ่าน ขวา AI เพิ่มลองใหม่ 3 ครั้งในทั้งสามไฟล์ ในหน้าชำระเงิน ลูปห่อการสร้างออเดอร์เข้าไปด้วย ส่งไปจ่ายเงินพังหนึ่งครั้ง ก็ได้ออเดอร์ใบที่สอง

ขั้นสุดท้ายจำข้อมูลคอร์สไว้ 60 วินาที

ซ้าย AI เพิ่มตัวห่อจำผล แล้วจุดต่อสายให้หน้าคอร์สกับ LINE อ่านผ่านมัน ส่วนหน้าชำระเงินอ่านราคาสด ขวา AI เพิ่มการจำผลในสองไฟล์ ชุดในบอท LINE ลืมเช็กอายุ ราคาเก่าค้างอยู่จนกว่าจะเปิดระบบใหม่

หลักการ ในภาษาของโค้ด

อยากเพิ่มบันทึกเวลา ลองใหม่ หรือจำผล ให้ของที่มีอยู่ ให้เขียนตัวห่อที่มีรูปเดียวกับของเดิม แล้วต่อมันที่จุดต่อสาย ทั้งของเดิมและคนเรียกไม่ต้องถูกเปิด

ถามก่อนรับ diffโค้ดลองใหม่หรือจำผลใน diff นี้ ถูกเขียนซ้ำในกี่ไฟล์ และแต่ละชุดห่ออะไรเข้าไปบ้าง

Decorator (Gamma, Helm, Johnson, Vlissides 1994): attach additional responsibilities to an object dynamically; decorators provide a flexible alternative to subclassing for extending functionality
5
ตอนที่ 5 · เลือกแบบเอกสารที่เดียวลูกค้าบริษัทต้องได้ใบกำกับภาษีแบบ e-Tax แต่ใบเสร็จที่ส่งทาง LINE ยังเป็น PDF แบบเดิม
เรื่องย่อ

ร้านคอร์สออกใบเสร็จให้ลูกค้าทั่วไป และออกใบกำกับภาษีให้ลูกค้าบริษัท ใบเสร็จออกได้สามทาง คือหน้าดาวน์โหลด อีเมลหลังจ่าย และบอท LINE เดือนนี้คุณมีงานสามข้อ ทุกข้อแตะคำถามเดียว ว่าใครได้เอกสารแบบไหน

บนฝั่งขวา คำตอบของคำถามนี้ถูกเขียนไว้สามที่ และเขียนไม่เหมือนกัน บอท LINE เช็กจากช่องชื่อบริษัท แทนเลขผู้เสียภาษี พอ AI ค้นคำว่าเลขผู้เสียภาษี มันเจอแค่สองไฟล์ diff ดูครบ เพราะไฟล์ที่สามไม่อยู่ใน diff เลย

ทั้งสองฝั่งออกใบเสร็จจากสามที่ คือหน้าดาวน์โหลด อีเมล และบอท LINE ซ้าย ทุกที่ขอเอกสารจากจุดเลือกจุดเดียว แล้วไม่ต้องรู้ว่าได้แบบไหน ขวา ทุกที่เลือกเองว่าจะสร้างใบเสร็จหรือใบกำกับภาษี คุณจะสั่ง AI เพิ่มใบเสร็จภาษาอังกฤษ เปลี่ยนใบกำกับภาษีเป็น e-Tax แล้วเพิ่มปุ่มส่งใบเสร็จซ้ำในหน้าหลังบ้าน

กล่องบนกระดานนี้ · 4
ส่วนทำอะไรทำไม
จุดเลือกแบบเอกสารดูข้อมูลลูกค้า แล้วเลือกว่าสร้างเอกสารแบบไหนกฎว่าใครได้อะไร อยู่ที่นี่ที่เดียว
ใบกำกับภาษี PDFเอกสารแบบหนึ่งเอกสารแต่ละแบบเป็นไฟล์ของตัวเอง ไม่รู้ว่าใครขอ
บอท LINEส่งใบเสร็จทาง LINEขวา เขียนเงื่อนไขเองด้วยข้อมูลอีกช่อง
ปุ่มส่งใบเสร็จซ้ำไฟล์ใหม่ในหน้าหลังบ้านซ้ายได้กฎครบ ขวาได้กฎจากความจำของ AI
5
Factory Method · เลือกแบบเอกสารที่เดียวคุณจะสั่ง AI ว่าอะไร
5
Factory Method · เลือกแบบเอกสารที่เดียว
ตอนที่ 5 · สถานการณ์

ร้านคอร์สออกใบเสร็จให้ลูกค้าทั่วไป และออกใบกำกับภาษีให้ลูกค้าบริษัท ใบเสร็จออกได้สามทาง คือหน้าดาวน์โหลด อีเมลหลังจ่าย และบอท LINE เดือนนี้คุณมีงานสามข้อ ทุกข้อแตะคำถามเดียว ว่าใครได้เอกสารแบบไหน

ลูกค้าบริษัทต้องได้ใบกำกับภาษีแบบ e-Tax แต่ใบเสร็จที่ส่งทาง LINE ยังเป็น PDF แบบเดิม

เลือกแบบเอกสารที่เดียว
ทุกไฟล์เลือกแบบเอกสารเอง

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

เลือกแบบเอกสารที่เดียว
ทุกไฟล์เลือกแบบเอกสารเอง
เลือกแบบเอกสารที่เดียว
สร้างเอกสาร · แบบละไฟล์
จุดเลือกแบบเอกสารที่เดียวที่ตัดสินว่าใครได้แบบไหน
ใช้ ← ใบเสร็จ PDF, ใบกำกับภาษี PDF
ดูข้อมูลลูกค้า แล้วเลือกแบบเอกสาร
ใบเสร็จ PDFเอกสารแบบหนึ่งไฟล์หนึ่ง
สร้างไฟล์ใบเสร็จ
ใบกำกับภาษี PDFเอกสารแบบหนึ่งไฟล์หนึ่ง
สร้างไฟล์ใบกำกับภาษี
คนขอเอกสาร · แค่ขอ ไม่เลือกเอง
หน้าดาวน์โหลดใบเสร็จแค่ขอเอกสาร
ใช้ ← จุดเลือกแบบเอกสาร
ลูกค้ากดดาวน์โหลด ขอเอกสารแล้วส่งไฟล์ให้
อีเมลหลังจ่ายแค่ขอเอกสาร
ใช้ ← จุดเลือกแบบเอกสาร
ขอเอกสาร แล้วแนบไปกับอีเมล
บอท LINEแค่ขอเอกสาร
ใช้ ← จุดเลือกแบบเอกสาร
ขอเอกสาร แล้วส่งใน LINE
ทุกไฟล์เลือกแบบเอกสารเอง
สร้างเอกสาร · แบบละไฟล์
ใบเสร็จ PDFเอกสารแบบหนึ่งไฟล์หนึ่ง
สร้างไฟล์ใบเสร็จ
ใบกำกับภาษี PDFเอกสารแบบหนึ่งไฟล์หนึ่ง
สร้างไฟล์ใบกำกับภาษี
คนขอเอกสาร · แค่ขอ ไม่เลือกเอง
หน้าดาวน์โหลดใบเสร็จเลือกแบบเอกสารเอง จากเลขผู้เสียภาษี
ใช้ ← ใบเสร็จ PDF, ใบกำกับภาษี PDF
ลูกค้ากดดาวน์โหลด ขอเอกสารแล้วส่งไฟล์ให้ถ้ามีเลขผู้เสียภาษี ใบกำกับภาษี ไม่งั้นใบเสร็จ
อีเมลหลังจ่ายเลือกแบบเอกสารเอง จากเลขผู้เสียภาษี
ใช้ ← ใบเสร็จ PDF, ใบกำกับภาษี PDF
ขอเอกสาร แล้วแนบไปกับอีเมลถ้ามีเลขผู้เสียภาษี ใบกำกับภาษี ไม่งั้นใบเสร็จ
บอท LINEเลือกเอง จากช่องชื่อบริษัท
ใช้ ← ใบเสร็จ PDF, ใบกำกับภาษี PDF
ขอเอกสาร แล้วส่งใน LINEถ้ามีชื่อบริษัท ใบกำกับภาษี ไม่งั้นใบเสร็จ
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลากเงื่อนไขเลือกแบบเอกสารทั้งสี่ชุด ไปรวมไว้ที่จุดเลือกจุดเดียว

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ไฟล์เดียวกับที่แก้แดง: ไฟล์ที่ AI ค้นไม่เจอ หรือเขียนกฎจากความจำ

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย จุดเลือกแบบเอกสารดูข้อมูลลูกค้าแล้วตัดสิน ส่วนหน้าดาวน์โหลด อีเมล และบอท LINE แค่ขอเอกสาร ขวา ทั้งสามไฟล์มีเงื่อนไขของตัวเอง ว่าถ้ามีเลขผู้เสียภาษี สร้างใบกำกับภาษี ไม่งั้นสร้างใบเสร็จ

ขั้นที่ 1ใบเสร็จภาษาอังกฤษให้ลูกค้าต่างชาติ

ซ้าย AI เพิ่มไฟล์ใบเสร็จภาษาอังกฤษ แล้วแก้จุดเลือกหนึ่งบรรทัด ขวา AI เพิ่มไฟล์เดียวกัน แล้วต้องแก้เงื่อนไขอีกสามไฟล์ ทดสอบซ้ำ 7 ตัว รอบนี้ AI หาเจอครบ

ขั้นที่ 2ลูกค้าบริษัทต้องได้ e-Tax

ซ้าย AI เพิ่มไฟล์ใบกำกับภาษีแบบ e-Tax แล้วแก้จุดเลือกอีกหนึ่งบรรทัด ขวา AI ค้นคำว่าเลขผู้เสียภาษี แล้วแก้หน้าดาวน์โหลดกับอีเมล แต่บอท LINE เช็กจากชื่อบริษัท เลยไม่โผล่ในผลค้น บริษัทที่ซื้อผ่าน LINE ยังได้ PDF แบบเดิม

ขั้นสุดท้ายปุ่มส่งใบเสร็จซ้ำในหน้าหลังบ้าน

ซ้าย AI เพิ่มไฟล์ปุ่มส่งซ้ำ ที่ขอเอกสารจากจุดเลือก แล้วได้ภาษาอังกฤษกับ e-Tax ทันที ขวา ไฟล์ใหม่มีเงื่อนไขชุดที่สี่ ที่ AI เขียนจากความจำ ไม่มีภาษาอังกฤษ และไม่มี e-Tax

หลักการ ในภาษาของโค้ด

ให้มีที่เดียวที่ตัดสินว่าจะสร้างของแบบไหน คนขอได้ของไปใช้ ไม่ต้องรู้ว่ามันเป็นแบบไหน

ถามก่อนรับ diffdiff นี้มีการเลือกว่าจะสร้างของแบบไหน อยู่นอกจุดเลือกหรือเปล่า

Factory Method (Gamma, Helm, Johnson, Vlissides 1994): define an interface for creating an object, but let subclasses decide which class to instantiate — บนกระดานนี้เป็นรูปที่เจอบ่อยที่สุด คือฟังก์ชันเดียวที่เลือกว่าจะสร้างแบบไหน
6
ตอนที่ 6 · ทางเข้าเดียวของการซื้อลูกค้าจ่ายผ่าน LINE แล้วไม่ได้คอร์ส เพราะแก้ขั้นตอนซื้อแค่ในเว็บ
เรื่องย่อ

ร้านขายคอร์สบนเว็บและบอท LINE การซื้อหนึ่งครั้งมีห้าขั้น คือคิดราคา ตัดเงิน เปิดคอร์ส ส่งอีเมล และแจ้งทาง LINE สัปดาห์นี้คุณอยากเพิ่มคูปอง แล้วมีลูกค้าแจ้งมาจากเว็บว่าคอร์สเต็ม แต่โดนตัดเงิน

บนฝั่งขวา ห้าขั้นนี้ถูกเขียนสองรอบ คนละลำดับ AI แก้ในไฟล์ที่ลูกค้าแจ้งมา คือหน้าเว็บ ส่วนบอทยังเหมือนเดิม พอมีช่องทางที่สาม AI ก๊อปจากบอท แล้วก๊อปจุดที่ยังไม่ได้แก้มาด้วย

การซื้อหนึ่งครั้งต้องผ่านห้าส่วน คือคิดราคา ตัดเงิน เปิดคอร์ส ส่งอีเมล และแจ้งทาง LINE ซ้าย เว็บและบอทส่งคำสั่งซื้อเข้าทางเข้าเดียว ขวา หน้าเว็บกับบอท LINE เรียกห้าส่วนเอง คนละลำดับ คุณจะสั่ง AI เพิ่มคูปอง เพิ่มการคืนเงินเมื่อเปิดคอร์สไม่สำเร็จ แล้วเพิ่มช่องทาง Messenger

กล่องบนกระดานนี้ · 5
ส่วนทำอะไรทำไม
ทางเข้าของการซื้อรับคำสั่งซื้อ แล้วทำห้าขั้นตามลำดับลำดับห้าขั้นกับการคืนเงิน อยู่ที่นี่ที่เดียว
ตัดเงินตัดเงิน และคืนเงินช่องทางขายไม่ต้องรู้ว่ามันมีอยู่
ซื้อผ่านเว็บรับคำสั่งซื้อจากหน้าเว็บขวา เรียกห้าส่วนเองตามลำดับของตัวเอง
ซื้อผ่าน LINEรับคำสั่งซื้อจากแชต LINEขวา แจ้งซื้อสำเร็จก่อนเปิดคอร์ส และไม่มีคืนเงิน
ซื้อผ่าน Messengerช่องทางใหม่ ไฟล์ใหม่ซ้ายบรรทัดเดียว ขวาก๊อปทั้งลำดับมา
6
Facade · ทางเข้าเดียวของการซื้อคุณจะสั่ง AI ว่าอะไร
6
Facade · ทางเข้าเดียวของการซื้อ
ตอนที่ 6 · สถานการณ์

ร้านขายคอร์สบนเว็บและบอท LINE การซื้อหนึ่งครั้งมีห้าขั้น คือคิดราคา ตัดเงิน เปิดคอร์ส ส่งอีเมล และแจ้งทาง LINE สัปดาห์นี้คุณอยากเพิ่มคูปอง แล้วมีลูกค้าแจ้งมาจากเว็บว่าคอร์สเต็ม แต่โดนตัดเงิน

ลูกค้าจ่ายผ่าน LINE แล้วไม่ได้คอร์ส เพราะแก้ขั้นตอนซื้อแค่ในเว็บ

ทุกช่องทางเข้าทางเดียว
แต่ละช่องทางเรียกห้าส่วนเอง

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

ทุกช่องทางเข้าทางเดียว
แต่ละช่องทางเรียกห้าส่วนเอง
ทุกช่องทางเข้าทางเดียว
ทางเข้าเดียว · ลำดับอยู่ที่นี่
ทางเข้าของการซื้อทางเข้าเดียวทุกช่องทางเรียกที่นี่
ใช้ ← คิดราคา, ตัดเงิน, เปิดคอร์สให้ลูกค้า, อีเมลเข้าเรียน, แจ้งทาง LINE
คิดราคา ตัดเงิน เปิดคอร์ส ส่งอีเมล แจ้ง LINE ตามลำดับนี้เสมอ
ระบบข้างหลัง · ห้าส่วน
คิดราคาทำเรื่องเดียว
คิดราคาสุทธิ
ตัดเงินทำเรื่องเดียว
ตัดเงินคืนเงิน
เปิดคอร์สให้ลูกค้าทำเรื่องเดียว
เปิดสิทธิ์เข้าเรียน
อีเมลเข้าเรียนทำเรื่องเดียว
ส่งอีเมลวิธีเข้าเรียน
แจ้งทาง LINEทำเรื่องเดียว
ส่งข้อความซื้อสำเร็จ
ช่องทางขาย
ซื้อผ่านเว็บส่งคำสั่งซื้อเข้าทางเข้าเดียว
ใช้ ← ทางเข้าของการซื้อ
รับคำสั่งซื้อจากหน้าเว็บ
ซื้อผ่าน LINEส่งคำสั่งซื้อเข้าทางเข้าเดียว
ใช้ ← ทางเข้าของการซื้อ
รับคำสั่งซื้อจากแชต LINE
แต่ละช่องทางเรียกห้าส่วนเอง
ทางเข้าเดียว · ลำดับอยู่ที่นี่
ไม่มีทางเข้าเดียว · ทุกช่องทางเรียกห้าส่วนเอง
ระบบข้างหลัง · ห้าส่วน
คิดราคาทำเรื่องเดียว
คิดราคาสุทธิ
ตัดเงินทำเรื่องเดียว
ตัดเงินคืนเงิน
เปิดคอร์สให้ลูกค้าทำเรื่องเดียว
เปิดสิทธิ์เข้าเรียน
อีเมลเข้าเรียนทำเรื่องเดียว
ส่งอีเมลวิธีเข้าเรียน
แจ้งทาง LINEทำเรื่องเดียว
ส่งข้อความซื้อสำเร็จ
ช่องทางขาย
ซื้อผ่านเว็บเรียกห้าส่วนเอง
ใช้ ← คิดราคา, ตัดเงิน, เปิดคอร์สให้ลูกค้า, อีเมลเข้าเรียน, แจ้งทาง LINE
รับคำสั่งซื้อจากหน้าเว็บคิดราคา ตัดเงิน เปิดคอร์ส อีเมล แล้วแจ้ง LINE
ซื้อผ่าน LINEเรียกห้าส่วนเองอีกลำดับ
ใช้ ← คิดราคา, ตัดเงิน, เปิดคอร์สให้ลูกค้า, อีเมลเข้าเรียน, แจ้งทาง LINE
รับคำสั่งซื้อจากแชต LINEคิดราคา ตัดเงิน แจ้ง LINE ก่อน แล้วค่อยเปิดคอร์ส อีเมล
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลากลำดับห้าขั้นของทุกช่องทาง และการคืนเงิน ไปรวมไว้ที่ทางเข้าเดียว

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ไฟล์เดียวกับที่แก้แดง: ช่องทางที่ลำดับเพี้ยน

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย ทางเข้าของการซื้อทำห้าขั้นตามลำดับเดียว เว็บกับบอทแค่ส่งคำสั่งซื้อเข้ามา ขวา หน้าเว็บทำ คิดราคา ตัดเงิน เปิดคอร์ส อีเมล แล้วแจ้ง LINE ส่วนบอทแจ้ง LINE ก่อน แล้วค่อยเปิดคอร์ส บอทเลยบอกลูกค้าว่าซื้อสำเร็จ ก่อนที่จะได้คอร์ส

ขั้นที่ 1เพิ่มคูปองส่วนลด

ซ้าย AI แก้ส่วนคิดราคาให้รับคูปอง แล้วแก้ทางเข้าให้ส่งคูปองต่อ แตะ 2 ไฟล์ ขวา AI แก้ส่วนคิดราคา แล้วต้องแก้ทั้งหน้าเว็บและบอท แตะ 3 ไฟล์ ทดสอบซ้ำ 5 ตัว รอบนี้ยังไม่พัง

ขั้นที่ 2คอร์สเต็ม ต้องคืนเงิน

ซ้าย AI เพิ่มการคืนเงินเมื่อเปิดคอร์สไม่สำเร็จ ที่ทางเข้าที่เดียว ทุกช่องทางได้ทันที ขวา AI เพิ่มการคืนเงินในหน้าเว็บ ตามที่ลูกค้าแจ้ง ส่วนบอทยังไม่มี ลูกค้า LINE จ่ายแล้ว ได้ข้อความว่าซื้อสำเร็จ แต่ไม่ได้คอร์ส

ขั้นสุดท้ายเพิ่มขายผ่าน Messenger

ซ้าย AI เพิ่มไฟล์ช่องทาง Messenger ที่ส่งคำสั่งซื้อเข้าทางเข้าเดียว บรรทัดเดียว ได้คูปองและการคืนเงินครบ ขวา AI ก๊อปลำดับจากบอท LINE มาเป็นช่องทางใหม่ และก๊อปจุดที่ไม่มีคืนเงินมาด้วย

หลักการ ในภาษาของโค้ด

งานที่ต้องเรียกหลายส่วนตามลำดับ ให้มีทางเข้าเดียวที่คนเรียกใช้ ลำดับ การคืนเงิน และขั้นที่ต้องทำทุกครั้ง อยู่หลังทางเข้านั้นที่เดียว

ถามก่อนรับ diffไฟล์ช่องทางนี้เรียกส่วนข้างหลังเองมากกว่าหนึ่งส่วนหรือเปล่า ถ้าใช่ ลำดับตรงกับช่องทางอื่นไหม

Facade (Gamma, Helm, Johnson, Vlissides 1994): provide a unified interface to a set of interfaces in a subsystem; Facade defines a higher-level interface that makes the subsystem easier to use
7
ตอนที่ 7 · ปุ่มหลังบ้านเป็นคำสั่งกดย้ายนักเรียนผิดรุ่น 30 คน แต่ไม่มีบันทึกว่าเดิมอยู่รุ่นไหน
เรื่องย่อ

คุณใช้หน้าหลังบ้านทุกวัน กดคืนเงิน ต่ออายุคอร์ส และย้ายนักเรียนไปรุ่นถัดไป ฝ่ายบัญชีขอดูว่าใครกดคืนเงินเมื่อไร แล้ววันศุกร์คุณกดย้ายนักเรียน 30 คนไปผิดรุ่น

บนฝั่งขวา การกดปุ่มหนึ่งครั้งไม่เหลืออะไรไว้ นอกจากผลของมัน บันทึกที่เติมทีหลังบอกแค่ปลายทาง ไม่บอกว่าเดิมเป็นยังไง AI เลยต้องเดาตอนย้อน และการลองใหม่ที่เขียนเองในปุ่มคืนเงิน ทำให้คืนเงินซ้ำ

หน้าหลังบ้านมีสามปุ่ม คือคืนเงิน ต่ออายุคอร์ส และย้ายนักเรียนไปรุ่นอื่น ซ้าย ทุกปุ่มสร้างคำสั่งหนึ่งชิ้น แล้วส่งให้คนรันคนเดียว ขวา ทุกปุ่มลงมือเองตรง ๆ คุณจะสั่ง AI เพิ่มบันทึกว่าใครกด เพิ่มการลองใหม่ตอนคืนเงินล้ม แล้วย้อนการย้ายรุ่นที่กดผิด

กล่องบนกระดานนี้ · 4
ส่วนทำอะไรทำไม
คนรันคำสั่งทุกปุ่มส่งคำสั่งมาที่นี่บันทึก ต่อคิว ลองใหม่ และย้อน เขียนครั้งเดียว
คำสั่งย้ายรุ่นจำรุ่นเดิมและรุ่นใหม่ไว้ในตัวมีข้อมูลพอให้ย้อนได้เอง
คำสั่งคืนเงินมีรหัสของตัวเองลองใหม่กี่รอบก็คืนเงินครั้งเดียว
ปุ่มคืนเงินปุ่มในหน้าหลังบ้านขวา สั่งระบบจ่ายเงินตรง ๆ ไม่เหลือร่องรอย
7
Command · ปุ่มหลังบ้านเป็นคำสั่งคุณจะสั่ง AI ว่าอะไร
7
Command · ปุ่มหลังบ้านเป็นคำสั่ง
ตอนที่ 7 · สถานการณ์

คุณใช้หน้าหลังบ้านทุกวัน กดคืนเงิน ต่ออายุคอร์ส และย้ายนักเรียนไปรุ่นถัดไป ฝ่ายบัญชีขอดูว่าใครกดคืนเงินเมื่อไร แล้ววันศุกร์คุณกดย้ายนักเรียน 30 คนไปผิดรุ่น

กดย้ายนักเรียนผิดรุ่น 30 คน แต่ไม่มีบันทึกว่าเดิมอยู่รุ่นไหน

ปุ่มสร้างคำสั่ง · คนรันคนเดียว
ทุกปุ่มลงมือเองตรง ๆ

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

ปุ่มสร้างคำสั่ง · คนรันคนเดียว
ทุกปุ่มลงมือเองตรง ๆ
ปุ่มสร้างคำสั่ง · คนรันคนเดียว
ปุ่มในหน้าหลังบ้าน
ปุ่มคืนเงินสร้างคำสั่ง แล้วส่งให้คนรัน
ใช้ ← คนรันคำสั่ง
กดปุ่ม สร้างคำสั่งคืนเงิน ส่งให้คนรัน
ปุ่มต่ออายุคอร์สสร้างคำสั่ง แล้วส่งให้คนรัน
ใช้ ← คนรันคำสั่ง
กดปุ่ม สร้างคำสั่งต่ออายุ ส่งให้คนรัน
ปุ่มย้ายรุ่นสร้างคำสั่ง แล้วส่งให้คนรัน
ใช้ ← คนรันคำสั่ง
กดปุ่ม สร้างคำสั่งย้ายรุ่น ส่งให้คนรัน
คนรันคำสั่ง · ที่เดียว
คนรันคำสั่งทุกปุ่มผ่านที่นี่
ใช้ ← แบบกลางของคำสั่ง
บันทึกว่าใครสั่งอะไร แล้วรันย้อนคำสั่งตามรหัส
คำสั่ง · ปุ่มละไฟล์
แบบกลางของคำสั่งทุกคำสั่งมีรูปนี้
ทุกคำสั่งรันได้คำสั่งที่ย้อนได้ บอกวิธีย้อนของตัวเอง
คำสั่งคืนเงินมีรหัสของตัวเอง
ใช้ ← แบบกลางของคำสั่ง
คืนเงินตามรหัสคำสั่ง
คำสั่งต่ออายุจำวันหมดอายุเดิม
ใช้ ← แบบกลางของคำสั่ง
ต่ออายุอีก 30 วันกลับไปวันหมดอายุเดิม
คำสั่งย้ายรุ่นจำรุ่นเดิมและรุ่นใหม่
ใช้ ← แบบกลางของคำสั่ง
ย้ายนักเรียนไปรุ่นใหม่
ทุกปุ่มลงมือเองตรง ๆ
ปุ่มในหน้าหลังบ้าน
ปุ่มคืนเงินสั่งระบบจ่ายเงินตรง ๆ
กดปุ่มคืนเงินสั่งระบบจ่ายเงินคืนเงิน
ปุ่มต่ออายุคอร์สแก้ฐานข้อมูลตรง ๆ
กดปุ่มต่ออายุแก้วันหมดอายุในฐานข้อมูลตรง ๆ
ปุ่มย้ายรุ่นแก้ฐานข้อมูลตรง ๆ
กดปุ่มย้ายรุ่นแก้รุ่นในฐานข้อมูลตรง ๆ
คนรันคำสั่ง · ที่เดียว
ไม่มีคนรันกลาง · ทุกปุ่มทำเอง
คำสั่ง · ปุ่มละไฟล์
ไม่มีคำสั่งเป็นชิ้น · ไม่มีอะไรให้บันทึก ต่อคิว หรือย้อน
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลากสิ่งที่ปุ่มลงมือเอง ไปเป็นคำสั่ง ลากการลองใหม่ ไปไว้ที่คนรันคำสั่ง

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ไฟล์เดียวกับที่แก้แดง: คืนเงินซ้ำ หรือย้อนผิด

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย ปุ่มทั้งสามสร้างคำสั่ง เช่นคำสั่งย้ายรุ่นที่มีชื่อนักเรียน รุ่นเดิม และรุ่นใหม่ แล้วส่งให้คนรันคำสั่ง ขวา ปุ่มทั้งสามสั่งระบบจ่ายเงิน หรือแก้ฐานข้อมูลตรง ๆ จากไฟล์ของตัวเอง

ขั้นที่ 1ฝ่ายบัญชีขอบันทึกว่าใครกดอะไร

ซ้าย AI แก้คนรันคำสั่งบรรทัดเดียว ทุกคำสั่งถูกบันทึกพร้อมข้อมูลของมัน รวมปุ่มที่ยังไม่ได้สร้าง ขวา AI เติมบันทึกทีละปุ่ม สามไฟล์ ทดสอบซ้ำ 6 ตัว รอบนี้ยังไม่พัง

ขั้นที่ 2คืนเงินล้มตอนหมดเวลา ให้ลองใหม่

ซ้าย AI แก้คนรันคำสั่งให้ต่อคิว แล้วลองใหม่ด้วยรหัสคำสั่งเดิม ระบบจ่ายเงินเห็นรหัสซ้ำเลยไม่คืนซ้ำ ขวา AI เขียนลองใหม่ 3 ครั้งในปุ่มคืนเงิน รอบแรกหมดเวลา แต่เงินคืนไปแล้ว คำสั่งคืนเงินเลยถูกส่งซ้ำ ลูกค้าได้เงินคืนสองรอบ

ขั้นสุดท้ายย้อนการย้ายรุ่นที่กดผิด

ซ้าย AI เพิ่มวิธีย้อนในคำสั่งย้ายรุ่น คำสั่งจำรุ่นเดิมไว้แล้ว เลยย้ายกลับครบ 30 คน ขวา บันทึกบอกแค่รุ่นปลายทาง AI เขียนปุ่มย้อนที่ย้ายทุกคนกลับไปรุ่นก่อนหน้า ผิด 12 คน ที่มาจากรุ่นอื่น

หลักการ ในภาษาของโค้ด

ให้การกดปุ่มในหน้าหลังบ้านเป็นของชิ้นหนึ่ง ที่มีชื่อ มีข้อมูล และมีคนรันคนเดียว พอมันเป็นของ มันถูกบันทึก ต่อคิว ลองใหม่ และย้อนได้ ที่คนรันที่เดียว

ถามก่อนรับ diffปุ่มใหม่นี้ลงมือเองตรง ๆ หรือส่งคำสั่งผ่านคนรันเดียวกับปุ่มอื่น ถ้ากดผิด จะย้อนจากข้อมูลอะไร

Command (Gamma, Helm, Johnson, Vlissides 1994): encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations
8
ตอนที่ 8 · ล็อกลำดับขั้นไว้ที่เดียวแก้การตัดยอดคืนเงินในไฟล์ CSV แล้ว แต่ Google Sheets กับระบบบัญชียังจ่ายผู้สอนเกิน
เรื่องย่อ

ทุกสิ้นเดือนร้านคอร์สจ่ายเงินให้ผู้สอน ยอดต้องออกเป็นไฟล์ CSV ให้ฝ่ายบัญชี และลง Google Sheets ให้ผู้สอนดู เดือนนี้ต้องส่งเข้าระบบบัญชีด้วย ทุกปลายทางทำห้าขั้นเหมือนกัน คือดึงยอดขาย ตัดยอดคืนเงิน คิดค่าธรรมเนียม จัดรูปแบบ แล้วส่ง

บนฝั่งขวา สามขั้นแรกถูกก๊อปไว้ในทุกไฟล์ ฝ่ายบัญชีเจอว่าคืนเงินบางส่วนยังถูกนับเป็นยอดขายในไฟล์ CSV AI แก้ในไฟล์ CSV ตามที่แจ้งมา อีกสองที่ยังจ่ายเกินต่อไป และไม่มีอะไรเตือน

สิ้นเดือนร้านส่งยอดจ่ายผู้สอนออกไปหลายปลายทาง ทุกปลายทางทำห้าขั้นเหมือนกัน ซ้าย ลำดับห้าขั้นล็อกไว้ที่เดียว ไฟล์ปลายทางเขียนแค่จัดรูปแบบกับส่งออก ขวา แต่ละปลายทางเป็นไฟล์ที่เขียนครบห้าขั้นเอง คุณจะสั่ง AI เพิ่มปลายทางระบบบัญชี แก้การตัดยอดคืนเงิน แล้วเพิ่มการหักภาษี ณ ที่จ่าย 3%

กล่องบนกระดานนี้ · 4
ส่วนทำอะไรทำไม
ลำดับขั้นส่งยอดจ่ายผู้สอนลำดับห้าขั้น และสามขั้นที่เหมือนกันการตัดยอดคืนเงินมีที่เดียว
ไฟล์ CSV ให้บัญชีปลายทางหนึ่ง เขียนแค่จัดรูปแบบกับส่งออกไม่มีทางข้ามขั้นหรือสลับลำดับ
ไฟล์ส่งยอดเป็น CSVห้าขั้นครบในไฟล์ขวา เป็นต้นฉบับที่ถูกก๊อปต่อ
ไฟล์ส่งยอดลง Google Sheetsก๊อปมาจากไฟล์ CSVขวา ต้นฉบับถูกแก้ แต่สำเนาไม่ได้ตาม
8
Template Method · ล็อกลำดับขั้นไว้ที่เดียวคุณจะสั่ง AI ว่าอะไร
8
Template Method · ล็อกลำดับขั้นไว้ที่เดียว
ตอนที่ 8 · สถานการณ์

ทุกสิ้นเดือนร้านคอร์สจ่ายเงินให้ผู้สอน ยอดต้องออกเป็นไฟล์ CSV ให้ฝ่ายบัญชี และลง Google Sheets ให้ผู้สอนดู เดือนนี้ต้องส่งเข้าระบบบัญชีด้วย ทุกปลายทางทำห้าขั้นเหมือนกัน คือดึงยอดขาย ตัดยอดคืนเงิน คิดค่าธรรมเนียม จัดรูปแบบ แล้วส่ง

แก้การตัดยอดคืนเงินในไฟล์ CSV แล้ว แต่ Google Sheets กับระบบบัญชียังจ่ายผู้สอนเกิน

ลำดับขั้นอยู่ที่เดียว
ไฟล์ก๊อปกันมา ครบห้าขั้นทุกไฟล์

ลูกศร = ไฟล์ไหนพึ่งไฟล์ไหน · เขียว ถูกทิศ · แดง ชี้ผิดทาง · แตะกล่องเพื่อหาไฟล์บนกระดาน

ลำดับขั้นอยู่ที่เดียว
ไฟล์ก๊อปกันมา ครบห้าขั้นทุกไฟล์
ลำดับขั้นอยู่ที่เดียว
ลำดับขั้น · ที่เดียว
ลำดับขั้นส่งยอดจ่ายผู้สอนลำดับล็อกไว้ปลายทางเขียนแค่ส่วนที่ต่าง
ทำห้าขั้นตามลำดับเดิมทุกครั้งดึงยอดขาย ตัดยอดคืนเงิน คิดค่าธรรมเนียม
ส่วนที่ต่าง · ปลายทางละไฟล์
ไฟล์ CSV ให้บัญชีเขียนแค่สองขั้นท้าย
ใช้ ← ลำดับขั้นส่งยอดจ่ายผู้สอน
จัดเป็นตาราง CSVให้ดาวน์โหลด
Google Sheets ให้ผู้สอนเขียนแค่สองขั้นท้าย
ใช้ ← ลำดับขั้นส่งยอดจ่ายผู้สอน
จัดเป็นแถวของ Google Sheetsเขียนลงชีต
ไฟล์ก๊อปกันมา ครบห้าขั้นทุกไฟล์
ลำดับขั้น · ที่เดียว
ไม่มีลำดับกลาง · ทุกไฟล์เขียนเองครบห้าขั้น
ไฟล์ส่งยอด · ก๊อปกันมา
ไฟล์ส่งยอดเป็น CSVห้าขั้นครบในไฟล์
ดึงยอดขาย ตัดยอดคืนเงิน คิดค่าธรรมเนียมจัดเป็นตาราง CSVให้ดาวน์โหลด
ไฟล์ส่งยอดลง Google Sheetsก๊อปมาจากไฟล์ CSV
ดึงยอดขาย ตัดยอดคืนเงิน คิดค่าธรรมเนียมจัดเป็นแถวของ Google Sheetsเขียนลงชีต
ขั้นสุดท้าย · ลากขั้นตอนมาแยกเป็นไฟล์ใหม่ตรงนี้+ ไฟล์ใหม่ลากสามขั้นที่เหมือนกัน จากทั้งสามไฟล์ ไปรวมที่ไฟล์ลำดับขั้น

กล่อง = ไฟล์หนึ่งไฟล์ ที่ AI ต้องเปิดเมื่อแก้เรื่องในนั้นขั้นตอนชิ้น = สิ่งที่โค้ดทำ หนึ่งขั้น= ชิ้นที่ลากไปไฟล์ใหม่ได้ ในขั้นสุดท้าย

เขียว: ที่แก้หรือเพิ่มประ: ต้องทดสอบซ้ำ เพราะอยู่ไฟล์เดียวกับที่แก้แดง: สำเนาที่ไม่ได้แก้ตาม

บนมือถือ: แตะที่กระดานเพื่อไปขั้นถัดไป ขั้นสุดท้ายแตะชิ้นที่ลากได้ แล้วแตะกล่องที่มันควรอยู่

0 / 3
ก่อนเริ่มก่อนสั่งอะไร

ซ้าย ไฟล์ลำดับขั้นดึงยอดขาย ตัดยอดคืนเงิน คิดค่าธรรมเนียม แล้วส่งต่อให้ปลายทางจัดรูปแบบและส่งออก ปลายทาง CSV กับ Google Sheets เขียนแค่สองขั้นท้าย ขวา ไฟล์ CSV กับไฟล์ Sheets เขียนครบทุกขั้นเอง

ขั้นที่ 1เพิ่มส่งเข้าระบบบัญชี

ซ้าย AI เพิ่มปลายทางระบบบัญชี ที่มีแค่จัดรูปแบบกับส่งออก ขวา AI ก๊อปไฟล์ Sheets เป็นไฟล์ระบบบัญชี แล้วเปลี่ยนสองขั้นท้าย รอบนี้ยอดตรงทุกที่

ขั้นที่ 2คืนเงินบางส่วนยังถูกนับเป็นยอดขาย

ซ้าย AI แก้ขั้นตัดยอดคืนเงินที่เดียว ทั้งสามปลายทางได้ตาม ขวา AI แก้ในไฟล์ CSV ตามที่ฝ่ายบัญชีแจ้ง ส่วน Sheets กับระบบบัญชียังนับคืนเงินบางส่วน ยอดในสองที่นี้สูงกว่า CSV

ขั้นสุดท้ายหักภาษี ณ ที่จ่าย 3%

ซ้าย AI เพิ่มขั้นหักภาษีในไฟล์ลำดับขั้น ก่อนจัดรูปแบบ ทุกปลายทางได้ตาม ขวา AI แก้ขั้นร่วมทั้งสามไฟล์ แตะ 3 ไฟล์ ทดสอบซ้ำ 9 ตัว สองไฟล์ที่พังจากรอบก่อนก็ยังพังอยู่

หลักการ ในภาษาของโค้ด

งานที่ทำเป็นขั้นตามลำดับเดิมทุกครั้ง ให้ล็อกลำดับและขั้นที่เหมือนกันไว้ที่เดียว แต่ละแบบเขียนแค่ขั้นที่ต่าง

ถามก่อนรับ diffไฟล์ใหม่นี้ก๊อปขั้นที่ไฟล์อื่นมีอยู่แล้วหรือเปล่า ถ้าพรุ่งนี้ขั้นนั้นถูกแก้ ต้องแก้กี่ที่

Template Method (Gamma, Helm, Johnson, Vlissides 1994): define the skeleton of an algorithm in an operation, deferring some steps to subclasses; subclasses redefine certain steps without changing the algorithm's structure
ครบแปดกระดานแล้ว? เลือกชื่อแพทเทิร์นก่อนสั่ง AIแบบทดสอบสั้น ทุกข้อคือข้อความที่กำลังจะส่งให้ AI
ทำแบบทดสอบ →

แปดชื่อ แปดคำสั่งที่สั้นลง

ทุกแพทเทิร์นในบทนี้ตอบคำถามเดียวกับ SOLID: ของที่เปลี่ยนบ่อย ให้มันเปลี่ยนในที่ของมันเอง Strategy กับ Factory Method แยก "ทำยังไง" ออกจาก "เลือกอันไหน" Observer ให้คนที่สนใจเหตุการณ์มาลงชื่อเอง Adapter กับ Facade กั้นผู้ให้บริการและระบบข้างหลังไว้หลังหน้าเดียว Decorator เพิ่มความสามารถโดยไม่เปิดของเดิม Command ทำให้การกดปุ่มเป็นของที่เก็บ ต่อคิว และย้อนได้ Template Method ล็อกลำดับขั้นไว้ที่เดียว ใช้ชื่อพวกนี้ในข้อความที่ส่งให้ AI แล้วตรวจ diff ว่ารูปทรงตรงกับชื่อ

แปดกระดานบนร้านคอร์สออนไลน์ร้านเดียว · ที่มา: Gamma, Helm, Johnson, Vlissides (1994)คีย์บนกระดาน: Enter / คลิก = ขั้นถัดไป · ⌫ = รีเซ็ต