ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+27 kunlar
-230 kunlar
Postlar arxiv
1 419
# ืืืฆืืขืื ืืฉืคืืช ืืืืจื ืืืช
ืืืืืจืืชื Fisher-Yates ืืขืจืืื ืืขืจื ืืฆืืข ืืืฆืข ืืช ืืฆืขืืื ืืืืื:
1. ืืืจื ืืื ืืงืก ืืงืจืื ืืืขืจื.
2. ืืืงื ืืช ืืืืืจ ืืืื ืืงืก ืฉืืืจืชื ืืืชืื ืืืชื ืืกืืฃ ืืจืฉืืื.
3. ืืืฉืืื ืขื ืฉืืืงืชื ืืช ืื ืืืืืจืื.
ืื ืืืืืจืืชื ืืืื ืื ืืงื ืืืืืืฉ ืืื ืฉืคื, ืืืืืื ื JavaScript:
function shuffle(arr) {
let end = arr.length;
while (end >= 0) {
const nextIndex = Math.floor(Math.random() * end);
arr.push(arr[nextIndex]);
arr.splice(nextIndex, 1);
end -= 1;
}
return arr;
}
ืืืขืื ืฉืืืขื ืืื ืืฉืื ืื ืืชืืชื ืงืื ืืจืื ืคืืืช ืืขืื ืืื ืฉืืื ืืคืฉืจ ืืืชืื. ืืืืืงื ืขื slice ืืืจืืื ืืช ืืืืฉื ืืืขืชืืง ืืช ืื ืืขืจืืื ืืืขืจื ืืงืื ืืื ืืืืจื, ืื ืฉืืืจื ืืืืื ืขืืืื ืืืืชืจืช. ืืืงืื splice ื push ืืืืืฉ ืืืืจื ื ืฉื ืืืชื ืืืืืจืืชื ืืฉืชืืฉ ืืืืืคื:
function shuffle(arr) {
for (let i=arr.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * i);
const item = arr[i];
arr[i] = arr[j];
arr[j] = item;
}
return arr;
}
ืืื ืฉืืืืคืกืงืจืืคื ืขืืืจ ืื ืืืชืื ืงืื ืฉืื ืืืขื ืืืืคืืกืื, ืืืื ื ืืื ืืงืื ืฉืคืช ืชืื ืืช ืื ืชืืกืฃ ืืืคืืคื ืฉืขืืืจ ืืฉืื ืื ืืืขืืืช ืืืฆืืขืื ืืงืื ืื ืืขืื. ืขื ืฉืืืฆืืื ืืื, ืฉืืื ืืฉืื ืื ืืขืืืช ืฉื ืคืขืืืืช ืืกืืกืืืช ืืงืื - ืืืืชืจืื "ืืืจืื" ืืช ืืขืืืช ืืืืืชืืช ืฉื ืืืชื ืคืื ืงืฆืืืช ืืกืืกืืืช.1 419
# ืืืืขืืช ืฉืืืื ืืืขืืช
ืฉืืืื ืืชืืื ื ืืืคืืกื ืื ืืช ืืืืืขื ืืืื ืืืื:
Permissions should be u=rwx (0700).
ืืืืคืกืช ืืืืขืช ืฉืืืื ืืืฉืชืืฉืื ืฉืืื ืืฉืื ืื ืฉืื ืื ื ื ืืชื ืื ืืื ืืืจืืืช ืืืืืงืืช ืืื ืืชืงื ืืช ืืฉืืืื ืืืืืฉืื ืืืื. ืื ืื ืืืฆื ืืฉืืืื ืืืืืืงืช. ืื ืื ื ืืืงื ืงืืืฅ ืฉืืฉ ืื ืืจืฉืืืช ืื ืืชืืืืืช ืืืฉื:
$ ls -l b.txt
-rw-rw-r-- 1 ubuntu ubuntu 0 Nov 16 12:39 b.txt
ืืืจืืฅ ืืช ืืคืงืืื:
$ chmod u=rwx b.txt
ืืืจืฉืืืช ืขืืืื ืืืื ืื ืืชืืืืืช:
$ ls -l b.txt
-rwxrw-r-- 1 ubuntu ubuntu 0 Nov 16 12:39 b.txt
ืืืขืฉื ืืคืฉืจ ืืืกืืง ืืืืืขืช ืืฉืืืื ืฉืชื ืคืงืืืืช ืฉืื ืืช ืืืจืืฅ - ืืืืช, chmod u=rwx, ืชืฉื ื ืจืง ืืช ืืืจืฉืืืช ืืืขืืื ืฉื ืืงืืืฅ; ืืฉื ืื, chmod 0700, ืืืืช ืชืืจืื ืื ืืช ืืืจืฉืืืช ืืื ืืืืจืื.
ืืืืขืช ืฉืืืื ืืืื ืืืชืจ ืืืชื ืืฆืืื ืฉืชื ืืคืฉืจืืืืช ืฉืงืืืืช, ืืืฉื ืืื ืขืืืฃ ืืืชืื:
Permissions should be a=,u=rwx (0700).
ืื ืืคืืื:
Permissions should be u=rwx,g=,o= (0700).
ืืืืขืืช ืฉืืืื ืืืืืช ืฉืืืช ืืื ืืืืืืืช ืืืกืื ืืืฉืชืืฉืื ืฉืืื ืืื ืืืื ืจืืฉ. ืืืจืืช ืฉืืืชืืืช ืงืื ืื ืื ื ืืืืืื ืืืืืื ืฉืฉืืืืืช ืื ืงืืจืืช ืืฃ ืคืขื, ืืฉืงืขื ืืืืืขืืช ืฉืืืื ืืืืืช ืชืืื ืืฉืชืืืช.1 419
# ืืื ืืช ืงืืจืืช "ืืขืืช"?
ืืจื ืืืช ืืฉืคืจ ืืช ืืงืื ืฉืื ื ืืื ืืืืื ืื ืื ืืืืจ ืืืชืื ืงืื ืืจืืข, ืื ืื ืืืืจ "ืืขืืช", ืื ืืื ืงืื ืืจืืข ืืฉืืืืื-
1. ืืื ืงืื ืืจืืข ืืื ืงืื ืฉืื ืขืืื? ืื ืฉืื ืงืื ืขืืื ืืืื ืืืืืช ืืจืืข?
2. ืืื ืงืื ืืจืืข ืงืฉืืจ ืืืืฆืืขืื ืคืืืช ืืืืื, ืื ืฉืืืื ืืืืืช ืฉืงืื ืืืื ืื ืืืืจ ืืื ืื ืืื?
3. ืืื ืงืื ืืจืืข ืงืฉืืจ ืืื ืฉืืกืืืื? ืืื ืงืื ืืืื ืืืืืช ืืื ืื ืืื ืื ืืืืงืืช? ืื ืืื ืื ืชืืขืื?
4. ืืื ืงืื ืืจืืข ืืืื ืงืฉืืจ ืืืืืืช ืืืจืืื ืืืชื? ืืืื ืงืื ืืจืืข ืื ืงืื ืฉืงืฉื ืืืืกืืฃ ืืืื ืคืืฆ'ืจืื ืืกืืืืื? ืืฉ ืคืืฆ'ืจืื ืฉืืฉืืืื ืชืฆืืจืื ืืืฉ ืืฉืืชื ืืืงืื ืืืืืื ืืืงืื?
5. ืืื ืงืื ืืจืืข ืงืฉืืจ ื Best Practices ืืืกืื ืื ืืชืืื? ืงืื ืืจืืข ืืื ืงืื ืฉืื ืืชืื ืืคื ืกืื ืืจืืื ืืกืืืืื? ืืืื ืกืื ืืจืืื ืืื? ืืืื ืกืื ืงืื ืงืฉื ืืื ืืงืจืื?
6. ืืืืื ืื ืื ื ืงืืจืืื "ืืจืืข" ืืงืื ืฉืื ืืืคื ืืืงืจื ืงืฆื? ืงืื ืฉืื ืืืืข ืืืชืืืื ืขื ืจืฉืช ืืืืืช ืื ืงืืฆืื ืฉืื ื ืืฆืืื ืืืคื ืฉืื ืฆืจืืืื ืืืืืช? ืงืื ืฉืืืื ืืขืืืช ืืืืื?
ืืืืื ื ืืฉ ืืื ืืืืืฆืื ืืืื "ืงืื ืืื", ืงืื ืืื ืื ืงืื ืฉืื ื ืืืื ืืืืกืืฃ ืื ืคืืฆ'ืจืื ืืงืืืช ืืื ืืฉืืืจ ืืืจืื ืืืจืื, ืฉืขืืื ืืืจ, ืฉืงื ืื ืืงืจืื ืืืชื ืืืชืงื ืื ืืืืื. ืืื ืื ืืื ืืืืืจืื ืืืืืืจ. ืืฉืืื ืืืชืงืื ืืืืืื ืงืื ืืื ืขืืืฃ ืืืืืช ืกืคืฆืืคืืื. ืืคืขื ืืืื ืฉืืชื ืฆืจืืืื ืืื ืืช ืคืืฆ'ืจ ืฉืืื ืืช ืขืฆืืื ืืืื ืืืจืื ืืงืื ืืืคืื ืืืชื ืืืืฉ ืืจืืข (ืืขืื ืืื ืืืืขืจืืช ืฉืืื)? ืืืื ืกืืื ืืขืืืช ืืชื ืืืฉ ืื ืืืื ืื ืืจืืืช ืืงืื?
ืื ืืืืืื ืื ื ืืืชื ืืคืืืงืฆืืืช ืืืืืื ืืขืืืจื ืืขืืืจ ืืืงืืืืช ืฉืื ืื ื ืืืืข ืฉืืืืจ ืืื ืืจืืข ืฉืืืื ืืงืจืืช ืื ืฉืืืคืืืงืฆืื ืชืชืจืกืง ืืืืฆืข, ืื ืื ื ืืืื "ืืฉืื" ืืงืื ืืคืื ืื ืงืฆืช ืืืชืจ ืืจืื ืืืืื ืฉืื ื ืืงืคืื ืืืคื ืืื ืืงืจื ืืงืฆื ืืืคืืื ืืืืื ืืื ืคืขืืื ืฉืืืจืื ืื ืืื ืฉืื ื ืืืฉื ืฉืื. ืืขืืืช ืืืช ืื ืื ื ืืคืืชืื ืกืืืจื-ืืค ืืขืืืื ืื ืืืื ืื ืืืงืืืืช ืฉืื ืจืืฆืื, ืื ื ืืืื ืืืื "ืืฉืื" ืืืชืจืกืงืืืืช ืืื ืคืขื ืืฉืืื ืฉืืืื ืื ืงื ืืืืกืืฃ ืืืืืจืื ืคืืฆ'ืจืื ืืืขืืื ืืช ืืืืฉืง ืืืืื ืืืืจ.
ืื ืืคืฉืจ ืืงืื ืืื, ืืืคืืื ืืืขืจืืืช ืืืืืืช ืืฉ ืืขืืืช. ืืื ืืฉืื ืื ื ืืืืขืื ืืืืืืจ ืืฆืืจื ืืจืืจื ืืช ืืืืจืืช ืฉืื ื ืืคืฉืจ ืืืืฉืื ืืืชื. ืืคืืืช ืืงืื.
1 419
# ืฉืชื ืืจืืื ืืืืืช ืืืืช ืื ืืืฉ ืืื ืืืืคืืก ืืืจื ืฉืืจื ืืืื ืืงืก
ืืฉ ืืื ืชืืื ืืช ืฉืืืืฆืจืช ืคืื ืืืชื ืฆืจืืืื ืืืืืช ืื ืืืืจื ืฉื ืื ืฉืืจื ืืคืื ืืืืืคืืก ืืช ืืืืจื ืืคื ื ืืฉืืจื ืขืฆืื. ืืื ืขืืฉืื ืืช ืื? ืื ื ืฉืืืฉื ืจืขืืื ืืช:
## ืืคืฉืื: awk
ืืืื ืืจืืฉืื ืฉืงืืคืฅ ืืจืืฉ ืืื awk, ืฉืืืจืืช ืฉืืื ืืืืข ืืืืื ืืืชืื ืืช ืืฉืืจื ืืืืืื, ืืคืฉืจ ืืืฉืชืืฉ ืื ืื ืืฉืืื ืืืฆืข ืคืขืืืืช ืขื ืืฉืืจื ืืืืื. ืืคืงืืื ืชืืื:
ls -l | awk '{print length($0) " " $0 }'
## ืืงืจืืคืื: perl
ืืืจื ืฉืืชืืชื ืืช ืื ื awk ื ืืกืืชื ืืืฆืื ืขืื ืืืื ืฉืชืืืืื ืืชืืืืจ ืืืื. ืืืื ืจืฆืืชื ืืช sed ืืื ืื ืืฆืืชื ืืื ืืืฉื ืฉื ืืช ืืืจื ืืฉืืจื. ืคืจื ืืืชื ืืืืืจื ืืืื:
ls -l | perl -nl -e 'print(length($_) . " $_")'
ืื ืงืฆืช ืืืชืจ ืืจืื ืื awk ืืื ืขืืื ืืืืคืฉืจ ืืืชืจ ืืืืฉืืช ืื ืืขืชืื ื ืฆืืจื.
ืืืื ืืื ืฉืืืคืฉืื ืืื ืืืชืจ ืืืืจื ื ืืืืืื ืชืืื ืืืืืืฃ ืืช ื perl ื ruby:
ls -l | ruby -nl -e 'puts "#{$_.length} #{$_}"'
## ืืืกืืื ืขื ืืืขืืช: xargs
ืืืืืื ืืืืจืื ืืืืกืืื ืืืืชืจ ืืื ืืืฉืชืืฉ ื xargs ืืื ืืฉืืืจ ืืช ืืคืื ืืฉืืจืืช, ืืื ืืืคืขืื wc ืขื ืื ืฉืืจื. ืื ื ืจืื ืืื:
ls -l | xargs -I % sh -c 'echo $(echo -n "%" | wc -c) "%"'
ืืื ืฆืจืื ืืฉืื ืื ืืืจืืืืช ืกืืื ืื ืกืืื ื ืืืืื ืืื ืฉ bash ืื ืืืขืืช ืืืืง ืื ื ืจืืืืื ืืคืืืื, ืืืคืืื ืืืจื ืื ืืืจืืืืช ืขืืืื ืืฉ ืืื ืืขืืช, ืืืฉื ืื ืืงืื ืืฉ ืฉืืจื ืฉืืืืื ืกืืื ืืืืจ ืื bash ืื ืกื ืืคืขื ื ืืช ืืืืื ืฉืืชืืืื ืืืืืจ ืืชืืจ ืืฉืชื ื.
ืืืงื ืืื ืืกืืคืืจ? ืืฉืืฉ ืืจื ืคืฉืืื ืืคืชืืจ ืืขืื ืขืืืฃ ืืืืืจ ืื. ืกืืืื ืืื ืฉืืื ืื ืชืืื ืืืชืจ ื ืืื ื.1 419
# ืืชืืงืื ืืื ื ืืื (ืื: ืืื ืืืืืื ืจ ืืืคืืข ืืฉืขื ืืื ื ืืื ื)
ืจืืื ืืื ืฉืื ืื ืฉืืืืืื ืจ ืืืชืจ ืืืคืืข ืืฉื ื ืืงืืืืช ืฉืื ืื ืืฉืชื ืฉืขืืช ืฉืื ืืช: ืืืฃ ืจืฉืืืช ืืืืืื ืจืื ืืื ืืืคืืข ืืฉืขื ืื ืืื ื (ืขืฉืจ ืืืืงืจ), ืืื ืืืฃ ืืืืจืืข ืขืฆืื ืืื ืืืคืืข ืืฉืขื ืฉืืื ื ืืืืงืจ.
ืืืื ื ืจืื ืืื ืื ืงืจื ืืื ืืคืฉืจ ืืืืื ืืื.
## ืืื ืื ืงืจื: ืืืืจื ืืื
ืืฉืื ืื ื ืฉืืืจืื ืฉืขื ืืืกืืก ื ืชืื ืื ื ืื ืืืื ืืฉืืืจ ืืืชื "ืื ืืืจืืช" ืืืืืจ ืืื. ืืืืืื ืขืืืจ ืืืืื ืจ ืื ืืืืจ ืืืืืื ืฉืืืฉืื ืืืจืฅ ืืืจืช ืืฆืคื ืืืชืจ ืืืจืฆื ืืจืืืช ืืช ืืฉืขืืช ืืืืืจ ืืืื ืฉืื.
ืืฉืืืคื ืืืกืืก ืื ืชืื ืื ืื ืื ื ืจืืฆืื ืืืืืจ ืืช ืืฉืขื ืืืืืจ ืืืื ืืคืื ืจืืฆืื ืืืฆืื, ืืื ืืืื ืืืืืช ืืฉืื ืฉืฉืืืจ ืืืขืืคืืช ืืืฉืชืืฉ ืื ืืืืจืช ืืืืจ ืืื ืืืืืืื ืืืชืจ ืื ืฉืืฉืขื ืฉืชืืฆื ืชืืื ืืื ืืื ืืืฉืชืืฉืื.
ืืืฃ ืจืฉืืืช ืืืืืื ืจืื ืืืคืืข ืืงืื ืืื ืืื ืืืฆืื ืืช ืืฉืขื ืืืชืืืื ืฉื ืืืืืื ืจ ืืืืืจ ืืืื ืฉืื ื:
<% @workshops.each do |wi| %>
<% ldate = wi.date.in_time_zone("Jerusalem") %>
...
<%= ldate.strftime("%b") %>
ืืืฉืชื ื ldate ืืื ืงืืฆืืจ ืฉื ืืืืื local_date ืืืืืืง ืืช ืืชืืจืื ืืืฉืขื ืืฆืืจืืฃ ืืืืจ ืืื.
## ืื ืื ืืืขืื?
ืืงืื ืฉืืืขืื ืืื ืืืจ Code Smell ืืงื ืืจืืืช ืืช ืื: ืืื ืคืืชืจ ืืขืื ืืืืืืืืช ืืฆืืจื ื ืงืืืชืืช. ืืืงืื ืืืืืืจ ืืืงืื ืืื ืฉืื ืืฉืขืืช ืืืชืจ ืืืชืืื ืืืืืจ ืืื ืืจืืฉืืื, ืืงืื ืืืคื ืจืง ืืฉืขื ืืืฃ ืจืฉืืืช ืืืืืื ืจืื. ืืื ืื ืจืื ืืงืื ืืืืข ืืฉื ืืืจื ืฉืืืฉืื ืืืืื ืฉืืืฃ ืจืฉืืืช ืืืืืื ืจืื ืืฉืขื ืื ื ืืื ื, ืืชืื ืจืฆืื ืืคืชืืจ ืืช ืืืขืื ืืื ืืฉืืืจ ืืืจืื ืืืจืื.
ืื ืฆืจืื ืืืชืืืฅ ืืืืืื ืืื ืืืืื ืื ืงืจื ืืืื. ืืืฃ ืืืืืื ืจ ืืื ืื ืืช ืืงืื ืืื:
<% wi = @workshop_instance %>
<% date = wi.date.strftime('%d/%m/%Y') %>
<% start_time = wi.date.strftime('%l:%M%P') %>
<% end_time = (wi.date + (wi.workshop&.duration || 0).hours).strftime('%l:%M%P') %>
ืืื ืฉืขืช ืืืชืืื ืฉื ืืืืืื ืจ ืื ืงืืืื ืืช ืืืชืืื ืืืืืจ ืืืื ืฉืืืฆืขื ืืจืฉืืืช ืืืืืื ืจืื.
## ืืชืืงืื
ืืขืืืื ืขื ืืขืจืืช ืืฉืื ืืืืื ืืืื ืคืขืืืืช ืื ืื ื ืฆืจืืืื ืืืฆืข ืืจืื ืืงืืืืช ืืืืื ืคืขืืืืช ืฆืจืืืืช ืืืืช ืืืฉืคืืข ืขื ืื ืืืขืจืืช. ืืชืืืช ืืืืจ ืืื ืืืฉืชืืฉ ืกืคืฆืืคื ืืคื ืืืืจืืช ืืืฉืชืืฉ ืืืืจื ืืืืขืฉืืช ืืจืื ืืงืืืืช, ืืืจื ืฉืื ืื ื ืืืืขืื ืื ืืืฉืชืืฉ ืืื ืืืืจ ืืืื ืืืืขืืฃ ืขืืื (ืื ื ืืืื ืืื ืืื ืืืืฉ ืคืืฆ'ืจ ืืื). ืืชืืืช ืืืืจ ืืื ืืืื ืืื ืืฉืขืืช ืืืชืจ ืฆืจืืื ืืืชืืฆืข ืืืงืื ืืื, ืืื ืฉืื ืคืขื ืฉืืืฉืื ืืฆืื ืฉืขื ืืื ืชืืฆื ืืคื ืืืืจ ืืืื ืืืืขืืฃ.
ืืจืืืืก ืืืืจืืช ืืืืืืืืืช ื ืืฆืืืช ืืงืืฆืื ืืชืืงืืืช config ืืืื ืชืืงืื ืืฉืขืืช ืืื ืืืชืจ ืืื ืืกื ืืื ืกืืคืืจ ืฉื ืืืืกืืฃ ืืช ืืฉืืจื:
config.time_zone = "Jerusalem"
ืืงืืืฅ config/application.rb.
ืืืชืจ ืืฉืื ืืืชืืงืื ืืกืคืฆืืคื ืืื ืืืงื - ืืคืืชืจืื ืืขืื ื ืงืืืชืืช ืืื ืงื ืืืจืื ื Refactoring ืืืชืงื ืืช ืืืขืื ืื ืฉืืืขื ืื ืชืฉืคืืข ืขื ืืงืืืืช ืืืจืื ืืืขืจืืช. ืืื ืืืชืจ ืืื ืืขืฆืืจ, ืืืฉืื, ืืืืื ืืช ืืืขืื ืืืฉืืื ืืช ืขืฆืื ื ืื ืืืขืื ืืื ืืืืช ื ืงืืืชืืช ืืขืืื ืืกืืื ืื ืืขืื ืืืืืช ืฉืืืจืฉืช ืฉืื ืื ืืืืจืืช ืืขืจืืชื ืื ืืคืืื Refactoring.1 419
# ืืืื ื ืืืืืื ืจ: ืืขืืืืช ื ืคืืฆืืช ืขื ืจืืืงื
ืจืืืงื ืืื ืจืง ืกืคืจืืืช ืชืฆืืื.
ืืจืืืงื ืืฉ ืืืฆืืขืื ืืฆืืื ืื.
ืจืืืงื ืืจืื ืคืืืช ืืกืืืืช ื X/Y/Z ืืืื ืงืื ืจืืืงื ืชืืื ืืืฆื ืืืชืจ ืืขืื.
ืืืืช ืืื ืฉืื ืืฉื ื ืืื ืกืคืจืืืช ืืคืืชืื ืฉืชืืืจื ืืคืจืืืงื ืฉืืื, ืืชื ืฆืจืืืื ืืืืืจ ืืืชื ืืืช ืืฉืืืืืช ืฉืื ืืื ืื ืืืคืื ืืืืจืืช ืืฉืขืืืจืื ื Tutorials ืืืืืืืืช ืฉื ืงืืจืกืื ืืงืื ืืืืชื. ืืืจืืืงื ืืฉ ืื ืืขื ืืืจืืช ืืืื.
ืืืื ืืืืฉื ืืงืจืื ืืขืฉืจ ืืืืงืจ ืื ื ืืืืื ืืกืคืจ ืืืจืืช ืืขืืืื ืขื ืจืืืงื ืืจื ืชืืื ืืืช ืจืืืงื ืฉืืืืืืช ืืืืื ืืขื ืืื ืื, ืืืื ืชืืื ืืช ื ืจืื ืื ืืงืืจ ืืืขืื ืืื ืืคืฉืจ ืืืืื ืขื ืจืืืงื ืืชืื ืืื ื ืฉื ืืืขืื. ืืืืืื ืจ ืืืืขื ืืื ืฉืื ืฉืืืืจืื ืืืชืื ืจืืืงื ืืจืืฆืื ืืืืืจ ืืช ืืืืจืืช ืฉืื ืืื ืื ืืืคืื ืืื ืืงืื ืืืืชื. ืืื ืื ืืฉืืื ืฉืืืืจ ืขืืืื ืืืื:
1. ืืขืืืืช ื ืคืืฆืืช ื Data Flow ืืื ืงืืืคืื ื ืืืช.
2. ืืขืืืืช ื ืคืืฆืืช ืื ืืฉื Immutable Data.
3. ืืขืืืืช ื ืคืืฆืืช ืืฉืืืืฉ ื Hooks, ืืืืืื ืืืขืจื ืืชืืืืืช ื useEffect.
4. ืืื ืืืืืจ ืงืืืคืื ื ืืืช ืืฆืืจื ืืืชืจ ืืขืืื.
5. ืืื ืืฉืืืืช ืฉืืื.
ืืื ืชื ืืจืื ืืืืืืืช ืื ืชืืืื ืขืจื ืืื ืื ืชืจืื ืืืืืฉื,
ืื ืืืขื ืฉืืืชื - ืงืืฉืืจ ืืืจืฉืื: https://www.tocode.co.il/workshops/121.
1 419
# ืงืื ืืื, ืงืื ืขืืื
ืืื ืฉื ื ืฆืืจืื ืฉืื ืื. ืืฆืืืจ ืืคืฉืจ ืืืืืื ืืขืจืืช ืฆืืจืื, ืฆืืจ ื x ืืชืืื ืืงืื ืขืืื ืื ืื ืขืืื (ืืื ืื ืกืงืืื, ืื ืชืืื ืืฉ ืืืืื ืื ืคืฉืจืืช ืืืืฆืืขืื ืื ืื ืื), ืืฆืืจ y ืืชืืื ืืงืื ืืื ืื ืื ืืื.
ืืืชืืืช ืงืื ืืืฉ ืืืื ืืืืืื ืขื ืืจืืข ืืืื ื-ืขืืืื ืฉื ืืืคื, ืืืืื ืืฆืืจ ื"ืขืืื" ืืืืืื ืืฆืืจ ื"ืืื", ืืื ืืจืื ืืืงืจืื ืื ืื ื ืื ืืืื ืื ืืช ืืืจืืฉืืช ืืกืคืืง ืืื ืื ืืืชืื ืืืคืฉืื ืืื ืืืคืก.
ืืืืง ืืืืชืจ ืืขื ืืื ืืขืืืื ืืื ืขืืืื ืงืื ืงืืื. ืคื ืืจืืจืช ืืืืื ืฉื ืจืื ืืืชืื ืชืื ืืื ืืืชืืงื ื"ืขืืื", ืืื ืกืืช ืืฉื ืืช ืืื ืฉืคืืืช ืืื ืืชืงื ืืช ืืืื ืื ืืืืฉ ืืช ืืคืืฆ'ืจ. ืจืืคืงืืืจ ืฉืืืคืื ืืช ืืงืื ืืืืชืจ ืืื ืืืจื ืืื ืื ืื ืืืฉืืื ืื ืืื ืืืืฅ ืืกืงืืค ืฉื ืืืชื ืคืืฆ'ืจ ืื ืืื. ืืื ืื ื ืืืืจ ืืืขืจืืช ืืฆืืจืื ืฉืื ื, ืชืืืื ืืื ืืืืื ืฉืืืืจื ืืื ืืืื ืื ื ืงืื ืจืข. ืื ืื ื ืืชืงืืืื ืืฆืืจ ืืื ืื ืืชื ืื ืืืื ืืขืฉืืช ืืช ืฉืื ืืฆืืจ ืืฉื ื.
ืจืื ืืงืื ืืืจืืข ืฉืื ืื ื ืืืชืืื ืื ื ืืชื ืืฉืืืข ืืจืืฉืื ืฉื ืืคืจืืืงื, ืืื ืืื ื ืืฆืจ ืืืืืืืฆืื ืืฉืื ืื ื ืืืงืืื ืืืกืืจืงืฆืื ืื ื ืืื ื ืืืืฉืืืื ืืื ืืช ืขืืื ืขืื ืืขืื ืื ืื ืื ืื, ืืืงืื ืืชืงื ืืช ืืืกืืืืช. ืื ืื ืื ืืืืช ืืืจืืื ืืืชื ื ืขืื ืืื ื ืงืืืืช ืืฆืืจ ื"ืืื".
ืืคืืชืจืื ืืืืื ืืืขืชื ืืื ืืืืฆืจ ื ืืื ืขืืืื ืฉืืืืืืื ืืืชื ื ืืฉืคืจ ืื ืงืื ืฉืื ืื ื ื ืืืขืื ืื ืชืื ืืื ืชื ืืขื. ืืืืืืืช ืืืืื ื ืืืื ืืืื-
1. ืืืื ืืืืฆืจ ืืืืงืืช ืืืืืืืืืช ืืื ืืื ืฉืืชืงื ืื.
2. ืืืฉืืืจ ืืงืื ืืืชืื ืชืื ืืืืกืืฃ ืืฉืืืืช ืจืืคืงืืืจืื ื ื Jira ืืืจ ืืกืคืจืื ื ืืื, ืืืขืืื ืืชืื ืชืื ืืืืฆืจ ืืขืฆืื ืืืื ืืฉืืืืช.
3. ืฉืืืืฉ ื Git Hooks ืืื ืืืืื ืืืืขืืช ืงืืืื ืืคืืจืืืช ืืืื.
4. ืืื ืกืช ืฉืืืจืืื ืชืืืืืช ืืชืฉืชืืช ืืชืืจ ืืฉืืื ืืืืจืช ื Jira, ืคืขื ื X ืกืคืจืื ืืื.
ืืฉ ืืื ืจืขืืื ืืช ื ืืกืคืื ืื ืืื ืขืืืื ืฉืืฉืคืจืื ืืช ืืืืืช ืืงืื ืืืืจื ืืื? ืขืืฉืื ืืืืจืชื ืืช ืืชืืืืืช ืื ืืคืฉืจ ืืฉืชืฃ ืืื ืื ืืืืืจื.
1 419
return draft.map(d => d.id === newNoteId ? data.data : d ) }));ืืื ืืืชื ืฉืืืื ืืืฉืจืช ืื ืืฆืืื ืืฉืืืจ ืืช ืืคืชืง? ืืฉืืื ืื ืืฉ ืื ืืืืง catch:
} catch (err) {
patchResult.undo();
}
ืคืงืืืช undo ืชืืื ืืช ืืขืืืื ืืชืืืืจ ืืช ืจืฉืืืช ืืคืชืงืื ื Cache ืืขืจื ืฉืื ืืคื ื ืืืืฉืืื.
ื .ื. ืืงืื ืื ืืืคื ืืืฆื ืฉื ืืื ืคืชืงืื ืฉื ืืฆืจืื ืืื, ืืืงื ืืฆืืืืื ืืืืงื ื ืืฉืืื. ืืืฆื ืืื ืคืชืง ืฉื ืืฉื ืขืฉืื ืืืืืืจ ืืช ืจืฉืืืช ืืคืชืงืื ืืืชืจ ืืื ืืืืจื, ืืืฆื ืฉืื ืืจืื ืืช ืืคืชืงืื ืฉืืฆืืืื, ืื ื patchResult ืฉื ืืคืชืง ืฉื ืืฉื ื ืืฆืจ ืืคื ื ืฉืคืชืงืื ืืืจืื ืืฆืืืื. ืืฉืืื ืืืชืืืื ืขื ืืฆื ืืื ื ืฆืืจื ืืขืืื ืืช ืืงืื ื catch ืืืืืช ืืืชืจ ืกืคืฆืืคื ืืืืฉ ืืืืืง ืืช ืืคืชืง ืืืืฉ ืืคื ื id ืฉืื ืืืืคื ืืื:
} catch (err) {
dispatch(
notesApi.util.updateQueryData('getNotes', undefined, (draft) => {
return draft.filter(note => note.id !== newNoteId);
}));
}
ืงืื ืืื ืืืคืฉืจ ื undo ืืืืืช ืืืชืจ ืกืคืฆืืคื ืืืืฉ ืืืืืง ืืช ืืคืชืง ืืืืฉ ืฉื ืืกืื ื ืืืื ืืก ืืืงืื ืืืืืืจ ืืช ืืืฆื ืืื ืฉืืื ืืฉืืฆืจื ื ืืช ื patch.1 419
# ืขืืืื ืื ืืืคืืืืืื ื Redux Toolkit Query
ืืืืฉื "ืขืืืื ืืืคืืืื" ืืชืืจ ืขืืืื ืฉืื ืื ืื ื ืืืืืื ืฉืืื ืืขืืื, ืืืื ืื ืื ื ืืขืืื ืื ืืช ืืืฉืง ืืืฉืชืืฉ ืืืืืข ืืืืฉ ืขืื ืืคื ื ืฉืงืืืื ื ืืืฉืืจ ืืืฉืจืช ืฉืืื ืืืืืข ืชืงืื, ืืจืง ืื ืืฉืจืช ืืืืื ืขื ืฉืืืื ืื ื ืืื ืืช ืืขืืืื ืฉืขืฉืื ื. ืขืืืื ืืืคืืืื ืืฆืืข ืืืืืช ืืฉืชืืฉ ืืืชืจ ืืืื ืื ืืฉืชืืฉืื ืื ืฆืจืืืื ืืืืืช ืฉืฉืจืช ืืืฉืจ ืืฉืื ืฉืื ืื ื ืืืืขืื ืฉื 90% ืืืืงืจืื ืืฆืืื.
ื RTK Query ืืฉ ืืจื ืืืื ืืช ืืืืื ื ืืื ืืืืฉ ืขืืืื ืื ืืืคืืืืืื ืืืืืช ืฉืืืื ืฉื ืืกืคืจ ืื ืื ืื ืื ืฉื ืืกืคืจืื:
1. ืกืคืจืืืช RTK Query ืืืืืงื ืืช ืื ืืชืืฆืืืช ืฉื ืื ืืฉืืืืชืืช ืืืืืจืื, ืืืืคืฉืจืช ืื ื ืืขืืื ืืช ืืฉืืืืชืืช ืืฉืืืจืืช.
2. ืืกืคืจืื ืืฉืืืืช ืขื Immer ืืืืคืฉืจืช ืื ื "ืืืืืจ" ืืช ืืืฆื ืืคื ื ืืขืืืื ืืืืื ืืืชื ืืคืงืืื ืืืช ืืืื ืืช.
3. ืืืืคื ืืืืืืื ืื ืงืื ื UI ืฉืืฆืื ืชืืฆืืืช ืฉื ืฉืืืืชืืช ืืืืืจ ืืืืชื ืืืืจืื ืืืืื ืืืชืขืืื ืืฉืื ืื ื ืืขืืื ืื ืืช ืชืืฆืืืช ืืฉืืืืชืืช, ืื ืื ืืขืืืื ืืื ืคืืงืืืื (ืืืืืจ ืขืืืื ืืืคืืืื).
ืืื ืื ื ืจืื ืืงืื:
createNote: builder.mutation({
query: (noteText) => ({
url: `/notes`,
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ text: noteText }),
}),
async onQueryStarted(noteText, { dispatch, queryFulfilled }) {
let newNoteId = nanoid();
const patchResult = dispatch(
notesApi.util.updateQueryData('getNotes', undefined, (draft) => {
return [...draft, { text: noteText, id: newNoteId }];
}));
try {
const data = await queryFulfilled
dispatch(
notesApi.util.updateQueryData('getNotes', undefined, (draft) => {
return draft.map(d => d.id === newNoteId ? data.data : d )
}));
} catch (err) {
console.log(`error`);
patchResult.undo();
}
}
})
ืืงืื ืืืืืจ ืคืขืืื ืืืฉื ืืฉื createNote, ืขืืืจ ืืคืืืงืฆืื ืฉืฉืืืจืช ืจืฉืืื ืฉื ืคืชืงืื. ืืฉืืื ืืืืืจื ืื ื ืืคืขืื ืืช builder.mutation ืืืขืืืจ ืื ืืืืืงื ืขื ืฉื ื ืืคืชืืืช:
1. ืืืคืชื query ืืืฆืจ ืืช ืงืื ืืงืฉืช ื POST ืฉืื ื ืฉืืื ืืฉืจืช ืืื ืืืฆืืจ ืคืชืง ืืืฉ. ืืคืชืง ืืืฉ ืืฉ ืืกื ืืื ืืช ืืืงืกื ืืคืชืง.
2. ืืืคืชื onQueryStarted ืืืืืง ืืช ืืคืื ืงืฆืื ืฉืืืจืืืช ืขื ืืขืืืื ืื ืืืืคืืืืืื.
ืืืชื ืคืื ืงืฆืื ืืงืืืช ืืช ืืืงืกื ืฉื ืืคืชืง ืฉืืืืื ืืชืืื ื ืืช ืืคืขืืื, ืืืืืืงื API ืืื ื ืื ื ืืฉืชืืฉ ืืืคืชืืืช dispatch ื queryFulfilled. ืื ื ืืืืข ืฉืืื ืคืชืง ืืฉ ืืืื, ืืื ืืื ืื ืขืืืื ืืช ืืืืื ืื ืืฉืจืช ืขืื ืื ืืฆืจ ืืืชื, ืืื ืื ื ืืืคืืืื ืื ื ืืืืข ืฉืืฉืจืช ืขืื ืืขื ืืงืื ืืช ืืคืชืง ืืืืฆืืจ ืื ืขืืืจื ืืืื, ืื ืืื ืชืืื ืื ื ืืืจืื ืืืื ืืฉืื ืขื nanoid ืืืฉืชืืฉ ืื ืืชืืจ ื id ืฉื ืืคืชืง. ืขืืฉืื ืื ื ืืืฉืื ืืืืืช ืืืคืืืื ืืืคืขืื ืืช ืืงืื:
const patchResult = dispatch(
notesApi.util.updateQueryData('getNotes', undefined, (draft) => {
return [...draft, { text: noteText, id: newNoteId }];
}));
ืืงืื ืขืืฉื ืฉื ื ืืืจืื: ืืื ืื ืืขืืื ืืช ืขืจื ืืืืืจ ืฉื ืื ืชืื getNotes, ืฉืื ืื ืชืื ืฉืืืืืจ ืืช ืจืฉืืืช ืื ืืคืชืงืื ืขื ืืฉืจืช. ืืขืืืื ืืืงื ืืช ืืขืจื ืืืฉื (ืืืืื ืืื ืืฉื ืืืฉืชื ื draft) ืืืืกืืฃ ืื ืืช ืืคืชืง ืืืืฉ ืืื ืฉืื ื ืืืฉื ืฉืืืื ืืืืืข ืืืฉืจืช. ืื ืืกืคืืง ืืฉืืื ืืขืืื ืืช ืื ืืืฉืง ืืืฉืชืืฉ ืืจืฉืืื ืืืืฉื.
ืืืืจ ืืฉื ื ืฉืืงืื ืขืืฉื ืืื ืืืืืืจ ืืืืืงื ืืืื. ืืืืืงื ืืืืื ืฉืืืืืจ ื dispatch ืืืื ืืช ืจืฉืืืช ืื ืืฉืื ืืืื ืืื ืืชืืฆืื ืฉืืืชื ืฉืืืจื ืืืืืื ืืืื ืืชืืฆืื ืืืืฉื ืฉืื ื ืฉืืจืชื ืืืืืื, ืืืืคืฉืจ ืืืืืจ ืืืืจื ืืชืืฆืื ืืงืืืืช ืขื ืคืื ืงืฆืืืช undo ืฉืื.
ืื ืงืืื ืืืืช ืืืืื ืช ืืืฉืชืืฉ ืื ืืืืฉืง ืืจืื ืืช ืืืฆื ืืืืื ืืคืชืง ื ืืฆืจ ืื ืฉืืจ ืืืจ ืืฉืจืช. ืืืฉืชืืฉ ืืืฉืื ืืขืืื ืขื ืืืขืจืืช ืจืืื ืืืืจื. ืืื ืืืืืจื ืืงืืขืื ืื ืื ื ืืืืขืื ืฉืฉืืื ื ืขืืืื ืืฉืจืช ืืฉืื ืื ื ืืืืจืื ืืงืื ืืื ื ืชืฉืืื, ืืืื ืืืืื ืฉืชืฉืืืช ืืฉืจืช ืชืืืข:
const data = await queryFulfilled
ืืฉืจืช ืขืื ื ืื ืขื ืืคืจืืื ืฉื ืืคืชืง ืืืืฉ ืฉื ืืฆืจ, ืืื ืงืืื ืืืืช ืื ื ืฉืื ืฆืจืื ืืขืืื ืืช ืจืฉืืืช ืืคืชืงืื ืืฉืืืจื ืฉืื: ืืืื ืืฉืจืช ืืืืืฃ ืืืง ืืืืืืื ืืคืชืง, ืืืื (ืืืื) ืืฉืจืช ื ืชื ืืคืชืง ืืืื ืืืืืื ืืฉืื, ืืืื ืืื ืืืกืืฃ ืฉืืืช - ืืื ืืงืจื ืื ื ืจืืฆื ืืืืืืฃ ืืช ืืคืชืง ืฉืื ื ืืฉืืชื ืฉืืฉืจืช ืืืฆืืจ ืืคืชืง ืืืืืชื ืฉืืฉืจืช ืืฆืจ, ืืื ืืืจืช ืคืงืืืช ืืขืืืื ืืฉืืจื ืืืื:
dispatch(
notesApi.util.updateQueryData('getNotes', undefined, (draft) => {1 419
# ืืืค ืจืืืืงืก - ืืฉืชืืฉื ื preloadedState ืืื ืืืืืง ืืืชืจ ืืงืืืช
ืืืืืืช ืืืชืืื ืืืืจื ืฉื Redux Tolkit ืื ืืืฆืจืื ืืืืืืฆืืื ืืช ืืืกื ืืืืืข ืืืืชื ืฉืืจื ืืืืคื ืืื:
import { configureStore } from '@reduxjs/toolkit'
import counterReducer from '../features/counter/counterSlice'
export const store = configureStore({
reducer: {
counter: counterReducer,
},
})
ืฉืื ืื ืงืื ืืืงืื ืืื ืืืคื ืืืจืื ืืืชืจ ืงื ืืืืืงื. ืืืงืื ืืืฆืืจ ืืืืืฆื ืืช ื store ืื ื ืืืชื ืคืื ืงืฆืื ืฉืืืฆืจืช store ืืืฉ, ืืื ืืืืขืช ืืงืื preloadedState:
export function createStore(initialState) {
return configureStore(Object.assign({}, {
reducer: {
counter: counterReducer,
},
},
initialState ? { preloadedState: initialState } : {}));
}
ืืืื ืื ื ืืืื ืืืฉืชืืฉ ืืคืื ืงืฆืื ืืื ืืืืืง ืืช ื store ืืื state ืจืืฉืื ื ืฉืืจืฆื:
test('inc from 10 to 11', () => {
const store = createStore({ counter: { value: 10 }});
store.dispatch(increment());
expect(store.getState().counter).toEqual({ value: 11 });
});
ืืืชืจ ืืื, ืืคืฉืจ ืืืฉืชืืฉ ื createStore ืืื ืคืขืืื, ืืืฉื ืืืคืขืื ืืืช ืื ืืืขืืืจ ืคืจืืืจืื ืืืื ืืงืื ืืช ื State ืืจืืฉืื ื ืืืื, ืืืืฆืื ืืืชื ืื store, ืืฉื ืืช ืจืง ืืช ืืขืจืืื ืฉืฆืจืืืื ืืืืืงื ืืื ืืืคืขืื createStore ืฉืื ืขื ืืกืืืื ืฉืืฆืจืชื.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
