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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
2 2445748
7. Какую IDE выбрать?
— Для Windows Visual Studio ( https://visualstudio.microsoft.com/ru/downloads ). Также есть версия для macOS.
Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider ).
Если в C# хочется, но пк уж слишком хуёвый: https://docs.microsoft.com/en-us/dotnet/core/tutorials/with-visual-studio-code

8. Что нужно знать, чтобы взяли работать?
Общие навыки — TPL, Linq, DI, интеграционные тесты. Преимущество перед такими же вкатунами даст парочка интересных пет-проектов где вы делаете всё максимально правильно и точно следуя архитектуре.
Архитектура — DDD, микросервисная архитектура. Так же необходимо ознакомиться с паттернами проектирования. Обязательны к изучению: MVVM, MVC, MVP
Базы данных — PostgreSQL/MSSQL + Redis/Mongo. Из ORM: EFCore обычно достаточно, но есть более быстрый, но менее удобный Dapper. Тратить время на ADO.NET не стоит.
Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
Структуры данных — связанные списки, деревья (бинарные, красно-чёрные), хеш-таблицы, графы.
Системы контроля версий — обычно гита достаточно.
3 2445804
Как навывается подход когда все ебашится асинхронно. Весь код представляет из себя таски которые добавляются в таскпулл, а потом от туда вызываются и запускаются?
4 2445805
>>445804
обычный асинхронный код. То есть самый обычный
1661503028666.png417 Кб, 800x600
5 2445808
Господи, ну почему всё такое сложное??
Все эти IObservable<T> и прочие
6 2445812
>>445808
А зачем оно тебе?
7 2445819
>>445812
Реактиве ЮИ комманды требуют это вместо обычного bool CanExecute.
Всё утро ебался, как это правильно реализовать, сдался и полез в документацию. а там лямбда на лямбде и расширениями погоняет. И потом в конце написано "ради перфоманса у вас всё равно это работать не будет, реализуйте автообновление самостоятельно".
8 2445820
>>445819
зачем использовать ReactiveUI вообще
оверхед очевиден
удобство - нет
9 2445844
>>445808
Иди в JS. Там можно к цифре строку прибавить
10 2445857
>>445804
Task-based development
11 2445860
>>445808
Удобный хуябрик. Сейчас всё кажется сложным но в один момент ты проснёшься и всё осознаешь, буквально. После этой ночи в жизни поменяется многое
sage 12 2445863
>>445857
Какие при этом подводные\профиты?
13 2445868
Встретился с такой задачкой :

Было
a : 01 - 03
b : 05 - 07
c : 08 - 10
d : 12 - 15
e : 16 - 18
добавляем :
03-08
изменяем
d : 12 - 15 -> 10-16
удаляем
08-10
в конце ожидаем
f : 01-08
g : 10-18

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

есть хоть у кого-то идеи как это приготовить?
14 2445871
>>445863
Профиты - асинхронно + быстро если не брать Thread'ы, но это это нужно когда надо супер быстро. Подводные следующие:
1. Легко обосраться при async-void;
2. async/await код порождает новый async/await код и заставляет переписывать старый на async/await
3. Неудобно использовать вместе с Thread
15 2445873
Нашел это но это не работает когда после первого джойна предыдущие записи схлопываются

https://stackoverflow.com/questions/56868258/how-to-consolidate-date-ranges-in-a-list-in-c-sharp
16 2445885
>>445820

> зачем использовать ReactiveUI вообще


Чтобы мне перезвонили.
17 2445887
>>445885
А дальше? после перезвона перестать в этом ковыряться не получится.
18 2445890
>>445868
не усложняй простые вещи.
19 2445902
>>445868

Что это за буквы и цифры ЯННП...
image.png111 Кб, 281x300
20 2445908
>>445890
Простые?

>>445902
Это усложненная модификация классической задачки на поиск перекрытия дат
буквы это запись, то-есть объект,
а цифры это дата в этом случае, 01.01.2022 - 03.01-2022 например, суть в тому что нужно найти и объединить все перекрытья
21 2445913
>>445908
ну а что сложного то?
прошел в цикле и поглотил диапазоны
22 2445916
>>445913
Если сделать все так просто как ты хочешь ты получишь не правильный результат, простым циклом тебе прийдется начинать его сначала каждый раз когда какой-то диапазон схлопывается потому что он в этот момент может начать перекрывать предыдущие которые ты как бы уже "проверил", и это не самый умный и быстрый алгоритм
23 2445928
>>445916

>в этот момент может начать перекрывать предыдущие


с чего вдруг.
если вливаемый диапазон перекрывает что то - то это будет видно при первом же и единственном проходе.
он же поглощает, а не набивает пузо
24 2445941
Кто там пишет на авалонии
Скажите как блин сделать Visibility.Hidden?
25 2445964
Увидел тут код класса, реализующего интерфейс, методы этого интерфейса с его же пространством имён. Что это означает?
Примерно вот так:
class cl : Interface {
bool Interface.Method(...)
.
.
.

}
26 2445972
>>445941
Как блин на авалонии сделать native look & feel?
27 2445986
>>445964
явная реализация интерфейса

>>445972
никак ибо он сам рисует средствами хреновой рисовалки
28 2446016
>>445986

> никак


Вот бы сделал кто-нибудь биндинги ГТК в шарп... Так, стоп, есть же!
29 2446022
Ну что за пидарас придумал Dependency Injection, я нихуя не понимаю
30 2446025
>>446022
Его имя "здравый смысл "
31 2446029
>>446022
Дай мне свою голову, я вложу в неё своё понимание.
32 2446035
>>446022

> Опыт разработки ПО: меньше 3 лет

33 2446054
>>445844
У нас тоже можно вроде
34 2446061
>>446022
А что сложного? Наоборот, новичку в проекте позволяет легко понять что от чего зависит.
35 2446062
>>446054
Не вроде, а точно можно.
36 2446066
>>446035
Скорее меньше года.
37 2446111
>>445928
Ты прав. Я слишком все усложнил.
Новый контент(тред); 38 2446142

> а может лучше пинг?


Хуинг!
https://www.youtube.com/watch?v=V9hKsrE0wVM
39 2446186
>>446022
Сам по себе DI не особо прикольный, а вот IoC контейнеры, значимой частью которых и является DI, это крайне сильная вещь для построения очень сложных систем.

DI же без IoC тебе просто даёт разносить код по разным классам.
40 2446230
>>446186

> Сам по себе DI не особо прикольный, а вот IoC контейнеры, значимой частью которых и является DI, это крайне сильная вещь для построения очень сложных систем.


Ioc это инверсия управления? Можешь пояснить, зачем оно надо? Ну зависит класс не от другого класса а от интерфейса, что это дает?
41 2446236
>>446230
IoC это автофабрика объектов. ты регистрируешь зависимости, а оно само собирает
Очень удобная штука.
42 2446303
Подскажите, можно как-то получить имя переменной, а не класса? Что-то типа такого:

class Foo
{
public Foo() {
Console.WriteLine(%ЧТО-ТО%);
}
}

var Boo1 = new Foo(); // Консольный вывод: Boo1
var Boo2 = new Foo(); // Консольный вывод: Boo2
43 2446318
>>446303
с чего ему вдруг знать имя без дополнительных средств, которые тоже ограничены ибо специфика
так что у тебя в руках только 2 инструмента
nameof()
[CallerArgumentExpression]
44 2446345
Методы должны быть выше их применения? Почему у меня компилятор не ругается? Вроде даже в джаваскрипте так делать нельзя.
45 2446360
>>446345

> Методы должны быть выше их применения?


нет. порядок не важен
IoC, DI, IoC-контейнер — Просто о простом 46 2446371
0Male-hands-hold-measuring-tape-to-crotch.jpg80 Кб, 1200x675
47 2446390
Перекатываю

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

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

Ну, допустим кейс: мы измеряем количество топлива в самолете, и если количество топлива приближается к границе - отправляется уведомление диспетчеру, чтобы тот 1. Предупредил пилота, 2. Уже готовил команду для дозаправки.
Или другой кейс - при приближении к нижнему порогу количества чернил в принтере - уже состовляется заявка на замену картриджа, и в момент исчерпания реусрса картриджа - уже бежит эникей заменять.

Так вот. Какие сущности вижу я:

1. Нам нужна некая система именно что измерений. Тип измерения - абстрактный, содержит в себе только имя, и опционально - описывает метод проверки на нуль и сравнения значений. Сами измерения представляют из себя сущность вида: Метка времени, тип измерения, значение.
2. Нам нужна некая система профилей измерений для разных сущностей. Некое описание объекта, через его измерения.
3. Нам нужен канал получения данных. Это может быть некий протокол сетевой, может быть ручной ввод, может быть рассчитанное значение. Все это должны быть каналы получения данных. Данные отсюда - не знают что они такое.
4. Именно поэтому нам нужен некий интерпритатор/форматтер, который полученные данные из канала - преобразует к измерению.
5. Дальше - нам нужна некая система триггеров и пороговых значений. Ну, тут все просто. Имеем профиль, а дальше дело техники.
6. Нужна некая система действий. Простейший вид - действия определены заранее(отправить сообщение, воспроизвести звуковой сигнал). Чуть более сложный - действия можно комбинировать. Совсем сложный - пользователь может сам создавать действия на основе некоего графического языка программирования.

Вот так я это вижу.
А как бы вы такое спроектировали, шарпаны?
0Male-hands-hold-measuring-tape-to-crotch.jpg80 Кб, 1200x675
47 2446390
Перекатываю

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

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

Ну, допустим кейс: мы измеряем количество топлива в самолете, и если количество топлива приближается к границе - отправляется уведомление диспетчеру, чтобы тот 1. Предупредил пилота, 2. Уже готовил команду для дозаправки.
Или другой кейс - при приближении к нижнему порогу количества чернил в принтере - уже состовляется заявка на замену картриджа, и в момент исчерпания реусрса картриджа - уже бежит эникей заменять.

Так вот. Какие сущности вижу я:

1. Нам нужна некая система именно что измерений. Тип измерения - абстрактный, содержит в себе только имя, и опционально - описывает метод проверки на нуль и сравнения значений. Сами измерения представляют из себя сущность вида: Метка времени, тип измерения, значение.
2. Нам нужна некая система профилей измерений для разных сущностей. Некое описание объекта, через его измерения.
3. Нам нужен канал получения данных. Это может быть некий протокол сетевой, может быть ручной ввод, может быть рассчитанное значение. Все это должны быть каналы получения данных. Данные отсюда - не знают что они такое.
4. Именно поэтому нам нужен некий интерпритатор/форматтер, который полученные данные из канала - преобразует к измерению.
5. Дальше - нам нужна некая система триггеров и пороговых значений. Ну, тут все просто. Имеем профиль, а дальше дело техники.
6. Нужна некая система действий. Простейший вид - действия определены заранее(отправить сообщение, воспроизвести звуковой сигнал). Чуть более сложный - действия можно комбинировать. Совсем сложный - пользователь может сам создавать действия на основе некоего графического языка программирования.

Вот так я это вижу.
А как бы вы такое спроектировали, шарпаны?
48 2446511
Имплементировать Either в свой шарповский код - хорошая идея чи нет?
Просто меня немного подзаебало, что вот есть контроллеры. Вот есть сервисы. Я хуйнул Either<TResult, TError>, переопределил приведение.
Сейчас контроллеры выглядят примерно так:

public IActionResult GetList() => _service.GetList();
В случае если все ок - вернется лист, если не ок - ошибка вида:
{
Error:Code,
Message: ErrorMessage
}

Но чет я думаю - и со стороны ж не очивидно. Типа да, коджа стало меньше, он чище. Но теперь кому-то еще - нужно лезть в реализацию сервиса, чтобы понять, чому ему возвращается что-то там. А потом - разбираться как оно работает.
Короче. У вас такое делают?
49 2446517
>>446511
Я думаю хуйня. Контроллер отвечает за возвращение результата на запрос, пусть он этим и занимается.
50 2446520
>>446517
Ну блин. Мне не нравилось, что в таком случае - сервису нужно какую-то хрень делать.

Вот мне нужно получить по Id что-то.
Сервис полез в базу. Не нашел.
Что он должен вернуть? Null? MyNotFoundResult? Что еще?
Так я возвращаю Error.NotFound
А в контроллере просто делаю
return _service.GetItemById(id).ToActionResult();
51 2446531
>>446520

>Что он должен вернуть? Null? MyNotFoundResult? Что еще?


Сервис может вернуть пустой список или ссылку, а уже контроллер смотрит на результат и решает, что отправить в ответ..
images (1).jpg11 Кб, 300x168
52 2446689
Ну что там по вакансиям ?
53 2446710
>>446689
Нормально вроде. Херочки из чатов пишут иногда, а что ?
54 2446714
>>446520

>Что он должен вернуть? Null? MyNotFoundResult? Что еще?


Что надо. Это называется контракт.

>А в контроллере просто делаю


то есть контроллер знает что ему возвращать, а сервис знать не может да?

зы: контроллер должен быть тонким
55 2446721
>>446142
посмотрел по диагонали. ох любит народ лисапедить.
1 бесполезно проверять через Dns.GetHostEntry. Это ни о чем не говорит. Делай запрос и в случае проблем уже разбирайся что не так.
2 Convert.ToDouble(readver) это вообще что такое блин. Есть же Version.TryParse. Как он будет в дабл перегонять 1.2.3.4?
3 taskkill /f - пох на несохраненные данные. юзер сам виноват ага )
56 2446804
>>446303
Нет, нельзя. В ассемблере имён переменных не остаётся, они кодируются адресами.
57 2446809
>>446689
Да норм всё, устроился без опыта даже на норм стек и продукт
58 2446827
>>446804
до ассемблера далеко. на уровне сборки все имена на месте
image.png87 Кб, 1066x611
59 2446870
>>446303
Это нельзя сделать. Среда CLR внутри себя переменные может переименовывать. К примеру int a = 5; будет переименовано внутри метода как int num = 5; Помимо этого в Release если они не используются, то они даже не появятся в низкоуровневом C# коде, т.е и память на них не выделится и соответственно получить даже их значение нельзя. Однако, если эти переменные используются, то их можно получить, но имена их - нет.

К слову, подобный способ не всегда работает в Release режиме, поскольку компилятор упрощает код и внутри метода вместо объявления новых переменных он просто сразу закидывает их значения в методы Console.WriteLine():

Т.е вместо:
int a = 5;
Console.WriteLine(a);

Будет
Console.WriteLine(5);

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

Так же хочу еще добавить, в IL коде имён переменных вообще нет (вроде), там просто происходят манипуляции со стеком, а при вызове какого-то метода значения достаются из стека.
60 2446887
>>446870
А как например работает атрибут CallersMemberName?
61 2446892
>>446887
На уровне компилятора
Он вшивает как строки имена при компиляции
62 2446908
>>446887
А что не так? Ты можешь получить любые имена, кроме локальных переменных. Когда ты помечаешь атрибутом CallerMemberName какой-то входящих параметр в методе, то при передаче условного поля в этот метод атрибут просто получит имя входящего параметра. Входящие параметры это не локальные переменные.
63 2446944
>>446721
Да - это Хач! Он такой, да. А ещё если твой пост ему в конфочке написать, он завизжит и забанит. Нуфф сказал.
64 2447423
>>446142
Странный какой-то метод обновления.
1. Твой домен могут подменить без каких-то вопросов, в результате - его метод удалит его же программу.
2. На каждый запрос создается HttpClient. Нахуя?
3. Заменяет программу целиком. Что это вообще за бред-то? У тебя вышел микропатч на здоровенную программулину, допустим кнопка глючила на такой-то вкладке в такую-то фазу луны. Ебись оно все конем - 10 гигов качаем, сносим все. Бред короче.
4. Общая подача, дескать я пиздец как разбираюсь, а потом пук-сереньк, если бы мне не сказали, я бы никогда не узнал, что такое workdir. Это уже не вопрос к методу обновления, а к самому челу.
5. Версия приводится к double - что вообще за бред-то? У нас на работе, допустим, система версий вот такая: 1.0.0.0beta1buildTimebuildHash
6. Почему не делать как человек: скачали, подождали пока пользователь закроет программу, и после этого - обновились, либо при следующем старте.
65 2447434
>>446142
Зачем этого дегенерата смотреть? Он же нихуя не знает
66 2447458
Я поставил sql server в докер на линупсе. Все по майковским инструкциям, все тесты сделал, тестовую базу сделал, тестовые запросы сделал — все работает. Но вот вопрос — где взять гуй? Не будешь же с базой в командной строке общаться. Пробовал Azure Data Studio — кидает ошибку при попытке подключения (гугл перекопал до десятой страницы, ни один ответ не помог).
67 2447466
>>447458
JetBrains Datagrip
68 2447480
>>447458

>докер на линупсе


откуда в треде столько мазохистов что разрабатывают на линупсах
69 2447485
>>447480
Тоже не перестаю охуевать. И ладно другие языки, но шарп! Майковский язык, созданный с прицелом на винду. Но нет, пердолек это не останавливает.
70 2447506
>>447458
Dbeaver база
71 2447508
>>447506
Кривое говно
72 2447624
>>447480
>>447485
Как только винда перестанет быть решетом, которое еще и отправляет каждый пук майкам, сразу же перейду.
73 2447626
>>447624
>>447480
Кхм. А на чем будет ваш шарповский код крутиться? 10 лет назад - еще было непонятно, там вроде и люмия была, и десктом еще вроде как жив. Сейчас - шарп на 90% это веб-хуйня, с прицелом на облака.
Ну так вот. Сейчас на шарпе не для линукса будет писать либо дурачок, либо застрявший на легаси, либо чел который кодит для себя. В остальных случаях - ты пишешь под линукс. А если пишешь под линукс - хорошо бы и окружение линуксовое иметь. Потому что я ебал проверять что все нормально работает в WSL или на виртуалке.
74 2447629
>>447626
Оконные приложения сейчас пишутся на Шарпе. Некоторые игры, например, X-com, пишутся на шарпе
75 2447650
>>447629
А 90% остальных программулин - это веб-хуйня на асп, чтобы жсоны гонять.
76 2447653
>>447629
Но я веб-макака будущая, так что и по этому критерию тоже линукс. Увы, Датагрип не помог сконнектиться с блядской мелкософтовской бд. Ошибка и иди нахуй. В чем ошибка, что поправить - иди нахуй. Типичные майки. Контора пидарасов.
77 2447703
Ну. Возвращаясь к вчерашнему вопросу про использование либо.
Ну, разве не удобнее так оно выглядит?
78 2447704
>>447703
Типа да, в такой реализации - всегда 200 вернется.
Но 1. Я сторонник всегда 200. 2. Можно не к строке с жсоном приводить, а к тому же ActionResult MVC'шному.
79 2447810
>>447626

>Сейчас на шарпе не для линукса будет писать либо дурачок,


Есть разница писать ДЛЯ линупса сидя в мощной визуал студии
и НА линупсе

>все нормально работает в WSL или на виртуалке.


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

>>447653

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


Я пью воду, я пью - значит я алкаш. Логично же )
изображение.png15 Кб, 551x87
80 2447820
Как понять когда значение передается по ссылке, а когда копируется? Вот на пике если я изменю head, изменится ли first?
81 2447833
>>447820
без явного указаний типа ref
всегда что-то копируется
разница лишь в то что копируется
для значимых типов - значения
для ссылочных типов ссылка

ListNode first = head копирует ссылку из head в переменную fisrt

потом что хочешь делай с оригиналом, копию это не затронет.
1661669767332.gif1,3 Мб, 468x271
82 2447858
>>447434
Чтобы поржать.
83 2448559
Почему во втором методе, при указании обязательного параметра строка экранируется и как это отключить?
https://pastebin.com/Jq96CrWU
84 2448590
>>448559
В первом передаётся строка hello1?=1/1, во втором
hello2/1/1, но так как это надо можно распарсить как hello2 => 1 => 1, то вот делается такое приведение
1.png7 Кб, 824x283
85 2449448
>>448590

> то вот делается такое приведение


Это понятно, но почему в 1-ом случае на выходе он делает обратное преобразование, а во 2-ом нет?
Интересно, что на входе он автоматически экранируется в обоих вариантах.
Как получить оригинальную строку при использовании 2-го варианта?
86 2449494
Почему rider так тупит? Студия грузит проект с +- сотней файлов почти мгновенно и синтаксис сразу подсвечивается, а райдер минуту думает
87 2449498
>>449494
а студия с решарпером?
88 2449501
89 2449522
>>449494

> Почему rider так тупит?


Потому что ты не купил лицензию. Купи лицензию, чо ты как этот?
90 2449535
>>449494
Студия написана на нормальном языке, а ридер на жабе.
91 2449547
Короче, пасаны, после долгих изысканий я выяснил, что кроме Авалонии на шарпе альтернатив нет, чтобы сделать кроссплатформенное окошко. Остальные тулкиты не дотягивают. Ну и что, что вид не нативный. Ой, да кого это ебёт в 2к22?
92 2449549
>>449547
Веб
93 2449551
>>449549
Тогда я вообще электрон взял бы и нахуй послал сишарп.
94 2449554
>>449547
За 15 лет экспирианса десктопного линукса, его так нефига до ума и не довели, большая часть окошечек-приложений выглядят на уровень лаба1. В итоге сложилось впечатление, что на этом говне реально сидит 1,5 анона, но по требованию из инета звучит так что линукс-десктоп это 99% рынка и все возмущаются - "да как же так! Нет кросс-гуи на линупсы!" это не отменяет того факта, что MAUI выпилили технично линукс, который там был, лол
95 2449556
>>449551
Можно потыкать Compose Multiplatform, дурацкое схожие название, которое вводит в заблуждение, но это именно гуишка. Я лично жду когда они начнут свои флагманские проекты на нем писать, ибо это выглядит хренова, когда автор технологии сам в своих продуктах юзает поминимому
image201 Кб, 2200x651
96 2449561
Прикинул правила расставления { } от микрософт и чёт не уверен, что они повышают читабельность. Или всё же повышают? это код из геймдева, поэтому он такой странный
97 2449564
>>449561
если выражение после if/for идет многострочное то лучше поставить скобки {} везде. Если все условия не многострочные то лучше без скобок
98 2449568
>>449547
Откуда такое желание сделать приложение доступным для пердоликов и глиномесов?
99 2449570
>>449568
Потому что майкрософт ушёл из России. Скоро все будем на Роса ОС сидеть.
100 2449572
>>449561
Ставь скобки везде, будь скобкоблядком, как мы!))
101 2449580
>>449547

>что кроме Авалонии на шарпе альтернатив нет


Только больно много в ней "блин а это как блин делать?"
Вроде триггеров, inputbindings, вечно глючного дизайнера в студии, хз что вместо Visibility.Hidden и так далее.

>>449556
дико обожаю compose, но это все таки котлин.
102 2449593
Хоспаде, ну почему devexpress платный
103 2449595
>>449580

> это все таки котлин


…который тянет за собой ЖВМ.

> больно много в ней "блин а это как блин делать?"


Открытая в соседнем окне документация решает проблему. Вот, например, третьего дня решил поначалу неочевидный для меня момент с IObservable<bool> в качестве параметра CanExecute команд. Я дико ругался и топал ножками, что за хуйню они выдумали и как это туда передать? А оказалось всё просто и удобно, через WhenAnyValue.
104 2449596
>>449593
Потому что либо ты платишь и профи делают всё за тебя, а ты только готовые компоненты расставляешь, либо делаешь всё сам. Бесплатно. Другой реальности у нас для вас нет.
105 2449603
>>449595

>…который тянет за собой ЖВМ.


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

>Открытая в соседнем окне документация решает проблему


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

ну и конечно же шрифты с их мылом.
106 2449607
>>449603

> няшным синтаксисом


Синтаксис всем хорош, вот только паскалевские объявления переменных с типом впозаде всё портят. Тип должен быть первым, это не обсуждается, поэтому котлин соснёт и займёт своё место на свалке истории. Можете скринить.

> в кратком списке что я вот вспомнил


Пили список. Порешаем вместе. (И я попрактикуюсь).
107 2449614
>>449593
Как же хорошо, что devexpress платный! Я вообще за то, чтобы платными сделали ещё и WinForms, WPF, UWP, MAUI, Avalonia и Eto.Forms.
108 2449615
>>449607

>с типом впозаде всё портят


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

>Пили список. Порешаем вместе


да хотя бы тот что я дал
триггеров в стиле нет - вместо них нужно юзать бехавиорсы какие то
инпутбиндигс нет - снова бехавиорсы
дизайнер - DesignInstance нет. <Design инстанцирует вьюмодель что плохо.
дизайнер с его постоянными придирками "плохой хамл" но при этом все прекрасно работает.
Visibility.Hidden нет и так и не нашел чем заменяется

шрифты на винде мыло. вроде там внедряли ClearType (в упор не видел разницы) но в skia опять сломали (хотя я разницы и не увидел)
109 2449657
>>449615

> <Design инстанцирует вьюмодель что плохо


Эм... А какая разница? Этот инстанс же только в дизайн-тайме?
110 2449659
>>449657
Ну он как бы не инстанцируется без пустого конструктора
а делать пустой конструктор ради только дизайнера - на нах

в итоге он пытается что то там резолвить и выдает NRE

в WPF есть IsDesignTimeCreatable=False что решает проблему
а тут хрен
111 2449664
>>449561
У меня вопрос. В геймдеве - не научились отключать уровни логгирования в самом логгере, чтобы не писать это вот if(Log.Level >= LogLevel.Information) ?

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

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

Это только в 10 шарпе появилась возможность сделать это дешевле, но это не про геймдев.
113 2449667
>>449448
Сделать url encode
114 2449672
>>449665
Хер знает какие там лишние аллокации. У нас на работе - логгировать нужно каждый шаг, потому что правила такие, чтобы потом можно было восстановить, какие пакеты приходили, есть ли там проблемы с сетью и прочее. Так вот, 40к подключенных устройств с трафиком под 100ГБ/с, без лога - 800мб, с логом - 810МБ. Да, я логгер писал свой, но там никаккой магии, простой поток, который очередь разгребает, а при остановке приложения - все что осталось в очереди - пишет.
Короче. ХЗ. Экономия как по мне на спичках, при этом код - ужасно неудобен из-за того что потом придется везде менять это вот, вместо того чтобы просто конфиг поправить в одном месте.
115 2449674
>>449672

>который очередь разгребает


он разгребает НЕНУЖНУЮ очередь. каждый вызов метода логирования вызывает необходимость аллокацировать хотя бы LogEntry для постановки в очередь + боксинг для параметров, а то и вычисление самих параметров.

Если неудобно, то вот есть подход (тайминг)
https://www.youtube.com/watch?v=Sq_h5bVWJ0k&t=2130s
116 2449804
>>449674

> Если неудобно, то вот есть подход (тайминг)


Интересный подход. Спасибо за наводку.
117 2449824
>>446345

>джаваскрипте


Там же тоже можно в любом месте объявлять
118 2449867
>>446035
>>446066

Вы правы.

>>446025
>>446061
>>446186

Ну это пока не разобрался такое оно впечатление производит, да.
У меня с RxJs так же было.
119 2449984
Дотнет в бубунте теперь в пакетах (в других уже давно так)
https://devblogs.microsoft.com/dotnet/dotnet-6-is-now-in-ubuntu-2204/
120 2450024
>>449984
в смысле? Это всегда так было, ты чего?
121 2450042
>>449659

> а делать пустой конструктор ради только дизайнера - на нах


Делай конструктор с дефолтными значениями параметров.
122 2450074
>>450042
вот только это хрень, а не подход. просто костыль сраный.
123 2450085
В чем не прав этот интеллигентый господин?

https://www.youtube.com/watch?v=g0sRBc4ZisM
124 2450097
>>450074
Язык позволяет. Законом не запрещено. Хули ты ебало скрючил?
125 2450099
>>450085

> В чем не прав этот интеллигентый господин?


В том, что растянул на 16 минут 3,5 слова про то, что джава говно, а шарп лучший!
126 2450102
>>450097
законом не запрещено писать и на ассемблере. хули ты на языке высокого уровня пишешь? чего экономишь то?
Мне нужны только подсказки имен и для этого пытаться реализовывать весь контракт вьюмодели мне нах не всралось - это тупо бойлерплейт.
127 2450120
>>449664

> чтобы не писать это вот if(Log.Level >= LogLevel.Information) ?


Ну напиши это вот один раз псевдосвойством с геттером и вставляй везде.

[code]
bool LogLevelInfo { get => LogLevel.Debug >= LogLevel.Info; }

void test()
{
if (LogLevelInfo)
{
Console.WriteLine("Okay");
}
else
{
Console.WriteLine("Not Okay");
}
}
[/code]
128 2450121
>>450102
Ну так не реализовывай весь контракт. Тебя кто-то заставляет?
129 2450129
>>450121
Да. Иначе NRE
130 2450130
>>450121

> Тебя кто-то заставляет?


>>450129

> Да.


Значит реализовывай контракт полностью. А не то премии лишат.

> Иначе NRE


Сделай конструктор с дефолтными значениями параметров.
131 2450135
>>450130
я просто не буду писать на авалонии
уйду лучше в монастырь (то есть на compose desktop)
132 2450140
>>450135
Двачую! А я уйду на Лазарус/фрипаскаль.
133 2450163
>>450120
и как это отменяет необходимость писать if на каждую строчку кода? никак

та же херня и в Diagnostic
134 2450177
>>450163

> необходимость писать if на каждую строчку кода?


А вот это сообщение попахивает дурной архитектурой.
135 2450179
>>450163
Как по мне, так лучше завести таки по отдельному методу расширения для каждого метода логгирования, в которых и будет происходить проверка, и навесить на каждый [MethodImpl(MethodImplOptions.AggressiveInlining)]
Типа
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void TraceIfEnabled(this Logger logger, string mesage)
{
if (logger.Level >= LogLevel.Tracing)
{
logger.LogMessage(message);
}
}

В таком случае, с очень большой вероятностью при компиляции тело метода будет поставлено в места его вызова, а там уже компилятор проведет внутриподецурную оптимизацию (один из самых простых видов оптимизации для него) и повырезает лишние аллокации.
136 2450182
>>450177
>>450163
Чтобы архитектура пахла лучше, оберни вывод в лог в отдельную функцию Add2Log(LogLevel l, string Message); и тупо пиши его всегда, снабжая логлевелом

> Add2Log(LogLevel.Informational, "Account: autentificate with ExtremistBook");


Все ифы ты напишешь один раз в обёртке.
137 2450183
>>450179
Хуита. Просто тупо обёртку ебани.
138 2450188
>>450183
Так это по сути и есть такая же обёртка. Мне просто удобней, когда есть отдельные методы для каждого из уровней логгирования. И, судя по наличию в MS.Extensions.Logging методов расширения типа LogDebug(this ILogger, ...), это удобно не только мне. Можно, конечно, вообще сделать и обёртку по твоему типу, и метод расширения.
139 2450232
>>450177
причем тут архитектура до строчки лога

>>450182

>снабжая логлевелом


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

>>450179

>AggressiveInlining 256 Метод должен по возможности выполняться как встроенный.


>по возможности


как то все ненадежно.
вариант с видео от Jetbrains пока самый лучший
140 2450241
>>450179

> при компиляции


разве что при третьей -- второй IL->native компиляция.
в ИЛе это отдельный метод остаётся, я многократно проверял
141 2450251
>>450232

> ты вообще не понял суть проблемы


Ну перефразируй. Хуль.
142 2450261
>>450241
Ну как бы да. Но, как по мне, это не проблема. Скорее всего, если ты пытаешься так изъебнуться с оптимизацией логгирования, то ты опасаешься, как бы оно не оказалось в горячем коде и не начало там стрелять. А горячий код у тебя, так или иначе, через какое-то время будет пересобран JIT-ом на максимальным уровнем оптимизации. А там и PGO ещё подтянуться может, который отметит, что код под условием ни разу не выполнялся, и выкинет его к херам, оставив на всякий случай fallback.
143 2450271
>>450251
проблема стара и проста

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

2 тебе не нужны на продакшене такие подробные логи и ты отключаешь на уровне логера писать трейс в лог, но все строки logger.Log* по-прежнему продолжают вычисляться, рождать никому не нужные объекты, делать боксинг. На все это зря тратится cpu и нагружается gc

3 Это не те строчки лога, что можно вырезать через ConditionalDebug - они должны быть в сборке продакшена.
И потому чтобы решить проблему ты берешь стандартное решение - У КАЖДОЙ строчки лога пишешь if(TraceEnabled)

4 потом тебя задалбывает писать этот if и ты идешь искать решение как писать поменьше бойлерплейт кода.
144 2450302
>>450271

> но все строки logger.Log* по-прежнему продолжают вычисляться


> ты берешь стандартное решение - У КАЖДОЙ строчки лога пишешь if(TraceEnabled)


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

