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

    • Перевод
    // <какой-то код>
     
    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 в приведенном выше фрагменте, не допуская неопределенного поведения.

    Я ошибался.
    Увиденное под катом уже не развидеть
  • Установка Windows 8 Developer Preview для ленивых

      Задача: поставить Windows 8 Developer Preview поиграться.

      Условия: старая винда должна выжить, привода DVD нет, большой флешки на десять гигов тоже.

      Классические решения:

      1. Поставить в виртуалку. Это медленно, нужен дополнительный софт и без хардварной виртуализации ничего не заработает.
      2. Поставить на другой жёсткий диск. Увы, в ноутбук второй винт не вставишь, да и нету его у меня.
      3. Выделить отдельный раздел на винте. А это ставить лишний софт, танцевать с бубнами вокруг разделов… Лениво!

      К тому же последние два варианта обычно требуют физический DVD, которого нет. Выход? VHD!

      Кроме ISO образа Windows 8 нам также понадобится установленная Windows 7 — более ранние версии не умеют работать с VHD. А из под Linux мы не сможем так просто запустить инсталлятор.

      Читать дальше →
    • Атипичные клавиатуры

        Говорят, что обычная QWERTY-клавиатура была изобретена с целью уменьшить скорость набора, потому что у слишком быстрых машинистов первые машинки клинили. Не знаю, сколько в этом утверждении правды, но то, что раскладка далеко не идеальна — факт. Факт также то, что разрабатывалась она для печати десятью пальцами на больших клавишах размещенных в три ряда.

        В неизменном виде она перекочевала на электрические пишущие машинки, а затем и на компьютерные клавиатуры, где все стало ещё удобнее — теперь клавиши срабатывали от легкого нажимания, и по ним не приходилось лупить со всей дури.
        Все было бы просто отлично, если бы не страсть к минимизации. Ноутбуки, нетбуки, классические смартфоны (не «тачфоны») — QWERTY-клавиатура стремительно уменьшалась в размерах, сохраняя при том свою сущность. Для некоторых таких творений впору вести набор спичками. Были и неплохие инженерные решения — например на Sony-Ericsson M600i клавиши-качели содержали по две-четыре символа, и они выбирались в зависимости от способа нажима.

        Но когда это добро перекочевало на экраны… возьмем в качестве образца айфон(да, исторически первым [массовым] тачфоном все-таки было яблоко): три с половиной дюйма диагонали, отношение сторон — 2:3. Кто помнит теорему Пифагора, какова ширина экрана?
        x² + (3x/2)² = 3,5²
        x² = 49/13
        x ≈ 1,94" ≈ 49,3мм.
        Итак, ширина экрана — меньше 5 сантиметров. В ряду — 10 клавиш. Получается — около 5 мм на клавишу, и это включая промежутки между ними. Не знаю как у вас, а меня пальцы ощутимо шире, да и печатать на приборе таких размеров я могу только одним, ну максимум двумя большими пальцами одновременно. Ну не могу я печатать на ЭТОМ, при всей его умности! Хватит обратной совместимости! Я печатать вслепую научился за неделю, так дайте мне клавиатуру, где не придется целится в клавиши! Я её изучу! Я хочу комфортно и быстро печатать!

        Видно, не у меня одного пальцы толще, чем спички, и не перевелись смелые программисты, которые готовы обрубить обратную совместимость, ведь в маркете можно найти несколько клавиатур, которые не имеют с QWERTY ничего общего.

        Их я и попытаюсь сегодня осмотреть.
        Читать дальше →
      • Лучшие музыкальные плееры для вашего телефона под управлением Android

        • Перевод
        Представляю вам вольный перевод статьи "Round Up: Great Android Music Players"

        Давайте посмотрим правде в глаза. Думаю, большинство обладателей телефонов с операционной системой Android согласятся с тем мнением, что плеер, поставляемый в комплекте с операционной системой является сухим и безжизненным на фоне плееров iPhone или iPad.

        Одно из величайших особенностей платформы с открытым кодом является написание новых приложений. Открытость платформы создает конкуренцию, а конкуренция является важным фактором для конечного пользователя, т.к. она заставляет производителей приложений снижать их стоимость (если они платные) и повышать качество продукции. К счастью, появилась конкуренция и среди плееров для Android. Сегодня мы рассмотрим лучшие плееры для Android и скажем, что их выделяет на фоне других плееров.
        Под катом обзор плееров, их скриншоты и QR-коды
      • Разработка приложений под электронную книгу Barnes&Noble Nook

          image

          Введение


          Недавно мы (mynook.ru, первый пост, второй пост) открыли свой профиль на reformal.ru, где нас начали спрашивать как самому писать приложения под нук, а так же просили выложить исходники FBReader'а.
          Все исходники вы теперь можете найти на гуглокоде, а вот насчет первого я постараюсь сейчас рассказать.

          Большое спасибо отличному дизайнеру nilov за то что помог мне оформить картинками этот пост, за то, как он хорошо передизайнил иконки и за непосредственно перевод Nook'а.

          На кого расчитано


          Я предполагаю, что человек, который будет читать дальше знает азы разработки под андроид (если быть точнее, то под 1.5) и соответственно прошу не задавать вопросов про азы андроида и уж тем более не обсуждать то, как купить нук в россии/украине/etc…
          Читать дальше →
        • Вожделенный Nexus One за ~$620 в Украине/России или как не платить перекупщикам

            Что делать если хочеться заполучить вожделенный Nexus one, но не хочется переплачивать 200-300 баксов перекупщикам?
            image
            Есть варианты, как купить телефон напрямую от Google и получить его домой примерно за $620 USD
            Читать дальше →
          • Украшаем Windows

              Хочу поделиться с вами небольшой находкой. Я всегда использовал рабочий стол в компьютере не для хранения ярлыков, а скорее как красивую картинку. Ведь часто компьютер стоит просто влюченым, но не используется по прямому назначению. Можно поставить красивую обоину, прилепить пару нужных гаджетов, и вуаля! Сразу другой вид.

              Одно время сидел в Убунте, там со всеми этими украшательствами как-то попроще было. А для винды найти хорошую софтину, чтобы выглядела прилично, чтобы не жрала половину процессора и памяти, чтобы было все настраиваемо под конкретного пользователя — было проблемой. Но буквально на днях наткнулся на замечательную программу — Rainmeter. Она позваляет сделать (возможно) ваш рабочий стол таким, каким им бы хотели видеть именно вы. Вот один из примеров (кликабельно), остальные подробности под катом.

              Господа, данный пост предназначен только для тех, кто заинтерисован в этом. Просьба не писать комментарии типа «А у меня стоит тема Windows Classic, черный монотонный фон, и вообще Far the best!». Спасибо.


              Подробности...
            • Горячие клавиши Windows 7

                Предлагаю вашему вниманию список хоткеев, использование которых делает работу с Windows 7 ещё более удобной (в скобках — альтернативный способ сделать то же самое):

                Управление окнами


                • Win+Home: Свернуть/развернуть все окна, кроме активного. («Потрясти» окно)
                • Win+Space: Сделать все окна прозрачными. (Задержать курсор над небольшой кнопкой в правом нижнем углу экрана.)
                • Win+Up: Развернуть активное окно на весь экран. (Перетащить окно вверх до упора, или дважды кликнуть по верхней рамке)
                • Win+Down: Свернуть активное окно или восстановить размер, если оно развёрнуто на весь экран
                • Shift+Win+Up: Развернуть окно по высоте (Перетащить нижнюю границу окна до таскбара)
                • Win+Left/Right: Занять окном левую/правую половину монитора, или восстановить размер (Перетащить окно влево/вправо до упора)

                больше хоткеев!
              • Быстрый доступ к оснасткам Windows

                  Вводить в диалоге «Выполнить» (Win+R) или в поисковой строке Пуска (начиная с Vista, работает не для всего). Для домашних версий ОС некоторые оснастки могут отсутствовать.

                  ncpa.cpl — сетевые подключения. Всегда раздражало, что в Vista нет прямого доступа к сетевым подключениям, а смотреть свойства и включать/выключать сетевые интерфейсы надо. Для Windows 7 это менее актуально — там сеть как-то ближе.

                  compmgmt.msc — управление компьютером. Я часто захожу туда, чтобы посмотреть что расшарено, как размечены диски, чтобы остановить или перезапустить какой-либо сервис. Там же список устройств подключенных к компьютеру.

                  secpol.msc — политики безопасности. В WinXP SP2, помню, только там можно было поставить флаг чтобы компьютер мог быть перечислен в любом сетевом окружении. Для Vista более интересен флаг, который позволяет убрать UAC для админов. Если ты под админом, то не нужно постоянно подтверждать каждое свое действие. В Windows 7 по умолчанию настройки таковы, что изменения системных предпочтений не приводит к появлению окна UAC. Что сильно уменьшает желание его отломать =)

                  control userpasswords2 — хранящиеся в системе пароли. Здесь можно обнулить запомненный пароль. Более интересный вариант — возможность зайти в другую системы под другим аккаунтом. А то зайдешь на расшареное на другом компьютере, потом настройки безопасности перетрясешь — а стучишься по-умолчанию со старыми учетными данными.

                  msconfig — перечисление запускаемых при старте ОС программ. ИМХО лучше использовать Autoruns от SysInternals, но когда их нет, msconfig тоже может помочь отключить всякую гадость, которая тормозит старт системы.

                  rundll32.exe sysdm.cpl, EditEnvironmentVariables — переменные окружения. Да, запомнить невозможно. Но один раз введя в диалог выполнить, можно потом вызывать из истории команд.