• Лекции Технопарка. 1 семестр. Алгоритмы и структуры данных

    • Tutorial
    Очередной пост в рамках нашего цикла лекций Технопарка. В этот раз мы предлагаем вашему вниманию курс, посвящённый алгоритмам и структурам данных. Автор курса — Степан Мацкевич, сотрудник компании ABBYY.

    Лекция 1. Основы


    Начало первой лекции посвящено обсуждению основных понятий, на которых строится вся дальнейшая программа курса: что такое алгоритм и структура данных. Описаны базовые виды алгоритмов, их характеристики и методы анализа. Далее рассматриваются примеры создания алгоритмов для вычисления чисел Фибоначчи, проверки числа на простоту, быстрого возведения числа в целую степень. В конце лекции рассказывается об особенностях использования алгоритмов для работы с массивами: создание однопроходных алгоритмов, поиск минимального элемента, бинарный поиск.


    Читать дальше →
  • Второй Python meetup: чего ждать от PEP и стоит ли стрелять себе в ногу?

    • Tutorial
    Воодушевившись большим количеством слушателей июньского митапа, мы решили проводить его каждый месяц. Как итог – вторая встреча «питонщиков» в пятницу 26 июля. В этот раз мы (более 100 участников!) прошлись по наиболее популярным Python-библиотекам, покопались во внутренностях интерпретатора, а также разобрались в создании классов и объектов. Все подробности в must-see видео.

    image
    Читать дальше →
    • +26
    • 12,5k
    • 7
  • Создание многопользовательской realtime игры на node.js

    • Перевод


    Несколько месяцев назад мы с коллегами решили сделать многопользовательскую realtime игру, которая могла бы работать в вебе. Мы решили использовать node.js для нашего сервера. Это решение привело к очень убедительному успеху — наш сервер работал несколько месяцев без единого падения или перезагрузки процесса.

    Мы решили написать нашу игру на node.js, потому что мы слышали много хорошего об этой платформе и очень хотели немного с ней поиграть. И это было потрясающе — мы очень быстро вошли в тему. Для node.js существует множество любопытных библиотек, способных решать абсолютно разные задачи. Побочным преимуществом использования node для серверной части является, собственно, javascript — очень простой в обращении язык. Это позволило нам сфокусироваться на проблемах, которые встречаются во всех realtime играх, без лишней суеты, ограничений и необходимости компилировать код, как это случается при использовании менее динамических языков.

    Также node.js проявил себя как очень легковесный язык, даже в моменты пиковой нагрузки. Для нашей игры, процесс node.js использовал только один поток и потреблял всего около 3-4% CPU при одновременной работе 8-10 копий игры, каждая со своим собственным движком обнаружения столкновений.
    Читать дальше →
  • Quickpong — разработка сетевой игры на основе фреймворка Twisted

      Разработал и запустил на домене quickpong.com онлайн версию игры Pong. В игре (by design) реализован только режим мультиплейера, то есть игра идет не против искусственного интеллекта, а против другого человека.

      Игра представляет из себя клиент-серверное приложение, серверная часть написана на питоновском фреймворке Twisted, клиентская — на флэшовом фреймворке FlashPunk.

      Это мой первый опыт разработки асинхронного сетевого приложения, способного обслуживать тысячи одновременных подключений. Далее я расскажу о том, как эта программа работает, с какими проблемами мне пришлось столкнуться при разработке, какие идеи я хотел реализовать и что в итоге осталось нереализованным. Возможно, мой опыт окажется для кого-нибудь полезным.
      За подробностями добро пожаловать под кат
    • HTML5 Drag and Drop загрузка файлов

      image
      Благодаря нововведениям HTML5 создавать Drag and Drop интерфейсы стало гораздо проще. К сожалению, эти нововведения еще не обладают обширной поддержкой браузеров, но надеюсь в скором времени это изменится (на данный момент работает в Firefox 4+, Chrome и Opera 11.10).

      Читать дальше →
    • Revel — высокопроизводительный веб-фреймворк на языке Go

      Язык Go Про язык программирования общего назначения Go я лично знаю довольно давно. Думаю, что многие из вас слышали о нем. Читая различные блоги, я находил описания экспериментов разработчиков с этой чудесной платформой (а это именно платформа, не только язык программирования в себе). Не знаю, почему, но я искренне полагал, что Go слишком молод для того, чтобы заострять на нем свое внимание. А зря. Как оказалось, в последнее время начали активно появляться замечательные прикладные библиотеки и фреймворки, которые лично мне, как веб-разработчику, чрезвычайно интересны, поскольку они сочетают в себе высокую производительность (все-таки, Go — это компилируемый язык) и относительную простоту в использовании. Об одном таком веб-фреймворке, написанном на Go, я и хочу рассказать. Итак, знакомьтесь, веб-фреймворк Revel.
      Подробности