Этого треда уже нет.
Это копия, сохраненная 10 ноября 2023 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
images.png6 Кб, 190x265
2 2808821
Так чем же шарп лучше джавы?
3 2808823
>>08819 (OP)
Судя по пикам, шарп существует только для того, чтобы быть костью в горле жабы.
aBn1pA2460s (1).jpg36 Кб, 460x595
4 2808825
>>08823
Напомни, за что платят индусам, пишущим на Java???
5 2808826
>>08825
Я ебу? Видать, за поддержку легаси из 2005.
6 2808830
Почему в петушарпе решили делать антипаттерн-загрязнитель кодовой базы асинк/эвейт, а не виртуальные треды, как в джаве? Почему белые мужчины-разработчики джавы оказались умнее индусов из майкрософта?
7 2808860
>>08819 (OP)
Ты, блин, из какого года эти оппики взял? Особенно второй.
8 2808861
>>08830
Исключительно для того, чтобы ты мог здесь и сейчас задать этот вопрос.
изображение.png93 Кб, 1069x473
9 2809049
Где это используют? Или где вы это используете?
10 2809108
>>09049
В джаве такого нет, следовательно это не нужно и можно не использовать никогда.
11 2809253
>>09049

>Примеры работы с cсылочными типа на стрингах.

12 2809500
Почему в треде шарпа первые две картинки посвящены джаве? Как и первые 3 поста
13 2809527
>>09500
Гонять и насмехаться над джавой - дело богоугодное
14 2809549
>>08821
Всем.
15 2809554
>>08819 (OP)
Первая картинка ложь, сисярп давно мультиплатформа и имеет открытые сурцы.
16 2810111
Как на винде настроить вим, чтобы работать с C#?

Не понимаю, как на винде языковой сервер в виме использовать?
Как темки настроить(стандартная таки всратая)?
Как перенастроить использование команд не из cmd а из павершела?
sage 17 2810117
>>10111
Visual Studio.
18 2810121
>>10117
Что висуал студио? Мне лабы делать надо. Зачем мне качать 10+ гигабайт хреноты, которой я пользоваться не буду?
sage 19 2810123
>>10121
Будешь пользоваться при написании лаб и потом удалишь.
20 2810477
>>10121
Пользуйся визуал студио и не выебывайся
изображение.png11 Кб, 808x57
21 2810803
Хмм
22 2811094
>>10121
Пользуйся тогда VS Code, он сотню мб весит.
23 2811308
>>09554
При этом C# можно компилировать в такой же нативный код, как выдаёт раст или С, используя LLVM, который давно уже прикручен к шарпам.
24 2811403
Напердолил себе такую штуку чтобы транзакции между микросервисами гонять, обоссыте расскажите что где и почему хуйня и как улучшить:
https://dotnetfiddle.net/R2aHaC
25 2811466
>>10803
Нахуй ты всратые книги читаешь?
26 2811502
>>11466
Книга норм Джозеф Албахари. А вот перевод храмает
27 2811815
Ну что, какой идэ то лучше? Старый модный Visual studio иди новомодный Rider?
28 2811841
>>11815
VS Code + dotnet CLI. Серьёзно.
Если по уши в слоях говнокода и нужен лучший дебаггер - VS.
29 2812598
>>11841

>CLI. Серьёзно.


Серьёзный жир, да? Я в компьютерах с 80-х, и даже тогда графика была широко в ходу. Кукарекающий за командную строку это по дефолту жирный дегенерат, не говоря уже про 2023, вообще абсурд.
30 2812725
Почему котлин и jvm говно?
31 2813151
>>12598

>Я в компьютерах с 80-х,


У нас недавно одного такого опытного недавно уволили. Тоже еще во времена DOS начинал. Не смог освоить работу с линуксовым стендом в консоли по SSH.
32 2813153
>>13151
Надо было ему дать Telnet.
33 2813205
>>12598
Ебать,инфоцыгане и в лесополосу пролезлт.
34 2813243
>>13205

>инфоцыгане


Кстати, даже инфоцигане сейчас домохозяек обучают в консоли работать. По гиту так вообще все курсы только работе с консолью обучают.
35 2813348
А в чём разница, кроме того, что вариант с TryParse более громоздкий?
image.png16 Кб, 467x149
36 2813374
>>13348

>А в чём разница


В том, что тебе не придется эксепшен в ебало ловить и обрабатывать его без крайней необходимости.
>>13348

>что вариант с TryParse более громоздкий?


Смотри пик.
37 2813375
>>13374
Так ведь и так и так не придётся вроде.
38 2813380
>>13375
Эксепшены нужно ловить там, где ты не можешь на процес повлиять в I/O например. Зачем это делать там, где можно без них обойтись?
Плюс, очень часто бизнес логика допускает, что значение не может быть распарсено и имеет свою ветку выполнения на это. При использовании TryParse, ты получаешь четкий флаг, того как обработалось значение и можешь спокойно делать то, что нужно. А вот в случае try/catch, ты можешь знатно поебстись, т.к. тебе либо придется прописывать дополнительную логику в catch (что уже большой долбоебизм), либо прописывать этот флаг там, что тоже нифига не улучшит твой код.
39 2814136
>>13380

> Эксепшены нужно ловить там, где ты не можешь на процес повлиять в I/O например.


Когда кабан орет из-за высокого процента крашей хуячишь их в каждый метод...
40 2814295
>>08819 (OP)
Сеньоры - мудрецы, дайте знания

Вкатываюсь в it. Почему - то сильно понравился си шарп и хочу в него вкатиться.

Но проблема в том что майки 30 сентября поддержку прекращают в РФ, а я заводить трактор не собираюсь тк не знаю английского и вряд ли его в 21 выучу.

Так вот вопрос
Стоит ли выкатываться в си шарп чтобы найти работу в рф и свои мини проекты лепить?
41 2814296
>>14136
И хули с ними в каждом методе делать? Обосравшись прокидывать выше? "не ну выше то точно кто то нормально захэндлит!"
42 2814298
>>14295
А как на тебя должен их уход повлиять? Мсбилд в тыкву в россии превратится?
43 2814300
>>09049
очевидно со значимыми типами и там где очень нужно передать по ссылке (не путать передать по ссылке и передать ссылку)
>>09108
жавистам ничего не нужно. они говноеды.

возьмем пример. я не знаю как у жавистов, но допустим имеем мы изображение и нам нужно работать с пикселями напрямую и можно читать примерно так (пример ImageSharp)

ref Rgba32 pixel = ref pixelRow[x];

далее как бояре работает с объектом пиксель. А что в жаве по этому поводу? 4 отдельных переменных r g b a и таскаться с ними? В объект их нельзя - будет аллокация.

>>09500
видимо тред перекатил жавист. (хотя может этот тред и не перекат никакой). ведь о нем не было сказано в последнем треде.

>>12725
жвм говно из за отсутствия значимых типов и похеренных дженериков. котлин няшка, в которой конечно нет того что рантайм не позволяет. Но в плане выразительности котлин няшнее шарпа.

>>14296
эксепшены нужно ловить там где ты знаешь что с ними делать и тебе нужно что то с ними делать.
44 2814304
>>14298

>А как на тебя должен их уход повлиять?


Ну си шарп это же от микрософта и вся экосистема ( one drive, почта и т.п ) отлетит
или я не так размышляю?
45 2814309
>>14300

> эксепшены нужно ловить там где ты знаешь что с ними делать и тебе нужно что то с ними делать.


Никто обратного и не доказывает. Просто пришел тут в одном место работать а там без шуток огромная гора try catch у которых в обработке одинокий throw ex;

>>14304
Я понимаю если бы ты ажур клауду с потрохами продался, но тебе максимум что сулит из проблем это студия только с впном качаться будет.
Оракл давно уже сделали ноги с рынка и ничего джава вроде внезапно не трансформировалась в тыкву
46 2814387
>>14309

>а там без шуток огромная гора try catch у которых в обработке одинокий throw ex;


Т.е. мало того что, код засрали, так и стектрейс еще на похуях проебывают.
47 2814391
>>14295

>Но проблема в том что майки 30 сентября поддержку прекращают в РФ


Типа до этого тут дохуя поддержка от них была.
Просто линукс выучи и все. Ну а вдруг лицензии понадобятся, вон китайцы под боком.
16522032698470.png996 Кб, 923x1080
48 2814428
>>14295

>а я заводить трактор не собираюсь тк не знаю английского и вряд ли его в 21 выучу.


Можно подумать, будто если бы ты знал английский, то проблем завести трактор у тебя бы не было. Даже не учитывая твой возраст.
49 2814455
>>14428
Ну технически зная лангуагу он мог бы флилансить на буржуинов для начала
50 2814469
>>14455

>для начала


Какого начала? Он писал о тракторе, дурень ты блядь. Причём здесь вообще фриланс?
51 2814476
>>14469
А потом начинаешь работать на одного заказчика
В итоге он тебя релоцирует.

Или работаешь на аутосорсе и тебя потом со всей командой тракторят
Ничего необычного.
52 2814482
>>14455

>он мог бы флилансить на буржуинов


Вкатун фрилансить в 2023-м. Ну-ну.

>Или работаешь на аутосорсе


Та же хрень. На аутсорс сейчас нанимают либо совсем прожженых милордов, либо по знакомству.
53 2814629
>>14476
Чувак, ты жопой читаешь? Речь шла о том, что анон не знает инглиша и на основе этого не собирается за бугор. Но даже если бы знал, то на ситуацию это бы мало повлияло.

К чему тут твои манятеории о том, как он там мог бы работать и как там могло бы быть? Это и без твоих соплей понятно, что можно работать на аутсорсе и чисто гипотетически потом переехать, хотя кому ты нахуй нужен, релокейтить тебя. Особенно пассажир из Рашки в 2023.
54 2815343
>>14629

>Но даже если бы знал, то на ситуацию это бы мало повлияло.


пока ты вкатун и позиционируешь себя как вкатун - да.

>ты нахуй нужен, релокейтить тебя


если ты спец то плевать откуда ты. другое дело что ты можешь быть связан договором. это да.

>Особенно пассажир из Рашки в 2023.


А что с ним в 23 году. Как бы много народу что уехало работать - они как бы тоже из той же страны.
55 2815389
>>15343

>А что с ним в 23 году.


Да нихуя. Всё нормально. Ничего не происходит. Дыши ровней.

>Как бы много народу что уехало работать - они как бы тоже из той же страны.


Мне нужно тебе объяснять, что из числа айтишников уезжали как минимум мидлы с минимум 5 летним стажем и целой кучей припасённого бабла или ты сам додумаешься?
56 2815498
>>15389

>Всё нормально. Ничего не происходит.


именно так.

Вкатуну же скажу что при его раскладе лучше выбрать язык на котором есть вакансии там где он расчитывает работать. Майки вообще не причем - сам по себе в ру зоне шарп не очень популярен.

А англ пусть выучит.
57 2815686
>>15498

>именно так.


Это был сарказм, ты хлебушек ёбаный. Война идёт, долбаёб. А все граждане рф теперь в западном мире нерукопожатные. Возится с релокейтом Ваньки никто не хочет и в 90% случаев не станет. Хотя бы потому, что есть еще тыщи Тарасов и уже приехавших Ванек- мидлов и сеньёров, да и своих спецов хватает. Усёкла, чудила?
58 2815711
>>15686
Продолжай в это верить. Мне то что.
59 2815748
>>15711

>Продолжай в это верить.


Тут не во что верить, Вася. Это можно проверить на практике. Я понимаю почему ты так не согласен. Потому, что сам хочешь съебать отсюда именно через заключение трудового договора с кабанчиком из ЕС или США. Ставлю косарь, именно для этого ты и вкатывался в ОЙти.
60 2815838
Нашел как в Nuget настроить автоматическое копирование контента в импортирующий проект (пикрил 1). Выглядит это как линк (пикрил 2).

Но вот в чем проблема, копируется ТОЛЬКО контент т.е. всякие текстовые файлики, джейсончики и конфигурации.

А у меня словарь ресурсов с прикрепленным .cs (пикрил 3). У словаря BuildAction:Page, а у cs-файла BuildAction:Compile. Поэтому блок из пикрил 1 переделывает этот словарь ресурсов в контент, и cs-файл не видит его, сразу же становится недоступен метод Initialize(). (пикрил 4)

Можно как-то это говно обойти, или невозможно?
61 2815850
>>15838
вообще раньше и Fody создавал хмл файл, а потом перестал, и Nlog тоже.
А еще был пакет, не помню как называется, но там их много и каждый для одной функции расширения к LINQ. И вот оно ставилось и создавало именно cs файл с одной функцией расширением
вот как Morelinq, но он сразу много чего тащит, а там конкретно одна функция
что то типа netfx, но чет ничего не нахожу. Видимо такое больше не работает и все это удалили.
62 2815853
>>15838
ага. вот они
https://www.nuget.org/packages?q=netfx-System.Collections.Generic.IEnumerable

только щас оно сниппеты лепит куда то
в общем не то что тебе нужно.
63 2815858
>>15850
Раньше при установке можно было исполнять павершелл скрипты, с какой то версией деприкейтнули (и к лучшему)
64 2815876
>>15850
>>15853
Думаю, хрен с ним, пусть будет два файла, один как Page, а другой как Content, но я не хочу это каждый раз вручную копировать. Пытался через команды, типа XCOPY воспользоваться, чтобы перед сборкой копировало само, но опять же почему-то работает только с Content-файлами. Мб словарь ресурсов и cs-файлы заняты.

Вроде лежат в одной папке, но даже если я копирую папку целиком, то копируются только файлы, помеченные как контент.
2023-08-2301-44-58.png6 Кб, 667x115
65 2815877
>>15876
Вот три файла. Копируется только txt.
66 2816122
>>15876
>>15877
Так, разобрался. Короче, все через жопу, но результата я своего добился.

Теперь я свободно работаю со словарем ресурсов, а далее перед сборкой, этот файл копируется в этот же проект при помощи команды 'copy'. И уже при помощи >>15838 копия определяется как контент и копируется нюгет-пакетом в импортирующий проект.

Из неудобств — дублирование файлов, которое может сбить с толку и случайное редактирование не той копии (не смотря на то, что я это разделил разными папками). Установил для этих файлов read only чтоб наверняка.
67 2816283
Хм.
Вопрос.
Как без множественного наследия сделать примерно следующее:

