Pull to refresh
24
0
Send message

Как писать bash-скрипты надежно и безопасно: минимальный шаблон

Reading time8 min
Views66K

Скрипты на Bash. Как много в этом слове. Любому разработчику рано или поздно приходится их писать. Почти никто не скажет "да, я люблю писать bash-скрипты", и поэтому этой теме уделяют мало внимания.

Я не буду пытаться сделать из вас эксперта в Bash, а просто покажу минимальный шаблон, который поможет сделать ваши скрипты более надежными и безопасными.

Читать далее
Total votes 109: ↑109 and ↓0+109
Comments27

Как мы лажали, открывая очередное юрлицо — на этот раз в США

Reading time11 min
Views18K


Я тут открывал юрлицо в США и сделал всё по инструкции «как не облажаться», но облажался. Уже в новых местах, не предусмотренных инструкцией.

Главная инструкция вот тут, она написана не юристом, но сами юристы подтверждают, что получилась хорошая и на неё же ссылаются, когда нужно быстро ввести в курс дела новичка. Список того, где уже облажались русские участники УКомбината — вот.

Проект внезапно созрел и нужно было пустить инвесторов. Команда немного размазана по планете, поэтому всем было примерно всё равно, где регистрироваться. Есть вообще типовой стартаперский набор: Кипр, прибалты, США, Сингапур, Люксембург. Но не пофиг было российскому стратегу, одному из инвесторов, он хотел на родине. При этом американское корпоративное правило наиболее гибкое + накоплена большая база прецедентов, то есть оно ещё и предсказуемое. А в штате Делавер наиболее квалифицированный суд, и его решения — просто золотой стандарт отрасли. То есть если у вас есть иностранные инвесторы, стоит выбор между Европой, Кипром и США. Из Латвии и Эстонии тяжело выскакивать при росте компании (и за сладкий старт придётся платить условиями дальше), Кипр хорош, но венчурные инвесторы часто ассоциируют его с «русские что-то там мутят», поэтому Делавер.

Поскольку у нас ИТ-бизнес в России, и мы знаем правила ведения ИТ-бизнеса в России, план был такой:

  1. Уговаривать стратега на любую зарубежную юрисдикцию (а для них бы это был первый опыт инвестиций в зарубежный проект);
  2. Как только они дадут добро, за недельку зарегистрироваться, например в Делавере, и принять деньги.

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

Но нет. Переходим к мякотке.
Читать дальше →
Total votes 83: ↑81 and ↓2+79
Comments11

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

Reading time9 min
Views4K

В декабре 2019-го в Dodo новые фичи  стали выкатываться неприлично долго. Когда у разработчиков спросили, что им мешает держать высокую скорость поставки фич, в топе ответов оказались жалобы на нестабильную работу тестовых стендов и медленную обработку тикетов. Команда SRE сильно удивилась — о некоторых проблемах знали, но не думали, что они настолько серьёзные. Кроме того, между разработчиками и SRE взаимоотношения были, мягко говоря, не очень хорошие.

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

Читать далее
Total votes 17: ↑16 and ↓1+15
Comments13

Измеряем DevOps, что такое DORA метрики

Reading time3 min
Views22K

Многие компании успешно внедрили практики DevOps в свой инженеринг. Мы в SHARE NOW сделали также. Команды в компании ответственны не только за разработку программ, но и за то как эти программы попадут в продакшен, и как они будут обслуживаться. You build it — you own it.

Остается вопрос — как узнать что мы на правильном пути? Как измерить DevOps? Здесь нам и помогут DORA метрики.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments2

За двумя зайцами погонишься — чеклист для HighLoad системы гуглить будешь

Reading time11 min
Views14K

Эта статья будет полезна, если вы начинаете проект, который может перерасти в HL (HighLoad) или у вас уже есть проект, который имеет высокую нагрузку. Каждый пункт этого чек-листа поможет избежать определенных проблем, возникающих в процессе эксплуатации таких систем. И хотя некоторые пункты могут показаться довольно очевидными, а иные даже лишними, я рекомендую ознакомиться со всем списком, т.к. судя по статьям на хабре, периодически с некоторыми из этих проблем встречаются компании, которые уже обрели некоторую популярность. Дополняя систему каким то компонентом довольно просто забыть о таких вещах, как KeepAlive между двумя сервисами, а процессы изменения и дополнения в IT происходят постоянно.

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

