Обновить

Разработка

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

Когда тебя спрашивают про Питон, а ты только “Летающий цирк“ смотрел.

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

Сказал что понимает, что я пишу на 1С, но может ли он ко мне обращаться с вопросами. Хороший повод посмотреть что это за язык. Нужно какое-то ТЗ.

Пусть в SQL есть таблица «Prices» с двумя колонками. «Product», «Price». Требуется посчитать и вывести среднюю стоимость.

Средняя стоимость = Сумма/количество различных позиций.

Задача стоит. На чём её решать?

Есть компьютер с Windows 11.

В качестве движка БД думаю поставить SQLite. Так же нужно установить Python.

IDE наверное будет перебором, поэтому поставлю Sublime Text с каким-нибудь плагином. Так-с. Что я знаю о Python. Он полный по Тьюрингу. Блоки определяются отступами. Есть объекты…. Вроде всё.

Приступим. Что нам понадобится:

1. Установленная SQLite.

2. Созданная БД с нужными данными.

3. Объект «Подключение» в Python.

Так-с SQLite. На https://www.sqlite.org/download.html есть собранный для Windows. В принципе логично, но всё равно приятно… Ага, вот и первый нюанс. Есть DLL и есть tools.

Похоже придётся чутка почитать... Пишут ставить Tools “sqlite-tools-win-x64” (Если кто-не слушал, то настойчиво рекомендую послушать Tool – Vicarious).

Скачиваем — распаковываем, видим 4 exe файла.

Нам нужно:

1. Создать БД.

2. Создать таблицу.

3. Заполнить таблицу.

4. Написать запрос для получения данных таблицы.

4. Написать запрос для получения среднего.

Открываем документацию к SQLite. Приступим.

1. Создаём БД: C:\sqlite> .\sqlite3.exe average.sqlite;

2. Создаём таблицу с колонками нужных типов: create table prices(product text, price int);

3. Проверяем что таблица создалась: sqlite> .tables;

4. Заполняем строки:

insert into prices values('Bike',1);
insert into prices values('Car',2);
insert into prices values('Boat',3);

5. Проверяем заполнение: select * from prices;

6. Пишем запрос средней цены: SELECT AVG(price) AS average_price FROM prices;

Получили 2.

Отлично! С этим разобрались.

Теперь нужно:

1. Установить python.

2. Разобраться объект какого класса следует использовать для подключения к SQLite.

3. Получить результат запроса.

4. Вывести результат запроса.

Смотрим.

1. Скачиваем learn_python.winget.

2. winget configure -f C:\Users\Имя пользователя\Downloads\learn_python.winget.

3. Пишем код в текстовом редакторе:

#https://docs.python.org/3/library/sqlite3.html

import sqlite3

conn = sqlite3.connect('C:\\sqlite\\average.sqlite')

cursor = conn.cursor()

cursor.execute('SELECT AVG(price) AS average_price FROM prices;')

result = cursor.fetchone()

if result and result[0] is not None:

print(f"Average Price is {result[0]:.2f}")

else:

print("No prices found.")

conn.close()

4. Сохраняем как print_average_price.py.

5. Запускаем: python3.13.exe .\print_average_price.py.

«Average Price is 2.00».

Отлично! Задача выполнена.

Теги:
Всего голосов 8: ↑0 и ↓8-8
Комментарии8

Мне надоели платные приложения для учета расходов, поэтому я сделал свое: бесплатное и с открытым исходным кодом.

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

Я перепробовал десятки решений, но в каждом находил какие-то ограничения. Где-то были платные подписки или ограниченный функционал, где-то требовалась регистрация и данные о моих расходах улетали на сервера (зачем?), а где-то приложение просто не подходило мне по функционалу. В итоге я решил уйти от готовых приложений к учету в таблицах Excel. Но такой подход тоже был неудобным, и я понял, что пора создать свое собственное приложение: приватное, бесплатное и, самое главное, открытое.

В общем, так появилось Profitocracy - бесплатное Open Source мобильное приложение, написанное на .NET MAUI. Его главная цель — помочь пользователям организовать учет личных расходов по популярному правилу 50-30-20, а также обеспечить конфиденциальность данных. Profitocracy хранит всю информацию локально на вашем устройстве. Приложение не передает никакие данные третьим лицам и полностью свободно от рекламы и монетизации.

Среди основных особенностей приложения я хотел бы выделить:

  • Автоматическое планирование бюджета. Вы указываете дату окончания периода (получение зарплаты, например), и приложение расчитает для вас ежедневные расходы, расходы по типам (по правилу 50-30-20), а также по категориям (которые вы можете создать сами).

  • Индивидуальная настройка. Вы можете создавать собственные профили расходов: для личных нужд, на время отпуска или поездку в командировку. Причем столько сколько вам потребуется.

  • Приватность. Все данные - на вашем устройстве и только. Также, имеется возможность создания бэкапов (выгрузка данных в файл) для переноса данных на другое устройство.

  • Открытый исходный код. Исходный код проекта выложен на GitHub (ссылка на репозиторий). Каждый может внести свой вклад, предложить новый функционал или изучить как работает приложение.

  • Кроссплатформенность. Приложение доступно как для Android, так и для iOS.

  • Перевод на несколько языков. Profitocracy поддерживает русский, английский и другие языки.

На момент написания поста проект завоевал небольшой, но значимый отклик в сообществе разработчиков:

  • 100+ звезд на GitHub;

  • 20+ форков;

  • 3 активных контрибьютора. Причем, это не мои друзья :)

Ссылки на скачивание:

Буду рад вашим отзывам, предложениям и комментариям как на GitHub, так и здесь. Надеюсь, Profitocracy поможет вам так же, как оно помогло мне!

Теги:
Всего голосов 9: ↑9 и ↓0+14
Комментарии2

Лучшие анимации на Scratch: программирование для детей

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

Мы собрали для вас лучшие анимации на Scratch, которые помогут в программировании для детей.

Научиться создавать игры в Scratch можно на нашем курсе: https://pixel.study/scratch

Видео ниже:

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

Стартовала работа над новым бумажным спецвыпуском журнала «Хакер». На этот раз в коллекционный сборник войдут лучшие статьи, опубликованные в 2025 году: от разбора сетевых протоколов до хакерских применений LLM.

После выпуска трёх бумажных сборников с архивными статьями за 2015–2021 годы в «Хакере» решили попробовать новый формат: журнал, в котором будут собраны лучшие статьи за год. В новый номер войдут более 20 топовых текстов, публиковавшихся на страницах «Хакера» в 2025 году. Каждая статья по традиции будет сопровождаться уникальными комментариями от авторов и редакторов, которые позволят заглянуть за кулисы работы журнала. 240 страниц на плотной бумаге — вдвое толще старых номеров «Хакера» образца 2015 года.

Лучшие статьи за год, подшивка всего самого интересного:

  • Автоматизация хакерских тасков при помощи LLM;

  • Полный гайд по разведке перед пентестом;

  • Разбор популярных сетевых протоколов с примерами;

  • Туториал по опенсорсному отладчику radare2;

  • Новые способы обфускации малвари в Windows;

  • Хакерские трюки и софт для Android;

  • И многое другое.

Теги:
Всего голосов 3: ↑3 и ↓0+3
Комментарии0

Интеграция PVS-Studio с Hexway

Компания PVS-Studio и платформа Hexway заключили технологическое партнёрство для обеспечения интеграции статического анализатора кода PVS-Studio в экосистему DevSecOps.

Hexway VamPy — это решение, агрегирующее данные о безопасности из разных источников для работы с уязвимостями.

В Hexway стало возможным загрузить результаты анализа PVS-Studio в виде отчёта и работать с конкретными ошибками так же, как это позволяют другие инструменты. Загрузка возможна двумя способами: через пользовательский интерфейс или командную строку с использованием CLI-инструментов.

Подробнее о том, как загрузить результаты анализа PVS-Studio в Hexway VamPy можно прочитать в соответствующем разделе нашей документации.

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

Лето в самом разгаре, а мы не сбавляем темп! Рассказываем про самое интересное, что было в июле. Свежий #дайжест Luxms.

Главная новость лета — наша конференция в сентябре!

Приглашаем, будет полезно и интересно! 

Не просто конференция. Настоящая премьера.

Luxms BI признана самой безопасной BI-платформой по версии «BI-круга Громова 2025». Это не случайность, ведь безопасность — одна из тех фич, которыми мы гордимся.

Подтвердили совместимость с российской СУБД Postgres Pro — больше возможностей для импортонезависимой аналитики и работы в безопасном контуре.  

Провели экспертный совет, на котором рассказали о модуле Luckysheet — Excel прямо внутри BI-системы.

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

Рассказали о кейсе, реализованном для НИИОЗММ ДЗМ — Нацпроекты и научная деятельность здравоохранения Москвы. Когда действительно важна каждая цифра.  

Департамент информационных технологий г. Москвы завершил перевод компонента централизованной аналитической системы MOS BI, построенного на платформе Luxms BI, на российскую операционную систему Мос.ОС. 

Приняли участие в конференции «НОРБИТ 360», где рассказали почему озёра данных могут превратиться в «болото» и как этого не допустить. Смотрим тут.  

Вышел новый выпуск подкаста «Метафизика IT» - Про мышь, где Александр Тютюнник, Директор по развитию бизнеса, размышляет о том, эволюционирует ли IT или деградирует, почему self-service становится новой религией, как меняется сложность входа в профессию, и почему ИИ и масштабы бизнеса не позволят всем двигаться в одном темпе.

Все новости в нашем телеграм-канале.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

Вам не нужен Activity Bar в vscode!

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

Раз. Убираем Activity Bar. В нем есть три типа иконок: нужные нам часто, нужные иногда, совсем ненужные. Логика такая: для нужных мы создаем горячие клавиши (или пользуемся существующими). Для средне-нужных используем cmd+p и выбор команды. Ненужными – не пользуемся :)

Кастомные настройки для горячих клавиш для управления разными View (плюс к стандратным):

[
    {
        "key": "shift+cmd+g",
        "command": "workbench.view.scm",
        "when": "workbench.scm.active"
    },
    {
        "key": "ctrl+shift+g",
        "command": "-workbench.view.scm",
        "when": "workbench.scm.active"
    },
    {
        "key": "shift+cmd+o",
        "command": "outline.focus"
    }
]

Два. Убираем Side Bar. Большую часть времени он не нужен. В основном нам просто нужно читать и реже писать код. Зачем нам Side Bar? Убирается основной по cmd+b, а второй по cmd+alt+b.

Но если оставить Side Bar справа, то его появление / скрытие будет двигать код. Что будет мешать. Потому – убираем его вправо.

Настройки:

{
    "workbench.activityBar.location": "hidden",
    "workbench.sideBar.location": "right"
}

Три. И не забудьте поместить Command Palette в центр рабочей области. Так будет удобнее: появяться она будет сразу перед глазами. Просто перетаскиваем мышкой.

Ссылка со всеми материалами: https://github.com/sobolevn/the-best-python-course/blob/main/minimal_vscode Там будет много полезного.

Теги:
Всего голосов 4: ↑4 и ↓0+6
Комментарии2

Представлен сервис Polyglotta для перевода любого текста на 5 языков одновременно бесплатно и без регистрации. Поддерживает 34 языка, среди которых английский, испанский, французский и русский. Есть встроенный ИИ-помощник — он объясняет перевод, подсказывает синонимы, происхождение слова и примеры использования.

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

Представлен бесплатный обучающий курс по SQL с 10 объёмными уроками с необходимой теорией, практикой в редакторе Mode от полных новичков до продвинутых спецов SQL, включая всю базу (SELECT, WHERE, ORDER BY, LIMIT и логические операторы), а также продвинутые темы (агрегирующие функции, GROUP BY, HAVING, соединение таблиц). В проекте доступен симулятор аналитика на реальных данных, A/B тестирование и инсайты продукта.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии1

Как облачные сервисы продвигают продукты на хакатонах

Хакатон — способ поднять узнаваемость бренда и расширить воронку найма, все хорошо это знают.

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

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

Все топовые облака: Amazon, Google Cloud, Azure, Cloud.ru, VK Cloud, Yandex Cloud провели хакатоны в последние 3 года.

Самый масшабный был с призовыми в $150 000.