public class EventEmitter<T>{
private IList<Action<T>> _eventHandlers;
public void Emit(T e){ Какая-то логика по публикации события }
public IDisposable Subscribe(Actinon<T> eventHandler){ // логика подписки }
}

public class User : EventEmitter<LoginEvent>, EventEmitter<LogOffEvent>{
// Собственно логика класса юзера
}

Конечно, можно сделать типа интерфейс, дефолтную имплементацию создать в пользователе, потом пробрасывать вызовы к этим дефолтным интерфейсам, но блин. Как жижа выглядит.
68 2816377
>>16283
Ну есть два способа:
1. Множественное наследование (считается зашкваром)
2. (не помню как называется) Когда ты в "class User" создаешь два приватных поля с экземплярами "EventEmitter<LoginEvent>" и "EventEmitter<LogOffEvent>"

А дальше к ним обращаешься через свойства или методы. Ты так можешь хоть тысячу классов объединить и это будет куда практичнее. У тебя даже суть твоих двух классов не подразумевает наследование, даже не скажешь кто и кого должен наследовать первым.

Но несмотря на надменность некоторых пидоров к наследованию, не стоит от него отказываться вообще. Если это в пределах 1-2 классов, то гемора с наследованием будет меньше.
69 2816380
>>16377

>Если это в пределах 1-2 классов


я имел ввиду, если наследование ограничивается 1-2 классами, либо что-то одно является ну прям базой всего остального.
70 2816386
>>16283
>>16377

>2. (не помню как называется)


Вспомнил, это называется "Композицией".
71 2816391
>>16283
- Наследование (то что у тебя щас)
- Реализация (то что ты предложил в качестве альтернативы)
- Композиция
- Ассоциация
- Агрегация

https://metanit.com/sharp/patterns/1.2.php
72 2816458
Почему у object из коробки нет методов для каста? Приходится самому писать CastTo<T> и As<T>
73 2816463
>>16458
Именно поэтому
74 2816475
>>16458
1. Хранить в обджекте - плохая идея из-за аллокаций. Это делается только в исключительных случаях, в основном в wpf.

2. CastTo<T> небезопасен, а проверять КАЖДЫЙ тип персонально — это ебануться какой сизифов труд.
75 2816616
Есть стиль, у которого BorderThickness при помощи динамического ресурса берет значение из внешнего элемента Thickness. Выглядит это так:


<Thickness x:Key="Static.BorderThickness">3</Thickness>

<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
. . . <Setter Property="BorderThickness"
. . . . . . . . . Value="{DynamicResource Static.BorderThickness}"/>
</Style>


Но я хочу сделать посредника, чтобы у меня Thickness ссылался на еще один Thickness.


<Thickness x:Key="Static.BorderThickness">3</Thickness>

<Thickness x:Key="Button.Static.BorderThickness" Left="{DynamicResource Static.BorderThickness.Left}" />

<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
. . . <Setter Property="BorderThickness"
. . . . . . . . . Value="{DynamicResource Button.Static.BorderThickness}"/>
</Style>


Но Thickness это структура и у нее нет Dependency Properties. И хз как это обойти.
Даже если посредником будет условный класс Border, у которого есть свойство BorderThickness, то я не знаю как к нему обратиться при помощи DynamicResource.


<Thickness x:Key="Static.BorderThickness">3</Thickness>

<Border x:Key="Button.Static" BorderThickness="{DynamicResource Static.BorderThickness}" />

<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
. . . <Setter Property="BorderThickness"
. . . . . . . . . Value="{DynamicResource (Button.Static).BorderThickness}"/>
</Style>


И как быть вообще?
75 2816616
Есть стиль, у которого BorderThickness при помощи динамического ресурса берет значение из внешнего элемента Thickness. Выглядит это так:


<Thickness x:Key="Static.BorderThickness">3</Thickness>

<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
. . . <Setter Property="BorderThickness"
. . . . . . . . . Value="{DynamicResource Static.BorderThickness}"/>
</Style>


Но я хочу сделать посредника, чтобы у меня Thickness ссылался на еще один Thickness.


<Thickness x:Key="Static.BorderThickness">3</Thickness>

<Thickness x:Key="Button.Static.BorderThickness" Left="{DynamicResource Static.BorderThickness.Left}" />

<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
. . . <Setter Property="BorderThickness"
. . . . . . . . . Value="{DynamicResource Button.Static.BorderThickness}"/>
</Style>


Но Thickness это структура и у нее нет Dependency Properties. И хз как это обойти.
Даже если посредником будет условный класс Border, у которого есть свойство BorderThickness, то я не знаю как к нему обратиться при помощи DynamicResource.


<Thickness x:Key="Static.BorderThickness">3</Thickness>

<Border x:Key="Button.Static" BorderThickness="{DynamicResource Static.BorderThickness}" />

<Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
. . . <Setter Property="BorderThickness"
. . . . . . . . . Value="{DynamicResource (Button.Static).BorderThickness}"/>
</Style>


И как быть вообще?
76 2816833
>>16283
нормально делать получателя так
class User: IHandler<Event>
тот же медиатор так делает.
Но нет никакого смысла делать отправку сообщений так, когда объект может просто владеть объектом eventEmiter и слать сообщения.

>>16458
в языке и так есть 2 синтаксиса каста. засирать ВСЕОБЩИЙ БАЗОВЫЙ класс еще и методами = палки в колеса тем, кто захочет использовать методы с такими именами для своих нужд.

>>16616
вот чем впф ущербна, так это работой со стилями. Ты слишком много от нее хочешь
11.png19 Кб, 842x642
77 2817239
В общем. Базово - вроде разобрался в Vim'ом на винде.

Теперь вопрос. Как прикрутить к нему LS, чтобы подсказочки там, ссылочки, переход к определению и всякие рефакторинги, чтобы как в VSCode короче.

Как стыдно перед Си-анонами...
78 2817253
>>16833

>вот чем впф ущербна, так это работой со стилями.


Да пипец, я всю голову себе сломал.

>Ты слишком много от нее хочешь


Я хочу от нее базы — динамической смены темы и скинов.
Но все туторы, что я видел по динамическим темам, немного облегчают боль, но не решают всех проблем. Все как один приколачивают гвоздями многие свойства, либо создают вещи, которые непонятно как в дальнейшем модифицировать.

Один чел решил сделать enum из стринговых ключей ресурсов цвета. А что если те, кто будет пользоваться его библиотекой, захотят расширить список ключей? Enum не умеет в наследование. Что с этим делать? Мастерить какой-то конвертер?

Или берет условный ресурс SolidColorBrush с ключом "BorderThickness" и привязывает все стили к нему. А если надо будет изменить толщину только для тексбоксов не трогая все остальные контролы? Мне придется перелопачивать стили.

Короче я решил свою проблему весьма долбанутым способом, но решил. Через StaticResourceExtension мой Thickness-посредник получает данные от Thickness-оригинала, но единожды, как статический ресурс. Но тогда образуются проблемы с обновлением в рантайме, поэтому я всех посредников выделяю в отдельный словарь, и при каждой смене темы я генерю новый экземпляр словаря и комбинирую со всем остальным.

Так что я добился пока самого идеального менеджера тем с регулируемой гибкостью настройки. Не решен (частично) только один вопрос — добавление внешних стилей.
sage 80 2817271
>>17239
Никак, вим не поддерживает шарп.
81 2817293
Столкнулся с ошибкой CS1003 expected ',' (строка с if)
Код:
public class Size
{
int width;
int height;

public int customWidth = 0;
public int customHeight = 0;

void If(int customMapHeight > 0)
{
int height = customMapHeight;
}
}
Красным подчёркнут знак '>' (строка с if)
Я где только запятую не пытался ставить, не помогает. Что это за ошибка?
82 2817298
>>17293
У тебя тип возвращаемого значения стоит перед if. Убирай его. Или если ты хотел сделать метод, тогда убирай > 0.
83 2817304
>>17298
Ну судя по тому, что у тебя сласс Size, ты хотел сделать метод, так что убирай > 0. и если тебе нужна проверка, то пихай её внутрь метода.
11.png19 Кб, 769x419
84 2817305
>>17293

У тебя вообще не валидный код, няша. ХЗ чего ты добиться пытался.

Суть.

У класса - могут быть
Конструктор - это процедура, которая будет выполнена перед созданием экземпляра класса(ака объекта).
Поля - это такие-то переменные, в рамках объекта, ака - состояние этого объекта, ака - контекст
Методы - это функции и процедуры, которые имеют доступ к полям, свойствам, событиям и другим методам класса

Сверху
Свойства - сахарок позволяет тебе избавиться от постоянной пары методов Ассесора и Мутатора(ака геетера-сеттера)
События - сахарок, чтобы ты паб-саб не реализовывал постоянно, пусть и с некоторыми проблемами.

Собственно. Да.

А тот код что у тебя - это не класс, а ХЗ что.
85 2817335
>>17305
Спасибо за оперативный ответ. Сейчас ошибок нет, а чтобы проверить как он работает, мне нужно написать дополнительный код.
86 2817337
>>17253

>Я хочу от нее базы — динамической смены темы и скинов.


зачем. ох уж эти красочные интерфейсы
дизайн должен быть хардкорным - 100 кнопок и 10000 таблиц на одной форме.
87 2817355
>>17337
Просто ты бежишь от проблем. Если бы UI писался левой пяткой, то ты бы так не утверждал.
88 2817374
>>17355
У меня нет проблем. Я пишу софт для внутреннего использования. И вот там темы, анимации и прочие перделки - никому нах не нужны и даже наказуемы. А вот старые добрые таблицы, многооконность и "много инфы на экране" - очень даже приветствуется, ибо ехать, а не шашечки.
Вернее проблемы есть - ибо работать со стилями в впф таки нужно и много (это ж в WPF - там миллион косяков нужно лечить через стили).
89 2817408
>>17374
Дизайн не противоречит функциональности. Студия выглядит вполне таки стильно и молодёжно при этом упихивая тонны иконок и панелей в тонны окон.
В внутренних же продуктах у юзеров просто нет выбора, вот потому и выглядят корп порталы/софт как правило как говно (да и работают примерно так же)
90 2817424
>>17408
А у меня есть другой пример - idea-based редакторы. И вот там начала задвигать идею "а давайте сделаем минимализм по типу visual studio code", как будто это хорошо.
Хорошо что эту дрянь можно отключить.

>у юзеров просто нет выбора


но не потому что "жричодали", а потому что иначе просто неудобно работать. Даже вон в десктопном телеграме сделали возможность выделить разговор в отдельное окно, что как бы нарушает дизайн "делаем аля у нас тут планшет, а не какой нибудь qip"
91 2817429
>>17408
и забыл - даже в студии вон хотят задвинуть новый дизайн с большими отступами. Исключительно ради "а че другие пидорасничают, а чем мы хуже"
и тонны всего просто перестанут упихиваться.
92 2817437
>>17424
1. Хоть и сижу на старой теме в джетовских продуктах (новая совсем говно) но и старая не нравиться особо из-за ограниченности в композе панелей в окне.

>>17429
2. Новость видел давно, надеюсь их бог покарал и инициативу свернули

3. Ты привёл пример и я привел. Сделать красиво и удобно можно, но бизнес за это платить не будет. Проклятый мир который мы сами создали
93 2817553
>>17437

>Новость видел давно, надеюсь их бог покарал и инициативу свернули


В мае было. Тема вроде заглохла, но не до конца, они вроде как фидбек переваривают. Там народ им в принципе аргументированных хуйцов прилично натолкал в обсуждении, но и долбоебов вопящих "Круто, новый интерфе-е-ейс" тоже немало было.
94 2817571
>>17553
А еще они похерили старую добрую контрастную синюю тему с 17й студии. Хорошо что решается через расширения, но это показательно.
95 2817587
>>17571

>А еще они похерили старую добрую контрастную синюю тему с 17й студии.


Согласен. Синяя тема была топ.
96 2817605
>>17553
Ниче не заглохла. Видел скриншоты от дев команды с новым интерфейсом студии. Внутренний тест идет. Думаю, к 8 дотнету выкатят.
97 2817647
>>17605
проблевался? я не слежу, но после того как в файрфоксе сделали дебильные отступы просто "а пусть будут" и в итоге вкладки стали выглядеть как кнопки, а закладки просто не влезать в экран - от такого дебилизма просто тошнит и хочется уе...ь (и это не уехать)
98 2817656
>>17647
Там не понятно нихуя. Скрины были по фитче, не от команды UI. Кусок контекстного меню и только. Суть в том, что фемки зашарили свой интерфейс на остальных. Тестят всем майкрософтом.
99 2817991
А есть какие нибудь методы расширения enum?

1. Допустим, в nuget-пакете есть перечисление с расширениями аудиофайлов
enum
{
. . . mp3 = 0,
. . . wav = 1
}


И я хочу добавить расширение ogg. Как это сделать правильно или хотя бы легко? Понятно, что когда всего два элемента, то можно вручную создать свое перечисление, но если взять полный список всех расширений файлов, то он будет содержать до сотни элементов. И самое главное как сделать совместимым с оригинальным enum?

Решения, кроме создания метода расширения для конвертации я не нашел. Ну и собсно гемор с ручным переписыванием всех итемов.
100 2818001
>>17553
Это что ли?
Тут явно ориентир на большие мониторы. Так-то если сейчас открыть студию 2022 на мониторе 800х600, то едва ли там влезет хотя бы одна панель.

Сделали закругленный десигн, как у шиндовс 11.
Ну и отступы я так тоже делаю, лол, тут спорное решение. Я считаю, что для приложений с более широкой аудиторией можно жертвовать информативностью в угоду красоте, а для технических нужно приоритет ставить на функционал.

Но отступы увеличивают читабельность, а в профессиональной среде иметь минимум 2 монитора на специалиста это уже норма. Попытка запихнуть ВСЁ в один экран с разрешением 1280х900 — это слабоумие и отвага.

Ну да, раньше все влезало, ну так и мультимониторов или 4к мониторов раньше не было. А теперь есть, так почему бы не сделать лучше? Понятно что соснет одноминитораня челядь, но кто они такие? Они теперь в меньшинстве — их черед страдать. А для 4к мониторов увеличение UI только в плюс, ибо там все СЛИШКОМ мелко.
maxresdefault.jpg67 Кб, 1280x720
101 2818041
>>18001
Сижу на ультравайде с 4к по низу на 100% скейле. Считаю дизайн текущей студии идеальным. Отступы просто жрут полезное пространство.

Рака жопы таким слабовидящим как ты. Скатываете всё до уровня бабушкофонов
102 2818074
>>18041
Лично я для своих приложух указываю настройки масштабирования и спейсинга. В любом проф софте у тебя есть целая кипа настроек.

Все таки вся эта ебля со скинчиками UI и создана для того, чтобы каждый настроил рабочее пространство под себя. Хош — берешь скин как на XP, хош как на модной 11, хош светлую тему, хош темную, хош модные шрифты да покрупнее, хош крупные иконки, хош иконки + текст.

Непонятно хули вы тут осуждаете то, что буквально создано для решения вашей проблемы. А то, что многие производители оскотинились и забили на вариации, ну так это классика почти для любой области.

>Считаю дизайн текущей студии идеальным.


Ну это ты считаешь, а другой — нет. Анон выше сожалел о синей теме, а другой бы изошел на говно, увидев ее.
Стикер255 Кб, 512x375
103 2818081
>>18041

>Рака жопы таким слабовидящим как ты.


А знаешь почему я стал слабовидящим? Из-за мелких отступов в предыдущих темах UI.
104 2818248
>>18001

>иметь минимум 2 монитора на специалиста это уже норма


- которые расположены...ммм.....рядом с друг другом? ведь да? ну рядом же?
- ясно. владельцы ноутов не профи. зопесал.
105 2818316
>>17991
И потом твое расширение по большущей пизде пошло бы, когда в нюгете собственное расширение изменят.
106 2818326
>>18074

>Непонятно хули вы тут осуждаете то, что буквально создано для решения вашей проблемы.


Это было бы так, если бы они действительно предлагали это как какой-то вариант кастомизации. Но будет скорее всего замена старого на новое, как когда-то везде начали применять ублюдочный риббон, вместо нормального интерфейса.
Я, кстати удивлен, что до студии эта тема не докатилась, хотя некоторый серьезный инженерный софт в свое время тоже наступил в это говно.
107 2818334
>>18001

>Сделали закругленный десигн, как у шиндовс


И поскольку он способствует сливанию элементов в единую кашу решили сделать отступы побольше. Еще и выделение активного элемента ухудшили.
108 2818458
>>17991
1 енумы в шарпе убоги
2 для такого используется адаптер. паттерн такой.
конечно если ты не хочешь сделать свой нюгет пакет расширяющий первый. тогда или все таки делать адаптер или пункт 1
109 2818617
>>14295
Ищи чет другое, на данный момент работы для джунов нет вообще нихуя, я уже не первый месяц ищу.
110 2818659
>>17553
Новый интерфейс райдера топ кстати
111 2818717
>>08819 (OP)
Как создать несколько объектов, название которых задаётся кодом а не вручную (b1, b2, b3, b4)?
112 2818723
>>18717
Сигналы с марса транслируешь?
113 2818727
>>18717
Словарь. Значение твой объект, ключ - "название".
114 2818819
>>18723
Без шуток, наверное должно быть полно задач, когда нужно создать автоматически массу объектов и автоматически дать им имена.

>>18727
Какой-то слишком сильный костыль получается. И всё-равно словарь нужно заполнять вручную.
115 2818826
>>18819

> наверное должно быть полно задач


Но таких задач нет.
116 2818852
>>18819
Для задач когда у тебя куча похожих объектов и тебе их нужно различать в коде, была придумана куча способов. Массивы, списки, словари, базы данных и т.д.
Ты же хочешь использовать самый ебанутый, с кучей переменных/объектов отличающихся друг от друга именами.
117 2818934
>>18852
Понял. Но словарь содержит лишь два свойства об объекте (имя и значение), а что если значений 2 или больше?
118 2818958
>>18248

>оторые расположены...ммм.....рядом с друг другом?


Да хоть вокруг. Суть моего посыла в том, что у пользователя увеличилась площадь экрана. Для этого либо ставят несколько обычных мониторов, либо один большой. Лично я сторонник перового варианта.

>ясно. владельцы ноутов не профи.


Если на постоянке работают, то как минимум долбоебы. Если используют как мобильный девайс для командировок или выездов на объекты — то отличный вариант.
119 2818959
>>18316
Вот это тоже проблема. Странно, что для энумов не реализовали наследование. Так неудобно.
120 2818960
>>18326

>хотя некоторый серьезный инженерный софт в свое время тоже наступил в это говно


Автокад и 3д-макс? Я думал это собственная разработка Автодеска.
121 2818961
>>18934
Чел, у объекта может быть сколько угодно полей, свойств, методов и тд.
122 2818965
>>18961
У объекта - да, но в словаре всего два поля - название и значение.
123 2819004
Как лучше организовать загрузку данных в десктопном приложении? То есть различных файлов, с которыми работал пользователь в прошлых сессиях, собственных ассетов приложения и тд.
124 2819018
>>18934

> а что если значений 2 или больше?


Лучше бы тебе конкретно описать задачу, иначе нижеописанное может в твоем случае пойти во вред.

Тебе нужен для этого новый класс. Совершенно очевидно по твоему описанию, что это некая группа с неким именем или идентификатором, которая содержит в себе кучу других объектов. Налицо иерархия.

Обычно есть простой список, а все свойства хранит в себе итем. Внутри каждого итема могут быть списки других итемов, а те содержать в себе списки еще одних.

По поводу генерируемого имени. К примеру у меня были итемы, у которых есть свойство ID, которое генерировалось случайным образом в конструкторе итема. Вот создал ты новый экземпляр и у тебя автоматом заполнился ID.

Если нужно неслучайное ID, а последовательное, как у тебя (b1, b2, b3), то можно хранить последний индекс созданного итема как статическое поле и при каждой инициализации инкременировать

public List<Prisoner> Prisoners {get; set; }

public class Prisoner
{
. . . static int lastID; //хранилище последнего созданного ID-индекса
. . . string ID {get; set; }
.
. . . public Test()
. . . {
. . . . . . lastID ++; //инкременируем индекс
. . . . . . ID = 'b' + lastIndex.ToString(); //билдим новое ID
. . . }
}


Если же индексация каким-то образом зависит от коллекции, в которой находится, то индексацию берет на себя эта коллекция.

Как например это было с другим свойством - Parent, моего итема, которое редактировал мой кастомный класс, реализующий IList, либо наследующий List (небезопасно). В этом классе я реализовал метод Add(item), который помимо добавления в список еще и помещал ссылку на себя в Parent добавляемого итема.

public class PrisonBlock : IList<Prisoner>
{
. . . private List<Prisoner> prisoners = new();
.
. . . public void Add(T item)
. . . {
. . . . . . prisoners.Add(item);
. . . . . . item.Parent = this; //добавляем себя в качестве родителя
. . . }
}


Таким образом мы можем обратиться к итему Prisoner и по Parent узнать его актуальынй индекс в блоке. Кстати, в этом блоке тоже может быть свой Parent, который сообщает номер этажа, а в этаже ссылка на корпус и так далее. Это пример на случай, когда идентификатор итема зависит от его положения в списке родителя.
124 2819018
>>18934

> а что если значений 2 или больше?


Лучше бы тебе конкретно описать задачу, иначе нижеописанное может в твоем случае пойти во вред.

Тебе нужен для этого новый класс. Совершенно очевидно по твоему описанию, что это некая группа с неким именем или идентификатором, которая содержит в себе кучу других объектов. Налицо иерархия.

Обычно есть простой список, а все свойства хранит в себе итем. Внутри каждого итема могут быть списки других итемов, а те содержать в себе списки еще одних.

По поводу генерируемого имени. К примеру у меня были итемы, у которых есть свойство ID, которое генерировалось случайным образом в конструкторе итема. Вот создал ты новый экземпляр и у тебя автоматом заполнился ID.

Если нужно неслучайное ID, а последовательное, как у тебя (b1, b2, b3), то можно хранить последний индекс созданного итема как статическое поле и при каждой инициализации инкременировать

public List<Prisoner> Prisoners {get; set; }

public class Prisoner
{
. . . static int lastID; //хранилище последнего созданного ID-индекса
. . . string ID {get; set; }
.
. . . public Test()
. . . {
. . . . . . lastID ++; //инкременируем индекс
. . . . . . ID = 'b' + lastIndex.ToString(); //билдим новое ID
. . . }
}


Если же индексация каким-то образом зависит от коллекции, в которой находится, то индексацию берет на себя эта коллекция.

Как например это было с другим свойством - Parent, моего итема, которое редактировал мой кастомный класс, реализующий IList, либо наследующий List (небезопасно). В этом классе я реализовал метод Add(item), который помимо добавления в список еще и помещал ссылку на себя в Parent добавляемого итема.

public class PrisonBlock : IList<Prisoner>
{
. . . private List<Prisoner> prisoners = new();
.
. . . public void Add(T item)
. . . {
. . . . . . prisoners.Add(item);
. . . . . . item.Parent = this; //добавляем себя в качестве родителя
. . . }
}


Таким образом мы можем обратиться к итему Prisoner и по Parent узнать его актуальынй индекс в блоке. Кстати, в этом блоке тоже может быть свой Parent, который сообщает номер этажа, а в этаже ссылка на корпус и так далее. Это пример на случай, когда идентификатор итема зависит от его положения в списке родителя.
125 2819024
>>18965
Значит тебе не нужен словарь.

И не забывай, что любой класс ты можешь модифицировать. Если в словаре не хватает свойств, ты наследуешь словарь и добавляешь нужные тебе свойства. Проблемс?
126 2819026
>>18965
Делаешь ключом кортеж и вот у тебя ключ составной
127 2819038
>>19004
Ну как? У тебя команды Open, Import, Merge срут в историю действий и заодно могут срать в список последних использованных файлов. Дальше ты этот список сохраняешь куда хочешь, возможно с бэкапом предыдущего списка.
Для этих команд ты даже можешь создать интерфейс, чтобы он в обязательном порядке заставлял команду срать в этот список, чтобы ни одна муха ...

В фотошопе вот только недавно столкнулся с говной — они сохраняют информацию только при закрытии приложения. В итоге, когда фотошоп крашнулся, я лишился истории последних открытых файлов.

Возможно, что команда Open насрала в список своевременно, вот только энтот список сохраняется при успешном закрытии приложения. В итоге имеем что имеем. В общем это тебе пример, что успешные компании не утруждают себя этими вашими сложностями.
128 2819041
>>19026
А можно пример?
129 2819042
Давайте лучше обсудим как в впф кнопки красить...
130 2819043
>>19038
Хотя ... с другой стороны, может лучше заполнять список истории при сохранении и экспорте. Иначе список может заполняться мусором, если пользователь просто открывает что либо и закрывает не внося изменений — например что-то ищет.

Но я такое редко где видел. Даже студия поднимает в списке ссылку на решение даже если оно было просто открыто.
131 2819047
sharplab.io сдох что-ли? У меня нихуя не работает.
132 2819066
почему инсталлятор visual studio ставит миллиад говна на 10гб, а связка vs code + dotnet весит меньше гига и просто работает?
image.png103 Кб, 2004x1068
133 2819068
>>19047
С твоей стороны проблемы

>>19066
Потому что это не vscode, не?
134 2819069
>>19068
ну вот я хочу поставить visual studio с поддержкой asp net, он мне предлагает ставить хуеты на 10 гигов, нахуя?
135 2819071
>>19069
Я не понимаю зачем ты сюда вообще пришёл. Сам же говоришь что вскод прекрасно работает и не требует тонны зависимостей вот и поставь себе асп отдельно и продолжай жить на вскоде. Или идею поставь.
Всё сводится к тому что выбор у тебя есть и никто не привязывает к студии
136 2819076
>>19071
не эстетично комп засорять, хочется, да не можется
image50 Кб, 1346x278
137 2819092
>>19069

>10 гигов


Дедусь, ты таблетки-то вовремя принимай, 10 гигов - это 1 серия Следствие ведут знатоки (или что вы там смотрите) в нормальном качестве.
138 2819100
>>19092

>пик


Ну не под систему же такое брать. Нужеть хоть какой то нвме+кэш и не совсем подвал
139 2819179
>>19066

>visual studio ставит миллиад говна на 10гб


А нехуй Pro с торрентов качать, долбоеб. Комьюнити чистая около 700Мб весит, а с минимальными либами около 3Гб. И лежит она на оф сайте майкрософта бесплатно.
image.png39 Кб, 753x567
140 2819326
почему не подгружается изменённый жисон? то есть манду не получается поменять
141 2819352
>>19326
Че за паблик стринг? В шарпе можно делать публичные поля?

Сериализатор берет во внимание только публичные свойства. На поля ему похую, про публичные не в курсе, но судя по твоему вопросу — тоже.

А еще из текста не видно, что у тебя что-то должно меняться.
Судя по этому коду, у тебя в джейсоне будет всегда манда, даже при отсутствии файла во время загрузки. Хз как ты там проверяешь в таких-то условиях.
1693061113323.png419 Кб, 960x540
142 2819382
>>19352

> В шарпе можно делать публичные поля?


Always has been
image.png56 Кб, 988x471
143 2819410
Документация у авалонии конечно моё почтение. Ни одного сука комментария, в аргументах одни инты, разбирайся, сука, как хочешь.
144 2819415
>>19382
Я думал это запрещено женевской конвенцией.
145 2819431
>>19415
C# - это не Java-параша, это надмножество C++.
146 2819453
>>18958

>что у пользователя увеличилась площадь экрана.


в ширину, еще раз напишу В Ш-И-Р-И-Н-У. ширина это по горизонтали понимаешь? то есть хоть миллион мониторов но высоты они тебе не прибавят.

а у тех у кого огромные мониторы -у них проблем с видимостью нет. просто у всех забирают рабочую высоту просто "ачтобыло"

>Если на постоянке работают, то как минимум долбоебы


они не долбоебы. они просто работают.
некоторые вот с телефона даже софт пишут

Это если тебе приходится сидеть в душном офисе с кучей мониторов, то это кто еще долбоеб лол )

>>19431
Иметь возможность стрелять себе в ногу и реально стрелять в ногу - разные вещи
image.png105 Кб, 1230x620
147 2819555
>>19179
>>19092
ой блять, шизики повылазили... я про community. Вот скрин. IntelliJ IDEA вот ПРОСТО просит указать путь к JDK и не ебет мозг установками всякого кала на диск C
148 2819610
>>19555
ты же понимаешь что JDK/SDK не то же самое что ты показываешь на скрине?

И что собственно IntelliJ IDEA и является тем что ты показываешь на скрине в той или иной мере и уж сама она с радостью ставится на диск ц ))))
вон у меня стоит комьюнити idea и занимает на диске сама 3 гига. При это я конечно без понятия чего она предоставляет, а чего не предоставляет. Ну еще и в профиле юзера накакает.

что конечно не отрицает факт, что студия любит понаставить говна. Например я не пользуюсь sql server, нахер не нужен этот энтити фреймворк и нода, но все это добро мне навалят.
149 2820227
>>18965

> У объекта - да, но в словаре всего два поля - название и значение.


Пчел, ты изначально вообще хотел переменную. У неё тоже "два поля" - имя и содержимое.
150 2820730
>>18717
Тебе названия переменных нужны, чтобы к ним обращаться в процессе написания кода. Нахуя тебе имена, которые ты в коде никак не прописываешь?
151 2820755
>>17991
>>18959

> Странно, что для энумов не реализовали наследование


А если внутри нугет пакета будет свитч, который выполняет какую-то логику в зависимости от значения энум переменной? Как ему реагировать на твое ogg?
152 2820762
>>20755
Хороший тон это ветка с notsupportedexception но в целом согласен что затея с наследованием энамов говно. В некоторых местах к примеру есть проверки а-ля is in enum и дальше предполагается что то что прошло дальше точно валидно.

В целом непонятен смысл дополнять чужой энам
153 2821109
>>19555
Как реализовать логгер, который вместе с каждым логом будет передавать нужные мне параметры?
155 2821135
Делал кто-нибудь биндинг в ASP.Net полей с разным именем, типа в теле запроса шлём { hui_morja: 999} а в классе надо замапить на поле HuiMorja? Подскажите как делали) Все решения из гугла не работают чёт))))
156 2821154
>>21135
AutoMapper
157 2821280
>>21135
Зависит от того какой у тебя сериализатор. Если дефолтный то в свежих корках стоит syste.text.json, если корка постарше или ты руками json.net подкинул то он.
И у того и у того есть атрибут который можно повесить на проп jsonpropery и там название пропа в жсоне. Одним словом гугли
158 2821285
>>21135
Если ты даже такую хуйню не способен сделать тебе не место в программировании
159 2821286
>>21285
Всё с чего то начинали. Его ошибка в том что он пошёл спрашивать у людей а не у гугла
sage 160 2822071
>>21286
Не ошибка, диагноз.
Screenshot20230829225724.png17 Кб, 686x239
161 2822593
Почему в случае шарпа - выведется 0, а в JS - все правильно работает? Ваш шарп хуже JS получается?
Screenshot20230829230315.png6 Кб, 445x86
162 2822597
>>22593
На всякий случай - пример с JS чтобы все видели, про что я говорю
.png33 Кб, 686x402
163 2822601
>>22593
>>22597
Ёбу дал ты, а виноват почему-то шарп.
164 2822602
>>22593
Почему ты такой долбоеб?
165 2822603
>>22593
Пизды тебе за такой код вломить нужно и за внимательность тоже.

Попробуй в журнашлюхи податься, думаю взлетит
166 2822604
>>22601
Действительно. Моя вина.

Тогда другой вопрос.
Почему шарп заставляет меня вон ту первую строчку добавить? Без этого не компилировалось, говорило, дескать - использование неинициализированной переменной.
Опять же - в JS все нормально и ничего не ругается.
167 2822605
>>22602
>>22603
А вы - токсики. 12 ночи. Немудрено ошибиться. Фу такими быть. Другой анон хоть на ошибку указал.
168 2822606
>>22604
Ты ебалан? Гений сравнений.
1693340122232.jpg29 Кб, 600x527
169 2822608
>>22605
Вопрос нужно задавать нормально а не прикидываться пикрилом
170 2822612
>>22604
В твоём любимом JS с "use strict" будет та же самая ошибка. И не надо думать, что var в шарпе и жс - это одно и то же.
Screenshot20230829231802.png14 Кб, 690x156
171 2822622
>>22608
Я не прикидываюсь ни кем.
Просто я не могу понять, почему.

>>22612
Я не про то.
Шарп же умеет захватывать всякое. Может проанализировать тело, понять что пытаются захыватывать, вычислить тип и сгенерировать нужный делегат. Опять же - если переменную проинициализировать - оно работает нормально. А вот если нет - не собирается.
172 2822644
>>22622
Потому что рослин за тебя локальные переменные не инициализирует. Может быть когда-нибудь это изменится. Как когда-то делегаты не выводились.

Не собирается, потому что анализатор понимает, что у тебя гарантированный эксепшен в рантайме.
173 2822662
Ну а сама инициализация необходима, потому что шарп домохозяичный яп. Локальная переменная находится в стеке. И условные 4 байта int i; могут наложится на произвольные байты оставшиеся от структуры, которая находилась в стеке до этого. В результате локальная i, без инициализации, будет иметь произвольное значение.
174 2822669
>>21109
Так логгеры serilog и log4net умеют это делать, аля string.Format. Ты через запятую перечисляешь параметры.
175 2822680
>>22669
И даже больше. Попробовав структурное логирование жизнь заиграет новыми красками
Screenshot20230830192052.png64 Кб, 734x622
176 2823734
Вопрос.
Хочу в студии вот такой вот заголовок иметь.
И чтобы автор - проставлялся на основе гита, а время - автоматом при создании файла.

На линуксе - у меня скриптики и я просто делаю:
:r !./header.sh

после создания файла.

А вот че делать на винде в студии?
177 2823748
Как бороться с жирностью вью моделей? Пока приходит на ум только костыль в виде partial классов, и интерфейсов, т.е. можно разбить все методы и свойства на группы, вынести в интерфейсы, затем эти интерфейсы реализовать в отдельных файлах как часть одного класса.
178 2823753
>>23734
Н-но... зачем??
179 2823767
>>23753
Ну. У меня пиздец встает хуй потому что кажется прям максимально эстетично. Я прямо смотрю на это и нарадоваться не могу. ХЗ как описать.

А еще у джавистов - такое же есть. Я чувствую с этой стороны - неполноценным себя, что не имею в студии такого же.
180 2823770
>>23748
Раскидать логические куски по отдельным классам, а "вью-модель" сделать просто фассадом буквально без какой-то логики?
181 2823781
>>23734
Узнай, как такая практика называется, ну и загугли как это автоматизировать для сутдии.
182 2823786
>>23770
Как я это раскидаю, если мне нужно взаимодействовать со свойствами внутри вью модели?
183 2823799
>>23786

// кусок твоей логики
class A {

public string Name { get; set;}
public void SomeImplrtantAndComplexLogic() { Console.WriteLine(42) ; }

}

// кусок твоей логики
class B {

public int Age { get; set; }
public void AnotherlrtantAndComplexLogic() { Console.WriteLine(69) ; }

}

// Фассад
class ViewModelFacade{

A _a = new();
B _b = new();

public string Name { get => _a.Name; set => _a.Name = value; };
public void SomeImplrtantAndComplexLogic() => _a.SomeImplrtantAndComplexLogic();

public int Age { get => _b.Age; set => _b.Age = value; };
public void AnotherlrtantAndComplexLogic() => _b.AnotherlrtantAndComplexLogic();

}
183 2823799
>>23786

// кусок твоей логики
class A {

public string Name { get; set;}
public void SomeImplrtantAndComplexLogic() { Console.WriteLine(42) ; }

}

// кусок твоей логики
class B {

public int Age { get; set; }
public void AnotherlrtantAndComplexLogic() { Console.WriteLine(69) ; }

}

// Фассад
class ViewModelFacade{

A _a = new();
B _b = new();

public string Name { get => _a.Name; set => _a.Name = value; };
public void SomeImplrtantAndComplexLogic() => _a.SomeImplrtantAndComplexLogic();

public int Age { get => _b.Age; set => _b.Age = value; };
public void AnotherlrtantAndComplexLogic() => _b.AnotherlrtantAndComplexLogic();

}
184 2823804
>>23799
Выглядит всрато
185 2823811
>>23804
Лучше чем у тебя будет partial фигня.
partial - вообще придуман исключительно для случая чтобы сепарировать то что ты пишешь от того что нагенерировал какой-то генератор кода.
186 2823816
Кстати. Про генераторы кода.

Вот кто-то использует в своей работе что-то?
Вот у майков в коде - часто вижу что они используют. Но там понятно как-бы.
А на уровне пониже. Чего-нибудь генерируете? И если да, то как?

Я вот последний раз - стрингбилдером клиенты для устройств когда на заводе работал - генерировал по вычитываемой с устройства информационной карты.
187 2823840
>>23816
Бойлерплейт гененировать. Больше нахуй не нужОн.
188 2823843
>>23816
Активно использую postsharp
189 2823868
>>23734
Ну и делай то же самое тем же скриптом только в всл
190 2823947
>>23868
Та это уже как костыль жуткий выглядит.
Типа вот я в студии работаю.
Создаю новый файл. Переключаюс на wsl, иду по ебейшему пути в духе: /mnt/c/users/abc/sources/repos/Project1/src, открываю vim'ом нужный файл, выполняю скрипт. Закрываю wsl и дальше работаю.
Даже если не закрывать, а просто делать это переодически - все еще как добро выглядит.
191 2823952
>>23947
Ну и не делай тогда
192 2823959
>>23767

> кажется прям максимально эстетично


А на самом деле это максимально уёбищно.
193 2823975
Какой вариант написания else if с одной инструкцией является более общепризнанным?
194 2823978
изображение.png67 Кб, 481x573
195 2823983
>>23978
Ты так написал, потому что так лично тебе нравится? Или, может, пояснишь? Даже бездушная программа лучше тебя отвечает, для тебя это повод задуматься.
196 2823987
>>23983
Первый вариант написания с использование фигурных скобок является более общепризнанным в программировании. Этот вариант обеспечивает более читаемый код и является стандартным при написании больших блоков кода. Он также позволяет легче вносить изменения внутри блока кода, если это потребуется в будущем.
197 2824028
>>23748
есть такое. Попробуй добавить контроллеры какого то вида или общие вьюмодели, куда вынеси логику контроллерную.
198 2824071
>>23978
Посмотрел на первый варианты. Их по методу DRY взаимно ликвидировали.
199 2824072
>>23975

var msgs = new[] {"Число четное", "Число нечетное"};
while(true) {
var index = int.Parse(Console.ReadLine()) % 2;
Console.WrteLine(msgs[index]);
}
200 2824122
>>23947
Ты бред несёшь и сам твой подход бред что новый что старый. Подобные задачи делаются одним вызовом на весь репо, если угодно то в хуке гита
201 2824163
>>23767

> что кажется прям максимально эстетично


Нет это смотрится максимально хуево.
Во первых через какое-то время заебывает постоянно читать эту портянку в файле, т.к. коду она отношения не имеет, а место съедает.
Во вторых - вся эта информация итак в гите есть. Кто, что, когда из файлов создал и какую строчку в нем изменил.
202 2824169
>>23816

>Вот кто-то использует в своей работе что-то?


Миграции для БД через EF - эвридей.
Модели для парсинга xml - часто
Клиенты для сваггера - крайне редко
203 2824171
>>23975
1-й. Скобки ставятся всегда.
204 2824173
>>23983

>Даже бездушная программа лучше тебя отвечает, для тебя это повод задуматься.


А ты с порядком картинок в собственном посте разобраться не можешь. На твоем месте я бы об этом задумался.
Снимок экрана 2023-08-31 в 15.18.11.png112 Кб, 848x217
205 2824290
>>08819 (OP)
Вот тебе и шарп, нах, пишите на нем сами. Контора пидорасов, что бы я нахуй еще раз связался с любым продуктом этой конторы.
206 2824298
>>24290
Да как бы и хуй с ним. Проблемы маководов это проблемы маководов
207 2824302
>>24290
Ну и не совсем понятно причем тут шарп если речь идёт о одной конкретной идешке
208 2824707
>>23975
срать на общепризнанность.
предпочитаю 2
1 - жрем слишком много вертикального пространства просто так
3 - длинные строки тяжелее читать, особенно если в строке 2 действия - а тут сравнение и действие.
2 - самый идеал. семантика отделена и сразу видно скоуп.
209 2824894
>>24302
Не просто какой то там иде, а иде от самих создателей языка
210 2824900
>>24894
а Visual Studio Code от кого?
211 2824921
>>24894
На маке вообще весь не яблочный софт существует не благодаря а вопреки
212 2824931
>>24921
Забавно читать это в треде языка, на котором до сих пор нет нормального нативного гуи фреймворка, при том что на маке с этим никаких проблем, и писать красивые нативные приложения способна даже макака
213 2824939
>>24931
а ну ну, давай расскажи мне подробнее как макака будет писать на хкоде (кстати невероятно говняная IDE сама по себе) кроссплатформенные гуи приложения.

А мы тут послушаем.
214 2824946
>>24931

> нативного гуи фреймворка


>>24939

> кроссплатформенные гуи приложения



Ебать ты конечно маневрировать начал
215 2824947
>>24931

>и писать красивые нативные приложения способна даже макака


Ну так пусть эта же макака и сделает для макоебов нормальную IDE. Problems?
216 2824985
>>24946
ну так для винды (родная платформа) тоже есть нативный гуи и не один. И тоже может макака писать.
217 2824988
>>24985

> ну так для винды (родная платформа) тоже есть нативный гуи и не один


В том то и беда, что все нативные гуи на винде либо устарели (wpf, winforms, uwp), либо максимально кривые (winui, maui). Современного и хорошо работающего просто нет. Это я тебе как разработчик десктопных приложений говорю.
218 2824995
>>24988
И ладно бы только устарели, wpf тормоз жуткий, uwp анально огороженная платформа (самое уебанское решение майков, если бы не эти ограничения писал бы на uwp и в хуй не дул. Да, и там есть кривости, теней нет нормальных например, но в сравнении с wpf это просто технология богов)
219 2825017
>>24988

>wpf тормоз жуткий


и при этом быстрее того же winui лол

не знаю, пишу на WPF и мне норм. А всякие там эффектики и красивости мне не нужны.
И как раз UWP и выше считаю огороженным и УРЕЗАНЫМ говном - то нельзя, этого нет.

На а винформс есть винформс.
что на маке родное то? я хз но гугл первым выдал AppKit, похоже жуть страшнее чем винформс.
SwiftUI? так он не для макоси. Сам концепт мне нра, но из за выразительной убогости свифта и шарпа ну такое себе, а самая мощь подобного подхода раскрывается только на котлин, но это все для мобил как бы. Если тебе нужен DataGrid то ууупс.
220 2825058
>>25017

> и при этом быстрее того же winui лол


Но гораздо медленнее UWP. На wpf даже нельзя добиться плавной анимации без микролагов, это ли не пиздец?

> И как раз UWP и выше считаю огороженным и УРЕЗАНЫМ говном - то нельзя, этого нет.


Winui то как раз не огорожен, а так да, это большой минус UWP, но этот минус компенсируется скоростью работы и наличием Composition Layer
>>25017

> так он не для макоси


И для нее в том числе.

А так вся надежда на Авалонию, для неё конечно нужно самому все контролы пилить, чтобы нативно выглядели, но это в целом не сложно. Главное что работает лучше wpf, возможностей больше, в последней версии ещё и Composition Layer из UWP добавили. Документация правда куцая, с msdn и рядом не стояла, зато чат есть, где можно напрямую с разрабами пообщаться.
221 2825069
>>24988

>Это я тебе как разработчик десктопных приложений говорю.


Ты вымирающий вид, который скоро будет выкинут на свалку истории. Пора откатиться в сторону и лечь помирать.
222 2825071
>>25069
Я пишу пет на asp net, скоро обязательно вкачусь в актуальную технологию
223 2825162
>>25069
засрут все вебуйным говном типа электрон
слышали ага.
2023-08-3122-51-31.png26 Кб, 652x298
224 2825292
А можно как-то редиректить xml-документацию?

Вот к примеру пикрил, мне надо подписать класс и конструктор класса (подчеркнуто). Текст в большинстве случаев один и тот же, но вставлять копипаст как-то тупо и не практично.
225 2825306
>>25292
inheritdoc?
226 2825317
>>25306
О, да, это мне и нужно. Спасибо!
image.png54 Кб, 575x418
227 2825319
228 2825410
>>25058
Ох если бы не шрифты в авалонии
229 2825630
Напоминаю БАЗУ:

Что есть на джаве, чего нет на петушарпе:
— Стабильность и вера в будущее (обратная совместимость)
— @Delegate (петушарп не поддерживает композицию, приходится ручками переписывать по 500 однотипных методов)
— @RequiredArgsConstructor, @AllArgsConstructor, @NoArgsConstructor
— @ToString (приходится генерировать средой разработки и сидеть в классе с кучей говна, красивые элегантные классы нинужны, лучше попилим его с помощью partial class и не так всё плохо будет выглядеть, при добавлении новых полей перегенерировать)
— JavaFX
— Minecraft
230 2825779
>>25630
петросян посетил наш тред.

Открываем инет про @Delegate хотя бы и читаем
"Current status: negative - Currently we feel this feature will not move out of experimental status anytime soon, and support for this feature may be dropped if future versions of javac or ecj make it difficult to continue to maintain the feature. "

С-стабильность.

>переписывать по 500 однотипных методов


не сраным жавистам с их гетсет об этом говорить лол.

и остальное такое же смешное.

а так, пусть жависты едят говно в своем треде. Нет, спасибо что нам тред перекатили, но теперь идите жрать свое говно.
231 2825849
>>25779

>не сраным жавистам с их гетсет об этом говорить лол.


Ты когда пишешь {get; set} на каждую переменную вспоминаешь злых хохораклов?
232 2825853
>>25849
не знаю о чем ты вообще {get; set} это указание компилятору "я ж не жавист засирать код пустыми методами геттеров и сеттеров, сгенерь эти методы за меня". Абсолютно нормальный синтаксис. Разве что бэкингфилд не сделали, как в том же котлине. Ну шарп не идеал, но же жавистом на него бочку катить.
233 2825867
>>25849
зато когда пишу required ... {get; init;} то думаю "эээх здорово же"
Реально полезно, хоть я и сторонник конструкторов.
234 2825892
>>25853
>>25867
Java давно ушла уже от бойлерплейта конструкторов и даже далеко вперёд этих гетинитсетов. @Data.
235 2825900
Два кобола. Что говножаба, что говношарп.
236 2825913
>>25892
ты определись плиз - жава ушла или просто кого то убогость и многословность жавы основательно зае... и был создан проект ломбок (которая суть СТОРОННЯЯ либа) для внедрения сахара?

ну а в шарпе 12 будут эти конструкторы (хотя конечно не факт что так же хорошо, как в котлине)
с другой стороны мне конструкторы такого вида никогда и не нравились если это не record. Семантика контракта и внутреннего устройства класса размазывается.
237 2826020
>>25913

>ты определись плиз - жава ушла или просто кого то убогость и многословность жавы основательно зае... и был создан проект ломбок (которая суть СТОРОННЯЯ либа) для внедрения сахара?


А какая разница? Я-то пишу с удобным сахаром, которого нигде больше нет, ни в одном языке программирования.
238 2826031
>>26020
разница есть
- может быть в любой момент потенциальная несовместимость
- ты можешь устроиться куда то работать, а там "никаких ломбоков ничего такого мы не знаем".
- кто вообще автор либы. за чей счет оно живо. мир жавы это такое. ждк тому пример - то платный, то бесплатный, суды всякие

>ни в одном языке программирования.


кулик, да ты хотя бы оглянись вокруг в своем болоте. даже в зоне твоей жвм есть хотя бы котлин и на его возможности посмотри (а это не только сахар).
а потом на свою жаву, которая на той же жвм и куда асинк нормальный никогда не завозили, сахар через сторонние костыли делается, ну может там чего то обещали подобие корутин сделать - не слежу.
239 2826038
>>26031

>- может быть в любой момент потенциальная несовместимость


Так-то и джава может быть сама с собой несовместима в процессе разработки. Но есть такая возможность, как "пофиксить баг", если ты не знал.

>- ты можешь устроиться куда то работать, а там "никаких ломбоков ничего такого мы не знаем".


Добавляю в dependencies ломбок и довольно урчу. Это же джава.

>- кто вообще автор либы. за чей счет оно живо. мир жавы это такое. ждк тому пример - то платный, то бесплатный, суды всякие


На гитхабе ломбок есть. Лицензия какая-то кастомная, но, судя по всему, дженерик MIT/BSD.

>даже в зоне твоей жвм есть хотя бы котлин и на его возможности посмотри (а это не только сахар).


В петухлине всего, что есть в лобмоке нет.
240 2826041
>>26038

> Добавляю в dependencies ломбок и довольно урчу.


Не урчишь... или урчишь. Это как дибы скажут
241 2826043
>>26038

>Но есть такая возможность, как "пофиксить баг", если ты не знал.


а эта возможность она мгновенная по щелчку пальцев? или нужно issue писать, потом ждать фикса, потом ждать пока выкатят этот фикс?
Может для жавистов время искажается, а то я не знаю. В моем мире течение времени одинаково во все времена

>довольно урчу. Это же джава.


только недолго урчишь. ибо тебя просто попрут с работы за то что ты используешь левую хрень в общей кодовой базе.

>На гитхабе ломбок есть. Лицензия какая-то кастомная


лицензия дело такое - взяла и сменилась. обычное дело.

>В петухлине всего, что есть в лобмоке нет.


ясно. упоротый жавист. пошли аргументы "ви все вретттте"
нечего после этого с тобой обсуждать.
242 2826094
>>26043

>только недолго урчишь. ибо тебя просто попрут с работы за то что ты используешь левую хрень в общей кодовой базе.


>лицензия дело такое - взяла и сменилась. обычное дело.


>и вообще завтра на тебя упадёт метеорит, тупой джавист. что скажешь на это? оправдывайся

243 2826100
>>26043

>ясно. упоротый жавист. пошли аргументы "ви все вретттте"


Хочешь сказать, что в петухлине есть упомянутые мной аннотации или их аналоги?
244 2826102
>>26043

>а эта возможность она мгновенная по щелчку пальцев? или нужно issue писать, потом ждать фикса, потом ждать пока выкатят этот фикс?


Всё ровно так же работает и с самой джавой, и с вашим петушарпом. Это вообще не аргумент, маня. Почти все проблемы фиксятся ещё до выпуска кода в паблик.
245 2826109
>>26094
ты реально думаешь что сторонняя либа, пусть даже она удобная и поддерживается основными IDE то же самое что стандартная?
То, что она генерит, не является валидным кодом жавы и поэтому нужны плагины в IDE
Так что она может как быть так и не быть

Насчет лицензии. Oracle JDK отличный пример что даже невероятная известность и стандартность может просто измениться в один момент.

Насчет метеорита - тоже может быть, но мы говорим о реальных вещах. Можешь доказать что ломбок используется на 100% кодовой базы в мире? нет? тогда и говорить не о чем.

>>26100

>петухлине есть упомянутые мной аннотации


они там не нужны. язык все это умеет искаропки и даже больше.

>>26102

>Всё ровно так же работает и с самой джавой, и с вашим петушарпом


нет не так же. когда фича - часть компилятора, то она не зависит ни от IDE, ни от сторонних плагинов и их междусобойной совместимостью. Возможности компилятора находятся в жесткой согласованности с самим собой, а не разрабатываются и не обновляются отдельно.

Я не работаю с жавой и ломбок, но мороки с совместимостью плагинов на андроид студии мне хватило выше крыши. В жава мире многое завязано на кодоген и я наелся дерьма в связке плагин + hilt + dagger до отвала.
246 2826130
Как в конструкторе класса передать данные в конструктор базового класса, если в этом конструкторе больше параметров, чем в наследнике?

public class BaseClass
{
. . . public BaseClass (int a, string b)
. . . { }
}

public class MainClass : BaseClass
{
. . . public MainClass (int a) : base(a, b)
. . . {
. . . . . string b = "Hello, world!";
. . . }
}
247 2826131
>>26109

>ты реально думаешь что сторонняя либа, пусть даже она удобная и поддерживается основными IDE то же самое что стандартная?


Пока ты кукарекаешь про потенциальные проблемы, я просто пользуюсь и ещё ни разу не испытывал никаких проблем с ломбоком, как и пресловутого скрытого поведения/подводных камней, которыми вы так любите кичиться. Может, не то же самое, но этого достаточно.

>Насчет лицензии. Oracle JDK отличный пример что даже невероятная известность и стандартность может просто измениться в один момент.


Тогда OpenJDK и получила развитие. Невалидный пример, да и не аргумент вообще, если всё так работает, что мешает петушарпу лицензию сменить? Не высасывай из пальца, серешь в штаны.

>Можешь доказать что ломбок используется на 100% кодовой базы в мире? нет? тогда и говорить не о чем.


А этого и не нужно. Пусть им пользуются 90%, 40% или один я, что с того? У меня есть эти фичи, а петушарподебилы отмакакивают {get; set} и ещё смеют этим выёбываться.

>они там не нужны. язык все это умеет искаропки и даже больше.


Покажи мне то, что заменяет @Delegate, @With и @RequiredArgsConstructor в петухлине. Да и не о нём идёт речь, я так-то в петушарпотред зашёл. Петухлин, как паразит на джаве, автоматом имеет все её фичи (кроме, конечно, всей той красоты из новый версий, так как петухлин сидит на 8 jvm).
image.png17 Кб, 634x299
248 2826148
>>26130
Точно знаю что есть такие способы
249 2826149
>>26131
Не зашкварно лобком пользоваться?
250 2826160
>>26131

>я просто пользуюсь


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

>Тогда OpenJDK и получила развитие.Невалидный пример, да и не аргумент вообще


просто пример того как что то может измениться легко. и если даже что то очень известное, что говорить о левой библиотеке )

>что мешает петушарпу лицензию сменить?


ничего не мешает. все могут менять. и все меняли. правда вот в разные стороны )

>или один я, что с того?


а то что с того, что гет сет шарписты могут писать везде и всегда. А ты со своим ломбоком можешь писать у себя дома, ну молодец че.

>петушарподебилы отмакакивают {get; set}


абсолютно нормальный синтаксис. жавапетух просто не знает к чему придраться.

>Покажи мне то, что заменяет


не хочу читать про ломбок мне влом. и нах не нужно. поэтому по диагонали как я понимаю что это за фичи

>@Delegate,


это то что еще не является стабле в ломбок? ну такое себе. Типа автогенерация декораторов? ну в котлине она есть
class Derived(b: Base) : Base by b

>@With


это как шарповское with для records то есть позволяет заменить часть свойств и компилятор сгенерит билдер? в котлине у дата классов есть метод copy - "Use the .copy() function to copy an object, allowing you to alter some of its properties while keeping the rest unchanged."

>@RequiredArgsConstructor


не понял что это точно делает, но в котлине искаропки дефолтные кострукторы они работают как конструкторы у record в шарпе только шире ибо объявляют не только сигнатуру конструктора, а и кем станет это - свойством или полем. То есть там автосоздание и присвоение свойств и полей через конструктор (то что только частично будет в шарпе 12 как доп функционал) является прямо таки основным. И поскольку конструктор только присваивает, то есть еще блок init{} для логики

>Петухлин, как паразит на джаве


какие фичи лол. жава НЕ ИМЕЕТ этих фич. Эти фичи имеет сторонняя либа через кодоген и на выходе не валидная жава (потому и нужен плагин чтобы с этим работать)
и кто ГОВНО жаве виноват что она развивается как черепаха. Будь жава хороша, то ломбоки бы и не появились ибо не нужно было бы

а так да. тред про шарп то. хватит обсирать жаву. жависты и так знают что она говно и нужны костыли позорные типа ломбоков ибо без них жопа.
250 2826160
>>26131

>я просто пользуюсь


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

>Тогда OpenJDK и получила развитие.Невалидный пример, да и не аргумент вообще


просто пример того как что то может измениться легко. и если даже что то очень известное, что говорить о левой библиотеке )

>что мешает петушарпу лицензию сменить?


ничего не мешает. все могут менять. и все меняли. правда вот в разные стороны )

>или один я, что с того?


а то что с того, что гет сет шарписты могут писать везде и всегда. А ты со своим ломбоком можешь писать у себя дома, ну молодец че.

>петушарподебилы отмакакивают {get; set}


абсолютно нормальный синтаксис. жавапетух просто не знает к чему придраться.

>Покажи мне то, что заменяет


не хочу читать про ломбок мне влом. и нах не нужно. поэтому по диагонали как я понимаю что это за фичи

>@Delegate,


это то что еще не является стабле в ломбок? ну такое себе. Типа автогенерация декораторов? ну в котлине она есть
class Derived(b: Base) : Base by b

>@With


это как шарповское with для records то есть позволяет заменить часть свойств и компилятор сгенерит билдер? в котлине у дата классов есть метод copy - "Use the .copy() function to copy an object, allowing you to alter some of its properties while keeping the rest unchanged."

>@RequiredArgsConstructor


не понял что это точно делает, но в котлине искаропки дефолтные кострукторы они работают как конструкторы у record в шарпе только шире ибо объявляют не только сигнатуру конструктора, а и кем станет это - свойством или полем. То есть там автосоздание и присвоение свойств и полей через конструктор (то что только частично будет в шарпе 12 как доп функционал) является прямо таки основным. И поскольку конструктор только присваивает, то есть еще блок init{} для логики

>Петухлин, как паразит на джаве


какие фичи лол. жава НЕ ИМЕЕТ этих фич. Эти фичи имеет сторонняя либа через кодоген и на выходе не валидная жава (потому и нужен плагин чтобы с этим работать)
и кто ГОВНО жаве виноват что она развивается как черепаха. Будь жава хороша, то ломбоки бы и не появились ибо не нужно было бы

а так да. тред про шарп то. хватит обсирать жаву. жависты и так знают что она говно и нужны костыли позорные типа ломбоков ибо без них жопа.
251 2826175
>>26160

>абсолютно нормальный синтаксис. жавапетух просто не знает к чему придраться.


>ну и говно тоже в принципе вкусное. да, петухам мух не понять!

252 2826176
>>26149
Зашкварно быть дегенератом, который читать не умеет. Ломбок, а не лобок.
253 2826199
>>26160

>просто пример того как что то может измениться легко. и если даже что то очень известное, что говорить о левой библиотеке )


>ничего не мешает. все могут менять. и все меняли. правда вот в разные стороны )


Тебе обязательно на каждый тезис что-то высрать своё, даже если высрана будет хуйня, да?

>рррррря старонняя либа!


Ну так у вас и такого нет. Сидите гетсетыиниты дрочите свои на каждую переменную, коупя тем, что это вам дали с лопатыиз коробки, когда мы просто одну аннотацию ставим на весь класс.
254 2826298
>>26148
Понятно, значит способа через конструктор нет.
255 2826299
>>26298
Ограничение исходит из порядка вызовов .ctor так что имеем что имеем
256 2826358
>>26199
просто правда есть правда. Сколько орали о злом мелкософте и об хорошем оракле. а потом весна показала кто где срал.

>Сидите гетсетыиниты дрочите свои на каждую переменную


data классы в котлине и record в шарпе есть искаропки
это то же самое что твое тупое @Data

а вообще кодогеном можно везде упарываться, но блин восхвалять стороннюю либу которая СУТЬ КОСТЫЛИ, да еще и генерит она не жава код О_О....может только жавасранька.
2023-09-0213-12-45.png18 Кб, 832x150
257 2826719
Какой смысл в xml-документации указывать комментарий к исключению, если он нигде не виден?
/// <exception cref="ArgumentNullException"> Эта залупа нигде не видна </exception>

Все что я получу при наведении курсора на метод — это тип исключения, без каких либо комментариев и уточнений.
258 2826724
>>26719
Потому что xml-документация используется не только для того, чтобы тебе подсказки в IDE выдавать но и для других вещей, вроде кодогенерации или спецификаций api.
259 2827130
>>26358
Шарподебил продолжает плакаться на костыли, пока я пользуюсь ломбоком и радуюсь сахарку. А ведь он заревел только от одного @Data, который по сути антипаттерн... Вкину пожалуй @ToString. Как там с этим дела в петушарпе обстоят?
260 2827359
>>27130
ты какой то больной. ты пришел сюда не с жавой, а левым инструментарием
у шарпа тоже такой есть - например, fody. Он за меня генерит INPC и многое другое. Но я же не называю его "это заслуга шарпа". Наоборот, это недостаток шарпа восполняемый костылями.

А ты костыль, который родился из за невероятной убогости жавы, записываешь в достоинства жавы.
Катись в свой жава тред с этим.
261 2827417
>>27359
Прекрасно. А с @ToString дела как обстоят?
262 2827418
>>27359

>ррррря ты ниможишь просто так взять и пользоваться сахаром патамушто не искаропки!!!!! всмысли ты пользуешься??!?!?!?!?!?! низзззяя яскозал!!!!!!!!!!!!


Как же он коупит, пиздец просто.
263 2827420
>>26719
Никакой, это же петушарп.
264 2827422
>>27417
вот так
https://github.com/Fody/ToString

>>27418
слушай дебич. Я тебе последний раз говорю (и больше отвечать не буду) - ты пришел не с возможностями языка, а "смотрите у нас можно юзать вот такие левые костыли", которые пришел ты устраиваться на работу, а тебе "какой нах ломбок иди нах отсюда"
И твое "а как же тустринг, а гетсет" ты засовываешь в свою вертлявую жопу и идешь нах

за сим все. дебил, который НЕ ОТЛИЧАЕТ язык от ИНСТРУМЕНТАРИЯ пусть идет нах

на шарпе тоже есть 100500 способов кодогенерации в компиль-тайм. Помимо рантаймовых (это то с чему жабы жопа) есть и сорс генераторы, и fody и просто шаблоны. И конечно ты можешь захерачить плагин к студии что будет генерить все что тебе лично угодно.
Другое дело что это все равно останется просто тулзой и ты можешь использовать его где то, но это не значит что ты сможешь использовать это везде

но конечно если ты кодишь один дома калькуляторы - ну поздравляю тебя
265 2827427
>>27422
Ебать дебилоиду правда печёт. На полном серьёзе сравнивает фоди с 73 звёздами на гитхабе с ломбоком, который де-факто стандарт, с 12к звёздами. И ещё ебло умудряется перефорсить "какой нах фоди иди нах отсюда" на "какой нах ломбок иди нах отсюда". Кстати, как там с поддержкой фоди в среде разработки?

>за сим все. дебил, который НЕ ОТЛИЧАЕТ язык от ИНСТРУМЕНТАРИЯ пусть идет нах


А нахуя мне различать это? Я ж не шарпоблядь с нищим по функционалу языком и экосистемой, чтобы мне приходилось как-то коупить убогость способов разработки. Я просто пишу и всё, а шарпобляди выдумывают оправдания аля "ниискаропки!!!", "антипаттерн!!!!" и прочее, прочее.
266 2827428
>>27427
Какой же ты косолобый
https://github.com/Fody/Fody
4к звезд, 44 миллиона скачиваний в nuget.

Только по факту и фоди и лобок это левые либы, которые не имеют отношения к функциональности языка.
267 2827429
>>27428
Самому-то не смешно со своих верчений жопой? Мы про @ToString говорили. На нём 73 звёзды. Так как там дела с ним обстоят?
268 2827430
После того, как поплачешь, расскажи про поддержку фоди в среде разработки.
269 2827432
>>27429
Клоун, все это часть одной либы
270 2827434
>>27429
ну так это не жава же
у нормальных людей 90% генерации ToString() покрывают record (data class если котлин) где все генерится. Для остальных случаев (не дто классы) лучше доверить сгенерить самой IDE и подправить ручками.
Поэтому тустринг генератор нужен мало кому ибо незачем нахер.

не думал почему нет ломбока для котлин?
а в жава он типа "де факто стандарт" ибо без него просто никуда (жава хуле). Правда реальность немного другая - не везде он используется, но кого это волнует если в треде упоротый жавист.
271 2827435
>>27432
А зачем тогда отдельный репозиторий? Это такой обманный манёвр по взятию за щеку?
272 2827437
>>27434

>учше доверить сгенерить самой IDE и подправить ручками.


Ясн, шарпомух опять в своём репертуаре. А просто размазать говно по экрану не вариант? Зачем всё усложнять и размазывать говно по классам?
273 2827438
>>27434

>ибо без него просто никуда (жава хуле)


Ну не проецируй, маня... Единственное, что в петушарпе есть из аналогов адекватных функций ломбока это убогий {get; set} на каждую переменную. Всё остальное, чем вы гордитесь, уже давно есть в самой джаве.

Обратного не скажешь про петушарп, который ни в самом языке не имеет нихуя, ни в библиотеках.
274 2827439
Нииееет, ты ни панимаеш, эта ни фоди нииспользуимая хуита каторую сделали из-за убогасти петушарпа, эта ни миня визде шлют нахуй с маим фоди с 73 звёздами, это фсё наобарот, понял да!
275 2827503
Хватит кормить джавадебила, просто игнорируйте. Не расстраивайте меня, шарпочане.
image83 Кб, 699x900
276 2827510
>>27503

>Хватит кормить джавадебила, просто игнорируйте. Не расстраивайте меня, шарпочане.

277 2827900
>>27503
Ты абсолютно прав. Жава дебич скатился к откровенному говну.
Тустринги, гетсеты лол. Радость у жавадебича от того что часть говна в жаве правит сторонняя либа (которую кстати ценят не все ибо не все фанаты неявной генерации хер пойми чего, а предпочитают чтобы IDE генерила явно)
Отсутствие типов, структур, LINQ expressions, асинк/авайт и т.д. - все это не парит жавадебича который высирает тонны говнокода там, где в любой другом языке (не только шарп) "давно продолжается праздник, а жавадебич в вилабаджо все еще моет посуду" (с)
278 2827952
>>27900
У них какой то заменитель линку есть, вроде стримы или как то так.
279 2827954
>>27952
не путай LINQ и LINQ Expressions - абсолютно разные вещи.

Замена LINQ Expressions у них это любительские поделки, которые пытаются анализировать байткод и что то там пытаться с этим делать. И то под котлин )
280 2827955
Есть Uri на страницу в приложении, формата
"pack://application:,,,/MyApplication;component/Styles/ListViewStyle.xaml"

Можно это каким либо образом сохранить в файл?
Попытка сохранить ResourceDictionary через XamlWriter не увенчалась успехом — куча информации попросту теряется.
281 2827984
>>27955
Ну так после компиляции это уже baml
282 2828482
>>27954
Это ты позавчера sql запросы к List<String> писать хотел?
283 2828485
>>27900

>Отсутствие типов


Не знал, что Java это язык с динамической типизацией...
284 2829263
>>28482
нет. Да и даже если бы да, то причем тут вообще это. Linq Expressions для другого

>>28485
в жава 5 ради совместимости с жава 4 приняли решение внедрить фичу type erasure, то есть из байт кода стирается информация о типах дженериках.
Если у тебя тип List<? extends InputStream>, то хрен ты в рантайме узнаешь что там вместо ? и вынужден с этим жить.
285 2829354
>>29263

>хрен ты в рантайме узнаешь


И нинужно.
286 2829356
>>29263

>то хрен ты в рантайме узнаешь что там вместо ? и вынужден с этим жить.


А зачем это знать?
Ты знаешь, какой интерфейс реализует тип, зачем тебе знать больше?
287 2829365
>>27900

>Отсутствие структур


Джависты говорят, что там где шарпоскот вынужден руками ковырять свои структуры в погоне за оптимизациями, джавагоспода просто пишут бизнес-логику, а JVM сама всё оптимизирует, где нужно. И в принципе и правда если смотреть различные сравнения, нету у шарпа какого-то значимого преимущества по перформансу.
288 2829366
>>29356

>Ты знаешь, какой интерфейс реализует тип, зачем тебе знать больше?


Разработчики многочисленных DI, ORM, event аггрегаторов и вообще всего что связано с кодогенерацией, сидят такие и думают "а че так можно было?"

>>29365

>JVM сама всё оптимизирует, где нужно


ага. видели мы как она оптимизирует. путем пожирания памяти. А тюнить jvm вообще отдельное искусство
image271 Кб, 623x926
289 2829382
>>29366

>DI, ORM


В Java всё это появилось раньше, чем в шарпе, и отлично работает всё.

>кодогенерацией


Параша уровня define-макросов в С.
Этого следует избегать.

>путем пожирания памяти


Память стоит копейки.
290 2829387
>>29382
хотел ответить, но увидев...

>Память стоит копейки.


понял что это упоротый жава дебич и потому пусть валит в свой тред, а не мешает нормальным людям писать на нормальном языке.
291 2829400
А как указать Uri путь на компонент зип-архива?
Пытался так
var listView = new Uri("file:///C:/Test.zip;component/Resources/Styles/ListViewStyle.xaml");
Но Uri не хочет видеть ";component".

Если я возьму listView.Segments, то получу разбитие по косым чертам "/", в итоге один из сегментов будет выглядеть так "Test.zip;component/"

Я конечно могу вручную разбить строку, но думал может есть какие-то решения из коробки.
Или может надо как-то иначе указать Uri до файла внутри архива.
Если я укажу так
"file:///C:/Test.zip/Resources/Styles/ListViewStyle.xaml"
то боюсь я хрен достану файл.
292 2829428
>>29400
а должен видеть зип? файлы в зипе не то же самое что ресурсы
293 2829437
>>29365
Жабоебы много чего нелестного про фичи шарпа говорят, а сами втихоря свой пиструник на Project Valhalla наяривают, в рамках которого эти "ненужные" фичи (value-типы, полноценные дженерики и т.д.) в жабу добавить пытаются.
294 2829440
>>29382
Как по мне, уж лучше кодогенерация, чем инструменты, которые на лету байткод генерируют, как это в жаба-мире принято. Сильно меньше магии выходит. Открыл сгенерированные сорцы и тебе все становится понятно. Да и шансов, что у тебя после обновления либ что-то в рантайме отъебнет сильно меньше, так как криво сгенерированный код тупо не скомплируется.
295 2829445
>>29382

> В Java всё это появилось раньше, чем в шарпе, и отлично работает всё.


Не в жабе а сама жаба. Достоинство это или недостаток сам решай.
Да и в современном мире я бы вообще считал что фреймворка не существовало, а жизнь зародилась с второй корки
296 2829446
>>29440
ну не совсем так. Это в шарпе вовсю рантайм генерация ибо типы доступны.
И только вот вот приехала кодогенераци сорцов.

Я не знаю как в жаве, но в андроид там кодогенерация вовсю используется и давно.

ломбок же этот генерит не код. ну так и в шарпе fody переписывает байт код.
поэтому переписывание может переписать исходник, а сорс генерация она только дописывает в отдельные файлы.
297 2829447
Лучше бы TreeView обсуждали.
298 2829504
>>29440
ну вот я попробовал этот новомодный коммюнити тулкит от мелких
и их генерацию свойств вида
[ObservableProperty] private bool _foo;

и как же он задолбал при навигации через контрол+клик отправлять в сгенеренный файл...который ПУСТОЙ

БЕСИТ.
299 2829523
>>29437
Впервые слышу, чтобы действительно кто-то что-то в жаба мире говорил про шарп негативно. Разработчики библиотек говорят, что Шарп был спроектирован с учётом исправлений некоторых ошибок жабы.
И функционал той же вальгаллы есть в шарпе. Но в жабе это сложно реализовать из-за дроча на обратную совместимость.
И этот аргумент работает. Многие компании и сидят на жабе из-за пиара обратной совместимости. И сломали ее только один раз в девятке этими вашими модулями.
300 2829534
>>29428

>а должен видеть зип?


Он должен видеть точку с запятой в качестве подразделителя (пикрил 1), а дальше компонент с локальным путем. У меня же все воспринимается как один длинный путь.

>файлы в зипе не то же самое что ресурсы


А разве вот это
"pack://application:,,,/Apperance.Test;component/Resources/Styles/ListViewStyle.xaml"
не ссылается на условный контейнер? По карайней мере так пишут в статьях (пикрил 2).
Глядя на подобную структуру, у меня сложилось впечатление, что Uri умеет видеть путь к объекту и отдельно путь к компоненту этого объекта.

Я хочу себе сделать внешний подключаемый ресурс. Выбрал зип-архив. Это можно считать контейнером?
Или есть другие способы?
301 2829559
>>29447
TreeView — слишком серьезная тема для такого клоунского треда.
302 2829573
>>29534
Поставил символ "#" вместо ";" согласно пикрилейтед и удалось извлечь фрагмент.

Теперь AbsolutePath выдает:
"C:/Test/Test.zip"
а Fragment:
"#component/Resources/Styles/ListViewStyle.xaml"

Короче, чтобы получить желаемое, мой Uri должен выглядеть так
"file:///C:/Test.zip#Resources/Styles/ListViewStyle.xaml"

Но структура не выглядит как тот же "pack://"
Мне проще самому разбивать строку по ";component/", чем извращать путь таким образом, чтобы от Uri получить тоже самое.

Непонятно, почему ";" не фурычит. Вроде тоже разделитель.
Хотя даже если бы и работала, то я бы получил это
"component/Resources/Styles/ListViewStyle.xaml"
И мне все равно пришлось бы чистить путь от "component/".
2023-09-0509-21-49.png52 Кб, 832x180
303 2829574
>>29573
Пикрил отвалился
304 2829603
>>29573

>Хотя даже если бы и работала, то я бы получил это


>"component/Resources/Styles/ListViewStyle.xaml"


>И мне все равно пришлось бы чистить путь от "component/".



Тут я затупил. "component" это папка внутри пакета, я ее тоже себе сделаю.
Остается проблема, чому не видится точка с запятой.
305 2829883
Напомните, как в божественном C# автоматически сделать метод toString() без засирания класса сгенерированным кодом?
306 2829901
>>29883
Уходи.
307 2829975
>>29883
public Record(string P1);

Чё сказать то хотел?
308 2829976
Моё ебало, когда помойный с# работает на помойной CLR от говнософта с 0 других вендоров, представили? Этот раб микрософта небось сейчас от старфилда балдеет, охуенная игруля от его любимой компании - говна не делают так сказать.
309 2829977
>>29975
Похуй, думаю все поняли куда record вставить
310 2830017
>>29883
Как только ты объяснишь нахуя бы это нужно делать было?
312 2830058
>>30056
Рано или поздно каждый из нас...
313 2830119
>>30056
Съеби.
314 2830123
>>29975
Нееет, ты покажи, как сделать тустринг для обычного, мутабельного класса.
315 2830179
>>30119
Да уж придется. Развели, блять, цирк.
316 2830192
>>30123

>Напомните, как в божественном C# автоматически сделать метод toString() без засирания класса сгенерированным кодом?


Ничего не понял. Ты хочешь избавиться от чего-то автоматически сгенерированнго чем-то автоматически сгенерированным? Зачем?

Если тебя надо собственный ту стринг, то пишешь оверрайд ту стринг и внутри любую логику.
sage 317 2830224
>>30192
Он хочет затраллировать шарпистов, чтобы те скатились в его любимую жабу. Видать, конкуренция слишком низкая.
318 2830333
>>30123
Дак рекорд это есть класс, а рекорд стракт это структура (хотя можешь не думать, у вас их всё равно нет)
Так и не понял что ты сказать хотел?
319 2830362
>>30224
Ну по опыту знаю, что нет абсолютной годноты, а гнаться за мелочными фишками — тупо.

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

Всякие обсолеты и вызовы эксепшенов — говно какое-то. Не по красоте.
Этот вариант не фунциклирует
[System.ComponentModel.EditorBrowsable(EditorBrowsableState.Never)]
public override void DoSomething()
{ }
320 2830446
>>30224
что невозможно ибо существует котлин.

>>30192
просто у них в жаве в силу БЕЗМЕРНОЙ УБОГОСТИ жавы когда то начали проект ломбок. Что то типа fody в шарпе. И поскольку жава такая НЕРЕАЛЬНО УБОГАЯ не один десяток лет, то за это время НЕОБХОДИМОСТЬ ДОПОЛНИТЕЛЬНЫХ костылей таки признали даже САМЫЕ УПОРОТЫЕ ГОВНОЕДЫ жависты и убедили разрабов IDE что нужно не просто генерить байткод (или не пойми что, но не код жава), а чтобы IDE могла это учитывать и поэтому появилась поддержка в IDE.

шарп таким путем не шел, ведь авторы шарпа не стеснялись на фичи (где сразу был хотя бы гет/сет лоооооооол).
Вот как щас source generator-ы, но они генерят именно код и только новый код. А аналогия это если бы fody генерил не "потом там в черном ящике", а IDE сразу давал подсказки будто оно уже нагенерило.

Так что если брать кодогенерацию, то тут да - у говноедов преимущество в плане поддержки этого в IDE.
Ну это для тех, кому это реально важно. Например мне хз зачем генерить за меня ToString в мутабельном классе, если это не data/record класс, то есть класс сложный и засирать ToString абы чем мне как бы не нужно.

Больше нужда в переопределения кастомного Equal и GetHashCode, но IDE может их генерить.
Да и в жаве не все поклонники неявной генерации и предпочитают генерить с помощью IDE

И да, мы всего лишь говорим про реализации сахара - сам язык дает или костыли. Как бы проблема говножавы не только в отсутствии сахара (хотя это показательно, что до сих пор не сделали гет/сет, а "вот и пусть пердолятся в ломбок лол, говноеды ха ха ха, так и надо" - небось думают авторы жавы. Ибо хз почему такую ВОСТРЕБОВАННУЮ фичу не впилить наконец в сам язык на уровне компилятора.
Там годами впихивают базовые фичи. И сахарный лобмок просто позволяет меньше нажимать кнопки на клаве реализуя некоторый сахар. Но фундаментальные проблемы языка это не решает - там где на другом языке ты "написал и отмечаешь", в жаве же думаешь "как блин это тут вообще реализовать то по нормальному"
321 2831471
>>30192
Я хочу, чтобы кодогенератор надристал не в сорсы, а в байткод.
322 2831472
>>30446
Неплохо рвонькнул! А toString-то как сделать?
323 2831476
>>31471
fody надристает.

>>31472
я показал жава дебичу ссыль. жавадебич сдедал вид что он люто тупой - ну так и нах его.
324 2831483
>>31476
Показал хуйню с 70 звёздами без поддержки в IDE.
325 2831487
Шарписты, есть среди вас те, кто занимается графонием? Не просто юнити дрочить, а на более низком уровне.
326 2831503
>>31483
а какая должна быть поддержка в IDE для метода ToString который сам генерится?
тело метода? так тебе и IDE его легко сгенерит.
а если оно генерит само где то там, то чего ты еще ожидаешь?
ты таблетки пил сегодня?
327 2831504
>>31487
Что конкретно интересует?
328 2831509
>>31471
record
Иди нахуй
sage 329 2831519
>>31504
Интересует, как сгенерировать ToString.
330 2831520
>>31509
На самом деле я вообще не понимаю зачем переопределять тустринг чем то дефолтным, во всех моих кейсах если переопределяю то там какой то кастомный набор и даже из этих случаев чаще не тустринг а вешаю дебаггердисплей атрибут
331 2831527
>>31519
как и везде
0 генерит компилятор
1 может сгенерить идешка
2 может сгенерировать тулза в батйкоде сама

чего тебе еще надо, собака (с) царь
332 2831610
>>31504
Мб тут есть человек которому может быть интересно написать абстракцию над вулканом, директом и наверное металлом на шарпе или он уже занимался чем-то подобным и может поделиться опытом
333 2831626
>>29356
Ну, например, в C# можно указать, что generic параметр T имеет пустой конструктор, а значит внутри generic метода можно сделать new T(). В Java без ебли с TypeRef или Class такого не сделаешь.
334 2831627
>>26175

>вскукарекнул петух

335 2831629
>>31626
Вот только new T() это рефлексия.
336 2831633
>>08821
- Значимые типы данных
- Материализованные дженерики
- ref и out
- Нет говна в виде checked exceptions
- LINQ и Expressions
- Нет засилья магических аннотаций с кодогенерацией напрямую в IL-код/байткод
- Кортежи из коробки
- Нормальные лямбды и делагаты вместо убогих Function
- Pattern matching, getters-setters и другой вкусный синтаксический сахар "изкаробки"

И многое другое. Продолжать можно до бесконечности.
337 2831635
>>31629
С чего ты решил, что это рефлексия? Я не достаю мета-информацию о типе из сборки или ещё чего, я просто заранее знаю, что это тип T и у него есть new. Компилятор это развернёт напрямую в new MyType(), благодаря материализованным дженерикам.
338 2831639
>>31635
Нет. Он развернет в Activator.CreateInstance()
339 2831640
>>31639
пруфы?
Вернее где он это должен сделать?
340 2831642
>>31639
Хотя ладно, я сам чекнул байткод
341 2831643
Нужно найти итем в коллекции, аля TryGet, чтобы через return возвращалась успешность поиска <bool>, в out результат найденного итема <T>. Но проблема в том, что в случае отсутсвия итема мне нужно что-то вернуть, а вернуть я могу только null. В итоге, на выходе, несмотря на булевый результат, мне приходится снова проверять возвращаемый объект на null.

В общем, получается какая-то бесполезная конструкция. Проще сразу возвращать через return итем.

Есть какие-то способы решения проблемы? Типа как string.Empty
342 2831646
>>31643

>мне приходится снова проверять возвращаемый объект на null.


не веришь что трагеты вернут нул? ну значит просто сделай елсе

if(dic.Try....., out var item)
return item;
else
return null;
343 2831647
>>31639
Да, ошибся здесь.
344 2831649
>>31643
Enumerable.Empty
345 2831650
>>31643
Как бы try методы возвращают default а что у тебя там ссылочный или вещественный тип не важно.
Ещё ты условным getordefault не сможешь определить есть ли у тебя значение null в том где ты ищешь месте или к примеру 0 в наборе интов
346 2831653
>>31643
Можешь сделать Optional<T> как в жабе или F# и его возвращать
347 2831654
>>31653
Optional<Nullable<int>>
348 2831655
>>31654
А зачем Nullable? Достаточно просто Optional<int>
349 2831657
>>31655
Это была попытка в шутку уровня fizzbuzz enterprise edition
350 2831659
>>31655
Кидай исключение. Будь мужиком
351 2831662
>>31649
У меня out <T> Какой Enumerable?

>Как бы try методы возвращают default


А default вернет null.

>>31654
>>31655
Какой Optional<int>? У меня out <T>

Вероятно вы не поняли мою проблему.
Короче, вызов моей функции должен выглядеть так:

if(TryGetByName(myCollection, "myItem", out MyClass resultItem))
{
. . . resultItem.Name = "new name"; //вот тут дикий ор студии, что объект nullable
}
352 2831664
>>31662
Посмотри исходник такого метода у словаря и стыбзи оттуда атрибут и повесь на параметр своего метода
353 2831666
>>31664
Словарь возвращает default и метод написан на старой версии не задающей вопросов.

В новой версии подобный подход вызывает предупреждения.
354 2831669
>>31666
Ну как хочешь
Мне то что
355 2831670
>>31666
Нихуя не понял, но если дохуя уверен в себе то ! тебе в руки
356 2831671
>>31666
а, там есть [MaybeNullWhen(false)]
357 2831672
>>31662
С Optional<T> можно вот так:

static Optional<T> TryGet<T>(IEnumerable<T> myCollection, Func<T, bool> cond)
{
return myCollection.Where(cond).Select(Optional.Some).FirstOrDefault(Optional.None<T>());
}
359 2831705
>>31678
Интересно, спасибо!
360 2831737
>>31640
>>31642
>>31647
Комедия в трёх актах.
361 2831738
>>31527

>2 может сгенерировать тулза в батйкоде сама


Не может.
362 2831739
>>31503
Шарпопетух не может себе представить, что можно не срать в класс телом бесполезного метода, лул.
363 2831740
>>31737
Умение признать ошибки явно не относится к плохим качествам
364 2831741
>>31740
Ну да. Шарпогной обычно этим не отличается, здесь ты своих собратьев превзошёл.
365 2831742
>>31738
может
не использую тустринг ибо нахер не нужно
но активно использую генерацию INPC и ConfigureAwait(false) по дефолту (ибо мелкие ну никак не хотят дать возможность задать это как нибудь для сборки)
366 2831743
>>31742

>ConfigureAwait(false)


Хрюкнул с того, как шарподегенераты придумывают себе проблемы и героически с ними борются.
367 2831744
>>31742

>может


>яскозал!

368 2831746
>>31743
сказал говноед из мира жавы, где принципиально нет async/await и нужно мудрить какие то конструкции для простых задач.

>придумывают себе проблемы и героически с ними борются.


ты о чем говноедушка. тут же то что ты так хвалишь - не я пишу код, а тулза за меня пишет. Ты или трусы надень или иди нах в свой тред.

>>31744
дебил что ле? хотя кого я спрашиваю.
да может. И для этого достаточно просто поставить пакет из нюгета и указать место где ему можно вклиниваться с переписыванием.
369 2831748
>>31742
Разве configureawait нужен не только для случаев когда нужно игнорить поведение кастомного контекста синхронизации? То есть кроме гуёвых аппок я не знаю таких случаев
370 2831750
>>31746

>ты о чем говноедушка. тут же то что ты так хвалишь - не я пишу код, а тулза за меня пишет. Ты или трусы надень или иди нах в свой тред.


Дегроду не хватило мозгов даже понять смысл поста.
371 2831751
>>31746

>да может.


>я скозал!!!!! нюгет. хуй.

372 2831752
>>31748
либописатель не должен предполагать будет или не будет контекст. Он может быть везде, а не только в гуи. То, что его нет в асп.нет - ну это просто частный случай.

Было дело я даже в консольном приложении делал кастомный контекст.

Хотя как видно по INPC я больше пишу десктопные приложения и постоянные configureawait бесят, а решения от мелких нет.

>>31750
>>31751
ты дебил? да, дебил. ты спросил, тебе ответили. Не согласен - опровергни. Не можешь - иди пожри говна.
373 2831756
Вообще у меня горит от того что не сделали типа
await / await!
или
await / await? раз уж дефолтный true

А сделали хрень, которая приводит к дедлокам блин.
И сколько лет тема на гитхабе по этому вопросу.
Fody конечно хорошо, но он не учитывает контекст, хотя отловить "доступ к контролу не из того потока" и пофиксить проще, чем дедлок.
374 2831772
>>31752
Ты нихуя не ответил, ты просто повторил "яскозал!!!!!" громче.
375 2831773
>>31756
-30 social credit. Впредь будьте осторожны в выражениях.
376 2832434
>>31772
слепой жавадебил с памятью как у рыбки может проследовать нахер.
377 2832940
Ребзя, доводилось ли кому ебаться с группировкой в DataGrid WPF? Забиндил DataGrid на CollectionView, отфильтровал, всё прекрасно: но вот группироваться эта залупа отказывается напрочь - я уже все гайды от индусов перерыл, и в XAML забивал, и в коде группу добавлял: или нихуя не показывает, или не группирует. Бочку сделал, хуйцов сосну на следующем митинге.
378 2832981
>>32940
Ты делаешь неправильно
делай правильно и всё заработает
2419635930.jpg13 Кб, 300x291
379 2833010
2023-09-0810-31-48.png12 Кб, 350x433
380 2833130
Хочу запихнуть свойство своего класса в определенную категорию, чтобы оно нормально отображалось в окне свойств студии (Properties).

Но тут возникает вопрос с локализацией. Допустим а англоязычной версии у большинства контролов есть категория свойств "Text", в русскоязычной оно отображается как "Текст".

Так вот, если я установлю для своего свойства категорию "Text", то в русскоязычной версии студии свойство не поместится в категорию "Текст", а будет создана новая категория.

Я должен указывать категорию на языке, на котором установлена текущая локализация студии, что выглядит как какой-то ебанутый бред. Может есть какой-то способ учитывать локализацию?
381 2833140
>>33130
Самый простой это сходить в сорсы и посмотреть как это сделали майки
382 2833144
>>33140
Как их посмотреть?
2023-09-0811-17-49.png15 Кб, 781x352
383 2833154
>>33140
Бля, букву проебал, вместо "Appearance" писал Apperance".
Да, распознает сперва дефолтный язык, а потом локализует.
sage 384 2833157
>>32434
Ясн, слитая хуйня опять слилась.
385 2833158
Чем объясняется феномен петушарпа, когда такой сблёв так рьяно защищается псинами, которым за гавканье даже не платят?
386 2833175
Тред, где можно было получить нехуйственный ответ превратился в сблев из чатика домохозяек, обсуждающих какой ЯП лучше.

Впрочем, это был нонсенс и нам просто попался шарящий анон, но теперь его нет и всё встало на свои места с цирком уродов и троллей-долбоебов.

Вряд ли вот эти хуеплеты чем-то толковым занимаются, раз решили поднять тему, никуда не ведущую.
>>33157
>>33158
387 2833180
>>32940
Что за группировка? Ты о чем? Речь идет об автоматическом распределении данных по столбцам?
388 2833207
>>33180
Есть ObservableCollection, из которой берется CollectionView и байндится ItemSource'ом к DataGrid'y. В гриде есть возможность задать группировку по какому-то параметру (по типу, например): DataGrid.GroupDescription или grid.AddGroupDescription (пишу по памяти, поэтому могу точное имя метода всрать, но суть понятна), соответственно, в гриде строки будут сгруппированы и добавлен хедер группы. Только нет, не будет, иди поебись.

Забавно, что в соседнем DataGridController'e (кастомный грид от васяна) все прекрасно группируется при одинаковых байндах. Я всё пытаюсь узнать, кто криворукий: я или Паджит, писавший стандартные библиотеки.
389 2833287
>>33207

>Я всё пытаюсь узнать, кто криворукий: я или Паджит


Там наверно работоспособность отделяет проставка одной галочки, как это бывает обычно в WPF, и особенно у майков.
390 2833289
WTF
391 2833738
>>32940
Ты дебил просто. Надо создавать в xaml collectionviewsource, в ресурсах, биндить его к IGrouped и в datagrid указать источник данных этот collectionviewsource
392 2833969
>>33738
Это всё тоже делалось, ты мне своим IGrouped тригернул, что в CollectionView есть параметр IsGrouped, который по дефолту false. Чел >>33287 очень даже может быть прав.
393 2834023
>>33738
вообще то это магическая штука. Можно забиндить датагрид прямо на коллекцию источника, а потом сбоку подвязать
_collectionView = CollectionViewSource.GetDefaultView(Items);
и никуда биндить на этот _collectionView не нужно
и это волшебным образом заработает.

Хз как работает правда, может правит исходный список, но работает. А вот если нужно 2 вьюхам подвязываться на один список - вот тогда и нужно создавать раздельные CollectionViewSource и биндиться уже на них
394 2834029
Почему в шарпе нет синтаксиса для подписки на событие только если ты ещё не подписан? Почему приходится городить всратые конструкции уровня
Event -= Handler;
Event += Handler;
?
395 2834033
>>34029
Потому что петушарп. И это даже не шутка. Фундаментальная проблема петушарпа, когда дегенераты пытаются запихнуть в язык то, что должно быть сделано сторонними бибиотеками. Разработчики петушарпа допускают ошибки/недоработки (что само по себе норма), но исправить их уже нельзя, потому что эта недоработка прибита гвоздями к языку.
396 2834034
Лул. Как же шарпобляди копротивляются за свои каловые гетсетиниты, рассказывая сказки про то, как они сокращают код, а когда открывают среду разработки, они видят вот это: >>33130
397 2834043
>>34029
Технически события в шарпе - не самое удачное решение. Оно очевидное!!!!, если нужно подписать метод и сахар к нему. Просто если у тебя состояние гонки, то такой подход не работает. Да и передать событие никуда нельзя ибо это сахар.

Но конкретно в твоем случае если ты не знаешь подписался или нет, то ты как то не так кодишь.

Лично я не использую события шарпа (то, что они искаропки не значит что нужно их использовать), а юзаю свои завязанные на лайфтаймы.

>>34033
нет. потому что ты долбоеб. мы это уже выяснили не раз.

>>34034
когда долбоеб жавист не знает, о чем он вообще говорит.
398 2834046
Почему у шарпистов такой ресентимент по отношению к джаве?
399 2834078
>>34043

>потому что ты долбоеб


Хрюкнул с уровня аргументации. Стул туши.
400 2834083
>>34078
ок. поясню твою дурь
1 сторонними библиотеками базовые вещи = кто в лес, кто по дрова, 100500 подходов.
2 даже в убогой говножаве не сделали "на эту тему вообще ничего .мудрите что хотите, нас не колышет", а есть вполне себе стандартизированный подход работы с этим путем всяких там Listener-ов (что те же события в c# (ибо паттерн наблюдатель прост как сатиновые трусы) ...и в любом другом языке), то есть твой аргумент про "пытаются запихнуть в язык, поэтому идиоты" заведомо идиотский. И даже если ты вдруг не жавист, то в любом языке есть что то на эту тему, ну кроме синклер бейсика может.
401 2834086
>>34083
1. Ну да. Просто говна на вентилятор кинуть захотелось, или расскажешь, чем плохо не жрать блины с лопаты?
2. И щас ты мне взял и показал ключевое слово event в божественной Java. Я уже достаю список твоих обсёров и ручку.
402 2834213
>>34034

>про то, как они сокращают код, а когда открывают среду разработки, они видят вот это


Ну во-первых это нужно не всегда, это я решил навести красоту.
Во-вторых вся эта косметика (в буквальном смысле), накинута от души, хотя достаточно написать и так
[Category("Appearance"), Description("Жаба сосет хуи.")]

Это нужно чтобы в студии красиво отображались свойства твоего класса в окошечке настроек.
403 2834299
Почему не придумали какой нибудь идентификатор, сообщающий, что свойство вызывает сторонний метод? Чтобы пользователь знал, что если захочет многократно использовать свойство, то лучше присвоить результат во временную переменную.

Я покопался во сорцах и там чуть ли не каждое второе свойство вызывает метод расчета. Я привык думать,что свойство безопасно и в большинстве случаев обращается к полю с готовыми результатами.
404 2834332
Можно ли делать OnPropertyChanged публичным? Если нет, то на что это может повлиять? Все, что может он осделать, это заставить обновить свойство.
405 2834338
>>34299
Потому что это нормально - вычислять значение при вызове. Да и сегодня свойство быстрое, а завтра переделали и ты не знаешь
А проблему тебе покажет профайлер

>>34332
Можно, почему ж нет.
406 2834350
>>34338
Т.е. это нормальная практика — присваивать свойство временной переменной, если в рамках одного метода она используется больше одного раза?
407 2834356
>>34350
Странные вопросы. Конечно да.
408 2834357
>>34350
Только в случаях, если вызов свойства реально сильно влияет на производительность. А иначе заниматься преждевременной оптимизацией не стоит.
409 2834383
>>34356

>Странные вопросы. Конечно да.


Ну вроде как плодить новые сущности тоже не хорошо — появляются сильные ссылки.

>Только в случаях, если вызов свойства реально сильно влияет на производительность. А иначе заниматься преждевременной оптимизацией не стоит.


А как это потом разгребать? Будет столько зависимостей, что уже не ясно кто и что творит.

Ну к примеру, возьмем графический интерфейс, там нормальная практика, что множество контролов (это могут быть итемы списка) биндится к одному и тому же свойству. Получается, что все они попусту вызывают метод, который выдает одно и то же значение.

Я не знаю, есть ли способы оптимизировать каскадные обновления, чтобы первый элемент обновил свойство, а все остальные получали готовое значение.
410 2834384
411 2834390
>>34383
Какие еще сущности
Как удобно, так и делай
412 2834598
>>34299
В структуры завезли ридонли методы и свойства.
Для классов такое сделать нормально скорее всего не возможно, потому что есть всякие кеши и внутренние счётчики, либо реаллокация буффера, что делает невозможным отличить поведенческую неизменяемость от чистой кодовой неизменяемости.

Но технически возможно сделать кастомный атрибут, что метод нечего не меняет, и добавить кастомную проверку, что такой метод вызывает только методы, которые помечены таким же атрибутом.
413 2835078
>>29883
Ну, можно вот так...
414 2835090
>>34213

>надо писать бойлерплейт


>но можно написать в одну строчку и будет не так уродливо!

415 2835093
>>35078
А можно без бойлерплейта, просто указав, что в классе нужно сгенерировать по полям toString()?
416 2835101
>>35090
Будто в жаве - не используют аннотации.
Вот не пизди не себе не людям только.
image.png75 Кб, 737x773
417 2835121
>>35093
Можно.

Вот, наследуешься от специального объекта - говоришь, получаешь генерацию ToString. Даже не нужно метод переопределять в теле класса.
418 2835143
>>35121
Метод с атрибутами, лично мне нравится больше, потому что я может быть хочу, чтобы пароль - не выводился в ToString или выводился звездочками. Атрибуты - дают такую возможность и это заебись.

Как жава это сделает - я лично представлю. Таким же "бойлерплейтом" с магическими аннотациями, которые в жаве используются повсеместно, но почему-то атрибуты в шарпе стали плохими, а в жаве аннотации - хорошие.
419 2835196
>>35143
вот жеж вам скучно

>Как жава это сделает - я лично представлю


в жаве по аннотации это сгенерится в байткоде при компиляции
в шарпе то же самое делает fody

разница лишь в том, что лобок этот старый тулз который очень необходим в жаве в силу ее выразительной убогости и поэтому и развился и даже поддержку IDE получил, а Fody больше платформа для того же самого, куда каждый пилит что хочет

Поддержка IDE для тустринга не нужна, так что особой разницы между лобком этим и фоди нет в данном случае.
Но вообще это мало кому нужно генерить этот тустринг ибо явное лучше неявного.
420 2835255
>>35196

>разница лишь в том, что лобок этот старый тулз который очень необходим в жаве в силу ее выразительной убогости и поэтому и развился и даже поддержку IDE получил, а Fody больше платформа для того же самого, куда каждый пилит что хочет


>ничестно ебёте!

421 2835256
Представляю, что творится со стулом у шарпочмохи. Уже неделю как его ежедневно обоссывают.
422 2835262
>>35256
Ничего не творится
Не тупи
Никакая кодогенерация сахара не исправит фундаментальные ограничения жавы.
Я с нее ушел на котлин и доволен как слон.
Если бы ты с котлином пришел, то у тебя была бы аргументация. Но с жавой ты вызываешь только сочувствие.
423 2835264
>>35262

>хнык

424 2835265
>>35264
Убогий, вали уже в свой тред
На этом всё
Жавист настолько дебил что бесполезно пояснять ему что он дебил
Не буду тратить на это время
И другим не советую
425 2835266
>>35265

>плак

426 2835727
>>35196

>вот жеж вам скучно


Ну, мне реально скучно. Аналитика на работе нет, менеджеры - пидорасы. Вместо них - бегай за клиентом выясняй, че ж он там хочет, веди переписку, созвоны и прочее. Я уже месяца 2 ни строчки боевого кода не писал. А я, мать его, ПРОГРАММИСТОМ РАБОТАТЬ УСТРАИВАЛСЯ. Аааааа. Плак-плак.
427 2835988
утянул с гитхаба солюшен, я точно знаю что он компилируется где-то там у человека на его машине, а у меня все засрано ошибками от проебанных зависимостей. как это вообще решают? я его не планирую у себя компилировать, есть ли способ хотя бы просто заткнуть студию на тему внешних зависимостей и посмотреть на код без красноты с сохранением ссылок внутри проекта?
428 2836064
>>35988
Ну дотнет рестор сделай
429 2836075
Шарпаны вопрос.
Хочу выложить апи проект на сервер в докер
У меня будет сам проект + постгря + монга
Ессно всё на линупсе и под линупсом
Вопросы:
1) Кестрел или Нгинх?
2) Можно нормальный гайд для дебилов по выкладке в докер под линуксом для кестрела/нгинха?
По поводу кестрела - я упираюсь в то, что кестрел не видит сертификаты какие-то. Я чет по гайдам создаю на локальной машине и через енв переменные передаю в докер ран, но неткор все равно серт не видит. А остальные гайды бля под винду где проще
По нгинху чет сложнее прям выглядит, я пока не разбирал, если будет что-то хорошее скиньте плиз
430 2836088
>>36075
У тебя кестрел будет всегда и нжинкс опционально.
Нжинкс ставят отдельным контейнером независимым от тех кто за ним стоит, в рамках кубов это ингресс
Capture.JPG4 Кб, 43x578
431 2836091
>>36064
там не нугет, а целая стопка каких-то ебенячих пиздоглазых длл которые к гитхабу, конечно же, не приложены. я просто хочу временно заткнуть пикрелейтед.
432 2836103
>>36075
Ты мне кажется вообще не разобрался в теме. Сборка асп кор контейнера это 2 операции: copy твоих бинарей в aspnet:X.0 и entrypoint на длл. Всё.
Под виндой асп кор ведёт себя идентично лини покуда ты не лезешь в богомерзкий иис
433 2836226
>>36103
Это я понял. И в докерфайле это все прописано. Но когда я делаю тестово докер ран - контейнер запускается, останавливается, в логах пишет - сорри, но я не вижу сертов, сделай dotnet dev-certs https --trust (но это на Винду и мак, а на Линукс иди к нам в доки)
Я правильно понимаю что серт я генерю локально и должен просто передать как переменную среды в докер ран или композ?
И вообще, нужен ли этот серт мне для вебапи на впске, может я чет не так делаю?
>>36088
Понял, спасибо
434 2836232
>>36226
Мне лень отвечать скажу только что
1. dev cert как бы удивительно не было только для разработки, кури доку по настройке кестрела
2. кури гугл, ты завуалированно просишь тебе доку пересказывать что докера что мсдн
435 2836449
>>35988
Решают установкой Java и maven.
436 2836452
>>36091
Чудес не бывает. Нет зависимостей - IDE не может проиндексировать то, чего нет.
437 2836455
>>36452
Понимаю, шарпобляди сложно понять, что он сидит в луже говна, но представь себе, бывают. В Java давно уже забыли про проблемы с зависимостями благодаря божественному мавену.
438 2836457
>>36455
ДОЛБОЕБУ сложно понять что чел НЕ ХОЧЕТ затягивать зависимости на машину ибо ему не нужно компилить, а просто код посмотреть с рабочими переходами по коду
439 2836459
>>36457

>нет, это ни я ни магу, это мне нинужно, слышите, нинужно!!!! так как убрать красное говно из IDE?


Оподливился с коупящей шарпочмони.
440 2836460
>>36455
зато у нас есть тулза, чтобы автоматически ставить configureAwait(false))))) джавабляди соснуле))
441 2836461
>>36460
джавалох скажет что у них нет асинк/авайт поэтому им не нужно configureAwait, и даже не поймет какой он лошара.
442 2836462
— Двач-программач, вот у меня почему-то красненьким все в среде разработки показывается…
— Так ты ж пишешь на петушарпе. Джаву с мавеном попробуй.
— Джаваблядь закукарекала. На джаве мне неудобно.
— Тогда ручками зависимости качай, лалка.

— Двач, а почему я код так медленно пишу? И мне очень неудобно.
— Потому что ты на петушарпе пишешь? На джаве пиши.
— Джавабляди не нужны! Бамп! Еще варианты? Бамп!
— Ну котлин попробуй.
— Ебанутые...

— Двач, почему на меня коллеги так странно поглядывают?
— Потому что ты на петушарпе ешь!
— Каждый раз одно и то же, что за дебильные анонимусы. А другого объяснения нет?
— Может и есть, но это не важно. Важно писать код на джаве.
— Кажется, я совсем не понимаю мира и не гожусь для этой жизни.
— Да все с тобой нормально, просто возьми джаву, когда надо будет написать код.
- ПРОСТО! аххахахах! ПРОСТО! Ахуительная история. Угу. ПРОСТО блять. Спасибо, идиоты, за совет, блять.

— Двач, двач! Мне так плохо, я опять не выспался! За что мне это?
— На чём код писал, дебилушка?
— На петушарпе, конечно.
— А джаву не пробовал взять?
— Почему анонимусы так безжалостны ко мне, а еще двач-помогач?! Это невыносимо!
— Джаву взять не пробовал?
— Нет!
— А что тебе помешало?
— Я не хочу об этом говорить. Всё. Тред закрыт. САЖИ ТРЕДУ САЖИ. Вайп!

— Знал бы ты, двач, как я хочу композиции!
— У каждого своя судьба.
— Как ты думаешь, анон, когда-нибудь у меня получится сделать композицию? Я ведь не хочу ничего особенного.
— Так скачай JDK, установи lombok и пиши свою композицию.
— Да? Хорошо, я подумаю.

— Двач, и как люди пишут toString() для классов и не помечают все поля бойлерплейтом?
— На джаве, блять!!
— А чего ты ругаешься сразу? Я ж нормально спросил...

— Анон, поговори со мной.
— Я конструкторы пишу.
442 2836462
— Двач-программач, вот у меня почему-то красненьким все в среде разработки показывается…
— Так ты ж пишешь на петушарпе. Джаву с мавеном попробуй.
— Джаваблядь закукарекала. На джаве мне неудобно.
— Тогда ручками зависимости качай, лалка.

— Двач, а почему я код так медленно пишу? И мне очень неудобно.
— Потому что ты на петушарпе пишешь? На джаве пиши.
— Джавабляди не нужны! Бамп! Еще варианты? Бамп!
— Ну котлин попробуй.
— Ебанутые...

— Двач, почему на меня коллеги так странно поглядывают?
— Потому что ты на петушарпе ешь!
— Каждый раз одно и то же, что за дебильные анонимусы. А другого объяснения нет?
— Может и есть, но это не важно. Важно писать код на джаве.
— Кажется, я совсем не понимаю мира и не гожусь для этой жизни.
— Да все с тобой нормально, просто возьми джаву, когда надо будет написать код.
- ПРОСТО! аххахахах! ПРОСТО! Ахуительная история. Угу. ПРОСТО блять. Спасибо, идиоты, за совет, блять.

— Двач, двач! Мне так плохо, я опять не выспался! За что мне это?
— На чём код писал, дебилушка?
— На петушарпе, конечно.
— А джаву не пробовал взять?
— Почему анонимусы так безжалостны ко мне, а еще двач-помогач?! Это невыносимо!
— Джаву взять не пробовал?
— Нет!
— А что тебе помешало?
— Я не хочу об этом говорить. Всё. Тред закрыт. САЖИ ТРЕДУ САЖИ. Вайп!

— Знал бы ты, двач, как я хочу композиции!
— У каждого своя судьба.
— Как ты думаешь, анон, когда-нибудь у меня получится сделать композицию? Я ведь не хочу ничего особенного.
— Так скачай JDK, установи lombok и пиши свою композицию.
— Да? Хорошо, я подумаю.

— Двач, и как люди пишут toString() для классов и не помечают все поля бойлерплейтом?
— На джаве, блять!!
— А чего ты ругаешься сразу? Я ж нормально спросил...

— Анон, поговори со мной.
— Я конструкторы пишу.
443 2836463
>>36461
Ну да, мы не занимаемся придумыванием себе проблем и героическим их побеждением.
444 2836466
>>36462
ты просто брехливое чмо
в жава та же ситуация - открываешь проект и начинает затягиваться куча говна и пока все это говно не затянется все будет красным гореть. Так что иди нах, дебич
445 2836467
>>36463
а твой хваленый ломбок по твоему что? как не средство победить проблемы жавы
ох ох ЛОШАРА
446 2836468
>>36466
Всё затягивается автоматически. Если интернет хороший то вообще такой вопрос как "пачему краснинькае" не появляется, все сразу нормально.
447 2836469
>>36467
Ты правда не видишь разницы? Джава то, что решает ломбок не придумывала (0), она просто нихуя не делала в этом направлении. В петушарпе же навалили кучу говна (-1), которую пришлось разгребать через configureAwait(false).
448 2836470
>>36468
в дотнете тоже все затягивается автоматически.
Исключение - зависимости были просто кучкой длл или зависимыми проектами, которые просто не были выложены в паблик.

В жава при таком подходе эта же куча жаров ниоткуда сама не нарисуется и подпроекты тоже.

инет может быть 10000000 раз хороший, просто это дерьмо засрет диск, а нужно будет 0 раз, ведь они просто не нужны.
в дотнет будет то же самое. При открытии проекта начнется засираться кеш nuget-а лишним говном.

>>36469

>она просто нихуя не делала в этом направлении.


>В петушарпе же навалили кучу говна (-1)


ИМЕННО. Когда УЖЕ во многие языки завезли асинк авайт (даже в пхп появится лол) - в жаве кодят как еще прадеды кодили - строят монструозные конструкции и закатывают солнце вручную.
про onfigureAwait(false) ты вообще не знаешь что это - так что смешно слышать от джавалошка какую то там критику
449 2836471
помню сколько слышал от жавистов "не нужны нам ваши лямбды" - а потом бац и завезли. ЛОООООЛ ГОВНОЕДЫ
Так если не нужны, то чего вдруг убедили разрабов жавы таки добавить их в жаву

или как в го с дженерикам "оно не нужно". А теперь "йоба, да это же киллер фича"

просто смешно слушать подобных говноедов.
Capture.JPG33 Кб, 490x72
450 2836472
>>36452
я посмотрел уже и пиздоглазых вызовов там не так уж и много и по коду можно примерно понять что там они делают и почем
то что мне надо находится внутри неймспейсов проекта т.е. оно все нормально индексируется.
но каким-то хуем отвалился весь System + System.Collections.Generic.
вот что это за ШИЗА?
451 2836473
>>36472
это глюк студии. Открываешь старый проект - все красное. Нужно удаление .vs (иногда не помогает)
в idea-шных IDE там есть рестат и инвалидация кешей, а в студии удаляю .vs
452 2836474
>>36470

>в калнете всё затягивается автоматически


И что же у того анона всё красное?
453 2836475
>>36471
Ну не надо проецировать. Обычно такое слышится от шарпоблядей, которые лучше ручками будут макакить бойлерплейт и, чтобы легче было коупить, еще и пообещают линтером нипущить и зопретить нормальные человеческие практики, если они появятся.
454 2836476
>>36473
я это первым делом сделал, не помогло.
455 2836477
>>36470

>иммяяяна!!!!


Что именно-то? Ты выёбываешься кучей говна, которую фиксят неявным добавлением конфигуравейта всюду?
456 2836478
>>36474
мало ли. может проект на дотнет 5, а у чела просто на машине такого нет, а стоит 7
Не стоит путать рантайм и сдк

А может, как оно обычно бывает, проект пытается быть кросс и там прописано 100500 вариантов вида .net461, core, standard и части этого добра просто нет на машине

вот у меня нет - я пишу под дотнет 7, зачем мне старое.

Также не стоит забывать что потерянных зависимостей может быть так много, что количество анрезолвед зашкаливает и анализатор перестает строить модель.

>>36475

>которые лучше ручками будут макакить бойлерплейт


совсем тупой???? это слышится в ПЕРВУЮ ОЧЕРЕДЬ от жавистов (и от гошников, но их понять можно) и жависты такие "нахер нам это не нужно. у нас ентерпрайз, посмотри сколько написано всякого на жаве".
только жавист будет терпеть монструозность синтаксиса. Взять те же гет сеты - их так и не сделали в самом языке лол, а заставляют жавамакаков либо иметь весь этот бойлерплейт в коде (и насрать что это IDE сгенерит - это просто синтаксический мусор) или юзать сторонние вещи которые сгенерят не в код.

В других языках фичи и сахар привествуются. Даже вон в питоне питоноебы орали на тайпхинтинг мол портит язык, но полезность победила дебилов. туда же и async/await - ну да есть еще додики, но в основном это стало повсеместным.

А в жаве за каждую фичу нужно жертвы богам приносить или я не знаю что сделать чтобы это было. Делают в итоге что то- через десяток лет лол. ДАЖЕ если это просто сахар и не портит совместимость.

>>36477
Ну пиши явный какая проблема. пишут же жава лошары гетХ/сетХ и их не парит. А те кто не пишут, те генерят.
так и тут - нет разницы

И вообще это опционально. В асп.нет кор он не нужен в принципе. Также можно детачнуть контекст на старте операции и дальше уже конфавайтить тоже не нужно. Разные способы есть.

Но это мелочи жизни по сравнению с ВООБЩЕ НЕТ АСИНК/АВАЙТ, пишем как прадеды
457 2836487
>>36478

>мало ли. может проект на дотнет 5, а у чела просто на машине такого нет, а стоит 7


Хуя себе оправдание шарпошлюхи. А что оно оправдывает-то?
458 2836489
>>36478

>совсем тупой???? это слышится в ПЕРВУЮ ОЧЕРЕДЬ от жавистов (и от гошников, но их понять можно) и жависты такие "нахер нам это не нужно. у нас ентерпрайз, посмотри сколько написано всякого на жаве".


>только жавист будет терпеть монструозность синтаксиса. Взять те же гет сеты - их так и не сделали в самом языке лол, а заставляют жавамакаков либо иметь весь этот бойлерплейт в коде (и насрать что это IDE сгенерит - это просто синтаксический мусор) или юзать сторонние вещи которые сгенерят не в код.



>В других языках фичи и сахар привествуются. Даже вон в питоне питоноебы орали на тайпхинтинг мол портит язык, но полезность победила дебилов. туда же и async/await - ну да есть еще додики, но в основном это стало повсеместным.



>А в жаве за каждую фичу нужно жертвы богам приносить или я не знаю что сделать чтобы это было. Делают в итоге что то- через десяток лет лол. ДАЖЕ если это просто сахар и не портит совместимость.


Самый эпичный "нет, ти!!!!" за всю историю человечества. Ладно, повоевал с джавистами, пора и писать туСтринг вручную. Генератор его же ненужен. Стоп, это же джависты так говорят только. Падажжи ёбана...
459 2836491
>>36478

>Ну пиши явный какая проблема. пишут же жава лошары гетХ/сетХ и их не парит. А те кто не пишут, те генерят.


>так и тут - нет разницы


Не-а. @Getter в джаве такой же явный, как и метод getХуй(). Потому что когда открываешь класс, сразу видишь, что он делает. А твоя параша настраивается где-то в ебенях и делает неявно хуйню на весь проект, и пока не прочитаешь все настройки говнофоди, не поймёшь, что и как работает. И еще их держать в голове надо.
460 2836497
>>36489
1 "нет ти" это про тебя. посмотри каждый второй свой пост жавалошок
2 про тустринг тебе выше по треду много раз поясняли
ты долбоеб какой то реально. Пытаешься косить под тролля, но косишь под долбоеба. и не перестаешь

>>36491

>Не-а. @Getter в джаве такой же явный, как и метод getХуй()


{get; } такой же явный как и метод гетМозгУжавистаЕсли найдешь()

>и делает неявно хуйню на весь проект


ну точно долбоебище эпичный.
то есть тебе в говножаве можно указать аннотацию где ты хочешь чтобы оно работало, и это типа можно только в жаве - весь остальной мир типа работает неявно

нет никакой принципиальной разницы между ломбоком и фоди если не нужна поддержка IDE. Но как пояснить это жавалошаре?
461 2836499
>>36497

>1 "нет ти" это про тебя. посмотри каждый второй свой пост жавалошок


И снова "нет, ти!!!", лол.

>{get; } такой же явный как и метод гетМозгУжавистаЕсли найдешь()


Ебло, кто-то тебя за {kukarek;} спрашивал? Мы про конфигуравейт говорили.

>>и делает неявно хуйню на весь проект


>ну точно долбоебище эпичный.


>то есть тебе в говножаве можно указать аннотацию где ты хочешь чтобы оно работало, и это типа можно только в жаве - весь остальной мир типа работает неявно


Что ты блядь высрал?

>нет никакой принципиальной разницы между ломбоком и фоди если не нужна поддержка IDE. Но как пояснить это жавалошаре?


Ну и это тоже. Ещё один "нинужно", но не забывай, так говорят только джависты.
462 2836500
Это ж пиздец, он правда перешёл на шизофазию. Интересно, это петушарп и его комьюнити так по мозгам долбит или наоборот, в петушарп идут только с iq < 80?
cvsj.jpeg6 Кб, 259x194
463 2836501
А по работе как?
Вкатывался в Java Spring, понял основы MVC - но сейчас учу Unity. На .Net Core смогу работу найти?
464 2836507
>>36499

>И снова "нет, ти!!!", лол.


это уже клиника у жаволошка. проехали

>Ебло, кто-то тебя за {kukarek;} спрашивал? Мы про конфигуравейт говорили.


цитирую жавалошка

>Не-а. @Getter в джаве такой же явный, как и метод getХуй()


>Мы про конфигуравейт говорили.


еще одна клиника. склероз. тебе бы к врачу что ли

по поводу же ConfigureAwait - он настраивается (как и все в фоди) и указываешь в каких проектах тебе это нужно. Ничего неявно не начинает работать автоматом абы где - даже это модуль работает только там, где ЯВНО укажешь.

>Ещё один "нинужно",


поясняю жаваЛОХУ
если у тебя генерятся геттеры и сеттеры, то IDE должна как то узнать об сгенереном, чтобы ты мог юзать их в коде и IDE не ругалась "нет такого". В случае с гетсетами или тустрингами или конфигуравайтами ОНО СУЩЕСТВУЕТ изначально - то есть никакого неявного НОВОГО кода, про который студия должна ждать - ПРОСТО НЕ РОЖДАЕТСЯ, а потому не нужны никакие доп средства чтобы студии рассказать "там эта, у тебя свойство появилось"

я понятно пояснил долбоебу? впрочем, у него шиза и склероз.
465 2836537
>>36501
Не сможешь, если сейчас же не выкинешь Unity и не начнёшь учить ASP.NET.
466 2837048
>>36507

>рррря, клиника!!!!


А может по делу что-то скажешь? Алсо, снова "ниееет, ти", ведь я до этого недвусмысленно намекнул на твои психические заболевания постом про шизофазию, лол.
467 2837066
Есть какой нибудь пакет для создания REST API сервара по типу RestSharp'а?
468 2837108
>>37048
по делу тебе все сказано
и не раз
и даже к доктору послал - тоже по делу.

>>37066
ты с клиентом попутал?
469 2837118
>>37108

>ты с клиентом попутал?


Нет, нужен именно сервер (небольшой), не хочу ASP тянуть, хочу в функционалоном стиле свои обработчики запросов написать как например в сишном Served https://github.com/meltwater/served .
470 2837250
>>37118
нуу это искать какой то велосипед, который потом все равно забросят. Надо ли оно.
471 2837261
Почему в шарпе, когда IntelliSense предлагает мне имя опционального параметра аля "message:", после его выбора двоеточие не вставляется? Я получаю просто "message". В бейсике все работает.

Я уже заебался подставлять двоеточие вручную. Может я что-то делаю не так?
472 2837264
>>37261
Не ленись.
473 2837272
>>37261
Хуй знает, с решарпером всё ок
474 2837307
>>37250
Ну на С++ вон написали даже на лямбдах. На С# сам бог велел.
1694446122400.jpg614 Кб, 1080x2340
475 2837357
>>37118
Берёшь и смотришь каждый у кого больше 100-150 звёздочек
Capture.JPG9 Кб, 346x231
476 2838096
в приличном обществе за такое бьют ногами если нельзя использовать конструктор?
я планирую вызывать этот метод только один раз, но паранойя говорит мне обратное.
477 2838141
>>38096
В приличном обществе бьют за логику в конструкторах
Делай выводы
478 2838142
>>38096
Зависит от того куда ты интегрируешься. Для ui фреймворков это распространено но в условном асп бэке я бы не хотел такое видеть (либо спихнуть на di этот вызов)
479 2838200
>>37108
Ясно, манька обоссана в очередной раз.
480 2838247
>>38096
Зависит. Так что никто не бьет.

Ну. Типа допустим, у тебя как-бы плагинная архитектура. Ядро - прходится по папочке ./plugs ищет dll'ки и достает из них IPlugin'ы. Ну вот как иначе ты будешь их инициализировать, чтобы было ПРОСТО.

Просто вот такие вот Init, BeforeInstall, Install, AfterInstall, OnTick, BeforeUninstall, Unistall, AfterUninstall и прочее - должны быть не в единственном экземпляре на весь проект, а частью некоего архитектурного решения, которое должно быть задокументировано и про которое должны все знать.
481 2838250
>>37066
Могу своим поделиться.
Умеет отдавать статику. В остальном - вот контекст, че хочешь то и делай с ним.

Суть примерно следующая:

new ServerBilder()
.Listen(80)
.UseStatic("./www")
.UseServices(serviceProvider)// чтобы в стиле ASP провайдить сервисы в обработчкик
.CreateDipatcher(assembly)
.Use<POST>((ctx, "my/secret/api") =>
var dao = ctx.Request.Body.FromJSONAsync<MyDAO>();
Console.WriteLine(dao);
return ctx.CreateResult.OK(new {status = "OK"});
)
.Build()
.Run();
482 2838252
>>38250
Да.
Не умеет в вебсокеты
Не умеет в HTTP3

Мидлвары - есть, но полезных - я не делал, так что если авторизация какая-то хитрая - сам делай.
483 2838614
почему у вас в оппике 2 картинки посвещены жявке?
у вас комплекс неполноценных долбаебов?
пытаетесь самим себе доказать что ваше говноязык лучше говноявы?
484 2838691
Продолжаю пилить программу для рисования с использованием Win2d, и столкнулся с одной проблемой, решение которой я надеюсь вы мне подскажите. В Win2d есть такое понятие как CanvasDevice, который собственно хранит контекст необходимый для работы с видеокартой. И все элементы, которые друг с другом взаимодействуют должны быть порождены от одного CanvasDevice, иначе выскочит исключение. Так вот, у меня есть холст (обычный контрол, объявляемый в XAML), и есть кастомные кисти, которым зачастую для работы необходимо инициализировать ресурсы, зависимые от CanvasDevice. Собственно вопрос, как это сделать? На данный момент у меня это реализовано следующем образом - при создании кисти она не загружает никаких ресурсов, загрузка происходит в момент установки кисти текущей кистью для рисования, для чего в обработчике изменения DependencyProperty у меня вызывается асинхронный метод Initialize в который передается контекст необходимый для инициализации. Беда в том, что зачастую загрузка нужных элементов асинхронна, как итог приходится делать сам метод асинхронным, а это может привести к тому, что пользователь попытается нарисовать до того, как загрузятся ресурсы. Соответственно будет краш. И в целом меня напрягает, что я не могу обеспечить необходимый порядок работы программы.
Как быть?
485 2838766
>>38614
Потому что жавист перекатил тред
Пока шарписты спорили каких аниметянок юзать для переката
486 2839023
Анон.
Насколько тебе понятен этот код?
https://pastebin.com/8XxXt0Ln
487 2839025
>>39023
Я почему спрашиваю.
Я вот смотрю. И я как-бы понимаю, что оно делает. Потому что типа блин, я не первый день код чужой читаю.
Но пиздец. Неужели вот так надо было писать?
Чтобы что?
488 2839080
>>39023
Все кто пишут вот так
something
{
}
А не
something {
}
Больные на голову люди. Их лечить надо
489 2839089
>>39080
Иди нахуй, жабадаун.
490 2839112
>>38766
Ещё и спермотоксикоз.
491 2839114
>>39089
Сколько конструкторов за сегодня написал, болезненный?
492 2839115
>>39114
Написал два конструктора для инициализации твоей мамаши.
image.png101 Кб, 1365x686
493 2839177
Теперь я буду скриношоты с вимом постить!
Так вот.
Теперь у меня вопрос в связи с этим.
Как сюды дебагер прикрутить?
494 2839180
>>39177

> Теперь у меня вопрос


Вот поэтому ты и не будешь постить скриншоты с вимом.
495 2839181
>>39180
Ну блин.
Типа я чет не нашел как прикрутить дебаггер к виму.

А хочу с вимом поиграться.

Можно конечно emacs который как-бы иде. Но я слышал много нехороших слов про него в свое время.
496 2839184
>>39181
Хм.
Вроде нашел некий VimSpector

Уже поздно. Завтра буду играться с ним.
1694553091517.jpg26 Кб, 490x274
497 2839197
>>39180
>>39177
Никогда ты не будешь постить скриншоты с вимом
498 2839202
>>39197
Ух, наверняка просмотр в детстве фильмов про хакеров как-то повлиял на моё желание вкатиться.
499 2839225
>>38691
Во-первых, вероятно тебе нужно отключить у холста реакцию на мышь на время инициализации кистей. За это отвечает вроде как свойство IsHitTestVisible=false. В WPF оно есть у каждого контрола. В этом случае холст перестает реагировать на любые клики мыши, стилуса (про клавиши не помню, но вероятно тоже).

Если у тебя не WPF, а еще какая-то залупа, в которой нельзя отключить хит мыши, то можно поверх холста бахнуть слой практически прозрачного Border или Grid или чего угодно, который бы собой блокировал холст пока идут необходимые операции. Достаточно 1% прозрачности, чтобы заблокировать собой клик мыши, при этом юзер не заметит разинцы.

Во-вторых, тебя может сбить с толку, что асинхронная функция требует await, который требует async и так далее до бесконечности. На самом деле ты можешь из обычного метода запустить асинхронную функцию и она все так же будет выполняться асинхронно. Разница в том, что await заставляет не выполняться дальнейший код, пока не завершится работа вызываемого асинхронного метода.

