Level 2 Complete Review & Mastery

Level 2 Summary (2.1 - 2.5), 10 Production Challenges & 35 Mega Quizzes

สังเคราะห์ 5 เสาหลักสถาปัตยกรรม Level 2 แบบครบวงจร พร้อมสนามประลอง 10 มหาโจทย์ และคลังข้อสอบ 35 ข้อ

1. สรุปภาพรวมเนื้อหา Level 2 ครบทั้ง 5 Sub-topics

🧱 2.1 Multi-Level Grouping Engine
• Group State Machine: ประมวลผลแบบ 1-Pass ล่วงหน้า ต้องเรียงข้อมูลด้วย ORDER BY เสมอ ไม่เช่นนั้น Header/Footer จะแตกกระจาย
• Subtotal Reset: ตัวแปรต้องใช้ resetType="Group" และระบุ resetGroup ให้ตรง ป้องกัน Variable Bleeding
• Pagination Defense: ป้องกัน Orphan Header ด้วย minHeightToStartNewPage และล็อคแถวด้วย keepTogether="true"
🛡️ 2.2 Subreport Isolation & Pipelines
• Context Isolation: แม่ Spawn ตัว JRVerticalFiller ลูกแยกขาดจากกันในหน่วยความจำ
• N+1 Query Defense: ห้ามยิง SQL ซ้ำในลูก ส่งผ่าน JRBeanCollectionDataSource แทน
• Two-Way Bridge: ส่งค่ากลับแม่ผ่าน <returnValue> โดยตัวแปรในแม่ต้องตั้ง calculation="System" ป้องกันบวกเบิ้ล
📐 2.3 Dynamic Crosstab Matrix
• 2-Pass Bucketing: แตกแกน Row x Column อัตโนมัติ ณ Runtime พร้อมคำนวณ Measures (Sum/Count/Avg)
• Memory Awareness: Crosstab ต้องเก็บทั้ง Matrix ไว้ใน Heap ก่อนวาด หากขนาดใหญ่ต้องระวัง OOM
• Column Break Defense: ป้องกันคอลัมน์งอกล้นขอบกระดาษด้วย columnBreakOffset
🎨 2.4 Shared Styles (.jrtx) & Conditions
• Decoupled Design Tokens: รวมศูนย์สไตล์ในไฟล์ .jrtx โหลดผ่าน Classpath ปลอดภัยบน Docker
• Cascading Tree: สืบทอดคุณสมบัติด้วย parentStyle และถูก Override ด้วย Inline Attributes
• Dynamic Highlighting: ใช้ <conditionalStyle> คู่กับ mode="Opaque" และเปรียบเทียบ BigDecimal ด้วย .compareTo()
🏛️ 2.5 Complex Structures Capstone
• Composite Orchestration: ผสาน Grouping + Subreports + Crosstab + JRTX เป็นรายงานแม่ฉบับเดียว
• Zero-Height Detail Pattern: ออกแบบ Detail ให้สูง 0pt เพื่อใช้ Master เป็น Controller รวมยอดจาก Subreports หลายตัว
• Composite Memory Avalanche: จัดการ Heap Memory และ Evaluation Timing ให้สอดคล้องกันทุกระดับชั้น
Sub-topic องค์ประกอบหลัก (JRXML Elements) จุดตายบน Production (Hazard) ทางแก้เชิงสถาปัตยกรรม (Architecture Defense)
2.1 Grouping <group>, <groupHeader>, <groupFooter> ข้อมูลสลับ → Group Break ซ้ำซาก ยอด Subtotal เพี้ยน Strict ORDER BY ใน SQL + กำหนด resetType="Group"
2.2 Subreports <element kind="subreport">, <returnValue> ส่ง Data Source แม่เข้าลูก → Cursor Exhaustion แถวถัดไปว่าง ส่ง Sub-collection แยกขาดด้วย JRBeanCollectionDataSource
2.3 Crosstabs <element kind="crosstab">, <bucket>, <measure> คอลัมน์งอกล้นกระดาษ A4 → เนื้อหาถูกครอปหาย ตั้ง columnBreakOffset ควบคุมระยะการตัดหน้าแนวนอน
2.4 Styles <template>, <style>, <conditionalStyle> ฮาร์ดโค้ด Path C:\... → พังทันทีบน Linux/Docker อ้างอิงไฟล์ .jrtx ผ่าน Classpath เท่านั้น
2.5 Capstone Composite Schema (ผสานครบ 4 ศาสตร์) Memory Avalanche + ยอดเงินเบิ้ล 2 เท่า (Double Counting) ใช้ Virtualizer + Master Accumulator ตั้ง calculation="System"

2. สนามประลองถอดรหัสภาพ 10 มหาโจทย์ (Level 2 The Colosseum)

เขียน JRXML 7.0.x ให้ตรงตามเป้าหมายของแต่ละข้อ ภายใต้ Allowed/Disallowed Constraints:

⚔️ Production Challenge Progress
PASSED: 0 / 10 (0%)

3. คลังข้อสอบวัดกึ๋นระดับสถาปัตยกรรม (35 Mega Quizzes)

ทดสอบความเข้าใจลึกระดับ JVM, Filler Engine และ Execution Lifecycle ครบทุกบทของ Level 2 (ข้อ 1 ถึง 35):

⚡ Real-time Mega Quiz Score Tracker
คะแนน: 0 / 35 (0%) | ตอบแล้ว: 0 / 35