ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 421
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kunlar
-430 kunlar
Postlar arxiv
1 421
# ืืืฉ ืืืชืจ: ืืื ื ืงืืจืก Type Hints ืืคืืืชืื
"ืื ืืืขืื ืืื ืืืืื ืฉืื ืืืชืืืช ืคืืืชืื?" ืืื ืืฉืืื ืฉืื ื ืืืื ืืคืชืื ืืืชื ืงืืจืกื ืคืืืชืื ืฉืื ื ืืขืืืจ ืืืืจืืช, ืืืื ืืชืฉืืืืช ืชืืื ืืืื ืืงืื ืฉื ืืืื ืื ืืฉื ืืืืคืืกืื: "ืืกืจ ืื ืืงืืืคืืืืจ", "ืื ื ืจืืื ืืช ืืฉืืืืืช ืจืง ืืืื ืจืืฆื", "ืื ืืคืฉืจ ืืืขืช ืื ืงืื ืืขืืื". ืจืืื ืืืื ืืืืชื ื ืื ืืฉืชืืฉืื ืืืืืจืืช ืืืคืืกืื ืืงืื ืฉืื ืื ื ืืืชืืื ืื ืื ืืฉืชืืฉืื ืืื ืืกืคืืง.
ืืื ืืื ืื Type Hints ืื ืืืจืืืื ืืขืืืื ืขื ืื ืคืจืืืงื ืืืื. ืื ืื ืืฉื ื ืืื ืืืฉืืื ืืืืืืืืืช ืืืื, ืืื Type Hints ืืื ืชืืื ืชืืขื ืืคืขืืื, ืืื ืื ืืฉื ื ืืื ืืชื ืืืืืื ืฉืืงืื ืฉืืื ืงืจืื, ืฉืืืฉื ืืืืฉืื ืืืจื ืฉืืชืืชื ืืืชื ืืกืืืื ืืืืืจ ืื ืฆืจืื ืืืขืืืจ ืืืืื ืคืื ืงืฆืื ืืืจื ืืฉืืขืืชืืช.
ืื ื ืืืฉื ืฉืืกืืื ืฉืื ืื ื ืื ืืืชืืื ืืกืคืืง Type Hints ืืื ืงืืื ืื ืขืงืืืช ืืืืื: ืืจืืข ืฉืืืืืื ืืขืืจ ืืืืกืคืช int ืื str ืืืจื ื ืงืืืืชืืื, ืื ืื ื ืืืืื ืฉืืฉ ืืืื ืืืจืื ืืืืื ืขื ืืขืจืืช ืืืืคืืกืื ืฉื ืคืืืชืื. ืืืงืืืืช ืืกืืืืื ืื ืื ื ืืืืื ืฉืืชืื ืฉืืืื ื ืืืืืื ืฉืืขืืื ืืฆืื ืฉืืืืืช ืขื ืงืื ืฉืืืืงื ืขืืื ืืขืืื, ืืืืงืืืืช ืืืจืื ืื ืื ื ืื ืืฆืืืืื ืืืืืืจ ืืช ืืืืคืืกืื ืื ืฉืืฆืืื ืืช ืืฉืืืืืช ืฉืงื ืืืื ืืจืืืช ืืขืื ืืื. ืืืืื ืฉืชืืื ืืฉ ืืฉืื ืืืชืจ ืืืืฃ ืืขืฉืืช, ืื ืื ื ืืืืื ืืช ืืืืืื ืืืชืื ื ืื ืืืืกืืฃ ืืช ืืืืจืืช ืืืืคืืกืื ืืืืจืกื ืืืื.
ืื ืืืช ืืืชื ืืืขืื ืฉืืื, ืชืฉืืื ืืฉืืืข ืฉืืืืจืกื ืืืื ืืื ืืืื. ืืืื ื ืงืืจืก ืืืฉ ืืืืืงื ืขื ืืืืจืืช ืืืคืืกืื ืจืืืืชื (ืืืืจืกืืืช ืืืืื ืืืงืกื ืืื ืืืืื) ืืช ืื ืื ืฉืฆืจืื ืืืขืช ืขื Type Hints ืืื ืืืฉืชืืฉ ืืื ืืชืืื ืืืช ืืืืชืืืช. ืืงืืจืก ืชืืืื ืืื ืืฉืืจ:
1. ืืื ืืืืืืจ ืืืคืืกืื ืืคืื ืงืฆืืืช, ืจืฉืืืืช, ืืืืื ืื ืืฉืืจ ืืื ื ื ืชืื ืื ืืคืืืชืื.
2. ืืื ืืืืืืจ ืืืคืืกืื ืืคืื ืงืฆืืืช ืืืืืืืช ืืื Decorators, Generators ืืคืื ืงืฆืืืช ืืืงืืืืช ืืกืคืจ ืืฉืชื ื ืฉื ืคืจืืืจืื.
3. ืืื (ืืืื) ืืขืืื ืขื TypeVar.
4. ืืื ืืืืืืจ ืคืจืืืืงืื ืืืชื ืืืฉืชืืฉ ืื, ืืืืื ืคืจืืืืงืืืื ืืืจ ืืืืืจืื ืืฉืคื.
ืืื ืืขืืงืจ ืชืืืื ืืื ืืืชืื ืืืืจืืช ืืืคืืกืื ืืงืื ืืืืื ืืจื ืืืืืืืช ืคืจืงืืืืช.
ืืงืืจืก ืืื ืงืฆืจ ืืืืจืื ืืฉืืขืืจ ืคืชืืื ืืืืจืื ืขืื ืฉืืขื ืฉืืขืืจืื ืืืคืฉืจ ืืกืืื ืืฆืคืืช ืื ืืืชืจืื ืืืฆื ืืื, ืืืืจื ืื ืืืืฉื ืืช ืืืืจืื ืฉืืืืชื ืืื ืชืืื ืืช ืคืืืชืื ืฉืชืืชืื.
ืื ืืืื ืืืชืจ ืืืืืื ืืืจ ืืฆืคืืช ืืชืืื ืืงืืฉืืจ:
https://www.tocode.co.il/boosters/13.
ืืื ืืชื ืขืืืื ืื ืื ืืืื ืืืื ืืื ืืืืื ืืช ืืฆืืื ืช ืืืืจืฉื.
ืฉืืืืช, ืืขืืช, ืคืืืืงืื ืืืฆืขืืช ืืืื ื ืงืืจืกืื ื ืืกืคืื ืืืืื ืื ืืฉืืื ืืืื ืืืืื ืื ืืืฉืืืจ ืืืืขื ืืจื ืืืชืจ.
1 421
# ืืื ืกืืืืช ืืฉืคืจ ืงืื ืฉืขืืื
ืงืื ืืืืืงื ืืื ื PyTest ืขืืื ืืขืืื (ืื ืื ืื ืืืฉ ืืจืืจ ืืื ืืื ืืื ืื ืื ืืืืงื ืืืืฆืืช ืจืง ืืฉืืื ืืคืืกื):
from unittest.mock import MagicMock
def test_mock(monkeypatch):
hello = MagicMock()
fake_len = MagicMock()
fake_len.return_value = 8
hello.__len__ = fake_len
with monkeypatch.context() as m:
m.setattr(hello, '__len__', fake_len)
assert len(hello) == 8
assert fake_len.called
ืืืืืงื ืืืืื ืืืชื ื ืฉืืคืื ืงืฆืื len ืฉื ืคืืืชืื ืืืืช ืงืืจืืช ืืืชืืื __len__ ืฉื ืืืืจ ืฉืืขืืืจื ืื. ืืื ืื ืื ืืืืจ ืืืฉืื ืืื. ืืืชืจ ืืขื ืืื ืืฉืื ืื ืืืืจืกื ืืคืฉืืื ืืืชืจ ืฉื ืืืืืงื ืฉืขืืฉื ืืืืืง ืืช ืืืชื ืืืจ:
def test_mock(monkeypatch):
hello = MagicMock()
hello.__len__ = MagicMock(return_value=8)
monkeypatch.setattr(hello, '__len__', hello.__len__)
assert len(hello) == 8
assert hello.__len__.called
ืฉื ื ืืฉืืคืืจืื ืืืืจืกื ืืคืฉืืื ืื ืืืืงืืช: ืืืืงืช ืืืฉืชื ื fake_len ืฉืื ืืื ืื ืฆืืจื, ืืืืืงืช ืืฉืืืืฉ ื context - ืฉืื ืื ืื ืื ืฉืืืงืฉืจ ืฉื ืืืืืงื ืื ืืืืืช ืื ืืื ื ืืจืฉ.
ืืืื ืืืช ืืฉืื ืื ื ืืกืชืืืื ืขื ืฉืชื ืืืืจืกืืืช ืงื ืืืืืื ืฉืืื ืฉืื ืืืื ืื ืืฉืืืื, ืฉืืื ืืื ืืกืืจ ืื ืงืืื ืืฉืขืืืฃ ืืืชืขืกืง ืืืชืืืช ืคืืฆ'ืจืื ืืืฉืื ืืืงืื ืืชืงื ืืช ืืงืืื. ืื ื ืืืฉื ืฉืืืฆืืืืช ืงืฆืช ืืืชืจ ืืืจืืืช ืืืกืืืืช ืืืืืช:
1. ืืฉืืื ืืชืงื ืื ื ืฆืจืื ืืืืื ืื ืขืืฉื monkeypatch.context ืืืชื ืื ืฆืจืื ืืืฉืชืืฉ ืื. ืจืง ืืืืื ืืช ืื ืฉืืื ืืช ืืืืืฅ, ืืื ืงืฉืจ ืืงืื ืฉืืชืงืื.
2. ืงืื ืืจืืข ืืฉืชืืคื ืืืืืฆืจ Cargo Cults - ืืืืจื ืืื ืื ื ืืืื ืืืืืื ืขืฉืจืืช ืืืืืช ืืืืงืืช ืฉืืฉืชืืฉื ื context, ืืคืืื ืฉืืื ืืื ืฉืื ืฆืืจื. ืื ืืืืื ืืื ืืืืืืื ืื ืื ื ืจืืืื ืืช ืื ื Code Reviews ืืฉืืชืื ืชืช ืืืฉื ื ืื ืกืช ืืฆืืืช ืืฆืจืืื ืืืืื ืืช ืื ืืืืงืื ืืืฉืื ืื ืฉื ืืฆืืืช ืฉืืื ืืื ืืฉืืืืช ืืื ืืช.
3. ืืื ืืื ืืฉืืืื ืืื ืืืื ืืืชืจ ืงื ืืืงืืจ ืืช ืืืขืื ืืฉืืงืื ืืืจืื ืืคืืืช ืืื ืื ืืืืื ืฉืื ื ืืืื ืืื ืืืชืจ.
ืืืืจื ืืื ืงืื ืืื ืืืืืกืื ืื ืฆื. ืื ืืชืืงืื ืงืื, ืื ืืฉ ืืื ืืืืืงืืช ืืื ืืชื ืืืื ืื ืืื ืืงืื ืืืืืจ ืืืืข ืืฉื (ืืืื ืืคืืื ืืืืื ืืืืื ืคืืกื ืืกืืืง ืืืืจืคืื ืืื ืืืขืชืง), ืฉืืื ืืืืืง ืืืชื.1 421
# ืืื ืกืืืืช ืืฉืคืจ ืงืื ืฉืขืืื
ืงืื ืืืืืงื ืืื ื PyTest ืขืืื ืืขืืื (ืื ืื ืื ืืืฉ ืืจืืจ ืืื ืืื ืืื ืื ืื ืืืืงื ืืืืฆืืช ืจืง ืืฉืืื ืืคืืกื):
from unittest.mock import MagicMock
def test_mock(monkeypatch):
hello = MagicMock()
fake_len = MagicMock()
fake_len.return_value = 8
hello.__len__ = fake_len
with monkeypatch.context() as m:
m.setattr(hello, '__len__', fake_len)
assert len(hello) == 8
assert fake_len.called
ืืืืืงื ืืืืื ืืืชื ื ืฉืืคืื ืงืฆืื len ืฉื ืคืืืชืื ืืืืช ืงืืจืืช ืืืชืืื __len__ ืฉื ืืืืจ ืฉืืขืืืจื ืื. ืืื ืื ืื ืืืืจ ืืืฉืื ืืื. ืืืชืจ ืืขื ืืื ืืฉืื ืื ืืืืจืกื ืืคืฉืืื ืืืชืจ ืฉื ืืืืืงื ืฉืขืืฉื ืืืืืง ืืช ืืืชื ืืืจ:
def test_mock(monkeypatch):
hello = MagicMock()
hello.__len__ = MagicMock(return_value=8)
monkeypatch.setattr(hello, '__len__', hello.__len__)
assert len(hello) == 8
assert hello.__len__.called
ืฉื ื ืืฉืืคืืจืื ืืืืจืกื ืืคืฉืืื ืื ืืืืงืืช: ืืืืงืช ืืืฉืชื ื fake_len ืฉืื ืืื ืื ืฆืืจื, ืืืืืงืช ืืฉืืืืฉ ื context - ืฉืื ืื ืื ืื ืฉืืืงืฉืจ ืฉื ืืืืืงื ืื ืืืืืช ืื ืืื ื ืืจืฉ.
ืืืื ืืืช ืืฉืื ืื ื ืืกืชืืืื ืขื ืฉืชื ืืืืจืกืืืช ืงื ืืืืืื ืฉืืื ืฉืื ืืืื ืื ืืฉืืืื, ืฉืืื ืืื ืืกืืจ ืื ืงืืื ืืฉืขืืืฃ ืืืชืขืกืง ืืืชืืืช ืคืืฆ'ืจืื ืืืฉืื ืืืงืื ืืชืงื ืืช ืืงืืื. ืื ื ืืืฉื ืฉืืืฆืืืืช ืงืฆืช ืืืชืจ ืืืจืืืช ืืืกืืืืช ืืืืืช:
1. ืืฉืืื ืืชืงื ืื ื ืฆืจืื ืืืืื ืื ืขืืฉื monkeypatch.context ืืืชื ืื ืฆืจืื ืืืฉืชืืฉ ืื. ืจืง ืืืืื ืืช ืื ืฉืืื ืืช ืืืืืฅ, ืืื ืงืฉืจ ืืงืื ืฉืืชืงืื.
2. ืงืื ืืจืืข ืืฉืชืืคื ืืืืืฆืจ Cargo Cults - ืืืืจื ืืื ืื ื ืืืื ืืืืืื ืขืฉืจืืช ืืืืืช ืืืืงืืช ืฉืืฉืชืืฉื ื context, ืืคืืื ืฉืืื ืืื ืฉืื ืฆืืจื. ืื ืืืืื ืืื ืืืืืืื ืื ืื ื ืจืืืื ืืช ืื ื Code Reviews ืืฉืืชืื ืชืช ืืืฉื ื ืื ืกืช ืืฆืืืช ืืฆืจืืื ืืืืื ืืช ืื ืืืืงืื ืืืฉืื ืื ืฉื ืืฆืืืช ืฉืืื ืืื ืืฉืืืืช ืืื ืืช.
3. ืืื ืืื ืืฉืืืื ืืื ืืืื ืืืชืจ ืงื ืืืงืืจ ืืช ืืืขืื ืืฉืืงืื ืืืจืื ืืคืืืช ืืื ืื ืืืืื ืฉืื ื ืืืื ืืื ืืืชืจ.
ืืืืจื ืืื ืงืื ืืื ืืืืืกืื ืื ืฆื. ืื ืืชืืงืื ืงืื, ืื ืืฉ ืืื ืืืืืงืืช ืืื ืืชื ืืืื ืื ืืื ืืงืื ืืืืืจ ืืืืข ืืฉื (ืืืื ืืคืืื ืืืืื ืืืืื ืคืืกื ืืกืืืง ืืืืจืคืื ืืื ืืืขืชืง), ืฉืืื ืืืืืง ืืืชื.1 421
# ืืืคืก ืขืฉืืชื ืืช ืื ืฉืื
ืื ืืกืืกื ื ืชืื ืื ืื ืืฉืืืื. ืื ืื ืฆืจืืืื ืืขืืื ืืืจ ืืื ืืืื ืฉืื ืืืืขืื ืื ืื ืืืื ืืืื ืืืืข. ืืื ืืืืฉืื ืืกืข ืืืื ืืฃ ืคืขื ืื ืืื ืืฆื ืืืืง ืฉืืื.
ืืืื ืืฉืืืฉืื ืืืชื ืืืขืืช:
DELETE FROM users;
ืืฉืืื ืืืืกืืฃ ืืช ื WHERE, ืื ืฉืืืขื ืืชื ืื ืืืืื UPDATE ืื ืื ื ื ืชืงืขืื.
ืืื ืืคืฉืจ ืืืืืจ ืืืืืื ืืืฉืื ืฉืืืื ืืืืืืื, ืืื ืืื ืื ื ืืืืืจ ืืืืืื ืื ืื ืืืื ืืคืืจืง ืืคืืื ืืฉืืชื ืืืืขืื ืื ืืชื ืขืืฉืื. ืืื ืืคืฉืจ ืืืืฆืื ืืืืืื ืจืง ืืช ืืชืืื ืฉื ืืืืช ืืืฉืชืืฉืื ืืืืืฉืื ืืืืฆื ืืช ืื ืชืื ืื ืฉื ืืืกืืก ื ืชืื ืื ื ืคืจื ืืืืืื ืืืชื ืืืืจื ืืืกืืก ื ืชืื ืื ืืจืืฉื, ืืื ืื ืื ืื ืืืื ืืขืืืจ ืืืง.
ืืืงืื ืื ืืื ืืืืชื ืจืืฆื ืืจืืืช ืืื ืคืฉืื ืฉืืืจืื ืืืกืืก ืื ืชืื ืื ืืืชื ืื ืืื ืืื ืืืืก ืืืกืข ืืืื. ืืืฉื ืฉืืคืฉืจ ืืื ืืืชืื:
git log -- users;
ืืืงืื ืืช ืื ืืฉืื ืืืื ืฉืืืฆืขื ืืืืืช ืืืฉืชืืฉืื, ืืืคืืื:
git restore -s HEAD~1 users
ืืื ืืืืืืจ ืืช ืืชืืื ืฉื ืืืืช ืืืฉืชืืฉืื ืงืืืื ืืื ืืืืจื.
ืขื ืฉืืืฆืืื ืืื ืื ืื ืื ืฉืืื ืื ืืืืืืืื ืื ืกื ืืืชืจืืง ืืคืงืืืืช ืืืืงื.1 421
# ืืฉื ื 2023. ืืืืข ืืืื ืืืคืกืืง ืืืืจ ืขื ืืจืืฉื ืืคืืืชืื
ืืงืื ืกืคื ืฉื ืืจืืฉื ืืื ืืืืงืืช ืืื ืคืืคืืืจื ืืฉืืืื ืืชืื Java ื C++ ืืืื ืฉืื ืืืชื ืืืจื ืืืืืื ืืืชืื ืงืื ืคืืืืืืจืคื. ืื ืจืฆืื ื ื Java ืืืฆืืจ ืืขืจื ืฉื ืืืฆืจืื ืืืืืงืืช ืฉืื ืืช, ืืื ืขืืื ื ืืืืื ืฉืืื ืืืืืงืืช ืืฉ Base Class ืืฉืืชืฃ, ืืืฉืคื ืขืฆืื ืืืืื ืฉืื ืื ื ืืชืืืกืื ืจืง ืืืืคืืื ืื ืื Base Class ืฉื ืืืืจืื ืืืืขืจื.
ืื ื ืืืื ืืช ืืืืืื ืืื ื Java. ืืื ืืคืืืชืื? ืื ื ืืงืื ืืืืืงื ืฉื ืขืืืช ืงื ืืืช ืฉืืืืื 3 ืกืืืื ืฉื ืืืฆืจืื:
from dataclasses import dataclass
class Cart:
def __init__(self):
self.products = []
@dataclass
class Table:
price: float
name: str
@dataclass
class Shoes:
price: float
color: str
c = Cart()
c.products.append(Table(price=120, name="Big Table"))
c.products.append(Table(price=80, name="Small Table"))
c.products.append(Shoes(price=180, color="orange"))
ืืืชืจ ืืื, ืื ื ืืืื ืืืืกืืฃ ืคืื ืงืฆืื ื Cart ืฉืชืืคืืก ืืช ืืืืืจ ืืืืื ืฉื ืืืืฆืจืื:
class Cart:
def __init__(self):
self.products = []
def price(self):
return sum(p.price for p in self.products)
ืืืคืฉืจ ืืืืืืจ ืคืจืืืืงืื ืืื ืืืืืง ืืืคืืกืื ืืืื ืืชืืืช ืืงืื:
class Product(Protocol):
price: float
class Cart:
def __init__(self) -> None:
self.products: list[Product] = []
def price(self):
return sum(p.price for p in self.products)
ืืื ืืคืฉืจ ืืงืื ืฉืืืืืช ืืฉืื ืกืื ืืืืกืืฃ ืืฉืื ืฉืืื ืื ืืืืจ ืืขืืืช ืืงื ืืืช, ืืืืืง ืืื ืฉืืื ืงืืจื ื Java.
ืชืจืืืฉ ืฉื ื ืฉืืืื ืืื ืืืจื ืืืืฉืื ืืืฉืื ืขื ืืฆืืจืช ืขืฆื ืืจืืฉื ืืื ืฉืืืืฉ ืืืืจ ืืงืื. ืืืงืจื ืฉืื ื ืืคืฉืจ ืืืืืื ืงืื ืฉืืืื ืืฉืืชืฃ ืืื ืืืืฆืจืื ืืืื ืืืื ืืืชืื ืืืชื ืจืง ืืืืืงืช ืืืกืืก "ืืืจืฉืช" ืืช ืืืืืืฉ ืืืืืงืืช ืฉื ืฉืืจ ืืืืฆืจืื. ืืฆืขืจื ืื ืืื ืื ืืืืื ืฉืื ื ืืฆืืื ืืืฉืื ืขืืื ืื ื ืืืื ืืฉืืชื ืืงืื ืืื ืืืชืจ ืชืื ืฉืืืืฉ ืืื ืื ืื ืื ืืืจืื ืืฉืืืืฉ ืืืืจ ืืงืื ืฉื ืืฉืคื, ืืืืฉ ืขื Descriptors ื Class Decorators. ืืืืกืจืื ืืืจืืฉื ืืื ืฉืืชื ืืงืื ืืืื ืืืจืื ืืืื ืืืช ืืืื ืืืงืฉ ืืืชื, ืืืื ืืคืฉืจืืช ืืฉืืื ืืืืื ืคืื ืงืฆืืื ืืืืืช ืืืืืง ืชืงืื.
ืืฉื ื 2023 ืืืืจ ืืืื ืืื ืกืืื ืืืฉืชืืฉ ืืืจืืฉื ื Python.1 421
# ืฉื ื ืกืืืื ืฉื Outsourcing
ืืฉ ืืช ื Outsourcing ืฉื ืืื ืฉืืืืขืื ืืจืืฆืื ืืืกืื ืืื: ืื ืืืื ืืฆืืืช ืฉืขืืื ืขื ืคืืชืื ืคืจืืืงื ืืจืืืงื ืืื ืืืขืฆื ืฉืืื ืืืืข ืจืง ืคืืืื. ืื ืืื ืฉืืืื ืืืืฆื ืืช ืืขืืฆืื ื figma ืืงืืืคืื ื ืืืช ืจืืืงื ืืืืชืืื ืืขืืื ืืื ืื ืืฆืื ืขืืืื ืืื ืืกืคืืง ืืื ืืืื ืืขืืืคื ืืฉืืื ืืช ื figma ืืงืืืฆื ืืืฆืื ืืช ืฉืชืืืจ ืืช ืืื ืืงืืืคืื ื ืืืช ืจืืืงื ืืื ืฉืื ืืืืื ืืืชืืงื ืืืืืืงื, ืืืืฆืืขืื ืืืคืื ืงืฆืืื ืืืืืช ืฉื ืืืืฉืื.
ืืืฉ ืืช ื Outsourcing ืฉื ืืื ืฉืืื ืืื ืืืฉื: ืื ืืืื ืืืชื ืฆืืืช ืืฉืืฆืืจืื ืืื ืืืฉ ืืช ืืืชืจ. ืื ืื ืืืื ืืื ืืขืฉืืช ืืช ืื ืืืื ืืื ืืืื ืฉืืื ืจืฆืื "ืืืืื" ืืื ืขื ืืืฉืจื. ืขืืืฃ ืืืืฆืื ืืืืฆื ืืช ืืขืืืื ืืงืืืฆื ืฉืืชืืื ืืื ืืฉื ืืืงืื ืงืื ืืชืืงื.
ืืื ืืืกื ืืื ืืืฉืคืจ ืืช ืงืฆื ืืขืืืื. ืืฉื ื ืืืขื ืชืืื ืืืืฉื ืืืื ืืืกืจ ืืื ื ืืืื ืืจืกืื ืื ืืชืืืืื ืฉื ืืฆืืืื.
1 421
# ืฉื ื ืกืืืื ืฉื Outsourcing
ืืฉ ืืช ื Outsourcing ืฉื ืืื ืฉืืืืขืื ืืจืืฆืื ืืืกืื ืืื: ืื ืืืื ืืฆืืืช ืฉืขืืื ืขื ืคืืชืื ืคืจืืืงื ืืจืืืงื ืืื ืืืขืฆื ืฉืืื ืืืืข ืจืง ืคืืืื. ืื ืืื ืฉืืืื ืืืืฆื ืืช ืืขืืฆืื ื figma ืืงืืืคืื ื ืืืช ืจืืืงื ืืืืชืืื ืืขืืื ืืื ืื ืืฆืื ืขืืืื ืืื ืืกืคืืง ืืื ืืืื ืืขืืืคื ืืฉืืื ืืช ื figma ืืงืืืฆื ืืืฆืื ืืช ืฉืชืืืจ ืืช ืืื ืืงืืืคืื ื ืืืช ืจืืืงื ืืื ืฉืื ืืืืื ืืืชืืงื ืืืืืืงื, ืืืืฆืืขืื ืืืคืื ืงืฆืืื ืืืืืช ืฉื ืืืืฉืื.
ืืืฉ ืืช ื Outsourcing ืฉื ืืื ืฉืืื ืืื ืืืฉื: ืื ืืืื ืืืชื ืฆืืืช ืืฉืืฆืืจืื ืืื ืืืฉ ืืช ืืืชืจ. ืื ืื ืืืื ืืื ืืขืฉืืช ืืช ืื ืืืื ืืื ืืืื ืฉืืื ืจืฆืื "ืืืืื" ืืื ืขื ืืืฉืจื. ืขืืืฃ ืืืืฆืื ืืืืฆื ืืช ืืขืืืื ืืงืืืฆื ืฉืืชืืื ืืื ืืฉื ืืืงืื ืงืื ืืชืืงื.
ืืื ืืืกื ืืื ืืืฉืคืจ ืืช ืงืฆื ืืขืืืื. ืืฉื ื ืืืขื ืชืืื ืืืืฉื ืืืื ืืืกืจ ืืื ื ืืืื ืืจืกืื ืื ืืชืืืืื ืฉื ืืฆืืืื.
1 421
# ื Regexp ืืื ื ืืื
ืืืืฆืข ืืฉืืง ืืืืื ืืชืจ ืฉื ืืืืืืื ืจืืืืืจืืื ืื ืฉืืื ืืื ืืชืคืืก ืืจื ืืืืื ืจืืืืืจื ืืงืกื ืฉืืืื ืจืืืืื ืืฉื ื ืืฆืืืื, ืืื ืืชืคืืก ืืช ืืจืืืืื ืฉืืืชืืื ืืืกืืฃ. ืืืฆืขื ืฉืืื ืืืชื:
^\s*(.*)\s*$
ืื ื ืืืื ืืจืืืช ืืื ืื ื ืจืื ืืื ืจืขืืื ืืื - ืืชื ืืืฉื ืฉืืชื ืชืืคืก ืืช ืืืงืกื ืฉืืืืฆืข, ืืืืชืจ ืืื ืื ื ื ืกื ืืช ืืืืืื ืื ืืคืืก ืืช ื Capture Group ืืจืืฉืื ืืชืืฆืื "ืชืืจืื" ื ืืื ื:
$ echo " hello world " | perl -nE '/^\s*(.*)\s*$/ && say $1'
hello world
ืขื ืฉืื ืื ื ืฉืืื ืื ืฉืืกืจ ืืฉืื ืืืืืื. ืชืืงืื ืชืืื ืืช ืืืืืงื ืืืจ ืืืฉืืฃ ืืช ืืืขืื:
$ echo " hello world " | perl -nE '/^\s*(.*)\s*$/ && say "[$1]"'
[hello world ]
ืืื ืืจืืจ - ืืืืง ืฉื ืื ืงืืื ืืืืืืช ืืืืฆืข ืชืคืก ืืช ืื ืืืืืื ืืืื ืืช ืื ืืจืืืืื ืฉืืกืืฃ. ืขื ืฉืืืฉืื ืืืืข ืืืคืฉ ืืช ืืืืง ืืืืจืื ืฉื ืืืืืื ืืืจ ืื ื ืฉืืจื ืจืืืืื ืืืงืกื. ืืืืจื ืฉืจืืืื ืืช ืื ืื ืืคืืชืจืื ืืจืืจ, ืคืฉืื ืืืกืืคืื ืกืืื ืฉืืื ืืืจื ืื ืงืืื ืืืืืืช ืฉืืืืฆืข ืืื ืืงืืช "ืืื ืืขื ืชืืืื ืฉืืคืฉืจ" ืืืืง ืืื. ืืชืืฆืื ืืื:
$ echo " hello world " | perl -nE '/^\s*(.*?)\s*$/ && say "[$1]"'
[hello world]
ืืื ืืืืืืื ืจืืืืืจืืื ืื ืืกืืจืื ืืื ืื ืฉืชืืืื ื ืืื, ืืื ืืืืค ืฉืื ื ืืืื ืืื ืืืชืจ ืืืื ืืืืืืืื ืจืืืืืจืืื - ืื ืืฉืื ืืืชืื ืงืื ื ืืื, ืืื ืืคืืื ืืืชืจ ืืฉืื ืืืชืื ืชืืื ืืืช ืืืืงื ืืืืืช. ืืฉืจืืืื ืืช ืืกืืืจืืื ืืืจืืืขืื ืืกืืื ืืคืื ืืื ืจืืืื ืืช ืืืขืืช ืืืคืฉืจ ืืชืงื ืืืชื.1 421
# ืฉืืฉื ืฉืืืื ืฉื ืฉืืืืฉ ืืกืคืจืื ืืืฆืื ืืช
ืืขืืืื ืขื ืกืคืจืื ืืืฆืื ืืช ืืืืจื ืืื ืื ืื ื ืืืคืกืื ืืกืืื ืื ืฉืืฉื ืฉืืืื-
1. ืืขืฉืืช ืื ืฉื Readme.
2. ืืืคืฉ ืขืื ืืืืืืืช ื API Doc.
3. ืืืืื ืก ืืงืื ืืกืคืจืื ืืื ืืืืื ืืื ืืืชืจ ืืื ืืืจืื ืขืืืืื.
4. ืืืคืฉ Github Issues ืจืืืื ืืื ืืื ืืคืชืืจ ืืขืืืช ื ืงืืืชืืืช.
5. ืืืชืื ืงืื ืฉืืชืืืฉืง ืขื ื Internals ืฉื ืืกืคืจืื (ืืฉืชืืฉ ืืคืื ืงืฆืืืช ืคืจืืืืช, ืืขืฉื Monkey Patch ืืืืงืื ืฉื).
6. ืืืืื, ืืืฆืืจ ืืืจืกื ืฉืื ื ืืืฉืืื Pull Request.
ืืจืืืฉืื ืฉืืชื ืืืืขืื ืืกืคืืง ืขื ืกืคืจืื ืืืฉืื? ืื ืืื ืืื ืืขืืืช ืฉืื ืืกืืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
