Пишем код

Заметки о .net разработке

Archive for the ‘.net’ Category

Видеозапись семинара по итогам конференции DevCon-2014 в Rubius

without comments

Мы в Rubius очень давно не проводили семинары (с последнего, кажется, прошло уже 5 месяцев), поэтому решили восполнить пробел и поговорить о перспективах развития технологий и разработки на платформе Майкрософт.
Я кратко презентовал наиболее запомнившиеся мне моменты с конференции DevCon-2014, а потом мы достаточно бурно обсудили, что со всем этим технологическим счастьем делать и как дальше жить :)

Мои извинения за ужасный звук :)

P.S. презентацию выложу по запросу, но особой необходимости в ней я не вижу.

Written by Shaddix

Июль 6th, 2014 at 3:09 пп

Universal App — кроссплатформенное счастье с #ifdef’ами и рефакторингом

without comments

Еще на конференции Build 2014 майкрософтовцы рассказали о новом типе проектов — Universal App. Естественно, на прошедшем DevCon 2014 я постарался разузнать побольше об этом типе проектов, и как он может помочь при разработке под iOS/Android.

Microsoft традиционно акцентирует внимание на том, что UniversalApp поможет повторно использовать кода между WinPhone и WinRT приложениями, не слишком афишируя то, что начиная с Xamarin 3.0 этот подход сработает и для iOS и Android приложений.
Давайте попробуем и посмотрим, что же у нас получится :)
Read the rest of this entry »

Written by Shaddix

Июнь 12th, 2014 at 1:09 пп

Posted in .net,agile,iOS,xamarin

DevCon 2014, или два дня вообще зря что ты делаешь зачем это нужно

without comments

Мемориз по ДевКону, или краткий ответ на вопрос «а стоит ли», который неизменно возникнет через полгода, перед DevCon 2015 :)
Read the rest of this entry »

Written by Shaddix

Июнь 12th, 2014 at 10:10 дп

Дружим Android и Windows 8.1 по ADB (особенно с китайскими устройствами)

2 комментария

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

Проблема была в банальной невозможности подключиться по adb к стародавнему Android-планшету — CUBE U9GT2 :) Не нужно искать в этом приступы геронтофилии — как оказалось OpenGL на процессорах MTK работает слегка странно, и доставляет проблемы нашему приложению, поэтому дебаг был жизненно необходим :)

После подключения к компьютеру на Win 8.1 этот старичок категорически не находился в выводе adb devices, а значит и отладка на нём была невозможна.
Проблема разделилась на 2 части:
Read the rest of this entry »

Written by Shaddix

Апрель 18th, 2014 at 8:53 пп

Posted in .net,Android,xamarin

Доклад на DevPro-2014

without comments

Сегодня прошла вторая конференция DevPro, организованная компанией Rubius.

На ней я выступил с докладом «Кроссплатформенное приложение за 15 минут или Беды и победы мобильной разработки».
Посмотреть презентацию можно на СлайдШаре:

DevPro-2014: Кроссплатформенное приложение за 15 минут или Беды и победы мобильной разработки from Artur Drobinskiy

Исходные коды демо-приложения (вместе с iOS версией).

Лучи благодарности организаторам и всем слушателям — очень приятно было находиться в атмосфере мотивированных и заинтересованных профессиональных коллег :)

Жутко обрезаная видео-версия доступна на youtube:

P.S. Желающим посмотреть мой доклад 2013 года — добро пожаловать по ссылке.

Written by Shaddix

Апрель 5th, 2014 at 11:45 пп

Инъекция зависимостей и меняющиеся параметры в конструкторе

4 комментария

При использовании инъекции зависимостей у меня частенько возникают проблемы с конструкторами.
Посмотрим на простой пример класса — сервиса почтовой рассылки:

<br />
public class EmailSender<br />
{<br />
	public EmailSender(ISmtpClient smtpClient, string serverAddress)<br />
	{<br />
	}</p>
<p>	public void Send(string from, string to, string text)<br />
	{</p>
<p>	}<br />
}<br />

Какие у класса есть зависимости? Ему нужен SMTP-клиент, чтобы осуществлять отправку писем, а также необходим адрес смтп-сервера, который будет отправлять корреспонденцию.

Допустим, что у меня в проекте полная Инверсия Зависимостей и активно используются IoC-контейнеры. Какая возникает проблема?
ISmtpClient зарегистрирован в моем контейнере с ним проблем нет, но как сконфигурировать EmailSender адресом сервера? Непонятно.
Read the rest of this entry »

Written by Shaddix

Февраль 4th, 2014 at 9:31 пп

Posted in .net,agile,IoC

Xamarin и Garbage Collector на Андроид

2 комментария

При тестировании Андроид-версии нашего мобильного приложения, мы неожиданно начали замечать ощутимые проблемы в производительности — время от времени (достаточно регулярно) приложение «подвисало» на несколько секунд, а в некоторых случаях и вовсе вызывало ANR (Application Not Responding — такое замечательное окошечко, которое говорит, что приложение не отвечает и предлагает его закрыть).

Гугл подобных ситуаций дает подробные рассказы о проблемах с Garbage Collector’ами, и даже о том, что все языки с GC прокляты :) А сама проблема, обсуждать которую мы начали на форуме Xamarin’a, проявлялась в довольно странном факте:
Read the rest of this entry »

Written by Shaddix

Январь 18th, 2014 at 11:26 дп

Posted in .net,Android,xamarin

Xamarin и проблемы с камерой в iOS 7

without comments

7-я версия iOS принесла ряд разнообразных проблем при работе с камерой в наше iPad приложение.

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

При первом кадре съемка работала отлично. Но если мы сделали снимок, закрыли камеру, а потом решили снять еще один кадр — в «видоискателе» камеры показывался статичный предыдущий снимок. Никакие повороты или перемещения iPad’a не могли заставить камеру «показать» то, на что она направлена сейчас, на экране был лишь «замороженный» предыдущий снимок.
К слову, если таки сделать снимок «наугад», то он обновлялся без особых проблем «реальной» на тот момент картинкой, но такое поведение — это явно не то, к чему привыкли пользователи :)

Как часто и бывает в таких случаях, на stackoverflow казалось бы нашелся вопрос с точно такой же проблемой, но.. ответов на вопрос почему-то не было :)

Решение проблемы оказалось довольно простым — GC.Collect() в очередной раз нас спас :) А именно, после получения и обработки изображения с камеры, необходимо было «освободить» память, отвечавшую за сделанный снимок.
Cделано ли это ограничение в iOS 7 просто чтобы «заставить» программистов освобождать достаточно «тяжелые» Bitmap-объекты, или это объективная картина, которая случается при нехватке памяти в iOS сказать cложно. Но поиск и исправление подобных тонкостей работы безусловно доставит каждому столкнувшемуся немало приятных минут. Особенно, как в нашем случае, при обнаружении этого за пару дней до релиза :).

Written by Shaddix

Декабрь 29th, 2013 at 2:36 пп

Posted in .net,iOS,xamarin

Видеозапись внутреннего семинара Rubius о тестировании

without comments

Где-то в августе мы провели небольшой внутрикорпоративный семинар посвященный автоматизированному тестированию.

В итоге получилась очень большая дискуссия и очень мало конкретики, фактического материала, выводов и конкретных решений :) Но если кому-то интересно послушать галдеж на айти тематику — welcome :)

Written by Shaddix

Ноябрь 7th, 2013 at 12:22 пп

Строготипизированный доступ к UI-элементам в Xamarin.Android

without comments

Всем Андроид-разработчикам должен быть очень знаком код вроде:

<br />
private Button _myButton;<br />
public Button MyButton { get { return _myButton ?? (_myButton =  this.FindViewById<button>(Resource.Id.MyButton)); } }<br />

Все еще пишете это руками? Используете FindViewById? Если при этом вы еще и используете Xamarin — то у меня есть решение! :)
Read the rest of this entry »

Written by Shaddix

Ноябрь 5th, 2013 at 11:00 дп