• Приглашаем на Lua in Moscow 2017 5 марта



      В первое воскресенье марта в офисе Mail.Ru Group пройдёт международная конференция Lua in Moscow 2017. В программе — выступления автора языка Роберто Иерусалимского и лучших зарубежных и отечественных экспертов по Lua и LuaJIT.

      Lua — уникальный язык программирования, который используется далеко не только в индустрии компьютерных игр, но и как встроенный язык расширений в таких инструментах web-программирования, как Redis, nginx, Tarantool, OpenResty. Lua также применяется для анализа больших данных, научных вычислений. Во многих роутерах, принтерах и других подобных устройствах есть Lua.

      В 2014 году мы провели восьмую ежегодную конференцию по языку программирования Lua Workshop, крупнейшую по числу участников за все годы. С тех пор мы не забывали про язык программирования Lua, проводили митапы и потоки на IT-конференциях. И вот, наконец, в этом году у вас снова есть шанс лично задать вопросы автору языка, обменяться опытом с лучшими программистами и, конечно, послушать доклады про передовой опыт применения Lua и LuaJIT.

      Часть докладов будет на английском языке.

      Даже если вы ещё не пишете на языке Lua, приходите, возможно, конференция откроет вам глаза на что-то новое и интересное!
      Читать дальше →
    • OpenResty: превращаем NGINX в полноценный сервер приложений

        Мы вновь публикуем расшифровку доклада с конференции HighLoad++ 2016, которая проходила в подмосковном Сколково 7—8 ноября прошлого года. Владимир Протасов рассказывает, как расширить функциональность NGINX с помощью OpenResty и Lua.

        Всем привет, меня зовут Владимир Протасов, я работаю в Parallels. Расскажу чуть-чуть о себе. Три четверти своей жизни я занимаюсь тем, что пишу код. Стал программистом до мозга костей в прямом смысле: я иногда во сне вижу код. Четверть жизни — промышленная разработка, написание кода, который идёт прямо в продакшн. Код, которым некоторые из вас пользуются, но не догадываются об этом.

        Чтобы вы понимали насколько всё было плохо. Когда я был маленьким джуниором, я пришёл, и мне выдали такие двухтерабайтные базы. Это сейчас тут у всех highload. Я ходил на конференции, спрашивал: «Ребят, расскажите, у вас big data, всё круто? Сколько у вас там базы?» Мне отвечали: «У нас 100 гигабайт!» Я говорил: «Круто, 100 гигабайт!» А про себя думал, как бы аккуратненько сохранить покерфейс. Думаешь, да, ребята крутые, а потом возвращаешься и ковыряешься с этими многотерабайтными базами. И это — будучи джуниором. Представляете себе, какой это удар?

        Я знаю больше 20 языков программирования. Это то, в чём мне пришлось разобраться в процессе работы. Тебе выдают код на Erlang, на C, на С++, на Lua, на Python, на Ruby, на чем-то еще, и тебе надо это всё пилить. В общем пришлось. Точное количество посчитать так и не удалось, но где-то на 20 число потерялось.
        Читать дальше →
      • Классические алгоритмы генерации лабиринтов. Часть 2: погружение в случайность

        • Tutorial


        Предисловие


        Первая часть

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

        В этой части мы поговорим о том, что же такое случайная и псевдослучайная генерации, какие алгоритмы могут дать нам равновероятно ничем не похожие друг на друга лабиринты и в чем их минусы. Героями нашего сегодняшнего приключения станут алгоритм Уилсона и алгоритм Олдоса-Бродера для создания случайного остовного дерева (Uniform Spanning Tree). ОСТОРОЖНО ТРАФИК.
        Читать дальше →
      • Master-master репликация и масштабирование приложений между всеми IoT-устройствами и облаком


          На фото представлены устройства, использованные для прототипирования. Как видно, за основу взята процессор x86 (Intel Edison)

          Всем привет. В этой статье я хотел бы поделиться опытом решения одной интересной проблемы, связанной с синхронизацией данных между IoT-устройствами и облачным приложением. Сначала я расскажу об основной идее и целях моего проекта, а затем подробно опишу его техническую сторону и реализацию: речь пойдет об ОС Contiki, базах данных, протоколах и подобных аспектах. В заключение я кратко перечислю технологии, использованные при построении системы.
          Читать дальше →
        • Классические алгоритмы генерации лабиринтов. Часть 1: вступление

          • Tutorial


          Предисловие


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

          Если моя статья Вам понравится, я продолжу писать о различных алгоритмах. Мы рассмотрим два самых примитивных и простых случая – генерация двоичного дерева и Сайдвиндер, который, по своей сути, просто чуть измененная версия двоичного дерева с одним заметным плюсом. ОСТОРОЖНО ТРАФИК.
          Читать дальше →
        • Asterisk. Ненормальный перевод

            В Asterisk 2 типа трансферов:

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

            Мне понадобилось совместить простоту первого и функционал второго. Без AMI/ARI/AGI. Без костылей.

            Велосипед под катом.
            Читать дальше →
          • AdBlock похитил этот баннер, но баннеры не зубы — отрастут

            Подробнее
            Реклама
          • Создавая хтонических чудовищ, документируй

              ioninja

              Под данным изречением-мемом, взятым с замечательной картинки Владимира Филонова, поставит свою подпись каждый человек, имеющий хотя бы отдалённое отношение к программированию. Весь вопрос, как? Как именно документировать-то?


              Нижележащий текст преследует несколько целей:


              1. Дать краткий обзор (читай — немного погундеть на тему) неудовлетворительного состояния инструментария, применимого к хтоническим чудовищам мира C/C++;
              2. Предложить своё альтернативное решение (бесплатно-без-СМС-и-регистрации — проект некоммерческий и выложен на GitHub под MIT-лицензией);
              3. Призвать сообщество пообщаться на тему и собрать идеи;
              4. Пригласить присоединиться к разработке проекта на GitHub.

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



              Читать дальше →
            • Программирование игровых приложений на Corona SDK: часть 1


              Важно
              Этот туториал рассчитан на людей, у которых есть опыт программирования на Lua, если нет, то отправляйтесь исправлять ситуацию. Но он отлично подойдет и для тех, кто никогда не программировал на Lua.

              Что такое Corona SDK?


              Corona SDK — это кроссплатформенный игровой движок, использующий Lua для описания игровой логики.

              Позволяет экспортировать приложения под различные платформы, в том числе и мобильные.

              Возможность экспорта под такие платформы:

              • Windows
              • Mac OS
              • iPhone/iPad
              • Android
              • tvOS
              Читать дальше →
            • Как я в одиночку сделал игру и выводы

              История разработки одной фанатской компьютерной игры Fallout: The X-Project и попытки сделать из неё «конфетку»


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

              Объясню почему: сама по себе игра разрабатывалась в период с 1998 по 2008 год, а наиболее активно — где-то с 2004 по 2007. Если честно, то я и в 2005-м понимал, что будущего у игры нет. Но хотел просто её закончить. Иначе зачем столько времени и усилий потратил на проект? К тому же, я был не один, и нельзя допускать, чтобы чужие усилия были потрачены впустую. Ответственность.

              Но не будем отходить в сторону. Кому будет полезна статья? В первую очередь таким же ребятам, каким я был сам, учась в институте. Мечтателям, желающим создать свою игру мечты.
              Читать дальше →
            • Web-Оповещения в нагруженных проектах

                В современном WEB Конструировании очень часто возникают задачи, когда необходимо оповестить пользователя о каком-нибудь событии: пришло новое сообщение, изменился курс на бирже или статус заказа, с конвертировался видео-контент или подскочила температура больной бабушки.

                Есть несколько вариантов решения такого класса задач. Наиболее оптимальное и распространенное решение – это подписка на события. Как это реализуется в нагруженных проектах?
                Читать дальше →
              Самое читаемое