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

Страница 509 из 1888
Friedrich
09.03.2017
13:51:30
У тебя же все женерики при AOT инстанцируются, и будет просто код, со всеми типами подставленными. Дальше компиль может его инлайнить как нужно.

Ну и, да, AOT в полной мере будет работать только для конечного EXE-приложения без плагинов и пр. динамики. Просто так DLL'ку с женерик-определениями классов ты не AOT'нешь.

А при AOT женерики могут работать в точности так же, как темплейты в C++. А там это работает нормально (ну, с точки зрения быстродействия итогового кода, во всяком случае).

Сергей
09.03.2017
13:53:21
Тоесть у нас есть 10 дженерик классов, есть 10 value типов, мы получим 10^2 классов в AOT?

Google
Friedrich
09.03.2017
13:53:50
Тоесть у нас есть 10 дженерик классов, есть 10 value типов, мы получим 10^2 классов в AOT?
У тебя реально каждый из 10 классов в программе был использован со всеми 10 value-типами?

Сергей
09.03.2017
13:53:57
Или есть flow анализ аля tree shaking?

Friedrich
09.03.2017
13:54:01
Если да, то получим.

Я не знаю, как устроен настоящий AOT в Mono.

Сергей
09.03.2017
13:54:54
Но можем поспекулировать

Friedrich
09.03.2017
13:55:07
Насколько я помню, наш настоящий JIT сейчас делает по специализации для каждого value-типа и одну специализацию для всех ref-типов.

Мб value-типы как-то ещё по размерам можно смержить, тут хз. Нужен специалист :)

Friedrich
09.03.2017
13:57:23
Или есть flow анализ аля tree shaking?
Вообще, я _слышал_, что .NET Native для UWP-приложений делался при помощи C++-компилятора, так что моя аналогия с темплейтами не случайна. Те же самые методики и должны были применяться, в т.ч. попытки сократить количество лишнего кода (а C++-компилятор в этом хорош).

Vinc
09.03.2017
13:57:25
Из того, что мне на днях встречалось — это https://github.com/amaneureka/AtomOS (ось на C#, натурально).
чот не собралось ничего. сетап дошел до скачивания тарболов, и сказал, что билдить не могу, идина

Vinc
09.03.2017
13:58:19
кроме шуток, как это сделать?

Friedrich
09.03.2017
13:58:29
Вон, на тревисе-то собирается, судя по всему: https://github.com/amaneureka/AtomOS/blob/master/.travis.yml

Google
Friedrich
09.03.2017
13:59:21
кроме шуток, как это сделать?
Заходишь в список багов: https://github.com/amaneureka/AtomOS/issues И создаёшь свой с описанием, что и на какой ОС пробуешь, и какие логи у тебя получаются.

Vinc
09.03.2017
13:59:25
мб и я не с того начал, лол) через пару часов повторю на норм железе, домой пора)

Nikolay
09.03.2017
14:00:25
Точнее как там C# исполняется?

Friedrich
09.03.2017
14:01:54
Ребята, простите, мой лимит компетентности в этом вопросе исчерпан, я не знаю :(

Vladimir Bondaryuk
09.03.2017
14:04:03
Точнее как там C# исполняется?
https://github.com/amaneureka/AtomOS/wiki/Compiler возможно как-то так

Женя
09.03.2017
14:08:24


или он будед ждать пока предыдущий вызов функции не отработал?

Nikolay
09.03.2017
14:09:44
В тот же файл?

В любом случае, никто никого ждать не будет)

Женя
09.03.2017
14:10:11
имя файла зависит от времени

а что будет то?

Nikolay
09.03.2017
14:10:34
Одновременно писаться в два файла

Если у тебя в этот файл идёт уже запись, то вывалит ошибку

Женя
09.03.2017
14:14:23
ясно, если имя совпадет, то свалится с ошибкой)



Владимир
09.03.2017
14:43:03
Я не знаю, что здесь происходит, но все выглядит НЕПРАВИЛЬНО

А что находится в line[1] ?

Nikolay
09.03.2017
14:46:32
Ожидание завершение таски можно сделать через t.Wait(); в твоём случае

Google
Женя
09.03.2017
14:46:59
это класс, описывающий линию, подключенную к порту компа

Nikolay
09.03.2017
14:47:14
А зачем тебе ждать вообще? Ты не хочешь чтобы одновременно несколько файлов писалось?

Женя
09.03.2017
14:48:43
ну я копирую данные в глобальный байтовый массив, который сохраняется, мне казалось так проще

Дмитрий
09.03.2017
14:49:59
по-моему, стоит пересмотреть описание задачи, которую необходимо реализовать расписать её ещё раз по пунктам это больше половины дела "без внятного ТЗ - результат хз" и всё такое

Женя
09.03.2017
14:51:10
Зачем тогда тебе асинхронная запись
данные поступают в COM-порт непрерывно, я хочу чтобы не было потерь пакетов, если записываемый файл будет очень большим или запись будет тормозить по какой-то причине

Дмитрий
09.03.2017
14:51:10
начать с бизнес-логики и проектирования на бумажке

Женя
09.03.2017
14:52:41
в line

// класс описывающий телефонную линию class Line { //физический номер линии на плате int _portNumber = 0; //байтовый поток public MemoryStream memory = new MemoryStream(); //копия массива для асинхронного сохранения public byte[] SoundArray; //конструктор public Line (int port) { _portNumber = port; } // описание линии данное пользователем public string UserName { get; set; } // установка физического номера линии public int Port { get { return _portNumber; } set { _portNumber = value; } } // есть ли сигнал в линии public bool Signal { get; set; } // прослушивать линию или нет public bool OnLine { get; set; } // набранный, входящий номер public string TelephoneNumber { get; set; } }

Владимир
09.03.2017
14:54:41
Почему тогда у тебя везде в коде захардкодено line[0] ? Если их много.

Летучая
09.03.2017
14:54:49
Ужос

Летучая
09.03.2017
14:55:09
{ get; set; } четыре строчки вместо 0

Friedrich
09.03.2017
14:55:35
Alexander
09.03.2017
14:55:49
Женя
09.03.2017
14:55:53
Ожидание завершение таски можно сделать через t.Wait(); в твоём случае
но мне не ждать надо, а узнать что таск уже закончился

Летучая
09.03.2017
14:59:08
get { return _portNumber; } set { _portNumber = value; } это тоже не очень

get => _portNumber; set => value;

Владимир
09.03.2017
15:00:02
get => _portNumber; set => value;
Это дело вкуса все, не путай человека

Google
Летучая
09.03.2017
15:01:03
в репозиториях скроллить полотна геттеров и сеттеров не очень доставляет

Сергей
09.03.2017
15:01:09
А что C#7 уже в RTM?

Владимир
09.03.2017
15:01:59
я пока эксперементирую
Опиши полностью сценарий во времени. У тебя есть эти телефоны. Что происходит дальше? Ты ловишь какой-то ивент, выбираешь уже готовую линию (создаешь?) и начинаешь писать в ее стрим? Потом заканчиваешь и хочешь сохранить в файл? В это время может еще раз сработать тот же ивент?

Владимир
09.03.2017
15:02:34
в репозиториях скроллить полотна геттеров и сеттеров не очень доставляет
Так-то тут вообще на автопроперти можно поменять.

Летучая
09.03.2017
15:03:05
Ну и комментарии надо в три слеша писать, тогда студия всплывающие посдказики завезёт

Nikolay
09.03.2017
15:03:50
Перфекционисты блин :)

Friedrich
09.03.2017
15:20:19
get => _portNumber; set => value;
А что, set => value — это в C# 7 уже так можно?

Admin
ERROR: S client not available

Friedrich
09.03.2017
15:22:31
Да не, чёт вроде такого нету!

Затралил меня как лалку :(

Летучая
09.03.2017
15:23:22
set => propName = value; есть

ну почти

Friedrich
09.03.2017
15:24:34
Ох щи, да, так можно. Правда, решарпер мне там всё красным расцветил %)

Видимо, чуваки из JB сами ещё в C# 7 не разобрались, или впилить поддержку этой содомии не успели.

Так и представляю себе ченжлог решарпера: "R# 2017.1: добавлена содомия"

Владимир
09.03.2017
15:28:45
Friedrich
09.03.2017
15:28:53
Ну, блин, она вчера вышла :)

Ок, позавчера.

Axm
09.03.2017
15:29:12
решарпер в 2017 студии вообще отвратительно работает
хуже то, что нет расширений пока нихуя под решарпер

Google
Friedrich
09.03.2017
15:29:29
Я им уже репортил кой-чего про System.ValueTuple.

Microsoft news
09.03.2017
15:29:32
Предварительная версия (TP3) облачной платформы Azure Stack доступна для загрузки https://blogs.msdn.microsoft.com/rudevnews/2017/03/09/the-preliminary-version-of-azure-stack-is-available-for-download/ Компания Microsoft выпустила последнюю предварительную версию (ТР3) для платформы Azure Stack, которая доступна для загрузки с 1 марта 2017 года. Обновление содержит улучшения в инфраструктуре и настройках безопасности платформы. Кроме того, новые функции позволяют работать даже в местах, где отсутствует подключение к  Azure. Создание инновационных приложений с помощью облачных технологий имеет важнейшее значение для организации,...

Владимир
09.03.2017
17:10:04
да, теоретически может, поэтому хочу понять что делать в этой ситуации
Тогда у тебя асинхронность с обработчика и должна начинаться. Покажи обработчик.

Женя
09.03.2017
17:11:46
не совсем понимаю, с какого именно обработчика?

Виталий
09.03.2017
17:20:13
Посоветуйте библиотеки для работы с svg. Пробовал Svg.dll/ magick.net, но первая выбрасывает исключение при рисовании в битмэп, а вторая тяжеловата... Сейчас использую msxml.dll для парсинга получаемых от эски "графиков" . Не знает наш одинэсник других вариантов. Добавляю атрибут viewbox и заменяю ширину/высоту стилем css. И сохраняю это обратно в html файл . Извращение то еще. Самое печальное, что как надо отображает это только фаерфокс. Есть вариант вытянуть svg разметку в отдельный файл, но парсить ее всю не хочется. Нужна библиотека

Владимир
09.03.2017
17:22:16
не совсем понимаю, с какого именно обработчика?
каким образом ты понимаешь, что надо что-то писать в мемористрим?

Axm
09.03.2017
17:23:08
Я что-то пропустил. Зачем вызывать Control.Invoke?
Чтобы не получить cross thread operation not valid

А кто-нибудь работал с azure stack? Сегодня слышал что они в этом году из превью не выйдут.

Sergey
09.03.2017
17:34:32
Энтот ваш эджайл испортил айти мир. Вот в советские времена если выкатывали продукт - так уж сразу хорошо оттестированный. А счас вечные превью и никакого качества кода (фигле, можно хотфикс в любое время накатить)

Axm
09.03.2017
17:34:59
а где слышал?
В офисе у нас

Sergey
09.03.2017
17:35:56
Пусть пользователи тестируют. Можно роадмапы проносить.

Axm
09.03.2017
17:36:44
Пусть пользователи тестируют. Можно роадмапы проносить.
Я думаю, что в данном случае это полезно провайдерам, чтобы к релизу ажура выкатить и свое решение

Дмитрий
09.03.2017
17:37:52
Энтот ваш эджайл испортил айти мир. Вот в советские времена если выкатывали продукт - так уж сразу хорошо оттестированный. А счас вечные превью и никакого качества кода (фигле, можно хотфикс в любое время накатить)
в моей практике даже в "хорошо оттестированном" продукте от вендора я находил в коде адовые костыли и хардкод вплоть до гуидовых констант для определения возможности отображения элементов контекстной менюшки

так что всякое бывает

Vladimir Bondaryuk
09.03.2017
17:39:34
Чтобы не получить cross thread operation not valid
ну так доработать под что то подобное

private readonly SynchronizationContext _synchronizationContext = SynchronizationContext.Current; Task.Run(() => { ..... }) .ContinueWith(task => { _synchronizationContext.Post(state => { //тут вызов контролов }, task.Result); });

Sergey
09.03.2017
17:40:45
А ты сидишь и думаешь. Пилить продукт под ажуру (нет кор или вставить очередную долгоожидаемую технологию), ждать релиза, смотреть аналоги или быть готовым к "ой, мы тут в который раз подумали и редизайнили все к hooyam"

У меня сегодня нытье

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

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