• Киллерфича в vim — это режимы? Серьёзно?

      Недавно вышла статья, которую вы наверняка читали, про то, что vim — хорош, а IDE — так себе, скорость набора текста не та.


      Напомню: главный посыл той статьи был в том, что главная киллер-фича вима — это режимы, благодаря которой всё остальное не важно. При этом автор согласился с тем, что в IntellijIdea и других IDE есть хоткеи и т.д., которыми вполне можно пользоваться. Но режимов то нет, поэтому вим.


      Далее автор предлагает для перемещения по словам вместо ctrl-стрелочка использовать последовательность Esc, e и потом возвращаться в режим редактирования i. Всё это потому, что неудобно удерживать ctrl.


      Я знаю, что статьи, рассматривающие vim в невыгодном свете, активно минусуют, но я должен выразить свою позицию.

      Читать дальше →
    • Russian AI Cup 2017 — всем поклонникам StarCraft и C&C посвящается


        Уже несколько лет подряд мы проводим Russian AI Cup — нехилый такой конкурс для всех неравнодушных к программированию в целом, к построению ИИ, просто к написанию ботов для игр или автоматизации чего бы то ни было. Естественно, и этот год не будет исключением. Итак, Mail.Ru Group в сотрудничестве с Саратовским государственным университетом официально объявляют о дате старта Russian AI Cup 2017 и счастливы предложить задачу этого года. Жёсткие битвы, макбуки за первые места и минус полтора месяца из жизни разработчика — всё на месте, всё как вы любите. Добро пожаловать под кат за подробностями!

        Читать дальше →
      • Мы на Highload++ в этом ноябре: задай вопрос инженерам Badoo


          Привет, Хабр! А особенный привет тем, кто в этом году идет на конференцию Highload++, потому что мы там обязательно встретимся. Мы придем, и не с пустыми руками: восемь докладов в семь разных секций.


          Но нам не хочется просто показать описания наших докладов, чтобы вы прочитали и сказали: “Понятно”. Мы разыграем 3 билета на конференцию. Для того, чтобы получить их, нужно задать вопрос в комментариях к этому посту одному из нижеперечисленных спикеров, а мы посоветуемся и наградим троих участников. Чтобы вы смогли придумать вопросы, каждый из ребят немного рассказал о команде, в которой работает, и о своей роли в ней.


          Под катом – имена, пароли и, конечно, описания наших докладов на конференции.

          Читать дальше →
        • Ардуино головного мозга: импульсный датчик положения

          • Tutorial

          Задача на сегодня: как определить угол поворота инкрементального энкодера?


          Сегодня в серии публикаций про ардуино головного мозга коротенькая статья с небольшим экспериментом и парой рецептов. В комментариях к одной из моих прошлых статей меня обвинили в том, что ардуиной подсчитывать импульсы энкодера — фу так делать:
          Оптически энкодер 1000/оборот и ATMega не имеющая аппаратной схемы работы с энкодером (как у серий STM32, например) — это тупик.
          Дальше в комментариях было много теоретизирования, которое лучше пропустить. Давайте лучше попробуем протестировать в железе, насколько это тупик. Для начала, что такое инкрементальный энкодер? Тот, кто помнит эпоху до-оптических мышек, ответ знает точно. Внутри энкодера есть диск с прорезями, вот для наглядности я сделал фотографию диска с пятьюстами прорезями:


          Читать дальше →
        • Любите статический анализ кода

            PVS-Studio - супергерой

            Я в шоке от возможностей статического анализа кода, хотя сам участвую в разработке инструмента PVS-Studio. На днях я был искренне удивлён тому, что анализатор оказался умнее и внимательнее меня.
            Читать дальше →
          • Code review по-человечески (часть 1)

            • Перевод
            • Tutorial
            В последнее время я читал статьи о лучших практиках code review и заметил, что эти статьи фокусируются на поиске багов, практически игнорируя другие компоненты ревью. Конструктивное и профессиональное обсуждение обнаруженных проблем? Неважно! Просто найди все баги, а дальше само сложится.

            Так что у меня случилось откровение: если это работает для кода, то почему не будет работать в романтичных отношениях? Итак, встречайте новую электронную книгу, которая поможет программистам в отношениях со своими возлюбленными (обложка на иллюстрации слева).

            Моя революционная книга обучит вас проверенным техникам по выявлению максимального количества недостатков в своём партнёре. Книга не затрагивает следующие области:

            • Обсуждение проблем с сочувствием и пониманием.
            • Помощь партнёру в устранении недостатков.

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

            Как вам нравится такая книжка? Предполагаю, что она вам не очень по душе.
            Читать дальше →
          • Реклама помогает поддерживать и развивать наши сервисы

            Подробнее
            Реклама
          • Выпуск Rust 1.21

            • Перевод

            Команда Rust рада представить выпуск Rust 1.21.0. Rust — это системный язык программирования, нацеленный на скорость, безопасность и параллельное выполнение кода.


            Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:


            $ rustup update stable

            Если же у вас еще не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта. С подробными примечаниями к выпуску Rust 1.21.0 можно ознакомиться на GitHub.


            Что вошло в стабильную версию 1.21.0


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


            Первое изменение касается литералов. Рассмотрим код:


            let x = &5;

            В Rust он аналогичен следующему:


            let _x = 5;
            let x = &_x;

            То есть 5 будет положено в стек или возможно в регистры, а x будет ссылкой на него.


            Однако, учитывая, что речь идет о целочисленном литерале, нет причин делать значение таким локальным. Представьте, что у нас есть функция, принимающая 'static аргумент вроде std::thread::spawn. Тогда вы бы могли использовать x так:


            use std::thread;
            
            fn main() {
                let x = &5;
            
                thread::spawn(move || {
                    println!("{}", x);
                });
            }
            Читать дальше →
          • Расставим точки над .NET Core и .NET Standard

            • Перевод
            .NET Core и .NET Standard — самые новые на сегодняшний день технологии .NET, поэтому совершенно неудивительно, что не только они, но и их отличия от платформы .NET Framework вызывают много вопросов. В этой статье я расскажу, что эти технологии из себя представляют и в каких случаях будет более логично выбрать каждую их.


            Читать дальше →
          • Наш облачный JS теперь ES2017, и это сокращает код в разы


              Вопреки распространенному мнению, облако Voximplant не использует Node.js, чтобы выполнять JavaScript код клиентов параллельно с голосовыми и видеозвонками. Каждый наш сервер одновременно управляет сотнями звонков: переключение голосовых и видеопотоков между звонками, запись, распознавание голоса, синтез, HTTP-запросы к внешним серверам, — вся вот эта история. А Node.js создана, чтобы работать в одиночку. Несколько сотен изолированных инстансов — это не про нее. Передерутся за память, ресурсы и все закончится очень печально. Поэтому у нас сильно изолированная и ограниченная по ресурсам песочница, которая не дает клиентскому JavaScript-коду в одной маленькой сессии нарушать работу целых серверов. Asterisk у нас тоже не используется по похожим причинам.

              До недавнего времени мы поддерживали синтаксис ES5. Типовой сценарий работы с коммуникациями — это несколько сотен, максимум, тысяч строк кода. Сложные штуки клиенты все равно выносят на собственный backend, а если нужен современный синтаксис, всегда можно воспользоваться транспайлером и автоматически отгрузить собранный JavaScript с помощью Continuous Integration.

              Но 2017 год обязывает, да и Web-редактор и отладчик клиенты любят и используют для быстрого создания нужных решений. Поэтому мы запилили поддержку ES2017 (не с нуля, естественно, а готовыми компонентами) и переделали обучающие материалы на современный лад. Под катом я хочу показать, насколько короче и понятнее становится код, если пользоваться современной нотацией JavaScript. Разница впечатляет.
              Читать дальше →
              • +23
              • 7,2k
              • 7
            • Почему SQL одерживает верх над NoSQL, и к чему это приведет в будущем

              • Перевод

              SQL пробуждается и наносит ответный удар силам тьмы — NoSQL

              С самого начала компьютерной эры человечество собирает экспоненциально растущие объемы данных, и вместе с этим растут требования к системам хранения, обработки и анализа данных. Из-за этого в последнее десятилетие разработчики ПО отказались от SQL как от устаревшей технологии, которая не могла масштабироваться вместе с растущими объемами данных — и в результате появились базы данных NoSQL: MapReduce и Bigtable, Cassandra, MongoDB и другие.

              Однако сейчас SQL возрождается. Все основные поставщики облачных услуг предлагают популярные управляемые сервисы реляционных баз данных: Amazon RDS, Google Cloud SQL, база данных Azure для PostgreSQL (запущена буквально в этом году) и другие. Если верить компании Amazon, ее совместимая с PostgreSQL и MySQL база данных Aurora стала «самым быстрорастущим сервисом в истории AWS». Не теряют популярности и SQL-интерфейсы поверх платформ Hadoop и Spark. А в прошлом месяце поддержку SQL запустила и Kafka. Авторы статьи скромно признаются, что и сами разрабатывают новую базу данных временных рядов, которая полностью поддерживает SQL.

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

              Переведено в Alconost

              Часть 1. Новая надежда

              Читать дальше →
            Самое читаемое