Pull to refresh

Technotext

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

Level of difficultyEasy
Reading time7 min
Views21K
image

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

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

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

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

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

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

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

Level of difficultyEasy
Reading time6 min
Views8.6K

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

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

Читать далее

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

Level of difficultyEasy
Reading time14 min
Views18K

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

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

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

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

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

Reading time16 min
Views28K

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

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

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

Reading time13 min
Views31K
Картинка kjpargeter, Gpointstudio, Freepik

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

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

Level of difficultyMedium
Reading time19 min
Views3.8K

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

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

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

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

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

Level of difficultyEasy
Reading time2 min
Views4.8K

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

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

Читать далее

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

Level of difficultyEasy
Reading time7 min
Views7.5K

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

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

Читать далее

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

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

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



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

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

Level of difficultyMedium
Reading time10 min
Views3.4K

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

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

Читать далее

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

Level of difficultyEasy
Reading time13 min
Views16K

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time30 min
Views500K

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

Погнали →

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

Level of difficultyMedium
Reading time6 min
Views13K

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

EBK vs Loki

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

Level of difficultyEasy
Reading time13 min
Views31K

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

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

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

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

Читать далее

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

Reading time9 min
Views1.9K

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

Подробнее

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

Level of difficultyMedium
Reading time7 min
Views11K

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


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

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

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

Level of difficultyMedium
Reading time10 min
Views7.3K

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

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

Читать далее

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

Reading time14 min
Views86K

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

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

Читать далее

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

Reading time10 min
Views16K

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

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

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

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

Читать далее

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

Level of difficultyEasy
Reading time6 min
Views66K

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

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

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

Читать далее