uz
Feedback
ToCode

ToCode

Kanalga Telegramโ€™da oโ€˜tish

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

Ko'proq ko'rsatish
1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kunlar
-430 kunlar
Postlar arxiv
ToCode
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=0

ToCode
1 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))

ToCode
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 ื”ืฆืœื—ืชื™ ืœื”ื’ื“ื™ืจ ืžืžืฉืง ืคืฉื•ื˜ ืœื‘ื ื™ื™ืช ืžืขืจื›ืช ื”ืจืฉืื•ืช ืœืชื•ื›ื ื™ืช ืฉืœื™. ืื™ืŸ ืกืคืง ืฉื”ื™ื” ืขื“ื™ืฃ ืœื‘ื ื•ืช ืืช ื”ืžืขืจื›ืช ื™ืฉื™ืจื•ืช ืขืœ ื”ืคื•ื ืงืฆื™ื•ืช ื”ืžื•ื‘ื ื•ืช ื‘ืฉืคื” ืฉื ื™ื’ืฉื•ืช ืœืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืื• ืœืจืฉืช, ืื‘ืœ ื–ื” ื›ืŸ ื™ื›ื•ืœ ืœืชืช ืคื™ืชืจื•ืŸ ืœืกืงืจื™ืคื˜ื™ื ืคืฉื•ื˜ื™ื ืฉื”ืจื‘ื” ืื ืฉื™ื ืžืขื“ื›ื ื™ื ื•ืฉืจืฆื™ื ื‘ื”ืจื‘ื” ืกื‘ื™ื‘ื•ืช ืฉื•ื ื•ืช.

ToCode
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. ืืคืฉืจ ืœืงื‘ืœ ืืช ื”ืžื™ื ื™ ืงื•ืจืก ื‘ืงื™ืฉื•ืจ ื”ื–ื” ื‘ืžืกื’ืจืช ืจื›ื™ืฉืช ืžื ื•ื™ ืœืืชืจ.

ToCode
1 421
# ืื™ืš ืœื ืœืื›ื•ืœ ืืช ื”ืœื‘ ืดืื ื™ ืœื ืžืืžื™ืŸ ืฉื‘ื—ืจืชื™ ื‘ืืœื™ืงืกื™ืจ ืœืคืจื•ื™ืงื˜ ื”ื”ื•ื, ืžื” ืขื‘ืจ ืœื™ ื‘ืจืืฉ? ืขื›ืฉื™ื• ืื ื™ ืชืงื•ืข ื•ืœื ืžืฆืœื™ื— ืœื’ื™ื™ืก ืžืชื›ื ืชื™ืืด ืดื™ื“ืขืชื™ ืฉืœื ื”ื™ื™ืชื™ ืฆืจื™ืš ืœื”ืกื›ื™ื ืœืฉืœื‘ ืืช ื” Elastic Search, ืื ื™ ืœื ืžืืžื™ืŸ ืื™ืš ืื™ื‘ื“ื ื• ื—ืฆื™ ืฉื ื” ืฉืœ ืคื™ืชื•ื— ืขืœ ื‘ืขื™ื•ืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœื•ืด ืดืคืขื ืื—ืจื•ื ื” ืฉืื ื™ ืžื•ืฆื™ื ืคืจื•ื™ืงื˜ ืœ Outsource. ื™ื™ืงื— ืœื™ ื ืฆื— ืœื”ื™ืคื˜ืจ ืžื›ืœ ื”ืงื•ื“ ื”ื’ืจื•ืข ืฉืงื™ื‘ืœืชื™ืด ืดืื™ืš ื—ื‘ืœ ืœื™ ืฉื‘ื–ื‘ื–ืชื™ ืืช ื”ื›ืกืฃ ื•ื”ื–ืžืŸ ืขืœ ืงื•ืจืก ืคื™ืชื•ื— ืœืื ื“ืจื•ืื™ื“. ื—ืฆื™ ืฉื ื” ืฉืœ ืœื™ืžื•ื“ื™ื ื•ื‘ืกื•ืฃ ืœื ื”ืฆืœื—ืชื™ ืœืžืฆื•ื ื‘ื–ื” ืขื‘ื•ื“ื”ืด ืœื›ืœ ืื—ื“ ื•ืื—ืช ื™ืฉ ื—ืจื˜ื•ืช ื•ื”ื—ืœื˜ื•ืช ืฉื”ื™ื™ื ื• ืจื•ืฆื™ื ืฉืœื ื™ืขืฉื• - ื‘ืงื•ื“ ื•ื’ื ื‘ื—ื™ื™ื ื‘ืื•ืคืŸ ื›ืœืœื™. ื”ื‘ืขื™ื” ืฉืœืคืขืžื™ื ื”ื—ืจื˜ื•ืช ื”ืืœื” ืžืชืงื‘ืขื™ื ื‘ืชื•ืจ ืกื™ืคื•ืจื™ื ื‘ืจืืฉ ื•ืžื•ื ืขื™ื ืžืื™ืชื ื• ืœื”ืžืฉื™ืš ืงื“ื™ืžื” ืื• ืฉืคื•ื’ืขื™ื ื‘ืคืจื•ื™ืงื˜ื™ื ื”ื‘ืื™ื. ืžื™ ืœื ืขื‘ื“ ืขื ืื™ื–ื” Tech Lead ืฉืœื ืžื•ื›ื ื” ืœืฉืžื•ืข ืขืœ ื‘ืกื™ืกื™ ื ืชื•ื ื™ื ื’ืจืคื™ื™ื ืจืง ื›ื™ ื‘ืคืจื•ื™ืงื˜ ืงื•ื“ื ื›ืœื™ ื›ื–ื” ื”ืคื™ืœ ืืช ื”ืžืขืจื›ืช ื‘ื“ื™ื•ืง ืœืคื ื™ ื”ื“ืžื• ื”ื’ื“ื•ืœ. ื‘ืขื™ื•ืช ืงื•ืจื•ืช, ืื‘ืœ ืœื”ื™ืชืงืข ืื™ืชืŸ ื–ื” ืœื ืœืœืžื•ื“ ืžื ื™ืกื™ื•ืŸ ืืœื ืœื—ื–ื•ืจ ืขืœื™ื”ืŸ. (ืœืœืžื•ื“ ืžื ื™ืกื™ื•ืŸ ื–ื” ืœื”ื‘ื™ืŸ ืžื” ื‘ืืžืช ื ืฉื‘ืจ ื‘ืื•ืชื• ืคืจื•ื™ืงื˜, ืฉื–ื” ื‘ื“ืจืš ื›ืœืœ ืื•ืคืŸ ื”ืฉื™ืžื•ืฉ ื‘ื›ืœื™ ืื• ืฉื™ื˜ืช ื”ืขื‘ื•ื“ื” ื•ืœื ื‘ื—ื™ืจื” ืฉืœ ื›ืœื™ ืžืกื•ื™ื). ื˜ืจื™ืง ืื—ื“ ืฉืขื•ื–ืจ ืœื™ ืœื ืœืื›ื•ืœ ืืช ื”ืœื‘ ื”ื•ื ืœื”ื—ืœื™ืฃ ืืช ื”ืกื™ืคื•ืจ. ื‘ืžืงื•ื ืœื”ื’ื™ื“ "ืื ื™ ืœื ืžืืžื™ืŸ ืฉื‘ื—ืจืชื™ ื‘ X" ืื ื™ ืื’ื™ื“ ืœืขืฆืžื™ "ื—ืฉื‘ืชื™ ืฉื–ื” ื™ื”ื™ื” ืจืขื™ื•ืŸ ืžื“ืœื™ืง ืื‘ืœ ื‘ืกื•ืฃ ื–ื” ืœื ื”ื™ื”. ืžืขื ื™ื™ืŸ ืžื” ืงืจื” ืฉื". ืกื™ืคื•ืจ ื›ื–ื” ืคื•ืชื— ืืช ื”ื“ืœืช ืœื—ืงื™ืจื” ื•ืœืฉืืœื•ืช ื•ืžืฉืื™ืจ ืœื™ ืืช ื”ื—ื•ืคืฉ ื‘ื‘ื—ื™ืจืช ื›ืœื™ื ื’ื ืœืคืจื•ื™ืงื˜ื™ื ื”ื‘ืื™ื. ื—ืฉื‘ืชื™ ืฉืืœื™ืงืกื™ืจ ืชื”ื™ื” ืจืขื™ื•ืŸ ืžื“ืœื™ืง ืœืคืจื•ื™ืงื˜, ืื‘ืœ ื‘ืกื•ืฃ ื”ื™ื ืœื ื›ืœ ื›ืš ื”ืชืื™ืžื”. ื—ืฉื‘ืชื™ ืฉื‘ Outsource ืื•ื›ืœ ืœื—ืกื•ืš ื–ืžืŸ, ืื‘ืœ ื‘ืกื•ืฃ ื”ืชืื›ื–ื‘ืชื™ ื›ื™ ืœื ืžืฆืืชื™ ืืช ื”ืžืคืชื— ื”ื ื›ื•ืŸ. ื—ืฉื‘ืชื™ ืฉื–ื” ื™ื”ื™ื” ืจืขื™ื•ืŸ ืžื“ืœื™ืง - ืื‘ืœ ื‘ืกื•ืฃ ื–ื” ืœื ื”ื™ื”.

