Как стать автором
Обновить
-2
0
Maxim Ericsson @5HT

Пользователь

Отправить сообщение
Я сделал ecto_mnesia нативный враппер, сейчас он зарефакторен под лейблом Nebo15:
https://github.com/Nebo15/ecto_mnesia
Попробуйте его
Есть еще другая манифестация фулстек-ниндзи — не размазанная по языкам и инструментам, а сосредоточенная в одном языке или окружении (Smalltalk например). И вот в таком окружении, которое по сложности как игровая реальность, вполно можно неплохо ориентироваться на полном фулстеке — от виртуальной машины до валидаций форм ввода.
WebSharper на F#, Scala Lift, Ocaml Ocsigen, на BlazeHtml все используют DSL.
На Эрланге по любому писать лучше чем на HTML, тем более в едином AST.
Кроме того nitro DSL уже давно вынесен из n2o, так что n2o занимает теперь только 1200 LOC.
Это все уже сделано. Называется N2O.
Есть даже компилятор из эрланга в JavaScript SHEN.
У меня все показано в README сколько N2O вносит по сравнению с чистым web server.
Там отдельно цифры с сессиями, без сессий, с шаблонами, без шаблонов и т.д.
И мои цифры можно проверить, так как тесты выложены github.com/maxlapshin/fpbenchmark
А где написано, что я сравинивал производительность? Я привел цифру для приведенного кода.
Переключишь с ETS на KVS — цифра изменится, но код не изменится.
Я вообще думаю, что ненормально приводить DB throughput в статье про веб фремворк.
Но если для Habrahabr это ок, то пусть будет :-)
Как то не очень компактно и понятно.

Вот memory cache REST server на Erlang:

{deps, [ {rest,  ".*", {git, "git://github.com/synrc/rest", "HEAD"}}]}


-module(users).
    -behaviour(rest).
    -compile({parse_transform, rest}).
    -include("users.hrl").
    -export(?REST_API).
    -rest_record(user).

    init() -> ets:new(users, [public, named_table, {keypos, #user.id}]).
    populate(Users) -> ets:insert(users, Users).
    exists(Id) -> ets:member(users, wf:to_list(Id)).
    get() -> ets:tab2list(users).
    get(Id) -> [User] = ets:lookup(users, wf:to_list(Id)), User.
    delete(Id) -> ets:delete(users, wf:to_list(Id)).
    post(#user{} = User) -> ets:insert(users, User);
    post(Data) -> post(from_json(Data, #user{}))


Использовать так:

curl -i -X POST -d "id=vlad" localhost:8000/rest/users
    curl -i -X POST -d "id=doxtop" localhost:8000/rest/users
    curl -i -X GET localhost:8000/rest/users
    curl -i -X PUT -d "id=5HT" localhost:8000/rest/users/vlad
    curl -i -X GET localhost:8000/rest/users/5HT
    curl -i -X DELETE localhost:8000/rest/users/5HT


23K RPS
За деньги можно это сдлеать. Но обычно рекомендуем Full Stack Erlang.
На первый взгляд слишком радикально, но именно поэтому и хорошо.
Jailbreak для Windows RT habrahabr.ru/post/165507/
Оригинально приложение forum.xda-developers.com/showthread.php?t=2092158
OCaml лучше С++ со всех сторон.
1 000 000 процессов. 32 бита. Подумай еще раз, возьми калькулятор и пересчитай.
Логика такая, что

1. multi-threading approach — Semaphores, Threads, Shared Memory
2. message passing approach — Queues, Messages, Processes
3. data flow concurrency
4. software transnational memory

Это все разные модели parallel/concurrency вычислений. Операционные системы поддерживают только первый вид. Остальные модели реализуются посредством библиотек и собственных планировщиков легковесных потоков со своими стеками работающих в контексте одного потока ОС.

Чисто логически представьте себе что в одном 32-битном потоке Эрланга работает 1 000 000 процессов, откуда там столько примитивов ОС.
Кому интересно, есть Emacs-like редактор написан и расширяем на самом Erlang: github.com/5HT/pie
Является. Вот доказательство: github.com/5HT/emacs-config
Я проверял не только на Linux и Mac но и Windows.
(setq package-archives '((«ELPA». «tromey.com/elpa/»)
(«gnu». «elpa.gnu.org/packages/»)
(«marmalade». «marmalade-repo.org/packages/»)))

(when (load (expand-file-name "~/.emacs.d/marmelade-package.el"))
(package-initialize))

Это все что нужн вставить что бы работать с тремя репозиториями пакетов одновременно.
Пока Воеводский описывает на Coq унивалентные основания математики на Хабрахабрике не могут доказать вторую теорему Гёделя на бумаге :-)
Я бы предложил глянуть на Godel’s Incompleteness Theorem in Coq
1

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность