ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
+130 kunlar
Postlar arxiv
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$ ืืฉื ื ืฉืืื.
ืกื ืืื ืืฉืขื ืืจืืฉืื ื ืขื ืกืืืืคื ืขืืจื ืื ืืืฉ ืืืง. ืื ืืชื ืืืงืืกืืกืื ืฉื ืืคื ืืืืื ืกืืืืคื ื ืฉืืข ืืื ืืฉืงืขื ืืืฆืืืช.1 419
ืืฉืืจื ืืชืืชืื ื ืฉืืืืืงื ื-3 ืกืืืื ืฉื ืืืืงืืช ืืืืื ืขืืจื ืื ืืืืื ืืื ืฉืืคืขืืื ืืืืงืช ืืืืื ืื ืื ืื ืฉืื ื ืฆืจืื. ืืคืขืืื ืืืื ืื ืืืชืจ ืงื ืืืืืง ืืื ืืจืงืฆืื ืขื ืงืื ืืืฆืื ื ืืืืชื ืืืฉืจ ืืืืฆืจ ืืืืืฉ Mock ืฉืื, ืืืืืจ ืืืชืื ืืืืงืช ืืื ืืืจืฆืื ืคืฉืืื ืืืงืื ืืืืงืช ืืืืื ืืกืืืืช. ืื ืืกืฃ ืืคืขืืื ืฉืืื ืืืืง ืืช ืืืืืงื ืืืกืคืจ ืืืืงืืช ืืคื ืฉืืืฉืช ืืงืืืืจืืืช, ืืื ืืงืื ืืืืงืืช ืคืฉืืืืช ืืืชืจ.
ืื ืืชื ืจืืฆืื ืืฉืืืข ืขืื ืขื ืืืืงืืช ืืืืื ืื ืืืฆืืจืฃ ืืืจ ืืขืฉืจ ืืืืงืจ ืืืืืื ืจ ืืืืงืืช ื Node.JS.
ื ืชืจืื ืืืื.
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-ืื.1 419
# ืคืจืืืืืืจืง ืืขื ืคืจืืืืืืจืง (ืื: ืืื ืงืื ืืกืชืื)
ืืืืืจ ืืจ ืืื ืืชื ืคืืกื ืืขื ืืื ืขื Execution ืืืืขืจืช ืืื ืืื ืืืชื ืฉื ืฉ"ืืขืจืืืช ืชืืื ื ื ืืืืช ืืืกืชืื ืืืืืืช ืงืฉืืช ืืืชืจ ืืืจืืื ืืื ืฉืื ืืืืืช / ืืืื ืขืืืจ". ืืฉ ืืจืื ืกืืืืช ืืชืืคืขื ืืืืช (ืืื ืืืืืจ ืืืชื ืขืืืื ืืืงืืืืช ืืืจืื) ืืคื ืื ื ืจืืฆื ืืืชืืงื ืืชืืคืขื ืฉื ืงืจื ืื "ืคืจืืืืืืจืง ืขื ืคืจืืืืืืจืง".
ืื ื ืกืชืื ืขื ืืืืื ืืื ืืขืจืืืช ืคืฉืืืืช ืืืขืจืืืช ืืืจืืืืช, ื ืจืื ืฉืืขืืจ ืืืกืคืจ ืฉืืจืืช ืืงืื ืืฉ ืืืคืืื ืืื ืืืื ืืืขืจืืืช ืืืจืืืืช: ืื ืืืืืืช ืืจืื ืืืชืจ ืฉืืจืืช ืงืื ืฉืื ืื ื ืืชืื ื ืืขืืืช ืฉืืจืืช ืงืื ืืืคืจืืืืืืจืง. ืื ื ื ืื ืืืจื ื ืืืืจ ืขื ืจืืืงื, ืื ืคืจืืืงื ืจืืืงื ืืืคื ืืืืืช ืืขื ืืื ืืฉืืฉ ืื ื ืืืชืจ ืฉืืจืืช ืงืื ืฉืื ืื ื ืืชืื ื ืืืฉืจ ืฉืืจืืช ืงืื ืืจืืืงื ืขืฆืื, ืื ืืฉืจืื ืืืืื ืฉื ืืขืืืื ืงืืจื ืืงืื ืฉืื ื.
ืืฉ ืกืืื ืืขืจืืืช ืืคืจืืืืืืจืงืื ืฉืืจืืข ืืื ืืืืข ืืื ืืืื ืืืืืจ, ืืืืจืื ืฉืืื ืืืืข ืืื ืืืื ืืืงืื. ืื ืืกืืื ืฉืื ืขื Rails ืืจืื ืฉืืืขืจืืืช CMS ืื ืืืืืื ืืืฉืืืืฉ ื ืืื ืืจืืืืก ืงืฉื ืืืื "ืืฆืืช" ืืืคืจืืืืืืจืง ืืืืืืข ืื ืงืืื ืื ืจืื ืืขืืืื ืงืืจืืช ืืฆืื. ืืฆื ืฉื ื ืืคืจืืืงืื Front End ืื ืงืืื ืืืืช ืืืืขื ืืืจ ืืืื. ืืคืฉืจ ืืืืื ืฉืคืจืืืืืืจืง ืืื ืืืกืืจืงืฆืื ืขื ืืขืจืืช ืืกืืืืช, ืืืื ืฉืืืขืจืืช ืฉืื ืื ื ืืื ืื ืฉืื ื ืืืืขืจืืช ืฉืืคืจืืืืืืจืง ื ืืืจ ืืื ื, ืื ื ืืจื ืืืชืจ ืืืจ ืืืคืจืืืืืืจืง ืื ืืกืืฃ ืขืืื ืจืืืืื ืืฉืื ื.
ืืืืืื ืืืจืืช ืืคืฉืจ ืืืกืชืื ืขื ืืคืจืืืืืืจืง ืืชืืจ "ืืกืืื" ืฉืืืงื ืืืชื ืื ืืื ืืื ืืืช ืืขืจืืช ืืกืื ืืกืืื. ืืคืจืื ืืื ื ืืืืืื ืืชืช ืืช ืืืืืช ื Todo App ืืชืืจ ืืืืื ืืื ืคืจืืืืืืจืง JavaScript, ืืืื ืืืืจื ืืื ืืคืจืืืืืืจืงืื ืืืื ืืคืื ืืืกืืื ืืื ืืืช Todo Apps. ืื ืื ืื ืฉืืชื ืฆืจืืืื ืืื ืืช ืืืขืจืืช ืฉืืื ืชืืฉืืจ ืืืื ืคืฉืืื. ืืื ืืืื ืฉืื ืื ื ืืื ืื ืืฉืื ืืืจ, ืืืืื ืฉืืขืืื ืืคืจืื ื ืื ื ืื ืื ื ืืืจื ืืื ืืฉืืืื ืืืื ืกืคืจืืืช ืงืื ืืช ืืื ืืคืจืืืืืืจืง, ื ืืฆืจ ืืฆื ืฉืื ืืขืจืืช ืืื ืืจืืื ืฉื ืืืื ืืืื ืืืงืื ืงืื ืื ืืื ืชืืื ืงืฉืืจืื.
ืืคืจืืืืืืจืง ืืืงืืจื ืฉืืฉืชืืฉื ื ืื ืืื ืืืื React, ืืื ืืคืืขื ืืคืจืืืืืืจืง ืฉืื ื ืืฉืชืืฉ ืื ืืื ืจืืืงื ืืื ืขื ืืืกืฃ ืื ืืืืืืืช ืืงืื ืืช ื npm ืฉืืชืงื ืชื ืืื ืขื ืื ืืงืื ืฉืื ืฉืืืืืง ืืช ืื ืืืืงืื ืืืื ืืื. ืืชืืฆืื ืฉื ืื ืืื ืืื ืคืจืืืืืืจืง ืืืฉ - ืคืจืืืืืืจืง ืคืจืื, ืืืืืื ืืืืฆืจ ืฉืื, ืฉื ืืชื ืืื ืชืื ืื ืืจืืฉ ืืืื ืืืช ืืชืืื ืื ื ืขืืื.
ืืืชืื ืชืื ืืืื ืื ืื ื ืจืืืืื ืืืคืฉ ืืืืื ืคืืชืจืื ืืช ืืืขืืืช ื ืคืืฆืืช ืืฉืืฉืื ืื ืขืืื. ืืืืืื ืืชืื ืชื ืคืจืื ืืื ื ืฉืืืื ืืื ืืื ืืืชืื ืงืื ืืืืื ืื ื ืืขืฆืื ืคืจืืืงื Green Field (ืืืืืจ ืคืจืืืงื ืฉืืชืืื ืืืคืก ืืืฉืชืืฉ ืืคืจืืืืืืจืง ืืฆืืจื ื ืงืื). ืืื ืื ื ื ืกื ืืืคืฉ ืืืืื ืคืืชืจืื ืืืขืื ืืคืจืืืงื ืงืืื ื ืืื ืฉืืฉ ืืื ืกืืฃ ืคืืชืจืื ืืช ืืืฃ ืืื ืืื ืื ืจืืืื ืื ืขืืืจื ื. ืืืกืฃ ืืกืคืจืืืช ืืงืื ืืืืง ืฉืื ื, ืืคืจืืืืืืจืง-ืืขื-ืคืจืืืืืืจืง ืฉืื ื, ืืื ืืืืืื ืื ืื ืขื ืฉืื ืืคืฉืจ ืืืคืฉ ืืืืื ืชืฉืืืืช ืืคืืื ืืืืจืื ืฉื ืจืืื ืืืื ืืกืืกืืื.
ืืคืจืืืืืืจืง-ืืขื-ืคืจืืืืืืจืง ืฉืืชืื ื ืื ืฆืจืื ืชืืืืงื, ืืืืื ืฉืื ืื ื ืื ืืืฉืืื ืขื ืขืฆืื ื ืืืคืชืื ืคืจืืืืืืจืง (ืืฉ ืื ื ืืืฆืจ ืืื ืืช), ืื ืื ืื ื ืื ืืืฆืืื ืืื ืืชืืืืงื ืืืืช. ืงืฉื ืืืฆืื ืืื ืืขืืื ืืช ืืชืืืืืช ืื ืืขืฉืืช Refactoring ืืงืื ืืืืง ืฉืื ืื ื. ืืคืืื ืืช ืืืืืงืืช ืื ืชืืื ืืืฆืืื ืืื ืืชืงื. ืืืื ืื ืื ื ื ืฉืืจืื ืขื "ืคืจืืืืืืจืง" ืื ืืฆืื ืืืชืคืืืื ืฉืืื ืฉืืืืฆืจ ืืกืชืื ืืชืืืืงื ืืืคืืช ืงืฉื ืืืชืจ ืืืืืืื ืืื ืืจืืจืื ืืชืจืืื. ืื ืื ื ืืืืืื ืืืืืจ ืืคืจืืืงื Green Field ืืื ืืืืื ืฉืื ืืคืขื ืืืื ืฉื ืืืง ืืื ืื ืชืืื ืืืืฉ ืืกืืืื ืืืืข ืฉืื, ืื ืืกืืืื ืืื ืชืืฆืื ืฉื ืชืืืืื ืขืืืื ืืกืืจื ืขืืืคืืืืช.
ืืืืฉืืช ืืจืขืืช ืื ืฉืืื ืคืืชืจืื ืืช ืงืืื. ืืื ืืช ืคืจืืืืืืจืง ืื ืืจืื ืขืืืื ืืืคืจืืืืืืจืงืื ืืงืืืืื ื Front End ืืืืช ืื ืืกืคืืง ืืืืื ืืฉืืื ืืืคืืืงืฆืื ืฉืืื. ืืฆื ืฉื ื ืืจืืข ืฉืืชื ืจืืืื ืฉืื ืืชื ืคืจืืืืืืจืง ืืื ืืืชืืืื, ืชืืืื ืืงืืช ืืช ืืฆืขื ืืื ืืืืชืืื ืืชืืืง ืืืชื. ืืืืจื ืืื ืืืช ืืืจื ืืืืืื ืืืืื.
1 419
# ืืกืืืช ืืขืช
ืืชืื ืชืื ืืืืืื ืืงืืจ ืขื ืื ืืืจ ืฉืืคืจืืข ืื ื ืืฉืืช ืืชืื ืช ืื ืืืื: ืคืืืฉืืช, ืชืงืืืช ืคืจืืืงืฉื, ืื ืฉื ืคืจืืืงื ืฉืืฉื ืื ืืช ืืขืชื ืืขืืฉืื ืืขืืฉืื. ืื ืื ื ืืืืจืื ืฉืื ืืกืืช ืืขืช ืืืืช ืืืืื ืืืืืืจ ืืืชื ื ืื ืืฆื ืฉืขื ืืืืจื ืืขืืืื, ืืืฉ ืฉืืืืื ืฉืืคืืื ืฉืืื ืฉื ืืื ืฉื ืืืช ืืืืื ืืขืืืช ืืื ืืืงืืช ืืจืืืืช ืฉื ืืืฉืื ืขื ืฉืืืฆืืื ืืืืฉ ืืช ืืงืฉื.
ืืืื ืฉืืฉ ืืกืืช ืืขืช ืืืื ืชืื ืืช ืืฉ ืื ืืกืืืช ืืขืช ืืืชืจ ืืืืืืช ืืงืจืืืจื:
1. ืขืืืช ืฉืงืืขื - ืืขืืืื ืฉืืืจ ืืืืชื 10 ืฉื ืื Java ืืืจืืช ืื ืืืขืืืฃ ืืฉืจืช ืืชืื ืช Java ืืืฉืจ ืขืืืื ืืืจืช, ืืืจืืช ืฉืืขืืืื ืืืืจืช ืืืื ืืืชืจ ืืฉืชืืืช ืืืืืืช ืืืืื ืืจืืืง. ืื ืคืจืืืงื ืืืฉ ืฉืื ื ืืืงื ืืืื ืืืืืื ืืืฉื ื ืจืง ืืืคื ืืช ืืืขืืจ ืืืื ืืืืืื ืืืืฉื ืืืืชืจ ืงืฉื.
2. ืืกืชืืืืช ืขื ืืืืื ืืงืฆืจ - ืืขืืืื ืฉืขืืฉืื ืืฉ ืื ืืืืื ืืช ืืงืืช ืคืจืืืงื X ืื ืืืืจืช ืฉืืคืจืืืงื ืืื ืืจืื ืืฉืืืื; ืืื ืจืง ืืืืจืช ืฉืืงืื ืืกืืื ืขื ืคืจืืืงื X ืขืืฉืื ืืฆื ืืืชื. ืืคืจืืืงื ืืื ืืืื ืืืกืื ืื ืืืืื ืืช ืืืขืื ืืช ืืฆืืืื ืฉืื ืืืืืฉืื ืืจืืืื.
3. ืคืื - ืืื ืชืืื ืื ืขืืืื ืืืื ืืืืืื ืืืืฉื? ืืื ืื ืคืขื ืืฆืืื ืืืืืช ืืื ื"ืืืืืช ืืืื ื" ืืื ืฉืื ื ืืื ื Java? ืืื Swift ืื ืื ืขืื ืืจื ื ืืืืฃ ืฉืขืื ืฉื ืชืืื ืืขืื? ืขืืืฃ ืืืจ ืืืืฉืื ืืื ืฉืื ื ืขืืฉื ืืืื.
4. "ืื ืืชื ืืงืืจ, ืืืืื ืฉืื ืืืฉ" - ืืืื ืืืื ืฉื ืขืืืื ืืืืืืง ืื ืื ืืื ืืืกืื ืืช ืืืขืช ืืืฉืื ืืืื ืืืืืชืืื ืฉืงืืจืื ืืฉืืง ืืขืืืื ืืืืืืืื ืืืืช ืืืืฉืืช ืฉื ืคืชืืืช. ืื ืื ืืืืื ื ืจืืื ืืืฉ ืืืืฉืื ืฉืืกืชืื ืืืืืฅ, ืจืง ืืชื ืืืืขืื ืื ืืชื ืืจืืืฉืื ืืืืช. ืฉืืืจื ืืื ืื ืกืื ืฉื ืืกืืช ืืขืช ืฉืืคืจืืขื ืืืืืข ืืืืื ืฉืืชื ืจืืฆืื.
ืืื ืืช ืงืจืืืจื ืืืฆืืืช ืื ืื ืืื ืงืฉื. ืืฉืืชื ืืืืื ืฉืื ืืฆืืืืื ืืืชืงืื ืฉืืื ืืืชืืืฅ ืืืกืชืื ืื ืืกืื ืืชืื ืืืืืจื ืืืฆืืฆื ืืกืืืช ืืขืช. ืืขืืืช ืฉืืื ืืจืื ืืืชืจ ืืืืื ืืื ืฉื ืืื.
1 419
# ืขืื ืืื ืขื ืืื
ืืจื ืืืช ืืืกืชืื ืขื ืืื ืืื ืืชืืจ ืืืืืฅ - ืืืืื ืืฉ 24 ืฉืขืืช, ืชืืจืืื 6 ืืฉืื ื ืืื ืฉื ืฉืืจ ืื ื"ืชืงืฆืื" ืฉืืื, ืืขืืฉืื ืฆืจืื ืืืืืื ืืื ืืืฉืงืืข ืืืชื. "ืื ืืื ืื ืืื" ื"ืื ืืกืคืงืชื" ืื ืชืืฆืืืช ืืืืื ืืืช ืื ืงืืืช ืืืื ืืืืช, ืืืืืง ืืื ืฉืื ืื ื ืืืฆื ืขื ืชืงืฆืื ืืกืืคืจ ืืืื ืืืจืื ืฉืื ืืงื ื ืื ืื ืืืจืืื ืืืกืืื ืฉืชืื ื ืชื ืืืืฆืื.
ืืจื ืืืชืจ ืืขื ืืื ืช ืืืกืชืื ืขื ืืื ืืื ืืชืืจ ืชืืฆืื - ืชืืฆืื ืฉื ืกืืจื ืืขืืืคืืืืช ืฉืื ืืืืื. ืืืืฉื ืื ืื ื ืจืืฉื ืื ืขืฉืืชื ืืืื (ืืืฉ ืืกืืืจ ืืคื ืฉืขืืช) ืืื ืกื ืืืืื ืืชืื ืืืืจืื ืฉืขืฉืืชื ืืื ืกืืจื ืืขืืืคืืืืช ืืืืืชืืื ืฉืื. ืืืืฉื ืืืืช "ืื ืืกืคืงืชื" ืืืืืฃ ื"ืื ืื ืจืื ืื ืืื ืืกืคืืง ืืืื ืืกืืจ ืืขืืืคืืืืช ืฉืื".
ืืืจืืช ืฉืฉืชื ืืืืฉืืช ืืชืืจืืช ืืช ืืืชื ืืืจืืข (ืืื ืืืืืชื ืืช ืืืื), ืื ื ืืืื ืืช ืืืืฉื ืืฉื ืื ืืืชืจ - ืื ืืื ืคืืชืืช ืืืช ืืฉืื ืื. ืงืฉื ืืืื ืืืฉืื ืขืื ืืื. ืืจืื ืืืชืจ ืงื ืืฉื ืืช ืกืืจื ืขืืืคืืืืช.
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 ืฉืืื. ืืืื ืชืฆืืืื ืื ืืชื ืืืจืื ืืืืื ืืกืืื ืขื ืืืจืืง ืฉื ืืืืจื.
---
ืืชืืื ืืื ืคืืจืื ืขื ืืืืงืจ ืืืืืืจ ืืื ื ืืืืชื ืืช ืืืจืืง. ืื ืืฉ ืืื ืจืืข ืฉืืื ืืงืจืื ืืช ืื ืืคืืกื ืฉืื.1 419
ืฉืืจื ืชืืชืื ื ืืืงืจ ื docker compose ืื ืืื ืขืืืื ืืขืืืื ืืืฆื ืคืืชืื ืฉืืืืช ืืืกืืื ืืืื ืืื ืืืชืื ืชืื ืืขืืืื ืขื ืคืจืืืงืืื ืืืจืืืื. ืื ืืืคืฉืจืื ืื ื ืืืืืฆืช ืืคืชืืจ ืืืชืงืื ืื ืกืื ืืื ืืืจืกื ืฉื ืืกืืก ื ืชืื ืื ืฉืื ืื ื ืฆืจืืืื, ืืืจืื ืืงืืืช ืขืื ืืืื ืืช ืขืืจ ืืืื ืืื ืืช ืื ืืจืืืืงืืืจื ืืงืื ืืขื ืืืฉื ืืคืืชืื ืฉืื ื. ืืืืจืืช ืืืื ืืืชื ืืื ืืืขื ืืจืืฉืช ืงืื ืืื ืขืืืืช ืคืืชืื ืฉืชืฆืืจืื ืืืฆืข. ืฉืืื ืืืชืืืฅ ืืืืืื ืืืื ืืื ืืขืืืง. ืื ืืขืืืจ ืืื ืื ืืขืืืื ืื ืืืืืช ืืื ืืืืื ืืจืืืง.
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 ื ืืกืฃ ืฉืืชืืื ืืื ืืื ืืืืฉืืจ ืืืชื ืืชืงืืคื. ืืขืฆื ืื ืฉืืฉืื ืื ืืืืื ืืื ืคืืฆ'ืจ ืฉืืชื ืืืืืื ืืืืื ืฉืืืช ืขืืืื ืืื ืืชืืื ืืืื ืืื ืืฉืชืื ืืื ืืื ืืืืชื ืฉืืืช ืขืืืื.1 419
# ืืฆืื ืื ืขืืื (ืืืืง 319)
ืืืช ืืกืืืืช ืฉืืืจืื ื ืฉืืจืื ืืื ืืืืจื ืืืงืืืช ืืื ืืฆืืจืชืืืช ืฉื ืืืชืื ืคืจืืืืืืจืงืก (ืฉืืจืื ืื ืืคืืจืกืืช ืืืฃ ืืจืืฉื ืฉื ืืคืจืืืืืืจืง). ืืืืืื ืืืื ืืื ื Jest, ืืฉืืื ืื ื Issue ืืื:
https://github.com/facebook/jest/issues/5818
ื'ืกื, ืืื ืฉืื ืืืืจื, ืืื ืกืคืจืืืช ืืืืงืืช JavaScript ืฉืืืืื ืืฉืืฉ ืืืืืงืืช ืงืื ืฆื ืฉืจืช ืืื ืฆื ืืงืื. ืืื ืืืืจืื ืืืืฉื ืืื ืฉ Jest ืขืืฉื ืืฉืจ ืืืงืืคืกื ืืื ืืจืฆื ืืงืืืืืช, ืืืืืจ ืื ืืฉ ืืื ืืกืคืืง ืืืืงืืช - ืืืกืคืืง ืื ืืืืช ืืืคืชื ืืื - ื'ืกื ืื ืกื ืืืจืื ืืืง ืืื ืืงืืืฆืืช ืืืืจืืฅ ืืืชื ืืืงืืื ืืื ืืืกืื ืืื ืืื.
ืขืืฉืื ืื ืืฉ ืืฉืื ืฉืืขืืื ืืืื ืืืชื ื ืขื ืืขืฉืืช ืืืจืื ืืืงืืื ืื ืฉืืืจืืง ืืื ืืืจืฉ ืืืืฅ. ืจืื ืืกืืืืืื ืฉืื ืืชืืชื ืงืื "ืกืชื ืื" ืืื ืืชืืืชื ืืืจืืฅ ืืืชื ืืืงืืื ืื ืืฉืื ืืืฉืืจ, ืืืืืืื ืืฉืืืืืจ ืืืืืงืืช: ืืกืคืืง ืฉืฉืชื ืืืืงืืช ืืืฆืจืืช ืงืืืฅ ืืืืชื ืฉื, ืื ืืืฆืจืืช ืืจืืฉ ืืืืข ืืื ืืืกืืก ืื ืชืื ืื, ืืฉืืื ืฉืืืจืื ืืืช ืืฉื ืื ืขื ืืจืืืืื. ืื ืืชืื ืชืื ืฉืืืืขืื ืฉืืืืืงืืช ืฉืืื ืืืืืืช ืืจืืฅ ืืืงืืื ืขืืฉืื ืืขืืืืช ืืืชืืืช ืืืืงืืช ืืืื.
ืืืืจื ืื'ืกื ืื Issue ืฉืืงืืฉืืจ - ืืกืชืืจ ืฉื'ืกื ืืจืืฅ ืืช ืืืืืงืืช ืฉืืื ืืืงืืื ืจืง ืื ืืื ืืืฉื ืฉืืฉ ืืกืคืืง ืืืืงืืช ืืฉืืื ืื ืืฉืืืืืงืืช ืืกืคืืง ืืืืืืช ืืฉืืื ืฉืืืืช ืชืจืืืืื ืืฉืื ืืืจืฆื ืืงืืืืืช. ืืื ืื ืื ืืจืืฅ ืืืงืืื ืืืืงืืช ืฉืืชืืืืช ืืืืชื ืงืืืฅ ืืืืงื.
ืื ืื ืืชื ืืชืื ืชืื ืฉืืืชืืื ืงืื, ืืืชืืื ืงืืืฅ ืืืืงื, ืืจืืฆืื ืืช ืงืืืฅ ืืืืืงื ืื ืืื ืืืืงืืช ืงืื ืืช ืืื ื ืืื ืืืฉืืืื ืืืื ืืื ืืขืืื ืืื ืื ืืืืืงืืช ืจืฆืืช ืืืช ืืืจื ืืฉื ืื. ืืื ืืจืืข ืฉืชืขืืืจื ืืช ืืืืืงืืช ื CI ืืืจืฆื ืืืืืืืืช, ืื CI ืืจืืฅ ืืช ืื ืกื ืืืืืงืืช ืชืชืืืื ืืงืื ืืื ืกืืฃ ืืฉืืื ืืช ืื ืืจืืจืื. ืืจืฆื ืืื ืืช ืฉื ืื ืืืืงื ืฉื ืืฉืืช ืื ืฉื ืงืืืฅ ืืืืงืืช ืืืื ืชืฆืืื ืืื ืืขืื ืื ืืืฉืืื ืืช ื ืืืขืื ืืืืชื ืืจืฆื ืืงืืืืืช ืฉืขืืืืช ืจืง ืืฉืื "ืืฉืชืื".
ื'ืกื ืื ืืื. ืืจืฆืื ืฉื ืืืชืื ืืืื ืืืชืื ืืืื ืฉืืจืืฆื ืืืจ ืืืชื ื ืืจืืฉื ืืืื ืืืชืื ืชืื ืชืืื ืืืืืจ ืืชืงืืฃ ืืืชื ื ืืืขืืจ ืืคืจืืืงืฉื. ืฉืืจื ืขื ืขืจื ืืช ืืืืืืจื ืืืืื ืงืืื ืืื.
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());
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
