Вы видите копию треда, сохраненную 28 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Литература вторым постом
1. Ресурсы:
— https://dotnet.microsoft.com/learn
— https://docs.microsoft.com/ru-ru/dotnet/csharp/
— https://metanit.com/
2. Онлайн-компиляторы:
— https://ideone.com/
— https://dotnetfiddle.net/
3. WinForms или WPF?
Зависит от задачи. Для небольших проектов, скорее всего, будет достаточно винформочек. В случае, если разрабатываемое приложение достаточно серьёзное, то возможно его стоит писать с использованием WPF. WPF очень хорошо работает с паттерном MVVM ( https://ru.wikipedia.org/wiki/Model-View-ViewModel ), и позволяет пилить очень кастомизированные интерфейсы с помощью XAML, что в случае с WinForms делать намного сложнее.
4. Мне тут знакомый_нейм сказал, что C# умирает, это правда? Может не стоит его учить?
Неправда. C# активно развивается, недавно вышел .NET 5 и С# 9.0. Дотнет стал полностью опенсорсным и кроссплатформенным. В том же энтерпрайзе он очень даже востребован.
5. Какую IDE выбрать?
Для Windows самым очевидным вариантом будет Visual Studio ( https://visualstudio.microsoft.com/ru/downloads/ ). Бесплатной Community-версии более, чем достаточно для большинства задач. Также есть версия для macOS.
Кроссплатформенный полуредактор/полуIDE VS Code ( https://code.visualstudio.com/ ).
Кроссплатформенный IDE Rider ( https://www.jetbrains.com/rider/ ).
Также существуют C#-плагины для Atom и Sublime Text, но функциональность там достаточно сильно урезана.
6. С# для мобильной разработки
https://dotnet.microsoft.com/apps/xamarin
Новые возможности C# 9.0: https://devblogs.microsoft.com/dotnet/c-9-0-on-the-record/
Текст шапки: https://pastebin.com/pbK8CGqw
— The C# Player's Guide, третье издание (RB Whitaker) — отличная книга для ньюфагов, всё расписывается довольно подробно, очень много примеров кода.
— C# 9 and .NET 5 – Modern Cross-Platform Development (Mark Price) — подойдёт для ознакомления с платформой. Затрагивает все технологии, имеющиеся в .NET (веб, мобильная разработка, машинное обучение), ни во что не углубляясь.
— C# 8.0 in a Nutshell (Joseph Albahari и Eric Johannsen) — огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином.
— C# 8.0 Pocket Reference (Joseph Albahari и Ben Albahari) — просто выжимка из книги сверху, можно всегда держать рукой.
— Pro C# 8 with .NET Core 3 (Andrew Troelsen) — 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
8. Более хардкорный материал
— 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 структура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче всё, что нужно, чтобы вам перезвонили.
9. Литература по WPF
— Pro WPF 4.5 in C# (Matthew MacDonald)
— Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
10. Литература по ASP.NET
— Pro ASP.NET Core 3 (Adam Freeman)
— Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
11. Литература по асинхронности и параллелизму
— Concurrency in C# Cookbook (Stephen Cleary) — книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции.
— Multithreading with C# Cookbook (Eugene Agafonov) — в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная.
— Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) — опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg.
12. Литература по мобильной разработке
— Creating Mobile Apps with Xamarin.Forms (Charles Petzold)
— Xamarin.Forms Projects (Johan Karlsson, Daniel Hindrikes)
— Mastering Xamarin.Forms (Ed Snider)
13. Литература по машинному обучению
— Introduction to Neural Networks for C# (Jeff Heaton) — изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
— Machine Learning Using C# Succinctly (James D. McCaffrey) — довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
14. Разработка игр
Unity-тред в /gd/
15. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако зачастую эти переводы неактуальны и/или содержат неточности. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в программировании без знания английского делать нечего. Если очень хочется, то гуглить по запросам: "C# 7.0. Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#".
Спиженные книги: https://mega.nz/folder/zdoCBLqY#Q6eS_76VECpQZmPmw9vLew
16. Что еще нужно знать, чтобы взяли работать за еду?
— Базы данных — подойдет любая книга по MSSQL/MySQL/PostgreSQL. DDL, DML. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper.
— Системы контроля версий — обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote, diff, разрешение конфликтов.
— GitHub — issues, пулл-реквесты, теги, релизы, Actions.
— Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
— Структуры данных — связанные списки, деревья (бинарные, красно-чёрные, b-деревья), хеш-таблицы, графы.
— Если идти в веб — HTML, CSS, JavaScript, веб-сокеты, REST, JS-фреймворки (Angular, React, Vue).
— Паттерны проектирования, стиль кода, архитектура приложения, внедрение зависимостей, MVVM (если хочется в WPF), SOLID.
17. Я не умею читать, что посмотреть?
— C# Fundamentals: Development for Absolute Beginners — https://goo.gl/meyyxO
— Набор курсов по C# от O'Reilly Media (28 часов, на английском) — http://rutracker.org/forum/viewtopic.php?t=5082978
— Канал по C# IAmTimCorey (на английском) — https://www.youtube.com/user/IAmTimCorey
— The C# Player's Guide, третье издание (RB Whitaker) — отличная книга для ньюфагов, всё расписывается довольно подробно, очень много примеров кода.
— C# 9 and .NET 5 – Modern Cross-Platform Development (Mark Price) — подойдёт для ознакомления с платформой. Затрагивает все технологии, имеющиеся в .NET (веб, мобильная разработка, машинное обучение), ни во что не углубляясь.
— C# 8.0 in a Nutshell (Joseph Albahari и Eric Johannsen) — огромнейший справочник, over 1000 страниц, покрывает почти все области, начиная с синтаксиса и базовых типов и заканчивая интеропом и рослином.
— C# 8.0 Pocket Reference (Joseph Albahari и Ben Albahari) — просто выжимка из книги сверху, можно всегда держать рукой.
— Pro C# 8 with .NET Core 3 (Andrew Troelsen) — 1600-страничный учебник по шарпу, покрывает BCL, WPF и ASP.NET, небо и даже аллаха.
8. Более хардкорный материал
— 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 структура", кастинг, боксинг, перфоманс регулярок, коллекций, исключений. Короче всё, что нужно, чтобы вам перезвонили.
9. Литература по WPF
— Pro WPF 4.5 in C# (Matthew MacDonald)
— Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
10. Литература по ASP.NET
— Pro ASP.NET Core 3 (Adam Freeman)
— Professional ASP.NET MVC 5 (Jon Galloway, Brad Wilson, K. Scott Allen, David Matson)
11. Литература по асинхронности и параллелизму
— Concurrency in C# Cookbook (Stephen Cleary) — книга, написанная в формате "проблема - решение". Кроме базовых вещей, вроде асинков и параллелизма рассматриваются TPL Dataflows, Rx (реактивные расширения), тестирование всего этого асинхронного добра, ну и работа этого всего на более низких уровнях абстракции.
— Multithreading with C# Cookbook (Eugene Agafonov) — в основном ничего интересного, но есть довольна неплохая глава про синхронизацию, пусть и не слишком детальная.
— Pro Asynchronous Programming with .NET (Richard Blewett, Andrew Clymer) — опять же, интересного немного, но неплохие главы про асинхронность + UI и анализ дампов памяти в windbg.
12. Литература по мобильной разработке
— Creating Mobile Apps with Xamarin.Forms (Charles Petzold)
— Xamarin.Forms Projects (Johan Karlsson, Daniel Hindrikes)
— Mastering Xamarin.Forms (Ed Snider)
13. Литература по машинному обучению
— Introduction to Neural Networks for C# (Jeff Heaton) — изучение нейронных сетей с примерами кода на шарпе. Под конец пишем программу для распознавания символов и нейроботов.
— Machine Learning Using C# Succinctly (James D. McCaffrey) — довольная коротенькая книга на тему машинного обучения с примерами кода на C#. Ничего особого: k-средние, классификация, наивный байес, но с кодом, который всегда можно поразбирать, если что неясно.
14. Разработка игр
Unity-тред в /gd/
15. Но я не знаю английский, как я буду это все читать?
На некоторые из перечисленных книг есть переводы, которые можно найти на том же рутрекере, однако зачастую эти переводы неактуальны и/или содержат неточности. Кроме того, переводы обычно пилятся только для нескольких самых популярных книг, более-менее серьёзный материал не переводят. Всегда можно сесть со словарем и понемногу читать, переводя непонятные фрагменты. Это очень полезно, так как в любом случае в программировании без знания английского делать нечего. Если очень хочется, то гуглить по запросам: "C# 7.0. Справочник. Полное описание языка", "C# для профессионалов. Тонкости программирования", "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#".
Спиженные книги: https://mega.nz/folder/zdoCBLqY#Q6eS_76VECpQZmPmw9vLew
16. Что еще нужно знать, чтобы взяли работать за еду?
— Базы данных — подойдет любая книга по MSSQL/MySQL/PostgreSQL. DDL, DML. Джойны, индексы, нормализация. В контексте шарпа еще ORM: Entity Framework, Dapper.
— Системы контроля версий — обычно гита достаточно: add/commit/push, merge, rebase, checkout, remote, diff, разрешение конфликтов.
— GitHub — issues, пулл-реквесты, теги, релизы, Actions.
— Алгоритмы — сортировка, поиск, оценка сложности алгоритмов, рекурсия, алгоритмы на строках.
— Структуры данных — связанные списки, деревья (бинарные, красно-чёрные, b-деревья), хеш-таблицы, графы.
— Если идти в веб — HTML, CSS, JavaScript, веб-сокеты, REST, JS-фреймворки (Angular, React, Vue).
— Паттерны проектирования, стиль кода, архитектура приложения, внедрение зависимостей, MVVM (если хочется в WPF), SOLID.
17. Я не умею читать, что посмотреть?
— C# Fundamentals: Development for Absolute Beginners — https://goo.gl/meyyxO
— Набор курсов по C# от O'Reilly Media (28 часов, на английском) — http://rutracker.org/forum/viewtopic.php?t=5082978
— Канал по C# IAmTimCorey (на английском) — https://www.youtube.com/user/IAmTimCorey
О, нихуя, получается, можно изменять интернированные строки
>пук жабакала
C# летит туземун в трендах у разработчиков, а в этом году уже появились первые стартапы на нем.
Правильно ли я понимаю.
Вот есть петухон, стильный модный молодежный. Пилят к примеру проект на Django. Ясное дело что он будет медленнее чем жава или шарп. Но тогда почему выбирают именно петухон?
Разработчик дешевле да и планку оперативы легче вставить чем нанимать жависта или шарписта?
>Разработчик дешевле да и планку оперативы легче вставить чем нанимать жависта или шарписта?
Да.
>Django
В вебе, во-первых, нет жестких требований по производительности: юзер не заметит разницу отрисовалась его страничка за 300 или за 400 ms. Во-вторых, все оптимизации производительности работы кода приложения почти незаметны по сравнению с временем затрачиваемым на запросы в базу, кеш, другие сервисы. Ты скорее упрешься в Ethernet, чем в скорость работы кода.
Думаю это от него скорее и ожидали. Я с unsafe, байтиками и игрищами с указателями я, скорее всего, пошел не в ту сторону.
А тут - нет вероятности перезатереть что-то полезное и вообще, выглядит оно не так страшно и вообще, более ООПшно.
Хотя, задание для стажера, какое-то странное на самом деле.
>Но тогда почему выбирают именно петухон?
Потому что изначально пайтон создавался с прицелом на академеков и близких к ним. Чтобы пр ивозникновении какой-нибудь обсчитываемой концепции они могли по быстрому накидать прототип и проверить ее, не будучи задротами от мира IT. Ну а потом уже если концепция подтвердится, то либо так и оставить, либо переписать на чем-нибудь побыстрее. Вследствие этого, в пайтоне очень хорошо срабатывает метод "хуяк-хуяк и в продакшен". Особенно когда нужно по быстрому сваять проект и показать инвесторам, а вот когда они подкинут бабла, тогда уже можно нанять бородача, который узкие места оптимизирует на сях, либо на джависта/шарписта который все перепишет. Ну или оставить все как есть, потому что похуй, бабки получены, проект хоть как-то работает и ладно.
Подробнее? Нужно за три сотки купить какой-нибудь курс по нейросеткам и запилить все самому?
Тред легаси-эдишн
>нейросеткам и запилить все самому?
А потом потратить тыши даларов на обучение.
Уже все придумано и обучено.
zennolab.com/ru/products/capmonster/
xevil.net/ru/
Два чаю. Девочек нужно было.
мантры решеткобляди)
По факту спустя год после релиза. До NET5 были проблемы с подключением бд не от майков и скоростью на линукс серверах. Это еще учитывая, что первая открытая версия дотнета вышла в 2016.
>предыдущие 20 лет релизов, оказывается, больше не релизы
Вообще какой смысл пилить стартап на шарпе, когда для этого есть более подходящие инструменты? Ну тот же питухон, нода или го, с которыми скорость разработки будет выше, чем на шарпе, на которых легко можно писать микросервисы и встраивать в контейнеры. Быстрый старт, сервисы много не жрут. А что дотнет? Ровным счетом такая же ситуация, как и у жабы - долгий старт, большое потребление памяти.
Нормального DI в шарпе до сих пор нет, увы. Если так сильно нужен DI, то лучше смотри в сторону жабы и спринга.
Серьезные фирмы с шарпом до сих пор IIS используют, который только под винду идет. Ну и вообще во многих местах еще очень много всего завязано на инфраструктуре майкрософта.
А так, можно райдер использовать, имхо в разы лучше чем VS.
неткору похую на какой оси работать. Я девелопил и дебажил свое говно под виндой, и деплоил в прод в никсовый кокер контейнер
Так вот. Это было десктопное приложение. Сейчас - переносится в облака. Менеджеры - хотят чтобы вот эта вот фигня была и в облаке. Я - не совсем понимаю, можно ли это вообще реализовать в контексте облаков так как было раньеше. Да, TCP и протоколы - без проблем. Но в видении архитектора нашего - должны и USB, и COM и все остальное поддерживаться. Ну, он видит это как ряд микросервисов каналов связи. И тут возникает вопрос: А как эти микросервисы будут про протоколы узнавать? Опять же, в видении нашего архитектора - должен быть отдельный микросервис для протоколов и, примерно следующее взаимодействие: клиент шлет запрос микросервису канала связи, указав протокол, уже микросервис - обращается к сервису протоколов - и получает нужный протокол, затем начинается взаимодействие. Только вот как, блджад это-то реализовывать? Как мы можем-то по HTTP - передать протокол взаимодействия, не костыляя протокол для сериализации этого протокола? Я - не понимаю. Тем более, что разные протоколы дают возможность разного взаимодействия: тут - мы можем только посмотреть аптайм устройства и серийный номер, а там, если устройство протокол поддерживает - по хардкору - включать-выключать датчики, читать логи работы, замыкать-размыкать релешечки.
Я вижу возможным решением только: у нас есть DLL с протоколами, все каналы связи - эту DLL получают, затем достают протокол оттудова, генерируют клиенту JSON с ViewModel того что можно по протоколу делать, ну а дальше - работаем. А вот этот вот микросервис протоколов - выглядит, по моему, странно. Но может быть вы шарите лучше и поясните мне, как оно может работать.
>райдер
Он платный. Ещё летом можно было продлевать лицензию через удаление пары файлов в конфиге, а теперь они прикрутили авторизацию на их сайте.
С таким подходом бывают очень неприятные баги, когда в винде - все отлично работает, но разворачиваешь на сервере - хуяк, все по пизде пошло и ошибки всплывают там, где ты их вообще не ожидаешь.
Как ты запускал ехе-файлы в линуксе?
Я бы вот так сделал. В душе не ебу что хотят эти вот составители задания. По времени - не оптимально(если элемент не граничный - мы должны пройтись до того, который больше него и вставить). По памяти - не оптимально(создаем буффер для сортировки элементов). Зато просто и быстро реализуется.
>в чем он не прав?
Перетолстил. Сработает разве что для тех кто программирование только в мемах видел.
Ну, тошнить-то тошнит. Но я стараюсь и в этом говне находить плюсы. Верстку правда я делаю на похуй, но кроме сеошников и мамкиных фронтов - никто не жалуется, потому что со стороны клиента-то оно одинаково выглядит, а эта вся семантическая хуйня - ну, идите нахуй, я бекендер, а мы вообще-то делаем тырпрайз хуйню, которая будет внутри корпаративной сети работать, какая еще нахуй сео-оптимизация, болезненные?
Правда глаза колет..
удваиваю, вот сейчас ищу работку без этой поебени бо с прошлой уже желчь идёт горлом
Какое-то ебанутое задание. Спасибо, хоть за такое решение, а то отправил бы ничего
С какими ботами? На чем умеешь на том и пиши.
Что это и как тебя угораздило?
Половина обучающих видео по . Net-у в ютубе на маках записано. Есть знакомые .net помидоры которые только на маках работают. Я не спрашивал, но сужя по всему они довольнфв. Даже сами майки на последних презентациях с собой эпловскую технику таскают. Так что думаю работает норм.
Потому что сборка мусора обычно не занимает несколько секунд.
Но если тебе не верится в то что в доках написано вот пример. https://ideone.com/OVf7ew запусти сначала так, а потом раскомментирую явный вызов сборки мусора, разница в скорости работы будет заметна.
>Фактор сортировки это типа якорь для быстрой сортировки?
>Ещё и как отсортировать не полностью, чтобы итератор выдавал отсортированное начало, и не тратил время на конец
Фактор сортировки - это как раз чтобы ты мог определить, где конец и какие данные можно считать отсортированными. А так - нормальное задание на джуна.
В шапку, как по мне, следует добавить гитхабы опенсорсных хороших проектов, типа Nancy, NetCoreServer, mono и собственно самого .Net и ASP.Net(предложите еще свои варианты)
Мотивация. Как по мне - многие нюфаги - не умают читать чужой код(да и где им учиться-то?). Плюс, они не умеют отличать хороший код от плохого. Изучение хороших репок - помогает в этом. Ты, как минимум - не будешь впадать в состояние первобытного страха, увидев проект на 200мб исходников и мыслью: Я лучше перепишу сам, чем буду в этом разбираться.
Да, скажите, что кто хочет - сам посмотрит. Но как по мне - на этапе: я уже что-то знаю и могу писать какие-то вещи, хочу посмотреть - человек еще не имеет насмотренности в плане кода, чтобы отличить хороший код от плохого и понимать, почему те или иные решения приняты. И в отличии от того же обучения в вузе - нет возможности смотреть как другие делают, спрашивать мудного препода, который пояснит что-то.
В общем. Что думаете насчет?
Ну, я вот мидл. Я понял зачем нужен фактор сортировки, но мне настолько лень разбираться и городить что-то, что ИРЛ я бы сдела что-то в духе:
return inputStream.OrderBy(x=>x);
И на собесе бы я бы попросил показать, где в их проектах они вот такие вот велосипеды городят. Если не городят - то хули вы мне мозги делаете. А если таки да, то я бы сам сказал: Вы мне не подходите.
Просто сравните джаву с .NET (https://jdk.java.net/18/release-notes), который создавался превратился в прекрасного лебедя
Винда сама обновляет дотнет. А если у тебя винда не поддерживает актуальную версию, то надо обновлять винду. Кто сидит на старых вёндах, у того вообще ничего не работает.
Цель: хочу укатить в гейдев прогером на той же юнити хотя бы.
Вопрос: хули мне делать дальше? Уже начинать пилить свое инди говнище для ПОРТФОЛИО, или пока рано? Что после той книги изучать? Я сам хотел литру по алгосам или по написанию не говнокода. Все правильно? Помогите мне!
Ну ты то в шарпотред припёрся срать - только бы на джаве не писать.
Почему продолжают выпускать новые версии джавы если все до сих пор сидят на 8-й?
>Что после той книги изучать? Я сам хотел литру по алгосам или по написанию не говнокода.
1) Шаблоны игрового программирования. Роберт Найстром.
2) Иди в /gd
Вместо List<T> лучше подходит ObservableCollection<T>, но... И даже если я заменю, то потеряю в функциональности - например у ObservableCollection<T> нет Sort().
new ObservableCollection<Shit>(ListOfShits)? Но это же только скопирует ссылки, а изменений всё равно не будет.
У List<T> ещё и событий нет.
Для юнити полно курсов и готовых минипроектов. Только не обучайся по видео с ютуба.
Знание шарпа тоже поможет, только внимательно чекай разные фичи и сахар. Многое в юнити не работает, да и версия языка запаздывает.
Падажжи а как тогда обучаться? Вообще я планировал просто свой аналог галаги сделать с одной механикой, спиздив бесплатных ассетов
Вообще все не так однозначно, проектов на .NET 5, а тем более 6 довольно мало. Как мне кажется, во многих местах до сих пор сидят на коре с кусками фреймворка.
На яве 8 версия просто потому, что переезжать на новые версии смысла особого нет. Вот уже начиная с 17 версии смысл есть, так как спринг 6 будет поддерживать жабы начиная с 17 версии. А там может годика через 2 лум и вальхаллу подвезут, вот тогда начнется массовая миграция на новые версии.
>Падажжи а как тогда обучаться?
https://learn.unity.com/ например. Книги по юнити тоже есть, курсов полно. Официальная документация тоже подойдёт.
Просто юнити прощает и поощряет невероятно припизднутые вещи. Поэтому существует множество инфоцыган, которые берут какую-нибудь типовую задачу, делают по принципу "ну работает же", записывают видос с умными комментариями и оставляют ссылку на патреон.
Массовая миграция с жабы на новые версии дотнета, пофиксил. Видел бенчмарки, жабий спринг во всем проигрывает asp net core. Это если помнить, что в жабью виртуальную машину десятки корпораций вкладывались ресурсами, а на выходе такой жидкий пук получается спустя 25+ лет, пока майки считай в соло дотнетом занимались
Это что, сайт из девяностых?
Аааа... в этом смысле. Этот сайт знаю, 30% их курса прошел, сейчас особо времени нет. Но спасибо!
Хоть кто-то понял
Переписать код со спринга на asp.net будет тяжеловато, имхо.
А жабий спринг медленный потому что там под капотом буквально все завязано на рефлексии и прочей магии, которая обеспечивает работу DI. Да и к тому же сам томкат сервер не шибко быстрый сам по себе.
Ты всегда можешь написать свою коллекцию, реализующую NotifyCollectionChanged. Внутри можешь использовать тот же лист. Но вообще тебе стоит погуглить, как это делается в впф. Что-то я смутно припоминаю, для листвью и прочих контролов есть вариант сортировки на стороне вью.
Вот, допустим, у меня есть какая то таблица, в ней есть ID, я хочу получить максимальный ID этой таблицы.
Средствами sql все просто - SELECT MAX(ID) FROM Table_Name, а с энтити всё геморройно.
Да, можно прямым способом,
int id = context.Table.ToList().OrderByDescending(t => t.ID).First().ID - но это ппц какой удар по производительности, если строк много.
Есть вариант создать некую промежуточную сущность
class MaxID {public int Id{get; set;}
и написать код типа этого
int id = context.MaxID.FromSqlRaw("SELECT MAX(Id) as Id FROM Table_Name").FirstOrDefault().Id;
Это работает, но тогда создаётся в бд лишняя таблица нахуй там не нужная. А если на класс повесить атрибут [NotMapped], то таблица не создаётся, но и код без таблицы не работает.
Есть варианты, что можно сделать?
А вы как-нибудь документируете ваши баги и архитектурные косяки? Какой софт для этого используете, если используете? Какие вопросы себе задаёте, когда описываете допущенный именно вами баг? Возвращаетесь ли к чтению этих описаний, или исправили, описали и забыли?
Моя идея в том, что если задавать себе, помимо вопросов о том, в чём именно баг и как его надо исправить, ещё и вопрос "почему же я затупил", и "как не тупить подобным образом в будущем", то можно навести чуть больше порядка в своей голове и в итоге пореже ходить по граблям. Вот только не совсем уверен, что это сработает.
Нет, у меня 99% багов - не тот символ поставил, не с той переменной сравнил и т. д. От невнимательности короче. Что тут документировать? Архитектурные просчёты - тут тоже бывает скорее из за незнания каких то нюансов, допуск подобных сам проходит, когда разберёшься.
95% багов которые у меня были, сдетекченные на этапе тестирования - из-за моей невнимательности и отсутствия четкого ТЗ с тем что нужно.
Допустим. Сказано: держать соединение с клиентом, но при этом, если клиент не выходит на связь при пинге, считать соединение потерянным. Окей. Я делаю: отдельный тред, который по таймеру проверяет время, когда был последний сеанс связи, если истек таймаут - пингую, если в течении заданного в настройках интервала не пришел ответ - считаю что связь утеряна. НО оказывается-то, на заводе производителе - забыли это во многие железки заложить, потому - вот эта вот модель устройств - не отвечает на пинги и сама наоборот шлет пинги мне, я должен отвечать. Мне это кидают в багтрекер, только, блядь, ни в ТЗ, ни в тех доках устройства про это нет, просто вот тестировщики - знают про эту особенность ряда устройств, а я - нет, не знаю, вынужден это узнавать из баг-трекера.
Так вот. Моменты с невнимательностью - не фиксирую никак. Это обычно 1 строчка исправлений, потому похуй.
Моменты с отсутствием информации - фиксирую в текстовом файлике в проекте в папочке DOC для проекта и комментаторами в коде в духе:
// Едрить его в корень, оказывается надо вот так, потому что вот так вот
Относительно архитектуры - нигде не фиксирую, разве что в коде - говеные решения помечаю TODO для рефакторинга.
Но ведь этих багов тоже можно было бы избежать. Какие-нибудь там линтеры или статические анализаторы кода могли бы помочь, например. Или сразу написанные тесты.
>>249563
Ясно.
Я в общем-то примерно так же действую, но у меня иногда бывают баги не просто по невнимательности, а из-за неверных предположений, которые я сразу мог бы опровергнуть, если бы логически докопался бы до истины.
Ну вот например, очень тупой баг. Фиксирую изменения в неком каталоге. Если файлы в нём исчезают - добавляю их имена в список удалённых. Если изменяются или появляются новые - добавляю их в список новых. Суть в том, что создать что-то вроде инкрементального бэкапа. Вот только почему-то я предполагаю, что этих списков достаточно. А по факту файл может быть сначала удалён, а потом может снова появиться. В итоге дважды фиксируя изменения получаю хрен знает что. Логически можно было бы подумать, что изменение может быть либо туда, либо обратно. Либо файл удаляем, либо обновляем. Но не то и другое одновременно. Стало быть, если он всё-таки появлялся и удалялся, то из первой фиксации изменений данные об удалении или добавлении надо выкинуть. Но я почему-то об этом сразу не подумал. Подумал чуть позже, и в итоге обнаружил, что бэкап-то уже кривой, пришлось руками чинить.
Невнимательность - да. Чёткое ТЗ отсутствует - да. Может быть, проблема в том, что я начал пилить решение раньше, чем полностью продумал его. Но заранее полностью построить решение в голове как будто бы трудно. Не знаю, это нормальное явление, или мне лучше в таксисты пойти?
> это нормальное явление
Нормальное. Нужно максимально уточнять что от тебя хотят, долбя разными сценариями взаимодействия с твоей системой. Да, когда будешь совсем-совсем старым сеньером и все эти сценарии уже миллион раз делал - какие-то общие вещи можно не уточнять, но, я так понимаю, ты не древний сеньер-помидор, а задача для тебя новая, а потому что-то не понимать или не учитывать - норма. Для того и существуют разные этапы разработки. И да, сейчас проблема в том, что программисту говорят в общих чертах, что от него хотят, в итоге ты - идешь с завязанными глазами, доверяясь интуиции, и всегда оказываешься крайним из-за того что что-то не предсказал. Просто запомни это, в следующий раз - будешь знать что вот в таком сценарии нужно еще и это учесть.
bump
Ну, в целом да, спасибо, работает. Показал как сделать это средствами Еф. Правда тестирование показало что выполнение через встроенную функцию раз в 15 быстрее, но тут уже никуда не денешься..
Чивооо? Это транслируется ровно в тот же sql запрос, что ты приводил. Посмотри в логах. Но а если ты сравниваешь скорость выполнения зароса в базе со скоростью выполнения запроса + маппинг да всё это с включенным чейнж треккером, то чтож, земля пухом.
Нет, наоборот. В большой компании ты можешь будучи стажером и даже джуном, первые месяцы нихуя не делать, почитывая мануальчики на онбординге. А потом еще полгода будут подтирать сопли.
А в обычной конторе джуном тебе максимум неделю дадут на то, чтобы въехать, а потом ебашить начнешь. А стажеров туда обычно не берут, а если и берут то таких, на которых сразу пахать можно.
Ну я про это и говорю, что EF по умолчанию будет много всякого тормозящего но иногда полезного делать. Наверно, кстати, это поведение можно и переопределить, но не уверен что мне настолько хочется лезть в эти дебри.
Пока что выглядит всё так, что ты вообще не понимаешь, о чем говоришь. Если EF делает что-то лишнее на твой взгляд, то тебе в этой задаче EF не нужен. Поскорее бы тред утонул снова.
другой анон
Начнём с того, что EF по сути - это синтаксический сахар. Нет ни одного случая, когда нельзя обойтись без EF и не сделать всё силами чистого sql. Цель EF - писать более лаконичный код. Ну и позволять более умным людям заботится о тех вещах, о которых ты мог забыть или не знать.
И делать что то лишнее - он вполне может. Вот как пример. Недавно пришлось работать с sql, которая была подключена как linked server к серверу, к которому у меня был доступ. И не секрет, что EF обёртывает все изменения в бд - в транзакцию. И вот при такой работе как с linked server - для работы транзакций нужно для каждой сессии добавлять set xact_abort on, иначе вылетает эксепшн. В целом то это реализуемо, но если транзакция по смыслу не требуется, то EF добавляет лишнее усложнее (Ну и ещё надо учитывать моё время и нервы, пока я в этом разобрался).
> EF по сути - это синтаксический сахар
Ты не знаешь, что такое синтаксический сахар, потому что это не синтаксический сахар даже если очень много скидок тебе дать.
> Цель EF - писать более лаконичный код
EF -- довольно стандартный ORM. Цель его -- быть ORM, то есть быть адаптером между РСУБД и ООП-языком.
> но если транзакция по смыслу не требуется, то EF добавляет лишнее усложнее
Когда я только начал изучать аспнет, весь интернет кричал на меня, что EF реализует паттерн UoW и все оборачивается в транзакцию. Это тяжело не заметить.
Также хочу обратить твоё внимание, что всё сказанное выше справедливо для всех полноценных и зрелых ORM. То есть это не особенности EF, это особенности целого класса инструментов. Ты просто не понимаешь, зачем этот инструмент нужен и сравниваешь хуй с пальцем. Повторюсь, поскорее бы тред снова утонул.
>ы просто не понимаешь, зачем этот инструмент нужен
Если бы инструмент был нужен только для одной цели - там был бы один метод - Выполнить. А так как там туева хуча разных настроек, опций, возможностей и т.д. - то целей его применения может быть дохерища. И да, вполне возможно что то из его базовой реализации мне не нужно.
> Если бы инструмент был нужен только для одной цели - там был бы один метод - Выполнить.
Ты не понимаешь сложностей склеивания ужа с ежом, то есть реляционного мирка с объектным. ORM решают довольно сложную задачу, поэтому там много нюансов и сценариев, в которых хочется всё вручную решить. По-другому никак, они сделаны из компромиссов. Я не хочу тебе это объяснять, потому что это уже лет двадцать в интернетах со всех сторон обсасывается и все трудоустроенные аноны из этого треда должны бы понимать, зачем ORM нужны и какие проблемы решают.
Например, чтобы забиндить ListBox к коллекции с отражением изменений, нужны:
- System.Collections.Specialized.INotifyCollectionChanged
- System.ComponentModel.INotifyPropertyChanged
Но это я смог понять, изучая ObservableCollection<T>. А "нормально" как?
>>249421
ListCollectionView это, как я понимаю, класс не для хранения данных, а для вывода в ГУИ.
>>249901
>Как так вышло?
Это ж BCL, откуда мне знать.
>какие должны быть интерфейсы у объекта, чтобы его можно было биндить в ВПФ
Виндится всё.
>смог понять, изучая ObservableCollection<T>. А "нормально" как?
Зайти на мсдн и прочитать как работает система биндинга
https://docs.microsoft.com/en-us/dotnet/desktop/wpf/data/?view=netdesktop-6.0
> Ты не знаешь, что такое синтаксический сахар, потому что это не синтаксический сахар даже если очень много скидок тебе дать.
Да никто не знает, везде пихают этот дебильный термин, всё что угодно им называют. Откуда эта мода пошла?
Нет такой моды. По крайней мере, в моём окружении. Это только на двачах то и дело встречаются шизики, которые не хотят ни в чем разбираться и додумывают значения устоявшихся терминов по своим ощущениям.
Это конечная.
Ладно, я согласен, что синтаксический сахар здесь может быть неправильно использовать, поскольку этот термин должен применяться к элементам языка, а EF - это фреймворк.
Но всё таки, EF - фреймворк, который не делает (не должен делать по своему прямому предназначению) никакой полезной работы, кроме как позволяет не писать sql код, а работать с бд как с объектами.
Поэтому если сделать допущение, что синтаксическим сахаром можно назвать фреймоврки - то EF - первый кандидат.
> Поэтому если сделать допущение, что синтаксическим сахаром можно назвать фреймоврки
На этом месте врач делает пометку в медкарте, закрывает её и просит увести тебя в палату.
>Поэтому если сделать допущение, что синтаксическим сахаром можно назвать фреймоврки
Так можно додопускаться, что любой ЯП является синтаксическим сахаром по отношению к байткоду. Только вот зачем?
Нет, просто спрашиваю хорошую на твой. Я находил только совсем старьё сомнительного качества и что-то вроде бы неплохое, но в каком-то глазоебательном виде.
У меня была какого макдональдса, не скажу что очень полезно, но какие-то моменты там вычитывал. Но МСДН лучше.
Наебнут опять. Они поиграются и выбросят. Кароче пойду дальше редукс ковырять.
>Не помогло, я делал React/TS, меня вся экосистема фронтовская выбешивает.
Меня по началу от реакта тоже тошнило прям. Но потом поработал и немного пообвыкся. Правда только на той версии что на классах. Та что на хуках, до сих пор омерзение вызывает.
Троэлсен норм вариант? Или может курсы от хохлов из itvdn?
> кому нахуй нужен сегодня нативный UI.
Как бы любым адекватным людям? Для телефона это норма, а на компьютере их не хватает, все делают кривые уродские лагающие сайты. А у тебя будет няшка на Maui
По шарфу нет хороших книг. Совсем.
Это тебе не как в джаве с её великолепными шедеврами вроде двухтомника Хорстмана или философией Эккеля. А Блох?
Эх, хоть сами пиши книги...
Троелсен норм, из того что есть
Если что то по основам шарпа с примерами хорош этот ресурс
https://metanit.com/sharp/tutorial/4.12.php
В глубину он не часто лезет, но и побольше большинства чисто справочных
Напиши простой код:
yield return 2;
yield return 3;
и посмотри каким нибудь ILSpy'ем во что это превращается, и вся магия пропадет
>Легко далось изучение асинхронности
async/await? Довольно странно, там компилятор изъебывается намного сильнее и извращеннее. чем при yield
>async/await
Хотя бы понимаешь, для чего это нужно и когда применяется. С yield что-то затупил, а тут еще iAsyncEnumerable какой-то появился.
>для чего это нужно и когда применяется
если на пальцах
async/await - чтобы не пердолить руками продолжение задач
yield - чтобы не пердолить руками enumerator'ы
Как блять вычислить цену? В своей конторе я получаю 8-10 долларов в час. Наверное легче всего оценить время разработки и подсчитать по тому же тарифу, что получаю на работе?
Так получается где-то 7-8 к долларов
Ну учитывая, что ты будешь один за всех на этом проекте, то надо повышать ставку. И тут вопрос. а ты можешь адекватно оценить время на проект? Я бы вот не смог.
Нас будет двое. Повышать ставку нужно бы еще за то, что я нихуя не шарю в мобильной разработке, планирую написать WEB API на core, потом подключить к мобилке с помощью флаттера или реакта. Думаем закончить за 3-4 месяца минимум.
>Как блять вычислить цену?
Отошли ТЗ в различные конторы и фрилансерам и посмотри сколько времени они запросят, и сколько денег.
Не начинать про что? Про что UI на шарпе виндовс онли, если делать без веба? Давай притащи ещё свою проститутки авалонию.
ТЗ еще написать нужно самому. Фрилансеров дотнетчиков в наших краях сложно найти, одни php-нишки кругом, а они и за шаурму работать готовы
https://metanit.com/sharp/tutorial/
Тут счёт на миллионы идет и полгода разработки очень слаженной командой из трёх-четырёх человек, не считая аналитика.
Ну вот на самом деле - хуй знает.
Я в вузе когда учился - как раз на метанит часто заходил. И вот например с событиями - было нихуя не понятно.
Вот цитата оттуда:
> События сигнализируют системе о том, что произошло определенное действие. И если нам надо отследить эти действия, то как раз мы можем применять события.
Вот какой, блядь системе? Как они сигнализируют и вообще что это должно значить-то, блядь?
Понимать как оно работает, я стал исключительно после того, как в вузе на плюсах, в ходе написания курсача - сам изобрел издатель-подписчики. Потом таки дошли руки и прочитал про паттерны. А вот на метаните - было нихуя непонятно. Просто пиздец.
Вот они, современные менеджеры.
Я б сделал в соло за месяц работы и месяц опытной эксплуатации. Деньги - 200к в месяц, итого 400к (если б у меня работы не было).
Ну если нужен прям красивый интерфейс - то плюс работа художника.
Метанит - это всё таки глубокий туториал, а не прям справочник.
Из плюсов - вполне по примерам оттуда можно писать рабочие программы.
А создание высоконагруженных и многопоточных систем - это да, в другом месте копать надо.
глубокий туториал
Поверхностный ткториал а-ля квикстарт.
>писать рабочие программы.
Doubt. Разве что хэлоуворды. А так шаг в сторону и всё - сел в лужу.
>в другом месте копать надо
Да в общем-то нет такого места где есть всё, придется много где рыть.
Даже если и есть техническая возможность сделать это на 7 (хотя наверняка заюзали что-то, что есть только в 7+), то нет смысла поддерживать то, что уже не поддерживается. Это же все равно будут затраты человекочасов.
Я хотел отдельно для доёбщиков написать, что это можно в соло за месяц-два-три сделать, если сам разработчик и хорошо владеешь предметной областью, имеешь в ней опыт, а ещё тебе это интересно, но тут явно ситуация не такая. Кабанелло хочет йобу для бизнеса, которую вряд ли сформулировал на уровне, пригодном для разработки. Кабанелло ищет разработчиков по знакомым, так как не понимает нихуя в разработке как отрасли и действует так, как если бы искал разнорабочих подешевле.
Кабанелло проебёт деньги и в лучшем случае получит криво работающий MVP, который на самом деле никакую конкретно полезную функцию не выполняет.
Ппц ты недалекий уровня офисного планктона. А вообще, твое мнение не несет никакой полезной информации, так как ты не в курсе проблемы. Это как ответы на мэйл ру.
Заходи еще.
Ну вот это да. Ко мне тоже неоднократно выходили с предложением написать ёбу для своего бизнеса.
Когда я пытался с ними сесть и детально обговорить техзадание - почти все резко ливали на первых шагах.
В итоге все хотят себе раба, который будет пилить все их хотелки за копейки.
>>251260
Программа - понятие растяжимое. Вот что то работающее для такой вот строительной программы - очень даже.
Конечно профессиональный продающийся инструмент - нет.
Еще бы, картинку с текстом в жпг сохраняет!
Рассказывай подробнее. Мы тут любим грязные сплетни.
>Когда я пытался с ними сесть и детально обговорить техзадание
Потому что они не знают чего хотят.
Типо сделайте мне красиво и шобы работало и шобы деньги приносило.
По этому надо сразу брать предоплату за составления тех задания, что бы заказчик был на крючке.
Ты не возьмешь ну значит другие возьмут.
Это сяоми, нигде нельзя поставить png. Что тут рассказывать, уже второй месяц пошёл
Двачую.
>>251331
> В итоге все хотят себе раба, который будет пилить все их хотелки за копейки.
Именно. А за копейки, да ещё чтобы работало и приносило прибыль, не бывает. Единственное исключение -- это если ты сам разработчик и очень интересуешься этой предметной областью, как я уже выше говорил.
>>251248
А когда кабанелло не может и не хочет сам думать, он покупает целую команду и она ему реализует проект, который будет работать и который даже принесёт многоденег, если кабанелло угадал с фичей и если команда правильно её проанализировала и реализовала. Причем, прибыль может быть не прямая. То есть задумка кабанеллы может не приносить прибыль напрямую, но окажется хорошим конкурентным преимуществом, которое привлечёт много новых клиентов в бизнесу. За это и платятся миллионы, в реальности так всё и делается. А два месяца и 400к в одни руки -- это фантазии.
Ну, я в целом не против, что б этот геморрой
>В итоге все хотят себе раба, который будет пилить все их хотелки за копейки.
взял кто то другой.
Ну а то что либо тот кто возьмёт имеет либо скилл разруливать такие ситуации, либо имеет в штате чувака что разруливает такие ситуации - ну что ж..
Гей шлюхи тоже дорого берут, но это не значит что я бросаю всё и иду в гейшлюхи.
>Гей шлюхи тоже дорого берут, но это не значит что я бросаю всё и иду в гейшлюхи.
Профессии отличаются только записью в трудовой.
Хорошо, если у тебя есть варики с такими кабанелло, который может заплатить несколько лямов.
А если не может?
Вот мне встречалась хозяйка небольной ветеринарки с зооаптекой. Лично знаю её, миллионы не таскала, так как не дс, но на жизнь хватало.
Приходила с предложением сделать ей экосистему. Что б были модули учёта и ведения клиентов, работы персонала, расходования материалов и товаров, а также онлайн запись клиентов.
Примерно то что хочет этот кабанчик, только без мобильного приложения.
В целом мы в цене всё таки не сошлись, она хотела за копейки, а у меня времени нет. Но если б раза в два подняла предложение, я б сделал. А с подходом как у этого еврея - даже близко было бы без шансов.
Малому бизнесу нужна готовая CRM и местный интегратор, который занидорага всё настроет и будет обслуживать.
> Что б были модули учёта и ведения клиентов
CRM.
> работы персонала
CRM.
> расходования материалов и товаров
ERP очень типовая конфигурация 1С, один хуй вся бухгалтерия через него у неё проводится.
> а также онлайн запись клиентов
CRM.
В этой истории встретились Биба и Боба. Биба думала, что для её очень стандартного бизнеса нет готовых инструментов. Боба всерьез готов был делать свой велосипед.
Варианты с CRM были и ей предлагали, только управляемые как раз вот такими евреями. И стоило это дороже того варианта, который я был бы готов сделать. И без некоторых фич.
Собственно с этого и началось, что она пришла с буклетом, сделать примерно также, но без красивостей.
>взял кто то другой
Другой взял но уже не за копейки.
Это как в автосервисах, клиент объездит 10 сервисов +- цена у всех одинаковая, и за копейки ни кто не работает. Клиента получит тот кто с него первый возьмет предоплату.
А потом окажется что этот клиент за свои бабки тебя и выебет.
Конечно если ты и не против читай - умение разруливать такое - то поздравляю.
Я предпочту работать с лояльными клиентами.
Бля пытался найти статью но не нашел.
Корочи смысл был таков.
У чела было $50к, и идея. Сервис в котором люди могут взять обзор на машину которую хотят купить.
Например видят что тачка продается в другом городе, заказывают на нее обзор, специально обученный человек идет и проверяет тачку, ну там не бита не крашена. Вся инфа сохраняется и потом выдается другим людям. Сайт +моб приложение.
Обратился он в компанию.
2 года разработки, ни денег ни приложения.
Пошел в суд, суд отказал ему в компенсации.
Чел просто не знал что хотел. Вот у него была эта идея а как дальше хуй знает. Наверняка по 5 раз на дню придумывал что то новое что тормозило разработку.
Имхо нужно сразу брать предоплату хотя бы $100 за составление тз. После того как ТЗ составили уже договаривается о цене. Как только договорились о цене то изменение тз влечет и увеличения стоимости разработки. А там уже поебать, пусть в конвульсиях хоть бьется, деньги то он платит частями, заплатил работаем дальше, не заплатил то пусть идет нахуй. И если клиент платит 3 копейки то и получает сервис за 3 копейки.
Лет так 7 назад на пьянке как то чел попросил смогу ли я ему запилить сайт. Ну я сказал хули там конечно смогу. Он попросил типо интернет магазин автозапчастей. Ну я накинул что во первых надо ИП, хостинг, домен. Так как дело в рб происходило в то время хостинг и домен уже влетали в 50$. Подключение сервисов оплаты. Заполнение каталога. Разработка дизайна. И это просто что бы был. А на рекламу еще тыши даларов. Ну вот после этого всего он ответил "Понятно, значит не можешь.".
Просто у него в голове созрел план а как реализовать его он хуй знает.
Я не спорю, что такой подход норм. Но это как отдельный скилл - умение и желание общаться с людьми, разжёвывать, составлять сметы, настаивать на своей позиции при оплате и т.д. С этим навыком - можно вообще программировать не уметь. У меня вон пол организации аналитиков таких.
У меня нет ни умения таким заниматься, ни желания. И без этого программированием на хлеб с маслом заработаю.
Потому что никакого стандартного не было. Майки его просто не добавляли, везде был свой зоопарк для работы с Джейсоном, пока не появился Newtonsoft.Json, который стал де-факто стандартной либой.
С очередной версией фреймфорка корпорация опомнилась и заставила разрабов делать свой Ньютонсофт, что было ошибкой. Через пару лет они уберут опять системную ассембли для работы с json, поняв, что лучше уже не сделают. Не помню, недавно что-то майки ещё убирали со словами юзайте gRPC)) wcf?.
Так ректал с тайпскриптом это интерпрайз мира фронтеда. 100500 зависимостей, вебпаки, гранты, хуянты, транскомпиляторы. Конечно с наскока такую порцию говна не получился съесть. Нужно было vue-няшу брать и на ванильном жс делать.
Вот такая есть
https://docs.microsoft.com/ru-ru/dotnet/architecture/blazor-for-web-forms-developers/
Так же хороший плейлист с уроками
https://www.youtube.com/watch?v=xLv31QztIGE&list=PLrTvxXQSRKAMAotVG4HV5jwNScrhYepKc&ab_channel=MasterProgger
Так же вот это ахуенное видео
https://www.youtube.com/watch?v=09GKW8ajGWk&ab_channel=CodeFestRussia
Показывает простоту блейзора.
И почему вы думаете что технология умрет?
Как по мне сейчас все языки идут к упрощению. Блейзор как раз таки и упрощает разработку. Зная просто синтаксис C# разобраться в ней не очень сложно. А вот если посмотреть на веб формс то это просто пиздец какой то. Имхо мне там нихуя вообще не понятно.
И вообще я думаю майки стремятся все упросить. Поставил VS и прогай. не надо ставить апачи хуячи ножс сервера и прочию хуйню. Так сказать программирование для тупых.
Ну а если блейзор медленный то и похуй. 16g ram 10$ стоят.
Вообще сейчас оптимизация стоит на последнем месте. Главное быстрее выкатить продукт.
>async/await - чтобы не пердолить руками продолжение задач
А если не использовать async/await, то пердолить что то вроде пикрилейтеда и постоянно вызывать Perform(), или выпердоливать коллбекового монстра?
Да что тут рассказывать, какое-то ебанутое интервью по тестовым заданиям. Ну я попутал в некоторых местах, они вдвоем даже не знают толком что им нужно, как мне на это ответить
Потому что во фронтенде React, Angular и Vue. Остального в дикой природе не существует. Кто возьмёт Blazor себе на проект, тот сядет на хуй, с которого нельзя будет быстро и безболезненно слезть. И тяжело потом будет новых разработчиков под эту хуйню находить. Буквально весь энтерпрайз понимает, что Blazor -- это игрушка, которую разве что в петпроджектах потыкать можно для разнообразия.
>Цель: хочу укатить в гейдев прогером на той же юнити хотя бы.
Там зряплаты говно, нахуй это надо.
Двачую. Все так и было. Был самостоятельным мидлом, которому техлид давал ебанутое задание и отправлял исполнять на месяц, ушел в корпорацию где ит отдел 2к рыл. Тут работаю по скраму. Так я тут только деградирую. Двигаю кнопки, изменяю сценарии в winform, пиздец короче.
В крупные конторы стажеров нанимают преимущественно среди студентов вузов, которые неплохо умеют решать задачи на литкоде, но при этом во всяких кишках фреймворков не сильно разбираются, как и толком не умеют ничего делать полезного.
У обычных контор нет денег обучать стажера, который умеет только в алгоритмы, поэтому стараются взять джуна, который уже умеет писать какие-нибудь круды на asp.net/spring/node.js/go, но при этом пусть и не умеет в алгоритмические задачки. Как-то так, на мой взгляд.
Под WTFPL+NIGGER
Вопрос следующий - где можно почитать для максимально быстрого вката информацию про взаимодействие логики клиента (js) с асп сервером? К примеру мне нужно на нажатие кнопки обновлять картинки на странице (без обновления самой страницы), но я также не хочу их выставлять в виде заранее готовых урлов, я хочу чтобы к примеру js отправлял на сервер условный id, сервер записывал в бд действие клиента и отправлял сырую пикчу клиенту.
Тебе нужно прежде всего перейти во-первых на TypeScript, во вторых взять фреймфорк из большой тройки: Angular, Vue, React.
Но Реакт всё таки для буйных, поэтому Ангуляр либо Вью остаются.
Писать фронт на чистом JS - это сегодня можно, но зачем, особенно если ты не из фронтовой разработке с опытом.
Есть ещё блейзор - но ты не верь что здесь пишут, мол будущее веба, это очередной UI высер от майкрософта, который умрёт через пару лет и прийдеться вилкой чистить упоминание этого шедевра в твоем резюме, как чистят веб-формс.
Джава апплеты мертвы уже наверное лет как 15, да и из самой jdk их полностью выпилили давно. Никто их возрождать уже никогда не станет, так как нет никакой необходимости крутить жаба код в браузере, когда есть js. Собственно, все эти апплеты, Flash, Silverlight сдохли давным-давно, потому что пришла эпоха джаваскрипта.
А webasm нужен для того, чтобы сложную графику отрисовывать, да и то, его почти никто не использует.
Олежка, привет, ты ещё жив?) Ты до сих пор здесь сидишь, вот уж не ожидал.
А по факту, давай по пунктам, что я не так сказал про фронтовую разработку, что поциенты мастдая сбежались.
> 80-90% похож синтаксис шарпа, все понятно, просто пробегаюсь глазами по нюансам
Схожесть синтаксиса -- это ни о чем. На фронте и на бэке практически противоположные подходы к управлению состоянием (на бэке оно живет короткое время между получением запроса и отдачей ответа, а на фронте оно живет долго, пока пользователю не надоест взаимодействовать).
> Вопрос следующий - где можно почитать для максимально быстрого вката информацию про взаимодействие логики клиента (js) с асп сервером?
Во-первых, тебя интересует не JS, а TypeScript.
Во-вторых, ничего быстро почитать не получится. Сделал MVP, понял проблемы, в следующий раз сделал что-то лучше, тоже понял проблемы, в третий раз ещё лучше...
В-третьих, если нет и не предвидится отдельных сильных фронтовых ребят, лучше взять Angular. Тоже фреймворк (а не библиотека), тоже есть DI, тоже есть ощущение энтерпрайзного спермяка во рту. Только как можно раньше освой RxJS и не пиши бизнес-логику в компонентах. Говорю по своему опыту и коллег опыту. У нас был проект, где нам сделали опытные чуваки фронт на Vue, который мы заебались поддерживать и который переписали на Angular.
> но я также не хочу их выставлять в виде заранее готовых урлов, я хочу чтобы к примеру js отправлял на сервер условный id, сервер записывал в бд действие клиента и отправлял сырую пикчу клиенту.
Я не специалист в JS (так же как и в шарпе, только вкатываюсь, до этого был небольшой опыт в джаве, ну и JS покопал с Реактом, все чисто на пет проектах, реальной работы не было, т..е. по факту я намного хуже тебя, лол).
это все делается через асинхронный джаваскрипт и технологию AJAX. Технология древняя как говно мамонта, недавно ее заменили на Fetch API (ну естессно индусы напилили кучу разных npm модулей поверх нее, к примеру AXIOS).
В общем для понимания того как это работает из под коробки, тебе нужно изучить как JS работает с DOM (ну это считай самые основы работы в браузере, т.е. буквально тебе нужно узнать как JS работает с ХТМЛ элементами на странице, как выбирает их и как изменяет их, как повесить на тот или иной элемент обработчик того или иного события), изучить как работает асинхронный JS (через промисы или асинк/авейты, что в общем тоже самое что и промисы только другой взгляд), а так же собсно изучить непосредственно сам Fetch API (ну или аксиос).
Грубо говоря, если не брать фреймворки всякие, при нажатии на кнопку срабатывает обработчик события, в этом обработчике посылается асинхронный запрос на сервер, там уже делается какая-то хуйня независимая от клиентской стороны, и тут же JS ловит ответ. Это может быть как и удачный ответ, так и ошибка, он может обработать оба в разных вариантах. И тут же ты ищешь элемент на странице, который хочешь изменить в соответствии с полученной информацией и тут же его и меняешь, никакого обновления страницы при этом не происходит.
Там все довольно просто и изучить при желании это можно за пару дней.
Тут говнари тебе зачем-то тайпскрипта насоветовали, но тайпскрипт здесь не при чем. Это все равно что посоветовать вижуал бейсик в вопросе про технологию .NET. Типа, ну да, может где-то и удобнее он, но это блядь просто блядь другой вариант описания, лол. Ну или в спринге вместо джавы посоветовать использовать котлин, типа, ну да, так красивее, но ответа на вопрос "как сделать это" не дает.
> но я также не хочу их выставлять в виде заранее готовых урлов, я хочу чтобы к примеру js отправлял на сервер условный id, сервер записывал в бд действие клиента и отправлял сырую пикчу клиенту.
Я не специалист в JS (так же как и в шарпе, только вкатываюсь, до этого был небольшой опыт в джаве, ну и JS покопал с Реактом, все чисто на пет проектах, реальной работы не было, т..е. по факту я намного хуже тебя, лол).
это все делается через асинхронный джаваскрипт и технологию AJAX. Технология древняя как говно мамонта, недавно ее заменили на Fetch API (ну естессно индусы напилили кучу разных npm модулей поверх нее, к примеру AXIOS).
В общем для понимания того как это работает из под коробки, тебе нужно изучить как JS работает с DOM (ну это считай самые основы работы в браузере, т.е. буквально тебе нужно узнать как JS работает с ХТМЛ элементами на странице, как выбирает их и как изменяет их, как повесить на тот или иной элемент обработчик того или иного события), изучить как работает асинхронный JS (через промисы или асинк/авейты, что в общем тоже самое что и промисы только другой взгляд), а так же собсно изучить непосредственно сам Fetch API (ну или аксиос).
Грубо говоря, если не брать фреймворки всякие, при нажатии на кнопку срабатывает обработчик события, в этом обработчике посылается асинхронный запрос на сервер, там уже делается какая-то хуйня независимая от клиентской стороны, и тут же JS ловит ответ. Это может быть как и удачный ответ, так и ошибка, он может обработать оба в разных вариантах. И тут же ты ищешь элемент на странице, который хочешь изменить в соответствии с полученной информацией и тут же его и меняешь, никакого обновления страницы при этом не происходит.
Там все довольно просто и изучить при желании это можно за пару дней.
Тут говнари тебе зачем-то тайпскрипта насоветовали, но тайпскрипт здесь не при чем. Это все равно что посоветовать вижуал бейсик в вопросе про технологию .NET. Типа, ну да, может где-то и удобнее он, но это блядь просто блядь другой вариант описания, лол. Ну или в спринге вместо джавы посоветовать использовать котлин, типа, ну да, так красивее, но ответа на вопрос "как сделать это" не дает.
>>252650
Алсо, ответ в большинстве случаев ловят JSом (ну и соответственно отправляют бэкэндом) не в виде TEXT/HTML, а в виде JSON (что-то типа XML, только проще). Т.е. на стороне ASP тебе нужно будет сделать обработчик запроса (get/post/и так далее, в зависимости от того что отправил JS) (даже не ебу как там в ASP все это делается пока, наверное какой-нибудь контроллер с экшонами, ну или как-то так) который в свою очередь что-нибудь сделает там в базе данных ну и направит ответ не в виде View (как в MVC), а JSON'чик. Это частично называется REST технологией, хотя REST это не только джейсончики и обработка запросов.
Собственно именно поэтому фронтэнд называют вешателями обработчиков на формочки, а бэкэнд - складывателями инфы в джейсончики
Ангуляр выглядит реально монструозным комбайном и работает с такой же скоростью, не говоря о том сколько времени нужно запрягать хелоу ворлд.
Если видел админки гугловских сервисов типа адмоба или консоли гуглплей, они построены на ангуляре, и это типо один тяжеленный дашборд на сотни тыщ строк тормозного жс говна.
Для spa, которые юзаются как приложения это норм тема, но это подойдёт далеко не каждому сайту. Как и реакт, и вью, и тс. Только огромное преимущество вью, что не нужно тащить всю нодовскую экосистему чтобы юзать человеческие двусторонние байндинги. Просто подключенишь его через cdn как в старые времена без говняка и всё. имхо
Это не ява на шарпы похожа, а шарпы на яву так как создавались с оглядкой на него.
Тащемта все языки похожи друг на друга.
хайпануть думали
Стоит вкатуну его учить или можно просто ознакомится?
так с первого взгляда чет сложным все это кажется. Есть ли какая приблуда которая может конвертить обычные объекты в grpc ?
Тебе надо было поменять местами типы и раздраконить конструктор? Шарп вдохновился джавой и плюсами. хера джава так похожа на плюсы, лол, пориджы
Не имеет смысла создавать больше Thread чем ядер у процессора. х2 если есть Hyper-Threading
Не имеет смысла создавать больше потоков чем ядер у процессора для операций требующих один поток, например запись файла. Имеется в виду что инфа которую пишем в файл уже есть и ждать ее не надо.
Лучше юзать Task чем Thread. Если точно знаешь зачем и почему тебе нужен Thread то тогда юзать его.
Таски надо юзать когда есть время ожидания ответа. Например HTTP запросы.
Хуй знает что еще сказать. Напишите что еще можно добавить.
Ну типо я еще знаю что таска запущенная потоком не обязательно закончит выполнения в этом потоке. Но я больше про так сказать общие вещи.
И правильно ли я понимаю, к примеру имеется 2 ядра на процессоре2 потока. Задача записать 10к файлов. Быстрее будет в цикле создавать по 2 таски и писать по 2 файла, чем просто создать 10к тасок и записать все файлы?
Данные на жесткий диск пишутся последовательно, параллелить это не имеет смысла, только замедлишь.
Вот если запись на ссд там другая история.
>Вот если запись на ссд там другая история.
А что за история? Разве не будет делить скорость запись на количество одновременно записываемых файлов?
Ну, там со свичами стейтмашина генерируется.
Хорошее видео про это https://youtu.be/fi_N_ghu4Ug и https://youtu.be/U6h6p1tJ7XM
Зачем, я почти уверен, если бы у них был честный сборщик мусора, то спринг бы удалялся сразу после запуска.
Вот смотрю я на это и так и хочется запилить свой MVC'шный фреймворк на плюсах, просто чтоб все пососали. Но, к сожалению, понимаю, что в соло буду долго слишком делать. Был бы студентотой - таки запилил бы.
А щито поделать.
Для разработки машина должна быть достаточно мощной. Настолько, чтобы тебя вопрос размеров средств разработки не волновал от слова совсем.
> Вот смотрю я на это и так и хочется запилить свой MVC'шный фреймворк на плюсах, просто чтоб все пососали
Пососал бы скорее ты, и делал это говно до старости или с кучей багов. Язык говно
Тащемта "запилить" и "допилить до продукшен реди" — ахуеть какие разные вещи. И запилить в соло изи можно за пару-тройку недель.
На картинке ГЦ удаляет жабу при запуске, чел просит наоборот. Но растодебилу не хватило даже на это мозгов, иди пиши свою утилиту cat.
> картинке ГЦ удаляет жабу при запуске, чел просит наоборот.
Да я имел ввиду для c# тоже самое, а не наоборот, не так написал
Безработного раст-борщехлёба порвало))
Все уже зависимости в mod.rs ручками прописал? Все ошибки через хрезульт вверх пробросил? Нет? А ну бегом дописывать, а то останешься без стектрейса, средневековые долбики.
Самое смешное, чтобы собрать раст на винде им нужно поставить билдер С++ из Visual Studio (или саму IDE).
Вот так челики победили С++.
Желаю тем кто вкатывается - вкатиться в наш любимый .net. А тем, кто уже вкатился - офферов пожирнее и адекватных кабанчиков, которые будут ценить вас и понимать, что если фичу надо делать две недели, то ее нужно делать 2 недели!
В общем, успехов всем.
Потому что я могу, как и полагается чэду. А ты можешь сидеть и выцеливать конкретные посты, чмоня.
то хс, то раст
жесть, убийца плюсов юзает для сборки что-то от плюсов, так ещё и от МС вс
>>253427
Кланга на шинде нет (официально), заводится только с кучей ебли.
А ещё на шинде ни LLD (линкера), ни LLDB (дебаггера), ни отладочных сибволов для рантайма и стдлиба и наверняка ещё вороха тулз, которые гугы и эплы не хотят пилить под винду, и для сборки нативных бинарников юзаются нативные средства, но шиза почему-то от этого рвёт.
>>253425
> так ещё и от МС вс
Не то чтобы был выбор. Можно конечно поебаться и собрать какой нибудь кланговский/гнушный тулчейн — но даже для их сборки придётся тащить MSVC ибо иначе ты с системными либами хуй чего слинкуешь, закрытая система как есть. Напоминаю: вендорлок — выдуманная хуйня.
Ко-ко-ко мы убивцы С++
@
100500 страниц холиваров на всех форумов мира.
@
Прошло почти 7 лет с релиза.
@
Поставьте пожалуйста средства разработки С++, иначе мы не соберёмся у вас.
Прорешай ulearn.me, толку больше будет чем от книжки
Там всего пару разделов написаны до конца и обновляются. Большая часть - это 4-5 глав с инфой за 2015 год.
Коварный МС не открывает нам коды линкера, чтобы мы могли стырить форкнуть код, который 7 лет написать сами не можем. Чет проиграл с этих угнетателей С++.
>написать сами не можем
>написать уже написанный тулчейн для платформы
Давай трезвей и заканчивай подливить уже.
Вот я, на данный момент, придерживаюсь правила: Неймспейс отражает структуру папок, а папки вложены друг в друга.
Ну, т.е. как-то так:
Папки Data->Migrations->Sqlite
Неймспейс получается Data.Migrations.Sqlite
Так вот. Я осознал что с определенным уровнем вложенности и если на разных уровнях есть разные сущности - становится не очень удобно пользоваться редактором, потому что куча папочек нужно раскрывать, чтоб дойти до нужного мне файла с кодом.
Так вот. В ходе изучения репок я видел что некоторые делают так:
Data
Data.Migrations
Data.Migrations.Sqlite
Это все отдельные папочки. В плане удобства пользовать - выглядит вроде как удобнее. Но, вот если мне нужно будет переместить это вот в другой неймспейс - придется все папочки переименовывать, а раньше я просто переименовываю нужную папочка/перемещаю в нужную папочка и аддночик всем файлам по структуре переименует.
В общем. Как вы организуете все это дело? Может быть есть какой-то третий путь, который не имеет недостатков этих вот?
>гугы и эплы не хотят пилить под винду
Твои же слова, пьянь шизоидная.
Уже идет 7 год, а у вас экосистема намертво завязана на плюсы, которые вы там победили. В какой-то степени получилось, что всрали кроссплатформенность, потому что никто за бесплатно не хочет написать линкер на венде.
Вероятно, играться с синтаксимом и ломать его каждые 2 года куда интереснее, чем действительно сидеть работать.
Завязка на тулкит visual studio (6гигов) это фиаско, братан.
Организуй все по папкам, используй хоткеи чтобы найти нужный класс/файл, вместо серфинга по структуре.
Конечно ломать синтаксис каждые 2 года (чего не было уже 2 или 3 года) куда интереснее чем заниматься медвежьим трудом.
>Завязка на тулкит visual studio (6гигов) это фиаско, братан.
Фиаско винды, ты хотел сказать?
Ну да, а редакции 2015, 2018 и 2021 года, так от балды.
Я помню еще был момент между реакциями что-то ломали, но уже не пруфану.
>Ну да, а редакции 2015, 2018 и 2021 года, так от балды.
А новые фичи по твоему ломают синтаксис?
>Я помню еще был момент между реакциями что-то ломали, но уже не пруфану.
Последний ломающий релиз был в 2018, за тебя пруфану
https://doc.rust-lang.org/edition-guide/rust-2018/index.html
>>253617
>пук сночала добейся среньк
Поясните за DI в текущем виде в asp.
Ну, вот допустим, у меня есть класс. Я зарегал его как Scoped. Допустим в этом классе в конструкторе я прошу дать мне еще несколько классов. При этом все классы просют DbContext какой-то. Правильно ли я понимаю, что все классы получат один и тот же инстанс и если я в одном из классов руками закрою или задиспозю контекст - в остальных - он тоже будет задиспозин?
Просто у меня создалось впечатление что да.
Тебе не ответят, слишком плохие цифры выпали. Попробуй сходить на исповедь в java тред.
>Просто у меня создалось впечатление что да.
А почему бы тебе не взять и не проверить ручками, как оно на самом деле?
Пчел, VS нет нигде кроме винды и никогда не будет, потому что она написана на WPF. На маке там просто обрубок.
>Они купили Моно, чтобы его удушить, а не развивать.
Моно они купили за полгода перед выпуском .NET Core, подумай зачем.
>не будет кроссплатформенных десктопных приложений
Не нужно. А как ты себе это представляешь? Все кросс-платформенные ГУИ - это дикий ужас, не говоря уже о том, что на выходе получается говно. Разве что джабаскрипт в вшитом браузере гонять.
Если мы даже говорим про шиндоус, то WinForms - едиственный вменяемый, не убитый, ГУИ фреймворк ноудискас, а ты кросс-платформенный ГУИ просишь.
>все классы получат один и тот же инстанс
Если ДбКонтекст зареган как скоупт, то получат один и тот же.
>он тоже будет задиспозин?
Если это будет один и тот же объект, то очевидно, что да. Но не ты создавал объект, не тебе и диспозить. Плюс контекст обычно регают через специальный метод расширения, поэтому лучше посмотри для чего нужны и чем отличаются AddDbContext/AddDbContextPool AddDbContextFactory/AddPooledDbContextFactory.
Вроде настроил. Переместив конфигурацию логинга из appsettings.Development.json в appsettings.json. Хотя установлен "ASPNETCORE_ENVIRONMENT": "Development" и вроде как у appsettings.Development должен быть приоритет. Буду копать дальше
Ладно, я всё понял. Пить надо меньше.
>На маке не обрубок, а другая иде, бывшая xamarian studio.
"Другая иде" называется Visual Studio, очевидно что анон ожидает увидеть не полумёртвую кусок говна с 1/5 функционала студии и апдейтами раз в 3 года.
>Шизик, плиз. Во-первых, они уже есть, во вторых под пинус есть райдер.
1) Чел говорит про майкрософт;
2) У КРОССПЛАТОРМЕННОГО дотнета единственная нормальная кроссплатформенная иде написана на жабе, которую он убивает. Ару.
>Не нужно.
От мантры какого-то кодера конечно весь бизнес одумается и пойдёт хуярить нативный софт под каждую платформу. Нет, будем жрать говно на электроне.
>>254085
Вижлы точно не будет.
А в плане гуя, вроде есть какие-то потуги в плане нового тулкита:
https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/
https://github.com/dotnet/maui
что-то Flutter/SwiftUI подобное (т.е. react inspired, со всей жопаболью стейтменеджмента и лагами которую он вызывает).
Шизик, что переписывтаь? Методичку обнови.
Те кто, кто писали windows-only b2b - им и так норм и никто ничего переписывать не будет.
Маленькие кампании уже давно делают под веб, поэтому тут тоже никто ничего переписывать не будет.
А большим b2c продуктам кросс-платформа не нужна, они могут позволить себе писать под каждую платформу. Да, представь, это не твой кабан, который хочет шоб работало везде.
Итог: никому по факту кросс-платформенный новый декстопный фреймфорк от майкрософта уже и не нужен.
>Шизик, что переписывтаь?
Ну ты идёшь и цитируешь где там было что-то про переписывание, дислексик ёбаный.
>нет и нинужна(9
Вот это аналитика рынка от энтерпрайз макаки.
>дотнет инфрастуктуру
Которая настолько кросплатформенная, что через 20 лет на ней не написан даже тулкит для работы с ней. Ну прямо-таки новые жопаскриптеры, которых весь мир обслуживает, хех.
Как оно работать будет, если даже сейчас компилируются разные файлы в разных ОС? Надо будет отдельно для каждой ОС собирать свою сборку. В чём кроссплатформенность заключается и нафига тогда нужны виртуальные машины, если всё равно не совместимо?
В консольном-то проекте? Ну-ну.
>цитируешь где там было что-то про переписывание
>конечно весь бизнес одумается и пойдёт хуярить нативный софт под каждую платформу
>одумается и пойдёт хуярить нативный софт
Имелось в виду, что никто никуда не пойдет ничего писать под нативный софт, потому что кому надо, уже давно это делают, а днище-конторы не нужны. Но психичка придирается к словам, ок.
Только exe нужен, просто output папка одна у тебя, там и exe и файлы, которые нужны были для сборки.
Не работает просто ехе. Методом научного тыка выяснил, что нужны 3 файла для запуска. Если хоть одного нет, то ничего не работает.
А да, это другое, а не то, что я думал, давно не делал ничего для десктопа.
Попробуй инструкции из конца:
https://docs.microsoft.com/en-us/dotnet/core/deploying/single-file
Ясно, спасибо. Теперь гораздо понятнее как оно работает. Только что точно можно оттуда почерпнуть так это то, что await генерирует таск даже, если ждать не пришлось вообще.
Но что тогда лучше делать, если скорее всего результат вернётся сразу?
Тянуть до самого верха async/await в логике, которая чаще всего выполняется синхронно?
Сесть и подумать как ты слепил говнину, в которой столкнулся с такой проблемой? Или это распространённый случай?
А вот в Джаве можно собрать один jar-файл и он спокойно запустится без перекомпиляции на 7 миллиардов устройств.
Почему тогда все приложения сложнее хелоуворда имееют отдельные дистрибутивы по каждую ос (dbeaver/smartgit/miecraft) даже если брать только бинарики без инсталлеров? Неудобно получается.
Мало того что читать не умеешь, так ещё и писать? Хуёво быть тобой.
Ну раз уже тебе нинужна, то наверно оно так и есть.
>>254171
Да за тебя там скриптики напишут которы бандлы для систем будет раскладывать, проблем-то. Тащемта, вся кроссплатформа именно так и работает, а запустить где угодно скомпилировав 1 раз можно разве что консольную жава утилиту, кек.
-Либо нужно рантайм .NET на компе,
-Либо собираешь все dll в одну папку
-Либо вообще все в один файл (не работает с Net 6 для 7 винды).
Но тогда твой хеллоу ворд в exe будет весит мегов 60, за то один exe.
Если хочешь распространять софт и пишешь под последний .NET, то нужен уже упаковывать в какой-то инсталлер, который будет предлагать ставить нужный тебе .NET (либо по аналогии боли С++, собирай в такой древний рантайм, который был бы у многих).
-Либо нужно рантайм .NET на компе,
-Либо собираешь все dll в одну папку
-Либо вообще все в один файл (не работает с Net 6 для 7 винды).
Но тогда твой хеллоу ворд в exe будет весит мегов 60, за то один exe.
Если хочешь распространять софт и пишешь под последний .NET, то нужен уже упаковывать в какой-то инсталлер, который будет предлагать ставить нужный тебе .NET (либо по аналогии боли С++, собирай в такой древний рантайм, который был бы у многих).
Где ты слово вместе С++ увидел? Речь про то, что последние рантаймы шарфа (и С++), не всегда у всех стоят, поэтому приходится собираться под древний рантайм.
В жабе сейчас есть jlink и jpackage, и судя по постам выше это мало чем отличается от дистрибьюции .net высеров
мимо
>На маке не обрубок, а другая иде, бывшая xamarian studio.
Ахацхахфафхаахах умираю нахуй
Дотнет. 20 лет. Итоги.
Я увидел
>боли С++
дислексик, пиздуй в библиотеку а не на сосаче сиди.
>Речь про то, что последние рантаймы шарфа (и С++)
Вот с этого опять крикнул. В плюсах рантайм 10-15 мб весит и линкуется к бинарнику одним флагом, что и кому там приходится?
После инцидента с log4j, люди начнут в тройне осторожнее относиться к ноунейм высерам на жабе.
Без официальной поддержки, такое страшно юзать.
А что сделать сборку для дотнета, её надо подписывать ЭЦП. А цены на ЭЦП ты видел? Одно Крипто-Про - цена половины проекта будет.
Десктопщики должны страдать
Какое-то наследие легасиговна видимо.
Можешь чекнуть —
https://docs.microsoft.com/ru-ru/cpp/windows/latest-supported-vc-redist?view=msvc-170
инсталлер с релизной и дебажной версиями + отладочными символами = 25 мб.
> Без официальной поддержки
Йобу дал? Это официальный упаковщик, оракл это говно и ещё пару штук для дистрибьюции почти 10 лет пердолили. Но оказалось никому не нужно, потому что клиенской практически не существует.
>2015: майкрософт покупает замарин, ЖАВА НИНУЖНА, ТЕПЕРЬ КРОССПЛАТФОРМА ПОД ДОТНЕТОМ!1
>2022: пук срень установите пожалуйсто моно иначе визуал студио фор мак низапуститца(9
2020 год, жабисты все еще путают кроссплатформу дотнета
c IDE (которая даже не оригинальная visual studio).
Конечно Visual Studio и дотнет это же одно и тоже.
>>254649
>Кто умеет, тот делает; кто не умеет, тот учит других.
Ни разу не видел чтобы кто-то что-то полезное выложил, везде рассказывают про базовые конструкции, ифы, типы, или же абстрактно болтают об высоком (абстрактном).
Хоть кто-то бы из реальной работы что-то показал, или рассказал про архитектуру своего опенсорс проекта или сделал бы стримы по своему проекту с пояснениями.
Ничего нет посмотреть по программированию. Либо новичковая параша, или бестолковые и скучные подкасты, от которых засыпаешь.
>нинужна!1
Ох уж эти манявры. Столько пиздежа, и по итогу единственная кроссплатформенная иде на дотнете — перекрашенный опенсорс проект на попенсорсной версии дотнета...
Не ебу что они планируют, но что (моно/визуал/ксамарин) студия на моно работает — факт.
>VS никогда не была кроссплатформенным.
>Джава баран пытается троллит тем, что VS не кроссплатформенный.
Либо додик перепил или пориджы совсем отупели.
>Ничего нет посмотреть по программированию. Либо новичковая параша, или бестолковые и скучные подкасты, от которых засыпаешь.
А ты попробуй читать. Есть такая штука - книги называется.
Мне нужен информационный материал по программированию, поридж предлагает учебный. изучай синтаксис до посинения
https://www.youtube.com/watch?v=fn1R-5p_j5c
@
40% новый пользователей в дотнете это следствие появления .Net Core.
@
Мягкие настолько вдохновляются, что делают core по умолчанию и объединяют все под линейками Net 5, Net 6.
@
Дотнетчики Net Framework ощутимо в офигивают.
@
Даже xamarin и mono пытаются привести к общему виду, максимально унифицировать интерфейс.
@
ASP.NET под линуксом показывает очень хорошие результаты на уровне неуправляемых языков - С++ и Раста. Спринг просто сосёт.
@
Но специалист из /зк, изучив объективные данные своего мухосраня, решил признаться честно за всю индустрию тупая макака из жабы пытается в троллинг, но очень глупа и поэтому получается только пук и среньк
Пиздуй в тик-ток, поридж. Я уверен, что для вас даунят там уже есть какие-нибудь видосы "по программированию".
Ради интереса спрашиваю, есть ли нормальные примеры проектов на asp.net core? Например что-то по типу https://github.com/spring-projects/spring-petclinic
Пока выходные хочу потрогать asp, может на него со спринга когда-нибудь перекачусь
Я не джавист. Я хочу в серьезный стек свичнуться. Но сейчас объективно нельзя начать на net 6. Нужно знание кучи легаси и мухосрань тут не причем, все умеют пользоваться хх. Может лет через 5...
>Даже xamarin и mono пытаются привести к общему виду, максимально унифицировать интерфейс.
Ага, седьмой год приводят и всё никак. А хайпа-то было когда замарин покупали.
> 40% новый пользователей в дотнете это следствие появления .Net Core.
По каким данным? От тех же маркетолухов, которые студию на всех платформах обещали?
>Но специалист из /зк, изучив объективные данные своего мухосраня, решил признаться честно за всю индустрию
Ну анон выше пояснил за ненужность кроссплатформенного гуя, а этот пояснил за ненужность дотнета. Зк — это площадка свободомыслия для шизов, спок, фанбой.
Был бы программистам, знал бы что есть поиск в гитхламе и что по наймспейсу или классам или зависимости можно найти туеву кучу того что тебе нужно
>>254824
Через 5 лет будет .NET 11 и ты будешь тут ныть, что нельзя писать ничего на NET 11, и вообще надо опять ждать.
>>254820
А если бы промолчал и не показал свою некомпетентность, не порвался бы так при людях.
>>254832
И снова пук и среньк
Большим количеством кода на шарпе и меньшик количеством кода на плюсах. И вытекающими лагами.
Не знаю имеют ли смысл пруфать что-то троллю.
Ты же знаешь, что в скандинавской-айтишной мифологии, будучи троллем, если ты получаешь пруф, ты теряешь одну извилину и так пока не превратишься в камень.
Гладкий моск фанбоя размером с фисташку как обычно продолжает неиронично принимать информацию от топ кабанчиков. И клеймить всех критически настроенных к подобному пиздежу троллями. Классика.
А в студии так можно?
Пробовал нажимать F12, но вместо кода она показывает какую-то парашу (throw null вместо тела любого метода).
Если перестать принимать информацию, можно превратиться в камень. Будь осторожен.
Ты не должен воспринимать, что дотнет это сразу VS. Юзай что удобнее или практичнее.
>пук
Я хуею с наивности анальников конечно. Ты наверно ещё предвыборным обещаниям веришь, да, поридж?
Да даже если бы райдер сам код писал, то это не отменяет того факта, что он платный.
Да, а что ты хотел? Какой-то ультрахайлоад на шарпе не пишут, большой бекенд тоже редко. Остаются только небольшие галеры, где важнее нахуярить нормально фронт, а бекенд оставить как прослойку между фронтом и БД.
Нет
Обиженный тролль из раст треда (скорее всего просто качающий между тредами шизик) пытается манипулировать фактами, создавая неудобные наводящие вопросы.
Ты тот самый фанбой шарпа? Тебе же лет 13-15, верно? Ну ничего страшного, в твоем возрасте я тоже любил троллить двач и засирать треды. Только лучше делай это в /b, а не в тематике.
>Признайтесь честно - линукс парню здесь делать нечего
Более того, линукс парню вообще делать нечего!
Сколько шизов грезило кроссплатформой, а на деле под линукс в десктопе толком ничего и не пишут. Одни только формочки-мордочки поверх каких-то консольных команд/файлов. Про геймдев я вообще молчу.
Линукс это 1-2% пользователей, которых еще тщательно отъедает макось. Получается, что кроме сетевых серверных технологий на линуксе заняться больше нечем.
О чем ты вообще?
Чел, ты раздел перепутал. Это не /vg Каких пользователей?
Ты не должен воспринимать, что еда это сразу хлеб. Если хлеб чем-то не устраивает, юзай пирожные.
Сейчас бюджетные конторы переходят на отечественную ось (линупсы) и им нужны аналоги десктопных программ из венды. Это золотая жила! Но из-за нерасторопности микрософтов шарф оказывается в пролёте.
Есть avalonia.
>Сейчас бюджетные конторы переходят на отечественную ось
На моей памяти они переходят уже 15 лет.
Не получается, нет замены ПО, а работу надо выполнять каждый день. Невозможно закрыть учреждение и вывесить табличку: услуги не оказываем, ждём когда погроммисты напишут новые программы.
Только сигнатуры методов. В райдере насколько я понимаю встроенный dotPeek. Но честно как-то похуй, с детства пользуюсь ILSpy.
1С из браузера работает.
На OpenOffice кабаны уже шильдик повесили в реестр внесли.
А ещё то чего не хватает? Потребности на 95% покрыты.
Остальные потребности специфические, местечковые и малочисленны, и там ловить нечего.
Буд-то кто-то знает что тебе надо. Если просто поаутировать и обмануть себя типа ты обучаешься, то вот чел
https://www.youtube.com/user/xamltv
Терпеть не могу хлеб, ем все без него.
>Получается, что все вакансии на сишарп - это фуллстек, немного бэкенда, а основная нагрузка - это фронтенд?
Нет, не все.
>Получается помимо сишарпа надо учить ещё жабаскрипт/тайпскрипт и фреймворк типа ангуляра/реакта?
Сейчас реалии таковы, что js нужно учить практически всем кто хоть немного связан с вебом. Увы.
Ну там чисто по всему EF. Потом накачу
Мне бы просто ознакомиться, а модуль у Троелсена пиздец устаревший.
Есть ли принципиальная разница в кодовой базе и архитектурах между аналогичными технологиями .Net и Core? Вот к примеру, как сильно отличаются ASP.NET на технологиях винды от нового оупенсорсного брата? Нужно ли мне изучать два фреймворка будет потом, или достаточно изучить Core, как самый новый, и при этом я смогу писать под старый (естесно с небольшими правками за счет версионности?
Ужас какой. Но ведь для того чтобы быть нормальным программистом английский знать необязательно, правда ведь?
Но ведь работать программистом можно удаленно из любой точки мира
Если бы мне нравилось заниматься переводами с английского, то я бы пошёл в переводчики и зарабатывал бы больше, чем какой-нибудь программист, которые уже не нужны, с ними уже борются.
Ну если так стоит вопрос и ты уверен что вот прямо пойдешь туда работать, то учи старый. В принципе там не особо большая разница (хотя, честно говоря, я х.з. как это с точки зрения новичка). Но я бы на твоем месте поискал нормальную удаленку с современным стеком.
Опять же смотри. Старый стек подразумевает, что у тебя типа есть какой-то опыт. А новичок в 2022-м году изучающий его, а не Core, вызывает подозрения.
>мне нравилось заниматься переводами с английского
При чем тут нравится или нет. Умеешь в английский - берешь и просто читаешь. Без превозмоганий и мучений. Не умеешь - ну тогда не жалуйся, что на твоем языке только просроченная инфа имеется.
Есть OData контроллер который через GET запрос вытаскивает разные данные из БД и отдает их в виде IActionResult на фронт. Мне нужно сделать так, чтобы данные типа double отдавались на фронт в виде string'а. Я понимаю что это можно сделать через фильтр, но что в нем делать с ответом?
Оба это аттрибуты куки для браузера. Разница в формате, в max age это секунды, в expires это конкретная дата.
Если заданы оба то у max age приоритет
А ты не путаешь CookieAuthenticationOptions.ExpireTimeSpan и CookieAuthenticationOptions.Cookie.Expiration? Первый это часть тикета, который храниться внутри куки в зашифрованном виде.
Да, не заметил что в одном случае к тикету относится а не к кукам.
Тогда да, все верно.
>>255302
>И если это так должен ли MaxAge быт больше, чем ExpireTimeSpan?
Зависит, если есть смысл в том, чтобы браузер слал куку которая на деле уже Expired - то, если смысла в этом нет - то нет, ставь равными значениями или MaxAge меньшим
public int GetHashCode([DisallowNull] string obj)
{ throw new NotImplementedException(); }
Студия добавляет этот атрибут, даже не смотря на то, что во всём проекте используется <Nullable>enable</Nullable>. Имеет ли это какой-то смысл?
1. все пробельные символы слева и справа должны игнорироваться. Внутренние несколько пробельных символов должны считаться одним пробелом.
2. есть наборы символов синонимов, которые должны интерпретироваться как одинаковый символ. Например, разные символы умножения (*, x (eng), х (ru), ×, ·) или же цифры (3, ³).
Как реализовать bool Equals(string? x, string? y) ???
Мне видится два подхода:
1. сделать x.Trim(), x.Replace(...), то же для y. Возможно самому заменятель, чтобы он один раз пробегался по всем символам и была бы только одна дополнительная аллокация нового стринга. Тут проблема в том, что доп. аллокация будет и в Equals, и в GetHashCode.
2. Написать свой компарер, который не будет ни разу ничего аллоцировать, а будет работать только пробегаясь по исходным стрингам. Но это что-то сложно кажется. Даже не знаю, как подступиться по нормальному.
Что посоветуете? Может есть готовый компарер с наборами символов-синонимов?
$a = 'myvar';
$$a='myvalue';
echo $myvar;
---------------
myvalue
Твари джависты, давно уже здесь обосновались.
В этот раз молодцы, снимаю шляпу, очень тонко скатили тред, не доебешься.
мимо миддл
Хуидл.
А как тогда не городить китайский код (копипастинг одного и тогог же) в таком коде?
Остановись пока не поздно.
var dick = new Dictionary<string, Dictionary<string, string>>();
foreach (var field in fields) {
dick.Add(field, stmt.getDic(field))
}
>>256119
> new Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary>>>>>
У вас есть классы, интерфейсы, наследование, агрегация и прочие радости, но нет не хочу делать типы, которые будут описывать сущности в коде, хочу ебланить и пердолить изуверские конструкции.
Смысл понял, большое спасибо!
> new Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary>>>>>
Сразу раст вспомнил, лол.
Будущий шарфо-мэн попросил объяснить как представить из динамико-дресни в статику-дресню концепцию динамического связанного списка, я ему и показал. А то что он там словарь прикручивает, так это его желание. Сбрызни, ржавый
Ты ему показал как блевотину заменить дриснёй. А он теперь по-незнанию так и сделает и это будет на твоей совести.
2. Сколько приблизительно времени требуется для подготовки к собеседованию на тему структуры данных и алгоритмы?
2. Сколько приблизительно времени требуется для подготовки к собеседованию на тему структуры данных и алгоритмы?
>Сколько приблизительно времени требуется для подготовки к собеседованию на тему структуры данных и алгоритмы
Смотря в какое место. Тот же тинькофф требует, чтобы ты умел решать задачи на динамическое программирование уровня "хард" на литкоде. А есть места, где тебя максимум попросят односвязный список развернуть.
>Почему кто-то еще работает на внутреннем рынке, когда такое большое количество вакансий для удаленки?
Потому что у людей семьи, ипотеки, люди хотят стабильную и понятную работу, уверенность в завтрашнем дне. Люди хотят спокойно просыпаться по утрам и пусть лучше каждый день будет днём сурка, чем новым приключением.
>структуры данных и алгоритмы?
Это спрашивают не потому, что это нужно в деле, а просто потому что это маркер, который легко проверить и легко отсеять лишних. Соизволь подготовиться.
Времени займёт как универский курс на данную тему. 30 часов лекций + 30 часов практических семинаров + 50 часов самостоятельного решения задач + 30 часов самостоятельного изучения теории. Примерно также. Но самому будет дольше, так что лучше - на платные курсы.
Дефицит квалифицированных рабочих, приводит к росту цен. Я уверен кобол программисты получают больше.
Огромное легаси и старый стек так же создает текучку. В итоге получается что зп на какой-то процент выше, а работа значительно сложнее и тех усилий порой не стоит.
Дотнет же более унифицированный и не имеет зоопарка в стеке технологий, от чего работа, даже с легаси, значительно легче. Джава же засохла где-то в нулевых и вокруг неё, словно грибок, выросло тонна разного рода решений одних и тех же задач. Поэтому специалист по джаве дороже, но и в башке там каши держать надо больше.
Важно не только много получать, куда важнее комфортно работать.
>Поэтому специалист по джаве дороже, но и в башке там каши держать надо больше.
>Важно не только много получать, куда важнее комфортно работать.
Ну это все понятно, но почему на том же голанге или расте платят ощутимо больше? Если про джаву понятно - банки, легаси, кровавый энтерпрайз, дремучее легаси, то почему за хипстерские технологии платят больше?
1) я пытался использовать C# для WP платформы, но они умерли (7,5, 8, 10)
2) я пытался использовать C# для UWP, но они превратились в ходячих мертвецов
3) C# использовал для Desktop-приложений, но потом Microsoft, сообразив на двоих Google, фактически убил запуск неподписанного кода для домохозяек. Сорян, платить 250 баксов в год за воздух, точнее сертификат, которым Мейлру подписывает свой Мейлру бар, я не вижу смысла. А, и еще разрешает подписывать (разрешал, окей) им любой код "партнёров". Но у Мейлру это безопасно (потому что подписано), а у меня нет.
Так, я полностью ушёл с платформы (т.е. дропнул Windows, MS SQL Server, VS, C#). Теперь винда нужна только для запуска игрушек, которые не заводятся в Valve Proton/WINE.
мимо бывший MCSA, владелец аккаунта-разработчика для WP/UWP
>Ну это все понятно, но почему на том же голанге или расте платят ощутимо больше?
Нехватка спецов. Именно сеньеров-помидоров, который вытащил бы на себе все говно.
Хипстота наговнила гошкой или растом, интерес кончился, свалила. Ну или где не свалила, а просто под самописное говно никто не хочет писать, то есть либо текучка, либо физически трудно найти что-то выше мидла, на супер-модный стек.
Проблема в том, что в новом стеке надо рогом самому все бурить, там реально скилл уже нужен, знаю тонну случаев, когда хипстота в 2010годы разводила кабанчиков на молодежные технологии и потом там же буксовала просерая все полимеры (одно дело поиграться, другое дело бизнес
).
>Ну это все понятно, но почему на том же голанге или расте платят ощутимо больше?
Нехватка спецов. Именно сеньеров-помидоров, который вытащил бы на себе все говно.
Хипстота наговнила гошкой или растом, интерес кончился, свалила. Ну или где не свалила, а просто под самописное говно никто не хочет писать, то есть либо текучка, либо физически трудно найти что-то выше мидла, на супер-модный стек.
Проблема в том, что в новом стеке надо рогом самому все бурить, там реально скилл уже нужен, знаю тонну случаев, когда хипстота в 2010годы разводила кабанчиков на молодежные технологии и потом там же буксовала просерая все полимеры (одно дело поиграться, другое дело бизнес
).
>но потом Microsoft, сообразив на двоих Google, фактически убил запуск неподписанного кода для домохозяек.
А по подробнее?
мимо пишу морды только для своих нужд
Он видимо про то, что UWP приложения вымерли полностью, а для классических десктопных приложух нужна специальная подпись, иначе SmartScreen будет уведомления постоянно присылать, что мол небезопасное приложение запускается.
А причем тут шарп? Это справедливо для всех десктопных приложений винды и мака?
Тем не менее на голанг уже прилично вакансий у нас в РФ несколько лет как, тот же озон, авито и вайлберис уже перешли на него, в яндексе клауд начинают на го писать, в тинькоффе тоже.
Да и хипстерские технологии предыдущих лет так и не умерли - руби все еще жив, не говоря уже о ноде или питоне.
Всегда нравилось вот эта ассоциация с компания. Ты знаешь вообще какой объем кода и какое число разработчиков пишет? Зачем вы их постоянно в пример приводите? Ты знал что некоторые компания пытаются пропиариться среди свежих языков, чтобы их лейбл получил лояльность, среди тесного сообщества. Или чтобы такие как ты разносили рекламу о них.
Сейчас раст, до этого го, еще раньше руби и нода. Ты программист, будь технически грамотнее, а не как блондинка вестись на каждый пшик в индустрии моды.
Попробуй выстави свое резюме (можешь даже анонимно, если боишься) и посмотри на предложения которые тебе придут. И вот потом уже делай выводы.
Примечание: январь если что не показатель, а вот в феврале уже можешь так делать.
Когда ты попробуешь запустить его на другом компьютере. Сразу SmartScreen заблокирует.
Как он определяет это?
Запустил на другой машине, ничего не произошло (windows form). Что я делаю не так?
Нужно сделать приложение под андроид, в каком IDE это можно сделать максимально быстро и просто?
Я на второй комп по сети качал. Но у меня и там и там сдк, может поэтому??
Так чел же хочет
>сделать приложение под андроид
>максимально быстро и просто
и проще чем на котлине и в нативной среде вариантов нет.
Кроссплатформы без ебли не бывает.
Что?
Попробуй триал профессионала. Я хз можно ли с комьюнити писать под мобилки, но можешь и бесплатную комьюнити потестить.
Да, я уже понял почему я долбоёб, дико извиняюсь
>писать под каждую платформу - затратнее.
>сделать приложение под андроид
>максимально быстро и просто
Ты стекломоя объелся?
Лол, шизик
>Кроссплатформы без ебли не бывает.
>писать под каждую платформу - затратнее.
Хватит вилять попой, аки проститка, на лучше прочитай про свой ржавый язык
http://rustmustdie.com/
Раст, оказался завязанный на стандартную либу говнищем (по-сути с рантаймом), где все потуги свелись к использованию умного указателя с подсчетом ссылок (в питоне тоже самое, только автоматически).
Вы только посмотрите на картинке, как две строчки компиляться в 2700 строк ассебмлера!!!
https://goo.su/adnl
К чему ты это вообще высрал, сумашедший? Сначала съехал на «каждую платформу пилить долга» на вопрос про приложение конкретно для андроида, а теперь выдавил какую-то несвязанную хуйню про раст.
Иди отнеси это в раст тред, если у тебя к ним предъявы.
>на лучше прочитай
Ссылаешь на студента Столярова, который путается в базовых терминах и понятиях? Ебанутый?
>как две строчки компиляться в 2700 строк
Тоже, как он не осилил ключи компиляции и ебащишь отладочные сборки вкачестве пруфов? Малаца.
>Тоже, как он не осилил ключи компиляции и ебащишь отладочные сборки вкачестве пруфов?
Отладочные сборки в онлайн редакторы? Ну собери в релиз, опровергни, зачем пуки в воздух?
>Ссылаешь на студента
Какая разница если он говорит правильную инфу? Раст по сути использует ГЦ, более того, без него написать ничего нельзя. Зачем вообще весь этот сюр с владением и прочем, если все свелось к подсчету ссылок у смарт-указателя?
Ты сам просто попробуй осознай, что все это тупо маркетинг вокруг фич, которых в реале не используют. В реальности просто используется совсем другой подход.
Нет, не проще, а на таком же уровне, но современнее. Может кроссплатформа появится, но не обязательно
>Потому что у людей семьи, ипотеки, люди хотят стабильную и понятную работу, уверенность в завтрашнем дне.
Так я же не про фриланс говорю, а про полноценный аутстафф или аутсорс. Хорошие деньги + уникальный опыт, какие риски?
Я даун?
студяга
Ты молодец, мы всем двачем тобой очень гордимся. У тебя явно талант к программированию, продолжай в том же духе. Мало кто смог также. Даже у какого-нибудь кармака при таких же вводных это заняло бы никак не меньше 8-12 часов.
А если надо отсортировать не массив int, а массив double? Ещё раз такую функцию напишешь?
Не знаю, но сенкс за идею вечером попробую
>Ну собери в релиз, опровергни, зачем пуки в воздух?
>Спок, шиз, заканчивай кидаться на анонов.
Слив засчитан
Шизик из го/раст/жаба треда еще не проснулся, а остальным пох (написал и написал, молодец).
Даже с оптимизацией
-C opt-level=2.
Там высерается 50 строк на одну лямбду.
Зиро кост абстракшен - как есть.
Подскажите студенту-заочнику, как получить из строки уникальные слова по пробелу.
Пффф.. в Пыхе одной командой делал...
Зирокост абстракции выглядят вот так.
Ох уж эти зумеры, один высрал хуйню с жырным троллингом, а второй тупень на серьёзных щах с ней по всей борде носится.
Можно воспользоваться уникальным навыком гугления:
https://stackoverflow.com/questions/1388361/getting-unique-items-from-a-list
Не может управляемый язык с подсчетом ссылок конкурировать с С++ где смарт-указатели опциональны.
Как-то слишком коротко получилось и норм?
var items = index.ToLower().Replace(" "," ").Split(' ');
var unique_items = new HashSet<string>(items);
string st = "";
foreach (string s in unique_items) st = st + " " + s;
Вообще нет, лишь бы быстро работало...
Ну меня последняя строка немного смущает, склеивание строки по букофкам... Как тут говорят - чиорт побери...выглядит немного всрато
https://docs.microsoft.com/ru-ru/dotnet/api/system.string.join?view=net-6.0
Используй это для склеивания строк
Так же, если надо будет склеивать реально строки, есть
https://docs.microsoft.com/ru-ru/dotnet/api/system.text.stringbuilder?view=net-6.0
Чтобы не аллоцировать тонну строк в памяти.
С C-строками (которые выводятся из литералов если не указывать вручную "string") на GCC 53 строки.
А на кланге не смогло скомпилировать...
В твоем случае Join практичнее.
Открой исходники, внутри наверняка будет сбор через стрингбилдер.
Да мы наблюдаем на дваче исторические разоблачение раста-самозванца.
Надо бежать, роняя кал, писать линупсу торвальдусу, чтобы он это говно из ядра линупса поскорее удолил взад.
Там даже круче, используется какая-то оптимизация для получение билдера
https://github.com/microsoft/referencesource/blob/5697c29004a34d80acdaf5742d7e699022c64ecd/mscorlib/system/string.cs#L103
Поздно, Линус уже зашкварен. Только в ядре гугла вовремя сообразили и выкинули сие говно.
Если уж серьёзно к этому относится — то правильнее для такого сравнения в расте использовать полноценные строки, а не литералы, иначе это какой-то замер способности компилятора фолдить код с константами, а не сравнение реально генерируемого кода. И ещё в лямбде фильтра в плюсах ожидать string_view а не string, но результат не меняет, раст таки чуть лучше это фолдит.
Хотя как не крути, такое сравнение всё равно будет каким-то школьным бредом, чтобы манипулировать шизом и прочими, лол.
Как бы там не рисовались растеры, как бы не подгонялись тесты и как бы не ставили раст в противовес полноценного ООП языка, все равно на этом говне приходится кодить только через Rс и тому подобном.
Чуда не произошло, никаких супер технологий не завезли, маркетинг опять победил.
У нее и доки говно, пилил небольшую граф приложуху, если в wpf шаришь, разберешься.
Никак, это говно без задач. Нужно только если ты уже знаешь WPF.
В остальных случаях — вкатывайся либо в WPF и пердоль легаси, либо сразу в MAUI.
Ну так начинай с самых простых, они же там размечены.
Просто ты вебмакака, это лечится, но не быстро.
Лечится так себе, на самом деле. Если ты задротил алгоритмы в школе, побеждал в олимпиадах и сейчас без проблем сможешь решить какую-нибудь задачу на два указателя. А если нет, то сможешь решить после того, как нарешал 3-4 подобных задачи. Но суть в том, что ты спустя пару месяцев забудешь напрочь как ты эту задачу решал. Ну вот из головы вылетит и все, и на собеседовании уже вряд ли сможешь повторить. Но тут еще такое дело, что если периодически повторять уже решенные задачи, то может и запомнишь решения и идеи основные и уже не так сильно облажаешься.
Чтобы получить изменяемую переменную, её надо отдельно поменить ключевым словом mut.
В C# все локальные переменные изменяемые. Почему нельзя сделать локальные переменные только для чтения, помечая их readonly?
Например, readonly int z = x + y;
Хотя бы для структур почему так не сделали?
С точки зрения компилятора, это совсем не сложно реализовать.
При этом было бы удобно, сразу видеть, какие переменные могут далее меняться, а какие вычислены на месте и окончательно.
Если честно написано плохо. Дёрганно, не структурированно, лишняя информация. Нашёл другой сайт, может здесь лучше будет https://wpf-tutorial.com/
В матеше и лямбда исчисл тоже переменные, но там явно не про изменяемое состояние
Диск не могу поменять, а студия лезет на системный хотя указываю другой))
По разному, предполагаю.
Где-то может быть специальный нюгет фид, который сдохнет после триала, зато ПОЛНОЦЕННУЮ ВЕРСИЮ дают потрогать, где-то обрубок функционала, а чтобы был не обрубок, введи код и прочее.
Если разрабы допускают использование их либы не для коммерции, то там явно должно быть это обговоренно (что считается "некоммерцией", как пользоваться либой в бесплатном режиме, etc), иначе по умолчанию должен купить либу.
Разбирайся конкретно с каждой либой, там везде свои способы навернуть говна.
Понял, спасибо.
Как и чем отловить запросы мобильных приложений? Какой эмулятор юзать? Реально ли будет подделать запросы? Хочу сделать смсБомбер. Понятно что сначало буду сайты добавлять, но хотелось бы на будущие знать стоит ли заморачиватся с моб приложениями?
Смотри программу proxycap, ей загоняешь запросы в дебаг проксю и готово. Хттпс можно, но надо будет добавить сертификат прокси.
Сам иди учи, хуеплет.
>Почему нельзя
Потому что для твоих околоматематических выебонов существуют функциональные языки. В CLR среде это F# и там все это есть.
Говна наверни.
>Ридонли = математика?
Ебало завали.
Тот реадонли который ты описал, кроме как в реализации каких-нибудь предметных алгоритмов (по сути решения матформул или численных методов) смысла нет использовать. В нормальном ООП-шном контексте такое либо нахуй не нужно, либо решается другими способами.
>>259849
> зачем тогда в твоём любимом языке const/in
А ты сначала разберись как они работают, а потом вякай. const это просто способ заменять статические значения в компайл-тайме. А in нужен как один из механизмов обеспечения инкапсуляции.
in - инкапсуляция? я про const& аргументы.
Конст для замены? А это нахуя? для прироста производительности? Ридонли локальные в нормальных яп дают прирост. Есть ещё ридонли нелокальные, забыл. И ридонли не как не связано с алгоритмами и/или ооп, это просто гарантии, они в любом виде полезны. Но можно конечно защищать дизайн языка, потому что кругозор этим языком и ограничился.
>это просто гарантии
Гарантии чего? Если тебе не нужно менять локальную переменную, так не меняй ее, в чем проблема?
чтобы спрятать посильней разумеется. но вообще мне недавно понадобилось расширить один абстрактный класс другим абстрактным классом и например часть методов у него из виртуальных стали абстрактными, а некоторые виртуальные методы и вовсе хотелось бы скрыть для наследуемых от второго класса так как нехуй туда лезть
1 Гарантии компилятору
2 Для защиты программиста от самого себя придумано дохуя вещей, особенно в с#. Примеры: гц, отсутствие множественного наследования (и ввод интерфейсов и абстрактных классов), типы, все внутри unsafe и т.д.
на самом деле отсутствие множественного наследования не является положительной чертой шарпа.
> Почему нельзя сделать локальные переменные только для чтения, помечая их readonly?
Ну а что тебе это должно дать?
Серьезно.
Вот допустим код:
readonly User user = new User();
Какое поведение ты ожидаешь в ООП?
То что теперь нельзя сделать user = new User("Zalupa", "Petrov")? Или нельзя user.UserName = "Zalupa"?
Допустим как в JS и эфшарпах - я не могу первое сделать. Что мне как программисту кодящему в парадигме ООП это дает-то? Я, обычно, использую локальные переменные для того чтобы 1. Обеспечить потокобезопасность, скопировав ссылку на нужную мне хуйню; 2. Улучшить читаемость, чтобы не писать user.Role.Privileges в коде, а просто писать privileges. А вся остальная хуета берется из полей класса в котором я все реализую, а эти поля как раз могут быть либо readonly, либо мутабельными, если это требуется. Так зачем мне для локальных переменных это вот? Я действительно не совсем понимаю. Тем более, что во всякой хитрой бизнес логике(а это основная логика, которую приходится на шарпе писать), у тебя в любом случае большая часть переменных будет мутабельной.
>Тот реадонли который ты описал, кроме как в реализации каких-нибудь предметных алгоритмов (по сути решения матформул или численных методов) смысла нет использовать.
Няша. Окей.
Вот у тебя есть класс:
class A{
public SomeRefObject SomeRefProp;
}
У тебя есть два метода:
async Task Foo(A a){
if(a.SomeRefProp is null){
throw new Exception();
}
await SomeLongRunningTask();
a.SomeRefProp.SomeMethod();
}
void Bar(A a){
a.SomeRefProp = null;
}
Что произойдет, если пока SomeLongRunningTask выполнялся, я в другом потоке вызову Bar и передам тот же объект что и в Foo?
А теперь что будет в случае :
async Task Foo(A a){
var prop = a.SomeRefProp;
if(prop is null){
throw new Exception();
}
await SomeLongRuningTask();
prop.SomeMethod();
}
Ты, конечно, можешь не считать это элементом потокобезопасности, можешь хоть как это называть. Только вот открываешь код самого фреймворка и там это используется повсеместно и сами майки пишут //thread safeness. Я - человек простой, книг не читал, в вузе не учился, и вообще на работу попал по знакомству, но я доверяю тому, что пишут майкрософт в комментариях к своему же коду. Конечно, может быть они - врут и троллят, чтобы такие хуи как я, изучая исходники - попадали в ловушку, но хуй знает.
Няша. Окей.
Вот у тебя есть класс:
class A{
public SomeRefObject SomeRefProp;
}
У тебя есть два метода:
async Task Foo(A a){
if(a.SomeRefProp is null){
throw new Exception();
}
await SomeLongRunningTask();
a.SomeRefProp.SomeMethod();
}
void Bar(A a){
a.SomeRefProp = null;
}
Что произойдет, если пока SomeLongRunningTask выполнялся, я в другом потоке вызову Bar и передам тот же объект что и в Foo?
А теперь что будет в случае :
async Task Foo(A a){
var prop = a.SomeRefProp;
if(prop is null){
throw new Exception();
}
await SomeLongRuningTask();
prop.SomeMethod();
}
Ты, конечно, можешь не считать это элементом потокобезопасности, можешь хоть как это называть. Только вот открываешь код самого фреймворка и там это используется повсеместно и сами майки пишут //thread safeness. Я - человек простой, книг не читал, в вузе не учился, и вообще на работу попал по знакомству, но я доверяю тому, что пишут майкрософт в комментариях к своему же коду. Конечно, может быть они - врут и троллят, чтобы такие хуи как я, изучая исходники - попадали в ловушку, но хуй знает.
Для классов иммутабельность не работает. Потому что не возможно гарантировать, что вызов метода чего-нибудь не поменяет.
Поэтому даже нет классов readonly class, а readonly struct есть.
Можно было бы дать возможность помечать в классах методы как readonly, что даст возможность конпилятору делать проверки иммутабельности, но тогда придётся и всю стандартную либу переписать.
Для структур же это уже работает.
Хочется писать нормальный код с формулами, легко читаемый людьми с физ-мат. подготовкой, а не макаками.
Матанодебич, спок
Пиздец, товарищи.
Потокобезопасность — это обеспечение целостности данных, а не создание ссылки на объект чтобы он не дропнулся нахуй. Как твоя ссылка в стеке потока не даст пойти и сделать кашу из содержимого SomeRefProp — это, блять, загадка.
То, что ты высрал — это костыль by design. Сколько макак не учи — всё равно будут высирать шаренный стейт.
Короче, перестань срать терминами которых не понимаешь а лучше пиздуй делать домашку на зимние, завтра в школу.
Нету такой возможности.
Вообще, если честно, я бы вообще убрал нафиг все операторы которые к математике относятся. Даже булевые операторы. Потому что хуйня это все. Держать в голове порядок действий - это слишком сложно для программиста. С вызовом методов - все просто: ПОСЛЕДОВАТЕЛЬНО.
Да и читается легче:
int i = 5;
i = i+++++i;
против
int i = 5;
i = i.Add(i.PostIncrement(1), i.PreIncrement(1));
А потом набивка одной умеренной формулы превратиться в 300 строк нечитаемых помоев.
Дядя. Меня почему-то учили, что потокобезопасность - когда поведение кода программы не зависит от порядка вызова потоками. Все.
> Как твоя ссылка в стеке потока не даст пойти и сделать кашу из содержимого SomeRefProp — это, блять, загадка.
А эта ссылка и не для этого нужна. Она нужна как раз для того чтобы код выполнялся одинаково независимо от того изменит ли кто-то у A свойство или нет. Про превращение в кашу SomeRefProp нужно будет думать уже в контесте не того кода, а кода для класса SomeRefObject.
> То, что ты высрал — это костыль by design.
Майки пользуют. Чем я хуже?
> Короче, перестань срать терминами которых не понимаешь
Ну, я использую термин в том виде в котором он дан в той де википедии:
> Thread safety is a computer programming concept applicable to multi-threaded code. Thread-safe code only manipulates shared data structures in a manner that ensures that all threads behave properly and fulfill their design specifications without unintended interaction
А ты - как раз придумал себе в голове что-то и доебался до меня. Код в сценарии 1 - не потокобезопасен исходя из определения. Во втором - потокобезопасен. То что ты можешь сам объект SomeRefProp из третьего потока превратить в кашу - это уже дизайном класса будет обусловлено, но это уже к тем двум сценариям не относится.
тот кто такую хуйню нечитаемой пишет того надо хорошенько отпиздить. такое надо записывать в сотню строк большая часть из которых комменты.
>Дядя. Меня почему-то учили, что потокобезопасность - когда поведение кода программы не зависит от порядка вызова потоками. Все.
Ого, а в чём выражается результат этого "поведения программы"? В данных на выходе. Поздравляю, ты сказал то же самое в 4 раза длиннее.
>Майки пользуют. Чем я хуже?
Да ничем, indus-driven-design самое то для таких овощей, как ты.
>мутабельный стейт в многопоточном окружении
>ну я магу ссылку сахранить пук срень
Долбоёб? Долбоёб.
Дебилам лишь бы насрать где-нибудь в коде, даже не хочет ведь включать мозг.
Пиздуй делать уроки, хватит читать что индусы высрали, на неокрепший моск слишком сильно давит.
> мутабельный стейт в многопоточном окружении
async Task Foo(A a){
var prop = a.SomeRefProp;
if(prop is null){
throw new Exception();
}
await SomeLongRuningTask();
prop.SomeMethod();
}
Давай, покажи что тут может смутировать, если SomeRefProp - иммутабелен. Очень интересно посмотреть.
Парсинг для рынка СНГ. Стоит в таблице градусы цельсия, С. И попробуй угадай, в какой раскладке её напечатали, в русской, украинской или латиницей.
Надо либо запрещать такое либо ввести правило и писать автозамену.
Так как тети сраки часто вместо "Си" пишут русскую "эС", было сделано предупреждение об этом (алгоритм прост, если в слове больше кириллицы и встречается латинская или другая буква - это вероятно ошибка, предупредить).
А вот на веб сайте вообще запрещаем в никах мешать ру с не ру.
Так же я предложил сделать предупреждение в словах, а то поисковики не поймут, но клиент оказался беден.
Чел, айти - это не только веб-параша.
В моём случае например, приходится парсить готовые отчёты в ворде. Отчёт давно сдан, автор может уже на пенсии, некому запрещать, некого предупреждать.
Можно только пометить, что требуется помощь человека, что должно быть исключительным случаем, иначе за что нам деньги платить тогда?
Какие же программисты пошли тупые.
В посте приводится два примера, второй явно оговариваться что из веб, подразумевая что первый пример из чего-то другого.
Это называется homoglyph search. Не смог найти библиотеки для c# https://www.npmjs.com/package/homoglyph-search
Наверное нет (хз как оно там в го), но у нас есть пул потоков.
Это известный список TR-39. Но человеку который хочет сравнивать, а не обнаруживать подмену лучше об этом не говорить.
На самом деле в юникоде столько говна, что имеет смысл по диапазонам вычленять все это говно. Но вопрос в другом, что считать этим самым говном? Поэтому такой общей либы быть не может, а написать свой, скажем для русский и английских символов - дело 5 минут.
Зелёные потоки ≠ корутины; если верить стаковерфлов в шарп это пришло с f#, туда идеи с хаскеля
Одно и тоже. Асинхронное программирование.Зеленные потоки - термин популяризированный ныне благодаря жаба конференций, которые гордятся тем, что когда они у них были
Зеленые потоки - софтовые потоки, наверн именно реализованные в юзер моде.
Корутины - функции с паузами.
Одно и тоже, потоки на уровне программы (не системные).
>Корутины - функции с паузами.
Какие паузы))
Чи я не прав? Поясните, хуевая или не совсем хуевая практика?
У меня так было, база на тестовой машине могла на неделю отличаться от прода, это было не очень удобно, я хотел переписать в файл, чтобы еще версионировалось.
И да, на тестовой машине другие немного настройки есть. Тоже каждый раз восстанавливать
> нормальные вопросы придумают
Есть два стула, на одном море говна, на второе полотенце брошено. Сколько лет ёжику?
Нет. Async await это просто удобный способ работы с promise/future и не более.
Зеленые потоки в Го (горутины) - это как раз
>софтовые потоки, наверн именно реализованные в юзер моде
Горутины тем и отличаются, что ими управляет гошный рантайм и их можно создавать десятки и сотни тысяч, если не миллионы, в отличие от системных.
>>261167
>термин популяризированный ныне благодаря жаба конференций, которые гордятся тем, что когда они у них были
Они были во времена 90-х годов, потом от них отказались в пользу системных. Потом после бума гоуленга и ноды они решили-таки запилить Loom.
В дотнете тоже были попытки запилить зеленые потоки во времена .NET 1.x и .NET 2.x, но они тоже успехом не увенчались, вместо этого позже добавили удобный способ работать с future/promise.
А для наллабл<Т> !nullable1.HasValue vs nullable1 == null vs myint == -13
Вопрос чисто теоретический.
Нет, они их как раз осилили, что в джаве, что в дотнете, но очевидных преимуществ зеленых тредов перед системными тогда не видели, а задачи в основном предполагали не гружение джейсонов на бекенде, а cpu-bound вычисления на десктопе. Сейчас, конечно, всем достаточно одного потока и евент лупа, как в ноде, но это сейчас, в те времена люди еще использовали тяжелую многопоточку повсеместно.
>термин популяризированный ныне благодаря жаба конференций
Так и знал что найдется баран, который начнет вспоминать историю, игнорируя поправку "популяризированный ныне". Вот настолько программисты тупые, что видят слово-триггер начинают печатать одну и туже пасту, снова и снова, как дрессированная макака.
>Нет. Async await это просто удобный способ работы с promise/future и не более.
Жопоскрипщик пожаловал. А promise/future это блин не асинхронное программирование, да?
>Горутины тем и отличаются
Это просто термин маркетологов, от древнего слово корутины. Работает все так же, все теже абстрактные функции, только дергает шедулер. От чего го так тормозит, как-будто и не асинхронный вовсе.
Квази потоки (зеленные) софтины - это и есть асинхронное программирование, без разницы как там они сделаны. Отказались в свое время (в жабе тоже), ибо говно без задач в то время, а накладывает определенные условия на программиста.
>Сейчас, конечно, всем достаточно одного потока и евент лупа, как в ноде, но это сейчас,
кому всем? кто эти все?
читай код чужих проектов. особенно те которые low allocation. возьми хотя бы асп.нет коре и изучай код. и тому подобные Microsft.extensions.*
А также реализацию десериализаторов и асинк примитивов
Зеленые потоки могут быть реализованы с использованием корутин, но это не значит, что эти термины равнозначны.
Пили сам что-то в свободное время.
Ну и да. Термин сеньер - это игрушка дьявола. Во многих конторах его за выслугу лет просто навешивают. По факту, для рынка в вакууме - сеньер это РЕШАЛА, который может и роутер настроить, и архитектуру масштабируемую в соло построить, и код пишет как в мемах про хацкеров, и за ассемблеры разные пояснит(и даже напишет свой загрузчик, если придется), и нат пробьет, и CI/CD сделает, и нубов научит, и с клиентами попиздит. Но скажи средниму мидлу, что чтобы стать сеньером - ему нужно быть вот таким вот челом, начнется вонь, про то что с хуя, я ж [выбери область]-программист, делаю хуйню монотонную уже 5+ лет, дайте мне лычку и ЗП побольше. А вот. Сравни как раз дедов, которые на том самом: ИЗИ ВКАТИТСЯ БЫЛА, БРАЛИ ВСЕХ ПОДРЯД. Для примера с ютуба - Соер. Хуи, что знают все подряд и продолжают учиться, будучи дедами, а в свободное время для дополненной реальности проекты пилят, да ведут блоги, семинары и вообще. Ведь такие в массе - успели и сисадминами побыть, и с кучей фирм разного размера поработать, и сайтики делали, самописные фреймворки, библиотеки, паять умели, и принтер заправлять, ну ты понял короче.
Короче. Если тебе в конторе сеньером - ПРОЯВЛЯЙ ЛОЯЛЬНОСТЬ(не факт правда, что после смены пары менеджеров про твою лояльность не забудут и тебя не пошлют лесом). Если хочешь быть НАСТОЯЩИМ ТРЕЙД МАРК СЕНЬЕРОМ - изучай все до чего дотягиваются руки, пиши все свободное время, читай статьи, ездий на конференции и постоянно повышай планку. Только второй тип - это про тебя прет от работы или ты ясно видишь, что сможешь применять эти знания чтобы улучшить положение. Сейчас, к счастью, есть много наглядных примеров, которые показывают, что эти все знания хорошо стоят, даже какой-нибудь кобол, а потому попроще.
Такой и самому вроде несложно сделать
REST
Свойства - без какой либо сокрытой магии, какие и должны быть.
Явные виртуальные методы и явный оверрайд (и sealed)
Скрытие (перекрытие) свойств/методов.
Люди явно делали язык с душой. Вот гляжу сейчас на кокотлин, как они надругались над конструкторами и понимаю, что люди просто местами тяп-ляп налепили.
пишу на обоих языках, причем на шарпе с самого его рождения
И год на котлине. И именно лаконичный синтаксис котлина очень сильно накидал камней в огород моего любимого шарпа
Синтаксис - сильная сторона котлина (ну кроме некоторых WTF, но и в шарпе их хватает)
Про свойства - без магии. В котлине так наговнили с дизайном что нельзя сделать публичный геттер и приватный сеттер.
Например (картинка) если хотите сделать публичным var.Length, но для сеттера нужна какая-то еще проверка (например, пусть на отрицательное значение), то у вас через свойство такое не выйдет в котлине.
На конференциях же говорили (считая за дурочка) что таких кейсов не бывает и вам это не надо (а не то что не смогли).
Да, там есть более приятные визуальные решения, те же лямбды, но опять же они это слизали вдохновились с груви.
А вот добавив функции в язык, они даже не подумали, что придется импортить все через звездочку, а "звезда это пизд...", каждый джавист знает (и питухонщик).
ЯП без души как есть, просто навдохновлялись синтаксисом и все.
Те же прозрачные лямбды тоже создали ряд проблем, теперь часто видно лесенку этих лямб и чтобы понять что происходит, приходится читать все эти кишки, когда как раньше люди хотя бы прятали кишки в методы и называли как-то осмысленно, тем самым давая понять что там происходит и надо ли вообще тебе туда лезть.
>придется импортить все через звездочку
никто насильно не заставляет же. И при этом удобно читать исходники без IDE.
> теперь часто видно лесенку этих лямб
что делает возможным такую шнягу как jetpack compose. на шарпе такое было бы куда менее выразительным
>>262509
если не сравнивая с котлином, а исклчюительно про синтаксис...навскидку
- необходимость писать new
- именованный конструктор
- ConfigureAwait(false)
- = null!
- шаблон Main в дотнет 6 просто ахтунг
- нет break level (зато есть goto хы хы)
- [^1] понятно, но уродливо же
- Func<,,,> сигнатура
- is var
- неймспейсы. только вот позволили не ставить {}
- МНОГОСЛОВНО ВСЕ пипец. Не так как в жава, но все равно
... я спать
Много как. Можешь запилить шину сообщений в которую гуй будет писать что-то, а серсис из этой шины - читать. Можешь в сервисе сокет открыть и реализовать дуплексную связь(удачи, кек, майки-то поленились сделать что-то нормальное, а тот велосипед что я делал - я не дам). Можешь по ресту как предложили, еще и сверху вебсокеты прикрутить, чтобы если сервис упал - в гуе сразу это было видно. Можешь с помощью файликов реализовать, если это на одной пеке работает или есть общая сетевая папка. Короче. Вариантов куча.
Единственное это неймспейсы, остальное притянуто за уши.
>именованный конструктор
Вообще говорит о тебе что ты пришел со скриптов.
>шаблон Main в дотнет 6 просто ахтунг
Это для обучение и фаст-консольного письма, это же опционально.
>никто насильно не заставляет же. И при этом удобно читать исходники без IDE.
Как раз без IDE импорты по звезде вообще не читаемы (видимо на это и расчет, как с корутинами вышло).
Зависит от конторы. Наши взяли оноклассника сына директора по блату, абсолютный ноль. Спустя два года научился писать простенькие круды, копипастом.
Можешь дать парочку конкретных примеров приложений, только попроще, чем исходники asp.net core - от них у меня депрессия начинается.
макаки-бекендеры видимо
Так зеленые потоки стали популярны не благодаря жабе ведь. Когда они решили пилить свой лум 4 года назад так до сих пор и допилили, лол, на лютом хайпе был модный молодежный гоуленг с его горутинами. Из гоуленга все и пошло тащем-то.
>Единственное это неймспейсы, остальное притянуто за уши.
Ну так все можно назвать вкусовщиной, ведь мы говорим всего лишь про синтаксис, а к нему можно привыкнуть. На жаве вон тоже же пишут. И даже на пхп - и не жалуются.
>Вообще говорит о тебе что ты пришел со скриптов.
Ну да. Я помнится писал на скриптовых языках, когда шарп еще физически не существовал. И каждый раз когда я копипастил конструктор в другой класс я чертыхался на необходимость править имя. И не видел и не вижу НИ ОДНОЙ причины чем именованный конструктор лучше спец имени
>Это для обучение и фаст-консольного письма, это же опционально
Да хер там плавал. Создается в новой студии по дефолту и приходится потом руками создавать старый вариант. Реально напрягает. И не меня одного - на гитхабе даже issue на этот идиотизм есть
>>262558
>Как раз без IDE импорты по звезде вообще не читаем
верно, но импорты по звезде создаются вручную
Я вот пишу в Android Studio и он мне подсказывает иморт и звезды сам никогда не ставит
потому что там нет индексов же. Каждый элемент знает только о соседе. И никакого другого знания нет.
Енто понятно. Но почему бы не допилить индексы из коробки. Был бы идеальный вариант между Листом и обычным массивом.
А зачем там индексы? Получение элемента по индексу самому легко написать, просто эта операция будет требовать O(N) по времени, в то время как в массивах O(1) всего лишь.
> O(1)
Чтобы вот этого добиться. В обычном списке, чтобы дойти до нужного элемента, нужно пройти через все ссылки перед ним, то есть O(n).
Связанный список это базовая структура. Индексы ведь тоже где то хранить нужно. А это потеря памяти на ровном месте. А если не хранить отдельно индексы, а хранить элементы связанного списка тупо в массиве, то получим все неудобства массива - необходимость хранить все вместе, изменение размера...
Никто не запрещает делать гибридную структуру где есть доступ обоих видов
>В обычном списке
Обычный список это List<T>? Тогда нет там O(n), внутри у него обычный массив и доступ по индексу идет за O(1).
>с хуя, я ж [выбери область]-программист
Всё так и есть. Смотрю сеньйорские вакансии 5+ лет и охуеваю - в среднем дают по зарплате всего лишь больше примерно на 50-70% от моей, но знать требуют в несколько раз больше.
Тут уже думать надо, может лучше свой SaaS маленький делать, а в конторе миддлом сидеть.
Связном списке.
> Создается в новой студии по дефолту
Если у тебя так горит - сделал бы давно шаблон свой. Делается оно за 2 минуты.
Ну и да. ИРЛ ты не создаешь по 10 проектов в день. Обычно ты над одним пердишь год-два, а потому то что по дефолту там создалось - до пизды.
> ведь мы говорим всего лишь про синтаксис
Речь была про WTF. А не вкусовщину или синдром утенка.
Вот в котлине очень много WTF, там в целом как-будто половину смогли, а половину как-будто наспех сделали.
Хотя решения с груви и скалы там удобные есть. Отказ от точки запятой удобен, но местами очень сомнителен. Двоеточие для типа, тоже такое себе. Тупость с иммутабельностью let вообще смешно, когда 99% работаем с объектами, на которых это не работает распростроняется.
>я чертыхался на необходимость править имя
Я вижу ты не совсем часто кодишь, как бы это уже давно ипостась IDE. Я согласен что спец слово лучше, но это просто историческое решение.
>Создается в новой студии по дефолту
Создал бы пустой, тоже пришлось руками создавать классы. Смешно, но дефолтный класс и раньше всегда приходилось руками править. В общем, сложна жизнь программиста.
На самом деле очень удобно стало создавать из консоли подобие скриптов, так как не хотелось бы csproj ручками каждый раз писать.
dotnet new console
dotnet run
>верно, но импорты по звезде создаются вручную
Насколько помню, последний раз как раз идея пыталась портянку из списка импортов свести к звезде и надо было отключать в настройках это. Хотя могу наврать, не помню уже, но помню что нередко на звезду в гитхабе натыкался.
создаю. папка тест просто засрана проектами для "а ну попробую эту штуку как она работает". И код там посложнее хелловорлд на порядок, но это все равно прототип какой то мелочи.
>>263253
>Речь была про WTF. А не вкусовщину или синдром утенка.
вкусовщина это где писать тип функции или def/fun/function/void...
А это просто неудачные решения, которые делают синтаксис более монструозным или семантически запутанным. или просто корявым
ConfigureAwait(false) например. Народ предпочитает его не писать полагасясь на "авось не будет контекста".
is var вообще без 0.5 не разберешься интуитивно
>Вот в котлине очень много WTF,
навалом.
тот же companion object вызывал "штааа" пока не понял почему так. но все же немного "шта" осталось.
но все же синтаксис сильно более лаконичен и это приятно.
>Двоеточие для типа, тоже такое себе.
наоборот удобно.
А вместо
Func<int, int, int, string> callback
симпотное
callback: (int,int,int)-> string
>Тупость с иммутабельностью let вообще смешно,
в шарпе не хватает как раз подобия let, also и тому подобного. В итоге на шарпе симпотные на котлине dsl выглядят монструозно.
>Я согласен что спец слово лучше, но это просто историческое решение.
ну то что оно историческое - не делает его нормальным.
>Я вижу ты не совсем часто кодишь, как бы это уже давно ипостась IDE
я не про рефакторинг. При прототипировании копипаст просто зашкаливает.
>как раз идея пыталась портянку из списка импортов свести к звезде
ну звезда это ручками. При автоимпорте IDE выдаст полный импорт и при оптимизации звезду тоже не нарисует.
создаю. папка тест просто засрана проектами для "а ну попробую эту штуку как она работает". И код там посложнее хелловорлд на порядок, но это все равно прототип какой то мелочи.
>>263253
>Речь была про WTF. А не вкусовщину или синдром утенка.
вкусовщина это где писать тип функции или def/fun/function/void...
А это просто неудачные решения, которые делают синтаксис более монструозным или семантически запутанным. или просто корявым
ConfigureAwait(false) например. Народ предпочитает его не писать полагасясь на "авось не будет контекста".
is var вообще без 0.5 не разберешься интуитивно
>Вот в котлине очень много WTF,
навалом.
тот же companion object вызывал "штааа" пока не понял почему так. но все же немного "шта" осталось.
но все же синтаксис сильно более лаконичен и это приятно.
>Двоеточие для типа, тоже такое себе.
наоборот удобно.
А вместо
Func<int, int, int, string> callback
симпотное
callback: (int,int,int)-> string
>Тупость с иммутабельностью let вообще смешно,
в шарпе не хватает как раз подобия let, also и тому подобного. В итоге на шарпе симпотные на котлине dsl выглядят монструозно.
>Я согласен что спец слово лучше, но это просто историческое решение.
ну то что оно историческое - не делает его нормальным.
>Я вижу ты не совсем часто кодишь, как бы это уже давно ипостась IDE
я не про рефакторинг. При прототипировании копипаст просто зашкаливает.
>как раз идея пыталась портянку из списка импортов свести к звезде
ну звезда это ручками. При автоимпорте IDE выдаст полный импорт и при оптимизации звезду тоже не нарисует.
>Использовать полновесную БД для хранения настроек приложения норм или не оч идея?
Зачем полновесную? скулайт прикрути, тебе для любых настроек хватит. А держать ее можешь хоть в памяти, хоть на диске.
Ну, я исходя из того, что полновесная и так нужна приложению, а так, в ней одна табличка с настройками добавилсь и при старте проинициализировали все дело.
Если тебе от связанного списка нужно O(1) на получение элемента, то ты жестко проебался еще на этапе проектирования. Возвращайся к началу и переделывай.
Ну это исходя из того зачем и как у тебя используется БД в приложении. Если чисто для технических нужд и внутренней логики, то в принципе еще одна табличка погоды не сделает. Если же у тебя там данные и логика бизнеса хранятся, то тут уже могут возникать проблемы. Начиная от того, что тебе постоянно придется учитывать эту таблицу, чтобы она не смешивалась с бизнесом (например экспорт/импорт, права доступа, хитрые индексации и т.д.). Плюс если потом будешь БД на другую менять можешь проблем огрести. А на скулайте по сути один раз сделать и забыть. И работать будет везде, независимо от среды.
if (obj is User user)...
и просто котлинувскую версию, где есть тоже самое, но магией (автоматически) каститься все в переменную obj. Кажется настолько простая вещь в дизайне, но какое сильное решение.
Они могли бы тупо скопировать версию котлина и забить, но челики посидели и подумали и сделали явное действие, сведя на нет магию, где переменная не затеняется.
Видно что над фичами потеют и стараются все предвидеть.
Да, язык не молодой и много старых фич еще нулевых и девяностых, но в то же время все еще гибко и круто выглядит. А не тяп ляп, а на конференции мы потом посрем в уши (фанбои съели, нормальных ккодеров отталкнули).
Чел, если тебе так нрввится котлин - на здоровье же.
Я вот в свое время почитал про него, взялся проект писать мелкий для своих нужд. Плевался постоянно, потому что все эти охуительные вещи - оказались нихуя не удобны во многих сулчаях, еще и всюду торчит хуйня из старой жавы. Блядь, почему ебучие майки могут для одного дотнета нормально поддержку всех языков: хош паскаль, хош - f#, хош - VB, все шо хош делай, а котлин, который под патранажем гугла делается - выглядит как тайпскрипт над жаваскриптом ебучий, т.е. не полноценный язык, а хуйня какая-то.
Короче. Я не знаю, чего ты горишь. Если тебе не нравится шарп, но хочется дотнета - можешь запилить поддержку котлина, делается это не так уж сложно, за месяц - справишься. А если тебе и дотнет не нравится, то в чем смысл всей этой хуйни?
с чего ты взял что мне не нравится шарп?
шарп мой основной и любимый язык. Я его использую с его рождения и до сих пор причем на острие (благо работа позволяет)
Я всего лишь вступился за котлин, когда его стали обсирать даже не используя его толком.
На котлине код лаконичнее и выразительнее - просто факт.
Ничего, что я про конструкцию из дотнета и за дотнет говорю?
Вы биороботы, вы даже не вникаете текст, а просто как роботы треггиритесь на раздражитель.
Может у тебя винт сыпется?
>На котлине код лаконичнее и выразительнее - просто факт.
Звездеж конфиренц.попугая, та же сама жаба ничего выразительного. Может на мобилках там модно и молодежно, но на бэкенде та же жаба, да еще с всплывающими вечно нюансами "100%" совместимости.
companion object -
mutableListOf
Очень выразительно
companion object
mutableListOf
hashMapOf("a" to "x", "b" to "y", "c" to "zz")
Ну и вишенка на торте это печать символа $
println("${'$'}")
>та же сама жаба ничего выразительного
>Может на мобилках там модно и молодежно, но на бэкенде та же жаба
я не пишу бэкенды. с жавой дел не имею, ибо не люблю, да и не знаю ее.
Для бэкенда я шарп возьму
>companion object -
для меня это было WTF изначально. И я такой бегал и ржал как шарпист "смотрите как они дико статики обозвали". Но потом разобрался в семантике и устыдился
>mutableListOf
а такое наоборот лучше чем new List<string> {}
выразительнее
>>263639
>hashMapOf("a" to "x", "b" to "y", "c" to "zz")
а вот это а to b ну да бред
один из WTF
>println("${'$'}")
простое экранирование через \ работает
>семантике и устыдился
Даже глава проекта признал что наговнили и теперь это еще мешает.
>а такое наоборот лучше чем new List<string> {}
Не, куда лучше realEnterpriseMutableListBuilderOf()
>простое экранирование через \ работает
Хм, и правда пофиксили. Это очень забавно выглядело раньше, как-будто не учли этот момент и показали хак. То есть, в реале никто там в проде этот котлин толком и не тестил вообще
Райдер +- неплох, но под виндой наверное лучше студию использовать.
>Даже глава проекта признал что наговнили и теперь это еще мешает.
Где признался? что наговнили?
ну понятно что наговнили они во многом, но не тут.
Тут просто другая семантика, но в итоге она позволяет реализовывать статикой интерфейсы и делать методы расширения для статики, чего подобного в шарпе увы нет и если хочется расширить статический класс, то хрен там.
я кстати не знал что можно так, но когда увидел как это делается в недрах jetpack так сразу одухотворился полезностью онного
>Не, куда лучше realEnterpriseMutableListBuilderOf()
не. лучше mutableListOf
не нужно утрировать.
>>247358
>>247357 (OP)
Хах, спасибо насчет английского. Сейчас учу шарп по видео курсам Романа Труфанова, в данный момент учу web api asp. Net core 5. Немного касаюсь фронтенда. Надеюсь, стану прогером и полюблю кодинг
>и если хочется расширить статический класс, то хрен там.
Безумие не знает границ.
Поля/методы статического класса, это форма представление этого самого класса и больше никого. Наследование по статике это уже каша для предметной области ООП, хотя в динамик языках я такое безумие видел. В этом случае они правильно сделали, что не назвали это статикой.
>наговнили они во многом
Речь про компаньоны я еще за тебя за нитью разговора должен следить?
>не нужно утрировать.
Само по себе то, что для динамического (по размерам) списка, который мы берем вместо статического массива, есть вариант неизменяемости, вот это реально утрирование абсурда. То есть, сам по себе списки были созданы, как некая наполняемая структура неизвестного размера, в противовес прибитого гвоздями массива. Конечно есть удобные технические моменты когда удобно что список заморожен, но это скорее исключение, а не дефолтная задумка конструкции списка
я начинающий трап
стоит ли вкатываться в сишарп? или попробовать другой стэк (не хочу фронт)?
насколько в сишарп толерантное коммьюнити?
в какие вообще компании можно устроиться?
не погонят ли с работы, когда условно начну приходить в чулочках и менять паспорт?
какие задачи на сишарпе решаете у себя на работе? какой выбор направлений есть, десктоп, бэкенд, etc?
нет, это не троллинг
Думаю тут лучше какой-нибудь питон подойдёт. Заодно коллеги своим питоном поделятся.
а кроме шаринга питонов между коллегами какие еще аргументы в пользу пайтон имеются?
Свободное время есть, хотелось бы и дальше развиваться, но что то я никак не решу, в какую сторону.
1. Глубже погружаться в шарп, паттерны, в алгоритмы, всякие деревья и т.д.
2. Сопутствующие технологии. JS фреймворки (vue, angular), сетевое администрирование, освоить линукс и т.д.
3. Начать писать свой пет проект для портфолио. До этого делал, но сейчас понимаю что он ужасен, надо с новыми знаниями.
4. Освоить второй язык. Варианты - Java для мобилок, Питон потому что модно, руби, потому что есть знакомый рубист, который рубит просто горы зелени.
5. Податься во фриланс параллельно, благо время есть. Правда я плохо представляю что можно делать на шарпе для фриланса.
6. Ваш вариант?
Что б вы выбрали?
>Безумие не знает границ.
Не читал(использовал), но осуждаю (с)
>Поля/методы статического класса, это форма представление этого самого класса и больше никого
И что? Поля методы экземпляра тоже его, но вот существуют методы расширения в тот же шарпе, а потом еще и в интерфейсы даже напихали дефолтные реализации. Потому что это удобно не заводить дополнительные классы только потому что "не хватает метода который семантически нужен именно тут"
>Наследование по статике это уже каша для предметной области ООП
Бред. Ничем наследование по статике не грозит, кроме удобства. Расширение по статике несет столько же вреда, сколько методы расширения для экземпляров или методы в интерфейсах
Ты все равно не сможешь эту статику никуда передать вместо экземпляра. А не заводить новый класс ClassEx приятно
>Речь про компаньоны
и я о них. это просто немного другая семантика чем привычная статика в шарпе, и по факту более гибкая. Я видел пользу от этого. Пруфы вреда принес бы кто.
>Само по себе то, что для динамического (по размерам) списка, который мы берем вместо статического массива, есть вариант неизменяемости, вот это реально утрирование абсурда
Вообще не понял о чем ты, но использование по дефолту мутабельных объектов (авось пронесет) это зло. В котлине правильно сделано, что есть жесткое разделение на мутабельные и иммутабельные структуры, а не как у майков, где даже IReadOnlyList криво приколочен (причины я знаю, но это все равно криво) и отдельно уже потом придумали Immutable
также var/val концепция правильнее чем просто var
В шарпе вон даже контрактное программирование не взлетело
Какое то отношение "да все будет норм".
Здравствуйте. Возникла, у меня, следующая проблема. Дело в том, что в Visual Studio у меня, почему то, при создания проекта нету возможности создания консольного приложения. Установил уже какие только можно компонентыпик 2, но возможность создания консольного приложения так и не появляется. Пытался решить проблему через гугл, но ничего не вышло. Как можно решить данную проблему?
Хорошая привычна - не ставить локализацию на студию, чтобы вот так не пришлось потом гадать что гуглить
Не нужно вбивать "консоль", посмотри там же выпадающий список что там за варианты и как они написаны
Я уже наизусть знаю, эти ебланы скорее мидла ищут, там же написано
502 Абу уебан азерский чмо
Я недавно видел трапа в документации к либе FastReport, еще думал мб в тред кинуть.
Выбирал на чём бы потеребонькать сделать морду для пет проекта, вспомнил что там майки выпустили, решил посмотреть... и хрюкнул кекнул в гiлос. Хуйперформанс вротенд технология насасываяе у жопаскрипта. Индусы там походу уже всех вытеснили.
Ох уж это сравниватели
1 wasm by design работает медленнее с DOM
2 нужно учитывать еще и работу программиста.
Одно дело когда задал шаблон а-ля WPF DataTemplate и забыл, а другое когда ручками кодишь изменение этого шаблона
но зачем такие тонкости, ведь дрочим на цифирь
(сам я блазор не использую, просто глянул код бенчей и кто там с кем соревнуется)
>1 wasm by design работает медленнее с DOM
Пик 1. Даже пидораст со сборкой мусора несмотря на все "проблемы" работает с домом на уровне ванильного жса.
>2 нужно учитывать еще и работу программиста.
Пик 2. Даже реакт-лайк залупа на нём же, написанная полутора трапами поверх попенсорсной хуиты от полутора энтузиастов, ебёт блейзор, в который ввалили бабла больше чем вся твоя семья заработала за твою жизнь. Это пиздец билли, индусы всё проебали.
Хуй знает на что я надеялся, опять жабу в бровзер принесли.
Ты их исходники видел? Не удивлюсь, если там все трапы.
>>265159
Допилят, говорят еще МС в хром котрибутить стал, поэтому по-любому допилят. очевидно что молодые болячки, редко при запуске оптимизируют сразу, сначала важны фичи. В общем, как-то один анон ванговал про будущее и появление движков на вебассембле, вероятно blazor будет одним из первопроходцем. Собственное реакто-макакам уже припекает.
WINDOWS MUSTDIE
@
ПОСТАВИЛ ПИНУС
@
ДЕСЯТЬ ТРЕДОВ НОЕШЬ ЧТО В ЛИНЕ НИХУЯ НЕ РАБОТАЕТ
типичный мамкин линуксоид
Чел, я на работе сижу с винды на VS и вообще бэк делаю только.
Хотел поковырять дома на пингвине кросс-платформенный .NET GUI - оказывается нормально делать можно только с блендером ваш XAML или платным райдером.
Забавно что VS тоже денег стоит (и райдер на винде тоже денег стоит!!!).
Что там с блендером не так?
Вот у него пердак порвется, когда все на MAUI переедут.
Ты походу какой-то фронтендщик, тебе тут с таким взглядом не выжить.
Вряд ли что-то к лучшему сильно изменится. Изначально webassembly предполагался не как замена js и его фреймворкам, а как способ запускать использовать компилируемые языки вроде C/C++/Rust в браузере для тяжелой графики. Это не про сайты и не про формочки, а про какие-нибудь raytracer'ы и физические движки, шобы можно было игры запускать. Тащить managed языки в вебасм смысла нет никакого. Даже тот же Go, который компилируется в бинарник и у которого довольно легковесный рантайм, считается медленным для вебасма и его там никто не использует, хотя такая возможность есть. Затянуть огромный и тяжелый дотнет в webasm, да еще и чтобы он быстро работал, это что-то на уровне фантастики.
В MS каким-то хуем решили, что на вебасме можно будет крутить сайты-однострачничники (ведь именно для этого создан blazor). Идея конечно полная хуйня, сайты-одностраничники на дотнете никто в принципе не делает, а большие проекты на блазоре точно делать никто в здравом уме не станет. В итоге получается этакая технология Silverlight v2, которая опять окажется никому не нужна и отомрет через несколько лет.
>пук
Если хочешь написать что-то в тред, то пиши по делу, а не засоряй его своими тупыми высказываниями.
Написано же что через поддержку комьюнити. Он же линупсоид, вот пускай пишет.
Пинус-десктоп очень важная платформа, как не читаешь форум все кросс-пинус спрашивают, вот наверное за столько лет уже мильён окошек кроссплатформенных понаписали, да? Мудачье, даже для своей платформы не могут нормальные морды к настройкам сделать, за то в каждом треде на каждом форме с пеной у рта кричат про необходимость кроссплатформы для своих 2% пользователей
Жаль, что MS так и не выпустит нормальные UI для десктопа под линукс. Вообще, было бы неплохо, если MS сама запилила свое графическое окружение под линукс, и портировала хотя бы винформы туда. Был бы лютый вин, но на это нужно очень много денег, потому что десктопы на линухе сейчас в ужасном состоянии до сих пор пребывают.
А так в российских реалиях кроссплатформенный пинус десктоп был бы популярен. Всякие оборонные предприятия сейчас вынуждены неудобный Qt использовать по большей части.
Какая же каша в голове. То есть, спрос на реакты, ангуляры показывает, что есть огромный спрос на веб-приложения (которые по сути являются костылем на js). А полноценное нативное веб-приложения (на васме) у него не востребовано.
Ты понимаешь насколько это абсурд и какое у тебя туннельное виденье технологий?
Они сами себе не пишут, а тут в пустоту столько денег залить.
На реакте и ангуляре написано очень много всего. Буквально каждый фронтенд сегодня - это либо реакт, либо ангуляр/vue. И работает все с неплохой скоростью. Почему это костыль я не знаю, так наверняка думаешь только ты и другие фанбои MS. Пересаживаться с js на webasm никто не планирует, это две разные технологии под разные задачи.
>>265646
>А полноценное нативное веб-приложения (на васме) у него не востребовано
Почему оно должно быть востребовано? Веб-приложения как правило включают в себя не только фронтенд, а еще и бекенд, где есть и БД, и интеграции с другими сервисами, и бизнес-логика и еще много всего.
Поместить это все один проект и заставить работать на клиенте у пользователя слабо представляется возможным, поэтому MS продвигает blazor как технологию для разработки простых одностраничных сайтов.
Другой вопрос, а нахуя нужен дотнет для этого, когда есть другие инструменты проверенные временем, которые к тому же показывают большую производительность, лол, хотя на нее в таких проектах похуй всем максимально.
И да, дотнет в васме не особо-то и нативный, в отличие от плюсов или раста.
С тем же успехом можно поинтересоваться, почему не взлетели и уже давно мертвы Silverlight/Adobe Flash/java апплеты. Почему webasm до сих пор очень мало кто использует, а фронтендеры на жопаскрипте нужны всем и каждому?
>когда все на MAUI переедут.
мауи это хамарин расширенный на декстоп. Со всеми его заморочками в виде трансляции гуи на каждую платформу - то есть урезанный функционал по сравнению с тем же WPF и необходимость наличия девайса с макосью. Да еще с комьюнити поддержкой на линуксах.
Проще авалонию юзать
Ты туп и ппц как графоманишь сотрясая воздух.
> Silverlight/Adobe Flash/java апплеты.
Флэш убили, он взлетел так, что 10 лет его убивали. Все остальное не зашло потому что требовались плагины (флеш же по дефолту шел, люди могли даже браузер поменять если флеша не было). Это настолько очевидно что просто даже писать лен.
HTML-документ херова пригоден под апплиухи, поэтому твой реакт и костыль. Васму как бы и хтмл не нужен будет, именно поэтому такая тормознутая поддержка DOM (но она будет, исторически).
Почему так медленно развивается - потому что нет прямой выгоды с написания движков. Только такие гиганты как МС могут себе позволить быть первопроходцами.
Шарп очень гибкий и у него большой потенциал в оптимизации, игры тому доказательство, а твои веб морды это совсем не рокет-сайнс.
у шарпа большой потенциал в оптимизации?
>HTML-документ херова пригоден под апплиухи, поэтому твой реакт и костыль
Почему плохо пригоден? Ты же понимаешь, что большая часть приложух - это вбил данные в форму и получил результат в виде текста или таблички.
HTML в этом плане вполне удобный инструмент. Тем более, что blazor без HTML не работает. Но даже если не HTML, то что? Все через canvas рисовать?
>>265710
>Шарп очень гибкий и у него большой потенциал в оптимизации, игры тому доказательство, а твои веб морды это совсем не рокет-сайнс
А причем тут игры? Я конкретно про blazor говорю, который не для игр, а для веб-морд создан. Мне кажется, что это хуйня и не взлетит, потому что ничего нового ms не предлагает. Те же вебморды успешно пишутся на джаваскрипте. Пусть даже весь html и js - это сплошной костыль, но blazor от этого никуда не ушел по сути.
Даже жаба честно рисовала окошки (сколько было попыток). Красноглазые не оценили. Им просто нравится, что где-то что-то кросс, но трогать они это не собираются, так, чисто на форумах побросаться. Сейчас видел бобёжку на реддите, когда слово кросс, не включало пинус.
Жаба рисовала, но было слишком убого. Да и к тому же, зачем брать жабу, если есть Qt, который в нативный бинарник скомпилируется?
Собственно Qt поэтому и стал №1 UI фреймворком. На втором месте, конечно же, электрон.
>Красноглазые не оценили. Им просто нравится, что где-то что-то кросс, но трогать они это не собираются, так, чисто на форумах побросаться
Телеграм, дискорд, слак - кроссплатформенные. Ты думаешь, что ими никто не пользуется на пингвинах? А VS Code?
Лично у меня почти весь используемый сторонний софт написан либо на Qt, либо на электроне, либо на Swing/AWT привет, JetBrains. Все кроссплафторменное. Если бы этой кроссплатформенности не было, думаю, популярны были бы совсем другие инструменты.
Я к тому, что Winforms и WPF получились годными инструментами, в отличие от того, что есть в жабе для ГУИ.
UI фреймворки в жабе получились слишком убогими, это факт. Поэтому проще взять нормальный Qt, который к тому же не будет требовать установки JRE на машину или постоянно таскания за собой этой самой JRE.
Если бы MS портировали их под линь, то получилась бы убергоднота, немотря на то, что шарп на CLR работает, но увы, этого никогда не произойдет.
>никто не пользуется на пингвинах?
Сейчас бы переживать про 2% говна.
Когда говорят кроссплатформа, я думаю в первую очередь считают макось
>WPF
Ну вот есть же avalonia. И что, все стали под линукс писать?
Там даже её джетбрейнс юзает как-то.
где есть? она написана 3.5 человеком
Только недавно вышла из статуса альфа (если вообще вышла - не слежу особо)
Под виндой выглядит не нативно, ну и шрифты мыло.
> у меня почти весь используемый сторонний софт написан либо на Qt, либо на электроне, либо на Swing/AWT
Мои соболезнования.
>Собственное реакто-макакам уже припекает.
От лагов первопроходца, насасывающего даже поделиям 3,5 челов версии 0.0.3 и 0.2?
Ебало билли-фанбоя представили?
>и у него большой потенциал в оптимизации
Такой потанцевал что челам пилящим юнити пришлось делать свой компилятор и несовместимые расширения языка для этой самой оптимизации.
>игры тому доказательство
Магнум опус игр на шарпе — это геншин импакт с мобильной графикой, успокойся.
>а твои веб морды это совсем не рокет-сайнс.
Спок, фанбой.
Веб морды — это такая же задача для хайлэвэл языков вроде шарпа как и интерфейсы с крудами, и с ней он надеюсь, пока не справляется, посасывая как у "костыльных" решений, так и у каких-то фанатских поделок.
Тащемта, потому на жопаскрипт и есть спрос, потому что никто не в состоянии высрать замену. Гугл со своим дартом — обосрался и зачем-то этого ублюдка от жса и жабы потащил на мобилки, руиня крутой флаттер выбором языка, фейсбук высравший ризонмл — вообще забудем, майки — пока что самыек адекватные тут — начали с прикольного тайпскрипта типизация в котором по итогу не работает, а закончили каким-то сильверлайтом 2.0.
Дура, перечитай ещё раз, на работе я предпочитаю сидеть с VS и мастдая, дома мне это нахуй не нужно. VS Code достаточно и покупать IDE для XAML я не собираюсь.
>>265600
Вкатыш, я пишу .NET бэк исключительно, ибо всё остальное не нужно. Во фронте вообще не ориентируюсь кроме пары компонентов в реакте на тайпскрипте в пет проекте. Хотел попробывать дома поковырять единственный дотнетовский кросс-платформенный ГУИ - авалонию. MAUI твой сдохнет как все остальные поделки корпорации в этом направлении.
Смеется над дотнетом и кидает боевую картинку где ASP всех рвет. Пориджи, что с вами не так.
>Такой потанцевал что челам пилящим юнити пришлось делать свой компилятор и несовместимые расширения языка для этой самой оптимизации.
Ну так чем не потанцевал? Попробуй иди на жабе свой компилятор сделай.
>Магнум опус игр на шарпе — это геншин импакт с мобильной графикой
Нуда, нуда. раст написан не на расте, лол
А в чем сказочник? Что MAUI - это подстилка для псин, очередной фреймфорк кампании? Так это все знают.
В /b ты мог стать кем угодно - няшей стесняшей, успешным бизнесменном. Но нет, ты сидишь на зекаче и мимикрируешь под дотнетчика.
Сережка, ты вообще код пишешь или нет? Почему с го ушел?
Вкатун в мастдай, чини детектор, а то вчера я у тебя был фронтовиком, сегодня гошником
Причем тут жаба? Суть в том, что в юнити нет классической CLR, там стоит йоба-компилятор в С++, потому что производительности CLR для игр может быть недостаточно во многих случаях.
Это не потанцевал платформы, ты +- для любого языка можешь написать компилятор в С++. Вон, в VK изначально все было на пыхе написано, а потом они сделали kphp. Теперь нужно всем говорить, что у пыхи огромный потенцевал?
>параша с мобильной графикой требующая 10 гб оперативки
Ну геншин импакт куда лучший пример, чем эта лагающая хуита с пустырями, чел.
Да куча компиляторов есть, как для самой жабы так и для жвм языков. Только есть одно но — это в 9 из 10 случаев уже другие языки, просто на 90% с тем же синтаксисом, и потанцевал платформы они явно не показывают. Потому что отношения к ней не имеет.
> что в юнити нет классической CLR, там стоит йоба-компилятор в С++
Почему не засудили?
>Вон, в VK
Это внутренняя кухня, а тут продукт.
А в чём переобувания-то? Если ты играл в гнешин импакт и раст — первый намного качественнее сделан, лол. Хотя, ты, навено арма-говноед который к такому привык.
А в чём переобувания-то? Если ты играл в гнешин импакт и раст — первый намного качественнее сделан, лол. Хотя, ты, навено арма-говноед который к такому привык.
Уже арму приплел, ржу тут.
Я студией непрерывно лет 6 уже пользуюсь. Не могу не нарадоваться. Пробовал другие IDE, в том числе и для других языков и просто блевал. Студия - это глыба, конечно.
А почему должны были засудить? Или нельзя написать свой компилятор для сишарпа?
В любом случае, наверняка у них там все схвачено.
Смотрю код коллеги сеньера.
Примерно следующий код:
class UserController: ContorllerBase{
publc UserController(AppDbCtx ctx) => _ctx = ctx;
...
public IActionResult GetUsers() => new UserRepo(_ctx).GetUsers();
}
Ну, думаю вы поняли.
Так вот. Я тупой и не шарю. Но если UserRepo - не IDisposable - вся эта фигня с управлением жизненным циклом работать будет разве? Ну, т.е. да, я понимаю, что, наверное, когда-нибудь туда придет сборщик мусора и убъет объект репки, но типа не правильнее было бы - просто в конструкторе передать зависимость, и зарегистрировать ее как Scoped?
сука думаю ща прочитаю про mvvm и начну проектик которые хотел, и вот такой тупик, СПАСИТЕ...
ох. майки таки поняли, что все мввм фреймворки обладают фатальным недостатком - и исправили это
>>268347
вьюмодели держат в себе данные для отображения "что рисовать" и нихрена не знает про вид, знает только про модель
вид занимается "как рисовать" и все знает про вьюмодели
вот и вся тру
там еще сверху перпендикулярно MVVM
- навигация
- коммуникация
- DI
- Lifetime
но тут уже каждый понимает по своему в каждом фреймворке
Нахуя я рассказал такие подробности? Чтобы сразу было понятно что кроме перетаскивания кнопочек на формочку в делфи я ничем 2 года не занимался первые два курса мы вообще почти не программировали, так что их не считаю. С# несколько месяцев назад начал учить самостоятельно и знания весьма скромны.
Может подскажете что мне в качестве дипломной работы сделать? Я был бы очень признателен, если бы кто-то подсказал
Не надо пытаться сразу что-то сложное сделать, начни с простых приложений. Сделай блокнот, калькулятор и т.д.
Контекст задиспозится контейнером, репу сборщик соберет. Неясно нахера инжектить контекст в контроллер, а потом передавать в репозиторий, если норм поцоны инжектят контекст в репу, а репу уже куда требуется. Тут получается какая-то каша, вместо норм абстракции.
А чем тебе файловый менеджер не угодил то?
Ну и как вариант, лучше разберись в wpf и на нём можно какую-нибудь игру запилить, интересных вариантов миллион, куда лучше чем скучную околоофисную приблуду.
>диплом
>файловый менеджер на listbox
Это законно? Я думал там минимум надо машинлёрнинг, блокчлен и вот это все.
>>268529
>Неясно нахера инжектить контекст в контроллер, а потом передавать в репозиторий
Если так делает сеньор, то это вау, это недосягаемый полет мысли. Если это сделает ждун, то это сычев, блять, переделавай все нахер.
Я не про новизну технологий, а про уровень диплома. Файловый менеджер, как мне кажется, едва на курсач тянет. Но, видимо, какая шарага, такие и дипломные и дипломы.
Ну да. Мы код почти не пишем :(
>>268558
>А чем тебе файловый менеджер не угодил то?
Да я кучу функциональности делаю через костыли. И когда их много, как-то неприятно становится. Понимаю, что мои одногруппники вообще калькулятор роста напишут (введите ваш рост) и это покатит, но самому хочется что-нибудь менее кривое сделать. Менеджер я конечно допишу, но как диплом сдавать не уверен что стоит.
>>268484
>>268558
Спасибо, аноны
А чем вы там занимаетесь? Всё по старинке, куча математики?
вкратце: есть модель машины (Car), мы создаем в вьюмодели массив из машин, правильно ли это? пример из метанита.
допустим я понимаю, что во вью у нас разметка и биндинги к свойствам, а модель это по сути класс описывающий модель (например машину), но я не понимаю что должно быть во вьюмодели, где должны быть комманды, где списки/массивы объектов и т.д
Насколько я неправ? Просто, для себя считаю шарп наилучшим решением на сегодня, но не уверен насколько стоит инвестировать силы и время.
бамп вопросу, объясните что должно вообще находиться в ViewModel
Если им всё равно то зачем сделали открытую кроссплатформенную реализацию? Что за Чушь? Они активно развивают, для этого нужно время чтобы сделать хорошо
>Ну, то есть, я думал изначально они хотят завоевать расположение коммьюните, но в реале им как-будто все равно.
Офк майкрософт — коммерческая компания делающая $ и им похуй на всё, что не приносит денег прямо или косвенно.
Мобилки — вкусный рынок, даже та мизерная часть что замарин захватил.
Линукс — широко используется только на серверсайде, на десктопы вообще похуй.
Нравится шарп — вкатывайся.
Хочешь гуй на линуксе на современном языке — посмотри на Compose Multiplatform, жидбрейнс на линукс точно не забьют.
Ну вот этот ApplicationViewModel содержит данные которые вид будет рисовать. В этом и смысл.
А юзать ли Phone или делать PhoneViewModel...
1 ну если у тебя биндинг не Mode=OneTime, то без INPC будет утечка памяти. Иначе нормик
2 Если тебе нужно хранить еще что то, например IsSelected, то конечно ты не можешь это делать в Phone, ибо текущий выделенный пункт на экране это чисто UI-шное понятие и потому нужен будет PhoneViewModel
Делать ли PhoneViewModel как враппер или с такими же полями - фломастеры
На само сообщество я не надеюсь, есть ли у них какой-то у мягких roadmap? Как они планируют развиваться?
>Compose Multiplatform
Это вроде как котлин? Так, вроде, он до бэкенда нормально не добрался? у джавы не очень де-факто стандарт либы, мне не заходит, какой бы там синтаксис не был
>Compose Multiplatform
Какая лютая фигня. Начиная с названия, я подумал это с мобильника вообще. Заканчивая попыткой захватит все и вся.
Пока мир пытается в вебассембли, а мягкие делают хотрелоад, чтобы удобно тыкать UI. Брейнсы, без флагманских фрейворков и даже нормальной стандартной либы, пытаются в лоб взять пьедестал js в веб. они даже не представляют, как далеко ушел фронтент и как эти примеры с получением DOM выглядят примитивно сейчас
>как эти примеры с получением DOM выглядят примитивно сейчас
какие примеры?
куда ушел фронтенд?
Все эти react/flutter/swiftui/compose - они как братья выглядят. Разница в возможностях конкретного языка для выражения.
>Начиная с названия, я подумал это с мобильника вообще
Ну оно изначально так и есть.
>Заканчивая попыткой захватит все и вся.
>пытаются в лоб взять пьедестал js в веб
Не, у них основной таргет — десктопы они на них зарабатывают, карл, помню доклад какого-то челикса на ютубе, история такая — начали пилить какую-то новую десктопную тулзу, на захотели тащить половину идеи ради гуя и кринжанули с авт/свинга, начали жрать Qt и плакать с плюсов, потом пошли и портировали компоуз на пеки.
Энивей, если нужен кроссплатформенный гуй именно для пека — лучше ничего не будет, тупо нет компаний которые на этом зарабатыввают и сами же догфудят свои либы.
>react/flutter/swiftui/compose - они как братья выглядят
Последние 3 про дом вообще ничего не знают, мне кажется он явно не о том.
> которые на этом зарабатыввают
Они сами пишут что только какое-то там приложение JetBrains Toolbox App (на мильён пользователей) почему не 3 billion devices?. Вот когда эта штука с пруфами будет на их рабочей лошадке - IDE, тогда и посмотрим.
>история такая — начали пилить какую-то новую десктопную тулзу, на захотели тащить половину идеи ради гуя и кринжанули с авт/свинга
Так у них IDE же на подобие свинга? Как они кринжанули, если это их хлеб? Зачем вообще жабисты в Qt полезли.
В общем, это очень весело.
>Вот когда эта штука с пруфами будет на их рабочей лошадке - IDE, тогда и посмотрим.
На ней уже вроде как делают Fleet.
Энивей это дело времени.
>Так у них IDE же на подобие свинга?
Да, они на лэндосе сами пишут для чего эту хуетень делают
>Excellent AWT and Swing interoperability.
>Как они кринжанули, если это их хлеб?
Ну ты бы наверно тоже кринжанул, если бы тебе на MFC и каком нибудь C++/CLR пришлось новый проект начинать, нет? Или хлеб не пахнет?
От жавы же как-то тоже кринжевать начали. Ахуенная логика у тебя, конечно.
>Зачем вообще жабисты в Qt полезли.
Не захотели хуйлион строк легаси тащить, видимо.
>Энивей это дело времени.
Понял, опять нужно подождать. Помню еще обещали, что котлин станет мейнстримным языком, вот лет 5 уже ждем.
Я как бы против него ничего не имею, но блин надо уже что ли пересмотреть в политике развития за столько лет. А они что сделали? Высрали десктоп, который в эту эпоху знатно так затухает.
В моем кругу, давно, была "говнооценка" развития языка по числу репок за 1000 звезд на гитхламе. После появления го, где фанатики друг друга лобызали и лайкали, это стало менее актуально, но все равно приведу пример.
Kotlin - 341 repository results
Rust - 565 repository results
Даже раст обогнал по числу реп, хотя у него чуть меньше было 2 года назад (где-то в районе ~250 было)
https://github.com/search?l=Rust&q=stars:>1000&type=Repositories
>Помню еще обещали, что котлин станет мейнстримным языком, вот лет 5 уже ждем.
так жависты динозавры люто ненавидящие современные подходы к программированию.
Конечно, опять программисты не те, а политика развития верная всегда.
Смешно, но если бы кто-то изначально высрал бы подобие Kotlin -> LLVM (без JVM и тем более JS), то думаю, у такого продукта, шансов было бы куда больше.
>Понял, опять нужно подождать.
Как с MAUI и вообще всем, что начали пилить меньше 3-5 лет назад.
>котлин станет мейнстримным языком
На андроиде таки стал. А в интерпрайзе и на джаву после 8 не переезжают.
>Высрали десктоп, который в эту эпоху знатно так затухает.
Ну разрабы-то с десктопов никуда не слезут пока не станет возможным провод в мозг въебать, они просто пилят продукт для себя.
Те же майки, очевидно, не будут догфудить MAUI на десктопах (ибо нахуя), и first class поддержка будет только у мобилок и винды (хотя последнее тоже не факт).
Короче, тут вопрос в том, стоит ли у того анона которому я изначально отвечал на кроссплатформенный десктоп или нет. Судя по его посту — ещё как, лол.
>Kotlin -> LLVM
Дык он есть, пчел. Нужен всем примерно как AOT компиляция шарпа без юнити. Т.е. полутора землекопам.
Это же язык задизайненный под жвм, лол.
>Kotlin -> LLVM
Ключевое слово "изначально", в реальности котлин появился как баг-фикс синтаксиса джавы, со всеми вытекающими. И только потом "это" начали портировать в native.
А мог бы стать хорошим полу/функциональным языком с вменяемым синтаксисом, без оглядки на жабу, с прикрученным подсчетом ссылок. На LLVM даже исключения есть, лол.
>Как с MAUI и вообще всем
Хрень без поддержки пинуса, на базе ксамарина с целью покорения мобилок. Так что цель была не супер десктоп, а больше чтобы потыкать в телефоны.
>На андроиде таки стал.
Так, что теперь на ведре надо изучать сразу два языка, жабу и котлин. "Даешь два языка, за ту же зарплату", красавцы.
Года два назад видел статистику, где жаба занимала более 50% кода на ведре
>Не стал. Стал рекомендуемым дефолтным, но не основным.
Ну если не брать в расчет совсем уж полное легаси, то на андроиде почти все переехали на котлин или переезжают.
Да и даже в бекенде уже можно его встретить, хотя вряд ли он там сильно взлетит, но тем не менее.
>>269149
Тогда котлин не удалось бы затащить на мобилки. И вообще, что бы писали на котлине, не имея он совместимости с жабой? Сейчас ты можешь и на андроид бахать приложухи, и писать энтерпрайз на спринге.
>На андроиде таки стал
То что после 2010 года о жабе было что-то слышно, кроме далекого тырпрайза, было благодаря ведру. Котлин подвинул эту жабу и начал понемногу топить. Но проблема в том, что когда жаба тонет, она тянет все JVM языки, в том числе и котлин. И только андроид помогал держать на плаву это безумие, пока скала, груви и тд шли весело на дно. И все было хорошо, но появилась фуксия и точка невозврата произошла, когда самсунг объявил о переходе на фуксию.
Котлин мог покорить бэкенд, и запилить флагман в виде какого-нибудь ASP.Spring или хотя бы унифицировать частоиспользуемые библиотеки (и не трогать пока native и js), в общем могли запилить свои батарейки (хотя бы как в го), чтобы люди не чувствовали что до сих пор пишут на той же джаве. Могли сделать многое, Но нет, они сделали нейтив, js и вот десктоп.
>Не стал. Стал рекомендуемым дефолтным, но не основным.
По общему количеству кода — офк нет и не станет, по проектам — все либо уже переехали либо переезжают. Либо этот проект — телеграм под ведроид.
>>269149
А дотнет, не лезь в залупу майки, мог бы быть главным бэкэнд и энтерпрайз языком. А ещё быть первым рекомендуемым на ведре, лол.
Есть как есть, заканчивай фантазировать.
>>269158
>Так что цель была не супер десктоп, а больше чтобы потыкать в телефоны.
Я про это, блять, и пишу. Правда прибежали какие-то дикие шизы и начали рассказывать что котлин говно, при том что про язык я не писал.
>Года два назад видел статистику, где жаба занимала более 50% кода на ведре
Так в этом году официальному форсу котлина на ведре только 3-й год будет.
>И все было хорошо, но появилась фуксия и точка невозврата произошла, когда самсунг объявил о переходе на фуксию.
Ага, будет умирать как винда?
>Котлин мог покорить бэкенд
От жабы этих библиотек там как говна. Да и языков, тащут вообще всё. Другой вопрос, нахуя тебе гигансткая залупа в стиле спринга/асп, язык с вм и всё вот это чтобы пилить микросервисы.
Питухон/го делают брррррррр тебе за щеку.
Пишу прямым текстом - "думаю" (т.е. размышляю/фантазирую).
@
Анон упрекает, что я фантазирую.
У нынешнего зумерья память как у рыбки, контест трех постов так сложно в голове удержать.
Линус, не шали.
Будешь ругаться и тебя купят!
Эта хуета будет приходить и дальше, скорее всего в таком же объёме
Api там вроде открытый, но разобраться все ещё не могу
Что именно тебя интересует? Администрирование, sql, орм'ы или внутреннее устройства бвз (индексы, связи, планировщик), а может acid или нормализация? Когда определишься сможешь нормальный запрос гуглу дать, а так... ну википедию почитай.
Во-первых, есть тред по базам, где в шапке есть инфа для изучения. Во-вторых, если ты не можешь найти материал по основам sql, то это пиздец.
https://www.w3schools.com/sql/
https://www.guru99.com/sql.html
В модели не должно быть ивентов, если они не нужны для самой модели, а ViewModel должна быть посредником на каждое свойство модели И она же должна вызывать ивенты?
По большей части. Про мускул не скажу, но например, то что в mssql называется cross apply в postgresql называется lateral join, но суть одна, а в sqlite этого вообще нет.
Она говорила что-то про рефлекции но она всегда говорит на ельфийском и я ничего не понимаю.
Пожалуйста помоги те уже нет сил терпеть этот презрительный взгляд
модель - основная логика. ничего не знает про отображение, смотрят на нее или не смотрят. Ни про кого не знает.
вьюмодели - содержат визуальное состояние и данные для визуального отображения, чтобы дать виду ЧТО отображать
Конечно знает про модель и не знает про вид
вид отвечает за КАК отображать и знает про всех.
В остальном каждый поворачивает как ему удобно.
Лепить враппер вьюмодель для модели. Да - если она мутабельная. Но если рид онли то лень же
И даже если не рид онли то....
Например, в твоем классе Model (со скрина) не ожидается INPC (не вьюмодель же)...но все таки.
Вот вьюмодель может подписаться на INPC модели и когда модель улетела в свой слой (в котором конечно ничего не знают про вьюмодели) и там с ней что то происходит, то вьюмодель видит это и реагирует, а за ней и вид.
Нарушение ли это? Ну хз. Но если посмотреть на INPC, то там ничего "исключительно гуишного". По факту же это просто один из способов уведомления об изменениях. И лежит он в System.ComponentModel.
Да и враппер вокруг модели или же вьюмодель-клон модели - кому как удобно по ситуации.
вьюмодели - логическое место "где должен быть код относящийся к визуальному состоянию". Но не "какой это код". А потому в реализации вьюмоделей целый зоопарк - и прямые ссылки на рутовую вьюмодель во вложенных, и обычные события, и слабые события ака мессенджер, выставляют наружу Func<>, и контроллеры (которые призваны решить проблему "пипец вьюмодели тяжелые god-object, но опять же каждый понимает по своему) то есть MVVMC.
Например, лично мне не очень нравится подход "защищаемся от утечек памяти слабыми событиями, а если еще и Dispose нужно вызывать, то хер с ним" поэтому я использую подход с Lifetimes.
Так что.
это из разряда "как отображать или имеет ссылки на контролы (сборки визуальной части) и тому подобное?" - в вид
это из разряда "что отображается, содержит логику ЧТО отображать или состояние этого ЧТО отображать и не содержит ссылок на сборки из gui" - вьюмодели. Например, Visibility это просто флаг, но он ссылается на сборку из гуи, а потому во вьюмодели быть не должен. То есть правильная вьюмодель - если ты вынесешь их все в отдельную сборку, где не будет зависимость ни на какие System.Windows/PresentationFramework/Xaml и тому подобное и оно без проблем будет компилироваться.
остальное распихивается куда удобно
модель - основная логика. ничего не знает про отображение, смотрят на нее или не смотрят. Ни про кого не знает.
вьюмодели - содержат визуальное состояние и данные для визуального отображения, чтобы дать виду ЧТО отображать
Конечно знает про модель и не знает про вид
вид отвечает за КАК отображать и знает про всех.
В остальном каждый поворачивает как ему удобно.
Лепить враппер вьюмодель для модели. Да - если она мутабельная. Но если рид онли то лень же
И даже если не рид онли то....
Например, в твоем классе Model (со скрина) не ожидается INPC (не вьюмодель же)...но все таки.
Вот вьюмодель может подписаться на INPC модели и когда модель улетела в свой слой (в котором конечно ничего не знают про вьюмодели) и там с ней что то происходит, то вьюмодель видит это и реагирует, а за ней и вид.
Нарушение ли это? Ну хз. Но если посмотреть на INPC, то там ничего "исключительно гуишного". По факту же это просто один из способов уведомления об изменениях. И лежит он в System.ComponentModel.
Да и враппер вокруг модели или же вьюмодель-клон модели - кому как удобно по ситуации.
вьюмодели - логическое место "где должен быть код относящийся к визуальному состоянию". Но не "какой это код". А потому в реализации вьюмоделей целый зоопарк - и прямые ссылки на рутовую вьюмодель во вложенных, и обычные события, и слабые события ака мессенджер, выставляют наружу Func<>, и контроллеры (которые призваны решить проблему "пипец вьюмодели тяжелые god-object, но опять же каждый понимает по своему) то есть MVVMC.
Например, лично мне не очень нравится подход "защищаемся от утечек памяти слабыми событиями, а если еще и Dispose нужно вызывать, то хер с ним" поэтому я использую подход с Lifetimes.
Так что.
это из разряда "как отображать или имеет ссылки на контролы (сборки визуальной части) и тому подобное?" - в вид
это из разряда "что отображается, содержит логику ЧТО отображать или состояние этого ЧТО отображать и не содержит ссылок на сборки из gui" - вьюмодели. Например, Visibility это просто флаг, но он ссылается на сборку из гуи, а потому во вьюмодели быть не должен. То есть правильная вьюмодель - если ты вынесешь их все в отдельную сборку, где не будет зависимость ни на какие System.Windows/PresentationFramework/Xaml и тому подобное и оно без проблем будет компилироваться.
остальное распихивается куда удобно
Тогда получается, что... эээ... Если я запилю INotifyPropertyChanged в модели, то логично будет написать ВьюМодель так, чтобы она просто давала ссылку на модель и всё, потому что если дублировать свойства, то придётся и подписываться на ивент модели и перевызывать ивент ВьюМодели, и при этом имена свойств должны быть идентичными...
С другой стороны, если вдруг в дальнейшем для уже существующей модели с INotifyPropertyChanged приспичит написать ещё один ГУИ на другом фреймворке, который - чисто гипотетически - ожидает другой интерфейс и другие типы событий, то, при условии неизменности модели, мне придётся запилить ВьюМодель, которая вынужденно будет дубировать модель, подписываться на её PropetyChanged и вызывать другой ивент, генерируя для него совершенно новый объект, потому что иначе хер там, а не изменения, верно?
>Если я запилю INotifyPropertyChanged в модели
>чтобы она просто давала ссылку на модель и всё
Смотря зачем делать в модели INPC. Если для "нахер мне вьюмодель с такими же полями, если INPC и так защитит меня от утечек памяти, да и сама уведомит", то это до первого подрыва на "контрол не может быть вызван из другого потока", ведь модель ничего не знает про UI контекст.
> мне придётся запилить ВьюМодель
это ж другой гуи, у него свои правила и ему нужно вьюмодель - пишем вьюмодель.
>Смотря зачем делать в модели INPC.
Я не знаю. Я просто потихоньку учусь. Чуть-чуть освоил шарп и почти сразу полез в ВПФ. Так что для меня
>контрол не может быть вызван из другого потока
>UI контекст
чёрная магия. Я пытаюсь научиться хотя бы минимально и, самое главное, осознанно что-то пилить.
>это ж другой гуи, у него свои правила и ему нужно вьюмодель - пишем вьюмодель.
Поэтому мне сейчас кажется, что вьюмодель должна таки дублировать модель и реализовывать ивенты, а модель не стоит захламлять ивентами для целей ГУИ.
>чёрная магия
да никакой магии. Обновив свойство в другом потоке дернется OnPropertyChanged, который вызовет обновление контрола не из UI потока, на что тот ругнется исключением.
Потому модель может реализовывать INPC как средство нотификации об изменении своих свойств, но если ее свойства будут изменяться из других потоков, то без Dispatcher не обойтись, а это уже не дело модели знать про это
Если апи открытый и единообразный, просто берешь HttpClient, Json.Net и посылаешь нужные запросы. Возможно предварительно надо будет залогиниться, тогда шлеш запрос на логин и в зависимости от схемы(токен или кука) - крепишь к последующим запросам.
Вообще, для автоматизации, можешь вместо шарпов взять постман, почитай инструкцию. Он умеет в переменные и жс, так что если данные в обычном жсоне гоняются или xml - просто собери их, потом в обычном цикле - нужный ответ пошли. Опять же плюс постмана в этом плане - можешь посмотреть как данные гоняются наглядно и сразу видеть что тебе пришло, что ты отправил, что ответили.
для разработки чего?
вот я на питоне разное быстрое прототипное или вообще что нужно быстро написать, где потоки не нужны или очень нужны батарейки.
на шарпе пишу фундаментальное, то есть где уже должно работать хорошо и долго. Ну и десктоп тоже, если нужно - ибо "а на чем еще" (на текущий момент)
а под андроид пишу на котлине, потому что выразительность котлина + jetpack compose (ну и конечно нативность) для меня превышают "не хочу изучать новый язык, есть же хамарин", а на не-андроиды мне с большой колокольни.
90% Бэкенд (многолетний, по большой части монолитный).
10% разного рода консольные утилитки-хелперы (возможно некоторые не консольные, а с примитивным GUI'ем)
ок. если у тебя нет зависимости от дотнета (а ее нет), то выбирай котлин. Но потом пеняй на себя
Я про трипл.
в ходе выполнения программы его длина должна быть равна 2 .
Console.WriteLine(list.Count) так и выводит 2.
но когда я собираюсь напечатать list[1] возникает ошибка 'Index was out of range. Must be non-negative and less than the size of the collection.
При этом Console.WriteLine(list[0]) и Console.WriteLine(list[-1]) срабатывают без ошибок
Перебор списка foreach тоже срабатывает без ошибок. Я не понимаю в чем дело, помогите
то есть не Console.WriteLine(list[-1]) , а Console.WriteLine(list[^1])
попробовал ещё кое-что. в итоге
Console.WriteLine(list[list.IndexOf(list[^1])]); // печатает что надо
Console.WriteLine(list[1]); // выдает ошибку,
причем list.IndexOf(list[^1]) возвращает 1 типа System.Int32
Сап ,аноны ,дайте совет зелени . Прочитал книжку по шарпу , хорошо освоил теорию , немного попрактиковался и меня взяли работать за еду. Работаю уже полтора месяца . Мне очень трудно , у меня все плохо получается . Бывает сижу очень долго с ерундовыми задачами ,который джун бы как орешки щелкал у меня позиция интерна. Понимаю ,что учиться надо было раньше ,но все же. Хожу на постоянном стрессе , меня постоянно троллит ментор и часто не понимает меня . Я не могу так больше работать . Один раз намекнул на вторую неделю работы ,чтобы я шел к директору увольняться ,но директор посмеялся и сказал остаться . Все через это проходят ? Сегодня просто был какой-то день ,что я почти выгорел . Стоит увольняться ,или это обычный путь всех начинающих ?
Я за свои первые полтора месяца был самым счастливым человеком в офисе. Мне было глубоко параллельно, что о моем посредственном навыке думали окружающие, потому что писать код для меня это самое охуенное занятие какое только придумало человечество. А когда код работает и выполняет функции по тз, то этот момент круче, чем секс. Любой начальный стресс этого стоит.
Если от программирования ты получаешь удовольствие, а стресуешь от того что чувствуешь не лучшее к себе отношение со стороны коллег, то затяни пояс, закатай рукава, закуси удила и работай дальше.
А если на волне хайпа ты выбрал не ту профессию, от которой не получая отдачи, несёшь только психологические убытки, то - ну хрен его знает. Трудно давать такой совет. Бросить легко, а найти другой трамплин может и не получиться. С другой стороны, возможно, твоя работа мечты, вот прямо сейчас, ждет такого соискателя, как ты... Но это последнее звучит довольно сомнительно, как по мне.
> Прочитал книжку по шарпу , хорошо освоил теорию , немного попрактиковался и меня взяли работать за еду
Пидорас, пошёл нахуй. Я вот ищу третий месяц и нихуя нет. То интервью ебанутые, то спрашивают как с мидла.
Очевидно, у тебя в листе только один элемент.
Ты понимаешь, что просто dll и dll из комплекта .NET 6 - это разные вещи и они по разному подключаются. Если не знаешь, то лучше вообще не советуй. В гугле тоже пишут такие советчики, даже не понимая что отвечают. В итоге весь топ гугла - говно-советы не к месту по данному вопросу.
>просто dll и dll из комплекта .NET 6 - это разные вещи
В чем принципиальная разница, без учета IL/машинный код
>по разному подключаются
Ну если ты пытаясь подключить нетовскую либу ищешь как подключать COM, то сам дурак. Хотя оно тоже подключается в том же окне.
Ну я тоже не в первый день нашёл. Есть фидбек? Какие именно мидловские вопросы задают?
Да вообще похуй, бери любой яп на который пипирка стоит, это не те области, где язык принципиален.
Она говорила что-то про рефлекции но она всегда говорит на ельфийском и я ничего не понимаю.
Пожалуйста помоги те уже нет сил терпеть этот презрительный взгляд
Прочитай книжку Стив Макконнелла "Совершенный код"
Так уже не работает. Теперь другой принцип
>2271184
добавь
<UseWindowsForms>true</UseWindowsForms> в *.csproj
да почему в Project то
в PropertyGroup надо. Ниже указания фреймворка допиши
и то что используется <Project Sdk="Microsoft.NET.Sdk"> уже само собой разумеется.
ну и до кучи
подключить WPF
<UseWPF>true</UseWPF>
Убрать генерацию локазированных dll. всякие папки ru, zh-Hans
<SatelliteResourceLanguages>en</SatelliteResourceLanguages>
https://youtu.be/04WIzQOC-IM
>не перевели
А зачем? Как вообще можно учить программирование на каком-то языке, если не знаешь хотя бы базового технического английского? Я вот тоже не особо могу в него, так я пользуюсь переводчиком на незнакомые или редкие слова, и этого хватает. Перевод мало того, что ждать дополнительно надо, так ещё и перевод может быть кривым.
ага, спустя полтора года, да и к автору вопросы есть у обитателей интернета
Вот эти все WPF, Xamarin, UWP, MAUI - это вообще что такое, типо эксперимент над разработчиками? Всегда, когда вижу обсуждения, вздыхаю с облегчением что не приходилось копаться в этом дерьме за исключением мелкого проекта на WPF.
А? Круто? Круто же? А? Или не круто? Что думаете в общем? И вообще, чего я не учел и почему оно - говно по вашему менению?
Там правда при отписке немного напартачил из-за того что при удалении проверяю handlers. Тяжело в блокнотике код писать(((
Ну, заодно я поясню нахуя я эту хуйню придумал.
Хочу понизить связность кода. Вооот. Ну, типа меня заебало что я логгер постоянно дергаю а потом оказывается что какие-то сообщения - не особо-то и нужны и приходится по всему коду искать, где ж я это сообщение пишу в логгер. А так у меня будет LogHandler который реализует логгирование всех нужных мне событий, я в одном месте буду править логи и не нужно как ебалдуй бегать. При этом никакой статики. Статика ж зашквар вроде как. А дальше, может быть у меня будут какие-то события прикладного уровня, ну, типа я захочу статистику вести - сделаю Statistic и он будет реализовывать интерфейсы событий, по которым надо статистику.
Но меня конечно немного смущает что EventDispatcher - нужно передавать везде где будет подписка-отписка и события кидаться. Я пока не придумал как это решить.
Аналогично хвалю богов что мне не приходится иметь дело с фронтедом, браузерами и прочей херней, а есть нормальный нативный фреймворк для построения GUI, а не ебанизм в виде электронов и хтмл с жс
Потому что он нахуй никому не нужен. А книги кому-то надо продавать.
F пока его не допилят до состояния, когда он будет реально иметь хоть какое-то приемущество перед жопаскриптом — он и не станет никому нужен.
Проблема почти всех новых технологий, короче.
>WPF, Xamarin, UWP, MAUI - это вообще что такое, типо эксперимент над разработчиками
Это же майкрософт, у них так всегда — везде есть фатальный недостаток.
Если ты не знаком с этой историей — можешь ознакомится с знаменитой пастой, которую почему-то стали забывать:
История программных революций от Microsoft, вкратце: Сначала были Windows API и DLL Hell. Революцией №1 было DDE – помните, как ссылки позволили нам создавать статусные строки, отражающие текущую цену акций Microsoft? Примерно тогда же Microsoft создала ресурс VERSION INFO, исключающий DLL Hell. Но другая группа в Microsoft нашла в DDE фатальный недостаток – его писали не они! Для решения этой проблемы они создали OLE (похожее на DDE, но другое), и я наивно вспоминаю докладчика на Microsoft-овской конференции, говорящего, что скоро Windows API перепишут как OLE API, и каждый элемент на экране будет ОСХ-ом. В OLE появились интерфейсы, исключающие DLL Hell. Помните болезнь с названием «по месту», при которой мы мечтали встроить все свои приложения в один (возможно, очень большой) документ Word? Где-то в то же время Microsoft уверовала в религию С++, возникла MFC решившая все наши проблемы еще раз. Но OLE не собиралась сложа руки смотреть на это, поэтому оно заново родилось под именем COM, и мы внезапно поняли, что OLE (или это было DDE?) будет всегда – и даже включает тщательно разработанную систему версий компонентов, исключающую DLL Hell. В это время группа отступников внутри Microsoft обнаружила в MFC фатальный недостаток – его писали не они! Они немедленно исправили этот недочет, создав ATL, который как MFC, но другой, и попытались спрятать все замечательные вещи, которым так упорно старалась обучить нас группа COM. Это заставило группу COM (или это было OLE?) переименоваться в ActiveX и выпустить около тонны новых интерфейсов (включая интерфейсы контроля версий, исключающие DLL Hell), а заодно возможность сделать весь код загружаемым через броузеры, прямо вместе с определяемыми пользователем вирусами (назло этим гадам из ATL!). Группа операционных систем громким криком, как забытый средний ребенок, потребовала внимания, сказав, что нам следует готовиться к Cairo, некой таинственной хреновине, которую никогда не могли даже толком описать, не то, что выпустить. К их чести, следует сказать, что они таки представили концепцию «System File Protection», исключающую DLL Hell. Но тут некая группа в Microsoft нашла фатальный недостаток в Java - её писали не они! Это было исправлено созданием то ли J, то ли Jole, а может, и ActiveJ (если честно, я просто не помню), точно такого же как Java, но другого. Это было круто, но Sun засудило Microsoft по какому-то дряхлому закону. Это была явная попытка задушить право Microsoft выпускать такие же продукты, как у других, но другие. Помните менеджера по J/Jole/ActiveJ, стучащего по столу туфлей и говорящего, что Microsoft никогда не бросит этот продукт? Глупец! Все это означало только одно – недостаток внимания к группе ActiveX (или это был COM?). Эта невероятно жизнерадостная толпа вернулась с COM+ и MTS наперевес (может, это стоило назвать ActiveX+?). Непонятно почему к MTS не приставили «COM» или «Active» или «X» или «+» – они меня просто потрясли этим! Они также грозились добавить + ко всем модным тогда выражениям. Примерно тогда же кое-кто начал вопить про «Windows DNA» (почему не DINA) и «Windows Washboard», и вопил некоторое время, но все это почило раньше, чем все поняли, что это было. К этому моменту Microsoft уже несколько лет с нарастающей тревогой наблюдала за интернет. Недавно они пришли к пониманию, что у Интернет есть фатальный недостаток: ну, вы поняли. И это приводит нас к текущему моменту и технологии .NET (произносится как «doughnut (пончик по-нашему)», но по-другому), похожей на Интернет, но с большим количеством пресс-релизов. Главное, что нужно очень четко понимать - .NET исключает DLL Hell. В .NET входит новый язык, C#, (выясняется, что в Active++ Jspresso был фатальный недостаток, от которого он и помер). .NET включает виртуальную машину, которую будут использовать все языки (видимо, из-за фатальных недостатков в процессорах Интел). .NET включает единую систему защиты (есть все-таки фатальный недостаток в хранении паролей не на серверах Microsoft). Реально проще перечислить вещи, которых .NET не включает. .NET наверняка революционно изменит Windows-программирование... примерно на год.
>WPF, Xamarin, UWP, MAUI - это вообще что такое, типо эксперимент над разработчиками
Это же майкрософт, у них так всегда — везде есть фатальный недостаток.
Если ты не знаком с этой историей — можешь ознакомится с знаменитой пастой, которую почему-то стали забывать:
История программных революций от Microsoft, вкратце: Сначала были Windows API и DLL Hell. Революцией №1 было DDE – помните, как ссылки позволили нам создавать статусные строки, отражающие текущую цену акций Microsoft? Примерно тогда же Microsoft создала ресурс VERSION INFO, исключающий DLL Hell. Но другая группа в Microsoft нашла в DDE фатальный недостаток – его писали не они! Для решения этой проблемы они создали OLE (похожее на DDE, но другое), и я наивно вспоминаю докладчика на Microsoft-овской конференции, говорящего, что скоро Windows API перепишут как OLE API, и каждый элемент на экране будет ОСХ-ом. В OLE появились интерфейсы, исключающие DLL Hell. Помните болезнь с названием «по месту», при которой мы мечтали встроить все свои приложения в один (возможно, очень большой) документ Word? Где-то в то же время Microsoft уверовала в религию С++, возникла MFC решившая все наши проблемы еще раз. Но OLE не собиралась сложа руки смотреть на это, поэтому оно заново родилось под именем COM, и мы внезапно поняли, что OLE (или это было DDE?) будет всегда – и даже включает тщательно разработанную систему версий компонентов, исключающую DLL Hell. В это время группа отступников внутри Microsoft обнаружила в MFC фатальный недостаток – его писали не они! Они немедленно исправили этот недочет, создав ATL, который как MFC, но другой, и попытались спрятать все замечательные вещи, которым так упорно старалась обучить нас группа COM. Это заставило группу COM (или это было OLE?) переименоваться в ActiveX и выпустить около тонны новых интерфейсов (включая интерфейсы контроля версий, исключающие DLL Hell), а заодно возможность сделать весь код загружаемым через броузеры, прямо вместе с определяемыми пользователем вирусами (назло этим гадам из ATL!). Группа операционных систем громким криком, как забытый средний ребенок, потребовала внимания, сказав, что нам следует готовиться к Cairo, некой таинственной хреновине, которую никогда не могли даже толком описать, не то, что выпустить. К их чести, следует сказать, что они таки представили концепцию «System File Protection», исключающую DLL Hell. Но тут некая группа в Microsoft нашла фатальный недостаток в Java - её писали не они! Это было исправлено созданием то ли J, то ли Jole, а может, и ActiveJ (если честно, я просто не помню), точно такого же как Java, но другого. Это было круто, но Sun засудило Microsoft по какому-то дряхлому закону. Это была явная попытка задушить право Microsoft выпускать такие же продукты, как у других, но другие. Помните менеджера по J/Jole/ActiveJ, стучащего по столу туфлей и говорящего, что Microsoft никогда не бросит этот продукт? Глупец! Все это означало только одно – недостаток внимания к группе ActiveX (или это был COM?). Эта невероятно жизнерадостная толпа вернулась с COM+ и MTS наперевес (может, это стоило назвать ActiveX+?). Непонятно почему к MTS не приставили «COM» или «Active» или «X» или «+» – они меня просто потрясли этим! Они также грозились добавить + ко всем модным тогда выражениям. Примерно тогда же кое-кто начал вопить про «Windows DNA» (почему не DINA) и «Windows Washboard», и вопил некоторое время, но все это почило раньше, чем все поняли, что это было. К этому моменту Microsoft уже несколько лет с нарастающей тревогой наблюдала за интернет. Недавно они пришли к пониманию, что у Интернет есть фатальный недостаток: ну, вы поняли. И это приводит нас к текущему моменту и технологии .NET (произносится как «doughnut (пончик по-нашему)», но по-другому), похожей на Интернет, но с большим количеством пресс-релизов. Главное, что нужно очень четко понимать - .NET исключает DLL Hell. В .NET входит новый язык, C#, (выясняется, что в Active++ Jspresso был фатальный недостаток, от которого он и помер). .NET включает виртуальную машину, которую будут использовать все языки (видимо, из-за фатальных недостатков в процессорах Интел). .NET включает единую систему защиты (есть все-таки фатальный недостаток в хранении паролей не на серверах Microsoft). Реально проще перечислить вещи, которых .NET не включает. .NET наверняка революционно изменит Windows-программирование... примерно на год.
2. Как через httpclient уже залогинившись допустим на сайте - получить с него куку session_id, хранить ее, и соотвественно далее нужные манипуляции проводить удерживая текущую сессию?
Паста хоть и смешная, но явно писалась оч давно.
.NET - таки прочно закрепился. Как бы не крыли хуями, но формы все еще используются, просто обычно это локальное использование, для внутренних нужд, ну, а в вебе - там сейчас работы полно и на .net писать веб очень даж охуенно, разве что я не понял нахуя они сначала решили обучить людей женерик-хосту, который как-бы где хош используй, а потом выкатили для веба это вот говно с WebApplication. ИМХО - это апи - нахуй не упало если честно.
Автор промахнулся, дотнет задержался не на год.
Вообще это нормальный этап эволюции, в рамках компании.
Не знаю какой сейчас фатальный недостаток у десктоп решений, но отказ от гуи линукса у MAUI, мне это напомнил про EEE. очень печально, я реально надеюсь, развитие дотнет кор, это не старая игра мягких
Паста из 2001, офк в плане названий технологий устарела.
Но вот дух майков как компании передаёт и по сей день — только недавно было 2 дотнета, лол.
>>271906
>Вообще это нормальный этап эволюции, в рамках компании.
Конкретно в компании майкрософт.
Раз уж начали про гуйню, то давай посмотрим как дела с ней в других огородах:
1) Эпл — на маке есть AppKit, на афйоне есть UIKit, недавно на обоих появился SwiftUI. Политика компании — высирать большой монолит и катить его до следующего просёра ещё 20 лет.
2) Гугл — на андроиде есть нативный UI (не знаю, есть ли вообще название) и недавно выкатили Compose. В перерывах выходит хуйлион мелких либ, (на которые/с которых) все бегут туда-сюда. Политика компании — высрать что-то фундаментальное, жидко пердеть 2-3 раза в год до следующей большой какахи через на 10 лет.
3) Майкрософт — хуярим MFC последний апдейт — 17 год, оно живое, WinForms, WPF, WinUI, UWP, MAUI, Xamarin (хоть и не сами писали), недавно видел что-то про Blazor Desktop, вот будет хохма-то... И это не только с гуем так — оно так во всём. Политика компании — срать каждый год как можно больше, 1 какаха из 10 точно взлетит.
На вакансии стажёра спрашивали реализацию собственного алгоритма сортировки который учитывал несколько условий, например чаще используются первые значения, а не весь список, про интернирование строки и замену её через unsafe (нахуя?)
>собственного алгоритма сортировки
обыденность
>интернирование строки
проверка на знание некоторых деталей внутреннего устройства дотнета
>и замену её через unsafe
проверка на углубленные знания или на интерес ко всяким глубококопаниям
Кто знает. Может они ищут людей, которые увлечены программированием, а может и тех, для кого это не более чем ремесло.
Ответ простой, эпл и гугл редко что делает для разработки. Гугл вообще выкатил на серьезных щах го и сказал жрите как хотите (и теперь у нас еще один узкоспецичный язык, но уже для микросервисов).
Так что мягкие, (вероятно, имея внутри конкурирующие группы), пилят наилучшие решения и получается как в опенсорс с 100500 решений в какой-то области.
Это лучше, чем тебе дадут свифт и скажут ешь! Неудачные решения должны затухать и исчезать.
Так что все нормально, загляни в какую-нить жабу, ты SQL фреймворков найдешь больше чем изучишь за жизнь (и все они не о чем).
>гуи линукса у MAUI
Появится компания, которая запилит гуй, если будет востребовано майки их купят, а если нет, то зачем им лишний геморрой.
ХЗ, на самом деле кому нужен гуй на лине кроме 1,5 анонимов с двача. Десктоп и так полмертв, а на лине даже родиться не успел.
>Получается нет смысла изучать шарп?
Если твоя цель писать гуи для пинуса, то ты где-то свернул не туда шарп, очевидно не твой друг.
Весь попенсорс отдан попенсорсу (тот же MAUI, или полудохлая авалония), но реальность попенсорса такова, что никто там за идею не работает (только GNUтнутые).
Это проблема не шарпа, а самих людей. То же самое наблюдается в расте, котлине, и даже в джаве, никто за бесплатно ничего толком не пилит (но языки очень любят, лол).
Скажем, можно открыть джаву и увидеть тонну решений для бэкенда, но в реале все кроме Спринга это мусор. И так же есть культовые решения, но опять же без доков (а ты попробуй на жабе сорцы почитай).
Для меня шарп сейчас самый лучший язык для бэкенда со статической типизацией и перформансу. Котлин убивает жабье наследие, на го что-то многолетние писать кромя микрокаках больно.
а зачем, там же консольки дрочат, а гуи для слабаков
Вот захочу я себе запилить дискорд++, чтобы юзеры могли юзать в телефоне, на винде, на маке и линуксе. И получится, что с MAUI я сосну тунца.
Ну соснешь и соснешь. Я же говорю майкам до полутора пилильщиком дискордов дела нет. Им линух только для облаков нужен.А если кто-то считает что на гуе под линь можно бабла срубить может запилить поддержку линя.
Нравится, когда двачеры от лица компании говорят, как-будто что-то понимают.
Игра в опенсорсе простая, либо ты играешь со всеми, либо катишься к тунцам.
ЕЕЕ тут не пройдет.
Есть приложение на винформс C#, которое обращается кроме всего и в БД
1. Оставить все обращения в базу в самом приложении (строки сикуэльные)
2. Вынести абсолютно все обращения на сторону базы, обращаться только через вызовы фанки
Может пойти по третьему пути и селекты оставить в приложении, а запросы которые изменяют данные (инсерты, селекты, дропы) вынести в фанки?
>Это лучше, чем тебе дадут свифт и скажут ешь! Неудачные решения должны затухать и исчезать.
Ну так если бы майки не поступили с шарпом как эпл со свифтом — он сейчас был бы никому не нужен, как и 5 конкурирующих языков, бывших бы в разработке в таком случае.
Это же блять не либу написать, если завтра это "неудачное решение" по твоим манярыночным представлениям от отборе закроют — куча софта резко станет легаси говном которое надо переписывать, кому такое нахуй надо?
>Так что все нормально, загляни в какую-нить жабу, ты SQL фреймворков найдешь больше чем изучишь за жизнь (и все они не о чем).
Очередную ORM написать — даже в одиночку не проблема, хуй знает к чему ты это вообще приплёл, можно с таким же успехом на жс фреймворки пальцем показать.
Ну вообще-то это не мидловские вопросы. Я тоже бывал на собесах ,где спрашивали вещи, которые я не помнил наизусть . Может у тебя просто плохо получилось себя продать
На кой хуй тебе гуй? Еще и на шарпе? Ну реально?
Ну а если так нужен гуй, то хули ты как норм челы не поступишь? Гуй на какой-нибудь нативной платформе либо средствами ЖС, а основное приложение - на шарпе/любом удобном тебе языке, и общаешься либо по средствам своего протокола, либо как норм челы - рестом/rpc. На кой хуй это вот бредовое желание с тем чтобы учить одну технологию, чтобы все писать? Так - тебе только в си/плюсы, но ты там просто утонешь и нихуя не сделаешь в принципе.
Ну и да, гуй не нужон на деле. Поживешь годик на линухе - поймешь, что 99% задач - тупо быстрее и проще сделать в консольке, а гуй только чтобы видяшки/картинки смотреть и нужон.
>Гуй на какой-нибудь нативной платформе либо средствами ЖС
выучил шарп - учи еще 1005000 языков. ну а хуле )
>либо как норм челы - рестом/rpc
у нормальных челов можно просто взаимодействовать с гуи напрямую, а не плодить костыли. Чай не браузер, где другого варианта просто нет.
>с тем чтобы учить одну технологию, чтобы все писать?
ответ кроется в этом вопросе )
Не стесняйся спрашивать у тех кто рядом.
Только аутисты типа меня, которых мамка в детстве пиздила за 4 и единственный способ хотя бы как-то самоутвердиться у них был - научиться, способны в самостоятельное обучение. Ну и всякие гении и креативные личности с талантом, которым просто прет от всего подряд и сегодня они на скрипке играют, завтра компуктер изобретают, послезавтра ебут красоток.
Прими что ты не такой. Так вот. Тебе не стоит отчаиваться. Таких как ты - большинство. И ты должен понимать, что большинство челов вокруг - такие же, просто они уже прошли этап, получили навыки и могут спокойно справляться с рядом повседневных задач(обычно это семья и 2,5 профессии, т.е. когда ты освоишь кодинг, ты сможешь еще экономику/управление/что-то еще по выбору освоить и что-то третье-на средненьком уровне). А обучение обычных людей - всегда лучше происходит в группе. Ты смотришь на других, говоришь о своих проблемах, получаешь несколько решений, возможно появляется дискуссия о том как лучше и ты наблюдаешь, видишь аргументы тех кто шарит.
Короче. Я тебе про правило часа хотел пояснить. Делаешь таску. За час не понял как нормально сделать - гуглишь, выбираешь готовые решения которые как минимум выглядят компетентно, пытаешься их применить - не подходит - идешь к старшим и плачешься , какое ты чмо, что вот, я пытаюсь решить задачу, вроде как нашел 2-3-10 вариантов, но не знаю как лучше потому что: поясняешь хули ты не копипастнул первое из SO.
Ну, по факту-то, сделать прям охуеть какой фреймворк для гуев - пиздецки сложно. Чтоб все-все-все. Вот, есть опенапи, есть родное апи системы чтоб окно создать и за мышкой и прочими устройствам следить. Дерзай.
Ну а хули? По факту-то реально если хочется кросплатформенного гуя, ты либо так делаешь, либо берешь браузерный движок и на жс пишешь, либо кучу костылей с платформа-специфичным кодом костыляешь. А, ну да, можешь попробовать жаву и понять что на деле - что-то сложнее пары кнопок, текстбоксов, галок и выпадающих менюшек - там так же не сделаешь просто так. Это все специфика гуев и нихуя ты не денешься от этого.
Хочешь на линуксе писать гуй - бери либы специфичные для линукса, бери си/плюсы/твой язык и пиши.
> у нормальных челов можно просто взаимодействовать с гуи напрямую, а не плодить костыли. Чай не браузер, где другого варианта просто нет.
И покажи этих нормальных челов. А потом ответь, какого хуя даже в среде линукса эти нормальные челы не могут у себя порешать так, чтобы гуи от разных DE и наличия окружений - не падали и вели себя одинаково.
У тебя ментор - токсик, еще и самоутверждается за счет таких как ты челов, у которых завышенные требования к себе.
Мне вот, допустим, дали на первой настоящей работе задачу: сделай нам коммуникационный сервер, чтоб 10к rps на нашем протоколе поверх ТЦП, чтоб с веб-мордой, кроссплатформенно и микросервисной архитектурой. Ну, я еблан и сделал. В итоге - круглые глаза, когда я при этом выжатый как лимон - прошу уволить меня. Типа, бля, ты за 3 месяца сделал то что наши челы до тебя 4 года делали-делали и дропнули не осилив все требования. А я - еще и съебланил, написав заявление, но отдал его своему руководителю, а он его просто выбросил, кек, потом узнал только что нужно было сразу идти либо в отдел кадров, либо к директору. В итоег еще год сидел ждал, не понимая, хули мне не отдают трудавую и плотят ЗП. Только когда был оффер с другой конторы, в которой придложили в 4 раза больше чем тут и мой жлоб-руководитель не решился пытаться выбить мне ЗП чтоб перебить это - таки нормально уволился и на втором месте понял, что это вот все было не нормально.
Короче. Не парься. Все тупят. И тупят много. Просто кто-то воспринимает тупняки как должное, либо сравнивает себя с собой же, а кто-то зачем-то смотрит на других и сам себя дрочит. Не дрочи себя и все будет ок.
И на выходе получается говно - памяти жрет много, умеет мало, выглядит как веб.
> какого хуя даже в среде линукса эти нормальные челы не могут у себя порешать так
это нерентабельно. А энтузиасты делают, но им еще и жить на что то надо.
Лично я для кросс возьму авалонию если нужно будет.
правда там выглядит не нативно (как будто хтмл нативно выглядит) и беда со шрифтами (внезапно под винду), впрочем такая же беда и в хромодвижках (а значит электронах и прочем)
Сделать кросс в движке бровсера - проще. Няша. Ты думаешь, почему опенгл - не имеет своего механизма окошек и прочего и чтобы само окно отрисовать в которое ты уже передашь контекст, все еще нужны какие-то костыли в виде glut, sdl или еще чего-то? Потому что если мы хотим делать общее решение - мы должны абстрагироваться от конкретной платформы. И да, выглядеть будет не нативно. В контексте опенгла - не так страшно, потому что там обычно костылают свое все время и не нужны РОДНЫЕ компоненты.
>Сделать кросс в движке бровсера - проще
кому проще
вот я шарпист. для создания гуи в движке браузера я должен учить хтмл, стили и богомерзкий жс. Потом думать, как все это дело связать с моим приложением. А оно мне надо? Может мне сразу нужно было в жаваскриптеры идти, зачем мне шарп то,а
>мы должны абстрагироваться от конкретной платформы
>И да, выглядеть будет не нативно
то же самое делает авалония. в чем разница?
21 лвл доучиваюсь в универе еще
Вы все здесь забываете, что кросс-платформа - это 99% не про Линукс. Имеется в виду Windows/Mac + iOS/Android. На данный момент альтернатив вебу нету.
Всё попытки сделать GUI на все платформы выливаются в переизобретение браузеров, только со своими костылями, стилями и кучей багов, на фиксы которых могут уйти десятки лет.
Поэтому все эти потуги в виде флатера, ксамарина, авалонии ни к чёму в итоге не приведут.
В любом случае, когда нужна кросс-платформа здесь и сразу - это значит кабан тупо хочет сэкономить. Правильно делать полноценный API + клиент к вебу, а потом нанимать разработчиков отдельно для нативных клиентов, если нужно. Кароче фулл-стек - это всегда игрушка кабана, не лезьте туда, и не выдумывайте якобы проблему отсутствия кросс-платформенного ГУИ, нахуй он нам не нужон этот ваш кросс-платформенный ГУИ.
>На данный момент альтернатив вебу нету.
скажите это телеграму.
>Всё попытки сделать GUI на все платформы выливаются в переизобретение браузеров
собственный рендер это совсем другое, чем "исполнение в контексте браузера"
>Поэтому все эти потуги в виде флатера, ксамарина, авалонии ни к чёму в итоге не приведут
проблема флаттера - дарт, что все равно привело к отличной популярности
У ксамарина проблема - внезапно шарп. Ну и долгий старт.
у авалонии проблема - его не поддерживает мс, то есть больше самопал. Хороший, но самопал.
>нахуй он нам не нужон этот ваш кросс-платформенный ГУИ.
ну лично мне не нужен. я потому и не трогаю эту какашку в виде хтмл. Под винду - беру WPF, под маки - беру авалонию. Под веб - пусть с этим фронтендеры трахаются, мне оно нахер не нужно для написания бэкенда.
> В любом случае, когда нужна кросс-платформа здесь и сразу - это значит кабан тупо хочет сэкономить
Неистово двачую.
Говорю это как бывший замарин разраб.
>CLR via C#
Такие книги невозможно просто взять и читать. Я например могу раз в неделю загореться и прочесть какую-нибудь главу. Можно взять некоторые главы в начале, где рассказывается про heap/stack, GC, типы, но читать в упор эту книгу - это плохая затея.
Ну я тоже после устройства перестал читать разные программисткие книги, типо SICP и других. Также перестал новые языки программирования учить, кроме F# и для фронта иногда. Изредка могу пет-проекты поделать, но тоже быстро перегораю.
Чтобы не выгорать на работе можно почитывать reddit, stack-overflow, ycombinator, например по темам Why Entity Framework sucks или OOP sucks - там будут разные дискуссии, которые заставят тебе смотреть взглядом других людей и ты сможешь так развиваться и анализировать свой код, потому что локально у тебя всегда ограниченный круг мнений о конкретно твоем проекте и о том что ты делаешь.
>скажите это телеграму
Не понял тебя, что сказать? Примитивное гугление показало, что они для каждой платформы пишут отдельный клиент. Да, есть Qt, но там целый зоопарк из языков и фреймворков.
Имелось в виду, что нет альтернативы вебу, если ты хочешь написать один клиент, который будет доступен со всех платформ из коробки без костыльных фреймворков, пусть и не как нативное приложение.
Не было. Но я аутист, которому самое то писать эндпоинты, а дома - пилить свой охуевший МВЦ фреймворк на всех языках, лол. На шарпе- написал, на жаве - написал, на плюсах - написал. Теперь нужно на каком-нибудь эзотерическом языке попробовать.
Бля. Я к чему. Профессия нужна чтоб бвбло зарабатывать. Когда у тебя будут скиллы - сможешь свалить на то что больше нравится. Если уж совсем-совсем не нравится и ты прям уверен что это не из-за того что ты что-то другое ожидал, думал что ты там будешь ежедневно сложные задачи решать, на которые годы положили лучшие умы и тут пришел такой ты и все порешал, то да, профессия таки во многом не такая, тут нужно делать много однотипной хуйни и стараться делать ее максимально качественно и быстро(соответственно и дорого). А пилить что-то интересное тебе или чем-то еще заниматься, можно и в свободное время.
Более того, те проблемы, которые ты говоришь, что проблемы
>флаттера - дарт
>ксамарина проблема - внезапно шарп
когда это совсем не проблемы для больших проектов.
Самая большая проблема - это когда тебе нужно решить сложную задачу, например оптимизацию с использование нейтивных фич для комплексного финансового приложения или отрисовку нетривиального компонента, и тут выясняется что твой
>React Native
>Flutter
>Xamarin
>Avalonia
идут хором нахуй и нанимается команда сеньйоров под каждую платформу, чтобы делать нормально.
>>272814
Блядь.
Придумал охуевшее решение с семафорами, из-за которого в одном конкретном запросе - просидает перформанс, вместо того чтобы просто кидать Task в очередь и ждать его там где мне надо. Пиздец я даун(((
да я уже вообще запутался за что ты топишь
лично я топлю против технологий "делаем все в браузере на богомерзком жс, да еще связываясь с ядром приложения будто это сервер какой то"
>выучил шарп - учи еще 1005000 языков
Кстати, заметил, что многие вакансии на шарп требуют ещё и знания фронтенда. В то время как вакансии джава - это чистый бекенд без фронта.
Ты пробовал выключить и включить?
Ну там, короче, ехала лямбда через лямбду, внедряла зависимость через зависимость
Жабий тырпрайз разросся до такой степени, что для крудинга нужен отдельный спец. В реале это еще связанно с тем, что надо знать 100500 либ, в шарпе же многое унифицировано. жабу тоже когда-то пытались, но возможностей не хватило
Потому что те кто делали JArray не имплементировали эту фичу(возможно из-за необходимости обратной совместимости со старым фреймворком, где еще не ввели слайсы). Используй стандартный подход с Count-1. Либо линку TakeLast(1)
Ап. Я, конечно, нашел майковскую библиотеку, но до конца еще не вникал, какие возможности по управлению АД она предоставляет
Лучшее решение что они придумали для гуи - винформы. Это просто лучший инструмент именно для программистов. Решения с WPF-UWP и прочим калом, это попытки выкатить говно, для средних и больших команд, где есть дизайнеры, которые условно не в состоянии нормально писать приложения, но при этом могли бы делать тот самый дизайн, темки и это вот все говно. Тебе как программисту, если ты собираешься писать софт в соло или небольшой команде - винформы будут охуеть как удобны. При этом винформы - самый логичный инструмент из всех, и самый экономичный в плане ресурсов. Лучше только голове винапи, но в таком случае тебе бы больше подошли плюсы.
>винформы будут охуеть как удобны
ровно до тех пор пока не захочешь свой вид контрола
и с этого момента понимаешь, что WPF круче
Есть книги по винформам? Раньше Петзольд писал, но там жуткое старьё и сейчас уже нигде не найдёшь книгу, а то, что выложено - кривой скан с пропуском страниц и не читабельный.
Бамп или никто с БД не работает?
1. This.
2. Выиграть 0.000001 сек на каждый запрос на парсинге и проебать в поддерживаемости и гибкости. 12/10.
>Может пойти по третьему пути и селекты оставить в приложении, а запросы которые изменяют данные (инсерты, селекты, дропы) вынести в фанки?
Успокойся и оставь базу данных базой данных.
Ооо спасибо
точно так же, как будто эти вьюхи лежат в твоем основном проекте, просто в другом неймспейсе. Никакой разницы нет.
Я сам за первый вариант, но как его обосновать?
Мне говорят что так всегда разрабатывались клиент серверные приложения, что это быстрее и безопаснее и что можно не перекомпилируя проект внести изменения на стороне базы.
Я пытаюсь рбъяснить что это все превратит дальнейшую разработку и поддержку в ад, но нужны пруфы несостоятельности второго подхода.
Хочу вкатится в GamerDev, практически ничего не смыслю в программировании, но как основа для будущего как оно?
https://www.youtube.com/watch?v=KyFWqbRfWIA&list=PLQOaTSbfxUtD6kMmAYc8Fooqya3pjLs1N&index=1&t=1s&ab_channel=#SimpleCode
Чел что канал ведет - не дотнетчик. Скорее всего плюсовик, который использует .net из-за удобства и простоты. Часто подсматривает SO.
Для нуба - там все равно много полезного, наверное. Если прям совсем ничего не знаешь. Рассказывает довольно просто и понятно. Но видно что ООП это не совсем его.
Короче. Я к чему. Если совсем нуб - то норм вполне. Просто-понятно и быстро.
Я бы советовал таки видосики с тем лысым хреном с ITVDN. Хотя для игродела будующего - там много кишочков дотнета, которые будут лишними в юнити.
Вообще. Да. Я тут подумал. Наверное именно симплкод для освоения основ и потом переходить к примерам которые сами юнити как обучающие дают - самое то для нуба. Хотя я бы конечно таки лысого хера с ITVDN советовал, он разжевывает так хорошо, и при этом много кишков, которые таки не в геймдеве - полезны оказываются.
На всякий случай таки уточню, что именно с лысым дядькой. Там есть несколько вариантов курса. Те что с лысым дядькой - годные.
Ну и да. Они есть на торрентах если что. И часть на ютубе.
>Я сам за первый вариант, но как его обосновать?
Вот так
>так всегда разрабатывались клиент серверные приложения, что это быстрее и безопаснее
>можно не перекомпилируя проект внести изменения на стороне базы.
Нельзя, чел. Ты просто сломаешь код в 9 из 10 случаев.
>но нужны пруфы несостоятельности второго подхода.
Если у вас прям есть DBA которые задрачивают выборки, как-то структуру бд меняют и тд — то может и будет какой-то профит, от использования их как контракта.
Иначе ты делаешь из базы данных часть приложения, лепя их в монолит. Что сломается в какой части при изменении какой-то хранимки — с ростом проекта будет расти и геморой, а если кому-то придёт идея побить проект по частям/сделать ещё один — этот геморой моментально лопнет нахуй, как и разобраться в хуйлиарде хранимок под каждый кейс, которые будут копится с каждой итерацией, на всякий пожарный или потому что какую-то часть решили оставить так.
Неужели я один такой, кому не норм что в у шарпа нет нормального фреймворка для разработки сетевых приложений? Типа да, я понимаю, что те кто вкатились - скорее всего по хэтэтэпе гоняют жсоны, а те кому таки нужно было в свое время - просто брали сокет в руки и скорее всего боятся что-то там допиливать, типа работает и хуй с ним.
Но блин. Меня эт напрягает. Я хочу чтоб у дотнета был нормальный, мать его фреймворк не привязанный к конкретному протоколу. При этом чтобы большая часть плюшек асп была валидной. Но сук. Я ж не смогу в соло это сделать в контексте долговременной поддержки.
Типа да, я таки могу сделать пруф оф концепт в соло, но как потом с этим быть? Я же не смогу его вечно поддерживать, а чтобы пользовались - нужно всякие кодеки будет писать, новые технологии впихивать и т.д.
Короче. У меня вопрос. Как привлечь внимание майков, если я таки сделаю свою хуйню, которую хочу подарить миру, чтобы каждый васян потом мог быстренько свой прикладной протокол придумать и на его основе уже свое клиент-серверное приложение делать.
Спасибо, попытаюсь донести.
А можешь что сказать про использование nhibernate (с orm не работал, но движение в его сторону мне кажется перспективным, nhibernate выбрал рандомно), если все перевести на него? Там же тогда не будет гемора с sql кодом? Правда не знаю что там и как со сложнымы запросами с подзапросами и кучей проверок, но такое буквально есть в нескольких местах.
Еще он же может работать без локального кеширования таблиц, если таблицы тяжелые?
Пишешь. Поддерживаешь. Создаешь вокруг продукта коммьюнити. Привлекаешь туда заинтересованных. Пишешь статьи. Публикуешь на профильных ресурсах. Выступаешь на конференциях с докладами. Общаешься с нужными людьми. Если у твоего продукта есть потанцевал, то вполне возможно, что тебя заметят и выкупят/инвестируют.
Чем тебе имеющиеся либы не нравятся? Или тебе надо чтобы о них рассказали сначала на конференции. Типа либа если не с конфы, то фи? В первой же найденной либе есть пример клиент-серверного кода и даже гифкой!
> Чем тебе имеющиеся либы не нравятся?
Тем что все что есть, по факту, это попытка netty портировать на .net, которая заброшена(оно вроде как работает, но некоторые баги так и не закрыты, да и не уверен я что оно Production Ready), есть NetCoreServer, который с точки зрения плюшек - чуть лучше сокетов и не ООПшный по сути, там просто есть клиент, есть сервер - дальше сам пили контексты, кодеки и следи за буффером и стейтом сессии. Есть еще WatsonTCP, но когда я его тестил - он тупо не был в состоянии обработать простой разрыв коннекта, в результате - одно из ядер - загружено на полную, пока у него не пройдет HeartBeat и он таки не дропнет соединение, плюс он Tcp-специфичный, а там как-бы QUIC таки вроде таки пытаются проталкивать как новый стандарт, пусть он уже и давно придуман.
>>274218
Да я просто сколько не пытаюсь где-то про это вякнуть - создается впечатление, что никому оно не надо. Дедам -все хочется сокеты теребить, жависты - имеют нетти/мину, а нубы - не знают что в мире есть что-то кроме реста и http
А, ну да. Есть еще Project Bedrock. Он, судя по примерам того что хотели - покрыл бы большее из того что лично мне надо. Но его в .net6 вроде как обещали выкатить, но с тех пор как я интересовался - никаких новых новостей не слышал, а последине коммиты - хрен знает когда были. Есть мнение, что проект тупо закрыли или положили на полку, ну или взяли наработки себе и в открытую их не хотят выкатывать.
Хочу это, это и это и еще бесплатно. Ты откуда такой губастый к нам?
https://www.youtube.com/watch?v=lg9Awh4uEGk
Не одной баги не открыто.
https://github.com/Azure/DotNetty/issues?q=is:open+is:issue+label:bug
Хз, я бы с удовольствием пописал что-то сетевое, было бы время.
А то чет я гуглю и сейчас это исключительно про микросервисы будто стало. А мне вот хочется примерно следующего:
await ApplicationContext.DispatchEventAsync<DomainEvent>(new DomaunEvent());
И чтобы логгер - залоггировал это событие, а какой-нибудь обработчик - обработал и возможно создал новое событие, которое уже обработает другой обработчик.
Типа да, с одной стороны - я смотрю на это и сложность понимания когда что вызывается - должна повысится. Но с другой - понизится свзяность кода и можно будет проще с этим всем делом управляться, а главное - тестировать, т.к. не нужно будет всю цепочку проходить, а можно просто дергнуть хендлер, замокать диспечер и все чики-брики должно быть в плане тестов.
Что думаете-то?
>Member 'Pisos' does not access instance data and can be marked as static
Есть ли какие-то преимущества, если использовать статику?
Есть.
Если у тебя метод статичный - не нужна проверка на то что объект создан. Таким образом - нет лишних проверок того что есть объект метод которого вызывается.
Допустим у меня есть метод который принимает аргумент который должен быть в неком диапазоне значений. И у меня есть проверка которая бросает ексепшн если это не так. Однако анализатор не ругается когда я пытаюсь передать неподходящее значение. Возможно ли сделать так чтобы он помечал подобное как ошибку, подобно тому как это делается в питоне через тайпхинтинги (пик2)?
Возможно. В крайнем случае - сам можешь анализатор написать, который тебе подсветит ошибки, апи - есть.
Дело не в интерестности заданий. Просто я смотрю на своих коллег и не понимаю откуда у них столько знаний если они выполняют такую же однотипную ерунду как и я? Тратят свое личное время? если да, то я явно им не ровня ибо после конца рабочего дня я даже думать о кодинге отказываюсь
Ну почему обязательно личное время? Кто-то в рабочее, если все успевает - просто не спешит бежать за новой порцией задач и спокойненько что-то там читает. Ну и зачастую ты ж несколько лет занимаешься этой однотипной хуйней, много разных штук повидал. Она-та однотипной кажется на первый взгляд, а на деле - вот тут лучше так сделать, там - вот так. Ну и да, в свободное время полезно книжки вумные читать и это вот, просто это не с наскока делается за год взял и все выучил, а постепенно, пока работаешь.
Ты там енумы придумать пытаешься?
Встроенным в студию профиллировщиком. Он хоть и не такой крутой как доттрейс, но основные моменты - позволяет отследить и пофиксить.
Тебе же прямо написали "удобно и human readable". Если эти качества перевешивают ускорение и оптимизацию, то поэтому и юзают.
Ну и если они изначально бинарные форматы через json-ы гоняля, то сами себе долбоебы. Охуеть достижение "мы для перегонки бинарников взяли формат подходящий для перегонки бинарников и стало быстрее, чем с форматом не годящимся для передачи бинарников". Ясен хуй, что так и будет.
>Тебе же прямо написали
Дак неужели это перевешивает скорость ?
Ну если у вас высоконагруженное приложение, не логично ли будет сразу взять самое быстрое решение? Ну да мб разработка будет четка медленнее зато софт быстрее работает.
>Ну и если они изначально бинарные форматы через json-ы гоняля, то сами себе долбоебы
Ты где там такую хуйню высмотрел, поехавший?
Ты, интереса ради, попробуй сам захуярить свой сервис с бинарным форматом для апи. Причём не какой нибудь протобаф (хотя и с ним куча гемора), а на messagepack, блять. А потом написать к этому сервису хотя бы 3 клиента. И что-то изменить в сервисе и посмотреть кого как распидорасит.
Отлаживать такое — ебанёшься просто.
А ты где высмотрел, что он высмотрел такую хуйню? Вроде на программаче люди должны быть знакомы с конструкцией "если то".
"Если что" вот это
>Ну и если они изначально бинарные форматы через json-ы гоняля, то сами себе долбоебы
несвязанный поток хуиты, смысл которой я пытаюсь понять.
Го ужасен в плане длительной разработки.
Судьба раста непонятна. Да и либ мало.
Котлин ужасен в длительной компиляции и вообще дизайне (вчера только упало двухлетнее приложение, почему-то стал цеплять экстеншен фукцию T.run() вместо компаньёнской. Офигенно открыть утилитку, которая перестала компилиться со временем.).
Жаба - топорна.
Куда вкатываться то, в жопоскрипт чтоли??
>что на текущем дотнете (тот что из core) реально мало либ
ну так то оно поддерживает либы из старого дотнета, пока там нет зависимостей на то, что вырезали.
А что тебе нужно? Какие задачи?
Все инструменты говно в той или иной степени.
Если нужно просто в бекенд вкатиться, то js/java/kotlin/go на сегодня вполне рабочие варианты.
Из всех вариантов думаю go самый нормальный вариант на сегодняшний день. Нет легаси и огромного нагромождения абстракций ради абстракций. Код читается просто, в отличие от раста, плюсов или джавы/шарпа, где происходит магия под капотом того же спринга или asp.
Нет, то что ты хочешь - называется dependent type system. Нормальная реализация такого есть в Idris.
Можно указать компилятору, что функция принимает List<int>[n] и возвращает List<int>[n + 1], где n - это количество элементов в списке.
В питоне, как видно, просто юзается обёртка Literal. Такой костыльный анализатор ты тоже можешь написать для C#, но это всё будет неполноценно если этого нет на уровне компилятора.
А что можешь сказать по поводу данного сабжа? https://www.youtube.com/watch?v=eVNmcT14wzo&list=PLDSdUQf0A9mB7PEs0vs84iLWWsOh2XtkX
Мне чёт прям очень зашёл канал, однако страшно довериться.
Разговоров было то пиздец, а он до сих пор в превью.
Хочу немного научится гуи делатьхз нахуя, так для общего развития, вот жду его. Или нахуй тот гуи?
так тебя и зачморили лол
>Я на Рякте + Асп изи помогу написать несложное вэб приложение.
Ну так для шарписта - это и есть фулстек. Компонент накидать сможешь, который пруф-оф-концепт изменений на бэке проверит и достаточно. А дальше пусть верстальщики трахаются.
Не вижу смысла переката во фронт. Бабок больше не заработаешь, а как только узнают, что ты и верстку можешь, так сразу начнут все дерьмовые таски вроде "марджин лефт 10 пикселей" скидывать.
сейчас перешёл на галеру 5к+ тел, нанимался как бекер но у меня нихуя опыта в асп нету, сказали дадут 3 месяца испыталки
на время испыталки 150к, потом до 250к (перформ ревью будет)
как оцениваете такую поеботу? продешевил? мне дали предложение которого я не заслуживаю? какие сейчас рейты я вообще нихуя не секу — 4 года как страус засунув голову под землю сидел в своей говноконторе
>до 250к
В целом норм, главное чтоб не наебурили.
Ну как по мне это норм зп для мидла или пре-сеньора без знания английского.
Ну обычно да. По крайней мере в подавляющем большинстве мест, что я видел дела обстоят так.
Я например, если моя задача просачивается на фронт, максимум делаю какой-нибудь компонент, который реализует нужную логику. Модалочку там прикрутить, вьюху отдельную или маршрут прокинуть. Бывает какие-нибудь сложности, вроде хитрой фильтрации или odata запросов. А всякие проблемы типа вылезающего за границы текста или стилей спихиваются чистым фронтам. Понятно, что при дикой нужде я и это сделаю, но в норме у них это получится и лучше и быстрее.
А стремиться совсем к полному фулстеку, чтобы делать совсем все смысла нет.
Норм. Если не наебут с повышением.
Если наебут - всегда сможешь срулить, главное успей побольше прокачаться за это время.
Тг для связи: t.me/iglerrr
Заранее спасибо
Можно было бы вынести utility класс в сам контекст, но тогда бы пришлось создавать на каждую таблицу по несколько методов типа Add/modify (т.е. вызывать их вью моделей, вместо дефолтных энтити методов) но это какая-то шляпа и я чего-то явно не знаю.
профессионал Go должен знать Python?
нет блядь, не должен, но если попросят должен сказать что надо разобраться, вот за столько времени я чонить скажу, если надо давайте
Очень смешно, эти два языка очень похожи, и очевидно копировались друг на друга.
А что подразумевается под знанием жавы?
Ну, допустим - я ее не учил. Но мне нужно было портировать одно приложение с жавы на шарпы из-за того что чел, который делал на жаве - уволился, а больше никто не знал как оно работает. Было смутное ТЗ за 2005й год и воспоминания стариков, что дескать такие вот были кейсы, но мы точно не помним, вроде клиент когда-то просил такую фичу, но хуй знает запилил ли тот чел ее или нет. История коммитов была в SVN и коммиты оформлялись в духе: Внес изменения... и дохуя файлов измененных, какие изменения внес - ну, иди смотри.
Ну, без особых проблем разобрался в жава-коде, зная только шарп. Плевался правда с него, типа, пиздец, как люди без свойств живут-то, куча GetHuinya(), SetHuinya(Huinya huinya). Хотя их енумы мне понравились, хотелось бы подобное в шарпе видеть. Ну и понравилось таки то что сахарка в том коде было меньше, в этом плане - чем ближе к си - тем удобнее понимать, т.к. синтаксис сахарка - нужен только тем, кто кодит постоянно на языке.
Короче. Я к чему. Если ты умеешь читать код и приблизительно понимаешь паттерны которые используют - понять код на ООПшном языке - не сложно. Всякие специфичные штуки, типа как там у них фреймворки устроены какие, где чел обосрался в контексте жавы, а где не - это да, тут просто так не поймешь, но надо ли оно шарповоду, которому нужно бизнес-логику было понять?
т.е. ты сейчас вот на голубом глазу хочешь подписаться на разработку говна на НЕПРОФИЛЬНОМ для тебя языке?
ты не хочешь посидеть, подумать, прикинуть что будет с этого лично тебе?
может у тебя в должностных обязанностях есть знание двух языков?
Забейте, я даун )
Ну, просто когда я пытаюсь придумать кейс из не геймдева, все выливается в то, что это будут просто маленькие интерфейсы, а СУЩНОСТИ - просто фасадами. Т.е. никакого отхода от ООП, по факту. Но вот в геймдеве - кричат что нифига и это какой-то новый подход и не ООП. Но ведь если убрать из "ECS" букву S, то это же, как уже сказал - обычный такой подход с фасадированием. А теперь вернув S - получаем, что вполне себе классический ООПшный подход, мы выделили "сущности", в них с помощью DI - протолкнули нужные нам "компоненты", ну а системы - некие наши сервисы, которым как раз "сущность" не важна, а важна работа с компонентами.
Может быть я что-то не так понимаю? Ну и может быть кто-то хотя бы в своих проектах пользовал в качестве эксперимента такой подход не в контексте геймдева. Как оно? Ложится или не?
Просто классическое ООП - надоело. Геймдев-няшки говорят что ECS - подход это якобы не ООП, хотя я смотрю и то же самое ООП классическое. Но просто я слышал про выражение, что если у тебя в руках молоток, то все вокруг кажется гвоздями, потому и думал спрасить у более прошаренных.
>Я в контексте: а можно ли это нормально использовать в той-же веб-разработке?
Можно конечно.
Но не нужно — у веба банально другие ориентиры всем похуй на перформанс, завалим железом, ради того, чтобы больше влезало в кэш проца никто не будет поворачивать голову, чтобы запихнуть в неё ECS, лол.
> все выливается в то, что это будут просто маленькие интерфейсы, а СУЩНОСТИ - просто фасадами. Т.е. никакого отхода от ООП
пофикшу:
> все выливается в то, что это будут просто маленькие тайпклассы, а СУЩНОСТИ - просто композиция функций/типов. Т.е. никакого отхода от ФП кроме мутабельного стейта
кек.
>если у тебя в руках молоток, то все вокруг кажется гвоздями
Тащемта, всё так. У тебя принципы SOLID-а в голове уже слились с ООП, хотя применить их можно к чему угодно.
От ООП отличает шаренность стейта, от ФП — его мутабельность.
В целом каких-то специфичных для ООП/ФП вещей в реализации не требуется, паттерн прекрасно реализуется хоть на Go.
При чем тут ключи нахуй? Меня просто напрягает необходимость засирать системный том, который я по дурости сделал очень маленьким. Вон, жависты ставят свою IJ с JDK спокойно на нужный диск.
Ну так сделай его побольше, в чём проблема. Что за неудобства на ровном месте
К примеру как то так
string name = JsonSerializer.Deserialize(json).name;
Например я получаю json но мне там нужна всего ли одна строка, можно и регуляркой распарсить конечно. Но можно ли ее как то так получить?
Слишком маленькая концентрация await на строчку кода. Нужно намного больше. Не, ну серьезно, что запиздец?
>который я по дурости сделал очень маленьким
Ну так проблема в тебе.
Тем более, что все пакеты и сдк все равно потом будут на системный диск скачиваться (как и у джавистов, кстати), а они места побольше чем IDE займут.
У меня есть интерфейс, который реализуется в куче классов.
Я хочу в этом интерфейсе изменить одно свойство, так чтобы оно изменилось и во всех имплементациях.
Если с именем проблем нет (Ctrl+R два раза и везде поменяется), то как быть с типом?
Как изменить тип свойства в интерфейсе, чтобы он так же изменился и во всех реализациях. Все облазил, но команды такой не нашел.
Чему будут равняться decimal.Round(2.5m,0) и decimal.Round(3.5m,0) ? И почему?
2 и 3
Потому что так реализовали. Ну серьезно, что за вопросы почему? Сто пудов какой-то говностандарт как с float, который по каким-то причина, ведомым составителям, так себя ведёт.
2,4, так как жидовская хуйня стремится в сторону ближайщего кратного 5.
как только перестанешь задавать такие тупорылые вопросы — подходишь
фраза чисто отсеять малохольных невротиков
Спасибо, но не стоит. С душнилами я работать не люблю.
Та вот лично по моему опыту, я бы на этом не останавливался. Потому что бывают всякие няши, которые вопросов не задают, накопипастят кода, не понимая, что он делает, лишь бы вроде как работало, даже не думая о том чтобы это минимально было читаемо. В итоге, когда вскрывается - тебе переписывать за долбоебом, который, как только запахло жаренным - съебался в закат.
Ко-ко-ко, кодревью. Какое нахуй кодревью, когда в команде 3 человека и у каждого по несколько проектов?
И что теперь? Кококотлин?
Речь про MAUI, который Xamarin.Forms и из которого выпилили линух.
Ну а с чего мне не быть малохольным невротиком, я вкатываюсь сам с нуля, без вузов и курсов. Я же не знаю как там у крутых дядек заведено. Спасибо за ответ, анон.
Можно, в Newtonsoft можно сделать чето типа такого(пишу по памяти, но знаю, что можно при десериализации не указывать конкретный тип): dynamic obj = JsonConvert.DeserializeObject(json). Затем obj.SmthProp
Когда знаешь тонкости каких-то моментов. Вообще познание внутреннего устройства шарпа очень поможет в осознании некоторых моментов, например - автосвойства, или например во что превращается async/await, чем отличается event от обычрого delegate. Уверенное знание С# это уверенное знание механизма и структуры языка. Это как вот твоя рука, она инкапсулирует метод "дрочить хуй", но как устроено внутри? Посылается сигнал мозу, сокращаются мышцы, вырабатываются гормоны, учищается сердцебиение... и вот это всё и есть уверенные знания конкретной области
Никак
Остается только вопрос: НАХУЯ? Вот серьезно. Ну я вот знаю во развернется хуйня с async/await, я лазил по исходникам рослина, я разбирал сборку и тыкал палкой. Ну, типа я это делал ради интереса. Только вот нахуя эти знания в повседневной работе, я если честно - не ебу. Вообще профитов не вижу. ИМХО - умение писать простой и понятный код - намного более важный скилл и именно за него нужно спрашивать. А как там эвенты работают - до пизды, потому что сегодня они работают так, завтра майки решат устранить очередной фатальный недостаток - и будут работать не так. Хули толку-то с этого знания?
заводчанин
Все так анончик, я тоже лазил из интереса, только толку от этого нет. Я тоже с завода, пока что, в планах перекатываться куда-то на стажировочку.
>нахуя
Чтобы таких тупорылых как ты осадить и вместо 5к бачинских выдать 200к деревянных. Больше незачем
Двачаю адеквату. Пидарундели не понимают, что IL код можно оптимизировать в некоторых ситуациях тем самым выигрывая в производительности, да и в целом полезно знать как всё работает на самом деле так как появляется полная картина мира без магии.
Пф. Учитывая что я на заводе 60к получаю, я за 200к - могу и на дуде сыграть.
Но вообще, как я уже сказал, я-то могу за все это пояснить. Проблема в том, что на работе есть еще плюсы, есть ассемблеры разные, есть всякая хуйня связанная с линуксами, свехру микросервисы еще и фронтенд на реакте, а под конец - дельфи и джава. И все это активно используется, в зависимости от проекта. И именно навык умения писать аккуратный и понятный код, лично мне как раз и начал после всего этого зоопарка казаться самым важным. Потому что хороший код, в случае необходимости - легко и непринужденно можно поправить. Когда у тебя звиздец с кучей зависимостей, когда у тебя хуй пойми что где и зачем, когда нет одного стиля - похуй на знания кишков, потому что ты потом дохуя времени будешь тратить, чтобы тупо разобраться, как это говно вообще работает.
Ищи новую галеру, на заводе нет будущего
>на заводе 60к
>фронтенд на реакте
>дельфи и джава
>плюсы
>ассемблеры
И за всё это отвечаешь ТЫ и получаешь при этом 60к?
Чел, поздравляю, тебя в жопу ебут. Бери билет до москвы или, если есть инглиш, открывай ип/самозанятого - будешь на буржуев работать.
Тут не вопрос нахуя на собесах спрашивают про детали языка, вопрос в том почему ты своё говно терпишь. 3 года коронашизы бушуют, уже всю работу на дом перевели - можно на дядю из далласа работать из воркуты. А ты всё на своём заводе недовольный 60к сидишь.
Я бы понял ещё если ты патриот и надеешься промышленность россии поднять таким макаром. Но ты задаёшь вопросы "а хули меня на собесах режут"
> И за всё это отвечаешь ТЫ
В основном я таки на шарпах пишу. Это все - побочки работы на заводе, где каждый месяц 2-3 человека то в танки убегут, то в хуяндекс, а проекты - никуда не деваются. А я не бегу, потому что все что предлагали - с переездом, а у меня - батя болеет, нужно быть таки рядом, чтобы если что.
Благодаря ковиду можно и в ебенях на зп в 4 раза выше изи присесть, даже язык учить не надо. Он либо вкатыш либо жирно троллит.
5 лет работаю на заводе программистом. Сразу как вуз закончил и прошел практику на этом же заводе. Не считаю себя вкатышем. Ну, и не троллю. Я бы вообще про ЗП не говорил, если бы про нее не вспомнили, потому что основной-то мой пост был про то что кишки это про интерес, но при приеме на работу нужно смотреть в первую очередь на код и главное на его простоту и понятность. Все.
Нет, но тут они выпилили поддержку, которая вроде как уже была.
Если так, то это же старое доброе EEE.
>Если так, то это же старое доброе EEE.
Ты явно что-то пропустил. На винде теперь есть WSL! Слышишь! ПИНУС ТОЛЬКА ДЛЯ СЕРВЕРА! НИНУЖНА! КУПИ ШИНДУ! СЛЫШЬ! КУПИ!1
Код, его красоту и понятность не сможешь продемонстрировать ни ты ни они. Все эти репозитории в гитхабе - фуфло, никто не будет их смотреть ДО интервью. Максимум на собесе вы откроете проект чтобы попиздеть.
Я уже говорил, кишки спрашивают просто потому что это удобно для отсева кандидатов и занижения их самооценки.
Даже если ты привязан к дому - попробуй пройти собесы в любую контору. Даже ЕБАМ подойдёт на самом деле (тем более что они не против совместительства). Все этапы собесов идут удалённо. Документы можно высылать почтой/сканы. 60к за 5 лет опыта это ненормально, имей достоинство
>Все эти репозитории в гитхабе - фуфло, никто не будет их смотреть ДО интервью
Тыскозал? На superjob и hh часто просят в сопроводительном письме отправить ссылочку на гит
яскозал, если мне дают ссылку на репо кандидата я максимум что сделаю - зайду посмотрю чо там за проекты висят и на встрече попрошу рассказать о чём-то
хуярь сразу az200, и обязательно сдери с работодателя эти 80$
Сделай движок для имиджборды, лол. С админкой и всем таким. Это довольно просто и если опыта нет - интересно.
Если кажется слишком изи - систему управления умным домом. Придется подзаебаться довольно сильно.
Это если у вас дипломы проктической направленности.
Если у вас теоретическая - колоночная субд и имплементация в ней древовидных структур. Сложно, заебистои, интересно. Все отличники - пытаются и обсираются, ограничиваясь связным списокм.
Нейронка для распознавание детей, подростков, взрослых
Мне нужно, чтобы после того, как ArrayQuestions отобразится два раза, код перестал выполняться, иначе возникает ошибка "индекс вышел за границы массива". Я пытался это сделать посредвством "если count пробовал и ArrayQuestions и timer вставлять больше 3, то return. Но код продолжает крутиться, ошибка возникает каждые две секунды если в 12 строчке указать другое значение, то каждое это значение, будто до части кода с if вообще не доходит.
Помоги, добрый анон, умоляю!
> Сделай движок для имиджборды, лол. С админкой и всем таким. Это довольно просто и если опыта нет - интересно.
Ебать у тебя ориентиры ДОВОЛЬНО ПРОСТО
А что не так-то, няша? За полгода-год, которые пишешь диплом - движок борды написать в неторопливом темпе - не проблема. Конечно, если не будешь ебланить это время, играть в дотку, да пивчанский посасывать, а потом, за неделю до сдачи не вспомнишь, что тебе нужна практическая часть, а ты не начинал.
Пиздец. Ну и говнокод.
За 2-3 месяца с ОПЫТОМ можно сделать в расслабленном режиме, только если без фронта. С нулевыми знаниями - ну это думать нужно сколько займет.
Сетевое - это нетворк аппликатион. Т.е. в общем вообще все что по сети можно передавать. Тот же IRC, например, если застал - это свой протокол, клиент и сервер для него - это сетевые приложения и сетевое программирование; торренты - про то же, ну а шире - modbus, dlms, всякие snmp, smtp, sntp т.д.
Веб - это конкретно про HTTP, т.е. подмножество сетевых приложений, повязанных на этом ебучем хипер текст трансфер протокол.
Ну по крайней мере я так это разделение вижу и судя по всему не только я.
> Какие задачи решает asp.net?
Ну, вот ты видел сокеты энти вот. Вот. Представь, что тебе каждый раз, когда нужно ебучую страничку отдать - нужно было бы свой сервер с сокетов начинать пилить, думать про то как ты будешь это говно парсить, роутить, как ты запилишь поддержку всех версий протоколов, еще и решать важную задачу: асинхронно, али ебануть каждому клиенту по потоку или вообще - по процессу. Допустим это ладно. Но ведь тебе нужно будет какую-то динамику реализовывать, отдавать странички, которые генерирует сервер, отдавать те же ебучие жсоны, xml и прочее. Короче, много говна. Так вот, ASP - в свое время решил эту проблему. Началось все с того, что в веб-страничку можно было впихнуть какое-нибудь говно, которое бы сервер мог обрабатьывать, ну и завертелось-закрутилось, сейчас, из-за SPA и огромного количества фронтоблядей - эта фишка уже не так нужна, но вот все остальное что там в контексте веб-сервера нагородили, с фильтрами, роутингом, мидлварями, контроллерами и прочим говном - очень даже удобно и ты свое веб-приложение можешь за 2,5 минуты сделать, просто подключил базу, сделал пару апишных контроллеров и сидишь дрочишь хуй чайки гоняешь, пока фронтобляди - пытаются красиво сделать и дергают за ручки.
О, спасибо за развёрнутый ответ. Вроде картина проясняется.
То есть если бы я хотел допустим стать бэкендером, то я бы мог просто осваивать asp нет и не думать про сокеты всякие там?
>допустим стать бэкендером
ну максимум понимать Stream, если нужно стримить.
Да и в обычном программировании опускаться на уровень сокетов нет причин
Но только это. Про общее понимание сокетов и что происходит - некоторые галеры, где деды сидят - так спрашивают, потому знание - точно не лишним будет. Так что не думай, если изучил уже, что время зря проебал, если знаешь про наты, как там TCP выглядит и чем от UDP отличается, про то что пакеты могут недоходить на практике и прочее - это таки плюсик будет, как минимум покажешь, что интересуешься и все такое. Деды-то, иногда впадают в деменцию и хотят подрючить и показать на собесе, что они-то аксакалы и все такое, ну и если ты пойдешь в отрицалово, дескать, нахуй мне чтоб жсоны гонять - знать как там CRC рассчитывается - могут и попустить. Потому - если изучил нормально - можешь считать что как минимум для собеса полезно, на практике, если не на завод пойдешь, или свой веб-сервер писать не будешь - не пригатдиться.
Вот думаю, что лучше. Склоняюсь к интегратору, там можно прокачаться, и может быть интереснее.
Лол шарп погнался за модными и молодежными ембедед фреймворками? Зачем? Чтобы получит 100500 вариантов решения одной задачи, чтобы путать новичков?
https://codingvision.net/c-predict-random-number-generator-net
Попробовал запустить пример, у меня совпадающих значений совсем нету. Это я что-то делаю не так, или алгоритм формирования случайного числа мог измениться к нашему времени?
Ну, лично мне на самом деле не оч нравится на самом деле. Система с контроллерами и сервисным слоем, как по мне, наиболее логична в контексте микросервисов. Но видимо был запрос какой-то, а может быть просто чтобы выебываться, дескать: смотрите, у нас тоже в пару строк можно.
>to underline the predictability of the random… or better said pseudo-random number generator
Дальше не читал. Очередной вкатыш открывает людям истину, что псевдослучайные числа не случайны. А пацаны то и не знали.
Жаль, но если вкратце, там есть пример кода, где при наличии 55 рандомных чисел последовательности, можно предсказать следующие числа. Только у меня, например, это не работает, а в примере у него реально показывает следующие числа.
Вот я и подумал, мб статья устаревшая и сейчас уже гпсч по другому принципу работает?
Вот ещё такой же пример, но с целыми числами, и он тоже не работает, хотя все пишут что должен работать:
https://stackoverflow.com/questions/39093911/can-random-next-be-predicted-from-its-outputs?answertab=oldest
Если ты про рандом из дотнета, то вот исходники https://github.com/microsoft/referencesource/blob/master/mscorlib/system/random.cs
Твою статью не смотреть, но предсказать, зная то что уже насеяно - возможно вполне.
Исходники уже смотрел, написать что-то своё не хватает скилла. А готовые решения, которых всего 2 удалось найти, не работают.
Еслиб было понятно, какой тип гпсч используется, я бы мб и продвинулся дальше. Но в этом C# какое-то своё решение, в отличие от остальных языков. По сути, там всё должно быть по линейно конгруэнтному методу, но из исходников не понятно, что чему равно чтоб в формулу подставить.
в .net 6 они сменили алгоритм на xoshiro, раньше хз какой был, он менялся от версии к версии за исключением рандома с сидом, в котором используется для обратной совместимости самый хуёвый алгоритм 20 летней давности
https://www.youtube.com/watch?v=mnlnhA0s0Iw
Ни в каком.
Рихтер - душный и читается исключительно когда ты уже вкатился, чтобы джунов попускать, при этом еще и устарел.
А Скит - говно без задач уровня метанита, растянутый на здоровенную книгу.
1) Выучив 5-й будешь иметь больший выбор мест для вката. Плюс всегда сможешь доучить 6-й
2) Вкатыша не возьмут туда на новые проекты с новыми фреймворками. Туда предпочитают брать помидорок с опытом или хотя бы крепких середнячков. Поэтому учи 5-й спокойно и иди копать легаси.
3.2 метра вроде было когда я пробовал.
>>285606
ну а как иначе
asp.net вынужден разобрать тело запроса чтобы создать все эти IFormFile для биндинга.
Вот он и разбирает создавая IFormFile-ы, которые представляют собой Stream-ы, в которые впихнуто тело файла из мультипарт секции формы и если оно до 30кб, то только в памяти, иначе - на диск пишет в темп файл.
(гм. это получается если грузить огроменные файл, то нельзя сделать как в похапэ move_uploaded_file, а именно придется копировать весь файл через CopyTo)
Года через 2.
Но к тому времени уже 8-й выйдет.
Но через 2 года тебя точно так же никто не подпустит к таким проектам. Максимум к тем которые будут переходить с 3.1 на 6 или позднее. Так что тебе все равно нужно будет старые знать.
> 3.2 метра вроде было когда я пробовал.
Как это, так мало? Там же нужно тащить виртуальную машину, она же мегабайт 60 весит?
я начинающий трап
стоит ли вкатываться в шарп? или попробовать другой стэк (не хочу фронт)?
насколько в шарпе толерантное коммьюнити?
в какие вообще компании можно устроиться (бэкенд)?
не погонят ли с работы, когда условно начну приходить в чулочках и менять паспорт?
нет, это не троллинг
Потому что когда ты уже все понял но чутка забыл метанит помогает вспомнить.
Это как справочник.
Потому что когда ты уже все понял но чутка забыл метанит помогает вспомнить.
Это как справочник.
Потому что когда ты уже все понял но чутка забыл метанит помогает вспомнить.
Это как справочник.
А где информация подаётся лучше?
На метаните есть все по си шарпу из основного и без воды.
Любой видео курс для обучения это вода.
Документация от Майкрософт имеет смысл только если знаешь инглишь,
потому что перевод в русскоязычном варианте как будто застрял в 2000ых.
Как итог учить си шарп и технологии либо по книгам всяких олдскульных
мужиков которые ещё более душные либо метанит
Без воды, как и без нормального объяснения принципа работы. Просто скопируй код, а почему именно такой, хуй знает
С чего ей столько весить. В том же блазоре она не 60. А после shrink столько и остается, хелло-ворлд же.
другое дело - старт этого всего на слабых девайсах.
В геймдев вкатывайся. Там таких половина. Ну и да, в РФ геймдев это 99% юнити.
Главное не приставай к коллегам и все будет норм.
На завод - сразу ебнут.
В тырпрайз, как только в чулочках начнешь ходить.
Геймдев - как раз рассадник таких вот.
Какой из них брать, если я, допустим, хочу сделать клон двача?
Насколько я понял Web Api приложение берет данные из базы данных и отдает в виде джейсона и ты можешь написать на чем угодно приложение, которое отображает эти данные, верно же?
А чем Web App отличается от него?
Это просто шаблончики проектов для asp.net (core).
По факту - у тебя есть класс Controller и ControllerBase. Тот что просто контроллер - типа задуман что ты будешь отдавать какие-нибудь разорпейджи и прочее бесполезное говно. Контроллер бейс - допилили до состояния, что ты можешь удобно и без лишних телодвижений срать жсонами. Ну и вместе - там механизм мидлварей и фильтров, который позволяют тебе не ебаться с придумыванием того как авторизацией заниматься, проверять всякую хуйню и т.д.
А относительно вопроса. Ничем кроме темплейта сатртового оно не отличается. Просто в случае WebApp у тебя будет структура проекта со всякими www, pages и прочей бесполезной нормальному бекендеру хуетой, при этом ты вполне дальше можешь забить хуй и пилить на чем хочешь проект, просто это будет то что тебе предложат изначально. С вебапи, если ты ебанат - ты так же без проблем это все прикрутить можешь, делается одной кнопкой, просто изначально у тебя будет только класс Program, Startup(в версиях с минимал апи - выпилили) и папка с контроллерами, дальше - сам что надо делай как тебе нужно.
Для этого подходит и офф документация, нахера идти на метаникт, который не обновлялся сто лет?
Для чтения офф документации тебе нужны довольно базовые знания инглиша, скачай себе расширение для перевода незнакомых слов, через месяц мучений на офф доке сможешь и без него большинство инфы понимать. И это тебе точно пригодится в будущем.
Т.е. нормальная практика срать жейсонами, а фронтэнд прикрутить позже отдельно, например используя реакт или допустим мобильный клиент?
на рейзоне начинал? он же появился только недавно
они мазохисты, им нужно
1280x720, 0:19
я ебанат - ок
Конечно нормальная. Смотри что сами майки показывают, как пример хорошей архитектуры.
https://github.com/dotnet-architecture/eShopOnContainers
Делаешь класс ApplicationContextServiceProvider
Делаешь класс ApplicationContextServiceProviderBootstrapper
У класса ApplicationContextServiceProvider два метода Attach<T>(T service) и AttachFactory<T>(Func<ApplicationContext, T> serviceFactoty) и еще два метода GetService<T>() и GetServiceFactory<T>()
Ну а дальше. Всем твоим классам, которым нужна зависимость прокидываешься ApplicationContextServiceProvider как тебе удобно. И дергаешь. В бутстраппере - заполняешь нужными тебе зависимостями.
Тестировать - изи бризи. Реализовать - две минуты времени.
>Всем твоим классам, которым нужна зависимость прокидываешься ApplicationContextServiceProvider как тебе удобно
зачем этим классам зависимость от ApplicationContextServiceProvider? Им свои зависимости нужны
Ну, я простое решение предложить хотел.
Так-то можно конечно по хардкору:
делаем класс
ServiceDescriptor - класс который описывает зависимость, что за тип, какой интерфейс, время жизни
ServiceCollection - класс в котором эти вот дескрипторы хранятся(контейнер)
ServiceProvider - класс для получение нужной зависимости уже в виде конкретного инстанса метод Get<T>()
ServiceScope - скоуп для контейнера, на случай если мы хотим управлять временем жизни. Можно тут прикрутить пул и переиспользовать инстансы, если нам оно надо, так что можно сделать еще ServicePool
ServiceScopeFactory - фабрика для скоупов, как-то ж скоупы нужно создавать
ServiceBuilder - класс для того чтобы в рамках времени жизни - создавать нужные нам инстансы и прокидывать их в конструктор пользуясь рефлексией
ApplicationHost - наш хост который будет хранить в себе конфиг приложения, коллекцию зарегистрированных сервисов и имеет методы Start, Stop.
Таким образом - в ServiceBuilder - мы будем строить граф объектов которые нужно запровайдить, создавать инстансы и прокидывать туда, куда нужно. Всякие синглтоны - делаем ленивыми, чтобы экономить память. Что там дальше? А, ну да, в ApplicationHost - главный поток ищет то что мы будем считать главными приложениями, допустим мы выделим интерфейс IRunable с методом RunAsync, запускает все это дело и потом ждет, пока они все не завершатся. Как-то так.
Такое нормально запилить уже посложнее будет и лично для себя я бы пользовался ApplicationContextServiceProvider
Суть не в том насколько сложно организован тот, кто собирает зависимости - ему нечего делать в конечных классах подсовывая себя вместо нужных зависимостей. Исключение - фабрики.
> maui который обещает быть супер кросплатформенным и вообще крутым и классным
где обещает? во-первых, это хамарин, который слабее чем WPF по фичам. Во-вторых, поддержка кросс так себе ибо "кому нужно сами пилите".
*обещает по словам самих же разрабов
Так выходит остаётся только wpf и тот под виндовс?
Либо катиться копать веб и геймдев
разрабы говорят, что не хотят поддерживать линукс, что противоречит "обещает быть супер кросплатформенным по словам разрабов". Ограниченно кросплатформенным разве что.
К тому же нужно иметь мак, чтобы кодить под мак
В шарпе нет нормального кроссплатформенного гуи. Либо мощно, но только винда (WPF), либо неполнокросс и слабенько по фичам (MAUI), либо кросс, но своеобразно и глючно (авалония), либо экзотика вида Uno, который вообще хз как работает (как мауи что ли?)
Есть JSON документ, внутри много каких данных, но меня интересует массив словарей formats
И я хочу написать с помощью LINQ разные запросы которые находят данные по определённым параметрам, например я хочу получить элемент, у которого format_note равен 1080p и vcodec avc1.4d4015. Ещё бы понять как сделать без кучи if условие чтобы если не нашло 1080, возвращало 720 и т.д. Сколько я пытался накручивать разные команды по туториалам получал в ответ только новые непонятные ошибки.
Можно было бы сделать тоже самое с помощью циклов, но это быстро приведёт к путанице, а если ещё и нужно несколько параметров. Может стоит взять официальную json библиотеку?
Смысл программы в том, чтобы посчитать сколько потребуется места чтобы скачать множество видео, и показать разные варианты
Ссылка на потуги и json https://dropmefiles.com/mJ4pT
1. Вставляешь всой Json вот сюда (https://json2csharp.com/), конвертишь JSON to C#
2. Копируешь к себе в код, приводишь к C# code style (юзай атрибут [JsonProperty("name")]
3. Делаешь linq-запрос к свойству List<Format> formats:
formats.Where(x => ( x.format_note == "1080p" || x.format_note == "720p") && x.vcodec == "avc1.4d4015").ToArray()
Немного глянул жсон, в Where можно использовать x.format_note.Contains(1080") || x.format_note.Contains("720") т.к там есть форматы 1080p60.. значит есть и другие. Хотя тут сам смотри, LINQ позволяет дохуя чего делать
В пайтоне.
> сюрприз - так будет с любым языком
авалония не требует наличия мака для билда под мак
>А где он есть?
QT и там где он поддерживается
Делаешь себе модельку с твоего жсона(класс с нужными тебе свойствами). Десериализуешь строку с жсоном в свою модельку.
Затем линку
var result = myData.Where(x=>x.format_note == "1080p" && x.vcodec == "avc1.4d4015" || x.format_note == "720p")
//остальная логика
Сишарп типизированный язык.
Если тебе лень модель делать, можешь использовать десериализацию к словарю в виде Dictionary<string,string> и тогда ключем - будет имя свойства, значением - то что там лежит. Проблема такого подхода - с вложенными объектами, которые тебе так же придется десерилазовать и держать в голове, что вот эту хуету - нужно.
мог и динамически. Просто он сам не может вывести тип, но ты мог подсказать через Select или Cast
Что, блин, людям не понравилось-то в этом коде? Можете объяснить?
Реализуй Dispose pattern полностью, добавь финализатор класса и напиши GC.SuppressFinalize(this) чтобы GC не сожрал твой объет случайно так как ты сам хочешь управлять временем жизни.
Я прошел 3хчасовой бесплатный курс по Azure Fundamentals на ютабе. Я написал по этому курсу конспект на 46 страниц, запилил кучу скриншотов и попробовал это все на практике.
скачал тестовые вопросы и ответил НЕ ПРАВИЛЬНО 7/20 раз.
БЛЯТЬ! ВСЕ ЭТИ ВОПРОСЫ НЕ РАССМАТРИВАЛИСЬ В ТОМ КУРСЕ!!!
ПОЧЕМУ БЛЯТЬ?! Какого хуя? Как подготовиться и здать наконец без трахотни
- AZ-900 - чисто поорать, чтоб быть уверенным в своих силах
- AZ-204 - уже по делу - эта хуйня нужна для устройства на работу
АНТОН, ВЫРУЧАЙ
Я как только вижу в конструкторе что-либо кроме инициализации филдов сразу иду бить ебало.
>Так и написал, но там какая-то мусорка, и никто не смотрит
Всё так. На hh всем пох, на superjob часто просят гитхаб/код
Всем пох, но я уже 2 месяц не могу вкатиться. Причём на интервью вроде нормально отвечаю. Нормальные вопросы по типу сколько поколений у gc ни разу не спрашивали, а всякую херню постоянно. Даже на стажёра за 30 тысяч отклонили, это я такой тупой или просто не везёт?
>корзиночка не смогла найти варианты теста и прорешать их
>корзиночка решила реально задротить никому нахуй не нужные данные
https://www.gratisexam.com/microsoft-certification/
пасеб.
>задротить никому нахуй не нужные данные
За года работы я профилирование видел лишь в экзамене. Однако позднее, после того как его зарешал, я начал применять эти знания. Получилось оч круто.
Так и подохну в снг парашах пердоля винформы.
>>289634
Да , для мидла это слишком изи.
Только пункт про отправку емаилов всратый, будь я помощником на хайре, вычеркнул его бы нахер.
>Web сервис долже нпринимать post запрос
Ок, на такое только миддл способен
>Уметь работать с почтой
Ок, на такое только миддл способен
>Добавлять в бд
Ок, на такое только миддл способен
>Web сервис должен принимать get запрос
Ок, на такое только миддл способен
А что в твоем понимании джуниор в асп? Умеющий писать штмл? HTTP запросы и работа с бд это база, это основа любого бэкенд разработчика.
Ладно, убедил. Это я не работал с asp просто
>Как стать уверенным джуном?
А что такое "уверенный джун"? Тот, кто знает по верхам, но быстро разбирается при необходимости?
Тот, кого ждут работодатели. Вроде и джун, а вроде и чего-то не хватает, вот как тут узнать. Опыта работы блять не хватает?
дык, нагавнякать это может каждый, а хорошо написать - другое дело.
>Опыта работы блять не хватает?
Да.
Представь мир розовых поней где обучение где-нибудь в околовузике не пережиток советского прошлого где учат паскаль и бейсик, а нормальное упругое обучение хоть как-то нацеленное на рынок.
При нормальном обучении за 3..4 года ты успеешь пройти как минимум 2...3 'производственных' практики на которых заимеешь нормальный опыт на боевых или около проектах, сделаешь нормальные курсачи и т.д. Т.е. как раз и заработаешь тот самый опыт который нужен работодателю.
И когда ты получишь диплом, и пойдешь на работу, то у тебя уже будет нормальный опыт и ты сможешь со старта уже приносить пользу.
Вот примерно этого и ждут от джуна. Никому не нужен стажер не имеющий опыта. Т.к. по сути нанимая тебя работодатель теряет 1...2 года, пока ты наберешь ту самую практику и знания, которые должен был набрать на обучении. Т.е. по факту работодателю придется взять на себя функции вуза и обучать студента, прежде чем он начнет приносить пользу.
Ну да.
Мне вот только что интересно. Вот я бы сделал как деды и майки показывают, т.е. в контроллере весь код хуйнул. Меня бы взяли из расчета что это же джун? А если бы я наоборот - вынес бы в сервис-леер, меня бы посчитали мудаком, что лишние абстракции для такой простой задачи делает? А если бы я взял тот же HTTPListener, вместо того чтобы контроллеры и это вот использовать? Вот что из этого со стороны потенциального работодателя - хуже и на каком уровне?
>И собеседованиях отказывают
Просто берешь и читаешь Рихтера, каждая вторая галера вопросы задает именно по нему. Да и не галера тоже.
Ну и плюс минимальный набор ASP, EF, SQL, LINQ.
Я как-то задрочил Рихтера, галера-бодишоп отправила на собеседование к заказчику я там раскидал все вопросы, а когда пришло время увольняться из галеры, местный техлид предложил мне позицию сеньера, хотя у меня опыта было полтора года. Но я тогда не пошел кним, ибо у них ставка сеньера была 190к, при средней по рынку 300к.
2 книги именно в таком порядке:
- Джон Скит: Jon Skeet - C# in Depth (4th) - 2019
- Ben Watson - Writing High Performance .NET Code - 2014
Прям делаешь по ним конспекты и учишь всё что там написано. Похуй, будет оно применяться или нет.
- кастомные Task классы
- state machine в yield return с ексепшенами
- асинхронные IDisposable
- обработка исключений в многопоточных приложениях
Да, ты этого нихуя не найдешь в живых проектах, зато сможешь смотреть на некоторых "сеньеров" как на говно.
Ну кто виноват что образование в рашке не работает? Пускай конденсируют это пониженной зарплатой на первое время.
>>290413
На интервью мне не задают настолько сложных вопросов чтоб я прям не знал что ответить, а хотя я знаю. То что в списках "это точно спросят на интервью" даже ни разу не спрашивали про типы по значению и ссылке, про сборщик мусора, про виртуальную машину и т.д.
>>290459
И в чём смысл Джуна который знает какие-то сложные штуки про которые его никогда не спросят и которые не пригодятся при его уровне развития?
Языковые конструкции учатся очень быстро поскольку используются всегда и везде, нет смысла их повторять и задрачивать, они сами задрочатся по мере изучения, но конечно нельзя пропускать мимо ушей практику. Усвоил циклы - пошел их практиковать и экспериментировать.. и так далее по всем основам. Если ты уже умеешь юзать циклы условия итд, то переходи к более сложным вещам.
Книги бро
Потом практика, если сам себе задачку придумать не можешь
Стырь с курсов, только не скиллбокс, лучше у индусов, лол
Ну Троелсен к примеру, но на русике очень старое издание
Параллельно алгоритмы и структуры данных поверхностно подрочить
Потом делаешь простой интерфейс к бд на каком нибудь впф, или аспе
> Потом делаешь простой интерфейс к бд на каком нибудь впф, или аспе
Ну на впф я такое могу сделать. Могу называться джуном значит? Как это точно определить, мне отказываются из-за того, не везёт или чего-то не хватает? Пробовал собеседование уже около 5 раз
Ну видимо ты реализуешь его по каким-то старым паттернам, или вообще без паттернов а тяп ляп
Глянь пример простейшего МввМ приложения на впф, и сделай что-нибудь подобное
Какой нибудь парсер погоды хз, не важно
Главное показать что ты понимаешь концепцию модель вьюха вьюмодель, или на аспе мвс, или апи
Круто если еще и тестами покроешь
Ef тоже плюсом будет
Ну и на гите чтоб это все было
Ждут обычно чего-то такого
>И в чём смысл Джуна который знает какие-то сложные штуки про которые его никогда не спросят и которые не пригодятся при его уровне развития?
Ну это как сказать мол Ерохин и Сычов одинаково угловато вынлядят в костюмах. Вот только на Ерохе костюм сидит, т.к. тот на турнички ходит по утрам, а Сычов пинус в доте сосет дрочит.
Короче в работе это отражается в том, какой код пишет в итоге.
leetcode
Я сейчас тебе на самом деле дам годный совет.
Делаешь мелкий проект через TDD. Проект выбираешь не на похуй, чтобы сделать, а что-то что тебе самому хотелось бы автоматизировать, чтобы ты понимал как этим пользоваться будешь. Даже ебучая поваренная книга совмещенная с ведением учета того что у тебя в холодильнике, если это то что тебе нужно - будет полезнее в плане экспы, чем прога, которую ты вроде как сделал, а не знаешь нахуя и зачем. Потому что по факту, охуенный код, который не решает задачи бизнеса - нахуй никому не нужен, ты сам подумай, с хуя столько вони про легаси и хуевый код дедов, но при этом он - крутится на серверах и им пользуются. А если у тебя будет и охуенный код(полученный через TDD) и еще он что-то полезное делает, то ты в глазах хуев что тебя нанимают - потенциальный менеджер-хуенеджер или тимлид.
Берешь докер и учишь пайплайн(там просто, вечер посидеть поразбираться).
Запихиваешь свой проект в докер.
Все, ты уверенный джун.
Почему именно так? Потому что через TDD ты привыкаешь писать код так, чтобы его было удобно тестировать, а значит выделять интерфейсы удобные для использования.
Так вот. Пописав вот так - твой код будет выделяться на фоне кучи джунов и ты как раз будешь тем самым уверенным джуном.
Книги - хуйня. Но если ты решишь, что тебе таки нужны, рихтера сразу нахуй.
Хочешь сказать, что задачка неинтересная?
https://www.codewars.com/kata/52ffcfa4aff455b3c2000750
Оно и интереснее и больше всяких штук затрагивает, в отличии от литкода, гда даже хард задачки - это конец первого курса вуза. Вот пример что я скинул - это уже как минимум - конец второго. По крайней мере у нас мы такое на втором делали.
Извиняй, просто у нас, видимо, вышло недопонимание. Я, первоначально, когда увидел твой пост, зашел на Кодварс и увидел пик, после этого я решил, что ты просто меня решил обидеть. Но думаю я был не прав, ведь сперва стоит попробовать и только потом уже делать выводы.
А, лол, я не на тот сайт просто попал...
воображаю
ты открыл порносайт, к тебе заехал троян, он загрузил вредоносную программу, твой комп стал ботинком, ботинг управляется с какого-нить сервака или прокси
сервер: всем смотреть какое-то говно на твиче
ботинки: открыть соединение
твич: ого сколько зрителей!...
да такое дети в школах пишут, если честно
>Сотни тысяч сколько, мало что-ли
Где взять сотни тысяч проксей для одновременного использования? А нигде.
>Ну кто виноват что образование в рашке не работает? Пускай конденсируют это пониженной зарплатой на первое время.
Ну кабаны по факту это и делают. Если вкатуну удается устроиться куда-нибудь без опыта, то только за еду.
Вот когда он год-полтора попердолится и оботрется, тогда сможет на что-то претендовать.
По сути 3-х летний студент с нормальной(!) практикой по уровню равен вкатышу после полуторагодовых курсов и тех же полутора лет работы за подачки.
Остальное зависит уже от личных качеств. У кого лучше хардскилы, тот берет умением, у кого лучше софт скилы, тот языком дорогу прокладывает.
>И в чём смысл Джуна который знает какие-то сложные штуки про которые его никогда не спросят и которые не пригодятся при его уровне развития?
Показывает кругозор и уровень. Если кандидат способен интересоваться сложными штуками да еще и понимать их, то с простыми у него точно проблем быть не должно.
Есть база данных SQLite3.
И есть СSharp.
Есть System.Data.SQLite: https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
Есть документация в CHM-файле: https://system.data.sqlite.org/index.html/doc/trunk/Doc/SQLite.NET.chm?mimetype=application/x-chm
И есть библиотика - System.Data.SQLite.dll : https://system.data.sqlite.org/downloads/1.0.115.5/sqlite-netFx20-binary-bundle-Win32-2005-1.0.115.5.zip
Как работать с базой данных, блядь?
Надо создать какой-то cs-файл, чтобы там подключиться к базе, и прописать там методы всяке ебучие, и его потом подключать, верно?
Как называется эта хуйня? Есть ли исходники с чем-то подобным?
Может создать? Только я ебу как правильно эту хуету назвать.
Кода там порядочно во вьюхе и вьюмодели, но, как я говорил, я его пробовал убирать целиком, проблема осталась.
<ContentControl Grid.Row="0" Grid.Column="0" Content="{Binding ObjToolBar,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
Больше даже не знаю, что показать. Показывать просто нечего
ну так посмотри же кто в куче живет
Если уж совсем не смогу решить. Но всё же, как проблема может быть c UI связана? Я этот contentcontrol положил в TabItem TabControl'а, в этом табайтеме у меня уже 2 других контенконтрола лежит и всё с ними нормально. Я эту операцию проделывал уже ёбаную кучу раз и в этот раз я всё сделал как обычно и уже всё что можно перепроверил, просто хуею
Проходил. И если бы он был бесконечным, то всё вообще вылетало бы, а так прога работает, только отжирает 2 гига памяти, вместо 300.
Короче, у меня был Grid.ColumnSpan у ContentControl, я его убрал и память перестала утекать. Почему - даже примерно не ебу, просто абсурд, нахуй
> Каким образом вообще пишутся приложения которые могут создавать такое огромное количество соединений?
Берешь и пишешь
> Ни одного компьютера не хватит чтобы столько соединений открыть с прокси без продуманной структуры
С хуя? Вот буквально на работе нужно было перформанс моего TCP-сервера проверить и отказоустойчивость. Обычное ВПФ приложение, открыл сокет и понеслась. 50к - спокойно открываются, по потребленю памяти - около 100МБ на эти самые 50к(но тут я еще еблан, не периспользую память, никаких пулов и прочего, просто хуяк-хуяк, создал клиенту буффер и туды-сюда елозю), и это не просто открытое соединение, вполне себе шлют по протоколу пакетики, стейт меняют и все такое. Так что я хуй знает с чего ты решил, что не должно хватить мощностей.
Ну а архитектура:
-Core // тут парсер пакетов и все остальное относящиеся к протоколу
-Net
--Connection.cs // обертка над сокетом
-Application // тут прикладной уровень
--ClientAdapter.cs // стейт-хуейт, держит в себе парсер, соединение, при разрыве переподключается, умеет с прокси работать
-Views - единственная вьюшка тут с обычным датагридом чтоб за стейтами следить, настроечки тут же, чтобы можно было задать настройки подключения и всякое разное
-ViewModel
--AppViewModel.cs // тут вьюмодель
EntryPoint.cs // сюда Main запихиваю потому что я хочу так Код void Main(string[] args) => new Program(args).Run();
Program.cs // Приложение собираю тута, там создаем окошко и погнали
Смотри что за объекты выделяются. Удобнее конечно с доттрейсом, но и студийный профайлер пойдет.
Так вот. После того как увидел что - ищи где конкретно.
@Html.TextBoxFor(model => model.DateTimeProperty, new
{ value = Model.DateTimeProperty.ToString("dd/MM/yyyy"),
type = "date"
}
В модели:
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime DateTimeProperty { get; set; }
Бинд проперти я уже специально убрал. В итоге у меня вывод просто дефолтного значения дд.мм.гггг (буквально), хотя в нем находится value в виде 10.02.2022 00:00:00. Как заставить DateTime поле не передавать время, а только дату в html?
Тем более, что 4-ое издание датируется 2013 годом.
Я хотел бы почитать что-то не менее качественное, но более актуальное.
- Jon Skeet - C# in Depth (4th) - 2019
- Ben Watson - Writing High Performance .NET Code - 2014
алсо, не понимаю, тех кто читаю рихтера. там про 4.5
Ну, что-то типа того.
Что надо делать, чтобы работать с базой?
Подключиться к ней, открыть соединение с ней, и дальше читать SQL-запросы из ввода, исполнять их и возвращать результат, в виде таблиц, значений всяких, с разными типами, и так далее и тому подобное.
Добавлять данные туда, вставлять строчки, обновлять их, и всякое такое. Делать CRUD всякий с базой.
Вот, что-то подобное хочу написать, и залить на гибхаб. Токо не знаю как назвать эту парашу ебучую.
дак ты сначала напиши очередную админку для баз данных, а уж потом про название подумаешь.
без них это как? написать свой MVVM фреймворк? Так для его написания нужен опыт работы с ними. А без MVVM это ж вам не винформсы = стрелять себе в ноги
Зачем. Все равно первые 500 постов набегают разные расто- джава- делфи- и прочие шизики и засирают тред до бамплимита. Зато потом можно спокойно общаться один хуй куда он с тематики денется.
>Даже для очень простых приложений нужен фреймворк?
Ну никто не запрещает кодить все как будто с винформс работаешь, но это мазохизм. Даже для простых приложений.
>Почему его из коробки тогда нет?
https://docs.microsoft.com/en-us/windows/communitytoolkit/mvvm/introduction
>https://docs.microsoft.com/en-us/windows/communitytoolkit/mvvm/introduction
А какой их них вообще самый простой?
хз. обычно выбирают же по обратному принципу "какие возможности".
Я начинал с MVVM Foundation. Почитал их код и вникнув в example app отформатировал мозг на понимание MVVM.
А дальше...да все фреймворки как братья, где в каждом что-то по своему сделано.
Для меня же все они обладают фатальным недостатком - у них weak модель управления жизнью всего
хотя у майков какой то странный фреймворк. дока так все по верхам как то. Непонятно как навигация, как вьюмодели создавать, как и кто меняет IsActive для вьюмоделей (даже если это UWP, то кто меняет?), не все есть, но есть и не раскрыто лишнее вида AsyncRelayCommand и т.д.
Зато раздел по перфомансу, причем на уровне будто это хайлоад сервер код какой то пишем.
Уже написал.
Это не админка, а просто консольная хуйня, в одном cs-файле, принимает sql-запрос через Console.ReadLine(), выводит данные и пишет их в лог. Есть также пара методов для возврата значений разных типов, datarow, datatable там, блобы, вот это вот всё.
Под каким именем сранину вхуярить на гитхаб - даже не знаю. Как это говно назвать?
Насчет админки, я вижу в OpenServer есть некий SQLite Менеджер, доступный по URL.
Но это не совсем то, что у меня.
Назови ее пупса
Выбор имени - сложное дело. Искать говорящее про функционал имя и свободное, и не выглядело банальным типа SqlRequesterLite...бяка
А постороннее... А какое?
Поэтому пупса. Спросят тебя "а что это значит". А ты скажешь "анон подсказал"
Да свой напиши, раз уж захотелось чего то другого
>Jon Skeet - C# in Depth (4th) - 2019
Я так понимаю, это всё есть в электронной форме?
https://csharpindepth.com/
где хочешь. можешь с амазона бумажный вариант заказать
Как у настоящих матерых программистов принято писать код в таком случае?
ну if(exception!=null) точно не нужен
Там новый сахарок в виде bang-bang оператора завезли, попробуй его использовать. Потом расскажешь.
В смысле с дот нет 5 на дот нет 6? а там будет работать?
Но на самом деле не важно, я не могу вот так взять и просто сменить фремворк, у меня все поломается
почему я никак не могут передать сраный стринг
/
ВООБЩЕ НАХРЕН!
даже это
$.ajax({ url: _SetQuickReservationUrl, data: "test", type: 'POST' });
или это
$.ajax({ url: _SetQuickReservationUrl, data: {serializedInputs :"test"}, type: 'POST' });
Собственно я к тому же склоняюсь, я это делаю в апи контроллере, его недавно начал использовать
Показываю только один раз. Запоминай.
Лень устанавливать сигналр, но ты думаю не тупой, все поймешь.
Да, походу еще нет. Сорян, лоханулся, в конфе прочитал новость и потом уже только посмотрел. Но срачик на гитхабе знатный на эту тему.
Т.е. я помню названия, я помню как погуглить, что какой сложностью обладает, когда то, когда это применять. Но вот как оно написано - реально уже не помню.
Стоит ли освежить эти знания, если я собираюсь походить по собесам? Или теперь таки буду про проекты спаршивать и это вот? Слышал раньше, что после того как есть реальный опыт - начинают про него спрашивать, но чет сам думаю, что чтобы быть спокойным - следует таки поелзать-посмотреть на кишки.
>Стоит ли освежить эти знания, если я собираюсь походить по собесам?
Лишним не будет. Иногда спрашивают. Но в основном таким джавистов ебут. У шарпистов обычно максимум спрашивают как List под капотом устроен.
>Назови ее пупса
>Поэтому пупса. Спросят тебя "а что это значит". А ты скажешь "анон подсказал"
Заебись название. Мне нрав.
PUPSA - Program Usage Providing SQLite3 Access.
Тут говнокод, короче: https://github.com/username1565/PUPSA
Можете оптимизировать, дописать, потестить, а то и вовсе переписать. Предложения/пожелания - в issues.
>https://docs.microsoft.com/en-us/windows/communitytoolkit/mvvm/introduction
Так это ж для UWP, а не WPF.
>да ни в какой. поставь редиску между фронтом и бекендом и все
Ну неее. Данные из Country используются для валидации и определения дальнейших действий, т.е. юзеру могут лететь разные ответы
ну их "а давайте все сделаем свое ибо фатальный недостаток" - у них стала абсолютной сильно позже рождения WPF
С хера ли мазохизм? Винформы - топ за свои деньги. Прост как молоток. Понятен даже дебилу. Куча готовых компонентов, спиздил вопхнул себе и в ус не дуешь.
Пилить что-то на винформах, не обмазываясь фреймворками за пределами самого .net - легче легкого.
Фатальный недостаток форм это то что поддерживать и кастомизировать это дело чуть сложнее.
А причем тут вообще винформсы, если речь идет о WPF
>не обмазываясь фреймворками за пределами самого .net - легче легкого
Ага, плодя портянки в code-behind ибо это дефолтный путь для винформс. Если захочется чистоты, то прикручиваем MVP
Но в WPF изначально сделана крутая система биндингов и писать в стиле винформс (лезем к контролам напрямую, да все в code-behind) - мазохизм.
Есть ли смысл искать стажировки в мск, будучи студентом, или лучше смотреть в сторону джуновских вакансий? Насколько вообще глубоко опрашивают на собесах? В портфолио 1.5 проекта на винформах с ef-ом, в основном курсач вузовский
мы же блять любим печатать, private readonly URETRAServiceProviderManagerContext ___________service1
private readonly GOVNOEBANOEApiControllerTvoeuMamiContextAttribute _services2
не забудь добавить ридонли или вижла будет срать желтым поносом, конечно, защита от дурака в этом классном языке ведь кто-то же догадается переопределить эти поля
> dotnet watch run
>[info] Microsoft.ShlyapuSnimau.Kogda.Vi.Pochinite.Cveta.V.Etom.Ebuchem.Govne
Дополню:
Нахуя нам нужна перегрузка операторов? Кто ей пользуется?
Спасибо, мелкософт, теперь в одниx ифах obj is null в других используем обычный ==. КРАСОТА
Вот есть файлы с исходным кодом программы, которая вычисляет что-то полезное.
Есть ресурсы. Например экселевская табличка и она же, конвертированная в формат csv. Иногда картинки, которые отобразятся на WinForm'е.
Есть файлы с исходным кодом тестов программы на корректность работы.
Есть файлы с исходным кодом тестов алгоритмов на производительность (где проверяется, что сравнительная скорость работы соответствует ожиданиям, и нет где-то внезапной просадки скорости вычислений в 10-100 раз).
Есть файлы с исходным кодом простых примеров использования кода программы. Обычно я вычислительную часть делаю отдельным проектом и отдельным проектом делаю GUI + чтение и сохранение исходных данных. И вот есть пример кода, типа Getting started, для кода вычислительной части.
Есть файлы с документацией. Сейчас в файлах MS Word. Там текст с перекрестными ссылками, оглавлением, формулами, набранными в редакторе формул, картинками (фотки/сканы листочков с формулами и схемами или просто всякие другие картинки). Так же в документацию входят файлы Excel, где какие-то промежуточные вычисления для наглядности реализованы формулами Excel, чтобы легко всё увидеть, как считается, и что получается.
Вопрос. Как всё это грамотно хранить по папочкам на диске, по проектам и решению/решениям? Как называть? Есть какие-то лучшие практики? Чтобы легко было ориентироваться, и человеку со стороны было понятно, чтобы ничего не терялось и сразу находилось там где ожидаешь. Чтобы минимально плодить сущности.
Я вроде тупорылый гуманитарий, но Шарп это тот яп, который освоил для автоматизации своих рутинных задач (пусть и без кроссплатформы) и мне чуть ли не физически приятно писать на нём - я, блять, такой кайф ловлю, когда что-то большое заканчиваю
Пробовал освоить все эти "дружелюбные к новичкам и тупым" жаваскрипт и пайтон - меня почему-то смущает динамическая типизация, хотя в PHP меня всё устраивал и опять же мне чуть ли не физически неприятно с ними работать, лол.
Как так получается - для меня шарп оказался наиболее интуитивно понятным или просто повезло, что мне хороший ментор попался с пачкой литературы, разделённой по уровням?
Двачаю, шарп мой первый ЯП и надеюсь последний, уже не представляю свою жизнь без LINQ и другого сахара. Тоже смотрел пайтон чтобы помогать мл. брату готовиться к ЕГЭ и это пиздец, насколько же конченый синтаксис и типизация. Жс еще хоть Си-подобный.
У Васи есть X белых и Y чёрных квадратных клеток паркета. Он хочет составить квадрат наибольшего размера. Любые две соседние по стороне клетки этого квадрата должны иметь разные цвета. Угловые клетки квадрата могут иметь какой угодно цвет. При изготовлении квадрата не обязательно использовать все имеющиеся клетки.
Какой самый большой квадратный паркет сможет составить Вася?
Например, если X = 3 и Y = 3, то вывод 4 (поле 3х3, наибольшее - 4)
Два раза проходил стажёром, тупо отказали. Лучше уж джуном на не полную ставку
Тричую. До шарпа перепробовал несколько языков, но остановился именно на нём, сразу понял, что это моё. Просто эстетически даже импонирует. Даже логотип приятного цвета, сине-фиолетовый, не то что кофеек жабовский. Даже naming conventions — всё с большой буквы, методы, свойства, файлы, папки. Охота распрямить спину, когда пишешь на шарпе.
перебробовал с 10+ языков и у меня 3 лидера
питон - нормальный там синтаксис и сахар из коробки (учитывая на каких простых концепциях оно все построено), самая быстрая скорость кодирования "думаю о проблеме, а не о том "как б... в этом языке ее выразить". Ну и батарейки конечно. для прототипов и быстрых вещей.
шарп - в разы медленнее кодить чем на питоне (больше нужно думать о языке, а не только о задаче), но по возможностям выражения такой же мощный, хотя более многословный, нормальные потоки и быстрее. меньше либ. Для фундаментальных вещей.
котлин - очень выразительный и лаконичный язык. приятно на нем "выражаться затейливо", а уж сила этой выразительности вовсю проявляется в jetpack compose (описание GUI под андроид) - шарп бы там выглядел куда более коряво (пример корявости - тот же флютер). У меня от него синтаксический экстаз...ну пока дело не касается "а вот ушки жавы торчат хаха".
>В портфолио 1.5 проекта на винформах
В современном мире тем у кого есть деньги на стажеров, винформы нахрен не уперлись, а у тех кому уперлись денег на стажеров нет.
Учи asp.net и прочий веб. Ну или хотя бы WPF если именно в десктоп хочешь, с ним хоть что-то еще поймать можно.
>у кого есть деньги на стажеров, винформы нахрен не уперлись
Тут скорее дело в том, что проекты на формах намного более стабильны. Ни о каком динамично развивающемся проекте на винформах в 2к22 и речи быть не может.
Это браузерный скот готов терпеть любые унижения новыми интерфейсами и редизайнами, придумываемыми каждые полгода по инициативам менеджеров, которых без бурной деятельности без бонусов оставят.
Коммерческие проекты на формах начаты обычно очень давно, может быть и 15 и 20 лет назад, используют их консервативные корпоративные клиенты. На таких проектах просто никогда не возникнет нужда в срочных, внезапных, глобальных изменениях, которые можно было бы закидывать стажерским мясом. Да и джуны тут не очень нужны. Фичи медленно и планомерно пилят понурые скуфы 40+. К молодому, упругому и бесполезному отношение будет не очень.
1. Не использовать буффиризацию стрима(приводит к тому что флашится он когда буффер заполнен, а это приводит к тому, что иногда сообщение лога не полностью выводится, пока буффер вновь не заполнится)
2. Не захватывая файл все время(нужно смотреть что он достиг лимита на размер лога и удалять старый, при захвате файла с этим проблемы)
Да, я знаю что как-бы да, велосипед и все такое. Но такое дело. ПО что пишется - пишется под определенный протокол, в протоколе заложены свои логи(можно считать скоупами в привычном смысле) и свои уровни(их там 15, и обычным адаптером придется сверху уродливую конструкцию мутить для того чтобы парсить лог при запросе последних данных из него, а чтобы быстро было - проще хуйнуть sqlite базу, в которой эти уровни будут отдельной табличкой, на а экономить место можно храня только уникальные записи эвентов, таким образом - сама таблица с логами выглядит примерно как: id, dateTime, eventId, level, scope)
Так вот. Если я включаю уровень trace в своем логере, а в приложении идет активная хуйня, то логгер без буффиризации и захвата файла - начинает работать пиздецки медленно, задержка может достигать нескольких минут, что мне кажется неоч. Но как без этого сделать быстрее - я не знаю.
>что иногда сообщение лога не полностью выводится, пока буффер вновь не заполнится)
буфер сообщений переполнился - запись с флушем. хз где тут не полная запись
>при захвате файла с этим проблемы
ну так расхвати и сделай ротацию. У тебя там многопоточный доступ к файлу что ли.
Ну а я бы поспорил.
Во-первых, плюсы - пизже в плане возможностей. Когда берешь плюсы - прямо чувствуешь себя программистом настоящим. У тебя полный контроль над всем. Хочешь вывести в консольку анимешную картинку - да изи, никаких проблем, взял хендлер окна, из памяти загрузил картинку, чики-брики у тебя в консольки анимешная девочка. Чтобы такое сделать на шарпах, ты либо unsafe и винапи тереби, либо бери чью-нибудь либу, которая это же делает.
Хочешь вычислений на видяшке - тоже изи бризи
Проблема плюсов только в том, что туда как в топовый спорткар заложили просто дохуища всего, что в целом-то и не нужно среднестатистическому кодеру. Ну, и этого слишком дохуя, чтобы нормально освоить даже за года практики. А в остальном - плюсы - лучший язык. Низкоуровневый, оопшный, удобный. Люблю плюсы. Жалко что за них тута платют мало, так бы в них пошел.
> У тебя там многопоточный доступ к файлу что ли.
Ну да. По протоколу клиент может запросить данные за диапазон времени для определенного скоупа определенного уровня. Нужно будет прочитать из файла чтобы сформировать ответ. В это же время логгер должен будет писать в файл.
ну пусть пишет. какая проблема? винда что ли?
Ну ты же понимаешь, что ЭТОДРУГОЕ?
Для какой-нибудь МК я не буду на шарпе писать, а на плюсах или чистом си - это очевидно вроде
На плюсах тебе ровно также надо будет винапи дергать.
Фишка в том, что на шарпе сейчас можно писать в ансейфе код прямо как на чистом С, и память нативную выделять. Т.е. ты в рамках одного языка в одном месте пишешь низкоуровневый код, а в другом месте, буквально в соседнем файле - нормальный божественный шарп во всей его красе. Можно поизучать стандартную библиотеку шарпа, там почти везде примерно так и делается.
>>295779
>>295833
А можно я вам тупой вопрос задам? Я ньюфаг, есть мысль написать приложение виндовое одной направленности. В начале пробовал питон, вроде всё понятно было, но решил дропнуть из-за направленности в бэкенд и нежелании ебаться с костылями. Начал смотреть уроки по шарпу. В начале полное ощущение того, что всё просто и понятно, а местами "ёпт в питоне почти точно так же". А потом смотришь урок и башка гуманитария взрывается от синтаксиса пизда.елда.хуйзалупа(сосибибу.пизда.елда).
Это мне кажется и надо брать яйца в кулак и просто разбираться, всё не так сложно, или реально про сравнению с питоном, щарп - ебаное нагромождение?
А что сложного в
> пизда.елда.хуйзалупа(сосибибу.пизда.елда)
Это же наоборот удобно и просто.
Захотел добавить модальное окно. Создал окно, класс, но View никак не хочет ничего привязывать из ViewModel. Названия файлов 100% совпадают EditView.xaml и EditViewModel.cs. В чём проблема?? Тоже самое написал в ShellViewModel и там всё работает. Как вызываю окно на последнем скрине.
Это приложение для контактов, хочу показать окно чтобы посмотреть данные о контакте и отредактировать его если нужно.
>пизда.елда.хуйзалупа(сосибибу.пизда.елда).
это у тебя синдром утенка (брехня - на самом деле непривычность к разным парадигмам разных языков)
У меня была ровно обратная ситуация. Я привык в шарпе из классов, как из кубиков собрать структуру, которую пнул - и оно поехало.
А в питоне такое ощущается противоестественно. Конечно я такое видел, но как то чужеродно. В питоне же есть модули, и можно без классов писать (а в шарпе методы не могут быть без классов), к тому же куча вымученного синтаксиса вида list(map(reduce или i for i in ...
В итоге перестал со своим уставом в чужой монастырь и стал писать "как удобно в конкретном языке"
кстати у меня с котлином было то же самое. Я кучу языков и парадигм переварил, но котлин ну никак в голову не шел. А потом тут на дваче нашел "котлин для питонистов" и я такой "а зачем я пытаюсь искать аналогии с шарпом, если котлин = рубипитон с типизацией" - и тогда очень все хорошо пошло.
За MessageBox в ViewModel стегать нагайкой
>про сравнению с питоном, щарп - ебаное нагромождение?
Ну в некоторых местах нагромождение. Но ты бери во внимание что в c# удобнее писать из за того что у переменных есть типы, будет меньше ошибок во время работы, подсказываются методы, а ещё язык намного быстрее работает. Золотая середина по мне
>>296380
Этот метод не принимает строку, тебе надо Double.Parse()
Есть один файл, структурированный по-питоновски (подэлементы дерева отбиваются табами).
Хотелось бы узнать, есть ли в природе парсеры общего назначения, в которые я бы загрузил свои правила и он бы мне мой файл конвертнул в ЖСОН.
я не знаю что там в калибурне, но вот на 3 скрине ты создаешь окно и вызываешь его показ, но нигде не ставишь у него DataContext
Да уж побольше чем на Go или Котлине
Одновременно с этим начинаю поднимать уровень английского, пока что самостоятельно по Мерфи, позже запишусь к репетитору.
У кого-то тут был опыт таких подготовок к собеседованиям?
>По синтаксису вроде все подтянул
Вот тебе задачка с собеса.
Как из словаря <string, object> достать элемент независимо от регистра ключа? Например в словаре у тебя ключ "Zalupa", а в запросе "zAlUpA". Доступа к созданию экземпляра словаря у тебя нет.
>Второй месяц готовлюсь к собеседованию на одну компаний с джинни.
>У кого-то тут был опыт таких подготовок к собеседованиям?
Что за компания которая готова ждать полгода, пока ты подготовишься к собесу? Или это стажировка за еду какая-то?
За полгода-год, в принципе, можно и в какую-нибудь мелкоконтору вкатиться за плюс-минус нормальный прайс.
.Where(x => x.key).Where(x => String.ToLower(x)).Where(x => x == "zalupa")
>Обойти все ключи и найти нужный.
На такой ответ первый же вопрос будет: как ты будешь ключи обходить? Даже могут на листочке код попросить написать.
Все, спасибо, я пошел это в прод вставлять.
dic.Keys..Select/Where
dic.Select/Where
да хоть тупо в цикле, а на вопрос "почему не LINQ" отвечать "так быстрее, LINQ тормоз, такова моя вера"
Вот будет весело тебе, когда попросят по шагам расписать, что этот код делает (и да он работать не будет)
Судя по количеству ответов никто такой хуитой не занимается. Я вчера гуглил километры матана, голова вспухла от парсеров, лексеров и прочей красноглазой дряни. В общем, сваял свой парсер. Однопоточный, говновсратый, ифами-ветвящийся швайнопарсер. Над 15 кб файликом пыхтит джве минуты. Сойдёт.
>так быстрее, LINQ тормоз, такова моя вера
Кстати на нормальных собесах сейчас ебут за сентенции вроде "X медленный поэтому я использую Y"
За последние два года в .net столько всяких оптимизаций наебенели, что такие фразы однозначный признак, того что собеседуемый завис где-то в 2017-м году.
> Как из словаря <string, object> достать элемент независимо от регистра ключа? Например в словаре у тебя ключ "Zalupa", а в запросе "zAlUpA". Доступа к созданию экземпляра словаря у тебя нет.
foreach (var item in tvoyDict) if (item.Key.ToLower() == "zalupa") return item;
Мне перезвонят?
> .net столько всяких оптимизаций наебенели
наебенили, да не везде. LINQ все равно проиграет в оптимизации и в количестве аллокаций.
Более того, если бы все было именно так, то дотнет не предлагал бы такое количество штук для оптимизации.
Берёт наш словарь и извлекает только ту часть которая слева, ключ (string)
Преобразует этот ключ во все нижние буквы
Теперь отфильтровывает только ключи с нужным названием
Не работает, тогда надо в визуал студии проверить
> и извлекает только ту часть которая слева
А тебе надо ключевую пару отдать. Вот ты и объебался.
правда тут не отличить "значения нет" от "значение null" так что цикл удобнее будет
foreach (var item in tvoyDict) if (item.Key.Equals("zalupa", StringComparison.OrdinalIgnoreCase)) return item;
Вот теперь точно перезвонят.
Спасибо, анон.
нет. скажут "а че не StringComparison.CurrentCultureIgnoreCase". ты надеешься что в кеях будет только латиница. Ты что - оптимист что ли? Оптимисты нам не нужны. Нам нужен надежный код.
с unsafe можно многое
public class Program
{
const string constanta = "zalupa";
public static unsafe void Main(string[] args)
{
fixed (char* p = string.Intern(string.Concat("zal", "upa"))) p[0] = (char)0x10;
Console.WriteLine(constanta);
}
}
даже проще
public static unsafe void Main(string[] args)
{
fixed (char* p = string.Intern(string.Concat("zal", "upa"))) p[0] = (char)0x10;
Console.WriteLine("zalupa");
}
значит меня склероз не подводит что все хардкор строки - интернированные
не говоря уже о том что string.Concat и не нужен - можно прямо значение писать и сразу в интернированные попасть. А string.Concat только для примера чтобы была видна суть
то есть в дебрях делаешь такое, да еще чтобы срабатывало не сразу и рэндомно
fixed (char* p = "zalupa") p[0] = (char)0x10;
и увольняешься.
>Меняет букву z на символ перевода каретки?
ничего. не хотел париться с юникодом, потому просто взял непечатный символ
А дает это вот такую отладку.
на скрине условие не сработает. Но попробуй догадайся почему.
а также Sprache, где можно описывать все в шарпе, но есть ограничения, и PEG вместо ANTLR
Тебе ответили.
Но если там просто дерево обычное и типа его узлы, то самому написать такой парсер - дело 10 минут же.
То опечатка. Я имел в виду удаленку в любую забугорную компанию с перспективой релокейта и зп больше 2.5 к.
Там это... PUSDE - PISDA
Привет, двачата.
Начал изучать си шарп с абсолютного нуля. Из знаний программирования только школьные уроки паскаля, которые я тоже забыл, так что уровень моей осведомленности, думаю, можете понять. Щас смотрю уроки по каналу SimpleCode да, реклама на ютубе, прохожу методы. Доволен собой, что понимаю хотя бы 70% из материала, но без тупости не обходится. В видосе дадя говорит, что для примера Console.WriteLine не возвращает никакого значения, только символы на консоль. Мне как раз не понятно, что такое "возврат значения" и почему тот же Console.WriteLine ничего не возвращает, а делает что-то там внутри себя. По моей текущей логике я вижу, что Console.WriteLine выдает мне на консоль символы, то есть для меня это и есть значение, которое мне вернули. Может кто мне объяснить, пожалуйста, почему Console.WriteLine ничего не возвращает и в чем суть возврата чего-либо?
//void - ничего не возвращает
private void DoSomething(){
}
//int - возвращает целое число
private int GetSomeValue(){
return 123;
}
// где-то в другом методе можно сделать такой вызов:
var someVariable = GetSomeValue(); //в переменную someVariable запишется 123
DoSomething(); // а вот тут просто вызов метода который ничего не возвращает (void)
По аналогии с человеком.
Ты сказал человеку купить бутылку воды, он пошел купил и дал тебе бутылку воды.
В другом случае ты сказал купить бутылку воды, он пошел купил но тебе ничего не отдал.
> в чем суть возврата чего-либо?
Когда у оператора return есть аргумент, происходит ВОЗВРАТ.
Как написал анон выше:
>>298942
> Ты сказал человеку купить бутылку воды, он пошел купил и дал тебе бутылку воды.
water BuyBottle(int amount) { return amount; } // Возвращает воду.
water myWater = BuyBottle(1); // Nice!
> В другом случае ты сказал купить бутылку воды, он пошел купил но тебе ничего не отдал.
void BuyBottle(int amount) { return; } // Ничего не возвращает, или как говорят англоязычные, "возвращает ничего".
BuyBottle(1); // And what?
Ну а чей? когда делали шарп конечно делали "пилим свою жаву", но никто в заложниках членов семьи не держал и не заставлял делать именно как там не подумав.
А нам теперь разгребай это.
>>298942
>>299055
Ну то, что именно войд не возвращает значения, я, допустим, понял. Пример с бутылкой тоже понятен. Однако, я не понял почему Console.WriteLine не возвращает ничего. На тех же примерах, я передаю консоли (человеку) команду написать строку (купить воды), результатом у меня строка в консоли (вода в моих руках). Эта же строка работает по умолчанию в static void Main(string[] args), то есть войд мне что-то возвращает. Вот так я понимаю. Если неправильно, объясните, пожалуйста, еще раз
да елки палки
возвращаемое значение - значение которое может вернуть метод, как результат своей работы, если он может сформировать такой результат и в этом есть смысл.
а что делает метод - его личное дело
>о есть войд мне что-то возвращает
попробуй
var result = Console.WriteLine() и пусть тебе компилятор пояснит что такое void
>По моей текущей логике я вижу, что Console.WriteLine выдает мне на консоль символы, то есть для меня это и есть значение, которое мне вернули. Может кто мне объяснить, пожалуйста,
Ты различай себя который кодит и себя который смотрит на окно консоли - это разные люди.
Первый дает команду Console.WriteLine, которая что-то куда-то отправляет. Может быть в консоль, а может еще куда. Ему похуй. Он отдал данные - метод их отправил и все, обратно в _программу_ он ничего не вернул.
А вот второй сидит и пялится в окно, в котором по волшебству возникают буковки. Никаких программ, кода или еще какой-то программерской вуду-юду. Просто смотришь в экран, а там картинка меняется. Чудеса.
> результатом у меня строка в консоли (вода в моих руках)
Нет. Строка в консоли, это пока челик ходил в магаз, по пути написал ХУЙ на заборе. А вернувшись воды тебе не дал. Потому что void.
>На тех же примерах, я передаю консоли (человеку) команду написать строку (купить воды), результатом у меня строка в консоли (вода в моих руках).
Нет, чувак!. В твоих случаях будет так:
В твоем случае "строка в консоли" != "вода в моих руках"
"Строка в консоли" == "вода в руках чувака, который за ней ходил".
Чтобы эта вода оказалась в твоих руках, тебе нужно дать другую команду.
Вот если бы ты выполнял какую-нибудь метод Console.WriteLineAndGetResult("купи водой") который возвращает значение, то ты бы получал какие-нибудь данные, но не те же самые которые вывелись в консоли. То что вывелось в консоли это часть самого путешествия за водой, а не его результат.
> почему Console.WriteLine не возвращает ничего
Потому что индусы в майкрософт сделали именно так.
А вот помнится ,в былые времена, в МС любили делать функции, которые возвращали код выполнения, то есть, если бы шарп был запроектирован как диды кодили, то было бы int WriteLine(...) и ты бы мог написать что-то типа:
> if ( Console.WriteLine("Купи воды") == ErrorCode.OK )
> // Oll Correkt
> else
> // OMG samsin wrong
>> if ( Console.WriteLine("Купи воды") == ErrorCode.OK )
>> // Oll Correkt
>> else
>> // OMG samsin wrong
Вы, блядь, поехавшие тут что ли. Нахуй вам вообще такая конструкция, в применении к консоли? Это команда в стиле "отправил и нахуй забыл". Или вы какие-то хитрые колбеки от консоли ловить хотите на простой вывод меседжа?
вывод в консоль это не возвращаемое значение,а выполняемая работа. Оно выводит в консоль и при этом код может выполняться на сервере где никакой сессии с консолью нет и никто не смотрит вовсе
>(вода в моих руках)
это как раз то что метод бы вернул тебе.
А метод Console.WriteLine("вода в моих руках") это всё равно что если бы человек, которого ты отправил за водой, крикнул на всю улицу "Вода в моих рука!"
>А метод Console.WriteLine("вода в моих руках") это всё равно что если бы человек, которого ты отправил за водой, крикнул на всю улицу "Вода в моих рука!"
Ну точно ебанутый. Console.WriteLine, это аналог команды "напиши на заборе...". Ты же почему-то ожидаешь, что когда ты дал команду НапишиНаЗаборе("Хуй"), этот "хуй" у тебя мистическим образом в руках окажется.
не знаю причем тут вообще консоль. В моем сообщении на "проеб с void"не было ни слова про консоль, ни ссылки ну любой чужой пост где бы упоминалась консоль
Так я и не ожидаю ничего в руках. "Крикнуть", тоже самое что и "написать на заборе". Это просто один из способов передачи текста.
Я думаю ты не тому анону ответил. Я же наоборот пытаюсь объяснить тому анону, в чем суть метода WriteLine()
Так, то есть, если результат возврата значения, это вода в моих руках, то как это выглядит? Не понимаю тогда как с точки зрения программирования вода действительно находится в руках, а не просто сообщает мне, что она в руках.
Если я создам калькулятор в консоли, сосчитаю 2+2, то 4 будет результатом или чем-то другим?
>Не понимаю тогда как с точки зрения программирования вода действительно находится в руках, а не просто сообщает мне, что она в руках.
Ну, вообще C# только лишь сообщает тебе о том, что метод вернул какое-то значение, поскольку само значение лежит где-то в ебенях памяти. Т.е ты имеешь только механические руки, в которых находится результат выполнения метода, но если ты достучишься до области памяти где твой результат находится, то фактически возьмешь в руки сам результат.
>Если я создам калькулятор в консоли, сосчитаю 2+2, то 4 будет результатом или чем-то другим
Да, это будет результатом выполнения твоего алгоритма. По сути любой код это алгоритм. Группы схожих алгоритмов можно группировать в классы, а сами определенные алгоритмы(т.е не посредственно "рабочий" код который там что-то считает умножает в хуй ебется) - в методы
ну сказали же. возвращаемое значение - то что возвращается через return, этот результат можно получить после вызова метода, сохранить в переменную, намазать на хлеб, свернуть и засунуть в, забыть про него и так далее.
метод может вывести в консоль, сохранить в файл, написать на заборе, проорать во весь голос в магазине - это не возвращаемое значение (хотя бы потому что чтобы его получить нужно делать дополнительные телодвижения)
самое эффективное это что то кодить реальное (неважно какой степени полезности) с учителем у кого можно спросить "а как тут правильнее". Сильно хуже - вместо учителя гугл. Ну а книжки читать по диагонали для построения индекса подходов в голове. Ну еще и чужой код активно изучать сильно лучше чтения книг.
Ютуб - сильно медленная подача и не спросить детали
И где взять такого учителя? Частенько возникают вопросы не только как правильнее, а как вообще это сделать и почему не работает. Гуглёж не особо помогает. Сюда кидаю но не часто отвечают
>а как вообще это сделать и почему не работает.
это и есть "как правильнее"
>И где взять такого учителя?
устроишься на работу джуном - будет тебе такой. Правда будут заставлять тебя делать что нужно им, а не интересно тебе...издержки работы
Хз где таких искать. Даже если кто не против - на том де SO сидят же многие и отвечают на вопросы, потому что им это просто в радость, но при этом чтобы у такого было время на тебя...хз как.
ну а самому...когда сам что то делаешь и запнулся ибо нет опыта "как" и мысль вообще не идет, и гуглить запарился, а на SO писать - хз как выразить, да и ждать долго...понимаю
потому самое эффективное в таких условиях (для меня точно) - читать чужой код нарабатывая базу "эна оно как можно то". Ну и читая разные статьи - в них (нормальных) больше крупиц пользы на объем, чем в книгах.
Еще конечно можно писать свои велосипеды (либы, фреймворки - потому что сложно придумать "что бы написать полезное"). Получатся будет убого, но это не имеет значения - будут закрепляться знания и подходы.
>Если потом попробуешь самостоятельно что-то исследовать не будет понятно, придётся всё постоянно гуглить.
Это основной навык. В голове всё удержать не получиться. Нужно уметь искать информацию в интернете.
>устроишься на работу джуном - будет тебе такой. Правда будут заставлять тебя делать что нужно им, а не интересно тебе...издержки работы
Да мне всё равно что писать. Меня просто не берут на работу, якобы я чего-то не знаю. Вот думаю как мне достаточно подтянуть знания чтобы взяли
>Меня просто не берут на работу, якобы я чего-то не знаю
ну проходить собеседование и быть хорошим разрабом - разные вещи
собеседование это дичь
>Действительно ли читать книги более эффективно чем смотреть туториалы на ютубе?
Да. Ноу дискас.
>и плохо что void то не возвращаемое значение. Это один из просчетов создателей шарпа
>>299059
> void
> просчет
> шарпа
>>299157
>Как теперь жить-то? Консоль не возвращает значение.
>>299160
>не знаю причем тут вообще консоль. В моем сообщении на "проеб с void"не было ни слова про консоль, ни ссылки ну любой чужой пост где бы упоминалась консоль
>>299078
>А нам теперь разгребай это.
>public static bool Method(){
> try{
> MethodVoid();
> return true;
> }catch(Exception ex){
> Console.WriteLine("Method ex: "+ex);
> return false;
> }
>}
Я повторюсь еще раз - моя ремарка про void не касается консоли, а говорит о void вообще. Именно поэтому я не ссылался ни на какой пост (и не думай что я не умею ссылаться, ведь я ссылаюсь сейчас на твой пост)
Я понимаю, что тут не понять кто чего писал, но я же пояснил этот момент. зачем вынуждаешь меня повторять
А теперь про void
void плох тем, что он не возвращаемый тип. void не несет никакой пользы, кроме указания "результата нет".
Нельзя сделать Task<void> - а значит будь добр пилить в либах почти идентичный код для Task и Task<T>
В других языках используется структура Unit. Даже в либах самого мелкософта можно ее встретить - самопальная структура велосипед) для внутренних нужд.
и вот еще пример (жаль нельзя редактировать пост)
https://github.com/jbogard/MediatR/blob/c1ad66ef52434a22c10a0de5e060d13b185ef80b/src/MediatR/Unit.cs
там даже подписано зачем это.
void - один из косяков создателей шарпа
и жаль, не единственный.
В чем, блядь косяк? В чем? Блядь. void == ничего не кладем в какой-нибудь EAX после завершения.
Ну или в контексте паскалеподобноых терминов - void == процедура. Если тебе нужно чтобы процедура возвращала значение, ты пользуешься функциями. Если ты так хочешь какого-то результата от void - прими таблетки передавай внутрь ссылку на хуйню которая тебе все сохранит куда-то, почему.
Косяк в том, что кто то насмотрелся обрыганских видосов на ютубе и теперь давит интеллектом харкач.
>В чем, блядь косяк?
я же русским по белому написал чем плох. мне повторить?
>Косяк в том, что кто то насмотрелся обрыганских видосов на ютубе
ну да. авторы реактива и mediatr тоже насмотрелись и поэтому решили вводить свой велосипедный тип Unit вместо священного void от просто так ага. так и запишем.
Вообще тип Unit он норм, просто он не стандарт, а каждый пилит свой велосипед.
>>299861
А чей? папы римского?
>Если ты так хочешь какого-то результата от void
ты рассуждаешь с точки зрения клиентского кода. Либы видать никогда не писал, а уж либы с кодогенерацией для Task тем более
Тогда бы не спрашивал что не так.
Хочу сделать приложение кроссплатформенное под всю хуйню (Вин, Линукс, Андроид, плюсом будет ВЕБ), решил что возьму либу Avaliona потому что она умеет в MVVP по этим параметрам. Далее - приложуха будет plugin-based, что значит надо найти какую-то либу, решение и т.д., которое позволяло бы загружать плагины и дампать API, чтобы вообще знать а что расширять-то можно.
Есть какие-нибудь гайды, главы в книгах, статьи о том как такое сделать? Можно на аглицком
Или можете хотя бы указать какие либы ЛУЧШЕ всего подходят под такую задачу?
>Андроид, плюсом будет ВЕБ
авалония в это не умеет.
Это нужно смотреть в сторону https://platform.uno/ или мауи (хз может ли он веб)
>Либы видать никогда не писал, а уж либы с кодогенерацией для Task тем более
А ты писал?
>решили вводить свой велосипедный тип Unit вместо священного void от просто так ага
То есть любая пользовательская структура данных - велосипед? МС должны просто всё впихнуть в язык, а то маловато всего.
>В других языках используется структура Unit
Так в шарпе должен быть Unit, свой стандартный вшитый фабричный отточенный, или void должен нести значение?
void используется, когда ничего возвращать не надо, надо что то возвращать - возвращаешь. И в этом и суть велосипедного типа Unit: зачем то им надо что то возвращать, и это что то должно вести себя определённым образом - та-да! они это возвращают.
А ты серишь просто бессмысленный поток сознания. Что то где то увидел и пошёл повторять с умным видом. Скоро вернёшься размазывать мантру "с++ лудший потому что всё есть и всё можно написать а ещё самый быстрый!!!"
Ты хоть погуглил бы 5 минут прежде чем отвечать
https://github.com/wieslawsoltes/NodeEditor
https://wieslawsoltes.github.io/NodeEditor/
>Avalonia is mature and production ready. We also have in beta release support for iOS, Android
Но ладно. По твоему Уно будет лучше Авалонии? Чем лучше? Меньше кода для кроссплатформенности?
Алсо, я так и не понял как систему плагинов запилить
>А ты писал?
конечно писал. И конкретно с этой проблемой дела имел. И в итоге тоже завел себе тип Unit
>То есть любая пользовательская структура данных - велосипед?
именно. Все знают про Task/Task<T> ибо это в языке задумано. А про Task<Unit> - нужно доки читать
>void используется, когда ничего возвращать не надо, надо что то возвращать - возвращаешь. И в этом и суть велосипедного типа Unit: зачем то им надо что то возвращать, и это что то должно вести себя определённым образом - та-да! они это возвращают.
Когда ты пишешь клиентский код, то проблем нет - нужен T, юзаешь Task<T>, не нужен - юзаешь Task. То есть пишешь один из вариантов - что тебе нужно.
Но когда ты пишешь либы, то должен предусмотреть все варианты использования Task<T> и Task. И вот тут наступает трабла, потому что ты вынужден кодить параллельную цепочку для Task (а если еще кодогенерация, то туши свет). То есть тупо повторяешь кучу кода, только потому что Task это вам не Task<T>. И либо кодируй отдельно для Task, либо вводи Task<Unit>, что авторы представленных либ и сделали.
>Так в шарпе должен быть Unit, свой стандартный вшитый фабричный отточенный, или void должен нести значение?
ничего не должно быть. жить можно. просто конечно лучше бы изначально был unit вместо void и не приходилось бы свое вводить, в доке описывать и так далее
>По твоему Уно будет лучше Авалонии?
хз. я с уно дел не имел. с авалонией имел но давненько ито что они в блазор полезли - не знал
но вот с авалония бета я запарился. Того нет, этого нет, это работает не так, траблы под ios и сколько времени потратишь переписку и фикс - хз. Вижу бета - прохожу мимо.
Так в чём проблема то? В том, что нет стандартной структуры почти без функционала? Но с этим ещё можно согласиться, в самописном Unit есть фатальный недостаток.
Но как из этого следует, что void должен возвращать значение? Все методы, которые ничего не возвращают, должны срать структурой, только потому, что у тебя функциональность Task и Task<T> дублируется?
>Все методы, которые ничего не возвращают, должны срать структурой, только потому, что у тебя функциональность Task и Task<T> дублируется?
ну, во первых, не только у меня, а у всех либописателей.
а, во вторых, почему нет - в некоторых языках (щас не вспомню) именно так и сделано изначально. Потому что нет разницы между "нет результата" и "результат не имеет значения/нужности". Unit не привносит проблем, просто не имеет ограничений как void
(как и тот же companion object в котлине, который я хейтил что "смотрите как они уродливо сделали статические методы", пока не понял что так лучше)
>Так в чём проблема то?
Понимаешь, со всем можно жить. Ну вообще совсем. Жили же с null и ничего. Это потом автор нулл назвал это "охрениллиард долларов". Но ведь жить можно. Вон сколько кода написано. Да что автор понимает то )
Но если быть честным, то такие "можно жить" по факту - косяки. А мешают они сильно или слабо - не меняет факта ошибочности идеи.
навскидку
void - пояснил
виртуальные свойства - там я уже не помню ибо сам никогда такое не юзаю
IReadOnlyList - изначально забыли, а потом уже к IList не прилепить. То есть понятно что IReadOnlyList должен быть родителем для IList, а поздно. В итоге нельзя передать в IList в метод ожидающий IReadOnlyList
null safety - в итоге как варнинги, да и от кучи кода без оглядки на него никуда не денешься.
events - необходимость для отписки давать тот же делегат плохая идея. Вариант с диспозабле токеном или lifetime куда лучше.
раз уж выше написал про статики - статики нельзя расширить как экземпляры. Приходится писать свои ClassEx
ну и не язык уже но пример тоже хороший
HttpClient при таймауте кидает TaskCancelledException. Почему? Да потому что автор либы посчитал что метафора "задача отменена" тут подходит. Таймер отменяет задачу запроса в сеть, вроде все логично. Но не кидает наверх TimeoutException, ведь работает метафора "задача отменена"
Вот только клиентский код должен теперь разбираться "а кто отменил" явно проверяя "а это точно не я отменил все или оно само и мне нужно повторить?"
В итоге это "пофиксили" - теперь TaskCancelledException содержит InnerException = TimeoutException, чтобы можно было отличить хоть как то с фильтром when для исключений.
Дикий костыль, но ради обратной совместимости иначе никак.
Конечно, я не всё это считаю "ууу виноваты, бестолковые", но все же неудачные идеи остаются неудачными.
>Все методы, которые ничего не возвращают, должны срать структурой, только потому, что у тебя функциональность Task и Task<T> дублируется?
ну, во первых, не только у меня, а у всех либописателей.
а, во вторых, почему нет - в некоторых языках (щас не вспомню) именно так и сделано изначально. Потому что нет разницы между "нет результата" и "результат не имеет значения/нужности". Unit не привносит проблем, просто не имеет ограничений как void
(как и тот же companion object в котлине, который я хейтил что "смотрите как они уродливо сделали статические методы", пока не понял что так лучше)
>Так в чём проблема то?
Понимаешь, со всем можно жить. Ну вообще совсем. Жили же с null и ничего. Это потом автор нулл назвал это "охрениллиард долларов". Но ведь жить можно. Вон сколько кода написано. Да что автор понимает то )
Но если быть честным, то такие "можно жить" по факту - косяки. А мешают они сильно или слабо - не меняет факта ошибочности идеи.
навскидку
void - пояснил
виртуальные свойства - там я уже не помню ибо сам никогда такое не юзаю
IReadOnlyList - изначально забыли, а потом уже к IList не прилепить. То есть понятно что IReadOnlyList должен быть родителем для IList, а поздно. В итоге нельзя передать в IList в метод ожидающий IReadOnlyList
null safety - в итоге как варнинги, да и от кучи кода без оглядки на него никуда не денешься.
events - необходимость для отписки давать тот же делегат плохая идея. Вариант с диспозабле токеном или lifetime куда лучше.
раз уж выше написал про статики - статики нельзя расширить как экземпляры. Приходится писать свои ClassEx
ну и не язык уже но пример тоже хороший
HttpClient при таймауте кидает TaskCancelledException. Почему? Да потому что автор либы посчитал что метафора "задача отменена" тут подходит. Таймер отменяет задачу запроса в сеть, вроде все логично. Но не кидает наверх TimeoutException, ведь работает метафора "задача отменена"
Вот только клиентский код должен теперь разбираться "а кто отменил" явно проверяя "а это точно не я отменил все или оно само и мне нужно повторить?"
В итоге это "пофиксили" - теперь TaskCancelledException содержит InnerException = TimeoutException, чтобы можно было отличить хоть как то с фильтром when для исключений.
Дикий костыль, но ради обратной совместимости иначе никак.
Конечно, я не всё это считаю "ууу виноваты, бестолковые", но все же неудачные идеи остаются неудачными.
в авалонии под винду мыльные шрифты (увы). конечно зависит от монитора и хз чего, но лично на моем мыльновато
и никак это не решить.
wpf тоже мыло, но там есть настройки.
Забыл про свой любимый ConfigureAwait(true) по умолчанию. И мне, как либописателю, это очень напрягает - или везде ставь ConfigureAwait(false), или насильно теряй SynchronizationContext (и не дай бог забыть потерять его на входе), или юзай ConfigureAwait.Fody (что я и делаю), но это уже дикий костыль, ведь он скрытый от глаз и если кто-то посторонний смотрит на код, то он про эту тонкость не знает.
Просто берёшь и без задней мысли кодишь, а если что то не понимаешь, то гуглишь.
>HttpClient при таймауте кидает TaskCancelledException. Почему? Да потому что автор либы посчитал что метафора "задача отменена" тут подходит. Таймер отменяет задачу запроса в сеть, вроде все логично. Но не кидает наверх TimeoutException, ведь работает метафора "задача отменена"
>
>Вот только клиентский код должен теперь разбираться "а кто отменил" явно проверяя "а это точно не я отменил все или оно само и мне нужно повторить?"
О, да. Мне вот эта хуита с "was cancelled" в случае таймаута, стоила кучки нервов в свое время.
> Либы видать никогда не писал
Писал. Хуй знает правда при чем тут void и чем он в контексте либы плох.
Ну давай. Допустим я пишу логгер.
У меня есть метод
void Log<TScope>(TScope scope, LogLevel level, string messageFormat, params object[] logEventParameters);
Почему void - плохо тут? Что бы ты хотел, чтобы там было? LogEventWriteState? int с кодом ошибки? Может быть объект для того чтобы можно было подождать пока сообщение таки будет всеми писателями записано и ты бы с этим что-то делал? А может быть это все хуйня и тут void - норм, как раз для пользователей моего кода, а в своем коде - я могу с internal нахуячить чего мне надо?
>Почему void - плохо тут?
без понятия почему ты считаешь что он плох тут
Тут он просто сигнатура, которая никому не мешает.
Мешает он когда у тебя нужно Task<void>, но поскольку Task<void> нельзя, то ты пишешь Task. А это вынуждает тебя писать параллельную к Task<T> логику обработки этого случая. При этом код на 99% копипаст из логики с Task<T>
То есть есть у тебя метод с Task<T>, который по цепочке там на 10 что то вызывает - придется сделать дубликат всей этой логики для Task
Там же рядом ходит и необходимость в интерфейсах указывать Task и Task<T> раздельно. А потом еще и реализовывать это (даже клиенту)
https://github.com/jbogard/MediatR/wiki#request-types
И так то не проблема, что либа вводит свой Unit
просто это не стандарт, а значит люди не привыкши
что приводит к необходимости писать об этом в доках
был бы введен Unit при рождении TPL и все про него знали - здорово
был бы Unit изначально - еще лучше
А без этого рождаются вот такие вопросы
https://qna.habr.com/q/858409
> При этом код на 99% копипаст
Пиздёжь. Делаешь класс без дженерика, который наследует скажем Класс<int> и один раз оборачиваешь его методы в void-овые. Например, если у твоего Task<T> есть метод T Run(), то тебе не надо копипастить код этого метода. Наследуешься от Task<int>, прячешь int Run(), прячешь int Result, делаешь void Run() { base.Run(); } и всё. Инт возвращается, но уходит в пустоту. Которая по английски и есть void.
Такшта надуманная проблема. Лучше бы софт делал, а не этой хуйнёй маялся.
>Такшта надуманная проблема
ну да ну да. расскажи это автору хотя бы того же Mediatr, что он неуч и нихрена не понимает, и все его регалии
https://mvp.microsoft.com/ru-ru/PublicProfile/4025502?fullName=Jimmy Bogard
херня, ведь анону с двача виднее
Расскажи это авторам Reactive Extensions, что они тупые, ведь никакой проблемы нет
Они то всего лишь практики. А практика хуйня )
> расскажи это автору
Рассказал.
> Расскажи это авторам
Рассказал.
Харкнул им в ебала. Твои действия?
Аргументум ад регалиум.
У меня дед, который 20+ лет работает и кучу всего полезного за время работы написал - хуячит методы по 10к строк и все пишет зачастую в одном Program.cs, потому что ему так вот нравится, ссыт на ебало всем любителям ООП и ФП, потому что начинал он с си, а асинхронщину по заветам APM хуячит. Ну, дед-входит в тех, кто составляет стандарты на уровне европки для нашей предметной области, дед - дохуя всего сделал, у деда ЗПха охуенная, ну, давай как дед AsyncCallback'и хуячить и ебашить ансейфом, просто по фану, потому что можем. У него ж столько регалий, куча выступлений на конференциях и вообще, дед - довольно известный в кругах этой вот предметной области.
не сомневаюсь
Но что еще делать, если не получается пояснить суть тем, кто далек от темы
Даже прямыми словами у авторов написано что они вводят юнит, потому что void нельзя вернуть - не аргумент. "Авторы дураки и придумали это от просто так" (с) анон с двача
ага. у рх проблема не с тасками - я не знаю, я его не юзаю. (что пофиг ибо суть проблемы та же)
цитата
"Поскольку мы не можем реализовать интерфейс IObservable<void>, разработчики библиотеки Rx добавили тип Unit, который как раз и играет роль отсутствия возвращаемого значения."
http://sergeyteplyakov.blogspot.com/2010/11/blog-post.html
Разве пикрелейтед - это не костыльная ООП-имлементация tuples?
>where TRest : struct
Ну это вообще ахуенно, бонус, тюпл в тюпле.
Скорее не захотели встраивать нормальные tuples (как в F#) в компилятор, а реализовать средствами языка.
> разработчики библиотеки Rx добавили тип Unit
Я сделал то же самое, только не добавляя типа. Вместо какого-о лишнего Юнит, у меня инт.
Пробовал две реализации на пикрелейтедах, причём с параллелизмом стало медленнее. Как быть?
Привет, подскажите, пожалуйста, как перейти на версию c# 8.0? В одном видосе сказано нажать "Открыть папку в проводнике" в решении, там зайти в .csproj и скопировать строку <LangVersion>8.0</LangVersion> из <PropertyGroup> в <PropertyGroup> повыше. Проблема в том, что у меня нет строки <LangVersion>8.0</LangVersion> и некоторые операторы не работают, например ??=. У меня Visual Studio 22 17.1.0 версии, стоит только "разработка классических приложений .NET.
Бамп.
допиши эту строку в первый PropertyGroup, там где фреймворк указывается
иначе он автовыбирает по фреймворку
Потому вписав дотнет 6 получишь шарп 10 и не нужно ничего мудрить лишнего
Поменял на 6.0, visual studio просит установить версию 6.0.2. Я ее поставил, но все равно не могу на нее перейти почему-то
Я раньше тоже с этими волшебными списками опций игрался и нихуя не понимал, а потом освоил консолечку (dotnet CLI) и горя не знаю теперь.
Я давно перешёл на вс коде. Запускается за полсекунды, в руке лежит, как влитой. Разницы со студией ноль.
тогда хз чего у тебя настройки выглядят так (по старому). а не как у меня на пике
Конечно, только формы и шлепаю. Заодно и куличики леплю
А где такие настройки? У меня даже при создании проекта нет возможности выбрать другие версии кроме этих
>А где такие настройки?
свойства проекта по пкм. теперь они выглядят иначе (ну у меня точно, а почему хз - 2019ю я давно снес, а в ней выглядело по старому)
Ну выбрать можно те, поддержка сдк которых были поставлены со студией
но вообще есть старый стиль *.csproj и новый sdk
может для каждого стиля свой вид настроек. Я давно перешел на новый во всех проектах еще задолго до выхода даже дотнет 5
В общем. Если бы я еще знал что эти циферки значат.
Да, заполнял лист фуллнеймов по 1000 валидных и 1000 невалидных.
А, ну да, еще наверное такая дикая разница из-за того что тестовые данные я как ебанат составил:
Valid
Invalid
кек. Наверное нужно было бы поиграться.
Юзай регулярки
а как по твоему сравнивается StartWith в строках? До первого несовпадающего символа же - дальше нет смысла искать. Поэтому ручная имплементация самому лишена смысла.
Хочешь ускорить - параллель (если плата за это не превосходит выигрыш) либо структуру какую типа префиксного дерева
> а как по твоему сравнивается StartWith в строках
Ну, они сравниваются как-то так. А потому, свой велосипед вполне нормальное решение, если тебя все эти культуры и прочее не волнует.
но не в 500 же раз если на скринах бенчи именно этого
Второй - собственно код
С заголовками-то все ясно. Но вот решил, что хорошо бы и тело доставать. И чет пизда. Что в постмане, что в curl - уходит в выделенном куске в бесконечное ожидание. Смотрю что там в сокете, написано Available = 0. Но блядь. А куда тело-то делось? Чи шо? Чи я тупой и что-то не прочитал?
хотя да. сделал бенчи ориг StartWith и второго варианта (проверяем по символу в цикле)
если без указания StringComparison то дико медленно
| Method | Mean | Error | StdDev |
|-------------- |-------------:|-----------:|-----------:|
| TestOrigin | 5,809.44 us | 29.262 us | 25.940 us |
| TestNaive | 20.21 us | 0.065 us | 0.061 us |
а вот с StringComparison.Ordinal вменяемо
| Method | Mean | Error | StdDev |
|-------------- |-----------:|---------:|-----------:|
| TestOrigin | 29.50 us | 0.216 us | 0.191 us |
| TestNaive | 20.43 us | 0.238 us | 0.222 us |
>что в curl - уходит в выделенном куске в бесконечное ожидание
нужно проверять i
если он i==0 то значит поток закрылся и данных больше не будет и нужно выходить из цикла
Ну, поток-то не закрылся на деле. Он вполне принимает нормально ответ.
Плюс я постманом файл текстовый пытался отправить. Вот его таки читает, но не целиком, последние несколько строк куда-то проебываются. Но куда - я не понимаю.
все дело в ридере и его ReadLineAsync()
он выгребает кусок из стрима, сплитит его по \n и в нем остается остаток
так что когда ты начинаешь читать уже прямо стрим для получения боди, то часть твоего боди было ранее прочитано ридером и в нем висит.
читай из чего то одного
Действительно!
Спасибо. Сам бы я скорее психанул бы и отказался как от стримов, так и от ридеров и взялы бы пайпы и с сокетом забавлялся, нахуячив какой-нибудь ебанутый парсер со стейтмашиной.
Еще раз спасибо.
ну так и делают, ведь с ними проще
asp.net core юзает пайпы
даже вот они юзают пайпы
https://github.com/microsoft/vs-streamjsonrpc/blob/main/src/StreamJsonRpc/HeaderDelimitedMessageHandler.cs
Ну, как я знаю, пайпы в asp юзают не потому что проще, а потому что хотят дать пососат. Типа в плане использования ресурсов - оно таки круче и при этом есть удобное решение для работы с буфферами. Но в плане кода - выходит на самом деле тот еще ужас, как минимум на уровнях что близко к сокетам.
Делаю как в гайде ниже, не выходит.
https://vscode.ru/prog-lessons/dinamicheskoe-podklyuchenie-dll-v-c.html
Не бывает классов без неймспейсов. Соотвественно, неймспейс - часть полного имени класса.
Вау. ты спаситель, заработало
Блин вот из-за таких как ты я понимаю что мне в программировании ничего не светит, вы просто на голову умнее меня
Игнорируй просто, ответишь чуть позже когда станешь умнее
про-пер-тис
https://docs.microsoft.com/ru-ru/dotnet/csharp/programming-guide/classes-and-structs/properties
значение знаешь?
что одна хуйня имеет set get что другая. только свойства я могу как-то назвать, а в индексатор совать аргументы. а я хочу и назвать свойство и аргумент туда совать.
У свойств то синтаксис приятный можно написать в одну и ту-же хуйню что она читает и что она меняет! И индексаторы приятные.
Вот написал класс который менеджит ресурсы на гпу. Раньше следил он там за своими текстурками и я через индексатор обращался к этим текстуркам. Удобно. А теперь хочу чтобы он ещё и за буфферами следил. Но второй индексатор то я не могу сунуть. Задумался что хочу иметь возможность обращаться к нужным мне ресурсам примерно так-же как обращался бы им в словариках. То есть написать например хранилка.текстуры["имя"], хранилка.буффер["имя"]. Но как мне такой синтаксис иметь без словариков то?
Наверно остается только написать дженерик класс для хранения ресурсов у которого обращение к его ресурсам происходит через индексатор и просто собрать из двух таких один.
Если я правильно тебя понял, то ты можешь что-то типа такого намутить.
1) Ванильная Java - уже фактически труп. Учить её сейчас с нуля нет смысла, новых проектов на ней никто уже не начинает. Большое кол-во вакансий и высокие ЗП в данный момент, обусловлены её славным прошлым, большому кол-ву кровавого энтерпрайза в финтехе, телекомах и тп который нужно поддерживать и дорабатывать, и тем, что молодые разрабы в большинстве своём проходят мимо неё в результате чего имеется серьезный дефицит разработчиков.
2) C# медленно, но верно загибается, МС судя по всему будет продолжать активно развивать его, в результате чего он имеет шансы обогнать Java со временем. Т.е. проще говоря он будет терять свою долю рынка медленнее чем Java. Тем не менее учить его с нуля в 2022 тоже нет смысла, главный аргумент тут: он не используется в core-сервисах крупнейших IT компаний мира (разумеется, сама МС не в счет). Пока гугл, амазон или мета не перепишет свою инфраструктуру на C#, смотреть в его сторону тоже не стоит.
3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.
Поскольку, последние 5 лет я пишу исключительно на node+ts (до этого, немного разрабатывал на c#), в этом году я решил изучить golang. Думаю, что спрос на golang разработчиков вырастет в разы в ближайшие годы.
Напоследок, хочу поделиться с вами прекрасным постом на реддит который я нашел пока вентилировал данную тему. Там не только про dotnet ui фреймворки, но и про политику МС к разработчикам в целом (в хроме можно использовать встроенный переводчик, смысл остается вполне понятен) https://www.reddit.com/r/csharp/comments/f9i9hc/comment/firr467/?utm_source=share&utm_medium=web2x&context=3
1) Ванильная Java - уже фактически труп. Учить её сейчас с нуля нет смысла, новых проектов на ней никто уже не начинает. Большое кол-во вакансий и высокие ЗП в данный момент, обусловлены её славным прошлым, большому кол-ву кровавого энтерпрайза в финтехе, телекомах и тп который нужно поддерживать и дорабатывать, и тем, что молодые разрабы в большинстве своём проходят мимо неё в результате чего имеется серьезный дефицит разработчиков.
2) C# медленно, но верно загибается, МС судя по всему будет продолжать активно развивать его, в результате чего он имеет шансы обогнать Java со временем. Т.е. проще говоря он будет терять свою долю рынка медленнее чем Java. Тем не менее учить его с нуля в 2022 тоже нет смысла, главный аргумент тут: он не используется в core-сервисах крупнейших IT компаний мира (разумеется, сама МС не в счет). Пока гугл, амазон или мета не перепишет свою инфраструктуру на C#, смотреть в его сторону тоже не стоит.
3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.
Поскольку, последние 5 лет я пишу исключительно на node+ts (до этого, немного разрабатывал на c#), в этом году я решил изучить golang. Думаю, что спрос на golang разработчиков вырастет в разы в ближайшие годы.
Напоследок, хочу поделиться с вами прекрасным постом на реддит который я нашел пока вентилировал данную тему. Там не только про dotnet ui фреймворки, но и про политику МС к разработчикам в целом (в хроме можно использовать встроенный переводчик, смысл остается вполне понятен) https://www.reddit.com/r/csharp/comments/f9i9hc/comment/firr467/?utm_source=share&utm_medium=web2x&context=3
>1) Ванильная Java - уже фактически труп
бред
>2) C# медленно, но верно загибается
бред
>3) node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c#
еще больший бред
"боже вас сохрани, не читайте до обеда советских газет" (с)
> В конечном счете всё будет переписано на данных языках
Да. Бизнесу-то делать нечего, как по 10 раз переписывать то что работает. Вон, как славно в штатах с кобола все переписывают!
Относительно ноды - говно без задач, годящееся только чтобы фронтендеру развернуть тестовое окружение и как временная мера чтобы роутить запросы при очередных попилах монолита на микросервисы.
Относительно остального.
Жава - жива и помирать не собирается, сколько бы ее не хоронили.
Шарпик - если майки не обосрутся - будет делить ту же нишу что и джава в области бекенда. Держим пальчики, чтоб очередная война гидры внутри конторы - не сменила вектор развития шарпика и не откатились к началу десятых.
Про ноду уже сказал. Говно без задач. Котлин - на мобилках норм, в бекенде - говно. Гошка - только для микросервисов и годиться, что-то большое и сложное - заебешься писать и поддерживать и как-бы микросервисы не пытались продвигать, на деле - оказывается, что это нихуя не серебрянная пуля и нормально спроектированный монолит - пизже во множестве кейсов.
Аноны, объясните, пожалуйста, в чем разница между int.Parse(Console.ReadLine()) и Convert.ToInt32(Console.ReadLine())?
Но ты же можешь сделать хранилка[типхранимого.текстура]["имя"]
В случае с string -
Convert.ToInt32(string str) просто дергнет int.Parse(str)
Так что разницы никакой нет.
Понял, спасибо
получается каждый раз создается новый HttpClient
Ну да, он берет хендлер из пула, но разве тот же singleton сервис не может захватить этот HttpClient надолго (и тем самым захватить и хендлер мешая смене dns).
Получается нужно в сервисы закидывать фабрику и создавать HttpClient на каждый запрос
выглядит диковато
Почему не сделали хендлер, который сам все меняет - хз
>You can separate these route actions to multiple files easily. RouteGroup would become more useful if in the future c# gets support for top-level functions(not just for Program.cs).
Ебушки-воробушки, они думают над тем чтобы затащить функции?
Есть, значит
bool arg1 = false;
и оно может быть тру-фелсе.
И есть, значит:
public static Namespace.Class object = new Class(arg1);
Который тупо срабатывает когда arg1 = false.
Есть Main(string[] args) с arg1 внутри.
Но ебучий паблик статик создаётся до обработки аргов. Шо делать с этой хуйнёй?
Всё, понял. null по дефолту и {get; set} надо въебать туда.
-прокидывать ihttpcontextaccesor, и из него тануть юзера (мне такое не нравиться по нескольким причинам, как минимум не хочется тянуть хттпконтекст в слои далекие от хттп, плюс в том слое еще понадобиться знание о клаимах и т.д.)
-сделать iuserinfoservice, который уже будет работать с ihttpcontextaccesor'ом. Вроде норм, но меня смущает то, что его я буду использовать и в контроллере, т.е. будет поле ClaimsPrincipal User и IUserInfoService UserInfo, по сути обертка над ClaimsPrincipal User. Довольно странно.
В общен нужен ваш совет/варианты.
Может кто знает, в чем причина полной нагрузки памяти компа пустым проектом VS? Первый раз за день проект может загружаться очень долго, к тому же, хотя кода там нет совсем
Получается, что около 10гб съедается при первом запуске, при том, что в нормальном состоянии потребляет около 1гб или чуть больше. Студия 22, 17.1.0, консольное приложение .Net Framework
А дотнет7 может крутить приложения под дотнет5/6? Или надо все версии рантайма устанавливать?
Обрати внимание на левый нижний угол приложения. Там будет вот такой значок. Это бэкграунд таски которые студия делает после загрузки. Там может быть дохрена всего, грузится интеллисенс, пакеты, тулзы какие-нибудь, анализаторы всякие и т.д.
Дальше лень объяснять гугли что-нибудь вроде "Visual Studio Background Tasks"
Я только к пятому привык, шестой ещё не начинал учить, а тут седьмой на подходе.
Кто на ём десктопные кроссплатформенные приложения пилит?
И вдогонку вопрос. На чём пилить кроссплатформенные десктопные приложения в 2022 веку?
Авалония идёт нахуй.
Какому шарписту, привыкшему что все лежит на своем месте, проще от того что все в одной большой лапше куче? да никакому. Это просто ломает привычку,а пользы ноль
Вот я попробовал блазор. создал в студии 22. Очень быстро код инициализации стал огромной кучей говна. И начался квест к переходу под старый тип проекта. А где его взять? яего в упор не видел - не знаю, как он должен выглядеть под блазор.
Пришлось гуглить пример старого проекта по гитхабу. А мне больше заняться нечем будто
Тут аноны рекомендовали типа "ну создай свой шаблон"
Из чего (цензура) создай. Где я в 22 студии создам старый тип проекта чтобы сохранить его как шаблон? Да и нахера оно мне надо?
Для легкого скриптинга так же отлично подходил метод Main - пиши тупо в нем хоть 10к строк - никаких проблем не было. Идиотская идея в общем, как и с ConfigureAwait
Када перикат?
>Для легкого скриптинга так же отлично подходил метод Main
Да, если для одного файла не нужно было бы создавать проект с csproj
Иногда нужна папка с тулзовыми скриптами для проекта, один файл один скрипт. Все это бы "без статик воид мэн" даже сейчас
уже зашло .
С релизом .Net 7
Рантайм должен быть установлен тот который указан в .csproj. .NET 6 не может запускать .NET Core 3.1 приложения, например.
Смотрите, есть табличка в которую записывается считанное значение, есть табличка устройств, есть табличка параметров устройства, которые можно читать.
Так вот. Я хочу достать из базы все последние значения для какого-то устройства.
Если бы я делал это на sql, то это было-бы примерно так:
Группирую значения по параметру и устройству и MAX(Dt), джойню с самим собой, доставая таким образом последние считанные значения для каждого параметра устройства
Делаю правый джоин со всем списком параметров устройства(ну, мне хочется знать, что что-то мы еще не читали)
Ну, я примерно так решил делать на EF.
И EF говорит что низя, сделать вот так:
var lastParams = from readed in db.ReadedVals
group by new { readed.deviceId, readed.parameterId } into g
select g.OrderByDescending(x=>x.Dt).FirstOrDefault()
Вернее можно. Но тогда чтобы сджойнить его с устройством - нужно привести результат к массиву/списку/IEnumerable, а мне это не нравится и хочется чтоб EF таки как-то это транслировал.
Писать SQL-запрос для этого - не хочется по причинам того, что всюду линку, а тут будет нативный запрос, просто уродливо, тогда уж все менять на sql.
Может быть я что-то не так делаю и есть способ эту же фигню написать так, чтобы не приводить к массиву и при этом ef не ругался, что не может транслировать запрос? Ну или есть какой-то простой способ сказать ef что я от него хочу в контексте sql вот таким вот запросом, чтобы он таки транслировал его?
Просто мой гуглеж завел в тупик, т.к. все просто делают .ToArray и не парятся, а мне не хочется ToArray делать.
> все просто делают .ToArray и не парятся, а мне не хочется ToArray делать.
Зделой сначала ту эррей, а потом ту лист. И спрячь в отдельном модуле.
Запускаются приложения у которых в .csproj указано netcoreapp3.1? А сделай-ка скрин вывода команды dotnet --list-runtimes
Конечно надо иметь, они ж новее.
гм. а реально
$ dotnet --list-runtimes
Microsoft.AspNetCore.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.12 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.21 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.12 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
при этом в программы и компоненты только 5 и 6 упоминаются.
я помню удалял из программы и компоненты старые фреймворки, а оно эна как
И вот концепция модулей вполне прикольная жи. В спеках .net описываются модули. Когда их завозить-то будут? А то чет посмотрел роадмапу .net7 - там какая-то хуета беспонтовая, в 6 больше ништяков завезли. А модули бы были норм.
>при этом в программы и компоненты только 5 и 6 упоминаются.
Ты может старые SDK удалил, их можно посмотреть --list-sdks
>при этом в программы и компоненты только 5 и 6 упоминаются.
Может ты старые SDK удалил, их можно посмотреть --list-sdks
Модули в паскаль пришли из си. Хочешь модулей - добро пожаловать в чистый си.
То что программист делает всегда.
Вот у тебя есть процесс: "прием заказа". В классическом виде: Клиент припиздовал, сказал человеку, человек на бумажечку записал, потом передал это тому кто формирует заказ. Так вот, ты можешь автоматизировать - теперь заказ можно сделать на сайте (исключая как физическую необходимость клиента припиздовать, так и необходимость в том, кто заказ примет и тонны бумаги, чтобы это записывать). Ну и таких процессов миллионы в любом бизнесе: расчеты ЗП, инвентаризация, всякие специфичные хуйни(ну, допустим вот у телеканала есть процесс - "вещание", раньше сидел челик и ручками выводил всякое в эффир, сейчас - составили программу передач на год вперед, программа сама переключает, делаем прямые включения только по необходимости и иногда корректируем программу; у всяких больниц - ведение карты больного и т.д.)
Короче. Ты понял. Специфичные процессы какого-то бизнеса, которые приносят прибыль обычно.
Как связано с программированием? Ну, блядь, а кто будет делать электронный журнал какой-нибудь? Или корпаративный планировщик задач? Тетя Зина-бухгалтерша и дядя Петя - ответственный за соблюдение ТБ и заведование складом?
Спасибо. А SAP это не связано, это как 1C получается?
двач, посоветуйте книги, чтобы вкатиться в c#, учитывая то, что знаю java на уровне ждуна
Как скачать файл cURL'ом в байты, не сохраняя файл?
Сделай хранимку и дергай ее
Анон, как эта хуйня работает и как должна работать, и почему она не пашет?
https://github.com/username1565/nanoboard/blob/nanodb-sqlite/nanodb.exe-source/PngTransport/CurlWebClient.cs
может чего нужного себе найду про что я не знаю
у меня вот (VS2022)
resharper
suprecharger
XamlStyler
Origin Blue Theme
OzCode debug
VisualHg
BuildVision вот собираюсь
Ничего. Раньше codeMaid стояла, но нахуй не нужна оказалась.
>>304467
>Ну, примерно как:
>void Foo(MyClass a){
>a.Foo();
>}
А это разве не
(a) => a.Foo()
?
ты регистрируешь лямбду, которая возвращает лямбду, которая уже возвращает нужный сомевьюмодель
лишний уровень лямбдовости
Мэдскиллз верен?
Я думал, что после
(s) =>
должен быть стейтмент или даже блок, а там опять параметр, и только потом стейтмент, и ЯННП.
И получается, что на пике nested lambda - это и есть стейтмент?
Visual Studio Spell Checker - удобно подсвечивает ошибки на скроллбаре
Workspace Manager - позволяет сохранять наборы открытых вкладок, удобно когда по работе переключаешься между разными задачами и ветками репа.
Shrink Empty Lines - сжимает визуально пустые строки
Solution Error Visualiser - подсвечивает ошибки в дереве проекта
Match Margin - подсвечивает выделенное слово на скроллбаре, если оно еще где-то в коде встречается
SideScroller - горизонтальный скролл мышкой при зажатом shift-е (я х.з. может студия и так это уже умеет, у меня просто по привычке стоит)
Fine Code Coverage - показывает покрытие кода тестами (не самое лучшее в своем классе, но бесплатное)
смотря что ты хочешь сделать?
то что на пике закинет в инжект Func<SomeViewModel>
иначе же
services.AddSingleton(p=>p.GetRequiredService<SomeViewModel>());
Я самостоятельно учу с нуля нет, не вкатун и прихуел от формы записи.
Лямбды вида (s) => Foo(s) понятны, а с той, что на пике, впервые столкнулся. Пытался что-нибудь нагуглить, но не получилось.
Просто если зарегать лямбду ака фабрику в контейнере через эти методы, то контейнер при резолве вызовет эту ламду, котоая вернет зависимость.
поэтому регистрируют ламбду, которая возвращает ламбду
ну можно создать и метод расширение типа services.AddFactory(...) но это будет путать
Выполни команду
>sysprep/sysprep.exe
И нажми ОК в открывшемся окошке. Дождись перезагрузки. Проверь, исчезла ли проблема.
Да я уже нажат на инсталл в подсказке, он сказал что установит Net5 (на 7Мб, лол) и предупреждение ушло. Но список сдк/рантаймов не поменялся.
Мне, как диванному эксперду, кажется, что майки хуиту творят с зоопарком дотнетов.
Вот тебе пример более развернутый.
Вот кстати с лямбдами в коротком виде - хуйня в том, что если ты вот так делаешь - не зная что там делает a.Foo(...)- ты не можешь сказать, это делегат с void или каким-то возвращаемым значением.
Как по мне - нужно убрать нахуй короткую запись лямбды и делать со скобками, чтобы разночтений и необходимости мышкой водить не возникало.
>ты не можешь сказать, это делегат с void или каким-то возвращаемым значением.
все могу и без проблем. Никаких пробле со чтением лямбд
> все могу и без проблем
> var x = () => SuperDupperMethod();
Что будет возвращено после вызова лямбды? Будет ли вообще что-то возвращено? Давай. Вот лямбда, дерзай, у тебя же нет никаких проблем с чтением лямбд.
А было бы нормально написано:
Func<int> x = () => { return SuperDupperMethod(); };
или
Action x = () => { SuperDupperMethod(); };
Вообще никаких проблем бы не возникло. А тут - води мышкой, и это хорошо если в студии сидишь. А если код нельзя открыть в иде? Короче, var и короткая запись там, где тип не очевиден - говно, тот кто так пишет - говнокодер и его нужно выгонять из айТи за целенаправленное вредительство. Завтра он начнет рефлексией доставать приватные методы и выделять руками память, дергать указатели на строки и прочую хуйню делать. Фу таким быть.
> А если код нельзя открыть в иде?
а лямбды тут причем вообще?
это уже проблема var vs Type
ты сам привел пример как явное указание типа решило для тебя проблему чтения
как джсер тебе скажу, что это функция, которая принимает параметр А и возвращает другую функцию, которая вызывает a.Foo(...)
суть в том, что вот так var x пишется очень редко
обычно лямбды используются сразу по месту - LINQ, тот же service.AddSingleton(...)
и даже если ты читаешь без IDE, то как то не встает вопрос, а что там возращает a.Foo(), ведь контекст больше смещен на что делает AddSingleton
так что с этим никогда проблем чтения не было (а я читаю без IDE больше кода чем c IDE).
Вот с неймспейсами больше проблем при таком чтении. Видишь использование класса Foo и хрен поймешь в каком он неймспейсе. После такого многословный импорт в котлине сказкой кажется.
да
https://github.com/shitshitsh3412/ContactsWPF
> Что с ним сделать блядь чтобы ебучие кнопки в EditView заработали?
Прописать им в хамл параметр x:name, затем в код-бихайнд класс добавить соответствующие добавленным именам свойства. Например:
В хамл:
> <Button "x:Name"="TButton1"/>
В классе:
> Button TButton1 { set; get; }
И далее пишешь в коде конструктора класса после InitializeComponent, в котором эти кнопки из хамла прибиндятся к членам код-бихайндового класса:
> TButton1.OnClick += (s, e) => { //твой код };
> конченная хуйня. Что с ним сделать блядь
Юзать Eto.Forms который проще, прозрачнее, и кроссплатформеннен. И хамл код у него попроще. И если тебя насяльника заставляет ебаться с МВВМ, то там это тоже можно реализовать.
>cal:Message.Attach="Delete()"
интересно зачем юзает такое? чем это лучше чем простые команды, кроме того что это хуже
>И если тебя насяльника заставляет ебаться с МВВМ, то там это тоже можно реализовать.
МВВМ - плохо?
> МВВМ - плохо?
Не плохо. Но ты должен понимать, что и для чего ты используешь. МВВМ придуман для больших и сложных приложений, если ты пишешь какую-то мелкую утилиту, юзать там МВВМ - как стрелять из пушки по воробьям.
Сорян. Двачдеформация. Я всё описываю так, будто оно говно. Даже небо. Даже аллах.
Тред тонет кстати. Перекатывать будет кто? Заебали. Перекатывайте.
>МВВМ придуман для больших и сложных приложений
он просто придуман отделить визуальную логику от визуального рендеринга для тестирования и снижения лапши. И размер приложения значения не имеет.
Это всякие призмы придуманы для "больших и сложных", а не сам мввм
> придуман отделить визуальную логику от визуального рендеринга
Нет. Он придуман как решение для уже существующей инфраструктуры, в которой визуальный рендеринг происходит на отдельной системе третьей стороны.
> для тестирования и снижения лапши
Нет. Тестирование и понятность приплелись позже.
Проверим твою эрудицию, о какой третьей стороне речь?
Я долбоёб и ничего не умею, но по чуть-чуть учусь, и уже придумал, что буду первое пилить.
>А есть паттерны для простых маленьких приложений?
MVVM же. не слушай чудиков
Вот твой путь
1 пишешь как в WinForms, то есть обработчики событий, команды (те которые роутед), будешь работать напрямую с контролами если нужно чего то извлечь
2 Потом тебе это надоест и " а где же биндинги, даже в формсах есть биндинги, унылые, но есть" - и вот ты уже юзаешь биндинги, кодишь классы, которые проецируются в этот биндинг - и вот ты уже почти MVVM
3 И потом очередная мысль - а нахера все в кучу в code behind мешать, может вынести в отдельный класс логику" - и вот ты уже изобрел MVVM )
Это настолько простой паттерн, что больше беспокоит "блин нужна будет зависимость от какой то либы где есть всякие ViewModelBase/RelayCommand" чем "ааа зачем мне это сложно"
Наплевать
Если вещи похожи - это не значит что это одно и то же.
Это просто ты пытаешься выдать одно за другое
Те же паттерны прокси, адаптер, политика выглядят как братья в реализации - значит это один паттерн ага
Мы вам перезвоним.
https://тхаб.рф/wiki/Перфолента.NET
Сцук. Я лучше нахуй тогда это погромирование брошу и за станок вернусь.
Двач, кстати, уже под дудосом второй день лежит, по джве минуты посты отправляются.
Походил по ссылкам. Чушь полнейшая. Это русифицированный бейсик, блять. Я понимаю, что это тралинг такой, но надо же тоньше, блять.
Сегодня, во времена юникода, программирование на национальных символах - не проблема.
Проблема у этой жырноты в другом: после того, как 99% кодеров привыкли к описательной пунктуации в ключевых конструкциях, никто больше не вернётся к словесным ключевым конструкциям.
> Класс Собака : Млекопитающее { }
Короче, читаемее и эффективнее, чем
> Класс Собака Родитель Млекопитающее
> Конец Класса
https://dou.ua/forums/topic/36795/
Зато читает ПР-ы в онлайн блокнотах.
В идеале хотел бы использовать tensorflow или pytorch, но как я понимаю, их под C# нет
Хорошо, когда анон сам спрашивает, сам отвечает, и оставляет названия решений для потомков, для истории.
Я ушёл с дотнета по трём причинам:
1. Мало кто использует язык в современных реалиях. В большинстве вакансий, что я видел был старый дотнет (который под винду), WCF и пр. Где-то даже мелькали WinForms и IIS. Очень редко можно было встретить вакансию с современными стеком и архитектурой.
2. От ООП немного начинает подташнивать после какого-то времени. От всей этой лапшы с фабриками, стратегиями и наследованием любой код скатывается в какую-то дичь.
3. Мало кто сейчас пилит на дотнете с нуля новые проекты. Отчасти из-за того, что многие до сих пор думают, что он только под виндой работает
Да мне самому не хотелось уходить. У меня была очень крутая команда. И проект был интересный. Но я походил по собесам и понял, что везде как-то не очень.
А на го как-то побольше интересных вакансий
Более того странно это выглядит в контексте перехода на ГО, который уж точно не про функциональщину.
> компилятор афтоматичиски добавляет ; в конец каждой строки
> поэтому нельзя переносить открывающую скобачьку { на новую строку
Нахуя, блять? Что за блажь ебучая? Зумерам из гугла было лень ; писать?
Зайди в их тред, там еще больше веселого есть. На это специальный язык с низком порогом входа, на котором сложнее говнокодить. Не то чтобы невозможно, но просто заставить обычную макаку писать на нем простую хуйню не создавая проблемы.
2) Если стоит, то как в тесте из Task<ActionResult<List<Zalupa>>> вытащить этот самый List<Zalupa>? result.Result.Value возвращает null, хотя в отладке видно, что значение есть (pic 1).
await ставил на вызов? Выглядит так будто ты резулт смотришь до того как выполнится task.
тебе максимум лицензию на вижуалстудию продавать небудут. Но думаю это можно пережить.
Перекроют доступ к сайту, гитхабу, тем самым возможно пропадет 90% вакансий (стоит еще допустить, что Россию могут от тырнета отключить и будет как в Китае, свой)
"сайту" это ты про msdn? 90% из-за гитхаба и документации, что ж это за ахуенные вакансии такие?
Обойти блокировку раз в год очень сложно. Или ты из тех то обновляет кор при каждом обновлении?
Unity до сих пор на Mono, например.
Я просто тупой в этом плане немножко. Типа я понимаю как это концептуально делается: я должен просто взять, посчитать хеш ключа, затем взять и посмотреть что при хешировании вот этим вот ключем - заголовок и тело JWT - совпадают. Но блин. Я не понимаю как это делается на .net. Я гуглю - JWT Signature validation .net - мне выдает всякое добро про bearer, а мне не для авторизации нужно, а для своих темных дел, и проверка сигнатуры нужна исключительно чтобы знать от кого пришло. Опять же, я начал гуглить - и узнал много интересного про криптографию в .net - но те жк ecdsa у майков как-то странно работают, просто pem - нельзя, какие-то ебатеки с x509, плюс, пока читал - там еще ебатеки с тем что одно работает на линуксе - другое не. А у меня просто блин лежит файлик с публичным ключем и я хочу проверить что jwt-пришел от того самого приложения.
Потому что по желанию левой пятки - майки могут забить на кроссплатформенность, могут захотеть закрыть исходники, дам много чего могут сделать. МОНО - попенсорс, под божественной GPL, так что там - хуй, никуда не денется.
>Нахуя, блять? Что за блажь ебучая? Зумерам из гугла было лень ; писать?
Это та же хрень, что и с питоном. Сначала идет декларация "мы не любим скобки, скобки не нужны, нам хватит отступов", потом срач на кучу лет, что использовать в качестве отступов: табы или пробелы. А потом периодические статьи на тему: "как бы нам впилить скобки или их аналог в пайтон, а то неудобно ведь оказывается"
> могут захотеть закрыть исходники, дам много чего могут сделать.
не могут захотеть. Иначе тогда они вернутся к тому, от чего так настойчиво бегут - "никто не хочет использовать язык и райнтам из-за закрытости". Предыдущее их "мы обещаем не преследовать" никого не убеждало, и только вот такая открытость стала вытаскивать язык из тени жавы.
Угу. Так же как и срайдером. Который вроде как и не принято пиратить, но у каждого второго он пираченый, а у тех кого нет, просто куплен на бабки кабанчика.
>Всё?
Похоже что всё, кто пишет в рашке под дотнет (MS санкционочка) и джаву (Oracle санкционочка) - повод задуматься о смене стека либо об эвакуации, так как репозитории и вся документация в скором времени перестанет быть доступна без танцев с бубном.
Многократное выделение памяти и освобождение — это вообще естественный процесс?
> поэтому нельзя переносить открывающую скобачьку { на новую строку
Чет подобное есть в жабаскрипте, у меня тогда сильно припекло.
Я (есличо) вернусь обратно на фрипаскаль (из которого пришёл в шарп). Он ПОЛНОСТЬЮ опенсорц, не имеет в зависимостях всяких ёбнутых зумерских виртуальных машин и байткода. Запускается на любой системе, включая очень экстравагантные.
Жаль конечно будет переходить обратно на begin end после таких-то удобных скобачек. Эххх...
>Нахуя, блять? Что за блажь ебучая? Зумерам из гугла было лень ; писать?
Я всё понимаю, но этого не понимаю.
мимо бесикоблядь
Я могу понять в чем хуевость динамической типизации, я могу согласиться с определенными пунктами обсирания VB; но единственное, чего я не понимаю, это ебучей точки запятой в каждой строке. Это самый тупой культ в программировании — только ради того, чтобы тебя посчитали "своим".
>>310525
> компилятор афтоматичиски добавляет ; в конец каждой строки
> поэтому нельзя переносить открывающую скобачьку { на новую строку
"вам шашечки или ехать?"
Именно поэтому в VB отсутствуют открывающие скобки, но в GO решили избавиться от ; при этом оставить скобочки. А вообще попахивает несовершенством компилятора. Неужели в 2к22 нельзя научить компилятор при детекте скобок, учитывать контекст предыдущей строки, даже если там стоит ; ?
>Я (есличо) вернусь обратно на фрипаскаль (из которого пришёл в шарп).
Но это же безумие. Это не выход.
Дело привычки.
>>311356
> я не понимаю, это ебучей точки запятой в каждой строке. Это самый тупой культ в программировании
Благодаря ей гугловский парсер разбирает код на термины. Действительно непонятно, зачем им точка с запятой, если у них уже есть конструкция области (scope), то есть скобачьки {}. Видимо так быстрее где-то в чём-то. Я гугловский го парсер не тестировал, не знаю.
> в VB отсутствуют открывающие скобки
В ВБ тем не менее есть области (scope) они начинаются ключевым словом, которое предполагает область и заканчиваются end'ом.
>локальных переменных
сами по себе локальные переменные повисают в стеке. Стек заранее выделен. А вот где их значения - зависит от типа
То есть если у тебя функция инициирует только переменные значимого типа - у тебя будет нулевая аллокация (если нигде не было упаковки)
В случае ссылочного - конечно в куче будет выделено место для значения, а ссылка повиснет в стеке
>Многократное выделение памяти и освобождение — это вообще естественный процесс?
памяти в куче если. это аггрит сборщик мусора. Потому alloc-free алгоритмы приносят свои плоды. Но нужен здравый смысл.
Смотри на частоту сборок мусора и оптимизируй (по возможности) горячие места.
Туда же и memory traffic - незачем копировать если можно не копировать.
>Благодаря ей гугловский парсер разбирает код на термины.
Есть такой локальный язык Zscript для программы Zbrush — там для удобства парсера абсолютно любая операция заключается в скобки. Ну просто песня для парсинга. Зацени объявление переменной MyVariable и присвоение числа 5:
[VarDef, MyVariable, 5]
Просто присвоение там вот такое:
[VarSet, MyVariable, 10]
Шо фсё? Нет, не фсё? Как тебе сложение:
[VarAdd, MyVariable, 42]
А вот с точки зрения человека, там лютый трэш.
[[[Код] превращается], [[в] мегатонны] скобочек]
Но компилятору удобна )))))
Забавная хрень. Бывает же!
Потому что блять, код не только пишется, но еще и рефакторится и отлаживается. И вот если в первом случае все эти модные флюшки вроде отсутствия точек с запятыми или отступы вместо скобок еще норм, то вот во втором и третьем случае начинается пиздец.
Отказ от точек с запятыми вообще никак не влияет ни на отладку ни на тем более рефакторинг, чем меньше символов на экране тем проще воспринимается текст.
Да, ставил. Второй день пытаюсь, если не лист залуп возвращать, а инт например, то копипаста того, что сейчас возвращает нулл, возвращает нормальное значение.
В словаре с базовыми строками мне нужно находить "вложенные" строки по атрибутам, причём соответствие не должно быть полным, нужно лишь, чтобы были все искомые атрибуты, т.е. другие тоже могут быть. Из всех подходящих вариантов нужно всегда выбирать первый. Вот здесь у меня возникла проблема.
Я хэширую каждый атрибут и запоминаю в отдельный словарь атрибутов (получается Dictionary<string, long>). Для атрибутов каждой вложенной строки хэш составляется как произведение всех хэшей её атрибутов. Итоговый словарь, по которому ищу - Dictionary<string, Dictionary<long, string>>. Собственно, найти какую-нибудь вложенную строку от базовой прохэшировав атрибуты я могу, но как получать именно первый результат? Была мысль заменить хэширование в атрибутах на использование последовательности простых чисел, но это тоже кажется костылём.
tl;dr как хэшировать всё множество так, чтобы понимать, что некоторое подмножество содержится в нём?
Если навешивать к атрибутам в конце пути по дереву строки, то в моём случае миллионы строк могут висеть после конечного узла. Например есть атрибут существительного и лярд существительных. А ещё префиксное дерево не особо уживается со структурой, при которой есть базовая строка и связанные с ней вложенные. По крайней мере не понимаю как это увязать.
Случайно прохожу. Поздно начал только с заданиями, плюс откисал неделю после великой победы пыни.
Я перестал делать т.к на основной работе дохуя тасков, нет времени + еще на две работы пригласили, так что нет смысла идти к ним
А ты сам откуда? Может помочь могу, Контур это слишком большая контора для вката с нуля, слишком большие требования и там не требуются джуны
Спасибо, анон. Впрочем, решил задачу ту, просто не совсем эффективно.
А сколько у тебя тех атрибутов? Может проще их флагами битовыми заебенить, а потом по маске просто искать.
Суть задачи:
Есть некий товар и его остаток на складе, например 100 штук, товар можно забронировать, тогда его остаток на складе уменьшается на определённое число а в другую таблицу соответсвенно пишется запись о брони таким-то юзером такого-то товара. Собственно проблемы у меня начинаются когда допустим 10 потоков пытаются бронировать 1 товар. Например 10 потоков по 100 раз бронируют по 2-3 штуки товара, мне нужно чтобы:
товар доставался первому бронирующему в честной конкурентной борьбе - кто первый бронирует, тому и достаётся товар
не получилось так, чтобы забронировался товар без остатка
верно подсчитывался остаток после бронирования
верно сохранялась информация о брони
Плдскажите в какую сторону копать пожалуйста.
99 штук. С битовыми масками годная идея, попробую, спасибо.
Ну с дивана могу посоветовать добавить товарам блокировки, а лучше состояния. Кажется в СУБД такое искаропки есть.
Смысл в том, что если товар получил запрос на некую транзакцию, он переводит своё состояние в "занято", и сколько бы ни было потоков, они при открытии транзакции получают ответ, что занято и надо подождать.
Когда первая транзакция завершится, открывается вторая в очереди. Статус не меняется, очередь растёт. Насколько это уязвимо к хайлоаду я ХЗ. С дивана же советую.
Ну это решение мне приходило в голову, одна проблема, не знаю как написать такую "очередь"
Если на одну транзакцию уходит 0.5 секунды для юзера, то при 1000 пользователях конечному придется ждать 500 секунд?
Я следовал инструкции:https://developers.google.com/identity/sign-in/web/sign-in
получил свой OAuth 2.0 айди 32082523667-b4a2752lb52cq01popq6hgcqvbeхххх.apps.googleusercontent.com
в итоге у меня ошибка пик 2
Они хоть бы написали в чем дело, почему не работает? Я же понятие не имею!
Может кто-то спокойно обяснить что они хотят? потмоу что в их документации какая-то шиза от
Просто вставте копипаст себе на страницу и все будет работать до
вам нужен этот айди, но зачем мы вам не скажем, а вообще запилите видео на ютуб как вы разрабатывали сайт.
Лол, тут оказывается не только я из волгограда. Вроде конторка интегрикс называется, я не подавал, но у меня друг туда кидал резюме и ему давали такое же тз.
Анончик, а ты где работаешь?
Как сделать инициализацию проще?
Один раз передали объект без усилий инициализации 10
Где более-менее есть примеры
тогда гуглить ja-netfilter на гитхабе
>Вроде конторка интегрикс называется,
Я х.з. не помню контору только город.
>я не подавал, но у меня друг туда кидал резюме и ему давали такое же тз.
Я тоже не подавал, кореш мой устраивался. Лол, может ты это я?
>И ты делал? поделись))))
Нет, не делал. Но там ничего сложного.
На бэке ебашишь сервис с бд, через асп.нет. В бд минимум две таблицы - одна с остатками товара, вторая в которой информация о зарезервированном товаре.
У сервиса делаешь два маршрута. Один принимает заявку на бронирование, заявке присваивается гуид, она помещается куда-нибудь в кэш заявок (или отдельная, третья, таблица необработанных заявок в б.д. или синглтон какой-нибудь - на уровне задачи похуй, но в реале бд надежнее) и в ответ на запрос возвращает гуид заявки.
Имея этот гуид сервис может обратиться по второму маршруту и узнать статус заявки:
- необработана (заявка все еще в очереди)
- обработана-товар зарезервирован,
- иди нахуй - товара нет
Сам сервис по интервалу времени постоянно берет из кэша пачку заявок, смотрит сколько нужно товара, извлекает его из бд из первой таблицы (либо весь необходимый для покрытия заявок, либо сколько есть), раскидывает товар по заявкам в порядке их прихода, и помещает обработанные заявки в таблицу обработанных заявок с количеством зарезервированного товара.
Те заявки на которые товара не хватило обрабатывай на свое усмотрение, либо просто выкидывай, либо в ту же таблицу но с пометкой "послать клиента нахуй". Это все можно кварцем прикрутить - норм будет.
На клиентской части просто делаешь библиотеку с двумя апишками. По одной делаешь заявку, по второй проверяешь статус. Потом цепляешь эту библиотеку к любой приложухе, хоть консоль, хоть wpf и в кучу потоков начинаешь резервировать товары.
Сделал бля, отправил на проверку, итог:
Комментарий от тимлида: Вы смогли защитить код метода Reserve в рамках одного процесса - теперь представьте, что ваша программа работает в нескольких экземплярах. как будет работать бронирование товаров в этом случае? Я думаю, что Вам нужно еще подумать над решением.
Если у тебя в шарпе возникают такие вопросы, то ты где-то пошел не туда. Пальцем в небо могу предположить, байт на 50-100, для ссылочного типа.
Да это просто загон был. Иногда трудно справиться с приступами преждевременной оптимизации.
Синглтон ебани потокобезопасный и мозг не еби. А на претензии, что не ООП-угодно говори, что пацаны во дворе сказали, что норм будет. А если честно, то х.з. мы же не знаю,что там у тебя.
Алсо, если ты действительно устраиваешься в ту контору о которой я думаю и хочешь устроится, то спокойно переделывай тестовое и посылай по второму разу. Шансы пройти есть, если норм сделаешь. Можешь даже еще времени недельку попросить.
>>313908
> как сложно. Нипанятна
Это уровень примерно 4...5 месячного вкатунца с говнокурсов. Т.е. даже не джуна.
Ишак ебаный. Динахуй отседава
рутрэкер
ECDiffieHellmanCng - какая-то хрень. Во-первых, судя по тому что мне студия пишет - только под винду, во-вторых, слишком уж много возни.
Мне-то нужно положить байтики публичного ключа клиента, байтики своего приватного ключа и создать таким вот образом сессионный ключ, чтобы закодировать сообщение.
Пример от майков-то работает, но там нужно либо сертификаты, либо с байтиками, но тогда, как мне студия пишет - только под винду.
Я наверное чего-то не понимаю или не знаю.
Кто-нибудь с криптографией на шарпах-то дело тут имел? Можете пояснить?
Нужен недорогой - на месте потом можно купить мощнее за валюту.
Хватит ли i3, или прямо обязательно i5? В связи с затратами на... командировку все ресурсы на счету до цента.
Чел, ну что ты как целка выдумываешь тут командировки всякие. Так и скажи - "Пацаны я обосрался и съябываю заграницу роняя в спешке кал"
А если по теме, то хуй тебя знает. Если ты каким-нибудь гейдевом на юнити занимаешься, то с i3 тебе будет мучительно и больно. Если ты крудошлеп, то тебе меньше за глаза хватит. Опять же не все от проца зависит, количество оперативы тоже критично, ну и слишком медленный винт тоже головной боли добавит.
Чел, я тебе могу сказать, уже то что тебе, джуну, тимлид хоть какой-то фидбек дал на твое тестовое, говорит, что ты не совсем пропащий. Т.е. если поднапряжешься и исправишь косяки, то имеешь все шансы вкатиться.
Обычно все ограничивается отпиской от самой эчарши, вроде "вы нам не подходите", без подробностей. А чаще всего джунам даже не отвечают.
Я не знаю, что тебе ответить, это слишком сложно для меня. А остальные аноны треда по подвалам сидят без интернетов. Такщта воть. Держи няшку. Не расстраюйся.
Варианты:
1) Большинство не знает
2) Те кто знают, понимают, что это выходит за рамки стандартных знаний по использованию jwt, сертификатов и т.д. и такая информация не выдается просто так хуй пойми кому. И дело даже не в какой-то секретности, а в том что на получение подобной инфы приходится тратить усилия отличные от "посмотреть туториал все о шифровании за полчаса".
3) Мутный ты какой-то. Возьмет анон поможет тебе, а ты его же завтра скамить этим будешь.
Не было нужных моделей с i5, взял с Ризеном 5.
SSD на 512, 8 оперативки. Я крудошлёп, но юнька - хобби.
В принципе на форсмажорные времена сойдет. Если конечно ты не собираешься кучу серваков в докере крутить, то сойдет.
Удачи в бегстве. Расскажешь потом как доехал.
>Сейчас планирую немного подзабить на ненужные дисциплины
Плохая идея. Ты либо забивай совсем на все, либо тащи все. Преподы необязательных дисциплин как раз и кормятся с таких, как ты т.к. прекрасно понимают, что может тебе их сраная философия или история нахрен не нужна, но если ты не сдашь ему зачет, то хуй ты допустишься до сессии и соттветственно, хуй ты дальше пойдешь.
Если уж решил забивать, то договаривайся с преподами сразу на берегу, в начале, что не будешь учить их предмет и во что тебе это обойдется.
>The Player's Guide
Судя по описанию, очередная хуета для зумерков, для которых обычные методы обучения - "сложна,..". Модное обучение в околоигровой форме, для даунов у которых проблемы с концентрацией на одной теме длительное время.
>metanit.com
Забудте вы про метанит. Это хороший сайт, но он не для обучения. Основное его назначение, это "бля забыл, как эта хуета правильно используется, загляну по быстрому в справочник".
Если ты будешь по нему учиться, то мимо тебя пройдет дохуя нужной информации.
>Пока что 3-я неделя изучения, к ASP.NET даже не притрагивался.
Еще полгода-год можешь и не притрагиваться, пока основы шарпа нормально знать не будешь.
>Может ли кто-то натолкнуть на верный путь, как лучше взяться за основы веба?
Ебашишь базу, потом Asp.Net in action.
>Стоит ли вообще идти в веб, если интеллектуальные способности ниже среднего?
Стоит учиться и становиться умным, тогда можешь хоть куда идти.
>Буду благодарен каждому ответу.
Забыл сказать. Я бы советовал читать Албахари. Причем и полную версию для методического изучения. И краткую версию справочника таскать постоянно с собой, чтобы читать в свободное время и обновлять знания.
Канал Хача.
ты заебистый, уже не понятно зачем брать такого заебистого. джун должен делать так как принято и не выебываться.
Почему он в запросе это выдаёт?
Timeouts are not supported on this stream.
А что он должен выдавать? MemoryStream не поддерживает таймаут (в силу бесполезности) и сообщает об этом.
Почему MemoryStream? Да потому что клиент по дефолту он читает все тело ответа прежде чем вернет. И читает он его в MemoryStrea. Чтобы возвращал управление сразу после того как пришли хидеры, нужно указывать HttpCompletionOption.ResponseContentRead
Тогда можно будет сразу после получения хидеров получить поток и сразу из него читать (но конечно не в твоем случае ибо у тебя вообще положено на асинхронность .Result вместо await)
Ну, допустим...
Я другого способа не знаю.
Можешь конечно запилить, допустим, словарик с Enum'ом ключ - элемент enum'а значение - строка. Но это дополнительно нужно будет всегда чтобы получить строку - обращаться к этому словарику, а проверка всегда будет сводиться к проверке значений в словарике.
А вот в жаве - есть енумы, которым можно какие хош значения прихуячивать. Вот я хуй знает почему все так копротивляются такие же в шарп добавить. Охуенная вещь же.
Да, я как обычно еблан, забываю что в Any можно так же передавать условие. Т.е. то что в Where - в Any можно запихать и на строчку меньше выйдет.
>Ну, допустим...
447>Можешь конечно запилить, допустим, словарик с Enum'ом ключ - элемент enum'а значение - строка.
Так а профит в чем? Все равно для добавления нужно лезть и в enum, и в словарь.
А как ты скриншоты делаешь, что они у тебя по порядку нумеруются?
Ну а если серьезно. Нахуа?
Какой кейс ты пытаешься решить этим?
Если ты используешь константы, то присваивая эти значения где-то в коде ты и так знаешь, что ты присваиваешь (хотя судя по тому, что ты называешь их переменными, ты слабо представляешь что представляют из себя константы в шарпе)
Если ты берешь это откуда-то динамически, то нахуй тебе константы.
Ну и судя по содержимому, все это вполне можно через какой-нибудь конфиг прокидывать и брать оттуда.
>Вот я хуй знает почему все так копротивляются такие же в шарп добавить.
1) С учетом того как устроены строки под капотом шарпа (а точнее clr) - нахуй не нужны
2) С учетом разных альтернатив (вплоть до запиливания собственного енама) - тоже нахуй не нужны.
Самодостаточность? Нет, нахуй нужно. И еще какой-то кретин пиздел в тредике про низкоуровеньщину.
https://github.com/dotnet/corert/search?l=c++&p=4
Рантайм, тобишь БАЗА до сих пор на крестах, то есть без крестов это говно нормально нигде не запуститься.
Когда вы пишите на крестах, вам никто не нужен, но всем нужны кресты. Какая ирония. А могли бы один язык выучить и спокойно заниматься настоящим программированием, а не выступать в веб цирке с gay.js клоунами
>Рантайм, тобишь БАЗА до сих пор на крестах, то есть без крестов это говно нормально нигде не запуститься.
Вот бы мне еще на это не похуй было.
Вот будет дефицит серверов (если даже серые через Казахстан/Армению/Турцию/етц не смогут ввозить), тогда и будем на крестах писать
> Рантайм, тобишь БАЗА до сих пор на крестах, то есть без крестов это говно нормально нигде не запуститься.
Ты не понимаешь вообще, что такое рантайм, няша.
А в чем проблема? Ну gay.js так gay.js, почему меня должно сильно беспокоить, что где-то там в недрах CLR есть код на С++? Зачем дрочить на самодостаточность?
Самодостаточность - это про Golang, где и компилятор, и рантайм написаны на Go.
Есть задание, где пользователь выбирает раздел реестра.
Как можно реализовать выбор раздел реестра?
Через folderBrowserDialog не может выбраться путь с реестрами, всегда мне выдаёт дефолтный "Мои документы", хоть я и кодом пытался выставить систему, потом в настройке на форме тоже выставлял систему, нихуя.
Если тебе нужно сорт-оф regedit - то бери обычный TreeView и заполняй содержимым риестра.
https://docs.microsoft.com/ru-ru/dotnet/api/microsoft.win32.registry?view=net-6.0
>Если тебе нужно сорт-оф regedit
Ну мне нужно чтобы пользователь зашёл в regedit и выбрал там папку.
Через folderBrowserDialog нельзя зайти в регистры. думал может там изначальный путь изменить можно чтобы зашёл грубо говоря в regedit
Задание пикрил
если не знаешь пхп, то зачем делать на пхп?
На шарпе конечно сильно приятнее, чем на пхп. СИЛЬНО.
Реестр - это не папка где-то на диске. Это файл с базой данных где-то на диске. Стало быть, стандартным диалогом он не откроется. Вообще никак. Ответ тебе дали. Иди по ссылке читай.
Кстати, если бы майки догадались переименовать "реестр" в "Windows Settings Database" - все зумеры были бы их.
Хорошо, спасибо.
С EF Core сделал код фёрст базу данных (делаю имиджборду на MVC).
Class Board (id, name, List<Thread>)
Class Thread (id, text, List<Post>)
Так вот - добавил миграции, апдейтнул бд - всё ок. Все в бд зависимости и связи тоже - У таблицы Threads есть столбик BoardID, всё ок.
Вопрос - Я хочу в контроллере BoardsController через экшн GetThreads получить все треды на борде выбранной. Как это сделать? Я хотел что-то типа
public IActionResult GetThreads(int? id)
{
var threads = _context.Threads.Where(t => t.BoardID == id);
return View(threads);
}
Но естественно у Threads мне недоступен BoardID, потому что в классе не описан (а в бд создался еф кором)
Как мне такое вот сделать?
Я погуглил - Я типа обязательно в свойствах класса должен указать что-то типа public int BoardId?
Я как то натыкался на эти уроки, там вроде не супер подробно объясняется, мне бы посильнее разжевать надо
Вот оно, развращающее влияние юнити на мозги. Да, прикинь, должен.
Это, для тех кто не в курсе, у юнити принято класть хуй на модификаторы доступа и через атрибуты редактор юнити с лёгкостью получает доступ к приватным членам классов в скриптах. Это пиздец, нахуй!
Ну блин, я первый раз код Фёрст делаю, до этого всегда проектировал бд руками и скаффолдил так сказать, а в обратную сторону даже не подумал чёт
Посмотри на libgen, что есть по теме. Только для ознакомления, естественно. Чтобы потом обязательно купить заинтересовавшую книгу.
https://libgen.is/search.php?&req=windows+presentation+foundation&phrase=1&view=simple&column=def&sort=year&sortmode=DESC
Надо запускать сканирование папки на наличие новых файлов (если файлы есть - отправляю по API контрагенту).
Так же, если есть файлы от контрагента - скачиваю их.
Я хочу это запихнуть в одну ViewModel и в конструкторе вызвать методы (условно) "Outbound.Start()", "Inbound.Start()", но есть одно но: я так полагаю это нарушает ебаный принцип единой отвественности ибо моя VM становится ответственнена за включение и выключение каких-то двух хуёвин. Че делать? Или норм?
ну всякие действия в конструкторе кроме присвоения полей - зло
ну а так...вьюмоделям такое норм. для них норма страдать от ожирения и быть перегруженными и данными для отображения и командами и прочим. Это неприятно, но типично, но неприятно
Конечно чем больше умеет тем больше ей нужно зависимостей и нужно как то распихивать это чтобы меньше было разношерстного в одной вьюмодели
так то VM в MVVM - НЕ ЗНАЧИТ что нужно делать канонично все. Нет никаких правил описывающих как именно должен быть реализован этот слой. Потому мудри что хочешь, лишь бы фреймворк позволял
Изучаю C# 1.5 года
Чем владею:
• C#
• WPF (MVVM), WinForms
• Entity Framework Core
• xUnit
• Autofac
• MS SQL
С чем знаком:
• ASP.NET (MVC)
• Migrations
• Neo4j
Был опыт работы с HTTP протоколами, сокетами (tcp/udp), портами.
Знаю принципы SOLID, GoF паттерны и некоторые паттерны для параллельного программирования, DI/IoC, автотесты
зачем удалять что-то?
имел дело с чем то,значит знаком и потому упоминаешь. Значит тебе не нужно с нуля изучать эту технологию.
Ты же не утверждаешь что ты в этом списке во всем профи, а всего лишь то, что ты можешь с этим работать.
К Autofac'у добавиь стандартный майкрософтовский DI
К EF добавь еще какую-нибудь orm, даппер там, или еще что-нибудь.
Хорошо когда указан уровень владения sql-ем. Плюс одного MS SQL мало, хотя бы постгрес изучи.
Напиши, с чем конкретно работал с .Net Framework и .Net Core. (даже если это очевидно, все равно пиши)
Nlog
Rest API
Типа веб-сервис, есть списочек СПА-приложений с путями. Нужно чтобы пользователь по условному пути: www.example/app1 - получал веб-морду спа-приложения и работал с ним будто к нему напрямую подключился.
Я просто хуйнул мидлварь. Беру из контекста имя приложения, смотрю в списочке, пересылаю запрос куда надо, копирую результат.
Так вот. С чем столкнулся в контексте СПА. 1. По какой-то непонятной причине - все, блядь, поганят роут на стороне фронта, в результате - все что более-менее статичное - работает, но если хуйня пытается к своему апи обращаться - все, пизда. 2. В не СПА, допустим приложение это обычный yginx который дергает пхп-скрипты - при попытке скрипты эти выполнить - белая страница, при том что судя по тому что отдает сайт - HttpClient - я все нормально получил, достал заголовки, ответ скопировал, но нихуя. Ну и мелкая проблема была, но ее довольно просто решил - это то что скрипты, стили - не грузились через прокси, но это таки решается тем что я заменяю все стандартные пути на мое прокси и через него гоняю.
Так вот. Как решить 1 и 2? Я не понимаю. Типа эти пути - могут быть захардкожены в приложении и так же просто как с ref="/img/lol.png" - не получится.
Кто делал подобное? Как это делается?
Еба, огромное спасибо за эту годноту, я думал кроме Флибусты нет сайтов подобных
да книги то не проблема. проблема - сами книги
книги == очень медленное и обычно "не туда" повествование. Я вот не могу книги ну никак. только статьи, чужой код...
А книги ну слишком нудно
Не знаю, мне почему-то в книгах больше нравится, там подробнее объясняют, есть какие-то контрольные точки. В хорошим по крайней мере.
Ты просто не умеешь работать с книгами. У книг есть оглавление. Есть номера страниц, которые можно пролистать по ссылке из оглавления. Прииикииинь? Оказывается, книгу не обязательно читать от начала до конца! Можно заглянуть в середину и даже (о ужас!) в конец и сразу узнать, чем закончится!
>>231932
>Оказывается, книгу не обязательно читать от начала до конца!
А еще ее можно вообще не читать, а нагуглить материал, который подан сжато, доходчиво и под разными углами, чем выискивать где это в книге (книгах). Гугл = тоже оглавление
>Гугл = тоже оглавление
По факту если ты правильно сформируешь запрос, то тебе первой ссылкой выкинет на тот же MSDN, который мало чем отличается от книги и у которого, вот сюрприз, есть свое оглавление. Дальше будет стековерфлоу, в котором тоже, прикинь, народ часто ссылается либо на ту же документацию, либо на те же книги.
А дальше будет дрисня вроде рекламы, кривых копий стековерфлоу с кучей рекламы ну и видосы с индусами, которые на своем овечьем хинглише будут час тебе разжевывать, то что читается за несколько минут в книге.
Редко когда попадается толковая статья которая рассматривает какие-нибудь редкие случаи.
>то что читается за несколько минут в книге.
если это не решение какой то проблемы то so просто пропускаю
если это не базовое "забыл пример". то и msdn (хотя можно просто загуглить "такое то + пример")
Остаются статьи в стиле "как сделать это и что это такое". открываю с 10к вкладок, читаю по диагонали, приходит понимание. с 99% вероятностью натыкаюсь на глубокую статью, которую кидаю в закладки как кладешь инфы по данному вопросу
>Редко когда попадается толковая статья которая рассматривает какие-нибудь редкие случаи.
все относительно. ну да на 1 такую статью можно открыть 20 вкладок, но после нахождения онной цель достигнута и хлам можно закрыть
вот ты прочел в книге, но не понял, то ли подано неудачно, то ли не раскрыты детали
что делать будешь? другую книгу брать?
Да похуй. Уже больше 50 часов потратил на изучение пхп и освоился немного. Особенно доставляет заголовки для элементов массивов и не типизированные переменные. Сейчас ебусь с фронтендом. Тут блять своих приколов дохуя, но вроде справляюсь.
Есть дочерний cshtml (пусть будет DisabledProfile), у которого есть свой дочерний cshtml (Filters), в котором используется метод getNumber. Можно ли как-то в DisabledProfile заоверрайдить значение ViewBag.Number или жыэс функцию? Если да, то как?
>Уже больше 50 часов потратил на изучение пхп и освоился немного
пхп хоть и пытается стать слаботипизированной жавой, но никогда не сможет избавиться от того, что он был рожден шаблонизатором, то есть своих детских болячек - автоперевод в int, безумные несогласованные названия всего, однопоточность, отсутствие исключений в ядре, невменяемая обработка ошибок и так далее.
И что-то да обязательно вылезет на продакшене.
Помню у меня так вылезло боком стремление все переводить в число. Я сериализовывал и обратно словарик (ака ассоциативный массив) и в один момент все нае...упало. Оказалось, он при десериализации пытался ключи массива читать как числа типа '123abc' => 123. Полечил простым добавлением _ к названию ключа на записи и чтении, чтобы он не смог его в число превратить. Но узнал то я о такой подлянке уже в продакшене.
У пхп только один плюс - у него на одном пуле процессов можно сделать бесконечное количество сайтов (в отличие от того же руби/питона/шарпа).
Нода нужна для разработки, она из твоего говнокода будет собирать приложуху и гонять ее, чтобы ты мог заниматься отладкой и т.д.
Судя по фуллстаку это скрин с фриланс биржи. Так что гуляй, мальчик, шарп применяется в настоящем секторе экономики.
В общем учу ЖС и чтобы понять что такое ООП начал ковырять шарп, в документации есть гайд по классам, начал его делать и соснул хуя, пруф на пике.
Понятное дело, что в таком случае нам небходим сеттер, и что без него свойство является "только для чтения", но вот если я создаю простенький сеттер уровня:
set
{
balance = value;
}
то получаю бесконечный цикл. Ориентируясь на знания из ЖС учебника я бы создал свойство private decimal _balance и balance с геттером и сеттером соответственно, но я не знаю насколько это легитимно в шарпе, так как это решения из сахарного недоООП ЖС, плюс в гайде об этом как не говорится. В общем как правильно поступить в этом случае? С меня как всегда.
>я бы создал свойство private decimal _balance и balance с геттером и сеттером соответственно
так и надо. {get; set;} сахар всего лишь создает __backingField за вас. Но без этого сахара все ручками (в отличие от хотя бы котлина, где кроме ссылки на значения value есть и ссылка field)
Понял, а как тогда насчет конвенции? Я так понял через подчеркивание (_balance) в шарпе не пишут, а вместо этого геттер/сеттер называют с большой буквы, а свойство (поле?) называют с маленькой. Так и делать?
Алсо как я понял все такие поля должны быть private, как опять же говорится в доках, но при этом при создании полей (свойств??) с {get; set;} используют public, и это логично, но не соответствует конвенции, можете прояснить этот момент?
При создании public свойств ты задаешь сеттеры / геттеры и в них пишешь свою логику. Можешь не просто public Zaloopa {get{ return zaloopa;} делать, а какую-то предварительную обработку.
>Понял, а как тогда насчет конвенции?
Да как и везде - "кто в лес, кто по дрова"
в исходниках фреймворка всякие m_state, s_LinkedTokenCancelDelegate
мне же нравится просто _state
да и просто иду по пути наименьшего сопротивления "как принято в инструментарии", а у меня это решарпер.
правда и решарпер сам не знает чего хочет. задолбал постоянно жаловаться на
const string AnyValue =
и предлагать переименовать в
const string ANY_VALUE =
а после перезапуска студии (или хз по какому триггеру) - жалуется и предлагает переименовать обратно. И так по кругу
Это у тебя библиотека, а не программа. Ее надо открыть, как библиотеку в другом проекте.
Это же написано на скрине.
Спасибо, добрый человек!
>правда и решарпер сам не знает чего хочет. задолбал постоянно жаловаться на
.editorconfig настрой и пропиши там правила.
>Понял, а как тогда насчет конвенции? Я так понял через подчеркивание (_balance) в шарпе не пишут, а вместо этого геттер/сеттер называют с большой буквы, а свойство (поле?) называют с маленькой.
В современном кодстайле в шарпе принято приватные поля класса называть с подчеркивания + lowerCamelCase
Свойства принято называть в UpperCamelCase
Пихать логику в геттеры-сеттеры сейчас не принято (вроде как даже многие голосуют, за выпил этого из шарпа). Обычно, если ты это делаешь, то ты уже где-то проебался с архитектурой. Допустим, то, что у тебя на скрине >>321204 уже нихуя не ООП-угодно. Это либо в отдельный метод нужно выносить, либо в отдельную структуру/класс
Но при этом когда мы пробуем прочитать участок из файла то оффсет (отступ) указываем как инт?
Тоесть мы интом буквально не можем указать читать файл с какого-то места если его размер превышает максимальное значение инта?
Какой-то Абсурд
>Питоном вкатиться будет куда сложнее, т.к. его пытаются учить все кому не лень
А также использовать все кому не лень.
С ним проще найти работу.
Питон очень неплох, если бы правда не GIL
Одногруппник сдал msdn'овский тест по .net framework (вроде, один хуй тест уже недоступен), с полученным сертификатом нашел работу.
Я питонистом искал работу около года, нашел хуйню в которой питон почти не нужен был, уже в компании выучил шарп с дотнетом и сменил проект, месяца 2 назад сказал что хочу уволиться и мне еще замену не нашли.
Выводы делай сам.
Как много питонистов-вкатывальщиков, так много и разных затычек на проектах для них -- дата инженегры, бекенд разработчики, автоматизаторы хуйни, чел чтобы включать кофемашинку. Я бы сказал что в обоих случаях сложность получения работы примерно одинакова, но рекомендовал бы шарпы, т.к. приучишь себя к полезным вещам в слабо-типизируемых языках.
По поводу стажировок и курсов -- чекни епам тренинги и яндекс академию, объявления на хх.ру и линкедине или что у тебя в регионе популярно.
>Я питонистом искал работу около года
Это очень общая фраза.
Вопрос в том на сколько вакансий ты собеседовался.
Спасибо за инфу, анон. А что думаешь по поводу Java? Насколько я понял, Java и Шарп очень похожи, но по ощущениям стажировок и прочего по Java больше, чем по .NET. Просто глаза разбегаются со всем этим многообразием языков, если честно. Сложно понять куда инвестировать время и силы
>А что думаешь по поводу Java?
ага, как ваз и иномарка. обе машины, на обоих можно ездить, но есть нюанс
И да, можешь пожалуйста рассказать как ты примерно учил шарп и донет? Может какой-то курс проходил и читал что-то? Так сказать небольшой роадмэп бы увидеть, чтобы лучше понимать что учить и откуда брать
>как ты примерно учил шарп
Открываешь справочник Албахари и учишь все подряд. В шарпе нужно знать все.
А дальше забиваешь в поиске .net developer roadmap и подбираешь, то что тебе по нраву.
Вот например вполне годный для бэкендера:
https://github.com/MoienTajik/AspNetCore-Developer-Roadmap
Погоди, тогда я ничерта не понимаю, вот у меня есть файл, я открываю стрим, и хочу его прочитать, но частями (предположим файл 14 гб а озу у меня только 8 свободно 4) тогда как мне прочитать часть стрима?
Ну ебана. Сказали же - доки читай.
Перемотку используй:
long Seek(long offset, SeekOrigin origin)
В документации идет сразу же после методов чтения. Совсем себе мозги видосиками разжижили, пару лишних строчек прочитать не осиливают.
Да. Вместо него грпц или вцф
блять, то есть он даже языком уже не поддерживается, а мы это учим? ебаный стыд
ну так фреймворк никуда не делся. То, что кор пришел ему на замену, не значит что сразу все на него перешли. Дюже дорогое удовольствие.
Так что шанс попасть на работу, где все легаси - довольно высокий.
бля братан, я в своей шараги тоже дохуя бесполезного делаю, но у тебя хотя бы надо на шарпе писать
var post = new Post(Images=_images)
_context.add(post)
И у меня и в табличке Posts и в табличке Images создаются записи (потому что есть связь 1-много)
А вот теперь если я из бд хочу пост с картинками достать (и хранить это в модели Post с полем list<images>) - надо писать linq запрос с джоинами и вот этим вот всем, или я что-то неправильно делаю всё-таки?
Я нашел! За такое в еф отвечает Include() он как раз в соответствующую модель добавит то, что по связи должно входить
Оно в докере? Очереди прикрутил? Верстка адаптивная? Вебемки загружать можно? Что там с продажей пасскодов? Админкой?
Вообще. Я не верю что ты серьезно спрашиваешь. Я вот первую работу нашел, после того как в консольке сделал хелловорлд и на формах хуйнул рисование прямой по алгоритму брезенхема, кек. Просто решил, что хули я буду сидеть и нихуя не делать. Пришел на собес, сказал что знаю шарпы и перечислил технологии про которые слышал. Все. Взяли. Да, это было в 2020м. Так что да, можешь идти искать работу жуниором,
Это один из первых вариантов.
Я потом вроде бы делал с нормальным выводом без мерцания. Но мне лень сейчас это искать, собирать и новую гифку записывать.
Эта картинка просто валялась в удобном месте.
Допустим есть абстрактный сервис который выполняется
у него есть поле типа
public ServiceState State {get;}
и для желающих наблюдать за изменениями ну пусть будет событие такое
public event EventHandler<ServiceState> StateChanged = delegate { };
И вот у вас гуи, где юзер открыл окошко, оно подключилось к этому сервису и показывает актуальное состояние, юзер закрыл, переоткрыл, то есть нельзя подписаться заранее до старта сервиса.
Кто как будет решать проблему чтения текущего State и подписки на изменения без побочных эффектов от гонки потоков?
Ну смотри. Есть у тебя сервис, он работает, у него какое то свойство, которое меняется и событие, которое сигнализирует об этом изменении. Сервис изнутри меняет свойствои сигнализирует об его изменении.
Если просто читаешь время от времени это свойство, то все норм. И если подписался до старта сервиса, то тоже норм ибо события не пропустишь.
Но ты подключаешься в рэндомный момент и плохое решение выглядит так
1 свойство State = States.Foo
2 мы подключаемся, читаем свойство State, и собираемся подписаться
3 Пока мы шагали до подписки на событие, то State = States.Bar
4 Мы подписываемся на событие изменения и начинаем следить. В итоге мы изменение не видели и в полной уверенности что там Foo, а на деле оно Bar
ну в общем то классика.
>Конечно. Мы же ещё не подписались.
ну как бы это и так понятно
а теперь вернемся к первоначальному вопросу
Кто как будет решать проблему чтения текущего State и подписки на изменения без побочных эффектов от гонки потоков?
Проекты MS Dynamic, но там махровое легаси с WPF. Релок очень интересен, но вдруг легаси с WPF будет унылым?
Офк переезжай, уровень жизни апнешь, западные ребята тебя научат важному и главному, а дальше дела еще лучше пойдут
Если у тя ObservableCollection забинжено к DataGrid, то просто повесь событие на CollectionChanged или чето типа того, а в нём просто добавляй и изменяй. К примеру:
void OnCollectionChanged()
{
if(item.Id == 0) //ну или чето другое
database.Add(item)
else
database.Update(item)
}
это очень грубо говоря и не самый лучший способ. Лучше повесить ICommand в котором изменять коллекцию и асинхронно изменять бд. А еще лучше - иди на ruSO, там очень быстро отвечают по шарпу пару челов
Я через рефлексию получаю коллекцию каких-то различных типов(штук 5 видов в различных количествах) в формате object[] и передаю его как лист в определенную фабрику в зависимости от задачи. Там они просто кастятся к нужным типам/провожу валидацию и создаю готовый объект.
Мне очень не нравится, что приходится в фабрику передавать лист обджектов. Это вообще норма или хуйня и нужно переделать?
Если переделать, то как?
Думал насчёт анонимных типов. В эту сторону гуглить? Или dynamic параметр сделать? По скорости и затратности каста мне разницы нет, это происходит только один раз, дальше просто эти данные живут на протяжении всей работы.
>>323007
>>323252
Просто ты проблему на пустом месте создаешь.
Классический подход при решении такой хуйни: у тебя есть стейт где-то. Текущий стейт при этом иммутабельный. И он - единственный источник истины. Как там есть - то и считаем правдной.
Так вот. В контексте классических приложений этот стейт кладут в БД. Все. В контексте фронта - его выносят в какой-нибудь редакс, ngrx или vuex. Все. Твои сервисы - свое состояние коммитят в БД/стор. Твои вьюшки достают из бд/стора при коммите новое состояние. БД/Стор - при этом иммутабельны по своей природе, пока там что-то пишется, тот кто возьмет данные - получит правду на момент обращения, когда коммит будет завершен - он будет оповещен и елси нужно - обратится снова и получит новое состояние.
Если тебе не нравится так и ты хочешь стейт прямо в сервисе хранить. Ну ок. Ты делаешь его иммутабельным, реализуешь потокобезопасный коммит(это уже детали реализации как ты это делать будешь). Любой кому нужно узнать текущий стейт - получит копию закоммиченного на момент обращения, при очередном коммите стейта - ты просто оповещаешь тех кому надо о том, что стейт был закоммичен - достаньте новый и сделайте что вам там надо.
Если тебе нужно в две стороны это все делать, т.е. из вьюхи как-то менять стейт сервиса - опять же, была бы база - это бы сразу решало проблему. Но ты видимо принципиально не хочешь базой пользоваться, тогда выносишь стейт в промежуточную сущность, обзываешь его чем-то типа vuewModel или controller и вот так вот коммуницируешь.
А про гонку и прочее. Оно тут вообще ни к селу, ни к городу. В том кейсе который ты описал - там никакой гонки быть не может в принципе, т.к. сделать безопасное чтение, при условии что пишет один поток - не представляется чем-то сложным, а ситуация когда стейт меняет несколько потоков - долбоебизм.
Я его использую.
Просто у меня в конечном итоге получается массив к примеру {string, bool, mytype, int}. И меня интересует как лучше его передавать параметром. В каждой фабрике я уже знаю на каком идексе какой тип и какие могут отсутствовать. Поэтому могу просто (string)param[0] перекинуть в конструктор, либо посмотреть после каста значение и дальше решать кидать его или нет.
>Так вот. В контексте классических приложений этот стейт кладут в БД. Все
хватит мыслить категориями классических CRUD приложений с базами данных.
я говорю совсем про другую проблему. Она ближе к теме "события + мультипоточность" (для примера вот https://www.codeproject.com/Articles/886223/Csharp-Multithreading-and-Events ) И базы данных там даже рядом не лежало. В приложении вообще может не быть никакой базы данных.
ты просто зацепился за слова сервис и стейт из примера. И понеслось
Хорошо. пусть это будет датчик (много датчиков) и его состояние. Датчик может менять свое состояние и делать это может как триллион раз в секунду, так и 1 раз в год, то есть время смены состояния неизвестно. И у него есть свойство где можно прочитать текущее значение, ну и событие чтобы подписаться на изменения. И очевидно!!! что база данных тут вообще не к месту - какая разница где хранить текущее состояние? - А НИКАКОЙ. Нет никакого смысла где-то еще хранить, если у нас оно и так хранится в свойстве - бери да читай.
И вот тебе нужно в РЭНДОМНЫЙ момент атачиться к этому датчику и начинать активно за ним следить, переставать следить, снова подключаться.
>А про гонку и прочее. Оно тут вообще ни к селу, ни к городу.
И гонка тут как раз основа всего. Тут хранение состояния "где-то еще" нахер не нужна, ибо и так у датчика можно спросить актуальное состояние. И проблемы чтения стейта нет - бери да читай, это атомарно.
Тут проблема "чтения текущего значения + одновременной подписки"
Если прочитать и сразу подписаться, то можно пропустить переключение.
Если подписаться и начать читать, то обработчик может сработать раньше и выполнить код, который нельзя на этот момент выполнять (еще не было чтения и первичной инициализации)
И тут решение нисколько не простое.
Навскидку можно несколько вариантов
- использовать SyncRoot ( это тот который антипаттерн) со всеми его недостатками
- заставить этот датчик использовать SyncronizationContext. Работать будет, но тогда любому, кто будет использовать датчик, нужен будет работать в таком контексте.
- Если у нас UI, то у нас есть Dispatcher и мы подписываемся, но в подписке планируем обработчик выполниться в UI потоке, а раз мы в нем находимся, то его выполнение станет после нас. (то есть это решает мой пример, но я говорю про общий случай)
- замудрить свое событие которое будет сразу выдавать последнее значение при подписке, а-ля SharedState в андроиде, то есть это уже не событие, а целый IObservable с выдачей последнего значения подписчику
(и в общем то неплохо, но это уже велосипед и это опять же применимо если мы пишем класс датчика. Да и где взять готовое такое, самому писать чистое решение не так просто)
- расчитывать на авось и в один момент получить хрень (даже нет смысла обсуждать)
>Так вот. В контексте классических приложений этот стейт кладут в БД. Все
хватит мыслить категориями классических CRUD приложений с базами данных.
я говорю совсем про другую проблему. Она ближе к теме "события + мультипоточность" (для примера вот https://www.codeproject.com/Articles/886223/Csharp-Multithreading-and-Events ) И базы данных там даже рядом не лежало. В приложении вообще может не быть никакой базы данных.
ты просто зацепился за слова сервис и стейт из примера. И понеслось
Хорошо. пусть это будет датчик (много датчиков) и его состояние. Датчик может менять свое состояние и делать это может как триллион раз в секунду, так и 1 раз в год, то есть время смены состояния неизвестно. И у него есть свойство где можно прочитать текущее значение, ну и событие чтобы подписаться на изменения. И очевидно!!! что база данных тут вообще не к месту - какая разница где хранить текущее состояние? - А НИКАКОЙ. Нет никакого смысла где-то еще хранить, если у нас оно и так хранится в свойстве - бери да читай.
И вот тебе нужно в РЭНДОМНЫЙ момент атачиться к этому датчику и начинать активно за ним следить, переставать следить, снова подключаться.
>А про гонку и прочее. Оно тут вообще ни к селу, ни к городу.
И гонка тут как раз основа всего. Тут хранение состояния "где-то еще" нахер не нужна, ибо и так у датчика можно спросить актуальное состояние. И проблемы чтения стейта нет - бери да читай, это атомарно.
Тут проблема "чтения текущего значения + одновременной подписки"
Если прочитать и сразу подписаться, то можно пропустить переключение.
Если подписаться и начать читать, то обработчик может сработать раньше и выполнить код, который нельзя на этот момент выполнять (еще не было чтения и первичной инициализации)
И тут решение нисколько не простое.
Навскидку можно несколько вариантов
- использовать SyncRoot ( это тот который антипаттерн) со всеми его недостатками
- заставить этот датчик использовать SyncronizationContext. Работать будет, но тогда любому, кто будет использовать датчик, нужен будет работать в таком контексте.
- Если у нас UI, то у нас есть Dispatcher и мы подписываемся, но в подписке планируем обработчик выполниться в UI потоке, а раз мы в нем находимся, то его выполнение станет после нас. (то есть это решает мой пример, но я говорю про общий случай)
- замудрить свое событие которое будет сразу выдавать последнее значение при подписке, а-ля SharedState в андроиде, то есть это уже не событие, а целый IObservable с выдачей последнего значения подписчику
(и в общем то неплохо, но это уже велосипед и это опять же применимо если мы пишем класс датчика. Да и где взять готовое такое, самому писать чистое решение не так просто)
- расчитывать на авось и в один момент получить хрень (даже нет смысла обсуждать)
Таймер не поток. Это всего лишь запланированное выполнение чего-либо. И где будет это выполнено - зависит от выбранного таймера (https://professorweb.ru/my/csharp/thread_and_files/1/1_15.php)
>9. Литература по WPF
>— Pro WPF 4.5 in C# (Matthew MacDonald)
>— Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)
Бтв, почему эти книги? Даже нет WPF Unleashed которую тоже хвалят
Значит я не понимаю, что ты имеешь в виду. Запомни, код нельзя объяснять на словах, его нужно просто показывать
Потому что эту хуйню никто не обновляет. Я помню три или четыре треда ныл, чтобы добавили .NET 5 наконец-то в ОП пост. Уже давно .нет 6, а его никто в оп-пост не добавил
>Потому что эту хуйню никто не обновляет
WPF не изменился за много лет (даже баги не фиксят) и выход дотнет 6 ничего не меняет.
И что в нем такого этакого для виндузятника? Для видузятника целая куча WPF замен и так есть, которые слабее по фичам чем WPF
А как кросс - MAUI хуже других ибо другие хотя бы поддерживаются их авторами (а не пойми кем) на линуксах
>MAUI хуже других ибо другие хотя бы поддерживаются их авторами (а не пойми кем) на линуксах
Что ты несешь? Майки сделали мауи они и будут поддерживать. Или майки это непойми кто?
Майки-то майки, только опять без линупс десктопа
https://docs.microsoft.com/en-us/dotnet/maui/supported-platforms
Additional platform support
...
Linux, supported by the community.
Перевожу - "поддержки под линукс нет, еб....сь сами".
После такого заявления ждать MAUI смысла нет.
> Так а нахуй нужен линукс?
Я на андроиде страдаю, когда шарпотред не перекатывают.
Перекатите тред!
Я страдаю!
Вообще, разницы нет особой, можешь хоть с 7-й начинать, превью уже выпустили. Их каждый год выпускают, разница небольшая. Ну а вообще, если тебе это так критично - то 6, это LTS версия, 5-ю нет смысла никакого изучать.
Так это понятно, ну какой MAUI на линуксе, але, это же конкурирующая платформа, у майков основной продукт - винда.
>Главное что андроид поддерживается
Так андроид и так работает на хамарин. MAUI - это попытка принести хамарин на десктопы. И заявлять что "нах нужен ваш десктоп, главное андроид"....
>>324472
>ну какой MAUI на линуксе
А зачем он тогда нужен вообще? чтобы мобильщики могли писать под десктоп? Ну может быть. А остальным оно нафиг не нужно
вот о нем написано
The [ApiController] attribute can be applied to a controller class to enable the following opinionated, API-specific behaviors:
Attribute routing requirement
Automatic HTTP 400 responses
Binding source parameter inference
Multipart/form-data request inference
Problem details for error status codes
по ссылке пояснение по каждому пункту
https://docs.microsoft.com/en-us/aspnet/core/web-api/?view=aspnetcore-5.0
Если получится понять
На новые проекты где сразу юзают онли 6-й .net, сейчас берут в основном стронг мидлов и синьоров. Тебя туда не возьмут.
В конторах куда у тебя есть шанс вкатиться скорее всего юзают core 3.1 или потихоньку переползают с него на .net6. Чтобы туда взяли нужно уверенно знать и 3.1 и понимать чем от него отличается 6-й. Поэтому твой выбор 3.1
>А зачем он тогда нужен вообще? чтобы мобильщики могли писать под десктоп?
Да, чтобы к единой базе все привести, на основе ксамарина.
без линукса это не единая база
кончится ничем. десктопщикам не нужно такое, а мобильщикам - а им зачем вообще десктоп...
>без линукса это не единая база
Линукс - конкурирует с основным продуктом, для него не нужно. А то напилят еще программ на линукс, кто тогда винду покупать будет?
это ИХ проблема
а моя проблема, как разработчика софта - чтобы он работал нормально на всех системах. И линукс в их числе.
А раз этого нет, значит это мертворожденный проект для десктоперов. А мобиловодам десктоп вообще не нужен
Я думаю со временем виндовс переедет на их облако и станет облачной ос по подписке
Нет простоты, элегантности и лаконичности нет. Как например, если я создам шаблон приложения в Eto.Forms, создастся 4 папки, по два-три файла в каждой:
1. Платформонезависимое окно, компилирующееся как dll, файлы: проект и шарпокод. Если выбрать шаблон с кодебихайндом, будет третий файл хамл.
2. Приложение GTK, компилирующееся как запускаемый бинарник, файлы такие же, проект и шарпокод.
3. Приложение Шындовс.
4. Приложение МАК.
Но у Eto.Forms другой минус (для зумера) там по умолчанию нет андроида и его надо пердолить ручками самостоятельно, и для макак с галер есть минус, нет модного MVVM шаблона, все модели и вьюмодели надо создавать ручками.
Бумеру инди-девелоперу же, взросшему на Дельфях в эпоху Ильхама Мокрописечного - тут одни плюсы.
Ах да, самое главное забыл. В МАУИ все платформы перечислены внутри едиственного проекта, который тянет все зависимости, но просто логикой внутри огромного раздутого файла-проекта их переключает.
В Ето.формсах 4 проекта в 4 отдельных папках, каждый со своими зависимостями. Кому-то это может показаться неудобно, я же проникся мощю этого гениального подхода. Кодишь на винде - не думаешь о зависимостях линукса, запускаешь нативную приложуху и она работает. Надо перейти на линукс - переходишь в папку с линуксовой сборкой и конпелируешься оттуда, не думая о зависимостяз венды.
Любой покупающий бумажную техлитературу в 2z22 - всрался. Бамажка устарела аккурат в тот момент, когда на типографии отпечатали половину тиража.
Бумажку имеет смысл покупать если ты бумажкофил, любишь переворачивать хрустящие страницы и вдыхать аромат белил с чернилами.
Я тоже про содержание. Повторяюсь. Содержание морально устарело аккурат в тот момент, когда отпечатали половину тиража.
Купи электронную читалку на e-ink.
Ну почитаю, скажу свое мнение
Я так то решил вкатится не в шарп, как таковой
А в шарп в контексте юнити
В гейдев треде думаю не так быстро и качественно ответят как тут
> шарп в контексте юнити
Выше в треде уже давали подробный расклад по данному вопросу. Ищи юнити поиском по странице.
Бумажная книжка такого функционала тебе не предоставит.
На Ютубе другого Васильева открой, тоже хороший человек
2018-й год
Ни слова про коллекции, дженерики, интерфейсы, linq и прочую базу которая сейчас мастхэв. Судя по содержанию книга даже не для студентов, а для совсем школьников.
Ну, в контексте юнити коллекция только одна - массив, интерфейсы не нужны, а за linq тебе и вовсе пальцы поломают.
Но ведь в c# нет такого типа данных как "object" в отличии от JS. Точнее есть, но насколько я сейчас понимаю он просто позволяет не писать конкретный тип данных. Не могу понять как создавать подобные вложенности. Через классы или через библиотеку получается какая-то хуйня, которую не понятно как инициализировать, хотя очевидно это я что-то не то горожу.
Я пытаюсь набросать тебе пример через анонимные типы, но он не компилится в онлайн ИДЕ, а студию мне запускать впадлу. Если тебе надо прям вот так же динамически, можно ещё заюзать сторонние либы, например ньютонсофт ЖСОН.
Вот пока что НЕРАБОЧИЙ вариант, как я это вижу:
Пытался через анонимный var делать, не получалось. Оказывается забывал "new". Спасибо большое!
Есть enum Keys из форм с кучей констант. Хочу стринг конвертить в него. Юзаю Enum.Parse.
Например в таких случаях работает корректно:
Enum.Parse("A"), true); // A
Enum.Parse("Asd"), true); //exception
А в таком он мне не кидает эксепшн:
Enum.Parse("A,S,D"), true);
Возвращает W.
А, понятно. Он запятую использует как сепаратор для битового или. Пиздец, нахуя это сделано.
>в контексте юнити
А, сорян, проебался. Ну тогда, учитывая насколько дерьмовая реализация шарпов в юнити, лучше тогда книжку постарше поискать, года так 2008-го.
Через анонимные типы.
Старина, а где прочитать про это?
Я вот читаю Васильева этого. пока нихуя не понятно
Видимо или я тупой, или реально книга кал
Блять, я понять одного не могу
Это какая то загадка человечества величайшая
Как, с такой всратейшей системой образования (высшее)
где изучается некро говно 2003 года, русский програмист спокойно перекатывается забугор и работает и его все облизывают?
Это единицы "вопреки" или как? Как ВУЗы учащие некромантию способны выпускать студентов наносеков?
Травите байки.
Ебаная "спец операция" половину ваканский порезала. Хуй знает как теперь вкатится. Всем опыт нужен блять от года.
Всё очень просто. Если ты изучил БАЗУ, если ты изучил КЛАССИКУ, БЛЯТЬ, КОТОРУЮ ЗНАТЬ НАДО, то тогда ты с лёгкостью осваиваешь любой зумерский фреймворк, который отличается от дидовских тулкитов только тем, что в нём А заменили на Б. Поэтому в вузах преподают ОСНОВЫ, вплоть до командных интерфейсов.
Как-то так.
Гм. Если тебе даже Васильев не понятен, то что-то серьезнее тебе читать еще бесполезнее будет.
Тебе надо на какой-нибудь совсем базовый курс, где тебе расскажут о программировании без привязки к языку и технологиям. Я х.з. какой-нибудь школьный курс типа scratch-а или еще, что-нибудь.
>Как,
Про базу верно уже сказали.
Еще один момент - ограничение инструментария, при должной мотивации, дает неплохой буст развития. Т.к. мозг учится обходить все эти ограничения, решая попутно множество интересных сопутствующих задач. Ну а айтишники в РФ всегда были поставлены в позицию тех, кому нужно изъебнуться, чтобы достичь результата. Начиная с взлома игрушек и винды, по причине невозможности их купить, и заканчивая самостоятельным изучением и доработкой технологий, которые недоступны на данный момент.
Ментальность такая. Пока условный западный прогер будет сидеть на жопе и ждать когда ему подадут нужный для работы инструмент или технологию и обучат им пользоваться, условный местный прогер возьмет все сам и сам научится.
ЛУчшие художники тоже всегда сначала учились сначала простым карандашом рисовать, а не со всего набора красок начинали.
>Как, с такой всратейшей системой образования (высшее)
>где изучается некро говно 2003 года, русский програмист спокойно перекатывается забугор и работает и его все облизывают?
>Это единицы "вопреки" или как? Как ВУЗы учащие некромантию способны выпускать студентов наносеков?
1. Да, это единицы "вопреки".
2. Традиция программирования еще не вполне образовалась, а, учитывая что задача вузов - именно приобщения к традиции, они для программирования не особо нужны.
>Хуй знает как теперь вкатится.
Учить 1С или js (он будет всегда и везде). С шарпами и прочими питухонами нам теперь будет туго, это да.
Есть несколько АйПи-камер.
Что я хочу. Я хочу чтобы они подключались по ВПН к моему серваку, ну а дальше, пользователь входит и в зависимости от прав доступа - смотрит что там на камерах.
Так вот. На текущий момент - я как делаю, я просто храню АйПи, пользователь должен руками настраивать ВПН, на фронте он клацает на камеру, его через ВПН подключает к нужной камере.
Момент с настройкой ВПН мне не нравится. Заеб для пользователя и вообще какая-то хуета, типа тот кто подключился к ВПН - может в обход основного приложения доступ к камерам получать.
Так вот. Что я хочу. Я хочу чтобы ВПН был только между мной и камерами, а пользователь, только после входа в приложении - мог подключиться.
Как я сделал. Я сделал обычный мидлвар, который после проверки прав доступа - просто шлет запрос камере, отдает пользователю.
Ну, собственно, в чем проблема такого решения. В том, что камеры сейчас дюже умные, не только картинку стримят, но и имеют возможность настройки и прочего. В связи с этим возникает хуета, типа у камеры фронтенд - всякие ссылки вида /settings, /dashboard /hui/zaluipa использует, оно соответственно шлется на мой сервак, который таким образом не знает куда роутить маршрут и отдает 404.
Так вот. Как по человечески делать-то такую хуйню? Я пока что придумал только: смотрим куку, если в куке обращались по прокси, считаем что это запрос по прокси и соответственно роутим к последней камере. Думаю в чем проблема тут - ясно, если маршруты совпадают - на сервак мой без чистки кук уже не так просто попасть будет, ну и плюс - если камеры одинаковые - роутить будет к последней подключенной, разве что я буду чистить куки при обращении к новой камере каждый раз.
Может быть есть какие-то предложения, няши?
Да, я загуглил, есть такая штука как YARP, но чет оно какое-то сложное, а простые примеры - это статичная прокси для одного маршрута, а нужно, условно, по запросу /api/cam/{id} - посмотреть в базе, проверить права доступа пользователя, ну и если все ок - послать запрос к нужной камере и дальше типа чел с камерой работает.
Есть несколько АйПи-камер.
Что я хочу. Я хочу чтобы они подключались по ВПН к моему серваку, ну а дальше, пользователь входит и в зависимости от прав доступа - смотрит что там на камерах.
Так вот. На текущий момент - я как делаю, я просто храню АйПи, пользователь должен руками настраивать ВПН, на фронте он клацает на камеру, его через ВПН подключает к нужной камере.
Момент с настройкой ВПН мне не нравится. Заеб для пользователя и вообще какая-то хуета, типа тот кто подключился к ВПН - может в обход основного приложения доступ к камерам получать.
Так вот. Что я хочу. Я хочу чтобы ВПН был только между мной и камерами, а пользователь, только после входа в приложении - мог подключиться.
Как я сделал. Я сделал обычный мидлвар, который после проверки прав доступа - просто шлет запрос камере, отдает пользователю.
Ну, собственно, в чем проблема такого решения. В том, что камеры сейчас дюже умные, не только картинку стримят, но и имеют возможность настройки и прочего. В связи с этим возникает хуета, типа у камеры фронтенд - всякие ссылки вида /settings, /dashboard /hui/zaluipa использует, оно соответственно шлется на мой сервак, который таким образом не знает куда роутить маршрут и отдает 404.
Так вот. Как по человечески делать-то такую хуйню? Я пока что придумал только: смотрим куку, если в куке обращались по прокси, считаем что это запрос по прокси и соответственно роутим к последней камере. Думаю в чем проблема тут - ясно, если маршруты совпадают - на сервак мой без чистки кук уже не так просто попасть будет, ну и плюс - если камеры одинаковые - роутить будет к последней подключенной, разве что я буду чистить куки при обращении к новой камере каждый раз.
Может быть есть какие-то предложения, няши?
Да, я загуглил, есть такая штука как YARP, но чет оно какое-то сложное, а простые примеры - это статичная прокси для одного маршрута, а нужно, условно, по запросу /api/cam/{id} - посмотреть в базе, проверить права доступа пользователя, ну и если все ок - послать запрос к нужной камере и дальше типа чел с камерой работает.
>С шарпами и прочими питухонами нам теперь будет туго, это да.
Почему? Что изменилось в применении шарпов за этот месяц?
Вот есть у меня асп где
Контроллер
{
Метод(данные)
{
Тут пишем в данные в бд
Вопрос
Как вернуть приславшему данные "Все норм, ок, понял,
принял записал"
А потом тригернуть другой метод (может в другом классе, неважно), который уже на моей стороне спокойно займется чтением и обработкой этих данных в бд
}
}
Запустить сервис аля BackgroundService/IHostedService, где будет входящая очередь (хотя бы Chanel). В нее закинул в очередь и ответил юзеру
Если тебе не принципиально что сначала вернуть, потом - триггернуть, то делаешь простой медиатор, на стороне контроллера - триггеришь, на стороне того кто должен что-то делать - делаешь. Это, что называется - самое простое решение.
Можно и по другому:
Делаешь класс:
TasksQueue,
в нее просто кидаешь лямбду с задачей, которую ты собираешься спокойно выполнять, делаешь обработчик этой очереди, как - сам решишь, вон предложили уже IHostedService. Решение чуть сложнее и нужно исключительно если у тебя нужно как-то ограничивать нагрузку, при этом как человек пользоваться нормальными очередями и лоадбалансерами - ты почему-то не хочешь.
Можешь, как человек - делать Event Driven архитектуру. Твой контроллер - просто передает хендлеру и ждет ответ, хендлер уже кидает кидает события, у события могут быть миллиард обработчиков. Пример хороший - IdentityServer, они вот так как раз и делают.
Короче. Вариантов тьма.
Вообще изначально что-то подобное и планировал с асинк/эвейт, но теперь с новыми советами еще по-другому попробую
Я правильно понимаю, что вот в этом месте вернет id только когда дойдет жо первого await в вызываемых методах? Т.е. после первого await в DoWork в данном случае?
> Я правильно понимаю, что вот в этом месте вернет id только когда дойдет жо первого await
Ну да. Если это критично - можно сделать вот так:
_workTask ??= Task.Run(async () => await DoWork(_stopWorkTokenSource.Token));
Тогда ты еще до входа в метод выйдешь на верх и вернешь Id.
Для всего выделяется память. Span - унифицированный доступ к куску памяти, где бы она не была выделена.
И нет у строк и массивов никаких заморочек.
Держи просто в голове, что все - это просто память с которой ты работаешь. Велью - могут лежать в куче, а референсы, при определенных условиях - на стеке и сразу же освобождаться.
Никакой магии тут нет на самом деле. Это разделение нужно скорее для семантики, а не сути.
Span<T> - обертка над памятью, раньше бы ты то же самое делал unsafe кодом, но unsafe'а боятся нубы(да и не только нубы, а еще те кто с шарпа-жавы начинал), будто это какая-то черная магия, которая скораптит и они будут долбиться указателями в сраку. Ну, потому придумали оберточку удобную в виде легкой структурки, которая соответственно еще и не нагружает GC.
>И нет у строк и массивов никаких заморочек.
Ну как же нет, когда есть. Т.е. про что там по строкая - я плохо представляю (я смотрю на https://source.dot.net/#System.Private.CoreLib/String.cs,8281103e6f23cb5c и для меня это как эльфийский, насколько же C# отвратный непонятный язык), а вот массивы - я уверен, что они с точки зрения памяти совсем по особому управляются, хранятся и обрабатываются, не как классы.
>Ну, потому придумали оберточку удобную в виде легкой структурки, которая соответственно еще и не нагружает GC.
И вот с организацией этой оболочки мне и непонятно. Т.е. определяется оно через структуру, но там же тоже все как на эльфийском (https://source.dot.net/#System.Private.CoreLib/Span.cs,d2517139cac388e8), и мне вот интересно, это просто хитровыебанная структура, или это магическая структура, по типу как аррей - магический класс, который на уровне clr обрабатывается особым образом, не как все другие классы.
>Т.е. про что там по строкая - я плохо представляю
А не нужно туда смотреть. Там помесь unsafe с интристиками. Собственно, для этого и придумывают языки высокого уровня, чтобы не смотреть вот туда.
Магия - это когда компилятор видя какой то тип, начинает обрабатывать его по своему и без этого такой тип не создать (вот в компиляторе и jit такого хватает). И строка не является магией - самая обычная ссылочная структура с доп хидерами.
Можешь изи написать свой класс строку и использовать аналогично.
Про массив ничего не знаю, но не вижу смысла рантайму как то к нему по особому относиться, кроме разве что особого синтасиса. И массив можешь написать.
А вот Span являются магическим. Там есть особенности завязанные на рантайм, поэтому в неткор они работают лучше чем в старом фреймворке, где есть ограничения.
Все ошибки подсвечиваются НО, после этого у меня комбобокс на странице абсолютно пустой, хотя сам конструктор через брейкпоинт срабатывает. Что я делаю не так?
Короче вводные: Есть вышка по ИТ, сейчас получаю магистра. РАБотаю 9 месяц разработчиком ERP говна (Microsoft AX) на языке, схожим с шарпом. Шарп тоже изучил базу, в ооп могу, но делегаты с интерфейсами и LINQ со списками не умею. До этого РАБотал помощником сисадмина, изучил сети. Есть гит, на нем лежат разработанные тулзы для VS, для разработчиков сделал. Еще на юнити игру написал. Однако не знаю паттернов проектирования и алгоритмов всяких. Английский С1 деревенское есть, и сертификат тоже, но не долбаеба.
Вопрос: где блять искать работу? Хочу со своих 30к перекатиться куда-то в более приемлемое место, хотя бы на 50. Какую сферу деятельности смотреть? Смотрел гейдев, но там нужны онли мидлы, а я себя с трудом джуном назвать могу. Ищу везде: ХХ, Хабр, Линкедин - все по нулям нахуй. Никому не нужен. Руки опускаются конкретно, особенно на фоне моих дногруппников которые якобы нихуя не умеющие вкатываются на 70к в месяц. Что мне делать? Муравью уже хуй приделал, не помогло.
> Что мне делать?
Вот ты главное не злись, не ругайся, ок? Я чисто по брацки посоветую. Иди на завод.
Жизнь лотерея. Не всем удаётся ухватить джек-пот взамен на потраченные усилия.
Делай персональные проекты, нарабатывай портфолио. Лет через 5 работы на заводе и писания своих проектов вечерами, наработаешь авторитет и найдёшь работу по специальности.
Дык я сейчас на айти заводе работаю по сути. А то и на айти каторге. После которой сил вообще не остается, а потом учеба. Опять же сил только на одну игру хватило, и на расширения, но не очка. Ну и с учебы пара сайтов есть на пейтоне, но это я даже за проекты не считаю
Забудь про геймдев. Он и до события в РФ был почти что мертв. А сейчас когда все площадки для сбыта огородили, уже не почти.
В твоем случае нужно делать:
1) Составить нормальное резюме. Находишь хорошую херочку и просишь оценить, и сказать что и как поправить. Можешь заплатить бабок или еще как ее ублажить. Но факт в том, что в первую очередь твое резюме будет смотреть эйчар, и ориентироваться надо на нее. И я говорю не про понравился/не понравился. Им на это давно уже похуй, через них в день настолько дофига проходит кандидатов, что они как роботы кандидатов рассматривают, только на то, подходят они под нужные параметры или нет.
Половина времени твое резюме даже не открывают, т.к. видят первые несколько строчек и закрывают вкладку.
2) Вариант долбиться в вакансии где дают тестовые. Берешь тестовое и делаешь. Похуй на то укладываешься в указанные сроки или нет. Делаешь, отсылаешь, просишь фидбек. Не получаешь, идешь к знакомому, на форум, к преподу и просишь тоже самое.
2 вариант годный, надо попробовать, а насчет первого, мне говорили что у меня норм резюме (хотя на дваче обсирали конкретно).
Я валился именно на собесе, даже если собес хорошо проходил. За исключением тяжелых где я сам понимал что тупой в основном собесы состояли из примитивнейших вопросов, на которые я отвечал и мне говорили что я молодец. А потом слали на хуй. Или было когда отбор в несколько ступеней, сначала пишут что я успешно прошел этап и со мной свяжутся для следующего а потом тупо игнорили (это я так в МТС проходил). А самое крутое было, когда на вопрос почему меня не взяли, мне сказали "вы уже обладаете высоким уровнем знаний но их к сожалению недостаточно до базового уровня". Понимай как хочешь.
Да, я ловлю себя на мысли что у меня выученная беспомощность. Но сука, а как ей не быть если все вот так?
Эх, если бы блять была работа где бы мне платили за мое нытье... Я бы заработал миллионы а потом уволился потому что причин для нытья нет, пошел бы к психологу или психиатру, вылечился бы и начал бы нормальную в моем понимании жизнь с нового листа. Если б да кабы...
>вариант годный, надо попробовать,
У меня достаточно много знакомых, кто именно так и вкатывался. Брал тестовое, делал хорошо-качественно и потом проходил. Тут главное две вещи, сделать качественно и потом смочь пояснить за каждую строчку кода, т.к. две неделю-две над ним пыхтел и сделал все по чесноку.
>>328441
>а насчет первого, мне говорили что у меня норм резюме (хотя на дваче обсирали конкретно).
Я вот тоже так когда-то думал и не понимал почему мне никто не отвечает. Потом одна опытная херочка (из тех которые только 500К наносеков хантят) подсказала что и как у меня неправильно и заставила переписать, хотя я и сильно сопротивлялся, думая что это полная херня. И мне неожиданно сами начали названивать и приглашать на собесы.
>>328441
>состояли из примитивнейших вопросов, на которые я отвечал и мне говорили что я молодец.
Нормальный собес должен по времени распределяться где-то так. 40% времени ты отвечаешь на вопросы. 40% времени это попизделки о твоем предыдущем опыте, и 20% презентация для тебя фирмы в которую ты устраиваешься. Если у тебя на ответы на вопросы уходит 80% времени, то это плохо. Ответы на вопросы не должны быть тупо по учебнику. "Что такое x? - x это 'определение' " - плохой ответ.
Нормальный ответ: "Что такое x? Да знаю, это то-то и то-то, я вот такую штуку делал и мне x там очень пригодился, а вот в другом случае я вместо него y применил и вообще обалдел"
В третьей части, тоже важно какие ты будешь задавать вопросы, когда тебе про контору рассказывают. Если ты спросишь "сколько платят и где у вас можно посрать/поспать/пожрать" - твои цели понятны. А вот если спросишь какие инструменты используются, какой флоу при работе с vcs используется. Какие технологие тебе стоило бы еще подучить по их мнению. То намного больше расположишь к себе.
Алсо, насчет контор типа МТС и прочих подобных больших шарашек. Там часто собесами просто штаны протирают, чтобы массу просеять и ходить на них стоит только ради опыта прохождения собесов. Лучше искать конторы поменьше, человек на 100...200. Там может и не по верху рынка платят, но вполне приемлимо. И новичкам больше рады.
>вариант годный, надо попробовать,
У меня достаточно много знакомых, кто именно так и вкатывался. Брал тестовое, делал хорошо-качественно и потом проходил. Тут главное две вещи, сделать качественно и потом смочь пояснить за каждую строчку кода, т.к. две неделю-две над ним пыхтел и сделал все по чесноку.
>>328441
>а насчет первого, мне говорили что у меня норм резюме (хотя на дваче обсирали конкретно).
Я вот тоже так когда-то думал и не понимал почему мне никто не отвечает. Потом одна опытная херочка (из тех которые только 500К наносеков хантят) подсказала что и как у меня неправильно и заставила переписать, хотя я и сильно сопротивлялся, думая что это полная херня. И мне неожиданно сами начали названивать и приглашать на собесы.
>>328441
>состояли из примитивнейших вопросов, на которые я отвечал и мне говорили что я молодец.
Нормальный собес должен по времени распределяться где-то так. 40% времени ты отвечаешь на вопросы. 40% времени это попизделки о твоем предыдущем опыте, и 20% презентация для тебя фирмы в которую ты устраиваешься. Если у тебя на ответы на вопросы уходит 80% времени, то это плохо. Ответы на вопросы не должны быть тупо по учебнику. "Что такое x? - x это 'определение' " - плохой ответ.
Нормальный ответ: "Что такое x? Да знаю, это то-то и то-то, я вот такую штуку делал и мне x там очень пригодился, а вот в другом случае я вместо него y применил и вообще обалдел"
В третьей части, тоже важно какие ты будешь задавать вопросы, когда тебе про контору рассказывают. Если ты спросишь "сколько платят и где у вас можно посрать/поспать/пожрать" - твои цели понятны. А вот если спросишь какие инструменты используются, какой флоу при работе с vcs используется. Какие технологие тебе стоило бы еще подучить по их мнению. То намного больше расположишь к себе.
Алсо, насчет контор типа МТС и прочих подобных больших шарашек. Там часто собесами просто штаны протирают, чтобы массу просеять и ходить на них стоит только ради опыта прохождения собесов. Лучше искать конторы поменьше, человек на 100...200. Там может и не по верху рынка платят, но вполне приемлимо. И новичкам больше рады.
Понял, спасибо больше за помощь
> //exception
А если:
string what = "Asd";
var result = Enum.TryParse(what) ? Enum.Parse(what) : Enum.YourDefaultConstant;
Есть способ навесить на waitHandle какой нибудь обработчик события что бы он дергал токен?
> идей для пет проектов дадите?
Народу не хватает визуального (WYSIWYG) дизайнера форм. Чтобы он отдельно запускался. Чтобы конфигрурировался под разные форматы: xaml, axaml, xeto, jeto. Чтобы мог из одного в другой формат формочки конвертировать, открывать, сохранять.
Цены бы тебе не было, если б ты такой дизайнер запилил.
Представь себе, есть например, софт на WPF и разраб хочет поставить его на кроссплатформенные рельсы. От осознания что весь ворох форм ему придётся заново дизайнить в другом UI-тулките он приходит в ужос! И тут появляешься ты, спаситель, со своим многоформатным дизайнером форм!
А можно ли без промежуточной сущности в коде тогда получить аналог хуй.join(ХуйЯйца).Join(Яйца)? Или как бы сахар сахаром, а как что-то сложнее - делай третью сущность?
А как? У WaitHandle только методы ожидания есть, а надо что бы когда он засигналит мой обрабочик отработал где бы я токен отменил.
ну напиш код где после Wait заканселишь нужный токе и этот код в пул потоков. Ну заблокируешь один поток из пула если свой не создашь. Не хочешь блокировать - юзай асинк WaitHandle
вот тебе пример
https://stackoverflow.com/questions/13741694/construct-task-from-waithandle-wait
чудь подправь и будет тебе на выходе токен вместо таски
1. Половина интернета работает на php, и переписывать ее никто не собирается, а если и собирается - то частями, на более новый php
2. На .Net практически нет готовых решений. CMS, движки для блогов, шаблоны лендингов, форумов, да чего угодно - на том же js миллионы решений, разворачивающихся из коробки одной командой и делающие что надо. А на дотнете - а нет нифига на дотнете, какой-нибудь облезший e-commerce, да и только.
3. Комюнити. На js - оно огромно. Миллионы тулзов, миллионы библиотек на любой вкус и цвет, любая задача решается подключением библиотеки.
4. Производительность не важна. Дотнет позиционируется как высокопроизводительный веб-фреймворк. Вот только она, ну, не нужна никому. Если ты не лидер рынка с миллионами пользователей, или даже десятками миллионов пользователей - тебе вообще до пизды, даже если нода работает в 10 раз медленнее asp.net-а. Потому что сервер ценой в половину программиста - с лихвой перекроет разницу в данной потере производительности, а разрабатывать на js, в силу предыдущих пунктов, быстрее, всегда. И это я еще молчу про системы контейнеризации, которые делают работу с потоками в asp.net ненужной сложностью и костылем, который всегда мешается, но никогда не пригодится.
5. Даже если производительность важна - .net все равно сосет. Ведь есть go, который можно выучить и встроить в cicd пайплайн быстрее, чем прочитать про весь синтаксический сахар, добавленный в последней версии C#, и при этом go еще прямо из коробки, с дефолтными настройками и интуитивно написанным кодом, давит стрелку в пол. Да, asp.net тоже может уложить стрелку, но тебе для этого придется обмазаться конфигами, пулами, спанами и прочим аллокейшн-фри кодом.
6. Фронт все равно на JS. Майки могут сколько угодно рассказывать про блейзор, но у него нет будущего, никто никогда не будет учить xml и не будет встраивать нативную поддержку блейзора в браузеры. Т.е. все это будет медленно, криво и некрасиво. А если все равно учить js - то зачем платить больше (и тратить время на C#)?
7. Перспектив роста нет. Рост ведь зависит от того, куда течет новая кровь, на каком языке кодят - тот и растет. Вот только по данному параметру C# тоже глубоко сосет у JS. JS уже установлен в любом браузере, нюфагу даже делать ничего не нужно, чтобы получить доступ к среде выполнения, можно прямо в браузере код писать и радоваться, что что-то происходит. VS Code позволяет полноценно программировать на js. У шарпа же все очень плохо. Вс-кодом пользоваться попросту невозмо, это адская боль. Никаких платных райдеров новичок покупать не будет. Остается только огромная, гигантская студия, занимающая 50 гигабайт. Новые пользователи отсеиваются уже на этапе решения какой язык попробовать.
8. Язык превратился в срань. Когда-то C# был хорошим, приятным языком. Но теперь это уже не так. За эти годы в него добавили не только прекрасные линкью, кортежи и свитч экспрешены, но и адские кучи адского говнища, при этом оставив старое для обеспечения обратной совместимости. Теперь код на c# выгляди как франкенштейн из разных стилей, одну и ту же задачу можно решить десятком разных внешне непохожих способов, нет единообразия, нет простого понятного синтаксиса. C# скатывается уже даже не к C++, он скатывается к брейнфаку.
9. На нем нет работы. Никому C# не нужен. Да, если ты синьор - ты не пропадешь. Но даже знакомые миддлы испытывают проблемы при трудоустройстве, на интервью буквально издеваются, требуя наизусть цитировать Священное Писание (Рихтера) об аллокации памяти. Причем надо ответить именно как написано у Рихтера, а не как оно работает сейчас, включая те версии, на знание которых тебя собеседуют. Что уж говорить про войтивайтишников. На каждую вакансию - по 3 тысячи кандидатов, вас по js и фронтенду будут дрочить больше, чем на собеседовании на позицию js-фронтендера.
Короче, вы как хотите, а я выкатываюсь из C#. До конца неделю подтяну базу по ноде и реакту, и буду рассылать резюме на жс-ера. Нужно спрыгивать с поезда, пока он еще не слетел в обрыв.
1. Половина интернета работает на php, и переписывать ее никто не собирается, а если и собирается - то частями, на более новый php
2. На .Net практически нет готовых решений. CMS, движки для блогов, шаблоны лендингов, форумов, да чего угодно - на том же js миллионы решений, разворачивающихся из коробки одной командой и делающие что надо. А на дотнете - а нет нифига на дотнете, какой-нибудь облезший e-commerce, да и только.
3. Комюнити. На js - оно огромно. Миллионы тулзов, миллионы библиотек на любой вкус и цвет, любая задача решается подключением библиотеки.
4. Производительность не важна. Дотнет позиционируется как высокопроизводительный веб-фреймворк. Вот только она, ну, не нужна никому. Если ты не лидер рынка с миллионами пользователей, или даже десятками миллионов пользователей - тебе вообще до пизды, даже если нода работает в 10 раз медленнее asp.net-а. Потому что сервер ценой в половину программиста - с лихвой перекроет разницу в данной потере производительности, а разрабатывать на js, в силу предыдущих пунктов, быстрее, всегда. И это я еще молчу про системы контейнеризации, которые делают работу с потоками в asp.net ненужной сложностью и костылем, который всегда мешается, но никогда не пригодится.
5. Даже если производительность важна - .net все равно сосет. Ведь есть go, который можно выучить и встроить в cicd пайплайн быстрее, чем прочитать про весь синтаксический сахар, добавленный в последней версии C#, и при этом go еще прямо из коробки, с дефолтными настройками и интуитивно написанным кодом, давит стрелку в пол. Да, asp.net тоже может уложить стрелку, но тебе для этого придется обмазаться конфигами, пулами, спанами и прочим аллокейшн-фри кодом.
6. Фронт все равно на JS. Майки могут сколько угодно рассказывать про блейзор, но у него нет будущего, никто никогда не будет учить xml и не будет встраивать нативную поддержку блейзора в браузеры. Т.е. все это будет медленно, криво и некрасиво. А если все равно учить js - то зачем платить больше (и тратить время на C#)?
7. Перспектив роста нет. Рост ведь зависит от того, куда течет новая кровь, на каком языке кодят - тот и растет. Вот только по данному параметру C# тоже глубоко сосет у JS. JS уже установлен в любом браузере, нюфагу даже делать ничего не нужно, чтобы получить доступ к среде выполнения, можно прямо в браузере код писать и радоваться, что что-то происходит. VS Code позволяет полноценно программировать на js. У шарпа же все очень плохо. Вс-кодом пользоваться попросту невозмо, это адская боль. Никаких платных райдеров новичок покупать не будет. Остается только огромная, гигантская студия, занимающая 50 гигабайт. Новые пользователи отсеиваются уже на этапе решения какой язык попробовать.
8. Язык превратился в срань. Когда-то C# был хорошим, приятным языком. Но теперь это уже не так. За эти годы в него добавили не только прекрасные линкью, кортежи и свитч экспрешены, но и адские кучи адского говнища, при этом оставив старое для обеспечения обратной совместимости. Теперь код на c# выгляди как франкенштейн из разных стилей, одну и ту же задачу можно решить десятком разных внешне непохожих способов, нет единообразия, нет простого понятного синтаксиса. C# скатывается уже даже не к C++, он скатывается к брейнфаку.
9. На нем нет работы. Никому C# не нужен. Да, если ты синьор - ты не пропадешь. Но даже знакомые миддлы испытывают проблемы при трудоустройстве, на интервью буквально издеваются, требуя наизусть цитировать Священное Писание (Рихтера) об аллокации памяти. Причем надо ответить именно как написано у Рихтера, а не как оно работает сейчас, включая те версии, на знание которых тебя собеседуют. Что уж говорить про войтивайтишников. На каждую вакансию - по 3 тысячи кандидатов, вас по js и фронтенду будут дрочить больше, чем на собеседовании на позицию js-фронтендера.
Короче, вы как хотите, а я выкатываюсь из C#. До конца неделю подтяну базу по ноде и реакту, и буду рассылать резюме на жс-ера. Нужно спрыгивать с поезда, пока он еще не слетел в обрыв.
зачем вообще с этим бредом в тред заходить? чтобы напихали по самое?
Могу только сказать, что монополия JS это худшее, что случилось в айти за последние десятилетия.
Пункт 8 согласен.
>можно решить десятком разных внешне непохожих способов,
и что? даже в питоне, который типа идеал единообразия - та же самая картина
>но и адские кучи адского говнища
ну из говнища там разве что топ левел маин и следствие от него. лютая ненавистная дичь. Что еще?
в остальном шарп страдает что не добавляют нужного в угоду чем то бесполезному
Мне похуй, мне просто C# нравится. PHP и JS я пробовал и даже делал небольшие проекты и больше на них не вернусь, это реально конченная срань.
>любая задача решается подключением библиотеки
Из личного опыта - либы на жиес часто забрасываются и депрекейтятся, из-за чего и сборщик орет матом, и гвард гитхаба тоже орет матом что там в либах критикал вулнерабилитиес. npm это похоже реально русская рулетка в которую нужно играть постоянно.
Да я уже игру разработать успел, надо что-то чуть потяжелее но не пиздец какое тяжелое
Например так обычно делает переопределение
var List = List.Select(item=>
{
item.field1= 1;
item.field2= 2;
item.field3= 3;
return item;
}).ToList();
А я не знаю, какие field мне могут понадобиться и должен как-то на лету их подставить.
Так может требуемые поля как то в массив вкидывать а потом циклом их подставлять для вызова?
Как? У меня была какая-то похожая идея, но как по мне это хуйня. Потому что нужно именно оригинальный лист нужно переопределить, ибо он привязан к интерфейсу и обновлённые данные должны там отобразиться, а если просто на основе его что-то там собрать, то толку не будет
Блин, тогда не знаю... Не сеньор и не мидл
и что с этим решением не так? То, что изменяет оригинальные item? ну делай клоны. Ну или использовать recod .. with - где те же клоны за тебя пишет компилятор
>и что с этим решением не так?
То, что я не знаю заранее ни какие филды мне надо будет переопределить, ни их количество. Инфа об это приходит из другого метода в виде строк
>Встречайте UUID нового поколения для ключей высоконагруженных систем
https://habr.com/ru/post/658855/
Ну значит использовать кодогенерацию. Сделать какой нибудь PropertySetter у которого вызывать propSetter.Set(item, 'PropName', value)
Конечно будет боксинг, но работать будет
> игру разработать успел
Показывай.
> надо что-то чуть потяжелее но не пиздец какое тяжелое
Инженерный калькулятор с простыми дробями, графиками функций и т.д.
А что можно такого сделать, чтобы на собеседовании потом не косились с видом "Ты зачем это делал? Ты что, идиот?".
> чтобы на собеседовании потом не косились с видом "Ты зачем это делал? Ты что, идиот?"
Без обид анон, но если ты уже так думаешь, то скорее всего на тебя уже косятся, ЧТО БЫ ТЫ НИ ДЕЛАЛ.
>I did not leave any comments because the code is not hard to understand.
Перевод: "Я ленивая жопа. Мне насрать на тех с кем мне придется работать."
>I have some gaps in my knowledge of GitHub to avoid storing junk files :c
Перевод: "Я еще более ленивая жопа, т.к. мне лень потратить 5 минут, чтобы разобраться с базовым функционалом"
Да там ничего сложного. Прочитал тип, получил все свойства и для каждого создал setter_writer любым удобным способом - кодоген через expression/emit или вообще без онных - используя virtual/override механизм. Полученные врайтеры в словарик и юзать этот словарик.
Если допускать боксинг, то изи, а вот без него...а оно надо такой гемор?!
>я ленивая жопа
Да, все так. Хотя там реально интуитивно понятно
>насрать на тех с кем предстоит работать
Мне не с кем работать. А на своей работе я комменты оставляю
Вот например наивная реализация без кодогена
https://pastebin.com/Jj4esAFD
с кодогеном примерно так же - море всего (so примеры или куча готовых либ) что позволяет сгенерить из геттера сеттера метод ридер врайтер - через Expressions/emit и точно так же держать в словарике
??????????????????
чего?
ну хорошо, а где именно тогда хранится вот то самое текущее состояние, как его изменить?
Я сам студентота второго курса, и, думаю, меня можно вполне себе разъебать по алгоритмам, поэтому сейчас вспоминаю различные вещи из дискры и алгоритмизации, плюс на всякий случай собираюсь вспомнить какие-нибудь две сортировки, относительно эффективные.
Ещё подозреваю, что могут задать вопросы конкретно по шарпам, к каким есть смысл готовиться? Попросят ли пояснить разницу между ref и out или интерфейсом и абстрактным классом, как это пишут во многих "топ-146 вопросов по C# к собеседованию"?
Могут ли дать какой-нибудь лайвкодинг, учитывая, что тестовое вроде как уже написал? А ещё, что делать, если понимаешь, что не знаешь ответа и обосрался или что-то около того?
Не парься, тебя не возьмут
>Я сам студентота второго курса, и, думаю, меня можно вполне себе разъебать по алгоритмам, поэтому сейчас вспоминаю различные вещи из дискры и алгоритмизации, плюс на всякий случай собираюсь вспомнить какие-нибудь две сортировки, относительно эффективные.
Покупаешь C# 8.0 Pocket Reference (Joseph Albahari и Ben Albahari) (есть на русском, можно для 9-й версии, в зависимости от того что учил)
Часа за 3...4 до собеса пролистываешь ее, там вся база максимально ужато и понятно, для быстрого обновления знаний.
Еще так же накати перед собесом несколкьо первых глав из "Грокаем Алгоритмы", там где O-нотация разжевывается и базовые сложности.
Если собес онлайн, то держи их при себе как шпаргалки.
По сортировкам сейчас редко где спрашивают что-нибудь. Но если спрашивают, то это обычно либо quick либо bucket.
>Попросят ли пояснить разницу между ref и out
Обязательно, кое-где еще и про in спросят.
>или интерфейсом и абстрактным классом
Тоже обязательно. Плюс спросят возможно ли в шарпе множественное наследование. И для справки - интерфейсы реализуются. Скажешь, что они наследуются - обоссут.
Еще обязательно спросят про коллекции (словарь и лист)
Про GC сейчас часто спрашивают. Сколько поколений, как работает, что есть LOH и SOH.
Про делегаты еще спрашивают, но вяло.
Про асинхронщину обязательно спросят.
Стек, куча, упаковка-распаковка. Референс и вэлью тайпы и т.д.
Вобщем читай албахари, там все есть.
>Могут ли дать какой-нибудь лайвкодинг, учитывая, что тестовое вроде как уже написал? А ещё, что делать, если понимаешь, что не знаешь ответа и обосрался или что-то около того?
Сейчас что-то серьезное лайвкодить на собесах не дают, кроме самых отбитых. Обычно дают простенькие задачки вроде:
1) Простой пример когда асинхронный метод вызывается из неасинхронного. Что произойдет и в каком порядке буковки выведутся в консоль. Как исправить, чтобы вывелись в нужном порядке (вставить aync Task и await в нужных местах)
2) Составить какой-нибудь не сильно навороченный sql-запрос с парой джойнов и условий.
3) Покажут кусок говнокода и спросят твое мнение о нем. Все ли тебе нравится в нем и не хочешь ли ты там, что-нибудь поменять. Тут просто хуяришь по заветам дяди Боба, насколько фантазии хватит. Сможешь к этом хотя бы S из солида приплести уже хорошо будет.
Еще хорошо будет если вопросы твои ответы будут перекликаться с твоим опытом, с тем же тестовым заданием. Спросят тебя например про интерфейсы, ты не просто рассказываешь, что это. А при случае вворачиваешь "А вот в тестовом которое я для вас делал, я их применял вот так и так". Чтобы было понятно, что ты "не просто знаешь как хер в руках держать, но и пристроить его куда нужно умеешь"
>Я сам студентота второго курса, и, думаю, меня можно вполне себе разъебать по алгоритмам, поэтому сейчас вспоминаю различные вещи из дискры и алгоритмизации, плюс на всякий случай собираюсь вспомнить какие-нибудь две сортировки, относительно эффективные.
Покупаешь C# 8.0 Pocket Reference (Joseph Albahari и Ben Albahari) (есть на русском, можно для 9-й версии, в зависимости от того что учил)
Часа за 3...4 до собеса пролистываешь ее, там вся база максимально ужато и понятно, для быстрого обновления знаний.
Еще так же накати перед собесом несколкьо первых глав из "Грокаем Алгоритмы", там где O-нотация разжевывается и базовые сложности.
Если собес онлайн, то держи их при себе как шпаргалки.
По сортировкам сейчас редко где спрашивают что-нибудь. Но если спрашивают, то это обычно либо quick либо bucket.
>Попросят ли пояснить разницу между ref и out
Обязательно, кое-где еще и про in спросят.
>или интерфейсом и абстрактным классом
Тоже обязательно. Плюс спросят возможно ли в шарпе множественное наследование. И для справки - интерфейсы реализуются. Скажешь, что они наследуются - обоссут.
Еще обязательно спросят про коллекции (словарь и лист)
Про GC сейчас часто спрашивают. Сколько поколений, как работает, что есть LOH и SOH.
Про делегаты еще спрашивают, но вяло.
Про асинхронщину обязательно спросят.
Стек, куча, упаковка-распаковка. Референс и вэлью тайпы и т.д.
Вобщем читай албахари, там все есть.
>Могут ли дать какой-нибудь лайвкодинг, учитывая, что тестовое вроде как уже написал? А ещё, что делать, если понимаешь, что не знаешь ответа и обосрался или что-то около того?
Сейчас что-то серьезное лайвкодить на собесах не дают, кроме самых отбитых. Обычно дают простенькие задачки вроде:
1) Простой пример когда асинхронный метод вызывается из неасинхронного. Что произойдет и в каком порядке буковки выведутся в консоль. Как исправить, чтобы вывелись в нужном порядке (вставить aync Task и await в нужных местах)
2) Составить какой-нибудь не сильно навороченный sql-запрос с парой джойнов и условий.
3) Покажут кусок говнокода и спросят твое мнение о нем. Все ли тебе нравится в нем и не хочешь ли ты там, что-нибудь поменять. Тут просто хуяришь по заветам дяди Боба, насколько фантазии хватит. Сможешь к этом хотя бы S из солида приплести уже хорошо будет.
Еще хорошо будет если вопросы твои ответы будут перекликаться с твоим опытом, с тем же тестовым заданием. Спросят тебя например про интерфейсы, ты не просто рассказываешь, что это. А при случае вворачиваешь "А вот в тестовом которое я для вас делал, я их применял вот так и так". Чтобы было понятно, что ты "не просто знаешь как хер в руках держать, но и пристроить его куда нужно умеешь"
Спасибо, анон! Албахари наворачиваю тоже, в том числе сейчас. Хотел ещё уточнить по поводу линка, часто ли по нему спрашивают что-то, если да, то на примерно каком уровне? В последнее время много его вижу в чужом коде, по видимому довольно популярный.
Linq - это тема. Офигенно удобная штука. Если хоть каким-то образом работаешь с данными (коллекции, БД и т.д.) то без этого ты в работе не обойдешься. Он сейчас практически везде.
Но что удивительно, на собесах его не сильно дрючат. В основном спрашивают за базовые методы (Where, Select, FirstOrDefault (и в чем его отличие от простого First), Any).
В контексте Linq могут спросить про отличие от IEnumerable и IQueryable. И про отложенное и немедленное.
Тебя ещё за дефолтные интерфейсы могут спросить. IEnumerable, IQueryable, IDisposable. Туда же копирование, сравнение. Что-нибудь про yield. Про линк: select, where, orderby, aggregate и тд. Могут просто кинуть код с линком и попросить запрос оптимизировать. Про рефлексию могут спросить. Что-нибудь про using, во что превращается и зачем нужна. Также за string vs StringBuilder. Что под капотом у билдера, плюсы/минусы, кейсы использования.
Это что касается самого шарпа без привязки к фреймворкам.
>Про рефлексию могут спросить.
Это уж совсем редкость. Такое уже спрашивают либо если видят, что кандидат сильный и дохуя знает, либо чтобы просто доебаться.
С рефлексией вообще все стараются по минимуму дела иметь, только если это не спец проект какой-нибудь вроде какой-нибудь ERP c кодогенерацией структуры БД на лету или хитрой системы плагинов. Но новичков к таким делам обычно не подпускают, т.к. там не умея легко хуйни наделать.
Чел, КАК ЭТО В ПРИЧНИПЕ ВОЗМОЖНО что бы внутри елемента было одно, а браузер показывал вообще другое, КАК? вот там слово TEST ОТКУДА оно взялось если не с хтмл? ГДЕ ОНО? как его посмотреть или найти, где оно?
в с# треде потому что это происходит в блазоре
Просто присылают таблички в ms office 2010, моя прога должна их парсить, ясен пень пользователи не хотят ебаться с ручной конвертацией файлов.
Как сделать по нормальному?
(вообще почему такая жопа в net core с ms office? Реально все через жопу, либо вообще никак)
Не рассматривай мой ответ всерьёз, подожди других анонов, но я с дивана вижу только вариант через неуправляемый код, через дидову автоматизацию открыть ексель-объект, в нём открыть документ и делать свои дела.
>И для справки - интерфейсы реализуются. Скажешь, что они наследуются - обоссут.
interface IHeroOFCSharp : IDvacher
{ }
interface IDvacher { }
поссал сверху
Суть я уловил, контроллеры, гет делит апдейт итд. Но когда пытаюсь решить задачи постоянно спотыкаюсь. Как будто изучил недостаточно.
Можете посоветовать что-нибудь почитать по микросервисам на webAPI? Я уже думаю блять ментора нанимать, только хз где его искать…
Нет, конечно я бы наверное мог пойти работать на десктоп разработку, деньги меня не сильно волнуют. Но хочется развиваться в профессии, а не сидеть в зоне комфорта
> я бы наверное мог пойти работать на десктоп разработку
> решил ASP.Net Core изучать
В нете конкуренция охуевшая. Макаки-крудошлёпы тебя сожрут, блять.
Не в тему треда, но я щас щупаю движок Django, нраица, но это питон.
Контекст был "класс <-> интерфейс".
Core конечно же. Очепятался.
а про Адама Фримана что скажешь ?
https://www.qqpr.com/
Вот здесь например, можешь из жс файлов кадры как раз вытащить. Они правда с хтмл тэгами
Он только в 5-м .net-е появился. Про него еще не все знают.
У меня есть рабочий linq запрос, возвращающий список со агрегатными функциями сгруппированными по времени, создающий DTO через select new DTO(){}. Сейчас количество полей в DTO увеличилось, так как надо передавать данные ещё с другого запроса...
Но как оба запроса объединить в один класс?
И так.
int c = A.B().Lenght
byte[] d = A.B()
int e = d.Lenght
Что вернет c==d?
шта?
Выборка из одной таблицы, но с разными условиями (отрицательные и положительные числа)
>Причем тут статик? Ты вообще C# знаешь?
Потому что у меня был не статический класс, и я хочу понять, что за херня там случилось.
Проблема не в union. а в том, как передать из двух запросов создать список с объектом, в котором содержатся значения из обоих запросов.
Если хочешь пользоваться линуксом, под него есть только две бесплатные флагманские ide это idea и pycharm, то есть выбор ограничен всего двумя языками, когда на винде кроме этих ещё и есть visual studio поддерживающий кучу языков и более удобный. Но он не совсем бесплатный, а от jetbrains вообще свободный исходный код.
Короче, может ли visual studio code полностью заменить легаси visual studio? Или всегда на него нужно ставить миллион плагинов? А как насчёт kotlin и idea? А может jetbrains fleet станет новым стандартом?
насчёт сокращения записи свойств, посмотри для джавы либу lombok, особенно её аннотации @getter, @setter, @data и тд
Вот как раз для джавы нет проблем с иде: хочешь идею, хочешь эклипс, хочешь нетбинс и все кроссплатформенные. А на сишарпе всё ограничено виндой с её вижлой.
Да без разницы, это ни на что не влияет кроме того, что метод можешь вызвать без создания объекта а напрямую из класса
Уже понял. Но спасибо за ответ. Осталось разобраться как теперь жить без него.
Это не новый синтаксис, это новый пайплайн, типа всю настройку производим внутри верхнего уровня. Плюс там небольшие улучшения работы с конфигурациями.
>>332975
Использовать Sturtup - можно как и раньше, если есть желание, просто перенеси конфигурирование сервисов и мидлвара туды.
В текущем виде - есть свои плюшки, типа ты можешь довольно просто без лишних телодвижений намутить нужные тебе мидлвари, проинициализировать все как надо в нужном порядке и вообще.
Что значит отключат от шарпа? Ну, будем нюгетами через фидонет обмениваться, щито поделать
Я боюсь, что за зря выучу шарп, а окажется, что шарписты никому не нужны.
Почему ему не стыдно?
Анон, мне очень нужно имплементировать скачивание большого файла (10-20 гб) с сервера
я понимаю как это сделать, очевидно что скачивать его надо посредством чанков через сигнал р или в подобном стиле но...
КАК ЭТО СДЕЛАТЬ! мне ведь как-то нужно записать первый чанк на диск, потом когда прийдёт второй чанк указать что надо дописать биты в тот файл... легко записывать файфлы по стороне сервера, как записывать большые файлы по стороне клиента?
В твоем случае лучше бояться, что ты ничего не выучишь и итак будешь никому не нужен.
В твоем случае лучше бояться, что ты ничего не выучишь и итак будешь никому не нужен.
Позвольте уточнить,
на прикриле пример, скачивается файл 13 гб уже скачано более 3, при этом это очевидно больше чем занимает озу хром.
КАК ОН ЭТО ДЕЛАЕТ?
Очевидно что он открывает какой-то поток с сервера к клиенту и пишет с сервера прямо в файл, КАК?
Когда я пытаюсь скачать файл он сначала буфферизируется в озу, а только потом пишеться на диск.
Как это фиксить, что читать? Где искать?
Ничего не понять. Открываешь файл и пиши в него данные по мере поступления.
>Когда я пытаюсь скачать файл он сначала буфферизируется в озу
с чего вдруг. он пишется в темп файл и в конце переименовывается/переносится
Какой файл открыть? у тебя на клиентене же нет таких прав создавать и открывать файл какой захочешь.
Разве нет?
и Что значит по мере поступления?
уппс. не увидел про блазор. Ну такой файл может скачать только браузер. Хитромудрости, что пытаются юзать на жс (а у блазора по идее те же ограничения), больше 4гб не смогут
Локально тоесть в память? мой вопрос именно в том как это обойти, потому что загружать в память возможно по 10-20 гигов я не могу себе позволить
>Как вернуть старые стартовые шаблоны проектов с полным описанием класса и метода Main, вместо новых укороченных?
Создаешь приложение под .net5
Потом в настройках изменяешь
<TargetFramework>net5.0</TargetFramework>
на
<TargetFramework>net6.0</TargetFramework>.
Какой-то ебанутый вопрос. Очевидно что зависит от реализации B.
Больше спасибо, анон
Делай как человек:
Запрос: размер чанка - порядковый номер - хеш. Ответ - в случае если это первый кусок либо хеш в порядке - новый кусок с порядковым номером, куском и данных, в случае если шех не совпадает с тем что ты рассчитал для предыдущего куска - ошибка с номером предыдущего куска.
Не клиенте - создаешь временный файл в котором в метадату пишьешь номер последнего удачного куска. Когда все скачается - удаляешь метаданные.
Собственно все. СигналР тут не особо нужен, плюс - появляется возможность продолжить скачивание хоть через месяц.
Поздно боишься, уже произошло. Вкатиться в шарпы сейчас нереально. Учи ноду, если хочешь прогером стать.
Ну охуеть. Шарпы ему поздно, а ноду не поздно И с хуя ли поздно стало шарпы учить? Все будет на ноде? Прими таблетки, маня!
Вы видите копию треда, сохраненную 28 июля 2022 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.