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, но функциональность там достаточно сильно урезана.
7. Что почитать? — 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.
Поясните вот за шо. Правильно ли я понимаю. Вот есть петухон, стильный модный молодежный. Пилят к примеру проект на Django. Ясное дело что он будет медленнее чем жава или шарп. Но тогда почему выбирают именно петухон? Разработчик дешевле да и планку оперативы легче вставить чем нанимать жависта или шарписта?
>>2247517 >Django В вебе, во-первых, нет жестких требований по производительности: юзер не заметит разницу отрисовалась его страничка за 300 или за 400 ms. Во-вторых, все оптимизации производительности работы кода приложения почти незаметны по сравнению с временем затрачиваемым на запросы в базу, кеш, другие сервисы. Ты скорее упрешься в Ethernet, чем в скорость работы кода.
Здарова, реквестирую способы автоматического обхода капчи необязательно даже на решетке В принципе знаю тукапчу, но может знаете еще чего получше и подешевле
>>2247444 → Думаю это от него скорее и ожидали. Я с unsafe, байтиками и игрищами с указателями я, скорее всего, пошел не в ту сторону. А тут - нет вероятности перезатереть что-то полезное и вообще, выглядит оно не так страшно и вообще, более ООПшно.
Хотя, задание для стажера, какое-то странное на самом деле.
>>2247517 >Но тогда почему выбирают именно петухон? Потому что изначально пайтон создавался с прицелом на академеков и близких к ним. Чтобы пр ивозникновении какой-нибудь обсчитываемой концепции они могли по быстрому накидать прототип и проверить ее, не будучи задротами от мира IT. Ну а потом уже если концепция подтвердится, то либо так и оставить, либо переписать на чем-нибудь побыстрее. Вследствие этого, в пайтоне очень хорошо срабатывает метод "хуяк-хуяк и в продакшен". Особенно когда нужно по быстрому сваять проект и показать инвесторам, а вот когда они подкинут бабла, тогда уже можно нанять бородача, который узкие места оптимизирует на сях, либо на джависта/шарписта который все перепишет. Ну или оставить все как есть, потому что похуй, бабки получены, проект хоть как-то работает и ладно.
>>2247560 >нейросеткам и запилить все самому? А потом потратить тыши даларов на обучение. Уже все придумано и обучено. zennolab.com/ru/products/capmonster/ xevil.net/ru/
>>2247609 По факту спустя год после релиза. До NET5 были проблемы с подключением бд не от майков и скоростью на линукс серверах. Это еще учитывая, что первая открытая версия дотнета вышла в 2016.
>>2247623 >предыдущие 20 лет релизов, оказывается, больше не релизы
Вообще какой смысл пилить стартап на шарпе, когда для этого есть более подходящие инструменты? Ну тот же питухон, нода или го, с которыми скорость разработки будет выше, чем на шарпе, на которых легко можно писать микросервисы и встраивать в контейнеры. Быстрый старт, сервисы много не жрут. А что дотнет? Ровным счетом такая же ситуация, как и у жабы - долгий старт, большое потребление памяти.
>>2247644 Серьезные фирмы с шарпом до сих пор IIS используют, который только под винду идет. Ну и вообще во многих местах еще очень много всего завязано на инфраструктуре майкрософта.
А так, можно райдер использовать, имхо в разы лучше чем VS.
Смотрите. У меня на заводе в одном приложении была такого рода фигня: канал связи+протокол. Ну, т.е. канал связи - это какой-нибудь TCP, Com-порт, USB, PLC и т.д. Протокол - какие байтики слать. Так вот. Это было десктопное приложение. Сейчас - переносится в облака. Менеджеры - хотят чтобы вот эта вот фигня была и в облаке. Я - не совсем понимаю, можно ли это вообще реализовать в контексте облаков так как было раньеше. Да, TCP и протоколы - без проблем. Но в видении архитектора нашего - должны и USB, и COM и все остальное поддерживаться. Ну, он видит это как ряд микросервисов каналов связи. И тут возникает вопрос: А как эти микросервисы будут про протоколы узнавать? Опять же, в видении нашего архитектора - должен быть отдельный микросервис для протоколов и, примерно следующее взаимодействие: клиент шлет запрос микросервису канала связи, указав протокол, уже микросервис - обращается к сервису протоколов - и получает нужный протокол, затем начинается взаимодействие. Только вот как, блджад это-то реализовывать? Как мы можем-то по HTTP - передать протокол взаимодействия, не костыляя протокол для сериализации этого протокола? Я - не понимаю. Тем более, что разные протоколы дают возможность разного взаимодействия: тут - мы можем только посмотреть аптайм устройства и серийный номер, а там, если устройство протокол поддерживает - по хардкору - включать-выключать датчики, читать логи работы, замыкать-размыкать релешечки. Я вижу возможным решением только: у нас есть DLL с протоколами, все каналы связи - эту DLL получают, затем достают протокол оттудова, генерируют клиенту JSON с ViewModel того что можно по протоколу делать, ну а дальше - работаем. А вот этот вот микросервис протоколов - выглядит, по моему, странно. Но может быть вы шарите лучше и поясните мне, как оно может работать.
Эту херню вообще возможно сделать? Фактор сортировки это типа якорь для быстрой сортировки? Просто подскажите куда двигаться. Ещё и как отсортировать не полностью, чтобы итератор выдавал отсортированное начало, и не тратил время на конец
>>2247650 >райдер Он платный. Ещё летом можно было продлевать лицензию через удаление пары файлов в конфиге, а теперь они прикрутили авторизацию на их сайте.
>>2247664 С таким подходом бывают очень неприятные баги, когда в винде - все отлично работает, но разворачиваешь на сервере - хуяк, все по пизде пошло и ошибки всплывают там, где ты их вообще не ожидаешь.
>>2247699 Я бы вот так сделал. В душе не ебу что хотят эти вот составители задания. По времени - не оптимально(если элемент не граничный - мы должны пройтись до того, который больше него и вставить). По памяти - не оптимально(создаем буффер для сортировки элементов). Зато просто и быстро реализуется.
После двух лет чистого бэка либо десктопа на .NET, тупо не могу делать ничего на фронте. Начинает тошнить от npm, css/html, обрубков JS/TS, если тут кто сейм? Я ведь вообще начинал фулл-стеком на разоре в энтерпрайз конторе, неужели фронт для меня таки закрыт и пути туда без боли нет? А ведь на .NET много модных молодежных вакансии - это таки фулл-стеки.
Есть аспнет кор сайтец, на нем есть авторизация на основе политик (+Idenity +Cookie). Я могу как-то в политике реплейснуть юзера (ClaimsPrincipal)? Мне иногда надо удостоверится, что у пользователя не отозваны/выданы права, для чего надо слазить в базу. Я знаю, что можно в событиях кук, но тогда будет лезть в базу при каждом запросе, мне такое не надо. Если я просто рефрешу SignIn, то разумеется, это работает только на следующий запрос. Есть способы это разрулить?
>>2247869 Ну, тошнить-то тошнит. Но я стараюсь и в этом говне находить плюсы. Верстку правда я делаю на похуй, но кроме сеошников и мамкиных фронтов - никто не жалуется, потому что со стороны клиента-то оно одинаково выглядит, а эта вся семантическая хуйня - ну, идите нахуй, я бекендер, а мы вообще-то делаем тырпрайз хуйню, которая будет внутри корпаративной сети работать, какая еще нахуй сео-оптимизация, болезненные?
>>2248258 Половина обучающих видео по . Net-у в ютубе на маках записано. Есть знакомые .net помидоры которые только на маках работают. Я не спрашивал, но сужя по всему они довольнфв. Даже сами майки на последних презентациях с собой эпловскую технику таскают. Так что думаю работает норм.
Везде пишут что когда начинает работу сборщик мусора работа приложения полностью приостанавливается. Но как это возможно, если этого не видно? Приложение не начинает резко не работать несколько секунд
>>2248606 Потому что сборка мусора обычно не занимает несколько секунд. Но если тебе не верится в то что в доках написано вот пример. https://ideone.com/OVf7ew запусти сначала так, а потом раскомментирую явный вызов сборки мусора, разница в скорости работы будет заметна.
>>2247699 >Фактор сортировки это типа якорь для быстрой сортировки? >Ещё и как отсортировать не полностью, чтобы итератор выдавал отсортированное начало, и не тратил время на конец Фактор сортировки - это как раз чтобы ты мог определить, где конец и какие данные можно считать отсортированными. А так - нормальное задание на джуна.
Я тут вот о чем подумал. В шапку, как по мне, следует добавить гитхабы опенсорсных хороших проектов, типа Nancy, NetCoreServer, mono и собственно самого .Net и ASP.Net(предложите еще свои варианты) Мотивация. Как по мне - многие нюфаги - не умают читать чужой код(да и где им учиться-то?). Плюс, они не умеют отличать хороший код от плохого. Изучение хороших репок - помогает в этом. Ты, как минимум - не будешь впадать в состояние первобытного страха, увидев проект на 200мб исходников и мыслью: Я лучше перепишу сам, чем буду в этом разбираться. Да, скажите, что кто хочет - сам посмотрит. Но как по мне - на этапе: я уже что-то знаю и могу писать какие-то вещи, хочу посмотреть - человек еще не имеет насмотренности в плане кода, чтобы отличить хороший код от плохого и понимать, почему те или иные решения приняты. И в отличии от того же обучения в вузе - нет возможности смотреть как другие делают, спрашивать мудного препода, который пояснит что-то. В общем. Что думаете насчет?
>>2248763 Ну, я вот мидл. Я понял зачем нужен фактор сортировки, но мне настолько лень разбираться и городить что-то, что ИРЛ я бы сдела что-то в духе: return inputStream.OrderBy(x=>x); И на собесе бы я бы попросил показать, где в их проектах они вот такие вот велосипеды городят. Если не городят - то хули вы мне мозги делаете. А если таки да, то я бы сам сказал: Вы мне не подходите.
Нужно быть душевнобольным хуесосом без малейшей симпатии к программированию, чтобы в 2022 писать на c#. Просто сравните джаву с .NET (https://jdk.java.net/18/release-notes), который создавался превратился в прекрасного лебедя
>>2249030 Винда сама обновляет дотнет. А если у тебя винда не поддерживает актуальную версию, то надо обновлять винду. Кто сидит на старых вёндах, у того вообще ничего не работает.
Каков план действий?
Аноним27/12/21 Пнд 09:51:11№224906566
Вводные: РАБотаю прогером в SAP болоте, разрабатываю на Х++ (похож на шарф но не он). Есть пара проектов на шарфе на гитхабе (простенькие расширения для VS, для РАБоты надо было). Сейчас решил систематизировать знания по шарфу, так что начал по сути с нуля и читаю The C# Player's Guide в оригинале (просто на русском не нашел). Сейчас на разделе с ООП.
Цель: хочу укатить в гейдев прогером на той же юнити хотя бы.
Вопрос: хули мне делать дальше? Уже начинать пилить свое инди говнище для ПОРТФОЛИО, или пока рано? Что после той книги изучать? Я сам хотел литру по алгосам или по написанию не говнокода. Все правильно? Помогите мне!
>>2249065 >Что после той книги изучать? Я сам хотел литру по алгосам или по написанию не говнокода. 1) Шаблоны игрового программирования. Роберт Найстром. 2) Иди в /gd
Есть проект с List<Shit> ListOfShits, и я хочу попробовать сделать для него ГУИ на ВПФ, в котором будет листбокс, выводящий объекты ListOfShits, но если просто на него забиндиться, то изменений в листбоксе не будет.
Вместо List<T> лучше подходит ObservableCollection<T>, но... И даже если я заменю, то потеряю в функциональности - например у ObservableCollection<T> нет Sort().
new ObservableCollection<Shit>(ListOfShits)? Но это же только скопирует ссылки, а изменений всё равно не будет.
>>2249204 Для юнити полно курсов и готовых минипроектов. Только не обучайся по видео с ютуба. Знание шарпа тоже поможет, только внимательно чекай разные фичи и сахар. Многое в юнити не работает, да и версия языка запаздывает.
>>2249030 Вообще все не так однозначно, проектов на .NET 5, а тем более 6 довольно мало. Как мне кажется, во многих местах до сих пор сидят на коре с кусками фреймворка.
На яве 8 версия просто потому, что переезжать на новые версии смысла особого нет. Вот уже начиная с 17 версии смысл есть, так как спринг 6 будет поддерживать жабы начиная с 17 версии. А там может годика через 2 лум и вальхаллу подвезут, вот тогда начнется массовая миграция на новые версии.
>>2249260 >Падажжи а как тогда обучаться? https://learn.unity.com/ например. Книги по юнити тоже есть, курсов полно. Официальная документация тоже подойдёт. Просто юнити прощает и поощряет невероятно припизднутые вещи. Поэтому существует множество инфоцыган, которые берут какую-нибудь типовую задачу, делают по принципу "ну работает же", записывают видос с умными комментариями и оставляют ссылку на патреон.
>>2249277 Массовая миграция с жабы на новые версии дотнета, пофиксил. Видел бенчмарки, жабий спринг во всем проигрывает asp net core. Это если помнить, что в жабью виртуальную машину десятки корпораций вкладывались ресурсами, а на выходе такой жидкий пук получается спустя 25+ лет, пока майки считай в соло дотнетом занимались
>>2249335 Переписать код со спринга на asp.net будет тяжеловато, имхо. А жабий спринг медленный потому что там под капотом буквально все завязано на рефлексии и прочей магии, которая обеспечивает работу DI. Да и к тому же сам томкат сервер не шибко быстрый сам по себе.
>>2249151 Ты всегда можешь написать свою коллекцию, реализующую NotifyCollectionChanged. Внутри можешь использовать тот же лист. Но вообще тебе стоит погуглить, как это делается в впф. Что-то я смутно припоминаю, для листвью и прочих контролов есть вариант сортировки на стороне вью.
Как средствами EntiityFramework получить значение встроенной функции? Вот, допустим, у меня есть какая то таблица, в ней есть 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], то таблица не создаётся, но и код без таблицы не работает. Есть варианты, что можно сделать?
Не спрашивайте, при чём тут сишарп, просто тут толковых людей много, хочу именно у вас спросить. А вы как-нибудь документируете ваши баги и архитектурные косяки? Какой софт для этого используете, если используете? Какие вопросы себе задаёте, когда описываете допущенный именно вами баг? Возвращаетесь ли к чтению этих описаний, или исправили, описали и забыли? Моя идея в том, что если задавать себе, помимо вопросов о том, в чём именно баг и как его надо исправить, ещё и вопрос "почему же я затупил", и "как не тупить подобным образом в будущем", то можно навести чуть больше порядка в своей голове и в итоге пореже ходить по граблям. Вот только не совсем уверен, что это сработает.
>>2249543 Нет, у меня 99% багов - не тот символ поставил, не с той переменной сравнил и т. д. От невнимательности короче. Что тут документировать? Архитектурные просчёты - тут тоже бывает скорее из за незнания каких то нюансов, допуск подобных сам проходит, когда разберёшься.
>>2249543 95% багов которые у меня были, сдетекченные на этапе тестирования - из-за моей невнимательности и отсутствия четкого ТЗ с тем что нужно. Допустим. Сказано: держать соединение с клиентом, но при этом, если клиент не выходит на связь при пинге, считать соединение потерянным. Окей. Я делаю: отдельный тред, который по таймеру проверяет время, когда был последний сеанс связи, если истек таймаут - пингую, если в течении заданного в настройках интервала не пришел ответ - считаю что связь утеряна. НО оказывается-то, на заводе производителе - забыли это во многие железки заложить, потому - вот эта вот модель устройств - не отвечает на пинги и сама наоборот шлет пинги мне, я должен отвечать. Мне это кидают в багтрекер, только, блядь, ни в ТЗ, ни в тех доках устройства про это нет, просто вот тестировщики - знают про эту особенность ряда устройств, а я - нет, не знаю, вынужден это узнавать из баг-трекера. Так вот. Моменты с невнимательностью - не фиксирую никак. Это обычно 1 строчка исправлений, потому похуй. Моменты с отсутствием информации - фиксирую в текстовом файлике в проекте в папочке DOC для проекта и комментаторами в коде в духе: // Едрить его в корень, оказывается надо вот так, потому что вот так вот Относительно архитектуры - нигде не фиксирую, разве что в коде - говеные решения помечаю TODO для рефакторинга.
>>2249556 Но ведь этих багов тоже можно было бы избежать. Какие-нибудь там линтеры или статические анализаторы кода могли бы помочь, например. Или сразу написанные тесты. >>2249563 Ясно. Я в общем-то примерно так же действую, но у меня иногда бывают баги не просто по невнимательности, а из-за неверных предположений, которые я сразу мог бы опровергнуть, если бы логически докопался бы до истины. Ну вот например, очень тупой баг. Фиксирую изменения в неком каталоге. Если файлы в нём исчезают - добавляю их имена в список удалённых. Если изменяются или появляются новые - добавляю их в список новых. Суть в том, что создать что-то вроде инкрементального бэкапа. Вот только почему-то я предполагаю, что этих списков достаточно. А по факту файл может быть сначала удалён, а потом может снова появиться. В итоге дважды фиксируя изменения получаю хрен знает что. Логически можно было бы подумать, что изменение может быть либо туда, либо обратно. Либо файл удаляем, либо обновляем. Но не то и другое одновременно. Стало быть, если он всё-таки появлялся и удалялся, то из первой фиксации изменений данные об удалении или добавлении надо выкинуть. Но я почему-то об этом сразу не подумал. Подумал чуть позже, и в итоге обнаружил, что бэкап-то уже кривой, пришлось руками чинить. Невнимательность - да. Чёткое ТЗ отсутствует - да. Может быть, проблема в том, что я начал пилить решение раньше, чем полностью продумал его. Но заранее полностью построить решение в голове как будто бы трудно. Не знаю, это нормальное явление, или мне лучше в таксисты пойти?
>>2249616 > это нормальное явление Нормальное. Нужно максимально уточнять что от тебя хотят, долбя разными сценариями взаимодействия с твоей системой. Да, когда будешь совсем-совсем старым сеньером и все эти сценарии уже миллион раз делал - какие-то общие вещи можно не уточнять, но, я так понимаю, ты не древний сеньер-помидор, а задача для тебя новая, а потому что-то не понимать или не учитывать - норма. Для того и существуют разные этапы разработки. И да, сейчас проблема в том, что программисту говорят в общих чертах, что от него хотят, в итоге ты - идешь с завязанными глазами, доверяясь интуиции, и всегда оказываешься крайним из-за того что что-то не предсказал. Просто запомни это, в следующий раз - будешь знать что вот в таком сценарии нужно еще и это учесть.
>>2249652 Ну, в целом да, спасибо, работает. Показал как сделать это средствами Еф. Правда тестирование показало что выполнение через встроенную функцию раз в 15 быстрее, но тут уже никуда не денешься..
>>2249777 Чивооо? Это транслируется ровно в тот же sql запрос, что ты приводил. Посмотри в логах. Но а если ты сравниваешь скорость выполнения зароса в базе со скоростью выполнения запроса + маппинг да всё это с включенным чейнж треккером, то чтож, земля пухом.
>>2249961 Нет, наоборот. В большой компании ты можешь будучи стажером и даже джуном, первые месяцы нихуя не делать, почитывая мануальчики на онбординге. А потом еще полгода будут подтирать сопли. А в обычной конторе джуном тебе максимум неделю дадут на то, чтобы въехать, а потом ебашить начнешь. А стажеров туда обычно не берут, а если и берут то таких, на которых сразу пахать можно.
>>2249839 Ну я про это и говорю, что EF по умолчанию будет много всякого тормозящего но иногда полезного делать. Наверно, кстати, это поведение можно и переопределить, но не уверен что мне настолько хочется лезть в эти дебри.
>>2250068 Пока что выглядит всё так, что ты вообще не понимаешь, о чем говоришь. Если EF делает что-то лишнее на твой взгляд, то тебе в этой задаче EF не нужен. Поскорее бы тред утонул снова.
>>2250130 Начнём с того, что EF по сути - это синтаксический сахар. Нет ни одного случая, когда нельзя обойтись без EF и не сделать всё силами чистого sql. Цель EF - писать более лаконичный код. Ну и позволять более умным людям заботится о тех вещах, о которых ты мог забыть или не знать. И делать что то лишнее - он вполне может. Вот как пример. Недавно пришлось работать с sql, которая была подключена как linked server к серверу, к которому у меня был доступ. И не секрет, что EF обёртывает все изменения в бд - в транзакцию. И вот при такой работе как с linked server - для работы транзакций нужно для каждой сессии добавлять set xact_abort on, иначе вылетает эксепшн. В целом то это реализуемо, но если транзакция по смыслу не требуется, то EF добавляет лишнее усложнее (Ну и ещё надо учитывать моё время и нервы, пока я в этом разобрался).
>>2250151 > EF по сути - это синтаксический сахар Ты не знаешь, что такое синтаксический сахар, потому что это не синтаксический сахар даже если очень много скидок тебе дать.
> Цель EF - писать более лаконичный код EF -- довольно стандартный ORM. Цель его -- быть ORM, то есть быть адаптером между РСУБД и ООП-языком.
> но если транзакция по смыслу не требуется, то EF добавляет лишнее усложнее Когда я только начал изучать аспнет, весь интернет кричал на меня, что EF реализует паттерн UoW и все оборачивается в транзакцию. Это тяжело не заметить.
Также хочу обратить твоё внимание, что всё сказанное выше справедливо для всех полноценных и зрелых ORM. То есть это не особенности EF, это особенности целого класса инструментов. Ты просто не понимаешь, зачем этот инструмент нужен и сравниваешь хуй с пальцем. Повторюсь, поскорее бы тред снова утонул.
>>2250173 >ы просто не понимаешь, зачем этот инструмент нужен Если бы инструмент был нужен только для одной цели - там был бы один метод - Выполнить. А так как там туева хуча разных настроек, опций, возможностей и т.д. - то целей его применения может быть дохерища. И да, вполне возможно что то из его базовой реализации мне не нужно.
>>2250186 > Если бы инструмент был нужен только для одной цели - там был бы один метод - Выполнить. Ты не понимаешь сложностей склеивания ужа с ежом, то есть реляционного мирка с объектным. ORM решают довольно сложную задачу, поэтому там много нюансов и сценариев, в которых хочется всё вручную решить. По-другому никак, они сделаны из компромиссов. Я не хочу тебе это объяснять, потому что это уже лет двадцать в интернетах со всех сторон обсасывается и все трудоустроенные аноны из этого треда должны бы понимать, зачем ORM нужны и какие проблемы решают.
Я когда писал на РНР, то всё делал через прямые запросы MySQL типа "select * from table_name where column_name = 'something'". Так что все эти надстройки для торопыжек, кому лень написать sql-запрос.
Как понять, какие должны быть интерфейсы у объекта, чтобы его можно было биндить в ВПФ? Например, чтобы забиндить ListBox к коллекции с отражением изменений, нужны: - System.Collections.Specialized.INotifyCollectionChanged - System.ComponentModel.INotifyPropertyChanged Но это я смог понять, изучая ObservableCollection<T>. А "нормально" как?
>>2249421 ListCollectionView это, как я понимаю, класс не для хранения данных, а для вывода в ГУИ.
>>2249901 >Как так вышло? Это ж BCL, откуда мне знать.
>>2250173 > Ты не знаешь, что такое синтаксический сахар, потому что это не синтаксический сахар даже если очень много скидок тебе дать. Да никто не знает, везде пихают этот дебильный термин, всё что угодно им называют. Откуда эта мода пошла?
>>2250332 Нет такой моды. По крайней мере, в моём окружении. Это только на двачах то и дело встречаются шизики, которые не хотят ни в чем разбираться и додумывают значения устоявшихся терминов по своим ощущениям.
>>2250413 Ладно, я согласен, что синтаксический сахар здесь может быть неправильно использовать, поскольку этот термин должен применяться к элементам языка, а EF - это фреймворк. Но всё таки, EF - фреймворк, который не делает (не должен делать по своему прямому предназначению) никакой полезной работы, кроме как позволяет не писать sql код, а работать с бд как с объектами. Поэтому если сделать допущение, что синтаксическим сахаром можно назвать фреймоврки - то EF - первый кандидат.
>>2250450 > Поэтому если сделать допущение, что синтаксическим сахаром можно назвать фреймоврки На этом месте врач делает пометку в медкарте, закрывает её и просит увести тебя в палату.
>>2250450 >Поэтому если сделать допущение, что синтаксическим сахаром можно назвать фреймоврки Так можно додопускаться, что любой ЯП является синтаксическим сахаром по отношению к байткоду. Только вот зачем?
>>2250386 Нет, просто спрашиваю хорошую на твой. Я находил только совсем старьё сомнительного качества и что-то вроде бы неплохое, но в каком-то глазоебательном виде.
Осознал, что не могу ничего юзать кроме дотнета, хотел запилить имиджборду, сделал всё красиво на бэке, а фронт так и не смог осилить. Грустно, хотел фул-стеком в одно ебло потом продукт какой-нибудь сделать.
>>2250877 >Не помогло, я делал React/TS, меня вся экосистема фронтовская выбешивает. Меня по началу от реакта тоже тошнило прям. Но потом поработал и немного пообвыкся. Правда только на той версии что на классах. Та что на хуках, до сих пор омерзение вызывает.
Пчелс, с какой книги начать? вкатывальщик с небольшим опытом пет-проектов в джаве (spring), но она заебала (ибо пидоры какие-то там спринг и всю хуйню писали) Троэлсен норм вариант? Или может курсы от хохлов из itvdn?
>>2250877 > кому нахуй нужен сегодня нативный UI. Как бы любым адекватным людям? Для телефона это норма, а на компьютере их не хватает, все делают кривые уродские лагающие сайты. А у тебя будет няшка на Maui
>>2250916 По шарфу нет хороших книг. Совсем. Это тебе не как в джаве с её великолепными шедеврами вроде двухтомника Хорстмана или философией Эккеля. А Блох? Эх, хоть сами пиши книги...
Легко далось изучение асинхронности, многопоточности, делегатов и событий и всего всего, но ебаный yield return никак не дается. Есть какой-то источник, разжевывающий эту конструкцию для совсем идиотов?
>>2251039 Напиши простой код: yield return 2; yield return 3; и посмотри каким нибудь ILSpy'ем во что это превращается, и вся магия пропадет >Легко далось изучение асинхронности async/await? Довольно странно, там компилятор изъебывается намного сильнее и извращеннее. чем при yield
>>2251047 >async/await Хотя бы понимаешь, для чего это нужно и когда применяется. С yield что-то затупил, а тут еще iAsyncEnumerable какой-то появился.
>>2251050 >для чего это нужно и когда применяется если на пальцах async/await - чтобы не пердолить руками продолжение задач yield - чтобы не пердолить руками enumerator'ы
На меня вышли через знакомых с предложением написать проект. Вычисление стоимости строительных конструкций, справочники, возможно система аутентификации, графический интерфейс, а так же мобильная версия приложения. Попросили сказать, во сколько это обойдется. Как блять вычислить цену? В своей конторе я получаю 8-10 долларов в час. Наверное легче всего оценить время разработки и подсчитать по тому же тарифу, что получаю на работе? Так получается где-то 7-8 к долларов
>>2251101 Ну учитывая, что ты будешь один за всех на этом проекте, то надо повышать ставку. И тут вопрос. а ты можешь адекватно оценить время на проект? Я бы вот не смог.
>>2251109 Нас будет двое. Повышать ставку нужно бы еще за то, что я нихуя не шарю в мобильной разработке, планирую написать WEB API на core, потом подключить к мобилке с помощью флаттера или реакта. Думаем закончить за 3-4 месяца минимум.
>>2251139 Ну вот на самом деле - хуй знает. Я в вузе когда учился - как раз на метанит часто заходил. И вот например с событиями - было нихуя не понятно. Вот цитата оттуда: > События сигнализируют системе о том, что произошло определенное действие. И если нам надо отследить эти действия, то как раз мы можем применять события.
Вот какой, блядь системе? Как они сигнализируют и вообще что это должно значить-то, блядь?
Понимать как оно работает, я стал исключительно после того, как в вузе на плюсах, в ходе написания курсача - сам изобрел издатель-подписчики. Потом таки дошли руки и прочитал про паттерны. А вот на метаните - было нихуя непонятно. Просто пиздец.
>>2251212 Вот они, современные менеджеры. Я б сделал в соло за месяц работы и месяц опытной эксплуатации. Деньги - 200к в месяц, итого 400к (если б у меня работы не было). Ну если нужен прям красивый интерфейс - то плюс работа художника.
>>2251214 Метанит - это всё таки глубокий туториал, а не прям справочник. Из плюсов - вполне по примерам оттуда можно писать рабочие программы. А создание высоконагруженных и многопоточных систем - это да, в другом месте копать надо.
Оказалось выпилили компиляцию "в один файл" в 7 винде. Интересно специально, ибо на Net 5 работало или же правда какая-то техническая сложности погнать всех обновлять ос :)
>>2251251 глубокий туториал Поверхностный ткториал а-ля квикстарт. >писать рабочие программы. Doubt. Разве что хэлоуворды. А так шаг в сторону и всё - сел в лужу. >в другом месте копать надо Да в общем-то нет такого места где есть всё, придется много где рыть.
>>2251255 Даже если и есть техническая возможность сделать это на 7 (хотя наверняка заюзали что-то, что есть только в 7+), то нет смысла поддерживать то, что уже не поддерживается. Это же все равно будут затраты человекочасов.
>>2251248 Я хотел отдельно для доёбщиков написать, что это можно в соло за месяц-два-три сделать, если сам разработчик и хорошо владеешь предметной областью, имеешь в ней опыт, а ещё тебе это интересно, но тут явно ситуация не такая. Кабанелло хочет йобу для бизнеса, которую вряд ли сформулировал на уровне, пригодном для разработки. Кабанелло ищет разработчиков по знакомым, так как не понимает нихуя в разработке как отрасли и действует так, как если бы искал разнорабочих подешевле.
Кабанелло проебёт деньги и в лучшем случае получит криво работающий MVP, который на самом деле никакую конкретно полезную функцию не выполняет.
>>2251269 Ппц ты недалекий уровня офисного планктона. А вообще, твое мнение не несет никакой полезной информации, так как ты не в курсе проблемы. Это как ответы на мэйл ру.
>>2251273 Ну вот это да. Ко мне тоже неоднократно выходили с предложением написать ёбу для своего бизнеса. Когда я пытался с ними сесть и детально обговорить техзадание - почти все резко ливали на первых шагах. В итоге все хотят себе раба, который будет пилить все их хотелки за копейки. >>2251260 Программа - понятие растяжимое. Вот что то работающее для такой вот строительной программы - очень даже. Конечно профессиональный продающийся инструмент - нет.
>>2251331 >Когда я пытался с ними сесть и детально обговорить техзадание Потому что они не знают чего хотят. Типо сделайте мне красиво и шобы работало и шобы деньги приносило. По этому надо сразу брать предоплату за составления тех задания, что бы заказчик был на крючке. Ты не возьмешь ну значит другие возьмут.
>>2251331 > В итоге все хотят себе раба, который будет пилить все их хотелки за копейки. Именно. А за копейки, да ещё чтобы работало и приносило прибыль, не бывает. Единственное исключение -- это если ты сам разработчик и очень интересуешься этой предметной областью, как я уже выше говорил.
>>2251248 А когда кабанелло не может и не хочет сам думать, он покупает целую команду и она ему реализует проект, который будет работать и который даже принесёт многоденег, если кабанелло угадал с фичей и если команда правильно её проанализировала и реализовала. Причем, прибыль может быть не прямая. То есть задумка кабанеллы может не приносить прибыль напрямую, но окажется хорошим конкурентным преимуществом, которое привлечёт много новых клиентов в бизнесу. За это и платятся миллионы, в реальности так всё и делается. А два месяца и 400к в одни руки -- это фантазии.
>>2251370 Ну, я в целом не против, что б этот геморрой >В итоге все хотят себе раба, который будет пилить все их хотелки за копейки. взял кто то другой. Ну а то что либо тот кто возьмёт имеет либо скилл разруливать такие ситуации, либо имеет в штате чувака что разруливает такие ситуации - ну что ж.. Гей шлюхи тоже дорого берут, но это не значит что я бросаю всё и иду в гейшлюхи.
>>2251396 Хорошо, если у тебя есть варики с такими кабанелло, который может заплатить несколько лямов. А если не может? Вот мне встречалась хозяйка небольной ветеринарки с зооаптекой. Лично знаю её, миллионы не таскала, так как не дс, но на жизнь хватало. Приходила с предложением сделать ей экосистему. Что б были модули учёта и ведения клиентов, работы персонала, расходования материалов и товаров, а также онлайн запись клиентов. Примерно то что хочет этот кабанчик, только без мобильного приложения. В целом мы в цене всё таки не сошлись, она хотела за копейки, а у меня времени нет. Но если б раза в два подняла предложение, я б сделал. А с подходом как у этого еврея - даже близко было бы без шансов.
>>2251421 Малому бизнесу нужна готовая CRM и местный интегратор, который занидорага всё настроет и будет обслуживать.
> Что б были модули учёта и ведения клиентов CRM.
> работы персонала CRM.
> расходования материалов и товаров ERP очень типовая конфигурация 1С, один хуй вся бухгалтерия через него у неё проводится.
> а также онлайн запись клиентов CRM.
В этой истории встретились Биба и Боба. Биба думала, что для её очень стандартного бизнеса нет готовых инструментов. Боба всерьез готов был делать свой велосипед.
>>2251439 Варианты с CRM были и ей предлагали, только управляемые как раз вот такими евреями. И стоило это дороже того варианта, который я был бы готов сделать. И без некоторых фич. Собственно с этого и началось, что она пришла с буклетом, сделать примерно также, но без красивостей.
>>2251405 >взял кто то другой Другой взял но уже не за копейки. Это как в автосервисах, клиент объездит 10 сервисов +- цена у всех одинаковая, и за копейки ни кто не работает. Клиента получит тот кто с него первый возьмет предоплату.
>>2251460 А потом окажется что этот клиент за свои бабки тебя и выебет. Конечно если ты и не против читай - умение разруливать такое - то поздравляю. Я предпочту работать с лояльными клиентами.
>>2251466 Бля пытался найти статью но не нашел. Корочи смысл был таков. У чела было $50к, и идея. Сервис в котором люди могут взять обзор на машину которую хотят купить. Например видят что тачка продается в другом городе, заказывают на нее обзор, специально обученный человек идет и проверяет тачку, ну там не бита не крашена. Вся инфа сохраняется и потом выдается другим людям. Сайт +моб приложение. Обратился он в компанию. 2 года разработки, ни денег ни приложения. Пошел в суд, суд отказал ему в компенсации. Чел просто не знал что хотел. Вот у него была эта идея а как дальше хуй знает. Наверняка по 5 раз на дню придумывал что то новое что тормозило разработку.
Имхо нужно сразу брать предоплату хотя бы $100 за составление тз. После того как ТЗ составили уже договаривается о цене. Как только договорились о цене то изменение тз влечет и увеличения стоимости разработки. А там уже поебать, пусть в конвульсиях хоть бьется, деньги то он платит частями, заплатил работаем дальше, не заплатил то пусть идет нахуй. И если клиент платит 3 копейки то и получает сервис за 3 копейки.
Лет так 7 назад на пьянке как то чел попросил смогу ли я ему запилить сайт. Ну я сказал хули там конечно смогу. Он попросил типо интернет магазин автозапчастей. Ну я накинул что во первых надо ИП, хостинг, домен. Так как дело в рб происходило в то время хостинг и домен уже влетали в 50$. Подключение сервисов оплаты. Заполнение каталога. Разработка дизайна. И это просто что бы был. А на рекламу еще тыши даларов. Ну вот после этого всего он ответил "Понятно, значит не можешь.". Просто у него в голове созрел план а как реализовать его он хуй знает.
>>2251488 Я не спорю, что такой подход норм. Но это как отдельный скилл - умение и желание общаться с людьми, разжёвывать, составлять сметы, настаивать на своей позиции при оплате и т.д. С этим навыком - можно вообще программировать не уметь. У меня вон пол организации аналитиков таких. У меня нет ни умения таким заниматься, ни желания. И без этого программированием на хлеб с маслом заработаю.
>>2251688 Потому что никакого стандартного не было. Майки его просто не добавляли, везде был свой зоопарк для работы с Джейсоном, пока не появился Newtonsoft.Json, который стал де-факто стандартной либой.
С очередной версией фреймфорка корпорация опомнилась и заставила разрабов делать свой Ньютонсофт, что было ошибкой. Через пару лет они уберут опять системную ассембли для работы с json, поняв, что лучше уже не сделают. Не помню, недавно что-то майки ещё убирали со словами юзайте gRPC))wcf?.
>>2250877 Так ректал с тайпскриптом это интерпрайз мира фронтеда. 100500 зависимостей, вебпаки, гранты, хуянты, транскомпиляторы. Конечно с наскока такую порцию говна не получился съесть. Нужно было vue-няшу брать и на ванильном жс делать.
И почему вы думаете что технология умрет? Как по мне сейчас все языки идут к упрощению. Блейзор как раз таки и упрощает разработку. Зная просто синтаксис C# разобраться в ней не очень сложно. А вот если посмотреть на веб формс то это просто пиздец какой то. Имхо мне там нихуя вообще не понятно. И вообще я думаю майки стремятся все упросить. Поставил VS и прогай. не надо ставить апачи хуячи ножс сервера и прочию хуйню. Так сказать программирование для тупых. Ну а если блейзор медленный то и похуй. 16g ram 10$ стоят. Вообще сейчас оптимизация стоит на последнем месте. Главное быстрее выкатить продукт.
>>2251054 >async/await - чтобы не пердолить руками продолжение задач А если не использовать async/await, то пердолить что то вроде пикрилейтеда и постоянно вызывать Perform(), или выпердоливать коллбекового монстра?
>>2251400 Да что тут рассказывать, какое-то ебанутое интервью по тестовым заданиям. Ну я попутал в некоторых местах, они вдвоем даже не знают толком что им нужно, как мне на это ответить
>>2251848 Потому что во фронтенде React, Angular и Vue. Остального в дикой природе не существует. Кто возьмёт Blazor себе на проект, тот сядет на хуй, с которого нельзя будет быстро и безболезненно слезть. И тяжело потом будет новых разработчиков под эту хуйню находить. Буквально весь энтерпрайз понимает, что Blazor -- это игрушка, которую разве что в петпроджектах потыкать можно для разнообразия.
>>2250011 Двачую. Все так и было. Был самостоятельным мидлом, которому техлид давал ебанутое задание и отправлял исполнять на месяц, ушел в корпорацию где ит отдел 2к рыл. Тут работаю по скраму. Так я тут только деградирую. Двигаю кнопки, изменяю сценарии в winform, пиздец короче.
>>2249961 В крупные конторы стажеров нанимают преимущественно среди студентов вузов, которые неплохо умеют решать задачи на литкоде, но при этом во всяких кишках фреймворков не сильно разбираются, как и толком не умеют ничего делать полезного. У обычных контор нет денег обучать стажера, который умеет только в алгоритмы, поэтому стараются взять джуна, который уже умеет писать какие-нибудь круды на asp.net/spring/node.js/go, но при этом пусть и не умеет в алгоритмические задачки. Как-то так, на мой взгляд.
Здравствуйте, извините за заранее возможно глупый реквест. Говнокожу в рога и копыта приложения на wpf'e, уже есть относительно готовый продукт. Кабан захотел перевести этот продукт в веб. Начал пилить на асп.нет коре, опыта в вебе практически нету. Пока накидал фронт на бутстрапе, где-то половину или больше логики нужно будет переписать на js. Читаю мануалы по js'у - 80-90% похож синтаксис шарпа, все понятно, просто пробегаюсь глазами по нюансам. Вопрос следующий - где можно почитать для максимально быстрого вката информацию про взаимодействие логики клиента (js) с асп сервером? К примеру мне нужно на нажатие кнопки обновлять картинки на странице (без обновления самой страницы), но я также не хочу их выставлять в виде заранее готовых урлов, я хочу чтобы к примеру js отправлял на сервер условный id, сервер записывал в бд действие клиента и отправлял сырую пикчу клиенту.
>>2252389 Тебе нужно прежде всего перейти во-первых на TypeScript, во вторых взять фреймфорк из большой тройки: Angular, Vue, React.
Но Реакт всё таки для буйных, поэтому Ангуляр либо Вью остаются.
Писать фронт на чистом JS - это сегодня можно, но зачем, особенно если ты не из фронтовой разработке с опытом.
Есть ещё блейзор - но ты не верь что здесь пишут, мол будущее веба, это очередной UI высер от майкрософта, который умрёт через пару лет и прийдеться вилкой чистить упоминание этого шедевра в твоем резюме, как чистят веб-формс.
Вообще зачем майкрософт влошилась в blazor? Очевидно ведь, что очередная замена вебформам и сильверлайту (ровно как умершие jsp и апплеты в джаве), хоть и компилируется в webasm (кстати как? хочу почитать как оно там реализовано, неужели своего рода микро-clr встроена туда), вряд ли когда-либо взлетит.
>>2252418 Джава апплеты мертвы уже наверное лет как 15, да и из самой jdk их полностью выпилили давно. Никто их возрождать уже никогда не станет, так как нет никакой необходимости крутить жаба код в браузере, когда есть js. Собственно, все эти апплеты, Flash, Silverlight сдохли давным-давно, потому что пришла эпоха джаваскрипта. А webasm нужен для того, чтобы сложную графику отрисовывать, да и то, его почти никто не использует.
>>2252389 > 80-90% похож синтаксис шарпа, все понятно, просто пробегаюсь глазами по нюансам Схожесть синтаксиса -- это ни о чем. На фронте и на бэке практически противоположные подходы к управлению состоянием (на бэке оно живет короткое время между получением запроса и отдачей ответа, а на фронте оно живет долго, пока пользователю не надоест взаимодействовать).
> Вопрос следующий - где можно почитать для максимально быстрого вката информацию про взаимодействие логики клиента (js) с асп сервером? Во-первых, тебя интересует не JS, а TypeScript.
Во-вторых, ничего быстро почитать не получится. Сделал MVP, понял проблемы, в следующий раз сделал что-то лучше, тоже понял проблемы, в третий раз ещё лучше...
В-третьих, если нет и не предвидится отдельных сильных фронтовых ребят, лучше взять Angular. Тоже фреймворк (а не библиотека), тоже есть DI, тоже есть ощущение энтерпрайзного спермяка во рту. Только как можно раньше освой RxJS и не пиши бизнес-логику в компонентах. Говорю по своему опыту и коллег опыту. У нас был проект, где нам сделали опытные чуваки фронт на Vue, который мы заебались поддерживать и который переписали на Angular.
>>2252389 > но я также не хочу их выставлять в виде заранее готовых урлов, я хочу чтобы к примеру js отправлял на сервер условный id, сервер записывал в бд действие клиента и отправлял сырую пикчу клиенту.
Я не специалист в JS (так же как и в шарпе, только вкатываюсь, до этого был небольшой опыт в джаве, ну и JS покопал с Реактом, все чисто на пет проектах, реальной работы не было, т..е. по факту я намного хуже тебя, лол).
это все делается через асинхронный джаваскрипт и технологию AJAX. Технология древняя как говно мамонта, недавно ее заменили на Fetch API (ну естессно индусы напилили кучу разных npm модулей поверх нее, к примеру AXIOS). В общем для понимания того как это работает из под коробки, тебе нужно изучить как JS работает с DOM (ну это считай самые основы работы в браузере, т.е. буквально тебе нужно узнать как JS работает с ХТМЛ элементами на странице, как выбирает их и как изменяет их, как повесить на тот или иной элемент обработчик того или иного события), изучить как работает асинхронный JS (через промисы или асинк/авейты, что в общем тоже самое что и промисы только другой взгляд), а так же собсно изучить непосредственно сам Fetch API (ну или аксиос). Грубо говоря, если не брать фреймворки всякие, при нажатии на кнопку срабатывает обработчик события, в этом обработчике посылается асинхронный запрос на сервер, там уже делается какая-то хуйня независимая от клиентской стороны, и тут же JS ловит ответ. Это может быть как и удачный ответ, так и ошибка, он может обработать оба в разных вариантах. И тут же ты ищешь элемент на странице, который хочешь изменить в соответствии с полученной информацией и тут же его и меняешь, никакого обновления страницы при этом не происходит. Там все довольно просто и изучить при желании это можно за пару дней.
Тут говнари тебе зачем-то тайпскрипта насоветовали, но тайпскрипт здесь не при чем. Это все равно что посоветовать вижуал бейсик в вопросе про технологию .NET. Типа, ну да, может где-то и удобнее он, но это блядь просто блядь другой вариант описания, лол. Ну или в спринге вместо джавы посоветовать использовать котлин, типа, ну да, так красивее, но ответа на вопрос "как сделать это" не дает.
>>2252389 >>2252650 Алсо, ответ в большинстве случаев ловят JSом (ну и соответственно отправляют бэкэндом) не в виде TEXT/HTML, а в виде JSON (что-то типа XML, только проще). Т.е. на стороне ASP тебе нужно будет сделать обработчик запроса (get/post/и так далее, в зависимости от того что отправил JS) (даже не ебу как там в ASP все это делается пока, наверное какой-нибудь контроллер с экшонами, ну или как-то так) который в свою очередь что-нибудь сделает там в базе данных ну и направит ответ не в виде View (как в MVC), а JSON'чик. Это частично называется REST технологией, хотя REST это не только джейсончики и обработка запросов.
Собственно именно поэтому фронтэнд называют вешателями обработчиков на формочки, а бэкэнд - складывателями инфы в джейсончики
>>2252558 Ангуляр выглядит реально монструозным комбайном и работает с такой же скоростью, не говоря о том сколько времени нужно запрягать хелоу ворлд. Если видел админки гугловских сервисов типа адмоба или консоли гуглплей, они построены на ангуляре, и это типо один тяжеленный дашборд на сотни тыщ строк тормозного жс говна. Для spa, которые юзаются как приложения это норм тема, но это подойдёт далеко не каждому сайту. Как и реакт, и вью, и тс. Только огромное преимущество вью, что не нужно тащить всю нодовскую экосистему чтобы юзать человеческие двусторонние байндинги. Просто подключенишь его через cdn как в старые времена без говняка и всё. имхо
Поясните за gRPC. В чем профиты по сравнению с православным json'ом ? Стоит вкатуну его учить или можно просто ознакомится? так с первого взгляда чет сложным все это кажется. Есть ли какая приблуда которая может конвертить обычные объекты в grpc ?
>>2252818 Тебе надо было поменять местами типы и раздраконить конструктор? Шарп вдохновился джавой и плюсами. хера джава так похожа на плюсы, лол, пориджы
Проверьте мои знания по многопоточности. Не имеет смысла создавать больше Thread чем ядер у процессора. х2 если есть Hyper-Threading Не имеет смысла создавать больше потоков чем ядер у процессора для операций требующих один поток, например запись файла. Имеется в виду что инфа которую пишем в файл уже есть и ждать ее не надо. Лучше юзать Task чем Thread. Если точно знаешь зачем и почему тебе нужен Thread то тогда юзать его. Таски надо юзать когда есть время ожидания ответа. Например HTTP запросы.
Хуй знает что еще сказать. Напишите что еще можно добавить. Ну типо я еще знаю что таска запущенная потоком не обязательно закончит выполнения в этом потоке. Но я больше про так сказать общие вещи.
И правильно ли я понимаю, к примеру имеется 2 ядра на процессоре2 потока. Задача записать 10к файлов. Быстрее будет в цикле создавать по 2 таски и писать по 2 файла, чем просто создать 10к тасок и записать все файлы?
>>2253117 Данные на жесткий диск пишутся последовательно, параллелить это не имеет смысла, только замедлишь. Вот если запись на ссд там другая история.
>>2253121 >Вот если запись на ссд там другая история. А что за история? Разве не будет делить скорость запись на количество одновременно записываемых файлов?
А вообще, в VS Code на C# нормально всё или есть херня? Просто VSS, ИМХО, жырная слишком, насчёт эклипсов и прочих не знаю, а жыдбрайнсы... Жыдбрайнсы, да.
>>2253283 Вот смотрю я на это и так и хочется запилить свой MVC'шный фреймворк на плюсах, просто чтоб все пососали. Но, к сожалению, понимаю, что в соло буду долго слишком делать. Был бы студентотой - таки запилил бы.
>>2253204 А щито поделать. Для разработки машина должна быть достаточно мощной. Настолько, чтобы тебя вопрос размеров средств разработки не волновал от слова совсем.
>>2253299 > Вот смотрю я на это и так и хочется запилить свой MVC'шный фреймворк на плюсах, просто чтоб все пососали Пососал бы скорее ты, и делал это говно до старости или с кучей багов. Язык говно
>>2253361 Безработного раст-борщехлёба порвало)) Все уже зависимости в mod.rs ручками прописал? Все ошибки через хрезульт вверх пробросил? Нет? А ну бегом дописывать, а то останешься без стектрейса, средневековые долбики.
Шарпаны. В общем, вот и наступил 2022 год. Желаю тем кто вкатывается - вкатиться в наш любимый .net. А тем, кто уже вкатился - офферов пожирнее и адекватных кабанчиков, которые будут ценить вас и понимать, что если фичу надо делать две недели, то ее нужно делать 2 недели! В общем, успехов всем.
>>2253421 >>2253427 Кланга на шинде нет (официально), заводится только с кучей ебли.
А ещё на шинде ни LLD (линкера), ни LLDB (дебаггера), ни отладочных сибволов для рантайма и стдлиба и наверняка ещё вороха тулз, которые гугы и эплы не хотят пилить под винду, и для сборки нативных бинарников юзаются нативные средства, но шиза почему-то от этого рвёт.
>>2253425 > так ещё и от МС вс Не то чтобы был выбор. Можно конечно поебаться и собрать какой нибудь кланговский/гнушный тулчейн — но даже для их сборки придётся тащить MSVC ибо иначе ты с системными либами хуй чего слинкуешь, закрытая система как есть. Напоминаю: вендорлок — выдуманная хуйня.
>>2253427 Ко-ко-ко мы убивцы С++ @ 100500 страниц холиваров на всех форумов мира. @ Прошло почти 7 лет с релиза. @ Поставьте пожалуйста средства разработки С++, иначе мы не соберёмся у вас.
>>2253437 Коварный МС не открывает нам коды линкера, чтобы мы могли стырить форкнуть код, который 7 лет написать сами не можем. Чет проиграл с этих угнетателей С++.
Вопрос по структуре папок. Вот я, на данный момент, придерживаюсь правила: Неймспейс отражает структуру папок, а папки вложены друг в друга. Ну, т.е. как-то так: Папки Data->Migrations->Sqlite Неймспейс получается Data.Migrations.Sqlite
Так вот. Я осознал что с определенным уровнем вложенности и если на разных уровнях есть разные сущности - становится не очень удобно пользоваться редактором, потому что куча папочек нужно раскрывать, чтоб дойти до нужного мне файла с кодом.
Так вот. В ходе изучения репок я видел что некоторые делают так: Data Data.Migrations Data.Migrations.Sqlite
Это все отдельные папочки. В плане удобства пользовать - выглядит вроде как удобнее. Но, вот если мне нужно будет переместить это вот в другой неймспейс - придется все папочки переименовывать, а раньше я просто переименовываю нужную папочка/перемещаю в нужную папочка и аддночик всем файлам по структуре переименует.
В общем. Как вы организуете все это дело? Может быть есть какой-то третий путь, который не имеет недостатков этих вот?
>>2253551 >гугы и эплы не хотят пилить под винду Твои же слова, пьянь шизоидная. Уже идет 7 год, а у вас экосистема намертво завязана на плюсы, которые вы там победили. В какой-то степени получилось, что всрали кроссплатформенность, потому что никто за бесплатно не хочет написать линкер на венде. Вероятно, играться с синтаксимом и ломать его каждые 2 года куда интереснее, чем действительно сидеть работать.
Завязка на тулкит visual studio (6гигов) это фиаско, братан.
Не кормите шизика, он ноулайфер нигилист, который отрицает любое мнение (во всех тредах) лишь бы пофлудить. Причем виляет жопой даже когда его откровенно тычут носом в факт.
Ну, вот допустим, у меня есть класс. Я зарегал его как Scoped. Допустим в этом классе в конструкторе я прошу дать мне еще несколько классов. При этом все классы просют DbContext какой-то. Правильно ли я понимаю, что все классы получат один и тот же инстанс и если я в одном из классов руками закрою или задиспозю контекст - в остальных - он тоже будет задиспозин? Просто у меня создалось впечатление что да.
Мне кажется микрософты ни когда не выпустят вижлу на линупс и не будет кроссплатформенных десктопных приложений. Всё это обман. Они купили Моно, чтобы его удушить, а не развивать.
>>2254085 >Они купили Моно, чтобы его удушить, а не развивать. Моно они купили за полгода перед выпуском .NET Core, подумай зачем.
>не будет кроссплатформенных десктопных приложений Не нужно. А как ты себе это представляешь? Все кросс-платформенные ГУИ - это дикий ужас, не говоря уже о том, что на выходе получается говно. Разве что джабаскрипт в вшитом браузере гонять.
Если мы даже говорим про шиндоус, то WinForms - едиственный вменяемый, не убитый, ГУИ фреймворк ноудискас, а ты кросс-платформенный ГУИ просишь.
>>2253666 >все классы получат один и тот же инстанс Если ДбКонтекст зареган как скоупт, то получат один и тот же. >он тоже будет задиспозин? Если это будет один и тот же объект, то очевидно, что да. Но не ты создавал объект, не тебе и диспозить. Плюс контекст обычно регают через специальный метод расширения, поэтому лучше посмотри для чего нужны и чем отличаются AddDbContext/AddDbContextPool AddDbContextFactory/AddPooledDbContextFactory.
>>2254088 >На маке там просто обрубок. На маке не обрубок, а другая иде, бывшая xamarian studio. >>2254085 >вижлу на линупс и не будет кроссплатформенных десктопных приложений Шизик, плиз. Во-первых, они уже есть, во вторых под пинус есть райдер.
Ковыряясь в либах асп коре, я вижу, что там много всего обвешано логгерами. Но почему оно не выводится даже при установленном логлевеле в трейс? Я могу как-то увидеть эти логи?
>>2254100 Вроде настроил. Переместив конфигурацию логинга из appsettings.Development.json в appsettings.json. Хотя установлен "ASPNETCORE_ENVIRONMENT": "Development" и вроде как у appsettings.Development должен быть приоритет. Буду копать дальше
>>2254099 >На маке не обрубок, а другая иде, бывшая xamarian studio. "Другая иде" называется Visual Studio, очевидно что анон ожидает увидеть не полумёртвую кусок говна с 1/5 функционала студии и апдейтами раз в 3 года.
>Шизик, плиз. Во-первых, они уже есть, во вторых под пинус есть райдер. 1) Чел говорит про майкрософт; 2) У КРОССПЛАТОРМЕННОГО дотнета единственная нормальная кроссплатформенная иде написана на жабе, которую он убивает. Ару.
>>2254092 >Не нужно. От мантры какого-то кодера конечно весь бизнес одумается и пойдёт хуярить нативный софт под каждую платформу. Нет, будем жрать говно на электроне.
>>2254131 Шизик, что переписывтаь? Методичку обнови.
Те кто, кто писали windows-only b2b - им и так норм и никто ничего переписывать не будет.
Маленькие кампании уже давно делают под веб, поэтому тут тоже никто ничего переписывать не будет.
А большим b2c продуктам кросс-платформа не нужна, они могут позволить себе писать под каждую платформу. Да, представь, это не твой кабан, который хочет шоб работало везде.
Итог: никому по факту кросс-платформенный новый декстопный фреймфорк от майкрософта уже и не нужен.
>>2254142 >дотнет инфрастуктуру Которая настолько кросплатформенная, что через 20 лет на ней не написан даже тулкит для работы с ней. Ну прямо-таки новые жопаскриптеры, которых весь мир обслуживает, хех.
>>2254131 Как оно работать будет, если даже сейчас компилируются разные файлы в разных ОС? Надо будет отдельно для каждой ОС собирать свою сборку. В чём кроссплатформенность заключается и нафига тогда нужны виртуальные машины, если всё равно не совместимо?
Допустим, я написал свою прогу. Откомпилировал в релиз версии. И что мне вот все эти файлы надо передавать на другой комп, чтобы работало? Или можно выкинуть всё кроме ехешника?
>>2254152 >цитируешь где там было что-то про переписывание
>конечно весь бизнес одумается и пойдёт хуярить нативный софт под каждую платформу >одумается и пойдёт хуярить нативный софт
Имелось в виду, что никто никуда не пойдет ничего писать под нативный софт, потому что кому надо, уже давно это делают, а днище-конторы не нужны. Но психичка придирается к словам, ок.
>>2253199 Ясно, спасибо. Теперь гораздо понятнее как оно работает. Только что точно можно оттуда почерпнуть так это то, что await генерирует таск даже, если ждать не пришлось вообще. Но что тогда лучше делать, если скорее всего результат вернётся сразу? Тянуть до самого верха async/await в логике, которая чаще всего выполняется синхронно? Сесть и подумать как ты слепил говнину, в которой столкнулся с такой проблемой? Или это распространённый случай?
>>2254245 Почему тогда все приложения сложнее хелоуворда имееют отдельные дистрибутивы по каждую ос (dbeaver/smartgit/miecraft) даже если брать только бинарики без инсталлеров? Неудобно получается.
>>2254193 Мало того что читать не умеешь, так ещё и писать? Хуёво быть тобой. Ну раз уже тебе нинужна, то наверно оно так и есть.
>>2254171 Да за тебя там скриптики напишут которы бандлы для систем будет раскладывать, проблем-то. Тащемта, вся кроссплатформа именно так и работает, а запустить где угодно скомпилировав 1 раз можно разве что консольную жава утилиту, кек.
>>2254189 -Либо нужно рантайм .NET на компе, -Либо собираешь все dll в одну папку -Либо вообще все в один файл (не работает с Net 6 для 7 винды). Но тогда твой хеллоу ворд в exe будет весит мегов 60, за то один exe.
Если хочешь распространять софт и пишешь под последний .NET, то нужен уже упаковывать в какой-то инсталлер, который будет предлагать ставить нужный тебе .NET (либо по аналогии боли С++, собирай в такой древний рантайм, который был бы у многих).
>>2254189 -Либо нужно рантайм .NET на компе, -Либо собираешь все dll в одну папку -Либо вообще все в один файл (не работает с Net 6 для 7 винды). Но тогда твой хеллоу ворд в exe будет весит мегов 60, за то один exe.
Если хочешь распространять софт и пишешь под последний .NET, то нужен уже упаковывать в какой-то инсталлер, который будет предлагать ставить нужный тебе .NET (либо по аналогии боли С++, собирай в такой древний рантайм, который был бы у многих).
>>2254394 Где ты слово вместе С++ увидел? Речь про то, что последние рантаймы шарфа (и С++), не всегда у всех стоят, поэтому приходится собираться под древний рантайм.
>>2254412 Я увидел >боли С++ дислексик, пиздуй в библиотеку а не на сосаче сиди.
>Речь про то, что последние рантаймы шарфа (и С++) Вот с этого опять крикнул. В плюсах рантайм 10-15 мб весит и линкуется к бинарнику одним флагом, что и кому там приходится?
>>2254413 После инцидента с log4j, люди начнут в тройне осторожнее относиться к ноунейм высерам на жабе. Без официальной поддержки, такое страшно юзать.
>>2254452 > Без официальной поддержки Йобу дал? Это официальный упаковщик, оракл это говно и ещё пару штук для дистрибьюции почти 10 лет пердолили. Но оказалось никому не нужно, потому что клиенской практически не существует.
>>2254483 2020 год, жабисты все еще путают кроссплатформу дотнета c IDE (которая даже не оригинальная visual studio). Конечно Visual Studio и дотнет это же одно и тоже.
>>2254644 >>2254649 >Кто умеет, тот делает; кто не умеет, тот учит других. Ни разу не видел чтобы кто-то что-то полезное выложил, везде рассказывают про базовые конструкции, ифы, типы, или же абстрактно болтают об высоком (абстрактном).
Хоть кто-то бы из реальной работы что-то показал, или рассказал про архитектуру своего опенсорс проекта или сделал бы стримы по своему проекту с пояснениями.
Ничего нет посмотреть по программированию. Либо новичковая параша, или бестолковые и скучные подкасты, от которых засыпаешь.
>>2254503 >нинужна!1 Ох уж эти манявры. Столько пиздежа, и по итогу единственная кроссплатформенная иде на дотнете — перекрашенный опенсорс проект на попенсорсной версии дотнета...
>>2254756 >VS никогда не была кроссплатформенным. >Джава баран пытается троллит тем, что VS не кроссплатформенный. Либо додик перепил или пориджы совсем отупели.
>>2254741 >Ничего нет посмотреть по программированию. Либо новичковая параша, или бестолковые и скучные подкасты, от которых засыпаешь. А ты попробуй читать. Есть такая штука - книги называется.
Признайтесь честно - линукс парню здесь делать нечего. Его знания не пригодятся. Все пропитано корпоративным духом винды. В каждой вакансии плюсом iis, sharepoint, и т.д. В хелловорлде интеграция с азурой. Нельзя как нормальных стеках начать с табула раза и по пути выбирать что тебе по душе, по карману и по карме.
>>2254810 @ 40% новый пользователей в дотнете это следствие появления .Net Core. @ Мягкие настолько вдохновляются, что делают core по умолчанию и объединяют все под линейками Net 5, Net 6. @ Дотнетчики Net Framework ощутимо в офигивают. @ Даже xamarin и mono пытаются привести к общему виду, максимально унифицировать интерфейс. @ ASP.NET под линуксом показывает очень хорошие результаты на уровне неуправляемых языков - С++ и Раста. Спринг просто сосёт. @ Но специалист из /зк, изучив объективные данные своего мухосраня, решил признаться честно за всю индустрию тупая макака из жабы пытается в троллинг, но очень глупа и поэтому получается только пук и среньк
>>2254815 Ради интереса спрашиваю, есть ли нормальные примеры проектов на asp.net core? Например что-то по типу https://github.com/spring-projects/spring-petclinic Пока выходные хочу потрогать asp, может на него со спринга когда-нибудь перекачусь
>>2254815 Я не джавист. Я хочу в серьезный стек свичнуться. Но сейчас объективно нельзя начать на net 6. Нужно знание кучи легаси и мухосрань тут не причем, все умеют пользоваться хх. Может лет через 5...
>>2254815 >Даже xamarin и mono пытаются привести к общему виду, максимально унифицировать интерфейс. Ага, седьмой год приводят и всё никак. А хайпа-то было когда замарин покупали.
> 40% новый пользователей в дотнете это следствие появления .Net Core. По каким данным? От тех же маркетолухов, которые студию на всех платформах обещали?
>>2254815 >Но специалист из /зк, изучив объективные данные своего мухосраня, решил признаться честно за всю индустрию Ну анон выше пояснил за ненужность кроссплатформенного гуя, а этот пояснил за ненужность дотнета. Зк — это площадка свободомыслия для шизов, спок, фанбой.
>>2254821 Был бы программистам, знал бы что есть поиск в гитхламе и что по наймспейсу или классам или зависимости можно найти туеву кучу того что тебе нужно
>>2254824 Через 5 лет будет .NET 11 и ты будешь тут ныть, что нельзя писать ничего на NET 11, и вообще надо опять ждать.
>>2254820 А если бы промолчал и не показал свою некомпетентность, не порвался бы так при людях.
>>2254834 Не знаю имеют ли смысл пруфать что-то троллю.
Ты же знаешь, что в скандинавской-айтишной мифологии, будучи троллем, если ты получаешь пруф, ты теряешь одну извилину и так пока не превратишься в камень.
>>2254842 Гладкий моск фанбоя размером с фисташку как обычно продолжает неиронично принимать информацию от топ кабанчиков. И клеймить всех критически настроенных к подобному пиздежу троллями. Классика.
Увидел, что в райдере оказывается можно одним кликом смотреть исходники классов стандартной библиотеки, типа Dictionary, Math и т.п. А в студии так можно? Пробовал нажимать F12, но вместо кода она показывает какую-то парашу (throw null вместо тела любого метода).
Получается, что все вакансии на сишарп - это фуллстек, немного бэкенда, а основная нагрузка - это фронтенд? Получается помимо сишарпа надо учить ещё жабаскрипт/тайпскрипт и фреймворк типа ангуляра/реакта?
>>2254910 Да, а что ты хотел? Какой-то ультрахайлоад на шарпе не пишут, большой бекенд тоже редко. Остаются только небольшие галеры, где важнее нахуярить нормально фронт, а бекенд оставить как прослойку между фронтом и БД.
>>2255021 Обиженный тролль из раст треда (скорее всего просто качающий между тредами шизик) пытается манипулировать фактами, создавая неудобные наводящие вопросы.
>>2255027 Ты тот самый фанбой шарпа? Тебе же лет 13-15, верно? Ну ничего страшного, в твоем возрасте я тоже любил троллить двач и засирать треды. Только лучше делай это в /b, а не в тематике.
>>2254810 >Признайтесь честно - линукс парню здесь делать нечего Более того, линукс парню вообще делать нечего! Сколько шизов грезило кроссплатформой, а на деле под линукс в десктопе толком ничего и не пишут. Одни только формочки-мордочки поверх каких-то консольных команд/файлов. Про геймдев я вообще молчу.
Линукс это 1-2% пользователей, которых еще тщательно отъедает макось. Получается, что кроме сетевых серверных технологий на линуксе заняться больше нечем. О чем ты вообще?
>>2255035 Сейчас бюджетные конторы переходят на отечественную ось (линупсы) и им нужны аналоги десктопных программ из венды. Это золотая жила! Но из-за нерасторопности микрософтов шарф оказывается в пролёте.
>>2255058 Не получается, нет замены ПО, а работу надо выполнять каждый день. Невозможно закрыть учреждение и вывесить табличку: услуги не оказываем, ждём когда погроммисты напишут новые программы.
>>2255049 1С из браузера работает. На OpenOffice кабаны уже шильдик повесили в реестр внесли. А ещё то чего не хватает? Потребности на 95% покрыты. Остальные потребности специфические, местечковые и малочисленны, и там ловить нечего.
>>2254910 >Получается, что все вакансии на сишарп - это фуллстек, немного бэкенда, а основная нагрузка - это фронтенд? Нет, не все.
>Получается помимо сишарпа надо учить ещё жабаскрипт/тайпскрипт и фреймворк типа ангуляра/реакта? Сейчас реалии таковы, что js нужно учить практически всем кто хоть немного связан с вебом. Увы.
Есть ли принципиальная разница в кодовой базе и архитектурах между аналогичными технологиями .Net и Core? Вот к примеру, как сильно отличаются ASP.NET на технологиях винды от нового оупенсорсного брата? Нужно ли мне изучать два фреймворка будет потом, или достаточно изучить Core, как самый новый, и при этом я смогу писать под старый (естесно с небольшими правками за счет версионности?
>>2255218 Если бы мне нравилось заниматься переводами с английского, то я бы пошёл в переводчики и зарабатывал бы больше, чем какой-нибудь программист, которые уже не нужны, с ними уже борются.
>>2255241 Ну если так стоит вопрос и ты уверен что вот прямо пойдешь туда работать, то учи старый. В принципе там не особо большая разница (хотя, честно говоря, я х.з. как это с точки зрения новичка). Но я бы на твоем месте поискал нормальную удаленку с современным стеком. Опять же смотри. Старый стек подразумевает, что у тебя типа есть какой-то опыт. А новичок в 2022-м году изучающий его, а не Core, вызывает подозрения.
>>2255254 >мне нравилось заниматься переводами с английского При чем тут нравится или нет. Умеешь в английский - берешь и просто читаешь. Без превозмоганий и мучений. Не умеешь - ну тогда не жалуйся, что на твоем языке только просроченная инфа имеется.
В чем отличие CookieAuthenticationOptions.ExpireTimeSpan от CookieAuthenticationOptions.Cookie.MaxAge? Я так понимаю maxage это для браузера, а ExpireTimeSpan для серверной валидации. И если это так должен ли MaxAge быт больше, чем ExpireTimeSpan?
Аноны. Вопрос тупого новичка. Есть OData контроллер который через GET запрос вытаскивает разные данные из БД и отдает их в виде IActionResult на фронт. Мне нужно сделать так, чтобы данные типа double отдавались на фронт в виде string'а. Я понимаю что это можно сделать через фильтр, но что в нем делать с ответом?
>>2255302 Оба это аттрибуты куки для браузера. Разница в формате, в max age это секунды, в expires это конкретная дата. Если заданы оба то у max age приоритет
>>2255348 А ты не путаешь CookieAuthenticationOptions.ExpireTimeSpan и CookieAuthenticationOptions.Cookie.Expiration? Первый это часть тикета, который храниться внутри куки в зашифрованном виде.
>>2255377 Да, не заметил что в одном случае к тикету относится а не к кукам. Тогда да, все верно. >>2255302 >И если это так должен ли MaxAge быт больше, чем ExpireTimeSpan? Зависит, если есть смысл в том, чтобы браузер слал куку которая на деле уже Expired - то, если смысла в этом нет - то нет, ставь равными значениями или MaxAge меньшим
Здравствуйте, извините за очень неофитовый вопрос - можно ли как-то в asp.net core хранить и использовать данные в контексте текущей сессии на стороне сервера. У меня проект - обычные тесты какая ты фея винкс, вопросы хранятся в базе - при загрузке вопроса идет js fetch на урл апи контроллера который возвращает данные вопросов/ответов. Было бы очень удобно не ебаться с перекидкой кучи айдишников по типу какой конкретно вопрос нужно достать, айдишники на отправку запроса для следующего вопроса и т.д., а просто делать fetch без всех этих параметров и на стороне контроллера сразу хранить всю нужную инфу в сессии на стороне сервера. На всех страницах у меня стоит [Authorize].
Иногда студия генерит код с аттрибутом DisallowNullAttribute. Вот пример такого кода: public int GetHashCode([DisallowNull] string obj) { throw new NotImplementedException(); }
Студия добавляет этот атрибут, даже не смотря на то, что во всём проекте используется <Nullable>enable</Nullable>. Имеет ли это какой-то смысл?
Мне нужно имплементировать IEqualityComparer<string>. Строки он должен сравнивать как обычный чувствительный к регистру строковый компарер. Но есть следующие отличия: 1. все пробельные символы слева и справа должны игнорироваться. Внутренние несколько пробельных символов должны считаться одним пробелом. 2. есть наборы символов синонимов, которые должны интерпретироваться как одинаковый символ. Например, разные символы умножения (*, x (eng), х (ru), ×, ·) или же цифры (3, ³).
Как реализовать bool Equals(string? x, string? y) ??? Мне видится два подхода: 1. сделать x.Trim(), x.Replace(...), то же для y. Возможно самому заменятель, чтобы он один раз пробегался по всем символам и была бы только одна дополнительная аллокация нового стринга. Тут проблема в том, что доп. аллокация будет и в Equals, и в GetHashCode. 2. Написать свой компарер, который не будет ни разу ничего аллоцировать, а будет работать только пробегаясь по исходным стрингам. Но это что-то сложно кажется. Даже не знаю, как подступиться по нормальному.
Что посоветуете? Может есть готовый компарер с наборами символов-синонимов?
Двач помоги. Как на C# можно объявить переменную с именем по значению другой переменной... На Пыхе это просто: $a = 'myvar'; $$a='myvalue'; echo $myvar; --------------- myvalue
>>2256096 >>2256119 > new Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary<string, Dictionary>>>>> У вас есть классы, интерфейсы, наследование, агрегация и прочие радости, но нет не хочу делать типы, которые будут описывать сущности в коде, хочу ебланить и пердолить изуверские конструкции.
>>2256148 Будущий шарфо-мэн попросил объяснить как представить из динамико-дресни в статику-дресню концепцию динамического связанного списка, я ему и показал. А то что он там словарь прикручивает, так это его желание. Сбрызни, ржавый
1. Почему кто-то еще работает на внутреннем рынке, когда такое большое количество вакансий для удаленки? И не везде требуется английский. Мидлам предлагают 3к+ зеленых, неужели мидлы в России получают больше? 2. Сколько приблизительно времени требуется для подготовки к собеседованию на тему структуры данных и алгоритмы?
1. Почему кто-то еще работает на внутреннем рынке, когда такое большое количество вакансий для удаленки? И не везде требуется английский. Мидлам предлагают 3к+ зеленых, неужели мидлы в России получают больше? 2. Сколько приблизительно времени требуется для подготовки к собеседованию на тему структуры данных и алгоритмы?
>>2256536 >Сколько приблизительно времени требуется для подготовки к собеседованию на тему структуры данных и алгоритмы
Смотря в какое место. Тот же тинькофф требует, чтобы ты умел решать задачи на динамическое программирование уровня "хард" на литкоде. А есть места, где тебя максимум попросят односвязный список развернуть.
>>2256536 >Почему кто-то еще работает на внутреннем рынке, когда такое большое количество вакансий для удаленки? Потому что у людей семьи, ипотеки, люди хотят стабильную и понятную работу, уверенность в завтрашнем дне. Люди хотят спокойно просыпаться по утрам и пусть лучше каждый день будет днём сурка, чем новым приключением.
>структуры данных и алгоритмы? Это спрашивают не потому, что это нужно в деле, а просто потому что это маркер, который легко проверить и легко отсеять лишних. Соизволь подготовиться. Времени займёт как универский курс на данную тему. 30 часов лекций + 30 часов практических семинаров + 50 часов самостоятельного решения задач + 30 часов самостоятельного изучения теории. Примерно также. Но самому будет дольше, так что лучше - на платные курсы.
В начале года выбирал яп и технологию веб-разработки для смены работы. Выбирал между .Net, Java, Python и Go, ориентировался по сложности входа, количеству вакансий и средней зп. Остановился на .Net, изучил и нашёл работу. И тут в последнее время из каждого тапка доносится «Зарплаты разработчиков в IT в 2021 начали расти с каждым месяцем», «Java разработчики снова на коне» и прочее. В нашей компании половина команды Java разработчиков из стороннего проекта за последние пол года ушли на место получше. Легенды в рабочих чатах гласят, что нашего сеньора из Java команды забрал всем известный жёлтый банк за 500к деревянных. Компания начала подымать зп Джавистам, чтоб попадать в рынок. Но данное чудо не произошло с нашей .Net командой, как были те же ребята с той же вилкой, так и остались. Общался со своим куратором и спросил, почему он так же не ушел в место получше. Отнекивался тем, что только у Java сейчас растут зп. Начал смотреть вакансии от HH до групп в телеграме, сравнивать с разными яп и периодом, когда только выбирал язык в начале года. И действительно Джависты повысили свой уровень очень заметно, в то время как .Net сильно то и не изменился, кроме количества самих вакансий, которое увеличилось. У остальных ЯП по вэкэнд разработке (PHP, Python и прочее) зп дошли до уровня .Net, а то и выше, по сравнению с началом года. Про Golang вообще молчу, синьору со знанием английского предлагают совсем неприличный ценник в у.е. Почему Java разрабы так сильно выросли по зп по сравнению с .Net, хоть они и делят общий рынок enterprise разработки и крутятся в той же предметной области? И по какой причине остальные бэк яп начали догонять и обгонять .Net по зп? Не говорит ли это о низкой востребованности .Net разработчиков и отсутствии новых проектах на .Net?
>>2256631 Дефицит квалифицированных рабочих, приводит к росту цен. Я уверен кобол программисты получают больше.
Огромное легаси и старый стек так же создает текучку. В итоге получается что зп на какой-то процент выше, а работа значительно сложнее и тех усилий порой не стоит.
Дотнет же более унифицированный и не имеет зоопарка в стеке технологий, от чего работа, даже с легаси, значительно легче. Джава же засохла где-то в нулевых и вокруг неё, словно грибок, выросло тонна разного рода решений одних и тех же задач. Поэтому специалист по джаве дороже, но и в башке там каши держать надо больше.
Важно не только много получать, куда важнее комфортно работать.
>>2256638 >Поэтому специалист по джаве дороже, но и в башке там каши держать надо больше. >Важно не только много получать, куда важнее комфортно работать.
Ну это все понятно, но почему на том же голанге или расте платят ощутимо больше? Если про джаву понятно - банки, легаси, кровавый энтерпрайз, дремучее легаси, то почему за хипстерские технологии платят больше?
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
>>2256648 >Ну это все понятно, но почему на том же голанге или расте платят ощутимо больше? Нехватка спецов. Именно сеньеров-помидоров, который вытащил бы на себе все говно.
Хипстота наговнила гошкой или растом, интерес кончился, свалила. Ну или где не свалила, а просто под самописное говно никто не хочет писать, то есть либо текучка, либо физически трудно найти что-то выше мидла, на супер-модный стек.
Проблема в том, что в новом стеке надо рогом самому все бурить, там реально скилл уже нужен, знаю тонну случаев, когда хипстота в 2010годы разводила кабанчиков на молодежные технологии и потом там же буксовала просерая все полимеры (одно дело поиграться, другое дело бизнес ).
>>2256648 >Ну это все понятно, но почему на том же голанге или расте платят ощутимо больше? Нехватка спецов. Именно сеньеров-помидоров, который вытащил бы на себе все говно.
Хипстота наговнила гошкой или растом, интерес кончился, свалила. Ну или где не свалила, а просто под самописное говно никто не хочет писать, то есть либо текучка, либо физически трудно найти что-то выше мидла, на супер-модный стек.
Проблема в том, что в новом стеке надо рогом самому все бурить, там реально скилл уже нужен, знаю тонну случаев, когда хипстота в 2010годы разводила кабанчиков на молодежные технологии и потом там же буксовала просерая все полимеры (одно дело поиграться, другое дело бизнес ).
>>2256650 >но потом Microsoft, сообразив на двоих Google, фактически убил запуск неподписанного кода для домохозяек. А по подробнее? мимо пишу морды только для своих нужд
>>2256702 Он видимо про то, что UWP приложения вымерли полностью, а для классических десктопных приложух нужна специальная подпись, иначе SmartScreen будет уведомления постоянно присылать, что мол небезопасное приложение запускается.
>>2256699 Тем не менее на голанг уже прилично вакансий у нас в РФ несколько лет как, тот же озон, авито и вайлберис уже перешли на него, в яндексе клауд начинают на го писать, в тинькоффе тоже. Да и хипстерские технологии предыдущих лет так и не умерли - руби все еще жив, не говоря уже о ноде или питоне.
>>2256725 Всегда нравилось вот эта ассоциация с компания. Ты знаешь вообще какой объем кода и какое число разработчиков пишет? Зачем вы их постоянно в пример приводите? Ты знал что некоторые компания пытаются пропиариться среди свежих языков, чтобы их лейбл получил лояльность, среди тесного сообщества. Или чтобы такие как ты разносили рекламу о них.
Сейчас раст, до этого го, еще раньше руби и нода. Ты программист, будь технически грамотнее, а не как блондинка вестись на каждый пшик в индустрии моды.
>>2256631 Попробуй выстави свое резюме (можешь даже анонимно, если боишься) и посмотри на предложения которые тебе придут. И вот потом уже делай выводы. Примечание: январь если что не показатель, а вот в феврале уже можешь так делать.
>>2256908 Так чел же хочет >сделать приложение под андроид >максимально быстро и просто и проще чем на котлине и в нативной среде вариантов нет. Кроссплатформы без ебли не бывает.
>>2256971 Лол, шизик >Кроссплатформы без ебли не бывает. >писать под каждую платформу - затратнее.
Хватит вилять попой, аки проститка, на лучше прочитай про свой ржавый язык http://rustmustdie.com/
Раст, оказался завязанный на стандартную либу говнищем (по-сути с рантаймом), где все потуги свелись к использованию умного указателя с подсчетом ссылок (в питоне тоже самое, только автоматически).
Вы только посмотрите на картинке, как две строчки компиляться в 2700 строк ассебмлера!!! https://goo.su/adnl
>>2257007 К чему ты это вообще высрал, сумашедший? Сначала съехал на «каждую платформу пилить долга» на вопрос про приложение конкретно для андроида, а теперь выдавил какую-то несвязанную хуйню про раст. Иди отнеси это в раст тред, если у тебя к ним предъявы.
>>2257027 >Тоже, как он не осилил ключи компиляции и ебащишь отладочные сборки вкачестве пруфов? Отладочные сборки в онлайн редакторы? Ну собери в релиз, опровергни, зачем пуки в воздух?
>Ссылаешь на студента Какая разница если он говорит правильную инфу? Раст по сути использует ГЦ, более того, без него написать ничего нельзя. Зачем вообще весь этот сюр с владением и прочем, если все свелось к подсчету ссылок у смарт-указателя?
Ты сам просто попробуй осознай, что все это тупо маркетинг вокруг фич, которых в реале не используют. В реальности просто используется совсем другой подход.
Если нужно сделать простое приложение, альтернатив WinForms до сих пор нет? Почему так нахуй? Может какой-нибудь фреймворк завезли? Реально, ничего не нужно, главное как можно проще
>>2256596 >Потому что у людей семьи, ипотеки, люди хотят стабильную и понятную работу, уверенность в завтрашнем дне. Так я же не про фриланс говорю, а про полноценный аутстафф или аутсорс. Хорошие деньги + уникальный опыт, какие риски?
>>2257218 Ты молодец, мы всем двачем тобой очень гордимся. У тебя явно талант к программированию, продолжай в том же духе. Мало кто смог также. Даже у какого-нибудь кармака при таких же вводных это заняло бы никак не меньше 8-12 часов.
>>2257360 Зирокост абстракции выглядят вот так. Ох уж эти зумеры, один высрал хуйню с жырным троллингом, а второй тупень на серьёзных щах с ней по всей борде носится.
>>2257342 >>2257407 >>2257412 Кто открыл загон с говнорастом, что они забыли в языке с ГЦ? Плюсовики погнали их ссаными тряпками они теперь в управляемые языки приползли? Какой-то гребанный сюр.
Тут оказалось, что фактически язык с ГЦ (кроме базового хелло-ворда), поэтому C# ему конкурент. Не может управляемый язык с подсчетом ссылок конкурировать с С++ где смарт-указатели опциональны.
>>2257417 Как-то слишком коротко получилось и норм?
var items = index.ToLower().Replace(" "," ").Split(' '); var unique_items = new HashSet<string>(items); string st = ""; foreach (string s in unique_items) st = st + " " + s;
>>2257462 Вообще нет, лишь бы быстро работало... Ну меня последняя строка немного смущает, склеивание строки по букофкам... Как тут говорят - чиорт побери...выглядит немного всрато
>>2257453 Да мы наблюдаем на дваче исторические разоблачение раста-самозванца. Надо бежать, роняя кал, писать линупсу торвальдусу, чтобы он это говно из ядра линупса поскорее удолил взад.
>>2257527 Если уж серьёзно к этому относится — то правильнее для такого сравнения в расте использовать полноценные строки, а не литералы, иначе это какой-то замер способности компилятора фолдить код с константами, а не сравнение реально генерируемого кода. И ещё в лямбде фильтра в плюсах ожидать string_view а не string, но результат не меняет, раст таки чуть лучше это фолдит.
Хотя как не крути, такое сравнение всё равно будет каким-то школьным бредом, чтобы манипулировать шизом и прочими, лол.
>>2257675 Как бы там не рисовались растеры, как бы не подгонялись тесты и как бы не ставили раст в противовес полноценного ООП языка, все равно на этом говне приходится кодить только через Rс и тому подобном. Чуда не произошло, никаких супер технологий не завезли, маркетинг опять победил.
>>2257804 Никак, это говно без задач. Нужно только если ты уже знаешь WPF. В остальных случаях — вкатывайся либо в WPF и пердоль легаси, либо сразу в MAUI.
У меня три года стажа, но впадаю в ступор на задачах из leetcode. Это лечится? Слышал дают задачи с этого сайта на собеседованиях, а я хочу сменить место работы.
>>2258248 Лечится так себе, на самом деле. Если ты задротил алгоритмы в школе, побеждал в олимпиадах и сейчас без проблем сможешь решить какую-нибудь задачу на два указателя. А если нет, то сможешь решить после того, как нарешал 3-4 подобных задачи. Но суть в том, что ты спустя пару месяцев забудешь напрочь как ты эту задачу решал. Ну вот из головы вылетит и все, и на собеседовании уже вряд ли сможешь повторить. Но тут еще такое дело, что если периодически повторять уже решенные задачи, то может и запомнишь решения и идеи основные и уже не так сильно облажаешься.
В rust локальные переменные по умолчанию неизменяемые. Чтобы получить изменяемую переменную, её надо отдельно поменить ключевым словом mut. В C# все локальные переменные изменяемые. Почему нельзя сделать локальные переменные только для чтения, помечая их readonly? Например, readonly int z = x + y; Хотя бы для структур почему так не сделали? С точки зрения компилятора, это совсем не сложно реализовать. При этом было бы удобно, сразу видеть, какие переменные могут далее меняться, а какие вычислены на месте и окончательно.
>>2258315 Если честно написано плохо. Дёрганно, не структурированно, лишняя информация. Нашёл другой сайт, может здесь лучше будет https://wpf-tutorial.com/
>>2259471 По разному, предполагаю. Где-то может быть специальный нюгет фид, который сдохнет после триала, зато ПОЛНОЦЕННУЮ ВЕРСИЮ дают потрогать, где-то обрубок функционала, а чтобы был не обрубок, введи код и прочее. Если разрабы допускают использование их либы не для коммерции, то там явно должно быть это обговоренно (что считается "некоммерцией", как пользоваться либой в бесплатном режиме, etc), иначе по умолчанию должен купить либу. Разбирайся конкретно с каждой либой, там везде свои способы навернуть говна.
Андройд тред мерт так что спрошу как обычно тута. Как и чем отловить запросы мобильных приложений? Какой эмулятор юзать? Реально ли будет подделать запросы? Хочу сделать смсБомбер. Понятно что сначало буду сайты добавлять, но хотелось бы на будущие знать стоит ли заморачиватся с моб приложениями?
>>2259849 >Ридонли = математика? Ебало завали. Тот реадонли который ты описал, кроме как в реализации каких-нибудь предметных алгоритмов (по сути решения матформул или численных методов) смысла нет использовать. В нормальном ООП-шном контексте такое либо нахуй не нужно, либо решается другими способами. >>2259849 > зачем тогда в твоём любимом языке const/in А ты сначала разберись как они работают, а потом вякай. const это просто способ заменять статические значения в компайл-тайме. А in нужен как один из механизмов обеспечения инкапсуляции.
Вопрос. В шарпе же нету модификаторов доступности которые бы давали только первым наследникам доступ к чему-то, но не давали наследникам наследников доступа к этому? или там можно как-то сделать такое переопределяя метод через new?
>>2259864 in - инкапсуляция? я про const& аргументы. Конст для замены? А это нахуя? для прироста производительности? Ридонли локальные в нормальных яп дают прирост. Есть ещё ридонли нелокальные, забыл. И ридонли не как не связано с алгоритмами и/или ооп, это просто гарантии, они в любом виде полезны. Но можно конечно защищать дизайн языка, потому что кругозор этим языком и ограничился.
>>2259898 чтобы спрятать посильней разумеется. но вообще мне недавно понадобилось расширить один абстрактный класс другим абстрактным классом и например часть методов у него из виртуальных стали абстрактными, а некоторые виртуальные методы и вовсе хотелось бы скрыть для наследуемых от второго класса так как нехуй туда лезть
>>2259929 1 Гарантии компилятору 2 Для защиты программиста от самого себя придумано дохуя вещей, особенно в с#. Примеры: гц, отсутствие множественного наследования (и ввод интерфейсов и абстрактных классов), типы, все внутри unsafe и т.д.
>>2258898 > Почему нельзя сделать локальные переменные только для чтения, помечая их readonly? Ну а что тебе это должно дать? Серьезно. Вот допустим код: readonly User user = new User();
Какое поведение ты ожидаешь в ООП? То что теперь нельзя сделать user = new User("Zalupa", "Petrov")? Или нельзя user.UserName = "Zalupa"? Допустим как в JS и эфшарпах - я не могу первое сделать. Что мне как программисту кодящему в парадигме ООП это дает-то? Я, обычно, использую локальные переменные для того чтобы 1. Обеспечить потокобезопасность, скопировав ссылку на нужную мне хуйню; 2. Улучшить читаемость, чтобы не писать user.Role.Privileges в коде, а просто писать privileges. А вся остальная хуета берется из полей класса в котором я все реализую, а эти поля как раз могут быть либо readonly, либо мутабельными, если это требуется. Так зачем мне для локальных переменных это вот? Я действительно не совсем понимаю. Тем более, что во всякой хитрой бизнес логике(а это основная логика, которую приходится на шарпе писать), у тебя в любом случае большая часть переменных будет мутабельной.
>>2259864 >Тот реадонли который ты описал, кроме как в реализации каких-нибудь предметных алгоритмов (по сути решения матформул или численных методов) смысла нет использовать.
>>2260000 Няша. Окей. Вот у тебя есть класс: 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. Я - человек простой, книг не читал, в вузе не учился, и вообще на работу попал по знакомству, но я доверяю тому, что пишут майкрософт в комментариях к своему же коду. Конечно, может быть они - врут и троллят, чтобы такие хуи как я, изучая исходники - попадали в ловушку, но хуй знает.
>>2259993 Для классов иммутабельность не работает. Потому что не возможно гарантировать, что вызов метода чего-нибудь не поменяет. Поэтому даже нет классов readonly class, а readonly struct есть. Можно было бы дать возможность помечать в классах методы как readonly, что даст возможность конпилятору делать проверки иммутабельности, но тогда придётся и всю стандартную либу переписать. Для структур же это уже работает.
Есть ли какая-то возможность добавить в код C# возможность использовать для возведения в степень отдельный оператор, например, как в петухоне, две звёздочки. Может надстройка для студии какая? Хочется писать нормальный код с формулами, легко читаемый людьми с физ-мат. подготовкой, а не макаками.
Потокобезопасность — это обеспечение целостности данных, а не создание ссылки на объект чтобы он не дропнулся нахуй. Как твоя ссылка в стеке потока не даст пойти и сделать кашу из содержимого SomeRefProp — это, блять, загадка.
То, что ты высрал — это костыль by design. Сколько макак не учи — всё равно будут высирать шаренный стейт.
Короче, перестань срать терминами которых не понимаешь а лучше пиздуй делать домашку на зимние, завтра в школу.
>>2260175 Нету такой возможности. Вообще, если честно, я бы вообще убрал нафиг все операторы которые к математике относятся. Даже булевые операторы. Потому что хуйня это все. Держать в голове порядок действий - это слишком сложно для программиста. С вызовом методов - все просто: ПОСЛЕДОВАТЕЛЬНО. Да и читается легче:
int i = 5; i = i+++++i;
против int i = 5; i = i.Add(i.PostIncrement(1), i.PreIncrement(1));
>>2260208 Дядя. Меня почему-то учили, что потокобезопасность - когда поведение кода программы не зависит от порядка вызова потоками. Все. > Как твоя ссылка в стеке потока не даст пойти и сделать кашу из содержимого 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 из третьего потока превратить в кашу - это уже дизайном класса будет обусловлено, но это уже к тем двум сценариям не относится.
>>2260277 >Дядя. Меня почему-то учили, что потокобезопасность - когда поведение кода программы не зависит от порядка вызова потоками. Все. Ого, а в чём выражается результат этого "поведения программы"? В данных на выходе. Поздравляю, ты сказал то же самое в 4 раза длиннее.
>Майки пользуют. Чем я хуже? Да ничем, indus-driven-design самое то для таких овощей, как ты.
>мутабельный стейт в многопоточном окружении >ну я магу ссылку сахранить пук срень Долбоёб? Долбоёб. Дебилам лишь бы насрать где-нибудь в коде, даже не хочет ведь включать мозг.
Пиздуй делать уроки, хватит читать что индусы высрали, на неокрепший моск слишком сильно давит.
>>2260437 Парсинг для рынка СНГ. Стоит в таблице градусы цельсия, С. И попробуй угадай, в какой раскладке её напечатали, в русской, украинской или латиницей.
>>2260447 Надо либо запрещать такое либо ввести правило и писать автозамену. Так как тети сраки часто вместо "Си" пишут русскую "эС", было сделано предупреждение об этом (алгоритм прост, если в слове больше кириллицы и встречается латинская или другая буква - это вероятно ошибка, предупредить).
А вот на веб сайте вообще запрещаем в никах мешать ру с не ру. Так же я предложил сделать предупреждение в словах, а то поисковики не поймут, но клиент оказался беден.
>>2260175 >>2260211 В Agda можно миксфиксные (1 арг, 2, 3, 4...) операторы с любыми названиями: 0#, _≤_, ∣_∣, if_then_else_ (и например ∃[ x ] P(x), но это не совсем оператор). В Lean есть нотации и юникод, мб можно тоже такого добиться. В Coq вроде нет юникода, но есть нотации.
>>2260465 Чел, айти - это не только веб-параша. В моём случае например, приходится парсить готовые отчёты в ворде. Отчёт давно сдан, автор может уже на пенсии, некому запрещать, некого предупреждать. Можно только пометить, что требуется помощь человека, что должно быть исключительным случаем, иначе за что нам деньги платить тогда?
>>2260644 Какие же программисты пошли тупые. В посте приводится два примера, второй явно оговариваться что из веб, подразумевая что первый пример из чего-то другого.
>>2260731 Это известный список TR-39. Но человеку который хочет сравнивать, а не обнаруживать подмену лучше об этом не говорить.
На самом деле в юникоде столько говна, что имеет смысл по диапазонам вычленять все это говно. Но вопрос в другом, что считать этим самым говном? Поэтому такой общей либы быть не может, а написать свой, скажем для русский и английских символов - дело 5 минут.
>>2261135 Одно и тоже. Асинхронное программирование.Зеленные потоки - термин популяризированный ныне благодаря жаба конференций, которые гордятся тем, что когда они у них были
Использовать полновесную БД для хранения настроек приложения норм или не оч идея? Просто с этим appsettings.json майки так бегают, что создается впечатление, будто это то как надо делать. А мне чет кажется, что удобнее было бы вынести настройки в БД, можно даже в том же жсоне хранить их, если так уж хочется. При этом можно еще и версинификацию настроек иметь, типа обновилось АПИ, добавились новые настройки, а у нас несколько версий одного сервиса запущены и удобно можно из одного места все получить. Чи я не прав? Поясните, хуевая или не совсем хуевая практика?
>>2261545 У меня так было, база на тестовой машине могла на неделю отличаться от прода, это было не очень удобно, я хотел переписать в файл, чтобы еще версионировалось.
Как мне развиваться как программисту, если в команде нет ни одного синьора? Если в книгах и курсах показывают простенькие примеры, которые далеки от реальных рабочих проектов?
>>2261167 Нет. Async await это просто удобный способ работы с promise/future и не более.
Зеленые потоки в Го (горутины) - это как раз >софтовые потоки, наверн именно реализованные в юзер моде Горутины тем и отличаются, что ими управляет гошный рантайм и их можно создавать десятки и сотни тысяч, если не миллионы, в отличие от системных.
>>2261167 >термин популяризированный ныне благодаря жаба конференций, которые гордятся тем, что когда они у них были
Они были во времена 90-х годов, потом от них отказались в пользу системных. Потом после бума гоуленга и ноды они решили-таки запилить Loom. В дотнете тоже были попытки запилить зеленые потоки во времена .NET 1.x и .NET 2.x, но они тоже успехом не увенчались, вместо этого позже добавили удобный способ работать с future/promise.
Что быстрее проверка на налл ссылочного типа или сравнение на равенство интежеров? string1 == null vs myInt = 666 А для наллабл<Т> !nullable1.HasValue vs nullable1 == null vs myint == -13 Вопрос чисто теоретический.
А есть те кто вкатился в шарф с нуля и сам с какого нибудь алкозавода? А то смотрю на ютубе успешных успехов и там каждый первый вошедший в айти с нуля "ну я там в 12 лет на паскале писал, потом сайт пхп запили отучился на сисадмина и потом решил а не пойти ли мне в айти и за пол года научился пиздеть выучил ЯП и пошел работать" А есть ли истории от подпивасных петровичей? Или если с детства 10 лет не задротил айти шансов 0?
>>2262006 Нет, они их как раз осилили, что в джаве, что в дотнете, но очевидных преимуществ зеленых тредов перед системными тогда не видели, а задачи в основном предполагали не гружение джейсонов на бекенде, а cpu-bound вычисления на десктопе. Сейчас, конечно, всем достаточно одного потока и евент лупа, как в ноде, но это сейчас, в те времена люди еще использовали тяжелую многопоточку повсеместно.
>>2261911 >термин популяризированный ныне благодаря жаба конференций Так и знал что найдется баран, который начнет вспоминать историю, игнорируя поправку "популяризированный ныне". Вот настолько программисты тупые, что видят слово-триггер начинают печатать одну и туже пасту, снова и снова, как дрессированная макака.
>>2261911 >Нет. Async await это просто удобный способ работы с promise/future и не более. Жопоскрипщик пожаловал. А promise/future это блин не асинхронное программирование, да?
>Горутины тем и отличаются Это просто термин маркетологов, от древнего слово корутины. Работает все так же, все теже абстрактные функции, только дергает шедулер. От чего го так тормозит, как-будто и не асинхронный вовсе.
Квази потоки (зеленные) софтины - это и есть асинхронное программирование, без разницы как там они сделаны. Отказались в свое время (в жабе тоже), ибо говно без задач в то время, а накладывает определенные условия на программиста.
>>2261730 читай код чужих проектов. особенно те которые low allocation. возьми хотя бы асп.нет коре и изучай код. и тому подобные Microsft.extensions.* А также реализацию десериализаторов и асинк примитивов
Ну и да. Термин сеньер - это игрушка дьявола. Во многих конторах его за выслугу лет просто навешивают. По факту, для рынка в вакууме - сеньер это РЕШАЛА, который может и роутер настроить, и архитектуру масштабируемую в соло построить, и код пишет как в мемах про хацкеров, и за ассемблеры разные пояснит(и даже напишет свой загрузчик, если придется), и нат пробьет, и CI/CD сделает, и нубов научит, и с клиентами попиздит. Но скажи средниму мидлу, что чтобы стать сеньером - ему нужно быть вот таким вот челом, начнется вонь, про то что с хуя, я ж [выбери область]-программист, делаю хуйню монотонную уже 5+ лет, дайте мне лычку и ЗП побольше. А вот. Сравни как раз дедов, которые на том самом: ИЗИ ВКАТИТСЯ БЫЛА, БРАЛИ ВСЕХ ПОДРЯД. Для примера с ютуба - Соер. Хуи, что знают все подряд и продолжают учиться, будучи дедами, а в свободное время для дополненной реальности проекты пилят, да ведут блоги, семинары и вообще. Ведь такие в массе - успели и сисадминами побыть, и с кучей фирм разного размера поработать, и сайтики делали, самописные фреймворки, библиотеки, паять умели, и принтер заправлять, ну ты понял короче. Короче. Если тебе в конторе сеньером - ПРОЯВЛЯЙ ЛОЯЛЬНОСТЬ(не факт правда, что после смены пары менеджеров про твою лояльность не забудут и тебя не пошлют лесом). Если хочешь быть НАСТОЯЩИМ ТРЕЙД МАРК СЕНЬЕРОМ - изучай все до чего дотягиваются руки, пиши все свободное время, читай статьи, ездий на конференции и постоянно повышай планку. Только второй тип - это про тебя прет от работы или ты ясно видишь, что сможешь применять эти знания чтобы улучшить положение. Сейчас, к счастью, есть много наглядных примеров, которые показывают, что эти все знания хорошо стоят, даже какой-нибудь кобол, а потому попроще.
Читаю про синтаксис шарпа, имея бэграунд ООП хренова десятка лет, просто офигиваю как он продуманно сделан. Причем языку то немало лет. Свойства - без какой либо сокрытой магии, какие и должны быть. Явные виртуальные методы и явный оверрайд (и sealed) Скрытие (перекрытие) свойств/методов.
Люди явно делали язык с душой. Вот гляжу сейчас на кокотлин, как они надругались над конструкторами и понимаю, что люди просто местами тяп-ляп налепили.
>>2262496 пишу на обоих языках, причем на шарпе с самого его рождения И год на котлине. И именно лаконичный синтаксис котлина очень сильно накидал камней в огород моего любимого шарпа
Синтаксис - сильная сторона котлина (ну кроме некоторых WTF, но и в шарпе их хватает)
>>2262496 Про свойства - без магии. В котлине так наговнили с дизайном что нельзя сделать публичный геттер и приватный сеттер.
Например (картинка) если хотите сделать публичным var.Length, но для сеттера нужна какая-то еще проверка (например, пусть на отрицательное значение), то у вас через свойство такое не выйдет в котлине.
На конференциях же говорили (считая за дурочка) что таких кейсов не бывает и вам это не надо (а не то что не смогли).
>>2262498 Да, там есть более приятные визуальные решения, те же лямбды, но опять же они это слизали вдохновились с груви.
А вот добавив функции в язык, они даже не подумали, что придется импортить все через звездочку, а "звезда это пизд...", каждый джавист знает (и питухонщик). ЯП без души как есть, просто навдохновлялись синтаксисом и все.
Те же прозрачные лямбды тоже создали ряд проблем, теперь часто видно лесенку этих лямб и чтобы понять что происходит, приходится читать все эти кишки, когда как раньше люди хотя бы прятали кишки в методы и называли как-то осмысленно, тем самым давая понять что там происходит и надо ли вообще тебе туда лезть.
>>2262508 >придется импортить все через звездочку никто насильно не заставляет же. И при этом удобно читать исходники без IDE.
> теперь часто видно лесенку этих лямб что делает возможным такую шнягу как jetpack compose. на шарпе такое было бы куда менее выразительным
>>2262509 если не сравнивая с котлином, а исклчюительно про синтаксис...навскидку - необходимость писать new - именованный конструктор - ConfigureAwait(false) - = null! - шаблон Main в дотнет 6 просто ахтунг - нет break level (зато есть goto хы хы) - [^1] понятно, но уродливо же - Func<,,,> сигнатура - is var - неймспейсы. только вот позволили не ставить {} - МНОГОСЛОВНО ВСЕ пипец. Не так как в жава, но все равно ... я спать
>>2262487 Много как. Можешь запилить шину сообщений в которую гуй будет писать что-то, а серсис из этой шины - читать. Можешь в сервисе сокет открыть и реализовать дуплексную связь(удачи, кек, майки-то поленились сделать что-то нормальное, а тот велосипед что я делал - я не дам). Можешь по ресту как предложили, еще и сверху вебсокеты прикрутить, чтобы если сервис упал - в гуе сразу это было видно. Можешь с помощью файликов реализовать, если это на одной пеке работает или есть общая сетевая папка. Короче. Вариантов куча.
>>2262533 >никто насильно не заставляет же. И при этом удобно читать исходники без IDE. Как раз без IDE импорты по звезде вообще не читаемы (видимо на это и расчет, как с корутинами вышло).
>>2262017 Зависит от конторы. Наши взяли оноклассника сына директора по блату, абсолютный ноль. Спустя два года научился писать простенькие круды, копипастом.
>>2262163 Так зеленые потоки стали популярны не благодаря жабе ведь. Когда они решили пилить свой лум 4 года назад так до сих пор и допилили, лол, на лютом хайпе был модный молодежный гоуленг с его горутинами. Из гоуленга все и пошло тащем-то.
>>2262556 >Единственное это неймспейсы, остальное притянуто за уши. Ну так все можно назвать вкусовщиной, ведь мы говорим всего лишь про синтаксис, а к нему можно привыкнуть. На жаве вон тоже же пишут. И даже на пхп - и не жалуются.
>Вообще говорит о тебе что ты пришел со скриптов. Ну да. Я помнится писал на скриптовых языках, когда шарп еще физически не существовал. И каждый раз когда я копипастил конструктор в другой класс я чертыхался на необходимость править имя. И не видел и не вижу НИ ОДНОЙ причины чем именованный конструктор лучше спец имени
>Это для обучение и фаст-консольного письма, это же опционально Да хер там плавал. Создается в новой студии по дефолту и приходится потом руками создавать старый вариант. Реально напрягает. И не меня одного - на гитхабе даже issue на этот идиотизм есть
>>2262558 >Как раз без IDE импорты по звезде вообще не читаем верно, но импорты по звезде создаются вручную Я вот пишу в Android Studio и он мне подсказывает иморт и звезды сам никогда не ставит
>>2262703 А зачем там индексы? Получение элемента по индексу самому легко написать, просто эта операция будет требовать O(N) по времени, в то время как в массивах O(1) всего лишь.
>>2262788 Связанный список это базовая структура. Индексы ведь тоже где то хранить нужно. А это потеря памяти на ровном месте. А если не хранить отдельно индексы, а хранить элементы связанного списка тупо в массиве, то получим все неудобства массива - необходимость хранить все вместе, изменение размера...
Никто не запрещает делать гибридную структуру где есть доступ обоих видов
>>2262289 >с хуя, я ж [выбери область]-программист Всё так и есть. Смотрю сеньйорские вакансии 5+ лет и охуеваю - в среднем дают по зарплате всего лишь больше примерно на 50-70% от моей, но знать требуют в несколько раз больше.
Тут уже думать надо, может лучше свой SaaS маленький делать, а в конторе миддлом сидеть.
>>2262695 > Создается в новой студии по дефолту Если у тебя так горит - сделал бы давно шаблон свой. Делается оно за 2 минуты. Ну и да. ИРЛ ты не создаешь по 10 проектов в день. Обычно ты над одним пердишь год-два, а потому то что по дефолту там создалось - до пизды.
>>2262695 > ведь мы говорим всего лишь про синтаксис Речь была про WTF. А не вкусовщину или синдром утенка. Вот в котлине очень много WTF, там в целом как-будто половину смогли, а половину как-будто наспех сделали. Хотя решения с груви и скалы там удобные есть. Отказ от точки запятой удобен, но местами очень сомнителен. Двоеточие для типа, тоже такое себе. Тупость с иммутабельностью let вообще смешно, когда 99% работаем с объектами, на которых это не работает распростроняется.
>я чертыхался на необходимость править имя Я вижу ты не совсем часто кодишь, как бы это уже давно ипостась IDE. Я согласен что спец слово лучше, но это просто историческое решение.
>Создается в новой студии по дефолту Создал бы пустой, тоже пришлось руками создавать классы. Смешно, но дефолтный класс и раньше всегда приходилось руками править. В общем, сложна жизнь программиста. На самом деле очень удобно стало создавать из консоли подобие скриптов, так как не хотелось бы csproj ручками каждый раз писать. dotnet new console dotnet run
>верно, но импорты по звезде создаются вручную Насколько помню, последний раз как раз идея пыталась портянку из списка импортов свести к звезде и надо было отключать в настройках это. Хотя могу наврать, не помню уже, но помню что нередко на звезду в гитхабе натыкался.
>>2263252 создаю. папка тест просто засрана проектами для "а ну попробую эту штуку как она работает". И код там посложнее хелловорлд на порядок, но это все равно прототип какой то мелочи.
>>2263253 >Речь была про 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 выдаст полный импорт и при оптимизации звезду тоже не нарисует.
>>2261545 >Использовать полновесную БД для хранения настроек приложения норм или не оч идея? Зачем полновесную? скулайт прикрути, тебе для любых настроек хватит. А держать ее можешь хоть в памяти, хоть на диске.
>>2263388 Ну, я исходя из того, что полновесная и так нужна приложению, а так, в ней одна табличка с настройками добавилсь и при старте проинициализировали все дело.
>>2262788 Если тебе от связанного списка нужно O(1) на получение элемента, то ты жестко проебался еще на этапе проектирования. Возвращайся к началу и переделывай.
>>2263400 Ну это исходя из того зачем и как у тебя используется БД в приложении. Если чисто для технических нужд и внутренней логики, то в принципе еще одна табличка погоды не сделает. Если же у тебя там данные и логика бизнеса хранятся, то тут уже могут возникать проблемы. Начиная от того, что тебе постоянно придется учитывать эту таблицу, чтобы она не смешивалась с бизнесом (например экспорт/импорт, права доступа, хитрые индексации и т.д.). Плюс если потом будешь БД на другую менять можешь проблем огрести. А на скулайте по сути один раз сделать и забыть. И работать будет везде, независимо от среды.
Даже вот взять каст. if (obj is User user)... и просто котлинувскую версию, где есть тоже самое, но магией (автоматически) каститься все в переменную obj. Кажется настолько простая вещь в дизайне, но какое сильное решение. Они могли бы тупо скопировать версию котлина и забить, но челики посидели и подумали и сделали явное действие, сведя на нет магию, где переменная не затеняется. Видно что над фичами потеют и стараются все предвидеть.
Да, язык не молодой и много старых фич еще нулевых и девяностых, но в то же время все еще гибко и круто выглядит. А не тяп ляп, а на конференции мы потом посрем в уши (фанбои съели, нормальных ккодеров отталкнули).
>>2263455 Чел, если тебе так нрввится котлин - на здоровье же. Я вот в свое время почитал про него, взялся проект писать мелкий для своих нужд. Плевался постоянно, потому что все эти охуительные вещи - оказались нихуя не удобны во многих сулчаях, еще и всюду торчит хуйня из старой жавы. Блядь, почему ебучие майки могут для одного дотнета нормально поддержку всех языков: хош паскаль, хош - f#, хош - VB, все шо хош делай, а котлин, который под патранажем гугла делается - выглядит как тайпскрипт над жаваскриптом ебучий, т.е. не полноценный язык, а хуйня какая-то. Короче. Я не знаю, чего ты горишь. Если тебе не нравится шарп, но хочется дотнета - можешь запилить поддержку котлина, делается это не так уж сложно, за месяц - справишься. А если тебе и дотнет не нравится, то в чем смысл всей этой хуйни?
>>2263488 с чего ты взял что мне не нравится шарп? шарп мой основной и любимый язык. Я его использую с его рождения и до сих пор причем на острие (благо работа позволяет)
Я всего лишь вступился за котлин, когда его стали обсирать даже не используя его толком.
На котлине код лаконичнее и выразительнее - просто факт.
>>2263488 Ничего, что я про конструкцию из дотнета и за дотнет говорю? Вы биороботы, вы даже не вникаете текст, а просто как роботы треггиритесь на раздражитель.
Сука, какой же вижуалстудио кал. Мало того что это говно медленное, весит минимум 20гб, имеет отвратительный интерфейс и шлёт всю порнуху с твоего компа лично Гейцу, так оно еще рандомно ломается. Просто на ровном сука месте. За три месяца мне пришлось эту парашу 4 раза переустанавливать. То у нее подсветка синтаксиса сломается, то она стандартную библиотеку перестаёт видеть, то метаданные не видит, то просто нахуй отказывается что-либо компилировать. Сегодня сломался установщик плагинов. Ах да, установщик плагинов отдельной программой. И необходимость перезапускать всю иде чтобы установить\обновить плагины. Ебаные мелкомягкие индусы горите в аду нахуй!
>>2263514 >На котлине код лаконичнее и выразительнее - просто факт. Звездеж конфиренц.попугая, та же сама жаба ничего выразительного. Может на мобилках там модно и молодежно, но на бэкенде та же жаба, да еще с всплывающими вечно нюансами "100%" совместимости.
>>2263638 >та же сама жаба ничего выразительного >Может на мобилках там модно и молодежно, но на бэкенде та же жаба я не пишу бэкенды. с жавой дел не имею, ибо не люблю, да и не знаю ее. Для бэкенда я шарп возьму
>companion object - для меня это было WTF изначально. И я такой бегал и ржал как шарпист "смотрите как они дико статики обозвали". Но потом разобрался в семантике и устыдился
>mutableListOf а такое наоборот лучше чем new List<string> {} выразительнее
>>2263639 >hashMapOf("a" to "x", "b" to "y", "c" to "zz") а вот это а to b ну да бред один из WTF >println("${'$'}") простое экранирование через \ работает
>>2263778 >семантике и устыдился Даже глава проекта признал что наговнили и теперь это еще мешает.
>а такое наоборот лучше чем new List<string> {} Не, куда лучше realEnterpriseMutableListBuilderOf()
>простое экранирование через \ работает Хм, и правда пофиксили. Это очень забавно выглядело раньше, как-будто не учли этот момент и показали хак. То есть, в реале никто там в проде этот котлин толком и не тестил вообще
>>2263830 >Даже глава проекта признал что наговнили и теперь это еще мешает. Где признался? что наговнили? ну понятно что наговнили они во многом, но не тут.
Тут просто другая семантика, но в итоге она позволяет реализовывать статикой интерфейсы и делать методы расширения для статики, чего подобного в шарпе увы нет и если хочется расширить статический класс, то хрен там.
я кстати не знал что можно так, но когда увидел как это делается в недрах jetpack так сразу одухотворился полезностью онного
>Не, куда лучше realEnterpriseMutableListBuilderOf() не. лучше mutableListOf не нужно утрировать.
>>2247364 >>2247358 >>2247357 (OP) Хах, спасибо насчет английского. Сейчас учу шарп по видео курсам Романа Труфанова, в данный момент учу web api asp. Net core 5. Немного касаюсь фронтенда. Надеюсь, стану прогером и полюблю кодинг
>>2264365 >и если хочется расширить статический класс, то хрен там. Безумие не знает границ. Поля/методы статического класса, это форма представление этого самого класса и больше никого. Наследование по статике это уже каша для предметной области ООП, хотя в динамик языках я такое безумие видел. В этом случае они правильно сделали, что не назвали это статикой.
>наговнили они во многом Речь про компаньоны я еще за тебя за нитью разговора должен следить?
>не нужно утрировать. Само по себе то, что для динамического (по размерам) списка, который мы берем вместо статического массива, есть вариант неизменяемости, вот это реально утрирование абсурда. То есть, сам по себе списки были созданы, как некая наполняемая структура неизвестного размера, в противовес прибитого гвоздями массива. Конечно есть удобные технические моменты когда удобно что список заморожен, но это скорее исключение, а не дефолтная задумка конструкции списка
стоит ли вкатываться в сишарп? или попробовать другой стэк (не хочу фронт)? насколько в сишарп толерантное коммьюнити? в какие вообще компании можно устроиться? не погонят ли с работы, когда условно начну приходить в чулочках и менять паспорт?
какие задачи на сишарпе решаете у себя на работе? какой выбор направлений есть, десктоп, бэкенд, etc?
Господа, вот я наконец освоил, так сказать, мечту, вкатился в it. Меня взяли в контору на постоянку на сорт оф фуллстак мидла (Шарп, sql, js, html). Начальство ценит, коллеги уважают. С задачами справляюсь, а с чем не справляюсь - гуглю. Но и вечно в этой конторе находится не буду, зп не космическая, перспективы туманные. Нужна что бы получить заветные год-два стажа. Свободное время есть, хотелось бы и дальше развиваться, но что то я никак не решу, в какую сторону. 1. Глубже погружаться в шарп, паттерны, в алгоритмы, всякие деревья и т.д. 2. Сопутствующие технологии. JS фреймворки (vue, angular), сетевое администрирование, освоить линукс и т.д. 3. Начать писать свой пет проект для портфолио. До этого делал, но сейчас понимаю что он ужасен, надо с новыми знаниями. 4. Освоить второй язык. Варианты - Java для мобилок, Питон потому что модно, руби, потому что есть знакомый рубист, который рубит просто горы зелени. 5. Податься во фриланс параллельно, благо время есть. Правда я плохо представляю что можно делать на шарпе для фриланса. 6. Ваш вариант? Что б вы выбрали?
>>2264609 >Безумие не знает границ. Не читал(использовал), но осуждаю (с) >Поля/методы статического класса, это форма представление этого самого класса и больше никого И что? Поля методы экземпляра тоже его, но вот существуют методы расширения в тот же шарпе, а потом еще и в интерфейсы даже напихали дефолтные реализации. Потому что это удобно не заводить дополнительные классы только потому что "не хватает метода который семантически нужен именно тут" >Наследование по статике это уже каша для предметной области ООП Бред. Ничем наследование по статике не грозит, кроме удобства. Расширение по статике несет столько же вреда, сколько методы расширения для экземпляров или методы в интерфейсах Ты все равно не сможешь эту статику никуда передать вместо экземпляра. А не заводить новый класс ClassEx приятно
>Речь про компаньоны и я о них. это просто немного другая семантика чем привычная статика в шарпе, и по факту более гибкая. Я видел пользу от этого. Пруфы вреда принес бы кто.
>Само по себе то, что для динамического (по размерам) списка, который мы берем вместо статического массива, есть вариант неизменяемости, вот это реально утрирование абсурда Вообще не понял о чем ты, но использование по дефолту мутабельных объектов (авось пронесет) это зло. В котлине правильно сделано, что есть жесткое разделение на мутабельные и иммутабельные структуры, а не как у майков, где даже IReadOnlyList криво приколочен (причины я знаю, но это все равно криво) и отдельно уже потом придумали Immutable также var/val концепция правильнее чем просто var
В шарпе вон даже контрактное программирование не взлетело Какое то отношение "да все будет норм".
>>2247357 (OP) Здравствуйте. Возникла, у меня, следующая проблема. Дело в том, что в Visual Studio у меня, почему то, при создания проекта нету возможности создания консольного приложения. Установил уже какие только можно компонентыпик 2, но возможность создания консольного приложения так и не появляется. Пытался решить проблему через гугл, но ничего не вышло. Как можно решить данную проблему?
>>2264851 Хорошая привычна - не ставить локализацию на студию, чтобы вот так не пришлось потом гадать что гуглить Не нужно вбивать "консоль", посмотри там же выпадающий список что там за варианты и как они написаны
https://krausest.github.io/js-framework-benchmark/current.html Выбирал на чём бы потеребонькать сделать морду для пет проекта, вспомнил что там майки выпустили, решил посмотреть... и хрюкнул кекнул в гiлос. Хуйперформанс вротенд технология насасываяе у жопаскрипта. Индусы там походу уже всех вытеснили.
>>2265071 Ох уж это сравниватели 1 wasm by design работает медленнее с DOM 2 нужно учитывать еще и работу программиста. Одно дело когда задал шаблон а-ля WPF DataTemplate и забыл, а другое когда ручками кодишь изменение этого шаблона
но зачем такие тонкости, ведь дрочим на цифирь (сам я блазор не использую, просто глянул код бенчей и кто там с кем соревнуется)
>>2265114 >1 wasm by design работает медленнее с DOM Пик 1. Даже пидораст со сборкой мусора несмотря на все "проблемы" работает с домом на уровне ванильного жса.
>2 нужно учитывать еще и работу программиста. Пик 2. Даже реакт-лайк залупа на нём же, написанная полутора трапами поверх попенсорсной хуиты от полутора энтузиастов, ебёт блейзор, в который ввалили бабла больше чем вся твоя семья заработала за твою жизнь. Это пиздец билли, индусы всё проебали.
Ладно бы только проёб в скорости работы с домом от 2 до 20 раз, так оно ещё весит в 15 раз больше и даже памяти жрёт больше. Хуй знает на что я надеялся, опять жабу в бровзер принесли.
>>2265148 >>2265159 Допилят, говорят еще МС в хром котрибутить стал, поэтому по-любому допилят. очевидно что молодые болячки, редко при запуске оптимизируют сразу, сначала важны фичи. В общем, как-то один анон ванговал про будущее и появление движков на вебассембле, вероятно blazor будет одним из первопроходцем. Собственное реакто-макакам уже припекает.
Сука, как я должен использовать вашу Авалонию если нормального XAML дизайнера нет на Linux, кроме платного ЖидБрейнс, который я вообще никогда не юзал? Получается мне легче UI на React/TS делать.
>>2265352 Вряд ли что-то к лучшему сильно изменится. Изначально webassembly предполагался не как замена js и его фреймворкам, а как способ запускать использовать компилируемые языки вроде C/C++/Rust в браузере для тяжелой графики. Это не про сайты и не про формочки, а про какие-нибудь raytracer'ы и физические движки, шобы можно было игры запускать. Тащить managed языки в вебасм смысла нет никакого. Даже тот же Go, который компилируется в бинарник и у которого довольно легковесный рантайм, считается медленным для вебасма и его там никто не использует, хотя такая возможность есть. Затянуть огромный и тяжелый дотнет в webasm, да еще и чтобы он быстро работал, это что-то на уровне фантастики.
В MS каким-то хуем решили, что на вебасме можно будет крутить сайты-однострачничники (ведь именно для этого создан blazor). Идея конечно полная хуйня, сайты-одностраничники на дотнете никто в принципе не делает, а большие проекты на блазоре точно делать никто в здравом уме не станет. В итоге получается этакая технология Silverlight v2, которая опять окажется никому не нужна и отомрет через несколько лет.
>>2265604 Написано же что через поддержку комьюнити. Он же линупсоид, вот пускай пишет. Пинус-десктоп очень важная платформа, как не читаешь форум все кросс-пинус спрашивают, вот наверное за столько лет уже мильён окошек кроссплатформенных понаписали, да? Мудачье, даже для своей платформы не могут нормальные морды к настройкам сделать, за то в каждом треде на каждом форме с пеной у рта кричат про необходимость кроссплатформы для своих 2% пользователей
>>2265629 Жаль, что MS так и не выпустит нормальные UI для десктопа под линукс. Вообще, было бы неплохо, если MS сама запилила свое графическое окружение под линукс, и портировала хотя бы винформы туда. Был бы лютый вин, но на это нужно очень много денег, потому что десктопы на линухе сейчас в ужасном состоянии до сих пор пребывают.
А так в российских реалиях кроссплатформенный пинус десктоп был бы популярен. Всякие оборонные предприятия сейчас вынуждены неудобный Qt использовать по большей части.
>>2265603 Какая же каша в голове. То есть, спрос на реакты, ангуляры показывает, что есть огромный спрос на веб-приложения (которые по сути являются костылем на js). А полноценное нативное веб-приложения (на васме) у него не востребовано.
Ты понимаешь насколько это абсурд и какое у тебя туннельное виденье технологий?
>>2265646 На реакте и ангуляре написано очень много всего. Буквально каждый фронтенд сегодня - это либо реакт, либо ангуляр/vue. И работает все с неплохой скоростью. Почему это костыль я не знаю, так наверняка думаешь только ты и другие фанбои MS. Пересаживаться с js на webasm никто не планирует, это две разные технологии под разные задачи.
>>2265646 >А полноценное нативное веб-приложения (на васме) у него не востребовано Почему оно должно быть востребовано? Веб-приложения как правило включают в себя не только фронтенд, а еще и бекенд, где есть и БД, и интеграции с другими сервисами, и бизнес-логика и еще много всего. Поместить это все один проект и заставить работать на клиенте у пользователя слабо представляется возможным, поэтому MS продвигает blazor как технологию для разработки простых одностраничных сайтов. Другой вопрос, а нахуя нужен дотнет для этого, когда есть другие инструменты проверенные временем, которые к тому же показывают большую производительность, лол, хотя на нее в таких проектах похуй всем максимально. И да, дотнет в васме не особо-то и нативный, в отличие от плюсов или раста. С тем же успехом можно поинтересоваться, почему не взлетели и уже давно мертвы Silverlight/Adobe Flash/java апплеты. Почему webasm до сих пор очень мало кто использует, а фронтендеры на жопаскрипте нужны всем и каждому?
>>2265600 >когда все на MAUI переедут. мауи это хамарин расширенный на декстоп. Со всеми его заморочками в виде трансляции гуи на каждую платформу - то есть урезанный функционал по сравнению с тем же WPF и необходимость наличия девайса с макосью. Да еще с комьюнити поддержкой на линуксах.
>>2265680 Ты туп и ппц как графоманишь сотрясая воздух.
> Silverlight/Adobe Flash/java апплеты. Флэш убили, он взлетел так, что 10 лет его убивали. Все остальное не зашло потому что требовались плагины (флеш же по дефолту шел, люди могли даже браузер поменять если флеша не было). Это настолько очевидно что просто даже писать лен.
HTML-документ херова пригоден под апплиухи, поэтому твой реакт и костыль. Васму как бы и хтмл не нужен будет, именно поэтому такая тормознутая поддержка DOM (но она будет, исторически).
Почему так медленно развивается - потому что нет прямой выгоды с написания движков. Только такие гиганты как МС могут себе позволить быть первопроходцами. Шарп очень гибкий и у него большой потенциал в оптимизации, игры тому доказательство, а твои веб морды это совсем не рокет-сайнс.
>>2265710 >HTML-документ херова пригоден под апплиухи, поэтому твой реакт и костыль
Почему плохо пригоден? Ты же понимаешь, что большая часть приложух - это вбил данные в форму и получил результат в виде текста или таблички. HTML в этом плане вполне удобный инструмент. Тем более, что blazor без HTML не работает. Но даже если не HTML, то что? Все через canvas рисовать?
>>2265710 >Шарп очень гибкий и у него большой потенциал в оптимизации, игры тому доказательство, а твои веб морды это совсем не рокет-сайнс А причем тут игры? Я конкретно про blazor говорю, который не для игр, а для веб-морд создан. Мне кажется, что это хуйня и не взлетит, потому что ничего нового ms не предлагает. Те же вебморды успешно пишутся на джаваскрипте. Пусть даже весь html и js - это сплошной костыль, но blazor от этого никуда не ушел по сути.
>>2265642 Даже жаба честно рисовала окошки (сколько было попыток). Красноглазые не оценили. Им просто нравится, что где-то что-то кросс, но трогать они это не собираются, так, чисто на форумах побросаться. Сейчас видел бобёжку на реддите, когда слово кросс, не включало пинус.
>>2265751 Жаба рисовала, но было слишком убого. Да и к тому же, зачем брать жабу, если есть Qt, который в нативный бинарник скомпилируется? Собственно Qt поэтому и стал №1 UI фреймворком. На втором месте, конечно же, электрон.
>>2265751 >Красноглазые не оценили. Им просто нравится, что где-то что-то кросс, но трогать они это не собираются, так, чисто на форумах побросаться Телеграм, дискорд, слак - кроссплатформенные. Ты думаешь, что ими никто не пользуется на пингвинах? А VS Code? Лично у меня почти весь используемый сторонний софт написан либо на Qt, либо на электроне, либо на Swing/AWT привет, JetBrains. Все кроссплафторменное. Если бы этой кроссплатформенности не было, думаю, популярны были бы совсем другие инструменты.
>>2265768 Я к тому, что Winforms и WPF получились годными инструментами, в отличие от того, что есть в жабе для ГУИ. UI фреймворки в жабе получились слишком убогими, это факт. Поэтому проще взять нормальный Qt, который к тому же не будет требовать установки JRE на машину или постоянно таскания за собой этой самой JRE. Если бы MS портировали их под линь, то получилась бы убергоднота, немотря на то, что шарп на CLR работает, но увы, этого никогда не произойдет.
>>2265781 где есть? она написана 3.5 человеком Только недавно вышла из статуса альфа (если вообще вышла - не слежу особо) Под виндой выглядит не нативно, ну и шрифты мыло.
>>2265352 >Собственное реакто-макакам уже припекает. От лагов первопроходца, насасывающего даже поделиям 3,5 челов версии 0.0.3 и 0.2? Ебало билли-фанбоя представили?
>>2265710 >и у него большой потенциал в оптимизации Такой потанцевал что челам пилящим юнити пришлось делать свой компилятор и несовместимые расширения языка для этой самой оптимизации.
>игры тому доказательство Магнум опус игр на шарпе — это геншин импакт с мобильной графикой, успокойся.
>а твои веб морды это совсем не рокет-сайнс. Спок, фанбой. Веб морды — это такая же задача для хайлэвэл языков вроде шарпа как и интерфейсы с крудами, и с ней он надеюсь, пока не справляется, посасывая как у "костыльных" решений, так и у каких-то фанатских поделок.
Тащемта, потому на жопаскрипт и есть спрос, потому что никто не в состоянии высрать замену. Гугл со своим дартом — обосрался и зачем-то этого ублюдка от жса и жабы потащил на мобилки, руиня крутой флаттер выбором языка, фейсбук высравший ризонмл — вообще забудем, майки — пока что самыек адекватные тут — начали с прикольного тайпскрипта типизация в котором по итогу не работает, а закончили каким-то сильверлайтом 2.0.
>>2265591 Дура, перечитай ещё раз, на работе я предпочитаю сидеть с VS и мастдая, дома мне это нахуй не нужно. VS Code достаточно и покупать IDE для XAML я не собираюсь.
>>2265600 Вкатыш, я пишу .NET бэк исключительно, ибо всё остальное не нужно. Во фронте вообще не ориентируюсь кроме пары компонентов в реакте на тайпскрипте в пет проекте. Хотел попробывать дома поковырять единственный дотнетовский кросс-платформенный ГУИ - авалонию. MAUI твой сдохнет как все остальные поделки корпорации в этом направлении.
>>2266109 >Такой потанцевал что челам пилящим юнити пришлось делать свой компилятор и несовместимые расширения языка для этой самой оптимизации. Ну так чем не потанцевал? Попробуй иди на жабе свой компилятор сделай.
>>2266489 В /b ты мог стать кем угодно - няшей стесняшей, успешным бизнесменном. Но нет, ты сидишь на зекаче и мимикрируешь под дотнетчика. Сережка, ты вообще код пишешь или нет? Почему с го ушел?
>>2266403 Причем тут жаба? Суть в том, что в юнити нет классической CLR, там стоит йоба-компилятор в С++, потому что производительности CLR для игр может быть недостаточно во многих случаях. Это не потанцевал платформы, ты +- для любого языка можешь написать компилятор в С++. Вон, в VK изначально все было на пыхе написано, а потом они сделали kphp. Теперь нужно всем говорить, что у пыхи огромный потенцевал?
>>2266403 Да куча компиляторов есть, как для самой жабы так и для жвм языков. Только есть одно но — это в 9 из 10 случаев уже другие языки, просто на 90% с тем же синтаксисом, и потанцевал платформы они явно не показывают. Потому что отношения к ней не имеет.
>>2266733 А в чём переобувания-то? Если ты играл в гнешин импакт и раст — первый намного качественнее сделан, лол. Хотя, ты, навено арма-говноед который к такому привык.
>>2266733 А в чём переобувания-то? Если ты играл в гнешин импакт и раст — первый намного качественнее сделан, лол. Хотя, ты, навено арма-говноед который к такому привык.
>>2263595 Я студией непрерывно лет 6 уже пользуюсь. Не могу не нарадоваться. Пробовал другие IDE, в том числе и для других языков и просто блевал. Студия - это глыба, конечно.
_editableCollection (ссылку на который извне получить нельзя) будет в CollectionChanged вечно хранить ссылки на каждый ReadOnlyObservableCollection, полученный методом GetReadOnlyObservableCollection() ?
class UserController: ContorllerBase{ publc UserController(AppDbCtx ctx) => _ctx = ctx;
... public IActionResult GetUsers() => new UserRepo(_ctx).GetUsers(); }
Ну, думаю вы поняли. Так вот. Я тупой и не шарю. Но если UserRepo - не IDisposable - вся эта фигня с управлением жизненным циклом работать будет разве? Ну, т.е. да, я понимаю, что, наверное, когда-нибудь туда придет сборщик мусора и убъет объект репки, но типа не правильнее было бы - просто в конструкторе передать зависимость, и зарегистрировать ее как Scoped?
заебался я искать ТРУ инфу про mvvm, на каждом ру-ресурсе мало того что инфы нихуя особо нет, а там где есть то челы говорят что нихуя это не мввм и ваще нарушение паттерна. Короче подскажите где норм правильно описан mvvm с норм примерами кода желательно на русском, но можно и на англе...
>>2268354 ох. майки таки поняли, что все мввм фреймворки обладают фатальным недостатком - и исправили это
>>2268347 вьюмодели держат в себе данные для отображения "что рисовать" и нихрена не знает про вид, знает только про модель вид занимается "как рисовать" и все знает про вьюмодели вот и вся тру
там еще сверху перпендикулярно MVVM - навигация - коммуникация - DI - Lifetime но тут уже каждый понимает по своему в каждом фреймворке
Сап анончики. Такая ситуация неприятная, надо диплом писать. Шарага древняя, требования никакие, из языков - делфи. Несколько часов тратить на написание программы на этом языке нет никакого желания, гораздо полезнее будет на windows forms это сделать, хоть попрактикуюсь. Препода уговорил что бы я на C# писал диплом, решил файловый менеджер на listbox сделать. Но чёт выходит шляпа какая-то внешне неказистая и с кучей костылей.
Нахуя я рассказал такие подробности? Чтобы сразу было понятно что кроме перетаскивания кнопочек на формочку в делфи я ничем 2 года не занимался первые два курса мы вообще почти не программировали, так что их не считаю. С# несколько месяцев назад начал учить самостоятельно и знания весьма скромны.
Может подскажете что мне в качестве дипломной работы сделать? Я был бы очень признателен, если бы кто-то подсказал
>>2268213 Контекст задиспозится контейнером, репу сборщик соберет. Неясно нахера инжектить контекст в контроллер, а потом передавать в репозиторий, если норм поцоны инжектят контекст в репу, а репу уже куда требуется. Тут получается какая-то каша, вместо норм абстракции.
>>2268453 А чем тебе файловый менеджер не угодил то? Ну и как вариант, лучше разберись в wpf и на нём можно какую-нибудь игру запилить, интересных вариантов миллион, куда лучше чем скучную околоофисную приблуду.
>>2268453 >диплом >файловый менеджер на listbox Это законно? Я думал там минимум надо машинлёрнинг, блокчлен и вот это все. >>2268529 >Неясно нахера инжектить контекст в контроллер, а потом передавать в репозиторий Если так делает сеньор, то это вау, это недосягаемый полет мысли. Если это сделает ждун, то это сычев, блять, переделавай все нахер.
>>2268605 Я не про новизну технологий, а про уровень диплома. Файловый менеджер, как мне кажется, едва на курсач тянет. Но, видимо, какая шарага, такие и дипломные и дипломы.
>>2268558 >А чем тебе файловый менеджер не угодил то?
Да я кучу функциональности делаю через костыли. И когда их много, как-то неприятно становится. Понимаю, что мои одногруппники вообще калькулятор роста напишут (введите ваш рост) и это покатит, но самому хочется что-нибудь менее кривое сделать. Менеджер я конечно допишу, но как диплом сдавать не уверен что стоит.
>>2268433 вкратце: есть модель машины (Car), мы создаем в вьюмодели массив из машин, правильно ли это? пример из метанита.
допустим я понимаю, что во вью у нас разметка и биндинги к свойствам, а модель это по сути класс описывающий модель (например машину), но я не понимаю что должно быть во вьюмодели, где должны быть комманды, где списки/массивы объектов и т.д
Сложилось такое мнение, что мягким как-то все-равно на опенсорс, ну типа они увидели выгоду для облаков своих, или MAUI для андроида (оставив на обочине линукс). Ну, то есть, я думал изначально они хотят завоевать расположение коммьюните, но в реале им как-будто все равно.
Насколько я неправ? Просто, для себя считаю шарп наилучшим решением на сегодня, но не уверен насколько стоит инвестировать силы и время.
>>2268751 Если им всё равно то зачем сделали открытую кроссплатформенную реализацию? Что за Чушь? Они активно развивают, для этого нужно время чтобы сделать хорошо
>>2268751 >Ну, то есть, я думал изначально они хотят завоевать расположение коммьюните, но в реале им как-будто все равно. Офк майкрософт — коммерческая компания делающая $ и им похуй на всё, что не приносит денег прямо или косвенно.
Мобилки — вкусный рынок, даже та мизерная часть что замарин захватил. Линукс — широко используется только на серверсайде, на десктопы вообще похуй.
Нравится шарп — вкатывайся. Хочешь гуй на линуксе на современном языке — посмотри на Compose Multiplatform, жидбрейнс на линукс точно не забьют.
>>2268730 Ну вот этот ApplicationViewModel содержит данные которые вид будет рисовать. В этом и смысл.
А юзать ли Phone или делать PhoneViewModel... 1 ну если у тебя биндинг не Mode=OneTime, то без INPC будет утечка памяти. Иначе нормик 2 Если тебе нужно хранить еще что то, например IsSelected, то конечно ты не можешь это делать в Phone, ибо текущий выделенный пункт на экране это чисто UI-шное понятие и потому нужен будет PhoneViewModel
Делать ли PhoneViewModel как враппер или с такими же полями - фломастеры
>>2268823 На само сообщество я не надеюсь, есть ли у них какой-то у мягких roadmap? Как они планируют развиваться?
>Compose Multiplatform Это вроде как котлин? Так, вроде, он до бэкенда нормально не добрался? у джавы не очень де-факто стандарт либы, мне не заходит, какой бы там синтаксис не был
Что напиздеть на интервью про собственные проекты? Ну я там писал конечно немного, но что-то прям показать годного не могу. Просто рассказать что делал приложения по работе с данными из интернета, по записи в базу данных, и т.д?
>>2268833 >Compose Multiplatform Какая лютая фигня. Начиная с названия, я подумал это с мобильника вообще. Заканчивая попыткой захватит все и вся.
Пока мир пытается в вебассембли, а мягкие делают хотрелоад, чтобы удобно тыкать UI. Брейнсы, без флагманских фрейворков и даже нормальной стандартной либы, пытаются в лоб взять пьедестал js в веб. они даже не представляют, как далеко ушел фронтент и как эти примеры с получением DOM выглядят примитивно сейчас
>>2268912 >как эти примеры с получением DOM выглядят примитивно сейчас какие примеры? куда ушел фронтенд? Все эти react/flutter/swiftui/compose - они как братья выглядят. Разница в возможностях конкретного языка для выражения.
>>2268912 >Начиная с названия, я подумал это с мобильника вообще Ну оно изначально так и есть.
>Заканчивая попыткой захватит все и вся. >пытаются в лоб взять пьедестал js в веб Не, у них основной таргет — десктопы они на них зарабатывают, карл, помню доклад какого-то челикса на ютубе, история такая — начали пилить какую-то новую десктопную тулзу, на захотели тащить половину идеи ради гуя и кринжанули с авт/свинга, начали жрать Qt и плакать с плюсов, потом пошли и портировали компоуз на пеки.
Энивей, если нужен кроссплатформенный гуй именно для пека — лучше ничего не будет, тупо нет компаний которые на этом зарабатыввают и сами же догфудят свои либы.
>>2268932 > которые на этом зарабатыввают Они сами пишут что только какое-то там приложение JetBrains Toolbox App (на мильён пользователей) почему не 3 billion devices?. Вот когда эта штука с пруфами будет на их рабочей лошадке - IDE, тогда и посмотрим.
>история такая — начали пилить какую-то новую десктопную тулзу, на захотели тащить половину идеи ради гуя и кринжанули с авт/свинга Так у них IDE же на подобие свинга? Как они кринжанули, если это их хлеб? Зачем вообще жабисты в Qt полезли. В общем, это очень весело.
>>2268957 >Вот когда эта штука с пруфами будет на их рабочей лошадке - IDE, тогда и посмотрим. На ней уже вроде как делают Fleet. Энивей это дело времени.
>Так у них IDE же на подобие свинга? Да, они на лэндосе сами пишут для чего эту хуетень делают >Excellent AWT and Swing interoperability.
>Как они кринжанули, если это их хлеб? Ну ты бы наверно тоже кринжанул, если бы тебе на MFC и каком нибудь C++/CLR пришлось новый проект начинать, нет? Или хлеб не пахнет? От жавы же как-то тоже кринжевать начали. Ахуенная логика у тебя, конечно.
>Зачем вообще жабисты в Qt полезли. Не захотели хуйлион строк легаси тащить, видимо.
>>2268976 >Энивей это дело времени. Понял, опять нужно подождать. Помню еще обещали, что котлин станет мейнстримным языком, вот лет 5 уже ждем.
Я как бы против него ничего не имею, но блин надо уже что ли пересмотреть в политике развития за столько лет. А они что сделали? Высрали десктоп, который в эту эпоху знатно так затухает.
В моем кругу, давно, была "говнооценка" развития языка по числу репок за 1000 звезд на гитхламе. После появления го, где фанатики друг друга лобызали и лайкали, это стало менее актуально, но все равно приведу пример.
>>2269008 >Помню еще обещали, что котлин станет мейнстримным языком, вот лет 5 уже ждем. так жависты динозавры люто ненавидящие современные подходы к программированию.
>>2269025 Конечно, опять программисты не те, а политика развития верная всегда.
Смешно, но если бы кто-то изначально высрал бы подобие Kotlin -> LLVM (без JVM и тем более JS), то думаю, у такого продукта, шансов было бы куда больше.
>>2269008 >Понял, опять нужно подождать. Как с MAUI и вообще всем, что начали пилить меньше 3-5 лет назад.
>котлин станет мейнстримным языком На андроиде таки стал. А в интерпрайзе и на джаву после 8 не переезжают.
>Высрали десктоп, который в эту эпоху знатно так затухает. Ну разрабы-то с десктопов никуда не слезут пока не станет возможным провод в мозг въебать, они просто пилят продукт для себя. Те же майки, очевидно, не будут догфудить MAUI на десктопах (ибо нахуя), и first class поддержка будет только у мобилок и винды (хотя последнее тоже не факт).
Короче, тут вопрос в том, стоит ли у того анона которому я изначально отвечал на кроссплатформенный десктоп или нет. Судя по его посту — ещё как, лол.
>>2269041 >Конечно, опять программисты не те Да. программисты не те. Это же жависты. Они пишут на многословном убогом языке. Им норм. И абсолютно не хотят ничего нового изучать.
>>2269043 >На андроиде таки стал Не стал. Стал рекомендуемым дефолтным, но не основным.
>>2269051 >Kotlin -> LLVM Ключевое слово "изначально", в реальности котлин появился как баг-фикс синтаксиса джавы, со всеми вытекающими. И только потом "это" начали портировать в native. А мог бы стать хорошим полу/функциональным языком с вменяемым синтаксисом, без оглядки на жабу, с прикрученным подсчетом ссылок. На LLVM даже исключения есть, лол.
>>2269043 >Как с MAUI и вообще всем Хрень без поддержки пинуса, на базе ксамарина с целью покорения мобилок. Так что цель была не супер десктоп, а больше чтобы потыкать в телефоны.
>На андроиде таки стал. Так, что теперь на ведре надо изучать сразу два языка, жабу и котлин. "Даешь два языка, за ту же зарплату", красавцы. Года два назад видел статистику, где жаба занимала более 50% кода на ведре
>>2269090 >Не стал. Стал рекомендуемым дефолтным, но не основным. Ну если не брать в расчет совсем уж полное легаси, то на андроиде почти все переехали на котлин или переезжают. Да и даже в бекенде уже можно его встретить, хотя вряд ли он там сильно взлетит, но тем не менее.
>>2269149 Тогда котлин не удалось бы затащить на мобилки. И вообще, что бы писали на котлине, не имея он совместимости с жабой? Сейчас ты можешь и на андроид бахать приложухи, и писать энтерпрайз на спринге.
>>2269043 >На андроиде таки стал То что после 2010 года о жабе было что-то слышно, кроме далекого тырпрайза, было благодаря ведру. Котлин подвинул эту жабу и начал понемногу топить. Но проблема в том, что когда жаба тонет, она тянет все JVM языки, в том числе и котлин. И только андроид помогал держать на плаву это безумие, пока скала, груви и тд шли весело на дно. И все было хорошо, но появилась фуксия и точка невозврата произошла, когда самсунг объявил о переходе на фуксию.
Котлин мог покорить бэкенд, и запилить флагман в виде какого-нибудь ASP.Spring или хотя бы унифицировать частоиспользуемые библиотеки (и не трогать пока native и js), в общем могли запилить свои батарейки (хотя бы как в го), чтобы люди не чувствовали что до сих пор пишут на той же джаве. Могли сделать многое, Но нет, они сделали нейтив, js и вот десктоп.
>>2269090 >Не стал. Стал рекомендуемым дефолтным, но не основным. По общему количеству кода — офк нет и не станет, по проектам — все либо уже переехали либо переезжают. Либо этот проект — телеграм под ведроид.
>>2269149 А дотнет, не лезь в залупу майки, мог бы быть главным бэкэнд и энтерпрайз языком. А ещё быть первым рекомендуемым на ведре, лол. Есть как есть, заканчивай фантазировать.
>>2269158 >Так что цель была не супер десктоп, а больше чтобы потыкать в телефоны. Я про это, блять, и пишу. Правда прибежали какие-то дикие шизы и начали рассказывать что котлин говно, при том что про язык я не писал.
>Года два назад видел статистику, где жаба занимала более 50% кода на ведре Так в этом году официальному форсу котлина на ведре только 3-й год будет.
>>2269178 >И все было хорошо, но появилась фуксия и точка невозврата произошла, когда самсунг объявил о переходе на фуксию. Ага, будет умирать как винда?
>>2269178 >Котлин мог покорить бэкенд От жабы этих библиотек там как говна. Да и языков, тащут вообще всё. Другой вопрос, нахуя тебе гигансткая залупа в стиле спринга/асп, язык с вм и всё вот это чтобы пилить микросервисы. Питухон/го делают брррррррр тебе за щеку.
Шарфисты, нужна помощь с автоматизацией. Пришло 10к запросов о наличии задолженности на ГИС ЖКХ, нужно всем проставить "нет" в этой графе на сайте. Может уже кто автоматизировал процесс? Эта хуета будет приходить и дальше, скорее всего в таком же объёме
>>2269680 Что именно тебя интересует? Администрирование, sql, орм'ы или внутреннее устройства бвз (индексы, связи, планировщик), а может acid или нормализация? Когда определишься сможешь нормальный запрос гуглу дать, а так... ну википедию почитай.
По MVVM так "правильно"? В модели не должно быть ивентов, если они не нужны для самой модели, а ViewModel должна быть посредником на каждое свойство модели И она же должна вызывать ивенты?
>>2270086 По большей части. Про мускул не скажу, но например, то что в mssql называется cross apply в postgresql называется lateral join, но суть одна, а в sqlite этого вообще нет.
Двач, меня унижает моя тюльпа, она говорит что ее член больше код лучше чем мой, как мне фиксить мой код двач? Она говорила что-то про рефлекции но она всегда говорит на ельфийском и я ничего не понимаю. Пожалуйста помоги те уже нет сил терпеть этот презрительный взгляд
>>2270099 модель - основная логика. ничего не знает про отображение, смотрят на нее или не смотрят. Ни про кого не знает.
вьюмодели - содержат визуальное состояние и данные для визуального отображения, чтобы дать виду ЧТО отображать Конечно знает про модель и не знает про вид
вид отвечает за КАК отображать и знает про всех.
В остальном каждый поворачивает как ему удобно.
Лепить враппер вьюмодель для модели. Да - если она мутабельная. Но если рид онли то лень же И даже если не рид онли то.... Например, в твоем классе Model (со скрина) не ожидается INPC (не вьюмодель же)...но все таки.
Вот вьюмодель может подписаться на INPC модели и когда модель улетела в свой слой (в котором конечно ничего не знают про вьюмодели) и там с ней что то происходит, то вьюмодель видит это и реагирует, а за ней и вид.
Нарушение ли это? Ну хз. Но если посмотреть на INPC, то там ничего "исключительно гуишного". По факту же это просто один из способов уведомления об изменениях. И лежит он в System.ComponentModel.
Да и враппер вокруг модели или же вьюмодель-клон модели - кому как удобно по ситуации.
вьюмодели - логическое место "где должен быть код относящийся к визуальному состоянию". Но не "какой это код". А потому в реализации вьюмоделей целый зоопарк - и прямые ссылки на рутовую вьюмодель во вложенных, и обычные события, и слабые события ака мессенджер, выставляют наружу Func<>, и контроллеры (которые призваны решить проблему "пипец вьюмодели тяжелые god-object, но опять же каждый понимает по своему) то есть MVVMC. Например, лично мне не очень нравится подход "защищаемся от утечек памяти слабыми событиями, а если еще и Dispose нужно вызывать, то хер с ним" поэтому я использую подход с Lifetimes.
Так что. это из разряда "как отображать или имеет ссылки на контролы (сборки визуальной части) и тому подобное?" - в вид это из разряда "что отображается, содержит логику ЧТО отображать или состояние этого ЧТО отображать и не содержит ссылок на сборки из gui" - вьюмодели. Например, Visibility это просто флаг, но он ссылается на сборку из гуи, а потому во вьюмодели быть не должен. То есть правильная вьюмодель - если ты вынесешь их все в отдельную сборку, где не будет зависимость ни на какие System.Windows/PresentationFramework/Xaml и тому подобное и оно без проблем будет компилироваться.
>>2270209 Тогда получается, что... эээ... Если я запилю INotifyPropertyChanged в модели, то логично будет написать ВьюМодель так, чтобы она просто давала ссылку на модель и всё, потому что если дублировать свойства, то придётся и подписываться на ивент модели и перевызывать ивент ВьюМодели, и при этом имена свойств должны быть идентичными...
С другой стороны, если вдруг в дальнейшем для уже существующей модели с INotifyPropertyChanged приспичит написать ещё один ГУИ на другом фреймворке, который - чисто гипотетически - ожидает другой интерфейс и другие типы событий, то, при условии неизменности модели, мне придётся запилить ВьюМодель, которая вынужденно будет дубировать модель, подписываться на её PropetyChanged и вызывать другой ивент, генерируя для него совершенно новый объект, потому что иначе хер там, а не изменения, верно?
>>2270237 >Если я запилю INotifyPropertyChanged в модели >чтобы она просто давала ссылку на модель и всё Смотря зачем делать в модели INPC. Если для "нахер мне вьюмодель с такими же полями, если INPC и так защитит меня от утечек памяти, да и сама уведомит", то это до первого подрыва на "контрол не может быть вызван из другого потока", ведь модель ничего не знает про UI контекст.
> мне придётся запилить ВьюМодель это ж другой гуи, у него свои правила и ему нужно вьюмодель - пишем вьюмодель.
>>2270258 >Смотря зачем делать в модели INPC. Я не знаю. Я просто потихоньку учусь. Чуть-чуть освоил шарп и почти сразу полез в ВПФ. Так что для меня >контрол не может быть вызван из другого потока >UI контекст чёрная магия. Я пытаюсь научиться хотя бы минимально и, самое главное, осознанно что-то пилить.
>это ж другой гуи, у него свои правила и ему нужно вьюмодель - пишем вьюмодель. Поэтому мне сейчас кажется, что вьюмодель должна таки дублировать модель и реализовывать ивенты, а модель не стоит захламлять ивентами для целей ГУИ.
>>2270271 >чёрная магия да никакой магии. Обновив свойство в другом потоке дернется OnPropertyChanged, который вызовет обновление контрола не из UI потока, на что тот ругнется исключением. Потому модель может реализовывать INPC как средство нотификации об изменении своих свойств, но если ее свойства будут изменяться из других потоков, то без Dispatcher не обойтись, а это уже не дело модели знать про это
>>2269680 Если апи открытый и единообразный, просто берешь HttpClient, Json.Net и посылаешь нужные запросы. Возможно предварительно надо будет залогиниться, тогда шлеш запрос на логин и в зависимости от схемы(токен или кука) - крепишь к последующим запросам. Вообще, для автоматизации, можешь вместо шарпов взять постман, почитай инструкцию. Он умеет в переменные и жс, так что если данные в обычном жсоне гоняются или xml - просто собери их, потом в обычном цикле - нужный ответ пошли. Опять же плюс постмана в этом плане - можешь посмотреть как данные гоняются наглядно и сразу видеть что тебе пришло, что ты отправил, что ответили.
>>2270591 для разработки чего? вот я на питоне разное быстрое прототипное или вообще что нужно быстро написать, где потоки не нужны или очень нужны батарейки. на шарпе пишу фундаментальное, то есть где уже должно работать хорошо и долго. Ну и десктоп тоже, если нужно - ибо "а на чем еще" (на текущий момент) а под андроид пишу на котлине, потому что выразительность котлина + jetpack compose (ну и конечно нативность) для меня превышают "не хочу изучать новый язык, есть же хамарин", а на не-андроиды мне с большой колокольни.
>>2270605 90% Бэкенд (многолетний, по большой части монолитный). 10% разного рода консольные утилитки-хелперы (возможно некоторые не консольные, а с примитивным GUI'ем)
>>2247357 (OP) Сап ,аноны ,дайте совет зелени . Прочитал книжку по шарпу , хорошо освоил теорию , немного попрактиковался и меня взяли работать за еду. Работаю уже полтора месяца . Мне очень трудно , у меня все плохо получается . Бывает сижу очень долго с ерундовыми задачами ,который джун бы как орешки щелкал у меня позиция интерна. Понимаю ,что учиться надо было раньше ,но все же. Хожу на постоянном стрессе , меня постоянно троллит ментор и часто не понимает меня . Я не могу так больше работать . Один раз намекнул на вторую неделю работы ,чтобы я шел к директору увольняться ,но директор посмеялся и сказал остаться . Все через это проходят ? Сегодня просто был какой-то день ,что я почти выгорел . Стоит увольняться ,или это обычный путь всех начинающих ?
>>2271045 Я за свои первые полтора месяца был самым счастливым человеком в офисе. Мне было глубоко параллельно, что о моем посредственном навыке думали окружающие, потому что писать код для меня это самое охуенное занятие какое только придумало человечество. А когда код работает и выполняет функции по тз, то этот момент круче, чем секс. Любой начальный стресс этого стоит.
Если от программирования ты получаешь удовольствие, а стресуешь от того что чувствуешь не лучшее к себе отношение со стороны коллег, то затяни пояс, закатай рукава, закуси удила и работай дальше.
А если на волне хайпа ты выбрал не ту профессию, от которой не получая отдачи, несёшь только психологические убытки, то - ну хрен его знает. Трудно давать такой совет. Бросить легко, а найти другой трамплин может и не получиться. С другой стороны, возможно, твоя работа мечты, вот прямо сейчас, ждет такого соискателя, как ты... Но это последнее звучит довольно сомнительно, как по мне.
>>2271045 > Прочитал книжку по шарпу , хорошо освоил теорию , немного попрактиковался и меня взяли работать за еду Пидорас, пошёл нахуй. Я вот ищу третий месяц и нихуя нет. То интервью ебанутые, то спрашивают как с мидла.
>>2271235 Ты понимаешь, что просто dll и dll из комплекта .NET 6 - это разные вещи и они по разному подключаются. Если не знаешь, то лучше вообще не советуй. В гугле тоже пишут такие советчики, даже не понимая что отвечают. В итоге весь топ гугла - говно-советы не к месту по данному вопросу.
>>2271269 >просто dll и dll из комплекта .NET 6 - это разные вещи В чем принципиальная разница, без учета IL/машинный код >по разному подключаются Ну если ты пытаясь подключить нетовскую либу ищешь как подключать COM, то сам дурак. Хотя оно тоже подключается в том же окне.
Двач, меня унижает моя тюльпа, она говорит что ее член больше код лучше чем мой, как мне фиксить мой код двач? Она говорила что-то про рефлекции но она всегда говорит на ельфийском и я ничего не понимаю. Пожалуйста помоги те уже нет сил терпеть этот презрительный взгляд
>>2271407 да почему в Project то в PropertyGroup надо. Ниже указания фреймворка допиши и то что используется <Project Sdk="Microsoft.NET.Sdk"> уже само собой разумеется.
>>2271481 >не перевели А зачем? Как вообще можно учить программирование на каком-то языке, если не знаешь хотя бы базового технического английского? Я вот тоже не особо могу в него, так я пользуюсь переводчиком на незнакомые или редкие слова, и этого хватает. Перевод мало того, что ждать дополнительно надо, так ещё и перевод может быть кривым.
Поясните за XAML + MVVM шизоидов? Работаю в .NET уже больше трех лет, в основном веб + иногда ковыряю винФормс.
Вот эти все WPF, Xamarin, UWP, MAUI - это вообще что такое, типо эксперимент над разработчиками? Всегда, когда вижу обсуждения, вздыхаю с облегчением что не приходилось копаться в этом дерьме за исключением мелкого проекта на WPF.
Зырьте чего придумал https://ideone.com/3hTIWV А? Круто? Круто же? А? Или не круто? Что думаете в общем? И вообще, чего я не учел и почему оно - говно по вашему менению?
>>2271691 Ну, заодно я поясню нахуя я эту хуйню придумал. Хочу понизить связность кода. Вооот. Ну, типа меня заебало что я логгер постоянно дергаю а потом оказывается что какие-то сообщения - не особо-то и нужны и приходится по всему коду искать, где ж я это сообщение пишу в логгер. А так у меня будет LogHandler который реализует логгирование всех нужных мне событий, я в одном месте буду править логи и не нужно как ебалдуй бегать. При этом никакой статики. Статика ж зашквар вроде как. А дальше, может быть у меня будут какие-то события прикладного уровня, ну, типа я захочу статистику вести - сделаю Statistic и он будет реализовывать интерфейсы событий, по которым надо статистику. Но меня конечно немного смущает что EventDispatcher - нужно передавать везде где будет подписка-отписка и события кидаться. Я пока не придумал как это решить.
>>2271684 Аналогично хвалю богов что мне не приходится иметь дело с фронтедом, браузерами и прочей херней, а есть нормальный нативный фреймворк для построения GUI, а не ебанизм в виде электронов и хтмл с жс
>>2271567 Потому что он нахуй никому не нужен. А книги кому-то надо продавать. F пока его не допилят до состояния, когда он будет реально иметь хоть какое-то приемущество перед жопаскриптом — он и не станет никому нужен.
>>2271684 >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-программирование... примерно на год.
1. Как биндят команды/методы с разными айди скажем к кнопкам в датагриде (WPF), если проект не MVVM ?
2. Как через httpclient уже залогинившись допустим на сайте - получить с него куку session_id, хранить ее, и соотвественно далее нужные манипуляции проводить удерживая текущую сессию?
>>2271800 Паста хоть и смешная, но явно писалась оч давно. .NET - таки прочно закрепился. Как бы не крыли хуями, но формы все еще используются, просто обычно это локальное использование, для внутренних нужд, ну, а в вебе - там сейчас работы полно и на .net писать веб очень даж охуенно, разве что я не понял нахуя они сначала решили обучить людей женерик-хосту, который как-бы где хош используй, а потом выкатили для веба это вот говно с WebApplication. ИМХО - это апи - нахуй не упало если честно.
>>2271800 Автор промахнулся, дотнет задержался не на год. Вообще это нормальный этап эволюции, в рамках компании.
Не знаю какой сейчас фатальный недостаток у десктоп решений, но отказ от гуи линукса у MAUI, мне это напомнил про EEE. очень печально, я реально надеюсь, развитие дотнет кор, это не старая игра мягких
>>2271856 Паста из 2001, офк в плане названий технологий устарела. Но вот дух майков как компании передаёт и по сей день — только недавно было 2 дотнета, лол.
>>2271906 >Вообще это нормальный этап эволюции, в рамках компании. Конкретно в компании майкрософт. Раз уж начали про гуйню, то давай посмотрим как дела с ней в других огородах: 1) Эпл — на маке есть AppKit, на афйоне есть UIKit, недавно на обоих появился SwiftUI. Политика компании — высирать большой монолит и катить его до следующего просёра ещё 20 лет. 2) Гугл — на андроиде есть нативный UI (не знаю, есть ли вообще название) и недавно выкатили Compose. В перерывах выходит хуйлион мелких либ, (на которые/с которых) все бегут туда-сюда. Политика компании — высрать что-то фундаментальное, жидко пердеть 2-3 раза в год до следующей большой какахи через на 10 лет. 3) Майкрософт — хуярим MFC последний апдейт — 17 год, оно живое, WinForms, WPF, WinUI, UWP, MAUI, Xamarin (хоть и не сами писали), недавно видел что-то про Blazor Desktop, вот будет хохма-то... И это не только с гуем так — оно так во всём. Политика компании — срать каждый год как можно больше, 1 какаха из 10 точно взлетит.
>>2271291 На вакансии стажёра спрашивали реализацию собственного алгоритма сортировки который учитывал несколько условий, например чаще используются первые значения, а не весь список, про интернирование строки и замену её через unsafe (нахуя?)
>>2272038 >собственного алгоритма сортировки обыденность >интернирование строки проверка на знание некоторых деталей внутреннего устройства дотнета >и замену её через unsafe проверка на углубленные знания или на интерес ко всяким глубококопаниям
Кто знает. Может они ищут людей, которые увлечены программированием, а может и тех, для кого это не более чем ремесло.
>>2271948 Ответ простой, эпл и гугл редко что делает для разработки. Гугл вообще выкатил на серьезных щах го и сказал жрите как хотите (и теперь у нас еще один узкоспецичный язык, но уже для микросервисов).
Так что мягкие, (вероятно, имея внутри конкурирующие группы), пилят наилучшие решения и получается как в опенсорс с 100500 решений в какой-то области. Это лучше, чем тебе дадут свифт и скажут ешь! Неудачные решения должны затухать и исчезать. Так что все нормально, загляни в какую-нить жабу, ты SQL фреймворков найдешь больше чем изучишь за жизнь (и все они не о чем).
>>2271906 >гуи линукса у MAUI Появится компания, которая запилит гуй, если будет востребовано майки их купят, а если нет, то зачем им лишний геморрой. ХЗ, на самом деле кому нужен гуй на лине кроме 1,5 анонимов с двача. Десктоп и так полмертв, а на лине даже родиться не успел.
>>2272126 Весь попенсорс отдан попенсорсу (тот же MAUI, или полудохлая авалония), но реальность попенсорса такова, что никто там за идею не работает (только GNUтнутые).
Это проблема не шарпа, а самих людей. То же самое наблюдается в расте, котлине, и даже в джаве, никто за бесплатно ничего толком не пилит (но языки очень любят, лол). Скажем, можно открыть джаву и увидеть тонну решений для бэкенда, но в реале все кроме Спринга это мусор. И так же есть культовые решения, но опять же без доков (а ты попробуй на жабе сорцы почитай).
Для меня шарп сейчас самый лучший язык для бэкенда со статической типизацией и перформансу. Котлин убивает жабье наследие, на го что-то многолетние писать кромя микрокаках больно.
>>2272148 Вот захочу я себе запилить дискорд++, чтобы юзеры могли юзать в телефоне, на винде, на маке и линуксе. И получится, что с MAUI я сосну тунца.
>>2272168 Ну соснешь и соснешь. Я же говорю майкам до полутора пилильщиком дискордов дела нет. Им линух только для облаков нужен.А если кто-то считает что на гуе под линь можно бабла срубить может запилить поддержку линя.
Всем привет,подскажите пожалуйста как через условный оператор обработать случай, когда массив имеет ссылку на null. Задача на codewars (If an empty value ( null, None, Nothing etc. ) is given instead of an array, or the given array is an empty list or a list with only 1 element, return 0.)
>>2272168 Нравится, когда двачеры от лица компании говорят, как-будто что-то понимают. Игра в опенсорсе простая, либо ты играешь со всеми, либо катишься к тунцам. ЕЕЕ тут не пройдет.
>>2272098 >Это лучше, чем тебе дадут свифт и скажут ешь! Неудачные решения должны затухать и исчезать. Ну так если бы майки не поступили с шарпом как эпл со свифтом — он сейчас был бы никому не нужен, как и 5 конкурирующих языков, бывших бы в разработке в таком случае.
Это же блять не либу написать, если завтра это "неудачное решение" по твоим манярыночным представлениям от отборе закроют — куча софта резко станет легаси говном которое надо переписывать, кому такое нахуй надо?
>Так что все нормально, загляни в какую-нить жабу, ты SQL фреймворков найдешь больше чем изучишь за жизнь (и все они не о чем). Очередную ORM написать — даже в одиночку не проблема, хуй знает к чему ты это вообще приплёл, можно с таким же успехом на жс фреймворки пальцем показать.
>>2272038 Ну вообще-то это не мидловские вопросы. Я тоже бывал на собесах ,где спрашивали вещи, которые я не помнил наизусть . Может у тебя просто плохо получилось себя продать
>>2272126 На кой хуй тебе гуй? Еще и на шарпе? Ну реально? Ну а если так нужен гуй, то хули ты как норм челы не поступишь? Гуй на какой-нибудь нативной платформе либо средствами ЖС, а основное приложение - на шарпе/любом удобном тебе языке, и общаешься либо по средствам своего протокола, либо как норм челы - рестом/rpc. На кой хуй это вот бредовое желание с тем чтобы учить одну технологию, чтобы все писать? Так - тебе только в си/плюсы, но ты там просто утонешь и нихуя не сделаешь в принципе. Ну и да, гуй не нужон на деле. Поживешь годик на линухе - поймешь, что 99% задач - тупо быстрее и проще сделать в консольке, а гуй только чтобы видяшки/картинки смотреть и нужон.
>>2272704 >Гуй на какой-нибудь нативной платформе либо средствами ЖС выучил шарп - учи еще 1005000 языков. ну а хуле )
>либо как норм челы - рестом/rpc у нормальных челов можно просто взаимодействовать с гуи напрямую, а не плодить костыли. Чай не браузер, где другого варианта просто нет.
>с тем чтобы учить одну технологию, чтобы все писать? ответ кроется в этом вопросе )
>>2271045 Не стесняйся спрашивать у тех кто рядом. Только аутисты типа меня, которых мамка в детстве пиздила за 4 и единственный способ хотя бы как-то самоутвердиться у них был - научиться, способны в самостоятельное обучение. Ну и всякие гении и креативные личности с талантом, которым просто прет от всего подряд и сегодня они на скрипке играют, завтра компуктер изобретают, послезавтра ебут красоток. Прими что ты не такой. Так вот. Тебе не стоит отчаиваться. Таких как ты - большинство. И ты должен понимать, что большинство челов вокруг - такие же, просто они уже прошли этап, получили навыки и могут спокойно справляться с рядом повседневных задач(обычно это семья и 2,5 профессии, т.е. когда ты освоишь кодинг, ты сможешь еще экономику/управление/что-то еще по выбору освоить и что-то третье-на средненьком уровне). А обучение обычных людей - всегда лучше происходит в группе. Ты смотришь на других, говоришь о своих проблемах, получаешь несколько решений, возможно появляется дискуссия о том как лучше и ты наблюдаешь, видишь аргументы тех кто шарит. Короче. Я тебе про правило часа хотел пояснить. Делаешь таску. За час не понял как нормально сделать - гуглишь, выбираешь готовые решения которые как минимум выглядят компетентно, пытаешься их применить - не подходит - идешь к старшим и плачешься , какое ты чмо, что вот, я пытаюсь решить задачу, вроде как нашел 2-3-10 вариантов, но не знаю как лучше потому что: поясняешь хули ты не копипастнул первое из SO.
>>2272711 Ну, по факту-то, сделать прям охуеть какой фреймворк для гуев - пиздецки сложно. Чтоб все-все-все. Вот, есть опенапи, есть родное апи системы чтоб окно создать и за мышкой и прочими устройствам следить. Дерзай. Ну а хули? По факту-то реально если хочется кросплатформенного гуя, ты либо так делаешь, либо берешь браузерный движок и на жс пишешь, либо кучу костылей с платформа-специфичным кодом костыляешь. А, ну да, можешь попробовать жаву и понять что на деле - что-то сложнее пары кнопок, текстбоксов, галок и выпадающих менюшек - там так же не сделаешь просто так. Это все специфика гуев и нихуя ты не денешься от этого. Хочешь на линуксе писать гуй - бери либы специфичные для линукса, бери си/плюсы/твой язык и пиши. > у нормальных челов можно просто взаимодействовать с гуи напрямую, а не плодить костыли. Чай не браузер, где другого варианта просто нет. И покажи этих нормальных челов. А потом ответь, какого хуя даже в среде линукса эти нормальные челы не могут у себя порешать так, чтобы гуи от разных DE и наличия окружений - не падали и вели себя одинаково.
>>2271045 У тебя ментор - токсик, еще и самоутверждается за счет таких как ты челов, у которых завышенные требования к себе. Мне вот, допустим, дали на первой настоящей работе задачу: сделай нам коммуникационный сервер, чтоб 10к rps на нашем протоколе поверх ТЦП, чтоб с веб-мордой, кроссплатформенно и микросервисной архитектурой. Ну, я еблан и сделал. В итоге - круглые глаза, когда я при этом выжатый как лимон - прошу уволить меня. Типа, бля, ты за 3 месяца сделал то что наши челы до тебя 4 года делали-делали и дропнули не осилив все требования. А я - еще и съебланил, написав заявление, но отдал его своему руководителю, а он его просто выбросил, кек, потом узнал только что нужно было сразу идти либо в отдел кадров, либо к директору. В итоег еще год сидел ждал, не понимая, хули мне не отдают трудавую и плотят ЗП. Только когда был оффер с другой конторы, в которой придложили в 4 раза больше чем тут и мой жлоб-руководитель не решился пытаться выбить мне ЗП чтоб перебить это - таки нормально уволился и на втором месте понял, что это вот все было не нормально. Короче. Не парься. Все тупят. И тупят много. Просто кто-то воспринимает тупняки как должное, либо сравнивает себя с собой же, а кто-то зачем-то смотрит на других и сам себя дрочит. Не дрочи себя и все будет ок.
вот только и хтмл + жс не является кросс. оно перекладывает кросс на движок браузера. И на выходе получается говно - памяти жрет много, умеет мало, выглядит как веб.
> какого хуя даже в среде линукса эти нормальные челы не могут у себя порешать так это нерентабельно. А энтузиасты делают, но им еще и жить на что то надо.
Лично я для кросс возьму авалонию если нужно будет. правда там выглядит не нативно (как будто хтмл нативно выглядит) и беда со шрифтами (внезапно под винду), впрочем такая же беда и в хромодвижках (а значит электронах и прочем)
>>2272750 Сделать кросс в движке бровсера - проще. Няша. Ты думаешь, почему опенгл - не имеет своего механизма окошек и прочего и чтобы само окно отрисовать в которое ты уже передашь контекст, все еще нужны какие-то костыли в виде glut, sdl или еще чего-то? Потому что если мы хотим делать общее решение - мы должны абстрагироваться от конкретной платформы. И да, выглядеть будет не нативно. В контексте опенгла - не так страшно, потому что там обычно костылают свое все время и не нужны РОДНЫЕ компоненты.
>>2272755 >Сделать кросс в движке бровсера - проще кому проще вот я шарпист. для создания гуи в движке браузера я должен учить хтмл, стили и богомерзкий жс. Потом думать, как все это дело связать с моим приложением. А оно мне надо? Может мне сразу нужно было в жаваскриптеры идти, зачем мне шарп то,а
>мы должны абстрагироваться от конкретной платформы >И да, выглядеть будет не нативно то же самое делает авалония. в чем разница?
Сап двач, устроился 3 месяца назад на первую работу и у меня ощущение, что я там деградирую, а не расту. Как бы в теории я вижу больше, знаю больше, но из практики у меня только писание эндпоинтов и юнит тестов к ним. Проект вроде интересный, много чего можно выучить, но мне почему то так похуй на него.. и пропало любое желание учить что то связанное с кодингом в не рабочее время. До того как устроиться на работу я очень любил читать умные книжки рассказывающие внутреннее устройство языка, в первые дни работы начал читать CLR via C# и дропнул его потому что мне было ну максимально скучно, хотя зная себя мне такие вещи нравятся больше всего.. В общем вопрос у всех было вначале так или я один из тех долбаебов которые ошибся с професией 21 лвл доучиваюсь в универе еще
>>2272761 Вы все здесь забываете, что кросс-платформа - это 99% не про Линукс. Имеется в виду Windows/Mac + iOS/Android. На данный момент альтернатив вебу нету.
Всё попытки сделать GUI на все платформы выливаются в переизобретение браузеров, только со своими костылями, стилями и кучей багов, на фиксы которых могут уйти десятки лет.
Поэтому все эти потуги в виде флатера, ксамарина, авалонии ни к чёму в итоге не приведут.
В любом случае, когда нужна кросс-платформа здесь и сразу - это значит кабан тупо хочет сэкономить. Правильно делать полноценный API + клиент к вебу, а потом нанимать разработчиков отдельно для нативных клиентов, если нужно. Кароче фулл-стек - это всегда игрушка кабана, не лезьте туда, и не выдумывайте якобы проблему отсутствия кросс-платформенного ГУИ, нахуй он нам не нужон этот ваш кросс-платформенный ГУИ.
>>2272782 >На данный момент альтернатив вебу нету. скажите это телеграму.
>Всё попытки сделать GUI на все платформы выливаются в переизобретение браузеров собственный рендер это совсем другое, чем "исполнение в контексте браузера"
>Поэтому все эти потуги в виде флатера, ксамарина, авалонии ни к чёму в итоге не приведут проблема флаттера - дарт, что все равно привело к отличной популярности У ксамарина проблема - внезапно шарп. Ну и долгий старт. у авалонии проблема - его не поддерживает мс, то есть больше самопал. Хороший, но самопал.
>нахуй он нам не нужон этот ваш кросс-платформенный ГУИ. ну лично мне не нужен. я потому и не трогаю эту какашку в виде хтмл. Под винду - беру WPF, под маки - беру авалонию. Под веб - пусть с этим фронтендеры трахаются, мне оно нахер не нужно для написания бэкенда.
>>2272782 > В любом случае, когда нужна кросс-платформа здесь и сразу - это значит кабан тупо хочет сэкономить Неистово двачую. Говорю это как бывший замарин разраб.
>>2272779 >CLR via C# Такие книги невозможно просто взять и читать. Я например могу раз в неделю загореться и прочесть какую-нибудь главу. Можно взять некоторые главы в начале, где рассказывается про heap/stack, GC, типы, но читать в упор эту книгу - это плохая затея.
Ну я тоже после устройства перестал читать разные программисткие книги, типо SICP и других. Также перестал новые языки программирования учить, кроме F# и для фронта иногда. Изредка могу пет-проекты поделать, но тоже быстро перегораю.
Чтобы не выгорать на работе можно почитывать reddit, stack-overflow, ycombinator, например по темам Why Entity Framework sucks или OOP sucks - там будут разные дискуссии, которые заставят тебе смотреть взглядом других людей и ты сможешь так развиваться и анализировать свой код, потому что локально у тебя всегда ограниченный круг мнений о конкретно твоем проекте и о том что ты делаешь.
>>2272805 >скажите это телеграму Не понял тебя, что сказать? Примитивное гугление показало, что они для каждой платформы пишут отдельный клиент. Да, есть Qt, но там целый зоопарк из языков и фреймворков.
Имелось в виду, что нет альтернативы вебу, если ты хочешь написать один клиент, который будет доступен со всех платформ из коробки без костыльных фреймворков, пусть и не как нативное приложение.
>>2272779 Не было. Но я аутист, которому самое то писать эндпоинты, а дома - пилить свой охуевший МВЦ фреймворк на всех языках, лол. На шарпе- написал, на жаве - написал, на плюсах - написал. Теперь нужно на каком-нибудь эзотерическом языке попробовать.
Бля. Я к чему. Профессия нужна чтоб бвбло зарабатывать. Когда у тебя будут скиллы - сможешь свалить на то что больше нравится. Если уж совсем-совсем не нравится и ты прям уверен что это не из-за того что ты что-то другое ожидал, думал что ты там будешь ежедневно сложные задачи решать, на которые годы положили лучшие умы и тут пришел такой ты и все порешал, то да, профессия таки во многом не такая, тут нужно делать много однотипной хуйни и стараться делать ее максимально качественно и быстро(соответственно и дорого). А пилить что-то интересное тебе или чем-то еще заниматься, можно и в свободное время.
>>2272805 Более того, те проблемы, которые ты говоришь, что проблемы >флаттера - дарт >ксамарина проблема - внезапно шарп когда это совсем не проблемы для больших проектов.
Самая большая проблема - это когда тебе нужно решить сложную задачу, например оптимизацию с использование нейтивных фич для комплексного финансового приложения или отрисовку нетривиального компонента, и тут выясняется что твой >React Native >Flutter >Xamarin >Avalonia идут хором нахуй и нанимается команда сеньйоров под каждую платформу, чтобы делать нормально.
Какой я дебил. Блядь. Придумал охуевшее решение с семафорами, из-за которого в одном конкретном запросе - просидает перформанс, вместо того чтобы просто кидать Task в очередь и ждать его там где мне надо. Пиздец я даун(((
>>2272817 да я уже вообще запутался за что ты топишь лично я топлю против технологий "делаем все в браузере на богомерзком жс, да еще связываясь с ядром приложения будто это сервер какой то"
>>2272711 >выучил шарп - учи еще 1005000 языков Кстати, заметил, что многие вакансии на шарп требуют ещё и знания фронтенда. В то время как вакансии джава - это чистый бекенд без фронта.
>>2273038 Жабий тырпрайз разросся до такой степени, что для крудинга нужен отдельный спец. В реале это еще связанно с тем, что надо знать 100500 либ, в шарпе же многое унифицировано. жабу тоже когда-то пытались, но возможностей не хватило
>>2272891 Потому что те кто делали JArray не имплементировали эту фичу(возможно из-за необходимости обратной совместимости со старым фреймворком, где еще не ввели слайсы). Используй стандартный подход с Count-1. Либо линку TakeLast(1)
Кстати к слову о зоопарке микрософт. Допустим, что мне НЕ надо кросплатформенность, просто гуи софт под винду написать(не спрашивайте, зачем). Что сейчас является каноном под вин 10+? Как я понял, последнее, что они высрали, это winui 3. Но как же я проиграл с названия видео и первого же коммента. Т.е. по факту очередной высер МС, который конкурирует с остальными высерами.
>>2273079 Лучшее решение что они придумали для гуи - винформы. Это просто лучший инструмент именно для программистов. Решения с WPF-UWP и прочим калом, это попытки выкатить говно, для средних и больших команд, где есть дизайнеры, которые условно не в состоянии нормально писать приложения, но при этом могли бы делать тот самый дизайн, темки и это вот все говно. Тебе как программисту, если ты собираешься писать софт в соло или небольшой команде - винформы будут охуеть как удобны. При этом винформы - самый логичный инструмент из всех, и самый экономичный в плане ресурсов. Лучше только голове винапи, но в таком случае тебе бы больше подошли плюсы.
>>2273122 Есть книги по винформам? Раньше Петзольд писал, но там жуткое старьё и сейчас уже нигде не найдёшь книгу, а то, что выложено - кривой скан с пропуском страниц и не читабельный.
>>2272483 1. This. 2. Выиграть 0.000001 сек на каждый запрос на парсинге и проебать в поддерживаемости и гибкости. 12/10.
>Может пойти по третьему пути и селекты оставить в приложении, а запросы которые изменяют данные (инсерты, селекты, дропы) вынести в фанки? Успокойся и оставь базу данных базой данных.
Есть основной проект в solution и есть проект побочный. У побочного проекта есть своё окно с вьюхами. Можно ли как-то через datatemplate добавить окно побочного проекта на окно основного? Лично что-то пока не совсем понимаю, как это сделать
>>2273416 Я сам за первый вариант, но как его обосновать? Мне говорят что так всегда разрабатывались клиент серверные приложения, что это быстрее и безопаснее и что можно не перекомпилируя проект внести изменения на стороне базы.
Я пытаюсь рбъяснить что это все превратит дальнейшую разработку и поддержку в ад, но нужны пруфы несостоятельности второго подхода.
Собираюсь попробовать запилить extension для visual studio 2022. На чет там можно писать gui? Мне нужно будет всякие кастомные tool windows делать. winforms? wfp? Или что там сейчас вообще?
>>2273612 Чел что канал ведет - не дотнетчик. Скорее всего плюсовик, который использует .net из-за удобства и простоты. Часто подсматривает SO. Для нуба - там все равно много полезного, наверное. Если прям совсем ничего не знаешь. Рассказывает довольно просто и понятно. Но видно что ООП это не совсем его. Короче. Я к чему. Если совсем нуб - то норм вполне. Просто-понятно и быстро. Я бы советовал таки видосики с тем лысым хреном с ITVDN. Хотя для игродела будующего - там много кишочков дотнета, которые будут лишними в юнити. Вообще. Да. Я тут подумал. Наверное именно симплкод для освоения основ и потом переходить к примерам которые сами юнити как обучающие дают - самое то для нуба. Хотя я бы конечно таки лысого хера с ITVDN советовал, он разжевывает так хорошо, и при этом много кишков, которые таки не в геймдеве - полезны оказываются.
>>2273677 На всякий случай таки уточню, что именно с лысым дядькой. Там есть несколько вариантов курса. Те что с лысым дядькой - годные. Ну и да. Они есть на торрентах если что. И часть на ютубе.
>>2273504 >Я сам за первый вариант, но как его обосновать? Вот так >так всегда разрабатывались клиент серверные приложения, что это быстрее и безопаснее
>можно не перекомпилируя проект внести изменения на стороне базы. Нельзя, чел. Ты просто сломаешь код в 9 из 10 случаев.
>но нужны пруфы несостоятельности второго подхода. Если у вас прям есть DBA которые задрачивают выборки, как-то структуру бд меняют и тд — то может и будет какой-то профит, от использования их как контракта.
Иначе ты делаешь из базы данных часть приложения, лепя их в монолит. Что сломается в какой части при изменении какой-то хранимки — с ростом проекта будет расти и геморой, а если кому-то придёт идея побить проект по частям/сделать ещё один — этот геморой моментально лопнет нахуй, как и разобраться в хуйлиарде хранимок под каждый кейс, которые будут копится с каждой итерацией, на всякий пожарный или потому что какую-то часть решили оставить так.
У меня серьезный вопрос. Неужели я один такой, кому не норм что в у шарпа нет нормального фреймворка для разработки сетевых приложений? Типа да, я понимаю, что те кто вкатились - скорее всего по хэтэтэпе гоняют жсоны, а те кому таки нужно было в свое время - просто брали сокет в руки и скорее всего боятся что-то там допиливать, типа работает и хуй с ним. Но блин. Меня эт напрягает. Я хочу чтоб у дотнета был нормальный, мать его фреймворк не привязанный к конкретному протоколу. При этом чтобы большая часть плюшек асп была валидной. Но сук. Я ж не смогу в соло это сделать в контексте долговременной поддержки. Типа да, я таки могу сделать пруф оф концепт в соло, но как потом с этим быть? Я же не смогу его вечно поддерживать, а чтобы пользовались - нужно всякие кодеки будет писать, новые технологии впихивать и т.д. Короче. У меня вопрос. Как привлечь внимание майков, если я таки сделаю свою хуйню, которую хочу подарить миру, чтобы каждый васян потом мог быстренько свой прикладной протокол придумать и на его основе уже свое клиент-серверное приложение делать.
А можешь что сказать про использование nhibernate (с orm не работал, но движение в его сторону мне кажется перспективным, nhibernate выбрал рандомно), если все перевести на него? Там же тогда не будет гемора с sql кодом? Правда не знаю что там и как со сложнымы запросами с подзапросами и кучей проверок, но такое буквально есть в нескольких местах. Еще он же может работать без локального кеширования таблиц, если таблицы тяжелые?
>>2273823 Пишешь. Поддерживаешь. Создаешь вокруг продукта коммьюнити. Привлекаешь туда заинтересованных. Пишешь статьи. Публикуешь на профильных ресурсах. Выступаешь на конференциях с докладами. Общаешься с нужными людьми. Если у твоего продукта есть потанцевал, то вполне возможно, что тебя заметят и выкупят/инвестируют.
>>2273823 Чем тебе имеющиеся либы не нравятся? Или тебе надо чтобы о них рассказали сначала на конференции. Типа либа если не с конфы, то фи? В первой же найденной либе есть пример клиент-серверного кода и даже гифкой!
>>2274233 > Чем тебе имеющиеся либы не нравятся? Тем что все что есть, по факту, это попытка netty портировать на .net, которая заброшена(оно вроде как работает, но некоторые баги так и не закрыты, да и не уверен я что оно Production Ready), есть NetCoreServer, который с точки зрения плюшек - чуть лучше сокетов и не ООПшный по сути, там просто есть клиент, есть сервер - дальше сам пили контексты, кодеки и следи за буффером и стейтом сессии. Есть еще WatsonTCP, но когда я его тестил - он тупо не был в состоянии обработать простой разрыв коннекта, в результате - одно из ядер - загружено на полную, пока у него не пройдет HeartBeat и он таки не дропнет соединение, плюс он Tcp-специфичный, а там как-бы QUIC таки вроде таки пытаются проталкивать как новый стандарт, пусть он уже и давно придуман. >>2274218 Да я просто сколько не пытаюсь где-то про это вякнуть - создается впечатление, что никому оно не надо. Дедам -все хочется сокеты теребить, жависты - имеют нетти/мину, а нубы - не знают что в мире есть что-то кроме реста и http
>>2274335 А, ну да. Есть еще Project Bedrock. Он, судя по примерам того что хотели - покрыл бы большее из того что лично мне надо. Но его в .net6 вроде как обещали выкатить, но с тех пор как я интересовался - никаких новых новостей не слышал, а последине коммиты - хрен знает когда были. Есть мнение, что проект тупо закрыли или положили на полку, ну или взяли наработки себе и в открытую их не хотят выкатывать.
Вообще, что думаете насчет событийно-ориентированной модели в контексте монолита? А то чет я гуглю и сейчас это исключительно про микросервисы будто стало. А мне вот хочется примерно следующего: await ApplicationContext.DispatchEventAsync<DomainEvent>(new DomaunEvent()); И чтобы логгер - залоггировал это событие, а какой-нибудь обработчик - обработал и возможно создал новое событие, которое уже обработает другой обработчик. Типа да, с одной стороны - я смотрю на это и сложность понимания когда что вызывается - должна повысится. Но с другой - понизится свзяность кода и можно будет проще с этим всем делом управляться, а главное - тестировать, т.к. не нужно будет всю цепочку проходить, а можно просто дергнуть хендлер, замокать диспечер и все чики-брики должно быть в плане тестов. Что думаете-то?
Сап. Мне тут студия предлагает >Member 'Pisos' does not access instance data and can be marked as static Есть ли какие-то преимущества, если использовать статику?
>>2274531 Есть. Если у тебя метод статичный - не нужна проверка на то что объект создан. Таким образом - нет лишних проверок того что есть объект метод которого вызывается.
Такой вопрос. Не совсем про язык, скорее про статический анализатор. Допустим у меня есть метод который принимает аргумент который должен быть в неком диапазоне значений. И у меня есть проверка которая бросает ексепшн если это не так. Однако анализатор не ругается когда я пытаюсь передать неподходящее значение. Возможно ли сделать так чтобы он помечал подобное как ошибку, подобно тому как это делается в питоне через тайпхинтинги (пик2)?
>>2272816 Дело не в интерестности заданий. Просто я смотрю на своих коллег и не понимаю откуда у них столько знаний если они выполняют такую же однотипную ерунду как и я? Тратят свое личное время? если да, то я явно им не ровня ибо после конца рабочего дня я даже думать о кодинге отказываюсь
>>2274693 Ну почему обязательно личное время? Кто-то в рабочее, если все успевает - просто не спешит бежать за новой порцией задач и спокойненько что-то там читает. Ну и зачастую ты ж несколько лет занимаешься этой однотипной хуйней, много разных штук повидал. Она-та однотипной кажется на первый взгляд, а на деле - вот тут лучше так сделать, там - вот так. Ну и да, в свободное время полезно книжки вумные читать и это вот, просто это не с наскока делается за год взял и все выучил, а постепенно, пока работаешь.
>>2275252 Тебе же прямо написали "удобно и human readable". Если эти качества перевешивают ускорение и оптимизацию, то поэтому и юзают. Ну и если они изначально бинарные форматы через json-ы гоняля, то сами себе долбоебы. Охуеть достижение "мы для перегонки бинарников взяли формат подходящий для перегонки бинарников и стало быстрее, чем с форматом не годящимся для передачи бинарников". Ясен хуй, что так и будет.
>>2275254 >Тебе же прямо написали Дак неужели это перевешивает скорость ? Ну если у вас высоконагруженное приложение, не логично ли будет сразу взять самое быстрое решение? Ну да мб разработка будет четка медленнее зато софт быстрее работает.
>>2275252 Ты, интереса ради, попробуй сам захуярить свой сервис с бинарным форматом для апи. Причём не какой нибудь протобаф (хотя и с ним куча гемора), а на messagepack, блять. А потом написать к этому сервису хотя бы 3 клиента. И что-то изменить в сервисе и посмотреть кого как распидорасит. Отлаживать такое — ебанёшься просто.
>>2275375 "Если что" вот это >Ну и если они изначально бинарные форматы через json-ы гоняля, то сами себе долбоебы несвязанный поток хуиты, смысл которой я пытаюсь понять.
В общем, пока тролль нагнетал тут, я рили понял что на текущем дотнете (тот что из core) реально мало либ и мелкософту как-то на это класть. Го ужасен в плане длительной разработки. Судьба раста непонятна. Да и либ мало. Котлин ужасен в длительной компиляции и вообще дизайне (вчера только упало двухлетнее приложение, почему-то стал цеплять экстеншен фукцию T.run() вместо компаньёнской. Офигенно открыть утилитку, которая перестала компилиться со временем.). Жаба - топорна.
Вопрос от неофита: как получить данные из HttpContext.Session в контроллере? Данные в сессию я складываю из вью моделей страниц, но в контроллере их нету. Я подозреваю что в контроллере создаётся другой контекст и сессия.
>>2275431 >что на текущем дотнете (тот что из core) реально мало либ ну так то оно поддерживает либы из старого дотнета, пока там нет зависимостей на то, что вырезали.
>>2275431 А что тебе нужно? Какие задачи? Все инструменты говно в той или иной степени. Если нужно просто в бекенд вкатиться, то js/java/kotlin/go на сегодня вполне рабочие варианты.
Из всех вариантов думаю go самый нормальный вариант на сегодняшний день. Нет легаси и огромного нагромождения абстракций ради абстракций. Код читается просто, в отличие от раста, плюсов или джавы/шарпа, где происходит магия под капотом того же спринга или asp.
>>2274642 Нет, то что ты хочешь - называется dependent type system. Нормальная реализация такого есть в Idris.
Можно указать компилятору, что функция принимает List<int>[n] и возвращает List<int>[n + 1], где n - это количество элементов в списке.
В питоне, как видно, просто юзается обёртка Literal. Такой костыльный анализатор ты тоже можешь написать для C#, но это всё будет неполноценно если этого нет на уровне компилятора.
Когда там уже .NET MAUI в релиз выйдет то? Разговоров было то пиздец, а он до сих пор в превью. Хочу немного научится гуи делатьхз нахуя, так для общего развития, вот жду его. Или нахуй тот гуи?
Есть тут такие кто из чистого шарпа перекатился в фуллстэк? Как это вообще делается? Я на Рякте + Асп изи помогу написать несложное вэб приложение. Но что касается теории, я вообще не шарю за фронт. Включил тут интервью друна ряктиста, так вообще половину вопросов не понимаю и о чем речь.
>>2276135 >Я на Рякте + Асп изи помогу написать несложное вэб приложение. Ну так для шарписта - это и есть фулстек. Компонент накидать сможешь, который пруф-оф-концепт изменений на бэке проверит и достаточно. А дальше пусть верстальщики трахаются. Не вижу смысла переката во фронт. Бабок больше не заработаешь, а как только узнают, что ты и верстку можешь, так сразу начнут все дерьмовые таски вроде "марджин лефт 10 пикселей" скидывать.
4 года всякого говна от библиотек и расширений до функций и серверлес поеботы в облаке
сейчас перешёл на галеру 5к+ тел, нанимался как бекер но у меня нихуя опыта в асп нету, сказали дадут 3 месяца испыталки
на время испыталки 150к, потом до 250к (перформ ревью будет)
как оцениваете такую поеботу? продешевил? мне дали предложение которого я не заслуживаю? какие сейчас рейты я вообще нихуя не секу — 4 года как страус засунув голову под землю сидел в своей говноконторе
>>2276248 Ну обычно да. По крайней мере в подавляющем большинстве мест, что я видел дела обстоят так. Я например, если моя задача просачивается на фронт, максимум делаю какой-нибудь компонент, который реализует нужную логику. Модалочку там прикрутить, вьюху отдельную или маршрут прокинуть. Бывает какие-нибудь сложности, вроде хитрой фильтрации или odata запросов. А всякие проблемы типа вылезающего за границы текста или стилей спихиваются чистым фронтам. Понятно, что при дикой нужде я и это сделаю, но в норме у них это получится и лучше и быстрее.
А стремиться совсем к полному фулстеку, чтобы делать совсем все смысла нет.
Существует ли быстро гайд для беженца с .нет фреймворка в асп нет кор - как совладать там с энтити фреймворк кор? Раньше я создавал контекст через using и делал все что нужно, сейчас так не сделаешь ибо нужно подключать сервис и из конструктора вью моделей доставать контекст. У меня есть "utility" класс который работает с конекстом (помимо еще самих вью моделей) который я туда передаю. Из-за этого я ловлю "instance of entity type 'anontable' cannot be tracked because another instance with same key value is being tracked.". Можно было бы вынести utility класс в сам контекст, но тогда бы пришлось создавать на каждую таблицу по несколько методов типа Add/modify (т.е. вызывать их вью моделей, вместо дефолтных энтити методов) но это какая-то шляпа и я чего-то явно не знаю.
>>2276753 А что подразумевается под знанием жавы? Ну, допустим - я ее не учил. Но мне нужно было портировать одно приложение с жавы на шарпы из-за того что чел, который делал на жаве - уволился, а больше никто не знал как оно работает. Было смутное ТЗ за 2005й год и воспоминания стариков, что дескать такие вот были кейсы, но мы точно не помним, вроде клиент когда-то просил такую фичу, но хуй знает запилил ли тот чел ее или нет. История коммитов была в SVN и коммиты оформлялись в духе: Внес изменения... и дохуя файлов измененных, какие изменения внес - ну, иди смотри. Ну, без особых проблем разобрался в жава-коде, зная только шарп. Плевался правда с него, типа, пиздец, как люди без свойств живут-то, куча GetHuinya(), SetHuinya(Huinya huinya). Хотя их енумы мне понравились, хотелось бы подобное в шарпе видеть. Ну и понравилось таки то что сахарка в том коде было меньше, в этом плане - чем ближе к си - тем удобнее понимать, т.к. синтаксис сахарка - нужен только тем, кто кодит постоянно на языке. Короче. Я к чему. Если ты умеешь читать код и приблизительно понимаешь паттерны которые используют - понять код на ООПшном языке - не сложно. Всякие специфичные штуки, типа как там у них фреймворки устроены какие, где чел обосрался в контексте жавы, а где не - это да, тут просто так не поймешь, но надо ли оно шарповоду, которому нужно бизнес-логику было понять?
Анончик, анончик. Что думаешь над популярным сейчас у геймдеверов ECS-подходе? Я в контексте: а можно ли это нормально использовать в той-же веб-разработке? Ну, просто когда я пытаюсь придумать кейс из не геймдева, все выливается в то, что это будут просто маленькие интерфейсы, а СУЩНОСТИ - просто фасадами. Т.е. никакого отхода от ООП, по факту. Но вот в геймдеве - кричат что нифига и это какой-то новый подход и не ООП. Но ведь если убрать из "ECS" букву S, то это же, как уже сказал - обычный такой подход с фасадированием. А теперь вернув S - получаем, что вполне себе классический ООПшный подход, мы выделили "сущности", в них с помощью DI - протолкнули нужные нам "компоненты", ну а системы - некие наши сервисы, которым как раз "сущность" не важна, а важна работа с компонентами. Может быть я что-то не так понимаю? Ну и может быть кто-то хотя бы в своих проектах пользовал в качестве эксперимента такой подход не в контексте геймдева. Как оно? Ложится или не? Просто классическое ООП - надоело. Геймдев-няшки говорят что ECS - подход это якобы не ООП, хотя я смотрю и то же самое ООП классическое. Но просто я слышал про выражение, что если у тебя в руках молоток, то все вокруг кажется гвоздями, потому и думал спрасить у более прошаренных.
>>2277225 >Я в контексте: а можно ли это нормально использовать в той-же веб-разработке? Можно конечно. Но не нужно — у веба банально другие ориентиры всем похуй на перформанс, завалим железом, ради того, чтобы больше влезало в кэш проца никто не будет поворачивать голову, чтобы запихнуть в неё ECS, лол.
> все выливается в то, что это будут просто маленькие интерфейсы, а СУЩНОСТИ - просто фасадами. Т.е. никакого отхода от ООП пофикшу: > все выливается в то, что это будут просто маленькие тайпклассы, а СУЩНОСТИ - просто композиция функций/типов. Т.е. никакого отхода от ФП кроме мутабельного стейта кек.
>если у тебя в руках молоток, то все вокруг кажется гвоздями Тащемта, всё так. У тебя принципы SOLID-а в голове уже слились с ООП, хотя применить их можно к чему угодно. От ООП отличает шаренность стейта, от ФП — его мутабельность. В целом каких-то специфичных для ООП/ФП вещей в реализации не требуется, паттерн прекрасно реализуется хоть на Go.
>>2278554 При чем тут ключи нахуй? Меня просто напрягает необходимость засирать системный том, который я по дурости сделал очень маленьким. Вон, жависты ставят свою IJ с JDK спокойно на нужный диск.
Можно ли как то юзать десереализацию без создания класса? К примеру как то так string name = JsonSerializer.Deserialize(json).name; Например я получаю json но мне там нужна всего ли одна строка, можно и регуляркой распарсить конечно. Но можно ли ее как то так получить?
>>2278675 >который я по дурости сделал очень маленьким Ну так проблема в тебе. Тем более, что все пакеты и сдк все равно потом будут на системный диск скачиваться (как и у джавистов, кстати), а они места побольше чем IDE займут.
У меня есть интерфейс, который реализуется в куче классов. Я хочу в этом интерфейсе изменить одно свойство, так чтобы оно изменилось и во всех имплементациях. Если с именем проблем нет (Ctrl+R два раза и везде поменяется), то как быть с типом? Как изменить тип свойства в интерфейсе, чтобы он так же изменился и во всех реализациях. Все облазил, но команды такой не нашел.
Что подразумевает под собой "уверенное знание .NET"? Вот есть C#, я его учу и могу понимать, какие темы я хорошо усвоил, какие штуки нужно ещё практиковать, и к каким ещё рано притрагиваться. Что же значит знание dotnet? Умение собрать своё приложение?
>>2279841 2 и 3 Потому что так реализовали. Ну серьезно, что за вопросы почему? Сто пудов какой-то говностандарт как с float, который по каким-то причина, ведомым составителям, так себя ведёт.
>>2280103 Та вот лично по моему опыту, я бы на этом не останавливался. Потому что бывают всякие няши, которые вопросов не задают, накопипастят кода, не понимая, что он делает, лишь бы вроде как работало, даже не думая о том чтобы это минимально было читаемо. В итоге, когда вскрывается - тебе переписывать за долбоебом, который, как только запахло жаренным - съебался в закат. Ко-ко-ко, кодревью. Какое нахуй кодревью, когда в команде 3 человека и у каждого по несколько проектов?
>>2280103 Ну а с чего мне не быть малохольным невротиком, я вкатываюсь сам с нуля, без вузов и курсов. Я же не знаю как там у крутых дядек заведено. Спасибо за ответ, анон.
>>2279388 Можно, в Newtonsoft можно сделать чето типа такого(пишу по памяти, но знаю, что можно при десериализации не указывать конкретный тип): dynamic obj = JsonConvert.DeserializeObject(json). Затем obj.SmthProp
>>2279689 Когда знаешь тонкости каких-то моментов. Вообще познание внутреннего устройства шарпа очень поможет в осознании некоторых моментов, например - автосвойства, или например во что превращается async/await, чем отличается event от обычрого delegate. Уверенное знание С# это уверенное знание механизма и структуры языка. Это как вот твоя рука, она инкапсулирует метод "дрочить хуй", но как устроено внутри? Посылается сигнал мозу, сокращаются мышцы, вырабатываются гормоны, учищается сердцебиение... и вот это всё и есть уверенные знания конкретной области
>>2280341 Остается только вопрос: НАХУЯ? Вот серьезно. Ну я вот знаю во развернется хуйня с async/await, я лазил по исходникам рослина, я разбирал сборку и тыкал палкой. Ну, типа я это делал ради интереса. Только вот нахуя эти знания в повседневной работе, я если честно - не ебу. Вообще профитов не вижу. ИМХО - умение писать простой и понятный код - намного более важный скилл и именно за него нужно спрашивать. А как там эвенты работают - до пизды, потому что сегодня они работают так, завтра майки решат устранить очередной фатальный недостаток - и будут работать не так. Хули толку-то с этого знания?
>>2280345 Все так анончик, я тоже лазил из интереса, только толку от этого нет. Я тоже с завода, пока что, в планах перекатываться куда-то на стажировочку.
>>2280357 Двачаю адеквату. Пидарундели не понимают, что IL код можно оптимизировать в некоторых ситуациях тем самым выигрывая в производительности, да и в целом полезно знать как всё работает на самом деле так как появляется полная картина мира без магии.
>>2280357 Пф. Учитывая что я на заводе 60к получаю, я за 200к - могу и на дуде сыграть. Но вообще, как я уже сказал, я-то могу за все это пояснить. Проблема в том, что на работе есть еще плюсы, есть ассемблеры разные, есть всякая хуйня связанная с линуксами, свехру микросервисы еще и фронтенд на реакте, а под конец - дельфи и джава. И все это активно используется, в зависимости от проекта. И именно навык умения писать аккуратный и понятный код, лично мне как раз и начал после всего этого зоопарка казаться самым важным. Потому что хороший код, в случае необходимости - легко и непринужденно можно поправить. Когда у тебя звиздец с кучей зависимостей, когда у тебя хуй пойми что где и зачем, когда нет одного стиля - похуй на знания кишков, потому что ты потом дохуя времени будешь тратить, чтобы тупо разобраться, как это говно вообще работает.
>>2280370 >на заводе 60к >фронтенд на реакте >дельфи и джава >плюсы >ассемблеры
И за всё это отвечаешь ТЫ и получаешь при этом 60к?
Чел, поздравляю, тебя в жопу ебут. Бери билет до москвы или, если есть инглиш, открывай ип/самозанятого - будешь на буржуев работать.
Тут не вопрос нахуя на собесах спрашивают про детали языка, вопрос в том почему ты своё говно терпишь. 3 года коронашизы бушуют, уже всю работу на дом перевели - можно на дядю из далласа работать из воркуты. А ты всё на своём заводе недовольный 60к сидишь.
Я бы понял ещё если ты патриот и надеешься промышленность россии поднять таким макаром. Но ты задаёшь вопросы "а хули меня на собесах режут"
>>2280381 > И за всё это отвечаешь ТЫ В основном я таки на шарпах пишу. Это все - побочки работы на заводе, где каждый месяц 2-3 человека то в танки убегут, то в хуяндекс, а проекты - никуда не деваются. А я не бегу, потому что все что предлагали - с переездом, а у меня - батя болеет, нужно быть таки рядом, чтобы если что.
>>2280409 5 лет работаю на заводе программистом. Сразу как вуз закончил и прошел практику на этом же заводе. Не считаю себя вкатышем. Ну, и не троллю. Я бы вообще про ЗП не говорил, если бы про нее не вспомнили, потому что основной-то мой пост был про то что кишки это про интерес, но при приеме на работу нужно смотреть в первую очередь на код и главное на его простоту и понятность. Все.
>>2280426 >Если так, то это же старое доброе EEE. Ты явно что-то пропустил. На винде теперь есть WSL! Слышишь! ПИНУС ТОЛЬКА ДЛЯ СЕРВЕРА! НИНУЖНА! КУПИ ШИНДУ! СЛЫШЬ! КУПИ!1
>>2280418 Код, его красоту и понятность не сможешь продемонстрировать ни ты ни они. Все эти репозитории в гитхабе - фуфло, никто не будет их смотреть ДО интервью. Максимум на собесе вы откроете проект чтобы попиздеть.
Я уже говорил, кишки спрашивают просто потому что это удобно для отсева кандидатов и занижения их самооценки.
Даже если ты привязан к дому - попробуй пройти собесы в любую контору. Даже ЕБАМ подойдёт на самом деле (тем более что они не против совместительства). Все этапы собесов идут удалённо. Документы можно высылать почтой/сканы. 60к за 5 лет опыта это ненормально, имей достоинство
>>2280512 >Все эти репозитории в гитхабе - фуфло, никто не будет их смотреть ДО интервью Тыскозал? На superjob и hh часто просят в сопроводительном письме отправить ссылочку на гит
>>2280584 яскозал, если мне дают ссылку на репо кандидата я максимум что сделаю - зайду посмотрю чо там за проекты висят и на встрече попрошу рассказать о чём-то
Здравствуйте, господа. Нужно начинать думать насчет дипломного проекта, а идей вообще нет. Из минимальных требований есть только базы данных ( ну и желательно подключить к проекту мобилки ). Хочу не очень сложное, но и не очень простое, НО интересное. Подскажите ?
>>2281232 Сделай движок для имиджборды, лол. С админкой и всем таким. Это довольно просто и если опыта нет - интересно. Если кажется слишком изи - систему управления умным домом. Придется подзаебаться довольно сильно. Это если у вас дипломы проктической направленности. Если у вас теоретическая - колоночная субд и имплементация в ней древовидных структур. Сложно, заебистои, интересно. Все отличники - пытаются и обсираются, ограничиваясь связным списокм.
Весь вечер шелесчу интернеты, нихуя не помогает. Мне нужно, чтобы после того, как ArrayQuestions отобразится два раза, код перестал выполняться, иначе возникает ошибка "индекс вышел за границы массива". Я пытался это сделать посредвством "если count пробовал и ArrayQuestions и timer вставлять больше 3, то return. Но код продолжает крутиться, ошибка возникает каждые две секунды если в 12 строчке указать другое значение, то каждое это значение, будто до части кода с if вообще не доходит. Помоги, добрый анон, умоляю!
>>2281343 > Сделай движок для имиджборды, лол. С админкой и всем таким. Это довольно просто и если опыта нет - интересно. Ебать у тебя ориентиры ДОВОЛЬНО ПРОСТО
>>2281867 А что не так-то, няша? За полгода-год, которые пишешь диплом - движок борды написать в неторопливом темпе - не проблема. Конечно, если не будешь ебланить это время, играть в дотку, да пивчанский посасывать, а потом, за неделю до сдачи не вспомнишь, что тебе нужна практическая часть, а ты не начинал.
>>2281889 За 2-3 месяца с ОПЫТОМ можно сделать в расслабленном режиме, только если без фронта. С нулевыми знаниями - ну это думать нужно сколько займет.
Ребят поясните пожалуйста. Я вот вообще стал учить си шарп ради xamarin, но вот заскочил в раздел сетевое программирование на метаните. Почитал про протоколы, сокеты, посмотрел примеры создания клиент серверных простецких приложений. И вроде как оно понятно все. Но потом я увидел что есть asp.net для создания веб приложений и что то в моей голове сломалось и уничтожилось. В моём отдалённом мирке в голове казалось, что сетевое == веб. Ведь в этих разделах мы по сути и создавали сервера и клиентов. А какое тогда отличие веб приложения от сетевого? Какие задачи решает asp.net? Я понимаю что возможно спросил хуйню, но т.к я далёк от веба и прочего хотел расставить для себя все точки
>>2282564 Сетевое - это нетворк аппликатион. Т.е. в общем вообще все что по сети можно передавать. Тот же IRC, например, если застал - это свой протокол, клиент и сервер для него - это сетевые приложения и сетевое программирование; торренты - про то же, ну а шире - modbus, dlms, всякие snmp, smtp, sntp т.д. Веб - это конкретно про HTTP, т.е. подмножество сетевых приложений, повязанных на этом ебучем хипер текст трансфер протокол. Ну по крайней мере я так это разделение вижу и судя по всему не только я. > Какие задачи решает asp.net? Ну, вот ты видел сокеты энти вот. Вот. Представь, что тебе каждый раз, когда нужно ебучую страничку отдать - нужно было бы свой сервер с сокетов начинать пилить, думать про то как ты будешь это говно парсить, роутить, как ты запилишь поддержку всех версий протоколов, еще и решать важную задачу: асинхронно, али ебануть каждому клиенту по потоку или вообще - по процессу. Допустим это ладно. Но ведь тебе нужно будет какую-то динамику реализовывать, отдавать странички, которые генерирует сервер, отдавать те же ебучие жсоны, xml и прочее. Короче, много говна. Так вот, ASP - в свое время решил эту проблему. Началось все с того, что в веб-страничку можно было впихнуть какое-нибудь говно, которое бы сервер мог обрабатьывать, ну и завертелось-закрутилось, сейчас, из-за SPA и огромного количества фронтоблядей - эта фишка уже не так нужна, но вот все остальное что там в контексте веб-сервера нагородили, с фильтрами, роутингом, мидлварями, контроллерами и прочим говном - очень даже удобно и ты свое веб-приложение можешь за 2,5 минуты сделать, просто подключил базу, сделал пару апишных контроллеров и сидишь дрочишь хуй чайки гоняешь, пока фронтобляди - пытаются красиво сделать и дергают за ручки.
>>2282618 О, спасибо за развёрнутый ответ. Вроде картина проясняется. То есть если бы я хотел допустим стать бэкендером, то я бы мог просто осваивать asp нет и не думать про сокеты всякие там?
>>2282627 Но только это. Про общее понимание сокетов и что происходит - некоторые галеры, где деды сидят - так спрашивают, потому знание - точно не лишним будет. Так что не думай, если изучил уже, что время зря проебал, если знаешь про наты, как там TCP выглядит и чем от UDP отличается, про то что пакеты могут недоходить на практике и прочее - это таки плюсик будет, как минимум покажешь, что интересуешься и все такое. Деды-то, иногда впадают в деменцию и хотят подрючить и показать на собесе, что они-то аксакалы и все такое, ну и если ты пойдешь в отрицалово, дескать, нахуй мне чтоб жсоны гонять - знать как там CRC рассчитывается - могут и попустить. Потому - если изучил нормально - можешь считать что как минимум для собеса полезно, на практике, если не на завод пойдешь, или свой веб-сервер писать не будешь - не пригатдиться.
Последние несколько лет фигачу на платформе Террасофта в парке компаний. Сейчас выбираю между внутренней разработкой (в финансовой компании, которую хорошо знаю), и разработкой у интегратора - но там технологические процессы интереснее и не только Террасофт. Вот думаю, что лучше. Склоняюсь к интегратору, там можно прокачаться, и может быть интереснее.
>>2282632 Лол шарп погнался за модными и молодежными ембедед фреймворками? Зачем? Чтобы получит 100500 вариантов решения одной задачи, чтобы путать новичков?
Аноны, никогда до этого к шарпу не притрагивался, только Си в универе изучал. Но тут наткнулся на вот такую статью https://codingvision.net/c-predict-random-number-generator-net Попробовал запустить пример, у меня совпадающих значений совсем нету. Это я что-то делаю не так, или алгоритм формирования случайного числа мог измениться к нашему времени?
>>2283709 Ну, лично мне на самом деле не оч нравится на самом деле. Система с контроллерами и сервисным слоем, как по мне, наиболее логична в контексте микросервисов. Но видимо был запрос какой-то, а может быть просто чтобы выебываться, дескать: смотрите, у нас тоже в пару строк можно.
>>2283737 >to underline the predictability of the random… or better said pseudo-random number generator Дальше не читал. Очередной вкатыш открывает людям истину, что псевдослучайные числа не случайны. А пацаны то и не знали.
>>2284060 Жаль, но если вкратце, там есть пример кода, где при наличии 55 рандомных чисел последовательности, можно предсказать следующие числа. Только у меня, например, это не работает, а в примере у него реально показывает следующие числа. Вот я и подумал, мб статья устаревшая и сейчас уже гпсч по другому принципу работает? Вот ещё такой же пример, но с целыми числами, и он тоже не работает, хотя все пишут что должен работать: https://stackoverflow.com/questions/39093911/can-random-next-be-predicted-from-its-outputs?answertab=oldest
>>2284800 Исходники уже смотрел, написать что-то своё не хватает скилла. А готовые решения, которых всего 2 удалось найти, не работают. Еслиб было понятно, какой тип гпсч используется, я бы мб и продвинулся дальше. Но в этом C# какое-то своё решение, в отличие от остальных языков. По сути, там всё должно быть по линейно конгруэнтному методу, но из исходников не понятно, что чему равно чтоб в формулу подставить.
>>2284910 в .net 6 они сменили алгоритм на xoshiro, раньше хз какой был, он менялся от версии к версии за исключением рандома с сидом, в котором используется для обратной совместимости самый хуёвый алгоритм 20 летней давности https://www.youtube.com/watch?v=mnlnhA0s0Iw
>>2285068 Ни в каком. Рихтер - душный и читается исключительно когда ты уже вкатился, чтобы джунов попускать, при этом еще и устарел. А Скит - говно без задач уровня метанита, растянутый на здоровенную книгу.
Какой асп.нет стоит учить для вката? Вижу вышла 6 версия, но перейдут на неё наверное все не скоро? А отличаются они с 5 не то, чтобы сильно но заметно
У меня есть форма multipart/form-data, у которой помимо прочего есть прикрепленный файл. На сервере соответственно есть вьюмодель с IFormFile Attachment. Когда вьюмодель придет в контроллер фйал уже будет полностью загружен на сервер?
>>2285363 1) Выучив 5-й будешь иметь больший выбор мест для вката. Плюс всегда сможешь доучить 6-й
2) Вкатыша не возьмут туда на новые проекты с новыми фреймворками. Туда предпочитают брать помидорок с опытом или хотя бы крепких середнячков. Поэтому учи 5-й спокойно и иди копать легаси.
>>2285606 ну а как иначе asp.net вынужден разобрать тело запроса чтобы создать все эти IFormFile для биндинга. Вот он и разбирает создавая IFormFile-ы, которые представляют собой Stream-ы, в которые впихнуто тело файла из мультипарт секции формы и если оно до 30кб, то только в памяти, иначе - на диск пишет в темп файл. (гм. это получается если грузить огроменные файл, то нельзя сделать как в похапэ move_uploaded_file, а именно придется копировать весь файл через CopyTo)
>>2286102 Года через 2. Но к тому времени уже 8-й выйдет. Но через 2 года тебя точно так же никто не подпустит к таким проектам. Максимум к тем которые будут переходить с 3.1 на 6 или позднее. Так что тебе все равно нужно будет старые знать.
стоит ли вкатываться в шарп? или попробовать другой стэк (не хочу фронт)? насколько в шарпе толерантное коммьюнити? в какие вообще компании можно устроиться (бэкенд)? не погонят ли с работы, когда условно начну приходить в чулочках и менять паспорт?
А где информация подаётся лучше? На метаните есть все по си шарпу из основного и без воды.
Любой видео курс для обучения это вода. Документация от Майкрософт имеет смысл только если знаешь инглишь, потому что перевод в русскоязычном варианте как будто застрял в 2000ых.
Как итог учить си шарп и технологии либо по книгам всяких олдскульных мужиков которые ещё более душные либо метанит
>>2286319 С чего ей столько весить. В том же блазоре она не 60. А после shrink столько и остается, хелло-ворлд же. другое дело - старт этого всего на слабых девайсах.
>>2286336 В геймдев вкатывайся. Там таких половина. Ну и да, в РФ геймдев это 99% юнити. Главное не приставай к коллегам и все будет норм. На завод - сразу ебнут. В тырпрайз, как только в чулочках начнешь ходить. Геймдев - как раз рассадник таких вот.
Антоны, поясните, пожалуйста за различия между Web App и Web Api app.
Какой из них брать, если я, допустим, хочу сделать клон двача?
Насколько я понял Web Api приложение берет данные из базы данных и отдает в виде джейсона и ты можешь написать на чем угодно приложение, которое отображает эти данные, верно же?
>>2287121 Это просто шаблончики проектов для asp.net (core). По факту - у тебя есть класс Controller и ControllerBase. Тот что просто контроллер - типа задуман что ты будешь отдавать какие-нибудь разорпейджи и прочее бесполезное говно. Контроллер бейс - допилили до состояния, что ты можешь удобно и без лишних телодвижений срать жсонами. Ну и вместе - там механизм мидлварей и фильтров, который позволяют тебе не ебаться с придумыванием того как авторизацией заниматься, проверять всякую хуйню и т.д.
А относительно вопроса. Ничем кроме темплейта сатртового оно не отличается. Просто в случае WebApp у тебя будет структура проекта со всякими www, pages и прочей бесполезной нормальному бекендеру хуетой, при этом ты вполне дальше можешь забить хуй и пилить на чем хочешь проект, просто это будет то что тебе предложат изначально. С вебапи, если ты ебанат - ты так же без проблем это все прикрутить можешь, делается одной кнопкой, просто изначально у тебя будет только класс Program, Startup(в версиях с минимал апи - выпилили) и папка с контроллерами, дальше - сам что надо делай как тебе нужно.
>>2286520 Для чтения офф документации тебе нужны довольно базовые знания инглиша, скачай себе расширение для перевода незнакомых слов, через месяц мучений на офф доке сможешь и без него большинство инфы понимать. И это тебе точно пригодится в будущем.
Когда уже гейтс ответит за эту хуйню? Почему простейшие действия в примитивнешем графическом редакторе так грузит проц? Если также двигать большой прямоугольник - там ваще под 80%
>>2247630 Делаешь класс ApplicationContextServiceProvider Делаешь класс ApplicationContextServiceProviderBootstrapper У класса ApplicationContextServiceProvider два метода Attach<T>(T service) и AttachFactory<T>(Func<ApplicationContext, T> serviceFactoty) и еще два метода GetService<T>() и GetServiceFactory<T>()
Ну а дальше. Всем твоим классам, которым нужна зависимость прокидываешься ApplicationContextServiceProvider как тебе удобно. И дергаешь. В бутстраппере - заполняешь нужными тебе зависимостями. Тестировать - изи бризи. Реализовать - две минуты времени.
>>2287553 Ну, я простое решение предложить хотел. Так-то можно конечно по хардкору: делаем класс ServiceDescriptor - класс который описывает зависимость, что за тип, какой интерфейс, время жизни ServiceCollection - класс в котором эти вот дескрипторы хранятся(контейнер) ServiceProvider - класс для получение нужной зависимости уже в виде конкретного инстанса метод Get<T>() ServiceScope - скоуп для контейнера, на случай если мы хотим управлять временем жизни. Можно тут прикрутить пул и переиспользовать инстансы, если нам оно надо, так что можно сделать еще ServicePool ServiceScopeFactory - фабрика для скоупов, как-то ж скоупы нужно создавать ServiceBuilder - класс для того чтобы в рамках времени жизни - создавать нужные нам инстансы и прокидывать их в конструктор пользуясь рефлексией ApplicationHost - наш хост который будет хранить в себе конфиг приложения, коллекцию зарегистрированных сервисов и имеет методы Start, Stop. Таким образом - в ServiceBuilder - мы будем строить граф объектов которые нужно запровайдить, создавать инстансы и прокидывать туда, куда нужно. Всякие синглтоны - делаем ленивыми, чтобы экономить память. Что там дальше? А, ну да, в ApplicationHost - главный поток ищет то что мы будем считать главными приложениями, допустим мы выделим интерфейс IRunable с методом RunAsync, запускает все это дело и потом ждет, пока они все не завершатся. Как-то так.
Такое нормально запилить уже посложнее будет и лично для себя я бы пользовался ApplicationContextServiceProvider
>>2287599 Суть не в том насколько сложно организован тот, кто собирает зависимости - ему нечего делать в конечных классах подсовывая себя вместо нужных зависимостей. Исключение - фабрики.
Что можете сказать про написание софта на си шарп? Сейчас многие студии все ещё ищут людей со знанием wpf, иногда даже винформс можно найти, так же непонятно что происходит с uwp. А теперь с новой версии студии появляется ещё и maui который обещает быть супер кросплатформенным и вообще крутым и классным. Стоит ли в 2022 году идти по направлению написанию софта и если да то какую технологию смотреть? Или же си шарп это про веб и геймдев?
>>2287711 разрабы говорят, что не хотят поддерживать линукс, что противоречит "обещает быть супер кросплатформенным по словам разрабов". Ограниченно кросплатформенным разве что. К тому же нужно иметь мак, чтобы кодить под мак
В шарпе нет нормального кроссплатформенного гуи. Либо мощно, но только винда (WPF), либо неполнокросс и слабенько по фичам (MAUI), либо кросс, но своеобразно и глючно (авалония), либо экзотика вида Uno, который вообще хз как работает (как мауи что ли?)
Подскажите пожалуйста как грамотно выполнить что я хочу, я мучаюсь уже больше недели, никак не получается. Есть JSON документ, внутри много каких данных, но меня интересует массив словарей formats И я хочу написать с помощью LINQ разные запросы которые находят данные по определённым параметрам, например я хочу получить элемент, у которого format_note равен 1080p и vcodec avc1.4d4015. Ещё бы понять как сделать без кучи if условие чтобы если не нашло 1080, возвращало 720 и т.д. Сколько я пытался накручивать разные команды по туториалам получал в ответ только новые непонятные ошибки. Можно было бы сделать тоже самое с помощью циклов, но это быстро приведёт к путанице, а если ещё и нужно несколько параметров. Может стоит взять официальную json библиотеку? Смысл программы в том, чтобы посчитать сколько потребуется места чтобы скачать множество видео, и показать разные варианты Ссылка на потуги и json https://dropmefiles.com/mJ4pT
>>2287755 1. Вставляешь всой Json вот сюда (https://json2csharp.com/), конвертишь JSON to C# 2. Копируешь к себе в код, приводишь к C# code style (юзай атрибут [JsonProperty("name")] 3. Делаешь linq-запрос к свойству List<Format> formats:
Немного глянул жсон, в Where можно использовать x.format_note.Contains(1080") || x.format_note.Contains("720") т.к там есть форматы 1080p60.. значит есть и другие. Хотя тут сам смотри, LINQ позволяет дохуя чего делать
>>2287731 >К тому же нужно иметь мак, чтобы кодить под мак Кодить под мак ты можешь на любой залупе. А вот, чтобы что-то собрать и выпустить под мак, да нужен мак. Но, сюрприз - так будет с любым языком, а не только с шарпом.
>>2287731 >В шарпе нет нормального кроссплатформенного гуи. А где он есть?
>>2287629 Делаешь себе модельку с твоего жсона(класс с нужными тебе свойствами). Десериализуешь строку с жсоном в свою модельку. Затем линку var result = myData.Where(x=>x.format_note == "1080p" && x.vcodec == "avc1.4d4015" || x.format_note == "720p") //остальная логика
>>2287843 Сишарп типизированный язык. Если тебе лень модель делать, можешь использовать десериализацию к словарю в виде Dictionary<string,string> и тогда ключем - будет имя свойства, значением - то что там лежит. Проблема такого подхода - с вложенными объектами, которые тебе так же придется десерилазовать и держать в голове, что вот эту хуету - нужно.
>>2288005 Реализуй Dispose pattern полностью, добавь финализатор класса и напиши GC.SuppressFinalize(this) чтобы GC не сожрал твой объет случайно так как ты сам хочешь управлять временем жизни.
Я прошел 3хчасовой бесплатный курс по Azure Fundamentals на ютабе. Я написал по этому курсу конспект на 46 страниц, запилил кучу скриншотов и попробовал это все на практике.
скачал тестовые вопросы и ответил НЕ ПРАВИЛЬНО 7/20 раз.
БЛЯТЬ! ВСЕ ЭТИ ВОПРОСЫ НЕ РАССМАТРИВАЛИСЬ В ТОМ КУРСЕ!!!
ПОЧЕМУ БЛЯТЬ?! Какого хуя? Как подготовиться и здать наконец без трахотни
- AZ-900 - чисто поорать, чтоб быть уверенным в своих силах - AZ-204 - уже по делу - эта хуйня нужна для устройства на работу
Подскажите, каким образом написать про проекты в резюме? Ну не прям они там такие крутые, но я же не профессионал. Отдел кадров наверное особо не поймет что я там понаписал, а передаст главному, который уже и поржёт с этого. Написал приложение показывающее пустое окно на WPF.
>>2288717 Всем пох, но я уже 2 месяц не могу вкатиться. Причём на интервью вроде нормально отвечаю. Нормальные вопросы по типу сколько поколений у gc ни разу не спрашивали, а всякую херню постоянно. Даже на стажёра за 30 тысяч отклонили, это я такой тупой или просто не везёт?
>задротить никому нахуй не нужные данные За года работы я профилирование видел лишь в экзамене. Однако позднее, после того как его зарешал, я начал применять эти знания. Получилось оч круто.
Пиздец, первое техинтервью на английском, и сразу же реалтайм кодинг, тоже первый в моей карьере. Еще и пан-сеньор меня поунижал немного. Говорит еще чо у меня вижуал студио на русском. Тебя ебет пёс, а?
>>2289653 >Web сервис долже нпринимать post запрос Ок, на такое только миддл способен >Уметь работать с почтой Ок, на такое только миддл способен >Добавлять в бд Ок, на такое только миддл способен >Web сервис должен принимать get запрос Ок, на такое только миддл способен
А что в твоем понимании джуниор в асп? Умеющий писать штмл? HTTP запросы и работа с бд это база, это основа любого бэкенд разработчика.
Как стать уверенным джуном? Ну посмотрел кучу туториалов на Ютубе. Повторил как в видео. Написал парочку проектов. А в голове чувствуется помойка из ненужных знаний. И собеседованиях отказывают.
>>2290336 >Опыта работы блять не хватает? Да. Представь мир розовых поней где обучение где-нибудь в околовузике не пережиток советского прошлого где учат паскаль и бейсик, а нормальное упругое обучение хоть как-то нацеленное на рынок. При нормальном обучении за 3..4 года ты успеешь пройти как минимум 2...3 'производственных' практики на которых заимеешь нормальный опыт на боевых или около проектах, сделаешь нормальные курсачи и т.д. Т.е. как раз и заработаешь тот самый опыт который нужен работодателю. И когда ты получишь диплом, и пойдешь на работу, то у тебя уже будет нормальный опыт и ты сможешь со старта уже приносить пользу. Вот примерно этого и ждут от джуна. Никому не нужен стажер не имеющий опыта. Т.к. по сути нанимая тебя работодатель теряет 1...2 года, пока ты наберешь ту самую практику и знания, которые должен был набрать на обучении. Т.е. по факту работодателю придется взять на себя функции вуза и обучать студента, прежде чем он начнет приносить пользу.
Мне вот только что интересно. Вот я бы сделал как деды и майки показывают, т.е. в контроллере весь код хуйнул. Меня бы взяли из расчета что это же джун? А если бы я наоборот - вынес бы в сервис-леер, меня бы посчитали мудаком, что лишние абстракции для такой простой задачи делает? А если бы я взял тот же HTTPListener, вместо того чтобы контроллеры и это вот использовать? Вот что из этого со стороны потенциального работодателя - хуже и на каком уровне?
>>2290323 >И собеседованиях отказывают Просто берешь и читаешь Рихтера, каждая вторая галера вопросы задает именно по нему. Да и не галера тоже.
Ну и плюс минимальный набор ASP, EF, SQL, LINQ.
Я как-то задрочил Рихтера, галера-бодишоп отправила на собеседование к заказчику я там раскидал все вопросы, а когда пришло время увольняться из галеры, местный техлид предложил мне позицию сеньера, хотя у меня опыта было полтора года. Но я тогда не пошел кним, ибо у них ставка сеньера была 190к, при средней по рынку 300к.
>>2290323 2 книги именно в таком порядке: - Джон Скит: Jon Skeet - C# in Depth (4th) - 2019 - Ben Watson - Writing High Performance .NET Code - 2014
Прям делаешь по ним конспекты и учишь всё что там написано. Похуй, будет оно применяться или нет. - кастомные Task классы - state machine в yield return с ексепшенами - асинхронные IDisposable - обработка исключений в многопоточных приложениях
Да, ты этого нихуя не найдешь в живых проектах, зато сможешь смотреть на некоторых "сеньеров" как на говно.
>>2290391 Ну кто виноват что образование в рашке не работает? Пускай конденсируют это пониженной зарплатой на первое время. >>2290413 На интервью мне не задают настолько сложных вопросов чтоб я прям не знал что ответить, а хотя я знаю. То что в списках "это точно спросят на интервью" даже ни разу не спрашивали про типы по значению и ссылке, про сборщик мусора, про виртуальную машину и т.д. >>2290459 И в чём смысл Джуна который знает какие-то сложные штуки про которые его никогда не спросят и которые не пригодятся при его уровне развития?
Добрый день. Чуть меньше месяца назад я начал изучать c# и пока изучаю, чисто, синтаксис языка. Хотелось бы узнать, у более опытных анонов, насколько часто желательно повторять весь изученный матерьял? И нужно ли, во время повторения, пробегаться по теории или достаточно будет сделать парочку задач по теме?
>>2290502 Языковые конструкции учатся очень быстро поскольку используются всегда и везде, нет смысла их повторять и задрачивать, они сами задрочатся по мере изучения, но конечно нельзя пропускать мимо ушей практику. Усвоил циклы - пошел их практиковать и экспериментировать.. и так далее по всем основам. Если ты уже умеешь юзать циклы условия итд, то переходи к более сложным вещам.
>>2290561 Ну Троелсен к примеру, но на русике очень старое издание Параллельно алгоритмы и структуры данных поверхностно подрочить Потом делаешь простой интерфейс к бд на каком нибудь впф, или аспе
>>2290608 > Потом делаешь простой интерфейс к бд на каком нибудь впф, или аспе Ну на впф я такое могу сделать. Могу называться джуном значит? Как это точно определить, мне отказываются из-за того, не везёт или чего-то не хватает? Пробовал собеседование уже около 5 раз
>>2290651 Ну видимо ты реализуешь его по каким-то старым паттернам, или вообще без паттернов а тяп ляп Глянь пример простейшего МввМ приложения на впф, и сделай что-нибудь подобное Какой нибудь парсер погоды хз, не важно Главное показать что ты понимаешь концепцию модель вьюха вьюмодель, или на аспе мвс, или апи Круто если еще и тестами покроешь Ef тоже плюсом будет Ну и на гите чтоб это все было Ждут обычно чего-то такого
>>2290471 >И в чём смысл Джуна который знает какие-то сложные штуки про которые его никогда не спросят и которые не пригодятся при его уровне развития? Ну это как сказать мол Ерохин и Сычов одинаково угловато вынлядят в костюмах. Вот только на Ерохе костюм сидит, т.к. тот на турнички ходит по утрам, а Сычов пинус в доте сосет дрочит.
Короче в работе это отражается в том, какой код пишет в итоге.
посоветуйте нормальный, адекватный сборник задач по с#, где нету всякой хуйни, типо "переведи там двоичный код в биты-хебиты, бла бла" или "сделай задачу на тригометричискую-хуемитрическую функцию" и т.п.
>>2290323 Я сейчас тебе на самом деле дам годный совет. Делаешь мелкий проект через TDD. Проект выбираешь не на похуй, чтобы сделать, а что-то что тебе самому хотелось бы автоматизировать, чтобы ты понимал как этим пользоваться будешь. Даже ебучая поваренная книга совмещенная с ведением учета того что у тебя в холодильнике, если это то что тебе нужно - будет полезнее в плане экспы, чем прога, которую ты вроде как сделал, а не знаешь нахуя и зачем. Потому что по факту, охуенный код, который не решает задачи бизнеса - нахуй никому не нужен, ты сам подумай, с хуя столько вони про легаси и хуевый код дедов, но при этом он - крутится на серверах и им пользуются. А если у тебя будет и охуенный код(полученный через TDD) и еще он что-то полезное делает, то ты в глазах хуев что тебя нанимают - потенциальный менеджер-хуенеджер или тимлид. Берешь докер и учишь пайплайн(там просто, вечер посидеть поразбираться). Запихиваешь свой проект в докер. Все, ты уверенный джун.
Почему именно так? Потому что через TDD ты привыкаешь писать код так, чтобы его было удобно тестировать, а значит выделять интерфейсы удобные для использования. Так вот. Пописав вот так - твой код будет выделяться на фоне кучи джунов и ты как раз будешь тем самым уверенным джуном.
Книги - хуйня. Но если ты решишь, что тебе таки нужны, рихтера сразу нахуй.
Оно и интереснее и больше всяких штук затрагивает, в отличии от литкода, гда даже хард задачки - это конец первого курса вуза. Вот пример что я скинул - это уже как минимум - конец второго. По крайней мере у нас мы такое на втором делали.
>>2291073 Извиняй, просто у нас, видимо, вышло недопонимание. Я, первоначально, когда увидел твой пост, зашел на Кодварс и увидел пик, после этого я решил, что ты просто меня решил обидеть. Но думаю я был не прав, ведь сперва стоит попробовать и только потом уже делать выводы.
Посмотрел видос как на твиче накручивают миллионы зрителей, и там попалась дллка которая показывает что это всё написано на c#. Каким образом вообще пишутся приложения которые могут создавать такое огромное количество соединений? Что там за такая крутая архитектура? Ни одного компьютера не хватит чтобы столько соединений открыть с прокси без продуманной структуры. Каким образом это вообще пишется?
ты открыл порносайт, к тебе заехал троян, он загрузил вредоносную программу, твой комп стал ботинком, ботинг управляется с какого-нить сервака или прокси
сервер: всем смотреть какое-то говно на твиче ботинки: открыть соединение твич: ого сколько зрителей!...
>>2290471 >Ну кто виноват что образование в рашке не работает? Пускай конденсируют это пониженной зарплатой на первое время. Ну кабаны по факту это и делают. Если вкатуну удается устроиться куда-нибудь без опыта, то только за еду. Вот когда он год-полтора попердолится и оботрется, тогда сможет на что-то претендовать. По сути 3-х летний студент с нормальной(!) практикой по уровню равен вкатышу после полуторагодовых курсов и тех же полутора лет работы за подачки. Остальное зависит уже от личных качеств. У кого лучше хардскилы, тот берет умением, у кого лучше софт скилы, тот языком дорогу прокладывает.
>>2290471 >И в чём смысл Джуна который знает какие-то сложные штуки про которые его никогда не спросят и которые не пригодятся при его уровне развития? Показывает кругозор и уровень. Если кандидат способен интересоваться сложными штуками да еще и понимать их, то с простыми у него точно проблем быть не должно.
Как работать с базой данных, блядь? Надо создать какой-то cs-файл, чтобы там подключиться к базе, и прописать там методы всяке ебучие, и его потом подключать, верно? Как называется эта хуйня? Есть ли исходники с чем-то подобным? Может создать? Только я ебу как правильно эту хуету назвать.
Добавил новую view и viewmodel в программу, как делал сотни раз до этого и ВНЕЗАПНО началась какая-то дичайшая утечка памяти. Комменчу contentcontrol до viewmodel и она исчезает. Я уже всё проверил что только можно, пробовал и целиком комментить код viewmodel с view, чтобы там вообще нихуя не оставалось - всё равно утечка. Пробовал и onewaytosource ставить, вместо twoway - нихуя. В чём вообще может быть проблема?
>>2291380 Кода там порядочно во вьюхе и вьюмодели, но, как я говорил, я его пробовал убирать целиком, проблема осталась. <ContentControl Grid.Row="0" Grid.Column="0" Content="{Binding ObjToolBar,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> Больше даже не знаю, что показать. Показывать просто нечего
>>2291398 Если уж совсем не смогу решить. Но всё же, как проблема может быть c UI связана? Я этот contentcontrol положил в TabItem TabControl'а, в этом табайтеме у меня уже 2 других контенконтрола лежит и всё с ними нормально. Я эту операцию проделывал уже ёбаную кучу раз и в этот раз я всё сделал как обычно и уже всё что можно перепроверил, просто хуею
>>2291383 Короче, у меня был Grid.ColumnSpan у ContentControl, я его убрал и память перестала утекать. Почему - даже примерно не ебу, просто абсурд, нахуй
>>2291157 > Каким образом вообще пишутся приложения которые могут создавать такое огромное количество соединений? Берешь и пишешь > Ни одного компьютера не хватит чтобы столько соединений открыть с прокси без продуманной структуры С хуя? Вот буквально на работе нужно было перформанс моего 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 // Приложение собираю тута, там создаем окошко и погнали
>>2291378 Смотри что за объекты выделяются. Удобнее конечно с доттрейсом, но и студийный профайлер пойдет. Так вот. После того как увидел что - ищи где конкретно.
Ребята, как совладать с datepicker'ом в разор страницах? Мне нужно вывести чисто дату, сейчас на html странице у меня такое: @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?
>>2291363 Ну, что-то типа того. Что надо делать, чтобы работать с базой? Подключиться к ней, открыть соединение с ней, и дальше читать SQL-запросы из ввода, исполнять их и возвращать результат, в виде таблиц, значений всяких, с разными типами, и так далее и тому подобное. Добавлять данные туда, вставлять строчки, обновлять их, и всякое такое. Делать CRUD всякий с базой. Вот, что-то подобное хочу написать, и залить на гибхаб. Токо не знаю как назвать эту парашу ебучую.
>>2292653 без них это как? написать свой MVVM фреймворк? Так для его написания нужен опыт работы с ними. А без MVVM это ж вам не винформсы = стрелять себе в ноги
>>2292558 Зачем. Все равно первые 500 постов набегают разные расто- джава- делфи- и прочие шизики и засирают тред до бамплимита. Зато потом можно спокойно общаться один хуй куда он с тематики денется.
>>2292697 Даже для очень простых приложений нужен фреймворк? Почему его из коробки тогда нет? >>2292558 Да перекачу, в c++ сидели до 2000 постов почти и нормально, тоже я перекатывал
>>2292797 >Даже для очень простых приложений нужен фреймворк? Ну никто не запрещает кодить все как будто с винформс работаешь, но это мазохизм. Даже для простых приложений.
>>2292851 хз. обычно выбирают же по обратному принципу "какие возможности". Я начинал с MVVM Foundation. Почитал их код и вникнув в example app отформатировал мозг на понимание MVVM. А дальше...да все фреймворки как братья, где в каждом что-то по своему сделано.
Для меня же все они обладают фатальным недостатком - у них weak модель управления жизнью всего
>>2292851 хотя у майков какой то странный фреймворк. дока так все по верхам как то. Непонятно как навигация, как вьюмодели создавать, как и кто меняет IsActive для вьюмоделей (даже если это UWP, то кто меняет?), не все есть, но есть и не раскрыто лишнее вида AsyncRelayCommand и т.д. Зато раздел по перфомансу, причем на уровне будто это хайлоад сервер код какой то пишем.
>>2292535 Уже написал. Это не админка, а просто консольная хуйня, в одном cs-файле, принимает sql-запрос через Console.ReadLine(), выводит данные и пишет их в лог. Есть также пара методов для возврата значений разных типов, datarow, datatable там, блобы, вот это вот всё. Под каким именем сранину вхуярить на гитхаб - даже не знаю. Как это говно назвать?
Насчет админки, я вижу в OpenServer есть некий SQLite Менеджер, доступный по URL. Но это не совсем то, что у меня.
Выбор имени - сложное дело. Искать говорящее про функционал имя и свободное, и не выглядело банальным типа SqlRequesterLite...бяка А постороннее... А какое?
Поэтому пупса. Спросят тебя "а что это значит". А ты скажешь "анон подсказал"
Смотрел документацию по СигналР, и насколько я понял метод OnDisconnectedAsync может принимать налл, отлично стильно соверменно, но я не понимаю как это обрабатывать? Что бы я не делал мне визуал студио все время говорит что я делаю это не правильно
Как у настоящих матерых программистов принято писать код в таком случае?
>>2293762 В смысле с дот нет 5 на дот нет 6? а там будет работать? Но на самом деле не важно, я не могу вот так взять и просто сменить фремворк, у меня все поломается
Значит есть aspnet core сайтец. Есть у него слой работы с бд (б-гомерзкий еф), есть апликуха(контроллеры и вот эта вся хттп параша) и между ними лежит слой сервисов. Среди прочего прочих сервисов методов есть такие, которые просто отдают сущность из бд. Т.е. контроллер просит у сервиса, например, страну по айди, сервис тащит из бд CountryEntity, конвертит это в CountryDTO и отдает контроллеру. Таких запросов много, а стран мало и, очевидно, надо бы это закешировать. Вопрос: какой слой должен работать с кэшем?
Здарова, интересует такой вопрос: как лучше соединить код на фортране с шарпом. У моего научника есть достаточно старая программа написанная на фортране, он предложил написать для неё более новый интерфейс на шарпе. До этого я писал только простенькие проги на питоне, ну и синтаксис Си знаю немного. Есть предложения с чего лучше начать? Курить матчасть из шапки?
За три года работы я уже почти забыл основы, по типу как устроена хешмапа, алгоритмы все эти и прочую залупистику. Т.е. я помню названия, я помню как погуглить, что какой сложностью обладает, когда то, когда это применять. Но вот как оно написано - реально уже не помню. Стоит ли освежить эти знания, если я собираюсь походить по собесам? Или теперь таки буду про проекты спаршивать и это вот? Слышал раньше, что после того как есть реальный опыт - начинают про него спрашивать, но чет сам думаю, что чтобы быть спокойным - следует таки поелзать-посмотреть на кишки.
>>2294490 >Стоит ли освежить эти знания, если я собираюсь походить по собесам? Лишним не будет. Иногда спрашивают. Но в основном таким джавистов ебут. У шарпистов обычно максимум спрашивают как List под капотом устроен.
>>2293133 >Назови ее пупса >Поэтому пупса. Спросят тебя "а что это значит". А ты скажешь "анон подсказал" Заебись название. Мне нрав. PUPSA - Program Usage Providing SQLite3 Access. Тут говнокод, короче: https://github.com/username1565/PUPSA Можете оптимизировать, дописать, потестить, а то и вовсе переписать. Предложения/пожелания - в issues.
>>2293926 >да ни в какой. поставь редиску между фронтом и бекендом и все Ну неее. Данные из Country используются для валидации и определения дальнейших действий, т.е. юзеру могут лететь разные ответы
>>2292813 С хера ли мазохизм? Винформы - топ за свои деньги. Прост как молоток. Понятен даже дебилу. Куча готовых компонентов, спиздил вопхнул себе и в ус не дуешь. Пилить что-то на винформах, не обмазываясь фреймворками за пределами самого .net - легче легкого. Фатальный недостаток форм это то что поддерживать и кастомизировать это дело чуть сложнее.
>>2295388 А причем тут вообще винформсы, если речь идет о WPF
>не обмазываясь фреймворками за пределами самого .net - легче легкого Ага, плодя портянки в code-behind ибо это дефолтный путь для винформс. Если захочется чистоты, то прикручиваем MVP
Но в WPF изначально сделана крутая система биндингов и писать в стиле винформс (лезем к контролам напрямую, да все в code-behind) - мазохизм.
Я вас категорически приветствую. Есть ли смысл искать стажировки в мск, будучи студентом, или лучше смотреть в сторону джуновских вакансий? Насколько вообще глубоко опрашивают на собесах? В портфолио 1.5 проекта на винформах с ef-ом, в основном курсач вузовский
Какое же это говно ваш аспшлейфговнакор, отвратная документация мсдн с кучей ненужных деталей и опечаток, уххххх ыыыы new Random().NextIndus() скозал создавать дто для каждой ебучий хуйни, чтоб защититься от оверпостинга, ух ух названия типов настолько длинные что даже в сайдбар не влезают на их говносайте, мы же блять любим печатать, private readonly URETRAServiceProviderManagerContext ___________service1 private readonly GOVNOEBANOEApiControllerTvoeuMamiContextAttribute _services2
не забудь добавить ридонли или вижла будет срать желтым поносом, конечно, защита от дурака в этом классном языке ведь кто-то же догадается переопределить эти поля
> dotnet watch run >[info] Microsoft.ShlyapuSnimau.Kogda.Vi.Pochinite.Cveta.V.Etom.Ebuchem.Govne
Пилю петпроект для нужд текущей инженерной работы. Есть вопрос по организации кода. Вот есть файлы с исходным кодом программы, которая вычисляет что-то полезное. Есть ресурсы. Например экселевская табличка и она же, конвертированная в формат csv. Иногда картинки, которые отобразятся на WinForm'е. Есть файлы с исходным кодом тестов программы на корректность работы. Есть файлы с исходным кодом тестов алгоритмов на производительность (где проверяется, что сравнительная скорость работы соответствует ожиданиям, и нет где-то внезапной просадки скорости вычислений в 10-100 раз). Есть файлы с исходным кодом простых примеров использования кода программы. Обычно я вычислительную часть делаю отдельным проектом и отдельным проектом делаю GUI + чтение и сохранение исходных данных. И вот есть пример кода, типа Getting started, для кода вычислительной части. Есть файлы с документацией. Сейчас в файлах MS Word. Там текст с перекрестными ссылками, оглавлением, формулами, набранными в редакторе формул, картинками (фотки/сканы листочков с формулами и схемами или просто всякие другие картинки). Так же в документацию входят файлы Excel, где какие-то промежуточные вычисления для наглядности реализованы формулами Excel, чтобы легко всё увидеть, как считается, и что получается. Вопрос. Как всё это грамотно хранить по папочкам на диске, по проектам и решению/решениям? Как называть? Есть какие-то лучшие практики? Чтобы легко было ориентироваться, и человеку со стороны было понятно, чтобы ничего не терялось и сразу находилось там где ожидаешь. Чтобы минимально плодить сущности.
Я вроде тупорылый гуманитарий, но Шарп это тот яп, который освоил для автоматизации своих рутинных задач (пусть и без кроссплатформы) и мне чуть ли не физически приятно писать на нём - я, блять, такой кайф ловлю, когда что-то большое заканчиваю
Пробовал освоить все эти "дружелюбные к новичкам и тупым" жаваскрипт и пайтон - меня почему-то смущает динамическая типизация, хотя в PHP меня всё устраивал и опять же мне чуть ли не физически неприятно с ними работать, лол.
Как так получается - для меня шарп оказался наиболее интуитивно понятным или просто повезло, что мне хороший ментор попался с пачкой литературы, разделённой по уровням?
>>2295767 Двачаю, шарп мой первый ЯП и надеюсь последний, уже не представляю свою жизнь без LINQ и другого сахара. Тоже смотрел пайтон чтобы помогать мл. брату готовиться к ЕГЭ и это пиздец, насколько же конченый синтаксис и типизация. Жс еще хоть Си-подобный.
Сап шарпач помогай. У Васи есть X белых и Y чёрных квадратных клеток паркета. Он хочет составить квадрат наибольшего размера. Любые две соседние по стороне клетки этого квадрата должны иметь разные цвета. Угловые клетки квадрата могут иметь какой угодно цвет. При изготовлении квадрата не обязательно использовать все имеющиеся клетки.
Какой самый большой квадратный паркет сможет составить Вася?
Например, если X = 3 и Y = 3, то вывод 4 (поле 3х3, наибольшее - 4)
>>2295767 Тричую. До шарпа перепробовал несколько языков, но остановился именно на нём, сразу понял, что это моё. Просто эстетически даже импонирует. Даже логотип приятного цвета, сине-фиолетовый, не то что кофеек жабовский. Даже naming conventions — всё с большой буквы, методы, свойства, файлы, папки. Охота распрямить спину, когда пишешь на шарпе.
>>2295779 перебробовал с 10+ языков и у меня 3 лидера питон - нормальный там синтаксис и сахар из коробки (учитывая на каких простых концепциях оно все построено), самая быстрая скорость кодирования "думаю о проблеме, а не о том "как б... в этом языке ее выразить". Ну и батарейки конечно. для прототипов и быстрых вещей.
шарп - в разы медленнее кодить чем на питоне (больше нужно думать о языке, а не только о задаче), но по возможностям выражения такой же мощный, хотя более многословный, нормальные потоки и быстрее. меньше либ. Для фундаментальных вещей.
котлин - очень выразительный и лаконичный язык. приятно на нем "выражаться затейливо", а уж сила этой выразительности вовсю проявляется в jetpack compose (описание GUI под андроид) - шарп бы там выглядел куда более коряво (пример корявости - тот же флютер). У меня от него синтаксический экстаз...ну пока дело не касается "а вот ушки жавы торчат хаха".
>>2295530 >В портфолио 1.5 проекта на винформах В современном мире тем у кого есть деньги на стажеров, винформы нахрен не уперлись, а у тех кому уперлись денег на стажеров нет. Учи asp.net и прочий веб. Ну или хотя бы WPF если именно в десктоп хочешь, с ним хоть что-то еще поймать можно.
>>2295933 >у кого есть деньги на стажеров, винформы нахрен не уперлись Тут скорее дело в том, что проекты на формах намного более стабильны. Ни о каком динамично развивающемся проекте на винформах в 2к22 и речи быть не может. Это браузерный скот готов терпеть любые унижения новыми интерфейсами и редизайнами, придумываемыми каждые полгода по инициативам менеджеров, которых без бурной деятельности без бонусов оставят. Коммерческие проекты на формах начаты обычно очень давно, может быть и 15 и 20 лет назад, используют их консервативные корпоративные клиенты. На таких проектах просто никогда не возникнет нужда в срочных, внезапных, глобальных изменениях, которые можно было бы закидывать стажерским мясом. Да и джуны тут не очень нужны. Фичи медленно и планомерно пилят понурые скуфы 40+. К молодому, упругому и бесполезному отношение будет не очень.
Хм. Хм. Как сделать логгер быстрее, при этом: 1. Не использовать буффиризацию стрима(приводит к тому что флашится он когда буффер заполнен, а это приводит к тому, что иногда сообщение лога не полностью выводится, пока буффер вновь не заполнится) 2. Не захватывая файл все время(нужно смотреть что он достиг лимита на размер лога и удалять старый, при захвате файла с этим проблемы)
Да, я знаю что как-бы да, велосипед и все такое. Но такое дело. ПО что пишется - пишется под определенный протокол, в протоколе заложены свои логи(можно считать скоупами в привычном смысле) и свои уровни(их там 15, и обычным адаптером придется сверху уродливую конструкцию мутить для того чтобы парсить лог при запросе последних данных из него, а чтобы быстро было - проще хуйнуть sqlite базу, в которой эти уровни будут отдельной табличкой, на а экономить место можно храня только уникальные записи эвентов, таким образом - сама таблица с логами выглядит примерно как: id, dateTime, eventId, level, scope) Так вот. Если я включаю уровень trace в своем логере, а в приложении идет активная хуйня, то логгер без буффиризации и захвата файла - начинает работать пиздецки медленно, задержка может достигать нескольких минут, что мне кажется неоч. Но как без этого сделать быстрее - я не знаю.
>>2296309 >что иногда сообщение лога не полностью выводится, пока буффер вновь не заполнится) буфер сообщений переполнился - запись с флушем. хз где тут не полная запись >при захвате файла с этим проблемы ну так расхвати и сделай ротацию. У тебя там многопоточный доступ к файлу что ли.
>>2295767 Ну а я бы поспорил. Во-первых, плюсы - пизже в плане возможностей. Когда берешь плюсы - прямо чувствуешь себя программистом настоящим. У тебя полный контроль над всем. Хочешь вывести в консольку анимешную картинку - да изи, никаких проблем, взял хендлер окна, из памяти загрузил картинку, чики-брики у тебя в консольки анимешная девочка. Чтобы такое сделать на шарпах, ты либо unsafe и винапи тереби, либо бери чью-нибудь либу, которая это же делает. Хочешь вычислений на видяшке - тоже изи бризи Проблема плюсов только в том, что туда как в топовый спорткар заложили просто дохуища всего, что в целом-то и не нужно среднестатистическому кодеру. Ну, и этого слишком дохуя, чтобы нормально освоить даже за года практики. А в остальном - плюсы - лучший язык. Низкоуровневый, оопшный, удобный. Люблю плюсы. Жалко что за них тута платют мало, так бы в них пошел.
>>2296312 > У тебя там многопоточный доступ к файлу что ли. Ну да. По протоколу клиент может запросить данные за диапазон времени для определенного скоупа определенного уровня. Нужно будет прочитать из файла чтобы сформировать ответ. В это же время логгер должен будет писать в файл.
>>2296317 На плюсах тебе ровно также надо будет винапи дергать. Фишка в том, что на шарпе сейчас можно писать в ансейфе код прямо как на чистом С, и память нативную выделять. Т.е. ты в рамках одного языка в одном месте пишешь низкоуровневый код, а в другом месте, буквально в соседнем файле - нормальный божественный шарп во всей его красе. Можно поизучать стандартную библиотеку шарпа, там почти везде примерно так и делается.
>>2295767 >>2295779 >>2295833 А можно я вам тупой вопрос задам? Я ньюфаг, есть мысль написать приложение виндовое одной направленности. В начале пробовал питон, вроде всё понятно было, но решил дропнуть из-за направленности в бэкенд и нежелании ебаться с костылями. Начал смотреть уроки по шарпу. В начале полное ощущение того, что всё просто и понятно, а местами "ёпт в питоне почти точно так же". А потом смотришь урок и башка гуманитария взрывается от синтаксиса пизда.елда.хуйзалупа(сосибибу.пизда.елда). Это мне кажется и надо брать яйца в кулак и просто разбираться, всё не так сложно, или реально про сравнению с питоном, щарп - ебаное нагромождение?
Проект на WPF, Caliburn Micro. Захотел добавить модальное окно. Создал окно, класс, но View никак не хочет ничего привязывать из ViewModel. Названия файлов 100% совпадают EditView.xaml и EditViewModel.cs. В чём проблема?? Тоже самое написал в ShellViewModel и там всё работает. Как вызываю окно на последнем скрине. Это приложение для контактов, хочу показать окно чтобы посмотреть данные о контакте и отредактировать его если нужно.
>>2296477 >пизда.елда.хуйзалупа(сосибибу.пизда.елда). это у тебя синдром утенка (брехня - на самом деле непривычность к разным парадигмам разных языков)
У меня была ровно обратная ситуация. Я привык в шарпе из классов, как из кубиков собрать структуру, которую пнул - и оно поехало. А в питоне такое ощущается противоестественно. Конечно я такое видел, но как то чужеродно. В питоне же есть модули, и можно без классов писать (а в шарпе методы не могут быть без классов), к тому же куча вымученного синтаксиса вида list(map(reduce или i for i in ...
В итоге перестал со своим уставом в чужой монастырь и стал писать "как удобно в конкретном языке"
кстати у меня с котлином было то же самое. Я кучу языков и парадигм переварил, но котлин ну никак в голову не шел. А потом тут на дваче нашел "котлин для питонистов" и я такой "а зачем я пытаюсь искать аналогии с шарпом, если котлин = рубипитон с типизацией" - и тогда очень все хорошо пошло.
>>2296477 >про сравнению с питоном, щарп - ебаное нагромождение? Ну в некоторых местах нагромождение. Но ты бери во внимание что в c# удобнее писать из за того что у переменных есть типы, будет меньше ошибок во время работы, подсказываются методы, а ещё язык намного быстрее работает. Золотая середина по мне >>2296380 Этот метод не принимает строку, тебе надо Double.Parse()
Сап шарпач! Есть один файл, структурированный по-питоновски (подэлементы дерева отбиваются табами). Хотелось бы узнать, есть ли в природе парсеры общего назначения, в которые я бы загрузил свои правила и он бы мне мой файл конвертнул в ЖСОН.
Второй месяц готовлюсь к собеседованию на одну компаний с джинни. По синтаксису вроде все подтянул, не считая нескольких моментов, сейчас надрачиваю ASP.NET фреймворк. В следующем месяце собираюсь перейти на структуры данных и алгоритмы, а после паттерны проектирования. Одновременно с этим начинаю поднимать уровень английского, пока что самостоятельно по Мерфи, позже запишусь к репетитору. У кого-то тут был опыт таких подготовок к собеседованиям?
>>2297927 >По синтаксису вроде все подтянул Вот тебе задачка с собеса. Как из словаря <string, object> достать элемент независимо от регистра ключа? Например в словаре у тебя ключ "Zalupa", а в запросе "zAlUpA". Доступа к созданию экземпляра словаря у тебя нет.
>>2297927 >Второй месяц готовлюсь к собеседованию на одну компаний с джинни. >У кого-то тут был опыт таких подготовок к собеседованиям? Что за компания которая готова ждать полгода, пока ты подготовишься к собесу? Или это стажировка за еду какая-то? За полгода-год, в принципе, можно и в какую-нибудь мелкоконтору вкатиться за плюс-минус нормальный прайс.
>>2298051 >Обойти все ключи и найти нужный. На такой ответ первый же вопрос будет: как ты будешь ключи обходить? Даже могут на листочке код попросить написать.
>>2298060 dic.Keys..Select/Where dic.Select/Where да хоть тупо в цикле, а на вопрос "почему не LINQ" отвечать "так быстрее, LINQ тормоз, такова моя вера"
>>2296728 Судя по количеству ответов никто такой хуитой не занимается. Я вчера гуглил километры матана, голова вспухла от парсеров, лексеров и прочей красноглазой дряни. В общем, сваял свой парсер. Однопоточный, говновсратый, ифами-ветвящийся швайнопарсер. Над 15 кб файликом пыхтит джве минуты. Сойдёт.
>>2298066 >так быстрее, LINQ тормоз, такова моя вера Кстати на нормальных собесах сейчас ебут за сентенции вроде "X медленный поэтому я использую Y" За последние два года в .net столько всяких оптимизаций наебенели, что такие фразы однозначный признак, того что собеседуемый завис где-то в 2017-м году.
>>2298045 > Как из словаря <string, object> достать элемент независимо от регистра ключа? Например в словаре у тебя ключ "Zalupa", а в запросе "zAlUpA". Доступа к созданию экземпляра словаря у тебя нет. foreach (var item in tvoyDict) if (item.Key.ToLower() == "zalupa") return item; Мне перезвонят?
>>2298069 Берёт наш словарь и извлекает только ту часть которая слева, ключ (string) Преобразует этот ключ во все нижние буквы Теперь отфильтровывает только ключи с нужным названием Не работает, тогда надо в визуал студии проверить
>>2298082 foreach (var item in tvoyDict) if (item.Key.Equals("zalupa", StringComparison.OrdinalIgnoreCase)) return item; Вот теперь точно перезвонят. Спасибо, анон.
>>2298117 нет. скажут "а че не StringComparison.CurrentCultureIgnoreCase". ты надеешься что в кеях будет только латиница. Ты что - оптимист что ли? Оптимисты нам не нужны. Нам нужен надежный код.
>>2298120 > ты надеешься что в кеях будет только латиница >>2298117 > "zalupa" Ого! В дотнете можно получать доступ к строковым константам? Покажи как?
>>2298207 не говоря уже о том что string.Concat и не нужен - можно прямо значение писать и сразу в интернированные попасть. А string.Concat только для примера чтобы была видна суть
в сигналР есть он коннект и онДисконект методы, проблема в том что онДисконект выполняется при каждой перезагрузке страницы, п у меня нет онРеконект евента, поэтому я не знаю новый ли это пользователь или тот же который был, обновил страницу, как это фиксить?
>>2247357 (OP) Привет, двачата. Начал изучать си шарп с абсолютного нуля. Из знаний программирования только школьные уроки паскаля, которые я тоже забыл, так что уровень моей осведомленности, думаю, можете понять. Щас смотрю уроки по каналу 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)
Ты сказал человеку купить бутылку воды, он пошел купил и дал тебе бутылку воды. В другом случае ты сказал купить бутылку воды, он пошел купил но тебе ничего не отдал.
>>2298909 > в чем суть возврата чего-либо? Когда у оператора return есть аргумент, происходит ВОЗВРАТ. Как написал анон выше:
>>2298942 > Ты сказал человеку купить бутылку воды, он пошел купил и дал тебе бутылку воды. water BuyBottle(int amount) { return amount; } // Возвращает воду. water myWater = BuyBottle(1); // Nice!
> В другом случае ты сказал купить бутылку воды, он пошел купил но тебе ничего не отдал. void BuyBottle(int amount) { return; } // Ничего не возвращает, или как говорят англоязычные, "возвращает ничего". BuyBottle(1); // And what?
>>2299059 Ну а чей? когда делали шарп конечно делали "пилим свою жаву", но никто в заложниках членов семьи не держал и не заставлял делать именно как там не подумав. А нам теперь разгребай это.
Ну то, что именно войд не возвращает значения, я, допустим, понял. Пример с бутылкой тоже понятен. Однако, я не понял почему Console.WriteLine не возвращает ничего. На тех же примерах, я передаю консоли (человеку) команду написать строку (купить воды), результатом у меня строка в консоли (вода в моих руках). Эта же строка работает по умолчанию в static void Main(string[] args), то есть войд мне что-то возвращает. Вот так я понимаю. Если неправильно, объясните, пожалуйста, еще раз
>>2299082 да елки палки возвращаемое значение - значение которое может вернуть метод, как результат своей работы, если он может сформировать такой результат и в этом есть смысл.
а что делает метод - его личное дело
>о есть войд мне что-то возвращает попробуй var result = Console.WriteLine() и пусть тебе компилятор пояснит что такое void
>>2298909 >По моей текущей логике я вижу, что Console.WriteLine выдает мне на консоль символы, то есть для меня это и есть значение, которое мне вернули. Может кто мне объяснить, пожалуйста, Ты различай себя который кодит и себя который смотрит на окно консоли - это разные люди. Первый дает команду Console.WriteLine, которая что-то куда-то отправляет. Может быть в консоль, а может еще куда. Ему похуй. Он отдал данные - метод их отправил и все, обратно в _программу_ он ничего не вернул. А вот второй сидит и пялится в окно, в котором по волшебству возникают буковки. Никаких программ, кода или еще какой-то программерской вуду-юду. Просто смотришь в экран, а там картинка меняется. Чудеса.
>>2299082 > результатом у меня строка в консоли (вода в моих руках) Нет. Строка в консоли, это пока челик ходил в магаз, по пути написал ХУЙ на заборе. А вернувшись воды тебе не дал. Потому что void.
>>2299082 >На тех же примерах, я передаю консоли (человеку) команду написать строку (купить воды), результатом у меня строка в консоли (вода в моих руках). Нет, чувак!. В твоих случаях будет так: В твоем случае "строка в консоли" != "вода в моих руках" "Строка в консоли" == "вода в руках чувака, который за ней ходил". Чтобы эта вода оказалась в твоих руках, тебе нужно дать другую команду. Вот если бы ты выполнял какую-нибудь метод Console.WriteLineAndGetResult("купи водой") который возвращает значение, то ты бы получал какие-нибудь данные, но не те же самые которые вывелись в консоли. То что вывелось в консоли это часть самого путешествия за водой, а не его результат.
>>2299082 > почему Console.WriteLine не возвращает ничего Потому что индусы в майкрософт сделали именно так.
А вот помнится ,в былые времена, в МС любили делать функции, которые возвращали код выполнения, то есть, если бы шарп был запроектирован как диды кодили, то было бы int WriteLine(...) и ты бы мог написать что-то типа: > if ( Console.WriteLine("Купи воды") == ErrorCode.OK ) > // Oll Correkt > else > // OMG samsin wrong
>>2299116 >> if ( Console.WriteLine("Купи воды") == ErrorCode.OK ) >> // Oll Correkt >> else >> // OMG samsin wrong Вы, блядь, поехавшие тут что ли. Нахуй вам вообще такая конструкция, в применении к консоли? Это команда в стиле "отправил и нахуй забыл". Или вы какие-то хитрые колбеки от консоли ловить хотите на простой вывод меседжа?
>>2299082 вывод в консоль это не возвращаемое значение,а выполняемая работа. Оно выводит в консоль и при этом код может выполняться на сервере где никакой сессии с консолью нет и никто не смотрит вовсе
>>2299082 >(вода в моих руках) это как раз то что метод бы вернул тебе.
А метод Console.WriteLine("вода в моих руках") это всё равно что если бы человек, которого ты отправил за водой, крикнул на всю улицу "Вода в моих рука!"
>>2299138 >А метод Console.WriteLine("вода в моих руках") это всё равно что если бы человек, которого ты отправил за водой, крикнул на всю улицу "Вода в моих рука!" Ну точно ебанутый. Console.WriteLine, это аналог команды "напиши на заборе...". Ты же почему-то ожидаешь, что когда ты дал команду НапишиНаЗаборе("Хуй"), этот "хуй" у тебя мистическим образом в руках окажется.
>>2299157 не знаю причем тут вообще консоль. В моем сообщении на "проеб с void"не было ни слова про консоль, ни ссылки ну любой чужой пост где бы упоминалась консоль
>>2299138 Так, то есть, если результат возврата значения, это вода в моих руках, то как это выглядит? Не понимаю тогда как с точки зрения программирования вода действительно находится в руках, а не просто сообщает мне, что она в руках.
Если я создам калькулятор в консоли, сосчитаю 2+2, то 4 будет результатом или чем-то другим?
>>2299181 >Не понимаю тогда как с точки зрения программирования вода действительно находится в руках, а не просто сообщает мне, что она в руках. Ну, вообще C# только лишь сообщает тебе о том, что метод вернул какое-то значение, поскольку само значение лежит где-то в ебенях памяти. Т.е ты имеешь только механические руки, в которых находится результат выполнения метода, но если ты достучишься до области памяти где твой результат находится, то фактически возьмешь в руки сам результат.
>>2299181 >Если я создам калькулятор в консоли, сосчитаю 2+2, то 4 будет результатом или чем-то другим Да, это будет результатом выполнения твоего алгоритма. По сути любой код это алгоритм. Группы схожих алгоритмов можно группировать в классы, а сами определенные алгоритмы(т.е не посредственно "рабочий" код который там что-то считает умножает в хуй ебется) - в методы
>>2299181 ну сказали же. возвращаемое значение - то что возвращается через return, этот результат можно получить после вызова метода, сохранить в переменную, намазать на хлеб, свернуть и засунуть в, забыть про него и так далее.
метод может вывести в консоль, сохранить в файл, написать на заборе, проорать во весь голос в магазине - это не возвращаемое значение (хотя бы потому что чтобы его получить нужно делать дополнительные телодвижения)
Действительно ли читать книги более эффективно чем смотреть туториалы на ютубе? (английский знаю). Как будто они не в целом язык разбирают, а узкие темы. Если потом попробуешь самостоятельно что-то исследовать не будет понятно, придётся всё постоянно гуглить. Ну у меня такое ощущение примерно. Посоветуйте книгу не для совсем новичка, чтоб подтянуться до джуна, не очень огромную
>>2299256 самое эффективное это что то кодить реальное (неважно какой степени полезности) с учителем у кого можно спросить "а как тут правильнее". Сильно хуже - вместо учителя гугл. Ну а книжки читать по диагонали для построения индекса подходов в голове. Ну еще и чужой код активно изучать сильно лучше чтения книг. Ютуб - сильно медленная подача и не спросить детали
>>2299267 И где взять такого учителя? Частенько возникают вопросы не только как правильнее, а как вообще это сделать и почему не работает. Гуглёж не особо помогает. Сюда кидаю но не часто отвечают
Может здесь кто-нибудь такой найдётся, кто будет помогать мне в изучении языка? Мне в школе говорили мальчик умный, старательный но ленивый. А потом и на работку вкачусь.
>>2299280 >а как вообще это сделать и почему не работает. это и есть "как правильнее"
>И где взять такого учителя? устроишься на работу джуном - будет тебе такой. Правда будут заставлять тебя делать что нужно им, а не интересно тебе...издержки работы
Хз где таких искать. Даже если кто не против - на том де SO сидят же многие и отвечают на вопросы, потому что им это просто в радость, но при этом чтобы у такого было время на тебя...хз как.
ну а самому...когда сам что то делаешь и запнулся ибо нет опыта "как" и мысль вообще не идет, и гуглить запарился, а на SO писать - хз как выразить, да и ждать долго...понимаю
потому самое эффективное в таких условиях (для меня точно) - читать чужой код нарабатывая базу "эна оно как можно то". Ну и читая разные статьи - в них (нормальных) больше крупиц пользы на объем, чем в книгах.
Еще конечно можно писать свои велосипеды (либы, фреймворки - потому что сложно придумать "что бы написать полезное"). Получатся будет убого, но это не имеет значения - будут закрепляться знания и подходы.
>>2299315 >устроишься на работу джуном - будет тебе такой. Правда будут заставлять тебя делать что нужно им, а не интересно тебе...издержки работы Да мне всё равно что писать. Меня просто не берут на работу, якобы я чего-то не знаю. Вот думаю как мне достаточно подтянуть знания чтобы взяли
>>2299358 >Меня просто не берут на работу, якобы я чего-то не знаю ну проходить собеседование и быть хорошим разрабом - разные вещи собеседование это дичь
>>2298941 >и плохо что void то не возвращаемое значение. Это один из просчетов создателей шарпа >>2299059 > void > просчет > шарпа >>2299157 >Как теперь жить-то? Консоль не возвращает значение. >>2299160 >не знаю причем тут вообще консоль. В моем сообщении на "проеб с void"не было ни слова про консоль, ни ссылки ну любой чужой пост где бы упоминалась консоль >>2299078 >А нам теперь разгребай это. >public static bool Method(){ > try{ > MethodVoid(); > return true; > }catch(Exception ex){ > Console.WriteLine("Method ex: "+ex); > return false; > } >}
>>2299532 Я повторюсь еще раз - моя ремарка про void не касается консоли, а говорит о void вообще. Именно поэтому я не ссылался ни на какой пост (и не думай что я не умею ссылаться, ведь я ссылаюсь сейчас на твой пост)
Я понимаю, что тут не понять кто чего писал, но я же пояснил этот момент. зачем вынуждаешь меня повторять
А теперь про void void плох тем, что он не возвращаемый тип. void не несет никакой пользы, кроме указания "результата нет". Нельзя сделать Task<void> - а значит будь добр пилить в либах почти идентичный код для Task и Task<T> В других языках используется структура Unit. Даже в либах самого мелкософта можно ее встретить - самопальная структура велосипед) для внутренних нужд.
>>2299539 В чем, блядь косяк? В чем? Блядь. void == ничего не кладем в какой-нибудь EAX после завершения. Ну или в контексте паскалеподобноых терминов - void == процедура. Если тебе нужно чтобы процедура возвращала значение, ты пользуешься функциями. Если ты так хочешь какого-то результата от void - прими таблетки передавай внутрь ссылку на хуйню которая тебе все сохранит куда-то, почему.
>>2299554 >В чем, блядь косяк? я же русским по белому написал чем плох. мне повторить?
>Косяк в том, что кто то насмотрелся обрыганских видосов на ютубе ну да. авторы реактива и mediatr тоже насмотрелись и поэтому решили вводить свой велосипедный тип Unit вместо священного void от просто так ага. так и запишем.
Вообще тип Unit он норм, просто он не стандарт, а каждый пилит свой велосипед.
>>2299554 >Если ты так хочешь какого-то результата от void ты рассуждаешь с точки зрения клиентского кода. Либы видать никогда не писал, а уж либы с кодогенерацией для Task тем более
Привет Шарпистам. Хочу сделать приложение кроссплатформенное под всю хуйню (Вин, Линукс, Андроид, плюсом будет ВЕБ), решил что возьму либу Avaliona потому что она умеет в MVVP по этим параметрам. Далее - приложуха будет plugin-based, что значит надо найти какую-то либу, решение и т.д., которое позволяло бы загружать плагины и дампать API, чтобы вообще знать а что расширять-то можно. Есть какие-нибудь гайды, главы в книгах, статьи о том как такое сделать? Можно на аглицком Или можете хотя бы указать какие либы ЛУЧШЕ всего подходят под такую задачу?
>>2299930 >Либы видать никогда не писал, а уж либы с кодогенерацией для Task тем более А ты писал?
>решили вводить свой велосипедный тип Unit вместо священного void от просто так ага То есть любая пользовательская структура данных - велосипед? МС должны просто всё впихнуть в язык, а то маловато всего. >В других языках используется структура Unit Так в шарпе должен быть Unit, свой стандартный вшитый фабричный отточенный, или void должен нести значение?
void используется, когда ничего возвращать не надо, надо что то возвращать - возвращаешь. И в этом и суть велосипедного типа Unit: зачем то им надо что то возвращать, и это что то должно вести себя определённым образом - та-да! они это возвращают. А ты серишь просто бессмысленный поток сознания. Что то где то увидел и пошёл повторять с умным видом. Скоро вернёшься размазывать мантру "с++ лудший потому что всё есть и всё можно написать а ещё самый быстрый!!!"
>>2300015 >А ты писал? конечно писал. И конкретно с этой проблемой дела имел. И в итоге тоже завел себе тип Unit
>То есть любая пользовательская структура данных - велосипед? именно. Все знают про Task/Task<T> ибо это в языке задумано. А про Task<Unit> - нужно доки читать
>void используется, когда ничего возвращать не надо, надо что то возвращать - возвращаешь. И в этом и суть велосипедного типа Unit: зачем то им надо что то возвращать, и это что то должно вести себя определённым образом - та-да! они это возвращают.
Когда ты пишешь клиентский код, то проблем нет - нужен T, юзаешь Task<T>, не нужен - юзаешь Task. То есть пишешь один из вариантов - что тебе нужно.
Но когда ты пишешь либы, то должен предусмотреть все варианты использования Task<T> и Task. И вот тут наступает трабла, потому что ты вынужден кодить параллельную цепочку для Task (а если еще кодогенерация, то туши свет). То есть тупо повторяешь кучу кода, только потому что Task это вам не Task<T>. И либо кодируй отдельно для Task, либо вводи Task<Unit>, что авторы представленных либ и сделали.
>>2300015 >Так в шарпе должен быть Unit, свой стандартный вшитый фабричный отточенный, или void должен нести значение? ничего не должно быть. жить можно. просто конечно лучше бы изначально был unit вместо void и не приходилось бы свое вводить, в доке описывать и так далее
>>2300023 >По твоему Уно будет лучше Авалонии? хз. я с уно дел не имел. с авалонией имел но давненько ито что они в блазор полезли - не знал но вот с авалония бета я запарился. Того нет, этого нет, это работает не так, траблы под ios и сколько времени потратишь переписку и фикс - хз. Вижу бета - прохожу мимо.
>>2300033 Так в чём проблема то? В том, что нет стандартной структуры почти без функционала? Но с этим ещё можно согласиться, в самописном Unit есть фатальный недостаток. Но как из этого следует, что void должен возвращать значение? Все методы, которые ничего не возвращают, должны срать структурой, только потому, что у тебя функциональность Task и Task<T> дублируется?
>>2300050 >Все методы, которые ничего не возвращают, должны срать структурой, только потому, что у тебя функциональность 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 для исключений. Дикий костыль, но ради обратной совместимости иначе никак.
Конечно, я не всё это считаю "ууу виноваты, бестолковые", но все же неудачные идеи остаются неудачными.
>>2300052 в авалонии под винду мыльные шрифты (увы). конечно зависит от монитора и хз чего, но лично на моем мыльновато и никак это не решить. wpf тоже мыло, но там есть настройки.
>>2300050 Забыл про свой любимый ConfigureAwait(true) по умолчанию. И мне, как либописателю, это очень напрягает - или везде ставь ConfigureAwait(false), или насильно теряй SynchronizationContext (и не дай бог забыть потерять его на входе), или юзай ConfigureAwait.Fody (что я и делаю), но это уже дикий костыль, ведь он скрытый от глаз и если кто-то посторонний смотрит на код, то он про эту тонкость не знает.
Господа! как бороться с мыслями которые постоянно лезут в голову, что я тупой. Вот допустим изучал как то делегаты, вроде все понятно, но с течением времени изучив много чужого кода я пришёл к выводу, что нифига я не знаю о них. И так касаемо всего, даже операции с обосцаными строками если копнуть, то можно столько всякого откопать. Создаётся впечатление, будто программирование это бесконечно глубока бездна в которой нет дна. Поэтому кажется будто я тупой, либо программирование удел гиков-аутистов, которые знают весь код наизусть как Отче наш.
>>2300056 >HttpClient при таймауте кидает TaskCancelledException. Почему? Да потому что автор либы посчитал что метафора "задача отменена" тут подходит. Таймер отменяет задачу запроса в сеть, вроде все логично. Но не кидает наверх TimeoutException, ведь работает метафора "задача отменена" > >Вот только клиентский код должен теперь разбираться "а кто отменил" явно проверяя "а это точно не я отменил все или оно само и мне нужно повторить?" О, да. Мне вот эта хуита с "was cancelled" в случае таймаута, стоила кучки нервов в свое время.
>>2299930 > Либы видать никогда не писал Писал. Хуй знает правда при чем тут void и чем он в контексте либы плох. Ну давай. Допустим я пишу логгер. У меня есть метод void Log<TScope>(TScope scope, LogLevel level, string messageFormat, params object[] logEventParameters); Почему void - плохо тут? Что бы ты хотел, чтобы там было? LogEventWriteState? int с кодом ошибки? Может быть объект для того чтобы можно было подождать пока сообщение таки будет всеми писателями записано и ты бы с этим что-то делал? А может быть это все хуйня и тут void - норм, как раз для пользователей моего кода, а в своем коде - я могу с internal нахуячить чего мне надо?
>>2300208 >Почему void - плохо тут? без понятия почему ты считаешь что он плох тут Тут он просто сигнатура, которая никому не мешает.
Мешает он когда у тебя нужно Task<void>, но поскольку Task<void> нельзя, то ты пишешь Task. А это вынуждает тебя писать параллельную к Task<T> логику обработки этого случая. При этом код на 99% копипаст из логики с Task<T> То есть есть у тебя метод с Task<T>, который по цепочке там на 10 что то вызывает - придется сделать дубликат всей этой логики для Task
>>2300208 И так то не проблема, что либа вводит свой Unit просто это не стандарт, а значит люди не привыкши что приводит к необходимости писать об этом в доках
был бы введен Unit при рождении TPL и все про него знали - здорово был бы Unit изначально - еще лучше
>>2300216 > При этом код на 99% копипаст Пиздёжь. Делаешь класс без дженерика, который наследует скажем Класс<int> и один раз оборачиваешь его методы в void-овые. Например, если у твоего Task<T> есть метод T Run(), то тебе не надо копипастить код этого метода. Наследуешься от Task<int>, прячешь int Run(), прячешь int Result, делаешь void Run() { base.Run(); } и всё. Инт возвращается, но уходит в пустоту. Которая по английски и есть void.
Такшта надуманная проблема. Лучше бы софт делал, а не этой хуйнёй маялся.
У меня дед, который 20+ лет работает и кучу всего полезного за время работы написал - хуячит методы по 10к строк и все пишет зачастую в одном Program.cs, потому что ему так вот нравится, ссыт на ебало всем любителям ООП и ФП, потому что начинал он с си, а асинхронщину по заветам APM хуячит. Ну, дед-входит в тех, кто составляет стандарты на уровне европки для нашей предметной области, дед - дохуя всего сделал, у деда ЗПха охуенная, ну, давай как дед AsyncCallback'и хуячить и ебашить ансейфом, просто по фану, потому что можем. У него ж столько регалий, куча выступлений на конференциях и вообще, дед - довольно известный в кругах этой вот предметной области.
>>2300372 не сомневаюсь Но что еще делать, если не получается пояснить суть тем, кто далек от темы
Даже прямыми словами у авторов написано что они вводят юнит, потому что void нельзя вернуть - не аргумент. "Авторы дураки и придумали это от просто так" (с) анон с двача
>>2300309 ага. у рх проблема не с тасками - я не знаю, я его не юзаю. (что пофиг ибо суть проблемы та же) цитата "Поскольку мы не можем реализовать интерфейс IObservable<void>, разработчики библиотеки Rx добавили тип Unit, который как раз и играет роль отсутствия возвращаемого значения." http://sergeyteplyakov.blogspot.com/2010/11/blog-post.html
Дорогие аноны, как можно ускорить два метода, один из которых парсит данные из листа структур в лист удобно читаемых строк, а другой ищет по префиксу все подходящие вхождения в получившемся листе?
Пробовал две реализации на пикрелейтедах, причём с параллелизмом стало медленнее. Как быть?
>>2247357 (OP) Привет, подскажите, пожалуйста, как перейти на версию c# 8.0? В одном видосе сказано нажать "Открыть папку в проводнике" в решении, там зайти в .csproj и скопировать строку <LangVersion>8.0</LangVersion> из <PropertyGroup> в <PropertyGroup> повыше. Проблема в том, что у меня нет строки <LangVersion>8.0</LangVersion> и некоторые операторы не работают, например ??=. У меня Visual Studio 22 17.1.0 версии, стоит только "разработка классических приложений .NET.
>>2300651 допиши эту строку в первый PropertyGroup, там где фреймворк указывается иначе он автовыбирает по фреймворку Потому вписав дотнет 6 получишь шарп 10 и не нужно ничего мудрить лишнего
>>2300927 >А где такие настройки? свойства проекта по пкм. теперь они выглядят иначе (ну у меня точно, а почему хз - 2019ю я давно снес, а в ней выглядело по старому)
Ну выбрать можно те, поддержка сдк которых были поставлены со студией
но вообще есть старый стиль *.csproj и новый sdk может для каждого стиля свой вид настроек. Я давно перешел на новый во всех проектах еще задолго до выхода даже дотнет 5
>>2301112 А, ну да, еще наверное такая дикая разница из-за того что тестовые данные я как ебанат составил: Valid Invalid кек. Наверное нужно было бы поиграться.
>>2301112 а как по твоему сравнивается StartWith в строках? До первого несовпадающего символа же - дальше нет смысла искать. Поэтому ручная имплементация самому лишена смысла.
Хочешь ускорить - параллель (если плата за это не превосходит выигрыш) либо структуру какую типа префиксного дерева
>>2301145 > а как по твоему сравнивается StartWith в строках Ну, они сравниваются как-то так. А потому, свой велосипед вполне нормальное решение, если тебя все эти культуры и прочее не волнует.
Что я делаю не так? Первый скрин - вывод в консоль и курл Второй - собственно код С заголовками-то все ясно. Но вот решил, что хорошо бы и тело доставать. И чет пизда. Что в постмане, что в curl - уходит в выделенном куске в бесконечное ожидание. Смотрю что там в сокете, написано Available = 0. Но блядь. А куда тело-то делось? Чи шо? Чи я тупой и что-то не прочитал?
>>2301161 хотя да. сделал бенчи ориг 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 |
>>2301229 >что в curl - уходит в выделенном куске в бесконечное ожидание нужно проверять i если он i==0 то значит поток закрылся и данных больше не будет и нужно выходить из цикла
>>2301247 Ну, поток-то не закрылся на деле. Он вполне принимает нормально ответ. Плюс я постманом файл текстовый пытался отправить. Вот его таки читает, но не целиком, последние несколько строк куда-то проебываются. Но куда - я не понимаю.
>>2301266 Действительно! Спасибо. Сам бы я скорее психанул бы и отказался как от стримов, так и от ридеров и взялы бы пайпы и с сокетом забавлялся, нахуячив какой-нибудь ебанутый парсер со стейтмашиной. Еще раз спасибо.
>>2301286 Ну, как я знаю, пайпы в asp юзают не потому что проще, а потому что хотят дать пососат. Типа в плане использования ресурсов - оно таки круче и при этом есть удобное решение для работы с буфферами. Но в плане кода - выходит на самом деле тот еще ужас, как минимум на уровнях что близко к сокетам.
Готовлюсь к собесам по стеку WEB API, MVC по книжке Фримана. Насколько важно учить тег-хелперы? Часто ли применяются в разработке или эту главу можно пропустить?
>>2301491 Вау. ты спаситель, заработало Блин вот из-за таких как ты я понимаю что мне в программировании ничего не светит, вы просто на голову умнее меня
Зареган на линкедин и мне написала рекрутер из EPAM (в который я очень хочу попасть как-нибудь в будущем. Я хоть и готовлюсь к собесу, но пока что я сырой (надо подтянуть паттерны и алгоритмы со структурами данных) и не хочу даже пытаться. Что можно ей ответить? Попросить подождать?
Вопрос. Вот в шарпе есть индексаторы object this[int index]. И есть свойства с довольно похожим синтаксисом. А свойств с индексаторами нету, да? Чтобы я в свойство мог совать аргумент как с индексатором в свойство и через set get что-то делать.
что одна хуйня имеет set get что другая. только свойства я могу как-то назвать, а в индексатор совать аргументы. а я хочу и назвать свойство и аргумент туда совать.
>>2301772 У свойств то синтаксис приятный можно написать в одну и ту-же хуйню что она читает и что она меняет! И индексаторы приятные.
Вот написал класс который менеджит ресурсы на гпу. Раньше следил он там за своими текстурками и я через индексатор обращался к этим текстуркам. Удобно. А теперь хочу чтобы он ещё и за буфферами следил. Но второй индексатор то я не могу сунуть. Задумался что хочу иметь возможность обращаться к нужным мне ресурсам примерно так-же как обращался бы им в словариках. То есть написать например хранилка.текстуры["имя"], хранилка.буффер["имя"]. Но как мне такой синтаксис иметь без словариков то?
Наверно остается только написать дженерик класс для хранения ресурсов у которого обращение к его ресурсам происходит через индексатор и просто собрать из двух таких один.
Буквально на днях вентилировал этот же вопрос: что учить в 2022 году для разработки >бэкэнда<. Несколько дней гуглил, читал статьи и прочее. Краткие выводы к которым я пришёл для себя (на истину в последней инстанции не претендую):
1) Ванильная Java - уже фактически труп. Учить её сейчас с нуля нет смысла, новых проектов на ней никто уже не начинает. Большое кол-во вакансий и высокие ЗП в данный момент, обусловлены её славным прошлым, большому кол-ву кровавого энтерпрайза в финтехе, телекомах и тп который нужно поддерживать и дорабатывать, и тем, что молодые разрабы в большинстве своём проходят мимо неё в результате чего имеется серьезный дефицит разработчиков.
2) C# медленно, но верно загибается, МС судя по всему будет продолжать активно развивать его, в результате чего он имеет шансы обогнать Java со временем. Т.е. проще говоря он будет терять свою долю рынка медленнее чем Java. Тем не менее учить его с нуля в 2022 тоже нет смысла, главный аргумент тут: он не используется в core-сервисах крупнейших IT компаний мира (разумеется, сама МС не в счет). Пока гугл, амазон или мета не перепишет свою инфраструктуру на C#, смотреть в его сторону тоже не стоит.
3) Думаю, что следующая троица: node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# с бэкэнда везде, включая банки, телекомы и тп. В конечном счете всё будет переписано на данных языках. Старые технологии местами останутся, если серьезные доработки не требуются, но с нуля разрабатывать на них уже не будут.
Поскольку, последние 5 лет я пишу исключительно на node+ts (до этого, немного разрабатывал на c#), в этом году я решил изучить golang. Думаю, что спрос на golang разработчиков вырастет в разы в ближайшие годы.
>>2301813 >1) Ванильная Java - уже фактически труп бред >2) C# медленно, но верно загибается бред >3) node+ts, kotlin и golang в течение нескольких лет практически полностью вытеснят java и c# еще больший бред
"боже вас сохрани, не читайте до обеда советских газет" (с)
>>2301813 > В конечном счете всё будет переписано на данных языках Да. Бизнесу-то делать нечего, как по 10 раз переписывать то что работает. Вон, как славно в штатах с кобола все переписывают! Относительно ноды - говно без задач, годящееся только чтобы фронтендеру развернуть тестовое окружение и как временная мера чтобы роутить запросы при очередных попилах монолита на микросервисы.
Относительно остального. Жава - жива и помирать не собирается, сколько бы ее не хоронили. Шарпик - если майки не обосрутся - будет делить ту же нишу что и джава в области бекенда. Держим пальчики, чтоб очередная война гидры внутри конторы - не сменила вектор развития шарпика и не откатились к началу десятых. Про ноду уже сказал. Говно без задач. Котлин - на мобилках норм, в бекенде - говно. Гошка - только для микросервисов и годиться, что-то большое и сложное - заебешься писать и поддерживать и как-бы микросервисы не пытались продвигать, на деле - оказывается, что это нихуя не серебрянная пуля и нормально спроектированный монолит - пизже во множестве кейсов.
Странное решение с этим IHttpClientFactory получается каждый раз создается новый 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). Ебушки-воробушки, они думают над тем чтобы затащить функции?
>>2247357 (OP) Есть, значит bool arg1 = false; и оно может быть тру-фелсе. И есть, значит: public static Namespace.Class object = new Class(arg1); Который тупо срабатывает когда arg1 = false.
Есть Main(string[] args) с arg1 внутри.
Но ебучий паблик статик создаётся до обработки аргов. Шо делать с этой хуйнёй?
Есть сайт с авторизацией (айдентити + кастомная), инфа о юзвере лежит в HttpContex.User (все стандартно). Но вот какой нибудь айдишник или еще что может понадобиться в других частях/либах приложения. Как грамотно организовать доступ к инфе о юзвере. У меня такие варианты: -прокидывать ihttpcontextaccesor, и из него тануть юзера (мне такое не нравиться по нескольким причинам, как минимум не хочется тянуть хттпконтекст в слои далекие от хттп, плюс в том слое еще понадобиться знание о клаимах и т.д.) -сделать iuserinfoservice, который уже будет работать с ihttpcontextaccesor'ом. Вроде норм, но меня смущает то, что его я буду использовать и в контроллере, т.е. будет поле ClaimsPrincipal User и IUserInfoService UserInfo, по сути обертка над ClaimsPrincipal User. Довольно странно. В общен нужен ваш совет/варианты.
>>2247357 (OP) Может кто знает, в чем причина полной нагрузки памяти компа пустым проектом VS? Первый раз за день проект может загружаться очень долго, к тому же, хотя кода там нет совсем
>>2303231 Получается, что около 10гб съедается при первом запуске, при том, что в нормальном состоянии потребляет около 1гб или чуть больше. Студия 22, 17.1.0, консольное приложение .Net Framework
>>2303208 Обрати внимание на левый нижний угол приложения. Там будет вот такой значок. Это бэкграунд таски которые студия делает после загрузки. Там может быть дохрена всего, грузится интеллисенс, пакеты, тулзы какие-нибудь, анализаторы всякие и т.д. Дальше лень объяснять гугли что-нибудь вроде "Visual Studio Background Tasks"
Ну что там ваш распиаренный МАУИ? (который по факту - переименованный хамарин, который по факту переименованный впф для мобилок). Кто на ём десктопные кроссплатформенные приложения пилит?
И вдогонку вопрос. На чём пилить кроссплатформенные десктопные приложения в 2022 веку?
>>2303143 Какому шарписту, привыкшему что все лежит на своем месте, проще от того что все в одной большой лапше куче? да никакому. Это просто ломает привычку,а пользы ноль
Вот я попробовал блазор. создал в студии 22. Очень быстро код инициализации стал огромной кучей говна. И начался квест к переходу под старый тип проекта. А где его взять? яего в упор не видел - не знаю, как он должен выглядеть под блазор. Пришлось гуглить пример старого проекта по гитхабу. А мне больше заняться нечем будто
Тут аноны рекомендовали типа "ну создай свой шаблон" Из чего (цензура) создай. Где я в 22 студии создам старый тип проекта чтобы сохранить его как шаблон? Да и нахера оно мне надо?
Для легкого скриптинга так же отлично подходил метод Main - пиши тупо в нем хоть 10к строк - никаких проблем не было. Идиотская идея в общем, как и с ConfigureAwait
Тупой вопрос. Смотрите, есть табличка в которую записывается считанное значение, есть табличка устройств, есть табличка параметров устройства, которые можно читать. Так вот. Я хочу достать из базы все последние значения для какого-то устройства. Если бы я делал это на 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 делать.
>>2303801 > все просто делают .ToArray и не парятся, а мне не хочется ToArray делать. Зделой сначала ту эррей, а потом ту лист. И спрячь в отдельном модуле.
Кстати. Я тут недавно на паскале чуть пописал. И вот концепция модулей вполне прикольная жи. В спеках .net описываются модули. Когда их завозить-то будут? А то чет посмотрел роадмапу .net7 - там какая-то хуета беспонтовая, в 6 больше ништяков завезли. А модули бы были норм.
>>2303967 То что программист делает всегда. Вот у тебя есть процесс: "прием заказа". В классическом виде: Клиент припиздовал, сказал человеку, человек на бумажечку записал, потом передал это тому кто формирует заказ. Так вот, ты можешь автоматизировать - теперь заказ можно сделать на сайте (исключая как физическую необходимость клиента припиздовать, так и необходимость в том, кто заказ примет и тонны бумаги, чтобы это записывать). Ну и таких процессов миллионы в любом бизнесе: расчеты ЗП, инвентаризация, всякие специфичные хуйни(ну, допустим вот у телеканала есть процесс - "вещание", раньше сидел челик и ручками выводил всякое в эффир, сейчас - составили программу передач на год вперед, программа сама переключает, делаем прямые включения только по необходимости и иногда корректируем программу; у всяких больниц - ведение карты больного и т.д.) Короче. Ты понял. Специфичные процессы какого-то бизнеса, которые приносят прибыль обычно. Как связано с программированием? Ну, блядь, а кто будет делать электронный журнал какой-нибудь? Или корпаративный планировщик задач? Тетя Зина-бухгалтерша и дядя Петя - ответственный за соблюдение ТБ и заведование складом?
>>2304527 Я самостоятельно учу с нуля нет, не вкатун и прихуел от формы записи. Лямбды вида (s) => Foo(s) понятны, а с той, что на пике, впервые столкнулся. Пытался что-нибудь нагуглить, но не получилось.
>>2304539 Просто если зарегать лямбду ака фабрику в контейнере через эти методы, то контейнер при резолве вызовет эту ламду, котоая вернет зависимость. поэтому регистрируют ламбду, которая возвращает ламбду
ну можно создать и метод расширение типа services.AddFactory(...) но это будет путать
>>2304826 Да я уже нажат на инсталл в подсказке, он сказал что установит Net5 (на 7Мб, лол) и предупреждение ушло. Но список сдк/рантаймов не поменялся. Мне, как диванному эксперду, кажется, что майки хуиту творят с зоопарком дотнетов.
>>2304458 Вот кстати с лямбдами в коротком виде - хуйня в том, что если ты вот так делаешь - не зная что там делает a.Foo(...)- ты не можешь сказать, это делегат с void или каким-то возвращаемым значением. Как по мне - нужно убрать нахуй короткую запись лямбды и делать со скобками, чтобы разночтений и необходимости мышкой водить не возникало.
>>2304886 > все могу и без проблем > var x = () => SuperDupperMethod();
Что будет возвращено после вызова лямбды? Будет ли вообще что-то возвращено? Давай. Вот лямбда, дерзай, у тебя же нет никаких проблем с чтением лямбд.
А было бы нормально написано:
Func<int> x = () => { return SuperDupperMethod(); }; или Action x = () => { SuperDupperMethod(); };
Вообще никаких проблем бы не возникло. А тут - води мышкой, и это хорошо если в студии сидишь. А если код нельзя открыть в иде? Короче, var и короткая запись там, где тип не очевиден - говно, тот кто так пишет - говнокодер и его нужно выгонять из айТи за целенаправленное вредительство. Завтра он начнет рефлексией доставать приватные методы и выделять руками память, дергать указатели на строки и прочую хуйню делать. Фу таким быть.
>>2304889 > А если код нельзя открыть в иде? а лямбды тут причем вообще? это уже проблема var vs Type ты сам привел пример как явное указание типа решило для тебя проблему чтения
>>2304889 суть в том, что вот так var x пишется очень редко обычно лямбды используются сразу по месту - LINQ, тот же service.AddSingleton(...) и даже если ты читаешь без IDE, то как то не встает вопрос, а что там возращает a.Foo(), ведь контекст больше смещен на что делает AddSingleton
так что с этим никогда проблем чтения не было (а я читаю без IDE больше кода чем c IDE). Вот с неймспейсами больше проблем при таком чтении. Видишь использование класса Foo и хрен поймешь в каком он неймспейсе. После такого многословный импорт в котлине сказкой кажется.
Как всё заебало! Ничего нихуя не работает! Ёбаный wpf, конченная хуйня. Что с ним сделать блядь чтобы ебучие кнопки в EditView заработали? И так пробовал, и вписывал Button cal:Message.Attach="Delete()" и писал функцию в другом вью для теста, он только вылетает с ошибкой и всё. Кому не поебать гляньте код https://github.com/shitshitsh3412/ContactsWPF
>>2305224 > Что с ним сделать блядь чтобы ебучие кнопки в EditView заработали? Прописать им в хамл параметр x:name, затем в код-бихайнд класс добавить соответствующие добавленным именам свойства. Например: В хамл: > <Button "x:Name"="TButton1"/> В классе: > Button TButton1 { set; get; } И далее пишешь в коде конструктора класса после InitializeComponent, в котором эти кнопки из хамла прибиндятся к членам код-бихайндового класса: > TButton1.OnClick += (s, e) => { //твой код };
> конченная хуйня. Что с ним сделать блядь Юзать Eto.Forms который проще, прозрачнее, и кроссплатформеннен. И хамл код у него попроще. И если тебя насяльника заставляет ебаться с МВВМ, то там это тоже можно реализовать.
>>2305409 > МВВМ - плохо? Не плохо. Но ты должен понимать, что и для чего ты используешь. МВВМ придуман для больших и сложных приложений, если ты пишешь какую-то мелкую утилиту, юзать там МВВМ - как стрелять из пушки по воробьям.
>>2305451 >МВВМ придуман для больших и сложных приложений он просто придуман отделить визуальную логику от визуального рендеринга для тестирования и снижения лапши. И размер приложения значения не имеет. Это всякие призмы придуманы для "больших и сложных", а не сам мввм
>>2306036 > придуман отделить визуальную логику от визуального рендеринга Нет. Он придуман как решение для уже существующей инфраструктуры, в которой визуальный рендеринг происходит на отдельной системе третьей стороны. > для тестирования и снижения лапши Нет. Тестирование и понятность приплелись позже.
Проверим твою эрудицию, о какой третьей стороне речь?
>>2306126 >А есть паттерны для простых маленьких приложений? MVVM же. не слушай чудиков
Вот твой путь 1 пишешь как в WinForms, то есть обработчики событий, команды (те которые роутед), будешь работать напрямую с контролами если нужно чего то извлечь 2 Потом тебе это надоест и " а где же биндинги, даже в формсах есть биндинги, унылые, но есть" - и вот ты уже юзаешь биндинги, кодишь классы, которые проецируются в этот биндинг - и вот ты уже почти MVVM 3 И потом очередная мысль - а нахера все в кучу в code behind мешать, может вынести в отдельный класс логику" - и вот ты уже изобрел MVVM )
Это настолько простой паттерн, что больше беспокоит "блин нужна будет зависимость от какой то либы где есть всякие ViewModelBase/RelayCommand" чем "ааа зачем мне это сложно"
>>2306193 Наплевать Если вещи похожи - это не значит что это одно и то же. Это просто ты пытаешься выдать одно за другое Те же паттерны прокси, адаптер, политика выглядят как братья в реализации - значит это один паттерн ага
>>2306517 Походил по ссылкам. Чушь полнейшая. Это русифицированный бейсик, блять. Я понимаю, что это тралинг такой, но надо же тоньше, блять. Сегодня, во времена юникода, программирование на национальных символах - не проблема. Проблема у этой жырноты в другом: после того, как 99% кодеров привыкли к описательной пунктуации в ключевых конструкциях, никто больше не вернётся к словесным ключевым конструкциям. > Класс Собака : Млекопитающее { } Короче, читаемее и эффективнее, чем > Класс Собака Родитель Млекопитающее > Конец Класса
Посмотрите на это позорище ебаное. Какое убогое чмо, стыдно что они пишут на таком же языке. Там ещё и у некоторых поддержавших в комментариях написана компания и должность, может устроим травлю ебанатам, чтоб их снесли с работы? Например Александра B Senior QA/Test Lead в Luxoft. Самое мерзкое и бессмысленное действие которое можно осуществить, электричество и ресурсы на ветер
Сап аноны, хочу обучить нейронку с использованием Unity, а он использует C#. Вопрос следующий, какие библиотеки можно использовать для обучения нейросети? В идеале хотел бы использовать tensorflow или pytorch, но как я понимаю, их под C# нет
всем привет! сори если оффтоп, но любопытно было бы узнать: есть ли здесь кто-то, кто свичнулся с дотнета и если да, то как впечатления, стоило ли оно того?
>>2310422 Я ушёл с дотнета по трём причинам: 1. Мало кто использует язык в современных реалиях. В большинстве вакансий, что я видел был старый дотнет (который под винду), WCF и пр. Где-то даже мелькали WinForms и IIS. Очень редко можно было встретить вакансию с современными стеком и архитектурой.
2. От ООП немного начинает подташнивать после какого-то времени. От всей этой лапшы с фабриками, стратегиями и наследованием любой код скатывается в какую-то дичь.
3. Мало кто сейчас пилит на дотнете с нуля новые проекты. Отчасти из-за того, что многие до сих пор думают, что он только под виндой работает
Да мне самому не хотелось уходить. У меня была очень крутая команда. И проект был интересный. Но я походил по собесам и понял, что везде как-то не очень.
Я после этого поста >>2310423 сходил в гугл, почитал про Го. Ну и дрисня. > компилятор афтоматичиски добавляет ; в конец каждой строки > поэтому нельзя переносить открывающую скобачьку { на новую строку Нахуя, блять? Что за блажь ебучая? Зумерам из гугла было лень ; писать?
>>2310525 Зайди в их тред, там еще больше веселого есть. На это специальный язык с низком порогом входа, на котором сложнее говнокодить. Не то чтобы невозможно, но просто заставить обычную макаку писать на нем простую хуйню не создавая проблемы.
Аноны, подскажите зелёному: 1) стоит ли тестировать котроллеры? 2) Если стоит, то как в тесте из Task<ActionResult<List<Zalupa>>> вытащить этот самый List<Zalupa>? result.Result.Value возвращает null, хотя в отладке видно, что значение есть (pic 1).
Возможно, мои мысли полная хуйня, но может же чисто теоретически Microsoft полностью огородить рашку от всех ее продуктов, в том числе и dotnetа? Тогда конец вакансиям на нем или я еблан как и всегда?
>>2310715 Перекроют доступ к сайту, гитхабу, тем самым возможно пропадет 90% вакансий (стоит еще допустить, что Россию могут от тырнета отключить и будет как в Китае, свой)
Смотрите. Есть веб-приложение. Оно генерирует JWT и отправляет мне. Я знаю секрет(это публичный ключ, который приложение крепит к запросу) и алгоритм подписи(ES512). Я хочу проверить что подпись валидна. Как мне это сделать? Я просто тупой в этом плане немножко. Типа я понимаю как это концептуально делается: я должен просто взять, посчитать хеш ключа, затем взять и посмотреть что при хешировании вот этим вот ключем - заголовок и тело JWT - совпадают. Но блин. Я не понимаю как это делается на .net. Я гуглю - JWT Signature validation .net - мне выдает всякое добро про bearer, а мне не для авторизации нужно, а для своих темных дел, и проверка сигнатуры нужна исключительно чтобы знать от кого пришло. Опять же, я начал гуглить - и узнал много интересного про криптографию в .net - но те жк ecdsa у майков как-то странно работают, просто pem - нельзя, какие-то ебатеки с x509, плюс, пока читал - там еще ебатеки с тем что одно работает на линуксе - другое не. А у меня просто блин лежит файлик с публичным ключем и я хочу проверить что jwt-пришел от того самого приложения.
>>2310557 Потому что по желанию левой пятки - майки могут забить на кроссплатформенность, могут захотеть закрыть исходники, дам много чего могут сделать. МОНО - попенсорс, под божественной GPL, так что там - хуй, никуда не денется.
>>2310525 >Нахуя, блять? Что за блажь ебучая? Зумерам из гугла было лень ; писать? Это та же хрень, что и с питоном. Сначала идет декларация "мы не любим скобки, скобки не нужны, нам хватит отступов", потом срач на кучу лет, что использовать в качестве отступов: табы или пробелы. А потом периодические статьи на тему: "как бы нам впилить скобки или их аналог в пайтон, а то неудобно ведь оказывается"
>>2310817 > могут захотеть закрыть исходники, дам много чего могут сделать. не могут захотеть. Иначе тогда они вернутся к тому, от чего так настойчиво бегут - "никто не хочет использовать язык и райнтам из-за закрытости". Предыдущее их "мы обещаем не преследовать" никого не убеждало, и только вот такая открытость стала вытаскивать язык из тени жавы.
>>2311101 Угу. Так же как и срайдером. Который вроде как и не принято пиратить, но у каждого второго он пираченый, а у тех кого нет, просто куплен на бабки кабанчика.
>>2310799 >Всё? Похоже что всё, кто пишет в рашке под дотнет (MS санкционочка) и джаву (Oracle санкционочка) - повод задуматься о смене стека либо об эвакуации, так как репозитории и вся документация в скором времени перестанет быть доступна без танцев с бубном.
Тупой вопрос: если функция очень часто и многократно вызывается, то объявление в ней локальных переменных является ресурсоемким действием? Насколько это шатает оперативу по сравнению с работой с уже инициализированной переменной?
Многократное выделение памяти и освобождение — это вообще естественный процесс?
>>2311338 Я (есличо) вернусь обратно на фрипаскаль (из которого пришёл в шарп). Он ПОЛНОСТЬЮ опенсорц, не имеет в зависимостях всяких ёбнутых зумерских виртуальных машин и байткода. Запускается на любой системе, включая очень экстравагантные.
Жаль конечно будет переходить обратно на begin end после таких-то удобных скобачек. Эххх...
>>2310525 >Нахуя, блять? Что за блажь ебучая? Зумерам из гугла было лень ; писать? Я всё понимаю, но этого не понимаю. мимо бесикоблядь
Я могу понять в чем хуевость динамической типизации, я могу согласиться с определенными пунктами обсирания VB; но единственное, чего я не понимаю, это ебучей точки запятой в каждой строке. Это самый тупой культ в программировании — только ради того, чтобы тебя посчитали "своим".
>>2310525 > компилятор афтоматичиски добавляет ; в конец каждой строки > поэтому нельзя переносить открывающую скобачьку { на новую строку "вам шашечки или ехать?" Именно поэтому в VB отсутствуют открывающие скобки, но в GO решили избавиться от ; при этом оставить скобочки. А вообще попахивает несовершенством компилятора. Неужели в 2к22 нельзя научить компилятор при детекте скобок, учитывать контекст предыдущей строки, даже если там стоит ; ?
>>2311356 > я не понимаю, это ебучей точки запятой в каждой строке. Это самый тупой культ в программировании Благодаря ей гугловский парсер разбирает код на термины. Действительно непонятно, зачем им точка с запятой, если у них уже есть конструкция области (scope), то есть скобачьки {}. Видимо так быстрее где-то в чём-то. Я гугловский го парсер не тестировал, не знаю.
>>2311356 > в VB отсутствуют открывающие скобки В ВБ тем не менее есть области (scope) они начинаются ключевым словом, которое предполагает область и заканчиваются end'ом.
>>2311324 >локальных переменных сами по себе локальные переменные повисают в стеке. Стек заранее выделен. А вот где их значения - зависит от типа То есть если у тебя функция инициирует только переменные значимого типа - у тебя будет нулевая аллокация (если нигде не было упаковки) В случае ссылочного - конечно в куче будет выделено место для значения, а ссылка повиснет в стеке
>Многократное выделение памяти и освобождение — это вообще естественный процесс? памяти в куче если. это аггрит сборщик мусора. Потому alloc-free алгоритмы приносят свои плоды. Но нужен здравый смысл. Смотри на частоту сборок мусора и оптимизируй (по возможности) горячие места. Туда же и memory traffic - незачем копировать если можно не копировать.
>>2311367 >Благодаря ей гугловский парсер разбирает код на термины. Есть такой локальный язык Zscript для программы Zbrush — там для удобства парсера абсолютно любая операция заключается в скобки. Ну просто песня для парсинга. Зацени объявление переменной MyVariable и присвоение числа 5: [VarDef, MyVariable, 5] Просто присвоение там вот такое: [VarSet, MyVariable, 10] Шо фсё? Нет, не фсё? Как тебе сложение: [VarAdd, MyVariable, 42]
А вот с точки зрения человека, там лютый трэш. [[[Код] превращается], [[в] мегатонны] скобочек] Но компилятору удобна )))))
>>2311356 Потому что блять, код не только пишется, но еще и рефакторится и отлаживается. И вот если в первом случае все эти модные флюшки вроде отсутствия точек с запятыми или отступы вместо скобок еще норм, то вот во втором и третьем случае начинается пиздец.
>>2311529 Отказ от точек с запятыми вообще никак не влияет ни на отладку ни на тем более рефакторинг, чем меньше символов на экране тем проще воспринимается текст.
>>2310710 Да, ставил. Второй день пытаюсь, если не лист залуп возвращать, а инт например, то копипаста того, что сейчас возвращает нулл, возвращает нормальное значение.
Сап всем анонам. Есть строки, каждая из которых дополняется набором атрибутов (строчных), причём для разных строк могут встречаться одни и те же атрибуты. Для всех таких строк есть базовая строка без атрибутов - ключ в словаре, к которому значением является словарь с вложенными строками и их атрибутами. Строк, как и атрибутов, может быть овердохуя.
В словаре с базовыми строками мне нужно находить "вложенные" строки по атрибутам, причём соответствие не должно быть полным, нужно лишь, чтобы были все искомые атрибуты, т.е. другие тоже могут быть. Из всех подходящих вариантов нужно всегда выбирать первый. Вот здесь у меня возникла проблема.
Я хэширую каждый атрибут и запоминаю в отдельный словарь атрибутов (получается Dictionary<string, long>). Для атрибутов каждой вложенной строки хэш составляется как произведение всех хэшей её атрибутов. Итоговый словарь, по которому ищу - Dictionary<string, Dictionary<long, string>>. Собственно, найти какую-нибудь вложенную строку от базовой прохэшировав атрибуты я могу, но как получать именно первый результат? Была мысль заменить хэширование в атрибутах на использование последовательности простых чисел, но это тоже кажется костылём. tl;dr как хэшировать всё множество так, чтобы понимать, что некоторое подмножество содержится в нём?
>>2311948 Если навешивать к атрибутам в конце пути по дереву строки, то в моём случае миллионы строк могут висеть после конечного узла. Например есть атрибут существительного и лярд существительных. А ещё префиксное дерево не особо уживается со структурой, при которой есть базовая строка и связанные с ней вложенные. По крайней мере не понимаю как это увязать.
Как узнать размер пустого листа? Или в частности насколько сильно различается отжираемая память экземпляра класса А и листа, содержащего один экземпляр А?
Помогите пожалуйста, я пока тупенький джун и у меня возникла проблема с запросами к БД из нескольких потоков. Юзаю EF 6. Суть задачи: Есть некий товар и его остаток на складе, например 100 штук, товар можно забронировать, тогда его остаток на складе уменьшается на определённое число а в другую таблицу соответсвенно пишется запись о брони таким-то юзером такого-то товара. Собственно проблемы у меня начинаются когда допустим 10 потоков пытаются бронировать 1 товар. Например 10 потоков по 100 раз бронируют по 2-3 штуки товара, мне нужно чтобы: товар доставался первому бронирующему в честной конкурентной борьбе - кто первый бронирует, тому и достаётся товар не получилось так, чтобы забронировался товар без остатка верно подсчитывался остаток после бронирования верно сохранялась информация о брони Плдскажите в какую сторону копать пожалуйста.
>>2312160 Ну с дивана могу посоветовать добавить товарам блокировки, а лучше состояния. Кажется в СУБД такое искаропки есть. Смысл в том, что если товар получил запрос на некую транзакцию, он переводит своё состояние в "занято", и сколько бы ни было потоков, они при открытии транзакции получают ответ, что занято и надо подождать. Когда первая транзакция завершится, открывается вторая в очереди. Статус не меняется, очередь растёт. Насколько это уязвимо к хайлоаду я ХЗ. С дивана же советую.
>>2312458 Может кто-то спокойно обяснить что они хотят? потмоу что в их документации какая-то шиза от
Просто вставте копипаст себе на страницу и все будет работать до вам нужен этот айди, но зачем мы вам не скажем, а вообще запилите видео на ютуб как вы разрабатывали сайт.
>>2312801 Лол, тут оказывается не только я из волгограда. Вроде конторка интегрикс называется, я не подавал, но у меня друг туда кидал резюме и ему давали такое же тз.
Пр/в есть 10 классов у которых одинаковый конструктор, полостю. Т.е. один объект, как один аргумент и инициализация свойства класса этим объектом. Как сделать инициализацию проще? Один раз передали объект без усилий инициализации 10
>>2312845 >Вроде конторка интегрикс называется, Я х.з. не помню контору только город. >я не подавал, но у меня друг туда кидал резюме и ему давали такое же тз. Я тоже не подавал, кореш мой устраивался. Лол, может ты это я?
>>2312812 >И ты делал? поделись)))) Нет, не делал. Но там ничего сложного.
На бэке ебашишь сервис с бд, через асп.нет. В бд минимум две таблицы - одна с остатками товара, вторая в которой информация о зарезервированном товаре. У сервиса делаешь два маршрута. Один принимает заявку на бронирование, заявке присваивается гуид, она помещается куда-нибудь в кэш заявок (или отдельная, третья, таблица необработанных заявок в б.д. или синглтон какой-нибудь - на уровне задачи похуй, но в реале бд надежнее) и в ответ на запрос возвращает гуид заявки. Имея этот гуид сервис может обратиться по второму маршруту и узнать статус заявки: - необработана (заявка все еще в очереди) - обработана-товар зарезервирован, - иди нахуй - товара нет
Сам сервис по интервалу времени постоянно берет из кэша пачку заявок, смотрит сколько нужно товара, извлекает его из бд из первой таблицы (либо весь необходимый для покрытия заявок, либо сколько есть), раскидывает товар по заявкам в порядке их прихода, и помещает обработанные заявки в таблицу обработанных заявок с количеством зарезервированного товара. Те заявки на которые товара не хватило обрабатывай на свое усмотрение, либо просто выкидывай, либо в ту же таблицу но с пометкой "послать клиента нахуй". Это все можно кварцем прикрутить - норм будет.
На клиентской части просто делаешь библиотеку с двумя апишками. По одной делаешь заявку, по второй проверяешь статус. Потом цепляешь эту библиотеку к любой приложухе, хоть консоль, хоть wpf и в кучу потоков начинаешь резервировать товары.
>>2312160 Сделал бля, отправил на проверку, итог: Комментарий от тимлида: Вы смогли защитить код метода Reserve в рамках одного процесса - теперь представьте, что ваша программа работает в нескольких экземплярах. как будет работать бронирование товаров в этом случае? Я думаю, что Вам нужно еще подумать над решением.
>>2312067 Если у тебя в шарпе возникают такие вопросы, то ты где-то пошел не туда. Пальцем в небо могу предположить, байт на 50-100, для ссылочного типа.
>>2313944 Синглтон ебани потокобезопасный и мозг не еби. А на претензии, что не ООП-угодно говори, что пацаны во дворе сказали, что норм будет. А если честно, то х.з. мы же не знаю,что там у тебя. Алсо, если ты действительно устраиваешься в ту контору о которой я думаю и хочешь устроится, то спокойно переделывай тестовое и посылай по второму разу. Шансы пройти есть, если норм сделаешь. Можешь даже еще времени недельку попросить. >>2313908 > как сложно. Нипанятна Это уровень примерно 4...5 месячного вкатунца с говнокурсов. Т.е. даже не джуна.
Что в шарпе есть для реализации ECDH? ECDiffieHellmanCng - какая-то хрень. Во-первых, судя по тому что мне студия пишет - только под винду, во-вторых, слишком уж много возни. Мне-то нужно положить байтики публичного ключа клиента, байтики своего приватного ключа и создать таким вот образом сессионный ключ, чтобы закодировать сообщение. Пример от майков-то работает, но там нужно либо сертификаты, либо с байтиками, но тогда, как мне студия пишет - только под винду. Я наверное чего-то не понимаю или не знаю. Кто-нибудь с криптографией на шарпах-то дело тут имел? Можете пояснить?
Посоны, пишу на дотнете. Дома неплохой десктоп, но сейчас срочно нужен ноутбук на случай ... длительной зарубежной командировки. Нужен недорогой - на месте потом можно купить мощнее за валюту. Хватит ли i3, или прямо обязательно i5? В связи с затратами на... командировку все ресурсы на счету до цента.
>>2315494 Чел, ну что ты как целка выдумываешь тут командировки всякие. Так и скажи - "Пацаны я обосрался и съябываю заграницу роняя в спешке кал" А если по теме, то хуй тебя знает. Если ты каким-нибудь гейдевом на юнити занимаешься, то с i3 тебе будет мучительно и больно. Если ты крудошлеп, то тебе меньше за глаза хватит. Опять же не все от проца зависит, количество оперативы тоже критично, ну и слишком медленный винт тоже головной боли добавит.
>>2313944 Чел, я тебе могу сказать, уже то что тебе, джуну, тимлид хоть какой-то фидбек дал на твое тестовое, говорит, что ты не совсем пропащий. Т.е. если поднапряжешься и исправишь косяки, то имеешь все шансы вкатиться. Обычно все ограничивается отпиской от самой эчарши, вроде "вы нам не подходите", без подробностей. А чаще всего джунам даже не отвечают.
>>2315580 Я не знаю, что тебе ответить, это слишком сложно для меня. А остальные аноны треда по подвалам сидят без интернетов. Такщта воть. Держи няшку. Не расстраюйся.
>>2315580 Варианты: 1) Большинство не знает 2) Те кто знают, понимают, что это выходит за рамки стандартных знаний по использованию jwt, сертификатов и т.д. и такая информация не выдается просто так хуй пойми кому. И дело даже не в какой-то секретности, а в том что на получение подобной инфы приходится тратить усилия отличные от "посмотреть туториал все о шифровании за полчаса". 3) Мутный ты какой-то. Возьмет анон поможет тебе, а ты его же завтра скамить этим будешь.
Приветствую всех, ребзя. Коротко о себе: студент первого курса деревенского вуза, после 1 курса в голову ударила моча, и я понял, что нужно ебошить, чтобы стать специалистом. Сейчас планирую немного подзабить на ненужные дисциплины в вузе и вкатываться в Шарп(веб разработка). Учусь по The Player's Guide + metanit.com, решаю простые задачки, но понимаю, что нужно закреплять всё чем-то более серьёзным. Пока что 3-я неделя изучения, к ASP.NET даже не притрагивался. Может ли кто-то натолкнуть на верный путь, как лучше взяться за основы веба? Стоит ли вообще идти в веб, если интеллектуальные способности ниже среднего? Буду благодарен каждому ответу.
>>2316166 В принципе на форсмажорные времена сойдет. Если конечно ты не собираешься кучу серваков в докере крутить, то сойдет. Удачи в бегстве. Расскажешь потом как доехал.
>>2316348 >Сейчас планирую немного подзабить на ненужные дисциплины Плохая идея. Ты либо забивай совсем на все, либо тащи все. Преподы необязательных дисциплин как раз и кормятся с таких, как ты т.к. прекрасно понимают, что может тебе их сраная философия или история нахрен не нужна, но если ты не сдашь ему зачет, то хуй ты допустишься до сессии и соттветственно, хуй ты дальше пойдешь. Если уж решил забивать, то договаривайся с преподами сразу на берегу, в начале, что не будешь учить их предмет и во что тебе это обойдется.
>The Player's Guide Судя по описанию, очередная хуета для зумерков, для которых обычные методы обучения - "сложна,..". Модное обучение в околоигровой форме, для даунов у которых проблемы с концентрацией на одной теме длительное время.
>metanit.com Забудте вы про метанит. Это хороший сайт, но он не для обучения. Основное его назначение, это "бля забыл, как эта хуета правильно используется, загляну по быстрому в справочник". Если ты будешь по нему учиться, то мимо тебя пройдет дохуя нужной информации.
>Пока что 3-я неделя изучения, к ASP.NET даже не притрагивался. Еще полгода-год можешь и не притрагиваться, пока основы шарпа нормально знать не будешь.
>Может ли кто-то натолкнуть на верный путь, как лучше взяться за основы веба? Ебашишь базу, потом Asp.Net in action.
>Стоит ли вообще идти в веб, если интеллектуальные способности ниже среднего? Стоит учиться и становиться умным, тогда можешь хоть куда идти.
>>2316348 >Буду благодарен каждому ответу. Забыл сказать. Я бы советовал читать Албахари. Причем и полную версию для методического изучения. И краткую версию справочника таскать постоянно с собой, чтобы читать в свободное время и обновлять знания.
>>2316997 А что он должен выдавать? MemoryStream не поддерживает таймаут (в силу бесполезности) и сообщает об этом.
Почему MemoryStream? Да потому что клиент по дефолту он читает все тело ответа прежде чем вернет. И читает он его в MemoryStrea. Чтобы возвращал управление сразу после того как пришли хидеры, нужно указывать HttpCompletionOption.ResponseContentRead
Тогда можно будет сразу после получения хидеров получить поток и сразу из него читать (но конечно не в твоем случае ибо у тебя вообще положено на асинхронность .Result вместо await)
Есть переменные (пик 1) и проверка (пик2). Проблема в том, что когда я добавляю подобную переменную - мне нужно модифицировать и код проверки, а хотелось бы чтобы все добавлялось в одном месте. Сюда бы подошло что-то вроде енамов со стринговыми значениями, но их в шарпе, насколько я понял, нет. Есть ли какой способ использовать в коде именованные строки, чтобы можно было добавлять их в одном месте, не городить кучу классов для этого и не ебаться с рефлексией?
>>2317453 Ну, допустим... Я другого способа не знаю.
Можешь конечно запилить, допустим, словарик с Enum'ом ключ - элемент enum'а значение - строка. Но это дополнительно нужно будет всегда чтобы получить строку - обращаться к этому словарику, а проверка всегда будет сводиться к проверке значений в словарике.
А вот в жаве - есть енумы, которым можно какие хош значения прихуячивать. Вот я хуй знает почему все так копротивляются такие же в шарп добавить. Охуенная вещь же.
>>2317483 Да, я как обычно еблан, забываю что в Any можно так же передавать условие. Т.е. то что в Where - в Any можно запихать и на строчку меньше выйдет.
>>2317483 >Ну, допустим... 447>Можешь конечно запилить, допустим, словарик с Enum'ом ключ - элемент enum'а значение - строка. Так а профит в чем? Все равно для добавления нужно лезть и в enum, и в словарь.
>>2317453 Ну а если серьезно. Нахуа? Какой кейс ты пытаешься решить этим? Если ты используешь константы, то присваивая эти значения где-то в коде ты и так знаешь, что ты присваиваешь (хотя судя по тому, что ты называешь их переменными, ты слабо представляешь что представляют из себя константы в шарпе) Если ты берешь это откуда-то динамически, то нахуй тебе константы. Ну и судя по содержимому, все это вполне можно через какой-нибудь конфиг прокидывать и брать оттуда.
>>2317483 >Вот я хуй знает почему все так копротивляются такие же в шарп добавить. 1) С учетом того как устроены строки под капотом шарпа (а точнее clr) - нахуй не нужны 2) С учетом разных альтернатив (вплоть до запиливания собственного енама) - тоже нахуй не нужны.
Рантайм, тобишь БАЗА до сих пор на крестах, то есть без крестов это говно нормально нигде не запуститься.
Когда вы пишите на крестах, вам никто не нужен, но всем нужны кресты. Какая ирония. А могли бы один язык выучить и спокойно заниматься настоящим программированием, а не выступать в веб цирке с gay.js клоунами
>>2317648 >Рантайм, тобишь БАЗА до сих пор на крестах, то есть без крестов это говно нормально нигде не запуститься. Вот бы мне еще на это не похуй было.
>>2317648 > Рантайм, тобишь БАЗА до сих пор на крестах, то есть без крестов это говно нормально нигде не запуститься. Ты не понимаешь вообще, что такое рантайм, няша.
>>2317648 А в чем проблема? Ну gay.js так gay.js, почему меня должно сильно беспокоить, что где-то там в недрах CLR есть код на С++? Зачем дрочить на самодостаточность?
>>2247357 (OP) Есть задание, где пользователь выбирает раздел реестра. Как можно реализовать выбор раздел реестра?
Через folderBrowserDialog не может выбраться путь с реестрами, всегда мне выдаёт дефолтный "Мои документы", хоть я и кодом пытался выставить систему, потом в настройке на форме тоже выставлял систему, нихуя.
Стоит ли создавать сайт на си шарпе? Профессионально занимаюсь разработкой .net приложений и unity приложений. Поступил заказ на сайт. Стоит ли ебаться с си шарпом? 3 часа разбирался в ебанном пхп и ларавель, говнище полнейшее.
>>2317966 Реестр - это не папка где-то на диске. Это файл с базой данных где-то на диске. Стало быть, стандартным диалогом он не откроется. Вообще никак. Ответ тебе дали. Иди по ссылке читай.
Объясните плиз с MVC и EF: С 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, потому что в классе не описан (а в бд создался еф кором) Как мне такое вот сделать?
>>2318533 Вот оно, развращающее влияние юнити на мозги. Да, прикинь, должен.
Это, для тех кто не в курсе, у юнити принято класть хуй на модификаторы доступа и через атрибуты редактор юнити с лёгкостью получает доступ к приватным членам классов в скриптах. Это пиздец, нахуй!
>>2318747 Ну блин, я первый раз код Фёрст делаю, до этого всегда проектировал бд руками и скаффолдил так сказать, а в обратную сторону даже не подумал чёт
Надо запускать сканирование папки на наличие новых файлов (если файлы есть - отправляю по API контрагенту).
Так же, если есть файлы от контрагента - скачиваю их.
Я хочу это запихнуть в одну ViewModel и в конструкторе вызвать методы (условно) "Outbound.Start()", "Inbound.Start()", но есть одно но: я так полагаю это нарушает ебаный принцип единой отвественности ибо моя VM становится ответственнена за включение и выключение каких-то двух хуёвин. Че делать? Или норм?
>>2318875 ну всякие действия в конструкторе кроме присвоения полей - зло
ну а так...вьюмоделям такое норм. для них норма страдать от ожирения и быть перегруженными и данными для отображения и командами и прочим. Это неприятно, но типично, но неприятно
Конечно чем больше умеет тем больше ей нужно зависимостей и нужно как то распихивать это чтобы меньше было разношерстного в одной вьюмодели
так то VM в MVVM - НЕ ЗНАЧИТ что нужно делать канонично все. Нет никаких правил описывающих как именно должен быть реализован этот слой. Потому мудри что хочешь, лишь бы фреймворк позволял
Анончики, а что вот написать джуну в резюме? У меня 8 месяцев опыта работы. Текущее моё резюме выглядит так. Что можно добавить/удалить/изменить?
Изучаю 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, автотесты
>>2318944 зачем удалять что-то? имел дело с чем то,значит знаком и потому упоминаешь. Значит тебе не нужно с нуля изучать эту технологию. Ты же не утверждаешь что ты в этом списке во всем профи, а всего лишь то, что ты можешь с этим работать.
>>2318944 К 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" - не получится. Кто делал подобное? Как это делается?
>>2319137 да книги то не проблема. проблема - сами книги книги == очень медленное и обычно "не туда" повествование. Я вот не могу книги ну никак. только статьи, чужой код... А книги ну слишком нудно
>>2319152 Ты просто не умеешь работать с книгами. У книг есть оглавление. Есть номера страниц, которые можно пролистать по ссылке из оглавления. Прииикииинь? Оказывается, книгу не обязательно читать от начала до конца! Можно заглянуть в середину и даже (о ужас!) в конец и сразу узнать, чем закончится!
>>231932 >Оказывается, книгу не обязательно читать от начала до конца! А еще ее можно вообще не читать, а нагуглить материал, который подан сжато, доходчиво и под разными углами, чем выискивать где это в книге (книгах). Гугл = тоже оглавление
>>2319409 >Гугл = тоже оглавление По факту если ты правильно сформируешь запрос, то тебе первой ссылкой выкинет на тот же MSDN, который мало чем отличается от книги и у которого, вот сюрприз, есть свое оглавление. Дальше будет стековерфлоу, в котором тоже, прикинь, народ часто ссылается либо на ту же документацию, либо на те же книги. А дальше будет дрисня вроде рекламы, кривых копий стековерфлоу с кучей рекламы ну и видосы с индусами, которые на своем овечьем хинглише будут час тебе разжевывать, то что читается за несколько минут в книге. Редко когда попадается толковая статья которая рассматривает какие-нибудь редкие случаи.
>>2319989 >то что читается за несколько минут в книге. если это не решение какой то проблемы то so просто пропускаю если это не базовое "забыл пример". то и msdn (хотя можно просто загуглить "такое то + пример")
Остаются статьи в стиле "как сделать это и что это такое". открываю с 10к вкладок, читаю по диагонали, приходит понимание. с 99% вероятностью натыкаюсь на глубокую статью, которую кидаю в закладки как кладешь инфы по данному вопросу
>Редко когда попадается толковая статья которая рассматривает какие-нибудь редкие случаи. все относительно. ну да на 1 такую статью можно открыть 20 вкладок, но после нахождения онной цель достигнута и хлам можно закрыть
вот ты прочел в книге, но не понял, то ли подано неудачно, то ли не раскрыты детали что делать будешь? другую книгу брать?
>>2318049 Да похуй. Уже больше 50 часов потратил на изучение пхп и освоился немного. Особенно доставляет заголовки для элементов массивов и не типизированные переменные. Сейчас ебусь с фронтендом. Тут блять своих приколов дохуя, но вроде справляюсь.
У меня есть родительский cshtml (пусть будет GeneralProfile), в котором находится js функция getNumber, возвращающая ViewBag.Number. Есть дочерний cshtml (пусть будет DisabledProfile), у которого есть свой дочерний cshtml (Filters), в котором используется метод getNumber. Можно ли как-то в DisabledProfile заоверрайдить значение ViewBag.Number или жыэс функцию? Если да, то как?
Крч, решил потыкать реакт. Ну и создал проект из шаблона asp core + react. Нажимаю ctrl+f5, а студия меня нахрен шлет, видите ли у меня нода не установлена. И тут у меня встал вопрос: а нахуа? Реакт вроде это то, что работает у клиента, а нода - серверная часть, но у меня же сервер это aspnet, а он и без ноды прекрасно себя чувствует. Объясните что к чему, я в этих ваших жсах не шарю, а вы тут все фуллстеки 666к/нс.
>>2320371 >Уже больше 50 часов потратил на изучение пхп и освоился немного пхп хоть и пытается стать слаботипизированной жавой, но никогда не сможет избавиться от того, что он был рожден шаблонизатором, то есть своих детских болячек - автоперевод в int, безумные несогласованные названия всего, однопоточность, отсутствие исключений в ядре, невменяемая обработка ошибок и так далее. И что-то да обязательно вылезет на продакшене.
Помню у меня так вылезло боком стремление все переводить в число. Я сериализовывал и обратно словарик (ака ассоциативный массив) и в один момент все нае...упало. Оказалось, он при десериализации пытался ключи массива читать как числа типа '123abc' => 123. Полечил простым добавлением _ к названию ключа на записи и чтении, чтобы он не смог его в число превратить. Но узнал то я о такой подлянке уже в продакшене.
У пхп только один плюс - у него на одном пуле процессов можно сделать бесконечное количество сайтов (в отличие от того же руби/питона/шарпа).
Сап, анон, помоги разобраться, будь добр. В общем учу ЖС и чтобы понять что такое ООП начал ковырять шарп, в документации есть гайд по классам, начал его делать и соснул хуя, пруф на пике. Понятное дело, что в таком случае нам небходим сеттер, и что без него свойство является "только для чтения", но вот если я создаю простенький сеттер уровня: set { balance = value; } то получаю бесконечный цикл. Ориентируясь на знания из ЖС учебника я бы создал свойство private decimal _balance и balance с геттером и сеттером соответственно, но я не знаю насколько это легитимно в шарпе, так как это решения из сахарного недоООП ЖС, плюс в гайде об этом как не говорится. В общем как правильно поступить в этом случае? С меня как всегда.
>>2321204 >я бы создал свойство private decimal _balance и balance с геттером и сеттером соответственно так и надо. {get; set;} сахар всего лишь создает __backingField за вас. Но без этого сахара все ручками (в отличие от хотя бы котлина, где кроме ссылки на значения value есть и ссылка field)
>>2321263 Понял, а как тогда насчет конвенции? Я так понял через подчеркивание (_balance) в шарпе не пишут, а вместо этого геттер/сеттер называют с большой буквы, а свойство (поле?) называют с маленькой. Так и делать? Алсо как я понял все такие поля должны быть private, как опять же говорится в доках, но при этом при создании полей (свойств??) с {get; set;} используют public, и это логично, но не соответствует конвенции, можете прояснить этот момент?
>>2321267 При создании public свойств ты задаешь сеттеры / геттеры и в них пишешь свою логику. Можешь не просто public Zaloopa {get{ return zaloopa;} делать, а какую-то предварительную обработку.
>>2321267 >Понял, а как тогда насчет конвенции? Да как и везде - "кто в лес, кто по дрова" в исходниках фреймворка всякие m_state, s_LinkedTokenCancelDelegate
мне же нравится просто _state да и просто иду по пути наименьшего сопротивления "как принято в инструментарии", а у меня это решарпер.
правда и решарпер сам не знает чего хочет. задолбал постоянно жаловаться на
const string AnyValue = и предлагать переименовать в const string ANY_VALUE = а после перезапуска студии (или хз по какому триггеру) - жалуется и предлагает переименовать обратно. И так по кругу
Шарп бояре, помогите. начинаю изучать этот язык, мне необходимо выполнить лабораторную работу. склонировал репозиторий на комп, в солюшн эксплорере 2 проект - с заданиями и юнит тестами. Я не понимаю - их надо выполнять и проверять в первом проекте или создать новый проект и вызывать там методы из первого? Энивей при запуске без созадния нового проекта появляется ошибка как на пике 2. Почаны помогите, я совсем уже ебануляся...
>>2321267 >Понял, а как тогда насчет конвенции? Я так понял через подчеркивание (_balance) в шарпе не пишут, а вместо этого геттер/сеттер называют с большой буквы, а свойство (поле?) называют с маленькой.
В современном кодстайле в шарпе принято приватные поля класса называть с подчеркивания + lowerCamelCase Свойства принято называть в UpperCamelCase
Пихать логику в геттеры-сеттеры сейчас не принято (вроде как даже многие голосуют, за выпил этого из шарпа). Обычно, если ты это делаешь, то ты уже где-то проебался с архитектурой. Допустим, то, что у тебя на скрине >>2321204 уже нихуя не ООП-угодно. Это либо в отдельный метод нужно выносить, либо в отдельную структуру/класс
Привет шарписты! Очевидно, что у вас тут постоянно появляются вкатывальщики с однатипными вопросами, но всё же. Хочу вкатиться в backend и сейчас пытаюсь определиться с ЯП. Может кто-то дать дельный совет по этому поводу? Пока что выбор стоит между Питоном и Шарпом. На сколько я понял, без HTML, CSS и фреймворка JS тоже не обойтись. Вопрос вот в чём: если выбирать между Питоном и Шарпом, то с чем сейчас объективно легче найти какую-нибудь стажировку и в дальнейшем работу? В питоне есть совсем небольшой опыт, но толком все равно ничего на нём не писал. Просто у меня такое ощущение, что с Питоном вкатиться будет куда сложнее, т.к. его пытаются учить все кому не лень(я в том числе). Может посоветуете какие-то другие варианты? На Шарпе думал начать заниматься по курсу на ULearn + параллельно читать какую-нибудь книгу из шапки треда. С чтением/прослушиванием на английском проблем нет. Только на днях узнал про курсы Олежки Тинькова, но к сожалению, набор туда закончился в феврале. Заранее спасибо за ответы!
>>2322053 >Питоном вкатиться будет куда сложнее, т.к. его пытаются учить все кому не лень А также использовать все кому не лень. С ним проще найти работу.
>>2322053 Одногруппник сдал msdn'овский тест по .net framework (вроде, один хуй тест уже недоступен), с полученным сертификатом нашел работу. Я питонистом искал работу около года, нашел хуйню в которой питон почти не нужен был, уже в компании выучил шарп с дотнетом и сменил проект, месяца 2 назад сказал что хочу уволиться и мне еще замену не нашли.
Выводы делай сам. Как много питонистов-вкатывальщиков, так много и разных затычек на проектах для них -- дата инженегры, бекенд разработчики, автоматизаторы хуйни, чел чтобы включать кофемашинку. Я бы сказал что в обоих случаях сложность получения работы примерно одинакова, но рекомендовал бы шарпы, т.к. приучишь себя к полезным вещам в слабо-типизируемых языках. По поводу стажировок и курсов -- чекни епам тренинги и яндекс академию, объявления на хх.ру и линкедине или что у тебя в регионе популярно.
>>2322061 Спасибо за инфу, анон. А что думаешь по поводу Java? Насколько я понял, Java и Шарп очень похожи, но по ощущениям стажировок и прочего по Java больше, чем по .NET. Просто глаза разбегаются со всем этим многообразием языков, если честно. Сложно понять куда инвестировать время и силы
>>2322061 И да, можешь пожалуйста рассказать как ты примерно учил шарп и донет? Может какой-то курс проходил и читал что-то? Так сказать небольшой роадмэп бы увидеть, чтобы лучше понимать что учить и откуда брать
>>2322085 >как ты примерно учил шарп Открываешь справочник Албахари и учишь все подряд. В шарпе нужно знать все. А дальше забиваешь в поиске .net developer roadmap и подбираешь, то что тебе по нраву. Вот например вполне годный для бэкендера:
>>2321872 Погоди, тогда я ничерта не понимаю, вот у меня есть файл, я открываю стрим, и хочу его прочитать, но частями (предположим файл 14 гб а озу у меня только 8 свободно 4) тогда как мне прочитать часть стрима?
сап, у нас в вузе изучается .Net Remoting, я погуглил, мне на 1 же странице гугла выдает страницу 2003 года, эта хуета не используется как я понял уже?
>>2322390 ну так фреймворк никуда не делся. То, что кор пришел ему на замену, не значит что сразу все на него перешли. Дюже дорогое удовольствие. Так что шанс попасть на работу, где все легаси - довольно высокий.
Смотрите. Вот я в ef core делаю: var post = new Post(Images=_images) _context.add(post) И у меня и в табличке Posts и в табличке Images создаются записи (потому что есть связь 1-много)
А вот теперь если я из бд хочу пост с картинками достать (и хранить это в модели Post с полем list<images>) - надо писать linq запрос с джоинами и вот этим вот всем, или я что-то неправильно делаю всё-таки?
>>2322471 Оно в докере? Очереди прикрутил? Верстка адаптивная? Вебемки загружать можно? Что там с продажей пасскодов? Админкой?
Вообще. Я не верю что ты серьезно спрашиваешь. Я вот первую работу нашел, после того как в консольке сделал хелловорлд и на формах хуйнул рисование прямой по алгоритму брезенхема, кек. Просто решил, что хули я буду сидеть и нихуя не делать. Пришел на собес, сказал что знаю шарпы и перечислил технологии про которые слышал. Все. Взяли. Да, это было в 2020м. Так что да, можешь идти искать работу жуниором,
>>2322612 Это один из первых вариантов. Я потом вроде бы делал с нормальным выводом без мерцания. Но мне лень сейчас это искать, собирать и новую гифку записывать. Эта картинка просто валялась в удобном месте.
А вот такой вопрос Допустим есть абстрактный сервис который выполняется у него есть поле типа
public ServiceState State {get;}
и для желающих наблюдать за изменениями ну пусть будет событие такое
public event EventHandler<ServiceState> StateChanged = delegate { };
И вот у вас гуи, где юзер открыл окошко, оно подключилось к этому сервису и показывает актуальное состояние, юзер закрыл, переоткрыл, то есть нельзя подписаться заранее до старта сервиса.
Кто как будет решать проблему чтения текущего State и подписки на изменения без побочных эффектов от гонки потоков?
>>2323239 Ну смотри. Есть у тебя сервис, он работает, у него какое то свойство, которое меняется и событие, которое сигнализирует об этом изменении. Сервис изнутри меняет свойствои сигнализирует об его изменении.
Если просто читаешь время от времени это свойство, то все норм. И если подписался до старта сервиса, то тоже норм ибо события не пропустишь.
Но ты подключаешься в рэндомный момент и плохое решение выглядит так 1 свойство State = States.Foo 2 мы подключаемся, читаем свойство State, и собираемся подписаться 3 Пока мы шагали до подписки на событие, то State = States.Bar 4 Мы подписываемся на событие изменения и начинаем следить. В итоге мы изменение не видели и в полной уверенности что там Foo, а на деле оно Bar
Сап, я даун. Каким образом через EF добавлять данные из связанной таблицы в DataGrid и биндить для редактирования? Как-то забиндил, так теперь при изменении меняются значения в связанных таблицах.
>>2323373 Если у тя ObservableCollection забинжено к DataGrid, то просто повесь событие на CollectionChanged или чето типа того, а в нём просто добавляй и изменяй. К примеру:
void OnCollectionChanged() { if(item.Id == 0) //ну или чето другое database.Add(item) else database.Update(item) }
это очень грубо говоря и не самый лучший способ. Лучше повесить ICommand в котором изменять коллекцию и асинхронно изменять бд. А еще лучше - иди на ruSO, там очень быстро отвечают по шарпу пару челов
Сап, я новичок. Как правильнее будет сделать? Я через рефлексию получаю коллекцию каких-то различных типов(штук 5 видов в различных количествах) в формате object[] и передаю его как лист в определенную фабрику в зависимости от задачи. Там они просто кастятся к нужным типам/провожу валидацию и создаю готовый объект. Мне очень не нравится, что приходится в фабрику передавать лист обджектов. Это вообще норма или хуйня и нужно переделать? Если переделать, то как? Думал насчёт анонимных типов. В эту сторону гуглить? Или dynamic параметр сделать? По скорости и затратности каста мне разницы нет, это происходит только один раз, дальше просто эти данные живут на протяжении всей работы.
>>2323291 >>2323007 >>2323252 Просто ты проблему на пустом месте создаешь. Классический подход при решении такой хуйни: у тебя есть стейт где-то. Текущий стейт при этом иммутабельный. И он - единственный источник истины. Как там есть - то и считаем правдной. Так вот. В контексте классических приложений этот стейт кладут в БД. Все. В контексте фронта - его выносят в какой-нибудь редакс, ngrx или vuex. Все. Твои сервисы - свое состояние коммитят в БД/стор. Твои вьюшки достают из бд/стора при коммите новое состояние. БД/Стор - при этом иммутабельны по своей природе, пока там что-то пишется, тот кто возьмет данные - получит правду на момент обращения, когда коммит будет завершен - он будет оповещен и елси нужно - обратится снова и получит новое состояние.
Если тебе не нравится так и ты хочешь стейт прямо в сервисе хранить. Ну ок. Ты делаешь его иммутабельным, реализуешь потокобезопасный коммит(это уже детали реализации как ты это делать будешь). Любой кому нужно узнать текущий стейт - получит копию закоммиченного на момент обращения, при очередном коммите стейта - ты просто оповещаешь тех кому надо о том, что стейт был закоммичен - достаньте новый и сделайте что вам там надо. Если тебе нужно в две стороны это все делать, т.е. из вьюхи как-то менять стейт сервиса - опять же, была бы база - это бы сразу решало проблему. Но ты видимо принципиально не хочешь базой пользоваться, тогда выносишь стейт в промежуточную сущность, обзываешь его чем-то типа vuewModel или controller и вот так вот коммуницируешь.
А про гонку и прочее. Оно тут вообще ни к селу, ни к городу. В том кейсе который ты описал - там никакой гонки быть не может в принципе, т.к. сделать безопасное чтение, при условии что пишет один поток - не представляется чем-то сложным, а ситуация когда стейт меняет несколько потоков - долбоебизм.
>>2323542 Я его использую. Просто у меня в конечном итоге получается массив к примеру {string, bool, mytype, int}. И меня интересует как лучше его передавать параметром. В каждой фабрике я уже знаю на каком идексе какой тип и какие могут отсутствовать. Поэтому могу просто (string)param[0] перекинуть в конструктор, либо посмотреть после каста значение и дальше решать кидать его или нет.
>>2323462 >Так вот. В контексте классических приложений этот стейт кладут в БД. Все хватит мыслить категориями классических CRUD приложений с базами данных. я говорю совсем про другую проблему. Она ближе к теме "события + мультипоточность" (для примера вот https://www.codeproject.com/Articles/886223/Csharp-Multithreading-and-Events ) И базы данных там даже рядом не лежало. В приложении вообще может не быть никакой базы данных. ты просто зацепился за слова сервис и стейт из примера. И понеслось
Хорошо. пусть это будет датчик (много датчиков) и его состояние. Датчик может менять свое состояние и делать это может как триллион раз в секунду, так и 1 раз в год, то есть время смены состояния неизвестно. И у него есть свойство где можно прочитать текущее значение, ну и событие чтобы подписаться на изменения. И очевидно!!! что база данных тут вообще не к месту - какая разница где хранить текущее состояние? - А НИКАКОЙ. Нет никакого смысла где-то еще хранить, если у нас оно и так хранится в свойстве - бери да читай.
И вот тебе нужно в РЭНДОМНЫЙ момент атачиться к этому датчику и начинать активно за ним следить, переставать следить, снова подключаться.
>А про гонку и прочее. Оно тут вообще ни к селу, ни к городу. И гонка тут как раз основа всего. Тут хранение состояния "где-то еще" нахер не нужна, ибо и так у датчика можно спросить актуальное состояние. И проблемы чтения стейта нет - бери да читай, это атомарно. Тут проблема "чтения текущего значения + одновременной подписки"
Если прочитать и сразу подписаться, то можно пропустить переключение. Если подписаться и начать читать, то обработчик может сработать раньше и выполнить код, который нельзя на этот момент выполнять (еще не было чтения и первичной инициализации)
И тут решение нисколько не простое.
Навскидку можно несколько вариантов - использовать SyncRoot ( это тот который антипаттерн) со всеми его недостатками - заставить этот датчик использовать SyncronizationContext. Работать будет, но тогда любому, кто будет использовать датчик, нужен будет работать в таком контексте. - Если у нас UI, то у нас есть Dispatcher и мы подписываемся, но в подписке планируем обработчик выполниться в UI потоке, а раз мы в нем находимся, то его выполнение станет после нас. (то есть это решает мой пример, но я говорю про общий случай) - замудрить свое событие которое будет сразу выдавать последнее значение при подписке, а-ля SharedState в андроиде, то есть это уже не событие, а целый IObservable с выдачей последнего значения подписчику (и в общем то неплохо, но это уже велосипед и это опять же применимо если мы пишем класс датчика. Да и где взять готовое такое, самому писать чистое решение не так просто) - расчитывать на авось и в один момент получить хрень (даже нет смысла обсуждать)
>>2322062 Собеседований 10 было, обычно присылали отказ либо игнорировали. >>2322079 На жабу действительно больше вакансий и стажировок. Ничего не думаю. >>2322085 С# Players Guide + metanit + дали написать мини-проект, вот по нему гуглил моменты и с разных сайтов инфу впитывал.
>>2323750 Потому что эту хуйню никто не обновляет. Я помню три или четыре треда ныл, чтобы добавили .NET 5 наконец-то в ОП пост. Уже давно .нет 6, а его никто в оп-пост не добавил
>>2324109 >MAUI хуже других ибо другие хотя бы поддерживаются их авторами (а не пойми кем) на линуксах Что ты несешь? Майки сделали мауи они и будут поддерживать. Или майки это непойми кто?
>>2324409 Вообще, разницы нет особой, можешь хоть с 7-й начинать, превью уже выпустили. Их каждый год выпускают, разница небольшая. Ну а вообще, если тебе это так критично - то 6, это LTS версия, 5-ю нет смысла никакого изучать.
>>2324376 >Главное что андроид поддерживается Так андроид и так работает на хамарин. MAUI - это попытка принести хамарин на десктопы. И заявлять что "нах нужен ваш десктоп, главное андроид"....
>>2324472 >ну какой MAUI на линуксе А зачем он тогда нужен вообще? чтобы мобильщики могли писать под десктоп? Ну может быть. А остальным оно нафиг не нужно
>>2324409 На новые проекты где сразу юзают онли 6-й .net, сейчас берут в основном стронг мидлов и синьоров. Тебя туда не возьмут. В конторах куда у тебя есть шанс вкатиться скорее всего юзают core 3.1 или потихоньку переползают с него на .net6. Чтобы туда взяли нужно уверенно знать и 3.1 и понимать чем от него отличается 6-й. Поэтому твой выбор 3.1
>>2324690 >без линукса это не единая база Линукс - конкурирует с основным продуктом, для него не нужно. А то напилят еще программ на линукс, кто тогда винду покупать будет?
Я щас поставил шаблоны MAUI через dotnet new и создал простое приложение, чисто повтыкать в файлы шаблона, потому что оно у меня ожидаемо не запустилось, потому что я из под линукса сижу. Дак вот чо. Майкрософт в своём репертуаре. Сгенерированный пустой проект-хелловорлд содержит в себе кучу нечитаемого xml-говна, манифесты, манифесты, тысячи их! Сделано всё специально так, чтобы разобраться в этом можно было только через формочки-редакторы в вижуал-студии.
Нет простоты, элегантности и лаконичности нет. Как например, если я создам шаблон приложения в Eto.Forms, создастся 4 папки, по два-три файла в каждой: 1. Платформонезависимое окно, компилирующееся как dll, файлы: проект и шарпокод. Если выбрать шаблон с кодебихайндом, будет третий файл хамл. 2. Приложение GTK, компилирующееся как запускаемый бинарник, файлы такие же, проект и шарпокод. 3. Приложение Шындовс. 4. Приложение МАК.
Но у Eto.Forms другой минус (для зумера) там по умолчанию нет андроида и его надо пердолить ручками самостоятельно, и для макак с галер есть минус, нет модного MVVM шаблона, все модели и вьюмодели надо создавать ручками.
Бумеру инди-девелоперу же, взросшему на Дельфях в эпоху Ильхама Мокрописечного - тут одни плюсы.
>>2324991 Ах да, самое главное забыл. В МАУИ все платформы перечислены внутри едиственного проекта, который тянет все зависимости, но просто логикой внутри огромного раздутого файла-проекта их переключает.
В Ето.формсах 4 проекта в 4 отдельных папках, каждый со своими зависимостями. Кому-то это может показаться неудобно, я же проникся мощю этого гениального подхода. Кодишь на винде - не думаешь о зависимостях линукса, запускаешь нативную приложуху и она работает. Надо перейти на линукс - переходишь в папку с линуксовой сборкой и конпелируешься оттуда, не думая о зависимостяз венды.
>>2325559 Любой покупающий бумажную техлитературу в 2z22 - всрался. Бамажка устарела аккурат в тот момент, когда на типографии отпечатали половину тиража.
Бумажку имеет смысл покупать если ты бумажкофил, любишь переворачивать хрустящие страницы и вдыхать аромат белил с чернилами.
>>2325577 Ну почитаю, скажу свое мнение Я так то решил вкатится не в шарп, как таковой А в шарп в контексте юнити В гейдев треде думаю не так быстро и качественно ответят как тут
>>2325601 > шарп в контексте юнити Выше в треде уже давали подробный расклад по данному вопросу. Ищи юнити поиском по странице. Бумажная книжка такого функционала тебе не предоставит.
>>2325559 2018-й год Ни слова про коллекции, дженерики, интерфейсы, linq и прочую базу которая сейчас мастхэв. Судя по содержанию книга даже не для студентов, а для совсем школьников.
>>2325807 Но ведь в c# нет такого типа данных как "object" в отличии от JS. Точнее есть, но насколько я сейчас понимаю он просто позволяет не писать конкретный тип данных. Не могу понять как создавать подобные вложенности. Через классы или через библиотеку получается какая-то хуйня, которую не понятно как инициализировать, хотя очевидно это я что-то не то горожу.
>>2325814 Я пытаюсь набросать тебе пример через анонимные типы, но он не компилится в онлайн ИДЕ, а студию мне запускать впадлу. Если тебе надо прям вот так же динамически, можно ещё заюзать сторонние либы, например ньютонсофт ЖСОН.
>>2325819 >>2325814 Если же без анонимных типов и прочей динамической пидерсии, то тебе надо сначала описать элементы коллекций, а потом завести коллекции. Строго типизированно.
Это нормальное поведение? Первый раз с такой хуйней сталкиваюсь просто. Есть enum Keys из форм с кучей констант. Хочу стринг конвертить в него. Юзаю Enum.Parse. Например в таких случаях работает корректно: Enum.Parse("A"), true); // A Enum.Parse("Asd"), true); //exception А в таком он мне не кидает эксепшн: Enum.Parse("A,S,D"), true); Возвращает W.
>>2325752 >в контексте юнити А, сорян, проебался. Ну тогда, учитывая насколько дерьмовая реализация шарпов в юнити, лучше тогда книжку постарше поискать, года так 2008-го.
>>2322389 Блять, я понять одного не могу Это какая то загадка человечества величайшая Как, с такой всратейшей системой образования (высшее) где изучается некро говно 2003 года, русский програмист спокойно перекатывается забугор и работает и его все облизывают? Это единицы "вопреки" или как? Как ВУЗы учащие некромантию способны выпускать студентов наносеков?
Вкатуны есть которые вкатились за последние пол года? Травите байки. Ебаная "спец операция" половину ваканский порезала. Хуй знает как теперь вкатится. Всем опыт нужен блять от года.
>>2326272 Всё очень просто. Если ты изучил БАЗУ, если ты изучил КЛАССИКУ, БЛЯТЬ, КОТОРУЮ ЗНАТЬ НАДО, то тогда ты с лёгкостью осваиваешь любой зумерский фреймворк, который отличается от дидовских тулкитов только тем, что в нём А заменили на Б. Поэтому в вузах преподают ОСНОВЫ, вплоть до командных интерфейсов.
>>2326259 Гм. Если тебе даже Васильев не понятен, то что-то серьезнее тебе читать еще бесполезнее будет. Тебе надо на какой-нибудь совсем базовый курс, где тебе расскажут о программировании без привязки к языку и технологиям. Я х.з. какой-нибудь школьный курс типа scratch-а или еще, что-нибудь.
>>2326272 >Как, Про базу верно уже сказали. Еще один момент - ограничение инструментария, при должной мотивации, дает неплохой буст развития. Т.к. мозг учится обходить все эти ограничения, решая попутно множество интересных сопутствующих задач. Ну а айтишники в РФ всегда были поставлены в позицию тех, кому нужно изъебнуться, чтобы достичь результата. Начиная с взлома игрушек и винды, по причине невозможности их купить, и заканчивая самостоятельным изучением и доработкой технологий, которые недоступны на данный момент. Ментальность такая. Пока условный западный прогер будет сидеть на жопе и ждать когда ему подадут нужный для работы инструмент или технологию и обучат им пользоваться, условный местный прогер возьмет все сам и сам научится. ЛУчшие художники тоже всегда сначала учились сначала простым карандашом рисовать, а не со всего набора красок начинали.
>>2326272 >Как, с такой всратейшей системой образования (высшее) >где изучается некро говно 2003 года, русский програмист спокойно перекатывается забугор и работает и его все облизывают? >Это единицы "вопреки" или как? Как ВУЗы учащие некромантию способны выпускать студентов наносеков? 1. Да, это единицы "вопреки". 2. Традиция программирования еще не вполне образовалась, а, учитывая что задача вузов - именно приобщения к традиции, они для программирования не особо нужны.
Короче. Есть несколько АйПи-камер. Что я хочу. Я хочу чтобы они подключались по ВПН к моему серваку, ну а дальше, пользователь входит и в зависимости от прав доступа - смотрит что там на камерах. Так вот. На текущий момент - я как делаю, я просто храню АйПи, пользователь должен руками настраивать ВПН, на фронте он клацает на камеру, его через ВПН подключает к нужной камере. Момент с настройкой ВПН мне не нравится. Заеб для пользователя и вообще какая-то хуета, типа тот кто подключился к ВПН - может в обход основного приложения доступ к камерам получать. Так вот. Что я хочу. Я хочу чтобы ВПН был только между мной и камерами, а пользователь, только после входа в приложении - мог подключиться. Как я сделал. Я сделал обычный мидлвар, который после проверки прав доступа - просто шлет запрос камере, отдает пользователю. Ну, собственно, в чем проблема такого решения. В том, что камеры сейчас дюже умные, не только картинку стримят, но и имеют возможность настройки и прочего. В связи с этим возникает хуета, типа у камеры фронтенд - всякие ссылки вида /settings, /dashboard /hui/zaluipa использует, оно соответственно шлется на мой сервак, который таким образом не знает куда роутить маршрут и отдает 404. Так вот. Как по человечески делать-то такую хуйню? Я пока что придумал только: смотрим куку, если в куке обращались по прокси, считаем что это запрос по прокси и соответственно роутим к последней камере. Думаю в чем проблема тут - ясно, если маршруты совпадают - на сервак мой без чистки кук уже не так просто попасть будет, ну и плюс - если камеры одинаковые - роутить будет к последней подключенной, разве что я буду чистить куки при обращении к новой камере каждый раз. Может быть есть какие-то предложения, няши? Да, я загуглил, есть такая штука как YARP, но чет оно какое-то сложное, а простые примеры - это статичная прокси для одного маршрута, а нужно, условно, по запросу /api/cam/{id} - посмотреть в базе, проверить права доступа пользователя, ну и если все ок - послать запрос к нужной камере и дальше типа чел с камерой работает.
Господа. Сегодня зачем то решил обновить студию 22 и вылезло окошко об ошибке, что .нет 4.8 не может обновиться. Пробовал чистить кэш, переставлять заново и студию и лаунчер, но все одно и тоже. Кто нибудь сталкивался с подобным?
Аноны, может кто сталкивался с контрактным тестированием, с использованием Pact, и может поделиться годным репозиторием с примерами как для дебилов. Что бы прям пошагово и понятно. Буду очень благодарен.
Здарова, шарпаны. Помогите, я тупой. Вот есть у меня асп где
Контроллер { Метод(данные) { Тут пишем в данные в бд Вопрос Как вернуть приславшему данные "Все норм, ок, понял, принял записал" А потом тригернуть другой метод (может в другом классе, неважно), который уже на моей стороне спокойно займется чтением и обработкой этих данных в бд } }
>>2327433 Если тебе не принципиально что сначала вернуть, потом - триггернуть, то делаешь простой медиатор, на стороне контроллера - триггеришь, на стороне того кто должен что-то делать - делаешь. Это, что называется - самое простое решение. Можно и по другому: Делаешь класс: TasksQueue, в нее просто кидаешь лямбду с задачей, которую ты собираешься спокойно выполнять, делаешь обработчик этой очереди, как - сам решишь, вон предложили уже IHostedService. Решение чуть сложнее и нужно исключительно если у тебя нужно как-то ограничивать нагрузку, при этом как человек пользоваться нормальными очередями и лоадбалансерами - ты почему-то не хочешь. Можешь, как человек - делать Event Driven архитектуру. Твой контроллер - просто передает хендлеру и ждет ответ, хендлер уже кидает кидает события, у события могут быть миллиард обработчиков. Пример хороший - IdentityServer, они вот так как раз и делают.
>>2327617 Вообще изначально что-то подобное и планировал с асинк/эвейт, но теперь с новыми советами еще по-другому попробую Я правильно понимаю, что вот в этом месте вернет id только когда дойдет жо первого await в вызываемых методах? Т.е. после первого await в DoWork в данном случае?
>>2327774 > Я правильно понимаю, что вот в этом месте вернет id только когда дойдет жо первого await Ну да. Если это критично - можно сделать вот так: _workTask ??= Task.Run(async () => await DoWork(_stopWorkTokenSource.Token)); Тогда ты еще до входа в метод выйдешь на верх и вернешь Id.
Как я понимаю, в C# есть 3 типа сущностей: валью тайпы, хранят данные фиксированного размера по месту, классы - хранят ссылку на объект фиксированного размера в куче и строки/массивы - почти как классы, но со своими заморочками, по типу незаданного размера и прочего. Как в эту систему вписывается тип Span<T>?
>>2327851 Для всего выделяется память. Span - унифицированный доступ к куску памяти, где бы она не была выделена. И нет у строк и массивов никаких заморочек.
>>2327851 Держи просто в голове, что все - это просто память с которой ты работаешь. Велью - могут лежать в куче, а референсы, при определенных условиях - на стеке и сразу же освобождаться. Никакой магии тут нет на самом деле. Это разделение нужно скорее для семантики, а не сути. Span<T> - обертка над памятью, раньше бы ты то же самое делал unsafe кодом, но unsafe'а боятся нубы(да и не только нубы, а еще те кто с шарпа-жавы начинал), будто это какая-то черная магия, которая скораптит и они будут долбиться указателями в сраку. Ну, потому придумали оберточку удобную в виде легкой структурки, которая соответственно еще и не нагружает GC.
>>2327854 >И нет у строк и массивов никаких заморочек. Ну как же нет, когда есть. Т.е. про что там по строкая - я плохо представляю (я смотрю на https://source.dot.net/#System.Private.CoreLib/String.cs,8281103e6f23cb5c и для меня это как эльфийский, насколько же C# отвратный непонятный язык), а вот массивы - я уверен, что они с точки зрения памяти совсем по особому управляются, хранятся и обрабатываются, не как классы.
>>2327855 >Ну, потому придумали оберточку удобную в виде легкой структурки, которая соответственно еще и не нагружает GC. И вот с организацией этой оболочки мне и непонятно. Т.е. определяется оно через структуру, но там же тоже все как на эльфийском (https://source.dot.net/#System.Private.CoreLib/Span.cs,d2517139cac388e8), и мне вот интересно, это просто хитровыебанная структура, или это магическая структура, по типу как аррей - магический класс, который на уровне clr обрабатывается особым образом, не как все другие классы.
>>2327886 >Т.е. про что там по строкая - я плохо представляю А не нужно туда смотреть. Там помесь unsafe с интристиками. Собственно, для этого и придумывают языки высокого уровня, чтобы не смотреть вот туда.
Магия - это когда компилятор видя какой то тип, начинает обрабатывать его по своему и без этого такой тип не создать (вот в компиляторе и jit такого хватает). И строка не является магией - самая обычная ссылочная структура с доп хидерами. Можешь изи написать свой класс строку и использовать аналогично.
Про массив ничего не знаю, но не вижу смысла рантайму как то к нему по особому относиться, кроме разве что особого синтасиса. И массив можешь написать.
А вот Span являются магическим. Там есть особенности завязанные на рантайм, поэтому в неткор они работают лучше чем в старом фреймворке, где есть ограничения.
Аноны, на странице регистрации есть один комбобокс в который я загружаю данные из базы в конструкторе. Есть в страницы OnPost в которой проверяется правильная ли модель и если зарегистрировать пользователя не удалось то добавляются ModelState.AddModelError() и делается return Page(); (а при валидности всех данных идет редирект на страницу входа). Все ошибки подсвечиваются НО, после этого у меня комбобокс на странице абсолютно пустой, хотя сам конструктор через брейкпоинт срабатывает. Что я делаю не так?
Где блять искать РАБоту?
Аноним03/04/22 Вск 18:48:36№23282611764
Может быть мне кто-то тут поможет...
Короче вводные: Есть вышка по ИТ, сейчас получаю магистра. РАБотаю 9 месяц разработчиком ERP говна (Microsoft AX) на языке, схожим с шарпом. Шарп тоже изучил базу, в ооп могу, но делегаты с интерфейсами и LINQ со списками не умею. До этого РАБотал помощником сисадмина, изучил сети. Есть гит, на нем лежат разработанные тулзы для VS, для разработчиков сделал. Еще на юнити игру написал. Однако не знаю паттернов проектирования и алгоритмов всяких. Английский С1 деревенское есть, и сертификат тоже, но не долбаеба.
Вопрос: где блять искать работу? Хочу со своих 30к перекатиться куда-то в более приемлемое место, хотя бы на 50. Какую сферу деятельности смотреть? Смотрел гейдев, но там нужны онли мидлы, а я себя с трудом джуном назвать могу. Ищу везде: ХХ, Хабр, Линкедин - все по нулям нахуй. Никому не нужен. Руки опускаются конкретно, особенно на фоне моих дногруппников которые якобы нихуя не умеющие вкатываются на 70к в месяц. Что мне делать? Муравью уже хуй приделал, не помогло.
>>2328407 Жизнь лотерея. Не всем удаётся ухватить джек-пот взамен на потраченные усилия.
Делай персональные проекты, нарабатывай портфолио. Лет через 5 работы на заводе и писания своих проектов вечерами, наработаешь авторитет и найдёшь работу по специальности.
>>2328412 Дык я сейчас на айти заводе работаю по сути. А то и на айти каторге. После которой сил вообще не остается, а потом учеба. Опять же сил только на одну игру хватило, и на расширения, но не очка. Ну и с учебы пара сайтов есть на пейтоне, но это я даже за проекты не считаю
>>2328261 Забудь про геймдев. Он и до события в РФ был почти что мертв. А сейчас когда все площадки для сбыта огородили, уже не почти. В твоем случае нужно делать:
1) Составить нормальное резюме. Находишь хорошую херочку и просишь оценить, и сказать что и как поправить. Можешь заплатить бабок или еще как ее ублажить. Но факт в том, что в первую очередь твое резюме будет смотреть эйчар, и ориентироваться надо на нее. И я говорю не про понравился/не понравился. Им на это давно уже похуй, через них в день настолько дофига проходит кандидатов, что они как роботы кандидатов рассматривают, только на то, подходят они под нужные параметры или нет. Половина времени твое резюме даже не открывают, т.к. видят первые несколько строчек и закрывают вкладку.
2) Вариант долбиться в вакансии где дают тестовые. Берешь тестовое и делаешь. Похуй на то укладываешься в указанные сроки или нет. Делаешь, отсылаешь, просишь фидбек. Не получаешь, идешь к знакомому, на форум, к преподу и просишь тоже самое.
>>2328427 2 вариант годный, надо попробовать, а насчет первого, мне говорили что у меня норм резюме (хотя на дваче обсирали конкретно).
Я валился именно на собесе, даже если собес хорошо проходил. За исключением тяжелых где я сам понимал что тупой в основном собесы состояли из примитивнейших вопросов, на которые я отвечал и мне говорили что я молодец. А потом слали на хуй. Или было когда отбор в несколько ступеней, сначала пишут что я успешно прошел этап и со мной свяжутся для следующего а потом тупо игнорили (это я так в МТС проходил). А самое крутое было, когда на вопрос почему меня не взяли, мне сказали "вы уже обладаете высоким уровнем знаний но их к сожалению недостаточно до базового уровня". Понимай как хочешь.
>>2328420 Да, я ловлю себя на мысли что у меня выученная беспомощность. Но сука, а как ей не быть если все вот так?
Эх, если бы блять была работа где бы мне платили за мое нытье... Я бы заработал миллионы а потом уволился потому что причин для нытья нет, пошел бы к психологу или психиатру, вылечился бы и начал бы нормальную в моем понимании жизнь с нового листа. Если б да кабы...
>>2328441 >вариант годный, надо попробовать, У меня достаточно много знакомых, кто именно так и вкатывался. Брал тестовое, делал хорошо-качественно и потом проходил. Тут главное две вещи, сделать качественно и потом смочь пояснить за каждую строчку кода, т.к. две неделю-две над ним пыхтел и сделал все по чесноку. >>2328441 >а насчет первого, мне говорили что у меня норм резюме (хотя на дваче обсирали конкретно). Я вот тоже так когда-то думал и не понимал почему мне никто не отвечает. Потом одна опытная херочка (из тех которые только 500К наносеков хантят) подсказала что и как у меня неправильно и заставила переписать, хотя я и сильно сопротивлялся, думая что это полная херня. И мне неожиданно сами начали названивать и приглашать на собесы.
>>2328441 >состояли из примитивнейших вопросов, на которые я отвечал и мне говорили что я молодец.
Нормальный собес должен по времени распределяться где-то так. 40% времени ты отвечаешь на вопросы. 40% времени это попизделки о твоем предыдущем опыте, и 20% презентация для тебя фирмы в которую ты устраиваешься. Если у тебя на ответы на вопросы уходит 80% времени, то это плохо. Ответы на вопросы не должны быть тупо по учебнику. "Что такое x? - x это 'определение' " - плохой ответ. Нормальный ответ: "Что такое x? Да знаю, это то-то и то-то, я вот такую штуку делал и мне x там очень пригодился, а вот в другом случае я вместо него y применил и вообще обалдел"
В третьей части, тоже важно какие ты будешь задавать вопросы, когда тебе про контору рассказывают. Если ты спросишь "сколько платят и где у вас можно посрать/поспать/пожрать" - твои цели понятны. А вот если спросишь какие инструменты используются, какой флоу при работе с vcs используется. Какие технологие тебе стоило бы еще подучить по их мнению. То намного больше расположишь к себе.
Алсо, насчет контор типа МТС и прочих подобных больших шарашек. Там часто собесами просто штаны протирают, чтобы массу просеять и ходить на них стоит только ради опыта прохождения собесов. Лучше искать конторы поменьше, человек на 100...200. Там может и не по верху рынка платят, но вполне приемлимо. И новичкам больше рады.
>>2328662 > идей для пет проектов дадите? Народу не хватает визуального (WYSIWYG) дизайнера форм. Чтобы он отдельно запускался. Чтобы конфигрурировался под разные форматы: xaml, axaml, xeto, jeto. Чтобы мог из одного в другой формат формочки конвертировать, открывать, сохранять. Цены бы тебе не было, если б ты такой дизайнер запилил. Представь себе, есть например, софт на WPF и разраб хочет поставить его на кроссплатформенные рельсы. От осознания что весь ворох форм ему придётся заново дизайнить в другом UI-тулките он приходит в ужос! И тут появляешься ты, спаситель, со своим многоформатным дизайнером форм!
Смотрите. Ef core с пятой версии может many-to-many сам в бд в три таблицы превращать (без дополнительного указания в коде промежуточной сущности). И в коде собственно без проблем делаю муди = хуй.инклюд(х=>х.яйца). Но доступ к яйцам тогда получается только через for/foreach.
А можно ли без промежуточной сущности в коде тогда получить аналог хуй.join(ХуйЯйца).Join(Яйца)? Или как бы сахар сахаром, а как что-то сложнее - делай третью сущность?
>>2329090 ну напиш код где после Wait заканселишь нужный токе и этот код в пул потоков. Ну заблокируешь один поток из пула если свой не создашь. Не хочешь блокировать - юзай асинк WaitHandle
Я правильно понимаю, что у 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#. До конца неделю подтяну базу по ноде и реакту, и буду рассылать резюме на жс-ера. Нужно спрыгивать с поезда, пока он еще не слетел в обрыв.
>>2329174 >можно решить десятком разных внешне непохожих способов, и что? даже в питоне, который типа идеал единообразия - та же самая картина
>но и адские кучи адского говнища ну из говнища там разве что топ левел маин и следствие от него. лютая ненавистная дичь. Что еще? в остальном шарп страдает что не добавляют нужного в угоду чем то бесполезному
>>2329174 Мне похуй, мне просто C# нравится. PHP и JS я пробовал и даже делал небольшие проекты и больше на них не вернусь, это реально конченная срань. >любая задача решается подключением библиотеки Из личного опыта - либы на жиес часто забрасываются и депрекейтятся, из-за чего и сборщик орет матом, и гвард гитхаба тоже орет матом что там в либах критикал вулнерабилитиес. npm это похоже реально русская рулетка в которую нужно играть постоянно.
>>2329255 Например так обычно делает переопределение var List = List.Select(item=> { item.field1= 1; item.field2= 2; item.field3= 3; return item; }).ToList(); А я не знаю, какие field мне могут понадобиться и должен как-то на лету их подставить.
>>2329263 Как? У меня была какая-то похожая идея, но как по мне это хуйня. Потому что нужно именно оригинальный лист нужно переопределить, ибо он привязан к интерфейсу и обновлённые данные должны там отобразиться, а если просто на основе его что-то там собрать, то толку не будет
>>2329261 и что с этим решением не так? То, что изменяет оригинальные item? ну делай клоны. Ну или использовать recod .. with - где те же клоны за тебя пишет компилятор
>>2329287 >и что с этим решением не так? То, что я не знаю заранее ни какие филды мне надо будет переопределить, ни их количество. Инфа об это приходит из другого метода в виде строк
>>2329289 Ну значит использовать кодогенерацию. Сделать какой нибудь PropertySetter у которого вызывать propSetter.Set(item, 'PropName', value) Конечно будет боксинг, но работать будет
>>2329238 > игру разработать успел Показывай. > надо что-то чуть потяжелее но не пиздец какое тяжелое Инженерный калькулятор с простыми дробями, графиками функций и т.д.
>>2329440 > чтобы на собеседовании потом не косились с видом "Ты зачем это делал? Ты что, идиот?" Без обид анон, но если ты уже так думаешь, то скорее всего на тебя уже косятся, ЧТО БЫ ТЫ НИ ДЕЛАЛ.
>>2329478 >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 минут, чтобы разобраться с базовым функционалом"
>>2329377 Да там ничего сложного. Прочитал тип, получил все свойства и для каждого создал setter_writer любым удобным способом - кодоген через expression/emit или вообще без онных - используя virtual/override механизм. Полученные врайтеры в словарик и юзать этот словарик. Если допускать боксинг, то изи, а вот без него...а оно надо такой гемор?!
с кодогеном примерно так же - море всего (so примеры или куча готовых либ) что позволяет сгенерить из геттера сеттера метод ридер врайтер - через Expressions/emit и точно так же держать в словарике
Сап, аноны, недавно первый раз прорешал тестовое задание на стажировку, прошёл этап, дальше намечается техническое собеседование. О чём могут на нём спрашивать? В самом тестовом были задачи более-менее прикладного характера из разряда реализации префиксного дерева, обработки огромного файла и подобия написания микросервиса.
Я сам студентота второго курса, и, думаю, меня можно вполне себе разъебать по алгоритмам, поэтому сейчас вспоминаю различные вещи из дискры и алгоритмизации, плюс на всякий случай собираюсь вспомнить какие-нибудь две сортировки, относительно эффективные.
Ещё подозреваю, что могут задать вопросы конкретно по шарпам, к каким есть смысл готовиться? Попросят ли пояснить разницу между ref и out или интерфейсом и абстрактным классом, как это пишут во многих "топ-146 вопросов по C# к собеседованию"?
Могут ли дать какой-нибудь лайвкодинг, учитывая, что тестовое вроде как уже написал? А ещё, что делать, если понимаешь, что не знаешь ответа и обосрался или что-то около того?
>>2330409 >Я сам студентота второго курса, и, думаю, меня можно вполне себе разъебать по алгоритмам, поэтому сейчас вспоминаю различные вещи из дискры и алгоритмизации, плюс на всякий случай собираюсь вспомнить какие-нибудь две сортировки, относительно эффективные. Покупаешь 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 из солида приплести уже хорошо будет.
Еще хорошо будет если вопросы твои ответы будут перекликаться с твоим опытом, с тем же тестовым заданием. Спросят тебя например про интерфейсы, ты не просто рассказываешь, что это. А при случае вворачиваешь "А вот в тестовом которое я для вас делал, я их применял вот так и так". Чтобы было понятно, что ты "не просто знаешь как хер в руках держать, но и пристроить его куда нужно умеешь"
>>2330454 Спасибо, анон! Албахари наворачиваю тоже, в том числе сейчас. Хотел ещё уточнить по поводу линка, часто ли по нему спрашивают что-то, если да, то на примерно каком уровне? В последнее время много его вижу в чужом коде, по видимому довольно популярный.
>>2330504 Linq - это тема. Офигенно удобная штука. Если хоть каким-то образом работаешь с данными (коллекции, БД и т.д.) то без этого ты в работе не обойдешься. Он сейчас практически везде. Но что удивительно, на собесах его не сильно дрючат. В основном спрашивают за базовые методы (Where, Select, FirstOrDefault (и в чем его отличие от простого First), Any). В контексте Linq могут спросить про отличие от IEnumerable и IQueryable. И про отложенное и немедленное.
>>2330409 Тебя ещё за дефолтные интерфейсы могут спросить. IEnumerable, IQueryable, IDisposable. Туда же копирование, сравнение. Что-нибудь про yield. Про линк: select, where, orderby, aggregate и тд. Могут просто кинуть код с линком и попросить запрос оптимизировать. Про рефлексию могут спросить. Что-нибудь про using, во что превращается и зачем нужна. Также за string vs StringBuilder. Что под капотом у билдера, плюсы/минусы, кейсы использования. Это что касается самого шарпа без привязки к фреймворкам.
>>2330590 >Про рефлексию могут спросить. Это уж совсем редкость. Такое уже спрашивают либо если видят, что кандидат сильный и дохуя знает, либо чтобы просто доебаться. С рефлексией вообще все стараются по минимуму дела иметь, только если это не спец проект какой-нибудь вроде какой-нибудь ERP c кодогенерацией структуры БД на лету или хитрой системы плагинов. Но новичков к таким делам обычно не подпускают, т.к. там не умея легко хуйни наделать.
>>2330248 Чел, КАК ЭТО В ПРИЧНИПЕ ВОЗМОЖНО что бы внутри елемента было одно, а браузер показывал вообще другое, КАК? вот там слово TEST ОТКУДА оно взялось если не с хтмл? ГДЕ ОНО? как его посмотреть или найти, где оно?
>>2331620 Не рассматривай мой ответ всерьёз, подожди других анонов, но я с дивана вижу только вариант через неуправляемый код, через дидову автоматизацию открыть ексель-объект, в нём открыть документ и делать свои дела.
Аноны, я себя умственно-отсталым чувствую. Год писал разные небольшие десктоп программы на Delphi, когда вкатывался в программирование. Сейчас решил ASP.Net Core изучать, работу всё-таки надо искать. И что-то пиздец как трудно даже начало даётся… Суть я уловил, контроллеры, гет делит апдейт итд. Но когда пытаюсь решить задачи постоянно спотыкаюсь. Как будто изучил недостаточно. Можете посоветовать что-нибудь почитать по микросервисам на webAPI? Я уже думаю блять ментора нанимать, только хз где его искать…
Нет, конечно я бы наверное мог пойти работать на десктоп разработку, деньги меня не сильно волнуют. Но хочется развиваться в профессии, а не сидеть в зоне комфорта
>>2332118 > я бы наверное мог пойти работать на десктоп разработку > решил ASP.Net Core изучать В нете конкуренция охуевшая. Макаки-крудошлёпы тебя сожрут, блять.
Шарпаны, может вы знаете. Где-нибудь на просторах интернетов можно найти какие-нибудь сборники отдельных кадров ascii анимаций в виде символов для копипаста в консоль. Вот эта птичка чуть ли не единственное, что удалось найти. Тонны блядь ебучих гифок без исходного текста фреймов, килограммы гайдов как запилить свой собственный конвертер, и на все это одна сука птичка при этом
Аноны, как можно два list с разными классами объединить в один list с классом-DTO.
У меня есть рабочий linq запрос, возвращающий список со агрегатными функциями сгруппированными по времени, создающий DTO через select new DTO(){}. Сейчас количество полей в DTO увеличилось, так как надо передавать данные ещё с другого запроса... Но как оба запроса объединить в один класс?
>>2332626 Если ты из рф - никак. Виза и мастеркард не работают и оплатить ты соответственно тоже не можешь >>2332628 Причем тут статик? Ты вообще C# знаешь?
Почему в c# есть удобные свойства которые одинаково задаются в одну строчку, а в яве ты постоянно должен писать get set методы где ещё и можно ошибиться с названием, ещё и занимает лишнее место?
Если хочешь пользоваться линуксом, под него есть только две бесплатные флагманские ide это idea и pycharm, то есть выбор ограничен всего двумя языками, когда на винде кроме этих ещё и есть visual studio поддерживающий кучу языков и более удобный. Но он не совсем бесплатный, а от jetbrains вообще свободный исходный код.
>>2332816 Короче, может ли visual studio code полностью заменить легаси visual studio? Или всегда на него нужно ставить миллион плагинов? А как насчёт kotlin и idea? А может jetbrains fleet станет новым стандартом?
>>2332816 Вот как раз для джавы нет проблем с иде: хочешь идею, хочешь эклипс, хочешь нетбинс и все кроссплатформенные. А на сишарпе всё ограничено виндой с её вижлой.
>>2333011 Это не новый синтаксис, это новый пайплайн, типа всю настройку производим внутри верхнего уровня. Плюс там небольшие улучшения работы с конфигурациями. >>2332975 Использовать Sturtup - можно как и раньше, если есть желание, просто перенеси конфигурирование сервисов и мидлвара туды. В текущем виде - есть свои плюшки, типа ты можешь довольно просто без лишних телодвижений намутить нужные тебе мидлвари, проинициализировать все как надо в нужном порядке и вообще.
А что если микрософт отключат в РФ шарп? Есть какие-нибудь варианты защититься от отключения? Может есть пиратские сборки дотнет, которые не управляются микрософт?
BLAZOR Анон, мне очень нужно имплементировать скачивание большого файла (10-20 гб) с сервера
я понимаю как это сделать, очевидно что скачивать его надо посредством чанков через сигнал р или в подобном стиле но...
КАК ЭТО СДЕЛАТЬ! мне ведь как-то нужно записать первый чанк на диск, потом когда прийдёт второй чанк указать что надо дописать биты в тот файл... легко записывать файфлы по стороне сервера, как записывать большые файлы по стороне клиента?
>>2333674 Позвольте уточнить, на прикриле пример, скачивается файл 13 гб уже скачано более 3, при этом это очевидно больше чем занимает озу хром. КАК ОН ЭТО ДЕЛАЕТ? Очевидно что он открывает какой-то поток с сервера к клиенту и пишет с сервера прямо в файл, КАК? Когда я пытаюсь скачать файл он сначала буфферизируется в озу, а только потом пишеться на диск.
>>2333749 Какой файл открыть? у тебя на клиентене же нет таких прав создавать и открывать файл какой захочешь. Разве нет? и Что значит по мере поступления?
>>2333752 уппс. не увидел про блазор. Ну такой файл может скачать только браузер. Хитромудрости, что пытаются юзать на жс (а у блазора по идее те же ограничения), больше 4гб не смогут
>>2333769 Локально тоесть в память? мой вопрос именно в том как это обойти, потому что загружать в память возможно по 10-20 гигов я не могу себе позволить
Как сделать валидацию на стороне сервера с razor pages? Пока я делаю просто через blazor, viewdata и js, а я хочу вернуть view (или просто добавить на страницы ошибки валидации) на пост как в контроллере, только если я возвращаю page я возвращаю модалку у которой на работает код в модели (cshtml.cs).
>>2333674 Делай как человек: Запрос: размер чанка - порядковый номер - хеш. Ответ - в случае если это первый кусок либо хеш в порядке - новый кусок с порядковым номером, куском и данных, в случае если шех не совпадает с тем что ты рассчитал для предыдущего куска - ошибка с номером предыдущего куска. Не клиенте - создаешь временный файл в котором в метадату пишьешь номер последнего удачного куска. Когда все скачается - удаляешь метаданные. Собственно все. СигналР тут не особо нужен, плюс - появляется возможность продолжить скачивание хоть через месяц.