
Nikita
14.07.2017
12:40:10
10 килорублей за 20 часов для джуна - вполне ок
студент же поди
курс второй-третий

Андрюшка :D
14.07.2017
12:41:02

Google

Nikita
14.07.2017
12:42:53
ну вот

Vova
14.07.2017
12:47:45
Вопрос про async и Parallel.Foreach. Есть большой список items (300000), его нужно обработать, библа, которая это делает написана в парадигме async. Я тупо беру Parallel.Foreach и в X потоков обрабатываю а метод одного из объектов библы юзаю просто . Wait(). Т.е. каг бы асинхронный код запускаю синхронно, внутри многоThread-ового foreach. И короче... виснет проклятая. Проделав 99% работы. Как правильно сделать? Насколько помню Parallel.Foreach не дружит хорошо с async. Как оказалось даже с .Wait() (ну или .Result() ).

Egor
14.07.2017
12:48:51
/me ничо не понял

Nikita
14.07.2017
12:49:48
у него скорее всего асинхронщина как-то завязана на контекст синхронизации
который, есесно, во время выполнения Parallel.Foeach оказывается заблокирован

Vova
14.07.2017
12:51:56
Виснет под конец:
Parallel.ForEach(prices, price =>
{
bibla.RunAsync(price).Wait();
});
Не виснет:
foreach(var price in prices)
bibla.RunAsync(price).Wait();

Egor
14.07.2017
12:52:44
какой-то бессмысленный код
await Task.WhenAll(prices.Select(p => bibla.RunAsync(p)));

Nikita
14.07.2017
12:53:25
низя так
его разорвёт

Vova
14.07.2017
12:53:37
я про то же

Egor
14.07.2017
12:53:38
ты мне?

Nikita
14.07.2017
12:53:42
от количества одновременно зашедуленых тасок

Google

Nikita
14.07.2017
12:53:43
да

Egor
14.07.2017
12:53:45
скедулер написать

Vova
14.07.2017
12:53:47
до миллиона items

Egor
14.07.2017
12:53:47
свой
с лимитом

Nikita
14.07.2017
12:54:18
я обычно в таких случаях держу список в настоящий момент работающих тасок
и на них делаю WhenAny
и дошедуливаю в замен отработавших

Vova
14.07.2017
12:54:58
хотелось без своего огорода...

Alexander
14.07.2017
12:55:21
а что с await?

Vova
14.07.2017
12:55:51

Alexander
14.07.2017
12:55:54
Parallel.ForEach(prices, async price =>
{
await bibla.RunAsync(price)
});
?

Nikita
14.07.2017
12:56:22
Egor тем временем в авалонию замержили таки интеграцию с WPF
надо понять, как должна выглядеть встройка в Cocoa
будет ли достаточно AvaloniaView, как в ios-версии?
ну и возникает вопрос, как либу под Xamarin.Mac собирать из винды

Egor
14.07.2017
12:59:39
наверное - никак :(
впф - круто.
в Cocoa - у меня есть NSView в который я хотел бы вложить авалонию. при ресайзе нсвью чтобы авалония тоже ресайзилась)

Nikita
14.07.2017
13:00:00
ну то есть как AvaloniaView под ios сделана
т. е. мы эту интеграцию не можем вкрутить в основное дерево исходников, получается

Google

Сергей
14.07.2017
13:01:21

Nikita
14.07.2017
13:01:40
точнее как, я могу выставить из основной либы наружу какой-нибудь класс-хэлпер, выдающий IntPtr от нативного NSView
и с ним как-то работать из либы под Xamarin.Mac

Elnas
14.07.2017
13:07:29
на самом деле зря вы так про недоджуна, много таких тестировал, сперва ржал, а потом просто понял, что многие из них идут на собеседование чтобы разведать обстановку, узнать что нужно знать и т.п.
т.к. 2 из них вернулись потом с неплохой подготовкой

Nikita
14.07.2017
13:09:51
ну так их надо отправлять с напутствием вида "вот это подучи, вот это почитай, через месяц приходи"
а не ржать

Elnas
14.07.2017
13:10:43
офк так и говорил, но никто же мне не запрещал про себя ржать, когда человек говорит, что администрировал БД но не может написать простой селект

Egor
14.07.2017
13:16:15

Dmitriy
14.07.2017
13:21:44
Как думаете стоит ли хранить настройки приложения в бд? Или пользоватся стандартными возможностями которые есть у вин.формах ?

Андрей
14.07.2017
13:22:12
в конфигах храни

Dmitriy
14.07.2017
13:22:30
При этом надо учитывать бурное развитие приложения и что структура настроек будет меняться

Андрей
14.07.2017
13:22:58
ну и типа стоит вопрос переносимости и расширяемости - переносить и расширять БД дороже чем конфиг файл

Dmitriy
14.07.2017
13:24:01

Nikita
14.07.2017
13:24:15
любую структуру можно в такой формат упихнуть

Андрей
14.07.2017
13:25:36
можешь юзать жысон для хранения настроек

Dmitriy
14.07.2017
13:25:41

Vova
14.07.2017
13:26:04

Dmitriy
14.07.2017
13:26:21

Google

Dmitriy
14.07.2017
13:31:36
А как можно избежать такой вот простыни связывания контролов с объектом настроек
http://pastebin.com/PGcAtysP

Yuri
14.07.2017
13:32:48
Ребята, помогите пожалуйста)
Пытаюсь взять рандомную Gallery типа IEnumerable<GalleryItem> которая в свою очередь содержит елементы 2 типов (IGalleryImage или IGalleryAlbum). Проблема: немогу пройтись по модели( @foreach ) из-за строгой типизации представления, можете помочь как правильно и лучше перенести IGalleryImage/ IGalleryAlbum по отдельности в частичные представления, не смотря на то что галерея IEnumerable (ее же изменять нелльзя?)
Кто-то может помочь, guys))

Му
14.07.2017
13:37:10
проверяй что GaleryItem нужного тебе интерфейса и клади в нужную колекцию

Yuri
14.07.2017
13:38:02
Можешь подсказать как
Через linq?

Admin
ERROR: S client not available

Му
14.07.2017
13:39:13
collection.OfType<IGalleryImage?)

Elnas
14.07.2017
13:40:12
а получится добавить через .where(t => t.GetType() == нужный тип) ?
или он тоже заплачет из за типизации?

Yuri
14.07.2017
13:40:39
Пробовал
Плакал
И я и компилятор

Vova
14.07.2017
13:41:40
typeof() ?

Elnas
14.07.2017
13:42:45
ааа
офтайп внутри все в object преобразует, бежит по object и проверяет какой это тип

Му
14.07.2017
13:43:54
с where можно collection.Where(t => t is IGalleryImage)

Роман
14.07.2017
13:45:16

Google

Роман
14.07.2017
13:45:51
у нас так чуваки делали загрузку многих тысяч мелких файлов, ставили лимит в 50 тасков

Анатолий
14.07.2017
13:46:02

Vova
14.07.2017
13:47:53

Му
14.07.2017
13:48:27
хотелось без своего огорода...
я делаю так
public static class CollectionsExtentions
{
public static async Task<IList<TResult» SelectAsync<TSource, TResult?this IEnumerable<TSource> source, Func<TSource, Task<TResult» selector, int maxDegreesOfParallelism = 4)
{
var results = new List<TResult?);
var activeTasks = new HashSet<Task<TResult»();
foreach (var item in source)
{
activeTasks.Add(selector(item));
if (activeTasks.Count >= maxDegreesOfParallelism)
{
var completed = await Task.WhenAny(activeTasks);
activeTasks.Remove(completed);
results.Add(completed.Result);
}
}
results.AddRange(await Task.WhenAll(activeTasks));
return results;
}
}

Роман
14.07.2017
13:49:10

Vova
14.07.2017
13:49:18

Yuri
14.07.2017
13:53:21

Му
14.07.2017
13:53:33
узнай, это же просто

Анатолий
14.07.2017
13:53:47

Му
14.07.2017
13:54:01
да и из скрина это видно
IGalleryItem
и не наследуются от интерфейса, а имплементируют его

Анатолий
14.07.2017
13:54:50
мне можно, у меня был 26-часовой рабочий день вчера

Му
14.07.2017
13:55:08
:) а я вчера перед сном решил запустить Prey на полчасика
очнулся в 4 утра

Yuri
14.07.2017
13:55:47
Ребята, а если IEnumerable то я не могу where применять?

Му
14.07.2017
13:55:57
можешь
напиши using System.Linq в начале

Ilya
14.07.2017
13:56:13
разреши ему

Му
14.07.2017
13:56:38

Ilya
14.07.2017
13:56:47
Эта группа больше не существует