Pull to refresh
138
0
Владимир Губарьков @xonix

CTO

Send message

Простой SMS-шлюз на Raspberry Pi

Reading time9 min
Views21K
Иногда случается так, что надо отправлять откуда-нибудь SMS-сообщения. При этом неважно — откуда именно. Речь может идти о домашней системе, объединяющей кучу устройств (эти системы называют «homelab»), из которой надо отправлять уведомления. Это может быть система сигнализации, информирующая своего владельца о разных событиях, требующих его внимания. Возможно это — программный комплекс, которому нужно подтверждать правильность телефонных номеров, вводимых его пользователями. Во всех этих случаях, да и во многих других, SMS-сообщения были и остаются наилучшим способом передачи неких уведомлений по инициативе отправителя.

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

Очевидное решение всех этих проблем заключается в поддержке собственного SMS-шлюза.

Результат этого проекта: устройство, поддерживающее полнофункциональный REST API, способное отправлять и получать сообщения

Как, с минимальными затратами, самостоятельно сделать такой шлюз?
Читать дальше →
Total votes 52: ↑48 and ↓4+44
Comments36

Очередная история о борьбе с выгоранием

Reading time10 min
Views11K

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

Читать далее
Total votes 16: ↑12 and ↓4+8
Comments26

Язык конфигураций Dhall как еще один способ написания манифестов для Kubernetes

Reading time9 min
Views6.2K

Dhall — программируемый язык для создания конфигурационных файлов различного назначения. Это Open Source-проект, первый публичный релиз которого состоялся в 2018 году.

Как и всякий новый язык для генерации конфигурационных файлов, Dhall призван решить проблему ограниченной функциональности YAML, JSON, TOML, XML и других форматов конфигурации, но при этом оставаться достаточно простым. Язык распространяется всё шире. В 2020-м году представили его bindings, сделанные специально для Kubernetes.

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

Квантовая теория. Вселенная из волн вероятностей

Reading time24 min
Views77K
Квантовая теория является одной из самых точных моделей, описывающих окружающий нас мир, а технические решения, разработанные благодаря применению аппарата квантовой механики, прочно вошли в повседневную жизнь современного общества. И тем удивительнее, что понимание даже базовых концепций этой сферы знаний вступает в серьезные противоречия с интуицией, не только людей далеких от науки, но и самих исследователей, подтверждением чему является большое количество различных интерпретаций. В этой статье, предлагаю рассмотреть основные понятия квантовой теории с показавшейся автору наиболее интуитивно-понятной точки зрения, несколько модифицированной теории вероятностей.

image Что будет, если по аналогии с двущелевым опытом, все пространство на пути частицы до экрана будет заполнено щелями?
Читать дальше →
Total votes 74: ↑71 and ↓3+68
Comments153

Шесть советов об использовании PostgreSQL в функциональных тестах

Reading time5 min
Views16K

В 2018-м году, работая в Akvelon Inc., я собеседовал одного человека. Перед интервью мне дали на проверку его тестовое задание: небольшое web-приложение по типу записной книжки или todo-списка – React\TypeScript, C# на бэке и MS SQL Server в качестве персистентного хранилища. Приложение было модное: с обилием unit-тестов на mock’ах, упакованное в docker-образ – видно, что человек старался. И у этого решения был всего один недостаток – оно не работало. Совсем. Падало при попытке сохранить новую строку в базу данных.



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


Первая из них – ложная уверенность от модульных тестов. Даже 100% покрытие кода тестами не гарантирует, что в нём нет ошибок.


И вторая – отсутствие функциональных тестов. Если ваше приложение работает с СУБД, то вы обязательно должны покрыть эту часть кода реальными тестами с реальной базой данных. И здесь есть очень важное условие: проверять нужно именно на той версии СУБД, которая работает у вас в production’е. Думаю, очень многие разработчики под Oracle, прогоняющие свои тесты на H2\HSQLDB, сталкивались с ситуацией, когда тесты проходят, а production не работает (boolean, group by и другие чудеса).


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

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

Энтузиаст протестировал новые китайские процессоры Loongson 3A5000

Reading time6 min
Views22K

Loongson 3A5000


Энтузиаст состоит в различных чатах в Telegram и как-то недавно наткнулся на канал по процессорам Loongson и ему удалось провести различные тесты данного процессора.

Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments37

Часто забываемые правила безопасности Docker: заметки энтузиаста ИБ

Reading time7 min
Views14K

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

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

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

Генерация изображений с помощью echo/printf в 5 строчках кода без библиотек и заголовков

Reading time2 min
Views9K
tl;dr: форматы файлов Netpbm позволяют легко выводить пиксели, используя только текстовый ввод-вывод.



Вот весь генерирующий это изображение скрипт bash без зависимостей:

#!/bin/bash
exec > my_image.ppm    # Все инструкции echo будут писать в этот файл
echo "P3 250 250 255"  # формат, ширина, высота, максимальное значение цвета
for ((y=0; y<250; y++)) {
  for ((x=0; x<250; x++)) {
    echo "$((x^y)) $((x^y)) $((x|y))" # r, g, b
  }
}
Читать дальше →
Total votes 40: ↑39 and ↓1+38
Comments8

Автогенерация кода и стейта для существующих ресурсов в Terraform. Terraformer

Reading time6 min
Views5K

Terraformer — консольный инструмент для генерации кода и стейта в форматах HCL и json для уже существующей инфраструктуры.

Читать далее
Total votes 13: ↑12 and ↓1+11
Comments8

Выгорание — норма? Часть 3. Моя история выгораний и обучения в процессе

Reading time11 min
Views17K

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

Ссылки на предыдущие статьи: 

Выгорание — норма? Часть 1. (Вводная)

Выгорание — норма? Часть 2. Подробно про фазы и «Что делать?»

Напоминаю, что выгорание — это часть реакции на стресс; состояние, в которое приводит продолжительный стресс средней и даже малой интенсивности. Стресс либо незаметный, вытесненный за пределы внимания, либо мы его терпим по какой-то причине, но результат в итоге один: в мозге ломается реакция на раздражители, и система мотивации / поощрения. 

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

Но обо всём по порядку.

Читать далее
Total votes 28: ↑21 and ↓7+14
Comments27

Пишем Slack бота для Scrum покера на Go

Reading time30 min
Views5K

Здравствуйте! Сегодня мы напишем Slack Scrum покер бота на языке Go. Писать будем по возможности без фреймворков и внешних библиотек, так как наша цель – разобраться с языком программирования Go и проверить, насколько этот язык удобен для разработки подобных проектов. Прошу под кат!

Читать далее
Total votes 12: ↑10 and ↓2+8
Comments5

Всё, о чём должен знать разработчик Телеграм-ботов

Reading time15 min
Views603K

Вы вряд ли найдете в интернете что-то про разработку ботов, кроме документаций к библиотекам, историй "как я создал такого-то бота" и туториалов вроде "как создать бота, который будет говорить hello world". При этом многие неочевидные моменты просто нигде не описаны.

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

Подробный гайд о том, как работать с ботами — под катом.

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

Как жили до Kubernetes: сравниваем самый популярный оркестратор с другими решениями

Reading time24 min
Views43K


Kubernetes сейчас называют стандартом для оркестрации контейнеров. Он лежит в основе многих облачных платформ контейнеризации: например, мы давно развиваем наш Kubernetes aaS на платформе Mail.ru Cloud Solutions.


Однако Kubernetes далеко не первый подобный инструмент на рынке: некоторые из систем-предшественников продолжают активно использовать и вроде бы даже успешно.


Почему так происходит, несмотря на то, что Kubernetes, можно сказать, одержал победу в своем классе и мы видим много примеров, когда он приходит на смену другим решениям? Например, не так давно разработчики Mesosphere DC/OS, в основе которой лежал Apache Mesos, прекратили ее развитие и сфокусировались на другой своей платформе — D2iQ Kubernetes (DKP). Думаю, что стоит разобраться, всегда ли хорош Kubernetes, когда оправдано использовать другие оркестраторы и о каких подводных камнях стоит знать.


Я Дмитрий Лазаренко, директор по продуктам облачной платформы Mail.ru Cloud Solutions (MCS). В этой статье расскажу об устройстве ряда оркестраторов-предшественников, сравню их с Kubernetes, посмотрю на его преимущества и недостатки по сравнению с ними.

Читать дальше →
Total votes 30: ↑28 and ↓2+26
Comments56

First touch of Kafka

Reading time4 min
Views16K

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

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

Пол Грэм: Над чем я работал

Reading time41 min
Views9.7K
Февраль 2021

image

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

Первые свои программы я пытался писать на IBM 1401, его у нас в округе использовали для того, что тогда называли «обработкой данных». Это было в 9 классе, так что мне было 13 или 14 лет. Этот 1401 стоял в подвале средней школы, мы с моим другом Ричем Дрейвсом получили разрешение использовать его. Тот подвал был похож на логово бондовского злодея, в котором хранится куча инопланетных устройств – процессоры, жесткие диски, принтер, устройство для чтения карт, и все это под яркими флуоресцентными лампами.

Мы писали на одной из первых версий Фортрана. Программы нужно было набирать на перфокартах, затем складывать их в устройство для чтения карт и нажимать на кнопку, чтобы программа загружалась в память и запускалась. Обычно в результате ее работы что-то печаталось на невероятном громком принтере.

Читать дальше →
Total votes 39: ↑34 and ↓5+29
Comments0

USB-микрофоны для стримов, творчества и записи подкастов — пять наиболее доступных моделей

Reading time4 min
Views16K

Продолжаем цикл материалов с обзорами составляющих домашней студии. Ранее мы поговорили о «мониторных» наушниках, колонках для мультимедиа и акустике для работы со звуком. После этого остановились на наушниках со встроенными микрофонами [раз, два].

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

Читать далее
Total votes 6: ↑5 and ↓1+4
Comments35

Как растаращить class-файл

Reading time4 min
Views44K
Обычно при компиляции Java-файла получаются .class-файлы примерно того же размера, что и исходник. Меня заинтересовало, можно ли по небольшому исходнику сделать .class-файл, который больше, сильно больше исходника.

Можно поискать какие-то короткие конструкции языка, которые компилируются в длинные цепочки байткода, но линейный прирост меня не устраивал. Я сразу подумал про компиляцию finally-блоков: про неё уже писали на Хабре. Если вкратце, то для каждого finally-блока при непустом try-блоке создаётся минимум два варианта в байткоде: для случая нормального завершения try-блока и для случая завершения с исключением. В последнем случае исключение сохраняется в новую локальную переменную, выполняется код finally, затем исключение достаётся из локальной переменной и перебрасывается. А что если внутри finally снова разместить try-finally и так далее? Результат превзошёл все ожидания.
Читать дальше →
Total votes 111: ↑106 and ↓5+101
Comments63

На фондовом рынке США сформировался пузырь небывалых размеров

Reading time13 min
Views163K

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

Читать далее
Total votes 249: ↑229 and ↓20+209
Comments775

Как «Ревущий Котёнок» с Reddit заработал 28.500% на акциях GameStop: объясняю простым языком

Reading time9 min
Views138K

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

Читать далее
Total votes 244: ↑241 and ↓3+238
Comments369

Мониторинг и профилирование Spring Boot приложения

Reading time13 min
Views33K

Мониторинг очень важен для современных приложений, современные приложения по своей природе сильно распределены и имеют разные зависимости, такие как база данных, службы, кеширование и многое другое. Поэтому все более важны отслеживание и мониторинг этих служб, чтобы приложение придерживалось условий SLA ( Service Level Agreement). SLA — это соглашение между клиентом и поставщиком услуг, в нем учитываются надежность, скорость отклика и другие показатели уровня обслуживания.

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

Читать далее
Total votes 15: ↑15 and ↓0+15
Comments7
1
23 ...

Information

Rating
Does not participate
Date of birth
Registered
Activity