• Web-сервер G-WAN, кто-нибудь пользуется?

    VBart
    @VBart
    andyone.me/post/10124195968/gwan

    А секрет быстродействия прост: для выдачи из памяти «Hello world» на простейший http запрос вовсе не нужно 100 тыс. строк кода на Си. А весь остальной функционал веб-сервера с gwan-ом вам ещё только предстоит написать. ;-)
    Ответ написан
    Комментировать
  • Изучение программирования путем Скалы?

    uvelichitel
    @uvelichitel
    habrahabr.ru/users/uvelichitel
    По моему Scala совсем не подходит для первого языка. Scala сложный, перегруженный, мультипарадигменный язык с замысловатым синтаксисом(причем на мой взгляд парадигмы сотканы не ортогонально). Scala требует изучения как язык сам по себе после того как полистали Вирта и прилично кодите. Иначе вы просто запутаетесь и утоните в концепциях языка вместо того чтобы учиться программировать. Что бы использовать возможности scala нужно уже знать для чего они нужны.
    Ответ написан
    4 комментария
  • Лисп или хаскел?

    @ZloyEngineer
    Сначала Lisp для погружения в ФП, желательно не оригинальный, а какой-нибудь из его диалектов, например, Scheme как, на мой взгляд, наиболее академичный. Потом Haskell для получения практических навыков.

    Господам же, рассуждающим о непрактичности Хаскеля, могу посоветовать отказаться от образа мышления "если я что-то не умею, то это сделать нельзя в принципе". Хаскель имеет свое практическое применение в реальной жизни не менее, чем, например, Python. Единственная проблема -- это достаточно высокий порог входа в язык. Высокий для канадского лесоруба, решившего закончить недельные курсы и стать высокооплачиваемым программистом. Что же касается программистов среднего уровня или чуть ниже, то для них Хаскель дает возможность писать быстрые, устойчивые программы, тратя существенно меньше времени, чем на той же Java. Я говорю о реальных программах, а не о задачках с олимпиад о раскладывании монеток по кучкам, о программах в 200+ строк на Хаскеле, что в переводе на С++/Java 2000+ строк.
    Ответ написан
    Комментировать
  • Как закодировать/раскодировать текст в Erlang?

    5HT
    @5HT
    Erlang
    AES-CBC шифрование с HMAC можно использовать из стандартной библиотеки N2O:

    pickle(Data) ->
        Message = term_to_binary({Data,now()}),
        Padding = size(Message) rem 16,
        Bits = (16-Padding)*8, Key = secret(), IV = crypto:rand_bytes(16),
        Cipher = crypto:block_encrypt(aes_cbc128,Key,IV,<<Message/binary,0:Bits>>),
        Signature = crypto:hmac(sha256,Key,<<Cipher/binary,IV/binary>>),
        base64:encode(<<IV/binary,Signature/binary,Cipher/binary>>).
    
    secret() -> wf:config(n2o,secret,<<"ThisIsClassified">>).
    
    depickle(PickledData) ->
        try Key = secret(),
            Decoded = base64:decode(wf:to_binary(PickledData)),
            <<IV:16/binary,Signature:32/binary,Cipher/binary>> = Decoded,
            Signature = crypto:hmac(sha256,Key,<<Cipher/binary,IV/binary>>),
            {Data,_Time} = binary_to_term(crypto:block_decrypt(aes_cbc128,Key,IV,Cipher),[safe]),
            Data
        catch E:R -> wf:info(?MODULE,"Depicke Error: ~p",[{E,R}]), undefined end.

    https://github.com/5HT/n2o/blob/master/src/handler...

    pickle/1 и depickle/1 прошли верификацию: https://github.com/5HT/n2o/issues/63
    Ответ написан
    Комментировать