К участию приглашались стартапы для решения социально значимых задач. Единственное требование — использовать сервис в своем решении.

В РФ сильнее всего отметились Selectel и Cloud.ru, тогда под брендом SberCloud.

На SberCloud Advanced Hacking собралось 70 команд из малого и среднего бизнеса. Они внедряли облачные технологии в свои продукты — самые оригинальные решения получили призы.

Всего мы проанализировали 10 хакатонов от облаков. Делимся выводами.

  1. Хакатоны облачных сервисов выделяются необычно взрослой аудиторией: как правило, ЦА — средний и малый бизнес. Это потенциальные клиенты.

  2. Задачи ставятся максимально широко. Ограничения бывают
    А) по тематике, например, «сделайте что-то социально значимое»,
    Б) по технологии, например, собираются решения в области AI, Web3, Blockchain, IoT.
    Это идеально для хакатона.

  3. Максимум по участникам в РФ — около 260 человек. Есть простор для яркого крупного ивента.

Вывод: облачные сервисы и вообще все, кто производит продукт для разработчиков, одним махом закрывают сразу 3 задачи с помощью хакатона:

  • продвинуть продукт

  • поднять узнаваемость бренда

  • расширить воронку найма

Если ваша компания относится к таким — донесите ценность до бизнеса, это поможет «продать» идею хакатона внутри и оставить всех довольными.

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

Тестируем микросервисное приложение с кучей интеграций — четыре совета из практики  

На одном из финтех-проектов наша команда тестирования столкнулась с серьезными вызовами: нестабильные партнерские API, отсутствие тестовых сред у партнеров, лимиты на запросы и риски всё сломать одним обновлением.

В этом посте — примеры, как команда с этим справилась и как можно поступить в похожих ситуациях. Эта подборка может сэкономить кому-то часы (а то и дни) работы.

🛠️ Внешние сервисы без тестовых контуров

Решение:
собственный мок-сервис на основе WireMock.

Как он работает:

  • тестировщик задает нужный ответ и отправляет его через HTTP-запрос в БД;

  • нужные вызовы подменяются в конфигурации;

  • при тестировании запрос уходит не во внешний API, а в мок, который отдает нужный ответ.

Моки у нас кастомные, конфигурируются через Swagger, и не завязаны напрямую на CI/CD — это упрощает запуск и дает гибкость.

Плюс: так мы не зависим от внешних API, которые то работают, то нет.

💸 Платные вызовы и лимиты на тестовые запросы

Решение:
изолированные стенды и замещение моками везде, где возможно.

Если API-партнер дает 150 вызовов в месяц, а вам нужно 500 на автотесты — моки опять же спасают. Мы блокируем обращения к реальным API на командных стендах и заменяем их заглушками. Проверку живых интеграций оставляем только на пред-проде.

Плюсы:

  • не сжигаем бюджет;

  • эмулируем ошибки и нестандартные ответы;

  • ускоряем тесты без зависимости от внешней стороны.

🔄 Нестабильность интеграционных тестов

Решение:
изоляция и моки как защитный слой.

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

  • эмулируем нестабильные вызовы моками;

  • изолируем свою часть и фокусируемся на ее стабильности;

  • прогоняем тесты на командных стендах — быстро, стабильно и без флуктуаций от партнеров.

🤝 Десятки команд, завязанных на общий процесс

Решение:
интеграционные проверки и ревью на совместимость.

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

  • общие тестовые фреймворки и единый подход к интеграционным тестам;

  • сценарии, которые включают зависимости от других команд;

  • проверка обратной совместимости: если что-то ломает чужой функционал — фича не проходит MR.

Подробнее о каждом из подходов читайте в статье QA-инженера AGIMA Святослава Волохова.

Теги:
Всего голосов 1: ↑1 и ↓0+1
Комментарии0

По мнению Microsoft, через пять лет искусственный интеллект будет играть в работе Windows решающую рол. Компания опубликовала видеоролик под названием «Видение Windows 2030», в котором говорится, что основным средством взаимодействия человека и операционной системы станет естественная речь и ИИ-агенты. А вот работа с мышкой, клавиатурой и набор текста в 2030 году будут чуждыми и уйдут на второй план.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии3

