Pull to refresh
84
-2
Tаrampаmрam @paramtamtam

Шкодю по ночам

Send message

Как сделать простой UPS для NAS

Level of difficultyMedium
Reading time11 min
Views22K

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

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

Всё ещё хочешь собрать UPS?
Total votes 82: ↑81 and ↓1+80
Comments89

Архитектура SSH. Узел-бастион и принцип нулевого доверия

Level of difficultyMedium
Reading time5 min
Views14K

В инфраструктуре организации есть такое понятие, как узел-бастион — специальный компьютер в сети, обычно на внешней стороне демилитаризованной зоны (ДМЗ) организации. Узел назван по военной терминологии. Если кто видел средневековые крепости, там есть специфические выступы — бастионы, как на КДПВ.

То же самое в компьютерных сетях. Например, перед защищённой компьютерной сетью ставится специальный сервер, через который пробрасывается SSH-туннель в свою частную сеть. Данный «бастион» организуется в соответствии с концепцией нулевого доверия, которая предполагает абсолютное недоверие ко всем объектам и пользователям как снаружи организации, так и внутри неё.
Читать дальше →
Total votes 40: ↑40 and ↓0+40
Comments1

Как сайты определяют ботов? Деобфускация Akamai Bot Manager 2.0

Level of difficultyMedium
Reading time47 min
Views21K

Akamai Technologies - американская компания, занимающаяся защитой веб-ресурсов от ботов с помощью своего продукта Bot Manager. В её портфолио числятся такие гиганты ритейла, как Nike, Adidas и Asos, для которых особенно важен контроль за ботами, автоматизирующими процесс выкупа редких/лимитированных товаров с целью их перепродажи по завышенной цене. В данной статье мы взглянем на скрипт антибота Akamai и рассмотрим, какие методы обнаружения через JavaScript в нём используются. Не знаете почему обнаруживается ваш selenium? Добро пожаловать!

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

HabraTab — девайс для хаброзависимых

Reading time9 min
Views14K

Что-то часто стал заглядывать в профиль после каждой новой публикации. Так вот я и решил сделать табло, которое стояло бы на столе, и показывало место в рейтинге, карму, ну и само значение очков рейтинга.

Что же получилось?
Total votes 145: ↑143 and ↓2+141
Comments53

Трейсинг в Go — это просто

Reading time13 min
Views17K

В эпоху быстрорастущих приложений важно иметь возможность контролировать состояние системы в любой момент времени. Одними из требований для достижения этого являются логи и метрики, которые помогают нам следить за многими параметрами, такими как количество запросов в секунду (RPS), потребление памяти, cache git и т.д. Однако, есть ещё один полезный инструмент - трейсинг. В этой статье мы ознакомимся со стандартом OpenTelemetry в языке Go и инструментом Jaeger

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments13

Mysql PARTITION BY YEAR(date) / MONTH(date) / DAYOFWEEK(date)

Reading time4 min
Views33K
Зачастую мне приходится иметь дело с таблицами которые содержат редко или даже никогда ни обновляемые данные. Хорошим примером таких данных являются различные логи. Некоторые таблицы регулярно очищаются от устаревших данных, а в некоторых приходится хранить записи «вечно». Поэтому такие таблицы «пухнут» и работа с ними становится тяжелой операцией для всей системы.

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

Что-то подсказывает что резать придется по полю timestamp.
Читать дальше →
Total votes 28: ↑27 and ↓1+26
Comments18

Библиотека алгоритмов на графах на языке Go. Часть 1

Reading time5 min
Views8.6K

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

Читать далее
Total votes 9: ↑7 and ↓2+5
Comments10

Защищённые прокси — практичная альтернатива VPN

Reading time9 min
Views75K

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

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

В этой статье расказано о преимуществах защищённого прокси перед VPN и предложены различные реализации, готовые к использованию.
Читать дальше →
Total votes 29: ↑28 and ↓1+27
Comments52

Пишем сервис на GO. Runtime контроллер и Graceful Shutdown

Reading time20 min
Views25K


Напишем вместе HTTP-сервис на golang с нуля? Я уверен, что это довольно несложно. Для тех, кто каждую неделю этим занимается, моя статья не будет особенно интересна, но я все равно рекомендую взглянуть и оценить, возможно, ваши комментарии спасут кому-то жизнь. А может кое-какие из моих рассуждений спасут вашу.


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


Это первая часть. Первые шаги в нашем нелегком пути. И в этой статье мы попробуем достичь следующих целей:


  • Выработаем понимание структуры и жизненного цикла приложения.
  • Формализуем наше представление жизненного цикла на языке go.
Читать дальше →
Total votes 17: ↑15 and ↓2+13
Comments19

Go и плагины

Reading time33 min
Views10K

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

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

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

Что нужно знать, чтобы быть синьором?

Reading time11 min
Views89K

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

Ну-ка, ну-ка...
Total votes 190: ↑172 and ↓18+154
Comments258

SOHO UPS в маленьком корпусе и своими руками. Менее чем за 1500 руб

Reading time6 min
Views58K

Хотите обеспечить бесперебойное питание своим устройствам, но при этом не сильно потратиться? Именно такой своей разработкой я и хотел с вами поделиться.

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

А что если сделать такой источник бесперебойного питания, который можно поставить прямо рядом с защищаемым устройством – лёгкое, компактное, недорогое?
Читать дальше →
Total votes 121: ↑119 and ↓2+117
Comments172

Мир должен знать, как я генерировал mock-объекты

Reading time5 min
Views6.4K

Поставил Linux? Напиши об этом статью. Нашел на Github интересный проект? Напиши об этом статью. Примерная такая логика привела к написанию этой статьи.

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

Если вам интересно, как была решена поставленная задача, прошу под кат.

Читать далее
Total votes 7: ↑5 and ↓2+3
Comments10

Чек-лист: что нужно было делать до того, как запускать микросервисы в prod

Reading time9 min
Views50K

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


К сожалению, некоторые невысокие программисты всерьёз полагают, что Dockerfile с какой-нибудь вообще любой командой внутри — это уже сам по себе микросервис и его можно деплоить хоть сейчас. Докеры крутятся, лавешка мутится. Такой подход оборачивается проблемами начиная с падения производительности, невозможностью отладки и отказами обслуживания и заканчивая кошмарным сном под названием Data Inconsistency.


Если вы ощущаете, что пришло время запустить ещё одну аппку в Kubernetes/ECS/whatever, то мне есть чем вам возразить.


English version is also available.

Читать дальше →
Total votes 138: ↑135 and ↓3+132
Comments71

Go: детектор утечек горутин (Goroutine Leak Detector)

Reading time3 min
Views7.6K

Утечку горутин можно легко обнаружить с помощью APM, который отслеживает количество работающих горутин. Вот пример из NewRelic — график, который мониторит горутины:

Читать далее
Total votes 11: ↑8 and ↓3+5
Comments0

Использование быстрых клавиш в командной строке Linux (BASH)

Reading time14 min
Views90K

Эта статья посвящена наиболее часто используемым комбинациям клавиш при работе в командной строке Linux (в основном в командном интерпретаторе bash).

Она точно будет полезна начинающим своё знакомство с Linux и, уверен, пригодится тем, кто уже имеет опыт (не всегда годы практики учат работать быстрее).

Никогда не развивал навыка быстрой печати, но знание не одного десятка hotkey'ев, перечисленных в этом материале, позволяет набирать команды со скоростью мысли.

Я попытался продемонстрировать многие примеры при помощи анимированных gif'ок – иногда несколько кадров больше скажут, чем несколько абзацев текста.

Читать далее
Total votes 143: ↑142 and ↓1+141
Comments64

Ограничение скорости обработки запросов, или как не устроить DDoS-атаку на своего клиента

Reading time10 min
Views31K

Иногда при разработке highload-продукта возникает ситуация, когда надо обработать не максимально большое количество запросов, а наоборот — ограничить количество запросов в единицу времени. В нашем случае это количество отправляемых push-уведомлений конечным пользователям. Подробнее об алгоритмах rate limiting, их плюсах и минусах — под катом.


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

Линтеры в Go. Как их готовить. Денис Исаев

Reading time16 min
Views37K

Предлагаю ознакомиться с расшифровкой доклада Дениса Исаева jirfag "Линтеры в Go. Как их готовить."


В go 50+ линтеров: в чем их профит и как эффективно встроить их в процесс разработки? Доклад будет полезен как тем, кто еще не использует линтеры, так и тем, кто уже применяет их: я раскрою малоизвестные трюки и практики работы с линтерами.



Кому интересно, прошу под кат.

Total votes 19: ↑18 and ↓1+17
Comments4

Information

Rating
Does not participate
Date of birth
Registered
Activity

Specialization

Backend Developer, DevOps
Lead
Git
Docker
Golang
Linux
RabbitMQ
PostgreSQL