Обновить

Технотекст

Худшие практики разработки и архитектуры

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

Я собрал худшее из худшего! Оказалось, что хороших практик — море, и разбираться в них долго, а вот плохих, реально плохих, — считаные единицы.

Понятно, что плохие практики не отвечают на вопрос: «А как делать-то?» — но они помогают быстро разобраться в том, как не делать.

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

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

Это если команда одна. А если разработчики на пятом проекте новые, то начинается самое весёлое — этот сталактит надо ещё прочитать.

Очень часто я вижу лава-код в проектах аутсорсинговых компаний, потому что они используют свою кодовую базу по разным заказчикам как такой своеобразный иннерсорс. А «междисциплинарный» код как раз хорошо обрастает отключаемыми участками и переопределяемыми функциями.
Читать дальше →

Mimesis: идеальное решение для генерации данных

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

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

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

Читать далее

Как опубликовать свое первое приложение на Django и не упасть духом. Гайд для выпускников курсов

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

Я закончил курсы "Fullstack разработчик на Python" от одной известной компании. Обучение завершено успешно, но не было ощущения полноценности — на курсах не учили, как сделать самостоятельно деплой приложения на Django. И никто из студентов не задавался эти вопросом 😁

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

В этой статье я хочу дать небольшой гайд для выпускников подобных курсов и заодно рассказать про российский облачный сервис (еще раз внимательно прочитал их статью и увидел, что она опубликована буквально за 3 недели до моих тестов - то есть мне повезло).

Как запустить Django и не потерять время

Разработка универсального сетевого стабилизированного источника питания

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

Одна из самых популярных микросхем ШИМ для источников питания – это TL494. Именно на ней и построен мой универсальный преобразователь, который использую для питания различных самодельных устройств.

А не почитать ли мне про это..?

Как собрать рентген-аппарат из мотка скотча

Время на прочтение13 мин
Охват и читатели35K
Картинка kjpargeter, Gpointstudio, Freepik

Задумывались ли вы над тем, что прямо под руками, может, даже и сейчас, у вас находится весьма мощный потенциальный источник рентгеновского излучения, о котором мало кто знает, потому что «его надо правильно готовить»? А что, если я скажу вам, что это самый обыкновенный скотч? Да-да, та самая банальная клейкая лента, которой мы упаковываем всё подряд! Тем не менее, в определённых условиях она обладает поразительными свойствами, несмотря на кажущуюся странность такого утверждения…
Читать дальше →

Трансплантация реактивности

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

Здравствуйте, меня зовут Дмитрий Карловский, и я.. тот самый чел, который написал реактивную библиотеку $mol_wire. Именно благодаря мне вам есть сейчас чем пугать детей перед сном.

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

Берегите синапсы, сейчас будет настоящий киберпанк..

Открыть ментальный сокет

Что такое «паралич» сети, и как его избежать?

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

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

Цель статьи - объяснить проблему, причины ее возникновения и показать несколько решений. Дополнительно статья связывает редкое понятие «паралича сети» и распространённое понятие «затухания градиента».

Читать далее

Разносим по полочкам этапы тестирования http запросов в Spring

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

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

Речь пойдет об использовании методологии Arrange-Act-Assert применительно к интеграционным тестам на Spring Framework с использованием мокирования (mock) HTTP-запросов к внешним ресурсам, к которым идет обращение по ходу выполнения тестируемого кода в рамках поведения системы. Предлагаемые к рассмотрению тесты написаны с использованием Spock Framework на языке Groovy (см. недавнюю статью по этой теме: Тестируем Spring Boot приложения через Spock Framework). В качестве механизма мокирования будет использоваться MockRestServiceServer. Будет пару слов и о WireMock.

Читать далее

Джейлбрейки ChatGPT: как Волдеморт помогает взламывать нейросети

Время на прочтение11 мин
Охват и читатели21K
Привет Хабр, меня зовут Владислав Тушканов и я тимлид в команде Data Science в «Лаборатории Касперского». Мы занимаемся созданием ML-технологий для защиты наших пользователей от угроз, а также изучаем, как новые технологии могут повлиять на кибербезопасность.

Когда мы слышим о джейлбрейках, первыми на ум приходят гаджеты с закрытой экосистемой: пользователи взламывают наложенные производителем ограничения, чтобы получать полный доступ к файловой системе или устанавливать приложения в обход магазина – но уж точно не Гарри Поттер. Однако с появлением больших языковых моделей (LLM), выполняющих инструкции, таких как ChatGPT, у этого слова появилось новое значение.



Заинтригованы? Залетайте под кат.
Читать дальше →

Неожиданные находки с DCAP, или как мы разгребали свою файловую систему. Часть 1

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

В 2020 году мы выпустили свою DCAP — «СёрчИнформ FileAuditor» для контроля и защиты данных в покое. С тех пор сотни раз презентовали заказчикам, как система полезна «в быту» и помогает держать в порядке корпоративные хранилища. У клиентов собрали статистику: аудит, мол, в 99% случаев выявляет ошибки в распределении прав доступа, неправильное хранение конфиденциальных файлов и перерасход ресурсов. Но прежде всего мы тестируем продукты на себе. Сегодня решили поделиться несколькими кейсами о том, как проверяли собственные файловые хранилища, и показать, что цифра — не преувеличение.

Наш начИБ Алексей Дрозд (aka@labyrinth) рассказывает, как мы поставили эксперимент на себе и что обнаружили.

Читать далее

Начальная дипфейкология: как сделать, как распознать (испытано на себе)

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

Вокруг темы дипфейков множество слухов и домыслов. Мы сами стараемся не попасть впросак, когда комментируем для журналистов эту тему. Например. Можно ли подделать голос в телефонном разговоре, то есть налету? (пока нет) Увеличивается ли число мошенничеств с дипфейками? (Достаточной статистики нет, если неаккуратно оценивать ситуацию, можно тысячи процентов насчитать, всё ж пока исчисляется «от плинтуса»). Можно ли создать дипфейк дендрофекальным способом, работая только с тем, что есть в открытом доступе?

А вот тут надо проверять, потому что однозначного ответа без дополнительных «но» нет. В качестве начальных условий поставил такие: можно ли сделать качественный дипфейк (видео и аудио), не особо вникая в вопрос? Результаты под катом.

А еще бонусом, на основе полученных результатов, – разобрал ролик под названием «10 лучших Дипфейк видео». На их примере предлагаю и вам поупражняться в поиске признаков подделки.

Читать далее

Как работает ChatGPT: объясняем на простом русском эволюцию языковых моделей с T9 до чуда

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

В последнее время нам почти каждый день рассказывают в новостях, какие очередные вершины покорили языковые нейросетки, и почему они уже через месяц совершенно точно оставят лично вас без работы. При этом мало кто понимает — а как вообще нейросети вроде ChatGPT работают внутри? Так вот, устраивайтесь поудобнее: в этой статье мы наконец объясним всё так, чтобы понял даже шестилетний гуманитарий!

Погнали →

Логировали, логировали, да вылогировали. Почему мы сменили EBK на Loki

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

Привет, с вами команда разработки dBrain.cloud! Хотим поделиться историей миграции с Elasticsearch Beats Kibana (EBK) на Grafana Loki. Предпосылок перехода было немало: замена EBK лицензии Apache 2.0 на ограниченную SSPL 1.0, растущее потребление ресурсов, объемы требуемого места в хранилище и др. Сегодня покажем, как из грамотно подобранных и поселенных под одной крышей продуктов получилось собрать единый стек логирования и мониторинга.

EBK vs Loki

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

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

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

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

Некоторые из подобных игр заканчиваются тем, что в отдельных сегментах не остается нормальных продуктов. Например, рынок недорогих SD-карт угроблен полностью – купить полноценную недорогую карту на AliExpress от местного китайского бренда емкостью 128 ГБ или более уже нельзя, поскольку в продаже присутствуют лишь фейки.

Если интересны детали – добро пожаловать под кат.

Читать далее

(Не)безопасная разработка, часть 2: заимствование метаданных популярных пакетов для подделки рейтинга Python-проектов

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

Недавно мы опубликовали статью о выявлении вредоносных пакетов в Python Package Index и с тех пор активно используем разработанный нами сервис для анализа проектов. Сегодня хотим поделиться с вами интересным наблюдением, связанным с накруткой репутационной статистики в проектах. Как нечаянно улучшить репутацию своего проекта, насколько распространена эта проблема и как в автоматическом режиме обнаружить подобные манипуляции — читайте под катом.

Подробнее

HTML и CSS ошибки, влияющие на доступность. Мой опыт и моего незрячего знакомого Ильи

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

Многие разработчики думают, что доступность реализуется только с помощью aria-атрибутов. Если их не добавить, то всё, доступности нет. Конечно, aria-атрибуты нужны, но HTML и CSS такая же важная часть процесса создания доступных интерфейсов. Эти технологии непросто несут в себе кучу скрытых моментов, влияющих на доступность. Они напрямую позволяют её улучшить. В статье хочу показать это.


Я затрону не все аспекты. Их очень много, поэтому поговорю о: интерактивных элементах, доступности текста, анимации и изображениях. В статье буду использовать опыт моего незрячего знакомого (привет, Илья). Он внёс бесценный вклад. Уверен, что вам будет интересно. Поехали!

Читать дальше →

2 года, 7 попыток, 0 распознанных бордюров: как мы учились детектить ДТП в реалтайм без датасета

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

Привет, Хабр! Это команда дата-сайентистов Magnus Tech. В этом посте мы расскажем, как работали над одним общественно полезным проектом — алгоритмом, который распознает ДТП по видео с дорожных камер. Кейс будет интересен широкому кругу разработчиков, которые занимаются технологиями машинного зрения и обучения. В нем — наш долгий путь из множества попыток сделать точный алгоритм, несмотря на его настойчивые попытки быть неточным.

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

Читать далее

Откровения хэдхантеров. Как изменился рынок труда в IT за три года

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

Растущие зарплаты, рекордно низкая безработица — в структуре занятости происходят тектонические сдвиги. Чтобы приводить в команду новых крутых разрабов, мы просто обязаны подмечать тенденции, анализировать рынок труда и выделять большие тренды.

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

Читать далее

Как не давать пустых обещаний себе, команде и заказчику

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

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

14 лет я работал в международной компании Airbus – компании, занимающейся авиастроением. В IT же мой путь начался совсем недавно – всего лишь чуть больше года назад.

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

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

Читать далее

Остаться в живых. Токсичность в ИТ глазами девушки-лида

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

Каждый из нас хоть раз сталкивался с токсичными людьми. Но одно дело, когда ты встречаешь их на улице, другое — когда ты в токсичном коллективе каждый рабочий день. Как обстоят дела в ИТ? Может, мы и правда «поколение снежинок»? Присутствует ли нездоровое общение в наших кругах? Давайте разбираться в статье.

В ИТ я 15 лет. Не буду зудеть: «В нашей молодости было по-другому», да и не было. Понятие токсичности распространилось широко где-то в 2018-м, но, например, резкие высказывания на ревью были всегда. Другое дело, что многое зависит от нашего восприятия.

Приведу несколько историй, которые в моём понимании чётко ложатся под определение токсичности. А потом постараемся сделать выводы по каждой из них.

Читать далее