Говорим на языке событий: что даёт ивент-шторминг и как его правильно провести

Привет! Я Иван Чернов, системный архитектор, в этом посте расскажу про ивент-шторминг.

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

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

Что это за практика? На встрече с одной стороны сажаем бизнес, с другой — разработку. Просим бизнес рассказать, что и как он делает в работе с клиентом.

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

На этих циклах фокусируемся на доске в Miro во время встречи. 

В ивент-шторминге 3 этапа: 

1. Сейлзы выстраивают по циклам цепочку событий: от «клиента у нас ещё нет» до «клиент нас окончательно покинул». Даже в простых цепочках 20–30 действий. В готовом таймлайне есть happy pass: клиент успешно прошёл весь путь. И альтернативные пути: что-то пошло не так.

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

3. Выявляем, какие агрегаты работают с событием. Мапим команды: клиент регистрируется, в работе участвует команда регистрации. 

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

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

Поделюсь советами, как круто провести ивент-шторминг.

Онлайн-формат

● Для проведения онлайн достаточно доски в Miro.

● Разбивайте встречу на три части, каждая встреча — один этап.

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

● Максимум людей для успешной фасилитации онлайн — 8–10 человек.

Подбор людей и подготовка

● Соотношение участников: 70% бизнеса, 30% разработки.

● Ищите представителей бизнеса в оргчате выбранного домена: спрашивайте у руководства, «кто тут самый инициативный».

● Вам нужны работники «с полей», которые лучше всего шарят в процессах, и тимлиды первого уровня.

● Берите людей из разных направлений домена. 

● Бизнес-участники должны понимать: ивент-шторминг — процесс обучения, они эксперты, а разработка — ученики. Им нужно говорить на своём языке, а не подстраиваться под разработку.

● Дайте участникам базовый словарь. Четыре самых важных слова: актор, команда, событие, термин.

● Важны вводные по времени и цели: на сессию уйдёт суммарно 6–8 часов, она даст единое понимание процессов.

Фасилитация

● На старте не бойтесь повторить все вводные.

● Дайте сейлзсам 10 минут на то, чтобы каждый выстроил индивидуальный таймлайн, дальше начинайте мёржить таймлайны с общим обсуждением.

● Событие — факт в прошедшем времени, его не отмотать. Следите, чтобы так и записывали. 

● Первым делом простройте happy pass, иначе у вас не выстроится цельное видение процесса. Альтернативные ветки обозначьте на первом этапе, а достраивайте на втором, проверяя таймлайн с конца.

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

● Организуйте пост-процессинг: важно передать разработке результаты, объяснить, какие процессы у нас уже верно реализованы, а где нужно обновление и дополнительное внедрение.

Теги:
Всего голосов 6: ↑4 и ↓2+4
Комментарии1

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

Привет, малюсенькое увеличение потенциала kui'я, добавил pv и pvc в список просмотра.

pv and pvc
pv and pvc

Творите, выдумывайте, пробуйте!)

Теги:
Всего голосов 2: ↑2 и ↓0+3
Комментарии0

Как обойти защиту JWT?

В этом видео инженер по безопасности приложений Swordfish Security Денис Данилов разбирает уязвимость стандарта передачи данных JSON Web Token (JWT).

Суть уязвимости

JWT состоит из трех частей:

  • Header — заголовок, где указывается алгоритм подписи (например, HS256),

  • Payload — полезная нагрузка (данные пользователя, роли и т. д.),

  • Signature — подпись, которая формируется с помощью секретного ключа.

Проблема возникает, если сервер не проверяет, какой алгоритм указан в заголовке. Если там стоит alg: "None", библиотека может интерпретировать это буквально — и не проверять подпись вовсе.

В результате злоумышленник может:

  • извлечь JWT токен (например, из cookies),

  • заменить полезную нагрузку (например, указать "role": "admin"),

  • подставить alg: "None" в заголовке,

  • отправить подделанный токен на сервер и получить доступ к чужому аккаунту.

Как научиться находить такие уязвимости?

