Как стать автором
Обновить
2
0

Sysadmin/DevOps

Отправить сообщение

Челлендж по обработке миллиарда строк на Go: от 1 минуты 45 секунд до 4 секунд

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

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

Я немного опоздал, соревнования проводились в январе. И на Java. Меня не особо интересует Java, зато давно интересует оптимизация кода на Go.

Этот челлендж был очень прост: обработать текстовый файл названий метеорологических станций и температур, и для каждой станции вывести минимальное, среднее и максимальное значение. Чтобы упростить задачу, было ещё несколько ограничений, однако я проигнорировал те, что относятся только к Java.

Читать далее
Всего голосов 50: ↑48 и ↓2+62
Комментарии20

Основы тайм-менеджмента: как эффективно распоряжаться своим временем

Время на прочтение6 мин
Количество просмотров33K

Многим из нас хочется больше времени проводить с семьей, чаще встречаться с друзьями, ходить в спортзал два-три раза в неделю, уделять время развитию, а ещё — заниматься любимым хобби. Но в будни обычно времени хватает на одну-две сферы, и для многих в ИТ работа занимает значительную часть дня. В выходные же на что-то активное часто нет сил.

Как соблюдать баланс между работой и личной жизнью? Как научиться эффективно управлять временем и успевать больше? Как перестать тратить ценное свободное время впустую и сконцентрироваться на важном? На все эти вопросы мы искали ответы в рамках 10-дневного марафона по принципам тайм-менеджмента для сотрудников МойОфис. И с удовольствием сейчас поделимся с вами опытом.

Читать далее
Всего голосов 33: ↑29 и ↓4+30
Комментарии29

Когнитивное выпрямление: сеанс иллюзий с полным разоблачением

Время на прочтение8 мин
Количество просмотров30K


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

Обычно искажению предшествуют переизбыток информации, сложность понимания, необходимость быстрого реагирования или ограничения нашей памяти. Но наиболее частой причиной являются особенности человеческого мышления. Один из самых интересных видов ошибок — оптические иллюзии. Сегодня поговорим именно об этом, поскольку визуальные иллюзии лучше всего демонстрируют способы создания мозгом внутри себя ощущение реальности. Изучая эти механизмы, мы лучше пониманием, как сделать неотличимый от физического виртуальный мир.
Всего голосов 72: ↑70 и ↓2+68
Комментарии36

Эффективная работа с битами при помощи Go

Уровень сложностиСложный
Время на прочтение12 мин
Количество просмотров14K

Это статья познакомит вас с использованием возможностей Go для выполнения манипуляций с битами. Здесь мы разберём установку, очистку, инвертирование, сдвиг битов, использование техники SWAR, эффективную обработку Юникода и прочие приёмы, позволяющие повысить продуктивность программирования.
Читать дальше →
Всего голосов 35: ↑31 и ↓4+39
Комментарии8

Внутреннее устройство DRBD: алгоритмы работы отказоустойчивого хранилища

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров7.3K

DRBD


Глубокое понимание внутреннего устройства DRBD позволяет более тонко настраивать работу системы и правильно планировать ресурсы. К счастью, у команды DRBD уже есть отличная документация, которая довольно подробно разбирает эту тему. Мы опирались на нее в своей работе, и решили перевести и выложить в открытом доступе 17-ю главу — как удобную шпаргалку по внутреннему устройству DRBD. Так что это не обычная статья, а перевод части официальной документации (исходная нумерация разделов сохранена).


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

Читать дальше →
Всего голосов 19: ↑18 и ↓1+24
Комментарии1

Зачем рассказывать про контейнеризацию в 2023 году

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров23K
image
Техножрец DevOps бережно описывает документацию по проекту

Опытные специалисты с характерным оттенком глаз могут справедливо возмутиться, что это всё уже давным-давно разжёвано и вообще RTFM. И будут отчасти правы. Тем не менее приходят новые специалисты, которые не застали бесплатную рассылку дисков с Ubuntu и вдумчивую компиляцию ОС с нуля.

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

Те же процессы идут не только в среде потребителей технологий, но и среди инженеров. С одной стороны, узкая специализация совершенно нормальна, с другой — мы рискуем получить аналог культа Галактического Духа на Анакреоне из цикла романов «Основание» Азимова. Техножрецы выполняют сложные ритуалы, ядерные реакторы пайплайны работают. Ровно до тех пор, пока всё не сломается к чертям на низком уровне, а чинить будет некому.

Так происходит и с контейнеризацией. Я всё чаще встречаю на собеседованиях devops-инженеров, которые знают, как пользоваться Docker и Podman, пишут Dockerfile, но теряются, когда спрашиваешь про namespaces, и начинают плавать при вопросе: «А зачем, чем RPM хуже?» Все собирают контейнеры, и я собираю. Таков Путь. Не всегда, кстати, оптимальный.
Читать дальше →
Всего голосов 59: ↑59 и ↓0+59
Комментарии13

Выучить английский самостоятельно вполне реально, если вы айтишник. И вот почему

