О неприступные стены удобной архитектуры растущего приложения сломано много копий. Это, в принципе, довольно предсказуемо. У всех нас свой бэкграунд, опыт разработки и способ работы с абстракциями. Что для одного чисто и понятно, для другого может быть сумбурно и перемешано. Я хочу рассказать о том выборе, который был сделан год назад и который за эти месяцы себя прекрасно показал.
Инженер
PostgreSQL — один за всех? Как работать с нетипичными данными в реляционной системе
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/724/96e/786/72496e786f5a4ce60d19a11a6fc4261b.png)
Смотрим, как вездесущий PostgreSQL справляется с нестандартными для реляционной системы управления базами данных (СУБД) ролями: хранением и поиском временных рядов, пар «ключ — значение», эмбеддингов для больших языковых моделей и многомерных кубов. Отвечаем на вопрос: действительно ли так нужно строить сложные архитектуры со множеством разнородных систем хранения данных — MongoDB, Redis, InfluxDB, Pinecone, ClickHouse, Apache Cassandra — или можно обойтись одним PostgreSQL?
Привет, Хабр! Меня зовут Александр Брейман, я доцент департамента программной инженерии факультета компьютерных наук НИУ ВШЭ и по совместительству эксперт Учебного центра IBS по управлению данными и архитектуре ПО. В прошлой статье я рассказывал о миграции с Oracle на PostgreSQL, а сегодня разберу, как последний работает с нетипичными видами данных.
Как использовать GitHub Copilot в IDE: советы, приёмы и лучшие практики
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/e63/b62/0e2/e63b620e22e8703fd3a2367a142c6ea0.png)
В этой статье поговорим о практических стратегиях, повышающих эффективность использования GitHub Copilot при написании кода.
Что нужно знать, чтобы успешно пройти System Design Interview
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/d88/b72/3f6/d88b723f6bdc7318f025401af5c1abff.png)
Для любого разработчика глубокое понимание основных принципов системного проектирования является необходимым условием для создания стабильных и масштабируемых программных систем, способных обеспечивать высокую производительность. Системное проектирование (System Design) включает разработку архитектуры и структуры программной системы, направленную на удовлетворение специфических требований и обеспечение требуемых показателей производительности.
С учетом стремительного прогресса в области технологий и возрастающей сложности программных приложений, овладение принципами системного проектирования становится критически важным для разработчиков, стремящихся создавать эффективные системы. Не имеет значения новичок вы или опытный специалист: освоение этих принципов позволит вам разрабатывать надежные и масштабируемые программные системы, отвечающие требованиям современных приложений.
Далее мы рассмотрим каждый из принципов более детально, чтобы понять их суть и способы применения в разработке приложений.
Идеальный кейс внедрения DevSecOps. Так бывает?
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/2c6/47d/2a7/2c647d2a779db894d29df1287796000f.jpg)
Привет, на связи отдел безопасной разработки СИГМЫ (ОБР). И хоть наша команда сформировалась относительно недавно, мы уже приобщились к «вечному» — а именно «противостоянию» разработки и безопасников. Если вы читаете эту статью, скорее всего такое знакомо и вам. Но иногда в этом взаимодействии формируются настоящие бриллианты. И сегодня речь пойдет как раз о таком кейсе.
Настраиваем рабочее место: полезные инструменты для разработчиков и не только
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/75c/d30/abb/75cd30abbd8d0c874282a2abbff29dcf.png)
В статье расскажу про некоторые инструменты и настройки, которые помогают сделать рабочий процесс более комфортным и производительным. Что-то будет о встроенных в Windows фишках, что-то – о сторонних программах. Половина материала полезна вообще всем пользователям, а другая отведена под инструменты разработчиков.
Xray на Keenetic / Xkeen
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/3a3/124/d07/3a3124d07a6b6a58c70178100d7ce1cd.png)
Утилиту для поддержки Xray на роутерах Keenetic — Xkeen.
Весь код написан на чистом shell и открыт на GitHub.
Собирает Xray под Ваш Keenetic на Entware.
Доступны GeoIP и GeoSite от AntiFilter, AntiZapret и v2fly.
Автоматически обновляет в указанное время Xray, GeoIP и GeoSite.
Как быстро написать API на FastAPI с валидацией и базой данных
![](https://habrastorage.org/webt/bg/g2/xh/bgg2xhwt7h6adweqy_7rribi7lo.png)
Все веб-запросы обрабатываются на сервере — это хорошо всем известно. Но бывает, когда нужно написать специальный программный интерфейс, так называемый API, через который пользователи смогут централизованно получать данные и вносить изменения, например, в свой профиль.
В этой статье мы разработаем простой API с помощью самого популярного стека и FastAPI. Рассмотрим важные концепции в работе с этим фреймворком, набросаем базовую структуру проекта и развернем приложение на облачном сервере. Подробности под катом!
Троттлинг в Kubernetes. Или как настроить лимиты, чтобы приложения не “тормозили”
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/1d6/fc8/035/1d6fc803546ec94eeacb7c0386d57573.png)
Главная рекомендация - отказаться от лимитов!
А теперь подробнее.
Когда у вас много пользователей используют один кластер Kubernetes, возникает вопрос - как задать квоты, чтобы и приложениям хватало ресурса, и не случилось ситуации, когда из-за одного прожорливого соседа страдают все поды на ноде?
Начну с того, что самым распространенным способом является задание request и limit по CPU и RAM. С оперативной памятью все достаточно просто - при превышении потребления, OMM-Killer остановит процесс. А вот с CPU есть целый ряд нюансов и возможностей наступить на грабли.
Это происходит из-за того, что ресурс процессора делится не долями, а по времени.
Это можно представить так
ToolChain: Настройка сборки прошивок для микроконтроллеров Artery из Makefile
Настало время освоить очередное семейство микроконтроллеров: от компании Artery Technology.
Компания Artery Technology уже возвела полноценную экосистему для своих процессоров. Есть фирменные отладочные платы, программаторы, документация, исходные коды MCAL и даже кодо генераторы.
В этом тексте я представил пошаговую инструкцию того как запрограммировать микроконтроллер Artery.
Лазерный DIY или как с помощью дешевого гравера делать качественные платы
![картинка для статьи](https://habrastorage.org/webt/gv/wg/qu/gvwgqubmsowpe61dh3fmryb5tf4.jpeg)
Привет, Хабр!
В этой статье хочу поделиться своей историей, как спонтанная покупка на местном маркетплейсе упростила процесс изготовления прототипов печатных плат в домашних условиях, сэкономив время, при этом повысив качество. Интересно? Тогда добро пожаловать под кат!
Подобие CI/CD c микроконтроллерами. Jenkins + GitLab + HeadlessBuild
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/f5c/3e7/208/f5c3e720884fa1b78a9d1a277ffedc6f.png)
Прежде всего – хотелось избавить себя от рутинных операций, которые необходимо прокручивать в каждый релиз артефакта каждого проекта. Второе – понять, нужен ли мне вообще такой подход у разработке и сколько от него профита. Третье – узнать немного нового
Исследуем защиту и восстанавливаем аркады Namco System ES1
![Tank! Tank! Tank! Arcade](https://habrastorage.org/getpro/habr/post_images/bb4/ee1/faf/bb4ee1faf899b91090afe6bcca013d31.jpg)
Введение
Эта история началась практически сразу после написания статьи об исследовании аркады небезызвестной корейской компании: в аркадном автомате Tank! Tank! Tank! от Namco вышел из строя жесткий диск (что неудивительно, т.к. производитель установил в автомат не отличающиеся надежностью Seagate 7200.12), диск взяли с рабочей аркады и скопировали его через WinHex, после чего игра перестала запускаться. Предположив, что целостность диска была нарушена неосторожным нажатием клавиши в окне редактирования данных на диске в WinHex, был взят другой диск с еще одного рабочего автомата, скопирован аналогичным образом, который также перестал запускаться. Тут-то и стало понятно, что в диск каким-то образом встроена защита от копирования.![Arcade Linux Error](https://habrastorage.org/getpro/habr/post_images/82c/7f6/f79/82c7f6f797b28a8bbc68055996ff6f8d.png)
Мапперы на Famicom, NES, Денди: откуда взялись и зачем нужны (часть 2/2)
![](https://habrastorage.org/webt/ig/ye/t2/igyet2_s_t-ue_z0thzbrr2qs6s.jpeg)
Продолжаем обстоятельный разговор про «мапперы» — устройства управления расширенной памятью на игровых консолях Famicom, NES и Денди. Во второй части статьи рассмотрим особенности нескольких основных видов мапперов и их влияние на содержание игр, сложности программирования, а также ситуацию с мапперами на других платформах.
Осваиваем 3-рублёвые микроконтроллеры PADAUK
![image](https://habrastorage.org/webt/0m/ed/ol/0medolidcscfk2-pdvuby1o4fhe.jpeg)
Тайваньская фирма Padauk по праву считается производителем самых дешевых корпусных микроконтроллеров. Большим функционалом они не обременены, но несложные задачки для простых устройств могут выполнять.
Python и чистая архитектура…
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/539/0d0/bd1/5390d0bd14a2594e81d2d1f69b37ce33.png)
Всем привет! Сегодня я хочу поделиться своими опытом разработки на различных языках программирования и размышлениями касаемо проектирования серверных приложений. Речь пойдет про много обсуждаемую в последнее время чистую архитектуру в рамках языка python. Казалось бы, по заветам Роберта Мартина мы не должны зависеть от инструмента(зачастую под этим понимают фреймворк или библиотеку), однако это порождает множество ошибок и просто небольших неточностей в проектировании сервисов и даже выборе языка программирования.
И на заметку, моя цель в данной статье показать и рассказать свое видение с точки зрения практики, без особого углубления в базовую душную теорию. Однако ссылочки на статьи и информацию никуда не пропадут.
Подборка книг для менеджеров и тимлидов, которые развивают команды в России
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/fd1/d4f/aae/fd1d4faae95202262ab3b70a4f383499.png)
Возможно, в новый год вы вступаете в роли техлида, тимлида или менеджера команды. А может, вы хотите сделать следующий шаг в профессиональном развитии в новом году? Собрали для вас несколько полезных книг, которые помогут начинающим и опытным лидерам команд (да и линейным сотрудникам) разобраться в тонкостях работы с людьми. Особенность подборки в том, что она состоит исключительно из книг российских авторов, которые учитывают особенности менталитета людей и контекст, актуальный для компаний в нашей стране.
Вся подборка основана на рекомендациях Оксаны Нечитайловой, руководителя отдела сервисного дизайна продуктов YADRO, — в IT-сфере она уже 15 лет и имеет богатый опыт управления командами и построения процессов. Каждую книгу подборки Оксана сопроводила развернутыми комментариями, которые помогут вам понять, стоит ли вам тратить на нее время.
Создание простого и работоспособного генетического алгоритма для нейросети с Python и NumPy
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/e8a/982/935/e8a982935126b57cd0bf0b0821a5475d.jpg)
Генетический алгоритм нужен, когда ты знаешь параметры своей нейросети, но не знаешь, что должно получиться на выходе, например, этот алгоритм можно использовать для игры в Google динозаврика или Flappy Bird, потому что там ты не знаешь, что должно быть на выходе, но у тебя есть возможность сортировать наиболее жизнеспособные варианты, например по времени, это называется фитнес функций.
У меня никогда не получалось найти такой алгоритм и чтобы он работал, и был простым, и его можно было использовать, поэтому я приступил к созданию своего легкого, простого, прекрасно работающего Genetic Algorithm.
Моя цель не растянуть написания этой статьи, и замучить читателей её длиной, поэтому сразу приступим к коду. Как уже упоминалось, код простой, поэтому большую часть не нужно описывать целыми сочинениями.
Вначале нам потребуется импортировать модули:
Какие вопросы я задаю на собеседовании QA Junior+
![](https://habrastorage.org/r/w780/getpro/habr/upload_files/cd6/c9e/8f9/cd6c9e8f9659473c42d6227de829cbab.jpeg)
Привет Хабр! Меня зовут Иван, сегодня поговорим о вопросах на собеседованиях Джуну+ (от 6 месяцев работы) и узнаем как ответить на них не как ChatGPT. Я как инженер по ручному и автоматизированному тестированию провожу собеседования на роль Junior+ QA (с дальнейшим ростом в автоматизаторы). Делюсь своим списком вопросов и ответов, которые я ожидаю услышать.
Придумывать заново велосипед не собираюсь. Поэтому ниже список ресурсов на вопросы для подготовки к собесу QA. К сожалению ресурсы предоставляют не все ответы, в том числе не все правильные.
База для Junior QA
1. Что такое тестирование?
Сравнение ожидаемого результата с фактическим результатом ПО. Тестирование это не поиск багов!
Своими словами: тестирование - это процесс сопоставления спецификаций продукта с его финальным результатом. Под финальным результатом мы можем понимать то, что тестировщик получает, когда разработчик реализует функционал по задаче и мы начинаем его тестировать. В ручном тестировании мы сравниваем тестовые случаи с реализованным проектом, а в автоматизированном тестировании мы преобразуем ручные тестовые случаи в автоматические проверки для реализованного проекта.
Заблокирован ли протокол OpenVPN? И как теперь быть?
![](https://habrastorage.org/r/w1560/getpro/habr/upload_files/fd9/b79/02a/fd9b7902a719334b3159c054bed9cd9e.png)
Один мой знакомый держит свой OpenVPN сервер, он поделился со мной хронологией блокировки популярных VPN протоколов в России. С его разрешения, я публикую детальную информацию о том, как это происходило с точки зрения клиента и администратора OpenVPN.
Информация
- В рейтинге
- 2 293-й
- Откуда
- Москва, Москва и Московская обл., Россия
- Зарегистрирован
- Активность