ToCode
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 ื™ืชืคืกื•.

ToCode
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 ืคื™ืงืกืœื™ื ื’ื ื”ืจืงืข ืฉืœ ื”ื˜ืงืกื˜ ื™ืฉืชื ื” ืœื›ืชื•ื.

ToCode
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>';
ืœื›ืื•ืจื” ืœื ื ื’ืขืชื™ ื‘ื›ืคืชื•ืจ, ืื‘ืœ ืœืžืขืฉื” ื›ืŸ ื”ื—ืœืคืชื™ ืื•ืชื• ื‘ื›ืคืชื•ืจ ื—ื“ืฉ, ื•ืขืœ ื”ื›ืคืชื•ืจ ื”ื—ื“ืฉ ืื™ืŸ ืงื•ื“ ื˜ื™ืคื•ืœ ื‘ืื™ืจื•ืข ื•ืœื›ืŸ ืœื—ื™ืฆื•ืช ืขืœ ื”ื›ืคืชื•ืจ ื”ื—ื“ืฉ ืœื ื™ืงืคื™ืฆื• ืืช ื”ื”ื•ื“ืขื”.

ToCode
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? ืื ื›ืŸ ืกืคืจื• ืžืชื™, ื•ืื ืœื ืกืคืจื• ืžื” ืขืฉื™ืชื ื‘ืžืงื•ื.

