ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
Ma'lumot yo'q30 kunlar
Postlar arxiv
1 419
# ืืืื ื ืืฆื ืืกืคืจืื ืฉืืืื ืขื Elixir
ืืกืคืจ ืฉืื ืืื ืืกืคืจ ืฉืกืืื ืจืืืืขื ืืกืคืจืืช ืฉืื ืืกืืฃ ืืืฆื 1. ืืกืคืจ ืขืฆืื ืืื ืืกืคืจ ืฉืกืืื ืจืืืืขื ืืกืคืจืืช ืฉืื ืื ืืืฆื 1, ืื ืืฉื ื ืืื ืคืขืืื ืืขืืื ืืจืืืืข ืืืืืจืื. ืืื ืืืฆื ืฉ 7 ืืื ืืกืคืจ ืฉืื, ืื ืืฉืืขืืื ืืืชื ืืจืืืืข ืืงืืืื 49, ืืืฉืืขืืื ืืจืืืืข ืืช ืฉืชื ืืกืคืจืืช ืฉื 49 ืืงืืืื 16 ื 81 ืฉืกืืืื ืืืฆื 97, ืืืฉืืืื ืขืื ืกืืืื ืืืงืืืื ืืช 49 ื 81 ืฉืกืืืื ืืื 130, ืืขืืฉืื ืื ืื ื ืืชืงืจืืื ืืืฉืื ืื 3 ืืจืืืืข ืื 9 ื 1 ืืจืืืืข ื ืฉืืจ 1, ืืื ืื ื ืืชื ืื 10, ืฉืกืืื ืจืืืืขื ืืกืคืจืืช ืฉืื ืืื ืคืฉืื 1 ืืจืืืืข ืืขืื ืืคืก ืืจืืืืข ืืืืืจ ืืืกืคืจ 1.
ืืขืืืชื 4 ืืื ืืกืคืจ ืขืฆืื ืื ืืจืืืืข ืืื ื ืืชื 16, ืืืฉืืขืืื ืืจืืืืข ืืช 1 ื 6 ืืงืืืื 1 ื 36, ืฉืื ืืื 37, ืืกืืื ืืื ืืื 58, ืืืจื ืื 89, ืืื 145, 42, 20 ืืฉืื 4.
ืืืืงืืคืืื ืืฉ ืื ืืื ื ืกืืคืืจืื ืืขื ืืื ืื ืขื ืืกืคืจืื ืฉืืืื ืืื ืืืืืช ืงืื ืืคืืืชืื ืฉืืืฆืืช ืืืชื, ืืื ืื ื ืืฉืืชื ืฉืื ืืืืื ืืช ืืืื ืืืืจืื ืืืืื ืืืืืงืกืืจ ืืืืื ืืช ืืื ืืคืื ืืงืื ืฉื ืืจืงืืจืกืืืช ืืฉืคื ืคืื ืงืฆืืื ืืืืช.
## ืืื ืกืืืืื ืืช ืจืืืืขื ืืกืคืจืืช
ืืืจ ืืฆืขื ืืจืืฉืื ืืืชืืืืืืช ืขื ืชืจืืื ืืื ืืจืืจ ืฉื ืฆืืจื ืืงืืช ืืกืคืจ ืืืืฉื ืืช ืกืืื ืจืืืืขื ืืกืคืจืืช ืฉืื. ืืฉืคื ืคืื ืงืฆืืื ืืืืช ืื ืืืื ืฉืืืฉ ืคืขืืืืช:
1. ืคืืฆืื ืืกืคืจ ืืกืคืจืืช
2. ืืขืืื ืฉื ืื ืกืืคืจื ืืจืืืืข
3. ืืืฉืื ืืกืืื
ืืืืืงืกืืจ ืืฉืืฉ ืื ืขืจื ืืืื (ืืกืคืจ) ืืื ื ืจืืฆื ืืืคืื ืืืชื ืืจืฉืืื ืฉื ืกืคืจืืช ืื ื ืืืื ืืืฉืชืืฉ ืืคืื ืงืฆืื
Stream.unfold. ืื, ืื ื ืืืื ืืืฉืชืืฉ ืืขืื ืืจืื ืฉืืืืช ืืคืื ืงืฆืืืช, ืืื ืื ื ืืืื ืืช ืืืืืฉืืช ืฉื unfold. ืืืืื ืืื ืืืงืืช ืขืจื ืจืืฉืื ื ืืคืื ืงืฆืื, ืืื ืืคืขืืื ืืช ืืคืื ืงืฆืื ืขื ืืขืจื. ืืื ืืฆืคื ืืงืื ืฉืชื ืชืืฆืืืช, ืืจืืฉืื ื ืืื "ืืขืจื" ืืื ืืกืืืจื, ืืืฉื ืื ืืื ืืงืื ื unfold ืืื. ืืฉืฆืจืืืื ืืคืจืง ืืกืคืจ ืืกืคืจืืช ืืคืฉืจ ืืงืืช ืืช ืฉืืจืืช ืืืืืงื ืืขืฉืจ ืืชืืจ ืืขืจื ืืื ืืกืืืจื, ืืืช ืืืืงืช ืืฉืืืื ืืขืฉืจ ืืชืืจ ืืงืื ื unfold ืืื. ืืืืืื ืืืจืืช ืืืช ืืจื ืืืช ืืคืจืง ืืกืคืจ ืืกืคืจืืช ืฉืื ืืืืืงืกืืจ:
Stream.unfold(n, fn
0 -> nil
n -> { rem(n, 10), div(n, 10) }
end)
ืื ืื ื ืื ืขืืฆืจืื ืืืืืงื ืืกืคืจืืช ืืจืืฆืื ืื ืืืขืืืช ืืจืืืืข ืื ืกืืคืจื (map) ืืืืจื ืื ืืกืืื ืืช ืืชืืฆืืืช (sum). ืกื ืืื ืื ื ืืืื ืืืชืื ืคืื ืงืฆืื ืจืืฉืื ื ืืืืช:
def sum_squared_digits(n) do
Stream.unfold(n, fn
0 -> nil
n -> { rem(n, 10), div(n, 10) }
end)
|> Enum.map(&(&1 ** 2))
|> Enum.sum
end
## ืืื ืืืืงืื ืื ืืกืคืจ ืืื ืฉืื
ืขืืฉืื ืืฉ ืื ื ืืช ืืืืื ืืืชืงืื ืืฆืขื ืืฉื ื ืืืื ืืืืืงื ืื ืืกืคืจ ืืื ืืกืคืจ ืฉืื. ืืคืื ืงืฆืื ืืจืงืืจืกืืืืช ืืงืืืช ืืกืคืจ ืืืช ืจืฉืืืช ืื ืืืกืคืจืื ืฉืืืจ ืจืืื ื ืืฆืจืืื ืืืชื ืื ืืื:
1. ืืืกืคืจ 1 ืืื ืฉืื.
2. ืืกืคืจ ืฉืืื ื 1 ืืฉื ืืฆื ืืจืฉืืืช ืืืกืคืจืื ืฉืจืืื ื ืืื ืขืฆืื.
3. ืืกืคืจ ืฉืืื ื 1 ืืฉืืื ื ื ืืฆื ืืจืฉืืืช ืืืกืคืจืื ืฉืจืืื ื ืืืื ืืืื ืฉืื ืืืืื ืืืื ืขืฆืื. ืฆืจืื ืืืคืขืื ืืืืฉ ืืช ืืคืื ืงืฆืื ืขื ืกืืื ืจืืืืขื ืืกืคืจืืช ืฉืื, ืืืืืกืืฃ ืืืชื ืืจืฉืืืช ืืืกืคืจืื ืฉืจืืื ื.
ืืชืจืืื ืืืืืงืกืืจ ืื ื ืจืื ืื:
def is_happy(n, seen \\ %{}) do
cond do
n == 1 ->
true
Map.has_key?(seen, n) ->
false
true ->
is_happy(
sum_squared_digits(n),
Map.put(seen, n, true)
)
end
end
## ืืื ืืืฆืืื ืืช ืื ืืืกืคืจืื ืืฉืืืื ืขื 100
ืืฉืืื ืืืชืืื ืืืฆืื ืืกืคืจืื ืฉืืืื ืื ื ืืืื ืืจืืฅ ืืืืืื ืขื ืจืฉืืื ืฉื ืืกืคืจืื ืืืืคืขืื ืืช ืืคืื ืงืฆืื filter, ืฉืืกื ื ืช ืืืจืฉืืื ืจืง ืืช ืืืกืคืจืื ืฉืืชืืืืื ืืชื ืื. ืืืคืกืช ืืืกืคืจืื ืืฉืืืื ืขื 100 ืืื:
def main() do
1..100
|> Enum.filter(&is_happy/1)
|> IO.inspect
end
ืืืงืื ืืืื ืืืืืงืกืืจ ืืื:
defmodule HappyNumbers do
def main() do
1..100
|> Enum.filter(&is_happy/1)
|> IO.inspect
end
def is_happy(n, seen \\ %{}) do
cond do
n == 1 ->
true
Map.has_key?(seen, n) ->
false
true ->
is_happy(
sum_squared_digits(n),
Map.put(seen, n, true)
)
end
end
def sum_squared_digits(n) do
Stream.unfold(n, fn
0 -> nil
n -> { rem(n, 10), div(n, 10) }
end)
|> Enum.map(&(&1 ** 2))
|> Enum.sum
end
end
HappyNumbers.main()
ืืืืืจืกื ืืื ืืจืงืืืืืช ืื ืืชื ืงืืจืืื ืืช ืืคืืกื ืืืคืืคื:
<iframe frameborder="0" width="100%" height="500px" src="https://replit.com/@ynonp/ShrillClientsideUsernames?lite=true"></iframe>1 419
# ืืฉืืงืื ืฉืืชืืช ืืืฆื ืืกืืื ืืืชืจ ืืื ืฉืจืฆืืช
ืืคืขืืื ืืชื ืืกืชืื ืขื ืืขืื ืืืืฉื "ืืืงืื ืื ื ืืืื ืืคืชืืจ ืืช ืื, ืื ืื ื ืจืื ืืกืืื", ืืื ืืฉืืชืืื ืืืชืื ืืช ืืงืื ืคืชืืื ืืชื ืืืื ืขืื ืืขืื ืืงืจืื ืฉืฆืจืื ืืืคื ืืื ืืืืืจ ืืื ืฉืืื ื ืจืื ืคืฉืื ืืืจ ืืืคื ืืกืืื.
ืื ืื ืืืืจ ืฉืืงืื ืืจืืข.
ืื ืื ืืืืจ ืฉืืืขืื ืงืฉื ืืื ืืฆืจืื ืืืืช ืืคืชืืจ ืืขืืืช ืืืจืืช.
ืื ืื ืืืืจ ืฉืืชื ืื ืืชืื ืช ืืื.
ืื ืื ืืืืจ ืฉืฆืจืื ืืืฆืื ืกืคืจืื ืืืฆืื ืืช ืฉืชืขืฉื ืืช ืืืืจ ืืื.
ืื ืืกื ืืื ืืืืจ ืฉืชืื ื ืช ืืืืช ืืืกืืื ืืกืืื ืืืืืื ืืื ืชืืื ืืืช ืืืจืืช. ืืคืขื ืืืื ืืคืฉืจ ืืืืจ ืืืืืขืจื ืืื ืืืชืจ (ืื ืฉืื). ืืื ืืจืืข, ืืืื, ืขื ืืืขืื ืืืืช ืืืืืืื ืืืื ืืืืจ ืืื ืืื ืืขืฉืืช ืืื ืื ืฉืชืืื ืขืฉืื ื - ืืืชืื ืงืื, ืืืชืื ืืืืงืืช, ืืชืงื ืืืืืกืืฃ ืืืคืื ืืขืื ืืงืจื ืงืฆื. ืื ืืฉืืฉ ืืจืื ืืื.
1 419
# ืฉืื ืืช
ืื ื ืืืชื ืืจืื ืจืืืงื ืืชืงืืคื ืืืืจืื ื, ืืืื ืืคืืื ืืืชืจ ืืื. ืื ืืฆื ืฉืืฉืืฉืืชื ืืืชืื HTML ืจืืื ืืงืืืชื ืืื ืืฉืื ืื:
<div />
<div />
<div />
<div />
ืคืชืืชื ืืืชื ืืืคืืคื, ื CSS ืืืืื ื ืฉืืจ ืืืืจื ืืื ื ืืกืชืื ืืื ืจืืื ืืช ืืืขืื. ืืืืื ืฉืื ืืช.
ืืจืื ืืคืฉืจ ืืืืื ืืช ืืืจืืืช ืื ืืงื ืืช ืืืืืืืื ืืื ืืืืืื ืืฉืืืื ืืืชืื. ืืงืื, ืืื ืฉืคืช ืชืื ืืช ืืกืืืื ืืฉ ืืช ืืืจืืื ืฉืื ืืขื ืืืื ืื ืื ื ืืืืืื ืืฉืื ืื ืืืื ืืช ืขืื ืืจืืื ืืื ืืจืืืช ืืื ืืืชืจ. ื HTML ืฉืืื ืืืฉืชืืฉ ื HTML Hint, ืฉืืืื ื ืื ืืืื ืืช ืืืขืื ืืคืขื ืืื ืขืืืจ ืืืืืช ืืื ืกืืฃ ืืขืืืช ืืืจืืช. ืืจื ืฉื ืื ืืื ืืืชืจืื ืืคืชืื ืืช ืืงืืืฅ ืืืคืืคื ืขื Inspect Element ืืื ืืจืืืช ืืื ืืืคืืคื ืจืืื ืืช ืืขืืื. ืืคืชืืจ ืื ืืื ืืื ืืจืื ืืช ืืืขืื ืื ืืืืื ื Inspect ืื ื ืจืืื ืื ืืืืช ืงืืจื ืฉื:
<div>
<div>
<div>
<div></div>
</div>
</div>
</div>1 419
# ืืืค ืืืืคืกืงืจืืคื: ืคืืฆืื ืืืฉืงืื
ืืืชืืืช TypeScript ืืจืื ืคืขืืื ืื ื ืืชืืื ืืืืืจืช ืกืืื ืืืฉืชื ืื ืืืืฃ ืืคืื ืงืฆืื ืืชืืจ ืืืืืงื. ืืจืืืงื ืื ืืืื ืืฉืื ืืื:
function Counter(props: { initialValue: number, step: number }) {
}
ืขื ืืืืืื ืฉื ืืงืืืคืื ื ืื ืืืขื ืืืืกืืฃ ืขืื ืืฉืชื ืื ื props. ืืคืขืืื ื ืื ืื ื ืื ืืืืฆืื ืืช ืื ืืืืืจื ืืงืืืฅ ืืืจ ืืื ืฉืืคืฉืจ ืืืื ืืืฉืชืืฉ ืืืืชื ืจืฉืืืช props ืืขืื ืืงืืืืช. ืืื ืืืจื ืืื ืฉืืืขืืช ืื ืืืืฉืื ืฉื ืขืืืื ืขื ืืงืื ืืฉืืจื ืืืืื ืืืคืื ื:
interface ICounterProps {
initialValue: number;
step: number;
buttonText?: string;
}
function Counter(props: ICounterProps) {
}
ืืื ืืื ืฉืืงืืืคืื ื ืื ืืืฉืืื ืืืืื ืื ืื ื ืขืฉืืืื ืืจืฆืืช ืืืืกืืฃ ืืืคืืื ืื ืฉืืฉ ืืื ืืื ืงืฉืจ. ืืืืืื ืืืื ื ืจืฆื ืืืืกืืฃ ืืคืชืืจ turbo ืฉืืืืื ืืช ื Counter ืืืกืคืจ ืืืื ืืืชืจ ืื step ืืจืืื. ืืืฆื ืืื ืื ื ืืืื ืืืืืข ื:
interface ICounterProps {
initialValue: number;
step: number;
buttonText?: string;
turboButtonText?: string;
turboStep?: number;
}
function Counter(props: ICounterProps) {
}
ืืื ื ืืื ืื ืจืฆืื ืืืืื ืฉืืื ืื ื ืืชื ืืงืื ืฉืืฉืชืืฉ ืืงืืืคืื ื ืื ืืจื ืืืขืช ืฉืืฉ ืงืฉืจ ืืื turboStep ื turboButtonText ืืฉืื ืืฆืืื ืื ืืื ืฆืจืื ืื ืืฆืืื ืืช ืืฉื ื. ืืืงืื ืื ืขืืืฃ ืืคืฆื ืืช ื Interface ืืฉื ื ืืืฉืงืื ืฉืื ืื:
interface ICounterProps {
initialValue: number;
step: number;
buttonText?: string;
}
interface ICounterWithTurboProps extends ICounterProps {
turboButtonText: string;
turboStep: number;
}
ืืงืื ืืงืืืคืื ื ืื ื ืืคืฉืจ ืืงืื ืคืจืืืจืื ืืฉื ื ืืืืฉืงืื ืืืืฆืขืืช ืืืืื ืืืคืืกืื, ืื ืฉืชืืฉ ื Casting ืืื ืืืคืื ืืช ื props ืืืืฉืง ืืืืื ืืืืชืจ:
function Counter(props: ICounterProps|ICounterWithTurboProps) {
const {
initialValue,
step,
buttonText = 'Increase',
turboButtonText,
turboStep,
} = props as ICounterWithTurboProps;
}
ืืชืื ืืืฃ ืืงืืืคืื ื ืื ืื turboButtonText ืงืืื ืขืจื ืื ืื ื ืืืืขืื ืฉืื turboStep ืงืืื ืขืจื. ืืงืื ืืืฆืื ื ืื ืื ื ื ืืชื ืื ืืืืืคืกืงืจืืคื ืืืืื ืืื ืืช ืืืืคืืกืื ืืืืืคืกืงืจืืคื ืืกืคืืง ืืื ืืื ืืืืื ืฉืืขืืจื ื ืขืจืืื ืืฉื ื ืืืืคืืื ืื ืฉื ืืืืจืื ืื ืืืฃ ืืื ืืื.
ื .ื. ืืกืืคืืจ ืืื ืขืืื ืืฉืืฉ ืื ืฉื ื ืืืฉืงืื ืื ืื ืฉืืืฉื. ืืื ืฉื ืืกืืฃ ืืืชืจ ืืฉืชื ืื ืืชืืืืืช ืื ืืืจ ืืกืชืื. ืืขืืงืจืื ืืืืคืกืงืจืืคื ืืืคืฉืจืช ืืืจืืื ืืื interface-ืื ืืื ื ืฉืืข ืฉืื ืืืขืชื ืืฉื ืขืืืฃ ืืคืฆื ืืช ืืงืืืคืื ื ืื.1 419
# ืืื ืืืืื
ืืชื ืขืืฆืจืื? ืืชื ืืืืชื "ืืกืคืืง ืืืืื"? ืืืื...
- ืืกืืื ืืฉืืขืืจ (ืืฉืืฉืขืื ืืจืื 12, ืืขืื 20 ืืงืืช)
- ืืกืืฃ ืืคืจืง
- ืืืจื ืฉืืกืืื ืืช ืื ืืชืจืืืืื
- ืืืจื ืฉืืคืชืืจ ืืช ืืืื, ืื ืืฉืืงืื ืืขืืื
- ืขื ืฉืืืืื ืืืืข
- ืขื ืฉืชืืื ืก ืฉืืืช ืืืคืื ืืขื ืืื ืช
- ืขื ืฉืชืืืข ืืืืขื ืืฉืืื ืืืืืกืืค
- ืขื ืฉืืืจืื
ืืจืื ืคืขืืื ืื ืื ื ืืกืชืืืื ืขื ืชืืืื ืืืืืื ืืชืืจ ืืฉืื ืืื ืืจื - ืื ื ืืืื ืคืืืชืื ืขืืฉืื ืืืฉ ืื ืืช ืืชืจืืื ืืื ืืขืฉืืช, ืื ืื ืื ืฉืื ื ืฆืจืื ืืื ืืืชืงืื ืืคืืืชืื. ืืื ืืืืืง ืืืื ืืคื ืื ืฉืืฉ ืื ืขืืฉืื ืืื "ืขื ืฉืืืืื ืืืืข" ืื ืื ื ืื ืืืื ืืคืชืืจ ืืช ืืชืจืืื ืืื ืืคืืืชืื ืื ืืื ืืืงื ืืืชืจ ืืื, ืืืื ืื ื ืื ืืืื ืืืชืงืื ืืงืืจืก ืคืืืชืื, ืืืืงืื ืื ื ืืขืืืจ ืจืืข ืฉืขื ื ynet ืื ืืืืืืจ.
ืืืื ืขืืืจ ืืฉืืชื ืืืฉืืื ืืืืื ื ืืฉื ืืกืืจ ืืืืชืื ืืื ืืฉืืืืช ืืืืืืืืช ืืคื ืงืืืขื ืืืื (ื"ืืชื ืืกืืืืื") ืืืคืฉืจืืื. ืืืืืจ ืืืื ืืฉืืืืช ืฉืืืจืฉืืช ืฉืขืชืืื ืขืืืื, ืืฉืืืืช ืฉืืืจืฉืืช ืืื ืฉืื ืืืฉืืืืช ืฉืืคืฉืจ ืืขืฉืืช ืื ืืขืฉืจ ืื 15 ืืงืืช. ืืฉืืฉ ืืื ืจืฉืืื ืืืืช, ืื ืืฉื ื ืื ืืฉืืฆืช ืืืื ืืคื ืื ืฉืงืืืืชื ืชืืื ืืคืฉืจ ืื ืฆื ืืืชื ืืื ืืืชืงืื ืขืื ืฆืขื. ืื ืฆืขืืื ืงืื ืื ืขืืืจืื ืืืจืืฉื, ืขืืืจืื ืืืืื ืืื ืืืคืขืืื ืืืืืืื ืืชืงืืืืช ืืืืื.
1 419
# ืืื ืืืืื
ืืชื ืขืืฆืจืื? ืืชื ืืืืชื "ืืกืคืืง ืืืืื"? ืืืื...
- ืืกืืื ืืฉืืขืืจ (ืืฉืืฉืขืื ืืจืื 12, ืืขืื 20 ืืงืืช)
- ืืกืืฃ ืืคืจืง
- ืืืจื ืฉืืกืืื ืืช ืื ืืชืจืืืืื
- ืืืจื ืฉืืคืชืืจ ืืช ืืืื, ืื ืืฉืืงืื ืืขืืื
- ืขื ืฉืืืืื ืืืืข
- ืขื ืฉืชืืื ืก ืฉืืืช ืืืคืื ืืขื ืืื ืช
- ืขื ืฉืชืืืข ืืืืขื ืืฉืืื ืืืืืกืืค
- ืขื ืฉืืืจืื
ืืจืื ืคืขืืื ืื ืื ื ืืกืชืืืื ืขื ืชืืืื ืืืืืื ืืชืืจ ืืฉืื ืืื ืืจื - ืื ื ืืืื ืคืืืชืื ืขืืฉืื ืืืฉ ืื ืืช ืืชืจืืื ืืื ืืขืฉืืช, ืื ืื ืื ืฉืื ื ืฆืจืื ืืื ืืืชืงืื ืืคืืืชืื. ืืื ืืืืืง ืืืื ืืคื ืื ืฉืืฉ ืื ืขืืฉืื ืืื "ืขื ืฉืืืืื ืืืืข" ืื ืื ื ืื ืืืื ืืคืชืืจ ืืช ืืชืจืืื ืืื ืืคืืืชืื ืื ืืื ืืืงื ืืืชืจ ืืื, ืืืื ืื ื ืื ืืืื ืืืชืงืื ืืงืืจืก ืคืืืชืื, ืืืืงืื ืื ื ืืขืืืจ ืจืืข ืฉืขื ื ynet ืื ืืืืืืจ.
ืืืื ืขืืืจ ืืฉืืชื ืืืฉืืื ืืืืื ื ืืฉื ืืกืืจ ืืืืชืื ืืื ืืฉืืืืช ืืืืืืืืช ืืคื ืงืืืขื ืืืื (ื"ืืชื ืืกืืืืื") ืืืคืฉืจืืื. ืืืืืจ ืืืื ืืฉืืืืช ืฉืืืจืฉืืช ืฉืขืชืืื ืขืืืื, ืืฉืืืืช ืฉืืืจืฉืืช ืืื ืฉืื ืืืฉืืืืช ืฉืืคืฉืจ ืืขืฉืืช ืื ืืขืฉืจ ืื 15 ืืงืืช. ืืฉืืฉ ืืื ืจืฉืืื ืืืืช, ืื ืืฉื ื ืื ืืฉืืฆืช ืืืื ืืคื ืื ืฉืงืืืืชื ืชืืื ืืคืฉืจ ืื ืฆื ืืืชื ืืื ืืืชืงืื ืขืื ืฆืขื. ืื ืฆืขืืื ืงืื ืื ืขืืืจืื ืืืจืืฉื, ืขืืืจืื ืืืืื ืืื ืืืคืขืืื ืืืืืืื ืืชืงืืืืช ืืืืื.
1 419
# ืืืื ื ืืืืืื ืจ: ืชืงืฉืืจืช ืืื ืกืจืืืกืื ืขื RabbitMQ
ืืืื ืืจืืฉืื ืืื ืืืช ืืจืืืืงืืืจืช Micro Services ืืื ืฉืืกืจืืืกืื ืฆืจืืืื ืืืืืช ืขืฆืืืืื. ืืืื ืืฉื ื ืืื ืืืช ืืจืืืืงืืืจืช Micro Services ืืื ืฉืื ืฆืจืืืื ืืขืืื ืืื.
ืืืฉืืื ืฉืฉื ื ืืืงืื ืขืฆืืืืื ืืืขืจืืช ืืขืืื ืืื ืื ืฆืจืืืื ืืชืงืฉืจ.
ืืขืืื ืืืฉื ืฉื ืืืื ืืืื ืืฉืฉื ื ืืืงืื ืืืขืจืืช ืฆืจืืืื ืืืืจ ืืกืคืืง ืืงืจืื ืืคืื ืงืฆืื, ืืื ืืขืืื ื Micro Services, ืื ืืืง ืืืขืจืืช ืจืฅ ืืชืืจ ืชืืืื ื ืคืจื. ืื ืฉืืืชืจ ืืจืืข, ืืื ืฉืืคืฉืจ ืืฉืืจื ืืืง ืืื ืืืขืจืืช ืืื ืืืขืช ืืืืง ืืฉื ื (Deployment ืืืชื ืชืืื). ืืคืื ืงืฆืื ืฉืจืฆืืช ืืงืจืื ืื ืืขืืื ืฉื ืืืื ืืืื ืืืื ืืืจ ืื ืชืืื ืงืืืืช ืืืืจืกื ืืืื ืฉื ืืกืจืืืก.
ืืืืืืง ืืืื ืื ืืื ืืืืงืื ืืื ืืฉืืืื ืืืจืืืืงืืืจืช Micro Services ืืื ืืชืงืฉืืจืช ืืื ืืกืจืืืกืื. ืชืงืฉืืจืช ืืื ืกืจืืืกืื ืืืืืงืช ืืฉื ื ืกืืืื: ืืฉ ืชืงืฉืืจืช ืกืื ืืจืื ืืช, ืฉืื ืืืืจ ืฉืกืจืืืก ืืื ืฉืืื ืืืืขื ืืกืจืืืก ืืืจ ืืืืื ืืชืฉืืื ืืื ืืืืฉืื; ืืชืงืฉืืจืช ืืกืื ืืจืื ืืช ืฉืื ืืืืจ ืฉืกืจืืืก ืืื ืฉืืื ืืืืขื ืืืงืืื ืืืื.
ืืืื ืืฉืชืืื ืชืงืฉืืจืช ืืกืื ืืจืื ืืช ืชืืื ืืืืขืืคืช ืขืืื ื, ืืืืื ืฉืืื ืืืฆืจืช ืชืืืช ืืืชืจ ืงืื ื ืืื ืืกืจืืืกืื. ืืชืงืฉืืจืช ืืกืื ืืจืื ืืช ืื ื ืฉืืื ืืืืขื ืืืืื ืืกืจืืืก ืืฉื ื ืฉื ืขืืฉืื ืืืืื ืืืคื ืื, ืืื ืื ืืืื ืืื ืขืืืก ืื ืฉืืืืืง ืืขืืื ืืืจืกื ืืืฉื ืฉืื, ืืืื ืืืื ืืืคื ืื ืจืง ืขืื ืืื ืืงืืช.
ืืชืืจ ืืืืขืืช ืืื ืืืคืชื ืืื ืืืช ืืขืจืืช ืชืงืฉืืจืช ืืกืื ืืจืื ืืช ืืื ืกืจืืืกืื ืฉืื ืื ืืืจืืืืงืืืจืช Micro Services. ืืชืืืืจ ืืืื ืืืื, ืืคืฉืจ ืืืืื ืฉืชืืจ ืืืืขืืช ืืื ืจืืื ืืืขืจืืช ืฉืืชืคืงื ืืื ืืขืจืืช ืืืืจ ืืื ืกืจืืืกืื. ืกืจืืืก ืืืืข ืืฉืืื ืืืืขื ืืชืืจ ืืืชืืจ ืืืจืื ืื ืชื ืืช ืืืืืขื ืืื ืฉืฆืจืื ืืงืื ืืืชื ืืืืื ืฉืืชืืื ืืืงืื. ืฉื ื ืชืืจื ืืืืืขืืช ืืคืืคืืืจืืื ืืืื ืื RabbitMQ ื Kafka, ืืืฉืจ ืืื ืืื ืืืืืื ืืืืืืช ืืืืืืืืช ืืฉืื ืื ืืกืฃ ืืื ืื ืื ืืืกืืกื ืฉื ืืขืืจืช ืืืืขืืช.
ืืืื ืืืืฉื ืืงืจืื ืื ื ืืงื ืฉืขื ืืื ืืืืจ ืขื ืืื ืืื ืฉืืจืฆื ืืืฆืืจืฃ ืขื ืืขืจืืืช ืืืืืจืืช, ืืจืืืืงืืืจืช Micro Services ืืืืืืื ืขื ืจืืื ืืชืงืฉืืจืช RabbitMQ. ืืืืืจื ื RabbitMQ ืืงืจืืช ืืืืจื ืืืื ืืื ืืื ื ืขืฉื ืืช ืืืชื ืืืืื ืจ ืขื Kafka.
ืืชืืืืช ืืืืืื ืจ ืืจืื ืืื ืืืงืื ืฉืจืช RabbitMQ ืืชืื ืืืงืจ, ืืื ืืงื ืคื ืืืชื ืืืื ืืืฉืช ืืืื ืืงืื Node.JS ืฉืจืฅ ืืกืจืืืกืื ืืืจืื. ืืืืจ ืืื ืืฆืื ืืกืคืจ ืชืืื ืืืช ืืืืื ืฉืืืืืฉื ืื ืื ืฉื ืฉืืืฉ ืชืื ืืืช ืืืืืจืืช ืืคืืชืื:
1. ืืขืจืืช ืฉื ืฉืจืช ืืจืืื ืฉืืืฆืื ืืฉืืืืช ื Workers ืืืงืื ืืื ืกืืืืกืื ืขื ืืืฉืืืืช. ืืืืืื ืืขืจืืช ืืื ืฉืืืคืฉืจืช ืืืงืืืืช ืืืขืืืช ืชืืื ืืช ืืืฉืชืืฉืช ืืกืจืืืก ืืืฆืื ื ืืื ืืืจืืฅ ืคืืืืจืื ืขื ืืืชื ืชืืื ืืช.
2. ืืขืจืืช ืฉื ืืืคืื ืืงืืืื ืืืืจืืข. ืืืืืื ืืขืจืืช ืืื ืื ืืงืื ืงืื ื ืืืฆืจ ืืืฉ ืืกืคืจ ืชืืืืืื ืฉืฆืจืืืื ืืืืื ืืงื ืื - ืฆืจืื ืืืืกืืฃ ืืช ืืืงืื ืืจืฉืืืช ืืืืืจ, ืืืืฆืื ืืฉืืื ืืช, ืืฉืืื ืืช ืืืืฆืจ ืืื ืืืื.
3. ืืขืจืืช ืฉื ืืืคืื ืกืืจืชื ืืืืจืืข, ืฉืงืืจืืช ืืฉืืฉ ืชืืืช ืืื ืืกืจืืืกืื. ืืืืืื ืฉื ืงื ืืืช ืืืืฆืจ ืืืื ืืืืืช ืกืจืืืก ืฉืืืจืื ืขื ืืืืื ืืจืง ืื ืืื ืืฆืืื ืื ืกืจืืืก ืืืจ ืฉืืื ืืช ืืืืฆืจ ืืืงืื.
ืืื ืื ืืชื ืืขืกืงื ื Micro Services ืืจืืฆืื ืืฉืืืข ืืืชืจ ืขื ืืชืคืงืื ืฉื ืชืืจ ืืืืืขืืช ืืืงืื ืืืคืื ืืขืืืื ื ืืื ื ืืืชื, ืื ืื ืืชื ืจืืฆืื ืืืืื ืก ืืขืกืงื ื Micro Services ืืจืืฆืื ืืจืืืช ืืื ืืชืืืืื ืื ื ืืงืืื ืฉืืฉืขื ืืืืช ืชืืื ืจืืืื ืืืช ืขืืืจืื.
ืืคืจืืื ื ืืกืคืื ืืืจืฉืื ืฉืืื ืืืงืจ ืืืฃ ืืืืืื ืจ ืืงืืฉืืจ:
https://www.tocode.co.il/workshops/115
1 419
ืืื ืกื ืืืชืจ ืืืจืืืช ืชืืื ืืืืืช ืืกืคืจืื: ืฉื ืื ื ืฆืจืื ืืืฉืชืืฉ ืืชืช-ืฉืืืืชื ืืื ืืืขืช ืื ื
id ืฉื ืืกืืคืจ ืฉืืชื ืืช ืืกืคืจ. ืื ื ืื ืืืืข ืืช ื id ืื ืืกืืก ืื ืชืื ืื ืืฆืจ ืืืชื ืืืืืืืืช ืืขืช ืืืื ืกื ืืืื ืฆืจืื ืืชืฉืื.
ืื ื ืืืฆืจ ืืืืืงื ืฉืืืืชื, ืฉืื ืืื ืคืงืืื, ืขื ืืคืงืืื:
author_subquery = (
select(authors_table.c.id).
where(authors_table.c.name == bindparam('author_name')).
scalar_subquery())
ืืืฉืื ืืืชื ืืคืงืืืช ืืืื ืกื ืืืืคื ืืื:
conn.execute(insert(books_table).values(author_id=author_subquery), [
{ "ISBN": "9781982134488", "name": "Think Like a Monk", "author_name": "Jay Shetty" },
{ "ISBN": "9780316066525", "name": "Infinite Jest", "author_name": "David Foster Wallace" },
{ "ISBN": "9781515208563", "name": "Meditations", "author_name": "Marcus Aurelius" },
])
## ืฉืืืคืช ืืืืข ื Join
ืืื ืืืจ ืจืืื ื ืืช select ืืืื ื ืจืืื ืขืืื ืื ืืชืื ืฉืืืืชื ืฉืืืฉืืช ืืช ืื ืืกืคืจืื ืืืืืืจืื ืฉืืื. ืืคืงืืื select ืืงืืืช ืจืฉืืื ืฉื ืขืืืืืช ืืืืืืจื "ืคืงืืืช" ืฉืืืคื. ืืคืขืืช ืคืงืืืืช ืืื where ืขื ืคืงืืืช ืืฉืืืคื ืืืกืืคื ืืืืข ืืฉืืืคื ืขื ืฉืืฉ ืื ื ืคืงืืื ืฉืืื ืืืืชื ืืขืืืจืื ื execute.
ืืื ืืงืื ืืช ืื ืืกืคืจืื ืฉื ืื ืืืืืจืื ืื ื ืจืืฆื ืืืคืขืื ืคืงืืืช ืฉืืืคื ืขื join ืืืงืื ื ืจืื ืื:
with engine.begin() as conn:
## Part 3 - Join Select
books = conn.execute(select(books_table.c.name, books_table.c.ISBN, authors_table.c.name).join_from(books_table, authors_table))
for book in books:
book_name, isbn, author = book
print(f"Book: {book_name}; ISBN: {isbn}; author: {author}")
ืืคืงืืื select ืืืงืืช ืจืฉืืื ืฉื ืขืืืืืช, ืขืืื ืื ื ืืคืขืื ืืช ืืคืงืืื join_from ืืื ืืืืื ืื ืื ืกืืจ ื Join-ืื ืืืื ืืืจ ืืืฉืืช ืืช ืคืงืืืช ื SQL ืืืืืืืืช.
## ืืงืื ืืืื ืืืื ืืืฉืืืื
ืกื ืืื ืืงืื ืฉืจืืื ื ืืื ืืคืืกื ืืื:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, insert, select, bindparam
## Part 1 - Create the tables
engine = create_engine("sqlite+pysqlite:///db.sql", echo=True, future=True)
metadata_obj = MetaData()
authors_table = Table(
"authors",
metadata_obj,
Column('id', Integer, primary_key=True),
Column('name', String()))
books_table = Table(
"books",
metadata_obj,
Column('ISBN', String(13), primary_key=True),
Column('name', String()),
Column('author_id', ForeignKey('authors.id'), nullable=False))
metadata_obj.create_all(engine)
## Part 2 - Insert some data
with engine.begin() as conn:
conn.execute(insert(authors_table), [
{ "name": "Jay Shetty" },
{ "name": "David Foster Wallace" },
{ "name": "Marcus Aurelius" },
])
author_subquery = (
select(authors_table.c.id).
where(authors_table.c.name == bindparam('author_name')).
scalar_subquery())
conn.execute(insert(books_table).values(author_id=author_subquery), [
{ "ISBN": "9781982134488", "name": "Think Like a Monk", "author_name": "Jay Shetty" },
{ "ISBN": "9780316066525", "name": "Infinite Jest", "author_name": "David Foster Wallace" },
{ "ISBN": "9781515208563", "name": "Meditations", "author_name": "Marcus Aurelius" },
])
with engine.begin() as conn:
## Part 3 - Join Select
books = conn.execute(select(books_table.c.name, books_table.c.ISBN, authors_table.c.name).join_from(books_table, authors_table))
for book in books:
book_name, isbn, author = book
print(f"Book: {book_name}; ISBN: {isbn}; author: {author}")
ืื ื ืืงืืื ืฉืืื ืขืืจ ืืื ืืงืื ืชืืื ื ืืืืื ืขื SQL Alchemy. ืื ืืืืชื ืืช ืืืืฉืง ืืชืจืฆื ืืืืื ืขืื ืขื ืืกืคืจืื ืื ื ืืืืืฅ ืขื ืืชืืขืื ืฉืืื ืืืืืืื ืขื ื Tutorial, ืฉืืจืื ืืืืืืืืืช ืืคืืกื ืืืืกืกืืช ืขืืื. ืื ืืงืืฉืืจ:
https://docs.sqlalchemy.org/en/14/tutorial/engine.html1 419
# ืฆืขืืื ืจืืฉืื ืื ืขื SQL Alchemy
ืกืคืจืืืช SQL Alchemy ืืื ืืืช ืืกืคืจืืืช ืืคืืคืืืจืืืช ืืคืืืชืื ืืขืืืื ืขื ืืกืืกื ื ืชืื ืื. ืืื ืืืื ื ืืืขืืช ืชืืขืื ืืขืืื ืืืคืืื ืชืืืืช ืืขืืืื ืขื asyncio. ืืคืืกื ืื ื ืืงื ืฉืืืฉื ืฆืขืืื ืจืืฉืื ืื ืืื ืฉืืืื ืืื ืงื ืืืชืืื ืืขืืื ืขื ืืกืคืจืื ืืืฉืชืื ืืืกืืช ืืื ืฉืืืชืจ ืืืฉืืื ืืกืืกืืื ืฉืื.
## ืืชืงื ื ืืืืืืจ ืืืกืืก ืื ืชืื ืื
ืฆืขื ืจืืฉืื ืืขืืืื ืขื SQL Alchemy ืืื ืืืชืงืื ืืช ืืกืคืจืื. ืืคืืืชืื ืื ืคืฉืื ืืืืจ ืืืคืขืื:
$ pip install sqlalchemy
ืฉืืื ืืฆืืื ืฉืื ืื ืื ืืฆืืื ืืืคืขื ืืจืืฉืื ื ืืืื ืฉืืืจืืื ืืืจืกืืืช. ืื ืืชื ืืงืืืื ืืืืขืืช ืฉืืืื ืืืืจืืช ืฉืืื ืืืคืขืื ืฉืืืจืื ืืืืจืกื ืืืืฉื ืืืืชืจ ืฉื pip ืืฉื setuptools ืขื:
pip install -U pip setuptools
ืืืืจื ืื ืืื ืืชืืื ืืขืืื. ืืื ืืืืื ืฉืืชื ืืืชืงื ืื ืืคืฉืจ ืืืืื ืก ืืืกืืฃ ืคืืืชืื ืืฉื ืืืชืื:
Python 3.10.0 (default, Nov 3 2021, 23:29:09) [Clang 13.0.0 (clang-1300.0.29.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sqlalchemy
>>> print(sqlalchemy.__version__)
1.4.36
>>>
ืื ืืขืืืื ืืื ืืกืืก ืื ืชืื ืื ื SQL Alchemy ืืืืฆืขืช ืืจื ืืืืืงื ืฉื ืงืจื Engine. ืืืืจ ืืืจืืื ืฉื ืขืฉื ืืืชื ืื ืืืฆืืจ ืืืืืจ, ืืืื ืืฉืืืฆืจืื ืืช ื Engine ืฆืจืื ืืืืื ืื ืืืืื ืืกืืก ื ืชืื ืื ืื ืื ื ืจืืฆืื ืืืชืืืจ. ืื ื ืืคืขืื ืืช ืืืืืื ืขื SQLite ืฉื ืฉืืจ ืืงืืืฅ ืืืื ืืคืขืื:
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, ForeignKey, insert, select, bindparam
engine = create_engine("sqlite+pysqlite:///db.sql", echo=True, future=True)
ืฉื ืืงืืืฅ ืืืื db.sql ืืื ื ืื ืืฉืืืจ ืืกืืก ื ืชืื ืื ืฉืื ืืงืืืฅ ืืฉืืฉืืงืื ืขื ืกืคืจืื ืืืฉื ืื ืื ืฆืจืื ืืืชืงืื ืืืื ืืงื ืืืกืชืื ืืงืืืฅ (ืืืืฆืขืืช SQLite CLI ืื ืื ืืื ืืจืคื ืืืจ) ืืืจืืืช ืฉืืืจืื ื ืืฆืจื ืืื ืฉืืฉืื ื ืฉืื ืฆืจืืืื ืืืืืช.
## ืืฆืืจืช ืืืืืืช
ืคืขืืื ืจืืฉืื ื ืฉื ืจืฆื ืืขืฉืืช ืืขืืืื ืขื ืืกืืก ื ืชืื ืื ืืื ืืืชืื ืืืชื, ืืืืืจ ืืืฆืืจ ืืช ืืืืืืืช ืื ืื ืื ืงืืืืืช. ืืจืื ืืืงืจืื ืื ืืืืช ื ืฆืืจื ืืืฆืืจ ืืืืืืช ืื ืืกืืก ืื ืชืื ืื ืืืจ ืืืื ืงืืื, ืืื ืื ืื ื ืจืง ืืฉืืงืื ืขื ืืกืคืจืื.
ืืฉืืื ืืืฆืืจ ืืช ืืืืืืืช ืื ืื ื ืฆืจืืืื ืงืืื ืืืืืืจ ืื ืฆืจืื ืืืืืช ืืื, ืืืืืจ ืื ืืขืืืืืช ืืื ืืืื ืืื ืืืืกืื ืืื ืืืืืืืช. ืกืคืจืืืช SQL Alchemy ืืกืคืงืช ืืช ืืืืืงืืช Table ื Column ืืื ืืืืืืจ ืืืืืืช ืืขืื ืืื ืืืืงืืช ืืกืืื ื ืชืื ืื. ืืืื ื ืืงื ืืืืื ืื ืืืืจ ืฉืชื ืืืืืืช ืืืช ืขืืืจ ืกืคืจืื ืืืฉื ืื ืขืืืจ ืกืืคืจืื, ืื ืงืื:
metadata_obj = MetaData()
authors_table = Table(
"authors",
metadata_obj,
Column('id', Integer, primary_key=True),
Column('name', String()))
books_table = Table(
"books",
metadata_obj,
Column('ISBN', String(13), primary_key=True),
Column('name', String()),
Column('author_id', ForeignKey('authors.id'), nullable=False))
ืืืืืืงื metadata ืืจืื ืืช ืื ื ืชืื ื ืืืืืืืช, ืืืืืงื Table ืืืืฆื ืืืื ื Column ืืืืฆื ืขืืืื. ืืืฆืืจื ืฉื ืขืืืืืช ืืคืฉืจ ืืืขืืืจ ืืช ืกืืื ืื ืชืื ืื ืืืืคืืื ืื ืฉื ืืขืืืื ืืื primary_key ืื nullable.
ืืืจ ืื ืืืืขื ืืฉืืจื ืืืืคืฆืืื ืืืืช:
metadata_obj.create_all(engine)
ืฉืืืฆืจืช ืืช ืื ืืืืืืืช. ืขืืื ื ืืื ืืืืชืจ ืืฉื ืขืืื ืืื ืืกืืก ื ืชืื ืื ืงืืื.
## ืืื ืกืช ืืืืข
ืืขืืืื ืขื SQL Alchemy ืืฉ ืื ืืื ืื ืืข (engine) ืืืขืืจืชื ืื ื ืืชืืืจ ืืืกืืก ืื ืชืื ืื. ืืืืืืจ ืชืืื ืืืื ืืจื ืืืงืฆืื, ืืืืฆืข ืืชืื ืืืืง with ืืืกืืฃ ืืืืืง, ืื ืืื ืขืื ืืื ืฉืฆืจืื, ืืืื commit. ืื ื ืืฉืชืืฉ ืืคืงืืื engine.begin ืืื ืืืชืืื ืืช ืืืืืืจ ืืืืฆืข ืืืืืืืืช ืืช ื commit ืืกืืฃ ืืืืืง.
ืืชืื ืืืืืง ืฉืืืช ืืขืืืื ืืื ืืคื ืชืื ืืช ืฉื ืงืจืืช Command Pattern. ืื ืืืืจ ืฉืืฉ ืคืื ืงืฆืืืช ืฉื SQL Alchemy ืฉืืืืฆืืืช ืคืงืืืืช ืฉืืืืืืช ืืืืฉืื ืืืกืืก ืื ืชืื ืื, ืืืืืืงื ืืืืืืจ ืืืืข ืืืคืขืื ืืืชื ืขื ืืคืื ืงืฆืื execute ืฉืื. ืื ืืฉืืื ืืืคืขืื ืืื ืกื ืืืืืช ืืืืืจืื ืื ื ืืคืขืื:
## Part 2 - Insert some data
with engine.begin() as conn:
conn.execute(insert(authors_table), [
{ "name": "Jay Shetty" },
{ "name": "David Foster Wallace" },
{ "name": "Marcus Aurelius" },
])
ืืคืื ืงืฆืื insert ืืืฆืจืช ืคืงืืืช ืืื ืกื, ืืืคืื ืงืฆืื conn.execute ืืงืืืช ืืช ืคืงืืืช ืืืื ืกื ืืืืกืฃ ืฉื ืคืจืืืจืื ืืคืงืืื ืืืคืขืืื ืืืชื ืืื ืืืื ืืก ืืช ืฉืืืฉืช ืืฉืืจืืช.1 419
# ืืจืืืฉ ืื ืืกืืื
ืืฉ ืฉืชื ืืจืืื ืืจืืืืืช ืืืชืืืื ืขื ืืขืืืื ืฉืืืื ืฉืื ืื ื ืจืืฆืื ืืขืฉืืช ืืจืืืฉ ืืกืืื:
1. ืืืืจืื ืืช ืชืืืฉืช ืืกืืืื.
2. ืืขืืืจ ืืืกืชืื ืขื ืืกืืืื.
ืื ืื ืืฉ ืื ื ืื ืืื ืฉืืชืืื ืื ืืงื ืืช ืืจืืืก ืืืื ืื ืื ืืจืืืฉ ืืกืืื (ืืื ืืืืช ืืกืืื ืืืคืฉื. ืื ืชืืืืื ืืกืฃ ืขื ืืจืืืกื ืืืื), ืืคืฉืจ ืืขืืื ืืืชื ืืงื ืืช ืืจืืืก ืืฉืชื ืืจืืื:
1. ืืคืฉืจ ืืืกืืืจ ืฉืืจืืืก ืขืืื ืืืฉ ืงืฆืช, ืืืื ืืืืช ืื ืืืคืกืื ืืืืืื ืืื ืืื ื ืืืชืืืฉื ืฉื ืืงื ืื ืืืืืื.
2. ืืคืฉืจ ืืกืคืจ ืขื ืืืื ืฉืืื ืืืืืื ืฉืื ืขืืฉืื ืืฉืชื ื ืืงืฆื ืืงืฆื.
ืืช ืืืชื ืื ืืคืืืฆืืืช ืฉืืืจืืื ืืื ืืจืกื ืืืื ืืคืขืืืื ืขืืื ื, ืื ืื ื ืืืืืื ืืืคืขืื ืขื ืขืฆืื ื ืืื ืืืชืงืื ืืืืืื ืืืื ืื ืื ื ืจืืฆืื ืืืืืข, ืืื ืืฉืืืื ืืืืื ืื ื ืืื ืฉื ืฉื ื ืืจืขืืื ืืช. ืืืืืื ืืชืื ืชืช ืฉืขืืืื ืขืืืืช ืืืื ืืื ืืืื ืืืืืืืช ืืฉื ืืช ืืจืืฆื ืืืชืงืื ืืืื ืืืืืื ืืืืจื ืืช ืืืชืจ ืืื ืื ืืืฆืืช ืืื ืืืืื ืืืื ืืขืืืื, ืืืืื ืืงืืช ืืื ืืฉื ื ืืืืื ืื ืื ืฉืืืื:
1. ืืคืฉืจ ืืจืืช ืืืฉืจื ืืืงืืช ืืืืชืืื ืืืืื ืืืืงืฃ ืงืื (ืืฆื ืฉืขื ืืืื ืืืงืื ืงืืจืก ืืื).
2. ืืคืฉืจ ืืืืช ืืืืืืคืื, ืคืืจืืืื ืืืืฆืืจ ืงืฉืจืื ืขื ืื ืฉืื ืืืชืขืฉืื ืฉืขืืืืื ืืืื ืืืืืื ืฉืืช ืจืืฆื ืืืืื ืก ืืืื, ืืื ืืืืื ืืช ืืืื ืืคืขืจ ืืื ืืืคื ืฉืืช ื ืืฆืืช ืืืื ืืืื ืืืงืื ืืืื ืืช ืจืืฆื ืืืืืข (ืืืืื ืช ืืฉืืืจืช, ืื ืื, ืชื ืืื), ืืืจืืืช ืฉืื ืื ืืคืฉืจื ืืื ืืงืื ืืืืืืฆืื ืืืชืงืื.
ืฉืืืื ืืื ืฉื ืืฉื ืืื, ืืื ืืงืืช ืกืืืื ืื ืืืืชืจืื ืืืื ืืืืชืจ ืขื ืืืืืืืฆืื, ืืื ืืืคืชื ืืืชืงืืืืช ืืืืืฆืืข ืงืคืืฆืืช ืืงืฆืืขืืืช, ืื ืืืื ืฉืืจืืืฉืืช ืืืื ืืกืืื ืืช ืื ืืกืืื ืืช ืืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
