uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

ื˜ื™ืคื™ื ืงืฆืจื™ื ืœืžืชื›ื ืชื™ื ืžืืช ื™ื ื•ืŸ ืคืจืง

Ko'proq ko'rsatish
1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+130 kunlar
Postlar arxiv
ToCode
1 419
# ืืคืœื™ืงืฆื™ื™ืช Swift UI ื”ืจืืฉื•ื ื” ืฉืœื™ ื‘ 2008 ืงื ื™ืชื™ ืืช ื”ืกืžืืจื˜ืคื•ืŸ ื”ืจืืฉื•ืŸ ืฉืœื™ ื›ื™ ื—ืฉื‘ืชื™ ืฉื–ื• ืคืœื˜ืคื•ืจืžื” ืžืœื”ื™ื‘ื” ืœื”ืจืฆืช ืงื•ื“ - ืžื—ืฉื‘ ืฉื–ืžื™ืŸ ื‘ื›ืœ ืžืงื•ื, ื›ื•ืœืœ ืฉื‘ื‘ GPS, ืžืฆืœืžื” ื•ื—ื™ื‘ื•ืจ ืงื‘ื•ืข ืœืจืฉืช. ื–ื” ื”ื™ื” N95 ืฉืœ ื ื•ืงื™ื” ื•ืœืงื— ืœื™ ื›ืžืขื˜ ื—ืฆื™ ืฉื ื” ืขื“ ืฉื”ื‘ื ืชื™ ืื™ืš ืฉืคืช ื”ืžืืงืจื•-ืื™ื ืฉื”ื ื‘ื ื• ืžืขืœ C++ ืขื•ื‘ื“ืช ื•ื”ืฆืœื—ืชื™ ืœื‘ื ื•ืช ืืคืœื™ืงืฆื™ื”. ื‘ 2011 ืงื ื™ืชื™ ืื™ื™ืคื•ืŸ ืคื—ื•ืช ืื• ื™ื•ืชืจ ืžืื•ืชืŸ ืกื™ื‘ื•ืช ืฉืœ ื” N95, ื”ืคืขื ืขื ืชื•ืกืคืช ืžืกืš ืžื’ืข. ืื•ื‘ื’'ืงื˜ื™ื‘ ืกื™ ื”ื™ืชื” ืžืฉืžืขื•ืชื™ืช ื™ื•ืชืจ ืงืœื” ืž Symbian ื•ืœืงื— ืœื™ ืจืง ื›ืžื” ื™ืžื™ื ืœื‘ื ื•ืช ืืช ื”ืืคืœื™ืงืฆื™ื” ื”ืจืืฉื•ื ื” ื‘ื–ื”. ืžืื– ืœืžื“ืชื™ ืคื•ื ื’ืืค, ืจื™ืืงื˜ ื ื™ื™ื˜ื™ื‘ ื•ืคืœืื˜ืจ ื•ื”ืฉื‘ื•ืข ื‘ืื™ื—ื•ืจ ืื•ืคื ืชื™ ื”ื—ืœื˜ืชื™ ืœืชืช ืฆ'ืื ืก ืœ Swift UI, ื”ืคืจื™ื™ืžื•ื•ืจืง ื”ื ื•ื›ื—ื™ ืฉืœ ืืคืœ. ื”ื ื™ืกื•ื™ ื”ื•ื›ืชืจ ื›ื”ืฆืœื—ื” ื•ืชื•ืš ืคื—ื•ืช ืžืฉืขื” ื›ื‘ืจ ื”ื™ืชื” ืœื™ ืืคืœื™ืงืฆื™ื” ืคืฉื•ื˜ื” ืจืฆื” ืขืœ ื”ื˜ืœืคื•ืŸ. ื”ื ื” ืงื•ื‘ืฅ ื”ืงื•ื“ ื”ืžืจื›ื–ื™:

import SwiftUI

struct ContentView: View {
    @State private var count = 0
    
    var body: some View {
        VStack {
            Text("Turtle Rock... \(count)")
                .font(.title)
                .foregroundColor(.orange)
            .padding()
            Stepper(value: $count, in: 1...10) {
               Text("Hello")
            }
            Button("Click Me", action: {
                self.count += 1
                print("count = \(count)")
            })
        }
            
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

ื‘ื’ื“ื•ืœ ืื ืชืคืขื™ืœื• ืืช ื”ืงื•ื“ ื‘ XCode ื”ืงืจื•ื‘ ืืœื™ื›ื ืชื’ืœื• ืฉ: 1. ื”ืงื•ื“ ืžืฆื™ื’ ืขืœ ื”ืžืกืš ื˜ืงืกื˜, ืžืชื—ืชื™ื• ืžืฉื”ื• ืฉื ืงืจื Stepper (ืชื›ืฃ ืืจื—ื™ื‘ ืขืœื™ื•) ื•ืžืชื—ืชื™ื• ื›ืคืชื•ืจ. ื‘ื˜ืงืกื˜ ื›ืชื•ื‘ ื”ืžืฉืคื˜ Turtle Rock ื•ืื—ืจื™ื• ืžืกืคืจ. ืœื—ื™ืฆื” ืขืœ ื”ื›ืคืชื•ืจ ืžืขืœื” ืืช ื”ืžืกืคืจ ื‘-1 2. ืžืชื—ืช ืœื›ืคืชื•ืจ ื™ืฉ ื“ื‘ืจ ืฉื ืงืจื Stepper ืฉืžื•ืจื›ื‘ ืžื˜ืงืกื˜, ื›ืคืชื•ืจ ืคืœื•ืก ื•ื›ืคืชื•ืจ ืžื™ื ื•ืก. ืœื—ื™ืฆื” ืขืœ ื”ืคืœื•ืก ืžืขืœื” ืืช ื”ืžืกืคืจ ื‘-1, ืœื—ื™ืฆื” ืขืœ ื”ืžื™ื ื•ืก ืžื•ืจื™ื“ื” ืื•ืชื• ื‘ืื—ื“, ื•ื”ืขืจื›ื™ื ืฉืืคืฉืจ ืœื”ื’ื™ืข ืืœื™ื”ื ืขื ื›ืคืชื•ืจื™ื ืืœื” ื”ื ื”ืžืกืคืจื™ื ื‘ื™ืŸ 1 ืœ 10. ื•ื›ืžื” ืžื™ืœื™ื ืขืœ ื”ืงื•ื“ ืขืฆืžื•: 1. ื‘ Swift ืžื” ืฉืžื•ืคื™ืข ืขืœ ื”ืžืกืš ื”ื•ื View, ื•ืืคืฉืจ ืœื”ื’ื“ื™ืจ View-ื™ื ืžืฉืœื ื•. ื›ืœ View ื”ื•ื ื“ื‘ืจ ืฉื ืงืจื struct ืฉื–ื” ืžืฉื”ื• ืฉื”ื–ื›ื™ืจ ืœื™ ืงืœืืก ืžืฉืคื•ืช ืื—ืจื•ืช. ื‘ืงื•ื“ ื”ืžื•ื“ื‘ืง ื™ืฆืจืชื™ View ื‘ืฉื ContentView. 2. ืœ View ื™ืฉ ืคื•ื ืงืฆื™ื” ื‘ืฉื body ืฉืžื—ื–ื™ืจื” ืืช ืชื•ื›ืŸ ื” View, ืฉื’ื ื”ื•ื ื‘ืขืฆื ืžื•ืจื›ื‘ ืž View-ื™ื ืื—ืจื™ื. ื‘ืชื•ืš ื”ืคื•ื ืงืฆื™ื” ื™ืฉ ื›ืชื™ื‘ ืžื•ื–ืจ ืฉืžื™ื™ืฆื’ ืืช ื”ื™ืจืจื›ื™ื™ืช ื” View-ื™ื, ืื‘ืœ ื—ื™ื™ื‘ ืœื”ื•ื“ื•ืช ืฉื‘ืฉืขื” ืฉื”ืฉืงืขืชื™ ื‘ Swift ืœื ื”ืชืขืžืงืชื™ ืขื“ื™ื™ืŸ ื‘ืžืฉืžืขื•ืช ืฉืœ ื–ื”. 3. ื‘ View ืืคืฉืจ ืœื”ื’ื“ื™ืจ ื’ื ืฉื“ื•ืช ืžื™ื“ืข ืฉื ืงืจืื™ื State. ื›ืฉืฉื“ื” ืžื™ื“ืข ื›ื–ื” ืžืชืขื“ื›ืŸ ืื•ื˜ื•ืžื˜ื™ืช ื”ืขืจืš ื”ืขื“ื›ื ื™ ืฉืœื• ื™ื™ื›ืชื‘ ืœืžืกืš. 4. ืืœืžื ื˜ VStack ืœื•ืงื— ืืช ื” View-ื™ื ืฉืชืชื ื• ืœื• ื•ืžืฆื™ื’ ืื•ืชื ืขืœ ื”ืžืกืš ืื—ื“ ืžืชื—ืช ืœืฉื ื™. 5. ืืœืžื ื˜ Text ื”ื•ื View ืฉืžืฆื™ื’ ื˜ืงืกื˜. 6. ื” Stepper ื”ื•ื ืœื“ืขืชื™ ื”ื—ืœืง ื”ื›ื™ ืžืขื ื™ื™ืŸ ื‘ืงื•ื“. ื”ื•ื ืžืงื‘ืœ ืกื•ื’ ืฉืœ "ื”ืคื ื™ื”" ืœืžืฉืชื ื” count ื›ื“ื™ ืฉื™ื•ื›ืœ ืœืฉื ื•ืช ืืช ืขืจื›ื•, ื•ื‘ื’ืœืœ ื–ื” ืฆืจื™ืš ื”ื™ื” ืœื›ืชื•ื‘ $count. 7. ื”ื—ืœืง ื”ืงืฉื” ื”ื™ื” ืœื”ืจื™ืฅ ืืช ื”ืงื•ื“ ืขืœ ื”ื˜ืœืคื•ืŸ. ื”ื™ื” ืฆืจื™ืš ืœื”ืชื—ื‘ืจ ืขื ื” Apple ID ืฉืœื™ ืœ XCode, ื•ืื—ืจ ื›ืš ื‘ื˜ืœืคื•ืŸ ืœื”ื™ื›ื ืก ืœื”ื’ื“ืจื•ืช ื•ืœืกืžืŸ ืฉืื ื™ ืžื•ื›ืŸ ืœื”ืจื™ืฅ ื™ื™ืฉื•ืžื™ื ืฉืื ื™ ื›ืชื‘ืชื™. ืœื ืฆืจื™ืš ืœืฉืœื ืœืืคืœ ื‘ืฉื‘ื™ืœ ืœื›ืชื•ื‘ ืงื•ื“ ื•ืœื”ืจื™ืฅ ืื•ืชื• ืขืœ ื”ื˜ืœืคื•ืŸ ืฉืœื›ื, ืื‘ืœ ื‘ืฉื‘ื™ืœ ืœื›ืชื•ื‘ ื•ืœื”ืคื™ืฅ ื‘ื—ื ื•ืช ื”ื ื™ืจืฆื• ืืช ื” 99$ ืœืฉื ื” ืฉืœื”ื. ืกืš ื”ื›ืœ ื”ืฉืขื” ื”ืจืืฉื•ื ื” ืขื ืกื•ื•ื™ืคื˜ ืขื‘ืจื” ืœื™ ืžืžืฉ ื—ืœืง. ืื ืืชื ื‘ืืงื•ืกื™ืกื˜ื ืฉืœ ืืคืœ ืœื™ืžื•ื“ ืกื•ื•ื™ืคื˜ ื ืฉืžืข ื›ืžื• ื”ืฉืงืขื” ืžื•ืฆืœื—ืช.

ToCode
1 419
ื”ืฉื•ืจื” ื”ืชื—ืชื•ื ื” ืฉื”ื—ืœื•ืงื” ืœ-3 ืกื•ื’ื™ื ืฉืœ ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ืขื–ืจื” ืœื™ ืœื”ื‘ื™ืŸ ื”ื™ื ืฉืœืคืขืžื™ื ื‘ื“ื™ืงืช ื™ื—ื™ื“ื” ื–ื” ืœื ืžื” ืฉืื ื™ ืฆืจื™ืš. ืœืคืขืžื™ื ื™ื”ื™ื” ืœื™ ื™ื•ืชืจ ืงืœ ืœื‘ื“ื•ืง ืื™ื ื˜ืจืงืฆื™ื” ืขื ืงื•ื“ ื—ื™ืฆื•ื ื™ ืืžื™ืชื™ ืžืืฉืจ ืœื™ื™ืฆืจ ืžื™ืžื•ืฉ Mock ืฉืœื•, ื›ืœื•ืžืจ ืœื›ืชื•ื‘ ื‘ื“ื™ืงืช ืื™ื ื˜ื’ืจืฆื™ื” ืคืฉื•ื˜ื” ื‘ืžืงื•ื ื‘ื“ื™ืงืช ื™ื—ื™ื“ื” ืžืกื•ื‘ื›ืช. ื‘ื ื•ืกืฃ ืœืคืขืžื™ื ืฉื•ื•ื” ืœื—ืœืง ืืช ื”ื‘ื“ื™ืงื” ืœืžืกืคืจ ื‘ื“ื™ืงื•ืช ืœืคื™ ืฉืœื•ืฉืช ื”ืงื˜ื’ื•ืจื™ื•ืช, ื•ื›ืš ืœืงื‘ืœ ื‘ื“ื™ืงื•ืช ืคืฉื•ื˜ื•ืช ื™ื•ืชืจ. ืื ืืชื ืจื•ืฆื™ื ืœืฉืžื•ืข ืขื•ื“ ืขืœ ื‘ื“ื™ืงื•ืช ืžื•ื–ืžื ื™ื ืœื”ืฆื˜ืจืฃ ืžื—ืจ ื‘ืขืฉืจ ื‘ื‘ื•ืงืจ ืœื•ื•ื‘ื™ื ืจ ื‘ื“ื™ืงื•ืช ื‘ Node.JS. ื ืชืจืื” ื‘ื–ื•ื.

ToCode
1 419
# ืฉืœื•ืฉื” ืกื•ื’ื™ื ืฉืœ ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ื“ื™ื™ื‘ ืคืืจืœื™ ื˜ื•ืขืŸ ืฉื™ืฉ ืจืง ืฉืœื•ืฉื” ืกื•ื’ื™ื ืฉืœ ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื”. ืื ื™ืฉ ืœื›ื ืจื‘ืข ืฉืขื” ืคื ื•ื™ื” ืฉื•ื•ื” ืœืฆืคื•ืช ื•ื‘ื›ืœ ืžืงืจื” ื—ืฉื‘ืชื™ ืœืชืžืฆืช ืืช ืขื™ืงืจื™ ื”ื“ื‘ืจื™ื. ืื– ื”ื ื” ืฉืœื•ืฉืช ื”ืกื•ื’ื™ื ืฉืœ ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ืฉืื™ ืคืขื ืชืฆื˜ืจื›ื•: ## ื‘ื“ื™ืงืช ืžื™ื“ืข ืฉื—ื•ื–ืจ ืžืคื•ื ืงืฆื™ื” ื”ืกื•ื’ ื”ืจืืฉื•ืŸ ื•ื”ื›ื™ ืงืœ ืœื”ื‘ื ื” ื”ื•ื ื‘ื“ื™ืงื” ืฉืฆืจื™ื›ื” ืœื‘ื“ื•ืง ืฉืคื•ื ืงืฆื™ื” ืžืกื•ื™ืžืช ืžื—ื–ื™ืจื” ืืช ื”ืชื•ืฆืื” ื”ื ื›ื•ื ื” ืขื‘ื•ืจ ืงืœื˜ ืžืกื•ื™ื. ืœืฆื•ืจืš ื”ื“ื•ื’ืžื” ืื ืื ื—ื ื• ื‘ื•ื“ืงื™ื ืืช ื”ืงื•ื“ ืฉืœ ืžืขืจื›ื™ื ื‘ JavaScript, ื ื•ื›ืœ ืœื‘ื“ื•ืง ืฉื”ืžืืคื™ื™ืŸ length ืฉืœ ืžืขืจืš ื‘ืืžืช ืžื—ื–ื™ืจ ืืช ื”ืื•ืจืš ืฉืœื•:
test('array length returns its size', () => {
  const arr = [1, 2, 5];
  expect(arr.length).toEqual(3);
});
ื‘ื‘ื“ื™ืงื•ืช ื›ืืœื” ื—ืฉื•ื‘ ืœื‘ื“ื•ืง ื›ืžื” ืฉื™ื•ืชืจ ืžืงืจื™ื ืฉื•ื ื™ื. ืื•ืœื™ ื™ื”ื™ื” ืžืขื ื™ื™ืŸ ืœื‘ื“ื•ืง ืžืขืจืš ืจื™ืง ื•ื‘ื˜ื•ื— ื™ื”ื™ื” ืžืขื ื™ื™ืŸ ืœื‘ื“ื•ืง ืžืขืจืš ืขื ื—ื•ืจื™ื. ื›ื›ืœ ืฉื ื‘ื“ื•ืง ื™ื•ืชืจ ืžืฆื‘ื™ื ืฉื•ื ื™ื ื›ืš ื ื•ื›ืœ ืœื–ื”ื•ืช ื‘ื“ื™ื•ืง ืฉื™ื ื•ื™ ืงื•ื“ ืฉืฉื•ื‘ืจ ืžืฉื”ื• ื‘ืื™ืš ืฉ JavaScript ืžื ื”ืœืช ืžืขืจื›ื™ื (ืื• ื‘ื›ืœ ืงื•ื“ ืื—ืจ ืฉืืชื ื‘ื•ื“ืงื™ื). ื ืงื•ื“ื” ืžื‘ืœื‘ืœืช ื‘ื‘ื“ื™ืงื•ืช ื›ืืœื” ืงื•ืจื™ืช ื›ืฉื”ืงื•ื“ ื‘ืื•ืคืŸ ืื•ื˜ื•ืžื˜ื™ ืœื•ืงื— ืžื™ื“ืข ืžืงื•ื“ ืื—ืจ. ืงื—ื• ืœื“ื•ื’ืžื” ืืช ื”ืงืœืืก ื”ื‘ื ืขื“ื™ื™ืŸ ื‘ JavaScript-
class UserManager {
    constructor() {
        this.name = process.env["USER"];
    }
    
    isAdmin() {
        return this.name === 'ynon';
    }
}
ืื•ืœื™ ื”ื™ื™ืชื ืจื•ืฆื™ื ืœื›ืชื•ื‘ ื‘ื“ื™ืงืช ื™ื—ื™ื“ื” ืฉืžื•ื•ื“ืืช ืฉื”ืคื•ื ืงืฆื™ื” isAdmin ืžื—ื–ื™ืจื” true ืœืžืฉืชืžืฉ ื‘ืฉื ynon ื• false ืœืžืฉืชืžืฉื™ื ื‘ืฉืžื•ืช ืื—ืจื™ื. ื”ื‘ืขื™ื” ืฉื‘ื“ื™ืงื” ื›ื–ืืช ืชืœื•ื™ื” ื‘ืžืฉืชื ื” ืกื‘ื™ื‘ื” USER ื•ื›ื›ื” ื™ื•ืฆื ืฉืืชื ื‘ื•ื“ืงื™ื ื™ื•ืชืจ ืžืžื” ืฉืจืฆื™ืชื ืœื‘ื“ื•ืง (ืื• ืฉื™ื•ืฆืจื™ื Mock ื•ืื– ืžื™ื™ืฆืจื™ื ืชืœื•ืช ื’ื“ื•ืœื” ืžื“ื™ ื‘ื™ืŸ ืงื•ื“ ื”ื‘ื“ื™ืงื” ืœืงื•ื“ ื”ืžืขืจื›ืช). ื“ืจืš ืื—ืช ืงืœื” ืœืฆืืช ืžื”ืกื™ืคื•ืจ ื”ื–ื” ื”ื™ื ืœื‘ื ื•ืช ืื•ื‘ื™ืงื˜ this ืขืฆืžืื™ ื‘ืชื—ื™ืœืช ื”ื‘ื“ื™ืงื” ื•ืœื”ืฉืชืžืฉ ื‘ื•. ื‘ JavaScript ื–ื” ื™ื”ื™ื”:
test('UserManager#isAdmin', () => {
    it('returns "true" for user "ynon"', () => {
        expect(UserManager.prototype.isAdmin.call({ name: 'ynon' })).toEqual(true);
    });
});
ื‘ืฆื•ืจื” ื›ื–ืืช ืื ื—ื ื• ืžื‘ื™ื ื™ื ืฉื›ืœ ื”ืฉื“ื•ืช ืขืœ ื”ืื•ื‘ื™ืงื˜ ืฉืžืคืขื™ืœ ืืช ื”ืžืชื•ื“ื” ื”ื ื—ืœืง ืžื”ืงืœื˜ ื•ืžืขื‘ื™ืจื™ื ืืช ื”ืขืจื›ื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื ืœื”ืขื‘ื™ืจ ืชื•ืš ื“ื™ืœื•ื’ ืขืœ ื” constructor. ## ื‘ื“ื™ืงืช ื”ืฉืคืขื” ืฉืœ ื”ืคื•ื ืงืฆื™ื” ืขืœ State ื—ื™ืฆื•ื ื™ ืกื•ื’ ืฉื ื™ ืฉืœ ื‘ื“ื™ืงื•ืช ื”ื•ื ื–ื” ืฉื‘ื•ื“ืง ืืช ื”ื”ืฉืคืขื” ืฉืœ ืงืจื™ืื” ืžืกื•ื™ืžืช ืขืœ State ื—ื™ืฆื•ื ื™. ื‘ื“ื•ื’ืžื” ืฉืœ ืžืขืจื›ื™ื ืื ื™ ื™ื›ื•ืœ ืœื‘ื“ื•ืง ืฉื”ืคื•ื ืงืฆื™ื” push ื‘ืืžืช ืžื•ืกื™ืคื” ืคืจื™ื˜ ืœืžืขืจืš:
test('array#push', () => {
    const arr = [1, 2, 5];
    arr.push(10);
    expect(arr.length).toEqual(4);
    expect(arr[3]).toEqual(10);
});
ื‘ืกื•ื’ ื”ื–ื” ืฉืœ ื‘ื“ื™ืงื•ืช ื›ืฉืื ื™ ื›ื•ืชื‘ State ื—ื™ืฆื•ื ื™ ืื ื™ ืžื“ื‘ืจ ืกืคืฆื™ืคื™ืช ืขืœ ืžื™ื“ืข - ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืฉืชื ื™ื ื’ืœื•ื‘ืืœื™ื™ื ืื• ืฉื“ื•ืช ืื—ืจื™ื ื‘ืื•ื‘ื™ืงื˜, ืื‘ืœ ืœื ืชื”ื™ื” ืคื” ืื™ื ื˜ืจืงืฆื™ื” ืขื ืงื•ื“ ืื—ืจ. ื“ื™ื™ื‘ ืคืืจืœื™ ื“ื™ื‘ืจ ื‘ืกืจื˜ ืขืœ ื–ื” ืฉื‘ืกื•ื’ ื‘ื“ื™ืงื•ืช ื›ื–ื” ืœื ืžื•ืžืœืฅ ืœื›ืชื•ื‘ ืชื ืื™ื ืื• ืœื•ืœืื•ืช, ื•ืขื“ื™ืฃ ืœื‘ื“ื•ืง ื‘ืฆื•ืจื” ืžืคื•ืจืฉืช ืืช ื›ืœ ื”ืฉื™ื ื•ื™ื™ื ืฉืืชื ืฆืจื™ื›ื™ื. ื”ืืชื’ืจ ื‘ื‘ื“ื™ืงื•ืช ื›ืืœื” ื”ื•ื ืœืฉื™ื ืœื‘ ืœืืชื—ืœ ืืช ื”ืกื˜ื™ื™ื˜ ื”ื—ื™ืฆื•ื ื™ ืœืคื ื™ ื”ื‘ื“ื™ืงื”, ื›ื“ื™ ืฉืœื ื™ื•ื•ืฆืจ ืœื›ื ืงืฉืจ ื‘ื™ืŸ ื‘ื“ื™ืงื•ืช ืื• ืชืœื•ืช ื‘ืกื“ืจ ื”ืจืฆืช ื”ื‘ื“ื™ืงื•ืช. ## ื‘ื“ื™ืงืช ืื™ื ื˜ืจืงืฆื™ื” ื‘ื™ืŸ ื”ืงื•ื“ ื”ื ื‘ื“ืง ืœืงื•ื“ ืื—ืจ ื”ืกื•ื’ ื”ืฉืœื™ืฉื™ ื•ื”ืžื•ืจื›ื‘ ื‘ื™ื•ืชืจ ืฉืœ ื‘ื“ื™ืงื•ืช ื™ื—ื™ื“ื” ื”ื•ื ื‘ื“ื™ืงืช ื”ืื™ื ื˜ืจืงืฆื™ื” ื‘ื™ืŸ ื”ืงื•ื“ ื”ื ื‘ื“ืง ืœื‘ื™ืŸ ืงื•ื“ ืื—ืจ ื‘ืžืขืจื›ืช. ื”ื‘ื“ื™ืงื•ืช ื”ืืœื” ืžืกื•ื‘ื›ื•ืช ื›ื™ ื”ืจืฆื•ืŸ ืœื”ื™ืฉืืจ ื‘ืจืžืช ื‘ื“ื™ืงืช ื”ื™ื—ื™ื“ื” ื’ื•ืจืจ ืื•ืชื ื• ืœื›ืชื•ื‘ Mock-ื™ื ืžืชื•ื—ื›ืžื™ื ืฉื™ื“ืžื• ืืช ื”ื”ืชื ื”ื’ื•ืช ืฉืœ ื”ืงื•ื“ ื”ื—ื™ืฆื•ื ื™. ื”ื ื” ื“ื•ื’ืžื” ืคืฉื•ื˜ื” ืœืงื•ื“ ืฉืžืชืงืฉืจ ืขื ืงื•ื“ ืื—ืจ:
function throwDice(sides) {
  return Math.floor(Math.random() * sides) + 1;
}
ื”ืคื•ื ืงืฆื™ื” ืงื•ืจืืช ืœืคื•ื ืงืฆื™ื” Math.random ื›ื“ื™ ืœืงื‘ืœ ืžืกืคืจ ืืงืจืื™ ื‘ื™ืŸ 0 ืœ-1, ื›ื•ืคืœืช ื‘ืžืกืคืจ ื”ืคืื•ืช ืฉืœ ื”ืงื•ื‘ื™ื”, ื–ื•ืจืงืช ืืช ื›ืœ ื”ืกืคืจื•ืช ืฉืื—ืจื™ ื”ื ืงื•ื“ื” ื•ืžื•ืกื™ืคื” ืื—ื“ ื›ื“ื™ ืœืงื‘ืœ ืžืกืคืจ ืืงืจืื™ ื‘ื™ืŸ 1 ืœืžืกืคืจ ื” sides ืฉืงื™ื‘ืœื ื•. ื‘ืฉื‘ื™ืœ ืœื›ืชื•ื‘ ื‘ื“ื™ืงืช ืื™ื ื˜ืจืงืฆื™ื” ืขื‘ื•ืจื” ืื ื™ ืฆืจื™ืš ืœื“ืจื•ืก ืืช Math.random ื•ืœื’ืจื•ื ืœื” ืœื”ื—ื–ื™ืจ ืขืจื›ื™ื ืกืคืฆื™ืคื™ื™ื ืฉืžืขื ื™ื™ื ื™ื ืื•ืชื™, ื•ื’ื ืœื•ื•ื“ื ื‘ืกื•ืฃ ื”ื‘ื“ื™ืงื” ืฉื‘ืืžืช Math.random ื ืงืจืื”. ื›ื›ืœ ืฉื”ืงื•ื“ ืื™ืชื• ืื ื™ ืžืชืงืฉืจ ืžืกื•ื‘ืš ื™ื•ืชืจ, ื›ืš ื“ืจื™ืกื” ืฉืœื• ื”ื™ื ืชื”ืœื™ืš ืžืกื•ื‘ืš ื™ื•ืชืจ ืขื“ ืฉื”ืจื‘ื” ืคืขืžื™ื ื™ื•ืฆื ืฉื‘ื“ื™ืงื•ืช ืžื”ืกื•ื’ ื”ื–ื” ื”ืŸ ื’ื ืžืื•ื“ ืžืกื•ื‘ื›ื•ืช ื•ื’ื ืœื—ืœื•ื˜ื™ืŸ ื—ืกืจื•ืช ืขืจืš. ื™ืฉ ื™ื•ืชืจ ืžื“ื™ ื“ืจื™ืกื•ืช ืฉืœ ืงื•ื“ ื—ื™ืฆื•ื ื™ ืฉื›ืœ ืžื” ืฉื”ืŸ ื‘ื•ื“ืงื•ืช ื–ื” ืืช ื”ืื™ื ื˜ืจืงืฆื™ื•ืช ื‘ื™ืŸ ืื•ืชื Mock-ื™ื.

ToCode
1 419
# ืคืจื™ื™ืžื•ื•ืจืง ืžืขืœ ืคืจื™ื™ืžื•ื•ืจืง (ืื•: ืœืžื” ืงื•ื“ ืžืกืชื‘ืš) ืœื™ืื•ืจ ื‘ืจ ืื•ืŸ ื›ืชื‘ ืคื•ืกื˜ ืžืขื ื™ื™ืŸ ืขืœ Execution ื•ื‘ื”ืขืจืช ืื’ื‘ ื”ื•ื ื›ื•ืชื‘ ืฉื ืฉ"ืžืขืจื›ื•ืช ืชื•ื›ื ื” ื ื•ื˜ื•ืช ืœื”ืกืชื‘ืš ื•ืœื”ื™ื•ืช ืงืฉื•ืช ื™ื•ืชืจ ืœื”ืจื—ื‘ื” ื›ื›ืœ ืฉื”ืŸ ื’ื“ืœื•ืช / ื”ื–ืžืŸ ืขื•ื‘ืจ". ื™ืฉ ื”ืจื‘ื” ืกื™ื‘ื•ืช ืœืชื•ืคืขื” ื”ื–ืืช (ื•ื’ื ืœื™ืื•ืจ ื›ื•ืชื‘ ืขืœื™ื”ืŸ ื‘ืžืงื•ืžื•ืช ืื—ืจื™ื) ื•ืคื” ืื ื™ ืจื•ืฆื” ืœื”ืชืžืงื“ ื‘ืชื•ืคืขื” ืฉื ืงืจื ืœื” "ืคืจื™ื™ืžื•ื•ืจืง ืขืœ ืคืจื™ื™ืžื•ื•ืจืง". ืื ื ืกืชื›ืœ ืขืœ ื”ื”ื‘ื“ืœ ื‘ื™ืŸ ืžืขืจื›ื•ืช ืคืฉื•ื˜ื•ืช ืœืžืขืจื›ื•ืช ืžื•ืจื›ื‘ื•ืช, ื ืจืื” ืฉืžืขื‘ืจ ืœืžืกืคืจ ืฉื•ืจื•ืช ื”ืงื•ื“ ื™ืฉ ืžืืคื™ื™ืŸ ืื—ื“ ื‘ื•ืœื˜ ืœืžืขืจื›ื•ืช ืžื•ืจื›ื‘ื•ืช: ื”ืŸ ื›ื•ืœืœื•ืช ื”ืจื‘ื” ื™ื•ืชืจ ืฉื•ืจื•ืช ืงื•ื“ ืฉืื ื—ื ื• ื›ืชื‘ื ื• ืœืขื•ืžืช ืฉื•ืจื•ืช ืงื•ื“ ืžื”ืคืจื™ื™ืžื•ื•ืจืง. ืื ื ื ื™ื— ื‘ื—ืจื ื• ืœื“ื‘ืจ ืขืœ ืจื™ืืงื˜, ืื– ืคืจื•ื™ืงื˜ ืจื™ืืงื˜ ื”ื•ืคืš ืœื”ื™ื•ืช ืžืขื ื™ื™ืŸ ื›ืฉื™ืฉ ืœื ื• ื™ื•ืชืจ ืฉื•ืจื•ืช ืงื•ื“ ืฉืื ื—ื ื• ื›ืชื‘ื ื• ืžืืฉืจ ืฉื•ืจื•ืช ืงื•ื“ ื‘ืจื™ืืงื˜ ืขืฆืžื•, ืื• ื›ืฉืจื•ื‘ ืžื•ื—ืœื˜ ืฉืœ ื”ืขื‘ื•ื“ื” ืงื•ืจื” ื‘ืงื•ื“ ืฉืœื ื•. ื™ืฉ ืกื•ื’ื™ ืžืขืจื›ื•ืช ื•ืคืจื™ื™ืžื•ื•ืจืงื™ื ืฉื”ืจื’ืข ื”ื–ื” ื™ื’ื™ืข ื‘ื”ื ืžืื•ื“ ืžืื•ื—ืจ, ื•ืื—ืจื™ื ืฉื”ื•ื ื™ื’ื™ืข ื‘ื”ื ืžืื•ื“ ืžื•ืงื“ื. ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ืขื Rails ื”ืจืื” ืฉื‘ืžืขืจื›ื•ืช CMS ืื• ื‘ืœื•ื’ื™ื ื•ื‘ืฉื™ืžื•ืฉ ื ื›ื•ืŸ ื‘ืจื™ื™ืœืก ืงืฉื” ืžืื•ื“ "ืœืฆืืช" ืžื”ืคืจื™ื™ืžื•ื•ืจืง ื•ืœื”ื’ื™ืข ืœื ืงื•ื“ื” ื‘ื” ืจื•ื‘ ื”ืขื‘ื•ื“ื” ืงื•ืจื™ืช ืืฆืœืš. ืžืฆื“ ืฉื ื™ ื‘ืคืจื•ื™ืงื˜ื™ Front End ื”ื ืงื•ื“ื” ื”ื–ืืช ืžื’ื™ืขื” ืžื”ืจ ืžืื•ื“. ืืคืฉืจ ืœื”ื’ื™ื“ ืฉืคืจื™ื™ืžื•ื•ืจืง ื”ื•ื ืื‘ืกื˜ืจืงืฆื™ื” ืขืœ ืžืขืจื›ืช ืžืกื•ื™ืžืช, ื•ื›ื›ืœ ืฉื”ืžืขืจื›ืช ืฉืื ื—ื ื• ื‘ื•ื ื™ื ืฉื•ื ื” ืžื”ืžืขืจื›ืช ืฉื”ืคืจื™ื™ืžื•ื•ืจืง ื ื’ื–ืจ ืžืžื ื”, ื›ืš ื ื‘ืจื— ื™ื•ืชืจ ืžื”ืจ ืžื”ืคืจื™ื™ืžื•ื•ืจืง ื•ื ื•ืกื™ืฃ ืขืœื™ื• ืจื›ื™ื‘ื™ื ืžืฉืœื ื•. ื‘ืžื™ืœื™ื ืื—ืจื•ืช ืืคืฉืจ ืœื”ืกืชื›ืœ ืขืœ ื”ืคืจื™ื™ืžื•ื•ืจืง ื‘ืชื•ืจ "ืžืกืœื•ืœ" ืฉืœื•ืงื— ืื•ืชื™ ื™ื“ ื‘ื™ื“ ื‘ื‘ื ื™ื™ืช ืžืขืจื›ืช ืžืกื•ื’ ืžืกื•ื™ื. ื‘ืคืจื•ื ื˜ืื ื“ ืื•ื”ื‘ื™ื ืœืชืช ืืช ื“ื•ื’ืžืช ื” Todo App ื‘ืชื•ืจ ื“ื•ื’ืžื” ืœื›ืœ ืคืจื™ื™ืžื•ื•ืจืง JavaScript, ื•ื›ื›ื” ืœืื•ืจืš ื–ืžืŸ ื”ืคืจื™ื™ืžื•ื•ืจืงื™ื ื”ืืœื” ื”ืคื›ื• ืœืžืกืœื•ืœ ืœื‘ื ื™ื™ืช Todo Apps. ืื ื–ื” ืžื” ืฉืืชื ืฆืจื™ื›ื™ื ืœื‘ื ื•ืช ื”ืžืขืจื›ืช ืฉืœื›ื ืชื™ืฉืืจ ืžืื•ื“ ืคืฉื•ื˜ื”. ืื‘ืœ ื‘ื’ืœืœ ืฉืื ื—ื ื• ื‘ื•ื ื™ื ืžืฉื”ื• ืื—ืจ, ื•ื‘ื’ืœืœ ืฉื‘ืขื•ืœื ื”ืคืจื•ื ื˜ ืื ื“ ืื ื—ื ื• ื‘ื“ืจืš ื›ืœืœ ืžืฉืœื‘ื™ื ื”ืžื•ืŸ ืกืคืจื™ื•ืช ืงื˜ื ื•ืช ืœื™ื“ ื”ืคืจื™ื™ืžื•ื•ืจืง, ื ื•ืฆืจ ืžืฆื‘ ืฉื›ืœ ืžืขืจื›ืช ื”ื™ื ื”ืจื›ื‘ื” ืฉืœ ื”ืžื•ืŸ ื”ืžื•ืŸ ื—ืœืงื™ื ืงื˜ื ื™ื ื•ืœื ืชืžื™ื“ ืงืฉื•ืจื™ื. ื”ืคืจื™ื™ืžื•ื•ืจืง ื”ืžืงื•ืจื™ ืฉื”ืฉืชืžืฉื ื• ื‘ื• ื”ื•ื ืื•ืœื™ React, ืื‘ืœ ื‘ืคื•ืขืœ ื”ืคืจื™ื™ืžื•ื•ืจืง ืฉืื ื™ ืžืฉืชืžืฉ ื‘ื• ื”ื•ื ืจื™ืืงื˜ ื™ื—ื“ ืขื ืื•ืกืฃ ื›ืœ ื”ื—ื‘ื™ืœื•ืช ื”ืงื˜ื ื•ืช ืž npm ืฉื”ืชืงื ืชื™ ื™ื—ื“ ืขื ื›ืœ ื”ืงื•ื“ ืฉืœื™ ืฉืžื“ื‘ื™ืง ืืช ื›ืœ ื”ื—ืœืงื™ื ื”ืืœื” ื™ื—ื“. ื”ืชื•ืฆืื” ืฉืœ ื›ืœ ืืœื” ื”ื™ื ืคืจื™ื™ืžื•ื•ืจืง ื—ื“ืฉ - ืคืจื™ื™ืžื•ื•ืจืง ืคืจื˜ื™, ื™ื™ื—ื•ื“ื™ ืœืžื•ืฆืจ ืฉืœื™, ืฉื ื›ืชื‘ ื‘ืœื™ ืชื›ื ื•ืŸ ืžืจืืฉ ื•ื‘ื›ืœ ื–ืืช ื‘ืชื•ื›ื• ืื ื™ ืขื•ื‘ื“. ื›ืžืชื›ื ืชื™ื ื”ื™ื•ื ืื ื—ื ื• ืจื’ื™ืœื™ื ืœื—ืคืฉ ื‘ื’ื•ื’ืœ ืคื™ืชืจื•ื ื•ืช ืœื‘ืขื™ื•ืช ื ืคื•ืฆื•ืช ื›ืฉืžืฉื”ื• ืœื ืขื•ื‘ื“. ื‘ืžื™ื•ื—ื“ ืžืชื›ื ืชื™ ืคืจื•ื ื˜ืื ื“ ืฉืœืžื“ื• ืœื‘ื“ ืื™ืš ืœื›ืชื•ื‘ ืงื•ื“ ื•ืื•ืœื™ ื‘ื ื• ืœืขืฆืžื ืคืจื•ื™ืงื˜ Green Field (ื›ืœื•ืžืจ ืคืจื•ื™ืงื˜ ืฉืžืชื—ื™ืœ ืžืืคืก ื•ืžืฉืชืžืฉ ื‘ืคืจื™ื™ืžื•ื•ืจืง ื‘ืฆื•ืจื” ื ืงื™ื”). ืื‘ืœ ืื ื ื ืกื” ืœื—ืคืฉ ื‘ื’ื•ื’ืœ ืคื™ืชืจื•ืŸ ืœื‘ืขื™ื” ื‘ืคืจื•ื™ืงื˜ ืงื™ื™ื ื ื’ืœื” ืฉื™ืฉ ืื™ื ืกื•ืฃ ืคื™ืชืจื•ื ื•ืช ื•ืืฃ ืื—ื“ ืžื”ื ืœื ืจืœื•ื•ื ื˜ื™ ืขื‘ื•ืจื ื•. ืื•ืกืฃ ื”ืกืคืจื™ื•ืช ื•ืงื•ื“ ื”ื“ื‘ืง ืฉืœื ื•, ื”ืคืจื™ื™ืžื•ื•ืจืง-ืžืขืœ-ืคืจื™ื™ืžื•ื•ืจืง ืฉืœื ื•, ื”ื•ื ื™ื™ื—ื•ื“ื™ ื›ืœ ื›ืš ืขื“ ืฉืื™ ืืคืฉืจ ืœื—ืคืฉ ื‘ื’ื•ื’ืœ ืชืฉื•ื‘ื•ืช ืืคื™ืœื• ืœื“ื‘ืจื™ื ืฉื ืจืื™ื ืžืื•ื“ ื‘ืกื™ืกื™ื™ื. ื”ืคืจื™ื™ืžื•ื•ืจืง-ืžืขืœ-ืคืจื™ื™ืžื•ื•ืจืง ืฉื›ืชื‘ื ื• ื’ื ืฆืจื™ืš ืชื—ื–ื•ืงื”, ื•ื‘ื’ืœืœ ืฉืื ื—ื ื• ืœื ื—ื•ืฉื‘ื™ื ืขืœ ืขืฆืžื ื• ื›ืžืคืชื—ื™ ืคืจื™ื™ืžื•ื•ืจืง (ื™ืฉ ืœื ื• ืžื•ืฆืจ ืœื‘ื ื•ืช), ืื– ืื ื—ื ื• ืœื ืžื•ืฆืื™ื ื–ืžืŸ ืœืชื—ื–ื•ืงื” ื”ื–ืืช. ืงืฉื” ืœืžืฆื•ื ื–ืžืŸ ืœืขื“ื›ืŸ ืืช ื”ืชืœื•ื™ื•ืช ืื• ืœืขืฉื•ืช Refactoring ืœืงื•ื“ ื”ื“ื‘ืง ืฉื‘ื ื™ื ื•. ืืคื™ืœื• ืืช ื”ื‘ื“ื™ืงื•ืช ืœื ืชืžื™ื“ ืžื•ืฆืื™ื ื–ืžืŸ ืœืชืงืŸ. ื•ื›ื›ื” ืื ื—ื ื• ื ืฉืืจื™ื ืขื "ืคืจื™ื™ืžื•ื•ืจืง" ืœื ื™ืฆื™ื‘ ื•ืžืชืคืœืื™ื ืฉื›ื›ืœ ืฉื”ืžื•ืฆืจ ืžืกืชื‘ืš ื”ืชื—ื–ื•ืงื” ื”ื•ืคื›ืช ืงืฉื” ื™ื•ืชืจ ื•ื”ื‘ืื’ื™ื ื”ืœื ื‘ืจื•ืจื™ื ืžืชืจื‘ื™ื. ืื ื—ื ื• ื—ื•ืœืžื™ื ืœื—ื–ื•ืจ ืœืคืจื•ื™ืงื˜ Green Field ื‘ืœื™ ืœื”ื‘ื™ืŸ ืฉื’ื ื‘ืคืขื ื”ื‘ืื” ืฉื ืžื—ืง ื”ื›ืœ ื•ื ืชื—ื™ืœ ืžื—ื“ืฉ ื”ืกื™ื‘ื•ืš ื™ื’ื™ืข ืฉื•ื‘, ื›ื™ ื”ืกื™ื‘ื•ืš ื”ื•ื ืชื•ืฆืื” ืฉืœ ืชื”ืœื™ื›ื™ ืขื‘ื•ื“ื” ื•ืกื“ืจื™ ืขื“ื™ืคื•ื™ื•ืช. ื”ื—ื“ืฉื•ืช ื”ืจืขื•ืช ื”ืŸ ืฉืื™ืŸ ืคื™ืชืจื•ื ื•ืช ืงืœื™ื. ืœื‘ื ื•ืช ืคืจื™ื™ืžื•ื•ืจืง ื–ื” ื”ืจื‘ื” ืขื‘ื•ื“ื” ื•ื”ืคืจื™ื™ืžื•ื•ืจืงื™ื ื”ืงื™ื™ืžื™ื ื‘ Front End ื‘ืืžืช ืœื ืžืกืคื™ืง ื˜ื•ื‘ื™ื ื‘ืฉื‘ื™ืœ ื”ืืคืœื™ืงืฆื™ื” ืฉืœื›ื. ืžืฆื“ ืฉื ื™ ื‘ืจื’ืข ืฉืืชื ืจื•ืื™ื ืฉื‘ื ื™ืชื ืคืจื™ื™ืžื•ื•ืจืง ื‘ืœื™ ืœื”ืชื›ื•ื•ืŸ, ืชื•ื›ืœื• ืœืงื—ืช ืืช ื”ืฆืขื“ ื”ื‘ื ื•ืœื”ืชื—ื™ืœ ืœืชื—ื–ืง ืื•ืชื•. ืœืื•ืจืš ื–ืžืŸ ื–ืืช ื”ื“ืจืš ื”ื™ื—ื™ื“ื” ืœื’ื“ื•ืœ.

ToCode
1 419
# ื”ืกื—ื•ืช ื“ืขืช ืžืชื›ื ืชื™ื ืื•ื”ื‘ื™ื ืœืงื˜ืจ ืขืœ ื›ืœ ื“ื‘ืจ ืฉืžืคืจื™ืข ืœื ื• ืœืฉื‘ืช ืœืชื›ื ืช ื›ืœ ื”ื™ื•ื: ืคื’ื™ืฉื•ืช, ืชืงืœื•ืช ืคืจื•ื“ืงืฉืŸ, ืื ืฉื™ ืคืจื•ื“ืงื˜ ืฉืžืฉื ื™ื ืืช ื“ืขืชื ืžืขื›ืฉื™ื• ืœืขื›ืฉื™ื•. ืื ื—ื ื• ืื•ืžืจื™ื ืฉื›ืœ ื”ืกื—ืช ื“ืขืช ื›ื–ืืช ื™ื›ื•ืœื” ืœื”ื—ื–ื™ืจ ืื•ืชื ื• ื’ื ื—ืฆื™ ืฉืขื” ืื—ื•ืจื” ื‘ืขื‘ื•ื“ื”, ื•ื™ืฉ ืฉื™ื’ื™ื“ื• ืฉืืคื™ืœื• ืฉืืœื” ืฉืœ ื›ืžื” ืฉื ื™ื•ืช ื™ื›ื•ืœื” ืœืขืœื•ืช ืœื”ื ื‘ื“ืงื•ืช ืืจื•ื›ื•ืช ืฉืœ ืžื—ืฉื‘ื” ืขื“ ืฉืžื•ืฆืื™ื ืžื—ื“ืฉ ืืช ื”ืงืฉื‘. ื•ื›ืžื• ืฉื™ืฉ ื”ืกื—ืช ื“ืขืช ื‘ื™ื•ื ืชื›ื ื•ืช ื™ืฉ ื’ื ื”ืกื—ื•ืช ื“ืขืช ื™ื•ืชืจ ื’ื“ื•ืœื•ืช ื‘ืงืจื™ื™ืจื”: 1. ืขืœื•ืช ืฉืงื•ืขื” - ื”ืขื•ื‘ื“ื” ืฉื›ื‘ืจ ืœืžื“ืชื™ 10 ืฉื ื™ื Java ื’ื•ืจืžืช ืœื™ ืœื”ืขื“ื™ืฃ ืžืฉืจืช ืžืชื›ื ืช Java ืžืืฉืจ ืขื‘ื•ื“ื” ืื—ืจืช, ืœืžืจื•ืช ืฉื”ืขื‘ื•ื“ื” ื”ืื—ืจืช ืื•ืœื™ ื™ื•ืชืจ ืžืฉืชืœืžืช ื›ืœื›ืœื™ืช ืœื˜ื•ื•ื— ื”ืจื—ื•ืง. ื›ืœ ืคืจื•ื™ืงื˜ ื—ื“ืฉ ืฉืื ื™ ืœื•ืงื— ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื™ืฉื ื” ืจืง ื”ื•ืคืš ืืช ื”ืžืขื‘ืจ ืœื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื—ื“ืฉื” ืœื™ื•ืชืจ ืงืฉื”. 2. ื”ืกืชื›ืœื•ืช ืขืœ ื”ื˜ื•ื•ื— ื”ืงืฆืจ - ื”ืขื•ื‘ื“ื” ืฉืขื›ืฉื™ื• ื™ืฉ ืœื™ ื”ื–ื“ืžื ื•ืช ืœืงื—ืช ืคืจื•ื™ืงื˜ X ืœื ืื•ืžืจืช ืฉื”ืคืจื•ื™ืงื˜ ื”ื–ื” ื‘ืจื™ื ื‘ืฉื‘ื™ืœื™; ื”ื™ื ืจืง ืื•ืžืจืช ืฉืœืงื•ื— ืžืกื•ื™ื ืขื ืคืจื•ื™ืงื˜ X ืขื›ืฉื™ื• ืžืฆื ืื•ืชื™. ื”ืคืจื•ื™ืงื˜ ื”ื–ื” ื™ื›ื•ืœ ืœื—ืกื•ื ืœื™ ื”ื–ื“ืžื ื•ืช ื•ืœืขื›ื‘ ืืช ื”ืฆืžื™ื—ื” ืฉืœื™ ื‘ื—ื•ื“ืฉื™ื ืืจื•ื›ื™ื. 3. ืคื—ื“ - ื”ืื ืชื”ื™ื” ืœื™ ืขื‘ื•ื“ื” ื‘ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื—ื“ืฉื”? ื”ืื ืื™ ืคืขื ืืฆืœื™ื— ืœื”ื™ื•ืช ื˜ื•ื‘ ื‘"ืœืžื™ื“ืช ืžื›ื•ื ื”" ื›ืžื• ืฉืื ื™ ื˜ื•ื‘ ื‘ Java? ื”ืื Swift ื–ื” ืœื ืขื•ื“ ื˜ืจื ื“ ื—ื•ืœืฃ ืฉืขื•ื“ ืฉื ืชื™ื™ื ื™ืขืœื? ืขื“ื™ืฃ ื›ื‘ืจ ืœื”ืžืฉื™ืš ื‘ืžื” ืฉืื ื™ ืขื•ืฉื” ื”ื™ื•ื. 4. "ืžื” ืืชื” ืžืงื˜ืจ, ื”ื—ื™ื™ื ืฉืœืš ื“ื‘ืฉ" - ื›ืœื•ื‘ ื”ื–ื”ื‘ ืฉืœ ืขื‘ื•ื“ื” ื‘ื”ื™ื™ื˜ืง ื‘ื ื•ื™ ื›ื“ื™ ืœื”ืกื™ื— ืืช ื”ื“ืขืช ืžื”ืฉื™ื ื•ื™ื™ื ื”ืžื”ื•ืชื™ื™ื ืฉืงื•ืจื™ื ื‘ืฉื•ืง ื”ืขื‘ื•ื“ื” ื•ืžื”ื”ื–ื“ืžื ื•ื™ื•ืช ื”ื—ื“ืฉื•ืช ืฉื ืคืชื—ื•ืช. ื’ื ืื ื”ื—ื™ื™ื ื ืจืื™ื ื“ื‘ืฉ ืœืžื™ืฉื”ื• ืฉืžืกืชื›ืœ ืžื‘ื—ื•ืฅ, ืจืง ืืชื ื™ื•ื“ืขื™ื ืžื” ืืชื ืžืจื’ื™ืฉื™ื ื‘ืืžืช. ืฉื™ื’ืจื” ื”ื™ื ื’ื ืกื•ื’ ืฉืœ ื”ืกื—ืช ื“ืขืช ืฉืžืคืจื™ืขื” ืœื”ื’ื™ืข ืœื—ื™ื™ื ืฉืืชื ืจื•ืฆื™ื. ืœื‘ื ื•ืช ืงืจื™ื™ืจื” ืžื•ืฆืœื—ืช ื–ื” ื’ื ื›ื›ื” ืงืฉื”. ื›ืฉืืชื ืžื–ื”ื™ื ืฉืœื ืžืฆืœื™ื—ื™ื ืœื”ืชืงื“ื ืฉื•ื•ื” ืœื”ืชืืžืฅ ืœื”ืกืชื›ืœ ืžื” ืžืกื™ื— ืืชื›ื ืžื”ืžื˜ืจื” ื•ืœืฆืžืฆื ื”ืกื—ื•ืช ื“ืขืช. ื”ืขืœื•ืช ืฉืœื”ืŸ ื”ืจื‘ื” ื™ื•ืชืจ ื’ื‘ื•ื”ื” ืžืžื” ืฉื ื“ืžื”.

ToCode
1 419
# ืขื•ื“ ืžื‘ื˜ ืขืœ ื–ืžืŸ ื“ืจืš ืื—ืช ืœื”ืกืชื›ืœ ืขืœ ื–ืžืŸ ื”ื™ื ื‘ืชื•ืจ ืื™ืœื•ืฅ - ื‘ื™ืžืžื” ื™ืฉ 24 ืฉืขื•ืช, ืชื•ืจื™ื“ื• 6 ืœืฉื™ื ื” ื•ืžื” ืฉื ืฉืืจ ื–ื” ื”"ืชืงืฆื™ื‘" ืฉืœื›ื, ื•ืขื›ืฉื™ื• ืฆืจื™ืš ืœื”ื—ืœื™ื˜ ื‘ืžื” ืœื”ืฉืงื™ืข ืื•ืชื•. "ืœื ื”ื™ื” ืœื™ ื–ืžืŸ" ื•"ืœื ื”ืกืคืงืชื™" ื”ืŸ ืชื•ืฆืื•ืช ื”ื’ื™ื•ื ื™ื•ืช ืœื ืงื•ื“ืช ื”ืžื‘ื˜ ื”ื–ืืช, ื‘ื“ื™ื•ืง ื›ืžื• ืฉืื ืื ื™ ื™ื•ืฆื ืขื ืชืงืฆื™ื‘ ืœืกื•ืคืจ ื™ื”ื™ื• ื“ื‘ืจื™ื ืฉืœื ืืงื ื” ื›ื™ ื”ื ื—ื•ืจื’ื™ื ืžื”ืกื›ื•ื ืฉืชื›ื ื ืชื™ ืœื”ื•ืฆื™ื. ื“ืจืš ื™ื•ืชืจ ืžืขื ื™ื™ื ืช ืœื”ืกืชื›ืœ ืขืœ ื–ืžืŸ ื”ื™ื ื‘ืชื•ืจ ืชื•ืฆืื” - ืชื•ืฆืื” ืฉืœ ืกื“ืจื™ ื”ืขื“ื™ืคื•ื™ื•ืช ืฉืœื™ ื‘ื—ื™ื™ื. ื‘ื’ื™ืฉื” ื–ื• ืื ื™ ืจื•ืฉื ืžื” ืขืฉื™ืชื™ ื”ื™ื•ื (ืžืžืฉ ืžืกื•ื“ืจ ืœืคื™ ืฉืขื•ืช) ื•ืžื ืกื” ืœื”ื‘ื™ืŸ ืžืชื•ืš ื”ื“ื‘ืจื™ื ืฉืขืฉื™ืชื™ ืžื”ื ืกื“ืจื™ ื”ืขื“ื™ืคื•ื™ื•ืช ื”ืืžื™ืชื™ื™ื ืฉืœื™. ื‘ื’ื™ืฉื” ื›ื–ืืช "ืœื ื”ืกืคืงืชื™" ืžื•ื—ืœืฃ ื‘"ื–ื” ื›ื ืจืื” ืœื ื”ื™ื” ืžืกืคื™ืง ื’ื‘ื•ื” ื‘ืกื“ืจ ื”ืขื“ื™ืคื•ื™ื•ืช ืฉืœื™". ืœืžืจื•ืช ืฉืฉืชื™ ื”ื’ื™ืฉื•ืช ืžืชืืจื•ืช ืืช ืื•ืชื• ืื™ืจื•ืข (ืื™ืš ื‘ื™ืœื™ืชื™ ืืช ื”ื™ื•ื), ืื ื™ ืื•ื”ื‘ ืืช ื”ื’ื™ืฉื” ื”ืฉื ื™ื” ื™ื•ืชืจ - ื›ื™ ื”ื™ื ืคื•ืชื—ืช ื“ืœืช ืœืฉื™ื ื•ื™. ืงืฉื” ืžืื•ื“ ืœื”ืฉื™ื’ ืขื•ื“ ื–ืžืŸ. ื”ืจื‘ื” ื™ื•ืชืจ ืงืœ ืœืฉื ื•ืช ืกื“ืจื™ ืขื“ื™ืคื•ื™ื•ืช.

ToCode
1 419
# ื˜ื™ืค Web Scraping ืฉืœืžื“ืชื™ ืžื˜ืœื’ืจื ื”ืคื™ืฆ'ืจ ื”ื›ื™ ืžืœื”ื™ื‘ ื‘ื’ื™ืจืกื” ื”ื—ื“ืฉื” ืฉืœ ื˜ืœื’ืจื ื ืงืจื ืชืจื’ื•ืžื™ื ื•ื”ื•ื ืžืืคืฉืจ ืœื›ื ืœืงื‘ืœ ืชืจื’ื•ื ืฉืœ ื”ื•ื“ืขื” ื‘ืœื—ื™ืฆืช ื›ืคืชื•ืจ ื•ื‘ืœื™ ืœืฆืืช ืžื”ื™ื™ืฉื•ื. ื•ื–ื” ืžืœื”ื™ื‘ ื›ื™ ืขื›ืฉื™ื• ื›ื‘ืจ ืœื ืฆืจื™ืš ื™ื•ืชืจ ืœืขื‘ื•ืจ ื‘ื™ืŸ ื˜ืœื’ืจื ืœื’ื•ื’ืœ ื˜ืจื ืกืœื™ื™ื˜ ื‘ืงืจื™ืื” ืฉืœ ืขืจื•ืฆื™ื ื–ืจื™ื. ืื‘ืœ ื—ื•ืฅ ืžื”ื ื•ื—ื•ืช ืคื™ืฆ'ืจ ื”ืชืจื’ื•ืžื™ื ื’ื ื—ืฉืฃ ื˜ืจื™ืง ืฉืœืคื—ื•ืช ืื ื™ ืœื ื—ืฉื‘ืชื™ ืขืœื™ื• ืงื•ื“ื ืœื’ื‘ื™ Web Scraping: ื‘ืฉื‘ื™ืœ ืœืชืจื’ื ื˜ืœื’ืจื ื”ื•ืœืš ื‘ืขืฆืžื• ืœื’ื•ื’ืœ ื˜ืจื ืกืœื™ื™ื˜ ืขื ื”ื˜ืงืกื˜ ืฉืœ ื”ื”ื•ื“ืขื”, ื•ื‘ืฉื‘ื™ืœ ืœื ืœืฉืœื ืœื’ื•ื’ืœ ื”ื ืžืฉืชืžืฉื™ื ื‘ API ืคืจื˜ื™ ืฉื‘ื• ื›ืจื•ื ืžืฉืชืžืฉ ื›ื“ื™ ืœืชืจื’ื ื“ืคื™ ืื™ื ื˜ืจื ื˜ (ื‘ืžืงื•ื ื‘ Cloud API ื”ืจื’ื™ืœ). ื”ืฆืฆื” ื–ืจื™ื–ื” ื‘ืงื•ื“ ืฉืœ ื˜ืœื’ืจื ืžืจืื” ืฉื”ื ืžืฉืชืžืฉื™ื ื‘ื˜ืจื™ืง ืงื˜ืŸ ื›ื“ื™ ืœื ืœื”ื™ื—ืกื:
private String[] userAgents = new String[] {
  "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36", // 13.5%
  "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36", // 6.6%
  "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:94.0) Gecko/20100101 Firefox/94.0", // 6.4%
  "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0", // 6.2%
  "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36", // 5.2%
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36" // 4.8%
};

connection.setRequestProperty("User-Agent", userAgents[(int) Math.round(Math.random() * (userAgents.length - 1))]);
ื”ืžืฉื—ืง ื”ื•ื ืคืฉื•ื˜ - ื‘ืื•ืชื” ืคื•ื ืงืฆื™ื” ืฉืฉื•ืœื—ืช ื‘ืงืฉื” ืœื’ื•ื’ืœ ื˜ืจื ืกืœื™ื™ื˜ ื˜ืœื’ืจื ืžื’ืจื™ืœื™ื ื›ืœ ืคืขื ืžื—ืจื•ื–ืช User Agent ืฉื•ื ื”, ื‘ืฉื‘ื™ืœ ืฉื’ื•ื’ืœ ื™ื—ืฉื‘ื• ืฉืžื“ื•ื‘ืจ ื‘ืžื›ืฉื™ืจ ืื—ืจ ื›ืœ ืคืขื. ืขื“ ื›ืžื” ื–ื” ื”ื›ืจื—ื™ ืื• ืขื•ื–ืจ? ืื ื™ ืœื ื™ื•ื“ืข ืื‘ืœ ืœื ืžื–ื™ืง ืœื”ื›ื™ืจ ื•ืฉื•ื•ื” ืœื ืกื•ืช ื‘ืคืจื•ื™ืงื˜ื™ Web Scraping ืฉืœื›ื. ืื•ืœื™ ืชืฆืœื™ื—ื• ื’ื ืืชื ืœื‘ืจื•ื— ืžืื™ื–ื• ื—ืกื™ืžื” ืขื ื”ื˜ืจื™ืง ืฉืœ ื˜ืœื’ืจื. --- ื•ืชื•ื“ื” ืœื“ืŸ ืคื˜ืจื•ื‘ ืขืœ ื”ืžื—ืงืจ ื•ื”ืžืืžืจ ืžืžื ื• ืœืžื“ืชื™ ืืช ื”ื˜ืจื™ืง. ืื ื™ืฉ ืœื›ื ืจื’ืข ืฉื•ื•ื” ืœืงืจื•ื ืืช ื›ืœ ื”ืคื•ืกื˜ ืฉืœื•.

ToCode
1 419
ืฉื•ืจื” ืชื—ืชื•ื ื” ื“ื•ืงืจ ื• docker compose ื”ื ื›ืœื™ ืขื‘ื•ื“ื” ืžืขื•ืœื™ื ืœืžืฆื‘ ืคื™ืชื•ื— ืฉื‘ืืžืช ื—ื•ืกื›ื™ื ื”ืžื•ืŸ ื–ืžืŸ ืœืžืชื›ื ืชื™ื ื‘ืขื‘ื•ื“ื” ืขืœ ืคืจื•ื™ืงื˜ื™ื ืžื•ืจื›ื‘ื™ื. ื”ื ืžืืคืฉืจื™ื ืœื ื• ื‘ืœื—ื™ืฆืช ื›ืคืชื•ืจ ืœื”ืชืงื™ืŸ ื›ืœ ืกื•ื’ ื•ื›ืœ ื’ื™ืจืกื” ืฉืœ ื‘ืกื™ืก ื ืชื•ื ื™ื ืฉืื ื—ื ื• ืฆืจื™ื›ื™ื, ืœื”ืจื™ื ื‘ืงืœื•ืช ืขื•ื“ ืžื›ื•ื ื•ืช ืขื–ืจ ื•ื›ื›ื” ืœื‘ื ื•ืช ื›ืœ ืืจื›ื™ื˜ืงื˜ื•ืจื” ื‘ืงื˜ืŸ ื•ืขืœ ืžื—ืฉื‘ ื”ืคื™ืชื•ื— ืฉืœื ื•. ื”ื™ื›ืจื•ืช ื˜ื•ื‘ื” ืื™ืชื ื”ื™ื ื›ืžืขื˜ ื“ืจื™ืฉืช ืงื“ื ืœื›ืœ ืขื‘ื•ื“ืช ืคื™ืชื•ื— ืฉืชืฆื˜ืจื›ื• ืœื‘ืฆืข. ืฉื•ื•ื” ืœื”ืชืืžืฅ ื•ืœืœืžื•ื“ ื›ืœื™ื ืืœื” ืœืขื•ืžืง. ื–ื” ื™ืขื–ื•ืจ ืœื›ื ื’ื ื‘ืขื‘ื•ื“ื” ื”ื ื•ื›ื—ื™ืช ื•ื’ื ื‘ื˜ื•ื•ื— ื”ืจื—ื•ืง.

ToCode
1 419
# ืฉืœื•ืฉื” ืžื›ืฉื•ืœื™ื ืฉื‘ื’ืœืœื ืืชื” ืžืกืชื‘ืš ืขื ื“ื•ืงืจ ื“ื•ืงืจ ื”ื•ื ืื—ื“ ืžื›ืœื™ ื”ืคื™ืชื•ื— ื”ื›ื™ ื—ืฉื•ื‘ื™ื ืฉืœ ื”ืฉื ื™ื ื”ืื—ืจื•ื ื•ืช, ื•ื‘ื›ืœ ื–ืืช ืžืชื›ื ืชื™ื ืœื ืœื•ืžื“ื™ื ืื•ืชื• ืžืกืคื™ืง. ื›ืฉืื ื—ื ื• ืžื’ื™ืขื™ื ืœืžืงื•ื ืขื‘ื•ื“ื” ืฉืžืฉืชืžืฉ ื‘ื“ื•ืงืจ ืื ื—ื ื• ืžืขื“ื™ืคื™ื ืœืขืฉื•ืช copy-paste ืœืคืงื•ื“ื•ืช ื‘ื”ืŸ ื›ื•ืœื ืžืฉืชืžืฉื™ื ื•ื›ืฉืžืฉื”ื• ื ืฉื‘ืจ ืžืงื•ื•ื™ื ืฉืื—ืจื™ ืื™ื–ื” ืจื™ืกื˜ืจื˜ ื”ื•ื ื™ืชืงืŸ ืืช ืขืฆืžื•. ืื ื™ ื™ื›ื•ืœ ืœื—ืฉื•ื‘ ืขืœ ืฉืœื•ืฉื” ืžื›ืฉื•ืœื™ื ืžืจื›ื–ื™ื™ื ื‘ื’ืœืœื ืื ื—ื ื• ืžืขื“ื™ืคื™ื ืœืฉืžื•ืจ ืžืจื—ืง ื‘ื™ื˜ื—ื•ืŸ ืžื”ื˜ื›ื ื•ืœื•ื’ื™ื” ื”ื–ื•- ## ื›ื™ ืืชื” ืœื ื™ื•ื“ืข ืžืกืคื™ืง ื™ื•ื ื™ืงืก ื”ืžื›ืฉื•ืœ ื”ื›ื™ ืžืจื›ื–ื™ ืœืฉืœื™ื˜ื” ื˜ื•ื‘ื” ื‘ื“ื•ืงืจ ื”ื•ื ื™ื•ื ื™ืงืก. ื›ืŸ, ืื•ืชื• ื™ื•ื ื™ืงืก ืžืคืขื ืฉื‘ื“ื™ื•ืง ื—ืฉื‘ืช ืฉื”ืฆืœื—ืช ืœื‘ืจื•ื— ืžืžื ื• ื›ืฉื”ืชืงื ืช ืืช Docker Desktop ืขืœ ื”ื•ื•ื™ื ื“ื•ืก, ื”ื•ื ื–ื” ืฉื‘ื’ืœืœื• ืืชื” ืขื›ืฉื™ื• ืžืกืชื‘ืš. ืงื•ื“ื ื›ืœ ื‘ื’ืœืœ ืฉืจื•ื‘ ื”ืื™ืžื’'ื™ื ืžืจื™ืฆื™ื ืœื™ื ื•ืงืก, ื•ืœื›ืŸ ื‘ืจื•ื‘ ื”ืžืงืจื™ื ื” Dockerfile ื™ื›ืœื•ืœ ืคืงื•ื“ื•ืช ืจื™ืฆื” ืฉืœ ืœื™ื ื•ืงืก: ื”ืชืงื ืช ืชื•ื›ื ื•ืช, ื”ื–ื–ื” ืฉืœ ืงื‘ืฆื™ื ืžืžืงื•ื ืœืžืงื•ื, ืฉื™ื ื•ื™ ื”ืจืฉืื•ืช. ื‘ืœื™ ืœื”ื›ื™ืจ ืืช ืžื‘ื ื” ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื‘ืœื™ื ื•ืงืก ื•ืืช ืžื ื’ื ื•ื ื™ ื”ืชืงื ืช ื”ืชื•ื›ื ื•ืช ืžืื•ื“ ืงืฉื” ืœื›ืชื•ื‘ ื•ืœืชื—ื–ืง Dockerfiles. ืกื™ื‘ื” ืฉื ื™ื” ื‘ื’ืœืœื” ืœื™ื ื•ืงืก ื”ื•ื ื—ื‘ืจ ื—ืฉื•ื‘ ื‘ืชื”ืœื™ืš ื”ื™ื ื” Entrypoint Script: ื›ืœ ืงื•ื ื˜ื™ื™ื ืจ ืžืจื™ืฅ ืกืงืจื™ืคื˜ ืื—ื“ ืžืจื›ื–ื™ ืฉื ืงืจื Entrypoint, ื•ื‘ืจื’ืข ืฉื”ื•ื ื™ื•ืฆื ื”ืงื•ื ื˜ื™ื™ื ืจ ื ืกื’ืจ. ืื™ืžื’'ื™ื ืžืขื ื™ื™ื ื™ื ื›ื•ืœืœื™ื ืกืงืจื™ืคื˜ื™ ื›ื ื™ืกื” ืžืชื•ื—ื›ืžื™ื, ื•ื–ื” ืขื•ื“ ืžืฉื”ื• ืฉืฆืจื™ืš ืœืชื—ื–ืง ื•ืœื“ื‘ื’. ื•ื”ืกื™ื‘ื” ื”ืฉืœื™ืฉื™ืช ื”ื™ื ืฉืื—ืจื™ ืฉื”ืงื•ื ื˜ื™ื™ื ืจ ืขื•ืœื” ื•ืžืฉื”ื• ื ืฉื‘ืจ ืฆืจื™ืš ืœื”ื™ื›ื ืก ืืœื™ื• ื“ืจืš ืžืžืฉืง ืฉื•ืจืช ื”ืคืงื•ื“ื”, ืœื‘ื“ื•ืง ืืช ื”ืœื•ื’ื™ื ื•ืœื”ื‘ื™ืŸ ืžื” ืงืจื”. ื‘ืœื™ ื”ื™ื›ืจื•ืช ื˜ื•ื‘ื” ืขื ืœื™ื ื•ืงืก ื•ื›ืœื™ ืขื‘ื•ื“ื” ืžืฉื•ืจืช ื”ืคืงื•ื“ื” ืงืฉื” ืžืื•ื“ ืœื”ืชืžืฆื ื•ืœืžืฆื•ื ืืช ื”ื‘ืขื™ื•ืช. ื”ื—ื“ืฉื•ืช ื”ื˜ื•ื‘ื•ืช ื”ืŸ ืฉื”ืคื™ืชืจื•ืŸ ืœื›ืœ ื”ื‘ืขื™ื•ืช ืžืงื˜ื’ื•ืจื™ื” ื–ืืช ื”ื•ื ืคืฉื•ื˜ ืœืœืžื•ื“ ื™ื•ื ื™ืงืก. ื™ืฉ ืื™ื ืกื•ืฃ ื—ื•ืžืจื™ ืœื™ืžื•ื“ ื‘ืจืฉืช ืขืœ ื™ื•ื ื™ืงืก ื•ืœื™ื ื•ืงืก (ื’ื ืคื” ื‘ืืชืจ ื™ืฉ ืงื•ืจืก), ื•ืœื™ืžื•ื“ ืœื™ื ื•ืงืก ืชืžื™ื“ ื™ื”ื™ื” ืฉื•ื•ื” ืืช ื”ื”ืฉืงืขื”. ## ื›ื™ ืืชื” ืœื ื™ื•ื“ืข ืžืกืคื™ืง ืขืœ ืจืฉืชื•ืช ืžื›ืฉื•ืœ ืฉื ื™ ืœืฉืœื™ื˜ื” ื˜ื•ื‘ื” ื‘ื“ื•ืงืจ ื”ื•ื ื—ื•ืกืจ ื”ื‘ื ื” ืžืกืคื™ืงื” ื‘ืจืฉืชื•ืช: ืžื” ื–ื” DNS, ืžื” ื–ื” ืคื•ืจื˜ื™ื, ืื™ืš ืžืงื‘ืœื™ื ื›ืชื•ื‘ืช IP, ืžื” ืงื•ืจื” ืื ืœืžื—ืฉื‘ ื™ืฉ ื›ืžื” ื›ืจื˜ื™ืกื™ ืจืฉืช, ืžื” ื”ืงืฉืจ ื‘ื™ืŸ ื›ืชื•ื‘ื•ืช ื” IP ืฉืœ ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืœื›ืชื•ื‘ืช ื” IP ืฉืœ ื”ืžื—ืฉื‘ ืฉืœื™, ืžื” ื–ื” Firewall, ืื™ืš ื‘ื•ื“ืงื™ื ืื ื™ืฉ ื—ื™ื‘ื•ืจ ืจืฉืช ื‘ื™ืŸ ื›ืžื” ืชื—ื ื•ืช, ืžื” ืขื•ืฉื™ื ืื ืื™ืŸ ื—ื™ื‘ื•ืจ, ื•ืฉืืœื•ืช ืจื‘ื•ืช ื ื•ืกืคื•ืช ื‘ืกื’ื ื•ืŸ ื–ื”. ืื ืืชื ื ืชืงืขื™ื ื›ื™ ื”ืงื•ื ื˜ื™ื™ื ืจื™ื ืฉืœื›ื ืœื ืžืชืงืฉืจื™ื ืื—ื“ ืขื ื”ืฉื ื™ ืื• ืขื ื”ืขื•ืœื ื”ื—ื™ืฆื•ืŸ. ืื ืืชื ืžืกืชื‘ื›ื™ื ื‘ื—ื™ื‘ื•ืจ ื”ืคื•ืจื˜ื™ื ืœืงื•ื ื˜ื™ื™ื ืจื™ื. ืื ืืชื ืžื“ืžื™ื™ื ื™ื ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช ืจืฉืช ื‘ื™ืŸ ืžื›ื•ื ื•ืช ื•ืœื ื™ื•ื“ืขื™ื ืื™ืš ืœื™ื™ืฉื ืื•ืชืŸ - ืชืฉืžื—ื• ืœืฉืžื•ืข ืฉื™ืฉ ืœื›ื ื‘ืขื™ื” ืฉืœ ืฉืœื™ื˜ื” ื‘ืจืฉืชื•ืช. ื–ืืช ื‘ืขื™ื” ื™ื•ืชืจ ืงืฉื” ืžืฉืœื™ื˜ื” ื‘ืœื™ื ื•ืงืก ื‘ื’ืœืœ ืฉื™ื•ืชืจ ืงืฉื” ืœืžืฆื•ื ื—ื•ืžืจื™ ืœื™ืžื•ื“ ืžืกื•ื“ืจื™ื. ืขื™ืงืจ ื”ืœื™ืžื•ื“ ื™ื”ื™ื” ื“ืจืš ื ื™ืกื•ื™ ื•ื˜ืขื™ื”, ื•ืœื›ืŸ ืื ืืชื ืžื–ื”ื™ื ืฉื–ืืช ื”ื‘ืขื™ื” ืฉืœื›ื ื›ื“ืื™ ื“ื•ื•ืงื ื›ืŸ ืœื ืกื•ืช ืœืฉื‘ื•ืจ ื“ื‘ืจื™ื ื‘ื“ื•ืงืจ ื•ื›ืŸ ืœื ืกื•ืช ืœืคืชื•ืจ ืœื‘ื“ ื›ืžื” ืฉื™ื•ืชืจ ื‘ืขื™ื•ืช ืจืฉืช, ื•ื“ืจืš ื”ื‘ืขื™ื•ืช ืœืœืžื•ื“ ืืช ื”ืคื™ืชืจื•ื ื•ืช ืฉืจืœื•ื•ื ื˜ื™ื ืœืกื•ื’ ื”ืขื‘ื•ื“ื” ืฉืœื›ื. ## ื›ื™ docker compose ื”ื•ื ื‘ืืžืช ืžื‘ืœื‘ืœ ืžื›ืฉื•ืœ ืฉืœื™ืฉื™ ื ื•ื’ืข ืœื›ืžื•ืช ื”ื—ื•ืžืจ ื•ืœืฉื›ื‘ื•ืช ื”ืฉื•ื ื•ืช ืฉืœ ื—ื•ืžืจ ืขืœ Docker Compose (ื•ืขื•ื“ ื™ื•ืชืจ ื’ืจื•ืข ืขืœ ืงื•ื‘ืจื ื˜ื™ืก). ื“ื•ืงืจ ืงื•ืžืคื•ื– ื”ื•ื ื›ืœื™ ืขื‘ื•ื“ื” ืฉื›ืžืขื˜ ื›ืœ ืžื™ ืฉืขื•ื‘ื“ ื‘ื“ื•ืงืจ ืžืฉืชืžืฉ ื‘ื•, ื”ื•ื ื•ื•ืชื™ืง ื•ื” API ืฉืœื• ืขื‘ืจ ืฉื™ื ื•ื™ื™ื ืœืื•ืจืš ื”ืฉื ื™ื. ืœื›ืŸ ื ื•ืฆืจ ืžืฆื‘ ืฉื‘ื›ืœ ื—ื‘ืจื” ื™ืฉ Best Practices ืฉื•ื ื™ื ืœื’ื‘ื™ ื”ืขื‘ื•ื“ื” ืขื docker compose, ื•ื’ื ืื ืœืžื“ืชื ืื•ืชื• ืœืขื•ืžืง ื‘ืขื‘ืจ ื”ืจื‘ื” ื“ื‘ืจื™ื ืื•ืœื™ ื›ื‘ืจ ืœื ืจืœื•ื•ื ื˜ื™ื. ืœื“ื•ื’ืžื” ืžืืคื™ื™ืŸ restart ื‘ docker-compose.yml ืžื’ื“ื™ืจ ืื™ืš ืœื”ืคืขื™ืœ ืžื—ื“ืฉ ืงื•ื ื˜ื™ื™ื ืจื™ื, ื•ื’ื ืžืืคื™ื™ืŸ deploy.restart_policy ืขื•ืฉื” ื‘ื“ื™ื•ืง ืืช ืื•ืชื• ื“ื‘ืจ (ืื‘ืœ ืœื›ืœ ืื—ื“ ืžื”ื ืชื—ื‘ื™ืจ ืงืฆืช ืฉื•ื ื” ื•ื”ืฉืคืขื” ืงืฆืช ืฉื•ื ื”). ืืคื™ืœื• ืื ื”ื—ืœื˜ื ื• ืœื”ืฉืชืžืฉ ื‘ืคื•ืจืžื˜ ื”ืขื“ื›ื ื™ ื‘ื™ื•ืชืจ, ืขื“ื™ื™ืŸ ื™ืฉ ืื™ื ืกื•ืฃ ื”ื—ืœื˜ื•ืช ืฉืฆืจื™ืš ืœืงื‘ืœ ื›ืžื• ื”ืื ืœื”ืฉืชืžืฉ ื‘ build ืื• ื‘ image, ื”ืื ืœืงื—ืช image ืžื•ื›ืŸ ื•ืœื”ืฉืชืžืฉ ื‘ command ืื• ืœื‘ื ื•ืช Dockerfile ื‘ืขืฆืžื ื•, ื”ืื ืœื›ืชื•ื‘ ืงื•ื‘ืฅ docker-compose.yml ื™ื—ื™ื“ ืื• ืงื•ื‘ืฅ ื ืคืจื“ ืœื›ืœ ืกืจื‘ื™ืก ืื• ืงื‘ื•ืฆื” ืฉืœ ืกืจื‘ื™ืกื™ื ื•ืขื•ื“ ื•ืขื•ื“. ื”ื“ื‘ืจ ื”ื—ืฉื•ื‘ ืœืงื—ืช ื›ืืŸ ื”ื•ื ืฉ Docker Compose ื”ื•ื ืื•ืงื™ื™ื ื•ืก. ื‘ืืžืช ื™ืฉ ื”ืžื•ืŸ ื“ืจื›ื™ื ืฉื•ื ื•ืช ืœื”ืฉืชืžืฉ ื‘ื• ื‘ืžืฆื‘ ืคื™ืชื•ื— ื•ื›ืœ ืžืงื•ื ืขื•ื‘ื“ ื‘ืฆื•ืจื” ืงืฆืช ืื—ืจืช. ื‘ืฉื‘ื™ืœ ืœืœืžื•ื“ ื˜ื›ื ื•ืœื•ื’ื™ื•ืช ื›ืืœื” ื›ื“ืื™ ืœื‘ื—ื•ืจ Workflow ืื—ื“ ืฉืžืชืื™ื ืœื›ื ื•ืœื”ื™ืฉืืจ ืื™ืชื• ืœืชืงื•ืคื”, ื•ืจืง ืื—ืจื™ ืฉืืชื ืžืจื’ื™ืฉื™ื ืžืžืฉ ื ื•ื— ืื™ืชื• ืœื—ืคืฉ Workflow ื ื•ืกืฃ ืฉื™ืชืื™ื ืœื›ื ื•ืื– ืœื”ื™ืฉืืจ ืื™ืชื• ืœืชืงื•ืคื”. ื‘ืขืฆื ืžื” ืฉื—ืฉื•ื‘ ื–ื” ืœื”ื‘ื™ืŸ ื‘ื›ืœ ืคื™ืฆ'ืจ ืฉืืชื ืœื•ืžื“ื™ื ืœืื™ื–ื” ืฉื™ื˜ืช ืขื‘ื•ื“ื” ื”ื•ื ืžืชืื™ื ื•ืื™ืš ื”ื•ื ืžืฉืชืœื‘ ื”ื›ื™ ื˜ื•ื‘ ื‘ืื•ืชื” ืฉื™ื˜ืช ืขื‘ื•ื“ื”.

ToCode
1 419
# ืืฆืœื™ ื–ื” ืขื•ื‘ื“ (ื˜ื™ื™ืง 319) ืื—ืช ื”ืกื™ื‘ื•ืช ืฉื“ื‘ืจื™ื ื ืฉื‘ืจื™ื ื‘ืœื™ ืื–ื”ืจื” ืžื•ืงื“ืžืช ื”ื™ื ื™ืฆื™ืจืชื™ื•ืช ืฉืœ ื›ื•ืชื‘ื™ ืคืจื™ื™ืžื•ื•ืจืงืก (ืฉืœืจื•ื‘ ืœื ืžืคื•ืจืกืžืช ื‘ื“ืฃ ื”ืจืืฉื™ ืฉืœ ื”ืคืจื™ื™ืžื•ื•ืจืง). ื”ื“ื•ื’ืžื” ื”ื™ื•ื ื”ื™ื ืž Jest, ื•ืฉื™ืžื• ืœื‘ ืœ Issue ื”ื‘ื: https://github.com/facebook/jest/issues/5818 ื’'ืกื˜, ืœืžื™ ืฉืœื ืžื›ื™ืจื”, ื”ื™ื ืกืคืจื™ื™ืช ื‘ื“ื™ืงื•ืช JavaScript ืฉื™ื›ื•ืœื” ืœืฉืžืฉ ืœื‘ื“ื™ืงื•ืช ืงื•ื“ ืฆื“ ืฉืจืช ื•ื’ื ืฆื“ ืœืงื•ื—. ืื—ื“ ื”ื“ื‘ืจื™ื ื”ื—ื“ืฉื ื™ื™ื ืฉ Jest ืขื•ืฉื” ื™ืฉืจ ืžื”ืงื•ืคืกื” ื”ื•ื ื”ืจืฆื” ืžืงื‘ื™ืœื™ืช, ื›ืœื•ืžืจ ืื ื™ืฉ ืœื›ื ืžืกืคื™ืง ื‘ื“ื™ืงื•ืช - ื•ืžืกืคื™ืง ื–ื• ืžื™ืœืช ื”ืžืคืชื— ื›ืืŸ - ื’'ืกื˜ ื™ื ืกื” ืœืืจื’ืŸ ื—ืœืง ืžื”ืŸ ืœืงื‘ื•ืฆื•ืช ื•ืœื”ืจื™ืฅ ืื•ืชืŸ ื‘ืžืงื‘ื™ืœ ื›ื“ื™ ืœื—ืกื•ืš ืœื›ื ื–ืžืŸ. ืขื›ืฉื™ื• ืื ื™ืฉ ืžืฉื”ื• ืฉื”ืขื•ืœื ืœื™ืžื“ ืื•ืชื ื• ืขืœ ืœืขืฉื•ืช ื“ื‘ืจื™ื ื‘ืžืงื‘ื™ืœ ื–ื” ืฉื”ื˜ืจื™ืง ื”ื–ื” ื“ื•ืจืฉ ืžืืžืฅ. ืจื•ื‘ ื”ืกื™ื›ื•ื™ื™ื ืฉืื ื›ืชื‘ืชื ืงื•ื“ "ืกืชื ื›ืš" ื•ืื– ื”ืชื—ืœืชื ืœื”ืจื™ืฅ ืื•ืชื• ื‘ืžืงื‘ื™ืœ ืื– ืžืฉื”ื• ื™ื™ืฉื‘ืจ, ื•ื‘ืžื™ื•ื—ื“ ื›ืฉืžื“ื•ื‘ืจ ื‘ื‘ื“ื™ืงื•ืช: ืžืกืคื™ืง ืฉืฉืชื™ ื‘ื“ื™ืงื•ืช ื™ื•ืฆืจื•ืช ืงื•ื‘ืฅ ื‘ืื•ืชื• ืฉื, ืื• ื™ื•ืฆืจื•ืช ืžืจืืฉ ืžื™ื“ืข ื–ื”ื” ื‘ื‘ืกื™ืก ื”ื ืชื•ื ื™ื, ื‘ืฉื‘ื™ืœ ืฉื™ื“ืจื›ื• ืื—ืช ืœืฉื ื™ื” ืขืœ ื”ืจื’ืœื™ื™ื. ื’ื ืžืชื›ื ืชื™ื ืฉื™ื•ื“ืขื™ื ืฉื”ื‘ื“ื™ืงื•ืช ืฉืœื”ื ื”ื•ืœื›ื•ืช ืœืจื•ืฅ ื‘ืžืงื‘ื™ืœ ืขื•ืฉื™ื ื˜ืขื•ื™ื•ืช ื‘ื›ืชื™ื‘ืช ื‘ื“ื™ืงื•ืช ื›ืืœื”. ื‘ื—ื–ืจื” ืœื’'ืกื˜ ื•ืœ Issue ืฉื‘ืงื™ืฉื•ืจ - ืžืกืชื‘ืจ ืฉื’'ืกื˜ ื™ืจื™ืฅ ืืช ื”ื‘ื“ื™ืงื•ืช ืฉืœื›ื ื‘ืžืงื‘ื™ืœ ืจืง ืื ื”ื•ื ื—ื•ืฉื‘ ืฉื™ืฉ ืžืกืคื™ืง ื‘ื“ื™ืงื•ืช ื‘ืฉื‘ื™ืœ ื–ื” ื•ืฉื”ื‘ื“ื™ืงื•ืช ืžืกืคื™ืง ืื™ื˜ื™ื•ืช ื‘ืฉื‘ื™ืœ ืฉื‘ืืžืช ืชืจื•ื•ื™ื—ื• ืžืฉื”ื• ืžื”ืจืฆื” ืžืงื‘ื™ืœื™ืช. ื”ื•ื ื’ื ืœื ื™ืจื™ืฅ ื‘ืžืงื‘ื™ืœ ื‘ื“ื™ืงื•ืช ืฉื›ืชื•ื‘ื•ืช ื‘ืื•ืชื• ืงื•ื‘ืฅ ื‘ื“ื™ืงื”. ืื– ืื ืืชื ืžืชื›ื ืชื™ื ืฉื›ื•ืชื‘ื™ื ืงื•ื“, ื›ื•ืชื‘ื™ื ืงื•ื‘ืฅ ื‘ื“ื™ืงื”, ืžืจื™ืฆื™ื ืืช ืงื•ื‘ืฅ ื”ื‘ื“ื™ืงื” ืื• ื›ืžื” ื‘ื“ื™ืงื•ืช ืงื˜ื ื•ืช ืžืžื ื• ื•ืื– ืžืžืฉื™ื›ื™ื ื”ืœืื” ื”ื›ืœ ื™ืขื‘ื•ื“ ืœื›ื ื›ื™ ื”ื‘ื“ื™ืงื•ืช ืจืฆื•ืช ืื—ืช ืื—ืจื™ ื”ืฉื ื™ื”. ืื‘ืœ ื‘ืจื’ืข ืฉืชืขื‘ื™ืจื• ืืช ื”ื‘ื“ื™ืงื•ืช ืœ CI ืœื”ืจืฆื” ืื•ื˜ื•ืžื˜ื™ืช, ื•ื” CI ื™ืจื™ืฅ ืืช ื›ืœ ืกื˜ ื”ื‘ื“ื™ืงื•ืช ืชืชื—ื™ืœื• ืœืงื‘ืœ ืื™ื ืกื•ืฃ ื›ืฉืœื•ื ื•ืช ืœื ื‘ืจื•ืจื™ื. ื”ืจืฆื” ื™ื“ื ื™ืช ืฉืœ ื›ืœ ื‘ื“ื™ืงื” ืฉื ื›ืฉืœืช ืื• ืฉืœ ืงื•ื‘ืฅ ื‘ื“ื™ืงื•ืช ื‘ื•ื“ื“ ืชืฆืœื™ื— ื‘ืœื™ ื‘ืขื™ื” ื›ื™ ื”ื›ืฉืœื•ื ื•ืช ื ื•ื‘ืขื™ื ืžืื•ืชื” ื”ืจืฆื” ืžืงื‘ื™ืœื™ืช ืฉืขื•ื‘ื“ืช ืจืง ื›ืฉื–ื” "ืžืฉืชืœื". ื’'ืกื˜ ืœื ืœื‘ื“. ื”ืจืฆื•ืŸ ืฉืœ ื›ื•ืชื‘ื™ ื›ืœื™ื ืœื›ืชื•ื‘ ื›ืœื™ื ืฉื™ืจื•ืฆื• ืžื”ืจ ื•ื™ืชื ื• ื”ืจื’ืฉื” ื˜ื•ื‘ื” ืœืžืชื›ื ืชื™ื ืชืžื™ื“ ื™ื—ื–ื•ืจ ืœืชืงื•ืฃ ืื•ืชื ื• ื‘ืžืขื‘ืจ ืœืคืจื•ื“ืงืฉืŸ. ืฉืžืจื• ืขืœ ืขืจื ื•ืช ื•ื”ื™ื–ื”ืจื• ืžื›ืœื™ื ืงืœื™ื ืžื“ื™.

ToCode
1 419
# ืžืชื™ ื›ืŸ ืœื”ืฉืชืžืฉ ื‘ mock ื‘ืจื•ื‘ ื”ื‘ื“ื™ืงื•ืช ืฉืื ื™ ื›ื•ืชื‘ ืื ื™ ื‘ื•ืจื— ืž Mocks ื›ืžื• ืžืืฉ. ื”ื‘ืขื™ื•ืช ื”ืžืจื›ื–ื™ื•ืช ืขื Mocks ื”ืŸ ื”ืขื‘ื•ื“ื” ื”ื ื•ืกืคืช ืฉื”ื•ื ื“ื•ืจืฉ ื‘ื›ืชื™ื‘ืช ื” Mock ื•ื‘ืชื—ื–ื•ืงื”, ื•ืื•ื‘ื“ืŸ ื”ืืžื™ื ื•ืช ื‘ื’ืœืœ ืฉืื ื™ ืœื ื‘ื•ื“ืง ืืช ื”ื“ื‘ืจ ื”ืืžื™ืชื™. ืื‘ืœ Mock ื”ื•ื ืœื ืœื’ืžืจื™ ื›ืœื™ ืžื™ื•ืชืจ ื•ืื ื™ ื™ื›ื•ืœ ืœื—ืฉื•ื‘ ืขืœ ืฉื ื™ ืžืฆื‘ื™ื ื‘ื”ื ื”ื•ื ืืคื™ืœื• ื”ืคื™ืชืจื•ืŸ ื”ืžื•ืžืœืฅ: ## ื‘ื“ื™ืงืช ื”ืชืžื•ื“ื“ื•ืช ืขื ืฉื’ื™ืื•ืช ืฉื™ืžื•ืฉ ืžื•ืžืœืฅ ืจืืฉื•ืŸ ื‘ Mock ื”ื•ื ื‘ืฉื‘ื™ืœ ืœื‘ื“ื•ืง ืื™ืš ื”ืงื•ื“ ืฉืœื™ ืžืชืžื•ื“ื“ ืขื ืžืฆื‘ื™ื ืœื ืฆืคื•ื™ื™ื. ืชืžื™ื“ ืื ื™ ืžืขื“ื™ืฃ ืœื‘ื“ื•ืง ืžื•ืœ ื” API ื”ืืžื™ืชื™ ื›ืฉืฆืจื™ืš ืœื‘ื“ื•ืง ื”ืชื ื”ื’ื•ืช ืชืงื™ื ื”, ืื‘ืœ ื‘ Flow ืจื’ื™ืœ ืื™ืŸ ืœื™ ื“ืจืš ืœื’ืจื•ื ืœืฉืจืช ืœื—ืฉื•ื‘ ืฉื™ืฉ ืขืœื™ื• ื™ื•ืชืจ ืžื“ื™ ืขื•ืžืก ื•ืœื”ืชื—ื™ืœ ืœื”ื—ื–ื™ืจ ืฉื’ื™ืื•ืช. ืงื•ื“ ื‘ื“ื™ืงื” ื‘ Jest ื™ื›ื•ืœ ืœื”ืคืขื™ืœ:
global.fetch = jest.fn(() =>
  Promise.resolve({
    ok: false,
    status: 500,
    statusText: 'Server busy',
  })
);
ื•ืื– ืงื•ื“ ืจื’ื™ืœ ืฉื™ืจื•ืฅ ื™ืฉืชืžืฉ ื‘ fetch ื”ืžื–ื•ื™ืฃ ื•ืชืžื™ื“ ื™ืงื‘ืœ ืฉื’ื™ืืช HTTP 500 ื‘ืžืงื•ื ืืช ื”ืชื•ืฆืื” ื”ืจื’ื™ืœื”, ื•ืื ื—ื ื• ื ื•ื›ืœ ืœื•ื•ื“ื ืฉื”ืงื•ื“ ืžืฆื™ื’ ื”ื•ื“ืขื” ืžื ื•ืžืกืช ืœืžืฉืชืžืฉ. ## ื”ืชืžื•ื“ื“ื•ืช ืขื ื—ื•ืกืจ ืขืงื‘ื™ื•ืช ืžื•ื‘ื ื” ื‘ื‘ื“ื™ืงื” ื›ืฉืื ื—ื ื• ื‘ื•ื“ืงื™ื ืงื•ื“ ืฉื”ื•ื ื‘ืžื”ื•ืชื• ืœื ืขืงื‘ื™, ื” Mock ื™ื›ื•ืœ ืœืขื–ื•ืจ ืœื ื• ืœื”ืชืžื•ื“ื“ ืขื ื—ื•ืกืจ ื”ืขืงื‘ื™ื•ืช ื”ื–ืืช ื•ืœื’ืจื•ื ืœืงื•ื“ ืœื—ื–ื•ืจ ืœื”ื™ื•ืช ืฆืคื•ื™. ืœื“ื•ื’ืžื” ืื ื”ืงื•ื“ ืฉืœื™ ืžืจืื” ืœื•ื— ืฉื ื” ืขื ืืคืฉืจื•ืช ืœื‘ื—ื™ืจืช ื™ื•ื ื‘ื—ื•ื“ืฉ, ื•ืื ื™ ืฆืจื™ืš ืฉื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืชื”ื™ื” ื”ื™ื•ื ื”ื ื•ื›ื—ื™. ืื– ื‘ืœื™ Mock ืื ื™ ืฆืจื™ืš ืœื”ื•ืกื™ืฃ ืงื•ื“ ืฉื™ื‘ื“ื•ืง ืื™ื–ื” ื™ื•ื ื”ื™ื•ื. ืขื“ื™ืฃ ืœื“ืจื•ืก ืืช Date ืœืฆื•ืจืš ื”ื‘ื“ื™ืงื” ื•ืœื’ืจื•ื ืœืงื•ื“ ื”ืืžื™ืชื™ ืœื—ืฉื•ื‘ ืฉืื ื—ื ื• ื‘ื™ื•ื ืžืกื•ื™ื. ื‘ Jest ื–ื” ื™ื”ื™ื”:
jest
  .useFakeTimers()
  .setSystemTime(new Date('2021-01-01').getTime());