Время на прочтение5 мин
Количество просмотров53K

Я преподаю английский десять лет, но скажу честно: если вы разработчик, тестировщик, дизайнер – это значит, что вы сможете выучить английский сами. Конечно, нужны партнёры для общения, но ими могут быть ваши зарубежные клиенты или коллеги, интернет-знакомые, однокомандники в онлайн-играх. Но главное – получить необходимую базу – вы сможете самостоятельно, сидя дома за компьютером. И вот почему.

Читать далее
Всего голосов 29: ↑21 и ↓8+17
Комментарии95

Теория шардирования

Время на прочтение26 мин
Количество просмотров133K
Кажется, мы так глубоко погрузились в дебри highload-разработки, что просто не задумываемся о базовых проблемах. Взять, например, шардирование. Чего в нем разбираться, если в настройках базы данных можно написать условно shards = n, и все сделается само. Так-то, он так, но если, вернее когда, что-то пойдет не так, ресурсов начнет по-настоящему не хватать, хотелось бы понимать, в чем причина и как все починить.

Короче, если вы контрибьютили свою альтернативную реализацию хэширования в Cassandra, то вряд ли тут для вас найдутся откровения. Но если нагрузка на ваши сервисы уже прибывает, а системные знания за ней не поспевают, то милости просим. Великий и ужасный Андрей Аксёнов (shodan) в свойственной ему манере расскажет, что шардить плохо, не шардить — тоже плохо, и как это внутри устроено. А еще совершенно случайно одна из частей рассказа про шардинг вообще не совсем про шардинг, а черт знает про что — как объекты на шарды мапить.

Фотография котиков (хоть они случайно и оказались щеночками) уже как бы отвечает на вопрос, зачем это всё, но начнем последовательно.
Всего голосов 37: ↑37 и ↓0+37
Комментарии6

Как взломать Kubernetes (и как его защитить)

Время на прочтение8 мин
Количество просмотров4.2K

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

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

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

Читать далее
Всего голосов 10: ↑9 и ↓1+9
Комментарии0

Аномалии под нагрузкой в PostgreSQL: о чём стоит помнить и с чем надо бороться

Время на прочтение14 мин
Количество просмотров27K

В этой статье мы разберём несколько аномальных случаев высокой нагрузки в СУБД PostgreSQL. Что это такое? Обычно PostgreSQL хорошо показывает себя под нагрузкой и оправдывает ожидания в отношении производительности — она остаётся высокой. Но при определённых профилях нагрузки СУБД может вести себя не так, как мы ожидаем. Это и есть аномалии, на которых мы сосредоточимся в данной статье (для тех, кто предпочитает видео, эта информация доступна в виде записи доклада на HighLoad++).

Наша компания помогает обслуживать мультитерабайтные базы данных в крупных проектах, поэтому мой рассказ об аномалиях основан на реальном опыте промышленной эксплуатации СУБД в Postgres Professional — порой мы сталкиваемся с тем, что СУБД ведёт себя не так, как мы ожидали.

Также в рамках статьи мы рассмотрим следующее:

Читать далее
Всего голосов 67: ↑67 и ↓0+67
Комментарии14

Оболочка и терминал Unix — это одно и то же?

Время на прочтение18 мин
Количество просмотров21K

Сегодня любой уважающий себя разработчик не только программирует, но и так или иначе эксплуатирует свой код. А значит, с вероятностью 99,99% сталкивается с такой штукой, как «терминал». Хотя чаще это называют «консолью» или «командной строкой». 

А как же правильно? И почему эта штука местами такая странная? Без исследования древних машин, принципов общения с ними и легаси ПО тут никак не разобраться.

Осторожно: very long read!
Всего голосов 59: ↑58 и ↓1+74
Комментарии20

Несколько хостов FreeIPA за HTTP-proxy: настраиваем HAProxy 2+

Время на прочтение5 мин
Количество просмотров4.4K

Путь инженера в телекоме часто начинается со службы технической поддержки. Чтобы вырастить из новичков высококлассных специалистов, нужно дать им возможность работать над выходящими за рамки служебных обязанностей задачами. Мы стараемся помогать активным коллегам в развитии — это один из главных принципов HOSTKEY с момента основания компании. Публикуем заметку о реализации проксирования административной панели FreeIPA через HAProxy, написанную нашим инженером техподдержки Александром Тряпкиным.

(А здесь можно прочесть, как синхронизировать FreeIPA с Active Directory).

Читать далее
Всего голосов 3: ↑2 и ↓1+2
Комментарии0

7 сервисов для зарубежных покупок в 2024 году

Время на прочтение6 мин
Количество просмотров240K

Эта статья стала итогом моих экспериментов в 2022-ом. С начала года я искала сервисы, которые помогают выкупать товары в интернет-магазинах за рубежом и доставляют их в РФ. 

Прочитав кучу отзывов (спойлер: в основном плохих), я попробовала заказать товары через так называемые “Сервисы-посредники” или “Байер-сервисы”. В статье расскажу об опыте работы с 8 сервисами, с помощью которых можно привести товары в Россию.

Читать далее
Всего голосов 40: ↑37 и ↓3+43
Комментарии52

Простое развёртывание сетевой лабы на базе контейнеров

Время на прочтение7 мин
Количество просмотров12K

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

Тем не менее развернуть лабу из нескольких устройств с множеством сетевых интерфейсов и подключений, к примеру, для проверки BGP, в том числе между устройствами разных производителей, задача нетривиальная.  Можно, конечно, писать плейбуки Ansible для развертывания виртуалок на ESXi и последующей конфигурации устройств, но это само по себе достойная задача. Может быть что-то с vagrant изобразить…

Но недавно я узнал о проекте ContainerLab.dev и весьма впечатлился. Попробовал, оценил, впечатлился еще больше. Полез на Хабр почитать тонкости и хитрости, но, к удивлению, не нашел ни единого поста на эту тему.

Решил исправить. Вдруг кому-то еще облегчит жизнь.

А дальше?
Всего голосов 11: ↑11 и ↓0+11
Комментарии17

Среды запуска контейнеров (container runtime) часть 2: Анатомия низкоуровневых сред запуска

Время на прочтение6 мин
Количество просмотров4.5K

Это перевод статьи ссылка

Автор оригинальной  статьи: Ian Lewis.

Ссылка на первую часть

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

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

В первой части я рассказывал, на основе чего создаются контейнеры: это Linux namespaces и cgroup. Неймспейсы позволяют виртуализировать системные ресурсы такие как файловая система или сеть для каждого контейнера. С другой стороны есть cgroup, который контролирует и ограничивает системные ресурсы – CPU и память, разделяя их между контейнерами. По своей сути, низкоуровневые среды отвечают за настройку неймспейсов, разделения ресурсов между контейнерами, и выполнения команд внутри неймспейсов. У большинства сред существуют и другие особенности, но выше перечисленные являются основными функциями. Обязательно ознакомьтесь с крутым материалом Building a container from scratch in Go Liz Rice. Она очень классно объясняет, как реализованы Low-level среды. Лиз пошагово рассказывает про самые базовые вещи, которые должен выполнять container runtime, к ним относятся:

Читать далее
Всего голосов 3: ↑2 и ↓1+1
Комментарии0

Как айтишнику получить визу зарубеж на основании удаленной работы в 2022 году

Время на прочтение11 мин
Количество просмотров37K

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

Читать дальше →
Всего голосов 31: ↑29 и ↓2+35
Комментарии29

Инструкция для тех, кто решил что уже пора

Время на прочтение10 мин
Количество просмотров183K

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

Начнем с плохих новостей. Да, на свете есть страны, в которых обсуждается тема "Зайцы охренели до такой степени, что жрут корм, оставленный для птиц" и все ждут выступление президента по этому поводу, потому что это самая серьезная проблема в стране. Но если мысль понаехать туда у тебя появилась только на прошлой неделе — это значит ты не занимался подготовкой предыдущие два года и, сори, тебе нужно заниматься подготовкой следующие два года. Может показаться что два года — это слишком и "мне то нужно завтра, какие два года". Но тут история такая: к началу текущей спецоперации ты уже не успел. У тебя есть шанс успеть к началу следующей. Воспользуешься ты им или нет - зависит только от тебя.

Опять же, я понимаю, что кто-то закончил языковую школу и при выступлении британской королевы подмечает стилистические ошибки ее английского, а кто-то консультировал Оракл при разработке HashMap и для них переезд — это вопрос желания, а не возможности. Но я говорю о неком "среднестатистическом случае", когда инглиш не флюент, а за плечами нет 10 лет опыта в аду.

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

Читать далее
Всего голосов 154: ↑131 и ↓23+146
Комментарии440

Собеседование Golang разработчика (теоретические вопросы), Часть I

Время на прочтение14 мин
Количество просмотров134K

Как сейчас проходят собеседования на golang разработчика? Что спрашивают?

Читать далее
Всего голосов 43: ↑42 и ↓1+45
Комментарии23

Отдых при профилактике эмоционального (профессионального) выгорания

Время на прочтение4 мин
Количество просмотров11K

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

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

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии4

Как заставить Ansible работать быстрее – 8 советов по плейбукам

Время на прочтение6 мин
Количество просмотров17K

Ansible – это мощный и простой инструмент автоматизации с открытым кодом. Он помогает оптимизировать множество задач по эксплуатации ИТ-инфраструктуры, от самых простых, наподобие установки программных пакетов, до весьма сложных, вроде развертывания кластера с несколькими узлами или многоэтапного обновления операционной системы. Сегодня мы расскажем, как оптимизировать плейбуки и модули Ansible, чтобы создаваемые вами автоматизации работали быстрее.

Читать дальше: Как заставить Ansible...
Всего голосов 13: ↑12 и ↓1+13
Комментарии16

Информация

В рейтинге
4 242-й
Откуда
Москва, Москва и Московская обл., Россия
Дата рождения
Зарегистрирован
Активность