Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 500 94 102
C# thread #46 /csharp/ Аноним 24/02/23 Птн 22:06:13 2621949 1
image 135Кб, 750x422
750x422
image 249Кб, 960x720
960x720
image 57Кб, 700x1114
700x1114
image 124Кб, 250x250
250x250
1. Ресурсы:
https://dotnet.microsoft.com/learn
https://ru.stackoverflow.com/a/416585/422180
https://metanit.com
https://professorweb.ru

2. С# для веб
https://docs.microsoft.com/ru-ru/aspnet/core

3. C# для десктопа
https://docs.microsoft.com/ru-ru/dotnet/desktop

4. С# для игр
https://ru.stackoverflow.com/a/609901/422180

5. С# для мобильной разработки
https://docs.microsoft.com/ru-ru/dotnet/maui

6. Годные ютуб-каналы
https://www.youtube.com/c/CODEBLOG
https://www.youtube.com/c/AndreyShyrokoriadov
https://www.youtube.com/c/DevJungles
https://www.youtube.com/user/Shmachilin

Шапка: https://pastebin.com/HT7Hi6FD
Прошлый тред: >>2601326 (OP)
Аноним 24/02/23 Птн 22:10:19 2621960 2
1677065411727363.png 116Кб, 1024x1024
1024x1024
>>2621949 (OP)
Смысл этого тредиса? Никто не использует дотнет. Все новые цифровые проекты пишутся на джавовском спринг буте или голанге. К заводчанам, пишущим системы автоматизации под виндовсы, вопросов нет
Аноним 24/02/23 Птн 22:10:40 2621961 3
Давайте обсудим невозможность мультивыбора в TreeView.
Аноним 24/02/23 Птн 22:11:48 2621964 4
>>2621960
Мы пишем системы автоматизации под виндовсы на заводе. Свободен, листай ленту дальше.
Аноним 24/02/23 Птн 22:13:22 2621966 5
image.png 960Кб, 1280x980
1280x980
image.png 575Кб, 717x742
717x742
Аноним 24/02/23 Птн 22:18:42 2621975 6
>>2621961
Что мешает тебе сделать тривью с мультивыбором?
Аноним 24/02/23 Птн 22:23:52 2621980 7
Аноним 24/02/23 Птн 22:37:28 2621994 8
>>2621975
Это такая ебля, шо пиздец.
Мимо другой анонон.
Аноним 24/02/23 Птн 22:44:51 2622002 9
Кто нибудь сталкивался с тем, что ньютоновский джейсон сериализатор проебывает последнюю закрывающую скобку? В основном на более-менее комплексных классах.
Аноним 24/02/23 Птн 22:54:23 2622009 10
>>2622002
Не может быть. Есть код, который воспроизводит этот баг?
Аноним 24/02/23 Птн 23:08:47 2622017 11
.png 6Кб, 802x482
802x482
.png 219Кб, 1327x842
1327x842
>>2621980
Ну. Попробовал. Наколеночное решение за 5минут. Думаю если именно задача стоит такая - можно сделать нормально для твоих целей.
Аноним 24/02/23 Птн 23:26:43 2622036 12
>>2622017
Спасибо, наконец-то кто-то нашёл решение, и тему можно закрывать.
Аноним 24/02/23 Птн 23:27:58 2622037 13
>>2622017
Да. Немного пролюбился. Во-первых, event надо было к хендлеру добавить, а то я смотрю, в редакторе чет нет события. Ну и по хорошему - чуть сложнее обработку всего этого дела, типа не просто тупа менять селект при клике по ноде, а проверять, на плюсик клацнули или на саму ноду, вот это вот все, по хорошему - там еще допилить шифты всякие, более сложное поведение.
Но я просто про то, что вроде как сказали "Попробуй", будто это какая-то невыполнимая магия или даже если выполнимая, то придется ебаться со всякими winapi и прочим добром. Типа сделать, если задача такая - думаю можно часа за 4 со всем-всем че надо.
Аноним 25/02/23 Суб 00:07:16 2622063 14
image 2731Кб, 2560x1440
2560x1440
image 2673Кб, 2560x1440
2560x1440
Хочу сделать бандлы, как в Фортнайт. Но не могу понять, как они рассчитывают общую стоимость бандла. Сначала думал, что они просто умножают общую стоимость всех предметов на какое-то конкретное число. Но когда я купил 1 предмет из бандла, стоимость посчиталась уже иначе. Есть идеи, что там за формула может быть? Может там есть ещё некий "вес" у каждого предмета в зависимости от его стоимости.
Аноним 25/02/23 Суб 00:09:48 2622065 15
Как некоторые инсталляторы определяют установленное приложение и все его версии? К примеру у пользователя установлена вижуал студия 2019, 2015 и 2010, и инсталлятор детектит и выводит этот список.
Аноним 25/02/23 Суб 00:21:09 2622070 16
>>2622063
По формуле NE_LOH.
Ну и пытаться анализировать перечеркнутый ценник, это конечно сильно.

Маппинг диапазона пробовал? Хз как это называется по научному, но во всех графических программах популярна функция приведения одного диапазона к другому и называется что-то вроде Map by Range.
Аноним 25/02/23 Суб 00:29:52 2622076 17
>>2622070
Не, простой маппинг возвратит 2769.
Купи еще один предмет. Нам нужна статистика.
Аноним 25/02/23 Суб 00:31:14 2622079 18
Хм. Вдруг вы знаете.
Куда делся этот чел https://github.com/zeul72
У него были видосики на ютубе и они были прям оффигенные. Типа мне - сильно помогли те что по сокетам были. Хотел посмотреть че у него нового, но даже старое найти не могу.
Может быть вы в курсе.
Просто это был единственный чел по сокетам, кто относительно нормальный пример привел, подача тоже вроде была норм. Да и код у него прикольный.
Аноним 25/02/23 Суб 00:32:42 2622081 19
>>2622065
Много способов, можно в реестре поискать, можно сделать запрос к WMI по MSFT_VSInstance, можно запустить C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe, можно тупо обойти все диски в поисках папки с Visual Studio в Program Files.
благодаря твоему вопросу, я узнал из гугла много нового
Аноним 25/02/23 Суб 00:52:12 2622103 20
>>2622081
Дык перебором это понятно. Я думал есть для этого какая-то специальная штука, которая выводит связи, мб по лицензии. Вижуал студия — это лишь условный пример. Потому что бывает такой бардак, что программа например повышается по примеру 1, 2, 3, а потом вдруг начинает привязывать версию к году 2010, 2011, а потом и вовсе дает имена вроде Windows Vista.

>Реестр
Непредсказуем. У меня две версии приложения, и только одна прописана в реестре.

>MSFT_VSInstance
Это специально для вижлы

>vswhere.exe
Это тоже.

Остается тупо перебор жестких дисков. Но это же пиздец, оно может быть установлено где угодно и не факт что в Program Files. При этом некоторые плагины определяют вмиг все релизы приложения.
Аноним 25/02/23 Суб 01:05:25 2622108 21
>>2622103
>Реестр
>Непредсказуем. У меня две версии приложения, и только одна прописана в реестре.

Епт, забыл что у приложения сменился владелец и теперь лежит в другом месте. Есть оба в реестре. Наверно этот вариант будет самый нормальный.
Аноним 25/02/23 Суб 01:07:15 2622110 22
>>2622103
Не может существовать такой штуки. Пользователь, к примеру, мог тупо распаковать архив с нужной ему программой в удобном месте, и как волшебная штука должна её найти, кроме полного обхода всех дисков?
Для каждой программы надо писать свой локатор и юзать аналогичные вижуалстудии способы, или хотя бы предположить, что большинство пользователей не меняет дефолтный путь установки в Program Files, показывать список оттуда, а если ничего нет, предлагать пользователю самому указать путь.
Аноним 25/02/23 Суб 01:08:13 2622112 23
image 2951Кб, 2560x1440
2560x1440
>>2622076
> Купи еще один предмет. Нам нужна статистика.
Купил ещё предмет за 1200.
Аноним 25/02/23 Суб 01:14:19 2622114 24
image 15Кб, 693x254
693x254
>>2622076
Вообще, я смог получить 2500 и 1300. Но это какая-то бессмыслица. А если я куплю ещё предмет за 2к, тогда стоимость в минус уйдёт что ли блять.
Аноним 25/02/23 Суб 01:15:29 2622115 25
>>2622112
Яж пошутил, кек.

Этож классика.
В любой непонятной ситуации делим меньшее число на большее и получаем множитель.
3000 \ 6500 = 0,46
2500 \ 6000 = 0,41
Так пропорции например определют. Далее нам интересно а какое соотношение купленной тобой хуйнюшки к изначальнйо цене
500 \ 6500 = 0,07

И какую связь мы видимс?
0,46 - 0,41 = ~0,07
Аноним 25/02/23 Суб 01:27:24 2622124 26
2023-02-2501-27[...].png 5Кб, 538x209
538x209
>>2622112
В сообщении присутсвует слово из спам листа
Аноним 25/02/23 Суб 01:33:18 2622128 27
>>2622124
Ты или наркоман, или гений. Пока не пойму твои письмена. Походу придётся завтра купить ещё один предмет, за 2к в этот раз.
Аноним 25/02/23 Суб 01:34:06 2622129 28
>>2622112
>>2622114
Есть еще типа ... видел же алгоритм. Типа ты диапазон можешь регулировать при помощи кривой. Такой херней обычно пользуются при сглаживании ключей анимации.

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

Ща найду.
Аноним 25/02/23 Суб 01:35:08 2622131 29
>>2622128
Скорее опечатался, лол. В третьей строке не 0,42
Аноним 25/02/23 Суб 01:45:49 2622136 30
Аноним 25/02/23 Суб 02:01:12 2622141 31
2023-02-2501-59[...].png 320Кб, 1179x599
1179x599
>>2622114
>тогда стоимость в минус уйдёт что ли блять.
Ну так ты покупаешь по дефолной стоимости, поэтому в этом случае ты да, технически уйдешь в минус.

Вангую счетчик достигнет нуля и для тебя "выгодное предложение" закончится, либо чем ближе к нулю, тем меньше скорость падения цены, как на видеорил >>2622136
Аноним 25/02/23 Суб 03:40:32 2622147 32
2023-02-2503-39[...].png 14Кб, 657x343
657x343
Аноним 25/02/23 Суб 05:30:27 2622157 33
>>2621949 (OP)
Откуда пошла рекомендация делать мок зависимости, код которой ты не контролируешь? В чем ценность таких тестов? Это словно пальцем в небо, где ты гадаешь как бы ответила система, хотя на самом деле не знаешь. Я еще понимаю мок какой-нибудь библиотеки или простенькой хуитки, которая дает API и у нее мокают клиент. Но несколько раз видел, когда мокали клиент для огромной ебы, где дернув ручку создается целая гирлянда всевозможных объектов и состояние системы меняется, что простыми моками это либо не описать, либо займет весь день на один тест.
Аноним 25/02/23 Суб 06:07:16 2622163 34
>>2622157
Прикольно ты спросил в тредах про джаву и шарп одновременно.
Тесты бывают модульными и интеграционными. В модульных ты проверяешь работоспособность одного конкретного модуля, который должен корректно работать, если все используемые в нём модули также корректно работают, и их работоспособность ты проверяешь модульными тестами уже для них. Ну и в интеграционных проверяешь, как модули работают вместе. Что может быть проще?
Аноним 25/02/23 Суб 06:30:54 2622169 35
>>2622163
Модульный на то и модульный, что зависимости обычно представляют твой собственный код, который ты знаешь как работает и можешь закрыть качественными моками, чтобы тестировать в изоляции один класс, например. В случае интеграционных ты сталкиваешься с ситуацией, когда ты интегрируешься с какой-нибудь сторонней хуетой к которой у тебя есть библиотека для доступа к API, но мокать ее ответы не имеет смысла, т.к. ценность таких тестов околонулевая и ты не сможешь предугадать правильные ответы во всех случаях
Аноним 25/02/23 Суб 06:55:28 2622173 36
>>2622169
Что значит не можешь преугадать? Ты тестируешь генератор случайных чисел что ли? Или всё-таки задокументированную функциональность с чётким и однозначным поведением? Вот эта "сторонняя хуета" звучит так, будто она невесть откуда взялась в проекте и никто не знает, что это и зачем. Хотя в реальности никогда так не бывает, по крайней мере, не так часто, чтобы категорично заявлять о полной бесполезности любых моков.
Аноним 25/02/23 Суб 07:02:37 2622175 37
>>2622173
Просто читай Фаулера - он все расписал про моки. Моки в тестах - горе на проекте
Аноним 25/02/23 Суб 09:08:39 2622196 38
>>2622175
>Просто читай Фаулера
Как же я проиграл. Этот старый теоретик на полном серьезе пишет юнит-тест на рест-контроллер где он мокает репозиторий блядь, и тестирует ручку, лол.
Аноним 25/02/23 Суб 09:55:18 2622237 39
Если сделать как говорит ItsOK(первый коммент), то валидация будет происходить при каждом создании объекта, например, при выгрузке из файла, так ведь? То есть получается, лучше делать через свич?
https://metanit.com/sharp/wpf/14.php
Аноним 25/02/23 Суб 10:11:33 2622257 40
>>2622141
Короче, я выяснил. Нет там никакой формулы нахуй. Они тупа отнимают стоимость купленных предметов из общей стоимости. При этом они считают минимальную стоимость bundle так: берут предмет с наименьшей редкостью и на основе этого задают стоимость. Мин. стоимость получается от 100 до 500. Редкость это просто формальность, типа: Легендарный Автомат или Эпический Автомат.
Аноним 25/02/23 Суб 12:53:00 2622353 41
Есть ли какой-то штатный эквалити компарер для массовов или в общем случае спанов.
Вот допустим я хочу сделать словарь, в котором ключом будет массив интов. Но они должны сравниваться по значению всех элементов (их будет мало в моём случае).
Есть ли что-то штатное или самому пилить?
Аноним 25/02/23 Суб 15:07:41 2622464 42
изображение.png 22Кб, 652x151
652x151
Кто-нибудь в курсе, как убрать этот пунктир? Глаза очень режет. VS 2022
Аноним 25/02/23 Суб 16:53:03 2622577 43
>>2621960
>Смысл этого тредиса? Никто не использует дотнет
это тред для обсуждения перекатов. ну и немного в него спамят под дотнету - но это прохожие что не в теме сути треда.
Аноним 25/02/23 Суб 16:59:30 2622582 44
Image 1.png 45Кб, 1019x668
1019x668
Аноним 25/02/23 Суб 17:30:40 2622614 45
Аноним 25/02/23 Суб 19:32:40 2622730 46
Как привести словарь или список абстрактного типа к строгому типу?
Это надо перебирать все итемы?
Аноним 25/02/23 Суб 19:45:55 2622747 47
>>2622730
ну а как иначе. LINQ Cast<>/OfType<>
Аноним 25/02/23 Суб 19:49:42 2622752 48
Оказывается Lunacy написана на авалонии, я и не знал. Похоже действительно достойный фреймворк.
Аноним 25/02/23 Суб 20:19:38 2622791 49
>>2622752
На гитхабе звёздочек примерно как у MAUI и больше, чем у WPF. Можно смело юзать в проде.
Аноним 25/02/23 Суб 20:34:00 2622811 50
А еще в авалонии нормально реализованы стили, как в css, с селекторами.
Аноним 25/02/23 Суб 20:41:53 2622821 51
Юзаю винформы, брат жив.
Аноним 25/02/23 Суб 20:43:16 2622823 52
>>2622811
но никогда не будут нормальными шрифты, увы
Аноним 26/02/23 Вск 00:53:05 2622999 53
изображение.png 33Кб, 362x565
362x565
Доброго времени суток. Вопрос адекватно сформулировать не могу, но постараюсь объяснить проблему. Есть метод, который принимает запросы от телеграма, обрабатывает его и отдаёт обратно. Проблема в том, что когда я нажимаю на кнопку в одном телегам-пользователе изменения отображаются в другом. На первом скрине чекбоксы, при нажатии на какой-либо из них изменения отображаются сразу у всех. Собственно говоря, что тут нужно придумать? Нужна какая-то очередь, но я не в курсе как её сделать. Пытался сделать словарь, где ключ-id чата - идея говно, не работает.
Аноним 26/02/23 Вск 00:58:11 2623001 54
Аноним 26/02/23 Вск 01:50:50 2623020 55
>>2622999
ты же понимаешь что никто ничего не понял из твоего пояснения?
какой то поток слов понятный только автору.
Аноним 26/02/23 Вск 03:26:14 2623041 56
Почему шарп такое говно?
Аноним 26/02/23 Вск 03:29:23 2623042 57
>>2623041
потому что слизан с жавы, которая мегаговно
если бы создавался как котлин, то было бы шикарно
Аноним 26/02/23 Вск 10:29:51 2623142 58
>>2623042
Вот только Котлин безыдейное мертворожденное дерьмо, слизанное с сишарпа года 2012, так что насчет шикарно это орево
Аноним 26/02/23 Вск 12:51:05 2623263 59
да бля чо этот ебаный випифи такой хуевый я ебал
такое ощущение что его специально придумали чтобы тренироваться костыли приделывать
Аноним 26/02/23 Вск 13:47:50 2623322 60
>>2623042
>>2623142
C#, как и Java, и Kotlin - это мертворожденные и увядающие языки, мечущиеся между двух ниш.
В будущем останется только 2 стула:
1. Razt для системщины и байтокрутов.
2. Pitun для высокоуровневых макакингеров.
Остальные промежуточные двурушники умрут.
Аноним 26/02/23 Вск 13:51:41 2623326 61
>>2622821
Поддерживаю.
Единственная адекватная проверенная временем технология для GUI, дружественная к программисту, с низким порогом входа и с лучшим перформансом на рынке, с самым коротким путём от открытия IDE после обеда до MVP к концу рабочего дня.
Жива и здравствует до сих пор, потому что ничего лучше так и не смогли придумать.
Аноним 26/02/23 Вск 14:07:08 2623337 62
image 63Кб, 402x385
402x385
>>2623322
> увядающие языки
> C# и .NET каждый год обновляются
Я даже уже заебался следить за новыми фичами. Каждый год блять что-то новое.
Аноним 26/02/23 Вск 14:28:10 2623373 63
>>2623337
Ну это как барахтающийся утопающий. Брызг, пузырей, шуму, визгу много. А толку - мало. Плавать надо уметь в новой реальности. А не суетно пускать автоматные очереди бездумных изменений, чтобы хоть как-то удержаться на плаву.
Это верный признак конца.
Аноним 26/02/23 Вск 14:49:02 2623394 64
>>2623373
> Плавать надо уметь в новой реальности
Угадай на каком языке написана большая часть современных мобильных игр.
Аноним 26/02/23 Вск 15:07:10 2623412 65
Изучаю в вузе c#. Хотел узнать какие перспективы, думал летом завалиться куда-нибудь на стажировк
Аноним 26/02/23 Вск 15:09:35 2623417 66
Аноним 26/02/23 Вск 15:09:50 2623419 67
>>2623142
Ты просто не пробовал
В котлине код лаконичнее и выразительнее
И многие фичи там есть что в шарпе и не будет никогда
Аноним 26/02/23 Вск 15:21:07 2623436 68
>>2623394
Только вот в юнити свой рантайм, свой сишарп, отстающий от основной версии. И вообще он зачастую транспилируется в код на крестах, а уже потом компилируется нормальный крестовый код.
На юнити свои особые практики разработки близкие к крестовым, с минимизацией аллокаций. С преаллокацией больших объектов. Это просто крестодрочево на шарпе. И в общем-то то, как это уродливо выглядит, как бы намекаем нам на то, что сишарп в юнити - это просто как пропихнутый по блату неликвид, который по хорошему надо менять на кресты или раст.
Юнити - это самый убедительный аргумент в пользу того, что сишарп не пригоден для разработки игр, и используется там в силу внешних причин (микрософт просто его туда пропихивает не взирая на объективные потребности рынка).
Аноним 26/02/23 Вск 17:03:52 2623613 69
ha-ha.webm 1414Кб, 958x720, 00:00:11
958x720
>>2623436
Выдумал какое-то соломенное чучело и сам же разъебал его. Типичный шизоид.
Аноним 26/02/23 Вск 18:10:49 2623716 70
Насколько легальна конструкция:

IA
IB :IA
MyBaseClass :IA
MyChildrenClass :MyBaseClass :IB


Задача в том, что я железно должен соблюсти два правила:
1. MyBaseClass обязательно должен реализовать интерфейс IA
2. При обращении к IB должен видеть функционал IA

Проблема в том, что выглядит так, что интерфейс IA используется как бы дважды.
Аноним 26/02/23 Вск 18:12:21 2623719 71
>>2623412
А если перспектив нет, то отчислишься?
Аноним 26/02/23 Вск 23:31:14 2624157 72
Можно ли в соло написать и запустить веб проект на ASP.NET + Angular и монетизировать? Какие подводные?
Аноним 26/02/23 Вск 23:34:44 2624162 73
>>2624157
Всё возможно, дерзай, если есть энтузиазм и запал!
Аноним 26/02/23 Вск 23:39:00 2624164 74
бля как же я ебал этот веб. завтра скачиваю unityhub, в геймдеве хоть деньги есть
27/02/23 Пнд 00:46:19 2624195 75
>>2624157
Нельзя, в ASP.NET встроена проверка, что если ты пишешь проект в соло, он детектит все твои счета в банках и электронных кошельках и запрещает по ним входящие платежи.
Аноним 27/02/23 Пнд 02:22:05 2624225 76
>>2624164
>в геймдеве хоть деньги есть
You can bet on it
Аноним 27/02/23 Пнд 02:25:21 2624226 77
>>2624225
Он же не сказал какой геймдев. Может он клиент для казино на юнити собрался писать.
Аноним 27/02/23 Пнд 02:47:19 2624230 78
>>2624164
> в геймдеве хоть деньги есть
Есть, да не про вашу честь! Войти на тот же рынок мобилок тяжело, нужен креативный подход. А если ты решил на дядю работать, то там платят копейки.
Аноним 27/02/23 Пнд 08:09:21 2624266 79
>>2622999
>Пытался сделать словарь, где ключ-id чата - идея говно, не работает.
Ты что-то наебланил, такого не может быть.
Аноним 27/02/23 Пнд 10:48:31 2624368 80
>>2624226
>Может он клиент для казино на юнити собрался писать.
Угу. Считать, что можно заработать бабки разрабатывая для мобильного казино, примерно то же самое, что считать, что можно разбогатеть будучи обычным крупье в стандартном казино.
Аноним 27/02/23 Пнд 10:57:27 2624377 81
>>2624327
Съебать должны те, кто задаёт тупые вопросы.
Аноним 27/02/23 Пнд 12:00:23 2624413 82
>>2623719
нет, пойду тогда летом опять в доставку яндекс еды
Аноним 27/02/23 Пнд 13:26:36 2624470 83
>>2624425
>"Врёти нинужна"
Не считаю так.

Бтв, недавно начал дрочить задачи с codewars, + курс ulearn'a.

>- иди нахуй с треда куда-нибудь в питонотред
пришел от туда)
Аноним 27/02/23 Пнд 13:29:03 2624472 84
>>2624425
для чего нужны литкод и алгосы для очередного шарп крудошлепа?
Аноним 27/02/23 Пнд 16:54:11 2624718 85
Есть ли нормальное будущее у десктоп разработки? Есть ли смысл перекатыватся в веб с декстопа на винде? В вебе платят больше и вакансий больше и он намного популярнее, а десктоп как будто не существует
Аноним 27/02/23 Пнд 16:55:33 2624723 86
Аноним 27/02/23 Пнд 16:58:30 2624729 87
>>2624718
винда умирает, перекатывайся в разработку gtk приложений на Си или Расте
Аноним 27/02/23 Пнд 18:52:43 2624859 88
Хочу написать гуи приложение для покетбука работает вроде как на линуксе, даже хромиум есть, с чего вообще начать?
Аноним 27/02/23 Пнд 19:16:37 2624888 89
Аноним 27/02/23 Пнд 20:40:28 2624939 90
image 118Кб, 1107x491
1107x491
image 94Кб, 956x520
956x520
Анонсы, нужен небольшой архитектурный совет да, это опять насчёт игры

Есть AuthenticationService, который занимается входом/выходом. В нём есть класс Account, который хранит данные о текущем пользователе.

Мне нужен ещё один сервис (пик 2), который будет хранить данные игрока в свойстве Player (по аналогии с Account). Внутри будут данные: UserId, Coins, Tokens, Nickname и тп. Вопрос: как можно назвать сервис, который на пик 2? GameService уже есть. Можно назвать PlayerService, но как-то мне не нравится такое обращение "playerService.Player". Хотя так логичнее всего наверное... Может UserService, хм.
Аноним 27/02/23 Пнд 22:03:30 2625027 91
>>2624939
Че этот интерфейс делает, так и называй.
С точки зрения архитектуры - у тебя тут перемешаны интерфейсы. Потому - это должен быть не сервис а фасад какой-нибудь смешанный со слушателями.

Но в твоем случае - очевидно, что у тебя сущности доступа к игроку - смешаны с сущностями которые за рекламу отвечают. Отвязывай их. Делай как человек - IAdService, ITokensService, Inventory, Profile...

А вообще, можешь сделать как делают деды в непонятной ситуации. Вот смотришь внимательно на то где это применяется, и добавляешь слово Context. Допустим у тебя эта хуйня, как видно из методов - применяется в какой-то хуйне связанной с магазином. Так и делай: ShopContext. Player переименовываешь в Consumer. Выглядеть будет так: context.SetNikname("PodzalupniyTvorojok"), context.Consumer.Coins.
Аноним 27/02/23 Пнд 23:10:42 2625096 92
Если я через EF кверю постгрес то по какому принципу мне выбирать возвращаемый тип из Task и ValueTask?
Аноним 27/02/23 Пнд 23:12:16 2625097 93
>>2625096
по принципу - ПОТОМ ПРОФАЙЛЕР ПОКАЖЕТ
Аноним 27/02/23 Пнд 23:13:21 2625098 94
>>2625097
Хочется сразу нормально сделать
Аноним 28/02/23 Втр 11:00:49 2625461 95
>>2624413
А нахера тогда спрашиваешь? Все равно придется учить, все равно придется ходить на собесы.
Аноним 28/02/23 Втр 12:03:29 2625549 96
2023-02-2811-53[...].png 2Кб, 293x72
293x72
Как в IValueConverter отменить конвертацию, если данные не верные? Мне не нужно исключение.

Задачи пикрил. Я забиндил цвет к прямоугольнику и в текстбокс правее забиндил через IValueConverter этот же цвет в HEX-представлении. Связка двухсторонняя.

Проблема в том, что пользователь может ввести неверный формат данных и это надо как-то регулировать: либо отменить конвертацию, либо вернуть текущее валидное значение.
Аноним 28/02/23 Втр 12:08:54 2625555 97
>>2625549
А, все, надо вернуть null. Даже текстбокс автоматом подсвечивается красной рамкой — удобно.
Аноним 28/02/23 Втр 13:34:02 2625687 98
>>2625555
Нужно возвращать DependencyProperty.UnsetValue, иначе в тексбокс в обратку придет пустой цвет.
Аноним 28/02/23 Втр 14:49:10 2625795 99
А как вообще реализовывается окно настроек при паттерне MVVM? Допустим у меня есть вьюмодель настроек, но проблема в том, что если я ее привяжу, то ЛЮБЫЕ изменения в окне настроек моментально внесут глобальные изменения на все приложение. По идее пользователь должен нажать OK, чтобы изменения применились, или Cancel, чтобы их отменить.

Это надо делать копию данных, над ней издеваться, а уже потом переносить данные в оригинал. Но это же лютый пиздец, это же надо вручную перебирать каждое свойство.
Аноним 28/02/23 Втр 14:53:27 2625801 100
Если я знаю плюсы и тайпскрипт сколько у меня займёт перекат в шарпы?
Аноним 28/02/23 Втр 14:56:06 2625804 101
>>2625801
> знаю плюсы
Сколько лет опыта?
Аноним 28/02/23 Втр 14:59:29 2625811 102
>>2625804
Где-то 5 с хвостиком
Аноним 28/02/23 Втр 15:03:50 2625815 103
>>2625801
>>2625804
>>2625811
Хватит хуйней страдать. Чел 5 лет плюсы изучал и тайпскрипт и не занет сколько нужно на изучение шарпа.

Лучше ответье на вопрос >>2625795
Аноним 28/02/23 Втр 15:05:26 2625819 104
>>2625813
Ну ля, а к собесу как готовиться? Гц этот ваши, лохи и прочее.
Аноним 28/02/23 Втр 15:25:00 2625837 105
>>2625827
Хм. Т.е. сделать опции не как синглтон?

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

С точки зрения производительности хуже, но без ебли глубинного копирования. Найс, мне нравится.
Аноним 28/02/23 Втр 15:43:32 2625845 106
C#, .NET Core, ASP.NET, EF
Я ничего не забыл?
Аноним 28/02/23 Втр 16:01:49 2625855 107
Аноним 28/02/23 Втр 16:33:52 2625886 108
>>2625854
ну так то синглтон синглтону рознь. синглотн ака Service.Instance зло, а через DI нет
однако и даже первый вариант не всегда зло. например то же логирование.
да и биндинг настроек вью тоже идет на сигнлтон и ничего. Ну конечно если ты не хочешь делать автотесты гуи на уровне контролов и подменять при этом настройки - а ты этого не захочешь точно.
Аноним 28/02/23 Втр 21:23:19 2626244 109
>>2626237
Здесь тебе шарп, а не кресты.
Аноним 28/02/23 Втр 22:10:02 2626292 110
.jpg 80Кб, 700x700
700x700
Смотрите.
Я давно делал свою либу для своих нужд для работы с TCP.

Ну так вот. Я чет в последнее время хочу к ней вернуться.

И че меня смущает в ее дизайне.

А вот че.
Есть интерфейс: IProtocol

Собственно вот такого вида:
interface IProtocol<TMessage, TContext>
{
Task<TMessage> ReceiveAsync(PipeReader reader, TContext context);
Task SendAsync(PipeWriter writer, TMessage message, TContext context);
}

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

Вот че делать?
Мне не хочется делать IProtocol который это будет обжектами заменять. А делать интерфейсы и реализации классов под случай, когда с контекстом и без - тоже не хочется.
Можно конечно сделать в духе:
IProtocol<TMessage> : IProtocol<TMessage, EmptyContext>
Но типа тоже как говно выглядит, тем более, что тот кто будет реализовывать интерфейс - будет этот EmptyContext видеть.
А как решать - я хуй знает.
Аноним 01/03/23 Срд 00:41:40 2626394 111
>>2625096
А зачем тебе ValueTask?
Если операции асинхронные - всегда Таск.
Если чаще нет, чем да, ну блескни смекалОчкой в ПРе и юзни ValueTask, если там кешхит хороший
Аноним 01/03/23 Срд 14:13:47 2626655 112
>>2626292
Как я понял Context некая частная штука. Поэтому я бы его вообще не отображал в интерфейсах. Пускай его используют конкретные классы.
Аноним 01/03/23 Срд 16:14:54 2626747 113
image.png 116Кб, 1024x1024
1024x1024
Откуда в .NET настолько много сеньеров?

В Djinni масса народу лезет на все сеньерские вакансии где нужно 5+ лет опыта и на многих вакансиях делает т50-70+ откликов, а отклик не поставить там джуну если у него стоит 0-1 год опыта.

Это щас джуны настолько наглые что ставят 5 лет опыта в системе и подаются хоть на архитекта или реально рынок спецов настолько переполнен? Такая же ситуация с мидлами.

Война же не затронула настолько сильно рынок опытных специалистов, или я ошибаюсь?

Такое чуство что вакансия не сеньерская а джуниорская без опыта, и так на многих сеньерский-мидловых вакансиях
Аноним 01/03/23 Срд 18:13:40 2626841 114
>>2626655
Контекст, в данном случае - это такая хреновина, которая отвечает за специфику протокола.
Допустим, вот у нас есть протокол, который по дефолту - после обработки запроса - закрывает соединение. Но если передан флаг KeepAlive - сервер не должен закрывать соединение после. Либо, у протокола есть возможность разные типы шифрования использовать, в таком случае - в контексте содержится информация о том, как шифровать сообщение. Ну и прочая фигня, которая нужна парсеру в зависимости от котнекста соединения.
Ну, а я - еще и хочу же экономить, не создавать кучу парсеров, в которых отличается только контекст, потому хотел, чтобы IProtocol- был один на тип соединения, типа: Для хттп - HttpProtocol : IProtocol<HttpMessage, HttpContext>, для модбаса - другой: ModbusProtocol : IProtocol<ModbusMessage, ModbusContext> ну и т.д.

А идея вообще в том, чтобы в контексте оно прятолось и было типа так:

while(httpContext.Request is null){
var httpMessage = await httpContext.ReciveAsync();
httpContext.Request = new HttpRequest(httpMessage);
await application(httpContext);
if(context.Responce is not null) await httpContext.SendResponce();
if(httpContext.KeepAlive) httpContext.Reset();
}

Просто уродливо когда со стороны какой-то EchoServer показать хочется.
Аноним 01/03/23 Срд 20:21:10 2626975 115
Чет меня расстраивает студия в последнее время.
Слишком часто происходит следующего вида хрень:
Просто подчеркивается рандомный кусок текста красным и проект просто не хочет собираться. Просто с нихуя.
Помогает просто перезапуск студии.
Но бесит жутко.
ХЗ как чинить нормально.
Раньше такое случалось только совсем уж в здроровых проектах. Но сейчас - проектик на 20к строк - уже начинается.
Аноним 01/03/23 Срд 20:21:37 2626977 116
>>2621960
Ах если бы, я бы без работы сидел
Аноним 01/03/23 Срд 20:22:19 2626979 117
>>2626747
Это вноючие вкатуны, крутящие опыт, забей.
Аноним 01/03/23 Срд 20:23:03 2626982 118
>>2626747
Это вонючие вкатуны, крутящие опыт, забей. Во фронте с этим вообще пиздец.
Аноним 01/03/23 Срд 20:25:14 2626984 119
>>2622999
Снеси нахуй статику. И использую объекты. У тебя один и тот же чекбокс, который живёт у всех пользователей
Аноним 01/03/23 Срд 20:25:45 2626986 120
>>2622999
Снеси нахуй статику. И использую объекты. У тебя один и тот же чекбокс, который живёт у всех пользователей
Аноним 01/03/23 Срд 21:22:57 2627039 121
>>2626747
Отклики на вакансии никогда не соответствовали реальному положению дел. Есть боты всяких агентств, автоматически рассылающие отклики. Есть отчаявшиеся вкатуны без опыта, на авось откликающиеся на всё подряд. Есть шизики, услышавшие у инфоцыган, что требуемый опыт можно игнорировать. Есть те, кто жопой читает описание вакансий. Есть наёбщики, посмотревшие видосики "как убедительно пиздеть о своём опыте". Ну и от силы 1-2 сеньора, подходящих под описание, которые откликнулись заодно на 50 других вакансий.
Аноним 01/03/23 Срд 21:46:25 2627050 122
>>2627039
>Ну и от силы 1-2 сеньора, подходящих под описание, которые откликнулись заодно на 50 других вакансий.
Стоит еще учитывать, что по факту нормальные вакансии изначально заполняются через агенства, аутсорс/аутстафф или свои каналы. Т.к. все сеньерные сеньеры уже давно во всех базах и их обзванивают в первую очередь. Плюс пылесосят все нормальные резюме в общем доступе. И когда уже никого не нашлось вакансия выкидывается в эфир, в надежде, что среди набежавжих окажутся те самые пара человек которые чудом проскочили мимо пылесоса.
Аноним 01/03/23 Срд 21:49:28 2627059 123
>>2626975
1. Прочекай все расширения. Очень часто такая проблема бывает из-за кривого расширения или конфликтов между ними.
2. Попробуй обнови студию. В 2022-й в одном из билдов была такая проблема, когда студия на больших проектах теряла все референсы и даже перезагрузка не всегда спасала.
Я после того как до последней текущей редакции обновился и поотключал большинство расширений - проблема исчезла.
Аноним 01/03/23 Срд 21:55:43 2627073 124
>>2627039
>Есть наёбщики, посмотревшие видосики "как убедительно пиздеть о своём опыте".
Разве все настолько плохо если врать о опыте? читал много отзывов о вкате через убедительный пиздёжь о своем опыте, у многих всё получалось без проблем, получали джуна-мидла без опыта, да и человеку который пиздит, ему же хуже от этого не будет, раскроют ложь в одной конторе пойдет на 200-100гу в другую.
Аноним 01/03/23 Срд 22:01:25 2627081 125
>>2627073
>раскроют ложь в одной конторе пойдет на 200-100гу в другую.
"И что это за профессия такая, прости господи! Сын лейтенанта Шмидта! Ну, год ещё, ну, два. А дальше что? Дальше ваши рыжие кудри примелькаются, и вас просто начнут бить."
Аноним 01/03/23 Срд 22:01:28 2627082 126
>>2627059
У меня из расширений - только CodeMaid и тема от которой глаза не вытекают.
Попробую завтра обновить.

Просто реально. Типа раньше - подобное было, но на больших проектах, можно было понять. Но тута началось - даже на небольшом. Всего 4 проекта в солюшне, 20к строчек в сумме. Оно уже ломается. Обидно до дури.
Аноним 03/03/23 Птн 06:34:15 2628214 127
image.png 13Кб, 551x288
551x288
Почему так нельзя и при чём тут конверсия?
Аноним 03/03/23 Птн 07:25:00 2628229 128
>>2628214
Потому что первое не Class1 не имеет никакого отношения к T.
Компилятор не может вывести зависимость типов, да никто не может, ведь они не связаны

Сделаешь ты потом new Generic<string> и как по твоему Class1 должен неявно кастоваться к string.
Аноним 03/03/23 Птн 07:41:00 2628231 129
>>2628229
>Сделаешь ты потом new Generic<string> и как по твоему Class1 должен неявно кастоваться к string.
То есть эээ... два инстанса Generic<T> с разными типами должны неявно приводиться один к другому?
Аноним 03/03/23 Птн 07:41:55 2628232 130
Аноним 03/03/23 Птн 09:08:01 2628275 131
Всё сижу и думаю об этом >>2628214
Я не программист, шарп просто хобби, но знаний по женерикам достаточно, чтобы самому понять, почему эта хуйня инвалид, но вот заклинило и всё.
"Интересно" мозги неработают.
Аноним 03/03/23 Птн 14:15:56 2628508 132
1123.jpg 48Кб, 1200x619
1200x619
Есть что-то наподобие реверс мультибиндинга?

Задача - пикрил. Есть один источник данных в виде цвета aRGB.
А есть два UI-окна, которые биндят этот цвет. Одно окно должно отображать канал Alpha(Opacity), а другое собственно цвет RGB.

С получением данных проблем нет — я это сделал через IValueConverter и сепарировал каналы.
Но представим, что пользователь в окно Opacity вводит новое значение. Конвертору, нужно знать два значения Opacity и RGB, чтобы собрать в кучу и высрать полноценный Color. А конвертер так не умеет, он знать не знает про RGB и где его взять.

Я пытался биндить цвет к parameter в ValueConverter, но он не является DependencyObject. На SO советовали юзать IMultiValueConverter, но это же совсем другая херь — она подразумевает, что у меня 2 источника и одно свойство. А у меня наоборот один источник и два свойства.

Есть идеи?
Аноним 03/03/23 Птн 15:37:52 2628597 133
2023-03-0315-35[...].png 78Кб, 765x834
765x834
>>2628508
Что чел имел ввиду? Что это за зверушка такая без Binding, без StaticResouce, без указания неймспейса через двоеточие?
Аноним 03/03/23 Птн 16:23:17 2628634 134
2ч.jpg 29Кб, 926x181
926x181
ЕБАНЫ РОТ, Я УЖЕ ДВА ДНЯ СИЖУ, НИХУЯ НЕ ПОНИМАЮ:
как сделать чтение из одного файла в нескольких одновременных процессах??
Так в файл записывается белиберда, не соответствующая действительности.
Аноним 03/03/23 Птн 17:26:09 2628722 135
>>2628508
тебе для чего вьюмодели дадены? чтобы хранить в них данные для вью. вох и храни

>>2628597
а оно работает? видеть бы его в работе

>>2628634
и никто не понимает что ты вообще делаешь. На пике прочитал ты файл, а потом параллельно начинаешь пихать его Bag которая в принципе не предназначена для "должен быть порядок"
Аноним 03/03/23 Птн 17:49:02 2628741 136
Как вкатиться в бэк с годом опыта разработки десктопа на впф?
Аноним 03/03/23 Птн 17:53:03 2628744 137
>>2628741
Как джуну без какого-либо опыта.
Аноним 03/03/23 Птн 17:58:51 2628746 138
2023-03-0317-51[...].png 44Кб, 757x529
757x529
>>2628722
>тебе для чего вьюмодели дадены? чтобы хранить в них данные для вью. вох и храни
А у меня что? У меня свойство типа Color и хранится во вьюмодели. Два текстбокса биндятся к этому свойству, только одному нужен альфа канал, а другому каналы RGB. И каждый тексбокс должен править ТОЛЬКО конкретный альфаканал, а не цвет целиком.
А я напоминаю, что тип Color - структура и ее суб свойства не являются INPC или DP.

Пытаюсь к ValueConverter приклеить DependencyProperty. Чет нихера не выходит. Ща подготовлю демо-проект.
Вкратце, если наследуюсь от DependencyObject, то возникает ошибка в рантайме, мол источник биндинга is null (а это 100% не так). Если наследуюсь от FrameworkElement, то ошибки нет, но и свойство не обновляется. Если я юзаю не Binding, а StaticResource то обновление свойства регистрируется.
Чет с визуальным деревом и данные теряются.

Вроде тут поясняют, но я пока не разбирал.
https://www.codeproject.com/Articles/18678/Attaching-a-Virtual-Branch-to-the-Logical-Tree-in

>а оно работает? видеть бы его в работе
Ну вот у меня ошибка. Я не понимаю что имеется ввиду.
Аноним 03/03/23 Птн 18:06:41 2628748 139
>>2628746
а я напоминаю что вьюмодели для этого и нужны - давать данные для вида. И если вдруг части Color не являются INPC и это нужно, то делается ColorViewModel где этот Color будет иметь INPC свойства своих частей.

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

Проблема проброса DataContext в хамл, что не состоит в дереве - ну это другая проблема

>Я не понимаю что имеется ввиду
ну скорее всего он потерял неймспейс ибо писал в блокнотах пример и вставил.
Аноним 03/03/23 Птн 18:15:21 2628755 140
>>2628748
>то делается ColorViewModel где этот Color будет иметь INPC свойства своих частей.
Я этого хочу избежать (хотел), я не хочу делать отдельный класс. У меня все завязано на Color.
Я думал это дерьмо легко поправить через конвертеры или мультибиндинги, но тут целое ракетостроение получается.

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

>ну скорее всего он потерял неймспейс
С неймспейсом тоже ошибка.
Аноним 03/03/23 Птн 18:23:40 2628763 141
>>2628755
> Не запихнешь. Как я конвертеру передам вьюмодель? Если бы я мог, я бы передал Color.
Наследуешь конвертер от markupextension и передаешь что душа пожелает.
Аноним 03/03/23 Птн 18:26:16 2628764 142
>>2628755
ну чудес не бывает. Если тебе нужно INPC и что то не обладает INPC то ты делаешь INPC или делаешь вообще другой подход

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

или то же самое но в markupextension - тут просто инстанс конвертера создается "на месте"

>С неймспейсом тоже ошибка.
ошибку в студию тогда.
Аноним 03/03/23 Птн 18:41:05 2628772 143
2023-03-0318-34[...].png 29Кб, 1121x342
1121x342
>>2628764
>markupextension
Почему он, а не DependencyObject или FrameworkElement? Ведь туда тоже можно запихнуть что угодно и передать что угодно.

А как юзать markupextension? Ща будет ор, что свойство не является Binding. Вот этот пример и идет по этому пути >>2628597
Ссылка на референс: https://pastebin.com/VxF1c5ma
Там свойство объявлено как Binding, но я не понимаю как это запустить.

>ошибку в студию тогда.
пикрил
Аноним 03/03/23 Птн 18:43:01 2628774 144
Аноним 03/03/23 Птн 18:53:27 2628784 145
>>2628772
Ересь какая-то. Непонятно что тут хотят сделать.
Аноним 03/03/23 Птн 19:07:12 2628786 146
>>2628772
в хамл ты можешь создать любой объект и задать его свойства - как ты делаешь с контролами
markupextension позволяет создавать объект внутри { } и тоже задавать его свойства

а сам этот BindingWithBindableConverterParameter показывает пример "так можно", не более типа "смотрите можно сделать свой биндинг", хотя это просто обертка над обычным биндингом и кроме примера ни на что не годится.
Аноним 03/03/23 Птн 20:08:36 2628815 147
>>2628744
Шутишь? У меня год опыта коммерческой разработки, и я по твоему должен конкурировать с вкатунами?
Аноним 03/03/23 Птн 21:19:34 2628891 148
2023-03-0321-10[...].png 3Кб, 385x191
385x191
2023-03-0321-17[...].png 3Кб, 384x191
384x191
>>2628786
Ну смотри, вот проект: https://transfiles.ru/l90fh

Пикрил 1. По идее, если понижать значение текстбокса Opacity, то оранжевое окно должно становиться прозрачным, но сохранять свой оранжевый цвет.

Конвертацией заведует OpacityConverter, в нем есть обычное депенденси свойство, которое биндится к оранжевому цвету, но цвет остается черным.
Поэтому любое изменение окна Opacity моментально искажает цвет (пикрил 2).

Вот что не так? Почему биндинг не срабатывает?
Аноним 03/03/23 Птн 21:24:01 2628895 149
>>2628815
Если уверен в своих силах, то чяво спрашиваешь?
Аноним 03/03/23 Птн 21:38:31 2628901 150
>>2628786
>markupextension позволяет создавать объект внутри { } и тоже задавать его свойства
Но нельзя биндить эти свойства. А чтобы это реализовать, свойство должно быть Dependency, а чтобы его реализовать, я должен наследовать DependencyObject или Framework Element, но множественное наследование запрещено.

Поэтому MarkupExtension для меня бесполезен. А DependencyObject или Framework Element не работают.

В общем печально, что нет решения для казалось бы очевидной задачи. Ну нельзя даже Color расщеплять на INPC. Шо это за хуйня? Мне весь проект перелопачивать ради того, чтобы в одном окошечке реализовать возможность регулировки прозрачности цвета?
Ну пиздец.
Аноним 03/03/23 Птн 21:54:13 2628925 151
>>2628901
>я должен наследовать DependencyObject или Framework Element
нет. наследовать Freezable

твое

<Binding.Converter>
<cnv:OpacityConverter Reference="{Binding TestColor}" />
</Binding.Converter>
ругается же как
System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=TestColor; DataItem=null; target element is 'OpacityConverter' (HashCode=60429346); target property is 'Reference' (type 'Color')

если конвертер вынести в ресурсы
<cnv:OpacityConverter x:Key="OpacityConverter" Reference="{Binding TestColor, Mode=OneWay}" />

и использовать

Text="{Binding TestColor, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource OpacityConverter}}"

то все работает.
Аноним 03/03/23 Птн 21:59:58 2628931 152
>>2628925
>если конвертер вынести в ресурсы

А если у меня таких 100500 окон, то в ресурсах я должен создать 100500 экземпляров конвертеров?
Впрочем мне все равно придется делать общий конвертер с правым окном. Спасибо за помощь!
Аноним 03/03/23 Птн 22:12:59 2628946 153
>>2628931
есть проблема
в теории ты можешь использовать MarkupExtension чтобы передавать цвет как параметр, но тогда ты не сможешь передать этот цвет как биндинг

а наследоваться от 2х классов Freezable и MarkupExtension ты не можешь
тут нужно велосипедиь.
Аноним 03/03/23 Птн 22:31:20 2628970 154
>>2628946
А зачем мне теперь MarkupExtension?

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

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

Либо надо внутри держать какой-то словарь, а ключ передавать тем же параметром. Выглядит как хуета.
Аноним 03/03/23 Птн 22:35:08 2628975 155
>>2628970
MarkupExtension нужен тем кто "не хочу я в ресурсах конвертер обьявлять и статик конвертер тоже не хочу, хочу чтобы на месте"

и там все хорошо пока не захочется передать параметр который нужно дополнительно биндить.
Аноним 03/03/23 Птн 22:41:55 2628985 156
>>2628975
Для меня один хер что там строчка, что здесь.
Аноним 03/03/23 Птн 23:55:18 2629063 157
ребят из реакта/фронта в сишарп долго перекатываться?
Аноним 04/03/23 Суб 00:00:31 2629065 158
>>2629063
Судя по вопросу ты еще в реакт/фронт не вкатюлился, так что ответ столько же сколько с нуля
Аноним 04/03/23 Суб 00:00:49 2629066 159
>>2629063
Ну. Если есть хотя бы общие представления о БД, многопоточности, типах, то не то чтобы прям.
Говорю правда с другой стороны, когда нужно было из бека шарпа стать временно фуллстеком.
Аноним 04/03/23 Суб 00:16:33 2629075 160
>>2629065
Да я решил что мне неинтересно ебашить фронт, меня типа учат огромному количеству инфы, но я все еще не понимаю нахуя мне это надо.

ПЛюс милиард библиотек
реакт редакс мобх тайпскирпт таилвинд вуе ангуляр
почему так сложно, вы долбаебы чтоли?
Аноним 04/03/23 Суб 00:58:22 2629092 161
>>2629075
На беке тебя вообще инфой засыпит чел, а если не осилишь, так еще фулстеком придется работать в мелкоконторах.
Аноним 04/03/23 Суб 14:11:11 2629428 162
>>2629092
Ну а где не засыпет то в кодинге? Другое дело чтобы было интересно в этом всем копаться, и я видел какую-то финальную цель.
Аноним 04/03/23 Суб 21:47:20 2629915 163
01.png 49Кб, 1111x909
1111x909
02.png 139Кб, 1025x904
1025x904
03.png 113Кб, 722x920
722x920
Есть ряд кнопок в стакпанели. Стиль задан через статикРисурс, второй рисунок. Когда тыкаешь на одну, у предвидущей сбрасывается обводка. Всё работает.

Но когда я поделил их на две стакпанели нихуя не работает. Почему так?
Аноним 04/03/23 Суб 22:27:08 2629970 164
>>2629915
Дошло кажись, у меня радиокнопки, они одним стэком считаются.
Аноним 05/03/23 Вск 18:05:43 2630683 165
>>2628815
>год опыта коммерческой разработки
>впф

Это не считается, такой попуск на собесе устроят, заснуть потом не сможешь
Аноним 05/03/23 Вск 20:27:31 2630869 166
>>2628815
Конечно. Ты же в бэк собираешся, а там твой впф-опыт почти никому не уперся.
Аноним 05/03/23 Вск 20:29:53 2630870 167
>>2630757
>Хочешь верь, хочешь нет, но в мире остаётся огромное количество заказчиков программного обеспечения
Ну-ка, хотя бы парочку нормальных контор с открытыми вакансиями приведи.
Аноним 05/03/23 Вск 21:58:16 2630933 168
>>2630869
Чо чулавека пугаешь. Ваше крудошлепство дебил освоит за неделю и уже мидл.
Аноним 05/03/23 Вск 22:29:27 2630954 169
Смысл этой хуйни?
Аноним 05/03/23 Вск 22:41:22 2630957 170
>>2630954
Чтобы поджигать жопы джавистам.
Аноним 06/03/23 Пнд 02:17:37 2631083 171
На с# нормально будет в бекэнд или лучше язык попроще найти? Мне очень нравится c#, не хочу переучиваться.

Мне странно, что до сих пор джаву рекомендуют как язык для бэка, разве он не хуже шарпа?

бэком раньше не интересовался вообще, не бейте
Аноним 06/03/23 Пнд 02:27:00 2631084 172
Аноним 06/03/23 Пнд 03:44:01 2631101 173
>>2631084
Я реально спрашиваю
Аноним 06/03/23 Пнд 08:46:48 2631177 174
>>2631014
1) Во первых конкретные примеры, а то я тоже могу про 'массы' говорить. Во вторых, в большинстве таких контор 'разработчиков аналогов' ты будешь хуй сосать вместо зарплаты.
2) Тут уже интереснее, только ты все равно обосрался. Компас написан на плюсах, на шарпе там только плагины можно для него делать. И то в подавляющем большинстве они все на делфях сделаны (знаю т.к. сам писал). Ну и в аскон хуй ты попадешь без знания плюсов и хорошей математической базы (это если на сам движок), либо хорошей предметной базы (вроде конструкторской или ТМ), а это почти всегда вышка или неебический опыт. С годом ВПФ-а там нехуй делать.
Аноним 06/03/23 Пнд 08:56:18 2631185 175
>>2630933
>Ваше крудошлепство дебил освоит за неделю и уже мидл.
Угу, круды. А потом тебе дают таску вроде "подписание xml по хитровыебанному ГОСТу, с оригинальным алгоритмом каноникализации и под линукс" со сроком хорошо если хотя бы в пару недель. Или интеграцию с каким либо сервисом с каким то хитровыебаным форматом мутантом jsonrpc, resta или еще хуй пойми чего. Где хорошо если хотя бы часть API описана.
А все круды уже давно автоматои парой строчек делаются наследованием от абстрактных классов.
Аноним 06/03/23 Пнд 09:26:40 2631204 176
>>2631083

Шарп норм, на джаву очень похож.
Я в том году вкатился, до этого учил джаву года полтора.
Базу какую-то на джаве выучил, начал Spring изучать, прошел курс на udemy где-то наполовину - параллельно для общего развития потихоньку изучал JS, и знакомый порекомендовал ангуляр потыкать - там его каким-то знакомым требовался на ангуляр разработчик.
В итоге вкатился на фронт/фулстэк (в другую контору), JS по сути выучил через ООПшную логику TypeScript и Angular, а бэк тут на шарпе.
Аноним 06/03/23 Пнд 09:57:05 2631234 177
>>2621949 (OP)
Шарпаны. А что можно почитать по функциональному подходу в C#? Ну и вообще базу по функциональщине?
Аноним 06/03/23 Пнд 14:29:35 2631526 178
>>2631204
Ну я вот тоже хочу фуллстэк, но нет уверенности, что шарп подойдет, но судя по вакансиям все норм. Изначально думал, что буду его для геймдева юзать, но игры вообще не мое как оказалось, хочу на сайтики перейти, но пока вообще ничего в них не понимаю, поэтому может и спрашиваю тупые вопросы.

Просто смотрю на вакансии для бека и там требуют C#, HTML, CSS, а для фронта вакансий меньше и зп меньше, требования те же, но без C#, лол.
Аноним 06/03/23 Пнд 23:28:43 2632146 179
image.png 28Кб, 711x220
711x220
Это нормально, что 2-4 года опыта это джун? Мне казалось 2, ну уж тем более 4 года это мид уже.

типичные требования для вката в 2023, м
Аноним 06/03/23 Пнд 23:48:12 2632160 180
>>2632146
На каждом проекте свои критерии для джунов и миддлов. Где-то миддлом можно быть с 0.5 годами опыта (в основном мелкие проекты в стартапах), где-то не меньше 5 (огромный проект с кучей разрабов и энтерпрайзе).
Аноним 07/03/23 Втр 00:50:58 2632201 181
>>2632146
Если это зарубежная вакансия, то да.
Это в РФ основной принцип: "Маши крыльями - или сдохнешь". И вчерашний джун с годом опыта уже через год может в соло ебашить микросервисы, чтобы не вылететь на мороз.
А там все крайне неспешно (настолько, что готов поспорить, что в данной вакансии подразумевается еще .NetFramework и никакого Core). Там чел может спокойно сидеть в офисе года 2...3 и ничего кроме простых задач ему не доверят, просто потому что не по статусу и недостаточно задниц вылизано.
Аноним 07/03/23 Втр 09:27:36 2632303 182
>>2631526
>но судя по вакансиям все норм

Ну это от региона кстати сильно зависит. Смотри по вакансиям и стеку необходимых технологий - это и учи.
Для фулстэка необходимый минимум что надо знать - это основы HTML (DOM) и CSS, SQL очень важен, какой-либо из JS/TS фреймворков (React, Angular, Vue), основы работы протокола HTTP, ну и собственно сам шарп (ASP.NET/ASP.NET Core).
И, что ОЧЕНЬ важно (лично для меня было) - освой дебаг. Чтобы прям в Visual Studio или дебаг-консоли браузера ты шел по строкам, смотрел что в какую переменную поступает, как обрабатывается и как хранится в памяти.
Рекомендую на базе (философствования по поводу ООП и прочий leetcode) сильно долго не засиживаться, как только начнешь более-менее разбираться - учи фреймворки и пытайся собрать на практике рабочий пет-проект из разных языков и технологий. На этом этапе не помешает освоить Git (его впрочем тебе и так в любом курсе впарят за компанию).
Чтобы изучить любую технологию/фреймворк - на старте выбери какую-нибудь книгу, интернет- или видео-курс (не особо важно какой, тут главное системность и чтобы с упражнениями самостоятельными) и иди по ним. Пройди хотя бы наполовину.
Чем дальше будешь по этому пути идти - тем четче будешь видеть дальнейший путь.
Добра.
Аноним 07/03/23 Втр 17:38:19 2632812 183
Хочу перекатиться из ноды в шарпы. Уже какое-то время трогаю аспнет + ef. Что ещё посмотреть? Что читать? Нужен ли CLR via C#? Даёт ли опыт 3 года на ноде+рякт+тс какой-то плюс? Даёт ли опыт с плюсами какой-то плюс? Насколько шарп востребован на западе вообще?
Аноним 07/03/23 Втр 17:42:02 2632821 184
>>2632303
Спасибо, анончик, добра тебе. У меня план вот ровно такой и был, как ты написал, но теперь стал чуть более структурированный. Просто иногда читаю статьи и там совсем не упоминают C#, либо пишут, что он для сложных и больших проектов, а не для небольших сайтов, это так? Хотя не думаю, что это играет сильную роль.

А фулстэк меня интересует только потому, что мне отчасти интересен фронтенд и дизайн, так как есть навыки в художественной области, но понимаю, что вообще не хочу связывать всю профессию с этим, меня бэк намного больше привлекает. Но при этом буду совсем горевать, если мне нужно будет всю жизнь только с серверной стороны работать. Очень люблю подбирать цвета, шрифты, формы, у меня прям гармонично это получается, но вот на постоянку такое - meh.
Аноним 07/03/23 Втр 18:26:53 2632887 185
Аноним 07/03/23 Втр 21:18:40 2633062 186
Аноним 07/03/23 Втр 21:21:13 2633068 187
>>2632812
> Хочу перекатиться из ноды в шарпы. Уже какое-то время трогаю аспнет + ef. Что ещё посмотреть? Что читать?
Продолжай тыкать asp.net, ef. У майков отличная документация https://learn.microsoft.com/en-us/aspnet/core/getting-started/?view=aspnetcore-7.0&tabs=windows , где и гайды, и fundamentals.

