Pull to refresh
32
0
Максим Молчанов @mr_elzor

Senior Software Engineer, MS, PGCHE

Send message

(U)SIM-карты: обновление апплетов по воздуху

Reading time6 min
Views5.6K

Предлагаю заглянуть в мир телекома и технологии OTA — Over-the-air («обновления по воздуху») и разобраться в работе RAM (Remote Application Management) - одной из важнейших частей технологии OTA. Узучая процесс удаленной загрузки и установки приложений на SIM-карту телефона мы узнаем сложно ли взломать карту или отдельное приложение на ней.

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

Отправляем SMS из Erlang/Elixir. Короткая инструкция

Reading time6 min
Views5.5K


Photo by Science in HD


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


В этой статье вы найдёте:


  1. Немного теории и терминологии SMPP-протокола: SMSC, ESME, PDU, MO/MT SM.
  2. Краткий обзор существующих библиотек для работы с SMPP в Erlang/Elixir.
  3. Пример реализации асинхронного клиента при помощи библиотеки SMPPEX. Возможно, он будет полезен тем, кто ещё не использовал Elixir-библиотеки в Erlang-проектах.
  4. Информацию по обработке deliver_sm, MO SM.

Чего тут точно нет, так это информации по отправке коротких сообщений через SIGTRAN.

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

5 вещей, которые я бы хотел знать до начала разработки биржи

Reading time5 min
Views3.8K

“Скажи мне — и я забуду, покажи мне — и я запомню, дай мне сделать — и я пойму”.


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


Для нетерпеливых — вот ссылка на демо версию биржи, которую можно запустить на своих машинах.


Всех остальных прошу под кат.

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

Эксперимент VonmoTrade. Часть 4: Торговые графики

Reading time6 min
Views2.1K

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

Читать дальше →
Total votes 5: ↑4 and ↓1+3
Comments0

Эксперимент VonmoTrade. Часть 3: Книга ордеров. Обработка и хранение торговой информации

Reading time6 min
Views4.9K


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

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

Эксперимент VonmoTrade. Часть 2: Ордеры. Типы, особенности обработки

Reading time6 min
Views4.5K

Чтобы понять, как работают биржи, нужно разобраться с биржевыми заявками и правилами их обработки брокером.


В статье мы разберем типы ордеров, особенности их исполнения на бирже и накладываемые торговой моделью ограничения. Если вам любопытно, что значат аббревиатуры DAY, GTC, FOK, IOC, GTD, GAT, MOO, MOC, LOO, LOC, MIT, OCO, OSO, PEG, прошу под кат.

Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments0

Эксперимент VonmoTrade. Часть 1: Биржи и современные технологии

Reading time4 min
Views2.9K

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


Цели эксперимента:


  • Более глубокое понимание предметной области и улучшение технической экспертизы
  • Выявление сильных и слабых сторон использования функциональных языков и проектов с открытым исходным кодом при разработке торговых систем
    В этой статье представлена мотивационная часть проекта и декомпозиция задачи.
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments17

Монады в Erlang

Reading time8 min
Views5.3K


На Хабре можно найти много публикаций, раскрывающих как теорию монад, так и практику их применения. Большинство этих статей ожидаемо про Haskell. Я не буду в n-й раз пересказывать теорию. Сегодня мы поговорим про некоторые проблемы Erlang, способы их решения с помощью монад, частичного применения функций и синтаксического сахара из erlando – классной библиотеки от команды RabbitMQ.

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

Строительные блоки распределенных приложений. Второе приближение

Reading time8 min
Views2.7K

Анонс


Коллеги, в середине лета я планирую выпустить еще один цикл статей по проектированию систем массового обслуживания: “Эксперимент VTrade” — попытка написать фреймворк для торговых систем. В цикле будет разобрана теория и практика построения биржи, аукциона и магазина. В конце статьи предлагаю проголосовать за наиболее интересные вам темы.



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


Сегодня мы поднимем вопросы развития кодовой базы и проектов в целом.

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

Строительные блоки распределенных приложений. Первое приближение

Reading time8 min
Views4.1K


В прошлой статье мы разобрали теоретические основы реактивной архитектуры. Пришло время поговорить о потоках данных, путях реализации реактивных Erlang/Elixir систем и шаблонах обмена сообщениями в них:


  • Request-response
  • Request-Chunked Response
  • Response with Request
  • Publish-subscribe
  • Inverted Publish-subscribe
  • Task distribution
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments0

Строительные блоки распределенных приложений. Нулевое приближение

Reading time5 min
Views3.6K


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

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

Борьба за качество решений на Erlang/Elixir

Reading time9 min
Views6K


@jcutrer


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


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


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

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

Aрифметика произвольной точности в Erlang

Reading time7 min
Views5.6K


@rawpixel


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


Если говорить про Erlang, то он, как и многие другие языки, реализует IEEE754 стандарт для float, в то время как стандартный тип Integer в Erlang реализован с использованием арифметики произвольной точности. Однако, хотелось бы иметь не только bigint, но и возможность оперирования рациональными, комплексными и числами с плавающей точкой с необходимой точностью.


В статье представлен минимальный обзор теории кодирования чисел с плавающей точкой и наиболее яркие примеры возникающих эффектов. Решение, обеспечивающее необходимую точность операций через переход в представление с фиксированной точкой, оформлено в виде библиотеки EAPA (Erlang Arbitrary Precision Arithmetic), призванной удовлетворить потребности финансовых приложений, разрабатываемых на Erlang / Elixir.

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

Rocker — rocksdb драйвер для Erlang

Reading time6 min
Views2.7K

Введение


В интернетах довольно много информации и споров по поводу выбора sql/nosql подхода, а также плюсах и минусах того или иного KV-хранилища. То, что вы сейчас читаете, не является пособием по rocksdb или агитацией за использование именного этого хранилища и моего драйвера к нему. Я хотел бы поделиться промежуточным результатом работы по оптимизации процесса разработки NIF для Erlang. В данной статье представлен работоспособный драйвер для rocksdb, разработанный за пару вечеров.

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

Безопасно ускоряем Erlang приложение c помощью NIF на Rust

Reading time4 min
Views5.1K

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

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

Грузите апельсины бочках. Релизы в Golang проектах

Reading time7 min
Views7.7K

Данная статья является продолжением инструментальной темы, затронутой в прошлой публикации. Сегодня мы постараемся разобраться со сборкой релизов Golang приложений в виде единого исполняемого файла, включающего ресурсные зависимости, и вопросом оптимизации размера итоговой сборки. Также рассмотрим процесс построения рабочего окружения отвечающего следующим требованиям:


  1. Переносимость. Окружение должно быть легко воспроизводимо на различных машинах.
  2. Изолированность. Окружение не должно влиять на версии установленных библиотек и программ на машине разработчика.
  3. Гибкость. Окружение должно позволять собирать релизы для различных версий Golang и Linux (разные версии дистрибутивов и glibc).
  4. Повторяемость. Не должно быть магии и тайных знаний, то есть все шаги сборки проекта и зависимостей должны быть описаны кодом.
Читать дальше →
Total votes 19: ↑14 and ↓5+9
Comments3

Готовим рабочее окружение для Erlang проекта

Reading time8 min
Views8.2K

Введение


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

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

Information

Rating
Does not participate
Location
Россия
Registered
Activity