С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/65: Рейтинг темы: голосов - 65, средняя оценка - 4.72
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750

Ожидание ответа сервера

01.04.2019, 22:18. Показов 12681. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла необходимость на html-странице автоматически отправлять запрос серверу через определённые интервалы времени.
Сделал скрипт:
PHP/HTML
1
2
3
<script type=\"text/javascript\">
    setInterval(document.location.search  = 'auto', 5000);
</script>
Но проблема в том, что если сервером обрабатывается предыдущий запрос этого же клиента, то при выполнении search = 'auto' клиент не дожидается предыдущего ответа сервера.
Можно ли в скрипте как-то указать, чтобы клиент сначала дождался неполученного ответа, а затем выполнял document.location.search = 'auto' ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.04.2019, 22:18
Ответы с готовыми решениями:

Распарсить объект ответа сервера
День добрый. Изучаю JS, дошел до ajax и решил тренироваться на сервисе яндекс-переводчика. Но столкнулся с объектом, название которого...

Ожидание сообщений от сервера
Здравствуйте, пишу многопользовательскую игру змейка на джава скрипте. Реализовано управление змейкой с помощью клавиатуры ...

Парсинг ответа сервера ajax
Здравствуйте, ответ от сервера приходит в формате json, вида: {&quot;asd&quot;:true,&quot;aaa&quot;:&quot;$&quot;,&quot;html&quot;:}. Нужно распарсить и вызвать функцию...

30
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
02.04.2019, 07:33
LVV, а сам запрос к серверу как отправляется?
0
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
02.04.2019, 11:30  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
а сам запрос к серверу как отправляется
У меня http-сервер на C++.
От клиента сервер получает следующий запрос:

GET /auto HTTP/1.1
Host: ...................................
Connection: keep-alive
User-Agent:...........................
Accept:.................................
Referer:................................
........................................ .............

и отправляет такой ответ:

HTTP/1.1 204 No Content

(ответ без контента, чтобы в браузере не менялась страничка)
Автозапросы мне нужны для определения сервером активности клиента (в сети он, или нет).
Всё работает.
Но, с клиентской странички пользователем могут быть отправлены и другие GET-запросы (нажатием кнопки, ссылки и т.п.).
И, если во время обработки такого клиентского запроса (до получения ответа сервера) происходит передача скриптом автозапроса, то предыдущий ответ сервера "теряется".
Вот я и спрашиваю, можно ли как-то проконтролировать, получил ли клиент ответ на свой предыдущий запрос, или нет? И, в зависимости от этого отправлять автозапрос, или ждать.
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
02.04.2019, 14:04
Лучший ответ Сообщение было отмечено LVV как решение

Решение

Цитата Сообщение от LVV Посмотреть сообщение
можно ли как-то проконтролировать,
Да, делаете асинхронный запрос:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
let sendInfo = new XMLHttpRequest();
sendInfo.open('GET', 'название  скипта-обработчика', true);
sendInfo.send();
sendInfo.addEventListener('readystatechange', statusReady);
function statusReady()
{
    if(sendInfo.readyState == 4)
    {
        //запустить сл. запрос
    }
}
1
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
03.04.2019, 12:25  [ТС]
Спасибо, atanov.
В моём случае это, наверное, будет выглядеть примерно так:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
let sendInfo = new XMLHttpRequest();
sendInfo.open('GET', 'название  скрипта-обработчика', true);
sendInfo.send();
sendInfo.addEventListener('readystatechange', statusReady);
function statusReady()
{
    if(sendInfo.readyState == 4)
    {
       document.location.search  = 'auto';
    }
}
setInterval('statusReady()', 5000);
</script>
Вот только не понятно что должно быть вместо: 'название скрипта-обработчика'?
Ведь у меня клиентский запрос обрабатывается на сервере средствами С++.
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
03.04.2019, 12:40
LVV, а куда выведет
Цитата Сообщение от LVV Посмотреть сообщение
document.location.search *= 'auto';
? Я бы просто запустил скрипт запрос.
Цитата Сообщение от LVV Посмотреть сообщение
клиентский запрос обрабатывается на сервере средствами С++.
вот чем обрабатывается клиентский запрос, то и ставьте. http сервер ведь слухает и чем то запрос обрабатывает?
0
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
03.04.2019, 18:55  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
а куда выведет document.location.search = 'auto';
Я обрабатываю запросы в бесконечном цикле С++.
На примитивном уровне это выглядит примерно так:
C++
1
2
3
4
5
6
7
8
9
10
while (true)
{
socket.open;
if (GET = ...)
   OtvetServera = ...
else if (GET = ...)
  OtvetServera = ...
 .........................
socket.close;
}
Через открытый сокет читается запрос клиента и отправляется ответ сервера, после чего сокет закрывается.
И так многократно.

Я просто смотрю, что там содержится в запросе, и соответственно реагирую.
Например, document.location.search = 'auto'; генерирует в запросе клиента строку GET /auto HTTP/1.1 и тогда клиенту отправится сообщение HTTP/1.1 204 No Content, а в базе данных на стороне сервера отмечется, что такой-то клиент в такое-то время был в сети. А если в запросе присутствует GET / HTTP/1.1 то ответ сервера будет с заголовком HTTP/1.1 200 OK и html-контентом главной страницы. И т.п.

Наверное, не так уж и важно, чтот там написано вместо 'название скрипта-обработчика'.
Мне главное, чтобы сервер регулярно получал от клиента автозапрос. И чтобы этот автозапрос не мешал пользовательским запросам.

Но с таким скриптом в теле html-страницы:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script type="text/javascript">
let sendInfo = new XMLHttpRequest();
sendInfo.open('GET', 'abrakadabra', true);
sendInfo.send();
sendInfo.addEventListener('readystatechange', statusReady);
function statusReady()
{
    if(sendInfo.readyState == 4)
    {
       document.location.search  = 'auto';
    }
}
setInterval('statusReady()', 5000);
</script>
автоматические запросы к серверу не отправляются вообще.
Хотя по идее должны отправляться каждые пять секунд.
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
03.04.2019, 19:12
LVV, нет, не верно.
Вообще прелесть сокета в неразрываемом соединении. Ну да ладно. А вот
Цитата Сообщение от LVV Посмотреть сообщение
не так уж и важно, чтот там написано вместо 'название скрипта-обработчика'.
с этим конечно js скрипт не уживётся. Весь смысл в том, что запрос будет отправлен обработчику, указанному в 3-й строке. Если его не будет клиентская машина в консоле Вам нарисует красненьким Internal Server Error: 500 или Error 400, что мол не нашёл по пути указанного файла - обработчика. Поэтому дальше скрипт просто не будет исполняться.
Дальше - функция statusReady() когда статус запроса 4, т.е. обработан сервером и получен ответ. Т.е. в Вашем случае, без обработчика, условие в стр. 6 всегда будет false.
Вот здесь почитайте, что ждёт XMLHttpRequest() https://learn.javascript.ru/ajax-xmlhttprequest.
Кстати, Вы попробуйте в качестве обработчика запускать Ваш кусок кода (в отдельном модуле, конечно), только сообщайте ответ сервера. Тогда и функция сработает как положено. Только уберите 13-ю строку.
1
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
03.04.2019, 20:21  [ТС]
Цитата Сообщение от atanov Посмотреть сообщение
Ну да ладно
закрывается соединение с одним клиентом:
closesocket(client_socket);
и устанавливается соединение с другим:
client_socket = accept(........)
ну да ладно


Цитата Сообщение от atanov Посмотреть сообщение
Вот здесь почитайте
Читал, но так и не разобрался, как обойти параметр URL.
Цитата Сообщение от atanov Посмотреть сообщение
Вы попробуйте в качестве обработчика запускать Ваш кусок кода (в отдельном модуле, конечно)
У меня HTTP-сервер типа такого.
В нём нет отдельных модулей. Весь сервер - это (после компиляции проекта) один exe-файл плюс база данных.

Цитата Сообщение от atanov Посмотреть сообщение
Только уберите 13-ю строку.
Так в этой строке и заключается вся идея!
Мне нужно, чтобы html-страничка регулярно отправляла автозапрос на сервер.
Иначе как я буду знать, находится клиент в сети или нет?
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
04.04.2019, 07:37
Цитата Сообщение от LVV Посмотреть сообщение
У меня HTTP-сервер типа такого.
Давно не брал я в руки шашек С. Скрипт ведь отдаёт ответ клиенту.
Попробуйте так:
HTML5
1
2
<div></div>
<script type="text/javascript" src = "119.js"></script>
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
document.addEventListener('DOMContentLoaded', getReady);
function getReady()
{
    setInterval(sendRequest, 5000);
}
function sendRequest ()
{
    let sendInfo = new XMLHttpRequest();
    sendInfo.open('GET', '119.php', true);
    sendInfo.send();
    sendInfo.addEventListener('readystatechange', statusReady);
    function statusReady()
    {
        if(sendInfo.readyState == 4)
        {
            document.getElementsByTagName('div')[0].innerHTML += sendInfo.responseText;
            getReady();
        }
    }
}
PHP
1
echo 'bla-bla-bla!';
119.js это название javascript скрипта.
119.php это название обработчика - замените на свой.
Поместите в браузер html и откройте консоль браузера, чтобы видеть возможные ошибки. Раз в 5 секунд в див должен добавляться очередной ответ сервера.
И ещё - интервал первый раз 5 сек отсчитает от момента загрузки содержимого html. А потом будет отсчитывать от момента ответа сервера.
1
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
04.04.2019, 10:13  [ТС]
Спасибо, atanov, за участие... Разбираюсь.
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
04.04.2019, 10:39
Цитата Сообщение от LVV Посмотреть сообщение
генерирует в запросе клиента строку GET /auto HTTP/1.1
по всей видимости вот это и есть адрес вашего "скрипта-обработчика"
1
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
06.04.2019, 14:29  [ТС]
Цитата Сообщение от Dmitry Посмотреть сообщение
GET /auto HTTP/1.1 ... по всей видимости вот это и есть адрес вашего "скрипта-обработчика"
Ну, вообще-то да. Только в моём случае нет никаких скриптов-обработчиков. У меня auto, сгенерированное строкой document.location.search = 'auto'; обрабатывается другими методами.
Если бы это помогло решить проблему, то можно было бы создать какой-то скрипт-пустышку для заполнения параметра URL в XMLHttpRequest.
Попробовал... не помогло.

Цитата Сообщение от atanov Посмотреть сообщение
А потом будет отсчитывать от момента ответа сервера.
От момента ответа сервера на какой запрос?

На этот?
sendInfo.open('GET', '119.php', true);
sendInfo.send();


atanov, если я правильно разобрался в идее Вашего кода, то он должен регулярно генерировать запросы, но каждый следующий запрос генерируется только в том случае, если получен ответ на предыдущий сгенерированный скриптом запрос.

Но это не совсем то, чего хотел я.
Еще раз сформулирую проблему:
Например, имеется такая html-страничка:
HTML5
1
2
3
4
5
6
7
8
<html>
<body>
<a href="abcd">hyperlink</a>
<script>
setInterval(document.location.search = 'auto', 1000);
</script>
</body>
</html>
Когда пользователь клацнет по ссылке hyperlink, сервер получает запрос: GET /abcd HTTP/1.1
который он обрабатывает, например, две секунды, чтобы послать ответ: HTTP/1.1 200 OK.................