А дальше по роадмапам иди (https://github.com/Elfocrash/.NET-Backend-Developer-Roadmap), и тыкай разные библиотеки (automapper, swagger, serilog, xunit etc).

> Нужен ли CLR via C#?
Книги по asp/ef/c# такое, инфа на сайте все-равно быстрее обновится, CLR via C# уже про базу C# и рантайма, читать смысла не много на первых порах.

> Даёт ли опыт 3 года на ноде+рякт+тс какой-то плюс? Даёт ли опыт с плюсами какой-то плюс?
Ну TS похож, т.к. 1 человек проектировал, из фреймворков angular много концепций asp имеет, di например. Опыт просто из бека поможет.
В сравнении с плюсами, меньше ебки и писать приятнее.

> Насколько шарп востребован на западе вообще?
Ну в энтерпрайзе больше джавы, но c# достаточно, работы хватит.
>
Аноним 07/03/23 Втр 21:33:15 2633083 188
>>2633068
>automapper, swagger, serilog, xunit etc
Ну из этого всего только serilog не трогал. А так всякие там newtonsoft, автофак и прочие хз бест ли но практисы пробовал.
А так общее знание бека, тса и плюсов помогает люто. Хочу заспидранить нужную для прохождения собеса теорию и начинать вкатываться.
Аноним 08/03/23 Срд 11:08:16 2633498 189
В общем. Опять я с тупым вопросом.

Вот смотрите. Я таки решил, что нехуй соединению знать че там за протокол прикладной, все такое.

Но вот решил я сделать вот такую бяку:

public abstract class ProtocolContext<TProtocol, TMessage, TContext> :
where TProtocol : IProtocol<TMessage,TContext>, new()
where TContext : ProtocolContext<TProtocol, TMessage, TContext>
{
static readonly TProtocol _protocol = new();

private TContext _context;

public Task<TMessage> Rec() => _protocol.Rec((TContext) this)

public Task<TMessage> Send(TMessage message) => _protocol.Send(message, (TContext) this)
}

И в случае реализации оно выглядит так:
public class MyProtocolContext : ProtocolContext<MyProtocol, MyMessage, MyProtocolContext>
{}

Чет смотрится как говно. И уверен что нарушает какие-нибудь принципы солид.
Особенно если смотреть со стороны клиента, потому что вот эту вот бяку - приходится оборачивать в MyClientProtocolWrapper который уже будет получать MyProtocolContext.

Короче. Может быть у вас есть лучше идеи как это все сделать?
Аноним 08/03/23 Срд 11:52:42 2633520 190
>>2633498
А ты не думал, что изначальная ошибка в том, что ты пытаешься совместить не совмещаемое? Я в таком случае разделяю когда на разные модули, которые друг о друге ничего не знают.
Аноним 08/03/23 Срд 12:14:28 2633548 191
>>2633520
Ну. Думал.
Просто как. Моя идея-то в чем.
Вот в чем.

В конечном итоге оно должно выглядеть примерно так:

var dispatcher = new MyProtocolDispatcher();
var server = new ServerBuilder()
.UseTcpListener(0, 80)
.UseConnectionLimit(100500)
.UseProtocol<MySupperDupperProtocol>()
.UseHeartbeatHandler( async (con, serverContext) => { if(DateTime.Now - con.LastActive > Timespan.FromMinute(1)){
var messagePing = new PingMessage();
var protocol = serverContext.GetProtocol();
await protocol.Send(messagePing, connection);
}
})
.UseConnectionHandler(new ConnectionHandlerBuilder((connection, serverContext) => {
var protocol = serverContext.GetProtocol();
while(connection.IsOpen){
var request = protocol.Rec(connection);
await dispatcher.Dispatch(request, connection);
}
}))
.Build();
await server.Run();

И типа хотим, используем формы, хотим - консолькой, хотим - присобачиваем это к ASP.Net и управляем через веб-интерфейс сервером, который присобачиваем к ASP.Net с его инфраструктурой.
Аноним 08/03/23 Срд 16:30:54 2633851 192
Почему петушарпер это всегда соевое быдло?
Аноним 08/03/23 Срд 19:08:52 2634042 193
>>2633083
>Ну из этого всего только serilog не трогал.
Еще NLog для верности наверни. Он примерно так же часто как серилог встречается.
Аноним 08/03/23 Срд 19:12:57 2634048 194
>>2634042
Надо обязательно прочитать несколько талмудов про логгеры, а то не перезвонят.
Аноним 08/03/23 Срд 19:57:28 2634097 195
>>2634048
В 2023 чтобы вкатиться надо обязательно качественно освоить пайплайн из логгирования - выгрузки в Elasticsearch - тренировки GPT модели на поступивших из логов данных.
Аноним 09/03/23 Чтв 00:29:51 2634325 196
>>2634048
Не, на собесах тебя максимум спросят с какими логгерами ты работал и все. А вот на реальной работе тебя сразу ссаными тряпками погонят, если ты в логгирование не умеешь. А NLog и Serilog - это фактически уже стандарты индустрии.
Аноним 09/03/23 Чтв 01:15:14 2634347 197
>>2634325
>тебя сразу ссаными тряпками погонят, если ты в логгирование не умеешь
Как только объяснишь нахуй они нужны
Аноним 09/03/23 Чтв 06:13:20 2634403 198
Тому создателю шарпа что придумал что 0x00 это int - отдельный (цензура) в (цензура)
Аноним 09/03/23 Чтв 07:42:20 2634412 199
>>2634403
А чем ещё ему быть, строкой что ли?
Аноним 09/03/23 Чтв 08:14:59 2634421 200
>>2634412
Байтом конечно же.
В шарпе нет указания что это байт кроме явного каста
Аноним 09/03/23 Чтв 12:46:18 2634574 201
>>2634347
>Как только объяснишь нахуй они нужны
Когда проебешь транзакцию клиента на пару лямов и в твоей системе не будет и следа от запросов, тебе доступно объяснят зачем нужно логгирование.
Аноним 09/03/23 Чтв 12:50:26 2634581 202
>>2634421
Логично же. В системе ориентированной преимущественно на x32/x64 все должно по умолчанию в байты каститься. Все для удобства байтоебов.
Аноним 09/03/23 Чтв 14:25:35 2634682 203
>>2634574
Главное не логировать персональные данные. А то так можно будет проебать уже не пару лямов, а пару лярдов.
Аноним 09/03/23 Чтв 15:46:37 2634744 204
>>2634574
Для предотвращения такой хуйни у меня проект юзает блокчейн. Повторю свой вопрос - зачем мне логгирование?
Аноним 09/03/23 Чтв 17:07:52 2634811 205
Пацаны, как с помощью Json.NET лучше всего десериализовать массив разных объектов?

У тамошних объектов сначала идут общие поля для всех:
Id, Type, Category, Price и т.п.

Type указывает как раз на тип объекта. В зависимости от типа объекта могут быть дополнительные поля.

В C# мне нужно объявить базовый класс и наследующие классы. Но вот как их правильно создать из json? Сначала вручную чекать Type, а потом в зависимости от него создавать нужны экземпляр класса?
Аноним 09/03/23 Чтв 18:24:22 2634897 206
>>2634744
>блокчейн
Во первых: для некоторых вещей блокчейн оверхед.
Во вторых: ты в него вообще все говно пихаешь что-ли? У тебя может ошибка на уровне инфраструктуры выскочить еще до того как до твоего блокчейна доберется или уже после него. Ты как потом разбираться будешь где у тебя что упало?
В третьих:
>зачем мне
Затем, что иди нахуй, вот зачем.
Аноним 09/03/23 Чтв 19:59:09 2634983 207
>>2634897
>ты в него вообще все говно пихаешь что-ли?
Нет. Как раз таки только биллинг инфу которого потерять нельзя.
>Затем, что иди нахуй, вот зачем.
Причина подрыва?
Аноним 09/03/23 Чтв 20:06:03 2634986 208
>>2634983
>Причина подрыва?
Нога болит после операции. Вообще всех ненавижу сейчас.
Аноним 09/03/23 Чтв 20:07:55 2634988 209
>>2634986
На лепесток наступил что ли?
Аноним 09/03/23 Чтв 23:53:53 2635182 210
Свичнулся с микросервисов на десктоп. Есть тут хуже меня?
Аноним 10/03/23 Птн 00:00:03 2635193 211
>>2635182
Те, кто свичнулся в ручное тестирование.
Аноним 10/03/23 Птн 01:49:22 2635252 212
>>2621949 (OP)
Народ, а есть у кого примеры использования Telegram.Bot под Asp.Net, но только не на вебхуках, а с использованием long poling ?
Аноним 10/03/23 Птн 08:40:07 2635331 213
>>2634682

Судя по российской практике утечек баз - максимум штраф тысяч 50 лол.
Аноним 10/03/23 Птн 09:02:55 2635364 214
Как редактировать System.Windows.Input.KeyGesture? Это класс с ReadOnly свойствами. Если я заменю на новый класс, то у меня слетят все привязки, а точечно менять свойство Key и Modifiers я не в силах.

И что делать, если я в сеттингах своего приложения захочу поменять хоткей? Как применить изменения без перезагрузки всего приложения?
Аноним 10/03/23 Птн 09:05:47 2635369 215
>>2635331
Причём платит тот, чьи данные слили, лол.
Аноним 10/03/23 Птн 09:24:31 2635390 216
>>2634811
>В зависимости от типа объекта могут быть дополнительные поля.

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

Джейсон конвертер смотрит этот обджект и парсит его со всеми доступными свойствами.

>дополнительные поля
Поля и статические поля, приватные свойства конвертер вроде пропускает мимо
Чтобы запретить какое-то свойство от парсинга, юзается атрибут [JsonIgnore]
Аноним 10/03/23 Птн 10:36:37 2635457 217
image.png 14Кб, 381x303
381x303
image.png 54Кб, 635x843
635x843
Как хуйню с пика 1 засунуть в TreeView? Итемы могут быть без групп, группы без итемов, а ещё группа может быть вложена в группу, а та в группу, а та...

Через List<object> и темплейты? Или вместо List<object> лучше как на пике 2? Если пик 2, то не выглядит ли он как говно?
Аноним 10/03/23 Птн 10:44:59 2635470 218
>>2635364
Все что в голову пришло, это сделать обертку поверх KeyGesture и сделать те же свойства, которые будут ретранслировать свойства из экземпляра KeyGesture. Заодно свойства можно сделать INPC.
Пока не знаю поможет ли это во всех ситуациях, ведь некоторые элементы требуют именно класс KeyGesture.

Разве никому в голову не приходила идея менять хоткеи в рантайме?
Все что я видел — это очистка InputGestureCollection, но это какой-то бред или я чего-то не понимаю. Привязка существует к свойству конкретного экземпляра KeyGesture, очищая InputGestureCollection я этот экземпляр удаляю и биндинг слетает.
Аноним 10/03/23 Птн 11:20:25 2635522 219
>>2635457
Когда я делал свое дерево, у меня Group сам по себе был коллекцией. Я юзал MVVM, поэтому Group наследовала ObsrtvableCollection, чтобы можно было биндить. А сам факт добавления в Group чего либо, говорит что внутри собсно есть другие элементы.
Ничего не мешает в эту коллекцию добавить экземпляр новой коллекции Group — так выстраивается иерархия.

По итогу, дереву я скармливал ровно один элемент — Group, который был корнем всей остальной иерархии. Внутри этой корневой папки были дургие папки, а внутри этих папок еще папки.

Если ты юзать MVVM, то в TreeView там есть два темплейта
HierarchicalDataTemplate и DataTemplate. Первый распознает группы, а второй итемы.
Конечно же надо скормить в DataType тип нужного класса, к примеру
<HierarchicalDataTemplate DataType="{x:Type ns:Group}" >
тут твой темплейт
</HierarchicalDataTemplate>

<DataTemplate DataType="{x:Type ns:Item}" >
тут твой темплейт
</HierarchicalDataTemplate>


И после этого автоматом TreeView все распознает.
Аноним 10/03/23 Птн 11:39:51 2635546 220
>>2635457
>>2635522
Дальше, что это за свойство Group? Родительская группа?
Пиши Parent как для Item, так и для Group. Лучше, чтобы оба реализовали единый интерфейс (назовем его INode) со свойством Parent.

Далее, ты должен переопределить метод Add и Remove в классе Group (который у тебя будет наследовать коллекцию). В этих методах ты будешь автоматом заполнять то самое свойство Parent, или же удалять. Это позволит тебе в дальнейшем не париться по поводу контроля Parent.

После этого у тебя все встанет на свои метса. А свойства Groups и Items — хуйня из под коня, никакой универсальности. А что будет если ты захочешь добавить папку или еще какой элемент в иерархию? Что, будешь добавлять новое свойство с коллекцией этих элементов? Я уж молчу по поводу сканирования всей этой хуеты в будущем.

Ща у тебя группа и итем это совершенно не родственные элементы. А должно быть так, что (возвращаясь к началу поста) все элементы иерархии в основе своей ноды (INode). Тогда ты сможешь скармливать своей группе новые элементы, если они вдруг появятся в будущем.
Аноним 10/03/23 Птн 11:56:08 2635563 221
203048.jpg 512Кб, 1044x1024
1044x1024
>>2635457
>Пикрил 2, имя базового класса

I have a Item, I have a Group
Ammm...
>ItemOrGroup

I have a ItemOrGroup, I have a HierarchyElement
Ammm...
ItemOrGroupAsHierarchyElement

I have a YourMother, I have a Sana, I have a Class
Ammm...
ItemOrGrouprOrYourMotherOrSanaAsHierarchyElementAsClass


Назови базовый элемент нодой.
Аноним 10/03/23 Птн 13:06:40 2635645 222
image.png 14Кб, 381x303
381x303
>>2635563
>ItemOrGrouprOrYourMotherOrSanaAsHierarchyElementAsClass
Ну... В своё оправдание могу сказать, что у меня это всё как хобби и больше классов кроме этих двух не будет. Сначала я хотел сделать по-другому, но потом решил, что будет просто перебор ради двух классов, который ещё и когда-нибудь в будущем только усложнит понимание при необходимости поковыряться в этом говне.

>>2635522
>>2635546
Item и Group для примера, настоящие классы называются по-другому но наверняка всё равно тупо, но я пытаюсь... и находятся в другом проекте, там уже всё сделано (ну или почти всё), а хуйня на втором пике чтобы было понятно.
>Дальше, что это за свойство Group? Родительская группа?
Только как объект для группировки объектов класса-прообраза Item. Ни для чего больше. Типа как папки. В Item свойство Group вообще можно убрать.

>Пиши Parent как для Item, так и для Group. Лучше, чтобы оба реализовали единый интерфейс (назовем его INode) со свойством Parent.
>Далее, ты должен переопределить метод Add и Remove в классе Group (который у тебя будет наследовать коллекцию). В этих методах ты будешь автоматом заполнять то самое свойство Parent, или же удалять. Это позволит тебе в дальнейшем не париться по поводу контроля Parent.
Item и Group находятся в законченном проекте (библиотеке). Я не сомневаюсь, что он говно, но какой есть. И более того - мне кажется, что там это будет лишнее.
Аноним 10/03/23 Птн 13:29:00 2635672 223
>>2635645
>В своё оправдание могу сказать, что у меня это всё как хобби и больше классов кроме этих двух не будет.
Что пилишь?
Аноним 10/03/23 Птн 13:44:58 2635685 224
>>2635672
Пока что хочу записную книжку. Пробую так и сяк, сначала пытался смотреть, как делать "правильно" (домены и всё такое), но вопросов появлялось овердохуя и забил, стал делать как придумается. Херовастая память и постоянно хуевое состояние из-за недосыпа и неудобного рабочего места на работе, и идея записной книжки появилась задолго до того, как увлёкся программированием.
Аноним 10/03/23 Птн 14:00:04 2635700 225
Стикер 255Кб, 512x509
512x509
>>2635685
>стал делать как придумается
Сейм щит. Переделываю свой проект третий раз, пока проект не стал хоть как-то походить на "как надо".

>>2635645
>Типа как папки.
Т.е. родительской папки?

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

Ну что тут сказать? Наверно придется как-то "вручную" заполнять дерево. Смотри, тебе же не надо сканировать ВСЁ дерево вглубь? Ты выводишь на экран только ближайший под-уровень папок, тебе должно быть поебать сколько там внутри вложенных элементов.

По двойному клику условной папки, ты выводишь содержимое папки не далее одного уровня. Понимаш? Т.е. список Groups и Items. Всё.
Можно добавить свойство IsExpanded, чтобы хранить все раскрытые ноды.
Аноним 10/03/23 Птн 14:07:31 2635713 226
>>2635685
Алсо, ты знаешь что такое рекурсия?
Аноним 10/03/23 Птн 14:16:29 2635719 227
>>2635700
Там тэги (Item) и их группы/наборы. Так что выводить надо всё будет всё. А ещё там должны быть чекбоксы у каждого тэга и группы - у тэгов для присвоения к записям и потом фильтрации, у групп - чтобы включать/отключать всё, что вложено.

>>2635713
Вроде да.
Аноним 10/03/23 Птн 14:55:30 2635757 228
>>2635719
Ну тогда только рекурсия.

Функция должна сканировать один уровень вложенности, потом применяться к каждой найденной папке для поиска вложенности, пока не дойдет до упора.

Смотри алгоритмы поиска в глубину и поиска в ширину.
Аноним 11/03/23 Суб 00:06:42 2636306 229
изображение.png 137Кб, 1928x1048
1928x1048
Как вот тут добавить новую строку к таблице так, чтобы можно было таблицу сохранить и применить изменения к этой программе? А то при попытке сохранить просто предлагает сохранить файл в любом месте, а не изменить именно открытый файл.
Аноним 11/03/23 Суб 12:10:48 2636610 230
>>2636306
Учись делать миграции, code-first это лучшее что придумало человечество
Аноним 11/03/23 Суб 12:48:41 2636646 231
Какой же ссаный этот ваш KeyGesture.
Мало того, что у него ридонли свойства, так он еще не поддерживает простые хоткеи, уровня "B", или "Ctrl+B".
Если первое еще как-то логично т.к. при наборе теста в каком нибудь текстбоксе сработает хоткей, то "второе не является жестом".

Что такое жест? Нахуй он нужен? Или это та самая блядская система VS уровня "Ctrl+B, Ctrl+D", которую будет нажимать только солевой наркоман?
Аноним 11/03/23 Суб 13:16:23 2636663 232
>>2636658
Как там на джаве с новыми проектами дела?)
Аноним 11/03/23 Суб 13:21:45 2636665 233
>>2636664
Но трясешься тут ты иначе зачем коупинг выше? Сиди спокойно на своей джаве и фикси баги. Когда совсем время прижмет и кабан заставит тебя переписывать многолетнее джава легаси на дотнет то просто уйдешь в другой энтерпрайзный загон догнивать
Аноним 11/03/23 Суб 13:26:48 2636667 234
>>2636666
Слит. Также как слили джавовых бездарей в такскоме и тиньке, переписав их обмякшее под нагрузкой джава дерьмо на дотнет)
Аноним 11/03/23 Суб 18:08:37 2637053 235
>>2636658
1.1. Используй ::.
1.2. Кучу раз уже обсуждали почему Олман пизже чем K&R. И всегда основной аргумент приверженцев жаба-стиля: "Ряя-яя. Байты дорогие. Лишняя строчка глаза режет".
1.3. Ну сокращение и что. Ты только что плакался, что тебе лишняя строка глаза режет, но всякие extends/implements типа норм.
1.4, 1.5 - пустые доебы уровня скобок, даже не до семантики, а до общепринятого кодстайла языка.

2.1. Никогда не понимал, горения жабаебов с get/set. Максимально удобная штука позволяющая нормально инкапсулировать логику внутри класса.
2.2. Твои сведения устарели. Уже года 3 как есть. Правда уверен, что тут же будет высер на тему "ваши рекорды, совсем не рекорды", но да и похуй на тебя.
2.3. Лень разбирать что это в джаве, но подозреваю, что есть. В шарпе дохуя всего связанного с многопоточностью, включая всякие семафоры, локи-хуеки и прочую лабуду. Так что и такая хуета думаю найдется. Плюс в джаве до сих пор нет нормального аналога async/await, а это по моему намного сильнее перевешивает.
2.4., 3. 4.
Ты там немчинского обсмотрелся что-ли? Как там в 2016-м? Даже коментировать такую хуйню не буду.
Аноним 11/03/23 Суб 21:40:20 2637304 236
Установил VS Code+.NET+C#. Смотрю уроки. Вот мои плоды общения с терминалом:

PS C:\Trash\С#\project> dotnet --version
7.0.201

PS C:\Trash\С#\project> dotnet new console
При создании этого шаблона будут внесены изменения в существующие файлы:
Перезаписать ./project.csproj
Перезаписать ./Program.cs

Чтобы создать шаблон в любом случае, выполните команду с параметром "--force":
dotnet new console --force


Дополнительные сведения о коде выхода см. на странице https://aka.ms/templating-exit-codes#73
PS C:\Trash\С#\project> dotnet new console --force
Шаблон "Консольное приложение" успешно создан.

Идет обработка действий после создания...
Восстановление C:\Trash\С#\project\project.csproj:
Определение проектов для восстановления...
Все проекты обновлены для восстановления.
Восстановление выполнено.

Никаких файлов в папке создано не было. Что делать?
Аноним 11/03/23 Суб 21:56:16 2637328 237
.png 115Кб, 1006x755
1006x755
.png 34Кб, 568x227
568x227
.png 27Кб, 464x225
464x225
Насколько говеное решение вот так вот делать?
Аноним 11/03/23 Суб 22:09:13 2637343 238
>>2637328
Ну. Т.е. я поясню че я делаю.
У меня есть протокол. Вернее несколько.
В протоколе - есть сообщения. Все вроде понятненько.

Ну дык вот. Меня - остоебенело, что если в протоколе китайцы добавляют новый тип сообщения - приходится лезть в огромный switch и там создавать обработчик. Накидывать ему сервисы, что нужны для работы, вот это вот все.
Я решил, что будет удобнее, если будет просто ProtocolController, в котором я просто напишу новый метод по обработке сообщения, и оно типа само вот так вот "зерегистрируется".
Но конечно смущает, что 1. рефлексия. 2. Само решение - кастрированное, оно предполагает, что ответ я буду из контроллера слать, а параметры метода контроллера - будут содержать только сервисы, которые нужны мне для работы.
Аноним 11/03/23 Суб 23:26:00 2637421 239
Аноним 12/03/23 Вск 10:23:20 2637588 240
Посоны, а во что оборачивать работу с API?
К примеру, мне через IMAP нужно загрузить загрузить файлы с почты и показать юзеру папки с почты.
Это все в отдельный класс запихнуть и использовать как репозиторий или прям в презентере весь функционал реализовать?
Тоже самое с яндекс диском, нужно загружать файлы на диск, можно, конечно, напрямую в презентере все написать, но меня как-то коробит от этого.
Аноним 12/03/23 Вск 10:43:06 2637602 241
.png 12Кб, 285x448
285x448
>>2637588
Вообще не понял о чем ты.
Типичная структура современного проекта на шарпе, примерно следующая
Работа с апи - это просто вьюшка в старых терминах, т.е. тебе приходит запрос на роут, ты его передаешь в сервис, потом, если надо, от сервиса результат оборачиваешь в DTO и отдаешь клиенту.

Если ты типа оборачиваешь чужое апи, то делаешь абсолютно так же, оборачиваешь чужое апи в такой же сервис, на своей стороне - делаешь апи чтобы к тебе уже обращались, ты дергаешь сервис, сервис дергает чужое апи, результат, если надо - отдаешь клиенту, клиент - уже рисует че там ему надо на базе вашего контракта по поводу дтошек.
Аноним 12/03/23 Вск 11:39:09 2637676 242
>>2636306

//afterCreate.sql
INSERT into dbo.Sklad("Название", "Масса (кг)", "Объем (М²)", "Количество (шт)")
VALUES
('Говно', 1, 10, 1000)

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

Обернуть все в IF DB NOT EXIST и радоваться. При первом старте - все заполнишь как тебе надо.

Деды так делали, и ты так делай.


А в контексте EF - можешь просто modelBuilder.Entity<Govno>().HasData(...), но это не тру и вообще, для пидоров
Аноним 12/03/23 Вск 12:17:55 2637713 243
Вопрос на миллион долларов.
Если я "Вдохновляюсь" теперь-то открытым кодом майков в закрытых проектах, могут ли от этого быть проблемы?
Типа блин. Вот иногда же смотришь как у них там че сделано, задумываешься, чому не делать так же, раз уж они так делают.
Ну, собственно, некоторые куски из памяти восстанавливаю почти 1 в 1, пусть и для своего случая.
Смущает.
Аноним 12/03/23 Вск 13:49:48 2637812 244
>>2637713
>Смущает.
Смущаться будешь когда тебя за дрочкой на что-нибудь непотребное застукают. А в программировании вся суть состоит в том, что нехуй дважды делать работу которую уже сделали. Если кто-то уже сделал что-то хорошо, то возьми это и используй, если можешь - улучши.
Если тебя смущает правовой вопрос. То в РФ ты со своим кодом нахуй никому не нужен. Здесь тебя в первую очередь выебут за нелицензионный автокад или 1С (даже если у тебя их нет, кек). А за рубежом прав тот у кого больше бабок.
Аноним 12/03/23 Вск 14:04:52 2637828 245
>>2636658
>2.3. Отсутствие виртуальных тредов.

Так их и в джаве нет, то что есть к проду не готово
Аноним 12/03/23 Вск 14:17:22 2637845 246
>>2637828
Еще смешнее с несуществующими виртуальными тредами джавы, что оракл проигнорировал комьюнити, которое десять лет потратило на запил годных инструментов и библиотек для реактивного программирования. Типа им виднее какой путь лучше
Аноним 12/03/23 Вск 15:17:28 2637909 247
>>2636658
1.1 ну отступы можно не делать, хотя я вот все равно делаю. привычка (при этом на остальных языках отступы не делаю)
1.2 поддерживаю.
1.3 чушь. слова это уродливо. сравни бейсик и шарп. бейсик нереально читать ибо глазу легко понять символ, а вот слово нужно читать. Поэтому и на дорогах знаки это символы, а не текст (текст только там, где без него нельзя)
1.4 как раз наоборот - знаешь что обращаешься к интерфейсу и это правильно. Подчеркиваешь что тебе неважно кто там, важно что он умеет.
1.5 фломастеры. бесит только психов. сам пишу на многих языках и в каждом языке свои правила и корежит читать когда левые правила несут в язык.

2.1 так то ломбок принесли ибо даже жависты (которые законсервированные динозавры) стали ныть что "ну сколько можно писать getXXX/setXXX в 21 веке). И семантика аннотациями имхо более уродлива чем гет/сет.
2.2 ты из какого года пишешь?

2.4 ВИНформс прибит к вин (удивительно )))
Аноним 12/03/23 Вск 16:18:25 2638000 248
image 19Кб, 221x391
221x391
image 143Кб, 469x956
469x956
буэ.mp4 1196Кб, 608x1080, 00:00:06
608x1080
>>2637328
Нахуй вы это включаете.
Аноним 12/03/23 Вск 17:09:49 2638086 249
>>2638076
Что за хрень ты несешь
Аноним 12/03/23 Вск 17:44:50 2638125 250
>>2636658
> Неймспейсы. Полный пиздец. Рассинхрон с пакетами
Так неймспейс нужны для другого. Как раз они - позволяют соблюдать семантику, когда ты можешь на разных уровнях приложения.
А вот пакеты в джаве - полное говно.
> лишние отступы
Из какого года ты пишешь? Уже года 3 как - можно без отступов неймспейсы делать.
> проблемы с уникальностью названий
Как и джаве с ее пакетами, лол.
> Перенос { на новую строку
Вкусовщина. При этом - хочешь, используй Mono-стайлгайд, они - как раз не переносили.
> IZalupa как название интерфейса по дефолту
Да, ведь лучше у тебя будет интрефейс List, а потом дефолтная имплементация: ListDefault. Да? Да? Да? Да? Лучше будет IList и как человек ты будешь использовать List
> Названия методов с большой буквыIZalupa как название интерфейса по дефолту
Вкусовщина и так же зависит от конторы. У нас вот вообще другая логика организации: Все что публично - с большой, что приватно - с маленькой. При чем тут шарп вообще - хуй знает.

> Наличие бойлерплейта
Даааа. Как там очередной раз реализовывать обсервера? А, ну да, ты же поставишь пакет чей-нибудь, язык-то не предусматривает)))
> Отсутствие record
Из какого года пишешь? Есть рекорды.
> Отсутствие виртуальных тредов
Не помню про это. Может быть уже съебался, когда оно появилось.
> Прибитость гвоздями к винде
Из какого года пишешь? Буквально за 7 лет что я на шарп перебрался, ни одного приложения, которое идет потребителю - не писалось на винде и крутилось в основном на линуксах, для винды - только отдельный установочный пакет делался.

>Экосистема. У петушарпа позорная экосистема
Вот, единственный реально важный доеб. Экосистема в целом - в джаве в разы лучше. На выбор и системы сборок разные, и куча пакетов под любой вкус.
Другое дело, что это порождает ситуацию, когда: проект еще под ant сделали, чел что писал его - охуеть преисполнился и съебался в закат, теперь никто из новых сотрудников - не в состоянии собрать это говно. На шарпе - я открываю проект написанный в 2003м, студия мне предлагает обновить, конечно оно сразу не собирается, но часик посидел, поправил где надо - все, оно собирается и работает. В джаве - перенести что-то древнее, это просто такой-то экспириенс, что ебись оно в сраку, кажется что проще переписать эти ебучие 200к строк на шарп и не париться больше.

> Свобода и распределённость
Тоже странный доеб. Код открыт, спецификация - есть. Есть некоторый обосрамс, который случился с переходом с .net framework на .net core, когда половину всего отвалилось, но уже пару лет как - почти все что надо - перетащилось. А что не перетащилось - перетаскивается. При этом с открытием кода .net - резко подскочил средний уровень кода у комьюнити, аж радостно.

А теперь - мои притенении к жаве.
1. В файле - один нормальный класс. Просто 11/10 решение. Из-за этого вырастают уродливые решения, когда в класс - вкалдывают еще классы, потому что - блядь, ну, кхем, кхем, ну, АРХИТЕКТУРА, кхем.
2. Куча бойлерплейта. Каждый новый проект - начинается либо с подтягивания библиотек с этим самым бойлерплейтом, либо с реализации хуйни четырех пидорасов.
3. Отсутствие лямбд. Тут - я могу спиздеть. Когда я сваливал - не было. Было пиздец как охуенно делать класс на каждый чих. Но вроде читал, что лямбды появились
4. Отсутствие async-await. Как же охуенно - тредпулом пользоваться, пиздец просто, дайте мне тредпул, и колбек в него положить. Уууу. Блядь. Тредпул наше все! А если мне нужно бекграунд таску намутить - дайте мне Runnable. Уууу. Как же бе Runnable жить-то?
5. Зоопарк. Из-за этого зоопарка - в принципе ты не соберешь проект без IDE. Уже писал выше, как охуенно, когда дед, который знал, как собирать - съебался в закат, и больше никто в компании - не знает, как собрать то что он писал, чтобы пофиксить баг или фичу впилилть.
6. Тяжеловесность. Это просто пиздец. Я помню, как на мине писал сервер для джавы. 5к коннектов - ХУЯК, блядь, 4 гига вынь да полож. На шарпе - тасками такой же сервер - для 10к соединений 200МБ жрет и живет спокойно.
7. Без коммунити - ты в принципе не способен чет нормальное делать. Стандартный набор того что есть - крайне ущербен. В шарпе - у тебя уже есть почти все, что нужно для нормальной жизни из коробки.
Аноним 12/03/23 Вск 17:46:18 2638126 251
>>2638076
Чувачок, твой оригинальный лист 'недостатков' ничем от "нинужна" и "яскозал" не отличается. Так что завали и отползи нахуй.
Аноним 12/03/23 Вск 18:07:52 2638147 252
Почему событие KeyDown не хочет детектить сочетание клавиш "Ctrl+Y"? Событие вообще не происходит.

Просто Y детектит, так же детектит "Ctrl+Shift+Y", а это не хочет.
Аноним 12/03/23 Вск 19:01:12 2638241 253
>>2638147
ну может кто то его перехватывает раньше.
лови preview
Аноним 12/03/23 Вск 19:21:18 2638269 254
>>2638147
>>2638241
Бля, этот текстбокс, а у него куча своих внутренних хоткеев. Понял, когда не отработал Delete, хотя на других элементах точно работал.
Аноним 12/03/23 Вск 20:09:02 2638322 255
>>2638279
Из жавы куда-то делись конструкторы? Та не пизди.
А если хочешь прокидывать зависимости без использования конструкторов в шарпе - берешь и юзаешь рефлексию. Никто не мешает.
Опять же, другое дело, что код джавовский, для ньюфага из-за всей этой мумба-юмба магии становится этой самой магией. А стектрейс при ошибке - так вообще в джава - это рофл какой-то.
Или искать ошибку, когда у тебя метод, если верить ИДЕ - вызывается 0 раз, но блядь, вот почему-то вызывается, ебись как хочешь)))

Зато при упоминании свойства - такой вот сектант либо зашипит про ненужность, либо магический атрибут вспомнит. Забывая, что сама по себе жава - тот еще кастрированный кусок добра.
Я бы понял, если бы ты котлин вспоминал. Он - да, реально качественный шаг вперед. Но джава. Это рофл какой-то же. Медленная, прожорливая, еще и в своей основе - кривая в дизайне, а потому - кривоту - приходится преодолевать кучей костылей.
Аноним 12/03/23 Вск 20:30:46 2638344 256
>>2638337
Хуй пойми че ты сказать хочешь.
Любая магия в программировании - зло. Ты потом заебешься отлаживать и искать причину того, что у тебя чет в рантайме падает или течет как сука. И самое веселое, когда это происходит из-за чужой магической приблуды.
Аноним 12/03/23 Вск 20:47:32 2638356 257
У меня есть апи, его дёргает клиент(общий, он потом рассылает в клиентское приложение данные). В базе есть какие-то пользователи. Нужно сделать, чтоб для каждого пользователя дергалось апи в определенный интервал времени. К примеру, для одного пользователя каждый день в 9 утра. Я могу сохранять этот интервал в базе, но как понять, что именно в это время клиенту нужно стучать в апи? Не каждую же минуту чекать бд. Мне в голову сразу пришло сохранять это в словаре на клиенте и условно каждую минуту проверять, есть ли в это время какие-то пользователи и если есть, то стучать в апи к этому пользователю. Но я уверен, что есть способ правильнее.
Посоветуйте в какую сторону гуглить
Аноним 12/03/23 Вск 21:15:34 2638369 258
>>2638356
Quarz - библиотека для запуска периодических задач (jobs).
Для контроля времени запуска задач можно использовать Cron Expressions. Например в твоем случае для "запуск каждый день в 9 утра" крон будет выглядеть вот так "0 0 9 ?". Как хранить в бд решай сам. Можешь непосредственно в таком виде хранить или преобразовывать непосредственно перед настройкой джобы.
Аноним 12/03/23 Вск 21:15:59 2638371 259
>>2638355
Когда у тебя над методом/полем висит магический атрибут, и он за тебя чет там делает. А в широком смысле - любая хуйня, которая делает что-то неявно, скрыто от твоего взгляда и без возможности повлиять на это без жопной боли.

В шарпе - такая магия - это роутинг запросов.

В жаве - это спринговская хуйня и максимально - CrudRepository<Govno, Zalupa>.
Аноним 12/03/23 Вск 21:17:25 2638374 260
.png 166Кб, 1920x1050
1920x1050
В общем. Я послушал джава-господина и буду ближайшее время кодить с их стайл-гайдом в плане скобок. Посмотрим че выйдет.
Аноним 12/03/23 Вск 21:18:23 2638375 261
image.png 1Кб, 100x29
100x29
>>2638369
>вот так "0 0 9 ?"
Сорян, символы сожрались. На картинке правильный вариант.
Аноним 12/03/23 Вск 21:22:17 2638378 262
>>2638374
А я несколько лет пишу на жабе и плююсь от принятого здесь способа расстановки скобочек. Был бы у меня выбор, расставлял бы их как в шарпе.
Аноним 12/03/23 Вск 21:44:15 2638393 263
>>2638389
Не выёбывайся, фигурные скобки с новой строки не проходят ревью, и хуй что я сделаю.
Я бы и интерфейсы называл с I, всяко лучше, чем уродливые Impl.
Аноним 12/03/23 Вск 21:50:09 2638401 264
>>2638397
Вроде джавист, а такую хуйню несёшь, аж стыдно за коллег по профессии.
Аноним 12/03/23 Вск 21:56:54 2638412 265
>>2638386
Не только про них, но и них в том числе.

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

Я бы вообще, будь моя воля, большую часть плюшек и шарпа бы поубирал, типа асинк-эвейтов, всяких неявных захватываний переменных в лямбдах и прочего мусора. Вот был бы си, но без проблем с безопасностью, я бы всеми силами его проталкивал где только можно. Максимум, который нужно в си добавить - классы, женерики, импорты-экспорты человеческие. Собственно - все.
Аноним 12/03/23 Вск 22:32:42 2638441 266
Аноним 12/03/23 Вск 22:42:07 2638458 267
>>2638369
То что нужно, спасибо
Аноним 12/03/23 Вск 22:53:06 2638465 268
>>2638356
Альтернативой Quartz - Hangfire. Мне оно больше понравилось. Проще в настройке, работает отлично, есть дашборда из коробки.

