Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.66/497: Рейтинг темы: голосов - 497, средняя оценка - 4.66
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452

Что означает предупреждение "headers already sent"

09.08.2011, 11:14. Показов 106254. Ответов 76

Студворк — интернет-сервис помощи студентам
На форуме часто бывают вопросы, что при использовании session_start(), header() и setcookie() и некоторых других функций, появляется сообщения типа
Code
1
2
Warning: session_start(): Cannot send session cookie - headers already sent in D:\HTTP\a.php on line 5
Warning: session_start(): Cannot send session cache limiter - headers already sent in D:\HTTP\a.php on line 5
или
Code
1
Warning: Cannot modify header information - headers already sent in D:\HTTP\a.php on line 5
Это связано с тем, что браузеру уже были отправлены данные перед тем, как была вызвана одна из этих функций.
Если кому интересны подробности, то вот
немного теории
Давайте разберёмся, что происходит, когда мы заходим на сайт. Например, когда мы в браузере открываем страницу http://www.example.ru/file.php, то браузер запрашивает у DNS сервера, какой IP адрес принадлежит серверу www.example.ru. После этого он подключается по протоколу TCP к этому IP адресу на порт 80 (этот порт используется по умолчанию для HTTP) и отправляет текстовый запрос наподобие такого:
Code
1
2
3
4
5
6
7
8
9
GET /file.php HTTP/1.1
Host: www.example.ru
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: ru,chrome://global/locale/intl.properties;q=0.5
Accept-Encoding: gzip, deflate
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Connection: keep-alive
Cookie: user=2; var=blablabla
Этим запросом в первой строке браузер указывает, что хочет просто получить страницу (GET), указывает адрес страницы и версию протокола (сейчас используются только две версии - 1.0 и 1.1... версия 0.9 устарела и сейчас не используется).
Так же обязательным является параметр Host. Т.к. на каждом сервере может быть несколько разных сайтов, то мы должны указать, к какому именно сайту мы хотим обратиться.
Остальные параметры необязательны... ими браузер просто рассказывает о себе (User-Agent) и рассказывает серверу, как он хочет общаться. Но сейчас речь не об этом...

В ответ на этот запрос веб-сервер запускает выполнение нашего php-скрипта, к которому обращается браузер. И веб-сервер отправляет браузеру результат работы скрипта... но перед этим он отправит свои заголовки ответа.
Code
1
2
3
4
5
6
7
8
9
10
11
HTTP/1.1 200 OK
Date: Tue, 09 Aug 2011 06:59:22 GMT
Server: Apache
X-Powered-By: PHP/5.3.5
Content-Length: 1234
Content-Type: text/html; charset=windows-1251
Set-Cookie: PHPSESSID=3ms50sjl2pt2s19sns5udiryn6; path=/
 
<!DOCTYPE html>
<html>
......
Как вы видите, заголовки идут вначале, а после одной пустой строки начинается тело самого html, который мы генерируем с помощью php-скрипта.

И вот мы подошли к основной сути... когда PHP приказывает веб-серверу начать отправлять само содержимое брузеру, то веб-серверу не остаётся ничего, кроме как отправить вначале все заголовки, которые имеются у него на текущий момент. Поэтому после этого PHP уже не сможет изменить эти заголовки.
Функция header() изменяет любой заголовок. Функция setcookie() добавляет куки к заголовку Set-Cookie, поэтому тоже не может работать после отправки заголовков. session_start() добавляет куки с идентификатором сессии (как в примере выше).


А пока найдём пути решения этой проблемы. Чаще всего такие ситуации происходят из-за использования BOM. BOM - это 2 или 3 невидимых символа в начале файла. Эти символы указывают на то, какая используется кодировка. Многие текстовые редакторы по умолчанию добавляют BOM ко всем файлам юникодовской кодировкой (например UTF-8). Например, создадим в блокноте файл
PHP
1
2
3
<?php
 
?>
И сохраним его в кодировке UTF-8. Но если мы теперь просмотрим файл в кодировке cp1251, то увидим, что вначале файла добавлены символы:
Code
1
2
3
п»ї<?php
 
?>
Именно эти символы и создают проблему. Ведь PHP исполняет свой код только внутри тегов <?php ?>... всё что снаружи отправляется браузеру как есть. Получается, что эти 3 байта сразу же отправятся к браузеру ещё до начала интерпретации PHP-кода. Хотя, по умолчанию в php.ini включен output_buffering и установлен в значение 4096... поэтому проблемы с BOM не должно быть... однако, у многих пользователей она почему-то есть. Подозреваю, что это следствие использования разных кривых сборок.

Я вижу 2 пути решения это проблемы:
1. Включить в php.ini
Code
1
output_buffering = 4096
На вашем компьютере это должно помочь. Но если вы позже закачаете свой сайт на хостинг, то у вас не будет уверенности, что там включен этот буфер.
2. Запретить текстовому редактору сохранять BOM. Но тут уже всё зависит от возможностей текстового редактора, который вы используете. Например, я пользуюсь Notepad++... там можно открыть меню "Кодировки" и выбрать "Преобразовать в UTF-8 без BOM".


Если вы уверены, что BOM не используется, значит где-то перед функциями header(), setcookie() и т.п. вы сами отправляете данные пользователю. Возможно, перед открытием тега <?php есть пустая строка... её тоже нужно убрать.
Если вначале вам необходимо отправлять данные, то можно включить использование буфера, что бы данные не отправлялись сразу браузеру:
PHP
1
2
3
4
5
6
<?php
ob_start();
 
echo "Всякие тексты";
header('Content-Type: text/plain; charset=windows-1251');
?>
В этом случае никаких проблем не будет, т.к. ob_start() указывает, что данные вначале надо накапливать в буфере и отправлять браузеру только когда выполнение скрипта будет завершено.
57
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.08.2011, 11:14
Ответы с готовыми решениями:

Что означает предупреждение " comparison between signed and unsigned integer expressions"
Я написал вот такую строчку: for(int i=0; i &lt; stringas.size();i++){ cout &lt;&lt; &quot; &lt;&lt; &quot;] &quot;; } cout &lt;&lt; endl; И мне пишет:...

