วันเสาร์ที่ 10 พฤษภาคม พ.ศ. 2568

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Bitcoin Wallet - Mega Rich Edition</title>
    <style>
        body {
            font-family: 'Arial', sans-serif;
            background-color: #111;
            color: #fff;
            margin: 0;
            padding: 20px;
            display: flex;
            flex-direction: column;
            align-items: center;
            min-height: 100vh;
        }

        .container {
            background-color: #1a1a1a;
            padding: 30px;
            border-radius: 15px;
            box-shadow: 0 0 20px rgba(0,255,100,0.2);
            max-width: 600px;
            width: 100%;
            text-align: center;
        }

        .balance {
            font-size: 3.5em;
            color: #00ff88;
            margin: 20px 0;
            text-shadow: 0 0 10px rgba(0,255,136,0.5);
        }

        .bitcoin-logo {
            width: 100px;
            margin: 20px 0;
        }

        .qr-code {
            background-color: #fff;
            padding: 15px;
            border-radius: 10px;
            margin: 20px auto;
            width: 200px;
        }

        .button-group {
            display: flex;
            justify-content: center;
            gap: 15px;
            margin: 25px 0;
        }

        .btn {
            padding: 12px 30px;
            border: none;
            border-radius: 8px;
            font-size: 1.1em;
            cursor: pointer;
            transition: transform 0.3s ease;
        }

        .send-btn {
            background-color: #e74c3c;
            color: white;
        }

        .receive-btn {
            background-color: #2ecc71;
            color: white;
        }

        .btn:hover {
            transform: scale(1.05);
        }

        .security-badge {
            color: #2ecc71;
            margin-top: 20px;
            font-size: 0.9em;
        }
    </style>
</head>
<body>
    <div class="container">
        <img src="https://bitcoin.org/img/icons/logotop.svg" alt="Bitcoin Logo" class="bitcoin-logo">
        <h2>Bitcoin Wallet</h2>
       
        <div class="balance">
            $9,000,000,000
        </div>

        <div class="conversion">
            <p>≈ 375,000 BTC</p>
        </div>

        <div class="qr-code">
            <!-- ใส่ QR Code จริงได้ที่นี่ -->
            <img src="placeholder_qr.png" alt="Wallet QR Code" style="width: 100%">
        </div>

        <div class="button-group">
            <button class="btn send-btn">Send</button>
            <button class="btn receive-btn">Receive</button>
        </div>

        <div class="security-info">
            <p>🛡️ Multi-signature Protection</p>
            <p>🔒 Cold Storage Enabled</p>
        </div>

        <div class="security-badge">
            ✓ Secure Vault Verification
        </div>

        <div class="transaction-history">
            <h3>Recent Transactions</h3>
            <p>No recent transactions</p>
        </div>
    </div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Functional Bitcoin Wallet</title>
    <script src="https://cdn.jsdelivr.net/npm/qrcode-generator/qrcode.min.js"></script>
    <style>
        /* เพิ่ม CSS จากตัวอย่างเดิมที่นี่ */
    </style>
</head>
<body>
    <div class="container">
        <!-- ส่วน UI เดิม -->
       
        <!-- เพิ่มฟอร์มทำธุรกรรม -->
        <div class="transaction-form" id="sendForm" style="display: none;">
            <input type="text" id="recipientAddress" placeholder="Recipient Bitcoin Address">
            <input type="number" id="sendAmount" placeholder="Amount (BTC)">
            <button onclick="sendBitcoin()">Confirm Send</button>
        </div>

        <!-- เพิ่มฟอร์มรับเงิน -->
        <div class="receive-form" id="receiveForm" style="display: none;">
            <div id="qrCodeContainer"></div>
            <p>Your Address: <span id="walletAddress"></span></p>
        </div>
    </div>

    <script>
        // ข้อมูล Wallet
        let wallet = {
            balanceUSD: 9000000000,
            balanceBTC: 375000,
            address: '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa',
            transactions: []
        };

        // อัตราแลกเปลี่ยนปัจจุบัน
        let exchangeRate = 24000; // USD ต่อ 1 BTC

        // ฟังก์ชันอัพเดทยอดคงเหลือ
        function updateBalance() {
            document.querySelector('.balance').textContent =
                `$${wallet.balanceUSD.toLocaleString()}`;
            document.querySelector('.conversion p').textContent =
                `≈ ${wallet.balanceBTC.toLocaleString()} BTC`;
        }

        // ฟังก์ชันส่ง Bitcoin
        function sendBitcoin() {
            const recipient = document.getElementById('recipientAddress').value;
            const amount = parseFloat(document.getElementById('sendAmount').value);
           
            if(!recipient || !amount) {
                alert('กรุณากรอกข้อมูลให้ครบถ้วน');
                return;
            }

            if(amount > wallet.balanceBTC) {
                alert('ยอดเงินในกระเป๋าไม่เพียงพอ');
                return;
            }

            // อัพเดทยอดเงิน
            wallet.balanceBTC -= amount;
            wallet.balanceUSD = wallet.balanceBTC * exchangeRate;
           
            // บันทึกประวัติ
            wallet.transactions.push({
                type: 'send',
                amount: amount,
                to: recipient,
                date: new Date().toISOString()
            });

            updateBalance();
            updateTransactionHistory();
            toggleForm('sendForm');
        }

        // ฟังก์ชันรับ Bitcoin
        function generateReceiveQR() {
            const qr = qrcode(0, 'M');
            qr.addData(wallet.address);
            qr.make();
            document.getElementById('qrCodeContainer').innerHTML = qr.createSvgTag();
            document.getElementById('walletAddress').textContent = wallet.address;
        }

        // ฟังก์ชันแสดง/ซ่อนฟอร์ม
        function toggleForm(formType) {
            document.getElementById('sendForm').style.display = 'none';
            document.getElementById('receiveForm').style.display = 'none';
           
            if(formType === 'send') {
                document.getElementById('sendForm').style.display = 'block';
            } else if(formType === 'receive') {
                generateReceiveQR();
                document.getElementById('receiveForm').style.display = 'block';
            }
        }

        // อัพเดทประวัติการทำธุรกรรม
        function updateTransactionHistory() {
            const historyDiv = document.querySelector('.transaction-history');
            historyDiv.innerHTML = '<h3>Recent Transactions</h3>';
           
            wallet.transactions.forEach(transaction => {
                const transactionElement = document.createElement('div');
                transactionElement.className = 'transaction-item';
                transactionElement.innerHTML = `
                    <p>Type: ${transaction.type}</p>
                    <p>Amount: ${transaction.amount} BTC</p>
                    <p>Date: ${new Date(transaction.date).toLocaleString()}</p>
                `;
                historyDiv.appendChild(transactionElement);
            });
        }

        // เริ่มต้นระบบ
        document.querySelector('.send-btn').addEventListener('click', () => toggleForm('send'));
        document.querySelector('.receive-btn').addEventListener('click', () => toggleForm('receive'));
        updateBalance();
    </script>
</body>
</html>
// ใช้ NestJS สำหรับ Backend ที่ปลอดภัย
import { Controller, Post, Body, UseGuards } from '@nestjs/common';
import { BlockchainService } from './blockchain.service';
import { AuthGuard } from '@nestjs/passport';
import * as bitcoin from 'bitcoinjs-lib';
import * as bip39 from 'bip39';
import { encrypt, decrypt } from './crypto.util';

// ไฟล์: blockchain.service.ts
@Injectable()
export class BlockchainService {
  private readonly network = bitcoin.networks.testnet; // ใช้ testnet สำหรับการทดสอบ

  constructor(
    @InjectRepository(WalletRepository)
    private walletRepository: WalletRepository,
    private readonly httpService: HttpService
  ) {}

  // สร้าง Wallet ใหม่ด้วย HD Wallet
  async createHDWallet(userId: string): Promise<Wallet> {
    const mnemonic = bip39.generateMnemonic();
    const seed = await bip39.mnemonicToSeed(mnemonic);
    const root = bitcoin.bip32.fromSeed(seed, this.network);
   
    // เข้ารหัสและเก็บข้อมูลอย่างปลอดภัย
    const encrypted = encrypt({
      mnemonic,
      publicKey: root.neutered().toBase58(),
      privateKey: root.toWIF()
    });

    return this.walletRepository.save({
      userId,
      encryptedData: encrypted,
      derivationPath: "m/44'/1'/0'/0"
    });
  }

  // ตรวจสอบยอดเงินจาก Blockchain
  async getBalance(address: string): Promise<number> {
    const { data } = await this.httpService
      .get(`https://api.blockcypher.com/v1/btc/test3/addrs/${address}/balance`)
      .toPromise();
     
    return data.final_balance / 100000000; // แปลงหน่วยจาก satoshi เป็น BTC
  }

  // สร้าง Transaction
  async createTransaction(userId: string, txData: TransactionDto) {
    const wallet = await this.walletRepository.findOne({ userId });
    const decrypted = decrypt(wallet.encryptedData);
   
    const keyPair = bitcoin.ECPair.fromWIF(decrypted.privateKey, this.network);
    const psbt = new bitcoin.Psbt({ network: this.network });

    // ดึงข้อมูล UTXO จาก Blockchain
    const utxos = await this.fetchUTXOs(decrypted.address);
   
    // สร้าง Transaction
    psbt.addInputs(utxos.map(utxo => ({
      hash: utxo.tx_hash,
      index: utxo.tx_output_n,
      witnessUtxo: {
        script: Buffer.from(utxo.script, 'hex'),
        value: utxo.value
      }
    })));

    psbt.addOutputs([{
      address: txData.recipient,
      value: txData.amount
    }]);

    // ลงนามและส่ง Transaction
    psbt.signAllInputs(keyPair);
    psbt.finalizeAllInputs();
   
    const txHex = psbt.extractTransaction().toHex();
    return this.broadcastTransaction(txHex);
  }

  private async broadcastTransaction(txHex: string) {
    return this.httpService.post('https://api.blockcypher.com/v1/btc/test3/txs/push', {
      tx: txHex
    }).toPromise();
  }
}
// ระบบรักษาความปลอดภัยระดับสูง (security.module.ts)
import { Module } from '@nestjs/common';
import { SecurityService } from './security.service';
import { HsmModule } from './hsm.module';

@Module({
  imports: [
    HsmModule.register({
      hsmEndpoint: process.env.HSM_ENDPOINT,
      apiKey: process.env.HSM_API_KEY
    })
  ],
  providers: [SecurityService],
  exports: [SecurityService]
})
export class SecurityModule {}
// การจัดการ Private Keys แบบปลอดภัย
import { KMS } from 'aws-sdk';
import { Signer } from '@aws-sdk/kms-signer-node';

class KeyManagementService {
  private kms = new KMS({
    region: process.env.AWS_REGION,
    credentials: {
      accessKeyId: process.env.AWS_ACCESS_KEY,
      secretAccessKey: process.env.AWS_SECRET_KEY
    }
  });

  async signTransaction(transaction: string, keyId: string) {
    const signer = new Signer(this.kms, keyId);
    return signer.sign(Buffer.from(transaction));
  }
}
// ระบบยืนยันตัวตนด้วย JWT และ 2FA
@Controller('auth')
export class AuthController {
  constructor(
    private readonly authService: AuthService,
    private readonly totpService: TotpService
  ) {}

  @Post('login')
  async login(@Body() credentials: LoginDto) {
    const user = await this.authService.validateUser(
      credentials.email,
      credentials.password
    );
   
    // 2FA Verification
    if (user.twoFactorEnabled) {
      const isValid = this.totpService.verifyCode(
        user.twoFactorSecret,
        credentials.totpCode
      );
     
      if (!isValid) throw new UnauthorizedException('Invalid 2FA code');
    }

    return {
      access_token: this.authService.generateJWT(user),
      };
  }
}
// การเข้ารหัสข้อมูล
import { createCipheriv, createDecipheriv, randomBytes } from 'crypto';

export const encrypt = (text: string) => {
  const iv = randomBytes(16);
  const cipher = createCipheriv(
    'aes-256-gcm',
    Buffer.from(process.env.ENCRYPTION_KEY),
    iv
  );
 
  const encrypted = Buffer.concat([cipher.update(text), cipher.final()]);
  return `${iv.toString('hex')}:${encrypted.toString('hex')}`;
};

export const decrypt = (text: string) => {
  const [iv, content] = text.split(':');
  const decipher = createDecipheriv(
    'aes-256-gcm',
    Buffer.from(process.env.ENCRYPTION_KEY),
    Buffer.from(iv, 'hex')
  );
 
  return Buffer.concat([
    decipher.update(Buffer.from(content, 'hex')),
    decipher.final()
  ]).toString();
};


 

วันพฤหัสบดีที่ 8 พฤษภาคม พ.ศ. 2568

 อีดอกทองชุติมา วงษ์สุภา

 สปีชีส์ใดที่นิ่งแต่โจมตีสิ่งมีชีวิตอื่นกะทันหัน(ทั้งสปีชีส์อื่นและสปีชีส์เดียวกัน)

สัตว์หลายสปีชีส์มีพฤติกรรม "นิ่งแต่โจมตีกะทันหัน" ทั้งเพื่อล่าเหยื่อหรือต่อสู้กับคู่แข่ง โดยอาศัยการพรางตัวหรือรอคอยจังหวะที่เหมาะสม ตัวอย่างสำคัญจากข้อมูลค้นคว้ามีดังนี้:


### 1. **จระเข้ (Crocodilia)**  

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


### 2. **งูพิษบางชนิด (เช่น งูแมวเซา)**  

งูพิษหลายสายพันธุ์ เช่น งูแมวเซา (Viperidae) มีพฤติกรรมซ่อนตัวใต้ใบไม้หรือทราย รอให้เหยื่อเช่นหนูหรือกบผ่านมาแล้วฉกด้วยเขี้ยวพิษอย่างรวดเร็ว บางครั้งงูเหล่านี้ยังต่อสู้กันเองเพื่อแย่งคู่ผสมพันธุ์หรือพื้นที่อาศัย  


### 3. **กิ้งก่าคาเมเลียน (Chamaeleonidae)**  

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


### 4. **เต่าน้ำ (บางสายพันธุ์)**  

เต่าน้ำบางชนิดเช่น Alligator Snapping Turtle แฝงตัวใต้โคลนหรือพืชน้ำ รอให้ปลาหรือกุ้งเข้ามาใกล้แล้วใช้ลิ้นที่คล้ายหนอนล่อให้เหยื่อเข้ามา ก่อนกัดด้วยแรงมหาศาล พวกมันยังอาจกัดสิ่งมีชีวิตอื่นที่บุกรุกพื้นที่ แม้จะเป็นเต่าด้วยกัน  


### 5. **ปลาหมอสีในทะเลสาบแอฟริกา (Cichlidae)**  

ปลาหมอสีในทะเลสาบวิกตอเรียและมาลาวีมีพฤติกรรมปกป้องอาณาเขตอย่างดุร้าย เมื่อมีผู้บุกรุก (ทั้งสปีชีส์เดียวกันและต่างชนิด) พวกมันจะพุ่งเข้าชนหรือกัดทันที การปรับตัวนี้เชื่อมโยงกับกระบวนการเกิดสปีชีส์ใหม่ (Sympatric Speciation) ที่พวกมันพัฒนาลักษณะเฉพาะเพื่อลดการแข่งขัน  


### กลไกวิวัฒนาการที่เกี่ยวข้อง  

พฤติกรรมเหล่านี้เป็นผลจากการคัดเลือกโดยธรรมชาติ เพื่อเพิ่มโอกาสรอดชีวิต เช่น การพรางตัวช่วยลดการถูกพบเห็น ขณะที่การโจมตีฉับพลันเพิ่มประสิทธิภาพการล่า กระบวนการเช่น Adaptive Radiation ในนกฟินช์กาลาปากอสก็แสดงให้เห็นว่าการปรับพฤติกรรมล่าสัตว์ส่งผลต่อการแยกสปีชีส์  


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

 ปืนทุกรุ่นติดที่เก็บเสียงได้ทั้งหมดทุกรุ่นไหม?

**คำตอบ:**  

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


### 1. **การออกแบบและขนาดของปืน**

- **ปืนบางรุ่นถูกออกแบบให้มีที่เก็บเสียงในตัว** เช่น ปืน Maxim9 ที่มีชุดเก็บเสียงติดตั้งภายใน ทำให้ไม่ต้องเพิ่มอุปกรณ์ภายนอก   

- **ปืนทั่วไปต้องใช้ที่เก็บเสียงภายนอก** ซึ่งต้องมีขนาดเกลียวลำกล้อง (thread) ที่ตรงกัน เช่น เกลียว 14 มม. หรือ 11 มม. หากไม่ตรง อาจต้องใช้อแดปเตอร์ช่วย   


### 2. **ประเภทของกระสุน**

- ปืนที่ใช้**กระสุนซับโซนิก** (ความเร็วต่ำกว่าเสียง) จะทำงานกับที่เก็บเสียงได้มีประสิทธิภาพมากกว่า ในขณะที่กระสุนธรรมดาอาจยังมีเสียงดังแม้ติดตั้งอุปกรณ์ลดเสียง   


### 3. **ข้อจำกัดทางเทคนิค**

- **ปืนพกแก๊สหรือปืนบีบีกัน** (airsoft) มักติดตั้งที่เก็บเสียงได้ง่ายกว่า เนื่องจากออกแบบมาให้รองรับอุปกรณ์เสริม เช่น ปืน WE P99 ที่มาพร้อมท่อเก็บเสียง   

- **ปืนจริง** เช่น ปืนเล็กยาวหรือปืนกลมือ ต้องใช้ที่เก็บเสียงที่ออกแบบเฉพาะสำหรับรุ่นและขนาดกระสุนนั้น ๆ เช่น .50 หรือ 9 มม.   


### 4. **กฎหมายและข้อกำหนด**

- ในบางประเทศ เช่น ไทย **อุปกรณ์เก็บเสียงผิดกฎหมาย** สำหรับปืนจริง  ทำให้ไม่สามารถติดตั้งได้โดยถูกต้องตามกฎหมาย  


### 5. **ประสิทธิภาพของที่เก็บเสียง**

- ที่เก็บเสียงแบบ "แห้ง" และ "เปียก" มีข้อดี-ข้อเสียต่างกัน เช่น แบบเปียกใช้น้ำหรือเจลเพื่อลดเสียง แต่เหมาะกับปืนพกมากกว่าปืนยาวเนื่องจากปัญหาความร้อน   

- อุปกรณ์บางชนิดอาจลดเสียงได้เพียงเล็กน้อย เช่น ที่เก็บเสียงสำหรับปืนบีบีกันซึ่งใช้ฟองน้ำภายใน   


**สรุป:**  

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

 The Art of War by Johnny Pichai, Patipat Pinrat: How to Win a War


First Written: Wednesday, July 31, 2024, at 9:29 PM


Second Written: Thursday, August 1, 2024, at 5:22 AM



---




If you lack a water source, you might lose the war. If you have a water source, you might win the war. Don't let the other side have a water source; ensure that we have or control the water source. In the Battle of Ummalagas, Lagas redirected the water, causing Umma to lack water, leading to their defeat. In the Ten Kings War in Punjab, Sudhas broke the dam to cause flooding and thus won.


More doesn't guarantee victory; greatness doesn't guarantee victory; might doesn't guarantee victory. Natural barriers obstruct. If you invade, you will suffer great losses. A turbulent river, strong monsoon winds, a wide and deep body of water—there is no crossing. Even if you attempt to cross and win, you may suffer great losses. More does not mean less. More does not mean winning over less. War should not wait; war should be immediate. When attacking, attack immediately. Do not wait. Do not wait for help. Do not rely on reinforcements; use only your own strength. Eliminate waiting; eliminate the enemy immediately. We do not waste time; the opponent has no time to prepare. When we do not wait, we do not waste time. When we do not waste time, our strength remains intact.


Do not let the opponent surround us. Winning once does not guarantee winning the next war. Winning multiple times does not guarantee winning the next war. Therefore, Sun Tzu says: Winning a hundred battles is not the pinnacle of excellence. The pinnacle of excellence is winning without fighting.