Предложенный тобой способ избавляет от записи лога, но все же требует, чтобы сообщение было собрано до вызова метода.
146 2450310
>>450304
Значит, вынести сборку сообщений в отдельные методы и передавать эти методы коллбэком в обёртку. В том числе лямбдой на месте писать:
Add2Log( Loglevel.Level, () => { // Сборка месседжа здесь; } );
147 2450332
>>450310
Создание делегата тоже не бесплатная по аллокациям операция.
148 2450352
Меня решарпер подъебал недавно.
Предложил переобъявление рекордов с новыми значениями заменить на
var new record = oldRecord with {someProp = newValue}
А эта хуйня делает теневую копию - не копирует строки и референс тайпы а копирует их ссылки.
И нахуя такой авторефакторинг предлагать спрашивается?
149 2450353
>>450352

> var new record


newRecord
150 2450382
Для шараги нужно установить Visual Studio, но я аутист с некропк, который предпочитает писать в блокнотике и кокомпилировать ручками.

Какая из старых версии мне лучше подойдёт (4Гб памяти)? 2015?
151 2450388
>>450332
А классы-атрибуты бесплатные?
152 2450397
>>450382
Где-то так, но там и будет какой-то дотнет 2 или 3, который та же самая лютая некрота.
153 2450400
>>450397
А не, это я перепутал с 2005. Но всё равно старое говно.
154 2450401
>>450400

>Но всё равно старое говно.


А как быть-то. Качать новую, но ставить минимальную комплектацию и использовать офлайн документацию?
155 2450418
>>450388
хз че за классы-атрибуты
if бесплатен

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

инлайн метод - тут не котлин где инлайн методы есть и надеятся встроит не встроит это не дело.
156 2450427
>>450418

> хз че за классы-атрибуты


Да, ХЗ, вспомнилось чот.
157 2450435
>>450382
Устанавливай .net 3.1 и какую-нибудь vs 2015. для пту хватит.
158 2450468
>>450388
В данном случае да, так как они инстанцируются один раз при загрузке класса. Объекты лямбд же у тебя будут создаваться каждый раз при вызове такого метода логгирования. Ведь чтобы сбилдить строку, зависимую от аргументов, ей придется эти аргументы замыкать. Ну если только ты туда не хочешь статическую лямбду передавать. А это тупо, так как в таком случае проще строку один раз собрать и не париться с какими-либо лямбдами.
159 2450476
>>450468

> Объекты лямбд же у тебя будут создаваться каждый раз при вызове такого метода логгирования


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

Как ни крути, получается бойлерплейт, проще не ебать мозги и юзать иф.
160 2450501
>>450382

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


Ну и не ставь студию, пиши в блокноте, компилируй через C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe
161 2450515
>>450501
Не, пусть ставит дотнет 6 и вс-коде. Конпелирует пусть через dotnet run / dotnet build / dotnet publish. Я так делаю на своей некропеке, базарю, всё летает, ещё захочеш!
162 2450715
Какой самый эффективный способ сделать string.format без аллокации?

Пока вижу только вариант использовать один экземпляр StringBuilder. И его метод:
AppendFormat(String, Object, Object, Object)

Предварительно все аргументы привести к строке, чтобы избежать боксинга. А если аргументов больше 3х, ну придется аллоцировать, хотя в обычной ситуации больше 3 и не надо.
image.png43 Кб, 921x229
163 2450717
Аноны, скажите пожалуйста вот у меня есть реквест ентити в фориче, разве ентити не оптимизирован так что он сначала будет создавать команду для базы, а потом когда дойдет до SaveChangesAsync вытянет все и и сделает одной командой?

мне говорят что ентити будет делать 100 реквесто в базу, я считаю что убдет делать 2, кто прав?
164 2450729
А нахуя вы считаете аллокации? GC сам должен управиться со всей магией.
165 2450730
>>450715
Самый эффективный способ - писать на сишке, а здесь забей.
166 2450738
А как наследовать массив? Мне нужен массив, но с доп методами (расширения не предлагать).

Если я создам структуру, внутри которой будет поле массива, то это будет плохой идеей? Тогда структура будет передаваться по значению?
167 2450741
>>450715
Если уж так горит сделать с минимумом аллокаций, то можно string.Create заюзать. Правда придется сначала вручную вычислить длину финальной строки, а потом же вручную копировать span-ы строк аргументов в span финальной.
168 2450770
>>450715
использовать 10й шарп
169 2450778
>>450730
Типичное зумерье, которое верить, что чем ниже язык тем производительнее. Что не ассемблер? А может сразу машинный код?

>>450715
Эффективно юзать буфер из массива байт, а потом его привести в строку (не просрав кодировку).
170 2450780
>>450729

>GC сам должен управиться со всей магией


он и управляется...за счет поедания ресурсов на свою работу
171 2450781
>>450778

> Типичное зумерье, которое верить, что чем ниже язык тем производительнее.


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

> Что не ассемблер? А может сразу машинный код?


Ты дурак? Ассемблер это набор мнемоник для машинных кодов.
172 2450783
>>450781

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


только есть тонкость. растет сложность и в итоге компилятор рождает более эффективный код, чем человек.
173 2450784
>>450783
В случае с написанием кода на ассемблере компилятор сей действительно скорее всего родит более эффективный код, однако к более высокоуровневым языкам это не относится. А про интерпретирумые вроде шарпа и речи не идёт.
174 2450809
>>450784
Как бы net-ий MSIL перед выполнением каждого метода собирается JIT'ом в машинный код. Классической интерпретации уже давно нет. Плюс JIT потом может пересобрать методы с большим уровнем оптимизаций. А так как JIT имеет доступ к статистике исполнения кода, то он может сгенерировать код более эффективный, чем выдал бы AOT-компилятор. Как пример, в рантайме JIT может убедиться, что у интерфейса есть только один класс, его реализующий, и выполнить девиртуализацию вызова.
175 2450826
>>450778

>Эффективно юзать буфер из массива байт, а потом его привести в строку (не просрав кодировку).


Так стринг билдер этим и занимается. Нахер городули городить? Еще и медленнее получится.
176 2450832
>>450715
в общем повторю
1 переходишь на дотнет6
2 читаешь вот это https://devblogs.microsoft.com/dotnet/string-interpolation-in-c-10-and-net-6/
3 нихера не понимаешь
4 ???
5 профит
177 2450834
>>450784

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


Дядь Вась, ассебмлер это И ЕСТЬ МАШИННЫЙ КОД
178 2450913
>>450832

> нихера не понимаешь


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

Почему диспатчер все называют диспетчером??
180 2450925
>>450915
А с щедулером и репазитарием все ок значит?
181 2450931
>>450834
Жопочтец?
182 2450957
>>450925
Кстати да!
183 2450960
>>450717
Сделай и проверь, ептыть
184 2450966
>>450931

> с написанием кода на ассемблере компилятор сей действительно скорее всего родит более эффективный код


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


И какое же слово я прочитал неправильно?
image86 Кб, 262x206
185 2450974
Какой же C# сасный. Я прям тащусь!
186 2450975
>>450974
Удваиваю. Особенно лямбды, после них другие языки кажутся недоделаными.
187 2450981
>>450975

>лямбды


>пук среньк DisplayClass у вас тут гигабайт лишних аллокаций набежал

188 2450989
>>450966
Да, все таки жопочтец. Я имел в виду, что код написанный на си, и скомпилированный в машинные коды скорее всего будет столь же или даже более эффективным, чем код написанный вручную на асме.
189 2450996
>>450981
Да похую. Программы свои покажи, оптимизатор преждевременный. Аллокации, блять.
190 2451002
>>450960
Судя по профайлеру он каждый раз делает новый запрос
191 2451004
>>450989
жопочтец как раз ты. где я спорил с ЭТИМ тезисом? Я спорил с тем, что ассемблер не перекладывается 1:1 на нативный процессорный язык, а не с тем что сишный код будет быстрее за счёт всяких Спанов и прочьего. Не надо мне приписывать того, что я не говорил.
192 2451006
>>450975

>после них другие языки кажутся недоделаными.


кому как
в котлине синтаксис лямбд куда приятнее.
193 2451017
>>451006
Тоже сначала так считал, пока не стал замечать в кодах лямбду в лямбде, лямбдой погоняя. В итоге уже на хрен знает какой ступени теряешь понимание что вообще тут происходит.

Да, опять программисты плохие, язык хороший, но язык способствует такому синтаксису и люди это делают. А лямбда должна быть короткой и понятной, а не размазанными кишками бизнес логики
194 2451021
>>450832

> $"Hello, {name}! How are you on this fine {DateTime.Now.DayOfWeek}?",


Как же я люблю ПоХаПэ
195 2451022
>>451006
Я имею ввиду языки без лямбд. А в котлине глянул, вроде синтаксис такой же, стрелка и скобачьки.
196 2451023
>>451021
Почему бы не применять полезную мировую практику?
197 2451035
>>451017

>в кодах лямбду в лямбде, лямбдой погоняя.


ну в обычном коде - ссзб. а в DSL это просто пушка.
>>451021
ну да. делали "свою жаву" и потому много изначально не сделали нужного, а потом уже впихивали как придется - IReadOnlyList, nullable, $"", [^1]...

>>451022

>вроде синтаксис такой же, стрелка и скобачьки.


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

Func<string, int> vs (String)->Int

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

А еще там есть скоупы - то есть допустим ты определил расширение к string типа "".Md5() Так вот ты можешь сделать скоуп - и только в нем будет доступно это расширение и больше нигде.

Результат этого - jetpack compose прямой которого эквивалент на шарпе выглядит бы коряво, да и работал бы не так
198 2451038
>>450996
Чел, видимо ты ни разу в жизни OutOfMemoryException не ловил.
Может быть для твоего легасного проекта с 1 rpm это и не важно и преждевременно, но когда начинается настоящий хайлоад приходится выкручиваться и писать allocation free код.
199 2451049
>>451035

> IReadOnlyList


А что не так? Рид-онли листов быть не должно?

> nullable


А здесь-то что не так?!
200 2451054
>>451049

>А что не так?


они внедрены ПОЗДНО, а значит их впихивали "как получается", а не по нормальному.
как итог IList не наследуется от IReadOnlyList
можно побухтеть про Interface Segregation Principle, но по факту у тебя по коду ходит Ilist и ты не можешь передать его просто туда, где ждут IReadOnlyList. А ведь именно так и правильно ожидать, то есть делать минимальный контракт. Но это неудобно и потому народ так и продолжает гонять везде IList по методам (я не из таких - у меня контракты жесткие и мне неудобна)

nullable же пришлось вводить как хинтинг. Можно конечно попробовать трактовать как ошибки, но это создаст свои проблемы - я пробовал Threat Warnings As Error и в итоге выключил нахер.
201 2451060
>>451054

> как итог IList не наследуется от IReadOnlyList


ну естественно. Рид-онли коллекции запрещают изменение или добавление элементов
202 2451061
>>451035

> там есть


> есть и возможность


> А еще там есть


Но энивей это жаваподелие, которое тянет за собой жаварантайм. Странная придирка из треда, который аналогичный рантайм за собой таскает, но всё же. Присматривался к котлину. Вроде неплохо, но что-то смущает.
203 2451062
>>451038

> когда начинается настоящий хайлоад


И когда же? Был ли у тебя хайлод? Сомневаюсь.
204 2451066
>>451060

>ну естественно.


перечитай внимательнее гринтекст )

>>451061

> который аналогичный рантайм за собой таскает


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

>Странная придирка из треда,


Что поделать. Когда пишешь на нескольких языках, то постоянно в каждом языке "блииин ну почему тут так не сделали, удобно же"
205 2451108
Какого хуя вектора из System.Numerics не умеют в double?
206 2451363
>>451108
Умеют.
207 2451394
>>451038
Ну, допустим у меня на моем проектике - 10к+ rps.
Сервер для взаимодействия с устройствами. Устройства подключаются, висят на сервере подключенные, с ними может как сервер взаимодействовать так и кто-то извне что-то делать через сервер.
Юзал лямбды активно.
Относительно потребляемой памяти. 100к единовременно подключенных и висящих устройств и 10к клиентов что с ними работают. Трафик под 100Гб/с
2 ГБ оперативки.
Хуй знает короче. Я не то чтобы оптимизатор какой-то там. Единственное что делал оптимизатроского - свой буффер и пул для работы с памятью, ну и не юзал я этот вот хост который сейчас майки используют, а просто сделал свой, кек, в котором только то что мне нужно было. Но вот так вот. OutOfMemoryException за два года непрерывной работы хуевины - ни разу не было ни на одном из объектов где оно крутится.
208 2451405
>>451394
Если нет захвата переменных лямбдой то такие лямбды не влияют на память и gc ибо создаются один раз
209 2451408
>>451363
Да что ты? Где же Vector3 двойной точности?
210 2451418
Я правильно понимаю, что массив из структур хранится в куче? В виде 1 объекта размером с Размер структуры * Кол-во элементов?
211 2451422
>>451418
Куча это объём неаллоцированной памяти, там ничего не хранится кроме мусора от предыдущих программ
212 2451423
>>451418
Да. Даже если список пуст
213 2451426
>>451422
ты еще скажи что куча это гомер.
214 2451429
>>450715
Span<char> наиболее быстро. Быстрее только наверн сделать функцию на С++ и потом маршаллить её результат в C#, но и тут свои подводные есть.
215 2451430
Посоны, а что мета для аутентификации в мвц и, например, веб апи? ЖВТ или ney core identity или еще что-то? Что больше всего вкатуну пригодится?
216 2451433
>>451430

> мета


Это что-то на зумерском?
image.png439 Кб, 960x540
217 2451435
>>451429

> маршаллить её результат в C#


Я чекал вариант с dll на сях. Да, сявый код работает быстрее, но эта скорость нивелируется ценой вызова функции из dll
218 2451436
>>451430
IdentityServer пока забей, он платным с недавних пор стал. Сейчас все переходят OpenIdDict
219 2451439
>>451435
Всё зависит от контекста. Дай побольше информации о задаче
220 2451440
>>451433
Дедушка, подскажи пожалуйста, что для аутентификации учить зумеру?..
221 2451441
>>451429
ну спаны это уже ручной труд

ну вот либа ZeroLog которая логгер без алоков
он основан на ZString

а с выходом 10го шарпа стал использовать интерполяцию.

так уж лучше ZString использовать чем руками городить спаны
222 2451445
>>451441
Какой смысл в этой экономии на спичках?
223 2451447
>>451445
а зачем вот писать кучу экономных жсон сериализаторов если есть многофункиональный ньютонсофт?

спичек может быть очень очень много и вклад суммарно очень весомый.
224 2451450
>>451445
Это важно на мобилках и в серверных приложениях. Чтобы лишний раз не драконить гербедж коллектор.
je7p5AHzEAM.jpg122 Кб, 1080x1047
225 2451451
Эй, шарпчане!
Почитал ваш тред, интересно.
Сам вот недавно только осознал, шо свято хочу изучить этот язык. Начал, вроде все прикольно, интересно. Изначально, ещё при выборе языка, даже не думал, о работе в этом направлении, а вот теперь встал вопрос. Есть ли здесь аноны, которые РАБотают именно с этим языком на РАБоте. Пилите стори: какой функционал выполняете? Сколько зарплата? Насколько сложно было найти работу и т.д. да и в принципе, насколько сложна сама работа? Я имею ввиду переработки, сроки, пиздюли от начальства, ну и вот это вот все. Понимаю конечно, что в этом вопросе у каждого субъективная точка зрения, но все же... Просмотрел ютуб на эту тему, но там чёт все как будто через розовые очки, а мне хотелось бы услышать более реальные истории. Я захотел обучаться этому всему не из-за историй 300к/сек. А как просто смена профессии.
Сам работаю с ебучими людьми в продажах и откровенно говоря - заебало. Толпы ублюдков, которые чем-то не довольны. Ух сука, ненавижу клиентов, а недавно меня ещё и на руководящую должность сунули и теперь я ненавижу ещё и сотрудников. Ну и я решил кардинально сменить тип деятельности.
В общем анонасы, рассказывайте.
Если я вдруг не по адресу и у вас тут за подобные вопросы шлют нахуй, ну чё....пойду нахуй отсюдова
17078335.jpg81 Кб, 640x640
226 2451466
227 2451469
>>451451

>Есть ли здесь аноны, которые РАБотают именно с этим языком на РАБоте


Полтреда работают, еще половина вкатывается. Сам я вкатился уже как 1 год и 15 дней (без 15 минут 16 дней). Но первые 10 месяцев были очень хуёвыми т.к работал на заводе программистом, платили мало и обучался всему сам с помощью гугла и стековерфлоу

>какой функционал выполняете?


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

>Сколько зарплата?


60к

>Насколько сложно было найти работу


Буквально за 2 недели нашел после выпуска из ПТУ и психиатрической больницы чтобы не идти в армию.

>Сложна сама работа


Всё подозрительно легко. Ну это потому что веб-апи писать просто там особых скиллов не надо. Переработки иногда бывают, но в основном по моей собственной инициативе если что-то интересное появляется. Кабан-кабаныч не давит, не выёбывается, всё тихо и спокойно по человечески.
IMG20220730144918613.jpg144 Кб, 1280x1018
228 2451481
>>451469
Хм, а живёшь в ДС или нет?
229 2451533
>>451451

> Насколько сложно было найти работу


Главное, чтобы у тебя было что показать. Это как минимум пет-проекты. Тогда работу найти не сложно. Конечно, ещё нужно будет знать основы, чтобы пройти собеседование. Но если увидят, что ты знающий чувак, есть опыт разработки, то без проблем возьмут.
230 2451552
>>451035

>ну в обычном коде - ссзб. а в DSL это просто пушка.


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

Проще взять какой-то json или toml, так как доку все равно придется писать.
231 2451553
>>451035

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


Это вообще обязательный костыль, ибо ритёрн выйдет не из последней лямбды, а из всей цепочки и самого метода, лол

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

Ну, в общем, кажется все вроде круто, но потом понимаешь что шарп кратно лучше продумал и продизайнен, а все это жабо наследие на котором придется писать, это отдельная тема для трэш треда (даже сколько радости приносит тот же грэдл)
234 2451568
>>451567
не туда запостил, лол
235 2451592
>>451552

>а DSL оказался перехайленным костылем, где как как его писать знает только автор самого DSL.


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

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


ну на то он и DSL чтобы быть именно кодом. Просто с более простым выражением

>>451553

>Это вообще обязательный костыль, ибо ритёрн выйдет не из последней лямбды, а из всей цепочки и самого метода, лол


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

>Функции кажутся крутыми на деле приводят к импорту со звездой


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

Поначалу меня бесило когда копируешь код с SO, а там импорты не указаны и он найти не может и ты не можешь понять что ему нужно. Но... в asp.net с его service.Add та же самая херня. Да и не только с ним - мелкие пошли по пути "делаем через расширения" и без гугления не разберешься какую либу подключать и неймспейс чтобы код перестал быть красным. Хорошо, когда знаешь какую. Ну так и в котлине тоже та же ситуация.

> что шарп кратно лучше продумал и продизайнен


ну это уже вообще смешно. шарп родился как жава, а потом стал обрастать уже к этой основе как придется. продуман ха
- нулабилити не было изначально.
- $""
- [^1]
- IReadOnly*
- нельзя сделать расширение для статических классов
- ConfigureAwait(true)
- event. идея понятна, реализация понятна, но разве она удачна
- инлайновость (да нет ее и вот с логированием выше разговор был)
- свойства. не хочешь автосвойство - будь добр пиши полную портянку.
- нет val, только var
...

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

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


не технически для меня, НЕ УЧИВШЕГО жаву, все наследие упирается в
- да гребаные дженерики. на деле я просто не сидел и не разбирался.
- нет структур, а я как то привыкши думать об экономии памяти.
и нулевое вникание в "как там у жавы"
235 2451592
>>451552

>а DSL оказался перехайленным костылем, где как как его писать знает только автор самого DSL.


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

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


ну на то он и DSL чтобы быть именно кодом. Просто с более простым выражением

>>451553

>Это вообще обязательный костыль, ибо ритёрн выйдет не из последней лямбды, а из всей цепочки и самого метода, лол


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

>Функции кажутся крутыми на деле приводят к импорту со звездой


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

Поначалу меня бесило когда копируешь код с SO, а там импорты не указаны и он найти не может и ты не можешь понять что ему нужно. Но... в asp.net с его service.Add та же самая херня. Да и не только с ним - мелкие пошли по пути "делаем через расширения" и без гугления не разберешься какую либу подключать и неймспейс чтобы код перестал быть красным. Хорошо, когда знаешь какую. Ну так и в котлине тоже та же ситуация.

> что шарп кратно лучше продумал и продизайнен


ну это уже вообще смешно. шарп родился как жава, а потом стал обрастать уже к этой основе как придется. продуман ха
- нулабилити не было изначально.
- $""
- [^1]
- IReadOnly*
- нельзя сделать расширение для статических классов
- ConfigureAwait(true)
- event. идея понятна, реализация понятна, но разве она удачна
- инлайновость (да нет ее и вот с логированием выше разговор был)
- свойства. не хочешь автосвойство - будь добр пиши полную портянку.
- нет val, только var
...

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

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


не технически для меня, НЕ УЧИВШЕГО жаву, все наследие упирается в
- да гребаные дженерики. на деле я просто не сидел и не разбирался.
- нет структур, а я как то привыкши думать об экономии памяти.
и нулевое вникание в "как там у жавы"
236 2451597
>>451553

>шарп кратно лучше продумал и продизайнен,


...
- рекорды с его with когда появились только
- многострочный текст запарился ждать когда завезут
- main без класса Program - крайне сомнительная хрень, постоянно забываю галку ставить в студии
- if и остальные ничего не возвращают.
- нет изначального разделения на мутабельные и риоднли списки, словари и т.д. Никакой строгости - все используют if
- даже контрактное программирование не взлетело лол. Кроме как в фреймворке нигде и не используется.
...
(да ебу... иконки мешающие набирать этот текст. Какой идиот придумал делать их поверх текстовой формы....)
237 2451598
>>451597

>Никакой строгости - все используют if


все используют List
238 2451600
>>451592

>нулабилити не было изначально.


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

>нет val, только var


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

>нельзя сделать расширение для статических классов


Зачем? Расширение то еще зло, которое нужно использовать осторожно.

>статических классов


В котлине вообще какая-то байда.

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


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

>$""


Вот как раз продуманно, ты задаешь контекст для строки, ты бы видел как раньше в котлине нужно было символ "$" писать и нельзя было по другому, потому что все строки интерпритируются (а я не хочу чтобы все!). В этом и продуманность
239 2451602
>>451598
Списки и всякие мапы - это такие динамические "резиновые" структуры, если список сделать неизменяемый, это уже будет не список. В общем, вся это дрочь на иммутабельность, она ломает идеи структур данных. Там где тебе нужен массив ты берешь какой-то выдуманный замороженный список.
240 2451605
>>451602

> if и остальные ничего не возвращают.


И это реально круто, потому что есть тернарный оператор!
241 2451607
>>451592

>- [^1]


В кокотлине выкинули классический for, чтобы добавить кривые ренджи и писать такой трешь
for (i in 8 downTo 1 step 2)
242 2451612
>>451600

>Нефига ты мечтатель для языка которому 20 лет


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

> благо в шарпе это опционально.


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

>Тот еще звездец, который котлинисты признают


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

>Зачем? Расширение то еще зло, которое нужно использовать осторожно.


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

>В котлине вообще какая-то байда.


угу. я хейтил пока не разобрался. там синглтон классы object и companion object - буквально "приаттаченый к классу сигнлтон класс без имени". А раз это класс, то и все возможности класса - те же расширения

>Видно что свойство это отдельный элемент


я про backfield, который не зарезервировали и приходится каждый раз прописывать вручную свойство, если оно не авто (что довольно часто)

>а в котлине до сих пор не могут в приватные сеттеры


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

>(а я не хочу чтобы все!)


ну это уже спорно и на уровне фломастеров.

>это уже будет не список


нет. это будет списком. в котором нет "риоднли не значит что он иммутабелен".

>она ломает идеи структур данных


>Там где тебе нужен массив ты берешь


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

А что в шарпе? а в шарпе IList (который не наследник IReadOnlyList лол) и Array... в итоге (у 99% шарпистов) метод принимает Ilist, потому что "так привычно", ты передаешь ему массив и оно валится в рантайме.
Строгость контракта уровня "мы шарп, нам нинужны никакие контракты" (что видно по тому что Contract.Requies() так и не пошел в массы)

>потому что есть тернарный оператор!


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

и возвращаемость настолько "не нужна", что в новом switch именно ее и сделали и все ей пользуются )

>В кокотлине выкинули классический for


ну я выдвигаю претензии к шарпу как шарпист. Я не хвалю котлин (в котором тоже хватает WTF), а жалуюсь на шарп. И стараюсь избегать сравнения фич которых нет в шарпе. И var/val, иммутабельность, выражения я упоминаю не потому что они есть в котлине. Я имел эти претензии еще до изучения котлина.
242 2451612
>>451600

>Нефига ты мечтатель для языка которому 20 лет


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

> благо в шарпе это опционально.


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

>Тот еще звездец, который котлинисты признают


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

>Зачем? Расширение то еще зло, которое нужно использовать осторожно.


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

>В котлине вообще какая-то байда.


угу. я хейтил пока не разобрался. там синглтон классы object и companion object - буквально "приаттаченый к классу сигнлтон класс без имени". А раз это класс, то и все возможности класса - те же расширения

>Видно что свойство это отдельный элемент


я про backfield, который не зарезервировали и приходится каждый раз прописывать вручную свойство, если оно не авто (что довольно часто)

>а в котлине до сих пор не могут в приватные сеттеры


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

>(а я не хочу чтобы все!)


ну это уже спорно и на уровне фломастеров.

>это уже будет не список


нет. это будет списком. в котором нет "риоднли не значит что он иммутабелен".

>она ломает идеи структур данных


>Там где тебе нужен массив ты берешь


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

А что в шарпе? а в шарпе IList (который не наследник IReadOnlyList лол) и Array... в итоге (у 99% шарпистов) метод принимает Ilist, потому что "так привычно", ты передаешь ему массив и оно валится в рантайме.
Строгость контракта уровня "мы шарп, нам нинужны никакие контракты" (что видно по тому что Contract.Requies() так и не пошел в массы)

>потому что есть тернарный оператор!


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

и возвращаемость настолько "не нужна", что в новом switch именно ее и сделали и все ей пользуются )

>В кокотлине выкинули классический for


ну я выдвигаю претензии к шарпу как шарпист. Я не хвалю котлин (в котором тоже хватает WTF), а жалуюсь на шарп. И стараюсь избегать сравнения фич которых нет в шарпе. И var/val, иммутабельность, выражения я упоминаю не потому что они есть в котлине. Я имел эти претензии еще до изучения котлина.
243 2451613
>>451481
Нет, ебеня на 2 млн человек.
244 2451621
>>451602
я поясню шире

Я не говорю про иммутабельные типы что там в System.Collections.Immutable - это вообще отдельные структуры для многопотока.

Я говорю про строгость, что я могу указать принятие неизменяемого списка и быть в этом уверенным. IReadOnlyList такой гарантии не дает. Принимать массив? У кодера по всему коду списки ходят и материализовывать в массивы только чтобы угодить очередному методу- лютая дичь. В итоге и родился подход создания защитной коллекции в самом методе/конструкторе потому что нет на уровне языка средств гарантий.

И когда добавили IReadOnlyList , то пользоваться им все равно неудобно (от него не наследуется IList), что все так и продолжили использовать IList

В шарпе много хороших вещей, но тут создатели знатно обосрались.
245 2451627
>>451621

> от него не наследуется IList), что все так и продолжили использовать IList


Я уверен, что они оба реализуют IEnumerable<> вот прям настолько уверен, что даже гуглить не полезу. а раз реализуют, то вот бери и объявляй IEnumerable<YoItemType> YoVar = BazTask.GetList();

Что может пойти не так?
246 2451632
>>451627
Не всегда удобно, чтобы метод принимал именно IEnumerable, так как а) Вместо коллекции могут подсунуть бесконечный генератор б) Твоему алгоритму нужно выполнить двойной обход коллекции. С произвольным IEnumerable можно таки поломаться.
247 2451633
>>451632
>>451627
ICollection, пацаны. Вот основа основ
248 2451636
>>451612
Кривой дизайн
-Везде автовывод, без IDE нечитаемо.
-Кривая асинхронщина, читаемая только с IDE
-Иммутабельность только для ссылки, когда у тебя все мутабельно, для додиков сойдет, ФП-господа ржут с этого.
-lateinit говнофикс с магией, потому что иммутабельный дрочь не до конца заходит в императивную разработку.
-val, жесть.
-магия с автокастом, в божественно шарпе надо явно указать новую переменную, никакой магие, все явно.
-отключение нуллабельности, не всем этот развод "на миллион долларов" заходит, когда у тебя вся типизация умножается на два.
-!! говнофикс, что так ты упадешь с НПЕ что так.
-Мешать процедурный стиль с ООП это плохо, еще в 90х к этому пришли и именно жаба себя ставила противовес С++, указывая на то что нет функций.
-100500 зарезервированных слов, там звездец.

Выкинул на помойку, когда у меня сломался код (год спустя), когда компилятор вместо метода стал дергать базовую функцию расширения (то ли let, то ли run... хз туча их там) и ругать меня за то, что сигнатура не совпала, лол.

Там еще тонна говна, которого я не помню, просто надергали говная с груви, скалы и шарпа и ботинком прибили - и так сойдет.
249 2451644
>>451636

>Кривая асинхронщина


В чем кривость?

>>451636

>val, жесть


Что не так?
250 2451649
>>451644

>В чем кривость?


Нужна IDE чтобы увидеть что метод асинхронный.
251 2451654
>>451649
Ну вообще ide не обязательно, чтобы увидеть, что метод обозначен как suspend, так что это придирки на пустом месте. Вообще на котлине вне idea вряд ли кто-то будет писать, раз уж это целиком и полностью продукт jb, как собственно и на сишарпе писали только в студии пока райдер не вышел.
252 2451656
>>451633
как и все остальное - не дает гарантию неизменяемости.

>>451636
мы вроде в шарпотреде и должны обсуждать недостатки шарпа, а не котлина. И уж тем более не натягивать сову на глобус

>-Везде автовывод, без IDE нечитаемо.


в шарпе идентично. var, вывод типов, без IDE не понять откуда взялся класс ибо неймспейсы это как import *

>Кривая асинхронщина, читаемая только с IDE


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

>Иммутабельность только для ссылки, когда у тебя все мутабельно


какие то фантазии. риоднли список он реально ридонли. он заморожен и гарантируется что не будет изменен. И это не на уровне ICollection<T>.IsReadOnly, а я могу описать сигнатуру

>-lateinit говнофикс с магией


null! говнофикс )) в чем разница? ты определенно не понимаешь разницы между иммутабельными типами для многопотока (которые на самом деле мутабельные) и frozen-коллекциями которые в обычном однопоточном коде (я все время говорю о вторых)

>-val, жесть.


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

>-магия с автокастом


сложно оценить проблемность. мне это тоже не нравится, но проблем не испытывал

>!! говнофикс


null! никакой разницы. если ты используешь его как "отвали с варнингами" то ссзб и в шарпе упадешь с NRE аналогично. А так это просто фикс когда тебе виднее, а анализатору нет.

>Мешать процедурный стиль с ООП это плохо


это нужно DSL. даже MAUI если не будут тупить будет использвоать static using чтобы было похоже на процедурный стиль и избавиться от многочисленных new

>>451649

>Нужна IDE чтобы увидеть что метод асинхронный


зачем это видеть? что это дает?

напомню - я наезжаю на шарп в шарпотреде (на тот самый шарп на котором я пишу с его рождения, а на котлине всего чуть), и нападать на котлин в шарпотреде....
252 2451656
>>451633
как и все остальное - не дает гарантию неизменяемости.

>>451636
мы вроде в шарпотреде и должны обсуждать недостатки шарпа, а не котлина. И уж тем более не натягивать сову на глобус

>-Везде автовывод, без IDE нечитаемо.


в шарпе идентично. var, вывод типов, без IDE не понять откуда взялся класс ибо неймспейсы это как import *

>Кривая асинхронщина, читаемая только с IDE


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

>Иммутабельность только для ссылки, когда у тебя все мутабельно


какие то фантазии. риоднли список он реально ридонли. он заморожен и гарантируется что не будет изменен. И это не на уровне ICollection<T>.IsReadOnly, а я могу описать сигнатуру

>-lateinit говнофикс с магией


null! говнофикс )) в чем разница? ты определенно не понимаешь разницы между иммутабельными типами для многопотока (которые на самом деле мутабельные) и frozen-коллекциями которые в обычном однопоточном коде (я все время говорю о вторых)

>-val, жесть.


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

>-магия с автокастом


сложно оценить проблемность. мне это тоже не нравится, но проблем не испытывал

>!! говнофикс


null! никакой разницы. если ты используешь его как "отвали с варнингами" то ссзб и в шарпе упадешь с NRE аналогично. А так это просто фикс когда тебе виднее, а анализатору нет.

>Мешать процедурный стиль с ООП это плохо


это нужно DSL. даже MAUI если не будут тупить будет использвоать static using чтобы было похоже на процедурный стиль и избавиться от многочисленных new

>>451649

>Нужна IDE чтобы увидеть что метод асинхронный


зачем это видеть? что это дает?

напомню - я наезжаю на шарп в шарпотреде (на тот самый шарп на котором я пишу с его рождения, а на котлине всего чуть), и нападать на котлин в шарпотреде....
image.png20 Кб, 454x217
253 2451657
254 2451658
>>451633
Ты немного не в теме обсуждения.
Мы тут выражаем недовольство, что ICollection<T> не реализует IReadOnlyCollection<T> в силу исторических причин. Это бывает временами очень не удобно, и припятсвует распространению этого интерфейса. А он как раз очень удобен для использования в конкрактах методов, так как даёт всем понять, что коллекция меняться не будет.
Анон предложил использовать в таких местах IEnumerable, но у него есть подводные камни, о которых я и написал.

Как по мне, выходом, пусть и корявым, могло бы стать добавление в ICollection<T> метода IReadOnlyCollection<T> AsReadOnly(). В нем можно было бы возвращать саму коллекцию, если она поддерживает IReadOnlyCollection, либо объект-обертку. Но на это тоже скорее всего не пойдут, так как даже добавление новых методов в столь древний и широко используемых интерфейс дело очень болезненное.
Так что остаётся только городить свои методы расширения.
255 2451660
>>451656

>в шарпе идентично


Ты пиздабол, в шарпе ограниченно только локальной областью. Дальше можно не читать
256 2451664
>>451660
кто ограничен?
поясняй разницу. иначе получается ты пиздобол
впрочем после претензий к val я этого и не ожидаю что ты пояснишь нормально
257 2451667
>>451656

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


Ты попался на дерейл олух! олух! Ты попался на дерейл, глупый дурачок!
Рекомендую игнорировать котлиномразь, закатившуюся в тред, а если не прекратит, начнём репортить.
258 2451670
>>451667
ясно. значит закрыли вопрос.
вместо вменяемых аргументов в защиту шарпа ты стал нападать на другие языки, хотя котлин был просто для примера "что такое, когда язык продумывали все таки, а не "так исторически сложилось"" и почему это может быть удобно"

Но ты не понимаешь даже недостатка Ilist, а претензия к val вообще занавес

так что проходим мимо.
259 2451674
>>451670
Ты используешь самые примитивные подходы в демагогии, поэтому хватит косить под несведущего дурочка, мы не в джава треде, тут так просто не разведешь никого.

Шарп это язык общего назначения, котлин прокси-язык жабы, который кроме мобильной разработки практически нигде не прижился.
Жаба протухла, не носи её сюда.
260 2451678
>>451674

>Шарп это язык общего назначения


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

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


не знаю почему ТЫ так вцепился в котлин ведь претензии к шарпу от шарписта (я шарпист - это мой основной язык, а котлин чисто замена хамарина на мобилках для меня), но аргументы уровня "ваш язык говно потому что говно". Котлин молодой язык, а жависты - дикие консерваторы мазохисты, ведь столько лет пишут на убогом языке и их не парит. Вооо. на тебя похожи ))). Любой недостаток разбивается об "а мне норм"

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

>Жаба протухла, не носи её сюда.


к жабе у меня такие же претензии как и к шарпу (у них же одинаковый изначальный дизайн).
261 2451681
>>451678
Жаба протухла, не носи её сюда.
262 2451682
>>451681
ты сам ее принес
на мой список претензий к дизайну шарпа ты списком претензий к котлину (причем высосанными из пальца). Про котлин от тебя я уже наслышался и про жаву тоже. По шарпу есть че сказать то? ну кроме "мне норм, а значит так правильно"
263 2451684
>>451682
Жаба протухла, не носи её сюда.
javaiscobol.png421 Кб, 900x900
264 2451685
265 2451699
Уже больше года замечаю сишарп фанбоя, который всей доске пытается доказать, что в шарпе нет никаких недостатков, в то время как в жабе, котлине и расте их просто уйма. Ну и еще с рейтингами techempower носится, в которых asp.net быстрее перегоняет плейнтекст, чем фреймворки на расте или го.
Но ничего, сейчас школа началась, сегодня только линейка, а завтра уже уроки, так что уровень неадеквата снизится.
266 2451700
>>451674

>Жаба протухла, не носи её сюда


А причем тут жаба?
267 2451708
>>451699
>>451700
Жаба протухла, не носи её сюда.
268 2451710
>>451699
В сишарп треде восхищаются сишарпом. Никогда такого не было.

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


Мы будем по тебе скучать.
269 2451771
>>451658

> ICollection<T> не реализует IReadOnlyCollection<T>


и не должен
270 2451784
Как узнать размер символа в байтах, зная кодировку?
И правда, что один символ юникода может занимать 2 байта, а другой четыре?
271 2451788
>>451784

> может занимать 2 байта, а другой четыре


зависит от кодировки, в ютф-8 да, в ютф-16 нет
272 2451794
>>451788
Т.е. если мы возьмем кодировку ютф-8, то нельзя сказать, что все символы там имеют одинаковый размер?
273 2451798
>>451794
Да.
Пробел, цифры и латинские буквы = 1 байт
Русские буквы = 2 байта
Китайские, Японские, корейские = 4 байта

Эмодзи вроде вообще 5 байт, но я могу ошибаться
274 2451800
>>451771
должен.

ICollection расширяет IReadOnlyCollection
и должен без проблем передаваться как есть в методы принимающие IReadOnly

Ну а если пойдут аргументы про ISP, но если напирать на этот аргумент то ICollection также не должен наследовать IEnumerable

Ситуация с IReadOnly* это следствие проблемы бинарной совместимости (о чем явно писали), а не потому что "не должен"
275 2451801
>>451784
ну размер без кодирования ты не узнаешь
можешь только максимальный размер узнать чтобы знать какой буфер выделять.
276 2451802
Анон, я правильно понимаю, что ASP.NET Web API — это урезанная версия ASP.NET MVC? И если выучу первое, то буду понимать и второе? Я смотрю большая часть курсов по MVC, а в вакансиях обычно Web API, вот думаю не выучу ли не то в итоге.
277 2451809
>>451802
в первом возвращают жсоны
во втором сгенеренный хтмл.
вот и вся разница

во времена "все фронтенд" генерить хтмл на бэкенде приходится редко
278 2451813
>>451784

> Как узнать размер символа в байтах, зная кодировку?


https://dotnetfiddle.net/VUWGKL
279 2451815
>>451813
- как запланировать событие которое должно произойти через 6 часов
- Thread.Sleep(...)
- ПРИЕМЛЕМО
280 2451818
>>451815
обоснуй предъяву. Напиши своё
281 2451822
>>451818

>обоснуй предъяву.


в твоем решении выделяется буфер в памяти
работает - да
эффективно - нет

>Напиши своё


ну вот https://docs.microsoft.com/en-us/dotnet/api/system.text.unicodeencoding.getbytecount
282 2451824
>>451822

> работает - да


чувак, Thread.Sleep не просто не эффективно, но ещё и НЕ работает. Как ты, например, будешь Ctrl+C (то есть токены отмены) обрабатывать?
283 2451826
>>451824
никак. это ж демон. он работает сам и у него нет консольки.
замечательно работает.
image.png52 Кб, 800x300
284 2451827
Без холивара по типу у кого какие скобки красивее или классы статичнее.
У кого сейчас больше будущего? У котлина или шарпа и главное почему (ваше мнение)?
285 2451829
>>451826

> он работает сам


Ага, и останавливать его НЕ надо?
286 2451831
>>451827
.NET офк, вот почему:
1. Котлин живет потому что живет Джава
2. Джава живет потому что много легаси
3. Легаси переписывается на упругий Go и .NET
4. Меньше легаси - меньше джавы - меньше котлина

Но, у котлина есть своя ниша, которую .NET пока что не занять - это мобилки под андроид. Но тут майки просто долбоёбы не хотят нормально линукс поддерживать.
287 2451833
>>451827
Это две абсолютно разные ниши. Котлин подмёл под себя андроиды. А Шарп — многоцелевой. И его Замарин — непопулярен
288 2451836
>>451818
хотя вижу родной метод GetByteCount такой же бестолковый. Я не знаю что он делает в наследниках, но в базовом классе превращает текст в массив чаров зачем то (и это из Span<>)

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

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

>>451829
надо, но проблемы нет. Как вот в видео про обнволятор killall /f остановит все.
289 2451837
>>451813
Не анон. Я как раз не знаю длину строки.
Изначально я хотел передавать в пакете байтов инфу о размере одного символа и количестве символов в строке, но анон >>451801 написал, что размер символа вариативный.
Так что да, буду предавать данные об общем размере в байтах.

Просто почему я по первому пути пошел, потому что у меня еще передается и массив интеджеров, к примеру.
290 2451838
>>451809
То есть и там и там внутреннее устройство именно бэка будет одинаковое? Как подключается база, как идет работа с зависимостями, репозитори паттерн и вот это вот все.
291 2451842
>>451831

>Но тут майки просто долбоёбы


Знаешь, это причина большинства провалов. Како смысл перспективности идеи, если ее реализует долбоеб?
292 2451843
>>451838
ну да. просто генерация вида уносится на фронт (если она конечно есть эта генерация вида. а не просто данные ради данных)
ну и подход к авторизации будет немного другой, а в остальном идентично.
293 2451844
>>451836

> надо, но проблемы нет


Вообще есть. Graceful stop это обязательное условие для части сервисов.

> Как вот в видео про обнволятор killall /f


А, ну ясно, понятно
294 2451849
>>451836

> еще одним офф языком разработки


Не ещё одним, а предпочтительным
295 2451852
>>451844

>Graceful stop это обязательное условие для части сервисов.


такое требование только к сервисам написаное прямыми руками. К тем, кто юзает sleep вместо таймера, это не относится.

>>451849
разницы нет. мне, условному жависту, придется его выучить и только потому что кто-то объявил его предпочтительным? это так себе аргумент.
правда, ЭТО АНДРОИД. а там жава немного совсем не та жава, что полная и выбор сделать проще.
296 2451853
Что полезно сделать в гитхабе, чтобы пойти джуном? Два года работаю с sap (erp модули).
297 2451857
>>451831
>>451833
>>451836
Благодарю.
298 2451871
>>451831

>Легаси переписывается на упругий Go и .NET


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

>>451831

>которую .NET пока что не занять


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

Котлин такой же язык общего назначения, как и шарп, можно и мобилки, и бек писать, и даже фронт с нативщиной.
299 2451876
>>451853
Вобщем планирую делать примитивную crm по гайдам с ютуба, подводные? Хватит на джуна?
300 2451877
>>451871
У котлина нет своей JVM, котлин топит джаву и сам вместе с ней идет на дно. Сами джависты не хотят за одну зарплату писать на двух языках, а мобильники слишком узкая ниша.
JVM все, надо было развиваться.
301 2451883
>>451877
Жидбрейнсы напишут свою вм.
image.png280 Кб, 604x604
302 2451888
>>451883
На котлин-нейтив
303 2451891
>>449667

> Сделать url encode


Это что получается, надо в каждом методе будет вызывать Uri.UnescapeDataString?
Выглядит как костыль...
304 2451922
Здравствуйте, можете, пожалуйста, скинуть какой-нибудь материал, чтобы почитать про Ковариантность/Контравариантность. Я в общих чертах понял, но вроде нихуя не понял. читал на метаните
305 2451925

> 3. C# для десктопа


> — WPF ( https://docs.microsoft.com/ru-ru/dotnet/desktop/wpf )


> — WinForms ( https://docs.microsoft.com/ru-ru/dotnet/desktop )



А че кроме этого есть еще что-нибудь?
Еще же было что-то для вин10, не очень популярное
Может еще какой способ интересный есть чтоб графическое приложение напиать
мимо-вкатываюсь-обратно-после-армейки/нихуянепомню

А точно, а кроссплатформу никак не сделать на этом?
306 2451929
>>451925
Есть мертворожденный uwp и совсем новый maui, но они в целом построены на тех же принципах, что и wpf. Знаешь последний, считай что знаешь и остальные два. И по wpf лучше всего будет навернуть уроки шмачилина на ютьюбе. Затем отполировать троелсеном, у него рассматриваются некоторые продвинутые вещи. Для джуна этого хватит.
307 2451932
Сап линкубоги, подскажите как выбрать из перечисления уникальные последние элементы?
Есть условный лист айтемов с повторяющимися id, я хочу выбрать айтемы:
Item.Id = 1 <-
Item.Id = 2
Item.Id = 3
Item.Id = 2 <-
Item.Id = 3
Item.Id = 3 <-
308 2451933
>>451932
Через оконные функции.
309 2451935
>>451929

>uwp


Точно.

> maui


На MAUI реально можно написать норм приложение разом для всех мобилок?

> по wpf лучше всего будет навернуть уроки шмачилина на ютьюбе. Затем отполировать троелсеном, у него рассматриваются некоторые продвинутые вещи


А за это двачая
310 2451939
>>451877

>котлин топит джаву и сам вместе с ней идет на дно


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


>мобильники слишком узкая ниша


>JVM все


Спасибо, посмеялся. Пиши чаще, techempower-шиз.
image4 Кб, 513x41
311 2451942
😑😑😑
312 2451945
>>451935

> На MAUI реально можно написать норм приложение разом для всех мобилок?


Без знания жавы нет.
313 2451947
>>451925
Для десктопной кроссплатформы есть Avalonia.

>>451935

>На MAUI реально можно написать норм приложение разом для всех мобилок?


Можно, но никому не нужно. Все равно 99% пилят натив, в крайнем случае на Флаттере или Реакт Нейтиве делают что-нибудь на отъебись.
314 2451949
А на Xamarin'е норм писать под ведроид? После изучения основ С# хочу сделать небольшой аналог ватсапа.
315 2451951
>>451945

>Без знания жавы нет.


зачем знать жаву?

>>451949
хамарин на любителя. попытка усидеть на всех стульях всегда ограничивает
316 2451953
>>451932

Не знаю, сохраняет ли порядок группировка, но попробуй сделать GroupBy по айди, а затем из группы брать Last.
317 2451954
>>451949

>на Xamarin'е норм писать под ведроид


В теории писать-то можно, но на пратике андроид разработка это котлин/жаба/реактив натив
image.png62 Кб, 1183x715
318 2451960
319 2451964
>>451960

>Stack Overflow questions


Оно с реальным продакшном не коррелирует, если че.
320 2451966
>>451960
Когда умрет котлин, может ты знаешь, techempower-шизик?
image.png187 Кб, 1069x791
321 2451971
>>451966
Скоро
image.png161 Кб, 1045x602
322 2451975
>>451966
>>451971
А знаешь что самое прекрасное, что котлин это не их проект. Им даже париться не надо над ним, да и вообще там свой дарт есть, сразу в фуксии.
Поматросили и бросили.
image.png557 Кб, 1035x707
323 2451984
Наглядно
324 2452045
>>451949
нуу

1 долгий запуск. На современных девайсах не так заметно, но вот мой старенький планшет с MediaTek MT8732 8+ секунд для хелло ворлд. На моем старом смарте - 15 секунд было.

2 ограниченность функционала вида "да блин как тут сделать"

на старте решил взять хамарин, там все похоже на WPF ну разве что глюки (ну а где их нет). слепил и нужен был мне вроде был все виды клика в гриде. И бац - не работает лонгклик. Вот прост работает, а конкретно там внутри грида, внутри чего то да в комбинации с другими кликами не хотело. Гуглю - а там пишут "не реализовано, но вы можете сделать поддержку сами". Давно было дело, но как то мне это сразу не понравилось и как раз появился первый альфа compose, где все было чудесно (если конечно не считать необходимости изучения котлина). Не текущий момент я в восторге (но да, заплатил за это изучением котлина, что совсем не мелочь. Язык имеет огромную выразительную мощь - но это же является и недостатком. И очень весомым. Я бы не рекомендовал так грузить голову)

3 больше жрет памяти и больше весит.
хотя на это всем плевать как бы. Просто я имел возможность сравнить абсолютно идентичное мое приложение которое я портировал. В нативе на стареньком MT8732 работает пошустрее визуально, то есть весьма приемлемо.

в общем то вряд ли это проблема на текущий момент.
goblin-смеётся-6-красное-лицо.webm1,3 Мб, webm,
600x338, 0:05
325 2452055
>>451877

> мобильники слишком узкая ниша

326 2452058
Погоди, а на Фуксии какой язык основной? Не Котлин разве?
Кстати, где Фуксия? Я уже год не слышу этого названия. А про неё говорили уже много лет назад
image.png167 Кб, 1280x720
327 2452069
328 2452079
>>452069
Фкусия, котлин, дарт - всё это говно забудут через год после релиза.
329 2452144
>>451877

> мобильники слишком узкая ниша


Бро, тебе что-нибудь говорит статистика прибыли из онлайн игр по отношению к другим?
330 2452167
>>452144
Зумерье не в состояние отличить что такое ниша разработки и продукт. Если Гейтс самый богатый человек, который заработал на винде, которая на сях, значит си самый популярный язык? Так в ваших поридж мозгах работает?

Имелось ввиду мобильная разработка под нишевое железо (ARM) и нишевую операционку (андроид), под нишевую виртуалку (Dalvik)
Goblin-тебе-прямая-дорога-в-дурдом.webm1,1 Мб, webm,
848x472, 0:09
331 2452172
>>452167

> нишевую операционку


> андроид


> Так в ваших поридж мозгах работает?

332 2452431
Не рвите дупу андрюшникам, их и так жизнь наказала на жабе писать.
333 2452501
>>452431
ну если не брать старое в виде жавы, фрагментов, хмл разметки, руннеры, асинтаски и прочую херь, а взять все последнее, то писать не просто неплохо, а даже приятно
334 2452533
>>452501
Говноед
335 2452544
>>452533
вот и вся аргуметация )
зы: это вы просто хамарин не пробовали - вот где мучение
336 2452567
>>452544
После jvm копро он нам предлагает навернуть ксамарин копро.
Говноед.
337 2452573
>>452567
не после, а перед. читай внимательнее.
338 2452658
дяди и тети, скажите, нужно ли задротить задачки типа (и более сложные подобные)

C2.4. Найти:
а) сумму кубов всех целых чисел от 20 до 40;
б) сумму квадратов всех целых чисел от a до 50 (значение a вводится с клавиатуры; 0<a<=50);
в) сумму квадратов всех целых чисел от 1 до n (значение n вводится с клавиатуры; 1<=n<=100);
г) сумму квадратов всех целых чисел от a до b (значения a и b вводятся с клавиатуры; b>a).

при изучении яп?
339 2452687
>>452658
Имхо бесполезны
340 2452688
>>452658
Конкретно те что ты написал - ты должен изи делать по хорошему.

> (и более сложные подобные)


Нужны примеры.

Вообще, ты НЕ обязан знать математику, если ты про это, т.е. вот те задачки что ты скинул - это чисто проверка того, что ты умеешь писать простые циклы, а не знания математических определений. Что такое сумма кубов ещё любой дурак знает, но если будут какие-то более ебанутые задачи где ты чисто математические термины не понимаешь - то скорее всего автор задач даун
341 2452696
>>452658

>сумму кубов всех целых чисел от 20 до 40;



int i;
int sum = 0;
for(i=20; i<=40; i++)
{
sum += i × i × i;
}
342 2452698
Вы вообще, сидящие тут в треде, работаете? Че то бесконечные рассуждения о том какой язык лучше, какой язык сдохнет, а практические вопросы все игнорируются
343 2452700
>>452696
Ньюфаг не палится.
344 2452703
>>452696
Enumerable.Range(20,40).Sum(num => numnumnum).
345 2452705
>>452703

>Enumerable.Range(20,40).Sum(num => numnumnum).



Какая-то нечитабельная хуйня, которая неизвестно во что скомпилируется. Нахуй с пляжа.
346 2452706
>>452705

> Какая-то нечитабельная хуйня


Дислексик?
347 2452710
>>452706

Я ебал вот эту конструкцию =>
Нахуй не нужна.
348 2452711
>>452710
Вкатун, спок
349 2452712
Что читать по вашей хуйне? Албахари вроде как чисто справочник, или тоже подходит для изучения языка?
350 2452718
>>452688
https://c-sharp.pro/задачник/

вот примеры
я понимаю как работают циклы в целом, просто интересно нужно ли подобное прям до самой тяжелой задачки задрачивать
351 2452719
>>452718
Очевидно, если уверен, что можешь решить задачу - просто переходишь к следующей, пока не найдётся такая, которую ты пока решать не умеешь.
352 2452737
>>452718

> https://c-sharp.pro/задачник/


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

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

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

И мне нужно больше практических примеров использования, типа лучшие практики там хз, вот такое где посмотреть?
354 2452843
>>452790
Приведу аналогию
Допустим ты пишешь на тасках в стиле Task.Run()
И ты пишешь продолжения вида task.ContinueWith(). Где будут выполняться эти ContinueWith? А за это отвечает TaskScheduler, который можно передать свой или же будет использоваться дефолтный (который пихает в тредпул эти продолжения)

await та же фигня только сбоку
await разбивает код на цепочку "продолжений". И вот за то, где выполнять эти продолжения и отвечает SyncronizationContext. Семантически он ведет себя как TaskScheduler для тасков.

await-ер захватывать текущий SyncronizationContext (если он есть конечно) и если сказано его учитывать ConfigureAwait(true), то все выполнение делегируется ему, иначе тредпулу.

Это самый обычный "выполнятор" как и TaskScheduler, которому можно передать делегат продолжения, чтобы он его выполнил как хотел.
GUI создает свой SyncronizationContext и устанавливает через SynchronizationContext.SetSynchronizationContext, а дальше уже механизм await сам будет его захватывать и работать с ним.

Ты можешь и сам создать свой контекст - сделать наследника SyncronizationContext в котором создать поток, впилить туда BlockingCollection и все поступающие делегаты туда запихивать, а твой поток будет перемалывать их все в 1 потоке. Собственно вот ты и сделаешь так свой простой UI контекст.
355 2452868
>>452737
понял, спасибо большое, анонче
356 2453117
>>452710
Лол
357 2453120
>>452698
Работаем, стрижем сотыги, заходим сюда исключительно для развлечения, пока идёт сборка или юниттесты или когда хочется отдохнуть от таски
1662154528154.jpg79 Кб, 783x636
358 2453164
Здравствуйте. Подскажите пожалуйста по одному вопросу: были ли на вашей практике примеры, когда человек без опыта и в возрасте подходящем к 30 начал карьеру сишарп разработчика?

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

на данный момент я между джавой и сишарп выбираю, поэтому очень хотелось бы ваше мнение и на этот счёт услышать

Спасибо.
изображение.png82 Кб, 878x227
359 2453175
>>452843
другой анон, но в тему поста. Вот, например, написал метод, где заменил все синхронные вызовы на асинхронные, всё я правильно делаю, просто приписывая await к асинхронным методам или чето не так?
360 2453195
>>453164
советую окунуться в пхп, без шуток
361 2453251
>>453175
в этом и есть смысл async/await
чтобы код выглядел линейно как и синхронный, так что все верно
362 2453270
>>452790
Кстати этот самый SyncronizationContext и его связь с ExecutionContext - еще один косяк в дизайне языка.
И кто из джунов(или выше) об этом знает а?

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

ну что блин им стоило сделать
await
await!

или ладно к текущему сделать
await@
await?

и было бы лепо, а не уродское ConfigureAwait, которое нужно везде тыкать.

Кто там говорил про продуманный дизайн языка )
363 2453314
364 2453329
>>453164
Ну, я почти в 30 начал. В 24 - на первую работу после магистратуры устроился.
За 20к работал. Заебись все. Деньги плотют вовремя, пишешь код. Что еще надо?
365 2453344
>>453195
Говноед.
366 2453459
>>453270
Чёт не понял, чел.
Как я верну результат круда если например мой вызов бд GetZalupaAsync будет без контекста? Он же просто улетит куда-то выполняться в другом месте, а круд продолжит выполнение в текущем.
Так-то ConfigureAwait(false) для UI нужен чтобы вызовы говна не висели в UI потоке и не тормозили его. В asp.core Ты обязан в текущем потоке работать, который тебе выдали на запрос, и если хочешь че-то запустить через FireAndForget использовать бэкграунд треды, иначе наплодишь говна.
В чем я не прав?
367 2453469
>>453459

>Он же просто улетит куда-то выполняться в другом месте


Не понял о чем ты.

>В asp.core Ты обязан в текущем потоке работат


никому никто ничего не обязан. асп.кор всего лишь не определяет свой SyncronizationContext, что дает твбе возможность не писать ConfigureAwait(false), но никаких больше требований или правил. Если у тебя долгоиграющий сервис что-то делает на CPU, то выделить ему свой поток, (а то и несколько) вне пула - нормальное решение.
368 2453484
>>453459

>Ты обязан в текущем потоке работать, который тебе выдали на запрос


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

Есть тредпул с потоками, есть async/await-ы которые дербанят твои асинхронные методы на куски. Далее планировщик запихивает нужный кусок в тредпул для выполнения. И так по кругу. Так все и работает если ничего не трогать.
Ну в GUI имеем еще сверху 1 выделенный поток для UI
369 2453832
Как заставить VS запускать PowerShell при запуске программы?
370 2453859
Я не понимаю, зачем нужна конструкция async await. Ведь с await основной поток приостанавливается, то есть программа все равно выполняется синхронно. А без await можно просто вызвать task.run
371 2453865
>>453859
Поток ставится на паузу и его выполнение уходит в очередь, а ядро в это время начинает исполнять другой поток из очереди.
372 2453893
Не думали перейти на нормальный язык, а не сидеть на жалкой дешевке, подделке, копипасте, пойманной за руку?

МИМО JAVA БОГ ГОСПОДИН ХОЗЯИН
373 2453902
>>453859

>Ведь с await основной поток приостанавливается


нет. с async/await потоки не приостанавливаются. в этом и есть смысл асинхронности.
await освобождает поток и ждет результата асинхронной операции.
374 2453908
>>453120
А подскажите плиз какой пет проект сделать чтоб джуном взяли. Думаю сделать простую crm какую-то. Хочу болото 1с покинуть
375 2453921
>>453893
Двачую

мимо JAVA ENTERPRISE OVERLORD 35к рублевой массы
376 2453964
А можно ли с нуля вкатиться в геймдев? Или сейчас даже начинать не стоит?
377 2453977
>>453469
>>453484
Новый день новое открытие.
Тяжело..
Буду разбираться, спасибо мужики.
378 2453980
>>453908
Вкатуны испоганили слово пет проект, если изначально это был проект, которым ты занимаешься в свободное от работы время в свое удовольствие, теперь пет проект -- это бесполезный высер, которым ты пытаешься впечатлить Кабана, чтобы он взял тебя грести на галеру.
379 2453988
>>453980

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


А что в этом собственно плохого? На пет проекте ты освоишь основы работы с фрейморком, гитом, CI/CD мб. Полезная вещь на самом деле.
380 2454002
>>453964
Разрешаю
381 2454032
>>453980
Ну так я и планирую заниматься в свободное от работы время в свое удовольствие. Я всмысле чтоб опыт коммерческой разработки появился плюс минус
382 2454061
>>453988
ничего плохого. учиться все равно нужно (а это нужно делать на реальном коде) и лучше показать что-то, чем ничего

все эти задачки "сумма квадратов" хрень.

Реальный проект пусть даже он детский, пусть даже "паттерны ради паттернов" (вообще рекомендую это на старте) правильно форматирует мозг видеть суть.
383 2454070
>>453977
на самом деле это очень простая концепция, просто твой мозг не привык думать в этом стиле.
но стоит понять парадигму, то сразу сможешь так писать в любом другом языке

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

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

Цепочка await выполняется последовательно друг за другом и если у тебя тупо однозадачная херня, то разницы особой с синхронным кодом нет, разве что в моменты ожидания I/O твой поток не заблокирован, а просто ждет когда его снова позовут.
Но другое дело если параллельно выполняется много чего.

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

А вот с асинками у тебя пул потоков. И в каждом из 10000 запросов есит цепрчка await-ов, где каждый await, когда до него дойдет выполнение, возвращает поток в пул давая возможность поработать другим. Потом await получает результат и ставит продолжение в очередь на выполнение.
Если у тебя много I/O, где происходит тупо ожидание, то эти 20 потоков легко перемолотят твои 10к запросов.
384 2454091
Есть классы NamedPipeServerStream и NamedPipeClientStream
Они являются наследниками PipeStream.

Так вот, в моем базовом классе используется PipeStream.
Затем я наследуюсь и делаю новый класс, где при помощи оверрайда пытаюсь PipeStream привести к типу NamedPipeServerStream. Но мне дают пизды.

"NamedPipeServerStream" не может переопределить "PipeStream", так как их возвращаемые типы различны.
385 2454096
Почему сишарп выбрали? Сейчас посмотрел количество вакансий, в Москве около 400 с опытом от 1 до 3 человеколет. Явно придется потолкаться. Или вы по другим критериям выбирали?
386 2454104
>>454096
Шарп лучший язык в мире.
А чё там с вакансиями по другим языкам? Ну и да, ты по з/п фильтровал?
387 2454106
>>454104
По яве в Москве больше в два раза, а касаемо зарплаты я даже не решаюсь судить, цифры разнятся, как и требования к кандидату. Пока расчет только на начало карьеры. Кстати первую работу тяжело было найти?
388 2454110
>>454106
Поставь "от 150к", сделай рисёч ещё раз, приходи обратно
389 2454111
>>454032

>в свое удовольствие


Тогда бы ты не задавал такой вопрос, а делал то, чем сам горишь.
390 2454113
>>454106

> Кстати первую работу тяжело было найти?


Мне приглашение самому пришло. Я одной компании бесплатно помог данные восстановить, мой друг там был вторым человеком. И на следующий день от него "Ты работу случайно не ищешь?"
391 2454117
>>454096
>>454104
>>454106
>>454110
>>454111
>>454113
Вы заебали воду в ступе месить. Лучше напишите как сделать апкаст свойства родительского класса.
392 2454123
>>454096
У меня в шараге на нём пишут
393 2454125
>>451658

> В нем можно было бы возвращать саму коллекцию, если она поддерживает IReadOnlyCollection


Любая коллекция кастится в рид-онли коллекцию. Хоть список хоть массив. Не забывай, что это просто коллекция, у которой есть геттер, но нет сеттеров на добавление и изменение элеменнта
image.png16 Кб, 614x211
394 2454129
395 2454131
>>454129
Что ты хотел этим сообщить?
396 2454137
>>454117

> как сделать апкаст свойства родительского класса


base.svoistvo = "mamku ebal";
397 2454148
>>454137
Может я спутал апкаст с даункастом.
Но то, что ты предложил, приведет "mamku ebal" в типу свойства base. А мне нужно наоборот: был родительский, а стал дочерний.
398 2454152
>>454148
То что ты хочешь и так происходит автоматически, в этом суть ООП.
399 2454157
>>454152
Да? Тогда звиняйте и благодарствую.
400 2454194
>>454125

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


он как раз не забывает. собственно об этом и толкуем, что IList должен быть наследником IReadOnlyList

>Любая коллекция кастится


кастится. но явным кастом.
PQLN1.png116 Кб, 480x399
401 2454195
Объясните, как снизить нагрузку на GC?
Вот я беру память из меморипулла. Парсю сообщение. Создаю объект сообщения. Дальше пускаю его по всяеким своим фильтрам, оно доходит до роутера, роутится к обработчику, обрабатывается, шлю ответ. Все, оно умирает. GC - берешь и жрет его.
Так вот. Если мой сервер работает в десктопном режиме, то он, блядь, постоянно стопит все, чтобы эти сообщения пожрать. С вообщении содержится только тип сообщения, какие-то данные о валидности, ну и может наличиствовать тело, если тип сообщения его содержит.
Я вот начинаю подумывать, что делать абстракцию над сообщением - было плохой затеей. Но чет как иначе сделать - не представляю.
Так вот. Как мне снизить нагрузку, чтобы GC не бесновался и постоянно не дергался? Просто в проффилировщике оно примерно так выглядит и меня это напрягает. Память правда так не утекает, держится на кровне 200МБ, но постоянно долбится GC.
402 2454214
403 2454216
>>454214
А ты попробуй передай IList
404 2454238
>>454195
Если у тебя дохуя строк, и дохуя с ними работы, то тут может быть проблема. Любая манипуляция со строками создает новые экземпляры строк, которые GC нужно чистить вилкой.
https://youtu.be/95AlosM6Ka0?t=280

Для этого юзают стрингбилдеры. Но я могу только догадываться что у тебя за пробелма.
Безымянный.png40 Кб, 617x792
405 2454288
>>454096
Та не.
У меня примено прикриплейд.
Вот то что там что-то делает с сообщением - это статические методы, которые по логике приложения доставляют до нужного обработчика, на уровне обработчика.

Хотя я пока накидывал пример - понял, что а нахуя мне вообще эти вот "сообщения"? Типа почему все не хранить в контексте? Он-то живет пока живо соединение. А эти вот сообщения придумывать было тупой идеей.
406 2454292
Блин, я косорукий
Это >>454288
Сюда >>454238
407 2454305
>>454288
Для начала перестань верить в то что сообщение будет прочитано за один раз
408 2454320
>>454305
Ну серьезно, чел. Я буду тебе сейчас для примера накидывать как у меня в реальности с пайпами вся хуйня, катанием по буфферу туды-сюды и прочей хуйней?
409 2454327
>>454320
А телепатов нет
То что ты покажешь то и можно увидеть
410 2454341
>>454327
Ну блин.
1. Реальный проект я по понятным причинам показать не могу.
2. Проблема как раз в сообщениях, потому что судя по профилировщику - именно они постоянно удаляются-создаются.
16620290351940.mp4856 Кб, mp4,
640x360, 0:05
411 2454440
Аноны, помогите определиться с названиями классов.

Сервис Authentication:
Нужен класс Account который содержит данные текущего пользователя и класс Account который содержит короткие публичные данные другого пользователя, которые возвращаются по запросу.

Сервис Game:
И аналогично классы Player. Один для текущего пользователя, который содержит полную информацию с инвентарем, кол-вом валюты и второй класс, который содержит короткую инфу о другом игроке, типа nickname и portrait.

Может так:
UserAccount | AccountInfo
UserPlayer | PlayerInfo
изображение.png9 Кб, 715x30
412 2454529
Есть какой-то способ получить индекс первого элемента массива, который меньше заданного числа, кроме пика?
413 2454535
Как перейти с net 6 на net 5? Я меняю целевую платформу в файле конфигурации проекта, но при компиляции всё равно генерируется файл g.cs с глобальными юзингами, из-за которых в итоге возникает ошибка.
414 2454541
>>454341
конечно они создаются. но это сколько нужно запросов чтобы они были проблемой. Как я понимаю по 1му объекту message на запрос...так это обычное дело.

для начала коментируется await Application.Handle чтобы понять что проблема именно тут, а не там.
А еще создается и контекст (хз че это) на каждый запрос. Хз насколько он тяжелый и кто его знает как работает его Parse
415 2454582
>>454535
ну так убери юзать имлиситюсингс из *.csproj
416 2454996
Привет, посаны. Пришла таска накидать API на .net 6. Подскажите что почитать чтобы его сделать. API элементарное, но я в вебе никогда ничего не писал до сих пор. Основы знаю самые.
2022-09-04 194130-Window.png16 Кб, 274x482
417 2455182
Анон я заебался. Может у меня gcc багованный? Как state может быть не 0 или 1? Это просто C, не шарп.
https://pastebin.com/tu4Rmh5v
418 2455192
>>445746 (OP)
СЯШАРПЕРЫ ВОПРОС

ВЫ НА ЛИНУКСЕ СИДИТЕ ИЛИ НА ВИНДЕ?
419 2455262
>>455192
Одновременно на всех системах, а чо?
420 2455294
Стоит ли всё таки изучить WPF? Учебников для MAUI ещё нету. Если да, то по какому учебнику?
421 2455301
>>455294
Ни WPF, ни MAUI учить не стоит. Стоит учить аспнет.
422 2455305
>>455301
Нееет, вообще не хочу веб
423 2455307
>>455305
Никто не хочет, а куда деваться?
424 2455340
>>455307
Нет, я всё таки хочу делать крутые программы для системы. Сейчас мало таким занимаются
425 2455367
>>455340
Хочешь крутые программы для системы, а будешь легаси для учёта всякой хуйни на древнем проприетарном дотнет фреймворке. Лучше уж веб, чем такая участь.
426 2455374
>>455340
дык ДЕЛАЙ
427 2455382
>>455374
Как научиться? -> >>455294
428 2455400
>>455382
А что мауи. Это ж бывший замарин
Вот mvu подход отличается
Но всё равно придется знать хамл подход
429 2455407
>>455400
Не просто бывший замарин. Это замарин, из которого целенаправленно выпилили линукс.
430 2455409
>>455407
Но книжки по замарину подходят
А mvu....не вижу в нем смысла пока

Сколько не ищу по этой теме - везде выглядит просто как разметка кодом
431 2455410
>>455400
Ну так если я пройду старую книжку по wpf начну разбираться в нём? Или где-то есть специальные книги по замарину?
432 2455417
>>455410
Частично начнешь
Разметка ведь только часть всего
Если знаешь впф и прочтешь курс стартандроид по диагонали то сможешь писать на замарине с гуглом
433 2455423
Чем вам веб то не угодил? Сидишь себе, джейсоны перекладываешь, какашечка копится
434 2455424
>>455423
А фронт кто писать будет?
435 2455433
>>455424
Сидишь себе, кнопки красишь, какашечка копится
436 2455439
>>455433
Ты определись джейсоны или кнопашкы
Есть 2 стула. Выбери один
437 2455482
>>455182
w[i-'0']=0;
'0' это 43 если мне память не изменяет. Ты пишешь в память мусор. Ты хотел w размера 10 сделать, наверное.
438 2455527
>>455482
'0' - это 48, но у него массив w из нуля элементов, так что там пиздец.
439 2455543
>>455182
ты пришел в этот тред чтобы напомнить почему мы выбрали шарп?
Спасибо, но это лишнее.
440 2455554
>>455543
Вопросы по Objective C можно тоже здесь задавать, ну а чо, аж целая одна буква в названии языка совпадает!
441 2455555
>>455424
Фронтендеры
442 2455702
>>455555
кто это? они существуют только в легендах, а по факту с тебя требуют фуллстек.
443 2455727
>>455702
Это по факту конечно. Ну у нас например фронт очень базовый - разор и пара либ с компонентами для него. Никаких версток и реактов ковырять не надо.
444 2455777
Что делать, когда истечет лицензия решарпера?
445 2455784
Могу ли я заниматься беком при помощи ASP.NET, НЕ зная HTML и CSS?
446 2455822
>>455784
Пилить REST API для фронтендеров, например.
447 2455830
>>455777
Есть довольно много сервисов фейкопочты, которые эти хитрые чехи пока не палят.
448 2455939
>>445746 (OP)
На оппике - Таприс Шугарбелл Тисаки, если кому интересно. Я не знаю нахуй я это гуглил и нахуя тебе (и мне) эта информация, Анон, но вот как-то так.
Анончики, как бросить страдать хуйней и начать работать.
449 2455945
>>455939

>как бросить страдать хуйней и начать работать



бросить страдать хуйней и начать работать
450 2456016
>>455527
Я сто лет по такой хуйне не байтоёбил, с первого курса таблицу ascii не помню.
451 2456136
Как библиотеку классов упаковать в nuget пакет с двумя сборками (мне нужно x64 и arm64)?

dotnet pack собирает под AnyCPU, в доке от Майков нихуя нет
453 2456287
>>456264
Я нихуя не понимаю, анон. Я уже отупел с эти нюгетом. Чтобы мне надо сделать, чтобы получить .nupkg с двумя dll внутри? Какие-то папки блядь, рантаймы нахуй, ебанутые. Ты вот ссылку скинул, там пишут пок кок, спите в .nuspec. В соседней статье другой индус пишет АЛЕРТ .НЮСПЕК БОЛЬШЕ НИНАДА, пользуйтесь тегами проекта для SDK. Какими нахуй тегами?

Почему я не могу написать dotnet pack p: Platform x64|arm64 и получить что хочу.

Анон помоги, я на работе сначала плакал а потом рыдал смехом когда понял что nupkg это zip архив
454 2456305
>>456287
какие еще 2 dll
дотнет dll делятся на типы рантайма - ,net/core/mono и так далее. То есть одна длл будет работать и на винде х64 и на макоси арм м2

а разделение на платформы уже там папка runtimes с нативными либами
455 2456315
>>445746 (OP)
Можно ли считаться джуном после обучения по данному курсу? Если нет, то что еще следует выучить?
https://www.youtube.com/playlist?list=PLQOaTSbfxUtD6kMmAYc8Fooqya3pjLs1N
456 2456316
>>456305
Индус писавший доку на мсдн, ты?

>То есть одна длл будет работать и на винде х64 и на макоси арм м2



В случае AnyCPU.

Пчел, у меня либа с классами с таргетом на .net6, в прожектфайле две платформы - x64;arm64, все.
В солюшене тоже самое.

Сделав dotnet pack, я увидел что msbuild просто собрал мой код под AnyCPU и пихнул в пакет. Я убил весь день, чтобы понять как собрать пакет под две платформы. И все ещё нихуя не понял.
457 2456324
>>456316
ну обычных либ они лежат так

\lib\netcoreapp2.0\MyAssembly.dll

а в твоем случае тебе нужна конкретно подменить на целевой платформе
значит у тебя такие пути

runtimes/win-x64/lib/netcoreapp2.0/MyAssembly.dll
runtimes/win-arm64/lib/netcoreapp2.0/MyAssembly.dll
458 2456327
>>456324
Окей, спасибо анон, я кажется уловил суть zip архива от корпорации добра.

А ты случаем не знаешь, как мне все это провернуть в csproj, без использования . nuspec?
459 2456330
>>456327
хз. может AfterBuild тасками можно разложить чтобы потом упаковало оно. Я не знаю как оно собирает - не интересовался.

А так посмотри примен нюспека
https://docs.microsoft.com/ru-ru/nuget/guides/create-uwp-packages
460 2456338
>>456315

>Можно ли считаться джуном


Я лично тебе разрешаю считаться кем хочешь, только не женщиной, геем можно но обычно джуном считают тех кто может самостоятельно закрывать относительно несложные таски, а знание языка тут дело обязательное, но его воообще недостаточно даже близко. Нужно знать фреймворки, ORM, SQL, предметную область, элементарную математику, git, скорее всего ещё уметь немного верстать, понимать как работает операционная система, HTTP, рантайм дуднета и кофемашина в офисе. Т.е. даже если ты осилишь этот или другой курс по языку ты будешь на один шаг ближе к заветному вкату, но идти до него будет ещё много километров идти. И даже если тебя возьмут на трейни-позицию, пока ты не начнёшь самостоятельно закрывать таски ты не будешь считаться джуном.
Если ты до этого носил пиццы, то лучше забей. Если учишься на программиста, лучше читай книги из шапки, курсы тебе не помогут если ты долбоёб.
461 2456339
Пацы, как бы удобно оформить сохранение объектов в файлы?

Есть класс LocalStorage, который должен сохранять в файлы разные классы в json формате, типа SettingsData, LoginData, ShopData, TimersData.

Можно конечно тупа вот так сделать:
_localStorage.SettingsData { get; }
_localStorage.SaveSettingsData();
// ...
_localStorage.LoginData { get; }
_localStorage.SaveLoginData();
// etc

Но если я решу добавить ещё один класс, то мне придётся обновить интерфейс ILocalStorage, а затем и саму реализацию. Как-то не очень получается.
462 2456346
>>456315
Это даже не близко к уровню стажера.

Джун это:
1. Хорошее знание C# (твой курс я по-быстрому проскроллил, не увидел там даже делегатов и ивентов, а также исключений и асинк-авейтов, немрого посмотрел, сам курс похоже не показывает как надо делать, а лишь показывает синтаксис каких-то частей языка). На metanit зайди и там по главам просто иди.

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

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

4. Базовое понимание основных концепций ооп(Solid и хотя бы штук 5 паттернов)

5. Опыт работы/наличие своих проектов соответствующих пункту 2. Без опыта работы скорее всего ток на стажера возьмут.
463 2456348
>>456346

>metanit


Там, по-моему, еще более скупо чем в этом курсе. Чел из плейлиста берет какой-то кусок синтаксиса и в течении 15-20 минут объясняет шо це такэ на примерах. На метаните текста на пару минут чтения.

> Ты чем хочешь заниматься?


Бэкенд.

> Базовое понимание основных концепций ооп


Понимаю что такое инкапсуляция и наследование. Думаю, если дадут тест на собесе с ними, то смогу решить.

>Без опыта работы скорее всего ток на стажера возьмут


Да похуй, как это называется. Под джуном я имел ввиду человека, который собирается поступать на свою первую галеру.
464 2456359
>>456348

> Там, по-моему, еще более скупо чем в этом курсе. Чел из плейлиста берет какой-то кусок синтаксиса и в течении 15-20 минут объясняет шо це такэ на примерах. На метаните текста на пару минут чтения.


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

> Бэкенд


Я не бекендер, так что пусть кто-то другой подробнее ответит, но по идее ты еще должен хоть на каком-то адекватном уровне знать asp net core, уметь писать самые простые запросы на sql, какой-нибудь маппер, любой фреймворк для dependency injection, ну и понимать как ваще интернет и сеть в общем работает примерно

> Понимаю что такое инкапсуляция и наследование. Думаю, если дадут тест на собесе с ними, то смогу решить.


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

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


Справедливо. А у тебя какой сейчас уовень? Ты только начинаешь вкатываться? Языки какие-то изучал до этого? Если у тебя вдруг уже есть опыт работы не на шарпе, то вкатиться намного проще будет
465 2456363
>>456348

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


Ебать вкатуны теперь и сленга нахватались. Ты хоть знаешь что такое галера-то?
466 2456368
>>456359

>Чем наследование может быть плохо понимаешь?


Еще нет. Чем? По-моему, очень удобная штука.

>Зачем нужна инкапсуляция понимаешь?


Да. Код писать буду не один. И чтобы другой программист не наебнул логику моего кода например, вписав в поле возраст -1000, определенным полям следует давать либо приват, либо протектед.

>Языки какие-то изучал до этого?


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

>Если у тебя вдруг уже есть опыт работы не на шарпе, то вкатиться намного проще будет


Нету. Кстати, а можно в резюме напиздеть, что работал без ТД у друга брата деда? Хотя бы пару месяцев. Сильно палиться буду?
467 2456370
>>456368

> Сильно палиться буду?


Сам как думаешь? Сейчас вкатуны нахуй не нужны, между вашим братом устраивают "игру в кальмара" самую настоящую. Иди лучше в моряки сразу.
468 2456373
>>456370

>Иди лучше в моряки сразу.


Меня как-то не привлекает идея жить и спать в одной комнате каюте с дюжиной вонючих мужиков.
469 2456381
>>456373
Ну кто на что учился.
470 2456405
>>456368

> Еще нет. Чем? По-моему, очень удобная штука.


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

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

Когда ты на реальный проект придешь, там везде будет работа чисто на интерфейсах, многое будет выглядеть примерно так:
interface IMochaProviderSevice
{
IMocha GetMocha();
}

> Да. Код писать буду не один. И чтобы другой программист не наебнул логику моего кода например, вписав в поле возраст -1000, определенным полям следует давать либо приват, либо протектед.


Малаца. Это кажется очевидным, но почему-то многие новички этого не осознают.

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


И правильно, на шарпе писать в разы приятнее.

> Нету. Кстати, а можно в резюме напиздеть, что работал без ТД у друга брата деда? Хотя бы пару месяцев. Сильно палиться буду?


Лучше не надо, сразу поймут. В теории можно фриланс написать, но я так не делал, поэтому хз.

Лучше займись каким-то своим проектом и просто впиши в опыт, что вот работал над ним полгода. Все так делают, поэтому это норм - хотя бы хр фильтр пройдешь.
471 2456406
>>456339
Ок, сделал LocalStorage универсальным. А работу с конкретными классами вынес в методы расширения. Вроде норм.
472 2456428
>>456359

>я не увидел там нескольких очень важных тем


Кстати, забыл спросить - про какие темы ты говорил?
473 2456448
>>456428
Делегаты, ивенты, лямбды, async/await, IEnumerable, using и IDisposable, исключения, Linq.

Еще бы многопоточность хоть чуть-чуть знать надо, чтобы ты знал как поток запустить и знал про тред пул.
474 2456450
>>456448
Хорошо, понял. Еще по поводу:

>На metanit зайди и там по главам просто иди.


Скажи, до какой главы ориентировочно читать, чтобы претендовать на стажера/джуна? Просто для меня очень важно, иметь четкую цель, чувствовать прогресс к ней, а не просто "учится".
475 2456453
>>456450
Ты скорее всего не встретишь 18 главу (но её полезно было бы прочитать), 20 глава не нужна, остальные все обязательно нужно понимать полностью.
476 2456454
>>456450
Вот тут: https://metanit.com/sharp/tutorial/1.1.php

Главы 1-7 должен хорошо знать

В главе 8 определение операторов и методы расширения, остальное просто прочитай 1 раз

Главу 9 просто прочитай, особо учить не надо, просто прочитай й раз и будь в курсе что такое есть

Главу 10 хорошо надо знать

Главу 11 хорошо надо знать. Но регулярные выражения идеально заучивать не обязательно

Главу 12 просто почитай

Глава 13 джуну не нужна, прочитай 1 раз и забудь, запомни только если тебе там что-то понравится

Глава 14 это не на уровень джуна, пока не лезь, только первый пункт там прочитай, как поток стартануть и попробуй сам это сделать.
Многопоточность это очень объёмная тема, но ты просто должен знать что такое поток

Главы 15, 16, 17 нужны

Главы 21(про сборщик мусора на собеседовании будут спрашивать скорее всего), 22, 23 нужны

Все остальное нахуй, даже не читай

Дальше открываешь https://metanit.com/sharp/patterns/

И читаешь про SOLID, Singleton, Command, Observer, Abstract Factory, Iterator и еще парочку паттернов какие хочешь

Это конкретно по языку и паттернам, что там еще надо тебе уже бекендеры посоветуют
476 2456454
>>456450
Вот тут: https://metanit.com/sharp/tutorial/1.1.php

Главы 1-7 должен хорошо знать

В главе 8 определение операторов и методы расширения, остальное просто прочитай 1 раз

Главу 9 просто прочитай, особо учить не надо, просто прочитай й раз и будь в курсе что такое есть

Главу 10 хорошо надо знать

Главу 11 хорошо надо знать. Но регулярные выражения идеально заучивать не обязательно

Главу 12 просто почитай

Глава 13 джуну не нужна, прочитай 1 раз и забудь, запомни только если тебе там что-то понравится

Глава 14 это не на уровень джуна, пока не лезь, только первый пункт там прочитай, как поток стартануть и попробуй сам это сделать.
Многопоточность это очень объёмная тема, но ты просто должен знать что такое поток

Главы 15, 16, 17 нужны

Главы 21(про сборщик мусора на собеседовании будут спрашивать скорее всего), 22, 23 нужны

Все остальное нахуй, даже не читай

Дальше открываешь https://metanit.com/sharp/patterns/

И читаешь про SOLID, Singleton, Command, Observer, Abstract Factory, Iterator и еще парочку паттернов какие хочешь

Это конкретно по языку и паттернам, что там еще надо тебе уже бекендеры посоветуют
16622227411080.jpg199 Кб, 563x552
477 2456456
>>456454
Хорошо, понял, спасибо большое, анон!
478 2456457
>>456454

> XML не нужен, даже не читай


Кул стори бро. Представил твоё ебало когда ты всё это для вкатуна расписывал.
479 2456458
>>456457
Там "изучения" на полчаса.
Учить всю хуйню, которую он на стаковерфлоу нагуглит за 5 минут когда она ему понадобится - смысла мало
sage 480 2456493
>>456346

>Сортировку пузырьком еще хотя бы напиши.


Как же трудно сейчас айтишникам, они до сих пор ручками пишут базовые алгоритмы.
Почему не спрашиваете теорему Пифагора?
0b418b4098521671f3788c6deff3c828.jpg139 Кб, 600x557
481 2456494
>>456348

> Бэкенд



Общие вопросы:
Уровни модели OSI
Клиент-серверная архитектура, какие бывают еще
Работа операционной системы (что делает, какие бывают, что можно переложить на нее, чтобы не велосипедить)
Многопоточка, синхронизация доступа к разделяемым ресурсам, поиск консенсуса.
Асинхронщина. Чому говно, чому круто? В чем вообще прекол.
HTTP. Чому говно, чому не говно? Принцип работы.
Вебсокеты. Что, зачем? Какие подводные камни?
Сессии, куки, авторизация-аутентификация.
JWT. Что, почему пользуем? Почему говно? Как жить-то с ними?
Почему нужно возвращать всегда 200? Вопрос с подвохой.
Докеры-хуекеры, кубернетисы-шмубирнетисы. Что, зачем, почему, как поднять.
Что за зверь такой MVC? Почему оно так популярно?
API First.

Шарпы:
База - что-то из этого не знаешь - сразу идешь нахуй

Ссылочные и значимые типы. Чем они отличаются.
Вопрос со звездочкой - что такое record, как жили без него?
Передача аргументов, чем in от ref отличается?
String - с хуя этот зверь, являясь ссылочным ведет себя как сука?
Колекции шарпа, как какие работают, вообще - нах оно надо?
LINQ, что зачем и почему говно без задач, но почему - придется пользоваться?
Женерики - что, почему заебись, чем от темплейтов из C++ отличаются, почему жава опять соснула.
unsafe - надо ли вообще оно тебе, и почему - да.
GC - что за хуй такой, как работает, зачем нужен
Финализаторы и почему ты не должен их писать.
IDispoasble - воняет говной или не? Когда надо, когда - пошло оно нахуй.
Рефлексия. Что, зачем, почему говно без задач.
Чем Framework от Core отличается, а те в свою очередь от Mono?

Бекендер-щит - тут могут быть пробелы, джуну-то, но что-то спиздануть по каждой теме надо
Механизм обработки запрос. Что вообще происходи-то, после того до сервера добрался первый SYN?
ASP - стори, че вообще такое.
Какие были майками предприняты попытки завоевать бекенд-рынок? Почему соснули?
Какие веб-серверы у майков есть для хостинга твоего приложения? Почему ты должен использовать Kestrel?
Если Kestrel, то что там с хостингом сразу нескольких приложений?
Что есть для авторизации?
Что там по работе с БД? Почему использовать ADO в 2022 все еще норм?

Как-то так.
0b418b4098521671f3788c6deff3c828.jpg139 Кб, 600x557
481 2456494
>>456348

> Бэкенд



Общие вопросы:
Уровни модели OSI
Клиент-серверная архитектура, какие бывают еще
Работа операционной системы (что делает, какие бывают, что можно переложить на нее, чтобы не велосипедить)
Многопоточка, синхронизация доступа к разделяемым ресурсам, поиск консенсуса.
Асинхронщина. Чому говно, чому круто? В чем вообще прекол.
HTTP. Чому говно, чому не говно? Принцип работы.
Вебсокеты. Что, зачем? Какие подводные камни?
Сессии, куки, авторизация-аутентификация.
JWT. Что, почему пользуем? Почему говно? Как жить-то с ними?
Почему нужно возвращать всегда 200? Вопрос с подвохой.
Докеры-хуекеры, кубернетисы-шмубирнетисы. Что, зачем, почему, как поднять.
Что за зверь такой MVC? Почему оно так популярно?
API First.

Шарпы:
База - что-то из этого не знаешь - сразу идешь нахуй

Ссылочные и значимые типы. Чем они отличаются.
Вопрос со звездочкой - что такое record, как жили без него?
Передача аргументов, чем in от ref отличается?
String - с хуя этот зверь, являясь ссылочным ведет себя как сука?
Колекции шарпа, как какие работают, вообще - нах оно надо?
LINQ, что зачем и почему говно без задач, но почему - придется пользоваться?
Женерики - что, почему заебись, чем от темплейтов из C++ отличаются, почему жава опять соснула.
unsafe - надо ли вообще оно тебе, и почему - да.
GC - что за хуй такой, как работает, зачем нужен
Финализаторы и почему ты не должен их писать.
IDispoasble - воняет говной или не? Когда надо, когда - пошло оно нахуй.
Рефлексия. Что, зачем, почему говно без задач.
Чем Framework от Core отличается, а те в свою очередь от Mono?

Бекендер-щит - тут могут быть пробелы, джуну-то, но что-то спиздануть по каждой теме надо
Механизм обработки запрос. Что вообще происходи-то, после того до сервера добрался первый SYN?
ASP - стори, че вообще такое.
Какие были майками предприняты попытки завоевать бекенд-рынок? Почему соснули?
Какие веб-серверы у майков есть для хостинга твоего приложения? Почему ты должен использовать Kestrel?
Если Kestrel, то что там с хостингом сразу нескольких приложений?
Что есть для авторизации?
Что там по работе с БД? Почему использовать ADO в 2022 все еще норм?

Как-то так.
482 2456496
>>456494
Да, про SOLID, паттерны я не стал включать исключительно из-за того что очередной бесноватый будет кричать, что это уже минимум мидл.
По факту - джуну тоже это знать надо и спросят. Так что лучше про них тоже почитай.
483 2456497
>>456493

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


Художники прежде чем начать писать портреты барышень рисуют всякие кубы и фрукты, музыканты перед великими произведениями играют гаммы, а программисты реализуют простые алгоритмы. Не вижу причин твоего подрыва.
sage 484 2456504
>>456497
Ты инженер, а не художник. Тебе не нужно мастерить колесо, чтобы потом высчитать его площадь. Тебе не нужно доказывать пифагора, чтобы использовать полигоны. Мне от работника куда важнее знать насколько хорошо он умеет работать с базой
с SQL, чем то насколько он там Фибоначчи собирать умеет.
Знает что такой алгоритм есть, загуглит если нужно будет его писать руками. Так же и во всем остальном, что уже людьми открыто давно.

Такие художники как ты и тормозят прогресс.
485 2456550
>>456504

> Ты инженер, а не художник


Инженер гораздо ближе к художнику чем ты думаешь. Ты просто не шаришь. Литкод-то медиум решить можешь хоть, инженер?
sage 486 2456576
>>456550

>Литкод-то медиум решить можешь хоть, инженер?


Гуманитарную макаку зацепило и все что он смог высрать, это писькомерство литкода. Ты жалок.
487 2456593
>>456576

> Пук

488 2456601
Дали тестовое на джуна, я его сделал, на мой, джуновский взгляд, все было неплохо. Но в итоге мне прислали отказ. Сейчас такую дизмораль словил из-за этого.
489 2456612
>>456601
Скинь. Может подскажем в чём проблема.

Когда я скидывал код - мне даже не пришлось проходить собес
490 2456613
>>456601
Да просто кандидатов было несколько, и кто-то справился чуть лучше тебя, а кто-то хуже, ну и выбрали лучшего кандидата, остальным отказ. Это нормально.
sage 491 2456618
>>456601
Сидел пол дня ковырялся в жопе, имитировал работу, пришла тестовая таска от джуна, скипнул сразу, потому что хотел посмотреть новую игру престолов (как раз времени на час).
492 2456620
>>456494

>Почему нужно возвращать всегда 200? Вопрос с подвохо


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

>String - с хуя этот зверь, являясь ссылочным ведет себя как сука?


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

>Рефлексия. Что, зачем, почему говно без задач.


Без каких задач? наряду с кодогеном лютый вин. Как раз не жава же. Впрочем кодогенерация при компиляции вещь не хуже, чем все делать в рантайме.

>Какие были майками предприняты попытки завоевать бекенд-рынок? Почему соснули?


шта? это вообще о чем.
493 2456638
Вы видели какую йобу с LINQ в 7 дотнет сделали? Я охуел если честно
494 2456645
>>456638

> Вы видели какую йобу с LINQ в 7 дотнет сделали?


https://youtu.be/1IAwkEdRZZw
495 2456650
>>456645
Проиграл
Как скопировать текст в текущую позицию? 496 2456655
Сап, делаю расширение vsix, мне нужно вставить скопированную строчку в текущее положение курсора файла, открытого в Visual studio. Как это можно сделать?

GetText() не помогает, я понял что надо копать в сторону microsoft.visualstudio.shell.interop , но я не понимаю, какой интерфейс сюда подходит?

Буду рад помощи
498 2456684
>>456676
Скинь ссылку на гитхаб, я не буду нихуя скачивать
мимо
499 2456686
>>456676
У меня он не открывается ни в 2022 студии, ни в 2012. Тем более тестовое 100% на гитхабе должно лежать.
500 2456696
>>456655
Нашел, через DTE.ActiveDocument.Selection делается.
501 2456704
>>456676
Два критичных, как мне кажется - папка Model для моделей. То есть объектов с минимум бизнес-логике. И возможно им не понравилось реализация событий, и они хотели что бы использовал INotifyChanged
502 2456713
>>456684
>>456686
https://github.com/LegateZero/TestTask

>>456704
Спасибо за ответ.

> папка Model для моделей


А как надо?
503 2456726
>>456713
В корне должна быть инструкция по сборке и тестированию в виде ReadMe.md
504 2456735
>>456676
хз че делает код без самого задания. так что по диагонали

1 засилье region мешает чтению. Ну и переменные с большой буквы. Это придирки..но зачем злить экзаменатора
2 double.Parse входной темпы - никогда не доверяй входным данным, что они будут в нужном формате. КРИТИЧНО.
3 EngineIC Engine = new(10, M, V, 110, 0.01, 0.0001, 0.1);
вот то, на что я жаловался на шарп в прошлых тредах - поди разбери что это за параметры. Там еще предлагали юзать переменные чисто для описания (гыгы). Ладно перехожу на сигнатуру -
(int i, int[] M, int[] V, double overheatTemp, double hm, double hv, double c)
имена мне ни о чем не говорят. И собственно эти же имена в классе - хз что они означают.
КРИТИЧНО.
4 Engine.TemperatureChanged += OnEngineTemperatureChanged;
а отписка где? Напрашивается IDisposable КРИТИЧНО.
5 _TimeFromStart++; - имя говорит про время, но это ничуть не время, а больше смахивает на счетчик итераций. Да и вообще там речь идет про время везде, но где само время?? КРИТИЧНО.
6 if (time == -1) - про "время" я уже писал, а по факту как ответ "Ответ на главный вопрос жизни, вселенной и всего такого". Это число не говорит о результате. Лучше вернуть результат тестирования с четким пониманием что произошло и итог. КРИТИЧНО.
505 2456753
>>456735
О, спасибо за подробный разбор.

> 5 _TimeFromStart++; - имя говорит про время, но это ничуть не время, а больше смахивает на счетчик итераций. Да и вообще там речь идет про время везде, но где само время?? КРИТИЧНО.


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

> имена мне ни о чем не говорят. И собственно эти же имена в классе - хз что они означают.


Все переменные были даны в виде физических констант. Наверное стоило им всем присвоить понятные имена тут я оплошал, да.
506 2456771
>>456753

>Подрузамевается простота добавления новых типов двигателей и тестов


ну последнего вроде нет

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

Я так завалил свой первый собес (на другом языке), где мне сказали тупо по бырому "вычислить фибоначи но не использовать кеширование". И естественно я его провалил потому что "должен был использовать мемоизацию". До сих пор не знаю, какое такое кеширование имелось в виду, если это не мемоизация.
507 2456788
>>456735

> поди разбери что это за параметры


Открой в студии с решарпером, все параметры неочевидные будут подписаны. По остальным пунктам согласен, не перезвонил бы
508 2456801
>>456788
и получается забавный результат
1 решарпер считает нужным удалить все явные param: value если они совпадают с позиционными, что делает код менее читабельным
2 в итоге сам же и замусорит своими подсказками

и читать без IDE неудобно. Особенно если смотришь какой нибудь дифф, а там магия.

конечно решарпер можно настроить чтобы не удалял, но это уже мой костыль, а не общепринятый подход.
509 2456914
Ребят, у меня ситуация: я написал аддон для приложения. По сути это самостоятельное wpf окно, которое висит на протяжении всей сессии приложения, да еще в режиме TopMost.

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

Из первого, что пришло в голову, это постоянно сканировать процессы и проверять активность нужного. Есть ли что-то проще?
510 2456928
>>456914
по хорошему у твоего окна должен быть Owner, но похоже это не подразумевается и у тебя его нет.
Значит ты должен сам следить за основным окном.
Если основное окно это WPF то ты можешь попытаться добраться до него с помощью
Application.Current.MainWindow
Application.Current.Windows

и подписаться на событие минимизации. (или тупо сделать Owner своему окну)
511 2456939
>>456928
К сожалению это приложение не подчиняется мне. Ну как если бы я из браузера запустил свою приложуху. Вот как мне браузер сделать owner ссылаясь на его процесс?
512 2456952
>>456939
Если приложение впф и ты в его процессе то ты можешь достать его окна. Тут правда еще фреймворк важен и как делается изоляция
В коре аппдомаины выпилены

А если ты в своем процессе то ты уже не аддон
513 2456966
>>456939
Все, нашел. Действительно, можно owner присвоить процесс, но только owner не как свойство окна, а как WindowInteropHelper

Process[] processes = Process.GetProcessesByName("TargetApp");
WindowInteropHelper wih = new WindowInteropHelper(this);
wih.Owner = processes(0).MainWindowHandle;

Ну естественно я опустил момент, если процессов несколько или вообще нет.
Теперь если скрыть главное приложение, то скрывается и мое. Но вет если переключаться при помощи alt+tab к примеру, то мое окно висит поверх. Тут надо убирать topMost, но тогда основное приложение будет перекрывать мое окно.
514 2456980
>>456952

>А если ты в своем процессе то ты уже не аддон


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

Скрипт, из приложения, для которого я пишу доп функционал запускает функцию из моей dll,
Эта функция при помощи именованных каналов передает данные в еще одно мое приложение.
Вот, собсно последнее мне надо как-то сделать причастным к первому. Как бцдто это часть приложения.
515 2456990
>>456966
Корчое, ни закрытие не переключение на другой процесс не влияет на дочернее окно. Только скрытие работает.

При этом перемещение дочернего окна начало заметно подтормаживать.
516 2457009
>>456990
TopMost отключил и на удивление окно основного приложения не перекрывает мое. Осталось решить проблему с детектом закрытия приложения.

Получается, что все телодвижения пока бессмысленны, если все равно все сводится к скану процессов.
517 2457011
>>456638
Кидай ссыль, почитаем
518 2457026
>>457011
Ссыль не найду. Там суть в том, что для некоторых методов (sum, min, max, avg, мб ещё что-то) теперь используются векторные инструкции, если есть такая возможность.
Ускорение примерно в 40 раз по сравнению с вычислением ручками.
519 2457035
>>457009
подписался на событие processes.Exited, но чет не работает.
520 2457039
>>457035
Ясно, понятно, нужно активировать флаг
EnableRaisingEvents = true
для целевого процесса
521 2457042
>>457039
ну это если ты его стартуешь
а если нет то тебе нужно смотреть в сторону мучений с SetWinEventHook и ловлей EVENT_OBJECT_DESTROY
Image 1.png21 Кб, 548x560
522 2457067
>>457039
угу. SetWinEventHook поможет. По быстрому попробовал это https://github.com/OpenByteDev/WinEventHook
с простым кодом (пик)
и работает

тебе же писать на чуть ниже уровнем чтобы убрать лишний оверхед в виде события
523 2457085
>>457042

>ну это если ты его стартуешь


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

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

Process[] processes = Process.GetProcessesByName("TargetApp");
WindowInteropHelper wih = new WindowInteropHelper(this);
MsgBox($"processes.Length: {processes.Length}");
wih.Owner = processes(0).MainWindowHandle;


И как-то он удачно встал, что у меня все работало как я хочу.
Но стоит мне его убрать, как мое окно при запуске проваливалось за окно главной приложухи
и эффекта TopMost только относительно приложения уже не наблюдалось.
Как только окно загружается, то сразу идет на задний план.
Что делал месседжбокс?
524 2457090
>>457067
Ой нет, сторонняя библиотека. так нехотца
525 2457092
>>457090
да причем тут сторонняя. это просто враппер для того чтобы не пердолится самому в реализацию всех эти структур
никто не запрещает и самому это делать

>>457085
Что делал месседжбокс?
активировал окно. то есть выносил на передний план
а вообще такое нужно без студии. меня запарило с 19 и 22 студии фигня что месседжбокс при запуске из под студии невидим. Приходится с трудом до него добираться
то есть работа под студией и в релизе разная.
526 2457104
>>457092

>активировал окно.


Попробовал Activate заюзать, но без толку.
Вот даже когда я скрываю основное приложение, то мое не скрывается автоматически.
С месседжбоксом скрывается.
527 2457111
>>457104
Попытался вместо месседжбокса запустить кастомное окно в режиме Showdialog
Запускается оно в момент Loading моего окна

Так вот, когда я самолично тыкаю по окну и закрываю, то мое окно работает так как нужно.
Но если я диалоговое окно закрываю автоматически через какое-то время, то эффекта ноль.
528 2457130
>>457111
Эффекта добился если сделать задержку закрытия диалогового окна на секунду. Меньше не дает эффекта.
Что это за дерьмо?
529 2457170
Как запихнуть несколько ASP.net приложений с EFCore, Postgres, Serilog и прочими вещами в железку с объемом оперативной памяти 128МБ и 256МБ флеш-памяти?
530 2457175
>>457170
Никак. Это что, задача "как посадить жирафа в холодильник"?
531 2457180
>>457175
А если очень-очень-очень сильно хочется?
532 2457185
>>457180
Форкнкть дотнет, постгрес и прочие вещи и вырезать всё, что тебе не нужно.
533 2457217
>>457180
потренируйся на жирафах до просветления
534 2457219
>>457104
я хз че у тебя происходит. тот кусок кода что я дал на пике - при минимизации основного минимизируется и окно из пика
а при закрытии закрывается
535 2457220
>>457170
EFCore заменить на даппер
Postgres на sqlite
Serilog на стандартный лог
железку на 128 ядерный комп с террабайтом оперативы

тогда можно будет запустить пару приложений точно
536 2457223
>>457185
Ну, это был бы вариант, если бы у меня в распоряжении было ~100 человек, которых можно было бы посадить поддерживать эти форки. Но у меня я и

>>457220
Ну, EFCore и так заменили на прямую работу с базой(дергаем нативные функции SQLite), логер - тоже свой написали. Все равно одно - еще как-то влезает, а вот несколько - уже не лезет. Если отказаться от ASP и реализовывать свою работу с HTTP - то в принципе 3+-1 влезет, но можно ли такое в прод пускать? Только разве что как пруф оф концепт оно может так существовать.
537 2457234
>>457223
тогда ты выбрал не ту технологию. асп.нет кор из за обилия кешей любит покушать
538 2457252
>>457234
Это не я выбрал. Моя б воля - на плюсах писали...
539 2457256
Что скажите насчёт Simple Injector?
https://docs.simpleinjector.org/en/latest/quickstart.html

Хорошее ioc решение?
540 2457267
>>457256
Хорошее но
541 2457346
>>457170
Содомит
542 2457355
>>457267
Попробовал простой пример. При вызове GetInstance для типа с уровнем жизни Transient, он создаётся два раза. Вопрос - А КАКОГО ХРЕНА??? Это или баг, или я неправильно понимаю Transient.
543 2457358
>>457355
последнее
544 2457359
>>457358
Итак, зачем ему понадобилось два раза создавать объект в GetInstace? В чём логика?
545 2457361
>>457359
патамушта могет
https://docs.simpleinjector.org/en/latest/using.html
Verifying the container’s configuration

выключи
container.Options.EnableAutoVerification = false;
image4 Кб, 428x96
546 2457366
>>457361
Понял. Спасибо. У него в примерах показано, что нужно самому вызывать 'Verify()'. Я сначала на этот метод подумал, поэтому убрал проверку и ничего не изменилось. А она по дефолту включена, лол....
547 2457368
>>457366
Стала включена. Как и некоторое другое
Не помню что ибо ушел с него раньше
548 2457369
>>457368

> Не помню что ибо ушел с него раньше


А на что перешёл?
549 2457371
>>457369
Понятно на что
На майковое после того как асп стал иметь свой дефолтный
И я просто запарился поддерживать в своих либах несколько контейнеров
550 2457392
>>457223
Попробуй
a) Пошаманить с настройками Kestrel'а https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/fundamentals/servers/kestrel.md
b) На использовать подсистему контроллеров. И возможно, роутинга. (Юзай app.MapGet и т.д.) Оставь по сути только Kestrel.

Если не помогает, копай в сторону легковесных http-серверов типа https://github.com/unosquare/embedio
551 2457420
Анончики, такой вопрос, кто-нибудь пользуется Linq2Db? Если да, то как он? Какие есть подводные? Просто все советуют в качестве ORM либо грузный EF Core, ли не очень удобный Dapper. А Linq2Db как раз выглдяит как штука, которой почти так же удобно пользоватся, как EF Core (по крайней мере для составления запросов через Linq), но вроде бы сильно легче, чем EF core, и даёт больше контроля (даже CTE-ки через LINQ мутить можно, вроде бы).
552 2457486
Здарова, шарпята.
Есть некая апиха, которая на принимает пост запрос типа:
{
“id”:[14, 88]
}
И отвечает:
{
“status”: “success”,
“data”: {
“14”:{
“id”: 14,
“info”: “foo”
},
“88”:{
“id”: 88,
“info”: “bar”
}
}
}
И есть мое приложение асп которому нужно вот то инфо из даты считывать. А собственно как? Это ж нельзя строго типизировать - айдишники и соответственно названия полей в дата каждый раз разные. Есть способ это нормально прочитать шарпом? Инбифо пиши парсер жиссонов
553 2457491
>>457486
Ставь Newtonsoft.JSON и юзай JsonConvert.DeserializeObject()
554 2457528
>>457420
ну в минимуме он памяти жрет больше чем EF
но ближе к SQL ным запросам чем более абстрактный EF
И получаем как EF без трекинга и контекста с перекосом в чистые запросы (пусть даже написаны на Linq)

Это и есть подводный камень - перекос в чистые запросы хоть и на Linq - из-за этого нет примитивного partial update

Больше чем linq2db но меньше чем ef core - SqlSugar, но там своеобразное именование и рукожопы не разделили зависимости от баз данных, поэтому тупо ставятся все зависимости и место занимают.

>ли не очень удобный Dapper


Есть путь использовать Dapper, но облегчить себе жизнь через составление запросов с помощью Linq, хотя всякие Include все ручками ибо навигацию не учитывают. Но легковесность.
555 2457539
>>457486

>Это ж нельзя строго типизировать



Ну если структура неизвестна во время ответа, то полуручной разбор
поддерживается и в System.Text.Json через JsonDocument.Parse и в Newtonsoft.JSON через JObject.Parse - и плата за это некоторый оверхед. Ну а без него - ручной разбор
556 2457597
>>457539
Не, ну она известна и даже управляема, количество и названия объектов в data зависят от айдишек в запросе, сами эти объекты тоже известны и стабильны
557 2457613
>>457597
Тогда и проблемы нет
Твой пример так вообще парсится прямо на классы
558 2457624
>>457613
Т.е на названия объектов в дата (которые таки динамичны) ниче не завязано?
559 2457629
>>457624
Ты определись уже
Известна ли структура ответа или нет
А то ты сам себе противоречишь
560 2457647
>>457629
Ну блин, получается что динамическим является количество и названия филдов у объекта дата (определяется в момент запроса, количество равно количеству айдишек в запросе (в моем случае вообще одна будет), а названия сами айдишки текстом) их тип и все остальное стабильно. Получается что известно заранее, но хрен типизируешь
561 2457715
>>457647
ерунда, а не проблема. Структура проста, можно десериализовать в словари и потом перегнать в классы. Все равно лучше чем жсон разбирать.
562 2457757
Как покрытие тестов в райдере посмотреть? Я уже dotCover поставил, ни в одном меню нет пункта о покрытии.
563 2457810
Привет всем шарперам, зашел к вам из лагеря джавистов просто полюбопытствовать.
Я чёт уже заколебался настраивать JVM, это какая-то сран и отдельная наука, такого, чтобы просто пнул и оно полетело практически не встречается на +- серьезных проектах, чуть ли не отдельных людей приходится заводить, чтобы они всё тюнили.

Это только наши приколы или у вас какая-то похожая ситуация? Как вообще у вас обстоят дела с GC? С блокировками во время этого дела? Затратами на проц и оперативку? Необходимостью тюнинга?
Статьи в интернете я читал, но интересует именно практический опыт от реальных людей, вот насколько вас приходится сталкиваться с этим в реальной жизни и насколько удобно такие задачи решать?
564 2457820
>>457715
Ну на самом деле структура чуть сложнее вот эти классы, которые называются как айдишка текстом, могут содержать в себе и массивы и другие классы.
Что насчёт такого варианта:
var response = JsonSerializer.Deserialize<Dictionary<string, JsonElement>>(responseBody);
var data = JsonSerializer.Deserialize<Dictionary<string, JsonElement>>(response[“data”].ToString());
var obj = JsonSerializer.Deserialize<SomeClass>(data[$”{id}”].ToString());
Вот так более-менее эффективно будет?
565 2457822
>>457810

> у вас какая


> ситуация?


Обесняю нашу ситуацию:
1. Скачиваешь СДК.
2. Далее, далее, далее, готово.
3. Открываешь консолечку.
4. Пишешь dotnet new console.
5. Пишешь dotnet run.
Конпелируется хеллоуворлд запускается и выводит в консоль Hello world.
Вот такие у нас дела. Завидуй.
566 2457828
>>457820
сложные структуры где черт знает что может лежать это JsonDocument.Parse и ручным выдиранием или ручной разбор через ридер.
567 2457829
>>457810
Ну, с GC по ощущениям сильно проще.
Так как язык и рантайм поддерживают значимые типы данных (ака структурам), и они широко применяются в стандартной библиотеке, то нагрузка на менеджер памяти и GC выходит заметно ниже, так как порождается меньше объектов, особенно маложивущих.
GC два. Десктопный с упором на минимизацию задержек на STW, и серверный, с упором на скорость выделения памяти. Тюнить их не приходилось. Не знаю, как себя поведет GC на огромных хипах, которые, слышал, в джавовских монолитах могут встречаться. Везде, где работал, пилят микросервисы и стараются особо много памяти им не наваливать
Обычно, когда появляются какие-то проблемы с использованием памяти, то это значит, что пора бы попробовать переписать код на allocation free. Благо инструменты, типо пулов памяти/массивов, span-ов, всяких разных ref (в том числе readonly) структур и stackalloc'а есть. Центили-байтоебы могут даже попробовать unsafe и пдрочить указатели.
568 2457837
>>457829
Спасибо за такой подробный ответ.
А как у вас с линуксом, я слышал про всякие mono, насколько реализации отличаются и насколько это вообще жизнеспособно?
569 2457849
>>457837
После выхода истинно кроссплатформенного коре моно стал не нужен
570 2457852
>>457837
Сейчас у нас основной рантайм - опенсорсный кроссплатформенный .Net Core. .Net Framework и Mono остались в прошлом и уже не развиваются. Рантайм активно развивают, в первую очередь в сторону производительности.
С запуском под линухом проблем нет. Для популярных дистров есть пакеты с рантаймом. Есть оф. образы для докера, которыми все активно пользуются.
На трёх местах, где я работал и работаю сервисы деплоятся под линухом в кубере или Open Shift.
Единственная проблема, нет нормального кросплатформенного UI. WinForms, WPF и UWP прибиты к Винде. Майки разрабатывают кросплатформенный (винда + мобилки) MAUI, но линух официально поддерживать не хотят и оставляют это на откуп сообществу. Вроде как ещё есть трули кроссплатформенная Avalonia, но я ее не трогал, потому мне сказать нечего.
571 2457859
А это нормальная тема в синглтоне в конструкторе подписываться на события, а в деструкторе - отписываться от них?
572 2457861
>>457859
что это за синглтон такой что рождается и умирает (ну допустим ладно в рамках IoC такое есть)
хотя зачем ему умирать и деструктор??? финализатор что ли?
не гуд. Отписываться нужно в Dispose (но опять же что это за синглтон такой)

самый продвинутый уровень это lifetime, но это для тех, кто постиг дзен (и это не веб где достаточно IoC контейнера из-за специфики)
573 2457862
>>457861
Немножко неправильно объяснил. У меня есть сервисы. Они не знают о своём времени жизни. Но по факту они будут жить до закрытия программы, как синглтоны, внутри контейнера. Некоторые из этих сервисов должны подписываться на события других сервисов.

Не знаю как бы это грамотно реализовать. Или добавить может им interface с методами, которые будут дёргаться извне. Типа AddListeners / Remove Listeners.
574 2457869
Почему viewmodellocator считается плохой практикой?
575 2457871
>>457862
Подписываются и пусть подписываются. Для этого события и нужны.

Если же время жизни может быть меньше того, на что подписываются то компонент должен знать, когда ему нужно очистить ресурсы
1 Stop(Async) если это что то типа HostedService
2 Dispose()
3 lifetime - токен

собственно все это одно и то же с небольшими отличиями.

а капча не охерела буквы заставлять вводить?????
576 2458003
Я хочу чтобы зпшка жоска наваливала бабла на карту и не хочу совсем уж заниматься говнокодством и хернёй. В бэк через С# норм тогда вкатываться? Просто плюсы, кои я учил до этого, не дают первого, а какая-нибудь джава второго
577 2458068
>>458003
Все упирается как и везде в возможность найти где будут наваливать и мало требовать
578 2458136
>>458068
Я не хочу получать бабло и не работать. Хотелось бы выполнять интересную более менее работу и не недополучать в деньгах, как повелось в каком нибудь эмбенде на си. Думаю C# лучший варант для этого
579 2458176
>>457420

>Какие есть подводные?


В целом, никаких. Юзаем его на кровавом энтерпрайзе с ебанутейшими запросами к базе MSSQL/Oracle.

linq2db - это относительно lightweight ORM библиотека, как раз между фреймфорком EF и низкoуровневыми Dapper/ADO.

Представь себе два экстремума, вот liqn2db - это золотая середина, а на каждом конце находятся армии фанатиков.
580 2458179
Тут ещё надо отметить, что у нас отдельная команда занимается только бд.

>>458176
581 2458197
Поясните мимопроходвишему, как разные orm могут иметь разную скорость работы, если они просто переводят запросы с синтаксиса языка в sql?
582 2458200
>>458197

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


А как разные языки программирования могут иметь разную скорость работы, если они просто переводят запросы пользователя с синтаксиса языка в команды процессора?
Вот наверное по той же самой причине.
583 2458202
>>458136
Да, вполне норм тема, но нужен опыт. В шарпе сейчас интересно в основном на новых проектах, где .net6 и т.д. Но туда берут либо по знакомству, либо за очень хорошие скилы.
584 2458204
>>458197
Они сложно переводят запросы с синтаксиса языка в sql. Обычный джойн может превратиться в цикл из селектов.
585 2458222
>>458204

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


То есть авторы orm считают, что могут лучше оптимизировать запросы, чем это сделает сама бд?
586 2458226
>>458197
EF например не только в запросы переводит и Марии таблички на объекты, но и отслеживает объекты - можно писать типа

var selectedUser = _db.Users.First();
selectedUser.Name = "pidor";
_db.SaveChanges();
587 2458227
>>458226

> Марии


мапит
588 2458268
>>458222
Не считают, просто не всегда корректно срабатывает генератор запросов. Чтобы самому не проебаться при использовании ORM, надо либо отказаться от их использования, либо очень хорошо знать кишки ORM, быть нахуй сеньором DBA и иметь лет 15 опыта, а каждый сгенерированный запрос перепроверять вручную.
589 2458329
Анон помоги, хочу событием после сборки перемешать папку из сурса в дефолтную директорию ОС типа Документов или AppData. Как определить путь? Не нашел у msbuild встроенных переменных.
590 2458334
>>458329

> Не нашел у msbuild встроенных переменных.


Пять секунд гугла https://docs.microsoft.com/ru-ru/visualstudio/msbuild/how-to-use-environment-variables-in-a-build?view=vs-2022
и мы узнаём, что мсбилд умеет читать переменные среды, соответственно, никаких встроенных переменных там и не нужно.
591 2458338
>>458334
…но сам факт показателен: зумер считает, что нет нужды изучать сраное легаси плесневелых дидов, и не знает о существовании переменных среды, и соответственно, будет велосипедить очередное мокрописечное говно.
592 2458349
>>458334
Спасибо, конечно, не немного мимо. Заставлять каждого, кто попытается собрать мое говнишко, прописывать переменные, так себе идея.

Я думал msbuild умеет как-нибудь через api винды дергать по аналогии с шарповым Environment.SpecialFolder

>>458338
Тебя зумеры избили или в голове насрано?
593 2458353
>>458349
Бля, msbuild же может выполнять шарповый код в пропертях, я даун...
594 2458383
>>458349

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


Ох и ебланище малолетнее. Изучи матчасть.
>>458329

> дефолтную директорию ОС типа Документов или AppData


>>458349

> прописывать


> дефолтную


> Тебя зумеры избили или в голове насрано?


У тебя в голове пусто, порридж.
595 2458385
>>458383
Да не трясись ты, джавист. Можешь попробовать подучить язык и перекатиться к нам, вдруг проблема с нервами решится.
596 2458388
>>458385
Под кроватью джависта поищи. Или в $(%APP_DATA%) например, как вариант.
597 2458391
>>458388
А чё злой тогда такой? Опять Кабаныч наорал?
598 2458427
Почему в
byte jej = 7;
происходит неявное преобразование.
и даже в
byte jej = 7 + 3;
оно произойдет, когда оператор + вернет инт.
но здесь
byte yey = jej + 3;
все сломается? почему jej просто неявно не перейдет в int, оператор + не отдаст результат в int и как было до этого и этот результат также неявно не перейдет в byte, как и 7, и 7+3 до этого?
599 2458466
>>458427
Потому что компилятор видит, что в первых двух случаях значение влезает в byte. (Константные выражения он на этапе компиляции сворачивает). А вот когда появляется переменная, то гарантий что влезет уже нет. Так что кастуй явно, чтобы ты так сказать, расписался, что понимаешь что запихиваешь значения более широкого типа в переменную менее широкого и готов к тому, что значение может урезаться.
изображение.png13 Кб, 448x259
600 2458508
Почему visual studio не может открыть консоль?
Создаю проект - запускаю и вылазит эта ошибка.
Если вручную запускать .ехе - работает
1662654422049.png132 Кб, 480x360
601 2458532
>>458508

> Почему

602 2458546
>>458466
Спасибо большое
603 2458623
>>458508
Попробуй переустанови Visual Studio.
604 2458685
Зачем микрософт упорно поддерживает Visual Basic? Что за бред, кто на нём пишет вообще? Кто реально будет ставить студию, и создавать проекты на VB? Я понимаю VBA, который в excel встроен и который для офисных планктонин до сих пор безальтернативен (с C# и дот.нет не имеет никакой связи, кроме возможности через COM вызывать код дон.нета). Но его почему-то спустили в унитаз и не обновляли лет этак 20. А вот VB.NET, который по факту абсолютно никому не нужен (если челик даун, он возьмёт петухон, если челик виндолюб и настроен решительно, он возьмёт решетку), майки поддерживают и развивают. Я понимаю F# - песочница и обкатка новых фич. Но VB.NET? Зачем? Для кого? Какого это вообще работать в микрософт, получать жирную котлету и закрывать тасочки по разработке языка, но котором не пишет никто?
605 2458689
>>458685

>если челик даун, он возьмёт петухон


шта?
image.png19 Кб, 455x180
606 2458702
607 2458703
>>458685

>Зачем микрософт упорно поддерживает Visual Basic?


1) Обратная совместимость.
2) Тебе не похуй?
608 2458727
>>458685
Они его даже не развивают уже, а просто не выкидывают, чтобы легаси у других организаций не сломалось. Легаси начали писать ещё у нулевых, смигрировав его с более старых проектов на не-дотнетовском бейсике. Ну и есть некоторое количество дебилов-старпёров, которые знали старый бейсик и начали писать новые проекты не на шарпе, а на vb.net, якобы сложно переучиваться, хотя хуй знает, как вообще можно не осилить фигурные скобочки.

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


Его пишут те же разрабы, что пишут шарп, просто парсер языка другой, его и дорабатывать не нужно почти. А кишки всё те же, дотнетовские.
609 2458799
Как перестать читать по три книги Шилда и Троелсена в день, и начать писать йоба пет проекты от которых у ейчаров волосы стоять дыбом будут?

>Преимущество перед такими же вкатунами даст парочка интересных пет-проектов где вы делаете всё максимально правильно и точно следуя архитектуре.


Например каких?
610 2458848
>>458799
На самом деле эчарам похуй на твои проекты в 99% случаев.
Открываешь вакансию на вкатуна в пятницу, в понедельник там 400 откликов. Если у каждого гитхаб 5 минут смотреть, это займет 33 часа.
611 2458899
Ruby>C#
612 2458913
>>458799
>>458848
Да никакие HR не будут смотреть ваши гитхабы. Хрюши смотрят на резюме и за 30 секунд определяют. До гитхба доходит только если ваше резюме посмотрели и не выкинули
613 2458919
>>458913
Так я в курсе. Мой гитхаб вообще не смотрели, даже тестовое попросили зипкой скинуть.
Мой знакомый месяц ловил отказ за отказом, потом переработал резюме на покрасивше, поставил фотку красивую, после этого пригласили на 3 собеса, где он получил по офферу.
614 2458935
>>458919

>Мой знакомый месяц ловил отказ за отказом, потом переработал резюме на покрасивше, поставил фотку красивую


Всё так, к сожалению вычислением нормальных кадидатов занимается хрюша которая ничего не понимает в айти и ей только остается ориентироваться на ключевые слова в резюме и фоточку
615 2459055
>>458899

>Ruby>C#


это даже не скомпилируется.
616 2459057
>>458899

>Ruby>C#


ой
puts 'Ruby' > 'c#'

>false

617 2459118
>>458935

>хрюша которая ничего не понимает в айти


Ну да, надейся.
618 2459274
>>459057

> puts


Какие пидарские кейворды в этом рубе.
619 2459276
>>459274
будто Console.WriteLine лучше.
620 2459300
>>459276
Конечно лучше, читаешь и понимаешь, что это консоле и что оно врайтит лайне. А когда читаешь путс, предполагаешь ле пута муэрте.
621 2459304
>>459300
когда читаешь
puts
print
echo
то понимаешь что выпхлоп пойдет в stdout

Console.WriteLine тоже выводит в stdout, что не консоль как бы. Консоль - только один из многих кто может читать stdout
622 2459354
Объясните плиз почему
sbyte num = (sbyte)-31;
Console.WriteLine("Convert: " + Convert.ToString(num, 2) + "\n");

Выведет
1111111111100001, а не
11100001

В мсдн ведь byte и sbyte 8-разрядное целое число
623 2459358
>>459304
Зумеры не знают таких тонкостей. Чорное текстовое - это консолечка, которой пердолятся красноглазые. Этого достаточно, чтобы вкатиться на галеру джуном.
624 2459594
А Enum нельзя расширять? Есть какое-то перечисление, и я хочу на его основе сделать наследника.
625 2459677
>>459594
Наследование запрещено. Ищи другие способы
626 2459706
>>459594
Юзай словари.
628 2459722
>>459706
>>459713
Дело в том, что уже существует перечисление. Это TypeCode, но там есть только базовые типы, а я хотел добавить своё.
630 2459744
>>459722

>, а я хотел добавить своё.


именно поэтому и запрещено наследование чтобы не было вот таких ситуаций
zzz.png91 Кб, 981x936
631 2459747
Подскажите, в чем проблема с Докером. На docker hub`e лежит image. В нём aspnet core api с DbContext`oм у которого в конструкторе Database.EnsureCreated()

Проблема, что на сервере (консоль 1) бд походу не создается и падает с "No such table", а на моей машине (консоль 2) все запускается идеально и создается бд.

Команды запуска идентичны, при локальном запуске тоже всё работает.
Безымянный.png22 Кб, 221x602
632 2460444
Как это можно более красиво переписать?
633 2460499
Анонсы, какие сейчас актуальные книги по C# для новичков на англ. языке?
634 2460611
>>460499
1) ASP.Net Core in action
2) NET Microservices Architecture for Containerized NET Applications
635 2461144
>>460444
Я ХЗ, в зависимости от того, что конкретно тебе надо. Если надо выебнуться, сделай каждый стейт отдельным классом, с методами EnterState и ExitState, В которых будет делаться то, что на пикче. А ещё лучше сделать интерфейс и один класс-реализатор с методами-делегатами и сразу лямбдой при создании программировать эти действия.
636 2461200
Почему BufferedStream когда передвигаешь курсор назад перечитывает базовый поток? Как это пофиксить?
637 2461220
https://habr.com/ru/post/687412/ чет как-то не солидно набросили.
638 2461230
>>461220
По первому доёбу: почему бы не юзать вместо енума класс? Понятное дело, всахара не будет, ты будешь видеть свой енум как класс/структ, но все фишки типа методов и реализации интерфейса будут:

> public static class TokenType {


> public const int IDENTIFIER = 0;


> public const int NUMBER = 1;


> public const int ASSIGN = 2;


>}


Читаем дальше.
639 2461235
>>461220
Дочитал до экземпляров интерфейсов и дропнул. Нельзя так вольно трактовать ООП. У интерфейса не может быть экземпляров.
640 2461278
>>461220
ну функциональные интерфейсы и анонимные реализации вещи годные.
просто ведь шарп вырос из жава клона, то как бы много не накопаешь фич
а вот если котлин пригласить в тему, то набросить можно много

>>461235

>У интерфейса не может быть экземпляров.


Их и нет.
это такой же класс, который требует реализацию, просто описывается на месте и потому без имени.

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

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

Удобная штука так то
641 2461281
>>461230

>всахара не будет


поэтому и не юзать

енумы нужны чтобы в параметрах не писать int, а нормальные имена
и твой TokenType это возврат к тому с чего начали.

енумы в шарпе хреновые.
642 2461315
Есть сложный объект <id, id1, id2...> и массив
Как найти через linq объект с id1, в котором все значения из массива есть в id2, то есть
id| id1 | id2
1 | 1 | 1
2 | 1 | 2
3 | 1 | 3
4 | 2 | 4
5 | 2 | 1
и массив {1, 2, 3}

Надо вернуть id1 = 1. Или надо свою реализацию писать?
i
643 2461324
>>461315
Intersect
644 2461430
>>461220
Последняя хуйня была бы оооооооооооооооооч полезна. Особенно в случае LINQ, потому что это буквально бесит, то ты не можешь нормально интерфейс оттуда вернуть, особенно если LINQ у тебя в другом методе.
>>461230
Вот я делал парсер простенький для нужд.
Нужны условия в духе: если до меня был такой-то знак, а после - такой-то я должен создать такую-то лексему.
Ты просто не представляешь какая это боль в контексте шарпов.
У тебя будет что-то в духе:

public class Token {
public readonly int? Line;
public readonly int? Col;
public readonly string Symbol;

public Token(string symbol) : this(symbol, null, null){}
public Token(string symbol, int? line, int? col) => (Symbol, Line, Col) = (symbol, line, col);

public static readonly Token Space = new (" ");
public static readonly Token SingleQuotes = new ("'");
public static readonly Token DoubleQuotes = new ("\"");
public static readonly Token Slash = new ("/");
public static readonly Token BackSlash = new ("\\");
public static readonly Token Space = new (" ");
public static readonly Token Comma = new (",");
public static readonly Token OpenCurly= new ("{");
public static readonly Token CloseCurly = new("}");
public static readonly Token OpenRound= new ("(");
public static readonly Token CloseRound= new ("(");
public static readonly Token OpenSquare = new("[");
public static readonly Token CloseSquare = new("]");
public static readonly Token BEGIN = new("BEGIN");
public static readonly Token END = new("END");
public static readonly Token ASSIGN = new("::=");
public static readonly Token EOL = new("\n");
}

И это уже пиздец. А тут еще логику нужно вопхнуть и это будет пиздецки больно. А еще ходить туда-сюда, в поисках нужного. И много еще чего веселого.
Я в итоге когда это делал - забил на ООП и попытки делать "красиво" и хуйнул как деды хуярили свичем и за один проход, ибо нехуй.
644 2461430
>>461220
Последняя хуйня была бы оооооооооооооооооч полезна. Особенно в случае LINQ, потому что это буквально бесит, то ты не можешь нормально интерфейс оттуда вернуть, особенно если LINQ у тебя в другом методе.
>>461230
Вот я делал парсер простенький для нужд.
Нужны условия в духе: если до меня был такой-то знак, а после - такой-то я должен создать такую-то лексему.
Ты просто не представляешь какая это боль в контексте шарпов.
У тебя будет что-то в духе:

public class Token {
public readonly int? Line;
public readonly int? Col;
public readonly string Symbol;

public Token(string symbol) : this(symbol, null, null){}
public Token(string symbol, int? line, int? col) => (Symbol, Line, Col) = (symbol, line, col);

public static readonly Token Space = new (" ");
public static readonly Token SingleQuotes = new ("'");
public static readonly Token DoubleQuotes = new ("\"");
public static readonly Token Slash = new ("/");
public static readonly Token BackSlash = new ("\\");
public static readonly Token Space = new (" ");
public static readonly Token Comma = new (",");
public static readonly Token OpenCurly= new ("{");
public static readonly Token CloseCurly = new("}");
public static readonly Token OpenRound= new ("(");
public static readonly Token CloseRound= new ("(");
public static readonly Token OpenSquare = new("[");
public static readonly Token CloseSquare = new("]");
public static readonly Token BEGIN = new("BEGIN");
public static readonly Token END = new("END");
public static readonly Token ASSIGN = new("::=");
public static readonly Token EOL = new("\n");
}

И это уже пиздец. А тут еще логику нужно вопхнуть и это будет пиздецки больно. А еще ходить туда-сюда, в поисках нужного. И много еще чего веселого.
Я в итоге когда это делал - забил на ООП и попытки делать "красиво" и хуйнул как деды хуярили свичем и за один проход, ибо нехуй.
645 2461581
Как мягко намекнуть джуну, что 0 в индексе удобства поддержки в коде, который пишется руками - это нихуя не норма?
Просто я чет был занят своими делами, а остальным - так-то похуй. Но сегодня разгреб свои, решил посмотреть что там у других и, блядь. 0, сук. Я даже от автосгенерированного кода такой хуйни не видел. Посмотрел - там пиздец, метод 2,5к строк, который хуй пойми как работает. Работает при этом до пиздеца медленно. Чел - просто по фану решил создавать словари, пихать в них свойства, которые рефлексей достает, потом в цикле проходится по словорям и смотрит с каким свойтсом другого обхъекта имена совпадают, потом... Ну вы поняли, там пиздец, который во первых - нечитаем, во вторых - нахуй не нужен, в третьих - еще и жутко медленный со сложностью O^4. Я просто чет охуел с такой жизни. Не хочется показываться токсом, но я уже раз 5 в других местах ему подсказывал, по сути - писал половину кода, ему только дополнить свою часть нужно было, но когда чел береться сам - вот такая хуета выходит. Что делать-то? Опять же - не хочется быть токсом, но кроме матерных слов - других нет.
646 2461593
>>461581
подзатыльником
647 2461642
В студии после выходя из спящего режима отваливается горизонтальный скролл, как фиксить?
648 2461656
>>461581
Начни с себя - читать твою шизофазию хуже чем код самого тупого джуна.
649 2461671
Глупый вопрос возможно, но зачем добавляют два метод - синхронный и асинхронный, если второй без await будет выполнятся как синхронный?
650 2461722
Пытаюсь проходить уже третий курс по ASP и везде одна и та же проблема: показывают, как сделать, но не объясняют, почему так и как это все целиком работает. То есть я даже не могу понять порядок выполнения кода от начала до выдачи жсона/хтмл. Где можно добыть эти знания и болеее углубленное понимание разных тем? Например что за наследование от DbContext и конструктора в этом классе от base с options. Или принцип работы мидлвара и всякие конфигурации. Есть книжка Фримана, но она аж на 1,5к страниц. Я планировал уже после нг работу искать, а с ней зависну на полгода минимум. Плюс надо еще учить базы данных, фронт, гит и прочие мелочи. И пет хуярить.
651 2461748
>>461642
У меня он без аддона вообще не работал
652 2461784
>>461722
ASP. NET Core in Action (2018)
Автор: Andrew Lock
Количество страниц: 712
image.png30 Кб, 579x371
653 2461799
Долбоёб итт.

Я хочу, чтобы ивент Changed передавал что-то со значениями до изменения.

Если Action<int, string>, то вне класса не совсем непонятно, что это такое, и нет ссылки на сам объект. Последнее можно решить через Action<Yoba, int, string>, но мне кажется так даже хуже.

Запилить YobaChangeEventArgs : EventArgs со свойствами типа OldNumber и OldText, и сделать ивент через EventHandler<YobaChangeEventArgs>? Или лучше свой собственный делегат с параметрами (Yoba sender, YobaChangeEventArgs e)?

Или есть ещё какие-то варианты?
654 2461807
>>461745 (Del)
это правило для публичных контрактов.
655 2461827
>>461799

>Или есть ещё какие-то варианты



Принять, что event стандартны, но убоги и перейти на свою реализацию подписок с lifetime-ами
656 2461848
>>461581

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


Вот это предложение что значит?

Не удивительно, что он ничего не понял, лол
657 2461896
Есть поток сообщений, которые парсятся, валидируются, а потом отправляются в дальнейшую обработку. Можно ли сделать так, чтобы они парсились и валидирлвались в отдельных тасках в несколько потоков, но при этом отправлялись в дальнейшую обработку в том же порядке? Есть ли в этом смысл вообще? Какие инструменты можно использовать для такого дела?
658 2461907
>>461896
Мне кажется, тебе нужно копать в сторону System.Threading.Tasks.Dataflow
660 2461915
Посоны, возник вопрос. А в России можно найти какую-то супердешевую part-time работу для хорошего разработчика на дотнете. Чтобы работать час в неделю условно и получать за это тысяч 30-40 рублей? Работать строго удалённо, из-за рубежа (и прописать это в ТД для налоговой).

Смысл в том, чтобы эти небольшие деньги кидать на ипотеку оставшейся в РФ квартиры.

Или лучше искать зарубежных заказчиков на большие суммы и переводить в РФ.
661 2461940
>>461827
Долбоёб, причем тут event если автор фреймворка реализовал свои события не так как тебе хочется?
662 2461943
>>461915
Ебатьдебил, ты откуда такой вылез? Теперь в РФ 30-40к это только за полный рабочий день.
663 2461952
>>461915
Звони в банк и договаривайся. Нас-то ты нахуя спрашиваешь?
664 2461953
>>461943

>Ебатьдебил, ты откуда такой вылез? Теперь в РФ 30-40к это только за полный рабочий день.


Ты ебобо? Полный рабочий день как минимум 200к.
665 2461956
>>461953
C точки зрения малолетнего долбоёба - безусловно.
666 2461961
>>461956

>C точки зрения малолетнего долбоёба - безусловно.


Мой российский доход за полный рабочий день - 230К чистыми.
Кто из нас с тобой - малолетний долбоёб?
667 2461963
>>461961
А я ебал твою мамашу шлюху?
Кто из нас с тобой - малолетний долбоёб?
668 2461991
>>461953
Я джун, получаю сотку за полный рабочий день.
669 2462004
>>461991
Я 180к чистыми, практикант.
670 2462015
Смотрите, этот работает в госпараше на 4 дотнете за 40к и у него горит жопа
671 2462016
>>461940
сам долбоеб, раз уж начал

какого еще фреймворка

у него типичный вопрос вида - я пилю свое событие, нужно ли мне обязательно делать его EventHandler<EventArgs>
(вдруг у меня 10 событий и КАЖДОМУ сделай класс аргументов "патаму шта...марамушта")

или тупо можно Action<T> благо они появились в шарпе и "нахера мне вся эта портянка с EventHandler<EventArgs>"
672 2462017
>>461963

>Кто из нас с тобой - малолетний долбоёб?


Ты. Потому что ты обидчивый и завистливый ребёнок.
673 2462078
>>462017
Лол, нищенка думает что его копейкам кто-то завидует.
Понимаю, твоя сифозная мамаша устроила тебе трудное дество, но держи его при себе, никто кроме твоей блядской семейки в этом не виноват. :)
674 2462084
>>462016
Ебанашка, ты передел в лужу якобы механизм языка event убог, хотя по факту убог только твоей мелкий мозг.
Cобытие вообще не проблема сделать как угодно и запилить свои аргументы вообще не проблема, проблема бывает только тогда когда автор фреймворка не предусмотрел а тебе это нужно позарез, такое в винформсах иногда встречается например.
675 2462104
>>462084

>якобы механизм языка event убог


Дебилушка, все именно так

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

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

Про события и многопоточность там вообще нет нормального решения - есть только "нуу вроде бы это получше других будет"
676 2462116
>>461784
Нашел версию 2021 года, но там пятый дотнет, который с шестым вообще не клеится, все нахуй поменяли. Ставить пятый или искать что-то другое? К моменту моего устройства многие уже скорее всего будут сидеть на 6 версии, ибо лтс.
677 2462118
>>461848

>Вот это предложение что значит?


Ты студию открывать пробовал, няша?
Это конечно не 100% критерий, но 0 тут - это уже страшновато смотрится, я такого никогда не видел от кода людьми написанного, худшее что я от людей видел до этого джуна - 40.
>>461656
Я пришел с работы в 11 вечера. В конце дня как раз кодом джуна занялся. Писал на эмоциях.
>>461593
Я же не хочу быть токсичным. Хочу как-то мягко намекнуть, что код в духе второго прикриплейд НЕ ОЧЕНЬ. И когда такой метод 2,5к строк - разобраться в нем СЛОЖНОВАТО.
678 2462122
>>462118
А че почитать чтобы писать поддерживаемый код?
679 2462124
>>462116
Олсо, там опять mvc и razor pages, которые никто не юзает.
680 2462136
>>462124
У нас весь фронт на MVC и Razor pages но у нас фронт только для админов
681 2462148
>>462118
признавайся. ты сам написал код со второго пика чтобы нас потроллить. Потому что не может программист в здравом уме такое делать.
682 2462151
>>462148
Я воспроизвел. Код с работы, внезапно, на работе, и показывать его в интернетах - незя. Под страхом выебут.
И да. Я в душе не ебу зачем чел это сделал. Я долго пытался вникнуть. Так и не понял. Завтра спрошу.
683 2462159
>>462118

> И когда такой метод 2,5к строк - разобраться в нем СЛОЖНОВАТО.


Хуя, у меня в дипломе столько строк, а тут один метод.
684 2462161
>>462159

>Хуя, у меня в дипломе столько строк


Калькулятор писал?
685 2462164
>>462136
Ну вот разве что в админке, да. А в основном нужно уметь грамотно делать апи.
686 2462199
>>462161
Нет, интернет магазин
687 2462209
>>462015
Не пизди, я в госпараше, старший помощник младшего соискателя на джуна, 265К в наносекунду.
688 2462229
>>462078

>Лол, нищенка думает что его копейкам кто-то завидует.


>Понимаю, твоя сифозная мамаша устроила тебе трудное дество, но держи его при себе, никто кроме твоей блядской семейки в этом не виноват. :)


Какой-то токсичный инцел порвался. Тут у вас такое часто?

Мимокрок
689 2462234
>>462199
Я если что - шутил. Воть. Ну, типа что в ООП и жава-подобных языках - принято же нахуячить миллион абстракций, фабрик и т.д. Как же я люблю свои шуточки объяснять...
690 2462239
>>462229
Да вроде не часто. Ещё иногда джависты набегают.
691 2462243
>>462229
Мало кто остаётся инцелом когда твоя мамаша на гастролях :)
692 2462353
Написал я приложение для человека корочи.
Запускает он его на маке а там какую то ебанину пишет в консоли. Даже разбирается не стал что за хуета.
Установил он виртмашину корочи.
На виртуальной машине не работает var context = await httpListener.GetContextAsync();
И это блять кроссплатформенность?
693 2462358
>>462353
как будто под виндой проблем нет.
Создаем httpListener, биндим его на ip машины на кастомный порт и получаем "идинах" при попытке запустить его без прав админа (решается добавлением правил в брэндмауер)
694 2462362
>>462353

>для человека


>Запускает он его на маке


Человек не стал бы запускать хоть что-то на маке.
695 2462365
>>462362
потому что...???
696 2462368
>>462116

>, все нахуй поменяли. Ставить пятый или искать что-то другое? К моменту моего устройства многие уже скорее всего будут сидеть на 6 версии


Я х.з. в чем проблема. Я вообще особо не заметил перехода с 3.1 на 6.
697 2462369
>>462362
>>462358
Я этим вопросом не интересовался и верил только на слова >Совместима с такими операционными системами как Windows, Linux и macOS. Была выпущена компанией Microsoft.
А на деле залупа выходит.
Есть ли вообще гарантия что приложение заработает на win10 первой версии и win10 с последними обновлениями?
698 2462370
>>462369
это все пустые слова.
запускаю и на убунту и на маке. Проблемы только с самой авалонией, но что поделать - оно сделано энтузиастами. Даже мелкие ниасилили поддерживать столько сколько они.

Ну а если дело уходит в натив, то причем тут шарп
699 2462372
>>462370
У меня консольное net 6 приложение было.
700 2462379
>>462372
Без текста ошибки это пустой разговор
Про то что нельзя так просто открывать порты даже на винде
я уже сказал
701 2462383
>>462369

>А на деле залупа выходит.


Ты так говоришь будто бы с любым другим приложением/языком/фреймворком нет залупы при попытках разработки/сборки/запуска на разных платформах.
image.png615 Кб, 965x581
702 2462385
>>462379
Вот что это может значить?
703 2462386
>>462383
С джава такая же хуйня?
Просто миокрокодилы заходят в тред и постоянно пиздят что кроссплатформенности нет, их постоянно шлют нахуй и говорят что есть.
Вот я подумал что это пидоры просто завидуют вот и пиздят всякую хуйню.
А как столкнулся дак чет начал задумываться мб они и правы.
704 2462425
>>462386
везде бывает херня
особенно если запускать на такой мерзкой оси как макось
705 2462448
>>462243

>Мало кто остаётся инцелом когда твоя мамаша на гастролях :)


Ты главное не волнуйся так сильно, Скуф, в твоём возрасте это вредно. А то не доживёшь до аванса в 20К.
706 2462476
>>462448
Инфа от твоей мамаши заразившей сифилисом половину казанского вокзала? Такой себе источник информации.
707 2462508
Сап, сидельцы
Какой сейчас положняк между систем.текст.жиссон и ньютонсофт.жиссон? Что лучше и почему? Для аппа на коре 3.1 Вроде как общепринятым стандартом является ньютон, но чому?
708 2462511
>>462476

>Инфа от твоей мамаши заразившей сифилисом половину казанского вокзала? Такой себе источник информации.


Ты зря разнервничался так.
У меня российский проект на 230 тысяч российских и американский заказчик на 3К$. Это в сумме под 7К$. Что в принципе уже может позволить комфортно жить и в Западной Европе, например. Когда через год продам трёхкомнатную квартиру в Москве, чтобы не платить налог, буду перебираться как минимум в Португалию.

У тебя зарплата примерно 600-700$ по нынешнему курсу (правда ты получаешь в фантиках, на которые можешь купить всё меньше и меньше товаров с учётом отсутствия импорта и инфляции в 20%; если валютное регулирование отпустят, твой доход упадёт по 150-200$).
Ради этих денег ты должен работать 5/2 8 часов, появляясь в офисе ровно в 9 утра. Твоё резюме не котируется на линкеде и даже на hh. За годы твоего стажа ты бы мог стать хорошим специалистом, но остался бюджетной макакой.

Вот по этому ты и злишься. А я не злюсь, мне тебя жалко.
709 2462528
Господа решёткобояре, хочу писать пет на asp.net и всвязи с этим у меня вопрос: Есть ли разница писать под Виндухом или под Линухом? Где разработка протекает менее ухабисто?
710 2462546
>>462528
Где удобнее там и пиши. Под Винду есть студия и райдер, под прошивку для роутера есть только райдер.
711 2462548
>>462511

>через год продам трёхкомнатную квартиру в Москве


Не продашь, т.к. твоей маме негде будет принимать клиентов кавказской национальности.
712 2462559
>>462548

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


Почему ты проецируешь? Ты не любишь СВОЮ маму?
713 2462561
>>462559
Почему твой папа газнюх? Он любит нюхать газ?
714 2462586

>Не стоит ожидать, что Microsoft когда-либо будет использовать MAUI внутри компании. Я даже готов поспорить, что они никогда не создадут серьезный продукт на Blazor. Выбор технологического стека, особенно фронтенда, делается не так, как в Dogfooding. Насколько я знаю, это полностью зависит от команды разработчиков, и, как и все в этой индустрии, большинство разработчиков больше знакомы с JS/TS, чем с чем-либо еще. Это не заговор и не алая буква на MAUI/Xamarin, это просто та же история о том, что JS/TS съедает все.


>В MSFT я наблюдал, как они взяли внутренний инструмент ML, который изначально был создан на C# для windows, полностью переписали с электронным фронт-эндом, чтобы сделать его кросс-платформенным. Я так и не увидел его релиза, который в итоге работал бы без тонны сбоев, но это не важно. Когда я спросил, почему команда не создала фронт-энд на Xamarin поверх существующей базы кода, они просто не имели понятия, о чем я говорю.


>Реальность такова, что если вы не докажете вышестоящему руководству, что расширение внутреннего использования или дальнейшее развитие фреймворка (созданного MSFT или иным образом) каким-то образом принесет больше расходов на Azure (это не так), у них нет стимула отдавать предпочтение этому стеку перед любым другим. И без реальных усилий по продвижению на рынок и продвижению этих фронтенд-фреймворков на фоне доминирования JS/TS, они будут продолжаться так же, как они продолжались годами - просто еще одна абстракция пользовательского интерфейса, увядающая на лозе, поддерживаемая все более скелетными командами компаний, которые исторически использовали C#. И как бы унизительно это ни было для тех из нас, кто потратил значительную часть своей карьеры на веру в них, в краткосрочной перспективе это имеет смысл для бизнеса. Я, честно говоря, не уверен, имеет ли это смысл в долгосрочной перспективе, хотя, как ни больно, вероятно, имеет, но это выходит за рамки данной темы.


>Но если ваш случай использования соответствует идеальному (непотребительские LOB-приложения в существующем магазине C#, имо), сантехника для MAUI существует уже давно и, вероятно, будет в порядке. Если вам нужно, чтобы MSFT использовала его прежде, чем вы сможете, вам следует двигаться дальше.

714 2462586

>Не стоит ожидать, что Microsoft когда-либо будет использовать MAUI внутри компании. Я даже готов поспорить, что они никогда не создадут серьезный продукт на Blazor. Выбор технологического стека, особенно фронтенда, делается не так, как в Dogfooding. Насколько я знаю, это полностью зависит от команды разработчиков, и, как и все в этой индустрии, большинство разработчиков больше знакомы с JS/TS, чем с чем-либо еще. Это не заговор и не алая буква на MAUI/Xamarin, это просто та же история о том, что JS/TS съедает все.


>В MSFT я наблюдал, как они взяли внутренний инструмент ML, который изначально был создан на C# для windows, полностью переписали с электронным фронт-эндом, чтобы сделать его кросс-платформенным. Я так и не увидел его релиза, который в итоге работал бы без тонны сбоев, но это не важно. Когда я спросил, почему команда не создала фронт-энд на Xamarin поверх существующей базы кода, они просто не имели понятия, о чем я говорю.


>Реальность такова, что если вы не докажете вышестоящему руководству, что расширение внутреннего использования или дальнейшее развитие фреймворка (созданного MSFT или иным образом) каким-то образом принесет больше расходов на Azure (это не так), у них нет стимула отдавать предпочтение этому стеку перед любым другим. И без реальных усилий по продвижению на рынок и продвижению этих фронтенд-фреймворков на фоне доминирования JS/TS, они будут продолжаться так же, как они продолжались годами - просто еще одна абстракция пользовательского интерфейса, увядающая на лозе, поддерживаемая все более скелетными командами компаний, которые исторически использовали C#. И как бы унизительно это ни было для тех из нас, кто потратил значительную часть своей карьеры на веру в них, в краткосрочной перспективе это имеет смысл для бизнеса. Я, честно говоря, не уверен, имеет ли это смысл в долгосрочной перспективе, хотя, как ни больно, вероятно, имеет, но это выходит за рамки данной темы.


>Но если ваш случай использования соответствует идеальному (непотребительские LOB-приложения в существующем магазине C#, имо), сантехника для MAUI существует уже давно и, вероятно, будет в порядке. Если вам нужно, чтобы MSFT использовала его прежде, чем вы сможете, вам следует двигаться дальше.

715 2462589
>>462586
Пипец, а я хотел вкатиться в МАУИ
716 2462592
>>462589
Говоришь так, словно там есть во что вкатываться. Xaml он и в африке xaml
717 2462710
>>462592
Всё равно много конкретики которую надо знать, какая-никакая кривая обучения будет.

Хотел проект на него перевести, единственное что сдерживало это отсутствие датагрида.
2022-09-1413-43-08.png10 Кб, 572x164
718 2462714
А как сделать так, чтобы в диспетчере задач процесс одного приложения был под катом другого процесса? Вот как на прикриле сделано?

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

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

Я пытался установить owner окну и все норм, кроме отображения в диспетчере задач.
Capture.JPG18 Кб, 877x114
719 2462914
шарпач, посоветуй как правильнее определить наличие загруженного длл.
сейчас я делаю пикрелейтед(сравниваю версию длл) и это вроде работает, но проблема в том что есть пачка длл с одинаковыми .Name
как их различать?
можно ли попробовать через Type.GetType? если, допустим, есть определенный Type, то значит длл точно есть?
720 2462948
>>462710
ну как минимум неудобно, что для компиляции под макось нужна сама макось. Что разительно отличается от подхода с авалонией
721 2463001
Wpf, uwp, win ui3, maui, сука блять, что это за зоопарк? Почему майки не могут придти к единому стандарту?
722 2463003
Как покрасивше сократить этот код:

> (s, e) => { if (s is Button b) if (b.Parent is MyForm f) f.Close(ModalResult.OK); };

723 2463005
>>463001

> Почему майки не могут придти к единому стандарту?


Давай сделаем наш уи-тулкит, который объединит их все!

...спустя полгода:

> Wpf, uwp, win ui3, maui, НашОхуетьКакойТулкит, сука блять, что это за зоопарк?

724 2463006
>>463005
Ну просто реально цирк же. Особенно uwp говно без задач, которое оказалось никому не нужно. Почему нельзя было просто обновить wpf?
725 2463009
>>463003
Замени if на &&, и тебе должна выскочит подсказка о новом синтаксисе, забыл название, увы.
726 2463010
>>463003
Зачем там два ифа, если у тебя даже нет разветвления?
727 2463011
>>462948
Макось не нужна, лучше бы линкс запилили. Пока он на уровне любительского проекта с туманными перспективами.
728 2463013
>>463001
wpf только десктоп, uwp не взлетел из-за уёбищности платформы, maui это мобилки продолжение xamarin.
729 2463017
>>462914
Я думал, что надо называть по разному и простарнства имен делать по возможности разынми, чтобы не было конфликтов.
730 2463018
>>462104
Если ты долбоёб подписался лямбдой и спрашиваешь почему тебе не дают отписаться АНОНИМНЫМ методом (если не понял, он по определеню одноразовый), медицина тут бессильна...

Токент тебе тоже надо где-то хранить, так что если нужна отписка делай именной метод.
731 2463020
>>463010

> Зачем там два ифа


Чтобы второй иф увидел обьявленную первым ифом переменную.
>>463009
Так не работает.
732 2463021
>>463005

>...спустя полгода:


> Wpf, uwp, win ui3, maui, НашОхуетьКакойТулкит, сука блять, что это за зоопарк?



Потому что желание противоречит реальному положению дел.
Любой, кто пытался запилить "универсальную функцию" понимает о чем я пишу. Это просто не реально. Вся эта универсальность приводит к утяжелению и малой производительности.

Задумывают всё это "эффективные менеджеры", а исполнители практикой доказывают, что это в общем-то невозможно. Имеем что имеем.
733 2463022
>>463020
А что это за кнопка Б такая и где она находится?
734 2463023
>>463021

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


Кроме МВВМ, МВВМ - это исключение из правила. Она совсем чуть чуть снижает производительность, зато ты всегда можешь сменить фронт. Тебе нужно только новые вьюшки на новом фронтенде написать, а всё остальное у тебя уже есть. Начал на ВПФ, понадобился линукс - дописал вьюшки на авалонии, собрал, раздал красноглазым.
735 2463024
>>462714
Бамп вопросом
736 2463037
Тупой вопрос. Как так может быть, что я создаю семфаорслим, с конструктором (0,1). Релизю его ровно в одном месте один раз когда мне надо. И при обильном использовании потоков - получаю эксепшн, типа уже отжали больше максиамльного числа раз. Как это блин происходит? Я не понимаю. И типа на маленьком-то - не возникает жи. Типа ну да и да - все точно. А создаю 50к потоков - и вот, в рандомный момент времени - возникает.
Что эт за хрень-то? Поясните.
737 2463044
>>463018
дебилушка опять выходит на связь?

> почему тебе не дают отписаться АНОНИМНЫМ методом


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

>так что если нужна отписка делай именной метод


покажи мне мастер класс как с помощью ИМЕННОГО МЕТОДА делается отписка в обработчике события.
то есть подписываешься (обычно на локальный объект) и после первого получения события отписываешься. А мы посмотреть.

>Токент тебе тоже надо где-то хранить


Достоинства одного подхода - недостатки другого. Такова жизнь.
Единственное удобство делегатной отписки - можно не хранить ничего и вызвать потом из Dispose (правда это является и недостатком). Да и не не относится к локальным объектам подписки

Ну а неудобства перекрывают удобства.
Нужно постоянно писать код с оглядкой на "не забыть отписаться", ведь можно ("сделали 10 подписок - сделали 10 отписок", а потом "ой одну забыли".)
Даже вот WPF написали с оглядкой на weak events ибо не нашли нормального способа дать возможность кодеру нормально отписываться.
И все MVVM фреймворки основаны на weak events
чет как то решили они проблему отписок путем "не будем вообще использовать обычные event где нужно подписываться" )))

Польза токенов - ну их можно, ДА, куда то сложить и потом разом все диспознуть. Решение проблемы "сделали 10 подписок - сделали 10 отписок". Конечно и токен можно забыть сохранить для диспоза, но тут на сцену выходит lifetime - там не забудешь и токены собственно не нужны. Но даже токены лучше того что есть.

Про многопоток разумеется обсуждать не будем - там все плохо, но можно сказать, что "у меня формсы какой еще многопоток". так что только про подписки.
738 2463046
>>463018
блин очепятался во многих местах

>обычные event где нужно подписываться


читать как "обычные event где нужно отписываться"
739 2463092
object locker = new();

lock (balanceLock)
{
}
Зачем нужен locker ?
Пишут что

>При синхронизации доступа потоков к общему ресурсу блокируйте выделенный экземпляр объекта (например, private readonly object balanceLock = new object();) или другой экземпляр, который, скорее всего, не будет использоваться как объект блокировки другими частями кода.


1лок-1обжкт.
Но почему не сделать бы lock () так?
Что еще можно класть и делать с lock ()?
740 2463095
>>463003

>(s, e) => { if (s is Button b) if (b.Parent is MyForm f) f.Close(ModalResult.OK); };



(s, e) => ((s as Button)?.Parent as MyForm)?.Close(ModalResult.Ok)
В теории конечно
741 2463098
>>463092
конструкция lock это синтаксический сахар над монитором. Зачем нужен объект и что ещё можно делать можешь тут почитать https://docs.microsoft.com/ru-ru/dotnet/api/system.threading.monitor?view=net-6.0
742 2463108
>>463095
Спасиб, не сильно красивше, канешн, но хотя бы чуток короче.
743 2463172
>>462508

>но чому?


Теорема Эскобара + просто повезло закрепиться в умах кодеров.
744 2463176
>>463172
очевидно потому что "оно было раньше"
ньютон был до пришествия текст.жсона. перегружен фичами.
Кому нужна была скорость - было на выбор куча вариантов (некоторые из которых по скорость/потребление памяти дают пососать и текст.жсону)

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

так что щас текст.жсон он находится в середине крайностей "фичи" и "скорость/память"

та же ситуация и с sqlite
745 2463186
Ребят, как в линке в джоине двух списков/таблиц в select new {name = A.name ... етц} поставить условие. Мне надо сравнивать два числа и меньшее записывать в поле, но я чет не очень синтаксис понимаю..
746 2463202
>>463186
Нихуя не понятно.
Приведи пример данных и что в итоге нужно получить.
747 2463215
>>463202
class A{
int id
string name
int? money (нуллабл окда)
}

У мня есть два списка:
List<A> spisok1 и List<A> spisok 2

Я делаю
var leftOuterJoin =
from s1 in spisok1
join s2 in spisok2 on s1.Id equals s2.Id into temp
from s2in temp.DefaultIfEmpty()
select new
{
Id = s1.Id,
Name = s1.name,
Money = ???????
};

Так вот- в этом Money = ??????? я хочу получить меньшее из s1.Money и s2.Money. А идеально получить - меньшее, либо то которое не нулл, либо нулл если оба нулл
748 2463234
>>463215
Ничего умнее чем сделать метод который это все чекает, не придумал.
Мб помидоры придут подскажут че.
749 2463237
>>463215
Money = (s1.Money.HasValue, s2.Money.HasValue) switch {
(true, true) => Math.Min(s1.Money.Value, s2.Money.Value),
(true, false) => s1.Money,
(false, true) => s2.Money,
(false, false) => null
}
750 2463240
>>463237
Поставил бы лайк если бы смог.
751 2463250
>>463237
>>463234
Грац пацаны <3
Capture.JPG17 Кб, 560x255
752 2463259
>>463017
нее у человека который те дллки написал все в этом плане типтоп, это я макака сбоку.
вот такое вымучил.
используется только один раз за всю жизнь программы, если type найден его же и использую, если нет то логика другая будет. вроде бы работает.
за такое не бьют палками?
753 2463369
Почему петушарперы отрицают что руби лучше?
754 2463373
>>463369
Потому что мы заняты работой а ты сидишь срёшь на двачах
755 2463381
>>463369
С тем, что руби - говно, согласны и шарперы, и жабисты, и петухонщики, и жопаскриптеры.
756 2463389
Есть метод, у которого в качестве возвращаемого типа указан базовый класс, а сам метод может вернуть несколько разных сабклассов.
Как об этом узнать, не заглядывая в код метода? Можно это как-то задокументировать?
image.png40 Кб, 598x659
757 2463395
>>463390 (Del)
Не-не, что-то вроде пикрелейтейда. Если не смотреть в код Class.Check, то как узнать, что он вернул не CheckResult, а NegativeResult?
Понятно, что можно сделать .GetType(), можно через is и as, а как-то иначе? Задокументировать это как-то можно? Я смотрел xml документирование, но, если я правильно понял, <returns>description</returns> предлагает просто описать смысл возвращаемого и всё, тэгов для типов нет.
758 2463415
>>462589
Кроссплатформенного ГУИ на шарпе никогда не будет.
Нужен кроссплатформенный ГУИ - бери Qt, electron, awt/swing + flatlaf, compose multiplatform.

А вообще десктоп гуи сейчас очень мало кому нужен (а тем более кроссплатформенный). Если он вам нужен, то лучше подумать еще несколько раз, так как веб хуйню в разы проще запилить.
759 2463442
>>463415
Почему, технически вроде не сложно. Остальные фреймворки слишком маргинальные, нецелесообразно тратить ресурсы на их освоение если будет поддержка от гиганта вроде МС, я надеялся что так будет в случае МАУИ.

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


Что за привычка всё мерять потребностями быдла которому кроме инсты в телефончике ничего не надо?
760 2463443
>>463415

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


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

>>463369
сравнивать руби с шарпом нельзя - они вообще из разных миров.

Лично я когда то любил руби. НО задолбало писать как в блокноте - никогда не знаешь что в текущем классе у тебя есть. И высматривать глазами чужой код бесполезно - хер знает где и как расширен класс. Понятно, что если пишешь постоянно на руби, то проблемы нет, но если это не основной язык и просто не помнишь. Даже писал свой модуль, чтобы по бряку можно было видеть что через миксины напихали в объект.
В итоге свалил на питон - возможности магии приличны, но при этом сильный тайпхинтинг, да и генераторы мне ближе чем фиберы. Ну а количество готовых решений на все случаи жизни делает питон лидером в практичности. У руби же ниша - ROR

Ну а сейчас есть котлин, где тебе и статическая типизация (жаль что по жавовски конечно) и богатая поддержка возможностей лепить DSL
761 2463658
Кто нибудь в курсе про сертификаты разработчика? Использовал ини нахер нужно?
изображение.png87 Кб, 1275x295
762 2463704
Что-то я понять не могу, почему, когда я редактирую элемент из коллекции BestSellers, он у меня меняется и в репозитории _books?
763 2463712
>>463237
Всё збс, но вот здесь

> Math.Min(s1.Money.Value, s2.Money.Value)


выдаёт предупреждения, что значения могут быть нулль. Я умом-то понимаю, что конкретно в этом месте шаблона - не могут, но как это конпелятору обеснить?
764 2463718
>>463704
Впрочем разобрался, книга передается по ссылке. Честно говоря до сих пор не могу к этому привыкнуть. В крестах тех же всё явно обозначается.
765 2463723
>>463712
s1.Money!.Value
sage 766 2463733
>>463443
После руби жрать жабью инфраструктуру (даже через котлин), это как после торта есть недельный черствый хлеб.
А так из тебя сыпятся шаблонные мантры из ютуба, что ставит твое мнение не выше плинтуса. питон то еще костыльное говно
767 2463736
>>463723
Пасиб. Вот теперь заебись.
768 2463752
>>463733
ты чет попутал дядя
я руби заменил питоном.

А также дополнительно упомянул что "выражаться затейливо" и "плодить нативные DSL" могут и языки со стат типизацией - например котлин.

>питон то еще костыльное говно


ясно все с тобой. но тред не про питон и не про руби, поэтому раскрывать твое дурацкое заявление не попрошу
769 2463768
>>463723
Это типо "не нулл значит?"
770 2463896
>>463768
(null-forgiving) operator
771 2463921
>>445746 (OP)
Почему я все время слышу, какой шарп охуенный, быстрый, удобный, фичастый, но на нем ничего из сильно крупного не пишется?
Только сами майкрасофты и пихают свое поделие в какой-нибудь бинг. Остальным крупным игрокам похуй. Будут держать код на джаве, будут начинать новые проекты, будут делать высоконагруженные сервисы, писать инфраструктуру на го, на джаве, но не на шарпе.
Почему так? Или я не прав?
772 2463922
>>463921
Ты не прав.
773 2463925
>>463922

>пук


Ясно.
774 2463928
>>463925
Слит.
775 2463944
>>463921
Мелкомягкие тащемта просто долбоебы, разгадка проста
Раньше: зачем нужен сырой аналог жабы только под шиндовс, когда есть проверенный кроссплатформенный обратносовместимый инструмент?
Теперь: нахуй нам вообще задумываться об использовании мелкомягкого кала, когда есть ГОвно или проверенная жаба
Вот и все, вы успешно проебали рынок
776 2463947
>>463944
в ГОвно больше пиара нежели мощи. Всякую мелочь писать сойдет, но серьезное замахаешься.
777 2463979
>>463921
Крупные игроки не хотят зависеть от вендора. Почему С++ может быть в гугле, а шарп не будет там никогда. С++ имеет комитет и стандарт, ты не зависишь не от кого (свой компилятор налапатишь если надо). Так же, когда гугл высрет свой карбон, кроме гугла никто не будет его юзать (из крупных игроков). Потому что никто не хочет завязнуть на чужом продукте, особенно когда могут сделать сами свой.

В тоже время мягкие показывают, что они делают именно продукт. Например студия частично написана на шарпе, что как бы показывает - мы используем шарп во флагманском продукте и тем самым показывая какие-то гарантии. А вот если взять котлин, то мы видим что за 6 лет не один флагманский проект не был переписан на него и тут сразу ловишь себя на мысли, если они не рискуют, то почему я должен рисковать своим продуктом?
778 2463980
>>463921
Что касается джавы, то саны, перед тем как слохнупнуться, сделали жабу попенсорс и чем спасли бизнес, который в жабу вляпался. Поэтому до сих пор все идет по инерции, но сама жаба не развивается и протухает. Лишь благодаря мобильниками и натянутым на глобус конференциям ты еще не проводишь параллель между джавой и коболом. Забавно, котлин топит в мобильниках джаву, джава топит котлин за собой весь JVM
779 2463985
>>463944
Говно не вывозит многолетние проекты. Фанатики, конечно, могут писать на чем угодно и сколько угодно, но все что кроме круда в го вызывает анальный зуд (это просто какой-то перманентный бойлерплейт).

У жабы настолько протухшая тырпрайзная экосистема, которая вообще никак не оптимизированная, что надо быть немного странным чтобы стартовать на этом новые проекты. Собственном на этом го скорее всего и выстрелил, сойдет даже говно, лишь бы снова на жабе не писать сама жаба проста и быстра, но не слоенный, не оптимизированный тырпрайз
780 2464060
>>463921

>но на нем ничего из сильно крупного не пишется?


Что именно ты подразумеваешь под "сильно крупно"?
781 2464066
>>463921
стековерфлоу это шарп
антиплагиат - тоже шарп
782 2464155
Заходишь такой в шарпотред. Такс, чо тут новенького у вас?

> котлин


> котлин


> жаба


> го


Вы чо охуели блять? Создайте тред котлина и сидите там.
Что такое котлин? Котлин это

> function GoFuckYourSelf(HowFuck: TObject) : TFuckStyle;


> var


> TempFuck : TObject


> begin


> TempFuck := HowFuck;


> result := CreateFuckStyle(TempFuck);


> end;



Нравится?
783 2464173
>>464155
Нравится конечно . Как это может не понравиться?
Только это не котлин
784 2464176
>>464155

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

image.png22 Кб, 652x72
785 2464351
Почему в теста у меня выебывается эта часть?

В реальности если у него нет детей ничего не вылезает, а в тестах оно выскакивает с визгами что "nullable oobject must have a value"

ПОЧЕМУ??????
786 2464352
>>463985

>Говно не вывозит многолетние проекты


Понимаешь ли, затс джаст лайк, юр опинион, мэн. А крупные игроки просто берут и используют говно, в бэке, в многолетних проектах.
Кроме самих гуглов, говно используют те же майки, нетфликс, пэйпал, клаудфлейр, убер и т. д., а шарп - нет, кроме самих же создателей.
787 2464383
>>464352
Тебе и сказали что это круд микросервисы, которые переписать дешевле чем новую команду собрать.
Сегодня там микра на го, завтра на жопоскрипте. Тут как раз бизнесу и насрать, лишь бы гребцы были.

Шарп второй язык в вебе, как среди общего числа, так и среди миллионников, естественно его используют многие, кроме твоим манямирков, конечно.
788 2464409
Зачем на собесах ебут sql, когда в проекте всё пишут через linq?
789 2464452
>>464409
Linq будет транслироваться в sql, если мы, конечно, не о linq to objects говорим. Нужно уметь читать запросы, в которые он транслируется, понимать как они будут исполняться, как работает база и т.д. Как можно их оптимизировать. Частенько для части запросов приходится выкидывать нахер тот же EF, и ебашить запросы ручками (ну или Dapper'ом), иначе с производительностью все печально будет.
790 2464469
>>464383

>это круд микросервисы, которые переписать дешевле чем новую команду собрать


>Сегодня там микра на го, завтра на жопоскрипте


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

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


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

Щито поделать, никогда шарпа (за пределами мелкомягких) уже не будет в крупнейших передовых компаниях, лидерах в своей отрасли. Ява - есть, го - есть и его будет еще больше, шарп - нет.
Зато лавочка ашота на 900.000 месте написана на шарпе, это да, этого не отнять. Но не нетфликсы и клаудфлейры, увы и ах.
791 2464512
>>464469

>Шарп второй язык в вебе,


>как среди общего числа (количества),


>так и среди сайтов миллиоников (качества)


Но жопочтец продолжает писать

>Кококо кроме мягких негде используется

792 2464513
>>464469

>Шарп второй язык в вебе,


>как среди общего числа (количества),


>так и среди сайтов миллиоников (качества)


Но жопочтец продолжает писать

>Кококо кроме мягких негде используется

793 2464519
В чем фундаментальная разница между ReadOnly и Immutable?
794 2464565
>>464519
в том что ReadOnly не имеет методов для изменения, но не гарантирует, что кто-то другой не имеет у себя возможность менять объект.

То есть еслиу тебя IReadOnlyList, то нельзя думать, что список неизменен - у кого то этот же список может быть как IList и он его будет менять.

Immutable же гарантирует неизменность.
image.png32 Кб, 600x800
795 2464584
>>464383

>шарф2.png


Братан..

>2018


>ASP.NET - 13.2%


>Java - 2.3%



>2022


>ASP.NET - 7.6% 📉


>Java - 4.5% 📈

796 2464600
>>464512

>Шарп второй язык в вебе


Уж точно не в РФ, где всем рулит js и пыха/go.
797 2464602
>>464155

>Котлин это


Это не котлин, а паскаль.
798 2464604
>>463985

>Говно не вывозит многолетние проекты


Тащем-то на го я вижу кучу популярного опенсорса вроде докера, кубера, опеншифта, терраформа, консула, кокроача, которому уже немало лет.
На шарпе так нихуя опенсорсного и не написали, кстати, ну или написали, но оно умерло(.
799 2464607
>>464604
а ты задай себе вопрос - почему твой список не написали на жаве например? ладно шарп, он как бы ничто
жаву почему не взяли?
800 2464610
>>464602
А точно! Котлин - это паскаль без кавычек;
Исправляюсь:
>>464155

> > function GoFuckYourSelf(HowFuck: TObject) : TFuckStyle{


> > var


> > TempFuck : TObject



> > TempFuck := HowFuck


> > result := CreateFuckStyle(TempFuck)


> > }

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

>>463979

>котлин, то мы видим что за 6 лет не один флагманский проект не был переписан на него


Часть кода IDEA написана на котлине, так что флагманский проект jb вполне использует свой же язык.

За пруфами вот сюда https://github.com/JetBrains/intellij-community
802 2464618
>>464610
Тебя укусил делфист и ты уже языков не различаешь
зеленка тебе поможет.

>>464613

>Часть кода IDEA написана на котлине


я мимокрок но это не аргумент. Переписана с жавы на котлин.
Это ДАЛЕКО НЕ ТО ЖЕ САМОЕ как переписать с любого постороннего языка
Даже студия, в которой я пишу на котлин при вставке кода на жаве тупо конвертит ее в котлин, а дальше только причесать
803 2464619
>>464584
Инвалид, ты опять выходишь на связь?
Нет бы устроится разработчиком, и стать полезным, ты как аутист лазаешь по всеи этим тредам? Зачем?
Иди лучше бампай тухлый тред раста.

В целях безопасности в асп выпилили идентифицирующие хедеры, и новые проекты перестали попадать в список. Рост жабы, тут как раз из-за падения пхп и шарпа.
804 2464623
>>464607

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


Наверное жаба для других задач больше подходит, и вообще причем тут она?
Ну а вообще докер изначально был написан на питоне, только спустя время его на гоху переписали. Кубер изначально создавался в гугле, где его изначально на го начали писать, что в целом ожидаемо.
Вообще всякие задачи контейнеризации-виртуализации было бы странно решать используя жабу.
805 2464628
>>464409
Потому что ORM не нужны, когда можно писать сразу на нативном SQL.
806 2464632
>>464618

>я мимокрок но это не аргумент


Ну там выше шизик рассказывал, что студию частично переписали на шарп, я привел как аргумент, что идею тоже частично переписали на котлин. Да, переход C++ -> C# и Java -> Kotlin намного различается по сложности, но мы же не про сложность перехода говорим?
А так на котлине сейчас весь андроид держится, там уж точно много чего было переписано.
807 2464637
>>464604
Еще один жопочтец, тебе не сказали нельзя, а сказали что оверхедно.
Можно написать и на С++ это все, но тебе мальчику выращенному ютубом сражу покажется это накладным, так же и здесь можно рогом упереться и написать на бойлерплейтах, но ну его нафиг.
808 2464638
>>464623

>Наверное жаба для других задач больше подходит,


>и вообще причем тут она?


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

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


С шарпом та же история, но тебя это чет не смутило.

>>464632

>мы же не про сложность перехода говорим?


нет. мы именно про нее и говорим. Берем сложный проект и переписываем его на го допустим. Можем переписать? да даже на батниках можно писать и на синклер бейсике. Вопрос в том сколько это времени займет.

А переход жава - котлин занимает....нисколько.
809 2464640
>>463980
Ну жаба так-то раньше еще стала популярна, ну и развитие в ней тоже было, 7 и 8 жаба при оракле вышла так-то.
810 2464644
>>464638

>тебя это чет не смутило


А почему должно было смутить? Изначально речь шла о том, что го кроме как для крудов, бесполезен, однако это не так и на нем много долгоживущих проектов написано, в отличие от шарпа, где опенсорса не видно и не слышно.
Про контейнеризацию, вирутализацию и жабу уже другой разговор.
811 2464645
>>464613
Второй по популярности язык в вебе, но жаба макака все еще маневрирует фразами "а вот этой компании его нет, значит его нет вообще нигде".
Иди уже.

>Часть кода IDEA написана на котлине


Показывает нам бесплатный продукт и тот только частично на котлине. Вот когда идею на котлин перепишут, тогда на твой котлин и начнем смотреть как на продукт слишком гладо про интероп стилили. Сами не рискуют переписывают свои продукты, а мы должны.
812 2464646
>>464637

>тебе не сказали нельзя, а сказали что оверхедно


Оверхедно это анальный зуд при написании проектов-долгожителей на го или ты про оверхед в шарпе? Нихуя не понял.

>>464638
Жаба не имеет никакого отношения к тому, что существуют крупный популярный опенсорс на го.

>>464638

>мы именно про нее и говорим


Ты говорил про переписывание флагманского продукта на свой язык. Jb переписали часть идеи на котлин, и новые фичи тоже в основном на котлине пишутся, так что флагманский продукт вполне успешно использует язык компании.
813 2464650
>>464644
изначально (и всегда) речь шла о том, что go это бойлерплейт язык. И чем больше проект, тем больше кодирования.
Поэтому для мелочи оно удобно ведь пока начинает бесить это - уже все написал.

>>464646

>Жаба не имеет никакого отношения к тому


верно. как и шарп не имеет отношения

ты привел список из которого негласно следует вопрос
"а где ТАКОЕ ЖЕ на шарпе". А где ТАКОЕ ЖЕ на жаве?
у шарпа своя ниша - почему вдруг продукт должен оперсонсным и вообще орать на каждом углу что он шарп?

Типичная "ошибка выжившего"

ps: да (цензура) форма поста. какой макака ее разрабатывал, пишешь текст вслепую
814 2464652
>>464645

>жаба макака


Я вообще никак с жабой не связан.

>>464645

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


????
Я тебе скинул репозиторий идеи, которая действительно частично на котлине написана, как и студия частично на сишарпе. В чем причина подрыва?
815 2464658
>>464650

>А где ТАКОЕ ЖЕ на жаве


Почему на жаве должен быть написан докер? Но если тебе интересно, то как минимум на жаве есть другие крупные опенсорс проекты - кафка, эластик, хадуп, зукипер + написаны бд вроде кассандры и H2.
А разговор шел про то, что на го все-таки есть крупный опенсорс, который долго живет. А на шарпе его не видно. Вот и все. На жабе опенсорс как видишь тоже есть.
816 2464665
>>464658

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


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

У кого то есть время! и желание! (и необходимость) писать на бойлерплейт языке, да еще делать это опенсорс
но не у всех же такая необходимость

Возьмем для примера gitlab. Вот есть gitea - там "православный go" но чет не отправляет на свалку истории она гитлаб написанный на "ужасном богомерзком руби" с дикими тормозам и потреблением памяи. Как так? ведь go же

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

А по поводу "не видать" так
1 а зачем оно должно быть видно. вот у нас шарп - снаружи не видать. На антиплагиате шарп - снаружи не видать. На стекоферфлоу шарп - снаружи не видать. Знаешь об этом только потому разрабы не поленились опубликовать эту инфу
2 триггер "фатальный недостаток" действует не на всех. И чем больше приложение, тем меньше действует.
817 2464673
>>464665

>жаба и опенсорс это нечесна


А кто говорит о честности? Выше был пост, где было явно сказано, что MS просрали свое время и очухались слишком поздно. Как бы сами разработчики платформы и их хозяева проебались.

>>464665

>антиплагиате шарп - снаружи не видать. На стекоферфлоу шарп - снаружи не видать


Это не опенсорсные проекты. И другие разработчики по всему миру не пользуются трудом инженеров стаковерфлоу или антиплагиата. А докером и кубером пользуются. Кафкой и эластиком пользуются.
818 2464676
>>464673

>А докером и кубером пользуются.


>Кафкой и эластиком пользуются.


фатальный недостаток
фатальный недостаток
фатальный недостаток
))))
819 2464677
>>464665

>Как так? ведь go же


Наверное потому что гитлаб на руби нормально справляется со своими задачами?
820 2464679
>>464677
но ведь go быстрее
собственно поэому и gitea стали писать

делов то - дописать до уровня гитлаба и перейти. какая проблема? ведь go же - на нем можно писать такой объемности вещи (бойлерплейтно,а потому дольше, но ведь можно же)))

тут кто то распинался что сменить язык изи и вообще go это ня ибо вон на нем есть. Так почему бы gitea который пишется на супер языке просто не вырасти и не выбросить гитлаб. что мешает? (вопрос риторический)
821 2464686
>>464665

>фатальный недостаток


>>464676

>фатальный недостаток



Не понял нихуя, что ты имеешь в виду.

>>464679

>просто не вырасти и не выбросить гитлаб. что мешает?


Потому что гитлаб первым (а точнее вторым) захватил рынок, а gitea мало чего нового предлагает? Точно так же как и жабой-шарпом. Вроде бы шарп охуенный язык, но из новшеств только сахар, поэтому люди дальше на жабе сидят и не хотят с нее переходить на шарп.
822 2464697
>>464686
фатальный недостаток это когда пишешь свой велосипед потому что не хочешь платить за то что есть или "написано не тобой" (с) мелкие

>докером и кубером пользуются


>Кафкой и эластиком пользуются.


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

>Потому что гитлаб первым (а точнее вторым) захватил рынок


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

к тому же опенсорс не требующий доп рантаймов как бы в более выигрышной позиции.

>gitea мало чего нового предлагает?


наглядный пример "мощи" go - получаешь быстрый код, но кодишь дольше, намного дольше (если сравнивать с руби)

(я на питоне пишу на порядок быстрее, чем на шарпе)

>поэтому люди дальше на жабе сидят


ну жависты особый народ. они закостенелые. их все устраивает. А кого не устраивает - ну те изучают котлин. А шарп то им зачем.
823 2464706
>>464652
Тебе сказали, что бесплатная приблуда не годиться в противовес продукта аля студия, где она полностью, почти на шарпе.
Нахера ты продолжаешь натягивать манямир? У них был полный интероп и время, чтобы показать котлин как продукт, ценой рисков своего продукта. давай, задай этот же вопрос в третий раз
824 2464710
>>464658

>крупные опенсорс проекты - кафка, эластик, хадуп, зукипер + написаны бд вроде кассандры и H2.


Какое-то тырпрайзное говно вы жрете, месье, я лично ожидаю от го или котлина продуктов в виде таркова, раста или геншина импакт.
Я уверен что все эти базворды пишутся максимум за месяц, как и все тырпрайзное, оверпразное, не оптимизированное говно (не алгоритмами славится тырпрайз, а умением наслоить тонну говна поверх говна, программистами студентами из индии).
825 2464728
>>464619
Тебя какой-то инвалид так сильно проткнул, что ты теперь его везде детектишь? Зашивайся, братик)
826 2464751
Java: кафка, дженкинс, зукипер, хадуп, кассандра, эластик, нео4ж и т. д. Инфраструктура, банки, высоконагруженный многолетний бэкэнд в крупнейших компаниях мира.
Go: докер, кубер, опеншифт, терраформ, консул, таракан и т. д. Инфраструктура, высоконагруженный многолетний бэкэнд в крупнейших компаниях мира.
C#: Эээ... Ну..... Инфра-.. Эм-м.. Ну, это.. Майкрасофт, да.. Студия.. Да не успели просто, а крупные компании специально в штаны насрали, бойкотируют.... Зато мы по популярности в мелком бэкэнде с крудами и формочками на втором месте, после такого гиганта бэкэнда, как ПХП. Да-а...
)
Безымянный.png13 Кб, 706x262
827 2464754
Смотрите чего придумал!
Думаю и так понятно что это. Но суть - да. Помечать сервисы атрибутом и потом просто что-то в духе services.AddServicesFromAssembly();
Какие могут быть подводные камни?

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

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

Но я могу чего-то не знать. Типа возможно майки по каким-то рациональным причинам такую штуку сами не запилили.
829 2464758
>>464751
не в тему, но я один считаю синтаксис голанга крайне уебанским? я его увидел случайно и подумал что никогда бы не смог писать чисто из-за синтаксиса. так у меня и с C++, и с питоном, и с пхп. Вот у C# супер-приятный синтаксис, писать на нем одно удовольствие. А у вас какое мнение?
830 2464762
>>464758
нет. не один
он кошмарен.

>>464751

>Да не успели просто,


именно так. не кросс шарп сразу мимо
а кросс - ну в 19м вышел 3.1 кор и все постоянно спрашивали "а готов ли это для энтерпрайз". То есть сомнений выше крыши
Про патентную политику мелких та же херня.
831 2464766
>>464754
Если у тебя несколько сервисов, которые реализуют один интерфейс, то при необходимости замены в DI одной его реализации на другую при таком подходе ты будешь страдать.
Плюс, ты банально по всей кодовой базе размазывает конфигурацию DI.
832 2464767
>>464758
Мне нравится синтаксис щарпа. Приятный. Во многом - лучший в плане код-экспириенса.
Но с другой стороны - некоторых моментов с жавы не хватает. Плюс - у жавы вариативность всяких решений. Типа вот нужно мне байтоебить и пилить какой-то там сервер на HTTP'шный - я могу взять Netty, могу Mina. И то и другое - охуенно.
В шарпе - я хочу побайтоебить сервер. Ну, кхм, ну вот тебе TCPListener и NetworkStream - развлекайся.
Типа я к чему. Язык - охуенный. Но то что большая часть всего завязана на майков - удручает. А оно будет завязано, потому что майки - владельнцы и завтра они решат все сломать - и проект который ты на шарпе для комунити делал - придется переписывать или оставаться на текущей версии. Короче, такое себе. В жаве оно хотя бы если ломаем, то ломаем предупредив и дав время на переход.
833 2464773
>>464766

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


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

>Плюс, ты банально по всей кодовой базе размазывает конфигурацию DI.


Ну не знаю. Вот конфигурирование роутов - тоже мы размазываем по всей кодовой базе. Чет я мало видел ИРЛ примеров, чтобы кто-то в одном месте все прописал руками, какие методы дергать.
834 2464780
>>464767
То есть у жавы можно брать сторонние либы, а в шарпе нельзя? ну ну.

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

И тут приходишь ты и все перевернул )
835 2464783
>>464773
Ну, роуты штука жёстко привязанная к контроллерам. Контроллеры у тебя обычно лежат в одной папке и где их искать ты всегда знаешь. Сервисы же у тебя могут по куче мест быть раскиданы, и в случае чего, тебе придется использование этих аттрибутов по всему проекту искать.
Плюс, не знаю как у вас, а мы обычно очень жёстко пилим приложение по слоям на проекты (отдельно Domain, отдельно ApplicationServices, отдельно Infrastructure, отдельно непосредственно сам Web/Grpc Api) и стараемся, банально, чтобы инфраструктура не протекала в бизнес логику. Это же лютая завязка всех компонентов приложения на конкретную деталь реслизации, такую как DI контейнер. Банально, если ты захочешь написать консольную утилиту, которая использует сервисы из проекта с ApplicationServices, то придется и в нее так или иначе тянуть DI.
836 2464813
>>464767

>Плюс - у жавы вариативность всяких решений


В шарпе все выходит на уровень стандартов и это круто, не нужно знать 100500 ORM или http серверов.

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

Жаба реально вывозит на своем звездеже, но на деле она уже близка к судьбе кобола. Хз покорит ли шарп мир, но блин точно сейчас не нужно лесть в jvm мир. Да и все равно сейчас проще нанять за твою зп пятерых индусов, чем держать такого мидла как ты.
837 2464823
>>464767

>я могу взять Netty, могу Mina


Потому что тупо ненужно. Ну вот серьезно, ты слезаешь с протокола хттп и с разу попадаешь на tcp/ip, что тебе еще нужно кроме как ручками этот TCP поюзать?? Ну дал тебе нетти пайплайн и что? За то теперь любой затык и ты часами сидишь куришь сорцы/маны на тему как это там работает, хотя этот пайплайн, если надо, написал сам бы за час.

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

В общем, хватит жрать жырную и вредную пищу джавы, переходи на здоровое практичное программирование.
839 2464992
Можно передать в метод параметр с in, тогда это будет неизменяемая ссылка, а как сделать так, чтобы при передаче копированием тот параметр, куда я передал, был константным? Тоетсь как с in, но без передачи с ссылкой, а копированием?
840 2465578
>>464992
шта?
841 2465583
Как отследить изменения репозитория бд?
842 2465597
>>465583
Ты про репозиторий со скриптами миграции? Что там сложного, кладёшь их под Git, и всё.
image114 Кб, 900x700
843 2465612
Использую в коде во многих местах ArrayPool<T>.Shared для Rent и для Return.
Как убедиться или как проверить, что я нигде не забыл вернуть в все взятые напрокат массивы, и утечек памяти нет?
844 2465620
Хочу создать словарик Dictionary<char, T> в котором char'ы будут проверяться с учётом игнора регистра.
Где взять побырому IEqualityComparer<char> для такого случая?
845 2465632
>>465612
Никак наверное. Всегда можно забыть.

Ну можешь анализатор написать проверяющий что если взяли в методе то в методе и вернули (и вернули без условий)
Можешь взять за правило использовать MemoryPool<T> и using
(и проверять анализатором его)

Есть ли такой готовый анализатор - хз
846 2465698
>>465612
Обернуть этот арейпулл в IDisposable хуйнюшку и в диспозе - возвращать. Тебе студия будет подсвечивать, что ты забыл задиспозить что-то.
847 2465706
>>465698

> IDisposable хуйнюшку и в диспозе - возвращать


это уже есть. MemoryPool

>Тебе студия будет подсвечивать, что ты забыл задиспозить что-то


С чего ей это делать? Откуда ей то знать где именно нужно вызывать Dispose и нужно ли. Это даже кодер не знает
848 2465707
Все таки раздражает что нельзя сделать extension свойство и extension методы к статикам.
849 2465714
Смотрите, вот в шарпе есть ивенты и у них есть очевидная проблема, что надо вручную управлять лайфтаймом - отписываться когда надо.

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

Или это ток кастомными реализациями обсервер паттерна делают?

Просто бля странно, что вроде бы это целая фича языка, а на практике не очень юзабельна...
850 2465715
>>465706
Если у тебя создается IDisposable в скоупе - студия подсвечивает, что ты его не диспознул.
Если у тебя передается IDisposable в конструкторе - анализатор - дает предупреждение, что нужно диспозить.
851 2465722
>>465715
ну покажи где студия это делает.
Моя студия с решарпером ничего подобного не делает

>в конструкторе - анализатор - дает предупреждение, что нужно диспозить.


это бредовый варнинг был бы. Впрочем не вижу варнингов. Студии абсолютно плевать, хоть все IDisposable утыкай
852 2465728
>>465714
именно так. Только кастомная реализация может дать требование передать ей lifetime и тем самым не дать возможность забыть.

В остальном же 2 ламбды. Ну а как иначе, если уже есть event и ничего ты с этим не сделаешь. Собственно и 2х ламбдовость не даст забыть сделать вторую ламбду. Но выглядит это коряво.
853 2465789
>>465714
пили свою реализацию обсервера
заодно решишь и проблему многопоточного доступа к event
854 2465813
>>465715
Использование ArrayPool часто подразумевает критичные к производительности места, когда нужен какой-то буфер промежуточный, и если он нужен маленький, то делается stackallock, а если большой - ArrayPool.Rent(). Эта логика либо оборачивается в ref struct'ы, либо в подобном контексте используется, поэтому явный IDisposable тут не применим. Хотя для шарпа IDisposable можно по утиному реализовать даже в ref struct'ах, и затем использовать using.
855 2466028
>>465578
>>465578
Можно создать метод
int func(int a) {...}
и тогда то, что мы передадим, скопируется в локальную переменную a.
Можно создать метод
int func(ref int a) {...}
и тогда то, что мы передадим, просто получит другое имя
Если int func(in int a) {...}
то будет как в прошлом случае, но без возможности менять "a".
как сделать это, но с 1 случаем? Тоесть просто убрать возможность менять, но передать копированием?
856 2466047
>>464992

> Можно передать в метод параметр с in, тогда это будет неизменяемая ссылка, а как сделать так, чтобы при передаче копированием тот параметр, куда я передал, был константным? Тоетсь как с in, но без передачи с ссылкой, а копированием?



Если я тебя правильно понял, то ты хочешь передать по ссылке что-то в метод, при этом быть уверенным, что переданное по ссылке - не изменится внутри метода.
Что-то типа плюсового void foo(const int* const some){}

Ну так вот. Такой фичи из коробки в шарпах нету. Для этого тебе нужно иммутабельность реализоваывать в случае использования классов. Можешь - использовать readonly struct и readonly record, если у тебя там нет особой логики.
1658184073580292.jpg55 Кб, 474x632
857 2466049
C# проприетарная параша. Мелкозалупа уже поссала на лица кодерков в прошлом году когда захотели сделать хотрелоад ЫНТЫРПРАЙЗ ОНЛИ фичей от чего у всех шарпомакак сгорела жопа https://github.com/dotnet/sdk/issues/22247 КАК ЖЕ ТАК, ХОЗЯИН ПРЕДАЛ И НАЕБАЛ

Не забываем про базу https://isdotnetopen.com/

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

НУ НЕ МОГУТ ЖЕ ОНИ!!1!1 ЭТО ЖЕ РАЗОЗЛИТ ВСЕ КОМУНИТИ!
могут, вы для них халявные рабы, произошла бизнес оптимизация
858 2466075
>>466049

>https://isdotnetopen.com/


Выглядит, как манифест какого-то шизика-скулшутера
859 2466077
>>466049

>2021


Ты бы еще консервных банок притащил
860 2466090
Есть гайд, как кодить на IL в райдере/визуалке?
изображение.png59 Кб, 1134x478
861 2466113
Решил попробовать devexpress с wpf, создал проект по их шаблону, и получил пик. Что за дела, как фиксить?
862 2466124
>>466049

>хотрелоад


Кто-то пользуется этой парашей? Она же в 9 из 10 кейсов не работает, и требует пересборки и перезапуска.
863 2466140
>>466124
Угу.. Бесполезная хрень

Лучше бы канвас деббагер вернули
864 2466146
Зацените какая штука была... Да сплыла
https://youtu.be/3p9XUwIlhJg
865 2466149
>>466146
Не застал, но судя по видяшке - реально прикольная фгиня.
866 2466158
А как называется эта хуйня, где кусок кода с другого места показывается?
867 2466159
>>466146
>>466149
Что мешает такую шнягу самому на экстеншонах запилить? Руки из жопы? Почему за вас всё майки должны делать?
868 2466160
>>466159
Иди нахуй.
869 2466165
>>466159
С дебагером сложно работать
Вон oz-code так и не пофиксили проблемы их расширения
А родной дебаг примитивный
870 2466270
>>466047
Спасибо. Удивительно, что этого нет. Я думал это фишка шарпов постоянно что-то пилить новое, а тут такой базы не оказалось. Ты меня немного не понял, я спрашивал более экзотическую вещь, чисто ради интереса, а тут такое
871 2466279
>>466270
Твоя хотелка лишена смысла

Запрещать менять копию - какой в этом смысл?
Понятно почему этого нет
Ведь смысла в этом нет
872 2466312
>>466049
Вот тут интересно, маркетологи хотели прогнуть, но прогнули их. А вот в случае какого-нибудь Го, где комьюнити имели как хотели, никто даже не вспоминает. Какие же вы лицемерные, шизики.
873 2466340
>>466279
Ну я и написал, что это экзотический вопрос, чисто ради интереса. А то что нельзя передать ссылочный объект в функцию и быть уверенным что инфа самого объекта из кучи не изменится это странно.
874 2466348
>>466340
много чего нельзя
а так то оопешно это ридонли интерфейс нужон
изображение.png2 Кб, 569x27
875 2466393
Почему у меня при создании миграции свойство Categories генерируется с запретом NULL?
image.png37 Кб, 853x266
876 2466424
Где ошибка не понимаю?
877 2466447
>>464754
Смотрите чего придумал!
https://github.com/khellang/Scrutor
Или три строчки без с выгребанием по нейм конвеншену
878 2466463
>>466424

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

return pov(num, (byte) (step - 1) ); Можно без else
image.png52 Кб, 1475x352
879 2466498
>>466463
Я так делал уже: всё равно ломается. Вообще с else кажется более логичным, если ветвление if предполагает покрытые всех случаев алгоритма, а без него кажется более логичным, если if выполняет функцию опционального ответвления от алгоритма. Как то красивее так и логичней
880 2466502
>>466113

> devexpress


Удивительно, как эта контора не наебнулась вслед за эмбаркадеро? Это какой-то привет из нулевых. Шли их нахуй. Юзай Авалонию!
881 2466515
>>466049

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


Не нравится, но блять, покажи мне другую платформу, в которой я смогу:
1. Одной командой в консолечке скачать и установить платформу, без ошибок, остановок или вываливающихся километров стектрейса.
2. Второй командой в консолечке создать новый проект.
3. Третьей командой в консолечке скомпилировать и запустить проект. Без. Ошибок. Остановок. И прочей хуйни.
4. Открываю проект в ИДЕ и без задней мысли пишу код. It just works.

Я тебе отвечу, нет, ни одного решения с таким простым порогом входа. Поэтому тебе встречный вопрос, почему твой хозяин не сделал тебе такую простую систему?
882 2466533
шарпач, есть код на С++, а С++ я не знаю от слова совсем, ну как, похоже на С# но чет совсем не то
как это портировать на шарпы?
883 2466536
>>466533
Легко, учишь C++, и необходимость портировать пропадает.
Безымянный.png16 Кб, 589x244
884 2466538
885 2466541
>>466536
нет, портировать все равно надо, я использую unity
886 2466542
>>466541
Так учи unreal и не используй unity.
887 2466556
>>466049

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


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

>>466498

>если ветвление if предполагает покрытые всех случаев алгоритма


Если не if то это дефакто else тем более если ты в обоих случаях возвращаешь значение.
888 2466563
>>466515
Какие нахуй хозяины, вы ебанулись?
Ряяя хазяен нам платформу диктует ((((
Ряяя хазяен на фичи языка диктует ((((
Ряяя хазяен процесорные инструкции нам диктует ((((
Ряяя клятые транзисторы хазяен диктует (((
Ряяя а че там только електроны бегают хачу на частицах кала вычислять ((((
889 2466583
>>466424
Во время арифметических операций все приводится к инту (от меньшего к инту).
Выражение "byte - 1" возвращает int

(number, (byte)(step - 1))
890 2466590
>>466583
(number, (byte)(step - 1)) * number
Тоже к инту приведет
891 2466598
>>466563
Да не трясись ты. Анон заговорил о хозяевах, мы поддержим его перверсии. У меня проблем с этим нет. А ты чёго триггернулся?
892 2466627
>>445746 (OP)
Аноны, молю, дайте годный туториал по взаимодействию EF с Postgres'ом. Желательно чтоб был и code first и database first, и чтоб CRUD был по-человечески объяснен и как хранимые процедуры юзать.
Вот с Dapper'om вообще все просто и понятно, но глядя на вакансии, везде требуют EF.
894 2466688
>>466637
Есть ли в продаже этот курс на торрентах?
895 2466742
>>466688
А что толку от курса на торрентах? Нет живой связи с преподавателем. Ты сделал ДЗ, а его никто не проверил. Ты саму суть обучения упускаешь.
896 2466756

>Ты сделал ДЗ, а его никто не проверил.


Там обычно дз вообще не имеют ничего общего с реальным миром, ценность их нулевая, так как не откладывается ассоциация в голове.
Никогда их не делал, вкатился норм в айти.
Лучший ментор - это ковыряние в исходниках, а курсы это попил бобла ибо сфера слишком сложная чтобы уместить в один курс. Это равносильно пойти на курс хирурга, или зубного врача, где тебе расскажут про инструменты и дадут потыкать в лягушку.
897 2466760
>>466756
Мы вам перезвоним.
898 2466764
Если я заведу переменную

> Dictionary<object, object>


Ментор не сильно разозлится?
899 2466781
>>466760
А вот и ментор, у которого спиздили курс.
900 2466782
>>466049
Ты заставил меня задуматься, но какая альтернатива для языка общего назначения? Жаба тухнет и там только веб, у го тоже веб, раст там на дне копашится. Какие альтернативы шарпу, если я хочу и веб писать и игры делать?
901 2466784
>>466764
Когда ты так пишешь, в мире рождается еще один джавист.
image.png2 Мб, 1920x1280
902 2466789
>>466784
А вот и я! Вкатываюсь в тред, засранцы!
903 2466871
>>466538
>>466583
Спасибо. Я че то даже не подумал одновременно и там и там привести.
904 2466878
>>464757
Бля, вот это действительно охуенно.
Если там еще и производительность 2Д рендера в нормальный вид привели (батчинг), то я даже сдую пыль со своих двух-годовалых проектов, чтобы поразвлекаться на досуге.
905 2466942
Есть один небольшой метод, который берёт цвет в каком-то странном формате в виде инта и конвертит его в формат нормальный
https://pastebin.com/dfnxbBjw
С ним всё нормально, но теперь мне нужен реверс, чтобы из нормального формата конвертило опять в этот всратый и у меня почему-то не получается, не то число выходит. Пробовал вот так
int.Parse(Color.Trim('#'), System.Globalization.NumberStyles.HexNumber)
И ещё более всратыми способами. Жопой чую, что это должно элементарно делаться, но туплю
906 2466996
Когда написано в коде с дженериком тип T?, а на T нет ограничений class или struct, и nullable enabled. Что это вообще значит? T? Если это структура, то по идее она должна оборачиваться в Nullable<T>, но этого не происходит. Какой-то мутный непродуманный запутывающий синтаксис.
907 2467202
>>466782
Нет таких альтернатив, к сожалению. Как нет и технологий без проприетарщины. Даже иде все проприетарные.
908 2467206
Насколько мне как джуну надо разбираться, как там в ASP внутри создается IHost и как вообще работает вся внутрянка фреймворка?
909 2467216
Как перекинуть рабочий экзешник другу? Написал код, у меня все работает, а у него нет. Как я понимаю, нужно пользоваться "сборкой решения"? А где этот выходной файл, собранный файл? Или что то не то я делаю? Библиотек никаких дополнительных нет
910 2467277
Что почитать на тему устройства wpf? Чтобы понимать, как xaml преобразуется в код, как работют свойства зависимости, логическое и визуальные деревья и тд.
911 2467312
>>467277
хз зачем тебе такие детали
А для начала тебе на professorweb.ru
912 2467348
Немного глупый вопрос, но всё же. Как происходит поиск товара, допустим, на сайте DNS? Для этого используется NOSQL база данных или обычная, например, PostgreSQL. Просто я слышал, что запросы к SQL базе данных медленные, вот решил спросить.
913 2467354
>>467348
Зависит от нагрузок. Если бы не амазон или ягодки, может хватить и sqlite.
914 2467357
>>467354
Ясненько, я щас хочу подучить PostgreSQL и написать анолог магазина DNS. Спасибо
915 2467371
>>467312

>professorweb.ru


Майнер покормить?
916 2467383
>>467371
Ставь нормальный браузер где можно поставить блокировщик рекламы
917 2467394
>>467206
Бамп.
918 2467397
>>467383
Нахуя мне сайт какого-то индуса с вредоносным по, когда есть божественный мсдн?
919 2467647
>>467348

>обычная


this

>что запросы к SQL базе данных медленные


Всё не так страшно как кажется главное не использовать по 50 join'ов в запросе и для этого майки рекомендуют использовать для работы с БД\Файлами async await как я помню.
920 2467649
>>467348

>запросы к SQL базе данных медленные, вот решил спросить


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

Со всякими же JSON расширениями приходят и фишки NoSQL
изображение.png894 Кб, 1978x810
921 2467669
Студия начинает сильно тормозить на этому участке кода, это в самой студии говнокод, или решарпер поднасрал?
922 2467672
>>467669
редакторы с подсветками не любят длинные строки.
923 2467723
924 2467737
>>466942

>в каком-то странном формате в виде инта


Это не странный формат, а aRGB.
925 2467744
>>466942
Хотя, нет. Спиздел.
Это aBGR.
Тебе по факту нужно просто нужно у полученной строки поменять местами символы отвечающие за R и B компоненты местами и потом полученную строку распарсить обратно в int через TryParse используя перегрузку с NumberStyles.HexNumber.
Правда alfa компоненту ты уже не получишь, т.к. она будет утеряна.
926 2468205
Мужики ржаные гречневые, за сколько времени вы начинали понимать что на работе происходит?
У меня вот испытательный срок в тырпрайз конторе, там этих сущностей таблиц миллион (первая работа) и я чёт пока так тяжело в них ориентируюсь. В коде вроде норм, а вот в связях этих всех пиздец
927 2468245
Объясните мне, нахуя в шарпе забанили множественное наследование? ОНО МНЕ НУЖНО БЛЯДЬ

Челики просто не осилили разрешения конфликтов и дропнули?
928 2468266
>>468245
Ты думаешь, что оно тебе нужно, но на самом деле оно тебе не нужно.
929 2468462
>>468266
Двачую этого.
>>468245

> не осилили разрешения конфликтов


Осилили. При помощи множественной имплементации интерфейсов, вместо множественного наследования объектов. И визуально и логически ты получаешь то же самое. Только архитектурно различается.
930 2468475
>>468462

>ты получаешь то же самое


нет. это все таки разные вещи

просто не нужно это множественное
931 2468486
>>468475
Архитектурно, я повторяюсь, разные. Семантически, если убрать из имён интерфейсов букву И, наш страдалец получит то же самое, чего он там хотел:

> class Dvacher : Mammal, Male, Human, BurgerEater, ChairSitter, LifeDropper {}

932 2468492
>>468486
>>468462
Маня, ты дурак? А где в интерфейсах приватные методы и поля?

А ОНИ МНЕ НУЖНЫ БЛЯДЬ!
933 2468510
>>468486
семантически это тоже разные
то что дают интерфейсы можно трактовать как миксины не более

но поскольку лично я сторонник делегирования, то не страдаю.
934 2468668
>>468510
Либо я тебя не понимаю, либо ты меня.
Я говорю, что если у объекта есть нужные атрибуты, ты берёшь их и пользуешься. И они возвращают нужные тебе значения, или производят нужные тебе действия. И именно на этом уровне нет разницы, унаследован ли атрибут, имплементирован, или подмешан. Он есть. Он просто работает. Разницы нет.
Тоже самое касаемо коллекций. Ты объявил коллекцию типа ArtCreator creators; и добавляешь в неё всех, у кого есть интерфейс IArtCreator, вне зависимости от того, каким образом в добавляемые объекты пришли те атрибуты, которые реализуют этот интерфейс в конечном объекте. Эти арт-креаторы могут быть людьми, ИИ-нейросетями, разумными грибами, пришельцами с Плеяд, кем угодно. И иерархию этого "как угодно" можно сделать сотней разных архитектур. Но на поверхности мы увидим только набор атрибутов, который нас интересует, нас устраивает.
935 2468675
>>468668
Все просто
У тебя есть абстрактный родительский класс. Он может иметь состояние - то есть приватные переменные что то хранят, приватные методы для удобства, то есть ведет себя как самый обычный класс

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

Во множественном наследовании второй (и вообще все) родительский класс имеет те же возможности как и обычный родительский класс без множественного

Снаружи это выглядит одинаково, но внутри небо и земля.
936 2468679
>>468668
и желающему множественное наследование нужны возможности внутри, а не снаружи. Снаружи всегда будет одинаково - что при множественном, что без (с интерфейсами)
937 2468682
>>468675

> Все просто


> У тебя есть абстрактный родительский класс.


Да ты блять угашенный штоле?
Я тебе в третий раз повторяю, на уровне использования готового объекта я не знаю и мне не интересно, кто у него там родитель. У него есть атрибуты, я беру их и пользую. Всё.
938 2468684
>>468679

> желающему множественное наследование нужны возможности внутри, а не снаружи


Тащемта ему сразу сказали, что он что-то навыдумывал себе неправильное.
>>468266

> Ты думаешь, что оно тебе нужно, но на самом деле оно тебе не нужно.

939 2468685
>>468682
это ты угашенный видимо.
тебе в очередной раз повторяю

интересует не возможность описать контракт - что могут интерфейсы

проблем "контракт снаружи" не стоит - в обоих случаях ОДИНАКОВО!!!!!!!!!!!!!!!!!!

А возможности РЕАЛИЗАЦИИ внутри этого контракта с полным состоянием
940 2468686
>>468684
Ну вообще не особо нужно. Все зависит от привычек. Я вот пишу на шарпе много и мне привычно делегировать, потому что сразу заложились привычки в силу того что есть в языке.

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

В котлине вовсю юзаю методы расширения, ведь в котлине упор на DSL-ость. (а вот в шарпе их избегаю ибо они не могут быть описаны в контракте)
image.png21 Кб, 439x196
941 2471246
Видали как могу?
942 2471248
>>471246
Крестоёб, ты?
943 2471257
>>471248
Нет, я байтоёб упрощённый, из мира .NET. Еще и zero-allocation сериализацию можно сделать если забайтоёбить unmanaged типы. В C# 7 майки еще и забайтоёбили Linq, он теперь при возможности на Vector<T> переходит. А пиздежа-то было про байтоёбство, а ведь это единственно верный путь к настоящему программированию
944 2471271
>>471257
нихуя ты с джунглей вылез
945 2471597
>>471246
Прикольно! Охуели всем тредом!
946 2471727
У ASP действительно такая проивзодительность, или там специально набайтоебили с ансейфом и неприменимой хуетой, как чел выше?
Если там нормальный код без крестоебства, то почему всем крупным компаниям до сих пор похуй на шарп?
947 2472132
>>471727

>почему всем крупным компаниям


А ты во многих крупных компаниях был, чтобы такие выводы делать?
Я тебе даже больше скажу, даже работая в такой компании - хуй ты сходу скажешь какой у нее стек преобладает, т.к. знать ты будешь только то на чем пишет твоя команда и пара смежных. А что в соседнем отделе, хуй ты узнаешь.
948 2472163
>>472132
Брат, ну давай без коупинга по этому поводу. Выше уже был срач про использование шарпа, го и жабы во всяких гуглах, и шарп очевидно проебывает. Стартапы тоже - даже котлин с обоссанным жвм берут, но на шарп как-то всем пох.
Мне больше интересно - производительность-то какая будет в реальных условиях, без ансейф байтоебли? Есть бенчмарки?
Как примерно чувствуете, шарп с кором выстрелит еще сильнее со временем и вообще заменит жабомир, или так и останется на подсосе у жаб и го?
949 2472368
>>471727
Глянул одним глазком
https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/CSharp/aspnetcore-corert/PlatformBenchmarks
таких извращений как выше нету. Ансейф только для UnsafePreferInlineScheduling
Но в целом такой код ты на прод не увидишь, его пишут авторы Нет рантайма и довольно жестко оптимизируют.
аватарки бейля - пидорасы
image.png247 Кб, 500x510
950 2472381
ХХОСПАДЕ....КАКОЙ ЖЕ ПРЕКРАСНЫЙ ЯЗЫК Я ПРОСТО В ШОКЕ!! Столько фич, такой быстрый, хорошая оптимизация, приятный синтаксис, две великолепные IDE........................
951 2472386
>>472381
Не дохлая жава - уже хорошо
952 2472709
>>464619

>В целях безопасности в асп выпилили идентифицирующие хедеры


а можно ссылку какую-нибудь на это? а то меня как вкатыша напугала эта статистика...
953 2472753
Есть один WPF-проект с переопределённой точкой входа, чтобы было удобнее работать с четырьмя независимыми окнами одновременно Это условие лабы, уменьшить количество нельзя. Но из-за этого после открытия окон они сразу же закрываются, т.к. программа доходит до логического завершения.

В связи с чем сам вопрос — каким грязным хаком я могу заставить свой грязный хак работать нормально? Вечный цикл после открытия всех окон? Какая-то пауза? Где-то есть настройка вечной работы с окнами? При этом вся информация с окон стекается в один обработчик, по сути
954 2472800
>>472753
Кто куда доходит. Запущенное окно и есть эта точка даже если не модально
изображение.png37 Кб, 519x287
955 2472859
>>472800
Доходит до конца main и заканчивается, что ожидаемо. Но мне этого не надо
изображение.png37 Кб, 519x287
956 2472860
>>472800
Доходит до конца main и заканчивается, что ожидаемо. Но мне этого не надо
957 2472875
>>472859
какой еще маин. переопределяй метод OnStartup
(ну и из хамла App.xam не забудь убрать вызов)

и в этом методе запускай окна как хочешь
goautism2.png136 Кб, 612x401
959 2472912
>>472163
Срач был в твоем маня-мирке, а так тебя там обоссали и объяснили, что шарп второй язык в интернете (как по количеству, так и по миллионникам, даже при условия того что хедеры asp убрали тонну лет назад).

Все тесты там настоящие, единственное где-то есть без mvc, то есть вариант для API, никакого байтоебства нет. Но радует, что если надо, можно навернуть максимум железный код (который обычно нужен в 1 случае из 100).

Но ванильный го, необрезанный, не вывозит даже противостояние с mvc
960 2472932
>>472709
Где-то еще в 2009 началось безумие и все, даже в пхп начали удалять хедеры с ответом. Что ты именно хочешь узнать и что тебя напугало? Запусти сервер и посмотри x-powered-by.
961 2472968
>>472875
Это был самый прямой и очевидный способ

>>472904
Выглядит рабочим, попробую
962 2473162
>>472932

>что тебя напугало?


что шарп теряет популярность судя по голой статистике

>Запусти сервер и посмотри x-powered-by.


я вкатышек который проходил только паскаль и си в школе и на первом курсе, шарп пока не трогал даже, собственно этого не умею.. можешь показать немощному?
и подсказать что выбрать для бэкэнда, без фанатизма? выбор сейчас между джавой и шарпом, в го я так понимаю вкатышам без опыта дорога закрыта
16629625794320.jpg194 Кб, 1280x906
963 2473165
>>473162

>что шарп теряет популярность судя по голой статистике


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

>подсказать что выбрать для бэкэнда


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

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

>стали прятать хедеры


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

>мухосранске


я в дефолт городе. в общем с точки зрения перспектив технологии лучше шарп выбрать? (вакансий то вроде везде много)
965 2473237
>>473178

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


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

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


Считаю шарп/дотнет перспективной технологией, потому что жаба не стоит тех денег с чем приходится там работать в бэкенде, как бы там не натягивали жабу, но это чистой воды COBOL Серьезно, считаю, что даже пхп будет лучше, чем жаба
image195 Кб, 1659x897
966 2473352
>>465612
Очередное подтверждение, что C# - это детский игрушечный язык. И как следствие, программисты-макакингеры упускают из виду решения, которые давно известны.
В языках для взрослых, типа С и С++, такие проблемы умели решать ещё 40 лет назад.
Все Rent и все Return нужно обернуть в конструкцию #if DEBUG / #else / #endif.
И в дебаг-режиме вместо прямого использования ArrayPool<T>.Shared, использовать обертку с подсчётом одалживаний и возвратов.
967 2473369
>>473165

>переизбыток джунов


Подмена понятий.
Переизбыток претендентов на джунов. Реальных джунов - дефицит.
968 2473709
Можно ли в студии включить предупреждение статического анализатора, что в свитчах не представлен исчерпывающий перечень енумов?
sage 969 2473972
Как там собесы сейчас проходят? Литкоды уже везде?
Вопросы какие? инбифо: хуи сосал?
970 2474014
>>445746 (OP)
Анон, смотри.
Иногда флешка тупо сыпется случается пикрилы.
Первое, чо пришло в голову, при такой хуйне - сделать raid-1 массив, из двух флешек.
Но хуй знает как, для этого нужны какие-то железяки, и короче raid-1 контроллеры, там.

Поэтому, пришла в голову другая мысль.
Очевидно, что если флешка сыпется, то несколько копий не поможет, однако очевидно, что несколько копий на флешке - нужно иметь.

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

Вопрос. Как реализовать сие на шарпе, и стоит ли использовать шарп?
Первое что приходит в голову- это работать с байтами, внутри filestream.
А вообще, хотелось бы заебенить это на уровне драйвера какого-нить, чтобы тупо разделить флешку на два-четыре раздела, заебенить raid-1 на этой флешке, и подмонтировать всю хуйню, как один раздел поменьше, с регулярной перезаписью данных в нормальные, не битые сектора.
971 2474019
>>474014
Ты ебанутый?
Хочешь до пенсии на своей флешке криптоговно держать?
972 2474139
>>474019
Ну а как ещё с такими? Или хочь сказать, что щас бы самое время всё посливать нахуй - за обоссанные эти копейки ёбанные?
973 2474169
>>473709
Да. В .editorconfig прописываешь следующее:

dotnet_diagnostic.CS8509.severity = error

Теперь если если в switch-e с enum-ом будет какой-то недостижимый вариант, то будет ошибка. Чтобы ее не было, нужно либо чтобы были расписаны все варианты енамов, либо был default.

Еще можешь добавить вот такую команду:

dotnet_diagnostic.CS8524.severity = none

Это отключит предупреждение если у тебя расписаны все варианты, но нет дефолтного.
974 2474674
Если в вакансии написано винформы и асп.нет это сейчас актуально?
975 2474706
>>474674
Винформы точно нет.
Про Asp.Net нужно уточнять. Если это обычный, .Net-фреймворковый Асп - то нахуй. Если Asp.Net Core то - актуально.
Но в нормальных конторах обычно знают разницу и везде указывают приставку Core.
976 2474712
>>474706

> Про Asp.Net нужно уточнять. Если это обычный, .Net-фреймворковый Асп - то нахуй. Если Asp.Net Core то - актуально.


А между ними такая большая разница?
977 2474717
>>474706
Написано без Кор, просто асп.нет. Поэтому стремаюсь немного. Как бы там скуфидронов небыло, которые затянут меня в бесперспективный кал мамонта свой.
978 2474745
Как вашу хуйню учить-то? Дайте книги какие-нибудь.
979 2474909
>>474139
На листочек свои ключи перепиши - надежнее будет, чем твои костыли.
980 2474956
Есть какая книга или цикл статей о разработке крупных систем?
Вот желательно было бы в виде истории типо начали разрабатывать интернет магазин сделали, а потом начали допиливать и вот такие косяки вылезли.
Везде пишут как правильно но ни кто не пишет как не правильно(
Я уже второй раз пытаюсь написать свой сервис и блять через неделю получается такая ебань что я не могу вообще разобрать как и почему это работает.
981 2475025
>>474706

>Винформы точно нет.


И какие же альтернативы для написания легковесных приложений для ПК с виндой?
982 2475097
>>474712
Для разраба в принципе не особо. Есть некоторые запарки и ньюансы, но не критично.
Вопрос в работодателе, если у него там до сих пор .net framework и он не собирается переходить на core, то делать там нехуй.
983 2475098
>>474717

>Как бы там скуфидронов небыло, которые затянут меня в бесперспективный кал мамонта свой.


Скорее всего ты будешь там один и будешь тянуть на себе весь этот 'кал мамонта'
984 2475110
>>475025

>И какие же альтернативы для написания легковесных приложений для ПК с виндой?


Да пиши пожалуйста, только это не та область (десктоп) где сейчас хоть как-то нормально заработать можно. Вопрос, то про вакансию изначально был, а не про хобби.
985 2475130
>>474909
А если забуду где лежит листочек?
986 2475153
>>475130
опубликуй ключи тут. Кто-нибудь да запомнит и подскажет.
987 2476426
Хочу назвать таблицу БД Image, как избежать конфликтов имён?
988 2476430
>>476426
Назови её images.
989 2476558
Почему не грузится?
изображение.png11 Кб, 1071x228
990 2476559
991 2476564
Уважаемые, кто знает где достать BufferedStream который имел бы динамический размер буфера, или хотя бы позволил один раз поменять его размер? А то мне нужно в потоке сначала взять небольшое число байт и принять решение с какого места продолжать чтение большими блоками.
992 2476572
Работяги хотел кое-что спросить в профессиональном плане.
Я сейчас работаю в финтехе, пишу под мобилке на кросс платформе(Flutter). Вакансий по стране(не снг) не так много, штук 15. Возвращаться в Андроид натив не хочу, так как не хочу работать в узком направлении и запирать себя на определенной платформе.
Я думал перейти в бекенд. Думал о Java либо C#, так как nodejs, golang это не то. Посмотрел как изменился сишарп за последние годы, очень впечатляюще да и вакансии есть

Стоит тратить время и переходить в С#?
Можно теоретически если подтяну знания попробовать податься на мидла или нужно с джуна начинать?
993 2476601
>>476558
Короче всё, без впн доступа к серверам майков больше нет.
994 2476683
>>476572

>Стоит тратить время и переходить в С#?


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

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


Скорее на мидл++, т.к. в финансах сейчас только опытных набирают. В некоторых банках уже ниже ведущего разраба и нет никого. Джунам там точно ничего не светит.
995 2476700
>>476683
А не будет смущать работодателя, что опыта в беке нет? Либо стоит немного приукрасить резюме?
996 2476701
>>476683

> ниже ведущего разраба и нет никого


И кого же ведёт этот ведущий, если никого нет?
997 2476799
>>476701
Про голландский штурвал не знаешь?
998 2476833
>>476799
Но никого же нет, он один там "ведущий". Причём тут твой гейский штурвал?
999 2476874
Котаны, насколько сейчас C# и .net core в частности даёт проспаться джаве?
Правильно ли я понимаю, что благодаря последним изменениям и переходу к кросплатформе, нет смысла использовать джаву в новых проектах?

Насколько это верно? Стоит ли ожидать увеличение вакансий в будущем?
1000 2477002
>>476874
Отмотай время на три года назад и сравни сколько вакансий было в 2020-м и сколько в 2021-м. Вот и ответ на твой вопрос. 2022-й год по понятным причинам в обзор не берем.
1001 2477013
>>477002
Но брать 22 нужно. Фиг уже знает что будет дальше. Мелкософт не показал себя непредвзятым.
1002 2477026
>>477013

>Но брать 22 нужно. Фиг уже знает что будет дальше.


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

>Мелкософт не показал себя непредвзятым.


Да и похуй совершенно. Core сейчас позволяет полностью вести разработку совсем не касаясь майковской инфраструкту.

Я тебе даже немного инсайдов подкину. В тех же банках, которые подпали под санкции, спокойно продолжают наяривать на дотнете и переводить старые/разрабатывать новые проекты на .net6 и даже, сюрприз, корпоративные лицензии на студию 2022-ю покупают. Сервера только с винды, на линуксы потихоньку переводят, там где еще не перевели, но и то, в основном, из соображений экономии.
1003 2477032
>>477026

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


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

да и что банки
и в те банки, что уже есть, не попадешь (а новых не будет)
1004 2477050
Студия предлагает исправить первый пик на второй, но по мне так он куда менее очевиден, разве я не прав?
javaiscobol.png421 Кб, 900x900
1005 2477061
>>476874
Мне и многим другим приходилось есть жабу, так как альтернатив не было (выше скрипты, ниже кресты). Потом высрали го, но даже после топорной жабы на нем было больно что-то делать, но этот "вентиль" был открыт и часть комьюнити все же хлынуло туда под напором и у нас появилась хоть какая-то альтернатива этому болоту на жабе. А теперь появился нормальный современный и развивающийся язык, с похожим на джава синтаксисом и стало легче.

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

PS Была какая-то надежда на котлин, но он почти полностью тянет джава инфраструктуру, от чего воняет той тем же болотным тырпрайзом.
1006 2477070
>>477050
не прав
1007 2477073
>>477050
Второй очевиднее и проще в поддержке.
1008 2477096
Шарпаны, как в студии добавить файлы в игнор при quick fix рефакторе? Например я нажал на кнопку apply in project scope, но я не хочу чтобы он шел по некоторым файлам, т.к. это у меня сырые жирные хтмлки на которых он виснет и непонятно почему туда лезет если фикс касается шарп кода.
1009 2477329
Ребят, есть куча классов в домене - которые я ентити фреймворком загружаю в постгрес (типа кодфёрст). В этих классах есть интовые проперти (а может еще какие value типы), которые я не могу сделать nullable, иначе могут ошибки появиться в текущем некроентерпрайзе. Так вот - ЕФ в постгрес все мои вэлью тайпы загружает как NOT NULL, а мне надо, чтобы он загружал просто (с возможностью null туда писать), без добавления nullable к пропертям в домене.

Может есть какие настройки в ЕФ для этого? Я чет не могу нагуглить пока
1010 2477370
>>477050
А зачем тебе is null в первой пикче? Знак вопроса уже делает сравнение. Напиши:

> return _canExecute ? true : _canExecute(parameter);


Посмотрим, что скажет студия на это.
1011 2477416
>>477329
В конфигурации для нужного поля добавь: .IsRequired(false)
1012 2477420
>>477416
Конфигурация это в моделбилдере же? А если у меня классов как говна, каждое поле всех классов так ставить? Я вот нашел такое - modelBuilder.Properties().Where(p => p.Name != "Id").Configure(p => p.IsOptional());
1013 2477439
>>476874
Тулинг в целом все еще ощутимо хуже, чем в жабе. Куча либ и инструментов работают только на винде, что-то навсегда осталось в старом дотнете.

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


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

>>476874

>Стоит ли ожидать увеличение вакансий в будущем


В РФ точно нет, в ЕС вряд ли, может быть в США, но не уверен. Про Азию ничего говорить не буду.
1014 2477443
>>473237

>Серьезно, считаю, что даже пхп будет лучше, чем жаба


Почему так считаешь?
1015 2477445
>>472932
Так если все удалили свои хедеры еще 10 лет назад, то почему популярность только падает?

А разгадка проста: народ переезжает на go, либо стартует новые проекты на go/js/python
1016 2477446
>>472163

>так и останется на подсосе у жаб и го


this.
Нет киллер фич, ради которых нужно переехать с условной жабы на шарп, если у тебя есть команды с экспертизой в жабе. Проще переехать на новую жабу.
Даже с го нет смысла перебираться на дотнет, потому как в дотнете нет тех фишек, ради которых берут гошку (виртуальные треды, прозрачный код без магии и orm, отсутствие монструозного ООП, компилируемость в бинарник)
1017 2477447
>>472163

>производительность-то какая будет в реальных условиях, без ансейф байтоебли


Обычная, стандартная, обыкновенная для бекенда. Все будет упираться в базу данных.

>>471727

>почему всем крупным компаниям до сих пор похуй на шарп


А зачем переходить, когда вся высокопроизводительная хуета уже написана на С++, круды на жабе и инфра на го? Смысл перепиливать все с нуля?
1018 2477503
>>477443
Когда кодил 14 лет назад на пхп, во многих решениях старались как-то переживать за оптимизацию, даже следили за количеством запросов в базу, оптимизировали каждый, нередко CMS выводили даже об этом инфу в футере сайтов/форумов (еще с инфой времени исполнения кода).
Мы даже писали в процедурном стиле, ибо классы в 5.2 имели некоторые ощутимые проблемы с производительностью, в отличие от массивов.

Когда перешел на жабу, увидел что всем насрать вообще на производительность. Полухолостое приложение, слоившиеся годами от рук около-студентов (по возрасту или мозгам), которое жрало планками память и тормозило, делая при этом - нехера. И это не только к внутренним продуктам, по большей части весь стек такой в джаве.
image.png238 Кб, 728x728
1019 2477518
>>477445

>Так если все удалили свои хедеры еще 10 лет назад, то почему популярность только падает?


Ты не очень умный, да? Инет за 10 лет вырос хер знает как, цифры размазываются, там пхп хоть и терял позиции по процентам, но сайтов многократно навернул.

>go/js/python


С появлением нет кора жрать говном можно уже перестать.
1020 2477521
>>477446
Го начинает сосать болт когда сталкивается с хипом 10-100-1000Гб. И шедулер не бесплатная вещь, именно поэтому го сосет во многих тестах.
Асинхронность не панацея.
13759446351850600308.png232 Кб, 559x604
1021 2477540
>>477446
Покоромлю зумера

>отсутствие монструозного ООП


Выросло поколение для которых ООП - это сложна! Помню 6 лет назад гоферы с пеной у рта затирали, что ООП у них есть.

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


Офигеть фича, ты руками деплоешь? В NET 7 теперь тоже можно в бинарь c AOT (вероятно для додиков которые по ftp руками заливают), правда в случае шарпа AOT дает прирост почти в два раза (и по памяти тоже).

>прозрачный код без магии


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

Дальше писать лень, ибо некрасиво издеваться над гоферами.
1022 2477548
Го - это кал для ебаньков.
1023 2477553
Решил запилить галерею на впф, в качестве контейнера использовал listview с wrappanel, каково же было мое разочарование, когда оказалось, что wrappanel не поддерживает виртуализацию и при открытии папки с 1000 картинок, программа отжирает 12 гигов оперативы и крашится. Хз даже что и делать, придется видимо свой контейнер пилить.
1024 2477594
>>477553
С виртуализацией там спец контейнеры. Например VirtualizingStackPanel
А потому можно взять любую реализацию VirtualizingWrapPanel и использовать ее как
1025 2477792
>>477540

> ООП - это сложна!


Он не о сложности говорит, а о монструозности. Если я правильно понимаю, речь тут вот о чём. ООП может быть простым:

> class animal {}


> class mammal : animal {}


> class human : mammal {}


> human uasia = new();


Это простой и элегантный ООП, в котором всё ясно и логично.
Но можно и выебнуться, например:

> list(list(list(list)))


> hui(pizda(koncha(kharcha())))


> hurr = durr(derp)


И ты такой сидишь, смотришь на это. А что на нём пишут? Бэк? Фронт? Бизнес-логику? - Да неее... Задачки у себя в универе решают.
1026 2477821
>>477792
Монструозное ООП это про интерпрайз решения, когда просто специфика работы заставляет пилить так, чтобы сегодня лодка, завтра - самолет.
Условные абстрактные фабрики абстрактных билдеров абстрактных фабрик, мемные бин-фактории и прочие медиаторы, врапперы, контексты и т.д.

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

А то что ты привел в пример - это нарушение закона Деметры, к ооп оно относится слабо, просто говнокод обыкновенный.

Ну и да. Я не тот чел что про это говорил. Может быть он тоже видел только плохой код под соусом ООП или вообще ИРЛ его не видел, а только слышал что оно монструозное, я не знаю. Говорю просто про особенности работы с интерпрайзом на личном опыте работы.
1027 2477822
>>477792
Шиззо, ты привел пример наследования и композиции, это как раз инструменты борьбы со сложностью и используются совместно а не противопоставляются.
У тебя каша в голове, иди читай букварь.
1028 2477825
>>477821

> Условные абстрактные фабрики абстрактных билдеров абстрактных фабрик


Во-во! Оно.
>>477822
Нет ты.
1029 2477827
>>477792

>list(list(list(list)))


>hui(pizda(koncha(kharcha())))


Это же фп, лол.
1030 2477830
>>477827
Ты разговариваешь с ребёнком не осилившим букварь по ООП, какое уж там ФП.
1031 2477839
>>477830
Нет ты.
dur.mp41,1 Мб, mp4,
1280x720, 0:09
1032 2477841
1664486917016.jpg52 Кб, 490x604
1033 2477844
>>477841
Мальчик, иди осваивай букварь.
16611027729940.webm771 Кб, webm,
640x268, 0:12
1034 2477854
>>477844
Освоил клитор твоей мамаши.
1035 2477889
>>475153
Лучше в блокчейн зашить ключи в зашифрованном виде. Так и сделаю, впрочем, гы.

Дык а что по теме? Что если на харде/флешке лежит пиздатый 640ГБ-йтный dd-образ, который может посыпаться нах, из-за парочки бед-секторов/битых ячеек.
1036 2477896
>>477889
да. но где хранить пароль (ключ) от шифра ключа
тоже в блокчейн будешь класть?
goautism2.png136 Кб, 612x401
1037 2477898
>>477792
Покоромлю зумера
Хотел тебя обоссать, а тебя уже обоссали.
ООП не панацея, но лучше когда оно есть, чем когда его нет.
Ничто не мешает писать ООП в около процедурном стиле (в жаба тырпрайзе это давно уже мейнстрим, это называется анемичная модель данных https://www.martinfowler.com/bliki/AnemicDomainModel.html )

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

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

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

И да, языки в который по стекам надо пробрасывать ошибки и нет возможности в этих ошибках развернуть стектрейс - не являются промышленными языками. Стектрейс в 100-200 функций это сейчас почти минимум для продвинутого приложения разрабатываемого в команде. Если всякие Си просто устарели для промышленного кодинга, то го и расты просто примитивные игрушечные перделки, не отвечающие потребностям современности.
image.png904 Кб, 1440x960
1038 2477906
>>477896
Ключём может быть хэш парольной фразы, а её - в башке уже несложно запомнить.
Ну или застеганографировать в какой-нибудь фотке,
с помощью алгоритма f5 steganography https://username1565.github.io/js-jpeg-steg/
А фотку уже на карты памяти раскидать и на харды, в тел засунуть, в камеру, на флешку, на магнитную плёнку стримера вхуярить, в стекле вписать там, ну хуй знает.
Но опять же, фотка может посыпатся, а вот нейроны в башке по 150 лет могут жить, какбэ.
Я даже помню нашли какую-то акулу, которой 512 лет.

Кстати, в этом контексте, а чо бы уж сразу, в нейронах не писать инфо?
Были уже опыты по сохранению бекапов внутрь нейросетей?
Уже представил себе нейросетку, выращенную в чашке Петри, помещённую в бункер, и USB/SATA-разъём, из неё выходящий. Гы.

Хотя не, вечный диск из кварцевого стикла, всё-же пижже:

>Накопитель вмещает до 360 ТБ данных и при обычной комнатной температуре работоспособен в течение 13,8 миллиардов лет.


https://invict.info/lifehacks/sozdan-5d-disk-kotoryj-smozhet-hranit-360-terabajt-informatsii-milliardy-let
Безымянный.png41 Кб, 402x800
1039 2477908
Есть какой-нибудь плагин для студии, который позволит писать вот так и приводить к такому вот стилю автоматом?
1040 2477909
>>477908
Капец
Противник скобочек в треде
1041 2477910
>>477908
Ты же ебнутый
1042 2477920
>>477906

>а вот нейроны в башке по 150 лет могут жить, какбэ


а на деле через год забудешь
1043 2478087
>>477898
Спасибо. Понял. Принял. Извинился.

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


То есть, лучше когда я в ООП-языке объявляю статик метод, чем когда я в процедурном языке объявляю процедуру Объект.Метод()? Об этом речь?
Палю лайфхак 1044 2478089
>>477908
Возьми шрифт, которым пользуешься, возьми редактор шрифтов. Замени скобачки на пробелы. Установи шрифт в студию. Профит!
installation-python-workload.png3 Кб, 444x84
1045 2478092
>>477908
Есть.
wftkotlin.png85 Кб, 700x595
1046 2478128
>>478087

>То есть, лучше когда я в ООП-языке объявляю статик метод, чем когда я в процедурном языке объявляю процедуру Объект.Метод()? Об этом речь?


Там больше плюшек, но если по твоему случаю, то да. Ты так и так будешь группировать функции в файле, почему бы не сгруппировать их статик классом, чтобы не иметь импорта по звезде как в котлине (или в противном случае портянке импортов), ну и в последующем видеть откуда вызов по типу "Class.method()", чтобы видеть что это вызов из импорта, а ее внутренний метод текущего объекта.
1047 2478132
>>478128
В нормальных языках для этого есть неймспейсы
1048 2478136
>>478132
Ты о чем вообще?
1049 2478153
>>478136
Да это какой-то левый хуй высрался.
>>478128
Спасибо. Всё так, но я по большей части в уме держал не котлин, а паскаль, в качестве процедурного бойлерплейтного контрпримера. Паскалешкольник я, азбуку паскаля читавший.
1050 2478183
>>478153

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


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

На самом деле и статик классы плохо, на практике делают обычные классы без состояний (называют их в анемичной модели - сервисы). Это дает там некоторые плюшки в плане работы с интерфейсами, DI (IoC), возможности моков в тестах и еще чего-то, но не помню уже.
1051 2478185
>>478087

>То есть, лучше когда я в ООП-языке


Лучше если дебилы вроде тебя съябут нахуй из профессии, а не то что в ООП-языке. Т.е. дебилов вроде тебя даже в процедурных языках быть не должно.
1052 2478417
>>478185
А я и так не в профессии. Я - любитель.
1053 2478575
>>478417
Любитель поесть говна?
1054 2478779
>>478132
Вообще то то, что на скрине, и есть "как в неймспейсах"
А не такой пипец в шарпе не потому что неймспейсы
а потому что нельзя методы и переменные держать вне класса, поэтому вынужден писать имя класса в коде, что чуть более информативно (для блокнота конечно) откуда оно.
1055 2478792
>>478183

>что не всегда функции это прям круто, хотя иногда и удобно



Вообще то вполне нормально, если язык заточен под DSL и при этом DSL является легальным кодом. Оно как раз читается лучше
И пример на скрине превосходно читается, то какой то школьник не знает основ языка.
1056 2478891
Есть готовые решения, чтобы впендюхать Wireguard в приложение с .net?
1057 2478994
>>478792
На практике, без доки, эти DSL понятно как писать только авторам самого этого DSL. Код без IDE выглядит как чистая магия. Лесенка из лямбд вложенная в лямбды, нехера это не круто, у тебя вместо вертикального последовательного кода получается какой-то горизонтальный звездец и тебе приходиться читать весь этот каскад кишков.

Единственное, наверное, будет круто гуишки описывать так, но опять же тебе придется доку писать и проверять валидность значений, обязательные и необязательные параметры, в общем все то, что ты бы делал и с псевдоязыком. Котлин DSL для DSL слишком кастрированный и ничего кроме каскадной вложенности не дает.
1058 2479005
>>478994

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


Какого еще последовательного кода. На пике декларативное описание конфигурации.

Кстати в asp.net core точно такой же
Только в асп что то типа services.AddFeature() вместо install(Feature)
но это просто семантика так выбрана - фактически в обоих случаях используется метод расширение + метод билдер.
Просто в котлин лямбда блок переданный как последний параметр можно писать так и this в этой лямбде можно не писать.
поэтому выглядит магически. Но это самые обычные лямбды.

Я и в шарпе могу так сделать, просто из-за необходимости явно использовать в лямбде объект (не могу его сделать как this) будет больше шума (плюс или минус это - спорно)

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


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

>проверять валидность значений, обязательные и необязательные параметры


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

>но опять же тебе придется доку писать


Ничем не отличается от шарпа. В том же асп.нет коре в самом его рождении когда видел всякие куски кода типа
services.AddFeature() на гитхабе, то копировал, а оно красным горит - потому что нужно подкинуть пакет какой-то, в котором нужный метод расширение AddFeature
а поди узнай какой. Даже знание неймспейса не дает знание где оно.
Позже стабилизировалось, потому что все это распихали в метапакет или же НАПИСАЛИ ДОКИ, но кошмар "я тут скопировал кусок кода и он не компилится" - такой же и причины те же.

>Котлин DSL для DSL слишком кастрированный и ничего кроме каскадной вложенности не дает.


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

>будет круто гуишки описывать так


О да. jetpack compose охеренно крут именно из-за того что язык заточен под DSL
Шарп такое увы не сможет - всего вышеописанного добра в нем просто нет.
Впрочем, поскольку мауи это наследник замарина, то они этим путем и не пошли даже, но если бы пошли, то получилось бы сильно не так изящно.
1058 2479005
>>478994

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


Какого еще последовательного кода. На пике декларативное описание конфигурации.

Кстати в asp.net core точно такой же
Только в асп что то типа services.AddFeature() вместо install(Feature)
но это просто семантика так выбрана - фактически в обоих случаях используется метод расширение + метод билдер.
Просто в котлин лямбда блок переданный как последний параметр можно писать так и this в этой лямбде можно не писать.
поэтому выглядит магически. Но это самые обычные лямбды.

Я и в шарпе могу так сделать, просто из-за необходимости явно использовать в лямбде объект (не могу его сделать как this) будет больше шума (плюс или минус это - спорно)

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


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

>проверять валидность значений, обязательные и необязательные параметры


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

>но опять же тебе придется доку писать


Ничем не отличается от шарпа. В том же асп.нет коре в самом его рождении когда видел всякие куски кода типа
services.AddFeature() на гитхабе, то копировал, а оно красным горит - потому что нужно подкинуть пакет какой-то, в котором нужный метод расширение AddFeature
а поди узнай какой. Даже знание неймспейса не дает знание где оно.
Позже стабилизировалось, потому что все это распихали в метапакет или же НАПИСАЛИ ДОКИ, но кошмар "я тут скопировал кусок кода и он не компилится" - такой же и причины те же.

>Котлин DSL для DSL слишком кастрированный и ничего кроме каскадной вложенности не дает.


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

>будет круто гуишки описывать так


О да. jetpack compose охеренно крут именно из-за того что язык заточен под DSL
Шарп такое увы не сможет - всего вышеописанного добра в нем просто нет.
Впрочем, поскольку мауи это наследник замарина, то они этим путем и не пошли даже, но если бы пошли, то получилось бы сильно не так изящно.
1059 2479025
Шарпаны, помогите стать фрилансером. Суть такова - сейчас немношко кодю в одной организации и накодил для них бота для телеги. Бот понравился там кое-кому из сотрудников, дескать кому-то из его знакомых нужен аналогичный и возник вопрос - смогу ли повторить? Накодить то не проблема, но где его потом хостить? Первого то на серверах кампании разместил, а со сторонними заказчиками что делать? Арендовать им виртуальный, запихать туда и типа нате, плотите ежемесячно? А это не моветон? Где-то н бесплатном? А там проблем с производительностью не будет? Что делать, как быть? Какие вообще годные сервисы для хостинга на дотнете есть?
1060 2479028
>>479005

> На пике декларативное описание конфигурации.


Тем временем на пике:

> установи установи установи, получи, вызови

1061 2479032
>>479025
Нам-то это зачем обесняешь? Сотруднику - халявщику это обесняй:

> Для нужд организации юзается инфраструктура организации. Для нужд твоей бляди ты мне подгоняешь инфраструктуру и я на ней тебе бота поставлю. Вопросы оплаты инфраструктуры (сервака) ты решаешь сам со своей блядью.

1062 2479045
>>479028
признаю.
просто я под влиянием jetpack compose, который хоть и выглядит как императивный код, но является декларативным по сути.

но все же не все однозначно - install может сам выполнять конкретную работу (то есть быть императивным), так и быть просто контейнером описания конфигурации
image.png43 Кб, 650x453
1063 2479337
Как мне подчеркнутый вар снаружи код блока использовать? Задавать до код блока не помогло. Я еще пытался using использовать, но .Net такое не поддерживает.

Алсо https://learn.microsoft.com норм для старта? я посмотрел дотнет из шапки, там вроде все то же

4 день изучения btw
1064 2479338
>>479337
цель задания - реверснуть буквы в словах, но слова оставить в том же порядке
1065 2479360
>>479337

>Задавать до код блока не помогло


помогло, просто ты не захотел принять помощь.
image.png183 Кб, 1366x768
1066 2479372
>>479360
в каком смысле? Пока что просто выдает еще ошибок. Надо как-то по-другому задавать?
1067 2479385
>>479372
надо на котлин переходить. ну или на го.
внутри блока убери обьявление новой переменной, тоесть БЕЗ слова string
1068 2479389
>>479372
в прямом. если переменная не видна снаружи блока
значит и задавать ее нужно снаружи блока.
1069 2479397
>>479372

> Надо как-то по-другому задавать?


Надо инглиш учить.
1070 2479414
>>479385
вот зачем ты ему подсказал
теперь он ничему не научится.
1071 2479518
>>479414
Так хули там учится?
как до замыканий дойдет - там и заинтересуется скопами
Если на такой хуйне страдать, то перегоришь и пойдешь в шлюхи
1072 2479600
>>479518
если перегоришь, то значит в программисты лучше и не идти.
Несчастливы те, для кого это "айтишнике норм зарабатывать я тож хочу"
Правда несчастливы и те, кому это в радость
1073 2479638
Как перенести вкладку с первого пика на второй?
1074 2479646
>>479638
Разобрался
124851078928.png45 Кб, 521x500
1075 2479731
>>479600

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


>Правда несчастливы и те, кому это в радость


Соснули все
16616289798600.webm9,7 Мб, webm,
640x360, 0:36
1076 2480423
Здравствуйте, господа. А вот в связи с уходом всяких заморских компаний с рынка РФ перспективы в С# программировании есть?
1077 2480442
>>480423
Нету перспектив - все сдохло. Забудь про шарп.
Майкрософт уже все заблокировал, а в дальнейшем вообще будет закладки делать, так что все российские компы просто взрываться будут если на них хоть один их продукт будет установлен.
Пиздуй 1С учи.
Алсо, если ты такие тупые вопросы задаешь, то программирование, это скорее всего не твое.
1078 2480447
>>480442
Я си шарп начал учить из-за того, что у него логотип прикольный.
1079 2480478
>>480442
Ловко ты от конкуренции избавляешься
1080 2480541
>>480478
Скорее от душнил, которые вместо работы будут доебывать идиотскими вопросами.
1081 2480663
Через несколько дней собеседование, сразу сказали, что будут спрашивать об ООП, можете подкинуть исчерпывающий материал на эту тему?
1082 2480690
Что за миграции надо генерировать для асп? Нафига они нужны? Почему это выглядит так инородно, как-будто пришили эту фичу в последний момент?
1083 2480737
За сколько месяцев можно вкатиться в шарп, если знаю джава кор?
Сильно ли сложные тут фреймворки?
Нужно ли знать англюсик?
Правда ли, что надо будет учить ещё фронт? Я не хочу на фронт, а хочу заниматься бэком.
1084 2480740
>>480690
Че-ел, ты тупой.
1085 2480742
>>480740
Почему нельзя самому писать sql-запросы, а обязательно надо наворачивать тонну автосгенерированного кала?
1086 2480757
>>480737

>За сколько месяцев можно вкатиться в шарп, если знаю джава кор?


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

>Сильно ли сложные тут фреймворки?


Не сложнее джавовских.

>Нужно ли знать англюсик?


Лучше знать чем, не знать.

>Правда ли, что надо будет учить ещё фронт? Я не хочу на фронт, а хочу заниматься бэком.


Да. Сразу клади хуй на все что связано с десктопом (WPF, Winforms) и на все где есть слово MVC. Учишь ASP.Net строго до уровня WebApi и идешь в бэкэндеры. Хотя подучить фронт не помешает на уровне HTML, CSS и что-нибудь вроде React-а, просто, чтобы быть в курсе как там все работает, ну и при отладке больше возможностей иметь.
1087 2480763
>>480742
Во первых можно.
Во вторых ты долбоеб не понимающий сути механизма миграций. И то, что они вообще не имеют отношения к тому используешь ты ORM или нет.
1088 2480772
>>480763
Дак никто про них не пишет. Фримен говорит, что делайте миграции, а зачем они - не поясняет.
image.png350 Кб, 837x801
1089 2480783
1090 2480785
>>480772
Ну наверное потому что миграции - это механизм не из ASP.Net
1091 2480804
>>480785
А откуда?
1092 2480805
>>480804
Из EF.
1093 2480806
>>480804
Из ORM, а по дефолту для асп.нет это EF
вот к нему и относится.

А так пиши миграции как хочешь. Многие вон (то есть я 1 и еще несколько во всем мире) вообще не юзают EF
1094 2480825
>>480757
А почему React, а не Angular? Я слышал, что как раз последний совместим с ASP.NET.
1095 2480837
>>480541
Почему во всех тредах форсят шарп, а в самом треде по шарпу обижают вкатутосей?
1096 2480848
Вот микрософт форсит свой продукт, что всё доступно из коробки, но при этом надо всё равно из каких-то репозиториев догружать кучу библиотек. Нельзя было их включить в дотнет?
1097 2480851
Как вы изучали юнит-тестирование? Действительно ли, что сам программист на сишарп должен писать юнит-тесты, а не специальный юнит-тестировщик?
1098 2480867
Стоит ли читать Рихтера в 2023 году?
1099 2480878
>>480825
Да х.з. просто я за всю карьеру только с реактовым фронтом связывался. Ну и насколько я понимаю Angular уже вроде как приближается к статусу "говно мамонта", чтобы начинать его учить. А vue используется меньше чем react.
>>480825

>Я слышал, что как раз последний совместим с ASP.NET.


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

>Нельзя было их включить в дотнет?


Нельзя, на то они и библиотеки, что не всегда нужны

>>480851

>Как вы изучали юнит-тестирование?


Нинужно. Интеграционные тесты нужны.

>>480867
50/50, но скорее стоит ознакомиться
1101 2480886
>>480837

>обижают


Пусть сядут в уголок и поплачут.
1102 2480894
>>480851

>Как вы изучали юнит-тестирование?


Что-то почитал, что-то посмотрел. В основном чужой код изучал.

>Действительно ли, что сам программист на сишарп должен писать юнит-тесты, а не специальный юнит-тестировщик?


Чтобы писать юнит тесты нужно как минимум быть разрабом, а садить целого разраба только на юнит тесты дохуя дорого будет.
Просто не стоит переоценивать юнит тесты, а четко понимать, что и как ими тестировать. Где-то они будут просто бесполезны, а где-то прямо в самую писечку подойдут. Например для каких-нибудь кастомных мапперов это вообще маст хэв.
1103 2480943
>>480880
Почему EF не включили в состав дотнете, а приходится его закачивать как левую библиотеку от каких-то васянов?
1104 2480944
Как вы привыкали к тому, что надо ставить фигурную скобочку { в новой строке, а не на той же? Ещё заглавные буквы для методов не привычны, всё таки с маленькой выглядит элегантнее.
1105 2480946
>>480878
Блин, ещё реакт учить...
1106 2480947
А реально ли программировать на сишарпе в линуксе или надо ставить виртуалку с виндой?
1109 2480952
>>480947
Нужна физическая винда обязательно, ни на какой виртуалке шарп не заработает.
1110 2480953
>>480952
Он даже виртуалку роняет?
1111 2480959
>>480944
Настраиваешь .editorconfig и IDE сама все расставляет.
Алсо джавовский стиль, когда скобка оставляется на предыдущей строке (он же K&R) очень уебищен. Говорю как работающий сейчас и с ним и со стандартным шарповым стилем (Олман)
Олман в сто раз лучше.
1112 2480963
>>480943
Потому что EF может быть слишком медленный и нужен будет Dapper. Потому что может быть no-sql БД. Или БД не будет вообще. Так нахуя подгружать в проект ненужную библиотеку, которая будет только нагружать процесс?
1113 2480965
>>480959
Ну чем джавовский плох, а шарповский хорош?
Вот я вижу, что теряется лишняя строка и код становится объемнее. Учитывая, что ещё и методы с большой буквы, то кажется, что у тебя просто куча кода. Хотя то же самое в джаве куда компактнее.
1114 2480968
>>480805

>Из EF.


>>480806

>Из ORM, а по дефолту для асп.нет это EF


Да с хуя ли это из ORM, это один из паттернов при работе с реляционными БД связанный с версионированием. Ты можешь вообще с чистым sql работать и все равно использовать механизм миграций. ORM просто позволяют этот процесс автоматизировать. Те же EF или даппер можно использовать в режиме pure sql, отдавая ему на откуп только версионирование базы в соответствии с моделями данных. Т.к. писать эти миграции руками та еще ебанистика.
1115 2480969
А вы читаете мурзилки?
1116 2480975
>>480969
Здесь не знают, что это такое.
1117 2480977
>>480949
Ну кстати соглашусь с Фленовым, что все эти прослойки не нужны. SQL сам по себе норм язык, дак нафига заменять его на всякие ORM-ки.
1118 2480983
>>480965

> а шарповский хорош?


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

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

>>480965

>Вот я вижу, что теряется лишняя строка и код становится объемнее.


Во первых нехуй байты и строки экономить. Во вторых если тебе прямо так жмет, то можешь в студии экстеншен вроде Shrink Empty Lines, который уменьшает пустые строки и строки со скобками/знаками и т.д. (вобщем без кода) по вертикали и они намного меньше места занимают.

>>480965

>Хотя то же самое в джаве куда компактнее.


В пизду компактность если она мешает читаемости. Потом в любой момент можно все ненужные блоки свернуть по хоткею и разворачивать только то, что нужно.
1119 2480984
>>480977
Да-да, только дебажить его заебешься. Ну и на большом проекте при изменении чего-нибудь одного может все пиздой накрыться, т.к. хер ты узнаешь, что какая-то стопитсотая хранимка не соответствует новой модели.
1120 2480993
>>480949
ну он уходит в другую крайность
и вообще все в кучу свалил. репозиторий вообще перпендикулярен и так же используется с даппером - это просто класс "где будут методы для такой то сущности, а внутри даппер или что угодно"

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

А так даппер как легковесный маппер, но по возможности генерация sql с помощью LINQ, только тут не цель абстрагироваться от SQL максимально, а всего лишь использование Expression как спецификаций.

Чистый SQL...чист, но морока править если имя колонки изменилось и вообще собирать эту строку. Тут можно взять примитивный билдер, а потом добавить в него expression и получим LINQ )))

Есть еще подход как вот FastCRUD, но он как то вырвиглазно получается.

>>480963

>Потому что EF может быть слишком медленный и нужен будет Dapper


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

>>480968

>Ты можешь вообще с чистым sql


ты можешь делать что угодно, но первоначальный вопрос был "что за миграции такие в асп.нет вон в книжках о них пишут". А это как раз EF и его миграции
1121 2481006
>>480943
Потому что смысл нет кора в модульности.
1122 2481020
А как в ASP.NET можно управлять бинами в контексте? К примеру, я создал свой класс и как мне его поместить в контекст, чтобы потом он внедрился в другой класс?
1123 2481025
1124 2481027
async/await круче горутин в голанге?
1125 2481030
>>481027
Оба так себе.
csharplinux.png21 Кб, 634x309
1126 2481035
>>480952
Хеллоу ворлд вроде запустился
1128 2481230
>>480952

>Нужна физическая винда обязательно


А химическая винда не подойдёт?
1129 2481244
>>481230
Биологическая винда.
1130 2481245
>>477920
А я напоминалку пооставлю в тилибоне, чтобы нейрончики будоражить в ячейках ассоциативной памяти с адресацией по содержанию и короче какбэ чтобы память себе освежать. Пусть тилибонькает раз в месяц, хуйле.
1131 2481376
Нужно ли учить IL-код?
1132 2481388
>>481376
Тебе нет.
1133 2481390
>>481388
Я в универе с удовольствием программировал на ассемблере и вообще люблю такое ковыряние в байтиках.
1134 2481397
Как принято распределять код по файлам и папкам? В джаве есть жесткие требования, что файл - это имя класса, а папка - пакет. А тут как?
1135 2481420
>>481397
В шарпе похуй. Т.е. имя класса может не совпадать с именем файла. Но, крайне рекомендуется, чтобы оно совпадало. По крайней мере на реальных проектах тебе точно предъявят если они будут различаться и попросят обосновать.
Если в файле несколько классов, то обычно файл называют по первому классу.
С именами каталогов/проектов та же фигня.
1136 2481431
>>481390
Ну если только для удовольствия и ради познавательного интереса.
Я сам старый байтоеб и до сих пор иногда на ассемблере пишу в качестве хобби. IL я потрогал ровно в той степени, чтобы понимать при случае что это и как с ним работать. Ну и просто посмотреть во что в итоге высокоуровневый код превращается. Но в реальной работе это ни разу не понадобилось.
16578132809960.jpg266 Кб, 720x1096
1137 2481459
>>481035
Не говори об этом больше некому.
1138 2481473
>>481056
Хуясе, он че жив?
1139 2481491
Дак стоит учить Blazor?
https://youtu.be/cT65oHRPckw
image.png33 Кб, 1319x197
1140 2481564
Что значит это предупреждение?
И как его правильно обработать?
1141 2481577
Вот вы метанит-метанит, а там все примеры созданы в расчете на вижлу, которая только под виндой. А кто хочет программировать на линуксе, не может использовать метанит.
При этом многие новые книги зарубежных авторов стали ориентироваться больше на вс код и консольные команды.
1142 2481578
>>481577

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


В новом издании Прайса наоборот автор выкинул vs code и перешёл на студию.
1143 2481651
>>481473
Ещё бы Фримена новую книгу перевели
flenov.jpg135 Кб, 1280x720
1144 2481664
1145 2481739
>>480423

>срынок пидорахии


Проиграй. Просись к заморским баринам в ЛЮБОМ случае
1146 2481840
>>481739
Хохол, спок.
1147 2481940
Вот C# Core учится легко и быстро, а на ASP.NET буксую, потому что не понимаю зачем нужны все эти конфигурации, миграции, сервисы.
Как вы учили ASP.NET?
1148 2482020
>>481940
ASP.Net вообще один из самых легких фреймворков для освоения. Он хорош тем, что с ним можно начать работать не зная и половины его возможностей.

>конфигурации, миграции,


Это не часть ASP.NET

>сервисы.


А это вообще просто способ/шаблон проектирования.
Ты можешь на ASP написать приложение вообще без единого сервиса запихнув всю логику в контроллеры. Это правда совсем говнокодисто будет, но сделать так можно.
1149 2482043
Сап работяги, столкнулся с EF core багом когда он пытается через async читать varbinary с базы - ловит лютую просадку по перфомансу в 10-20 а то и больше раз. Чтение с базы у меня на гет апи контроллере. Вот тред:
https://stackoverflow.com/questions/28543293/entity-framework-async-operation-takes-ten-times-as-long-to-complete

Вопрос, что лучше использовать - просто убрать async с контролера или завернуть его в TaskCompletionSource? Или может итт знают какой-то лучше вариант?
1150 2482291
Поясните за json сериалайзеры, конкретно Newtonsoft и System.Text.Json.JsonSerializer? В тырнете пишут второй по бенчмаркам быстрее, алсо еще заметил что второго есть поддержка стримов которые работают еще в полтора-два раза быстрее чем просто десериализация строки. Есть ли какой-то профит юзать Json.Net если мне не нужны его дополнительные фичи?
1151 2482419
>>482291
первый фичастее, второй экономнее в плане алоков и быстрее (но не самый быстрый), но менее фичастый.
1152 2482489
>>481027
Нет. Голанг как раз хорош тем, что не делит функции на синхронные и асинхронные.
1153 2482510
>>480949
ORM не нужны в 2022 году.
1154 2482536
>>482510
альтернатива?
1155 2482537
1156 2482540
>>477503

>классы в 5.2 имели некоторые ощутимые проблемы с производительностью, в отличие от массивов


Странно слышать про сравнение производительности классов и массивов, когда это соврешенно разные вещи.

>увидел что всем насрать вообще на производительность


В чем это конкретно проявлялось?
1157 2482541
>>477518

>С появлением нет кора жрать говном можно уже перестать.


Нет кор появился несколько лет назад, но народ до сих пор жрет говно в виде go и js. В чем причина?
1158 2482542
>>482536
Обычный SQL. Один хуй никто базу данных менять никогда не будет. Ну разве что вы на оракле сидели, а тут петух в жопу клюнул и пришлось на постгрес мигрировать в сжатые сроки.

>>482537
Двачую.
1159 2482544
>>482542
Так ORM используют не потому что хотят облегчить миграцию между бд.
1160 2482545
>>482541
Дотнет кор опоздал везде. Да и до сих пор нет нормальной кроссплатформенности как в джаве.
1161 2482572
>>482510

>ORM не нужны в 2022 году.


Нахуй тебя.
>>482537

>SQL


И тебя.
>>482542

>Обычный SQL.


И тебя тоже.

В рот ебал я при вечно меняющихся требованиях бизнеса постоянно перебирать код на вашем SQL-е. И ебаться с его отладкой потом. Спасибо, наелся.
1162 2482579
>>482541
Тяжелое наследие маркетинга по майкрософтовски. Народ до сих пор им не верит и думает, что еще чуть-чуть и они опять включат свой агрессивный ЕЕЕ и всех повяжут.
Примерно так же как и с гуглом. Т.е. все конечно пользуются потихоньку go, стартапчики там всякие и т.д. Но в уме упорно держат, то что это гугл и завтра он с ненулевой вероятностью скажет "Нам надоело, нахуй го, мы его закрываем"
1163 2482580
>>482572
Отговорки.
1164 2482693

>EntityFramework


>2k22


>не юзать божественный linq2db



>а пачиму EF не в стандартной библиотеки


>да я вообще голый SQL пишу



Суть треда.
1165 2482704
>>482693
Можно подумать у большинства тут есть хоть какое-то право выбора чем пользоваться. Выбирать стек удел архитекторов, а макаки уже будут жрать, что дают и писать как им скажут.
1166 2482721
Как проверить, содержит ли один массив строк другой? Есть какие-то стандартные методы для таких коллекций?
1167 2482737
>>482704
С таким мышлением ты никогда не станешь архитектором.
1168 2482779
>>482721
var isSubset = !collection2.Except(collection1).Any();
var isSubset = collection2.All(a=> collection1.Contains(a));
Не знаю, что у тебя за задача, но поиграйся с linq
1169 2482783
Планирую написать пет-проект который будет отключать GC. Куда потом пытаться с таким проектом можно резюме кидать? Лиды уважать будут?
1170 2482784
>>482779
Я уже избавился от необходимости проверки, но всё равно спасибо

Теперь есть другой вопрос. Есть возможность собрать шарповое приложение так, чтобы оно не зависело от наличия .NET рантайма в винде? Чтобы у меня был абсолютно топорный бинарник, без зависимостей и бла-бла
1171 2482786
Аноны, нужна пояснительная бригада. Объясните, пожалуйста, понятным русским языком - что такое преобразование типов в наследовании где еще используются операторы as и is и нахуй оно нужоно? Посмотрел уже несколько раз пару видосов на ютубе, и не понял, наверное, даже 10%. Что человек делает на пикриле? Зачем при создании объекта материнского класса он использует конструктор дочернего, если методы из него все равно нельзя использовать? Что делает 30 строка? В новый объект дочернего класса запихивает объект материнского, созданный при помощи конструктора того же дочернего класса? Зачем тут (Point)? Зачем вообще эти шуешные многоходов очки?
1172 2482789
>>482786
Продолжай накачивать мозги сишарпом и понимание однажды придёт.
Хотя на самом деле мозг лишь выходит на нужную частоту, а знания подгружаются из космоса.
1173 2482792
>>482789

>Продолжай накачивать мозги сишарпом и понимание однажды придёт.


Я бы с удовольствием. Только наследование - основополагающая тема, и если я пойду дальше, нормально не разобравшись с ней, ничего хорошего из этого не выйдет.
1174 2482806
>>482786
Ну ты открой троелсена, там всё написано.
1175 2482807
>>482786
Вот то, что тебе нужно понять, чтобы понять код выше:
1. explicit и implicit приведение типов
2. upcast и downcast
3. boxing/unboxing (ты можешь посмотреть на то что это на сайте sharplab.io, справа надо будет выбрать "IL" и вникать в инструкции IL кода в нужном тебе методе)
1177 2482828
Почему моя говнософтина может не запускаться с флешки? Она использует доступ к файлам, но без абсолютных путей
1178 2482836
>>482828
Отбой, я понял. Оно хочет либу с собой потянуть. Как мне встроить либу в экзешник без ебли?
1179 2482838
>>482836
self-contained надо указывать во время публикации, либо вместе с экзешником dll-ку тащить
1180 2482839
>>482783
отключение GC предоставляется искаропки. что тут сложного то?
1181 2482844
>>482838
В гробу я видал таскать с прогой ещё и либы. Я ж поэтому и спрашиваю, как мне влинковать всё в экзешник, как в тех же плюсах?
1182 2482847
>>482839

>отключение GC предоставляется искаропки


Это залупа. Предоставляется отключение GC в рамках какого-то региона в коде, но не в целом.

>>482844

>Я ж поэтому и спрашиваю, как мне влинковать всё в экзешник, как в тех же плюсах?


Я же говорю, self-contained надо указывать во время публикации проекта
1183 2482853
>>482847
И где я его публиковать буду, не подскажешь?
На самом деле я нихуя не понимаю, где это выставлять, и как это повлияет на экзешник
1184 2482857
>>482853
На 2 пике надо везде жать "далее" и "финиш"
1185 2482861
>>482853
>>482857
Еще это можно сделать через командную строку если у тебя не VS:
https://learn.microsoft.com/en-us/dotnet/core/deploying/
1186 2482864
>>482857
>>482861

Я в перерывах между нытьём уже успел через консоль попробовать. Получилась один в один та же хрень. Дллка и экзешник, хотя указано как селфконтейнед
1187 2482868
>>482864
Тебе надо self-contained executable
https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-publish

Вобщем поебись с тем что на скринах, я давно не тестил, но это 100% рабочий способ, я им пользовался в 22 студии
1188 2482874
>>482868
Уже поебался, спасибо. Завелось
1189 2482890
>>482784
Гугли AOT компиляцию.
Хотя я думаю там тоже будут ограничения, вроде использования рефлексии и т.д.
1190 2482901
>>482847

>GC в рамках какого-то региона в коде, но не в целом.


вжух и считаем весь код одним большим регионом. Кто тут в сеньоры крайний?
1191 2482902
>>482901

>вжух и считаем весь код одним большим регионом.


Ебало своё имаджинировал когда у тебя в проекте будет 500 файлов?
1192 2482903
>>482901
На, почитай, это не #region какой-нибудь, это метод который вызывается в других методах. В каждом будешь ставить вызов этого говна?
https://learn.microsoft.com/en-us/dotnet/api/system.gc.trystartnogcregion?view=net-6.0
1193 2482905
>>482902
какая разница сколько файлов
>>482903
оберну метода Main
1194 2482936
Как можно порезать экзешник, не порезав функциональность? Что в программе на 50 строк должно тянуть на 130 мегабайт нахуй?
1195 2482939
>>482936
Весь рантайм дотнета, ведь так не хочется тащить dll-ки.
1196 2483048
>>482786

> Объясните, пожалуйста, понятным русским языком


> нахуй оно нужоно?


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

> List<IDvacher> dvachersList = new();


> while (Watch.IsWatching(OnDvach)) {


> dvachersList.Add(AbstractTaschMayorFactory.GetMimokrock());


> }


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

Если ты пришёл в шарп и вообще в дотнет за компактными однофайловыми приложениями, то это ты ошибочно пришёл. Здесь другие ребята. Мы собираем ПРОЕКТЫ, ПРОЕКТИЩА, с кучей либ, которые запаковываем в инсталлеры, которые после загрузки и запуска пользователем чекают пререквизиты и предлагают юзеру докачать при их отсутствии.
1198 2483133
>>482939
Его же можно как-то вырезать, полагаю. Сократить до необходимого

>>483056
Лучше уж плюсы
1199 2483139
>>483133
Хеллоу ворд на плюсах со статической линковкой будет весить несколько мегабайт.
1200 2483198
>>483139
Это если не знать про strip и флаги оптимизации.
1201 2483237
Откопал вот такой вот прикол, сейчас буду смаковать. В планах подрочить математику чтобы вкатиться в алгосы. Планирую вкат в майкрософты, правда я пока что пердикс 20 лвл.
https://github.com/dotnet/coreclr/tree/775003a4c72f0acc37eab84628fcef541533ba4e/Documentation
1202 2483270
>>483237
Мало того, что депрекейтед все уехало в другую репу, так еще и куча невнятных статей из нулевых и 10-х годов. Зачем ты это притащил сюда?
1203 2483272
Реально ли запилить софтину, которая будет исполнять разный код в зависимости от оси, на которой она вертится?
1204 2483279
>>483272
#IFDEF 2CH
Реально.
#ELSE
Нереально.
#ENDIF
1205 2483283
>>483272
Через System.Environment.OSVersion можешь определить, какая у пользователя винда, а дальше через if/else.
1206 2483325
>>483133
походить там около опции
<PublishTrimmed>true</PublishTrimmed>
и доки почитать, а то оно натримает )
https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trimming-options
1207 2483369
Нафига в сишарп напихали столько сахара? Ладно бы ещё это выглядело как-то органично, а то некоторые конструкции выглядят как говорится - не пришей пизде рукав...
1208 2483371
>>483369
Ты о чем? Весь сахар понятный абсолютно.
1209 2483387
>>483369
Тупой вопрос. Ровно затем же зачем вообще появились языки программирования. Чтобы человек мог объяснить машине, что он хочет от нее на более понятном для себя языке и с наименьшим числом смысловых единиц.
Апофеозом всего этого будет один единственный метод DoPizdato()
1210 2483390
>>483371
понятный != изящный
1211 2483391
>>483390
Он и изящный, и понятный.
1212 2483399
>>483391
синдром утенка
1213 2483403
>>483399
Я после крестов, петухона и жабы удвою, что изящный и приятный.

мимо
1214 2483411
Почему не переводят новую книгу Фримена по АСП?
1215 2483414
>>483411
Потому что читай в оригинале.
1216 2483420
>>483399
Весь сахар в C# - ахуенен, я не могу привести ни одного примера сахара который бы выглядел хуёво или непонятно. Лямбды понятны интуитивно если у тебя больше 9 классов образования или хотя бы ПТУ где давался матан. Авто-свойства тоже понятны: генерятся backing field и 2 метода get set. Различные *=, +=, -=, /= пришли вообще из других языков которым по сто лет и так же являются интуитивно понятными. Сахар над событиями точно такой же как и над свойствами. Сахар с проверкой на null: myDelegate?.Invoke() - тоже понятен если его один раз увидеть. Оператор ?? тоже понятный с первого раза: если слева Null - делаем то что справа, иначе слева. Хуй его знает, что тебе непонятно.
1217 2483460
>>483420
опять же
понятно != изящно

>генерятся backing field и 2 метода get set


и нет доступа к этому backing field. хочешь в геттер сеттер что то свое - пиши полную портянку

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

await ура ура, но нет чтобы сделать await и await! допустим. нет. пиши ConfigureAwait() в каждом вызове.
изящно уровня "да нихера не изящно. дичь"

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

лямбды с его обязательными ()=>

(Class) vs var as Class - часто вижу как народ использует as ВЕЗДЕ
Раз уж так лучше было бы as?

хватит пожалуй
1218 2483665
Если C# так хорош, то почему так много компаний используют Java?
1219 2483677
>>483665
Легаси.
1220 2483716
>>483677
Ну що тут сказати?
В связи с недавними событиями (Z-событиями) количество легаси вангую поубавится.
Потому что поддержки нет. Фирмы ушли. Они конечно вернутся, но будут ли их ждать? И будут ли на них полагаться?
Это же, выражаясь языком инфобезопасности, компрометация. Все ушедшие с рынка фирмы на многие годы скомпрометировали себя, как ненадёжная хуйня, которая может отказать в обслуживании клиентам по независящим от клиентов причинам.
Однако это может не помочь и шарпу. Сейчас-то он как бы опенсорц, но все мы прекрасно понимаем, какой "опенсорц" у майков. Кто-нибудь вообще собирал из исходников дотнет с мсбилдом?
1221 2483864
>>483716
А какой опенсорс?
1665157401605.png65 Кб, 222x345
1222 2483907
>>483864
А опенорсный опенсорс.
1223 2483938
>>483665
Так исторически сложилось, а на переписывание кодовой базы на шарп с джавы мало кто согласится выделить бабла. Проще со старой жабы то есть восьмой мигрировать на 11/17 либо сразу на котлин, это в десятки раз дешевле будет.
1224 2483998
>>483716
Ну под эльбрусы дотнет сделали, значит как минимум они собирали. Будем пользоваться нашим православным мцст.нет если что
1225 2484152
>>445746 (OP)
делаю свой стартапчик
стек с++ (функционал) питон (бек+функционал) +nginx
с ui на авалонии(c#) какие есть тулкиты под неe
1226 2484176
>>484152
Пиздец, какой же винегрет.
1227 2484213
перекат будет в этом столетии?
1228 2484218
>>484213
LTS-треды поддерживаются 3 года
1229 2484219
>>484218
Думаешь шарп столько проживет?
1230 2484363
>>484176
qt платный а Gtk всратый
1232 2484393
>>484363

> qt платный


Нет.
1233 2508270
Повторяю сишку, вот такая задача:
Калипта Анны, которая считается самой быстрой птицей в мире относительно своего размера, может развивать скорость до 80 км в час.

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

Выходные данные
80
160
240
320
400

Подсказка
Просто умножьте 80 на счетчик для каждой итерации.
Используйте цикл for для итеративного выполнения умножения.

Я вот сейчас час думал над тем, что требуется, даже заснул от того, что сложно понять. Что она. По условию задачки. Летит на максимальной скорости и надо просто количество км с нуля каждый час выводить. ПРИ УСЛОВИИ, ЧТО НЕПРЕРЫВНО ЛЕТИТ ПО ПРЯМОЙ!!!
Пиздос, ну кто так условия ставит.
А как проходит ваш день?
Тред утонул или удален.
Это копия, сохраненная 8 ноября 2022 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски