Как стать автором
Поиск
Написать публикацию
Обновить
1174.75

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

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

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

Решил перейти на Python и не пожалел

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

С полгода назад я начал чаще использовать для программирования Python. Почему? Конечно, из-за ИИ. Лично для меня очевидно, что сегодня эта сфера связана с очень большими деньгами перспективами во всех направлениях. А какой язык является самым распространённым для ИИ? Да-да, как-раз этот проныра.

Я уже писал на Python, но только небольшие скрипты. К примеру, вот этот скрейпит метаданные всех видео с моего канала на YouTube. Собранные метаданные выводятся в виде файла JSON, который я использую для показа красивой статистики роликов на этой статичной странице. Как можно видеть здесь, этот скромный скрипт через GitHub Actions выполняется в соло-режиме каждый понедельник. Просто реализовать всё это на Python куда проще, чем с помощью того же Batch. И не только из-за более дружественного синтаксиса, но и потому, что его интерпретатор нативно интегрирован во все дистрибутивы Unix. Разве не круто?

Читать далее

Новости

Практические вопросы архитектуры ПО, из чего строить будем?

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров901

Вы знаете из чего и как строятся программы? Странно что ни в одной из статей о программной архитектуре вы не найдете упоминаний о том из чего эти программы строятся.

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

Читать далее

Сердце Фреймворка: Философия и Практика Dependency Injection в Angular

Уровень сложностиСложный
Время на прочтение18 мин
Количество просмотров760

Dependency Injection (DI) один из столпов, на которых держится фреймворк Angular. Каждый разработчик, так или иначе, сталкивается с ним с первого дня: запрашивает сервисы в конструкторе, добавляет providedIn: 'root' и видит, как «магия» работает. Но именно в этом и кроется ловушка.

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

Эта статья не очередной пересказ официальной документации. Это глубокое погружение в архитектуру и философию Dependency Injection в Angular. Наша цель демистифицировать «магию» и превратить ее в предсказуемый, управляемый и мощный инженерный инструмент в вашем арсенале.

Мы пройдем путь от фундаментальных принципов инверсии контроля (IoC) до тонкостей иерархического инжектора. Мы разберем на атомы все стратегии предоставления зависимостей, научимся управлять их жизненным циклом и областью видимости. Мы изучим продвинутые паттерны с использованием InjectionToken и multi-провайдеров и поймем, как современная функция inject() меняет подход к композиции логики.

Перейти к полному анализу

«Мой код не работает!» или как я превратила баг в фичу (почти случайно)

Время на прочтение2 мин
Количество просмотров1.6K

Всем привет.

Я — разработчица, которая пришла в IT не из классического CS-бэкграунда, а из гуманитарной сферы. Python покорил меня своей читаемостью, и вот уже третий год я работаю в продакшене, где сталкиваюсь с самым сложным противником — багами. Особенно теми, которые я сама случайно создаю.

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

Читать далее

Архитектура мозга программиста: почему мы думаем в коде, а не в словах

Уровень сложностиСложный
Время на прочтение4 мин
Количество просмотров8.9K

Почему многие разработчики не мыслят словами, а сразу «видят» архитектуру, блок-схемы, паттерны и фрагменты кода? Что особенного в мозге программиста и как он превращает абстрактные задачи в работающие системы? В этой статье я разбираюсь в когнитивной архитектуре программистского мышления: от памяти и нейронных связей до привычки «думать в коде», приводя примеры, личные наблюдения и немного кода на Python, C++ и Haskell.

Читать далее

Вкат сразу на мидла: без опыта

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

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

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

Так на рынке появился новый жанр — вкат в IT как услуга. Эти люди называют себя менторами, но по факту они учат не писать код, не работать в команде и даже не решать задачи. Они учат врать уверенно.

Читать далее

Сегментация клиентов методом K-Means на стороне БД

Время на прочтение4 мин
Количество просмотров928

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

Сегодня мы рассмотрим, как заставить PostgreSQL самостоятельно крутить K-Means для сегментации клиентов, не вытаскивая данные наружу. Пройдемся по циклу: нормализуем фичи в materialized view, напишем функцию PL/PythonU, которая дергает scikit-learn, сохраняем cluster_id обратно в таблицу и закрываем гештальт отчётом «доход по кластеру» чистым SQL.

Читать далее

Rich Errors в Kotlin 2.4: шаг вперёд или шаг в сторону?

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

Команда Spring АйО не могла остаться в стороне и не прокомментировать одну из самых обсуждаемых новинок Kotlin, анонсированную на KotlinConf 2025 — Rich Errors.

Читать далее

Как ИТ-инструменты помогают финансисту расти в 3 раза быстрее — уровень hard

Время на прочтение10 мин
Количество просмотров1.5K

Это вторая часть материала о финансовом стеке — теперь на уровне hard. В этой статье — не про SUM и диаграммы. Здесь речь пойдёт об ИТ-инструментах, которые помогают финансистам выйти за пределы ручной рутины, автоматизировать ключевые процессы и действительно влиять на бизнес.

Если вы уже уверенно работаете в Excel, пишете SQL-запросы и собираете отчёты — пора двигаться дальше. Power Query, витрины в SQL, архитектура BI, Python, API — всё, что позволит вам:

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

Разберём, какие навыки нужны на продвинутом уровне, какие задачи они решают, как учиться эффективно — и как собрать из всего этого живую, работающую систему, встроенную в ваш рабочий процесс.

Окунуться в мир автоматизации аналитики

Векторный кэш: делаем умные ответы еще быстрее

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

Сегодня чат‑боты и интеллектуальные ассистенты широко применяются в различных сферах: поддержка клиентов, корпоративные системы, поисковые сервисы и во многих других. Для их разработки часто используют архитектуру Retrieval‑Augmented Generation (RAG), которая объединяет генерацию ответа с поиском данных во внешних источниках. Такой подход помогает ботам и ассистентам давать более точные и актуальные ответы. Но на практике оказывается, что RAG сталкивается с проблемой повторяющихся запросов, из‑за которой система многократно выполняет одни и те же вычисления, повышая нагрузку и время отклика.

Всем привет! Меня зовут Вадим, я Data Scientist в компании Raft, и в этой статье мы разберемся, что такое векторный кэш и как его использовать. Давайте начнем!

Читать далее

Как внедрить TBD?

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

Привет! На связи разработчик Максим и инженер по качеству Евгения из Т-Банка. Как-то мы задумались о переходе на TBD, чтобы избежать develop-ветки со всеми вытекающими. 

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

В этой статье мы поделимся опытом перехода на TBD: планом внедрения и вопросами, с которыми мы столкнулись.

Cтатья пригодится инженерам уровня middle и ниже и тимлидам. Для senior-инженеров статья не будет откровением, но надеемся, что станет местом для обсуждения нюансов внедрения или возможностью посмотреть на процесс с точки зрения QA. 

Погнали!

Читать далее

Почтовая корова? Как поднять свой почтовый сервер Mailcow

Уровень сложностиПростой
Время на прочтение8 мин
Количество просмотров4.5K

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

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

Читать далее

Method Handles быстрее рефлексии (иногда)

Уровень сложностиСложный
Время на прочтение11 мин
Количество просмотров2.2K

Как Java поддерживает динамические вызовы? От медленной рефлексии до оптимизированных MethodHandle и invokedynamic — изучаем эволюцию динамизма в JVM. Разбираем внутреннее устройство MethodHandle и какие роли играют CallSite и invokedynamic.

Читать далее

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

Вайбовый панк

Уровень сложностиПростой
Время на прочтение1 мин
Количество просмотров7.8K

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

Я теперь на таски скор — у меня же есть Курсор.
Я на ём вайб код лабаю всем олдам наперекор.
Любой челендж для меня нынче полная фигня.
А-а-а!!! Вайбовый кодер я!

Читать далее

Structured Concurrency в Java: наконец-то находит опору

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

API structured concurrency в Java наконец-то обрёл устойчивость. В новом переводе от команды Spring АйО подробно рассматриваются последние изменения, появившиеся с выходом JEP 505: фабричный метод open(), политики Joiner'ов, улучшенная отмена задач, дедлайны, передача контекста через ScopedValues и строгая защита от ошибок использования. Всё это делает параллельное программирование в Java более безопасным, читаемым и управляемым.

Читать далее

Никто пока не знает, как работать с ИИ

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

Будущее разработки ПО, возможно, станет похожим на джаз. Каждый импровизирует, никто не смотрит на ноты.

На прошлой неделе я выпустил Protocollie. Сделал его за 4 дня, используя языки, которых не знаю, и даже не касаясь кода напрямую. Люди без конца спрашивают: «Как это удалось?» Но я даже не уверен, что получится повторить то же самое второй раз.

Мы все придумываем этот процесс на ходу.

Читать далее

Когда фидбэк может уничтожить продукт

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров714

Как попытки быть ближе к пользователю иногда отдаляют от цели

В одномстартапе мы решили сделать по уму — активно собирать и учитывать обратную связь.
Видим комментарий: «Сделайте поиск попроще» — переделываем.
Пишут: «Темная тема нужна обязательно!» — добавл яем.
...

Читать далее

Кто лучший DevOps: админ, который освоил разработку, или разработчик, который освоил инфраструктуры

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

Изначально DevOps — специалист на стыке двух миров: разработки (DEVelopment) и эксплуатации (OPerations). Его задача — развертывать приложения и обеспечивать их бесперебойную работу, что включает в себя также заботу об инфраструктуре.

Я наблюдаю за развитием DevOps уже 13 лет. IT активно растет, девопсов требуется все больше. Так что сюда потянулись коллеги из смежных областей. Но в чистом виде ни одна из других специальностей не содержит полный набор требуемых навыков.

Сегодня размышляю, что так и что не так с разработчиками и сисадминами, которые устремились в DevOps (ну помимо идеи, что каждый должен заниматься своим делом).

Читать далее

Git: Больше чем commit и push. 5 команд, которые спасут вашу репутацию (и нервные клетки)

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

git commit -m "WIP" — три слова, после которых начинается настоящий ад.

Доброго времени суток. Такая технология как Git в представлении не нуждается. Все знают add, commit, push — это как азбука. Но что делать, когда что‑то пошло не так? Ошибочный коммит прокатился по ветке? Надо срочно переключиться, но незавершенные правки мешают? Нужно перенести только одно исправление из другой ветки?

Знакомая ситауция? Тогда давайте разберем 5 команд, которые выходят за рамки базового workflow и реально спасают репутацию (и ваши нервные клетки).

Спасти нервные клетки

Обнови JDK — живи спокойно. И Libercat тоже

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров855

Если вы держите свои продакшн-инстансы на Axiom JDK и Libercat, ловите апдейт: вышли свежие релизы безопасности Java-стека. Делимся, что внутри и почему это важно.

Читать далее

Вклад авторов