1. Куча / Говнокод #26974

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    -module(server).
    -export([start/0]).
    
    start() ->
      rooster:start(#{port => 8080},
                    #{routes => [hello()]}).
    
    hello() ->
      {'GET', "/hello", fun(_) -> {200, #{message => <<"hello world">>}} end}.

    https://github.com/fbeline/rooster

    Rooster

    Simplistic REST framework that runs on top of mochiweb.

    Запостил: 3_dar, 24 Сентября 2020

    Комментарии (20) RSS

    • Эрланг что ли?
      Ответить
    • mochiweb... это название наполняет мое сердце сладкой ностальгической ненавистью. О, какие там баги! Мой любимый баг воспроизводился только если 2 раза подряд его пропатчить. На такой извращённый сценарий наш CI не был рассчитан.
      Ответить
      • Кого пропатчить?
        Ответить
      • > 2 раза пропатчить

        Именно поэтому я за "PHP": код каждый раз парсится снуля, можно хоть на каждый запрос патчить.
        Ответить
        • Новый вариант игры "жизнь" - каждый новый запрос патчит по некоторому алгоритму файл, на который он упал
          Ответить
        • Ну я всегда говорил, что современным дизайнерам, которые текут от AWS lambda, можно PHP или Perl CGI незаметно подсунуть, и они будут про это восторженные посты в medium писать.
          Ответить
      • Кстати, а бим же только 2 версии кода держит? Что будет, если накатить еще один патч когда не все функции перепрыгнули на новый код?
        Ответить
        • Да, дело было именно в этом. Перед тем как загрузить новую версию, нужно явно удалить старую (code:purge). Если писать прямыми руками, и обращаться к коду снаружи через module:function, то ничего не будет, т.к. подобное обращение пойдёт уже к новой версии. Но анонимные функции привязаны к конкретной версии кода. Разработчики mochiweb, в их великой мудрости, засунули лямду в таблицу и вызвали её для каждого SSL accept'а. После двух апдейтов (которые фиксили другие баги в нём) лямда стала ссылаться на несуществующий код. Такой вот фрактал плохого дизайна.
          Ответить
          • Хм, а если я сохраню module:function в таблицу, то всё будет норм? Или один фиг надо будет писать обработчик, который таблицы обновляет?
            Ответить
            • > Хм, а если я сохраню module:function в таблицу, то всё будет норм?

              Да, тогда всё будет нормально, если, конечно, в новом релизе ты не выпилишь "function" из "module".
              Ответить
            • О, а я и забыл, что Борманд когда-то пробовал Эрланг. Интересно, чем дело закончилось
              Ответить
              • Да я что только не пробовал...
                Ответить
                • Я сначала (не видя контекста) аж подумал что это рак написал
                  Ответить
                  • А у меня было наоборот, я даже плюс поставил, а потом, когда осознал, расстроился и пошел мыть руки.
                    Ответить
    • Я забыл квиток на проходной... Пойду, заберу.
      Ответить

    Добавить комментарий