Habr.com

Syndicate content Хабр
Все публикации подряд на Хабре
Updated: 1 hour 8 min ago

Как разобрать файлы на Mac за 10–15 минут и удалить дубли фото, видео и документов + готовый скрипт

4 hours 51 min ago

На Mac накопилось 860 ГБ файлов, среди которых одни и те же фото, видео и документы лежали в разных папках под разными именами. Я собрал Python-скрипт, который ищет точные дубли по SHA-256, переносит лишние копии в карантин и готовит план сортировки с возможностью отката. На первой проверке 108,5 ГБ нашлось 26,8 ГБ дублей.

В статье показываю весь процесс и даю готовый код.

Читать статью

Проверить доступность сайта для ИИ ботов через curl за 5 минут

8 hours 59 min ago

Сайт открывается в браузере, отдаёт 200 OK, страница рендерится без единой ошибки. При этом ни ChatGPT, ни Claude, ни Perplexity ни разу не сослались на ваш контент. Первое, на что обычно грешат в этой ситуации, — качество текста или его SEO-разметку. На практике причина чаще лежит на уровень ниже: боты этих систем физически не получают ту страницу, которую видите вы.

Особенно часто это касается проектов на shared-хостинге или за CDN. Антибот-защита там нередко включена по умолчанию — провайдером или хостинг-панелью, а не осознанным решением владельца сайта. Cloudflare, WAF хостинга или модуль защиты от парсинга можно годами не замечать: обычным посетителям и поисковым ботам Google он не мешает, а вот новые краулеры вроде GPTBot или ClaudeBot под раздачу попадают в первую очередь — их либо ещё не занесли в белый список, либо режут по репутации IP-подсети или по самому User-Agent. Итог один: администратор сайта искренне не подозревает, что его контент невидим для ИИ-систем, потому что в браузере и в Google Search Console всё выглядит идеально.

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

Читать далее

[Перевод] Как понять самое важное уравнение Вселенной?

10 hours 49 min ago

Итан Сигел (американский астрофизик‑теоретик и научный журналист, автор рубрики «Спросите Итана», один из пропагандистов современных научных знаний), простыми словами рассказывает о величайшем уравнении физики, выведенном нашим соотечественником Александром Фридманом.

@avshkol перевёл эту статью Итана, поскольку, как говорит в предисловии сам Итан, "Если вы хотите понять Вселенную в космологическом смысле, вам не обойтись без уравнения Фридмана. Поймёте его — и космос ваш!.."

Читать далее

Папка как интеграция: файловый обмен в .NET без cron, FileSystemWatcher и самописных костылей

11 hours 3 min ago

Опрос каталога, ожидание дописи файла, идемпотентность и атомарная запись через temp+rename: файловый обмен как обычный шаг маршрута.

Спросите у любого интегратора, через что реально ходят деньги, и он назовёт файлы. Банк кладёт выписку в каталог на шаре. 1С выгружает заказы в XML по расписанию. Партнёр по EDI шлёт .edi на FTP. Биллинг ночью роняет CDR-файлы на пару гигабайт. Розничная сеть присылает остатки в CSV, потому что так было в 2009-м и никто не собирается это менять. Файловый обмен не «легаси, которое скоро уйдёт», это работающий транспорт, у которого есть ровно одно свойство: он выглядит проще, чем есть.

Проще он выглядит потому, что первая ....

Читать далее

[Перевод] Проблема общего знания. Часть 1

11 hours 11 min ago

Три логика заходят в «Бар логики».

Официант: Вы все хотите пива?

Первый логик: Я не знаю.

Второй логик: Я не знаю.

Третий логик: Да.

Уморительно! … Вы поняли шутку?

Объяснять шутки, конечно, редко бывает смешно, но все же позвольте мне это сделать. Вся соль шутки заключается в эпистемической логике - логике знания. Дело в том, что официант спросил, хотят ли пива все трое. Поэтому логики отвечали не только за себя, но и исходя из того, что им было известно о желании остальных выпить пива. Поскольку первый логик ответил: «Я не знаю», он, очевидно, сам хотел пива, но не знал, хотят ли его все остальные. Если бы он сам не хотел пива, то просто ответил бы «нет», поскольку тогда он знала бы, что пива хотят не все. Но ответить «да» лишь потому, что он сам хотел пива, тоже было бы неправильно: он ничего не знал о желаниях остальных, а вопрос состоял в том, хотят ли пива все.

Аналогичным образом мы можем заключить, что второй логик тоже хочет пива, поскольку в противном случае он ответил бы «нет». Однако он не знает, хочет ли пива третий логик. Наконец, третий логик, рассуждая точно так же, как только что рассуждали мы, понимает, что первые двое хотят пива. А поскольку он, очевидно, и сам хочет пива, то отвечает: «Да», ведь теперь он знает, что пива хотят все трое.

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

Читать далее

Дебажить новости как код: чему несколько лет в ЦРБ научили меня о фактах, врачах и пяти банках энергетика

11 hours 24 min ago

Как вам на счет медицинского боевика? :-) Это редкая статья, где я Артур Валиев, пытаюсь просто делиться чем-то провокационным. И Сразу извините за переносы, я просто хотел что-бы каждая новая строчка была воспринята чуть ближе. V.

Меня зовут Артур Валиев. Я программист, и несколько лет своей жизни я проработал в районной больнице. Не врачом, не фельдшером, не человеком, который имеет право рассуждать о лечении с позиции медицинского специалиста. Я был тем человеком, который находился немного сбоку от всего происходящего: достаточно близко, чтобы видеть устройство больницы изнутри, и достаточно далеко от врачебной касты, чтобы не привыкнуть считать происходящее нормальным.

Наверное, именно поэтому после работы в ЦРБ у меня появилась странная привычка. Я практически разучился просто читать новости.

Большинство людей видит заголовок, воспринимает содержащуюся в нём историю и идёт дальше. Я почему-то начинаю раздражаться. Мне хочется открыть новость, посмотреть источник, понять последовательность событий, время, возраст человека, обстоятельства, а потом задать совершенно ненужный нормальному читателю вопрос: а точно ли всё происходило именно так?

Не потому, что я считаю журналистов идиотами. Не потому, что думаю, будто врачи постоянно врут. И уж точно не потому, что считаю себя умнее медицинских специалистов.

Скорее наоборот. Чем дольше работаешь с реальными системами — программными, медицинскими, бюрократическими, человеческими, — тем тяжелее верить в простые объяснения.

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

Читать далее

Мозг как интерфейс, человек как модель: четыре технологии на границе психологии

11 hours 25 min ago

Умные часы и психологические чат-боты уже никого не удивляют. Гораздо интереснее лабораторные технологии, которые моделируют поведение, извлекают смысл из активности мозга и воздействуют на нейронные цепи. Разбираю четыре исследования без магии и рекламных обещаний: что именно получилось, на скольких людях это проверили и где результаты заканчиваются красивыми заголовками.

Читать далее

Меня подняли на смех за ответ про VIEW. Я поднял MySQL 8.4 и PostgreSQL 17 и померил

11 hours 51 min ago

На одном собеседовании меня спросили про VIEW. Я ответил честно: в живых проектах они мне почти не попадались; для агрегатов надёжнее держать отдельную таблицу; а сами представления - вещь настолько нишевая, что за карьеру пригождались считанные разы. Разделение прав, долгие миграции, совместимость со старым ПО - вот и весь список. Ответ приняли прохладно. Один из собеседников сказал: “Ничего ты не понимаешь во VIEW” - и все посмеялись.

Прошло много времени. VIEW в моём коде так и не прибавилось, а вопрос остался, а вдруг с тех пор всё изменилось? Движки вышли новые. Поэтому я поднял MySQL 8.4 и PostgreSQL 17, залил одинаковые данные и прогнал основные сценарии один за другим.

Читать далее

Соревнование замерло 16 августа, а таблица поехала дальше. Разбираю, что из этого настоящее

12 hours 5 min ago

Я полез в данные соревнования Pokemon TCG AI Battle посмотреть, кто там выигрывает, и залип на другом. На публичной таблице 6806 команд. Самая поздняя отправка решения датирована 16 августа, 23:58:53. После этой секунды не отправил никто

1668 команд из 6806, почти четверть поля, сделали финальную отправку именно в этот день: 824 из них после шести вечера, 350 в последний час. Похоже, немалая часть узнала про срок в тот же день, когда он истекал

Читать далее

Кто расставил планеты по линейке?

12 hours 8 min ago

У астрономов свои холивары — и покруче, чем Linux версус Windows. Уже два с половиной столетия они спорят, существует ли закон, определяющий расстояния планет от Солнца. В 1766 году немецкий профессор естествознания Иоганн Тициус переводил с французского популярный в те годы двухтомник Шарля Бонне «Созерцание природы», и в главу о планетах и небесной гармонии вставил два абзаца от себя: без подписи, без пометки «примечание переводчика», словно они изначально принадлежали Бонне. В его врезке, если очистить её от витиеватых оборотов и неуместных в науке теологических реверансов, утверждается, что все известные тогда планеты, от Меркурия до Сатурна, располагаются на строго гармоничных промежутках друг от друга, и прирост к расстоянию каждой следующей планеты увеличивается ровно в два раза.

С тех пор научное сообщество разделилось на два непримиримых лагеря. Сторонники утверждают, что это закон природы. Планетные системы формируются именно так, говорят они, просто иногда что‑то идёт не по плану: вот между Марсом и Юпитером планета так и не сформировалась, а Нептун и вовсе не там, где должен быть. Противники отвечают: «Вы нумерологи, а не учёные. Для любых нескольких точек всегда можно подобрать какой‑нибудь полином. Можете объяснить физический смысл этого вашего ряда?» Как фундаментальный закон природы, формула Тициуса‑Боде не работает, это ясно. Но и геометрическая прогрессия большинства орбит никуда не делась вместе с отвергнутой формулой. Я хочу рассказать, почему расстояния всё‑таки растут не как попало. И насколько близко к краю устойчивости находимся мы прямо сейчас.

Читать далее

Почему разработчику выгодно адаптироваться не только к коду, но и к руководителю

12 hours 9 min ago

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

Разобраться с руководителем

[Перевод] OpenAI Jalapeño: Персональный чип OpenAI, который обогнал NVIDIA Blackwell

12 hours 26 min ago

OpenAI создает свой чип Jalapeño: конец монополии Nvidia на инференс?

SemiAnalysis выпустили разбор собственной аппаратной разработки OpenAI под кодовым названием Jalapeño. Пока все обсуждали закупки тысяч GPU Nvidia Blackwell, команда Сэма Альтмана совместно с Broadcom втайне проектировала специализированный ASIC на техпроцессе TSMC N3P, заточенный исключительно под инференс моделей масштаба GPT-4.5 и GPT-5.

Читать далее

RAG в медицинской аналитике: как построить управляемый контур вместо очередного чат‑бота

12 hours 47 min ago

Медицинская организация одновременно работает с электронными медицинскими картами, результатами исследований, врачебными заключениями, клиническими рекомендациями, внутренними регламентами, отчётностью и аналитическими витринами. Проблема состоит не только в объёме информации. Эти данные имеют разную структуру, обновляются с разной скоростью и доступны разным группам пользователей.

BI-система хорошо показывает показатель и его изменение, но обычно не отвечает на вопросы, какие документы связаны с отклонением, что происходило с конкретным процессом и на какие источники опирается объяснение. Большая языковая модель умеет формулировать связный ответ, но без контролируемого контекста может использовать устаревшие сведения, смешивать факты и правдоподобные предположения.

Здесь появляется RAG, или Retrieval-Augmented Generation. Но в медицинской среде я бы рассматривал его не как чат-бота и тем более не как автономного медицинского советника. Более полезная модель - управляемый слой между данными, документами, аналитическими системами и пользователями.

Читать далее

ETL + ELT = EtLT

13 hours 2 min ago

Привет!

Заметка о правильности названий ETL процессов. Расставим точки над i.

Всегда было же нормально, коротко и звучно ETL. Теперь все чаще мелькает ELT, ETLT, EtLT.

Традиционный паттерн ETL, применяет бизнес-логику во время преобразования, до загрузки в хранилище. Выбрал данные, преобразовал, положил в хранилище. ELT меняет эту последовательность, сначала загружая сырые данные в хранилище, а преобразование выполняет уже внутри. ELT подход сокращает нагрузку на систему источник, позволяет итеративно совершенствовать логику преобразования. Имеем два противоположных метода.

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

Например, в потоке выполняется экстракция из базы данных, непосредственно при выборке происходят предварительные преобразования (отсечение миллисекунд у столбца времени), далее загрузка в цель - выполнился процесс ETL. Вторым этапом идут бизнес преобразования - процесс T, а вместе ETLT.

Таким образом и получается, что в большинстве случаев используется процесс ETLT, но исторически так сложилось называть все подобные процесcы просто и звучно ETL.
В аббревиатуре первая трансформация обозначается маленькой первой буквой t, и это не случайно. На данном шаге выполняются только предварительные преобразования данных: очистка, приведение типов. А вот уже вторая - это полноценная трансформация: бизнес преобразования, обогащения, расчеты и тд. Еще я встречал проставление индексов к буквам трансформаций ET1LT2.

Так же есть такое понятие как ETL++, но об этом в другой раз :-)

Читать далее

Управляемые корутины в TypeScript: как получить контроль над асинхронностью и памятью. Разбираемся во всех аспектах

13 hours 11 min ago

Современный JavaScript / TypeScript сегодня, предоставляет мощный инструмент для асинхронного программирования, который знаком каждому - async/await на основе Promise. Он позволяет писать последовательный код и легко обрабатывать ошибки. Однако за простотой скрываются серьёзные ограничения, которые становятся критичными в высоко-нагруженных системах, играх, сложных пользовательских интерфейсах и приложениях, требующих предсказуемой производительности.

Представьте себе сервер, обрабатывающий тысячи запросов одновременно. Все они конкурируют за процессорное время. Как гарантировать, что запрос от клиента выполнится раньше, чем фоновая синхронизация? Как отменить долгую операцию, если клиент разорвал соединение? Как избежать пауз сборщика мусора при создании миллионов временных объектов? Нативный async/await не даёт ответов на эти вопросы - он лишь оборачивает асинхронные операции в удобный синтаксис.

В этой статье мы разберём, как кооперативные корутины (Coroutines) решают эти задачи на примере моей библиотеки ts-adaptive-coroutines, изучив каждый аспект по кирпичикам, посмотрев на инструмент, который добавляет в TypeScript адаптивные приоритеты, арены памяти, каналы, семафоры и много-поточность.

Читать далее

Написал OSINT инструмент для проверки сайтов и оценки фишингового риска PhishIntel

13 hours 33 min ago

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

Но недавно наткнулся на новость о том, как мошенники использовали старую как мир схему «Мамонт» и вымышленный бренд «Топливо24», предлагая бензин, газ, и дизельное топливо на 20–30% дешевле рынка через фишинговые сайты. И самое печальное, что за неделю жулики заработали не менее 3.7 млн. рублей. А ведь у всех таких сайтов есть определенные метрики, технические характеристики, по которым можно выявить риски, и более того, собрать полезную информацию для дальнейшего расследования.

На этом моменте я вспомнил про свои наработки для тестирования веб-приложений и решил доработать до инструмента анализа доменов, и оценки фишингового риска.

Получилось легковесное приложение на Python, не требующее в стандартной комплектации ничего, кроме стандартных библиотек. И чтобы получить первый отчет достаточно скачать репозиторий с GitHub, перейти в директорию, и запустить scan.py:

Читать далее

[Перевод] Внутри 20-ваттного усилителя на лампе бегущей волны из программы «Аполлон»

Tue, 08/25/2026 - 23:25

Как астронавты «Аполлона» поддерживали связь с Землёй, находясь на пути к Луне в 240 000 милях от неё? Для этого использовался усилитель весом 32 фунта, построенный на электронной лампе особого типа – лампе бегущей волны (ЛБВ). В этой статье я загляну внутрь такого усилителя и расскажу, как работает ЛБВ.

Заглянуть внутрь

Не сойти с айти

Tue, 08/25/2026 - 23:00

«Как думаете, вы проработаете в айти до пенсии? Если ещё не работаете, сможете ли найти работу в айти и проработать в этой сфере до пенсии?»

Опрос с таким текстом я опубликовал в своём телеграм-канале. Из 3713 проголосовавших (спасибо дружеским каналам за репосты и охваты) только 21% выбрали вариант ответа «Скорее да». 66% — не уверены. 13% — не в счёт, так как не из айти и переходить в эту сферу не планируют.

Как вышло, что многие айтишники сейчас сомневаются в том, что продолжат работать в айти? Как выделиться на общем фоне, когда вакансий сильно меньше, чем соискателей, рынок зрелый, а исполнители взаимозаменяемы (а также заменяемы ИИ)? Как сохранить себя, если ИИ всё-таки отжал у вас работу в айти?

Читать далее

17 000 документов, 2000 сотрудников и 450 машин: как мы автоматизировали пропускной режим на Ямале

Tue, 08/25/2026 - 22:59

Есть бизнес-процессы, которые на схеме выглядят элементарно. Например, оформление пропуска.

Есть сотрудник. Есть автомобиль. Есть объект заказчика. Нужно проверить документы и оформить допуск.

Что здесь вообще автоматизировать?

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

Читать далее

[Перевод] Год баз данных: как я снова полюбил программировать

Tue, 08/25/2026 - 22:39

ВНИМАНИЕ! LLM не вовлечен, опечатки и прочие ошибки сохранены.

Предыстория

С самого начала как я попал в enterprise я знал — карьера идет не туда. Кнопки, круды, общаться людьми. Все не то, общаться с машиной интереснее. Но все не было времени к этому подойти. Непонимание как выглядит индустрия, недостаток опыта, неуверенность в себе, переезды.

Когда жизнь улеглась у меня появилось свободное время и скука. Так я начал программировать в свободное время. Очень много, иногда больше чем в рабочее время.

Началось летом 2022.

Читать далее

Who's online

There are currently 1 user and 13 guests online.