@CSharpChatЭта группа больше не существует

Страница 1370 из 1888
Blue Screen of Death
30.06.2017
13:33:23
Приветик, это чат про монго?

Viktor
30.06.2017
13:33:31
да

джойны завезли, но они такие себе

Анатолий
30.06.2017
13:34:07
да
А как мне ноду на солярке скомпилить? ;)

Google
Viktor
30.06.2017
13:34:43
А как мне ноду на солярке скомпилить? ;)
я настолько толсто не умею, только на openSuse

Анатолий
30.06.2017
13:36:12
я настолько толсто не умею, только на openSuse
Извините, у меня пул ZFS отклеился :(

Vlad
30.06.2017
13:37:41
Nikita
30.06.2017
13:49:42
нанюхавшихся солярки

Viktor
30.06.2017
13:51:58
хорошая ОС

и ФС интересная

Анатолий
30.06.2017
14:00:40
зачем?
Это был намеренный стеб, в стиле вопроса "Как мне зарутовать мой гэлакси?" в чате поклонников продукции Apple.

Летучая
30.06.2017
14:08:32
Нахрена вообще такое говно писать

Сделай отдельную функцию, сделай что надо в ней и верни

Резалт

На кой ляд переменные-то замыкать

Google
Nikita
30.06.2017
15:12:43
>async Task... >OpenStreamForReadAsync >.Result

пристрелите его

Zymlex
30.06.2017
16:07:29
бота написать модерационного шоле
слышал, что при блокировании незнакомого акка тг, ему спам дают

осталось проверить

Blue Screen of Death
30.06.2017
16:09:59
Не дают

Боты для модерации - нормальная практика

Zymlex
30.06.2017
16:11:33
Не дают
странно, просто видел человек жаловался на выданый спам, после блока и другой подтвердил

Blue Screen of Death
30.06.2017
16:14:16
Мы его даже репортами закидывали

Zymlex
30.06.2017
16:16:13
Мы его даже репортами закидывали
мб ботов можно только выгнать?

админом

Blue Screen of Death
30.06.2017
16:17:07
А почему нельзя ?

Zymlex
30.06.2017
16:18:17
Мы его даже репортами закидывали
да и боты же ограничены, вот и не реализовали им спам блок

Alan
30.06.2017
18:09:10
Лолбля
Как будто это не так) Любое укорачивание это снижение понятности кода. А удлиннение — снижение читаемости.

Alan
30.06.2017
18:10:38
Не понимаю, почему вся эта околоООПшная тема легальна, а вот goto так люто бешено ненавидим. goto наверное идеальный пример сокращения кода в ущерб его простоты

Хотя goto мне лично доставил не мало лулзов еще на форумах обсуждений

Gid
30.06.2017
18:11:32
Найс байтануо

Google
Gid
30.06.2017
18:11:39
Прям слишком толсто

Vova
30.06.2017
18:12:49
Alan
30.06.2017
18:13:00
А работу дженериков я кстати осмыслил)))) но все еще не понимаю смертельную в них надобность

Vlad
30.06.2017
18:13:27
а я начал прогить в 10 лет, в машинных кодах, потом перешел ассемблер
на msil переходи, копилить сможешь под бубунту.

Vova
30.06.2017
18:14:38
господа, поясните плиз, почему не рекомендуют асинк авейт внутри parallel foreach?

Сергей
30.06.2017
18:15:31
Не будет ждать

Вроде как

Vova
30.06.2017
18:15:41
есть мат. библа написанная в парадигме асинкавейт, а запустить нада 24 потока, по процессорам

Blue Screen of Death
30.06.2017
18:15:50
Сергей
30.06.2017
18:15:51
Это как асинк в асинке

Vova
30.06.2017
18:16:11
обычно делал в parallel foreach

Владимир
30.06.2017
18:16:25
сделай Таск.Ран для всех задач, а потом сделай вен ол

он сам будет управлять всей этой кучей

Alan
30.06.2017
18:18:08
Предлагаешь создавать списки под все типы вручную?
Ну насколько титанических усилий это может стоить? По-моему все вытекает чисто из enterprise'ности языка. Где еще типов может быть настолько ниибацца много, кроме как гигантов IT индустрии?

Alan
30.06.2017
18:19:54
Это как в 10 подъездный дом поставить 1 лифт и выдолбить 9 коридоров от каждого подъезда к нему

Google
Alan
30.06.2017
18:20:24
Хотя по идее в стройке это бы очень много сэкономило

Сергей
30.06.2017
18:20:46
@nikita_tsukanov тут тролль 270 уровня жирности

Alan
30.06.2017
18:21:06
Забаньте уже его
Тоньше уже некуда)

Admin
ERROR: S client not available

Роман
30.06.2017
18:24:11
а тут весело :)

Ilya
30.06.2017
18:25:07
Забайтил поцанов

Роман
30.06.2017
18:25:13
кстати, какая альтернатива дженерикам кроме шаблонов и отсутствию типизации?

Летучая
30.06.2017
18:31:10
Так посоны

Анатолий
30.06.2017
18:31:13
Летучая
30.06.2017
18:31:15
Щас будет длиннопост

Возьмем например мввм для увп/впф. Что делать, когда приложение очень сильно разрастается? Становится нужно это, нужно то, и вот это прикрутить, и получается, что с течением времени поддерживать всю полученную лапшу становится очень сложно. Окидываю щас взглядом сильно связные компоненты своего пет-приложения и думаю, ведь зачем-то же Б-г дал нам интерфейсы, DI, IoC-контейнеры. Но как лучше всю эту братию использовать в десктопных/мобильных нативных приложениях? Можно биндить вьюхи не на конкретные классы, а на интерфейсы, это удобно, поскольку в будущем такое приложение можно будет с лёгкостью расширить, написать новые вьюмодели для этих вьюх с другим поведением (например одинаковый интерфейс текстбокса, но с разными вьюмоделями => можно использовать один UI для бокса сообщений, комментов туда, комментов сюда, диалоговых окон обратной связи). Но также Б-г дал нам shared-прожекты, в которых можно хранить вьюмодели и шарить их между разными UI-провайдерами — андроидовским, эппловским, увпшным или каким-нибудь другим. Однако какой подход лучше избрать, когда приложение очень большое? Более ста вьюмоделей хранить в папке ViewModels, как завещал нам Caliburn.Micro, как-то некруто, путано, эти списки файлов листать можно с ума свихнуться и спутаться. То же самое с вьюхами. Получается, следует структуру разбить на модули-неймспейсы и выстроить иерархию типа: - ViewModels [separate project] -- Audio --- AudioCollectionViewModel --- AudioPageViewModel --- AudioItemViewModel -- Video --- <...> - Views [separate project] -- Audio --- AudioView --- AudioShareView -- Video --- <...> С таким подходом становится возможно шарить кодовую базу между разными UI-провайдерами и при этом она довольно проста и очевидна. Но что тогда делать с DI и биндами контролов на интерфейсы? Заметив, что проект может неконтролируемо расширяться, стоит ли делать ещё один проект-схему или же интерфейсы вью-моделей следует складывать вместе вьюхами приложения? Или с вьюмоделями? Пожалуй, этот вариант логичнее всего. Но необходимо ли для каждого класса выделать интерфейс и нигде не использовать прямых биндингов на инстансы? Ведь вдруг нам понадобится использовать несколько реализаций поведения одного и того же элемента управления (а еще один такой же элемент управления нам копипастить лень — и это антипаттерно). Что мы получим, имея ввиду всё вышесказанное? Какова будет структура нашего нового проекта со слабой связностью компонентов? Попробуем разобраться! - ViewModels [shared project] -- Audio --- Implementation ---- AudioCollectionViewModel ---- AudioPageViewModel ---- AudioViewModel --- IAudioCollectionViewModel --- IAudioPageViewModel --- IAudioViewModel Соответственно во всех компонентах реализованных моделек мы обмазываемся выделенными интерфейсами и слабо связываем наши компоненты, ни в коем случае не используя ключевое слово new (конечно же, потому что это антипаттерн). Получилось у нас всё просто, тестируемо и по фен-шую (ну, почти). Некоторые интерфейсы можно явно не описывать (например, IAudioCollectionViewModel), если они являются потомками generic-класса (например, IFetchableCollection<IAudioCollectioViewModel>). Итого мы ещё чуть-чуть упростили себе жизнь. Или такое всё же лучше описать явно, что думаете?

Далее встаёт главный вопрос — чем инстансить классы наших вьюмоделей, где инстансить классы вьюмоделей, как инстансить классы вьюмоделей. Из того, что я знаю, получается, что все конструкторы инжектируемых и принимающих инъекцию моделей должны быть без лишних параметров. То есть мы хардкодим в классе его поведение и особенность, а при шаге вправо - шаге влево делаем другой класс, который реализует нужный интерфейс. Ок, удобно и вроде бы по паттернам. Но есть вот у нас хамлы, в которые надо закинуть нужные вьюмодели. Что делать-то? <SampleView.DataContext> <SampleViewModel /> </SampleView.DataContext> Инжектируем прямо в Уихе (одним лёгким движением руки убивая слабую связность компонентов)? Или ViewModelLocator с ужасно громоздким описанием лейзи-инстансов наших моделей (по понятным причинам это тоже антипаттерн)? Или всё-таки делать конструктор с параметром, чтобы потом где-нибудь (где?) выполнить IoC.Resolve<ISampleViewModel>? Вот этот вариант, кажется, самый вкусный. И всё же, если сервис-локатор и вьюмодел-локатор — антипаттерны, то где же нам резолвить это это добро? В конструкторе вьюхи, в код-бихайнде? public SampleView { public SampleView() { this.InitializeComponent(); this.DataContext = IoC.Resolve<ISampleViewModel>(); } } Однако нередко в чатах слышны громкие заявления, что идеальный MVVM — это когда код-бихайнд не содержит ничего, кроме InitializeComponent(). Для меня в иок-контейнерах пока самый сложный и непонятный момент — это отсутствие явного ответа на вопрос КОГДА их использовать в контексте ГДЕ их использовать.

Роман
30.06.2017
18:31:43
Летучая
30.06.2017
18:32:03
Мб у кого есть мысли по этому поводу (помидорами не кидайтесь, но если что бейте по рукам, пожалуйста)

Ilya
30.06.2017
18:36:11
Рыба, я тебе 100 раз говорил про CaliburnMicro ))

Slava
30.06.2017
18:38:19
Далее встаёт главный вопрос — чем инстансить классы наших вьюмоделей, где инстансить классы вьюмоделей, как инстансить классы вьюмоделей. Из того, что я знаю, получается, что все конструкторы инжектируемых и принимающих инъекцию моделей должны быть без лишних параметров. То есть мы хардкодим в классе его поведение и особенность, а при шаге вправо - шаге влево делаем другой класс, который реализует нужный интерфейс. Ок, удобно и вроде бы по паттернам. Но есть вот у нас хамлы, в которые надо закинуть нужные вьюмодели. Что делать-то? <SampleView.DataContext> <SampleViewModel /> </SampleView.DataContext> Инжектируем прямо в Уихе (одним лёгким движением руки убивая слабую связность компонентов)? Или ViewModelLocator с ужасно громоздким описанием лейзи-инстансов наших моделей (по понятным причинам это тоже антипаттерн)? Или всё-таки делать конструктор с параметром, чтобы потом где-нибудь (где?) выполнить IoC.Resolve<ISampleViewModel>? Вот этот вариант, кажется, самый вкусный. И всё же, если сервис-локатор и вьюмодел-локатор — антипаттерны, то где же нам резолвить это это добро? В конструкторе вьюхи, в код-бихайнде? public SampleView { public SampleView() { this.InitializeComponent(); this.DataContext = IoC.Resolve<ISampleViewModel>(); } } Однако нередко в чатах слышны громкие заявления, что идеальный MVVM — это когда код-бихайнд не содержит ничего, кроме InitializeComponent(). Для меня в иок-контейнерах пока самый сложный и непонятный момент — это отсутствие явного ответа на вопрос КОГДА их использовать в контексте ГДЕ их использовать.
Да ты ростёшь

Летучая
30.06.2017
18:47:02
Мб стоит попробовать. Там нейминг конвеншны непонятные, надо попробовать. Интересно даже, получится ли всё по смыслу и по интерфейсам разделить.

Да гавно он)
Ага, попался! Используешь ViewModelLocator в сэмпле Медузы-клиента!

Google
Gid
30.06.2017
18:48:37
Рыба го веб

Плес

Летучая
30.06.2017
18:50:03
Рыба го веб
Ты думаешь почему я тут это всё пишу?! Потому что Ангуляр попробовал и понял, что надо Make Desktop Great Again!

Gid
30.06.2017
18:50:21
Если серьезно то как бы смысла нет

То есть дело даже не в самих технологиях или ПО

Не в подходах

А именно в надобности и модели распространения

Плюс уязвимости ПО вроде Me.doc

Которые привели к распростанению Пети

Летучая
30.06.2017
18:52:11
Да просто проект есть и надо бы доделать. Мб взлетит даже совсем чуть-чуть, позволит купить мешок шавух :3

Gid
30.06.2017
18:52:44
Вряд ли

Лично я это так вижу

Slava
30.06.2017
18:53:40
Ага, попался! Используешь ViewModelLocator в сэмпле Медузы-клиента!
Это устойчивое выражение. В 11 или 12 году я не знал что калибёрн есть)

Летучая
30.06.2017
18:55:48
Надо таки вкатываться в него, спасибо за советы.

Правда, видимо, переписывать придётся много.

Страница 1370 из 1888

Эта группа больше не существует Эта группа больше не существует