ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kunlar
-430 kunlar
Postlar arxiv
1 421
# ืืชื ืขืืืจืื ืืฉืขืื ืืืจืฃ (ืืขืื ืืื ืืืคืื ืขื ืืืืจื ืืื)
ืืืื ืืช ืืื ืืงืก - ืืืื ืื ืืื ืืงืก ืืืง, ืฉืืืจืืช ืืกืืก ื ืชืื ืื ืฉื ืืืืจื ืืื ืืชืืงืื ืืืืืืช ืขื ืืืืฉื ืฉื ืงืจืืช
/usr/share/zoneinfo. ืืงืืฆืื ืฉื ืื ืืื ืืจืืื ืฉืืชืืจืื ืืช ืืืคืจืฉ ืฉื ืืืืจ ืืืื ืฉืืชืืื ืืงืืืฅ, ืืื ืืช ืื ืืฉืื ืืืื ืืืืืจ ืืืื ืืืืืืื ืืืืื ืฉื ืืขืืจ ืืื ืฉืขืื ืงืืฅ ืืืืจืฃ. ืืืื ื ืฆื ืืืงืืจ ืงืฆืช ืืช ืืงืืฆืื ืฉื ืืืฉืืง ืขื ืืืืจื ืืื.
ืชืืืื ืจืฉืืืช ืืงืืฆืื ืืชืืงืืื, ืืคืืืช ืืฆืื ืขื ืืืง:
$ ls -ld /usr/share/zoneinfo/
lrwxr-xr-x 1 root wheel 38 Apr 28 23:44 /usr/share/zoneinfo/ -> /var/db/timezone/tz/2023c.1.0/zoneinfo
$ ls -F /var/db/timezone/tz/2023c.1.0/zoneinfo/
+VERSION CET Eire GMT0 Japan Navajo Turkey leapseconds
Africa/ CST6CDT Etc/ Greenwich Kwajalein PRC UCT posixrules
America/ Canada/ Europe/ HST Libya PST8PDT US/ zone.tab
Antarctica/ Chile/ Factory Hongkong MET Pacific/ UTC
Arctic/ Cuba GB Iceland MST Poland Universal
Asia/ EET GB-Eire Indian/ MST7MDT Portugal W-SU
Atlantic/ EST GMT Iran Mexico/ ROC WET
Australia/ EST5EDT GMT+0 Israel NZ ROK Zulu
Brazil/ Egypt GMT-0 Jamaica NZ-CHAT Singapore iso3166.tab
ืืื ืื ื ืจืืืื ืฉืืชืืงืื ืืืืื ืงืืฆืื ืืชืืงืืืช, ืืคื ืืืืื ื ืืืืืฉืช. ืื ื ืื ืืืื ืืื ืื ื ืืื ืืืฉืช, ืืื ืืคืืืช ืื ืื ื ืื ืืืืืืื. ืืฉื ื ืกื ืืืฆืื ืืช ืชืืื ืืงืืืฅ ืื ืื ื ืขืฉืืืื ืืืชืืืื ืฉืื ืืื ืงืืฆืื ืืื ืืจืืื. ืืคืฉืจ ืืืฉืชืืฉ ื xxd:
$ xxd /usr/share/zoneinfo/Israel| head -4
00000000: 545a 6966 3200 0000 0000 0000 0000 0000 TZif2...........
00000010: 0000 0000 0000 0008 0000 0008 0000 0000 ................
00000020: 0000 0094 0000 0008 0000 0011 9e30 4588 .............0E.
00000030: c859 cf00 c8fa a600 c938 9c80 cce5 eb80 .Y.......8......
ืืคืืจืื ืืชืืืจ ืืคืืจืื ืืชืืขืื ืืื. ืืืืจ ืืืฉืื ืืฉื ืืื ืืจืืืช ืฉืงืืืฅ ืืื ืืืื ืืจืื ืืขืืจ ืืืคืจืฉ ืืฉืขืืช. ืืคืงืืื zdump ืืืคืืกื ืืช ืืืื ืื ืืืื ืืืืืจ ืืื ืฉืืชืืื ืืงืืืฅ ืืืืืืจ:
$ zdump Israel
Israel Fri Sep 8 14:14:43 2023 IDT
$ zdump Europe/Paris
Europe/Paris Fri Sep 8 13:15:03 2023 CEST
$ zdump Chile/Continental
Chile/Continental Fri Sep 8 08:15:45 2023 -03
ืืขื ืืืชื ืืืชืืื ืืื ืืืืื ืืืฆืื ืืช ืืฉืื ืืืื ืฉืงืืืฅ zoneinfo ืืืื, ืืืืืจ ืืืขืืจืื ืืื ืฉืขืื ืืืจืฃ ืืงืืฅ. ืื ืืืฆื ืืฆืื ื:
$ zdump -v Israel
Israel Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 23:06:32 1901 JMT isdst=0
Israel Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 23:06:32 1901 JMT isdst=0
Israel Mon Dec 31 21:39:19 1917 UTC = Mon Dec 31 23:59:59 1917 JMT isdst=0
Israel Mon Dec 31 21:39:20 1917 UTC = Mon Dec 31 23:39:20 1917 IST isdst=0
Israel Fri May 31 23:59:59 1940 UTC = Sat Jun 1 01:59:59 1940 IST isdst=0
Israel Sat Jun 1 00:00:00 1940 UTC = Sat Jun 1 03:00:00 1940 IDT isdst=1
Israel Mon Sep 30 23:59:59 1940 UTC = Tue Oct 1 02:59:59 1940 IDT isdst=1
Israel Tue Oct 1 00:00:00 1940 UTC = Tue Oct 1 02:00:00 1940 IST isdst=0
Israel Sat Nov 16 23:59:59 1940 UTC = Sun Nov 17 01:59:59 1940 IST isdst=0
Israel Sun Nov 17 00:00:00 1940 UTC = Sun Nov 17 03:00:00 1940 IDT isdst=1
Israel Sat Oct 31 23:59:59 1942 UTC = Sun Nov 1 02:59:59 1942 IDT isdst=1
Israel Sun Nov 1 00:00:00 1942 UTC = Sun Nov 1 02:00:00 1942 IST isdst=0
Israel Wed Mar 31 23:59:59 1943 UTC = Thu Apr 1 01:59:59 1943 IST isdst=0
Israel Thu Apr 1 00:00:00 1943 UTC = Thu Apr 1 03:00:00 1943 IDT isdst=1
Israel Sun Oct 31 23:59:59 1943 UTC = Mon Nov 1 02:59:59 1943 IDT isdst=1
Israel Mon Nov 1 00:00:00 1943 UTC = Mon Nov 1 02:00:00 1943 IST isdst=01 421
# ืืื ืืืืืช ืืืืขื ืืื ืืืืช ืชืงื ืืช
ืฉืืื 59 ืืคืจืืืงื ืืืืืจ ืืฆืืื ืืช ืืืชืืจ ืืื - ื ืชืื ื ืืืืขื ืืืฆืคื ืช ืืืคืชื ืืฆืคื ื ืืืืจืื ื-3 ืืืชืืืช ืงืื ืืช ืืืื, ืืืืฉืืื ืฉืื ื ืืื ืืืฆืื ืืช ืืืงืกื ืืืงืืจื.
ืืจืืจ ืฉืืืกืคืจืื ืื ืื ืงืื ืื ืืคืฉืจ ืืืจืืฅ ืืงืืืช ืืืคืืฉ Brute Force ืขื ืื ืืืคืฉืจืืืืช ืืืคืชื ืืืืฆืื ืืช ืืชืฉืืื. ืืืชืืจ ืืืืชืจ ืืืื ืืื ืืืืืช ืืืื ืืคืฉืจืืช ืืื ื ืืื ื ืืืืืจ ืืืืืช ืืชื ืืืืืขื ืืืคืืฆืืช ืืื ืืื ืืืืืขื ืืืงืืจืืช.
ืื ืืกืืื ืืจืืฉืื ืฉืื (ืฉื ืืฉื) ืืื ืืืคืฉ ืืืืขืืช ืฉืืืจืืืืช ืจืง ืืืืชืืืช. ืื ื ืืฉื ืื ืืืืืขื ืืืงืืจืืช ืืืื ืื ืืกืคืจืื ืืชืืืื ืืืืืืื.
ืืกืืคื ืฉื ืืืจ ื ืืืจืชื ืฉืืฉ ืื ืจืฉืืื ืฉื ืื ืืืืืื ืืื ืืืืช ืืืฉ ืืฆืื ืขื ืืืืฉื, ืืื ืืฆืืื, ืืงืืืฅ
/usr/share/dict/words. ืืฉื ืืืจื ืืืชื ืงืฆืจื ืืืืคืืฉ ืืืืขืืช ืืื ืืคืืืช 40% ืืืืืืื ืื ืืืืื ืืืงืืืช ืืื ืืืืช ืื ืฉืืืืื ืืืืืขื ืื ืืื ื. ืืคืืชืจืื ืืืื ืืคืืืชืื ืืื:
from pathlib import Path
import string
import sys
from itertools import cycle
english_words = set([c.removesuffix('\n').lower() for c in Path('/usr/share/dict/words').open().readlines()])
message = [int(i) for i in Path('./0059_cipher.txt').open().read().split(',')]
key = [97, 98, 99]
def decrypt(message, key):
return ''.join([chr(i) for i in [p[0] ^ p[1] for p in zip(message, cycle(key))]])
for i in range(ord('a'), ord('z') + 1):
for j in range(ord('a'), ord('z') + 1):
for k in range(ord('a'), ord('z') + 1):
key = [i, j, k]
plaintext = decrypt(message, key)
words = plaintext.split()
valid_words = [w for w in plaintext.split() if w in english_words]
if len(valid_words) / len(words) > 0.4:
print(plaintext)
print(sum(ord(ch) for ch in plaintext))1 421
# ืืืื ื ืื ื ืื ืื ืื ืืจืฉืืืช ืคืฉืื ืขื Decorators ืืคืืืชืื
ื Decorators ืืฉ ืฉืชื ืชืืื ืืช ืืืืืช - ืื ืืืื ืืืืืื ืืืชืืื ืฉื ืืคืื ืงืฆืื ืืงื ืืืืืช ืื ืืคืขืืื ืืืชื ืื ืื. ืืื ื ืืื ืืืฉืชืืฉ ืืื ืืื ืืื ืืช ืืขืจืืช ืืจืฉืืืช ืคืฉืืื ืืืืชืื ืงืื ืคืืืชืื ืืืืืื ืืืชืจ.
## ืงืฆืช ืขืืืืช ืชืฉืชืืช
ืืขืจืืช ืืืจืฉืืืช ืฉืื ืฆืจืืื ืืขืฉืืช ืฉื ื ืืืจืื: ืงืืื ืื ืืืืจืื ืืช ืืืชืื ืชืื ืืืืชืื ืชืืช ืืืืืืจ ืืืื ืืจืฉืืืช ืื ืคืื ืงืฆืื ืืชืืื ืืช ืฆืจืืื, ืืืืจ ืฉื ื ืืืืืืจ ืืืืื ืืงืจืื ืื ืืจืฆืืช ืืฉ ืืช ืืืจืฉืืืช ืืืื.
ืื ื ืชืืื ืขื Enum ืฉืืืืืจ ืืช ืื ืืืจืฉืืืช ืืืคืฉืจืืืช, ืืืฉืืื ืืืฉืืง ืืื ืืืืื ืจืง ืฉื ื ืกืืืื ืืื ืชืืื:
from enum import Enum, auto
class Permissions(Enum):
NETWORK = auto()
FILESYSTEM = auto()
ืืขืื ืคืื ืงืฆืื ืฉืืืืงืช ืื ืืฉ ืื ืืื ืืชืืื ืืช ืืจืฉืืืช ืืคืขืืื ืืกืืืืช:
def has_permission(permission: Permissions):
match permission:
case Permissions.NETWORK:
return "--network" in sys.argv
case Permissions.FILESYSTEM:
return False
ืืืืืืฉ ืื ืฉื ืจืฉืืืช ืืืจืฉืืืช ืืื ืฉื ืื ืื ืื ืืืืืงื ืืืื ืฉืื ื ืืชืืื ืืืช ืืืืชืืืช ืืคื ืืืจืชื ืืืืืฉ ืคืฉืื ืจืง ืืฉืืื ืืืืืื.
## ืืืืฉืง ืฉืื ื ืจืืฆื
ืขืืฉืื ืืืืขืื ืืืืง ืืืขื ืืื ืืืื ืืืืืืจ ืืื ืชืืจืื ืคืื ืงืฆืื. ืื ืืงืื ืฉืืืืชื ืจืืฆื ืืืชืื:
@requires_permission(Permissions.NETWORK)
def find_my_ip():
with urllib.request.urlopen('https://api.ipify.org') as response:
data = response.read()
return data.decode('utf8')
ืฉืืื ืื ืืื ืืจืืจ ืืืืจื ืืืื ืืจืฉืื ืื ืืจืฉืืืช ืืคืื ืงืฆืื ืฆืจืืื ืืื ืืขืืื ืืืจ ืืฆืคืื ืืืชืืื ืฉื ืืคืื ืงืฆืื.
## ืืืืืฉ ืคืื ืงืฆืืืช ืืืืจืช ืืืจืฉืืืช
ืืืืืืฉ ืฉื ื Decorator ืืื ืื ืคืฉืื ืืืจื ืฉืฉืื ื ืืช ืืืืฉืง ืืืงืื:
def requires_permission(permission: Permissions):
def decorator(f):
def inner(*args, **kwargs):
if not has_permission(permission):
raise Exception("Not Authorized")
return f(*args, **kwargs)
inner.permissions = f.__dict__.get('permissions', []) + [permission]
return inner
return decorator
ืฆืจืื ืจืง ืืืืืง ืืคื ื ืื ืืคืขืื ืื ืืฉ ืื ืืื ืืืฉืชืืฉ ืืช ืืืจืฉืืืช ืืจืง ืื ืืฉ ืืจืฉืืืช ืืืจืืฅ ืืช ืืคืื ืงืฆืื ืืืงืืจืืช. ืืืืืช ืชืฉืชืืช ื Decorators ืฉื ืคืืืชืื ืืื ืืขืื ืืืคืขืื ืืกืคืจ Decorators ืืื ืืืจื ืืฉื ื ืืื ืืืืืืจ ืืื ืกืืืื ืฉื ืืจืฉืืืช (ืืืจืืช ืฉืืคืฉืจ ืืื ืืงืืืช ืื ืืขืืื ืืช ืืคืื ืงืฆืื ืื ืฉืชืงืื ืจืฉืืื ืฉื ืืจืฉืืืช).
## ืืืืื ืืืืจืช ืืจืฉืืืช ืืื ืคืื ืงืฆืื
ืืืืง ืืืืจืื ืืืขืจืืช ืืืคื ืืคืื ืงืฆืืืช ืฉืฉืืืชื ืืืืืืจ ืืื ืืจืฉืืืช. ืื ืืืืชื ืจืืฆื ืฉืืืฉืื ืืืชืื ืืืขืืช ืงืื ืืื:
def list_users():
with open('/etc/passwd') as f:
print(f.read())
ืืื ืืืื ืืืืื ืืืืคืืก ืชืืื ืฉื ืงืืืฅ ืืื ืืจืฉืืืช ืืืฉื ืืืขืจืืช ืืงืืฆืื.
ืืจื ืืืช ืืืืจืื ืืจืฉืืืช ืขื ืื ืคืื ืงืฆืื ืืื ืืจืืฅ ืขื ืื ืืคืื ืงืฆืืืช ืืงืืืฅ ืืืืืืง ืฉืืืืืจื ืืจืฉืืืช ืขืืืจื. ืื ื ืืืืืจ ืฉืืงืื ืืืงืืจืืืืืจ ืฉืื ื ืืช ืืืจืฉืืืช ืืืกืคืชื ืืืคืืื permissions ืืื ืคืื ืงืฆืื ืฉืืื ืจืฉืืื ืฉื ืื ืืืจืฉืืืช ืฉืืื ืฆืจืืื. ืื ืืืคืืื ืื ืื ืงืืื ืื ื ืืืืข ืฉืืืฉืื ืฉืื ืืืืืืจ ืืคืื ืงืฆืื ืืจืฉืืืช:
import sys
import inspect
def init():
safe_functions = {'has_permission', 'init', 'requires_permission'}
functions = [(name, obj) for name, obj in inspect.getmembers(sys.modules[__name__])
if inspect.isfunction(obj)
and 'permissions' not in obj.__dict__
and name not in safe_functions]
if len(functions) > 0:
raise Exception(f"Functions {functions} don't define required permissions")
init()
ืกื ืืื ืืขืืจืช Decorators ืืฆืืืชื ืืืืืืจ ืืืฉืง ืคืฉืื ืืื ืืืช ืืขืจืืช ืืจืฉืืืช ืืชืืื ืืช ืฉืื. ืืื ืกืคืง ืฉืืื ืขืืืฃ ืืื ืืช ืืช ืืืขืจืืช ืืฉืืจืืช ืขื ืืคืื ืงืฆืืืช ืืืืื ืืช ืืฉืคื ืฉื ืืืฉืืช ืืืขืจืืช ืืงืืฆืื ืื ืืจืฉืช, ืืื ืื ืื ืืืื ืืชืช ืคืืชืจืื ืืกืงืจืืคืืื ืคืฉืืืื ืฉืืจืื ืื ืฉืื ืืขืืื ืื ืืฉืจืฆืื ืืืจืื ืกืืืืืช ืฉืื ืืช.1 421
# ืืื ืืชื ืื ืื ืคืืื ื Type Hints?
ืืืื ื ืืืจ ืขื ืฉืืืฉ ืืกืชืืืืืืืช ื ืคืืฆืืช ืืฉืืืืฉ ื Type Hints ืืคืืืชืื, ื ื ืกื ืืคืจืง ืืืชื ืืืจืืืช ืืื ืืื ืืืช Type Hints ืื ืืืื ืืื ืืฉืื ืืืชืืืช ืงืื ืงื ืืืชืจ ืืชืืืืงื.
## ืืืืค ืืื ืืก ืืืจืฉืื ืืืื ืืชืขืกืงืืช
ืืขื ื ืจืืฉืื ื ื ืื Type Hints ืฉืื ื ืืืฉื ืฉืืืจืืช ืืืจืื ืื ืฉืื ืืืืชืจ ืขืืืื ืืจืืฉ ืืื ืืคืื ืืืชืขืกืงืืช ืืชืจ - ืืคืื ืฉืืืงืื ืืืชืื ืงืื ืื ืื ื ื ืชืขืกืง ืจืง ืืืืคืืฉ ืืืืคืืก ืื ืืื. ืจืืข, ืื list ืื Sequence? ืืื ืืืืื ืืื Sequence ื Iterable? ืืืื ืืืืืจืื Type Hint ื Decorator? ืืื ืขืืฉืื ืขื ืืคืื ืงืฆืื ืฉืฆืจืืื ืืืืืืจ ืืืจืื ืืืืคืืกืื ืฉืื ืื?
ืืขืจืืช ืืืืคืืกืื ืฉื ืคืืืชืื ืืื ืื ืืืจืืืช. ื ืืื ืื ืื TypeScript, ืืื ืขืืืื ืืฉ ืื ืืืืื. ืืจืื ืืืืชื ื ืืจืืืฉืื ืฉ Type Hints ืื ืืฉืื ืืื ืขืืฉืื ืืื ืื ืืื ืืื ืืืืื ืืืชื, ืื ืฉืื ืื ืฉืืืื ืืช ืืืฉืงืขื.
ืื ืืชื ืืืืจืื ืขื ืื ืฉืื ืฉืืจืืืฉืื ืื, ืฉืืื ืืืืืืจ ืฉืืคืฉืจ ืืืชืืื ืืืืกืืฃ Type Hints ืืืฉ ืืงืื ื, ืืจืง ืืช ืืื ืฉืืชื ืืืืจืื ืืงื ืืื ืืืชื, ืืืืืื ืืื. ืืฉืืฆืืจืื ืืืืืืจ ืืืคืืก ืืืชืจ ืืชืืืื ืืืืื ืืื ืืื, ืื ืืืืื ืืืคืฉ ืขืืื (ืื ืืืชืืืขืฅ ืขื ืืืื Chat GPT), ืืขื ืื ืืื ืืขืื ืืคืืจ Type Hints ืจืง ืืืงืืืืช ืฉืื ืืืจืฉืื ืืืื ืืืืฅ. ืืคืืื ืื ืืื ืืฉืคืจ ืืช ืืืฉืืืืช ืืืืืืืืืืช ื IDE ืืืืชื ืฉืืืช ืืื ื ื ืื ืืขืืืืช ืืืืคืืกืื.
## ืืืืค ืืื ืืก ืืงืืงืืื ืืช ื"ืืื ืืืืช" ืฉื ืืฉืคื
ืคื ืื ืื ื ืืืจ ืืืืขืื ืืืืขืื ืื ืืืชืจ ืคืืืืกืืคืืื. ืืืื ืื ืฉืื ืฉืืจืืืฉื ืฉ Type Hints ืืคืจืืขืื ืืื ืืืชืื ืงืื, ืื ืื ืื ืจืืฆืื ืืืืืื ืืจืืฉ ืื ืืืื ืืืืคืืกืื ืฉื ืืืฉืชื ืื. "ืืืื ืคืฉืื ื ืืืืจ ืคืื ืงืฆืื ืื ืจืื ืืืจ ืื ืืื ืืืื ื ืื ืืืฉืชืืฉ ืื" ืื ืืืืื.
ืืื ืืืขืื ืืื ืื ืืืฉ ืขืืื ืื ืื ืืคืืืชืื ืืืืคืืก ืงืืื ืืขืช ืืืืจืช ืคืื ืงืฆืื ืืจืืฉ ืฉื ืืืชืื ืชืื ืืืงืื ืืืืืืฉ ืฉื ืืคืื ืงืฆืื. ืืืืกืืฃ ืืืชื ืืืชืืื ืื ืจืง ืืจื ืืืืืช ืืืชืจ ืืจืืจืื ืืืื ืืืืฉืืืช ืฉืื ื. ืื ืืืฉืื ืืืชื ืืช ืืคืื ืงืฆืื:
def sum_digits(n):
sum(int(i) for i in str(n))
ืื ืืื ืืืชืื ืืช ื Type Hint ืืื ืืืืืจ ืืช ืืืืคืืก ืฉื n - ืืื ืืฉืื ืฉืืคืฉืจ ืืืืืจ ืืืชื ืืืืจืืืช ืขื str ืืืงืื ืจืฆืฃ ืฉื ืืืจืื ืฉืืคืฉืจ ืืืืืจ ืื ืืื ืืื ื int. ืืคืื ืงืฆืื ืื ืชืขืืื ืขื float-ืื ืื ืขื ืจืฉืืืืช, ืืื ืงืฉืจ ืืื ืงืืื ืื ืื ืงืืื Type Hint ืฉืืืืจ ืฉ n ืืื ืืกืคืจ.
## ืืืืค ืืื ืืก ืจืง ืืกืืืื ืืช ืืงืื ืืื ืืชืช ืขืจื
ืกืื ืืืจืื ืฉื ืืืขืื ืื ื ืื ืืืืค ืืื ืืก ืงืฉืืจ ืืืืคืฆืืื ืืืืืช ืฉืืื - ืืืื ืื ืฉืื ืฉืืจืืืฉื ืฉืืืื ืฉืืคืฉืจ ืืืจืืฅ ืชืืื ืืืช ืคืืืชืื ืื ืืฉืืื ืชืืืืืช ืืืืคืืกืื ืฉืืืืืจืื ืื ื Type Hints ืื ืืืืชืจืื, ืืืืืืื ืืงืื ืืงืืืฅ ืืขืืืฃ ืืืฉืงืืข ืืช ืืื ืจืืื ืฉืื ื ืืืชืืืช ืชืืขืื ืืื ืืืชืจ ืืืืืงืืช.
ืืชืฉืืื ืืื ืืื ืฉืื ืื ืกืืชืจ ืืืจืื ืคืขืืื ืืคืืื ืืืื ืืื. ื ืืื ืฉืคืืืชืื ืขืฆืื ืื ืืืืคืช ืืช ืชืืืืืช ืืืืคืืกืื ืืื ืื ืื ื ืืืืืื ืืืืืื ืืืืืฃ ืืช ืื ืืืืฆืขืืช ืืืกืคืช Commit Hook ืื ืื ืื ืื ืืืืงื ื CI ืฉืื ื ืฉืืืืื ืฉืืชืืื ืืช ืชืขืืืจ mypy ืืคื ื ืืขืืืช ืืืจืกื. ืื ืืกืฃ ืืืืื ืืชืืขืื ืืืืืืงืืช ืืืืืจื ืืช ืืืืคืืกืื ืฉืคืื ืงืฆืืืช ืืฆืคืืช ืืงืื, ืืืื Type Hints ืืืืืื ืจืง ืืขืืืจ ืืืชืื ืชืืขืื ืืื ืืืชืจ.
ืืฉืืจื ืืชืืชืื ื ืื ื ืืืฉื ืฉืืืจื ืฉืขืืืจืื ืืช ืขืงืืืช ืืืืืื ืกืืื Type Hints ืงืฉื ืืืกืชืื ืืืืจื. ืืขืจื ืฉืื ื ืืชื ืื ืืจืืจ ืืืืืื ื Refactoring ืืฉืืคืฉืจ ืืืืืช ืืงืืืช ืืช ืืืงืืืืช ืฉืืืฉืคืขืื ืืฉืื ืื ืืชืืื ืฉื ืคืื ืงืฆืื, ืืืขืืืื ืขื ืงืื ืืืฉ ืืฉืืคืฉืจ ืืจืืืช ืืืจ ืืฉืืคืขืืืื ืคืื ืงืฆืื ืืฆืืจื ืื ื ืืื ื.
ืืื ืืชื ืจืืฆืื ืืืชืืื ืืืฉืชืืฉ ื Type Hints ืืฆืืจื ืืืชืจ ืจืฆืื ืืช ืืชืืื ืืืช ืฉืืื ืืื ืื ืืืืืื ืฉืืฉ ืืื ืื ืืงืจืื ืืช ืื ืืชืืขืื ืขืืืื ืื ืฉืจืืฆืื ืืงืฆืจ ืืื ืื, ืชืฉืืื ืืฉืืืข ืฉืืงืืืชื ืืื ื ืงืืจืก ืฉื ืฉืืื ื ืฉืืขืืจืื ืขื Type Hints ืฉืืกืื ืืช ืื ืืืืคืื ืืื ืงืืืืช ืืืฉืืืืช ืืจื ืืืืืืืช ืคืจืงืืืืช ืืฉืืืืฉ ื Type Hints. ืืคืฉืจ ืืงืื ืืช ืืืื ื ืงืืจืก ืืงืืฉืืจ ืืื ืืืกืืจืช ืจืืืฉืช ืื ืื ืืืชืจ.1 421
# ืืื ืื ืืืืื ืืช ืืื
ืดืื ื ืื ืืืืื ืฉืืืจืชื ืืืืืงืกืืจ ืืคืจืืืงื ืืืื, ืื ืขืืจ ืื ืืจืืฉ? ืขืืฉืื ืื ื ืชืงืืข ืืื ืืฆืืื ืืืืืก ืืชืื ืชืืืด
ืดืืืขืชื ืฉืื ืืืืชื ืฆืจืื ืืืกืืื ืืฉืื ืืช ื Elastic Search, ืื ื ืื ืืืืื ืืื ืืืืื ื ืืฆื ืฉื ื ืฉื ืคืืชืื ืขื ืืขืืืช ืืืืฆืืขืื ืฉืืืด
ืดืคืขื ืืืจืื ื ืฉืื ื ืืืฆืื ืคืจืืืงื ื Outsource. ืืืงื ืื ื ืฆื ืืืืคืืจ ืืื ืืงืื ืืืจืืข ืฉืงืืืืชืืด
ืดืืื ืืื ืื ืฉืืืืืชื ืืช ืืืกืฃ ืืืืื ืขื ืงืืจืก ืคืืชืื ืืื ืืจืืืื. ืืฆื ืฉื ื ืฉื ืืืืืืื ืืืกืืฃ ืื ืืฆืืืชื ืืืฆืื ืืื ืขืืืืืด
ืืื ืืื ืืืืช ืืฉ ืืจืืืช ืืืืืืืช ืฉืืืื ื ืจืืฆืื ืฉืื ืืขืฉื - ืืงืื ืืื ืืืืื ืืืืคื ืืืื. ืืืขืื ืฉืืคืขืืื ืืืจืืืช ืืืื ืืชืงืืขืื ืืชืืจ ืกืืคืืจืื ืืจืืฉ ืืืื ืขืื ืืืืชื ื ืืืืฉืื ืงืืืื ืื ืฉืคืืืขืื ืืคืจืืืงืืื ืืืืื. ืื ืื ืขืื ืขื ืืืื Tech Lead ืฉืื ืืืื ื ืืฉืืืข ืขื ืืกืืกื ื ืชืื ืื ืืจืคืืื ืจืง ืื ืืคืจืืืงื ืงืืื ืืื ืืื ืืคืื ืืช ืืืขืจืืช ืืืืืง ืืคื ื ืืืื ืืืืื. ืืขืืืช ืงืืจืืช, ืืื ืืืืชืงืข ืืืชื ืื ืื ืืืืื ืื ืืกืืื ืืื ืืืืืจ ืขืืืื. (ืืืืื ืื ืืกืืื ืื ืืืืื ืื ืืืืช ื ืฉืืจ ืืืืชื ืคืจืืืงื, ืฉืื ืืืจื ืืื ืืืคื ืืฉืืืืฉ ืืืื ืื ืฉืืืช ืืขืืืื ืืื ืืืืจื ืฉื ืืื ืืกืืื).
ืืจืืง ืืื ืฉืขืืืจ ืื ืื ืืืืื ืืช ืืื ืืื ืืืืืืฃ ืืช ืืกืืคืืจ. ืืืงืื ืืืืื "ืื ื ืื ืืืืื ืฉืืืจืชื ื X" ืื ื ืืืื ืืขืฆืื "ืืฉืืชื ืฉืื ืืืื ืจืขืืื ืืืืืง ืืื ืืกืืฃ ืื ืื ืืื. ืืขื ืืื ืื ืงืจื ืฉื". ืกืืคืืจ ืืื ืคืืชื ืืช ืืืืช ืืืงืืจื ืืืฉืืืืช ืืืฉืืืจ ืื ืืช ืืืืคืฉ ืืืืืจืช ืืืื ืื ืืคืจืืืงืืื ืืืืื.
ืืฉืืชื ืฉืืืืงืกืืจ ืชืืื ืจืขืืื ืืืืืง ืืคืจืืืงื, ืืื ืืกืืฃ ืืื ืื ืื ืื ืืชืืืื.
ืืฉืืชื ืฉื Outsource ืืืื ืืืกืื ืืื, ืืื ืืกืืฃ ืืชืืืืืชื ืื ืื ืืฆืืชื ืืช ืืืคืชื ืื ืืื.
ืืฉืืชื ืฉืื ืืืื ืจืขืืื ืืืืืง - ืืื ืืกืืฃ ืื ืื ืืื.
1 421
# ืืืืื ืคืืจืืื ืืื ืืฉืชืืฉ?
ืงืื ืงืืืฅ docker-compose.yml ืืืื, ืขื ืืจืื ืกืจืืืกืื ืื ืกื ืืขื ืืช ืขื ืืฉืืื "ืืืืื ืคืืจืืื ืืื ืืฉืชืืฉ?". ืืืืืจ ืื ืขืืืจ ืกืจืืืก ืกืคืฆืืคื (ืืช ืื ืื ื ืืืื ืืืคืฉ ืืงืืืฅ ืืื ืืขืื), ืืื ืืื ืืกืจืืืกืื ืืื. ืืืคืืฉ ืืขืืจื ืืืงืกื? ืืื ืฆืืจื - ืื ื ืืืืจ yq:
$ yq '.services.[].ports|select(. != null)' < docker-compose.yml| tr -d \" | sed 's/- //' | cut -d: -f1
ืืคืื ืืื ืจืฉืืื ืฉื ืื ืืคืืจืืื ื host ืฉืื ืืกืจืืืกืื ืืงืืืฅ docker-compose.yml ืืชืคืกื.1 421
# ืืืื ื ืฉืชืืฉ ื Container Queries ืืื ืืงืืืข ืืืื ืฉื ืืงืกื ืืคื ืจืืื ืืืืื
ืงืืืขืช ืืืื ืฉื ืืืจืื ืืืืืืื ืื ืืื ืืืืจืื ืืืืืืืื ื CSS, ืื ืืื ืืืคืืื ืืืฉืืขืืช ืฉื ืืืืืืื ืขืฉืืื ืืืืืช ืฉืื ื. ืืืงืจื ืฉื
font-size ืืืืจืช ืขืจื ืืืืืืื ืืื ืืืกืืช ืืืืื ืืืืคื ืฉื ืืืื ื ืืืืื ืฉืื, ืืื ืื ืื ื ืืืชื:
.text {
font-size: 300%;
}
ืื ื ืืชืืืื ืฉืืืื ืืืืคื ืฉื ืืืื ื ืขื ืงืืืก text ืืื ืคื 3 ืืืืื ืืืืคื ืฉื ืืืืื ื ืืชืืื ืืื ื ืืฆื. ืืื ืงืฉืจ ืืจืืื ืืืืื ื ืืชืืื ืืื ื ืืฆื.
ืื ืืืืื ืฉืื ื ืืจืืื ืงืืืข ืืื ืื ื ืืืืขืื ืืื, ืืคืฉืจ ืืฆืืื ืืช ืืืื ืืืงืกื ืืืืืืืช ืืื vw. ืื ืืงืืข ืืืื ืืงืกื ืืืืก ืืจืืื ืืืกื, ืฉืื ืืคืขืืื ืื ืฉืื ืื ื ืจืืฆืื. ืืื ืื ืืืืื ืฉืื ืืื ืืฉืื ืฉืืคืฉืจ ืืืืืื ืืืืงืืื ืืืชื ืื ืจืืื ืืืกื ืื ืืฉืื.
ืืืืืช ืืคืืื ืื ืืืชื ืืจื ืืงืืืข ืืืื ืืืคื ืืืชืืื ืืืืื ืืืืื, ืืฉ ืขืื ืืจืื ืืืื ืืืคืืื ืื ืืืชืืืืช ืฉืืืื ืืืื ื ืจืืฆืื ืืขืฉืืช ืืฉืืืืื ืฉืื ื ืืฉื ื ืืช ืืืืื.
ืขื ืืคื ื ืืกืคืจ ืืืืฉืื ืืืจื ืืขืฉืืช ืืช ืืืชืืืืช ืืืื ืืืชื ืืืฉืชืืฉ ื JavaScript - ืืชืคืืก ืืืจืืขื ืฉืื ืื ืืืื ืขื ืืืื ื ืืืืื ืืืฉื ืืช ืืช ืืืืคืืื ืื ืืืชืืื. ืืขืืจืช ืืืืืช ืฉื ืงืจืืช Container Query ืื ืื ื ืืืืืื ืืงืืืข ืืืคืืื ืื ืฉืื ืื ืืคืจืืืื ืืคื ืืืื ืืืืื ืฉืืื.
ืืชืืืืจ ืืืื ืืืื ื Media Query ืืืกืคืง ืฉื ื ืคืืฆ'ืจืื ืฉืืืืฉืืื:
1. ืืืืืืช ืืืื ืืืฉืืช, ืืืืื ื vw ื vh, ืจืง ืฉืืคืขื ืืืื ืืืกืืืช ืืืืื ืืงืื ืืืื ืจ.
2. ืฉืืืืชืช @container ืืืฉื ืฉืืืคืฉืจืช ืืืืืืจ ืืืื ืขืืฆืื ืืกืืืืื ืื ืืงืื ืืืื ืจ ืฉืื ืืชืืื ืืฉืืืืชื.
ืืฉืืื ืืืชืืื ืืขืืื ืขื ืืคืืฆ'ืจ ืื ื ืฆืจืื ืืืืืืจ ืืืืื ื ืืงืื ืืืื ืจ ืืช ืืืืคืืื:
container-type: 'size';
ืื ืืืืืคืื ืขื ืืขืจื inline-size ืืื ืืืชืืืก ืืืืื ื inline ืฉืื (size ืืชืืืก ืืืืื ืฉืื ืืชืืจ ืืืืง). ืืืจื ืืืืจื ืื ืื ื ืืืื ืืืชืืืก ืืจืืื ืืงืื ืืืื ืจ ืืชืื ืืขืืฆืื ืืืืืื:
.text {
background: blue;
// cqw -> container width
font-size: 4cqw;
padding: 10px;
}
ืื ืืืืกืืฃ ืฉืืืืชื ืืืืคืขืื ืืื ืขืืฆืื ืืกืืื ืจืง ืื ืืงืื ืืืื ืจ ืขืืื ืืชื ืื:
@container (min-width: 700px) {
.text {
background: orange;
}
}
ืืืืื? ืืื. ื ืกื ืืช ืืงืืืกื ืืืืงืก ืืื:
https://codesandbox.io/s/cool-phoebe-kkmpr6
ืื ืืืืืขื ืืื:
<iframe src="https://codesandbox.io/embed/cool-phoebe-kkmpr6?fontsize=14&hidenavigation=1&theme=dark"
style="width:100%; height:500px; border:0; border-radius: 4px; overflow:hidden;"
title="cool-phoebe-kkmpr6"
allow="accelerometer; ambient-light-sensor; camera; encrypted-media; geolocation; gyroscope; hid; microphone; midi; payment; usb; vr; xr-spatial-tracking"
sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
></iframe>
ืชืืืื ืืืจืืจ ืืช ืืคืื ื ืืืื ืืช ืชืืชืื ื ืฉื ืืจืืืืข ืืื ืืืืืื ืืืชื, ืืืฉืื ืื ืฉืฉืื ืื ืืืื ืืจืืืืข ืืฉื ื ืื ืืช ืืืืื ืฉื ืืืงืกื ืฉืืชืืื. ืืืจื ืฉืชืขืืจื ืืช ืจืฃ ื 700 ืคืืงืกืืื ืื ืืจืงืข ืฉื ืืืงืกื ืืฉืชื ื ืืืชืื.1 421
# ืฉืืื ืื: ืคืืืก ืฉืืื ื JavaScript ืื ืืืืช ืืืกืืฃ
ืืงืื ืืื ืืืืื:
let x = "hello, "
x += "world"
console.log(x);
ืืื ืขืฉืื ืืชืช ืืจืืฉื ืฉืื ืื ื ืฉืืื ืืืจืืืช ืืชืื ืืืฉืชื ื x, ืืื ืืฉืืจื ืืฉื ืื ืืฉื ืื ืืช ืืืืจืืืช ืืื ืืืืกืืฃ ืื ืขืื ืืงืกื. ืืื ืื ืื ืื ืฉืงืืจื - ืืคืืขื ืืืจืืืืช ื JavaScript ืื Immutable, ืืืื ืืงืื ืคืฉืื ืืขืืื ืืช x ืื ืฉืืฆืืืข ืขื ืืืืจืืืช ืืืืฉื ืฉืืืจืืืช ืืฉืจืฉืืจ ืืืืจืืืช ืฉืงืืืืช ืื ืืืงืกื ืืืืฉ world.
ืงื ืืืืืืื ืืื ืืืืฆืขืืช ืืืกืคืช ืืฉืชื ื:
> x = "hello, "
'hello, '
> y = x
'hello, '
> x += "world"
'hello, world'
> x
'hello, world'
> y
'hello, '
ืื ื += ืืื ืืฉื ื ืืช ืืืืจืืืช ืื ืืืื ื ืจืืืื ืืช ืืฉืื ืื ืื ื y, ืืืืืง ืืื ืฉืงืืจื ืืขืืืื ืขื ืืขืจืืื:
> x = [1, 2, 3]
[ 1, 2, 3 ]
> y = x
[ 1, 2, 3 ]
> x.push(4)
4
> x
[ 1, 2, 3, 4 ]
> y
[ 1, 2, 3, 4 ]
ืืืื ืืืคืช ืื += ืืืจืก ืืช ืืขืจื ืืงืืื ืืืฉืชื ื ืืืืืืฃ ืืืชื ืืขืจื ืืืฉ ืืืื ืืืชืจ ืื ืืืกืืฃ ืืืฉืื ืงืืื? ืื ืืืจ ืชืืื ืืืืจืืืช. ืืืืจืืืช ืจืืืื ืื ืืืืช ืื ืืฉื ื, ืืื ืืฉืืืืจืืืช ืืืืฆืืช ืืืื ืืื ื DOM, ืฉืื ืื ืฉืื ืขื += ืืืจืืก ืืช ืืืืื ืืื ืืงืืืืื ืืืืืืฃ ืืืชื ืืืืื ืืื ืืืฉืื. ืื ืืื ืขื ืืืืื ืืื ืืืฉื ืื ืงืืื ืืืคืื ืืืืจืืขืื ืื ืืืจ ืื ืืขืืื (ืื ืืืืื ืืื "ืืืฉื ืื" ืืืจ ืื ืขื ืืืกืื).
ืืืืื? ืชืืื. ืืงืื ืืื ืืืืฆืจ ืืคืชืืจ ืฉืืืืืฆื ืขืืื ืืงืคืืฅ ืืืืขืช alert:
const main = document.querySelector('main');
main.innerHTML += '<button>button 1</button>';
main.querySelector('button').addEventListener('click', () => {
alert('1');
})
ืืขืืฉืื ืื ื ืืืงื ืืช ืืืชื ืงืื ืืืืกืืฃ ืื ืฉืืจื:
const main = document.querySelector('main');
main.innerHTML += '<button>button 1</button>';
main.querySelector('button').addEventListener('click', () => {
alert('1');
});
main.innerHTML += '<p>Click for magic</p>';
ืืืืืจื ืื ื ืืขืชื ืืืคืชืืจ, ืืื ืืืขืฉื ืื ืืืืคืชื ืืืชื ืืืคืชืืจ ืืืฉ, ืืขื ืืืคืชืืจ ืืืืฉ ืืื ืงืื ืืืคืื ืืืืจืืข ืืืื ืืืืฆืืช ืขื ืืืคืชืืจ ืืืืฉ ืื ืืงืคืืฆื ืืช ืืืืืขื.1 421
# ืืืื ืืืืชื: throw ื JavaScript ืืื ื Expression
ืจืฉืืืช ืืืืืืฉืื ืืฆืคืืืื ืืืืืคืกืงืจืืคื 5.3 ืื ืืืืืช ืฉืื ืืืื ืืจืืืงื ืืืช ืื ืืืืืืื, ืืื ืืื ืืื ืชืคืก ืืช ืชืฉืืืช ืืืื. ืืืืืชื ืฉืืงืื ืืื ื JavaScript (ืื ืืืืืคืกืงืจืืคื) ืืฃ ืคืขื ืื ืขืื:
const id = searchParams.id || throw new Error("id is required");
ืืกืืื ืืื ืฉ throw ืืื Statement ืืืื ืืคืฉืจ ืืืฉืชืืฉ ืื ืจืง ืืคืงืืื ืืืื. ืืื ืื ืฉืืืชืจ ืืขื ืืื ืืื ืืื ืืืื ื ืืื ืื ืืกืจ ืืืฃ ืืื. ืืจื ืืื ื ืืื ืืื ืืื ืื ืคืืฆืื ืืฉืคื ืืื perl ืขื ืฉืืจืืช ืืื:
open FILE, "filename.txt" or die "Cannot open file: $!\n";
ืื:
chdir('/etc') or die "Can't change directory";
ืื ืืื ืืขืฆื ืื ืืืื ื ืฆืจืืืื ืืช ืื ื JavaScript? ืืื ืืฉืขืจืืช-
1. ืื ืื ื ืคืืืช ืืืจืงืื ืฉืืืืืช ื JavaScript - ืื ืืืื ื perl ืฉื ืืฉืื ืกืื ืืืจืืฅ ืกืงืจืืคื ืื ืฉืืจืืฅ ืืช ืืกืงืจืืคื ืจืืื ืืช ืืฉืืืื ืืขืื ืืืื ืืขืฉืืช ืืฉืื, ื JavaScript ืืจืืงื ืฉื Exception ืืืฆื ืืื ืคืฉืื ืชืฆืื ืฉืืืื ืืงืื ืกืื, ืืจืื ืืืื ืืฃ ืืื ืื ืืจืื ืืืชื. ืืื ืจืื ืืืื ืืืืคืื ืืฉืืืืืช ื JavaScript ืืื ืืงืืื.
2. ืืคืขืืื ืืืชืจ ื ืื ืืืฉืชืืฉ ื Destructuring ืื ืืืืื ืืืื ืื ื ืขืื ืืืืข ืืืืฆืื ืืืืืืืงื, ืืฉืื ืืื:
const { id, page, limit } = searchParams;
if (!id) {
throw new Error("id is required");
}
ืื ืืชืื? ืืฆื ืืื ืืืชืืขืืข ืืืื ื ืฉื || throw ื JavaScript? ืื ืื ืกืคืจื ืืชื, ืืื ืื ืกืคืจื ืื ืขืฉืืชื ืืืงืื.1 421
# ืืืืื ืืฉืืจื
ืืฉืืืื ืคืืืฉ ืืช ืืืฆืืืืช ืืื ืืฃ ืคืขื ืื ืืคืืืฉ ืืฆืืืืช ืฉืืชืืืื ืื ืืืื ืืืื. ืื ืืืืื ืืื ืืืื ืืงืจืืช ืืชืืจ ืืฆืืืืช ืืื ืืืจ ืืื ืงืืจื ืืื ืืื ืืืื.
ืืฉืืืื ืคืืืฉ ืืฆืืืืช ืืื ืขืืื ืืื ืชืืื, ืืืชืืื ืืื ืืคืขืจ ืืื ืื ืฉืื ืื ื ืืืฉืืื ืฉืฆืจืื ืืงืจืืช ืืืื ืื ืฉืืืื ืืคืืขื ืืงืจืืช. ืื ื ืืืฉื ืฉืฆืจืื ืืงืืช ืฉื ื ืืืืื Machine Learning ืื ืื ื ืืืืจ ืืืจื ืฉืืืจื ืฉื ื ืืฆืื ืขืืืื. ืืคืืขื ืืืื ืืืืจื ืืชืืืื ืขื ืจืงืข ืืืชืจ ืืื ืืื ื, ืืื ืื ืืืงื ืฉืืืฉ ืฉื ืื. ืื ื ืืืฉื ืฉืืืื ืืืืืืืื ืื ื ืฆืจืื ืืืฆืื ืืฉืจืช ืกืืืื ื ืื ืืจืื ืืืจืื ืืืืืฆื ืื ืืืคืฉ ืขืืืื ืืืจ ืืฉื ื ืืฉื ืืื, ืืื ืืคืืขื ืื ื ืขืฉืื ืืืืืช ืฉืืขืืืื ืื ืืืคืฉืจืช ืื ืืืฉืงืืข ืืกืคืืง ืืืืืืืื ืืื ื ืฆืจืื ืืืืืจ ืืื ืืืชื ืืฉืจืช ืกืืืื ื ืืฆืืื ืื ืืกืคืืง ืืืืื.
ืื ื ืืืื ืฉืืืจื ืฉืืื ื ืคืจืืืงื ืืืืกืืฃ ืืืชื ืืงืืจืืช ืืืื ืืืื ืืชืืืื ืืืืืจ ืืืื, ืืคืืขื ืื ื ืขืฉืื ืืืืืช ืฉืืคืจืืืงื ืฉืื ืื ืืื ืืกืคืืง ืืื ืืฆืจืื ืืืืฉืื ืืขืืื.
ืื ื ืืืื ืฉืืืจื ืฉืืืฆื ืขืืืื ืืืืืืง ืืืื ืืืชืงืื ืืชืื ืืืืจื ืืืืืื ืืืื ืืขืืืื ืืืืื ืืืืช ืืืฉืืช, ืืคืืขื ืื ื ืขืฉืื ืืืืืช ืฉืืืืจื ืชืงืืขื ืขื ืืืฆืจืื ืืืืฉื ืื ืืืืง ืืฉืื ืืืขืืืื ืืื ืืืฆืื ืืื ืืืืื ืื ืืืืฅ ืืืื ืืื ืืขืืืก.
ืื ืฉืืืืข ืืืืืง ืืื ืืืจืื ืืขืืื ืืืฆืืืืช ืืคืืขื ืืื ืืืืฉืื ืืืชื ืื ืคืฉืื ืื ืืื ืฉืขืืื, ืื ืืืฉืื ืฉืืืฉืื ืืืื. ืืืฉืืช ืืืื ืืื ืืืืืง ืืงืกื ืืื ืฉื ืืขืฉืืช ืืฉืื ืฉืื ืื ื ืื ืืืืขืื ืืื ืืืืืจ, ืืชืคืืก ืืช ืืืืืื ืืืืช ืฉืืืจื, ืืืชืคืฉืจ ืืฉืฆืจืื ืืืืชืขืงืฉ ืืฉืฆืจืื. ืืื ืืืืืืช ืืจืื ืคืขืืื ืื ืืชืืฉืืื, ืืื ืขืื ืืืง ืืืงืกื ืฉืืื. ืืขืืืื, ืืขืืืื ืขื ืืืืืืืช ืฉืืื ืืช ืืืืืฅ.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