Такой тип ошибки — не уникален для JWT. Это общий паттерн: разработчик полагается на библиотеку, не разбираясь в деталях. В продакшене такие недочёты дорого обходятся — и бизнесу, и карьере инженера.

Swordfish Security мы регулярно сталкиваемся с подобными уязвимостями в реальных проектах. Опыт показывает: даже базовое понимание архитектуры протоколов и моделей угроз помогает разработчикам предотвращать критичные ошибки ещё на этапе проектирования. Этот кейс, кстати, — часть одного из модулей курса по DevSecOps нашей академии, где мы разбираем типовые уязвимости и подходы к их предотвращению.

Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии0

Что такое архитектура ПО и почему она не про красивые диаграммы

Изображение сгенерировано при помощи DALL-E 3
Изображение сгенерировано при помощи DALL-E 3

🏗️ Архитектура программного обеспечения — это не просто модное слово для повышения ставки на собеседовании. Это фундамент, на котором строится вся система.

Что это такое на самом деле?
Архитектура ПО — это структура компонентов системы, их взаимосвязи, взаимодействия с внешней средой и принципы разработки. Звучит скучно? А вот и нет! Это как план города: без него у вас получится не Москва, а какая-то деревня Гадюкино с кривыми улочками.

Зачем это нужно?

  • Снижает сложность системы через декомпозицию

  • Определяет рамки развития (чтобы не росло как раковая опухоль)

  • Помогает команде говорить на одном языке

  • Экономит нервы и деньги в долгосрочной перспективе

Под капотом архитектура отвечает за:
✅ Разбиение системы на модули (как LEGO, только для взрослых)
✅ Способы взаимодействия компонентов (REST, RPC, события)
✅ Распределение ответственности между модулями
✅ Выбор технологического стека

Простой пример:
Представьте интернет-магазин. Без архитектуры у вас будет один гигантский файл на 50,000 строк, где корзина покупок живёт рядом с логикой оплаты, а пользовательские данные перемешаны с каталогом товаров. С архитектурой — отдельные модули: UserService, CatalogService, PaymentService, каждый со своей зоной ответственности.

🔧 Давайте разберём базовые понятия архитектуры, без которых никуда. Это как алфавит — скучно учить, но без него читать не получится.

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

Пример компонентов:

  • Authentication Service (следит, чтобы чужие не лезли)

  • Notification Service (шлёт уведомления)

  • Data Storage (хранит данные, очевидно)

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

Типы интерфейсов:

  • REST API (классика жанра)

  • Message Queue (асинхронные сообщения)

  • RPC (удалённые вызовы)

  • Database API (работа с данными)

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

Примеры связей:

  • HTTP-соединения (веб-траффик)

  • TCP/UDP сокеты (низкоуровневая связь)

  • Message Brokers (Apache Kafka, RabbitMQ)

  • Database connections (пул соединений с БД)

Модуль — логическая группировка компонентов по функциональности. Это как департаменты в компании: HR, IT, Бухгалтерия.

Примеры модулей:

  • User Management Module (всё что касается пользователей)

  • Payment Processing Module (платежи и транзакции)

  • Analytics Module (метрики и отчёты)

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

Примеры сервисов:

  • Order Service (управление заказами)

  • Inventory Service (управление товарами)

  • Billing Service (выставление счетов)

Хранилище данных — компонент, отвечающий за персистентность информации. Это как склад или архив компании.

Типы хранилищ:

  • Реляционные БД (PostgreSQL, MySQL)

  • NoSQL (MongoDB, Redis)

  • Файловые системы (S3, локальные диски)

  • Кэши (Redis, Memcached)

SLA — характеристики работы сервиса. Это контракт: "обещаю работать 99.9% времени и отвечать за 200ms".

Зачем нужны SLA:

  • Понимание ожиданий от системы

  • Планирование мощностей

  • Определение критичности сервисов

  • Основа для мониторинга

Практический пример:
Сервис авторизации должен:

  • Отвечать за 100ms в 95% случаев

  • Быть доступным 99.95% времени

  • Выдерживать 1000 RPS

Чеклист для правильного проектирования:
✅ Каждый компонент имеет чёткую ответственность
✅ Интерфейсы документированы
✅ Связи (способы взаимодействия) определены
✅ Деление на сервисы произведено
✅ Способ хранения данных определен
✅ SLA определены и измеряемы
✅ Зависимости между компонентами минимальны

Помните: хорошая архитектура начинается с понимания базовых элементов. Без этого ваша система превратится в спагетти-код корпоративного масштаба.

Теги:
Всего голосов 2: ↑1 и ↓10
Комментарии0

Представлен репозиторий с кейсами по нейронкам и ML от топовых бигтехов мира — это сборник опыта компаний разной величины, из которого можно взять тонны знаний и применять в разработках. Только рабочий опыт, никакой теории, мишуры — реальные разработки Uber, Microsoft, Amazon, Google и других техногигантов. Пошаговые истории внедрения, бенчи и результаты, а также финансовый профит, который принесли нейронки. Все кейсы отсортированы по сферам, компаниям и типам задач — вы точно сможете найти полезности для себя. Советы по внедрению и масштабированию ML-систем, борьба с когнитивными искажениями и возражениями клиентов, а также реальная оценка качества моделей.

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

В SSP SOFT открыты новые вакансии в ИТ-команды: ищем мидлов, сеньоров и лидов

Мы в SSP SOFT — команда, которая занимается заказной разработкой и активно ведет проекты по модели ИТ-аутсорсинга. Наши специалисты помогают внешним клиентам реализовывать задачи в e-commerce, финтехе, медтехе, управлении инфраструктурой и других отраслях.

Во 2-м полугодии 2025 года мы усиливаем несколько ключевых направлений. Если вы уверенно чувствуете себя как профи, цените системный подход и хотите работать в зрелой команде — присоединяйтесь.

Актуальные вакансии на https://hh.ru/employer/5648224, а прямая ссылка на контакт с нашим HR отделом ниже:

Аналитика и системный анализ
• Аналитик DWH
• Аналитик 1С (Регламентированный учет)
• Бизнес-аналитик (Промтех)
• Системный аналитик (ИБ)

Разработка
• Lead Python Developer
• Android-разработчик (Senior)
• Fullstack-разработчик (C#, React)
• Разработчик 1С (ЗУП)
• Разработчик Angular
• Разработчик MS SQL
• Data Engineer

Тестирование и поддержка
• Automation QA Engineer
• Automation QA Engineer (Python)
• Automation QA Engineer (Java)
• ITSM-инженер

Как мы подходим к найму:

В SSP SOFT мы рассматриваем найм не как «закрытие вакансии», а как включение нового человека в команду — с вниманием к развитию и прицелом на долгосрочную совместную работу.

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

🧭 Как устроен процесс найма и адаптации:

1️⃣ Собеседование с HR и руководителем направления,
2️⃣ Техническое интервью с нашими экспертами,
3️⃣ Индивидуальный план онбординга — с учетом ваших сильных сторон,
4️⃣ Испытательный срок — с поддержкой наставника,
5️⃣ Подключение к серьезным задачам — когда вы полностью готовы.

Пишите нашему HR в Telegram: @sspsoft
Или присылайте резюме на почту: job@ssp-soft.com.

📍 Мы открыты к диалогу и ценим честные и профессиональные резюме (без накруток опыта) с вами как потенциальными коллегами.

Теги:
Всего голосов 5: ↑4 и ↓1+4
Комментарии0

Рэймонд Чен, инженер‑ветеран Microsoft, более трёх десятилетий участвующий в развитии Windows, с 2003 года ведёт популярный технический блог The Old New Thing. Чен регулярно публикует в нём короткие истории о внутренней кухне Windows. На этот раз Чен объяснил, почему Microsoft перешла на обозначения «H1» и «H2» в названиях полугодовых релизов Windows.

Наверное, и без подсказок можно угадать, что «H» означает «half» (половина). Однако до 2019 года обновления называли «весенними» и «осенними», к примеру 2017 Fall Creators Update или 2018 Spring Update. Зачем было менять?

Дело в том, что не везде сначала идёт весна, а затем осень. В Южном полушарии Земли всё наоборот, не так, как у нас: в декабре начинается лето, в марте — осень, ну а в июне будет зима, за которой следует весенний сезон с сентября по ноябрь. Поэтому сразу возникает вопрос: «весеннее обновление» — это когда?

Это очень базовый географический факт, но вопрос вообще интересный. Почему мы его так редко вспоминаем? Если задуматься, то вся основная современная цивилизация развилась именно в Северном полушарии — отсюда и нормы речи. Более того, про южнополушарцев легко забыть и без этого: там живёт всего 10–12 % мирового населения, поскольку там меньше пятой части суши, и значительную площадь занимают океаны.

В Microsoft про такие базовые соображения о географии вспомнили далеко не сразу. На одном из общекорпоративных собраний топ-менеджер задал вопрос о возможных бессознательных предубеждениях. Один из коллег Чена поднял руку. Имя Рэймонд не приводит, но замечает, что этот сотрудник вырос в Южном полушарии Земли. Разработчик озвучил факт о северополушарной предвзятости.

«Сезонные» названия заменили на нейтральные «H1» и «H2» уже на следующий день.

Теги:
Всего голосов 7: ↑7 и ↓0+12
Комментарии4

Благодаря найденной уязвимости я зарегистрировал CVE-2024-45244, попал на спикер-пати OffZone 2024 (как докладчик) и в топ-10 "Pentest Award 2025" (номинация Out Of Scope). А ведь этого всего могло бы и не быть, если бы я не продолжил настаивать на своём (невзирая на мнение моего тогдашнего тимлида). Уязвимость обнаружил несколько лет назад в процессе исследования безопасности коммерческого смарт-контракта. Сообщил тимлиду (отдел занимался безопасностью блокчейна) во всех подробностях, даже макет с результатами показал и описал. Но, тимлид проигнорировал мою находку. Он до этой работы не имел практического опыта в безопасности (был разработчиком). Врезалось в память, как он называл себя "самым компетентным по блокчейнам в отделе". После моего отказа на предложение добровольно стать "козлом отпущения", у него появились претензии к моей работе. Мол, это я ничего не смыслю в безопасности блокчейнов. В какой-то момент он даже позвал HR бизнес-партнёра на 3-х сторонний диалог (видимо, показать, что он не одинок во мнении насчёт моей компетенции). HR весь наш диалог молчала, "считая ворон". А в конце выдала гениальное: я не поспеваю за темпом компании в безопасности. И, вообще-то, очень плохо, что я не внимаю мнению руководителя - тимлидом абы кого не ставят (видимо, кейс с президентом Ельциным молодое поколение HR-ов и не знает). Учитывая, что у компании одной из целей был поиск CVE в блокчейнах, и на текущий момент в публичной плоскости у них так ни одной CVE в этой области не появилось - большой вопрос: кто за кем не поспел.

Сегодня, прочитав статью "Когда руководитель не руководитель. Синдром «Самого умного» я вспомнил не только разработчиков блокчейна, пафосно уверявших меня, что проблемы нет, они-то лучше меня знают свой продукт. А фикс - только чтоб меня успокоить (подробнее в статье "Как я зарегистрировал CVE и разозлил вендора"). Я также вспомнил своего бывшего тимлида. И ведь такие люди - не редкость. На одной из лекций психологу задали вопрос почему среди руководителей часто нарциссы? Ответ: обычный человек 10 раз подумает стоит ли идти в руководители. У нарциссов же это желанная цель: уже самой своей должностью показывать подчинённым кто в доме хозяин. Надо сказать, что такие люди любят публичный вынос "сора из избы". Пример с этим тимлидом - на картинке.

Тимлид в рабочем чате отдела показывает уровень своего делового общения насмехающимися смайликами (HR считает такое поведение нормой)
Тимлид в рабочем чате отдела показывает уровень своего делового общения насмехающимися смайликами (HR считает такое поведение нормой)

Что делать когда сталкиваешься с такими людьми? Это дело каждого. Но, лично я солидарен с психологом: не пытаться что-то им доказать, не вестись на провокации, и постараться не пересекаться в жизни (если нужно - сменить работу). Ну, и CVE, OFFZONE, Pentest award - те вещи, которые вряд ли бы появились, если бы не сменил работодателя.

Теги:
Всего голосов 4: ↑4 и ↓0+4
Комментарии0