ToCode
1 421
# ื”ื—ืœื•ื ื•ืฉื‘ืจื• ื›ืฉื—ืœื•ื ืคื•ื’ืฉ ืืช ื”ืžืฆื™ืื•ืช ื”ื•ื ืืฃ ืคืขื ืœื ื™ืคื’ื•ืฉ ืžืฆื™ืื•ืช ืฉืžืชืื™ืžื” ืœื• ื‘ืžืื” ืื—ื•ื–. ืื ื”ื—ืœื•ื ื”ื™ื” ื™ื›ื•ืœ ืœืงืจื•ืช ื‘ืชื•ืจ ืžืฆื™ืื•ืช ื”ื•ื ื›ื‘ืจ ื”ื™ื” ืงื•ืจื” ื•ืœื ื”ื™ื” ื—ืœื•ื. ื›ืฉื—ืœื•ื ืคื•ื’ืฉ ืžืฆื™ืื•ืช ื”ื•ื ืขื•ืžื“ ืžื•ืœ ืชื”ื•ื, ื•ื”ืชื”ื•ื ื”ื™ื ื”ืคืขืจ ื‘ื™ืŸ ืžื” ืฉืื ื—ื ื• ื—ื•ืฉื‘ื™ื ืฉืฆืจื™ืš ืœืงืจื•ืช ืœื‘ื™ืŸ ืžื” ืฉื™ื›ื•ืœ ื‘ืคื•ืขืœ ืœืงืจื•ืช. ืื ื™ ื—ื•ืฉื‘ ืฉืฆืจื™ืš ืœืงื—ืช ืฉื ื” ืœืœืžื•ื“ Machine Learning ื›ื™ ืื ื™ ืžื›ื™ืจ ื—ื‘ืจื” ืฉืื—ืจื™ ืฉื ื” ืžืฆืื” ืขื‘ื•ื“ื”. ื‘ืคื•ืขืœ ืื•ืœื™ ื”ื—ื‘ืจื” ื”ืชื—ื™ืœื” ืขื ืจืงืข ื™ื•ืชืจ ื˜ื•ื‘ ืžืžื ื™, ื•ืœื™ ื–ื” ื™ื™ืงื— ืฉืœื•ืฉ ืฉื ื™ื. ืื ื™ ื—ื•ืฉื‘ ืฉื‘ื–ืžืŸ ื”ืœื™ืžื•ื“ื™ื ืื ื™ ืฆืจื™ืš ืœืžืฆื•ื ืžืฉืจืช ืกื˜ื•ื“ื ื˜ ื›ื™ ื”ืจื‘ื” ื—ื‘ืจื™ื ื”ืžืœื™ืฆื• ืœื™ ืœื—ืคืฉ ืขื‘ื•ื“ื” ื›ื‘ืจ ื‘ืฉื ื” ื”ืฉื ื™ื™ื”, ืื‘ืœ ื‘ืคื•ืขืœ ืื ื™ ืขืฉื•ื™ ืœื’ืœื•ืช ืฉื”ืขื‘ื•ื“ื” ืœื ืžืืคืฉืจืช ืœื™ ืœื”ืฉืงื™ืข ืžืกืคื™ืง ื‘ืœื™ืžื•ื“ื™ื ื•ืื ื™ ืฆืจื™ืš ืœื‘ื—ื•ืจ ื‘ื™ืŸ ืื•ืชื” ืžืฉืจืช ืกื˜ื•ื“ื ื˜ ืœืฆื™ื•ื ื™ื ืžืกืคื™ืง ื˜ื•ื‘ื™ื. ืื ื™ ื—ื•ืœื ืฉืื—ืจื™ ืฉืื‘ื ื” ืคืจื•ื™ืงื˜ ื•ืื•ืกื™ืฃ ืื•ืชื• ืœืงื•ืจื•ืช ื—ื™ื™ื ื›ื•ืœื ื™ืชื—ื™ืœื• ืœื—ื–ื•ืจ ืืœื™ื™, ื‘ืคื•ืขืœ ืื ื™ ืขืฉื•ื™ ืœื’ืœื•ืช ืฉื”ืคืจื•ื™ืงื˜ ืฉืœื™ ืœื ื”ื™ื” ืžืกืคื™ืง ื˜ื•ื‘ ื•ืฆืจื™ืš ืœื”ืžืฉื™ืš ืœืขื‘ื•ื“. ืื ื™ ื—ื•ืœื ืฉืื—ืจื™ ืฉืืžืฆื ืขื‘ื•ื“ื” ื‘ื”ื™ื™ื˜ืง ืื•ื›ืœ ืœื”ืชืงื“ื ื‘ืชื•ืš ื”ื—ื‘ืจื” ื•ืœืœืžื•ื“ ื‘ื–ืžืŸ ื”ืขื‘ื•ื“ื” ืžื™ื•ืžื ื•ื™ื•ืช ื—ื“ืฉื•ืช, ื‘ืคื•ืขืœ ืื ื™ ืขืฉื•ื™ ืœื’ืœื•ืช ืฉื”ื—ื‘ืจื” ืชืงื•ืขื” ืขืœ ืžื•ืฆืจื™ื ืžื™ื•ืฉื ื™ื ื•ื—ืœืง ื—ืฉื•ื‘ ืžื”ืขื‘ื•ื“ื” ื”ื•ื ืœืžืฆื•ื ื–ืžืŸ ืœื™ืžื•ื“ ื’ื ืžื—ื•ืฅ ืœื™ื•ื ื™ื•ื ื”ืขืžื•ืก. ืžื™ ืฉื™ื•ื“ืข ื‘ื“ื™ื•ืง ืื™ืš ื“ื‘ืจื™ื ื™ืขื‘ื“ื• ื‘ืžืฆื™ืื•ืช ื•ืคื•ืขืœ ื›ื“ื™ ืœื”ื’ืฉื™ื ืื•ืชื ื–ื” ืคืฉื•ื˜ ื‘ืŸ ืื“ื ืฉืขื•ื‘ื“, ืœื ืžื™ืฉื”ื• ืฉืžื’ืฉื™ื ื—ืœื•ื. ื”ื’ืฉืžืช ื—ืœื•ื ื”ื™ื ื‘ื“ื™ื•ืง ื”ืงืกื ื”ื–ื” ืฉืœ ืœืขืฉื•ืช ืžืฉื”ื• ืฉืื ื—ื ื• ืœื ื™ื•ื“ืขื™ื ืื™ืš ื™ื™ื’ืžืจ, ืœืชืคื•ืก ืืช ื”ื”ื–ื“ืžื ื•ื™ื•ืช ืฉื‘ื“ืจืš, ืœื”ืชืคืฉืจ ื›ืฉืฆืจื™ืš ื•ืœื”ืชืขืงืฉ ื›ืฉืฆืจื™ืš. ื•ื›ืŸ ื—ืœื•ืžื•ืช ื”ืจื‘ื” ืคืขืžื™ื ืœื ืžืชื’ืฉืžื™ื, ื•ื–ื” ืขื•ื“ ื—ืœืง ืžื”ืงืกื ืฉืœื”ื. ื•ืขื“ื™ื™ืŸ, ื”ืขื‘ื•ื“ื” ืขืœ ื”ื—ืœื•ืžื•ืช ืฉื•ื•ื” ืืช ื”ืžืืžืฅ.