Контакты

Достижения

Все достижения (2)

Наибольший вклад в теги

Все теги (12)

Лучшие ответы пользователя

Все ответы (18)
  • Как получить опыт работы во front-end разработке?

    5HT
    @5HT
    Erlang
    Если "полный ноль" то нужно сначала немного вводной информации.

    1. Платформа
    * ECMA-262 или другими словами спецификация на язык JavaScript
    * V8, SpiderMonkey, Chakra — имплементации этой спецификации встроенные в основные браузеры
    Это платформа с которой вам придется работать. Фронт энд — это стало быть виртуальная машина (например V8 в Google Chrome), описание языка, а также программы написанные на JavaScript.

    2. Виды графических приложений
    В любом из этих трех видов приложения (могут быть также комбинации), используется разный основной механизм типогрфического либо графического отображения, в тоже время каждое из этих трех типов приложений использует JavaScript как основной язык для управлением этим механизмом.
    * HTML/CSS приложения — это обычные HTML приложения со стилями CSS (возможно с анимацией), обычно это бизнес приложения или то что называется UI состоящее из контрольные элементов: кнопок, полей ввода, чекбоксов, радиокнопок, лейблов, окон и т.д. Сюда например входят большинства всех сайтов в интернете также и Windows Phone приложения. Буквально тысячи фрейморков.
    * SVG приложения — сюда входят векторные игрушки либо другие приложения, где объекты вместо DOM элелментов HTML являются SVG элементы. Тут самая крутые библиотеки это paper.js, d3.js и т.п.
    * Canvas приложения — сюда входят игрушки или приложения которые самостоятельно рендерят растр для прямоугольной области экрана. Специфический вид приложений.

    3. Транспорт
    Разрабатывая приложения вы должны будете общаться с серверами приложений, которые могу быть написаны на множестве языков. Тут уже начинается бекенд, поэтому вы просто должны быть готовы к тому что на сервере может быть любой язык. Но чтобы сэкономить на времени вы можете использовать базовые примеры из node.js для разработки, так как node.js — это бекенд на JavaScript, т.е. на той же платформе что и браузер, только занимается не графическим окружением, а хранением фалов, доступом к базам данных и прочим. Но что вы должны будете знать, так это протоколы и форматы по которым общаются между собой клиент (браузер) и сервер (который может быть написан на любом языке).
    Протоколы:
    * HTTP 1.0,1.1,1.2,2.0 — основной протокол интернет
    * REST — использование HTTP протокола для организации доступа к ресурсам приложения, которые находятся на сервере (GET POST PUT HEAD OPTIONS DELETE, могут быть свои расширения протокола). Основные виды ресурсов — это скалярные (конкретные объекты /users/joe) и векторные (перечисления объектов /users/).
    * WebSocket — спецификация на сокет-протокол поверх которого вы можете создавать свои протоколы.
    Форматы:
    * JSON — основной формат, который является подмножеством JavaScript.
    * XML — формат с которым вам возможно придется столкнуться. Сама страница XHTML например является XML документом.
    * MessagePack — один из возможных бинарных форматов, с которыми возможно когда-то придется иметь дело.

    Если в этом разобраться хорошо, тогда нужно найти фреймворк и придумать какой-то проект (может быть даже с бизнес идеей) и попытаться его реализовать под наставлением человека, который бедет следить и говорить правильно вы делаете или нет.
    Ответ написан
    5 комментариев
  • Выбор архитекруты для websockeт'ов. eventloop или акторы?

    5HT
    @5HT
    Erlang
    TL;DR: Имплементация любой системы актеров автоматически является ивент лупом.

    Ивентлупом обычно называются планировщики, например в виде С библиотек таких как libuv, которая используется в node.js, Julia, Rust, а также в ивентлупом называют такие библиотеки как в D, например Vibe.D. Актеры Эрланга это больше чем просто планировщик, это также еще и система обмена сообщениями.

    Если вам не нужно чтобы ваши единицы планирования общались между собой, вам возможно не нужна система актеров, и можно будет быстро это написать прямо на C с использование libuv. Как только вы захотите чтобы единицы планирования общались между собой вам потребуется что-то больше чем просто цикл по стекам.

    Вопрос, к сожалению, не имеет смысла, так как Эрланг предоставляет даже больше чем просто систему актеров. Вы не найдете WebSocket сервер для Erlang который не поддерживает концепцию актеров, а также не найдете WebSocket сервер для Erlang который не поддерживает концепцию event loop.
    Ответ написан
    Комментировать
  • Кто как деплоит Erlang приложения?

    5HT
    @5HT
    Erlang
    Я предпочитаю делать git pull в каталоге на сервере который я патчу в реальном времени.
    После того, как я сделал патч я его комичу прямо из сервера.
    Я пересобираю релизы и докер контейнеры из гита.
    По очереди тушу линию контейнеров кольца и переподнимаю новые.

    Такой worklfow преполагается в mad deploy. Но он будет общаться не по ssh с серверами, а с сервисом в составе архитектуры voxoz, который управляет докер контейнерами slice. Но это пока еще не выложено в публику.
    Ответ написан
    Комментировать
  • Что производительнее Go или Erlang?

    5HT
    @5HT
    Erlang
    Если задача померяться с пацанами в ЖЖ цифрами и продемонстрировать что ты быстрее эрланга на 5-10% — то Го. Если ты хочешь более-менее фунциональный веб, то Erlang конечно. Но на Го так быстро слепить бенчмарк для веб, который нагнет Erlang не так то просто.
    Ответ написан
    Комментировать
  • Как использовать Mnesia в Cowboy приложении?

    5HT
    @5HT
    Erlang
    Erlang Abstract Database synrc.github.io/kvs
    Для хранения цепочек в Key-Value стораджах: Mnesia, Riak, KAI, SQL.
    Ответ написан
    Комментировать