ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
-17 kunlar
+230 kunlar
Postlar arxiv
1 419
# ืืืืื ืืืืช ืืืชื ืื ืฆื ืืืชื
ืื ืืื ืืขืืืื ืื ืื ื ืืืฆืคืื ืืืื ืกืคืืจ ืืืืื ืืืืช ืืืืื: ืืืื ืื ืืื ืืืฉ ืฉืืืฉืื ืืชื ืขืืื, ืืืื ืื ืื ื ืืกืชืืืื ืขื ืงืื ืื ืืกืคืืง ืืื ืืืืฉืืื ืืื ืืฉืคืจ ืืืชื, ืืืื ืืขืื ืฉืืคืฉืจ ืืขืฉืืช ืื ืืืืืืฆืื ืืขืืจืช ืืชืืืช ืืื ืงืื, ืืืื ืืคืฉืจ ืืืชืื ืืืืงื ืืืืืืืืช ืจืืฉืื ื ืืงืื ืฉืืื ืื ืืืืงืืช ืืืื. ืจืื ืืืื ืืืืืื ืืืืช ืืืื ื ืฉืืจืืช ืื ืื ืืฆืืืช.
ืืื ืืงื ืืืื ืฉืขืืืจืช ืื ืฆื ืืืชืจ ืืืืื ืืืืช ืืื ืืฉืจืืื "ืืื ืจืืง" ืืืืื, ืกืคืฆืืคืืช ืื ืืฆืื ืืืืื ืืืืช.
ืขืืฉืื ืื ื ืืืืข ืื ืืชื ืืืฉืืื - ืืืืคื ืฉืืืื ืื ืืื ืจืืง ืืื"ื ืืฉืจืืื? ืืจื ืืงืืฉื ืืฉ ืื ืืื ืืืืจืื ืฉืื ื ืฆืจืื ืืขืฉืืช, ืืื ืืื ืืืขืจืืช ืืืฆื ืคื.
ืืืชืฉืืื ืืฆืขืจื ืืื ืฉืืื ืื ืขืืื ืืื.
ืืืืจืื ืฉืืคืืขื ืขืฉืืช ืื ืชืืฆืื ืฉื ืืืืง ืขื ืชืฉืืืช ืื ืืื ืื ืืืฉืืืืช ืฉืืชื ืฆืจืื ืืขืฉืืช, ืืืฉ ืืฉืืืืช ืืืชืจ ืืืงืืช ืืืืจืืช. ืืื ืืคืจืืืงืฉื ืื ืฆื ืืจืื ืืฉืืืืช ืืืจืืช, ืืืืงืช ืกืืืืก ืืจืฉืช ืืืืจืชืืช ืื ืื ืืฉืืื ืืืงื ืืื ืืืืื ืื Refactoring ืืื ืืฉืืืืช ืืืื ืืืฉืืช.
ืืืจื ืืืืืื ืฉืื ื ืืืฆืืื ืื ืืืืื ืืืืฉืชืคืจ ืืื ืืงืืช ืฆื ืืืืืง ืืืืืจ ืืื ืขื ืืืื ืฉืื ื, ืืืชืช ืืืชืจืื ืื ืืืื ืืืฉืืืืช ืืกืืืืืช - ืืฉืืืืช ืฉืื ืื ื ืืืืขืื ืฉื ืืฆืืืช ืชืืื ืื ืืืชืืช. ืืืืืื ืืคืจืืืงืฉื ืืืืขืื ืืืืื ืืขืฆืื. ืืืฉืืื ืฉืืื ืืื ืืืืื ืืื ืืืชื ืืฉืืืืช ืฉืื ืื ืื ืืชืืฉืง ืืขืฉืืช, ืืื ืืืจื ืฉืชืืื ืืืืื ืืื ืืฉืคืจื ืืื ืืช ืืืืื ืืฆืืจื ืืฉืืขืืชืืช.
1 419
# ืืืืฉื ืืืจืื ืฉืืืืชื ื Vite ืืืื ืฉืืืฉ ืื
ืืืื vite ืืฆืืข ืืืกืฃ ืฉื ืชืื ืืืช ืืกืงืจืืคืืื ืืืงืื ืืชืืืืงื ืฉื ืืืฉืืื Front End. ืคืืชื ืืืชื ืืืืื ืื ืืฉืืื ืืืฆืืข ืืืืืช ืคืืชืื ืืืื ืืืชืจ ืืืคืชืื ืืื ืืืืฉ ืขื ืืืืจืืช.
ืืขืืจืช Vite ืชืืืื ืืื ืืช ืคืจืืืงืืื ืฉื ืืคืจืืืืืืจืงืก ืืืืืืืื - Vue, React, Svelte, preact ืืขืื ืืื ืฉื ืงืจื lit-element, ืืืืืื ืคืจืืืงื ืืื ืืื ืืื ืคืจืืืืืืจืง. ืืื ืืื ืืืืงืจืื ืชืงืืื ืชืื ืืช ืืคืจืืืงื ืืกืงืจืืคืืื ืืืืฉื ืืืฆื ืคืืชืื ืื ืื ืื ืืืฆื ืคืจืืืงืฉื.
ืื ื 5 ืืืจืื ืฉืืืืชื ืืืื ืฉืื ืื ืื ืืคืจืืืงืื Vite ืฉืืฆืจืชื:
## ืืฉื
ืื ืืืืืื ืืืืื ืืฉืืืืื ืื ืืืฆื ืฉืคื ืฉืื ืืืืื "ืืืืจืืช" ืืชืืืื ืืืืช V ืืืคืืขื "ืืืื" ืืชืืื ืืืืช R.
## ืืืืืช ืืคืืชืื
ืื, ืื ืืืืจ. ืงืืื ืื ืื ืืฉ ืืจืื ืคืืืช ืชืืืืืช ืื ืืงืืช ืคืจืืืงื ืจืืืงื ืืงืื ืื 15 (ืืืฉืืืื ื create-react-app ืฉืืืื ืืื ืืกืืื ืชืื ืืช ืืฉืชื ืืงืืช). ืื ืืจืฆืช ืืคืจืืืงื ืืืืืื ืืฉืื ืืืื ืืืื ืืืช ืขืืืืื ืืจืื ืืืชืจ ืืืจ ืืคืจืืืงืืื ืฉื create-react-app.
ืืกืืื ืืืจืืืืช ืืืืืจืืช ืืืขื ืช ืืืืื ืื ืืื ืืืขืืจ ืืฉืืืืฉ ื ES Modules ืืืฆื ืคืืชืื, ืืืืืจ ืืื ืื ืืืจื ืืจืืฅ ืขื ืื ืืงืืฆืื ืืืื ืืช ืืื ืื ืืืฆื ืคืืชืื ืืืืงืื ืื ืืฉืชืืฉ ืืชืืืื ืืืืขืืช ืืืคืืคื ืื ื import. ืื ืขืืื ืื ืืืืื ืช ืืื ืขืืื ืืืื ืืืืจ ืฉื ืืฉืจืช ืืื ืืืืื ืช ืืืืื ืฉืื ืืืื ืืืขืื ื ืืืืฉ ืืืืืืช ืฉื ืืงืื ืืขืืื ื.
## ืืคืก ืงืื ืคืืืืจืฆืื
ืืืืฉื ืฉื create-react-app ืืืคืก ืงืื ืคืืืืจืฆืื ืืื ืืืืื: ืื ืืฉืชืืฉืื ื webpack ืืื ืื ื ืืชื ืื ืืื ืืืขืช ืืงืื ืคืืืืจืฆืืืช ืืืืคืืง ืฉืืื. ืื ืืืืืงืื ืืขืจื ืืื ืกืืคื ืฉื Build Scripts ืฉืฉืื ืื ืืคืฉืจ ืืืขืช ืื, ืืื ืชืขืื ืืืืื ืขื ืืฉืื ืฉืื ืื ืชืืืืื ืื ืื ืืฆืขืงื ืขืืืื ืืืืจืงื ืขืืืื ืืืืช ืฉืืจืืช ืฉื ืงืืฆื ืืืืจืืช ืฉืชืชืืืงื ืืขืฆืืื.
ืืืืื ืื ืืืืืฃ ืืช ืืืืคืืง ื Rollup, ืืืขื ืชื ืืฉืืงืืื ืืืืจืืช, ืืื ืืืืจ ืืืฉืื ืืื ืฉืืืฅ ืืขืจืื ืืจืืจืช ืืืื ืืขืืืื ืืื ืื ื ืืชื ืื ื ืืืฉื ืืืืืจืืช ื Rollup ืืืคืืื ืืชืขื ืืช ืื. ืจืืฆืื ืืืฆืืจ ืคืจืืืงื ืขื ืืกืคืจ ืงืืฆื HTML? ืืื ืืขืื. ืจืืฆืื ืืฉื ืืช ืืช ืืื ื ืงืืืฅ ื HTML ืฉื ืืฆืจ? ืืื ืงื ืืขืืื, ืืื ืืืง ืืืคืจืืืงื.
ืืืืืื TypeScript ื Scss ื ืชืืืื Out Of The Box - ืคืฉืื ืืืขื ืื ืงืืืฅ ืขื ืืกืืืืช ืืืชืืืื ืืืื ืขืืื.
ื ืืื, ืื ืื ื ืืืืืืื ืืืื ื ืฉื ES Modules ืืืื ืื ืืฆืืืชื ืืืจืื - ืืื ืืืืื ืืืืื ืฉื ืืืืจืื ื ืจืื ืื ืฉืืืืื ืื ืขืฉื ืขืืืื ืื ืืืื. ืื ืขืื ืืชื ืืืื ืื ืืกืืื ืขื ืืชืืืื ืืืืื ืืช ืืืคืืคื ืื ื ES6 Modules ืคืจืืืงื vite ืืขืืื ืืื ืื ืืื.
(ืืื ืืชื ืื ืฆืจืืืื ืชืืืื ืืืคืืคื ืื ืืฉื ืื ืืฉ ืืื Legacy Plugin ืฉื ืจืื ืฉื ืืชื ืคืืชืจืื).
## ืืืกืื ืืืืืืื ืฉื ืคืื ืงืฆืืืช ืืชืืช
ืื ืืื ืงืื ืคืืืืจืฆืื ืืืืจืื ืืืฉืืืื ืฉื. ืืฉื ืืกืืชื ืืืฆืืจ ืงืืืฅ utils.js ืฉืืืืฆื ืฉืชื ืคืื ืงืฆืืืช:
export function foo() {
return "foo";
}
export function bar() {
return "bar";
}
ืืื ืืงืืืฅ ื main.js ืืขื ืชื ืจืง ืืืช ืืื:
import { foo } from './utils';
ืืฆืคืื ืืคืื ืงืฆืื bar ืืืชื ืื ืืขื ืชื ืื ื ืื ืกื ืืืื ืื ืฉืื ืืชื. ืืื ืื ืืกืคืืง ืืื ืืฉืืื ืืืืฆืจ ืงืืืฅ vendor.js ืืกืคืจืืืช ื node_modules ืืืืืกืืฃ Hash ืืฉื ืืงืืืฅ ืืื ืืืชืืืื ืขื Browser Cache.
## ืคืจืืืงื ืจืืืงื ืืื reportWebVitals
ืจืง ืขื ืืคื ืืื ืืกืคืืง ืื ืืฉืืื ืืืชืืื ืืืฉืชืืฉ ื vite ืืื ืคืจืืืงื ืจืืืงื ืืืฉ ืฉืื ื ืืื ื - ืืื ืื ืืืืืชื ืืช ืืืืชืง ืืืืจืื: ืคืจืืืงืื ืจืืืงื ืฉืชืื ื ืขื vite ืื ืืืืื ืืช ืืกืคืจืื web-vitals ืืื ืืคืขืื ืืช reportWebVitals ืืืืคื ืืืืืืื. ืื ืฉืืฉ ืื ืืฉืื ื ืืื, ืคืฉืื ืืขืืืฃ ืฉืชืื ืืืช ืคืจืืืงื ืืืืื ืจืง ืคืืฆ'ืจืื ืฉืื ื ืืืืช ืืืงืฉ.
## ืืจืืืืช ืืืช: ืืื ืื ืื ืืคืจืืืงืฉื
ืืืจืืช ืื ืืืืจืื ืืืืืื ืืืืื ืื ืืืกืืฃ ืื ืืจืืง ืืืืืื ืืื ื Vite: ืืื ืืืืื ืืฆืืจืช Source Maps ืืืฆื ืคืจืืืงืฉื. ืืืืจื ืืืชื ืื ืจืื ืืฉืคืจ ืืืืจืืช ืื ืื ืืคืจืืืงืฉื ืืืืืฉืื ืืืชื ืฉืืืืื ืืฃ ืืื ืื ืืฉืื ืื, ืื ืืื ืื ืงื ืืืืืืจ ืืช ืื (ืืกื ืืื ืฉืื ืื ืืืืจื ืืงืืืฅ ืืงืื ืคืืืืจืฆืื). ืืขืืืื.
ืืืืื ืืื Source Maps ื reportWebVitals ืืื ืฉื Source Maps ืื ืื ื ืืืืช ืืฉืชืืฉืื ืืคืจืืืงืฉื. ืืฉืืฉ ืืื ืืคืจืืืงืฉื ืฉืื ืืฉืชืืืจ ืืคืืชืื, ืืืื ืขืืืจ ืืคืชืื ืืช ืืื ืืคืืชืื ืืืจืืืช ืืช ืืงืื ืืืงืืจื ืฉืืชืืช.
ืืกื ืืื ืืื ืืืืจื ืฉืืื ืืช ืืืื ืฉืืื - ืืื ืืืืืื ืงืฆืจ ืืืืืืช ืืคืืชืื ืืจืื ืืืชืจ ืืืื ื create-react-app. ืืคืจืืื ื ืืกืคืื ืชืืืื ืืืงืจ ืืืชืจ ืฉืืื ืืงืืฉืืจ:
https://vitejs.dev/1 419
# ืื ืืืืื, ืื ื ืืืืข ืจืืื
ืืืืื ืืืื ืืืืขื ืืืื ืืืงืจื ืืืืืจื:
> ืืืื ืืฉื ืืช ืืช ืกืืจ ืืืกืคืจืื, ืขืืืื ืืืฆืื 3 ืกืืื ื ืืืืืจ ืื ืืืกืืจ ืืื ืืื ืื ืฉืชืงืืื ืืฉืืืื ื ืืื ื:
> 100 = 9 8 7 6 5 4 3 2 1
ืืืจื ืืื ืืงืืช ืฉื Brute Force ืืจืืฉ ืืื ืชื ืฉืขืืืฃ ืืชืช ืืืืฉื ืืฉืืืจ ืืช ืืจืืฉ ืขื ืื, ืืื ืืืืืจ ืื ืืื ื ืขืื ืืืชืื ืงืื ืืจืืื.
## ืืื ืืืฉื ื ืืืฉ ืืืืืช ืฉืืื
ื ืื ืืืชืืื ืืืฉืื ืขื ืืืืื ืืืืช ืืืกืืฃ. ืืคืืชืจืื ืืืื ืืืื ืจืฆืฃ ืฉื 4 ืืกืคืจืื (ืื ืฆืจืื 3 ืกืืื ื ืืืืืจ ืืืืกืืจ ืืื ืืื). ืืืจ ื ืืกืฃ ืฉืืคืฉืจ ืืจืืืช ืืื ืฉืื ืืฉ ืืื ืืื ืืืืฉืื ื ืืืืฉ ืืืงื, ืืืฉื ืืชืืืชื ืขื ืืืกืคืจ 12, ืื ืงื ืืจืืืช ืื ืืืืืื ืืืืืช ืืฆืขืืื ืืืืื. ืืืงืจื ืฉื 12 ืืคืฉืจ ืืืืฉืื ืืืืจืื ืืช ืืืกืคืจ ื 123, ืื ืืืชืืื ืืกืคืจ ืืืฉ ืฉืืืื 3 ืื
-3.
ืืืชืื ืืื ืื ืขืฆืืื ื ืืื ืืืชืื ืืืืงื ืฉืืืืฆืืช ืฉืจืฉืจืช ืฉื ืืกืคืจืื ืืชืืื ืื ืคืื ืงืฆืื ืฉืืืืืจื ืืช ืืืคืฉืจืืืืช ืืฆืขื ืืื. ื ื ืื ืฉืชืืื ืื ืืช ืืฉืจืฉืจืช:
[1, 234]
ืืืืืจ ืคืืืก ืืื ืืื ืคืืืก 234, ืื ืืฉ ืืกื ืืื 3 ืืคืฉืจืืืืช ืืฆืขื ืืื:
[1, 234, -5]
[1, 234, 5]
[1, 2345]
ืืื ืฉืจืฉืจืช ืื-3 ืื ืืืืื ืืืืฉืื ืืืืืคืชื ืืชืืจื ื-3 ืฉืจืฉืจืืืช ื ืืกืคืืช ืืื ืืืื, ืืืฉืจ ืื ืฉืื ืืืงืจื ืืืจืืข ืืืคืื ืคื 3 ืืช ืืกืคืจ ืืฉืจืฉืจืืืช ืืื ืืืจ ืืืื ืื ืืืืืจ ืืฉื ืกืืื ืืช ืื ืืืกืคืจืื.
## ืืืงืื ืืจืืื
ืฉืจืฉืจืช ืชืืื ืืกื ืืื ืกืื-ืฉื ืืขืจื ืฉืืฉ ืื ืคืื ืงืฆืืืช expand ืฉืืืืืจื ืืช ืฉืืืฉ ืืฉืจืฉืจืืืช ืฉืืืืืืช ืืืืฉืื ืืืชื. ืื ื ืืืืืจ ืืช ืืืืืงื ืืืกืคืจ ืคืืงื ืฆืืืช ืขืืจ:
class Chain
attr_accessor :values
def initialize(values)
@values = values
end
def last
@values[-1] || 0
end
def sum
@values.sum
end
def to_s
"Chain: #{values}"
end
end
ืืืคืื ืงืฆืื ืืืขื ืืื ืช, expand, ืืื ืื ืฉืืืงืืช ืฉืจืฉืจืช ืืืืกืืคื ืื ืกืืคืจื, ืื ืืชืืจ ืกืืคืจื ืืืฉื ืืืกืคืจ ืืืืจืื ืืฉืจืฉืจืช ืื ืืชืืจ ืืกืคืจ ืืืฉ:
def expand
return if last.abs % 10 == 9
return if values.length > 4
value = last.abs
next_value = (value % 10) + 1
concatenated_value = (value * 10 + value % 10 + 1) * (last >= 0 ? 1 : -1)
[
Chain.new([*values, next_value]),
Chain.new([*values, -1 * next_value]),
Chain.new(values[0..-2].concat([concatenated_value]))
]
end
ืืขืืงืจืื ืจืืืืงืืค ืืขืก ืขืืื ืฉืืคืื ืงืฆืื ืืกืืืืช ืืื, ืื ืื ืืฉ ืืื ืจืขืืื ืืช Refactoring ืฉืืืคืื ืืืชื ืืคืฉืืื ืืืชืจ ืืขืืืื ืงืจืืื ืืืืื ืื ืืืฉืืืจ ืืชืืืืืช
ืืืืจื ืื ืืืฉืงืขื ืืืืืงื Chain ืืคืฉืจ ืืกืืื ืืช ืืชืจืืื ืขื ืืืืื ืคืฉืืื ืฉืืชืืืื ืขื ืืขืจื ืฉื Chain ืืืื ืืจืืง, ืืืื ืืืืจืฆืื ืืคืขืืื expand ืขื ืื ืืฉืจืฉืจืืืช ืืืขืจื ืืืืคืฉืช ืื ืืกืืื ืฉื ืืืช ืืื ืืื 100:
state = [Chain.new([])]
loop do
state = state.flat_map(&:expand).reject(&:nil?)
if (final = state.find { |chain| chain.values.size == 4 && chain.sum == 100 })
puts final
break
end
end
ืื ืืชืืื ืืช ืืงืื ืคืืืช ื 50 ืฉืืจืืช ืงืื ืืืจืื ืคืืืช ืืื ืืื ืฉืืื ืืืงื ืื ืืืฆืื ืืช ืืฉืจืฉืจืช ืืืชืืืื ื Brute Force ืืจืืฉ.1 419
# ืื ืื ืืืืช ืืืืื ืืื Authorization ื Authentication?
ืฉืชื ืืืืื ืืจืืืืช ืืื ืืืืช ืฉืืชืืืกืืช ืืืืชื ืขืืื ืชืืื ืืื ืืื ืืืช ืืฉืืขืืช ืืืืืืืช ืืฉืื, ืืื ืืืื ืืืชืืืื.
ืฉืชื ืืืืืื ืืชืืืกืืช ืื ืืืื ืืจืฉืืืช ืืืขืจืืืช ืืื. ืืืขืจืืช ืืื ืืฉ ืืืื ืฉื ืืฉืชืืฉืื ืฉืืืืืื ืืืชืืืจ, ืืืื ืืฉืชืืฉ ืืืจื ืืื ืืืื ืืืื ืืืคืขืืื ืืขืืืืืช ื ืืกืคืืช ืขืื ืงืฆืช ืืืืข ืขื ืืืชื ืืฉืชืืฉ.
ืืืืื ืืจืืฉืื ื, Authentication, ืื ืืงืืฆืืจ AuthN (ืื ืื ืืคืฉืจ ืืืืื ืงืฆืช ืื ืืื ืื), ืืชืืืกืช ืืืืืืช ืฉื ืืขืจืืช ืืืืืช - ืขืืืจ ืืงืฉื ืกืคืฆืืคืืช - ืื ืืืฉืชืืฉ ืฉืืื ืืงืฉื ืื. ืื ืืืืืื ืคืฉืืืืช ืื ืืืฉืชืืฉ ืฉืืจืืข ืื ืกื ืืขืฉืืช ืืฉืื ืืืขืจืืช. ืืืฉืื ื ืืืืจ "ืื" ืื ื ืืชืืืื ืืฉืืจื ืืืชืืืื ืืืืืช ืืืฉืชืืฉืื ืื ืืืืื ืืืฉืชืืฉ ืฉืฉืืืจ ืฉื. ืื ืืืื ืืงืืช ืฉื ืืืืื ืื-ืฉืืื, ืืืืื ืืจื ืกืืก, ืืืืื ืขื ืืืืขืช ืืฆืืข ืื ืืคืชืืืช - ืืืื ื ืื ืกืืช ืืชืื ืืขืืื ืฉื Authentication. ืืช ื Authentication ืื ืงื ืืืกืืช ืืืืฆืื ืืืืฆื ืืกืจืืืก ืื ืืขืจืืช ืืืฆืื ืืื, ืืืืืื ืืฉืชื ืกื ืืืชืืืจ ืืืืืืฉืื ืืขืจืืช ืฉื ืืืื ืงืืื ืชืฆืืจืื ืืืฆืข ืืืืืืช ืืื accounts.google.com ืืื ืืืืื "ืื" ืืชื.
ืืืืื ืืฉื ืื, Authorization, ืื ืืงืืฆืืจ AuthZ, ืืชืืืกืช ืืื ืืืชืจ ืื ืืกืืจ ืืืฉืชืืฉ ืืขืฉืืช. ืืืืืื ืืืจืืช ืืืื ืชื ืฉืขืืฉืื ืืืฉื ืืืื ืืฉืชืืฉ ืืืฉ ืื ืขืืื ืืช ืื ืืืืืข ืืืืืช ืืืฉืชืืฉืื - ืืื ืืืชืจ ืื ืืกืืจ ืื ืืืฆืข ืืช ืืคืขืืื ืฉืืื ืจืืฆื ืืขืฉืืช.
ืืืื Authorization ืืืืืื ืืืืืช ืืืืืขืื ืืงืื ืื ืืคืืจืฉืื. ืืืืื ืืืืืขืื ืื ืคืฉืื ืชืืฆืื ืฉื ืืงืื ืฉืื ืื ื ืืืชืืื. ืืืืืื ืงืื ืืืกืื ืืื ืืืื ืืืื Authorization ืืืืืขืื:
exports.getTasks = function(user) {
mongoClient.collection('tasks').find({ owner: user }).toArray();
}
ืืคืื ืงืฆืื ืืงืืืช ืืืื ืืฉืชืืฉ ืืืืืืจื ืืช ืื ืืืฉืืืืช ืฉื ืืืชื ืืฉืชืืฉ, ืืืื ืืื ืืืืจืช ืืฉืื ืขื ืื ืืืชืจ ืื ืืกืืจ ืืืฉืชืืฉืื ืืกืืืืื ืืขืฉืืช. ืืื ืืื ืืืืจืช ืืช ืื ืืฆืืจื ืืืืืขืช - ืืืืกืืช ืงื ืืฉืื ืื ืขืชืืื ืฉื ืืงืื ืืืขืืช ืืืื ืืช ืืืืืงื.
ืืืื Authorization ืืืืืื ืืืืืช ืื ืืคืืจืฉืื, ืืืืืื ืืช ืืืชื ืคืื ืงืฆืื ืืืืชื ืืืชืื ืื:
exports.getTasks = function(user) {
const tasks = mongoClient.collection('tasks').find({ owner: user }).toArray();
authorize(user, 'read', tasks);
return tasks;
}
ืืช ืืคืื ืงืฆืื authorize ื ืฆืืจื ืืืชืื ืืืงืื ืืืจ ืืฆืืจื ืืกืืืจืช, ืืืฉ ืื ืืขื ืคืจืืืืืืจืงืื ืฉืืขืืจื ืืื. ืื ืงืืื ืืืฉืืื ืืื ืืื ืฉืืืฉื ืื ืืืคืืช ืืช getTasks, ืืืช ืืงืื ืืืืคื ืืืื, ืืืจืื ืืืชืจ ืืืืืื. ืื ืื ืืขืชืื ืืืฉืื ืืืขืืช ืืฉื ื ืืช ืืฉืืืืชื, ืขืืืื ืืคื ื ืฉื ืืืืจ ืืช ืืืืืข ืื ืื ื ืืืืืืื ืฉืืืฉืชืืฉ ืืืชืจ ืืืื ืืงืจืื ืืืชื.
ื Node.JS, ืืกืคืจืื passport ืืกืคืงืช ืืจื ืคืืคืืืจืืช ืืืฆืข AuthN. ืืกืคืจืื cancan ืืกืคืงืช ืคืืชืจืื Authorization ืืืืฉืืื ืืื, ืืื ืืื ืืจืื ืคืืืช ืคืืคืืืจืืช ื Passport. ืืืื ืื ืืจืื ืื ืฉืื ืืขืืืคืื ืืื ืืช ืคืืชืจืื ืืื ืืขืฆืื.1 419
# ืื ื ืืฉื
"ืืื ืืื ืคืจืืืื ืกืจ 5 ืฉื ืื, ืื ืื ื ืืฉื ื ืืกืืื"
"ืืื ืืชืื 8 ืฉื ืืช ื ืืกืืื, ืืื ืชืื'ืก ืจืง 2 ืืชืืื ืืืืจื ืจืฆืื ืืช. ืืฉืืจ ืื ื ืืฉื"
"ืคืืืช ื-500 ืืืืื? ืื ืื ื ืืฉื ืคืืกื"
"ืงืืจืก ืคืืืชืื ืืื ืคื ืืก? ืื ืื ื ืืฉื"
"ืื ืืคืจืื ืืื ื ืืื ืื ืืืืช ื ืืฉื ืชืื ืืช"
"ืืชืืช ืืื ืฉ 90% ืืืืชืื ืชืื ืืืืื ืืฉืชืืฉืื? ื ื, ืื ืื ื ืืฉื ืื ืืชื ืื ืืืื ืื ืืืคืื ืขืฅ ืืื ืืจื"
ืืกืื ื ืืื ืฉื ื"ืื ื ืืฉื" ืืื ืฉืืืืื ืืื ืืื ื ืชืืื ืืืงืฉืื ืืื. ืื ื ืื ืืืืข ืื ืืขืืื ืืฉืืืืื, ืืืืื ืฉืืื, ืืชืขืฉืื ืฉืืื, ืืกืืืื ืฉืืื - ืืชื ืชืฆืืจืื ืืืืืช ืืช ืื ืืื. ืื ืืืื ืืขืฉืืช ืืช ืืืืื ืืืชืจ ืงืฉืื ืืื ืฉืื ืืืืืกืืฃ ืืืืืืช ืืืืืืชืืืช. ืื ืื ืืชืืื ืืื ืืืงืื ืืชืื, ืื ื ืืฉื.
1 419
# ืืืืจืื ืืงืื ืื
ืืื ืกืคืง ืฉืคืืชืจืื ืืจืื ืืืืขืืืช ืืงืื ืืืจืฉ ืืืฉืื, ืืืืื ืืช, ืืฆืืจืชืืืช, ืืืืจืืช ืขื ืขืืื ืืชืืื ืืฉืื ืืืืื ืืืืช ืฉื ืืชืื ืชืื ืืืืื. ืืื ืืจืื ืคืขืืื ืืืืงื ืืืืจืื ืืงืื ืื ืื ืืื ืฉืืืืืื ืืฉื ืืช ืืช ืืืืื ืฉืื ื ืืืื ืืื.
ืื ื ืืืืื ืืฉืื ืื ืงืื ืคืฉืื ืืกืื ืื. ืืื ืื ืคืจืืืงื knex ืื ืืื ืืืื ืืืกืืก ืื ืชืื ืื ืืื ืงืืืฅ Repository ืฉืืื ืงืื ืืคืขืืืืช ืืกืืกืืืช ืขื ืืืืื. ืืืืืื ืขืืืจ ืืืื ืืืืืืื ืช ืฉื ืืฉืืืืช ืืื ืื ื ืงืืืฅ ืฉื ืจืื ืืขืจื ืื:
function create(db, task) {
return db('tasks').insert(task).then(([createdId]) => ({ ...task, id: createdId }));
}
function select(db, ...columns) {
return db('tasks').select(columns);
}
function destroy(db, task) {
return db('tasks').where('id', task.id).del();
}
function update(db, which, what) {
return db('tasks').where('id', which.id).update(what);
}
module.exports = { create, select, destroy, update };
ืื ืฉืื ืืืื ืืช ืื ืื ืืชืืื ืืช ืืจืืฉืืช ืืืืช ืืืื ืืืชืื ืืืจืื ืืื:
const newTask = await tasks.create(db, { text: 'new task', done: false });
await tasks.update(db, newTask, { done: true });
console.log(await tasks.select(db, '*'));
await tasks.destroy(db, newTask);
ืืื ืืืขืื ืฉืื ืื ืฉืจืฆื ืืืืกืืฃ ืืืื ืืืฉื ืืื ืฆืจืื ืืืชืื ืื ืงืืืฅ Repository, ืืืืขื ืืืื ืืืื ืืช ืืืชื ืคืขืืืืช ืืกืืกืืืช, ืื ืืกืฃ ืืคืขืืืืช ืกืคืฆืืคืืืช ืฉื ืืืชื ืืืื.
ื Refactoring ืืืงืจื ืืื ืืื ืงืกืื ืืื ืฉืืื ืคืฉืื. ืืืฆืจืื ืงืืืฅ ืืื ืืฉื repo.js ืขื ืืงืื ืืื:
module.exports = function(name) {
function create(db, item) {
return db(name).insert(item).then(([createdId]) => ({ ...item, id: createdId }));
}
function select(db, ...columns) {
return db(name).select(columns);
}
function destroy(db, item) {
return db(name).where('id', item.id).del();
}
function update(db, which, what) {
return db(name).where('id', which.id).update(what);
}
return { create, select, destroy, update };
}
ืืขืืฉืื ืื ืฉืจืืฆื ืจืง ืืช ืืคืขืืืืช ืืืกืืกืืืช ืืกืชืคืง ืืฉืืจื ืืืช:
module.exports = require('./repo')('tasks');
ืืื ืื ืฉืฆืจืื ืืืชืจ ืืืื ืืงืืช ืืช 4 ืืคืขืืืืช ื repo ืืืืืกืืฃ ืขืืืื ืคืขืืืืช ืืืฉืืช.
ืืื - ืืืืืื ืฉืื ืขืืจื ื ืืงืื. ืืคืจืืืงื ืืืืชื ืืืืืจ ืืงืืฆืื ืืชืฉืชืืช ืืืช ืืืจืฉ ืืืชืจ ืขืืืื ืืชืืื ืืืื ืืืชืจ ืืกืืื ืืืชืืืช ืงืืืฅ ืืื ื ืืกืฃ. ืืขืืืื, ืืกืคืืง ืื ืืื ืืื ืฉืืืจืื ืืืืฉ ืืช ืืชืฉืชืืช ืืื ืฉืื ืืืขืจืืช ืชืืื ืืืชืจ ืืืจ.1 419
# ืชืื ืืช ืืื ืื ืืืืืืจ
ืชืื ืืช ืืื ืื ืืืืืืจ ืงืืจื ืืฉืืฉ ืื ืขืจืืื ืฉื ืงืื ืฉืืชื ืื ืืืื, ืืืชื ืฆืจืื ืืืืกืืฃ ืืงืื ืืื ืคืืฆ'ืจ ืื ืืชืงื ืื ืืื. ืืืฆื ืืื ืื ืื ื ืืืจืงืื ื ืงืืืืช ืขืฆืืจื ืืื ืฉืืืื ืืืจืง ืจืฉืชืืช ืืืื, ืืืงืืืื ืฉืืืช ืื ืงืืืืช ืืขืฆืืจื ืชืชืคืืก ืืฉืื ืฉื ืจืื ืืื ืืืขืื. ืืจืืข ืฉืชืืคืกืื ืืช ืืืื ืื ืื ื ืืืืืื ืืืงืื ืฉื ืจืื ืื ื ืื ื ืืื ืืืืกืืคืื ืฉื ืืืื, ืืชืงืืื ืื ืืฉืืืจ ืงืื ืืกืืื.
ืืืช ืืืขืืืช ืขื ืชืื ืืช ืืื ืื ืืืืืืจ ืืื ืฉืื ืฉืืืช ืขืืืื ืฉืืฉืืืื ืืช ืขืฆืื.
ืืฉืืชืื ืชืื ืื ืืืื ืื ืืช ืืืขืจืืช ืขื ืืกืืฃ, ืื "ืชืืงืื" ืืื ืืก ืขืื ืืืืื ื ืกืชืจืื ืื ืืืฆืจ ืงืฉืจืื ืืืฉืื ืืื ืืงืืืืช, ืืืืืจื ืืื ืืื ืฉืืืืืื ืืฆืืืจืื ืืงืื ื ืืคื ืืืจืื ืืืชืจ ืงืฉื ืืืื ื ืืชืืืืงื. ืคืื ืงืฆืื ืคืฉืืื ืฉื 4-5 ืฉืืจืืช ืืืืื ืืงืื ืืืื ืฉืืืกืืฃ ืื ืขืื 3-4 ืฉืืจืืช, ืืื ืืื ืืืืฉืื ืืืจื ืื ืขืื ืืืื ืืื ืืฉื ืชืืื ืืืจื ืื ืื ืื ื ืืืืจ ืฉื 300 ืฉืืจืืช ืขื ืืื ืกืืฃ if-ืื ืืงืื ื ืื ืฉืื ืืื ืืืคื ืืืงืจื ืงืฆื ืืืื ืกืคืฆืืคื.
ืืขืื ืฉื ืื ืขื ืชืื ืืช ืืื ืื ืืืืืืจ ืืื ืฉืฉืื ืื ืืืฉื ืืืืช ืืืงื ืืืื ืืื. ืืชืื ืชืื ืฉืจืืฆืื ืืืชืืื ืืชืงื ืงืื ืืืืฉื ืฉื Refactoring ืืชืื ืืื ื ืืขืืืงื ืฉื ืืงืื ืืฉื ืืืื ื ืืจืฉืื ืงืืื ืืงืื ืืื ื ืืขืืืงื ืฉื ืืงืื, ืืืืขืจืืืช ืืืืืืช ืื ืืืื ืืงืืช ืืืืฉืื ืืืคืืื ืฉื ืื. ืื ืื ื ืื ืฆืจืืืื ืชืฉืชืืช ืืืืงืืช ืืืื ืืื ืฉื ืืื ืืืขืช ืื ื Refactor ืฉืื ืื ื ืืฆืืขืื ืฉืืืจ ืืืจืื ืืืงืืืืช ืืืจืื ืืืขืจืืช. ืขืืืจ ืื ืืฉืืืจ ืืช ืืืขืจืืช ืืืืงืื ืืืชืจ ืงืื ืื ืืืืฉื ืฉื Micro Services, ืืืืืื ืืฉืืืืืจ ืขื ืืขืจืืืช ืฉืืืจ ืืืืืืจ ืืืขื ืขืฉืืจ ืืืกืคืจ ืฉืืจืืช ืืงืื ืฉืืื ื ืกืคืจ ืืืืืืื ืื.
ืื ืืืืืืืจ ืืื ืืื ืืขืืื ืื ืืืคืื ืืช ืืงืื ืฉืืื ืื ืกืื. ืื ืชืื ืืช ืืืืกืก ืืืืืืจ ืืื ืืืจื ืืืืืื ืืคืชืืจ ืืขืื, ืืืืข ืืืื ืืืชืืื ืืืฉืื ืขื ืคืืชืจืื ืืช ืืืืชืืื ืืืืื ืืจืืืง.
1 419
# ืคืืืง
ืฉืืืช ืชืจืืื ืคืืคืืืจืืช ืืงืืจืกืื ืืืงืฉืช ืืืชืืืืืื ืืืืืจ ืืกืคืจ ืืืชืื ืขืฉืจืื ื ืืกืคืจืืช ืจืืืืืช. ืื ืืชื ืื ืืืืจืื ืืช ืฉืืืช ืืกืคืืจื ืืจืืืืช ืงืื ืืื ืจืืขืื ืืืืื ืก ืืืื ืง. ืื ื ืืืื.
ืืชืจืืื ืืื ืคืฉืื ืืขืืืจ ืืืชืืื ืขื ืคืขืืืืช ืืืืืง ืืืกืคืจืื ืฉืืืื ืืฉืืจืืช. ืื ื ืืฉืืจ ืจืง ืขื ืืืกืคืจืื ืืงืื ืื ื-40 ืืคืฉืจ ืื ืกืืช ืืช ืืคืืชืจืื ืืื:
symbols = (
[10, 'X'],
[5, 'V'],
[1, 'I' ]
)
def convert_to_roman(number):
result = ''
for i, r in symbols:
result += r * (number // i)
number = number % i
return result
ืงืื ืืืืืงื ืืื ืืฉืชืืฉ ืืคืืชืจืื ืืืจืื ืฉืืื ืขืืื ืืคืืืช ืขื 5 ืืกืคืจืื:
result = {
28: 'XXVIII',
12: 'XII',
6: 'VI',
32: 'XXXII',
21: 'XXI',
}
for k, v in result.items():
if convert_to_roman(k) != v:
raise Exception(f"Conversion failed for {k}. Expected: '{v}'; Got: '{convert_to_roman(k)}'")
print("All OK")
ืืื ืืฉื ื ืกื ืืืคืขืื ืืช ืืืืจื ืขื ืืกืคืจ ืืื 19 ื ืงืื ืฉืืืื. ืืืืจื ืื ืืื ื ืฉื 19 ืืกืคืืจื ืจืืืืช ืืื XIX ืืื ืืฆืื ื ืืื ืืืคืืข ืืชืืจ XVIIII. ืืื ืืชืงื ืื?
ืืืืื ืืื ืืืื ืืืืืช ืื ืกืืช ืืฉืื ืข ืืช ืืืืฉื ืืืืืง ืื ืืื ื ืืคืฉืจืืืืช ืืื ืืช ืืช ืืืกืคืจืื, ืืืืชืื ืืช ืืงืื ืฉืืืื ืฉ 19 ืืื 20-1 ืืืืืง ืืื ืฉืืื 15+4 ืืื ืฉ 20-1 ืืืชืจ ืงืฆืจ ืืืชืืื ืืืื ืืืื ืืืืืจ ืืื.
ืืืืื ืืืชืจ ืงื ืืื ืืจืืืช:
symbols = (
[10, 'X'],
[9, 'IX'],
[5, 'V'],
[4, 'IV'],
[1, 'I' ],
)
ืื ืืืืช ืืกืืืื ืฉืื ืืืืืช ืื ืืช 9 ื-4, ืื ืืฉืืคืื ืงืฆืื ืชืชืงื ื 19 ืืื ืงืืื ืื ืชืืงื ืืช ื 10 ืืชืืคืื ืืืชื ื X, ืืื ืืช ื 9 ืฉื ืฉืืจ ืชืืคืื ื IX. ืืคืื ืงืฆืื ืื ืืกืคืืง ืืืื ืืฉืืื ืืืืื ืฉ 9 ืื ืขืฉืจ ืคืืืช ืืื, ืืื ืื ืื ืฆืจืืื ืืืืืช. ืืช ืืืืืื ืืคืฉืจ ืืืฉืืืจ ืืจืืืืื.1 419
# ืืคืื ืงืฆืืืช map ื filter ืืืืืืงืืื ื JavaScript
ืืคืื ืงืฆืืืช Object.entries ื Object.fromEntries ืื ืกืื ืฉื ืืืฆืจ ืืื ืื ืฉืืืื ืชืื ืืช ืคืื ืงืฆืืื ืืื ื JavaScript ืื ืื ืืืคืฉืจืืช ืื ื ืืกืืืจ ืืช ืืคืขืจ ืืื ืืืืืงืืื ืืืขืจืืื.
ืืืขืจืืื ืืคืื ืงืฆืืืช map ื filter ืืืืขืืช ืืืื ืืช ืขื ืืืขืจื, ืื ืฉืื ืืฉ ืื ืจืฉืืื ืฉื ืืกืคืจืื ืื ื ืืืื ืืงืืืช ืืงืื ืืช ืจืืืืขื ืืืกืคืจืื, ืื ืืช ืจืืืืขื ืืืกืคืจืื ืืืืืืื ื 50:
const numbers = [5, 6, 7, 8, 9, 10];
const squares = numbers.map(x => x * x);
const largeSquares = numbers.map(x => x * x).filter(x => x > 50);
ืืื ืื ืืืื ืืืืืงืืื? ืืืจื ืืงืื ืืืคืขืื map ื filter ืขื ืืืืืงืืื ืืื ืืืคืื ืืืชื ืืืขืจืืื, ืืืคืขืื ืืช ืืืืืืงื ืืื ืืืืืืจ ืืืจื ืืืืืืงืืื.
ืืืืืื ืงืื ืืืืืงื ืงืื ืคืืืืจืฆืื ืฉืืืืืจ ืืกืคืจ URL-ืื ืืฉืืืื ืืืืฉืื:
const urls = {
google: 'http://www.google.com',
ddg: 'http://www.duckduckgo.com',
bing: 'http://www.bing.com'
}
ืืขืืจืช Object.entries ื Object.fromEntries ืื ื ืืจืืฅ ืืงืืืช ืืจื ืกืคืืจืืฆืืืช ืขื ืืืืืืงื. ืืืฉื ืืฉืืื ืืืคืื ืืช ืื ื URL-ืื ื https ืืืืืชืจ ืขื ืื ืื ืืข ืืืคืืฉ ืฉืืฉื ืฉืื ืืจืื ื-4 ืืืชืืืช ืื ื ืืจืืฅ:
Object.fromEntries(
Object.entries(urls).
map(([key, value]) =>
[key, value.replace('http://', 'https://')]).
filter(([key, value]) => key.length < 5))
ืืืงืื ืืืจื:
{ ddg: 'https://www.duckduckgo.com', bing: 'https://www.bing.com' }
ืื ืื ื ืืืืืื ืืืชืื ืฉืจืฉืจืืืช ืืจืืืืช ืืื ืฉื ืจืฆื ืฉื map ื filter, ืื ืขืื ืืงืคืืืื ืฉ map ืชืืื ืืืืืจ ืืืืืช ืฉื ืืคืชื ืืขืจื.1 419
# ืื ืืื ืฉื ืืคื ืื
ืืืืื ืืช ืืืืขืช ืืืชืจ ืืื ืฉืืืข ืืืชืื ืช ืฉืืชื ืืช ืื ืืืงืืจ?
ืืืืื ืืช ืจืืื ืืืชืจ ืืืจืื ืืื ืฉืืื ืจืื?
ืืืืื ืืืขืจืืช ื ืืฆืืช ืืืื ืืืฆื ืืืจ ืืื ืฉืืืชื ืืฉืืงืื ืืื ื ืืชื ืืืงืืจ?
ืืืืื ืืช ืืืชืจ ืื ืืกื ืืื ืฉืืื ืืื ืืฉืืื ืืชื ืืช ืื ืืืงืืจ?
ืืืืื ืืืื ืืงืืื ืืขืฉืืช ืืืจืื ืืืจืช?
ืืืืื ืืฉืืงืื ืืืคืืข ืืืงืื ื ืืกืฃ ืืคืฉืจ ืืืื ืืืชืื ืืืชื ืืฆืืจื ืื ืจืืช ืืืชืจ?
ืืฉืืช ืืฉืืคืืช ืืช ืืงืื ืฉืืื ืฉื ืงืืื ืืื ืืคืชืืจ ืืขืื ืืืฉื ืืช ื ืืชื ืช ืื ืืืชืืช, ืืืชืืช ืฉื ืืื ืืขืืฉืื, ืืืชืืช ืฉืืืืจืช "ื ืืื ืืขืืฉืื ืืืช ืืืืฉื ืืื ืืืื ืืขืฉืืช ืืืจืื", ื"ืื ืืืืชื ืืชืืืื ืืืืฉ ืืืงืื ืืืฉื ืื ืืื ืฉื, ืขืืืื ืืืืชื ืืืชืืช ืืืชื ืืืืืง ืืืืชื ืฆืืจื".
ืืฉืืช ืืขืชืืงื ืืช ืืงืื ืืืฉื ืืืงืื ืืืฉ ืืช ื ืืชื ืช ืฆืืื 100 ืืงืื ืืืฉื. ืืช ืืืืื ืฉืื ืืืืข ืื?
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
