
Akhmed
28.01.2017
14:31:21

Igor
28.01.2017
14:44:56
Если это возможно с удовольствием почитал бы код.
Он на котлине и сам проект является коммерческой игрой (этот подход я заюзал в окнах меню/настроек/магазина и тд).
И к сожалению на C# почти невозможно сделать красивые DSL, именно по этому там так полярен XML (xaml, csproj и тд).
Я паралельно этот же подход пытаюсь заюзать в обычном приложение и оно опенсор на github.
Могу скинуть ссылку на него, как до ума доведу.

Akhmed
28.01.2017
14:51:05
а я пишу на F#. Там с DSL заметно проще

Kirill
28.01.2017
15:06:10

Google

Roman
28.01.2017
15:06:33

Igor
28.01.2017
15:12:07
Это работает красиво только для плоских dsl.
Если нужна иерархия с 3-4 вложениями (как любой UI) - это ад
В этом пункте C# остатет так же как и Java - их сборка описывается в XML (msbuild и ant/maven)
Именно потому что для дакларативного описания билда нужен DSL, а не (императивный) код.
А вот к примеру билд F# пишется на F# (fake), Scala на Scala (sbt), Kotlin на Kotlin (gradle 3.0), Groovy на Groovy (gradle)

Kirill
28.01.2017
15:23:30
На java под андроид тоже gradle)

Igor
28.01.2017
15:25:30
Ну да (там сейчас gradle DSL), но в интерпрайзе до сих пор сидят на мавенах (IDEA вообще собирается ant).

Roman
28.01.2017
15:37:12
Тоже что и fake только на c#

Igor
28.01.2017
15:42:42
Вложенные билдеры.
Вот валидный код на Kotlin https://i.gyazo.com/72ae38baa02c30047d8be9fc796fcbe6.png (даже со стат. проверками)
Хотел бы я увидить тот же HTML билдер на C#

Roman
28.01.2017
15:44:05

Kirill
28.01.2017
16:12:02
Ну вот я реализовал для XF для ui подход билдера, не очень красиво выглядит конечно, но лучше не получается

Roman
28.01.2017
16:57:35
кто-нибудь использовал GraphQL?
для взаимодействия с беком?

Google

Igor
28.01.2017
17:07:36
Это когда вместо rest api, ты на клиенте определяешь что тебе нужно (типа facebook graph api)?

Roman
28.01.2017
17:31:50
на самом деле rest скорее всего никто не использует в том виде в котором должны были бы.
потому что он не удобный и все скатывается к http api

Кита
28.01.2017
17:34:20
rest это не стандарт, это рекомендации

Roman
28.01.2017
17:34:50

Alan
28.01.2017
17:47:51
люди. подскажите по C#. Имеется идея, все переменные в проекте запихать в один скрипт типа "integers.cs", а затем обращаться к ним из других скриптов. Т.е. скажем, в code.cs переменные берутся, редактируются и потом записываются обратно в integers.cs. Не будет ли такой метод более медленный в плане выполнения? Если рассуждать на низком уровне, переменные то всё равно хранятся в оперативке

sasha
28.01.2017
17:48:37
Че?

Akhmed
28.01.2017
17:50:13


Alan
28.01.2017
18:03:11
В проекте, почти в каждом скрипте есть обращения к переменным сторонних скриптов. А их более 70 штук. В результате постоянно возникают путаницы и ошибки. Коллега сказал запихать все переменные в массив-список. Когда берёшь переменную другого скрипта, нужно указывать имя скрипта и имя переменной. будет проще, если всё брать из integers.cs. Код это особо не захламляет, а работать проще. Меня просто интересовали падения по производительности. Игра на Unity3D, если что.

Igor
28.01.2017
18:05:51
точно
Хотел попробовать, после просмотра https://youtu.be/ByNs9TG30E8 - там это называется Demand Driven Architecture.
К сожалению не я решаю что как будет работать бэкенд.

Akhmed
28.01.2017
18:06:05
Если все так плохо сделайте один статичный объект и обращайтесь к нему. Возможно вам не хватает опыта в проектировании моделей. Если выделите соответствующие классы и скроете все необходимые свойства (переменные) внутри класса и только этот класс будет знать об этих свойствах вы можете более качественно структурировать код и сделать сопровождение гораздо проще. Если продолжать писать в том же стиле то как только код еще вырастит вы просто физически не осилите его поддержание

Kirill
28.01.2017
18:24:49
http://i.imgur.com/NHTN6KZ.png попробовал сделать подобие DSL в C# получилось вроде неплохо, но есть 1 косяк - при таком подходе лейаутам свойства отсюда не задать...


Alan
28.01.2017
18:28:00
Боюсь начальство не разрешит. К тому же в проекте 20 тыс. строчек кода, около 70 скриптов и около 600 переменных. С одной из них, public bool CriticalLowPerformance (которая является чьим-то костылём и выключает пол-функционала при перегрузке "списка дел, которые нужно делать каждый кадр") работает около 50 скриптов. В среднем, каждый скрипт обращается к 3-5 другим за нужными переменными. К тому же всё переменные списком находятся в начале каждого скрипта, и двигать из внутрь классов, которые их используют нам запретили. Вот я и думаю, чем открывать каждый скрипт в поисках нужной переменной, лучше сделать одно большое хранилище переменных для всего.
Когда я только пришёл работать, нам на 10 человек дали задачу распилить огромный скрипт GameManagement.cs на отдельные функции. Там тогда было около 12 тыс. строчек и 500 переменных. Он отвечал буквально за всё в проекте, от показателей производительности до GUI. Тогда все 500 переменных были длинным списком расположены вначале кода. Вот и решил объединить всё обратно, если не все 70 скриптов, то хоть переменные от них. В перспективе 2017 года, строчек может стать 40 тыс. тогда точно будет невозможно поддерживать программную часть.


Kirill
28.01.2017
18:37:09
Так объединять имеет смыл только константы, внутренние переменные лучше никуда не выносить.
Тогда получится такой-себе конфиг файл

Roman
28.01.2017
18:38:12


Alan
28.01.2017
18:45:30
Не то слово. Помню после первого рабочего дня-распиливания, забрал себе домой GameManagement.cs на флешке — думал обрезать или почистить. Но нет. Всё чётко, гладко, прокомментировано на русском и английском, но в 12 000 строк. Там около 30 задач было — от травы до освещения. Когда листал, заметил что кусок про освещение комментировали на казахском 0_0, а кусок про траву написан почти в 1 строчку. Костыля про падение производительности ещё не придумали. Помню около сотни переменных были кириллицей, ещё несколько не по человечески назвали "OOQQDDQOO". в общем полный мрак.

sasha
28.01.2017
18:50:07
Ooqqdq это не режим бога в doom?

Alan
28.01.2017
18:55:23
как ни странно нет) мне говорили, что это какое то подобие массива данных, но который ежесекундно перезаписывается. Раньше был костыль — если забивалась ОЗУ или детектор производительности бил тревогу, значения переменных, не нужные каждый кадр, писались в такие вот файлы (т.е. на ПЗУ). Сейчас всё это уже убрали, но файлики до сих пор лежат, в них сохраняют данные пользователя и статистику использования — дань традиции OOQDDOO-файлов.

Google

Igor
28.01.2017
19:09:18

Kirill
28.01.2017
19:11:53

Alexander
28.01.2017
22:13:29
Вот я тут немного с запазданием, но есть вопрос по devOps: xamarin это все классно, но как развивать devops для закрытых систем - т.е. Службы и desktop и mobile приложения без доступа к внешнему миру. Максимум отсылка почты на емейл о крашах приложений. Какие тут варианты вообще существуют?

Akhmed
28.01.2017
22:15:56
на самом деле все то что есть вообще для devops можно применить и к xamarin. Cреди платных есть TFS - бесплатные но не так удобно - gitlab, jenkins и т.п.

Oleg
29.01.2017
03:08:07
OMG
Не то слово. Помню после первого рабочего дня-распиливания, забрал себе домой GameManagement.cs на флешке — думал обрезать или почистить. Но нет. Всё чётко, гладко, прокомментировано на русском и английском, но в 12 000 строк. Там около 30 задач было — от травы до освещения. Когда листал, заметил что кусок про освещение комментировали на казахском 0_0, а кусок про траву написан почти в 1 строчку. Костыля про падение производительности ещё не придумали. Помню около сотни переменных были кириллицей, ещё несколько не по человечески назвали "OOQQDDQOO". в общем полный мрак.
Вы там случайно все в одной ветке не работаете? VC есть?

Akhmed
29.01.2017
08:54:16
https://blogs.msdn.microsoft.com/visualstudio/2017/01/27/update-to-visual-studio-2017-release-candidate-2/
VS2017 RC3

Vladislav
29.01.2017
08:56:39

Алексеев
29.01.2017
09:12:27
Alan в С# классы можно делать partial (разделяемыми), то в свой файл integers.cs можешь вынести все переменные для каждого скрипта. Или сделать все переменные static и вынести в отдельный класс. Тогда доступ будет откуда угодно

Vladislav
29.01.2017
09:37:19
Где то читал, что партиалы стоит использовать только при автогенерации кода

Кита
29.01.2017
09:38:39
нет никаких минусов их использования в принципе

Roman
29.01.2017
09:39:49

Кита
29.01.2017
09:40:44
partial юзают для разделения слишком длинной простыни кода, которая получается и после автогенерации кода в том числе

Igor
29.01.2017
13:58:41
Напомните - после добавления новых udid в adhoc, нужно заходить на собирающий мак и вручную обновлять сертификаты?

Кита
29.01.2017
14:01:10
ну я обычно скачиваю новый провижн и просто делаю дабл-клик. все. после этого проект начнет собираться с новым провижном если в настройках выставлено auto конечно же

Igor
29.01.2017
14:12:49
На сервере с CI?

Кита
29.01.2017
14:18:17
да. теоретически можно все это через xcode провернуть, но мы не юзаем эту возможность в силу множества заказчиков и множества сертификатов. Все добавляем вручную без логинов в applеid

Slava
31.01.2017
07:26:42
Всем привет. Кто какие сервисы использует для поддержки оплаты банковской картой?

Google

Алексеев
31.01.2017
08:21:12
Привет у нас в одном из проектов используется https://www.uniteller.ru

Vladislav
31.01.2017
08:24:57
ща закоммичу

Akhmed
31.01.2017
08:25:34

Vladislav
31.01.2017
08:25:52
фак
просто тут так интересно, что все время открыто)

Slava
31.01.2017
08:41:25

Pavel
31.01.2017
12:53:17
подскажите, чем пользуетесь на C# вместо жабовского RxEventBus ?

Igor
31.01.2017
12:54:51
ReactiveExtensions (C#)?

Алексеев
31.01.2017
13:54:07
Для тех кто не видел или пропустил в группе идет голосование за Митап:
https://vk.com/xamarin_developers?w=wall-93227537_1637%2Fall

Igor
31.01.2017
13:57:46
Кстати, идет кто на https://spbdotnet.timepad.ru/event/439737/ ?

Oleg
31.01.2017
15:09:20
Ребят, простите возможно за тупой вопрос, но кто нить работал с bluetooth на андройда? Есть проблема, что при поиске bluetooth le, на andr не всегда находиться датчик, может кто сталкивался с таким?
*на андройде

Kirill
31.01.2017
15:57:39

Oleg
31.01.2017
15:59:10

Akhmed
31.01.2017
21:25:51
https://blog.xamarin.com/samsung-releases-new-preview-of-visual-studio-tools-for-tizen/?utm_medium=social&utm_campaign=blog&utm_source=facebook&utm_content=tizen

Алексеев
01.02.2017
08:23:33
А вот и стимул делать приложения под Tizen
http://www.tizenincentive.com/index.do

Vladislav
01.02.2017
09:05:24
что это за платформа такая

Akhmed
01.02.2017
09:05:51
Телевизоры мобилки и т.п.
Пока тут только тв и мобилки

Google

Vladislav
01.02.2017
09:13:51
и что, много где применяется?

k0balt
01.02.2017
09:20:37
Там часы самсовские ещё.

Кита
01.02.2017
09:43:58
“Вслед за Индией смартфоны поступили на мобильные рынки ЮАР, Индонезии, Кении, Непала, Бангладеш, Нигерии и Шри-Ланки. До конца 2016 года планируется запуск новинки в Турции, Объединённых Арабских Эмиратах, Саудовской Аравии.” Никому особо не интересны эти страны кроме их жителей. Когда будет запуск в Европе и США вот тогда будет стимул участвовать в конкурсах. Ну а исключительно под фотоаппараты которых 2-3шт писать как-то не с руки. Samsung изначально не верит в свой продукт. Почему же должны верить разработчики?

Akhmed
01.02.2017
10:23:15
Самсунг уже делал ошибки с бадой. По сравнению с бадой у них Тизен гораздо более популярен оказался
В любом случае нам только лучше. .NET Core запустили на ARM - можем теперь на .NET Core писать код для малины. Еще и Tizen. Чем больше у нас возможностей, тем лучше для нас

Алексеев
01.02.2017
10:57:41
Привет всем!
Я тут форум запустил https://forums.xamdev.ru/index.php
Если если есть идеи или предложения по улучшению форума, то для этого создано обсуждение - https://vk.com/topic-93227537_36862993
Или тут в личку можете написать
Анонс этого замечательного события в группе - https://vk.com/xamarin_developers?w=wall-93227537_1660%2Fall

Schvepsss
01.02.2017
11:05:51
Класс! Зарегистрировалась!

Илья
01.02.2017
11:22:50
Кто нибудь может подсказать как в C# Xamarin Forms (XAML) организовать смену страниц приложения с использованием паттерна MVVM?

Roman
01.02.2017
11:23:43

Akhmed
01.02.2017
11:24:23

Илья
01.02.2017
11:25:00

Akhmed
01.02.2017
11:25:01
Тогда вы сможете покрыть тестами логику навигации между ViewModel и соответственно между View