Обновить

Все потоки

Сначала показывать
Порог рейтинга

Представлен проект HYPERHELL - первый в своём роде четырёхмерный вариант игры в стиле DOOM (тестовый уровень).

«Наш слабый человеческий разум способен воспринимать лишь до трёх измерений, поэтому приготовьтесь к дезориентации, погружаясь в четырёхмерный лабиринт HYPERHELL и прокладывая себе путь сквозь полчища заблудших душ, демонов и темных ангелов, чтобы выжить», — пояснил автор проекта.

Теги:
+1
Комментарии1

Неделя на курсоре и в конечном итоге, если бы Perplexity вернул доступ к моделям я бы не раздумывая повернулся на Perplexity.

Сейчас Перплексити мне дает делать 20 – 40 запросов, и когда я работаю в Perplexity по сравнению с курсором это просто экстаз. Когда все предсказуемо ожидаемо и без какого-то подлого «Улучшения» у тебя за спиной.
Неоправданные ожидания – причина самых больших разочарований.
В Perplexity я ожидаю чёткий результат и получаю его. В курсоре я получаю мартышку с гранатой

Теги:
-4
Комментарии1

Необычные роботы в США теперь убирают снег. В Reflex Robotics показали своего уборщика, который расчистил дорогу в Нью-Йорке после рекордного снегопада.

Теги:
0
Комментарии7

С чего и как начинался Apache?

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

Apache Kafka, Apache Spark, Apache Hadoop, Apache Nifi, Apache Iceberg… сколько ещё «Apache-чего-то» мы знаем? Это не бренд-линейка и не одна компания, а следствие того, что в середине 90-х несколько инженеров собрали процесс, который умеет бесконечно выпускать инфраструктурные проекты. 

В начале веба одним из главных серверов был NCSA httpd, написанный при Университете Иллинойса и быстро ставший популярным. Однако в момент поддержка затормозилась из-за банального увольнения сотрудника. Тем временем интернет рос, а с ним нагрузка и требования, поэтому команды выкручивались так, как некоторые живут до сих пор: брали исходники и накладывали поверх свои маленькие исправления, которые инженеры пересылали друг другу по почте. Пришло все к тому, что у всех был один и тот же сервер, но собранный из разных заплаток и никто не был уверен, у кого версия “правильная”. 

В 1995-м несколько людей, которым это надоело, решили начать собирать улучшения вместе, превращая россыпь патчей в единый, поддерживаемый продукт. Так появился ранний Apache HTTP Server. Брайан Белендорф (один из основателей) утверждает, что предложил название Apache из уважения к индейскому племени апачей за их выносливость и тактическое мастерство. Позже кто-то из команды заметил, что это звучит как «a patchy server» с дословным переводом - “сервер из заплаток”. Шутка всем понравилась и она стала частью фольклора. 

Позже основатели поняли, что ценность не только в самом сервере, а в том, как они его делают - открыто, через обсуждения и самое важное, через идею, что комьюнити важнее кода. Когда Apache HTTP Server стал критически важным для отрасли, в 1999 году оформили Apache Software Foundation как некоммерческую организацию, которая даёт проектам юридическую оболочку, инфраструктуру и стандарты управления, чтобы они не зависели от одного автора. Так Apache стала не «серия продуктов», а фабрикой зрелых open-source проектов. 

Фонд НЕ пишет Kafka или Spark “в офисе”, он предоставляет правила и среду, в которой разные команды могут запускать и развивать проекты. Сделано это для того, чтобы ими можно было пользоваться в продакшене десятилетиями, а не пока стартап не продался. В мире Apache считается, что если у проекта крутой код, но нет живого сообщества - значит проект мертв. Именно поэтому у них такая жесткая процедура приема проектов, где проверяют не столько строчки кода, сколько то, умеют ли люди договариваться. На сегодняшний день под крылом Apache находится более 350 проектов.

Apache стал Apache потому что когда-то люди устали жить на локальных костылях и сделали общий проект из “заплаток”. Превратили этот опыт в организацию, которая умеет масштабировать не код, а сотрудничество. Поэтому сегодня ты видишь одно слово в названии у сотен инструментов. Это метка зрелости процесса и того, что проект построен так, чтобы пережить своих создателей и остаться в проде, где ему и место.

Подписывайтесь на наш Telegram-канал ИнженеркаТех. Там мы публикуем полезные подборки от инженеров и делимся инсайтами.

Теги:
+3
Комментарии2

Продуктовая разработка с агентами, замена agile-команд и роль продакт-инженера — эти и другие темы я обсудил с Юрой Агеевым, основателем ProductSense, в новом выпуске подкаста make sense.

Слушайте на удобной платформе: 
> Telegram 
> Mave 
> Apple 
> Яндекс Музыка
> YouTube

Таймкоды:
00:00 — Введение
01:58 — Личный сетап агентов, эксперименты и первые сценарии
03:34 — Почему тема агентов — это про орг. модель, а не про игрушки
06:05 — Откуда взялся Agile: ответ на рост сложности продуктов
09:10 — Идея мини-команд для быстрого тестирования гипотез с агентами
11:10 — Риски одиночки: туннельность, критика, фактор автобуса
12:05 — Платформенная команда: стандарты, «золотой путь» и «ворота качества»
14:05 — Зависимость централизации от культуры компании
16:12 — Продакт-инженер: продукт и инженерия в одном цикле
17:32 — Схлопывание ролей: инженеры учат продукт, продукты учат технику
19:33 — Практика пайплайнов в работе с агентами: сначала документация, потом код
26:03 — Контекст как главная ценность и способ удержания клиентов
29:01 — Один в поле не воин: почему запуск и масштаб важнее кода
30:28 — Можно ли доверять агентам?
33:54 — Конкуренция заставит ускоряться: когда агенты станут нормой?
35:55 — Практика внедрения агентов: выделенные пилоты и команды добровольцев
37:35 — Главные риски: стоимость токенов и деградация навыков
42:09 — Как будут трансформироваться процессы и agile-роли?
50:57 — Как правильно строить эксперимент: задачи, команды, обучение и метрики

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

Теги:
+4
Комментарии0

БФТ-Холдинг в рейтингах лучших работодателей

По итогам 2025 года БФТ-Холдинг вошел в топ-20 рейтинга лучших ИТ-работодателей по версии Хабр.Карьеры. Компания заняла 17 место среди организаций с численностью 1000–5000 сотрудников.

Выше всего пользователи оценили БФТ-Холдинг по таким критериям:
- Компания делает мир лучше
- Комфортные условия труда
- Отношения с коллегами
- Интересные задачи

Ранее компания стала участником топ-100 рейтинга лучших IT-брендов работодателей по версии Хабр и ЭКОПСИ. Также компания получила «Серебряный статус» в рейтинге Forbes.

Включение в авторитетные рейтинги работодателей России подтверждает, что БФТ-Холдинг - компания, где создают комфортные условия для работы и развития сотрудников.

Теги:
-1
Комментарии0

Запуск USB-сканера отпечатков пальцев Chipsailing CS9711 на Linux.

Эти сканеры продаются на маркетплейсах по цене 1-2 т.р. Команда lsusb опознаёт их как
ID 2541:0236 Chipsailing CS9711Fingprint. Мейнстримный fprintd этот сканер не поддерживает. Как видно из комментариев к MR, разработчики не могут оценить точность нового алгоритма sigfm для сравнения отпечатков, потому не спешат (а дефолтному уже 15 лет, и он довольно плохо работает с низким разрешением сканера).

На Arch драйвер должен ставиться из AUR, рецепт для Fedora тут, далее - рецепт для Ubuntu.

TL;DR: аккуратно подменяем системную библиотеку libfprint-2.so версией из форка.

1. Скачать и скомпилировать форк libfprint-2 с поддержкой сканера

git clone https://github.com/archeYR/libfprint-CS9711
cd libfprint-CS9711
meson setup build

Последняя команда может выдать ошибку, не найдя в системе пакетов с нужными библиотеками (libgusb-dev, libopencv-dev и т.п.). Надо их поставить и выполнить её снова.

Компилируем:

ninja -C build

Для проверки позапускаем примеры:

cd build/examples
sudo ./enroll
sudo ./verify

Установить библиотеку, если всё хорошо (действовать с острожностью! обратите внимание на комментарии к посту)

cd ..              # предполагаю, что из build/examples никуда не уходили
sudo ninja install

В итоге должен появиться файл /usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0 (и еще другие, тоже в /usr/local, но они не важны)

2. Установить пакет с демоном распознавания по отпечатку пальца

sudo apt install fprintd

Эта команда установит также пакеты с libfprint-2 из системных репозиториев, без поддержки нашего сканера.

3. Подменить библиотеку libfprint-2

Варианты:

  • указать ld.so читать нужную библиотеку перед запуском fprintd

  • создать в /usr/lib/x86_64-linux-gnu/ симлинк на правильный файл

  • перезаписать библиотеку в /usr/lib/x86_64-linux-gnu

  • PPA

У каждого есть плюсы и минусы, последние два рассмотрены не будут.

3.1. Предзагрузка нужной libfprint-2

sudo systemctl edit fprintd

Откроется окно редактора; добавить две строки (там сказано, куда)

[Service]
Environment="LD_PRELOAD=/usr/local/lib/x86_64-linux-gnu/libfprint-2.so"

сохранить файл, закрыть редактор.

3.2. Установка правильной символической ссылки

sudo update-alternatives --install\
  /usr/lib/x86_64-linux-gnu/libfprint-2.so.2\
  libfprint\
  /usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0 100

В комментах под постом написано, что должна выдать команда ls -l, если всё сделано правильно.

После любой из манипуляций перезапустить fprintd и проверить, что он не выдаёт ошибок.

sudo systemctl restart fprintd
sudo systemctl status fprintd

Ожидаемый вывод:

● fprintd.service - Fingerprint Authentication Daemon
     Loaded: loaded (/usr/lib/systemd/system/fprintd.service; static)
    Drop-In: /etc/systemd/system/fprintd.service.d
             └─override.conf
     Active: active (running) since Tue 2026-02-24 16:02:45 MSK; 1s ago
          ...
фев 24 16:02:45 machine-name systemd[1]: Starting fprintd.service - Fingerprint Authentication Daemon...
фев 24 16:02:45 machine-name systemd[1]: Started fprintd.service - Fingerprint Authentication Daemon.

4. Зарегистрировать пальцы командой fprintd-enroll

По умолчанию регистрируется правый указательный, остальное написано в man fprintd-enroll

5. Включить вход по отпечатку

sudo pam-auth-update

поставить звёздочку на Fingerprint Authentication и нажать Ok.

Это вот так поменяет файл /etc/pam.d/common-auth:

-auth   [success=1 default=ignore]      pam_unix.so nullok
+auth   [success=2 default=ignore]      pam_fprintd.so max-tries=5 timeout=10 # debug
+auth   [success=1 default=ignore]      pam_unix.so nullok try_first_pass

Проверено на Kubuntu 24.04.4 LTS.

Ссылки по теме:
https://man7.org/linux/man-pages/man8/ld.so.8.html
https://manpages.ubuntu.com/manpages/noble/man5/pam.conf.5.html

Теги:
+3
Комментарии8

Привет, Хабр! Буду краток: буквально на днях компания Positive Technologies выпустит свой научно-популярный фильм о реверс-инжиниринге «Как получить доступ ко всему». Позже он появится в онлайн-кинотеатрах, но самый шик-блеск — посмотреть допремьерный показ вместе с его создателями в крутейшей локации.

Картина посвящена реверс-инжинирингу, который существует примерно столько же, сколько существует человек. Ну, согласитесь — даже когда не было микросхем, «чёрных ящиков» всё равно хватало: явления природы, предметы, да даже мы сами — зная, как всё устроено, люди получали доступ ко многим возможностям.

Фильм создавался полтора года, из которых 5 месяцев было потрачено на проработку идеи и 11 месяцев на саму съёмку и производство. Причём всё пересобиралось три раза, чтобы сохранить грань между «трушностью» для самих реверсеров и понятностью для широкой аудитории. Съёмки проходили во множестве локаций: в офисах PT (в том числе в исследовательских лабораториях Positive Labs), Лаборатории Касперского, Т-Банка, в Кибердоме, музеях криптографии и военной техники, на производстве компании «Моторика» и в других интересных местах. Команде удалось снять исследование космического спутника, бионических протезов, автомобильных беспилотных систем, специализированные установки для аппаратного реверсинга и многое другое.

В фильме воссоздаётся пять исторических эпох, описывающих историю советского и российского реверс-инжиниринга за последние сто лет:

  • 20–40-е годы, когда упор делался на военную промышленность и было важно знать, как устроены орудия врага, чтобы сделать свои ещё эффективнее.

  • 60–80-е, когда появились первые большие ЭВМ.

  • 90–00-е, когда массовая доступность компьютеров привлекла реверсеров, которые делали ПО бесплатным для всех.

  • 10–20-е, сегодня, когда распространение технологий привело к лавине киберугроз.

  • Будущее, в котором создатели размышляют о том, есть ли место этой профессии в эру ИИ и десятка умных устройств на одного человека.   

Когда: показы пройдут 27 (пятницаи) и 28 (суббота) февраля, в 11, 15 и 19 часов
Место: «Кибердом» — Москва, ул. 2-я Звенигородская, 12с18

Регистрация через таймпад, количество мест сильно ограничено. Если не успели, но непреодолимо хотите — напишите в личку, что-нибудь придумаем.

Теги:
+18
Комментарии7

Изучаю механизм проактивного АИ-агента. Часть 2

В первой части я рассказал про концепт проактивного AI-агента и показал примеры сообщений, которые он мог бы присылать. Последние 3 дня я занимался реализацией — и сегодня пришло первое сообщение от него

За основу я взял популярный OpenClaw, но захотел переписать бота по-своему и разобраться с тем, как живёт и думает эта сущность

Архитектура: из чего состоят подобные OpenClaw агенты

Heartbeat — сердце агента

Это цикл, который раз в N минут триггерит основные события, проверки и запускает переписывание файлов, если нужно

«Проснись, посмотри, что изменилось, подумай, что предложить пользователю».

Memory — память агента

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

Краткосрочная — контекст текущей сессии, что происходило сегодня, какие задачи обсуждали, что пользователь ответил. Долгосрочная — в случае OpenClaw это SQLite с механизмом эмбеддингов. Ну можно поставить любую другую векторную бд

Плюс есть еще такие файлы как Soul, Agents, Identity, User, Memory и еще несколько. Все они сразу попадают в Context Window

Без разделения на два типа памяти агент либо забывает всё на следующий день, либо тонет в контексте и начинает галлюцинировать.

Memory Compaction — сжатие памяти

В OpenClaw агент хранит часть контекста в файлах формата MEMORY_MM_DD_YYYY с историей каждого дня.

По прошествию нескольких дней агент делает Compact этих файлов и удаляет / архзивирует их исходники

Context Routing — маршрутизация контекста

Как и чем нужно заполнять контекст на протяжении времени? Как его сжимать?

Контекстное окно — ресурс ограниченный. Нельзя каждый раз загружать все цели, всю память, все задачи. Нужно выбирать: что релевантно сейчас, что можно опустить, что критично.

Context routing решает, какие куски информации попадут в промпт для конкретного цикла работы агента.

Prompt Assembly — сборка промпта

Как структурировать промпт? Какая информация в нём приоритетнее, а что можно поджать? Как выбираются цели на конкретный день?

Это отдельная инженерная задача. Промпт агента — не статичный текст. Он собирается динамически из кусков: текущие цели, релевантная память, задачи из таск-трекера, контекст дня недели и времени.

---------------

Что я добавил к исходному варианту OpenClaw от себя

Reflection — самооценка агента

Экспериментальный блок, где модель оценивает сама себя по 4 шкалам:

  • Actionability — дал ли конкретные шаги?

  • Relevance — был ли совет по теме цели?

  • Novelty — сказал ли что-то новое?

  • Overall quality — общее качество

Зачем это нужно: без обратной связи агент быстро скатывается в банальности типа «Не забудь поработать над своими целями!». Reflection заставляет его критически оценивать свой же output и со временем улучшать качество предложений.

К чему он у меня подключен

  • TickTick — мой таск-трекер, откуда бот смотрит задачи и ставит новые

  • Telegram — сюда он мне пишет и предлагает задачку на сегодня

  • Discord — самый лучший по функционалу на сегодня

----------------

Что я понял в процессе

Создание проактивного агента — это совсем другой уровень сложности по сравнению с обычным чат-ботом.

В чат-боте пользователь задаёт вопрос → получает ответ. Всё. Контекст понятен из вопроса.

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

Это, по сути, проектирование UX для системы, у которой нет интерфейса в привычном смысле — только текст в мессенджере.

Вот такие промежуточные итоги — получилось хоть немного разобраться в возможном механизме оркестрации под капотом агента

Если где то нашли неточность, то пинганите в комментах

В третей части напишу подробнее про OpenClaw, так как пока решил его потестировать

Теги:
+1
Комментарии2

На GitHub сегодня обновил батник для скачивания видео через yt-dlp. Текущую версию попытался продублировать здесь:

@set @x=0 /*
@echo off
chcp 65001 >nul
setlocal
set VideoURL=gaRy9U0yiSA
set head=
set suffix=
set series=%%(series)s. 
call :set_template
set format=b
set enable_format_recommendations=1
set extension=mov
set AppPath=D:\kvk\Utilities\GitHub\yt-dlp\yt-dlp.cmd
if not exist %AppPath% set AppPath=yt-dlp.exe
if not -%1- == -- (set format=%1 & set enable_format_recommendations=0)
set tempFileName=%random%.tmp
call %AppPath% -o "%%template:.!=%%" --windows-filenames --socket-timeout 45 --print-to-file filename %%tempFileName%% --skip-download %%VideoURL%%
if not errorlevel 0 if exist %tempFileName% del /q %tempFileName%
if not exist %tempFileName% exit /b
cscript /nologo /e:javascript "%~dpnx0" %tempFileName%
set /p filename=<%tempFileName%
set processed_series=%filename:!.=!%
if not "%processed_series%" == "%filename%" (setlocal enabledelayedexpansion & set series=!series:~0,-2! & setlocal disabledelayedexpansion & call :set_template & set filename=%processed_series%)
set filename_without_series=%filename:NA. =%
if not "%filename_without_series%" == "%filename%" (set series=& call :set_template & set filename=%filename_without_series%)
setlocal enabledelayedexpansion
set filename=!filename:.mp4=.%extension%!
set filename=!filename:.webm=.%extension%!.txt
setlocal disabledelayedexpansion
echo %VideoURL% > "%filename%" && del /q %tempFileName%
cscript /nologo /e:javascript "%~dpnx0" "%filename%"
echo.>> "%filename%"
call :size "%filename%"
set tempsize=%filesize%
call %AppPath% --socket-timeout 45 --print formats_table %%VideoURL%% >> "%filename%"
if not errorlevel 0 exit /b
call :size "%filename%"
if %tempsize% == %filesize% exit /b
for /f %%i in ('cscript /nologo /e:javascript "%~dpnx0" "%filename%" /FORMATRECOMMENDATIONS:%enable_format_recommendations%') do if defined enable_format_recommendations if "%enable_format_recommendations%" == "1" if not "%%i" == "" set format=%%i
if -%1- == ---- exit /b
start "yt-dlp: %VideoURL%" %AppPath% -o "%template%" --split-chapters --postprocessor-args "SplitChapters+ffmpeg:-map_metadata -1" --video-multistreams --audio-multistreams --windows-filenames --remux-video %extension% --concurrent-fragments 10 --socket-timeout 45 --abort-on-unavailable-fragment --exec "pause " --embed-metadata --format %format% %VideoURL% ^&exit/b
:set_template
set template=%head%%series%%%(title)s [%%(id)s]%suffix%.%%(ext)s
exit /b
:size
set filesize=%~z1
goto:eof */

var fso = new ActiveXObject("Scripting.FileSystemObject"), fName = "", newText = "";
if(WSH.Arguments.Unnamed.Count && fso.FileExists(fName=WSH.Arguments.Unnamed(0))){
	with(new ActiveXObject("ADODB.Stream")){Type=2; Mode=3; Open(); Charset="UTF-8"; LoadFromFile(fName);
		Position=0; var newText=ReadText().replace(/\s*$/, ""); Close();
		newText = ((isTemp=/^\d+\.tmp$/.test(fName)) ? newText.replace(/\(/g, "{").replace(/\)/g, "}") : newText.replace(/\r\n|\n/g, "\r\n"));
		fso.DeleteFile(fName);
		Open(); Charset="UTF-8"; Position=0; WriteText(newText + (isTemp ? "" : "\r\n")); SaveToFile(fName); Close();
	}
}
if(1*WSH.Arguments.Named.Item("FORMATRECOMMENDATIONS") && newText){
	var line, lines = newText.split("\r\n"), recommended_audio_format = "", recommended_video_format = "";
	for(var lineIndex in lines){
		if(/audio only/.test(line=lines[lineIndex])){
			if(/(^hls\S+)\s.+audio only.*$/.test(line))recommended_audio_format = RegExp.$1;
			else if(!/^hls/.test(recommended_audio_format) && /(^\S+)\s+m4a/.test(line))recommended_audio_format = RegExp.$1;
		} else if(/video only/.test(line)){
			if(/(^hls\S+)\s.+video only.*$/.test(line))recommended_video_format = RegExp.$1;
			else if(!/^hls/.test(recommended_video_format) && /(^\S+)\s+mp4\s+1920x1080\s+.*avc1/.test(line))recommended_video_format = RegExp.$1;
		}
	}
	WSH.echo(recommended_audio_format && recommended_video_format ? recommended_audio_format + "+" + recommended_video_format : "");
}
Теги:
+2
Комментарии5

Статический анализ генерируемой OpenApi-разметки и .NET 10

Привет, Хабр! 👋 На связи Саша Кузнецов, ведущий инженер-программист в Контуре.

Начиная с версии .NET 10 Microsoft решила поломать обратную совместимость в отношении статических анализаторов генерируемой OpenApi-разметки.

[HttpGet("{id}")]
[ProducesResponseType<User>(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetUser(int id)
{
    var user = users.FirstOrDefault(p => p.Id == id);
    if (user == null)
        return NotFound();

    return Ok(user);
}

Раньше можно было возвращать IActionResult, или ActionResult, размечая типы ответов специальными атрибутами типа ProducesResponseType (см. код 1). Это позволяло включить потом статический анализатор добавлением в настройки проекта специального атрибута IncludeOpenAPIAnalyzers (см. код 2) и получать предупреждения на этапе компиляции, или статического анализа кода (см. код 3).

<PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <IncludeOpenAPIAnalyzers>true</IncludeOpenAPIAnalyzers>
  </PropertyGroup>

Увы, но с выходом .NET 10 этот подход был объявлен устаревшим (см.: https://learn.microsoft.com/ru-ru/aspnet/core/breaking-changes/10/openapi-analyzers-deprecated и https://github.com/aspnet/Announcements/issues/521). Microsoft решила сосредоточиться на работе через Results (см. код 4), которые появились в .NET 7. В них статический анализ поддерживается "из коробки" из-за строгой типизации.

[HttpGet("{id}")]
public async Task<Results<Ok<User>, NotFound>> GetUser(int id)
{
    var user = users.FirstOrDefault(p => p.Id == id);
    if (user == null)
        return TypedResults.NotFound();

    return TypedResults.Ok(user);
}

Сама тенденция не сильно радует. В старых проектах IActionResult и ActionResult (их пока не объявили устаревшими, но без статического анализа ошибок разметки они начнут терять привлекательность) используются много где.

Теги:
+2
Комментарии0

Тем кто ещё находится в стадии планирования календаря мероприятий по кибербезу на 2026 год для развития или пиара себя и коллег, могу посоветовать вот такие публичные календари:

  1. ICT2GO (https://ict2go.ru/events/) Интерфейс не самый современный, но покрытие по разнообразию событий у него одно из самых хороших. Можно искать мероприятия и по отдельным направлениям ИТ.

  2. Security Vision (https://www.securityvision.ru/events/) У ICT2GO нет в календаре крупных событий типа PHD или ТЕРРИТОРИЯ БЕЗОПАСНОСТИ, нет крупных иностранных событий. У календарика Security Vision таких проблем нет.

Иногда в этих телеграмм каналах публикуются мероприятия которых нет в 2 источниках выше:
https://t.me/InfoBezEvents
https://t.me/event_security
https://t.me/secwebinars

p.s. Раньше ещё был календарь по знаковым событиям от Алексея Викторовича Лукацкого, он велся более 10 лет.. Вот версия календарика образца 2023 года (https://web.archive.org/web/20230928011400/https://lukatsky.ru/calendar)

Теги:
+1
Комментарии0

КАК БАННЕРНАЯ СЛЕПОТА СЪЕЛА КОНВЕРСИЮ НАРУЖНОЙ РЕКЛАМЫ

Если бы наружная реклама умела обижаться, она бы уже давно хлопнула дверью. Город ее больше не замечает.

Щиты вдоль дорог, экраны на фасадах, наклейки в метро, реклама на транспорте — все это слилось в один большой белый шум. Глаз скользит, мозг фильтрует, внимание проходит мимо. Не потому что реклама плохая. А потому что ее слишком много.

Это и есть баннерная слепота. Знакомьтесь, новая городская реальность, которую почему-то никак не может принять бизнес, продолжая сливать огромные бюджеты на наружку. Конверсию не отследить, якорей нет, но зато продукт светится на трассе!

Когда рекламы больше, чем внимания

По данным Admetrix, в 2025 году в России зафиксировано около 94 тысяч цифровых рекламных поверхностей.

В 2019 году их было почти в восемь раз меньше. Реклама растет как дрожжи, а внимание человека – увы, нельзя растянуть. Оно либо скользит по баннерам, как серфер по волнам, либо мозг вообще отключает функцию “запомнить”, чтобы не перегружать голову ненужной информацией.

В итоге получается примерно как с уведомлениями в телефоне: чем их больше, тем меньше шансов, что вы откроете хоть одно.

Многие предприниматели льют деньги на рекламу и удивляются, почему нет эффекта. “Наверное платежеспособность упала”. Но мы уже с вами разобрались, что дело не в ней?))

Почему привычная наружка больше не работает

Во-первых, привычка.

Один и тот же щит на одном и том же месте — это уже не реклама. Это элемент благоустройства. Как фонарь или забор. Его не читают, его обходят взглядом.

Во-вторых, статика.

Неподвижная картинка пытается конкурировать с потоком машин, людьми, навигацией, смартфонами. Это как пытаться перекричать метро шепотом.

В-третьих, мельтешение.

Экраны с быстрой ротацией роликов создают другой эффект: вроде все движется, но ничего не запоминается. Формально показы есть, а смысла — нет.

И вот здесь начинается СДВГ самое интересное.

Почему «охват» больше не убеждает

Наружка любит большие цифры.

«Сотни тысяч контактов в сутки», «миллионы в месяц» — звучит солидно. Но давайте считать не абстрактно, а по-взрослому.

Если экран заявляет, например, 380 тысяч контактов в сутки, это число относится ко всем рекламодателям сразу. Один ролик появляется раз в несколько минут и занимает считанные секунды.

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

Это как арендовать зал на сутки, а выступать в нем 40 минут. Формально вы были там целый день. Фактически — не совсем.

Баннерная слепота — это не про креатив

Любимый аргумент рынка — «надо делать лучше креатив». Это удобная мысль, но она снимает ответственность с формата.

Креатив важен. Но если человек не смотрит в эту сторону — можно хоть с бубном танцевать, толку не будет. Сначала внимание. Потом сообщение.

И здесь данные сходятся с практикой: внимание появляется там, где нарушается привычный сценарий.

Что действительно цепляет взгляд в городе

Движение.

Мозг эволюционно реагирует на движущиеся объекты. Именно поэтому все, что едет, появляется и исчезает, автоматически выделяется на фоне статичных конструкций.

Видео вместо картинки.

Динамичный контент удерживает внимание в 2–3 раза дольше, чем неподвижное изображение. Это подтверждают и исследования, и здравый смысл: видео не нужно «читать», его воспринимают мгновенно.

Контекст и измеримость.

Рынок уходит от размещений «на год вперед и будь что будет».

Работают форматы, где можно понять: — где была реклама — когда она работала — кто потенциально её видел

Ровно так же когда-то изменилась интернет-реклама. Улица просто догоняет.

Как меняется уличная реклама на самом деле

ород все еще реагирует на неожиданность, движение и понятный месседж в нужное время и в нужном месте.

Наружка по-прежнему работает, но только если не прячется в фоне и поддается расчетам. Город изменился. И реклама в нем вынуждена меняться — иначе ее перестанут замечать.

Теги:
-1
Комментарии0

Ближайшие события

💰Согласно оценкам WARC, объём мирового рынка рекламы по итогам 2025 г. вырос на 8,9%, до $1,19 трлн. 

По прогнозам экспертов компании, в 2026 г. рост индустрии составит 9,1% ($1,3 трлн), в 2027 г. – 7,9% ($1,40 трлн).

В прошлом году 69% рекламных расходов приходилось на 10 крупнейших рынков. 

Доля крупнейшего рынка – США – составляет 35,3% от общего мирового объёма: $421,1 млрд (+8,9% в 2025 г.; +7% в 2026 г.; +6,4% в 2027 г.).

Доля второго по величине рынка – Китая – 16,8% от общемирового объёма. В 2025 г. китайская рекламная индустрия увеличилась на 6,9%, до $200,1 млрд (в 2026 г. – +8,9%, в 2027 г. – +8,3%).

На третьем месте с ростом в 2025 г. на 9,3% ($58,1 млрд) и прогнозируемым увеличением на 9,3% в 2026 г. – рынок Великобритании.

По итогам 2025 г. рост объёма рекламного рынка Индии ожидается на уровне 4,6%, до $13,8 млрд (+8% в 2026 г., +9,7% в 2027 г.), Японии – +4,6%, до $39 млрд (+3,8% и 6,7% в 2026 и 2027 гг.).

Объём рынка рекламы Германии в 2025 г. увеличился на 9,3%, до $34,4 млрд (+8,3% в 2026 г., +4,7% в 2027 г.), Франции – на 8,9%, до $21,9 млрд (+7,2% в 2026 г., +4,3% в 2027 г.), Италии – на 7,4%, до $12,4 млрд (6,8% в 2026 г., +4,1% в 2027 г.), Испании – на 9,8%, до $10,7 млрд (+8,7% в 2026 г., +5,4% в 2027 г.).

Канадский рекламный рынок завершил 2025 г. с ростом в 2,3%, $17,9 млрд (+4,6% в 2026 г., +6,4% в 2027 г). В Мексике объём индустрии сократится по итогам года на 8,8%, до $7,5 млрд, но в 2026-2027 гг. ожидается рост на уровне 6,6% и 7,2% соответственно.

WARC (World Advertising Research Center) - ведущее глобальное аналитическое агентство и медиаресурс, специализирующееся на исследованиях, данных и аналитике в области маркетинга, рекламы и медиа.

Теги:
-1
Комментарии0

Как установить и настроить Syncthing на Ubuntu

Syncthing — это open-source-инструмент для синхронизации файлов напрямую между устройствами без централизованного облака. Данные передаются по защищенному каналу и не сохраняются на сторонних серверах, поэтому контроль над инфраструктурой и доступом остается у владельца системы.

Решение подходит в сценариях, где важно хранить данные внутри собственной среды — на виртуальном или выделенном сервере, в локальной сети или в инфраструктуре небольшой команды. Syncthing используют для синхронизации рабочих каталогов, резервного копирования, обмена файлами между машинами и создания собственного «облака» без внешних сервисов.

В в блоге разобрали установку на Ubuntu через apt, первый запуск и настройку через веб-интерфейс, добавление устройств и папок, запуск как службы через systemd для серверных сценариев, а также рекомендации по безопасности и оптимизации. Читайте на сайте Рег.облака.

Теги:
+1
Комментарии0

Жду, когда Cursor и Claude Code будут стоить по $2000-$3000 в месяц. Они уже заменяют джунов, но скоро под нож пойдут и  миддлы, и сеньоры. А здесь простой ROI (возврат инвестиций) для компаний: не болеет, не ходит на перекуры, не выгорает, не увольняется. Соответственно, нет сопутствующих затрат. Сейчас идет этап адаптации и принятия, поэтому действуют «дешевые» тарифы по $200. 

Теги:
+1
Комментарии2

Бесплатный мини-курс для специалистов по ручному тестированию. От нейросети до тест-кейса: практическое применение ИИ в тестировании.

Привет, Хабр! Я — Николай Корнетов, ведущий инженер-тестировщик в IBS. Мы с коллегами записали бесплатный мини-курс об использовании искусственного интеллекта для задач ручного тестирования.

Курс состоит из 8 видео. В них я расскажу, как нейросети могут упростить и автоматизировать вашу работу: разберу принципы работы больших языковых моделей и их ограничения, покажу на реальных примерах, как ИИ помогает ревьюить документацию, создавать чек-листы и тест-кейсы, придумывать тестовые данные и решать другие задачи.

Все уроки курса — на нашем сайте. Смотри видео, применяй новые знания на практике и делись своими впечатлениями в комментариях.

Теги:
-2
Комментарии0

Ахиллесова пята SharedPreferences

Статья про то, о чём не спрашивают на собесeдованиях и не рассказывают на курсах по Android-разработке — о неявной особенности Android, которая влияет на деградацию производительности и приводит к невоспроизводимым ANR в вашем приложении.

SharedPreferences часто используют «по привычке» — сохранить токен, флажок, пару строк. Но в какой-то момент это начинает тормозить интерфейс и даже приводить к ANR, особенно если запись/чтение происходит не там и не тогда, где вы ожидаете. Автор делится измерениями производительности, показывает, как деградация превращается в потерю кадров при переходах между экранами, а затем сравнивает варианты.

Ахиллесова пята SharedPreferences и стоит ли внедрять Datastore как альтернативу
В этой статье я расскажу то, о чём не спрашивают на собесeдованиях и не рассказывают на курсах по An...
habr.com

Эта статья будет особенно интересна Android-разработчикам и тимлидам, которые уже сталкивались с мистическими ANR, просадками перформанса и фризами на слабых девайсах, а также тем, кто держит в приложении много сторонних SDK и хочет понимать, как неявные записи в SharedPreferences могут незаметно копить нагрузку.

Читайте статью «Ахиллесова пята SharedPreferences и стоит ли внедрять Datastore как альтернативу»

Теги:
0
Комментарии0

В бизнесе многие готовятся к запуску как к экспедиции на Марс

Собирают оборудование. Проверяют гипотезы. Дорабатывают скафандр. Ещё немного исследований. Ещё немного аналитики. Ещё чуть-чуть улучшить продукт — и вот тогда можно стартовать.

Проблема в том, что большинству бизнесов нужно не на Марс, а всего-навсего через дорогу.

Есть принцип, которым следует руководствоваться в поставноке некоторых задач: разумная достаточность. Это когда ты делаешь ровно столько, сколько нужно для достижения цели — не меньше, но и не больше.

Если задача — проверить спрос, тебе не нужна идеальная платформа. Нужен понятный оффер и способ получить обратную связь.

Если задача — увеличить продажи, не обязательно пересобирать весь бренд. Иногда достаточно поправить позиционирование и 2–3 ключевые точки контакта.

Если задача — выйти в новый сегмент с текущим продуктом, не всегда нужна «стратегия на 100 слайдов». Нужна ясность: кому, с чем и через какие каналы ты заходишь.

Только не путайте разумную достаточность с халтурой или нежеланием делать хорошо. В таком случае дело в лени и некомпетентности. А мы говорим про точность. Понимание, какой результат нужен именно сейчас, и какое минимальное действие к нему ведёт.

А ещё бывает так, что чрезмерная глубина маскирует страх: страх ошибиться, получить отказ, услышать «не нужно». И вместо движения вперёд начинается бесконечное улучшение.

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

Теги:
+2
Комментарии0

Фактчек не нужен: мы решили не делать то, что делают все

Мы строим AI-систему для автоматизации рерайта новостей в региональных СМИ. В таких СМИ часто три человека делают работу пятерых, а восемь из десяти материалов в день — это пересказ чужих новостей. Не потому что хотят, просто план, трафик, выживание и тд. Мы забираем эти восемь рерайтов на себя, чтобы у редакции осталось время на журналистику, а не тупизну.

Начали делать модуль фактчека. Через Перплексити сделала исследование, принесла разработчику.

В какой последовательности вообще делается проверка фактов:

1. Сначала нужно понять, что из текста нужно проверить (claim detection), это не всегда так очевидно, как кажется.

2. Классифицируем утверждение — это имя, дата, цифра, гео, цитата?

3. Проверяем каждое утверждение

4. Маркируем факты (причем сначала нужно задать систему, например, бинарную)

5. Редактор выносит вердикт

Красиво, академично и вообще не то, что нужно.

Поговорила с редакторами, как они делают фактчек

Ответы одинаковые: вручную, глазами. Смотрят, кто ещё написал эту новость, чтобы не быть первыми с фейком. Проверяют имена и должности. Иногда звонят в источник. Пара человек прогоняют через нейронку. Автоматического фактчека нет ни у кого. Ни инструментов, ни чек-листов.

Разработчик как бэ заранее это и предполагал: «Я очень сомневаюсь, что у нас медиа вот этим всем занимается в том объёме, как у тебя в ресёрч.» Ну прав. Нельзя автоматизировать то, чего нет. Сначала нужно дать инструмент лучше текущего процесса. А текущий процесс - это глаза, еще одни глаза и интуиция.

Сформулировала, что вообще такое для нас т.н. фактчекинг. Нам реально нужны две вещи:

  1. Понимать, можно ли доверять источнику

  2. Проверять, что AI не наврал при рерайте

Всё.

Решили пока ввести такие уровни доверия к источнику:

  1. Если это ТАСС, Интерфакс, крупные СМИ, релизы из почты и тд - рерайтим автоматом.

  2. Telegram-каналы – рерайтим, только если кто-то ещё об этом написал. «Кто-то ещё написал» - это мы и так знаем из дедупликации. Просто сохраняем число и используем как сигнал.

  3. Непонятно кто, но новость релевантна изданию - показываем редактору, не рерайтим.

Сделали рерайт – проверяем консистентность, это один вызов LLM с промптом типа «Сравни факты в рерайте с оригиналом. Найди расхождения в ФИО, должностях, датах, цифрах».

Результат маркируем:

🟢 Всё совпадает с источником, можно доверять

🟡 Мелкие расхождения (округление, перефразирование)

🔴 Появились факты, которых нет в оригинале. Красный — редактор смотрит руками. Зелёный

Разработчик: «Мне кажется, это просто отдельная роль агенту даётся. Типа вот два текста, надо проверить что не так. Это норм. Обычная история.»

Ну для тебя обычная, а для меня нет. Ок, приняли.

Вопрос, который мы ещё не решили

Разраб подкинул хорошую мысль: «А что если новость сначала пришла из телеги, а потом лучше написана с нормального портала?»

Это про выбор между скоростью и надёжностью. Рерайтить инсайд из телеграма сразу — быстро, но рискованно. Ждать подтверждения, надёжно, но поздно.

Пока ответ такой - система не решает за редактора. Она показывает сигнал - «эта новость пока только у такого-то канала, подтверждений нет», и дальше уже человек выбирает, что с ней делать. Для одних тем скорость важнее, для других — нет.

Итог – наш фактчек немного не фактчек

Полноценный академический фактчекинг - возможно, когда-нибудь. В MVP уровни доверия к источникам + агент-верификатор, который сравнивает рерайт с оригиналом. И хорош пока. Едем без внешних API и claim detection. Просто минимально достаточная система, которая лучше глаз и интуиции.

Теги:
-3
Комментарии0