Ну а если тебе не хочется тянуть чужую систему, то можно было бы простенький велосипедик.
Дергать базу раз в минуту - ничего плохого нет, что Hangfire что Quartz - делают именно это, просто за тебя. Базы сейчас - быстрые что пиздец и рассчитаны на тысячи-миллионы запросов чтения в секунду.
Но если не хочется каждую минуту.
Тебе просто нужно сделать сущность очереди, в которой ты рассчитываешь следующее время для старта задачи и метку добавлять. При инициализации сервиса - проверяешь, есть ли там задачи, которые надо было выполнить с прошлого раза. Если нету - ищешь запись с самой близкой меткой времени, спишь до этого времени, потом - достаешь все что тебе надо выполнить - выполняешь, обновляешь время следущего запуска, кладешь в базу, находишь блиджайшую метку времени к текущему времени - и спишь до нее. Повторяешь пока приложение не завершится.
Примерно так выглядеть запись будет:
pubic class Job{
public int Id { get; set; }
//чтобы когда грохнули юзера - все его джобы - ебнулись вместе с ним
public User User { get; set; }
// апи которое дергаешь
public string Api {get; set; }
//настройка которую будешь парсить чтобы рассчитать время запуска
public string Settings { get; set; }
//время последнего фактического запуска
public DateTimeOffset LastStart { get; set; }
//время следующего рассчетного запуска
public DateTimeOffset NextStart { get; set; }
//чтобы можно было отследить че там умерло в процессе и перезапустить если надо
public JobStatus Status { get; set; }
}
Аноним 12/03/23 Вск 22:57:17 2638469 269
>>2638454
Если ты про си/плюсы, то я на них и так работаю, лул.
Просто такое дело, что по долгу службы - я вынужден не только на си писать. Их - чтобы под устройства писать ВПО, чтобы писать всякие конфигураторы устройств, серверы по сбору данных и прочее - надо таки чет более высокоуровневое.
А еще я фронтенд на ангуляре пишу.
Да. Такие вот дела. Да.
Аноним 13/03/23 Пнд 05:22:06 2638571 270
>>2621949 (OP)
Зачем некоторые тащат помойный grpc в ненагруженные сервисы, куда прилетает максимум 5-10 запросов в минуту?
Ладно бы еще тулинг и прочая обвязка в виде мониторинга и прочих хуиток была норм. Но там все через жопу и банальное логирование делается через три пизды. Всякие моки-тесты - хуй напишешь. Нахуя страдать, шарпаны?
Аноним 13/03/23 Пнд 06:28:32 2638579 271
>>2638571
Так на раннем этапе - ты ж не знаешь, че там будет нагружено, че нет.
Плюс - делать зоопарк из технологий тоже не хочется: Тут мы рестом, тут grpc, а тута - вообще свой протокол придумаем, чтобы охуеть как круто было.
Плюс, бананльно, это может быть прописано в требованиях к сервису - потому пиши.
Аноним 13/03/23 Пнд 15:58:37 2639003 272
>>2638579
>Так на раннем этапе - ты ж не знаешь, че там будет нагружено, че нет.
Про преждевременную оптимизацию что-нибудь слышал? Зачем себе усложнять жизнь, если тебе неизвестно, что сервис в принципе будет нагруженным? И да, сервис уже давно в эксплуатации - 3 года. Количество запросов не выросло.
Аноним 13/03/23 Пнд 18:15:44 2639162 273
Почему событие dataGridView1_CellValueChanged вызывается только когда ячейка изменена И мышка кликнула по другой ячейку, а не сразу когда произошёл ввод?
Аноним 13/03/23 Пнд 18:23:22 2639175 274
>>2639162
Тебе нужно такое событие, которое будет генерироваться при нажатии каждой кнопки?
Аноним 13/03/23 Пнд 18:24:31 2639180 275
>>2639175
Нет, только когда произошёл ввод в ячейку существующей строки.
Аноним 13/03/23 Пнд 18:29:52 2639184 276
>>2639180
Как определить, что ввод закончился, если клик по другой ячейке тебе не нравится?
Аноним 13/03/23 Пнд 18:38:29 2639191 277
>>2639184
Мне было бы достаточно того, что ввод начался.
Аноним 13/03/23 Пнд 18:54:19 2639214 278
>>2639191
И ты предлагаешь на каждый инпут - дергать событие?
Просто обычно - в датагриде - при изменении значения - сразу сохраняют в базу/отправляют какому-нибудь контроллеру, который в базу сохраняет/вью модельке отправляют, которая отдает модельке, которая в базу сохраняет. Ебатория будет та еще.
Но вообще, тебе никто не мешает свое событие намутить как ты хочешь.
Аноним 13/03/23 Пнд 18:58:41 2639220 279
.png 92Кб, 256x256
256x256
А про мою фигню никто так ничего и не сказал(((
>>2637328
Аноним 13/03/23 Пнд 19:12:15 2639242 280
изображение.png 88Кб, 1087x673
1087x673
изображение.png 17Кб, 746x249
746x249
У меня аномалия такая есть. Когда я вношу в таблицу значение кликаю по другой ячейке той же строки и нажимаю "обновить", то ничего не сохраняется, а если по ячейке другой строки, то всё сохраняется. В чём же проблема? Никак понять не могу. Нужные строчки отрабатывают, я такое проверяю через мессагебокс.
Аноним 13/03/23 Пнд 19:22:28 2639248 281
>>2639242
Тут никто винформсы не знает.
Аноним 13/03/23 Пнд 19:39:47 2639263 282
>>2639248
Я знаю, но мне лень.
Аноним 13/03/23 Пнд 19:43:21 2639268 283
>>2639242
Ох ебать. Может есть какой-то redraw? Должна быть какая-то функция принудительного обновления UI. Именно поэтому нежелательно использовать контролы в качестве хранилища данных — они медленно обновляются или не успевают обновиться.
Месседжбокс не стоит юзать, он запускается с задержкой, он перерисовывает интерфейс или меняет фокус окна, короч с ним часто все работает. Попробуй Debug.WriteLine("Сообщение") предварительно открыв Окно Интерпретации в Visual Studio.

В WPF, если юзать MVVM, то у текстбоксов и вероятно итемов есть так называемый параметр UpdateSourceTrigger.
К примеру флаг UpdateSourceTrigger=PropertyChanged заставляет обновлять свойство при каждом изменении, а UpdateSourceTrigger=LostFocus обновляется только при потере фокуса (он по-умолчанию).

А еще нах ты Delete срешь в каждой строке? Разве она не должна быть рядом с кнопкой "Обновить"?
Аноним 13/03/23 Пнд 19:43:56 2639269 284
>>2639263
Ты в курсе, что из-за лени написал в 50 раз больше строк?
Аноним 13/03/23 Пнд 19:46:01 2639272 285
>>2639269
Больше чего? Точно меньше модного WTF.
Аноним 13/03/23 Пнд 19:53:24 2639282 286
>>2639268
У меня, оказывается, приобновлении данных в БД не отрабатывает sqlDataAdapter. Только при добавлении и удалении строк работает. Я ХЗ, что делать даже. Сижу ищу решение, и всё как-то не то.
Аноним 13/03/23 Пнд 19:54:45 2639283 287
>>2639272
Даже если не заморачиваться с автогенерацией столбцов, то в втф понадобится ровно 7 строк для привязки каждого столбца (если не юзать хитровыебанные стили). И ты можешь настроить поведение обновления: хош при каждом вводе символа, хош при переключении на другую ячейку. Там даже кнопка "Обновить" не понадобится.
Аноним 13/03/23 Пнд 20:05:12 2639290 288
2023-03-1320-03[...].png 18Кб, 1109x480
1109x480
Аноним 13/03/23 Пнд 20:06:47 2639291 289
M e T a N i T
Аноним 13/03/23 Пнд 20:08:29 2639295 290
>>2639282
Я не знаю sql, а в чем отличие метода Fill от Update?
Аноним 13/03/23 Пнд 20:15:57 2639299 291
2023-03-1320-14[...].png 1Кб, 319x63
319x63
>>2639295
А вот еще в датасете нужно обязательно применить изменения
Аноним 13/03/23 Пнд 20:32:47 2639316 292
>>2639242
Я бы тебе помог, но не буду принципиально, пока ты не перепишешь нормально.
Аноним 13/03/23 Пнд 20:42:10 2639327 293
Че делать, если при тестировании нагрузки я получаю:
The connection pool has been exhausted, either raise MaxPoolSize (currently 100)

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

Ну и да. Проблема не только при большой нагрузке встречается, но и при оч долгой работе сервера, допустим, без велосипеда с очередью - через полгода аптайма - оно просто упало нахуй.
Просто при большой нагрузке - оно быстро вылетает.
Аноним 13/03/23 Пнд 20:47:27 2639329 294
>>2639295
Fill выводит данные из БД, а update вводит их в БД.
Аноним 13/03/23 Пнд 20:52:38 2639332 295
>>2639327
Ну. Т.е. в чем проблема собственно.
При ебейшей нагрузке - npgsql - создает кучу коннектов.
Но природа EF и npgsql такова, что контексты БД - создают эти коннекты на свой поток. И потом, как нагрузка спала - используется один-два реальных коннекта, остальные - просто висят, но может случиться страшное - и родится новый тред, который попробует новое соединение открыть, и вот тогда - сразу пизда.

Как я решил в свое время. Я, как уже сказал, сделал велосипед с очередью обработки запросов, там - 10-20 воркре-тредов - очередь обрабатывали, брали из очереди, создавали контекст. Все норм работало. Но это было жутко неудобно, да и со стороны смотрится уебищно что пиздец. Оно работало правда.
Другое решение - не пулить коннекты, тогда после отработки запроса - реальный коннект - закрывается, но это сразу пизда производительности.

В тырнетах - я чет единственное предложение что вижу - ставить приблуду посредине между приложением и БД, которая будет оборачивать кучу контексто в один коннект и уже через него работать. Но быстрый гуглеж говорит, что приблуда платная, а я на это идти не хочу в данный момент.
Аноним 13/03/23 Пнд 21:55:29 2639357 296
b18cc3932a57c36[...].jpg 77Кб, 900x900
900x900
Вопрос по биндингам.

Допустим элемент страницы биндится к дата контексту этой страницы.

И вот я меняю страницу на новую и я не хочу, чтобы старая продолжала обновляться. Я беру и присваиваю null в DataContext. Что там под капотом? Автоматом как-то происходит анбиндинг или что?
Аноним 13/03/23 Пнд 22:49:31 2639386 297
.png 19Кб, 514x405
514x405
Как правильно описать примерно следующую логику?
Студия просто говорит что код - говно, ставит 50 баллов в индексе удобства поддержки. Портит всю статистику.
А как иначе - хз.
Аноним 13/03/23 Пнд 23:12:49 2639411 298
изображение.png 190Кб, 610x714
610x714
Аноним 13/03/23 Пнд 23:19:33 2639421 299
>>2639411
Бляя ща опять начнётся
Аноним 13/03/23 Пнд 23:29:05 2639429 300
>>2639411
Ты поехавший сектант.
>int func() {
>}
Смотрится логично, т.к. начало не у пустой строки.
Аноним 13/03/23 Пнд 23:31:46 2639430 301
>>2639429
А вот и поехавший сектант прибежал.
Аноним 13/03/23 Пнд 23:32:51 2639431 302
>>2639430
Я тебя первым объявил.
Аноним 13/03/23 Пнд 23:36:06 2639434 303
>>2639431
Зато я первым скажу, что ты душнила.
Как известно, душнила тот, кого первым назовут душнилой
Аноним 14/03/23 Втр 00:49:58 2639460 304
>>2639386
- нет модификатора доступа
- не возвращай void
- m, u - здесь тебе не C, за такое пиздят.
- user.Login - Если user это поле класса, то либо this.user, либо, что лучше - _user
- блок связанный с city - вынести в отдельный сервис.
- алсо, если метод OnAuthMessage, является не методом сервиса, а методом какой-нибудь модели, то обращаться из него в бд, вообще пиздец.
- respoce - что это? (подозреваю, что должно быть response)

Плюс еще возможно до обработки ошибок доебаться, но хер знает, может она у тебя снаружи прикручена, то х.з.
Аноним 14/03/23 Втр 00:53:53 2639462 305
Аноним 14/03/23 Втр 01:05:54 2639467 306
>>2639460
Проверил эти ваши метрики у себя тоже.
79 баллов это норм? Картину портит Serilog, лол.
Аноним 14/03/23 Втр 03:55:22 2639486 307
Чтобы поменять цвета comboboxа в wpf нужно написать ~300 строк кода, они это серьезно?
Аноним 14/03/23 Втр 07:41:12 2639515 308
Аноним 14/03/23 Втр 10:23:57 2639546 309
>>2639486
Ну вот такие минусы полной кастомизации, которая взамен дает тебе возможность переделать комбобокс как угодно. Ну а если ты не собираешься переделывать стиль целиком, то нах тебе впф?
Аноним 14/03/23 Втр 13:26:37 2639716 310
>>2639546
кастомизация тут не причем. тут РУКОЖОПСТВО разрабов, которые в дефолтный стиль ХАРДКОРЯТ цвета

в итоге получается тупость
в вин 7 ты допустим меняешь цвет выделения с помощью банального задания в ресурсах контрола цвета с нужным кеем
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
а в вин 10 это не работает уже (или же вообще никогда не работало даже в вин 7) и нужно приседать с бубном.
И подключать триггеры (если повезет), а если не повезло, то... ради замены одного цвета нужно перегружать ВЕСЬ шаблон с триггерами и всем этим.
Аноним 14/03/23 Втр 13:27:34 2639718 311
>>2639716
fix: дефолтный стиль -> дефолтный шаблон
Аноним 14/03/23 Втр 13:39:38 2639734 312
>>2639716
>кастомизация тут не причем. тут РУКОЖОПСТВО разрабов, которые в дефолтный стиль ХАРДКОРЯТ цвета
Это да. Причем иногда даже забывают биндить свойства в шаблоне — ты их меняешь, а изменений нет. Но это касается только сложных контролов, из-за чего у меня даже возникает подозрение, что это сделано умышленно, ибо будет 100500 биндингов к 100500 депенденси проперти, что не способствует производительности.

>И подключать триггеры (если повезет), а если не повезло, то... ради замены одного цвета нужно перегружать ВЕСЬ шаблон с триггерами и всем этим.
Триггером в большинстве случаев ты должен менять только свойства стиля, для этого не нужно переписывать весь шаблон. Однако шаблон должен биндится через TemplateBinding к этим свойствам.

Триггер не должен менять свойство конкретного элемента в контроле, если только он не интегрирован в самом шаблоне.
Аноним 14/03/23 Втр 13:49:16 2639751 313
>>2639734
Ах да, еще все стили для комплексных контролов — это сборная солянка из примитивных контролов, поэтому жесткий биндинг свойств во-первых бессмысленно переопределяет стиль, а во-вторых добавляет тебе лишней работы по контролю всего зоопарка стилей.

В большинстве случаев я меняю стиль TextBlock и мне не надо париться с прописыванием стиля в других элементах, где он встречается. Но это касается для случаев, когда ты меняешь полностью тему, а не какой-то конкретный контрол. По факту у меня словарь со стилями для всех элементов.
Аноним 14/03/23 Втр 14:53:22 2639833 314
изображение.png 29Кб, 458x299
458x299
Здравствуйте, есть вот такой метод, что делать если не получилось получить список валют и я попал в блок catch? Добавить в лог и...вернуть null, чтобы программа продолжила работать? Или как тут лучше сделать?
Аноним 14/03/23 Втр 14:56:41 2639840 315
Аноним 14/03/23 Втр 14:57:43 2639843 316
>>2639833
добавить в лог и пробросить исключение. Его поймает тот, кто знает что с ним делать.
Аноним 14/03/23 Втр 15:02:10 2639847 317
>>2639843
Проект в соло делаю, поэтому спрашиваю
Аноним 14/03/23 Втр 15:11:07 2639864 318
>>2639847
Если не знаешь что делать с исключением на каком то уровне - значит ты должен либо не ловить там, либо пробросить дальше. И так поднимаешься пока не попадешь в место где знаешь что с ним делать.
Даже если это на самом верхнем уровне или вообще нигде (fail fast подход)
Аноним 14/03/23 Втр 15:15:09 2639867 319
Аноним 14/03/23 Втр 15:41:59 2639908 320
>>2639867
То есть следуй правилу "я не знаю что делать с исключением - пусть разбираются выше".
Поэтому на этих уровнях catch и не нужен. Исключения
1 ловим, логгируем и кидаем дальше
2 ловим, добавляем Data и кидаем дальше
3 граница контекста - ловим и оборачиваем в новое.
Аноним 14/03/23 Втр 15:49:26 2639915 321
>>2639847
>Проект в соло делаю, поэтому спрашиваю
Он имел ввиду не конкретного чела, а функцию, которая "знает что делать дальше", предполагая что твоя локальная функция не занимается самодеятельностью вроде закрытия приложения или попытками исправить ошибку влезая туда, куда не стоит.

Но есть функции, которые в принципе выдают исключение в качестве одного из ответов, такие исключения никуда не пробрасываются и даже не пишутся в лог. К примеру парсер цвета. Пока пользователь набирает условное значение #bb6c8a, парсер будет выдавать исключение и это не должно засирать лог.

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

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


>Добавить в лог и...вернуть null
Зависит от того насколько критична ошибка.
Можешь в лог, можешь в UI написать пользователю, что возникла проблема, можешь рамочку подсветить.

Если твоя функция НЕ обрабатывает данные в процессе набора текста, то она вообще не должна обрабатывать исключения. Ибо обработав исключение что она сделает? У тебя моментально возникает этот самый вопрос "а что дальше?". Родительский метод запишет твой null в базу данных или отменит операцию записи? Если отменит, то чому бы ему не ловить эксепшин, раз он принимает решение?
Аноним 14/03/23 Втр 17:40:09 2640035 322
>>2639833
Используй ФП и Result<T>.
Когда распробуешь - подсядешь и уже не сможешь писать так как раньше. И не сможешь быть пидором, пробрасывающим обрабатываемые исключения между слоями.
Аноним 14/03/23 Втр 18:18:19 2640075 323
>>2640035
>ФП
Что это? Result<T> видел только в тасках.
Аноним 14/03/23 Втр 18:24:16 2640087 324
>>2640075
Функци-анальное программирование.
Аноним 14/03/23 Втр 19:52:07 2640232 325
изображение.png 39Кб, 694x426
694x426
>>2639290
А где там сохранение данных в БД? По твоей ссылкке я вижу только заолнение таблицы данными из БД.
>>2639299
Не помогает. Что именно я делаю не так? Как новые значения в ячейках существующих строк сохраняться в БД?
Аноним 14/03/23 Втр 19:54:32 2640233 326
>>2640035
да прямо таки
вот я под андроид пишу исключительно в реактивном стиле
но в шарпе это ничуть не приживается - оверхед видно, а пользы не оч.

так что на любителя.
Аноним 14/03/23 Втр 19:55:18 2640235 327
.png 100Кб, 979x785
979x785
.png 43Кб, 683x427
683x427
.png 38Кб, 601x435
601x435
Аноним 14/03/23 Втр 19:56:12 2640236 328
>>2640235
Да. На первом скрине - обосрамс небольшой, но его легко заметить, так что не критично.
Аноним 14/03/23 Втр 20:49:43 2640296 329
>>2640233
>вот я под андроид пишу исключительно в реактивном стиле
>но в шарпе это ничуть не приживается - оверхед видно, а пользы не оч.
Реактивность насколько я знаю в там где UI и десктоп фреймворках вполне себе используется. А вот в бэке она просто нахуй не уперлась, поэтому и не используется. А ФП это про другое.
Аноним 14/03/23 Втр 20:52:19 2640300 330
Аноним 14/03/23 Втр 21:34:56 2640346 331
>>2640232
Бамп. Помогите, пожалуйста, разобраться.
Аноним 14/03/23 Втр 22:31:36 2640426 332
>>2640235
Интересно, было что-то похожее на второй скрин, но я решил отказаться хз почему. Только я возвращал BaseResponse, который состоял из кода ошибки, описания и Data, если она есть
Аноним 15/03/23 Срд 04:59:40 2640608 333
Безымянный.png 13Кб, 529x402
529x402
Почему нельзя написать просто DataContext = user? Зачем создается свойство User User?
Аноним 15/03/23 Срд 11:01:31 2640737 334
>>2640346
Я вообще логики не пойму. Почему AcceptChanges идет после Update, в моем понимании нужно сперва применить изменения, а потом уже пихать в базу данных. Но NET название не всегда соответствует функционалу, или там такой многоступенчатый смысл, что сходу не допереть.
Я бы порекомендовал для начала повторить пример метанита и понять работает ли.

>Почему нельзя написать просто DataContext = user? Зачем создается свойство User User?
Лично я так делаю потому, что DataContext имеет тип Object и если для биндингов все норм, то для меня это неудобно — хочется видеть данные нужного мне типа. Чисто для внутреннего удобства.

Только я не понял, схуя ли назначение на свойство user идет при инициализации, а не при событии DataContextChanged. Вот щас "условный" пользователь в ходе работы приложения сменит DataContext, а в user останется старый экземпляр и усё, приехали.
Аноним 15/03/23 Срд 11:18:46 2640758 335
Есть условный INPC класс ColorData в котором есть свойство RGB. Это свойство тоже является INPC классом, в котором есть свойства R, G и B.

Можно ли меняя к примеру свойство R как-то уведомить, что изменился весь RGB? Или только подписка на событие OnPropertyChanged? Просто получается геморный Disposable класс, который нужно высвобождать.
Аноним 15/03/23 Срд 12:11:32 2640800 336
Всем привет, подскажите, пожалуйста, как тут быть. Имеется Windows Server 2012, из AD нужно вытаскивать пользователей, чей пароль истекает через 10 дней, потом надо брать этих людей и им на email высылать поедупреждение. Написал powershell скрипт, чтобы вытаскивать пользователей на стороне сервера, отправку писем тоже нет проблемы реализовать. Вопрос такой: как мне связать мою программу и AD, может есть api какой или как мне тащить данные в програму?
Аноним 15/03/23 Срд 12:25:35 2640812 337
Аноним 15/03/23 Срд 14:24:59 2640921 338
>>2637602
У меня клиент.
Нужно работать с IMAP, получить папки, также скачивать письма и приложения к письмам.
Еще нужно юзать гугл диск апи и яндекс диск апи.
Аноним 15/03/23 Срд 14:30:25 2640927 339
Вот есть у меня событие
private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
//
...
//
}
А как пометить цветом ячейку, значение которой было изменено? В интернете я нашёл только строчку вроде "dataGridView1.Rows[e.RowIndex].Cells[1].Style.BackColor = Color.Red", но как получить координату ячейки автоматически, как еслибы существовал метод e.CellIndex?
Аноним 15/03/23 Срд 14:49:37 2640969 340
>>2640927
Простите, а нахуя?
Тебе пихается экземпляр этой ячейки через sender. Просто приведи ее к типу ячейки Cell (или что там) и делай с ней что хочешь.

При изменении ячейки, эта ячейка вызывает событие и отправляет себя в качестве сендера (буквально кто отправитель), попутно отправляет необходимые данные в качестве EventArgs (котоырй DataGridViewCellEventArgs).
Аноним 15/03/23 Срд 14:54:20 2640976 341
Про TreeView попиздели, теперь можно попиздеть про DataGridView.
Аноним 15/03/23 Срд 14:57:36 2640984 342
>>2640927
> как еслибы существовал метод e.CellIndex?
e это EventArgs т.е. аргументы события — некая сопутствующая информация. Там вряд ли должны находиться методы, там могут быть только свойства.
Аноним 15/03/23 Срд 14:59:52 2640987 343
>>2640976
Че бухтишь? Твой любимый Виндоу Формс. Все гнал бочку на WPF, а как дело зашло за формсами, так все утихли.
Аноним 15/03/23 Срд 16:13:16 2641058 344
>>2640987
поддерживаю. в WPF это решается элементарно.
Аноним 15/03/23 Срд 16:51:55 2641140 345
>>2640608
Затем что создано оно для других причин. Видно же что это не MVVM.
Остальное артефакты записи
Аноним 15/03/23 Срд 17:51:30 2641269 346
>>2640608
Чтобы каждый раз при обращении к вьюмодельке не приводить типы.
Аноним 15/03/23 Срд 22:33:18 2641598 347
image.png 16Кб, 620x307
620x307
image.png 7Кб, 799x445
799x445
Нужна помощь по коду, уже который час сижу не знаю как реализовать эту хуйню, в общем нужно реализовать удаление строчки из datagrid`a, но максимум что получалось это удаление всех строчек по нажатию на кнопку, не знаю че делать помогите прошу иначе я ебнусь сейчас
Diazepam12#8984 дс для связи
Аноним 16/03/23 Чтв 00:49:41 2641720 348
Аноны, подскажите по типу запуска обработчика для клиента при общении сервер-клиентых

Потенциально до нескольких сотен клиентов одновременно, пакетов много, но их размер исчисляется максимум парой десятков байт

Имею TcpListener, который делает делает accept на входящие коннекты

И вот здесь затык, как мне лучше сделать запуск обработчика клиента, в качестве тасок или выделять каждому клиенту свой тред с обработчиком
Аноним 16/03/23 Чтв 01:00:57 2641724 349
>>2641720
ЗЫ
Исходно намеревался стартовать обработчики через Task.Factory.StartNew(handler) с опцией LongRunning

Но перечитал стэковерфлоу(вьебал говна) и теперь сомневаюсь в своей компетенции по данному вопросу
Аноним 16/03/23 Чтв 01:15:30 2641732 350
>>2641724
ЗЫЗЫ

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


Сам спросил - сам ответил
Аноним 16/03/23 Чтв 04:06:38 2641773 351
Аноним 16/03/23 Чтв 10:59:44 2641870 352
изображение.png 46Кб, 1005x205
1005x205
Здравствуйте. Имеется вот такой XML:
<?xml version="1.0" encoding="utf-8"?>
<Objects>
<Object Type="System.Management.Automation.PSCustomObject">
<Property Name="EmailAddress" Type="System.String">Pidor.Pidorov@gamil.com</Property>
<Property Name="ExpirationDate" Type="System.DateTime">21.07.2022 10:54:59</Property>
</Object>
<Object Type="System.Management.Automation.PSCustomObject">
<Property Name="EmailAddress" Type="System.String">Slavka.Pavlov@mail.r0</Property>
<Property Name="ExpirationDate" Type="System.DateTime">23.02.2021 5:51:59</Property>
</Object>
</Objects>
Помогите, пожалуйста, вытащить property с атрибутом Name="EmailAddress".
Я смог вытащить первый элемент с Name="EmailAddress", но вот второй не получается. Мои потугуи на картинке.
Пример с msdn https://learn.microsoft.com/ru-ru/dotnet/standard/linq/find-element-specific-attribute
Аноним 16/03/23 Чтв 11:02:14 2641874 353
>>2641870
Пример не смог адаптировать, если что.
Аноним 16/03/23 Чтв 12:10:09 2641928 354
Аноним 16/03/23 Чтв 13:32:35 2641968 355
Почему мне ебучая студия выдаёт null там где НЕТ ЕБУЧЕГО null, ёбаный рот, сука?
visualsToXpsDocument.BeginBatchWrite();
for (int i = 0; i < paginator.PageCount; i++)
{
visualsToXpsDocument.Write(paginator.GetPage(i).Visual);
}
visualsToXpsDocument.EndBatchWrite();
Просто записываю visual в xps документ и мне на 3 элементе выдаёт null, хотя там 146% не null. Если просто записать так
visualsToXpsDocument.Write(paginator.GetPage(2).Visual);
То всё нормально. Можно хоть 100 объектов записать таким образом и никаких null не будет. Но в цикле, сука, просто null и всё. Если заранее записать visual в коллекцию и потом по индексу к ней обращаться
visualsToXpsDocument.Write(visuals[0]);
То вообще ни одного элемента не записать, в цикле или не цикле - похуй, сразу null, хотя все элементы в коллекции нормальные

Что это за бред ебаный?
Аноним 16/03/23 Чтв 17:18:28 2642230 356
хы.webm 574Кб, 1280x720, 00:00:04
1280x720
Частенько в своих мыслях обсуждаю с вами те или иные вопросы, пытаюсь найти способы решения задачи. И знаете что? Вы мне помогаете! Хоть вы об этом и не подозреваете. В 99 процентах случаев мне даже не приходится писать пост в треде. Спасибо!
Аноним 16/03/23 Чтв 20:02:06 2642410 357
.png 403Кб, 888x752
888x752
.png 1461Кб, 1600x1200
1600x1200
>>2642230
Всегда пожалуйста!
А теперь ты должен поставить этот стикер и обоину в свою студию.
Аноним 16/03/23 Чтв 20:18:11 2642429 358
.png 90Кб, 676x753
676x753
Ну. Вот я и наткнулся на ситуацию, когда скобка открывающая - мешает.

Я раза с 10 заметил, где кончаются аргументы конструктора и начинается тело.
Придется обратно вертать(((
Аноним 16/03/23 Чтв 21:47:21 2642517 359
>>2642429
>где кончаются аргументы конструктора и начинается тело.
Ну это решается просто, добавь пустую строку между сигнатурой и телом метода... Ой бля, падажди. Это же та же самая хуйня против которой сражаются адепты жабаскобок.
Аноним 16/03/23 Чтв 21:51:38 2642520 360
>>2642517
Ну. Видимо да. Придется возвращаться к шарповским скобкам.
Целых 4 дня получается продержался.

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

СЛОЖНА.

Вот почему нельзя как сишники - писать сокращениями-то? У них в 100 символов умещается имя, 12 аргументов и вообще.
Аноним 16/03/23 Чтв 22:27:58 2642555 361
>>2621949 (OP)
Аноны, как вы думаете, легче устроиться джуном, если за плечами есть несколько лет фронтенд разработки (typescript)? Или всем похуй?
Аноним 16/03/23 Чтв 22:30:20 2642557 362
>>2642555
Если не только кнопки красил, можешь даже миддлом устроиться при желании.
Аноним 16/03/23 Чтв 22:35:56 2642560 363
>>2642557
Ну на react и vue кнопки обычно не красят.
>можешь даже миддлом устроиться при желании
Слабо себе представляю, как человек из другой области (хоть и знакомый с программированием) может сразу устроиться мидлом. В продакшене я много раз встречался с ситуациями, когда даже при наличии теоретических знаний можно погореть из-за отсутствия практического опыта.
Но за поддержку спасибо!
Аноним 16/03/23 Чтв 23:17:55 2642577 364
>>2642555
Я, как дед, все еще считаю, что программирование - это про способы мышления.
Ну так вот. Мидл отличается от джуна, в плане мышления, что у него - внезапно должна была начать закрадываться мысль, что код, сам по себе - нихуя не стоит и не нужен, ваш код - способ удовлетворить потребность клиента и все вот это вот.
Ну так вот. А дальше, как дед продолжаю. Все языки +- похожи. Я начинал в школе с паскаля, в вузе - плюсы, на работе джава-шарп-питон. Фундаментальные различия - не то чтобы присутствуют, Ну, т.е. да, можно сказать, что вот там ты можешь работать с памятью напрямую, тут у тебя сборщик мусора, там ты в песочнице вообще возишься. Но вцелом, если ты в состоянии самостоятельно написать что-то уровня ПХП, ну или там свой интерпритатор команд, компилятор, приложение с системой плагинов; то опять же, фундаментально - отличаться один язык от другого - не будет.
К чему я. К тому что все зависит от того на какой ты стадии развития.
Про развитие - легче будет. Какие-то же знания про то как гоняются твои запросики до сервера уже должен был получить, представлять что такое БД, уметь простенькие SQL-запросы писать и вот это вот все. Ну. Т.е. знания некоторые есть, теперь - смотришь с другой стороны и должно быть полегче. Как с изучением других языков: знаешь английский, француский будет выучить легче, немецкий - еще легче; японский - будет так же легче учить, чем если бы ты его первым после родного решил осваивать.
А про найм. Ненулевая вероятность, что для ХРа - твой опыт - не опыт, так что придется по общим правилам, т.е. на рандоме.
Аноним 16/03/23 Чтв 23:51:24 2642612 365
>>2642577
>Я, как дед,
опять забыл выпить свои таблетки.
Аноним 17/03/23 Птн 00:09:29 2642625 366
>>2642577
А теперь время хуевых аналогий.
Переучиваться с одного стека на другой - это примерно как умея играть на праворукой гитаре, переучиться на леворукую.
В теории это выглядит не сложно, но пипец как геморно на практике. И в некоторых аспектах сложнее чем если учиться сразу на леворукую гитару.
Да, тебе не нужно заново изучать теорию музыки и основы игры на гитаре в этом аспекте проще. Но тебе не просто приходится нарабатывать новые моторные навыки с нуля, а сначала ломать очень прочно закрепленные старые. И для многих это может стать более тяжелым, чем освоение с нуля.

Мой поинт в том, что люди разные и для некоторых перейти в новую парадигму может и не быть проблемой, но для некоторых (и не факт что их меньше), это может быть сложным процессом требующих специфических усилий (а не просто 'выучить новый стек'). Т.к. фундаментально хе-хе программирование - это такой же навык, как и игра на гитаре или езда на велосипеде (попробуй научись ездить на веле у которого руль в обратную сторону от колес вращается). И он где-то наполовину состоит из понимания, а на вторую из обычного задрачивания свое нейросети.
Аноним 17/03/23 Птн 10:24:30 2642814 367
Аноним 17/03/23 Птн 12:10:03 2642881 368
>>2642814
42
автор хуевых аналогий
Аноним 17/03/23 Птн 16:30:23 2643169 369
Как добавить библиотеку dll на Core без Nuget? Какого хуя это требует загрузки на сервера?
Аноним 17/03/23 Птн 16:38:11 2643182 370
>>2642814
Дед правильно говорит
Как только понимаешь очередную концепцию, то язык уже не имеет значения.

Потому первый яхык учить сложно, а второй+ зависит от твоего понимания концепций.
Аноним 17/03/23 Птн 16:38:59 2643184 371
>>2643169
Я уточню.

Допустим у меня есть библиотека А
В нее добавлена библиотека Б

А теперь мне нужно библиотеку А поместить в решение, в котром УЖЕ есть библиотека Б. И тут происходит конфликт неймспейсов.

У меня раньше такой хуйни не было с библиотеками. У меня dll как копировалась в сборку и кому нужно — тот брал. Я мог в любой проект импортировать библиотеку без каких либо конфликтов с соседними.
Аноним 17/03/23 Птн 16:40:06 2643185 372
>>2643182
>>2642881
Пиздуйте со своей философией в скилбокс, долбоебы.
Аноним 17/03/23 Птн 16:40:31 2643186 373
>>2643184
>И тут происходит конфликт неймспейсов.
шта? какой еще конфликт.
Аноним 17/03/23 Птн 16:52:53 2643195 374
>>2643186
Что-то типа неоднозначность имен. Студия похрустела и чет восстановилось.
Аноним 17/03/23 Птн 18:38:33 2643383 375
>>2642625
Плохая аналогия. Интеллект не моторика, понимать можно хоть сколько парадигм, они друг другу не мешают, а моторика мешает. Если же у человека только одна парадигма в башке помещается как моторика, перед вами скудоум, просто даун.
Аноним 17/03/23 Птн 19:10:47 2643417 376
А существует ли аналог наследования только применительно к проектам? Есть проект, основа которого неизменна, но мне нужно обмазать его доп. контентом.

По итогу хотелось бы иметь общий неймспейс, как если бы это был один проект.
Аноним 17/03/23 Птн 19:20:07 2643427 377
>>2643417
А чем обычные либы не дают нужного? никто не запрещает создать MyLibExt, добавить туда MyLib и заюзать тот же неймспейс.

также есть понятие shared project в студии, хотя лично мне сложно придумать где бы не хватило либ (ну кроме проблем области видимости, но зачем себе их создавать)
Аноним 17/03/23 Птн 19:33:50 2643432 378
>>2643427
Я понял, но для этого классы должны иметь хотя бы неймспейс второго уровня. У меня щас все в корневом неймспейсе, но это уже мои проблемы.
Аноним 17/03/23 Птн 19:58:19 2643453 379
>>2643432
>но для этого классы должны иметь хотя бы неймспейс второго уровня
????
Аноним 17/03/23 Птн 21:02:52 2643501 380
.png 17Кб, 266x654
266x654
.png 106Кб, 918x546
918x546
Чем больше я ебусь с этой тем больше ловлю себя на мысли, что объективно достаточно было вот такой структуры(((
Первое что сейчас. Второе, что мне было надо и что кажется было бы правильнее.
Аноним 17/03/23 Птн 21:49:34 2643536 381
>>2643501
>Чем больше я ебусь с этой тем больше ловлю себя на мысли, что объективно достаточно было вот такой структуры
Ты себе даже не представляешь на сколько. На проде один раз только писал тсп-сервак, для одной железяки.
Аноним 17/03/23 Птн 22:03:40 2643550 382
>>2643536
Нуууу. Если так рассуждать - ниче не надо делать же.
Просто все эти моменты.
Вот я делал-делал. Пришло понимание, что есть всякие FTP, где на сервере одновременно по UDP и по TCP и надо как-то это тоже учитывать и все такое. А сделать все эти диспечеризации сообщений и прочее - нах не упало, если у тебя протокол хорошо описан и там никаких особых вещей быть не может.
А SNMP - ну, пиздец, я заебусь с этой ASN.1 и мибами. Не люблю SNMP, но только для них и кажется было бы полезно. Правда там нужно было бы с UDP начинать.
Аноним 17/03/23 Птн 22:09:36 2643557 383
>>2643550
> что есть всякие FTP, где на сервере одновременно по UDP и по TCP и надо как-то это тоже учитывать и все такое

на самом деле не надо.
FTP работает как комбинация контрольного соединения TCP и нескольких TCP-соединений с данными.

Хуй знает что тут у вас происходит, просто зашел поправить.

А SNMP, конечно, пиздец.
Аноним 17/03/23 Птн 22:14:22 2643564 384
>>2643557
> на самом деле не надо.
> FTP работает как комбинация контрольного соединения TCP и нескольких TCP-соединений с данными.
Точно? Я почему-то в голове помню, что там слушается порт UDP который ловит от сесии команды всякие. Может быть я еблан и себе это сам придумал.
Аноним 17/03/23 Птн 22:20:11 2643576 385
>>2643564
точно.
с SIP и прочими медиа-протоколами путаешь.
Аноним 17/03/23 Птн 22:33:40 2643592 386
>>2643576
Видимо ты прав. Погуглил.
Дырявая башка. Последнее время стал замечать что путать стал чаще. Надо наверное нормализовать режим сна и хотя бы 6 часов спать.
Аноним 17/03/23 Птн 23:35:24 2643722 387
>>2643383
>понимать можно хоть сколько парадигм
Понимать, не значит уметь применять. То же ООП очень простая концепция с всего несколькими ключевыми принципами. Но дохуя программистов которые не умеют его нормально применять, при том что они могут быть гуру в каком-нибудь лоу-левел кодинге или функциональщине.
Аноним 18/03/23 Суб 06:12:27 2643900 388
image.png 115Кб, 781x710
781x710
Решил пощупать селекторы в авалонии, написал пик, а он не работает! Когда WindowState равен Normal, отображается текст Max, но при Maximized, текст пустой. Почему?
Аноним 18/03/23 Суб 12:13:42 2644044 389
>>2643722
И что? Это не относится к сказанному. Человек лучше делает то, что он делает больше, это обычный навык.
Аноним 18/03/23 Суб 14:57:33 2644229 390
Возможно ли отладить .Net Core на линуксе с помощью тулзы типа dotpeek? Имеется ввиду отладка без наличия исходного кода. Возможно ли вообще отладить .Net Core без исходников, независимо от ОС? Где-то читал что там бинарники не такие как от .NET Framework, но не могу вспомнить источник
Аноним 18/03/23 Суб 15:36:24 2644282 391
>>2644229
Если собрано в сингл файл бинарник - не вскроешь на отладку
Аноним 18/03/23 Суб 15:48:00 2644298 392
>>2644044
Бля, как будто с тупой нейросеткой общаешься, которая теряет контекст через пару сообщений.
Аноним 18/03/23 Суб 16:29:56 2644349 393
>>2644229
>.Net Core без исходников, независимо от ОС?
посмотри dnSpy
жаль он умер но только что попробовал - отлаживает нет кор 3.1 и 6 точно.
Аноним 18/03/23 Суб 16:52:50 2644372 394
Как привязаться к свойству экземпляра, объявленного в ресурсах?

Вот ресурс
<Grid.Resources>
<p:ProbeInfo x:Key="uProbe" x:Name="ProbeName" />
</Grid.Resources>


Вот кнопка, пытающаяся привязаться к свойству "IsEnabled"
<ToggleButton IsChecked="{Binding IsEnabled,
RelativeSource={RelativeSource AncestorType={x:Type p:ProbeInfo}}}" />


Вот ошибка
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='ColorPicker.Probe.ProbeInfo', AncestorLevel='1''. BindingExpression:Path=IsEnabled; DataItem=null; target element is 'ToggleButton' (Name=''); target property is 'IsChecked' (type 'Nullable`1')

Пытался привязаться и через ElementName - без толку. Я типа должен юзать StaticResource, но хз как.
Аноним 18/03/23 Суб 16:57:39 2644375 395
>>2644372
Source={StaticResource ProbeName}}"
Аноним 18/03/23 Суб 17:08:47 2644398 396
Аноним 18/03/23 Суб 18:11:11 2644484 397
>>2644398
вернее Source={StaticResource uProbe}}"
ибо поиск идет по x:Key, но это ты уже и сам понял
Аноним 18/03/23 Суб 23:45:31 2644818 398
16420980333134.mp4 2475Кб, 720x1280, 00:00:11
720x1280
Аноним 19/03/23 Вск 08:20:57 2644899 399
Аноним 19/03/23 Вск 11:16:08 2644979 400
Чуваки, впервые пробую sqlite и такой вопрос -
У меня база загружается за 500 миллисекунд, это не дохуя ли? Там всего 4 строки и 4 столбца.
Xml файл на 100 записей, в каждой по 14 свойств грузится в 10 раз быстрее. Вот и думаю, мб я что-то не то делаю.
Аноним 19/03/23 Вск 11:46:36 2644998 401
>>2644979
Ты куда то спешишь?

На деле твой вопрос не имеет смысла без описания как загружаешь
Например орм потратит время на создание маппинга при первом запросе (хотя зависит от орм)
Аноним 19/03/23 Вск 14:01:55 2645093 402
Что такое "System.Threading.Tasks.TaskCanceledException"?

Короче, есть цикл в который я передаю канселейшн токен, в нем есть ожидание Task.Delay(n). Проблема в том, что ожидание может быть достаточно долгим, прежде чем начнется новая итерация цикла и проверка токена отмены. Я решил "а почему бы этот токен так же не предать в Delay, чтобы не было бесполезного ожидания" но получаю вышеуказанное исключение.
Аноним 19/03/23 Вск 14:19:26 2645106 403
>>2645093
А еще обернул в Try Catch, а исключение продолжает срать в окно интерпретации.
Аноним 19/03/23 Вск 15:58:49 2645218 404
>>2637304
>Никаких файлов в папке создано не было. Что делать?
Оказалось, антивирус блокировал файл powershell, убрал из карантина и все заработало
Аноним 19/03/23 Вск 18:45:47 2645501 405
>>2645106
> но получаю вышеуказанное исключение.
ууу, ыыы, призываю духов, взываю к предкам....
не, чет не выходит угадать что за код у тебя там.

(кстати если там HttpClient то все понятно)

>срать в окно интерпретации
если это output то почему бы и нет
Аноним 19/03/23 Вск 21:06:29 2645812 406
>>2645093
> TaskCanceledException
Это такой вот охуенноый костылище, который придумали майки, чтобы отменять задачи.
Да. Да. Не удивляйся. Это именно то, как они предлагают отменять асинхронные операции - исключением. Еще вариант - OperationCanceledException, но это для потоков.
Такие вот дизайнеры у нашего языка.

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

Вообще. Типа я понимаю в чем смысл этого дизайнерского решения. Но пиздец оно раздражает на самом деле. Потому что весь, блядь TPL - придуман чтобы быть быстрым. Ну дак вот. У тебя 10к сокетов, таск на чтение, таск на отправку. Сеть отрубилась. Со старой моделью, ты нормально отрабатываешь это и вообще не замечаешь. С новой - у тебя посыпались эксепшны, проц в 100% улетел, пока это все отловится, пока отработает, пизда полная. И ты страдаешь, ждешь 10к отключений пока отработают, сеть уже появилась, новые клиенты ломятся, а ты все обрабатываешь те исключения. Срака полная.
Аноним 19/03/23 Вск 22:51:09 2645984 407
>>2645812
1 исключение - штатный механизм прерывания работы "дальше работать нельзя ". Альтернатива - прокидывать ошибку по всем уровням явно.
2 OperationCanceledException ни для каких потоков. Это просто более общее исключение отмены. И базовый класс дляTaskCanceledException
3 TPL придуман чтобы дать унифицированный подход к асинхронщине с не хрень вида new Thread или BeginXXX
Аноним 19/03/23 Вск 23:43:06 2646018 408
>>2645984
> 1 исключение - штатный механизм прерывания работы "дальше работать нельзя ". Альтернатива - прокидывать ошибку по всем уровням явно
Альтернатива - вернуть статус - операция была прервана и кидать ошибку уже при попытке достать результат задачи.
Блин. Вот почему-то при попытке читать из пайпы - они возвращают ReadResult у которого - можно посмотреть IsCancelled и IsComplete, вместо того чтобы страдать хуйней, а отменить задачу чтения можно по человечески без кидания исключений.
А кидать исключение если у тебя отменяют любую асинхронную задачу - бредово. Сами майки, когда им надо - это понимают и исключений не кидают, а придумывают обходные механизмы со всякими статусами. Но наружу тащат апи, которое постоянно кидает исключение по поводу и без.

> OperationCanceledException ни для каких потоков
> The exception that is thrown in a thread upon cancellation of an operation that the thread was executing
Конечно, можно считать, что оно к потокам никакого отношения не имеет, но если мы берем эту хреновину в контексте однопоточного приложения - оно вообще смысла не имеет, потому что мы можем нормально отработать отмену корутины через флаг, не страдая всей этой хренью с исключениями.
Аноним 19/03/23 Вск 23:49:13 2646025 409
>>2646018
Ну и в контексте однопотока - оно вообще никогда не бросится, потому что некому отменять
Аноним 20/03/23 Пнд 00:10:45 2646041 410
Аноним 20/03/23 Пнд 04:40:03 2646157 411
>>2646018
>что оно к потокам никакого отношения не имеет
нет не имеет.
твоя цитата говорит про отмену выполняемой операции, а тред упомянут просто так (чтобы было понятно что такое эта ваша операция)
это исключение всего лишь говорит что "то, что вы делали/ожидали/надеялись/верили, было кем то отменено. Вы об этом знайте там наверху. И может быть вот вам даже токен отмены для ясности".
Кооперативный паттерн отмены не имеет никакого отношения к потокам.


>А кидать исключение если у тебя отменяют любую асинхронную задачу - бредово
исключения - базовый механизм.
Твои претензии ясны, но тогда были бы вопросы - а хули базовые вещи имеют свой дизайн? что за бардак в языке.
Но так уж повелось что были выбраны исключения как средство управления потоком выполнения при ошибке.
шарп слизывали с жавы, а думали уже потом, когда было поздно. Ну или не думали. До сих пор удивляешься что базовые вещи либо нет вообще, либо интернал, либо убого.
Аноним 20/03/23 Пнд 19:37:27 2646907 412
Есть прога использующая либу. Поставили задачу по переносу функциональности из либы, а именно перенос в namespace проги всех методов и полей либы необходимых для работы функционала (в моем случае это шифрование) . Я посмотрел и там в либе свыше сотен разных полей и методов. Можно ли как-то автоматизировать этот процесс, а именно после запуска проги определить все методы и поля класса в либе, используемые для шифрования? Пробовал диаграмму классов для либы построить, но она напоминает таблицу Менделеева (большие цепочки наследования классов)
Аноним 20/03/23 Пнд 22:48:36 2647129 413
>>2646907
>в моем случае это шифрование
Не советую заниматься автоматизированной обработкой в этом случае. Там очень вероятно много где использеутся ансейф для доступа к криптопровайдеру. Поэтому убрав какое-нибудь вроде бы ненужное поле в итоге можно получить пиздец. Причем узнать о нем уже на стадии когда это будет глубоко в проде.
Только руками, только хардкор.
>>2646907
>а именно перенос в namespace проги
Проще убедить начальство, что это тупая идея и в виде отдельной библиотеки это намного проще будет мэйнтейнить.
Аноним 20/03/23 Пнд 23:33:05 2647163 414
>>2645501
>срать в окно интерпретации
>если это output то почему бы и нет

Потому что это сбивает с толку визуальным шумом. Я знаю, что будет эксепшн и я его оборачиваю в Try Catch. А теперь представь, что этих эксепшинов штук 50, а в другом месте еще 100. Я заебусь это говно разгребать.

>>2645812
Отказался я от этой затеи — пихать токен в делэй. Пока не критично.
Аноним 21/03/23 Втр 00:36:09 2647197 415
Такой вопрос
делаю цикл
for(.....)
{
int var = 1;
......
}

Как я понимаю каждый раз в начале цикла создается переменная. Что с ней происходит когда цикл заканчивается? Он типа засирает ячейки памяти каждый раз создавая переменную в новой ячейке или он по окончанию цикла удаляет ее и потом в начале следующего создает заново? Лучше ли снаружи цикла объявить переменную и инициализировать ее или похую? Снаружи цикла я ее не использую.
Я нюфаг тапками не бейте.
Аноним 21/03/23 Втр 00:37:56 2647198 416
>>2647197
Точнее не присваивать ей значение снаружи цикла а просто объявить, мне надо чтоб значение обнулялось (объединялось лол) каждое начало цикла.
Аноним 21/03/23 Втр 00:42:27 2647202 417
>>2622112
Все еще недостаточно данных, купи еще один.
Аноним 21/03/23 Втр 01:23:56 2647212 418
>>2647198
Простейшие типы данных, типа структур для того и созданы, чтобы ими срать внутри цикла.

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

Еще раз. Класс — долгоиграющий объект, часто сложный объект, который ты создаешь ДО цикла и дальше в цикле редактируешь. Структура — простой объект, который "быстро создал, быстро забыл". Структура идеально подходит, чтобы создавать новый экземпляр при каждой итерации цикла. Там настолько все быстро, что нет смысла оптимизировать , если только твоя структура не string, но это уже другая история.
Аноним 21/03/23 Втр 01:32:40 2647214 419
>>2647198
>>2647197
>Я нюфаг
Ага.
Хуй забей, компилятор сам все оптимизирует. Вплоть до того, что если будет нужно, то сам вынесет (или внесет) переменную куда нужно.
Аноним 21/03/23 Втр 01:36:47 2647215 420
>>2647197
>Что с ней происходит когда цикл заканчивается?
Она уничтожается.

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

Ты посмотри сколько весит переменная bool (думаешь 1 байт? а на самом деле 4 байта), и задумайся, а этот язык вообще приспособлен для такой мелочи, которая тебя волнует? Пока ты юзаешь в цикле структуру, шпи шпокойно.
Аноним 21/03/23 Втр 04:00:55 2647231 421
image 62Кб, 378x364
378x364
Аноним 21/03/23 Втр 04:29:26 2647235 422
>>2647197
На уровне msil твой код будет переписан под выполнение IL инструкций на основе стека + goto переходов

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

а далее из этих ячеек будет писать в стек, выполнять операции, извлекать из стека.
и твой int var = 1; превратится в
1)кладем на стек 1
2) извлекаем из стека 1 в ячейку для переменной var

то есть ничего нового в итерации не создается. да и нет никаких итераций в MSIL - там просто гото. В стеке ничего не задерживается - операции для своих нужд извлекают значения из стека тем самым опустошая его. Потому нет миллиона итераций - есть миллион (push/pop стек) и затем goto.
Аноним 21/03/23 Втр 04:56:32 2647237 423
Кто-то уже игрался с AOT?
Как оно?

Просто я попробовал на реальном проекте поиграться, оно при старте начало грязно выраджаться про то что не может чет там найти конструктор к DbContext'у, ну я и забил. Но все равно интересно же.
Аноним 21/03/23 Втр 09:16:55 2647297 424
>>2647197
В интерпретируемой скриптопараше как С# ответа на этот вопрос нет, он скрыт внутри машины интерпретатора и не афишируется, и тем более может в любой момент поменяться по велению левой пятки разработчиков. Поэтому в таких говноскриптах нет документации по их внутренней работе, если тебе надо что-то получить, ты должен ради этого ставить эксперимент созданием тестового кода измеряющего нужные тебе параметры и смотреть на результат, при условии что это вообще возможно, что не гарантируется тоже.
Аноним 21/03/23 Втр 10:19:16 2647341 425
Как часто нужно производить логгирование? Не должно быть записей для каждой функции (даже если это уровень Verbose)?
Аноним 21/03/23 Втр 13:02:50 2647495 426
>>2647297
Дед, выпей таблетки. Сейчас давно уже не восьмидесятые.
Аноним 21/03/23 Втр 14:58:21 2647601 427
изображение.png 81Кб, 1424x733
1424x733
изображение.png 41Кб, 972x299
972x299
Всем привет. Как можно реализовать хранение настроек приложения вне кода, то есть нужен конфигурационный файл, который сможет менять сторонний пользователь. Сделал App.config, но при публикации и последующем запуске exe файла вылетает ошибка.
Аноним 21/03/23 Втр 16:14:56 2647702 428
>>2647297
>В интерпретируемой скриптопараше
>С#

Джавадебил совсем уже обезумел, охуеть. Пора мочу вызывать.
Аноним 21/03/23 Втр 16:18:42 2647707 429
>>2647601
Решение для работяг оно же дефолтное - json. Просто делаешь себе класс настроек (или несколько вложенных классов), а дальше сериализуешь и десериализуешь. На все потребуется System.Text.Json и пара строчек.
Аноним 21/03/23 Втр 16:48:52 2647743 430
>>2647601
ЖДАНОВ так старательно всё замазывал, но всеравно спалил, что он ЖДАНОВ
Аноним 21/03/23 Втр 16:59:19 2647764 431
>>2647601
Гражданин Жданов М. у вас пиратская копия Visual Studio полиция уже выехала по вашему адресу.
Аноним 21/03/23 Втр 16:59:21 2647765 432
>>2647743
Не просто ЖДАНОВ, а АДМИН ЖДАНОВ
Аноним 21/03/23 Втр 17:34:28 2647794 433
>>2647764
>>2647743
Специально не написал первым, что обосрался. Думал, что не заметят,но нет, тут всё как обычно
Аноним 21/03/23 Втр 17:36:40 2647798 434
>>2647707
Понятненько, спасибо
Аноним 21/03/23 Втр 17:37:01 2647800 435
>>2647765
я сис админом работаю
Аноним 21/03/23 Втр 17:48:46 2647810 436
>>2647341
столько сколько нужно же, но не больше необходимого
главное чтобы это имело смысл.

Также не стоит забывать про приемы оптимизации выполнения выключенного лога. Ну чтобы или вообще в релиз сборке не было лишних вызовов или же ветка логгера не выполнялась. В примитиве это logger.IsDebugEnabled и тому подобное.
Аноним 21/03/23 Втр 18:36:22 2647874 437
>>2647810
>logger.IsDebugEnabled
Я сам чекал и просто повышал ограничитель уровня до Information для релизной версии, а если программа завершалась некорректно, то уровень понижал до Verbose. Для дебаг сборки тоже свое условие.

Еще напрягает куча стринговых сообщений, которые нужно хранить прямо в методах.
Аноним 21/03/23 Втр 18:53:03 2647899 438
>>2647601
Я познакомился с Newtonsoft JSON. Во-первых файл конфига получается более читабельным, во-вторых сериализация большинства типов данных работает из коробки, без создания конвертеров (кроме парочки, типа десериализации интерфейсов).
Аноним 21/03/23 Втр 19:06:57 2647913 439
>>2647874
Ну такой чек нужно делать на каждый вызов логгера что не очень удобно и нужно использовать костыли

В остальном ничего не поделаешь - лог есть лог. Если он нужен то придется в него писать.

>>2647899
Жсона из коробки более чем достаточно. Ньютонсофт - лишняя зависимость
Аноним 21/03/23 Втр 19:31:43 2647928 440
>>2647913
>Ну такой чек нужно делать на каждый вызов логгера
Да нет. Только на старте приложения перед билдом логгера.
Устанавливаешь минимальный уровень и все что ниже, не будет записываться в лог.

К тому же есть LoggingLevelSwitch, который по идее может менять ограничение в рантайме, но мне достаточно на старте.

>В остальном ничего не поделаешь - лог есть лог. Если он нужен то придется в него писать.
Так в том-то и беда, не ясно что понадобится. Если пытаться предсказать все случаи жизни, то придется писать всё. Тут по идее всю работу должны выполнять тесты, а логирование нужно только для приблизительного указания ошибки.
Аноним 21/03/23 Втр 19:43:42 2647938 441
>>2647928
>и все что ниже, не будет записываться в лог.
но по прежнему будет вызывать бесполезные аллокации и боксинг на каждой строчке вызова записи в лог )

Ну разве что у тебя шарп 10 и зерологгер то тогда будет некоторая экономия.

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

тесты не заменяют логи. тесты, диагностика, логи - все делают разные вещи.
Аноним 21/03/23 Втр 20:08:54 2647960 442
>>2647938
>но по прежнему будет вызывать бесполезные аллокации и боксинг на каждой строчке вызова записи
А как иначе? Я тоже задумывался этим вопросом.

Ну создастся кусок стринга в примере ниже, но как я понимаю, метод проверит допустимый уровень логгирования и тупо выйдет на старте.
logger.LogDebug("The message: {v}", value);

А что даст logger.IsDebugEnabled? Он же не удалит строку кода. Кстати я не нашел данной функции для Serilog. Это что-то для NLog? Это можно считать аналогом IsEnabled? Т.е. это тупо проверка уровня до запуска метода.
if (logger.IsEnabled(LogLevel.Debug))
{
logger.LogDebug("The message: {v}", value);
}

Какая разница? Все равно будет выделена память под "The message: {v}".
Аноним 21/03/23 Втр 20:20:12 2647965 443
>>2647960
>logger.LogDebug("The message: {v}", value);
посмотри на сигнатуру метода LogDebug. у тебя произойдет передача value (и боксинг при необходимости) даже если этот лог никому не нужен.

>будет выделена память под "The message: {v}".
не будет. это интернированная строка. то есть она уже занимает память в таблице интернированных строк.

в общем чтобы избежать накладных расходов нужно проверять
if(logger.IsDebugEnabled) logger.LogDebug("The message: {v}", value);
тогда LogDebug не будет вызван и не будет лишних аллокаций

или же использовать шарп 10 и логгер поддерживающий новые форматаблечетотам.

или же засахарить костыли чтобы было вида
logger.Debug()?.Log(...)
Аноним 21/03/23 Втр 21:07:36 2648042 444
>>2647965
>или же засахарить костыли чтобы было вида
logger.Debug()?.Log(...)

Это что-то кастомное? Я просто с бейсика. Допустим Debug это расширение, но оно вернет bool, а как из этого перейти к Log?
Аноним 21/03/23 Втр 22:09:46 2648112 445
>>2647341
Насколько задрочено тебе нужно - настолько и делай

У нас каждый пердеж и выше летит в NLog
Аноним 21/03/23 Втр 22:19:23 2648121 446
>>2648042
>Допустим Debug это расширение, но оно вернет bool
это лисапединг
Debug() вернет логгер если IsDebugEnabled или null, если нет
и если он вернул null, то выполнения ж дальше не будет.
Аноним 21/03/23 Втр 22:20:22 2648125 447
>>2647938

> но по прежнему будет вызывать бесполезные аллокации и боксинг на каждой строчке вызова записи в лог )

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

Этот жабагадюкинг не стоит переживаний и траты внимания.
Аноним 21/03/23 Втр 22:25:12 2648130 448
>>2648125
ага ага. вот из за таких софт и стал тяжелым и тормозным
потому что есть какой нибудь
logger.Trace(..., тут что то тяжелое вычисляется)

а ему пох, ведь "все равно в лог записано не будет, а то что будет тормозить - так наш софт никому и не нужен вот"
Аноним 21/03/23 Втр 22:37:38 2648146 449
Э, а почему в вашем языке больше не надо писать using System, чтоб вывести что-то в консоль?? Я не понимаю, вот я смотрю туториал и там это используют, а мне VS пишет что можно обойтись...
Аноним 21/03/23 Втр 22:39:47 2648148 450
>>2648146
А, ну и ещё в туториале челу приходится дописывать Console.ReadLine(); чтоб терминал не закрывался, а у меня и так не закрывается
Неужели тутор за 2019 год уже устарел??????????? Где мне учиться тогда(
Аноним 21/03/23 Втр 22:40:02 2648149 451
>>2648146
Потому что implicit usings
Аноним 21/03/23 Втр 22:40:35 2648150 452
>>2648148
Это фишка студии, не более
Аноним 21/03/23 Втр 22:42:28 2648153 453
>>2647601
Пилишь класс MyAppSettings с пропертями
Пилишь SettingsManager

Затем конструкция уровня
var manager = new SettingsManager();
if(!manager.LoadIfExists<MyAppSettings>(out settings)
{
settings = new MyAppSettings()
{
//инит дефолтных настроек
}
manager.Save<MyAppSettings>(settings)

}

В самом SettingsManager придумываешь где будешь хранить свои конфиги и какие пути будут юзать чтение и запись

В SettingsManager.LoadIfExists чтение и дженерик десериализация с JsonSerializer, с возвратом bool на успешность существования и загрузки конфига и out настроек

В SettingaManager.Save дженерик сериализация и запись в файл

Юзаешь в любом своём проекте, по надобности наследуясь от MyAppSettings и расширяя конфиг.
Аноним 21/03/23 Втр 22:52:39 2648163 454
>>2648130
> ага ага. вот из за таких софт и стал тяжелым и тормозным

> потому что есть какой нибудь

> logger.Trace(..., тут что то тяжелое вычисляется)

Достаточно не быть долбоебом и не прокидывать тяжёлое и вычисляемое в логгер.

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

Можно как юнитидебилы в каждом Update геодату игры полностью пересчитывать
Аноним 21/03/23 Втр 22:54:33 2648165 455
Аноним 21/03/23 Втр 22:56:48 2648173 456
>>2648130
>logger.Trace(..., тут что то тяжелое вычисляется)
А если у меня просто
>logger.LogDebug("The message");
... то проверка не имеет смысла?
Аноним 21/03/23 Втр 22:59:07 2648178 457
>>2648163
достаточно просто не писать в лог когда не нужно и вообще вызывать логгер, когда не нужно
а не строить из себя знатока "таак, тут не тяжелое, так тут пох на боксинг, а тут вообще пох"

>>2648173
тут да - не имеет.
но обычно есть какие то данные
Аноним 21/03/23 Втр 22:59:48 2648179 458
>>2648148
>А, ну и ещё в туториале челу приходится дописывать Console.ReadLine(); чтоб терминал не закрывался, а у меня и так не закрывается
У меня закрывался. Мб у тея еще что мешает закрытию?
Аноним 21/03/23 Втр 23:02:23 2648182 459
>>2648178
> достаточно просто не писать в лог когда не нужно и вообще вызывать логгер, когда не нужно

Ну так убери лишние вызовы, нахуй код говном с If засирать
Аноним 21/03/23 Втр 23:03:54 2648185 460
wallhaven-m9ve7k.jpg 519Кб, 2560x1440
2560x1440
>>2648179
>To automatically close the console when debugging stops, enable Tools->Options->Debugging->Automatically close the console when debugging stops.
Вот такая штука есть, оказывается.
Аноним 21/03/23 Втр 23:05:00 2648188 461
>>2648182
да.вообще убрать логгирование
и нанять оракула - пусть он разбирается что где произошло.
Аноним 21/03/23 Втр 23:09:32 2648194 462
>>2648188
Ты, видимо, просто тупой
Хотя чего ждать от человека, который в пример приводит
> потому что есть какой нибудь
> logger.Trace(..., тут что то тяжелое вычисляется)
Аноним 21/03/23 Втр 23:17:09 2648200 463
Image 1.png 221Кб, 693x476
693x476
>>2648194
этот пример приведен в доке от джетбраинс (пик)
и для "мудрого" поясню - как раз тупо вообще задумываться на тем какой будет оверхед, умно не допускать оверхеда вовсе.
Аноним 22/03/23 Срд 01:15:24 2648264 464
>>2648148
>Неужели тутор за 2019 год уже устарел?
А ты как думал? Да даже за 2021-й год уже устарел. У нас в шарпе принцип: "Маши крыльями или сдохнешь". Так что ищи только самый свежачок, который только на нглийском, лол.
Аноним 22/03/23 Срд 09:21:14 2648393 465
>>2648153
спасибо, пойду пилить
Аноним 22/03/23 Срд 12:26:25 2648521 466
>>2648264
Ангельский не проблема. Я решил начать через видеокурс C# Fundamentals for Absolute Beginners от Microsoft + параллельно почитываю "Pro C# with .NET 6". Видеокурс от 2019 года, да. Но для базы должно пойти?
Аноним 22/03/23 Срд 13:03:44 2648566 467
изображение.png 11Кб, 1343x69
1343x69
изображение.png 26Кб, 1156x367
1156x367
Всем ку, что это за фигня (1 скрин)? При дебаге такая фигня не вылезает, но если сделать публикацию (2 скрин), то вылезает. Пустой конструктор ставил, не помогло
Аноним 22/03/23 Срд 14:15:23 2648661 468
>>2648566
Первое, нахуй newtonsoft.json
Второе, если возможно, пили пустой конструктор в классе который пихаешь в сериализатор
Третье, лучше код показывай
Аноним 22/03/23 Срд 14:21:14 2648668 469
>>2648661
Если не можешь менять базовый класс можешь либо ебаться с конвертером, либо накормить сериализатор параметрами
TypeNameHandling = TypeNameHandling.None,
NullValueHandling = NullValueHandling.Include,
MissingMemberHandling = MissingMemberHandling.Ignore,
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor,
ObjectCreationHandling = ObjectCreationHandling.Replace,
Аноним 22/03/23 Срд 14:25:53 2648677 470
изображение.png 84Кб, 908x520
908x520
изображение.png 46Кб, 604x444
604x444
изображение.png 8Кб, 255x234
255x234
>>2648661
Вытаскиваю json (пик 1). Класс, который пихаю в сереализатор (пик 2), пустой конструктор есть. 3 пик - json файл. При дебаге всё нормально работает, а при публикации вылезает эта ошибка.
Аноним 22/03/23 Срд 14:35:00 2648698 471
>>2648677
ну так переключи на релиз и собери
и увидишь суть.
Аноним 22/03/23 Срд 14:38:16 2648706 472
>>2648698
В релизе тоже всё работает
Аноним 22/03/23 Срд 14:41:17 2648709 473
>>2648698
Ошибка вылезает после публикации
Аноним 22/03/23 Срд 16:03:54 2648772 474
>>2648677
>пик 1
Вот тебе реализация десериализации через newtonsoft, раз уж ты юзаешь его, насколько сходу смог вспомнить, без TObject

private T Deserialize<T>(string text) where T: AppSettings
{
using (var reader = new StringReader(data))
{
using (var jsonReader = new JsonTextReader(reader))
{
return (T)serializer.Deserialize(jsonReader, typeof(T));
}
}
}

>пик 2
навесь аттрибут [JsonConstructor] на конструктор

>пик 3
Твоя модель настроек не совпадает с json

Пили базовый класс AppSettings с конструктором и пунктом 2
от него наследуй SmtpSettings:AppSettings
от него наследуй LetterSettings:AppSettings

>пик 1
Убери из имени метода настройки, у тебя дженерик в итоге получится.
Сделай его синхронным чтобы был out(зачем тебе на ините синхронщина)

//Юзаем так:
var settingsService = new AppSettingsService();
SmtpSettings smptSettings;
LetterSettings letterSettings;

//Грузим конфиги
if(!settingsService.LoadIfExists<SmtpSettings>(smptConfigPath, out smptSettings)){
//создать новый конфиг и сохранить, если обосрались на чтении
}
if(!settingsService.LoadIfExists<LetterSettings >(smptConfigPath, out letterSettings)){
//создать новый конфиг и сохранить, если обосрались на чтении
}

//получаем данные с конфига
var host = smptSettings.Host;
var header = letterSettings.Header;
Аноним 22/03/23 Срд 16:05:14 2648775 475
>>2648772
Я обосрался в десериализации, там new StringReader(text))
Принцип такой короче
Аноним 22/03/23 Срд 16:15:57 2648780 476
>>2648772
>Твоя модель настроек не совпадает с json
Так я беру только "SmtpSettings", "Letter" - это для другого класса. Или это плохо и лучше разделить на разные json'ы?
Аноним 22/03/23 Срд 16:23:28 2648787 477
>>2648780
Или тут про другое? Кароч я уже не соображаю, что тут происходит
Аноним 22/03/23 Срд 16:25:37 2648790 478
>>2648780
Я бы разделил
Если хочешь хранить все в одном месте то делай соответствующую модель, например
AppSettings
{
public SMTPSettings SmtpSettings{get;set;}
public LetterSettings LetterSettings{get;set;}
}
Аноним 22/03/23 Срд 16:25:56 2648792 479
>>2648772
В любом случаее спасибо, завтра переделаю как Вы показали, надеюсь заработает. А пока навесил [JsonConstructor], но всё равно так же ошибка вылезает.
Аноним 22/03/23 Срд 16:29:41 2648796 480
>>2648792
Поэтому сразу предложил тебе через десереализатор с параметрами отсюда
>>2648668
Аноним 22/03/23 Срд 16:31:47 2648799 481
>>2648790
Блять блин, а чё эта ошибка-то вылезает, вроде конструктор пустой есть, [JsonConstructor] навесил, что ещё ему надо
Аноним 22/03/23 Срд 16:34:19 2648805 482
>>2648799
Показывай модель настроек
Аноним 22/03/23 Срд 16:43:16 2648818 483
изображение.png 87Кб, 622x477
622x477
>>2648805
Так, что за модель? Это xml, который я прикрепил или что?
Аноним 22/03/23 Срд 16:46:35 2648825 484
>>2648818
Модель в данном случае это класс настроек с публичными пропертями, содержащими настройки
Аноним 22/03/23 Срд 16:48:45 2648827 485
изображение.png 73Кб, 617x647
617x647
Аноним 22/03/23 Срд 16:54:44 2648832 486
>>2648827
Я newtonsoft не особо пользую
Попробуй ему кормить чисто json для smtp
Аноним 22/03/23 Срд 16:56:55 2648836 487
>>2648832
А чем тогда newtonsoft лучше заменить, я просто первый раз с json в c# работаю и не в курсе, что в моде, а что лучше обходить стороной
Аноним 22/03/23 Срд 17:00:10 2648839 488
>>2648827
и где тут ньютонсофт
на словах ты ньютонсофт
а аттрибут используешь из System.Text.Json что совсем другая либа

>>2648836
System.Text.Json хватит за глаза раз он у тебя есть.
Аноним 22/03/23 Срд 17:08:45 2648847 489
>>2648836
Мигрируй на System.Text.Json, по умолчанию интегрирован с проектами core3. 0
Вызовы простые
JsonSerializer.Deserialize<Type>(jsonString);
JsonSerializer.Serialize(object)

Как уже сказал, полюбому отказывайся от JObject
Аноним 22/03/23 Срд 17:11:08 2648849 490
изображение.png 39Кб, 995x320
995x320
изображение.png 65Кб, 527x558
527x558
>>2648847
один фиг при публикации выдаёт ошибку
Аноним 22/03/23 Срд 17:12:17 2648850 491
>>2648849
И что ты пытаешься ему кормить?
Аноним 22/03/23 Срд 17:14:58 2648852 492
изображение.png 11Кб, 428x237
428x237
>>2648850
Да проблема в том, что при дебаге всё ок, а вот когда нажимаю опубликовать вот это происходит. Мб просто вытащить из релиза bin и себе мозг не ебать
Аноним 22/03/23 Срд 17:17:38 2648854 493
Аноним 22/03/23 Срд 17:21:07 2648859 494
>>2648852
Короче, ванговать сложно, но ошибка, скорее всего, максимально тупая и мы все вместе посмеёмся

Переходи на System.Text.Json, перепиливай на подгрузку файлов и сериализацию/десериализацию через сериализатор

Можешь оставить какой-нибудь канал для связи, будем говнокодить напару
Аноним 22/03/23 Срд 17:30:41 2648869 495
>>2648859
Да, перепилю ибо у меня код сам по себе говно-гавна, мне уже тут посоветовали как сделать лучше. Если есть желание то вот телега: @calciigluconas
Аноним 22/03/23 Срд 19:38:42 2649091 496
>>2648852
Попробуй вообще убери конструктор из класса. По идее для poco классов, он просто дефолтный юзает и все.
Аноним 22/03/23 Срд 23:32:57 2649386 497
>>2648849
Написано же деление на ноль. Что за пидарские вопросики?
Аноним 23/03/23 Чтв 00:36:16 2649455 498
>>2648859
>Переходи на System.Text.Json
В этой залупе практически ничего нет. Придется на каждый пук писать конвертер.

>>2648852
А что не так?

>>2648849
Он так ругается, когда нет дефолтного конструктора без параметров. Он у тебя вроде есть (если у шарпистов это называется дефолтным конструктором)
Аноним 23/03/23 Чтв 00:46:14 2649462 499
>>2649455
>Придется на каждый пук писать конвертер.
так часто пукаешь что ли?

тащить доп зависимость из-за того что лень написать 0-1 конвертер...
Аноним 23/03/23 Чтв 04:49:54 2649579 500
muhahaha.webm 661Кб, 744x416, 00:00:10
744x416
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов