Привет, Хабр! Меня зовут Грант, я уже 5 лет занимаюсь backend-разработкой в SimbirSoft, а с 2021 года возглавляю Backend-отдел компании в Краснодаре. В последние несколько лет неоднократно замечаю, что на входном интервью соискатели часто путают принципы разработки. Поэтому в этой статье решил разобрать, как проще их понимать, какие связи между ними прослеживаются, стоит ли учить все или что-то можно пропустить. А еще попробую раскрыть некоторые особенности, какие секреты скрывают популярные принципы разработки.
Разработчик
Семантические ловушки асинхронности: Ключи к разгадке и эффективному освоению тем Task, Синхронность, Асинхронность
При освоении новых знаний мы, так или иначе, стараемся связать их с уже освоенными знаниями, в связи с чем при изучении и без того непростых абстракций, в терминах которых заложен свой особый смысл, нередко заходим в тупик.
Такая ситуация имеет место когда начинающий программист знакомится с темами Task, Синхронность, Асинхронность. Ситуация усугубляется тем что зачастую, более опытные коллеги применяют в жаргоне выражения из разряда «Синхронное/Асинхронное выполнение задачи».
Для того, чтобы распутать этот «Гордиев узел», давайте подойдем к проблеме издалека: рассмотрим ее на примере работы симфонического оркестра. Сравним при этом значения проблемных терминов с точки зрения людей, обладающих различной профессиональной ориентацией.
13 конфигураций Kubernetes, которые ты должен знать в 2k24
Поскольку Kubernetes продолжает оставаться краеугольным камнем оркестрации контейнеров, освоение его механизмов и возможностей становится обязательным для специалистов DevOps. В 2024 году некоторые конфигурации Kubernetes выделяются среди прочих благодаря функциональности в части автоматизации и безопасности, а также улучшения производительности в облачных (cloud-native) окружениях. В данной статье рассматриваются 13 ключевых конфигураций Kubernetes – предлагается глубокое погружение в каждую из них со сценариями применения, преимуществами и примерами кода.
Шпаргалка для алгособеса — алгоритмическая сложность, структуры данных, методы сортировки и Дейкстра
Привет, Хабр!
Так уж повелось, что любой уважающий себя работодатель перенимает передовые методики FAANG — по этой причине практически во всех IT-собесах есть она: секция алгоритмов. Кто-то ей рад, кто-то не очень, но секция есть и уходить пока не планирует. Поэтому нужно закатать рукава и достойно встретить суровую реальность.
Bleeding-edge обход блокировок с полной маскировкой: настраиваем сервер и клиент XRay с XTLS-Reality быстро и просто
В серии предыдущих статей я описывал, почему повсеместно используемые VPN- и прокси-протоколы такие как Wireguard и L2TP очень уязвимы к выявлению и могут быть легко заблокированы цензорами при желании, обозревал существующие гораздо более надежные протоколы обхода блокировок, клиенты для них, а также описывал настройку сервера для всего этого.
Но кое о чем мы не поговорили. Во второй статье я вскользь упомянул самую передовую и недетектируемую технологию обхода блокировок под названием XTLS-Reality, и пришло время рассказать о ней поподробнее, а именно - как настроить клиент и сервер для нее.
Кроме того, что этот протокол еще более устойчив к выявлению, приятным фактом будет и то, что настройка сервера XTLS-Reality гораздо проще, чем описанные ранее варианты - после предыдущих статей я получил довольно много комментариев типа "А что так сложно, нужен домен, нужны сертификаты, и куча всего" - теперь все будет гораздо проще.
Новая блокировка OpenVPN и Wireguard замедляет интернет в России
Позавчера, 15 января ночью, по всему Рунету пошли сигналы, что протоколы WireGuard/OpenVPN массово «отвалились». Судя по всему, с понедельника Роскомнадзор снова взялся за VPN, экспериментируя с блокировками OpenVPN и Wireguard в новом масштабе.
Мы в Xeovo заметили это по большому наплыву пользователей, которые вообще не знали что протоколы блокируются (где они были все это время). Уже учения были много раз, и мы предупреждали клиентов, но, видимо, OpenVPN и WireGuard до сих пор очень хорошо работали у всех. На настоящий момент блокировка продолжается. Возможно, тестируют, как все работает перед выборами.
Публикация локального сервера из дома в интернет
Приветики. Надеюсь, все отошли от новогодних, и можно писать и читать дальше. Как хозяин умного дома, я состою в чатике по Home Assistant, там прекрасное ответчивое комьюнити,
но периодически задаётся вопрос по тому, как собственно выставить свой веб сервис в интернет. И оказывается, что в двух словах тут не ответишь, а вменяемой инструкции на которую можно дать ссылку - нет. Так что теперь она будет здесь.
Рокет сайнса здесь не встретите, и в целом все эти вещи справедливы и работают уже минимум лет 10, просто не так тривиально понять, какой именно запрос нужно задать в гугл, и что делать.
Мы рассмотрим здесь несколько сценариев - статический белый айпи, динамический белый айпи, и серый. Для серого рассмотрим варианты с готовыми сервисами, с помощью Keenetic и с помощью ssh туннеля. Погнали!
Чистая архитектура на примере
Познакомил друга с понятием "Чистая архитектура
" и он стал часто спрашивать меня как лучше сделать то или другое. Хотел дать ему к какому-нибудь туториал, но, к удивлению (плохому), не нашел подходящего.
Поэтому выкладываю небольшой обзор:
1.. Что такое чистая архитектура;
2.. Как можно реализовать;
3.. Мои мысли.
Прокрастинация
Данная статья написана по материалам лекций психолога в МФТИ. Эти лекции показались мне очень полезными, поэтому я решил поделиться своим конспектом.
Паттерн Unit of Work в разрезе чистой архитектуры DDD на языке Golang
Всем привет! Недавно мне выпала возможность разработать шаблон сервиса, который можно было бы использовать как для монолитной, так и для микро‑сервисной архитектуры. Шаблон должен был придерживаться принципов Domain‑Driven Design (DDD). В этом процессе, я столкнулся с двумя интересными проблемами:
Проблема 1: Сложности обеспечения транзакционности базы данных
При разработке сервисов, часто возникает неотъемлемая потребность в использовании транзакций базы данных для обеспечения целостности данных. Однако, при попытке интегрировать транзакционную логику в традиционные подходы, столкнулся с трудностями. Связывание транзакционной логики с логикой слоя базы данных оказалось нетривиальным и привело к нарушению принципов разделения ответственности. Это, в свою очередь, сказалось на тестировании и поддержке кода.
Проблема 2: Нарушение изолированности слоя
В попытке решить первую проблему, некоторые разработчики переносят работу с транзакциями на уровень слоя приложения, чтобы избежать прямой зависимости от базы данных. Однако, такой подход, несмотря на его обоснование, может нарушить изолированность слоев и противоречить принципам DDD и чистой архитектуры. Это, в конечном итоге, затрудняет поддержку приложения и усложняет его масштабирование.
Эти две проблемы стали отправной точкой для исследования применения паттерна Unit of Work и его роли в обеспечении надежности и консистентности данных в контексте Golang и DDD.
В статье я расскажу о своем подходе к решению этих задач.
Синхронизация операций в .NET на примерах
Всем привет. Сегодня я расскажу об инструментах, которые существуют в .NET для параллельной работы с какими-то внешними ресурсами и приведу примеры, где и как их можно применить.
При параллельной работе с каким-то ресурсом, нам нужно синхронизировать доступ к нему, чтобы не попасть в состояние годнки или банально не перегрузить его. Для этого в .NET существуют следующие вещи:
Прокрастинация, youtube и горящий дедлайн — что мешает нам учиться?
Всем привет! Меня зовут Лиза, я методолог обучающих программ в ЕДИНОМ ЦУПИС. Даже во время прохождения очень интересного и полезного курса сосредоточиться может быть крайне сложно. В мире, наполненном информацией, учиться мешает буквально любой внешний фактор. В статье я расскажу о проблемах, с которыми мы сталкиваемся в процессе обучения, и о том, как эти проблемы преодолеть.
Глубинное обучение. Новая роль дофамина
В материалах часто пишу о том, что дофамин – это нейрогормон предвкушения и мотивации. Однако, это также элемент глубокой и сложной структуры самообучения. Которая стала известна буквально в новом исследовании.
Принципы SOLID vs KISS. Как найти баланс?
Привет, Хабр! Сегодня я хотел бы поделиться опытом, как писать код так, чтобы системы в проекте были с одной стороны гибкими, а с другой — простыми и компактными.
На самом деле, когда нужно реализовать новую фичу в проекте, необходимо соблюдать баланс между простотой и гибкостью...
Автономный способ обхода DPI и эффективный способ обхода блокировок сайтов по IP-адресу
Существует два распространенных типа подключения DPI: пассивный и активный.
Пассивный DPI
Пассивный DPI — DPI, подключенный в провайдерскую сеть параллельно (не в разрез) либо через пассивный оптический сплиттер, либо с использованием зеркалирования исходящего от пользователей трафика. Такое подключение не замедляет скорость работы сети провайдера в случае недостаточной производительности DPI, из-за чего применяется у крупных провайдеров. DPI с таким типом подключения технически может только выявлять попытку запроса запрещенного контента, но не пресекать ее. Чтобы обойти это ограничение и заблокировать доступ на запрещенный сайт, DPI отправляет пользователю, запрашивающему заблокированный URL, специально сформированный HTTP-пакет с перенаправлением на страницу-заглушку провайдера, словно такой ответ прислал сам запрашиваемый ресурс (подделывается IP-адрес отправителя и TCP sequence). Из-за того, что DPI физически расположен ближе к пользователю, чем запрашиваемый сайт, подделанный ответ доходит до устройства пользователя быстрее, чем настоящий ответ от сайта.Почему разработчикам тяжело запускать свои проекты? Делюсь личным опытом
Хочу поговорить про страхи мешающие разработчикам и не только, запускать свои проекты. Часть этих страхов были у меня, а некоторые остаются до сих пор. Часто, наблюдаю их у своих знакомых и близких людей.
Основы Unity + Mirror
UPD. Актуализировал на момент 26.11.2022.
Хочу поделиться опытом с теми, кто хочет попробовать себя в написании сетевой игры, но не знает с чего начать. Так как информации по этой теме в интернете много, но полезную и актуальную было найти тяжело (а в русскоязычном сегменте и подавно), я решил собрать и структурировать то, что удалось найти.
Fooocus v2 — бесплатный Midjourney у вас на компьютере. Подробная инструкция по установке и использованию нейросети
Друзья, всем привет! Сегодня я хочу рассказать вам про самую простую и доступную для понимания нейросеть, которая создает изображения по вашему текстовому описанию. Она называется Fooocus и основана на знаменитой Stable Diffusion XL. Это идеальное решение в качестве вашей первой нейросети, и необходимый инструмент для любого дизайнера или контент мейкера.
Внутри много тяжелых изображений.
Законопослушный гражданин. Инструкция по отказу от VPN
Не так давно государственные структуры озаботились проблемой VPN. Сегодня VPN-протоколы блокируются на уровне провайдеров, но пользоваться ими нам как потребителям пока что можно. Однако ситуация меняется стремительно, и в новостях уже проскакивают слухи о блокировке доступа к статьям по настройке VPN. Дабы вы не попали под уголовное преследование, мы подготовили заметку об удалении VPN, в которой будет пошагово описано, как отказаться от VPN-протокола Wireguard и полностью отключить его, если вы его используете. С другими протоколами инструкция будет плюс-минус совпадать, поэтому расписывать отключение каждого протокола не имеет смысла, вы и сами справитесь.
Революция от OpenAI — полный обзор: что означают последние анонсы для продуктовой разработки
Неделю назад я получил уведомление о начале трансляции первой разработческой конференции от OpenAI. Было неудобно смотреть эфир живьём, так что я уложил детей спать, и ночью, заварив себе какао, с предвкушением открыл YouTube.
Конечно, я к тому времени не выдержал и посмотрел краткие описания анонсов, так что был готов к тому, что увижу, но скажу честно: не смотря на презентацию в стиле студенческих конференций (на финальный слайд (под катом) вообще без слёз не взглянешь), чем дольше я слушал об анонсах, тем больше у меня отвисала челюсть.
Это не просто небольшие улучшения; это действительно скачок вперед. Я слушаю про увеличение длины контекста до 128К, обновлении данных до апреля текущего года, об интеграции в API интерпретатора, нового "рисователя" DALLE-3, анализ изображений, извлечение данных из массивов, безлимитных "ассистентов" и чуть ли не подпрыгиваю на стуле от оживления: решилось огромное количество проблем, которые до этого требовали человеко-месяцы доработки довольно квалифицированной командой.
Как только презентация подходит к концу, я судорожно открываю беклог и начинаю записывать и редактировать идеи. Я уверен, что перед разработчиками открыли действительно большие возможности, которые переопределят способ разработки и восприятия продуктов. И если тема AI вас как минимум интересует и вы ещё и занимаетесь продуктовой разработкой, а перепосченных по 150 раз новостей не хватает понять, что это значит лично для вас и команды, этот обзор будет весьма кстати.