Pull to refresh

Technotext

Как установить MikroTik CHR в облаке? Шпаргалка

Level of difficultyEasy
Reading time4 min
Views22K

MikroTik Cloud Hosted Router (CHR) — удобное решение для создания виртуальных маршрутизаторов в облаке. С помощью него можно эффективно управлять сетевым трафиком, регулировать безопасность и оптимизировать работу в облачной среде.

Меня зовут Кирилл, в этой статье я подробно расскажу про установку и настройку MikroTik CHR на примере облачной платформы. Если вам интересно погрузиться в технические аспекты его конфигурации, добро пожаловать под кат!
Читать дальше →

Записываем PNG без мам, пап и внешних библиотек

Reading time9 min
Views17K

Я решал очередную техническую задачу и столкнулся с проблемой: нужно сохранять изображения, а у меня нет сериализаторов и я не могу использовать готовые библиотеки. Ситуацию ухудшает, что из доступных форматов только PNG, JPEG и WebP. Выбор пал на PNG.

Формат изображения PNG известен с 1996 года, а на Хабре опубликовано несколько статей о декодировании этого формата. И ни одной — о кодировании. Я расскажу, как сохранить PNG своими руками на случай, если вам тоже придется это делать. Например, в академических целях.

Под катом вас ждет подробный разбор каждого байта на множестве иллюстраций.
Читать дальше →

AMD EPYC 4004 — продукт, на который Intel нечем ответить

Reading time3 min
Views29K

Несколько дней назад компания AMD представила линейку серверных процессоров AMD EPYC™ 4004. Это прямой конкурент Xeon® E-2400 — младшему решению «синих» в серверном сегменте, которое было представлено в декабре 2023 года.

Под катом — описание новинки и сравнение двух непоколебимых соперников. А еще — мой взгляд на применимость EPYC™ 4004 в дата-центрах Selectel.
Читать дальше →

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

Reading time31 min
Views9.9K

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

Неонки: высокое напряжение, тлеющий разряд и немного практической магии

Level of difficultyMedium
Reading time15 min
Views9.3K

Сегодня куда ни глянь — везде светодиоды. Из них делают гирлянды для елки, оформление рекламных щитов и панелей, очень (или не очень) мощные фонари, цифровые индикаторы для электронных часов или других электронных приборов, другие элементы освещения и сигнализации.

Однако не так давно, еще до эры широкого распространения светодиодов, все это создавалось с помощью различных газоразрядных ламп.

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

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

Читать далее

Атаки через новый OAuth flow, authorization code injection, и помогут ли HttpOnly, PKCE и BFF

Level of difficultyHard
Reading time36 min
Views5.3K

В статье детально рассмотрим интересный вектор атаки на приложения, использующие OAuth/OIDC, разберем, какие предусловия для этого нужны, и увидим, что они не так недостижимы, как может показаться на первый взгляд. Узнаем, что такое «прерывание OAuth flow» и как его применять, затронем использование паттерна Backend‑for‑Frontend и способы реализации PKCE для confidential clients, попутно проверив, помогают ли они защититься от рассматриваемой атаки. Взглянем и на другие существующие рекомендации и предлагаемые лучшие практики, а также подумаем над прочими мерами защиты, которые действительно могут помочь. Все это с примерами, схемами и даже видео.

Материал будет интересен как для занимающихся разработкой приложений, так и для представляющих атакующую сторону.

Читать далее

S3-совместимые хранилища: как собрать свой конструктор

Reading time11 min
Views6.7K

В одном из больших кластеров S3 в Точке хранится 110 терабайт полезных данных. Это не много по объёму, но он распределён среди 600+ миллионов файлов. Стоимость работы системы оценивается более чем в миллион рублей в месяц — это с учётом фактора репликации, бэкапов, основной системы хранения и резерва ресурсов. Это пятое место по стоимости среди всех сервисов.

Мы выбрали SeaweedFS, потому что это удобный конструктор, который позволяет загружать файлы любого размера, легко масштабироваться без деградации скорости доступа и надёжно защищать данные от потерь. В статье рассказываю, каким должно быть идеальное S3-хранилище для миллионов файлов, и почему нам не подошли Ceph и Minio.

Читать далее

Tail-calling: разбираемся в новом интерпретаторе в CPython

Level of difficultyMedium
Reading time6 min
Views3.1K

В последнее время в моём инфополе появилось много шума вокруг нового типа интерпретатора в Python: tail-calling. Я посмотрел PR на Github, из которого понял, что [[clang::musttail]] должен ускорить рантайм на 5%. 