Выходит предупреждение headers already sent by
Выходит предупреждение headers already sent by Warning: Cannot modify header information - headers already sent by (output started at...

Событие A означает, что извлечены 3 зеленых, а событие В - извлечены 3 красных леденца. Что означает сумма А или B?
Помогите с задачей! В упаковке 6 леденцов, из них 3 зеленых и 3 красных. Наудачу извлекают 3 леденца. Пусть событие A означает, что...

76
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
09.09.2018, 20:30
Студворк — интернет-сервис помощи студентам
CyberX346, очень деструктивные мысли. Я лично не понимаю, как можно написать какую-то там CMS, не изучив основы протокола. А потом как угодно изворачиваться, лишь бы не признавать свою фундаментальную ошибку и исправлять ее основательно.
0
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
09.09.2018, 20:34
output_buffering*boolean/integer

You can enable output buffering for all files by setting this directive to 'On'. If you wish to limit the size of the buffer to a certain size - you can use a maximum number of bytes instead of 'On', as a value for this directive (e.g., output_buffering=4096). This directive is always Off in PHP-CLI.

Можем свериться? Я сейчас в больнице и у меня нет возможности постоянно ноутбук использовать. Предлагаю в качестве расследования выложить вашу конфигурацию сервера и параметр настройки. Интересует Cent os и ubuntu. Настройки мамп я тоже выложу. У меня не работало именно на ubuntu lamp и, если там стоит off или php в режиме cli то тогда все обьяснимо.
0
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
13.09.2018, 09:12
Вот. Выбрался на выходные из госпиталя и решил сразу проверить(с ноутбуком наконец-то).

Собственно реально все правда: если параметр выключить в htaccess у меня перестает работать авторизация.

при

Code
1
2
# Output buffering
php_value output_buffering 4092
в .htaccess

Все работает как надо. Видимо дело в моей недоосведомленности(да и не только моей) потому, что хостеры на этот простейший вопрос разводят руками и ничего внятного ответить не могут. Ну а теперь моя CMS пригодна для любого хостинга. Всем спасибо
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
13.09.2018, 11:17
Цитата Сообщение от CyberX346 Посмотреть сообщение
Собственно реально все правда: если параметр выключить в htaccess у меня перестает работать авторизация.
Вам и толковали про буферизацию выше. Вот и перестаёт.
Цитата Сообщение от CyberX346 Посмотреть сообщение
теперь моя CMS пригодна для любого хостинга
Выведите что-то более 4092 байт и полетит "CMS для всех хостингов" нафиг.
1
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
13.09.2018, 12:30
Ага. Только нагенерировать 4к до заголовков это еще проблема.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
13.09.2018, 12:45
CyberX346, можете "вечно дрожать" или надеяться на авось.
0
0 / 0 / 0
Регистрация: 09.09.2018
Сообщений: 9
13.09.2018, 14:41
Учиться программировать чтобы не выходить за 4к или брать году. Я цистерна писал на спор за 3 месяца по приколу. Еще неделю писал форум к ней. Правда до сих пор с ним и парюсь. А вам я не знаю чего пожелать. Разве что зарплаты тысяч так 80 хотя бы чтобы легче было...
0
0 / 0 / 0
Регистрация: 04.05.2019
Сообщений: 2
04.05.2019, 15:48
кто нибудь умеет работать в лабвью?
0
04.05.2019, 17:28

Не по теме:

Цитата Сообщение от Александр1988до Посмотреть сообщение
кто нибудь умеет работать в лабвью?
Да, вот там посмотрите - https://www.cyberforum.ru/labview-g/

0
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
28.05.2019, 18:25
Приветствую, форумчане.

Столкнулся сегодня со странной историей.
Если в <head> есть строчка <meta name="description" content=""> (именно такая, причем неважно - копипасченная или переписанная "от руки", то Cannot modify header information – headers already sent.
Если я стираю только эту строчку - ошибка исчезает.
Перепечатывал от руки, вставлял из других рабочих файлов.
Кодировки, кавычки, пробелы внутри, пробелы до и после строчки, наличие символов из кириллицы, паразитные символы - все проверено.
Идет реакция чисто на текст, такое ощущение :-)

Решил пока ob_start'ом, но докопаться хочется и надо.

Буду благодарен за помощь, спасибо.
0
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
29.05.2019, 00:20  [ТС]
Цитата Сообщение от AlexNewaro Посмотреть сообщение
Идет реакция чисто на текст, такое ощущение :-)
Возможно, у вас редактор когда видит эту строку, то пытается использовать UTF-8 с BOM. А когда этой строки нет, то сохраняет в какой-то однобайтовой кодировке. Каким редактором пользуетесь? Попробуйте в другом редакторе сохранить.
0
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
29.05.2019, 00:23
Цитата Сообщение от Humanoid Посмотреть сообщение
Возможно, у вас редактор когда видит эту строку, то пытается использовать UTF-8 с BOM. А когда этой строки нет, то сохраняет в какой-то однобайтовой кодировке. Каким редактором пользуетесь? Попробуйте в другом редакторе сохранить.
Я пользуюсь Coda 2, пробовал TextEdit'ом, Komodo Edit, даже виндовый ноут нашел и Dreamviewer'ом каким-то древним.
Все одно и то же.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
29.05.2019, 00:33
AlexNewaro, значит неправильно организовано приложение - отправка тела ответа перед заголовками, в сочетании с директивой output_buffering. Добавляя текст превышается значение заданное в данной директиве и ошибка себя проявляет.
1
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
29.05.2019, 00:36  [ТС]
А если вместо этой строки добавить столько же пробелов? Может, там просто эта строка добавляет размер и переполняет буфер.
Иначе сравнивайте кодировку и наличие BOM.

Добавлено через 40 секунд
Не успел... Jewbacabra опередил
1
63 / 34 / 8
Регистрация: 07.02.2015
Сообщений: 125
29.05.2019, 00:40
Цитата Сообщение от Humanoid Посмотреть сообщение
А если вместо этой строки добавить столько же пробелов? Может, там просто эта строка добавляет размер и переполняет буфер.
Вы правы, так и случилось.

Цитата Сообщение от Jewbacabra Посмотреть сообщение
неправильно организовано приложение - отправка тела ответа перед заголовками, в сочетании с директивой output_buffering
Видимо да, буду разбираться теперь...


Всем огромное спасибо за помощь!
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 72
17.09.2019, 23:22
Можете помочь.
У меня вылезла ошибка cannot modify header information
В 35 в 36 и 38 строках где куки.
По пробывал способ сохранения без BOM,не помогло,как решить ее?
PHP
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
49
50
<?
// Страница авторизации
// Функция для генерации случайной строки
function generateCode($length=6) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    $code = "";
    $clen = strlen($chars) - 1;
    while (strlen($code) < $length) {
    $code .= $chars[mt_rand(0,$clen)];
    }
    return $code;
}
// Соединямся с БД
$link=mysqli_connect("localhost", "root", "", "testtable");
if(isset($_POST['submit']))
{
    // Вытаскиваем из БД запись, у которой логин равняеться введенному
    $query = mysqli_query($link,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
    $data = mysqli_fetch_assoc($query);
    // Сравниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        // Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));
        if(!empty($_POST['not_attach_ip']))
        {
            // Если пользователя выбрал привязку к IP
            // Переводим IP в строку
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }
        // Записываем в БД новый хеш авторизации и IP
        mysqli_query($link, "UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
        // Ставим куки
        setcookie("id", $data['user_id'], time()+60*60*24*30);
        setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true); // httponly !!!
        // Переадресовываем браузер на страницу проверки нашего скрипта
        header("Location: 80x.php"); exit();
    }
    else
    {
        print "Вы ввели неправильный логин/пароль";
    }
}
?>
<form method="POST">
Логин <input name="login" type="text" required><br>
Пароль <input name="password" type="password" required><br>
Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
<input name="submit" type="submit" value="Войти">
</form>
0
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
18.09.2019, 00:54  [ТС]
Цитата Сообщение от NitrailS Посмотреть сообщение
В 35 в 36 и 38 строках где куки.
Обратите внимание, что в вашем выложенном коде нумерация строк сдвинута на 1. Скорее всего, в оригинальном файле у вас в начале есть пустая строка, которую вы сюда не перенесли. Пустую строку нужно убрать. Файл должен начинаться без BOM, без пустых строк и без пробелов.. сразу должен идти "<?". В этом случае проблем быть не должно.
Так же проблема может быть, если одна из вызываемых функций выведет предупреждение. Но, думаю, вы бы это заметили.
0
0 / 0 / 0
Регистрация: 17.02.2019
Сообщений: 72
18.09.2019, 00:59
Humanoid, Я кодировки поменял.
Теперь у меня другая проблема с скриптами.
У меня не выводит логин авторизованного человека.
Вместо него выводит Xm.Что-то не получилось
Это скрипт проверки
PHP
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
<?
// Скрипт проверки
 
// Соединямся с БД
$link=mysqli_connect("localhost", "root", "", "testtable");
 
if (isset($_COOKIE['id']) and isset($_COOKIE['hash']))
{
    $query = mysqli_query($link, "SELECT *,INET_NTOA(user_ip) AS user_ip FROM users WHERE user_id = '".intval($_COOKIE['id'])."' LIMIT 1");
    $userdata = mysqli_fetch_assoc($query);
 
    if(($userdata['user_hash'] !== $_COOKIE['hash']) or ($userdata['user_id'] !== $_COOKIE['id'])
 or (($userdata['user_ip'] !== $_SERVER['REMOTE_ADDR'])  and ($userdata['user_ip'] !== "0")))
    {
        setcookie("id", "", time() - 3600*24*30*12, "/");
        setcookie("hash", "", time() - 3600*24*30*12, "/");
        print "xm, что-то не получилось";
    }
    else
    {
        print "hi, ".$userdata['user_login'].". Всё работает!";
    }
}
else
{
    print "Включите куки";
}
?>
А это скрипт авторизации
PHP
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
49
50
51
52
53
54
55
56
57
58
<?
// Страница авторизации
 
// Функция для генерации случайной строки
function generateCode($length=6) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHI JKLMNOPRQSTUVWXYZ0123456789";
    $code = "";
    $clen = strlen($chars) - 1;
    while (strlen($code) < $length) {
            $code .= $chars[mt_rand(0,$clen)];
    }
    return $code;
}
 
// Соединямся с БД
$link=mysqli_connect("localhost", "root", "", "testtable");
 
if(isset($_POST['submit']))
{
    // Вытаскиваем из БД запись, у которой логин равняеться введенному
    $query = mysqli_query($link,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
    $data = mysqli_fetch_assoc($query);
 
    // Сравниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        // Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));
 
        if(!empty($_POST['not_attach_ip']))
        {
            // Если пользователя выбрал привязку к IP
            // Переводим IP в строку
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }
 
        // Записываем в БД новый хеш авторизации и IP
        mysqli_query($link, "UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
 
        // Ставим куки
        setcookie("id", $data['user_id'], time()+60*60*24*30);
        setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true); // httponly !!!
 
        // Переадресовываем браузер на страницу проверки нашего скрипта
        header("Location: check.php"); exit();
    }
    else
    {
        print "Вы ввели неправильный логин/пароль";
    }
}
?>
<form method="POST">
Логин <input name="login" type="text" required><br>
Пароль <input name="password" type="password" required><br>
Не прикреплять к IP(не безопасно) <input type="checkbox" name="not_attach_ip"><br>
<input name="submit" type="submit" value="Войти">
</form>
И вообщем я не могу понять почему теперь не выводит логин,хотя 2 дня назад выводил логин.
0
Почетный модератор
 Аватар для Humanoid
11551 / 4346 / 452
Регистрация: 12.06.2008
Сообщений: 12,452
18.09.2019, 11:49  [ТС]
NitrailS, не знаю. Предлагаю выводить отладочную информацию и анализировать, какое именно условие не подошло. Например, там, где вы выводите сообщение "что-то пошло не так" заодно через var_dump() выводите куки, _SERVER и userdata. После этого смотрите, какое значение оказалось неожиданным. Если не будет получаться, то создайте новую тему с вопросом... кто-нибудь, возможно, поможет. Просто, самому разобраться будет быстрее, чем ждать других людей.

Цитата Сообщение от NitrailS Посмотреть сообщение
PHP
1
mysqli_query($link,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($link,$_POST['login'])."' LIMIT 1");
Вы же используете mysqli... там можно использовать mysqli_prepare()/mysqli_stmt_bind_param(), что бы вставлять переменные в запрос. Это более правильный путь, который уменьшит вероятность ошибки из-за того, что вам уже не надо задумываться про экранирование символов.
0
0 / 0 / 0
Регистрация: 21.10.2017
Сообщений: 1
24.09.2019, 14:59
$&&& = mysqli_real_escape_string(); - это функция очистка от спец символов. Попробуй просто $&&& = rtrim();

Добавлено через 2 минуты
А Humanoid - респект!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.09.2019, 14:59
Помогаю со студенческими работами здесь

Постоянные ошибки с сессиями (headers already sent и Cannot modify headers)
Добрый день, хоть тема я так понял и избитая но всё же не могу понять логику работы сессий. Вот у меня есть админ панель из десятка файлов....

Что означает появление письменности (языка), и что означает реформа письменности (языка)?
Не секрет, что духовность всегда сокрыта в письменности (языке), так высшая стадия развития духовности социума (общества) это всегда...

Что означает, что определение метода находится внутри определения класса?
Что означает, что определение метода находится внутри определения класса? Prostokat p0(&quot;Prostokat&quot;,2,3); cout &lt;&lt;...

Поясните пожалуйста что означает двоеточие и то что идет после него
В 4 строчке после параметра в скобочках нету &quot;;&quot; или же тела функции, что не сходится с моим шаблоном в голове. Поясните пожалуйста что...

Что такое dy1 и dy2 в программе, и зачем мы их перемножаем. Что означает строчка x=x1
Что такое dy1 и dy2 . и зачем мы их перемножаем? и что значит строчка x=x1 clear all; close all; clc; disp('Определение кол-ва...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru