ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-530 kunlar
Postlar arxiv
1 419
ืืืื ืืืืชื: nth-child ืืงืืืก ื CSS
ื ื ืื ืฉืืฆืจืชื ืืืื ืขื CSS Grid ืืขืืฉืื ืืชื ืจืืฆืื ืืฆืืืข ืจืง ืฉืืจื ืืกืืืืช - ืื ืืืชืจ ืืื, ืืืืืืฉ ืืช ืืืืื ืืกืืื ืืฉืืจื ืืกืืืืช. ืืขืืื ืืืฉื ืฉื table ืืื ืืกืคืืง ืืืฆืื ืืช ื tr ืฉืืชืืื ืืฉืืจื ืืืืืืืจ ืื ืืืื, ืืื ืืืจืื ืืืืื ืื ืืืืืช ืืืื ื tr. ืื ื HTML ืฉืื ืืื ืืกื ืืื:
<div class='container'>
<div>0</div>
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
ืื ืืฆืขื ืืจืืฉืื ืืื ืืืืืช ืืช ื div-ืื ืฉืืชืืืืื ืืืื ืืฉืืจื ืฉืืขื ืืื ืช ืืืชื ื. ืืฉืืื ืืืฉืืง ื ืกืื ืืืชื ืืงืืืก ื ืคืจื:
<div class='container'>
<div>0</div>
<div>1</div>
<div>2</div>
<div class='selected-row'>3</div>
<div class='selected-row'>4</div>
<div class='selected-row'>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
ืขืืฉืื ืื ืืืื ืืืืืฉื ืฉื ืืฉืืจื? ืืื ืืคืฉืจ ืืืืืืจ ืืืื ืืื ืืชืืื, ืืื ืื ื ืงืื ืื ืืช ืืืืื ืืื ืืชืืื ืืื ืื ืื ืฉืจืฆืื ื. ืื ื ืจืืฆื ืจืง ืืืื ืืกืืื ืืฉืืจื. ืืื ืืื, ืื ืืคืฉืจ ืืืืืืจ ืืืื ืขืืืื ืืชืืชืื ืืื ืชื ืืฉืืจื, ืืืืื ืฉืืืื ืืืื ื ืจืง ืืชืืื ืฉืืงืฆื. ืืืืื ืืืขืื ืืืืื ืืื ืงื:
.container .selected-row{
border-top-color: red;
border-bottom-color: red;
}
ืืฉื ื ืืชืืื ืืงืฆื? ืืคืฉืจ ืืื ืืืืืื ืืืฉืชืืฉ ืคื ื nth-child(1):
.container .selected-row:nth-child(1) {
border-left-color: red;
}
ืืื ืื ืื ืขืืื. ื div ืืจืืฉืื ืขื ืืงืืืก selected-row ืืื ืื ืืืื ืืจืืฉืื ืืืื ืืืื ืื ื ืฆืืข. ืื ืขืืฉืื? ืืกืชืืจ ืฉืืฉ ื nth-child ืืจืืง ืืื ืืชืคืืก ืืช ืืืื ื n-ื ืฉืืชืืื ืืงืืืก ืืกืืื ืืื ื ืจืื ืืื:
.container :nth-child(1 of .selected-row) {
border-left-color: red;
}
.container :nth-child(3 of .selected-row) {
border-right-color: red;
}
ืืืืืื ืืื ืืื ืฉืจืืฆื ืืฉืืง ืขื ืื:
https://codepen.io/ynonp/pen/zYXQqmO1 419
ืื ืฉืืจ ืืงืืืฅ ื ืฉืืจ ืืื ืฉืื ืื.
ืืฉืื ืื ืืฉื ื ืืื ืืงืืืคืื ื ืืช ืืฆืืืจ, ืืืขืฆื ืืื ืงืืืคืื ื ืื ืฉืฆืจืืื ืืืงืฉืื ืืกืืื ืืื - ืขืืื ืืืืกืืฃ ืงืจืืื ืืคืื ืงืฆืื
useSignals ืฉื signals-react. ืืงืืืคืื ื ืื Painter ืืืืจืกืช ืจืืืงื ื ืจืืืช ืืื ืื:
import { color, setColor, picture } from './state.js'
import { useSignals } from "@preact/signals-react/runtime";
export default function Painter() {
useSignals();
const size = picture.value.size;
console.count('render');
return (
<div style={{display: 'grid',
gridTemplateColumns: \repeat(${size}, minmax(0, 1rem))\}}>
{
new Array(size).fill(0).map((_, i) => (
new Array(size).fill(0).map((_, j) => (
<div
key={i * 8 + j}
style={{background: color(i, j), height: '1rem', width: 'auto', border: '1px solid grey'}}
onClick={() => setColor(i, j, 1)}
></div>
))
))
}
</div>
)
}
ืืืืจืกืช ืจืืืงื ืืฉ ืืื ืืืืืืช ืืืจืืืืช ืฉืืื ืืื ืฉืื ืืคืฉืจ ืืืฉืชืืฉ ืืกืืื ื ืืชืืจ ืขืจื ืืชืื ื JSX, ืื ืฉืืืืจ ืฉืื ืืฉ ืฉืื ืื ืืกืืื ื ืชืืื ืฆืจืื ืืจื ืืจ ืืืืฉ ืืช ืื ืืงืืืคืื ื ืื.
ืงืื ืืื
ืื ืขืื? ืืื ืขืื. ืืฉืืืืฆืื ืขื ืคืืงืกื ืืกืืื ื ืืชืขืืื, ืืงืืืคืื ื ืื ืืจืื ืืจืช ืืืืฉ ืืืฆืืข ืขื ืืืกื ืืชืขืืื. ืืขืืืชื ืืช ืืืืืื ืืืืจืกืช preact ื Deno Deploy ืื ืืชื ืืืืืื ืืฉืืง ืืืชื ืืื:
https://painter.deno.dev
ืืืืืจืกืช ืจืืืงื ืืคืืืืงืื ืืื:
https://playcode.io/1853176
ืืืงืื ืืืืืืื:
https://github.com/ynonp/deno-painter-demo1 419
ืืืค ืจืืืงื - ืฉืืืจืช ืกืืืื ืืืืืืื ืืกืืื ืืื
ืกืืื ืืื ืื ืืืื ืืื ืื ืื ืืื ืคืฉืื ืื ืืืื ืกืืืื ืืจืืืงื. ืื ืืืืขื ื preact ืืืืื ื ืื ืขืืืืื ืืฉืจ ืืืงืืคืกื ืืืืฉืื ืจืืืงื ืืื ืขื ืืืืืื ืืืชืืืื ืืืฉ ืคืฉืื ืืฉืื ืืืชื.
ืื ืื ืกืืื ื
ืกืืื ื ืืื ืืืืข ืฉืืืืข ืืืืื ืืงืื ืฉืืกืชืื ืขืืื ืืฉืืื ืืฉืชื ื. ืื ืืืืืงื ืฉืืฉ ืื ืืืคืืื value ืฉืืืืืง ืืช ืืขืจื. ืืฉืืื ืืฉืคืจ ืืืฆืืขืื ืืคืฉืจ ืืฉืื ืกืืื ื ืืชืืจ ืขืจื ื JSX ืืื ืื ืฆืจืื ืืืืฆืจ ืืช ืื ื Virtual DOM ืฉื ืืงืืืคืื ื ืื ืืืืืคื ืืืืืืื preact ืืขืืื ืจืง ืืช ืืขืจื ืฉื ืืกืืื ื, ืื ืืงืืช ืืช ืืขืจื ืฉืื ืืื ืืงืืืคืื ื ืื ืชืจืื ืืจ ืืืืฉ ืืฉืืขืจื ืืฉืชื ื.
ืืืช ืืืืืื ืืชืื ืืชืืขืื ืฉืืื:
import { signal } from "@preact/signals";
// Create a signal that can be subscribed to:
const count = signal(0);
function Counter() {
// Accessing .value in a component automatically re-renders when it changes:
const value = count.value;
const increment = () => {
// A signal is updated by assigning to the \.value\ property:
count.value++;
}
return (
<div>
<p>Count: {value}</p>
<button onClick={increment}>click me</button>
</div>
);
}
ืืคืฉืจ ืืจืืืช ืฉืืกืืื ื ืืืืืจ ืืืืฅ ืืงืืืคืื ื ืื, ืืงืืืคืื ื ืื ืืขืืื ืช ืืืชื ืืืฆืืื ืืืชื. ืขื ืืืกื ืื ืื ื ื ืจืื ืืช ืืขืจื ืืืื ื ืืืืืฆืืช ืืื ืื ืคืขื ืฉืืืืฆืื ืขื ืืืคืชืืจ, ืืื ืืืื ืืื Counter-ืื ืืืืชื ืขืืื ืืืื ืืืื ืืกืื ืืจื ืื ืื ืื ืืฉืชืืฉืื ืืืืชื ืกืืื ื. ืื ืื ืขื ืืื ืื ืคืฉืื ืืืื ืื ืฆืจืื ืืขืืื, ืืื ืืฉืืืจ State ืืืืฅ ืืงืืืคืื ื ืื.
ืืืื ื ืืฉืื ืืืืืื ืืืชืจ ืืืจืืืช ืฉื ืฆืืืจ, ืจืง ืฉืืืงืื ืืฉืืืจ ืืช ืืชืืื ื ืืกืืืื ืฉื ืงืืืคืื ื ืื ืืืช ื ืฉืืืจ ืืืชื ืืกืืื ื.
ืืกืืื ื ืืืคืื ืงืฆืืืช
ืืืื ื ืื ืืฉืื ืกืืื ื ืืืื ืคืื ืงืฆืืืช ืฉืืืคืืืช ืื ืืงืืืฅ ืืื ืืืืฉืื ืขื ืื ืืื Store ืฉื Flux. ืืืืืืช ืืฆืืืจ ืฉืื ืื ืืืื:
// file: state.tsx
import { signal } from "@preact/signals";
const palette = [
'#ffffff', // White
'#000000', // Black
'#9bbc0f', // Lime Green
'#8bac0f', // Olive Green
'#306230', // Dark Green
'#0f380f', // Darker Green
'#34a853', // Green
'#31a354', // Slightly Darker Green
];
const initialState = () => ({
size: 8,
data: new Array(8).fill(0).map((_, i) =>
new Array(8).fill(0).map((_, j) => (
signal(0)
)))
})
export const picture = signal(initialState())
export function color(row: number, column: number) {
const n = picture.value.data[row][column].value
return palette[n % palette.length]
}
export function setColor(row: number, column: number, color: number) {
picture.value.data[row][column].value = color;
}
export function clear() {
picture.value = initialState()
}
ืืงืืืฅ ืืืืฆื ืืช ืืกืืื ื ืฉื ืืชืืื ื ืฉืืืื ืืขืจื ืืคืื ืฉื ืกืืื ืืื ืืื ืืคืืงืกืืื. ืืฉืคืืงืกื ืืฉื ื ืฆืืข ืจืง ืืกืืื ื ืฉืืชืืื ืื "ืืืืืง" ืืืขืืื ืืช ืืืืื ืืื ืฉืืงืฉืืืื ืื.
ืงืืืคืื ื ืืช ืฆืืืจ
ืงืืืคืื ื ืืช ืืฆืืืจ ืคืฉืื ืืฆืืื ืืช ืืชืืื ื ืืืืืจืช ืื ืคืืงืกื ืืคืื ืงืฆืืืช setColor ืฉืืืืจืชื ืืกืืืื:
import { color, setColor, picture } from './state.tsx'
export default function Painter() {
const size = picture.value.size;
return (
<div className="grid" style={{gridTemplateColumns: \repeat(${size}, minmax(0, 1rem))\}}>
{
new Array(size).fill(0).map((_, i) => (
new Array(size).fill(0).map((_, j) => (
<div
className="h-4 w-auto border"
style={{background: color(i, j)}}
onClick={() => setColor(i, j, 1)}
></div>
))
))
}
</div>
)
}
ืงืืืคืื ื ืืช ืืคืชืืจ ืืืืงื
ืงืืืคืื ื ืืช ืืคืชืืจ ืืืืืงื ืืฆืืื ืืคืชืืจ ืืืื ืขืืืจ ืืืืงื ืฉืืืืืจ ืืคืื ืงืฆืื clear ืฉืืืืจืชื ืืกืืืื:
import { clear } from './state.tsx';
export default function ControlPanel() {
return (
<div>
<button onClick={clear}>Clear</button>
</div>
)
}
ืจืืืงื
ืืฉืืื ืืืคืขืื ืืช ืืกืืื ืืื ืืืื ืืจืืืงื ืฆืจืื ืจืง ืืช ืืืืืื ืืืชืืืื ืืืงืจืื ืืขืื ืคืื ืงืฆืื. ืืจืืช ืืืืืืืช ืืฉ ืืืชืงืื ืืช signals-react ืืืืฉืชืืฉ ืื ืืืืืื. ืืืืืื ืืงืืืฅ state ืื ื ืืฉืชืืฉ ืืฉืืจืช ืืืืืื ืืืื:
import { signal } from "@preact/signals-react";1 419
ืื ืืขืฆื ืื ืื ื ืคืืืืื ืืืื?
ืืืง ืืืคืื ืืขืืื ืขืืืื ืืื ืืชืืืื "ืืื ืืฆืืื ืืืฆืื ืขืืืื ืืืื ืื ืื ืคืขื ื ืืกืคืช?". ืืคืื ืืื ืชืืงืฃ ืื ืื ืฉืื ืฉืืืื ืื ืืืืืื ืืช ืืขืืืื ืฉืืื. ืื ืื ื ื ืงืืจ ืื ืืืื ืืื ืืจืืข ืฉืืืฉืื ืืฆืืข ืืขืืื ืคืชืืื ื ืืืื ืื ืืืืจ ืฉืืขืฆื ืืฉ ืื ืืจืื ืืืจืื ืืืืื ืืืคื ืฉืื ืื ื ื ืืฆืืื. ืฉืืื ืืืคืกืื ืืช ืื ืฉืืืจ ืืฉืื ื.
ืืืื ืืืื ืื ืื ืื ื ืืขืืืคืื ืืืฆืื ืขืืืื ืืืฉื ืืคื ื ืฉืขืืืืื ืืช ืืงืืืืช. ืงืืื ืื ื ืืคื ืืคืื, ืืืจื ืื ืืคืฉืจ ืืขืืื. ืื ืื ืืคืฉืจื ืื ื ืืขื, ืืื ืื ืขืืฉืื ืืฉืืืคืืฉ ืขืืืื ืืืื ืืืชืจ ืืืจืฉ ืืฉืงืขื ืฉืืื ืื ื ืืช ืืืฉืืืื ืขืืืจื ืื ืื ืื ื ืืืชืจ ืืื ืขืกืืงืื ืืขืืืื ืงืืืืช?
ืืจื ืืืจืช ืืืกืชืื ืขื ืืืขืื ืืื ืืฉื ืืช ืืช ืืฉืืื - ืืืงืื ืืฉืืื ืืื ืื ื ืจืืฆื ืืฉืคืจ ืืช ืืืฆื ืื ื ืืฉืื "ืื ืืขืฆื ืื ื ืคืืื ืืืื ืคื?", ืื ื Best Case ืฉืืงืจื ืื ืืฉืืจ?
ืืฉืงืฉื ืืคืืื ืืืืืื ืขืชืื ืืืกืืื ืื ืืืื ืื ืกืืื ืืื ืฉืฆืจืื ืืืืคืจื.
1 419
ืืืืืช ืืืืืื ืืืืช
ืื ื ืจืฉืืืช ืืืืจืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืืฉืืื ืืืฆืืื.
ืืื-
ืื ื ืจืฉืืื ืฉื ืืืจืื ืฉืชืืืื ืืขืฉืืช. ืื ืื ื ืื ืืืืขืื ืื ืืืคืฉืจืืช ืืืืื ืืืืชืจ ืืื ืืงืจื ืื ืชืืืจื ืื ืืคืฉืจืืช.
ืืจืื ืฉื ืื ืืืฉืคื ืืจืืฉืื ืืื ืืืจื ืืืจืื ืืชืืืืืื ืืืฉืงืืข ืืืืช ืกืคืจ. ืขื ืฉืืื ืืื ืืืืื ื ืฉืื ืืขืฆื ืื ื ืืื ืื ืฉืืืฆืืื ืืคืื ืคืืืช ืืขื ืืื ืช. ืืืื ืจืืื ืืืืชื ื ืขืืืื ืืืคืฉืื ืืืืืืช ืืกืื ืื ืฉื ืืืฉืคื ืืจืืฉืื, ืืืชืืืืืื ืื ืคืขื ืืืืฉ ืืืจื ืฉืกืืืื ื ืืช ืื ืืจืฉืืื ืืขืืืื ืื ืืฆืืื ื.
ืืฉืื ืื ืฉืื ืื ื ืฆืจืืืื ืืขืฉืืช, ืืชืืืืืื ืืืืืจืื, ืืื ืืืขืืจ ืืืฉืคื ืืฉื ื. ืขืืื ื ืืืคืฉ ืืืืื ืืืืช ืืืขืืื ืืืจืื ืื ืฆื ืืืชื, ืื ืืืื ืฉืื ืืืจื ืืืฆืืื (ืื ืื ื ืืืจ ืื ืืืืขืื ืื ืืืจื ืืืฆืืื), ืืื ืื ืืืช ืืืจื ืืืืืื ืงืืืื.
1 419
ืื ืขืจื ืืืืจ ืืืฃ ืืื ืื ืืกืชืื ืขืืื, ืืื ืขืืืื ืืฉืืืข ืจืขืฉ?
ืชืืื ืืขืกืชื ืขื ืคืืืชืื ื JavaScript ืืืื ืฉืื ืืจืฉื ืืื ื ืืืชืื return ืืฆืืจื ืืคืืจืฉืช. ืืงืื ืืื ืืคืืืชืื ืืืืืจ None ืืืจืืช ืฉืืจืืจ ืฉืื ืื ืื ืฉืจืฆืืชื:
def twice(x): x * 2
ืืจืืื ืื ืื ืืื ืงืืจื. ืืคืื ืงืฆืื ืืืืช ืืจืืื ืืืืืจื ืืืืืง ืืช ืื ืฉืจืฆืืชื - ืืืืืจ ืืช ืืืกืคืจ ืฉืงืืืื ืืคืื 2:
def twice(x) = x * 2
ืืื ืื ืืืืขื ืืืืืื ืืืื ืฉืฉืื ืืืืืจื ืฉืงืืฆืืจื ืืจื ืืชืื ืืช ืื ื ืืื ืืื ืชืืื ืขืืืฃ ืืืืื ืืืืืง ืื ืงืืจื ืืชืืช:
def fib_rb(n)
a = 0
b = 1
n.times { a, b = b, a + b }
a
end
ืืืืืื ืืืืช ืืืืืง (ืืงืื ืฉืจืฅ n ืคืขืืื ืืืงืฃ ืืกืืืจืืื ืืกืืืกืืื) ืืขืฆื ืขืืฉื ืืช ืื:
def fib_rb(n)
a = 0
b = 1
n.times {
a, b = b, a + b
return [b, a + b]
}
a
end
ืืืื ืื ืืฉืื? ืื ืืฉืืืืืจืื ืืขืจื ืื ืฆืจืื ืืืงืฆืืช ืืืชื ืืคืขืืืช ืืืงืฆืื ืขืฆืื ืืืงืืช ืืื ืืืงืื ืืืืืจืื. ืืืืืื ืืงืืฉืืจ ื'ืื ืืืจืืื ืืฉืคืจ ืืฉืืขืืชืืช ืืช ืืื ืืจืืฆื ืฉื ืืงืื ืืืืฆืขืืช ืืฉืื ืื ืืื:
def fib_rb(n)
a = 0
b = 1
n.times { a, b = b, a + b; nil }
a
end
ืขืืฉืื ืจืืื ืื ืฆืจืื ืืืงืฆืืช ืืขืจื ืจืง ืืฉืืื ืืืืืืจ ืฉื ื ืขืจืืื ืืืืงืื ืื ืืืืืจ nil, ืื ืฉืืืื ืื ืืฉื ื ืืืื ืืชืืื ืืช ืื ืืืืื ืืฃ ืืื ืื ืืกืชืื ืขื ืขืจื ืืืืืจ.1 419
ืืืค ืจืืืงื: ืืื ืืชืคืืก ืืืืฆื ืืืืฅ ืืงืืืคืื ื ืื
ืืืจ ืฉืืื - ืืฉ ืื ืงืืืคืื ื ืื ืฉืคืืชืืช ืชืคืจืื ืงืืคืฅ. ืืื ืื ื ืืขืืื ืืช ืืชืคืจืื ืืฉืืฉืชืืฉ ืืืืฅ ืขื ืืืกื ืืืืฅ ืืงืืืคืื ื ืื? ืืฉ ืืฉืื ืืื onClick ืืื ืขื ืื ืฉืืจ ืืืืจืื?
ืชืฉืืื - ืืฉืืื ืืขื ืืช ืขื ืื ืฆืจืื ืืืืืืจ ืืืื ืขืืืืื ืืืจืืขืื ื JavaScript. ืื ืคืขื ืฉืืฉ ืืืืฉืื ืืืจืืข ืขื ืืืกื ืืืคืืคื ืืืืืืืืช ื ืืชื ืืืืื ืืช ืืืืื ืืื ืืืคื ืืืืจืืข. ืืจืืจืช ืืืืื ืืื ืฉืืืื ื ืืืื ืืืคื ืืืืจืืข ืฉืงืืจื ืืฆืื, ืืื ืืื ืื ืืืคื ืื ืืืืจืืข ืืื "ืืืขืืข" ืืืื ืืืืื ื ืฉืืืื ืืืชื ืืื ืืืืื ื ืฉืืืื ืืืชื ืืื ืืืื ืขื ืืืืื ื ืืืืื ืืืืชืจ ืขื ืืืกื ืฉืื window.
ืืื ืืฉืืื ืืชืคืืก ืืืืฆื ืืืืฅ ืืืืื ื ืื ืื ืฉืื ืื ื ืฆืจืืืื ืืขืฉืืช ืื ืืืงืฉืื ืืืืจืืข click ืขื ืืืืืงื window ืืฉื ื ืชืคืืก ืืช ืื ืืืืืฆืืช. ืืืืจ ืืื ืืืจืืขืื ืืชืื ืืืืื ื ืืืขืืขืื ืืืขืื ื window, ื ืฆืืจื ืืจื ืืืืืช ืฉืืืจืืข ืืกืืื ืืชืงืืื ืืืืฅ ืืืืื ื ืฉืืขื ืืื ืืืชื ื. ืืจื ืงืื ืืคืชืืจ ืืช ืื ืืื ืืืฉืชืืฉ ืืคืื ืงืฆืื
stopPropagation ืฉื ืืืืืงื ืืืจืืข ืืฉืื ืื ื ืืืคืืื ืืืืืฆืืช ืฉืื ืื ื ืื ืจืืฆืื ืฉืืืืขื ืืืื ื window.
ืกื ืืื ืืงืื ื ืจืื ืื:
import React, { useEffect, useState } from 'react';
const initialText = "Click outside the component to change this text"
export function App(props) {
const [text, setText] = useState(initialText);
useEffect(() => {
const changeText = () => setText('Yay!');
window.addEventListener('click', changeText);
return () => {
window.removeEventListener(changeText);
}
}, []);
return (
<div
className='App'
style={{background: 'red'}}
onClick={(e) => e.stopPropagation()}
>
<h2>{text}</h2>
</div>
);
}
ืืืืื ืื ืืฉืืง ืขื ืืงืื ืืืื ืืงืืืคืืื ืืงืืฉืืจ:
https://playcode.io/18487621 419
ืืจื ืืืงืฆืืืช
ืฉืืืืช ืืคืืกื ืืชืืื ืืืืืจื ืขืืื ืืืงืืช, ืืื ืืขื ืืื. ืืืื ืจืืื ืืฉ ืชืืื ืืช ืคืืืชืื ืฉืฉืืืจืช ืืช ืืคืืกื ืืืืืขืืช ืฉืืืื ืกื ืืืืืจื (ืืฉ ืืื ืืืืื ืฉื ืืืืื) ืืื ืืืกืืคื Escape Characters ืืืคื ืฉืฆืจืื. ืืืื ืฉืืืืจื ื ืืื ืืงืื ืื ืชืืื ืืงืื ืฉืื ืืืกืืฃ ืืช ื Escape Characters ืืืงืืืืช ืื ืืื ืื ืืืื ืฉืืืื ืฉื ืืืืขืืช ืืคืขืืื ื ืืฉืืช.
ืืื ืงืืจื ืืฉืืฉ ืคืืกื ืืจืื ืืืขืื ืืืืกืคืช ื Escape Characters ืืืืืขื ืืฉื ืืื? ืืฉืืืฉืืช? ืืืื ืืืืขื ืืืืฆืข? ืืชื ืืืจ ืืืื ืื ืืื ืื ืืืื, ืืคืจืกืื ืืืืืจื ืืืฉืื ืืืงืืช ืื ืงืื ืคืืกื ืืชืื.
ืืฉืืงืื ืืื ืืขืืืช ืืืื ืงืืจืืช ืืขื ืืืื, ืืื ืืฉืื ืงืืจืืช ืงืฉื ืืืชืืืื ืืืชื. ืืืื ื ืืฉืื ืขื ืืืืืจื ืืคืืชืจืื ืืช ืืคืฉืจืืื ืืืชืืจ:
1. ืฆืขื ืจืืฉืื ืืืื ืืืฆืืจ ืงืืืฆืช "ืืืืงื", ืืฉืืื ืืืื ืืช ืื ืืืืงืื ืฉื ืืคืืกื ืืจืง ืื ืืื ืขืืจ ืืฉืืื ืืช ืืืชื ืืืงืื ืืงืืืฆื ืืืืืชืืช. ืืื ืื ืื ืืกืคืืง ืืื ืื ืืืื ืืฉ ืืฉืื ืฉืื ื ืืืืืจืืช ืืื ืงืืืฆืช ืืืืืงื ืืงืืืฆื ืืืืืชืืช ืฉืืืจืื ืืืืืขืืช ืืขืืืจ ืืงืืืฆืช ืืืืืงื ืืืืืืฉื ืืฉืืืื ืืงืืืฆื ืืืืืชืืช.
2. ืคืืชืจืื ืงืฆืช ืืืชืจ ืืื ืืืื ืืืืงื ืืืจื ืฉืืืืช ืื ืืืืขื ืืจืืืช ืื ืืฉืืืื ื ืืฉืื, ืืื ืื ืืืืืง ืืช ืื ืืืืืขืืช ืืจืฆืฃ. ืื ืื ืื ืืกืคืืง ืืื ืื ืืืื ืืชืืื ืืช ืขืฆืื ืืชืจืกืงื ืืืื ืืื ืื ืฉืืืืง ืืช ืืจืฆืฃ.
3. ืคืืชืจืื ืขืื ืงืฆืช ืืืชืจ ืืื ืืืื ืืืจืืฅ ืืช ืชืืื ืืช ืืฉืืืื ืื ืืืฉ ืืงืืช ืืืงืื ืื ืคืขื ืืืื. ืืชืืื ืืช ืชืืืืง ืื ืืคืืกื ืืืื ื ืฉืื ืืืืืจื. ืื ืืืื ืื ื ืฉืื ืืื ืชื ืกื ืืฉืืื, ืืื ืืื ืืืฆืืช ืืืง ืืืคืืกื ืืงืืืฆื ืืื ืชืืืง ืืช ืื ืฉืืฆืื.
4. ืืฉืืื ืื ืืืืื ืก ืืืืค ืืืชื ืชืืื ืืช ืฉืจืฆื ืคืขื ืืืืฉ ืืงืืช ืชืฆืืจื ืืกืื ืืืืืฉืื ืืกืืก ื ืชืื ืื ืฉืฉืืืื ื ืืฉืื ืืฉืืื ืืืงื ืืช ืื ืืฉืืจืืืช (ืื ืฉืืฉืืืื ืืฆืืืื). ืืฉืืชืืื ืืช ืขืืื ืืื ืชืืื ืืืืืง ืืืกืืก ืื ืชืื ืื ืืืืื ืกืืืืก ืืื ืกืืืื ืคืขื ืงืืืืช ืืื ืืื ืชืืข ืื ืืจืืฉื ืขืื ืขืืืื.
ืคืืชืื ืชืืื ื, ืื ืชืืื ื, ืืืจืฉ ืืืืื ืืื ืืจืฆืื ืฉืื ื ืืื ืืช ืืช ืืงืื ืืื ืืืื ืืืื ืฉืืคืฉืจ ืืืื ืืืฆืืืืช ืืืืฉืืืื ืฉืืฉ ืื ื (ืืืื ืืฉืืืื ืฉื ืชืืืืงื ืืืืืื ืืงืื ืืืชืจ ืืืจืื). ืืืงืจื ืฉื ืคืืจืกืื ืืืืืจื ืืืืชื ืขืืฆืจ ืืกืขืืฃ 2 ืืื ืืงืื ืงืื ืืื ืืืชืจ ืืืงืื ืฉืืฉ ืื ืืืื ืฉื, ืืื ืขืืืื ืื ืืืจืืฉ ืืืชืจ ืืฉืืืื.
1 419
ืืจื ืืืงืฆืืืช
ืฉืืืืช ืืคืืกื ืืชืืื ืืืืืจื ืขืืื ืืืงืืช, ืืื ืืขื ืืื. ืืืื ืจืืื ืืฉ ืชืืื ืืช ืคืืืชืื ืฉืฉืืืจืช ืืช ืืคืืกื ืืืืืขืืช ืฉืืืื ืกื ืืืืืจื (ืืฉ ืืื ืืืืื ืฉื ืืืืื) ืืื ืืืกืืคื Escape Characters ืืืคื ืฉืฆืจืื. ืืืื ืฉืืืืจื ื ืืื ืืงืื ืื ืชืืื ืืงืื ืฉืื ืืืกืืฃ ืืช ื Escape Characters ืืืงืืืืช ืื ืืื ืื ืืืื ืฉืืืื ืฉื ืืืืขืืช ืืคืขืืื ื ืืฉืืช.
ืืื ืงืืจื ืืฉืืฉ ืคืืกื ืืจืื ืืืขืื ืืืืกืคืช ื Escape Characters ืืืืืขื ืืฉื ืืื? ืืฉืืืฉืืช? ืืืื ืืืืขื ืืืืฆืข? ืืชื ืืืจ ืืืื ืื ืืื ืื ืืืื, ืืคืจืกืื ืืืืืจื ืืืฉืื ืืืงืืช ืื ืงืื ืคืืกื ืืชืื.
ืืฉืืงืื ืืื ืืขืืืช ืืืื ืงืืจืืช ืืขื ืืืื, ืืื ืืฉืื ืงืืจืืช ืงืฉื ืืืชืืืื ืืืชื. ืืืื ื ืืฉืื ืขื ืืืืืจื ืืคืืชืจืื ืืช ืืคืฉืจืืื ืืืชืืจ:
1. ืฆืขื ืจืืฉืื ืืืื ืืืฆืืจ ืงืืืฆืช "ืืืืงื", ืืฉืืื ืืืื ืืช ืื ืืืืงืื ืฉื ืืคืืกื ืืจืง ืื ืืื ืขืืจ ืืฉืืื ืืช ืืืชื ืืืงืื ืืงืืืฆื ืืืืืชืืช. ืืื ืื ืื ืืกืคืืง ืืื ืื ืืืื ืืฉ ืืฉืื ืฉืื ื ืืืืืจืืช ืืื ืงืืืฆืช ืืืืืงื ืืงืืืฆื ืืืืืชืืช ืฉืืืจืื ืืืืืขืืช ืืขืืืจ ืืงืืืฆืช ืืืืืงื ืืืืืืฉื ืืฉืืืื ืืงืืืฆื ืืืืืชืืช.
2. ืคืืชืจืื ืงืฆืช ืืืชืจ ืืื ืืืื ืืืืงื ืืืจื ืฉืืืืช ืื ืืืืขื ืืจืืืช ืื ืืฉืืืื ื ืืฉืื, ืืื ืื ืืืืืง ืืช ืื ืืืืืขืืช ืืจืฆืฃ. ืื ืื ืื ืืกืคืืง ืืื ืื ืืืื ืืชืืื ืืช ืขืฆืื ืืชืจืกืงื ืืืื ืืื ืื ืฉืืืืง ืืช ืืจืฆืฃ.
3. ืคืืชืจืื ืขืื ืงืฆืช ืืืชืจ ืืื ืืืื ืืืจืืฅ ืืช ืชืืื ืืช ืืฉืืืื ืื ืืืฉ ืืงืืช ืืืงืื ืื ืคืขื ืืืื. ืืชืืื ืืช ืชืืืืง ืื ืืคืืกื ืืืื ื ืฉืื ืืืืืจื. ืื ืืืื ืื ื ืฉืื ืืื ืชื ืกื ืืฉืืื, ืืื ืืื ืืืฆืืช ืืืง ืืืคืืกื ืืงืืืฆื ืืื ืชืืืง ืืช ืื ืฉืืฆืื.
4. ืืฉืืื ืื ืืืืื ืก ืืืืค ืืืชื ืชืืื ืืช ืฉืจืฆื ืคืขื ืืืืฉ ืืงืืช ืชืฆืืจื ืืกืื ืืืืืฉืื ืืกืืก ื ืชืื ืื ืฉืฉืืืื ื ืืฉืื ืืฉืืื ืืืงื ืืช ืื ืืฉืืจืืืช (ืื ืฉืืฉืืืื ืืฆืืืื). ืืฉืืชืืื ืืช ืขืืื ืืื ืชืืื ืืืืืง ืืืกืืก ืื ืชืื ืื ืืืืื ืกืืืืก ืืื ืกืืืื ืคืขื ืงืืืืช ืืื ืืื ืชืืข ืื ืืจืืฉื ืขืื ืขืืืื.
ืคืืชืื ืชืืื ื, ืื ืชืืื ื, ืืืจืฉ ืืืืื ืืื ืืจืฆืื ืฉืื ื ืืื ืืช ืืช ืืงืื ืืื ืืืื ืืืื ืฉืืคืฉืจ ืืืื ืืืฆืืืืช ืืืืฉืืืื ืฉืืฉ ืื ื (ืืืื ืืฉืืืื ืฉื ืชืืืืงื ืืืืืื ืืงืื ืืืชืจ ืืืจืื). ืืืงืจื ืฉื ืคืืจืกืื ืืืืืจื ืืืืชื ืขืืฆืจ ืืกืขืืฃ 2 ืืื ืืงืื ืงืื ืืื ืืืชืจ ืืืงืื ืฉืืฉ ืื ืืืื ืฉื, ืืื ืขืืืื ืื ืืืจืืฉ ืืืชืจ ืืฉืืืื.
1 419
ืืื 17 ืฉื Advent Of Code 2023 - ืืืื ืื ืกืงืืื ืขืืื ื ืืื
ืื ื ืื ืืืืข ืื ืื ืืงืื ืฉืื ืื ืืฉืื ืืืื ื ืืฉืคื, ืืื ืืชืจืืื ืฉื ืืื 17 ืืื ืืื ืืืชืืจ ืขื ืื. ืืคืขื ืืจืืฉืื ื ืืกืืืจื ืืจืืฉืชื ืฉืืื ื ืื ืชืื ืื ื Immutable ืฉื ืกืงืืื ืฉืื ืื ืืืฃ ืืขืืื ืืืชื ืื ืืฆืืืืื ืืกืคืง ืืช ืืืืฆืืขืื ืื ืืจืฉืื ืืขืืจืชื ืืืฉืชืืฉ ื Mutable Collections. ืืืื ื ืจืื ืืช ืืชืจืืื ืืืคืืชืจืื ืืืื ืชืืื ืชืจืืืฉื ืื ืื ืืืฆืืข ืคืืชืจืื ืืช ืืืืื ืืืชืจ ืื ืืขืืืื ืืืชืจ ืืืงืจื ืฉืคืกืคืกืชื ืืฉืื.
ืืืชืืจ - ืืืคืืฉ ืืกืืื ืงืฆืจ ืืืืชืจ ืืืจืฃ
ืืืชืืจ ืฉื ืืื 17 ืืื ืืืืืฉ ืืืขื ืงืืืกื ืฉื ืืืืืจืืชื ืืฆืืืช ืืืกืืื ืืงืฆืจ ืืืืชืจ ืืืจืฃ. ืืืกืืื ืฉืื ื ืื ืื ืืฆืืจืช ืืจืื ืฉื ืืกืคืจืื ืืืืืื:
2413432311323
3215453535623
3255245654254
3446585845452
4546657867536
1438598798454
4457876987766
3637877979653
4654967986887
4564679986453
1224686865563
2546548887735
4322674655533
ืื ืื ื ืืชืืืืื ืืื ืงืืื ืืฉืืืืืช ืขืืืื ื ืืฆืจืืืื ืืืืืข ืืคืื ื ืืืื ืืช ืชืืชืื ื ืฉื ืืืื, ืืืืฆืื ืืช ืืืกืืื ืฉืกืืื ืืืกืคืจืื ืขืืื ืืื ืื ืืื ืืืืชืจ (ืื ืกืืคืจืื ืืช ื-2 ืฉื ื ืงืืืช ืืืชืืื, ืืื ืื ืื ื ืขืืืจ ืื ืคืขื ืฉื ืืื). ืืฉ ืื ืืืืืกื ืื ืืกืืจ ืฉืืืื ืืืกืืื ืืืชืจ ื-3 ืฆืขืืื ืืืืชื ืืืืื.
ืืฉืืื ืืืฆืื ืืกืืื ืงืฆืจ ืืืืชืจ ืื ืื ื ืืืฆืืื ืื ืงืืืช ืืืชืืื ืืืกืื ืื ืืช ืื ืื ืงืืืืช ืืืืื ืืคืฉืจ ืืืืืข, ืืืื ื ืงืืื ืฉืืืจืื ืื ื"ื ืืงืื" ืฉื ืืืชื ื ืงืืื. ืฉืืื ืืช ื ืงืืืช ืืืชืืื ืืฆื ืืืื ืื ืงืืืืช ืฉื ืฉืืจื ืืืฆืืื ืืช ืื ืขื ืื ืืงืื ืื ืืื ืืืืชืจ ืืืืฉืืืื ืืื ื ืืช ืืืกืืื ืืื ืืงืื ืืช ืื ืงืืืืช ืืืืื ืืคืฉืจ ืืืืืข ืื ืงืืื ืื, ืืื ืื ืืช ืื ืงืืื ืืฉื ืืื ืฉืืื ืืฆื ืืฉืื ืืืืฆืืื ืืช ืื ืงืืื ืขื ืื ืืงืื ืืื ื ืืื ืืืืฉืืืื ืืื ื ืืช ืืืกืืื. ืื ืืืฉืืืื ืขื ืฉืืืืขืื ืืกืืฃ.
ืื ืืงืื ืืชืจืืื ืืื ืืืจืื ืืกืืื ืฉื ืฉื ื ืืืจืื: ืืืจืืง ืืืืขื ืืกืืื ืืืกืคืจืื ืฉืืืืื ืืืชื ื ืื ืงืืื. ืืฉืืืงืืื ืื ืคืขื ืืช ืื ืงืืื ืขื ืื ืืงืื ืืื ื ืืื ืืืืฉืืืื ืืื ื ืื ืื ื ืืืืืืื ืฉื ืชืงืื ืืืืืื ืื ืืื ืืืืกืืื ืขื ืืกืืื ืื ืืื ืืืืชืจ.
ืคืืชืจืื ืืกืงืืื
ืื ืืฉื ื ืืื ื ืืกืืชื ืืืชืื ืืช ืจืงืืจืกืืืช ืืื ื ืืฆืืจื ืืขืืื, ืืกืืคื ืฉื ืืืจ ืืืคืืฉ ืื ืงืืื ืืืื ืืชืื ืืืกืฃ ืื ืื ืงืืืืช ืืคืืื ืฆืืืืืืช ืืงื ืืืชืจ ืืื ืืื - ืืจืง ืืื ืืื ืฉืืกืคืชื ืืืชืจ ืืคืฉืจืืืืช. ืื ืฉืืืืชื ืฆืจืื ืืื ืืื scala.collection.mutable.PriorityQueue ืฉืืื ืืืง ืืืื ื ืื ืชืื ืื ื Mutable ืฉื ืกืงืืื.
ื ืงืืื ื ืืกืคืช ืืฉืืื ืืืคืืชืจืื ืืื ืืืชืืืืืืช ืขื ืืืืืื ืฉื ืฉืืืฉื ืฆืขืืื ืืงืกืืืืืื ืืืืชื ืืืืื. ืืฉืืื ืื ืืืืจืชื ืืื ืฆืืืช ืื ืืช ืืืืืื ืื ืืืขืชื ืืืื, ืืื ืืชืืืกืชื ืืืืชื ืฆืืืช ืืฆืืจื ืฉืื ื ืื ืืืขืชื ืืืื ืืฆืืจื ืื ืืืช ืื ืืืคืงืืช.
ืืื ืขืืื ืืงืื? ืงืืื ืื ืืืืืจืื ืืช ืืฆืืืช ืขื ืืคืื ืงืฆืื ืฉืืืืืจื ืืช ืื ืืฉืื ืื:
case class Node(pos: (Int, Int),
direction: Direction,
count: Int,
map: Map[(Int, Int), Int]) {
def move(newPosition: (Int, Int), newDirection: Direction): Option[Node] =
if (((count == 3) && newDirection == direction) || (!map.contains(newPosition))) {
None
} else {
Some(Node(
pos=newPosition,
direction=newDirection,
count=if ((newDirection == direction) || (direction == Direction.Start)) count + 1 else 1,
map=map))
}
def movePart2(newPosition: (Int, Int), newDirection: Direction): Option[Node] =
if (!map.contains(newPosition)) {
return None
}
if ((newDirection == direction) && (count >= 10)) {
return None
}
if ((newDirection != direction) && (direction != Direction.Start) && (count < 4)) {
return None
}
Some(Node(
pos = newPosition,
direction = newDirection,
count = if ((newDirection == direction) || (direction == Direction.Start)) count + 1 else 1,
map = map))
def up: Option[Node] = if (direction == Direction.Down) {
None
} else {
move(newPosition=(pos._1 - 1, pos._2), newDirection=Direction.Up)
}
def down: Option[Node] = if (direction == Direction.Up) {
None
} else {
move(newPosition=(pos._1 + 1, pos._2), newDirection=Direction.Down)
}
def left: Option[Node] = if (direction == Direction.Right) {
None
} else {
move(newPosition=(pos._1, pos._2 - 1), newDirection=Direction.Left)
}1 419
ื ืฉืื ืื ืฉ esbuild ืื ืืืืง ืืืืจืืช ืืืคืืกืื ืืืื ืื ืืกืฃ ืืืื ื ืฆืืจื ืืืืืืจ ืงืืืฅ tsconfig.json ืืคืจืืืงื ืืื ืืืจืืฅ ืืช ื TypeScript Compiler, ืชืื ืฉืื ืื ื ืืืืจืื ืฉ tsc ืืื ื ืจืง ืืืจืกื ืฉื ืืคืจืืืงื ืฉืืืชืืืช ื node (ืืื ืื ืืื ืืืฉืื ืื ืืืชื ืืจื ืืฉืื ืข ืืช tsc ืืื ืืช ืืืจืกื ืฉืืชืืืื ื deno. ืขื ืืื ืฉืื ื ืืืืข ืืื).
ืืืื ื ืจืื ืืช ืื ืืงืื.
ืืชืืงืืืช ืืืืืื ืื ื ืืฉื ื ืืช ืืกืืืืืช ืฉื ืฉื ื ืงืืฆื ืืงืื ื ts, ืืืกืืฃ ืงืืืฅ tsconfig.json ืขื ืืชืืื ืืื:
{
"compilerOptions": {
"target": "ESNext",
"module": "commonjs",
"esModuleInterop": true,
"forceConsistentCasingInFileNames": true,
"moduleResolution": "node",
"strict": true,
"skipLibCheck": true,
"outDir": "./distNode"
}
}
ืืฉื ื ืืช ืฉืืจืช ื import ื:
import { text } from './helper';
ืืืจืืฅ tsc ืืื ืืจืืืช ืฉืืื ืืชืงืืคื.
ืืืจื ืื ืื ื ืืจืืฅ ืืช ืฉืชื ืคืงืืืืช ื esbuild ืฉืืจืืืชื:
$ esbuild --bundle main.ts --packages=external --outdir=distNode --format=cjs
$ esbuild --bundle main.ts --packages=external --outdir=distDeno --format=esm
ืื ืืฆืจื ืื ืฉื ื ืคืจืืืงืืื ืืฉืชื ืชืืงืืืช ืืืขื. ืื ื ืืืื ืืืจืืฅ ืื ืืื ืืื ืขื ืืืื ืฉืืชืืื ืื:
$ deno run -A distDeno/main.js
_________________
< I'm a moooodule >
-----------------
\ ^__^
\ (oO)\_______
(__)\ )\/\
U ||----w |
|| ||
$ node distNode/main.js
_________________
< I'm a moooodule >
-----------------
\ ^__^
\ (oO)\_______
(__)\ )\/\
U ||----w |
|| ||
ืืฉืืื ืืืืืง ืฉืืื ืืชืงืืคื ืื ืขื ืืื ื ื ืืื ืืืคืขืื:
$ deno check --unstable-sloppy-imports *.ts
ืืืฉืจ ืืืชื --unstable-sloppy-imports ืืืจื ืืืื ื ืืขืืื ืื ืขื import-ืื ืืื ืกืืืืช, ืืื ืืื ืืงืืฆื ืืืงืืจ ืฉื ืืืืืคืกืงืจืืคื ืฉืื ื. ืืื ืื ืืชื ืขืืืื ืื ืืืืืฅ ืืืืืจ ืืจืืช ืืืืจืกื 2 ืฉื ืืื ื.
ืืขืื ืื ืฉืืื ืื ืคืืืช ืืืื ืื ืืืื ืฉืืื ืืกืืจืืืช ืืืชืจ ืืื ืืืื ืฉืืื ืืืืช ืืขื ืืื ืืช ืืช ืืืชื ืคืจืืืงื ืื ื node ืืื ื deno.
ืืืืื ืขืืืื ืืืืืฅ
ืื ืื ื ื ืืฆืืื ืืืื ืืฆืืืช ืืจืืื ืืืืื ืช ืืขืชืื ืฉื ืกืืืืืช ืืืจืฆืช JavaScript ืืืืฅ ืืืคืืคื. ืขื ืื ืืืื node.js ืืืชื ืืืืคืฆืื ืืืืืื ืฉืื ื, ืืื ืืืื ืืฉ ืืืจ ืฉืืืฉ ืกืืืืืช ืืืืืช ืืืจืฆื - deno ,node, ื bun ืฉืืื ื ืืกืืื ืืืืฆืจ ืกืืืื ืืคืืื ืืืชืจ ืืืืจื ื deno ืืืืชืจ ืชืืืืช ื node.js. ืื ื ืื ืืืืข ืืื ืืชืืจืืช ืืืืช ืชืืืืจ, ืืื ืืกืืคื ืฉื ืืืจ ืืืื ืื ืฆื ืื ืฉืื ืฉืื ืืฉืชืืฉื ืืฉืืืฉืช ืืืืื ืืคื ืกืื ืืคืจืืืงื.
ืืจืืข ืืฉ ืืืืืืช ืฉืขืืืืืช ืืื ืืืชืจ ืืืื ื, ืืืืืืืช ืืืจืืช ืฉืขืืืืืช ืืื ืืืชืจ ื node, ืืืืืืืช ืฉืขืืืืืช ืื ืืื ืืฉืชื ืืกืืืืืช. ืืงืกืคืจืก ืขืืืืช ืกืืืจ ืืฉืชื ืืกืืืืืช ืืื ืขืืืื ืคืืฆ'ืจืื ืืกืืืืื ืฉืื ืขืืืืื ืจืง ื node. ืืืื ื ืืฉ ืคืจืืืืืืจืง ืืชืืจื ืืกืคืฆืืคื ืืืื ื ืืฉื Oak. ื ืงืกื ืขืืืืช ืจืง ื node ืืื ืืืื ื ืืฉ ืคืจืืืืืืจืง ืืชืืจื ืืฉื fresh.
ืขืื ืืืืื ืืื ืืืืืืช ืืืืืืจ ืืืกืืก ื ืชืื ืื. ืืจืืืืจืื ืฉื ืืกืืก ื ืชืื ืื ืื ืขืืืืื ืืฆืืจื ืืืงื ืืื ืฉืชื ืืกืืืืืช ืืืฉ ืืจืื ืกืคืจืืืช ืืืืฉื ืืืกืืก ื ืชืื ืื ืฉืืืืืืืช ืจืง ื node.js. ืื ื ืืืื ืืขืืื ืขื ืกืคืจืื ืืฉื kysely ืฉืื ืขืืืืช ืขื ืฉืชื ืืกืืืืืช (ืืฉ ืื ืืช drizzle ืฉืขืืืืช ืืื ืืงืื), ืืื ืืจืื ืกืคืจืืืช ืืืืืืืช ืืืืืื ืกืคืจืืืช ORM ืื ืชืืืืืช ืืืื ื.
ืื ื ืืงืืื ืืจืืืช ืืช ืืืงืืกืืกืื ืฉื ืืื ื ืืืฉืื ืืืืื ืืืื ืืื ืืงืื ืืขืจืืช ืฉืืืืื ืืกืคืืง ืืืืืืื ืืชืืขืื ืืื ืฉืืคืฉืจ ืืืื ืืขืืื ืืืชื ืืงืืืช ืืื ืงืฉืจ ื node.js. ืืจืืข ืืื ื ืืชืืื ืืืชืจ ืืืจืคืชืงื ืื ืื ืืคืืชืื ืืืฉืืืื ืกืคืฆืืคืืื. ืฉืืจืืช Deno Deploy ืฉืืื ืืื ืืฆืืื ืืืื ืื ืืืืชื ืืื ื ืืืชื ืืืื ืืขืจืืช ืืื ืชืื ืฉืืืืฉ ื Web Frameworks ืฉืืื, ืืื ืืืืืืจ ืืืืืืืื ื npm ืขืืืื ืื ืขืืื ืืฆืืจื ืืืฉืืืช ืืืขืืืช ืชืืืืืช ืฉื ืืืืืืช ืืชืกืื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