Ещё я почитал Соболева, но понял только то, что эта инструкция генерирует вызов метода в asm-коде как jmp, а не call, то есть экономит один стэк-фрейм — посмотреть можно тут. Но почему эти инструкции в данном случае эквивалентны и сработают в CPython — непонятно. Так что давайте разбираться вместе!

Читать далее

День, когда Земля остановилась

Reading time7 min
Views7.3K

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

Кабели никто перерезать не собирался, но идея «выключить и включить» традиционно выглядела как «приключение на 20 минут». Именно так всё и случилось: кластер k8s не смог вернуться в рабочий режим, приложения не запускались, и причины тому крылись не внутри, а снаружи.

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

Читать далее

Почему долгосрочное планирование не работает в UI-разработке?

Level of difficultyMedium
Reading time7 min
Views864

Эта статья была написана для конкурса Технотекст-7 «Тот момент, когда происходит изменение». Тема адаптации UI к меняющимся деталям была выбрана, так как связана с темой конкурса.

Современная UI-разработка живет быстрыми темпами. Мы постоянно создаем и меняем код, чтобы соответствовать новым трендам, но часто это делается «на коленке» и без долгосрочного видения. В итоге уже через пару месяцев все, что казалось суперсовременным, превращается в легаси из-за смены моды фреймворков и других деталей реализации.

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

Читать далее

Гайд по overload: как написать один код на Python для разных бэкендов

Reading time11 min
Views3K

Разработчики часто сталкиваются с задачами, в которых одна функция должна работать с разными типами данных и количеством аргументов. Чтобы каждый раз не создавать множество функций с разными именами, существует перегрузка (overload). Она позволяет использовать одно имя операции для обработки различных комбинаций входных данных. Благодаря перегрузке одна функция может адаптироваться под различные сценарии и делать код лаконичным и понятным. 

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

Читать далее

Отстаньте от Константина и «Сатанатам правит бал»: топ-10 письменных ошибок, которые выставят вас идиотом

Level of difficultyEasy
Reading time5 min
Views10K

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

Дисклеймер: вместо правил великого-могучего — варианты, как быстро сориентироваться и не накосорезить. Если запомните хотя бы половину, то аж на 50% сократите свои шансы сделать идиотскую ошибку. Это уже успешный успех.

Проверить свои прогулы в пятом классе

Pairwise тестирование. Почему, зачем и как?

Level of difficultyEasy
Reading time9 min
Views3.5K

Всем привет! Попарное тестирование (pairwise testing) - одна из самых распространённых техник тест дизайна. Уверена, вы уже про неё читали в книгах, сертификациях, статьях…

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

Читать далее

Улучшаем автокомплит в смешанных Java-Kotlin проектах

Level of difficultyEasy
Reading time4 min
Views1.9K

Недавно я наткнулся на статью, где описывается, как можно убрать мешающие варианты из автокомплита в Android Studio. Но тот способ касается только классов — с методами у меня так же не получилось, и тогда мне пришла идея.

Что за идея?

Зачем я использую контейнеры как виртуалки: опыт python-разработчика

Reading time12 min
Views8.7K

Привет, я Денис, python-разработчик в Cloud.ru. Последние три года я работаю с продуктами на базе компонентов OpenStack — для этого нужны разнообразные навыки и знания способов администрирования и разработки в среде Linux. За это время я убедился — мне не хватает уже существующих способов отладки, доставки кода, подключения к prod- и dev-стендам. Поэтому решил придумать свой.

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

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

Создаём современные npm-пакеты и преодолеваем трудности совместимости ESM и CJS

Level of difficultyEasy
Reading time16 min
Views5.8K

Привет! Меня зовут Никита, и я тружусь в команде фронтенда платформы в Ozon. Платформа поставляет инструменты для создания и поддержки JS-проектов. В компании в настоящее время более 500 таких проектов. Мы прилагаем максимум усилий, чтобы разработчикам всех проектов было одинаково приятно работать с нашими инструментами.

Также мы предоставляем инструменты для создания JS-библиотек. И в этой статье я расскажу о том, как мы советуем создавать npm-пакеты. Отмечу, что это не касается UIKit-пакетов, — для них требуется довольно специфичный инструментарий, который заслуживает отдельной статьи.

Недавно у нас проходила актуализация инструментов, которая включала обновление версий Node, TypeScript и прочего. И мы обнаружили, что сейчас правильно упаковать библиотеку ой как нелегко, особенно с началом активной фазы по отказу от CommonJS. В идеале очень хочется иметь инструмент, который бы просто работал. В open-source есть парочка вариантов (unbuild, pkgroll, dnt), но выбрать подходящий мы пока не смогли. А написать свой — довольно трудоёмкая задача. В будущем мы обязательно обзаведёмся таким инструментом, а пока просто погрузились в тему и подготовили для наших разработчиков рекомендованные сетапы, которыми сейчас поделимся и с вами.

Читать далее

Курица не птица, техпис не инженер

Reading time10 min
Views4K

Привет, Хабр! Меня зовут Вячеслав Смирнов, я руковожу техническими писателями в Platform V Pangolin. Три года назад я пришел в продукт в качестве DBA, а спустя год организовал команду техписов и стал разрабатывать документацию.

Давным-давно команда Pangolin состояла из 15-20 человек. Документация по продукту была в зачаточном состоянии. Разработчики сами пилили фичи и сами же их описывали. Но потом Pangolin вырос, вышел на внешний рынок и нам стали нужны профессиональные технические писатели.

А мир техписов разнообразен: здесь есть и редакторы-корректоры, и технари, умеющие развернуть дистрибутив. Техписы без технического опыта не всегда готовы разбираться в сложном продукте. Но, как выяснилось на практике, и технарям, пришедшим в команду, не хватало погружения в тему СУБД, чтобы писать документацию. Попробовав разные варианты, мы нашли для себя такой выход: наши техписы обязательно проходят базовые курсы DBA, и мы берем в команду не только техписов, но и DBA, желающих писать доку.

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

Читать далее

(Не)кладбище тикетов: воскрешаем бэклог без шаманов и танцев с бубнами

Level of difficultyMedium
Reading time9 min
Views3.2K

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

Меня зовут Катя Орешкова, и я работаю над Mailion — корпоративной почтовой системой от компании МойОфис. Основное ядро продукта написано на Go, но в целом технологический стек включает множество языков и технологий: Go, Java, Python, PHP, C++, C# (бэкенд), а также JavaScript/TypeScript с React (фронтенд). Продукт состоит из десятков модулей, предоставляет сотни функций и поддерживает до миллиона пользователей, что требует глубокой проработки архитектуры, разработки и интерфейсов.

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

Читать далее

DaMAgeCard: как индустрия карт памяти SD воскресила DMA-атаки

Reading time24 min
Views9.6K

Размеры медиа-файлов кардинально растут, а вместе с ними растут и требования к скорости носителей. Копировать сотни гигабайт RAW-изображений с обычной, даже высокоскоростной SD-карты стандарта UHS-II стало слишком долго. И вот жалобы фотографов на то, что кофе успевает остыть, пока все данные будут скопированы с карты, дошли до председателей SD Association и CompactFlash Association, и те приняли решительные меры: выпустили стандарт SD ExpressCFexpress).

Наша команда (Positive Labs) занимается исследованием безопасности программно-аппаратных систем и системного ПО. Поэтому мы внимательно наблюдали за развитием событий еще с 2018 года — с момента публикации стандарта, который обещал огромный прирост скорости за счет подключения карты к шине PCIe. Но мы следили не только за бенчмарками скорости, хотя она, конечно, внушительная. Наличие PCIe потенциально опасно из-за возможности доступа к памяти устройства, а это очень интересный вектор атак.Вот только до недавнего времени производители контроллеров и пользовательских устройств не спешили с поддержкой стандарта SD Express. Мы уже даже было обрадовались, что они научились на своих ошибках, и теперь не хотят давать внешним устройствам доступ к памяти (спойлер: нет). А пока расскажем, почему уделяем столько внимания почтенной шине PCI.

Читать далее

Хотите присоединить Windows к домену ALD Pro (FreeIPA)? Спросите меня как

Level of difficultyEasy
Reading time26 min
Views21K

Конечная цель проектов импортозамещения в ИТ — полный отказ от операционной системы Windows. Но, как говорится, гладко было на бумаге, да забыли про овраги. Может так оказаться, что быстро заменить какие-то клиентские корпоративные приложения, написанные под эту операционную систему, не получится. В этом случае вам может пригодиться возможность присоединения Windows-компьютеров к домену ALD Pro.

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

Материал будет полезен даже в том случае, если в вашей инфраструктуре пока еще используется «ванильная» система FreeIPA.

Читать далее