• Когда идентификатор — не идентификатор или монгольский разделитель гласных атакует

    • Translation

    Примечания переводчика
    В переводе я позволил себе использовать некоторые англицизмы, такие как «валидный», «нативный» и «бинарник». Надеюсь с ними вопросов не возникнет.

    Идентификаторы (identifiers) – специальный термин спецификации C# отожествляющий собой всё к чему можно обратиться по имени, как например название класса, имя переменной и т.д.

    Roslyn – компилятор C# кода, написанный на C#. Был создан взамен существующего csc.exe. Я обычно опускаю слово компилятор в данном тексте.

    Для начала несколько вещей о которых вы могли не слышать:
    • Идентификаторы в C# могут включать в себя escape-последовательности Unicode символов (как например \u1234).
    • Идентификаторы в C# могут включать в себя Unicode символы категории Cf (other, format), но при сравнении идентификаторов на идентичность эти символы игнорируются.
    • Символ «Монгольский разделитель гласных» (U+180E) в зависимости от версии Unicode принадлежит либо категории Cf (other, format), либо категории Zs (separator, space).
    • В .NET хранится свой собственный список Unicode категорий, независимый от оных в Win32.
    • Roslyn является .NET приложением, и поэтому использует Unicode категории, прописанные в файлах .NET. Нативный компилятор (csc.exe) использует либо системные (Win32) категории, либо хранит в себе копию таблиц Unicode.
    • Никакая из таблиц Unicode символов (ни .NET, ни Win32) точно следует какой-либо из версий стандарта Unicode.
    • Компиляторы могут иметь баги.

    Из всего этого вытекают некоторые проблемы…

    Во всём виноват Владимир


    Все началось с обсуждения на собрании технической группы ECMA на прошлой неделе. Мы рассматривали «нормативные ссылки», и в частности какую версию стандарта Unicode мы будем использовать. На тот момент спецификация ECMA-335 (4-ое издание) использует Unicode 4.0, а спецификация C# 5 от Microsoft использует Unicode 3.0. Я точно не знаю, учитывают ли разработчики компиляторов такие особенности. На мой взгляд было бы лучше, если ECMA и Microsoft не указывали конкретную версию Unicode в своих спецификациях. Пусть разработчики компиляторов используют самую свежую версию Unicode, доступную на текущий момент. Однако тогда компиляторы должны будут поставляться со своей личной копией таблицы Unicode, что немного странно, на мой взгляд.
    Читать дальше →
  • Капитан Америка vs VirtualSurfaceImageSource


      Введение


      Большую часть времени, разработка под Windows Runtime приносит ни с чем не сравнимое удовольствие. Дел-то всего ничего: налепил контролов, добавил щепотку MVVM, а потом сидишь, и любуешься своим кодом. Так происходит в 99% случаев. В оставшейся сотой доле, начинаются настоящие пляски с бубном.

      На самом деле, я утрирую, к языческим ритуалам прибегаю только в совсем безвыходных ситуациях. А вот WP разработчикам есть за что поругать MS, начав хотя бы с бедных Silverlight разработчиков, на долю которых пришлись все несчастья. Ну да ладно, это всё уже в оффтопик ушло.

      Кэп, ты где?


      Итак, мысленно перенесемся в гипотетическую ситуацию. У нас есть приложение, пусть это будет клиент для kinopoisk.ru под Windows 8.1. И постер какого-либо голливудского AAA проекта с многомиллионным бюджетом и супергероями из любимых нами комиксов. Задача – отобразить пользователю постер в идеальном качестве. Под словом «идеальное» я имею в виду соответствие 1 пиксель изображения == 1 пиксель физический.

      Казалось бы, пустяк, создаем Image и присваиваем его свойству Source нужный BitmapImage с картинкой. Вот только размер картинки настораживает – 9300 x 12300. Взяв в руки калькулятор, начинаю считать: 9300 * 12300 пикс * 4 Б/пикс = 436 МБ. Довольно внушительная цифра, но в 21 веке такими вещами уже не удивишь. Средний настольник 2010 года без проблем переваривает такие объемы данных, так что жмём F5 и наслаждаемся своим творением. Всё отлично работает, по меньшей мере на моём компьютере, и ладно. На этом статью можно было бы и закончить…
      Читать дальше →
    • Jailbreak для Windows RT


        Спустя чуть более 2 месяцев в сети появился долгожданный jailbreak для Windows RT. Была найдена уязвимость в ядре Windows, позволяющая запускать неподписанные Desktop-приложения. К сожалению, данный jailbreak является привязанным, т.к. после перезагрузки превращается в тыкву.
        Забавно, что уязвимость была найдена на настольной Windows 8, а оттуда уже перекочевала на Windows RT. Подробнее об этом процессе написано здесь.
        Читать дальше →
      • Вышли Windows 8 Release Preview, Visual Studio 2012 RC, Windows Server 2012 RC и TFS 2012 RC



        Сегодня Windows 8 Release Preview доступен для загрузки на 14 языках, в том числе и на русском. Как пишет Стив Синофски, за ней уже будет следовать RTM, так что ждать осталось совсем немного. Напомню, что выход Release Preview был запланирован на первую неделю июня этого года соответственно. Windows Server 2012 RC и Visual Studio 2012 RC стали доступны чуть раньше.
        Читать дальше →
      • Вышел HSPL и RSPL для WP7 HTC девайсов

          Спешу сообщить всем обладателям данных устройств радостную новость — сегодня, первого числа августа, Cotulla вместе с Dark Forces Team выпустил HSPL и RSPL!


          Список поддерживаемых устройств
          • Gold (HTC Pro 7,T7575)
          • Mozart (HD3,T8697,T8698,T8699)
          • Mondrian (Surround,T8788)
          • Spark (Trophy,T8686)
          • Schubert (HD7, T9292,T9295,T9296)


          Тема на xda-developers.com

          Для танкистов

          HSPL и RSPL позволяют использовать кастомные ROM'ы (без цифровой подписи). Думаю многие помнят HTC HD2.
          Ожидаю появление прошивки, портированной с HTC Desire HD.

          P.S. Пока не прошивал, сейчас займусь. При успехе отпишусь. Девайс — HTC HD7.
          UPD: Прошился успешно!
        • Анимации в WPF

          Предисловие


          Приветствую вас, дорогие хабраюзеры! Сегодня я хочу вам рассказать об анимации в WPF. О ней, конечно, писали ранее на хабре, однако я постараюсь рассказать подробнее. Мой пост будет скорее больше теоретический, однако, я надеюсь, вы извлечете из него выгоду.
          Анимация в WPF отличается от всего, что вы видели раньше своей наглядностью и простотой. Раньше вам приходилось вручную перерисовывать сцену по таймеру, разумеется, написав довольно большой объем кода. Теперь вы можете создать анимацию в XAML файле, не написав ни единой строчки кода на C# (или любой другой .Net язык). Разумеется, осталась возможность создавать анимацию в коде, но об этом поговорим позднее. Анимация в WPF не перерисовывает элемент, а изменяет его свойства через определенные интервалы времени (по умолчанию около 60 раз в секунду, если вы не измените в Storyboard). Это позволяет ей оставаться самой собой, например, если анимировать кнопку, то во время анимации она будет оставаться «кнопкой», т.е. на неё можно будет нажать, и производить разнообразные манипуляции над ней.

          Много кода, примеров и картинок под катом…
          Читать дальше →