Но в течении этих двух секунд та же страничка успеет отправить следующий автозапрос: GET /auto HTTP/1.1
на который сервер ответит: HTTP/1.1 204 No Content. И это произойдёт раньше, чем обработается запрос по ссылке.
Таким образом, до клиента не дойдёт ответ 200 OK а только лишь 204 No Content.
Вот я и хочу сделать так, чтобы браузер дожидался ответа на любой запрос (а не только сгенерированный автоматически), и лишь после этого отправлял свой автозапрос.
То есть, чтобы автозапросы не мешали пользователю работать с web-страничкой.
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
06.04.2019, 15:05
Цитата Сообщение от LVV Посмотреть сообщение
Автозапросы мне нужны для определения сервером активности клиента (в сети он, или нет).
устанавливаете WebSocket-соединение, оно устанавливается один раз и держится до закрытия страницы/выключения браузера/обрыва связи, любое из этих событий сервер зафиксирует.
1
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
06.04.2019, 16:24  [ТС]
Цитата Сообщение от klopp Посмотреть сообщение
оно устанавливается один раз и держится до закрытия страницы/выключения браузера/обрыва связи
Реч идёт об HTTP-сервере. (без клиентских программ)
С одной стороны - сервер, с другой - браузер.
И как Вы представляете в таком случае, обработку сервером запросов, например, от 1000-ти клиентов?
1000 - одновременных соединений?
Связь с клиентом прекращается сразу после отправки сервером ему ответа.
После этого устанавливается связь с другим клиентом, приславшим запрос и т.д.
Если пользователь закроет страничку, или оборвётся связь, то сервер об этом не узнает, так как никакого запроса не получит.

Добавлено через 2 минуты
Клиент может быть в сети, но не проявлять активности. Пользователь может длительное время не нажимать никаких кнопок и ссылок... но оставаться в сети. Вот для этого и нужны автозапросы, чтобы узнать открыта ли страничка на стороне клиента или нет (в сети клиент или нет).
0
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
06.04.2019, 17:36
Цитата Сообщение от LVV Посмотреть сообщение
И как Вы представляете в таком случае, обработку сервером запросов, например, от 1000-ти клиентов?
1000 - одновременных соединений?
на сокетах пишут, например, чаты, где по 10к пользователей в секунду оставляют сообщения, достижимы и гораздо более высокие показатели, тем более у вас плюсовый сервер
Цитата Сообщение от LVV Посмотреть сообщение
Если пользователь закроет страничку, или оборвётся связь, то сервер об этом не узнает, так как никакого запроса не получит.
это если AJAX-ом делать, а с сокетами всё он узнает
1
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
06.04.2019, 17:44  [ТС]
Цитата Сообщение от klopp Посмотреть сообщение
а с сокетами всё он узнает
Не могли бы Вы подсказать каким образом узнает этот сервер о закрытии страницы или обрыве связи?
Или дайте ссылку, где почитать об этом...
0
Эксперт по компьютерным сетямЭксперт NIX
 Аватар для Dmitry
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
06.04.2019, 17:55
не могу сказать, что сильно вникал в вашу задачу, но у XMLHttpRequest есть параметр "async", и почему то мне кажется что вам нужно использовать его,чтобы яваскрипт дожидался ответа на предыдущийответ и (например) снимал бы какой-нибуть флаг. а перед запуском нового запроса проверял его состояние.
1
566 / 465 / 183
Регистрация: 14.10.2017
Сообщений: 1,259
06.04.2019, 18:16
Цитата Сообщение от LVV Посмотреть сообщение
Не могли бы Вы подсказать каким образом узнает этот сервер
не могу, в плюсах знаю только начальный синтаксис
Но точно знаю что сокеты поддерживают все нормальные сервера на всех языках
А вы сами читали материал по приведенной ссылке? Там есть несколько пунктов про сокеты, может это оно и есть?

Добавлено через 9 минут
LVV, ну бегло так заглянул в раздел Получение запроса и отправка ответа :
После установки соединение с сервером, браузер отправляет HTTP-запрос. Мы получаем содержимое запроса через функцию recv. Она принимает дескриптор TCP-соединения (в нашем случае это client_socket), указатель на буфер для сохранения полученных данных, размер буфера в байтах и дополнительные флаги (которые сейчас нас не интересуют).

При успешном выполнении функция recv вернет размер полученных данных.
В случае ошибки возвращается значение SOCKET_ERROR.
Если соединение было закрыто клиентом, то возвращается 0.

Мы создадим буфер размером 1024 байта для сохранения HTTP-запроса.
И далее пример кода
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
const int max_client_buffer_size = 1024;
char buf[max_client_buffer_size];
 
result = recv(client_socket, buf, max_client_buffer_size, 0);
 
std::stringstream response; // сюда будет записываться ответ клиенту
std::stringstream response_body; // тело ответа
 
if (result == SOCKET_ERROR) {
    // ошибка получения данных
    cerr << "recv failed: " << result << "\n";
    closesocket(client_socket);
} else if (result == 0) {
    // соединение закрыто клиентом
    cerr << "connection closed...\n";
} else if (result > 0) {
    // Мы знаем фактический размер полученных данных, поэтому ставим метку конца строки
    // В буфере запроса.
    buf[result] = '\0';
 
    // Данные успешно получены
    // формируем тело ответа (HTML)
    response_body << "<title>Test C++ HTTP Server</title>\n"
        << "<h1>Test page</h1>\n"
        << "<p>This is body of the test page...</p>\n"
        << "<h2>Request headers</h2>\n"
        << "<pre>" << buf << "</pre>\n"
        << "<em><small>Test C++ Http Server</small></em>\n";
 
    // Формируем весь ответ вместе с заголовками
    response << "HTTP/1.1 200 OK\r\n"
        << "Version: HTTP/1.1\r\n"
        << "Content-Type: text/html; charset=utf-8\r\n"
        << "Content-Length: " << response_body.str().length()
        << "\r\n\r\n"
        << response_body.str();
 
    // Отправляем ответ клиенту с помощью функции send
    result = send(client_socket, response.str().c_str(),
        response.str().length(), 0);
 
    if (result == SOCKET_ERROR) {
        // произошла ошибка при отправле данных
        cerr << "send failed: " << WSAGetLastError() << "\n";
    }
    // Закрываем соединение к клиентом
    closesocket(client_socket);
}
0
 Аватар для LVV
155 / 137 / 46
Регистрация: 15.02.2010
Сообщений: 750
06.04.2019, 19:02  [ТС]
Цитата Сообщение от klopp Посмотреть сообщение
И далее пример кода
Но ведь в конце, после успешной обработки запроса происходит:
closesocket(client_socket);

Соединение с клиентом закрыто, и ожидается очередной запрос (не обязательно от этого же клиента).
А соединения с первым клиентом нет, значит и о закрытии им странички сервер не узнает!

Добавлено через 3 минуты
Проблема не в создании сервера и его работе. У меня всё создано и всё работает. Мне нужно определить кто из клиентов находится в сети.
Логины клиентов сервер прописал в куках. Поэтому, получая регулярные автозапросы с куками я могу знать кто именно еще не закрыл страничку.
Проблема в том, что автозапросы при совпадении во времени мешают обычным пользовательским запросам клиента.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.04.2019, 19:02
Помогаю со студенческими работами здесь

Не понятный формат данных ответа сервера
Посылаю запрос на сторонний сервер, а он выдает ответ в таком формате 8212&lt;!&gt;&lt;!&gt;0&lt;!&gt;5968&lt;!&gt;0&lt;!&gt; Здесь html...

Как получить код ответа сервера?
Есть какая нибудь функция, чтобы узнать код ответа? Типа даёшь урл, а он тебе возвращает 200, 404 и т.п.?

Почему XmlHttpRequest не выводит alert с кодом ответа сервера?
&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;Title of the document&lt;/title&gt; &lt;script&gt; // 1. Создаём новый объект XMLHttpRequest ...

Как получить и вывести код ответа сервера при запросах по протоколу HTTP?
Всем привет! Cкажите, плиз, как получить и вывести код ответа сервера при запросах по протоколу HTTP на языке программирования HTML,...

Ожидание ответа от сервера
Клиент1 шлет серверу запрос, в котором содержатся координаты. Координаты заносятся в БД на поле. Клиент2 шлет серверу тот же запрос, но с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru