Size: a a a

2021 January 17

IB

Ivan Balanar in pro.net
Lev Yas
Я если честно затрудняюсь найти какую-то личную прикладную задачу, для решения которой подошёл бы дотнет. Обычно скрипты, эксель тот же. Последний раз именно для себя кодил микроконтроллеры - управление шаговыми двигателями, приводами всякими, но опять же, это было just for fun. Да и это было на (макро)ассемблере и Cи
хочу сделать просмотрщик одного древнего tree-based форума, у которого вложенность иногда за два экрана улетает, для такого идеально подошел бы wpf.
источник

LY

Lev Yas in pro.net
Ivan Balanar
хочу сделать просмотрщик одного древнего tree-based форума, у которого вложенность иногда за два экрана улетает, для такого идеально подошел бы wpf.
ууу блин как меня такие форумы бесили при просмотре))) особенно когда чтоб почитать каждый ответ надо было тыкать.
источник

IB

Ivan Balanar in pro.net
во-во
источник

LY

Lev Yas in pro.net
вот в контексте таких задач - мне обычно надо найти инфу каким-либо образом, да даже если сдампить в текстовый файл, найти поиском, догадаться о чем речь, найти нужное, а дальше фтопку. У меня есть пара знакомых, которые сделали чисто для себя ботов в телеграм (один - для интервального обучения словам, другой - поиск и оповещение о билетах в театр), но блин, никак не могу придумать в этом плане себе занятие 😄
источник

LY

Lev Yas in pro.net
причем программировать мне офигенно нравится, но какие-то проектики свои делаю обычно чтобы лучше освоиться с технологией, а не достичь какой-то цели
источник

D

Denisio in pro.net
значит нужна задача, идея, проект
источник

AT

Alexey Tkachenko in pro.net
Вечер троллинга?
источник

LY

Lev Yas in pro.net
Denisio
значит нужна задача, идея, проект
согласен. Вот я вначале и написал, что когда появляется какая-то задача, то часто мне бывает проще её решить с помощью существующего ПО (типа пакетного преобразования картинок или mp3) или скриптов, а вот масштабной идеи, которую только полноформатным ЯП решать - такого вот не попадалось.
Я долгое время думал что это как-то плохо и я неполноценный программист, но сейчас думаю, что это не показатель :) Так что написал всё это скорее для того, чтобы если кто-то так думал о себе - не стоит)) Просто видимо все разные.
источник

LY

Lev Yas in pro.net
Когда то давно, когда я вступил в этот чат, я спросил:

"А какой предполагается правильный способ передавать коду бенчмарков в BenchmarkDotNet относительные пути к файлам проекта с тестовыми данными?
Гуглил, не нашел, ArtifactsPath делает не это, в примерах кода, что видел, захардкожены абсолютные пути. "

@EgorBo  тогда сказал написать, как узнаю)) Вот узнал, Андрей Акиньшин ответил:
"Краткий ответ по твоему вопросу (если всё ещё актуально):
1. Из коробки такой фичи нет, надо делать. Можешь либо сам попробовать законтрибьютить, либо завести issue — авось кто-нибудь когда-нибудь сделает. =)
2. Я бы не рекомендовал завязываться на относительные пути. По задумке сгенерированный проект может находиться где угодно. В теории может сложиться такая ситуация, когда текущая директория находится на одном диске (например, она улетела в пользовательский Temp), а testdata осталась на другом диске. Лучше использовать абсолютные пути.
3. По хорошему нужно сделать возможность указывать набор TestData-файлов, которые будут копироваться в директорию к бенчмарку. Однажды в будущем я хочу сделать распределённые бенчмарки (чтобы можно было заказывать измерения на удалённом сервере), в этом сценарии доступа к локальной файловой системе не будет.
4. На мой взгляд, с текущей версией BenchmarkDotNet лучше всего указывать абсолютные пути через ParamsSource. Прикладываю проект с примером.

Андрей."
источник

LY

Lev Yas in pro.net
Код довольно короткий и понятный, проверил, работает. Не ясно как, в документации не указано, в каком контексте и в какой сборке исполняется GetTestDataPaths, но исполняется в "нормальной"

public class Benchmarks
   {
       public IEnumerable<string> GetTestDataPaths()
       {
           var root = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
           yield return Path.Combine(root, "testdata1.txt");
           yield return Path.Combine(root, "testdata2.txt");
           yield return Path.Combine(root, "testdata3.txt");
       }
       
       [ParamsSource(nameof(GetTestDataPaths))]
       public string TestDataPath { get; set; }
       
       [Benchmark]
       public void SleepBasedOnTestData()
       {
           Thread.Sleep(int.Parse(File.ReadAllText(TestDataPath)));
       }
   }
   
   class Program
   {
       static void Main()
       {
           BenchmarkRunner.Run<Benchmarks>();
       }
   }
источник

D

Denisio in pro.net
У нас test data занимает 75 гб например
источник

LY

Lev Yas in pro.net
Denisio
У нас test data занимает 75 гб например
и для бенчмарков они все нужны? Ну тогда ParamsSource :)
источник

D

Denisio in pro.net
Поэтому те кто пишет тесты - копируют их локально и отлаживают, а потом тесты ложаца в teamcity и гоняются еженочно на сервере где эти данные и лежат
источник

D

Denisio in pro.net
Конфиг сделали где пути и прописали
источник

D

Denisio in pro.net
Lev Yas
и для бенчмарков они все нужны? Ну тогда ParamsSource :)
Да, это срезы данных по которым прогоняются расчёты, однопоточно, многопоточно с разным количеством потоков, и тд
источник

D

Denisio in pro.net
Ща вот ещё etw прикркчиваем чтобы трекать io и разные метрики из clr
источник
2021 January 18

S

So in pro.net
вопрос, когда мы пишем строку вот так $"{var}"+$"{var2}" оно разворачивается в string concat + format, а почему оно в компайлтаймне не может сразу в $"{var}{var2}" сделать, что бы избавиться от конката и оставить только формат
источник

S

SeanWoo in pro.net
So
вопрос, когда мы пишем строку вот так $"{var}"+$"{var2}" оно разворачивается в string concat + format, а почему оно в компайлтаймне не может сразу в $"{var}{var2}" сделать, что бы избавиться от конката и оставить только формат
Хороший вопрос
источник

IC

Ilya L Che in pro.net
Какой-то редкий кейс, не?
источник

IC

Ilya L Che in pro.net
Хотя можно расширить до ситуаций посложнее.
источник