« first day (938 days earlier)      last day (2093 days later) » 

7:27 AM
@VladD, Здаров:) Слушай, не могу сделать никак кое-что. Не могу понять, как правильнее сделать. Я использую контрол RadTimeLine, который представляем мне фирма Telerik. Он выглядит вот так:
Каждый Заказ должен иметь свойство Duration и DateStart. Поэтому в классе Order у меня есть объект типа TimeBlock, внутри которого как раз есть свойство Duration, Start, End. Это своего рода период. Чтобы на RadTimeLine мне это все присобачить, мне нужно написать вот так:
<telerik:RadTimeline ItemsSource="{Binding Orders}"
					 PeriodStart="01/01/2018"
					 PeriodEnd="01/01/2019"
					 StartPath="Period.Start"
					 DurationPath="Period.Duration"/>
Тоесть у RadTimeline есть два свойства типа string - StartPath и DurationPath, которые я задаю название свойства начала периода и его продолжительность. Как я уже сказал, в классе Order у меня есть TimeBlock Period, который имеет как раз свойство Start и Duration
@VladD, итак, вроде все объяснил. Теперь саму суть объясню
@VladD, при добавлении нового заказа, те заказы, которые он "задел" должны переместиться влево, чтобы их успели сделать. Понимаешь логику. Так вот. Логику перемещения я написал. Но я же хочу чтобы все красиво было. И я тут вот захотел "Анимационно" сдвигать заказы. Примерно вот так:
@VladD, Я спрашивал на форуме у компании Telerik, как лучше мне сделать. Они посоветовали сделать DispatcherTimer в VM, при тике которого, мы будет сдвигать на определенную дельту наш Order.Period. Я так и сделал, чтобы просто проверить, как это будет выглядеть. Результат ты видишь выше...
@VladD, Но ЭТО БРЕД! Я прям чувствую что это бред. Во первых, анимация во ViewModel.
Во-вторых, мало того что анимация во VM, так она еще костыльная, с моим таймером и тд
В-третьих, я анимационно меняю ДАННЫЕ, которые относятся к бизнес-логике. Это вообще жесть...
@VladD, вот хочу посоветоваться. Как мне лучше сделать то? Мне бы замечательно такие виды анимации включать, при удалении заказа и добавлении. Это красиво. Но так как я чувствую что RadTimeLine кривоват, я не могу сделать это изящно.... Или я просто глуповат немного в этом...
 
 
2 hours later…
A K
9:13 AM
@Bretbas Хочешь написать свой, некостыльный?
 
@AK, не желаю:) Просто может я что-то не углядел, или может это как то можно сделать. Но у меня тоже, кроме таймера и изменение данных модели анимационно, больше ничего в голову не приходит
А вообще в WPF можно добраться как нибудь до DeltaTime значения? Это значение времени, прошедшее с последнего кадра до текущего.
 
 
3 hours later…
12:37 PM
@Bretbas Привет!
Щас почитаю...
@Bretbas Так, не торопись. Класс Order — это VM, правильно?
 
@VladD, ну можно так сказать:)
@VladD, из него привязываются свойства
 
@Bretbas Окей, едем дальше
@Bretbas Значит, VM. К модели ж мы не привязываемся.
 
ага
 
@Bretbas Стоп, тут вопрос.
Важный.
Итак, ты добавил новый заказ
Старые переместились.
Вопрос:
Переместилось только отображение или также и реальное время в старых заказах?
Если и сам заказ сдвинулся по времени, то по крайней мере дата заказа меняется в VM
Вангую, тебе просто нужно вот это:
4
A: Анимация WPF при изменении свойства

VladDТакой фичи из коробки нету, но её можно легко смастерить самостоятельно. Например, давайте заведём для этого attached property. public static class AnimatableDoubleHelper { // Это attached property OriginalProperty. К нему мы будем привязывать свойство из VM, // и получать нотификацию об...

 
@VladD, Я не могу сделать, чтобы ТОЛЬКО ОТОБРАЖЕНИЕ сдвинулось.
 
12:43 PM
только анимировать не double, а дату
 
вообщем изменяется реальная дата
 
@Bretbas Угу, понял
Тогда мой пример как раз подходит
У тебя даты остальных событий меняются один раз в VM
а в UI они изменяются плавно
 
во во во
так и надо
 
Ну тогда посмотри в пример, там всё, что надо, есть
Только анимировать придётся DateTime
Надеюсь, такая анимация есть из коробки
 
Стоп
@VladD, так не выйдет
 
12:46 PM
@Bretbas Почему?
 
@VladD, посмотри внимательно как создается RadTimeLine этот контрол
<telerik:RadTimeline ItemsSource="{Binding Orders}"
					 PeriodStart="01/01/2018"
					 PeriodEnd="01/01/2019"
					 StartPath="Period.Start"
					 DurationPath="Period.Duration"/>
StartPath="Period.Start"
DurationPath="Period.Duration"
это строки!
никаких привязок нет здесь
 
Бляха-муха, пардон май френч.
Окей, это хуже
А другого интерфейса у них нету? Чтобы ты управлял не всем таймлайном, а каждой частью в отдельности?
 
@VladD, вот вот
 
Ну, вот как у ItemsControl'а можно перегрузить ItemTemplate
 
@VladD, в том то и дело, что нету. Можно только обратиться к
 
12:49 PM
к?
 
можно только задать TimeLineItemTemplate
но это ничего не дает
 
Да, мы разбалованы Майкрософтом
Ну ладно, не всё потеряно
Есть сложный путь
Не знаю, хорош ли он
Крч, можно построить во View свою коллекцию
и привязывать их контрол не к их коллекции, а к своей
в VM-коллекции подписаться на CollectionChanged
 
стоп
 
стою :)
 
Я же и так их контрол привязываю к своей коллекции
в VM
ItemsSource="{Binding Orders}"
 
12:52 PM
нееее
не в этом смысле своей
то есть смотри
у тебя в VM есть семантика Orders
она правильная и остаётся
а в View ты создаёшь альтернативую коллекцию AnimatedOrders
в ней будут не VM-объекты
а какие-то DependencyObject'ы, чтобы их свойства можно было анимировать
Смотри
О, понял
прикол
Так никто в мире не делает, потому что это дебилизм, но Телерик нас вынуждает
Излагаю схему, а потом посмотрим, есть ил в ней дыры
 
ага:)
 
итак, ты создаёшь невидимый <ItemsControl ItemSource="{Binding Orders}" Visibility="Collapsed">
создаёшь ItemTemplate:
<my:OrderView Start="{Binding Period.Start}" End="{Binding Period.End}"/>
OrderView — это тупо DependencyObject, у которого есть свойства Start, End, AnimatedStart и AnimatedEnd
как он будет отображаться, тебе пофиг, потому что он никогда не будет отображаться
окей?
Теперь ты тупо пишешь:
<telerik:RadTimeline ItemsSource="{Binding MyInvisibleItemsControl.VisualItems}"
    PeriodStart="01/01/2018"
    PeriodEnd="01/01/2019"
    StartPath="AnimatedStart"
    DurationPath="AnimatedDuration"/>
Откуда именно взять VisualItems, надо посмотреть
такого свойства нет, но ты понимаешь идею
 
не понимаю:)
MyInvisibleItemsControl - это что за контрол? Что там будет?
@VladD, вообщем я так понял, что наверное я просто не справлюсь. Лучше оставить без анимации
 
1:10 PM
@Bretbas Ну, это тот самый невидимый <ItemsControl ItemSource="{Binding Orders}" Visibility="Collapsed">
 
@VladD, оно в VM чтоли должно быть? как свойство
ItemsSource="{Binding MyInvisibleItemsControl.VisualItems}"
 
@Bretbas Смотри, анимашки и всё такое надо по-любому делать в последнюю очередь. Потому что возни с ними много, а клиент хочет «мясо».
 
как ты так привязываешь его
 
@Bretbas Тьфу, ошибся
 
@VladD, базара нет. Анимации можно потом сделать:)
 
1:11 PM
ItemsSource="{Binding VisualItems, ElementName=MyInvisibleItemsControl}"
 
<ItemsControl ItemSource="{Binding Orders}" Visibility="Collapsed">
ты же к Orders подвязывался
аа
понял
 
<ItemsControl ItemSource="{Binding Orders}" Visibility="Collapsed" Name="MyInvisibleItemsControl">
 
Во
вот так понятно ахах:)
VisualItems - это что за свойство будет?
 
такого нет :) но нам надо вытащить из него коллекцию my:OrderView
как-то вытащим, если что
щас поищу
 
стоп, а это что
<my:OrderView Start="{Binding Period.Start}" End="{Binding Period.End}"/>
что такое?
это Template ItemsControl'а так?
а my:OrderView - это еще один контрол чтоли?
 
1:18 PM
@Bretbas да
@Bretbas да
OrderView — это тупо DependencyObject, у которого есть свойства Start, End, AnimatedStart и AnimatedEnd
или что там надо
то есть не тупо DependencyObject
а класс, производный от него
а список Item'ов можно получить так:
<ItemsControl ItemSource="{Binding Orders}" Visibility="Collapsed" Name="MyInvisibleItemsControl">
    <ItemsPanel>
        <Grid Name="XYZ"/>
    <ItemsPanel>
<ItemsControl>
затем в code-behind найти XYZ
и привязаться к коллекции Children
то есть в code-bedind найти XYZ и написать
telerikTimeLine.SetBinding(RadTimeLine.ItemsSourceProperty, new Binding("Children") { Source = xyz });
привязать вручную
костыль, конечно
но что делать?
Стоп
Это длинно, косвенно и геморно
Проще вот как
Нафиг невидимые контролы
Делаем всё в code-behind
Смотри
1.
 
Блин это жесть
 
Заводишь во View DependencyProperty ObservableCollection<OrderView>
Теперь тебе надо поддерживать её в состоянии, аналогичном Orders
для этого ты делаешь то же, что делает ItemsSource
То есть подписываешься на изменения Orders (CollectionChanged)
и на каждом изменении добавляешь или убираешь элемент из твоей коллекции
когда у тебя есть Order, и тебе нужно создать OrderView, делаешь так:
var orderView = new OrderView { DataContext = order };
в OrderView у тебя будут свойства Start и StartAnimated
Start привязываешь к Order.Start
orderView.SetBinding(OrderView.StartProperty, "Start");
окей, теперь telerikTimeLine:
ItemsSource привязываешь не к Orders, а к своей коллекции
ObservableCollection<OrderView>
вроде бы всё
вполне делаемо вроде
 
1:35 PM
@VladD, честно? Я мало что понял:( Понял только что нужно прослойку делать, чтобы решить проблему с анимациями и все. Еще + нужно делать анимацию DateTimeAnimation потому что из коробки ее нет:( Вообщем тяжело мне сейчас это все:( Слишком как то...
 
@Bretbas Тогда пока забей на анимацию
Пусть сдвигаются мгновенно
Потом доделаем
Кинешь код, я посмотрю
 
ок:)
Я вот еще хотел вопрос задать, вроде по моим силам. Праивльно ли я делаю или нет
но после проверки тогда. Нас сейчас считать будут:)
 
@Bretbas давай!
удачной проверки
 
2:08 PM
@VladD, так я тут:)
@VladD, видишь кнопки внизу приложения - Подтвердить, Отменить?:) Они появляются когда я добавляю новый заказ
@VladD, также должны появляться кнопки Редактировать, Удалить, там же, когда я нажимаю на сам заказ(полоску)
@VladD, как ты думаешь правильнее сделать? Сделать это одним контролом? Сделать enum OrderMode, который будет указывать, какой тип кнопок показывать в данный момент времени?
Или все таки сделать два разных контрола?
Сделать VM для этих кнопок отдельно от главной VM? Или все таки прям в главной VM обработчики команд сделать?
Если отдельная VM, то как передавать туда заказ, с которым работаем в данный момент времени
У меня есть мысли следующие. Следать базовый класс BaseNavigateOrderVM, который принимает Order. В главной VM определим свойство с этим типом. Наследуем от него два класса ConfirmAddOrderVM и ToolsOrderVM.
Подвязываем это свойство, на свойство Visibility нашего контрола с кнопками, и пропускаем через конвертер. Также подвязываем это свойство на свойство NavigateType(это кастомной свойство зависимости, которое будет определено в этом контроле) и пропускам через другой конвертер
Конвертер, который подвязан на Visibility, будет просто проверять value на null, и если он не null, то показываем кнопки, иначе не показываем
Конвертер, который подвязан на NavigateType будет проверять реальный тип нашего свойства, и будет включать те, или иные кнопки, в зависимости от типа
Итак, при добавлении заказа я просто инициализирую мое свойство BaseNavigateOrderVM NavigateOrderVM новым объектом типа ConfirmAddOrderVM и передаю туда сам заказ в конструктор.
При нажатии на сам заказ, что должно привести к появлению кнопок Редактировать и Удалить, я просто инициализирую мое свойство BaseNavigateOrderVM NavigateOrderVM новым объектом типа ToolsOrderVM и передаю туда сам заказ через конструктор
 
2:26 PM
@Bretbas Ну почему бы и нет?
 
@VladD, дело в том, что например ConfirmAddOrderVM должен знаешь что делать?:)
При нажатии на Подтвердить, должен заказ затачковаться в БД. А при отмене, должен произойти пересчет всех периодов, которые этот новый заказ сдвинул.
 
@Bretbas Я бы сделал в OrderVM
Или там OrderEditVM
OrderVM наверное не должен заниматься собственным созданием
 
@VladD, OrderVM это что за VM еще?
 
@Bretbas Ну, у тебя же заказ должен быть в какой-то VM?
А, оно у тебя называется Order
 
Добавление ты имеешь ввиду?
 
2:30 PM
Но поскольку это VM, то OrderVM
 
стоп
не понял?
OrderVM - ты имеешь ввиду VM добавления?
 
@Bretbas Не
 
Или вообще сам заказ в принципе?
 
Сам заказ
 
Ну есть у меня он
OrderItemVM
 
2:31 PM
Окей
Теперь у тебя должно быть OrderItemEditorVM
 
Ну а он тут причем то?
 
ну, где-то же должна быть логика «подтвердить добавление заказа»
вот она и лежит в OrderItemEditorVM
 
Следать базовый класс BaseNavigateOrderVM, который принимает Order. В главной VM определим свойство с этим типом. Наследуем от него два класса ConfirmAddOrderVM и EditOrderVM.
 
BaseNavigateOrderVM
плохо
по имени непонятно, что оно делает
а, понял
но всё равно имя надо бы улучшить
ну допустим, хорошо, у нас есть такие классы
 
Следать базовый класс BaseOrderEditorVM, который принимает OrderItemViewModel. В главной VM определим свойство с этим типом. Наследуем от него два класса ConfirmAddOrderVM и EditOrderVM.
 
2:33 PM
угу, уже понял
стой
не понял
 
конкретно?
 
BaseOrderEditorVM — это то же, что и BaseNavigateOrderVM? И почему у тебя то Order, то OrderItemVM, то OrderItemViewModel?
это одно и то же, или разные вещи?
 
так, давай заново
забудь все что я говорил до этого
 
окей
 
Следать базовый класс BaseOrderEditorVM, который принимает OrderItemViewModel. В главной VM определим свойство с этим типом. Наследуем от него два класса ConfirmAddOrderVM и EditOrderVM.
вот теперь с этого начнем
 
2:35 PM
ну, допустим
 
Теперь в главной VM у нас есть свойство BaseOrderEditorVM CurrentOrderEditor
При добавлении нового заказа, у нас будет создаваться новый объект с типом ConfirmAddOrderVM
 
ну, это не очень изящно, но пускай так
 
CurrentOrderEditor = new ConfirmAddOrderVM( newOrder );
куда передается, как ты видишь, новый заказ
 
окей
 
Свойство CurrentOrderEditor подвязано на наш контрол с кнопками, назовем его ToolsOrderControl
 
2:37 PM
угумс
 
А именно подвязано на свойство Visibility
 
через NullToVisibilityConverter?
 
да
 
окей
 
а вот теперь запара небольшая:) Мне нужно как то включать те, или иные кнопки
 
2:38 PM
делай не так
 
тоесть или Подтвердить/Отменить или Редактировать/Удалить
А как?
 
<ContentPresenter Content="{Binding CurrentOrderEditor}"/>
 
Могу два контрола сделать таких с кнопками
 
и два DataTemplate
 
аааа, точно
можно так
И получается, у меня ContentControl в зависимости от VM включит те или иные кнопки
 
2:40 PM
<DataTemplate DataType="{x:Type vm:ConfirmAddOrderVM}">
    тут UI для confirm add
<DataTemplate/>
угумс
 
Ага:) точно
 
можно на самом деле так:
 
Хорошо, теперь дальше
как?
 
<DataTemplate DataType="{x:Type vm:ConfirmAddOrderVM}">
    <view:ConfirmAddUserControl/>
<DataTemplate/>
чтобы было где проперти добавлять
 
Ну так я так и буду делать
 
2:41 PM
отлично
 
а как еще то?:)
 
ну, извращений можно много придумать
с энумом и visibility :)
или там триггерами
 
А, стоп. У нас получается два контрола:)
с кнопками:)
 
ну да
 
ну и хрен с ним
давай дальше
 
2:42 PM
два контрола
ну вот и всё
делаешь свойства ICommand AddCommand и OrderItemViewModel CurrentOrder
 
Смотри, как лучше сделать, логику Подтверждения/Отмены, Редактирования/Удаления внести все таки в дочерние VM, или все таки из них генерировать события, и подписыватться в главном VM?
 
и в DataTemplate'е подвязывешь их
@Bretbas зачем события? ICommand
ICommand может вполне прийти из MainVM
или из ConfirmAddOrderVM
это уж как тебе кажется правильнее
 
<DataTemplate DataType="{x:Type vm:ConfirmAddOrderVM}">
    <view:ConfirmAddUserControl AcceptCommand="{Binding MyAcceptCommand}"/>
<DataTemplate/>
ты имеешь ввиду вот так?
 
угу
 
Ну так значит все таки логика будет в главном VM?
 
2:46 PM
а вот это где хочешь, забиндить можно команду и из главной VM, и из ConfirmAddOrderVM
View вообще не должно влиять на структуру VM
 
Дело в том, что при Подтверждение, должен заказ добавлять в БД
По идее это относится к главной VM же
 
угу
ну значит она должна об этом узнать
 
кто?
 
главная VM
 
ну так все таки логика будет в главном VM?:)
 
2:48 PM
@Bretbas нет, конечно
делегируй это внутренней VM
 
Дело в том, что при Подтверждение, должен заказ добавлять в БД
 
начальник получает инфу от одного подчинённого, и делегирует работу другому
всё, нужно убегать
 
Ну я имею ввиду "Добавлять в БД" - уже подразумеваю что есть репозиторий и все такое
 
ну да, но это ж не обязательно должно быть прямо в MainVM
пиши вопросы, я вернусь и отвечу, нужно бежать
давай!
 
@VladD, Что-то я не могу понять. Мне нужно, чтобы при добавлении нового заказа, заказы, которые задел новый заказ, сдвигались, и появлялись кнопки - Подтвердить или Отменить. Вот высчитывания сдвига для "задетых заказов", добавление в коллекцию нового заказа и все такое - у меня находится в главном VM.
теперь обсудим кнопки Подтвердить и Отменить. Как мы решили, для них есть своя VM - ConfirmOrderVM, которая получает в конструкторе новый заказ. Теперь, мне нужно при нажатии Подтвердить, сохранить все изменения в БД, а при Отменить - сдвинуть все измененные заказы на то место, где они были до добавления нового заказа, и удалить новый заказ из коллекции.
Итак, где мне делать логику Подтверждения/Отмены? В ConfirmOrderVM? Или все подписаться на события AcceptRequest и CancelRequest у ConfirmOrderVM нашей главной VM, и в обработчиках делать то, что я написал выше. И это получается уже в главной VM
 
 
2 hours later…
5:05 PM
Я вернулся
@Bretbas Ну хорошо, пускай в MainVM
@Bretbas Ага, хорошо.
@Bretbas Смотри. Я бы сделал так.
 
@VladD, нет стоп, мы обсуждаем. Я понимаю что в главном VM это будет правильнее...но она становится настолько большая у меня....
@VladD, все запросы ведут к ней
 
@Bretbas Ну так я ж и говорю
Что логику нужно разбивать на части
Пусть будет VM, ответственная за заказы
и главная VM пусть делегирует ей нужную работу
 
@VladD, И она будет весь список заказов иметь чтоли?
 
то есть что у нас выходит?
@Bretbas Например, да
 
@VladD, но тогда она и должна писать в БД заказы, получается?
 
5:08 PM
@Bretbas Вполне
Ну то есть вызывать модельную функцию записи в БД
 
@VladD, ХМ... ну тогда главная VM становится фасадом
она просто переходник между VM-ами
 
@Bretbas Ну и хорошо, как и любой начальник :-D
 
@VladD, базара нет:) Ладно, тогда так и буду делать:)
 
То есть по сути ConfirmOrderVM может выставить команды ConfirmCommand и CancelCommand
А их она может тупо получить у MainVM в конструкторе
а сама MainVM их может получить из OrderListVM, например
задача MainVM — организовать подчинённых, протянуть связи
вполне норм
и это, кстати, не такая уж маленькая задача
тут весь дизайн апликухи
 
@VladD, блин, мне стыдно задавать вопрос:)
@VladD, какой свойство отвечать за информацию о кнопке, когда на нее наводишь?:))) Я забыл, честно...
ToolTip что то вроде такого
 
5:12 PM
@Bretbas Ну да, ToolTip
Он самый
 
@VladD, а, оно?:) Ну ок
 
пусть все вопросы будут таким легко решаемыми :-)
 
@VladD, ну ж не могу так:) Мне нужно чтобы было все красиво и круто:)
 
ну пока вроде так и получается
 
@VladD, ну потихоньку то да:)
 
6:11 PM
@VladD, решил протестировать на сколько будет быстрее работать ToList() с указанием capacity и получил странные результаты
Вот такой метод расширения у меня для начала:
public static class EnumerableEx
{
    public static List<T> ToList<T>(this IEnumerable<T> source, int capacity)
    {
        if (source is null) throw new ArgumentNullException(nameof(source));
        var list = new List<T>(capacity);
        list.AddRange(source);
        return list;
    }
}
Вот такие тесты:
[MemoryDiagnoser]
public class ToListTests
{
    private int count = 1000;
    private static Random random = new Random();

    private IEnumerable<int> RandomSeq()
    {
        while (true) yield return random.Next();
    }

    [Benchmark]
    public List<int> ToListFromBcl()
    {
        return RandomSeq().Take(count).ToList();
    }

    [Benchmark]
    public List<int> ToListWithCapacity()
    {
        return RandomSeq().Take(count).ToList(count);
    }
}
Получил результаты:
``` ini

BenchmarkDotNet=v0.10.13, OS=Windows 10 Redstone 3 [1709, Fall Creators Update] (10.0.16299.248)
Intel Core i7-7700HQ CPU 2.80GHz (Kaby Lake), 1 CPU, 8 logical cores and 4 physical cores
Frequency=2742193 Hz, Resolution=364.6716 ns, Timer=TSC
  [Host]     : .NET Framework 4.7.1 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.2633.0
  DefaultJob : .NET Framework 4.7.1 (CLR 4.0.30319.42000), 32bit LegacyJIT-v4.7.2633.0


```
|             Method |     Mean |     Error |    StdDev |  Gen 0 | Allocated |
Как-то очень странно, по времени выигрыша вообще никакого...
В первом случае он же там раз 5 должен массив внутренний перекопировать туда-сюда, что по выделению памяти видно
Так в чем же дело? Почему нету выигрыша времени?
Использую BenchmarkDotNet
 
@VladD, слушай, а как лучше сделать закрытие моей панели с кнопками? Я хочу чтобы при любом нажатии на любую кнопку в панели она скрывалась. Мне приходится писать вот так постоянно:
var orderConfirmFunctionalityVM = new OrderConfirmFuctionalityVM(newOrder);
orderConfirmFunctionalityVM.AcceptRequest += (order) => { CurrentOrderFunctionalityVM = null; OrdersVM.AcceptOrder(order); };
orderConfirmFunctionalityVM.CancelRequest += (order) => { CurrentOrderFunctionalityVM = null; OrdersVM.CancelOrder(order); };
CurrentOrderFunctionalityVM = orderConfirmFunctionalityVM;
@VladD, тоесть самому CurrentOrderFunctionalityVM = null; устанавливать
 
6:29 PM
@АндрейNOP тысяча, возможно, мало
Копирование 2-3 тысяч байт быстрое
Возможно, стоит взять побольше
@Bretbas Это по идее задача MainVM
Она ж их всех связывает
orderConfirmFunctionalityVM.AcceptRequest += (order) => { CurrentOrderFunctionalityVM = null; OrdersVM.AcceptOrder(order); };
Ну, не так уж плохо
 
@VladD, думаешь?:)
@VladD, ну ладно.
 
@Bretbas Ну или придётся писать семантику самозакрываемой VM
То есть придумать-то можно, но будет больше мороки
 
@VladD, да хрен с ним:)
 
Угу, я ж о чём
 
@VladD, ладно, надо в барак собираться...
 
6:35 PM
@Bretbas Давай, хорошего вечера!
 
@VladD, что тут может быть хорошего...Хорошее когда я тут, с Вами:0
@VladD, а в бараке одни орки
@VladD, 80% которых и 9-ти классов школьного образования не прошли...
@VladD, таджики, узбеки и всякие упыри:)
 
@Bretbas Выбирайся оттуда поскорее
 
@VladD, ага, постараюсь:)
 
Дай бог скорее выборы и УДО
 
 
2 hours later…
8:47 PM
@VladD это аппаратно реализовано так, что память быстро копируется или там фактически операций гораздо больше и тысяча тактов на копирование - мелочи?
Я больше склоняюсь к тому, что я что-то не так делаю...
Даже на миллионе элементов время равное выдает
 
A K
9:03 PM
Эх, ё-моё... такая красивая фича была...
0
Q: Группировка cs-файлов в решении

A KВ решении asp.net core 2.0 три проекта. Перекинул из проекта WebApp содержимое папки migration в такую же папку проекта DataAccess - при этом группировка 00000000000000_CreateIdentitySchema и 00000000000000_CreateIdentitySchema.Designer не сохранилась: Это можно как-то поправить? Раньше можно ...

 
A K
9:20 PM
А куда можно написать (гитхаб/гугл группы/сам майкрософт), чтобы такую фичу вернули?
 
 
2 hours later…
10:56 PM
@AK UserVoice?
@АндрейNOP Странно
А ассемблерный код разный?
(вот тут можно посмотреть: sharplab.io)
@АндрейNOP Ну, если у машины большой кэш, то может поместиться всё в кэш
 
A K
@VladD спасибо, почитаю на следующей неделе и как разберусь - закину
 
@AK Не исключено, что оно там есть уже
 
A K
@VladD тоже подумал про это - поэтому и говорю, что надо сначала разобраться
 
11:24 PM
Тут, возможно, прямее.
 

« first day (938 days earlier)      last day (2093 days later) »