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

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

    Я ошибался.
    Увиденное под катом уже не развидеть
  • 24-летний студент начал войну против Facebook



      24-летний студент юридического факультета Венского университета Макс Шремс (Max Schrems) вот уже несколько месяцев ведёт неравный бой с компанией Facebook. Всё началось с того, что Макс отправил несколько грамотно составленных запросов и добился-таки, что из калифорнийского офиса ему прислали CD-диск со всеми персональными данными, собранными за три года активности на сайте.

      Каждый гражданин может потребовать у Facebook выдачи ему в течение 40 дней всей собранной на него персональной информации. На сайте есть специальная форма для такого запроса. Вам придёт CD с файлом PDF объёмом несколько сотен мегабайт и более 1000 страниц. Макс Шремс получил PDF из более 1200 страниц, вся информация в файле была разбита на 57 категорий (работа, образование, друзья, политические взгляды, хобби, фотографии и т.д.). Как говорит Макс, даже у КГБ не было такого полного досье на граждан.

      Но самое удивительное, что среди всего прочего в присланном файле были удалённые сообщения, чат-сессии, имена бывших друзей и другие данные с пометкой deleted:true.
      Читать дальше →
    • Разработка привлекательных реалистичных пользовательских интерфейсов

      • Перевод
      Cекрет разработки привлекательных интерфейсов заключается в реализме. Ваша задача — придать плоским элементам объём, используя свойства реальных объектов, вроде неровностей и шероховатостей, бликов и теней, различных текстур поверхностей. В идеале они должны выглядеть как предметы на вашем столе. Создавая классный интерфейс, в первую очередь нужно думать не «как», а «почему».
      Читать дальше →
    • Как обелить свой телефон

        Так получилось что сегодня наткнулся на уже подзабытую, но все еще актуальную, тему отключения «серых трубок». Судя по новости, массовые репрессии в обозримом будущем всё таки начнутся. Так, что буду рад поделится своими знаниями с теми, для кого эта проблема всё еще актуальна.

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

        Для законопослушных граждан, которые в силу тех или иных событий стали счастливыми обладателями таких трубок, есть несколько официальных способов легализации, но все они весьма бюрократичные, и неудобные, а в некоторых случаях неприменимы вовсе. Но к счастью есть «lite» метод легализации, который то ли был оставлен специально, для своих, то ли для реселлеров, то ли появился когда народу стало совсем плохо, но простые потребители, как правило, о нем не знают…
        Читать дальше →
      • Постмортем iPhone игры Finger Physics

          Игра Finger Physics была разработана московской командой PressOK Entertainment (Reaxion) и выпущена в сентябре 2009 года на платформе iPhone/iPod. Игра попала в Top-5 платных приложений в США, а бесплатная версия заняла почетное первое место. Finger Physics в разы окупил свой бюджет, был загружен более 2,5 млн раз, получил множество положительных рецензий и успел побывать в руках у самого Стива Джобса (пруфлинк) на январской презентации iPad.

          Наша компания занимается разработкой мобильных приложений последние 9 лет, и эта игра стала первым опытом iPhone-разработки для команды. Мы всегда с интересом читаем истории об успехах других разработчиков и хотим поступить точно также по отношению к тем, кто еще только начинает разрабатывать игры под iPhone.

          Finger Physics начинался как личная разработка сотрудников, в свободное от основной работы время, в итоге став полноценным проектом компании, принесшим бесценный опыт разработки на новой платформе и кардинально поднявшим моральный дух команды.

          Читать дальше →
        • Как правильно покупать товары на Ebay

            image
            Тема Ebay в связи с его русификацией становится очень актуальной, поэтому решил поделиться с хабрасообществом несколькими советами из области как правильно покупать товары на Ebay, чтобы не нарватся на мошенников и сделать правильную покупку. Большая часть описанного основана на личном опыте.
            Читаем далее
          • Установка 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
                    Читать дальше →
                  • Ваша домашняя страница

                      image
                      Стартовых страниц очень много, но учитывая сколько раз в день мы их открываем,
                      хотелось бы иметь что-то приятное глазу и востребованное.

                      Сайт fav4.org имеет легкий и привлекательный дизайн
                      цель которого быстрый доступ к популярным ресурсам.

                      Читать дальше →
                    • Ez-12 Parabolic Reflector Template / Усилитель WiFi сигнала для домашней точки доступа

                      • Перевод
                      1. Скачиваете шаблон
                      2. (можно пропустить, см. примечание) Открываете в редакторе и изменяете размер, сохраняя квадрат квадратным
                      3. Печатаете на тонком картона (бумага для печати визиток или бумажная папка для документов)
                      4. Делаете прорези
                      5. На одну сторону прямоугольной детали (рефлектора) приклеиваете фольгу
                      6. Собираете, вставляя шесть лепестков в шесть прорезей.

                      Примечание: Если распечатать оригинального размера — получите усиление сигнала в 9 дБ (8 раз), если увеличите вдвое — 12 Дб (16 раз). Если на роутере две антенны — сделайте по усилителю на каждую.

                      Примечания переводчика:

                      7. Наденьте усилитель на антенну роутера :-)

                      Я сделал из коробки из-под конфет — не мучайтесь поисками бумажных папок из-под документов. Только гофрированный картон не берите, неудобно. ОНО РАБОТАЕТ! Раньше телефон уже на выходе из комнаты терял сеть, теперь в любом углу ютьюб без заиканий играет. Замеров не делал, не обессудьте. Но усилий нужен минимум на изготовление — думаю проще сделать самому и попробовать, чем таблицу с цифрами читать.

                      P.S. Вот видео:
                    • Упрощение полилинии методом Дугласа-Пекера

                        Предисловие

                        Недавно на работе задали задачу — есть клиент с GPS устройством. Ходит, он значит по городу и записывает на это устройство каждую секунду координату своего местонахождения. Потом заходит на наш сайт и отправляет файл с записями маршрута. И в ответ получает изображение карты и поверх нарисованный маршрут по которому он двигался. Все вроде бы ничего, но есть одна проблемка — клиент может записывать хоть целый день и прислать громадный файл, а отрисовка маршрута занимает очень много времени. А он ведь мог идти по прямой линии и тогда смысл отрисовывать все точки отпадает(ценных только две крайних). Тем более рисуется она на JavaScript на клиентской стороне и если клиентская сторона это мобильное устройство вполне вероятно что маршрут он не увидит((
                        И потому мне надо было сделать небольшую оптимизацию — оптимально упростить ломанную линию. Для этой задачи существует метод Дугласа-Пекера, но на русском описания этого метода я не нашёл, поэтому я решил заполнить этот пробел рунета.
                        Читать дальше →
                      • Ipod Nano 2 gen с RockBox через загрузчик iLoader

                          Вступление


                          Приветствую Тебя читатель.
                          Сегодня мы займёмся модернизацией плеера компании Apple — Ipod Nano 2 gen

                          Совсем недавно, в октябре 2009 года, на сайте альтернативной прошивки rockbox появилась информация о успешном её портировании на плеер Ipod Nano 2-го поколения

                          Rockbox

                          Вот выдержка из Википедии:
                          Rockbox — это свободное программное обеспечение для замены встроенных прошивок цифровых аудио плееров. Проект Rockbox начался в конце 2001 года и был впервые реализован на плеере Archos Studio.
                          Rockbox предлагает альтернативу встроенному программному обеспечению плеера, во многих случаях без удаления первоначальной прошивки. Внутреннее устройство Rockbox позволяет наращивать функциональность за счёт использования модулей расширения. Улучшение функциональности включает в себя приложения, утилиты и игры. Rockbox может обеспечить (retrofit) воспроизведение видео для плееров, выпущенных в середине 2000-х годов. Также Rockbox содержит управляемый голосом пользовательский интерфейс, подходящий для использования людьми со слепотой или повреждённым зрением.

                          Как раз у меня сломался мой основной плеер и я подбирал подходящую альтернативу для него.
                          Не долго думая я пошёл на ebay и заказал за 60$ Ipod Nano 2 gen 8Gb

                          Ipod Nano 2 gen

                          Пока плеер ехал в Челябинск я принялся изучать варианты установки.
                          Читать дальше →