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

Ответить в тред Ответить в тред
Check this out!
C#/Сишарп/.NET Тред #21 /csharp /csharp/ Аноним 04/09/20 Птн 11:38:56 17970541
.png 331Кб, 1044x1122
1044x1122
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.

Литература вторым постом

1. Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- https://metanit.com/
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/

2. Онлайн-компиляторы:
- https://dotnetfiddle.net/ - возможно лучший вариант. Встроено немного убогое, но все-таки автодополнение и проверка синтаксиса.
- http://ideone.com/
- http://csharppad.com/
- http://www.tutorialspoint.com/compile_csharp_online.php
- http://rextester.com/l/csharp_online_compiler

3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае WinForms, делать намного сложнее.

4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# довольно активно развивается, недавно вышла третья версия .NET Core фреймворка и восьмая версия языка. Весь дотнет понемногу становится опенсорсным, а ASP.NET становится независимым от платформы. В некотором смысле понемногу вымирают десктопные приложения с развитием веб-технологий, но в том же энтерпрайзе он еще очень даже востребован.

5. Какую ИДЕ выбрать?
Для Windows самым очевидным вариантом будет Visual Studio (https://www.visualstudio.com/en-us/downloads/download-visual-studio-vs.aspx). Студия распространяется в двух редакциях: бесплатная коммьюнити-версия и платный энтерпрейс эдишн. В большинстве случае будет достаточно Community-версии: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений
Для мака и никсов самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ ).
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim ).
Кросплатформенный полуредактор/полуIDE VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
Кроме того, в данный момент JetBrains активно пилит свою IDE для шарпа (Project Rider), вероятно в ближайшее время станут доступны первые EAP. IDE заявлена как кросплатформенная, со всем решарпер-функционалом, поддержкой отладки, моно и .net core.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими ништяками. Если хочется что-то по быстрому набросать, а выкачивать гигабйты нет желания, то возможно SharpDevelop будет лучшим вариантом.

6. С# для мобильной разработки
Если нужны инструменты для разработке под мобилы, смотри сюда - https://docs.microsoft.com/ru-ru/visualstudio/cross-platform/cross-platform-mobile-development-in-visual-studio?view=vs-2019.
Из актуальной литературы
- Xamarin Mobile Application Development
- Xamarin Essentials

7. Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL

8. Расширения для студии
ReSharper - одно из известнейших. Рефакторинги, умный автокомплит, настраиваемый стиль кода. Платный, но можно стянуть с торрентов
Supercharger - показывает "карту" с классами, методами и всем остальным сбоку от кода с возможностью прыгать по ним
Indent Guides - показывает вертикальные линии на каждом уровне отступов.
Format document on Save - форматирует код каждый раз при сохранении документа
Code alignment - Выравнивает код по указанным символам. Удобно, например, при инициализации словарей или в перечислениях

Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 8.0: https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-8

ПРИНИМАЮТСЯ ПРЕДЛОЖЕНИЯ ПО ШАПКЕ

Код этой шапки: https://pastebin.com/YJFQKsNm

Прошлый тред тонет здесь: >>1724425 (OP)
Аноним 04/09/20 Птн 11:39:24 17970552
9. Что почитать?
- The C# Player's Guide, второе издание (RB Whitaker) - отличная книга для ньюфагов в шарпе, все расписывается довольно подробно, очень много примеров кода.
- C# 7.0 in a Nutshell (Joseph Albahari и Ben Albahari) - огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином. Уже появилось издание для 8.0, однако в интернетах пока его нет.
- C# 7.0 Pocket Reference (Joseph Albahari и Ben Albahari) - просто выжимка из справочника, можно всегда держать рукой
- Pro C# 7: With .NET and .NET Core (Andrew Troelsen) - 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
- C# 6.0 Cookbook (Jay Hilyard и Stephen Teilhet) - книга в формате "проблема-решение", можно пройтись по оглавлению, найти интересные проблемы и попыпаться самому решить, а уже потом посмотреть представленное решение. Книга скорее не для ньюфагов, а для тех, кто уже знаком с шарпом.

10. Более хардкорный материал
- CLR via C# (Jeffrey Richter) - это классика, это знать надо.
- C# in Depth (Jon Skeet) - написана в виде истории версий C#, начиная с C#1.0. Описываются возможности, которые были добавлены в определенной версии и далее достаточно хардкорно и подробно эти возможности расписываются.
- Writing High Performance .NET Code (Ben Watson) - охуенная книга. В основном фокуируется на оптимизации дотнет-говна. Методы оптимизации проложений, профилирование, вот это все. Крутейшая и достаточно детальная глава по GC. Рассматриваются достаточно известные проблемы вроде "for vs foreach", "класс vs структрура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче все что нужно, чтобы вам перезвонили.


11. Хочу еще хардкорней
- C# Deconstructed (Mohammad Rahman) - введение в CLR, модели памяти и выполнения в CLR, байтоебство, JIT. Книга достаточно коротенькая, менее 200 страниц, можно осилить за пару дней. Желателен опыт работы WinDbg и понимание устройства PE-формата.
- Expert C# 5.0 with .NET 4.5 Framework - еще одна книга этого автора, в этот раз намного длиннее. Очень много IL, анализа и разбора стандартной либы (те же коллекции), разбор ивентов, дегегатов, асинхронности etc. на уровне байткода.
- .NET IL Assembler (Serge Lidin) - ILёбство, во многих местах повторяет документацию MSDN, но при этом имеет много интересных дополнений и заметок. Кроме того все неплохо структуировано и разложено по красивым табличкам

12. Литература по WPF
Из более-менее актуального можно выделить пару книг:
- Pro WPF 4.5 in C# (Matthew MacDonald)
- Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)

13. Литература по ASP.NET
- Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
- Pro ASP.NET MVC 5 Platform (Adam Freeman)
- Beginning ASP.NET for Visual Studio 2015 (William Penberthy)

14. Литература по асинхронности, параллелизму и всему такому
- Concurrency in C# Cookbook (Stephen Cleary) - книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции
- Multithreading in C# 5.0 Cookbook - в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная
- Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) - опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg

15. Литература не по шарпу, но так или иначе связанная с языком
C# Game Programming Cookbook for Unity 3D (Jeff W. Murray) - разработка на шарпе под Unity
Introduction to Neural Networks with C# (Jeff Heaton) - изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
Machine Learning Using C# Succinctly (James D. McCaffrey) - довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.

16. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако, зачастую эти переводы неактальны, содержат неточности, и не самые понятные варианты перевода. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в разработке без знания ангельского делать нечего. Если очень хочется, то гуглить по запросам: "C# 5.0, Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#"

17. Что еще нужно знать, чтобы взяли работать за еду?
- SQL - подойдет люая книг по MSSQL/MySQL, базовые запросы, SELECT, INSERT, DELETE, UPDATE. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper
- Системы контроля версий - обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote's, разрешение конфликтов, трехпанельные дифф-менеджеры, cherry-pick
- Гитхабы-гитхабчики - issues, организация пулл-реквестов, интеграция с appveyor, теги, релизы, маркдаун
- Алгоритмы - сложность алгоритмов, сортировки (пузырек, быстрая, вставками), поиск, рекурсия, алгоритмы на строках
- Структуры данных - связанные списки, деревья (бинарные, красно-черные, b-деревья), хеш-таблицы, графы
- Если идти в веб - HTML, CSS, JavaScript, веб-сокеты, REST
- Паттерны проектирования, стиль кода, внедрение зависимостей, MVVM (если хочется в WPF), SOLID

18. Я не умею читать, что посмотреть?
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- Коллекция видеоуроков, по всему дотнетовскому и смежным темам (250 часов, на русском) - https://nnm-club.me/forum/viewtopic.php?t=891636
- Набор курсов по C# от O'Reilly Media (28 часов, на английском) - http://rutracker.org/forum/viewtopic.php?t=5082978
Аноним 04/09/20 Птн 11:48:11 17970643
>>1796560 →
>var x = new Main();
>x.GetInformation():
The type or namespace name Main could not be found (are you missing a using directive or an assemble reference?)
>Ты, кстати, хули с маленькой буквы названия метода написал?
Main у меня главный метод, а остальные просто методы.

>>1796765 →
>Добавь модификатор static методу GetInformation
Появилась изначальная ошибка An object reference is required for the nonstatic field, method, or property
Аноним 04/09/20 Птн 12:18:12 17970894
>>1797064
>добавил статик
>... for non-static method

Хуево ты добавил значит. Просто говнокод свой в тред скинь и тебе покажут.
Аноним 04/09/20 Птн 12:18:33 17970905
>>1797064
>добавил статик
>... for non-static method

Хуево ты добавил значит. Просто говнокод свой в тред скинь и тебе покажут.
Аноним 04/09/20 Птн 12:22:47 17970956
Capture.PNG 19Кб, 493x665
493x665
>>1797064
кодстайл сишарпа подразумевает именование методоа с большой буквы.
Аноним 04/09/20 Птн 12:47:09 17971067
>>1797089
>>1797090

using System;
namespace testProject
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("hello");
var fin = @"C:\text.txt";
Title title = Title.Load(fin);
// var x = new Main();
// x.getInformation(title);
getInformation(title);
}
private static void getInformation(obj title)
{
var titles = thuExtr.Finder(title); // ошибка на thuExtr: An object reference is required for the non-static...
}
private TFinder thuExtr;
}
}
04/09/20 Птн 12:52:50 17971108
Еще живы шарписты? За лето три челика пришли к нам грести, бывшие дотнетчики все. С радостью сели на ноду, а один в фронтенд.
Аноним 04/09/20 Птн 13:01:38 17971139
image.png 28Кб, 486x584
486x584
>>1797106
вот так попробуй, а лучше создай отдельный класс, чтобы самому себе голову не ебать
Аноним 04/09/20 Птн 13:04:35 179711710
>>1797113
Добра и сотни нефти!
Аноним 04/09/20 Птн 13:05:25 179711811
>>1797113
фикс. не Program.GetInformation(). а x.GetInformation()
Аноним 04/09/20 Птн 13:42:37 179713812
>>1797106
>var titles = thuExtr.Finder(title); // ошибка на thuExtr: An object reference is required for the non-static...

Т. е. из прошлого опыта ты не смог понять в чём ошибка? Зачем вообще код берешься писать, ты же проф не пригоден.
Аноним 04/09/20 Птн 13:43:41 179713913
>>1797110
Я и на шарпе и на жопаскрипте пишу. Проблема твоих галерщиков теперь в том, что обратно на дотнет они не пересядут, чего не скажешь о тех кто пишет на шарпе.
Аноним 04/09/20 Птн 15:33:12 179727014
>>1797139
Не представляю каким нужно быть говноедом чтоб добровольно с него перейти на js.
Аноним 04/09/20 Птн 15:59:37 179730315
вот сделали бы они WPF кросс и не было бы нужно никакого говноэлектрона
прошляпили
Аноним 04/09/20 Птн 16:36:17 179734216
>>1797303
Xamarin же есть с тем же самым Xaml.
Аноним 04/09/20 Птн 16:37:47 179734517
>>1797270
На самом деле они плакали внутри, но продолжали улыбаться, потому что больше их нигде не брали.
Аноним 04/09/20 Птн 17:18:04 179736918
>>1797342
Это который под мобилки? Как мне на десктопы с ним?
Аноним 04/09/20 Птн 17:28:24 179737819
О какой то maui на подходе
Будет почитать
Аноним 04/09/20 Птн 17:34:20 179738120
Аноним 04/09/20 Птн 17:36:39 179738321
>>1797381
отож
а щас под десктопы только авалония и хоть проект неплохой но это ж кактус
Аноним 05/09/20 Суб 00:09:09 179769622
В общем, хочу сделать платформер простой по типу марио. Подключил SFML. В общем, как реализовать теперь логику-то платформера? Ну, т.е. врагов, камеру, это вот все. Чет не совсем понимаю как оно должно выглядеть. Вот ссылка на балавство с самим SFLM, чтобы увидеть экран с квадратиком после того как откроется окошко - enter. Управление квадратиком - wasd.


https://www.dropbox.com/s/k9nncr0abswujed/SimpleGame.zip?dl=0
Аноним 05/09/20 Суб 00:21:12 179770323
>>1797696
Что такое SFML? Гугл выдаёт что угодно, кроме того что нужно.
Выкидывай на гитхаю/гилтаб/битбакет. Нафиг зип качать, вдруг там вирусяка.
Аноним 05/09/20 Суб 08:43:49 179782724
>>1797703
> Что такое SFML?
https://www.sfml-dev.org/
> Нафиг зип качать, вдруг там вирусяка
Качать необязательно, на дропбоксе есть возможность посмотреть содержимое, а исходники будут с подсветкой синтаксиса.
Аноним 05/09/20 Суб 08:47:06 179782825
>>1797827
Фигасе дропбокс прокачался.
Аноним 05/09/20 Суб 14:55:56 179799926
Задача: написать под винду клиент/сервер-ное приложение.
Общение происходит по защищённому каналу. TLS ? Посылают друг другу XML-ки.

Какие есть библиотеки/фреймворки чтобы это как можно быстрее нашлёпать особо не вникая в то как это работает?
Аноним 05/09/20 Суб 15:41:50 179801627
>>1797999
В общем, есть такой класс, Socket, берешь его и делаешь.
Аноним 05/09/20 Суб 15:55:17 179802628
>>1798016
Да блин. Сокеты это слишком низкоуровнего.

Мне бы что-то такое типа
server = new Server(TLS, portnumber, certificate,
client_connected_callback, client_message_callback);
server.Serve();

client = new Client(TLS, portnumber, certificate, server_connected_callback, server_message_callback);
client.ConnectToServer(serverAddress);

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

Хочу готовую архитектуру клиент/сервера, которую делали люди с мозгом и знаниями, а не на коленке как я.
Аноним 05/09/20 Суб 16:03:37 179804129
>>1798026
Нуууу, я как-то писал как раз подобное, но в треде все закидали тапками и сказали чтобы не выебывался .net для веба и вообще если кому приспичет он сам на сокетах напишет.
Могу только это посоветовать, https://github.com/chronoxor/NetCoreServer, там чутка напильником допилить. Можно еще https://github.com/jchristn/WatsonTcp посмотреть, но мне он не подошел.
Аноним 05/09/20 Суб 16:09:00 179804630
>>1797999
ну так кестрел + хттпклиент
или тсплистенер и тспклиент
или 100 других костылей
Аноним 05/09/20 Суб 17:11:33 179809631
>>1797999
Если все правильно понял, я бы по такой задаче колотил gRPC. Там и описание транзакций легко сделать, и пользоваться клиентом удобно, и шифрования всякие хорошо поддерживает.
Аноним 05/09/20 Суб 17:32:08 179811032
.png 20Кб, 1121x390
1121x390
>>1798096
Это все хорошо, когда ты делаешь поверх Http, блин, я не знаю что у чела за задача, но вот мне нужно было так же реализовывать сервер для работы с устройствами, которые по проприетарному протоколу обмениваются информацией, и знаешь что, на джаве для этого есть нормальные готовые решения, а вот на офигенном шарпе - нет. пришлось свой велосипед городить. А я - тот еще архитектор, кек.
Аноним 05/09/20 Суб 20:06:49 179820133
image.png 42Кб, 473x384
473x384
>>1797827
Не хочет исходники показывать.
Аноним 05/09/20 Суб 20:43:34 179822834
.png 29Кб, 1335x701
1335x701
>>1798201
Странно. У меня все показывает.
Аноним 05/09/20 Суб 21:05:11 179824335
>>1798110
>а вот на офигенном шарпе - нет. пришлось свой велосипед городить
значит никому не нужно было
вот тебе нужно ты сделал
выкладывай в общий доступ
Аноним 06/09/20 Вск 22:54:07 179910936
dotnet.png 32Кб, 328x1010
328x1010
Вечер, котаны.
По работе пришлось столкнуться с .NET веб проектом на C#.
Помоги разобраться что это, чем его адекватно открыть и как редактировать?
Отдельно интересуют .dll библиотеки, как их править?
Структура проекта на пике.
Аноним 06/09/20 Вск 23:27:00 179912137
>>1799109
> Помоги разобраться что это, чем его адекватно открыть и как редактировать?
Кликни на файлик, откроется окно редактора, еще можешь на треугольничие рядом с файликом кликнуть и увидишь там .cs файлы, в которых шарповский код. Судя по структуре, в данном проекте основные файлы лежат в корне, остальное эт ресурсы и какие-то переиспользуемые штуки.
Да, раз это новый проект, советовал бы поставить хреновину для рисования диаграммы классов и посмотреть какие классы от каких зависят, какие там методы и если что непонятно - посмотреть код.
> Отдельно интересуют .dll библиотеки, как их править?
Взять код этой библиотеки и править его, потом собрать и подсунуть сюда новую dll, ну или лезь в il и там правь, кек.
Аноним 06/09/20 Вск 23:42:55 179913138
>>1799121
>можешь на треугольничие рядом с файликом кликнуть и увидишь там .cs файлы
Беда в том что при "открытии папки" в VisualStudio никаких треугольников нет. Впрочем, как и .cs файлов в каталогах проекта.
>основные файлы лежат в корне, остальное эт ресурсы и какие-то переиспользуемые штуки
Похоже что на каждую страничку ресурса есть свой .ascx файл, которые лежат в QA.
>Взять код этой библиотеки и править его, потом собрать и подсунуть сюда новую dll
Декомпилировать, поправить, заново собрать и подсунуть?
Оно всегда так работает, или есть какой-то "правильный" путь редактирования dll-лок? )
>ну или лезь в il и там правь
Что такое il?

В интернетах искал разные варианты создания .NET проектов, веб сайт/веб приложение / итд, и ни один из вариантов не похож на то что есть у меня.
Аноним 07/09/20 Пнд 02:26:45 179917039
>>1799109
> inetput\wwwroot\Navigator
> Navigator.dll
Это собранный и опубликованный проект. Требуй исходники. Будут тебе и *.cs, и треугольники.
Аноним 07/09/20 Пнд 07:28:24 179920840
>>1797696
>хочу сделать платформер
просишь сделать за тебя
Аноним 07/09/20 Пнд 10:13:21 179924941
Знает кто НЕ ИНДУССКИЕ туториалы по asp.net core но чтобы БД была postgresql? Везде ебаный microsoft sql server но он почему то на 8 винде не ставится
Аноним 07/09/20 Пнд 10:41:45 179926242
Аноним 07/09/20 Пнд 11:45:34 179933343
>>1799249
>но чтобы БД была postgresql?
А какая разница? как бы задача всяких там ентитифреймворков и состоит в том, чтобы абстрагироваться от реальной бд.
Аноним 07/09/20 Пнд 14:06:25 179947844
>>1799249
Двачую анона выше, что именно ты хочешь? Степ бай степ пока от монитора не ослеп – так смысл, если еф инкапсулирует от тебя внутренности базы. Конечно, не идеально, и с постгре я имею ебанутые имена для сущностей не уверен, что причина в постгре, так как с ним я использую скаффолд, а с mssql code first, но все же
Просто подними базу, запили коннекшн стринг и дальше работаешь как гречневый программист
Аноним 07/09/20 Пнд 15:41:59 179961145
Не могу вкатиться уже месяца 2 где то, прошел 4 собеса, два из которых вроде как успешно, но работать так и не начал, т.к. те компании ответили, что пока что нету денег и времени на вкатышей на проекте, но обязательно напишут, когда появятся. На последнем тех собеседовании охуел от сложности вопросов, позиция была трейни, но вопросы совсем охуевшие, зп предлагали тоже нищенскую. Платформа и язык нравятся, милы глазу и приятно работать, уходить в другое более популярное не хочу, но шит, что бы найти хоть какую то работу походу надо будет пробовать что то другое, кто то может помочь каким то лайфхаком по поводу поиска работы?
Аноним 07/09/20 Пнд 16:16:53 179963846
>>1799611
>но вопросы совсем охуевшие
че за вопросы?
Аноним 07/09/20 Пнд 16:31:31 179965047
>>1799638
по SOLID и других подходах кучу вопросов было практических, т.е. таких, на которые без опыта коммерческой разработки не ответишь толком. Подкапотные детали мультитрединга и linq спрашивали, и по разных парадигмах программирования вопросы были, но более общие. Была практическая часть, надо было алгоритм сортировки сначала написать оптимальный а потом еще и актуализировать под требование определенное.
Ну на все остальные вопросы которые задавали я вроде норм отвечал, но на конкретно те, которые тут перечислил, в лучшем случаем 2/3 ответил + практическое почти что скипнул, просто в конце теоретически свой подход и идею объяснил.
И это на трейни позицию, которая, как оказалось, с шарпом почти не связана, на проекте занимаются какими то приставками под смарт тв, язык там похож на питон, и вообще предлагали чето около 350 в месяц. Впечатления не очень
Аноним 07/09/20 Пнд 19:03:54 179973348
.png 9Кб, 323x372
323x372
.png 14Кб, 342x477
342x477
>>1799208
Не прошу. Достаточно было бы либо коротко объяснить, либо дать ссылки где есть примеры с подобием архитектуры, потому что все что я находил это либо прямо в мейне херачат, либо это видео где чел просто набирает текст ускоренно, а потом говорит что получилось, даже не поясняя зачем он что-то делал.
Аноним 07/09/20 Пнд 20:58:57 179987049
>>1799611
Единственный вариант - закидывать своё резюме везде куда можно. Сотню в месяц. Только резюме надо вылизать. Не более двух страниц и без вырвиглазного форматирования и всё главное должно быть в самом начале. Причём кидать и в другие города на удалёнку.
Попутно решать задачки на leetcode и проходить туториалы от майкрософта.
Аноним 07/09/20 Пнд 21:16:22 179989450
>>1799650
За 350 в месяц это даже мало спрашивали.
>по SOLID и других подходах кучу вопросов было практических, т.е. таких, на которые без опыта коммерческой разработки не ответишь толком.

Вполне ответишь, главное придумать подходящий пет-проект и начать его реализацию с применением этих принципов и паттернов проектирования. Я сначала книгу по паттернам прочитал, потом начал делать такой проект. Вообще это намного сложнее чем выучить базовые конструкции и внутреннее устройство языка, над продумыванием архитектуры я сидел несколько недель, написав за это время пару десятков строк кода, а таких строк нужно было несколько тысяч. В итоге я почему-то нарушил самое главное правило - head first. Начал реализацию с конкретизированных классов, а не общих, но когда дошел до общих, то понял насколько было бы легко если бы я с них начал.
Сейчас понимаю, что для полного понимания нужно как минимум 2-3 таких проекта.
Аноним 07/09/20 Пнд 21:28:07 179990951
>>1799894
>За 350 в месяц это даже мало спрашивали.
мде. а еще говорят айтишники хорошо живут. много лет назад на рубиста брали за 800 джуна от которого даже не требовалось знать руби ибо сами обучали и зарплата росла.
а тут 350

'
Аноним 07/09/20 Пнд 22:17:48 179996552
>>1799170
>Требуй исходники.
А в таком виде я с этим хоть как-нибудь работать смогу?
Аноним 07/09/20 Пнд 22:36:13 179997953
>>1799965
Можешь использовать какой-нить дизассемблер:
https://github.com/icsharpcode/ILSpy
https://www.jetbrains.com/decompiler/

Берёшь dll, прогоняешь через тулзяку и получаешь проект с C# файлами. Системные дизассемблировать не надо. Судя по скрину тебе нужны только ChartCreator, DatabaseMgr, Navigator, Utility.
Потом надо будет все эти проекты собрать в один Solution.

У тебя там даже .pdb файлы есть. Можно дебажить и декомпилировать те функции на ходу.
Аноним 07/09/20 Пнд 22:48:58 179999554
>>1799965
> А в таком виде я с этим хоть как-нибудь работать смогу?
https://www.red-gate.com/products/dotnet-development/reflector/
Рефлектор, декомпилирование *.dll, лазанье в IL, муторное и нудное воссоздание проекта. Новичками не под силу.

Можешь стили да картинки подменить.

Логика скорее всего в Navigator.dll, DatabaseMgr.dll, ChartCreator.dll, Utility.dll. Остальные dll -- сторонние подключаемые библиотеки.
Аноним 07/09/20 Пнд 23:04:07 180001355
>>1799995
Red Gate платный. Два выше - бесплатные. И лазить в IL вообще не нужно. Декомпилятор может целый проект за тебя воссоздать (код может быть УГ, но читаем).
Аноним 07/09/20 Пнд 23:12:20 180002456
Аноним 08/09/20 Втр 08:44:57 180022357
>>1799909
Время идет. Число желающих растет с неизмеримой скоростью (конечно же благодаря курсам по программированию и байками, что вкатиться очень легко).

А это нихера не легко. Начинаешь читать требования к позиции джуна (вакансии по треййни очень редки). Так что бы во всем этом разобраться, уходит как минимум год.
Аноним 08/09/20 Втр 08:46:44 180022458
Почему вы решили вкатываться в Си Шарп, а не фронтенд, мобилки(iOS или android)?
Аноним 08/09/20 Втр 08:52:53 180023159
>>1800224
в ВУЗе преподавали C#. И практически все предметы связанные с программированием, преподавались с его использованием.

ИМХО, по синтаксису C# приятней того же Python и JavaScript. Хотя, TypeScript мне понравился.
Аноним 08/09/20 Втр 09:50:20 180029160
>>1800223
>Начинаешь читать требования к позиции джуна
а там мидл
Аноним 08/09/20 Втр 10:14:22 180030661
>>1800291
и вообще там фулл стак)
Аноним 08/09/20 Втр 10:35:54 180033162
Господа, вкатываюсь в неткор, и возник такой вопрос: как мне лучше организовать шаред код в солюшене, в котором есть проекты как на неткоре, так и на винформс? Если я сделаю простой Shared Project, будет ли будет ли код из него работать со всеми проектами?
Аноним 08/09/20 Втр 10:53:32 180034563
>>1800306
и это ведь даже не прикол, мидловский стек за зарплату джуна постоянно натыкаюсь
Аноним 08/09/20 Втр 11:16:21 180036864
>>1800224
На шарпе можно под мобилки писать.
Аноним 08/09/20 Втр 11:33:47 180040165
>>1800224
Шарп самый универсальный в плане легкости и качества. Да, ты можешь на плюсах писать под любую платформу, но это сложно. Да, ты можешь на жопаскрипте писать под любую платформу, но это не качественно.
Аноним 08/09/20 Втр 11:37:21 180040466
>>1800331
У тебя какое-то разделение неясное. Винформы есть как на неткоре, так и на нетфреймворке.
Аноним 08/09/20 Втр 12:20:16 180044167
>>1800401
будто на шарпах легко

хочешь под линь - WPF идет лесом. Привет авалония XAML
хочешь мобилки - да еб...й xamarin XAML
будущий мауи тоже будет xamarin XAML
Аноним 08/09/20 Втр 12:45:26 180047368
Что надо знать/учить чтоб устроиться интерном?
Аноним 08/09/20 Втр 13:15:01 180051569
>>1800441
И? Если какой-то дегрод не осилил XAML, то это не значит, что XAML хуевый. И WPF это тоже XAML, если ты не знал.
Аноним 08/09/20 Втр 13:21:24 180052370
>>1800515
>это не значит, что XAML хуевый
О чем ты вообще товарищ?
Я говорю что это РАЗНЫЙ xaml
при этом xamarin xaml говно по сравнению с UWF и тем более WPF xaml

и для "будет 1 хамл для всех" выбран самый уебищный из них
Аноним 08/09/20 Втр 13:56:06 180058471
>>1800523
Что за бред ты несёшь? Какой смысл делать РАЗНЫЙ xaml если есть уже наработки из wpf, понятно, что есть отличия, но называть это совершенно разными xaml'aми слишком громко. Любой кто писал на WPF, сможет с легкостью писать на xamarin.
Аноним 08/09/20 Втр 14:00:19 180059472
>>1800584
>Какой смысл делать РАЗНЫЙ xaml
это вопрос к мелкософту

>понятно, что есть отличия, но называть это совершенно разными xaml'aми слишком громко.Любой кто писал на WPF, сможет с легкостью писать на xamarin.
вот тебе вопрос на засыпку "А портировать WPF на мауи так же с легкостью сможет? "

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

Аноним 08/09/20 Втр 15:01:58 180068173
>>1800473
Вот мне уже тоже интересно, а то мне тут в треде доказывают что на позицию трейни в SOLID надо ахуенно разбираться, и в concurrency и вообще уже быть готовым опытным
специалистом.
Аноним 08/09/20 Втр 15:55:11 180078274
Посоветуйте, пожалуйста, какого-нибудь видео контента по языку, чтобы было чем занять себя в перерывах между чтением. На ютубе вроде бы много всякого разного, но чет ниче не понравилось
Аноним 08/09/20 Втр 16:25:28 180081375
>>1800473
По идее ничего. На то он и интерн, чтобы его обучать.
Аноним 08/09/20 Втр 16:26:53 180081776
Аноним 08/09/20 Втр 16:32:02 180082777
Аноним 08/09/20 Втр 18:11:41 180093978
Аноним 08/09/20 Втр 19:16:23 180100079
>>1800813
Так-то оно так, но кому нужен будет ученик? Работника же ищут, полагаю что-то базовое знать нужно
Аноним 08/09/20 Втр 19:18:06 180100380
>>1800473
Я когда интернов собеседовал давал всякие задачки на графы решать. Но по тонкостям языка особо не гонял, интерны обычно языки плохо знают.
Аноним 08/09/20 Втр 20:31:12 180107081
>>1799650
> предлагали чето около 350 в месяц
> Впечатления не очень
Да говно какое-то, я 350 в секунду получаю на фрилансе.
Аноним 08/09/20 Втр 20:37:23 180107582
>>1801070
он имеет ввиду 350 баксов, джунам щас не платят нихуя, а если он хохол то это ему доплачивать предлагали
Аноним 08/09/20 Втр 20:45:14 180108183
>>1800224
Ну, это. Были плюсы и си в вузе, я паралельно пробовал джаву, а на втором курсе препод показал Шарп и я просто пиздец влюбился. Настолько охуенная стандартная библиотек, тут тебе и с сетью удобно работать, и асинхронность, и многопоточность удобные, и можно писать было графические приложения как человек, а не всеми этими вызовами винапи, в общем, у меня шишка встала, я охуел как это классно. И сахарок, куча хуйни можно сделать очень коротко и лаконично. А потом я еще начал познавать ООП, сначала плевался, но потом, пиздец охуел как оно удобно, если научиться готовить. Сейчас переодически приходится писать еще на плюсах, и я каждый раз ловлю себя на мысли, что да, я и на нем мог бы, но на шарпе я сделаю это быстрее, красивее и еще мне не нужно искать какую-то приблуду, все почти есть из коробки, а то чего нет - давно стандарт индустриальный и ты это быстро найдешь.
В противовес фронтенд, там тоже типа писать можно сейчас наплохо, но там каждый нагородил своих велосипедов, которые ты костылями между собой объединяешь и получается кряхтящий-пердящий франкинштейн. Выбрали бы что-то одно и использовали, например решили, все у нас будет Ангулар для интерпрайза и ECMA какая-нибудь одна + jquery для мелких проектов. Нет, блядь, у нас будет 100500 фреймворков, которые делают одно и то же, у нас будет 100500 стандартво, зависящих от хуй пойми чего, а сверху ебанае бабелем, чтобы хуй кто въехал, в то что мы там понаписали. Короче, как по мне - эта анархия нахуй не нужна. Когда стандартизуют нормально, тогда можно будет думать о фронтенде, но сейчас, это какой-то цирк с конями, а судя по коду фронтендеров, даже люди с опытом, там просто копипастят код со стэковерфлоу, потому что блядь, вот ушел на карантин фронтендер из комманды, где я тусую, ну, подумал, доделаю его таски, все равно делать нехуй, открываю, сначала нихуя не понимаю, потом чуть разобрался, гуглю и вижу что его же код это первая строчку в гугле. Блядь, решил пробежаться, а там на 90% код состоит из ответов со стэковерфлоу, пиздец же. И это человек с 8 летнем стажем работы. Просто ctrl+c ctrl+v. И я даже не в упрек ему, типа вот настолько охуенно программировать фронтенд, когда человек который этим почти 10 лет занимается большую часть кода просто копипастит, меняя переменные.
Аноним 08/09/20 Втр 20:53:14 180108784
Помогите код написать, только вкатываюсь в C#, Составьте программу – временной интервал. Заданы моменты начала и конца
некоторого промежутка времени в часах и минутах (в пределах одних суток). Найти
продолжительность этого промежутка в тех же единицах измерения.
Аноним 08/09/20 Втр 20:54:29 180109185
>>1800331
Берешь и прописываешь в файлике солюшна все версии фреймворка, какие нужно поддерживать и пишешь с использованием директив препроцессора в местах где код отличаться должен будет. Все. Что сложного-то?
Аноним 08/09/20 Втр 21:04:35 180110386
>>1801087
Где заданы, куда заданы, в чём заданы, блять. Харкни в ебало тому кто тебе эту задачу дал и пошли его нахуй.

var start = TimeSpan.FromHours(2) + TimeSpan.FromMinutes(10);
var end = TimeSpan.FromHours(5) + TimeSpan.FromMinutes(26);
var duration = end - start;
Аноним 08/09/20 Втр 21:27:46 180111587
>>1800331
Есть вариант написать библиотеку таргетируя .net standart - по идее должен работать с проектом и на фреймворке, и на коре.
Таблица совместимости тут:
https://docs.microsoft.com/en-us/dotnet/standard/net-standard
Но лучшим решением было бы перенести формы на кор или .net 5, если это возможно.
Аноним 08/09/20 Втр 21:29:30 180111688
.png 45Кб, 1045x627
1045x627
>>1801087
Блин, хотел выпендрется, но подумал, лучше нормально сделаю.
В общем, вот. Статический метод GetInterval вернет тебе как раз разницу, а у нее уже можно хоть часы, хоть минуты смотреть.
Аноним 08/09/20 Втр 21:44:01 180112489
.png 3Кб, 522x62
522x62
>>1801115
Да хосподи, что мешает вам делать вот так вот? 99.9% кода, если это действительно какой-то общий код, будет совместимо, тем более если не выеживаться и не использовать повсеместно сахарок. В 2,5 местах на весь проект пропишет проверку на версию фреймворка и пойдет дальше.
08/09/20 Втр 23:30:17 180124190
>>1801116
>GetInterval с тернаркой для подсчёта разницы
Говнокод. Используй Math.Abs, если тебе нужно всегда положительное число.
Аноним 08/09/20 Втр 23:47:35 180125391
>>1800345
а хули ты хотел? Галера на тебе деньгу должна зарабатывать, а ты батрачить должен, как раб. Тебе задачки-задрочки, а барину мертвый американский президент. Все по чесноку.
>>1799650
>чето около 350 в месяц
в шепутиарий. Тупо с подачки РАБотать. Порадовал перед сном
>>1801075
>джунам щас не платят нихуя
смотря о каком языке речь. Даже ссаный пыхер джун в фул стэке 800 минимум зарабатывает
Аноним 09/09/20 Срд 03:51:08 180133092
>>1801253
ссаный сеньор пыхер так и застрянет на 1-2к, а шарпист может и 4+ делать.

джуну надо не выёбываться, а брать что угодно, впахивать пару лет и потому начинать выбирать нормальную работу.
Аноним 09/09/20 Срд 05:28:06 180133493
Заметил одну особенность, на /g/ форчана, если спросить какой нибудь вопрос по программированию, тебя просто покроют хуями и назовут ретардом.
Тут, тебя покроют хуями, назовут ретардом, но помогут.
Аноним 09/09/20 Срд 05:37:41 180133694
Должен ли джуниор уметь решить эту проблему?
https://github.com/jellyfin/jellyfin/issues/2959
Недавно начал учить гитхаб, на этот issue стоит good first issue, но чет совсем не понимаю что конкретно делать.
>Remove the logic to auto-launch the web browser from the server (StartupWizard.cs BrowserLauncher.cs, etc)
Посмотрел на код там, непонятно где логика чтобы браузер запускался именно с сервера, или они хотят чтобы вообще нахуй удалили это?
Думаю, я еще далеко не джуниор, может быть даже не trainee.
Аноним 09/09/20 Срд 07:40:20 180134395
>>1801081
надеюсь Blazor не загнется и будем писать фронт на нём
Аноним 09/09/20 Срд 08:12:50 180134896
>>1801330
> пыхер так и застрянет на 1-2к
>а шарпист может
Маня, проснись, ты дрыщешь. Никому нахуй сейчас этот шарп не нужен. Исключение - мамонты, которые случайно вступили в это чудо.
>>1801343
хммм, выбор между 3 либами, которые дрочат сотни тысяч людей и высер мелкософтов с аудиторией 10 аутистов-разработчиков... Что же выбрать...
Аноним 09/09/20 Срд 11:01:49 180139997
>>1801348
так про любую технологию можно сказать, когда она только вышла.
Аноним 09/09/20 Срд 12:55:54 180148698
>>1801348
>Никому нахуй сейчас этот шарп не нужен.
судишь по говноконторкам из рф. ну да да. такой то обхват )))
Аноним 09/09/20 Срд 16:50:39 180172599
image.png 16Кб, 910x214
910x214
image.png 23Кб, 506x190
506x190
>>1801336
Быстрый поиск по репо выдал вот это внутри jellyfin/Emby.Server.Implementations/EntryPoints/StartupWizard.cs

Там ещё много чего, что они просят. Один из пунктов обновить вот этот файл (возможно там ещё такие файлы есть), чтобы при запуске дебага браузер авто открывался - jellyfin/Jellyfin.Server/Properties/launchSettings.json
Аноним 09/09/20 Срд 17:17:22 1801751100
>>1801336
Почему ты решил обратить внимание на этот ишью?
Аноним 09/09/20 Срд 20:54:56 1802062101
.png 15Кб, 654x350
654x350
Бьют ли за такой код в реальном проекте по рукам?
Аноним 09/09/20 Срд 21:03:30 1802073102
>>1802062
Next желательно чтобы был read-only.
CancellationToken надо в следующий вызов передавать.

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

Если это библиотека, то надо к асихнронному вызову в конце добавить ConfigureAwait(false), потому что библиотека откуда угодно вызываться может.
Аноним 09/09/20 Срд 21:13:59 1802087103
>>1802073
Ну, про CanellationToken я просто тупанул. Да, понимаю что надо передавать дальше.
А если я это делаю чтобы разгрузить класс который разросся? Просто неудобно стало в файле на ориентироваться, приходилось по полминуты скроллить чтобы до нужного куска добраться, либо поиском пользоваться, ну я и думал о двух стульях - сделать partial или вот так вот. И теперь вот думаю, а не зря ли сделал так. Хрен знает короче.
Аноним 09/09/20 Срд 22:47:01 1802173104
>>1802062
Какой же макакий пиздец
С асинка в односвязном лукапе проиграл
Аноним 09/09/20 Срд 23:37:16 1802226105
>>1802173
Ну и как тогда?
Мне нужно сконфигурировать большую задачу, внутри нее подзадачи, которые как раз конфигурируются и в этих подзадачах могут быть await'ы, порядок их выполнения не важен, эти подзадачи не связанны друг с другом, так же после того как задача сконфигурирована, я должен дождаться ее выполнения внутри какого-то метода, потом, если нужно - извлечь нужную мне информацию, которая была получена в ходе выполнения. Задачи могут меняться от настроек сверху, но не во время выполнения задачи, какие-то могут быть отключены, какие-то новые - добавлены пользователем. Вот и как это сделать правильно?
Аноним 10/09/20 Чтв 01:00:58 1802281106
>>1802226
Не слушай этого проигравшего, который в линкдлисте какой-то лукап углядел. Тут всё зависит от задачи и конкретной архитектуры системы. Где-то это вполне нормальный подход, а где-то у виска пальцем покрутят.
Если рассматривать только код с твоего пика, то там ничего вырвиглазного нет.
Аноним 10/09/20 Чтв 01:04:07 1802282107
Аноним 10/09/20 Чтв 07:52:08 1802395108
>>1802226
Ты, вроде, как монаду вычислений пытаешься переизобрести.
Аноним 10/09/20 Чтв 12:02:12 1802490109
>>1802226
И зачем тогда тебе ждать выполнения задачи перед запуском другой? Сделай статичный контейнер для задач, при вызове экзекутАсунк задачи запускаются и добавляются в контейнер, при добавлении последней задачи пишешь await Task.WhenAll(taskContainer);
Аноним 10/09/20 Чтв 14:49:32 1802599110
>>1802226
листы List<Task> и Task.WhenAll и всего делов
Аноним 10/09/20 Чтв 18:14:08 1802818111
Просмотрел джуниоровские вакансии на hh.ru. Там, где есть веб, больше чем в половине требуется ASP.NET, и в остальных ASP.NET Core. Поясните, мне их что, обе учить? А то выучу я более современную, а меня ведь как джуниора поставят на какое-то легаси, а там всё на asp.net.
Аноним 10/09/20 Чтв 18:23:24 1802828112
>>1802818
Очевидно, что нужно учить более новое, так как если тебя посадят на новый проект, то сроки будут гореть и времени переучиваться с старого на новое у тебя не будет, а если тебя посадят на легаси парашу, то у тебя будет уйма времени и простор для эксперементов, потому что единственный плюс легаси говна это то что оно есть и работает. Внёс нужное изменение, а потом вникаешь в старое легаси и рефакторишь потихоньку.
Аноним 10/09/20 Чтв 18:44:16 1802849113
Сап программач, перекатываюсь к вам из плюсов(вкатываюсь в доп технологию). Что посоветуешь, и что нужно знать прежде чем начать писать код.
Аноним 10/09/20 Чтв 20:19:47 1802970114
>>1802849
Если писал на плюсах профессионально, то прочитай про то как сборка мусора работает, как работают таски с асинк-эвейтами, ну и наверное чутка про события будет полезно, хотя их сейчас стараются не использовать, ну и про те моменты что отличаются, типа как наследование тут работает, что ссылки, что значение это вот.
А, ну и про LINQ, оно довольно просто, опять же если на плюсах что-то серьезное писал, то разберешься быстро, но помогает сильно упростить жизнь.
Да, последнее, про кодстайл не забуть. За кодстайл на самом деле больше всего вломить могут.
Аноним 10/09/20 Чтв 23:47:03 1803171115
Сап. Хз где спрашивать, спрошу у вас, вы к винде тут ближе всех.
Есть задача - программно прочитать файл из директории, которая синхронизирована с дропбоксом. Файл локально на устройстве есть, виндой открывается без проблема. Но когда пытаюсь что-либо с ним сделать - сосу бибу, файла словно не существует. Даже copy в консоли выдаёт ошибку. Че делать? Хули оно выёбывается?
Если тредом ошибся, пните в нужную сторону.
Аноним 11/09/20 Птн 00:44:58 1803241116
>>1803171
телепаты говорят что хоть они и телепаты но без знания ЧО ЗА ОШИБКА БЛ... ничего сказать не могут
Аноним 11/09/20 Птн 00:52:33 1803246117
d327074128fcca1[...].jpg 91Кб, 563x668
563x668
Хочу к НГ вкатиться на галеру с околонулевым опытом, пока есть финподушка - согласен работать за еду.
В 2016-2017 в рамках стажировки чё-то да учил, прочитал "C# для школьников" да "Библию C#" (до "С# Программирование на языке высокого уровня" Павловской так и не дошёл, написал пару простейших приложений, но на тот момент склонялся к вебу и вёрстке больше - сейчас с ужасом понимаю свою ошибку.

Какой мой план действий? Перечитываю вышеперечисленное, а так же в оп-посте, заполняю гитхаб старыми и новыми проектами, курю алгоритмы?
Аноним 11/09/20 Птн 01:30:21 1803273118
Аноним 11/09/20 Птн 01:56:56 1803283119
>>1803246
Советую тебе осознать, что не существует работы за еду в бэке, да и во фронте она редко случается. Никто не будет нанимать человека который будет отнимать время у опытных сотрудников, приносить 0 пользы и при этом еще денег на еду просить.
В остальном всё от тебя зависит, читай книги, осваивай алгоритмы, озеленяй гитхаб и может удастся втиснуться на вакансию джуна.
Аноним 11/09/20 Птн 02:36:44 1803296120
>>1803171
дропбокс, onedrive, и прочие обычно делают вид что есть файл, когда его щёлкаешь дважды, он скачивается в бэкграунде и юзеру кажется что файл реально существует локально. Читай доку к дропбоксу.
Аноним 11/09/20 Птн 07:21:46 1803338121
>>1803283
Гитхаб с туду листами нахуй никому не впился на собесе. Тестовое главное сделать.
Аноним 11/09/20 Птн 09:17:46 1803376122
>>1802818
учить новое. В общих чертах они схожи.
Аноним 11/09/20 Птн 09:38:07 1803378123
>>1803338
Если у тебя годные проекты на гитхабе, то тестовое можно не выполнять.
Аноним 11/09/20 Птн 14:24:50 1803600124
>>1797054 (OP)
Анон, поясни вкатывальщику, чем шарписты на работе занимаются?
Аноним 11/09/20 Птн 15:11:13 1803631125
Аноним 11/09/20 Птн 15:16:19 1803638126
A80EA83A-6281-4[...].jpeg 394Кб, 750x937
750x937
>>1803283
Я теперь все больше ощущаю, что проебал полимеры
Давали шанс тогда выучить, ещё и МРОТ получил бы
Пока что я могу и и бесплатно постажироваться


>>1803378
Пример?
Аноним 11/09/20 Птн 15:24:21 1803651127
>>1803638
>Пример?
Любой проект который написан с использованием требуемого от кандидата стека. Главное чтобы это было что-то отличное от туду листа и не копипаст чужого кода.
На предложение решить тестовое пишешь: "У меня есть проект написанный с использованием необходимого стека технологий, прощу зачесть его в качестве выполнения тестового, либо оплатить выполнение тестового."
Так ты сразу даешь понять, что достаточно квалифицирован для того чтобы просить деньги за тестовое + экономишь время не тратя его на решение тестового.
Аноним 11/09/20 Птн 19:20:25 1803845128
>>1803600
Копипастят код со стэковерфлоу, потом оборачивают это в паттерны и типа вот охуенно все сделал.
Сейчас у шарпа оч разросся стек, зависит сильно от того куда пойдешь. Скорее всего будешь делать микросервисы, либо поддерживать легаси.
Аноним 11/09/20 Птн 21:58:31 1803962129
test
Аноним 11/09/20 Птн 23:55:44 1804051130
ghjgh.jpg 566Кб, 1920x1440
1920x1440
Сап ананасы, куда щас можно пойти работать зная Шарп?
Аноним 12/09/20 Суб 00:18:05 1804062131
Аноним 12/09/20 Суб 00:29:11 1804073132
>>1804062
а че в вебе? конкретней
Аноним 12/09/20 Суб 00:31:01 1804074133
Аноним 12/09/20 Суб 07:15:31 1804154134
Какое направление лучше выбрать в шарпе? Веб?
Аноним 12/09/20 Суб 07:33:41 1804157135
Никак понять не могу. Вот мы переопределяем метод Equals() следующим образом: public override bool Equals(object obj) => obj?.ToString() == ToString(). А в каком случае тут может быть полезен этот знак вопроса? Зачем его тут писать?
Аноним 12/09/20 Суб 08:19:53 1804161136
>>1804157
Чтоб в случае передачи аргументом null у тебя не возникло исключение при вызове .ToString() - метод тогда вернет false просто.
Аноним 12/09/20 Суб 08:45:10 1804174137
>>1804161
Спасибо, теперь понял
Аноним 12/09/20 Суб 11:42:14 1804274138
>>1804161
Он вернёт null, а не false
Аноним 12/09/20 Суб 12:43:53 1804310139
>>1804274
Как жир метод возвращающий bool вернет null? Что за магия?
Аноним 12/09/20 Суб 12:50:50 1804312140
>>1804310
никак не вернет
null улетит в сравнение == и уже результат этого и будет bool
Аноним 12/09/20 Суб 13:00:15 1804318141
>>1804310
> .ToString() - метод тогда вернет false просто.

ToString возвращает string или null, а не bool. А Equals возвращает в данном случае результат сравнения двух вызовов ToString т. е. будет сравнение между null и тем что вернёт this.ToString().
К примеру, можно перезаписать this.ToString() таким образом чтобы он null возвращал, тогда при Equals(null) мы получим true, а по твоим словам ""метод вернёт false просто"
Аноним 12/09/20 Суб 13:11:20 1804327142
Подскажите, AvaloniaUI достаточно доделан, чтобы делать на нём окошки под Linux?
Аноним 12/09/20 Суб 13:24:45 1804339143
>>1804327
смотря что делать. но в общем то да.
для меня там со шрифтами проблема (под виндой)
и был трабл с канвас по макосью
Аноним 12/09/20 Суб 18:46:29 1804564144
>>1804157
obj?.ToString() == ToString()

Это короткая запись вот этого

obj != null && obj.ToString() == this.ToString()

Всякие Скалы/Котлины тоже так делают.
Советую освоить https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/
С ними жизнь станет в принципе легче. Там и твой ?. и ?[] имеются. И мой любимый ??, про который вечно все забывают.
Аноним 12/09/20 Суб 20:23:18 1804655145
Привет /pr/! Изучаю C#, думаю между бэкэндом и геймдевом. Геймдев как направление жив? Больно будет изучать Юнити? Как там с трудоустройством?
Аноним 13/09/20 Вск 03:16:22 1804902146
>>1804655
С геймдевом в РФ наверное никак. В Минске и Киеве может ещё как-то. За рубежом норм. Иногда удалёнка проскакивает.
Аноним 13/09/20 Вск 03:42:05 1804905147
image.png 69Кб, 848x510
848x510
Как вам такой шарп?
Font = Jokerman
Аноним 13/09/20 Вск 05:45:36 1804923148
Аноним 13/09/20 Вск 06:13:29 1804927149
Нахуя нужны другие языки и технологии, если .NET 5 позволяет писать кросс-платформенные консольные, веб-приложения, (бэкенд и фронтенд), игры (Unity), мобильные приложения (Android и iOS), причём с прекрасным высокоуровневым синтаксисом и великолепным перфомансом (не С/C++/Rust, конечно, но лучше всего остального)?
Аноним 13/09/20 Вск 06:17:29 1804928150
>>1804927
Потому что никому не нужен ваш всратый клон джавы, кроме анальных корпораций, которые не знают как запустить сервер на nginx
Аноним 13/09/20 Вск 10:34:59 1805033151
>>1804928
сам понял что сказал?
Аноним 13/09/20 Вск 11:18:40 1805060152
>>1804927
Шарп уже занял свою нишу в бюджетных организациях и энтерпрайзах с виндовыми серверами (коих полторы штуки). В остальном тобой перечисленном есть варианты куда лучше и современнее - дарт, реакт нейтив, котлин, го.
Аноним 13/09/20 Вск 11:30:34 1805063153
>>1805060
>с виндовыми серверами (коих полторы штуки)
9-15% рынка приходится на IIS, не мало.
Аноним 13/09/20 Вск 13:37:51 1805135154
>>1797054 (OP)
Можно ли сделать как-то так,
чтобы на вход одного метода подавался
либо FileStream, либо MemoryStream,
и возвращался соответственно либо FS, либо MS?
Или надо обязательно два метода запиливать?
Аноним 13/09/20 Вск 13:43:22 1805142155
20200305031119.jpg 80Кб, 535x623
535x623
Аноним 13/09/20 Вск 16:03:37 1805275156
15985611876240.jpg 164Кб, 950x632
950x632
Котаны, насколько плохая практика использовать в словаре ссылки в качестве ключа? Если при этом в классе не переопределяются GetHashCode и Equals.
Аноним 13/09/20 Вск 16:29:32 1805306157
>>1805275
Нормально, главное память не засри.
Аноним 13/09/20 Вск 16:54:52 1805323158
>>1805060
>дарт
смотри "реакт нейтив"
>реакт нейтив
Как там дела с потоками обстоят? С нормальной то есть. А ну да. Для приложений формочек оно же не нужно.
>котлин
неплоха неплоха. Но, как обычно, в бочке меда захерачили пару половников говна в виде синтаксиса и мозголомательных вещей. Чет не видно чтобы все жависты ломанулись в котлин
>го.
распиареное говно. годится для разной мелочи только

В итоге получаем кучу языков, где все не слава богу. Из которых только котлин куда ни шло, но займет место жавы(не жс) в гуишных приложухах, то есть "андроид онли"
Аноним 13/09/20 Вск 17:58:04 1805372159
Дотнет или джанго, что лучше брать фронтенд-макаке для своих поделок в перспективе хочу фуллстечить и перекатиться на апворк?
Аноним 13/09/20 Вск 18:02:11 1805380160
>>1805372
"для себя" все упирается в любовь к языку же
Аноним 13/09/20 Вск 18:04:24 1805385161
>>1805380
У меня особо нет времени чтобы пощупать и то и другое, да и любовь к языку весьма расплывчатое понятие и приходит где то спустя пол года владения оным.
Если сравнивать по скорости входа что будет попроще дотнет или джанго?
А если в плане качества и вариативности проектов?
Аноним 13/09/20 Вск 18:13:25 1805396162
>>1805372
> брать фронтенд-макаке для своих поделок в перспективе хочу фуллстечить и перекатиться на апворк

Тогда бери очевидный PHP, на шарпе и петухоне фриланса нет, исключением будет только реальный опыт работы.
Аноним 13/09/20 Вск 18:14:24 1805399163
>>1805385
тогда смотри на перспективу. У нас ты на шарпе не найдешь работы, а на питоне море конкуренции.

пхп всегда в цене )))
Аноним 13/09/20 Вск 18:19:12 1805406164
>>1805396
>>1805399
Да вот что то не хочу я пхп учить) Попахивает говном
Аноним 13/09/20 Вск 18:19:46 1805407165
>>1805142
А можно ли сделать как-то так,
чтобы вообще нихуя не надо было запиливать,
и чтобы оно всё уже было запилено,
и допиливалось по мере появленадобности,
своевременно, высококачественно, безошибочно,
актуально, и ещё и быстро, и ещё и с трепетом?
Аноним 13/09/20 Вск 18:22:31 1805411166
>>1805407
да. главное готовь бабло
Аноним 13/09/20 Вск 18:24:42 1805413167
>>1805411
Я те чё, бля, печатный станок?
Его, этот станок, самозапиливать надо автоматизированно, тогда и бабло будет с него высераться, бесплатно и без смс.
Аноним 13/09/20 Вск 18:25:09 1805414168
>>1805406
Тогда учи что хочешь, долбоеб.
Аноним 13/09/20 Вск 19:38:24 1805514169
Ребятки, можете привести реальный пример использования yield return?
Ну, т.е. я прочитал про него, вроде как понял что эта фигня нужна чтобы вернуть IEnumerable<T> лениво. Вроде прикольно. А вот как это использовать-то в чем-то реальном не понял. Просто вот я придумал такую вот фигню, допустим я делаю запрос, в ответе мне приходит длинный json, я его десерелизую там как раз IEnumerable<IResponse>, я хочу теперь по всем респонсам пройтись и что-то в зависимости от респонса сделать, но не могу понять могу ли я использовать yield, а если могу, то как и когда? Для примера, вот код, с абстрактным апи, которое возвращает абстрактные фотки https://ideone.com/q5abi5 . Где где тут можно использовать этот yield и как?
Аноним 13/09/20 Вск 20:04:18 1805541170
>>1805514
>реальный пример использования yield return?

Когда нужно возвращать из метода IEnumerable и тебе лень/неэффективно/нечитабельно писать свой IEnumerator.

Как пример:

public IEnumerable<HttpResponseMessage> ExecuteRequest(HttpRequestMessage request)
{
    yeild return ExecuteRequestWithMainProvider(request);
    yeild return ExecuteRequestWithReserveProvider(request);
    yeild return HttpResponseMessage.Empty;
}

var response = ExecuteRequestAsync(request).First(resp=>resp != null);

В итоге ты получишь либо ответ на запрос от одного из провайдеров, либо пустой ответ, который будет означать, что ни один из провайдеров не смог выполнить запрос.
Аноним 13/09/20 Вск 20:13:51 1805548171
>>1805541
Хм. Вроде понял. Спасибо.
Аноним 13/09/20 Вск 22:03:52 1805665172
>>1804927
Именно, тем же вопросом уже пару лет задаюсь.

Когда работаешь с жабой, то складывается впечатление, что это продукт для студентов. Обеднён синтаксисом, инструментарием, какие-то выдуманные школьником наименования. Под каждую платформу надо плясать с бубном по два дня. И потом оно всё равно падает, и сеньоры/архитекторы объясняют, что ты забыл прочитать какой-то доп документ на 1000 страниц или потому что ты забыл поставить какой-то магический флаг о котором знают 2,5 анона или надо версию очередного супер JVM форка установить.

Котлин появился, потому что разработчиков страшно стошнило от работы с жабой. Стал жив благодаря Гуглу с его Андроидом. Теперь его пытаются натянуть куда только можно.

Го/Скала - прикольно, если уж пришлось завязаться на JVM, то можно и окунуться.

React и прочие смузи поделия - это вообще клоунада. Калькулятор, крестики-нолики и сайты визитки вполне пойдёт клепать. Эти программизды считают что выполнение простых миллисекундах операций за 1-10 сек - это норма.

С/C++/Rust - своя ниша, они будут ещё долго нужны.
Аноним 13/09/20 Вск 22:29:37 1805678173
>>1805665
Ну не надо на жаву гнать. Шарп хоть мне и больше нравится, но некоторых фишек жавы мне не хватает в нем.
Аноним 13/09/20 Вск 22:33:18 1805679174
>>1805142
А можно сделать что-то вроде public static void Method(var param1),
где param1 - (string)"путь к файлу" для создания FileStream из него,
или же byte[] для создания MemoryStream,
а var - это нечто вроде - похуй на тип param1, это может быть как string, так и byte[]?
Как выразить это не знаю, но сдаётся мне, что надо букву T куда-то приписать, и вот этот от where, ещё, в довесок.
Аноним 13/09/20 Вск 23:12:09 1805700175
Аноним 13/09/20 Вск 23:12:38 1805701176
>>1805679
пиши с перегрузками. не мудри
иначе T без where и потом typeof(T)== в теле
Аноним 13/09/20 Вск 23:15:16 1805704177
>>1805678
Хз, я как-то уже будучи сеньором переключился на жава проекты на пару лет внутри большой корпорации. Там было достаточно архитекторов и жава сеньоров, у которых можно было спрашивать как делать правильно. Мой код всегда проходил через их код ревью без проблем. Но я продолжал материться на протяжении всех двух лет. В итоге не выдержал и вернулся назад в дотнет.
Аноним 13/09/20 Вск 23:19:28 1805707178
>>1805679
Просто делаешь перегрузки вида

public static void Method(string filePath)
{
HandleStream(File.Open(filePath);
}

и

public static void Method(byte[] buffer)
{
HandleStream(new MemoryStream(buffer));
}

А HandleStream уже будет:

private static void HandleStream<T> (T stream)
where T : Stream
{

}
Аноним 13/09/20 Вск 23:49:13 1805726179
Новые энтерпрайзы и стартапы пишутся сейчас на .нет кор? Или технология родилась мертвой?
Аноним 14/09/20 Пнд 00:00:47 1805732180
>>1805700
Ну, например возможности нормально пометить что может бросить метод. В шарпе ты либо будешь пилить атрибуты свои, либо в коментах писать, а коменты многие не пишут, либо забывают в них написать что метод может кинуть исключение.
Возможность в одном блоке несколько типов исключений ловить.
Свич в последних версиях удобный, хотя в шарпе тоже стал получше.
Перечисления который без всяких методов расширения позволяет дополнительные штуки из себя получать. В шарпе вот енамы по дефолту - чисто для хранения констант, а иногда нужно все равно логику какую-то от этих констант иметь, допустим у тебя в перечислении цвета.
enum Color{
RED,
GREEN,
BLUE,
PRIMARY,
SECONDARY
}

И вот ты передаешь это по коду, и хотелось бы код цвета получить из этого перечисления. Ну вот так вот, хочется и все тут. В шарпе ты будешь вынужден прибегать к расширениям, а т.к. люди не совсем привыкли к тому что у енамов есть какие-то методы, они не сразу будут въезжать в код. В Джаве же никаких проблем с этим нет, у тебя Enum может и данные хранить и вообще, по сути, каждое значение перечисления это инстанс неизменяемый. Это смешной, наверное пример, но на самом деле бывает часто полезно иметь эту возможность. Опять же, в шарпе достигнуть этого можно, но оно там не на своем месте смотрится, потому что, по сути, enum в шарпе - эо набор именованных констант

Это первое что вспомнилось, и чего мне таки не хватает в шарпе немного.
Аноним 14/09/20 Пнд 00:16:06 1805742181
>>1805726
А какой смысл "новые" писать на шарпе и не на нет кор?!
Вопрос должен быть другой "многие ли переводят на кор свои ентерпрайзы"

я вот знаю один такой - антиплагиат
про SO можно и не говорить - они само собой
Аноним 14/09/20 Пнд 00:52:52 1805756182
>>1805732
>возможности нормально пометить что может бросить метод.

Но ведь checked exceptions нынче считаются антифичей
Аноним 14/09/20 Пнд 03:52:42 1805811183
image.png 33Кб, 1421x331
1421x331
image.png 49Кб, 914x371
914x371
>>1805732
>возможности нормально пометить что может бросить метод
>Возможность в одном блоке несколько типов исключений ловить.
Меня это в жаве сильно бесило. Код надо стараться писать так, чтобы исключения в принципе не бросались. Всех возможных исключений (особенно когда с чем-то внешним работаешь) невозможно перечислить.
В шарпе очень нравится when для фильтра исключений (пик рилэйтед).

switch with pattern matching = awesome! (пик рилэйтед)

>Перечисления который без всяких методов расширения позволяет дополнительные штуки из себя получать.
>Using enums for control flow or more robust abstractions can be a code smell. This type of usage leads to fragile code with many control flow statements checking values of the enum.

SOLID все дела. Не стремитесь создавать швейцарский нож из всего подряд! Single Responsibility - делай одну вещь и делай её хорошо.
Enum позволяет
- упростить читаемость кода;
- повысить производительность;
- помогает избегать всяких магических значений по всей системе;
- предоставляет контракт для взаимодействия между разными частями системы.

>без всяких методов расширения
>логику какую-то
Open–Closed principle - вместо добавления кучи магии для весьма сомнительных бенефитов делай расширения, если нужно добавить особую логику. Шарп всё правильно делает.
Для твоего примера с кодом цвета добавь какой-нибудь HashMap (Dictionary<Color, ColorCode>). У тебя будет разделение логики по смыслу и не надо будет тащить одного монстра везде подряд, даже если он там нафиг не сдался. Особенно (!) если ты enum для поля в БД используешь.

Для особых случаев с enum можно вот сюда посмотреть
https://docs.microsoft.com/en-us/dotnet/architecture/microservices/microservice-ddd-cqrs-patterns/enumeration-classes-over-enum-types

Type-Safe enum
https://www.meziantou.net/smart-enums-type-safe-enums-in-dotnet.htm
Аноним 14/09/20 Пнд 08:46:20 1805847184
>>1804927
а можно узнать, как этот NET 5 защитить от хакеров, не от взлома, а от декомпиляции. Ведь байт код net - это по сути опенсоурс.
Аноним 14/09/20 Пнд 09:08:36 1805853185
>>1805847
Только запутыванием логики, т.е ты пишешь программу которая будет переписывать твою программу так чтобы ахуели все, даже ты в конечном итоге.
Обфускация как вариант, но так себе работает если ты не сам ее писал. Еще есть варианты писать критичный код на С или С++ и через pinvoke вызывать.
Ну или обрабатывать критичные вещи на своем сервере отдавай только ответ.
Аноним 14/09/20 Пнд 09:25:47 1805862186
>>1805732
>>1805811
Для того чтобы хранить код цвета в перечислении, что мешает объявить его вот так:

enum Color{
Red = 0xFF0000,
Green = 0x008000
}
Аноним 14/09/20 Пнд 09:36:05 1805872187
Тупой вопрос. Читаю сейчас про EF Core и там в дб контексте постоянно для конфигурации дб используются выражения вроде:
>modelBuilder.Entity<User>().HasOne(p => p.Company).WithMany(t => t.Users).HasForeignKey(p => p.CompanyInfoKey);
И собственно вопрос в том, что правильно же я понимаю, что строчки в методе OnModelCreating будут выполнятся только один раз, а потом их из кода можно удалить, потому что они уже привели базу данных к нужному мне виду?
Аноним 14/09/20 Пнд 09:46:06 1805888188
>>1805853
все это я уже знаю, ничего нового. Для десктопа не айс NET
Аноним 14/09/20 Пнд 09:58:48 1805896189
>>1805888
Все языки которые не компилируются в нативный код такие.
Но что ты такое хочешь спрятать если боишься что у тебя сопрут?
Просто по факту если захотят спереть и нативный код сопрут, так что защита чего угодно сейчас на компе дело условное.
Аноним 14/09/20 Пнд 10:39:57 1805921190
>>1805896
говнокод мой увидят))
ты пишешь десктоп приложение, защищаешь его крутым мега-протектором за 300$, а любой школоло качает de4dot, и декомпилит за 2 сек. твою прогу, меняет авторство на свое, и вуаля - клон твоей программы бродит по сети, со смешным ценником в 100 руб.)
Аноним 14/09/20 Пнд 11:27:40 1805961191
>>1805921
И зачем ты говоришь о том чего не знаешь, долбоебина? Бесплатный обфускатор + аутентификация по сети и твоё приложение в безопасности. У моего знакомого коммерческий проект, он в нём использует такую схему, единственный раз когда его программу перепродавали был в тот момент когда кто-то купил лицензию, установил её на виртуалку а потом образ этой виртуалки перепродавал. Но он это быстро вычислил и аннулировал лицензию, в следующий раз они уже такое проворачивать не стали.
Аноним 14/09/20 Пнд 11:57:04 1805994192
>>1805961
>аутентификация по сети и твоё приложение в безопасности
аутентификация по сети вообще ни на что не влияет. А обфускация повышает "да чет лень ковырять ломать"

компиляция в натив которую обещают еще больше повысит этот порог
Аноним 14/09/20 Пнд 12:07:00 1806008193
>>1805994
>аутентификация по сети вообще ни на что не влияет.
Обновления сам делать будешь?
При её помощи можно добавлять дополнительные слои вида:
При закрытии программы можно шифровать ключевые файлы, а ключ к их расшифровке хранить на сервере и получать его при следующем запуске программы.
В общем, очевидно, что ты один из тех кукаретиков, которые не разбираются в вопросе, а говорят так как чувствуют.
Аноним 14/09/20 Пнд 12:11:31 1806020194
>>1806008
>Обновления сам делать будешь?
хрякер перепродает текующую версию. он влзломал продал и забыл. зачем ему возня с обновами. Если нужны будут обновы то ему снова бабла занесут и все.

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

зы: вот если бы ты сказал что буду получать по сети сам исполняемый байткод, впрочем даже это не защита
Аноним 14/09/20 Пнд 12:17:17 1806027195
>>1806020
>я всё взламать магу!!!
>RDR2 до сих пор не взломан

>ему снова бабла занесут и все.

Конечно занесут, а потом еще, им ведь взломанная версия нужна не для того чтобы денег сэкономить, а просто чтобы великого хакира кормить. Всё так, сычуш, всё так.
Аноним 14/09/20 Пнд 12:23:08 1806041196
>>1806027
>им ведь взломанная версия нужна не для того чтобы денег сэкономить,
ну то есть все упирается в "неуловимый джо" и "стоит ли ломать или да ну нах"
ну это как и везде. Но в случае байткода ломать намного легче и сетевая аутентификация не сильно усложняет задачу

>>RDR2 до сих пор не взломан
он скомпилирован в байткод? или все же в натив? зачем ты это сюда принес
Аноним 14/09/20 Пнд 12:36:19 1806066197
>>1805726
В моем окружении все новое пишется на нет кор (и всем очень нравиться), старое тоже все пытаются перевести, если не слишком много трудозатрат.
Аноним 14/09/20 Пнд 12:37:41 1806067198
>>1806027
>им ведь взломанная версия нужна не для того чтобы денег сэкономить,
тут вопрос кому им

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

зызызы:
и в тот же рдр2 можно "купить" за сколько там рублей было. 450 вроде. лень смотреть.
Я бордерлендс3 "купил" за 100 руб, правда игра говно, но это уже другой разговор
Аноним 14/09/20 Пнд 12:45:03 1806070199
>>1805872
Проверять я конечно не буду, но рискну предположить, что этот код может использоваться при миграциях и валидации соответствия мапинга базе данных. Но смысла удалять не вижу - вдруг захочется еще одну такую же БД сгенерировать для другой среды.
Аноним 14/09/20 Пнд 13:25:34 1806087200
Здарова, котаны.
Джун .нета в треде. Скажите, .net/asp.net сильно отличается от .net core/asp.net core? Писал учебный проект на коре, реальный предлагают на обычном. Много там переучиваться?
Аноним 14/09/20 Пнд 13:40:18 1806095201
>>1806087
Отличия не принципиальны. Если проект уже существующий - почти не заметишь разницы поначалу, если новый - немного нужно почитать как намутить ASP.NET Core апликацию с ее IoC, стартапом и конфигурацией.
Аноним 14/09/20 Пнд 13:45:55 1806100202
>>1806095
Проебался в глаза.
Проект уже существующий, по всей видимости, трудностей быть не должно. Сам так начинал карьеру.
Аноним 14/09/20 Пнд 14:13:44 1806106203
Когда я использую протокол UDP, то при большом размере файла (больше 64 кб) я не могу отправить его с помощью метода
serverSocket.SendTo(file, clientEndPoint);
Как я понял, дело в ограничении размера транспортного сегмента/датаграма, он не может быть больше 64 кб (а часто даже не больше 1 кб).
Но почему тогда при использовании протокола TCP и метода
clientSocket.Send(file);
такого ограничения нет и мне позволяют хоть 20 мб переслать за раз?
Аноним 14/09/20 Пнд 14:18:09 1806107204
asp-net-mvc-1-[[...].jpg 9Кб, 400x239
400x239
Требуется помощь!
У меня есть веб приложение на асп.нет с айдентити.
Я хочу добавить в это приложение веб сервис, который будет возвращать какие-то значения, которые привязаны к пользователю. Не могу понять, как это вместе связать. Апи-контроллер и Авторизацию.
Подскажите, плес, господа программисты!
Аноним 14/09/20 Пнд 14:34:55 1806119205
>>1805961
>+ аутентификация по сети
поорал блядь. Твоя аутентификация так же легко выковыривается.
Аноним 14/09/20 Пнд 14:38:37 1806123206
>>1806119
да какая разница. мне просто нужен пользователь авторизованный. как это вместе объединить-то?
Аноним 14/09/20 Пнд 14:43:34 1806131207
>>1806008
у хакера твой код. Что ты там собрался шифровать, лолка? Трудно твой метод шифровки заккоментить, чтобы вообще ничего не шифровалось?
Аноним 14/09/20 Пнд 14:46:43 1806140208
>>1806131
блядь, ничего я не собрался шифровать, мне похую. чтобы самому не писать авторизацию, я использовал то, че уже есть. че ты доебался-то до меня, пидрила обоссаный?
Аноним 14/09/20 Пнд 14:48:19 1806141209
>>1806140
ты тугодум, посмотри, на какие я посты отвечал
Аноним 14/09/20 Пнд 14:50:31 1806144210
>>1806107
по http протоколу можно запилить, возврат в json, на клиенте уже распарсишь и все.
Аноним 14/09/20 Пнд 14:54:58 1806150211
>>1806144
можно поподробнее описать
Аноним 14/09/20 Пнд 14:57:48 1806155212
>>1806107
Когда ты авторизируешься, тебе дают токен, который прикладывается к каждому запросу. В этом токене хранятся данные о текущем пользователе. В коре я это делал так -
return User.FindFirstValue(ClaimTypes.NameIdentifier);
Если ты в обычном .NET то хз, ищи что-то подобное.
Аноним 14/09/20 Пнд 15:00:29 1806159213
>>1806008
>при закрытии программы можно шифровать ключевые файлы, а ключ к их расшифровке хранить на сервере и получать его при следующем запуске программы.

>В общем, очевидно, что ты один из тех кукаретиков, которые не разбираются в вопросе, а говорят так как чувствуют.

разбирается он в вопросе блядь, трололо.

ДО:

string auth(){
httprequest
.......
return {auth : "ok", key: "qwertyuiop"}
}


ПОСЛЕ:

string auth(){
// httprequest заккоментили просто, и вернули что надо.
// .......
return {auth : "ok", key: "qwertyuiop"}
}


Что ты тут своей аутентификацией сделаешь долбоебушка?
Аноним 14/09/20 Пнд 15:02:16 1806163214
Товарищи погроммисты, помогите разобраться с вакансией. Наша компания выставила вот такую вакансию https://kazan.hh.ru/vacancy/38910125
Почему нет откликов? Зарплата не устраивает? У нас в требованиях нет ничего сверхсложного или отталкивающего. Что не так?
Аноним 14/09/20 Пнд 15:08:48 1806174215
>>1806163
>Фарт
>Fart
>Пук
Вам срочно нужно менять имя. Ну и криптовалюты это конечно полный зашквар.
Аноним 14/09/20 Пнд 15:12:25 1806178216
>>1806174
Сменили уже. Это старое имя. Сейчас компания называется по-другому
Аноним 14/09/20 Пнд 15:21:13 1806188217
>>1806163
По мне норм вообще и стек очень узкий - сходил бы на собеседование если бы сидел без работы и жил рядом.
Аноним 14/09/20 Пнд 15:27:43 1806197218
>>1806159
>Что ты тут своей аутентификацией сделаешь долбоебушка?
ну вообще то он предлагал присылать ключ для расшифровки зашифрованных рабочих файлов на время работы, что не дает взломать без подписки.

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

Конечно можно проверять бинарник на модификацию, запрещать отладчик и так далее. но это уже не "простая обфускация"
Аноним 14/09/20 Пнд 15:37:13 1806212219
>>1806163
1 8??? часовой график работы с 9 до 20 это как? выбирай 8 часов из этого промежутка?
2 Непонятно про рост зарплаты. Вроде бы хотя фуллстек, но 100к это так и останется?
3 я как дотнетчик терпеть не могу фронт. Впрочем я и не зову себя фулл стек.
Аноним 14/09/20 Пнд 15:46:50 1806228220
>>1806212
> выбирай 8 часов из этого промежутка?
Да
> 100к это так и останется
Переиндексация имеется. И причем здесь фуллстек-не фуллстек?
Аноним 14/09/20 Пнд 15:52:58 1806233221
>>1806197
>ну вообще то он предлагал присылать ключ для расшифровки зашифрованных рабочих файлов на время работы, что не дает взломать без подписки.

достаточно одной лицензии, чтобы отломать такую защиту
Аноним 14/09/20 Пнд 16:05:36 1806242222
>>1806228
>Переиндексация имеется. И причем здесь фуллстек-не фуллстек?
да не причем в общем то. Проще проехать чем развивать тему.

Ну а так я предпочитаю видеть зарплатную вилку. И понимать, что "я джун и 100к это хорошо" или "я не джун и 100к это как то не то"
ну и тому подобное
Аноним 14/09/20 Пнд 16:10:05 1806249223
>>1806242
> я предпочитаю видеть зарплатную вилку
> от 100 000 руб. на руки
Верхнего предела нет. Если ты стоишь 250 000, то мы и предлагаем столько
Аноним 14/09/20 Пнд 16:31:14 1806291224
>>1805732
>Возможность в одном блоке несколько типов исключений ловить.
вроде ж в шарпе 9 можна будет
Аноним 14/09/20 Пнд 16:33:22 1806294225
>>1806249
Человек видит цифру 100к и сразу считает, что это и есть цена, которую вы готовы платить. Поставьте потолок тоже, те же 250к. Хот лучше две вакансии в таком случае сделать: миддл и сеньвор, с двумя вилками.
Аноним 14/09/20 Пнд 16:34:31 1806297226
>>1805862
Если очень хочется, то тоже можно. Но анон говорил про добавлении логики и данных в простой enum в принципе.
Аноним 14/09/20 Пнд 16:35:55 1806301227
Аноним 14/09/20 Пнд 16:36:46 1806303228
>>1806291
И щас можно, только извратно:
catch (Exception e) when (e is ArgumentException || e is InvalidOperationException)
Аноним 14/09/20 Пнд 16:38:35 1806307229
>>1805847
Обфускаторы. Но нахуя? Проще сорцы тоже выложить.
Аноним 14/09/20 Пнд 16:38:41 1806308230
А кто нибудь щупал уже шарп 9?
Что блин конкретно попало в него в итоге?
А то рекордсы и в 8 обещали
Аноним 14/09/20 Пнд 16:49:09 1806319231
Аноним 14/09/20 Пнд 17:28:26 1806361232
А asp.net это популярная платформа? Я как-то совсем немного пытался вникнуть в неё и она выглядела настолько странно и костыльно по своей логике.
Аноним 14/09/20 Пнд 18:20:36 1806403233
>>1805994
>компиляция в натив которую обещают еще больше повысит этот порог
а когда эта компиляция в натив будет?
Аноним 14/09/20 Пнд 18:20:41 1806404234
>>1806106
Потому что это разные протоколы и работают они по разному. Что за тупые вопросы?
Аноним 14/09/20 Пнд 18:25:35 1806410235
>>1806163
Зато тут кукарекуют что работы нет, лол.
Аноним 14/09/20 Пнд 18:40:31 1806419236
>>1806119
Так иди RDR2 взламывай, чего ты тут сидишь, орун комнатный?
Аноним 14/09/20 Пнд 18:41:53 1806420237
>>1806131
Да. Я же всё по коду размазал и ему половину программы придётся менять чтобы эту шифровку убрать.
Аноним 14/09/20 Пнд 18:52:23 1806426238
>>1806419
а что в RDR2?

>>1806420
какой же ты тупой, я хуею. Там только возврат от твоего сервера фиксится, и возвращается нужное значение, хоть 100500 шифровок налепи далее.
Аноним 14/09/20 Пнд 18:56:58 1806429239
>>1806107
Создай блин проект с авторизацией и посмотри, кек. Посмтри какая структура у идентити и как он привязывает что-то к себе.
Если коротко, то добавляешь пару табличек в БД, у которых внешним ключом будет id пользователя из identity, потом в контроллере достаешь этого пользователя, соответственно и его id, и возвращаешь какие-то данные которые с этим id связаны. Все. Не понимаю что сложного
Аноним 14/09/20 Пнд 18:58:43 1806431240
>>1806361
Да, популярная. В чем костыльность и странность ощущается?
Аноним 14/09/20 Пнд 19:07:33 1806434241
>>1806163
1. Название поменяйте на .Net разработчик, либо .Net developer, программист ассоциируется с бюджетным дерьмом и нормальный разраб даже дальше читать не будет.
2. Требований слишком много, тут тебе и крипта, тут тебе и бэк с ОРМ, тут тебе и JS с TS, Ангуляром и даже CSS препроцессорами, тут тебе и оптимизация SQL запросов и работа с базами данных. И за всё это 100к. Зачем вы нужны, если джун-фронтендер со знаниями того же React/Angular/CSS с препроцессорами, зарабатывает всего на 30к меньше? А бэкендер может и столько же зарабатывать, а если в ДС/ДС-2 то больше.
3. У вас там в требованиях мидл/сеньор. На них всегда дефицит, и они не пойдут к вам с такими требованиями и такой зарплатой. За такое минимум 150к нужно предлагать, да и то вряд ли вы найдёте человека который удовлетворит ваши запросы, так как уж слишком большой охват технологий, такое просто физически помнить невозможно.
Аноним 14/09/20 Пнд 19:11:06 1806444242
Аноним 14/09/20 Пнд 19:12:58 1806446243
>>1806434
Так они хотят жнеца, плавца и на дуде игреца. А если не игрец, то обещают научить. Но да, денег мало на такого фуллстека.
Аноним 14/09/20 Пнд 19:14:27 1806447244
>>1806426
>какой же ты тупой, я хуею. Там только возврат от твоего сервера фиксится, и возвращается нужное значение

Хуею с дегенерата. У меня при шифровке генерируется массив байт, этот массив байт отправляется серверу для получения ключа расшифровки. Как думаешь, сколько времени у тебя уйдет на расшифровку алгоритма шифрования?
Аноним 14/09/20 Пнд 19:21:00 1806453245
>>1806447
сложно имея одну лицензию - получить твой ключ и вписать статично в возвращаемое значение? Хотя так никто не делает, ведь ты ключ заанишь. Делают по другому - где ты расшифровываешь все - подставляется нужное значение, и комментится твое шифрование.
Аноним 14/09/20 Пнд 19:22:25 1806454246
>>1806447
слышишь знающий - а ну давай сюда твой файл, супер защищенный)
Аноним 14/09/20 Пнд 19:47:50 1806479247
>>1805961
>>1806008
>>1806197
>>1806447

Абсолютно все защиты сходятся на паре маленьких if, твое шифрование, авторизация по сети, ключи все это ломается на изи если защиту делали не сотня людей которые наклепали тысячи таких if в различных местах от разных параметров и в ключевых местах работы программы. Так игры и защищают в основном, тупо потому что затем взломщику надо найти эти тысячи if и исправить их, а это ой как не просто может быть, особенно когда такой триггер срабатывает на редких событиях.
И опять же это защита через логику работы когда ты делаешь взлом крайне и крайне дорогим и трудоемким.
В идеале ключ используется каким-то образом в работе программы и без правильного ключа она тупо работает не правильно, но это надо на этапе архитектуры закладывать и крайне тяжело поддерживать.
Аноним 14/09/20 Пнд 19:58:05 1806495248
>>1806479
троль поверил, что его защита с бесплатным обфускатором, и его ключем, который приходит с сервера - не ломаемая)) Одно дело - когда продал 20 копий, и твоя прога нах никому не нужна, другое - если счет идет на тысячи.
Аноним 14/09/20 Пнд 20:07:57 1806517249
>>1806479
>>1806495

Да-да, вот только программа довольно популярна, приносит хороший доход и уже пережила несколько попыток взлома. Я понимаю, что школьникам, которые качают игры с торрентов, хочется мнить себя охуительными хакерами и фантазировать о том как они взламывают мир за секунду, но это никак на реальность не влияет, над этим можно только смеяться.
Аноним 14/09/20 Пнд 20:12:11 1806519250
>>1806517
ссылки на супер защищенную прогу, с помощью бесплатного обфускатора, я так понял - не будет? Горе-защитник)
Аноним 14/09/20 Пнд 20:14:54 1806527251
Чет уверен - что там конфузер какой-нить, который отлетает на раз, а дальше опен-сурс, где вертишь шифрование - как тебе угодно)
Аноним 14/09/20 Пнд 20:24:15 1806541252
Анон не знает о сайте https://forum.tuts4you.com/, где даже vmprot вскрывают на изи, а он собрался защищать прогу на уровне исходных кодов, че с него взять :)
Аноним 14/09/20 Пнд 20:30:19 1806556253
>>1806527
>>1806519
>>1806541
Хуею с припизднутого зумерка, который насмотрелся сериала Я робот, зашел на форум по реверс инженеригу и возомнил себя хакером. Ты долго еще в тред срать будешь, пытаясь защитить свой влажный манямирок?
Аноним 14/09/20 Пнд 20:32:30 1806561254
>>1806517
Я вот разработчик одного бота для ММО который тоже приносит доход и единственная эффективная защита это вычисление логики на сервере, т.е я передаю сырые данные на сервер, там произвожу вычисления и результат даю пользователю, естественно у меня там авторизация, конфузер и прочее дерьмо типа partial классов чтобы при декомпиляции был 1 файл на 100500 строк, но и это не особо помогает, есть те кто его крякает и дописывают логику.
Поэтому я каждые полгода что-то серьезно меняю и логику защиты в том числе и им приходится снова искать способы взлома т.е мы играем в кошки мышки где я чутка впереди так как минимум неделя у них на взлом уходит.
Но мне это не особо вредит так как люди сами хотят платить.
Аноним 14/09/20 Пнд 20:34:44 1806565255
>>1806561
Так кидай ссылку на бота в тред, сейчас этот зумерок обосранный его взломает за пару минут.
Аноним 14/09/20 Пнд 20:40:12 1806574256
Нужно написать инспектор объектов, а точнее свойств.
Я это уже сделал, но оно крайне плохо работает на больших объектах потому что рефлексия медленная штука и я знаю что можно сделать ее быстрее если перевести на делегаты, но вот проблема я не совсем понимаю как мне сделать делегат из объекта тип которого только в рантайме узнаю, т.е на вход к инспектору идет object, может кто подскажет что делать в этом случае, как сделать делегат если узнаешь тип только в рантайме через gettype
Аноним 14/09/20 Пнд 21:08:52 1806625257
>>1806565
Не выйдет я его через приват форума продаю где только проверенные, суть в том что на ботов идёт охота и это своего рода защита от бана пользователей
Аноним 14/09/20 Пнд 21:09:19 1806627258
>>1806574
ничего не понял

получаешь на вход объект, узнаешь его тип и далее рефлексей достаешь что тебе там надо
если нужно читать значения и рефлексия не устраивает, то генеришь всякие propertyReader
на каком этапе то затык?
Аноним 14/09/20 Пнд 21:12:45 1806630259
>>1806625
игра хотя бы какая? 3д?
Аноним 14/09/20 Пнд 21:51:20 1806652260
>>1806627
Getvalue работает в 10-20 раз медленнее чем вызов того же метода через делегат.
https://mattwarren.org/2016/12/14/Why-is-Reflection-slow/
Вот хочу получать get свойства через делегат, но при этом никакого хард кода Типа(type) потому что на входе может быть один объект из которого я затем делать дерево буду. Но как делать такое без хардкода хз.
Аноним 14/09/20 Пнд 21:57:35 1806658261
>>1806652
>Но как делать такое без хардкода хз.
еще менее понятно стало

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

готовых либ много если поискать
вот первые попавшаяся
https://github.com/mgravell/fast-member
https://github.com/buunguyen/fasterflect
https://github.com/KeRNeLith/ImmediateReflection

Аноним 14/09/20 Пнд 23:07:48 1806742262
.mp4 1068Кб, 576x1024, 00:00:17
576x1024
Есть форма, которая создается и показывается сторонним пакетом. Вопрос: как можно наиболее эффективно ее закрыть, или не дать ей появиться? Пока просто в цикле проверяю Application.OpenForms[Application.OpenForms.Count - 1] и закрываю. Но может есть более рациональное решение?
Аноним 14/09/20 Пнд 23:32:26 1806799263
>>1806742
Устранить причину её появления.
Аноним 14/09/20 Пнд 23:34:30 1806805264
>>1806799
Ну мне нужен этот пакет, вот и извращаюсь.
Аноним 14/09/20 Пнд 23:38:33 1806809265
Аноним 15/09/20 Втр 00:30:18 1806868266
>>1806809
>дык исправь его
Это окно рекламы("купите полную версию всего за 599$"), сомневаюсь, что это так просто.
Аноним 15/09/20 Втр 00:39:42 1806873267
>>1806868
исправить просто
сложно найти 599$ а исправить просто
а еще есть один иранский сайт
и наконец никто не запрещает подправить байткод
Аноним 15/09/20 Втр 00:56:17 1806881268
.mp4 1787Кб, 540x960, 00:00:16
540x960
Аноним 15/09/20 Втр 01:03:45 1806886269
Аноним 15/09/20 Втр 01:13:53 1806891270
.mp4 1512Кб, 540x960, 00:00:10
540x960
>>1806886
Ок, спасибо, завтра буду разбираться как это делается.

>downloadly.ir
Там этого нету.
Аноним 15/09/20 Втр 07:32:15 1806981271
Я правильно понимаю, что range operator (array[2..10]) эквивалентен методу Span.Slice()? Значит сплайсы больше не нужны?
Аноним 15/09/20 Втр 07:33:41 1806983272
Аноним 15/09/20 Втр 08:54:08 1806997273
>>1806434
> За такое минимум 150к нужно предлагать
Да мы предлагаем. У меня самого з/п не меньше. В вакансии же написано "от 100"

Ладно, в общем сегодня предложу руководству сделать две вакансии
Аноним 15/09/20 Втр 09:29:06 1807010274
>>1806981
Ну если это твой пет-проект, то конечно не нужны, но реальность такова, что большая часть кода это код под .Net 4.5 без поддержки новых фитчей языка.
Аноним 15/09/20 Втр 10:15:19 1807037275
>>1807010
Да ладно? Никогда бы не подумал, что если какая-то фича не доступна, то придётся пользоваться тем, что есть. Я спрашиваю, у слайса есть какое-то своё применение, или range operator его полностью заменяет? И нужен ли вообще тип Span в таком случае? Просто в том примере применения типа Span, что я видел, приводится как раз слайс массива на несколько частей, чтобы не выделять память на новые массивы, в которые бы пришлось копировать элементы старого.
Аноним 15/09/20 Втр 10:22:20 1807043276
Qqq
Аноним 15/09/20 Втр 10:32:56 1807051277
>>1807037
>Span
Служит для оптимизации работы с памятью, а не для того чтобы заменить цикл for var i = 2; i < 10; i ++
А ренж оператор это обычный сахарок, который сделан по типу петухоновского.
Аноним 15/09/20 Втр 10:53:47 1807071278
>>1806163
Сходил бы к вам. А, нет, не сходил – у вас опыт от трех лет, а у меня только год и я из другого города
Аноним 15/09/20 Втр 13:12:34 1807146279
Аноны, имеется приложуха на asp.net core. Там имеется partial view, где происходит аплоад файла. Так вот, эта partial view работает на всех вьюхах, кроме одной единственной, там она даже кнопка "browse" выглядит без стилей и загрузка нифига не работает. Отчего так бывает?
Аноним 15/09/20 Втр 13:48:53 1807175280
>>1799249
1. Удаляешь nuget пакет EntityFrameworkCore.SqlServer
2. Устанавливаешь nuget пакет Npgsql.EntityFrameworkCore
3. Меняешь в Startup.cs UseSqlServer на UseNpgsql
всё
Аноним 15/09/20 Втр 18:51:08 1807465281
>>1806163
https://kazan.hh.ru/vacancy/39244462
https://kazan.hh.ru/vacancy/39244069

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

Большое всем спасибо. Вы реально помогли
Аноним 15/09/20 Втр 19:12:08 1807472282
.mp4 1467Кб, 576x1024, 00:00:18
576x1024
>>1806886
>>1806881
Ух ты, анончик, спасибо большое! Нашел нужный кусок, затер, все превосходно работает. Но почему это достигается исключительно через правку байткода? Компилировать даже никак не измененный кусок не хочет - тонны ошибок.
Аноним 15/09/20 Втр 19:34:02 1807487283
>>1807472
если ты про "дотпик экспортит в проект, а оно не собирается", то это потому что у тебя нет оригинального проекта *.csproj с как оно там собирается
Ну и баги декомпиляции, когда оно декомпилится в лабуду
Аноним 15/09/20 Втр 19:36:30 1807492284
>>1807487
Нет, я про dnSpy, но я так понимаю причина та же, ок.
Аноним 15/09/20 Втр 20:18:44 1807523285
>>1806658
Попробовал проверить эти либы на скорость и результат мягко говоря так себе.

На 10 лямов вышло вот так.

Classic: 30,6128 ms.
Reflection: 1287,4855 ms.
Delegate: 56,0964 ms.
Fasterflect not cached: 1167,4195 ms.
Fasterflect cached: 1255,3272 ms.
ImmediateReflection: 1396,9336 ms.
fast-member: 1771,6747 ms.

Вот код на 1 лям итераций без fast-member так как его сам компилировал
https://dotnetfiddle.net/4QwGjL

Я же хотел найти способ как в случае Delegate, но чтобы без хардкода типа.

Аноним 15/09/20 Втр 20:27:34 1807530286
>>1807523
>но чтобы без хардкода типа.
да блин без какого хардкода? раскрой тему что есть хардкод блин

В остальном же
1 кто же меряет стопвотчем
2 да еще онлайн
3 да еще забывая сделать реста
4 и при этом еще считая в тесте время генерации гетера.

Аноним 15/09/20 Втр 20:28:02 1807531287
Подскажите годную книгу для вебмакаки ну или курс какой нибудь, чтобы посмотрел/почитал повторил и пошел говнякать бэкенд для своих проектов?
Аноним 15/09/20 Втр 20:53:38 1807553288
>>1807530
Пиздец ты тупорылое животное, очевидно, что без вот такого хардкода:

var delegateMethod = (DelegateMethodName) Delegate.CreateDelegate( ...
Аноним 15/09/20 Втр 20:54:36 1807554289
>>1807531
Для своих проектов есть Node.JS, если хочешь статическую типизацию, то есть Typescript, ебаться с .Net для своих проектов не имеет смысла.
Аноним 15/09/20 Втр 21:12:21 1807565290
>>1807553
то есть без кодогенерации. с помощью магии?
Аноним 15/09/20 Втр 22:08:15 1807627291
Такой вот тупейший вопрос. Как сделать так чтобы окно консольки всегда было поверх других окон, пока не закроешь его?
Я гуглил и все что нашел это страшные штуки с kernel32, маршалингом и передачей IntPtr. А я в шапр-то убежал из-за того что как увидел это в с++ подумал - ну его нахуй.
В общем, неужели нет более удобных способов заставить окошко консольной программы быть всегда сверху других окон?
Зачем надо? Я сделал простенький таймер рабочего времени в виде консольного приложения, ну чтобы не забывать выйти покурить, если зарабатываюсь, ну и именно такой простенький таймерок в консольке мне норм, но хочется чтобы он всегда висел сверху, чтоб не забывать про него.
Аноним 15/09/20 Втр 22:18:03 1807640292
>>1807627
сложно переместить таймер с консоли на форму?
Аноним 15/09/20 Втр 22:20:16 1807641293
>>1807640
и не трахать себе мозг?
Аноним 15/09/20 Втр 22:20:31 1807642294
>>1807627
Нет, только через kernel
Аноним 15/09/20 Втр 22:43:33 1807667295
>>1807640
У меня на работе линукс просто и я слышал что там вроде были формы, но вроде их только под винду же завезли.
>>1807642
Ну блин, проблема на самом деле не в кернеле, а в том что на деле я на линухах сижу и думал что может быть с переходом на core MS завезли какой-то общий апи для работы с консолькой, чтобы такие вот штуки можно было просто делать. Грустненько.
Аноним 16/09/20 Срд 03:57:01 1807850296
>>1807554
Так я для последующего перекачеввния на фриланс/развития как фуллстек собираюсь учить
Аноним 16/09/20 Срд 07:20:27 1807897297
Анон, не знаю, поможешь нет.

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

Я так понимаю, во всяких юнити юзают для этого mono - а что почитать по данной теме?

Второй вопрос - и это можно только через mono? А например .net core нельзя?
Аноним 16/09/20 Срд 07:44:18 1807906298
>>1807897
не "во всяких юнити юзают для этого моно"
а все упирается в "на чем работает юнити"

Аноним 16/09/20 Срд 07:55:59 1807913299
>>1807906
само юнити или игры?

Но ведь .net core как раз же развивают в сторону мультиплатформы и отвязки от винды
Аноним 16/09/20 Срд 08:08:12 1807914300
>>1807913
сам движок юнити это моно

>Но ведь .net core как раз же развивают
но это же не значит, что все на него перешли. легаси оно такое
Аноним 16/09/20 Срд 08:14:28 1807917301
>>1807914
нет. У меня есть украденные китайцами исходники юнити - там С++ код, над которым уже сделана шарп оболочка для скриптинга
То что выкладывается на шарпе - это не исходники юнити, это исходники оболочки надстроенной поверх ядра юнити.

Но речь не об юнити, а о том как сделать у себя скриптинг С#. Как например сделано в годоте, bsf и т.д.
Аноним 16/09/20 Срд 08:29:58 1807922302
>>1807917
>над которым уже сделана шарп оболочка для скриптинга
а шарп в чем выполняется? ему нужен рантайм. и этот рантайм есть юнити.

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

Аноним 16/09/20 Срд 08:30:20 1807923303
>>1807922
> и этот рантайм есть юнити.
и этот рантайм есть юнити == и этот рантайм есть моно
Аноним 16/09/20 Срд 08:35:16 1807925304
>>1807917
то есть ты как рантайм можешь взять что угодно
для тебя без разницы. разница будет для скриптующего если он захочет либу какую то подключить, а ее нет под выбранный рантайм. но уже почти дотнет5 так что все уже есть
Аноним 16/09/20 Срд 09:15:48 1807950305
image.png 117Кб, 770x282
770x282
Начал проходить курс от skillbox по разработке игр на Unity. Ну и сначала ж там идёт C#. Дошло дело до массивов и домашнее задание состояло в том, что бы нарисовать в консоли треугольник паскаля. Ну я закономерно сфейлился. Только по туториалу на ютубе понял суть, это норма?
Аноним 16/09/20 Срд 09:47:04 1807964306
>>1807950
проблема таких "задач" в том что они на дрочку математики, а не программирования.

Я эту задачу тоже не решу, потому что не ебу как там считается этот треугольник Паскаля на бумажке.
На гугление я потрачу 10-20 минут
На попытку вникнуть в формулы - 20-30 минут
На программирование - 1-2 минуты.


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

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

Меня вон даже числа Фибоначи бесят - нахуя рекурсию на них показывают? Есть более простые способы показать рекурсию. Я вообще программирование начал изучать в 10 лет - какой блядь Фибоначи, какой матан? Спокойно на нормальных примерах разобрался и с рекурсией и со многим другим.

Аноним 16/09/20 Срд 10:39:57 1807980307
>>1807964
Так в том то и дело, что суть треугольника и откуда берутся цифры эти я понял за пол минуты, а вот запрограммировать не смог. Т.е. опыта жонглировать данными в массивах еще нет, а они такое задают....

Там по сути то берутся 2 вышестоящих числа, складываются и получается нижнее под ними. И если человеку это легко объяснить, то машине капец тяжело, т.к. для неё понятий "ну там возьми 2 числа сверх" она не знает что такое сверху, сбоку и т.д... нужно думать в цифрах индексов массивов...
Аноним 16/09/20 Срд 11:01:08 1807990308
>>1807850
Фриланса на .Net тоже нет, исключением будет только если у тебя уже есть как минимум 2 года коммерческой разработки, но это тогда не фриланс уже будет, а обычная удаленная работа. Если тебе фриланс нужен, то учи PHP.
Аноним 16/09/20 Срд 11:05:23 1807996309
>>1807950
Конечно норма, потому что все эти курсы дерьмо, всю информацию ты сам будешь гуглить и учить, а твои преподы/менторы просто запустят твой говнокод, скажут "ну да, это треугольник" и пойдут дальше. В общем, можно тебя поздравить с проебанными деньгами.
Аноним 16/09/20 Срд 11:15:17 1808007310
>>1807996
>Конечно норма
Фух, я уже испугался что я бездарное существо и в программировании карьеры мне не светит. Дальше задания идут всякие манипуляции с матрицами, не знаю еще как там справлюсь или нет..
>В общем, можно тебя поздравить с проебанными деньгами.
Ты думаешь я реально записался к ним на курс? они же просят 4 258 рублей в месяц и дают еще кредит на 36 месяцев. Т.е. их курс по Unity стоит 153к рублей. Я что больной столько платить? Просто скачал на торренте курс.
Аноним 16/09/20 Срд 11:17:54 1808010311
>>1808007
Ну тогда ничего необычного нет. Очевидно, что по началу тебе придётся гуглить и искать ответ, у тебя ведь нет практического опыта. Тупость определяется со временем, путём возвращения к задачам которые ты уже решал, либо к похожим на те которые ты уже решал. Вот если в таком случае у тебя сложность возникает, значит ты тупой и программирование это не твоё.
Аноним 16/09/20 Срд 11:28:29 1808015312
>>1808010
>Ну тогда ничего необычного нет. Очевидно, что по началу тебе придётся гуглить и искать ответ, у тебя ведь нет практического опыта.
Понял, значит пока не опускаю руки и долблю дальше. А то этот треугольник сильно меня задизморалил.
>Тупость определяется со временем, путём возвращения к задачам которые ты уже решал, либо к похожим на те которые ты уже решал. Вот если в таком случае у тебя сложность возникает, значит ты тупой и программирование это не твоё.
В жизни еще не слышал такого точной формулировки как определить тупость. Теперь в реал-тайме смогу оценивать тупой или нет. Уже было что возвращался к старым задачам и без проблем их снова решал.
А когда было ДЗ - написать игру в числа с любым кол-вом участников так я вообще недовольный своим кодом стёр его и написал заново красиво и лаконично.
Аноним 16/09/20 Срд 15:25:03 1808139313
>>1808007
>Фух, я уже испугался что я бездарное существо и в программировании карьеры мне не светит
Знаешь, я скажу так - многие программисты не столкнутся с реально сложными задачами.

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

Также и современное программирование - сейчас большинство решений есть в готовом виде, все алгоритмы давно уже написаны, все компоненты давно созданы, все статьи написаны. Если ты не Дональд Кнут, то вряд ли ты что-то новое придумаешь. Да и если придумаешь - не факт что оно кому-то нужно. Вон boost из мира с++ - там сидят крутые боги программирования - а много кому их решения нужны? На шарпе, жабе, расте, и т.д. даже близко ничего такого нет - но это никак не мешает

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

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

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


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

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

Способ стать хорошим программистом всего один - писать код и только писать код. Ну и размышлять и анализировать написанный код - где можно лучше, где получилось криво. Конечно же еще читать умные книжки, смотреть чужой код. Никакие говнокурсы не сделают из тебя сеньора.
Аноним 16/09/20 Срд 15:38:55 1808154314
Парни с рідої України. Немного скушновано вечерами, кто-то че-то посоветует по фрилансу? Стоит ли вкативается помимо основной работки по ASP.NET, тоетсь по бекенду в подработки?
Аноним 16/09/20 Срд 16:03:18 1808181315
Привет, посоны. Есть те, кто вначале вкатывался на Java, а потом ему тошно от от этого ЯП стало и перешел на C#? Почему конкретно вы выбрали C# вместо Java?
Аноним 16/09/20 Срд 16:05:35 1808184316
>>1808181
У шарпа синтаксис приятней за счёт удобства и лаконичности, в остальном различий мало.
Аноним 16/09/20 Срд 17:15:44 1808285317
Суп шарпач. Посоветуйте, как можно сделать заполнение вёрдовских документов на основе шаблонов из этих же вёрдовских документов? Interope требует наличия на клиентской машине офиса, например. Вручную искать нужные теги в xml плохой вариант, так как при верстке шаблона заглушки могут и пополам перебиться
Аноним 16/09/20 Срд 17:18:09 1808291318
Аноним 16/09/20 Срд 17:24:17 1808298319
>>1808285
>Interope требует наличия на клиентской машине офиса, например.

Отправляешь на сервер целевой ворд документ и шаблон, в ответ получаешь заполненный ворд документ.
Аноним 16/09/20 Срд 17:31:11 1808310320
>>1808139
>Знаешь, я скажу так - многие программисты не столкнутся с реально сложными задачами. По сути большинство современных программистов, они как... эникейщики.

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

Мир заселён тупыми и ленивыми людьми чуть более чем на половину. И вместо того чтобы повышать общий интеллект всей цивилизации мы просто пытаемся выдать всем по рабочему месту (для галочки в администрации, чтобы потом красивые отчёты показывать).
Аноним 16/09/20 Срд 18:39:03 1808385321
Аноним 16/09/20 Срд 19:49:03 1808443322
>>1808385
Ну тогда устанавливай офис на клиентских машинах.
Аноним 16/09/20 Срд 22:25:36 1808556323
>>1808285
Если можешь работать с новыми версиями (docx), то можно посмотреть в сторону OpenOffice/LibreOffice. Берёшь их либу, клепаешь док и этот док потом в вёрде запросто откроется.
Есть как официальные либы под дотнет, так и куча сторонних - https://github.com/oldrev/maltreport
Аноним 16/09/20 Срд 22:57:47 1808570324
>>1807950
дай хоть ссыль на курс, а то я уже подзабывать задачки стал
Аноним 16/09/20 Срд 23:07:56 1808573325
>>1808570
leetcode.com - там все нужные задачки есть, причём не только алгоритмические.
Аноним 17/09/20 Чтв 02:54:28 1808698326
Аноним 17/09/20 Чтв 10:01:59 1808776327
>>1807950
деньги на ветер.
Мог бесплатно на сайте Microsoft пройти курс по C# (правда там ООП нет). Прочитать Metanit, а задачи порешать на Code Wars.

Куча бесплатных ресурсов по изучению программирования, но люди так и продолжают платить за воздух.
Аноним 17/09/20 Чтв 10:58:41 1808803328
Парни, имеет ли смысл создавать свойство, установить которое можно с проверкой на исключение, а потом использовать его в конструкторе класса? Вот, например, есть у меня свойство Name, я описываю, например, то, как его можно сетнуть и внутри сеттера выбрасываю исключение, если имя задается как-то неправильно. Так вот, при создании экземпляра класса я передаю в конструктор имя, и, если оно было передано неправильно, у меня срабатывает исключение, которое поймать можно, но сам экземпляр созданный уже не будет в области видимости вызывающего кода. Надеюсь, вы поняли, че за ебанину я тут написал. Сам вопрос в том, стоит ли вообще так делать?
Аноним 17/09/20 Чтв 11:10:12 1808814329
>>1808803
Ты когда нибудь видел ситуацию в которой ты ввел имя русскими буквами, вместо английских и у тебя крашился браузер? Вот ты предлагаешь делать такое же поведенин. Очевидно, что лучше либо предупреждать о неправильном вводе, либо не продолжать выполнение программы и ждать правильного ввода.
Аноним 17/09/20 Чтв 11:16:45 1808824330
>>1808803
Судя по твоему описанию у тебя не дойдет до передачи в конструктор, так как ты не смог сформировать свойство которое передаешь оно же выбросило исключение.
Так делать можно, но исключения из любой дырки это плохо, выброс исключения дорогая операция и не всегда имеет смысл быть. Поэтому для обхода исключения выдумывают всякие штуки из функциональных языков типа Option, OperationResult, Either и еще куча различных мини типов которые хранят как ошибку, так и положительный результат.
Если ты делаешь либу то пользоваться надо исключениями так как их все ожидают, а если для себя можешь попробовать иную концепцию.
Аноним 17/09/20 Чтв 11:20:50 1808828331
>>1808814
>>1808824
Спасибо за ответы. Чет как-то и не подумал в вызывающем коде сделать проверку на ввод
AnalDestructor2010 17/09/20 Чтв 11:45:10 1808850332
Посоны, что за пакет в нугете Microsoft.jQuery.Unobtrusive.Validation? Как им пользоваться? Я думал что он мне автоматом в проект закинет либы для клиент-сайд валидации. Но что-то после установки ничего не поменялось.
Аноним 17/09/20 Чтв 14:13:27 1808971333
>>1797054 (OP)
Вопрос по Visual Studio.
Я во многие папки (неймспейсы) кидаю docx файл с рабочей документацией.
VS мне этот файл автоматически добавляет в проект, чем замусоривает рабочую область. Как указать, чтобы файлы с такими то расширениями не добавлялись?
Аноним 17/09/20 Чтв 14:28:39 1808985334
В чём отличие System.Data.SqlClient и прочих data providers от Microsoft.Data.SqlClient? Какой использовать?
Аноним 17/09/20 Чтв 14:36:58 1808993335
Аноним 17/09/20 Чтв 14:37:57 1808996336
>>1808985
system.data.sqlclient это легаси, Microsoft.Data.SqlClient это обновленная версия. Какую использовать зависит от проекта.
Аноним 17/09/20 Чтв 14:54:09 1809010337
>>1808993
Хотелось бы решение на совсем, а не каждый раз кликать мышкой, как макака.
Аноним 17/09/20 Чтв 15:45:56 1809038338
>>1809010
С такими вопросами, боюсь, что для тебя это единственный вариант.
Аноним 17/09/20 Чтв 16:03:07 1809069339
>>1808971
<None Remove="\*.docx" />

но лучше не используй. Лучше пкм как макака, потому что тот, кто кидает доки не в папку доков должен страдать
Аноним 17/09/20 Чтв 16:07:47 1809075340
>>1809069
и те, кто использует docx для доков вместо md
Аноним 17/09/20 Чтв 16:34:37 1809096341
>>1809069
Спасибо.

>>1809075
По поводу формата и места хранения доков. У меня пет-проект для основной работы. Доки - в основном это всякие формулы и их вывод, т.к. в коде потом хуй поймёшь, откуда это взято, скрины из учебников, графики и т.п. Удобней ворда для этого нет.
Хранить в отдельной папке доков пробовал, но не канает, т.к. теряется, надежней в папке рядом с исходным кодом.
Аноним 17/09/20 Чтв 16:38:53 1809113342
>>1809069
>> <None Remove="\*.docx" />
Чет не работает, ошибку выдает.
Аноним 17/09/20 Чтв 16:48:01 1809126343
>>1809113

я надюсь ты используешь новый формат csproj, а именно
<Project Sdk="Microsoft.NET.Sdk">

и поместил <None Remove="\*.docx" /> в одну из <ItemGroup>
Аноним 17/09/20 Чтв 16:48:57 1809127344
>>1809113
><None Remove="\.docx" />
и какого хрена
кто сьел символы

нужно так

<None Remove="
\.docx" />
Аноним 17/09/20 Чтв 16:50:34 1809129345
Аноним 17/09/20 Чтв 16:54:25 1809131346
>>1809129
Разобрался, работает, спасибо.
Аноним 17/09/20 Чтв 17:03:48 1809142347
>>1809096
>Удобней ворда для этого нет.
пока не начнешь держать его в контроле версий.
Аноним 17/09/20 Чтв 17:54:35 1809209348
>>1797054 (OP)
Почему нет обобщённого интерфейса ICloneable<T>?
Есть только ICloneable, который возвращает object.
Если мне нужно производительное клонирование, стоит ли самому определить интерфейс ICloneable<T> и использовать его?
Аноним 17/09/20 Чтв 18:57:36 1809261349
>>1809209
он проблемный.
Если он наследник ICloneable - плохо, а если не наследник тоже плохо
Нельзя повесить ограничение на T (этим страдает и ICloneable) и проблемы с наследованием
в итоге забросили как есть

>стоит ли самому определить интерфейс ICloneable<T> и использовать его?
если он нужен то конечно.

Аноним 17/09/20 Чтв 19:15:49 1809280350
>>1797054 (OP)
В LINQ есть .LastOrDefault, я думал он начинает проход с конца коллекции, а он просто переназначает переменную result, нахуй такой оверхед нужен? Может быть есть другой LINQ метод который начинает обход с конца коллекции?
Аноним 17/09/20 Чтв 19:27:43 1809289351
>>1809280
Какой еще оверхед. Он выдает последний элемент если коллекция не пуста или дефолтное значение если пуста.

LINQ основан на IEnumerable, а у него как бы нет конца
абстракция же об которую много копий сломано

можешь покопать либу MoreLinq но это вряд ли там есть ибо у IEnumerable нет конца
потрать 10 минут и напиши реализацию
Аноним 17/09/20 Чтв 19:31:02 1809291352
>>1809261
Хмм, что-то не очень понятно. Может есть пример какой?
Обобщённый интерфейс же в любом случае реализуется программистом, т.е. в любом случае будет возвращать инстанс типа T, каким бы T ни был, даже если при этом будет ковариантность, всё равно всё будет работать. Если он не реализован нормально, то код просто не скомпилируется. А если реализован, то программист знает, что делает.
Аноним 17/09/20 Чтв 19:32:33 1809292353
>>1809289
У IEnumerable есть метод Count() и есть метод ElementAt(), откуда следует, что конец у него есть, как и начало.
Аноним 17/09/20 Чтв 19:38:17 1809298354
>>1809292
нет. это всего лишь методы которые предлагают пробежав по итерабле добраться до нужного места

просто в случае бесконечной коллекции он будет очень долго считать, но свою работу будет делать )

тут абстракция протекает. Ничего не поделать - таков мир абстракций. они часто протекают.
Аноним 17/09/20 Чтв 19:45:12 1809305355
>>1809298
Вероятно, в этом случае нужен интерфейс IIndexable, который будет иметь Lenght() и this[int i] для тех коллекций, которые это допускают.
Коллекции, которые так не могут, или могут, но плохо (связные списки, например), не будут его реализовывать.
Аноним 17/09/20 Чтв 19:55:35 1809312356
>>1809289
>Какой еще оверхед.

Коллекция из 10 элементов, если последний удовлетворяет условию, то LINQ пробежит всю коллекцию, потому что начинает пробег с начала коллекции. Но если начинать с конца, то можно сразу получить результат, т. е. это -9 операций.
Просто как раз возникла ситуации в которой нужный элемент будет ближе к концу коллекции, а в большинстве случаев именно последним, сначала написал с линковским .Last, но потом решил заглянуть в сорсы этого .Last и увидел, что лучше написать обычный цикл for var i = arr.Length - 1 ...
Я то думал, что в LINQ такое учитывается, а теперь придётся каждый раз сорсы смотреть...
Аноним 17/09/20 Чтв 20:01:30 1809318357
>>1809312
в LINQ есть оптимизации на тему "если это коллекция то неча по ней бегать а возьмем Count"
но в корне лежит именно IEnumerable как что-то по чему можно пробежать.
и есть велосипеды которые делают как раз то что ты хочешь, то есть при их наличии и правильно подключенном неймспейсе будет подставлен более оптимальный вариант
но лучше другие имена давать таким методам

тут нет идеального решения. слишком общая абстракция.
Аноним 17/09/20 Чтв 20:10:25 1809329358
>>1797054 (OP)
Я новичок в шарпе, и у меня вопрос: зачем вообще нужны свойства? Чем function(object.Property) object.Property = value лучше, чем function(object.Property()) и object.setProperty(value)? Это при том, что недостатки очевидны: теперь безобидно выглядящий код может делать любую херню и работать сколь угодно долго.
Аноним 17/09/20 Чтв 20:13:04 1809334359
>>1809329
Притом, например, в Котлине вообще убрали поля и оставили только свойства. Что в них вообще хорошего?
Аноним 17/09/20 Чтв 20:16:31 1809338360
>>1809291
ну вот навскидку
у нас есть класс
Foo : ICloneable<Foo> и вот мы делаем наследника
Bar : Foo

и тут если мы захотим клонировать только Bar то нам придется так
public new Bar Clone() => new Bar();
и мы сможем использовать Clone везде где у нас Bar (пофиг нам на клонируемость Foo допустим она нам не нужна)

но если вдруг стала нужна и где то принимают Foo и делают его клон, то получают в результате не Bar и значит у нас только один вариант в Bar

Foo ICloneable<Foo>.Clone() => new Foo();
Bar ICloneable<Bar>.Clone() => new Bar();

разом ломается использование Clone без каста к интерфейсу.

то есть у ICloneable<T> есть побочные эффекты, которые не способствуют его введения в общую библиотеку
Аноним 17/09/20 Чтв 20:21:10 1809345361
>>1809329
тем и лучше, что не нужно писать гет сет руками (привет жава) и свойство это самостоятельный объект который можно юзать в рефлексии

Аноним 17/09/20 Чтв 20:24:06 1809347362
>>1809345
Возможность не писать гет/сет руками появилась намного позже самих свойств. И с учетом expression-bodied statements это всего две лишних строчки на свойство, стоит ли игра свеч?
Поля нельзя юзать в рефлексии?
Аноним 17/09/20 Чтв 20:27:21 1809349363
>>1809329
Потому что некоторые данные класса нужно не только получать, но и устанавливать. Установка (изменение) некоторых данных класса иногда требует проведения проверки или вызова события, например, на отрисовку нового значения в форме.
Это можно легко решить написанием двух методов типа Get_some_value() и Set_some_value(). Но это выглядит уродливо, и глазу приятнее просто написать Point.X = 100500, чем Point.Set_X(100500). В обоих случаях при выходе Point за пределы рабочей области, например, предусмотрена дополнительная логика.
Аноним 17/09/20 Чтв 20:27:54 1809350364
>>1809347
>не писать гет/сет руками появилась намного позже самих свойс
я про гетпроперти() сетпроперти() МЕТОДЫ как они в жаве
где это тупо методы по конвенции
и появилось же. то есть очевидно же что свойство тупо удобнее методов в своем определении
конечно в шарпе это вылилось в необходимость все таки писать {get;set;} чтобы отличалось от поля, но шарп когда появился
котлину было проще оглядываться (и даже при этом они нах*ртили там с конструкторами и теми же полями)
Аноним 17/09/20 Чтв 20:29:07 1809351365
>>1809347
>Поля нельзя юзать в рефлексии?
Понял, это тупой вопрос. Но всё равно, можно было сделать свойства как самостоятельные объекты и при этом оставить синтаксис методов, которыми они фактически и являются, а не полей.
Аноним 17/09/20 Чтв 20:33:30 1809353366
>>1809349
"Приятно глазу" - это вкусовщина, мне приятнее вариант с методом, потому что присваивания переменной - это операция занимающая всегда плюс-минус одно и то же время и вообще, самая простая и привычная программисту операция. А установка свойства может делать любую херню.
Слово get в названии геттера использовать необязательно, так что фактически имеем разницу между obj.Prop() и obj.Prop.
Аноним 17/09/20 Чтв 20:34:14 1809354367
>1809351
>Поля нельзя юзать в рефлексии?
ты можешь найти свойство по тому что оно свойство. и взять у него гет сет метод. ты можешь передать PropertyInfo куда то

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

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

Аноним 17/09/20 Чтв 20:34:37 1809355368
>>1809350
Я имел в виду, что когда Хейлсберг придумывал (заимствовал?) свойства, возможности не писать геттер и сеттер руками еще не было, значит он руководствовался чем-то другим, когда их вводил в язык.
Аноним 17/09/20 Чтв 20:37:40 1809356369
>>1809354
>сахар он вкусный
Ты просто говоришь так, как будто синтаксис полей очевидно лучше синтаксиса методов, хотя количество символов, например, практически одинаковое.
Аноним 17/09/20 Чтв 20:40:38 1809359370
>>1809354
Я имел в виду, что можно было оставить преимущество для рефлексии и мешать поля со свойствами синтаксически.
Аноним 17/09/20 Чтв 20:41:51 1809361371
Аноним 17/09/20 Чтв 20:42:14 1809363372
>>1809353
Нет причин, требующих использовать свойства. Делай как нравится. В C++ времён моего универа, вроде бы свойств и не было, и все так и делали, писали геттеры и сеттеры.
Аноним 17/09/20 Чтв 20:45:39 1809368373
>>1809359
>Я имел в виду, что можно было оставить преимущество для рефлексии
ты щас про какой язык то говоришь. в шарпе поля и свойства синтаксически равны только для клиента - так клиенту и не нужно знать к чему он обращается. Аж никогда.
это классу нужно свойство чтобы можно было влепить туда сеттер и геттер который что то делает

тут вопрос "а зачем нужны поля, ну оставили бы одни свойства" - ну поля это все таки поля. к ним вызов другой, а не как к методам со всеми вытекающими
Аноним 17/09/20 Чтв 21:05:54 1809378374
>>1809338
Спасибо, познавательно.
Аноним 17/09/20 Чтв 21:54:44 1809408375
>>1809010
В .csproj файле
<ItemGroup>
<None Remove="*.docx" />
</ItemGroup>
Аноним 17/09/20 Чтв 21:55:30 1809410376
Можете пояснить, зачем нужен Span? Это типа массива на стеке?
Аноним 17/09/20 Чтв 22:03:39 1809422377
Аноним 17/09/20 Чтв 23:20:06 1809554378
>>1809410
позволяет унифицировать работу с набором байт где бы они не находились реально - в массиве, на стеке, в анманагед не опускаясь в ансейф

Аноним 17/09/20 Чтв 23:54:20 1809612379
image.png 9Кб, 459x300
459x300
image.png 21Кб, 612x422
612x422
>>1809329
В основном сахар.

Часто используются для сериализации всяких JSON строк. Забабахал дефлотный { get; set; } и забудь про этот DTO объект.

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

И есть еще всякие { get; private set; }
В общем удобно. Тошнило от написания такого же функционала в Жаве.
Аноним 18/09/20 Птн 00:30:48 1809651380
>>1809356
в WPF есть биндинги на свойства. Например тут мы биндимся на свойство и привязка работает в обе стороны

...Text={Binding PropertyName, Mode=TwoWay}

А в случае методов что?

...Text={Binding getPropertyName, Mode=TwoWay}

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

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

ну можно аннотацию добавить да

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

Аноним 18/09/20 Птн 16:38:15 1810029381
>>1809353
Больше кода - меньше кислорода.
Аноним 19/09/20 Суб 11:50:09 1810644382
Пацаны, как себя вести по мужицки с временем?
Все перевел на DateTimeOffset

Что делать с таймзонами оффсетами в следующих случаях?:

1. Приходат дейттам с оффсетом/таймзоной - все гуд, сохраняем как есть.
2. Приходит дейттайм БЕЗ оффсета/зоны - шо робить? По умолчанию сериализатор ставит оффсет рантайма. Это норм? Можно ли настроить, чтоб ставил конкретную зону в разных случаях,


Аноним 19/09/20 Суб 12:10:11 1810657383
>>1810644
>Это норм?
Зависит от приложения.
>Можно ли настроить, чтоб ставил конкретную зону в разных случаях,
Можно. Указав в настройках десериализации, либо написав свой конвертер для свойства с временем.
AnalDestructor2010 19/09/20 Суб 12:49:40 1810690384
Как правильно в разоре сделать отображение картинки, только в том случае, если она есть на сервере? Сделал так, но выглядит как говно
@if (File.Exists(System.IO.Path.Combine(env.WebRootPath, "images", Model.ImageName)))
{
<img src="/images/@Model.ImageName" />
}
Аноним 19/09/20 Суб 12:54:58 1810695385
>>1810690
Очевидный словарь вида string,bool если файл есть, то ключ будет возвращать правду, если нет то ложь
Аноним 19/09/20 Суб 13:08:46 1810707386
Аноним 19/09/20 Суб 13:09:31 1810708387
>>1810657
>Можно. Указав в настройках десериализации
Как? Не нашел такого кейса. Такое ощущение, что никто вообще не парится о дейтаймах без тамзоны и всегда ожидают с...
Аноним 19/09/20 Суб 13:18:08 1810714388
>>1810708
var settings = new JsonSerializerSettings()
{
DateParseHandling = DateParseHandling.DateTimeOffset,
DateFormatHandling = DateFormatHandling.IsoDateFormat,
DateTimeZoneHandling = DateTimeZoneHandling.Utc
};

Вот так, например.
Аноним 19/09/20 Суб 13:21:26 1810719389
>>1810707
Суть в том чтобы убрать лишнее обращение к жесткому диску, так как это дорогостоящая операция, дешевле читать из памяти.
Аноним 19/09/20 Суб 13:29:55 1810723390
>>1810719
У IFileProvider есть вотчер. И походу он кеширует, надо уточнить.
Аноним 19/09/20 Суб 13:46:05 1810729391
>>1809329
Потому что есть кодстайл, по которому у тебя в принципе не должно быть полей торчащих наружу, и ты вызывая Point.X=abcd понимаешь что вызываешь метод Point.Set_X(abcd).
Зачем оно нужно, затем чтобы не заставлять программистов кучу копипастного кода писать, т.к. в 95% случаев у тебя свойство будет prop{get;set;} и миллион строчек с Get/Set_Prop просто забивают кодовую базу. Посмотри проект на джаве какой-нибудь, для сравнения, очень весело продираться через 500 строчек геттеров-сеттеров, к логике особенно если долбоеб их никак не группировал, а херачил как попало по мере необходимости.

Ну и да, тебя почему-то не удивляет то что в C++ у тебя оператор битового сдвига используется для манипуляции с потоками, как-то живут и ничего. Иди в С++ тред поплачь о том, что ты вот ожидаешь что будет битовый сдвиг, а там пидоры писавшие стандартную библиотеку переопределили его и теперь ты вот не можешь хелловорлд написать.
Аноним 19/09/20 Суб 13:51:40 1810730392
image.png 46Кб, 1160x516
1160x516
Аноним 19/09/20 Суб 13:52:13 1810731393
В общем, тупой вопрос.
Смотрите, я делаю консольное приложение. Хочу чтобы там можно было использовать комбинации клавишь, типа Shist+Ctrl+C - скопировать строчку целиком в позиции курсора, alt+стрелочка - передвинуть строчку в направлении стрелочки ну и т.д. Так вот, я чет не понимаю, есть ли способ это реализовать стандартными средствами работы с консолью в .net или таки придется пилить свою абстрактную клавиатуру и в ней реализовывать все это? Не очень сложно, но просто я опасаюсь что оно будет конфликтовать с тем что в стандартной либе есть. Может быть проще в данном случае отказаться от шарпа и херачить на чем-то другом, например плюсах?
Аноним 19/09/20 Суб 14:01:29 1810737394
>>1810730
Конечно не робит, потому что offset в JSON строке не указан. Читай документацию и разбирайся, мне лень тебе разжевывать.
Аноним 19/09/20 Суб 14:04:18 1810738395
>>1810737
>offset в JSON строке не указан

Это было в вопросе и есть главной проблемой

>>1810644
>2. Приходит дейттайм БЕЗ оффсета/зоны - шо робить? По умолчанию сериализатор ставит оффсет рантайма.


Аноним 19/09/20 Суб 14:04:53 1810741396
Аноним 19/09/20 Суб 14:11:37 1810744397
>>1810738
Ты совсем тупенький? Как по твоему программа должна узнавать какой часовой пояс тебе нужен, если в JSON строке он не указан? Если тебе нужен всегда один offset то ты либо можешь написать свой конвертер для данного свойства, парся строку с использованием конструкции вида: DateTimeOffset.Parse(reader).ToOffset(TimeSpan.FromHours(нужное тебе смещение));
Либо использовать перечисление DateParseHandling.None и парсить дату из строки уже после десериализации. Можно отдельное свойство сделать которое будет возвращать тебе DateTimeOffset дату из строки-свойства.
Аноним 19/09/20 Суб 14:17:46 1810754398
>>1810744
>Ты совсем тупенький?
Почему обижаешь? Неужели я так неясно сформулировал вопрос?

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

> Можно ли настроить, чтоб ставил конкретную зону в разных случаях

Возможно, тут было не понятно в каких случаях, имел ввиду явно указать офсет при десериализации, да.
Аноним 19/09/20 Суб 14:22:06 1810762399
>>1810754
Значит тебе конвертер нужен и аттрибут JsonConverter(typeof(тип твоего конвертера))

>Неужели я так неясно сформулировал вопрос?

Я тебе изначально решение в первом же ответе дал, но ты даже не хочешь пробовать, ты будто ждёшь что тебе готовое решение выкатят.
Аноним 19/09/20 Суб 14:28:41 1810775400
>>1810762
Ты посоветовал сеттинги и конвертер. Сеттинги я и сам дрочил до этого - ничего не получилось. Я и уточнил.
А конвертер да, не хотелось так заморачиваться.
Ок, пасиба в общем.

В принципе, я могу просто надеяться на рантайм, что он в ЮТС будет и все будет чикипуки...
Аноним 19/09/20 Суб 16:02:57 1810858401
>>1810729
Нормально же спросил, чего ты такой злой.
Аноним 20/09/20 Вск 06:30:58 1811322402
>>1797054 (OP)
Есть где-то ".cs"-файл, который позволяет шифровать-дешифровать данные,
а также подписывать - эти данные (а не только их хэш),
и данные произвольной длины,
при помощи RSA-ключей (одного ключа - приватного, а другого ключа - публичного)?

Мимо глянувший на описания дефолтных методов работы с RSA, и безуспешно пытавшийся что-то с этим сделать.
Аноним 20/09/20 Вск 07:12:36 1811330403
Есть шанс сейчас полностью выбрать один из двух стеков java (+kotlin) или C# (.Net Core)
Я совершенно не ньюфаня, просто предоставляется возможность полностью погрузиться в одну из платформ, но внятной и глубокой информации по этому выбору нет (везде что-то поверхностное).
Есть у кого интересные мысли по поводу той или иной технологии, любое мнение будет полезно.
Аноним 20/09/20 Вск 08:20:50 1811338404
Аноним 20/09/20 Вск 09:06:16 1811343405
>>1811330
Ну, я вот ньюфаня.
Так вот, мое мнение.

Зависит от того где стек применяться будет.

Если это мобилки, то я бы все равно выбрал Java+kotlin, потому что при всех историях о том что net.core+Xamarin пригоден для реальной разработки, оно не совсем так, потому что комьюнити для мобилки на .net милипиздрическое -> ответов на тупые вопросы и нормальной поддержки от тех кто сторонние библиотеки пилит - хуй няйдешь. Банально, я 2 года назад вынужден был на xamarin.forms пилить приложение, так вот, заказчик хотел treeView, и этой простой хуйни нет из коробки, чтобы запилить ее так чтобы она и на андроидах и на ios выглядело нормально, потребовалось в разы больше усилий, чем если бы просто 2 проекта паралельных делалось, просто потому что хуй найдешь готовые решения(тогда даже ебучий синкфьюжн не сделал еще этого). Вооооот. И там такой хуйни навалом было. Еще и баги самого Xamarin, о, а как заставить это одинаково на андроиде и IOS выглядеть - да хуй знает, будет смотреться как говно инородное. А если не формы, то это фактически не особо отличалось бы от нативной разработки, только работало бы все хуже и единственный плюс это язык. В общем, для мобилок - 2 года назад Xamarin был хуетой, ХЗ как сейчас, с того времени не работал с ним. А вот с Java на мобилках покодил и блядь, ну серьезно, я чувствую себя ебанатом из-за того что изначально согласился на Xamarin, надо было продавливать нативную разработку, но это была первая работа и я не знал что можно так.

Веб - тут примерно одинаково. Выбирай по принципу что больше нравится. Как по мне для веба asp.net (core) охуенная хуйня. Все есть из коробки, то чего нет ставится парой нугетов, на любой вопрос ответ за 2 секунду гуглится, кестрел охуенен, ненси тоже, примеров - жопой ешь, майки еще и за эти годы исправились и теперь у них более-менее нормальная документация и примеры, а не как раньше: Console.WriteLine - печатает строку в консоль.

Декстоп. Если онли винда, то .net(core) будет получше(все есть, xaml - охуенно, все новые фишечки тебе завозят, короче ляпота). Если предполагается что гуй будет еще и на линуксах-хуинуксах, то тут как с замарином, оно вроде как есть, а по факту хуйня и больше боли вызывает и, наверное, Java окажется опять лучше, хотя я кроссплатформу на Java на писал, потому хуй знает, может быть и у джавы там не все так хорошо.

Если какие-то служебные утилиты, типа сервисов и консольных штук, то тут как с вебом, и там и тут все есть. Тут выбирай сердцем, кек.

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

Воооот. Но я нуб, который всего 3 года опыта работы имеет, можно не брать мое мнение в расчет.
Аноним 20/09/20 Вск 09:10:36 1811347406
>>1811343
>...можно не брать мое мнение в расчет
Зря, хорошее мнение и опыт, мне было интересно. Благодарю.
Аноним 20/09/20 Вск 11:41:56 1811391407
>>1811343
интересно как ты с жавакотлином собрался под иос кодить )
А про "выглядеть одинаково" тем более. Одинаково выглядят только вебприложухи. А хамарин он же нативные контролы под капотом юзает.

>>1811330
В плане удобства хамл на голову выше стоит того пиздеца что городишь в андроид (а то и на 3 головы). но хамарин сыроват. там еще много багов которые нужно править. В андроид только с их aac (архитетуре компонентс которые) и котлином стало удобоваримо. Товарища выше от жавы почему то не тошнит, стойкий товарищ )

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

лично я под андроид предпочитаю котлин, в остальном шарп
Аноним 20/09/20 Вск 13:44:12 1811455408
>>1811330
Если хочешь мобилки или энтерпрайз, то джава.
В последнем можешь встретиться с жутким легаси и анальными ограничениями на работах. Если банк, то могут попросить пройти полиграф, будут строго следить за тем, что ты делаешь, могут ограничивать интернеты и не давать самому ставить нужный софт. Слышал, что где-то даже заставляли сотрудников соблюдать дресс-код. Но платят неплохо.

Но это не так важно. Если хочешь вкатиться на работу, то смотри, что популярнее в твоем городе. Там, где я сейчас живу, вакансий джавы в 1.5-2 раза больше шарпа.
А в родном мухосранске наоборот, примерно 1-2 на джаве и 10-15 на шарпе.
Аноним 20/09/20 Вск 14:49:03 1811495409
Приветствую олдов. Наметил тут себе план чтения на ближайший год. Дайте ревью какое-то. Все ли в том порядке расставлено? Что еще посоветуете в дополнение к этому?
1. Эндрю Троелсен, Филипп Джепикс - Язык программирования C# 7 и платформы .NET и .NET Core.
2. Джозеф Албахари - C# 7.0. Справочник. Полное описание языка.
3. Роберт Мартин - Принципы, паттерны и методики гибкой разработки на языке C#.
4. C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development Fourth Edition.
5. Бен Уотсон - Высокопроизводительный код на платформе .NET.
6. Роберт Мартин - Чистый код.
7. Что-то по работе с базами данных.
8. Что-то по алгоритмам и структурам данных.
9. Что-то по работе с git.
10. Стив Макконнелл - Совершенный код.
11. Роберт Мартин – Идеальный программист.
Аноним 20/09/20 Вск 15:41:58 1811549410
Аноним 20/09/20 Вск 17:42:39 1811680411
>>1811495
Советую почитать какой-нибудь максимально короткий гайд по языку, за пару вечеров, типа метанита.
А дальше ставить себе задачи и решать их, изучая по ходу официальную документацию, стековерфлоу и т.п.
Практика - 80%, теория - 20%.
Аноним 20/09/20 Вск 18:04:32 1811701412
Аноним 20/09/20 Вск 18:22:24 1811716413
>>1811680
>советую как можно меньше читать, и находить ad hoc решения на stackoverflow
Отличный совет. Макака готова.
Аноним 20/09/20 Вск 18:31:51 1811726414
>>1811716
Если это первый язык то да, а если 6+ то очень рабочая схема
Аноним 20/09/20 Вск 18:36:10 1811730415
>>1811726
>чистый код, что-то по базам данных, алгоритмам, git
>6+ язык
Вытекаешь. Никто и не говорит что для 6 языка нужно заново изучать информатику. Видно же что он только вкатывается.
Аноним 20/09/20 Вск 18:40:36 1811733416
Аноним 20/09/20 Вск 20:05:39 1811846417
>>1810714
А как ты угадал что у него Newtonsoft?
Аноним 20/09/20 Вск 20:09:52 1811853418
>>1811846
Лучше пока не придумали
Аноним 20/09/20 Вск 20:17:20 1811866419
>>1811853
Вкусовщина какая-то.
Аноним 20/09/20 Вск 20:26:20 1811876420
>>1811866
Так ты сравни возможности, а потом о вкусах говори.
Аноним 20/09/20 Вск 20:35:47 1811884421
МС рил объединит все в NET 5, или это маркетинг и на деле просто под кор чуток подстроятся?
Аноним 20/09/20 Вск 20:48:05 1811896422
>>1811884
NET 5 - новая версия кора, из Framework туда особо ничего нового не переносили напрямую. Все дальнейшие усилия по разработке будут направлены на NET 5. Назвали его так - чтоб оказать, что он уже может примерно все, что мог Framework, чтоб избежать путаницы с .NET Core 4 vs .NET Framework 4, чтоб избавится от дополнительного слова в названии (Core), поскольку это единственный актуальный фрейморк.
Аноним 20/09/20 Вск 21:10:10 1811910423
Поясните мне в чем суть рекордов и зачем я их должен использовать? Ну, т.е. я типа понимаю, что это, но какой юзкейс?
Скажем, вот я работаю с EF, правильно ли я понимаю, что если я объявлю модель рекордом, то ничего там менять не смогу и чтобы внутри контекста было изменение я должен буду явно вызвать апдейт в который передам новое значение? Просто если так, то там же куча всего должно поломаться, т.к. на текущий момент будет кинуто исключение что объект с этим ID захвачен контестом и ссылки не совпадают.

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

В общем, я не против этой фишки, но не совсем понимаю область ее применения, может быть кто-то объяснит тупому, зачем оно надо вообще?
Аноним 20/09/20 Вск 21:15:24 1811913424
На шарпе можно написать шаред либу, которую можно будет запустить и на линуксе и на винде?
Если да, то приблизительно как это делают?
Аноним 20/09/20 Вск 21:16:03 1811914425
>>1811896
То есть, они выкинули Core, по сути?
Аноним 20/09/20 Вск 21:17:04 1811916426
>>1811913
Создаешь проект типа netstandard и пилишь свою либу.
Аноним 20/09/20 Вск 21:23:07 1811921427
>>1811876
Сравнивал, тесты по производительности делал, в проде в огромных приложениях использовал. Заявляю: "Лучше пока не придумали" - это вкусовщина.
Аноним 20/09/20 Вск 21:23:36 1811922428
>>1811914
Нет, они выкинули framework, выкатили следующий релиз кора, назвали его просто дотнетом и сказали: готов!
Аноним 20/09/20 Вск 21:24:02 1811924429
>>1811914
Они его переименовали.
Аноним 20/09/20 Вск 21:29:45 1811929430
Аноним 20/09/20 Вск 21:31:44 1811935431
>>1811929
Всё это уже и так есть в .NET Core 3. Ещё одно отличие .NET 5 в том, что туда добавят Xamarin (сейчас он отдельно от Кора).
Аноним 20/09/20 Вск 21:32:30 1811936432
image.png 19Кб, 961x275
961x275
image.png 31Кб, 1337x240
1337x240
>>1811913
>запустить
тебе точно либу, а не исполняемый файл?

dotnet new classlib -n mylib
cd mylib
dotnet build

Можно сделать self-contained сборку, чтобы дотнет устанавливать не пришлось.
dotnet publish --self-contained true --runtime ubuntu.18.04-x64
Аноним 20/09/20 Вск 21:44:24 1811950433
>>1811936
Селфконтейнер сборка - хуйня. В некоторых случаях она все ломает нахуй. Например, если тебе нужно запилить демона, который на винде будет как виндовый сервис работать. Винда это время распаковки считает будто сервис не отвечает вовремя на запрос и вырубает к хуям. Такие вот дела.
Аноним 20/09/20 Вск 21:50:06 1811959434
>>1811921
С чем сравнивал то?
Вот тебе сравнение:
https://docs.microsoft.com/en-us/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to

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

Newtonsoft самая популярная библиотека, использовать что-то другое будет человек, который хочет показать всем "смотрите, я не самое популярное решение использую, я не такой как все!".
Аноним 20/09/20 Вск 21:50:09 1811960435
Только начинаю вкатываться в программирование.

Читаю тред, не понял что такое Net 5, Net 4, фраемворк. Это типо расширения для языка? Или что? Можете объяснить незнающему.
Аноним 20/09/20 Вск 21:53:56 1811967436
>>1811960
Это набор стандартных библиотек разных версий.
Аноним 20/09/20 Вск 23:01:44 1812041437
>>1811936
Не правильно сказал, именно либы имел ввиду. Но спасибо за пример, интересный вариант тоже.
Аноним 21/09/20 Пнд 03:43:08 1812152438
Только копаю в сторону шарпа и еще не совсем понимаю asp.net.
В общем, достижимо ли создать на шарпе встроенный веб сервер (portable)?

Сам сервер нужен для скачивание статических файлов по http, с какими-то предварительными настройками (запустил файл, дал ссылку человеку, потом закрыл). Можно ли с какой-нибудь сборкой kestrel или другим сервером сделать подобное, с "--self-contained"?
Аноним 21/09/20 Пнд 04:01:58 1812155439
>>1811950
Веб и консольные приложения нормально запускались.
А почему демон во время запроса распаковывается? Процесс же уже запущен должен быть.
Аноним 21/09/20 Пнд 04:12:09 1812159440
>>1811959
Популярное не всегда значит "самое лучшее". То что там в списке помечено как "не поддерживается" или "имеется свой вариант" либо очень редко используется, либо в дефолтной библиотеке просто используется по другому.

Aspnetcore и куча библиотек к нему по умолчанию System.Text.Json используют, и чтобы подключить Newtonsoft иногда приходится кучу телодвижений сделать. Но по большей части это дело вкуса. У нас в команде много кто новой библиотеки вообще ещё не видел и тащат Newtonsoft просто потому, что не вкурсе альтернатив.

Newtonsoft проигрывает в производительности, особенно на больших объектах и на хайлоаде.
Аноним 21/09/20 Пнд 08:15:13 1812198441
>>1811680
Двачую, практика — лучший учитель.
А маняпаттерны всякие, это знание из разряда изобразить 10 типов сортировок, которые нужны в основном чтобы проходить собеседования.
Аноним 21/09/20 Пнд 08:22:19 1812200442
>>1811733
Точно, забыл про него совсем
Аноним 21/09/20 Пнд 08:29:02 1812205443
>>1812159
>либо очень редко используется, либо в дефолтной библиотеке просто используется по другому.

Вот тебе два примера:

>Newtonsoft.Json can serialize or deserialize numbers represented by JSON strings (surrounded by quotes).

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

>Newtonsoft.Json accepts non-string values, such as a number or the literals true and false, for deserialization to properties of type string.

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

>Newtonsoft проигрывает в производительности, особенно на больших объектах и на хайлоаде.

Нет ни одного нормального бенчмарк. Все они используют самый примитивный функционал, даже не удосужившись прочитать вот этот раздел:
https://www.newtonsoft.com/json/help/html/Performance.htm
+ Text.Json не поддерживает поля, т. е. даже для простейшего DTO тебе нужно будет создавать объект с свойствами, что скажется на дальнейшем его использовании так как вместо быстрого считывания поля ты получишь вызов метода.
В итоге и здесь стандартное решение сосёт, а всего лишь нужно прочитать документацию и оптимизировать самые нагруженные участки кода.
Аноним 21/09/20 Пнд 08:47:50 1812212444
>>1812205
>Нет ни одного нормального бенчмарк. Все они используют самый примитивный функционал
вернее базовый. И ньютонсофт ясен пень хуже в скорости работы и в аллокациях, но лучше по фичам.
Кому что важно, тот нужное и выбирает. System.Text.Json тоже не самый шустрый. Он просто искаропки и там есть документ модел
System.Text.Json создавался как "меньше фич, зато быстрее + блазор". Потому там даже аттрибуты свои

>DTO тебе нужно будет создавать объект с свойствами, что скажется на дальнейшем его использовании
ну это уже экономия на спичках серьезно. В dto то экономить ))) это нихера не hot path

Аноним 21/09/20 Пнд 08:49:48 1812213445
>>1812205
> вместо быстрого считывания поля ты получишь вызов метода.
> В итоге и здесь стандартное решение сосёт
Плюсую. У меня на работе есть один евангелист Text.Json, который чмырит Newtonsoft и старается отовсюду его убрать доубирался настолько что поломал код, потому что в некоторых классах были поля, а не свойства. Хорошо, что проект был нерабочий, и мы его только пилим перед запуском. Пообещал выкинуть отсюда, если он додумается сделать тоже самое на другом проекте, который отвечает за огромнейшие деньги
Аноним 21/09/20 Пнд 09:04:27 1812218446
>>1812213
правильно делает. понапривыкли делать софт который жрет тонны памяти и еле ползает
Аноним 21/09/20 Пнд 09:11:38 1812219447
Стикер 0Кб, 512x512
512x512
Аноним 21/09/20 Пнд 09:23:09 1812220448
>>1811716
Что не так? Самый главный язык для разработчика - английский. Его в любом случае на практике надо осваивать. Хоть даже и на стековерфлоу
Аноним 21/09/20 Пнд 09:31:44 1812224449
>>1812220
А английский язык тут вообще причем?
Аноним 21/09/20 Пнд 09:36:04 1812227450
>>1812224
Я искренне надеюсь что ты не пользуешься русским сегментом стэковерфлоу
Аноним 21/09/20 Пнд 09:40:25 1812233451
>>1812227
Да причем тут вообще язык ОБЩЕНИЯ когда речь шла о языке ПРОГРАММИРОВАНИЯ
Аноним 21/09/20 Пнд 09:56:40 1812245452
>>1812233
В этом то и суть. Первый язык программирования практически ни на что не влияет в среднесрочной перспективе. В качестве первого языка программирования можно учить все что угодно, как угодно.
Аноним 21/09/20 Пнд 10:24:59 1812260453
>>1812245
вообще непонятно о чем ты. не по теме все
ну да ладно
пойду ру стекоферфлоу почитаю
Аноним 21/09/20 Пнд 10:43:30 1812269454
Аноним 21/09/20 Пнд 10:51:05 1812276455
>>1812212
> хуже в скорости работы и в аллокациях

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

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

Также можно и назвать твой базовый функционал и использование Text.Json, да и вообще любую оптимизацию.
Аноним 21/09/20 Пнд 11:07:30 1812293456
>>1812276
>если писать столько же кода
одинаково пишу. При переходе разницы не заметил.

>использование Text.Json, да и вообще любую оптимизацию
не стоит утрировать и сравнивать реально полезную оптимизацию и экономию на спичках

Сколько можно сэкономить сменив жсон либу? Можно очень сильно разгрузить GC и это очень заметно при нагрузке. Да и памяти поменьше в несколько раз

А экономия замены свойств на поля в дто (задача которых переносить инфу, а не быть основными деталями жестких алгоритмов) - 0.000001%?

Аноним 21/09/20 Пнд 11:27:33 1812303457
Аноним 21/09/20 Пнд 11:58:39 1812334458
>>1812303
>Тебе же уже сказали - нисколько.
это фантазеры сказали. Реальность говорит иное

>Достаточно выполнять рекомендации стандартной документации:
Ну вообще то там написано очевидное (про раздел "разбирайте руками" я вообще промолчу)
и с этими рекомендациями либа грузит GC больше чем аналоги (а почему бы не грузить если эти рекомендации вообще GC не касаются, а рекомендация "не грузите жсон строку в память" вообще не считается за мусор который делает либа)

А вообще что говорить. Берем первый попавшийся бенч и сравниваем ньютон и мою любимую в плане скорости SpanJson (System.Text.Json похуже будет, а SpanJson побогаче по фичам и быстрее всех)

первый прогон
Newtonsoft: скорость 1 аллоцировано 34.16 MB
спанжсон: скорость 0,24 аллоцировано 5.46 MB

разницу в памяти и скорости видишь?

читаем те рекомендации. ручной разбор, не хранить жсон в стринге, конвертеры это не к нам. но вот контрактрезолверы да
у нас var serialized = JsonConvert.SerializeObject(element);
что непорядок судя по советам
делаю в тесте контракт резолвер (прямо из советов) и пропихиваю его

var serialized = JsonConvert.SerializeObject(element, _jsonSerializerSettings);

и запускаю.
я тут ожидал что будет лучше но стало хуже

Newtonsoft: скорость 1 аллоцировано 49,72 MB
спанжсон: скорость 0,20 аллоцировано 5.46 MB



Аноним 21/09/20 Пнд 12:51:38 1812392459
>>1812152
Ты можешь использовать HttpListener если совсем по-простому. Можешь сделать и на Nancy или Asp.Net - гугли self-hosted Nancy/ self-hosted Asp.Net. Первая и использует HttpListener под капотом, на счет второго - не знаю.
Я с упаковкой дела не имел, но оно наверняка должно работать и упаковано.
Аноним 21/09/20 Пнд 12:54:41 1812397460
>>1812334
Так ты бы сразу и сказал, что речь о бенчмарках, а не о рабочем коде. Потом такие клоуны пишут продакшн код, пилят костыли к своим "в бенчмарках результат лудше!!" и на выходе получают результат в разы хуже, как по читаемости кода так и по его производительности.
Аноним 21/09/20 Пнд 13:39:23 1812449461
>>1812220
Ты точно с ответом не промахнулся?
Аноним 21/09/20 Пнд 14:12:58 1812477462
>>1811950
Пиздабол. Только недавно делал сервис под винду на основе worker. Добавляешь nuget пакет, windows service или как-то так, и все работает
Но я сам могу спиздеть, так как запускал на той тачке, где уже стоял рантайм. А так – служба была сингл-файлом из-за чего пришлось подпердолить конфигурацию, так как appsettings.json я хотел иметь в корне с программой, а не в недрах temp, куда по-настоящему распаковывается этот сингл-файл. Служба устанавливается командой в консоли, потом все работает в штатном режиме
Аноним 21/09/20 Пнд 15:12:39 1812535463
>>1812397
>Так ты бы сразу и сказал, что речь о бенчмарках, а не о рабочем коде
ааа ясно. ЭТА ДРУГОЕ (С)

заменить свойства на поля - оптимизация. А заменить либу жсон которая при большой нагрузке СИЛЬНО ЗАМЕТНО экономит память и GC меньше дергается - да какая то это оптиизация )))

ясно все с тобой
Аноним 21/09/20 Пнд 15:18:44 1812547464
>>1812152
кестрел это просто либа, а именно простенький сервер. как и хттплистенер, только более оптимизирован
ты можешь просто их запустить без обвязки асп.нет
а асп.нет даст тебе роутинг, чтобы ты сам не разбирал урлы, биндинг чтобы ты не парсил тело запроса и так далее

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

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

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

Аноним 21/09/20 Пнд 18:09:41 1812720465
Прошу людей, которые уже довольно долго варятся в шарпе, ответить на такой вопрос. Если бы вы сейчас изучали этот язык, то какую бы область применения выбрали? Веб?
Аноним 21/09/20 Пнд 18:32:12 1812733466
>>1812477
Ну дык я так же делал и как раз на основе воркера. Нужно было маленький Http-сервер в виде виндового сервиса замутить. Так вот, самому хотелось в виде одного файлика, потому что ну красивше же, чем эти миллиард dll, а вот хуй, одним файликом сервис в винде не отзывался на запрос и постоянно стопался типа сервис не ответил, я даже лайвтайм и прочее сделал чтобы оно максимально на классическую службу было похоже. Почти два дня бился, а потом забил и оставил с кучей dll'ок и работало нормально. Я ХЗ что я упустить мог, но просто обидно, потому что сам хотел чтобы сервис был одним экзеншником + настройки.
Аноним 21/09/20 Пнд 18:58:24 1812756467
>>1812535
>СИЛЬНО ЗАМЕТНО экономит память и GC меньше дергается

Так ты показывай проект с newtonsoft и этот же проект с аналогом, а потом сравнение работы с JSON'ом, а не твои тесты высосанные из пальца.

>заменить свойства на поля - оптимизация.

Это обычный пример того, что не всё так очевидно как тебе кажется. Функционала у newtonsoft больше, очевидно что если использовать все настройки по умолчанию, то и работать он будет не так быстро как аналоги с необходимостью пилить свои велосипеды. При этом в данном случае этот функционал даже велосипедами не добавляется, т. е. вызов метода вместо считывания поля у тебя будет в любом случае, хочешь ты того или нет, вот и спрашивай себя потом, сколько раз ты наступишь на подобные грабли прежде чем поймешь, что лучше бы ты проверенное временем решение использовал, а не вёлся на бенчмарки для даунов.
Аноним 21/09/20 Пнд 19:00:55 1812758468
>>1812547
>>1812392
Мне бы, конечно, лучше asp.net, не больше роутинг, как шаблоинизатор нужен.
Просто файл буду на разных компах размещать. Я понял asp.net сделать embedded не получиться?
Аноним 21/09/20 Пнд 19:15:09 1812775469
>>1812756
>Так ты показывай проект с newtonsoft и этот же проект с аналогом.
идиотская просьба. где я тебе в опенсорсе найду один и тот же проект под 2 разные либы
такие проекте в опенсорсе называются разве что бенчмарк
а приватные я тебе показывать не буду, а на слово ты мне и не поверишь. тебе и бенчи не доказательство. Ты уперся "у меня все хватает". так блин сделай нагрузку побольше чтобы уперлось в GC и тогда уже можешь толкать тезисы, или они будут о том что "насяльника давай памяти добавим, да и вообще проц мощнее нужен"

>Функционала у newtonsoft больше
я выше четко писал что кому то фишки, другим скорость.
и лично мне никакие особые фишки не нужны. Я даже не в курсе че там может быть такого особенного, что очень нужно и нигде нету. У меня задача преобразоывать жсон в структуры и обратно. Я хз че как вы там изголяетесь еще.

>т. е. вызов метода вместо считывания поля у тебя будет в любом случае
ты вообще о чем? ты все про свойство против поля в дто? спанжсон умеет в поля
но я в очередной раз повторюсь что выгода от этого просто минимальна потому что дто которые приходят из жсон или уходят в жсон в 99.99999% случаев не учавствуют в hot path, где эта замена была заметна даже под электронным микроскопом.

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




Аноним 21/09/20 Пнд 19:18:40 1812780470
>>1812775
>где я тебе в опенсорсе найду один и тот же проект под 2 разные либы

Представь себе, люди переписывают код под другие либы с целью оптимизации. Почему ты не можешь найти примеров с ньютонсофт и аналогами? Правильно, потому что при правильном использовании ньютонсофт оказывается либо таким же, либо лучше по скорости чем аналоги.
Аноним 21/09/20 Пнд 19:26:26 1812792471
>>1812775
Ембеддед обычно говорят когда веб-сервер встроен в приложение (микросервис). Ты запускаешь, поработал, выключил.
Такое достижимо с asp.net?
Аноним 21/09/20 Пнд 19:31:49 1812798472
>>1812780
>Представь себе, люди переписывают код под другие либы с целью оптимизации
в опенсорсе? нахера им это. опенсорс это всего лишь код
это просто код просто код. просто код который код.

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

разве пхп переписали под фейсбук и вк? или это фейсбук и вк переписали под себя пхп? Разве кто то переписывает гитлаб с руби на что то более шустрое?

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

ньютонсофт может быть "не оказывает весомую нагрузку чтобы оно стоило того чтобы тратить время деньги на его замену"
но говорить что он быстрее....

>>1812792
>Такое достижимо с asp.net?
да. его можно запустить как тот же хттплистенер и погасить без var host = new WebHostBuilder() который заблочит поток.
Точно можно. Я даже видел как. Я даже сам запускал. Я даже записал. но блин найти не могу ааааааа

Аноним 21/09/20 Пнд 19:41:09 1812802473
image.png 129Кб, 938x618
938x618
Чем можно подобное деобфусцировать?
Мне практически ни для чего не надо, я просто любопытный.
Аноним 21/09/20 Пнд 19:57:44 1812816474
>>1812792
А в инете хрен найдешь. А так кто то из этих знатоков то ли toub то ли еще кто то вроде на гитхабе показал как
я случайно нашел
а щас не могу найти даже в инете
Аноним 21/09/20 Пнд 20:20:10 1812835475
>>1812802
Это не обфусцированный код, а просто IL ассемблер. Очевидный ILSpy
Аноним 21/09/20 Пнд 20:31:08 1812844476
>>1812835
А я его уже попробовал.
>PE file does not contain any managed metadata.

Оно и логично, ведь это не библиотека, а тупо ряд объектов с внутренностями. Может, нужно попердолить заголовок чтобы он походил на PE?
Аноним 22/09/20 Втр 01:10:13 1813012477
image.png 1818Кб, 1705x1281
1705x1281
>>1812152
Как уже сказали и сам Kestrel (web server for dotnet) и Aspnetcore - это просто либы.

Если у тебя есть веб проект
dotnet new web --name WebApp

Компилишь его под что угодно и добавляешь сам дотнет в сборку
dotnet publish --self-contained true --runtime ubuntu.18.04-x64

Запускаешь приложение на Debian-like линуксовом дистрибутиве
./WebApp

У тебя запустился веб сервак на машине, на которой дотнет может быть даже не установлен, и готов принимать запросы.
Аноним 22/09/20 Втр 01:14:44 1813013478
image.png 363Кб, 1399x317
1399x317
>>1813012
Вторая пикча почему-то отклеилась.
Аноним 22/09/20 Втр 01:25:27 1813018479
>>1812397
У нас есть тесты нагрузки, когда реальную систему бомбят 2-5к виртуальных юзеров (открывают браузеры на куче машин, щёлкают по кнопочкам, вводят текст в формочки). Перевели с Newtonsoft на System Json и нагрузка упала (не в разы, но заметно). Никакой старшной логики не было. Стандартные serialize/deserialize.
Аноним 22/09/20 Втр 01:54:54 1813025480
Если кому интересно, чтобы все длл в один файл засунуть
dotnet publish -c Release -r win-x64 -p:PublishSingleFile=true --self-contained true

Он куда-то распаковывает при старте, куда непонятно, но второй запуск быстрее
Аноним 22/09/20 Втр 10:52:36 1813075481
>>1813018
>Пeревели с Newtonsoft на System Json
А дoстaточно было сделать сeриализацию/дeсeриализацию напрямую из потока + в самых нагруженных местах добавить ручную дeсeриализацию/сeриализацию. Вот я про это и говорю, мaкaки смотрят на говнобeнчмарки и бегут всё скорее переписывать, вместо того чтобы почитать документацию к инструменту который они уже используют.
Аноним 22/09/20 Втр 11:24:27 1813094482
>>1813075
>сeриализацию/дeсeриализацию напрямую из потока
а если оно УЖЕ из потока в поток то куда поточить еще?
Хватит держать всех вокруг за идиотов, особенно тех, у которых реальная нагрузка

>в самых нагруженных местах добавить ручную дeсeриализацию/сeриализацию
то есть в итоге ВЕЗДЕ
норм ага.
нормальная такая оптимизация - парсить вручную ))))

Аноним 22/09/20 Втр 12:11:16 1813126483
>>1813094
>нормальная такая оптимизация - парсить вручную ))))

Нет, лучше переписать всё на новую либу, потратив в 10 раз больше времени)))
Аноним 22/09/20 Втр 12:14:21 1813128484
image.png 3Кб, 218x186
218x186
>>1812844
>>1812802
Крч обвязал я BinaryFormatter.Deserialize вокруг ньютонсовтовского конвертера, десериализует больше, чем нихуя. Я близко
Аноним 22/09/20 Втр 12:38:30 1813154485
>>1813126
>Нет, лучше переписать всё на новую либу, потратив в 10 раз больше времени)))
Ну если у тебя безумные жсоны с которыми ты работаешь в полуручном режиме из-за их безумия то да
Аноним 22/09/20 Втр 13:07:00 1813194486
>>1813154
>легче потратить в 10 раз больше времени
Ясно. Вся суть возбужденных бенчмарками шизиков.
Аноним 22/09/20 Втр 16:38:45 1813328487
image.png 37Кб, 434x375
434x375
>>1813128
проссал проблему, там просто куча объектов на друг друге, а поток обрабатывает только первый.
Вот только с последним намечается проблема
Аноним 22/09/20 Втр 16:43:09 1813332488
>>1813194
Ты наверняка какой-то старый хуй, который командует какой-то тимой в своей конторе, у которого все приложения висят по 1-10 сек на любой чих и считает что это норма.
Аноним 22/09/20 Втр 16:46:15 1813337489
>>1813328
Хотя не, эту проблему решил
Аноним 22/09/20 Втр 16:46:56 1813339490
>>1813332
Когда нужна скорость, на сярпе не пишут
Аноним 22/09/20 Втр 16:48:13 1813340491
>>1813332
Любой опытный программист сначала изучает уже используемый инструмент, ищет пути его оптимизации, оценивает трудозатраты на оптимизацию и на переход к использованию другого инструмента и только после этого делает выбор между оптимизацией текущего решения и новой библиотекой.
Аноним 22/09/20 Втр 16:49:32 1813341492
>>1813126
Переписка заняла буквально 4 часа одним девом. Переезд с фреймворка на кор тоже упрощается, если используется системная либа. Но опять же - дело вкуса. Кому что больше нравится или подходит под конкретную ситуацию.
Аноним 22/09/20 Втр 16:57:49 1813351493
>>1813339
Вот эти вот вскукареки вылазят из каких то мухосрансков периодически и глобально разом за всю планету делают такие заявления. MS, GM, Amazon, Fidelity, Stackoverflow - у этих дотнет в хайлоаде используется, никто не жалуется.
Аноним 22/09/20 Втр 16:58:20 1813352494
Аноним 22/09/20 Втр 18:21:48 1813455495
>>1813352
Видимо для тебя это не 2+2 = 4, раз вместо того чтобы переписать код на ньютонсофте ты пишешь новый с использованием другой библиотеки.
Аноним 22/09/20 Втр 18:38:01 1813463496
>>1813455
Сказал чувак не знавший ни ситуации, ни задачи, ни условий, в которых весь проект крутился. Но который незамедлительно принёс своих осуждений. Ещё и тонко так вставил что в конторе, где крутятся сотни приложений, обрабатывающих тыщи запросов в минуту, имеется огромный состав всяких видов архитекторов, нет опытных программистов.
Человеку только дай волю, он всех вокруг заплюёт и засмеёт.
Аноним 22/09/20 Втр 18:41:20 1813464497
>>1813463
У него все норм или "ему все норм" и он думает, что у всех так и все идиоты, которые не умеют готовить ньютонсофт

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

Л - логика
Аноним 22/09/20 Втр 18:53:21 1813476498
>>1813464
>свел все к рекомендации "перепиши в ручной код"
Ты о чём?? Тут анонов 5-6 разных в дискуссии участвовало. Я не понял, на какой именно коммент ты ссылаешься.

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

Ты наверное в комментах запутался и начал мимо отвечать.
Аноним 22/09/20 Втр 18:57:16 1813479499
>>1813476
не не запутался. Это не ответ тебе, а дополнение к твоему коменту про чувака. я ж написал "он в итоге свел", "у него" и т.д.

я тот чувак, который основной его оппонент, который бенчи выкладывал.
Аноним 22/09/20 Втр 19:00:16 1813482500
>>1813464
А, понял, ты вот этот чувак >>1813094

Я думал ты ко мне в третьем лице обращаешься, лол.
Аноним 22/09/20 Втр 20:51:39 1813544501
.png 17Кб, 734x380
734x380
Можно ли такого же поведения добиться без объявления делегата который сам себя возвращает?
Аноним 22/09/20 Втр 21:49:45 1813576502
>>1813544
Он не обязательно должен сам себя возвращать. Без возвращения делегата никак не добьешься.
Аноним 22/09/20 Втр 23:00:52 1813644503
Как рантайм сделать один объект членом динамического объекта object? Если что, получается он у меня после десериализации.
Аноним 22/09/20 Втр 23:35:49 1813684504
Аноним 23/09/20 Срд 02:17:44 1813754505
.PNG 10Кб, 312x480
312x480
Нубский вопрос:
Написал метод для события одного из контролов. Тк метод единый, но его нужно использовать в разных формах - запихнул его отдельную библиотеку. Да, все ок работает, если вручную присваиваю(+=) свой метод к событию. Но можно как-то сделать так, чтобы мой метод из dll отображался и выбирался в конструкторе? Так было бы красиво и удобно(сразу и в одном месте видно как и какие события обрабатываются).
Аноним 23/09/20 Срд 04:05:54 1813780506
>>1813754
Не видел этой фигни с 2008 года! Спасибо за ностальгию!
Аноним 23/09/20 Срд 15:06:17 1814215507
3 Года опыта с плюсами. Как думаете за какой срок смогу осилить этот ваш До-диез?
Аноним 23/09/20 Срд 15:08:47 1814218508
Аноним 23/09/20 Срд 15:13:39 1814228509
Аноним 23/09/20 Срд 15:15:19 1814230510
>>1814228
Ну это оптимистичная оценка. Всего 3 года плюсов. Ущерб мозгу нанесен сильный, но если постараться, то поправимо за такое время.
Аноним 23/09/20 Срд 15:16:46 1814234511
>>1814230
Толстишь так будто я написал что имею 3 года опыта с жаваскриптом.
Аноним 23/09/20 Срд 15:32:41 1814249512
Вроде четвертый год работаю (ASP.NET) в конторе, у нас уже считаюсь более или менее опытным.
Ни разу в жизни не использовал (даже не знаю, как использовать) делегаты, синхронизацию, сериализацию, рефлексию и прочую хрень, о которой только и пишут на форумах.
Не написал ни одного интерфейса.
Спасает знание некоторых базовых вещей и владение SQL. Понимаю, что если контора накроется, то сосну на рынке, но пока в зоне комфорта.
Аноним 23/09/20 Срд 15:51:07 1814262513
>>1814249
> делегаты
Мне понадобились только в винформах, чтобы интерфейс дергать. Делегат использовал для события. Хотя есть EventHandler и EventArgs, но ими я не пользовался так что тоже каминаут сделал
> синхронизацию
Что имеешь ввиду? Многопоточку и асинхронность вообще?
> сериализацию
Ну данные же ты куда-то сохраняешь, с хмл поди да работал хоть на полфедора
> рефлексия
Тоже не понимал, зачем она нужна, пока не решил написать динамический фронтенд, который генерируется по ответу бекенда
До этого момента думал, что это какая-то чёрная магия, которая нахуй не нужна

Зато потом в js, где нет рефлексии, долго плевался
Аноним 23/09/20 Срд 15:59:41 1814268514
>>1814262
>Многопоточку и асинхронность вообще?
Да
Аноним 23/09/20 Срд 16:01:00 1814269515
Clip2net2009232[...].png 11Кб, 482x242
482x242
Clip2net2009232[...].png 3Кб, 361x133
361x133
Как в WPF сделать, чтобы кнопки (и другие элементы управления) были стандартного Windows 10 стиля, как на пике один, а не такими как на пике 2?
Аноним 23/09/20 Срд 16:02:28 1814271516
>>1814269
Может, копнуть в сторону UWP
Может, сделать свой собственный диалог. У тебя везде такие кнопки? Кажется, ты какой-то системный диалог вызываешь
Аноним 23/09/20 Срд 16:07:44 1814275517
>>1814271
А, не, обычные Button нормальные, а это MessageBox. А там никак такие же не сделать что ли?
Аноним 23/09/20 Срд 16:08:21 1814277518
Аноним 23/09/20 Срд 16:11:52 1814280519
>>1814249
Ну такое возможно в асп.нет
Но надо ж расти
Аноним 23/09/20 Срд 16:53:16 1814323520
>>1814249
Единственное что это значит, что тебе учиться не у кого. Также первые 5 лет работал. Баги были нормой, запросы к БД и файловой системе по несколько секунд тоже. Но потом попал в компанию, где были настоящий архитектор и сеньоры. И у них был местный хайлоад, куча проектов с миллионом строк кода, БД с миллиардами записей в таблицах.
И оказалось что норма - это
- писать код без багов по пол года а то и больше
- полностью загружать и отрисовывать страницу с запросами ко всяким огромным БД и сторонним сервисам за <1сек
- иметь полное покрытие системы юнит и интеграционными тестами, которые на лету создают нужные сервисы и БД в памяти или на специально выделенном сервере
- выдавать несколько рабочих фич в прод за спринт
- не возвращаться к закрытым таскам
- автоматизировать the crap out of всего подряд, чтобы нажал кнопку и всё работало, а программист только тратил время на написание кода.

Учись в общем.
Аноним 23/09/20 Срд 16:57:07 1814329521
>>1814215
Ну был тут один плюсовик, так этот даун несколько часов только осваивал различия инициализации объектов в плюсах и шарпе. Поэтому вот этот анон >>1814218 конечно преувеличил, но примерно где-то так оно и будет.
Аноним 23/09/20 Срд 16:58:26 1814330522
>>1814249
Я за чуть больше чем год всё это в одном пет-проекте использовал, даже страшно представить тот говнокод с которым ты работаешь.
Аноним 23/09/20 Срд 17:00:31 1814331523
>>1814215
Подруга фигачила с++ 8 лет, потом за неделю пересела на шарп. Правда она в МС работала.
Вообще такие вопросы не имеют смысла. Можно 15 лет сиплюсплюсить и быть дегенератом, который не понимает ни как ЦПУ, ни как РАМ работают, иметь постоянные утечки и хвастаться криптокодом, который он сам через неделю перестаёт понимать. Такой и в шарп 10 лет запросто въезжать будет.
Если у тебя есть хорошая база и понимание того, как компы в принципе работают, то за 2 месяца в любом языке станет комфортно.
Аноним 23/09/20 Срд 17:06:20 1814334524
>>1814329
>преувеличил
>но примерно где-то так оно и будет
чел, ты...
Аноним 23/09/20 Срд 17:18:16 1814358525
>>1814275
Хотя обычные Button тоже не выглядят как стандартные. Сраный Qt выглядит нативно а виндовый WPF не выглядит.
Аноним 23/09/20 Срд 17:29:13 1814376526
>>1814234
Так с жаваскриптом было бы проще, современный язык, как и шарп. Это тебе не std::говно_говна<МоёГовно> простоЧтобыПамятьНеУтекла = std::make_говно<МоегоГовна>();
Аноним 23/09/20 Срд 17:30:52 1814378527
>>1814334
Уроки иди делать, чел. Желательно по русскому и литературе.
Аноним 23/09/20 Срд 19:41:08 1814496528
Кто нибудь знает, есть ли разница в производительности, когда в EF core инклюдишь navprop'ы по строкам и по expression'ам? Лень самому бенчмарк писать
Аноним 23/09/20 Срд 20:15:52 1814501529
>>1814376
Всё ещё толстишь. Подскажи мне: почему я всё ещё тебя кормлю?
>>1814378
Я своё уже отучил. Почему тебя это так беспокоит?
Аноним 23/09/20 Срд 20:25:19 1814504530
Анон вот что делать. Задача : получить данные из стороннего апи, привести их к виду который нужен нам и сохранить. Проблема - сторонне апи - говно которое кучу мусора отдает, и не имеет методов для получения небольшого куска информации, что нужен мне. Ну и выходит что я делаю запрос, половину БД со стороны в виде JSON'а получаю, потом делаю всю эту SQL-работу, джойню, фильтрую, селкучу, чтобы достать пару нужных мне значений и запихнуть их в нашу базу. В итоге просто с нихуя жрется куча памяти и работает медленно, потому что блядь для одного сука объекта, у которого мне нужно несколько блядских полей приходит JSON 100мб веса, блядь нахуй. Вот и как тут быть? Как с этим работать чтобы такая, казалось бы тривиальная задача не была такой тяжелой?
Ей богу, дали бы эти пидоры возможность к своей БД подключиться, один маленький селект и все, но нет, хуй там, мы дали открытое апи - пользуйся.

Ну да, вопрос таки касается шарпа. Может быть есть какой-то способ как-то сделать это все дело так чтобы не выходила такого пиздеца, потому что на обработку одного такого объекта может до нескольких секунд уходить, ведь все равно в том что пришло нужно еще и искать всякое и потом приводить к нужному нам виду. В общем, я хз.
Аноним 23/09/20 Срд 20:32:51 1814508531
>>1814504
>что делать
Донести до них, что они долбоебы
Так им и передай, что даже мимокрок анон с двача так считает

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

а значит остается одно - донести до этих долбоебов что они долбоебы
Аноним 23/09/20 Срд 22:27:06 1814591532
>>1814504
У них в АПИ никаких фильтров вообще не предусмотрено?
Для того чтобы сильно свою систему не грузить, можно свой JSON конвертер сделать, который вытащит только нужный блок из стрима.
Ну и кэшить их ответы естественно.
Аноним 23/09/20 Срд 23:27:15 1814635533
.jpg 10Кб, 225x225
225x225
>>1813780
>Не видел этой фигни с 2008 года! Спасибо за ностальгию!
Я что-то не так делаю?
Аноним 24/09/20 Чтв 00:20:16 1814655534
>>1814635
Нынче всё скриптуют и кодогенерируют. Руками через drag-n-drop софт разве что для демонстрации или для пет проекта делают.

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

Тем более что веб приложения сейчас двойным щелчком по исполняемому файлу могут запускаться и даже выглядеть как десктоп. Но зато сразу из коробки куча вшитого функционала и безопасность.
Аноним 24/09/20 Чтв 01:54:46 1814714535
>>1814655
>Руками через drag-n-drop софт разве что для демонстрации или для пет проекта делают.
>Смысл для десктопа только если у тебя игры, работа со звуком/графикой, всякие IDE, пет проекты или древняя версия
>пет проект
Ну так как я пишу первый серьезный проект для себя - значит я все таки все правильно делаю?
Аноним 24/09/20 Чтв 02:33:15 1814746536
>>1814714
Для себя можно хоть на чём учиться. Лишь бы учился. Но конкретно по твоему вопросу ничего сказать не могу, т.к. свойства объектов через UI в студии уже больше 10 лет не трогал.
Аноним 24/09/20 Чтв 08:03:02 1814783537
>>1814655
>и даже выглядеть как десктоп
и тормозить как говно и требовать знания говножс
Аноним 24/09/20 Чтв 08:18:09 1814788538
>>1814783
Да уж лучше блять говножс, чем мегасупердуперговноxaml или упаси господь QML с его псевдожс
Аноним 24/09/20 Чтв 08:37:19 1814793539
>>1814788
хамл кстати шикарен
а жс сразу идет лесом когда нужны потоки
ах да. они же не нужны
всем нужны говнокалькуляторы )
Аноним 24/09/20 Чтв 08:41:32 1814796540
>>1814793
Хамл шикарен только среди остальных инструментов для десктопного гуи, потому что из конкурентов у него только винформс, qtForms, gtk++ и прости господи чистый WinAPI. есть еще электрон вроде, но он тоже на js)))) Как человек, пиливший ГУЙ на всем вышеперечисленном и на вебовских технологоиях, ящитаю, что впизду и нахуй делать UI на десктопе, просто боже упаси. Веб в разы удобнее и профессиональных живых инструментов с активным коммьюнити гораздо больше.
Аноним 24/09/20 Чтв 08:44:56 1814797541
>>1814796
Каждый кулик свое болото хвалит
Аноним 24/09/20 Чтв 09:11:11 1814806542
>>1814323
К нам в проект пришел опытный прогер и переписал запросы к БД, работающие секунд 15-20 так, что они стали работать за 4-5 секунд и это считалось невероятным успехом.
Аноним 24/09/20 Чтв 15:17:43 1815120543
209587431905.mp4 91Кб, 1644x894, 00:00:10
1644x894
Почему кнопки и все остальные элементы управления в Winforms нативные, точно такие же как и во всех системных окошках, а в WPF какие-то свои? Можно ли как-то сделать чтобы WPF рендерила такие же нативные элементы?
Аноним 24/09/20 Чтв 16:36:35 1815202544
>>1815120
ну так стили и шаблоны.
если не жалко времени
Аноним 24/09/20 Чтв 17:44:46 1815270545
В какую сторону копать C# + SQL? Чтобы писать код на шарпе, который бы взаимодействовал с базами данных.
Аноним 24/09/20 Чтв 17:48:51 1815274546
>>1814793
> хамл кстати шикарен
Да ну нахуй. В чем этот хамл шикарен? Бойлерплейт нечитаемый

Все думал, как в вебе такие шикарные вещи делают, пока не попробовал сам. Потом дошло, что это не веб сложный, а просто декстоп говна в жопу заливает
Аноним 24/09/20 Чтв 18:21:02 1815310547
>>1815274
ты просто не вник основательно в хамл. а в веб вник, вот потому так и говоришь

открою тебе тайну - хамл это хмл и хтмл это хмл
так в чем разница в читабельности

Разница лишь в том, что они описывают. хтмл только элементы, а хамл это выражение кода в хмл

И все что не выражено в хмл выражается в коде на языке программирования. И лучше когда все находится в одном месте (хамл с нулевым code-behind) чем хтмл+лютый code-behind
Аноним 24/09/20 Чтв 18:21:45 1815311548
>>1815270
Entity Framework / dapper + 100 микроорм. Фломастеры
Аноним 24/09/20 Чтв 18:29:38 1815315549
>>1815311
Спасибо. А что из этого лучше/для каких целей?
Аноним 24/09/20 Чтв 18:35:20 1815318550
>>1815315
ну так 2 основные концепции

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

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

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

Ну и что то среднее это Linq2Db c его linq вместо sql, ну и куча разных либ которые каждая по своему видят как должно быть.
Аноним 24/09/20 Чтв 18:57:53 1815331551
>>1815315
Другой ответ хороший, но я пьян и хочу дополнить джуновьей мудростью. EF нормальная штука, если ты сам хозяин базы данных - ты ее формируешь под свои требования, потому запросы у тебя почти всегда будут тривиальны. Но если база данных уже существует, и тебе под нее подстраиваться нужно, высока вероятность что ты каждый раз будешь проверять, какие запросы генерирует EF. В половине случаев ужасаться. А иногда просто не сможешь запрос нужный написать используя linq. В случае таких БД лучше сразу выбирать dapper.
Аноним 24/09/20 Чтв 19:00:11 1815332552
>>1815318
Большое спасибо, добра!
Аноним 24/09/20 Чтв 19:38:14 1815349553
Сап анончики, что за оператор такой "?"
Видел в коде подобную конструкцию
public int? A {get; set;}
Гугл говорит немного про другую хуйню.
Аноним 24/09/20 Чтв 19:51:03 1815355554
>>1815349
int? - это nullable int. По сути int, который может принимать значение null. С другими базовыми типами так же можно делать.
Аноним 24/09/20 Чтв 19:54:02 1815357555
и нужно. вообще правильно вбивать такое в каждый проект
<LangVersion>8.0</LangVersion>
<Nullable>enable</Nullable>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>

Аноним 24/09/20 Чтв 21:50:34 1815523556
>>1815349
Про nullable типы уже сказали (Type? это под капотом Nullable<Type>), а как операторы:

Ternary (conditional) operator:
var result = condition ? result1 : result2;
Если condition == true, то result = result1. Иначе result = result2.

Null-coalescing operator:
var result = result1 ?? result2;
Если result1 != null, то result = result1. Иначе result = result2.

var result ??= result1;
Если result == null, то присваивает ему result1. Иначе ничего не делает.

Null-conditional operator:
var result = thing?.member;
Если thing != null, то result = thing.member. Иначе result = null (и не возникает исключения, как если бы ты пытался обратиться к thing.member при том что thing == null).
Аноним 24/09/20 Чтв 22:17:43 1815542557
Хочу сделать сорт оф настолку в вебе, все что мне нужно из функционала это: лобби игры для нескольких игроков, передвигающиеся .пнг пикчи фишек разных по нажатиям кнопок, ну и там логика всяких счетчиков/значений и т.д., было бы плюсом завезти какие-то анимации для этих же передвигающихся пикч.
У меня вопрос - какой стек мне нужен для этого, а точнее хватит ли мне asp.net или для этого придется дрочить еще всякие js'ы. Сам легко могу такое сделать на wpf'e/winforms, а в вебе не разбираюсь.
Вот хороший пример приблизительно того что я хочу https://monopoly-one.com/ , только там игровое поле на html коде, а мне достаточно/нужно .пнг фон.
Аноним 24/09/20 Чтв 22:40:00 1815560558
>>1815542
ну любой сайт это серверная сторона что выполняется на сервере
и то что выполняется в браузере
и вот что в браузере это жс
ну или блазор если смелый
Аноним 24/09/20 Чтв 23:11:09 1815599559
Там у Троелсена оказывается девятое издание по C# 8 и .NET Core 3 вышло.
Аноним 25/09/20 Птн 06:22:35 1815617560
Аноним 25/09/20 Птн 07:20:34 1815623561
>>1815310
Вот сейчас я ради интереса ковыряю wpf и пытаюсь сделать кнопку из квадрата. Я уже полчаса гуглю, как это дерьмо заставить менять цвет в ответ на событие фокуса
Каждый ебаный элемент имеет в себе сотню ебаных свойств, а иде бесполезна более чем полностью. При том, что я в бленде сижу, специализированное по для интерфейсов, блядь. Хочешь поменять стиль – вот тебе 400 строк стилей всего элемента, ебись, блядь, ковыряй триггеры, дрочи этот котях

В рот ебал этот хамл. Десктоп загнулся и поделом ему с такими инструментами. Но майки тащат это сучье дерьмо в maui. Да, там будет флюент синтаксис, но наверняка найдется какой-нибудь дед-пердед, которому и хамл вкусный, и ебись потом с его контролами. Впрочем, не уверен, что майки в этот раз смогут сделать что-то популярное для мобилок
Аноним 25/09/20 Птн 09:28:27 1815662562
>>1815599
ну и нахуй оно нужно?
Аноним 25/09/20 Птн 10:08:19 1815699563
>>1815623
>Я уже полчаса гуглю, как это дерьмо заставить менять цвет в ответ на событие фокуса
то есть это значит что ты вообще не освоил основ и уже "говно говно говно"
про триггеры знаешь, а цвет на фокус поменять не можешь. Вот как так?

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

А десктоп загнулся потому что макаки не умеют в нативную разработку и им похер "лагает, тормозит, половина одного потока", зато крос
Аноним 25/09/20 Птн 10:19:44 1815705564
>>1815699
десктоп загнулся, потому что он нахуй никому не нужен, когда есть универсальный веб интерфейс, доступный с любой ОС с любого устройства, лишь бы был браузер, да еще и с мгновенным обновлением версий
Аноним 25/09/20 Птн 10:25:38 1815709565
>>1815705
А я разве не так сказал? Я это и сказал что притащили вебинтерфейс в десктоп и похуй на то что оно тормознутое говно и жрет безмерно памяти и не выглядит нихуя нативно. Просто макакам писать легче.

потому что МАКАКИ
Аноним 25/09/20 Птн 10:36:45 1815716566
>>1815709
это и писать удобно и использовать удобно, причём тут макакство. интерфейс хуйня, ведь вся магия происходит в десктопе, а жрёт ли приложуха 2мб на чистом винапи или 400мб вкладка в моём браузере - меня не ебёт, когда у меня 24гб DDR4. Зато мои гугл доки доступны мне с любого устройства из любой точки мира, мне не нужно покупать специальное ПО. мне не нужно после переустановки винды ставить себе кучу приложений, потому что я использую веб сервисы. нахуя вот ты скажи мне нужны не-ОС десктопные приложения, кроме игор, браузеров и инструментов разработки?
Аноним 25/09/20 Птн 10:40:35 1815719567
>>1815716
>интерфейс хуйня, ведь вся магия происходит на бэкенде
самофикс
Аноним 25/09/20 Птн 10:40:56 1815720568
>>1815716
Ну то есть ты привел доводы со стороны макак - "нам писать проще, одно на все платформы" и так далее
То есть подтвердил то, что я сказал.

А с точки зрения пользователя у тебя один аргумент "мне норм, остальное не ебет"

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

Аноним 25/09/20 Птн 10:45:16 1815721569
>>1815699
Есть rectangle, который должен менять цвет по наведению. До кучи – по нажатию на него должна вызываться команда

1) в темплейт кнопки засунул прямоугольник. На событие фокуса он не реагирует
2) просто ректангл с триггером, не реагирует аналогично

А я всего лишь хотел сделать кастомный топ-бар. Вот как с этим работать? Не осилил, да. Ну да, я не осилил. Рассчитываешь, что декстоп должно быть удобнее писать, а тебе как будто специально палки в колеса вставляют
Аноним 25/09/20 Птн 10:47:53 1815724570
>>1815720
я размышляю с точки зрения человека, для которого разработка и использование ПО - это не спортивные дисциплины, а методы и средства решения задач. если мне захочется побайтоёбить - то я буду делать там, где без этого не обойтись, а не потому что нуу гыгы тупые макакеры на своём говнякте тащат 200мб а я вон пишу 100 строк на винапи на обработку нажатия кнопки через WM_ коды потому что я нимакакер гыгык))0 void* bThread = CreateThread() я многотопочный)00
Аноним 25/09/20 Птн 11:03:48 1815732571
>>1815599
И много он там добавил? Или как всегда скопипастил всё в кучу, а новое размазал крупицами по всей книге?
Аноним 25/09/20 Птн 11:59:43 1815748572
Image 1.png 105Кб, 777x500
777x500
>>1815721
>цвет по наведению
по наведению чего? мыши что ли? так пролет мыли это не получение фокуса. Ховер эффект это триггер на IsMouseOver
Онклик для элементов что не имеют его делается через InputBindings

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

А потом имеем тот пиздец что на пике
Аноним 25/09/20 Птн 12:05:52 1815753573
>>1815748
>Но кого волнует мнение пользователей
я тебе как пользователь заявляю, что в рот ебал десктопную хуйню, дайте мне веб сервисы. в наши дни пользовательское железо для них нихуя не стоит
>А потом имеем тот пиздец что на пике
ну и причём тут ведроид с его дебильной джабой как основным ЯП разработки?
Аноним 25/09/20 Птн 12:13:01 1815763574
>>1815753
>ну и причём тут ведроид с его дебильной джабой как основным ЯП разработки?
на смартах та же макаковая хуета "не хотим учить натив, дайте нам браузер и мы все в нем. тормозит? жрет память? это проблема юзера -пусть покупает новый смарт"

на десктопах проблема меньше выражена ибо устройство мощнее, но по факту есть ноуты и они не такие мощные и на них это говно ЗАМЕТНО лагает. но макак это не ебет. Софт есть - есть и макаке насрать на то как его говно работает у пользователя
Аноним 25/09/20 Птн 12:13:51 1815765575
Аноним 25/09/20 Птн 13:16:53 1815810576
>>1815753
>я тебе как пользователь заявляю, что в рот ебал десктопную хуйню, дайте мне веб сервисы
так бери вебсервисы, кто тебе запрещает. Никто на твои сервисы не покушается. Сиди в вебверсии телеграма вместо десктопной - твое право.

Но когда переделывают норм софт на жс версию это пиздец. Даже на моей машине (i9 7900x 64gb 3200 и сплошные ssd - да да уже старье) начинает лагать это уже ни в какие ворота.

К примеру, у меня стоит софтина Xmind 7 и летает. А вот ее новая версия переделана под электрон или что то такое и тормозит просто адски. Я не знаю какой там квантовый комп нужен для нее.
Туда же. но выражено меньше - personal brain
про скайп и так все знают - ну он у меня не тормозит (я его и не запускаю так то) так что ладно
логитеч вебкам панелька, кракен панельнка - все это переделали и заметна неотзывчивость.

комп мощнее чем мой древний 2 поколения назад феном х4 925, а по ощущениям все работает с той же скоростью. Потому что процветает макачество. Тенденция такая.
25/09/20 Птн 14:11:09 1815838577
Я тут немного не по теме, но все же буду благодарен если поможете: как откатить пуш и удалить некоторые коммиты в локальном репозитории? Я сейчас случайно залил хуйню которую не стоило заливать.
Аноним 25/09/20 Птн 14:23:28 1815847578
>>1815810
>ак бери вебсервисы, кто тебе запрещает
никто мне не запрещает, но ты выше писал
>Макакам норм, а пользователям страдать. Но кого волнует мнение пользователей
ну вот я и говорю, что я страдаю от привязки к ОС, конкретному устройству, установке ПО и прочему, а не от того, что приложуха жрет 200 мб в вкладке браузера вместо 2мб сразу в оперативке.
>К примеру, у меня стоит софтина Xmind 7 и летает. А вот ее новая версия переделана под электрон или что то такое и тормозит просто адски. Я не знаю какой там квантовый комп нужен для нее.
братишка проста тупа садись на условно бесплатный https://miro.com/app/dashboard/
для всего сейчас есть веб сервисы, нахуй тебе это десктопное говно?
>Потому что процветает макачество. Тенденция такая.
ну так а конкретно js и веб приложения vs десктопные приложения тут причём? из того, что ты говоришь андроид говно, электрон говно следует вывод, что тебе не нравятся говнокодеры, а не жс.
Аноним 25/09/20 Птн 14:49:47 1815861579
>>1815847
>для всего сейчас есть веб сервисы, нахуй тебе это десктопное говно?
1 не работают без инета.
2 имеют жалкий аналог функционала, что мне нужен
3 требуют закачивания или размещения моих рабочих файлов где то еще
4 оно тормоз.
5 оно неудобно. просто неудобно. абсолютно неудобно. может у вас простые требования, но мне для работы НЕУДОБНО шопездец

пункты 1,2,3 решают что оно мне не подходит. и не нужно кормить меня "ты просто не понимаешь", если оно не делает то, что мне нужно так как нужно.

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

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

>андроид говно, электрон говно
про андроид я ничего не говорил. я говорил про смарты, на которых не стоят квантовые процы и сто гигов оперативы. и я не обязан постоянно менять свой смарт чтобы поспевать за жрущим ГОВНОМ типа электрона ( а вот его я как раз считаю лютым говнищем)
тем более что смарты не на что менять. Вот я хочу не лопату с норм железом, акб и так далее и за адекватную цену. принесешь? а нету нихуя
Аноним 25/09/20 Птн 15:34:30 1815890580
Являются ли дженерики реализацией полиморфизма или только интерфейсы? Какого хуя, везде написано, что реализация инкапсуляции в шарпе это гет сет, а чо, блядь, обычная функция это не инкапсуляция разве, блядь?
Аноним 25/09/20 Птн 15:38:19 1815892581
>>1815890
get;set; преобразуется в обычные функции:
_private _uVariable;
public Set(value) {_uVariable = value}
pulic Get() => _uVariable

Синтаксический сахар для инкапсуляции.
Аноним 25/09/20 Птн 15:42:49 1815895582
>>1815892
>get;set; преобразуется в обычные функции
Да не, вот просто, сама по себе любая функция разве по сути не является инкапсуляцией?
public hui Pizda(double height) {}
Аноним 25/09/20 Птн 15:55:09 1815901583
>>1815895
функция является - ведь она может делать внутри себя что-то и потом незаметно ее внутренняя логика может стать другой, а снаружи этого не видно.
точно также и внутренняя логика свойства может стать другой и снаружи этого не заметят
это и есть инкапсуляция.
Аноним 25/09/20 Птн 16:14:46 1815927584
>>1815901
А про дженерики и полиморфизм?
Аноним 25/09/20 Птн 16:22:44 1815947585
Аноним 25/09/20 Птн 16:32:26 1815967586
>>1815765
>>1815748
Спасибо, анон, но я уже удалил проект. Может, вернусь
Все же впф позволяет сделать красиво, но уж очень замудрено. Веб сам собой осваивается, а как понять хамл – хз
Аноним 25/09/20 Птн 16:34:23 1815971587
>>1815699
> хамл силен тем что декларативно описывает то, что иначе пришлось бы кодом набирать что как раз и есть лютый пиии.
Бля, там кодом обычно проще было бы набрать и разбираться проще, чем пялить в эти бесконечные
<hui dlina = 5>
<v pizde> glubina = 25, shirina =5 </ v pizde>
</hui>
Почему, блядь, где то свойства описываются в <> где то между <> </>, плюс, все это такие сопли порождает, что я ебал, как посмотришь на этот хамл, так голова сразу болеть начинает
Аноним 25/09/20 Птн 16:38:37 1815979588
Аноним 25/09/20 Птн 16:41:25 1815987589
Вопрошаю уже который раз и ирл и в интернетах. Нихуя никто ответить толком не может, только ко-ко-ко одно. Может тут пояснит кто.
Нахуя нужны команды в WPF, чо они дают вообще, по сравнению с формами? На формах как было, блядь, есть кнопка, при нажатии вызывается метод. В wpf при нажатии срабатывает команда, которая дергает привязанный к ней метод, и чо? Нахуя эта прослойка в виде команды вообще нужна тогда, блядь? В чем профит?
Аноним 25/09/20 Птн 16:43:05 1815990590
>>1815979
Майкрософт собирает джуну ЯП в энтерпрайз:
— Вот, положила тебе в C# async-await, EF и дженерики с полиморфизмом.
— Мам, нафига??
— Ну как же, берешь запрос к БД через репозиторий на EF, запускаешь Async метод и await'ишь.
— А дженерики с полиморфизмом?
— Так вот же они!
Аноним 25/09/20 Птн 16:44:47 1815991591
>>1815987
сразу из головы чё помню. команды можно биндить, что удобно при использовании юзерконтролов, что в лишний раз энфорсит каноничный MVVM на самом деле ивенты тоже можно, но там такая хуйня костыльная маму ебал
Аноним 25/09/20 Птн 16:49:46 1816000592
>>1815890
>Являются ли дженерики реализацией полиморфизма или только интерфейсы?
>реализация инкапсуляции в шарпе это гет сет

Твоя проблема в том, что ты такие абстрактные понятия как "полиморфизм" и "инкапсуляция" пытаешься вложить в что-то одно. Это не так работает. Эти понятия слишком общие для того чтобы вкладывать их либо в только интерфейсы, либо только в геттеры и сеттеры. Их так и нужно воспринимать как что-то общее, полиморфизм когда ты что-то одно применяешь ко многим, инкапсуляция когда ты что то используешь в общедоступном и скрываешь главную его реализацию от пользователя.
Аноним 25/09/20 Птн 16:50:26 1816001593
>>1815971
А потом такие говорят, что html и css это легко, лол.
Аноним 25/09/20 Птн 16:54:51 1816008594
>>1815987
Для того чтобы у тебя в коде было всё структурированно, что в свою очередь облегчает поддержку и расширение этого кода.
Это как сказать "зачем нужно по папкам всё раскладывать, если можно всё в одну скидывать и функционал не изменится? желательно чтобы этой одной папкой был рабочий стол!"
У команды общий интерфейс, у каждой команды есть общая логика, твой же метод в винформс может принимать любую форму, ограничившись лишь больной фантазией того кто его реализует.
Команда может принимать аргументы, которые ты прописываешь прям в XAML коде, т. е. ты смотришь на XAML и уже примерно можешь представить что эта команда делает, тоже самое в winforms достигается только непосредственным просмотром кода метода в котором еще нужно будет попотеть чтобы понять откуда какие данные берутся.
Аноним 25/09/20 Птн 16:57:52 1816013595
>>1814783
Но ведь можно PWA на Blazor запилить и вообще выкинуть жс. Будет нативное веб приложение, которое маскируется под десктоп и работает быстро.
Аноним 25/09/20 Птн 17:06:48 1816026596
>>1815991
>команды можно биндить
В чем великая суть вместо название события = метод писать бинд = комманда?
Аноним 25/09/20 Птн 17:09:24 1816029597
>>1815990
Требую пояснительную бригаду
мимо даже не джун среди джунов
Аноним 25/09/20 Птн 17:10:55 1816032598
>>1816008
>твой же метод в винформс может принимать любую форму
Да с хуяли это вдруг? В винформах событие дергает метод, про делегаты слышал вообще?
Аноним 25/09/20 Птн 17:12:06 1816033599
>>1816008
>Команда может принимать аргументы, которые ты прописываешь прям в XAML коде, т. е. ты смотришь на XAML и уже примерно можешь представить что эта команда делает
Вот щас бы сидеть смотреть откуда на хуй аргументы взялись в этом xml, ага? Я уж лучше открою и гляну нормальный код, а не это html спагетти
Аноним 25/09/20 Птн 17:20:08 1816049600
>>1816032
Ты совсем тупенький? Реализация твоего метода в формах это черный ящик, в случае с командой мы как минимум знаем что у неё есть методы CanExecute и Execute, а также ивент CanExecuteChanged
>>1816033
Смотреть и гадать не надо, потому что есть общая структура. Ты просто пытаешься судить о том, чем не пользовался, непонятно зачем. Чтобы лишний раз подкрепить своё "это не я ленивый и не хочу учить новое, это технология хуевая"? Так это можно и без постов делать.
Аноним 25/09/20 Птн 17:20:08 1816050601
>>1815971
>Бля, там кодом обычно проще было бы набрать и разбираться проще
кому как. у меня вот проект на кутях где описывается кодом и это пиии. ведь нужно в голове выполнять этот код чтобы понять, а еще код длиннее и может собираться из многих методов и вообще адище

>где то свойства описываются в <> где то между <> </>
хмл есть хмл. Простой тип - строки числа енумы можешь задать как аттрибут, ну и то что обвешано всякими {Binding, Static ...и так далее, которые могут превратить заданную им строку в нужный обьект). А сложный тип нужно описывать как самостоятельный хмл узел, который в аттрибут не всунешь.

>>1815987
>Нахуя нужны команды в WPF, чо они дают вообще, по сравнению с формами?
Биндинг биндинг. чтобы ты в MVVM не писал горы хендлеров событий в code-behind (который в идеале пустой) ибо декларативщина

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


Аноним 25/09/20 Птн 17:24:15 1816058602
>>1815987
А ну да. Это ж еще команда, которая имеет CanExecute. Не нужно бегать по форме и дисаблить всех нуждающихся. Не нужно также заводить отдельный флаг "эту операцию можно выполнить"
потому что команда содержит в себе еще и эту инфу и вид про это знает
Аноним 25/09/20 Птн 17:26:01 1816061603
>>1815927
дженерики это просто шаблон чтобы за тебя создали конкретный тип. это не полиморфизм.
Аноним 25/09/20 Птн 17:27:39 1816064604
>>1816026
Суть в том, чтобы свести весь UI и всё поведение пользовательского интерфейса к XAML, MVVM и биндингу, чтобы не определять события в коде. Алсо событие - не dependency property, так просто ты его не забиндишь. Ты можешь указать какое то конкретное событие твоего юзер-контрола, но оно будет вне контекста основной view-model'и контейнера/приложения, и следовательно ничего у тебя там не будет
Аноним 25/09/20 Птн 17:28:08 1816067605
>>1816029
ну анекдот бородатый про гвозди чё ты ёптубля
Аноним 25/09/20 Птн 17:29:14 1816069606
Аноним 25/09/20 Птн 17:45:25 1816096607
>>1816049
>в случае с командой мы как минимум знаем что у неё есть методы CanExecute и Execute, а также ивент CanExecuteChanged
Ебать, очень нужно, ага. Прям вот каждый раз, как надо к кнопке метод приколотить я использую всю эту хуйню, ага?
>Чтобы лишний раз подкрепить своё "это не я ленивый и не хочу учить новое, это технология хуевая"?
Почему не хочу? Я хочу. Только вот это все нахуй не надо, а только порождает код ради кода очередной
Аноним 25/09/20 Птн 17:48:05 1816101608
>>1816061
>void Method<T>(T arg) where T:baseClass

Всё еще не полиморфизм?
Аноним 25/09/20 Птн 17:51:12 1816109609
>>1816096
>тысячи опытных программистов использовали винформс и используя наработки, которые они до этого пилили при помощи костылей, создали продолжение винформс - впф
>неосилятор с двача: НИНУЖНО ЯСКОЗАЛ ЛИШНИ КОД КАК ВСИГДА ЛИШЬ БЫ МНЕ СЛОЖНЕЕ ПОНЯТЬ БЫЛА РЯЯ!!

Ты хоть сам понимаешь насколько жалко твои претензии выглядят со стороны? Умножение тоже нахуй не нужно, ведь не нужно никакие таблицы учить, просто складываешь всё последовательно и получаешь тот же самый результат!
Аноним 25/09/20 Птн 17:51:38 1816112610
>>1816050
>чтобы ты в MVVM не писал горы хендлеров событий в code-behind (который в идеале пустой)
И чо, я без команды не могу приколотить к событию метод, который во вьюмодел лежит? Рили?
МС дала им код бихайнд, который ко вьюхе приколочен в качестве вьюмодели по сути. Нет, не хочу его юзать, хочу отдельный файл вьюмодел создать. Почему? Нахуя? Так нада! В итоге, блядь
Window1.xaml
Window1.cs - пустой
Window1ViewModel.cs - с кодом
Аноним 25/09/20 Птн 17:53:15 1816115611
>>1816058
>Не нужно бегать по форме и дисаблить всех нуждающихся.
Нужно бегать и дисаблить с помощью canexecute команду, те же яйца, только в профиль, блядь
Аноним 25/09/20 Птн 17:53:32 1816116612
>>1816101
не.
хотя... погоди (чешет яйца)
не. все же не.

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

а дженерики просто шаблон чтобы за тебя сгенерили типизированные классы/методы, чтобы ты не был goшником
Аноним 25/09/20 Птн 17:54:44 1816119613
13.jpg 61Кб, 756x530
756x530
>>1816061
>дженерики это просто шаблон чтобы за тебя создали конкретный тип.
Пихаю туда разные типы данных, получаю одинаковое их поведение
>это не полиморфизм.
ясн
Аноним 25/09/20 Птн 17:56:13 1816122614
>>1816064
>чтобы не определять события в коде.
Какие, блядь, события в коде ты определяешь? Нахуярил OnButtonClick = ButtonClick и забыл, блядь, то же самое, что и биндингом твоим
Аноним 25/09/20 Птн 17:57:32 1816124615
>>1816112
ну вот у тебя допустим вьюмодель на формсах и ты хочешь сделать чтобы на онклик дергался метод во вьюмодели
тебе нужно
1 прописать хендлер онклик в коде бехайнд где достать дернуть метод вьюмодели
2 навесить на вьюмодель событие что "теперь эту кнопку можно кликать" чтобы в том же коде-бехайнд прописывать "на изменения вот этого можно сделать енаблед вот эти контролы"
умножаешь это на 20-30 контролов на форме и смотришь на количество кода что ты РУКАМИ захерачил в кодебехайнд

в случае WPF такого кода у тебя будет написано НОЛЬ

>>1816122
>Нахуярил OnButtonClick = ButtonClick
где этот ButtonClick? во вьюмодели? так не пойдет. вьюмодель НИХЕРА НЕ ЗНАЕТ про вид. в этом ее суть
Аноним 25/09/20 Птн 17:59:21 1816126616
>>1816109
>просто складываешь всё последовательно и получаешь тот же самый результат!
Я тебя удивлю, но кудахтер только складывать и умеет.
>Ты хоть сам понимаешь насколько жалко твои претензии выглядят со стороны?
Где жалко то? Я, блядь, чего не открою поглядеть, везде, нахуй, контрол - бинд - команда - метод. Нигде команды, нахуй по другому не используются
Аноним 25/09/20 Птн 17:59:55 1816128617
>>1816119
это за тебя генерятся типизированные классы. просто замена ручному кодированию. Это не полиморфизм
Аноним 25/09/20 Птн 18:01:00 1816132618
>>1816116
Это всё часть одного и того же, как я уже писал выше, частой ошибкой является желание натянуть абстрактные понятие типа полиморфизма на что-то одно. Оно на то и абстрактное для того чтобы воплощаться в разных формах. Обощенные классы в данном случае облегчают применение полиморфизма и являются его частью.
Аноним 25/09/20 Птн 18:01:56 1816135619
>>1816126
>Я тебя удивлю, но кудахтер только складывать и умеет.

И зачем ты это высрал? Умножение человеку нужно или для тебя 5*5 и 5+5+5+5+5 это одно и тоже, поэтому таблицу умножения учить не нужно?
Аноним 25/09/20 Птн 18:02:09 1816137620
>>1816124
>где этот ButtonClick? во вьюмодели? так не пойдет. вьюмодель НИХЕРА НЕ ЗНАЕТ про вид. в этом ее суть
Который? ButtonClick()? Вот этот? Во вьюмодели конечно. Нахуя вьюмодели про вьюху знать для этого?
Аноним 25/09/20 Птн 18:03:20 1816141621
15315684005740.jpg 85Кб, 600x403
600x403
>>1816135
>5*5 и 5+5+5+5+5 это одно и тоже
А чо разное?
Аноним 25/09/20 Птн 18:04:58 1816144622
>>1816137
еще раз
вот у тебя кнопка. у нее есть событие онклик
у тебя есть вьюмодель
как свяжешь онклик с вызовом метода вьюмодели БЕЗ НАПИСАНИЯ хендлера в котором ты вызываешь метод вьюмодели?
Аноним 25/09/20 Птн 18:06:05 1816148623
>>1816132
>Это всё часть одного и того же, как я уже писал выше,
ну так ты ошибаешься.
Аноним 25/09/20 Птн 18:07:27 1816150624
>>1816141
Да, в первом у тебя одна операция, во втором 5. Первый у тебя займет 3 символа, второй 9. Первый читается быстрее. Ой, да это прям как впф против винформс!
Аноним 25/09/20 Птн 18:07:29 1816152625
>>1816137
>Нахуя вьюмодели про вьюху знать для этого?
ага. то есть вьюмодель должна теперь в сигнатуру свою добавить sender и eventargs, хотя для вьюмодели это просто метод без параметров
Аноним 25/09/20 Птн 18:08:10 1816153626
>>1816148
Ну если тебе так комфортнее думать, то не буду тебе мешать, жаль только что это реальность никак не изменит.
Аноним 25/09/20 Птн 18:09:18 1816154627
>>1816153
ок. закончили на этом. каждый пусть думает что хочет. все то весь мир не считает это полимфоризмом и один ты. ты конечно прав
Аноним 25/09/20 Птн 18:14:32 1816158628
>>1816128
>Это не полиморфизм
Что есть полиморфизм?
Аноним 25/09/20 Птн 18:18:31 1816165629
20200305031119.jpg 232Кб, 1667x409
1667x409
>>1816154
>все то весь мир не считает это полимфоризмом
>весь мир

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

Вот, почитай на досуге:
https://en.wikipedia.org/wiki/Parametric_polymorphism

На пикриле выделил часть которая от тебя потребует большего внимания, чем другие.
Аноним 25/09/20 Птн 18:18:44 1816166630
Безымянный.jpg 17Кб, 420x104
420x104
Аноним 25/09/20 Птн 18:21:57 1816168631
>>1816150
Разговор, блядь, про команды, при чем тут впф против винформ?
Аноним 25/09/20 Птн 18:24:25 1816171632
>>1816168
При том, что твой винформ слишком монструозный и не структурированный. Тебе это уже несколько раз повторили, даже привели простую аналогию. Но ты всё равно продолжаешь кричать "Я ИСПОЛЬЗУЮ ЗНАЧИТ НОРМАЛЬНО!! А ТО ЧТО ВЫ ГОВОРИТЕ МНЕ НЕ НУЖНО!!!", продолжая закрывать глаза на отсутствие адекватной и удобной структуры у винформс приложений.
Аноним 25/09/20 Птн 18:26:13 1816173633
>>1816165
ну если тебе чисто в теорию, а не полимфоризм в шарпах. то да признаю
Аноним 25/09/20 Птн 18:27:46 1816176634
>>1816168
в WPF не только команды, а и БИНДИНГИ для команд.

напомню первоначальный вопрос
"Нахуя нужны команды в WPF,"

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

нахуя команды нужны были бы в формсах - я не ебу.
Аноним 25/09/20 Птн 18:28:33 1816177635
>>1816173
>а не полимфоризм в шарпах
Как много обличий у твоего манямирка, то это весь мир, то вдруг шарпы...
Аноним 25/09/20 Птн 18:31:29 1816180636
>>1816177
гм. я думал мы в тебе про шарпы сидим. и вот еще

"Являются ли дженерики реализацией полиморфизма или только интерфейсы? Какого хуя, везде написано, что реализация инкапсуляции в шарпе"

вижу слово "в шарпе"

а оказывается шарп не причем. ясно ясно.
Аноним 25/09/20 Птн 18:35:36 1816187637
>>1816180
Может тогда объяснишь всем, почему в шарпах это не полиморфизм, а что-то другое, одному тебе известное?
Аноним 25/09/20 Птн 18:37:06 1816189638
>>1816187
ок ок. ты смотрел с колокольни "все виды полимфоризма" я же рассматривал только ad-hoc (собственно о нем я и писал)
каждый думал о своем. Я это признал. что еще?
Аноним 25/09/20 Птн 18:38:31 1816190639
>>1816171
Ебаный рот этого казино, блядь. Я все понял, походу мы все тут не поняли друг друга.
Я спрашивал чисто за команды. В целом, мне лезть на винформ нахуй не надо. Я и на впф покодю
>напомню первоначальный вопрос
"Нахуя нужны команды в WPF,"

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

Аноним 25/09/20 Птн 18:42:23 1816195640
>>1816190
я же выше писал пример когда у тебя события и хендлеры в кодебехайнд и сравнение с впф

ты предложил делать не хендлеры а сразу хендлером пусть будет метод вьюмодели
но тут есть несколько но
1. это добавит в сигнатуру сендер и аргс которые логически во вьюмодели нахер не нужны. Для нее это просто метод
2 проблему флага "можно кликать" это не решает. ты все равно вынужден писать ручной механизм переключение статуса enabled для контролов в зависимости от состояния вьюмодели
3 биндинг может быть на команду которая находится хуй знает где в иерархии, до которой банально не добраться без ручной реализации хендлера где тебя ждет путешествие вверх по деревью контролов ( у вьюмодели спрашивать бесполезно - она про родителей не знает)

в итоге нулевого кода не будет. А там где ты сокращаешь код - ты вносишь мусор во вьюмодель
Аноним 25/09/20 Птн 18:43:43 1816196641
>>1816190
Конечно ты можешь реализовать костыли и присобачить их к финформс чтобы убрать эти проблемы как можешь
но это и будет ответом на твой вопрос "а в чем выгода"
Аноним 25/09/20 Птн 18:46:01 1816197642
>>1816190
А еще есть фокус, где можно ли работать с командой или нет зависит от фокуса. например кнопки на тулбаре в офисе меняют вклвыкл в зависимости куда фокус у тебя. И это все само работает, а не ты руками бегаешь прописываешь что должно быть активно или выключено в каждый текущий момент

но это уже лишнее. и так хватает
Аноним 25/09/20 Птн 20:16:43 1816252643
>>1816166
Умник, блять, и чё тебе это даст, если ты пилишь не вермишель ебаную в MainWindow.xaml, а как белый человек раскидываешь компоненты по юзер-контроллам? Твой клик будет искаться в UserControl.cs, хуй ты оттуда достанешь по человечески главную вьюмодель
Аноним 25/09/20 Птн 20:33:49 1816257644
>>1816190
>Ебаный рот этого казино, блядь. Я все понял, походу мы все тут не поняли друг друга.
Эна воно как. в общем так
1 команда это обьект который связывает в себе и хендлер и canexecute, что уже очень полезно ибо не размазывается
2 Команда у вьюмодели это свойство. со всеми вытекающими для биндинга. не забывай про OneWay
3 У команды ясный интерфейс ICommand, который не зависит че там в итоге будет вызвано и как. У метода же никакого такого интерфейса нет. Ну да ты можешь требовать сигнатуру вида Action/Action<T>, но это анальное ограничение и в случае интефейса ты можешь сделать свои реализации команд, а с методом нет
4 гладиолус
Аноним 25/09/20 Птн 20:35:28 1816259645
>>1816190
да одного того что хендлер и флаг связаны воедино хватает для того чтобы создать класс объединяющий их а наречь его команда. Только одной этой причины БОЛЕЕ ЧЕМ достаточно так то
Аноним 25/09/20 Птн 22:54:43 1816354646
шарпаче у нас есть хоть один коммерческий мидл/сеньор?
Аноним 26/09/20 Суб 09:12:26 1816494647
Аноним 26/09/20 Суб 11:15:12 1816519648
>>1816354
4+ года опыта
Дотягиваю до мидла?
Аноним 26/09/20 Суб 11:54:17 1816528649
>>1816519
ну так то это не годами измеряется. тут выше отписывались что столько пишут, а толком ни с чем не сталкиваются
Аноним 26/09/20 Суб 13:15:05 1816571650
Помогите пожалуйста. Знаю C# на уровне "писал ООП хуйню на вебформсах для местной конторы", т.е основные знания в с# и дотнете есть. Сейчас хочу вкатиться в ASP.Net Core, но в бэкенде вообще не шарю (тем не менее знания html/css/js и совсем немного php (не 7, т.е без ООП) есть). Когда захожу на какой-нибудь метанит и читаю статью как сделать систему авторизации на основе куки, то уже путаюсь что и как. С чего начать курить backend?
Аноним 26/09/20 Суб 13:48:08 1816590651
>>1816195
>А там где ты сокращаешь код - ты вносишь мусор во вьюмодель
Как будешь оповещать вьюмодель о том, что в модели изменилось какое-нибудь свойство, которое ко вьюхе приколочено? Во вьюмодели, естественно чисто обертка.
Аноним 26/09/20 Суб 13:51:28 1816594652
>>1816252
>если ты пилишь не вермишель ебаную в MainWindow.xaml
Какую вермишель? По каким юзер-контролам чо ты там раскидываешь, как белый человек? Ну ка поясняй, чо сказать хотел.
>Твой клик будет искаться в UserControl.cs, хуй ты оттуда достанешь по человечески главную вьюмодель
Нахуй мне ее доставать, поехавший? Мне похуй, где этот клик будет искаться, метод приколочен, он и сработает из вьюмодели при клике.
Аноним 26/09/20 Суб 13:57:10 1816607653
>>1816590
> , что в модели изменилось какое-нибудь свойство, которое ко вьюхе приколочено?

Я подписываю вьюнмодель на PropertyChanged модели и обновляю соответствующие свойства.
Аноним 26/09/20 Суб 14:00:59 1816615654
>>1816259
>да одного того что хендлер и флаг связаны воедино хватает для того чтобы создать класс объединяющий их а наречь его команда.
Да вот хуй. Какие вы, блядь, хендлеры руками все время прописывать хотите? Все за вас уже сделано на хуй. Присобачил на событие в xaml свойствах контрола метод из vm и все работает, блядь, изкаробки. Какие, блядь, хендлеры, где вы эти делегаты руками пишите, блядь?
Флаг, блядь, хуяг. Дался вам этот флаг? Ну заблочишь ты выполнение команды и чо? Кнопка то в окошке все равно нажиматься будет и юзер, будет сидеть и жать ее не понимая, хули нихуя не срабатывает, тогда как, если ее дисаблить, то он сразу увидит, что нажать ее нельзя и начнет думать, а почему
Аноним 26/09/20 Суб 14:05:30 1816627655
>>1816607
Реализовывать INotifyPropertyChandeg у каждой модели, еще и {get;set} уже не написать, а надо расписывать и дергать PropertyChanged. И это я еще выходит, по твоему мусор вношу, ага, блядь.
Аноним 26/09/20 Суб 14:10:21 1816643656
>>1816615
> Присобачил на событие в xaml свойствах контрола метод из vm и все работает, блядь, изкаробки
1 а ну покажи это. а мы посмотрим
2 флаг IsEnabled для кнопки к которой ты привязал как поддерживается? или кнопка всегда активна и похуй что кликать нельзя в данный момент?

>еще и {get;set} уже не написать,
Fody поможет.
Аноним 26/09/20 Суб 14:11:00 1816644657
>>1816627
Я не он если что
Так зачем в каждой модели?
Не в каждой модели, а только в тех моделях в которых которым нужно будет оповестить кого бы там нибыло об изменениях
Большинство моделей просто проставляются со стороны вьюмоделей, а оповещать обратно им не к чему.
Аноним 26/09/20 Суб 14:43:28 1816714658
>>1816615
>Дался вам этот флаг? Ну заблочишь ты выполнение команды и чо? Кнопка то в окошке все равно нажиматься будет и юзер, будет сидеть и жать ее не понимая
что за бред. кнопка переходит в состояние disabled когда команду юзать нельзя. Никогда таких кнопок не видел что ли?
Аноним 26/09/20 Суб 15:02:52 1816734659
>>1816643
>1 а ну покажи это. а мы посмотрим
Ну на, смотри
>>1816166
>флаг IsEnabled для кнопки к которой ты привязал как поддерживается? или кнопка всегда активна и похуй что кликать нельзя в данный момент?
Элементарно. Создаешь свойство булево, биндишь на свойство IsEnabled в кнопке. Все. Понадобилось, сбросил его в вм, кнопка неактивна, пользователь это видит и как дурак жать и орать, что хули ничо не работает не будет. Нужна стала, взвел его и вот, пожалуйста, нажимай кнопку. Проблемс?
>Fody поможет.
Щас бы еще под каждый пук дополнительную либу прикреплять.
Аноним 26/09/20 Суб 15:20:42 1816751660
>>1816152
Не, лучше под каждый пук нахуярить команд, которые только и делают, что этот метод вызывают, ага?
ButtonClick(object sender, RoutedEventArgs e)
Или
Command ButtonClickComand;
ButtonClickComand = new Command();
ButtonClickComand += ButtonClick();
чтобы
ButtonClick();
Охуеть, блядь.
Аноним 26/09/20 Суб 15:27:14 1816758661
>>1816751
>которые только и делают, что этот метод вызывают, ага?
нет не только. я уже говорил и еще раз повторю. команда это хендлер с флагом "IsEnabled". И раз контролы умеют в эту сущность, то это более полезно, чем отдельно метод, отдельно флаг
ну а что еще польза вот ниже читай

>>1816734
>Ну на, смотри
куда смотреть?

> Создаешь свойство булево, биндишь на свойство IsEnabled в кнопке
1 то есть все таки отдельное поле...с отдельным биндингом
2 я уже говорил что команда это свойство и как любое INPC свойство может быть перебиндено в рантайме. Метод на такое не способен
3 Фокус манаджмент в принципе работать не будет.

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





Аноним 26/09/20 Суб 15:34:51 1816767662
>>1816751
>не, лучше под каждый пук папку создавать, вместо того чтобы всё в одну скидывать

Да, лучше.
Аноним 26/09/20 Суб 15:41:12 1816775663
>>1816767
В какую одну, поехавший? В твоей кривой аналогии, ты блядь, под каждый файл отдельно папку хуяришь, которые так же в одной общей лежат. От так заебись, сразу лучше стало, ага?
Аноним 26/09/20 Суб 15:43:53 1816777664
>>1816775
В моей аналогии я не скуплюсь на строчки, если они помогут мне структурировать проект и облегчат работу с ним в будущем.
Аноним 26/09/20 Суб 15:47:20 1816782665
>>1816758
>куда смотреть?
Вот в этот пост, ты издеваешься?>>1816166
>1 то есть все таки отдельное поле...с отдельным биндингом
И...чо? Лучше парочку полей под нужды, ну чет мне слабо верится, что у тебя программа постоянно хуярит кучу контролов то включая их, то выключая. А под несколько контролов не трудно поле создать. Список команд под все контролы нинужон.
>я уже говорил что команда это свойство и как любое INPC свойство может быть перебиндено в рантайме.
Пример приведи, когда это нужно.
>Фокус манаджмент в принципе работать не будет.
Что это и зачем нужно?
Аноним 26/09/20 Суб 15:49:58 1816786666
>>1816777
А с чего ты взял, что это тебе поможет структурировать там что-то? Тыскозал что ли? Еще раз, только внятно поясни, как лапша из четырех дополнительных строк в случаях команд поможет тебе структурировать проект?
Аноним 26/09/20 Суб 15:56:03 1816794667
>>1816594
>Какую вермишель? По каким юзер-контролам чо ты там раскидываешь, как белый человек?
????
Ты весь UI в MainWindow.xaml пишешь, или что? Кто тут поехавший то бялдь???
>Нахуй мне ее доставать, поехавший?
Чтобы он сработал из вьюмодели фактически из DataContext содержащего кнопку контрола, нужно забиндить метод, а не просто указать имя. С указанием имени нихуя у тебя не сработает.
Аноним 26/09/20 Суб 16:12:41 1816818668
>>1816782
>Вот в этот пост, ты издеваешься?
а где в этом посте связь события с методом вьюмодели? хендлер на скрине в code-behind и никакого отношения к вьюмоделям не имеет.

> Лучше парочку полей под нужды
Это тебе лучше. Мне лучше когда сущность одна, и количество контролов значения не имеет. OneWay биндинг на команду имеет. Ну а работа с фокусом в принципе невозможна по твоей схеме

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

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


Аноним 26/09/20 Суб 16:15:14 1816819669
>>1816794
>Ты весь UI в MainWindow.xaml пишешь, или что?
Еще раз, я не какой то неибаца wpf программист, поэтому и спрашиваю у вас, что и как. Я писал небольшие wpf приложения, да, весь UI у меня был в MainWindow.xaml. А как надо, можешь рассказать? Без троллинга.
>>1816794
>нужно забиндить метод, а не просто указать имя. С указанием имени нихуя у тебя не сработает.
Да?
MainWindow1.xaml:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Button Click="Button_Click"/>
</Grid>
</Window>

MainWindow1.cs:
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void Button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Добрый вечер");
}
}
}

Берешь этот код и охуеваешь, что все работает без бинда, просто, с указанием имени. Если MainWindow1.cs тебя не устраивает, то можешь создать MainWindow1ViewModel.cs положить код туда, только в xaml DataContex не забудь прописать, работать будет аналогично
Аноним 26/09/20 Суб 16:17:47 1816823670
>>1816819
>что все работает без бинда, просто, с указанием имени.
и не является MVVM аж нисколько, в общем винформс подход
только не спрашивай зачем нужен MVVM ибо все с тобой будет ясно

>только в xaml DataContex не забудь прописать, работать будет аналогично
ну я же просил показать пример связки события контрола и вьюмодели в хамле
так покажи как это сделать
не нужно показывать связь с code-behind
Аноним 26/09/20 Суб 16:22:57 1816825671
>>1816818
>хендлер на скрине в code-behind и никакого отношения к вьюмоделям не имеет.
А что, вьмодель у нас это не просто отдельный cs файл на который мы перенаправляем DataContex?
>это привязка команды в зависимости от фокуса
Как это работает? Сменил я фокус и что? Как дальше это все командами подхватывается не городя руками?
Аноним 26/09/20 Суб 16:25:38 1816829672
>>1816823
>и не является MVVM аж нисколько
Это схуяли, блядь? Model-View-ViewModel. Где там про bind? Это просто построение программы, что вся логика убирается в модель и связывается с вьюхой через вьюмодел, чтобы в любой момент можно было безболезненно выкинуть нахуй вьюху текущую и напялить другую
Аноним 26/09/20 Суб 16:32:24 1816835673

>>1816825
>вьмодель у нас это не просто отдельный cs
вьюмодель это из MVVM. я не знаю куда ты там что перенаправляешь ибо событие можно захендлерить из хамла только на code-behind причем конкретного для юзер контрола или окна. Если у тебя несколько юзер контролов то все будет в разных местах

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

>Model-View-ViewModel. Где там про bind?
вообще то ICommand они КАК РАЗ ДЛЯ ПОДДЕРЖКИ БИНДА В MVVM и придуманы. Для не mvvm придуманы routedcommand

я приведу список что не так с методами и пойду

1 невозможно забиндить событие на метод вьюмодели без промежуточного хендлера в code-behind. Тот кто пишет что можно - фантазер. Конечно можно использовать кастомный биндинг но это уже не стандарт
2 Метод отдельно флаг отдельно - удобно только в простых решениях, когда команды не передаются куда то, не собираются в списки комманд (для рендеринга контекстного динамического меню например) и т.д.
3 метод не INPC. Его не сменить на лету. Притянутый за уши!!! пример - кнопка стартстоп, где триггерами целевая команда меняется в зависимости от чего то. Можно сказать что можно в методе решить что делать с помощью if, но это уже спорный момент и слишком примитивный пример
4 CommandTarget и работа с фокусом принципиально невозможны
5 невозможно забиндить хендлер на метод который находится уровнями выше (подобие Relative Source AncestorLevel). Впрочем это продолжение пункта 1 - все придется делать или через code-behind или ебашать RoutedCommand, что не MVVM

Аноним 26/09/20 Суб 16:39:51 1816843674
>>1816819
Ну а теперь ты разбиваешь свою дрисню на юзер контролы или их вообще пилит отдельный член команды и охуеваешь, что юзер контрол увидит твою хуйню только в своём юзер контроле, а все состояния, данные и прочая хуйня в совсем другом месте, стыдливо прикрываешь попу и перестаёшь тут нахуй бычить, если рассматриваешь всё это с точки зрения
>ну гыгыг вот хеловорлд выводится в MainWindow.xaml чё тут еще надо)))0 тупые сук ахаха ))))
Аноним 26/09/20 Суб 16:41:03 1816846675
>>1816829
>вся логика убирается в модель
Ясно. Братан можешь дальше не продолжать
Аноним 26/09/20 Суб 16:41:55 1816849676
>>1816835
>вообще то ICommand они КАК РАЗ ДЛЯ ПОДДЕРЖКИ БИНДА В MVVM и придуманы
Ну, очередные костыли накрутили и рады. Там, блядь, весь wpf костыль на костыле и костылем погоняет. Нахуй мс поддерживает эту парашу, которая даже на момент выхода была неудобным говном я хз.
Аноним 26/09/20 Суб 16:42:39 1816850677
>>1816849
> Нахуй мс поддерживает эту парашу
Не поддерживает с 2013 года
Аноним 26/09/20 Суб 16:44:55 1816858678
>>1816835
>кнопка стартстоп, где триггерами целевая команда меняется в зависимости от чего то.
Покажи код такой кнопки
Аноним 26/09/20 Суб 16:49:24 1816867679
>>1816843
>перестаёшь тут нахуй бычить
А кто бычит вообще? Я как удав спокоен, это двачи, тут и на хуй могут послать, ты чего обидчивый такой?
>юзер контрол увидит твою хуйню только в своём юзер контроле
юзер контрол в юзер контроле? чо,блядь? Попроще можно? Юзер контрол это вообще что в данном случае? Если я кнопку и текстблок нахуярил вместе в проекте типа юзер контрол и затем вставил его на свое окно - ты это имеешь ввиду? Вот джва таких юзерконтрола, общаются они между собой через вьюмодель, верно? Чтобы все работало, нужны бинды, верно? я все правильно понял?
Аноним 26/09/20 Суб 16:49:57 1816868680
>>1816846
>Ясно. Братан можешь дальше не продолжать
Чо не так?
Аноним 26/09/20 Суб 18:34:26 1816917681
>>1816849
>Там, блядь, весь wpf костыль на костыле и костылем погоняет
сказал тот, кто не понимает зачем нужно MVVM и что это такое
когда созреешь до понимания что и зачем, вот тогда и приходи с вопросами. Впрочем ты не придешь тогда, ведь вопрос "нахера" у тебя не возникнет

А до этого хотя бы изучи RoutedCommand ну чтобы меньше говнокодить хоть немного
Аноним 26/09/20 Суб 18:35:31 1816920682
>>1816850
>Не поддерживает с 2013 года
но не потому что WPF плохой
просто из за наступления макак с их "веб на десктоп" приоритеты сдвинулись

но грядет мауи и там будет тот же самый хамл просто основанный на хамарин (те же яйца только со стилями лучше, но во много WTF)
Аноним 26/09/20 Суб 18:37:20 1816923683
>>1816920
>но не потому что WPF плохой
А потому что WPF бесполезный
Аноним 26/09/20 Суб 18:59:13 1816938684
>>1816868
Мдель это именно модель. в ней не должно быть бизнес-логики. Даже дата-репозиторий, дёргающий данные, не является моделью. VM в WPF - прокси между данными (model) и вьюхой (view)
>>1816867
>чо,блядь? Попроще можно?
Боюсь проще некуда, если ты не понимаешь, зачем нужно разбиение вьюх как и всего прочего на отдельные компоненты, модули, контролы. Мне кажется, тебе просто не хватает опыта, чтобы это понять. Мы тут вдвоём втроём? пытались тебе объяснить с разных позиций, что наговнокодить можно и событиями, но по-человечячи если делать - биндинги - крута, но твоё невежество непробиваемо. Я тоже на самом деле когда только изучал WPF, думал ротебать этих биндингов и комманд особенно чё бля ёпту я щяс нахуй как привяжу события блять System.Interactivity блядь подключу блядь всё блядь будет нахуй. Но потом по мере работы всё больше и больше понимал, какая же это хуйня и как же элегантно выстраивается архитектура приложения на биндингах, вот так руки и выпрямились
правда потом я понял, какое же десктоп ненужное говно, и в итоге хуй знает зачем просто овладел этим проклятым wpf
ом и щас выше доказываю, какая же он ненужная хуйня
Аноним 26/09/20 Суб 18:59:30 1816939685
>>1816923
тебе да. я же отлично на нем зарабатываю.
Аноним 26/09/20 Суб 19:10:21 1816944686
>>1816938
>Мдель это именно модель. в ней не должно быть бизнес-логики. Даже дата-репозиторий, дёргающий данные, не является моделью. VM в WPF - прокси между данными (model) и вьюхой (view)
Да ты что, солнышко, блядь. Знаешь зачем эта вся хуйня сделана? Чтобы ты мог вырвать, нахуй свою вьюху для wpf и прилепить без проблем вьюху от asp.net mvc, просто выкинув нахуй в и вм и приляпав через контроллер вьюху asp.net mvc чилить сидеть дальше. Как ты это сделаешь, если у тебя в вм логика?
Аноним 26/09/20 Суб 19:12:10 1816945687
>>1816938
>Мдель это именно модель. в ней не должно быть бизнес-логики.
>VM в WPF - прокси между данными (model) и вьюхой (view)
Так, в модели логики не должно быть, вм это прокси между моделью и вьюхой...эммм, а где тогда бизнес логика должна быть?
Аноним 26/09/20 Суб 19:12:16 1816946688
>>1816944
пошли человека в хамарин где для одного слоая вьюмоделек разные виды под андроид и под айос
а если он скажет "у нас wpf же хуле мне твой хамарин", то напомни ему про тесты
ну а если тесты ему не нужны, то какой смысл дальше говорить
Аноним 26/09/20 Суб 19:20:13 1816950689
>>1816944
>Как ты это сделаешь, если у тебя в вм логика?
Вынесу логику в сервисы, тогда VM будет работать как контроллер
Аноним 26/09/20 Суб 20:05:52 1816989690
>>1816950
В хуервисы, где у тебя в аббревиатуре мввм буква "с" для сервисов твоих? Что, по сути, сервис твой? Service.cs в методах и функциях которого логика? И чем это отличается от ModelForLogic.cs в который я положу свои методы и функции для логики?
Аноним 26/09/20 Суб 20:07:34 1816991691
>>1816989
>где у тебя в аббревиатуре мввм буква "с" для сервисов твоих?
вот же на - MVsVM
>И чем это отличается от ModelForLogic.cs в который я положу свои методы и функции для логики?
Ничем, клади
Аноним 26/09/20 Суб 20:21:08 1816998692
Ну елы палы.

вот путь развития от макаки до белого человка
Сказ в 3 частях. UI фреймворк не принципиален главное суть

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

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

Немного подумав о том, что можно сделать учитывая данный фреймворк, у нас рождается MVP, то есть модель-вид+презентер
В презентер уезжает взаимодействие с моделью. То есть как теперь
а) модель есть модель
б) вид отправляет запросы в презентер и в виде остается только рисование (непосредственная работа с контролами) то есть (КАК РИСОВАТЬ)
в) на презентер возлагается запросы к виду, ну какая там еще визуальная логика и дергание вида с просьбой отобразить данные
презентер знает про вид через интерфейс. То есть презентер ничего не знает про контролы, а у него вид с интерфейсом "отобрази такое" (ЧТО РИСОВАТЬ)
то есть: вид дергает по клику презентер - презентер достает юзера из базы - презентер вызывает меод вьюхи "покажи юзера" и дает ему юзера - вьюха рисует

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


3 тут вам достается фреймворк который умеет в биндинги.
И так мы приходим к MVVM. Но зачем? почему не остаться в MVP? зачем менять P на VM? а вот:
1 презентер вынужден знать про вид, а значит вид должен дать ему контракт чтобы его презентер вызывал (который ничего не знает про контролы в общем то, а дает команды "изобрази это")
биндинги же позволяют ничего не знать про вид, а следить. то есть вьюмодель вообще не знает про вид ничего. Она знает про саму себя, а вид(ы) сами следят за ней и рисуют себя
2 можно строить иерархии вм, биндинг все разрулит.
3 Раз нет прямой связи вид - вюмодель - вид, то можно строить независимые иерархии контролов вида и иерархии вм
4 за счет шаблонов и биндингов рисование гуи получается декларативным и обычно ни строчки кода в code-behind

Больше свободы, больше изолированность (кто про кого знает), большая декларативность, отличная тестируемость - дернул команду, смотри состояние вьюмодели, нет ограничений как в MVP
Аноним 26/09/20 Суб 20:44:54 1817004693
>>1816991
>вот же на - MVsVM
Ты бухой? Где там буква "с"?
Аноним 26/09/20 Суб 20:48:03 1817007694
изображение.png 4Кб, 384x119
384x119
>>1817004
Ты придурок или притворяешься? MVsVM же в казахстане делали, у них там латиница, конечно у них там будет s, а не c.
Аноним 26/09/20 Суб 20:51:49 1817010695
Аноним 26/09/20 Суб 21:38:36 1817031696
>>1816945
В либе, очевидно.
MVVM - это паттерн о UI целиком и полностью. И логика в нем только для интерфейса, бизнес-логику ты пишешь отдельно. Вот например:
Ты пишешь калькулятор на WPF, который может только в сложение двух чисел (специально очень простая задача, чтобы ты понял), a+b=c. У тебя вьюшка - это то, как программа выглядит, модель - твои данные, а вьюмодель связывает вьюшку и модель. Но модель никакого сложения не производит, у тебя сложение в отдельной либе. И когда тебе нужно получить c - ты делаешь следующее:
c = MyLiba.Addition(a, b).
Нахуя? Чтобы когда тебе внезапно понадобится сделать этот калькулятор в вебе или на андроиде (а в реальном мире это нихуя не внезапная потребность), ты не сидел и не дублировал логику из моделей WPF, а спокойно вызывал свою либу и радовался жизни.
мимо
Аноним 27/09/20 Вск 00:50:36 1817096697
>>1817031
>У тебя вьюшка - это то, как программа выглядит, модель - твои данные
Какие данные? Где в твоём примере данные? У тебя из вм дёргается либа. Где модель то?
>этот калькулятор в вебе или на андроиде (а в реальном мире это нихуя не внезапная потребность), ты не сидел и не дублировал логику из моделей WPF, а спокойно вызывал свою либу и радовался жизни.
Ну, вот твоя либа и есть модель по сути. Что ты её добавишь в проект, если переедешь на ведроид, что я в проект добавлю тупо свою модель и все работать будет искаробки, что у тебя, что у меня. Так почему ты так уверенно говоришь, что твоя либа это не модель нихуя?
Аноним 27/09/20 Вск 01:10:44 1817103698
>>1817096
>Так почему ты так уверенно говоришь, что твоя либа это не модель нихуя?
Либа - это модель. А если точнее, либа - это модели + бизнес-логика. Скажем, ты дергаешь из SQL юзеров. У тебя будет класс DataAccess, модель UserModel и, скажем, класс ModifyUser. Но это все - по сути кишочки твоей программы, отношения к UI не имеющие. UserModel в либе и в WPF - не одно и то же.
В такой программе у тебя вьюшка - вьюшка, модель - UserModel (НОВАЯ, а не из либы), а вьюмодель через либу просит юзеров или че-то с ними делает.
Нахуй дублировать модели? Как минимум, модель в WPF относится к UI, а не к бизнес-логике. Во-вторых, модель в твоем UI и в твоих кишочках может различаться. Простой пример - ты дергаешь юзеров вместе с датой создания аккаунта. Она нужна в гуе? Нет. В итоге у тебя либа берет юзеров с датой, а гуй получает без даты.
Удобно, например, когда ты этих юзеров получаешь через WebAPI: ты хочешь, чтобы через API можно было получить всю инфу о юзере, но для гуя тебе дата реги не нужна. Вариант 1: создать новый вид запросов к API, но это пиздец, да и не всегда ты владелец этого API. Вариант 2: делать запрос на всю инфу, как предлагаешь ты. Но если юзеров ты запрашиваешь много, то дохуя памяти будет просто так уходить на инфу, которая и не используется. Или вариант 3: ты делаешь запрос на всю инфу и обрезаешь ненужную, приводя первоначального юзера в удобоваримый для твоего гуя вид.
Аноним 27/09/20 Вск 12:05:38 1817234699
>>1816354
Мидл на галере 2+ людей. Недавно летом матрицу сдал(внутрений собес на должность мидла). А на проекте давно уже делаю задачи любой сложности.
Аноним 27/09/20 Вск 12:20:36 1817247700
Хочу через год начать вкатываться на unity разработки. Как думаете, хватит ли года, чтобы изучить с# на приемлимом уровне, чтобы хватало для unity?
Аноним 27/09/20 Вск 12:42:39 1817265701
>>1817247
это ж субъективно. зависит от того сколько языков ты знал до этого. срок может быть и пару недель даже
Аноним 27/09/20 Вск 14:39:41 1817401702
Вопрос чисто теоретического толка.
Могу ли я в шарпике убить нафиг GC и писать код без всех этих проверок ненужных, выделяя/освобождая память ручками?
Аноним 27/09/20 Вск 15:02:24 1817422703
>>1817401
Проще сменить язык.
Аноним 27/09/20 Вск 15:16:36 1817431704
>>1817422
Да я знаю. Но это же чисто теоретический вопрос.
Аноним 27/09/20 Вск 15:30:38 1817444705
Аноним 27/09/20 Вск 16:01:58 1817482706
>>1817103
>делать запрос на всю инфу, как предлагаешь ты. Но если юзеров ты запрашиваешь много, то дохуя памяти будет просто так уходить на инфу, которая и не используется
И поэтому ты предлагаешь эту кучу юзеров одного класса перегонять в другой? То есть, мало того, что у тебя будет их в два раза больше, пока перегоняешь, так еще и время на это тратится, ведь пользователей дохуя. Браво, блядь, а потом начинается, мам, тормозит
Аноним 27/09/20 Вск 16:02:35 1817483707
>>1817482
вы о чем вообще спорите?
Аноним 27/09/20 Вск 16:25:46 1817506708
>>1817483
На выбор есть несколько тем:
wpf - говно, правда или вымесел?
команды нинужны, стоит ли писать лишние строчки кода, чтобы в любой момент изящно запретить юзеру нажимать кнопку?
мввм - является ли логика моделью?
Аноним 27/09/20 Вск 16:27:39 1817509709
>>1817506
>мввм - является ли логика моделью?
логика это всегда модель. логика UI это уже не модель
Аноним 27/09/20 Вск 16:41:46 1817523710
>>1816938
>Мдель это именно модель. в ней не должно быть бизнес-логики.
>>1817509
>логика это всегда модель. логика UI это уже не модель
Анус ставишь?
Аноним 27/09/20 Вск 16:45:07 1817528711
>>1817523
твой? ставлю.

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

и нет никакой сложности определить к чему относится тот или иной код и где он должен быть логически расположен.
Аноним 27/09/20 Вск 16:46:30 1817530712
>>1817528
Ты не туда воюешь, это мне вчера тут орали и доказывали, что я еблан и в модели логики быть не должно
Аноним 27/09/20 Вск 16:47:54 1817533713
Хммм.
Хммммммм.
Как же у вас все замудрено.
А как называется следующая картина:

У нас есть сущность, она хранится в БД, она ничего не знает о бизнес-логике, просто представляет из себя строку в БД. Есть класс который бизнес логикой этой записи владеет, он знает что, допустим, возраст нельзя указать отрицательный или имя должно быть длиннее 2 символов. Ну и есть какая-то страничка, которая данные введенные отдает классу с бизнес-логикой, и соответственно рисует что-то в зависимости от того что скажет класс с бизнес логикой. Что тут чем является?
Аноним 27/09/20 Вск 16:52:20 1817536714
>>1817533
Нажал на вьюхе кнопку, сработал метод в вм, который взяв данные отправил их в модель, которая поглядела валидные ли данные. Далее метод из вм хуярит эти данные в БД, если они валидны. Все.
Аноним 27/09/20 Вск 16:56:10 1817538715
>>1817530
>что я еблан и в модели логики быть не должно
ну если почитать у вас тут просто безумие какое то

>>1817533
>она хранится в БД, она ничего не знает о бизнес-логике,
знает или не знает, но она является моделью в MVVM.
В MVVM вообще все что не вид, то есть модель. Это концептуальное разделение основных слоев. Это не отрицает разбиение модели на слои типа слой бизнеслогики, слой персистенс, утилиты и т.п.
MVVM всего лишь описывает как выделить визуальную часть
тема нейм 27/09/20 Вск 18:53:46 1817623716
стоит учить c#? а да кста, я вдобавок новый на дваче)
Аноним 27/09/20 Вск 19:32:52 1817639717
>>1817623
Опишу как у меня было.
В школе я был тупенький, на уроках информатики давали паскаль. Ну, мне нравилось, я учил. Единственный во всем регионе сдавал информатику. Потому лучшие баллы, кек, по информатике в регионе, мне даже грамоту выдали за это, лол.
Так вот, поступил я в шарагу на кодера. Там давали Си. Ну и год дрочили си. И сказать честно я нихуя не понимал как писать сложные программы. Ну, т.е. простые, которые нормально в одном файле можно держать - пожалуйста, а банально какую-нибудь складскую программу по учету товаров, еще и с ГУЕм - не представлял.
Так вот, на втором курсе шараги у нас пошел шарп. И он был охуенен. С ним я быстро наращивал сложность программ, понимание как строить что-то сложное начало приходить, потому что не нужно было думать о куче мелких вещей. К концу второго курса я с такими вот днищескиллами смог найти работу .net-джуном.
Так вот, когда на 4м курсе нужно было писать диплом и научник настойчиво попросил делать это на С++, проблем с переходом к С++ уже не было никаких, потому что умея строить сложные программы, плюс имея коммерческий опыт разработки, переключиться на другой язык не так сложно, достаточно немного погуглить про моменты которые отличаются, типа управления памятью и прочим.

Короче, мораль. С# позволяет очень быстро нарастить сложность программ и не думать о примитивных вещях, сосредотачиваясь на том как модули взаимодействуют друг с другом. Когда ты это умеешь, остальное лишь вопрос пары минут гугления.
Аноним 27/09/20 Вск 20:22:46 1817701718
Если я умею в формы, то могу ли я говорить, что умею в qt? Вроде немного поглядел, покрутил, одно и то же, контролов накидал, к событиям привязался, не?
Аноним 27/09/20 Вск 20:23:18 1817702719
>>1817623
>стоит учить c#?
Для чего? Вопрос уровня, стоит учить поэму Блока "12"?
Аноним 27/09/20 Вск 20:31:43 1817704720
>>1817701
Нет, особенности работы с qt у qt ведь не только аналог винформс есть, у них там еще QT QML слишком сильно отличается от форм. Да и различия самих крестов с решёткой тоже дают о себе знать
Аноним 27/09/20 Вск 20:39:00 1817708721
>>1817704
Не, я может коряво объяснил. Вот есть формы, есть кути. По сути и то и другое для визуализации чисто. Кути же для питухона того же есть, например. Если смотреть с точки зрения визуализации тогда, сам алгоритм работы же похож? Накидал на форму контролов, обрабатываешь баттонклики? Или в кути по другому все?
Аноним 27/09/20 Вск 20:45:56 1817713722
>>1817708
это абсолютно разные подходы
Аноним 27/09/20 Вск 20:54:03 1817718723
>>1817708
Ну попробуй ёпта скачай qt express или как там он называется. Желаю тебе удачи и чтобы qt editor с 1 раза собрал все либы
Аноним 27/09/20 Вск 21:00:20 1817727724
>>1817713
Объясни, плес, в чем именно?
>>1817718
>Желаю тебе удачи и чтобы qt editor с 1 раза собрал все либы
Кто? И что, он не может собрать свои либы, а виноват я или что?
Я просто спрашиваю. В чем подход другой? Чем отличается от форм? От wpf отличается? Чем? Я знаю, конечно, что можно с головой погрузиться, но до того, как прыгну, мне охото понять, в какую жопу я собираюсь шагнуть
Аноним 27/09/20 Вск 21:03:21 1817728725
>>1817727
во всем. Начиная от набора контролов и заканчивая тем что в кутях слоты
в общем если ты знаешь формы это значит что qt ты будешь как слепой котенок
то же самое можно сказать и про WPF
Аноним 27/09/20 Вск 21:09:47 1817731726
>>1817728
Интересно. Если не лень, можно простой пример? Вот в формах есть баттон, нажал, событие или биндинг обработали - метод выполнился.
А в кутях как? Не так что ли все работает?
Аноним 27/09/20 Вск 21:13:42 1817735727
>>1817727
Ну QT я бы назвал даже не фреймворком, а полноценным SDK со всеми его статическими и динамическими либами, бесплатными и платными изданиями и своими IDE. Вот их IDE - qt creator, можешь конечно попытать счастья в VS, но последний плагин под вижак я помню был на 15 студию, но если начнешь осваивать - я бы рекомендовал именно с qt creator. Так вот qt creator работает то ли на чистом cmake, то ли на своём враппере cmake, а cmake дело тонкое, чуть что не там файлы - ты нихуя не поймёшь, только в штаны насрёшь с ебанутых ошибок компилятора. Еще веселее было, когда у меня в qt creator'е какая то хуйня с локалями была, и эти ебаные ошибки выдавались даже не на русском/английском, а вот так
dwadj038%T#$)t50w48t_)TY_@_$@u-6t824u huyna.h line 22
awd_(UT$W
TU)$_)_____$*TU$)U_)$WIJ OERH GT)H$W) huyna.cpp line 90

Это раз. Два - это отличия qt и winforms.
Я уже лет 5 не трогал qt, да и тогда трогал его только в академических целях, сделал 2 лабы на формах и QML и плюнул нахуй на эту дичь, ибо ну его впизду.
Так что мои понимания отличий поверхностные и неактуальные.
У крестов из под коробки нет событий, но их концепция в целом нужна в GUI приложений. Так вот эта система в qt реализована на слотах и сигналах, это как минимум первое отличие. Суть примерно та же, реализация совсем не та же.
Генератор кода, насколько я помню, в qt был слабее, чем в winforms, приходилось много бойлерплейта писать. Не сказал бы, чтобы крестовые нюансы прям сильно вставляли палки в колёса, но в целом шарп гораздо слаще крестов, поэтому ванлайнеры решётки превращаются в среднюю такую боль на крестах.

Контролы местами другие и работают по другому. Уже не помню точно, но вроде у text input'ов не было слотов событий, которые есть у аналогичных контролов в винформс и подобное.

WPF есть смысл сравнивать только с Qt QML, но к тому моменту qt меня так заебал, а qml показался таким ебанутым по сравнению с xaml, что я окончательно забил
Аноним 27/09/20 Вск 21:26:30 1817739728
>>1814269
Это MessageBox?
В старт приложения добавь
System.Windows.Forms.Application.EnableVisualStyles();
(ну и референс на System.Windows.Forms)
Аноним 27/09/20 Вск 21:35:54 1817748729
Допустим есть API1, в нем данные в одном виде, нужно раз в час делать запрос, получать данные, смотреть есть ли данные у моего приложения и если нет - приводить их к пригодному для моей модели виду.
Так вот, как это в плане архитектуры должно выглядеть?
Допустим я сделал так:
У меня есть класс Worker, этот воркер раз в час делает запрос к API1 сравнивает что пришло с тем что есть и недостающее пихает в мою базу.

Но что если однажды нужно будет добавить новые данные, допустим из API1 нужно будет не один запрос, а 2 делать и как-то аггреригрвать результат? Или если апи изменится и отдавать будет не в том формате? Или я решу свою базу заменить выводом в консоль? В общем, как примерно было бы сделать такую штуку более гибкой, чтобы в случае чего не приходилось полностью переписывать класс Worker?
Аноним 27/09/20 Вск 22:35:17 1817815730
>>1817748
наверно просто по букве S из SOLID'а разбивай все процессы на отдельные классы
Аноним 27/09/20 Вск 22:40:01 1817817731
>>1817735
Какого хуя тогда всем этот куту нужен? Блядь, ну хуйня же? Нет, мы тут на куту пишем, а ты ничтожество, раз не знаешь, что событие это сигнал называется. Да ну? ДА! Это одно и тоже? Нет!! Этадрукое
Аноним 27/09/20 Вск 22:44:13 1817818732
>>1817817
>всем этот куту нужен?
кому всем? на шарпах он нахер никому не нужен.
Аноним 27/09/20 Вск 23:02:49 1817826733
>>1817818
на плюсах спрашивают. это от обиды, что у них впф нет?
Аноним 27/09/20 Вск 23:10:37 1817836734
>>1817826
откуда нам, шарпистам, знать что в голове у плюсовиков
для шарписта плюсовик нездоровый человек
Аноним 27/09/20 Вск 23:14:50 1817838735
>>1817817
>Какого хуя тогда всем этот куту нужен?
Если ты не ERP макака на галере, а делаешь продукт, который продаешь третьим лицам, то на шарпе особо не попишешь, ибо вскрывается на раз-два декомпилятором. Если пишешь на крестах, то qt там наверно самый продвинутый sdk для UI ну или електрон))0
Аноним 27/09/20 Вск 23:16:54 1817839736
>>1817836
>для шарписта плюсовик нездоровый человек
Который может юзать указатели, так что соси
Аноним 27/09/20 Вск 23:18:21 1817840737
Аноним 27/09/20 Вск 23:18:50 1817841738
>>1817838
>ибо вскрывается на раз-два декомпилятором
Ща бы сидеть вскрывать все говно, что твои макаки наговнокодили, ага. Главное идея и реализация. Я уверен код фейсбука был уббог, код вконтакта был убог
Аноним 27/09/20 Вск 23:23:50 1817843739
>>1817841
Ну я рассуждаю по проприетарному софту типа автокадовских и адобиевских программ. Я думаю одна из причин, по которой они пишут на невиртуализируемых языках - это дополнительная сложность крякинга
Аноним 27/09/20 Вск 23:31:12 1817845740
>>1817839
который юзает плюсы, а не более адекватный язык

>Который может юзать указатели,
что они дают чего нельзя сделать в шарпе (ОСОБЕННО с ансейф)?
Аноним 27/09/20 Вск 23:36:06 1817848741
>>1817845
без интеропа дохуя чего
Аноним 27/09/20 Вск 23:37:38 1817850742
>>1817848
>без интеропа дохуя чего
конкретнее пожалуйста.
Аноним 28/09/20 Пнд 07:29:55 1817911743
>>1817850
ну ты прям вообще чё сам не понимаешь?
Аноним 28/09/20 Пнд 09:18:09 1817936744
>>1817911
конечно не понимаю. это ж не я заявляю, что есть дохуя чего чего нельзя сделать на шарпе (и это с ансейф!!!), но можно на плюсах ибо есть указатели
Аноним 28/09/20 Пнд 09:30:37 1817937745
>>1817936
насколько я помню, unsafe в шарпе не такой функциональный, как ты его себе воображаешь. ты не можешь например взять произвольный адрес и кастануть его к void*, а потом оттуда читать/хуячить в память напрямую. это можно делать с IntPtr и прочие вещи, но это очень долго и сложно
Аноним 28/09/20 Пнд 09:32:50 1817939746
>>1817937
>но это очень долго и сложно
и, как заметили выше и не один раз, не нужно.
Аноним 28/09/20 Пнд 12:54:47 1818030747
Аноним 28/09/20 Пнд 13:21:27 1818057748
>>1817839
Так и шарпист может, так что сосёшь ты. Иди джавистов тралль.
Аноним 28/09/20 Пнд 13:49:44 1818069749
Почему программа выводит test, а не начинает ждать освобождения syncObject? В методе Write мы ведь пытаемся залокать уже локнутый объект.

class Program
{
private static Object syncObject = new Object();
private static void Write()
{
lock (syncObject)
{
Console.WriteLine("test");
}
}

static void Main(string[] args)
{
lock (syncObject)
{
Write();
}
}
}
Аноним 28/09/20 Пнд 13:54:39 1818072750
>>1818069
Потому что ты локаешь в том же потоке дважды. Второй лок видит, что он уже захватил этот ресурс и едет дальше

вызови Write через Task.Run(() => Write()); и позырь чо буде
Аноним 28/09/20 Пнд 14:09:37 1818077751
Аноним 28/09/20 Пнд 14:13:48 1818081752
>>1818077
Возмжно таск наследует лок из скоупа, в котором он был создан. Поставь эксперимент, где ты таск создаёшь вне lock'а в main
Аноним 28/09/20 Пнд 14:18:46 1818087753
>>1818077
у монитора приписка есть

Obtain the monitor lock of obj. Will block if another thread holds the lock
Will not block if the current thread holds the lock
Аноним 28/09/20 Пнд 14:19:18 1818089754
>>1818087
форматирование поплыло из за зведочек в коментах к монитору.
Аноним 28/09/20 Пнд 14:22:28 1818102755
>>1818077
тут он повисает на втором локе, но из первого быстро выходит и сразу заходит во второй
поставь
Thread.Sleep() после Task.Run и увидишь что он будет ждать
Аноним 28/09/20 Пнд 14:35:30 1818120756
Аноним 28/09/20 Пнд 15:13:41 1818147757
>>1817843
Для них выбор продиктован требовательностью к производительности. На кряки и по большому счету наплевать, потому что основной доход у них от организаций, которым выгодней заплатить за лицензию, чем разорится на судах и выплате компенсаций.
Аноним 28/09/20 Пнд 15:37:10 1818176758
Такое дело - добавил локализацию через AddDataAnnotationsLocalization, заполнил словарь, установил ErrorMessage у атрибутов и все работает. Вопрос как мне добавить поддержку локализации ErrorMessage для своего кастомного ValidationAttribute?
Аноним 28/09/20 Пнд 16:39:52 1818224759
Аноним 29/09/20 Втр 00:26:08 1818513760
.png 40Кб, 1851x409
1851x409
Кстати, я тут в фитчах 9 версии языка только сейчас обратил внимание на т.н. "Top-level statements and functions". И я что-то не совсем понимаю как оно работать должно. Допустим я вот такой еблан, что всегда делал Program не просто точкой входа но и синглтоном, т.к. в любом случае он будет, а следовательно почему-бы не запихнуть туда еще и какие-то общие штуки, типа ресурсов и прочего. Ну, собственно, как оно должно работать в этом случае? Я так понимаю что под капотом оно все еще будет собираться в некий класс Program и в нем все еще будет метод Main, но к нему-то мне обращаться не нужно было, а вот к другим методам, например настройкам приложения которые я получил из аргументов - нужно.
В общем, на самом деле я давно хотел чего-то подобного. Вернее я хотел чтобы был вариант писать как в сишчке - без классов(хотя бы на уровне файла), потому что иногда они не нужны. Но пока единственное применение что я вижу в текущей реализации это какие-то совсем маленькие программки, потому что в больших - ну будет у нас один файл с этими "Top-level statements and functions". Ну и что? Погоды оно не сделает. А вот если бы можно было как на прикриплейд, то другое дело. Даже вижу кейсы для использования вот так вот. Например нужно константы хранить, оно довольно удобно ложилось бы на это все, каждый раз делать статичный класс для констант - ну реально же как-то неоч, а константы так или иначе много где нужны и разбить их по файликам бывает необходимо и получается что куча ненужного мусора в виде: public static class ProgramConsts{...}; public static class ServerConsts{...}; public static class SettingsConsts{...}; и т.д.

В общем, не знаю я. Было бы классно если бы тогда в 10 шарпе позволили без классов писать, пусть и с какими-то ограничениями.
Аноним 29/09/20 Втр 01:15:30 1818535761
>>1818513
>это какие-то совсем маленькие программк

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

>куча ненужного мусора в виде: ...

Мусор получится если ты всё это в один файл закинешь, а потом заставишь остальных гадать где какие константы лежат и вообще где они используются, а в твоём варианте сразу понятно к каким классам эти константы относятся. Можно вообще папки(неймспейсы) использовать для этого и везде у тебя будет твой Constants класс, просто с обращением через Server.Constants или Settings.Constants. Рефлексией можно будет легко собрать все константы, пройдясь по всем неймспейсам и вложенному классу Constants.
Аноним 29/09/20 Втр 02:40:26 1818560762
2142314514.png 18Кб, 633x329
633x329
12534.png 4Кб, 528x105
528x105
>>1818513
Я так понимаю это сделали чисто чтобы привлекать новичков, которых раньше при выборе языка могли отпугивать все эти class Program static Main, а теперь как во всяких Питонах/JS, понятно и младенцу.
Аноним 29/09/20 Втр 12:16:59 1818741763
Аноны, можно ли как то в один проект перенести файлы другого безболезненно? Знаю что можно вручную копировать, но может vs позволяет это сделать быстрее и проще.
Аноним 29/09/20 Втр 12:39:01 1818757764
>>1818741
Используйте SDK-style csproj всегда и везде и проблем будет меньше (или больше)
Аноним 29/09/20 Втр 12:46:49 1818762765
>>1818741
а вообще из одной студии нельзя копировать в другую (тупизм)
но если открыть в одном солюшене, то можно
Аноним 29/09/20 Втр 13:35:49 1818791766
>>1818513
Это тупая трата времени с их стороны. Пользы от нее ноль. В Programs обычно мало кода и по факту просто уберут вложенность

Лучше бы сбегали в другие языки, например котлин, и оттуда выдирали удачные подходы.
Аноним 29/09/20 Втр 13:37:30 1818793767
Спасайте, уже мозги вытекают. Допустим есть стандартная учебная база блоги и посты.
class Blog(int Id, string name, IList<Post> posts)
class Post(int Id, DateTime time, Blog blog)
мне надо через ЕФ Кор выбрать 5 блогов по времени последнего поста (это получилось) и два первых и два последних поста для этих блогов. Вот с этим, он меня посылает, то таблица 't' не сущестует, то could not be translated, то еще какая шляпа. Можно как-то написать такой запрос, не вытягивая на клиент все посты?
Аноним 29/09/20 Втр 13:48:39 1818801768
>>1818793
Вот тебя нужно послать в тему по EF, как наглядный пример того, что ORM не нужны )
Аноним 29/09/20 Втр 14:11:35 1818808769
query.png 6Кб, 707x105
707x105
>>1818801
Да не. Я конечно понимаю, что возможности орм сильно ограничены по сравнению с SQL, но в данном случае дело скорее во мне, а не в орм.
Получилось пока как на пике, не понятно почему нельзя написать Posts...Take(2).Union(Posts...Taske(2) что б на стороне базы объединение произошло.
Аноним 29/09/20 Втр 14:32:59 1818813770
>>1818791
Так повыдирали же. record-классы например
Аноним 29/09/20 Втр 14:44:22 1818817771
>>1818793
На стороне базы делаешь таблицу с сортировкой по дате создания, а через EF берёшь Take(2) и TakeLast(2)
Аноним 29/09/20 Втр 14:54:29 1818824772
>>1818813
как будто оттуда.
это известная концепция, просто шарп дотянул до 9й версии занимаясь всякой второстепенной ерундой

>>1818808
нет. дело именно в орм. абстрагируясь от базы ты получаешь проблему выражения запросов к базе в терминах орм.
Аноним 29/09/20 Втр 16:23:23 1818876773
>>1818817
>TakeLast(2)
А есть хоть один провайдер в котором реализовано TakeLast?
>>1818817
> делаешь таблицу с сортировкой по дате создания
Можно по-подробнее? Что за таблица? Я же могу свою таблицу Posts отсортировать. У меня проблема в том, чтобы выгрести и инфу о блогах и часть их постов за один запрос.
Аноним 29/09/20 Втр 17:01:37 1818916774
Сап аноны, нужен совет, мне нужно писать диплом и я подумываю что бы взять на тему создание собственной СУБД, как думаете с этим вполне реально разобраться?
Аноним 29/09/20 Втр 17:17:00 1818934775
>>1818916
Если у тебя диплом в этом семестре, а ты всерьез задаешь такой вопрос типа реально-нереально разобраться, то не факт, что ты успеешь сделать какую нибудь васянскую ERP систему на винформах
Аноним 29/09/20 Втр 17:38:50 1818966776
>>1818934
Не, диплом у меня в след семестре, просто решил заранее решить этот вопрос, что бы потом не бегать с горящей жопой
Аноним 29/09/20 Втр 17:47:43 1818973777
>>1818966
Ну вот одумайся, пока не подписался. Я тоже выёбывался и в этот раз тоже выебнулся и брал ебанутую тему, потом либо просто проёбывал дедлайн, либо в последний день лютую хуйню делал лишь бы работало и приносил.
Аноним 29/09/20 Втр 17:48:08 1818974778
>>1818973
>>1818966
Такшо если ты темой создания своей БД прям не "горишь", то лучше брось эту затею
Аноним 29/09/20 Втр 17:53:15 1818979779
>>1818974
Раз это так запарно то лучше поищу другую тему, гугля что нибудь интересное для диплома я читал, что многие предлагают делать сайты или интернет магазины,такой вариант можно рассматривать или можно еще что то проще найти
Аноним 29/09/20 Втр 17:57:01 1818987780
>>1818979
Сайт или интернет магазин - это банально классика. Гораздо проще, чем свою БД пилить.
Аноним 29/09/20 Втр 18:38:46 1819039781
>>1818979
У меня знакомые постоянно просят дать сайт, на котором можно прослушивать звонки знакомых или читать их смс. Если сделаешь такой - очень благодарен буду!
Аноним 29/09/20 Втр 19:29:44 1819079782
>>1819039
У тебя Яровая в знакомых?
Аноним 29/09/20 Втр 20:43:09 1819131783
>>1819039
И еще поиск соцсетей человека по фотографии. А то финдфэйс закрылся, а вещь-то полезная. Это же не сложно, а люди спасибо скажут. Тыжпрогаммист
Аноним 30/09/20 Срд 10:37:41 1819453784
>>1797054 (OP)
Где можно найти инфу о том, какие изменения исходников сборки требуют перекомпиляции зависящих от неё сборок?
Аноним 30/09/20 Срд 10:40:29 1819459785
>>1819453
Например, если я добавлю приватное поле в reference-тип, это потребует перекомпиляции клиентов или нет?
Аноним 30/09/20 Срд 12:12:38 1819530786
Просветите слоупока - .NET 5 это преемник Core и Framework сразу или кого-то из них одного?
Аноним 30/09/20 Срд 12:15:21 1819535787
>>1819530
По сути коры, но считается, что он объединяет в себя и то и то
Аноним 30/09/20 Срд 12:40:46 1819566788
Имеется объект Type type = typeof(ClassA) и класс ClassB<T>, который требует дженерик. Как мне получить ClassB<ClassA>?
Аноним 30/09/20 Срд 12:55:15 1819574789
>>1819566
примерно
typeof(ClassB<>).MakeGenericType(type)
Аноним 30/09/20 Срд 13:00:06 1819576790
Аноним 30/09/20 Срд 13:15:26 1819586791
>>1819459
>>1819453
Если у тебя этот тип используется на стороне клиента, то у него поле не станет private до тех пор пока не перекомпилируешь код.
Аноним 30/09/20 Срд 13:16:10 1819587792
>>1819530
И то и то, создается как раз для того чтобы не было двух веток, а была только одна - .Net c циферкой
Аноним 30/09/20 Срд 14:17:46 1819681793
майки решили переписать дотнет с нуля, но детские болячки решили оставить. а жаль
Аноним 01/10/20 Чтв 01:02:33 1820153794
>>1818793
Если у постов нет дат, но ID - автоинкремент, то можно просто по ID искать 2 минимальных и 2 максимальных значения. Ничего сложного.
Аноним 01/10/20 Чтв 01:11:12 1820169795
>>1818916
А я бы на твоем месте не слушал тех кто отговаривает.
СУБД как тема диплома - интересно. Другое дело, что если это будет стандартная СУБД в который ты просто сделаешь индексы, хранимки, триггеры и прочий дефолт, то тебя могут спросить: "А что тут нового-то?", ну, это если вуз не совсем шарага.
Разобраться - реально, я правда по другой теме писал диплом, но однокурсник запили колоночная СУБД, буквально за неделю реализовал, еще неделю занимался оформлением диплома, изучение необходимой для реализации литературы, по его словам, заняло месяц.
Аноним 01/10/20 Чтв 01:17:41 1820179796
>>1818793
В глаза ебусь. >>1820153
Ну так в чем проблема?
Сортируешь по возрастанию/убыванию даты и достаешь первые 2. Take должен во всех провайдерах работать и во что-то типа Select Top 2.../ ... limit 2 ну и т.д.
Аноним 01/10/20 Чтв 01:28:24 1820195797
>>1818824
> нет. дело именно в орм. абстрагируясь от базы ты получаешь проблему выражения запросов к базе в терминах орм.
А не абстрагируясь ты получаешь кучу копипастного кода и возможные проблемы в будущем.
Для примера, вот чел на работе писал нативные запросы к MySQL, было это давно и на джаве, так вот, чел ушел, продукт остался. В итоге клиенты не могут нормально поставить себе новый MySQL потому что он там чет подхитровыебанное писал для оптимизации запросов, никто лезть разбираться из кодеров сейчас не хочет. Юзал бы он ОРМ, достаточно было бы одну dll'ку заменить на ту что умеет с новыми версиями MySQL работать и никаких бы проблем с этим не было. А ведь есть клиенты которые купили какую-нибудь про-версию MS SQL и хотят ее использовать, вот ты будешь писать нативные запросы к каждой СУБД? А есть ли у тебя время чтобы каждой возможной СУБД написать запросы? А что будешь делать когда уже все СУБД поддерживаешь, и нужно буквально в одном месте один новый запросик делать? А если по солиду все это реализуешь, то в итоге у тебя самого выйдет новая ОРМ, так нахуя ты велосипед изобрел, когда есть нормальные решения?
Аноним 01/10/20 Чтв 07:46:53 1820238798
>>1820195
нЕТ ТЫ НИ НАПНИМАЕШЬ ВЫ ФСЕ МАКАКИ МАКАКИ ВЫ ХАТИТЕ ПРОСТО ЧТОБЫ БЫЛО И УДОБНО НЕЕЕТТТ СУКА Я ЗАПЩИРАЮ МАКАЧИТЬ МАКАКА НЕЛЬЗЯЯЯ НАДО ВСЁ НАТИВНО ДЕЛАТЬ СУКА ТЫ ЧТЬО БЯЛЯТЬ НЕ ПАНИМАЕШЬ ОТ ВАС СУКА СОФТ ТАРМАЗИТ ВСЁ ТАРМИАЗИТ МАКАКИ БЛЯТЬЬБББ
Аноним 01/10/20 Чтв 10:46:58 1820283799
>>1820195
>А не абстрагируясь ты получаешь кучу копипастного кода и возможные проблемы в будущем.
а абстрагируясь ты получаешь проблемы орм уже сейчас. 2 стула как ни крути.

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

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


Аноним 01/10/20 Чтв 11:18:14 1820296800
Вкатили на ворлдскилз. Компетенция - "программные решения для бизнеса".
Анонасы, посоветуйте гайды по visual studio, а также sql menegment. В шараге гайдов не дали, сижу, пержу, ищу сам.
Аноним 01/10/20 Чтв 11:31:39 1820303801
>>1820296
> посоветуйте гайды по visual studio
Может тебе еще клавиатуру для кодинга подсказать чтоб программировать на 30% быстрее? Как тебя на ворлдскиллз отправили с такими вопросами?
Аноним 01/10/20 Чтв 11:39:01 1820306802
>>1820283
> если ему без ограничений орм понадобиось оптимизировать
А ему, судя по всему, и не надо было оптимизировать, он просто сам решил что хочет, а это был 2005 - делай что хошь, лишь бы работало. Я правда не знаю были ли в то время ОРМ, я тогда только в 3й класс пошел.

> ну а про то что новый мускуль не поддерживает старые запросы это шутка такая чтоль?
Не знаю что там поддерживается или не поддерживается, потому что когда я пришел работать, никаких СУБД кроме MS SQL я не знал, а на работе для новых проектов использовали уже pgSQL. Суть в том, что при обновлении все ломается, а при откате на старый MySQL - работает, лезть в код этого проекта никто не хочет, потому что там хрен пойми как все работает. Один вот попытался, в итоге месяц возился-возился, а результатом возни было добавление в руководство строчки про то что работает на с такой-то версией MySQL работоспособность с другими - не гарантированна.
Аноним 01/10/20 Чтв 13:17:10 1820370803
>>1820306
>работает, лезть в код этого проекта никто не хочет, потому что там хрен пойми как все работает
ну так это ваши проблемы что написано все через жопу
пишите нормально

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

Хотя в наше время идут по пути "юзер богатый и докупит железа"
Аноним 01/10/20 Чтв 13:17:32 1820371804
>>1820303
>> посоветуйте гайды по visual studio
>Может тебе еще клавиатуру для кодинга подсказать чтоб программировать на 30% быстрее? Как тебя на ворлдскиллз отправили с такими вопросами?
Туда всех с нулевыми знаниями берут блять
Аноним 01/10/20 Чтв 14:15:42 1820408805
Приветствую. Нужна помощь.
Надо соединить бек(asp.net core web api) и фронт (react+ts). Общее представление есть, хотел бы может какие то ресурсы/гайды или типа того что бы посмотреть примеры именно react+ts. Или может у кого будет вообще советы по коммуникации двух сторон.
Перечитал подходящие главы из книги ASP.NET Core and React(Carl Rippon), но в ней много неточностей и непонятной инфы.
Аноним 01/10/20 Чтв 14:29:23 1820420806
>>1819530
.NET 5 - это по факту .NetCore 4, очередной ребрендинг, с намеком что вот теперь то это основная ветка дотнета.
Из менее маркетологических причин - начали сливать библиотеки в единую платформу, мол теперь CoreCLR - для серверов, Mono - для AOT, но крутится на них общая FCL
Аноним 01/10/20 Чтв 14:48:40 1820432807
>>1820408
Зырь финт ушами.
Берешь докер.
Бек в контейнер для бека, там вся неткор хуйня
Фронт в контейнер с нжинском
В конфиге нжинкса делаешь чтобы запросы от клиента пересылались в контейнер с беком.

А, как я придумал. Я молодец? Я молодец!
Аноним 01/10/20 Чтв 15:10:27 1820443808
>>1820432
фронт в контейнере. 0_0 это как?
Аноним 01/10/20 Чтв 15:15:22 1820447809
На ASP.NET есть что ни будь типо Telescope лары? Я что то погуглил, так ничего похожего и не нашел
Аноним 01/10/20 Чтв 17:59:36 1820573810
>>1820408
Никаких сложностей то и нет, если проблемы не искать. На фронте можешь сделать набор методов, которые будут принимать подходящие для запросов параметры, делать запрос по домену бэка + константа с адресом + аргументы твои через, например, https://www.npmjs.com/package/axios, возвращать промисы. На беке просто делаешь веб апи контроллеры и получаешь запросы от фронта. Если нужно коммуникацию в другую сторону - дефолтный signalr.
Аноним 01/10/20 Чтв 18:13:02 1820588811
>>1820443
Всмысле как? Берешь фронт,собираешь его для прода, затем парой команд для докера копируешь в контейнер с настроеным nginx, затем создаешь из образа - контейнер и биндишь к порту, все у тебя фронт в контейнере, nginx там только чтобы принимать соединения. В другом контейнере у тебя лежит бекенд. Так вот, когда у тебя из фронта запрос в виде: env.prod.BASE_URL/api/v0/Item/1, если ты настроишь по гайдам, бек получит этот запро, отдаст фронту, а фронт уже через nginx клиенту. Это все делается просто-быстро. Да, можно не nginx а ноду или что-тебе больше нравится, просто nginx простой и довольно популярный.

Можешь конечно чуть больше поебаться и запихнуть фронт внутрь проекта с беком, настроить там все, но это та еще ебота на самом деле, первый вариант хоть и кажется мудренным, на самом деле проще и удобнее, потому что фронт отдельно - бек отдельно, ты можешь проверить большую часть фронта не запуская бек, можешь проверить свагером апи бека.
Аноним 01/10/20 Чтв 18:34:32 1820608812
>>1820443
Легко, фронт же должен отдаваться браузеру через какой-то хттп реквест. Т.е. нужен веб сервер. Обычно если фронт пилится на Vue/React/Angular, то там запущен сервак на ноде (сблеванул) и когда ты деплоишь новые сорцы (в твоём случае тайпскрипт), он компилит это в джаваскрипт и потом отдаёт эти статичные файлы (жс, цсс, хтмл, графику, шрифты) любому, кто сделал http request.

Dockerfile
FROM node:13.12.0-alpine
WORKDIR /app
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@3.4.1 -g --silent

А потом запускаешь
docker build

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

Аноним 01/10/20 Чтв 19:08:34 1820635813
изображение.png 16Кб, 1013x171
1013x171
Поясните, вот MVC или Razor Pages проект — это фронтенд или бэкенд? Или и то, и другое? Там ведь и работа с данными, и html-страницы.
Аноним 01/10/20 Чтв 19:09:13 1820637814
>>1820635
пик случайно приклеился
Аноним 01/10/20 Чтв 19:23:07 1820653815
>>1820635
Насчёт Razor pages не скажу. MVC проекты вполне себе пилятся на реакте/ангуляре. Смотри гайды на метаните
Аноним 01/10/20 Чтв 19:28:58 1820663816
>>1820635
все очень просто
все что делается (выполняется/работает) на сервере - это бэкенд
все что происходит в браузере - это фронтенд

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

>>1820608
еще юзаешь докер? цивилизованные люди смотрят в сторону podman + buildah
Аноним 01/10/20 Чтв 20:06:14 1820724817
>>1820663
>еще юзаешь докер?
Докер + helm + k8s + DevSpace = вообще не думаешь об инфраструктуре, пишешь код и деплоишь за секунды.
Аноним 01/10/20 Чтв 20:08:47 1820727818
>>1820724
>>1820663
Нормальные пацаны уже перекатились на serverless архитектуру.
Аноним 01/10/20 Чтв 20:22:55 1820747819
>>1820663
>>1820724
На самом деле в нашем сетапе Докер только для компиляции образов (image building) делается. Так то можно хоть докер, хоть бульду buildah - ебучие бульдоги и ебучие собаководы! не могли нормальное лого для своего продукта сделать? пригорает., хоть kaniko, хоть podman. Они все умеют взять имеющийся докерфайл и сделать образ. Докерфайл можно за несколько минут в баш скрипт преобразовать, если очень хочется.
Аноним 01/10/20 Чтв 20:24:33 1820748820
>>1820747
>деле в нашем сетапе
вся суть. сделал образ и трава не расти
а вот будешь разворачивать по другому запоешь
Аноним 01/10/20 Чтв 20:28:08 1820752821
>>1820727
>Нормальные пацаны
Это ты так смузихлёбов назвал? Безсервеная архитектура хорошо для всяких stateless functions годится, когда надо чего-то быстро сделать - аутентификация, число посчитать, чего-то внутреннее для отладки, процесс какой-то запустить, аудит лог записать. Приложухи пусть пока будут на отдельно выделенном процессе (на кластере процессов) крутиться .
Аноним 01/10/20 Чтв 20:49:48 1820777822
>>1820752
В моем хлеву с gcp работают, там уже не только функциями ограничиваются - App Engine, Cloud Run, базы данных. Хотя под капотом оно примерно кубернец и докер, конечно.
Аноним 01/10/20 Чтв 20:58:44 1820783823
>>1820777
>gcp
У нас Azure и AWS. Мы их лямбды и функции тоже используем, но не как полноценные приложения, а для того, что выше перечислено было.
Аноним 01/10/20 Чтв 21:47:37 1820819824
>>1820447
ага меня тоже это удивляет. что то похожее это glimpse, но оно ж заброшено да и для асп.нет же (не коре, хотя на коре 2 ставится)
Аноним 01/10/20 Чтв 21:48:24 1820820825
123.png 79Кб, 1738x826
1738x826
Челы, может кто подскажет? В своих примитивных новичковых нуждах стал пилить приложение для винды, чтобы с удаленным сервером без использования браузера взаимодействовать.

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

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

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

Разница между кнопкам в том, что первому адресу достаточно пустого GET запроса, а второму необходимы headers, которые я ему присылаю. Но это почему-то не срабатывает для формы.

Где я проебался? Почему один и тот же код работает в консольном приложении и отлетает с абсурдной ошибкой в форме?
Аноним 01/10/20 Чтв 21:55:00 1820823826
>>1820820
ниче не понял но на картинке он жалуется что ты шлешь GET с телом запроса (что конечно возможно, но не родным клиентом)
тело запроса принято слать как POST же
Аноним 01/10/20 Чтв 21:58:30 1820828827
>>1820819
>>1820447
>Telescope
А чем вас встроенный функционал не устраивает? Кор отлично выплёвывает и запросы ко всяким АПИ и БД и тайминги и вообще всё что надо для телеметрии/мониторинга. Там уже всего встроено навалом, а ещё есть всякие Serilog, TelemetryClient, elmah и ещё куча независимых наработок.
И конечно есть
https://devblogs.microsoft.com/dotnet/introducing-dotnet-monitor/
https://docs.microsoft.com/en-us/dotnet/core/diagnostics/dotnet-counters
https://github.com/Microsoft/MIEngine/wiki/Offroad-Debugging-of-.NET-Core-on-Linux---OSX-from-Visual-Studio

dotnet-monitor - вообще сюда копай
Аноним 01/10/20 Чтв 22:00:22 1820830828
>>1820823
Ну я скопировал всю инфу из запроса браузера. Там ГЕТ + набор header. Все тоже самое я ему и шлю. Кроме того, как я и сказал, этот же самый код работает из консоли.
Аноним 01/10/20 Чтв 22:02:17 1820832829
>>1820828
нужно не для телеметрии, а для разработки

у тебя есть ендпоинт все вроде норм, но показывает 404
как узнать что там порешал асп что выдал 404, куда он там зароутил и не нашел?
встроенным функционалом плиз

и тому подобное.
Аноним 01/10/20 Чтв 22:06:39 1820833830
>>1820832
Если у тебя Serilog/TelemetryClient, то в конфиге в проде меняешь флаг на Debug/Verbose/Trace где надо (он может и дефолтные системные события ловить) и смотришь что он выполняет, куда тыкается, какие рауты пытается запустить и прочее. Во всяких облаках это за тебя вообще абстрагированно во всякие красивые панельки, там даже свои собственные конфиги трогать не надо, оно за тебя всё загрузит.
Ну и dotnet-monitor.
Аноним 01/10/20 Чтв 22:09:55 1820837831
>>1820828
>встроенный функционал
это какой еще? У меня есть web-api в релизе, нужно реквесты проверять, чекать запросы. В телескопе из коробки есть широкий функционал, для asp.net нашел только (похожее) под AWS, и то платное
>выплёвывает
и куда пишет, если нет логгера? Все, что ты перечислил, это логгеры
Аноним 01/10/20 Чтв 22:12:13 1820840832
>>1820833
>смотришь что он выполняет, куда тыкается, какие рауты
вот больше делать нечего в разработке как логи читать.
Аноним 01/10/20 Чтв 22:18:24 1820842833
>>1820840
В проде только на логи и надо полагаться. А то ещё додумаются перезапустить приложение в дебаге, пока в него живые юзеры стучатся. В разработке у тебя dotnet run с консолью, куда сразу всё выплёвывается и дебаг.

>>1820837
Кто в прод приложение без логера выпускает?
Аноним 01/10/20 Чтв 22:21:55 1820844834
>>1820842
достал ты своим продом.
прямо как в том анекдоте
"а вот если бы у рыб были блохи"

кроме тебя НИКТО не говорит про прод. Более того, поясняют, что это нужно НЕ В ПРОДЕ епрст, а в деве

такая панелька обычное дело для пхп, да даже для асп.нет это минипрофайлер или глимпс. А для кора чет ничего нету нормального
Аноним 01/10/20 Чтв 22:23:43 1820845835
>>1820844
я спрашивал за прод
>>1820842
>Кто в прод приложение без логера выпускает?
логгер есть, но UI телескопа > текстовика с тувой хучей логов INFORMATION / WARNING etc.
Аноним 01/10/20 Чтв 22:25:46 1820848836
>>1820845
>я спрашивал за прод
С каких пор телескоп это прод?

Аноним 01/10/20 Чтв 22:29:01 1820852837
>>1820848
сырой "прод" висит, который дебажат 24/7. Прод он только потому, что конечник может чекать API, все еще в процессе разработки
Аноним 01/10/20 Чтв 22:56:46 1820870838
>>1820844
>достал ты своим продом.
>У меня есть web-api в релизе
релиз обычно = прод
Аноним 01/10/20 Чтв 23:03:49 1820873839
>>1820845
Kibana, Elmah, App Insights, https://newrelic.com, https://grafana.com. Там нормальный поиск и группировка всех логов и телеметрии. Некоторые могут помочь навесить алерты и информаровать о высокой нагрузке, куче ошибок и прочему.

Есть ещё такие поделия https://github.com/mo-esmp/serilog-ui
Аноним 01/10/20 Чтв 23:04:59 1820875840
>>1820870
вот только такие вещи как телескоп они не для релиза
разные подходы, разные ожидания от того что должно быть.
Аноним 01/10/20 Чтв 23:05:46 1820876841
>>1820844
Я на коре в хайлоад прод пилю уже 3 года и не жалуюсь на отсутствие инструментария. Отладка косяков даже в твоём ненавистном проде занимает от нескольких минут до нескольких часов. Локально вообще секунды-минуты любая проблема устраняется. Даже когда работаешь с каким-то магическим 3rd party API, который ведёт себя не по документации (которой и нет).
Аноним 01/10/20 Чтв 23:07:22 1820878842
Аноним 01/10/20 Чтв 23:07:30 1820879843
>>1820876
>Я на коре в хайлоад прод пилю уже 3 года и не жалуюсь на отсутствие инструментария.
звучит как "я в блокноте пишу и мне норм. значит IDE никому не нужны"
или "я папки зипую и мне норм. ваши гиты не нужны"
Аноним 01/10/20 Чтв 23:14:25 1820885844
>>1820879
Нет, это просто значит что ты не знаешь/не понимаешь как работать с выданным тебе инструментом. У меня были коллеги, которые ломали гит репо, и потом жаловались что гит говно, потому что делает какую-то ерунду. Вот было бы так как в SVN/TFS/Perforce!

А на самом деле они не только не знали как с гитом нормально работать, а даже учиться не хотели. Но момент пожаловаться никогда не упустят.
Аноним 01/10/20 Чтв 23:16:30 1820888845
>>1820885
ты щас вообще о чем? причем тут вообще гит?
гит, конечно, говно, но в данном контексте он вообще не причем
Аноним 01/10/20 Чтв 23:22:55 1820891846
>>1820888
Ты по-моему профессией промахнулся.
Аноним 01/10/20 Чтв 23:27:21 1820897847
>>1820891
потому что называю вещи своими именами?
это не делает меня не программистом.
и желание иметь что-то что помогает мне в разработке больше чем тупая консоль, тоже не делает меня не программистом

так что мимо. Я свои слова могу обосновать, но это выйдет за рамки этого треда.
И уж точно говнистость гита не относится к сути моих слов ранее, потому что гит там упомянут просто до кучи
Аноним 02/10/20 Птн 00:20:28 1820917848
>>1820820
Ты в заголовках указал тип контента, но при этом ничего не отправил с запросом.
Аноним 02/10/20 Птн 00:26:41 1820920849
Да и еще вопрос, тут за Serilog заговорили. Стоит ли его юзать, когда у Core есть ILoggerFactory? И еще такой вопрос насущный - логи где правильнее хранить, в ДБ или txt?
Аноним 02/10/20 Птн 00:33:08 1820923850
>>1820920
а у коре сделали хранение логов в файлах? последний раз ставил чей то велосипед с нюгета
а вообще серилог это про структурные логи, хотя Nlog тоже могет
Аноним 02/10/20 Птн 00:41:37 1820926851
123.png 91Кб, 1014x581
1014x581
>>1820917
На данный момент я попробовал другой аддон. RestSharp кажется. С ним все примерно то же самое. Исключений нет, однако сервер выдает заглушку, типа у вас не доступа к этой странице. Опять же, запрос содержит точь-в-точь такой же набор заголовков, метод. Все это я просто скопировал из браузера и все работает в консоли.

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

Мне кажется, что форма чем-то выдает себя из за чего сервер отказывается ей отвечать, как браузеру.
Аноним 02/10/20 Птн 02:14:10 1820958852
>>1820653
>>1820663
А как разделить MVC проект на бэк и фронт? Модели и контролеры — бэк, а Views — фронт?
Аноним 02/10/20 Птн 04:04:26 1820974853
>>1820926
Зачем ты используешь какую-то ерунду? Есть же нормальный HttpClient.
Аноним 02/10/20 Птн 04:08:37 1820975854
>>1820958
что значит "разделить"?
Зачем это? Чего пытаешься добиться?
Аноним 02/10/20 Птн 04:45:01 1820979855
>>1820897
>звучит как "я в блокноте пишу и мне норм. значит IDE никому не нужны"
>или "я папки зипую и мне норм. ваши гиты не нужны"
>своими именами
Сначала пожаловался, что у него инструментов не хватает или они не работают как ему нравится. Потом написал какую-то хрень про свои фантазии с блокнотами и гитами (именно что "своими именами", сам придумал, сам назвал). Затем, когда ему сказали что панелька в пхп вообще не сравнима с инструментарием в дотнете, его заклинило на гите.
>А для кора чет ничего нету нормального
Освой выданный тебе инструментарий сначала нормально, потом утверждай.
Аноним 02/10/20 Птн 05:49:10 1820992856
>>1820975
Чтобы бэкенд-девелопер занимался бэкендом, а фронтенд-девелопер занимался фронтом.
Аноним 02/10/20 Птн 07:01:22 1821016857
>>1820926
Оригин то зачем убрал? И если в заголовке тип контента, значит с запросом нужно отправлять данные, вообще так гадать сколько угодно можно, если хочешь чтобы помогли, то делай так чтобы проблему воспроизвести можно было.
Аноним 02/10/20 Птн 10:13:34 1821051858
Анон, помоги с WPF. Я не силен с этими биндингами. У меня есть грид
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height=""/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="250"/>
<ColumnDefinition Width="
"/>
</Grid.ColumnDefinitions>

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

Но в голове каша

написал так
public int PanelSize { get; set; }
<ColumnDefinition Width="{Binding PanelSize, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}"/>
Но нихера не происходит при изменении PanelSize

Либо как-то по другому, можно без этих биндов получить этот Width?

Мне просто надо самым минимумом сделать, а не написанием огромных классов для маленькой задачи. Но и как получить ColumnDefinitions Width я тоже не шарю
Аноним 02/10/20 Птн 11:02:20 1821076859
>>1820979
>Потом написал какую-то хрень про свои фантазии с блокнотами и гитами (именно что "своими именами", сам придумал, сам назвал)
дядь. ты перечитай тред что ли
А именно хотя бы эту пару постов - мой, где гит упомянут, и тот на который он был ответом. Ну можешь и далее свой про гит. А потом подумай и еще раз подумай и еще раз подумай и именно подумай.

>его заклинило на гите.
так это тебя заклинило. о нем РЕЧЬ ВООБЩЕ НЕ ШЛА. читай внимательнее, учитывай контекст

>Освой выданный тебе инструментарий сначала нормально, потом утверждай.
ну вот опять.
Аноним 02/10/20 Птн 11:03:16 1821078860
>>1820992
да они и так будут ими заниматься. банально в силу их знаний они не смогут заниматься не тем.
Аноним 02/10/20 Птн 11:12:06 1821089861
перекат будет вообще?
Аноним 02/10/20 Птн 11:21:08 1821099862
Аноним 02/10/20 Птн 11:22:01 1821100863
>>1821078
Так я и спрашиваю, что в MVC фронт, а что бэк?
Аноним 02/10/20 Птн 11:22:18 1821101864
>>1821099
Значит не будет. Я из тех, кто "я только спросить"
Аноним 02/10/20 Птн 11:49:53 1821111865
>>1821100
все что касается браузера - фронтенд
все, что касается сервера - бэкенд

для фронта нужно знание html/css/js, чтобы в браузере все работало как надо
для бэкенда нужно на чем то логику писать, базы данных знать, кеширование и так далее
V в MVC относится к серверному рендерингу шаблонов. Razor выполняется на сервере. То есть это бэкенд.
Аноним 02/10/20 Птн 12:18:25 1821128866
>>1821051
Я последний раз ВПФ лет 5 назад использовал, потому элегантного и правильного решения не предложу.

Но как вариант вот тебе говнокодерское. Даешь твоему гриду имя. Достаешь из него твой ColumnDefinition, где-то хранишь, значение и при нажатии кнопки меняешь значение его свойства Width. Да, как я сказал - говнокодерство, но это намного проще сделать если тебе действительно нужен минимум.
Аноним 02/10/20 Птн 12:26:02 1821134867
Как протестить свои знания перед собесом?
Аноним 02/10/20 Птн 12:52:02 1821149868
>>1821051
накинул тестовую форму правда PanelSize double
все работает.
Аноним 02/10/20 Птн 13:05:51 1821151869
>>1821134
Основная проблема собесов так то не знания, а мандраж.
Аноним 02/10/20 Птн 13:08:51 1821155870
>>1821151
Ну, я просто думаю что если быть уверенным в своих знаниях - с мандражом полегче будет справиться.
Аноним 02/10/20 Птн 13:34:43 1821168871
1.png 128Кб, 1414x676
1414x676
2.jpg 312Кб, 1538x897
1538x897
>>1820974
Потому что слишком зелен и не смог разобраться, а в случае с этими расширениями все оказалось понятнее. Кстати, а в чем разница, если эти аддоны внутри себя используют те же базовые методы?

>>1821016
C оригином выходит тот же самый ответ: Permission Denied. На самом деле, там нужен единственный заголовок, как на первом скрине. Из консоли я получаю страничку с инфой, которую далее обрабатываю.

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

Кажется дело в том, что через форму сервер почему-то сбрасывает сессию логина, то есть отвечает мне как незалогиненому пользователю - на скрине видно меню-форму для логина. А из консоли это меню сменяется на список с опциями и разделами, который пользователь может видеть после логина. Это уже хоть что-то. Спасибо, парни. Осталось понять, что с этим делать.
Аноним 02/10/20 Птн 14:20:59 1821206872
1.png 201Кб, 1913x837
1913x837
>>1820820
>>1820926
>>1821168
Отправил куки, как куки и все получилось. Авторизация не спадает и сервер отвечает, как и должен.

Конечно интересно было бы узнать, что это за НЕХ из за которой консоль работает не так, как форма. Но по крайней мере формально вопрос решен. Всем спасибо еще раз.
Аноним 02/10/20 Птн 14:21:58 1821208873
>>1821206
да нет никакой разницы откуда ты запрос делаешь. Ты просто что то накосячил
Аноним 02/10/20 Птн 15:15:00 1821266874
>>1821111
>V в MVC относится к серверному рендерингу шаблонов. Razor выполняется на сервере. То есть это бэкенд.
Но ведь это касается браузеров, там html, css и js, это UI веб-приложения. Как же это не фронтенд?
Аноним 02/10/20 Птн 16:07:08 1821320875
>>1821266

Отделяй мух от котлет.

хтмл/css/js это фронтендерское. фронтендер (в данном случае верстальщик) это создает и отдает бэкендеру
а бэкендер делает из них шаблоны, прокидывает данные, собирает и рендерит в результат.

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

Так что где бы ни был хтмл создавать его фронтендеру. Для бэкендера это просто шаблон который нужно отрендерить и заполнить
Аноним 02/10/20 Птн 16:13:34 1821326876
>>1821266
как то я сложно выразился. короче

дело фронтендера работать с "там html, css и js, это UI веб-приложения". Он это и создает. И если что то должно быть получено с сервера - дело бэкендера организовать это получение. И это либо полноценный рендер шаблонов либо просто статик хтмлки.

Ну блин не знает фронтендер про Razor, про асп.нет, про MVC
а бэкендер не знает про хтмл, стили, заебы браузеров и так далее.
Так что никто из них не сможет залезть в чужую область.
Аноним 02/10/20 Птн 17:18:34 1821380877
123123123123.jpg 10Кб, 329x331
329x331
Пацаны, а вам нравится всё, что добавляют в C# в последние годы? По-моему это пиздец. Особенно 8.0:
https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-8

Какой-то джаваскрипт нахуй, какие-то локальные стат методы, индекс-хуиндексы. Зачем всё это говно пихать в C#. Могли бы тогда отдельно выпустить Си Скрипт какой-нибудь. Я просто в ахуе во что код превращается со всеми этими конструкциями. Сейчас ещё джуны начнут это говно подхватывать. Сокращая код такими конструкциями ты его не делаешь более понятным.
Аноним 02/10/20 Птн 18:08:43 1821406878
>>1821380
>локальные стат методы
полезно
>индекс-хуиндексы
тоже полезно
Аноним 02/10/20 Птн 18:18:32 1821414879
>>1821380
Это обычный процесс - по ходу жизни простого инструмента он усложняется и предъявляет большие требования к квалификации. А потом появляется новый простой и удобный инструмент, за который садятся начинающие. Подобное с играми Paradox Interactive постоянно - со старта играть норм, а через несколько лет вкатываться - непонятно.
А касательно конкретных изменений 8 версии - мне нравятся новые функции свича, юзинг, индексы и диапазоны (хотя больше работаю на 7.3). Асинхронные потоки тоже интересно было бы потрогать. Остальное не особо интересно для меня, но так и должно быть с языком широкого назначения.
Аноним 02/10/20 Птн 18:21:46 1821416880
Чуваки, а есть вариант, чтобы после отправки post запроса попросить сервер не отвечать мне? Вот добавил я ип со страницы, нажал кнопку, после чего страница обновилась. Я делаю тоже самое, только мне не нужна перезагруженная страница в ответе. Лучше понял-принял или ничего.
Аноним 02/10/20 Птн 18:43:02 1821422881
>>1821416
ну так не читай ответ. закрой соединение сразу после принятия хидеров
Аноним 02/10/20 Птн 19:20:11 1821466882
>>1821380
>ты его не делаешь более понятным.
Потому что долбоебу вроде тебя лень учить новое и более удобное? Так это не джуны виноваты, а ты.
Аноним 02/10/20 Птн 20:17:47 1821503883
>>1821422
Но я не хочу шатать сервер.
Аноним 02/10/20 Птн 20:26:30 1821513884
>>1821503
ничего не поделать. есть хидер HEAD но ты же шлешь POST так что сервер вынужден сформировать тебе ответ. Да и в любом случае вынужден
Аноним 02/10/20 Птн 20:30:56 1821517885
>>1821513
Прискорбно.

Нашел такую настройку, но она экономит ресурсы клиента.
>HttpCompletionOption.ResponseHeadersRead;
Аноним 02/10/20 Птн 20:32:05 1821518886
>>1821517
ну так научи сервер не генерить ответ. дай ему флаг
Аноним 02/10/20 Птн 20:42:46 1821527887
>>1821518
Не могу, я всего лишь модер. Админ проебался и неизвестно когда появится. А если такая настройка уже есть на сервере, можно ли об этом как-то узнать, на заходя на него? Вообще есть какой-то способ узнать об доступных API сервера извне?
Аноним 03/10/20 Суб 00:39:51 1821688888
>>1821326
>а бэкендер не знает про хтмл, стили, заебы браузеров и так далее.
Так как он может этого не знать, если cshtml файл, он же View в MVC приложении, всё это в себе содержит? Или если это Razor Pages приложение, то cshtml @page файл.
Аноним 03/10/20 Суб 02:48:42 1821751889
>>1821688
ну он знает хтмл, он же не идиот. Его ж невозможно не знать. Но знает его ровно на уровне "мне дали хтмл, я превращаю его в шаблон для razor". Но в верстке он никакой, и если где то плывет верстка - это не его проблема. Его задача рендеринг шаблонов и заполнение их данными.
Аноним 03/10/20 Суб 05:25:46 1821797890
>>1821751
А что под шаблонами имеется в виду? cshtml?
Аноним 03/10/20 Суб 09:50:07 1821833891
>>1821797
Да что угодно. Задача бэкендера чтобы вид генерился как надо. Для этого он использует шаблонизацию, проброс данных, таг хелперы. Даже если это стили или жс, или даже текст, что заполняются на лету.
Но не он же этот хтмл, стили и жс придумывает.
Аноним 03/10/20 Суб 10:26:53 1821841892
Как .NET-овские коллекции отслеживают инвалидацию итераторов?
Аноним 03/10/20 Суб 10:28:51 1821842893
Аноним 03/10/20 Суб 10:29:44 1821844894
image.png 420Кб, 1620x1252
1620x1252
>>1821406
>>1821414
>>1821466
Да, что-то я хуйню вчера сморозил. Сам ведь активно пользуюсь фичами из версии 6 и 7. А сегодня использовал новые свичи из версии 8. И мне понравилось.

Хотя насчёт локальных методов не уверен. У кого-нибудь есть хорошие примеры их использования? Просто, если метод сложный, то его всегда лучше разбить на простые методы и тогда смысл в локальных методах отпадает сам по себе.
Аноним 03/10/20 Суб 10:34:23 1821846895
>>1821844
> то его всегда лучше разбить на простые методы
Ну так ты не останавливай мысль. Вот тебе наводящий вопрос

вот у тебя был 1 метод. ты его рефакторил и разбил на 3. куда положить 2 выделенных метода если они не нужны никому больше в классе кроме текущего метода?
Аноним 03/10/20 Суб 17:04:49 1822092896
Правильно ли я понимаю что каждый раз когда я передаю в метод или возращаю из него свою структуру, то я произвожу операцию копирования?
Типа у меня структура весит 1000 байт, передал в метод получилось я перегнал 1000 байт, вернул из метода еще 1000.
Сделал цепочку методов (10 штук) которые чекают что-то в структуре, но не меняют ее, получилось 10х1000 байт перегнал?
Аноним 03/10/20 Суб 17:11:04 1822098897
>>1822092
>Правильно ли я понимаю что каждый раз когда я передаю в метод или возращаю из него свою структуру, то я произвожу операцию копирования?
Да. Чтобы этого избежать используют ref модификатор параметра либо ref структуры в новых редакциях языка. Если ты передаешь класс, т. е. ссылочный тип, то передается копия ссылки, если структуру, то передается полная копия данной структуры. Именно поэтому структурами рекомендуется объявлять сущности небольшого размера.
Но минус ref модификаторов в том, что их нельзя использовать в async методах.
Аноним 04/10/20 Вск 12:03:14 1822734898
>>1820958
Да очень просто без задней мысли берешь и всё настраиваешь. Там я неправильно выразился, по сути тебе нужно делать web api, который вьюхи реакта/ангуляра будут просто дёргать для обмена данными. Именно дотнетовские вьюхи абсолютно не нужны.
Аноним 04/10/20 Вск 12:33:38 1822750899
>>1822092
В общем случае да, если какие-нибудь вызовы не заинлайнятся.
Аноним 04/10/20 Вск 13:44:15 1822793900
image.png 130Кб, 422x398
422x398
image.png 36Кб, 408x265
408x265
Чому так(пик 1) долго, а так(пик2) быстро?
Аноним 05/10/20 Пнд 19:33:44 1823883901
Приветствую! Кто может что то посоветовать по xUnit?
Нужны именно хорошие примеры или информативные источники, спасибо.
Аноним 05/10/20 Пнд 21:24:24 1823965902
>>1823883
когда то решил изучать его, но он мне не нужен, но вот что я в итоге отложил в заметках

"где доки?
А нигде. https://github.com/xunit/xunit/issues/1018
приходится читать статьи

Comparing xUnit.net to other frameworks
https://xunit.github.io/docs/comparisons.html

Введение в написание тестов и знакомство с xUnit
https://habr.com/post/357648/

Shared Context between Tests
https://xunit.github.io/docs/shared-context.html#class-fixture

TheoryData
https://andrewlock.net/creating-parameterised-tests-in-xunit-with-inlinedata-classdata-and-memberdata/
https://hamidmosalla.com/2017/02/25/xunit-theory-working-with-inlinedata-memberdata-classdata/"
Аноним 05/10/20 Пнд 23:05:12 1824002903
Аноним 05/10/20 Пнд 23:31:40 1824016904
>>1821416
fire-and-forget называется
Аноним 06/10/20 Втр 00:43:21 1824059905
Почему в шарпе нет синтаксиса типа:
loop(10)
{
... что-то делаем
}

Приходится каждый раз писать статический метод loop(int, Action<int>), но у этого есть минус, если нужно выйти досрочно из цикла, потому если наужно таки выйти досрочно приходится делать метод loop(int, bool, Action<int>), в котором бы проверялось условие досрочного выхода, это неочень удобно.
Аноним 06/10/20 Втр 01:31:30 1824073906
>>1824059
Потому что в С# используют LINQ
Аноним 06/10/20 Втр 10:38:40 1824175907
Есть тут мастер над архитектурой? Нужна помощь... сорри за большой пост, не бейте

Клиент игры. В разных местах UI игрок может посмотреть на коллекцию предметов, отфильтрованных по типу. В одном месте он может посмотреть на скины-оружие и покрутить их в 3д, в другом - посмотреть на портреты, а в третьем - на емодзи.

GameItem представляет конкретный игровой предмет и хранит: Id, Type[skin,weapon,portrait,emoji], Rarity[comon,rare,legendary], иконку, 3д модель

GameDatabase хранит все игровые предметы разбитые по типу: Skins, Weapons, Portraits, Emojis. Дополнительно он хранит список UniqueItems - это особые предметы, которые доступны в коллекции только, если они попали в инвентарь игроку (например, это может быть новогодний подарочный скин). И список ItemsPacks - это игровые наборы, которые хранят в себе до 5 игровых предметов.
В GameDatabase можно узнать: IsUniqueItem и IsItemPartOfPack по itemName.

BackendService хранит данные игрока и его инвентарь с сервера, стоимость и скидки на игровые наборы, список Discounted и Time-limited наборов. Предметы из Time-limited наборов доступны к покупке только ограниченное время, допустим 12 дней, потом они исчезают из коллекции.
В BackendService можно узнать: IsDiscountedItem и IsTimeLimitedItem по itemName.

Итак, к сути вопроса. Когда игрок открывает коллекцию, то мне нужно показать актуальные игровые предметы для него и скрыть те, которые сейчас недоступны. Для этого мне нужно обратиться как к GameDatabase, так и к BackendService. Кто и на каком уровне должен проводить фильтрацию и сортировку предметов для коллекции? Это явно не GameDatabase, который выступает простым хранилищем. Это либо BackendService, либо какой-то отдельный класс, объект которого будет создаваться для каждой коллекции свой, типа GameItemRepository(database, backend);

Можно добавить новый класс:
public class GameItemData
{
    public string Name;
    public bool Locked; (находится ли предмет в инвентаре)
    public bool Discounted; (находится ли предмет в скидочном наборе)
    public bool TimeLimited; (находится ли предмет в ограниченном по времени наборе)
}
Заполнять и возвращать эти данные будет BackendService:
backend.Store.GetSkinsAndSortBy(GameItemsSort.Rarity);

BackendService снаружи не знает о GameItem и о GameDatabase. Но внутри он хранит и использует ссылку на GameDatabase. Когда я буду заполнять коллекцию для UI, то буду работать и с GameItem, и с GameItemData.
Аноним 06/10/20 Втр 16:00:07 1824469908
>>1824059
foreach i in Enumerable.Range(0, 1)
Сука, тебе мало синтаксиса в шарпе? Блядь, я год работаю на нем и еще год в качестве хобби, и ощущение, что я новичок
Аноним 06/10/20 Втр 16:00:40 1824470909
Аноним 06/10/20 Втр 19:12:06 1824658910
>>1824469
Мало. Хоче чтобы был способ делать асинхронщину еще проще. Типа просто пишем: async Object и не нужно каждый раз писать Task<Object>. Оч бесит его писать, когда у тебя там что-то типа : async Task<IZalypa<IPizda<IJopa>>> Почему бы просто не писать IZalupa<Pozda<IJopa>>? А еще хотелось бы чтобы был синтаксис для анонимных функций который позволял бы выйти из основной функции сразу. Короче, много чего хотелось бы в плане синтаксиса.
Аноним 06/10/20 Втр 21:23:06 1824802911
>>1824658
с этим тебе в котлин.
но потом и там будешь жаловаться
Аноним 07/10/20 Срд 02:57:16 1824894912
Пачаны обновите шапку, уже появилась в интернетах книга C# 8.0 in a Nutshell
Аноним 07/10/20 Срд 04:06:42 1824908913
>>1824175
На такое только большим текстом и отвечать, что для двачей не формат.
Если коротко, то учи SOLID.
У тебя всегда должен быть только один source of truth для чего угодно. А сейчас ты хранишь предметы и на клиенте и на сервере (если я правильно понял). Если есть сервер, то он должен быть твоим источником правды и должен хранить текущее состояние твоей игровой сессии. Клиент своё состояние должен получать от сервера.

GameDatabase и BackendService - плохие названия в данном случае, потому что не отображают конкретное назначение. Нужно разбивать на более детальные классы: инвентарь, предложения (discounts и timeLimited), предмет (он должен содержать о себе всю нужную инфу, такую как unique, name, type), набор предметов (через всякие hashmaps можно быстро узнать, является ли предмет частью этого набора), игровой менеджер, персонаж, сервис для запроса к серверу (отправить новые данные, получить текущее состояние) и т.д..

Серверу пофиг, как ты там свой UI организуешь. Ему главное хранить текущее состояние объектов (игрового мира).

Сервер и клиент должны общаться друг с другом посредством контракта. Если изменение какого-то слоя на сервере (помимо самого контракта) влечёт за собой изменение клиента, то значит архитектура поехала и ты делаешь что-то не так. То же самое работает и в обратную сторону.
Аноним 07/10/20 Срд 06:52:01 1824941914
>>1824658
async Task<T> тоже бесит, но что поделаешь
>>1824802
В котлине все по дефолту асинхронное?
Разве асинхронность не вносит оверхед? Просто видел, что сравнивали какие-то фреймворки, и там синхронный вариант в некоторых задачах отказывался быстрее
Аноним 07/10/20 Срд 12:35:31 1825098915
>>1824941
>В котлине все по дефолту асинхронное?
нет в котлине добавил функции suspend и она становится как async в шарпе, но при этом внешний вызов не требует писать await. код вообще не меняется.
Аноним 07/10/20 Срд 12:46:28 1825106916
>>1825098
>внешний вызов не требует писать await

Так это разное поведение, с await ты ждёшь выполнения асинхронной функции, а без await выполнение кода продолжается не дожидаясь выполнения асинхронной функции.
Аноним 07/10/20 Срд 12:50:27 1825111917
>>1825106
это корутина. без await она никуда не уйдет и будет ждать завершения корутины
а async/await нужен если у тебя не одна такая корутинка и нужно чтобы дальше пошло и можно было еще корутинок запустить, то есть аналог var task =

а если у тебя в шарпокоде нет var task= , то и await тебе не нужен
Аноним 07/10/20 Срд 13:43:13 1825141918
>>1825111
>а если у тебя в шарпокоде нет var task= , то и await тебе не нужен

Как это не нужен? А если у меня есть асинхронный метод, который используется в разных участках кода, при этом в некоторых участках кода нужно ждать выполнение метода, а в других участках нужно просто запустить его выполнение и продолжить, т. е. у меня нет var но при этом где-то есть await, а где то его нет.

Аноним 07/10/20 Срд 14:01:17 1825159919
>>1825141
вот в шарпе ты пишешь

awat Foo();
await Bar();

Это означает что у тебя в месте await поток освободит и даст поработать другому пока Foo() и Bar() работают. Но Bar() будет выполнено после Foo()

в котлин синхронно так
foo()
bar()
эти вызовы будут сделаны в одном потоке.

но если эти функции помечены как suspend, то этот код будет выглядеть вот так
foo()
bar()
то есть абсолютно так же
но будут вести абсолютно идентично тому, что выше на шарпе - в месте вызова foo() поток даст поработать другим и будет ждать результата foo(), а потом вызовет bar() и снова даст поработать другим пока bar() не отработал

а вот если тебе нужен аналог var task/future то тут уже понадобится async/await чтобы котлин не ждал выполнения этих корутин, а реально пошел дальше и вел себя как TPL в шарпе

причины необходимости "когда нужен var task" те же что и в шарпе, когда ты уходишь от обычного await и опускаешься до TPL. Иначе же писать await не нужно - котлин сам знает что это корутины и нужно подождать на них (дав поработать иначе) пока кодер сам не захочет не ждать (подключит async/await в привычном виде)


Аноним 07/10/20 Срд 14:15:49 1825172920
>>1825159
В шарпе, написав/увидев await перед асинхронной функцией я понимаю, что выполнение кода может продолжаться в отличном от того, который выполнял код до await, потоке. Это нужно брать во внимание когда идёт синхронизация обращения к данным, как пример есть класс ReaderWriterLockSlim у него есть методы EnterReadLock и ExitReadLock которые должны последовательно вызываться из одного потока. И как мне в котлине знать, что вот этот как await а вот это нет?
Аноним 07/10/20 Срд 14:32:54 1825182921
>>1825172
Ну код же не в блокноте пишешь. IDE показывает места где вызов функции есть вызов корутины.
Аноним 07/10/20 Срд 14:33:13 1825183922
Существует ли хоть какая-нибудь возможность иметь лицензию в программе и не обфусцировать ее, и так чтобы ее не взломали через денек?
Аноним 07/10/20 Срд 14:35:57 1825187923
>>1825183
1 неуловимый джо - твой софт недостоен ковыряния
2 очень злой джо - твоя ца энтерпрайз где за факт взлома их так нагнут, что им проще купить, чем рисковать
3 Ключевой функционал унести на сервер.
4 CoreRT может сделать тебе нативный бинарник который ковырять сложнее (но это уже свой гемор)
Аноним 07/10/20 Срд 14:52:12 1825202924
>>1825182
Ну т. е. ручками каждый раз наводить на вызовы и смотреть тип функции? Потом еще раз наводить, на всякий случай, вдруг вот на эту ты не наводил. Ясно.
Аноним 07/10/20 Срд 15:00:47 1825210925
Image 7.png 9Кб, 710x139
710x139
Аноним 07/10/20 Срд 15:05:13 1825214926
Image 8.png 6Кб, 468x150
468x150
>>1825202
вот лучше пример. прекрасно видно что в данном месте происходит разрыв контекста (то бишь вызов корутины)
Аноним 07/10/20 Срд 15:10:22 1825217927
>>1825214
Так это не удобно. Приходится на поля смотреть, когда ты думаешь о коде, то смотришь на код, а не на поля. И get("") воспринимается как обычный блокирующий вызов.
Аноним 07/10/20 Срд 15:28:09 1825222928
>>1825217
нуу это уже критика из разряда "а где точка с запятой, как я отличу одну инструкцию от другой"
нет никаких проблем если пишешь на языке. даже не замечаешь этот аспект
в отличие от ConfigureAwait который не только замечаешь, а и бесит

к тому же такое доступно только в функциях suspend (как и в шарпе только в async) а не вообще везде. Если слово async/suspend замечаешь и не понимаешь что это значит что внутри будут вызовы других корутин...ну значит котлин не для тебя

да и в шарпе только анализатор подскажет что функция возвращет Task, а ты написал ее просто так ибо не знал, что она с Task
Аноним 07/10/20 Срд 16:06:46 1825249929
>>1825187
Это мой домашний проект за который мне некоторые кидают донаты и я хочу дать им чуть больше функционала, потому что именно они его запросили и только из-за них я решил это сделать.
1) к сожалению ковыряют, я пробовал добавить тупо по ключам с HWID, раздал 10 ключей и отслеживал запуски, было более 40 штук, т.е 30 человек откуда крякнутую версию взяли.
3) не хочу содержать сервер и бороться с проблемами блокировок и прочей фигней, уже пытался в другом проекте так делать и это просто боль, по всему миру все друг друга блокируют и твой сервер может быть тупо недоступен для этих людей
4) у меня есть возможность в проге что-то типа плагинов делать, поэтому наверное такое мне не подойдет, сломает все к чертям.

Обидно что .net приложения очень легко ломать, от чего писать что-то сложное что можно продавать как премиум тупо отпадает желание.
Аноним 07/10/20 Срд 16:14:33 1825255930
Сап, почему не получается установить пакеты с NuGet Package Manager? Выбираю нужный пакет, последнюю стабильную версию, щелкаю на Install, затем OK и дальше выходят ошибки
>The type or namespace PackageName does not exist in the namespace Microsoft (are you missing an assembly reference?)
Аноним 07/10/20 Срд 16:47:07 1825294931
>>1825255
могут быть проблемы если проект не собирается и ставишь нюгеты
и что забавно именно нюгеты нужны чтобы он собрался

ребут студии помогает. иногда даже удаление .vs
Аноним 07/10/20 Срд 16:57:45 1825304932
>>1825294
Пытаюсь слить несколько проектов в один. Все проекты до этого собирались, никаких проблем с установкой пакетов не было.
Аноним 07/10/20 Срд 17:07:32 1825316933
image.png 86Кб, 2233x390
2233x390
Почему метод работает в .net core (3.1), но не работает в .Net Framework(4.8)? Как фиксить?
Аноним 07/10/20 Срд 17:10:10 1825319934
Аноним 07/10/20 Срд 17:21:12 1825321935
>>1825319
Не может преобразовать стринг в чар. Да банально перегрузки этой нет. В коре у этого метода 10 перегурзок, а в фреймворке всего 6. Разные версии языка что ли?
Аноним 07/10/20 Срд 17:23:27 1825322936
>>1825321
вообще то да. разные версии языка
но в данном случае разные фреймворки
Аноним 07/10/20 Срд 17:24:57 1825324937
Аноним 07/10/20 Срд 17:28:35 1825326938
>>1825304
Версии проектов смотри. Некоторые пакеты с некоторыми проектами и некоторые проекты не будут совместимы.
Аноним 07/10/20 Срд 17:30:46 1825328939
Аноним 07/10/20 Срд 17:35:21 1825330940
>>1825328
Воспользуйся этой сигнатурой: Split(String[], StringSplitOptions)

.Split(new string [] { "hui" }, StringSplitOptions.None);
Аноним 07/10/20 Срд 18:14:59 1825360941
Аноним 07/10/20 Срд 23:52:42 1825540942
Аноны, тут такая трабла, есть либа с приватным методом и ивентом. Они мне пиздец как нужны. По отдельности я их через рефлексию выцепил, вопрос, как мне подписаться на этот ивент с нужным типом делегата? Я хуй пойму, гугол не помогает
Аноним 08/10/20 Чтв 01:44:57 1825561943
>>1825540
Типа хочешь подписать приватный event на приватный же метод?
Если выцепил этот метод MethodInfo method
И выцепил событие EventInfo eventInfo
То
1) Создаешь делегат
handler = Delegate.CreateDelegate(eventInfo.EventHandlerType, target, method) (target - инстанс на котором метод вызывается, ну или бери перегрузку без него, если метод статический)
2) Подписываешь его к событию
eventInfo.AddEventHandler(eventSource,handler) (где eventSource - инстанс который event поднимает)
Аноним 08/10/20 Чтв 01:51:22 1825564944
>>1825540
Ежели AddEventHandler не работает из-за проверки видимости ("бла бла бла нет публичного метода add")
То нужно рефлексией вытащить сгенерированный компилятором метод подписки, и вызывать уже его (обычно на событие ShitHappened метод будет зваться add_ShitHappened)
Аноним 08/10/20 Чтв 04:42:05 1825591945
>>1797696
Почему бы не использовать unity?
Аноним 08/10/20 Чтв 10:26:27 1825690946
Аноны, сейчас пишу фронт на JS'е, но хочу пересесть на иглу бекэнда и тут выбор на какой стул сесть:
1) питон и джанго
2) шарп и дотнет
к обоим язык отношусь хорошо. Шарп привлекает чуть больше тем, что у него статическая типизация и по субъктивному моему мнение, он лучше для бекэнда заходит
Но на питоне вариант вкатиться прям на текущей работе, потому что стек в беке питон + го
Аноним 08/10/20 Чтв 12:22:14 1825788947
>>1825690
ты же понимаешь что этот вопрос не имеет смысла?
в теме про шарп будут выбирать шарп
а в теме про питон будут выбирать питон
Аноним 08/10/20 Чтв 13:39:28 1825853948
>>1825788
ну тут вопрос не про языки как таковые, а про работу на них в сфере бекенда в СНГ
Аноним 08/10/20 Чтв 15:52:06 1825942949
>>1825853
Зависит от локации. У меня дотнетный город (запад Украины) - много вакансий есть и на легаси, и на новье, но на пайтоне что-то тоже есть. По моим впечатлениям от комментов на дваче, в РФ с дотнетом потуже. Ориентируйся по сайтам поиска работы.
Аноним 08/10/20 Чтв 16:11:57 1825946950
>>1825561
Анон, спасибо тебе, недельную таску выполнил за пару суток
Аноним 08/10/20 Чтв 16:19:06 1825955951
Аноним 08/10/20 Чтв 19:05:25 1826090952
Кто-нибудь использует Lifetimes от JetBrains?
Аноним 08/10/20 Чтв 19:30:49 1826126953
Побют ли меня клавой по ебалу за то что в своем микросервисе я нафигачил статики? Боюсь из-за этого отдавать свою часть работы, хотя уже все сделал.
Что учить? Аноним 08/10/20 Чтв 19:49:53 1826143954
Всем привет.Я полная нулина, сейчас вкатываюсь в C#, что нужно учить , что более востребовано сейчас, чтобы взяли на работу.При гуглении открывается статья на хабре 2013-го года.хелпуйте
Аноним 08/10/20 Чтв 19:57:07 1826148955
>>1826143
Смотри что в вакансиях твоего региона требуется, то и учи. Может быть у тебя там только для легаси шарп нужен, тогда изучая .net core ты по большей части время потратишь и будешь типа >>1825316 вопросы задавать. А может быть у тебя там все на докерах-хуекерах сидят - нужно будет учить как деплоить докером. А может быть у тебя там извраты и они во встройки впихивают .net, тогда вообще весело будет. В общем, смотри вакансии, требования к ним и гугли незнакомые слова.
Аноним 08/10/20 Чтв 20:42:23 1826160956
>>1826126
В самом статике ничего плохого нет. Если это stateless класс, который легко покрыть тестами - то вообще никаких проблем. Если есть state, то надо убедиться что оно thread-safe. Если это классы внутри Startup scope, то вообще пофиг. Эти вещи нужны для инициализации всего приложения и покрываются интеграционными тестами.
Аноним 08/10/20 Чтв 21:00:37 1826169957
>>1826160
Ну, я использую статику чтобы разгрузить основной класс от всяких вспомогательных методов. Типа вот у меня есть метод JoinXwithY(X, Y), мне не хочется чтобы реализация этой штуки была в методе т.к. метод join в linq довольно здоровый выходит, я вынес это в метод, но если подумать, зачем этот код внутри этого класса - потому я выношу в отдельный статический класс. Ну или мне не нравится писать каждый раз string.IsNullOrWhiteSpace(str), я сделал метод расширения str.IsEmpty(), но ведь вдруг кто-то проебет класс с этими расширениями и получится что половина кода программы - красная. Ну или в сторонней библиотеке есть enum, а у меня с этими перечислениями связана логика, как-то оформить нормально в класс не совсем получается потому что получится что я как-то должен управлять новым классом чтобы знать что там за элемент перечисления, потому я делаю еще один статический класс в котором логика которая связана с работой этого enum(достать имя связанное с ним, какие-то константы и прочяя фигня), тут я бы, будь это не сторонняя штука, - таки замутил класс обычный, но вот что поделать - сторонняя библиотека.
Аноним 08/10/20 Чтв 21:11:57 1826174958
>>1826169
Мне лень вникать, но делать методы расширения для всяких удобств - норма.
Аноним 09/10/20 Птн 02:14:40 1826317959
>>1826090
Использовал первоначальную реализацию (из решарперовского кода, когда еще Lifetime был классом), сомневаюсь что на двачах найдешь еще юзеров этого дела.
Аноним 09/10/20 Птн 04:11:41 1826329960
>>1826169
Extension Methods - обычное дело. Под них целые nuget пакеты пилят.

>получится что половина кода программы - красная
Студия быстро найдёт, какой using добавить. А вообще, если расширяешь какой-то класс, то один из стандартов - это пилить свой класс в том же namespace, в котором находится основной класс. И не важно, что у тебя в приложении используются свои нэймспэйсы.
namespace System {
public static bool IsEmpty(this string str) { }
}

Главное внутри таких классов не делать чего-то, что невозможно будет покрыть тестами. Например new ExternalResource(). Это может быть и БД коннект, и хттп клиент, и работа с файловой системой, и подключение к хранилищу сертификатов.
Аноним 09/10/20 Птн 07:15:03 1826364961
Как получить IP адрес источника реквеста в HttpListener?
Аноним 09/10/20 Птн 07:15:48 1826365962
Аноним 09/10/20 Птн 17:55:02 1826757963
>>1825690
в треде .NET-а хочу с уверенностью сказать - садись на пыху и не еби мозги. Да, нет перегрузки, но явно лучше компилированного говна будет
Аноним 09/10/20 Птн 19:51:19 1826917964
Аноним 09/10/20 Птн 21:37:31 1826998965
Хм.
Если я сделаю так:

int a = x%2;
a--;
if(a>0)
{
...
}

Как это оптимизирует среда? Будет ли просто проверка первого бита или как-то иначе? Просто не хочется качать жетбрейновские штуковины, потому что я не доверяю этим пидорам, да и прочие штуки качать, но интересно же. Может кто упарывался и знает.
Аноним 09/10/20 Птн 21:46:16 1827007966
Как ловить движение мышки из консольного приложения?
Только не говорите опять что ебучие винапи нужно. Я не переживу этого. О какой кроссплатформенности можно говорить, если постоянно для любой хуйни - винапи. Если так, то пиздец же.
Аноним 09/10/20 Птн 22:11:40 1827030967
Могу ли я как-то лениво читать из респонса HttpCleiny, Ну, скажем, мне приходит респонс в виде джейсона на 50МБ, и мне хотелось бы как-то лениво это обработать, по одному объектику, чтобы не создавать кучу ненужного хлама, пока остальная программа бы работала в штатном режиме. Можно ли как-то это сделать? Просто столкнулся с тем, что апи одно отдает json который при десерелизации в 14к объектов превращается и сразу после этого - бац - 800МБ оперативки сожрало, хотя мне-то надо только найти там один-два нужных мне объекта и отдать их куда нужно, а выходит что обычными путями такая вот дичь происходи. Скажем, читай я из файла, я бы мог по строчке брать, смотреть то ли это что мне надо - отдвать дальше и чистить память и затем читать следующую строчку и так пока до конца файла не дойду. Но с запросами по HTTP я что-то подобного не вижу.
Аноним 09/10/20 Птн 22:49:56 1827063968
>>1827007
У любой платформы есть стандартные библиотеки вида user32.dll в винде, при помощи которых можно отследить движение мыши.
Аноним 09/10/20 Птн 22:58:43 1827069969
>>1827030
С запросами тебе нужно работать с сетевым потоком, который ты будешь передавать в жсон-парсер. Для того чтобы взять только нужное, отбрасывая лишнее, нужно будет написать жсон-конвертер.
Аноним 09/10/20 Птн 23:12:43 1827073970
>>1797054 (OP)
Давайте обсудим RSA...

Насколько я знаю, в RSA, (e, n) - публичный ключ, (d, n) - приватный ключ.
Соответственно...
Шифрование:
>c = m^e mod n, где с - cipher, m - message, e - public exponent, n - modulus
Дешифрование:
>m2 = c^d mod n, где с - cipher, m2 - decrypted message, d - secret exponent, n - modulus
>(m == m2) -> true
Подпись:
>s = m^d mod n, s - подпись (читай шифрование приватным ключём), m - подписываемое сообщение, d, n - компоненты приватного ключа.
>(m, s) - подписанное сообщение (сообщение и подпись)
Проверка подписи:
>m2 = s^e mod n; дешифрование, но публичным ключём.
>(m2 == m) -> true, если подпись s валидна.

Все эти формулы и вычисления, по модулю n, можно производить при помощи того же BigInteger: https://github.com/bazzilic/BigInteger/blob/master/BigInteger/BigInteger.cs
но при условии, что "m" - число со значением в диапазоне от 0 до (n-1).
На выходе, "с" и "s", со значением, в этом же диапазоне.

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

ну, и собственно вопрос... Как всю эту хуятину впроглить, чтоб оно фурычило годно, с байтарраями произвольной длины?
Аноним 10/10/20 Суб 00:33:05 1827106971
>>1827030
Файл это FileStream
Сеть это NetworkStream
И тот и тот stream
Нет никакой разницы в последовательном чтении разве что в NetworkStream не сделаешь Seek назад
Аноним 10/10/20 Суб 04:15:48 1827143972
>>1826317
Концепция то мощная и всяко лучше Dispose, но использовать ее - совсем другое дело. Я вот пытаюсь интегрировать в MVVM и, если по хорошему, то при создании каждой новой вьюмодели нужно создавать LifetimeDefinition который еще и хранить где то и точно так же не забывать вызывать как и Dispose и очищать.
И это в MVVM где WeakRef норма.
Аноним 10/10/20 Суб 04:28:58 1827153973
>>1827143
Ну внутре решарпера у них свой компонентный фреймворк автоматически их порождает и диспозит вовремя, большой бонус в том что не надо в каждом элементе иерархии имплементировать dispose да не забывать диспозить дочерние компоненты, а просто передавать по цепочке лайфтайм.
Абсурд ситуации в том, что у MS внутри у себя похожим образом использует в качестве лайфтаймов CancellationToken (LifetimeDefinition ~ CancellationTokenSource), а nugetной версии JB прикрутили к лайфтаймам функционал этих самых токенов.
Аноним 10/10/20 Суб 04:59:14 1827159974
>>1827153
ну жетбраинс проще. они сделали свой компонентный фреймворк. А я натягиваю сову на имеющийся глобус.

имхо MS просто нарушает семантику. Меня в асп.нет коре смутило что их лайтайм с событиями запуска это не события а CancellationTokenSource
Семантика нарушена, хрен поймешь, нужно идти гуглить (а еще попробуй нагугли почем так, ведь только мнения)
Аноним 10/10/20 Суб 14:49:00 1827328975
>>1827153
Чем больше пишу, тем CancellationTokenSource у меня не эквивалент lifetime-ам. Уже много кода переписал и количество lifetime.Bracket/Execute/TryExecute просто зашкаливает. У CancellationTokenSource ничего похожего нет.
Аноним 10/10/20 Суб 17:31:23 1827415976
Книги не привык читать, посоветуйте плез видео доклады/лекции по конкурентости, паралелизму, тредам, контекстам, таскам и всей этой хуйне. Нашел единственную не формошлепскую джун вакансию и там требуют теоретические знания во всем этом.
Аноним 10/10/20 Суб 17:34:55 1827416977
Аноним 10/10/20 Суб 19:37:32 1827488978
>>1827415
Ты до этого всего сам по видео никогда не дойдёшь, хоть засмотрись. Это всё надо самому пробовать и параллельно смотреть, почему оно именно так работает. Эти видео сеньорам хорошо заходят или просто интересующимся, когда хочется на диване поваляться, но запоминать толком ничего не планируешь.
Аноним 10/10/20 Суб 19:56:02 1827504979
>>1827488
не соглашусь. Вот я использую другой подход, где первым шагом является разобраться в основе "что к чему куда", общее понимание "как все устроено". для этого читаю и смотрю все ПО ДИАГОНАЛИ что можно пока не придет понимание. Именно понимание. Если ничего не запомнил и хер с ним. Невозможно запомнить без практики.
Главное понять суть. Для этого меняю источники пока не сложится общая картина.

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

Если же не понять, то в итоге можно стать гугл-копипастер проггером, который видит закономерности че как используется, но не понимает, потому и копирует найденное, а не реализует "по принципу"

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

я соглашусь, что "ну для тебя это не первый язык". Да. Но я этот подход использую для любой области, где у меня нет базиса, и он себя оправдывает
Аноним 10/10/20 Суб 20:12:09 1827518980
>>1827504
Я уже честно сказать забыл, как базы изучал (15 лет прошло), поэтому всё айтишное теперь можно просто брать и смотреть и понимать, что там происходит. Конкретно это видео >>1827416 для новичка без нормальной базы будет просто развлекалово без какой-то практической ценности.

Немного подумал и согласился со сказанным. Я тоже в любой новой (не айти) области сначала кучу всего по диагонали пересматриваю, а потом уже пробую.
Аноним 10/10/20 Суб 20:33:12 1827528981
>>1827518
ну для новичка нужно смотреть с 44:15
хотя там весь доклад крут
Аноним 11/10/20 Вск 14:14:10 1827906982
.gif 1514Кб, 690x388
690x388
Зырьте какой забавный результат вышел.
Вот только я не понимаю почему.

Аноним 11/10/20 Вск 17:37:40 1827990983
Ребят подскажите, в MVC в модели описываются хоть иногда какие-то методы? Я не могу придумать как это использовалось бы.
Аноним 11/10/20 Вск 17:48:23 1827992984
>>1827990
модель это вся логика приложения. там вообще все, что не вид и не связующее звено в виде контроллера

Или ты про классы сущности?
Аноним 11/10/20 Вск 17:49:02 1827993985
>>1827990
Описываются.
Я просто думаю что ты немного путаешь модель с DTO. DTO может выступать моделью, но модель не ограничивается DTO'шкой. Валидаторы, запросы к базе и вообще бизнеслогика это все модель.
Аноним 11/10/20 Вск 18:10:49 1827999986
>>1827992
Наверное про классы сущности, да. Не так выразился.
Аноним 11/10/20 Вск 18:11:32 1828000987
>>1827993
Я почитаю про DTO, если это то, что имею ввиду - я отпишусь еще
Аноним 11/10/20 Вск 18:50:13 1828016988
>>1827999
а это типичная проблема
анемичные модели (не путать с dto) и rich model
"не путать с dto" потому что назначение dto следует из названия. А анемичная модель не цель, а следствие.
В rich model в саму модель пихают логику. Противоположный подход - когда логику распихивают по сервисам, а сама сущность в итоге вырождается в dto по своему виду. Еще и базы данных способствуют тому, чтобы были get;set; для мапинга.

но анемичная модель, хоть и выглядит, как dto, но не dto, а значит может иметь методы.
Я противник rich model, даже валидация и та зависти от контекста.
но тупые get;set; тоже не дело. Я предпочитаю чтобы модель имела контракт (что особенно важно в мультипотоке, да и вообще защищает от ошибок), что делает ее неподверженной "ой забыл учесть", но добавляет проблем с базой данных.

То есть я не меняю логически связанные поле1= и поле2= а придумываю какой то метод которые позволяют не делать публичных сеттеров
Аноним 11/10/20 Вск 19:04:56 1828023989
>>1828016
я кажется понял, что ты имеешь ввиду, а какие проблемы появляются с бд в таком случае?
Аноним 11/10/20 Вск 19:13:42 1828025990
>>1828023
ну база данных любит публичные сеттеры.
А если у меня их нет, то мне приходится изворачиваться с сохранением и чтением.

Тут варианты
- либо иметь гет сет и валидаторы в нужных местах, что данная заполненность модели валидна в данном контексте (и что никто кривыми руками не сломает ничего после валидатора)
- либо любое изменение модели не нарушит ее стейт, то есть минимум публичных сеттеров и апдейты через методы.
Аноним 11/10/20 Вск 19:14:47 1828026991
Аноним 11/10/20 Вск 19:19:45 1828027992
>>1828016
И в чем проблема того чтобы то что выглядит, ведет себя и по сути является DTO называть DTO?

Да и в чем проблема порезать всю логику на сервисы. Скажем вот так вот:
IRepository<T>; IValidator<T>;
В репозиторий мы в конструкторе отправляем валидатор:
Repository<T>(IValidator<T> validator)

и все, пусть делают там что хотят с объектом который получили из БД, но когда решат сохранить его то будет что-то типа:

void Update(T entity)
{
if(!_validator.IsValid(entity)) throw new Exception("Что-то пошло не так :)");
Update(entity);
Commit();
}

При этом этот же валидатор может быть использован много где. Удобно же. А если нужно будет добавить новый валидатор в одном месте - никаких проблем, ты добавляешь новый, и просто инжектишь его в то место где надо, а в остальных все остается по старому. То же самое и с репозиториями, допустим для тестовых нужд тебе достаточно чтобы у тебя все это дело было в виде обычного списка, нет нужды реальную БД запускать и все это там как-то реализовывать - никаких проблем если вот так вот делать не возникает. В общем, я не знаю.
Аноним 11/10/20 Вск 19:34:11 1828029993
>>1828027
>по сути является DTO называть DTO?
не является. выглядит, но не является. семантика иная.
в дто логики быть не должно
в анемичной модели она допустима
есть еще ValueObject который похож, но у него своя семантика.

про валидаторы я вообще хз о чем ты.

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

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

Я сторонник анемичной модели. с ней тупо проще кодить. Так что у меня модели с гетсет, сервисы с логикой, валидаторы. И такое в подавляющем большинстве софта.

Аноним 11/10/20 Вск 20:38:32 1828063994
Прочитал про UnitOfWork и не до конца понял.
Ну, т.е. что я понял. Штука нужна чтобы контекст у всех репозиториев был общий Зачем оно надо - впринципе ясно. А вот что не ясно, так это как этим правильно пользоваться.
Допустим я хочу чтобы в моем контроллере я работал с репозиторием товаров. Правильно ли я понимаю что нужно в конструктор передавать этот самый UnitOfWork, из него тащить репозиторий, как-то работать там с ним.
А что если репозиториев много?
Да и вообще, если в контексте EF рассматривать, получается же что DbContext это же и есть этот самый UnitOfWork. Или это не так?
В общем, можете объяснить, если не сложно?
Аноним 12/10/20 Пнд 03:17:11 1828243995
Помогите долбоёбу, пожалуйста, объясните на примере из говна и палок что такое регулярные выражения в этом вашем C#? Мне для лабы нужно написать прогу, которая высчитывала бы метрики Холстеда для кода на этом языке, а я черт знает сколько регулярок собственно в конкретном куске кода есть:

int a = 100;
while (a > 5)
{
System.Console.WriteLine(a);
a--;


Помогите, пожалуйста!
Аноним 12/10/20 Пнд 03:18:10 1828245996
>>1828243
Точку с запятой в конце не скопировал, блять, но я думаю, что вы это поняли. Прошу простить.
Аноним 12/10/20 Пнд 03:47:11 1828249997
>>1828243
Ты че-то напутал, чел. Тебе поди надо пересчитать сколько в данном куске кода используется переменных, операторов, пространств имен и прочих языковых выражений. Для автоматизации определения и подсчета можно использовать регулярные выражения. Вкратце про них можешь почитать по ссылке. Примеры кода можешь нагуглить сам: метрика Холстеда для c#.

https://metanit.com/sharp/tutorial/7.4.php
Аноним 12/10/20 Пнд 06:23:53 1828274998
>>1806517
Взломать можно всё, вопрос лишь в цене. Ваши гавноподделки и так ломать никто не будет, проще свою прогу написать с таким же функционалом и продавать, вот и всё. Вы вряд ли там пишите что-то такое, что никто бы не написал.
Аноним 12/10/20 Пнд 06:32:42 1828276999
>>1805060
> дарт, реакт нейтив, котлин, го


И на чем из этого можно 3д игру захуярить?
Аноним 12/10/20 Пнд 06:33:34 18282771000
>>1805726
На Джанго и Руби он Рэйлс
Аноним 12/10/20 Пнд 08:36:44 18283081001
>>1797054 (OP)
Какого хуя ещё нет возможности пилить код XAML в браузере?
Аноним 12/10/20 Пнд 19:55:45 18287541002
>>1814323
Учись говоришь, на чем учиться, чем конкретным заниматься, как опыта набраться, если на работе не так уж и много чего юзаешь?
Аноним 12/10/20 Пнд 23:04:03 18288561003
>>1828754
пиши велосипеды того что уже есть. в итоге получится говно, но навык очень сильно прокачаешь
Аноним 12/10/20 Пнд 23:48:29 18288871004
>>1828029
>в дто логики быть не должно
>в анемичной модели она допустима
>Anemic domain model is the use of a software domain model where the domain objects contain little or no business logic - https://en.wikipedia.org/wiki/Anemic_domain_model

В DTO тоже никто не запрещает добавить конструктор (который всякие сериализаторы смогут спокойно вызвать) и/или добавить пару методов, например Equals для своей версии сравнения двух объектов ДТО или HasErrors, HasRecords, Count для какого-нибудь generic response.
Аноним 12/10/20 Пнд 23:55:38 18288921005
>>1828754
Тоже самое было. Своё было пилить лень. Так и тупил несколько лет. Потом задолбало и начал ковырять свои проекты и читать кучу статей/смотреть видео. Потом методом перебора нашёл нормальную работу. Теперь норм.
Аноним 13/10/20 Втр 00:03:36 18288971006
>>1828063
https://www.youtube.com/watch?v=rtXpYpZdOzM
На, потрать один раз пол часа на просмотр и не делай больше никогда каши в своих проектах, от которой твои коллеги будут мечтать тебя убить.

>в моем контроллере я работал с репозиторием
Это вообще чума.
Контроллер должен быть туп как пробка. Он создаёт контракт для работы с твоим приложением. Это точка входа, которая описывает маршрут, по которому можно что-то запустить в твоём приложении, request/response models, возможные варианты ответов (200, 201, 204, 400, 401, 403, 404, 500). Стандартный такой набор, который почти любой контроллер должен иметь. Всё!

Остальное должно быть во всяких сервисах, хэндлерах, валидаторах, которые уже будут решать, откуда данные тянуть - HttpClient, DbContext, Redis, FileSystem, etc.
Аноним 13/10/20 Втр 00:20:43 18289031007
>>1828887
Все дело в семантике. Семантика это суть класса. Суть dto - передача данных. Анемичные модели не для передачи данных. Они используются как модели/сущности. Их можно использовать как dto, кидая их в сериализатор, но сериализовываться будет от хорошо до "дохера мороки".

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

И если вам захочется добавить конструктор чтобы "ну там вот оно было так вот я управляю там чем то", то это уже будет не DTO (семантика которого всего этого не иметь), а переход к POCO, который используется как DTO
HasErrors, HasRecords, Count также внесут семантику POCO
Аноним 13/10/20 Втр 15:43:03 18293301008
Ананасы, как найти стажировку на шарпе? Всё перерыл, нихуя нет. Живу в ДС2, везде требуются питонщики, жависты, онанисты, пхпмакаки, а православный шарп в хуй не впёрся всем.
Аноним 13/10/20 Втр 16:28:30 18294011009
>>1829330
Если ты студент и тебя работодатель не нашел сам, то никак.
Аноним 13/10/20 Втр 19:12:46 18294991010
изображение.png 17Кб, 817x163
817x163
В моем полумиллионнике никому не нужны шарписты без опыта. Как быть? Переезжать в Мааскву и пытать счастье там или может учить какой-нибудь другой язык? Мне кажется, зная c#, какую-нибудь джаву за полгода можно освоить минимально.
Аноним 13/10/20 Втр 19:32:46 18295091011
>>1829499
Зависит от того, что тебе удобнее. Если не против переехать - рабочий вариант. Можешь попробовать пойти на какие курсы при фирме с перспективой трудоустройства. Можешь за те же полгода сделать приличный пет-проект или пофрилансить для опыта. Можешь изучить другой язык, если хочешь. Я бы в таком порядке рассматривал возможности.
Аноним 13/10/20 Втр 19:43:12 18295131012
.png 3Кб, 464x39
464x39
.png 4Кб, 399x48
399x48
>>1829499
Хмммммм.
Хммммммммммммм.

А что значит за один проход?
Аноним 13/10/20 Втр 19:46:50 18295171013
Есть ли риск просадки по производительности, если я буду оборачивать единичные float'ы и doubl'ы в struct'ы, чтобы гарантированно не складывать метры с килограммами, например?
Аноним 13/10/20 Втр 19:55:04 18295261014
.png 4Кб, 381x47
381x47
>>1829517
АТО! Риск просадки есть всегда. Вот звезды не так сойдутся и GC решит в самый ответственный момент почистить кучу и вот тебе просадка.
А конкретно со структурой. Если будешь делать ее нормально, через указатели и не будешь постоянно упоковкой-распаковкой заниматься, то ничего такого быть не должно.
Аноним 13/10/20 Втр 20:02:28 18295301015
>>1829513
Типа с конца листа надо начинать и к 0 индексу идти.
Аноним 13/10/20 Втр 20:09:37 18295341016
Как нормально сконвертить IQueryable в IEnumerable? Если использую ToList() или AsEnumerable(), то данные меняются, как сделать, чтоб остались те же?
Аноним 13/10/20 Втр 20:16:03 18295371017
.png 4Кб, 683x119
683x119
>>1829534
Каким, образом-то они меняются? AsEnumereble просто возвращает сам себя. IQueryable это просто интерфейс который расширяет IEnumerable гарантируя по контракту что тот кто будет его имплементирует - реализует работу с провайдером и прочую залупу.
Аноним 14/10/20 Срд 01:16:25 18297021018
>>1829513
>за один проход
>RemoveAll

Проиграл с дебила.
Аноним 14/10/20 Срд 01:17:28 18297031019
>>1829517
Для этого структуры и сделаны, поэтому просадка будет минимальной.
Аноним 14/10/20 Срд 01:38:10 18297071020
Челы, если мне нужен нормальный хеш со строки типа

>"<span class="post__detailpart"><a href="/pr/res/1797054.html#1812758" id="1812758" class="post__reflink">№</a><a href="/pr/res/1797054.html#1812758" class="postbtn-reply-href post__reflink" data-num="1812758">1812758</a><span class="post__number">468</span></span>"

Имею в виду, это же просто стринг, а не кастомный класс. Значит и переопределять .GetHashCode() не нужно, верно?
Сап программач Аноним 14/10/20 Срд 01:42:08 18297101021
В общем пишу свой консольный круд на .Net Core 3.1 и заметил что программа ведет себя неадекватно. Если выполнять прогу в обычном режиме, всегда возвращается false при сравнении строк, а когда выполняю в дебаге пошагово то все работает норм. Никто не сталкивался с таким?
Если нужно то могу шебмку с демонстрацией запилить.
Аноним 14/10/20 Срд 01:48:43 18297121022
>>1829710
Забыл добавить, чтобы вы мне не говорили что я строки не так сравниваю, такая фигня с обычной логикой тоже наблюдается. Всегда когда взаимодействую с определенным свойством. Например проверяю через || превышает ли длинна строчных свойств обьекта какую-либо константу.
Аноним 14/10/20 Срд 02:03:14 18297151023
>>1829710
>.Net Core 3.1
На фреймворке тестил?
Аноним 14/10/20 Срд 02:05:01 18297161024
image 189Кб, 927x664
927x664
>>1829707
Имплементации стандартного GetHashCode могут меняться и хеш может не совпадать с хешем такой же строки созданной в старой версии проги либо в другом модуле. Если тебе пофиг на это то юзай дефолт
Аноним 14/10/20 Срд 02:06:46 18297191025
>>1829715
Нет, но щас протестирую
Аноним 14/10/20 Срд 02:17:49 18297231026
>>1829716
Спасибо за инфу.

>they should never be used as key fields in a collection

Это именно то, что я и планирую с ними делать, лул.
Аноним 14/10/20 Срд 02:39:32 18297301027
Аноним 14/10/20 Срд 03:09:07 18297311028
>>1829710
Показывай код, причин может быть несколько. Разница в дебаге и релизе в том, что в дебаге код компилируется без оптимизаций, т. е. твой говнокод в релизе мог быть обрезан в каком-то месте, поэтому результат отличается от результата в дебаге. Еще одной причиной может быть:
>в дебаге пошагово
Если ты используешь асинхронные функции, таски или потоки.
Аноним 14/10/20 Срд 03:25:09 18297331029
image 67Кб, 1166x708
1166x708
image 73Кб, 1419x718
1419x718
image 48Кб, 1254x370
1254x370
image 47Кб, 1328x323
1328x323
>>1829731
Никакой ассинхронщины.
Пикрил1 - собственно код обычного класса юзера. IsValid проверяет являются ли поля слишком короткими при этом не являясь заглушкой Nothing. Запускаю прогу, получаю пикрил2. Пошагово проматываю в отладчике до следующего юзера с заглушкой и получаю пикрил3. Входные данные одинаковые, результат другой
Аноним 14/10/20 Срд 03:26:47 18297341030
>>1829733
хм, скрин не удалило почему-то. Начинайте нумерацию с пикрил0 тогда
Аноним 14/10/20 Срд 03:33:21 18297351031
image 50Кб, 1342x356
1342x356
>>1829733
Вот еще для наглядности перемотал пошагово на того же юзера
Аноним 14/10/20 Срд 03:36:00 18297371032
>>1829733
Ну так дебил, возврат метода один и тот же будет, просто в оптимизированном коде отрицание добавилось к той каше которую ты написал в сравнении, потому что анализатор убрал условие после которого ничего не происходит.
Аноним 14/10/20 Срд 03:47:30 18297401033
image 60Кб, 677x596
677x596
>>1829737
почему тогда когда я хочу собрать список невалидных юзеров я получаю валидных с заглушками?
Аноним 14/10/20 Срд 03:55:39 18297421034
>>1829740
Ты правда настолько тупой? У тебя middle name у всех @ что по твоему условию невалидное поле, но почему то в твоей тупой голове оно стало валидным, может тогда в коде отразишь? Или будешь дальше ждать когда коробочка магическая твои мысли прочтет?
Аноним 14/10/20 Срд 04:11:08 18297451035
image 4Кб, 664x32
664x32
>>1829742
Блять, каким хуем заглушка, на которую стоит проверка это невалидное, мать его, поле? Там есть всякие точечки и другие знаки вместо имен и я и хочу получить таких юзеров. Если пройтись до первого такого юзера отладчиком, он не попадает как невалидный, а если пустить выполнение дальше то все остальные попадают
Аноним 14/10/20 Срд 04:56:37 18297521036
>>1829735
Чему у тебя этот Nothing то равен?
Аноним 14/10/20 Срд 07:16:50 18297821037
winget или chocolatey? Какой там менеджер пакетов для винды сейчас актуален?
Аноним 14/10/20 Срд 12:14:05 18299441038
image 97Кб, 1179x491
1179x491
Аноним 14/10/20 Срд 13:55:39 18300691039
>>1829733
>>1829735
>>1829944
Удачи, анон. Я сам сталкивался (правда во фреймворке, а не в коре) с тем, что условие, которое 100% должно выполняться, в дебаге работает, а в релизе просто проскакивается, как-будто этого кода вообще нет. Победить так и не смог.

В итоге пока этот код нужен был, приходилось юзать его в дебаге, что замедляло работу очень сильно. Хорошо хоть это был личный проект, а что бы я делал, будь это что-то серьёзнее - хз.
Аноним 14/10/20 Срд 15:20:36 18301671040
Привет, аноны. Я начинающий шарпист, только освоил азы и поставил перед собой цель надрочиться до элементарной фрилансерской работы. Офис мне не нужен, мне нужен конкретно фриланс. Так вот, технологий хуева туча и встаёт вопрос. Что из всего этого многообразия учить, чтобы как можно скорее взять первый заказ и получить 10 рублей 5 копеек на киви и для этого не пришлось перерыть все фриланс сайты в интернете? Пока думаю над ASP/Xamarin, однако также интересен юнити. Слышал где-то, что на ASP спрос больше всего, это правда? Двач помоги новичку
Аноним 14/10/20 Срд 17:43:57 18303791041
>>1829782
ещё scoop, все актуальны, майки пока над своим официальным работают
Аноним 14/10/20 Срд 17:49:16 18303851042
image.png 1456Кб, 2082x1021
2082x1021
Аноним 14/10/20 Срд 17:56:15 18303941043
>>1830385
зачем он когда есть conemu
Аноним 14/10/20 Срд 19:13:11 18304731044
Есть девайс. Читаю его регистры. Тереблю реле. Так вот. Чет код стал какой-то слишком объемный. Как можно порезать его нормально, чтобы было более абстрактно, а не: if((mask<<32)|incomingMessage > 0) DoCoolStuff(message.slice(0,64))
Аноним 14/10/20 Срд 19:14:04 18304761045
>>1830167
На шарпе из фриланса, доступного новичку - лабы в ВУЗе. Дрочи то что нужно для лаб в ВУЗах.
Аноним 14/10/20 Срд 19:51:54 18305231046
>>1830473
>if((mask<<32)|incomingMessage > 0)

Условия в if заменяй на переменные, названия которых будут объяснять то что происходит в коде. К примеру:
if (target < 32 && target > 1)
Делаешь:
var targetInAcceptableRange = target < 32 && target > 1;
if (targetInAcceptableRange)

Твой message.slice(0,64) можно поместить в переменную, которая опишет, что у тебя в этом слайсе с 0 по 64, чтобы можно было хотя бы представить что ты с ним в методе делаешь, если еще и метод назвать хорошо, то и код читать не придётся.
Аноним 14/10/20 Срд 20:28:58 18305691047
>>1830394
Пользовался conemu и cmder много лет. То же самое говорил, когда мне про новый WT задвигали. Теперь не знаю как без него жить. Очень удобно. Очень близко к zsh на маке + свои фишки.
Аноним 14/10/20 Срд 20:49:13 18306001048
А такое

return candidate is { IsVirtual: true, ReturnsVoid: true, Name: "Dispose", Parameters: { Length: 1 } parameters }

в какой версии шарпа ввели?
Аноним 14/10/20 Срд 22:16:13 18306821049
>>1830600
Pattern matching уже давно есть.
Аноним 14/10/20 Срд 22:37:41 18306901050
>>1830682
для switch да. но для is
Аноним 14/10/20 Срд 22:46:13 18306951051
Тупой вопрос.
Вот у меня куча запросов к стороннему АПИ. Допустим мне нужно по разным каталогам таваров по разным ценовым диапазона сделать запросы. Так вот, если делать это последовательно то оч медленно выходит. Я решил использовать PLINQ. И чет не совсем понимаю как мне потом аггрегировать результат. Не будут ли какие-то проблемы если я результат в List засовываю с помощью AddRange? Я просто пока что посмотрел на дебаге и все норм работает, но я в этом вашем паралельном программировании и прочих многопотоках не силен особо, но ждать пока 90 запросов каждый из которых возаращает по 1к+ответов - довольно долго, приписав AsParallel() в дебагере скорость в разы скаканула, но я боюсь, что в релизне могут быть подводные камни. Я знаю что можно залочить, но так же знаю что оно не всегда нужно. Вот мне и интересно, надо ли в этом случае и вообще как правильно-то этим AsParallel пользоваться.
Аноним 14/10/20 Срд 22:46:30 18306961052
>>1797054 (OP)
Посоветуйте книгу другую для новичка, на русском.
Аноним 14/10/20 Срд 22:57:15 18307021053
>>1830696
Для новичка я бы Шилдта или Албахари советовал, как справочник. Причем не обязательно последние версии.
А если практические знания, то как не хейтят тут, но метанит и professorweb - норм сайты чтобы с основами разобраться. Конечно там многие примеры - сферически кони в вакууме, но так-то у большинства обучающих материалов так, там хотя бы круды научишься делать.
Аноним 14/10/20 Срд 23:09:09 18307041054
Аноним 15/10/20 Чтв 00:10:09 18307311055
>>1830695
var httpClient = new HttpClient() { BaseAddress = "blah" }; //этот клиент должен создаваться один раз как singleton

var tasks = listOfUrls.Select(url => httpClient.GetAsync(url));
var result = await Task.WhenAll(tasks);

Как-то так. У тебя хттп запросы и так асинхронно запускаются. Вместо того, чтобы запускать их по одному, запускай разом все и потом получай список ответов.
Аноним 15/10/20 Чтв 02:04:05 18307731056
>>1830695
Неправильно, AsParallel используется для compute-bound операций, а у тебя i/o-bound, т. е. тебе будет достаточно асинхронности. Т. е. делай как этот >>1830731 анон посоветовал.
Аноним 15/10/20 Чтв 02:05:58 18307761057
>>1830696
Для новичка - Троелсен. У него и информация свежая, и изложение для новичка. Альбахири не читай, его нужно открывать когда ты уже пару книг для новичков прочитал и имеешь хоть какой-то практический опыт. Метанит и профессорвеб даже не открывай, это пустая трата времени, которая только в заблуждение тебя ввести может.
Аноним 15/10/20 Чтв 05:46:49 18308431058
>>1830731
> await Task.WhenAll
Аноны, я конечно самоучка и пишу только для себя, но поясните, почему использование подобных конструкций вообще важно?

Когда мне нужно выполнить асинхронно какой-то код, я просто создаю объекты Thread и выполняю их, руками контролируя выполнение и завершение потоков. Есть же семафоры, есть мьютексы. Никаких проблем никогда не возникало, грабли многопоточности как правило дают по голове один-два раза, а потом ты уже понимаешь, откуда идут проблемы и больше сам себе их не создаёшь. Так ли важно пользоваться всем этим синтаксическим сахаром?
Аноним 15/10/20 Чтв 06:01:55 18308541059
>>1830843
Ты не различаешь асинхронности и многопоточности, первое тратит меньше ресурсов, легче контролируется и уменьшает шанс выстрелить себе в ногу. Создание Thread для выполнения асинхронных операций это пустая трата процессорного времени и памяти, так как всё могло бы происходить в рамках одного потока. Для этого как раз и создан класс Task и TPL в целом.
Аноним 15/10/20 Чтв 06:09:19 18308581060
>>1830854
> Ты не различаешь асинхронности и многопоточности
Возможно, нужно почитать что-то на эту тему.

> Для этого как раз и создан класс Task и TPL в целом
Но раньше ведь жили без этого как-то.
Аноним 15/10/20 Чтв 06:18:16 18308611061
>>1830858
Жили, но использовали не Thread, а делегаты и AsyncResult, но они сложны и раздували код настолько, что использовали их только создатели библиотек и по-настоящему опытные программисты.
Аноним 15/10/20 Чтв 07:57:23 18308851062
>>1830861
> делегаты и AsyncResult
Я скорее даже не про ранний C#, а вообще. 20-25 лет назад тоже писали стабильное и быстрое ПО (лучше, чем сейчас), хотя у серьёзного программиста под винду были только плюсы и голый CreateThread из винапи. И ничего.
Аноним 15/10/20 Чтв 08:05:24 18308881063
Анон, как через entity framework юзать базу данных из ms access?

А то не могу нагулить, вечно на всяких стекфлоу тонны какой-то хуйни написаны вместо нормальных ссылок на гайды
Аноним 15/10/20 Чтв 10:25:49 18309441064
Аноним 15/10/20 Чтв 11:48:21 18310071065
Есть один ASP.NET Core сервис. Раньше был на 2.2, мы перенесли его на 3.1
Фронтом ему выступает IIS из Win Server 2019.
Единственное, что было изменено в конфигах:
startupTimeLimit="3600"
в web.config

Раньше (на 2.2) при загрузке приложения из Application Pool оно почти мгновенно грузится (секунд 20-40) и сайт сразу же после этого становится доступен.
Сейчас, на 3.1, сервис грузится те же 20-40 сек, а потом 10 минут сайт недоступен. То есть я делаю запрос, запрос зависает. Запрос развисает через 10 минут, и следующие запросы выполняются мгновенно. Запрос один и тот же и крайне дешёвый (10-15 мс). Я открываю логи, которые ведёт сама программа: в 10 первых минутах запроса там просто нет, то есть он даже не приходит. Через 10 минут они прилетают все скопом.

Что делать, как быть? В чём проблема? Как чинить?
Аноним 15/10/20 Чтв 12:02:15 18310131066
>>1830944
блин, я забыл написать что под net core. JetEntityFrameworkProvider не пашет
Аноним 15/10/20 Чтв 12:51:16 18310641067
>>1831007
Всё, вопрос снимается. Один из IHostedService очень долго исполнял StartAsync. Не знаю почему на 2.2 этого не было видно
Аноним 15/10/20 Чтв 14:25:29 18311941068
>>1830885
Раньше на алголе писали, и ничого!
Аноним 15/10/20 Чтв 17:16:17 18313531069
Анонче скинь пожалуйста пару тестовых заданий которые выдают джунам.
Аноним 15/10/20 Чтв 17:23:49 18313591070
>>1830885
20-25 лет назад у нас все клиенты тяжёлые были и сетевые запросы редко использовались. Но мультипоточность и работа с сетью была жёсткой магией и писалась на тыщи строк на всяких плюсах. И эти проги постоянно падали или отжирали все имеющиеся ресурсы и тормозили.

>Возможно, нужно почитать что-то на эту тему.
Не "возможно", а обязательно к прочтению. Щас ни одна прога (даже иногда калькуляторы, лол) без async/await не обходятся. Не зная как оно работает ты себе не только в ногу, но и в голову начнёшь выстреливать. Надо кучу статей перечитать и самому много всего перепробовать.
Аноним 15/10/20 Чтв 19:19:13 18314661071
>>1829733
Разворачивай проверку и делай дебаг каждого шага, если косяк только в релизе, то через старый добрый PRINT DEBUG смотришь.
Я подозреваю что у тебя там косяк с кодировками, на входе идет какой-нибудь utf-16, а строка у тебя в utf-8, выглядят одинаково, но по факту это разное.

>>1830069
Значит этот код не участвует в работе программы или в нем вечная false проверка, в результате оптимизация убила эту ветку кода.
Просто так код не выкидывается из работы, плюс дебаг не работает на релиз версии потому что код который ты пишешь может стать нечто другим и там тупо не на что ставить breakpoint.
Аноним 15/10/20 Чтв 19:56:10 18314961072
>>1831353
Ну. Мне вот дали протокол(что-то около 20 разных типов сообщений: регистрации, авторизации, проверки подлинности сервера, запроса канала и т.д.). Задание было в форме: Есть 100к роботов, они хотят общаться, но из-за того что они очень стеснительны - бояться общаться напрямую. Необходимо разработать приложение которое бы позволило им всем общаться через это самое приложение, а так же в случае необходимости - рассылать им всякое разное от людей. Форма диалога происходит в виде: Робот 1 присылает запрос о том что хочет выйти на связь с Роботом2, если робот2 сейчас подключен - создается зашифрованный канал, который передает сообщения, в случае если превышено время ожидания, либо один из роботов прислал сообщение о том что хочет разорвать общение, либо сообщение об ошибке, какнал закрывается. Так же необходимо было всякие проверки подлинности по этому протоколу, регистрации и прочую залупу.
А другому джуну что вместе со мной приходил - распарсить жсон попросили.
Аноним 15/10/20 Чтв 20:07:49 18315001073
>>1831466
> плюс дебаг не работает на релиз версии потому что код который ты пишешь может стать нечто другим и там тупо не на что ставить breakpoint.
Вот меня эта хуйня реально бесит. Серьезно. У меня просто на работе стоят шпиенские программы которые захватывают файлы собранные и минут еще 10 держат, и приходится постоянно переключаться то на релиз то на дебаг чтобы дебажить и на релизе приходится либо молиться чтобы тут-то остановилось, либо везде долбить в консольку чтобы отлаживать. Вот какого хуя-то? Почему нельзя сделать было по-человечески, чтобы все эти оптимизации только с каким-то флагом компиляции включались, а изначально то что ты написал - то и будет. Аааа, жопа.
Аноним 15/10/20 Чтв 20:20:24 18315091074
image.png 18Кб, 681x235
681x235
>>1831500
> Вот какого хуя-то? Почему нельзя сделать было по-человечески, чтобы все эти оптимизации только с каким-то флагом компиляции включались, а изначально то что ты написал - то и будет. Аааа, жопа.
Вообще-то можно, но какой смысл тогда в релизе?
Аноним 15/10/20 Чтв 21:24:13 18315341075
>>1831500
>Вот меня эта хуйня реально бесит
Прикол, сначала делают дизайн из костылей, а потом жалуются. Чё-то у меня за 10 лет такой хуйни не происходило.
Аноним 16/10/20 Птн 20:01:25 18322421076
Господи. Опять мне перекатывать? Я же опать обосрусь и будет уже три хештега. Давайте, няши, чего вы такие-то ленивые?
Аноним 16/10/20 Птн 21:00:42 18322811077
>>1832242
как перекат делается? просто создаёшь новый тред? а то тут шапку надо хорошо так подправить.
Аноним 16/10/20 Птн 23:50:01 18323731078
>>1811338
Ну и пиздец.
>        public virtual byte[] Encrypt(byte[] data, RSAEncryptionPadding padding) {
>            throw DerivedClassMustOverride();
>        }
>
>        public virtual byte[] Decrypt(byte[] data, RSAEncryptionPadding padding) {
>            throw DerivedClassMustOverride();
>        }
Это так много мне говорит, что охуеть просто. Я весь в просвещении. Меня настигло сатори и я познал Дзен, это этой хуйни.
Спасибо анон. В качестве благодарности, нихуя так и не поняв - вкину вам сюда - неразрывный пробел: Alt+255, вакаба ваш говнокод не жрала.
Аноним 16/10/20 Птн 23:52:15 18323751079
>>1832373
>я познал Дзен, ОТ этой НЕВЕДОМОЙ хуйни

>вкину вам сюда - неразрывный пробел: Alt+255, ЧТОБЫ вакаба
Нутыпонел.
Рили, проще запилить свою RSA на BigInteger.cs, чем это вот, хуй знает как написанное - юзать.
Аноним 17/10/20 Суб 12:17:55 18325601080
уже в шапку пора писать что нового в шарпе 9. немного осталось же
к тому же некоторый синтаксис из шарпа9 почему то работает в моей VS, где им и не пахло.
Аноним 17/10/20 Суб 19:50:26 18329551081
>>1832560
Потому что
>the current plan is that C# 9 will only be officially supported on .NET 5. However, in the current design records do not depend on any new CLR features, so many things may work in .NET Standard 2.0 in an unsupported fashion (similar to C# 8).
Аноним 17/10/20 Суб 20:17:09 18329821082
>>1832955
еще раз
как мой компилятор который не знает про шарп 9 (студия не превиев) компилирует код который использует фичи из шарп 9?
Аноним 17/10/20 Суб 21:08:47 18330661083
>>1831496
это вы в яндекс или в мейл собеседовались?
я на миддла просто мило попиздел с тимлидом о всякой дотнетщине и скинул ссылку на свой гитхаб, без всяких тестовых заданий
Аноним 17/10/20 Суб 22:52:18 18331311084
>>1833066
И что там у тебя на гитхабе? У меня есть большой проект, но он в приватном репозитории, так как приносит мне деньги.
Аноним 17/10/20 Суб 23:05:07 18331461085
>>1833066
Ну как. Там тестовое это выдавалось на время испытательного срока. Типа вот тебе задание, вот три месяца - справишься - берем, не справишься - посмотрим. Я сделал за неделю, меня взяли и сразу кинули в пекло, чел что парсил json не справился и его перевели отправили к тестировщикам. Воооооот.
Аноним 17/10/20 Суб 23:47:04 18331721086
>>1832982
.NET Standard 2.0 не требует превью и прочих net5 специфичных установок. Он у тебя уже давно есть.
Аноним 18/10/20 Вск 11:12:38 18333651087
>>1833172
да причем тут .NET Standard 2.0, который описывает по факту какие классы доступны и синтаксис языка, который должен разобрать компилятор и если он не знает, допустим, про инит свойства, то для него это будет "бэд синтакс"
Аноним 18/10/20 Вск 13:58:52 18334571088
Извините пожалуйста, а как в ASP.NET Core сделать динамический роутинг? По типу /users/:id. Что, вот прям искаропки ничего нет или как?
Аноним 18/10/20 Вск 14:46:37 18335141089
Аноны, я хочу подробно изучить работу сетей. Клиент - сервер. HTTP, шифрование и все в этом ключе с использованием шарпа. Подскажите, пожалуйста, качественные туториалы на эту тему
Аноним 18/10/20 Вск 16:04:27 18335581090
>>1833514
David Gourley, Brian Totty, Marjorie Sayer, Sailu Reddy, Anshu Aggarwal - HTTP_ The Definitive Guide-O'Reilly Media (2002)
Аноним 18/10/20 Вск 18:06:26 18336631091
Аноним 18/10/20 Вск 18:44:07 18336951092
Аноним 18/10/20 Вск 19:02:10 18337061093
>>1833365
Это чудо, чел. Звони в Ватикан.
Аноним 19/10/20 Пнд 17:58:13 18346901094
Сап, где в проекте находится папка с нугетсами?
В моем cs-ки, папка би и обж. Где нугетсы?
Аноним 19/10/20 Пнд 18:09:08 18347201095
Аноним 19/10/20 Пнд 18:26:53 18347551096
>>1834720
cпасибо
Интересно, если скопировать нугетсы с одного проекта на другой студия не будет ругаться?
Аноним 19/10/20 Пнд 18:46:31 18347801097
.jpg 2192Кб, 2670x3345
2670x3345
Допустим есть БД, из нее достается какая-то запись и обрабатывается в виде задачи. Одновременно может обрабатываться много записей. Так вот, я хочу иметь возможность отменить обработку записи по ID этой записи.
В чем собственно проблема? Я не совсем понимаю как это сделать не всрато. Пока что придумал так: Вот словарик, в нем ключ - id, а значение - CancellationTokenSource, если я решаю отменить задачу - смотрю есть ли в словарике такой ID, и если есть - отменяю. Но это выглядит во первых всрато, во-вторых получается что нужно заботиться о том чтобы удалить CancellationTokenSource после того как задача завершилась. Есть ли какой-то более изящный, элегантный и вообще правильный способ это все организовать?
Аноним 19/10/20 Пнд 21:16:29 18348551098
Реально важный вопрос.





Как поменять тему в студии?
Аноним 19/10/20 Пнд 21:53:49 18348791099
Аноним 19/10/20 Пнд 21:56:23 18348821100
>>1834780
Возьми https://www.hangfire.io и запускай задачи через него. Там можно задачу отменить и через UI и через API и по таймеру (timeout).
Аноним 19/10/20 Пнд 22:06:26 18348891101
1540555803317.PNG 18Кб, 775x239
775x239
Нуб на связи. Пишу простенький инвент для текст бокса и просто охуеваю с того, что некоторые строки кода просто не выполняются, будто их вовсе не существует. Причем одна строка может выполниться, а следующая точно такая же - нет. Я просто в охуе.
Пикрилейтед, там подписано, какие строки срабатывают, а какие нет. Причем без разницы, что там за инструкции, могу после замены текста поставить какой-нибудь тхреад.слип - один хуй он будет проигнорен.
Аноним 19/10/20 Пнд 22:33:08 18349011102
Аноним 19/10/20 Пнд 22:34:43 18349021103
>>1834780
решение как решение. нужно удалить - так удаляй
нет ничего всратого
Аноним 20/10/20 Втр 00:01:27 18349711104
Аноны, помогите пожалуйста дураку.
Как создать sql базу данных локально? Я читал гайды на метаните, смотрел на ютюбе и я не понимаю, где она создаётся и что я вообще делаю.
Короче, скажите просто как сохранить поля класса, чтобы при следующем запуске он их считывал и выводил. Заранее спасибо.
Аноним 20/10/20 Втр 00:20:33 18349961105
>>1834971
База данных на локальном сервере хранится, тебе нужен denwer или MySQL сервер
Смотря какую базу используешь
Аноним 20/10/20 Втр 00:22:13 18349991106
>>1834889
Звучит как шиза, завтра попробую твою штуку посмотреть, или если поймёшь в чем дело то пиши
Аноним 20/10/20 Втр 00:27:10 18350031107
>>1834996
> База данных на локальном сервере хранится, тебе нужен denwer или MySQL сервер
Т.е. без этого никак? А вот когда сборка программы будет, оно базу данных само создаст?
Нет, просто вроде бы был какой-то метод, чтобы без вот этого вот хранения на локальном сервере. Просто пишешь кода на sql и он подчиняется.
> Смотря какую базу используешь
Ну вот я и хотел спросить, какие варианты есть, и как бы сделали вы?
Аноним 20/10/20 Втр 00:30:51 18350101108
>>1835003
MySql и sql всегда хранятся на сервере
Либо локальном либо удаленном, а приложение запрашивает к нему доступ
Внутри приложения никакой базы нет

Но

Существует база данных которая хранится просто в файле
Гугли SQLite
Аноним 20/10/20 Втр 00:34:03 18350161109
>>1835010
> SQLite
Да, попробую так, спасибо.
Аноним 20/10/20 Втр 02:07:43 18350441110
IMG202010021424[...].jpg 42Кб, 1242x538
1242x538
Гайс, хочу устроиться на 50к+ со старта без рабочего опыта на .net core бэка. Могу в mvc, api, ef/sql, di, git, проектирование бд, безопасность, кэш, немного в деплой, немного в design patterns. Это реально с поверхностным знанием html/css и с нулевым знанием js? А то смотрю, все вакансии требуют плюсом фронт в виде жса+ангуляра/реакта/вью, тобишь все фулстеков хотят, дрочить дальше чтоль?
Аноним 20/10/20 Втр 02:10:59 18350451111
>>1835044
Забыл добавить, что еще непротухшая профильная вышка есть.
Аноним 20/10/20 Втр 02:12:00 18350471112
>>1835044
Учи js, без него найти что то будет сложно
Аноним 20/10/20 Втр 03:30:15 18350581113
>>1835047
Зато если все разом перестанут учить жс, то сразу станет быстро найти работу на чём-то другом.
Аноним 20/10/20 Втр 05:44:39 18350721114
>>1834999
>Звучит как шиза
Я вот и сам охуел с этого.
Сначала не было этих мессджбоксов, у меня просто селектор не ставился в курсор позицию, стал разбираться почему и выяснилось, что после присвоения текста часть кода просто не работает.

Единственное, что буквально только что перешел с 2017 на 2019, и изменил фреймворк до 4.7.2, до этого ничего такого не замечал.

>завтра попробую твою штуку посмотреть, или если поймёшь в чем дело то пиши
Спасибо.
Попробую тоже завтра-послезавтра на максимум упростить этот код, и надо будет в отдельном проекте попробовать и на разных студиях, может понятней будет.
Аноним 20/10/20 Втр 09:22:59 18351261115
Анончи, есть на C# простенький скриптовый язык с поддержкой переменных и функций? Типа:
var value = calc1(45, 77);
var result = calc_total(value, 1);

Чтобы я уже дальше мог под себя его допилить.
Аноним 20/10/20 Втр 10:06:45 18351401116
Аноним 20/10/20 Втр 10:36:26 18351481117
>>1835072
при всех хз проблемах дропай bin/obj/.vs
и выключай разные там Fody
и выключай оптимизацию кода
Аноним 20/10/20 Втр 11:19:23 18351651118
Имеется asp.net core приложение. Там есть кнопка "создать", по нажатию на которую создается сущность с дефолтными полями, помещается в БД, и происходит переход на страницу этой сущности по её id. И этот переход работает не всегда корректно. Когда выполняю прогу пошагово - работает, когда непошагово - не всегда работает. Заглянул в логи, обнаружил, что когда переход не работает, то после строки "Executed endpoint MyApp.API.Controllers.ThingController.GetThing (MyApp.API)" всегда отсутствует "Request finished in 130.0922ms 200 application/json; charset=utf-8". Есть ли способ насильно вызвать финиш реквеста?
Аноним 20/10/20 Втр 11:22:17 18351681119
>>1835165
ошибка, нужно не MyApp.API.Controllers.ThingController.GetThing, а CreateThing
Аноним 20/10/20 Втр 13:22:24 18352581120
>>1835168
А вот если перекат оформишь, то сразу заработает все как надо
проверено
Аноним 20/10/20 Втр 14:01:58 18352871121
Почему студия не видит пакет? Как это пофиксить?
на
using Namespace.PackageName;
даёт ошибку что
Using directive is unnecessary.
The type or namespace name PackageName does not exist in the namespace Namespace (are you missing an assembly reference?)

При том что нужный пакет есть в packages.
Аноним 20/10/20 Втр 14:18:49 18352971122
>>1834889
Короче когда ты делаешь remove и insert
Метод text changed вызывается ещё раз поэтому все ломается)
Аноним 20/10/20 Втр 14:22:56 18353031123
>>1835297
То есть ты пишешь в поле - вызывается текст ченж- внутри события ты меняешь текст в поле и снова вызывается текст ченж)
Аноним 20/10/20 Втр 16:09:47 18354201124
Аноним 20/10/20 Втр 16:11:01 18354211125
>>1835287
версия пакета не подходящая
Аноним 20/10/20 Втр 16:20:37 18354401126
>>1835421
Как понять какая подходящая?
Я ставлю последнюю стабильную, сейчас попробовал прошлогоднюю установить, но та же самая проблема.
Аноним 20/10/20 Втр 16:27:24 18354521127
>>1835287
clean solution, ребут студии, удаление .vs - если пакет есть то поможет
Аноним 20/10/20 Втр 16:59:10 18354801128
>>1835452
Не помогло.
А можно ли как-то запретить установку пакетов или ограничить?
Аноним 20/10/20 Втр 17:08:16 18354941129
>>1835480
то что есть в референсах то нюгет и затянет если может
чего нет - то не затянет
ну и конечно еще есть опциональные зависимости - будет тянуть если условие соблюдается. например у тебя либа на разные дотнеты и каждому варианту свой набор зависимостей
Аноним 20/10/20 Втр 17:23:47 18355061130
>>1835494
В общем с нагетсами какая то фигня.
Делюсь лайфхаком, как я сделал:
Правая мышка по References, Add Reference. Дальше Browse и выбираю из папки с нагетсами нужный референс вручную.
Почему то через нагетс менеджер не устанавливается, хз почему так.
Аноним 20/10/20 Втр 17:26:05 18355091131
Спасибо за ответы!
Добра и сотен нефти вам
Аноним 20/10/20 Втр 17:43:02 18355231132
>>1797054 (OP)
Почему, кстати, прчти все дотнетовские вакансии требуют жс, в отличие от джавовских?
Аноним 20/10/20 Втр 18:04:15 18355441133
>>1835440
Не совместима с версией используемого фреймворка. Также надо проверить что проекты в солюшене тоже друг с другом по версиям стыкуются.
А еще почисти на всякий слачай nuget cache (гугли команды) и сделай Clean Solution + Rebuild Solution.
Аноним 20/10/20 Втр 18:07:20 18355471134
>>1835523
Потому что основной используемый шаблон в дотнете был MVC, а там обазательно вьюшки с хтмл+жс+цсс.
А ещё раньше АПИ вообще не было, только веб формс.
Последние 3 года всех кого знаю пилят только АПИ точно также как и жава, а весь фронтенд в отдельном репо на всяких Ангулярах и Реактах.

В жаве же с фронтендом всегда туго было, поэтому на нём всегда только бэк пилили.
Аноним 20/10/20 Втр 18:11:45 18355501135
>>1835547
Но в итоге джависты освобождены от необходимости знать фронтенд, а шарписты - нет.
Аноним 20/10/20 Втр 18:39:34 18355591136
>>1835550
да глупости же. кто пишет апи или вообще веба не касается знать не знает фронтенд
вот я не знаю.
вернее я знаю его настолько чтобы знать что оно лютое говнище
Аноним 20/10/20 Втр 19:15:41 18355781137
Хм. А нормальная тема делать контроллеры дженериками или абстрактными классами? Чет просто с одной стороны, а чому бы нет, наследоваться то можно, все настроить тоже, но при этом я почему-то во всех примерах что другие люди кодят не замечал чтобы хотя бы какой-нибудь примитивный CRUD делали дженериком, постоянно хреначат для каждой сущности копипастные методы. Я чего-то не понимаю?
Аноним 20/10/20 Втр 20:25:00 18356181138
>>1835578
Контракт должен быть железным. Если тебе нужно чтобы твой ресурс могли
GET /api/my-resource/:id
то весь этот контракт нужно прямо указать. Никакой магии, никаких зависимостей, каждый контракт полностью самодостаточен.
Да, код получается больше, но поддерживать, читать и расширять такой код куда проще чем магическая динамичность.
Ты ещё gRPC не видел, там ещё с контрактами жёстче.

Вообще, как и в случае с протобафом для gRPC, ты можешь руками (или при помощи какого-нибудь постмэна) построить свою OpenAPI доку и потом применить генератор, который тебе Controllers + Actions оттуда напили. Добавишь потом custom Api Conventions и можно пользоваться.

Если в одном месте прям свербит и хочется динамичности, то иди копай GraphQL, который можно на прямую в твою БД отправить и клиент сам сможет выбрать оттуда что ему нужно.
Аноним 20/10/20 Втр 20:42:53 18356421139
>>1835303
>>1835297
>>1834889
>>1834999
>>1835072
>То есть ты пишешь в поле - вызывается текст ченж- внутри события ты меняешь текст в поле и снова вызывается текст ченж)
Да, все так, спасибо, тоже сейчас дошел до этого.

И как же мне теперь передвинуть курсор?
Главное до этого все работало, когда метод изменял исключительно последний символ, но теперь вообще не помню как я так изменял этот текст, чтобы ивент не вызывался второй раз.
Аноним 20/10/20 Втр 20:59:25 18356631140
>>1835303
>>1835297
>>1835642
Кароче можно так:
(sender as TextBox).TextChanged -= ChangeToDot_TextChangedEventForTextBox3;
(sender as TextBox).Text += "test";
(sender as TextBox).TextChanged += ChangeToDot_TextChangedEventForTextBox3;

нормальное решение, или уебанство?
Аноним 20/10/20 Втр 21:03:08 18356681141
>>1835663
события в шарпе сами по себе уебанство
и тех кто делает sender as нужно бить палками
Аноним 20/10/20 Втр 21:07:25 18356721142
>>1835668
>события в шарпе сами по себе уебанство
Почему? И как же такое без событий делать?(И зачем?)

>и тех кто делает sender as нужно бить палками
Почему и как надо? Изначально объявить объект текстбокса через sender as и уже к нему обращаться? Будет разница?
Аноним 20/10/20 Втр 21:13:17 18356781143
>>1835672
>Почему? И как же такое без событий делать?(И зачем?)
потому что чтобы отписаться нужно передать делегат, да не какой то, а тот же самый. А если он у тебя ламбда то придется ламбду ломать.
лучше когда какой нибудь IObservable подвариант где выдаст тебе токен, который ты потом Dispose вместе со всеми
А еще лучше lifetime передать и оно само отпишет отовсюду когда lifetime умрет

>Почему и как надо?
((TextBox)sender)
и везде так где сендер не ожидается нулл или другого типа. Получишь ошибку каста вместо невразумительного Null Reference Exception
если делаешь as - следующим делом проверяй на null. Иначе касти нормально

Аноним 20/10/20 Втр 21:17:43 18356801144
>>1835672
чет не ответил на "а как без событий"
ну тут никак если конечно не подключаешь reactive, а поскольку обычно нет, то да получается такая херь с +=/-=
Аноним 20/10/20 Втр 21:32:38 18356941145
Аноним 20/10/20 Втр 21:33:42 18356951146
.png 18Кб, 579x399
579x399
>>1834889
Попробовал чутка причесать твой код.
Аноним 20/10/20 Втр 21:44:18 18357121147
На контроллер передаются данные в FormData и вытаскиваются через FromForm в object. Как вытащить из этого object свойство? Приведение не хочет.
Аноним 20/10/20 Втр 21:53:12 18357281148
.png 9Кб, 556x237
556x237
Аноним 20/10/20 Втр 23:01:07 18357861149
>>1835694
ну так то в сендеры может и что то другое прилететь. вот у меня в WPF с табконтролом хрен знает что прилетало (кривая его реализация)
вот тогда нужен as и проверка на нулл
правда и тогда лучше is
Аноним 21/10/20 Срд 17:47:31 18362761150
image.png 60Кб, 1064x222
1064x222
Аноним 21/10/20 Срд 19:23:05 18363571151
Я вот чет не знаю. Вот я нахреначил классов которые в конструкторе только IServiceScopeFactory принимают, либо IServiceProvider, воооот. И теперь достаю все что мне нужно. Ну и в чем казалось бы проблема. А в том что, как мне кажется, это какое-то говнокодерство. В общем рассудите, говнокодерство это или нет. Опять же, плюс в том что как бы получается что конструктор довольно простой, то что нужно классу в общем - достаю из провайдера, если такого нет - сразу ловлю исключение, то что нужно только в рамках метода - из scopeFactory. Пользоваться этим действительно оч удобно, но вот с точки зрения класса как какой-то самостоятельной сущности, ну хз. Опять же, в чем плюс, допустим я в Startup уже дал строку подключения и теперь если подключатсья к БД нужно только в рамках метода, мне не нужно передавать строку подключения в класс, не нужно над многими другими штуками думать. Короче, я не знаю. Вроде так писать удобно, но меня не покидает ощущение, что это как-то неправильно, типа вся эта взаимосвязь сущностей остается, но становится неявной и уже просто взглянув на то как объект представлен на диаграмме классов - остается только по названию методов и самого класса догадываться что оно собственно делает.
Аноним 21/10/20 Срд 19:28:13 18363621152
>>1836357
угу. использование IoC контейнера как сервис локатор считается антипаттерном. По возможности класс должен принимать, что ему реально нужно
Аноним 21/10/20 Срд 22:25:00 18364681153
ТАкой вот вопрос:
Локально на проекте подключаюсь к задеплоиной БД, стянут последний мастер с фронта и бека. Есть функционал по добавлению роли для участника какого то клуба. Локально все работает, но вот на задеплоином сайте почему то вылетает ошибки: System.InvalidOperationException: Role IJ����� ������� does not exist.
at Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`9.AddToRoleAsync(TUser user, String normalizedRoleName, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Identity.UserManager`1.AddToRoleAsync(TUser user, String role)

Как это вообще возможно и в чем может быть проблема??
Аноним 21/10/20 Срд 22:40:20 18364781154
.png 141Кб, 1928x1058
1928x1058
Тут не любят когда я на дропбокс заливаю, потому вот вам скриншот.

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

Так вот, мне хочется проекте добавить возможность посмотреть статус работы чтобы на фронтенде рисовать красивый прогрессбар. Как это можно сделать красиво? Если скажем я сделаю класс: WorkStatusObserver в этом классе у нас будет словарь id-WorkProgress, в который буду добавлять на каждой итерации цикла объект WorkProgress пусть это будет простой объект, в котором при создании указываем максимальное значение и затем обновляя текущее и таким образом можно посмотреть % выполнения и обновлять его по ходу выполнения работы, это будет нормальным решением? Допустим этот класс(WorkStatusObserver) будет синглтоном, таким образом я буду из контроллера иметь возможность посмотреть сколько там осталось еще пока работа завершится. Норм это, или не?
Аноним 21/10/20 Срд 22:54:34 18364901155
>>1836468
Что-нибудь с CultureInfo или подобным.
Аноним 22/10/20 Чтв 08:53:30 18366451156
>>1797054 (OP)
Есть серьёзный философский вопрос, поэтому задам его здесь.
Как изменить статичный четырехмерный объект?
Аноним 22/10/20 Чтв 08:54:41 18366461157
>>1836645
Желательно приватный - private static obj = {[бла-бла - четырехмерие]};
Аноним 22/10/20 Чтв 09:35:42 18366581158
Аноним 22/10/20 Чтв 10:05:55 18366651159
Сааамый душный тред на всем дваче. Такое ощущение, что все анальщики-программисты тут
Аноним 22/10/20 Чтв 11:13:40 18367201160
Есть смысл вкатываться в .NET Core без .NET Framework?
Сам студент, хочу скатиться с джавы.
Аноним 22/10/20 Чтв 11:57:09 18367431161
>>1836658
А если он из-за статичности этой, своей - неуправляемый и принципиально-неисправимый?
Аноним 22/10/20 Чтв 12:03:22 18367471162
>>1836645
При помощи рефлексии
Аноним 22/10/20 Чтв 12:05:24 18367511163
Аноним 22/10/20 Чтв 13:29:28 18368471164
Привет. Нужно по интернету и одного веб-сервиса посылать какую-то работу на другой сервис для выполнения. Пример: веб-сервис 1, на нем есть, допустим, Class1 : IJob и Class2 : IJob ... Сам IJob содержит Task DoJob(); .
Нужно послать на сервис 2 объект класса ClassХ. Сервис 2 имеет такой же IJob, и должен запустить DoJob() полученного объекта.
Как примерно такое сделать? Может есть готовый фреймворк? Или вручную только сериализовать и рефлексировать? Или еще какой подход есть для таких задач?
Аноним 22/10/20 Чтв 13:33:43 18368511165
>>1836847
На всякий случай уточню, сервис 2 ничего не знает про имплементации IJob в сервисе 1.
Аноним 22/10/20 Чтв 14:59:56 18369391166
Аноны, есть ли где-то список совместимых пакетов (именно версии интересуют) с определенной версией .NetFramework?
Чтобы было прямо указано что например с NetFramework 4 работает библиотека Xxxx версии 1.02, Yyyy версии 4.1 и тд.
Аноним 22/10/20 Чтв 15:05:42 18369431167
>>1797054 (OP)
Кто нибудь проходил этот туториал? https://docs.microsoft.com/ru-ru/aspnet/core/tutorials/razor-pages/?view=aspnetcore-3.1
На 2 этапе возникает ошибка, на этом моменте https://docs.microsoft.com/ru-ru/aspnet/core/tutorials/razor-pages/model?view=aspnetcore-3.1&tabs=visual-studio-code#scaffold-the-movie-model ввожу в терминал dotnet aspnet-codegenerator razorpage -m Movie -dc RazorPagesMovieContext -udl -outDir Pages/Movies --referenceScriptLibraries а в ответ сначала было, что не может найти фреймворк 3.1, хотя он у меня установлен, а после когда поставил более старые либы, начал выдавать, что команда не найдена или не найден файл.
Аноним 22/10/20 Чтв 15:07:27 18369441168
>>1836743
ты нормально то напиши что надо
может вместо static имелся ввиду readonly?
Аноним 22/10/20 Чтв 16:25:14 18370071169
Аноним 22/10/20 Чтв 16:26:36 18370091170
>>1836720
Про .NET Framework желательно забыть как про страшный сон. Только кор или сразу dotnet 5.
Аноним 22/10/20 Чтв 16:28:25 18370111171
image.png 10Кб, 561x225
561x225
>>1836939
В самом nuget прописано, на каких версиях оно работает
Аноним 22/10/20 Чтв 16:29:59 18370121172
>>1836943
выдай сюда результат команды dotnet --info
Аноним 22/10/20 Чтв 16:40:10 18370211173
>>1836944
А какая разница? Как ты собрался создавать экземпляр статичного класса?
Аноним 22/10/20 Чтв 20:26:35 18372121174
image.png 299Кб, 944x858
944x858
>>1797054 (OP)
В общем есть задание, каждое кол-во времени создаются детали.
Как их лучше хранить? Думал в лист<стринг> сохранять "A","B" if timeHasCome, но потом парсить будет некрасиво.
Аноним 22/10/20 Чтв 21:10:58 18372321175
>>1837212
Это же тупо задача из линейного программирования. Храни в массивчике и не парься.
Аноним 22/10/20 Чтв 21:39:35 18372441176
>>1837212
Охуеваю с таких постановок задач. Пиздец, я пока читал - запутался, пришлось перечитать 10 раз чтобы понять что за 4 этап и что вообще от меня хотят.
Нет бы по человечески: G(w0) = F(w1)+ E(w2) + 8 + rand(-3, 3). Нет, блядь, каждый раз какой-то еблан берет и вот такую вот простыню напишет и ты больше времени не на решение а на формазизацию задачи тратишь. С этой хуйни еще в школе горело. Нахуй и в пизду.
Аноним 22/10/20 Чтв 22:13:38 18372631177
Ребятушки. Не бейте тапками.
В общем, хочу из одного IHostedService посылать запросы к своим же контроллерам. Но т.к. эта фигня делается исключительно чтобы в этом сервисе не нагружать и без того тяжелый сервис всеми этими контекстами с бд, не хочу чтобы это api торчало наружу. Что и где прописать чтобы исключить возможность запроса из вне. В идеале вообще сделать это апи доступным только изнутри приложения. Я гуглил, все решения это в мидлваре прописать контроллеру ограничения, но блин, а вдруг злоумышленник - ебучий сисадмин, который вертит на хую эти запросы к самому себе и режет их. Просто лично мне это было бы ну очень удобно, потому что в синглтон не хочется передавать IServiceScopeFactory, а из БД таки хочется достать данные. Конечно, я могу просто создать еще один синглточнчик в котором буду хранить строку подключения и создавать контекст так.
Аноним 22/10/20 Чтв 22:21:51 18372661178
>>1837012
>выдай сюда результат команды dotnet --info
Пакет SDK для .NET Core (отражающий любой global.json):
Version: 3.1.108
Commit: c423b556b5

Среда выполнения:
OS Name: manjaro
OS Version:
OS Platform: Linux
RID: arch-x64
Base Path: /usr/share/dotnet/sdk/3.1.108/

Host (useful for support):
Version: 3.1.8
Commit: 05a0c8f6b1

.NET Core SDKs installed:
3.1.108 [/usr/share/dotnet/sdk]

.NET Core runtimes installed:
Microsoft.NETCore.App 3.1.8 [/usr/share/dotnet/shared/Microsoft.NETCore.App]

To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
Аноним 22/10/20 Чтв 22:27:46 18372721179
>>1837263
>хочу из одного IHostedService посылать запросы к своим же контроллерам
Зачем? Проблема XY
Аноним 22/10/20 Чтв 22:44:02 18372891180
>>1837272
> Зачем?
Чтобы не передавать в синглтон IScopeFactory или не делать дргой синглтон, который будет делать мне контексты к БД. Я же написал вроде. В контроллер, т.к. он scoped я могу спокойно передать нужный мне контекст, затем просто сделаю запрос к нему, получу нужные мне данные и буду работать дальше.
Ладно, чтобы было понятно. Есть сервис, он должен брать из БД табличку с расписанием, смотреть время, если пришло время для следующего запуска запросить из БД все объекты которые привязаны к этому расписанию и делать запросы на основании этих объектов к сторонним ресурсам, получив ответы - обновлять значения в БД. Ну и я вот хочу убрать из этого класса этот IScopeFactory, тогда в этом классе будет только методы Start/Stop/DoWork, в DoWork я и буду делать всю эту поеботу. Зачем оно надо? А вот надо, нужно смотреть цены на товаров раз в 12 часов в некоторых интернет магазинах и кидать оповещение если цена снизилась людям которые подписались на рассылку. Как это сделать иначе - я не придумал.
Аноним 22/10/20 Чтв 22:54:55 18373041181
>>1837289
то есть вместо прямого очевидного и простого решения лезть в базу данных из своего вечноживущего сервиса ты хочешь нагородить сверхсложный огород пытаясь дергать внешний контроллер
Аноним 22/10/20 Чтв 23:06:18 18373181182
>>1837304
Ну да. А что, это неправильно? Я просто не понимаю. То говорят что передавать контекст напрямоу плохо, то что ручками его собирать, то что IScopeFactory в конструкторе - говнокод. Я уже не знаю как делать чтобы правильно было. Делаешь очивидно и просто - уууу, в лоб зарешал, ууу. Пытаешься делать не так - уууу, нагородил огород. Короче, не знаю уже.
Аноним 22/10/20 Чтв 23:48:05 18373491183
>>1837318
Нужно избегать использования Service Locator, потому что он скрывает знание "что конкретно нужно этому классу". Это такая неявная зависимость и приходится рыть код, чтобы понять что ему надо то. Может он раз в 100 лет попробует достать из локатора какую то зависимость, а у тебя ее нет в контейнере и все рухнет.

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

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

Я не пользуюсь и не знаю EF но по примерам складывается ощущение, что прямо на месте создают/достают из контейнера. Я хз такие практики - у меня от них глаз дергается.
Аноним 23/10/20 Птн 00:21:29 18373631184
>>1837012
Почему то команда dotnet aspnet-codegenerator не работает, хотя dotnet tool install dotnet-aspnet-codegenerator говорит, что уже установлен.
Аноним 23/10/20 Птн 04:16:55 18374401185
>>1837363
Установи его глобально, вроде -g флаг был.
Аноним 23/10/20 Птн 05:34:09 18374501186
>>1837440
Глобально установлен. Команда заработала, но отвечает хуйню Building project ...
It was not possible to find any compatible framework version
The framework 'Microsoft.AspNetCore.App', version '3.1.0' was not found.
- No frameworks were found.

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
- https://aka.ms/dotnet-core-applaunch?framework=Microsoft.AspNetCore.App&framework_version=3.1.0&arch=x64&rid=manjaro-x64
RunTime 00:00:18.15
Аноним 23/10/20 Птн 06:11:26 18374551187
>>1837021
ничего не было сказано про статический класс, ты написал статический объект
а так, Zhopa.Xer = 2
Аноним 23/10/20 Птн 06:13:12 18374561188
>>1836943
>>1837012
>>1837440
Все решилось. Оказывается, asp.net core runtime ставится отдельным пакетом, а он у меня не был установлен.
Аноним 23/10/20 Птн 09:39:24 18375041189
Сап, шарпач!
Курю мануалы по авалонии и возник вопрос.
Почему в построении интерфейсов назрели две крайности?
1. Таскаешь мышкой компоненты по форме, мышкой же размещаешь, мышкой же в инспекторе сбоку настраиваешь свойства.
2. Всю разметку печатаешь ручками в специальном языке разметки, при поддержке твоей ИДЕ тебе показывается конечный результат, в котором ничего нельзя подправить мышкой.
Я не нашел сбалансированного решения, наподобие как в автокадах всевозможных, когда ты можешь и мышкой таскать и в командном процессоре снизу показаны команды, которыми строится интерфейс и при желании и умении, ты можешь ручками продолжать его строить, вводя новые команды. Воркфлоу выглядит так, пишешь ему что-то типа button name="OK" text="{bind MyOKCaption} а потом можешь мышкой подвинуть появившуюся кнопку и в этом поле команда станет выглядеть например так button name="OK" text="{bind MyOKCaption} margin=point(16, 303)

Если такие CAD-style-решения есть, ткните носом, позязя.
Аноним 23/10/20 Птн 11:41:53 18375721190
>>1837504
ну авалонию делают любители. они не могут сделать полноценный редактор
да даже майки со своим WPF дизайнером не могут сделать такое

в итоге все ручками привычно
Аноним 23/10/20 Птн 11:46:41 18375731191
>>1837572
WPF так всё и работает, но я не представляю как этим пользоваться кто-то в здравом уме будет, потому что это своего рода костыли для долбоеба, который не может разместить элементы интерфейса по контейнерам.
Аноним 23/10/20 Птн 12:08:48 18375811192
Хочу через рефлексию подобрать подходящий метод для вызова. Проблема в том, что стандартный GetMethod бесполезен.

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

Пока думаю делать так:
- первый проход по методам - строго сравниваем параметры (type == type)
- второй проход - используем IsAssignableFrom, но учитываем только generic типы
- третий проход - используем IsAssignableFrom

- проходим по получившемуся списку методов, подбираем первый подходящий возвращаемый тип и возвращаем метод
Аноним 23/10/20 Птн 12:11:17 18375831193
>>1837581
ну так GetMethodS и дальше выбирай из них
Аноним 23/10/20 Птн 12:16:33 18375861194
>>1837583
Это понятно. Может есть способ проще... Мне нужен такой же подбор по параметрам и возвращаемому типу, как это сделано в самом C#. Это нужно для скриптового языка.
Аноним 23/10/20 Птн 14:54:11 18376891195
>>1837586
ну а какая разница? знаешь типы, методы есть - выбирай из них. Для экономии времени можешь составить свой словарь "сигнатура - метод" и он будет моментально тебе находить по сигнатуре
Аноним 23/10/20 Птн 18:06:12 18378651196
>>1837504
Для drag-and-drop пользуйся win forms.
От создайния интерфейсов мышкой не зря отказались. Это вообще теперь industry standard - не пользоваться drag-n-drop разработкой. Такой способ только для быстрого прототипирования может подойти или для домашней поделки.
Аноним 23/10/20 Птн 18:35:12 18378921197
image.png 34Кб, 853x235
853x235
загадка Жака Фреско: почему первый цикл райдер предлагает заменить на линк, а второй нет?
Аноним 23/10/20 Птн 18:38:20 18378961198
215985.jpg 32Кб, 768x576
768x576
>>1837689
>методы есть - выбирай из них
Легко сказать... Там столько подводных всплыло с дженерик-типами. Написал не слишком сложный поиск. Добавил ещё сортировку по "весу". Для скрипта должно хватить, если я всё учёл.
https://pastebin.com/YW9N8xbP
Аноним 23/10/20 Птн 19:01:47 18379111199
>>1837892
Потому что парсер наткнулся на этот кусок и дальше не стал строить дерево.

А вообще, как по мне заменять это на LINQ - плохая практика. я вот сам попервой нахреначил кучу хуйни так, а потом хуяк и этим пользоваться менее удобно оказалось и для понимания оно сложнее, особенно теми кто не особо за LINQ шарит, например бывшие джависты-пхпшники, они сразу начинают - ууууу, нипанятна.
Аноним 23/10/20 Птн 19:10:53 18379211200
>>1837504
>>1837573
А че в html/css по другому как то интерфейс строят? Никто не жалуется.
Аноним 23/10/20 Птн 19:18:19 18379311201
Аноним 23/10/20 Птн 19:23:11 18379371202
>>1837921
В html/css никто не двигает элементы мышкой. Маржин и паддинг нужно устанавливать у родительского элемена, дочерние элементы уже выравниваются автоматически. Тоже самое и в WPF делают. Это удобно тем, что если у тебя, к примеру, 5 последовательных эелемнтов и ты их расположил двигая мышкой т. е. явным указанием маржина, а иногда и трансформирования, то если тебе нужно будет передвинуть один элемент, то менять эти маржины придётся у всех 5 элементов.
Аноним 24/10/20 Суб 08:40:03 18383011203
Сап.
Есть одна БД, в ней около 10 таблиц, в каждой около 10 столбцов, все таблицы записаны в csv. Суть: нужно по запросу вида "таблицанейм.столбецнейм" получать столбец/строку из него. Я решил под таблицы написать модели и быстро осознал, что на каждую придется написать строк 100 чисто логики парсинга, и то полнейший костыльный пиздец выйдет. Так вот: как эту хуйню нормально запарсить?
Про библиотеки, которые это сделают за меня, я в курсе, но шараге на их существование (ровно как и на существование половины стандартных библиотек, лол) поебать. Нужно как-то свою реализацию написать.
Аноним 24/10/20 Суб 09:24:53 18383111204
>>1797054 (OP)
Как создать Json-объект?
Что-то наподобие
>new Object[]{"key1": value1, "key2": value2};
А?
Аноним 24/10/20 Суб 09:28:46 18383131205
>>1838301
У тебя проблема с тем, чтоб распарсить csv? Если сами файлы ошибок не содержат, то задача тривиальная.
Аноним 24/10/20 Суб 09:35:41 18383151206
>>1838311
new string(char[]{'"','k','e','y','"',':','v','a','l'})
Аноним 24/10/20 Суб 09:36:57 18383161207
>>1838313
У меня проблема с тем, что мне нужно вручную как-то забиндить распаршенные данные к моделям, при этом таблиц дохуя, столбцов дохуя, типы данных у столбцов разные. У меня нет идей, как это сделать нормально, а не через тысячу ифов.
Аноним 24/10/20 Суб 09:41:51 18383191208
>>1838315
Ты создал строчку.

Всё, я нашёл уже:
>    Dictionary<string, object> yourObjects = new Dictionary<string, object>(){
>            ["key1"] = 1
>        ,   ["key2"] = "value2"
>        }
>    ;
>//    yourObjects["key1"] = 1;
>//    yourObjects["key2"] = "value2";
>Console.WriteLine(yourObjects["key1"].ToString());
>Console.WriteLine(yourObjects["key2"].ToString());
Аноним 24/10/20 Суб 09:45:16 18383221209
>>1838316
Парсишь csv сначала в словарь где ключ это название заголовка, а значение список из значений таблицы под этим заголовком. Переводишь все щначения при помощи tryparse
Аноним 24/10/20 Суб 09:45:56 18383241210
>>1838319
А ты что создал? Всегда думал, что ToString строку возвращает.
Аноним 24/10/20 Суб 10:02:46 18383311211
Используется ли до сих пор ASP.NET, или все уже перешли/мигрировали на ASP.NET Core? Каков шанс, что при устройстве на работу джуном посадят на не-кор ASP.NET проект?
Аноним 24/10/20 Суб 10:09:53 18383351212
>>1838331
На коре только новые модули/сервисы, всё остальное на фреймворке. Никто не будет бежать переписывать всю кодовую базу на кор.
Аноним 24/10/20 Суб 11:04:17 18383811213
>>1838335
>>1838331
Откровенно говоря, и старье переписывается. Но старого фреймворк кода еще горы, и джуны еще много лет будут за него садится. Знать нужно и фреймворк, и кор.
Аноним 24/10/20 Суб 15:41:51 18386751214
>>1835547
>Последние 3 года всех кого знаю пилят только АПИ точно также как и жава, а весь фронтенд в отдельном репо на всяких Ангулярах и Реактах.
Сейчас же в ASP.NET Core есть Blazor Server (WebAssembly на вебсокетах).
Аноним 24/10/20 Суб 20:11:44 18389181215
>>1838675
Он только только продакшн френдли стал. И он не для всех проектов подойдёт. Для тяжёлых клиентов надо однозначно Blazor выбирать вместо всяких реактов/ангуляров. Для остального надо думать.
Аноним 24/10/20 Суб 23:42:15 18390371216
>>1838324
Я содал словарь с разными типами.
Да, ToString() возвращает строку из числа и строки, чтобы показать её, эту строку - в консоли.
Аноним 25/10/20 Вск 06:22:23 18391381217
>>1838918
>И он не для всех проектов подойдёт.
Почему не для всех? По вебсокетам дешевле общаться и отзывчивость лучше. Есть автоматическое переподключение. Если вебсокеты недоступны, то переключается на SSE или Long polling. Можно пересылать данные и файлы в бинарном формате MessagePack.
Аноним 25/10/20 Вск 14:01:19 18392711218
>>1838311
var obj = new { key1 = "value1", key2 = "value2" }
Аноним 25/10/20 Вск 21:28:02 18397201219
На с# можно написать шутер?
Аноним 25/10/20 Вск 21:28:25 18397231220
>>1839720
По типу варфейса, кс или пупк
Аноним 25/10/20 Вск 21:42:25 18397391221
>>1839720
Escape from Tarkov на C# написан.
Аноним 25/10/20 Вск 23:17:09 18398001222
Когда дотнет 5?
Аноним 25/10/20 Вск 23:17:55 18398021223
Аноним 26/10/20 Пнд 00:59:54 18398491224
>>1839739
Это многое объясняет...
Аноним 26/10/20 Пнд 04:20:16 18398881225
Аноним 26/10/20 Пнд 04:31:29 18398891226
>>1839800
скора. вроде бы даже в ноябре будет презентация
Аноним 26/10/20 Пнд 04:41:21 18398921227
Аноним 26/10/20 Пнд 09:29:55 18399261228
>>1837504
Сап, шарпач! Это снова я! Все вышеотвеченные ответы понял, принял.

Возникла новая проблема. Читаю документацию по этой авалонии, сделанной любителями и пытаюсь воспроизводить хеллоуворлд. И первое что я пытаюсь сделать, чтобы при нажатии на кнопку вызывалось событие. Мне предлагают три варианта:
1. Прибиндить простую команду.
2. Прибиндить команду Reactive UI (кстати, добавочный вопрос, кем сделан этот и может лучше мне его рассмотреть? Почему вообще авалония эта к нему цепляется, как к зависимости? Не, я конечно и сам погуглю, но и анона бы почитал)
3. Пробросить нормальное классическое событие. И вот тут возникает проблема. Когда я пишу <Button Content="Click Me" Click="OnClick"> клик подчёркивается и пишет, что unable to find suitable setter or adder bla-bla-bla... Я что, должен что-то подключить? Но я делаю в точности по референсу в туториале. Ожидается, что такая фундаментальная вещь, как обработчик нажатия кнопки, должна быть подключена из коробки. Или нет? Хуета какая-то, простихоспаде.
Аноним 26/10/20 Пнд 13:28:12 18400461229
>>1839926
1 угу бинди команды
2 авалония умеет понимать Reactive UI - его команды свойства и так далее правильно.
3 когда пробовал (давно) то было вот https://github.com/AvaloniaUI/Avalonia/issues/1153
щас не знаю. да и вообще нужно не click а tapped вроде бы http://reference.avaloniaui.net/api/Avalonia.Input/InputElement/1F79D61A

выбор между 1 и 2 фломастеры. 2 получишь так, а 1 самому придется фреймворк писать. Для меня это изи и я выбрал 1. но потом ничего не выбрал, потому что мыльность шрифтов в авалонии под винду нет лечения.
Аноним 26/10/20 Пнд 14:33:32 18400891230
А может кто-то из анонов протестить мой проект на предмет ошибок?
в замен могу оставить тестовый акк и 50 гигов квоты на нем
Аноним 26/10/20 Пнд 14:52:44 18400991231
Есть класс, в котором хранится переменная, которую я хочу изменять из другого класса. Если я создаю экземпляр класса
MyClass Class = new MyClass();
через него обращаюсь к переменной и изменяю её, то в следующий раз у неё оказывается то же, неизменённое значение. Как это сделать нормально?
Аноним 26/10/20 Пнд 15:17:08 18401221232
>>1840099
MyClass Class = new MyClass(); создает локальный инстанс. потому никто другой ее не видит - она каждый раз создается. нужно присвоить ее внешнему чему нибудь
Аноним 26/10/20 Пнд 15:25:26 18401311233
>>1840122
Я уже понял, что я постоянно копии создаю. Но как это решить нормально?
Аноним 26/10/20 Пнд 15:29:00 18401321234
>>1840131
нет никакой особой магии. те же правила, что в и однопотоке
представь что ты вызываешь метод с этим MyClass Class = new MyClass(); из одного потока подряд. И подумай как бы ты сохранял переменную между вызовами. Вот это и делай
Аноним 26/10/20 Пнд 15:32:11 18401331235
>>1840099
Если ты под "переменная" имеешь ввиду поле/свойство класса, то просто сделай это поле/свойство статичным.
Аноним 26/10/20 Пнд 15:58:45 18401441236
Аноним 26/10/20 Пнд 18:08:16 18402791237
>>1840144
Это был первый шаг на пути к говнокоду и неуправляемой архитектуре, которую надо будет с нуля каждые 2 года переписывать.
Аноним 26/10/20 Пнд 21:12:00 18404841238
>>1840279
да ну бред же.
откуда у анона проект который проживет 2 года
Аноним 26/10/20 Пнд 23:01:33 18405831239
image.png 40Кб, 1191x329
1191x329
Доброй ночи. Подскажите неопытному масленку почему возвращается результат тат работы кода (который ниже)
True, False, True, True
Почему во втором случае False хотя строка не менялась.
Аноним 26/10/20 Пнд 23:05:14 18405851240
image.png 16Кб, 441x339
441x339
Доброй ночи. На связи unityдрочер. Есть задача дать возможность персонажу динамически изменять слой на котором он находится, но никаких рабочих методов я так и не нашел, это вообще возможно и если возможно то как?
Ниже пример моих попыток:
Аноним 27/10/20 Втр 00:05:40 18406221241
>>1840484
вообще да, судя по его комментам этот какой-то студ проект, который сразу после сдачи в /dev/null
Аноним 27/10/20 Втр 00:15:07 18406251242
>>1840583
Потому что s2 и s3 это ссылки на интернированную строку, а string.Format (s1) это ссылка на ново созданную строку, если обернуть его в string.Intern то результатом второго сравнения будет True.
Аноним 27/10/20 Втр 00:38:19 18406331243
>>1840583
Ты зачем одно и то же в каждом перекате спрашиваешь?
Аноним 27/10/20 Втр 10:49:01 18407521244
>>1840585
Уже не надо, сам нашел
Аноним 27/10/20 Втр 11:40:14 18407961245
Есть приложение на C#, которое написано на winforms. Сейчас потребовалось сделать кроссплатформенный интерфейс. Какие могут быть дальнейшие шаги и варианты? Слышал про GTK#, но он как будто какой-то старый и чето документация не особо хорошая. Есть вроде Avalonia, насколько тяжко будет переходить на неё, если все завязано на winforms да еще и куча компонентов от devexpress. В общем, поделитесь опытом или дайте советы, какие могут быть варианты.
Аноним 27/10/20 Втр 11:48:50 18408051246
>>1840046
> но потом ничего не выбрал
На какой UI перешёл в таком случае?
Аноним 27/10/20 Втр 12:01:04 18408121247
>>1840805
ни на какой. остался на WPF. В нем есть TextOptions.TextRenderingMode

>>1840796
варианты это uno но это, как я понимаю, вебвью какой то а не натив
или авалония
или QT

и даже если на авалонию (или uno) перегонишь код как есть в основном (не внедряя MVVM) то контролы придется создавать самому. в XAML это конечно проще чем формсы, но все же это знать надо.
Можешь подождать MAUI но хз че оно там будет еще....и когда.
Аноним 27/10/20 Втр 12:51:24 18408381248
>>1840812
> остался на WPF
Не катит. Оно гвоздями прибито к шындовс. А я ищу замену устаревшему морально Lazarus FreePascal IDE который write once - compile everywhere с библиотекой LCL, кросплатформенным клоном Delphi VCL, которая в винде враппится в win32, в линуксе, в окружении KDE враппится в Qt, в окружении гнома враппится в GTK, в окружении андроида в андроид, и так далее. И всё это создано и отполировано ещё в нулевых. Я не перестаю охуевать от того, что замшелым дидам-паскальщикам это всё доступно искаропки, а молодые шутливые шарпобоги не имеют возможности одним росчерком пера одной распальцовкой клавиатуры создать универсальное окно и нахуярить в него универсальных контролов/виджетов, которое система автоматически встроит в целевую платформу, юзая нативные интерфейсы этой платформы.
Воспользуюсь советами второму анону. Изучу приведённые варианты.
Аноним 27/10/20 Втр 12:54:56 18408421249
Правильно ли я понимаю, что async-await просто упрощают работу с тасками? Или они добавляют какой-то новый функционал? Вот есть допустим такой код https://ideone.com/zCEfZ4 , как можно переписать его на async-await, чтобы ход исполнения оставался прежним?
Аноним 27/10/20 Втр 13:01:16 18408481250
>>1840842
это сахар чтобы не лепить калбэки или цепочки методов в простых случаях когда обычная асинхронщина
Аноним 27/10/20 Втр 13:12:06 18408511251
>>1840848
Я не знаю какая асинхронщина обычная, а какая нет, у меня нет такого опыта.
Аноним 27/10/20 Втр 13:15:45 18408541252
Клиент-серверное приложение это два приложения или одно, но разграниченное по функционалу?
Аноним 27/10/20 Втр 13:17:55 18408581253
>>1840854
>
>
я не правильно вопрос задал, оно ПИШЕТСЯ как два приложения или как одно?
Аноним 27/10/20 Втр 13:18:05 18408591254
Аноним 27/10/20 Втр 13:18:59 18408601255
Аноним 27/10/20 Втр 13:20:10 18408611256
>>1840860
у меня голова ломается когда я пытаюсь в этом разобраться, есть какие-то учебники которые этообьясняют?
Аноним 27/10/20 Втр 13:20:56 18408641257
>>1840861
Я бы начал с википедии, а дальше по ссылкам на АИ.
Аноним 27/10/20 Втр 13:43:11 18408771258
>>1840842
async-await избавляет тебя от необходимости контролировать всё что связанно с потоками и их выполнением, упрощают работу с ними и делают твой код намного читабельнее.
Проблема вот этого кода:
https://ideone.com/zCEfZ4

В том, что каждый вызов Thread.Sleep блокирует поток, в то время как он мог бы выполнять полезную работу и не занимать место в памяти без пользы. Если заменить всё на async await и Task.Delay, то весь код может выполняться в рамках одного потока. Т. е. помимо меньшего потребления памяти за счёт отсутствия необходимости создавать дополнительные потоки, улучшается и производительность за счёт меньшего переключения контекстов между потоками.
Аноним 27/10/20 Втр 13:49:21 18408831259
>>1840851
await (в любом языке) позволяет переписать цепочку калбеков/продолжений в линейный вид
например псевдокод
(посади дерево).continueWith(построй дом).continueWith(роди сына)
в линейную
await посади дерево
await построй дом
await роди сына

коих 95 методов

но если тебе нужно запустить несколько (посади дерево) одновременно, то тебе уже понадится заводить объект Task

но и там для вместо continueWith для ожидания результата каждой таски поможет await.
но это уже не полноценная замена. ведь await ожидает в данном месте и пока не дождется дальше не пойдет.

например запустил ты 3 таски (посади дерево)
и у тебя 3 таски task1, task2, task3
и ты делаешь
await task1
await task2
await task3
то он остановится и будет ждать task1 и даже если task2 уже все, то оно об этом не знает. потому что это эквивалент

task1.continueWith(
task2.continueWith(
task3.continueWith(

}
}
)

но даже тогда continueWith приходится редко.



Аноним 27/10/20 Втр 13:49:26 18408841260
>>1840812
Вот мои поиски все тоже ведут в основном к Avalonia. Понятно, что придётся самим контролы писать и у devexpress не взять. Но, боюсь, что вариантов других нет, ибо компании нужна кроссплатформенность. В идеале, конечно, в веб это всё перенести, но приложение слишком нетривиальное и я боюсь представить сколько на переписывание уйдёт лет.
Аноним 27/10/20 Втр 13:51:40 18408861261
>>1840838
>нахуярить в него универсальных контролов/виджетов, которое система автоматически встроит в целевую платформу, юзая нативные интерфейсы этой платформы.
ну это хамарин формс такой. хотя вряд ли мауи (что идет ему на замену) будет такой же в плане работы на десктопах. Я хз как можно решить проблему шаблонов, ведь хамл создает визуальный вид контрола, а нативные контролы они не такие гибкие. Авалония вот использует свой рендер.
Аноним 27/10/20 Втр 13:51:57 18408871262
Поцаны, а операции с разрядоебством часто используются и операции логическое умножение, сложение и тп с числами?
Аноним 27/10/20 Втр 14:04:01 18408891263
>>1840887
Используются с перечислениями которые помечены атрибутом Flags, если не понимаешь побитовые операции, то будет сложно понять как работает переключение флагов. Поэтому на базовом уровне знать нужно, иначе соснёшь.
Аноним 27/10/20 Втр 14:04:47 18408911264
Аноним 27/10/20 Втр 14:19:23 18409011265
1603797559673.png 315Кб, 1264x707
1264x707
>>1840046
> мыльность шрифтов в авалонии под винду нет лечения
Получается, предпоследний пункт на пикче - ложь?
Или там просто WIP и надо просто подождать, затянув пояса?
>>1840886
> Я хз как можно решить проблему шаблонов, ведь хамл создает визуальный вид контрола, а нативные контролы они не такие гибкие. Авалония вот использует свой рендер.
Я понемногу начинаю просекать фишку. Если бы WPF не прошёл бы мимо меня стороной, я бы уже давно фишку сёк и даже сомнений бы не было. Потому что это реальный прогресс по сравнению с классическими формо-ориентированными тулкитами. Я уже неделю плотно изучаю вопрос и понимаю, что возврата назад для меня уже не будет. Ни ГТК, ни КТ, ни ВХ не обладают и 10% той гибкостью, что дают хамл-ориентированные тулкиты.
Аноним 27/10/20 Втр 14:26:13 18409121266
>>1840901
Я не знаю что означает предпоследний пункт. но за рендеринг шрифтов отвечает бэкенд Direct2D и я хз как его заставить рендерить не мыло.
WPF точно такое же мыло рендерит, но там это можно обойти и получить четкий шрифт.
у меня даже встроено вот такое

TextOptions.SetTextFormattingMode(window,
Dpi >= 144 ? TextFormattingMode.Ideal : TextFormattingMode.Display);
TextOptions.SetTextRenderingMode(window, TextRenderingMode.ClearType);
Аноним 27/10/20 Втр 14:33:04 18409241267
Аноним 27/10/20 Втр 14:47:06 18409581268
>>1840924
Сорян, я отношусь к противоположному лагерю людей, ради которых и было сделано это всё, мне наоборот режут глаз шрифты без сглаживания. То есть, на этой гифке мне всё видится нормальным. Никакой беды не вижу. Но, я тебя понимаю, возможность включить или выключить сглаживание по запросу пользователя должна быть.
Аноним 27/10/20 Втр 14:54:36 18409761269
>>1840958
сглаживание есть всегда. вопрос в том какое оно.
Аноним 27/10/20 Втр 15:04:29 18409911270
>>1840877
Thread.Sleep в том коде это у меня не просто ожидание чего-то, а симуляция работы.
Аноним 27/10/20 Втр 15:13:36 18410021271
Снимок.PNG 18Кб, 515x409
515x409
>>1840958
вот на моем экране при моих настройках Clear Type
надеюсь двач не пережмет
1 WPF без ничего
2 Display + Clear Type
3 Avalonia
Аноним 27/10/20 Втр 15:20:11 18410081272
>>1840991
Так это понятно, только я сомневаюсь что у тебя там вычисления на несколько секунд. В любом случае нужно использовать async/await и класс Task, особенно если речь идёт о IO операциях, таких как обращение к диску или сетевому адаптеру.
Аноним 27/10/20 Втр 15:22:41 18410111273
>>1840991
Работу нужно не симулировать, а делать )

await это точка, где "уходит в ожидание" и освобождает поток дав поработать кому то другому кому нужнее, пока ждет. Когда await дождется, то его продолжение станет в очередь в текущем контексте синхронизации (тредпул например)

Воспринимай await как тот же ContinueWith только переписанный иначе, где тело продолжения это от await и до конца метода.

Сахар же чтобы уйти от калбэков

в котлине же вон вообще код с корутинами не отличить без них без подсказки редактора.
Аноним 27/10/20 Втр 15:37:16 18410241274
>>1841011
> освобождает поток дав поработать кому то другому кому нужнее

Сам по себе поток не занимает процессорное время, т. е. Thread.Sleep не тратит процессорное время, он тратит память в котором хранит все данные о себе.
Аноним 27/10/20 Втр 15:51:03 18410351275
>>1841024
>Сам по себе поток не занимает процессорное время
он занимает сам поток. И если у тебя 1 поток (например гуи) - у тебя лаги или все висит. Количество потоков пула тоже конечно. займешь их все и остальные задачи станут в очередь дожидаясь реального освобождения потоков.
Аноним 27/10/20 Втр 21:40:34 18414341276
Почему сервер на SocketAsyncEventArgs работает быстрее чем если использовать TcpListener или обычные сокеты с ReceiveAsynс? Провел около 10 тестов и всегда эти эвентАрги - выигрывают.
Аноним 27/10/20 Втр 22:02:48 18414511277
ура. наконец то сделали d:PropName
как же мне этого не хватало. В андироид студии давно есть, а тут черт знает что.
Аноним 27/10/20 Втр 22:15:25 18414621278
>>1841434
Потому что SocketAsyncEventArgs более низкоуровневая концепция чем TcpListener. Т. е. ты вырыл тоннель которым пользуешься только ты и спрашиваешь почему по этому тоннелю ты добираешься из пункта А в пункт Б быстрее, чем по общественной дороге.
Либо твои тесты хуйня.
Аноним 28/10/20 Срд 02:57:34 18416951279
Гайз с чего посоветуете начать изучать как первый язык? И где бы взять задачи для практики?
Аноним 28/10/20 Срд 07:54:35 18417501280
>>1841695
Шапка треда тебе для чего?
Аноним 28/10/20 Срд 18:01:18 18421851281
>>1841695
Зумер с конца тред читает..
Аноним 28/10/20 Срд 18:51:12 18422511282
Можно ли сделать HashSet из объектов ссылочного типа, для которых не переопределен GetHashCode.
Как я понял, для получения GetHashCode будет использоваться адрес памяти, где расположен объект.
Но если GC начнёт утрамбовывать память, то адрес объекта может измениться.
Как тогда это будет работать?
Аноним 28/10/20 Срд 19:01:37 18422641283
>>1842251
>Можно ли сделать HashSet из объектов ссылочного типа, для которых не переопределен GetHashCode.

Можно.
>Как я понял, для получения GetHashCode будет использоваться адрес памяти, где расположен объект.

Откуда ты это понял? Обращаться к памяти при вызове GetHashCode было бы весьма затратно, особенно учитывая, что GC перемещает объекты в памяти со временем.

>Как тогда это будет работать?

Не переопределенный GetHashCode всегда возвращает одно тоже значение для объекта n на протяжении всей жизни приложения. Сборщик мусора никак не влияет на это поведение.
Аноним 28/10/20 Срд 19:22:57 18422931284
>>1842264
>Не переопределенный GetHashCode всегда возвращает одно тоже значение для объекта n на протяжении всей жизни приложения
А как оно берется-то? Откуда?
Или при инициализации объекту добавляется автоматически поле в памяти со значением хеша?
Если например, поля объекта - такие же ссылочные типы, без данных типа значения.
Аноним 28/10/20 Срд 19:39:15 18423161285
>>1842293
>А как оно берется-то? Откуда?

Зависит от хеш-функции. При первом вызове GetHashCode CLR генерирует хеш-код и помещает его в синхронизационный блок объекта, дальнейшие вызовы GetHashCode возвращают данное значение.

Аноним 28/10/20 Срд 21:49:55 18424601286
У меня пара вопросов.
1. Стоит ли резать основной класс на подклассы. Чтобы было понятно. Допустим это текстовый редактор. Я беру и режу его на FileReader, FileSaver, TextFormatter и т.д. внутри основного класса уже создаю инстансы этих вот подклассов.
2. Насколько стоит думать о близасти конвенциональным понятиям "читаемого" кода? Допустим, ведь можно написать вот так вот:
async Task<ReadOnlyMemory<byte>> ReadData(byte[] buffer, CancellationToken cancellation) => buffer[..(await this.StreamReader.ReadAsync(buffer, cancellation))]
Как по мне оно все еще читаемо, но при этом в 1 строчку вышло, в противовес стандартным примерам где:

async Task<ReadOnlyMemory<byte>> ReadData(byte[] buffer, CancellationToken cancellation)
{
int count = await this.StreamReader.ReadAsync(buffer, cancellation);
return buffer[..count];
}

Ну или если с циклами так вообще смотрите как удобно:

int i = 0;
while( (i = await ReadData(buffer, cancellation) > 0)
{
что-то делаем с данными из буфера
}

и как это будет в классическом примере? А как-то так:
while(true)
{
int items = await ReadData(buffer, cancellation);
if(items == 0) break;
что-то делаем дальше
}

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


А, ну и последнее. В исходниках на гитхабе постоянно вижу эти if(condition) throw new Exception("!!!Some condition happened!!!");
На кой оно надо? Почему не писать так, чтобы такой вот херни не происходило? Ты же сам блин пишешь, зачем кидать эти исключения, вызывая падения там, где можно было бы просто не допустить его возникновения? Нет, блядь, каждый метод как поехавшие проверяют на null, будто он возьмется из воздуха само по себя, если ты сам его туда не передашь, а если передал, ну, сам дурак, все равно программа упадет при и ты увидишь где, а следовательно просто сделаешь так, чтобы не передавался null.
Аноним 28/10/20 Срд 23:09:21 18425111287
>>1842460
>1. Стоит ли резать основной класс на подклассы.

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

>Как по мне оно все еще читаемо

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

>Ну или если с циклами так вообще смотрите как удобно:
>while( (i = await ReadData(buffer, cancellation) > 0)
А зачем тебе вообще i объявлять? Оно здесь лишнее.
Отдельные переменные нужно объявлять если собираешься их считывать и исходя из значения что-то делать, в случае с чтением потока байт это может быть изменение размера буфера.

>В исходниках на гитхабе постоянно вижу эти if(condition) throw new Exception("!!!Some condition happened!!!");
>Ты же сам блин пишешь

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

>
Аноним 28/10/20 Срд 23:14:50 18425141288
>>1842460
1 резать нужно всегда ибо SRP, но они не будут подклассами же. Хз о чем ты
2 ну можно ведь пойти дальше и принимать не byte[] buffer, а вообще Span
ну или вообще yield
3 если пишет значит ожидает что может пойти не так и что внутри не будет исключений, а значит сам обязан кинуть исключение
Аноним 29/10/20 Чтв 09:09:43 18426811289
image.png 15Кб, 607x200
607x200
Уважаемые, нужна ваша помощь! Ситуация следующая
Имеется html форма в которую через инпут заливается картинка, далее это дело отправляется POST запросом в Контроллер в виде параметра IFormFile.
Тут возникает вопрос: как мне из этого IFormFile'а сформировать что-то, что я смогу отправить методом Http.PostAsync в API в виде (опять же) POST запроса? Я пытался упаковать эту картинку в StreamContent, StringContent, но на всё один ответ - "Unsupported media type".
Аноним 29/10/20 Чтв 10:55:07 18427191290
>>1842681
PostAsync(endpoint, new StreamContent(photo.OpenReadStream()));
Аноним 29/10/20 Чтв 11:56:42 18427711291
Ох, ребятушки, как же я оргазмирую!

>>1840838
> А я ищу замену устаревшему морально

Я НАШЁЛ!
И это... Eto!
Нашёл его, изучая предложенную мне аноном авалонию, в которой Eto в ряде случаев юзается, как бэкэнд. Я загуглил, а там! Полноценный ЮИ-фреймворк, да ещё есть возможность описывать формы на JSON. Это второй бурный оргазм, нахуй!
Аноним 29/10/20 Чтв 12:08:20 18427781292
>>1842719
А распечатать это как на API?

забыл сказать, что собираю на asp net core
Аноним 29/10/20 Чтв 12:11:29 18427811293
>>1842778
Не понятно что ты подразумеваешь под "распечатать это как на api"
Аноним 29/10/20 Чтв 12:13:41 18427831294
А существует ли вообще джуно шарпо работа, где не надо шлепать winforms, wpf или html/css? Сука, каждая вакансия это или легаси на wpf или около-фуллстэк на асп с обязательным знанием джс.
Мне просто нравится язык, я не хочу шлепать формы.
Аноним 29/10/20 Чтв 12:21:25 18427861295
>>1842783
А что ты на нём писать собрался, если не wpf/winforms и не вебформы? Игры еще есть на юнити и не только.
Аноним 29/10/20 Чтв 12:23:39 18427891296
>>1842781
Ну ты показал, как это отправить в соответствующую функцию на API пост-запросом, но на API должен быть код, который это откуда-то достанет. Я пытаюсь несколько часов это достать, как параметр принимающей функции, но в результате либо null, либо Unsupported media type
Аноним 29/10/20 Чтв 12:29:40 18427941297
>>1842786
Есть просто бек. Есть бек с микросервисами. Есть бек с лютой скалабельностью, параллелизацией и хайлоадом.
Наверное, есть еще тысяча и одна область, о которых я не знаю. Но я хочу верить, что программисты это не только формошлепы и веб макаки. Лучше уж тогда пинать хуи на мамкиной шее, чем пиздовать на такую работу.
Аноним 29/10/20 Чтв 12:48:27 18428121298
>>1842794
>Есть просто бек. Есть бек с микросервисами.
Как видишь - нет. Либо ты фуллстэк, либо фронтенд-макака.
>Есть бек с лютой скалабельностью, параллелизацией и хайлоадом.
Это уже больше к С++ относится и серверным частям на нём, а не к шарпу.
Аноним 29/10/20 Чтв 13:35:43 18428581299
>>1842812
>Это уже больше к С++ относится и серверным частям на нём, а не к шарпу.
Та бля, в каждой шарпо презентации говорят насколько он крут и быстр. Да и структуры с указателями в нем точно не просто по приколу.
> с лютой скалабельностью, параллелизацией
TPL дает охуенные фичи для паралеллизации, а скалабельностью славится даже скала с ее акторами.
Мне кажется, плюсы нужны только ты пишешь что-то под комп клиента- игру, сложную программу типа фотошопа и тд. А на сервере хоть на питоне пиши, просто пиши так чтобы можно было без напрягов просто добавить еще один сервер, если один не вытянет.
Аноним 29/10/20 Чтв 14:12:09 18428911300
>>1842858
>Та бля, в каждой шарпо презентации говорят насколько он крут и быстр.

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

>TPL дает охуенные фичи для паралеллизации

В TPL нет ничего нового и сверхъестественного, это просто удобная часть стандартной библиотеки, которая в других языках, в той же жабе, существовала в виде пользовательских библиотек.
Аноним 29/10/20 Чтв 14:41:44 18429381301
>>1842783
Я о такой не знаю. Мидло-щарпо-работа без фронта есть.
Аноним 29/10/20 Чтв 16:52:31 18430731302
>>1842783
ну так то WPF это вам не хтмл/жс
нормульненько
Аноним 29/10/20 Чтв 18:09:01 18431651303
Аноним 29/10/20 Чтв 18:12:10 18431691304
image.png 320Кб, 775x639
775x639
image.png 280Кб, 1537x817
1537x817
Аноним 29/10/20 Чтв 18:44:57 18431931305
>>1842783
У нас фронта под дотнет в принципе нет, поэтому даже джуны клепают серверную часть, не трогая фронт-енд. Но HTTP1/2 протоколы знать всё равно нужно вместе со всякими куками, Etag'ами, request/response'ами.
Аноним 29/10/20 Чтв 19:48:00 18432371306
>>1842783
А что ты подразумеваешь под джуноработой? Просто интересно. Вот когда я пришел на дужна за 11к рублей, мне сказали: Смотри, Вась, тут заказ есть, нужно разработать решение на микросервисах, вот тебе требования, вот пожелания, - пиздуй делать, через месяц не будет MVP с фронтом на ангуляре - досвидос. Я за это время выпил энергетиков на большую сумму чем мне платили, благо все еще на шее мамки сижу. Потом правда до 20к подняли зп, теперь доволен как слон, на энергетики и даже сигареты хватает.
Аноним 29/10/20 Чтв 19:49:21 18432391307
>>1843237
>Вот когда я пришел на дужна за 11к рублей,
пришел когда? даже джун не может зарабатывать меньше чем грузчик.
Аноним 29/10/20 Чтв 19:52:53 18432451308
>>1843239
> пришел когда?
В позапрошлом году.
Аноним 29/10/20 Чтв 20:08:22 18432671309
>>1843245
а я думал крепостное право давно отменили. Вижу ошибался
Привык к тому что джуну 800-1000 долларов
Аноним 29/10/20 Чтв 20:44:04 18433001310
>>1843165
И где же Java interoperability?
Аноним 29/10/20 Чтв 21:10:03 18433141311
Аноним 30/10/20 Птн 09:45:40 18435481312
>>1843267
11к платят трейни, джунам я считаю минимум 25к, либо 20к на три испытательных месяца, а дальше нормальная зп
Аноним 30/10/20 Птн 11:33:16 18436051313
image.png 14Кб, 687x138
687x138
image.png 13Кб, 357x202
357x202
Проблема не решилась, спрошу заново:
Имеется ASP net core приложение.
Пользователь в инпут формочку загружает картинку, эта картинка POST запросом отправляется в функцию, обрабатывающую POST запросы по данному адресу. В этой функции картинка появляется в виде IFormFile интерфейса в качестве параметра функции. Теперь нужно как-то отправить эту картинку по известному Uri в другой контроллер и как-то эту картинку в нем прочитать
1ый пик - Функция извлекающая картинку из формочки и пытающаяся отправить картинку по другому адресу при помощи PostAsync
2ой пик - функция, которая должна принять картинку, но вместо этого если указать у нее какой-либо параметр, то возвращает код Unsupported Media type, если не указывать параметры, то не понятно, как получить отправленную картинку
Аноним 30/10/20 Птн 11:34:18 18436081314
т.е. если параметр указать - функция даже не начинает выполняться, сразу Unsupported media type
Аноним 30/10/20 Птн 11:46:43 18436191315
>>1843605
ну так посмотри что там за хидеры и вообще как шлет данные это твой api.PostAsync

твой new StreamContent хз какие хидеры передает, ты их не ставишь, а дефолтное там хз

и на принимающей стороне хз чем должен думтаь фреймворк чтобы впихнуть полученные данные в object photo
Аноним 30/10/20 Птн 11:59:53 18436221316
>>1843619
Если ты про множество Headers, то что у StreamContent'a, что у HttpClient'a api оно пустое
Аноним 30/10/20 Птн 12:05:10 18436301317
Аноним 30/10/20 Птн 12:17:57 18436461318
>>1843622
>то что у StreamContent'a, что у HttpClient'a api оно пустое
потому и отбивает его фремворк как "я не знаю какой Content-Type у того что мне шлют и я хз че с ним делать". Это первая проблема

>Хедеры
Кажется у нас новый председатель
Аноним 30/10/20 Птн 13:05:33 18436871319
>>1843646
Поставил стрим контенту контент тайп application/octet-stream, вопрос как прочитать это остается открытым
Аноним 30/10/20 Птн 13:15:35 18436971320
>>1843687
да точно так же
или запрос не стримконтент, а полноценно
MultipartFormDataContent в котором уже стримконтент и которое неотличимо от "отправляю форму" и на получении тот же IFormFile

или на клиенте [FromBody] но вряд ли там можно получить стрим как IFormFile (все таки апи), тогда [ReadableBodyStream] к action и вычитывать тело запроса самому


Аноним 30/10/20 Птн 13:22:06 18437121321
>>1843687
и если так то хорошо бы и Content-Length прокинуть
Аноним 30/10/20 Птн 13:35:39 18437211322
>>1843712
В принимающей функции Request.Headers["Content-length"] итак 26838 возвращает, без моей помощи
Аноним 30/10/20 Птн 13:45:13 18437321323
>>1843697
Мне принять картинку надо в API, можешь написать как это сделать?
Что значит "[ReadableBodyStream] к action" я не понимаю

MultipartFormDataContent для API мне видится как костыль, но если вариантов не будет, то попробую его, спасибо
Аноним 30/10/20 Птн 13:53:12 18437471324
>>1843732
>[ReadableBodyStream]
да хз. увидел тут
https://stackoverflow.com/questions/40494913/how-to-read-request-body-in-an-asp-net-core-webapi-controller

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

так что просто читай тело запроса - оно и есть содержимое картинки

public IActionResult SomeAction()
{
using (var reader = new StreamReader(Request.Body))
{
....
}

...
}
Аноним 30/10/20 Птн 20:40:56 18441831325
>>1843548
Ну как, меня сразу взяли в штат и дали работу, которую потом отдали заказчику и заказчик доволен был. Вот.
Сейчас, спустя 2 года - 20к получаю. Вот.
Аноним 30/10/20 Птн 21:02:10 18442041326
>>1844183
бел. рублей? как это 20к спустя два года? шутка какая-то? или гос. контора?
Аноним 30/10/20 Птн 21:14:22 18442151327
>>1844204
> бел. рублей?
Российских
> как это 20к спустя два года?
Ну, если сравнивать с 11к и учитывая что я на мамкиных котлетках с макарошками - нормально.
> или гос. контора?
Внезапно - лидер в своей области, причем мировой, мать его(там даже пару лет назад скандал был, дальше не буду распространяться, т.к. еще узнаете где я работаю, а тут за очернение репутации фирмы и выпизднуть могут). Просто те кто управляют - предпочитают себе выписывать каждый квартал премию с 6 ноликами в долларах, а за проебы все на кодеров сваливать, и за это тут постоянно говорят про то что кодеры не справились, ну да, блядь, штат 20 человек - 50 проектов, сука, конечно не справились, у вас же всяких продажников 500 человек и у них продвижени по службе - охуенные идеи, которые скидывают на кодеров, и потом кодеры виноваты что не выстрелило, ведь охуенная идея по всяким рассчетам должна была миллиарды денег принести, а это кодеры такие вот хуевы и похуй что даже на джуна вешают полноценные проекты, похуй что на кажодом челе по несколько - расширять штат мы не будем, это вы как-то работайте быстрее. Благо хоть понимают, что таких вот дураков не много и просто так не выгнать.
Аноним 30/10/20 Птн 21:22:52 18442271328
>>1844215
> таких вот дураков
Воистину при капитализме капиталист платит ровно столько, за сколько готовы работать. Как же они рады, что у них в штате 20 дурачков, которые работают за зарплату дворника и не увольняются.
Аноним 30/10/20 Птн 21:26:10 18442291329
>>1844227
А просто некуда идти. Тут знания специфичны очень и соотвсетственно ты будешь вынужден с позиции максимум мидла начать на другом месте, единственный конкурент - платит столько же, но по договору, который нужно было подписать после скандала, идя конкретно к нему ты должен выплатить штраф в размере всех ЗП которые ты получал пока работал тут. Это многих напрягает, особенно тех кто работает лет по 15.
Аноним 30/10/20 Птн 21:43:29 18442411330
>>1844229
> А просто некуда идти.
Во фриланс, нахуй. Что угодно лучше такой галеры ебучей.
Аноним 30/10/20 Птн 21:45:40 18442441331
>>1844229
> по договору, который нужно было подписать после скандала, идя конкретно к нему ты должен выплатить штраф в размере всех ЗП которые ты получал пока работал тут
И кстати, осторожнее с такими подробностями. По такой юридической практике контору уже принципиально возможно вычислить. А двач славен шерлоками комнатными.
Аноним 30/10/20 Птн 21:50:52 18442531332
>>1844183
итить. меня на трейни брали 800 баков
через 3 месяца уже 1000 и дальше рост по желанию.
Аноним 30/10/20 Птн 21:59:52 18442651333
Аноним 30/10/20 Птн 22:02:51 18442681334
>>1844265
Не нужно радоваться за меня. Лучше себя пожалей. Джун не должен получать меньше 1000(не рублей) тем более через 2 года.
Аноним 31/10/20 Суб 08:28:19 18446221335
>>1844215
Скажи честно ты поехавший или просто траль? Почему ты не ищешь работу в норм компаниях? Есть скайп, есть зум, нет хочу за 11к хуй сосать, нахуй переезжать куда-то?
Аноним 31/10/20 Суб 12:47:15 18447101336
>>1844215
Репортите этого, он лжец и пропагандон.
Аноним 31/10/20 Суб 12:50:30 18447141337
>>1797054 (OP)
Такс, Repository Pattern используемый над EF Core официально полнейшее говно по многим причинам, но есть ли более-менее адекватные альтернативы?

https://lostechies.com/jimmybogard/2012/10/08/favor-query-objects-over-repositories/

Вот один из примеров на что его можно заменить, как минимум плюшки IQueryable не теряются, но блять, под каждый пук определять отдельный класс, это как-то сомнительно. Кто-то пробовал придумать универсальное решение, или может нактыкался на него?
Аноним 31/10/20 Суб 12:55:47 18447191338
>>1843548
Лол, я без опыта вообще первую работу нашел на ЗП 60к+, просто не надо в себе сомневаться и надо пробовать влетать всюду куда предлагают. Если ты завалишь собес тебя никто не покусает, а если пройдешь то на реальном проекте можно быстро дотянуть то чего не знаешь, и это понимают и те кто собеседуют, на собесах чаще смотрят просто на то как ты мыслишь и рассуждаешь, чтобы понять что ты из себя представляешь.
Аноним 31/10/20 Суб 16:08:07 18448641339
>>1844714
зря ты лезешь в эту тему. спокойствия теперь никогда не найдешь
а так вот читани https://habr.com/ru/post/259829/

А так одних только QueryObject куча вариантов
и тут уже фломастеры ибо нет идеала
Аноним 31/10/20 Суб 18:45:56 18450381340
>>1844710
Тебе показать выписку по ЗП? 20к после вычета налогов, стаж 2 года.
>>1844719
Вангую что ты ДСоблядок. Конечно, у вас и в макдаке каждый хуй по 300к получает, что удивляться-то, сосете кровь из регионов. А тут вот кодеры с 15 летним стажем получают 50к и довольны как не знаю кто, я с 20к тоже вроде доволен, только вот хочется видеокарту обновить(770 уже не тянет), но видимо подожду следующего поколения.
Аноним 31/10/20 Суб 19:21:17 18450771341
>>1845038
просто тебе нужно уйти в другую контору. Для программирования иметь зарплаты 1000-3000 енотов это нормально ожидаемо

да в этой же теме обсуждали вакансию, где мелькала сумма от 100к для мидла (+ переиндексация)
Аноним 31/10/20 Суб 20:08:32 18451131342
Аноним 31/10/20 Суб 20:58:16 18451351343
>>1844714
> Repository Pattern используемый над EF Core официально полнейшее говно по многим причинам
Да как раз нет. Если тебе действительно нужны фишки IQueryable снаружи - делаешь интерфейс для репозитория который этот твой IQueryable возвращает и этот интерфейс просто расширяет другой интерфейс обычного репозитория, банально вот у тебя IAsyncRepo<T> вот у тебя IQueryableRepo<T>. Другое дело, что нахуй оно надо-то? Вот серьезно. На высоком уровне ты просто инжектишь сервис который уже все под капотом сам сделал, даже с репозиторием не работаешь напрямую. А внутри этих сервисов - просто делаешь что тебе надо.
Ну и да, сами майки почему-то в своих примерах с архитектурой используют репозиторий над EF. И норм у них, красивенько все удобно.
Опять же, если нужно будет затестить саму бизнес-логику, тебе не нужно париться с наполнением БД и прочей залупой, ты просто замокал репозиторий и можешь нормально проверить работу сервиса на соответствие бизнес-задачам.
А чтобы такой вот аналог запросов получить - берешь https://github.com/ardalis/Specification и используешь
Аноним 31/10/20 Суб 23:04:34 18452181344
Есть таблица в postrgeSQL, есть класс данных который надо вставлять в табличку. Поля бд соответствуют полям класса 1 в 1. Ключевых полей нет. Есть Npgsql, Dapper и Dommel.
Проблема в том,что не работает команда:

using (var connect = new NpgsqlConnection(someConnectionString))
{
connect.Insert(dataSet);
}

Класс примерно такой
public class DataSet
{
public int data_count_1 { get; set; }
public int data_count_2 { get; set; }
}
Аноним 01/11/20 Вск 00:29:04 18452491345
>>1845135
>Другое дело, что нахуй оно надо-то?
Это все выглядит как лишний уровень абстракции, который не служит никакой цели, кроме как чтобы Unit тесты было писать якобы проще при том, что в EF Core уже есть абстракция IDbSet, которая по сути и есть репозиторий, в инете в целом, легко найти статьи о том, почему утверждение что тестить EF Core напрямую сложно или невозможно - это не совсем правда, так еще такой подход закрывает плюшки ORM. То что майки сами его используют в каком-то туторе, и то что его используют во многих примерах "Best Practicies" - еще не значит что его надо пихать абсолютно везде. Я ищу альтернативы, потому-что, к примеру, если мне не нужны Unit тесты в каком-то маленьком-простеньком проекте, то репозиторий по сути только мешает, но при этом я бы не хотел иметь прямые зависимости от EF Core в сервисах или контроллерах, шобы все было по DIP.

Вообще, на базовом уровне, еще давно когда я читал по нему туторы меня смутила необходимость определять методы навроди "GetHuinyaWithZalupa" в репозиториях, при том что существует IQueryable, тогда я забил, но сейчас мне это не дает покоя. Очень сомнительная хуйня, ты по сути сам себя сознательно ограничиваешь при этом можно сказать что ты в некотором смысле даже нарушаешь OCP, и не понятно какие реальные профиты от этого получаешь. Я придумал реализацию Generic Repository на основе IQueryable, которая не требует определять отдельные интерфейсы под каждую отдельную сущность, на западных ресурсах буржуи сказали что вариант интересный, но использование репозитория вместе с EF Core раскритиковали, в целом, указав на то что этот функционал уже есть искаропки. Вот решил еще у соотечественников спросить.
Аноним 01/11/20 Вск 04:11:34 18452861346
>>1845249
Clean code, все дела. С репозиториями и GetHuinyaWithZalupa() методами у тебя получается больше кода, но каждый кусок отвечает только за свой функционал. Репо хорошо ложатся в CQRS. С репо ты напрочь закрываешь какие-либо зависимости: сегодня Dapper, завтра EF, там у тебя постгрес, тут у тебя монго. А то ведь данные и с какого-нибудь сервиса прилетать могут. Через репо ты абстрагируешься от источника данных и отдаёшь бизнес логике только удобовариваемые контракты, по которым она работает с данными.

Кода больше, но поддерживать и расширять такой проект, когда он перевалит за 1кк строк, просто. Каждый девелопер может свой кусок менять не боясь за то что поломает чужую логику или наделает кучу merge conflicts.
Аноним 01/11/20 Вск 04:17:07 18452891347
Аноним 01/11/20 Вск 11:08:10 18453451348
Это нормально постоянно дергать context.AuthenticateAsync? А то у меня есть несколько схем аутентификации, где-то нужна одна, где-то другая. Или можно как-то запихать все принциплы в свойство юзер?
Аноним 01/11/20 Вск 12:50:04 18453661349
>>1845345
> Или можно как-то запихать все принциплы в свойство юзер?
Я уверен, что с помощью ООП-полиморфизма можно.
Аноним 01/11/20 Вск 14:48:32 18454391350
>>1845289
Пишет что не ключа для name_spase.table
Если сделать поля без _ везде, то он нормально работает.
Я так понял нужно сделать
public class DataSetMap: DommelEntityMap<DataSet>
и как то ее инициализировать, но возможно просто использовать атрибуты для полей класса, правда я не понял каких.
Аноним 01/11/20 Вск 18:01:31 18455841351
Аноним 01/11/20 Вск 19:26:09 18456421352
>>1845584
abstract class SobachiyZvuk : AudioComponent;

class SobachiyLai : AudioComponent;

class SobachiySkuliozh : AudioComponent;

class SobakaGeneric<T> {

public T Zvuk { set; get; }

public SobakaGeneric<T>()
{
if (T is AudioComponent) Zvuk = new T();
}

}

И НАКОНЕЦ

var SkuliashyaiaSobaka = new SobakaGeneric<SobachiySkuliozh>();
var LajushyaiaSobaka = new SobakaGeneric<SobachiyLai>();

Как-то так, я полагаю
Аноним 01/11/20 Вск 21:07:10 18457381353
Аноним 02/11/20 Пнд 00:14:02 18458741354
>>1840625
Хорошо а в первом случае почему true ?
Ведь там по идее будет сравнение по ссылкам на объект в они будут отличаться потому что будет выполняться метод Join. Или я не прав ?
Аноним 02/11/20 Пнд 01:38:19 18458951355
>>1845874
Строки это иммутабельный тип и сравнение у них происходит как у значимых типов т. е. по значению.
Аноним 02/11/20 Пнд 02:09:30 18459041356
Аноним 02/11/20 Пнд 02:21:01 18459101357
>>1845904
Значения строк одинаковы, поэтому в первом случае true, что тебе не понятно?
Аноним 02/11/20 Пнд 08:03:57 18459801358
Я со сложным (или нет)

Вот есть такой язык VBA (бейсик для MS офиса).Есть программы сделанные в MS Access - окошки через формы, логика на VBA.
Мне дали задачу - сделать морду-интерфейс (фронтэнд) на шарпе

Так вопрос - можно ли из C# вызывать функции написанные на VBA?

Потому что переносить весь старый бейсиковский код на шарп - легче застрелиться.
Аноним 02/11/20 Пнд 09:21:39 18459911359
>>1845980
Сделай динамическую библиотеку на базике да вызывай ее откуда хочешь
Аноним 02/11/20 Пнд 09:57:37 18460191360
>>1845980
Можно, но только при условии, что код на VBA является CLS-compliant кодом, т. е. в нём не используются фишки конкретно VBA, в шарре например если использовать uint тип в коде шарпа, то этот код не будетс cls compliant.
Аноним 02/11/20 Пнд 10:30:20 18460411361
>>1845980
Админил в начале нулевых софт, написанный в этой чудовищной среде (MS Access + VBA). Админил несколько лет. Что я могу тебе посоветовать? Беги оттуда, глупец, пока не поздно!
Несмотря на то, что ты пишешь:
> Потому что переносить весь старый бейсиковский код на шарп - легче застрелиться.
Я рекомендую именно с этого и начать, чем раньше, тем лучше.
Можешь, как советует этот >>1846019 анон, завести в солюшене два комплиантных проекта, один на ВБ.Нет с перенесённой в него логикой из акцес-формочек (и пожалуй в нём же организовать доступ к БД), собирающийся как библиотека, второй на шарпе, с первым в качестве зависимости, и он содержит фронтэнд.
Как-то так.
Замечу ещё, что просто так ты код из VBA на VB.Net не перенесёшь. Там работы будет дохуищща! И проще сразу на шарпе всё переписывать.
И ещё, у МС есть функционал для запила дотнетных расширений к офису, в том числе к акцессу. Я его никогда не пробовал в работе, но в принципе вся эта идея выглядит сомнительно. Нирикаминдую, хоть и Пастернака не читал.
Аноним 02/11/20 Пнд 12:25:48 18461021362
>>1845910
почему во втором false
интернированная строка не строка что ли?
Аноним 02/11/20 Пнд 12:58:13 18461271363
>>1846102
Во втором случае строки приводятся к объекту, после чего идёт сравнение объектов, а не строк, чего ты тупой то такой?
Аноним 02/11/20 Пнд 13:06:47 18461311364
>>1846127
в четвертом тоже строки приводятся к объекту, после чего идет сравнение объектов.
Аноним 02/11/20 Пнд 13:11:35 18461331365
Мне нужно проверить несколько переменных на null и выполнить действия, если какие-то из них null. Для каждой переменной своё действие. Как это сделать без гигантского ifа на миллиард строк? if((string1 ?? int2?? string3 ?? double4?? string5 ?? string6) == null) не подойдёт в моём случае именно из-за того, что мне надо надо знать кто именно null и делать действия.
Аноним 02/11/20 Пнд 13:31:31 18461391366
>>1846131
И какой логический вывод ты можешь сделать, глядя на переменные из второго сравнения и четвертого? Будут ли одинаковыми объекты полученные из строк? Если да, то почему? Если нет, то почему?
Аноним 02/11/20 Пнд 13:40:29 18461431367
>>1846139
ну вывод там прост
в 4 случае сравниваются 2 интернированные строки и это вообще 1 объект (компилятор постарался)
в первом сравниваются строки, потому что интернированная строка это тоже строка
а во втором объекты и значит string не перегружает object.Equals, вот только он перегружает
Аноним 02/11/20 Пнд 14:04:54 18461641368
29.jpg 108Кб, 642x941
642x941
Аноним 02/11/20 Пнд 14:11:06 18461721369
29.jpg 113Кб, 817x931
817x931
Аноним 02/11/20 Пнд 14:12:15 18461751370
>>1846164
Спасибо, конечно, но лучше уж if в 20 строчек, наверное.
Аноним 02/11/20 Пнд 14:14:31 18461801371
>>1846175
Хотя, если их когда-нибудь будет ещё сотня, то можно будет и прикрутить.
Аноним 02/11/20 Пнд 14:18:08 18461871372
29.jpg 46Кб, 607x245
607x245
Аноним 02/11/20 Пнд 14:20:42 18461921373
>>1846187
жуть какая то.
тут же выше обсуждалось Let котлиновское и аналог в шарпе.
он и то лучше выглядит
но имхо автор другое просил
Аноним 02/11/20 Пнд 14:31:01 18462011374
>>1846133
Делай, почти как анон выше предложил, только без горожения безумных интерфейсов и фабрик. Заведи одну функцию, которая принимает аргумент и коллбэк, если аргумент = нулль, дёргает коллбэк. Просто, быстро, говняно, неподдерживаемо.
Если переменные нескольких типов, это же очевидно, что надо сделать: скопипастить функцию с другим типом аргумента.
Аноним 02/11/20 Пнд 14:39:18 18462101375
29.jpg 48Кб, 631x373
631x373
111.jpg 24Кб, 829x247
829x247
>>1846192
>Let котлиновское

Можно и как в котлине. И даже лучше! Потому что котлин обосрался как всегда (пик2).
Аноним 02/11/20 Пнд 14:49:12 18462191376
>>1846210
потому что правильно исползовать в котлине

str?.let {и тут не нужно сравнение на нулл}

но это еще дальше уходим от проблемы автора
Аноним 02/11/20 Пнд 14:55:27 18462261377
>>1846219
>потому что правильно исползовать в котлине
Ага, потом нам понадобиться чтобы при null выполнялось отличное действие от того, когда у нас не null и в котлине мы схватимся за голову и соснём.
>но это еще дальше уходим от проблемы автора
Никто никуда не уходил, всё то что ему нужно - если переменная null, то ничего не делаем, если у неё значение, то выполняем метод.
Аноним 02/11/20 Пнд 15:01:22 18462311378
>>1846226
>Ага, потом нам понадобиться
Если бы у бабушки были....
Каждой задаче свой инструмент. Нет задачи - не нужно хвататься за голову.

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

на что я запихал бы все переменные и методы в List<KeyValuePair<object, Action>> и проходил бы по ним.
Аноним 02/11/20 Пнд 15:16:43 18462501379
Наконец завязал с доистористорическим web forms и решил перекатиться на ASP.NET Core MVC. Сразу же получил по ебалу. Большинство материалов расчитано на тех, кто работал хотя с ASP.NET MVC. Нихуя непонятно, прям другая вселенная.
Посоветуйте учебник для новичков в этой технологии или же материалы, которые помогут мне хоть немного наверстать упущенное время и пробелы в знаниях.
Аноним 02/11/20 Пнд 15:26:00 18462621380
>>1846231
>Каждой задаче свой инструмент. Нет задачи - не нужно хвататься за голову.

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

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

Так перечитай. Я тоже не правильно понял, ему нужно выполнить действие, если переменная null, т. е. заменить:

if (var1 == null) method1();
if (var2 == null) method2();
if (var3 == null) method1();

На что-то более лаконичное.
Аноним 02/11/20 Пнд 15:26:12 18462631381
>>1846250
для любителей web forms сделали razor pages
А вообще ASP.NET Core MVC он как и тысячи ROR-подобных фреймворков - разобрался в общем устройстве одного и вкатится в другие (даже на других языках) просто, ведь понятно что где лежит и зачем
Аноним 02/11/20 Пнд 15:28:33 18462641382
>>1846262
>В инструменте ценится универсальности
у меня молотком плохо шурупы закручиваются. только заколачиваются и потом не выковырять. Выходит молоток говно? )

>если переменная null, т. е. заменить:
признаю. он запутал меня этим
if((string1 ?? int2?? string3 ?? double4?? string5 ?? string6) == null)
Аноним 02/11/20 Пнд 15:37:17 18462711383
>>1846264
>у меня молотком
Вторую часть манямирок отказался воспринимать?
>если нет универсальности, значит должно быть выше качество выполнения задачи, чем у более универсального инструмента.


Аноним 02/11/20 Пнд 15:38:57 18462731384
>>1846263
>для любителей web forms
Я не любитель, а застрявший в этой технологии из-за места работы. Несколько лет поддерживавал древний проект, теперь приходится срочно переучиваться на самое новое, что есть в .Net по части вэба. А это, насколько мне известно, Core MVC.
Аноним 02/11/20 Пнд 15:57:27 18462881385
>>1846271
ну так ?.let отлично выполняет ту задачу, которую он выполняет. Просто сверхотлично, без дополнительных if если что.
Аноним 02/11/20 Пнд 16:13:26 18463041386
>>1846288
В том и дело, что не выполняет var?.let не выполнится если var == null, а ему как раз нужно чтобы выполнился если var == null и не выполнился, если иначе.
Аноним 02/11/20 Пнд 16:22:42 18463111387
>>1846304
>var?.let не выполнится если var == null,
угу. потому что его задача делать другое

а вообще есть же универсальный if. зачем еще что то городить )
Аноним 02/11/20 Пнд 16:27:41 18463151388
>>1846311
>нинужно вот let нужон а ета нинужно

Так и запишем!
Аноним 02/11/20 Пнд 17:11:16 18463431389
>>1846226
> всё то что ему нужно - если переменная null, то ничего не делаем, если у неё значение, то выполняем метод
Выполняем метод всегда, а у метода в начале if (argument == null) return;
Всё гениальное - просто.
Аноним 02/11/20 Пнд 17:17:00 18463541390
>>1846343
Во-первых.
>Я тоже не правильно понял, ему нужно выполнить действие, если переменная null
Во-вторых
>у метода в начале if (argument == null) return;
Хуевое решение, потому что условия могут поменяться для каких-то определенных переменных, либо в каких-то случая понадобится проверка на что-то еще, тогда тебе придётся пилить костыль, либо переписывать уже существующий код.
Аноним 02/11/20 Пнд 17:29:07 18463661391
>>1846343
все еще проще

void ExecuteForNonNulls(params Tuple<object?, Action> foo){
foreach(var (obj, action) in foo){
if (obj!=null)...
]
}
и вызов
ExecuteForNonNulls(
(var1, Action1), //а можно и лямбду если параметры есть
(var2, Action2),
(var3, Action3)
)
Аноним 02/11/20 Пнд 17:41:34 18463771392
>>1846366
О да! Точно! Двачую кортежи!
Аноним 02/11/20 Пнд 18:20:06 18464111393
>>1846366
>object
В итоге получаем боксинг если значение имеет значимый тип.
Аноним 02/11/20 Пнд 18:22:18 18464151394
>>1846273
Не, самое новое - это Blazor и gRPC. Вот где придётся полностью переучиваться :)
Razor Pages тоже новее Core MVC.
Ещё нынче принято "котлеты отдельно, мухи отдельно". Пишешь API, а морду делаешь на всяких Vue/React/Angular. Но я бы Blazor выбрал.
Аноним 02/11/20 Пнд 18:25:41 18464171395
>>1846411
> проаерка на нулл (исходная проблема)
>Значимый тип
как бы противоречий нет ага
Аноним 02/11/20 Пнд 18:40:08 18464381396
>>1846415
>Razor Pages тоже новее Core MVC.
для любителей web forms создан или для простых случаев. Так то он хуже чем MVC.
>Но я бы Blazor выбрал.
каждой задаче свой... а задачи бывают разные.
Аноним 02/11/20 Пнд 18:47:36 18464481397
Посоветуйте плес че написать на микросервисах для резюме. Я чет понятия не имею, что может написать один человек, джун, чтобы для этого пригодились микросервисы.

Алсо, можете плес пояснить что я делаю не так? В резюме кратко описал все свои пет проекты, основные проблемы с которыми в них столкнулся и что из них изучил/ что в них юзал. Но ссылок на исходники кидал только для одного проекталан, для двух, но второй не на шарпе, да и в нем я не овнер, просто сделал всю архитектуру и большинство коммитов. другие проекты уж слишком говнокодисты, чтобы я ими на гитхабе хвастался
В этом ли проблема? Кинул резюме уже на две вакансии, а меня по-просту проигнорили, даже на собес не позвали.
Аноним 02/11/20 Пнд 18:53:09 18464551398
>>1846417
Есть типы вроде int?, которые будут упаковываться при передаче в метод который принимает тип object.
Аноним 02/11/20 Пнд 18:56:02 18464581399
>>1846448
>описал все свои пет проекты

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

>В этом ли проблема?
Откуда нам знать? Мы твоего резюме не видели.
Аноним 02/11/20 Пнд 19:03:04 18464651400
>>1846458
Так а что тогда в резюме писать? Коммерческого опыта у меня хуй да нихуя, остаются только пет проекты и гитхаб.
Аноним 02/11/20 Пнд 19:03:37 18464661401
>>1846455
который принимает object?
впрочем, нет разницы, работать будет
Аноним 02/11/20 Пнд 19:10:14 18464701402
>>>1846448
> че написать на микросервисах для резюме
Напиши систему управления авиаперелетами. Чтобы все чин по чину, сервисы для просчетов маршрутов, сервисы определения по оптимизации закупок топлива, сервисы для составления отчетностей и т.д. При этом следи чтобы все по солиду было и соблюдай DRY. Про тесты не забудь. Все должно собираться одним кликом и сразу деплоиться куда скажут.
> что я делаю не так?
Вангую много текста, мало тегов. Надо наоборот как раз. Тебя на собес позовет хрюша, а не тимлид или кто-то из тех кто шарит. Хрюша, это как тупой гугл, она просто видит ключевые слова и зовет на собес тех кто подходит. Гитхабы и прочее уже будут на собесе смотреть, если конторе интересно, обычно ограничатся разговором что тебе интересно, что делал, что умеешь, если не совсем мудаком покажешься и будет своя система управления авиаперелетами - возьмут.
Аноним 02/11/20 Пнд 19:14:24 18464721403
Господь всемогущий, за что мне такое наказание?
Это>>1846470
Сюда>>1846448
Аноним 02/11/20 Пнд 19:14:30 18464731404
>>1846466
>object?
object по определению нулабелен, поэтому "?" излишен, разницы нет.
>впрочем, нет разницы, работать будет
Работать будет, но медленнее и с большим потреблением памяти, т. е. не без разницы.
Аноним 02/11/20 Пнд 19:19:36 18464781405
>>1846473
>object по определению нулабелен, поэтому "?" излишен, разницы нет.
все реф типы нулабельны по определению, а ? пишем, чтобы подчеркнуть факт нулабельности для анализатора.

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

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

всё. хватит. всем срочно писать как в GO - простыни ручного говнокода. Нахер сахар. Только соль
Аноним 02/11/20 Пнд 19:23:37 18464831406
>>1846478
> пиши 100 этажные if и за каждым боксингом следи
Только что загуглил боксинг. Возможно я понимаю неправильно, но боксинг это упаковка переменной в object и она у нас появилась только после того, как мы всем тредом начали от 100-этажных if-ов уходить. Не?
Аноним 02/11/20 Пнд 19:30:07 18464881407
>>1846478
>а ? пишем, чтобы подчеркнуть факт нулабельности для анализатора.
Какого анализатора? Нормальная IDE тебе предупреждение выдаст и попросит удалить лишний символ.

> Хочешь меньше писать - жертвуй.
Так жертвовать и не надо, для того чтобы не жертвовать придумали обобщения.
Аноним 02/11/20 Пнд 19:50:17 18465011408
Image 2.png 15Кб, 756x305
756x305
>>1846483
боксинг появился из-за каста к object значимого типа. Если у тебя не высоконагруженный код не парь мозг. Больше проблем от того, что тип теряется и если тебе нужно его передавать в делегат, то придется обратно кастовать
и хоть это работоспособно но выглядит ущербно.

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

>Так жертвовать и не надо, для того чтобы не жертвовать придумали обобщения.
есть такое, но баланс "короче if/оверхед" не такой хороший. И я бы выбрал if, чем множественный вызов обобщенного метода.
Аноним 02/11/20 Пнд 19:53:39 18465041409
как сделать перекат? ну висит же все от такого треда?
Аноним 02/11/20 Пнд 20:05:56 18465201410
>>1846470
>Напиши систему управления авиаперелетами.
Звучит конечно круто, но проблема та же, что и с бд лабами в универе - я понятия не имею, как на самом деле авиаперелеты устроены. И я уверен, что закупки авиатоплива на миллионы долларов для кучи лайнеров устроены гораздо сложнее, чем я могу представить.
Хотя, ты натолкнул меня на мысль сделать свой аналог убера - вполне реалистичный стартап, который способен реализовать один программист. Хз правда, как на сервисы разделить точно будет сервис для клиента, сервис для таксиста и мб сервис для поиска оптимальных путей, да и в андроид разработку я не очень хочу вкатываться.
>Вангую много текста, мало тегов. Надо наоборот как раз. Тебя на собес позовет хрюша, а не тимлид или кто-то из тех кто шарит.
Ок. Вырежу почти все из "опыта", и удвою колличество скиллов., говоря даже о том, в чем не шарю. Надеюсь, проактит.
Спасибо за ответ, анон.
Аноним 02/11/20 Пнд 20:09:18 18465231411
111.jpg 28Кб, 886x86
886x86
>>1846501
>значит Visual Studio плохая IDE (скрин зри). зопесал.
Вычеркивай.
> И я бы выбрал if, чем множественный вызов обобщенного метода.
А потом переписывал бы код, когда проверки перестали ограничиваться одним if-ом. Либо когда в if нужно добавить еще какое-либо условие.
Аноним 02/11/20 Пнд 20:13:26 18465271412
>>1846523
>Вычеркивай.
ты не используешь <Nullable>enable</Nullable> ?
ты мазохист? али старообрядец? Надеюсь на неткоре хоть пересядешь)

>когда проверки перестали ограничиваться одним if-ом.
тогда и обобщенный метод не поможет.
да и в обоих случаях можно запилить Predicate<bool> но читабельность от этого не вырастет
а переписывать СТОЛЬКО ЖЕ
Аноним 02/11/20 Пнд 20:15:48 18465321413
>>1846520
>гораздо сложнее, чем я могу представить
так и есть. неважно сколько у тебя опыта программисткого за плечами, но если ты не понимаешь тему, которую нужно закодить, то считай, что ты джун

Лучше опиши технологии с которыми сталкивался и как их использовал. Будет много и честно.
А один хер все на собеседовании будет выясняться
Аноним 02/11/20 Пнд 20:26:24 18465481414
>>1846527
>ты не используешь <Nullable>enable</Nullable> ?
Нет, я ведь не восторженная макака, которая тащит всё новое в код, независимо от пользы.
>старообрядец
Когда по умолчанию будет enable, тогда и приходи.
>тогда и обобщенный метод не поможет.
Создаешь метод-расширение ExecuteIfNull<T>(this T value, Action action), в нём у тебя будут все нужные проверки, код который использует его не будет меняться если нужно будет сделать дополнительную проверку.
Аноним 02/11/20 Пнд 20:33:16 18465541415
>>1846548
> независимо от пользы.
NRE, та которую назвали ошибкой на сколько там долларов, бесполезна
так и думал )
>Когда по умолчанию будет enable
он не может так быть. это вам не котлин, где это с самого начало и как положено. Тут это новая фича и включать по дефолту анализатор, когда весь написанный до этого код, не следует этим правилам - никто небудет

>код который использует его не будет меняться если нужно будет сделать дополнительную проверку
как это не будет если будет
если мне нужно будет вместо if(val!=null) сделать if(val!=null && val !="foo") то что обжект метод, что этот обобщенный сразу пойдут лесом.
В предикатный метод
ExecuteIfNull<T>(this T value, Predicate<T, bool> pred, Action action)
еще можно добавить проверку, но сам такой метод не сильно лучше голого if (даже хуже)
Аноним 02/11/20 Пнд 20:34:25 18465561416
Аноним 02/11/20 Пнд 20:38:48 18465581417
>>1846448
>Посоветуйте плес че написать на микросервисах для резюме.
Напиши имеджборду.
Аноним 03/11/20 Втр 01:51:56 18467531418
>>1845991
>>1846019
>>1846041
Спасибо. Но оказывается есть решение, через библиотеку Interop офиса.

using Access = Microsoft.Office.Interop.Access;

access = new Access.Application();
access.OpenCurrentDatabase(@"bd.accdb", true, null);
string ret = access.Run("func", myarg);
access.Quit();

(но блин, оно только для .net framework. Для .core нихрена, нет рабочей Interop... Хотя решение тоже нашел, руками вписать ссылку на com либу в .csproj (скопировав из проекта на нетфреймворке)
Аноним 03/11/20 Втр 07:35:47 18468691419
Меня не устраивает юнити. Потому я хочу сделать свой движок без фатальных недостатков этого самого юнити, правда, наверное, ограничившись исключительно 2д.
Так вот, есть ли что-то про архитектуры кроссплтформенных решений? Ну, скажем, я представляю чего мне нужно в конечном итоге получить с точки зрения пользователя движка и под винду я точно знаю как это сделать, а вот как сделать так чтобы оно на линуксе, и андроиде, как минимум, работало одинаково - уже нет. Я ради примера смотрел исходники всяких SDL/SFML(да-да, С/С++, но оно действительно кроссплатформенно), и там все выглядело примерно так: Вот мы зафигачили дефайнов затем прошлись #ifdef, там подключили под одним и тем же именем разные файлики с конкретной платформой и дальше фигачим. Так вот, как я понимаю в шарпе такой подход не будет работать, банально потому что тут препроцессорные директивы не делают таких вот крутых штук. А как тогда? Делаем разные реализации для каждой платформы(допустим обработку работы клаивиатуры), они имплементируют один интерфейс(допустим IUserInputProvider), а при настройке контейнера таки проверяем #IF где мы там запущены и запихиваем это в контейнер, ну а дальше просто фигачим на интерфейсах? Или как? Или что? Довольно сумбурно получилось, просто не имел опыта с написанием кроссплатформенного кода, обычно выбирал всегда то на чем мне нужно и фигачил.

Почему это тут спрашиваю? Очевидно же - буду делать на шарпике.
Аноним 03/11/20 Втр 08:55:26 18468771420
Аноним 03/11/20 Втр 21:18:07 18475521421
>>1845113
Этот видос кусок говна.
Аноним 03/11/20 Втр 21:23:55 18475581422
>>1845286
>GetHuinyaWithZalupa()
А если у меня не две сущности, а 15, или мне нужно чтобы сущности из нав. свойств вернулись с каким-то нав. свойством определенном в них? Прикольный выйдет метод GetHuinyaWithZalupaWithPizdaWithAnusWithGovno().

Чем больше погружаюсь в эту тему, тем более сомнительно этот паттерн выглядит.
Аноним 14/11/20 Суб 19:05:49 18561691423
>>1836747
А если в результате этой вашей рефлексии, проявляется детерминированность алгоритмики психики, которую можно автоматизировать и захардкодить кодингом кодерским?
Аноним 07/01/21 Чтв 14:42:38 19035841424
image.png 57Кб, 532x497
532x497
image.png 7Кб, 358x82
358x82
Аноны, почему у меня в ajax запросе в параметре налл?
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов