• Новое в Java 8

    • Translation
    Java еще не умерла — и люди начинают это понимать.

    Добро пожаловать в ведение по Java 8. Этот материал шаг за шагом познакомит вас со всеми новыми фичами языка. Вы научитесь использовать методы интерфейсов по умолчанию (default interface methods), лямбда-выражения (lambda expressions), ссылки на методы (method references) и повторяемые аннотации (repeatable annotations). Все это будет сопровождаться короткими и простыми примерами кода. В конце статьи вы познакомитесь с наиболее свежими изменениями в API, касающихся потоков, функциональных интерфейсов, расширений для ассоциативных массивов, а также с изменениями в API работы с датами.
    Читать дальше →
  • Краткий конспект по языку JavaScript

    • Tutorial
    Я —.NET разработчик. Но в последнее время всё чаще сталкиваюсь с JavaScript. Причём, процентах в 50 случаев я что-то на нём пишу, в остальных 50 — разбираюсь с чужим кодом, да ещё и прошедшим через минификацию, а иногда и обфускацию. В этой статье захотелось поделиться теми моментами, которые мне показались важными для понимания языка и эффективной работы с ним. Тут не будет ничего нового или неизвестного для людей, уже имевших дело с языком, и не будет чего-то такого, чего нельзя найти в других источниках. Для меня статья будет полезна как способ лучше разобраться в предмете, для читателей, я надеюсь, — как повод освежить знания.

    Брендан Айк упоминал, что JavaScript был создан за 10 дней. Думаю, идея вынашивалась дольше. Как бы то ни было, язык получился и с тех пор только набирает популярность. Особенно после появления AJAX.

    JavaScript — язык со слабой динамической неявной типизацией, автоматическим управлением памятью и прототипным наследованием.

    JavaScript состоит из трёх обособленных частей:

    • ядро (ECMAScript),
    • объектная модель браузера (Browser Object Model или BOM),
    • объектная модель документа (Document Object Model или DOM).


    В статье, в основном, пойдёт речь о ядре. Конечно, в примерах кода будут использоваться элементы DOM и BOM, но заострять на них внимание не буду.
    Читать дальше →
  • Перевод учебника по алгоритмам



      Рад сообщить, что вышел перевод отличнейшего учебника Дасгупты, Пападимитриу, Вазирани «Алгоритмы», над которым я работал последние несколько лет. В книге многие алгоритмы объяснены гораздо короче и проще, чем в других учебниках: с одной стороны, без излишнего формализа, с другой — без потери математической строгости. Откройте книгу на каком-нибудь известном вам алгоритме и убедитесь в этом. =)

      В общем, угощайтесь: печатный вариант перевода, электронный вариант перевода (PDF), печатный вариант оригинала, электронный вариант оригинала (PDF).
      Читать дальше →
    • Радиоуправляемый выключатель своими руками. Часть 3 — Софт выключателя

      • Tutorial
      В предыдущих постах мы спроектировали, сделали и всесторонне протестировали блок двухканального радиоуправляемого выключателя.



      Но до сих пор это была «бездушная железка», которая несмотря на всю свою потенциальную мощь, заложенную в МК, — ничего не умеет.
      Вдохнем в нее жизнь.
    • Радиоуправляемый выключатель своими руками. Часть 2 — Тестирование и подготовка

      • Tutorial
      Этот пост — продолжение серии рассказов о том, как можно сделать своими руками выключатель полезной нагрузки.

      В первой части была описана «железячная» составляющая: особенности ее проектирования и производства.

      Сегодняшний пост описывает шаги по подготовке среды разработки Arduino и полное тестирование изготовленного модуля.
      Подробные инструкции внутри
    • Я делаю свой квадрокоптер. Часть 1. Уравнения динамики

        Оглавление


        1. Уравнения динамики

        Введение




        Давным-давно я написал следующий комментарий: Всё.
        После такой новости сажусь делать свой квадрокоптер. А то вон все делают, а я нет.
        Не, ну а что.
        Всегда хотел, чтобы у меня была какая-нибудь летающая штука. Были 2 вертолета радиоуправляемых. Но кончилось это плохо.
        Я решил делать свой квадрокоптер. Как это кончится — посмотрим. Я не буду использовать какие-либо готовые полетные контроллеры, все запрограммирую самостоятельно. И постараюсь этот процесс описать в цикле статей. Сейчас представляю вашему вниманию первую часть. В ней будет бегло показано то, какие уравнения динамики скрываются внутри квадрокоптера.
        Итак, поехали.

        Немного уравнений и еще меньше текста
      • Aibolit для android

        Как же утомителен процесс инициализации UI при разработке android-приложений. Раз за разом приходится писать горы шаблонного кода: findViewbyId, setOnClickListener, getResources().getDrawable, … Возникает естественное желание переложить эту работу на плечи AOP. Беглый поиск готовых решений, адаптированных под android, навел разве что на RoboGuice, о котором уже упоминалось на хабре. Однако библиотека имеет значительный размер (~0.5 mb), что для многих приложений недопустимо много, и к тому же требует наследования ваших классов application и activity от RoboApplication и RoboActivity, чего не всегда хочется делать. Потому и появился Aibolit, легкая (~40kb), простая в использовании и функциональная библиотека, использующая dependency injection для инициализации UI на android.

        Читать дальше →
      • Groovy за 15 минут – краткий обзор

          Groovy — объектно-ориентированный язык программирования разработанный для платформы Java как альтернатива языку Java с возможностями Python, Ruby и Smalltalk.

          Groovy использует Java-подобный синтаксис с динамической компиляцией в JVM байт-код и напрямую работает с другим Java кодом и библиотеками. Язык может использоваться в любом Java проекте или как скриптовый язык.

          Возможности Groovy (отличающие его от Java):

          — Статическая и динамическая типизация
          — Встроенный синтаксис для списков, ассоциативных массивов, массивов и регулярных выражений
          — Замыкания
          — Перегрузка операций

          [http://ru.wikipedia.org/wiki/Groovy]

          Более того, почти всегда java-код — это валидный groovy-код.
          Читать дальше →
        • Java Cloud Hosting — autoscaling, easy deploy, environment management

            Java Elastic Cloud Platform
            Друзья, мы продолжаем закрытый бета тест облачной платформы для Java приложений. Важнейшим бизнес моментом в нашем будущем развитии являются предварительные договоренности с одним из лидеров хостинговых услуг на рынке Европы. Мы нашли отличного партнера — это один из самых успешных хостинг провайдеров в Европе. К тому же, наша команда готовит к запуску новый информационный сайт и новый уникальный облачный функционал. Для удобства создания окружений нами разработан конструктор серверных топологий — визуальный билдер. Подобного решения вы не найдете даже у Amazon Beanstalk.
            Однако сегодня речь не об этом. Указанный функционал и имя нашего партнера будет анонсировано в следующий раз. Сегодня, тем кто принимает участие в закрытом бета-тестировании — мы предлагаем попробовать наш обновленный функционал. Мы учли ваши пожелания и выпустили промежуточный апдейт.
            Читать дальше →
          • RubyGems — подробно


              Для начала определимся с понятиями:
              RubyGems — фрэймворк для установки и запаковки Ruby библиотек и приложений.
              gem — пакет(файл) с библиотекой или приложением. Имеет стандартизированный вид и расположен в хранилище в сети.
              gem command tool — RubyGems предоставляет утилиту «gem» для работы с gem пакетами из командной строки. Она интегрирована с Ruby и позволяет получать доступ к установленным gem'ам как к библиотекам.

              В чем же предназначение RubyGems?

              До того как появилась RubyGems, для установки новой библиотеки нужно было найти, скачать её, попытаться установить, часто лишь для того, чтобы убедиться в отсутствии нужных зависимостей. Если же библиотека запакована с помощью RubyGems, достаточно попросить RubyGems сделать это за нас и получить установленную, интегрированную библиотеку со всеми нужными зависимостями. В дополнение ко всему утилита gem — платформонезависима, неважно какую ОС вы используете, везде механизм установки библиотек и приложений будет одинаков. Здорово, правда?

              Под катом будут описаны:
              1) Поиск, получение деталей, установка gem's
              2) Доступ документации по установленному gem
              3) Использование установленных gem's
              4) Работа с версиями gem's
              5) Создание собственных gem's

              Читать дальше →
            • Про C++ алиасинг, ловкие оптимизации и подлые баги

                С удивлением обнаружил, что про явление алиасинга (aliasing) здесь постов нет. Ситуацию нужно исправить, тк. алиасинг в любой сколько-то сложной C++ программе обязательно хоть где-нибудь, да есть. Это может быть хорошо, давая возможность ловких оптимизаций, а может быть плохо, внося повышенной паршивости баги. Под катом вкратце про оба случая (ну и неизменное «компилятор бьет спина», конечно; для разнообразия сегодня это gcc).
                Читать дальше →