рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рд╢рд╛рдпрдж рдЙрди рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ: рдЖрдк рдПрдХ рд╣реЙрдЯрдХреА рджрдмрд╛рддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░реАрди рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЖрдкрдХреЛ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдореЗрдВ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдХрд╛ рд▓рд┐рдВрдХ рдорд┐рд▓рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреБрдЫ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкрд░ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рдореЗрдВ рд╕реЗ рдХрдИ рдиреЗ рд╢рд╛рдпрдж рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ - рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рдПрдХ рдЯреБрдХрдбрд╝реЗ рдХреЛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдФрд░ рдПрдХ рдкреГрд╖реНрда рдкрд░ рдПрдХ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рд╕реНрд░реЛрдд рдХреЛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдордиреЗ рдЗрди рджреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рдВрдпреБрдХреНрдд рдХрд┐рдпрд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ:
- рд╣реЙрдЯрдХреА рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдФрд░ рд╕реНрд░реЛрдд рдХреЛрдб рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░реЗрдВ
- рдУрдкрди рд╕реЛрд░реНрд╕ - рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдХрд╛рдВрдЯрд╛ / рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ / рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ
- рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реАрдзрд╛ рд▓рд┐рдВрдХ, рдХреЛрдИ рд╡рд┐рдЬреНрдЮрд╛рдкрди рдирд╣реАрдВ
- рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо
- рдЙрдЪреНрдЪ рднрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рд░реЛрдз (рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛)
рд╕реЗрд╡рд╛ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ:
- рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЖрд╡реЗрджрди
- рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕рд░реНрд╡рд░ рдбреЗрдореЙрди
- рд╡реЗрдм рдЗрдВрдЯрд░рдлрд╝реЗрд╕
рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рдбреЗрдореЙрди рдПрдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рдо рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╕рднреА рдкреНрд░рд╛рдкреНрдд рдлрд╛рдЗрд▓реЗрдВ http рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд▓рдн рд╣реЛ рдЬрд╛рддреА рд╣реИрдВ - рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП nginx рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Nginx + php & fastcgi рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЖрд╡реЗрджрди
рдХреНрд▓рд╛рдЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Qt рдлреНрд░реЗрдорд╡рд░реНрдХ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛ред рд▓рд╛рдн - рдЕрдЪреНрдЫрд╛ рдкреНрд░рд▓реЗрдЦрди, рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо, рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдпред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдЙрд╕реЗ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЙрдЯрдХреАрдЬрд╝ рдХреЗ рд╕рд╛рде рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛рдо рдХреЗ рд▓рд┐рдП qxt рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдерд╛ред
рдЖрд╡реЗрджрди рдореЗрдВ рдирд┐рдореНрди рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
- рдЖрд╡реЗрджрди
- рдиреЗрдЯрд╡рд░реНрдХ
- ConfigWidget
- ImageSelectWidget
- LanguageSelectDialog
- ScanHotkeyDialog
рдЖрд╡реЗрджрди - рдпрд╣рд╛рдВ рдЖрдк рд╡реИрд╢реНрд╡рд┐рдХ рд╣реЙрдЯрдХреА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ, рдЯреНрд░реЗ рдФрд░ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреЗрдЯрд╡рд░реНрдХ -
рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛рдиреА рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛, рдПрдХ рд╕рд╛рдзрд╛рд░рдг http- рдЬреИрд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛ рднреЗрдЬрдирд╛, рд╕рд░реНрд╡рд░ рд╕реЗ рд▓рд┐рдВрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
рдХреЙрдиреНрдлрд╝рд┐рдЧрд░рд╡рд┐рдбрдЧреЗрдЯ, рдЗрдореЗрдЬрд╕реЗрд▓реЗрдХреНрдЯрд╡рдЧреЗрдЯ, рд▓реИрдВрдЧреНрд╡реЗрдЬрд╕реЗрд▓реЗрдбрд┐рдпреЛрдЧреНрд▓, рд╕реНрдХреИрдирд╣реЛрдХрдбреЗрдпрд╛рд▓реЙрдЧ -
рд╡рд┐рдиреНрдпрд╛рд╕ рд╡рд┐рдВрдбреЛ, рдЫрд╡рд┐ рдЪрдпрди рд╡рд┐рдВрдбреЛ, рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдФрд░ рд╣реЙрдЯрдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рд░рд▓ рд╡рд░реНрдЧред
рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рджреМрд░рд╛рди, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрддрд╛ рд╣реИред рдкрд╣рд▓реЗ, рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рд╕рдорд╛рдзрд╛рди рд╕реЗ, QLocalServer рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рдкрд░реАрдХреНрд╖рдг рд╡рд┐рдХрд▓реНрдк рдерд╛, рдФрд░ рдЗрд╕реЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдпрджрд┐ рдХрдиреЗрдХреНрд╢рди рдЕрд╕рдлрд▓ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдирдпрд╛ рд▓реЙрдиреНрдЪ рд╣реИ рдФрд░ рд╣рдо рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЕрдиреНрдпрдерд╛ рд╣рдо рдЫреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред
QLocalSocket socket; socket.connectToServer(APP_NAME); if (socket.waitForConnected(500)) { qDebug() << "Application already launched!"; return false; } _localServer = new QLocalServer(this); if (!_localServer->listen(APP_NAME)) { QLocalServer::removeServer(APP_NAME); _localServer->listen(APP_NAME); }
рдлрд┐рд░ рд╣реЙрдЯрдХреА рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВред Hotkeys рдХреЗ рд╕рд╛рде libqxt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЖрдкрдХреЛ рдПрдХ рд╣реЙрдЯрдХреА рдмрдирд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдпреЛрдЬрди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝ рджреЗрдВ рдЬрд┐рд╕реЗ рдЗрд╕ рд╣реЙрдЯрд▓рд╛рдЗрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:
_shortcutScreenFull = new QxtGlobalShortcut; if (!_shortcutScreenFull->setShortcut(QKeySequence(fullHotkey))) qDebug() << "Error activating hotkey:" << fullHotkey; connect(_shortcutScreenFull, SIGNAL(activated()), this, SLOT(processScreenshotFull()))
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рд╣рдореЗрдВ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдорд┐рд▓рддрд╛ рд╣реИ, рдЗрд╕реЗ QBuffer рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВ, QByteArray рдмрд╛рдЗрдЯ рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬреЗрдВ:
QPixmap pixmap = QPixmap::grabWindow(QApplication::desktop()->winId()); QByteArray imageBytes; QBuffer buffer(&imageBytes); buffer.open(QFile::WriteOnly); pixmap.save(&buffer, imagetype.toAscii().constData()); buffer.close(); _network->upload(imageBytes, imagetype);
рдХреНрд▓рд╛рдЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рд╕рд░реНрд╡рд░ рдХреЛ рдлрд╛рдЗрд▓ рднреЗрдЬрдиреЗ рдХрд╛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рдЧреНрд░рд╛рд╣рдХ рднреЗрдЬрддрд╛ рд╣реИ:
proto=pastexen version=1.0 type=jpg size=142034 binary_data
рдЬрд╣рд╛рдБ jpg рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдХрд╛рд░ рд╣реИ; 142034 - рдмрд╛рдЗрдЯреНрд╕ рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЖрдХрд╛рд░; рдмрд╛рдЗрдирд░реА_рдбреЗрдЯрд╛ - рдлрд╝рд╛рдЗрд▓ рд╕рд╛рдордЧреНрд░реА
рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рд░реНрд╡рд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ:
proto=pastexen version=1.0 url=http:
url - рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╣рд╛рдЗрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдЬрд╛рдП рдЧрдП рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рдпрд╛ рдПрдХ рдкреЗрдЬ рдХреЗ рд▓рд┐рдП рд╕реАрдзрд╛ рд▓рд┐рдВрдХ
рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд▓рд╛рд╕ рдХреА рдЕрдкрд▓реЛрдб рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рд╕рд░реНрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдХ рдкреИрдХреЗрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
_socket.connectToHost(_serverAddr, 9876); _socket.waitForConnected(); QByteArray arr; arr.append("proto=pastexen\n"); arr.append("version=0.2\n"); arr.append("type=" + type + "\n"); arr.append(QString("size=%1\n\n").arg(data.size())); arr.append(data); _socket.write(arr);
рдЬреИрд╕реЗ рд╣реА рд╣рдореЗрдВ рдЙрддреНрддрд░ рдорд┐рд▓рддрд╛ рд╣реИ, рд╣рдо рдЙрд╕рд╕реЗ рд▓рд┐рдВрдХ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рд▓рд┐рдВрдХ рдХреЛ рдлреЗрдВрдХ рджреЗрддреЗ рд╣реИрдВред
const QByteArray arr = _socket.readAll(); const QString link = getValue(arr, "url"); emit linkReceived(link); _socket.disconnectFromHost();
рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕ рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ, рдкреНрд░рд╛рдкреНрдд рд▓рд┐рдВрдХ рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдХрд░рддреЗ рд╣реИрдВ, рдЯреНрд░реЗ рдореЗрдВ рд╕рдВрджреЗрд╢ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ:
QApplication::clipboard()->setText(link); _trayIcon->showMessage(tr("Done!"), tr("File shared!"), QSystemTrayIcon::Information, 6500);
рдЗрд╕реА рддрд░рд╣, рд╕реЛрд░реНрд╕ рдХреЛрдб рднреЗрдЬрдирд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб
Qt рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд░реНрд╡рд░ рдбреЗрдореЙрди рднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рдордиреЗ рд▓реЛрдб рдХреЗ рддрд╣рдд рдкрд░рд┐рдгрд╛рдореА рд╕рдорд╛рдзрд╛рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ (1000 рдПрдХ рд╕рд╛рде рдкреНрд░реЗрд╖рд┐рдд рдлрд╛рдЗрд▓реЗрдВ) рдФрд░ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдЕрдиреБрд░реВрдк рд╣реЛрдЧрд╛ред
рд╕рд░реНрд╡рд░ рдереНрд░реЗрдб рдкреВрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рд╕рднреА рдХрдиреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдЙрдкрд▓рдмреНрдз рдкреНрд░рд╡рд╛рд╣ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдореЛрдб рдореЗрдВ рд╣реЛрддрд╛ рд╣реИред рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрдирд╛ рднреА рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрдХреНрд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
- рд╕рд░реНрд╡рд░
- ThreadPool
- рд░рдХреНрд╖рдХ
- рд╕реЙрдХреЗрдЯ
рд╕рд░реНрд╡рд░ рд╡рд░реНрдЧ рдореЗрдВ, рдПрдХ tcp рд╕рд░реНрд╡рд░ (QTcpServer) рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдирдП рдХрдиреЗрдХреНрд╢рди рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХрдиреЗрдХреНрдЯреЗрдб рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕реЙрдХреЗрдЯ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ рдереНрд░реЗрдбрдкреВрд▓_ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдереНрд░реЗрдбреНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
auto socket = _server.nextPendingConnection(); new Socket(socket, ThreadPool::getNextThread(), it.value());
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИред
рд╕реЙрдХреЗрдЯ рдХреНрд▓рд╛рд╕ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ, рдЗрд╕реЗ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдирд┐рд╖реНрдкрд╛рджрди рдереНрд░реЗрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдЗрд╕ рд╡рд░реНрдЧ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдЗрд╡реЗрдВрдЯ-рд▓реВрдк_ рдореЗрдВ рд╣реЛрдЧрд╛, рджреВрд╕рд░реЗ рдереНрд░реЗрдб рдореЗрдВ рдХрд╛рдо рдХрд░рдирд╛)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, MoveToThread рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдЖрд╡рдХ рдбреЗрдЯрд╛ рдХреЛ рд╕реЙрдХреЗрдЯ рдХреЗ рдЕрдВрджрд░ рднреА рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд (рдЗрдорд┐рде рд╕реЗрд╡рдлрд╛рдЗрд▓) рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕реЗрд╡рд░ рдХреНрд▓рд╛рд╕ рджреНрд╡рд╛рд░рд╛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдереНрд░реЗрдб рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реЗрд╡рд░ рдХреЗ рдмрд╛рдж рд╕рдм рдХреБрдЫ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реЗрд╡ рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдПрдХ рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬреЗрдЧрд╛ рдЬреЛ рд╕реЙрдХреЗрдЯ рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдлрд╛рдЗрд▓ рдХрд╛ рд▓рд┐рдВрдХ рднреЗрдЬрддрд╛ рд╣реИред
рд╣реЛрд╕реНрдЯрд┐рдВрдЧ
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдУрдкрди-рд╕реЛрд░реНрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереАред рдФрд░ рдЬрдм рд╡рд╣ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реЛ рдЧрдпрд╛, рддреЛ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЛ рд▓реЗрдХрд░ рд╕рд╡рд╛рд▓ рдЙрдардиреЗ рд▓рдЧрд╛ред рдЬрд┐рд╕ рдЪреАрдЬ рдХреА рдЬрд░реВрд░рдд рдереА, рд╡рд╣ рдереА рдХреБрдЫ рднрд░реЛрд╕реЗрдордВрдж рд╣рдЧрд┐рдВрдЧ рдЬреЛ рдХрд┐ рд╣рдмреНрдмрд░рдлреИрдХреНрдЯ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░ рд╕рдХрддреА рдереАред рдпрд╣ рднреА рд╕рд╡рд╛рд▓ рдЙрдарддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдХреМрди рднреБрдЧрддрд╛рди рдХрд░реЗрдЧрд╛ рдФрд░ рдХреНрдпрд╛ рд╣рдо (рдЖрд░реНрдерд┐рдХ рд░реВрдк рд╕реЗ) рдХреБрдЫ рд╕рдордп рдмрд╛рдж рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реБрдП рдердХ рдЧрдП рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдХрдИ рдмрдбрд╝реА рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рднрд╛рдЧ рд▓реЗрдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреЗ рд╕рд╛рде рд╣рдореЗрдВ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдкрддреНрд░ рднреЗрдЬреЗред рдХрдИ рдЙрддреНрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдХреНрд▓рд╛рдЙрдб рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХрдВрдкрдиреА Skalaksi рдкрд░ рдЖ рдЧрдПред
рдбреЗрдмрд┐рдпрди, рдирдЧреАрдиреЗрдХреНрд╕ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЖрд░рд╕реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдореЛрдирд┐рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкреБрдирд░рд╛рд░рдВрдн рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рднрд╡рд┐рд╖реНрдп рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛
рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рдЕрдЧрд▓реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рддреЗ рд╣реИрдВ:
- рдЕрдиреБрд╡рд╛рдж рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рд╕реЗ рдПрдХ рдмрдЯрди рдХреЗ рдХреНрд▓рд┐рдХ рдкрд░ рдЕрдиреБрд╡рд╛рдж рдлрд╝рдВрдХреНрд╢рди рдЬреЛрдбрд╝реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Google рд╕реЗред
- рдЪрд┐рддреНрд░реЛрдВ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрдиред
- рдореИрдХ рдЕрд╕реЗрдВрдмрд▓реА (рдпрджрд┐ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдкреЛрд╕реНрддрд╛ рдХреЗ рддрд╣рдд рдХреНрдпреВрдЯреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдорджрдж рдирд╣реАрдВ рд╣реЛрдЧреА)
- рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдпрдХрд░рдг
- рд╢рд╛рдпрдж рдЖрдк рдХреБрдЫ рдФрд░ рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
рд╕рдВрджрд░реНрдн
pastexen.com - рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ
github.com/bakwc/Pastexen - github рдкрд░ рд╕реНрд░реЛрдд рдХреЛрдб
scalaxy.ru - рдХрдВрдкрдиреА "Skalaksi", рдЬрд┐рд╕рдиреЗ рдХреНрд▓рд╛рдЙрдб рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдерд╛