Пишем код

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

Archive for the ‘Без рубрики’ Category

Комфортная Android-like верстка в iOS (XibFree)

without comments

Давайте признаем очевидное. Верстка экранов в iOS ужасна. Сравнивая с html, с WPF, с Android, с WinPhone — везде iOS проигрывает.
Верстка в iOS исторически напоминала WinForms (с аналогом якорей-Anchor’ов в виде AutoresizingMask). Однако WinForms уже давно отошло в прошлое, а iOS всё живет и живет :)
Да, на смену AutoresizingMask пришли Constraints, но работа с ними до жути неудобна, дизайнер ненаглядный, а результат работы — нечитаемый уже через неделю после создания.

А вообще, помимо удобства, наибольшей проблемой, конечно, становится динамическая верстка элементов. Если мы пришли из мира WPF/Android, то скучать по простейшему StackLayout/LinearLayout будем очень-очень сильно.
Возьмем например типичную задача: верстка элементов в строчку, при этом некоторые элементы могут быть спрятаны.

<stacklayout>
    <button></button>
    <button Visibility="Collapsed"></button>
    <button></button>
</stacklayout>

Чтобы задать такую верстку в iOS — придется изрядно помучаться. В случае со «старым» AutoresizingMask — это и вовсе невозможно, и придется разруливать координаты кнопок руками при каждом изменении видимости кнопок.
В случае «нового» и «продвинутого» LayoutConstraints — это, конечно, возможно, но намного сложнее и куда менее очевидно, чем xml-верстка.
Read the rest of this entry »

Written by Shaddix

Май 11th, 2016 at 11:39 дп

Posted in Без рубрики

Oneliner: VerificationException: TaskAwaiter<> violates the constraint of type parameter ‘TAwaiter’ при использовании async в .net 4

without comments

Если при использовании async/await в .NET 4.0 вы видите что-то невнятное вроде

System.Security.VerificationException: Method System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1[Cloud.API.TreeResult].AwaitUnsafeOnCompleted: type argument ‘Microsoft.Runtime.CompilerServices.TaskAwaiter`1[Cloud.API.TreeResult]’ violates the constraint of type parameter ‘TAwaiter’.

проверьте, во всех ли проектах одинаковая версия пакета Microsoft.Bcl (обновить всё до последней версии можно командой Update-Package Microsoft.Bcl).

Written by Shaddix

Июль 15th, 2014 at 10:51 дп

Posted in Без рубрики

О стартапе-ловушке, или Роберт Мартин хочет нам навредить

without comments

Сделал перевод ответа Роба Эштона на заметку Роберта Мартина «О стартапе-ловушке».

После появления перевода оригинальной статьи дяди Боба не мог не ответить переводом зацепившего ответа :) Тема моя любимая — про тесты.

Не стесняйтесь плюсануть на хабре (http://habrahabr.ru/post/172039/), если понравится :)

Written by Shaddix

Март 9th, 2013 at 1:11 дп

Posted in Без рубрики

Mono for android и русские имена пользователей в windows

without comments

Пробовал на выходных поиграться с Mono For Android, и внезапно оказалось, что наличие в имени моей учетной записи кириллических символов вносит некоторые проблемы :)

Проблемы в основном связаны с конвертациями юникода-cp1251 в путях к файлам и их решение достаточно тривиально, и тем не менее, сохраню пару пунктов на будущее:

  • НЕ УСТАНАВЛИВАЙТЕ Mono For Android ПОД ПОЛЬЗОВАТЕЛЯМИ С КИРИЛЛИЦЕЙ В ИМЕНИ! :) Это самый простой путь и остальные шаги в этом случае не понадобятся
  • Проблема с путём к Android-SDK. По умолчанию он располагается в c:/Users/%USERNAME%/AppData/Local/Android/android-sdk/. Проще всего скопировать его в корень диска и изменить путь в Visual Studio -> Tools -> Options -> Mono For Android -> Android SDK Location
  • Проблема с путём к образам эмулируемых устройств. Образы устройств, которые запускаются в эмуляторе хранятся в папкахc:/Users/%USERNAME%/.android/avd/%DEVICENAME%. Пути к этим папкам прописываются в файлах c:/Users/%USERNAME%/.android/avd/%DEVICENAME%.ini. Папку устройства скопировать куда-нибудь в «нормальный» путь (без русских букв) и поменять путь в ini-файле. Несмотря на то, что в пути к самим ini файлам тоже есть русские буквы, это, как ни странно, к проблемам не приводит :)

Всем удачи с Mono for android!

Written by Shaddix

Июль 2nd, 2012 at 11:58 дп

Posted in Без рубрики

T4MVCJS отрефакторен и выложен на codeplex

with 5 comments

Недавно дошли руки до выкладывания T4MVCJS в opensource. Распространение исходников в зип-архиве показалось слегка устаревшей методикой и мы переехали на codeplex :)

Попутно было слегка отрефакторено использование T4MVC, вместо простой «копипасты» теперь используется оригинальный исходник с вырезанными из него строками, отвечающими за генерацию T4MVC-хэлперов. Таким образом легко и просто используется весь парсинг, осуществляемый T4MVC, и обновление до новых версий будет представлять куда меньше проблем (скопипастить файл, выкинуть 400 подряд идущих строк — вуа-ля :)).
Помимо эстетического удовлетворения это позволило с лёгкостью обрабатывать MVC Area (предыдущая версия, этого не умела, за репорт этого бага спасибо Брайану Бетти).

Заодно я задумался о проблеме существования двух экшенов с одинаковыми именами — в Javascript перегрузка функций, к сожалению, недоступна. В результате на свет появляются экшены Edit, Edit1, Edit2, etc. :) Если кто-нибудь предложит более адекватное решение проблемы — я бы с удовольствием его обсудил :)

P.S. в качестве системы контроля версий T4MVCJS используется Mercurial, так что при желании внести изменения — форкайте с удовольствием :)

P.P.S. На момент изначальной публикации поста ареи-таки не работали. Начиная с версии 1.0.10 всё ок.

Written by Shaddix

Февраль 23rd, 2012 at 2:51 пп

Posted in Без рубрики

Nuget пакет для JsValidator’a

without comments

Наконец-то создан nuget-пакет для JsValidator‘a, о котором я не так давно писал.
Теперь интеграция проверки яваскрипта в любой проект займет минимум времени: Install-Package JsValidator в nuget-консоли — это всё, что нужно. Название пакета, как нетрудно догадаться — JsValidator.

Пакет делает всё то, что раньше приходилось делать руками: скачивает бинарники валидатора, создает тестовый конфиг, прописывает себя в post-build-events.
При удалении пакета всё, где пакет наследил, аккуратненько удаляется.

По факту окончания разработки JsValidator’a написан анонс проекта на Хабрахабре. Желающие приглашаются к обсуждению в любом из источников :)

Written by Shaddix

Январь 14th, 2012 at 4:11 пп

Posted in Без рубрики