ToCode
Kanalga Telegramโda oโtish
ืืืคืื ืงืฆืจืื ืืืชืื ืชืื ืืืช ืื ืื ืคืจืง
Ko'proq ko'rsatish1 420
Obunachilar
Ma'lumot yo'q24 soatlar
+37 kunlar
-430 kunlar
Postlar arxiv
1 421
We use the same configuration as Parcel to bundle this sandbox, you can find more
info about Parcel
<a href="https://parceljs.org" target="_blank" rel="noopener noreferrer">here</a>.
</div>
`;
}
window.addEventListener('pagehide', (ev) => {
countdown = 10;
document.getElementById("app").innerHTML = `${countdown}`
});
window.addEventListener('pageshow', (ev) => {
setTimeout(tick, 0);
});1 421
# ืืืคืื ืืขืืืื ืืขืืื ืขื bfcache
ืืื ืืืจืืงืื ืฉื ืืคืืคื ืืื ืืืฆืื ืขืืืืื ืืืจ ืืืชืจ ื ืงืจื bfcache. ืื ืืขืฆื ืืืืจืื ืืืืื ืื ืืืคืืคื ืฉืืืจ ืืช ืืขืืื ืืืช ืื ืืฆื ื JavaScript ืฉื ืืขืืื ืืืฆืืื ืืื ื, ืืืืื ืืขืืื ืขืืืื ืคืขืื ืืืืื "ืืื" ื ืกืชืจ. ืืืืืฆื ืขื ืืคืชืืจ "ืืืืจื" ืืืคืืคื ืืืฉื ืืืืืืื ืืช ืืขืืื ืืืช ืื ืืืืจืื ื JavaScript ืืื ืฉืืฉืชืืฉืื ืืืืื ืืืืฉืื ืืขืืื ืขื ืืขืืื ืืืืืจืืช ืืืืืชื ื ืงืืื.
ืืชืืจ ืืชืื ืชืื ืื ืื ื ืฉืืืื ืขื ืื ืืชื ืืืืช ืฉื ืืืคืืคื ืฉืืืืฆื ืืช ืืืชืจืื ืฉืื ื, ืืื ืื ืฆืจืืืื ืืืืืช ืืืืขืื ืืืื ืืชืืจืื ืกืคืฆืืคืืื ืกืืื ืืขืื ืช ืขืืื ื bfcache.
## ืืืืฉืช ืืฉืืืืฉ ื bfcache
ืืืื ืกื ืืงืืฉืืจ ืืื:
https://cdpn.io/pen/debug/JjegWao
ืชืืืื ืืจืืืช ืฉื ืืกืคืจืื ืืืจืืื ื 9 ืขื 1, ืืื ืืืงืื 0 ืืืคืืข ืืงืกื ืืืชืืช ืืืงืกื ืืฉ ืืื ืง. ืืืืฆืื ืขื ืืืื ืง ืืื ืืืืฆืื "ืืืืจื" ืืืคืืคื, ืืชืืืื ืืจืืืช ืฉืืืคืืคื ืื ืืจืืฅ ืืช ืืืกืคืจืื ืืืืจื ืฉืื ืืืฉืจ ืืฆืื ืืช ืืืงืกื, ืืืืืง ืืื ืงืืื ืื ืขืฆืจื ื.
ืื ืงืื ืืขืืื ืืื ืืืืืข ืืื:
<iframe height="300" style="width: 100%;" scrolling="no" title="Untitled" src="https://codepen.io/ynonp/embed/JjegWao?default-tab=html%2Cresult" frameborder="no" loading="lazy" allowtransparency="true" allowfullscreen="true">
See the Pen <a href="https://codepen.io/ynonp/pen/JjegWao">
Untitled</a> by Ynon Perek (<a href="https://codepen.io/ynonp">@ynonp</a>)
on <a href="https://codepen.io">CodePen</a>.
</iframe>
## ืืื ืืืืขืื ืื ืืขืืื ื ืืขื ืื Cache
ืืคืืคื ืื ืืกืคืงืื ืื ื API ืืื ืืืืื ืืื ืืขืืื ื ืืขื ืืืื ืืื ืืืืข ืื cache. ืืืืจืืข
pageshow ืืืฉืื ื window ืืื ืืืจื load ืืืื ืคืขื ืฉืืขืืื ื ืืขื ืื Cache. ืืืืจืืข ืื ืืฉ ืืืคืืื ืืฉื persisted, ืืื ืขืจืื true ืื ืื ื ืืืืขืื ืฉืืขืืื ืืืืข ืื cache. ืืขืืจืช ืืืจืืข ืื ืื ื ืืืื ืืืฆืื ืืืืขื ืกืคืฆืืคืืช ืืืฉืชืืฉ ืฉืืืืข ืืืจื ืืืืฆื ืขื ืืคืชืืจ "ืืืืจื", ืืื ืืืืืื ืืืื:
https://cdpn.io/pen/debug/BaGXWGJ
ืงืื ืืืืืื:
let countdown = 10;
function tick() {
countdown -= 1;
if (countdown > 0) {
document.getElementById("app").innerHTML = `${countdown}`;
return setTimeout(tick, 1000);
}
document.getElementById("app").innerHTML = `
<h1>Hello Vanilla!</h1>
<div>
We use the same configuration as Parcel to bundle this sandbox, you can find more
info about Parcel
<a href="https://parceljs.org" target="_blank" rel="noopener noreferrer">here</a>.
</div>
`;
}
window.addEventListener('pageshow', (ev) => {
console.dir(ev);
if (ev.persisted) {
// page loaded from cache after "back"
document.getElementById("app").innerHTML = `Did you find what you were looking for?`
}
});
setTimeout(tick, 0);
## ืืื ืืืจืื ืืขืืื ืื ืืืืืขื ืื Cache
ืืฉ ืืกืคืจ ืืืจืื ืฉืื ืื ื ืืืืืื ืืขืฉืืช ืืขืืื ืฉืืื ืขื ืืืคืืคื ืืฉืืืจ ืืช ืืขืืื ืฉืื ื ื bfcache, ืืืื ืจืื ืืืื ืืื ืืืจืื ืฉื ืจืฆื ืืืืื ืข ืืื:
1. ืจืื ืืืคืืคื ืื ืื ืืฉืืจื ืืช ืืขืืื ื bfcache ืื ืืืืืจ ืงืื ืืืคืื ืืืืจืืข unload.
2. ืืคืืคื ืคืืืจืคืืงืก ืื ืืฉืืืจ ืืช ืืขืืื ื bfcache ืื ืืืืืจ ืงืื ืืืคืื ืืืืจืืข beforeunload.
3. ืืคืืคื ืื ืื ืืฉืืจื ืืช ืืขืืื ื bfcache ืื ืืฉืจืช ืฉืืื ืืช ืืืืชืจืช Cache-Control: no-store.
4. ืืืง ืืืืคืืคื ืื ืื ืืฉืืจื ืขืืื ื bfcache ืื ืืฉ ืื ืืืืืจืื ืคืชืืืื ืื ืืงืฉืืช ืจืฉืช ืคืชืืืืช (ืืืืืื ืืืืืจ ื IndexDB, ืืืชืื ืืชืฉืืื ืฉื fetch, ืืืชืื ืืชืฉืืื ืฉื XMLHttpRequest ืื ืืืืืง WebSocket ืคืชืื). ืืืจืืข ืืฉื pagehide ืืืฉืื ืืขืืื ืฉืืื ืืืืืง ืืคื ื ืฉืืฉืชืืฉืื ืืืืฉืื ืืืืฆื ืืื ื, ืืืชื ืืืืืื ืืืฉืชืืฉ ืืืืจืืข ืื ืืื ืืกืืืจ ืืืืืจืื ืืืืื ืืงืฉืืช ืคืชืืืืช.
ืืืืืื ืืืืจืื ื ืื ื ืืฉืชืืฉ ืืืืจืืข pagehide ืืื ืืืืืืจ ืืช ืฉืขืื ื 10 ืฉื ืืืช ืืืฆืื ืืืงืืจื, ืืืชืืื ืืืจืืฅ ืืช ืืฉืขืื ืืืืจื ืืืืจืืข pageshow ืืืงืื ืืืขืื ื ืฉื ืืขืืื. ืืฆืืจื ืืืืช ืืขืืื ืขืืืื ื ืืขื ืื bfcache, ืืื ืื ืืืื ืืืืจื ืืืื ืืฉืชืืฉืื ืืฆืืจืื ืืืืืช ืฉืื 10 ืฉื ืืืช ืขื ืฉืืจืื ืืช ืืชืืื:
https://cdpn.io/pen/debug/vYQoxMx
ืืงืื:
let countdown = 10;
function tick() {
countdown -= 1;
if (countdown > 0) {
document.getElementById("app").innerHTML = `${countdown}`;
return setTimeout(tick, 1000);
}
document.getElementById("app").innerHTML = `
<h1>Hello Vanilla!</h1>
<div>1 421
# ืืืืคืืก ืืืื ืืืื
ืฉืืื ืื ืืคืื ืงืฆืื ืืืื ืืคืืืชืื ืฉืืงืืืช ืืืจื ืืื ืืืื ืืจืฉืืื ืฉื ืืืจืืืืช, ืืืืืืจื ืจืง ืืช ืืืืจืืืืช ืฉืืืจืื ืืืื ืืืชืจ ืืืคืจืืืจ ืืจืืฉืื:
def longer_than(n: int, items: list[str]) -> list[str]:
return [I for I in items if len(i) > n]
ืืืืืืฉ ืืืืืง ืืื ืืืืงืช ืืืืคืืกืื ืขืืืื ืืืืื. ืืคืขืื ืืืืช ืขืืืืช ืืืืื ืช ืงืื, ืืื ืืืจืงืช ืฉืืืื ืขื ืืืคืืกืื:
print(longer_than(3, ((1, 2, 3), (2, 3, 4, 5, 6), range(10))))
ืืื ืืื ืื ืืืืจื ืฉื ืืืืงืช ืืืคืืกืื ืืื ืื ืืฉืืืจ ืงืื ืฉืขืืื ืืื ืืขืืืจ ืื ื ืืืชืื ืงืื ื ืืื. ืืจื ืงืื ืืฉืคืจ ืืช ืืืฆื ืืื ืืขืืืจ ืืืฉืชืืฉ ืืืืคืืก ืืืื ืืืื ืฉืื ื ืฆืจืื, ืืืืืจ ืืืงืื ืืงืืช ืจืฉืืื ืฉื ืืืจืืืืช ืื ื ืืืงืฉ Iterable ืฉื Sized:
def longer_than(n: int, items: Iterable[Sized]) -> list[Sized]:
return [I for I in items if len(i) > n]
print(longer_than(3, ((1, 2, 3), (2, 3, 4, 5, 6), range(10))))
ืืื ืืืจ ืขืืื ืืฆืืื ืืืืื ืช ืืืืงืช ืืืืคืืกืื ืืื ืขืืืื ืืฉ ืืขืื ืขื ืขืจื ืืืืืจ. ืืงืื ืืื ืืืจืง ืฉืืืืช ืืืคืืกืื, ืืืจืืช ืฉืืจืืจ ืฉืืื ืขืืื:
long_items = longer_than(3, ((1, 2, 3), (2, 3, 4, 5, 6), range(10)))
print(long_items[0][0])
ืืืขืื ืืื ืฉ long_items ืืื Iterable ืฉื Sized (ืื ืื ืื ืฉืืคืื ืงืฆืื ืืืืืจื), ื Sized ืื ืืืคืฉืจ ืืืฉื ืืจื ืืื ืืงืก. ืืืืช ืืื ืฉ long_items ืืื ืืืื Iterable ืฉื tuple, ืืืื ืืงืื ืื ืขืืื ืืื ืืขืจืืช ืืืืคืืกืื ืื ืจืืื ืืช ืื.
ืืคืืชืจืื ืืื ืฉืื ื ืืงืืื ืฉืืชื ืืืจ ืืืืขืื ืืื TypeVar ืฉืืืื ืืงืื ืื ืืืคืืก ืืืชืจ ืกืคืฆืืคื ื Sized, ืืืืืจ:
T = TypeVar('T', bound=Sized)
def longer_than(n: int, items: Iterable[T]) -> list[T]:
return [I for I in items if len(i) > n]
long_items1 = longer_than(3, ((1, 2, 3), (2, 3, 4, 5, 6), range(10)))
print(long_items1[0][0])
long_items2 = longer_than(3, ['abc', 'abcdefg', 'as'])
print(long_items2[0].capitalize())
ืืื ืืืื ืืืชื ื ืืืืค ืฉื ืืืื - ืืืชืืืช ืคืื ืงืฆืื ืืคืืืชืื ื ืกื ืืืชืื ืืช ืืืืคืืก ืฉื ืืงืื ืืฆืืจื ืืืืืืช ืืืืชืจ ืฉืืคืฉืจ, ืืืช ืืืืคืืก ืฉื ืขืจื ืืืืืจ ืืฆืืจื ืืกืคืฆืืคืืช ืืืืชืจ ืฉืืคืฉืจ. ืฉืืืื ืืื ืืื ืืืคืชื ืืื ืืืช ืคืื ืงืฆืืืช ืฉืืืื ืงื ืืืฉืชืืฉ ืืื ืืื ืฉืืืฉืชืืฉืื ืืฆืืจืื ืืืชืขืฆืื ืขื ืฉืืืืืช ืืืคืืกืื ืืงืื ืฉืขืืื.1 421
# ืืขืืื ืฉื ChatGPT, ืืื ืื ืืชืืืืืืืช ืืื ืืคืฉืจืืืืช ืขืืืืืช
ืดืืื ืืช ืืื ื ืชืืื ืขื ืืฉืืื ืืืืืืืืช ืฉืชืืื ื ืืืฉื?ืด
ืดืืื ืืชื ืืื ื Checkbox ืฉืืฉืชืืฉ ืืชืืื ื ืืืชืืืช ืืืฉืืช ืืื ืืืคืฉืจ ื ืืืื ืืงืืืช?ืด
ืดืืื ืชืื ื ืืืจืืืช ืชืืื ืืช ื HTML/CSS ืื ืื ืืชืืื ืืช ืืืืืื ืฉืื ืื?ืด
ืดืืื ืชืฆืื ืขื ืืืกื ืชืืื ื ืขื ืืคืงื Scale ืืฉืขืืืจืื ืขืืื ืขื ืืขืืืจ?ืด
ืื ืืื ืฉืืืืช ืฉืคืขื ืืคืฉืจ ืืื ืืืฉืชืืฉ ืืื ืืจืืืื ืืช ืขืืืื, ืืื ืืืื ืืคืื ืืื ืจืืืื ืืืืช. ืื ืืชืื ืช ืืืชืื ืื ืืืื ืฉืืื ืื ืืฆืืื ืืื ืืช Checkbox ืฉืืฉ ืื ืื ืชืืื ื ืืื ื ืืืื ืืงืืืช ืื ืืืฉืืข ืืืื ืืืืจ. ืดืืื ืืชื ืฉืืื ืืืชื? ืืฉ Chat GPTืด.
ืืืืืืช ืฉื Chat GPT ืื ืืื ื (ืื Copilot ืืืืืช ืืืืื ืืช ืคืืืชื) ืืืฆืืจ ืชืื ืืืช ืืชืืื ืืงืืขื ืงืื ืงืื ืื ืฉืขืืืืื ืฆืจืืื ืืฉื ืืช ืืช ืื ืืืืฉื ืฉืื ื ืืขืืืื. ืื ืืคืฉืจ ืืืืฉืืจ ืืืืฉืื.
1 421
# ืื ืขืื ืื?
ืื ืชืฉืืื ืืืจืื ืฉืขืืฉืื ืืฉืื ืฉืื ืืชื ืจืืฆืื ืืขืฉืืช ืืื ืื ืขืฉื ืืช ืื, ืืื ืืื ืชืืื ืชืฉืืื ืืืจืช - ืืืจ ืืื ืืื ืกืคืจืืืช ืืจื ืืืื ืืืจืื ืืืจืืงื, ืืืจื ืืืจืช ืืืื ืขื ืกืคืจ ืฉืืืฉ ืืืืืฆื ืขืืื, ืขืื ืืืจ ืืืื ืืืื ืืจื ื ืขื ืืืจื ืืืืจ ืืจื ืฆืคืื ืืกืืจืืช ืืกืจืืื ืืืืืืื. ืืืื ืฉืืฉ ืืืชืจ ืืคืฉืจืืืืช ืื ืืฉ ืืืชืจ ืฉืืืืืื, ืืื ืืืื ืขื ืืคืืืงืฆืื ืืกืคืจืื ืืืืจืช ืขื ืืืืืงื ืืืืืืื.
ืื ืืกืืื ืืืฆืื ืืช ืดืื ืืกืื ืืืืฉืืืชืด ืืืืืืืื (ืื ืืกืื ืฉื ืืืช ืกืคืจ, ืื ืืกืื ืฉื ืดืืืจื ืืืื ืืืื ืืงืฉืืืืืด, ืื ืืกืื ืฉื ืืืื ืื ืืขืืืืืช, ืฉื ืฆืืื ืื ืืื ืื ืชืฆืืื ืื ืชืชืงืื ืืืื ืืืจืกืืื), ืงื ืืจืืืช ืฉืื ืืกืื ืืืืฉืืืช ืื ืขืืืืช ืืืจืื ืืืื ืื ืฉืื. ืงื ืืจืืืช ืฉืืขืฆื ืืื ื ืืกืื ืืืฉืืืช. ืื ืืืืืืื ืฉืคื ืืื ืืืืืืื ืชืื ืืช.
ืืืืจื ืฉื ืืืืช ืืืคืฉ ืื ืฉืื ืฉืขืฉื ืืช ืืฉืื ืื ืฉืืชื ืจืืฆืื ืืขืฉืืช ืืืฉืืื ืดืื ืขืื ืื?ืด ืืื ืื ืืืขืชืืง ืฉืืืืช, ืื ืืฉืืื ืฉืขืืื ืืื ืื ืชืขืืื ืื ื. ืืืชืจ ื ืืื ืฉืืืืจื ืืื ืืื ืืืจืฆืื, ืืงืืช ืืืงืื ืืื ืฉืืื ืืืื ืืช ืฉืืื ืืืฉื ืฉืชืขืืื ืืื.
ืืืืืืื ืืืช ืืืขื ืืฉืื ืื ืฉืื ืืช ืืงืจืืืจืืื ืื ืฉื ืดืื ืขืื ืืืด ืื ืื ื ืืืืจืื. ืฉืืคืฉืจ ืืืืื ืชืื ืืช ืืื ืืื ืืช ืคืจืืืงื ืฆื ืื ืืงืืช ืงืฆืช ืขืืืืืช ืคืจืืืื ืก ืื ืืขืืื ืืืืื ืื ืืงืจืื ืืืืชืื ืืืืจืื ืืงืฆืืขืืื ืื ืืคืชืืจ ืฉืืืืช ืืคืจืืืงื ืืืืืจ. ืื ืืืจื ืืื ืขื ืงืจืืืจืืื ืื ืฉืื ืื, ืฉืขืืืจืื ืื ื ืืืืื ืื ืื ืื ื ืืืืืื. ืฉืืืช ืืืืื ืฉืชืขืืืจ ืื ืืืชืงืื ืืขืืืื ืืืืื ืืื ืื ืืืชื ืฉืืื ืฉืชืขืืืจ ืื ืืื ืืช ืคืจืืืงื ืฆื ืฉืืืื ืืืื ืืืืืงืจืก.
ืดืื ืขืื ืื?. ืืืื ืืืง ืืื ืืขืืื ืื ืื (ืืืืื ืื, ืืื ืื ืืกืืจ).ืด
1 421
# ืืืื ืืืืชื: npm isntall
ืฉืืืืช ืืชืื ืืงืจืืช ืืืชืงื ืช ืืืืืืช ืืืืืื ืืืชื ืืงืืืฅ
cmd-list.js ืืืืืจ npm/cli, ืืืฉื ืืงืืข ืืื ืืชืื ืืืืืงื aliases:
in: 'install',
ins: 'install',
inst: 'install',
insta: 'install',
instal: 'install',
isnt: 'install',
isnta: 'install',
isntal: 'install',
isntall: 'install',
ืื ืงืืจื ืืื? ืื ืืื ืืืืจื ืฉืืฆืืืชื ืืืืืข ืขื ืื ืืื ื PR ืืื ืฉืืืกืืฃ ืืช ื alias ืืฉืืื ืื ืืืจืืื ืืช ืืืืก ืกืงืกืืื. ืืืชื ืืืืก ืืื ืคืืจืกื ืืืืื ืืืกื ืืืืชื ืชืงืืคื ืืช ืืืื ืืื ืืขืืืื ืขื npm ืขื ืืืืชืจืช How Dare You:
$ npm isntall
npm ERR! Darwin 14.0.0
npm ERR! argv "node" "/Users/alexsexton/.nave/installed/0.10.33/bin/npm" "isntall"
npm ERR! node v0.10.33
npm ERR! npm v2.1.7
npm ERR! code MODULE_NOT_FOUND
npm ERR! Cannot find module '/Users/alexsexton/.nave/installed/0.10.33/lib/node_modules/npm/lib/isntall.js'
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR! <http://github.com/npm/npm/issues>
npm ERR! Please include the following file with any support request:
npm ERR! /Users/alexsexton/stripe/dashboard-ui/npm-debug.log
ืืืืื ื ืืกืคื ืขืื alias-ืื ื ืืกืคืื ื install ืืืคืงืืืืช ืจืืืช ื ืืกืคืืช, ืืฉืืืกืืจ ืืจืฉืื ืืืืื (ืืชืื ืืืืื ืืื) ืืื:
> npm is not here to punish people for spelling mistakes. npm is here to install your packages, even if you type "isntall".
ืืืฉื ืืืืืืช ืืื ืืืื ื ืคืืฆื.1 421
ืืืื ื ืืื ืืืืื ืฉืืื ืืืืจ ืืื ืืฉืื ืฉืืคืื ืงืฆืื ืฆืจืืื - ืืืฉืชืืฉ - ืืืื ืฉืืจืช ืืืืืจื ืฉื ืืคืื ืงืฆืื. ืื ืืคืฉืจ ืืื ืืืืื ืก ืืงืื ืืืืคืื ืื ืชืื ืืื ืฉืขืืจื ื ืืงืื ืฉืงืืื ืืคืขื ื ืืช ื User ืืชืื ืืืงืฉื.
ื ืฉืืื ืืช ืื ืืจืืืืก ืฉื ืื ื ืชืื ืืืจืื ืขื ืืขืื ืช ืืืืืข ืืืืืงืช ืืืฉืชืืฉ:
def show
@post = Post.find(params[:id])
authorize! :read, @post
render plain: "Welcome #{current_user.name}"
end
ืื ื Express ืฉื ืืคืฉืจ ืืืฉืชืืฉ ื Middlewares ืืฉืืจืช ืืืืจืช ืืคืื ืงืฆืื:
app.get('/post/:id', authorize_user, (req, res) => {
const user = res.locals.user;
res.send(`Welcome! ${user.name}`);
});
ืื ืืจืืืืก ืืืฆื ืืื ืืจืืข ืื ืืื ืงื ืืฉืืื ืืงืจืื ื authorize ืื ืืงืจืื ืื ืขื ืคืจืืืจืื ืื ื ืืื ืื (ืงืจื ืื ืืืชืจ ืืื ืคืขืืื), ืืื ืื ื Express ืืืฆื ืืขืืืชื ืื ืื ืื ื ืืชืืกืกืื ืขื ืชืืืื ืืื ืืืืืืืืจ authorize_user ืฉืชืืชืื ืืช ืืืืืข ืืฉืื ื req.locals ืืืืชื ืฉื ืื ืื ืชืื ืืฆืคื ืืืฆืื ืืืชื. ืืื ืฉืืืฉืช ืืืคืฉืจืืืืช ืืคืืชืจืื ืฉื ืจืืงื ืืื ืืืื ืืืืชืจ ืืืืจ ืืื ืืคืฉืจ "ืืฉืืื" ืืืงืฉ ืืช ื User (ืื ืชืฉืืื ืคืฉืื ืื ืชืงืืื ืืช ืืืืืข ืขื ืืืฉืชืืฉ), ืืื ืฆืจืื ืืชืื ืฉืืืช ืืื ืืกืคืจ ืืงืืืืช ืฉืื ืื ืืงืื.1 421
# ืื ืืืืชื ื Rocket ืขื ื ืืืื ืชืืืืืช
ืจืืงื ืืื ืกืคืจืืืช ืคืืชืื ืืื ื Rust. ืืืคืชื ืืืจืืื ืฉืื ืงืืจืืื ืกืจืืื ืื ืืื ืืืื ืืคืชื ืืช ืจืืงื ืืื 2016. ืื ืืชื ืืืื ื, ืืืืืจ ืื ืฉืื ืฉื ืืืฆืื ืืคืจืืืงืื ืฆื ืฉื ืื ืืื ืืื ืฉืขืืืื ื ืืฆืืื ืืืืจืกื 0.5 ืื ืืืื ืื ืชืจืฆื ืืืืืจ ืืช ืจืืงื ืืชืืจ ืชืฉืชืืช ืืคืจืืืงื ืืื ืฉืืื, ืืื ืืกืืจ. ืืื ืืคืืื ืื ืื ืืืฆื ืืกืคืจืื ืขืืืื ืืขื ืืื ืช ืืืฆืืื ืืื ืจืขื ื ืขื ืคืืชืื ืืื ืืชืื ืฉืคื ืขื ืืืืจืช ืืืคืืกืื ืกืืืืช. ืืืืืช ื Hello World ืฉืืื ื ืจืืืช ืื:
#[macro_use] extern crate rocket;
#[get("/hello/<name>/<age>")]
fn hello(name: &str, age: u8) -> String {
format!("Hello, {} year old named {}!", age, name)
}
#[launch]
fn rocket() -> _ {
rocket::build().mount("/", routes![hello])
}
ืืืื ืืืืฆืจืช ื ืชืื ืขื ืฉื ื ืืฉืชื ืื, name ื age ืฉืืืืืฉื ืืืื ืืืืืจ ืืืืขืช ืืงืกื ืขื ืืขืจืืื.
ืื ืืื ื ืจืื ืืืื ืืขืืฉื ืืฉืง ืืืืฉืื ืืืืื, ืืื ืื ืืฉื ืฉื ืืคืืกื ืืืื ืืื ืืืืงื ืื ืจืืงื ืืื ืคืืฆ'ืจ ืกืคืฆืืคื ืฉื ืจืืงื ืฉื ืงืจื Request Guards. ืืจืขืืื ืืืื ืืืืืจ ืืช ื Middlewares ืฉื ืืงืกืคืจืก ืืืืืจ ืฉืืฉืืฉ ืื ืืงืฉื ืื ืืคื ื ืฉืื ื ืืืืข ืืงืื ืืืืคืื ืื ืชืื ืงืืื ืฆืจืื ืืขืืืจ ืืจื ื"ืฉืืืจืื" ืฉืืงืื ืืืืข ืืืืงืฉื ืืืืชืืื ืืฉืชื ืื ืืกืืืืื, ืฉืืืจื ืื ืขืืืจืื ืืคืจืืืจืื ืื ืชืื.
ืืืืืื ืืืื ืืืืืฉื ืืช ืืงืื ืกืคื ืื ืจืข:
#[get("/sensitive")]
fn sensitive(key: ApiKey) { /* .. */ }
ืืื ืื ืฉืืฉ ืื ื ืืืคืืก ืืฉื ApiKey ืืืืืคืืก ืืืืฉ ืืชื ืืืืช ืืฉื FromRequest, ืื ืืคื ื ืฉืจืืงื ืชืขืืืจ ืืช ืืืืคืื ืื ืชืื ืฉืืืืจื ื ืืื ืชื ืกื "ืืืฆืืจ" ApiKey ืืืืงืฉื.
ืืืืืื ืืืื ืืฆืืื ืคืื ืงืฆืื ืืืชืจ ืืคืืจืืช ืฉืชืืงืจื ืจืง ืื ืืฉืชืืฉ ืืืขืจืืช ืื ืกื ืืืฉืช ืื ืชืื:
/// This route is chosen if the request guard for User passes (e.g. logged in).
#[get("/")]
fn home(user: User, _cookies: Cookies) -> Markup {
html! {
head {
title {"Welcome | Auth0 Rocket Example"}
link rel="stylesheet" href="static/css/style.css";
}
body{
h1 {"Guarded Route"}
div {p {
"You logged in successfully."
}}
div {p {
"Email: " (user.email)
}}
div {p {
a class="login" href="/profile" {"Another private route"}
}}
}
}
}
ืืฉืืงืื ืฉื User ืืื:
#[derive(Debug, Serialize, Deserialize)]
struct User {
user_id: String,
email: String,
}
impl<'a, 'r> FromRequest<'a, 'r> for User {
type Error = ();
fn from_request(request: &'a Request<'r>) -> Outcome<User, ()> {
let session_id: Option<String> = request
.cookies()
.get("session")
.and_then(|cookie| cookie.value().parse().ok());
match session_id {
None => {
println!("no session id");
rocket::Outcome::Forward(())
}
Some(session_id) => {
println!("session id: {}", session_id);
let db = State::<DB>::from_request(request).unwrap();
let session_key = make_key!("sessions/", session_id);
match db.get(&session_key.0) {
Ok(Some(sess)) => {
let sess: Session =
deserialize(&sess).expect("could not deserialize session");
if sess.expired() {
return rocket::Outcome::Forward(());
}
let user_key = make_key!("users/", sess.user_id);
match db.get(&user_key.0) {
Ok(Some(user)) => {
let user: User =
deserialize(&user).expect("could not deserialize user");
rocket::Outcome::Success(user)
}
_ => rocket::Outcome::Forward(()),
}
}
_ => rocket::Outcome::Forward(()),
}
}
}
}
}1 421
ืืกืืืจื ืื ืื ื ืฆืจืืืื ืืกืืืจ ืืช ืชืืืืืื ืืจืงืข ืืืฉืืื ืื ืืืืจืชื ืคืื ืงืฆืืืช ืืืคืื ืืืืจืืข ืกืืืจื:
def closeEvent(self, event):
self.finder_thread.exit(0)
ืคืืชืจืื ืืื ืืืื ืืชืช ืืขื ื ืืื ืืื ืชืืื ืืช ืืจืคืืช ืฉืฆืจืืื ืืืฆืข ืขืืืื ืืจืงืข. ื ืืื ืืื ืืื ืขืืืื ืชืืืื ืืืื ื async/await, ืืื ืื ื ืืงืืื ืฉืืขืชืื ืื ืืื ืืืืฆื ืคืืชืจืื.1 421
# ืืจืฆืช ืืฉืืืืช ืืจืงืข ืขื Qt ืืคืืืชืื
ืืืชืืืช ืชืืื ืืืช ืืจืคืืืช ืขื Qt ื Python ื ืืื ืืฉืื ืื ืฉืคืขืืืืช ืืจืืืืช ืดืชืืงืขืืชืด ืืช ืืชืืื ืืช. ืืืืืื ื ืืืืื ืชืืื ืืช ืืืฆืืื ืชืืืช ืืืคืืฉ ืืงืืฆืื, ืืคืชืืจ ืืจืฉืืื ืืืืืืฆื ืขื ืืืคืชืืจ ืืชืืื ืืช ืืืคืฉืช ืงืืฆืื ืฉืืชืืืืื ืืฉื ืืงืืืฅ ืฉืืชืืื ืืืืืืช ืืช ืืจืฉืืื ืืฉืืืช ืืงืืฆืื ืฉื ืืฆืื.
ืื ื ืจืืฅ ืืช ืืชืืื ืืช ืชืื ืฉืืืืฉ ื Thread ืืื, ืืืืืฆื ืขื ืืืคืชืืจ ืคืืืชืื ืืชืืื ืืืคืฉ ืงืืฆืื ืืื ืืืื ืืืื ืืืคื ืืืืจืืขืื ืืืจืื ืืงืฉืืจืื ืืืืฉืง ืืืฉืชืืฉ - ืืืฉื ืืืืื ืื ืืงืื ื ืฉื ืืืืื, ืื ืืคืืื ืฉืื ืืื ืขืืฆืื ืงืื ืื ืืฉืกืื ืืขืืืจ ืขืืืจ ืขื ืืืคืชืืจ. ืืชื ืืืืช ืืืืช ืชืืชื ืืืฉืชืืฉืื ืืจืืฉื ืฉืืชืืื ืืช ืดืชืงืืขืืด, ืืืจืืช ืฉืืืืคื ืืื ืื ืืื ืืืชืืื ืืช ืขืืืืช ืืืื ืงืฉื. ืืืชืจ ืืื, ืจืง ืืืจื ืฉืืืืฆืื ืื ืืงืืฆืื ืืืืืืช ืืืืคืืฉ ืชืกืชืืื ื ืจืื ืฉืื ืื ืืืืฉืง ืืืฉืชืืฉ ืืืื ืืจืืข ืืื ืืชืืืกืคื ืืจืฉืืื ืื ืืงืืฆืื ืฉืืฆืื ื.
ืืืืืช ืืฉืชืืฉ ืืืื ืืืชืจ ืชืืคืฉืจ ืืืฉืชืืฉืื ืืืืฉืื ืืขืืื ืขื ืืืืฉืง ืืชืืกืืฃ ืืช ืืชืืฆืืืช ืฉืืื ืืืฆืืช ืืืช-ืืืช ืืืื ืื ืืชืืื ืืช ืืืฆืืช ืืืชื. ืืืจืืืืงืืืจื ืฉื Qt ืืฉ ืฉืชื ืืจืืื ืืจืืืืืช ืืืืืข ืืชืืฆืื ืื:
1. ืืคืฉืจ ืืืชืื ืืช ืืืืืช ืืืืคืืฉ ืขื ืดืืคืกืงืืชืด, ืื ืฉืื ืคืขื ืฉืืืฆืืื ืงืืืฅ ืฉืืชืืื ืืืืืช ืืืืคืืฉ ื ืขืฆืืจ ืื ืฉืื ืื ืืงืฉ ื Qt ืืืคื ืืืืจืืขืื ืืจืคืืื ืฉืืืื ืืฆืืืจื. ืื ืืืชื ืืืืืช ืืฉืชืืฉ ืืืื ืืืชืจ ืืืคืชืืจ ืืช ืืืขืื ืืชืืื ืืช ืืืคืืฉ ืืงืืฆืื, ืืื ืื ืชืืื ืืคืฉืจื ืืืงืจื ืืืืื ืื ืื ืชืืื ืืฉ ืืงืื ืืื ืืขืฆืืจืืช ืืืื.
2. ืคืืชืจืื ืืืชืจ ืืืื ืืืื ืืคืชืื Thread ื ืืกืฃ ืืืืฆืข ืืช ืืืืืื (ืืืงืจื ืฉืื ื ืืืืืช ืืืคืืฉ) ืืชืื ื Thread ืื ืืกืฃ.
ืืชืงืฉืืจืช ืืื ืชืืืืืื ืจืืฉื ื Qt ืืืื ืชืืืืืื ื ืืกืฃ ืฉืจืฅ ืืจืงืข ืืชืืฆืขืช ืืื ืื ืื ืืกืืื ืืื ืืจืืื ืฉื Qt - ืืชืืืืืื ืืจืืฉื ืฉืืื ืกืืื ื ืืชืืืืืื ืืจืงืข ืงืืจื ืืช ืืกืืื ื ืืื ืืืชืืื ืืขืืื. ืื ืคืขื ืฉืชืืืืืื ืืืืคืืฉ ืืืื ืชืืฆืื ืืืฉื ืืื ืืฉืื ืกืืื ื ืืืชืืืืืื ืืจืืฉื ืืืกืืฃ ืคืจืื ื ืืกืฃ ืืชืืืช ืืชืืฆืืืช.
ืงืื? ืืจืืจ, ืืืกืคืืง ืงืืืฅ ืืื:
from PySide6.QtCore import *
from PySide6.QtGui import *
from PySide6.QtWidgets import *
from pathlib import Path
from time import sleep
class Finder(QObject):
path_found = Signal(str)
def __init__(self, parent=None):
super().__init__(parent)
def search(self, text):
results = Path('.').rglob(text)
for result in results:
self.path_found.emit(str(result.absolute()))
sleep(0.01)
class Ui(QWidget):
start_search = Signal(str)
def __init__(self, parent=None):
super().__init__(parent)
self.results = QListWidget()
self.searchbox = QLineEdit()
self.search_button = QPushButton("Search")
self.finder = Finder()
self.finder_thread = QThread(self)
self.finder.moveToThread(self.finder_thread)
self.finder_thread.start()
self.main_layout = QVBoxLayout(self)
self.top_layout = QHBoxLayout()
self.main_layout.addLayout(self.top_layout)
self.top_layout.addWidget(self.searchbox)
self.top_layout.addWidget(self.search_button)
self.main_layout.addWidget(self.results)
self.search_button.clicked.connect(self.search)
self.start_search.connect(self.finder.search)
self.finder.path_found.connect(self.results.addItem)
def search(self):
self.results.clear()
self.start_search.emit(self.searchbox.text())
def closeEvent(self, event):
self.finder_thread.exit(0)
app = QApplication()
w = Ui()
w.show()
app.exec()
ืื ืื ืืื ืื ื ืืื?
1. ืืืืืืงื Finder ืืืจืื ืขื ืืืคืืฉ ืืงืืฆืื. ืืื ืืืจืฉ ื QObject ืื ืืื Qt ืืืจืฉ. ืืคืื ืงืฆืื moveToThread ืฉืื ืฉืืืืช ืืืชื ืืขืืื ื Thread ืืืจ.
2. ื Thread ืืื ืืื Thread ืฉื Qt ืืื ืฉื ืคืืืชืื. ื ืืฆืจ ืืืืฆืขืืช QThread().
3. ื Widget ืืจืืฉื ืืืืืจ ืกืืื ื ืืื ืืืืชืช ื Finder ืฉืฆืจืื ืืืชืืื ืืช ืืืืคืืฉ, ืื Finder ืืืืืจ ืกืืื ื ืืื ืืืืชืช ื Widget ืืจืืฉื ืฉืืื ืืฆื ืงืืืฅ.
4. ืืฉืืจืืช ืฉืืืืจืืช ืืช ืืกืืื ืืื ืืงืืื ืืืืคืื ืืืคืขืืืช ื init ืฉื ื Widget ืืื:
self.start_search.connect(self.finder.search)
self.finder.path_found.connect(self.results.addItem)
ืื ืืฉืืจ ืื ืงืกื ืืืืืืื ืฉื Qt - ืืฉืืกืืื ื start_search ื ืฉืื ื Finder ืืชืืื ืืืคืฉ ืืจืงืข, ืืื ืชืืฆืื ืฉืืื ืืฆื ื ืฉืืืช ืืจื ืกืืื ื ืืคืื ืงืฆืื addItem ืฉื ืชืืืช ืืชืืฆืืืช.1 421
# ืืคืจืืืงื ืืจืืฉืื
ืื ืขืืฉืื ืืฉืืื ืขืืืื ืชืืง ืขืืืืืช? ืื ืขืืฉืื ืืฉืจืืฆืื ืืืืื ืก ืืืืืืง, ืืื ืืฃ ืืื ืื ืืืืจ ืืืชื (ืืืฆืืง) ืื ืื ืื ืืืืื ืืช ืืขืจื ืขืืืจื, ืื ืื (ืขืืืื) ืื ืจืืืื?
ืืืชืืจ ืืื ืืื ืืคืื ืื ืฆืจืื ืื ืืื ืืช ืชืืง ืขืืืืืช, ืื ืฉืืคืจืืืงืืื ืืืื ืืกืคืืง ืืืืื ืืื ืืืกืคืืง ืืขืฉืืช ืืช ืืื ืืคื ื ืฉืืืกืฃ ืืืืืจ - ืืืช ืื ืื ืฆืจืื ืืขืฉืืช ืขืื ืืคื ื ืฉื ืื ืกืช ืืขืืืื ืืืคื ื ืฉืืฉ ืื ืืช ืืืืื ืืืืืข ืืืฆืืื.
ืืืชืืจ, ืืื ืื ืืืชื ืืคืฉืจื.
ืืืืื ืืื ืฉืขืืื ืืื ืืืืืจ ืคืจืืืงื ืืื ืืืื ืืช ืืืชื ืืฆืืจื ืคืชืืื ืชืื ืืื ืืืคืืฉ ืขืืืื, ืืชืื ืืืืฉืช ืืืกืืจืช. ืืืืืจ:
1. ืืื ืื ืงืืื ืืฃ ื ืืืชื ืฉืืกืคืจ ืขื ืืคืจืืืงื. ืชื ืืื ืฉืืื ืืืจ ืืชืื ืืขืืื ืืืคืืื ืชืืืื ืืฉืื Screenshots ืืืคืจืืืงื ืืืืืื ื (ืื ืืขื ืืื ื ืืืืืืชืืช ืืฉืืื ืืืืฆืจ ืืื ืืื).
2. ืืื ืื ืคืจืืืงื ืืืืืืื ืขื ืงืืืฅ readme ืืืฉืงืข ืฉืืกืคืจ ืขื ืืคืจืืืงื.
3. ืืช ืืคืืชืื ืืชืืืืื ืขื ืชืฉืชืืืช ืฉื ืืืืงืืช ื Deployment ืืืืืืื ืืจื Github Actions.
4. ืืฉืงืืขืื ืืืืืขืืช ืงืืืื (ืืืฉืื ืืืจ gitpoet?)
ืขืืฉืื ืืคืฉืจ ืืืชืืื ืืขืืื - ืชืื ืืื ืืืคืืฉ ืืขืืืื ืืชื ืืืฉืืืื ืืืฉืงืืข ืืคืืืช ืืฆื ืืืืื ืฉืืื ืืคืืชืื ืืคืจืืืงื ืฉืืืจืชื. ืืงืืจืืช ืืืื ืืืคืืข ืงืืฉืืจ ืืืฃ ืื ืืืชื ืฉื ืืคืจืืืงื ืืื ืืืจืฉืื ืืช ืืืืืืกืื, ืืืืื ืืจืืืื ืืช ืืชื ืืกืคืจืื ืขื ืืืชืืจืื ืืืชื ืืชื ืืชืืืืืื ืืืืื ืืคืืชืื.
ื ืืื ืืคืจืืืงื ืขืืืื ืื ืขืืื ืืืื ืฉื ืืืื ืงืื, ืืื ืืฉืืืืืื ืืจืืจ ืืืชืฉืชืืช ืืืกืืกืืช ืืืื ืืคืฉืจ ืืจืืืช ืืช ืืคืืื ืฆืืื ืื ืืคืจืืืงื ืืื ืฉืขืืืื ื ืืฆื ืืืชืืื.
1 421
# ืืืืื Icon Fonts ืื ืืื ืจืขืืื ืืื ืืื
ืืืื 2012 ืืืื ืืื ืื ืคืืจืกื ืืช ืกืคืจืืืช Font Awesome ืฉืืชื, ืฉืืืคืฉืจื ืืืชืื ืชืื ืืื ืืช ืืืืงืื ืื ืืืืฆืขืืช ืืืชืืืช ืืืืคื. ืืืื ืฉืืื ืืืชืจ ืงื ืืขืฆื ืืงืกื ืืืฉืจ ืืขืฆื ืชืืื ืืช, ืืคืฉืจ ืืื ืืืืฆืขืืช CSS ืืฉื ืืช ืืช ืืฆืืขืื ืืืืืืื ืฉื ืืืืืงืื ืื ืืื ืืืชืืื ืืืชื ืืื ืขืืฆืื.
ืืืื ืืืจ ืืคืฉืจ ืืืฉืชืืฉ ื SVG ืืื ืืืฉืื ืืืืืง ืืช ืืืชื ืืคืงื, ืืื ืืืงืื ืฉื ืืฆืจื ื 2012 ืื ืืชืื ืืงืืืช.
ืืื ืื ืืืื ืืืจื ืืืงืฉื ืฉืืขืืืจ ืื ืืคืชืืจ ืืขืื ืืืชืจ. ืืกืชืืจ ืฉืืฉืชืืฉืื ืฉื ืขืืจื ืืงืืจืื ืืกื ืืื ืืืืืฉ ืืืชืจ ืฉืืขื ืืืชืืืช ืืืืจืืช ืืื ืงืฉืืจืืช ืืื ืืืงืกืืื ืืจืืืืื. ืื ื ืฉืืข ืืืืื ืงืืจื ืืืกื ืคืชืืื ืืืฆืื ืืงืกืืื ืฉืื ืืืคืืขืื ืืืงืกื.
ืืืจ ืืืื ืฉืื ื ืื ืฉืืืืชืืืช ืืืืืจืืช ืืืคืืขืืช ืืืืืง ืืืคื ืฉืืืชืจ ืืืคืืขืื ืืืืงืื ืื, ืืฉืืืชืจ ืืฉืชืืฉ ื Icon Font. ืืจืืข ืฉืืืืจื ื ืืช ืื ืงืืืืช ืื ืืคืืชืจืื ืืื ืงื - ืื ืืื ืฉืืืชืืื ืืืชืจ ืฉื Font Awesome ืคืฉืื ืฆืจืื ืืืกืชืืจ ืืช ืืืืืงืื ืื ืืงืืจื ืืืกื ืขื:
<span class="fa-solid fa-envelope" aria-hidden="true" />
ืื ืื ืื ืืืืงืื ืื ืืืืคื ืืืืืื ืืืืืช ื ืืืฉืื. ืืฉืื ืจืง ืืฉืื ืื ืืืืืืจ ืืช ืืืืคืื ืืืืืื ืืื ืืฉืืฉืชืืฉืื ืืื ืืืชืจ.
Endi mavjud! Telegram Tadqiqoti 2025 โ yilning asosiy insaytlari 
