ToCode
Kanalga Telegram鈥檇a o鈥榯ish
讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽
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
# 讛讬讜诐 诇诪讚转讬: 砖讬谞讜讬 驻专诪讟专 谞讻谞住 讘 JavaScript (讗诇 转谞住讜 讗转 讝讛 讘讘讬转)
讗讝 注砖讬转讬 讗转 讛讘讜讞谉 Front End 砖诇 讟专讬驻诇 讘讬讬讟 (讛讬讛 诪诪砖 讻讬祝 讜拽爪转 诪诇讞讬抓) 讜诪讻诇 讛砖讗诇讜转 专拽 讗讞转 讙专诪讛 诇讬 诇讙专讚 讘专讗砖. 讗谞讬 诇讗 讝讜讻专 讗转 讛谞讜住讞 讛诪讚讜讬拽 砖诇讛诐 讗讘诇 讛谞讛 讙讬专住讛 驻砖讜讟讛 砖诇讬. 谞住讜 诇讞砖讜讘 诪讛 讛拽讜讚 讛讘讗 诪讚驻讬住:
function foo(x) {
x *= 2;
console.log(`00 x = ${x}`);
function bar(y) {
console.log(`11 x = ${x}; y = ${y}`);
y *= 3;
console.log(`22 x = ${x}; y = ${y}`);
}
return bar;
}
foo(2)(5);
讜讛砖讗诇讛 讛诪讚讜讬拽转 讜讛讻讜讗讘转 - 讛讗诐 讛砖讜专讛 讘转讞讬诇转 讛驻讜谞拽爪讬讛 砖诪砖谞讛 讗转 x 讘讗诪转 谞拽诇讟转 讜转讙专讜诐 诇驻讜谞拽爪讬讛 讛驻谞讬诪讬转 诇讛转讬讞住 诇注专讱 讛诪注讜讚讻谉?
诪住转讘专 砖讛转砖讜讘讛 讞讬讜讘讬转 诇诪专讜转 砖诇讗 讛讬讬转讬 诪诪诇讬抓 诇谞住讜转 讗转 讝讛 讘讘讬转. 诪讛诪砖讱 讘讚讬拽讛 注诐 砖驻讜转 转讻谞讜转 讗讞专讜转 诇诪讚转讬 砖讛讗讬谞讟讜讗讬爪讬讛 讛诇讗 谞讻讜谞讛 讛讬讗 砖诇讬 讻讬 讙诐 驻讬讬转讜谉, 讙诐 专讜讘讬 讜讗驻讬诇讜 C 诪转谞讛讙讜转 讘讚讬讜拽 讘讗讜转讛 爪讜专讛.1 419
# 诪讛谉 Callback Functions 讘 CTypes
住驻专讬讬转 ctypes 砖诇 驻讬讬转讜谉 诪讗驻砖专转 诇谞讜 诇讟注讜谉 讻诇 DLL 讜诇讛驻注讬诇 讻诇 驻讜谞拽爪讬讛 诪诪谞讜 讘爪讜专讛 砖拽讜驻讛 诪转讜讱 转讜讻谞讬转 驻讬讬转讜谉. 讛专讘讛 住驻专讬讜转 C 注讜讘讚讜转 讘爪讜专讛 驻砖讜讟讛: 讗谞讞谞讜 拽讜专讗讬诐 诇驻讜谞拽爪讬讛, C 诪讞砖讘 诪砖讛讜 讜诪讞讝讬专 转讜爪讗讛. 诇讚讜讙诪讛 讛转讜讻谞讬转 讛讘讗讛 诪砖转诪砖转 讘 libm 讻讚讬 诇讛注诇讜转 讗转 讛诪住驻专 2 讘讞讝拽转 3 讜诪讚驻讬住讛 讗转 讛转讜爪讗讛 8:
from ctypes import *
from ctypes.util import find_library
libm = CDLL(find_library("m"))
libm.pow.restype = c_double
print(libm.pow(c_double(2), c_double(3)))
讝讛 讛讬讛 讻讬祝, 讗讘诇 诇驻注诪讬诐 讬讛讬讜 诇谞讜 拽讟注讬 拽讜讚 讬讜转专 诪讜专讻讘讬诐 讘砖驻转 C, 拽讟注讬 拽讜讚 砖讬拽讞讜 讛专讘讛 讝诪谉 讜砖爪专讬讻讬诐 诇讚讜讜讞 注诇 讛转拽讚诪讜转 讘诪讛诇讱 讛注讘讜讚讛 砖诇讛诐, 讗讜 拽讟注讬 拽讜讚 砖爪专讬讻讬诐 注讜讚 诪讬讚注 讘 Python 诇驻谞讬 砖讬讜讻诇讜 诇讛讞讝讬专 转讜爪讗讛.
讘诪爪讘讬诐 讻讗诇讛 讛讬讬谞讜 专讜爪讬诐 诇讛注讘讬专 讻讞诇拽 诪讛驻专诪讟专讬诐 诇驻讜谞拽爪讬讬转 C 讙诐 讚专讱 讘讛 讗讜转讜 拽讜讚 C 讬讜讻诇 诇讛驻注讬诇 拽讟注 诪住讜讬诐 诪拽讜讚 讛 Python, 讜讻讱 讗驻讬诇讜 诇驻谞讬 砖讛驻讜谞拽爪讬讛 讞讜讝专转 注诐 转讜爪讗讛 讛讬讗 转讜讻诇 诇讛驻注讬诇 诪讚讬 驻注诐 驻讜谞拽爪讬讜转 驻讬讬转讜谉 砖诇谞讜 讜诇讚讜讜讞 诇讛谉 注诇 讛转拽讚诪讜转 讗讜 诇砖讗讜诇 砖讗诇讜转.
谞转讘讜谞谉 讘拽讜讚 讛讘讗 讘砖驻转 C:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>
void *print_message_function( void *ptr );
int call_some_threads(printer_t done)
{
time_t t;
srand((unsigned) time(&t));
pthread_t thread1, thread2;
int iret1, iret2;
iret1 = pthread_create( &thread1, NULL, print_message_function, (void*) done);
iret2 = pthread_create( &thread2, NULL, print_message_function, (void*) done);
pthread_join( thread1, NULL);
pthread_join( thread2, NULL);
printf("Thread 1 returns: %d\n",iret1);
printf("Thread 2 returns: %d\n",iret2);
return 0;
}
void *print_message_function( void *ptr )
{
int waittime = rand() % 10;
sleep(waittime);
printf("[%d]\n", waittime);
printer_t callback = (printer_t) ptr;
callback(waittime);
return NULL;
}
讛拽讜讚 诪驻注讬诇 砖谞讬 Threads (讻诇 讗讞讚 诪讛诐 讬讞讻讛 诪住驻专 砖谞讬讜转 讗拽专讗讬 讘讬谉 0 诇 9) 讜诪讚驻讬住 诇诪住讱 讻诪讛 讝诪谉 讛讜讗 讞讬讻讛. 讗讘诇, 讜驻讛 讛讟专讬拽, 讻诇 Thread 讻讝讛 诪拽讘诇 讙诐 诪爪讘讬注 诇驻讜谞拽爪讬讛. 讗谞讞谞讜 诇讗 讬讜讚注讬诐 诪讛 转讛讬讛 讛驻讜谞拽爪讬讛 - 讝讜 诪转拽讘诇转 讻驻专诪讟专 done 诇驻讜谞拽爪讬讛 call_some_threads - 讗讘诇 讘住讜祝 讛驻讜谞拽爪讬讛 print_message_function 讜讗讞专讬 砖讛讚驻住谞讜 讛讜讚注转 讚讬讜讜讞 注诇 讛转拽讚诪讜转 诪砖驻转 C 讗谞讞谞讜 诪驻注讬诇讬诐 讗转 讗讜转讛 驻讜谞拽爪讬讛 砖拽讬讘诇谞讜 讻驻专诪讟专.
讗谞讞谞讜 拽讜专讗讬诐 诇驻讜谞拽爪讬讛 砖讛转拽讘诇讛 诇驻专诪讟专 done 讘砖诐 Callback Function 讘讙诇诇 砖讝讜讛讬 驻讜谞拽爪讬讛 讘讗诪爪注讜转讛 拽讜讚 C 拽讜专讗 讘讞讝专讛 诇拽讜讚 驻讬讬转讜谉 砖讛驻注讬诇 讗讜转讜.
讗讞专讬 砖讗拽诪驻诇 讗转 拽讜讘抓 讛 C 讜讗讛驻讜讱 讗讜转讜 诇住驻专讬讛 讚讬谞诪讬转 讗讜讻诇 诇讛驻注讬诇 讗转 讛拽讜讚 讛讘讗 诪 Python 讻讚讬 诇讛注讘讬专 驻讜谞拽爪讬讬转 Python 讘转讜专 注专讱 诇驻专诪讟专 done:
from ctypes import *
mylib = cdll.LoadLibrary("./libmydemo.so")
@CFUNCTYPE(None, c_int)
def print_done(n):
print(f"[Python] waited {n} seconds")
mylib.call_some_threads(print_done)
讛讚拽讜专讟讜专 @CFUNCTYPE 讗讜诪专 诇 ctypes 砖讬砖 驻讛 驻讜谞拽爪讬讛 砖讗驻砖专 诇讛注讘讬专 诇 C, 砖讛讬讗 诪讞讝讬专讛 None 讜诪拽讘诇转 驻专诪讟专 讬讞讬讚 诪住讜讙 int. 讝讛 诪住驻讬拽 讘砖讘讬诇 诇砖诇讜讞 讗讜转讛 讘转讜专 驻专诪讟专 诇驻讜谞拽爪讬讛 call_some_threads 砖讛讜讙讚专讛 讘拽讜讚 讛 C. 讛专爪转 讛转讜讻谞讬转 转讙专讜诐 诇:
1. 讬爪讬专转 砖谞讬 Threads 诪转讜讱 拽讜讚 C.
2. 讻诇 Thread 诪讙专讬诇 诪住驻专 讜诪转讞讬诇 诇讞讻讜转 诪住驻专 砖谞讬讜转 诇驻讬 讛注专讱 砖讛讜讙专诇.
3. 讻砖 Thread 讻诇砖讛讜 诪住讬讬诐 讗转 讛注讘讜讚讛 讛驻讜谞拽爪讬讛 讛诪转讗讬诪讛 讘 C 转讬拽专讗 讜转讚驻讬住 讛讜讚注讛
4. 讗讜转讛 驻讜谞拽爪讬讛 诇讗讞专 诪讻谉 转驻注讬诇 讗转 讛驻讜谞拽爪讬讛 print_done 砖诇 驻讬讬转讜谉 砖讛注讘专谞讜 讻驻专诪讟专 (讜诪讜驻讬注讛 讘拽讜讚 C 讘砖诐 done 讜诇讗讞专 诪讻谉 讘砖诐 callback).
讘注讜诇诐 讛讗诪讬转讬 讗谞讞谞讜 谞专讗讛 讛专讘讛 驻注诪讬诐 拽讜讚 C 砖讬讜爪讗 诇诪砖讬诪讛 讗专讜讻讛 讜诪转讬讬注抓 注诐 驻讬讬转讜谉 讗讜 诪讚讜讜讞 诇讜 注诇 讛转拽讚诪讜转, 讻讗砖专 讻诇 讛转拽砖讜专转 谞注砖讬转 讘诪谞讙谞讜谉 讝讛.1 419
# 讗诐 讬砖 诇讱 砖注讛 诇诇诪讚 谞讜砖讗 讙讚讜诇
讗诐 讬砖 诇讱 砖注讛 诇诇诪讚 谞讜砖讗 讙讚讜诇 讗转讛 讬讻讜诇 诇讘讞讜专-
1. 讗讜 诇注砖讜转 诪讗诪抓 诇诇诪讚 讻诪讛 砖讬讜转专 诪诪谞讜, 诇讛专讗讜转 讻诪讛 砖讬讜转专 讚讜讙诪讗讜转, 诇拽驻讜抓 讘讬谉 讛 Highlights 讻讚讬 砖讗谞砖讬诐 讬专讙讬砖讜 砖讛诐 专讗讜 讛讻诇 讜讬讻讜诇讬诐 诇讞讝讜专 转诪讬讚 诇诪爪讙转 讻砖讬爪讟专讻讜 讗转 讝讛.
2. 讗讜 诇注砖讜转 诪讗诪抓 讛驻讜讱 诇诇诪讚 讻诪讛 砖驻讞讜转 诪诪谞讜, 诇转转 诇讗谞砖讬诐 拽爪转 讻诇讬诐 讜诇转转 诇讛诐 诇讞拽讜专 诇讘讚. 讛诐 诇讗 讬讻住讜 注砖讬专讬转 诪诪讛 砖讛讬讬转 诪讻住讛 讘诪讜驻注 讛诇讛讬讟讬诐 讗讘诇 诇驻讞讜转 讗转讛 讬讜讚注 砖讘驻讬专讜专 讛拽讟谉 讛讝讛 砖讛专讗讬转 诇讛诐 讛诐 讬讜讚注讬诐 讗讬讱 诇讛砖转诪砖 讜讬讚注讜 诪讛 诇注砖讜转 讗讬转讜 讻砖讛讛专爪讗讛 转讬讙诪专 (讜讗讜诇讬 讞诇拽诐 讬爪讗讜 注诐 讛讗谞专讙讬讛 讜讛诪讜讟讬讘爪讬讛 诇讛诪砖讬讱 诇讞拽讜专 讞诇拽讬诐 谞讜住驻讬诐 砖诇 讛谞讜砖讗).
讝讛 拽爪转 讻诪讜 诪讚专讬讱 讟讬讜诇讬诐 砖爪专讬讱 诇讘讞讜专 讗诐 诇专讜抓 讘讬谉 讛讗讟专拽爪讬讜转 讗讜 诇讛讬砖讗专 讘讗转专 讗讞讚 砖讘讜注 砖诇诐. 讜拽爪转 讻诪讜 讘讟讬讜诇 专讜讘 讛讗谞砖讬诐 诪注讚讬驻讬诐 诇转拽转拽 讗讟专拽爪讬讜转 讜诇住诪谉 讜讬. 诇讗 讞讬讬讘讬诐 诇讛拽砖讬讘 诇讛诐.
1 419
# 讗讬讱 诇诪砖讜讱 诪讬讚注 诪讛砖专转 讘讻诇 诪注讘专 谞转讬讘 注诐 Reach Router
诇驻谞讬 讻诪讛 砖谞讬诐 谞讬住讬转讬 诇讘谞讜转 驻专讜讬拽讟 注诐 专讬讗拽讟 专讗讜讟专. 讗讞讚 讛讝讬讻专讜谞讜转 讛拽砖讬诐 砖诇讬 诪诪谞讜 讛讬讛 讛谞讬住讬讜谉 诇砖诇讘 砖诇讬驻转 诪讬讚注 诪爪讚 讛砖专转 注诐 谞转讘 爪讚 诇拽讜讞. 讛讗专讻讬讟拽讟讜专讛 砖专爪讬转讬 诇讘谞讜转 谞专讗转讛 讘注专讱 讻讱:
1. 讘讙讬砖转 HTML 诇砖专转, 讻诇 谞转讬讘 讬讞讝讬专 讘讚讬讜拽 讗转 讗讜转讜 拽讜讚 爪讚-诇拽讜讞.
2. 讚祝 讛 HTML 讬讻讬诇 诪讬讚注 专讗砖讜谞讬 讘讜 讗驻砖专 讬讛讬讛 诇讛砖转诪砖 讻讚讬 诇讛爪讬讙 讗转 讛讚祝 讜讻讱 诇讗 谞爪讟专讱 讘拽砖转 Ajax 谞讜住驻转 讗讞专讬 讟注讬谞转 讛注诪讜讚. 讛诪讬讚注 讛专讗砖讜谞讬 谞砖诪专 讘 HTML 讘转讜专 JSON.
3. 讘讙讬砖转 Ajax 诇讻诇 谞转讬讘 讛砖专转 砖讜诇讞 专拽 讗转 讛诪讬讚注 讘诇讬 讚祝 讛 HTML 砖诪住讘讬讘讜.
讛谞讬转讜讘 讻讜诇讜 谞注砖讛 讘爪讚 诇拽讜讞, 讻诇讜诪专 React Router 讬讝讛讛 讘讗讬讝讛 谞转讬讘 讗谞讞谞讜 讜讬爪讬讙 讗转 讛拽讜诪驻讜谞谞讟讛 讛诪转讗讬诪讛, 讜讻砖注讜讘专讬诐 诇谞转讬讘 讗讞专 谞砖诇讞 讘拽砖转 Ajax 诇砖专转 诇诪砖讜讱 讗转 讛诪讬讚注 砖诇 讛谞转讬讘 讛讞讚砖, 谞砖诪讜专 讗转 讛诪讬讚注 讛讝讛 讘 Redux Store 讜讗讝 谞讬转谉 诇 React Router 诇注砖讜转 讗转 讛拽住诐 砖诇讜 讜诇讛爪讬讙 讗转 讛讚祝 讛讞讚砖.
讞讚讬 讛注讬谉 砖讘讬谉 讛拽讜专讗讬诐 讬讻讜诇讬诐 诇讝讛讜转 讗转 讛 Anti Pattern 讘讗专讻讬讟拽讟讜专讛: 专讬讗拽讟 专讗讜讟专 诇讗 讗讜讛讘 砖诪谞住讬诐 诇讛专讬抓 拽讜讚 "讛讻谞讛" 诇驻谞讬 砖注讜讘专讬诐 谞转讬讘. 讘住讜驻讜 砖诇 讚讘专 讛讛专驻转拽讛 讛讛讬讗 讛住转讬讬诪讛 讘讝讛 砖讝专拽转讬 讗转 React Router 讜讘讞专转讬 讘 Router 讬讜转专 讙诪讬砖 (谞拽专讗 nighthawk 讜诪讗讜讚 诇讗 诪转讜讞讝拽) 砖讚讜讜拽讗 谞转谉 诇讬 诇讘谞讜转 讘讚讬讜拽 讗转 讛诪谞讙谞讜谉 砖专爪讬转讬.
讗专讘注 砖谞讬诐 拽讚讬诪讛 讜讗谞讬 砖讜讘 讘讜谞讛 讗专讻讬讟拽讟讜专转 爪讚 砖专转 讚讜诪讛. 讛驻注诐 诪讬讬拽诇 讙'拽住讜谉 讜专讬讗谉 驻诇讜专谞住 讻讘专 诇讗 注讜讘讚讬诐 讘讬讞讚 讜讛专讗讜讟专 讛讞讚砖 砖诇 专讬讗谉 驻诇讜专谞住 谞拽专讗 Reach Router. 专讬讗拽讟 注讘专讛 诇讛砖转诪砖 讘 Hooks 讜讗谞讬 讻讘专 诇诪讚转讬 砖注讚讬祝 诇讛专讬抓 讗转 拽讜讚 讛 Ajax 讗讞专讬 砖谞讻谞住讬诐 诇谞转讬讘 讛讞讚砖, 讜诇讘谞讜转 讗转 拽讜讚 讛拽讜诪驻讜谞谞讟讜转 讻讱 砖讬讚注 诇讟驻诇 讟讜讘 讘诪爪讘 砖讗讬谉 诇讜 注讚讬讬谉 Data 诇讛爪讬讙. 砖讬诇讜讘 讻诇 讛专注讬讜谞讜转 讛讗诇讛 讛转讞讘专 诇拽讜讚 讛讘讗 注讘讜专 讛拽讜诪驻讜谞谞讟讛 讛专讗砖讬转:
function App(props) {
const location = useLocation();
const loadedUrl = useSelector(state => state.url);
const dispatch = useDispatch();
useEffect(function() {
let active = true;
if (location.pathname === loadedUrl) {
return;
}
axios.get(location.pathname).then(function(response) {
if (active) {
const data = response.data;
dispatch(actions.newAppstateReceived(data));
}
});
return function abort() {
active = false;
}
}, [location.pathname, loadedUrl]);
return (
<Router>
<Home path="/" />
<Post path="/posts/:id" />
</Router>
)
}
讛拽讜讚 讛讝讛 诪砖诪注讜转讬转 讬讜转专 驻砖讜讟, 讬讜转专 拽诇 诇转讞讝讜拽讛 讜诇拽讞 讛专讘讛 驻讞讜转 讝诪谉 诇讻转讜讘 讘讛砖讜讜讗讛 诇驻注诐 讛拽讜讚诪转 砖谞讬住讬转讬 诇讘谞讜转 诪谞讙谞讜谉 讚讜诪讛. 讻诪讛 谞拽讜讚讜转 诪专讻讝讬讜转 砖讛驻讻讜 讗转 讛驻讬转讜讞 诇驻砖讜讟:
1. 讻诇 诪讛 砖讝讝 谞诪爪讗 讘拽讜讚 讛拽讜诪驻讜谞谞讟讛 讘注讝专转 useEffect. 讗谞讬 诪讞讝讬拽 讛专讘讛 驻讞讜转 Middlewares 讜讻诪注讟 砖诇讗 诪砖转诪砖 讘 thunk.
2. 诇诪专讜转 砖诇 axios 讬砖 诪谞讙谞讜谉 讘讬讟讜诇 讘拽砖讜转, 讗谞讬 诪注讚讬祝 诇讛砖转诪砖 讘诪砖转谞讛 驻砖讜讟 讘 useEffect. 讛拽讜讚 讬讜转专 讜驻讞讜转 转诇讜讬 讘诪诪砖拽 砖诇 axios, 讜讝讛 讻诇 讻讱 驻砖讜讟.
3. 讛拽讜讚 注讜讘讚 讘讙诇诇 砖讗谞讬 砖讜诪专 讘 State 讗转 讛谞转讬讘 砖诪诪谞讜 讻诇 讛住讟讬讬讟 讛讝讛 讛讙讬注, 讜讘讙诇诇 砖讻诇 拽讜诪驻讜谞谞讟讛 讬讜讚注转 诇讛爪讬讙 讚祝 "专讬拽" 讻砖讗讬谉 诇讛 诪讬讚注. 讙讬砖讛 讻讝讜 讚讜专砖转 讬讜转专 讝讛讬专讜转 讘注转 讻转讬讘转 讛拽讜诪驻讜谞谞讟讜转.
4. 讗谞讬 讘讻讜讜谞讛 诇讗 砖讜诪专 Cache 砖诇 讛诪讬讚注. 讗诐 讘注转讬讚 讝讛 讬讬讚专砖 讗驻砖专 诇砖诇讘 讗转 axios-cache-plugin 讗讜 驻讬转专讜谉 Cache 讗讞专 讘爪讚 讛诇拽讜讞. 讻讻诇 砖讛拽讜讚 讘转讜讱 讛讗驻拽讟 讬诇讱 讜讬住转讘讱 讗驻砖专 诇讛讜爪讬讗 讗讜转讜 诇 Custom Hook.
住讱 讛讻诇 讗谞讬 诪讗讜讚 诪专讜爪讛 诪诪讛 砖拽专讛 诇专讬讗拽讟 讘砖谞讬诐 讛讗讞专讜谞讜转 讜讘诪讬讜讞讚 讛诪注讘专 诇 Hooks 砖讛讜驻讱 讗转 讻诇 讛讗专讻讬讟拽讟讜专讛 诇讛专讘讛 讬讜转专 谞拽讬讛 讜讛讙讬讜谞讬转.1 419
# 诇讬诪讜讚 驻讗住讬讘讬 讗讜 讗拽讟讬讘讬
谞转讞讬诇 注诐 诇讬诪讜讚 驻讗住讬讘讬 - 讗谞讬 诪讻谞讛 诇讬诪讜讚 驻讗住讬讘讬 诇砖讬讟转 诇讬诪讜讚 讘讛 讗转讛 讬讜砖讘 讜诪砖讛讜 讗讜 诪讬砖讛讜 诪讻谞讬住 讗转 讛讞讜诪专 (讗讜 诪谞住讛 诇讛讻谞讬住) 讗诇讬讱 诇转讜讱 讛专讗砖. 讝讛 讛诇讬诪讜讚 砖谞专讗讛 讻诪讜 驻住 讬讬爪讜专 砖讗谞讞谞讜 讬讜讚注讬诐 讗讬讱 谞讬讻谞住 讗诇讬讜, 讗谞讞谞讜 讬讜讚注讬诐 诪讛 谞注砖讛 讘讻诇 砖诇讘 讘讚专讱 讜讗谞讞谞讜 讬讜讚注讬诐 讗讬讱 谞爪讗 诪诪谞讜. 讘讜讗讜 谞驻转讞 讗转 讝讛:
1. 讘谉 讗讚诐 爪专讬讱 诇专爪讜转 诇诇诪讜讚. 讗讬 讗驻砖专 诇诇诪讚 讬诇讚 讗讜 诪讘讜讙专 谞讙讚 专爪讜谞讜. 讘住讜祝 讗谞讞谞讜 爪专讬讻讬诐 砖讬转讜祝 驻注讜诇讛 砖诇 转诇诪讬讚 讜诪讜专讛. 讛驻讗住讬讘讬讜转 讻讗谉 讛讬讗 诇讗 讘诪讜讘谉 砖诇 专爪讜谉 讗诇讗 讘诪讜讘谉 砖诇 拽讘诇转 讛讞诇讟讛 讜诇拽讬讞转 讗讞专讬讜转.
2. 诇讬诪讜讚 驻讗住讬讘讬 爪专讬讱 住讬诇讘讜住 讗讜 诇驻讞讜转 诪讗驻砖专 讗讜转讜. 讝讛 讘注爪诐 讛讚讬诇: 讗谞讬 讗注砖讛 诪讛 砖转讙讬讚讜 诇讬 讜讘住讜祝 讗讚注 诇注砖讜转 讗转 讛讚讘专讬诐 砖诇讬诪讚转诐 讗讜转讬.
3. 诇讬诪讜讚 驻讗住讬讘讬 讛讜讗 爪驻讜讬: 讛诪讜谉 讗谞砖讬诐 讻讘专 注讘专讜 讗转 讛讚专讱 讛讝讗转 诇驻谞讬讬 讘讗讜转讛 砖讬讟讛. 讗驻砖专 诇诪讚讜讚 讗转 讝讛 讜讗驻砖专 诇砖驻专 讗转 讛砖讬讟讛 讻讚讬 诇砖驻专 讗转 讗讞讜讝讬 讛讛爪诇讞讛.
4. 诇讬诪讜讚 驻讗住讬讘讬 Gets you off the hook (讗谞讬 诇讗 诪讻讬专 讙讬专住讛 注讘专讬转 诇讘讬讟讜讬 讛讝讛). 讛讻诇 讟讜讘, 讗谞讬 注讜砖讛 诪讛 砖讗讜诪专讬诐 诇讬 讜讘住讜祝 讗爪诇讬讞. 讝讛 讛讜驻讱 讗转 转讛诇讬讱 讛诇讬诪讜讚 诇讛专讘讛 驻讞讜转 诪转住讻诇.
5. 诇讬诪讜讚 驻讗住讬讘讬 诪讗驻砖专 讗转 讻诇 诪注专讻转 讛讞讬谞讜讱 讻诪讜 砖讗谞讞谞讜 诪讻讬专讬诐 讗讜转讛.
讗谞讞谞讜 讗讜讛讘讬诐 诇讬诪讜讚 驻讗住讬讘讬. 讝讗转 砖讬讟转 讛诇讬诪讜讚 讛诪讜注讚驻转 注诇 讛注讜诇诐 讻讘专 诪讗讜转 砖谞讬诐 讜讬讛讬讛 拽砖讛 诇讛讬驻专讚 诪诪谞讛. 讗讘诇 讘讻诇 讝讗转 讻爪注讚 专讗砖讜谉 讻讚讗讬 诇砖讬诐 诇讘:
1. 讛专讘讛 讗谞砖讬诐 诇讗 谞讛谞讬诐 诪讛诪住诇讜诇.
2. 讛专讘讛 讗谞砖讬诐 诪专讙讬砖讬诐 砖讛讬注讚 诇讗 讗驻砖专讬 诪讘讞讬谞转诐, 诇诪专讜转 砖讛讘注讬讛 讛讗诪讬转讬转 讛讬转讛 砖讬讟转 讛诇讬诪讜讚.
3. 诇驻注诪讬诐 讙诐 讗谞砖讬诐 砖讻谉 谞讛谞讬诐 诪讛诪住诇讜诇 诪讙诇讬诐 讘住讜祝 讛讚专讱 砖讛诐 诇讗 拽讬讘诇讜 讗转 诪讛 砖讛讘讟讬讞讜 诇讛诐 (讗驻讬诇讜 砖讛诐 讛爪诇讬讞讜 讬驻讛 讘诪讘讞谞讬诐). 讜讗讝 诪讙讬注讛 讗讻讝讘讛 讛专讘讛 驻注诪讬诐 讬讬讗讜砖.
讛谞讛 诪讛 砖讻转讘 诇讬 转诇诪讬讚 讘讗转专 诇驻谞讬 讻诪讛 讬诪讬诐:
> 讘 2013 住讬讬诪转讬 拽讜专住 讘讙'讗讘讛 讘讛爪诇讞讛 讘讙讬讜谉 讘专讬讬住 拽讘诇转讬 爪讬讜谉 讙讘讜讛 讗讱 诇讗 讛爪诇讞转讬 诇诪爪讜讗 注讘讜讚讛 诇诇讗 谞讬住讬讜谉 讜诪讗讝 诇讗 谞讙注转讬 讘驻讬转讜讞.
讝讗转 转讜爪讗讛 砖诇 讛专讙诇讬 诇讬诪讜讚 驻讗住讬讘讬讬诐 讜讝讛 诪砖驻讟 砖诪讗驻讬讬谉 讻诇 讻讱 讛专讘讛 讗谞砖讬诐 砖讻讘专 讛驻讱 诇拽诇讬砖讗讛.
讗讝 诪讛 讛讗诇讟专谞讟讬讘讛?
讗谞讬 诪讻谞讛 诇讬诪讜讚 讗拽讟讬讘讬 诇转讛诇讬讱 诇讬诪讜讚讬 讘讜 讗谞讬 诇讜拽讞 讗讞专讬讜转 注诇 讛诇讬诪讜讚 砖诇讬. 转讛诇讬讱 讘讜 讗谞讬 讬讜爪专 诇注爪诪讬 讗转 讛住讬诇讘讜住 讜诪砖谞讛 讗讜转讜 诇讗讜专讱 讛转讛诇讬讱; 转讛诇讬讱 讘讜 讗谞讬 讘讜讞专 诇注爪诪讬 讗转 讛诪讜专讬诐 讜诪讞诇讬祝 讗讜转诐 诇讗讜专讱 讛转讛诇讬讱; 转讛诇讬讱 讘讜 讗谞讬 诇讗 讬讜讚注 讻诪讛 讝诪谉 讝讛 讬讬拽讞 讗讜 讗驻讬诇讜 讗讬讱 讝讛 讬专讗讛 讻砖讝讛 讬讬讙诪专, 讗讘诇 讗谞讬 住讜诪讱 注诇 注爪诪讬 砖讝讛 讬住转讚专. 讘讜讗讜 谞驻转讞 讗转 讝讛:
1. 讘谉 讗讚诐 爪专讬讱 诇专爪讜转 诇诇诪讜讚. 讗讬 讗驻砖专 诇诇诪讚 讬诇讚 讗讜 诪讘讜讙专 谞讙讚 专爪讜谞讜. 讘住讜祝 讗谞讞谞讜 爪专讬讻讬诐 砖讬转讜祝 驻注讜诇讛 砖诇 转诇诪讬讚 讜诪讜专讛. 讗讘诇 注讻砖讬讜 讗谞讞谞讜 爪专讬讻讬诐 讙诐 讛转诪讚讛 讜诇讛诪砖讬讱 诇专爪讜转 诇诇诪讜讚 讻诇 讬讜诐. 讝讛 诇讗 诪住驻讬拽 诇专爪讜转 诇诇诪讜讚, 诇讛讬专砖诐 诇拽讜专住 讜诇专讜抓 注诇 讗讜讟讜诪讟. 爪专讬讱 诇拽讘诇 讗转 讛讛讞诇讟讛 讻诇 讬讜诐 诪讞讚砖.
2. 讗讬谉 住讬诇讘讜住. 讗讜 诇驻讞讜转 诇讗 讻讝讛 砖讗谞讬 讬讻讜诇 诇讛转讞讬讬讘 注诇讬讜. 讬讻讜诇 诇讛讬讜转 砖注讻砖讬讜 谞专讗讛 诇讬 砖讗谞讬 专讜爪讛 诇诇诪讜讚 专砖讬诪讛 砖诇 10 谞讜砖讗讬诐, 讗讘诇 讗讝 讗讞专讬 砖讗诇诪讚 讗转 讛砖谞讬讬诐 讛专讗砖讜谞讬诐 讗讙诇讛 砖讘注爪诐 讛-8 讛讘讗讬诐 讛专讘讛 驻讞讜转 诪诇讛讬讘讬诐, 讜讬砖 砖谞讬 谞讜砖讗讬诐 讗讞专讬诐 砖讗谞讬 专讜爪讛 诇讛诪砖讬讱 讗诇讬讛诐. 讗诐 讗谞讬 讘讜谞讛 讗转 转讜讻谞讬转 讛诇讬诪讜讚讬诐 讘砖诇讘 砖讗谞讬 诇讗 讬讜讚注 注讚讬讬谉 讗转 讛讞讜诪专, 讗讬谉 住讬讻讜讬 (讜讙诐 讗讬谉 爪讜专讱) 砖讛讬讗 转讛讬讛 讟讜讘讛.
3. 讛诇讬诪讜讚 诇讗 爪驻讜讬. 讗讬谉 诇讬 诪讜砖讙 讻诪讛 讝诪谉 讬讬拽讞 诇讬 诇诇诪讜讚 谞讜砖讗 诪住讜讬诐 讗讜 讗讬驻讛 讗谞讬 讗转拽注 讘讚专讱. 讗讬谉 诇讬 诪讜砖讙 讻诪讛 谞讜砖讗讬诐 讗谞讬 讗爪讟专讱 诇诇诪讜讚 注讚 砖讗诪爪注 注讘讜讚讛, 讗谞讬 讗驻讬诇讜 诇讗 讬讜讚注 讗讬讱 转讬专讗讛 讛注讘讜讚讛 讛讝讗转.
4. 讛讗讞专讬讜转 讻讜诇讛 注诇讬讬. 讗诐 讗谞讬 诇讗 讗讘讞专 讗转 讛谞讜砖讗讬诐 讛谞讻讜谞讬诐 讗讜 讗转 诪拽讜专讜转 讛诪讬讚注 讛谞讻讜谞讬诐 讛诇讬诪讜讚 讬讬拽讞 讛专讘讛 讬讜转专 讝诪谉 讜讬注讘讜专 讚专讱 讛专讘讛 讬讜转专 讘讜专讜转.
讻砖讗谞讬 拽讜专讗 讗转 讗专讘注转 讛谞拽讜讚讜转 讗谞讬 专讜爪讛 诇讘专讜讞: 讗讬讱 讗谞讬 讗驻讬诇讜 诪注讝 诇讛爪讬注 诇讛讞诇讬祝 转讛诇讬讱 爪驻讜讬, 专讙讜注 讜诪砖专讛 讘讬讟讞讜谉 讘专讻讘转 讛讛专讬诐 讛讝讗转 砖谞拽专讗转 诇讬诪讜讚 讗拽讟讬讘讬? 诪讬 转讘讞专 讘讝讛? 讜诇诪讛?
讛讬转专讜谉 讛诪专讻讝讬 讘诇讬诪讜讚 讗拽讟讬讘讬 讛讜讗 砖讗转讛 诇讗 讬讻讜诇 诇讛讬讻砖诇. 诇讗 讘讗诪转. 讗诐 讛讞诇讟转 砖讗转 讛讜诇讻转 诇诇诪讜讚 转讻谞讜转 注讚 砖转诪爪讗讬 注讘讜讚讛 转诪讬讚 转讜讻诇讬 诇讛诪砖讬讱 诇诇诪讜讚 讜转诪讬讚 转讜讻诇讬 诇诪爪讜讗 诇注爪诪讱 注讜讚 讗转讙专 诇讘谞讜转 讜注讜讚 住驻专 诇拽专讜讗. 诇讬诪讜讚 讗拽讟讬讘讬 诪讗驻砖专 诇讱 诇讘谞讜转 转讛诇讬讱 诇讬诪讜讚 讘讚专讱 砖诇讱 砖讗讜诇讬 诇讗 诪转讗讬诪讛 诇专讜讘 讛讗谞砖讬诐, 讗讘诇 讝讛 讘讻诇诇 诇讗 诪砖谞讛.
1 419
# 砖诇讜砖讛 诇拽讞讬诐 诪住拽讬专转 讘住讬住 谞转讜谞讬诐 讬砖谉
讘住讬住讬 谞转讜谞讬诐, 拽爪转 讻诪讜 拽讘爪讬 CSS, 讛诐 讚讘专 砖拽诇 诪讗讜讚 诇讛讜住讬祝 讗诇讬讜 诪讬讚注 讜诪讗讜讚 拽砖讛 诇转讞讝拽. 讞诇拽 诪讛住讬讘讜转 拽砖讜专讜转 诇诪讘谞讛 砖诇 讛讚讘专: 讟讘诇讛 讛讬讗 讙诇讜讘讗诇讬转 讻讱 砖诪讻诇 诪拽讜诐 讘讬讬砖讜诐 讗讜 诪讻诇 住拽专讬驻讟 讗驻砖专 诇讙砖转 讗诇讬讛, 拽砖讛 诇讝讛讜转 讗转 讻诇 讛诪拽讜诪讜转 砖谞讬讙砖讬诐 诇讟讘诇讛 诪住讜讬诪转 讜讘讚专讱 讻诇诇 讗谞讞谞讜 诇讗 诪驻注讬诇讬诐 注诇 讘住讬住 讛谞转讜谞讬诐 讗转 讗讜转诐 住讟谞讚专讟讬诐 砖诇 驻讬转讜讞 砖讗谞讞谞讜 砖讜诪专讬诐 诇拽讜讚 砖诇谞讜. 专讜讘 讛诪转讻谞转讬诐 讙诐 诇讗 讛讻讬 讗讜讛讘讬诐 诇讘谞讜转 讘住讬住讬 谞转讜谞讬诐 讜诇讗 转诪讬讚 诪讘讬谞讬诐 诪住驻讬拽 SQL - 讗谞讞谞讜 诪注讚讬驻讬诐 诇讻转讜讘 拽讜讚.
讜讻讻讛 讘诪拽专讛 注讘专转讬 讛讬讜诐 注诐 讞讘专 注诇 讘住讬住 谞转讜谞讬诐 讬砖谉 讜讘专讙注讬诐 讻讗诇讛 驻讜讙注 讘讱 讻诇 讛诇讻诇讜讱 讘诪讻讛 讗讞转 讜诪讝讻讬专 砖讗讜诇讬 讻谉 讗驻砖专 诇讘谞讜转 讗转 讛讚讘专讬诐 讟讜讘 讬讜转专, 讗讜 诇驻讞讜转 注讜讝专 诇住讚专 讘专讗砖 讗转 讛讟注讜讬讜转 砖诇讗讜专讱 砖谞讬诐 讛讜驻讻讜转 诇讙专讜注讜转 讘讬讜转专. 讗讝 讘砖讘讬诇讻诐 讜讘砖讘讬诇 讛讗谞讬 讛注转讬讚讬 讛谞讛 砖诇讜砖讛 讚讘专讬诐 砖讗谞讬 诪诪砖 诪拽讜讜讛 砖讗爪诇讬讞 诇注砖讜转 讟讜讘 讬讜转专 讘驻注诐 讛讘讗讛:
## 诪讞拽讜 讟讘诇讗讜转 讜注诪讜讚讜转 讬砖谞讜转
拽诇 诪讗讜讚 诇讛讜住讬祝 注诪讜讚讛 讗讜 讟讘诇讛 讻砖讗谞讬 爪专讬讱 讗转 讛诪讬讚注 讛讞讚砖 讘诪注专讻转. 讛专讘讛 讬讜转专 拽砖讛 诇诪讞讜拽 讗转 讛注诪讜讚讛 讗讜 讛讟讘诇讛 讻砖诪讜讞拽讬诐 讗转 讛拽讜讚 砖诪砖转诪砖 讘讛. 讜讻诪讜 拽讘爪讬 CSS 讙诐 讘住讬住讬 谞转讜谞讬诐 谞讜讟讬诐 诇讛转谞驻讞 诇讗讜专讱 讛砖谞讬诐 讘诪讬讚注 诪讬讜转专 砖谞砖诪专 讘讟讘诇讗讜转 诪讬讜转专讜转.
讘谞讜砖讗 砖诇 诪讞讬拽讛 讬砖 讘注讬讛 诪讘谞讬转 讘讘住讬住讬 谞转讜谞讬诐: 讗转 讻诇 讛讛讬住讟讜专讬讛 砖诇 讛拽讜讚 砖诇谞讜 讗谞讞谞讜 砖讜诪专讬诐 讘 git, 讗讘诇 讛讛讬住讟讜专讬讛 砖诇 讘住讬住 谞转讜谞讬诐 谞砖诪专转 专拽 讘讙讬讘讜讬讬诐 讜讘讛诐 拽砖讛 诇讞驻砖 讜讙诐 讝讛 诇讗 驻专拽讟讬 诇砖诪讜专 讙讬讘讜讬讬诐 诇讻诇 谞拽讜讚讛 讘讛讬住讟讜专讬讛. 讜讻讱 讬讜爪讗 砖讗谞讞谞讜 驻讜讞讚讬诐 诇诪讞讜拽 讟讘诇讗讜转 讜注诪讜讚讜转 讻讬 讗讜诇讬 谞爪讟专讱 讘注转讬讚 讗转 讛诪讬讚注 讛讝讛.
驻讬转专讜谉 讗讞讚 砖讬讻讜诇 诇注讝讜专 讻讗谉 讛讜讗 诇拽讞转 讟讘诇讗讜转 讬砖谞讜转 讜诇讬爪讜专 注讜转拽讬诐 拽驻讜讗讬诐 砖诇讛诐. 诇讚讜讙诪讛 诇讛注转讬拽 讗转
orders 诇 orders_2017, 讗讜 诇讛注讘讬专 讟讘诇讗讜转 讬砖谞讜转 诇住讻讬诪讛 讗讞专转. 讘爪讜专讛 讻讝讗转 拽诇 诇讛住转讻诇 注诇 讘住讬住 谞转讜谞讬诐 讜诇讛讘讬谉 讗讬讝讛 讟讘诇讗讜转 注讚讬讬谉 专诇讜讜谞讟讬讜转 讜讗讬讝讛 讻讘专 诇讗, 讜注讚讬讬谉 讛诪讬讚注 讛讬砖谉 讬讛讬讛 讝诪谉 讗诐 谞爪讟专讱 讗讜转讜.
## 讘讞专讜 砖诪讜转 讘注诇讬 诪砖诪注讜转 诇注诪讜讚讜转
砖诐 讻诪讜 price 讛讜讗 诪讛讬专 诇讛拽诇讚讛 讗讘诇 讻砖诪住转讻诇讬诐 注诇讬讜 砖谞转讬讬诐 讗讞专讬 诇讗 转诪讬讚 拽诇 诇讝讻讜专 讗诐 讛诪讞讬专 讛讜讗 讘砖拽诇讬诐 讗讜 讘讗讙讜专讜转. 讗讜转讜 讚讘专 注诐 duration 砖讬讻讜诇 诇讛讬讜转 讘砖谞讬讜转, 砖注讜转 讗讜 讬诪讬诐 讜注讜讚 讗讬谞住驻讜专 注诪讜讚讜转 砖讛砖诐 砖诇讛谉 讗讜诇讬 讗诪专 诇讱 诪砖讛讜 讻砖讬爪专转 讗讜转谉 讗讘诇 注讻砖讬讜 讻诇 诪讛 砖讬砖 砖诐 讝讛 诪住驻专讬诐 砖爪专讬讱 诇谞讞砖 讗转 诪砖诪注讜转诐.
诪诪讬诇讗 讬讛讬讜 诇谞讜 驻讜谞拽爪讬讜转 诇注讘讜讚讛 注诐 讘住讬住 讛谞转讜谞讬诐 讜讗讬谉 讘注讬讛 讘拽讜讚 诇注砖讜转 讗转 讛讛诪专讛 讗讜讟讜诪讟讬转 (诇讚讜讙诪讛 诇讻转讜讘 price 讜诇拽讘诇 注讚讻讜谉 砖诇 注诪讜讚转 price_in_agorot). 诪讗讜转讛 住讬讘讛 讙诐 诇讗 讛讬讬转讬 讘讜讞专 讛讬讜诐 注诪讜讚讛 讻诪讜 start_dt 讗讜 minprice. 砖诪讜转 诪诇讗讬诐 讜讗专讜讻讬诐 讬注砖讜 诇诪注专讻转 砖诇讻诐 专拽 讟讜讘.
## 砖讬诪专讜 注诇 讗讞讬讚讜转
住讟谞讚专讟讬诐 讝讛 讚讘专 谞驻诇讗 讻诇 注讜讚 讗谞讞谞讜 诪拽驻讬讚讬诐 诇讛砖转诪砖 讘讛诐 讘讻诇 讛诪拽讜诪讜转. 诇讚讜讙诪讛 讗诐 讛讞诇讟转诐 砖讟讘诇转 讞讬讘讜专 转讛讬讛 诪讜专讻讘转 诪砖诪讜转 砖转讬 讛讟讘诇讗讜转 注诐 拽讜 转讞转讬 讘讬谞讬讛谉 诪住讜讚专讜转 讘住讚专 诇拽住讬拽讜讙专驻讬 (诪讛诪诐), 讗讝 讗讬谉 诪拽讜诐 诇讘讟诇讛 讻诪讜 product_in_invoice. 讛诪讬诇讛 in 专拽 诪驻专讬注讛 诇诪讬 砖拽讜专讗 注讻砖讬讜 诪讛专 讗转 专砖讬诪转 讛讟讘诇讗讜转.
讗讜转讜 讚讘专 诇讙讘讬 注诪讜讚讜转 砖诇 诪驻转讞 讝专 (砖讻讚讗讬 砖驻砖讜讟 讬讬拽专讗讜 讘砖诐 讛讟讘诇讛 讛讝专讛 讜讗讞专讬讛 拽讜 转讞转讬 讜 id), 讜讗讬谞讚拽住讬诐 砖谞讜讞 诪讗讜讚 诇拽专讜讗 诇讛诐 讘砖诐 砖诇 讛砖讚讜转 注诇讬讛诐 讛诐 驻讜注诇讬诐.
讜讗讜转讜 讻诇诇 诇讙讘讬 Null Values: 讗讜 砖讗转诐 诪讜讻谞讬诐 诇拽讘诇 注专讻讬 Null 讘注诪讜讚讜转 转讗专讬讱 讗讜 砖诇讗, 讗讘诇 讗诐 讞诇拽 诪讛专砖讜诪讜转 讬讻讜诇讜转 诇讛讬讜讜爪专 讘诇讬 转讗专讬讱 讬爪讬专讛 讜讗讞专讜转 诪讞讬讬讘讜转 讗讜转讜 讗讝 讻砖谞住转讻诇 讘讘住讬住 讛谞转讜谞讬诐 诇讗 谞讘讬谉 诇诪讛 讝讛 拽讜专讛 讜讗诐 讘讗诪转 爪专讬讱 讗转 讝讛 讗讜 砖住转诐 诪讬砖讛讜 砖讻讞 讛讙讚专讛.
讬砖 诇讻诐 讟讬驻讬诐 谞讜住驻讬诐 讗讬讱 诇砖诪讜专 注诇 讘住讬住讬 谞转讜谞讬诐 谞拽讬讬诐? 住驻专讜 诇讬 讘转讙讜讘讜转.1 419
# 讞讬讚转 驻讬讬转讜谉 讜 C
讚谞讬 转讜讻谞讬转谞讬 讞砖讘 砖讬讜讻诇 诇讞砖讘 诪住驻专讬 驻讬讘讜谞讗爪'讬 讛专讘讛 讬讜转专 诪讛专 讗诐 讬注讘讬专 讗转 驻讜谞拽爪讬讬转 讛讞讬砖讜讘 诪 Python 诇 C. 讛驻讜谞拽爪讬讛 讘 Python 谞专讗转讛 讻讱:
def fib(n):
x, y = 0, 1
for i in range(n):
x, y = y, x + y
return y
讜讚谞讬 砖讻讘专 讬讜讚注 讚讘专 讗讜 砖谞讬讬诐 注诇 讞讬讘讜专 驻讬讬转讜谉 诇 C 讛诇讱 讜转讬专讙诐 讗转 讛拽讜讚 诇 C 讘讗讜驻谉 讛讘讗:
static PyObject *
spam_fib(PyObject *self, PyObject *args)
{
int n;
if (!PyArg_ParseTuple(args, "i", &n))
return NULL;
unsigned long x = 0, y = 1;
unsigned long temp;
for (int i=0; i < n; i++) {
temp = x;
x = y;
y = temp + x;
}
return PyLong_FromUnsignedLong(y);
}
讗讞专讬 拽讜诪驻讬诇爪讬讛 讜讘讚讬拽讛 拽爪专讛 砖诇 讛拽讜讚 讛讘讗:
import spam
print(spam.fib(5))
讚谞讬 砖诪讞, 讚讞祝 讗转 讛拽讜讚, 讛注诇讛 讙讬专住讛 讜讛诪砖讬讱 诇驻谞拽 讗转 注爪诪讜 讘讻讜住 拽驻讛. 讛诪讬诐 注讜讚 诇讗 讛住驻讬拽讜 诇专转讜讞 讻砖讛讟诇驻讜谞讬诐 讛转讞讬诇讜 诇讛讙讬注...
诪讛 讚谞讬 砖讘专?1 419
# 讛转谞讛讙讜转 讘专讬专转 诪讞讚诇
讗祝 驻注诐 诇讗 谞住注转讬 诇讗讬诇转 讘讗讜讟讜. 讘专讜专, 讘讗讜讟讜讘讜住, 讘讟讬讜诇讬诐 砖谞转讬讬诐 讗讜 讻诇 诪讬谞讬 讛讝讚诪谞讜讬讜转; 讜讘专讜专, 讘诪讟讜住 诇谞讜驻砖; 讗讘诇 讗讬讻砖讛讜 讛拽讟注 砖诇 诇谞住讜注 诇讗讬诇转 讘讗讜讟讜 讚讬诇讙 注诇讬讬. 诇诪专讜转 讝讗转 讗谞讬 讚讬 讘讟讜讞 砖讗谞讬 讗讚注 诪讛 诇注砖讜转 讗诐 讗爪讟专讱 诇注砖讜转 讗转 讛谞住讬注讛: 讻转讜讘转 诇讜讜讬讝, 驻诇讬讬诇讬住讟 砖讛讬诇讚讬诐 讗讜讛讘讬诐 讘住驻讜讟讬驻讬讬, 讘讟讞 诇诪诇讗 讚诇拽 讜讗诐 讬讛讬讛 诇讬 诪讝诇 讙诐 注爪讬专转 拽驻讛 讘讗讬讝讛 转讞谞讛 讘讗诪爪注.
讛转谞讛讙讜讬讜转 讘专讬专转 诪讞讚诇 注讜讝专讜转 诇谞讜 诇讛转诪讜讚讚 注诐 讗转讙专讬诐 讞讚砖讬诐 讜诇讗 诪讜讻专讬诐 讜注讜讝专讜转 诇转转 诇谞讜 转讞讜砖转 讘讬讟讞讜谉 讘转讜讱 讛讘诇讗讙谉. 讗谞讬 讚讬 讘讟讜讞 砖讗讙讬注 讘住讜祝 诇讗讬诇转 讘砖讬讟讛 砖讘讞专转讬 诇诪专讜转 砖讗祝 驻注诐 诇讗 谞住注转讬 诇砖诐, 驻砖讜讟 讻讬 诪住驻讬拽 驻注诪讬诐 讛讙注转讬 讻讻讛 诇诪拽讜诪讜转 砖讗祝 驻注诐 诇讗 讛讬讬转讬 讘讛诐.
讙诐 讘讛转诪讜讚讚讜转 注诐 讘讗讙讬诐 诪转讻谞转讬诐 讘讜讞专讬诐 讙讬砖讜转 讘专讬专转 诪讞讚诇: 讬讛讬讜 讗转 讗诇讛 砖讬诪讞拽讜 砖讜专讜转 注讚 砖讬诪爪讗讜 诪讛 砖讘讜专, 讬砖 诪讬 砖诪讜住讬驻讛 讛讜讚注讜转 诇讜讙, 讬砖 诪讬 砖诪驻注讬诇 Debugger 讻讚讬 诇讛讘讬谉 诪讛 讛转讜讻谞讬转 注讜砖讛 讘讻诇 砖诇讘 讜讬砖 讗转 诪讬 砖诪讬讚 诪注转讬拽讛 诇讙讜讙诇 讗转 讛讜讚注转 讛砖讙讬讗讛 讻讚讬 诇诪爪讜讗 讗诐 注讜讚 诪讬砖讛讜 谞转拽诇 讘诪砖讛讜 讚讜诪讛.
讻诇 讛讙讬砖讜转 讟讜讘讜转 讜讻诇 注讜讚 讛讙讬砖讛 砖讘讞专转诐 注讜讘讚转 诇讻诐 砖讜讜讛 诇讛诪砖讬讱 讗讜转讛. 讗讘诇 讬砖 讙讬砖讛 讗讞转 砖讗谞讬 讻诪注讟 诇讗 专讜讗讛 诪讬讜砖诪转 讜讞讘诇 - 讜讛讬讗 诇拽专讜讗 诪讞讚砖 讗转 讛转讬注讜讚. 讛专讘讛 诪讗讜讚 驻注诪讬诐 讗谞讞谞讜 讻讜转讘讬诐 拽讜讚 砖诇讗 注讜讘讚 讜诇讗 讬讻讜诇 诇注讘讜讚. 讛拽讜讚 讛讝讛 讘谞讜讬 注诇 讻诇 诪讬谞讬 讛谞讞讜转 砖讙讜讬讜转 讗讜 讞讜住专 讛讘谞讛 砖诇 诪讛 讛住驻专讬讛 注讜砖讛. 讛专讘讛 驻注诪讬诐 讗谞讬 诪讜爪讗 讗爪诇 转诇诪讬讚讬诐 砖诇讬 拽讜讚 砖诪谞住讛 诇驻转讜专 讘注讬讛 讘爪讜专讛 注拽讜诪讛 讻砖讘转讬注讜讚 诪诪砖 诪讜驻讬注讛 讛讚专讱 讛谞讻讜谞讛 诇讛转诪讜讚讚 注诐 讛讘注讬讛, 讜诇驻注诪讬诐 讗驻讬诇讜 讛住讘专 诪驻讜专讟 诇诪讛 讛讙讬砖讛 讛注拽讜诪讛 诇讗 注讜讘讚转. 拽专讬讗讛 诪讞讚砖 砖诇 讛转讬注讜讚 (讜诇驻注诪讬诐 讙诐 砖诇 拽讜讚 讛住驻专讬讛 注爪诪讛) 讬讻讜诇讛 诇转转 诇讻诐 讛讘谞讛 讟讜讘讛 讬讜转专 砖诇 讛讘注讬讛 讜讛驻讬转专讜谞讜转 讛讗驻砖专讬讬诐, 讜讗讜诇讬 讗讞专讬讛 转讙诇讜 砖爪专讬讱 诇拽讞转 爪注讚 讙讚讜诇 讗讞讜专讛. 讝讛 讻谞专讗讛 讛专讘讛 驻讞讜转 讻讬祝 诪诇诪爪讜讗 讘讙讜讙诇 讗讬讝讜 砖讜专讛 诇讛讚讘讬拽 砖转驻转讜专 讗转 讛讘注讬讛, 讗讘诇 住讬讻讜讬 讟讜讘 砖讚讜讜拽讗 讙讬砖讛 讝讜 讛讬讗 砖转讛驻讜讱 讗转讻诐 诇诪转讻谞转讬诐 讟讜讘讬诐 讬讜转专 诇讟讜讜讞 讛专讞讜拽.
1 419
# 讛砖谞讛 2020, 讜讗谞讬 注讚讬讬谉 讻讜转讘 注讘专讬转 讛驻讜讱
讛拽讜讚 讛讘讗 讘 pyglet 诪爪讬讙 讗转 讛讟拽住讟 讘注讘专讬转 讘讻转讘 诪专讗讛:
import pyglet
from pyglet import shapes
window = pyglet.window.Window(960, 540)
label = pyglet.text.Label('砖诇讜诐 注讜诇诐',
font_name='Times New Roman',
font_size=36,
x=window.width//2, y=window.height//2,
anchor_x='center', anchor_y='center')
@window.event
def on_draw():
window.clear()
label.draw()
pyglet.app.run()
注讻砖讬讜 讛驻讜住讟 讛讝讛 讛讜讗 诇讗 拽讬讟讜专 注诇 pyglet, 讘讚讬讜拽 讛讛讬驻讱. 讬砖 讘注讬讜转 讘转讻谞讜转 砖讛谉 诪住讜讘讻讜转: 谞讬讛讜诇 讝讬讻专讜谉, 讻转讬讘转 拽讜讚 诪讗讜讘讟讞, 讘讬爪讜注 讞讬砖讜讘 诪讘讜讝专 讗讜 诪拽讘讬诇讬, 讜讻谉 讙诐 讟讬驻讜诇 讘讟拽住讟 讘注讘专讬转. 讛谉 诪住讜讘讻讜转 讘诇讬 拽砖专 诇驻专讬讬诪讜讜专拽 砖诇讱, 诇诪专讜转 砖驻专讬讬诪讜讜专拽讬诐 专讘讬诐 注讜讝专讬诐 诇谞讜 诇讚诇讙 注诇 讛讞诇拽 讛诪住讜讘讱 讗诐 谞住讻讬诐 诇拽讘诇 讗转 讛讻诇诇讬诐 砖诇讛诐.
讛诪转讻谞转讬诐 讛讻讬 讟讜讘讬诐 砖讗谞讬 诪讻讬专 讛诐 诇讗 讗诇讛 砖诪讻讬专讬诐 讗转 讻诇 讛驻讜谞拽爪讬讜转 砖诇 讻诇 驻专讬讬诪讜讜专拽. 讛诪转讻谞转讬诐 讛讻讬 讟讜讘讬诐 砖讗谞讬 诪讻讬专 讛诐 讗诇讛 砖诪讻讬专讬诐 讗转 讻诇 讛讛讬讘讟讬诐 讜讗转 讛住讬讘讜讱 讘讘注讬讜转 注爪诪谉. 讛住讬讘讜讱 诇讗 谞注诇诐 讻砖讘讞专转讬 驻专讬讬诪讜讜专拽 诪住讜讬诐, 讛讜讗 专拽 诇驻注诪讬诐 诪转讞讘讗 讟讜讘 讬讜转专.1 419
# 讛驻讜谞拽爪讬讛 getByRole 讘 react-testing-library
讗讞讚 讛讚讘专讬诐 砖讛讻讬 拽砖讛 诇讛讻讬诇 讘诪注讘专 诇 react-testing-library 讛讜讗 讛讞砖讬讘讜转 讛讙讚讜诇讛 砖诪驻转讞讬 讛住驻专讬讛 诪注谞讬拽讬诐 诇 Accessibility Roles. 讘注讜讚 专讜讘 住驻专讬讜转 讛讘讚讬拽讛 谞讜转谞讜转 诇谞讜 诇讛讙讬注 诇讗诇诪谞讟讬诐 讘讗讬讝讜 爪讜专讛 砖讗谞讞谞讜 专讜爪讬诐 (讚专讱 CSS 讗讜 讗驻讬诇讜 XPath), 讻砖诪讙讬注讬诐 诇 react-testing-library 诪讙诇讬诐 砖 getByCSS 讝讜 诇讗 驻讜谞拽爪讬讛 讗诪讬转讬转 砖诐.
讛砖讬谞讜讬 讛讟讻谞讬 讛讝讛 谞讜讘注 诪砖讬谞讜讬 转驻讬住讛 诇讙讘讬 转驻拽讬讚 讛讘讚讬拽讛 讜诪讛 讗谞讞谞讜 专讜爪讬诐 诇讘讚讜拽: 讘注讜讚 住驻专讬讜转 讘讚讬拽讛 诪住讜专转讬讜转 专讜爪讜转 诇讘讚讜拽 砖讚讘专讬诐 诪讙讬注讬诐 诇 DOM 讘爪讜专讛 谞讻讜谞讛, 讘 react-testing-library 讗谞讞谞讜 专讜爪讬诐 诇讘讚讜拽 讬讜转专 诪讝讛, 讗谞讞谞讜 专讜爪讬诐 诇讘讚讜拽 砖讗谞讞谞讜 诪讘讬谞讬诐 讗转 讛注诪讜讚 砖诇谞讜 讻诪讜 砖诪砖转诪砖 诪讘讬谉 讗讜转讜. 讛诪注讘专 诇 getByRole 诪讛讜讜讛 砖讬谞讜讬 讘谞拽讜讚转 讛诪讘讟.
砖讬诪讜 诇讘 诇拽讟注 讛讘讗 诇讚讜讙诪讛 砖讛爪讙转讬 讘讜讜讘讬谞专 讗转诪讜诇:
export default function SimpleList({ items }) {
const [filter, setFilter] = useState('');
return (
<>
<input
type="search"
value={filter}
onChange={(e) => setFilter(e.target.value)}
name="filter-list"
/>
<ul>
{items.filter(item => item.text.includes(filter)).map((item, idx) => (
<li
key={item.id}
className={(idx + 1) % 2 === 0 ? "even" : "odd"}
>
{item.text}
</li>
))}
</ul>
</>
);
}
讘住驻专讬讬转 讘讚讬拽讜转 专讙讬诇讛 讛讬讬转讬 讬讻讜诇 诇讛砖转诪砖 讘 CSS 讻讚讬 诇讛讙讬注 诇讗诇诪谞讟 讛 input 讜诇诪砖诇 诇拽专讜讗 诇:
document.querySelector('input[name="filter-list"]')
讗讘诇 讘诪注讘专 诇 react-testing-library 讜讘驻专讟 讗诐 讗谞讬 诪讜讻谉 诇拽讘诇 讗转 讛砖讙注讜谞讜转 砖诇讛诐 讜诇讛砖转诪砖 讘 getByRole 讗谞讬 讗讙诇讛 砖拽砖讛 诇讬 诇转驻讜住 讗转 讗诇诪谞讟 讛 input 讛讝讛. 讛拽讜讚 讛讘讗 讬注讘讜讚:
const el = screen.getByRole('searchbox');
谞讜 讜讝讛 注讜讘讚 讻诇 注讜讚 讬砖 转讬讘讛 讗讞转 注诇 讛诪住讱. 讛讜住驻讛 砖诇 转讬讘讛 谞讜住驻转 诇拽讜诪驻讜谞谞讟讛 转砖讘讜专 讗转 讛讘讚讬拽讛, 讜讗讬谉 诇讬 讚专讱 讘讗诪爪注讜转 getByRole 诇爪讬讬谉 讗祝 讗讞讚 诪讛诪讗驻讬讬谞讬诐 砖诇 讛 input 讻讚讬 砖讬注讝专讜 诇讬 诇讘讞讜专 讗转 讛讗诇诪谞讟 砖讗谞讬 专讜爪讛.
讛诪注讘专 诇 getByRole 诪讻专讬讞 讗讜转讬 诇讞砖讜讘 讻诪讜 讛诪砖转诪砖 - 讗讬讱 讛诪砖转诪砖 讬讜讚注 注诇 讗讬讝讜 转讬讘讛 诪讚讜讘专? 讗讬讱 讛诪砖转诪砖 讬讜讚注 讗讬驻讛 诇讛讻谞讬住 讗转 讛拽诇讟? 诪砖转诪砖 诇讗 专讜讗讛 讗转 讛诪讗驻讬讬谉 name 讗讜 讗转 讛拽诇讗住讬诐 砖诇 讛转讬讘讛. 讛讜讗 讬讻讜诇 诇专讗讜转 讗转 讛讟拽住讟 砖专砖讜诐 讘讛 讗讘诇 讘讚专讱 讻诇诇 讛讜讗 讬专讗讛 讗转 讛 Label 砖诪砖讜讬讱 诇转讬讘转 讛拽诇讟. 讜讻讘专 讗谞讞谞讜 专讜讗讬诐 讗转 讛讘注讬讛 讘拽讜诪驻讜谞谞讟讛: 诇 input 讗讬谉 label 砖诪住讘讬专 诪讛 讛讬讗 注讜砖讛.
转讬拽讜谉 砖诇 讛拽讜讚 讜讛讜住驻转 label 谞专讗讛 讻讱:
export default function SimpleList({ items }) {
const [filter, setFilter] = useState('');
return (
<>
<label>Filter List
<input
type="search"
value={filter}
onChange={(e) => setFilter(e.target.value)}
/>
</label>
<ul>
{items.filter(item => item.text.includes(filter)).map((item, idx) => (
<li
key={item.id}
className={(idx + 1) % 2 === 0 ? "even" : "odd"}
>
{item.text}
</li>
))}
</ul>
</>
);
}
讜砖讬诪讜 诇讘 诇拽住诐 - 注讻砖讬讜 讗驻砖专 诇讛砖转诪砖 讘讟拽住讟 讘 label 讻讚讬 诇讝讛讜转 讗转 讛 input 砖讛住转讻诇谞讜 注诇讬讜:
screen.getByRole('searchbox', { name: 'Filter List' } );