На собеседованиях часто задают знаменитый вопрос, узнаваемость которому по большей части дал facebook*: «Что происходит после того, как вы вводите URL сайта в адресную строку браузера и нажимаете Enter?». Несмотря на кажущуюся простоту, этот вопрос покрывает широкий спектр тем – DNS, TCP/IP, HTTP, и даже работу браузера. Разработчики разных уровней иногда теряются в деталях ответа. Понимание этого процесса важно для инженеров – оно показывает, как взаимодействуют между собой различные сетевые протоколы и уровни. Ниже мы шаг за шагом рассмотрим, как данные проходят через каждый слой сетевого стека, и проиллюстрируем это примерами.
Читать далееВ обсуждении к прошлой статье подняли важный вопрос о природе человека. Вопрос, я бы сказал, основополагающий для социальной философии и значимый для множества гуманитарных дисциплин. Без его решения невозможно обсуждать ни оптимальную модель социума, ни менеджмент, ни многие правовые аспекты. Да и этические аспекты новых технологий в т.ч. ИИ.
Эта заметка будет очень короткой. Но надеюсь, она кому-то спасёт несколько часов жизни.
У меня был код. К счастью, это было в тесте, а не в боевом коде, поэтому никто не пострадал.
Код создавал http.Server, запускал две гороутинки для обслуживания входящих соединений:
go func() {srvr.Serve(p)}()
go func() {srvr.ServeTLS(e, "", "")}()
Ну и дальше создавал клиента, делал к серверу обращения (HTTP GET) попеременно используя http и https ну и чего-то там проверял.
Всё прекрасно работало. До обновления с go1.23.8 до go1.24.2, пришедшего с 42-й Федорой.
А потом перестало. Стало время от времени (но отнюдь не всегда) вываливать разнообразные ошибки. Например, вот такие: Get "https://127.0.0.1:46167/": unexpected EOF. Или такие: Get "https://127.0.0.1:34757/": write tcp 127.0.0.1:54770->127.0.0.1:34757: write: connection reset by peer. Или даже вот такие, совсем загадочные: Get "https://127.0.0.1:42447/": http2: client conn could not be establish. HTTP/2 там, разумеется никто не включал и не собирался. А иногда всё работало и тест проходил правильно.
Самое поганое, что ошибка была плавающей.
В общем, не буду грузить подробностями, как я эту ошибку ловил. Но итог такой. Хотя это нигде и не документировано, но одновременно использовать http.Server.Serve и http.Server.ServeTLS на одном и том же экземпляре сервера нельзя. Тот из них, кто успеет прокрутиться первым, чего-то там инициализирует внутри сервера, прежде, чем уйти в accept loop, и второй после этого ломается. Ломается всегда ServeTLS, не-TLS-овскому Serve вроде как пофигу.
Так что будьте осторожны, и надеюсь, что эта заметка сохранила вам несколько часов жизни :)
Читать далееНавыки решения неизвестных Вам проблем в Linux, требуют определенного уровня понимания Linux. Установка 1С на Linux рано или поздно приведет Вас к изучению SElinux (Security-Enhanced Linux (SELinux) is a Linux kernel security module that provides a mechanism for supporting access control security policies, including mandatory access controls (MAC)). Самое простое его отключить — это единственный выход, который предлагает 1С на ИТС. Но в корпоративной среде, Вам это не разрешит администратор и тогда приходится изучать логи и думать. Рассматривайте это не как очередную проблему Linux, а как хорошую возможность понять как работает Linux изнутри. К сожалению, чем больше сталкиваешься с SELinux, тем больше вопросов к логичности архитектуры Linux. Статья показывает как выжить с SElinux сложном практическом кейсе из импортозамещения в 1С.
Читать далееА точно ли самый простой жанр?
Почему визуальные новеллы — это далеко не всегда «тонны текста со статичными картинками», а полноценный, трудоемкий жанр.
Когда мы с небольшим составом в команде только начали делать визуальную новеллу, в голове звучал вопрос: «Это же вроде легкий жанр… Просто текст, картинки и немного музыки, да?»
Прошло уже больше года разработки. Сотни часов. И теперь у меня встречный вопрос: а точно ли он простой?
Читать далееВ этом цикле статей рассмотрим как можно легко и быстро делать на C# любые однотипные действия просто навешивая атрибуты на доменные сущности
Читать далееПошаговая инструкция: как сделать, обучить и подключить AI чат-бот первой линии к Битрикс24.
Бот с искусственным интеллектом будет отвечать в популярных мессенджерах и соцсетях через механизм "открытых линий" Битрикс24. Интегрируйте нейросети для общения в Whatsapp, Telegram, VK, AVITO, чате на сайте и другими каналами.
В статье мы узнаем:
▫️как подключить AI чат-бот к Bitrix24 и проверить уже через пару минут
▫️как настроить функционал чат-ботов Битрикса, чтобы они отвечали вместо менеджера
▫️разберём классические проблемы, которые возникают при обучении ИИ
▫️увидим как бот создаёт "события", такие как "жалоба" или "клиент хочет купить"
▫️изучим методы обучения и улучшения бота после его запуска, почему удобно событие "бот не знает ответа"
▫️узнаем о сложных кейсах, например использование технического сленга
▫️"троллим" бот, требуя от него написать статью про джинсы
▫️запишем в карточку сделки результаты диалога при помощи бизнес-процессов: что беспокоит клиента, нужны ли дополнительные услуги
▫️как получить типизированные результаты из диалога: дату заказа в виде даты, сумму или объём в виде цифры, и типизированные элементы типа "список" от Битрикс24
Читать далееКазалось бы, проект — он и есть проект. Есть цели, сроки, ресурсы, ответственность. Команда, бэклог, релизы, метрики.
Но если в проекте появляется компонент на основе ИИ — всё, забудьте привычную механику. Внутри осталась та же конструкция, но логика её работы уже другая.
Я веду AI-проекты не первый год, и могу точно сказать: управление такими системами требует другой оптики. Всё начинается с привычного project/product management — но уже на ранних этапах возникает ощущение, что ты управляешь не только задачами и людьми, а поведением. Плавающим, обучающимся, порой нелогичным.
Читать далееОт TAN-листов и SMS-кодов до Passkeys и FIDO2 — за 20 лет одноразовые коды прошли путь от бумажек до криптографии.
Почему TOTP стал стандартом? Чем push-уведомления лучше? И правда ли, что будущее — без паролей?
В статье — краткий и наглядный разбор всей эволюции OTP: алгоритмы, уязвимости, UX и рекомендации для современных систем.
Читать далее30 апреля 2025 года находящаяся в разработке версия 16.0 дистрибутива openSUSE Leap перешла в статус Beta. Глобальный выпуск намечен на октябрь этого же года.
Leap остётся традиционным полнофункциональным Linux-дистрибутивом. Людям, ищущим современную, иммутабельную систему с точечными выпусками, следует посмотреть в сторону Leap Micro. Он предназначен для контейнеризованных и виртуализированных рабочих нагрузок.
( читать дальше... )
Когда я публиковал свои первые статьи на Хабре, мне было не по себе. Я опасался (но где‑то и надеялся) что сейчас мою статью разнесут по фактам въедливые зануды, которыми славен ресурс. Что они найдут все пограничные случаи, не подпадающие под общий вывод, найдут все технические ошибки, которые допускают лишь дилетанты и скинут десяток ссылок на статьи, где «это всё уже сто раз было».
Три года и 30 статей заставили меня относиться к мифу о многочисленности на Хабре положительно-въедливых зануд несколько более критично — не воспринимать его как априорную истину, а задаться вопросами «так ли это?» и «если не так, то почему?».
Подискутировать о дискуссииВопрос перенаправлений кажется простым или не особо серьезным для обдумывания, но в будущем может вызвать проблемы при слишком халатном подходе.
Я хочу сравнить самые популярные методы для редиректов в браузере с помощью JavaScript, а так же способы как их сделать безопаснее и продуманнее.
Читать далееПривет, Хабр! Хочу поделиться личным опытом превращения старенького ноутбука ASUS X552CL (Intel i3-3217U, 6 ГБ RAM, SSD + HDD), выпущенный 12 лет назад, в полноценный домашний сервер под Linux Ubuntu Server 24.04.5 LTS.
Получилось что-то вроде мини-датацентра на дому — он хранит файлы на жёстком диске с бэкапом в облаке, Docker-контейнеры крутит для дата-аналитики и даже имеет легковесный интерфейс XFCE, при этом есть потенциал к росту до терминала для управления умным домом. Расскажу, почему было решено отказаться от WSL на рабочем ноутбуке Huawei, как настроить удалённый доступ через xRDP (чтобы не было чёрного экрана), запустить там Docker, сборку Superset и JupyterLab с Anaconda (с разными версиями Python), прикрутить Samba-шару для домашнего использования и организовать бэкап в облачном хранилище. В этой статье будет немного технических деталей, щепотка шуток и парочка мемов с советскими плакатами.
Читать далееВ этом посте я расскажу, как на практике за пару часов реализовал serverless OCR-сервис на AWS, используя AWS Lambda и модель из Amazon Bedrock. Статья ориентирована на опытных AWS-архитекторов, поэтому мы углубимся в архитектуру, покажу код (Terraform для инфраструктуры и Python для Lambda), обсудим масштабирование, ограничения и прикинем стоимость решения в регионе eu-central-1 (Франкфурт).
Читать далееКонцепция «умного дома» уже по крайней мере десяток лет не нуждается в представлении, и кажется чрезвычайно простой. Исторически, однако, раз за разом оказывается, что простота концепции не транслируется в простоту практического исполнения. Последние устройства от Яндекса, как мне кажется, сопоставимы по качеству с обычными, «глупыми», а по сравнению с другими умными устройствами, не так дороги, и, как следствие, заслуживают соответствующего внимания.
Читать далееЕвропейские монархи, сначала неохотно снаряжавшие в путь отважных (и не всегда гуманных) авантюристов, быстро осознали потенциальную выгоду от коммерческого освоения Индии и Азии. Они инициировали создание специальных частных компаний, которые получали право на монопольную торговлю с открытыми странами Востока. Все они назывались «Ост-Индскими». Об этом феномене мы подробно расскажем в нашем материале.
Читать далее