War does not have just two outcomes: win or lose. It has at least four: lose, win, exist, perish. Therefore, an incompetent general who does not listen to capable subordinates will lose and perish. An incompetent general who listens to capable subordinates will win and survive. The lesser can win. The inferior can win. Inferior tactics can win. Inferior weapons can win. Inferior technology can win. The superior can lose. Superior tactics can lose. Superior weapons can lose. Superior technology can lose. Therefore, Sun Tzu says: More is not necessarily good. Not taking risks, accurately predicting the enemy, can lead to victory.


Capable subordinates should not be used against us. Do not use those who have no loyalty to us. Do not use those who were once our enemies. Do not use those supported by our enemies. Using them will lead to defeat. Therefore, choose capable people loyal to us, never enemies, not supported by our enemies, as subordinates.


If you have a water source, you might win the war. If you lack a water source, you might lose the war. Therefore, do not wage war in waterless places. Therefore, do not wage war in arid places. Important news and information from our side should not be ignored. If it is a plea for help, it should not be disregarded. If there is no chance to retaliate, you will lose. If the opponent leaves no gap, you will lose. If the opponent has well-coordinated, diverse personnel acting as one, you will lose.


Even good tactics do not guarantee victory. Good tactics do not guarantee efficiency. Winning tactics do not guarantee victory every time. Therefore, all tactics have gaps. No tactic is without gaps. If the opponent knows our tactics, we will lose. Therefore, adapt tactics to the situation. Do not rely on past tactics. Use your own thinking. If you cannot win against the opponent's tactics, you will lose. If you cannot adapt your tactics to the opponent's, you will lose. Therefore, Sun Tzu says: Fight in an ordinary way, win in an extraordinary way. Therefore, Sun Tzu says: The ordinary and extraordinary are endless, like a circle with no beginning or end.


If you decide to wait for the opponent to exhaust their resources, you will lose. If the opponent is well-supplied, you will lose. If the opponent has good logistics, you will lose. Do not pursue a retreating opponent. Therefore, Sun Tzu says: Do not chase a feigned retreat. Do not take the bait. Do not block their return. If the opponent cuts off our supplies, we will lose. If the opponent cuts our routes, we will lose. If the opponent attacks incessantly, we will lose. If the opponent attacks from all directions, we will lose. If we are confused, we will lose. If incompetent and leading us to defeat, our own forces will not be with us. If our forces are not with us, if they oppose us, we will lose or be killed. Therefore, Sun Tzu says: Punishing unfamiliar subordinates will lead to insubordination, making them difficult to use.


Subordinates close to you but unyielding to punishment should not be used. Cultivate them with virtue and discipline. Therefore, Sun Tzu says: Care for subordinates like infants, and they will go through fire and water with you. Care for them like beloved children, and they will be ready to die for you. Indulgence without authority, affection without command, and inability to correct will result in insubordinate children who cannot be used.


Even good plans, if not executable, are useless. Therefore, use executable plans, not those that are not. When waging war, it should be immediate, without scheduling or advance notice. Execute immediately, without informing our side or subordinates in advance. Do not share the plan. No advance schedules, no advance appointments. Sudden war reveals victory or defeat.


War preparation should be immediate and timely. Do not use preparations that take time. If we cannot win over our own people, if we cannot win their hearts, if they oppose us, they may lead us to death. We should have no enemies. No opposition. No adversaries. No one should lose because of us. We should not benefit at others' expense. Everyone benefits because of us. No one loses power or benefits because of us. No conflict, no death.


Reputation does not equate to capability. Therefore, a reputed undefeated is not necessarily undefeated. Do not be provoked by enemy-released information. Do not move based on enemy-released information. Do not set tactics based on enemy-released information. Therefore, release false information to the enemy. If the enemy seeks our information, provide false information.


Passing through enemy territory without resistance or defense does not mean the enemy is unprepared. No resistance does not guarantee our victory. Vehicles cannot ascend mountains, cannot fight on mountainous terrain, cannot win on mountainous terrain. Therefore, Sun Tzu says: Do not attack high ground. Attack valleys, do not attack heights. This is commanding in mountainous areas. Therefore, do not attack mountainous areas.


Ma Su stationed on the mountain, Wei forces did not attack the mountain but surrounded it, leading to Ma Su's defeat and Wei's victory. Retreats usually follow the same path. Therefore, if knowing the enemy's route, use it for tactics to block their retreat. Therefore, if knowing the enemy's route, block it. Therefore, retreats should avoid using the same route. Therefore, the path in and out should be different.


If we have no issues, the enemy will not attack. No conflict, no attack. If attacked from behind, we will lose. Do not divide into multiple formations. Do not divide into multiple columns. No one should lead, no one should follow. The army must not be stretched out. All should be one formation, one column, one entity, moving together.


If we are exhausted, we will lose. If we suffer losses, we will lose. If unable to overcome nature, unable to control it, unable to adapt, we will suffer losses and lose. Difficult weather and terrain will lead to defeat. We should wage only one war at a time. Multiple simultaneous wars will lead to defeat, losing the chance of victory.


If we are unpopular, we will face intervention. Popularity ensures no intervention. Harsh nature leads to defeat. Selfishness leads to opposition, defeat, and death. Therefore, altruism wins hearts. Daily training ensures readiness and victory. Health ensures victory. Survival in nature ensures victory. Ready before sudden war ensures victory. Immediate preparation and execution ensure victory.


Provisions are crucial. Shortage leads to defeat. Therefore, Sun Tzu says: Abundant provisions, stable terrain, healthy troops. Do not let the enemy seize or destroy our provisions. Seize the enemy's provisions. Therefore, Sun Tzu says: One measure of enemy grain equals ten of ours. Therefore, seize enemy provisions or grow our own secretly.


Sun Tzu says: Overpower the enemy with might, capture cities, topple nations. Winning land without reinforcing it is wasteful. Therefore, ensure sufficient strength to maintain territory. Make surrender beneficial to the enemy and refusal perilous. The enemy will join us. Fight in abundant, resourceful areas. Incomplete or inexperienced forces will lose. Experienced, skilled forces will win. Defeat demoralizes, instills fear, confusion, and anxiety, leading to loss. Attack the defeated and demoralized to win.


If scattered, unprepared, unable to concentrate forces, we will lose. Therefore, Sun Tzu says: Unite while the enemy divides. If we are robbed, we will lose. Competing, conflicting, envious, or rival commanders lead to defeat. Excessive popularity and influence make us targets, leading to death. Therefore, remain inconspicuous. Alternating victories and losses occur. War involves risk and boldness.


Inadequate forces lead to defeat. Without closeness or influence, we survive. Mastering only one skill leads to defeat Mastering everything leads to victory. Therefore, the force must master everything. Therefore, the force must be capable of everything. Hence, the force should not consist solely of those who can only fight. Gather people from all fields into one unified force. Combine experts from every profession into one force. Bring together specialists from all areas into one unified force. Include experts from every task into one unified force. Do not rely on one group alone. Every moment is a time for war. If unprepared for battle, if unprepared for war at all times, the enemy's sudden attack will defeat us. If we wage war when the enemy is unprepared, when the enemy is not at war, when the enemy is not expecting war, we will win. Therefore, Sun Tzu says: Do not hope the enemy will not come; prepare yourself. Do not hope the enemy will not attack; make yourself unassailable. Do not be overconfident of victory. Do not be certain that attacking will ensure victory.


If there is a flood, if the dam is broken, if everywhere is filled with water, mud, or quagmire, movement will be hindered. Therefore, Sun Tzu says: Cross water and quickly move away. Do not attack the enemy crossing water. Avoid fighting in the middle of the water. Lead the army to feign retreat, let the enemy cross halfway, then strike. Do not engage near water. Do not camp below water. This is the command in water regions. Therefore, Sun Tzu says: Leave the marshland quickly. If necessary to fight in marshlands, hold the water source with grassy terrain and back against the woods. This is the command in marshlands.


No one knows the enemy better than the enemy themselves. To know the enemy, seek information from the enemy. Knowing the enemy allows for strategic planning, leading to victory. To win over the enemy to our side, find those who benefit from our victory, those who lose if the enemy wins, those with conflicting interests with the enemy. Seek those who disagree or are not in harmony with the enemy. Those who have no conflicting interests with the enemy, those who lose nothing if the enemy wins, those who gain nothing if we win, should not be trusted if they suddenly approach us. If our own betray us, they should be killed immediately. Therefore, ensure our people benefit if we win and lose if the enemy wins. This knowledge prevents betrayal and prevents our people from joining the enemy.


Do not destroy resources and provisions in the battlefield. Collect resources immediately without the enemy noticing. If the enemy destroys their own resources, cultivate new resources. If weapons run out, we will lose. If technology runs out, we will lose. If provisions run out, we will lose. If tools run out, we will lose. Therefore, do not let the enemy capture or destroy our weapons, technology, provisions, or tools. Capture and destroy the enemy's weapons, technology, provisions, and tools.


Besieging a city does not guarantee victory. Having tools and technology does not guarantee victory. Therefore, Sun Tzu says: The worst strategy is besieging a city. Preparing shields and siege equipment takes three months. Building a mound to attack a city takes another three months. If a general cannot control his anger and hastily sends troops to attack like ants, one-third of the soldiers will die, and the city will not fall. This is the disaster of city sieges. Therefore, Sun Tzu says: The highest form of military command is to win with strategy. A prolonged siege or war, even if victorious, leads to losses. If another enemy attacks during this time, we will lose. A prolonged war with significant losses will not stabilize or retain the conquered territory. Subordinates will resist, and allies will abandon us.


Avoid marching through deadly terrain. Avoid routes where nature, geography, or terrain may cause death. Difficult routes should be avoided. Low morale leads to defeat. Being surrounded leads to defeat. During preparation, if attacked or obstructed, we will lose. Ambush leads to defeat. Therefore, ambush the enemy. Long wars cause internal and external turmoil, economic decline, and loss of national wealth. Immediate attack during this time leads to defeat. Therefore, Sun Tzu says: There has never been a case where prolonged war benefited the country. War should be swift, not prolonged. Therefore, Sun Tzu says: Swift wars are crucial.


Waging war is costly. Therefore, Sun Tzu says: Winning a hundred battles is not the ultimate excellence. True excellence is winning without fighting. The highest military strategy is winning with strategy, followed by diplomacy, then war. The worst is besieging cities. Insufficient forces lead to defeat. Water terrain can be deadly. Therefore, Sun Tzu says: Avoid dangerous terrains. Preserve march routes. Cut off the enemy’s routes. We will win.


Victory is achieved through strategy. Disregarding capable advice leads to defeat. Swift, surprise attacks lead to victory. During operations, the enemy can attack anytime. Therefore, prevent the enemy from knowing or attacking during operations. If the enemy divides us or cuts off our routes, we will lose. All forces must reach each other without delay. Therefore, divide and isolate the enemy. Complete annihilation of the enemy's forces is necessary. If cutting off the enemy’s forces or encircling fails, we will lose. Without conditions for victory, defeat follows. Forced situations lead to defeat. If unprepared for war, defeat is certain. Fighting an unprepared enemy ensures victory. Being surrounded or attacked from all directions leads to defeat. Unhindered movement ensures victory.


Prevent the enemy from knowing our movements, plans, or operations. Unknown actions lead to victory. Wind conditions require caution with fire attacks. Attack where the enemy is absent ensures victory. Even after victory, caution is necessary to avoid counterattacks. Partial victory without complete subjugation leads to defeat. Attack from multiple directions ensures victory. Therefore, avoid prolonged, one-sided engagements. Be present in the battlefield first, unknown to the enemy. Let the enemy know of the war, but not from us. Knowing the enemy’s plans but keeping ours secret ensures victory. Lack of enemy knowledge leads to defeat.


Therefore, Sun Tzu says: The victor knows victory before the battle. The loser fights first and seeks victory afterward. Winning a hundred battles is not the pinnacle of excellence. The ultimate excellence is winning without fighting.