Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/47: Рейтинг темы: голосов - 47, средняя оценка - 4.57
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844

Как установить read timeout?

23.03.2022, 19:04. Показов 10930. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Возник важный вопрос: есть ли на сегодняшний день рабочий способ поставить read timeout на http запрос используя хоть какую-нибудь либу?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.03.2022, 19:04
Ответы с готовыми решениями:

Telegram+Telebot = Read timeout error?
Доброго времени суток. Держу небольшого бота на выделенной машине. Переодически вылетает подобная ошибка: Traceback (most recent call...

Как установить timeout на чтения файла в urllib.request.urlopen
Доброго времени суток. У меня возникла задача установить лимит времени на чтения файла. То есть если response.read() длиться больше 50...

Bluetooth Android. read failed, socket might closed or timeout, read ret: -1
Всем привет! Есть след. девайсы: OnePlus, Samsung A50, Pixel 3a Пытаюсь подключить девайсы по bluetooth. Получается следуещее - при...

36
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.03.2022, 18:54
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Matrix3007 Посмотреть сообщение
а aiohttp вообще подумал
Насчет aiohttp ничего не понял.

А можно как-то больше конкретики?
Что например вообще происходит при подключении через requests или другой клиент?
Какая ошибка в конечном итоге выдается на клиенте?
Или коннект так и висит на протяжении 2 часов? (это дефолтный таймаут проверки пассивных соединений TCP стеком для последующего разрыва, если на том конце никого нет)
Впрочем, маршрутизаторы тоже имеют свой интервал очистки от "мертвых" сеансов - обычно он всего 10 минут.

Добавлено через 31 минуту
Я так понял (по некоторым issue на github) что проблема есть только при использовании https прокси.
Потому что использовании http прокси read timeout работает.
Python
1
2
3
4
5
6
7
>>> requests.get('https://en.wikipedia.org/wiki/List_of_HTTP_status_codes',timeout=(1,1),proxies={'http':'http://45.14.173.90:80'})
<Response [200]>
>>> 
 
>>> requests.get('https://en.wikipedia.org/wiki/List_of_HTTP_status_codes',timeout=(1,0.01),proxies={'http':'http://45.14.173.90:80'})
...
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='en.wikipedia.org', port=443): Read timed out. (read timeout=0.01)
А вот найти бесплатный рабочий https сервер у меня не вышло (смотрел на hideme) - все испробованные говно и все не работают.

Добавлено через 51 минуту
Вот еще проверил на своем сервере - через http прокси:

Python
1
2
3
4
5
6
7
8
9
10
>>> source = "test " * 100
>>> requests.post("https://fasttranslator.herokuapp.com/api/v1/text/to/text",data={"lang": "en-ru", "source":source} , timeout=(1,1),proxies={'http':'http://45.14.173.90:80'}).json()
{'status': 200, 'message': 'OK', 'mime_type': 'text/plain', 'data': 'тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест тест', 'lang': 'en-ru', 'src_size': 499}
 
>>> # а вот здесь сервер не успевает отдать ответ за 100 ms и клиент получает read timeout error
>>> requests.post("https://fasttranslator.herokuapp.com/api/v1/text/to/text",data={"lang": "en-ru", "source":source} , timeout=(1,0.1),proxies={'http':'http://45.14.173.90:80'})
Traceback (most recent call last):
...
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='fasttranslator.herokuapp.com', port=443): Read timed out. (read timeout=0.1)
>>>
Есть рабочий https прокси-сервер?
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
24.03.2022, 19:11  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Насчет aiohttp ничего не понял.
149.28.82.107 - вот проблематичный адрес, там на 80 порту раньше стоял прокси, а сейчас там просто http серв. Так вот aiohttp на этот код
Python
1
2
3
4
5
6
import asyncio
import aiohttp
 
async with aiohttp.ClientSession() as session:
    async with session.get("http://google.com", proxy="http://149.28.82.107:80", timeout=5) as resp:
        print(resp)
выдаёт вот это

Python
1
2
<ClientResponse(http://google.com) [200 OK]>
<CIMultiDictProxy('icy-notice1': '<BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>', 'icy-notice2': 'SHOUTcast DNAS/posix(linux x86) v2.5.5.733<BR>', 'Accept-Ranges': 'none', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache,no-store,must-revalidate,max-age=0', 'Connection': 'close', 'icy-name': 'Barbwires Premier HD Radio', 'icy-genre': 'Barbwires MetalRock Radio', 'icy-br': '320', 'icy-sr': '48000', 'icy-url': 'http://barbwires.com', 'icy-pub': '0', 'Content-Type': 'audio/mpeg', 'X-Clacks-Overhead': 'GNU Terry Pratchett')>
это ответ от самого сайта который там теперь стоит, а не от гугла через этот "прокси" как предполагалось.

Добавлено через 4 минуты

Не по теме:

Что происходит, уже второй раз половина сообщения не отправляется


Цитата Сообщение от Garry Galler Посмотреть сообщение
Какая ошибка в конечном итоге выдается на клиенте?
Python
1
ConnectionError: HTTPConnectionPool(host='149.28.82.107', port=80): Read timed out.
Но я её получаю только если ставлю маленький таймаут, например 0.5, тогда ошибка появляется секунд за 20-30, а если указать 1 сек то я её уже не дожидаюсь, и там точно больше 10 мин.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.03.2022, 19:13
Цитата Сообщение от Matrix3007 Посмотреть сообщение
там на 80 порту раньше стоял прокси, а сейчас там просто http серв.
Так если он больше не прокcирует запросы, почему он должен роутить твой запрос на гугл?
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
24.03.2022, 19:14  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Я так понял (по некоторым issue на github) что проблема есть только при использовании https прокси.
Я тоже читал эту ветку, это странно, но у меня именно http прокси (этот адрес заявлен как http и в параметрах запроса я его тоже указываю как http).
Вот код, я уже выше кидал
Python
1
2
3
import requests
headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36"}
a=requests.get("http://google.com", proxies={"http":"http://149.28.82.107:80"}, headers=headers, timeout=1)
Причём важно именно с заголовками, потому что без них он почему-то выдаёт ответ, код 401.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.03.2022, 19:17
Цитата Сообщение от Matrix3007 Посмотреть сообщение
149.28.82.107 - вот проблематичный адрес,
Я на него вообще зайти не могу:

Python
1
2
3
4
5
6
>>> requests.get("http://149.28.82.107:80", timeout=(1,1))
Traceback (most recent call last):
 ...
requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='149.28.82.107', port=80): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x0000000003AAD220>, 
'Connection to 149.28.82.107 timed out. (connect timeout=1)'))
>>>
И заголовки не помогают.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
24.03.2022, 19:17  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Так если он больше не прокcирует запросы, почему он должен роутить твой запрос на гугл?
Мне не обязательно чтоб он роутил, я как раз и пишу чекер чтоб отсеивать невалидные (почему вообще вопросы эти появились, потому что у меня вся проверка одним таким ip стопорится), но остальные либы ожидают именно ответ как от прокси а не просто любой, а aiohttp просто вернул ответ от сайта.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
24.03.2022, 19:20  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Я на него вообще зайти не могу:
Вот, с браузера открыл
Миниатюры
Как установить read timeout?  
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.03.2022, 19:27
Добавлено через 17 секунд
Цитата Сообщение от Matrix3007 Посмотреть сообщение
Вот, с браузера открыл
У меня не открывается.


Цитата Сообщение от Matrix3007 Посмотреть сообщение
а aiohttp просто вернул ответ от сайта.
Интересное поведение.
Надо подумать. Пока пазл понимания, увы, не складывается...
Я так понимаю у тебя примерно такой чекер:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
file = open('proxies.txt', 'r')
proxies = file.read().splitlines()
 
for i in proxies:
    try:
        proxy = {
            'https': i
        }
 
        r = requests.get(i, headers = headers, proxies = proxy)
 
 
    except:
        continue
И все-таки мне кажется тут не обойтись без запуска запросов requests в отдельных потоках (лучше в небольшом пуле потоков), которые будут прибиваться через таймер.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
24.03.2022, 19:40  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Я так понимаю у тебя примерно такой чекер:
Ну только я не считываю сразу весь файл, там потоки прыгают по строкам с определенным шагом и читают отдельно, но в общем да, примерно такой.
Цитата Сообщение от Garry Galler Посмотреть сообщение
И все-таки мне кажется тут не обойтись без запуска запросов requests в отдельных потоках (лучше в небольшом пуле потоков), которые будут прибиваться через таймер.
Это ведь потоки в потоках запускать, а у меня их сотни. Я бы сделал так если бы знал что это не сильно повлияет на производительность, потому что я начал его писать именно чтоб оптимизирован был по памяти и по времени, не знал что с таким столкнусь.

Добавлено через 3 минуты
Цитата Сообщение от Garry Galler Посмотреть сообщение
У меня не открывается.
Этот ip есть в некоторых черных списках за брут и спам (публичные прокси, все дела), возможно из-за этого.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
24.03.2022, 22:22
Matrix3007,
По поводу этого проблемного IP.
Раз библиотека aiohttp вернула ответ от сервера и этот ответ был страницей самого сайта, а не запрашиваемого ресурса, то все логично.
http клиент не обязан знать что он именно должен вернуть. Он должен вернуть то, что ему прислали на запрос. Любой ответ.
И раз сервер вернул ответ от самого себя, значит он больше не проксирует запросы.
Либо проксирует, но на другом порту.
Вопрос, почему остальные клиенты на этом IP спотыкаются и ждут неизвестно чего, остается открытым.
Но раз у aiohttp не возникает с проблем, то стоит использовать именно этот клиент.
Но вот как отличить ответ обычного http сервера от proxy сервера я не знаю.
Сейчас проверил есть ли в разница в заголовках, но нет. Хотя пишут, что некоторые прокси все-таки добавляют в ответ свои собственные нестандартные заголовки.

Добавлено через 6 минут
В конечном итоге не так уж важно, что чекер даст ложноположительный ответ на этот IP.
Ты ведь все равно через эти прокси будешь запрашивать какие-то конкретные ресурсы.
И правильный программист всегда проверяет при получении ресурса не только статус ответа, но и например html title (или что-то еще), чтобы убедиться что прислано именно то, что ожидалось. Ну я так всегда делал при парсинге...
1
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
25.03.2022, 14:47  [ТС]
Garry Galler, Скорее всего другие либы и не отличают, они просто не могут связататься с "прокси", видимо потому что он не принимает их заголовки, а если бы смогли то так же выдавали бы ответ от сайта. По сути это и происходит, например если не передавать заголовки, вернётся ошибка 401, но по заголовкам станет понятно что это ответ именно от того сайта а не от гугла:
Python
1
2
>>> requests.get("http://google.com", proxies={"http":"http://149.28.82.107:80"}).headers
{'icy-notice1': '<BR>SHOUTcast DNAS/posix(linux x86) v2.5.5.733<BR>', 'icy-notice2': 'The resource requested is currently unavailable<BR>', 'Connection': 'close'}
А отличать от http сервера можно сравнением с гугловскими заголовками, я-то делаю все проверки через гугл. Неприятно только что какие-то прокси могут точно так же не захотеть принимать заголовки aiohttp и он так же как и остальные либы зависнет (хотя может у него и работают таймауты, но это только со временем станет понятно). Ну а так да, жить можно.

Добавлено через 1 час 10 минут
Цитата Сообщение от Matrix3007 Посмотреть сообщение
а если бы смогли то так же выдавали бы ответ от сайта
Только что заметил что такие случаи уже были и я их считал за гуды, потому что проверял только код ответа)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.03.2022, 16:59
Matrix3007,
А вот этот http client - встроенный в Python - не пробовал?
(я его так ни разу и не использовал...)

Python
1
2
3
4
5
6
7
8
9
10
11
import http.client
# для https proxy - HTTPSConnection
proxy_ip, proxy_port = "localhost", 80
conn = http.client.HTTPConnection(proxy_ip, proxy_port, timeout = 3)
# непонятно можно ли добавить заголовки именно для прокси
conn.set_tunnel("www.python.org")  # конечная точка запроса
conn.request("GET", "/index.html", headers={заголовки для конечной точки})  #  часть url -  запрашиваемый ресурс или "/"
r = conn.getresponse()
print(r.status, r.reason)
print(r.read())
conn.close()
Добавлено через 3 минуты
Цитата Сообщение от Matrix3007 Посмотреть сообщение
они просто не могут связататься с "прокси", видимо потому что он не принимает их заголовки
Если бы сервер не принимал какие-то заголовки - коннект то все равно был бы установлен.
Сервер не может проанализировать заголовки не установив подключение.
Просто ответом от сервера было бы что-то типа 403 Forbidden или 401 Unauthorized. Я, например, так настроил nginx для клиентов с неподходящими параметрами. Но соединение то nginx с клиентом все равно устанавливает.
Если же коннекта с сервером вообще нет (то есть не состоялось традиционное TCP рукопожатие между клиентом и сервером: один руку протянул для приветствия, а второй нет; либо серверу был отправлен пакет, а он не отправил подтверждения о принятии) - будет ошибка connect timed (через установленное время).
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
25.03.2022, 17:36  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
А вот этот http client - встроенный в Python - не пробовал?
Python
1
BadStatusLine: Invalid Password
Цитата Сообщение от Garry Galler Посмотреть сообщение
# непонятно можно ли добавить заголовки именно для прокси
А их вроде нигде нельзя добавить, я когда через requests шлю у него ответ зависит от заголовков которые по идее предназначались для гугла, получается они и для прокси и для конечной точки
Цитата Сообщение от Garry Galler Посмотреть сообщение
Если бы сервер не принимал какие-то заголовки - коннект то все равно был бы установлен.
Так он и был установлен, он ведь поэтому и зависает, в ином случае сработал бы коннекшн таймаут. Просто почему-то он решает ничего не отвечать, хз.
Цитата Сообщение от Garry Galler Посмотреть сообщение
Просто ответом от сервера было бы что-то типа 403 Forbidden или 401 Unauthorized
Оно и есть, вот:
Python
1
2
>>> requests.get("http://google.com", proxies={"http":"http://149.28.82.107:80"}, timeout=1)
<Response [401]>
Но это только если убрать свой юзерагент, иначе виснет.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.03.2022, 19:33
Цитата Сообщение от Matrix3007 Посмотреть сообщение
BadStatusLine: Invalid Password
Raised if a server responds with a HTTP status code that we don’t understand.

То есть сервак ответил кодом, которого вообще нет в списке HTTP кодов.
Своим собственным и добавил message - Invalid Password. Похоже, что сервер требует пароля.
А requests как я понял именно это и возвращает: <Response [401]> То есть хочу авторизации.

Цитата Сообщение от Matrix3007 Посмотреть сообщение
Просто почему-то он решает ничего не отвечать, хз.
Заголовки и тело ответа могут считываться не одномоментно.
Сервер может отослать заголовки, но на тело положить болт, а клиент будет по каким-то основаниям все-таки ждать его.
И read timeout в этом случае может не отработать. Так как кой-чего все-таки прислали.
Можно вообще пробовать запрашивать только заголовки (и код ответа) запросом HEAD вместо GET.

P.S. Как-то для одного спамерского IP я делал такой фокус - ставил ему таймер при ответе. То есть его клиент тоже тупо зависал на некоторое время, а потом мой сервер просто закрывал соединение без всякого ответа :-)
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
25.03.2022, 20:37  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Похоже, что сервер требует пароля.
А requests как я понял именно это и возвращает: <Response [401]> То есть хочу авторизации.
Но aiohttp пароль почему-то не понадобился Правда я сейчас ещё заметил что в принципе не могу с ним получить тело ответа, только заголовки.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.03.2022, 21:22
Прочитал в базе документации developer.mozilla.org как работает авторизация на прокси:
Для установки таких соединений через proxy используются другие заголовки:
Proxy-Authenticate - от сервера - с указанием нужной схемы аутентификации
Proxy-Authorization - от клиента - с нужными данными

И http ответом на необходимость авторизации будет не 401, а 407.

Так что значит это вовсе не прокся отвечает.

Попробуй все-таки вместо GET использовать HEAD.
0
 Аватар для Matrix3007
198 / 164 / 41
Регистрация: 13.05.2019
Сообщений: 844
28.03.2022, 12:57  [ТС]
Garry Galler,
Python
1
2
3
4
5
6
>>> a=requests.get("http://google.com", proxies={"http":"http://149.28.82.107:80"}, timeout=1)
>>> print(a, a.headers)
<Response [401]> {'icy-notice1': '<BR>SHOUTcast DNAS/posix(linux x86) v2.5.5.733<BR>', 'icy-notice2': 'The resource requested is currently unavailable<BR>', 'Connection': 'close'}
>>> a=requests.head("http://google.com", proxies={"http":"http://149.28.82.107:80"}, timeout=1)
>>> print(a, a.headers)
<Response [200]> {'icy-notice1': '<BR>This stream requires <a href="http://www.winamp.com">Winamp</a><BR>', 'icy-notice2': 'SHOUTcast DNAS/posix(linux x86) v2.5.5.733<BR>', 'Accept-Ranges': 'none', 'Access-Control-Allow-Origin': '*', 'Cache-Control': 'no-cache,no-store,must-revalidate,max-age=0', 'Connection': 'close', 'icy-name': 'Barbwires Premier HD Radio', 'icy-genre': 'Barbwires MetalRock Radio', 'icy-br': '320', 'icy-sr': '48000', 'icy-url': 'http://barbwires.com', 'icy-pub': '0', 'content-type': 'audio/mpeg', 'X-Clacks-Overhead': 'GNU Terry Pratchett'}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.03.2022, 12:57
Помогаю со студенческими работами здесь

HttpListener, как установить Timeout ?
Как можно установить максимальный таймаут для запросов в HttpListener? (Все запросы которые не успели быть выполненными уходят с кодом 429...

Ошибка 'Read Timeout'
Здравствуйте, делаю сетевую программу работающую через компоненты Indy, собственно при компиляции клиентской части вылетает ошибка таймаута...

[ffmpeg] как установить timeout ожидания ?
Требуется узнать, есть ли udp multicast поток или нет (поток IPTV). Хочу попробовать сделать это через ffmpeg, но проблема в том, что если...

Dalay в программе.Как установить заданный timeout?
Dalay в программе... Как установить заданный timeout?

Socket read timeout. Не подключается к БД Oracle
Всем доброго времени суток, может кто сталкивался, помогите. В общем есть годовалый продакшен проект, в нем выполняются подключения к БД...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru