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

Ответить в тред Ответить в тред
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 ну чтобы ручками не писать. Он то знает где свойства чтобы в них вписывать
а с методами он должен угадывать что метод вида сетФу(бла, бар) это именно сеттер, а не просто метод в который лезть нельзя

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

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

Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов