Обновить
1723.19

Программирование *

Искусство создания компьютерных программ

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

Как и зачем мы следим за качеством руды от забоя до сепаратора

Время на прочтение7 мин
Охват и читатели8.2K

Как мы добываем железо из руды? Бурим горную породу и руду в карьере, закладываем взрывчатку и взрываем, чтобы экскаватор мог зачерпнуть породу. Огромные куски до 1,2 метра вывозим на БелАЗах на перегрузочные пункты, затем перегружаем в железнодорожные думпкары, потом дробим до состояния пыли, отсеиваем вскрышу и извлекаем железо. 

Работа у нас масштабная: экскаваторы высотой с четырёхэтажный дом, 240-тонные БелАЗы и много взрывов. При этом мы имеем одно из самых низких в отрасли содержаний (в процентном соотношении) железа в руде. Поэтому просто бурить, взрывать и возить недостаточно. Эффективность начинается с качества руды, которое мы отслеживаем буквально в каждом ковше экскаватора.

Меня зовут Вячеслав Загирный, я руководитель проектов в ЕВРАЗе. Мы стали первыми в России, кто создал IT-систему, позволяющую прослеживать качественные показатели руды от блочной геологической модели до дробильно-обогатительной фабрики. Проект называется «Геометаллургия». В этой статье расскажу, как всё устроено.

Читать далее

SearXNG + Claude Code: бесплатный веб-поиск вместо $10 за 1000 запросов

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели12K

Встроенный WebSearch в Claude Code стоит $0.01 за запрос и регулярно падает с «Rate limit reached» — даже на подписке за $200/мес. Я поднял локальный SearXNG, подключил через MCP — и теперь поиск бесплатный, без лимитов, а запросы не уходят на серверы Anthropic. Установка — 10 минут, три файла конфигурации.

Показать решение

Когнитивный инжиниринг: почему ваш код — это слепок вашей психики (Каскад 1)

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели7.5K

Мы привыкли думать, что архитектура программ рождается из требований бизнеса, бюджетов и технологий. Но в самом начале любого проекта лежит архитектура мышления — разработчика, заказчика, пользователя. Эта статья и ряд других в серии «каскад» — попытка рассмотреть проектирование как отражение когнитивных механизмов человека. Не UX, не поведение пользователей, а именно то, как фазы нашего мышления формируют будущую систему. И главное — как, поняв это, создавать более устойчивые и человечные архитектуры.

Читать далее

Codex с телефона, пока ты не за компьютером (даже с контролем git изменений)

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели10K

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

Codex Remote даёт браузерный интерфейс к Codex CLI на вашей машине. Открываешь с телефона, управляешь сессией, видишь изменения файлов до того, как они применились. Машина работает у тебя дома или на работе, ты где угодно.

Есть также возможность просматривать незакомиченные изменения в git'е в самом диалоге с моделью.

Читать далее

Ловушки времени

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели8.1K

У программистов много проблем со временем. Сегодня речь пойдет не о time managment'е, управлении планированием и вечно горящих сроках, а о подводных камнях работы со временем при разработке ПО.

Читать далее

15 млн. и 10 мес. экономии с помощью Вайбкодинга. Как я создал свой продукт с нуля до релиза. Полный гайд

Уровень сложностиСредний
Время на прочтение61 мин
Охват и читатели33K

Как мне удалось создать свой полноценный продукт с функционалом и системой лицензирования с нуля без навыков программирования используя и IDE Cursor. Полный разбор в статье по шагам с инсайтами.

Читать далее

Telegram Bot API 9.5: Пользовательские теги и форматирование времени

Время на прочтение3 мин
Охват и читатели8.6K

Всем привет!

Сегодня Telegram выпустил небольшое, но как всегда интересное обновление своего Bot API под номером 9.5. Оно оказалось компактным, но в нём есть один интересный момент с надеждой на будущие обновления...

Кстати, одно из нововведений было известно ещё два дня назад в моём ТГ. Подписывайтесь на канал «Код на салфетке», если интересны подобные новости и разборы!

Читать далее

Когда использовать параллельный стрим в Java

Уровень сложностиПростой
Время на прочтение9 мин
Охват и читатели9.3K

Параллельные стримы в Java 8 выглядят как бесплатное ускорение: добавил .parallel() — и все ядра побежали работать. Но по факту всё сложнее, так как распараллеливание имеет накладные расходы, зависит от того, насколько хорошо делится источник данных, сколько стоит объединение результатов, и даже от локальности данных в памяти.

В новом переводе от команды Spring АйО на примерах и бенчмарках разберем, почему простая свёртка на маленьких диапазонах может стать медленнее, почему ArrayList часто выигрывает у LinkedList в параллели, как reduce может неожиданно сломаться из-за неверного identity, и что вообще происходит внутри common ForkJoinPool.

Читать далее

Интересный хак для упрощения сложных SELECT в Postgres

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели15K

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

вот пример:

SELECT
price * quantity AS total_price,
(price * quantity) * 0.15 AS tax,
((price * quantity) + ((price * quantity) * 0.15)) AS grand_total
...

Здесь price * quantity вычисляется несколько раз, и tax вычисляется дважды. Но это выглядит еще ок, в реальности это зачастую всякие монструозные свитч-кейсы с NULLIF, COALESCE и прочими ребятами.

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

Long story short, это делается так:

Читать далее

Почему функции rand и lrand48 из glibc годятся только для Тетриса: о случайных числах всерьёз

Уровень сложностиСредний
Время на прочтение29 мин
Охват и читатели9.9K

Функцию rand из стандартной библиотеки языка Си для генерации псевдослучайных чисел, наверное, не ругал только ленивый. В довольно известном докладе Rand considered harmful рассказывалось о проблемах с переносимостью, ограниченным диапазоном, многопоточностью, качеством и т.п. Иногда в учебниках упоминают о том, что алгоритм в rand может быть не очень качественным, иметь проблемы с младшими битами, периодом, прохождением статистических тестов. Но крайне редко можно увидеть разбор конкретных критериев, выявляющих дефекты генераторов. В этой статье я постараюсь наглядно показать не просто отдельные недостатки rand, lrand48 и random из glibc, но их полную непригодность для каких-либо вычислений в принципе. Также вы увидите превосходство поточных шифров над minstd, линейным конгруэнтным генератором из 1980-х, не только в качестве, но и в производительности.

Читать далее

Как заставить старенькую Kindle показывать время прибытия автобусов

Уровень сложностиСредний
Время на прочтение7 мин
Охват и читатели14K

Это история о том, как я превратила свою бывалую Kindle Touch в инструмент мониторинга времени прибытия автобусов с ежеминутным обновлением экрана и возможностью выйти из режима дашборда через кнопку меню. По сути, у меня получился TRMNL, только без ценника в $140.

Читать далее

Pandas на Python: От чтения CSV до сложной аналитики за 1 статью

Уровень сложностиПростой
Время на прочтение17 мин
Охват и читатели16K

Сколько раз вы пытались открыть в Excel файл на пару миллионов строк и смотрели на зависший белый экран под звук взлетающего кулера? А сколько раз писали трехэтажные циклы for в чистом Python, чтобы просто сгруппировать данные и посчитать среднее?
Pandas — это Excel на максималках и швейцарский нож любого разработчика и аналитика. В этой статье я собрал абсолютную выжимку: 10 главных шагов для работы с таблицами. Разберем вечную путаницу между loc и iloc, правильную очистку от пропусков, группировки и джойны (merge).

Читать далее

Webhook в Telegram и Discord: как подключить и чем лучше polling

Время на прочтение7 мин
Охват и читатели7.7K

Привет, Хабр!

Если вас заинтересовал заголовок, то вы, скорее всего, уже знакомы с разработкой Telegram или Discord-ботов. И что также вероятно: для получения обновлений вы используете обычный polling. Сегодня же я вам предлагаю ознакомиться с другим способом получения обновлений - через webhook.

Читать далее

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

Элитный вайбкодинг: вид с другой стороны

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели13K

Я работаю продуктовым дизайнером последние 7 лет. За последний месяц я в одиночку запустил 9 цифровых продуктов — без разработчиков, тестировщиков и девопсов. И самое странное: лучший результат я получил, когда перестал делать то, в чём разбираюсь.

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

Читать далее

Дыра в безопасности, которая обошлась Google в $1 млн. Что скрывает релиз Linux 7.0?

Время на прочтение10 мин
Охват и читатели7.5K

Семь миллиардов устройств. Тридцать пять лет истории. Linux 7.0 — это первое крупное обновление мажорной версии с 2022 года, и на этот раз цифра действительно имеет вес.

Ядро Linux — это та самая невидимая прослойка между вашим железом и всем, что вы делаете за компьютером. Именно оно решает, как ваш телефон общается с экраном и как Netflix стримит сериалы на ваш телевизор.

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

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

Ядро прошло путь от 2.6 до 3.0, от 4.20 до 5.0, от 5.19 до 6.0. И вот теперь 6.19 превращается в 7.0. Никаких технических революций, привязанных к дате. Никаких сломанных API. Просто красивая цифра.

Но иногда новые крутые фичи идеально совпадают с символизмом момента. Только за первую половину окна слияния (merge window) в Linux 7.0 влилось 7 695 коммитов. Пятилетний эксперимент официально подошел к концу, в ядро завезли постквантовую криптографию и впервые прописали официальные правила для кода, сгенерированного нейросетями.

Я профессионально работаю с Linux уже больше 20 лет: в телекоме, цифровой медицине и deep-tech проектах. Я видел, как выходят и уходят разные версии ядра.

Какие-то из них важны. Какие-то — проходные. Но эта — действительно имеет значение.

Читать далее

Кастомная галерея на iOS: от лага на 60 000 фото до lazy-загрузки и Combine

Уровень сложностиСредний
Время на прочтение18 мин
Охват и читатели8.5K

Если вы когда-нибудь разрабатывали мессенджер, то наверняка сталкивались с задачей выбора фотографий и видео для отправки. На первый взгляд кажется, что Apple предоставляет всё необходимое: UIImagePickerController, PHPickerViewController. Но стоит только копнуть чуть глубже, и оказывается, что стандартные компоненты не покрывают и половины того, что нужно в реальном продукте.

Читать далее

Пишем игру для Commodore-64 в 2020-е: ретроспектива

Время на прочтение11 мин
Охват и читатели12K

В начале 2021 года я взялся написать игру для компьютера, которому тогда было уже 40 лет — речь о его благородии Commodore 64. Релиз игры Cab Hustle наконец состоялся осенью 2022 года, после того, как я в течение нескольких месяцев эпизодически добивался по ней некоторого прогресса. В начале 2023 года я также выпустил версию этой игры для ПК.

Читать далее

Инженер будущего не пишет код. Он строит обвязку для агентов

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели12K

OpenAI 5 месяцев строили продукт без единой строчки ручного кода — миллион строк, 1500 PR, 7 инженеров. Разбираю их подход «harness engineering» и что из этого можно применить уже сейчас: как организовать AGENTS.md, почему скучные технологии побеждают, и зачем нужна архитектура с первого дня.

Читать далее

Автоматизированный анализ графита по ISO 945: архитектура и инженерная реализация модуля

Время на прочтение6 мин
Охват и читатели7.2K

Всем привет! Я пытаюсь реализовать свою систему анализа металлов и сплавов. Занимаюсь своим проектом уже год. В составе системы уже около 15 модулей. И хочу представить один из них. Если кому-то интересно или есть изображения, которые нужно измерить, верифицировать с другими системами я только - за.

Немного теории из мира металловедения, который чем-то схож с миром биологии. Главное различие мира металлов, пластиков и других материалов, что это неживая материя.

Определение чугуна

Чугун представляет собой сплав железа с углеродом, где содержание углерода превышает 2,14% (обычно от 2,5% до 4,5%). Благодаря своей жидкотекучести, малой усадке и относительно низкой стоимости, чугун является одним из основных конструкционных материалов в машиностроении, энергетике и строительстве.

При анализе чугуны разделяют по состоянию углерода и форме графитовых включений, что определяет их физико-механические свойства:

Читать далее

ТОП-10+1 «Золотых правил» оптимизаций Java 21+: как заставить JIT петь, а GraalVM — летать

Уровень сложностиСложный
Время на прочтение17 мин
Охват и читатели8.3K

Почему ваша Java-система буксует там, где должна летать? Мы привыкли доверять магии JVM, но в мире Java 21 и Native Image правила игры изменились. От микро-оптимизаций байт-кода до радикальной смены парадигмы с Scoped Values – разбираем 11 “золотых правил”, которые заставят JIT петь, а ваш бинарник – стартовать за миллисекунды. Никакой “воды”, только хардкор, регистры процессора и “голоса” компиляторов внутри вашего кода.

Работая с кодом, я не раз ловил азарт: а как этот метод можно ускорить ещё? Какую гайку подкрутить, чтобы JVM не просто работала, а буквально летела? Что изменить в архитектуре, чтобы Native Image стал ещё компактнее, а холодный старт – ещё быстрее?

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

Это не просто советы по стилю кода. Это “10+1 Золотых правил оптимизации Java 21+”.

Это те рычаги, которые заставляют JIT-компилятор петь, а GraalVM – генерировать бинарники с хирургической точностью.

Приготовьтесь! Мы начинаем оптимизировать!

Начать оптимизацию!