• Неконстантные константные выражения

    • Перевод
    // <какой-то код>
     
    int main ()
    {
            constexpr int a = f ();
            constexpr int b = f ();
     
            static_assert (!= b, "fail");
    }

    Можно ли в приведенном выше фрагменте вместо комментария вставить такое определение f (), чтобы a получила значение, отличное от b?

    “Разумеется, нет!” — скажете вы, немного подумав. Действительно, обе переменные объявлены со спецификатором constexpr, а значит, f () тоже должна быть constexpr-функцией. Всем известно, что constexpr-функции могут выполняться во время компиляции, и, как следствие, не должны зависеть от глобального состояния программы или изменять его (иными словами, должны быть чистыми). Чистота означает, что функция при каждом вызове с одними и теми же аргументами должна возвращать одно и то же значение. f () оба раза вызывается без аргументов, поэтому должна оба раза вернуть одно и то же значение, которое и будет присвоено переменным a и b… правильно?

    Еще неделю назад я знал, что это правда, и действительно думал, что невозможно пройти static_assert в приведенном выше фрагменте, не допуская неопределенного поведения.

    Я ошибался.
    Увиденное под катом уже не развидеть
  • Фильтр Калмана

    • Tutorial


    В интернете, в том числе и на хабре, можно найти много информации про фильтр Калмана. Но тяжело найти легкоперевариваемый вывод самих формул. Без вывода вся эта наука воспринимается как некое шаманство, формулы выглядят как безликий набор символов, а главное, многие простые утверждения, лежащие на поверхности теории, оказываются за пределами понимания. Целью этой статьи будет рассказать об этом фильтре на как можно более доступном языке.
    Фильтр Калмана — это мощнейший инструмент фильтрации данных. Основной его принцип состоит в том, что при фильтрации используется информация о физике самого явления. Скажем, если вы фильтруете данные со спидометра машины, то инерционность машины дает вам право воспринимать слишком быстрые скачки скорости как ошибку измерения. Фильтр Калмана интересен тем, что в каком-то смысле, это самый лучший фильтр. Подробнее обсудим ниже, что конкретно означают слова «самый лучший». В конце статьи я покажу, что во многих случаях формулы можно до такой степени упростить, что от них почти ничего и не останется.
    Читать дальше →
  • Dropbox: взгляд изнутри

    В этой статье я расскажу о внутреннем устройстве популярного сервиса облачного хранения Dropbox. В частности, будет затронуто устройство протокола Dropbox, а также показана статистика его использования в некоторых странах Европы. Кроме этого, я сравню его с другими сервисами, такими как iCloud, Google Drive и SkyDrive.

    Статья сугубо техническая. Не будет никаких сводных таблиц со стоимостью за Гб и анализом того, сколько еще можно получить за приглашенных «друзей».

    Текст основан на научной статье “Dropbox изнутри: Изучаем сервисы облачного хранения” (Inside Dropbox: Understanding Personal Cloud Storage Services). PDF
    Подробнее
  • Монада ContT в картинках (Haskell)

    На хабре уже были статьи про продолжения и монаду ContT. Я решил поделиться своим пониманием этого вопроса и снабдить его соответствующими иллюстрациями. В отличие от приведенной выше статьи, мне бы хотелось больше внимания уделить внутреннему устройству монады ContT и разобраться, как же она работает.
    Читать дальше →
  • Indie Game: The Movie

      Если честно, я удивлен, что до сих пор, на хабре, никто так и не заметил релиза этого замечательного фильма. Который состоялся почти месяц назад, 12 июня. А кто не слышал о нем, я, пожалуй, немножко расскажу:



      Indie Game: The Movie — документальный фильм, рассказывающий о нелегкой судьбе разработчиков самых популярных инди-игр Braid, Super Meat Boy и Fez. Фильм о разработчиках, пожертвовавших своими деньгами, здоровьем и рассудком, что бы воплотить в жизнь свои мечты и поделиться своим творческим видением со всем миром. Однозначно стоит посмотреть, даже тем, кто не связан с разработкой игр, т.к. очень мотивирует!
      Под катом трейлер и ссылки на полную версию
    • Меню для Yi

        Недавно я всё же решил сесть и разобраться с Yi — текстовым редактором наподобие Vim и Emacs, но написанном на Haskell. В комплекте даже есть Vim и Emacs симуляция.
        Из-за отстутствия опыта с Vim или Emacs, мне подошла лишь Cua-симуляция. Хоткеев там мало, но зато они привычные для меня. Поэтому я решил начать с него и написать настройку для себя.
        В обычных графических редакторах мне кажется удобным способ использования меню. Нажимаешь alt, открывается меню, где у каждого элемента подчёркнута буква, нажав которую, мы этот элемент выберем.
        Таким образом не надо запоминать все команды сразу, а можно начинать пользоваться, подглядывая в меню, постепенно доводя до автоматизма.
        Нечто подобное я решил прикрутить и в Yi.

        image
        Заглядываем под капот Yi
      • 10 «однострочников», которые произведут впечатление на ваших друзей

          За последнюю неделю появилось несколько топиков с названием «10 однострочников на <MY_LANGUAGE>, которые произведут впечатление на ваших друзей», которые содержат однострочное решение нескольких простых задач, демонстрирующее достоинства и «крутость» любимого языка программирования автора. Я решил перевести их и для сравнения собрать в одном топике. Вся волна началась (вроде как) со Scala.
          Итак, поехали!
          Читать дальше →
        • Переносим библиотеки Windows 7 на сетевые диски

          Появление полноценных библиотек в Windows 7 было моментально по достоинству оценено пользователями. Это действительно удобный механизм для управления, сортировки и поиска файлов, сгруппированных по категориям. Логичным продолжением повышения удобства работы с библиотеками будет перенос их на сетевые диски, что позволит ко всем прочим достоинствам иметь и групповой доступ к библиотекам. Так как у меня все данные хранятся на Windos Server 2008, его папки мы и будем подключать в качестве библиотек.
          Читать дальше →
        • LESS: программируемый язык стилей

          Я не люблю CSS. Он простой и понятный. Это движущая сила Интернета, но он слишком ограниченный и им трудно управлять. Пришло время привести этот язык в порядок и сделать его более полезным, используя динамический CSS при помощи LESS.
          Объясню свою позицию на примере. Почему бы вместо использования #FF9F94 для получения темно-персикового цвета просто не хранить значение этого цвета в переменной для её последующего использования? Что бы перекрасить сайт достаточно будет изменить значение переменной всего в одном месте и всё.
          Другими словами: это будет очень изящно, если мы будем использовать немного программирования и логики в CSS, что бы сделать его более мощным инструментом. Хорошо, что это всё возможно с использованием LESS.
          Так что же такое LESS?