Грубо говоря, вот в этом коде:

public static void Test()
{
. . . _ = TestEachAsync();
. . . Debug.WriteLine("Хуякс!");
}

public static async Task<bool> TestEachAsync()
{
. . . for (int i = 0; i < 10; i++) {
. . . . . . Debug.WriteLine(i);
. . . . . . await Task.Delay(1000);
. . . }
. . . return true;
}


Ты получишь вот такой ответ:

>0


>Хуякс!


>1


>2


>3


>4


>5


>6


>7


>8


>9



Как видишь, сообщение "Хуякс!" из метода Test было выведено не дожидаясь завершения метода TestEachAsync. Оно не на первом месте, но это просто вопрос микросекунд, либо пока не закончится одна итерация async-метода.

И тут ты спросишь: а нахуя это нужно? И тут мы приходим к третьему пункту.
В-третьих, для асинхронных методов можно использовать токены. Это может быть токен отмены, либо токен завершения. Это некий элемент, который позволяет извне влиять на работу асинхронного метода, либо получать его состояние.

В этих случаях асинхронный метод запускается обычным способом НЕ в режиме авейта (как в примере выше) и забывается. А далее ты любыми способами (хоть в цикле) проверяешь тот самый токен на окончание асинхронной инициализации твоих кистей, либо активируешь отмену в токене для прекращения работы асинхронного метода.

Так же, в таких случаях устанавливают авейт по таймеру, чтобы завершить ожидание в любом случае, если в асинхронной функции что-то пошло не так. Так устроены например "именованные каналы" которые ожидают ответа сервера определенное количество времени, а потом прекращают работу в любом случае. Даже можно сделать уведомление о завершении асинхронного метода при помощи события.

Это позволяет избавиться от той самой проблемы каскада асинков и авейтов ради одного асинхронного метода. Ну или если асинхронный метод (как в случае с ожиданием ответа сервера) может длится достаточно долго, чуть ли не минуты.

Про токен завершения гугли TaskCompletionSource
Про токен отмены гугли CancellationTokenSource
499 2839225
>>38691
Во-первых, вероятно тебе нужно отключить у холста реакцию на мышь на время инициализации кистей. За это отвечает вроде как свойство IsHitTestVisible=false. В WPF оно есть у каждого контрола. В этом случае холст перестает реагировать на любые клики мыши, стилуса (про клавиши не помню, но вероятно тоже).

Если у тебя не WPF, а еще какая-то залупа, в которой нельзя отключить хит мыши, то можно поверх холста бахнуть слой практически прозрачного Border или Grid или чего угодно, который бы собой блокировал холст пока идут необходимые операции. Достаточно 1% прозрачности, чтобы заблокировать собой клик мыши, при этом юзер не заметит разинцы.

Во-вторых, тебя может сбить с толку, что асинхронная функция требует await, который требует async и так далее до бесконечности. На самом деле ты можешь из обычного метода запустить асинхронную функцию и она все так же будет выполняться асинхронно. Разница в том, что await заставляет не выполняться дальнейший код, пока не завершится работа вызываемого асинхронного метода.

Грубо говоря, вот в этом коде:

public static void Test()
{
. . . _ = TestEachAsync();
. . . Debug.WriteLine("Хуякс!");
}

public static async Task<bool> TestEachAsync()
{
. . . for (int i = 0; i < 10; i++) {
. . . . . . Debug.WriteLine(i);
. . . . . . await Task.Delay(1000);
. . . }
. . . return true;
}


Ты получишь вот такой ответ:

>0


>Хуякс!


>1


>2


>3


>4


>5


>6


>7


>8


>9



Как видишь, сообщение "Хуякс!" из метода Test было выведено не дожидаясь завершения метода TestEachAsync. Оно не на первом месте, но это просто вопрос микросекунд, либо пока не закончится одна итерация async-метода.

И тут ты спросишь: а нахуя это нужно? И тут мы приходим к третьему пункту.
В-третьих, для асинхронных методов можно использовать токены. Это может быть токен отмены, либо токен завершения. Это некий элемент, который позволяет извне влиять на работу асинхронного метода, либо получать его состояние.

В этих случаях асинхронный метод запускается обычным способом НЕ в режиме авейта (как в примере выше) и забывается. А далее ты любыми способами (хоть в цикле) проверяешь тот самый токен на окончание асинхронной инициализации твоих кистей, либо активируешь отмену в токене для прекращения работы асинхронного метода.

Так же, в таких случаях устанавливают авейт по таймеру, чтобы завершить ожидание в любом случае, если в асинхронной функции что-то пошло не так. Так устроены например "именованные каналы" которые ожидают ответа сервера определенное количество времени, а потом прекращают работу в любом случае. Даже можно сделать уведомление о завершении асинхронного метода при помощи события.

Это позволяет избавиться от той самой проблемы каскада асинков и авейтов ради одного асинхронного метода. Ну или если асинхронный метод (как в случае с ожиданием ответа сервера) может длится достаточно долго, чуть ли не минуты.

Про токен завершения гугли TaskCompletionSource
Про токен отмены гугли CancellationTokenSource
500 2839226
>>39080
Соси хуй. Дрызготня из строк нравится только сумасшедшим.
Локальные блоки выглядят более цельными как раз в варианте
something {
}

и нет

вот

этой

ненужной

хуеты

внутри

метода
501 2839228
>>39226
Интересно на что стриггернулся вайп-фильтр? На пробелы? Разве это не доказательство пососной идеи — ставить везде
something
{
}
502 2839229
>>39226

Ты

Пидор

.
503 2839242
>>39080
Двачую. А еще бесят пидоры, которые вместо doSomething(arg1, arg2, arg3, arg4); пишут

doSomething(arg1,
arg2,
arg3,
arg4);

Это отдельные конченные уебки
504 2839264
>>39242
Если аргументы большие или там целое выражение на каждый аргумент — то можно. Только вот конечно arg1 тоже переносить надо, и скобку последнюю, а то так правда уёбищно.

doSomething(
—— arg1,
—— arg2,
—— arg3,
—— arg4
);
505 2839265
>>39242
Ну ок. Только ты в оффис мне 21:9 будешь покупать монитор, чтобы это помещалось в.

await userBasketAdder.AddGoodsToUserBasket<DefaultUser, MarketGoods>(user, goodsList, discountCalculator, priceProvider, geopositionProvider, weatherProvider, deliveryProvider, zodiacProvider, astroTimeClockProvider, loggerFactory, cancellationToken);
506 2839266
>>39023
Какой-то анальный CommandExecutor. Дал бы хотя-бы какую-нибудь тестовую задачку, чтобы легче было понять, понятный код или нет.
507 2839267
>>39266
Это код который разбивает буффер на "фреймы".
Собственно. Потому я и задаюсь вопросом. А надо ли было его вот настолько обскурным делать? Типа все что оно должно сделать - проверить - встречается ли в буффере какая-то последовательность символов, либо что буффер заполнен на нужное количество байт.
508 2840195
Объясните тупому простую вещь. Конфигурация многие ко многим в EF Core.
На примере Student и Course, допустим.
Я пишу типа:
modelBuilder.Entity<Student>().HasMany<Course>(s=> s.Courses).WithMany<Course>(c=>c.Students).UsingEntity<StudentCourse>()

Так?

Вопрос 1. Где это писать? В StudentConfiguration?
Вопрос 2. В CourseConfiguration надо то же самое повторять на эту тему? Если да, то как избежать повтора? Если нет, то как выбрать между StudentConfiguration и CourseConfiguration для описания связей?
Вопрос 3. Можно ли это как-то написать внутри StudentCourseConfiguration?
509 2840297
>>40195
То есть немного не так, да, modelBuilder он внутри глобального OnModelCreating, но его не хочется захламлять, сущностей много, связей тоже. Надо вынести в конфигурацию, в какую?
510 2840403
>>36462
Я вижу ты шаришь. Тред про шарп, но спрашу, раз тут гуру джавы сидит.
Смотри. У меня есть проект на ant, java 5, в котором используется mina и какие-то jre отсутствуют, как я понял, судя по названию класса MainSplashScree, AcitvationWindow и т.д. эти jre какие-то связанные с визуалкой.
Собсвтенно. Я сколько не пробовал - все горит красненьким. Ставил идею, ставил нетбинс, ниче само не качается, ругается и не работает.
Че мне делать? Надо собрать и кое-какие изменения внести. А нихуя не собирается.
511 2840454
>>40297
ientitytypeconfiguration

>>40195
Я описываю связи в сторону один ко многим (то есть как если будешь смотреть ddl к таблице)
512 2840457
>>40195
А вообще обычно я не пишу эти связи т.к. они автоматически по навигационным пропам строятся и только миграцию проверяю.
Нужно руками задавать только если какой то криворукий мудила всё сломал до тебя и еф не может сам понять ту хуйню которую ебанул этот призрачный гений
Снимок экрана 2023-09-14 101812.png66 Кб, 836x573
513 2840609
Зачем делать приватную переменную и а потом еще публичную, у которой get и set чтобы обращаться к приватной? Какой в этом смысл?
514 2840618
>>40609
Чтобы изнутри класса изменять переменную в обход логики в свойстве.
515 2840663
>>40403
Jre это джава, еблан. Не может отсутствовать "несколько jre".

Но вообще, понятия не имею, в чем у тебя дело, ant это легаси хуйня и не потому что какие-то зумеры решили отменить его и заставить всех перейти на своё говнецо, а потому что сами разработчики анта решили сделать вместо него мавен. Может быть (не шарю за ант) ант вообще не умеет автоматически качать зависимости.
516 2840726
JRE, JAR, какая разница, кого это ебёт.
517 2840781
>>40726
Большая. Я долго не мог понять, что ты/он имеет в виду под "отсутствует несколько jre".
518 2840832
Почему RestSharp всегда возвращает ответ OK хотя никакой сервер не работает и браузер по тому же адресу честно возвращает ошибку?

var options = new RestClientOptions("localhost:8999") {
Authenticator = new HttpBasicAuthenticator("username", "password")
};
var client = new RestClient(options);
var request = new RestRequest("testapi");
var response = await client.GetAsync(request, cancellationToken);
519 2841001
>>40832
Бери да смотри в дебаггере. Почём нам знать что у тебе выдаёт рестшарп?
520 2841056
>>41001
Ты дурак или да? Написал же что он всегда возвращает ОК даже если никакого сервера нет.
521 2841118
>>41056
Может ты? У тебя, мать его, целый объект приходит, а не просто "OK"
522 2841344
>>40663
В папке проекта - подпапка packages, там лежит куча jar'ов
сторонних компонентов: для составления excel'евских отчетов, для работы с БД, много чего еще, но каких-то jre с визульной частью - нет. А в самом проекте - они прописаны. И проект - не собирается. Вот совсем.
523 2841406
>>40609
Публичным ты делаешь свойство а не переменную.
Зачем? На твоем скрине - буквально показано зачем. Чтобы можно было логику какую-то добавить как в get так и в set.
Вот допустим ты решил возраст хранить в int потому что удобно часто именно в int хранить.
Но ты не хочешь, чтобы снаружи какой-нибудь еблан сделал отрицательный возраст.
Если ты наружу поле вытащишь, кто угодно в коде сможет это делать, и придется по всему коду делать проверки, которые бы могли быть внутри класса.

Ну. Типа давай на примере с возрастом.

public class Age
{

private int _totalYears = 0;
public Age(int totalYears) => TotalYears = totalYears;
public TotalYears { get => _totalYears; set {Validate(value); _totalYears = value} }
pruvate Validate(int val) => Throw<ValidationException>.If(val<0);

}
524 2841540
>>41344
Ну выясняй значит, чего тебе туда недоложили, и докладывай сам.
525 2841546
>>41540
Так а как же джава, которая все сама?
526 2841548
>>41118
Нахуй ты лезешь абы вякнуть если нихуя не петришь? Другие свойства все пустые, ничто не выдаёт ошибку.
527 2841554
>>41548
Ну, тебе виднее, мистер неспособный провалиться дебаггером в длл
528 2841666
Здравствуйте. Написал вот такой код. Почему я вижу кракозябры заместо слов? Кодировку уже везде, где только мог прописал.
529 2841671
>>41666
1. проставь кодировку в файле (студия заебала, но после добавления эдиторконфига с ютф8 вроде успокоилась)
2. заверни чистую строку в хтмл и проставь кодировку в хедере
530 2841674
>>41671
хмм...Про второе даже не подумал, спасибо!
изображение.png12 Кб, 329x404
531 2841679
532 2841687
>>40454

> ientitytypeconfiguration


Но какой? Студента? Курса? Обоих? В StudentCourse запихнуть не получается, или я не умею.

> описываю связи в сторону один ко многим


Но мне надо промежуточную таблицу описать. И FK в ней и к ней. У меня готовая бд.
533 2841691
>>40195

> Вопрос 1. Где это писать? В StudentConfiguration?


В OnModelCreating. Плодить эти файлы с конфигурациями - долбоебизм, если у вас не 10+ человек в команде.

> Вопрос 2. В CourseConfiguration надо то же самое повторять на эту тему?


Не надо.

> Вопрос 3. Можно ли это как-то написать внутри StudentCourseConfiguration?


Можно. Но не нужно.

Вообще. Нахуя тебе эта промежуточная сущность? В 99% случаев оно нахуй не нужно. Если там какая-то логика нужна, типа - оплочено-неоплочено, когда оплочено и все такое, то тогда тебе нужна нормальная СУЩНОСТЬ, а не этот выпердышь.

Вообще. Сделай нормально. Если у тебя этот StudentCourse - таки сущность, а не просто отражение таблички, то назови нормально.
534 2841712
Когда требуется провести какие-то комплексные операции с файлами, типа архивации или разархивации, то нужно ли это делать через временную папку?

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

Архиватор так и делает для некоторых операций. Но разве это не сказывается на скорости работы? Или угроза задеть юзером данные важнее скорости?
535 2841747
>>41687
Зачем ты их вообще прописываешь? Навигационные поля сделай и еф всё сам свяжет.
Не понимаю этой дрочи на прописывание всего ручками что и так очевидно для еф. Тем более что ты всё равно увидишь в миграции если что то не так пошло.

А связи у тебя 2 шт один ко многим и логично что если подход как выше писал то обе должны быть через StudentCourse заданы
536 2841756
>>41712
- Не видел консольных архиваторов которые бы писали куда то а потом перемещали
- Видел что так делает 7зип гуёвый но почему хз, может что бы конфликты отдавать на откуп проводнику
537 2841758
>>41712
Как так делает?
Архиваторы, обычно, берут и в памяти ворочают этим делом. Нахера им чет там распаковывать на диск? Чтобы что? Чтобы где?
Capture.JPG101 Кб, 1086x439
538 2841767
ЧЯДНТ?
кроме того что пытаюсь переписать на LINQ то что и так нормально работает
Capture.JPG36 Кб, 982x105
539 2841775
>>41767

>запостил и сразу же понял что там не так


спасибо, шарпач, теперь работает
540 2841794
>>41756
>>41758
А как открыть компонент архива не распаковывая его?
Ну допустим у меня там xml-документ. Для его чтения я должен использовать XDocument или XmlReader, но они требуют путь к файлу.

Через Stream? Да, наврено. Вижу и там и там есть такой вариант.
541 2841800
>>41794
Тру вэй для xml это стримы т.к. к примеру всякие госы делают выгрузки по паре гигов на файл
542 2841841
>>41540
что значит докладывай?
А кто тут ротешник раскрывал

>Всё затягивается автоматически. Если интернет хороший то вообще такой вопрос как "пачему краснинькае" не появляется, все сразу нормально.



>>41691
Завидую тем людям, от которых не требуют использовать EF
ой, да это же я )
543 2842603
Можно ли сделать расширение для статического класса?

И вообще есть такая проблема. Допустим есть несколько классов, у каждого из которых должны быть методы:
Open(string filePath);
Save(string filePath);
Import(string filePath);
Export(string filePath);

Куда пихать эти методы?
- В тело самих классов? У меня нет опыта с реальными проектами, но выглядит мусорно. Я же не буду пердеж на каждый случай жизни пихать в класс? Неизвестно какой зоопарк образуется с экспортами, например.

- В команду типа ICommand? Неудобно. Хотя уже существуют по команде для каждого из четырех методов и мне достаточно для условного OpenMyClassCommand добавить метод Open. Это самый легкий путь.

- Сделать отдельный файл-менеджер для каждого класса? Вероятно этот вариант подходит. Вот я решил сделать класс, с расширениями, но проблема в том, что такие методы как Open и Import не могут быть расширениями т.к. должны привязаться к экземпляру класса, которого на момент их вызова еще нет — они его должны создать сами.

Вообще интересует практика организации подобного. Насколько зашкварно пихать логику в ICommand? Или они должны существовать всего лишь мостом между View и внутренней логикой? Я считаю что второе.
544 2842643
Я манал, как в WPF биндинги работают блджад? К чему я биндюсь блять? К классу? К объекту? А как xaml узнает к какому именно? Или я из кода объект к вьюшной залупе биндить должен? Но это же тогда надо блокам в xaml имена давать, а на стаковерфлоу пишут что так делать хуево и не по MVVMовски.
545 2842662
>>42643
К объекту
Который в DataContext в текущем месте если ты не пытаешься указать другое место (например ElementName= укажет его как начало для бинда (а не его DataContext)
Нет
Имена и MVVM перпендикулярны. Вид внутри себя может делать что угодно и как угодно.
image.png233 Кб, 498x498
546 2842674
>>42662
Благодарю.
547 2842679
>>42643
Ты биндишься к свойству. Это свойство при обновлении вызывает событие, на которое триггерится привязка.

По твоему тексту ничего не понял. Ты бы описал конкретный пример к чему ты хочешь биндиться: к свойству вьюмодели или к свойству соседнего\родительского контрола в xaml.

Обычно не одобряют биндиг по имени к мейн-контролу, чье имя могут изменить извне. На остальные контролы пофиг.

Но меня пугает, что ты собрался биндиться из кода ко вью-контролу по имени. Это что-то странное.
548 2842709
>>42643
>>42662
>>42674
Вы на инопланетном общаетесь? Как вы друг друга понимаете и понимаете ли вообще?
К чему ответ "Нет"? Что за перпендикулярность имен и MVVM? Зачем биндиться из кода ко вью по имени?

Столько вопросов и так мало ответов.
549 2842731
>>42709
да

да

ответы давал в том же порядке в каком вопросы с некоторым смещением, а значит ответ "нет" к вопросу "Или я из кода объект к вьюшной залупе биндить должен?"

xaml это вид. имена в xaml - все равно вид. это никак не вылазит за буковку V в MVVM, а значит никак эту самую MVVM не нарушает. Можно разве сказать что "не нужно биндится прямо на элемент, а пусть будет связующим звеном вьюмодель", но это только когда есть за что зацепиться во вьюмодели. Технически же вид может творить внутри себя любую дичь, хоть писать в стиле винформса без биндингов и хамла (или быть консольным выводом) и это никак не нарушит MVVM

Не знаю. всякое бывает. может кому и нужно.
550 2842737
>>41747

>Навигационные поля сделай и еф всё сам свяжет


Хммм, окей. А если у меня ключ сложный? Ну типа у студента это (id, class)? Там же правильно назвать надо, как я понял.
551 2842740
>>42679

>Но меня пугает, что ты собрался биндиться из кода ко вью-контролу по имени.


Не пугайся, я просто изучаю WPF параллельно делая на нем пет-прожект, а в туторах про биндинг есть в том числе примеры биндинга из кода, вот и пытаюсь выяснить как "принято" делать.
552 2842743
>>42737
Моя позиция что если тебе нужен составной ключ то ты что то делаешь не так.
Если тебе нужна уникальность через набор полей то для этого делается индекс с ограничением на уникальность
553 2842756
>>42740
биндинги из кода нужны редко
когда пишешь что то этакое динамическое
Например динамическую таблицу где нужно больше чем тупо автосгенерить имена колонок.
554 2842780
Как в di добавить dbcontext, чтобы строка подключения бралась из настроек, лежащих а json?
555 2842823
>>42740
Биндятся в основном из View к свойствам ViewModel, которая расположена в DataContext. Большая часть данных должна браться оттуда, поэтому имена контролов в основном не нужны в MVVM. Не то, чтобы это запрещено, просто в этом нет смысла.

За редким исключением, когда речь идет о визуальной компоновке контролов, когда свойство одного контрола зависит от свойства другого.
Да и то, я сейчас замечаю, что таких случаев все меньше и меньше, потому что это решается либо ValueConverters, либо нормальной разметкой. Случаи типа "заблокировать кнопку, если в комбобоксе выбран такой-то итем" решаются собсно информацией из вьюмодели о выбранном итеме и конвертером. Нет смысла обращаться к состоянию самого комбобокса.

А вот в стилях очень часто дают имена контролам, чтобы различные триггеры могли обращаться к ним.

Так что, основная твоя работа заключается в том, чтобы передать вьюмодель в датаконтекст. А уже вью сама ищет то, что нужно по именам свойств вьюмодели. Делает она это вслепую в рантайме.
Т.е. когда ты пишешь
<TextBlock Text="{Binding Name}" />
Вьюшка лезет в объект датаконтекста и ищет у него свойство Name. Это свойство должно быть либо DependencyProperty либо INotifyPropertyChanged, иначе выскочит исключение или (что еще хуже) утечка памяти. Потому что такие свойства уведомляют о своем изменении — это важно при биндинге.

Так как все это вслепую, то для себя, на этапе дизайна, ты можешь указать тип датаконтекста, и это нужно чисто для подсказок IntelliSence:
d:DataContext="{d:DesignInstance Type=local:MyViewModel}"
Чтобы эту залупу каждый раз не запоминать, есть сниппет "ddc", что сокращенно от d:DataContext. Будет вставлена строка выше (ток свою вьюмодель вставляй).

Если биндиться из кода ко вью, то нужно ОЧЕНЬ хорошо понимать для чего это нужно. Потому что это не нужно практически никогда.
556 2842829
>>42780
Кури как работают настройки в ms di
Первый раз когда туда залез было очень даже интересно особенно как создаётся host и app конфигурации (спойлер вторая создаётся на основе того что удалось вытащить из первой).
Так же обрати внимание на провайдеры

https://learn.microsoft.com/en-us/dotnet/core/extensions/options
https://learn.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options
2023-09-1519-25-46.png10 Кб, 456x147
557 2842844
>>42823

>есть сниппет "ddc"


Я себе сделал еще "gcd" и "grd" - Grid.ColumnDefinitions и Grid.RowDefinitions,
Потому что писать это вручную каждый раз - это надо быть ебанутым мазохистом. Вроде есть дефолтный сниппет, но он не такой гибкий.

Вообще для MVVM советую максимально обмазаться сниппетами, если хотите сохранить самообладание и любовь к жизни. У меня есть:
nprp - создает расширенное свойство INotifyPropertyChanged
dprp - блок DependencyProperty
prp - просто расширенной свойство
onprp - блок OnPropertyChanged
dsp - блок Dispose
558 2842847
>>42823
Понял, благодарю за развернутый ответ. С меня нихуя, как обычно
559 2842870
>>42603
Бамп вопросом.
Хочу обратиться к статическому классу ResourceDictionary и видеть там свой метод Open().
560 2842872
>>42870
>>42603
Экстеншенов для статиков нет, только для инстансов.
По семантике у тебя первый аргумент это экземпляр
561 2843174
Анон, помоги разобраться с CRC. Есть две вроде бы одинаковые функции в приложении на С#, и на Си в коде STM32. При расчете CRC для массивов размером 1024 байт дают одинаковые результаты. Если размер отличается, то разные. Как мне получать одинаковые результаты во всех функциях?
562 2843308
>>43174
Переменные экономишь? Это невозможно дебажить, но ты похоже и сам это понял раз не запустил и то и то пошагово
563 2843402
>>43174
Ты рофлишь?
Ты же знаешь что такое CRC?
Короче. Не тупи. Прочитай про то что такое CRC и как оно вычиляется.
Таблица кстати тебе нахуй не уперлась. Вычислять можно без нее. Она нужна, когда тебе хочется БЫСТРО, но тогда ты ручками значения таблицы прописываешь.
image.png63 Кб, 662x754
564 2843408
>>43308
CRC и не нужно дебажить. Просто берешь и используешь. Один раз написал и пользуешься всю жизнь.
565 2843474
>>42844
Dispose кака во вьюмоделях
566 2843536
Почему GetAwaiter().GetResult() приводит к дедлоку, а обычный цикл, который проверяет taskcompletionsource нет?
567 2843577
>>43536
Потому что таски и потоки перпендикулярны
568 2843637
>>43474
Ну а что делать, если вью не всегда адекватно производит анбиндинг? Особенно это заметно с итемами каких нибудь списков.
У тебя объект продолжает биндиться, даже если он удален из списка.
569 2843647
>>43637
Дык это не про Dispose вьюмоделей.
Dispose вьюмоделей это про мессенджер и подписки на модель.
Проблема вызова Dispose приводит к weak мессенджеру с его "вьюмодели уже не нужно, а она сообщения принимает и реагирует", а с подписками к модели еще хуже

А биндинг обычно не проблема. У меня никогда это не было проблемой.
570 2843676
>>43647

>Дык это не про Dispose вьюмоделей.


>Dispose вьюмоделей это про мессенджер и подписки на модель.


Нихуя не понял. Диспоз это метод который очищает говно, мешающее экземпляру помереть. Не важно подписки или что-то еще.

>А биндинг обычно не проблема.


У другого анона та же беда была. Может это из-за попыток забиндиться итемом ко родительскому датаконтексту.

Есть такая проблема, что итему списка недоступен дата контекст родительского контрола. Итему доступен дата контекст ItemSource. В этом случае приходится биндиться по имени к элементу выше по иерархии и брать из него тот самый дата контекст.

Может быть из-за этого. Но факт в том, что удаляя итем из списка, я все равно получал события изменения свойств от ID удаленного итема. Из-за этого была утечка памяти.

Я решил это тем, что в событии Unloaded итема, обнулял все забинденные свойства. Просто я оформил это в метод Dispose.

Еще был случай, когда DataContext чудил, особенно когда объект там постоянно менялся, тоже приходилось выдумывать костыли, но подробностей сейчас не вспомню. Надо уже какой-то блокнотик себе завести, я на выяснение проблем не один день тратил.
571 2843778
>>43676

>Диспоз это метод который очищает говно


верно. но его кто-то должен вызывать. а с этим проблемы. Паттерн вызова очистки прост и понятен. Но вот кто все это вызывать будет? должна ли вьюмодель очищать все Disposable внутри себя? а вдруг не все можно?
в прошлых тредах обсуждали и выход из этого лайфтаймы, даже если сбоку (то есть не интеграция в фреймворк, а тупо сам решил использовать - берешь либу и вперед)

Если вьюмодель на что то подписывается или что то запускает, то она обязана получить ( через конструктор) токен своей жизни и использовать его для подписок и запусков.
А также для запусков того, что нельзя отменять. А код снаружи просто обязан озаботиться выдачей токена лайфтайма, а значит будет вынужден этот вопрос решить иначе просто не скомпилится. При таком подходе все не живет дольше нужного и все автоматически и правильно диспозится. Причем без лишнего.
572 2843807
>>43778

>Но вот кто все это вызывать будет?


Ну анон мне ИТТ говорил, что диспоз вызывается даже если ты проебал его вызов, просто это делается не сразу и по велению GC. Каковы критерии оценки, что файл нужно удалить — в данном случае непонятно.

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

>выход из этого лайфтаймы,


До лайфтаймов я еще не дорос (я так каждый раз пишу на протяжении 10 тредов, кек).
573 2843809
>>43807

>которОЕ тоже не всегда может быть вызванО

574 2843926
>>43807
GC ничего не знает про твой диспоз. И даже если знает, то придет он когда неизвестно.

>До лайфтаймов я еще не дорос


там ничего сложного. Это очень простая тема.
575 2844059
>>43807

>До лайфтаймов я еще не дорос


делаешь App начальный лайфтайм, его выдаешь главной вьюмодели, а далее каскадно раздаешь либо свой лайфтайм либо рождаешь дочерние

Все дочерние вьюмодели по дефолту без лайфтайма, то есть привычные тебе. Но если вьюмодель на что то подписывается или запускает, то ей нужен лайфтайм - добавляешь его в конструктор и у тебя перестает компилироваться. Идешь уровнем выше и у тебя 2 варианта

1 в текущем месте никто не управляет временем жизни дочерней модели. Значит просто добавляешь лайфтайм в конструктор текущей и идешь выше
2 в текущем месте управляется время жизни? что значит управляется? ну значит в обычном виде ты бы тут вызвал Dispose, а значит тут рождается дочерний лайфтайм, который ты и должен будешь дропнуть вместо диспоз.
Разница в том что в случае диспоза ты даже не в курсе что он нужен, а тут ты сразу видишь что нужно передать лайфтайм в конструктор и потому сразу на месте решаешь откуда его взять. И если ты не имбецил, то сразу подумаешь и про рождение и про терминацию.
потом добавляешь родительский лайфтайм в конструктор и идешь выше пока не дойдешь "а тут лайфтайм уже есть идти выше некуда"

Технически можно вообще всем раздавать лайфтаймы, но есть же и простые вьюмодели которые чисто для отображения.

лайфтайм он же и токен отмены. Представь ты запустил авайтное чтото из вьюмодели,а вьюмодели пришел Dispose
тебе нужно добавлять этот момент в Dispose (а Dispose может и вообще не быть по ошибке)

А так терминация лайфтайма каскадно отменяет все подписки и все канселлит.
Если у тебя все подписки принимают лайфтайм, то физически нельзя забыть диспознуть ибо тебя комплиятор заставляет решить этот вопрос (ну если ты не дурачок конечно)
576 2844669
Создал пустое чистое приложение UWP в Visual Studio 2022.
Добавил кнопку хелло ворд. Запустил и в релизе и в дебаге, всё работает.
Без вижуал студио сам экзешник не запускается, ни в дебаге, ни в релизе, в Просмотре событий пишет:

>Процесс был завершен из-за необработанного исключения.


>Имя сбойного приложения: TestApp1.exe, версия: 1.0.0.0, метка времени: 0x650600fc


>Имя сбойного модуля: KERNELBASE.dll, версия: 10.0.22621.2070, метка времени: 0xdf72c80b



Помогите.
577 2844685
>>44669

> Создал пустое чистое приложение UWP


Зачем? UWP же мёртв.
578 2844699
>>44685
Решил попробовать. Вообще захотел сделать модное молодежное приложение под виндовс 11.

А что тогда использовать? Снова виндовс формс? Они прям живы что ли? Разве они не устарели?
579 2844763
>>44699
WPF, вероятно

UWP это же универсальность шиндовс + шиндовс мобайл. Зачем тебе такое? Хочешь универсальности — юзай сырой MAUI.
580 2844764
>>44763

>WPF


Спасибо, попробую.
581 2844770
>>44764

>Вообще захотел сделать модное молодежное приложение под виндовс 11.


Кстати, виндоу формс визуально адаптируется к новому стилю интерфейса одиннадцатой оси, в силу свой специфики. А вот в впф стили контролов независимые, и тут плюс превратился в минус, ибо надо обновлять все дефолтные стили, а майкрософт не делала этого еще с восьмерки.

С впф ты не получишь молодежный стиль, придется либо самому поебстись, либо скачать где-то еще. Но у тебя есть возможность сделать свой собственный стиль, в отличии от вин формсов.
582 2844771
>>44764
>>44770
Есть еще winui, там стили обновлены до 11, но что это за зверь такой — не знаю.
2023-09-1701-17-27.png5 Кб, 470x140
583 2844775
c860b0149ad36f98681796e550b516ca.png60 Кб, 1040x720
584 2844777
585 2844778
>>44771
Я прост попробовал UWP, мне оче понравилась дефолтная копка и такая подстава. Ща пробую WPF, всё работает, но кнопка не оч. Я имел ввиду, что не хочу древний дизай виндовс хп, который в виндовс формс. Хм, не вижу winui, её надо как-то отдельно докачивать выбирать. Я понимаю, что можно сделать что угодно из чего угодно, но я хочу писать свои стили, я хочу кидать какие-нибудь элементы и чтобы всё готово в современном стиле было с ползунками настроек туда сюда.
586 2844780
>>44778
не хочу писать свои стили*
587 2844782
>>44777
Из твоего пика следует, что выбирать winui для винды и maui для мака, а остальное устарело.
588 2844786
>>44778
Так-то из коробки винформсы будут выдавать тебе стиль той версии операционной системы, на которой запущены. Для WPF полюбому можно где-то скачать стиль, я не чекал, я сам себе дизайнер.

>>44782
Еще есть авалония, но анон ИТТ жаловался на хреновый рендер шрифтов.
2023-09-1701-39-17.png77 Кб, 1274x476
589 2844792
590 2844795
>>44786
Смотрю на ютубе ролик, чел тоже не может найти этот винюи лол. Привязал ко времени.
https://youtu.be/bjR2dyEF7Y4?t=167

>>44792
Блять, хули winui по дефолту нет?
Без имени.png120 Кб, 1514x834
591 2844797
Фух, нашел. Но сам бы я и не заметил ни uwp, а уж мимо winui прошел бы тем более, спасибо, анончики.
592 2844798
593 2844801
>>44795

>Блять, хули winui по дефолту нет?


ВПФ - надежно, гибко, из коробки (кажется). winui не смотрел — посмотри, расскажешь нам.
594 2844802
>>44795

>Блять, хули winui по дефолту нет?


Чтобы всякая петшня не равлась от того, что студия весит 15Гб.
Все разбито на модули, даже библиотеки могут быть разбиты на десяток частей.
А ты сам подгружаешь то, что тебе нужно.
595 2844803
Воо, winui тор. У меня винда в темной теме и приложение по дефолту в темной теме и кнопка пиздатая темная. Я сходил в светлую - приложение стало светлым. То что я хотел в общем-то. Приложение подстраивается под дизайн винды. Просто по дефолту.

Блять, но оно как и UWP не работает, если запускать экзешник. А еще почему-то пока только WPF рабочий вариант... А еще почему-то не грузит дизайн, пишет что-то про докачку из нугета...
596 2844804
Ответьте серьезно, те кто тут постоянно про десктоп что-то спрашивает. Вы студенты или самоделкины?
Я просто реально не понимаю. Работаю на шарпе с 2014 года. Ни одного НЕ ЛЕГАСИ проекта под десктоп не видел ИРЛ. А то что легаси - это WinForms/WPF.
Типа если студенты, вот зачем вам сразу в легаси метить?
Если самоделкины, почему не делать на чем-то нормальном типа Qt?
597 2844805

>WinUI 3.0 no XAML designer view


Понял, нахуй. Технологии будущего еще не скоро. Короче пойду ка я в виндовс формс, там всё работает из коробки по дефолту и как надо. Ясно всё...
598 2844806
>>44792
Звучит как просто брюзжание деда

мимо вообще не пишу стэндалон гуй
599 2844807
>>44804
Даже если самоделкины то либо терминал либо жс+апи
600 2844808
>>44803

>А еще почему-то не грузит дизайн, пишет что-то про докачку из нугет


Зависимостей много. Докачай.
В WPF это можно сделать так: В обозревателе решений в проекте -> Зависимости -> Пакеты -> Обновить
601 2844810
>>44804

>Если самоделкины, почему не делать на чем-то нормальном типа Qt?


Чет не выдает ничего Qt + C#

>>44807

>то либо терминал либо жс+апи


Спасибо, идите нахуй.

В итоге все что я вижу для решения своей задачи — это выучить чуть ли не новый язык.
602 2844813
>>44810
Мир начал вращаться вокруг веба из-за простоты (хоть и с другими дебаффами, но это уже конкретные случаи) и рано или поздно ты встанешь в жс своей ногой.
Плохо? Хорошо? Да хуй его знает, обычный инструмент который решает задачи
603 2844814
>>44813

>вокруг веба из-за простоты


А помните был такой флеш? Люди там на изичах писали игры, видосики, программки. Очень мало весило. Очень высокое качество. И где теперь флеш?
604 2844819
>>44814
Сдох из-за того что был анально огорожен и был полон дыр которые решили не чинить
605 2844821
>>44813

>Мир начал вращаться вокруг веба из-за простоты


Ты чет начал пердеть про студентоту и самоделкиных, а сам нарушил базовый принцип вменяемости: задача -> инструмент под задачу.

Мне поебать на весь мир, если моя задача написать плагин для приложения с максимально схожим UI. Я не хочу ебстись с браузерной залупой, когда меня куча операций с файлами или требующие определенные права, которыми браузер не обладает даже во сне.

Веб-пораша не универсальна. Я не вкатун, я самодельщик — мне нужно добиться своих целей минимально возможными путями, потому что помимо этого всего у меня есть еще задачи.

>>44805

>WinUI 3.0 no XAML designer view


Я думал что это я ебусь в глаза. Что, реально? Тогда сидим на ВПФ и не дергаемся.
606 2844823
>>44813

>и рано или поздно ты встанешь в жс своей ногой


Я ее отгрызу.
607 2844830
>>44823
Ты кина пересмотрел. Как вступишь туда, так увязнешь, еще и кайфовать начнешь, пока тебя будут поглощать эти зыбучие пески.
608 2844834
>>44830
Не не
Не все поддаются гей пропаганде
609 2844837
как правильно глубоко скопировать структуру вида List<int[]>?
у меня сейчас:
List<int[]> copy = original.Select(x => x.ToArray()).ToList();
подводные камни?
610 2844838
>>44837
Хз, я бы не парился и просто бы создал новый пустой лист и заполнил бы его по циклу этими интами.
611 2844840
>>44837
Хз зачем тебе это надо но результат будет таким какой ты ожидаешь
612 2844841
>>44838
так и сделал изначально, но потом добавились еще две таких структуры(других), которые тоже надо копировать и длина у них будет не одинаковой, это простыня выйдет на пол-экрана
>>44840
ожидаю пачку новых массивов в новом листе которым от изменений объекта-донора ничего не будет...
613 2844845
>>44841

>ожидаю


Лист - это объект со ссылками на инты. Инты же, пусть и массивы, простые объекты, а не ссылки. Логично, что в новом листе тебе просто нужна ссылка не на тот же инт, а на его копию и всё. Копия инта делается просто. Инт - неизменяемая вещь. Меняя его ты создаешь новый объект, а не меняешь старый. Надеюсь не ошибся и не несу хуйню.

List<int[]> copy = new List<int[]>();
for (int i = 0; i < original.Count; i++)
{
int[] arr = original;
copy.Add(arr);
}
614 2844846
>>44841

>длина


И не понял какая разница какая там длина. В конце концов ты можешь использовать листы с разными типами данных просто с объектами, а не с конкретным одним определенной длины.
615 2844848
>>44845
несешь несешь. int неизменяемый, но не int[]
в шарпах нет frozen int[]
616 2844850
>>44763

> WPF, вероятно


Так и Wpf мертво, только при это почти во всем уступает uwp, так что смысла его использовать мало.
617 2844854
>>44804
Если ты не видел, это не значит, что их нет. Мы вот пилим различные приложения на xaml фреймворках для windows store. Но занятие довольно бесперспективное, и я хочу перекатиться в asp net.
>>44813

> Мир начал вращаться вокруг веба из-за простоты (хоть и с другими дебаффами, но это уже конкретные случаи) и рано или поздно ты встанешь в жс своей ногой.


Жиза к слову. По веб фреймворкам в миллион раз больше документации, ответов на любые вопросы и тд. Сделать на каком-нибудь реакте красивый интерфейс во много раз проще, чем на xaml, с его кучей костылей и нюансов.
>>44804

> Если самоделкины, почему не делать на чем-то нормальном типа Qt?


Ну толсто же. Гуи на шарпе писать куда приятнее, чем на qt срани, не говоря уже о том, что xaml выбирают те, кто знает шарп, зачем им ради гуи учить плюсы?
618 2844857
>>44850
в чем это "во всем". Наоборот, UWP выглядит как "кастрированный WPF"
619 2844859
>>44857
1. Uwp в разы быстрее wpf, в нем отсутствуют микролаги, которые в wpf являются неотъемлемой частью любой анимации.
2. Есть поддержка directx 11 и direct2d, можно спокойно хостить в окнах результат рендеринга. Wpf же застрял на directx 9, и чтобы работать с видеокартой напрямую придется использовать windowsformhost. А там нас ждет airspace problem.
3. Есть дополнительный визуальный слой, на котором можно рендерить графику в отдельном, не UI потоке, что дает дополнительный буст к производительности.
4. Uwp приложения из коробки выглядят нативно. В wpf тоже есть либы с контролами в стиле win 11, но это сторонние либы, с кучей багов.
5. Более совершенный xaml, есть x:bind компилированные биндинги лютая годнота, конвертация bool в visibility из коробки. хотя нет триггеров, что весьма печально

Минусов конечно тоже дохуя, кто спорит. авалония наше всё, хотя нативных стилей нет
620 2844860
>>44859

>Более совершенный xaml


не знаю в чем он совершенный. UWP xaml это продолжение Silverlight xaml (который по своей природе был "кастрированный WPF")
Да и ты следующим же предложением подтверждаешь его кастрированность.

UWP это доп ограничения. Прибито к MS Store (а без него это бубен)

Да он настолько лучше... что скорее мертв, чем еще жив.

Но мне норм. Пока мс занимается херней, я пишу на WPF и норм. Анимации мне не нужны, в остальном палки в колеса не ставит как другие.
Пересел бы на авалонию, но там еще менее нативно выглядит и шрифты шрифты жеж
621 2844912
>>44804
От предметной области/компании зависит. В инженерии WPF десктоп живее всех живых, новых проектов хватает.
622 2845427
>>41546
Ты бы ещё через javac собрать проект попытался и начал ныть, что тебе все само не положилось, имбецил.
623 2845432
>>41841
То же самое >>45427.

>двач-программач, почему у меня все автоматически не затягивается?


>потому что ты антом собираешь? Мавен возьми.

624 2845539
>>45427
Выше чел же говорил, что джава все сама...
Ну ок. Как мне проект 2006 года на анте перетащить на этот твой мавен?

Типа во просто в шарпе, допустим, я открываю древний проект, мне студия: О, это старый проект, давай я попробую его обновить до актуалочки. И в 70% случаев дальше ничего и делать не нужно. А тут - я чет начал пытаться разбираться, и нихуя не понял. То каких-то либ нет, то какие-то методы-классы-модули отсутствуют в современной джаве. Половина кода - красная. Нихрена не работает. Че делать - я не понимаю.
625 2845557
>>45539

>70% случаев


Ну вот и завали ебало.

Алсо, если ты не можешь прямо щас это собрать, значит проблема в проекте, а не в самом по себе факте легаси. Нормальные проекты на анте до сих пор собираются и будут собираться до конца времён.
626 2845560
>>45539
У тебя ант-то, хотя-бы, установлен?
627 2845576
>>45560
Ну должен быть.
Я же про то что это ант вообще знаю потому что идеей открыл проект, она сказала, о, это ант, давай скачаем все для запуска. Я сказал - качай.
Хотя коллеги говорили, что вроде все это дело писали в нетбинсе. Но я и нетбинсом пробовал открыть. Он ниче качать не предлагал, но тоже не собирал и не запускал.
628 2846040
>>45576
Идея анально вгрызается в работу систем сборок и делает так, чтобы без нее собрать было нельзя больше. Возможно это анальное вгрызание работает и в обратную сторону. Установи ант ручками и попробуй из консоли собрать.
629 2846236
>>44059

> Lifetimes


Тема очень интересная, давно хотел пощупать, но руки не доходили никак.
Есть примеры кода? Или может можешь показать что-то из своего?

мимо
630 2846239
>>38250
Давай. Мне хватит обычного http
631 2846247
>>46236
Два чая. Вроде как понимаю, но ничего не понимаю.
Нужен простенький демо-проект, но я боюсь набраться наглости попросить.
632 2846833
Какой надежный способ проверить что файл есть на диске? Столкнулся с тем что File.Exists пиздит что его нет, путь передаю абсолютный, тупо его коприю из дебаггера в тотал коммандер (на случай опечатки) и он существует.
633 2846853
>>46833
Может косые черты не в ту сторону?
634 2846878
Каким образом лучше всего защитить биндинги от переполнения стека? Допустим у меня есть свойство типа byte, а пользователь вводит число 300.

В голове возникло два способа:
1. Проверять на уровне свойства. Сделать свойство типа int, а дальше проверять в сеттере. Если value выходит за перделы диапазона от 0 до 255, то не присваивать значение.
2. Через конвертер значений.

Еще в других программах заметил, что помимо "красной рамки" текстбокса выскакивает месседжбокс с объяснением допустимого диапазона или формата ввода данных. Так вот, если это делать первым способом, то чет как-то опасненько получается. Особенно если это будет какой нибудь список на сотню итемов, условно говря, то я потенциально получу сотню месседжбоксов.

Склоняюсь ко второму способу, но может есть более элегантный, о котором я не знаю?
635 2846927
>>46878
Не делай свойства типа byte
636 2846942
>>46927
Не могу, ты что?

Вот тебе банальная ситуация. Допустим я меняю канал RGB-цвета, который в диапазоне от 0 до 255. Так или иначе мне это придется сделать огарничение. Вопрос в том, где это лучше сделать.
Стикер380 Кб, 512x512
637 2846945
638 2846966
>>46833
Проверять это в джаве.
639 2847289
А я тут в ступор встал. А почему в шарпе свич не хочет сравниваться с переменной? Почему только с константой?

В бейсике можно, как если бы это был if.
640 2847511
>>46236
>>46247
сделаю что нибудь
641 2847605
>>46236
>>46247
развлекайтесь.
там есть ридми и демка на костылях
но в общем то даст базу от чего отталкиваться в создании своих костылей.

https://dropmefiles.com/wOvUf
642 2847624
>>46236
>>46247

забыл в демке показать что будет если будет запущена какая то операция, но в общем то lifetime == CancellationToken, то есть первый кастится во второе и потому его можно использовать напрямую.
643 2847639
Как проверить формат введенных данных по паттерну?

К примеру я хочу проверить цвет aRGB\RGB в формате hex. И в зависимости от условий он может быть разным.

Вот четыре варианта:
- без альфаканала и без решетки: FFFFFF (пример пикрил1: фотошоп)
- без альфаканала и с решеткой: #FFFFFF (пример пикрил2: корел дро)
- с альфаканалом и решеткой: #FFFFFFFF (пример пикрил1: вижуал студия)
- с альфаканалом и без решетки: FFFFFFFF (примера нет, но логика понятна)

FF это любое hex значение от 00 до FF
В целом, из критериев валидности интересует наличие или отсутствие решетки в начале, и совпадение по количеству символов. Я могу это проверить сам if-ами и проверкой длины, но может быть есть варианты проверки реджексом или string.format, или еще чем-то?
644 2847649
>>47605
Добра тебе анон! Щас посмотрю! Спасибо за труд! Еще и в ридми расписал всё.
645 2847661
>>47639
Нашел реджекс

>^#[0-9a-fA-F]{6}



Как бы эту подсказку теперь высветить? В xaml не отображается xam-докуменатция к методам.
646 2847664
>>47661

>В xaml не отображается xam-докуменатция к методам.


Если что, я ValueConverter делаю. И паттерн првоерки хочу пихать через ConverterParameter.
647 2847779
Ребяты правильно ли я понимаю.
Вот я сделал приложение на asp net core mvc
И вот я хочу сменить дизайн сайта. Мне ведь нужно будет в исходникака менять код представлений.
А вот что бы сделать сайт с возможностью сменой дизайна это мне не надо использовать представления, а например html хранить в бд, делать запрос в бд, генерить страницу и потом в контролере ее возвращать?
648 2847846
>>47779

> html хранить в бд


это слишком пиздец чтобы такое делать, я не фронтендер но лично бы я просто получил какое то значение bool из модельки во view и потом на стороне странички через if или switch отразил нужный мне дизайн но я не знаю этот способ наверно тоже пиздец но хранить html в бд не лучше
649 2847857
>>47846
Но при таком подходе добавление нового дизайна будет возможно только в исходниках.
А нужно типо как в вордпресе, залил дизайн и сменил его.
650 2847858
>>47846
Ну или не в бд, а просто дизайн хранить в папке
651 2847861
>>47858
тогда просто создавай разные view под каждый дизайн и потом через контроллер возвращай нужную
652 2847866
>>47861
Да бля ну я же не могу знать какой дизайн у меня будет.
Вот на сей момент я имею генератор сайтов на 1 дизайне.
Вторую версию планирую сделать что бы можно было на лету добавлять новые дизайны, и вот думаю как это сделать.
Весь смысл задачи в том что бы не компилировать проект каждый раз когда нужно добавить новый дизайн а выставлять его в админке.
Например добавляю сайт site.com, заливаю для него дизайн и выбираю и он сразу подгружается.
Сейчас все добавленные сайты на одном дизайне работают.
653 2847869
>>47866
тогда да только через бд
654 2847874
>>47866
В WPF я вынес все ресурсы в файл. Правда максимум что я могу — это поменять в рантайме стиль контролов или цветовую схему. Но вот сама разметка с расположением контролов всегда будет одной.
655 2847886
>>47649
там еще есть тонкий момент в подписке (торопился, дышали в спину)

vm.Closed.Subscribe(_lifetime, OnTabClose);

Так то vm умрет и плевать на кого она ссылается, но с другой стороны она может навешать Action на лайфтайм (или добавил просто IDisposable) и все оно на нем повиснет до терминации (а у рутовой вюмодели это никогда и не будет)

Так что было бы правильнее

vm.Closed.Subscribe(lifetimeDef.Lifetime, OnTabClose);

с терминацией lifetimeDef при закрытии таба умрет и эта подписка

Такая же проблема (можно навесить Action, а это жесткая связь и мемори лик) есть и с CancellationToken и на этой бомбе подрывались (статья на хабре была) - решается также доп слоем с CancellationTokenSource

Так что, анон, передавая свой лайфтайм не забывай про эту тонкость "а что если кто навесит Action"
656 2848323
хочу вкатиться в шарп и начать зарабатывать, сколько времени нужно чтоб с нуля до джуна добраться? куда лучше подаваться чтобы быстрее (веб, десктоп и т.д.). Есть школьный, предвузовский уровень с/с++
657 2848342
>>47661

> В xaml не отображается xam-докуменатция к методам.


Но может отображаться в окне свойств.
[Bindable(true), Category("Новая Категория"), Description("Текст с описанием свойства", DisplayName("Отображаемое имя"))]
658 2848360
>>48323

>сколько времени нужно чтоб с нуля до джуна добраться?


>куда лучше подаваться чтобы быстрее


>начать зарабатывать



Я смотрю ты шаращий. Сначала купи 5 курсов от скиллбокса, 2 курса от гибрейнса, 1 курс от яндекс практикума. Выбор на свое усмотрение. Там на все вышеуказанные тобой вопросы ответят, а как только тебя заебет эта миллиард раз обсасываемая тема — возвращайся.
659 2848368
>>48342
кто вообще пользуется редактором свойств при написании хамла
только психи. Предпросмотр понятно, но задавать параметры через редактор свойств неудобно.
660 2848371
>>48360
а э, понятное дело что обучение займет год и больше при интенсивном темпе, вопрос лишь в том с чего начинать и куда стремиться.
661 2848412
>>47605

Спасибо, на выходных гляну.
Ты с призмой не работал? К ней не пытался всё это прикрутить с её регионами и новой системой диалоговых окон?
Что думаешь за современные MVVM фреймворки?
662 2848464
А как посмотреть сурс метода? Я кликаю по "Перейти к определению", то часто переходит к странице с подписью "из метаданных", хотя речь идет о достаточно стандартных библиотеках.

В редких случаях я получаю "SourceLink"
663 2848467
>>48368
В основном в случаях, когда обращаешься к неизвестному контролу и ты не знаешь какие свойства доступны и какие типы даннх они принимают.
+ менять цвет там легче, чем пытаться вписать hex-параметр.

В остальных случаях я тоже использую xaml напрямую.
664 2848475
>>48412
Вопрос по диалоговым окнам.

Вот тут возникла ситуация. Я делаю условный колорпикер, ну и подглядываю как это сделано в других редакторах, в том числе в фотошопе. А там, если ты в текстбокс ввел данные в неверном формате, то выскакивает месседжбокс с пояснением в каком диапазоне число является валидным.

У меня мессджбокс запускается в ValueConverter, чтобы не мусорить модель и вьюмодель. Но тут возникла проблема, что мой мессджбокс не запускается в модальном режиме или хотя бы TopMost. А чтобы это сделать, я должен передать мессджбоксу окно-owner, но это же сделать невозможно. Где ж я его достану и как передам?

Как вообще передается этот owner, особенно в случаях, когда нет прямого контакта между вьюшками? Одна вьюшка может быть в одном проекте, а другая в другом.
665 2848482
>>48371
Начинай с того, к чему лежит больше всего душа. Интерес — двигатель в обучении.
Надо начинать с фана, а потом задумываться о прибыли.
2023-09-2000-19-42.png13 Кб, 457x250
666 2848490
На мой взгляд идиотская ситуация с этими вашими INotifyPropertyChanged. Рассмотрим пример на пикрилейтед, который дается во всех туториалах.

Что происходит, когда я в текстбоксе, привязанном к свойству DoubleValue ввожу значение? В сеттер поступает это значение, КОТОРОЕ вызывает метод OnPropertyChanged() -> что вызывает событие изменения свойства -> которое провоцирует биндинг(ну или что там?) обратиться к геттеру и получить значение.

Собсно нахуя, если я только что ввел значение и оно УЖЕ есть в текстбоксе? Градус абсурда повышается, если я добавлю конвертер и вот тогда возникает сущий пиздец, потому что я трачу ресурсы ДВАЖДЫ на конвертацию:
1. Сначала string парсится в double
2. Затем double конвертируется в стринг

Чтобы в итоге получить то, что было введено. Пиздец.
И не надо мне говорить, что для double конвертер не нужен. Под капотом происходит та же хтонь. Речь в принципе про ситуацию в целом. Возьмите Color, где нужен конвертер и где конвертация между типами уже посложнее.
667 2848573
>>48412
Не работал. Смотрел, но не работал. Слишком все замудрили там. Может для каких то особых приложений это нужно. Я смотрел на разные фреймворки начиная от MVVMFoundation, всякие там MVVMCross, лайты, калибурн, призм и другие.
Везде свои плюсы и минусы, а хотелось бы только плюсы (перфекционизм же). При этом недостатки MVVM же еще -окна, мессенджер, weak, жирность вьюмоделей. Может кто-то пишет однооконки с анимациями, а мне нужно много окон, да еще и если в каждом свой мессаджбокс, не блокирующий все, так это хорошо. Ну еще и чтобы совместим был с авалонией

Потому я в свободное время писал для фана и успокоения мук перфекциониста разные самостоятельные фреймворки где собирал все отовсюду и пробовал разные альтернативные подходы И писал с этим прототипы для дела и для пробы "а если так" оценивая выгоду и плату за этот хак. Разные идеи типа
- мультиокна, где у каждого окна свой стек и вообще нет проблемы как у >>48475 (У меня специфические требования - мультиокна. Основное требование.)
Как итог - вьюмодель существует в каком то контексте, которое связывает ее с окном (не прямо конечно, все таки я сторонник MVVM и у меня вьюмодели ничего ни про вид, ни про диалоги, они работают с абстракциями)
- восстановление в нужное окно которое и так запущено, мы запускаем новую копию приложения, мьютексы то понятно, но нам нужно прыгнуть в нужное немодальное базовое окно
- А пусть не каждая вьюмодель держит свой стейт, а будет централизованный стейт (но все же не модель). У нас все равно контекст, можем себе позволить зашарить такое в графе вьюмоделей без последствий. А то не пойми какая вьюмодель работает с моделью, потом шлет сообщения не пойми куда. Что если у вьюмоделей будет общая структура, на которую они и будут подписаны и там и будет стейт. (самая спорная вещь)
- а что если все методы дергающие модель туда переедут (решение проблемы год обжект) и пусть вьюмодели и занимаются только своим прямом делом - держанием стейта для вида.
- проблема Dispose, проблема weak и вот там вошли лайфтаймы.
...

и тема лайфтаймов мне очень зашла. Даже не в рамках MVVM проектов, а вообще где есть проблема Dispose. Но началась она с MVVM где я заменил все и просто нельзя не передать лайфтайм, а значит нельзя забыть. И никаких вам weak

Это тестовый фреймворк для обкатки идей, написания прототипов и петов. И лайфтаймы себя там хорошо зарекомендовали.
Ну да, впихнуть в старый код сложновато. Проще переписать, что я потихоньку и делаю.

>Что думаешь за современные MVVM фреймворки?


Ну я видел что майки что то там родили с кодогенерацией. Решил попробовать
взял коммюнити тулкит от майков.
В общем то лайфтаймы сбоку там вполне зашли, но вот гадская кодогенерация (ctrl+click на свойство из хамл ведет в пустой сгенеренный файл, а не во вьюмодель) и конечно же диалоги
как у >>48475
я взял MVVM.Dialogs, но там нет контроля "забыл или не забыл ты зарегать в нужном месте", и потом у нас в async void вместо мессаджбокса с сообщением происходит ошибка, которая ломает все нахер, и делает это в редких ситуациях потом потом уже в продакшене - ну или я не умею его готовить. А окна мне нужны, а там опять вручную все это кодить.

так что Fody наше все, а без кодогена этот тулкит - кастрированный мввмлайт. ну и зачем?
667 2848573
>>48412
Не работал. Смотрел, но не работал. Слишком все замудрили там. Может для каких то особых приложений это нужно. Я смотрел на разные фреймворки начиная от MVVMFoundation, всякие там MVVMCross, лайты, калибурн, призм и другие.
Везде свои плюсы и минусы, а хотелось бы только плюсы (перфекционизм же). При этом недостатки MVVM же еще -окна, мессенджер, weak, жирность вьюмоделей. Может кто-то пишет однооконки с анимациями, а мне нужно много окон, да еще и если в каждом свой мессаджбокс, не блокирующий все, так это хорошо. Ну еще и чтобы совместим был с авалонией

Потому я в свободное время писал для фана и успокоения мук перфекциониста разные самостоятельные фреймворки где собирал все отовсюду и пробовал разные альтернативные подходы И писал с этим прототипы для дела и для пробы "а если так" оценивая выгоду и плату за этот хак. Разные идеи типа
- мультиокна, где у каждого окна свой стек и вообще нет проблемы как у >>48475 (У меня специфические требования - мультиокна. Основное требование.)
Как итог - вьюмодель существует в каком то контексте, которое связывает ее с окном (не прямо конечно, все таки я сторонник MVVM и у меня вьюмодели ничего ни про вид, ни про диалоги, они работают с абстракциями)
- восстановление в нужное окно которое и так запущено, мы запускаем новую копию приложения, мьютексы то понятно, но нам нужно прыгнуть в нужное немодальное базовое окно
- А пусть не каждая вьюмодель держит свой стейт, а будет централизованный стейт (но все же не модель). У нас все равно контекст, можем себе позволить зашарить такое в графе вьюмоделей без последствий. А то не пойми какая вьюмодель работает с моделью, потом шлет сообщения не пойми куда. Что если у вьюмоделей будет общая структура, на которую они и будут подписаны и там и будет стейт. (самая спорная вещь)
- а что если все методы дергающие модель туда переедут (решение проблемы год обжект) и пусть вьюмодели и занимаются только своим прямом делом - держанием стейта для вида.
- проблема Dispose, проблема weak и вот там вошли лайфтаймы.
...

и тема лайфтаймов мне очень зашла. Даже не в рамках MVVM проектов, а вообще где есть проблема Dispose. Но началась она с MVVM где я заменил все и просто нельзя не передать лайфтайм, а значит нельзя забыть. И никаких вам weak

Это тестовый фреймворк для обкатки идей, написания прототипов и петов. И лайфтаймы себя там хорошо зарекомендовали.
Ну да, впихнуть в старый код сложновато. Проще переписать, что я потихоньку и делаю.

>Что думаешь за современные MVVM фреймворки?


Ну я видел что майки что то там родили с кодогенерацией. Решил попробовать
взял коммюнити тулкит от майков.
В общем то лайфтаймы сбоку там вполне зашли, но вот гадская кодогенерация (ctrl+click на свойство из хамл ведет в пустой сгенеренный файл, а не во вьюмодель) и конечно же диалоги
как у >>48475
я взял MVVM.Dialogs, но там нет контроля "забыл или не забыл ты зарегать в нужном месте", и потом у нас в async void вместо мессаджбокса с сообщением происходит ошибка, которая ломает все нахер, и делает это в редких ситуациях потом потом уже в продакшене - ну или я не умею его готовить. А окна мне нужны, а там опять вручную все это кодить.

так что Fody наше все, а без кодогена этот тулкит - кастрированный мввмлайт. ну и зачем?
668 2848602
>>48475
Самое просто решение "без ничего" твоем случае создай во вьюмодели свойство Func<> и пусть вьюха ближайшая в лоадед или датаконтексчанжед заполнит это свойство (не забудь про очистку этого свойства если вьюха нестабильна

А далее вьюмодель дергает этот метод
А уже в нем вид и выводит окно и имеет оунера.
До окна можно добраться через GetWindow(this)
669 2848940
>>48602
Суть в том, что я не могу каким либо образом передать в ValueConverter ссылку на окно, либо на вьюмодель датаконтекста.

Конвертер определяется в ресурсах (пикрил 1)
Никакая привязка к энцестору оттуда не работает. Дата контекст недоступен.
Даже если мой конвертер наследует FrameworkElement (пикрил 2), никакой биндинг ни по имени, ни по типу не дает положительных результатов.

Ошибка:
System.Windows.Data Error: 4 :
Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Window', AncestorLevel='1''.
BindingExpression:(no path);
DataItem=null;
target element is 'ByteOverflowProtector' (Name='');
target property is 'Owner' (type 'Window')
670 2848954
>>48940
не хочу расчехлять студию поэтому если не ошибаюсь
пикрил 1 у тебя
DataContext как раз доступен, но именно DataContext
замени на ElementName=
ну потом доберись до окна

но начинать нужно с того что мессаджбоксы в конвертере вообще дичь
2023-09-2013-10-13.png51 Кб, 735x627
671 2848973
>>48954
Не работает. Я проверял.
Parent и DataContext пусты. Ошибка привязки выскакивает.

При этом вот тут https://stackoverflow.com/questions/16399010/proper-way-to-assign-and-work-with-wpf-datacontext-in-resources
чел делает ровно тоже самое, что и я (пикрил). Такое ощущение, что дело в том, что это конвертер и он как-то иначе запускается.

>но начинать нужно с того что мессаджбоксы в конвертере вообще дичь


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

Нет никакой прослойки между конвертером и вьюмоделью, которая бы взяла на себя эту работу.
672 2848991
>>48482
нет интереса ни к чему, просто работаю и живу, но мозг устал от рутины требует нагрузки да и работа получше нужна, решил совместить приятное с полезным
673 2848996
>>48973
не знаю что там у тебя.
вот https://pastebin.com/v4xNs4gM

но сам путь твой неправильный.
вьюмодель это держатель стейта. Вид обновляет стейт и если стейт нарушен то вьюмодель может просигнализировать об этом. Всякие там IError* или же просто тупо кинуть событие, которое вид отловит и покажет мессаджбокс

Дело конвертера лишь конверт данных.
2023-09-2013-34-55.png35 Кб, 838x223
674 2848998
675 2849012
>>48996
Вот объясни мне.
1. Вот есть ситуация когда какой нибудь метод дергает свойство модели сотни раз.
2. И есть ситуация, когда юзер при помощи текстбокса и биндинга дергает то же свойство.

Как это свойство не спутает второе с первым? Что будет, если я недостаточно хорошо отловлю баги, и ошибка неверных данных пойдет не в лог, а в ебало пользователю парадом месседжбкосов, которые он будет разгребать до второго пришествия Христа?

>или же просто тупо кинуть событие, которое вид отловит и покажет мессаджбокс


Событие чего? Что в сеттер пришло неверное значение? А откуда оно пришло?
676 2849025
>>48996

>Freezable


Ах да. Спасибо большое за код! Я очень тебе благодарен.
677 2849062
>>49012

>Как это свойство не спутает второе с первым?


оно и не путает. это одно и то же. кто то изменил свойство и вызвал INPC

>Событие чего?


что текущее состояние стейта (то есть то что в себе щас держит вьюмодель) является невалидным и нужно окном по морде пользователю дать с сообщением что не так. Каждое изменение чего либо должно вызывать валидатор, который отвалидирует и если че не так - событие, мессаджбокс

>А откуда оно пришло?


На самом деле это не имеет значение, ведь неверное свойство установленное из кода попадет на GUI через INPC.

конечно ты можешь менять бэкингфилд и вызывать INPC как тебе удобно, но лучше все таки держать стейт целостным.

Ну вот как ты пишешь ICollectionView из кода. Там же нужно рефреш делать. А для этого нужно подписаться на вьюмодель чтобы она сообщила когда рефреш делать.И вот она на каждое ее изменение сообщает "нужно делать рефреш". Все просто и сердито. Главное не забыть отписаться от события.
678 2849068
>>49025
кстати да, фризабле
и лично я не знаю когда в
CreateInstanceCore возвращать новый инстанс, а когда this
так что сам загугли этот момент
679 2849099
>>49062

>На самом деле это не имеет значение


Имеет значение. Я пытаюсь акцентировать на этом внимание. Допустим у меня свойство Byte в него пришло число 300, и допустим нам не важно откуда — все равно выскочит месседжбокс.

Расмотрим первую ситуацию. Вот если число вводит челвоек, то его скорость ввода настолько мала, что при вводе неправильного значения — тут же выскочит месседжбокс. Пользователь может его прочесть, поразмыслить и попробовать снова.

А вот ситуация номер два. Представим, что пользователь взял "пипетку" и ведет по цветовому градиенту, из-за чего за секунду идет обновление свойства десятки раз. И все это еще и в асинхронном режиме.
Вопрос касается безопасности, и если вдруг где-то случится баг расчетов и такой метод начнет спамить числом 300 сотни раз в свойство Byte, то в таком случае выскочит куча месседжбоксов подряд, которые я никак не смогу контролировать.
Начнется цирк с конями в виде ограничений по таймеру или еще какой хрени.

При этом ошибка неверного ввода со стороны кода — это ошибка, которая должна писаться в лог. А ошибка ввода пользователем не должна писаться в лог, а выводиться сообщением. Тут два принципиально разных действия в зависимости ОТКУДА пришли неверные данные.

Кроме того, этот груз мессджбокса будет вечно таскаться со вью моделью даже в те проекты, где эта возможность уже не нужна. Даже если я установлю какой нибудь регулирующий флаг - это просто мусор.

А вот конвертер эта та прослойка, которую можно всегда заменить. Где-то достаточно подсветки рамки, где-то нужен месседжбокс — все эти изменения никак не повлияют на внутринюю экосистему вьюмодели. Да, может слово "Конвертер" звучит не так, как применяется, но с точки зрения функционала я его воспринимаю как фильтр-прослойку между вью и вьюмоделью.

Я пока не увидел достаточных аргументов в пользу другого подхода.
680 2849135
>>48991

>нет интереса ни к чему


>решил совместить приятное с полезным


Стало быть приятное это работа, а полезное это кодинг? Придумай себе пет-проект.
Чужой опыт не даст тебе ничего.
681 2849149
>>49099
жуть какая то
ты не только мазохист, а и садист еще

какие еще мессаджбоксы.
если чел вводит значение, то при неверном оно должно обвестить красным или фон красным или значение красным, а поверх поля маленький попап похожий на тултип который подскажет что не так.

А второй ситуации "данные от пипетки говно" вообще быть не должно. Вилидируй их при чтении данных с пипетки и если че не так то уж ладно мессаджбокс "я бедный разрабо, мне скучно и я сделал ошибку напиши мне" и на выход.
682 2849188
>>49149

>какие еще мессаджбоксы.


В фотошопе так сделано (видеорил).

>а поверх поля маленький попап похожий на тултип который подскажет что не так.


Попап, гениальная мысль! Возможно я даже смогу его запихнуть прям в стиль текстбокса. Остается вопрос как туда передать внятное сообщение, но возможно я просто ретранслирую тултип.
683 2849209
>>49188
Загугли валидацию
Примеры с обводкой или фон и валидация на уровне вьюмодели
Там через триггеры как помню
И тот же триггер может сделать попап видимым пока ошибка активна
684 2849226
>>49209
Да смотрю. Оказывается есть ValidationRules, а я все это время проверял валидацию через конвертеры.
685 2849229
>>49226

>проверял


делал*
686 2849231
>>49226
ну там много чего есть разного. Наплодили уж. И народ даже либы поделал на эту тему. А я у себя бэкендом FluentValidation юзаю

а так для старта зырь сюда
https://metanit.com/sharp/wpf/14.php
bc5fbc797760c0ed8559ba30f9d75809.png1,4 Мб, 1600x1200
687 2849370
Хм.
Хм.
Прикрутить дебагер так и не смог к виму.
НО. Внезапно обнаружил, что дебажить можно с помощью тестов.
Теперь в общем так вот дебажу.
Лол. Кек.
688 2849407
>>49226
ну а если не разобрался то зырь сюда
https://dropmefiles.com/TbzL0
689 2849462
>>49407
Спасибо, разобрался. Я уже себе либу запилил под эти правила.
690 2849522
>>49407
Чертовы триггеры. Попапы висят пока текст не будет валидным.

А еще можно делать не INotifyDataErrorInfo, а через наследование ValidationRule — тогда можно эти валидаторы переиспользовать независимо от конкретной вьюмодели.

Немного не так компактно, как конвертеры, из-за того что ValidationRules принимает коллекцию. Но с другой стороны этих валидаторов можно напичкать сколько угодно.

Щас надо подумать, как бы показывать попап временно.
691 2849553
>>49522
Ну для начала загугли реализацию nontopmostpopup нормальную (их не одна)
А потом загугли
wpf popup move with window

Ну и никто не запрещает создать юзерконтрол где что угодно можно соорудить и всё это скомбинировать
692 2849578
>>49553
Ок, спасибо. Щас посмотрю.
693 2849622
А еще ты находишься в адорнер слое то есть попап не нужно
694 2849788
>>48323
Лучше в джаву. Шарп это легаси.
695 2849820
импортировал в проект либу, а у нее 1 в 1 те же экстеншоны что и в одной из других либ, но более старые.
в итоге у меня теперь The call is ambiguous between the following methods or properties
и я не могу их вытащить, мне нужны обе либы и экстеншонов этих просто дохуя и в одной из них они устарели.
как заставить студию игнорировать одну из либ в этих конкретных методах?
696 2849822
>>49820
разобрался, в референсах надо было алиас сделать. ну и дичь
697 2849873
>>49822
Да. В 23 году компилятор уж мог бы нормально использовать libastral.dll
698 2849948
>>48323
В Unity вкатывайся, сейчас самое время.
2023-09-2111-27-39.png8 Кб, 718x321
699 2849998
>>49622
Короче, я щас взглянул и везде нужно наследовать либо папап, либо адорнер, что подразумевает новый класс.

Это накладывает ограничения на мои внешние стили. Потому что надо таскать с собой дополнительные какие-то контролы и прочее. Пока остановился на пикрилейтед. Будет появляться предупреждающий значок, у которого свой собственный тултип с текстом ошибки.

Это, конечно тоже не дает размаха в разнообразии стилей. Надо что-то придумать. У меня стили находятся в отдельных xaml файлах и если они будут использовать какой-то кастомный класс, то его тоже надо как-то хранить в отдельной библиотеке, что ли.

>А еще ты находишься в адорнер слое то есть попап не нужно


Не совсем понял о чем ты. Почему я в нем нахожусь?
700 2850001
>>49948
Самое время для банкротства этой компании, ты хотел сказать?
701 2850010
>>49998

>Не совсем понял о чем ты. Почему я в нем нахожусь?


адорнер слой располагается поверх элементов. Собственно как и попап.
Находишься ты в нем ибо Validation.ErrorTemplate располагает этот шаблон в адорнер слое. То есть там можно убрать попап и выводить нужно и оно будет и поверх и таскаться с окном будет

Другое дело что попап разместить просто, а вот разобраться с компоновкой адорнер слоя вызывает реакцию "штаааааа"
702 2850042
любит же мс велосипедить

был Contract - похерили. Сделали тупо, ниасилили порт и сказали нинужно
Да так нинужно, что сделали
Microsoft.VisualStudio.Validation для студии
и
вот в communitytoolkit тоже свой Guard api

психи какие то.
bandicam 2023-09-21 13-48-36-466.mp4559 Кб, mp4,
608x488, 0:11
703 2850199
>>50010
Ради спортивного интереса таки сделал. По сути в стилях оформляется эррор-темплейт обычными средствами
<Setter Property="Validation.ErrorTemplate"> ... </Setter>
ничего мудреного там нет.

Но уже вижу, что такая подсказка будет блокировать вышерасположенный контрол. Так что вернусь к идее пикрила >>49998 , мне кажется это самый оптимальный вариант.
704 2850435
>>50199
ну и пусть блокирует. нечего вводить абы что.
Можно и автоисправить на граничное значение мигнув ошибкой ненадолго.
705 2850508
ОЙ, А КАК ЭТО ТАК? МНЕ ГОВОРИЛИ ПЕТУШАРП ОПЕНСОРС И ВООБЩЕ ЗА ШВАБОДУ

https://overclockers.ru/blog/Fantoci/show/108939/unity-nachnet-vzimat-platu-s-razrabotchikov-za-kazhduju-ustanovku-igry
706 2850522
>>50001
Не верь слухам, все там нормально.
Это наилучший сейчас способ вкатиться в шапр не проебав кучу времени зря. Очень много вакансий, а курсов еще больше.
707 2850547
>>50522
))))))))
708 2850549
>>50508
смотрите, упоротый жавист.
жависту то после финта оракла помалкивать в 2 дырочки

а если серьезно - то путать язык и конкретный коммерческий продукт...

Ты не поверишь, но буквы бесплатные, а вот книги почему то платные. Да что ж такое то.
709 2850554
>>50549
ВНИМАНИЕ! ДЖАВА ОТДЕЛИЛА КОММЕРЧЕСКИЙ ORACLE JDK ОТ OPEN JDK => ПЕТУШАРП ОПРАВДАН. ДЖАВИСТЫ ОПЯТЬ СОСНУЛЕ!
710 2850558
Не слушайте этого еретика. Вкатывайтесь в юнити. Петушарп свободный, только здые джависты меняют лицензии. Аминь.
711 2850563
Как же ебут шарпоскот, любо-дорого посмотреть!
bandicam 2023-09-21 18-15-59-489.mp4122 Кб, mp4,
696x488, 0:05
712 2850600
>>50435

>ну и пусть блокирует. нечего вводить абы что.


Да не. Сам иногда копирую валидное значение из соседнего контрола.

>Можно и автоисправить на граничное значение мигнув ошибкой ненадолго.


Типа через анимации? Надо еще посмотреть, они не со всеми свойствами работают. Не, идея хорошая, только ей надо найти применение, например для всяких длинных строк, где предупреждающего значка приходится тянуться.
713 2850603
>>50508
А при чем тут шарп? Или ты мем "программируйте на юнити" воспринял буквально?
714 2850627
>>50554
А юнити типа не коммерческий? Или что ты хотел сказать, но пропукал по жавовски?
715 2850645
>>50600
Да почему анимации
Тот же тултип хотя бы
716 2850764
>>50627
Но ведь петушарп это швабодка... Что-то не сходится.
717 2850765
>>50603
ПРОГРАММИРУЙТЕ НА ПЕТУШАРПЕ, ОН ОПЕНСОРСНЫЙ!
@
ОПЕНСОРСНАЯ ТОЛЬКО КОНСТРУКЦИЯ USING
718 2850787
>>50765
сказал жавадебич написав это в проприетарном браузере, который написан на опенсорсном с++

дебич, что с него взять.
719 2850826
>>50787
В очередной раз убеждаюсь что у петушарпомакак всё на самом деле очень, очень плохо с логикой. Причём нахуй тут мой браузер? Причём нахуй язык, на котором он написан?
720 2850840
>>50826
поясню сразу после того как ты пояснишь причем тут на каком языке написан коммерческий продукт Unity
721 2850857
>>50840
При том, что без хуюнити петушарп ещё менее нужен, чем нужен был. Раньше хотя бы можно было вилять жопой, что геймдев только на петушарпе, а щас жопой вилять можно только на хуе хитрых жидов из юнити по 20 центов за виляние.
722 2850866
>>50857
то есть ты хочешь сказать что шарп обеспечил БЕШЕНУЮ популярность юнити, что теперь вот такая катастрофа? а да шарп, ай да молодец.
723 2850873
>>50866
Что ты высрал?
724 2850883
>>50873
ну если поднялся такой шум из за юнити
значит юнити популярен
а юнити на шарпе
вот так вот.

то есть шарп сделал юнити популярным, а непопулярным юнити делает жадность, а не шарп.
725 2850918
>>50883
Что ты блядь продолжаешь высирать, шизоид?
726 2850923
>>50918
правду. Неприятно, жабоид?
727 2850928
>>50923
Какую правду? Это шизофазия.
728 2850937
>>50928
правду что пора тебе перекатывать тред
мы тут для чего тебя держим?
ты местный клоун дурачок и перекатыватель треда.
729 2850978
>>50937
Нет, правда в том, что шарпоскот опять выебали, а в треде неизменно стоит извечна перемога.
730 2851026
>>50978
ты хотел сказать нагнули скотыняк который дотнатные помойки под мобилы лепят?
731 2851039
>>51026
Извечна перемога.
image.png40 Кб, 824x387
732 2851175
Объясните, как мне сделать асинхронную программулину, но чтобы не плодились потоки?

На прикриплейде буквально весь мой код. И если я хреначу 10к подключений - потоки плодятся как не в себя, а мне - не надо.

И что я хочу в плане асинхронности.

А хочу чтобы у меня было примерно так:

Когда я пишу await - вся моя фигня не непонятную магию творит, а просто условно говорит рантайму - вот есть переменные, схорони их куда-то и передай другому управление, когда я тут пока потуплю. Рантайм говорит: "Понял, принял", сохраняет переменные, оборачивает этот вызов в какой-то Promise устанавливает ему статус Pending, и потом перебирает другие такие вот "промисы", пока какой-то не скажет - все, я потупил достаточно, го дальше, ну или не пукнет, что у него что-то там сломалось, тогда рантайм берет и разворачивает тот промис что готов для обработки и начинает с ним чет делать.

Вот этого я хочу. Почему? Потому что такое поведение - не содержит для меня магии. Но вот как добиться такого в шарпе - я ХЗ.
733 2851194
>>51175
Желаемое тобой поведение и является дефолтным в шарпе (и других языках где есть await)
Чтобы рождались сотни потоков - еще нужно постараться
734 2851196
>>51039
А а чем проблема
Пишут игры или не пишут - никак не влияет на обычных шарпистов
Это совсем другой мир
735 2851207
>>51194

100к+ подключенных устройств - потоки плодятся как не в себя.

Ну и про дефолтность поведения. Я под капот особо не лез, но судя по дебагеру и проффилировщику. Пока нагрузка невысокая - да, используется условно 4 потока из тредпула и все ок. Но вот резкий скачок(допустим разом подключилось 50к устройств разом) - все, началась содомия. Память куда-то в небо улетела, потоки начали плодиться, процессор все ядра на 100%, гроб-кладбище, буковки по экрану бегают, логгер сходим с ума. Короче да.
736 2851214
А есть тут аноны, которые прошли какие-нибудь курсы от известных инфоцыган и остался доволен? Да, знаю репутация у них такая себе, как и отзывы. Поэтому спрашиваю только про положительный фидбек.
Я вот изучил основы шарпа, зачем-то написал программку на wpf(получилось намного больше и сложнее чем я изначально предполагал). И мне самостоятельно изучать как-то сложно, много возникает вопросов, да и оценку сделанного тоже неплохо было бы получать. Вот поэтому подумал, мб на курс какой записаться.
737 2851224
>>51207
Не путай коннекты с потоками
100к коннектов само собой занимают память. Одних буферов вон сколько.
Но перемалываться все это будет в пулеь где пул занят - все ждут.
Также следует отличать потоки из пула и i/o потоки из того же пула.
Ну и таски от потоков отличать. Триллион тасков можно и в 1 потоке иметь
738 2851229
А какова хрена?
Я вижу, что System.Math это public partial класс (пикрил 1)
Так почему же если я создаю в том же неймспейсе public partial calss Math, то мне пишет:

Ошибка CS0101 Пространство имен "System" уже содержит определение для "Math".
739 2851230
>>51214
В целом ITVDN были норм по шарпу.
Но я, как любой уважающий себя человек - воровал их. Сейчас бы купил думаю, хоть они и заменятся чтением книжек.
740 2851233
>>51214
Кто хочет - ищет как научиться
Кто не хочет - кто бы научил

Первая категория всегда довольна ибо поиск знаний
А вторая... Для них курсы и существуют. Толку для них ноль, но у них "курс плохой"

Хотя и для первых "курс плохой" ибо либо и так знаешь, а другое "недостаточно раскрыто"

Потому самоуч самый продуктивный.

Ну и наставник конечно. Которого можно спросить и он подскажет куда копать.
741 2851238
>>51233
Ну. Блин.
Все же не стоит во такую вот фигню говорить.

Вот я помню, первый курс. Спиздил из магазина книгу по Qt. Я же себя уважаю, платить 1800р за книгу - пошли нахуй. Ну. Спиздил. Сижу. Читаю. Нихуя не понимаю.
Потом - спиздил книгу по шарпу. Как раз CLR via С#. Читаю. Какие-то блядь, модули, хуедули. Какие-то заголовки. Какая-то общая языковая среда. Пиздец короче.
А потом - я нашел метанит. И почитал, весело поделал что там написано. Постепенно - какие-то там понимания, хуе-мое, сверху в вузе - на ассемблере-плюсах.
Потом - спиздил курс ITVDN.
И вот теперь я снова открыл книжку по QT - и все еще нихуя, блядь, непонятно. Какие-то сука, контейнеры, сигналы, блядь, этот еще долбоебский плюсовый синтсксис, который сверху тем что в нокле напридумывали помазан. Фу, блядь. Фу, нахуй.
742 2851241
>>51229
Почему нет способа слияния неймспейсов? Как же заебало.
Почему я не могу обращаться к Math и получить методы из System.Math и собственные методы Extended.Math из одной кубышки, так сказать?

Нет у меня внутри конфликтных методов, так чего же ты трясешься, студия?
743 2851243
>>51241
using static System.Math;
using static Extended.Math;
744 2851259
>>51238
То есть ты искал инфу для обучения - и ты её нашел.
А не "кто бы научил, вот этого учителя хвалят"
Так что всё верно
745 2851260
>>51039
перекати уже тред
я даже буду тебя из-за этого реже в гавно макать.
746 2851286
>>2851279 (OP)
>>2851279 (OP)
>>2851279 (OP)

Криво перекатил из-за куклы

Можно как-то модератора попросить поменять тему?

Ну или пусть удолит кривой тред?
747 2851288
И еще
Где остальной список литературы? Раньше после ОП-поста шел но я бака не схоронил.
748 2851300
Нормально перекатил

>>2851295 (OP)
>>2851295 (OP)
>>2851295 (OP)
749 2884401
>>08819 (OP)
Какую бесплатную либу сейчас принято юзать для работы с вордом/экселем. Ворд для генерации таблиц, эксель тоже + простые формулы между колонками.
Тред утонул или удален.
Это копия, сохраненная 10 ноября 2023 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски