Pull to refresh
64
0
Send message

Visual Studio 11 -> Visual Studio 2012?

Reading time 1 min
Views 3.4K
Только что заметил в MSDN:

image

Официальной новости о присвоении имени найти не удалось.

Непреднамеренная утечка? Ошибка?

p.s. То, что 11 — внутренний номер версии, а не год, было понятно. Не было понятно, каким будет финальное название продукта. 2012, 2013, RT или что ещё. Официальных заявлений на эту тему не было.

На MSDN до последнего времени висела надпись Visual Studio 11. И изменение её на 2012 какбэ намекает…
Total votes 32: ↑10 and ↓22 -12
Comments 12

.Net, UTF-16 и регулярные выражения

Reading time 3 min
Views 2.3K
Как-то мне понадобилось проверить, является ли XML-имя правильным. Что может быть проще? Смотрим стандарт, где четко описано, какими символами может имя начинатся, а какими — продолжаться, все просто и понятно:

[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]
[5] Name ::= NameStartChar (NameChar)*


Практически готовое регулярное выражение, легкая обработка напильником Ctrl+H…

    public const string NameStartCharPattern = @"\:|[A-Z]|_|[a-z]|[\u00C0-\u00D6]|[\u00D8-\u00F6]|[\u00F8-\u02FF]|[\u0370-\u037D]|[\u037F-\u1FFF]|[\u200C-\u200D]|[\u2070-\u218F]|[\u2C00-\u2FEF]|[\u3001-\uD7FF]|[\uF900-\uFDCF]|[\uFDF0-\uFFFD]|[\u10000-\uEFFFF]";
    public const string NameCharPattern = NameStartCharPattern + @"|-|\.|[0-9]|\u00B7|[\u0300-\u036F]|[\u203F-\u2040]";
    public const string NamePattern = @"(?:" + NameStartCharPattern + @")(?:" + NameCharPattern + @")*";

* This source code was highlighted with Source Code Highlighter.


Пишем тест…
Assert.That(Regex.Match("4a", Patterns.NamePattern), Is.False);
* This source code was highlighted with Source Code Highlighter.

Чисто, просто, понятно… Упал!
Как, почему?
Total votes 37: ↑31 and ↓6 +25
Comments 18

Атипичные клавиатуры

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

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

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

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

Их я и попытаюсь сегодня осмотреть.
Читать дальше →
Total votes 161: ↑148 and ↓13 +135
Comments 157

NuGet — качаем пакеты из интернета в процессе сборки

Reading time 3 min
Views 18K
UPD: Метод, аналогичный использованному здесь включен в поставку NuGet 1.6. Соответственно статья устарела.

Вот что мне всегда нравилось в джаве, так это Maven. Один файл со списком всего нужного, и никаких бинарников в репозитории. Когда появился NuPack, я решил — ура, вот оно, счастье пришло на нашу улицу. Но не тут то было. NuPack представлял удобный интерфейс для работы с пакетами… но без возможности нормально вкрутится в процесс сборки.

Поковырял я его тогда, посмотрел, но так реальной пользы и не увидел. Не больно большая помощь — качать ручными powershell-командами пакеты поименно. Ну да, удобнее, чем скачивать фиг знает откуда, да еще руками references добавлять, но ведь мне это далеко не каждый день нужно. В общем, игра не стоит свеч.

Но в один прекрасный день я понял, что с папкой Shared\Bin в моем сорц-контроле нужно что-то делать, ибо распухла она уже неимоверно. Решил глянуть я, не изменилось ли что-нибудь с NuPack-ом, который уже NuGet-ом стал именоваться? Нет, воз и дальше там.

Но у nuget.exe появилась интересная фича…
Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Comments 14

Частотный анализ украинского языка

Reading time 3 min
Views 14K
Понадобилась мне для благого дела таблица частот пар букв (так называемых биграмм или диграмм) для украинского языка. Причем не просто украинского языка, а современного живого интернет-языка, именного того, на котором происходит современное общение в украиноязычной среде. Единственные известные мне результаты были построены на довольно малой выборке, отличной от того, что мне нужно было, да и серьезная преобработка текста в них могла повлиять на результат (и наверное таки повлияла, но об этом далее).

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

Первая идея была сдампить кусок какого-то IRC канала. К сожалению ни одного активного живого флейма с отсечкой по языку я не нашел.

Следующая идея: форум.

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

… Сами виноваты, сказал я и запустил wget.

Читать дальше →
Total votes 77: ↑65 and ↓12 +53
Comments 152

OnPropertyChanged со строгими именами

Reading time 2 min
Views 4.5K
Меня дико бесит OnPropertyChanged. Он требует передачи ему строки с именем идентификатора… Мало того, что такой код не верифицируется компилятором, так еще и никакого Intellisence — тайпи весь идентификатор от начала до конца… А если опечатаешся — так проглотит и во время выполнения. Вобщем, нехорошая вещь. Но в MVVM без нее никуда, как и в WPF без MVVM.

Последняя проблема худо-бедно решалась вот таким костылем, содранным отсюда, который вызывался из OnPropertyChanged:
[Conditional("DEBUG")]
[DebuggerStepThrough]
public void VerifyPropertyName(string propertyName)
{
  // Verify that the property name matches a real, 
  // public, instance property on this object.
  if (TypeDescriptor.GetProperties(this)[propertyName] == null)
  {
    string msg = "Invalid property name: " + propertyName;

    if (this.ThrowOnInvalidPropertyName)
      throw new Exception(msg);
    else
      Debug.Fail(msg);
  }
}


И вот сегодня я совершенно случайно нашел красивый способ избавится от него.
Читать дальше →
Total votes 43: ↑28 and ↓15 +13
Comments 23

Две раскладки в одном флаконе

Reading time 2 min
Views 11K
Раньше мне приходилось использовать три раскладки клавиатуры. И в этом топике я хочу рассказать, как мне удалось сократить их число до двух. Эта хитрость универсальна и в большинстве случаев позволяет сократить количество раскладок к количеству алфавитов. Не претендую на оригинальность — идея лежит на поверхности, и сразу предупреждаю — если у вас и так только две раскладки — топик этот вам, скорее всего, не поможет.

Первая — английская, рабочая. Вторая — украинская, родная, основная для общения. Третья — русская, в общем обычно не используемая, разве иногда — погуглить что-нибудь, вот, на Хабре комент или топик написать. При этом третья раскладка висела в списке активных, но при работе и постоянном переключении украинская-английская-украинская постоянно приходилось нажимать лишний раз Alt+Shift или Ctrl+Shift. Кроме того, часто случалось, что начал печатать, вроде как все хорошо, ан нет — раскладка русская, вместо 'і' пошли 'ы', вместо 'є' — 'э', и тому подобное. Мучился я так, мучился, и вот в один прекрасный день решил это дело как-то
оптимизировать
Total votes 80: ↑61 and ↓19 +42
Comments 137

К айтишнику — на мальчишник

Reading time 1 min
Views 591
У меня женится боевой товарищ. Завтра. Сегодня будет боулинг, сауна и много пива. Чтобы это дело не превратилось в обычную пьянку, нужно сделать ему какой-то необычный подарок.

Например — такую вот футболку, за неимением времени на хорошую печать нарисованную CD-маркером от руки:


Да, знаю — код не совсем валидный, сначала параметром метода Where должна была быть лямбда. Но в целях экономии места на футболке часть "woman =>" была выброшена.
В числе других подарков — медаль «За мужество/Game over», бита с надписью «Последнее слово (то, что сверху)», розовый поводок для жены.

Ох, чувствую, напьюсь сегодня :)
Total votes 185: ↑90 and ↓95 -5
Comments 32

Введение в Continuous Integration

Reading time 5 min
Views 177K
Недавно я попал на новый проект, с задачей создать небольшое приложение с нуля. Разговариваю с тестером:
— А как тебе новые версии поставлять?
— Можешь как все остальные на проекте, через SVN.
— То-есть ты сама билдить будешь?
— Да нет… Бинарники оттуда беру.


Оказывается, очень много программистов, даже имеющих в подписях слова вроде Senior или Superior никогда в жизни не стыкались с понятием CI, или слабо себе представляют что это такое. Не найдя отдельных публикаций на Хабре на эту тему, решил восполнить пробел, а заодно и по возможности заработать желанный инвайт.
Читать дальше →
Total votes 104: ↑91 and ↓13 +78
Comments 65

Information

Rating
Does not participate
Location
Львов, Львовская обл., Украина
Date of birth
Registered
Activity