ΡΠ²Π°Π³Π³Π΅Ρ Π±ΡΠ΄Π΅Ρ Π½Π° http://localhost:8888/swagger/index.html
help
deliver --id=1 --user=1 --exp=2024-06-25T03:32:02+05:00 --wrapper=<[box package stretch]> --weight_in_kg=10.3 --price_in_rub=10.3
list --user=1
issue 1
refund --id=1 --user=1
refunded --size=20 --page=1
return --id=1
procs --n=10
exit
ΠΡΠ±ΡΠ°Π½ LFU Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅ΡΠ»ΠΈ ΠΎΡΡΠ°Π»ΠΊΠΈΠ²Π°ΡΡΡΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π·Π°ΠΏΡΠΎΡ /v1/orders Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΊΠ°ΠΊ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ ΡΡΠ°Π½ΠΈΡΠ΅, ΡΠΎ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ ΡΠ°ΡΠ΅ ΡΠ΅ΠΌ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡΠΎΠΉ LRU Π±ΡΠ΄Π΅Ρ Π½Π΅ ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½. ΠΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ: ΠΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΠΊΠ°Π·Π° ΠΈΠ· ΠΊΡΡΠ° ΡΠ΄Π°Π»ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ ΡΡΠΎΡ Π·Π°ΠΊΠ°Π·. ΠΠΎΠ²ΡΠ΅ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π·Π°ΠΊΠ°Π·Ρ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΠΊΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΠΈΡΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΊΠ° Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΊΡΡΠ°.
ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΡΠ΅ΡΠ²ΠΈΡ, Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠ²ΠΈΡΠ°
- Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (In-memory Cache) Π΄Π»Ρ ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠ½Π΅Π΄ΡΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΊΠ΅ΡΠ°, ΠΎΠ±ΡΡΡΠ½ΠΈΡΠ΅ ΡΠ²ΠΎΠΉ Π²ΡΠ±ΠΎΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠ΅Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (godoc/md)
- ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ±ΠΎΡ ΠΌΠ΅ΡΡΠΈΠΊ Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΊΠ°ΡΡΠΎΠΌΠ½ΡΡ ΠΌΠ΅ΡΡΠΈΠΊΡ ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ Π²ΡΠ΄Π°Π½Π½ΡΡ Π·Π°ΠΊΠ°Π·ΠΎΠ²
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠ΅ΡΠ° (LRU/LFU ΠΈΠ»ΠΈ ΠΈΡ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ). ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΡΠ΅ΠΉΡΠΈΠ½Π³ Π·Π°ΠΏΡΠΎΡΠΎΠ² Π²Π½ΡΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΡΠ΄Π΅Π»ΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅Ρ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ, Ρ Generic ΡΠΈΠΏΠ°ΠΌΠΈ ΠΊΠ»ΡΡΠ΅ΠΉ ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ ΡΠ½Π°ΡΡΠΆΠΈ (ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΡΠ΅ΡΡΡΡΠΎΠ², TTL ΠΊΠ΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ Π΄Ρ.)
- 20 ΠΈΡΠ»Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 23 ΠΈΡΠ»Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
ΠΠ΅ΡΠ΅Π²Π΅ΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ· Π΄ΠΎΠΌΠ°ΡΠ½Π΅Π³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ 6 Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ gRPC. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ:
- Π‘ΠΎΠ·Π΄Π°ΡΡ proto ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΡΠ΅ΡΠ²ΠΈΡΠ°
- Π ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² Makefile ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ .go ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· proto ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½ΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ (ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ protoc)
- Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ gRPC ΡΠ΅ΡΠ²ΠΈΡ
- ΠΠΎΠΊΡΡΡΡ gRPC-Ρ Π΅Π½Π΄Π»Π΅ΡΡ ΡΠ΅ΡΡΠ°ΠΌΠΈ
- ΠΠΎΠ±Π°Π²ΠΈΡΡ HTTP-gateway ΠΈ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ protobuf ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ
- ΠΠΎΠ±Π°Π²ΠΈΡΡ swagger-ui ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΈΠ· ΡΠ²Π°Π³Π³Π΅ΡΠ° ΠΊ ΡΠ΅ΡΠ²ΠΈΡΡ (ΠΏΠΎΠ΄Π½ΡΡΡ swagger-ui ΡΠ΅ΡΠ²Π΅Ρ)
- 13 ΠΈΡΠ»Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 16 ΠΈΡΠ»Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
ΠΠΎΠΌΠ°ΡΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ β6 Β«ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ Π² ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΠ΅Π· KafkaΒ»
ΠΡΠ²Π΅ΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΠΏΠΎ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡΠΌ Π² ΠΌΠ΅ΡΠΎΠ΄Ρ ΡΠ΅ΡΠ²ΠΈΡΠ° Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ
- ΠΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ Π»ΡΠ±ΠΎΠ³ΠΎ API ΠΌΠ΅ΡΠΎΠ΄Π° (ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°) Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΠΌ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΠ± ΡΡΠΎΠΌ Π² Kafka
- Π‘ΠΎΠ±ΡΡΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Ρ ΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ΠΌΡ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ, Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ ΡΡΡΠΎΠΉ Π·Π°ΠΏΡΠΎΡ
- ΠΠΎ Ρ ΠΎΠ΄Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΡΠΈ ΡΠΎΠ±ΡΡΠΈΡ ΠΈΠ· Kafka
- ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ-ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ Π½Π°ΠΏΡΡΠΌΡΡ Π² ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΎΠΌ ΡΠ΅ΡΠ΅Π· Kafka. ΠΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΡΠ°Π·Ρ Π΄Π΅Π»Π°ΡΡ Π½Π΅Π»ΡΠ·Ρ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π³ΡΡΠΆΠ°ΡΡΡΡ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- Π Π΅ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΠΏΠΎΠΊΡΡΡΠΎ Unit-ΡΠ΅ΡΡΠ°ΠΌΠΈ
- ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΡΡ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Kafka
- 6 ΠΈΡΠ»Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 9 ΠΈΡΠ»Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
-
ΠΡΡΠ΅ΡΠ°ΠΊΡΠΎΡΠΈΡΡ ΠΊΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΠ (Π΅ΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ). ΠΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ DI, ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΠ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²
-
ΠΠΎΠΊΡΡΡΡ Unit-ΡΠ΅ΡΡΠ°ΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΠ. Unit-ΡΠ΅ΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΈ Π½Π΅ Π°ΡΡΠ΅ΠΊΡΠΈΡΡ Π΄ΡΡΠ³ Π΄ΡΡΠ³Π°
-
ΠΠΎΠΊΡΡΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠ΅ΡΡΠ°ΠΌΠΈ Π²ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ (ΡΠΈΡΠ°ΡΡΠΈΠ΅ ΠΈ ΠΏΠΈΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ)
-
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ Makefile, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ: Π·Π°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ docker-compose, Π·Π°ΠΏΡΡΠΊ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ², Π·Π°ΠΏΡΡΠΊ Unit-ΡΠ΅ΡΡΠΎΠ², Π·Π°ΠΏΡΡΠΊ ΡΠΊΡΠΈΠΏΡΠ° ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΉ, ΠΎΡΠΈΡΠ΅Π½ΠΈΠ΅ Π±Π°Π·Ρ ΠΎΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ
- ΠΠ°ΠΏΠΈΡΠ°ΡΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΡ-ΡΡΡΡΠΎΠ² (https://github.com/stretchr/testify/blob/master/suite/suite_test.go). Π‘ΡΡΡΡ Π½Π΅ ΠΈΡΠΊΠ»ΡΡΠ°ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ² Π² ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅
- 29 ΠΈΡΠ½Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 2 ΠΈΡΠ»Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
ΠΠΎΠΌΠ°ΡΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ β4 Β«ΠΡΠ΄Π°ΡΠ° Π·Π°ΠΊΠ°Π·ΠΎΠ² Π² ΡΠ°Π·Π½ΠΎΠΉ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅Β»
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ UML https://www.uml-diagrams.org/ ΠΡΠΊΡΡΠ²Π°ΡΡ Π² https://app.diagrams.net/ https://drive.google.com/file/d/1eI_kM_SfUT-Yih2sY3-p-XprEcHXEsOO/view?usp=sharing
ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°Ρ ΡΠ΅ΡΠ²ΠΈΡ, Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π² ΠΠΠ Π²ΡΠ΄Π°Π²Π°ΡΡ Π·Π°ΠΊΠ°Π·Ρ Π² Π»ΡΠ±ΠΎΠΉ ΠΈΠ· ΡΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΎΠΊ
- ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ Go-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ Π² ΠΌΠ΅ΡΠΎΠ΄ "ΠΡΠΈΠ½ΡΡΡ Π·Π°ΠΊΠ°Π· ΠΎΡ ΠΊΡΡΡΠ΅ΡΠ°" Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ
- ΠΡΠ΅Π³ΠΎ Π΅ΡΡΡ ΡΡΠΈ Π²ΠΈΠ΄Π° ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ: ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΠ±ΠΊΠ°, ΠΏΠ»Π΅Π½ΠΊΠ°
- Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π²ΠΈΠ΄ ΡΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ
- ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ, ΡΡΠΎ Π²Π΅Ρ Π·Π°ΠΊΠ°Π·Π° ΠΌΠ΅Π½ΡΡΠ΅ 10 ΠΊΠ³, Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ
- ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π·Π°ΠΊΠ°Π·Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 5 ΡΡΠ±Π»Π΅ΠΉ
- ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π²Π΅Ρ Π·Π°ΠΊΠ°Π·Π° ΠΌΠ΅Π½ΡΡΠ΅ 30 ΠΊΠ³, Π΅ΡΠ»ΠΈ Π½Π΅Ρ, ΡΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ²Π½ΡΡ ΠΎΡΠΈΠ±ΠΊΡ
- ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π·Π°ΠΊΠ°Π·Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 20 ΡΡΠ±Π»Π΅ΠΉ
- ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΏΠ»Π΅Π½ΠΊΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ
- ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΠΏΠ»Π΅Π½ΠΊΠΈ ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π·Π°ΠΊΠ°Π·Π° ΡΠ²Π΅Π»ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° 1 ΡΡΠ±Π»Ρ
- ΠΠΏΠΈΡΠΈΡΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π»ΡΠ±ΡΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, UML)
- Π MR Π²Π»ΠΎΠΆΠΈΡΠ΅ ΡΠ°ΠΉΠ» Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ
- ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΠΈΡΠ°ΡΡ, ΠΊΠ°ΠΊΠΎΠΉ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΈ Π΄Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Π΅Π³ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ
- ΠΠ°ΠΏΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³Π΅Π½Π΅ΡΠΈΠ»ΠΊΠΈ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ Π² ΠΠ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ
- 22 ΠΈΡΠ½Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 25 ΠΈΡΠ½Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
SELECT id, recipient_id, status, status_updated_at, expiration_date, hash, created_at
FROM ozon.orders
where status = 'delivered' and recipient_id = '1' and id = any('{1}')
order by created_at desc
limit 1
offset 0;
ΠΠ΅Π· ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ²
https://explain.tensor.ru/archive/explain/87fac1780751587d62913933111db0b9:0:2024-06-15
create index on ozon.orders using btree(created_at);
https://explain.tensor.ru/archive/explain/feadc442b3d6aadc89ea8d8337e4ea98:0:2024-06-15
create index on ozon.orders using btree(recipient_id);
https://explain.tensor.ru/archive/explain/f29d8fa9c4e1e076fbe690af341aefae:0:2024-06-15
create index on ozon.orders using btree(recipient_id);
create index on ozon.orders using btree(created_at);
https://explain.tensor.ru/archive/explain/e3b604ef4f363f75d602f06f58bfbd58:0:2024-06-15
create index on ozon.orders using btree(status, recipient_id, id);
https://explain.tensor.ru/archive/explain/efcc29899aa66af31134dd3df00a957f:0:2024-06-15
ΠΠΎΠΌΠ°ΡΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ β3 Β«Π Π΅ΡΠ°ΠΊΡΠΎΡΠΈΠ½Π³ ΡΠ»ΠΎΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Β»
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅
Π¦Π΅Π»Ρ: ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² "ΠΠΎΠΌΠ°ΡΠ½Π΅Π΅ Π·Π°Π΄Π°Π½ΠΈΠ΅ β2", ΡΡΠΎΠ±Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΡΡ Π±ΡΠ»ΠΎ ΡΠ΅ΡΠ΅Π· Postgres, Π° Π½Π΅ ΡΠ΅ΡΠ΅Π· ΡΠ°ΠΉΠ».
ΠΠ°Π΄Π°Π½ΠΈΠ΅:
ΠΠ΅ΡΠ΅Π²Π΅Π΄ΠΈΡΠ΅ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π² ΡΠ°ΠΉΠ»Π΅ Π½Π° Postgres. Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΡ Π΄Π»Ρ DDL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈ.
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π·Π°Π΄Π°Π½ΠΈΠ΅:
ΠΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠΉΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ Π² ΠΠ. ΠΡΠΈΠ»ΠΎΠΆΠΈΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π° Π² README.md. ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈΠ½Π΄Π΅ΠΊΡΡ, Π³Π΄Π΅ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ
ΠΠΎΠΌΠ½ΠΈΡΠ΅, ΡΡΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ ΠΎΠ΄ΠΈΠ½ DDL ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ. ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠ»Π°Π½Π° Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Explain Tensor.
ΠΠ΅Π΄Π»Π°ΠΉΠ½Ρ ΡΠ΄Π°ΡΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π·Π°Π΄Π°Π½ΠΈΡ:
15 ΠΈΡΠ½Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 18 ΠΈΡΠ½Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π² "ΠΠΎΠΌΠ°ΡΠ½Π΅ΠΌ Π·Π°Π΄Π°Π½ΠΈΠΈ β1", ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π°Π½Π½ΡΡ Π·Π°Π½ΠΈΠΌΠ°Π» ΠΌΠ΅Π½ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π΅ Π΄ΠΎΠΆΠΈΠ΄Π°ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ.
- Π£ΡΠΊΠΎΡΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π Π΅Π°Π»ΠΈΠ·ΡΠΉΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°Π΄Π°Π½ΠΈΠΉ Π² Π΄Π²Π° ΠΏΠΎΡΠΎΠΊΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ·ΡΡΠ΅Π½Π½ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
- ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡΡΡΠ΅ΠΊΡ) Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ.
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ SIGINT (Ctrl+C) ΠΈ SIGTERM, ΡΡΠΎΠ±Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΡΡ Π²ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π΄ΠΎ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ (graceful shutdown).
- ΠΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ»-Π²ΠΎΠΌ Π³ΠΎΡΡΡΠΈΠ½ ΡΠ΅ΡΠ΅Π· ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. Π’.Π΅. ΠΊΠΎΠ»-Π²ΠΎ Π³ΠΎΡΡΡΠΈΠ½ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π±Π΅Π· ΡΠ΅ΡΡΠ°ΡΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠΎΠ±Π°Π²ΠΈΡΡ Π½ΠΎΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΎ Π½Π°ΡΠ°Π»Π΅ ΠΈ ΠΎΠΊΠΎΠ½ΡΠ°Π½ΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π³ΠΎΡΡΡΠΈΠ½Ρ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ Π³ΠΎΡΡΡΠΈΠ½Π΅.
- ΠΠ»Ρ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ os/signal Π² Go.
- ΠΠ»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈ ΡΡΠ΅Π½ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ sync ΠΈ Π΅Π³ΠΎ ΠΌΡΡΡΠ΅ΠΊΡΡ.
- ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π² Go Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ os ΠΈΠ»ΠΈ io/ioutil.
- 8 ΠΈΡΠ½Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 11 ΠΈΡΠ½Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΡ ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ° ΠΠΠ.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π»Π°Π΄Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ help, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Ρ ΠΊΡΠ°ΡΠΊΠΈΠΌ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ:
- ΠΡΠΈΠ½ΡΡΡ Π·Π°ΠΊΠ°Π· ΠΎΡ ΠΊΡΡΡΠ΅ΡΠ° ΠΠ° Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ID Π·Π°ΠΊΠ°Π·Π°, ID ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈ ΡΡΠΎΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. ΠΠ°ΠΊΠ°Π· Π½Π΅Π»ΡΠ·Ρ ΠΏΡΠΈΠ½ΡΡΡ Π΄Π²Π°ΠΆΠ΄Ρ. ΠΡΠ»ΠΈ ΡΡΠΎΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ»ΠΎΠΌ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ΄Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΡ. Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΡΠΈΠ½ΡΡΡΡ Π·Π°ΠΊΠ°Π·ΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ Π² ΡΠ°ΠΉΠ». Π€ΠΎΡΠΌΠ°Ρ ΡΠ°ΠΉΠ»Π° ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π° Π²ΡΠ±ΠΎΡ Π°Π²ΡΠΎΡΠ°.
- ΠΠ΅ΡΠ½ΡΡΡ Π·Π°ΠΊΠ°Π· ΠΊΡΡΡΠ΅ΡΡ ΠΠ° Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ID Π·Π°ΠΊΠ°Π·Π°. ΠΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄Π°Π»ΡΡΡ Π·Π°ΠΊΠ°Π· ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΠΎΠΆΠ½ΠΎ Π²Π΅ΡΠ½ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ Π·Π°ΠΊΠ°Π·Ρ, Ρ ΠΊΠΎΡΠΎΡΡΡ Π²ΡΡΠ΅Π» ΡΡΠΎΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π΅ΡΠ»ΠΈ Π·Π°ΠΊΠ°Π·Ρ Π½Π΅ Π±ΡΠ»ΠΈ Π²ΡΠ΄Π°Π½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
- ΠΡΠ΄Π°ΡΡ Π·Π°ΠΊΠ°Π· ΠΊΠ»ΠΈΠ΅Π½ΡΡ ΠΠ° Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ ID Π·Π°ΠΊΠ°Π·ΠΎΠ². ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ Π·Π°ΠΊΠ°Π·Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ»ΠΈ ΠΏΡΠΈΠ½ΡΡΡ ΠΎΡ ΠΊΡΡΡΠ΅ΡΠ° ΠΈ ΡΠ΅ΠΉ ΡΡΠΎΠΊ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅ΠΊΡΡΠ΅ΠΉ Π΄Π°ΡΡ. ΠΡΠ΅ ID Π·Π°ΠΊΠ°Π·ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
- ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΠ° Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈ ΠΎΠΏΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ N Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΈΠ»ΠΈ Π·Π°ΠΊΠ°Π·Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, Π½Π°Ρ ΠΎΠ΄ΡΡΠΈΠ΅ΡΡ Π² Π½Π°ΡΠ΅ΠΌ ΠΠΠ.
- ΠΡΠΈΠ½ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΠ° Π²Ρ ΠΎΠ΄ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅ΡΡΡ ID ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ID Π·Π°ΠΊΠ°Π·Π°. ΠΠ°ΠΊΠ°Π· ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π²ΡΡ Π΄Π½Π΅ΠΉ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π²ΡΠ΄Π°ΡΠΈ. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ, ΡΡΠΎ Π·Π°ΠΊΠ°Π· Π²ΡΠ΄Π°Π²Π°Π»ΡΡ Ρ Π½Π°ΡΠ΅Π³ΠΎ ΠΠΠ.
- ΠΠΎΠ»ΡΡΠΈΡΡ ΡΠΏΠΈΡΠΎΠΊ Π²ΠΎΠ·Π²ΡΠ°ΡΠΎΠ² ΠΠ΅ΡΠΎΠ΄ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²ΡΠ΄Π°Π²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°Π³ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎ.
os.OpenFile
,os.Create
,os.ReadALL
- 1 ΠΈΡΠ½Ρ 23:59 (ΡΠ΄Π°ΡΠ°) / 4 ΠΈΡΠ½Ρ, 23:59 (ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°)
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°Π΄Π°Π½ΠΈΡ. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ 10 Π±Π°Π»Π»ΠΎΠ²
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄
- ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ Enter
- ΠΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ Enter, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ Π²Π²Π΅Π΄Π΅Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ°ΠΉΠ»
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΎΠΆΠΈΠ΄Π°Π΅Ρ Π²Π²ΠΎΠ΄Π° Π½ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡ ctrl+c ΠΈΠ»ΠΈ Π²Π²ΠΎΠ΄Π° ΠΊΠΎΠΌΠ°Π½Π΄Ρ exit
- ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² Π²ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ°ΠΉΠ» Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ/ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ "hash"
- ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ "hash" ΡΡΠΈΡΠ°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ
hash.GenerateHash()
Π€ΡΠ½ΠΊΡΠΈΡ GenerateHash() - ΡΡΠΎ ΡΡΠΎΡΠΎΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π΅Ρ Π½Π΅ Π½ΡΠΆΠ½ΠΎ, ΠΎΠ½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»ΡΠΌ ΠΈΠ»ΠΈ ΡΡΡΡΠΎΡΠΎΠΌ. Π€ΡΠ½ΠΊΡΠΈΡ GenerateHash() ΡΠ°Π±ΠΎΡΠ°Π΅Ρ "Π΄ΠΎΠ»Π³ΠΎ", Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π°ΠΌΠ΅Π΄Π»ΡΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π²Π΅ΡΡΠΈ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. - ΠΡΠΈΠ΄ΡΠΌΠ°ΠΉΡΠ΅ ΡΠ²ΠΎΠΉ/ΡΠ²ΠΎΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΈΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠΉΡΠ΅ ΡΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΡΡΠ΅Π±Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π° ΠΎΠ± ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°Ρ