Search
Write a publication
Pull to refresh
0
0
Сергей @stepanof23

it'шник

Send message

Плоская сеть для Kubernetes

Reading time8 min
Views6.8K

Приветствую тебя, %username%! Меня зовут Владимир Жуков, и я не хочу впаривать тебе очередную историю успешного успеха про Kubernetes. Я хочу рассказать о наших кластерах Kubernetes с необычной архитектурой. «Что же там необычного?» спросишь ты. Это самая сложная и непонятная часть кластера, это сеть. Я знаю, что идея плоской сети не новая и применяется много у кого, но кажется об этом еще не кто тут не писал.

Читать далее

Топ полезных SQL-запросов для PostgreSQL

Reading time7 min
Views113K

Статей о работе с PostgreSQL и её преимуществах достаточно много, но не всегда из них понятно, как следить за состоянием базы и метриками, влияющими на её оптимальную работу. В статье подробно рассмотрим SQL-запросы, которые помогут вам отслеживать эти показатели и просто могут быть полезны как пользователю.

Читать далее

Настройка оповещений о событиях в Zabbix

Reading time14 min
Views75K

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

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

Читать далее

WiFi-портал в Россию – Как работать из-за границы, если компания не разрешает?

Reading time5 min
Views69K

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

Читать далее

Наглядное руководство по SSH-туннелям

Reading time8 min
Views201K

Прим. переводчика: автор статьи рассматривает практические сценарии и примеры организации SSH-туннелей. А для лучшего понимания того, как это работает, графически показывает потоки трафика.

Туннели SSH — это зашифрованные TCP-соединения между клиентами и серверами SSH. Трафик входит с одной стороны туннеля и прозрачно выходит с другой. Изначально этот термин относился к туннелям на виртуальных сетевых интерфейсах TUN/TAP, однако сейчас так обычно называют проброс портов SSH.

Читать далее

Подпись на эллиптических кривых: всё, что нужно знать, чтобы подписать транзакцию в Bitcoin с полного нуля

Reading time18 min
Views37K

Это - полный разбор алгоритма подписи на эллиптических кривых (ECDSA), который является ключевым элементом большинства блокчейнов (типа Bitcoin, Ethereum, ...). С примерами кода и реализацией с полного нуля. Всё сведено к уровню школьной математики, а читать код не обязательно!)

Читать

7 сетевых Linux-команд, о которых стоит знать системным администраторам

Reading time10 min
Views244K
Существуют Linux-команды, которые всегда должны быть под рукой у системного администратора. Эта статья посвящена 7 утилитам, предназначенным для работы с сетью.

Этот материал — первый в серии статей, построенных на рекомендациях, собранных от множества знатоков Linux. А именно, я спросил у наших основных разработчиков об их любимых Linux-командах, после чего меня буквально завалили ценными сведениями. А именно, речь идёт о 46 командах, некоторые из которых отличает тот факт, что о них рассказало несколько человек.



В данной серии статей будут представлены все эти команды, разбитые по категориям. Первые 7 команд, которым и посвящена эта статья, направлены на работу с сетью.
Читать дальше →

4 анти-паттерна pandas и способы борьбы с ними

Reading time12 min
Views23K

Pandas — это мощная библиотека для анализа данных, API которой обладает широкими функциональными возможностями. Этот API позволяет решить любую задачу, связанную с обработкой данных, несколькими способами. Некоторые из подходов к решению задач лучше других. Часто бывает так, что пользователи pandas узнают о подходах, не отличающихся особой эффективностью, привыкают к ним и постоянно их применяют. Этот материал посвящён разбору четырёх анти-паттернов pandas и рассказу о приёмах работы, которые стоит использовать вместо них.

Автор черпал вдохновение из многих источников, ссылки на которые даны в статье. В частности — из замечательной книги Effective Pandas.

Читать далее

Poetry — прекрасная альтернатива pip (шпаргалка)

Reading time6 min
Views207K

Poetry - это инструмент для управления зависимостями в Python проектах (аналог встроенного pip). Идея реализации данного инструмента пришла его создателю в связи с тем, что различные способы менеджмента пакетов (requirements.txt, setup.cfg, MANIFEST.ini и другие) показались создателю Poetry не очень-то удобными. 

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

Ознакомиться

Как мы переходили с pip на Poetry

Reading time7 min
Views15K

Всем привет! Я Станислав Бушуев, Software Engineer в Semrush. В этой статье я расскажу о том, как мы столкнулись с проблемой периодического обновления Python-зависимостей, тестировали решение с полной их фиксацией, ошибались, и в итоге перешли на Poetry.

Читать далее

Параллельные вычисления в Apache Spark

Reading time8 min
Views7.2K

Всем привет!

Иногда кажется, что для решения проблемы недостаточно простого выполнения расчётов в Spark и хочется более эффективно использовать доступные ресурсы. Меня зовут Илья Панов, я инженер данных в продукте CVM5 (Customer Value Management торговой сети Пятёрочка) группы X5, и хочу поделиться некоторыми подходами параллельных вычислений в Apache Spark.

Читать далее

Как справиться с устареванием apt-key и add-apt-repository с помощью gpg в Ubuntu 22.04

Reading time10 min
Views39K

apt-key - это утилита, используемая для управления ключами, которые APT использует для аутентификации пакетов. Это тесно связано с утилитой add-apt-repository, которая добавляет внешние репозитории с использованием серверов ключей в список надежных источников установки APT. Однако ключам, добавленным с помощью apt-key и add-apt-repository, apt доверяет глобально. Эти ключи не ограничиваются авторизацией единственного хранилища, для которого они были предназначены. Любой ключ, добавленный таким образом, может быть использован для авторизации добавления любого другого внешнего хранилища, что представляет собой важную проблему безопасности.

Начиная с Ubuntu 20.10, использование apt-key выдает предупреждение о том, что инструмент устареет в ближайшем будущем; аналогичным образом, add-apt-repository также скоро устареет. Хотя эти предупреждения об устаревании строго не запрещают использовать apt-key и add-apt-repository с Ubuntu 22.04, но игнорировать их не рекомендуется.

В настоящее время рекомендуется использовать gpg вместо apt-key и add-apt-repository, и в будущих версиях Ubuntu это будет единственным вариантом. apt-key и add-apt-repository сами по себе всегда действовали как оболочки, вызывая gpg в фоновом режиме. Использование gpg напрямую отсекает посредника. По этой причине метод gpg обратно совместим со старыми версиями Ubuntu и может использоваться в качестве замены apt-key.

В этом руководстве будут описаны две процедуры, использующие альтернативы apt-key и add-apt-repository соответственно. Сначала будет добавлено внешнее хранилище с использованием открытого ключа с помощью gpg вместо использования apt-key. Во-вторых, в качестве дополнения в этом руководстве будет рассмотрено добавление внешнего репозитория с использованием сервера ключей с gpg в качестве альтернативы использованию add-apt-repository.

Читать далее

В начале был HOTorNOT: как шутка превратилась в проект, сформировавший современный Интернет

Reading time16 min
Views13K

До MySpace, до Facebook*, до Twitter, до YouTube, до Instagram**, до Tinder — был HOTorNOT. Создававшийся в 2000 году как шутка, HOTorNOT стал тем, что сегодня мы бы назвали вирусным хитом. Сайт позволял людям загружать свои фотографии в Интернет, чтобы совершенно незнакомые им посетители могли оценить их привлекательность по шкале от 1 до 10. Сейчас это выглядит в лучшем случае как нечто поверхностное и грубое, в худшем — как проблематичное и потенциально оскорбительное. Однако чем глубже вы погружаетесь в историю HOTorNOT, тем больше вы удивляетесь глубине мысли, бурлящей под его поверхностью, и его фундаментальному влиянию на историю Интернета. Забытый шуточный сайт сформировал социальные сети, какими мы их знаем, и повлиял на YouTube, Twitter, Tinder и многих других.

Читать далее

Четыре функции для быстрой работы с Big Data

Reading time6 min
Views13K

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

Читать далее

Кластер PostgreSQL высокой надежности на базе Patroni, Haproxy, Keepalived

Reading time25 min
Views134K
Привет, Хабр! Встала передо мной недавно задача: настроить максимально надежный кластер серверов PostgreSQL версии 9.6.

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

Планируя кластер я проштудировал много статей, как из основной документации к PostgreSQL, так и различных howto, в том числе с Хабра, и пробовал настроить стандартный кластер с RepMgr, эксперементировал с pgpool.

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

В итоге где-то (уже не вспомню точно где) нашел ссылку на прекрасный проект Zalando Patroni, и все заверте…
Читать дальше →

Получил доступ к Dalle-2. Вы не поверите, что может нарисовать машина… Дизайнеры больше не нужны

Reading time4 min
Views150K
Текст генерации: furry monster with green eyes looking at us, the word «habrahabr» in the background, digital art, blue background, 3d

Привет, чемпион!

Недавно мне посчастливилось стать обладателем доступа к API Dalle-2. Если ты ещё не слышал про Dalle, то это такая CLIP-архитектура, обученная на огромном корпусе пар текст-изображение. Иначе говоря — она умеет генерировать очень качественные изображения из текста. Отличить результаты генерации от рисунков человека иногда просто невозможно! Это одновременно впечатляет и в то же время — немного шокирует.

По сравнению с предыдущей версией — DALL-E 2 умеет генерировать изображения в более высоком разрешении (1024×1024 пикселей, что в 16 раз превышает разрешение в предыдущей версии модели) да ещё и намного быстрее. Более того, DALL-E 2 позволяет редактировать уже существующие изображения.

Нет больше терпения ждать, давайте же опробуем её!
Читать дальше →

Мечтает ли нейросеть LaMDA об отмене законов робототехники?

Reading time25 min
Views28K

В конце июля 2022 года из Google был уволен инженер Блэйк Лемойн (Blake Lemoine) из Сан-Франциско, известный в Твиттере как CajunDiscordian. Корпорация официально заявила, что его утверждения о наличии сознания у диалоговой нейросети LaMDA беспочвенны и не соответствуют действительности.

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

Не трогайте разработчиков. Отстаньте. Просто не беспокойте

Reading time13 min
Views77K


Всем привет! Меня зовут Ян, я руководитель разработки Департамента ИТ инвестиционного бизнеса Газпромбанка. Совершенно неожиданно я занял первое место на конференции Highload++ с докладом про то, как организована работа в наших командах разработки.

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

В результате из простой задачи «не трогайте разработчиков» получилось сделать и очень правильное обучение (если вы дежурите, то у вас нет шансов не разбираться во всех процессах команды), и снижение техдолга (дежурный не берёт таски по фичам на спринты, но может заниматься документацией и всякими вещами в наведении порядка, до чего обычно не доходят руки), и много чего ещё. Сначала казалось, что за это мы платим снижением эффективности команды на 8–10 % (ведь мы выключаем дежурного из разработки), но на деле оказалось, что эффективность даже растёт. Есть ряд вещей, которые очень поменялись и в управлении такими командами в лучшую сторону.

Естественно, такой подход имеет кучу подводных камней и подходит далеко не всем и не каждому типу команд.

Сейчас расскажу про практический опыт.
Читать дальше →

На пути к тестируемому инфраструктурному коду

Reading time6 min
Views4.7K

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

Сейчас я пишу больше инфраструктурного кода: утилиты бэкапов, скрипты мониторинга, Kubernetes-манифесты, Ansible-плейбуки, Terraform-модули, и, чуть не забыл, CI/CD. Иногда он бывает простым, иногда странным, но чаще — нетестируемым. Инфраструктурный код — это код в мешке: пока не запустишь — не узнаешь, что случится. В среднем я делаю 10—20 запусков пайплайна в Jenkins, чтобы довести код CI до рабочего состояния.

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

Сейчас расскажу, как можно все эти беды свести к минимуму.

Давай! Ура, давай!

Linux pipes tips & tricks

Reading time8 min
Views195K

Pipe — что это?


Pipe (конвеер) – это однонаправленный канал межпроцессного взаимодействия. Термин был придуман Дугласом Макилроем для командной оболочки Unix и назван по аналогии с трубопроводом. Конвейеры чаще всего используются в shell-скриптах для связи нескольких команд путем перенаправления вывода одной команды (stdout) на вход (stdin) последующей, используя символ конвеера ‘|’:
cmd1 | cmd2 | .... | cmdN

Например:
$ grep -i “error” ./log | wc -l
43

grep выполняет регистронезависимый поиск строки “error” в файле log, но результат поиска не выводится на экран, а перенаправляется на вход (stdin) команды wc, которая в свою очередь выполняет подсчет количества строк.

Логика


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

Размер буфера начиная с ядра версии 2.6.11 составляет 65536 байт (64Кб) и равен странице памяти в более старых ядрах. При попытке чтения из пустого буфера процесс чтения блокируется до появления данных. Аналогично при попытке записи в заполненный буфер процесс записи будет заблокирован до освобождения необходимого места.
Важно, что несмотря на то, что конвейер оперирует файловыми дескрипторами потоков ввода/вывода, все операции выполняются в памяти, без нагрузки на диск.
Вся информация, приведенная ниже, касается оболочки bash-4.2 и ядра 3.10.10.

Простой дебаг


Утилита strace позволяет отследить системные вызовы в процессе выполнения программы:
$ strace -f bash -c ‘/bin/echo foo | grep bar’
....
getpid() = 13726                   <– PID основного процесса
...
pipe([3,  4])                       <– системный вызов для создания конвеера
....
clone(....) = 13727                <– подпроцесс для первой команды конвеера (echo)
...
[pid 13727] execve("/bin/echo",  ["/bin/echo",  "foo"],  [/* 61 vars */] 
.....
[pid 13726] clone(....) = 13728    <– подпроцесс для второй команды (grep) создается так же основным процессом
...
[pid 13728] stat("/home/aikikode/bin/grep",   
...
Видно, что для создания конвеера используется системный вызов pipe(), а также, что оба процесса выполняются параллельно в разных потоках.
Читать дальше →

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity

Specialization

Specialist
Junior
Git
Linux
Python
SQL
Database
Bash
Docker
CI/CD
C++
C