.NET

EF6 + async + varbinary(max)

05 April 2015 |

Неожиданных bug EntityFramework, есть 2 таблицы: AbstractObject ссылаетс на FileData, при этом в FileData есть столбец типа varbinary(max). Записей в таблице мало (по 2 строки в каждой), при этом в столбце varbinary(max) таблицы FileData содержится порядка 30Мб данных. Обычная ситуация – всё максимально просто и запрос который вызвал проблемы тоже очень простой. var q = from cf in ctx.AbstractObject         where cf.Id == id         select cf.FileData; ...

ClickOnce Change URL

15 November 2014 |

Технология ClickOnce облегчает поддержку большого количества “клиентов” в актуальном состоянии. Если в компании приложением пользуются больше одного-двух пользователей, а обновления приложения частые – очень удобно, у пользователей всегда актуальная версия автоматически. Но что делать если компаний много, выполнять для каждой билд с параметрами сервера конкретной компании… можно, только зачастую параметры окружения (имена серверов, порты) становятся понятны только непосредственно перед установкой. Есть способ настроить дистрибутив не выполняя сборку проекта, для этого Microsoft предлагает утилиту mage.exe, но халявы нет, чтобы решить задачу нужно выполнить не один шаг. Вот пример скрипта как настроить url, откуда будет происходить установка и проверка обновлений, в...

WPF Future

21 September 2014 |

Статья “Is WPF dead: the present and future of WPF” – понравилось, правильная постановка вопроса и хорошая аргументация. Вопрос стоит ребром: за какими клиентскими технологиями будущее, во что инвестировать силы/время для получения знаний и навыков: что выбирать Web (HTML 5 + JavaScript) или WinRT. С одной стороны первый вариант “универсальный” и не устареет,  с другой Device/OS Native приложения приятней разработчикам и пользователям. Старая дилемма, все помнят о Silverlight, что происходит устройствами под Windows тоже не ясно – а следовательно какое будущее у WinRT – вопрос. Вывод: посмотрим что будет, через 1-2 года всё станет понятно или не надо ничего...

Outlook Custom Forms

19 August 2014 |

Заметка специфическая, если не интересуетесь разработкой addin-ов под Outlook можно смело дальше не читать. В Outlook есть такое понятие Custom Forms, с помощью API их можно создавать и помещать в репозиторий FormDescription.PublishForm при этом репозитории могут быть разных типов OlFormRegistry: olPersonalRegistry: The Form is registered in the user's personal registry and is only accessible to that user. olFolderRegistry: The Form is registered in a form registry specific to a particular folder, and can only be accessed from that folder. А теперь внимание функции удалить из репозитория НЕТ, когда такие косяки...

CDN In ASP.NET MVC Bundling

03 August 2014 |

Чистого JavaScript-а недостаточно и фактически разработчики используют достаточно большой набор стандартных/одинаковых библиотек. Благодаря кешированию контента браузерами и CDN (Content Delivery Networks) технологии, затраты на загрузку библиотек на клиент можно сделать не сильно болезненными. Идея проста храним все стандартные скрипты файлы в облаке, загружаем один раз а потом любое приложение может ими пользоваться не выполняя повторную загрузку, в статье CDN in ASP.NET MVC bundling описано как все круто (It’s every easy. Hope you like it. Stay tuned for more!!.) Когда говорят что всё хорошо это значит что вам не хотят говорить что плохо. А что будет если облако перестанет быть...

Async/Await In TransactionScope

31 July 2014 |

Обновления .NET Framework с версии 4.5 до 4.5.1 и 4.5.2 ничего серьезно нового не принесли. Среди разработчиков часть об обновлениях вообще не слышали и не знают, часть не видят смысла и необходимости устанавливать их. Для себя обнаружил улучшение, которое явилось достаточным основанием перевести проект на .NET 4.5.2, а именно начиная с версии 4.5.1 для TransactionScope появилась настройка TransactionScopeAsyncFlowOption, без неё нельзя выполнить код вида await ctx.Some.FirstOrDefaultAsync(….) внутри TransactionScope подробней: Get TransactionScope to work with async / await.

RenewCert

07 November 2012 |

Microsoft has screwed up with its ClickOnce deployment in Visual Studio 2005©. You are required to have a certificate in order to sign the ClickOnce manifests and, by default, you create one with an expiry of one year RenewCert Вот собственно и все, действительно по умолчанию сертификат создается сроком на один год, а потом если создать новый и опубликовать обновление своего приложения то пользователь вместо обновления приложения увидит: The deployment identity does not match the subscription. Uninstall the ClickOnce application that you signed by using...

Turn Off Monitor

14 October 2012 |

Идя на обед блокирую компьютер, из-за чего-то иррационального ещё и выключаю монитор (хотя он и сам по себе через некоторое время отключится), если два монитора – каждый отключается “лично”. Простая, мелкая, но приятная фича – автоматически выключать мониторы при блокировки компьютера – как? – случайно в новостной рассылке увидел. Придется написать код и оформить как положено – это плюс или минус… Вот: How to turn off your monitor when you lock your machine

Dynamic LINQ

11 October 2012 |

Вопрос: Можно ли динамически составлять LINQ выражения? Ответ: Конечно можно. Вопрос: А как? Ответ: … уже сложней. Встречный вопрос: А зачем? Ответ: К примеру формировать сложные/разнообразные условия для поиска. Раньше для таких задач динамически формировали SQL, сейчас LINQ, а уж SQL провайдер сам сгенерирует. Первое что выдает поиск по данной теме: Dynamic LINQ, так же есть LinqTextQueryBuilde, какого-то официального удобного способа нет, что сразу же настораживает и может быть разумней выбрать альтернативное решение, чтобы не увеличивать риски разработки. Рискнул попробовать, использовал Dynamic LINQ – представляет собой C# файл на 2000 строчек кода. Сразу же...

Who Is Mr. GUID

07 August 2012 |

Одно из традиционных развлечений разработчиков на отдыхе, поспорить/порассуждать о GUID-ах – доступная тема с примесь философии. Замечательные статьи дающие ответы/аргументацию: Руководство по GUID. Часть 1 Руководство по GUID. Часть 2 Руководство по GUID. Часть 3 Перевод блога Эрика Липперта