Ознакомиться с чек-листом
Total votes 42: ↑42 and ↓0+42
Comments12

Как я изучал структуры данных и алгоритмы для собеседования в FAANG

Reading time12 min
Views61K
Продолжая тему устройства в FAANG, которую уже мы поднимали в нашем блоге, и специально к старту нового потока нашего курса по алгоритмам сегодня делюсь описанием пути Эско Обонга, старшего инженера-программиста Uber.

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


Приятного чтения!
Total votes 61: ↑55 and ↓6+49
Comments71

Планка найма для инженеров: что это за зверь?

Reading time19 min
Views28K
Последние пять лет Рекурсивный Кактус трудился фулстек-разработчиком в топовой технологической компании, но сейчас решил сменить работу.

За последние полгода Рекурсивный Кактус (так он представился при регистрации на нашем сайте) готовился к будущим собеседованиям, выделяя каждую неделю минимум 20-30 часов на упражнения LeetCode, учебники по алгоритмам и, конечно, практику интервью на нашей платформе для оценки своего прогресса.

Типичный рабочий день Рекурсивного Кактуса:


Время Занятие
6:30 – 7:00 Подъём
7:00 – 7:30 Медитация
7:30 – 9:30 Решение задач по алгоритмам
9:30 – 10:00 Путь на работу
10:00 – 18:30 Работа
18:30 – 19:00 Путь с работы
19:00 – 19:30 Общение с женой
19:30 – 20:00 Медитация
20:00 – 22:00 Решение задач по алгоритмам
Total votes 42: ↑40 and ↓2+38
Comments105

Как запускается сервер: UEFI

Reading time9 min
Views29K

Ранее мы уже разбирали последовательность запуска сервера на примере устаревшего Legacy. Настало время познакомиться с UEFI поближе.

Первая версия того, что сейчас известно как Unified Extensive Firmware Interface (UEFI), разрабатывалась в 90-е годы прошлого тысячелетия специально под системы на Intel® Itanium® и называлась Intel Boot Initiative, а позже — EFI.

Желание «обновить» процесс загрузки было ожидаемо. PC-BIOS, именуемый ныне Legacy, предлагает работать в 16-битном real mode, адресует всего 1 МБ оперативной памяти, а загрузчик вместе с таблицей разделов должен размещаться в первых 512 байтах накопителя. Более того, PC-BIOS передает управление первому найденному загрузчику без возможности возврата назад. При этом обработку случаев с несколькими операционными системами возлагают на плечи загрузчика.
Читать дальше →
Total votes 57: ↑57 and ↓0+57
Comments16

Руководство и шпаргалка по Wireshark

Reading time7 min
Views299K
Даже поверхностное знание программы Wireshark и её фильтров на порядок сэкономит время при устранении проблем сетевого или прикладного уровня. Wireshark полезен для многих задач в работе сетевого инженера, специалиста по безопасности или системного администратора. Вот несколько примеров использования:

Устранение неполадок сетевого подключения


  • Визуальное отображение потери пакетов
  • Анализ ретрансляции TCP
  • График по пакетам с большой задержкой ответа

Исследование сессий прикладного уровня (даже при шифровании с помощью SSL/TLS, см. ниже)


  • Полный просмотр HTTP-сессий, включая все заголовки и данные для запросов и ответов
  • Просмотр сеансов Telnet, просмотр паролей, введённых команд и ответов
  • Просмотр трафика SMTP и POP3, чтение писем
Читать дальше →
Total votes 34: ↑30 and ↓4+26
Comments5

Взлом Wi-Fi

Reading time7 min
Views329K

Взлом маршрутизаторов WPA/WPA2 Wi-Fi с помощью Airodump-ng и Aircrack-ng/Hashcat


Это краткое пошаговое руководство, которое демонстрирует способ взлома сетей Wi-Fi, защищённых слабыми паролями. Оно не исчерпывающее, но этой информации должно хватить, чтобы вы протестировали свою собственную сетевую безопасность или взломали кого-нибудь поблизости. Изложенная ниже атака полностью пассивна (только прослушивание, ничего не транслируется с вашего компьютера) и о ней невозможно узнать, если вы только реально не воспользуетесь паролем, который взломали. Необязательную активную атаку с деаутентификацией можно применить для ускорения разведывательного процесса. Она описана в конце статьи.
Читать дальше →
Total votes 77: ↑64 and ↓13+51
Comments51

Сети Docker изнутри: связь между контейнерами в Docker Swarm и Overlay-сети

Reading time5 min
Views61K

В предыдущей статье я рассказал, как Docker использует виртуальные интерфейсы Linux и bridge-интерфейсы, чтобы установить связь между контейнерами по bridge-сетям. В этот раз я расскажу, как Docker использует технологию vxlan, чтобы создавать overlay-сети, которые используются в swarm-кластерах, а также где можно посмотреть и проинспектировать эту конфигурацию. Также я расскажу, как различные типы сетей решают разные задачи связи для контейнеров, которые запущены в swarm-кластерах.


Я предполагаю, что читатели уже знают, как разворачивать swarm-кластеры и запускать сервисы в Docker Swarm. Также в конце статьи я приведу несколько ссылок на полезные ресурсы, с помощью которых можно будет изучить предмет в деталях и вникнуть в контекст обсуждаемых здесь тем. Опять же, буду ждать ваших мнений в комментариях.

Читать дальше →
Total votes 20: ↑20 and ↓0+20
Comments15

Bash-скрипты, часть 3: параметры и ключи командной строки

Reading time10 min
Views523K
Bash-скрипты: начало
Bash-скрипты, часть 2: циклы
Bash-скрипты, часть 3: параметры и ключи командной строки
Bash-скрипты, часть 4: ввод и вывод
Bash-скрипты, часть 5: сигналы, фоновые задачи, управление сценариями
Bash-скрипты, часть 6: функции и разработка библиотек
Bash-скрипты, часть 7: sed и обработка текстов
Bash-скрипты, часть 8: язык обработки данных awk
Bash-скрипты, часть 9: регулярные выражения
Bash-скрипты, часть 10: практические примеры
Bash-скрипты, часть 11: expect и автоматизация интерактивных утилит

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

image
Читать дальше →
Total votes 47: ↑41 and ↓6+35
Comments23

Как понять, что происходит на сервере

Reading time9 min
Views82K


Александр Крижановский ( krizhanovsky, NatSys Lab.)


По Сети уже давно бегает эта картинка, по крайней мере, я ее часто видел на Фейсбуке, и появилась идея рассказать про нее:


Читать дальше →
Total votes 98: ↑96 and ↓2+94
Comments20

Масштабируемая конфигурация nginx

Reading time12 min
Views34K
Игорь Сысоев

Игорь Сысоев ( isysoev )


Меня зовут Игорь Сысоев, я автор nginx и сооснователь одноименной компании.

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

Я буду говорить о масштабируемой конфигурации nginx, но это не о том, как обслужить с помощью nginx сотни тысяч одновременных соединений, потому что nginx для этого настраивать не надо. Нужно выставить адекватное число рабочих процессов или поставить его в режим «авто», поставить worker_connections в 100 000 соединений, после этого заниматься настройкой ядра — это гораздо более глобальная задача, чем просто настройка nginx. Поэтому я буду рассказывать о другой масштабируемости — о масштабируемости конфигурации nginx, т.е. о том, как обеспечить рост конфигурации от сотни строчек до нескольких тысяч и при этом тратить минимальное (желательно константное) время на сопровождение этой конфигурации.
Total votes 59: ↑57 and ↓2+55
Comments31

Поднимаем Owncloud с нуля с динамическим IP и Let's Encrypt. Тысяча слонов!*

Reading time16 min
Views92K


Давно хотел написать целостный туториал по поднятию Owncloud в условиях домашнего сервера или небольшой компании до 500 пользователей. Owncloud — это прекрасный open-source проект, который позволяет на собственной инфраструктуре поднять свой вариант сервера синхронизации. По возможностям очень похож на Dropbox, а в чем-то его и превосходит. Огромный плюс — отсутствие ограничений по объемам хранения, полный контроль над сервером. Минусы тоже очевидны: вам самим придется следить за всем этим безобразием и беспокоиться о надежности сервера, валяющегося на антресолях или в шкафу.

Совсем недавно мне подвернулась задача по развертыванию Owncloud в домашне-боевых условиях. Я честно отработал свои два литра кошерного русского имперского стаута и решил поделиться своим опытом, собрав все воедино. Итак, сегодня мы рассмотрим:

  1. Развертывание актуального LEMP-stack
  2. HTTPS. Let's Encrypt для Nginx с автоматическим обновлением сертификата
  3. Конфигурирование Nginx для Owncloud
  4. Кэширование php-apcu
  5. Подключение внешнего основного хранилища по NFS
Читать дальше →
Total votes 53: ↑47 and ↓6+41
Comments95

15 вещей, которые вы должны знать об Ansible

Reading time9 min
Views76K
Предлагаю читателям «Хабрахабра» перевод опубликованной на codeheaven.io статьи «15 Things You Should Know About Ansible» за авторством Marlon Bernardes.

В последнее время я много работал с Ansible и решил поделиться некоторыми вещами, которые выучил по пути. Ниже вы найдете список из 15 вещей, которые, как я думаю, вы должны знать об Ansible. Что-то пропустил? Просто оставьте комментарий и поделитесь вашими личными советами.
Читать дальше →
Total votes 56: ↑55 and ↓1+54
Comments11

Использование Open vSwitch с DPDK для передачи данных между виртуальными машинами с виртуализацией сетевых функций

Reading time7 min
Views12K
Пакет Data Plane Development Kit (DPDK) предоставляет высокопроизводительные библиотеки обработки пакетов и драйверы пользовательского пространства. Начиная с Open vSwitch (OVS) версии 2.4 мы имеем возможность использовать оптимизированный с помощью DPDK путь vHost в OVS. Поддержка DPDK была доступна OVS с версии 2.2.

Использование DPDK в OVS дает существенные преимущества с точки зрения производительности. Как и в других приложениях, использующих DPDK, резко повышается сетевая пропускная способность (количество передаваемых сетевых пакетов) при существенном снижении задержек. Кроме того, с помощью библиотек обработки пакетов DPDK была оптимизирована производительность некоторых наиболее важных сегментов OVS.

В этом документе мы рассмотрим настройку OVS с DPDK для использования между виртуальными машинами. Каждый порт будет подключен к отдельной виртуальной машине. Затем мы запустим простой тест пропускной способности iperf3 и сравним производительность с работой конфигурации OVS без DPDK, чтобы оценить, какие преимущества мы получаем в OVS с DPDK.
Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments3

350+ полезных ресурсов, книг и инструментов для работы с Docker

Reading time14 min
Views101K
Мы уже ни раз приводили полезные руководства и подборки источников для разработчиков. На этот раз мы решили продолжить тему контейнеров, которую мы затрагивали ранее, и рассказать о подборке тематических ресурсов на GitHub.

Читать дальше →
Total votes 34: ↑31 and ↓3+28
Comments8

Строим свое собственное отказоустойчивое облако на базе OpenNebula с Ceph, MariaDB Galera Cluster и OpenvSwitch

Reading time20 min
Views108K


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


Темы сами по себе очень интересные, так что даже если вас не интересует конечная цель, но интересует настройка какого-нибудь отдельного компонента. Милости прошу под кат.
Читать дальше →
Total votes 24: ↑23 and ↓1+22
Comments20
1
23 ...

Information

Rating
Does not participate
Location
Украина
Date of birth
Registered
Activity