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#".
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.
Бэки/фуллстаки кто работает, расскажите у вас у кого нибудь wpf требуют знать? Бля буду не хочу с ui дела иметь, есть меня опция его скипнуть и не понюхать хуй? Я в курсе что wpf по сути вообще отношения к бэку не имеет но работать я не работал, всю внутреннюю кухню могу только представить, может сейчас тенденция из бэков швейцарские ножи делать ТЭНКС
Недавно решил попробовать вкатиться в веб разработку. Изучал основы c#, LINQ, SQL, Entity Framework Core ну и конечно HTML и CSS пощупал. Все довольно неплохо шло, очень радовал мой прогресс в понимании того, как это работает. Решил что я готов к более серьезным действиям и пошел на MSDN изучать ASP.NET Core. И знаете что? Я вообще нихуя не понимаю как это все изнутри работает, всякие конфигурации, Generic Host. Это такой темный лес, что просто пиздец. Я смотрю на генерируемый код при создании шаблона, и вообще нихуя не понимаю. Не, ну я конечно могу добавить БД по гайдам и даже изменить отображаемый контент пользователю, но как все это работает изнутри я вообще совершенно не понимаю. А у вас как было, когда вы вкатывались? Склоняюсь к мнению, что мне стоит почитать общую информацию о работе браузеров и сетях.
>>1910749 У тебя есть несколько вариантов на мой взгляд. Спиздить курсы где рассказывают все рассказывают досконально как будто душевно больным itvdn например либо рекурсией гуглить самому едва ли не каждое слово а затем непонятные слова которые видишь в процессе гугления. Ну либо книги тут в шапке есть, правда сам с ними дел не имел, ничего сказать не могу.
>>1910737 Че там, блядь, знать-то? XAML - обычный xml, по сути, под копотом оно тебе в объектики собирается, охуеть как сложно, биндинги, ну биндинги и хули, что отписываться нужно если решил INotifyPropertyChanged, ну, блядь, это банальность же. Я вообще не понимаю, что современные вкатыши хотят делать-то на работе и что думают ты там делать будешь. Тебе скажут - ты программист - бери в руки ассемблер и пиздуй вилкой ковырять регистры - пойдешь как миленький, никуда не денешься, а не пойдешь - ну, отправишься на улицу. Программист, это в первую очередь - инженер, а инженер - это тот, кто не знает фраз: не могу, не знаю, не хочу. Это, считай, твоя должностная обязанность: по первому зову все что скажут делать: скажут верстать - будешь, скажут алгоритм для вычисления оптимального пути придумать и чтобы был круче существующих на 20% - придумаешь, а скажут - пили 5 лет круды - будешь пилить круды. Такая судьба у инженера, который не хочет быть кабанчиком.
>>1910749 1. Нужно было не просто учить, а пробовать писать. До аналога хоста я к 5й лабе в вузе дошел, когда заебался каждый раз кучу одинаковых хуевин делать чтобы графика была на сишечке. 2. Нужно было про паттерны читать, неткор решил наконец хоть немного стать похожим на что-то удобное для разработки. 3. Коды открыты, нихуя там сложного нет. 4. Как программиста - тебя ебать это не должно. Ты же не думаешь в момент написания программы, что там под каптом электрончики транзисторы теребят, тебе до пизды это, как до пизды в 99,(9) случаев во что там с точки зрения машинных команд собирается твой код, как до пизды большинству что под капотом у листа или как так получается что html написанный буквами в браузере превращается в пямоугольники, таблички, списки и вообще всеми цветами переливается.
>>1910749 > А у вас как было, когда вы вкатывались? Только на первых курсах, пока не осознал, что программист работает с абстракциями. Конечно, базу знать хорошо бы, но, по факту, не это важно в программировании. Ты, блин, свой-то код через полгода-год не будешь узнавать и не сможешь с ходу сказать как он работает, если там хотя бы 20к строк уже набралось.
>>1910941 Дядь, расслабься пожалуйста, я не ворочу еблом. Я знаю слово "надо", и если надо учить но выучу. Просто мне больше по кайфу в шестеренках ковырять нежели рисовать йоба-дизайн, и поэтому уточняю у тех кто хорошо знаком с внутренней кухней, насколько мое " по кайфу" сопоставляется с нынешними реалиями веб дева. Может у многих компаний есть флешмоб поддрачивать бэков лепить какие нибудь приложухи для внутренних задач, откуда я это узнаю если не у того кто собаку схавал в этом дерьме. Домой аригато.
>>1910973 Лол, видели бы люди со стороны как дизайн 99% внутряка выглядит: табличка-табличка-поле-поле-кнопочка-лейбл и это все стандартом абсолютным и срать все хотели на разные разрешения, красивости, анимации и прочее, это внутряк, он должен какую-то внутреннюю задачу решать даже на баги некретичные похуй, все свои, обматерят в курилке, да попросят что-то в следующей сборке поправить. А сделать таки заставить могут, если задача такая стоять будет и нет тех кто с этим лучше справится. Просто, блин, УЧИТЬ? Ты берешь, гуглишь, 2 вечера читаешь доки - делаешь, что там учить-то?
>>1910749 Забей хуй на то, как это работает, тебе выше правильно сказали аноны. Просто делай и все. Когда привыкнешь к тому, как ASP работает, как на нем что-то базовое и не только делать - тогда уже можно лезть в пизду и пытаться вникнуть, что за черная магия происходит под капотом, и то при необходимости. Я лично неделю уже уделяю несколько часов в день на изучение ASPа по книге Фримана. Первые несколько дней хватался за голову от того, как все сложно, непонятно и что за черная блядь магия в каждой строчке происходит. Сейчас уже попривык ко всякой ебале. Копипасчу все из книги нещадно, но хотя бы начинаю понимать, что я копипасчу. Сегодня вот даже смог написать свою первую полностью самостоятельную строчку кода - вроде мелочь, а по сравнению с тихим ужасом от первого взгляда на ASP - ебать прогресс. мимо вкатун
Почему так? По логике деконструкции он же должен взять два значения, закинуть их в стек, а потом просто забрать их оттуда в обратном порядке, т.е. вот так:
>>1912101 Берешь винформс и делаешь. Что конкретно тебе не понятно? Если хочешь готовый код, то заходишь на гитхаб и вбиваешь в поиск notifier и фильтруешь результаты по сишарпу
здравствуйте, извините за тупой вопрос. у меня много где написан код вида T[] array; for (int i = 0; i < array.Length; i++) { int nextIndex = i + 1; if(nextIndex == array.Length) nextIndex = 0; }
подскажите изящный способ без if получать 0 на последней итерации.
>>1914462 так делают только дегенеративные личности. ты любитель наступать на грабли? подкидывать себе какашки в песочницу?
через пол года эта логическая лапша прокиснет. открываешь код а потом думаешь "а почему тут лишний индекс. а почему в него чтото суётся". или дальше код пишешь и забываешь что тебе надо копировать лол первый индекс в последний при повторной подобной итерации. нельзя использовать Length/Count как указатель количества элементов. надо вычитать единичку! ну и наконец случаи когда надо написать просто нормальную библиотечную функцию у которой инпут и аутпут без выебонов. итд
код надо писать так чтобы ты мог потом в него заглянуть и прочесть не хватаясь за голову. нашел, блядь, что обменивать. читаемость всего связанного куска кода на разницу между делением по модулю и его отсутствием.
Посоны, вот такой код: async ValueTask foo(){ if(isConfigured) {.....} isConfigured = true; .... } является потоко безопасным или нет? Подозреваю что нет. А как его по нормальному переписать? Шарп ругается на локи в асинке, а плодить таску семафором через semaphore.waitasync, ради такой простой фигни, как-то не хочется.
>>1914724 Делай через Interlocked.CompareExchange, только придётся либо в int переводить и обуславливаться тем что 1 это true, а 0 это false, либо боксить булево значение в объект.
Алсо, вопрос по этим мутексам и семафорам. Правильно ли я понимаю, что когда пишу sem.Wait() или lock(), то поток становится залоченым и просто ждет, когда нужный ресурс освободится? И в это время ничто в программе не может использовать этот поток? Почему тогда в стандартную либу не добавили асинхронные мутексы, локи и тд?
аноны, пилил игоры на юнити 4 года заебало - постоянные, бесконечный спринты, ебля с юаем и, вообще говоря, история далекая от настоящего проганья в общем, знаю юнитишные си шарп и питон (довольно много на нем пиходилось писать) Куда можно вкатиться с такими знаниями без потери в зп? (была 80, тк контора очень мелкая) В бекенд реально?
>>1915581 Реально только в другую бнити контору, иначе охуеешь от того сколько всего нужно знать. Помимо бекенд фреймворков вида асп.нет и сигналР, нужно еще SQL щнаит на уровне не хуже шарповского. Дополняется это всё знанием JS и базовым знанием html+css. Если уверен, что сможешь всё это освоить и не потерять в зп, то дерзай. Но я бы лучше в текущей сфере развивался, благо юнити не теряет в популярности.
>>1915691 наверно интересно. мне вот не повезло ничего такого. хотя я не очень искал. в итоге все шесть пилил велосипеды для проекта мечты. а какие скиллы нужны то чтобы дронами в промышленности управлять?
>>1915702 Ох, братиш Ну, в целом то, дохуя. Но смотря что У нас был стартап, поэтому область отвественности была довольно обширная Ну понятно, что на юнити висит юай и логика - тут все мало чем у игроделов отличается Помимо проганья нужен матан и знание основ теории управления (но я этого касался поверхностно, другие ребята занимались управлением). Я сам сперва, помимо самого юнити, в соляну, потом уже с тимой пилил зрение - обработку облаков точек с ргбд камеры (ну тут был питон). Короче зависит от размера команды: если мелкая, как у нас, то нужно много чего знать. Если штат крупный, то у каждого будет четко ограниченная роль и необходимый набор скилов. К слову, мы потом набирали людей на юнити именно геймдевных - для всяких оптимизация и прочего, требующего хороших знаний специфики юнити
>>1910324 (OP) Всегда ловил лютый криндж с языков типа Java и C#, точнее не с самих языков, а инфраструктуры и специфики разрабов. Всё такое официальное, стандартизирован каждый пук, тысяча уровней абстракции с модными билдерами, фабриками, фабриками билдеров, билдерами визитёров стейта стратегии фабрик и т.д. Ещё очень угараю всегда с сертификаций всяких майкрософтов. В итоге все это вместе всегда вызывало чувство некоей КОЛХОЗНОСТИ происходящего.
Это все так на самом деле? Или мое впечатление ложное и обстановка кодоебов на шарпе такая же приятная, как и кодоебов на всяких Го/Питонах и т.д.? Или реально всё так официально-деловито? Если что не траллинг, прост рил интересно.
>>1915957 а вообще не так и много и довольно размыто. разве что теорию управления я как что-то целостное никогда не изучал, но учитывая что меня обычно звали в проекты делать ИИ, то наверно я знаю больше нуля. и анализ облака точек для меня не кажется таким уж сложным учитывая что мой первый крупный самостоятельный проект был это был навмеш собранный на коленке. пикрелейтед. видеорелейтед.
а че там ещё нужно? вычислительные шейдоры? новомодная хуйня вроде DOTS?
>>1916024 Паттерны проектирования не только в C#/Java применяются. И применения паттернов позволяет писать безопасный код, который устойчив к изменению и расширению. При этом сами языки не требуют от программиста управления памятью. Что в целом делают эти языки отличным выбором для крупных компаний с большой кодовой базой.
>>1916027 да я не пытаюсь тебя как-то отпугнуть типа "смотри как я крутой, я облака точек знаю как обрабатывать" типа камон, мне до мудрых дядек, знающих все еще хуячить и хуячить Да и задачи были не самые сложные - классика робототехники: найти объект в облаке, движение по траектории (ну тут, правда, все чисто на RGB + D канале) просто я к тому, что чистым кодингом тут не отделаешься, скорее всего, нужно знать еще что-нибудь из роботоетехнической области шейдоров каких-то сложных у нас не было У тебя, кстати, интересный опыт, как мне кажется расскажи вообще, что за проекты с ИИ (Примерно)? навмеш на колентке это просто пет проект? Ты работаешь именно с юнити? Просто у меня вот этап смены работы и я прям парюсь: валить ли с юнити или оставаться Буду рад, если ответишь)
>>1916074 Короче хрень какая-то была. Я поудалял из инсталлера ненужные компоненты, обновил вижак до самой последней версии, сделал ему "восстановление", и оно всё равно после этого не работало. Ну думаю, пиздос, придется писать им куда-нибудь. Нажал Install ещё раз чисто чтобы скопировать текст ошибки, а оно взяло и установилось.
>>1916119 да не мне так интересно какой вообще минимальный набор скиллов требуется за пределами гейдева. что-то такое поверхностное то на юнити ебошить то много знать не надо. а то открываешь порой требования для обычных погромистов а там список всяких интересных требований. открываешь к юнити а там можно сформулировать как "не быть говноделом" и "знать какую-то узкоспециализированную хуйню"
>расскажи вообще, что за проекты с ИИ (Примерно)? всякие. пару раз делал и доделывал ИИ для стратегии, для РПГ одной делал, для хуевого шутана. ничего такого чем я бы гордился. обычно задача ставится "чтобы расширять можно было не через жопу и без моей помощи", а не какие-то интересные решения чтобы принимало. чтобы интересные решения принимало это надо обычно в проект нанимать отдельного человека у которого там своя атмосфера в проекте.
>навмеш на колентке это просто пет проект? Ты работаешь именно с юнити? юнити просто знаю лучше всего. так то и в некоторых других движках кнопки найти смогу если что. навмеш скорее мой основной проект в портфолио и проект над которым я работаю дольше всего. когда начинал над ним работу у юнити вместо навмеша был пиздец который билдился только в эдиторе, а я хотел именно процедурные уровни. были конечно другие решения для навигации но они мне все не нравились и я стал ебошить своё. в итоге лол юнитеки допилили себе навмеш до того состояния который мне был нужен ранее, но к тому моменту я запилил уже своё получше. вообще навигация конечно мегаважна в ИИ, так как позволяет решать какие-то пространственные задачи. например в той РПГ мне дали задачу научить ИИ использовать предметы в запертых комнатах лол. то есть ИИ должен был построить путь в запертую комнату(уже интересное начало), в этом пути должен был содержатся флажок "тут заперто", вернуть ИИ информацию где находится ключик от комнаты и сказать чтобы он пиздовал туда где ключик, взял ключик, вернулся к запертой двери, отпер дверь, наконец применил предмет в запертой комнате. вроде тривиальная задача, а чем больше информации доступно изначально тем проще её решить. идеально если она доступна сразу вся чтобы поток думалки не лез лишний раз в поток навигации. а ведь задача может усложнится! когда например от комнаты нужно два ключика и один из них у патрулирующего стражника, тогда надо ещё знать какой из ключиков ближе учитывая расстояние хождения. ну а могущество залезть в генерацию навмеша и какую-то свою хуйню сделать это конечно замечательно. например лол вон у меня есть генерация зон доступных только "присев" где соответственно сложней передвигаться. что-то такое в стандартном навмеше сделать несколько проблемно. или вон та информация о "укрытиях" тоже результат генерации. не руками же такое расставлять!
ну а так то разумеется не один навмеш я умею. умею вычислительные шейдоры, обычные шейдоры, всякую геометрическую хуйню, допиливать функционал самого юнити. это наверно чаще всего просят. ну и по мелочи. вообще я могу тут весь тред засрать всякими интересными картинками и видосиками.
>Просто у меня вот этап смены работы и я прям парюсь: валить ли с юнити или оставаться с одной стороны на юнити самый наверно повышенный спрос, а с другой стороны много просят тривиальную хуйню а платят за неё мало. но это я сужу с точки зрения гейдева. а тут управление дронами охуеть.
Анончики подскажите такую штуку. Как в SeleniumWebDriver делать прокрутку страницы ? Именно что бы страничка неспеша так скролила вниз? А то что то не выходит найти инфы.
>>1916201 уравнение навье стокса вообще клево! смотришь на такое и техномагия какая-то! жаль довольно поверхностно знаю. то на что можно убить пару лет и не заметить. и мало практического применения имеет, не пропорционально тому времени которое требуется на него. мне тридцатник уже. вкатывался в погромирование лет 8 назад без каких либо скиллов на энтузиазме. сейчас я не работаю, скорее возвращаюсь к погромированию после продолжительной хандры от навалившихся проблем. надо наверно доделать уже пару фич для навмеша, подучить пару вещей, да завести свой проект.
Сап систерс. Пишу сайтец на асп коре и пришло время забацать регистрацию пользователей, буду использовать очевидный айдентити. Cтандартный IdentityUser<T> предоставляет набор членов за щеку, половина из которых мне нахой не нужны. Вопрос стоит ли пилить кастомный UserStore или пусть болтаются пустые колонки в бд?
И еще вопрос вдогонку, почему стандартные IdentityUser/IdentityRole используют в качестве ключа строку, а не int/guid? В этом есть какой-то сакральный смысл? Случиться ли что-нибудь плохое, если в качестве айди я поставлю инт с автоинкрементом?
Сап, в вузе учусь на 2 курсе, у нас с# преподают (ща прошли делегаты события асинхронные функции и потоки (ну как прошли, так не глубоко)) В итоге решил вкатиться полностью в с#, поясните насколько он перспективен если сейчас учить - смогу я норм работу найти - чтобы при этом не скучную? (как я понял самое скучное это легаси поддерживать - на сколько в с# плохо с этим?) И еще пытался вкатиться в frontend - не зашло, но что-то как я понял если в с# вкатываться то все равно в итоге придется скорее фулстеком быть??
>>1916729 >на сколько в с# плохо с этим? Всё плохо, особенно если попадешь на проект который писался на винформс. При этом сам язык и платформа хорошо развиваются, ты смотришь на эти отчеты об улучшениях и облизываешься, потому что на работе у тебя .Net Core и пахнуть не будет, если попадешь на 4.5 фреймворк - считай повезло. >вкатываться то все равно в итоге придется скорее фулстеком быть??
Так и есть. Если хочешь работать с современным шапром, то должен шарить в JS + HTML + Angular/React в качестве фрона и ASP NET, EF, SQL, Identity, SignalR в качестве бэкенда. Можешь всё перечисленное прям сейчас уже учить, упор делай на SQL и ASP NET.
>>1916387 кекеке. вообще я делал это на стриме, так что особо не заморачивался с именами. хотел чтобы ИИ ходил в лес за грибами! если интересно, но непонятно то на скриншоте в целом тот-же сорт ИИ как в FEAR. довольно клёвый планировщик. https://en.wikipedia.org/wiki/Stanford_Research_Institute_Problem_Solver состояние мира описывается как набор bool, каждое действие имеет прекондицию и то как оно меняет флаги в состоянии мира. а поиск заключается в изменении представления состояния мира пока оно не достигнет целевого. хорош тогда когда пулл действий должен быть максимально динамичным, так как связи между действиями описаны в прекондициях к ним. можно вешать пулл действий прямо на предметы в мире, например. а в качестве целевого сосотояния использовать какую-нибудь эристику. как в симсах например. хочет срать - роется в планировщике в поиске способа посрать.
>>1916388 карту высот? имеешь в виду что красное = количество воды? так себе идея. между водичкой сверху и газиками снизу есть разница в способе перемещения их. водичка перемещается вариацией https://en.wikipedia.org/wiki/Shallow_water_equations там есть интересный шаг который исключает "потерю" воды при перемещении так как перемещаться она может только в соседние клетки. там где красный дым там просто берётся отрицательный вектор движения для текущего пикселя и смотрит чё там с помощью билинейной интерполяции. синее это очень сильно увеличенная зона где "длина" векторов различается и соответствует повышенному давлению (там есть пониженное, просто оно не отображается тут), зелёное это то где направление различается и оно делает завитушки. изначально хотел сделать такое в несколько слоев и использовать для атмосферной симуляции. чтобы облака были похожи на настоящие! но немного не оценил масштабы проекта. там где водичка землю размывает кстати применяется комбинация обоих методов. эрозия размягченной земли перемещается как красный дым. эрозия под действием гравитации это уже вода где не сохраняется инерция. видеорелейтед.
>>1910324 (OP) Есть ли какой-то символ, который выглядит похоже на косую черту типа "/", но на самом деле ей не является и допустим для использования в именах переменных и т.п. Мне нужно не расстраивающее мои чувства о прекрасном написание в енумах вещей типа kg/m3, например kg⳺m3 (не работает, т.к. не допустимый символ).
>>1917010 Пчел, я пыхо-джун и на работке заставили реакт с тайпскриптом учить. А вообще на западе фулстек это тренд уже пару лет как, вакансий чистых бэк/фронт у них все меньше становится. мимо
>>1916812 > карта высот Не, имею в виду, что красное - это высота. Естественно я не о полной симуляции воды, я больше про волны, например от интерации с персонажем.
>>1917087 Хмм, а действительно, нашел в AppData\Roaming\NuGet в конфиге ссылку на этот рослин. Я когда-то ставил опции для разработки расширений для вижуал студии, видимо они туда этим насрали.
Я с нуля, скачал visual studio, смотрю видео уроки, как подсказки (интелселс?) На русском сделать? И как посмотреть на какой платформе создал проект? На видео там видно как выбрать можно, но там 2017 года VS, а у меня 2019, ничего не видно, не было выбора, сразу автоматом прошло
>>1916998 >>1917040 Еблан, ты о других людях подумай, которые твой код потом будут поддерживать. Не все, блядь, в студии кодят, не все используют всякие приблуды при написании кода, та и тупо при сохранении твоего кода в ASCII-кодировку пизда прийдет твоим символам. Как человек пиши: kgPerCubicMetre, это и набирается легко и найти легко и запомнить легко и выглядит отпрятно. Нет, сука, нужно извратиться, чтобы потом никто нахуй не мог, если ему нужно, найти то что ему нужно. Давай, ебани еще иероглифов в код, хули, шарп-то позволяет на любом языке писать. А для пущего эффекта - называй классы на русском, чтобы все знали какой ты молодец и постоянно раскладку меняли. Отвратительно, нахуй. Пидорасу неприятно, а тем кто потом будет 3 часа нужную переменную напечатать - будет охуеть как приятно.
>>1917557 Я ожидал такую реакцию, и я понимаю её, как программист, если оторваться от предметной области. Я попытаюсь объяснить свою позицию, и хотел бы услышать мнения на этот счёт. Для читаемости кода, краткость и лаконичность, а также привычное написание известных физических и математических сущностей - превыше всего. kgPerCubicMetre - это очень длинно. А ведь есть ещё кг/м/с2 или Дж/К/моль. Это ещё длинней придётся так писать. Если таких вещей полно, это абсолютно нечитаемо. Я ведь есть ещё физические формулы. P = ρ g H - это понятно, легко и читаемо. А вот это: pressure = density accelerationOfGravity height уже в таком простом примере читается тяжело. А если формулы длинные? Намного более длинные? А если код целиком состоит из обилия формул? Мне кажется любители латиницы и длинных верблюжьих названий не писали физических и инженерных приложений, иначе бы они так не думали. И да, есть некоторые термины, которые применяются в российской инженерной практике, которым нет прямого эквивалента на английском. В результате этого одно и тоже понятие в коде разных авторов называется совершенно по разному (в меру знаний английского и понимая предметной области теми или иными кодерами). В таких случаях я также настаиваю на написании имён переменных именно русскими буквами, именно так, как она называется в пост-СССР. Я кстати видел код своих немецких коллег, так вот у них использование немецких названий переменных немецким алфавитом - это норма, подозреваю, по тем же причинам. Очень печально, что С# не имеет отдельного оператора для возведения в степень.
>>1917585 все идентификаторы должны быть однобўквенными. каждая бўква - отдельный идентификатор. зачем вообще многобўквенные идентификаторы? как бўдто бўквов мало, полный юникод бўквов. а кому мало бўквов, тот может юзать эмодзи.
>>1917585 Лол, няша. Программисту это удобнее для чтения. Потому что программисту - собственно похуй что за этим стоит, он на тестах проверит, что результат тот что нужно. Важно чтобы эта переменная легко запоминалась. И как раз kgPerCubicMeter - запоминается легко, а имя достаточно уникально, чтобы сразу найти место где оно используется. Программисту до пизды что там за предметная область, какие законы там стоят и прочее - для него это просто данные в памяти, байтики, нахуй, ему нужно их посчитать, передать куда-то еще, потом сохранить или показать результат. Важно, чтобы можно было нажать ctrl+f и сразу найти то что нужно тебе, а не еабться с тем что формула красиво выглядит, до пизды как выглядит в тексте программы, тем более что программист это в первую очередь тот кто программу пишет, а не тот кому есть какое-то дело до предметной области, на фронте уже нарисуют как надо тем кто этим пользоваться будет. Тебе важно, чтобы в 100500к строках кода - ты без труда мог нати то что тебе нужно, для этого и придуманы стандартные нотации, для этого и придуманы стандартные структуры файлов, для этого и пишется velocity = velocityPrevious + (acceleration time); вместо v=v0+at, чтобы ты не зная что, блядь, за v - мог понять что это такое, Тебе завтра скажут вместо физических величин - писть ПО для банка, послезавтра - для роботов, а потом - для самолетов, и ты должен писать быстро, иметь возможность найти то что нужно, ты не на уроке, блядь, где вы зазубрили формулы и дрочите задачки, ты, сука, программист, нахуй, эксперт во всем, и чем меньше ты создаешь сложностей себе и коллегам - тем тебе проще.
>>1917597 >найти место где оно используется Вот тут не очень понял в чём сложность. Если используешь студию, то она сама всё подсветит, или ты о том, чтобы просто найти все переменные во всём проекте, имеющие подобное название? Но тогда не понятно, зачем это. Если не используешь студию, ну ты сам себе злобный буратино.
>чтобы ты не зная что, блядь, за v - мог понять что это такое Для такого существует ридми, документация, на худой конец в заголовке файла в комменте освятить основные сокращения, например.
>завтра скажут вместо физических величин - писть ПО для банка, послезавтра - для роботов, а потом - для самолетов Ну это уже макакинг. Там где предметная область не нужна для таких кодеров будет внешний рафинированный интерфейс, за который ему и лезть не стоит.
>>1917602 > Вот тут не очень понял в чём сложность Допустим, у тебя проект чуть до среднего не дотягивает, скажем 60к строк. Ты только пришел, тебе говорят: Скорость неправильно считается, пофиксь, пожалуйста. Как думаешь, вот лично тебе будет интересно ковыряться в 60к строках кода в поиске места где твоя переменная находится, ведь нормальным поиском - ты не можешь ее найти, т.к. v не такая и редкая буква, а где что лежит - не знаешь, ты же только на проект пришел. Думаешь тебе кто-то специально в ридми напишет: "Мы рассчитываем скорость в таком-то файлике на такой-то строке"? Да нихуя. И как раз если бы оно нормально называлось - ты просто жмакаешь ctrl+f и пишешь velocity - все, ты нашел все места где оно встречается, за 10 минут прошелся - нашел баг, пофиксил, пошел пить кофе и мацать за жопу практикантку, которая очень хочет научиться программировать и просит тебя, скиллового чела, что баг за 10 минут пофиксил - после работы научить примудростям, а если в проекте используется всякая хуета вида v=a+b+c - ты будешь неделю только вникать где что лежит и как сделать так, чтобы нахуй не поломалось все. > Для такого существует ридми, документация, на худой конец в заголовке файла в комменте освятить основные сокращения, например. Да, ты ведь каждую переменную в ридми записываешь, а внутри метода каждую строчку сопровождаешь комментарием, когда тебе нужно за день 10 тасков закрыть, конечно, заняться больше нечем. Действительно, зачем написать название переменной, которое всем понятно - если можно высрать комментарии. 11/10 решение, ничего не скажешь. > Ну это уже макакинг. Это обычная такая реальность разработки. Вы - крутые спецы, клиенты знают что вы делаете быстро и качественно, а берете меньше чем в европах/сша кодеры, сегодня к вам клиника стамоталогическая обратилась, нужно софт для ведения карточек пациентов сделать, чтобы в них хранились 3d сканы челюсти и было удобное мобильное приложение, чтобы можно было эксперту скинуть и он удаленно мог провести диагностику; завтра фирме грузоперевозок понадобилось программу, которая будет считать время водителей в пути и прокладывать оптимальный маршрут с интеграцией со всякими картами, местными сервисами и т.д. Сидеть и дрочить одну специфическую область программисты даже в конторах которые занимаются продуктом не могут: тут конкуренты прикрутили стриминг - нужно и нам скорее; появилась охуенная платежная система - скорее нужно и нам; менеджеры по продажам говорят что мобилки рулят - нужно скорее наш софт на мобилки переносить; нам срочно нужно CI/CD организовать и теперь все dev's внезпрно превратились в devops'ов. Кучу хуйни приходится учить ежедневно, куча хуйни меняется, выходят еще и новые технологии, которые ты должен учить, чтобы быть крутым спецом и запоминать как в предметной области X называется какой-то термин, тем более через, допустим, 2 года - ебантизм, ты не всю жизнь будешь вот эту вот хуету писать.
>>1917047 вопрос масштабов же. можно же например как в fishing north atlantic просто бултыхать водичку рядом не меняя её реальный уровень. вообще опять же метод с газиками годится больше для газиков. так как само перемещение векторов там происходит за счет зон давления, которые чтобы получить надо много итераций (на том видео кажется 30). если давление не нужно то и сам метод не нужен. для водички как например на этом видео достаточно 2. одну чтобы посчитать статическое давление, приплюсовать энерцию и сколько максимально воды может переместится из клетки. а вторую чтобы посмотреть сколько воды переместилось в эту клетку. если хочется почитать то я ориентировался в основном на этот текст. https://hal.inria.fr/inria-00402079/document "Fast Hydraulic Erosion Simulation and Visualization on GPU" помню натыкался на более крупный текст про водичку в играх вообще... а во. https://trepo.tuni.fi/bitstream/handle/10024/115052/kellomaki_1354.pdf "Large-Scale Water Simulation in Games" там уже больше методов рассматривается.
хотя вообще всё это в играх конечно имеет довольно маленькое применение. наверно только в From Dust это было главным элементом геймплея.
Вопрос от вкатуна говорю сразу. Где вообще брать задания на этапе изучения синтаксиса? Когда я учил Пайтон по книге Гэддиса и Java по Эккелю, там для каждой главы были задания, благодаря чему я мог глубже осваивать материал. Есть какие-то ресурсы или книги для вот такого вот комплексного изучения языка?
>>1918021 Я какое-то время смотрел сайт с олимпиадными задачками. Сортировал их в порядке, начиная от задач для дебилов. Там реально простенькое было, но не привязанное к языку. А вообще, если ты где-то работаешь, лучше находи проблемы из своей практики, пусть даже мелкие совсем, и для них что-то пили. Я вот на зеленом старте пилил себе формочку с БД для вноса ежедневных трат по категориям и с возможностью вывода статистики по различным временным периодам.
>>1918018 Берешь кодфорс или кодворс или любой другой ресурс, где задачки можно решать, решаешь, закрепляя таким образом синтаксис. Другое дело, нахуя тебе разные книги по разным языкам читать, блядь? Ты смотришь вакухи - смотришь что надо для работы - дрочишь за месяц и идешь работать. Все, блядь. Я хуею. Я вот ебалн из универа, нам дали базу на первом курсе, но прогать на чем-то кроме ассемблера, С и С++ не давали осбо. Ну и хули, я смотрю, нет вакух по С и С++, потом смотрю в карманы, денег нет, а тяночка хочет жрать, хочет шмотье, ну и хули, пробегаюсь по джаве и через месяц я уже - на испытательном сроке, через 2 недели - в штате и работаю, потихоньку приношу пользу, через год меня заебала джава и я так же с СРешоткой поступил, но сразу на мидла заскочил. Я хуй знает че вы там учите с синтаксисом эти, 99% языков - сиподобные, тебе просто нужно знать что к тут чтобы получить доступ к члену класса - ты используешь . тут ->, все, блядь, дальше просто пишешь алгоритмы, гугля иногда инструментарий что есть в языке, ну и пишешь так чтобы твой код другие люди понимали. Все, нахуй. Опять же, ХЗ, может быть я какой-то аурой обладаю, но ни разу меня на собесах целенаправленно не валили, ни разу не ебали кишочками, чтобы прямо знал как там в память все укладывается, ни разу не ебали сверх меры алгоритмами, просто пришел, показал диплом, показал регалии(ыыыы, ездел в Испанию на стажировку, брал места на олимпиадах, дипломчик красненький, статьи - цитируют): Можешь сделать? Могу! Покажи гит - показал, оки-доки, мы пока доки подготовим, используем то-то и то в разработке, поддрочи чтобы как вышел - работать нормально мог. Все, блядь. Иду - дрочу, потом работаю. Короче, хз в чем у людей сложности.
Почему в WPF'e MediaElement может не показывать видео? Никакого ексепшена, просто ничего. Пробовал avi/mp4. Код: MediaElement.Source = new Uri("pack://application:,,,/папканейм/1.avi"); MediaElement.Play();
В xaml'e пробовал ковырять LoadedBehavior, тоже ничего не дало.
>>1918311 >просто пришел, показал диплом, показал регалии(ыыыы, ездел в Испанию на стажировку, брал места на олимпиадах, дипломчик красненький, статьи - цитируют): Можешь сделать? Могу! Покажи гит - показал, оки-доки, мы пока доки подготовим, используем то-то и то в разработке, поддрочи чтобы как вышел - работать нормально мог. Все, блядь.
Ты же понимаешь, что тебя легко берут как раз за это? У тебя есть вышка, петпродежкты, стажировка не в СНГ. Этого почти ни у кого нет, максимум вышка задрищенского политеха и скудные знания.
>>1918575 Хз как вообще работу без стажировки найти можно. Даже как на ебаную стажировку записаться не понятно, если на .Net, три стажировки на весь dou
>>1917170 ну теперь через nuget.exe (вроде ещё через командную строку разработчика) удаляй. Вообще нугет в этом плане странная штука, если он не может получить пакет в одном сурсе, в другой он не ломится
Тупой вопрос. Смотрите, у меня есть контроллер апишный, в него должно постучаться устройство со статическим IP, я должен сохранить информацию и IP с которого стучались, потом переодически что-то с этим делать, например смотреть не отклоняется ли время устройства сильнее чем должно и корректировать, если отклонилось. Так вот, в чем хуйня. Я думал просто брать IP с помощью context.HttpContext.Connection.RemoteIpAddress, но хуйня в том, что таким вот макаром на моем ПК откуда-то берется IPv6 адрес, который, как я понимаю там где-то маршрутизаторами получается(я не настолько хорошо за сеть шарю пока что, но я знаю точно адрес устройства и он в формате IPv4), а на другом компьютере IPv4, но внутри локальной сети, а не тот что реальный и как-бы доступен всем. Я посмотрел с помощью Dns.GetHostAddresses() адреса и среди них есть тот, который я заведомо знаю что устройству принадлежит, только вот как быть уверенным какой брать? Вдруг в следующий раз нужный адрес будет 6м? Вообще, кто-нибудь с такой вот хуйней сталкивался? Как это работать должно? Может быть сохранять все адреса разом и по ним простукивать?
Шарпач, прости, я понимаю,- вопрос идиотский. Я даже синтаксиса толком еще не знаю, но я уже два дня туплю над методами. Как и куда уходит Ruturn метода? Как достать то его, как вызвать? Смотрел в книги, увидел фиги. Как передать в метод что-то я вроде понял, но полученный ретурн то как в мейн вписать? Например:
Static string ОдинПлюсДва (_первое, _второе)
return _первое + _второе;
Static void main
a = 2; b = 2;
ОдинПлюсДва(a , b) //Я ведь правильно передаю параметры в метод?
Консоль.показать(???) Как мне результат то где взять что? Мне ruturn метода ОдинПлюсДва сюда надо. Где значение того что вернулось то взять?
>>1918971 Смотри, для начала можно думать так: Когда ты вызываешь метод, компилятор на самом деле - подставляет туда, откуда ты его вызываешь весь метод. Вот. Таким образом, допустим, твой метод:
string Combine(string a, string b) => a+b;
это все равно что если бы ты вместо метода везде писал то что в нем происходит.
Чтобы получить результат, ты, в зависимости от того что метод возвращает, используешь переменную.
Т.е. в твоем примере ты должен был бы так вот сделать:
>>1918971 Да, насчет последнего. Не всегда обязательно явно переменную использовать чтобы результат использовать. В твоем примере ты мог бы делать и вот так, например: a = 2; b = 2; Консоль.показать(ОдинПлюсДва(a , b));
Так делать нехорошо, конечно, но когда дойдешь до Linq и Fluid'ов то там, в принципе так вот и делается зачастую.
>>1918983 Да, тут не int нужен для сохранения результата, а string, просто не обратил внимание на сигнатуру. Думаю это и так понятно, но на всякий случай уточнил.
>>1918983 >>1918988 Пасиба, ананасик. Вроде яснее стало. Я не понимал, что получение результата метода происходит в момент когда ты передаёшь методу параметры (а из метода мейн в _первое в метод ОдинПлюсДва и б из мейн во _второе в метод ОдинПлюсДва. Потом тут же отдаёт результат. Как на твоём примере с переменной, новый метод при вызове из mein сразу получает параметры, сразу их считает/выполняет код и сразу возвращает, присваивая их в переменную "int c". Надеюсь я правильно представляю всё это. Во всех мануалах это подается как само собой разумеющееся.
У меня почему-то изначально всё представлялось как по строкам кода. Сверху вниз
Отдали параметры. Результат посчитался; //они где-то там висят в памяти* в какой-то несуществующей переменной куда их записал return Обращаемся когда захотим к результату; Задаём другие параметры если надо.
Не пришло в голову, что результат нужно где-то хранить самому и самому объявлять где. Спасибо еще раз.
>>1917643 >вот лично тебе будет интересно ковыряться в 60к строках кода в поиске места где твоя переменная находится, ведь нормальным поиском - ты не можешь ее найти Краткие обозначения используются внутри методов. Классы и методы конечно должны иметь самодокументирующие названия. Ну и твой пример скорее в мою пользу. Если скорость неправильно считается, но считается она сложно, то когда формулы записаны символьно, ты хотя бы можешь их прочесть, сверить с исходниками (статьи, учебники, тех. документация) и увидеть ошибку. Если же формулы записаны по-программистски (с длинными именами переменных, и выносом каждого микровычисления в отдельный метод), то ты никогда в этом не разберёшься, только заново переписать все вычисления.
>Да, ты ведь каждую переменную в ридми записываешь Ну ты перегибаешь. Комментарии почти всегда нужны, в любом коде.
>Это обычная такая реальность разработки. Обычная практика такова, что все более менее крупные специализированные компании (банки, нефтяники, медики, с очень узкой специализацией от разновидностей стоматологов до хирургов, военные и т.п.), которым нужен свой софт, БД или автоматизации, имеют своих программистов, которые либо пришли из математиков и АСУ ТП в предметную область, либо наоборот, дополнили предметные знания навыками кодинга. А то, о чём ты говоришь - это сайтошлёпство и обезьяний бигдата+машоб на корзину для пускания пыли в глаза акционерам.
Дурак спрашивающий выше про методы, репортинг ин свой новый затуп. (Решение своего затупа тоже рапорчу). Хотел тут спросить, но пока спрашивал сам допёр.
Вот из-за этой херни целых джва часа тупил тормозил. Метод возвращал Int вместо Int[], пиздосье. Массив интов и инты, это оказывается разные типа. Я весь гугл излазил, не понимая в чём дело.
>>1919446 C# Player's guide из шапки довольно плохо объясняет в этом плане, учусь по нему. Думаю его сначала проглотить, даже если что-то не пойму и не смогу задания выполнить. Потом уже к мелкомягким за сухими мануалами полезу
>>1919288 Вообще, конечно наверное не обязательно тебя таким сейчас заебывать, но я бы советовал как-то так вот читать пользовательский ввод. Все же лучше, чем рассчитывать, что пользователь все правильно введет сразу, даже если этот пользователь ты.
Подскажите как реализовать такое: Есть while(true){} в котором работает основная логика хочу в нее что-то типа менеджера задач чтобы в каждой итерации проходила работа по всем задачам, НО вот тут начинается загвоздка, я хочу иметь возможность в задаче написать что-то типа stopwatch.Elapsed > 10 sec остановись и дай поработать другим, а на следующей итерации продолжишь. И все это работает в 1 потоке. Вот в остановись и дай поработать другим, а на следующей итерации продолжишь. у меня проблема, не понимаю как это вообще релизовать. Так же хотелось бы не просто говорить на следующей итерации, а типа жди Х события или Х секунд или пока тебя не запустят.
>>1919618 Пытался разобраться с этим, но не понял как это сделать. Вот есть у меня 10 задач на парсинг чего-то огромного что займет по часу времени, плюс надо постепенно закидывать мелкие задачи чтобы они тоже отрабатывали как это на авэйте сделать? И мне именно надо на 1 потоке, потому что крутить программу я хочу на мелком сервере и занимать на нем ровно 1 поток чтобы остальное что на нем крутится не тормозило.
Пусть теперь, я хочу качнуть код именно этой версии. Как это сделать?
И ещё... Пусть есть репозитарий, в котором этот код является подмодулем. Как в .gitmodules включить именно версию v7.0.1, чтобы не качать весь исходник и не заливать его снова. Там около 1000 файлов, блядь, не хотелось бы раздувать репу. Может можно как-то попроще, что-то вроде:
>>1919624 И ещё, можно ли как-то форкнуть репу с определённой версии, чтобы на форк сослаться в .gitmodules, а не на основную репу, где продолжаются изменения???
>>1919587 Ыыыыы)))) Тока эта, ты там вместо такого вот - проверки делай своего времени и сбрасывай таймер после yield, вот. Ну или можешь погрузиться в прекрасный мир прерываний, тоже тема.
>>1919631 Окей, тогда как теперь решить вопрос с try-catch ? Можно конечно же писать их между yield, но это же пиздец АД. Плюс слышал что так делать нельзя, типа антипаттерн использовать yield для такого.
>>1919510 Ага. Спасибо. Я остальное то вроде усвоил. Дальше только зажать нос и нырять в раздел книжки ООП. Там у меня чисто для себя чтоб понять методы образец. Я просто не понимал почему ретюрн отказывается возвращать. Пытался и его как-то конвертировать, думал может каждый индекс массива нужно отдельно доставать в новую переменную, а потом обратно собирать в массив. Там у меня в посте было просто максимально коротко чтоб ясно изложить свой затуп. Там у меня требуется ввести количество элементов в массиве. Можно запрос на ввод и в методе организовать наверное. Хотел себе позже много-много методов сковать и в каждом каждый запросить. Чтоб прям стресс тест себе устроить. Надо конечно наверное сразу приучать себя проверять ввод на правильный возврат с консоли. Но я слишком начинающий еще, едва только циклы усвоил. Если сущностей наплодю потом, то конечно более подробно буду описывать вызов и консолей и исключения обрабатывать. Спасибо за совет
Аноны, У меня есть страница, с путем ""Account/OnPostRegisterAsync", при вызове должна регистрировать пользователя, я скопировал этот код в другой проект и там он не работает с атрибутом [ValidateAntiForgeryToken] jquery подключен, в чем может быть дело?
Работаю с Excel через C#. В связи с этим возникает вопрос, как правильно работать с COM-объектами из C#? Почему C# сам не может нормально собирать COM-мусор, и мне приходится на кучу промежуточных объектов вызывать Marshal.ReleaseComObject(obj) ??? Самое простое известное правило - не использовать два оператора точки в одном выражении при работе с COM-объектами. Вот например, такая штука обычно оставит висячие ссылки на КОМ-объекты: Excel.Sheets sheets = app.Workbooks[1].Worksheets; . Но и использование этого правила помогает далеко не всегда.
Вот например код из приложенной картинки без вызова Marshal.ReleaseComObject(books) оставляет висеть в диспетчере задач процесс Excel после закрытия приложения и всего, что с ним связанного. Хотя казалось бы, почему я тут должен маршала просить релизнуть объект?
Вызывать Marshal.ReleaseComObject() на всё подряд также нельзя. Вот почему: Excel.Workbook b1 = app.Workbooks[1]; Excel.Workbook b2 = b1; Инициализация переменной b1, а точнее, вероятно, вызов app.Workbooks[1], увеличивает счётчик ссылок на возвращаемый Workbook на 1. Но вот эта операция b2 = b1 не увеличивает счётчик ссылок. Поэтому если после того как b2 станет не нужна, если я сделаю Marshal.ReleaseComObject(b2), то b1 тоже будет освобождена и перестанет работать.
Конечно из всего этого можно примерно догадаться, как всё это работает. Но только догадаться.
По существу, я не могу надежно понять, когда счётчик ссылок на КОМ-объект: 1. приращивается автоматически? 2. когда он автоматически уменьшается? В норме релизить через маршал нужно далеко не всё. 3. когда он автоматически НЕ уменьшается после присвоения объекту обёртке значения null, и, возможно, отработки GC. 4. как узнать текущее значение счётчика ссылок на КОМ-объект?
Выводиться должно что-то типа этого: > The example displays output like the following: > Instantiated object > This instance of ExampleClass has been in existence for 00:00:00.0011060 > Finalizing object > This instance of ExampleClass has been in existence for 00:00:00.0036294
У меня же до Finalizing object не доходит и не выводится в консоль. Даже если ставлю точку останова в финализаторе, до неё не доходит. Почему так?
>>1919810 Я никогда не работал с COM через C#. Но потребляю .NET код через COM в С++.
Допустим у нас есть COM visible класс типа Human в C# , при использование в С++, класс можно будет юзать через Human или HumanPtr, так вот HumanPtr - это смарт COM поинтеры, которые очищаются автоматически, а вот если юзать Human - то он останется висеть в памяти и чистеть надо вилкой. Как это разделение будет выглядеть через C# код - наоборот - не знаю.
Теперь, допустим у нас есть массив, какой массив у нас есть в COM? Я лично использую и знаю про SAFEARRAY. Так вот, даже SAFEARRAY наполнен объектами типа HumanPtr - он автоматически не обрабытвается, и нужно вызывать SafeArrayDestroy().
Так что, как мне представляется, твои books - являются SAFEARRAY объектами, которые не обрабатываются, и в C++ коде нужно было бы вызывать SafeArrayDestroy(books). Почему - не знаю, но я хорошо в лужу сел, когда выяснил что у меня память проливается c SAFEARRAY.
Какую структуру использовать для поиска нужной ноды в дереве? Сейчас юзаю List с FirstOrDefault. Очевидно, что для такой хуйни лучше всего подходит Dictionary, но как у него с памятью? У меня будет очень много словарей, у каждом из которых будет по несколько элементов чаще всего 1-3, но в некоторых может быть до ста где-то, подойдет ли для этого Dictionary?
гонять бенчмарки впадлу, да и с листом все норм работает, просто спрашиваю вашего мнения
>>1920413 А чем словарь хуже? В теории, он должен быть быстрее при поиске и добавлении опредленного слова. Алсо, никто не знает оверхед словаря на перечисление всех key-value pair? На сколько он в этом плане медленнее листа? и медленнее ли
Что думаете по поводу вката через OpenSource проекты или через фриланс/аутстафф? Не хочу за бесплатно работать на конвеерной галере и слушать выебоны какого то прыщавого инфантильного долбоеба. Что имеется: 1. Опыт писания кода на # (около 2 лет) - ASP.NET MVC, Core (за WPF молчу - мервое говно); 2. Английский уровня B2+ (Общение, чтение); 3. Опыт в фронте (такой себе, но ковырял React, могу сверстать под адаптив или поправить, чтобы не наебнулось); 4. Нелюбимая, в тоже время не напряжная РАБотка под $800, на которой стал мертвым грузом и хочу перемен. Реально залететь на проект и хотя бы за 300-400 американский рупий перенять опыт, носмотреть что и как с upwork или freelancer.com? Делитесь опытом, кто через это прошел.
>>1920638 На проектах, с которыми удалось поработать, да и в смежных тоже, я какого-то засилия C# не увидел. В довольно крупной конторе, где я сейчас как контрактор работаю, от силы два три репа на C# из 200+. Язык хороший, инфраструктура тоже сейчас отличная стала (я имею в виду поддержку кросс-платформенности), только вот работы интересной походу нет нихуя.
Я вот написал интерфейс для шахмат, лол, хочу запилить онлайн. Можно ли высрать сервак, на котором будет сайт с, например, регистрацией и ссылкой на скачивание, и который одновременно будет работать для передачи данных между игроками? И в какую сторону копать, чтобы заебись было как в нормальной разработке делают и максимально апнуть скиллы?
Сап, двач. Поясните кое-что. Зачем нужна Иудей-Компиляция в C# Я не троллю, я не тролль-джавист, я рил спрашиваю. Без наебала.
Тип зырьте, в чём вообще преимущество виртуальной машины над конпиляцией. Это кроссплатформенность. Один раз скомпилил, запустил где угодно.
C# это на 80% веб-петушня, круды-хуюды и прочий фуллстек анал. За вычетом юнити девелоперов все пишут под винду и в visual studio. К чему вообще эта кроссплатформенность? На линуксе хоть и есть моно, но кривое и никто с linux сервером не будет бэк ебошить на C# когда есть Java.
Мобильная разработка мертва. Ксамарин мёртв. Universal Windows Platform мёртв. C# это язык для крудов. К чему эта кроссплатформенность? Просто чтоб какуджавы?
>>1920638 Думаю что хуйня. Плюс, на сишарпе не так много вакансий, при этом в вузах его учат, т.е. ежегодно выпускается насколько тысяч студентов, среди которых многие довольно хорошо знают шарп, умеют кодить и при этом как раз готовы идти работать за еду первые пару лет. Я эт к чему. А вот к чему: Либо переставай из себя целку строить и иди работать как есть, все равно в конечном-то итоге ЗП поднимут; либо вкатывайся в JS, там хоть конкуренция и больше, но средний уровень вкатышей наоборот ниже и если ты осилил шарпы, то уж как-нибудь, да справишься с тем, чтобы с вебпаком каким-нибудь разобраться да npm, а дальше будешь делать кнопочки да посылать запросики.
>>1921260 Еще один чел, что в последний раз смотрел что такое шарп в 2005м? Под линуксы уже давно есть неткор, а уже и нет5, весь бек шарповский сейчас пишут именно под него. Ну и довольно удобно, что код писать можешь на винде, а работать без какой либо ебли он будет одинаково и на линуксе. Я даже малинку в качестве сервера для пет проектов использую и все работает.
А вот зачем его сделали на виртуалке в самом начале, в нулевых, когда он под был только под виндой, я понятия не имею. Мб просто хотели чтобы было как в модной на тот момент джаве.
> но кривое и никто с linux сервером не будет бэк ебошить на C# когда есть Java. Хуя сказанул, на шарпе и пишут только потому что он лучше джавы. Если бы майки не протупили и сделали его сразу опенсорсным, вряд ли джаву вообще сейчас бы вспоминали.
>>1921606 >на шарпе и пишут только потому что он лучше джавы
А в чем шарп существенно лучше джавы? Имхо, принципиальных отличий в лучшую сторону, кроме синтаксического сахара, почти нет. Ну дженерики сделаны по-человечески, да. И костылей меньше, работа с массивами, примитивами, коллекциями удобнее.
Но все это не так уж и критично на самом деле. Видимо поэтому вакансий на джаве больше аж в 2 раза в крупных городах.
>>1921618 >Имхо, принципиальных отличий в лучшую сторону нет А что это за такие принципиальные отличия? Шарп это не хаскель, а просто лучшая джава. Очевидно что в двух ооп языках, один из которых создавался как копия второго, много общего. Но писать то приятнее на шарпе и это факт. Не думаю что в джаве есть хорошие аналоги ef core, async/await или хотябы геттерам/сеттерам. Код конечно и без этих вещей можно писать, но блять, кодить можно на любом тюринг полном языке и вопрос состоит лишь в том, где это делается приятно, быстро и удобно.
>>1921482 я писал на JS (react) - нормально, но без ООП это хуйня. Лучше уже жабу дрочить, если работу не найду. Так или иначе - C# мертв на всем, кроме веба, за бугром так то я вакансии видел, но н мидла требования конские, а джуны никому нахуй не нужны. Вот тебе и два стула. По поводу работы на галере - это зашквар, ибо приходят готовые мидлы (возможно без опыта в интерпрайзе) и их мокают в говно первый год-два. У меня жопа бомбанет от такой хуйни.
>>1910324 (OP) Пацантре, у меня возник вопрос. Предположим в у вас есть tabControl в котором 2 вкладки (tabPage). И вам нужно чтобы при открытии одной из вкладок информация на ней начинала периодически обновляться, а при закрытии вкладки нет. Так вот, как сделать так, чтобы при открытии вкладки создавался таймер, а при закрытии вызывался его метод dispose? Если создать таймер при евенте enter, то мы не сможем обратиться к нему из метода leave. Единственный вариант создавать "глобальный" объект?
>>1920638 поддвачну пост и заодно задам вопрос: Тут есть те, кто реально работает на # (web)? Если да, то какой стэк, какая версия ASP.NET/.NET Core на проекте/проектах.
>>1922043 Разработка под Dynamics CRM считается? Помимо плагинов в ней куча приложений для сотрудников и апишек для интеграций. Если да, то подавляющая часть сервисов на ASP.NET, .NET Framework 4.7.1, есть несколько на .NET Core 3.1, из фронта Angular
Нахуя нужны эвенты и делегаты? Не понимаю практический их смысл. В курсе на счет того, что линк построен на делегатах, но как мне пригодятся делегаты и события
>>1922228 Аутстаф, на наших. В условиях пандемии свободное посещение офиса, так в основном удалённо сижу. Апишки периодически клепаю. Фронт бывает, но не так часто, и огромное спасибо, что не ASP.NET MVC.
>>1922348 >на наших сочувствую, я представляю днищенскую ЗП На чем бэк написан? Апишки под микросервисную архитектуру? Тесты/бенчи? По эстимейтам ебут мозги или 5 минут делаешь и 2 часа хуй пинаешь?
>>1922363 ЗП на жизнь хватает, 140, ДС. Бэк? В плане? Всё на шарпе пишем. Апишек куча старых, написанных как попало, новые да. Тесты почти никто не делает, я в своих проектах клепаю. По эстимейтам не парят, если задачи не очень важные, но задачи у меня, так уж получилось, есть всегда.
>>1922399 походу апихи с простой работой по get-post данных из БД, без особой логики? 140к (я хз, сколько это в $, около 2к походу) - не плохо, думал меньше. Всегда поражаюсь опенсоурсу, где все обсосано, все по паттернам, дженерики-хуерики, абстракция, тесты. А по факту, с кем не общаюсь - все клепают, только эстимейт закрыть (это не камень в твой огород, просто суровая реальность). >>1922008 как пример, хотел закинуть пул реквест, чтобы была галочка на CV на участие в проектах, но в нем только разбиратся нужно хуеву тучу времени. Так или иначе - спасибо за отзыв
>>1922423 Не, простыми крудами тут и не пахнет, тут ты пишешь методы, делающие определенную бизнес-логику. Это сделано для того, чтобы соседние системы своими руками не лезли в наш процесс, а довольствовались лишь некоторыми методами, торчащими наружу. Иногда эта логика конфликтует с плагинами Dynamics, тогда приходится искать по цепочке вызовов, что же именно там происходит. В общем, достаточно весело, да и в бизнес-процессе клиента кое-что понимаю, это интересно. По поводу быстрого закрытия тасок - тут уж как повезёт с загруженностью и с руководителями. Обмазываться абстракциями и паттернами никто не мешает, главное, чтобы люди после тебя могли доработать проект без особых проблем. Сам чем занимаешься?
>>1922449 > с плагинами Dynamics не понимаю, потом погуглю >Сам чем занимаешься? финансист/экономист/аналитик/хуй пойми кто Я летом хотел перекатится - подготовился, CV, пет проекты, вся хуйня. По факту прошел 3 собеса, по одному предложили $200 (типо джун), по другому не прошел по софт скилам (Швейцарская компания), по третьему предложили за бесплатно стажером на 3 месяца. Сам на решетках уже пишу хуй знает сколько, года 2-3 точно, начинал с WinForms, WPF, потом когда понял, что Desktop мертвый, начал корвырять ASP.NET MVC5, потом Core2.0 и т.д. Сейчас начал смотреть .NET5, по тому опенсоурсу, что скинул выше, что то пиздец, даже влень разбиратся, чтобы закрывать какие то таски в issues. Планирую поковырять что ни будь, повспомнить, уже много чего из головы вылетело и пытаться вкатыватся, но уже делать ориентир на фриланс или буржуйский аутстаф (напрямую)
Короче, помогите разобраться. Допустим у меня есть апач(чтобы фронт запускать), есть гейтвей, есть пара вебапишек. Все это в докере. Допустим я хочу иметь возможность одним из сервисов какой-то ip получить(чтобы добавить в ЧОРНЫЙ ЛИСТ). Я правильно понимаю что для этого я должен пошаманить с докером? Или можно как-то просто в гейтвее дописать заголовки? Просто я чет не ожидал что у такой вот фигни возникнут сложности, опять же вскрылось это только когда таки в докере запустил, до этого тестил так и нормально ip просто из контекста доставал - все работало, а тут, не то чтобы выжная функция, но раз уж сделал ее - хорошо бы разобраться почему в докере оно не работает. Вернее как, ip-то отпределяется, но видй 172.xxx.yyy.zzz эт сосвсем не тот что настоящий, я гуглил, это вроде как на ip что докер выдает при запуске контейнеров, но я опять же не настолько щарю, просто хотел разобраться как оно работает на самом деле и как надо делать.
https://www.codepile.net/pile/ADNVAPD8 Двощик, не бей лучше обоссы, но я совсем дурак и так и не могу понять методы. Вот смотри, почему если убрать/заккоментить метод Reverse который переворачивает цифры в массиве задом наперед, то всё идёт нормально. Но когда он выполняется, то он переворачивает и массив который должен оставаться неперевернутым? Я ведь "создаю" две разных переменных с массивами? Или не "создаю"?
int [] numbers (Этот создаётся в методе GenerateNumbers) и int [] reversedNumbers (Этот создаётся путём переворачивания задом наперёд первого)
Или второй вообще не создаётся, а ссылается на первый или как понять? Или нужно вызывать как-то метод в методе (или прям в Main вызывать метод в методе через метод чтобы было правильно?
Я хотел.
Создать массив от [0] "1" до, например, [4] "5".
Напечатать его,- 1,2,3,4,5
Напечатать его же но перевернутым 5,4,3,2,1
Почему переменная numbers то меняется? Или мне дальше изучать, а там придёт? Инкапсуляции всякие и прочие приват, протектед нужны?
>>1922498 Да я гуглил же. Хотел посмотреть. И их у меня нет, кек. При том что в мидлваре - прописано все. Вернее как, они есть, когда запрос идет от фронта или через гейтвей, но если напрямую в контейнер постучаться по тому порту что я ему в докере прописал - нету. А я как-бы исходя из того что каждый контейнер должен быть самостоятельным - хотел понять, почему так вот выходит. Хотя ладно, наверное надо лучше погуглить. Хотя я вроде гуглил часа 4, на стековерфлоу тоже просто про X-Forwarded-For пишут, на сайте майков так же, на гитхабе видел ишью как раз по поводу того что не удается узнать верно ip клиента из докера, но не стал вникать, оно вроде закрыто было, а значит если это баг, то должны были пофиксить, а если не баг, то хз, я там беглым взглядом не нашел решения проблемы, может жопой читал.
>>1922511 Из-за соображений, почти все, в шарпе являются ссылками(есть еще типы значений). Когда ты пишешь, что int[] newArr = arr - ты считай создал ярлычек на рабочем столе. Ты можешь создать много таких, но вести они будут к одному файлику и если ты его удалишь, как-то изменишь или что-то еще, то когда ты будешь пытаться по ярлычку кликнуть - тебе будет выдано то что стало с настоящим файлом. Аналогия конечно, но для того чтобы суть понять я думаю сойдет. Так вот, массив - ссылочный тип. Всякие int,double и структуры - значения, они копируются при передачи в метод или при присвоении. Т.е. чтобы не происходило изменений с исходным объектом - ты должен скопировать его, либо как в прикриплейде - создать новый массив и заполнить его самостоятельно.
>>1922511 А вообще, ты молодец что стал разбивать на методы. На начальных этапах многим это кажется не оч полезным, но потом такая боль, когда на реальной работе приходится приучать себя к этому. Лучше это делать сразу, а то как я будешь: 400 строк метод - хех, ну не 600 же; 600 строк метод, ну, бывало и хуже; 2к строк метод - ай, потом отрефакторю.
Анонче, есть у тебя какой то код с использованием интерфейсов и без? Ну к примеру код выполняет одну и тоже задачу. И на примере его описания видна польза интерфейса. Типо вот тот не юзаем интерфейс и получается хуйня а тут юзаем и получается как в сказке.
Ебаный рот этой студии. Вверху на тулбаре был комбобокс в котором можно было выбрать какой проект запустить для отладки и сегодня он куда-то взял и проебался. Как его добавить назад?
Блять. Нашел - пкм-настроить-команды-панель инструментов-начальные проекты. В настройках он отображается как будто он тулбаре есть, но его нихуя нету. Охуено!
>>1910324 (OP) Пацаны. Есть такая проблема. Есть объекты класса. Нужно, чтобы изменение в этом объекте приводили к изменению в control'ах (textBox например), причём нужно, чтобы изменение в разных объектах приводили к изменению в разных контролах. Как это сделать? Про эвенты я знаю, но как сделать так, чтобы при обработке эневна изменялось свойство нужного мне контрола?
Блядь, почему так сложно-то начать с нуля новый проект, даже если все знаешь как делать? Вот, блядь, я наговнокодил штуку. Она работает, клиенты довольны, но там реальный пиздец. Думаю: Проще переписать, чем пытаться рефакторить. Создаю новый проект и часа 2 просто сижу - туплю, думаю о том что и как лучше сделать, а потом удаляю проект и начинаю делать задачи которые стоят. Говнокод копится, рефакторить не хочется, потому что кажется что проще новый сделать. Так уже 3й год идет.
Анонче таки вопрос. Есть какой либо способ верификации приложения? Возможно не правильно сформулировал вопрос, объясню на примере. К примеру есть телеграм бот код которого выложен на гитхаб. Есть какой нибудь способ сделать так что бы юзер мог узнать когда будет писать в этого телеграм бота что код этого бота не менялся. Понимаю что скорее всего нет но все же решил уточнить.
>>1923631 Ну так то return "hash"; который должен вернутся если код не меняли. И как узнать что мне бот мне не написал заранее заготовленую строку а не хеш исполняймого файла?
>>1923633 Я не в курсе про что ты, я вкатывальщик)
>>1923670 Тебе же блин сказали: Хеш. Смотришь оригинальное приложение, обычно там и так лежит файлик с хеш-суммой, либо рассчитываешь его. Затем рассчитываешь хеш для приложения что у тебя. Если отличаются - значит поменялось. Что сложного-то?
>>1923670 > код которого выложен на гитхаб > Дак а причем тут гит? ... > Есть какой то апи который может верефицировать запускаемое приложение? Нету. Зато есть системы контроля версий. Блять, короче. Если ты менял код делаешь коммит (точка сохранения). У этого коммита есть id, вот этот id ты можешь цеплять и сравнивать.
>>1923675 >>1923677 Да вы не поняли просто что нужно. Еще раз повторю. Есть к римеру бот на гитхабе. Ну к примеру мне нужно гарантировать что именно бот который я выложил будет запускать юзер. Но юзер может его скачать и модифицировать, и просто подсовывать нужный хеш. А мне нужно как то гарантировать что код запущенного бота это код на гитхабе. В частности бот не должен сохранять ни каких данных о пользователе который ему пишет. Но как я могу подтвердить что мой бот не сохраняет данные? Только выложить бота на гитхаб. А как пользователь может проверить вдруг на гитхабе один бот а запущен у меня другой?
Делаю проект ASP.NET Core MVC+Entity framework. Мне нужно чтобы пользователь мог добавить в БД данные, которые имеют одно из нескольких определенных заранее значений? Как это реализовать?
Хм. Тупой вопрос. Смотрите, допустим есть некая база. В ней есть довольно общая сущность, допустим это товар. У нее есть связанная таблица атрибутов, в зависимосмти от типов товара - там разные могут быть атрибуты, они привязаны через доп-таблицу: ТоварАтрибут Так вот. Суть в чем. На клиенте для разных типов товара должны быть разные вьюшки. Ну, типа: Технические характеристики, размеры для товаров что имеют эти характеристики, поддерживаемые интерфейсы для товаров у которых есть уже эти вот характеристики. Ну, собвственно, мне интересно, как это было бы лучше реализовать. Пока что я думаю о том, чтобы просто добавить поле группа для таблички атрибут, ну, соответственно фронту будут отдаваться данные в сгруппированном виде и на нем можно будет просто отрисовать. Может быть есть какие-то более изящные решения? Ну, да, чому в шарпотреде - потому что я шарпоняша и это все на шарпах пишется.
мне нужен c# для использования в ZennoPoster. Он по сути тот же там использеутся, что и в книгах в шапке? А то там какие-то wpf, .net , я не ебу что это все такое, я просто хочу писать c# сниппеты на зенке без всяких там вот этих
>>1910324 (OP) Йоу, пацантре. Такой вопрос. Есть WPF приложение. Нужно периодически проверят коннект с сервером и отображать это. Есть самодельный класс, который отвечает за запись и чтения с сервера. Собна каким образом всё это можно сделать? Таймер для этого нормально или есть какие-то более современные и нормальные подходы?
Помогите с выбором. Появилось желание заняться программингом для себя. Вопрос не про трудоустройство. Допустим, я хочу склепать пару мобильных приложений и игрушек (могу 100 раз обосраться и передумать, это понятно). Как понял, есть два стула: Java и C#. Склоняюсь к шарпу из того, что читанул:
1. Сейчас адекватные мобильные игры на джаве не пишут. Используют шарп.
2. Сейчас мобильные приложения пишут на Kotlin. Не на шарпе.
Вопрос: вне контекста трудоустройства, мешает ли мне что-то клепать приложения на шарпе? Просто геймдев у шарпа, как я понял, гораздо лучше чем в джаве. Но и мобильные приложения тоже есть идейки. Подойдет ли шарп и для этого?
До этого пытался вкатиться в ASP.NET, но все каким-то убогим и нагроможденным казалось, поэтому забил. Сейчас нашел очень годный курс, связка .NET API и Angular. Так вот, если я буду разрабатывать сайты по этой методе, через API, это мое преимущество или недостаток? Уж очень такой метод показался удобным и лаконичным.
Привет добрые анончики, я образа.сь к тем кто знает что такое абстракции и конструктор, потому что я не знаю как такое юзать в моем коде https://pastebin.pl/view/a87ddb29 вот у меня пример моего говнокода который где много раз повторяются похожие функциии и методы, они работают так же единственное что отиличается так это тип данных, как мне фиксить такое и вместо 20 одинаковых функций под каждый тип данных сделать одну под все без ифов форов и медленных проверок?
>>1925270 > но все каким-то убогим и нагроможденным казалось Можешь навести пример не убогого фреймворка? Я прост только асп знаю, интересно чем он плох.
>>1925386 Я на C# вообще не гоню, меня все устраивает, так как я смотрел разные фреймворки, ларавел и тому подобное, и там только на одних миграциях можно голову сломать
>>1925371 >конструктор Дружище, у тебя статический класс. >абстракции Опять же, статический класс. >много раз повторяются похожие функциии и методы, они работают так же единственное что отиличается так это тип данных, как мне фиксить такое и вместо 20 одинаковых функций под каждый тип данных сделать одну под все Загугли дженерик классы и дженерики вообще. Они для этого и нужны. И вообще. Не используй слово static без четкого понимания, зачем оно нужно. Статические классы только в соснольке с сотней строк кода удобно использовать, в чем-то мало-мальски серьезном ты только говна поешь, пытаясь понатыкать лишних статиков.
>>1925497 так ведь для использования например не статических классов я должен буду создавать новый экземпляр класса каждый раз когда я хочу его использовать, учитывая что у меня будет много пользователей и много данных мне никакой памяти не хватит что бы хранить все эти экземпляры отдельно
>>1925512 нет, сингелтон точно не используется, потому что дб может изменять свое состояния и кешировать данные динамически, сингелтон это вообще про другое, насчет Dependency Inversion я не совсем понимаю к чему ты это, это просто паттерн, и да я спросил именно про то какие образом можно реализовать такой патерн в концепции inMemoryDataBase
>>1925535 >я спросил именно про то какие образом можно реализовать такой патерн в концепции inMemoryDataBase 1. Убираешь статики 2. Делаешь класс дженериком и сокращаешь с помощью этого код 3. Делаешь для класса интерфейс и наследуешь его классом 4. Используешь DI-фреймворк/пилишь DI вручную (по сути хуячишь инстанс своего класса в ~мейне и прокидываешь этот инстанс через конструкторы или методы к классам, где он нужен)
>>1925503 > ведь для использования например не статических классов я должен буду создавать новый экземпляр класса каждый раз когда я хочу его использовать С хуя, лол? Вот серьезно, с какого хуя-то? Ты можешь создать один экземпляр и передавать его сколько хочешь кому хочешь. Можешь ебануть синглтон и закрыв конструктор получать один и тот же экземпляр откуда угодно.
>>1925535 >я должен буду создавать новый экземпляр класса каждый >насчет Dependency Inversion я не совсем понимаю к чему ты это, это просто паттерн На пальцах. 1 изначально дергаем статик класс зависимость или синглтон зависимость прямо из класса. Работает, но все прибито гвоздями и невозможно ни нормально тестировать, ни подменить реализацию 2 Вносим Dependency Inversion - не лезем к зависимостям сами, а получаем их через конструктор. Тестируется на отлично и подменяются реализации. Но как результат - нужно создавать экземпляры 3 И если у нас экземпляры, то как же синглтоны? Решение простое - прокидывать всем один и тот же экземпляр зависимости. 4 И тут на сцену выходят IoC контейнеры (которые суть автофабрики, которые рантайм просто пишет за нас) и в них декларативно задается время жизни зависимости в рамках контейнера. И поскольку все создается с помощью IoC контейнера, то он позаботится о том чтобы все получили один и тот же экземпляр "синглтона"
>>1925955 >Решение простое - прокидывать всем один и тот же экземпляр зависимости. не валидно
судя по постоянными переложениям юзать синглтон я понял что никто не читал код который я выложил поэтому объясню на пальцах
для каждой сущности (продукты, счета, и тп) данных свой класс, а для каждого пользователя свой экземпляр с ЕГО сущностями
сейчас работает так, 20 классов которые возвращают из физической базы и кешируют в память свои сущности, они биндятся в 20 словарей под каждую сущность, ключем является пользователь, данные обновляются реальном времени, а если пользователя нет/сесия пользователя нет, то и данных нет/данные удаляются
и очевидно что все словари с данными должны ДОЛЖНЫ быть статическими, и их должно быть 20 по каждому на сущность, другой вопрос нужно ли мне 20 статических классов которые возвращают каждый сво сущность или это можно сделать умнее
>>1926028 Я класс inMemoryDB со всеми вложенными статическими классами инициализирую при старте сервиса если ты об этом, а классы которые возвращают данные из физической дб в inMemoryDB в синглтонах не нуждаются
>>1926030 конечно не читал. никто не понял зачем нужен этот инмеморидб и что он делает а когда увидел множество "new Thread()" то тут аж сердце прихватывает от такого
А "20 классов" - ты тут криво описал нечто похожее на обычные repository с кешированием внутри себя.
>не валидно конечно не валидно. ведь это середина истории. А самая суть под пунктом 4
>что все словари с данными должны ДОЛЖНЫ быть статическими ты путаешь понятие "статический" и "один для всех". Для "один на всех" не нужно быть статическим - достаточно сделать так, чтобы был один инстанс для всех
Тебе нужно понять концепт
Задача разбивается на ответственности. Затем, в соответствии с SRP, реализуешь классы, где каждый класс отвечает за свое. Далее из этих классов (как из кубиков) собираешь граф объектов с зависимостями. Ну а потом просто пнуть его и оно заработает.
И вот тут при создании графа ты и решаешь что должно быть в 1 экземпляре, а что создаваться каждый раз. А еще есть скоупы, где экземпляр переиспользуется в рамках скоупа.
Вот эту концепцию вкури, а "статики/синглтоны для того чтобы он был один" забудь как страшный сон
Можешь не любить IoC, а написать код инстанцирования руками (IoC просто генерит тот же код за нас, позволяя нам декларативно задавать). Статики/синглтоны - зло Экземпляры, но гарантирована1 штука - добро.
У тебя класс inMemoryDB, у тебя 20 классов реп, которые читают из бд. Каждый из них может кешировать тупо в словарих внутри себя. А может быть у них общий кеш - тогда еще один класс. И все это НЕ-статическое. А что из них создается каждый раз, а кто один раз - решит тот, кто собирает граф.
>>1926078 ну смотри, предположим у меня 10 пользователей, они будут получать данные по своему айди но данные у них одинаковые, тот же набор продуктов и тп, правильно я понимаю что с нестатическими классами они все забиндуют в словарь 10 одних и тех же копий тех же данных, но в разных потоках которые не будут иметь отношения друг к другу? потому что мне кажется что именно так и будет и это уже не похоже на базу данных в памяти, это просто кеширование,
>>1926099 То, что ты описал это называется Identity map - кеш загруженных сущностей. А значит каждый из твоих 20 классов получит ссылку на общий экземпляр такого кеша, где они и будут спрашивать "не загружено ли"
>>1926125 он как раз нужен чтобы НЕ создавать новый поток, а взять уже созданный из пула. Это экономит и время и ресурсы. поэтому минимум Task.Run() вместо new Thread() если оно вообще нужно конечно - ибо ты обращается к I/O
>>1926010 Ты же понимаешь, что я описал DI-реализацию ТВОЕГО кода с ТЕМ ЖЕ функционалом? Где вместо статика (который по определению является одним инстансом) мы используем один инстанс? Пиздец у тебя каша в голове. А по факту делается это так: 1. Добавляешь в интерфейс строку static void GetInstance() => throw new NotImplementedException(); 2. Добавляешь в класс строку static void GetInstance() => new inMemoryDB(); 3. Вместо имеющегося инстанса кидаешь в конструкторы _instance.GetInstance()
А по факту это не делается, а используются DI-фреймворки, которые делают все вышеперечисленное вместо тебя, а тебе нужно написать одну строку. И ты бы быстро нашел этот функционал в любом из них, потрать ты хоть секунду на изучение темы, а не беги на двачик с вопросом, который при твоем непонимании статиков объяснить примерно нереально.
>>1926249 А в чем проблема лока кроме того что он статический? и что в данном случае можно использовать кроме сторонних фремворков?которые типа "написал строку и ок" а в реальности "написал строчку и там выполняется полная каша которая делает код процентов на 200 медленнее как например с ЕФ
>>1926254 Можно, например, использовать ConcurrentDictionary. Тогда, может, кому-то и захочется читать ту простыню.
На Энтити гон абсолютно необоснованный, он генерирует запросы, которые от рукописных отличаются только переименованием полей. В два раза медленнее он, потому что вместо тебя реализует вот это кеширование, транзакции и другое.
Знатоки и мастера синтаксиса. Вот возникло у меня жгучее желание заиметь словарь, в котором значением будет другой словарь. Так вот, когда я пробовал вот так вот Dictionary<string, Dictionary> - студия меня матом послала, дескать нужно указать типы для ключа и значения. Но ведь в том и суть что мне нужно чтобы словари что являются значением - могли быть любыми. При этом хотелось бы чтобы тип был виден нормально и не нужно было преобразования эти делать. Есть хак какой-нибудь, кроме как: Dictionary<string,Dictionary<object,object>>?
>>1926791 >могли быть любыми. При этом хотелось бы чтобы тип был виден нормально нужно подключить библиотеку libastral в проект и это станет возможным.
Делаю проект на ASP.NET Core MVC. Реализую проверку ввода строки с помощью атрибута [Remote]. Одним из условий проверки является проверка на ввод пустой строки. Решил это реализовать используя string.IsNullOrEmpty(). Но оно не работает! Я как мог сохранить данные с пустой строкой, так и могу. В чем может быть проблема?
Почему в .Net backend разработчик сайтов называется Software Engineer, или этот стек не веб? Объясните. Похоже больше на веб, с SignalR и JS.
Experience with ADO.Net, MVC, WebAPI, SignalR Experience with Lucene.NET Knowledge of JavaScript, TypeScript Knowledge of xUnit, MsTest, Moq Experience with SQL (Microsoft SQL Server) Familiarity with Agile process, Scrum, Git
>>1926791 Можно завернуть Dictionary<object, object> в класс Yoba и прописать проперти Type - будешь хоть как-то видеть тип. Или завернуть Dictionary<string, Dictionary<object, object>> в класс Yoba и прописать свистоперделки для удобства. А так - только Dictionary<object, object>, динамическая типизация не предусмотрена, так что придется иначе ставить задачу или терпеть неудобства. >>1926921 Так можно сделать, но по сути это то же самое, что Dictionary<object, object>, только без предохранения от Студии и компилятора. Любой обосрамс в коде ебанет только в рантайме, и местами выявить проблему очень непросто. Лучше писать эксплицитно Dictionary<object, object> - меньше вероятность выстрелить себе в ногу, хоть и придется везде прописывать приведение вручную.
Всем привет. Вот какой вопрос. Два года назад стал разработчиком. Писал на C#, в основном на фреймворке Террасофта (бэк на C#, фронт на их специфическом JS). Сейчас у компании свой новый проект на Java, без Гибернейта и Спринга. В каком направлении развиваться. Я работал немного с Java в своё время, он показался мне всратым по сравнению с дотнетом. Но вопрос в рынке труда и перспективах. Плюс, на изучении чего сосредоточиться, какие вопросы нужно хорошо знать, а что можно подглядеть по ходу работы?
>>1927437 Короче, сяду за новый пет-проект на .Net 5. Но вопрос ещё и вот в чём: стоит ли смотреть в сторону Java? Она мне кажется совершенно всратой. Плюс, шарп я люблю за то, что можно смотреть в сторону геймдева на Юнити.
>>1927805 Не понял что ты спросил. Пишу на винде, потому что студия тупо удобнее чем все всякие vsCode и дргуие говноредакторы, типа райдера. И попробуй пусть хоть один пидорас скажет, что студия неудобна, почти каждый плсюовик - в ней кодит, хоть и не все признаются. Просто вот так уж вышло, что по факту - лучше студии и нет ничего для разработки. Разве что в нишах всяких, типа под яблоко - лучше их xcode (или что там у яблочников сейчас, я давно не следил), под андроид - андроидстудия; но если смотреть в общем - студия все еще остается лучшей иде, если ты на плюсах или языке из .net кодишь. А то что пишу сейчас - запускают как на линуксах, так и на винде.
>>1928409 Главная проблема студии (помимо кривого перегруженного неинтуитвного интерфейса, в котором все свалено в одну кучу) - её громоздкость. Т.е. либо она у тебя будет отжирать половину ssd, либо грузиться по пол часа.
>>1928549 ну ты даешь, Яблочники уже всю всю зарплату потратили на оверпрайснутый еир, на подписку АЙтюнс, на АЙклоуд, откуда у них деньги еще и на ссд, да и нету слотов расширения у епловых поделок
Сап шарп. Нужна архитектурная помощь неофиту. Есть декстопная впф апликуха для прохождения тестов. У нее есть локальный (файл) sqlite. У теста есть n вопросов, нужно реализовать "сохранение" теста при прохождении если по каким-то причинам приложение будет неожиданно закрыто. В базе уже есть таблица с результатами, только они сохраняются в конце. Я хочу переписать так чтобы запись апдейтилась после каждого вопроса. В таблице есть поле - перечисление ответов, туда запихивается сериализируемый list<answer>. Дальше у меня начинаются вопросы. При загрузке теста нужно определить есть ли запись или нужно начинать новый тест. В начале я подумал что нужно доставть тот лист и смотреть сходятся ли каунт листа и каунт вопросов, но это мне не совсем подходит. Дальше я подумал что мне нужно добавить флаг - пройден ли тест, но добавить поле в таблицу не совсем правильно т.к. у меня шифрование/безопасность и юзверь может залезть в файл бд и поменять флаг. Дальше я подумал что нужно этот флаг засунуть в само поле ответов, т.е. в лист, но лист это перечисление ответов, а мне нужно записать как-то поверх него вот этот стейт. Подумал записывать в поле словарь, но у меня не соблюдается уникальный ключ, т.е. ответы могут быть идентичными. Короче как это правильнее реализовать? Или можно как-то юзать словарь без уникального ключа?
>>1928714 Так и не понял в чем проблема еще одну таблицу создать и что там у тебя шифруется и почему новая таблица не будет шифроваться.
У тебя ответы в ОЗУ "шифруются"? В чем проблема юзеру сейчас "залезть в файл бд и поменять" что-то?
Хуй знает. Непонятно что там у тебя накостылено. Нарисуй на бумажке нормализированную схему БД типа: Test (Id, IsCompleted), AnwerFact (Id, QuestionId,...) и подумай, сможешь ли ты осилить рефактор нормальный.
>>1925270 Оно оба ASP.NET Но вот именно ASP.NET MVC со всякими рейзорами я уже года три нигде не видел. Так что не преимущество, но скорее всего и не большой пробел. Иногда на собесах и за рейзор спросить могут.
Console output is actually an IO stream that's managed by your operating system. Most IO classes (like FileStream) have async methods but the Console class was never updated so it always blocks the thread when writing.
Console.WriteLine is backed by SyncTextWriter which uses a global lock to prevent multiple threads from writing partial lines. This is a major bottleneck that forces all threads to wait for each other to finish the write.
If the console window is visible on screen then there can be significant slowdown because the window needs to be redrawn before the console output is considered flushed.
Анонче помоги. Я хз с чего как найти то что надо мне. Вопрос такой. Есть такая игра path of exile, для нее есть сторонний софт который по нажатию клавиш получает данные о предмете из игры. И вот вопрос как он получает данные из игры ? Вот пример такой программы. Она сильно сложная для меня. Хотелось бы сделать что то похожее но вот не могу понять как программа получает данные о предмете, на сайте игры ничего нет такова(
>>1930369 >>1930371 Оказалось что в самой игре есть фича, при нажатии кнтр+ц игра копирует данные о предмете, софт обрабатывает инфу с буфера обмена и отправляет на сайт.
Блять, Двач, ну это же пиздец какой-то. Есть один паттерн для написания приложение на WPF под названием MVVM. Узнал об этом паттерне несколько лет назад, за это время успел выучить Python на нормальном уровне, но ебучий MVVM так и не освоил. Я могу без проблем передать свойства объекта из View в Model, вернуть их, отобразить, с этой частью проблем нет. Но ебучее нажатие на кнопку реализовать - это же тотальный пиздец. Какие-то нахуй ICommand айхуйкомманд, RelayCommand на несколько десятков строк, да это, ебись оно в рот, не стоит того ради выполнения пары строк кода для изменения интерфейса. А когда начинается открытие дополнительных окон в приложение то всё нахуй, дальше пешком быстрее будет. Есть какой-то нормальный аналог этому паттерну? Я с этим говном заебался возится. Костыль на костыле, блять, и никто этого не видит.
>>1930576 >успел выучить Python на нормальном уровне >MVVM так и не освоил Петухон можно выучить до "нормально уровня" за 15-20 минут? Ровно столько нужно, чтобы разобратся в таком элементарном паттерне
>>1930576 Справедливости ради - сам-то паттерн понять не проблема. Хуйня в том, что он не нужон и вообще больше проблем вызывает, особенно в контексте WPF. Ыыыы, как весело сидеть с профиллировщиком и искать где же ты от INotifyPropertyChanged забыл отписаться. А вообще, большей справедливости ради - WPF - говно. Серьезно. Лучше чем формы не придумали еще. Вот это как раз охуенная штука была: пишется легко, работает быстро, куча вещей прямо из коробки, еще и не нужно эту залупу XML'нуй под названием ЗАМЛ использовать. Если бы я все еще писал под десктоп, тем более виндовый - то брал бы формы, охуенная штука была, однако.
>>1930576 >Но ебучее нажатие на кнопку реализовать - это же тотальный пиздец. Какие-то нахуй ICommand айхуйкомманд, RelayCommand на несколько десятков строк, да это, ебись оно в рот, не стоит того ради выполнения пары строк кода для изменения интерфейса. Ну, раньше как было? Нажал на кнопку, сработало событие, которое вызвало нужный метод. А ща нажал на копку, сработало событие, которое вызвало команду, которая вызвала метод, который на нее подписан
Сап. Прошел 40 уровней джавы, начал переводить один исходничек на джаву, который был только на пайтоне, да так там всё охуенно, что я на 3 месяца в пайтон перекатился и прошел лэтпай. Но сейчас понимаю, что пора бы и честь знать, надо взрослый компилируемый язык учить. Свёлся к шарпам... но ссука открываю это после 3 месяцев питона и плакать хочется, как не хочется опять в эту джаву. Уговорите меня, пожалуйста, парни. Дайте леща, что бы я с питона слез. Как мне обмануть мой мозг? Чем питон хуже сишных? Ведь там, где я два дня матерился в джаве, в питоне я просто пару строк практически наугад написал и оно заработало.
>>1930725 Ну так шарп не джава, а язык в котором можно умереть от сахарного диабета. Думаю, код на нем лаконичнее чем на питоне. > Ведь там, где я два дня матерился в джаве, в питоне я просто пару строк практически наугад написал и оно заработало. Наведи пример задачи плез.
>>1930725 У меня ситуация обратная. Я блять искренне не понимаю людей добровольно идущих на питон после джавы/шарпа/плюсов(особенно после плюсов), это же конченная песочница в которой буквально все сделано за тебя и ты как макака импортишь модулей 20 и пишешь 3 строки кода. Да я js уважать стал, когда увидел что творится на питоне.
>>1930922 >и ты как макака импортишь модулей 20 и пишешь 3 строки кода То ли дело в шарпе, который в своем хваленом wpf графики из коробки рисовать не умеет
>>1931257 >А почему формы умеют а кто сказал что такой подход правильный
>Может WPF еще и в кнопки уметь не будет и надо свой контрол писать? Кнопки это базовый функционал и нужны каждому. Более того, они нужны как "кнопки разве что с разным внешним видом" в отличие от графиков, где каждому нужно свое
Изучаю сишарп по слитому курсу скиллбокса. Помидоры не кидайте, как база очень даже ничего. 22 года сейчас. Есть вообще шансы вкатиться на десктоп бэкенд? При условии конечно что буду вьебывать
>>1931356 я понимаю, что ты хочешь услышать слова поддержки но твой вопрос звучит так "я вот хочу заниматься футболом, у меня получился, если я буду упорно тренироваться каждый день?"
>>1931322 >на питон пиздите - охуенный язык вот только подходит не везде. забавно смотреть на пляски с мультипроцессностью вместо того чтобы взять любой язык без GIL
>>1931371 У меня синдром дефицита внимания, мне сложно концентрироваться долго на определенных вещах, собственно я невнимательны и расссеяный но это касается только мелких вещей, забыл кому поставить, забыл букву написать, пропустил слово на диктанте и тп, но я слышал что в современных программах для писания кода все так умно что программа сама подсказивает тебе что писать, что забыл написать и где программист допустил. Так какой шанс вкатиться в программирования?
>>1931499 стандартная поставка со всеми дистрибутивами винды, и как было сказано, один маленький файл netstandart.dll решает все проблемы, все таки dll это самостоятельная сущность, в отличие от class файлов.
>>1931499 Через синглфайл паблиш с триммингом он сожмёт дотнет до 10 мб и впердолит в экзешник, даже ставить ничего не надо. Это же не джавапараша, где открываешь jar-файлы рантаймом как в питоне pyc.
>>1931500 как человек с таким же расстройством могу сказать, что все ок это как с нервным тиком - постарайся забыть, что он есть и перестань пропуск запятой сливать на диагноз и все должно быть нормально
Сори за зелёный вопрос. Возможно ли в .Net сделать структуру как для каждого скрипта на Питоне(пик), или для каждой программы надо делать новый проект(мейн один рабочий на проект)?
>>1926948 Я б с радостью, дружочек-пирожочек, но я до лета перекинулся на дроч егэ.
Нет, я не школьник, мне 30. Ага..
Взял 5 доп. предметов для сдачи на егэ. Хочется сдать хотя бы 2 + рус.мат. Я ебанутый немного,- жить не хочется ну, чуть больше чем обычно уже спустя неделю подготовки. Помогает, разве что, что мне кроме этого и работы ничего делать не нужно т.к друзей нет, растительности нет, населена фаготами.
Но будет интересно посмотреть чего ты достигнешь. Напишу через год, постараюсь не забыть.
Анон, вот смотри, есть два класса, которые почти одинаковы, но у них есть различия. Допустим, вот пример на пике это как раз та хуйня о которой я говорю. Так вот, допустим мне хочется чтобы в наследниках я мог получить явный тип, а не интерфейc. При этом мне не нравится вот эта вот залупистика с дженериками. Есть ли какой-то более изящный способ получить подобное поведение?
Может быть тут непонятно. Но вот реальный пример. У меня есть TCP-сервер на сокетах. На одном порту слушаются и обрабатываются одни сообщения, на другом - другие, на третьем третьи и т.д.. Я хочу иметь возможность получить явно тот тип сообщения и не париться с приведением типа. Потому я TCP серверу ебанул в параметрах женерика - тип сообщений, чтобы можно было прокинуть нужный парсер и обработчик. Но эти дженерики оч сильно раздувают код, оч тяжело читать, оч тяжело потом что-то изменять, мне хочется от них отказаться, а как - хз. Пока что я думаю о том, чтобы вообще просто уйти от наследования и просто сделать два несколько классов, которые просто повторяют частично логику друг друга, да будет копипаст, но будет и легче с этим вот работать, если что-то поменяется, я буду смогу меньше костылей использовать, потому что сейчас иногда выходят жуткие способы обойти наследование. Как второй вариант - я думаю о том, чтобы этот базовый класс уже превратить в сорт оф компонент и просто его передавать в конструкторе дочерним, а общение с ним на события повесить.
Посмотрел исходники .net. Объясните, зачем в рамках метода там часто делается что-то типа { TypeName foo = m_bar; foo.Buzz(); } Почем просто это m_bar не использовать? И должен ли я делать так в своем коде?
Можно на ваших шарпах как-то в сишном стиле собирать код? Типа вот у меня файлики лежат, вот в той папочке - либы, я указал, слинковал и получил exe один, вместо этой кучи dll
>>1931794 АРРРЯРЯ мне не даёт покоя эта хуйня, не игнорите мой тупой вопрос. Я чисто из-за моего бзика пока порядка не будет с структурой не могу начать.
>>1930912 На самом деле я по началу в питоне охуевал от отсутствия жесткой типизации. Просто голова кругом идет. Но потом привыкаешь. Наверное мозг разглаживается лол
>>1930912 >>1932026 Т.е. понимаешь, да? На питоне я ничего даже не написал. Просто настройки и собственно SQL запрос. У меня первая мысль была - а что тут учить то надо, какие библы импортировать штоле?
А шарпы с джавой я сравниваю чисто по синтаксису. Ну одно и то же ведь. Только на джаве я бы для этого неебическую портянку писал и еще оно бы не работало с полоборота, ебался бы два дня.
Сап аноны, у меня такая проблемка. Я использую в с# базы данных, мне нужно вывести таблицу в datagridview с определенным значением, но проблема в том , что если переменная в sql запросе написана на английском, то он ее находит и выводит без проблем , а если на русском, но он нихуя не выводит, кто знает как это пофиксить?
Можно всё сделать через операции: прокидывать в args[] Main название операции и главу, например, Chapter_1, Exercize_8 кидаешь, все упражнения у тебя наследуются от абстрактного BaseExercize, где у тебя есть абстрактный (или виртуальный, тут как хочешь) метод Process
Отбираешь нужный класс var operation = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Name == args[1] && t.Namespace.Contains(args[0]) && !t.IsAbstract && t.IsSubclassOf(typeOf(BaseExercize))).Select(i => (BaseExercize)Activator.CreateInstance(i)).FirstOfDefault();
operation?.Process();
Всё это получается через рефлексию, хреново оптимизированно, но можно обойтись без кучи проектов Ну и естественно аргументы - имя класса и неймспейс (или его часть)
>>1932026 >сырой скл >2к20 Ты сейчас серьезно? В шарпе конечно немножко больше надо ебаться - обьявить свои классы для модели, сделать свой контекст и указать какие в нем таблицы, но это же делается чисто для того, чтобы ты потом вместо > UPDATE Freaks set Huy = 'Pizda' WHERE Gender = Transgender Написал >foreach (var freak in dbcontext.freaks.Where(t => gender == Transgender)) > freak.huy = "Pizda"; >database.SaveChanges() И при этом шарп за тебя еще базу данных со всей моделлю, если ее нет, создаст. И при этом будет еще следить за изменением всех моделей, чтобы ты в одну консольную комманду мог синхронизировать бд модель с шарп моделью. И да, в 2к20 на шарпе даже скл можно не знать, ведь запросы пишутся на шарпе и юзают шарповые типы. Но настройка это одноразовая, при создании проекта. В самом же коде тебе этот контекст даже создавать не нужно - просто передай его как аргумент в конструктор твоего класса-сервиса, и шарп сам создаст контекст.
А твой вариант подойдет разве что для одноразового скрипта к существующей базе данных. Но никак не к основному приложению, для которого создается бд.
Сравнение чисел из массива
Husk3y06/02/21 Суб 13:12:44№1932173384
Вкатился в СиРешётка и решил проверить смогу ли сделать самый простой квест. Условно есть параметр "удача на побег", обозначен массивом int[] luck = { 0, 0, 0, 5, 6 };, который в процессе игры может меняться каким либо предметом, повышая параметр. Сам он работает так - бросается игровая кость АКА рандомное число переменной dice от 1 до 6, если значение из массива равно значению на игральной кости, то игрок сбегает. Проблема: не могу понять как сравнить значения в массиве со значением переменной. Пробовал через for (int i = 0; i < length; i++); { if (dice == luck; ... }, но значение i всегда было равно 0. Сейчас сделал через сравнение каждой отдельной переменной в массиве - if (dice == luck [0] || dice == luck [1] || ... || dice == luck[5]), но есть же по-любому способ компактнее это сделать
>>1910324 (OP) Please help. Если ли какой нибудь способ описать группу элементов на xaml, а потом в том же ксамле вставлять что-то типа <myGroup></myGroup> несколько раз
>>1932173 >for (int i = 0; i < length; i++); { if (dice == luck; ... } Точка с запятой не нужна, т.к. это означает, что ты закончил описание цикла. То есть следующий блок кода в { } расценивается как отдельный блок со своей зоной видимости и не более. В твоём случаи, можно сделать либо так: for (int i = 0; i <luck.length; i++){ if(luck == dice){ //побег } } Либо можно воспользоваться этим https://docs.microsoft.com/ru-ru/dotnet/api/system.array.exists?view=net-5.0
Но первый это самый очевидный способ и он не содержит в себе никаких недостатков, помимо того, что занимает 5 строки кода, место 2 или 1
>>1930739 Это называется исполняемым файлом. В случаи C# это сборка, которая без .net не запустится. А .net нужен как раз потому, что там интерпретируемый код.
Есть ли адекватный способ передать в partial свойство с метаданными? Поясню, например через Html.EditorFor(model=>stringProperty) в темплейте я могу использовать asp-for тэги, и все отобразится с учетом атрибутов повешенных на проперти во вьюмодели. Но если я такое сделаю с <partial model="stringProperty", то меня пошлют нахрен.
>>1932355 >>1932349 А нет, хоть используя <partial for="stringProperty"...> оно меня и не шлет нахер, но Display(Name="Foo") на проперти оно не учитывает. Впизду это ваше программирование
Кто волокет в TCP и портах подскажите. Вот слушаю м пишу я сокетом в порт. Порт то мне для своей программы как выбрать? Тупой из головы любой? Но ведь он может быть занят уже другим приложением каким то, как тут быть, чот не одупляю совсем
>>1932418 Ну так тебе порт надо выбрать для сервера, на который будут стучаться клиенты. А сервер тебе подконтролен. Но очевидно не стоит выбирать порты, которые используют популярные приложения и системные (<1024).
>>1932329 О как. Значит .net это, грубо, то же самое, что и джавовский jdk, а равно и сам собственно пайтон? Я сейчас в том смысле, что сначала на чужой комп надо поставить что то, что бы твоё творение там работало?
>>1932446 В коре можно компилировать в self-contained под конкретную платформу и тогда прога будет включать в себя и рантайм и сможет запускаться безо всего.
>>1932435 >А сервер тебе подконтролен Но, на нем же дохуя всякого барахла еще крутится, мне у каждой проги гуглить, какой порт она юзает? А если я написал охуенное приложение, которое все покупают и используют? Тогда ведь их сервера мне не подконтрольны.
>>1932568 >а значит надо клиенту где-то указывать IP, тогда там можно и порт попросить указать. Да, и вот потом клиенты будут в тп обрывать телефоны, какой порт писать. Почему 555 не работает, ряяяя. Вот в промышленности проще с этим. 502 - modbus tcp и все. Хоть и можно порт указывать в программах, но никто этого не делает, есть уже выделенный
>>1932577 >Да, и вот потом клиенты будут в тп обрывать телефоны, какой порт писать. Почему 555 не работает, ряяяя. Так это проеб админа, если у него серв слушает 15000 порт, а клиентам сказал подключаться на 17000. Тут уж какой не выберешь порт можно поломать. А вдруг ты выберешь порт ххх, а он у кого-то фаерволом заблочен? В общем ты пытаешься решить проблему, которой нет.
>>1932638 Поучу ка я пока алгоритмы с паттернами по будням. И какой-нибудь godot по выходным. Не буду привязываться к синтаксисам пока, авось, кто то и захватит мир окончательно и бесповоротно. Плюсы учить нунахуй
Хочу начать изучение c#, но столкнулся с проблемой. Тут есть версии же, с какой начать изучение? А если будет легаси год, то придётся и старые версии знать? Может кто пояснить за версии. И вообще, как язык сам по себе: трудный, лёгкий? Сажусь за него онли ради бабок, т.к. на заводике нужен шарпист + ms sql разраб. Оклад ахуенный для моей мухосрани.
>>1933354 >Тут есть версии же, с какой начать изучение? Спроси у заводчан. Ты же, наверно, не единственный там программист (а если единственный - сочувствую). Какую версию дадут - такую и изучай. Если ты в свободном полете, то изучай сразу .NET 5. На самом деле, с фреймворка на кор и обратно можно пересесть за неделю-две, они во многом похожи. А для дроча всяких циклов-ветвлений в процессе обучения разницы между ними вообще нет. >И вообще, как язык сам по себе: трудный, лёгкий? Примерно средний. Местами может быть не очень понятным (например, со ссылочностью типов), но когда начинаешь о языке иметь представление - он становится охуенно удобным и понятным. Алсо, если нет опыта программирования - не рассчитывай, что даже через месяц интенсивной учебы сможешь писать хороший код. По-нормальному нужно уделять на учебу пару месяцев, и желательно еще ментора иметь хотя бы на работе, но я хз, как у тебя с этим дела обстоят.
>>1933354 > с какой начать изучение? С второй. Раз уж так о легаси волнуешься. А вообще с любой на самом деле, разница там не так велика. > А если будет легаси год, то придётся и старые версии знать? Что это значит? Версии языка отличаются в основном тем что тут мы можем написать array[1..5] а там - не можем, тут у нас есть рекорды, а там - нету. > Может кто пояснить за версии https://docs.microsoft.com/ru-ru/dotnet/csharp/whats-new/csharp-version-history > И вообще, как язык сам по себе: трудный, лёгкий? Если говорить о том, чтобы сесть и что-то работающее написать - легкий(я сравниваю с сишечкой и асмом, которые были в универе). Если начать копаться в кишочках, то любой язык - сложный.
>>1933437 Лол, ты серьезно думаешь, что на заводе, где ВЕДУЩИЙ ПРОГРАММИСТ, обычно получает что-то в районе 60к-80к - какой-то адовый отбор и дроч? Я вот когда в вузе диплом писал, как раз проходил практику на заводе, так вот, за время практики на всего пришли 5 человек, 4 из которых впервые вообще ИДЕ видели и по образованию эт были прикладные математики, ну и хули, дали им книжку, интернет - за месяц изучите, через месяц мы вам придумаем какую-нибудь работу, справитесь - возьмем на постоянку. Никого, блядь, не отсеяли, даже тех кто не справился с элементарными задачками - послали в сисадмины, кек.
>>1933420 >Спроси у заводчан. Я там ещё не работаю. Я пока планирую изучить C# потому что он там требуется, C/C++ как плюс, но не обязательно вообще. Просто знаю что там требуется такой чел, а в моей мухосрани людей, знающих, что такое C# максимально минимальное. >>1933437 >Посмотрим как быстро скобачьки с твоей рожи слезут А ты чего такой обиженный то? Опять дропнули на собеседовании из-за того, что ты не можешь жопку свою продать? Ну не расстраивайся, как через полгодика-год обучения шарпа, устроюсь на заводик, напишу тебе, будешь стажироваться у меня под столом.
>>1933486 Работал на крупном уральском медзаводике, чтобы твое резюме на разраба просто посмотрели нужно иметь профильную вышку и от двух лет опыта работы.
>>1933511 Это не у меня розовые очки. Это у тебя и таких, как ты - серые. Вы думаете, что надо хуеву гору времени потратить, чтобы найти нормальную работу. На своём опыте убедился, что сами знания в программировании решают процентов на 25 при трудоустройстве. Остальное это наглость, уверенность, чувство юмора и умение найти и решить то, чего ты не знаешь и не понимаешь и самое главное понять, как это работает и запомнить. Всё.
>>1933519 >Вы думаете, что надо хуеву гору времени потратить, чтобы найти нормальную работу. Для большинства людей так и есть. Каждый знает хотя бы одного человека, который с шутками-прибаутками, не зная совершенно нихуя, спокойно устраивается куда захочет. Проблема в том, что эта стратегия работает только у него, а всем остальным шутки на собесах ничего не дают. Там, где взяли одного шутника - завалили сотню не менее компетентных людей, которые не наглость и уверенность поможет, а только бог. мимо
Сап шарп. Есть один екзешник на винформах, я его декомпильнул dotpeekером, но сами формы в проекте пустые, а в исходниках весь код не в дизайнере формы, а в самом конструкторе что то типа form.Add(button1). Есть ли декомпиляторы которые сразу могут накидать дизайнер формы или какие-то инструменты скрипты которые могут это пофиксить?
>>1933519 Кстати у нас например если кандидат дохрена либиться таких даже не рассматривают, улыбнуться им в ответ и скажут мол "мы перезвоним", у хорошо программиста всегда ощущается проффДрифт на характере, самые охуенные програмисты нихуя не ладят с людьми, черты программиста отражаются на харатере и это уж точно не "умение шуточки шутить и либиться на все зубы" хочешь шуточки свои ебаные шутить пиздюй в бугалтерию к тете Любе
Суууукааа. Какой же ебанутый сатанист пидарас придумал ef дб контексты просто пиздец я ебал (ловлю дб лок при попытке создать контекст в контексте, как его обойти не ебу, т.к. у меня ебанутый код (но автор все равно гомосексуалист)).
>>1934466 Покажи что ты и где пытаешься сделать. Нихуя непонятно. Да и вообще, что в ЕФ-то может быть сложного? Прописал сеты, прописал как мапить. Все, пользуйся.
Поясните, я ничего не понимаю - есть WPF, я ставлю датагрид, делаю байндинг на дататейбл. И я хочу сделать чтобы можно было удалять выделенную строку или колонку. Как это сделать? Я могу забайндить СелектедАйтем, потом найти его строку или колонку в дататейбле, а потом удалить их. Но это хуйня какая-то, совсем неэффективно, особенно если таблица большая. Если бы я мог сделать байндинг на номер колонки и строки например - все было бы намного проще, но я могу сделать бацндинг только на номер колонки - а на номер строки никак.
Почему статик плох если он занимает меньше места в памяти и времени процессора чем не статические члены и методы? почему не делать статиком все что можно?
>>1935258 Он не занимает меньше места, более того, если ты не всегда используешь статичный класс, то сделав его не статичным ты сэкономишь оперативную память. >почему не делать статиком все что можно? А если тебе нужно n экземпляров каждый из которых будет хранить своё состояние?
>>1935286 >Он занимает столько же но не повторяется в отличии от не статиков
Ну вот я тебе и привел пример в котором твой статик будет занимать больше места. Допустим у тебя в программе есть условие и выполняется оно раз в сутки, после выполнения идёт вызов метода класса. Ты этот класс сделал статичным, т. е. он у тебя занимает n места на протяжении работы программы. Кто-то его сделал не статичным и он у него занимает n места только один раз за сутки. Теперь представь, что таких классов нужно не 1, а несколько тысяч. Если сделать их всех статичными, то тебе может не хватить места для того чтобы программа работала, при этом во втором случае достаточно распределить ресурсы оптимальным образом для того чтобы всё работало. И если даже тебе хватит места для хранения тысячи статичных классов, то все у тебя будут спрашивать, почему твой вариант с статичными классами постоянно жрёт несколько гигов оперативной памяти, а другой вариант без статичных классов потребляет в разы меньше в любой промежуток времени.
>>1910324 (OP) Сап програмач. Только что не перезвонили после тестового. Сказали что по функционалу всё ОК, а арохитектура как у уебана. Где можно щаблон проекта ASP,NET MVC Core красивый найти. Ну и что по архитектуре почитать?
>>1935361 Лучший способ попросить ьу них ознакомиться с исходным кодом, потому что все зависити от того как ПРОЕКТИРУЮТ они, у меня часто бывало что прихожу мне говорили архитектура говно, делаю как у нас, начала делать, прошло время, прихожу к другим, то же самое, архитектура говно делай как у нас, у всех свои мерки, свои конвенции, поэтому изучи их код и подстройся к их конвенциям
>>1935258 Даже если бы статик в твоей программе давал буст по памяти/времени (которого обычно в лучшем случае нет, в худшем - от статика идет убыток), то ты бы все равно его не использовал, потому что если это так - то у тебя требования к производительности настолько дикие и код настолько низкоуровневый, что ты должен не статики хуячить, а unmanaged код. А плох статик потому, что он с солидом не совместим от слова "совсем" и поощряет написание адского быдлокода, который невозможно ни поддерживать, ни расширять. Используй правильные скоупы в IoC-контейнере и не выебывайся.
>>1935855 А чем плох низкоуровневый код, ведь если обработать логику кеширования и удаление не нужных статиков тогда это будет буст производительности на пордяки по сравнению с солидным кодом
>>1936360 >А чем плох низкоуровневый код Ничем. Просто C# - язык высокоуровневый и применяется чаще всего именно для высокоуровневых задач. И если ты пишешь условное приложение для десктопа, оптимизируя каждый бит в памяти - ты хуйней занимаешься вместо разработки своего приложения. Реальность такова, что требуются фичи и багфиксы, а не оптимизация всего подряд. Конечно, есть задачи, когда оптимизация кровь из носу как нужна, но даже там не пишут все через статики, ибо: >удаление не нужных статиков Ты как себе это представляешь? Статики по определению не могут наследовать IDisposable и потому статический инстанс не удаляется ни GC, ни руками. Про кеширование тоже непонятно - статик у тебя висит всю программу, от запуска до выхода. Че ты там кешировать собрался? Короче, прочитай, что такое статики вообще, и вопросы отпадут. И бога ради, не превращай код в говнину лишними статиками. Если тебя волнуют вопросы оптимизации - всегда есть unmanaged код, который C# поддерживает.
>>1936395 >удаление не нужных статиков просто удаляешь не нужные данные из класса и оставлфяешь статик пустым, все, он не занимает места, практически. >требуются фичи и багфиксы зачем фиксить если можно писать быстрый код без багов? >не превращай код в говнину лишними статиками какая разница что код не читабелен и выглядит как спагетии, главное что бы все работало быстро и что бы ты мог в этом ориентироваться, а если надо будет что-то дописивать, ну так пусть заплатят мне денешку а не будут искать какого-то говноджуна или прости господа индуса потмоу что они тупо не смогут понять что там написано
>>1936400 >просто удаляешь не нужные данные из класса и оставлфяешь статик пустым, все, он не занимает места, практически. Ебнуться можно. Ты вообще представление о том, как в C# работает память, имеешь? >зачем фиксить если можно писать быстрый код без багов? Напиши 10к строк статиками, посмотрим, как мало у тебя будет багов. >какая разница что код не читабелен и выглядит как спагетии А такая, что если тебе понадобится кому-то код показать или посмотреть его самому спустя год - ты знатно охуеешь. >главное что бы все работало быстро Опять же, в лучше случае разницы с человеческим подходом не будет, в худшем (и самом распространенном) случае статики производительность отнимут. >а не будут искать какого-то говноджуна или прости господа индуса Ты случайно не помогал писать программу для голосования в Москве? А то звучишь как бюджетник с соответствующей квалификацией.
Заебал, короче. Если тебе реально интересно за производительность - читай Рихтера и MSDN, спойлер: статиков там нет. Если тебе хочется просто набыдлокодить максимально мерзкий код - вперед и с песней, сам же говна поешь за обе щеки из-за этого.
>>1936424 я мимокрок. конечно можно обнулить поля в статик классе, только это будет уже говнокод.
даже в какой то книжке по чистому коду рекомендуется для задачи создать граф объектов и потом новый граф для нового случая, а старый позволить скушать GC, а не делать методы типа Init(newState) пытаясь сэкономить на "ну у нас же все уже есть, только немного подменить новыми данными".
Лично у меня такие статитки допустимы только в разном кешировании при кодогенерации, правда обнулять их нет смысла, ведь они кеш
>>1936487 а в чем выражается степень "говнокодства"? если это работает быстрее чем создание новых не статических екземпляров разве это можно считать говнокодом?
>>1936497 В возможном нарушении инвариантности класса, что нежелательное явление.
Конечно может работать без побочных эффектов - мы ведь знаем про "чего где когда вызываем обнуляем". Но и метод на 10к строк может работать идеаьно - однако это говнокод.
Код должен стараться быть стабильным по максимуму не заставляя тебя помнить про возможные побочки
Есть коллекция, тип - абстрактный класс. В коллекцию пихаю экземпляры классов-наследников. Сериализую в жсон. Но десериализовать Newtonsoft Json не хочет по понятным причинам - у него нет сведений о том, куда запихивать элементы этой коллекции, а в абстрактный класс нельзя. Есть два стула. 1) создать конвертер, который указывает каждому экземпляру его тип 2) использовать не List, a ArrayLIst. Что выбрать?
>>1936512 что лучше, код который заставляет тебя писать документацию и описивать функционал но который работает быстрее и который требует от клиента что бы с ним работал только ты, или пикрил который работает медленно, который может написать даже дедушка с деменцией но зато все согласовано с современними подходами к программированию?
>>1936540 ну обычно если десериализатор видит IList<>, то он создаст List или что там у него задумано под этот случай потому лучше конкретные типы в месте десериализации. Вдруг сменишь жсон либу и будет ай а конвертер для такого случая геморно писать
>>1936546 >но который работает быстрее насколько быстрее? На 1% в лучшем случае? Насколько это оправдано? Так что очевидно второе. Это и быстрее и в разы надежнее. И даже если вдруг нужно будет оптимизировать, то в 99.99999% случаев это будут не статики, которые не дадут ни капли в оптимизацию
>>1936553 для пользователя речь идет не о процентах, а о секундах, потому что там ответ на 1 процент быстрее, там один, там на процент быстрее, и в итоге это выливается в ответ конечному пользователю на милисекунды или даже для требовательных проектов и на секунды быстрее, про такие веди как тепловые и енергетические потери я вообще молчу, и это если предположить что реально на один процент, но в реальности будет от 0 до нескольких процентов быстрее, иногда и на порядок процетнов быстрее
>>1936558 обычно это выливается в конечному пользователю в "ваще не вижу разницы" (потому что статик vs не-статик никогда не было hotpath) и в колоссальную разницу в сопровождении проекта для любителя преждевременных оптимизаций и экономий на спичках.
Я не знаю какие нужно иметь кривые руки, чтобы перевод с инстансов на статики дал выигрыш в секунды. Тут 100% дело будет в другом, нежели в этом.
Но ведь на твоём пикриле не браузер, а обычный говнокод который выводит в консоль текстовое представление страницы находящейся по адресу http://data.pr4e.org/page1.htm
Это хорошо отражает суть тех кто пишет на петухоне - они даже не понимают что конкретно делает их код.
>>1936573 Я это кинул именно как пример СОЛИД ПИТУХОВ, потому что этот код стандартам "высокоуровневых програмистов" верх совершенства, понаподключал библиотек, сделал инициализации, написал несколько рандомных кодов и бегут на борду мерятся у кого меньше строк получилось при это понятие не имея что там твориться внутри этих библиотек
>>1936574 >пошли маняманевры какие еще маняманевры
я задам прямой вопрос ЗА СЧЕТ ЧЕГО БУДЕТ ВЫИГРЫШ В СТАТИКАХ? GC можешь даже не упоминать - сразу разобью в хлам. Скорость поиска по таблице методов? - ну такое бывает с виртуальными с методами (небольшая разница). Проблема поиска методов при дженериках (о которой знают вообще единицы) в данном случае одинакова для статиков и нет
так в чем выгода то? где ты секунду набираешь?
>меньшие потери на харвере основную нагрузку делает выполняемый код, который что-то делает неоптимально (алгоритм не тот) или не очень эффективно (не продумали кеширование, оптимизацию выполнения и так далее)
>>1936597 Ну так на твоём пике с браузером и есть говнокод. А солид как раз не обязательно приводит к уменьшению кода, а чаще наоборот, потому что его предназначение это облегчение поддержки, расширения и использования данного кода, а не сокращения количество написанных строк.
>>1936624 Тем что не надо каждый раз создавать новые екземпляры класса, ждать пока система зарезервирует место в памяти для них, ждать конструкторов и тп, ты заполняешь существуюзий и уже аллоцированый класс данними, и так же быстро их читаешь, разница конечно не секунда, но по ходу работы программы большой проект может обращаться к классам сотни и тысячи раз, и какждый раз будет ждать ответа пока не пойдет дальше, все эти потери будут сумироваться и в итоге выльются в ощутимие милисекунды,
>основную нагрузку делает выполняемый код, который что-то делает неоптимально и что? нужно сделать алгоритм оптимальный и дальше заниматься архитектурними и системними оптимизациями, использовать низкоуровневый код где это возможно работать непосредственно с устройствами, а не использовать какие-либо универсальние библиотеки с кучей заплаток
>>1936682 >что не надо каждый раз создавать новые екземпляры класса >ты заполняешь существуюзий и уже аллоцированый класс данними, и так же быстро их читаешь Тут есть такая тонкость. Статические классы нельзя инстанцировать. Что ты будешь делать если тебе нужно будет 2 экземпляра твоего статического класса с разным внутренним содержимым? А если у тебя статики только там где "гарантированно не нужно 2 инстанса" то чем такой статик отличается от такого же "создали 1 инстанс и юзаем получая все плюшки ООП и DI до кучи)????
Ну а так то - Если по какой то причине аллокация создает проблемы, то вводим кеширование ака "пул объектов". Но это уже оффтоп, потому что статик класс не может заменить то, где нужно 2+ инстансов единовременно.
>нужно сделать алгоритм оптимальный... где это возможно работать непосредственно с устройствами так а статики тут причем вообще? Я вот активно использую Span, которые дают выигрыш, а вот статики нет - от них толку нет
>>1936682 >ты заполняешь существуюзий и уже аллоцированый класс данними DI аллоцирует класс в начале программы и заполняет его данными по мере использования, если че. Прям как статики мимо
>>1936690 Изначально я просто спросил почему народ не использует статики там где можно, и не пойми меня не правильно я не считаю статик что это решение всех проблем,я просто пишу что по возможности код должен работать быстро настолько это возможно а не быть читабельным настолько что бы тебя мог заменить школьник который учил программирование на ютубчике, из за как мне кажется не верного подхода к программированию производительность кода постоянно уменьшается, и в сраном 2021 году на 16 ядерном проце жду 5-10 секунд пока откроектся ебучая фотография на этой ебучей десятке, я понимаю что расширения фотографий уже не то что было 10 лет назад, и все дела, но бля
>>1936713 >спросил почему народ не использует статики там где можно, очевидно потому что статики ограничивают свободу. их нельзя создать 2 экземпляра, нельзя интерфейсы, нельзя нормально очистить просто забыв о них, нельзя замокать в тестах, нельзя заменить на другую реализацию по факту "все статики" это процедурный подход в противовес которому и был рожден ООП со всеми его плюшками.
> и в сраном 2021 году на 16 ядерном проце жду не буду спорить. сам в шоке от этого. потому что пишут "(матерится ж низзя) и в продакшен" для простых решений берут мегалибы. Только дело не в статиках же, а в засилье говнокодеров которым важно быстро написать и продать, и "пусть пользователь покупает новый девайс".
Платиновые вопросы: 1) Есть один проект который работает на локальной базе .db sqlite+ef. Могу ли я как-то на линуксе захостить саму базу, подключить к ней "клиент" и не ловить при этом database locked? 2) Какой сейчас на торрентах лучший обфускатор?
>>1936383 Троллишь? Во-первых. Нахуя тебе вложенные классы? Во-вторых. Че ты там за хуйню наделал, что коструктор может вернуть null, Ты ебанутый? В-третьих. Нахуя тебе массив как свойство? Вот серьезно. В-четертых. За строку длиннее 100-120 символов - пиздят.
>>1935258 > почему не делать статиком все что можно? Потому что такой код трудно расширять и поддерживать. При этом ты не можешь нормально его тестировать. Все вот так вот просто. Вот давай представим. Тебе нужно сделать туду лист. Тебе изначально так задачу и поставили. Ты, допустим, таки сделал его для консоли. Тебе говорят - ты че, ебанутый, нужно ГУЙ. Ты делаешь гуй. Уже будут проблема со статикой, ну, допустим ты таки уже тут не понял, что затея провальна. Все всем нравится. Но пользователь А - хочет использовать SQLite, пользователь B - хочет чтобы оповещения были на почту, пользователь C - чтобы это все работало в браузере, а D - робко просит добавить возможность кастомизации гуя через CSS. Вот как думаешь, справишься с этими требованиями, если хучил статикой? Я сам - пользую статику внутри библиотек, типа мне вот все еще кажется, что запилить свой ThrowIfNull - лучше, чем эти ?? ебашить везде. Ну и экстеншин методы без статики не сделаешь, а не всегда есть доступ к исходникам или не хочется делать обертку, ибо многословно выходит. Но все равно, зачастую статика влечет за собой код, который оч сложно поддерживать, он похож на спагетти, когда ты из рандомных мест дергаешь рандомные функции, когда ты не можешь нормально чет поменять, в одном месте не трогая в другом. Короче, статика, не для ютилити(и то в рамках библиотеки), констант и экстеншинов - такое себе. Ну и самое главное. Нужно понимать, что программисту платят не из-за того что он может решить задачу здесь и сейчас, а за то что он может решить задачу так, чтобы в будующем другие программисты могли это дело расширять, дополнять функционал и поддерживать. Просто нахуячить решение и домохозяйка в состоянии, а сделать код пригодным к переиспользованию, расширению и модификации - уже нужно чуть больше чем освоить базовый синтаксис и быть способным в простейшую логику.
>>1934718 Потому что автосвойства появились позже, а старые версии не поддерживают последние версии шарпов. В 15, как я понимаю, ты уже не сможешь рекорда делать и просие штуки последних версий шарпов.
>>1937165 >Нахуя тебе вложенные классы? А что нельзя? >Че ты там за хуйню наделал, что коструктор может вернуть null, Ты ебанутый? Так если нет в базе запрашиваемых данных что мне делать? не возвращать же пустой лист >Нахуя тебе массив как свойство? Вот серьезно. Ну а как мне массив биндить? >За строку длиннее 100-120 символов - пиздят. У нас так принято писать запросы в базу, нахрена разворачивать одну строчку на овер 100500 строчек если и так понятно что она делает и зачем нужна
>>1937347 я другой анон 1 вложенные классы можно, но какова причина делать их вложенными...сразу и не видать 2 нигде и никогда доселе не видел чтобы кому то в голову пришла идея вернуть null из конструктора. 3 кидать NRE на null - ну да, пусть потом народ гадает че за NRE. и зачем тогда вообще нужна проверка на null 4 у ВАС так принято? ясно. И похер на рекомендации о чистоте кода. Ясно. И похер что читабельность адски страдает - ведь главное что ВАМ удобно ясно
>>1937347 >Так если нет в базе запрашиваемых данных что мне делать? не возвращать же пустой лист Это от конвенции зависит. Я предпочитаю возвращать пустой лист, потому что тогда пользователю класса не понадобится делать null-check, и код типа такого будет работать: foreach (var thing in list) thing?.DoSomething(); И такую хуйню чаще всего и пишут, не проверяя, является ли list - null. В новых версиях Шарпа можно и обозначить эксплицитно, что у тебя метод может возвращать null, что более-менее пофиксит главную проблему с возвращением null, но придется очень много всего переписывать. мимо
>>1937431 > у ВАС так принято? ясно. И похер на рекомендации о чистоте кода. Ясно. И похер что читабельность адски страдает - ведь главное что ВАМ удобно Это по твоему нормально когда одна строка, функции и работа которой очевидны, занимает пол экрана скрывая при этом реально НУЖНЫЕ вещи от глаз. Не приятнее ли видеть все что нужно сразу, а не насиловать колесо мышь как не нормальный что бы посмотреть, а что же там внизу после этой очевидной строки происходит
>>1937431 >нигде и никогда доселе не видел чтобы кому то в голову пришла идея вернуть null из конструктора. >>1937438 >Я предпочитаю возвращать пустой лист, потому что тогда пользователю класса не понадобится делать null-check, и код типа такого будет работать: проверка на нулл происходит быстрее чем создание нового пустого листа который нужен просто что бы избежать исключения, если есть исключение об этом надо дать знать что бы была возможность его обработать а не создавать заплатки что бы скрыть его от глаз
>вложенные классы можно, но какова причина делать их вложенными...сразу и не видать Что бы скрыть его от глаз? Этот клас является частью другого класса, не лучше его поместить внутрь что бы соблюдалась иерархия, а не создавать кашу из всех классов?
>>1937453 >функции и работа которой очевидны очевидны кому? писателю? это значит write-only код? потому что любой читатель этого кода, который его не писал будет вынужден а) прокрутить горизонтально б) запомнить "чо тут нагородили" и держать это в памяти, чтобы не делать потом лишний раз пункт "а"
не говоря уже о том, что короткие строки читаются на порядок быстрее чем длинные.
>если есть исключение об этом надо дать знать что бы была возможность его обработать ты говоришь с 2мя анонами, поэтому отвечу на свою часть у тебя там 2 проблемы 1 проверка на нулл и сразу же NRE. зачем вообще проверять на нулл. Среда с радостью выкинет тебе тот же NRE без проверок 2 проверка на нулл + эксепшен нужна людям, чтобы заменить невразумительный NRE на что то более контекстное, которое явно поясняет че где когда - как минимум вменяемое сообщение в исключении, а то и свой тип исключения.
>Что бы скрыть его от глаз? >не лучше его поместить внутрь что бы соблюдалась иерархия, а не создавать кашу из всех классов? ну про "скрыть" мимо - они у тебя публичные, а про иерархию....ну тут спорить бесполезно. тут фломастеры, ведь у каждого свой взгляд на "нужно ли обязательно подчеркнуть что вот этот класс находится внутри другого и какой в этом смысл"
>>1937470 >а то и свой тип исключения. Собственно этот NRE я просто нахардкодил временно, потом я подключу нашу внутреннюю библиотеку исключений и пройдусь поиском везде, где встречается эти и другие типы исключений и заменю на те что в библиотеке
>ну про "скрыть" мимо - они у тебя публичные Скрыть из списка, у меня конечно же будет доступ к этом классу, он должен быть, но что бы он не мельтешил в списке классов я поместил его туда, а что бы обратиться к нему надо обратиться к составному и потом к нему, так гораздо удобнее
>очевидны кому? писателю? Это же гребаный линк, очевидно что он просто возвращает параметризованные данные из базы, он в принципе не может делать ничего другого, он не может вдруг сложить числа или вызвать другую функцию, он просто возвращает данные из базы, на всякий случай параметры в нем такие же как в методе, если у тебя метод называется GetAllItemsByCategoryId для тебя уже должно быть очевидно что линк будет возвращать все данные, где сюрприз categoryId == ParamCategoryId
>>1937525 Я условно сказал, суть что работа строки с линком очевидна, в методе проверяется состояние колоны в таблице из дб, очевидно что линк подтянет строку с этой колонной из бд что бы прочитать состояние, не будет же он скажем удалять строку из дб в методе где он должен прочитать состояние, для этого будет вызван другой соответствующий метод по типу "RemoveItemByItemId(int itemId)" понимаешь? читать стоку линк это просто не нужно ее работа должна быть очевидной по методу, а если она не очевидна или делает что-то не очевидное то значит метод у тебя говно
>>1937535 >Я условно сказал, суть что работа строки с линком очевидна долой условности. смотри на реальность - на твой же скрин.
плевать линк там у тебя или что другое никаких "очевидно" быть не должно. Код должен быть ясным для чтения, а не "ну наверное там вот так, значит скролить не нужно"
>а если она не очевидна или делает что-то не очевидное то значит метод у тебя говно ну значит ты в курсе что не так с кодом на твоем же скрине
Если я вижу строчку читая которую вижу там GetAllItemsByCategoryId, я могу допустить что я знаю что она делает. НО Я НЕ ЗНАЮ ЧТО ТАМ ДЕЛАЕТСЯ ДОПОЛНИТЕЛЬНО (и не знаю делается ли вообще) - и буду вынужден прочитать всю строку прокручивая ее горизонтально чтобы увидеть что там не навешано дополнительных условий.
ну и вообще говорить про GetAllItemsByCategoryId и при этом where(d=>d.ID==...&&d.USRID==) ну это как то. Диссонанса не возникает?
>ну и вообще говорить про GetAllItemsByCategoryId и при этом where(d=>d.ID==...&&d.USRID==)
Так там и не GetAllItemsByCategoryId вот было бы ByCategoryId тогда линк был бы с where(d=>d.ID== catiId)
>НО Я НЕ ЗНАЮ ЧТО ТАМ ДЕЛАЕТСЯ ДОПОЛНИТЕЛЬНО Ты не знаешь что дополнительно может линк сделать? Ну да действительно, а то вдруг он там в конце строки новый поток создает, самому не смешно?
>>1937553 >Ты не знаешь что дополнительно может линк сделать? нет не знаю. Линк всего лишь декларативное выражение кода, а не "знание вселенной". И чтобы понять, что именно делает линк -нужно его весь прочитать. После твоего where(d=>d.ID== catiId) может быть (даже несколько) OrderBy и тому подобное, которое в экран не влазит, а люди телепатией не владеют чтобы догадаться об этом.
не говоря уже о том, что на экране читающего даже твой where(d=>d.ID== catiId) может не быть на экране
>>1937553 >Так там и не GetAllItemsByCategoryId вот было бы ByCategoryId тогда линк был бы с where(d=>d.ID== catiId) именно )))))). еще пояснять что не так, или уже догадался?
Вот так по твоему заебись да? офигенная читаемость, была нормальный код где строка с линком сразу бросалась в глаза и которую можно было игнорировать а теперь вот этот мусор мешается перед глазами, приходиться всматриваться понимать что к чему а потом такой, ааа, так это же просто строка линка, нахера я это читал
ах да, я же не знал, вдруг там toList() по типу объекта который возвращается это не очевидно да? де
>>1937566 зачем бросаться в крайность КТО заставляет переносить КАЖДУЮ строчку на новую?
> вдруг там toList() то есть ты не читал то что я написал. ясно
>если ты о том что метод должен был называться А метод где? Где метод то? ты разглагольствуешь про говорящие названия методов (что конечно правильно), но при этом на скрине у тебя совершенно иной случай. Там нет никакого вызова какого либо репозитория с методом, а прямой запрос в базу (что конечно та еще гадость, но оффтоп в теме про длинные строки) То есть рассуждения "а если бы у бабушки были яйца"
>TryCheckIfDashboardHasSettingsByDashboardId&UserId() вот когда будет в коде вызов такого метода и "а как тут быть", то это будет уже другой разговор об именованиях, спецификациях, "репозиторий vs queryobject vs прямойвызов vs ..." А так ты рассуждаешь о высоких материях, а сам же в коде их не используешь
>>1937569 >А метод где? Где метод то? Вики : Метод в объектно-ориентированном программировании — это функция или процедура, принадлежащая какому-то классу или объекту. >прямой запрос в базу (что конечно та еще гадость А должен быть какой? Опосредованный, о чем ты говоришь вообще?
>КТО заставляет переносить КАЖДУЮ строчку на новую? так ТЫ же сам говорил что читать вертикально легче чем горизонтально, тогда почему по твоей логике весь код не делать в стиле асемблера?
>>1937586 >А должен быть какой? Опосредованный, о чем ты говоришь вообще? С говорящим именем. Ты же говоришь, что я по имени метода должен понять, чо он делает даже можно не читать аргументы и дальше вообще читать не нужно. Где они? Зачем вообще рассуждать про именования методов запроса к бд, если у тебя используются Query и Where?
Возможно ты думаешь про другой участок кода. Уточняю - вот я читател читаю твой метод TryCheckIfDashboardHasSettings внутри него запрос в виде длинной строки. Мне приходится скроллить чтобы прочитать его Ты мне говоришь что "зачем скроллить и так все понятно" на что я тебе аргументирую, что понятно только писателю ну и телепатам
>так ТЫ же сам говорил что читать вертикально легче чем горизонтально правильно. даже этот ад что ты сделал читается легче чем горизонтальный его вариант который нужно скроллить (хотя бы только потому, что его не нужно скроллить горизонтально, что пипец как неудобно) но если не только перенести на новую строку, а и отформатировать с учетом контекста - то читать станет еще легче например Data......DataLayer .Query .Where .FirstOrDefault
>>1937604 Если что, у меня широкоформатный монитор, на дефолтном масштабе у меня эта строка влезает полностью и скролить ничего не надо, я просто скрин сделал неаккуратно,
по поводу этого : >С говорящим именем. Ты же говоришь, что я по имени метода должен понять Не понял, ты имеешь в виду что бы я в названии метода еще уточнял что в нем идет обращение в базу? А что так кто-то делает? зачем это вообще нужно?
>>1937611 >Если что, у меня широкоформатный монитор рад за тебя. так и скажи что код только ты читать будешь, а если кто другой, то ему будет выдан широкоформатный монитор. у меня счетчик сарказма уже зашкаливает с тобой )
приходится разбивать пост ибо тупорылый фильтр двача доколебался до хз какого слова
>>1937611 >в виду что бы я в названии метода еще уточнял что в нем идет обращение в базу? нет. строка 33 должна не быть такой длинной и должна быть переформатирована для читабельности. (по скрину конечно не видно ее размер, а считать неохота).
понятно что 80 символов это мало, но лучше не более 100-110-120 символов (где каждое число это рекомендуемая граница, переходить через которую нужно только если надо).
да и даже если влазит в границы, то сделать пару переносов все равно сильно повысит читабельность. "Арабская вязь" читается сложнее, чем структурированный текст
>>1937644 120 это пипец мало, даже где я выделил на первом пикриле уже 90 а там всего ничего написано, строка линка 220 и вообще если я приму такую конвенцию весь мой код превратиться в некрасивую тяжело Асемблеро-Подобнуючитаемую кашу
>>1937660 кто? я таких не знаю. зато я теперь знаю кто странные люди что "раз широкий монитор, то давай использовать всю ширину и плевать на здравый смысл"
>>1937663 Я даже тебе скажу вот что, У меня НЕСКОЛЬКО МОНИТОРОВ! Представляешь? И я держу РАЗНЫЕ файлы на РАЗНЫХ мониторах, вот так да правда? да, я тот еще извращенец, пытаюсь по максимуму использовать полезное пространство, это же совершенно не подвластно Здравому смыслу правда?
>>1937669 причем тут твое рабочее пространство до читабельности кода. используй по максимуму как хочешь, а обычному человеку тяжело читать тот кошмар со второго пика даже если оно влазит.
А про то что люди используют еще ноутбуки и планшеты в своей работе я промолчу )
и да. кроме длинных строк любишь ты магию вот что это за заклинание лол Data.DataLayer.Singleton.GetInstance().DataLayer.
>>1937680 >используй по максимуму как хочешь, а обычному человеку тяжело читать тот кошмар со второго пика даже если оно влазит. Как я уже говорил, оно делает ровно то что написано в названии метода, ничего больше, там сразу после открытия тела метода идет ретурн, даже при всем желании невозможно не понять что делает эта строка, да и не нужно ее читать, тебе нужно прочитать несколько первых символов хоть на широкоформате хоть на планшете прости господи, и для тебя сразу все становиться понятным
>и да. кроме длинных строк любишь ты магию вот что это за заклинание лол Да камон, слишком толсто, ты никогда сингтона не видел?
>>1937701 >оно делает ровно то что написано в названии метода, ничего больше у тебя каша в голове. тот, кому нужно только название метода, использует эти методы снаружи - ему вообще не интересно содержимое.
"Благодарным" тебе будет тот, кто будет читать сам код метода. И вот ему плевать на название, он пришел код читать.
скажи ревьюеру что "не нужно читать тело метода, читай только название и принимай как данность что я пишу код без ошибок всегда" и узнаешь о себе много интересного
Но так как у тебя читаешь только ты, то и проблемы нет. Тебе норм )
>ты никогда сингтона не видел? такого нет конечно. вот что типа такого я бы еще ожидал Data.DataLayer.GetInstance() что было бы более чем достаточно
>>1937713 Так если ты захочешь получить свой кастомный DataLayer, нужно разделять где синглтон, где конструктор а где вообще какой-то кастомный, пример даже в моем пике, там на том втором пике, (где читать тяжело) уже используется inMemodyDAL и я хз какой еще дл захочет другой программист, использовать или создать, не важно, нужно оставить ему возможность юзать любой из вариантов максимально дружелюбно
ну а по поводу того что ошибок не делается, ну желается конечно, но не в ретурне же, протестировал все, написал комментарии, скрыл и забыл вообще
>>1937752 >нужно разделять где синглтон, где конструктор конструкторы в сигнлтонах приватные. в этом и смысл сигнлтона.
Насчет синглтонов вообще - как я уже писал ранее в споре про inMemodyDAL, лучше переделать на нормальное DI
и вообще Data.DataLayer.Singleton.GetInstance().DataLayer. смахивает что есть класс Singleton ака сервислокатор, а этот DataLayer уже не статический, что ура ура. но все же это очень пахнущий код
переформатируй свой мозг на DI и жить станет легче
>>1937818 Если ты о том моем посте где я спрашивал как не делать 100 методов под каждый класс, то я переделал, там используются классы с обджектом, об этом не беспокойся и если это ты тот анон, который советовал не юзать статики и вместо этого заюзать дженерик тогда спасибо, так реально удобнее, хотя наверняка медленнее, я еще буду этот тестить под нагрузкой, посмотрю стоит ли кобыла ставки
>>1937566 > Вот так по твоему заебись да? Да. Потому что сразу все видно. Плюс, линку позволяет делать вещи как на прикриплейд и я хочу видеть такую вот хуйню.
Бля, пасаны, да он тралит. Такого в жизни быть не должно. Походу абуботы и сюда добрались - посты накручивают.
Следущим скрином он включит отображение скрытых символов и вы тута 100 постов будете сраться "табы против пробелов". Или перданет, что ЕФ медленный скрины можно уже существующие использовать Или ебанет скрин, с хардкорной рефлексией и будет дальше рассказывать, что статик классы и выбрасывание нуллреференса это префоманс который мы заслужили
Тралебот, скажи плиз, сколько тебе лет и стаж работы?
>>1937832 >я еще буду этот тестить под нагрузкой, посмотрю стоит ли кобыла ставки Опа. Сейчас он принесет скрин, где на дебаге через ДейтТаймы будут миллисекунды считаться, на фоне открыт майнер и посыл: "я потерял в перфомансе, статики - рулят" Нагрузка - это раз с холодного старта с консоли дернуть.
>>1938175 Стаж у меня нормальный, не переживай, а вот на шарпе я действительно не долго, и я честно сказать хуею от тех "порядков" которые у тут заведены, ладно со студентами все понятно. Они учатся и им нужно понять хотя бы как ооп работает, какие есть архитектуры, паттерны и тп, но использовать все на кучу и подключать овер 1000 библиотек в проекте не думая о том нужно ли это вообще и только принесет вред, зачем? Зачем вы вообще программируете тогда? Что бы было? Или все таки что бы это работало и работало быстро?
Вопрос от очередного ньюфага. Насколько вообще сложно вкатиться в разработку VR/AR через C# (Unity уже изучаю)? И на что конкретно нужно делать упор в изучении здесь? Собираюсь через год-полтора начать искать места, откуда не гонят ссаными тряпками новичков без опыта. Может, бесплатный оперсорс-проект и т.д. Но на основе чего вообще составлять дорожную карту обучения шарпу? К примеру, за два месяца нужна сделать такой вот простенький пет-проект, через полгода - другой проект. На что делать особый упор в изучении, если интересует не весь бесконечный интерпрайз, а исключительно AR/VR? Конечно, можете постебаться - но дайте мудрых советов, аноны.
>>1938348 Юнити Слишком медленный для вр, для вр очень важна производительность и время ответа, для пользователя это критично, любая задержка глюк баг и погружение исчезает, а пользователя начинает тошнить, поэтому тут лучше самописный движок а не юнити, да и с# в принципе производительностью не отличается
Что от меня хочет visual studio? Ни слова не понял. "Binding" нельзя задать в свойстве "AddPreviewMouseWheelHandler" типа "EventTrigger". "Binding" можно задать только в параметре DependencyProperty объекта DependencyObject. При этом никак не подсвечивает строчку с ошибкой, но я думаю, что это здесь: <i:Interaction.Triggers> <i:EventTrigger Mouse.PreviewMouseWheel="{Binding line_MouseWheel,Mode=OneWay}"> </i:EventTrigger> </i:Interaction.Triggers>
А вот классы я могу хранить как хочу. Каждому классу по файлу, несколько классов в файле, несколько файлов для одного класса. Как-нибудь на размер готового приложения влияет выбранный мной способ хранения?
Сап, программисты. Как сделать, что бы телеграм бот работал без запущенной отдельно своей программы? То есть если открыть только телегу и отправить ему какую-либо команду, работать он не будет. Нужно компилировать код и только после запуска проги бот будет отвечать на команды. Писал интерфейс бота на wforms, думаю, это может как-то помешать, поэтому реквестую помощь
>>1938765 > Как сделать, что бы телеграм бот работал без запущенной отдельно своей программы?
Никак. Ты хоть сам понимаешь всю глупость вопроса? Как он у тебя работать будет, если не запущен, блять? Максимум его можно перенести на удаленный сервер, но на сервере его тоже придётся запускать, представь себе.
>>1938810 Арендуешь сервер, можно у амазона воспользоваться акцией вида "бесплатно первый год". Там будет установлен какой-нибудь линукс дистрибутив, например Убунта. Подключаешься к серверу через ssh, при помощи команд копируешь на него своего бота, который предварительно скомпилировал для соответствующей ОС, запускаешь его на сервере. Всё.
Ньюфаг. Помогите, пожалуйста. Хочу сделать подобие транзисторной логики. Есть t1.C, ссылку на значение которого должна брать t2.A Как передавать ссылки на переменные между объектами класса, чтобы не приходилось каждый раз апдейтить изменения, получая значения напрямую?
Бля анонче, почему парсит не то что мне надо? Пытаюсь парсить гугл, нужно взять ссылки со страницы. anglesharp xpath //div[@class='g']/div/div/a/@href Вроде же должно спарсить то что в href а мне парсит не то. Наверняка я не так запрос составил. Но что не так то? Стаковеерфлоу сказал что все правильно написал хуй знает я корочи. Пример того что парсится в пике.
Такой вопрос: нахуя мне классы если я могу юзать структуры с тем же функционалом, только еще и меньше кода при этом писать (не объявлять конструкторы, не ебаться с nullreferenceexception)
Хочу перекатиться из 1С в с#(можете обоссать, да). Вопроса только два: 1. Стоит ли задрачиваться с вещами типа алгоритмов и структур данных? В 1С с я подобным вообще никогда не заморачивался, как и с матаном в общем. В типичной работе шарписта оно важно? 2. Хочу в качестве пет-проджекта написать приложуху для автоматизации склада, ну такую небольшую ерп, заодно походу учить язык, платформу, формочки там, возможно какие-то веб-сервисы подключать буду. Норм идея, не?
>>1939282 >я могу юзать структуры с тем же функционалом Не можешь. Читай отличия классов от структур. >не объявлять конструкторы Как DI реализовать будешь?
>>1939603 Ну как, в шарпе структура это тот же класс, только со специфическим поведением. И, как-бы различие, в основном - семантическое(классы должны в себе состояние иметь и инкапсулировать сложную логику, структуры - какие-то данные, являющиеся значением). Как и с теми же рекордами сейчас. При желании - поведение структуры ничем не будет отличаться от поведения класса. > Как DI реализовать будешь? ДиАй бывает разных типов, в том числе и через свойства/поля. Да, не так удобно, да не лучший стиль, но ты именно про DI сказал.
Тупой вопрос. Вот смотрите. Было у меня приложение, что должно было быть микросервисом, авторизация и аутентификация должна была производиться отдельным сервисом. Но вот порешали люди из продажников, что дюже заебатый сервис выходит и пусть он будет еще и отдельным приложением, но чтобы при этом мог быть составной частью более комплексного решения. Так вот, как реализовать-то авторизацию-аутентификацию для моего теперь отдельного приложения, чтобы при этом не потерялась возможность этой самой авторизацией-аутентификации, будучи включенным в состав програмного комплекса? Просто ведь поменяется база данных, добавится сущность юзера. Раньше-то как было: была табличка юзера, но никакой логики авторизации-аутентификации не было, просто при добавлении нового в сервисе за это отвечающем, я получал сообщение, добавлял его к себе. заводил в зависимости от этого привелегии и потом можно было пользоваться. Теперь же нужно добавить будет логины, роли это вот все. Не хочется просто разделять на две ветки приложение, одно как самостоятельное, другое как микросервис.
>>1939713 У тебя структура каждый раз будет копироваться в стэк, при этом в случае класса копируется только ссылка. Если у тебя поля структуры занимают больше чем 32/64 бит (в зависимости от разрядности ОС), то выгоднее и быстрее копировать ссылку, чем каждый раз копировать все поля.
>>1939890 > У тебя структура каждый раз будет копироваться в стэк, при этом в случае класса копируется только ссылка С хуя ли? Да банально. Что если у тебя стуруктура размером в здоровая? Допустим ты по классике запилил структуру для описания своего файла, ну вот такой ты бака, че поделать, и при создании оч большого файла - размер структуры - пара гигов. По твоему она на стек ляжет? Да даже если без эзотерики, давай просто подумаем, где лежит структура, которая является полем класса. Ну и банально, тебе только религия может запретить передавать стуруктуры в методы по ссылке. Вся суть в семантике. Структура задумана семантически, как некое значение, по идее все его состояние - не должно изменяться. С этим и связано дефолтное поведение структуры.
Еще одна ограниченность структур - невозможность хранить ссылки на экземпляры этой же структуры. Т. е. ты не сможешь реализовать бинарное дерево используя структуры.
>>1940114 Вот ты охуеешь, когда почитаешь исходники .net. Но не суть. А суть вот в чем. Ты говоришь что нельзя - тебе показывают что можно. Ты начинаешь доебывать что unsafe. Будто, блядь unsfe это что-то пиздец какой хак, нахуй. Я же не что-то, типа __refvalue использовал, а обычный, мать его в сраку, unsafe, которого в любом проекте полно, когда дело доходит до оптимизации или работы с какими-нибудь сишными либами. Может быть ты бы и до ref доебался, если бы я показал что можно не копировать значение, передавая в функцию структуру? В конечном счете. Структура отличается от класса, в основном, семантически. Как и рекорд. Ты так же можешь изменить значение рекорда, если так уже чешется и ничего тебе не будет, шарп не вылезет из компьютера и не отпиздит тебя за это, просто ты ломаешь семантику, заложенную создателями языка, не более.
>>1940139 Ты из безопасного C# сделал небезопасный С++ (даже по синтаксису это чистый С++) и пытаешься говорить, что это нормально и вроде как все разработчики так делают. >Структура отличается от класса, в основном, семантически Хорошо, пребывай в своём манямирке, я останусь на стороне здравомыслящих и реальности.
Анонче поясни за данный код, я вроде понимаю но не понимаю. Напишу как я понимаю но наверняка что то путаю
//Публичное событие типа PropertyChangedEventHandler( что за тип и что он делает хуй знает) public event PropertyChangedEventHandler PropertyChanged;
//Защищённый виртуальный метод который ничего не возвращает, принимает строку, может быть вызван без входных данные тогда строка будет нулл. protected virtual void OnPropertyChanged([CallerMemberName] string PropertyName = null)
{ // Тут хуй знает магия какаета PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(PropertyName));
} //Защищённый виртуальный метод использующий обобщённый тип, принимает первым параметрам принимает ссылку на обьект Т(может быть любым типом хоть стрингой хоть хуй знает чем) и вторым значение тоже обобщённое, далее магия, но как мне кажется третий параметр стринга если ее не передать будет по дефолту нулл protected virtual bool Set<T>(ref T field, T value, [CallerMemberName] string PropertyName = null) { //сравниваем, если первый параметр и второй равны например 2 стринги "str" Equals ск5ажет что строки равны и вернет тру иф сработает и из метода вернет фолс, если же обьекты не равны то первому параметру присвоит второй параметр, а так как первый параметр принимался по ссылки он сменит значения не только в этом методе но и в других частях кода. Далее мы вызываем(?) событие с параметром PropertyName, и опять магия, что если он нулл? Нахуй его вызывать? И возвращаем тру. if (Equals(field, value)) return false; field = value; OnPropertyChanged(PropertyName); return true; }
Вот вроде по отдельности понятно а все сразу нихуя не понятно. И события вроде понятно, а вроде не понятны, и дженерики вроде понятны но пугают как только вижу Т, но еще месяц назад при виде <T> начиналась истерика нахой, чо за Т? Нахуй Т? Почему не Ш? Или Ы? Сейчас вроде полегче
>>1940358 У тебя есть ивентхендлер PropertyChanged. Из названия должно быть очевидно, че это за хендлер, но если интересно - почитай MSDN. Если ты вообще смысл ивентхендлеров понимаешь - то этого достаточно. Далее, у тебя есть обертка над PropertyChanged, называется OnPropertyChanged. Имеет опциональный параметр. PropertyChanged? - это то же самое, что if (PropertyChanged != null). По итогу - если у тебя PropertyChanged не null, то метод триггерит PropertyChanged (за это отвечает Invoke - про него тоже почитай). Далее у тебя есть метод Set<T>, который ты понял правильно. Но в строке OnPropertyChanged(PropertyName) у тебя уже подразумевается null-check и события, и аргумента (это все сделано в методе OnPropertyChanged). Сам метод вызывается потому, что, по идее, у тебя метод Set<T> меняет Property, поэтому ты хочешь поднять ивент PropertyChanged.
Короче говоря: 1. Ты вызываешь метод Set<T>, который меняет значение свойства ref T field. Так как он меняет значение свойства - он должен поднять PropertyChanged, что он делает через обертку OnPropertyChanged. 2. Обертка OnPropertyChanged проверяет всю хуйню, чтобы ты не поднял пустой ивент или не закинул тупые аргументы (в данном случае аргументы принимаются любые). Если все норм и ты не пытаешься сделать хуйню - OnPropertyChanged триггерит PropertyChanged. 3. Триггерится PropertyChanged и вызывает привязанные к себе методы. Ну или не триггерится, если привязанных к себе методов нет. 4. ??? 5. ПРОФИТ!
Пробую сделать сайт на ASP Net Core с Identity и авторизацией по ролям. Вроде все работает, кроме одного: если я удаляю пользователя из роли, то пока этот хер не перелогинится у него остаются права будто он в роли. Можно как-то сделать его куки недействительными или заставить Identity лезть в базу и проверять роли каждый раз?
А есть какие-то книги по алгоритмам и структурам данных для тупеньких? Ну типа, для человека который из алгоритмов знает разве что сортировку пузырьком, а структуры данных заканчиваются на обычных массивах, классах и объектах.
>>1940446 Ну вроде понятно. Вот у меня так в MainWindow.xaml строка Text="{Binding Title,UpdateSourceTrigger=PropertyChanged}" я так понимаю значение Техт элемента ТекстБокс привязанно к полю Title а вот UpdateSourceTrigger=PropertyChanged это ? ОбновитьИсточникТригера PropertyChanged но это же просто событие без ничего. На сколько я понял событию нужно просвоить метот без метода там просто null public event PropertyChangedEventHandler PropertyChanged; Что бы событие сработало его же нужно вызвать? Как тогда оно меняем мне тайтл когда я пишу что то в текст бокс? И Как оно может менять если код отработал и ждет действий? А действий нихуя нет то. Или при каждом вводе символа вызывается UpdateSourceTrigger=PropertyChanged, но тогда что дальше говорю же нет кода нихуя. 10 строк кода а происходит магия.
>>1940567 Я, если честно, с WPF не работал. Как подсказывает опыт, интуиция и гугл - суть этой хуйни в том, что: 1. Ты вызываешь ивент PropertyChanged через обертку OnPropertyChanged в методах, где твой проперти действительно меняется. 2. У тебя в XAML UpdateSourceTrigger забинжен на этот ивент, что с помощью скрытой от пользователя черной магии фреймворка по сути означает, что у тебя при вызове ивента поднимается какой-то фреймворковый метод. 3. Этот метод выполняет еще больше черной магии, что выливается в то, что твой Title меняется на новое значение в проперти, которое подняло ивент PropertyChanged. Короче говоря - когда у тебя Set<T> возвращает true, то Title присваивается новое значение field. Только делается это с помощью черной магии и окольных путей ради архитектурных профитов и облегчения использования (но не обязательно понимания) фреймворка. Если я в чем-то неправ - ты сам поймешь, ну или аноны исправят. Вообще, если у тебя есть книга или плейлист, по которому ты учишься - я советую не пытаться разобраться в кишках этой черной магии сразу, а сперва просто попривыкнуть к тому, как фреймворк используется и как он реализует разные фичи. Если начинать сразу с деталей имплементации, а не с функции, которую она выполняет, то можно изрядно так охуеть и надолго зависнуть в изучении фреймворка.
Класс, реализующий INPC при изменении значения свойств (или когда хочет уведомить про изменения, которые обновились) должен вызывать событие PropertyChanged с именем(ами) свойств, которые нужно бы перечитать. UpdateSourceTrigger=PropertyChanged просто определяет когда именно производить обновление контрола, чтобы на каждый символ его не дергать.
>>1940562 Угу, статья на википедии. Суть, ты все эти алгоритмы и структуры на практике узнаешь, если будешь кодить достаточно и решать проблемы в которых они нужны. Если ты не работаешь - иди на кодфорс/кодворс/литкод и решай задачки там.
А вообще, все эти алгоритмы не то чтобы прям какой-то реальный плюс или как-то в реальной работе тебе помогут, а оптимальные в плане скорости решения не всегда нужны.
>>1940576 Да нет там магии. Суть всего этого дела на прикриплейде. Только вместо вывода в консоль - привязываем к какому-то элементу вьюшки и при изменении - перерисовываем.
Вкатился в айти 2 года назад. Всё это время работал в одной компании, писал бэкенд на шарпе под фреймворк Террасофт, там же немного фронта на JS, MSSQL. Сейчас подаключился во внутренний проект компании на Java, но этот проект по своей сути - тонкий, упрощённый клиент с небольшим количеством бека (не на гибернейте). Не думаю, что это даст мне много опыта. Из того, что нравилось больше всего в работе: работал с реализацией бизнес-логики в рамках бизнес-процессов. Писал пет-проекты на .Net framework, Unity3d, сейчас изучаю .Net Core.
Вопрос вот в чём: как лучше всего развиваться? Не уверен, что мне нужно второе высшее образование по информатике - я слышал много негатива об отечественном айти-образовании. Я сам преподавал по своей первой специальности и понимаю, что высшее образование - это неповоротливая, бюрократизированная система, которая может дать тонну бесполезной информации в довесок к небольшому количеству полезной. Но вдруг, чем чёрт не шутит, я захочу в АИ?
Писать пет-проекты, доводить их до ума? Участвовать в опен-сорсных проектах? Короче, как прокачаться?
>>1941089 Мне перезванивали. Другое дело что через полгода, когда, блядь, я уже другое место нашел. Пиздец вот с таких вот горит. Они серьезно думают, что безработный хуй будет их звонка полгода ждать?
>>1941101 Так если им я подхожу - хули полгода было ждать? Выглядело будто: чет ты хуй. Ой. смотрите, он почти полгода у других проработал и его не гонят, наверное не хуй, давайте его к нам позовем. При этом те же условия предлагают, как и на текущем месет. Вот и нахуя мне-то менять в таком случае работу было? Короче, шляпа какая-то.
Вот сижу сейчас читаю Шилда "C# Полное руководство" и прохожу курс на Ulearn. Ну то есть учу синтаксис в целом на Шарпе. Стал замечать, что мне просто не хватает практики на каждую тему, которая мне позволит закрепить материал. Может есть у кого-то ресурсы с задачами чтобы обработать конкретно синтаксис?
Короче, хочу красивенько в консольке показывать статус загрузки файлика. На данный момент я эмулирую загрузку просто рандомным временем ожидания. В общем, разбил это дело на 3 куска: Собственно сама задача, презентер - то что должна получать вьюшка и вьюшка. Так вот. Что меня смущает: 1. То что приходится добавить статичный объект для лока, без него курсор при изменении одновременно статуса нескольких задач - скачет. Мне это не нравится. 2. То что когда последняя задача завершается - курсор остается там где была эта задача, я понимаю, что я бы мог вручную его переставлять на какую-то дефолтную позицию, но это как-то странно. В общем, в какую сущность лучше всего вынести работу с этим вот курсором и как избавиться от лока? Ну, допустим от лока я избавлюсь тем, что буду эти обновления кидать в очердь, там "Рисователь" будет ждать пока в очереди что-то появится и рисовать. Так от лока мы избавились. А где правильно было бы в таком случае хранить положение курсора? Или может быть как-то иначе это все нужно делать? Поясните короче.
>JS Скрипт это хорошо. FullStack сейчас очень много зарабатывают. Подучи еще какой-нить хайповый js фреймворк.
>Не уверен, что мне нужно второе высшее образование по информатике И не надо, формальная корка закрывает 99% всех проблем.
>Писать пет-проекты, доводить их до ума? Участвовать в опен-сорсных проектах? DO IT. Делай что больше нравится.
>>1939525 Привет братишка. 4 года был 1с разрабом 1) Да, и ты описал лишь 5% того говна что надо знать. И это важно. >с матаном в общем Базовые вещи конечно надо, что-то на уровне 11классника. Например, могут попросить посчитать ресурснозатратность какого-нибудь алгоритма. 2) Такие проекты лучше презентовать как FullStack, т.е в связке с JS
>формочки там винформы не учи, вообще, это тупик.
Как перекат из 1с могу предложить следующее. Начни учить ASP core, создай простенький Web-сервис, а 1с используй как фронт. Побольше используй ООП. Переучись на сырые sql запросы это будет твоим преимуществом.
>>1941828 Я только синтаксис C# учить начал. Если всё так как пишет Троелсен (.NET Framework и у .NET Core одна основа), то не лучше ли пока не запариваться над этим? Классы и методы в библиотеке почти одни и те же?
>>1941853 Да я так предложил ведь сам посуди, ти только начала учить, а уже какие-то расхождения появились, синтаксис то один будет конечно это верно, но сам подумай, раз синтаксис один тогда какая разнице фреймворк или коре? Почему тогда сразу на коре не работать раз все такое одинаковое?
>>1941828 >учить сразу кор На мне так ночальник эксперимент ставил. Поддерживаем легаси, я и еще двое подпивасов на .net framework, четвертый вообще на делфи Подходит и говорит, вот тебе задача хуйня срок три дня - и попробуй на .net core написать, нам модернизироваться надо
Не понимаю я. Почему вы постоянно говорите про: Учи кору, .net framework - легаси. Будто, блин, для ньюфага там какая-то разница особая будет. Вот когда я учился в 2011, никакой коры не было. Ну и? Когда появилась первая кора - у нас ее со скепсисом восприняли, дескать хз как там дальше пойдет, со второй стало понятно, что это видимо серьезно. И сколько времени ушло чтобы освоить ее для того кто с полным фреймворком работал? Господи, да сразу взяли и начали работать. Я вообще не думаю, что ньюфаг какую-то разницу особую заметит, ему что кора, что старый фреймворк что .net5 - однохуйственно - непонятная залупа, что какую-то магию делает. Но на старом фреймворке, нюфаг хотя бы без бубнов может быстренько что-нибудь оконное нафигачить на формах или впфах, ощутить что он-то теперь не какой-то там хуй, а вот - делает оконные приложения, ньюфаги почему-то не уважают консольку, и вообще все, где кнопочки тыкать нельзя. Вот сравните сколько ебалы нужно проделать в коре и .net5 чтобы сделать что-то с окошком: изучаем как работает DI, потому что теперь все через DI, понимаем что формы и WPF все еще через жопу, а авалония - говно, оч грустим, таки рвем жопу и хреначим весь визуал кодом через то что есть, будто какие-то пещерные люди, в процессе расстраиваемся, потому что и туторов нихуя и непонятно и вообще какое-то говно выходит, демотивируемся, дропаем шарпы и идем в пятерочку кассиром работать; в противовес фреймворк: открыл, в редакторе накидал кнопочек, лейблов, в кодбихайнде чет там с логикой написал, вроде работает, бегаешь со стоячим хуем, всем показываешь, какой ты молодец, радуешься, мотивирован чет дальше изучать, ведь ты-то вон какой, с кнопочками сделал, наживаешь и чет происходит, хорошо, а уже когда набираешься опыта - понимаешь, что сейчас все в вебах, твои кнопочки никому не нужны, но тебе-то ужо и не важно, ты щарпы освоил, скорее всего какой-нибудь клиент для стороннего апи делал и представляешь как примерно HTTP работает, может быть сам пробовал сайтец замутить на MVC и изучение коры будет как: "А как тут это делается? Ага, поняв".
Мне как вкатывальщиу пиздецки как сложно во всей этой хуйне разобраться. net core, net framework, net core, EF3, EF5, EF6, ASPnet, ASPnet core, mvc хуиси отсоси. Я по началу думал ну ясно понятно хули разные версии. И думал мол выходит новая версия и все на ней всё делают, но хуй там плавал. И вот вопрос почему? Обратная совместимость же есть, а изменения не такие уж прям пиздецки большие что бы команда не смогла изучить все нововведения. И вот меня очень радует то что сейчас есть net5 и вся остальная залупа прекращает поддерживаться.
>>1942726 > Мне как вкатывальщиу пиздецки как сложно во всей этой хуйне разобраться. А вкатывальщику и не нужно. Тебе нужно язык освоить и на любой из залуп что-то сложнее ту-ду листа сделать, и понять базовые принципы построения архитектуры. В реальной разработке не будет такого: Ой, новая технология, мы на нее сразу перешли; ой мы не будем это делать потому что нет спецов что знают хорошо фреймворк. Я вот, блядь, сярпоняша, когда пришел на дужна: да-а-а-а, смотри, у нас есть на джаве хреновина, вон багтреккер - пофиксь баги, разраб ее уволился, а мы сярпобояре сейчас заняты в другом проекте. Блядь, джава, сука. И пофиксил и ничего. А потом мне сказали: ну, вот ты пофиксил, молодец, теперь еще и знаешь как оно работает - перепиши на шарпах. И, сука, переписал, за неделю, 40к строк кода, и ничего. А потом мне говорят: чет ты какой-то слишком толковый, будешь мидлом считаться, зп поднимаем, и давай-ка ты на плюсах покодишь, а то чел что на плюсах кодит и так 4 проекта ведет одновременно, слишком сложно ему. И писал на плюсах. Благо сейчас таки более-менее проекты на шарпах только. Суть. Нужно понимание и умение разобраться с тем с чем ты не работал. Эт ты думаешь, что: "Ты ж программист" это мем такой, который только бабки всерьез используют, на деле про "Ты ж программист" тебе на работе будут толкать даже чаще, а крайним всегда будешь ты: ты не догадался, что вот тут, даже если не по проптоколу - нужно не кидать ошибку, а просто игнорировать, а вот там - таки кидать; ты не догадался, что пользователь - дегенерат, что не читает мануал; в ТЗ было требование такой нагрузки, в проде она в 100 раз больше оказалась и у тебя обработка запроса стала дольше 1 секунды - ты виноват и рукожоп, блядь, а не маркетологи, которые рассчитали хуево, не техдир, который исходя из ТЗ решил что не нужно усложнять систему, не тестировщики, которые не стали проводить нагрузочного тестирования нормально, нет - ты виноват в этом, что своим программистким чутьем не понял что так и будет - а потом - пиздуй чинить. Вот потому - не конкретные технологии важны, а база, умение думать наперед и закладывать даже в консольной утилитке по переводу температуры из цельсия в кельвины - возможность превратить ее в систему распознавания лиц, ибо придут, блядь, скажут - как охуенно оно в кельвины переводит-то, давай, чутка допилим...
>>1942737 >Тебе нужно язык освоить и на любой из залуп что-то сложнее ту-ду листа сделать, и понять базовые принципы построения архитектуры. В этом то и проблема, я не могу нормально изучать одну тему. Синтаксис вроде уже изучил нормально. Перед сном читаю рандомные статьи на метаните и уже не возникает проблем что бы что то забыл или не понимал. А вот что то сделать не могу. Начинал асп нет еще учить, как то сложно пиздецки, сделал перерыв и сейчас впф изучаю, тож не очень то и легко. Идеи есть а вот знаний для реализации пока нет(
Пацаны, в каком порядке обмазыватся этим вашем шарпом? Нужно для себя, но хочется и уметь делать всякие штуки что бы перекатится полностью. Сейчас могу в функциональщину и написать всякие простенькие вещи. Думаю заняться to-do листом. Из знаний то знаю синтаксис и немного работу с базами данных. В какую сторону развиваться? И желательно что бы с практикой, мне сложно поглощать знания не видя как они работают(я про конкретно вас вместе)
Сап шарп: 1) Есть одно шифрование. Как мне лучше всего хранить в приложении (exe) стрингу private key/secret и прочее? Обфускаторы сейчас умеют ее в жопу прятать чтобы ее нельзя было получить или это чисто технически невозможно? WPF если что. 2) Есть ли на wpf либа чтобы было увеличение image'a при наведении мыши, как на всяких интернет магазинах когда есть товар и при наведении на его изображение возле курсора есть такой квадратик с увеличенной зоной изображения. Спасибо.
Есть пример кода на java. Нужно написать этот же код на C#. Код шифрует с помощью RSA/ECB/OAEPWITHSHA-512ANDMGF1PADDING алгоритма. Ключи распространяются в PKCS8, если не ошибаюсь, формате. Тривиальная и обычная для java штука, пример, который у меня есть - несколько строк кода без всяких сторонних либ (используются стандартные классы вроде KeyFactory и Cipher). Но как принято то же делать на шарпе? Гугление выдаёт какую то платную либу (Chilkat), странные велосипеды с парсингом ключей в RSAParameters (прям вытаскиваются байтами все эти модулусы и экспоненты и прочая страшная крипто-математика) или вообще сообщения типа "я искал-искал как сделать, но не нашёл и поменял алгоритм/ключ/либу на более удобные". Ищу кого-нибудь с опытом разработки на шарпе с ассиметричным шифрованием, что б он мне просто указал в какую сторону гуглить. Мне достаточно "все используют либнейм" / "все велосипедят ключи с нуля каждый раз, либ нет" / "все используют стандартные шарповские Rsa/RsaCng/RsaCryptoServiceProvider".
>>1942762 Напиши что-то в консольке со всякими паттернами и новыми фичами языка. Потом наверни entity framework и linq, заодно вникни в Expression. Добавь ASP.NET (MVC, если ангуляров не знаешь, WebAPI - если знаешь) и ты молодец.
Покидайте интересных задачек, плес. Я программированием чисто для себя увлекаюсь, до конца недели на больничном буду сидеть. Охото поковырять чего нибудь, попрактиковаться. Только не что нибудь очевидное, когда еще код не начал писать, а уже все понятно что и как сделать, типо, напиши свою борду, а там из шарпа это несколько методов в контроллере, остальное все бд и вьюха
>>1943531 А ты точно программист? Напиши сервис сбора статистики с ТГ каналов. Я хотел что то подобное сделать но чет я пока даже хз с чего начать.Вернее начать я знаю с чего но знаний не хватает пока Суть приложухи. НетКоре 3.1 ор нет 5 Приложение использует TDLib. Вписываем канал но который подписываем наше приложение, приложение начинает следить за постами которые будут появляться, старые опустим. Появляется пост, его заносим в БД и ставим на проверку. Например проверять каждый час в течении недели и записывать данные, количество просмотров, или изменение текста поста. Периодичность проверок и время проверок можно настроить. Давай только сразу гитхаб выкладывай, я буду смотреть че как делать.
Привет, зайчики. На заводике в моей мухосрани открыта вакансия постоянно - Разработчик (MS SQL, C#). Платят от 60к точно. Для меня это сногсшибательно, т.к. в дс ездить 2 часа и я не планирую тратить столько времени и сил, поэтому решил работать тут. Так вот, сколько по времени надо будет +- изучить .net/c# и бд для того, чтобы вкатиться на заводик. Заводик хороший, много знакомых там работает. Пикрил - требования для работника. Самому мне 24.5 года, знаю базу всех языков (ооп когда-то что-то крутил на плюсах и джаве, но сейчас не помню от слова совсем, паттерны только в теории читал, считай не знаю). Хорошо знаю вёрстку и sql на 3/10. Я сам по себе не тупой, поэтому проблем с освоением не будет. Нужно мнение ваше, сколько времени займёт изучение того, что требуется на пикриле? (кроме плюсов)
>>1943687 Судя по моему заводу - берут туды всех, даже знания не нужны. Другое дело, что на заводе на самом деле нет нормального разграничения: бек, фронт, блядь, язык. Скажут - придется тебе ангулар за неделю осваивать, потом - сишечку чтобы драйвера писать, ведь тот кто писал драйвера - ушел в запой; потом скажут: короче, мы слышали что докер это крута, давайте докер в наш унитаз умный впихнем, охуенно же и ты будешь форкать докер и пытаться засунуть его в унитаз.
Посоны, как вы учили Linq? Сам С# учу уже месяц как, зашел на codewars свои знания проверить и охуел, я пишу процедурами на 10-15 строк, а остальные за 2-3 строки, используя Linq.
Пытаюсь вкатиться в это ваше погромирование. Товарищ посоветовал шарп, причем вдруг с нихуя прислал мне видеоурок и литературу. Посоветуйте какую-нибудь простую, но нетривиальную задачу прям вот полному ньюфагу, чтоб нескучно заниматься было. Ну и не тупо по урокам повторять, а самому что-то реализовывать. Ну и заодно, такой вопрос, комфортно ли кодить на шарпе в линуксе? Пока сижу на дриснятке, но поставил из любопытства Мяту второй системой, и прям радует. Дрисня заебала, постоянно тарахтит жёстким диском.
>>1944622 1. Если ты только вкатываешься в кодинг, то тебе надо научиться выполнять самые простые задачки, что-то такое точно есть в твоих видосиках и книгах. 2. Шарп это в первую очередь кодинг под венду, так что сам подумай.
>>1944622 Зайди на codewars, я там задачки решаю, но если ты совсем ньюфаг, то лучше месяц подучи, а потом уже задачи решай. Сам месяц назад начал изучение C# по видеоурокам SimpleCode на ютубе, мужик внятно все объясняет и видео уроки короткие (10-20 минут), что радует.
>>1944635 Да, его и смотрю. Понятно объясняет. Последую твоему совету. >>1944630 Видел, что можно на лине им пользоваться. Значит, возможность есть. Логично же. Вопрос, комфортно ли. Ну или посоветуй, в чем кодить на Линуксе и под Линукс. Чтоб и востребованное было, и ньюфага не пугало. >>1944659 Вот-вот. Пока все нравится, интересно. Когда-то давно щупал Basic в технаре, писал скрипты для модов на Моррошинд, а в целом опыта в программировании нет совсем. Но чёт на 36-м году жизни захотелось чего-то нового. Может и серьёзно вкатиться. Не резать же памятники до конца своих дней.
>>1944673 >Ну или посоветуй, в чем кодить на Линуксе и под Линукс. Чтоб и востребованное было, и ньюфага не пугало. Джава. С высоты твоего положение, это тот же шарп. >>1944659 Может, но не нужно.
>>1944673 >Не резать же памятники до конца своих дней. Айти может заебать точно так же. Говорю как человек пару лет как вкатившийся. Такое же говно, как и везде, ну платят хорошо, да.
>>1944607 Шо там учить-то? Линку - декларативный же. Тебе и нужно-то только понимают, что значит каждое из слов, представлять как делается флюент интерфейс, ну и знать про лямбды и что в функцию можно передать в качестве аргумента в другую функцию. Да блин, попробуй сам написать во флюент-стиле класс для фильтрации чего-нибудь без линку и iqueryable. Если не знаешь как - посмотри как делаются всякие спецификации, которые можно друг с другом объединять.
>>1944677 Дабл, ты дело говоришь. Но я не о том немного. Резать памятники охуенно, и меня не заебало. Но это очень пыльная и вредная работа. Их приходится носить, а они тяжёлые, а спина не вечная. Так что просто готовлю задел на будущее. Могу, конечно, перекатиться на написание портретов на том же граните. А с другой стороны, новые навыки - новые нейронные связи. В любом случае хорошо. >>1944676 Джаву можно тоже потыкать, да. Попробую. Но уже начал шарп учить, всё нравится. Ладно, буду пробовать, хули мозги ебать.
>>1944756 >сам написать во флюент-стиле класс для фильтрации чего-нибудь без линку и iqueryable. Если не знаешь как - посмотри как делаются всякие спецификации, которые можно друг с другом объединять. Через екстеншены?
>>1944614 Нахуя вообще субд знать для линкью? Линкью это просто функции над коллекциями, и субд это только одна из немногих вещей, для котоорых можно юзать linq. Если ты не дебил или хоть немного знаешь фп, то с линкью не должно быть никаких проблем.
Чё-то я заметил, что для шарпа почти нет нормальной литературы, есть справочники на тысячи страниц, но именно обучающей литературы с упражнениями нету, чего нельзя сказать про ту же Джаву. Что за проклятие такое?
Челы, а я вот украл курсы скилбокса по шарпу, сижу делаю их модули и все такое. И там одно из первых заданий звучит примерно как "сделайте в консольке записную книжку, в которой можно создавать, смотреть, импортировать и удалять записи". И я вот не могу понять как удаление реализовать. Все что я придумал это записывать текущий файл в массив, удалять оттуда запись, удалять старый файл, создавать новый, записывать в него массив. Но это же говно какое-то? Как это элегантно обставить?
>>1945721 Мне не до конца понятно, как именно у тебя хранятся данные. Если я правильно понял твою реализацию, то да, простейшим вариантом будет считать из файла, десериализовать, удалить лишнее, сериализовать и перезаписать файл. У тебя наверняка методы чтения и записи уже реализованы. Если тебя производительность беспокоит (а она не очень будет на больших файлах) - используй базу данных.
я тупой, но попытаюсь обьяснить. Короче как более грамотно будет? Поле-коллекция,или поле- класс, реализующий интерфейс коллекции? Фактически там одно и то же. Но все таки как правильно?
Правильнее будет сделать публичное свойство для получения экземпляра Worker { get; }, а внутри сделать приватную реализацию как удобнее Dictionary<int,Worker> например или лист или кастомное че
>>1945721 При запуске приложения у тебя с файла считывается инфа и запихивается в массив. Далее ты удаляешь нужный элемент массива, или другие действия. И потом записываешь обратно в файл. Насколько я помню, есть метод, который перезаписывает файл, т.е. чистит файл и записывает туда новые данные. И про этот метод было сказано в модуле, слушай внимательнее. Мимо такой же вкатыш по спизженным курсам скиллбокса
У меня вопрос! Смотрел в инете, но решения не все понравились.
Задача - получить доступ к некоторым элементам формы номер один из формы номер два.
Нашёл в инете интересное предложение создать список форм в отдельном классе, создал, изменить видимость или работоспособность не проблема, всё прекрасно. Но вот управлять элементами не получается. Я попробовал поменять параметр modifer с private на public, но видимость не поменялась.
Как обращаюсь к одной из форм - SomeList[0], где ноль это номер формы, ну а далее через точку.
Чего хотел бы - чтобы в этом списке появился нужный мне элемент, дабы его свойства поменять.
Что за хуйня, почему я не могу найти ни одного нормального способа преобразовать дату с# в дату JS
Какого хуя, они что такие разные блять? Почему нельзя просто сделать метод, мол, date.ToJson() и обратно, что за хуйню я вижу на стак оверфлов с их ебанутыми парсерами по типу пикрилов,
ЛЮДИ КАКАЯ НАХУЙ КОЛОНИЗАЦИЯ МАРСА, у вас блядском фронте и беке одной страницы несовместимые форматы дат, ЛЮДИ ВЫ ОБОСРАЛИСЬ! ПРОСНИТЕСЬ! ебать и они еще с тупых пиндосов ржут из-за их имперской системы мер не замечая при этом все вы живете в полном говне хаотических стандартов. Я все сказал! Бесите! Кцс тьфу!
>>1946445 марсоход не видит разницу между не-десятичной системой мер и просто разным форматированием одного значения? небось у тебя 21-00 и 9 после полудня разное время
>>1946529 О, дебич проснулся который не знает что в джс дата начинается с 1970 и измеряется в милисекундах а в с# дата начинается с нулевого года и изменяется в тиках, с пробуждением гений ты мамин
>>1946543 В том что ты не можешь сделать простой serialize из одной даты в другую гений потому что одна жата это милисекунды а другая тики, в жс в принципе нет такой херни как тики что бы можно было нормально преобразовать и приходиться извращаться как дебичи с пикрилов выше вместо нормального квантовго преобразования как у жидомасонов
>>1946557 причем тут миллисекунды? причем тут тики? что ты несешь? ты жалуешься на разный формат даты для таких как ты придумали ISO 8601 как стандарт или согласшение unix time (timestamp) от 1970 года
используй один формат на обоих сторонах и проблем не будет.
у тебя на пике 1 вообще хуета какая то парсишь строку вида Date(числа) ты бы еще вместо такого формата лучше бы фото солнечных часов сериализовал и на шарпе распонавал через нейросети
сам себе находишь проблем на ровном месте пока люди на марс летят
>>1946566 Ты имеешь виду просто форматировать строку в подходящий для исо формат? Как здесь? и скормить дату как стринг в виде "yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz" а потом в таком же формате прочитать типу date("yyyy-MM-ddTHH\\:mm\\:ss.fffffffzzz");
>>1946726 данные это одно, а их форматированный вывод это другое данные всегда везде одинаковы, а формат зависит от региональных настроек Если дата ходит между сервером и клиентом, то она обязана быть стандартизированным значением. Это вообще универсальный совет - храни дату в стандартизированном виде (и желательно UTC), а форматируй уже при выводе пользователю.
тогда избежишь проблем парсинга - стандарт ведь.
конечно жс херово работает с датами из коробки. просто люто херово. Но даже там есть тонна либ, которые делают работу вменяемой
В контроллере имеется метод Create, с помощью которого мы добавляем данные в БД. Есть авторизованный пользователь(реализовано с помощью AspNetCore.Identity) с определенным UserId. Мне нужно, чтобы в данном контроллере при добавлении данных к ним автоматически привязывался UserId текущего авторизованного пользователя(дабы потом каждому пользователю отобразить только добавленные им данные). Только я нихрена не понял как это реализовать. Определять ID текущего пользователя я научился, а вот как добавить эти данные в БД, с остальными данными, которые он ввел я не врубаюсь.
>>1910324 (OP) Котанчики помогите ЛАМЕРУ Короче есть прошивка на плеер, она типа дохуя меняет звук - а каким образом мне решительно непонятно - автор таюшничает, не палит контору, а хочется понимать механику работы и че там изменяется http://file.sampo.ru/r2rwkj/ Тут 3 DLL файла по 100 кб в каждом из архивов, 1 стоковый другой от его прошивки - скажите че там ваще внутри происходит плез
>>1947394 С поддержкой проядка действий и операций помимо сложить-вычесть-умножить-разделить - вполне. Эт как-бы как минимум нужно знать терорию автоматов, уметь простенькие стейтмашины делать и пользоваться структурами данных типа стека. Меня вот на джуна взяли просто за то что я знал что делает out, лол.
Слышал мнение, что контроллер АПИ должен выступать только как точка входа и, максимум - приводить запрос к виду пригодному для дальнешей обработки. Кто-то поддерживает это мнение? Мне вот кажется, что это бессмысленное усложнение, лишние абстракции и вообще не так уж удобно. Вот я на данный момент - валидацию таки в контроллере провожу, как и всякие штуки по проверки прав доступа к реусрсу и только после этого передаю это обрабатывающему саму логику запроса коду, такой вот КПП получается, меня только смущает что из-за DI - ресурсы не так эффективно используются, ну да ладно. В общем, поясните, когда абстракция - лишняя, а когда - лучше ничего не разбивать.
Я тут экспериментировал и кое-что заметил. При перегонке что? объекта в родительский класс перезаписанный метод не меняется.
Подробней: Есть класс Person, есть класс Worker. Класс Worker наследуется от Person. В классе Person есть virtual метод, который я перезаписываю внутри Worker. При приведении экземпляра класса Worker к типу класса Person, метод остается измененным. Есть решение?
>>1910324 (OP) есть cs-файл. И есть lf в EOL. Есть github. И есть загрузка файла в репо, через веб-интерфейс. Есть git. И есть git clone repoURL. Есть папка, и какого-то хуя CRLF в EOL. FUUUUUUUUUUUUUUUUUUU!
>>1945665 он и будет работать. при выполнении то проблем с инстанцированем вьюмоделей нет и может быть нормально за счет ранее собранного сделай clean solution и все будет как и на другом компе
Ребят мб знает кто какой скриптик на asp net core mvc что бы не сильно сложный был. Ну мб админка какая, или же хуй знает ну корочи скрипт с 10 вьюхами и моделями что бы не запутатся, поделитесь ссылкой пожалуйста. Хочу посмотреть как ваще делается правильно.
>>1948093 Это ахуенная штука, я смотрел обзор. Сразу после разорПейдж буду его изучать.
ЖС рудимент веб 1.0 он должен умереть как умерла асикью, майл агент и жабер.
Сап аноны, собеседовали по c# javascript и БД в итоге взяли на стажировку на разработчика crm систем или что-то такое. Пока не совсем понял что это и несколько все это вообще хорошо/плохо, оторвано от реальности (т.е. смогу ли я в другие компании потом влететь или это в один конец)
Есть CRUD приложение ASP.NET CORE+EF CORE. Мне нужно, чтобы при редактировании данных пользователь мог редактировать не все поля. Для этого я создал модель представления. С реализацией view и POST запроса при редактировании я разобрался. Но вот с реализацией GET запроса у меня проблемы. Мне нужно, чтобы данные, которые нужно редактировать передавались в view, также я проверяю относится ли данная задача к авторизованному пользователю и проверка на 0(не null), ибо если ид поставить равным 0 вылетает исключение. Я сделал рабочую реализацию, но код выглядит отвратительно, можно ли реализовать это лаконичнее?
>>1946061 > Нашёл в инете интересное предложение создать список форм в отдельном классе, создал Как стартует твоё приложение? Откуда оно начинается вообще? Что происходит, когда ты запускаешь my_huita.exe ?
Мой ответ: > у меня есть класс со статик-методом Main() который автоматически вызывается при запуске приложения. В этом методе инициализируется графический фреймворк, создаётся графическая форма и выводится на экран, после чего создаётся бесконечный цикл, именуемый главным циклом, в течение которого выведенное окно висит на экране и принимает сигналы и обрабатывает коллбэки.
Мой следующий вопрос: Когда ты запустил приложение и создал форму, куда делась переменная, которой был присвоен инстанс окна, которое ты создал?
Вот когда ты ответишь на этот вопрос, ты автоматически поймёшь, как создать и хранить несколько окон и управлять ими, включая докинг, скрытие, сортировка и т.п.
где можно про все эти POST и т.д. почитать с примерами? я поймал себя на мысли, что мне здорово работу облегчит если запилю программу, которая будет тягать данные с удаленного сервера через апи, у них только через ssl+oauth, а я в душе не ебу как там с этими интернетами работать надо. я бы и нормального прогера нанял, но прибыль с приблуды его зп не окупит
>>1948733 Че там читать? У http есть несколько типов запросов - get-post-put-delete и т.д. в соответствии со спецификацией - одни могут тело содержать, другие нет. Сервер должен уметь их обрабатывать. Собственно, все что знать нужно. Нажми f12 и во вкладке network посмотришь как эти запросы сами выглядят.
>>1946749 Данные нихрена не одни, я уже писал что данные измеряются в разных величинах, а еще например в джс месяц начинается с нуля, а в с# с единицы ну это так, один из примеров ебанутость джса, из-за этого все парсеры такие ебанутые с додаиванием и отниманием чисел, а то что ты написал тоже хуйня, потому что если траблы с часовыми поясами в с# utc now и now не равны, а в джс равны, ты понимаешь насколько это большая проблема? и вообще вся эта херня с "ну просто передать дату стрингом" какой же это убогий костыль в стиле ебучих джейесов где
Видел некоторое количество кода на шарпе, где по задумке нужен двумерный массив, но вместо того, чтобы использовать двумерный массив, поставляемый языком, авторы кода используют для хранения данных одномерный массив + собственную функцию пересчёта двух индексов в один. Почему? Зачем?
>>1947797 >Мне вот кажется, что это бессмысленное усложнение, лишние абстракции и вообще не так уж удобно. Охуел? А за что ты деньги будешь получать? 2 строчки напишешь и всё? А ну-ка создавай ещё один проект, там создавай сущности, дто для них, дто для дто, дто для дтодто, потом отдельно сущности валидаторов, валидаторы для валидаторов, ещё привяжи как минимум 10 библиотек из нугета, отдельно классы для каждого пука и всю эту ебанину покрыть юнит-тестами. Зачем? А чтоб ты заебался!
жс конечно ебанутый, но ты смешиваешь "работу с датой" и "передачу даты между языками", чтобы метка времени что послал жс и была распарсена шарпом(и наоборот) указывала на один момент времени
Если использовать стандарты типа ISO 8601 (date.ToString("o");), то "22 февраля 21года с таким то временем и часовым поясом" распарится в жс именно в 22 февраля (и похер как считаются месяцы)
Далее работай с датой как хочешь, а потом преобразуй в ISO чтобы шарп правильно понял отметку времени.
Стандарты для этого и придуманы
точно так же можно работать и с миллисекундами, но там лучше использовать соглашение приводить время к UTC
>>1949073 а что если у меня нет возможности парсить так как просит джс, что если у меня например выполняется sql процедура на странице? и такой хуйни как toString("0') в sql тупо нет, и вообще это же значит что мне КАЖДЫЙ РАЗ надо будет парсить с текущей культуры в ISO 8601 потом в ту что хавает шарп и наоборот, господи какое же это убожество, ненавижу блять джс
>>1949044 Лично по моему опыту так делается потому, что в фреймворке оч много есть штук для обычных массивов, а вот для двумерных, трехмерных - нихуя нет. Ты не сможешь пользоваться линку, не будет удобного способа скопировать и вообще. Короче, фреймворк во многих местах заточен под работу с одномерными массивами, банальный линку ты не сможешь применить нормально. А насчет проверок выхода за границы. Там зачастую тебе это оптимизирует компилятор. Ну и вообще, такой уровень оптимизации начинается когда уже совсем уперлись в перформанс, в 99% случаев в шарпе у тебя скорость работы будет больше страдать из-за того что ты вводом-выводом занимаешься.
>>1949077 чего чего у тебя нет? у тебя жс прямо с базой sql работает что ли? тогда причем тут шарп
А если же жс общается с приложение на шарпе, то значит шарп у тебя есть. Впрочем опять же если тебе шарп только мешает ибо ты "хочу чтобы вот тот формат даты что я в жс использую вот я так в базе данных храню", так это у тебя еще одна проблема.
и ISO 8601 парсить особо не нужно. биндинг того же асп.нет коре его сам сбиндит
>>1949113 ах эти asp контролы я промотал все это сразу до выхода асп.нет коре, где всего этого нет И вообще считаю, что эти контролы больше палки в колеса ставят Про запросы SQL в виде кода вообще брррррр гадость.
так что это у тебя конкретно в асп старом проблема, что вот у тебя контрол и такая жопа с датами, а не в общем проблема жс и шарпа в непонимании друг друга
>>1949126 >так что это у тебя конкретно в асп старом проблема Клиентский контрол который использует жс что бы прочитать дату с сервера, но джс обосрался > а не в общем проблема жс и шарпа в непонимании друг друга >НЕ ПРОБЛЕМА В ЖС ПОТОМУ ЧТО Я ТАК СКОЗОЛ
как же ты маняврируешь,
и что плохого в тому что бы сразу обращаться в базу вместо этих ваших менеджеров хуенеджеров, виртуальных классов посредников\прокладок и тп? ты в курсе насколько такой подход более производительный? даже учитывая что старый асп в целом медленее но такой подход все равно на порядок быстрее и менее трудозатратный
и кстати не работает твой сраный ИСО, ОН ТОЖЕ ОБОСРАЛСЯ
>>1949135 >и кстати не работает твой сраный ИСО, ОН ТОЖЕ ОБОСРАЛСЯ я выплыл на лодке в поле. гребу гребу, нихрена не гребет. херня эти ваши лодки )))
>контрол который использует жс >но джс обосрался никаких проблем между послать дату шарпа и получить ее на жс не наблюдаю. наблюдаю проблему с конкретной реализацией некоего контрола. я с ним не работал и не писал его. Но я сильно подозреваю, что он не накладывает никаких требований на "что храним в базе данных" и как результат получаем хрень. А в базе не нужно хранить абы что, а нужно хранить метку времени в UTC (можно и timestamp) либо ISO И конечно же контрол этот момент не учитывает, ведь его задача делать запросы в базу и выводить и такой момент с разным форматом или упущен (как оно обычно бывает) или же где то это учтено (мож конвертеры какие), но про них не знаешь.
>и что плохого в тому что бы сразу обращаться в базу Ответ на этот вопрос понимаешь, когда нужно изменить название поля или структуру данных и начинаешь ползать по всему проекту, по которому все эти запросы размазаны
>ты в курсе насколько такой подход более производительный? да ни насколько. единственная радость - удобство создания контролов, где не пилишь сам хтмл + жс, а типа контрол.
>>1949138 Ты вообще понимаешь что за чушь ты пишешь? Никаких требований на "что храним в базе данных", я же самого начала написал что у меня подгорает из-за того что я должен париться из за таких мелочей как "что храним в базе данных" В КАКАОМ БЛЯТЬ ВИДЕ ХРАНИТЬ ДАТУ В БАЗЕ, а какого хрена вообще? ты понимаешь что я не должен хранить в базе ДАТУ ЕБУЧИМ СТРИНГОМ, дата это лонг, это последовательность битов, это такой же универсальный тип данных как инт или в стринг, а ты мне говоришь, ну храни дату в стринге и парси ее для жса, в чем проблема, что за чушь вообще? почему сраный джс мне указывает как я должен хранить дату, ОН ДОЛЖЕН ЖРАТЬ ЧТО ДАЮТ, будь я китайцем или я араб и пишу вязью, время у меня будет точно такое же, а дс уже должен взять эти биты и красиво нарисовать из них иероглифы китайцу и арабскую вьязь арабу А ОН ЭТОГО СУКА НЕ ХОЧЕТ ДЕЛАТЬ
>>1949138 Ответ на этот вопрос понимаешь, когда нужно изменить название поля или структуру данных и начинаешь ползать по всему проекту, по которому все эти запросы размазаны
>>1949147 >я же самого начала написал что у меня подгорает из-за того что я должен париться из за таких мелочей вот только в виновники ты записал жс и шарп, а не конкретную реализацию конкретного контрола, которая не дает....я честно говоря хз че она там не дает. Если бы контрол писал я, то с датой работал как с датой и форматировал исключительно при выводе не теряя оригинальную дату как контекст.
Я конечно считаю жс лютым говном. Во всем мире не найдешь человека, который считает жс большим говном, чем считаю его я. Но истина дороже
>ДАТУ ЕБУЧИМ СТРИНГОМ, дата это лонг, это последовательность битов, это такой же универсальный тип данных как инт или в стрин шта? ты щас вообще о чем. Какой еще стринг.
>парси ее для жс вообще то не парси а форматируй ее в ISO, если у тебя на руках объект DateTime(Offset), который нужно послать. У тебя же контрол который сам достает из базы и похоже шлет на клиента "как есть" и если SELECT ddd FROM ... выдаест ISO то жс умеет. new Date() в жс отлично понимает и ISO формат и миллисекунды.
А если ты в базе хранить 25/05/2021 то ты сам себе злобный буратин
>ctrl + shift + f то есть ты предлагаешь лазить по всему проекту пропуская сотни левых совпадений с шансом накосячить и это вместо автоматического рефакторинга - спасибо, но не нужно.
>>1949151 какого контрола? О чем ты говоришь? При чем тут реализация вообще?
>шта? ты щас вообще о чем. Какой еще стринг. Так это ты про какой-то utc в базе мне расказивал, что уже не бойсь не помнишь, заднюю включил?
>вообще то не парси а форматируй ее в ISO Вот по этой фразе я понял что ты нихуя не понимаешь о чем, говоришь, потому что date.toString("0") про который ты мне писал это и есть парсер гений, дата записывается и храниться в лонге, в цифровом виде, а приведение его к стрингу вот так date.toString("0") это парс
то-есть ты переводишь родной цифровой формат в стринг, скармливаешь его джс, и он из стринга переводит его в своей ебанутый формат, это и есть парс глупышка
>А если ты в базе хранить 25/05/2021 то ты сам себе злобный буратин в базе храниться не 25/05/2021 в базе храниться 633896886277130000 sql показывает тебе 25/05/2021 только из за твоих региональный настроек, был бы ты арабом показывал бы 2021-05-25 то каким образом скл отображает цифровое значение не имеет вообще никакого значения
>то есть ты предлагаешь лазить по всему проекту пропуская сотни левых совпадений с шансом накосячить и это вместо автоматического рефакторинга - спасибо, но не нужно. нет, у нормальных программистов есть документация со всеми сносками, а вообще порадовало твоё представление как работает поиск, будто ты всю жить в каком нибудь блокноте работал
>>1949170 >какого контрола? на скрине вижу некий FilteredGridView. Ты же его показал как пруф того, что "никакого шарпа между жс и запросами в бд у тебя нет, оно все само такое дурное)
>вот так date.toString("0") это парс вообще то это формат (формат в стандарт ISO), то есть действие обратное парсингу, ну да пофиг.
>633896886277130000 миллисекунды? тогда в чем проблема? откуда на твоих скринах парсинг каких то Date(12345?
>то каким образом скл отображает Так то я всегда говорил про формат, в котором дата должна ходить от сервера к жс, чтобы жс ее правильно понял. сам то я вообще никогда не извлекаю вот так сырые данные чтобы отправить - у меня из базы приходит готовый объект DateTime(Offset), но даже так в SQL SERVER есть функции типа convert
>у нормальных программистов есть документация со всеми сносками у нормальных программистов самодокументируемый код так то
>как работает поиск, будто ты всю жить в каком нибудь блокноте работал как раз у меня открыта последняя студия и я нажал в нем ctrl + shift + f и забил в поиск completed. И вижу что это самый обычный поиск по файлам без учета контекста. То есть ничем не отличается от блокнота
>>1949186 >вообще то это формат (формат в стандарт ISO), то есть действие обратное парсингу, ну да пофиг. Формат стринга! Ты неуч, toString парсит дату из цифрового формата в стринг, а параметром парсер уже принимает формат к которому нужно привести одпаршеный стринг, в данном случае он принимает "O" то есть формат ISO
>миллисекунды? какие миллисекунды ,что ты несешь вообще господи, иди нахуй читать документацию
>>1949201 >toString парсит дату из цифрового формата в стринг Откуда ты таких метафор нахватался?
toString конвертирует дату в строковый формат в соответствии с заданным шаблоном. Ну или форматирует дату в соответствии с заданным форматом, что менее юридически точно, но все равно верно.
парсинг работает ровно наоборот - из текстового получаем объект даты.
твое "парсит в стринг" будет применимо только если строка будет производить операцию типа String.FromDateTime("o", dateObj)
>какие миллисекунды ,что ты несешь вообще господ ааа. ты про внутренний формат хранения в бд. Так он не имеет значения. Важно то, что выдается в твоем SQL. И выдать там ISO который изи поймет жс очень легко (тем более что ты запросы руками пишешь) откуда я знаю что ты там где как хранишь. То ты напрямую из базы выводишь, то какие то парсинги на жс и шарпе делаешь, причем вообще не пойми чего парсинги
напомню с чего все началось >>1946445 первый пик - вообще хер пойми что ты парсишь. что это за Date(1225547 из которого ты вручную выбираешь миллисекунды похоже и таймзону да? что это вообще формат такой. ты жалуешься что тебе приходится его мудрить парсить на шарпе вот так - так а зачем ты такой его прислал???? Что ты вообще присылаешь в шарп, что вот так оно выглядит не как дата? почему не пришла вменяемая дата которую просто бы скушал DateTimeOffset.Parse и вообще сделал бы это сам при бинде параметров - ни строчки кода ручками
второй пик - что это за ручной разбор даты кто мешает сделать просто new Date(dateStr)? что такое вообще csDate что не дата (раз надо конвертить) и не строка, раз делается toString()
гоняешь между языками не пойми что, которое и приходится руками разбирать, а потом еще винишь кого то
>>1949216 >парсинг работает ровно наоборот - из текстового получаем объект даты. Ты прав в том что парсер формально означает преобразования из стринга в цифру, я использовал слово некорректно, я конечно же имел ввиду совершенно противоположный процес, преобразования из цифры в стринг
>Так он не имеет значения. Важно то, что выдается в твоем SQL. И выдать там ISO как раз таки только сам объект даты и имеет значение, а то в каком виде или в каком часовом поясе его отобразить должно быть совершенно по барабану
>первый пик второй пик не ищи там логики, я просто скинул наиболее дебильные ответы со стака от которых я подгорел
Сап, я чет не пойму, объясните мне дебилу про реалий вкатывания в шарп, дотнет. Возможно ли сейчас устроиться, или нет? Везде разные мнения, не поймёшь где правда. Подскажите где об этом подробнее узнать, если впадлу отвечать. thx
>>1949239 >>1949234 Это еще кстати только пол беды, сейчас денег ни у кого нет, пандемия подрезала финансовые подушки и если раньше можно было взять долбоеба в расчете на "ну а вдруг будет из него толк через годик второй, подучится" то сейчас уже мало кто соглашается на такие эксперименты
>>1949234 Ну, все ж зависит. Если ты рассчитываешь на стори про 100к джуну - то не вкатишься. Если ты понаехавший в ДС и просишь 40к+ не имея опыта - не вкатишься. Если ты чел без опыта на удаленку рвешься - почти нет шансов. Если в твоей мухосрани нет контор, в которых шарп нужен - не вкатишься. В остальных случаях - вполне.
>>1910324 (OP) Как сбилдить репозитарий с шарповым кодом, автоматом, прямо на github'e, с помощью Azure Pipelines, чтобы этот значёк был зелёным, https://github.com/ChristianEder/azure-pipeline-as-code и заебато чтобы всё фурычило, прямо из кода открытого, и чтобы не надо было пердолится с конпеляцией ядра на ассемблере, и чтобы бинарники можно было скачать бесплатно и без смс, и чтобы оно было зелёненькое-зелёненькое, как тут: https://github.com/bcndev/bytecoin
Ребяты, вот например юзер вводит данные на сайте какие либо. Сайт на основе этих данных делает расчеты и выдает юзеру. Где по правилам MVC должен проходить расчет?
Данные передаются в контролер и прямо там считаются? Либо должен быть отдельный класс метод которого будет вызван в контролере для расчета?
Купил clr via с# и понял, что я нихуя не понял. Я уже года 2 пишут на шарпе, но это же лютый пиздец какой-то, у меня аж пар из ушей пошёл. Для кого эта книга?
>>1949815 Двачую. Я когда только начинал учить шапр, по совету двачей, тоже засел на эту книгу. И как прилежный ботан пытался вдумчиво понять каждую читаемую строчку. И из-за вот такой хуйни, как на пике, которая буквально с первой страницы встречает нюфага, руки которого чешутся перед первым хелловордом, я чуть и не дропнул шарп тогда. И дело не в том, что книга перегружена сложной и непонятной хуйней, а в том, что 99% инфы оттуда имеют такое сочетание сложности (средняя и высокая сложность) и практической применимости (нулевая применимость), что каждую минуту задаешься вопросом, нахуя это читать. Книги по плюсам у меня никогда такого отношения не вызывали, потому что всякая плюсовая магия всегда на кончике пальца и в деле.
Я пишу для себя микробиблиотеку тривиальной обработки геометрических сущностей: точки, отрезки, боксы, линии, пути, кольца, полигоны, поверхности. В принципе, кроме косметических правок, основную реализацию всех объектов написал (переписал со своего древнего говнокода). По ходу дела обнаружил, что частичные аналоги уже есть в стандартной библиотеке. В WinForms есть реализации многого из того, что мне нужно, однако зависимость от форм не хочется добавлять. И не думаю, что там всё это имеет какие-то оптимизации. Есть также структуры Vector2 и Vector3 в пространстве Numerics. Может ли быть какой-то профит использовать именно их? Вроде как они очень круто оптимизированы. Недостаток их использования для меня, что я всё же не могу нормально расширить их функциональность. В общем, что посоветуете по этой теме. Перформанс важен, но удобство кодинга и контроль над кодом важнее.
А вот если нет данных в MVC то получается и модель не нужна? Ну вот к примеру будет сайт с 5 страницами и обработкой введенных данных от пользователя. Вроде же некуда тут модель впихивать.
>>1950105 В этом случае тем не модель не нужна, а MVC в целом. Просто статические страницы с обработкой на клиенте, ну или если нужно сервер-сайд выполнение, то апишка с вызовом твоей числодробилки (сервис аз ис)
А есть положительные отзывы на CLR via C# ? Ощущаю, что глубинного пердолинга стает все больше в работе, подумываю о улучшении понимания дотнета. Или есть что-то полезное, но более щадящее?
>>1950023 НЕТ, КОГДА ВЫ УЖЕ ПОЙМЕТЕ, клиенту похер как у вас код отформатирован, ему похер сколько вы комментариев настрочили, ему плевать какие крутые технологии вы использовали, ЕМУ ВАЖЕН ТОЛЬКО ПЕРФОМАНС, будете для себя код писать пишите как хотите, а для клиента вы ДОЛЖНЫ писать код который максимально эффективный и производительный
Вкатун, работаю с wpf, в планах перекат в веб. Нашел только что cshtml5/bridge.net/deck.net. Насколько годнота чтобы портировать не сильно сложное wpf приложение или говно без задач?
>>1950436 Клиенту важно решение его задачи в срок, за тот бюджет что он выделил. Перформанс - может быть конкурентным преимуществом, если две конторы предлагают решение задачи за одинаковую цену. Блядь, ну серьезно, посмотри на 1с, нахуй, там отчет формируется иногда по полчаса-часу, блядь, который можно ручками собрать парой SQL запросов и выгрузить куда нужно, но 1c всю эту залупу с тем чтобы бухгалтерша нажала и у нее сформировалась делает и поддерживает актуальную хуйню связанную с бухучетом и всем заебись, похуй на то что можно в 100 раз ускорить составление этого отчета.
>>1950807 Не знаю кому похуй, может какой-то тёте сраке и похуй но у нас нет, у нас нужно выполнить : а) в срок б) что бы работало как предполагается в) что бы работало максимально быстро г) что бы можно было поддерживать е) что бы можно было развивать
>>1950836 Щас бы дяде мидлу доказывать свою квалификацию школьнику с двача отвечая на детские вопросики которые даже гуглятся по первому запросу, ну ты даешь анон
>>1951024 Ну, я так пытался делать, но обосрался. Постоянно возникало желание взять что-то тут из вышестоящего проекта, в результате выходило все равно сильносвязная хуета и я сливал все что там нарезал в один проект. Но я нубяра, майки подобный подход использовали в своем примере с eShopOnWeb/Containers. Короче, чисто на бумаге и когда нормальные люди это делают - выглядит заебца. Когда делаешь что-то мелкое - тоже заебца. Когда пытаешься что-то что должно реальную пользу приносить сам и ты дебил что не способен нормально делить на куски и держать это все в голове - случается залупа.
Ну, просто абстрактно опишу что было у меня. Есть протокол общения с устройствами, пакетики там, протокол похож на Bisync, но байтики отличаются и иногда шифруются, а иногда не шифруются; есть клиенты которые хотят с клиентами-устройствами через мое приложение общаться их запросы нужно конвертировать в этот вот протокол; а сверху веб-морда на JS которая должна 1. Позволять админу менять настройки сервера(например ограничить время жизни сессии или число одновременно живущих сессий, отключить логгирование, поменять порт на котором ждут соединение, ограничить адресацию, дать возможность открыть диапазон портов для приема устройств); 2. Показывать состояние устройств что сейчас подключены(подключен, срет не тем чем нужно) и т.д. Ну, собственно: Вот протокол, его сборку-разборку из байт выносим в библиотеку. А дальше - а дальше хуй пойми как это резать, потому что описание протокола - вот иногда, если клиент такой - мы должны делать так, а если не такой - вот так, иногда клиент может прислать пакеты не по протоколу и мы должны их закешировать и если есть клиент что ждет сообщения от устройства - отдать ему; тут мы обрываем соединение если пакет битый, а там не обрываем, потому что у этих устройств обосрались на заводе и они всегда битые приходят, а потому мы считаем что пакеты не битые; вот тут мы должны открыть сеанс связи, а здесь не должны. А еще сверху, есть секретные пакетики, которые моя приблуда должна слать устройствам чтобы проверить что это реальное устройство и меня не наебывает злоумышленник. Но я тупой же, потому может быть не в такой архитектуре проблема, а во мне, опять же, мне стало проще - забить на попытки сделать чисто и я ебанул так чтобы все что нужно было делать - делало. ЗАТО РАБОТАЕТ БЫСТРО!!! ЫЫЫЫЫ: ЫЫЫЫ, НИ ОДНОГО ВЫДЕЛЕНИЯ ПАМЯТИ ПОСЛЕ ТОГО КАК БАЙТИКИ ИЗ СОКЕТА ПОЛУЧЕНЫ!!! ВСЕ НА УКАЗАТЕЛЯХ!!!!!! А ВАШ ЕБУЧИЙ ЕФ ЗАМЕНИЛ ЗАПРОСАМИ КОТОРЫЕ ПИСАЛ РУЧКАМИ, ЕЩЕ И НАХУЙ АСП, ДЛЯ АПИ Я ПРОСТО ЕБАНУЛ HTTPListener И ВСЕ НАХУЙ, НИКАКИХ ВАМ ТАМ МИДЛВАРОВ, СЕРВИСОВ, СИНГЛТОНОВ И ПРОЧЕГО, ПОТОМУ ЧТО НЕ НУЖНО!!! А 50% КОДА В Main НАПИСАНО!!!!!!!!!! Короче, я за 2 месяца работы - 20к строк кода, которые довольно хреново со стороны выглядят, зато я знаю каждую строчку и лично я легко с этим работать смогу, ну а если меня попрут - пусть страдают те кто не смог понять гениальный ход моих мыслей.
Я опять выхожу на связь >>1950724. Cshtml5 редчайшая залупа - у них даже дефолтный сампл проект в котором показаны контролы тупо не компилится, лол блять. Как мне можно конвертнуть простую впф xaml страницу без кнопок, только с експандерами/текстблоками и подставленными значениями в html страницу?
>>1951151 формат то да стандартный, проблема в том что для шарпа мин это будет 0 0 0 0 и до 2010 будет одно значение таймпана, а для шапра это 1970, и шарп уже не воспринимает это как мин, приходиться пилить костили, ловить исключения, писать хандлеры и сосать писос когда где-то что-то упустил
>>1919035 > которые либо пришли из математиков и АСУ ТП в предметную область, либо наоборот, дополнили предметные знания навыками кодинга. А то, о чём ты говоришь - это сайтошлёпство и обезьяний бигдата+машоб на корзину для пускания пыли в глаза акционерам. Вот мне интересно, что такие как ты думают о прогерской вышке? Чел, что закончил CS в MIT, но нихуя не шарит в биологии, банках или финансовой промышлености, это ведь обезьяна-формошлеп?
>>1917602 > Там где предметная область не нужна для таких кодеров будет внешний рафинированный интерфейс, за который ему и лезть не стоит. Вроде как наоборот, для учоных в говне моченых прогеры делают DSL на питоне, чтобы они на ней и писали свои формулы для предметной области.
>>1951162 Вышка уже давно учит несколько специализации сколько учит УЧИТЬСЯ, челик который учился в MIT без труда научится всего чему надо в работе быстро и эффективно,
>>1951164 А челы из гуглов и микрософтов тоже формошлепы? Никакой же предметной области у них нет, они просто пишут софт для массового потребителя/энтерпрайза.
>>1951162 >>1951167 >Вот мне интересно, что такие как ты думают о прогерской вышке? Чел, что закончил CS в MIT... >А челы из гуглов и микрософтов тоже формошлепы? Никакой же предметной области у них нет Они разрабатывают компиляторы, ОС, СУБД, антивирусы, поисковики, навигаторы, архиваторы, игры, алгоритмы шифрования, блокчейн и т.п. Это их предметная область.
>Вроде как наоборот, для учоных в говне моченых прогеры делают DSL на питоне, чтобы они на ней и писали свои формулы для предметной области. Порог входа в программирование с каждым годом всё ниже, и средний программист - это нихуя не математик-алгоритмист, который в свободное время контрибутит в ролсин и постгрес, это именно что нечто среднее между вчерашним продавцом шин и дисков и перекатышем из 1С. Он сможет сделать формочку или кое-как приспособить схему БД интернет-магазина под нужды заказчика. Скорее всего он может найти реализацию нужного алгоритма на СО и подключить даже не самые популярные библиотеки. Сможет ли он самостоятельно написать парсер для составной формулы - это уже вряд ли.
В C# в пространстве имён WinForms или Drawing, насколько я помню, есть класс, который позволяет задать несколько опорных значений типа float и соответствующие им цвета, а потом вычислять интерполированные цвета для произвольных значений float. Я года 2 назад это использовал, но сейчас не могу ни найти, ни вспомнить, как этот класс называется. Подскажите, кто знает, велосипед не хочу писать.
>>1951826 > Они разрабатывают компиляторы, ОС, СУБД, антивирусы, поисковики, навигаторы, архиваторы, игры, алгоритмы шифрования, блокчейн и т.п. Это их предметная область. Так погромистов которые это делают единицы. В мире всего то несколько ос, по компилятору под каждый язык, несколько СУБД и тд. А создатель чего-то нового, что будут использовать другие люди, точно войдет в историю про него будет страничка на википедии Я очень сомневаюсь, что каждый второй выпускник стэнфорда вот так сразу же после универа идет в гугол писать поисковик или в майкрософт пилить новые версии тайпскрипта и шарпа.
Алсо, если ты сам такой тру программист, то напиши как им стать джуну-вкатывальщику. Я то совсем не против на первой работе писать компилятор, но почему-то во всех джуно-вакансиях требуют знания html, angular и sql, а не собственный ЯП на гитхабе.
Анон, а над чем самым интересным ты на шарпе работал? Читаю этот тред, вакансии на линкедине и впадаю в уныние: повсюду или винформс с впф, или фуллстек, или бек где просто указано что надо макачить веб апи для фронта. Работодатели еще и нашли чем выебываться: у них не легаси, а аж целый нет кор.
>>1951901 если хочешь делать то что самому хочется то делай сам, за свои деньги, пс: работал над проектом с нейросети который детектить пустые полки и вызывает работников магазина их заполнять, это был одновременно один из самых интересных и самых скучных проектов, с одной стороны были интересные моменты, но большую часть времени мы пинали хуи, да и интересность во многом заключалась в новизне, но если расказывать о том что ты работал с нейросетями то людям и работодателям кажется что ты какой-то супер хацкер
Ребяты, как такое работает? ПРимер из книги. Заходит юзер на сайт по адресу droch.xxx/Product/List Аспе Нет Коре создает экземпляр класса ProductControllerпикрил1 В классе срабатывает конструктор и видит что в конструктор должен принимать любой экзмепляр который реализовывает интерфейс IProductRepositoryпикрил2 Что бы присвоить его полю IProductRepository repository Класс который реализовывает данный метод FakeProductRepositoryпикрил3. Вот и создается экземпляр FakeProductRepository передается в конструктор ProductController там присваивается значения полю IProductRepository repository; и по вызову метода List() вся эта хуетень передается в представление и выводится юзеру.
И все это делается с помощбю строчки в Стартупе services.AddTransient<IProductRepository, FakeProductRepository>();
Я так понимаю эта строчка говорит следующее: Когда нужно создать экземпляр типа IProductRepository то используй для этого экземпляр FakeProductRepository.
Правильно понимаю чи нихуя?
Сложна пздц, но хоть начинаю врубатся, неделю назад ваще просто как обезьяна переписывал из книги код и не понимал что нахуй
Есть один проект на wpf .net 4.0 с ef и sqlite'ом. Нужно сделать так чтобы пользователи могли указывать путь к файлу бд. Можно ли как-то программно в рантайме добавить connectionString в App.config или сбилдить самому?
>>1952061 верно. И нет там ничего сложного DI контейнеры это очень просто, а контейнер от майков вообще базовый примитив.
Вместо ручного кода создания вида new Foo(new Bar(new Baz)) ты прописываешь декларативно что подсовывать вот "для такого вот нужного в конструкторе типа"
Бля как сделать что бы заработало? Книга по асп нет коре 2.1 я делаю на 3.1 и EF5 У меня нихуя не работает миграция. Как правильно сделать? Пикрил ошибки и пикрил кода
>>1952026 Я не понимаю как если ты имеешь вииду что-то типа пикрила как в контролере то там где мне нужно это так не работает, там где мне нужно метод требует параметра
>>1952465 > метод И в чем проблема? Ты же не метод инжектишь. А если ты имел ввиду какие-то определенные объекты в конструкторе - то тоже не понятно в чем сложность регистрируешь тот какой тебе нужен с теми параметрами какие нужны и достаешь. Ну и ты можешь сделать класс-фабрику и в нее заинжектить что нужно, а разные параметры в методе Create передавать и там собирать. В классе где нужен специальный инстанс - создавать тот что нужен тебе.
>>1951901 Владельцы бизнесов, больших и маленьких, они сделаны из того же мяса, что и ты, и имеют такие же права. Пили свой проект и коммерциализируй. Я так и делаю например. Зачем тратить свою жизнь, обогащая дядю и работая над унылыми проектами?
>>1951900 >Я очень сомневаюсь, что каждый второй выпускник стэнфорда вот так сразу же после универа идет в гугол писать поисковик или в майкрософт пилить новые версии тайпскрипта и шарпа. Поддержка и развитие всего того, что уже написано, и так требует кучу ресурсов. Нечто радикально новое, типа языка программирования, в корпоративной среде вообще не может зародиться. Либо покупается на стороне, либо у кого-то из сотрудников есть пет-проект по языку, которому в удачный момент компания даёт ресурсы, либо зовут уже зарекомендовавшего себя опытного языкописателя со стороны. А в целом я и сам не очень понимаю, какими задачами постоянно заняты тысячи программистов в фейсбуке, гугле, нетфликсе и т.п. Всё вроде работает без особых изменений уже лет 10. Почему капиталист их всех не разгонит и не начнёт просто получать больше прибыли?
>>1951901 Иди на завод. лол. Там одна задача охуительней другой: нужно новый стек реализовать, нужно всякие шифрования и прочую залупень, серху нужно о перформансе думать, потому что твой код будет работать на китайских процах с ограничением в 32МБ оперативки и 128МБ встроенной памяти; а еще и будут браки в партиях, которые ты будешь обходить костылями, чтобы клиенты не заметили брака. И да, это все на шарпе вполне делается. Базарю, еще захочешь. Плоютят правда не так много, 25к людям с 5 годами опыта; но ты же интересные задачи хочешь решать, а не деньги зарабатывать.
Анон, помоги пожалуйста с ооп на шарпах. Предметная область: Отдел расчета зарплаты. Информационная система отдела расчета зарплаты на предприятии хранит данные о величине оплаты различных видов работ. Система хранит информацию о работниках предприятия. Система должна позволять выполнять следующие задачи: вводить информацию о различных видах работ; вводить информацию о работниках и выполненных ими работах; после ввода фамилии выводить для работника зарплату; выводить сумму выплат всем работникам;
Для заданной предметной области спроектировать программную структуру, состоящую из 3-5 классов. В соответствии с разработанной диаграммой классов выполнить программную реализацию. Предусмотреть использование типа данных – перечисление. Ввод/вывод должен быть реализован вне проектируемого класса. Очень надо
>>1954405 Я не до конца уверен, что конкретно ты имеешь ввиду под перебором, потому ответа два: 1. Если ты не хочешь вручную перебирать значения, воспользуйся Linq, пр.: dictionary.FirstOrDefault(x => x.Value == "Kek"); 2. Если вопрос был про максимальную производительность - тебе эта структура данных не подходит. Тут нужно по контексту смотреть, что для твоей херни подходит.
>>1954405 Если это важно для производительности, то следует хранить обратный словарь Dictionary<TValue, Tkey> (в лучшем случае) или Dictionary<TValue, List<Tkey>> в случае возможности повторяющихся TValue с разными ключами.
Можно как-то wpf отключить кнопку? Мне нужен не enabled=false, а чтобы по виду она была включенной, но без анимации нажатия и наведения, т.е. как пикча просто.
предположим у меня есть страница которая отображает некоторую произведственную статистику, клиент может фильтровать данные по заранее заданными параметрами,
данные фильтруются на сервере и отправляются пачкой,
что меня интересует, можно ли вернуть пользователю одну пачку в потом по контексту его действий предположить какую пачку он захочет в будущем и начать ее загружать например с помощью сигналР? Как будто загрузка следующий пачки происходит в фоне для пользователя?
кто такое уже делал? есть советы как это имплементировать?
Коллеги, куда лучше двинуть или что учить далее? Знаю базовый .net, использую паттерны, работал с di, энтитифреймворк.(опыт работы около 2 лет). Не очень большой работы с мультитредом (т.е. не использовал на практике семафоры, например) Сейчас в процессе чтения про Clr более подробно(Рихтер)
Как я понимаю, чтобы устроиться в энтерпрайз, нужно вкатываться/читать про asp. + Js изучать. В свободное время ещё изучал unity 3d, но такое чувство, что Там оч плохо с зарплатами . У кого был похожий опыт развития? Куда лучше двигаться?
Есть банальная N+1 проблема У меня есть таблица, к ней еще 3 зависимых таблицы Сейчас вытягиваю сначала все данные главной таблицы одним запросом Потом из каждой зависимой таблицы таблицы вытягиваю данные по одному запросу на каждую запись главной таблицы Итого, получается мне нужно поочередно вытягивать первых 100 записей, их обрабатывать и потом там по кругу, пока данные для выборки согласно условию запроса не закончатся На каждый такой заход 1 + 300 запросов Как лучше это переделать? Ну допустим я буду делать 4 запроса Один для главной как был И еще 3 на каждую зависимую таблицу через джоины Тут вопрос какое условие к запросам написать И ничего лучше чем написать WHERE IN (100 айдишников) мне в голову не приходит И потом надо соответсвия програмно искать, чтобы связать объекты главной таблицы с объектами зависимых таблиц, ну с этим проблем быть не должно Тут главный вопрос как правильно построить запросы
В качестве ORM у меня не Entity Framework, если что. Там-то все, по всей видимости, было бы просто.
>>1955114 Слишком обтекаемо и без конкретики написал, чтоб по существу что-то советовать. Постараюсь поугадывать: Если твоя ORM понимает linq - напиши джойн на на нем, получишь один запрос. Если твоя ORM не понимает linq - напиши запрос на обычном сиквел с обычными джойнами (INNER JOIN / LEFT JOIN etc...). Будет все еще один запрос. Далее идут странные кейсы. Если тебе кажется, что у тебя такой - тебе скорее всего кажется Если тебе нужно данные главной таблицы как-то хитро фильтровать, что в сиквеле это сделать нельзя - я бы просто вытянул все данные с джойнами, а потом их фильтровал. Если тебе нужно данные главной таблицы как-то хитро обработать перед джойном, что в сиквеле это сделать нельзя - я бы вытянул данные из первой таблицы, сделал с ними что нужно, а потом доставал бы из других. Я бы избегал WHERE IN, т.к. могут быть ограничения на количество данных в списке (2000 для SQL Server, например). Надежнее простым дайнемик сиквелом создать временную таблицу, наполнить ее твоими айдишками, и сделать на нее джойны.
> Если твоя ORM понимает linq - напиши джойн на на нем, получишь один запрос. Понимает, но я в свою очередь, не очень понимаю как это все обернуть на LINQ так чтобы свести потом все к одному объекту Грубо говоря, объект в результате содержит три коллекции, которые эти 3 таблицы представляют, связь один ко многим от главной таблицы к дочерним. Вроде такого class TableMain { List<TableA> TablesА {get;set;} List<TableB> TablesB {get;set;} List<TableC> TablesC {get;set;} }
> Если твоя ORM не понимает linq - напиши запрос на обычном сиквел с обычными джойнами (INNER JOIN / LEFT JOIN etc...). Будет все еще один запрос.
Ну одного запроса не выйдет, тут минмум 4 Один для главной и по одному с джоином на каждую зависимую таблицу Потому что три зависмых таблицы не связаны между собой, а только имеют общего родителя
Запрос к главной таблице SELECT FROM TableMain WHERE (куча условий) LIMIT 100
И потом что-то вроде такого SELECT TA. FROM TableMain TM JOIN TableA TA WHERE IN (100 айдишников таблицы TM из предыдущей выборки)
И также с осальными 2 таблицами А потом програмно раскидать каждую таблицу по своим объектам в соответсвующие коллекции
> Если тебе нужно данные главной таблицы как-то хитро фильтровать, что в сиквеле это сделать нельзя - я бы просто вытянул все данные с джойнами, а потом их фильтровал.
C фильтрацией главной таблицы проблем нету, проблема только в том как достать данные дочерних таблица. > 2000 для SQL Server, например)
Ну мне всего лишь по 100 надо таскать за раз > Надежнее простым дайнемик сиквелом создать временную таблицу, наполнить ее твоими айдишками, и сделать на нее джойны. Звучит как хороший вариант, спасибо
Хм. Я чет начинаю себя чувствовать обезьяной используя EF. Уже стал забывать нативный синтаксис SQL и как с помощью него составлять сложные запросы. Сильно ли обидется тимлид, если в своем микросервисе я тихонечко спущусь к нативным запросам?
Аноны, как сохранять лог? Сохранить лог в базе? Или просто в текстовом формате? Использовать встроенный логгер? Стоит ли создавать много файлов лога например на каждый день? Насколько большие файлы лога обычно?
>>1955252 Няш, тебе на этот вопрос никто не ответит, нет универсального рецепта, то что подойдет одному не подойдет другому, ты должен сам определить. пс: скажу только что если ты не знаешь куда двигаться дальше, это значит что у тебя нехватка знаний, так у нас отсеивают псевдо-мидлов
>>1955254 А если например админ хочет просмотреть историю активности пользователя тогда он должен каждый файл открывать и искать по нему? как устроен логМенеджмент?
>>1955257 У нас есть приблуда в программе типо журнала событий в винде, которая фиксирует основные события. А лог это для ошибок, то есть что-то пошло не так идем в лог.
>>1955253 Решай по его важности, чувствительности, размеру и т.д. Файловый лог норм, если его не много. Ну и искать по нему не очень. Структурированный лог в БД прикольный, но не перегрузи ее командами. Крутой вариант - писать в какую нереляционную БД, которая, помимо быстрой записи и анализа логов, поддерживает дашборды. Нормальная история в зависимости от вида логов, писать их в разные хранилища.
Если встроенного логера хватает - отличный вариант. Если не хватает - можно установить, например, NLog, который использует интерфейс встроенного в Core, но поддерживает много таргетов и еще всяких штук.
>>1955266 логгировать как я понял нужно все вплоть до вызова некоторых функций и получений страниц
>>1955268 Ну в общем я думаю наиболее удобным вариантом писать лог в зависимости от типа в отдельные файлы, но не разбивать по датам, то есть отдельный лог для авторизированния пользователей, отдельный для вы авторизирования, отдельный для загрузок страниц, по каждому лог по типу ошибки, ну я думаю это под несколько сотен файлов и они будут храниться на сервере
вообще идеально было бы записывать и работать с логами с базой данных, но без базы данных, она находиться в облаке и по условию нужно минимизировать ее использование
>>1955283 Хм, обычно используют обратный подход: небольшое количество видов логов, и разбитие по датам. Если что-то пошло не так, гораздо чаще можно ответить на вопрос "когда?", а не "что?". Ну и если лог разрастется - его легко будет почистить (даже автоматическую очистку старых записей можно настроить).
>>1955283 К слову, облачные провайдеры порой предоставляют свои услуги по хранению логов, хотя знакомые жаловались, что они не очень по сравнению с нормальным noSQL. Ну и имей ввиду возможные проблемы с файловыми логами, если приложения тоже в облако уедут.
>>1955319 >гораздо чаще можно ответить на вопрос "когда?", а не "что?" Верно подмечено
>>1955320 >Ну и имей в виду возможные проблемы с файловыми логами, если приложения тоже в облако уедут. это тоже валидно
К тому же есть еще проблема с тем что бы записывать значения в файл в многопотоке я потому думал много маленьких логов использовать что бы избежать проблем с остановкой потоков из-за лока, с базой таких проблем конечно нет, но все таки не хотелось бы гонять трафик просто так, тут главная проблема даже несколько трафик сколько количество частых маленьких транзакций, может стоить сделать что-то типа буффера что бы он накапливал себе в память логи, а потом после достижения определенного количества строк просто одной пачкой транзактил это в базу? Как вам такой подход?
>>1955329 >что бы записывать значения в файл в многопотоке я потому думал много маленьких логов использовать Я конечно хз, что у вас там за ограничения, но реализация лога - это тривиальная школьная задача, проще сортировки пызурем. Пишешь буфер обертку вокруг листа или конкурентной сумки, и каждые 100к записей сливаешь в БД или в файл. Даже не знаю, что может тут пойти не так. Но писать в файл или тем более в БД чаще 1 раза в секунду или типа того - так себе решение.
>>1955338 Пишешь буфер обертку вокруг листа или конкурентной сумки, и каждые 100к записей сливаешь в БД или в файл. Даже не знаю, что может тут пойти не так. Но писать в файл или тем более в БД чаще 1 раза в секунду или типа того - так себе решение.
>>1955329 Никаких проблем с логированием из множества потоков не встречал, ведь это само собой разумеющееся. Если будешь использовать NLog, там есть AsyncWrapper, который буферизацию делает. Как раз для ситуаций с большим потоком логов.
>>1955387 Шизик, прочитай внимательно >проблема с тем что бы записывать значения в файл в многопотоке Речь не шла про лог в многопотоке, речь шла про запись в файл в многопотоке, никогда не встречал? Тогда иди уроки делай
>>1955402 Ты туповат? Логер пишет в файл последовательно, даже при одновременных вызовах в разных потоках, а AsyncWrapper может буферизировать и склеивать логи для записи, чтоб решить потенциальные проблемы с производительностью.
Есть тут кто работал с System.Data.SQLite или вообще с sqlite? Как можно запаролить файл базы данных - в интернете говорят юзать Set/ChangePassword(), но у моего sqlconnect таких методов нету. Можно как-то запаролить базу запросом или как-то иначе?
>>1955419 Я работал только не через System.Data.SQLite, использовали для шифрования базы sqlcipher Сначала хотели запаролить базу, но при установке пароля вся база шифруется и скорость всех запросов упала в разы Поэтому махнули рукой и оставили как есть :D Скорее всего, если посидеть, поразбираться, то можно нормально сделать, но для нас база с паролем не особо требовлась
>>1955483 Это пиздец костыли - у меня база и так пару гиг весит, я и так ебусь чтобы ентити залупа не загружала всю таблицу в озу скопом, а по одной записи и вызываю гк на каждый чих ибо утечки шопиздец.
>>1955253 > Аноны, как сохранять лог? Серилогом > Сохранить лог в базе? Если это требуется > Использовать встроенный логгер? Серилог используй > Стоит ли создавать много файлов лога например на каждый день? Если стоит такая задача. У нас, например, обычно, хранится 5 файлов, каждый по 100МБ. Каждый день нет особого резона, потому что обычно форматирован и содержит информацию о времени-дате, т.е. ты легко можешь фильтровать его, ну а лог за оч давно обычно не нужен. > Насколько большие файлы лога обычно? Зависит от системы и задач. Обычно больше гига никому не надо. Плюс, если тебе нужно большой объем данных хранить, то логи у тебя будут в бинарном формате -> гиг это пиздец как много данных на самом деле, для примера: вот у нас в девайсах стоит флешка на 512МБ и там логи работы за 5 лет не в состоянии засрать это все, другое дело, что там и логи бинарные, а не эти ваши 'UnhandledException и весь стек вызова.
Если ты веб-макака, то обычно логи у них - кидаются в какой-нибудь отдельный сервис, серилог - вполне способен это делать. Если ты десктоп-макака - серилго позволяет тебе как в файлик кастмоного формата, так и в JSON, так и в консольку с подсветочкой всего. Короче, если у тебя нет каких-то специфичных штук, типа: Мне не нравится что уровень Trace называется, хочу чтобы он как-то иначе назывался - берешь серилог и используешь.
Хм. Смотрите. Вот мне нужно загрузить на сервер файл, распарсить его и сохранить результат. Так вот, в чем трабла. Я беспокоюсь: А как поступать если внезапно поток прервется или файл невалидный? Вот я парсю, бах, клиент до конца не загрузил файл - что я долежн делать? Или если все норм, но файл невалидный? Должен ли я паниковать и кидать всюду из-за этого эксепшны или не должен и нужно просто мягко это дело завернуть?
>>1955664 если бы еще серилог позволял гибко настраивать куда писать вот за что мне нравится Nlog - за его возможность расписать какие логеры (и какого уровня) в какой файл писать, также доступны wildcard для указания пачки логеров
>>1955664 ты легко можешь фильтровать его Ну если лог в базе понятно как его фильтровать, а если он храниться в файле на сервере? Как его в таком случае фильтровать, линк тут не проканает, за месяц одних только логов подключения к базе данных было 200к строк, я боюсь что фильтровать что-то такое в файле может быть затруднительно...
>>1955664 >Короче, если у тебя нет каких-то специфичных штук, типа: Мне не нравится что уровень Trace называется, хочу чтобы он как-то иначе назывался - берешь серилог и используешь. Ну тут проблемка потому что логи должны быть кастомного формата потому что у нас есть (или должен быть) дашборд которому можно скормить логи
Сап шарпач, есть одни текстовые файлы в проекте, но они добавлены в проект что-то типа как комментарии, сами они конкретно в exeшнике нигде не фигурируют. Если я устанавливаю им действие при сборке "не копировать" то они появляются в папке с е зешником при сборке. Можно ли как-то сделать так чтобы студия вообще нихуя с этими файлами не делала, но они лежали в проекте?
>>1956598 Есть проект в вижуал студии. В проекте добавлены .txt файлы. Как сделать так чтобы при сборке проекта эти .txt файлы нигде не фигурировали на выходе после компиляции, а лежали просто в проекте, в исходниках?
Анон, куда двигаться -в десктоп и WPF, или в веб+асп.нет? Ни к чему конкретному душа не лежит, интересуют перспективы, сложность технологий, зп, сложность трудоустройства.
>>1956896 В вебе на порядок больше вакансий, но больше всякого нужно знать и требования к проектам выше. Ну, это я так со стороны вижу, сам то я десктоп педалю
>>1956896 Я сам сижу на веб+асп.нет, и в целом согласен с >>1956898 Вакансий намного больше (я особо и не видал десктопных). На бекенде зоопарк технологий большой, но они скорее приятные. Со значительной долей вероятности, работа будет для фуллстека, а на фронте еще больший зоопарк технологий, и, часто, куда менее приятный. Сам десктопом не занимался, но с моей колокольни веб выглядит интереснее с точки зрения архитектурных решений, как на уровне отдельных сервисов, так и на уровне всего приложения. Если у тебя душа ни к чему не предрасположена, я бы за заработком вкатывался в веб.
Вопрос от ньюфага. Допустим у нас есть переменная int a и мы ей присваиваем метод который возвращает int. При каждом следующем вызове этой переменной каждый раз заново обсчитывается метод или в ней уже хранится результат?
Почему такое скептичное отношение к SQL в последнее время? Дескать выучил EF и все. Блять как вы будете отчеты делать? Работаю в большом проекте и всех новичков направляют на поддержку отчетов, а там без знаний аналитических функций, рекурсивных запросов и всяких оракловых хинтов не обойтись. Или за бугром в проект берут отдельных SQL разработчиков?
>>1956943 ASP.NET Core и, желательно, Framework, ОРМ вроде EF и микро ОРМ вроде Dapper, какой-нибудь RPC фреймворк (gRPC, например), Quartz, SignalR, что-то для логирования, вроде NLog. Стоит знать SQL и иметь представление о noSQL.
>>1957010 Ты написал невозможную вещь. Если ты имеешь запись вида: int a = SomeMethod(); , то переменной а ты присваиваешь результат выполнения SomeMethod(), что должно ответить на твой вопрос в ней хранится результат.
>>1957023 Поддерживаю. EF это хорошо, но регулярно нужно писать сложные и хорошо оптимизированные запросы на сиквеле. Даже если отдельный спец есть, твои команды и запросы он за тебя писать не будет, а займется, например, теми-же отчетами.
>>1956758 Ты тролль? Что за нубовопросы? нынешние джуны уже не только программировать не умеют, а уже и со студией разобраться не могут? Может сначала хотя бы гайдик по студии бы прочитал перед тем как позорится такими вопросами
>>1957094 Ты тупой? Ставишь bild action none, copy to iutput : do not copy, Все! Еще может проверить bild event чисто теоретически там могут быть pre-build event команды которые его копируют, но если там ничего нет и в проперти поставишь нет и нет, тогда оно В ПРИНЦИПЕ не может копироваться в оутпут даже при всем желании
>>1957023 > Блять как вы будете отчеты делать? Какие еще нахуй отчеты? > всех новичков направляют на поддержку отчетов Я бы нахуй вас сразу послал. Отчеты, блядь, поддерживать. Блядь, отчеты в SSRS делаются в 2 клика, в крайних случаях можно ручками запрос допилить, а поддерживать его может один человек, ну 2. Хули толку от того что новичек вместо того чтобы разбираться с инструментарием - и вникать в процесс разработки - будет отчеты вам делать, блядь. > Или за бугром в проект берут отдельных SQL разработчиков? За каким бугром, блядь? Даже у нас в конторе где всего 50 программистов - есть несколько отдельных хуев, что исключительно индексы теребят, да оптимизируют хранимки внутри команды разработчиков, а для отчетов, блядь, есть отдельный отдел, где отдельно обученные люди - хуячат это говно. Пиздец. Нахуй. Отчеты.
А про SQL - хуй знает кто его там скептически относит. Это, блядь, вузовская программа так-то, все хотя бы на уровне 5НФ, индексы, хранимки и т.д знают, по крайней мере я ни разу не встречал за свой 5 летний опыт работы чела, что этого бы не знал и прошел собес.
1. Почему в статических методах мы обязаны использовать только статические переменные, объявленные за пределами этого метода? (1 пик) Я так понимаю потому что для их использования надо было бы инициализировать экземпляр класса???
2. Почему мы не можем объявить статические поля прямо в статическом методе?
3. Почему если мы объявим эти динамические поля прямо в статическом методе (2 пик), то всё будет работать? Ведь мы для x1 и x2 не создали экземпляров класса. Ведь так мы можем получить доступ к динамическим полям, верно?
>>1957535 > Почему в статических методах мы обязаны использовать только статические переменные, объявленные за пределами этого метода? У тебя же самого на скрине ты используешь переменные внутри метода объявленные. Ты наверное таки про поля говоришь. > Почему мы не можем объявить статические поля прямо в статическом методе? Это я вообще не понял. Ты хочешь типа иметь переменную, которая бы, допустим, как счетчик выступала и все время жизни программы жила? > Почему если мы объявим эти динамические поля прямо в статическом методе (2 пик), то всё будет работать? Ведь мы для x1 и x2 не создали экземпляров класса. Ведь так мы можем получить доступ к динамическим полям, верно? На пике 2 ты создал переменные. Это раз. Два, присвоив им значение ты создал в этот момент экземпляры(в данном случае это структура, но не суть, ValueType - тоже классы, просто со специфичным поведением). Вот кстати на моих пиках примерно что и происходит в этот момент, только у тебя вместо каста инта к моей структуре - происходит каст литерала к int, double и т.д. Думая в таком ключе это все легче воспринимается, хоть на деле все там немного сложнее работает.
>>1957535 Смотри, когда ты объявляешь в классе статические и не статические свойства, возникает прикол. Статические свойства хранятся в памяти в одном экземпляре, под не статические - выделяется память в каждом объекте. Если ты в не статическом методе хочешь обратиться к не статическому свойству - среде выполнения все понятно, она обращается к тому свойству, которое принадлежит объекту. Если же ты в статическом методе, который не относится ни к одному объекту, хочешь обратится к не статическому свойству - возникает неопределенность, непонятно, к свойству какого именно объекта нужно обращаться, потому такой возможности нет.
А касательно статического метода - не знаю, как конкретно это на уровне CLR делается, но среда обеспечивает то, что каждый вызов метода независим, он выполняется со своим набором переменных. Это сделано для того, чтоб, например, метод мог безопасно вызываться из разных потоков (пока не меняет статические свойства класса, конечно). Объявлять статические переменные внутри метода - джаваскрипт и источник ошибок, потому такой возможности нет. Да и непонятно, куда их запихивать, если не в стек.
Думаю сменить свое первое место работы после 5 лет веслания на одном месте. Что сейчас +- спрашивают на собесдованиях на мидла десктоп? Я понимаю что тут немного десктоп разработчиков, так что хотя бы какие общие вопросы по .нет, базам данных и т. д. задают. За свою жизнь был на трех собеседованиях, софт скиллы около нуля.
>>1957480 >Блядь, отчеты в SSRS делаются в 2 клика Ты наверное писал только отчеты типа "количество проданных книг за месяц", но существуют сложные финансовые отчеты, с промежуточными итогами, группировками, огромным количеством входных параметров. Есть банковские отчеты. Километровые, иногда динамически генерируемые запросы, без углубленного знания SQL ты нахуй не нужен.
>>1957988 Достаточно посмотреть любой высер по сисярпу с пометкой "за час". Если есть знания в программировании и не совсем дебил, то этого будет достаточно.
Хм. Хм. А можно как-нибудь свой тип, который не имеет интерфейс IEnumerable и не имеет методов GetEnumerator и свойств Current и MoveNext сделать пригодным к foreach? Просто суть в чем. У меня вот своя сущность образовалась, но я его сделал во FLUENT, потому что нужно было парсить токены, ну и мне казалось прикольно выглядит: string zalupaName = i.GoToNextNotEmpty() .ThrowIf(x => x != zalupa) .GoToNextNotEmpty() .ThrowIf(x=> !x.IsName) .Current.Value;
Но вот теперь я хочу чтобы была возможность это i - засунуть внутрь foreach, при этом мне не хочется добавлять GetEnumerator и свойство MoveNext
>>1958548 Вообще то foreach он поддерживает кря-типизацию
Цитата
"Для того чтобы конструкция foreach успешно компилировалась необходимо, чтобы у объекта был метод GetEnumerator(), который вернет объект с методом MoveNext() и свойством Current, а если такого метода нет, то тогда будем искать интерфейсы IEnumerable и IEnumerable<T>"
Что не так с этим кодом? Совсем говнокод? Я просто хочу не говнокод научиться писать, но покамест не получается. Пытаюсь. Пытаюсь. А не получается. https://ideone.com/fzGkAt
>>1958905 В каком смысле зачем? Вот посмотри на List. Он может принимать любой тип в себя и ты не будешь вынужден как в случае без дженериков кастовать то что там в листе из обжекта обратно в нужный тип. Ну или допустим у тебя есть абстрактный репозиторий. Он должен поддерживать операцию вставки, удаления, обновления и получения значения. При этом ты хочешь иметь возможность получить именно ту сущность что тебе нужна. Ты делаешь IGenericRepository<T> wher T SomeEntity, затем имплементируешь GenericRepositoryBase<T> wher T SomeEntity и, потом, допустим, делаешь BookRepository : GenericRepositoryBase<Book> в котором только те методы которые нужны для работы с книгами делаешь, типа GetBooksByAuthor(string author). И все, у тебя BookRepository - поддерживает операции операцию вставки, удаления, обновления и получения значения именно книг, ты туда не засунешь ничего кроме объектов которые нельзя к книгам отнести. Без этого ты бы делал кучу одинаковых классов, которые бы были как один, либо городил огород из костылей, если нужно получать определенный тип.
Ребяты, где обычно создают перечисления в asp net core? Есть у меня страница, на ней есть выпадающий список с настройками для него вроде как лучше всего подойдет enum. Его в классе модели создать чи вынести в отдельный класс? Или использовать класс под этот список? Бля когда по книге делаешь то понятно все, а когда что то свое придумывать то пздц туплю
>>1958905 > эти темы нужны вообще? Нужны. > я о них даже не слышал нигде Ты вообще что-то писал?
Нужно чтобы упростить лично тебе жизнь. Вот посмотри на прикриплейд. Вот тебе хочется верить в то, что другой еблан в команде не поступит вот так вот как с ArrayList? Мне вот спокойнее если еще на этапе компиляции его говно отфутболят и мне не нужно будет в моем коде проверять, не запихнули ли в список, который должен быть списком пользователей - залупу.
>>1958920 > Ребяты, где обычно создают перечисления в asp net core? В базе данных. Создаешь таблицу: Heroes в ней ID, DisplayName, ... что-то еще. Отдаешь клиенту JSON с массивчиком этих Heroes. Не даешь публичного апи для изменения. Да, кажется оверхедом, только вот на деле, когда это будет в проде - проще сделать один Insert или Delete в базу, чем лезть в код проекта, делать там изменения, перекомпелировать и заливать на сервер новую версию проекта, ебаться с остановкой твоего сайта ну и т.д. Опять же, ты можешь закешировать результат и обновлять только при вставке-удалении, чтобы не теребить базу.
>>1958928 Эммм ваще не понял. Таблица без модели? Это у меня как бы настройки, в зависимости от настроек будет разное действие при заходе юзера. Или вот так как на пикриле?
>>1958932 Смотри на примере консольного приложения. Тут я вместо базы CSV использую, а вместо нормальных хендлеров - обычный словарик с лямбдами, но суть тебе должна стать ясна, если ты немного задумаешься о том как это работает. Ты можешь так вот просто отдать на клиент новые значения и т.д. При этом чутка заморочившись - можно в рантайме добавлять обработчики, сделав приватное апи с конструированием обработчика, и не ебашась с перекомпиляцией, остановкой контейнера/сервера и вообще из-за того что внезапно вы поняли что что-то не нужно, а что-то нужно в опциях на какой-то страничке. Удобно - пиздец.
P.S.Конечно, ты можешь не ебаться с этим и просто сделать у себя класс Options который отдает константные значения и затем гвоздями прибить обработку того что от клиента пришло. А можешь вообще просто enum. А можешь - вообще на клиенте опции сделать и как-то обрабатывать то что от клиента приходит, опять же прибив все гвоздями. Другое дело, что вот тебе самому-то хочется каждый раз лезть в код и правки делать, если по сути тебе нужно просто новую опцию добавить, да новый обработчик сделать? P.P.S.Конечно, если у тебя там логика работы не предполагает что когда-нибудь эти значения изменятся, то можно не париться и сделать самым простым для тебя способом.
>>1958960 Бля пиздец как сложно. Мне наверное это все не нужно просто.
По сути от enum будет зависеть результат выполнения. Ничего приходить не будет же, все значения уже известны. На каждый enum свой public IActionResult Index() { return View(); }
Я вообще думал так сделать: Вот юзер создает модель эту назовем ее Aby, пишем модель в БД. У каждой модели прописан URL, и при переходе на этот урл происходит действие, например показ данных модели либо редирект либо пустая страница. В БД значение этой модели меняться не будут.будут но только руками по этому их я хотел как тоеще хз как хранить все время в памяти для быстроты доступа так как время обработки здесь самый главный параметр, если время обработки 0.5 сек то нахуй такое надо ваще. Ну вот юзер переходит на страницу, берется модель и передается в метод который сравнивает все данные и решает что делать, показать юзеру страницу или сделать редирект. Вроде же простая задача а ебни как с самолетом(
>>1958920 В целом верно писали, что такого рода перечисление, обычно, в базе данных держат. Просто еще одна табличка с Id и значением, которая может быть связана с таблицей твоих имен на уровне БД. Но если тебе не охота, нормальных подход для енумераций - разместить их в как можно менее доступном неймспейсе, и как можно ближе к класам, где применяется. Конкретно это будет зависеть от твоей архитектуры.
Пример: если у тебя онион архитектура, и на уровне базы данных супергерои просто хранятся как инты, их реальное значение не играет нигде, кроме как на юайке для пользователя, этот enum стоит разместить где-то в районе юзер интерфейс проекта. Если ситуация обратная, и оно гдето в моделях есть - enum отправляется в домен, где все заинтересованніе доступ будут иметь.
Если у тебя MVC с одним проектом - особо не повыкаблучиваешься. Но и тут тоже вполне сыграет это правило: если оно только вместе с этой моделью используется, стоит разместить enum в одном с ней неймспейсе, можно (но не нужно) даже в одном файле. Если у тебя все модели вместе в одной папке - тоже, кинуть в ту же папку/нейспейс. Если же enum используется во многих моделях, и у тебя есть какая-то иерархия типа [Models].[Top].[Kek.cs] она может отправиться в [Models].[MyEnum.cs], или можно выделить отдельный неймспейс для этого: [Models].[Enums].[MyEnum.cs], если [Models] начинает походить на помойку.
>>1959065 Сам двигай! А в остальном - все ведь хорошо. Версии клепаются, фреймворки мутятся. Драма и живые обсуждения возникают при кризисах, а тут лишь вопросики вкатунов.
>>1959065 ASM и C ещё более мертвы судя по активности обсуждения. Хотя весь тот мировой колосс, на спине которого резвятся обезьянки, построен именно на этих языках.
>>1956943 >>1957036 дополню этого. Помимо того, что он высрал еще нужно знать: - Строение .NET - CRM/CLS/SDK etc.; - Концепцию #, как ООП языка - иерархия типов, касты, модификаторы, ключенвые слова, как разложить сахар в нативный язык; - Юнит тесты. Без них никуда; - Знать дискретку и базовые законы логики. Без них - обосрешься на первов вопросе о принадлежностях одного к другому; - Знать паттерны - какие бывают, зачем нужны; - Знать про такие вещи, как код стайл, алиасы твоей IDE, SOLID, KISS, DRY, etc. - Алгоритмы поиска и сортировки - какие бывают, зачем и как; Дальше от специфики вката: - Unity? Тригонометрию, геометрию, аэродинамику (в идеале), Unity 3D естественно - Веб? Версточку (sass, less, bootstrap/material/ant), native JS, один из популярных фреймворков - React/V/Angular (жетально и TS и JS, понимать что такое TS и зачем он нужен, полезешь в реакт - redux, ангуляр - rjsx). Так же - знание веб технологий - сокеты, порты, TCP/ID, UDP, работа браузера, REST (жетально еще SOAP). Начали спрашивать по CI/CD, Docker, Jenkins (если фулстеки) - зачем нужны, что и как. Веб инструменты - postman, tpcview, другие тулзы для работы с клиентской стороной. - Десктоп - XML, MVVM, WPF, WinForms (смотря какая глина будет). Win32 also, процедуры. Если полезешь в кросплатформ - демоны, unix, какой ни будь не попсовый релиз lunix (про убунту или дебиан лучше даже не вспоминай - arch, kali твой выбор). В этой среде я плаваю, может кто чего дополнит; - Мобилки - Xamarin.
И последнее - база в матане решает. Все глиномесы с фронта глотают престный калл, когда дело касается инженерных задач с вычислениями. Все по верхам, хочешь вкатиться - копай глубоко. Типа как реализовать собственную коллекцию хотя бы с энумератором или как написать свой мьютекс/семафор. Дерзай
>>1959195 >Метанит Соглашусь. Там довольно плотно инфа льётся. Сам через него вкатывался, хотя если шарп первый язык, то метанит не подойдёт. Всё таки базовые концепции он не особо обкашливает. Ну и если своих задач нет и не можешь придумать, то нужен задачник.
>>1959202 >хотя если шарп первый язык, то метанит не подойдёт. Ну да это я не учел. так то я был уже знаком с базовыми понятиями и мне нужен был только синтаксис. Вот треды таски асинк авейт там ппц плохо объясняются, пришлось и читать книги и видео смотреть и до то до конца не понимаю эту тему.
>>1959211 Ну стоит читать тогда. В целом нет какого-то особо выдающегося учебника для начинающих (кроме Рихтера, конечно же). Все они про одно и то же. Тут важно, чтобы процесс чтения сопровождался практикой, поиском альтернативных объяснений сложно понимаемых моментов и т.п.
>>1959283 >бери Тролсена ангельском Не стоит пытаться одновременно угнаться за двумя зайцами: и учить кодинг и учить английский. Делая так, как советует этот анон, ты будешь читать очень медленно, и многое будешь не понимать, и скорее всего дропнешь. Английский сам вынужденно придёт, когда нужно будет читать специфические вещи в доках.
>>1959310 зачем ты советуешь изучение на рузке, если все сводится к аутстафу за бугор. Нынешнее ойти - это работа на забугорного барина, а ему твое рузке нахуй не нужно. И когда тебя будут продавать галере, будут собесить только на английском и только с английскими терминами. Лайт бонус - если ты в своей первой конторе покажешь, что знаешь ангельский, то могут закрыть глаза на какие то пробелы в знаниях, т.к. тебя будет дешевле продать.
>>1959317 А программист тут при чем, лол? Программист - пишет программы. Не его работа общаться с заказчиком, не его работа писать текст, его работа, внезапно, писать программы. Все. Блядь. Я просто хуею с дуры. А если на китайского заказчика работать будешь - будешь китайский учить? А заказчика из испании, который не хочет на английском общаться? Пиздец, блядь. Дура, нахуй. Мне вот интересно даже. А если бы ты был игровым разработчиком. Ты бы советовал всем кто кодить в геймдеве - учиться рисовать и моделить. Ну а хули - игр без графики нет, ты же не текстовую РПГ делать будешь ЛОЛ. Пиздец. Блядь. Нахуй.
За 5 лет работы в ни разу не пришлось с кем-то там общаться, а весь текст переводили специально обученные люди. Я надеюсь хоть тебе на галере доплачивают за то что ты совмещаешь с работой программиста работу переводчика и менеджера, иначе ты тот еще лох.
>>1959339 >За 5 лет работы я не знаю, где ты там работаешь, но все, что ты пишешь - это бизнес. Бизнес, за бугром. И я уже писал про аутстаф, ты видимо слов таких не знаешь, или работаешь на закрытом рынке за хуй с солью >>1959331 если ты думаешь, что дев в 2к20 и 2к00 это тоже самое, то ты сильно ошибаешься. Аутисты не проходят фильтрацию, т.к. кодика писать уже недостаточно и многие реально скиловые тонут на софт скилах. Это правда нынешнего ойти. Хочешь работать и зарабатывать? Ты себе и апиху на .NET пиши, ты и фронт ковыряй, ты и CI/CD настраивай и все это тестируй. Нужно перекашлять вопросы? Заказчик онлайн - звони.
>>1959350 >Заказчик онлайн - звони. Бля как можно доверять апездалу разработчику такое? А если я еблан такой позвоню заказчику и скажу что на хую вертел его желания так как на его говне такое сделать не реально а если он все таки хочет получить нериальное то нужно все полностью переписать и это нужно делать пол года. Заказчик психанет и разорвет контракт, в итоге из за еблана такой проеб, я то работуда и не факт, я же ничего плохого не сделал, просто ввел заказчика вкурс дела потеряю а контора дохуя бабла.
>>1959351 я про аутстаф изначально и писал. Если ты на внутренний рынок работаешь, ты себя считаешь лучше аутстаф работника? Я бы на твоем месте так не горячился >>1959353 ты вообще не понимаешь, как работает эта система, раз пишешь такую хуйню. По поводу длинного языка или каких либо своих убеждений заказчику - тебя убирают с проекта, ставят нового. Пизданул слишком много или заказчик слетел - от выговора до занесения в блек листы. И я читаю вашу писанину и понимаю, в какой бездне ойти в 2к21. Срам
Cап, аноны. Есть какие-нибудь юзабельные кроссплатформенные GUI фреймворки? Видел AvaloniaUI, но знакомый говорил что еще лагает и некоторые ui элементы багованные
Почему в методах типа TryFind, TryCalculate и прочих методах, в которых результат может быть, а может и нет, принято использовать шаблон: bool TryFind(..., out T result)? В стандартной либе и во многих других кастомных либах постоянно такое вижу. Хотя более логичным выглядит шаблон типа: T? TryFind(...) Потому что в случае возврата Nullable<T> нет нужны даже в случае неудачи что-то записывать в result. В случае с double для этих целей есть NaN, но для int или кастомных структур и классов нет значения, явно указывающего на отсутствие результата. При в первом случае возможно ошибочное использование result'а даже если TryFind вернул false.
>>1958920 В твоём случае перечисления не делаются. Делаешь абстрактный класс AHero, от него уже наследуются 4 реализации конкретных героев HerCheb и т.п.
>>1959839 > T? TryFind(...) Потому что Null - может быть валидным значением в каком-либо апи. Допустим, в апи при парсинге HTML - в случае отсутствия кук - возвращаем Null. Вот и что по твоему логичнее - вернуть Null в обоих случаях, если весь запрос невалиден и если куки в запросе нет или таки ответить, что запрос валиден, но куки в нем нет и вернуть Null из в качестве результата.
>>1959839 Там правильно написали про то, что null тоже может быть результатом. Еще есть такой момент, что null`able пытаются поменьше использовать, чтоб избегать засилья if для постоянной проверки на null, и исключений, когда забудешь/что-то поменяется. А еще мне нравится красота выражения
if(peka.TryGetGreka(out var greka)){}
по сравнению с
var greka = peka.GetGreka(); if (greka is not null){}
Можете плез пояснить про ? В дженериках? Когда я пишу T?, то что это означает? Ведь T может быть как валуетипом, а значит T? == Nullable<T>, так и референс типом, когда ? просто аннотация для варнингов компилятора.
Пора бы уже дошлифовывать знания, писать какой либо пет проджект и искать работу. Денег осталось ровно на 3дня месяц, а дальше хз.
И как же ее найти то ля? И как узнать где знаний хватает а где нет? Вот к примеру из описания вакансии. >Уверенные знания С# и .NET Framework/Core Вот на сколько уверенное? Как проверить уверенное чи нет? >Навыки разработки кросс-браузерных Javascript/HTML/CSS приложений с синхронным/асинхронным клиент-серверным взаимодействием Ну такова нет, но вакансия джуна то подразумевает что он нихуя не разрабатывал же.
Корочи как определить что еще нужно доучивать? Во всех вакансиях требования разные, учить asp net core wpf html sql css js react angular и еще дохуя умный слов можно год и в итоге ничего не выучить.
>>1959938 >>1959939 >>1959966 Понятно. Хотя в целом получается некоторая путаница между null как отсутствующая ссылка для ссылочного типа и null для Nullable<>, означающее скорее отсутствие значения. Его надо было правильнее назвать Emptyable<> с соответствующим словом вместо null.
>>1960220 На самом деле большинство спецов в тех конторах, куда ты хотел бы устроиться, знают очень мало и просто среднеудачливые самозванцы, в лучшем случае пришедшие после курсов или какого-то самовката по едва осиленному мануалу типа C# за 14 часов на ютубе. Единственное, что тебя отделяет от должности - это собеседование. При этом кадровики технически не грамотны и не способны тебя отсеять по незнанию каких то языков или технологий. Технические специалисты просто не умеют собеседовать, хотя бы даже в силу отсутствия достаточного опыта. Но даже и опыт в этом деле не особо помогает. Например препод в ВУЗе в целом не дурак, знает свой предмет, имеет колоссальный опыт приёма экзаменов, но его всё равно студенты постоянно наёбывают и выдают себя за знающих. С собеседовании в конторах всё НАМНОГО хуже. Также важно понимать, что на самом деле глубокие и обширные значения в работе не нужны, потому что ты не компилятор и не ОС пишешь, а приблуду для какого-то веб-говна с привычным для данной области крайне низким качеством (всё тормозит, страница весит 200 Мб, на 100+ комментах всё зависает даже на топовом i9 и т.п.). В принципе качество современного веба и сопутствующих сервисов наглядно даёт понимание о среднем уровне современного программиста.
>>1960275 Ну бля все равно надо для себя хотя бы поставить какую либо планку после который сам себе смогу сказать типо вот все пора работу искать. Так то я ваще не хотел бы прикасается к вебу и особенно к фронтэнду, но таких вакансий большенство(
например обращаясь к базе данных это "дай мне набор данных" можно вернуть null, что будет означать "нет набора данных".
А вот если у тебя словарик какой-то, в который ты что-то кладешь что-то и null если в данный момент ничего другого положить не можешь. Можно было бы и не класть null, но само наличие значения по ключу может означать, что данный ключ обработан. Заводить тип NoValue? делать дополнительно список ключей "для них мы работали, но не клали в словарь null мы не кладем? да проще использовать bool TryGet
Необходимо перекатиться с WebForms на .Net Core (MVC, API). Стоит ли для начала быстренько просмотреть ролики, объясняющие основы ASP.NET MVC, чтобы перекат был не такой болезненный?
>>1960379 >обращаясь к базе данных это "дай мне набор данных" можно вернуть null Только в шарпе для этого зачем-то завезли ещё один специальный нулл, который System.DBNull, и который нихуя не равен обычному нуллу.
>>1960551 блин нельзя посты редактировать поясню зачем завезли
В ADO.NET например есть метод ExecuteScalar(). И он может вернуть null. И как ты отличишь null как "нет данных вообще" от "данные есть, но их значение null". Вот DBNull и позволяет их отличать.
Как думаете, вот для этой вакансии - https://joblab.ru/vac8446444.html знания типа "if else/for/switch/while" достаточно будет для вката? Завод же, хули
>>1960570 Ну вот в данном случае уж как раз подошел бы шаблон bool TryExecuteScalar(out string result) или что-то подобное. Вместо этого нагородили очередной новый не имеющий аналогов нулл и затащили его вообще во все методы, и теперь вместо одной проверки на нулл получаем две.
1 тааак. у нас есть ExecuteReader, но что если нам нужно одно значение? пусть будет метод ExecuteScalar 2 он может вернуть, что угодно...значит пусть возвращает object 3 так и null может быть значением...значит сделаем NullObject чтобы отличать И если там кто-то и предложил " а может bool TryExecute", то с ним поступили как на всем известной картинке
Была бы открытая разработка, то им бы народ ткнул сразу что IReadOnlyList очевиден и что не должен HttpClient кидать OperationCanceledException на таймаут, что метафора "запрос был отменен (внутренним механизмом)" понятна, но теряется контекст причины отмены. И что надо бы что-то вроде await?, а не ConfigureAwait(false), и вообще не нужно void, а нужен Void, чтобы в будущем не было Task и Task<T>, а был только Task<T>, и что null safety нужен сразу, а не потом...и так далее
>>1959221 Зачем после 3-5 лет Рихтер? Рихтер именно для нуля лет опыта знать нужно, чтобы собесы проходить. И актуальность вообще не решает. Когда тебя спрашиют, как что-то работает - они хотят услышать не как оно в .net 5 работает, а как в Рихтере с Троелсеном написано.
Как с т.з. чистого кода понять, когда следует использовать в классе свойства, а когда методы? Вот например, есть объект Circle. У него есть свойство Radius и приватное поле radius, через который определяются все остальные параметры. Но вот например, Diameter или Area. Тоже наверное свойства, потому что в принципе мы могли бы использовать их вместо радиуса, и ничего бы не поменялось, всё просто считалось бы обратным способом, это лишь детали реализации. Но с другой стороны, это вычисляемые поля. И в данном случае они вычисляется быстро, но для более сложных объектов, вычисления могут быть не быстрыми, а пользователь может быть введён в заблуждение, что типа раз это свойство, то оно почти сразу доступно. Но если же выбирать метод или свойство по объёму вычислений, то это уже раскрытие деталей реализации.
>>1960887 У тебя в голове какой то оверинжиниринг. Пользовательне будет введен в заблуждение, т.к. пользователю вообще не известно что у фигуры на экране есть какие то свойства. Пользователь всегда условно туп. делай ка кполучится и не думай о производительности. Скорее всего твоя программа умрет не добравшись до беты. Если не умрет до беты. то загнется в бесконечной бете с кучей переделок и вся твоя изначальная архитектура пойдет по пизде. Если случится чудо и ты доберешся до релиза, то вот тогда уже смотрик ак оно у тебя выглдит и пили тз под версию 2.0
>>1960887 Если у тебя это отдельные классы - не вижу препятствий делать как подходит для класса - через свойство. Если у тебя некая сложная иерархия и реалистичны случаи, когда ты будешь получать свою Area у наследника через интегрирование - делай методами. Если не уверен - тоже делай методами, ведь мне, как потребителю твоей библиотеки, не особо важно, буду ли я свойством получать данные, или методом. Я исхожу из того, что ты сделал как нужно, а при какой-нибудь сериализации я себе в ногу не выстрелю.
>>1960887 С точки зрения чистого кода, конкретно к твоей ситуации. У тебя есть класс Circle. У него есть 1 поле только для чтения Radius. Все. Больше ничего у него нет и менять поле никак нельзя. Затем, у тебя есть отдельный класс: DiameterCalculator который будет рассчитывать диаметр кругов. У него метод CalculateDiameter(Circle c) => c.Radius*2. Это конечно рофельный пример, тебе проще самому в нужном месте рассчитать, либо сделать метод расширения, если так уж надо. Потому у тебя может появиться абстрактный класс: AreaCalculatorBase<T> where T : IShape, с методом CalclulateArea(T shape) и от него уже CircleAreaCalculator : AreaCalculatorBase<Circle>. Суть. Круг изначально ничего не знает ни о каких там своих пощадях. Нахуя ему вообще это знать? НО, если тебе потом понадобится такой вот круг, который бы мог вычислять свою площадь - ты просто делаешь фассадик и получаешь тот функционал что тебе нужен.
Начал изучать сишарп, скачал Джозепа Албакхара "карманный справочник", как начать понимать что там написано? Я процентов на 40 только понимаю. Сам нуфаня.
аноны, я вкативальщик, как юзать трайкачи, что анон пишет в качах? например есть задание получить данные из дб, нету связи с базой, получаем исключение, как обрабатывать такое исключение?
>>1961754 Но у меня должны возвращаться данные, если я не сделаю ретурн в каче я получаю ошибку компиляции а я не могу возвратить никакие данные потому что нет связи с базой, что делать?
>>1961772 Правильно напсиать кетч так как сказано выше. если тебе этот вариант не подходит, потому что другой твой код не компилится,то это уже проблема твоего другого кода.
>>1961776 >Правильно напсиать кетч так как сказано выше. если тебе этот вариант не подходит Какой вариант дебич? если ты про это >>1961754 то ты ничего по факту не написал, то что ты ответил это пук в лужу, свой код покажи где ты, ловишь отсутствие связи в например в getUser
>>1961723 Универсальное правило: если исключения ожидаемы (что не очень хороший стиль для твоего кода, и случается, обычно, при использовании сторонних библиотек) - напиши свой трайкетч, а возвращай что-то вроде пустой колекции или модели со значением свойств по умолчанию. Если исключения не ожидаемы (к чему обычно относят потерю соединения с базой) - ничего не делай, и рассчитывай на глобальный обработчик исключений, который покажет юзеру сообщение, что что-то пошло не так, а ты по логам сможешь легко понять, что и где пошло не так.
>>1961813 Слава господи, адекват в треде, то-есть в каче что, вызвать логгер, и бросить не имплементированное исключение которое поймает глобальный обработчик?
>>1961812 Как же заебали вкатывальщики, которые сначала задают тупые вопросы, потом не понимают ответа, и вместо того, чтоб вежливо уточнить, начинают называть окружающих дебилами, хотя именно они чего-то не понимают.
>>1961820 Вообще не использовать трай-кетч. Обычно настраивают глобальное логирование, которое и пишет в лог необработанное исключение. Но если у тебя простая хуйня для обучения - я бы с глобальным логом не заморачивался - кто их читать будет. Просто знай, что такое есть, а трай-кетч в твоем случае не используй.
>>1961834 Понял, это в целом полностью перекликается с ответами со стакОверфлов где писали что исключений нужно ловить только когда ты можешь что-то с ними сделать, спасибо за разъяснение этого принципа более детально!
>>1961812 Тебе написали понятными словами понятный порядок действий. Код за тебя никто писать не будет. Если нужен код, то давай контакты. Сумму за работу уточним.
Как из готовой бд создать модели? Database First На метаните написано что нужно добавить ADO.NET Entity Data Model Но как я понял это уже устаревшая статья. Как мне такое в консольном net core 3.1 ef приложении сделать?
>>1961166 Это интересный подход, и я даже пробовал несколько раз подобным образом проектировать классы, но как-то в итоге жизнеспособно не получалось. В стандартной либе, насколько я могу судить, так не делают почему-то, и я по дефолту всё же пытаюсь подражать именно ей. Но было бы интересно увидеть небольшой живой проект, где так пишут.
>>1962392 Ну что проще - делать миллион классов типа StringStringDictionary, IntStringDictionary, GovnoJopaDictionary и переопределять там все методы, или просто в одну строчку сразу писать Dictionary<string, string>?
>>1962397 эти миллион классов все равно же надо прописывать, разве нет? А потом можно их вложить в одну коллекцию, которая принимает абстрактный класс-батю
>>1962403 Нет конечно(ну или я не понял что ты имеешь в виду). Я просто беру и пишу вообще на ровном месте var a = new Dictionary<string , int>() и могу сразу использовать потому что компилятор сам все сгенерирует.
>>1962404 попробую иначе. Допустим у меня есть дохуя однотипных классов - наследников от одного абстрактного класса. Я могу также писать на ровном месте List<Батя> и пихать в него любой из наследников, нежели создавать обобщенный класс
>>1962407 Ну класс List и есть щаблонный класс, если бы он был не шаблонным, тебе пришлось бы делать специальный BatyaList. А потом ты захочешь список из типа инт, а инт это ну вообще не батя, придется писать новый класс.
Ты можешь возразить, что абсолютно все является наследником класса object - значит надо сразу делать класс List для обжекта. И действительно, ты можешь сделать класс работающий с типом object, и он будет работать с абсолютно любым классом. Но: 1. Тебе приедтся постоянно прописывать касты. Типа ((Batya)myList[3]).PosmotretVShel(); Не удобно же. 2. Ты не можешь гарантировать, что все объекты в списке будут одного типа. Я смогу получается и строку и число в список запихать легко. Вот принимает какая-то функция на вход какой-то список, и хуй вообще знает а что за список ей нужен. Придется в описании функции писать, постоянно туда смотретт. Более того, я могу случайно что-то не то положить список и компилятор меня не предупредит, а потом хуй знает как эту ошибку в большом проекте искать.
>>1962416 >Вот принимает какая-то функция на вход какой-то список, и хуй вообще знает а что за список ей нужен. Придется в описании функции писать, постоянно туда смотретт. если я сделаю так, ты же не сможешь дать неправильный список
>>1962388 > В стандартной либе, насколько я могу судить, так не делают почему-то, Потому что изначально стандартная либа писалась впопыхах и нужно было с одной стороны быстродействие, с другой чтобы был сахарок и все фишки жавы и даже больше. Потому там статик через статик, потому там стримы кидают исключение вместо того чтобы просто давать тебе интерфейсы отдельный для чтения, отдельный для записи и вообще, с точки зрения именно что чистоты кода - там такое себе. По сути - современный кор/net5 как-бы и стараетлся наконец в архитектуру. Посмотри код кестрела, например или примеры архитектуры которые на гитхабе залиты от самих мелкомягких. Классы в пару строчек, всюду адептеры да фассады. Красота с точки зрения чистоты. Разобраться в этом коде можно за полчаса. Когда ты откроешь исходники старого дотнета - ты охуеешь от того как там хуячат. Ну, хули, деды, они могли 4к строк за полчаса выдать, потом накатить и еще столько же выдать и так 12 часов в день.
>>1962426 Совершенно верно, потому что List - и есть дженерик
Вот попробуй сделать свой класс который делает все тоже самое что и лист в качестве упражния.
Ты начнешь писать class MyList { } Так что там ему нужно? Надо чтобы можно было добавлять, получать по индексу, и удалять элеиенты, да?
Ну хорошо попробуем добавление элементво сделать class MyList { public void Add(.....) { } } Как функцию Add написать, какие у нее параметры должны быть? Она должна принимать элемент... какой? Не понятно. Обжект что ли? Тогда проблемы описанные мноц выше актуальны.
А что если сделать так...
class MyList<T> { T[] data; public void Add(T element) { //это оставляю тебе } } Вот это другое дело!
Ребята как с селениуме прокрутить страницу вниз? В частности на странице видео с ютуба хочу погружать коменты пока все не прогрузятся. Нужно прокрутить, подождать потом снова прокрутить. Да я пробовал примеры 7летней давности с SOF, не работает Хочу парсить коменты, в get не умею, а апи только 10к запросов что для меня очень мало.
>>1915581 Такая же бида, только у меня все эпичнее. Два года быдлокодил на хуюньке, порвал с тянкой, впал в депрессию. Щас вот тока оправился и решил вкатиться обратно, без работы, скоро от голода сдохну, но мне не страшно. От юнити просто блевать тянет. Делаю вывод, что чем больше обдуманно изучаешь тему разработки, тем больше хейтишь юнити-хуюти. Вот дотнет вообще балдежный, настолько в нем изящно сделана и продумана каждая деталь, просто зубришь и все, без всяких ебаных подводных камней. И чисто если рассудить, то количество говнокода должно быть в разы меньше, потому что нет уебков, котоыре вкатились ради "ХОЧУ КАК ГОДЗИМА ДЕЛАТЬ ВЕЛИКИ ИГРЫ", а по факту пилят обоссаный код, за который нужно вешать нахуй и четвертовать. В общем ебал в рот юнити, дотнет ня.
Привет, аноны. Ситуация такая, недавно начал заново изучать шарп в прошлый раз недоучил, да и было давно, так что можно считать, что учу почти с чистого листа. И у меня появился ряд вопросов, не кидайте помидорами, если совсем уж нубские. 1) Что понимается под "знанием .NET Framework/.NET Core/.NET"? Все библиотеки, что входят туда, вроде ASP.NET/ADO.NET/WPF/LINQ и т.д. или просто понимание того, как платформа функционирует, в чём её преимущества, etc. 2) Только что дочитал главу с делегатами и интерфейсами, выглядит всё довольно сложно, хотя большая часть понятна, но мне как-то контринтуитивно их применение, как заставить себя их использовать и видеть ситуации в которых они важны? 3) Насколько важно знание паттернов проектирования и рефакторинга в контексте джуниорской/стажёрской вакансии? Стоит ли это всё учить или не стоит сейчас забивать голову? 4) И наконец что конкретно понимается под "чистым" кодом? Я вот по дефолту делаю понятные имена переменных/методов, комменты добавляю на английском, разбиваю слишком длинный метод на несколько, это можно назвать "чистым кодом" хотя бы на начальном уровне?
>>1962495 1).NET Framework - старое УГ только для винды, .NET Core - сексуальное воплощение божией силы работающее везде где можно, .NET - по сути тот же неткор, просто майкрософт любят ебаться с ребрендингом. У меня лично довольно дохуя времени ушло, чтобы разобраться в сортах говна .NET. ASP.NET - сайтики, есть еще core версия. ADO.NET для бд, старое говно. WPF окошки для винды, лучше начни с WinForms. LINQ - способ обращения с коллекциями в различных извращенных формах - функционально или SQL форме. 2)Задачи появятся в контексте проекта. Придумай себе проект и трахайся с ним, читай статьи. Пока что тебе не понятно нахуя это надо, потом само поймется, это нормально. Но вообще чистые delegate используются редко на моей практике, delegate нужен лишь для существования эвентов 3)Пока ты духджун, знать скорей всего не надо. Поймешь на практике. 4)Чистый код, это когда тебя выебали во все щели на первых ревью, а затем еще и твою мать, твою собаку и кота за лишние пустые строки в коде. Тогда ты научишься делать "чистый код"
>>1962495 Надо добавить - сколько ты не старайся, но тебя выебут на первых ревью, поэтому жопу готовь, но стараться все равно нужно, чтобы хотя бы взяли на работу.
>>1962499 >>1962501 Спасибо за расписанный ответ анон. >NET Framework - старое УГ только для винды, .NET Core - сексуальное воплощение божией силы работающее везде где можно, .NET - по сути тот же неткор, просто майкрософт любят ебаться с ребрендингом. У меня лично довольно дохуя времени ушло, чтобы разобраться в сортах говна .NET. ASP.NET - сайтики, есть еще core версия. ADO.NET для бд, старое говно. WPF окошки для винды, лучше начни с WinForms. LINQ - способ обращения с коллекциями в различных извращенных формах - функционально или SQL форме. Да, это я уже понял, я вот только не понял, это всё и понимается под знанием условного .NET? Просто я в вакансиях видел одновременно владение, скажем .NET Framewrok и ADO.NET, в таком случае нелогично выходит, потому что второе входит в первое. >Задачи появятся в контексте проекта. Придумай себе проект и трахайся с ним, читай статьи. Пока что тебе не понятно нахуя это надо, потом само поймется, это нормально. Но вообще чистые delegate используются редко на моей практике, delegate нужен лишь для существования эвентов Т.е. если я напишу на тестовом реализацию чего-то условного не листом объектов, а простым массивом, то не будет слишком сильно резать глаза и быть неправильным решением? >)Чистый код, это когда тебя выебали во все щели на первых ревью, а затем еще и твою мать, твою собаку и кота за лишние пустые строки в коде. Тогда ты научишься делать "чистый код" >лишние пустые строки а разве пустой строкой не надо разграничивать блоки кода для повышения читабельности? Я вот всегда инициализацию данных отделяю строкой от остального функционала. >Надо добавить - сколько ты не старайся, но тебя выебут на первых ревью, поэтому жопу готовь, но стараться все равно нужно, чтобы хотя бы взяли на работу. Ну за счёт жопы я не боюсь, а вот чтобы взяли всё же было неплохо, ибо в условные пол-месяца/месяц/полтора если я не найду работу то кушать таки будет нечего.
Есть идеи как это воплотить можно? Прохожу курс по шарпу, выбрали 25 человек из сотни и дали проект, сказали нате, делайте все сами. Мне дали именно пикрелейтед. Чувствую себя будто только научился стрелять и тут сразу же бросили в бой. Даже не знаем с чего начать.
>>1962554 Я вообще не ебу что кодить. Класс CitizenAccount с полями name, surname, age, occupation etc? Это еще кучу реквестов хендлить из других сервисов, самому реквесты высылать, пиздец программированию так и учатся?
Конечно тебе нужен класс жителя, как ты с базой будешь работать без него? Нативный squery фигачить будешь?
Насчет сервисов я вообще не понял, из пикрила не вытекает необходимость использования каких-то сторонних сервисов, там есть только какие-то оплаты, и насколько я понимаю тебе не нужно делать именно САМУ возможность оплат, КАК МНЕ КАЖЕТСЯ, тебе нужно просто создать что-то типа записной книжки с триггерами что бы пользователю напоминать что и когда оплачивать, и что и когда он уже оплатил, как запланированные дела только с оплатами ну это ОПЯТЬ ТАКИ ПО МОЕМУ ПРЕДПОЛОЖЕНИЮ СУДЯ ИЗ КОНТЕКСТА, по одной картинке ТЗ сложно понять,
А поиск других пользователей и чат так это вообще тривиальная задача, я даже не поверю если ты мне скажешь что вы такое уже не делали на курсе,
в общем-то все задания очень тривиальные, типа get/post как джун на работе ты скорее всего 99% времени будешь должен щелкать именно такие задачи
>>1962571 Надо было сразу всю схему показать Больше всего боюсь именно за обработку входящих запросов из других сервисов Почитать бы что нибудь про это сразу целиком, гугл выдает только кусками и не понятно как это все вместе склеивать
(раньше ставил на пробу годот, потом удалил, и теперь у меня не работает nuget
То есть создаю новый проект, открываю nuget, выбираю либу, нажимаю установить - пишет вот это все снизу
Старые проекты где уже подключены библиотеки - тоже теперь не компилируются, показывает восклицательный знак на всех либах и ничего не дает с ними делать.
>>1963455 >Вангую, тебе просто нужно постирать записи об годоте в нугет файлах и еще может в проектнейм.sln (открой блокнотом). А как они туда попадают? Проект новый
>>1963457 так не должна, это вообще никак не связано, просто годот где-то насрал (в Tools -> Options -> Nuget Package Manager -> Package Source ничего нет кроме дефолтного адреса)
>>1963464 >пкм-delete. Я из гитхаба компилировал солюшины подтягивают параметры нугета для компиляции, а ты свой нугет распердолил, вот у тебя в солюшинах и сыпятся ошибки потому что он не может нормально подтянуть зависимости из-за наебнувшигося нугета, лечится заменой нугета из бекапа или переустановкой студии, ничего страшного
Сап, в впфе есть один пнгшный имедж. Можно ли как-то засунуть контент внутри самого имеджа, желательно без пердолинга с координатами? Т.е. у картинки есть рамка и я хотел бы определять контент внутри этой рамки. Например сделать контролу что-то типа Border.border = "image.png" и задать там толщину? Или как-то задать контент поверх самого имеджа?
>>1964752 Майкрософт предлагают использовать decimal тип, и видимо это рабочее решение, но ведь это непрактично. Вообще, как часто может возникнуть ошибка на почве подобной арифметики, как следует ее избегать?
>>1964782 Если не работаешь с деньгами, то можешь всю жизнь и не вспомнить про эту особенность, так как накапливаемая погрешность мала А обычные случаи, где после потери точности ты пытаешься сравнивать через == , студия (или решарпер я хз) подсветят
>>1964810 потому что оптимизированный код обязан выдавать верные результаты public double Multiply(double a, double b) => return 42d; работает быстро, но верно ли
>>1964816 Любой код должен возвращать правильные результаты, но лучше что бы код еще и работал быстро, почему народ здесь этого не понимает? Я сейчас говорю не в разрезе именно этого случай, а о парадигме коддинга сейчас в целом! Закон мура уже поламался, никаких +100% производительности из метала уже не получить, поэтому ньюфеги должны сейчас запрыгивать в лодку оптимизации, нейросетей, датаАнализа и низкоуровневого программирования! Все эти фичи стают все более востребованы именно из-за упора текущего технологического прогресса в средства обработки информации. Это раньше можно было тяп ляп и все готово, сейчас таких гонят в шею, и все эти разговоры про рабство ньюфегов которые работаю за еду от того что такие программисты уже больше никому не нужны, сейчас на рынке будут оставаться только те кто может написать уже существующий код в более производительном русле, или написать что-то что будет работать быстрее чем то что могут написать другие, неужели аноны тут этого не понимают? Мы на пороге слома парадигмы, и у ньюфегов есть преимущество над мидлами, учиться СРАЗУ ПРАВИЛЬНО лучше, чем переучиваться
>>1964833 >Любой код должен возвращать правильные результаты, но лучше что бы код еще и работал быстро, почему народ здесь этого не понимает? народ не понимает как можно заявлять такое приводя код который возвращает неправильные результаты
>>1964847 тогда сорян. сам понимаешь, двач не подписывает кто где говорит и потому по дефолту считается, что идет диалог, а каждый со стороны во избежание такого подписывается "мимо-крок/ньюфаг"
>>1964833 К слову, видел не очень интересное выступление архитектора noSQL БД на шарпе, так он там тоже за оптимизацию затирал. Но его посыл был в том, чтоб сначала оптимизировать архитектуру, потом алгоритмы всякие, а в последнюю очередь байтоебством заниматься. Так и выигрыши по производительности лучше всего получаются на единицу трудозатрат.
И в свете выше написанного, лучше пусть ньюфаги научатся нормально с коллекциями, асинхронностью и базами данных работать - это даст выхлоп куда больше, чем знание тысячи и одного способа, как сэкономить два такта и сделать код необслуживаемым.
>>1964869 >так он там тоже за оптимизацию затирал. Но его посыл был в том, чтоб сначала оптимизировать архитектуру, потом алгоритмы всякие, а в последнюю очередь байтоебством заниматься. Сейчас именно так и происходит, все началось далеко не с байтоебства, сейчас мы на стадии отказа от совместимости c x86 командами, а так же внедрение в архитектуру чипов хардверного ускорения для нейросеток, потом будут более поверхностные изменения, но то что со временем эстафета перейдет к программистам это очевидно предполагаемый исход, и будет это гораздо быстрее чем ты думаешь, а интернет вещей еще больше бустанет этот процесс >как сэкономить два такта и сделать код необслуживаемым. Не надо утрировать, тоже так умеем, медленный однопоточный код вездесущ, речь далеко не о 2 тактах
>>1964874 > сейчас мы на стадии отказа от совместимости c x86 командами, а так же внедрение в архитектуру чипов хардверного ускорения для нейросеток Во-первых, один лишь Эпл - это не "Мы". Во-вторых, поддержкой разных архитектур в CLR занимаются майки, а не "Мы". В-третьих, внедрение хардверного ускорения для почти всех дот.нет программистов будет заключаться или в подключении библиотеки, а не жонглировании байтами, или вообще ни в чем. Это явно не забота ньюфагов. Еще пара слов о умерщевлении закона мура - ну так микроэлектронщики придумали многочиплетную компоновку чипов, а программисты придумали всякие многопоточности с микросервисами. На наш век производительности хватит.
>Не надо утрировать, тоже так умеем, медленный однопоточный код вездесущ, речь далеко не о 2 тактах Мой опыт - при хорошей архитектуре и адекватных алгоритмах получить достаточно медленный однопоточный код, чтоб это стало проблемой, почти невозможно. Если нужны супер оптимизированные на уровне железа функции - лучшим выбором будет воспользоваться библиотекой, а не придумывать и поддерживать свою. Разрабатывать такую библиотеку - не забота новичка. Если в дотнете есть готовый тип для хранения денежных значений - почти всегда лучшей идеей будет им и воспользоваться, а не выдумывать велосипед.
Пишу я такие простыни, чтоб новички не тратили время на маловажные аспекты программирования, и тратили на важные.
>>1964911 винда переходит на арм, уже, линукс уже давно, интел в торопят пилит новые процы, все остальные уже давно
>В-третьих, внедрение хардверного ускорения для почти всех дот.нет программистов будет заключаться или в подключении библиотеки, а не жонглировании байтами, или вообще ни в чем. вообще не понял к чем ты это, а жонглирование байтами ты вообще сам придумал.
>Еще пара слов о умерщевлении закона мура - ну так микроэлектронщики придумали многочиплетную компоновку чипов, а программисты придумали всякие многопоточности с микросервисами. На наш век производительности хватит. многопоточность которая реально мало где задействована это один из методов оптимизации кода, но даже в таком случае в высокоуровневом программировании есть действия которые не разбиваются на многопотоки и увеличивают время ответа, такие будут переписаны на низкий уровень в первую очередь,
>Мой опыт Ты вообще читал что я писал? твой опыт не валиден в будуйщем
>Пишу я такие простыни, чтоб новички не тратили время на маловажные аспекты программирования, и тратили на важные. убираешь будущих конкурентов
>>1964940 >вообще не понял к чем ты это, а жонглирование байтами ты вообще сам придумал. Попытался подобрать синоним к байтоебству >многопоточность которая реально мало где задействована это один из методов оптимизации кода, но даже в таком случае в высокоуровневом программировании есть действия которые не разбиваются на многопотоки и увеличивают время ответа, такие будут переписаны на низкий уровень в первую очередь, Я не знаю, о какой сфере применения ты речь ведешь, но многопоточность уже давно и крепко обосновалась на десктопе, и практически абсолютная в вебе. И как я уже написал, крайне сложно придумать задачу, где нормально спроектированный код будет выполнятся слишком медленно. >Ты вообще читал что я писал? твой опыт не валиден в будуйщем Двадцать лет назад задачи сервера при обработке запроса, требующего немедленного ответа, сводились к CRUD, через 20 лет - ничего не поменялось, но сейчас то все должно немедленно затормозить с просто так? >винда переходит на арм Винда обеспечила ограниченную поддержку арма >линукс уже давно Линукс обеспечивает поддержку арма >интел в торопят пилит новые процы Задача производителей процов - пилить процы. Что ты этим сказать хотел?
И к чему это все? Майки обеспечили поддержку выполнения IL на арме, а от меня, как от разработчика, ты чего хочешь? decimal работает как на x86-64, так и на ARM.
>>1964911 >Во-первых, один лишь Эпл - это не "Мы". >буквально все уходят от x86 >бля пиздану что-то про то что задача производителейпроцы производить процы, надеюсь проканает и никто не заметит что я обосрался
>Я не знаю, о какой сфере применения ты речь ведешь, но многопоточность уже давно и крепко обосновалась на десктопе, и практически абсолютная в вебе. И как я уже написал, крайне сложно придумать задачу, где нормально спроектированный код будет выполнятся слишком медленно. Ты из тех кто думает что добавить второй тред и ебнуть Thread.Sleep(100500); это типа внедрение мультипоточности? ну да, таких вот в первую очередь и будут гнать в шею.
>Двадцать лет назад задачи сервера при обработке запроса, требующего немедленного ответа, сводились к CRUD, через 20 лет - ничего не поменялось, но сейчас то все должно немедленно затормозить с просто так? Все правильно, как я писал 20 лет назад и до недавнего времени было так, закон мура мертв, появились нейросети, появились новые технологии новые концепции и сейчас эту парадигму ждет перелом
и второй раз повторяю байтоебство это утрированный термин,а я надеюсь мы говорим о каких-то реальных вещах
>>1964911 >Мой опыт - при хорошей архитектуре и адекватных алгоритмах получить достаточно медленный однопоточный код, чтоб это стало проблемой, почти невозможно. ключевое слово "мой опыт"
>>1965057 >буквально все уходят от x86 >что я обосрался Вижу ПК на и серваки на x86, не вижу на АРМ. Технологические компании много над чем работы ведут на всякий случай, но это не значит, что оно превратится в продукт. Обосрался, похоже, ты.
>Ты из тех кто думает что добавить второй тред и ебнуть Thread.Sleep(100500); это типа внедрение мультипоточности? Ты из фантазеров? Или по номеру поста гадаешь?
>Все правильно, как я писал 20 лет назад и до недавнего времени было так, закон мура мертв А я написал, почему рост количества транзисторов на одном чипе уже не играет большой роли. >появились нейросети Зачем мне нейросеть для доступа в базу данных? Зачем мне байтоебство для работы с нейросетями на дотнете? >появились новые технологии новые концепции и сейчас эту парадигму ждет перелом Без конкретики - это пустые слова
>и второй раз повторяю байтоебство это утрированный термин,а я надеюсь мы говорим о каких-то реальных вещах Пытаться компенсировать погрешность double для применения вместо decimal для экономии тактов - это байтоебство. Отличный термин.
>>1965074 >ключевое слово "мой опыт" Так ведь это единственное, что может котироваться в данном вопросе. Ты мне можешь какую-то статистику показать, что без низкоуровневой оптимизиации через несколько лет все перестанет работать? Или у тебя есть строгое математическое доказательство?
>>1965089 я могу показать тебе реальность постоянно приходится покупать новые смарты и компы, потому что старые начинают тупо не тянуть обновленный и новый софт.
А все из за говнописателей "цензура цензура и в продакшен"
>>1965096 Так и есть. Даже пример могу привести - MS Teams. Съедает до гигабайта оперативки, умудряется тормозить на хорошем компьютерном железе, в своей консоли у него сотни ошибок отображаются. Почему так? Потому что сделано на электроне, с почти отсутствующей многопоточностью, с применением angular jquery, и не очень хорошими программистами. Как это исправить? Использованием подходящей платформы (желательно нативной), на технологиях, которые не допускают чрезмерно говнокодистого кода, и подтягивая уровень разработчиков. Как это не стоит исправлять? Низкоуровневым программированием.
>>1965137 Вообще да. Используется, в первую очередь, для разных техник инверсии контроля, в т.ч. инъекции зависимостей. Почитать о первом можно в описаниях принципов SOLID, о втором - когда ASP.NET учить будешь.
Анон, я вот о чем думаю. А была бы прикольной фишка типа объединения интерфейса. Типа вот я пишу метод int Foo(IFizz|IBuzz FizzBuzz) и получаю что объект FizzBuzz - имеет методы и свойства как IFizz так и IBuzz. У этого есть какое-то название? И вообще, что думаете об этом? Просто мне кажется - вполне логично в контексте отказа от толстых интерфейсов, с другой стороны - не всегда получается в контексте какого-то метода обойтись тонким, ну и часто не хочется делать отдельный интерейс, который просто два других в себе объединяет, тупо из-за того что трудно имя придумать, да и засирает это количество интерфейсов в коде.
>>1965156 Что такое контракт я во всей главе по интерфейсам не нашёл, даже краткого упоминания, из чего сделал вывод (возможно, что ложный), что интерфейс - способ объявления реализации функционала. Причём поскольку один класс может наследовать сразу от нескольких интерфейсов, более гибкий, чем реализация этого функционала в родительском классе. В чём я не прав?
>>1965261 Контрает это договоренность о том, что объект имплементирующий интерфейс будет иметь публичные свойства и методы с данными именами и сигнатурой. Все, блядь.
Есть некоторая проблема. Смотрите. Был некий служебный код, который, был вынесен в отдельный internal sealed класс. Таких вот классов было несколько, в зависимости от задач. Ну, приведу пример: есть некая задача: импортировать данные из апи наших партнеров, апи довольно сильно отличается от нашего, ну, соответственно - конвертация вынесена в отдельную сущность, чтобы не засорять основной класс, который еще и должен не просто импортировать, но импортировать определенным образом, попутно произведя фильтрации и прочее. Так вот, в ходе аппробации мне сказади, что без логов непонятно, на чьей стороне обосрамс, то ли я обосрался, то ли это апи партнеров серет. Решено было добавить логгирование в эти вот служебные классы. И тут вот случилось страшное: мои служебные классы - не имеют явных конструкторов, не имеют состояний и вообще могли бы быть статичны, но они не. Если я добавлю конструктор который принимает в себя логгер и зарегистрирую эти классы - 1. Придется много где менять код; 2. Сами эти классы придется довольно сильно ковырять, ведь т.к. они были служебные куча методов там - ванлайнеры. Так вот, я думал насчет того, чтобы ебануть такую вот залупу: мы при конструировании хоста тупо дергнем из него ILoggerFactory и сделаем публичное поле для чтение в Program. Но это кажется мне каким-то не самым элегантным решением, да и я не уверено насчет его надежности. А как иначе прокинуть логгер не меняя кучу кода - не представляю. Можно конечно потратить неделю на глобальный рефакторинг, только кто ж даст время на это, особенно учитывая что на словах-то задача: добавь логгирование, выглядит как: в 2 методах добавь строчку Log.Info(message).
>>1965641 Ну сделай ты публичное поле с логгером Имхо вообще логгеры не должны никуда прокидываться а получать на месте Но в asp.net core di во главе всего. Вот туда и впихнули логгеры до кучи
>>1965698 > Имхо вообще логгеры не должны никуда прокидываться а получать на месте Ну да. Я сам с этим-то согласен. Просто с другой стороны - логгеры-то разные, вот, кто-то NLog использует, мы - Serilog, кто-то еще что-то. С точки зрения DI - довольно удобно, что твой код не зависит от этого всего, с другой стороны - то что в каждом классе приходится хуячить один аргумент под логгер - не оч выглядит.
>>1965641 В принципе, можно написать interceptor (почти хрестоматийный случай для этого), который будет логировать то, что получает и возвращает твой метод. Так логер не нужно инжектировать. Но твой хелпер клас, конечно, придется регистрировать в твоем контейнере.
Поясните за атрибуты. Просто вроде кажется что штука должна-то быть полезной. Но примеры использования кастомных постоянно какие-то стремные. Нужно кучу обвяза написать, нужна рефлексия, нужен отдельный класс, который бы как-то это все обрабатывал, в который нужно прокидывать объекты к которым атрибуты применяются. Вот и мне интересно, у вас есть какие-то примеры использований, отличающиеся от: Сделаем валидатор который будет фреймворк понимать, или возьмем готовые и покажем что рефлексией достали эти метаданные?
Хочется, допустим, вот такой атрибут: [OnThrow((e)=> {Console.WriteLine(e); throw new Exception(e)})] Вроде-то все понятно с точки зрения семантики - мы хотим чтобы если в методе что-то кинулось - мы бы вывели на консоль ексепшн и кинули новый. А вот как это намутить не городя кучу кода - непонятно, потому что если доставать эти метаданные из перед вызовом метода - получится еще больше кода чем тупо написав try...catch, да и не у всех же методов мы эти атрибуты пропишем. Опять же - если мутить хрень с тем, чтобы из сборки достать все объекты с данным атрибутом - тоже как-то невесело выглядит. Короче, поясните за атрибуты. Когда свои писать и вообще надо ли оно? Меня просто заебало каждый раз try...catch когда мы с базой работаем писать, хочу вот такой вот атрибут в методах где дергаем базу или работаем с сетью.
>>1965795 Атрибут - способ добавить некие метаданные не расширяя класс/метод/свойство. В голову приходят такие варианты: Добавить для вариантов enum некий атрибут Title, и сделать метод расширения, который этот Title может извлекать. Весьма удобно, когда варианты этого перечисления, например, нужно юзеру показать. Другой вариант - вот хочешь ты навесить определенный препроцессинг на действия контроллера. Авторизацию, фильтрацию, тротлинг, логирование. Как это еще красиво реализовать? Атрибутами можно пометить такие методы для некого особенного обращения, или в эти же атрибуты встроить, как именно это обращение должно происходить. А как еще это сделать? Сделать мегаметод, куда списком во время запуска приложения передавать список подотчетных методов? Не слишком удобно и наглядно. Для таких случаев в голову приходит сделать абстрактный метод в классе Controller, в котором fluent билдером делать конфигурацию свойств контроллера и его действий, но не знаю, удобнее это будет, или нет. Но если ты сам хочешь без заморочек сделать, например, кеширование результатов определенных методов через интерсепторы, то помечать их через атрибуты и при настройке IoC контейнера эти методы находить и интерсепторы навешивать выглядит самым оптимальным вариантом. В общем - есть фича. Хочешь - пользуйся. Не хочешь - не пользуйся.
>>1964833 Просто не особо думая переписать любой код с почти любого другого языка, в т.ч. шарпа, на С - это уже от х3 до х1000+ к перформансу. Вот только код на си пишется подобно тому, как скульптор выбивает во мраморе статую. Один раз сделал, работает охуенно быстро и круто, и больше к этому не возвращайся, ибо переделать не получится, только всё заново писать, а это долго. Чем лучше код оптмизирован, тем он сложнее, и вносить изменения практически не возможно.
>>1965845 В шарпах рефлексия сейчас не супер дорогая, потому не критично. Более того, во многих случаях, как в примерах с интерсепторами и действиями контроллера , что-то с атрибутом делается лишь однажды, при запуске программы или первом обращении к контроллеру, потому это не играет роли.
Я чет не понимаю что за добро. Вот есть модель: Товар. У товара есть коллекция атрибутов вида тип атрибута, значение. У типов атрибутов есть уникальное символьно обозначение и описание на понятном языке. Примерно так это выглядит: Item{ int Id; string Name; decimal Price; ICollection<Attribute> Attributes; }
Attribute{ int Id; AType Type; string value; } AType{ int id; string Name; }
Так вот, если я EF'ом просто делаю Include.ThenInclude у товара, то на то чтобы вытащить 1 товар по ID у которого 100 атрибутов уходит почти 10 секунд. Это конечно в дебаге и в релизе побыстрее, но все равно же пиздец. Может быть есть какой-то способ быстрее это делать?
>>1966014 Вообще, можно профайлером или в дебаге посмотреть, что за запрос генерирует EF чтоб поржать. Вангую, там сотни селектов.
А по твоему вопросу: можно эти данные повытягивать через join, а потом уже полученную коллекцию преобразовать в нужную тебе структуру данных через всякие GroupBy.
>>1966040 Не совсем понял. Ты предлагаешь писать нативный запрос? Я бы мог, только вот не уверен что в команде поймут такое вот решение. Просто я бывший плюсовик и привык к тому что перформанс нужно максимальный стараться получить, изначально мне при переходе на шарп сказали не париться, дескать тут более высокий уровень, но вот в такие моменты я просто не понимаю - это действительно так и должно быть, или я что-то не то делаю.
>>1966055 Нет, я предлагаю просто написать запрос с join`нами на LINQ, который тебе вернет коллекцию из сотни рядков Attribute + AType (можно вместе с Item, а можно и отдельным запросом, если поиск по Id) - будет полный аналог запроса на SQL. А потом уже преобразуй коллекцию в свой объект Item с атрибутами.
Но в целом, с LINQ довольно часто такие приколы бывают, если не хеллоуворды пишешь, и в моей команде давно пришли к правилу, что если LINQ генерит фигню, стоит просто делать запрос на SQL. Я бы рекомендовал этот вопрос поднять на митинге.
Получается, что индексаторы - это способ рассмотреть объект как массив чего-то, и используем мы их, когда внутри этого объекта есть массив с данными, так?
>>1966784 Я не до конца понял о чем именно ты спрашиваешь, но это должно ответить на твой вопрос:
В отличие от классов в пространстве имен System.Collections, Array имеет фиксированную емкость. Чтобы увеличить емкость, необходимо создать новый объект Array с требуемой емкостью, скопировать элементы из старого объекта Array в новый, а затем удалить старый Array.
Размер массива ограничен максимальным количеством элементов — 4 миллиарда, а также максимальным индексом 0X7FEFFFFF в любом заданном измерении (0X7FFFFFC7 для массивов байтов и однобайтовых структур).
.NET framework: По умолчанию максимальный размер Array составляет 2 гигабайта (ГБ). В 64-разрядной среде можно избежать ограничения на размер, установив значение атрибута enabled элемента конфигурации gcAllowVeryLargeObjects равным true в среде выполнения.
>>1966794 То есть: если тебе хочется узнать количество элементов - это свойство Length. Если ты хочешь узнать, под какое количество элементов в памяти выделено места - под то, сколько в Length задано. Если тебя ограничения размера массива интересуют - читай msdn, оттуда цитата.
>>1966796 Спасибо за ответ. А у обычного массива никак не могут быть разные Length и Capacity? Я пытаюсь сделать так, но массив нулями сам заполняется, в итоге и Length и Capacity одинаковые оказываются
Всем привет! Столкнулся с такой херней - получить данные из открытой программы. Вот пишу я текст в блокнот - получаю оттуда текст. Нажимаю на кнопку "файл" в блокноте - выбранный пункт меню отображается в моей программе. Вопрос, а как это ваще делается? Как слепой котенок тыкаюсь, не могу понять. куда и как это делать. Надо лезть в потоки?
>>1966848 По мне, выглядит как ужасная дыра в безопасности, если бы такое можно было с нихуя делать. Представь - открываешь прогу с паролями, и они все утекают через шарвер какой-то. Если условный блокнот сам не предоставляет такую инфу - вангую, ты без обходных путей на грани вирусописательства такое не сделаешь.
>>1966907 блин, ну не могли же мне в тестовое вручить такую-то хуету :\ Мне надо озвучить выбранные пункты меню в блокноте и вести лог в формочке с выбранными пунктами. Пока единственная зацепка - ui automation фреймворк, но от всего этого пока гавной воняет. В первую очередь от меня :с
Только не бросайтесь ссаными тряпками. Могу ли я как то заинитить этот base с конструктора, что-то типа как на строке с ошибкой внизу? Я хочу чтобы ef контекст создался не с sqliteconnection, а допустим MySql/MsSql с настройками заданными от пользователя.
>>1967166 Я недопонял, а в чем проблема? Замени sqliteconnection на нужный тебе конекшен (Microsoft.Data.SqlClient или MySql.Data.MySqlClient) в : base(...) и убери код с ошибкой.
>>1967197 Ты не понял. Я в рантайме программно хочу коннект либо sqlite либо mysql, чтобы в зависимости от того что передали в конструктор создавался коннект либо к sqlite либо mysql.
>>1967223 Тогда вместо ручного создания конекшена, передавай просто нужный конекшен нейм и используй его в конструкторе DbContext(String). В Web.config, указывая конекшен стринги, можно указывать и названия провайдера, т.е. класс твоего конекшена (майсиквел, сиквелСервер и т.д.). Пример тут есть: https://blog.elmah.io/the-ultimate-guide-to-connection-strings-in-web-config/
>>1967342 > От меня ускользает, почему ты фреймворк вместо кора используешь Wpf, .net4.0. > Тогда вместо ручного создания конекшена, передавай просто нужный конекшен нейм и используй его в конструкторе DbContext(String). А я смогу в прописаном конекшене поменять айпи/порт?
Делю асинхронную обёртку вокруг SerialPort, не слишком жирно поднимать задачу для чтения одного байта? т.е. исходный метод int ReadByte() превратится в
Смотри на пальцах: Тебе нужен кусок памяти под 10 элементов. Ты просишь у ОС памяти: ДАЙ МНЕ ПОЖАЛУЙСТА 10 размер твоего типа данных. ОС выдает тебе этот кусок памяти. При этом, в зависимости от того какие флаги ты выставил - этот кусок памяти может быть занулен или с мусором. Так вот, фреймворк за тебя занулил этот кусок памяти и заполнил значениями по-умолчанию, когда ты создал массив. Дальше. Теперь ты хочешь пользоваться этим куском памяти иначе. Ты не хочешь думать о нем как о целом куске памяти, ты хочешь представить его как, допустим, портсигар. Он иожет быть пустым, но пространство портсигара будет неизменным - пока ты не решишь купить побольше. Так вот. Решив сделать динамический массив - ты, считай, создаешь такой вот портсигар. В нем Length - текущее количество сигарет. Capacity - вместимость. Когда ты добавляешь сигарету - ты увеличиваешь Length, достаешь сигарету удаляя ее из портсигара - Length уменьшаешь. Если ты хочешь, чтобы портсигар автоматом увеличивался достигнув предела вместимости - ты тихонько, под капотом - достаешь все сигареты из старого и кладешь их в новый. Так вот, а при чем тут массив. А при том, что в шарпах - массив - считай вот такой вот кусок памяти просто. Ты не можешь его просто так увеличить и потому ему и не нужна вместимость не создав новый массив. Таким образом, если тебе так хочется авторасширяемый массив - ты делаешь что-то в духе:
public List<T> { private const int defaultCapacity = 4; private T[] _items = new T[defaultCapacity]; private int _lastElementIdex = 0;
public int Count => _lastElementIdex; public int Capacity => _items.Length;
public void Add(T item) { if(++lastElementIdex >= _items.Length){ var temp = new T[_items.Length 2]; Array.Copy(_items, temp, _items.Length); _items = temp; } _items[lastElementIdex] = item; }
public T this[int index] {get { if(index <= _lastElementIndex) { return _items[index]; } throw new IndexOutOfRangeException(); }} }
ну и т.д. В зависимости чему свою структуру данных ты научить хочешь и как хочешь чтобы она себя вела.
>>1967485 Простыми способами - нет. Если тебе нужно и айпи с портом заменять - тогда подготовь методы, чтоб они тебе создавали и возвращали sqlConnection нужного типа с нужными параметрами, и передавай его в конструктор своего контекста.
Аноны, плиз. Вкатываюсь в шарп. Поставил Rider. Нихуя не понимаю, как в этой божественной среде быстро сделать какие-то вещи, а не писать каждый стандартный json и xml конфиг руками с нуля. Вот создал я новый проект. Эта шняга всобачила мне sqlite. Как мне удалить все ссылки на него одним кликом? Мне нужен sql server. Я создал новый data source, проверил соединение, отлично, вижу базу, но блядь, мне её не видеть надо, а в проект добавить! Мне руками писать в appsettings.json? Руками писать connection string? В 2021 году, в инструменте, за который просят двести баксов в год?!
Хм. В комманде никто не пишет тесты. Я видел в репозиториях местных, что когда-то кто-то таки писал, но он уволился 10 лет назад и больше никаких намеков на тесты. Стоит ли начинать самому писать тесты самому, если никто не пишет? И если да - то как их впиндерить в общий проект у которого в структуре нет отдельного места под тесты, а разделение ответсвенности за каждый кусочек проекта строится на: вот у тебя папочка в общем солюшене, в ней проект - хуярь.
>>1967892 >Стоит ли начинать самому писать тесты самому, если никто не пишет? Если есть проблемы с качеством кода/переоткрытием баг, то подумай над причинами, что в процессах и архитектуре не так. Если уверен, что с ними все ок, и дело в сложности бизнес логики или еще чем, от тебя не зависящем - стоит писать. Если нет - лишняя работа. >структуре нет отдельного места под тесты Сделай >вот у тебя папочка в общем солюшене, в ней проект - хуярь. Сделай рядом папочку projectname.Tests. Не думаю, что кто-то возмутится сильно.
>>1967901 Ну, у меня просто из-за того что нет тестов оч большая боязнь что-то менять, из-за этого каждая новая фитча - это дополнительное время на то чтобы убедитсья что я ничего не сломал. Это наверное просто психологическое на самом деле и вызвано временами из вуза, когда: написал строчку - скомпилировал, проверил что работает - написал следущую; но ничего поделать не могу с собой.
Здравствуйте, господа. Продублирую свой вопрос из соседней дсоки. Я к вам с вопросом. До этого никогда не писал на низкоуровневых библиотеках, Я C# разработчик. Извините, если вопрос не совсем по адресу. Я ищу решение следующей проблемы. Опишу подробнее. У меня есть плата raspberry Pi с установленным линуксом, ещё основная проблема это Arm64. И мне нужно написать небольшую прогу, которая 1. пару раз в минуту обращается наружу хттп гет запросами, откуда получает json, парсит, и получает необходимые обьекты. И из них В общем, строки для последующей работы. 2. Полученные строки необходимо плавно(линейная интерполяция) рисовать и двигать по экрану, тем самым создавая такой красивый заанимированный графический интерфейс бегущих строк Размер окна, в котором это нужно рисовать маленький(200х300).
Я до этого поста пробовал сделать на wpF+avalonia(кроссплатформенный wpF), оно работает, но бывают частые лаги. Я замерил интервалы отрисовки, когда вызывался Invalid окна, 90% кадров рисовались отлично с задержкой 15-16миллисекунд, а 10% кадров с задержкой 30 миллисекунд. В результате этих лагов выглядит криво. Как я гуглил, у многих такая же проблема, и разрабы avalonia пока не исправляют.
Мне посоветовали посмотреть в сторону SDL2, и я нашел нугет пакет для .Net core, но опыта в нём, соответственно, ноль. Опыта работы с линуксом околонуля.
Я бы написал все прекрасно на юнити и не парился по всему этому поводу, но в юнити нельзя собрать для линукс arm64.
Собственно тут я вижу два стула. 1. Подскажите, пожалуйста, какими средствами это лучше и быстрее сделать. 2. Если у кого-то есть опыт в этом деле и время быстро с этим помочь(именно линукс и именно arm64), то может договоримся за оплату.
В заявке одним из обязанностей указано первичное тестирование. Что оно из себя представляет? Правильно я понимаю, что на меня просто хотят работу тестера ещё свесить, так?
>>1968059 У тебя фронт на малинке десктопный под линем? Поставь на неё ОС вместо прошивки для роутеров, если уж используешь как ОС (иначе делай фронт в виде веб-сайта).
thread.sleep(10000) то Физически ядро ДЕЙСТИТЕЛЬНО будет заниматься ничего не деланием, или мы делаем слип только для виртуального потока а на физическом ядре котором выполнялся виртуальный поток начнется выполнятся другой поток?
Спустя два года РАБоты решил почитать первую книжку по кроссплатформенной разработке в .net и там везде в примерах для консольных приложений используется импорт namespace как using static System.Console Книжка вроде как не говно и советуется для ньюфагов, но на msdn я такого не видел никогда
Это их экономия на Console при каждом выводе, или есть рекомендация часто используемые пространства имен по возможности импортировать статическими?
>>1969134 Разницы в IL коде не будет при вызове Console.ReadLine() и ReadLine() с директивой using static System.Console, это просто для удобства делается.
>>1969624 Почему нельзя создавать новый поток в не статическом классе? Разве поток, который был создан в этом классе не будет уничтожен после уничтожения класса или после того как прекратит свою работу? ОН ЖЕ НЕ БУДЕТ СУЩЕСТВАОВАТЬ ВЕЧНО ПОСЛЕ ТОГО КАК БЫЛ СОЗДАН ВПЕРВЫЕ?
.Net Core 5.0 ASP.NET приложение. Два конфиг файла: appsettings.json & appsettings.Development.json В обоих определена переменная Foo:Bar:Foobar На Винде и Linux ведут себя по-разному
Startup.ctor
var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddJsonFile($"appsettings.{environment}.json", optional: true, reloadOnChange: true) .AddEnvironmentVariables() .AddCommandLine(Environment.GetCommandLineArgs());
Configuration = builder.Build(); Console.WriteLine("Configuration.Foo.Bar.Foobar = {0}", Configuration["Foo:Bar:Foobar"]); // На обоих платформах пишет значение из appsettings.Development.json ============================================== В транзиентном сервисе в AppConfig.ctor Console.WriteLine("Appconfig.ctor: appConfig.Foo.Bar.Foobar = {0}", configuration["Foo:Bar:Foobar"]);
На винде пишет из Development, на Линухе — из основного Для переменной FBar из корня конфига — тоже самое. То есть конфигурация из appsettings.Development.json, первое что приходит в голову: файла appsettings.Development.json нет, но в ctor всё пишется правильно на обеих платформах + optional = false Второе что приходит в голову: на Линухе DI-контейнер игнорирует вставку Configuration. Но на видне не игнорирует. Это же критикал, его бы поправили сразу же ============================================== В чём прикол?
>Почему нельзя создавать новый поток в не статическом классе? Потоки можно создавать где угодно.
>Разве поток, который был создан в этом классе не будет уничтожен после уничтожения класса или после того как прекратит свою работу? ОН ЖЕ НЕ БУДЕТ СУЩЕСТВАОВАТЬ ВЕЧНО ПОСЛЕ ТОГО КАК БЫЛ СОЗДАН ВПЕРВЫЕ? Можешь рассматривать каждый поток как еще одну точку входа в приложение. У любой программы есть public static Main() она живет пока исполняется она или порожденный ею поток. Когда создается новый поток ты в него передаешь какой-то метод, который и будет уже его точкой входа.
Хм. Хм. Я вот знаю что писать так public async Task Foo() => await Bar(); неправильно и вредно для перформанса, но блин, ничего не могу с собой поделать, автоматом это делаю. Можно ли как-то студию настроить, чтобы она это не компилировала и указывала на то что тут нужно без await писать?
Ку, господа. Возникла такая ситуация, нужно сделать так, чтоб переменная MaxMana динамически обновлялась, когда меняется MagicStrength, возможно ли это как-то элегантно сделать или только обновлять везде MaxMana, где как-то меняется переменная MagicStrength?
>>1970097 Потому что SerialPort написан дебилами-лгбт-зумеркками-чурбанами которые понятия не имеют как работает ком порт в апи вынды (его как раз писали белые олды и он работает без проблем). SerialPort.BaseStream в асинхронном апи не учитывает таймауты, соответственно бесполезен т.к. зависнет на первом же пропавшем байте.
Не будет работать, ReadAsync у стрима игнорит токен отмены после запуска чтения. Даже если бы он корректно работал, писать эту обвязку еще больше гемора чем просто в таске запустить синхронное чтение.
>>1970693 Ты хочешь что-то типа StreamReader.Peek() ? Если да, то по факту у себя в недрах он использует просто Read() с продвижением позиции курсора в потоке, а потом сетит Position на предыдущую. Такое на этой штуке: >>1970657 можно без проблем сделать.
>>1970717 Нужна удобная работа с ком-портами (это не совсем стрим, поэтому peek не катит), поскольку там всякие временные задержки то удобно поллить по байту или пачками и выгребать что приходит, а если секунд 5 ничего не пришло закрывать соединение.
двачан, какой из linq запросов гарантированно вернет null, если объектов в коллекции нет? хочу что-нибудь типа first() а то мне в зависимости от того есть он или нет в коллекции нужно либо false вернуть из метода, либо дальше обрабатывать объект гугление чет не помогло
>>1970761 Ты блядь по человечески вопрос задавай, нихуя ж неясно. Если ты спрашиваешь про то есть ли объекты в коллекции - то Any() Если ты хочешь пройтись по коллекции и если встретишь элемент вернуть, а если не встретишь - нулл, то FirstOrDefault. Из названия понятно, что в случае структурок там не null будет. Если тебе прям гарантированно NULL нужен - запаковываешь все перед тем FirstOrDefault. Только я хз нахуя тебе гарантированный null. Ты можешь либо FirstOrDefault либо Where(predicate).Count() Where(predicate).Count() почему-то с линкумагией быстрее работает чем просто Count(predicate). и потом если там есть твой объект - достать его. А можно быть человеком и ручками цикл написать. Работать будет быстрее чем линку, памяти не будет выделяться и вообще заебись ручками циклы для таких вот вещей писать.
Хочу в качестве учебного проекта намутить консольный текстовый редактор. И, внезапно, я осознал, что не представляю как делать мне ловить-то их консоли всякие комбинации клавишь. Ну, допустим, я хочу сделать Ctlr+X - вырезать. Я нажимаю Ctrl+X и програма завершается. Или я хочу Alt+стрелка вверх - сдвинуть строку вверх. С точки зрения кода самой операции - я все понимаю: у меня буффер, я просто свапаю в нем строчки местами, а вот как мне перехватить-то это нажатие Alt+стрелка вверх? Я чет не представляю. Я даже стал думать что на шарпе это не опускаясь на уровень Winapi и не получится, но тогда уже проще взять С++. Может быть есть у вас идеи?
Сап аноны, кто ни будь работал с FastMapper? https://github.com/FastMapper/FastMapper - ссыль на гит. Если да, то как создать конфиг к нему? TypeAdapterConfig<TSrc, TDest>().NewConfig() - а куда его лепить то? У меня есть куча сущностей, которые нужно паровать для мапинга - А может мапится только в B, но никак не наоборот и т.д. Или же при маппинге поле должно выпадать. Но я никак не пойму, как этот конфиг запихнуть в маппер. Уже бы давно это все слепил автомаппером, но бенчи показывают, что нужно использовать именно fastmapper. С меня как обычно.
Вот блять не могу придумать как сделать часть с пикрил1. Можно нагородить хуеты с проверками и чекалками всего и вся, собственно что я и делал но с каждой такой проверкой выходило еще куча проверок. Не могу врубится подскажите мб как это сделать короче и лаконичнее.
Я думаю создавать обьект у которого есть поле Level =1; и при ответе на вопрос добавлять +1, вернутся к указаному вопросу устанавливать значение поля и там уже в свитче переходить к вопросу, но тогда надо чекать заполнены ли поля вопросов которые были до . А заполнить анкету заново установить значения снова на 1 но тогда еще нужно сбрасывать стальные значения в обьекте. Наверняка есть какой то способ что бы без вот этих костылей сделать, я просто сам вижу что эта хуйня на постном масле получается которую даже я не разберу через неделю.
Что не так с этим куском кода? var bitmap = new RenderTargetBitmap((int)visual.ActualWidth, (int)visual.ActualHeight, 96, 96, PixelFormats.Pbgra32); bitmap.Render(visual); var frame = BitmapFrame.Create(bitmap); encoder.Frames.Add(frame); using (var stream = System.IO.File.Create(path)) encoder.Save(stream); Я сохраняю картиночки один раз и всё нормально, снова хочу сохранить и вылазит ошибка, что файл уже используется каким-то потоком, но у меня тут ведь поток закрывается. В чём дело-то?
>>1971242 Что-то не вижу проблемы так сходу. Могу накидать идей: 1. А в простое ли место сохраняешь? Может эту директорию какой-нибудь яндекс-диск сразу синхронизировать начинает? Посмотри ProcessExplorer-ом, какой процесс держит хэндл на твой созданный файл 2. Проверь, не существует ли уже файл с таким именем 3. Можно попробовать заменить File.Create() на File.Open(path, FileMode.OpenOrCreate) 4. Из любопытства: попробуй сохранить не в файловый, а в MemoryStream, и потом уже его отдельно в файл записать
>>1971183 Лол, да. Более того, с джуна требуют сегодня больше, чем с мидла. Я пол сотни собеседований на Джуна прошел, и нихуя. В итоге устроился мидлом с четвертой попытки, напиздев про полтора года опыта. Причем если на мидла спрашиваю хоть немного по делу, то на Джуна - какую-то хтоническую хуйню из глубин Рихтера и верчения радужных деревьев.
Сап, шарпаны. Может кто подскажет. Сам я мертвый в шарпе да и вообще я не программист особо но появилась задача, которую мне проще всего именно на нем решать (остальные варики там вообще - делфи или VB). нужно запилить библиотеку которая через COM взаимодействует с программным пакетом. У меня практически полное непонимание как именно работает COM, но это, вроде как, ладно. У библиотеки есть метод, который и запускается целевым пакетом, и передает в метод абстракцию своей рабочей среды (все нужные для этого типы предоставляются в виде .dll), В которой я могу уже что-то дергать из доступных инструментов, особо не парясь при чем там вообще COM и как он работает. Но есть такая проблема: часть методов возвращают тип dynamic, и в описании к API сказано: если должен быть возвращен единственный объект, то возвращается именно объект (пусть IModel), а если нужно вернуть несколько, то возвращается коллекция. Заранее понять, что вернется, невозможно. Из-за этого я не могу с этим dynamic обращаться каким-то одним кодом: еслим туда залетает коллекция, то по ней надо сначала итерироваться, просто дергнуть что-то типа IModel.Feature - просто все падает в рантайме. А если объект один - то написать для него foreach(IModel mod in incomeObj) - то же самое. Никакие проверки типов с помощью incomeObj is Collection<IModel> - не приводят к результату, я уже все туда впихнул - и контейнеры коллекций API, и стандартные из шарпа. Хз, наверное потому что нигде не объявлено явно что то что приезжает имеет вообще какой-то тип, а утиная проверка по принципу совпадения имен методов - это не про шарп и вообще не имеет ничего общего с типобезопасностью. Короче, в итоге я написал такой дебилизм, что сначала пытаемся итерироваться, но заворачивая это в try{}, если там возникает эксепшен то я уже точно знаю, что там IModel, и в блоке catch могу с ним работать. Такой вот каличный способ ветвления. Это работает. Собственно, в чем вопрос - как это можно нормально сделать? И можно ли вообще понять какой тип у объекта dynamic? Если б это была Джава, я мог бы воспользоваться reflection, но в шарпе я 3 дня всего работаю, такие лоу-лвл вещи будут сложноваты. Сори за то что насрал вам тут стену текста, просто попытался доходчиво донести в чем проблема.
>>1971426 >Проверь, не существует ли уже файл с таким именем Блэт, существует, я их не удаляю. Вот нельзя что ли поконкретнее ошибку писать, а не про потоки мне затирать
Вопрос по нейросетям, когда-то был такой стартап который сейчас прибрали к рукам фсбшники файнд фейс, так вот, раньше они чисто на энтузиазме работали, но откуда у них доступ к пикчам из вк? у вк есть какая-то апи с помощью которой можно скачать все авы на сервисе?
>>1971535 нет, что бы надрочить нейросеть нужно иметь у себя базу фоток связанную с инфой о человеке, я не совсем понимаю как можно надрочить нейросетку использую краулер кроме как то-то что бы загрузить ВСЮ ИНФУ СЕБЕ
>>1971541 >>1971529 Спасибо, но это к сожалению не срабатывает. Так ни разу и не смог получить true из любых проверок, ни сравнивая с API-коллекцией, ни с ICollection шарпа, и при создании типа через var, и непосредственно проверяя, как во втором посте. Хотя точно известно что там коллекция и у нее можно получить итерирование
>>1971541 >>1971529 да блин, даже если проверять на то, является ли тип Object-ом, и то оно вываливается. Хотя куда уж выше то тип брать. Даже VSтудия мне говорит, что я дебил так и есть в принципе, и приведение к Object во всех случаях избыточное
>>1971627 Неа. Причем, конкретно эта строчка вызывает краш. Как собственно и любые попытки прикастить к чему-то этот объект, кроме как к Object. То что я выше написал, что даже попытка проверки на обжект вызывает false, похоже, хрень: просто программа крашится раньше, и до этого тупо не доходило (дебажить тут нельзя, все приходится выяснять через месседжи которые кидает прога, для которой либа)
>>1971639 С чего ради? Название класса соответствует тому, что он абстрагирует, и в случае объектной парадигмы языка, ты абстрагируешь (любым классом) - объект, а не саму концепцию класса. Хз как в дот-нете, но в Java для объектного описания самой идеи класса существует свой класс, который называется (сурпрайз мазафака) - Class. Через него осуществляется доступ к классу, породившему объект (в рамках рефлексии) - у любого объекта можно получить объект его класса через поле .class, и потом делать с ним всякие прикольные вещи. И в этом все кристально логично. У тебя малость сбито понимание что и чем является.
Аноны, на связи опять нуб с дохуялетним стажем программирования на мёртвых языках, охуевающий от объёма информации в эхотаге. Кто использовал linq2db? У меня совершенно нубские вопросы, на SO боюсь идти, выебут. 1. В чём разница linq2db и linq2db EF Core? Зачем нужен второй? Нужен ли он мне? 2. Можно ли в linq2db приготовить запрос, а потом его исполнить с параметрами? 3. Какого типа будет этот запрос? Если я хочу его в функцию или в класс передать? Я НИХУЯ не могу понять. Везде в примерах ебучий var...
Боже, как всё просто было 20 лет назад. Вкурил "дельфи за 21 день", или круче того, пыхпых для чайников, и пошёл ебашить. А тут - бляя...
>>1971153 Порог входа, например, во врача (со специализацией) - это 8-10+ лет учёбы, потом ещё 5-10 лет обязательной работы за 5-8к на селе с бабками, и только потом ты сможешь устроиться в норм клинику на зп js-джуна. Вкат в джуна - это взять разом 4 недели отпуска, положенных каждому россиянину в год, и просто усердно прочитать 1-2 книжки и попрактиковаться в IDE с задачками. Это уровень усилий как для подготовки к сдаче на водительские права. Конечно, в мейл или сбер конкурс большой и 40 летнего пенсионера-росгвардейца, вкатившегося в питон, туда скорее всего не возьмут. Но в шарагу с 1с или конвейером интернет-магазинов - добро пожаловать. Почему ты не смог сесть и нормально подготовиться к собесу? Причина №1. Ты неусидчивый, неорганизованный, ты просто не можешь ни на чем сосредоточиться, ты не можешь заставить сам себя что-то делать. Ты обречен на неудачу в любом начинании. Причина №2. Ты привык по жизни всегда делать всё наотъебись, всё, что ты делаешь, ты делаешь как говно. Авось прокатит. Таких людей не мало и они опасны, особенно в ответственных профессиях. Они хуже умышленных вредителей. Но в программирование они всё же зачастую просачиваются. Причина №3. Ты просто тупой. На самом деле нет. Умные программисты нужны очень редко
>>1951826 > Сможет ли он самостоятельно написать парсер для составной формулы Лол что это за хуйня сейчас была? Это второй, блядь, курс МухГУ. Писал на си и ничего. И компиляторы писали, и субд разрабатывали порстенькие.
Я это просто так к слову вспомнил, да, порог входа на самом деле действительно низкий, учитывая с какими кадрами я работаю и даже если у меня встают волосы дыбом, они - нужны, потому что работы много и тех у кого есть образование на нее кидать как-то не с руки. Другое дело, что то про что ты там говоришь - это не какие-то охуенные знания, которые хуй где найдешь - это программа среднего такого провинциального вуза в айтишной кафедрой. Любой студентик это делает: пишет парсеры, лексические анализаторы, компиляторы, пишет субд, пусть и простые относительно тех что на рынке, крутит деревья и т.д. Просто нужно отделять программиста от айти-макаки, вот и все.
>>1972358 >Это второй, блядь, курс МухГУ Ты этому учился в техническом ВУЗе на программиста, где преподы на лекциях и семинарах тебе про это рассказывали. А у меня за плечами было только 2 года учебы в платной гум. шараге (для отсрочки) с последующим отчислением, когда получил реальную негодность и не захотел, чтобы мамка платила за эту ненужную хуйню, и пошел работать. И когда я уже одной ногой вкатившись сталкивался с подобными задачами типа парсинга с вложенностью, это было для меня сложно, но зато когда я такое решал, то до сих пор помню, что чувствовал себя молодцом. А в целом вообще, интересно, какой процент людей, работающих программистами, могут написать алгоритм для ханойской башни, для быстрой сортировки без рекурсии и без её имитации через собственную реализацию стека, для обхода лабиринта, муравьиный алгоритм для задачи коммивояжёра и т.п. Без ограничения по времени, но и без гугла и подсказок.
>>1970981 >Как в сишарп реализованы круды через ORM Довольно просто и удобно. >Как в сишарп реализованы круды через нативные SQL запросы Довольно сложно и неудобно.
Под переменной ты поле подразумеваешь? Наверное. ты имел ввиду нахуя вообще проперти нужны Ради инкапсуляции, сначала, возможно, проперти у тебя ничем не будут отличаться от полей Но потом тебе могут понадобится какие-то манипуляции проводить с этими полями перед их получением с помощью get или проставлением с помощью set. Вот тогда они и пригодятся.
> предопределенные get, set А так переопределением ты в производном классе можешь возвращать/проставлять значение по-другому чем это было в родительском классе. Такие проперти должны быть помечены как virtaul чтобы их переопределить с помощью override.
>>1972516 В том что ты можешь логику дополнительную в них вставить. Допустим твое приватное поле хранит температуру в кельвинах, а ты пользователю хочешь отдавать в цельсиях и давать задавать в цельсиях. Или ты хочешь чтобы не выставляли null или еще что-то. Если у тебя тупо Get-Set - можно действительно обойтись полем открытым, просто это дурной тон, потому что семантически поля должны хранить внутреннее состояние, а свойства - то что ты хочешь дать пользователю класса трогать.
>>1972531 >просто это дурной тон ООП головного мозга - это плохо. Если ты пишешь тип, в котором гарантированно поле - это просто поле, как есть, и никакой доп. логики там не может быть по определению, то это поле надо делать публичным полем, как это делают в стандартной либе. Принцип KISS превыше всего. В целом, если ты пишешь структуру, а не класс, то скорее всего поле должно быть открытым. Кроме того, если ты пишешь ридонли структуру (а обычно именно так и следует делать), то гет на ридонли поле - это уже совсем кукухой надо поехать.
>>1972531 >>1972530 Я если, что под предопределенными имел ввиду вот эту конструкцию int number (get; set;). Просто визуально это все потом выглядит как будто ты просто к переменной обращаешься, так что мне не было понятно зачем такая проперти вообще нужна. Но если я понял по твоему сообщению > А так переопределением ты в производном классе можешь возвращать/проставлять значение по-другому чем это было в родительском классе. Это типа заглушка, чтобы если потом понадобится какая-то проверка или модификация перед присвоением в другом классе переписать.
>>1972557 Ну как бы любое решение должно быть обосновано. В System.Numerics такая дичь почему-то не используется, и коллеги тех, кто это писал, как-то стерпели. Поля структур там - это публичные поля. Проперти там - это действительно проперти, т.е. свойства, отражающие какие-то аспекты внутреннего состояния, а не оболочки полей. Тупой коллега, начальник-самодур и т.п. - это жизнь, с этим приходится работать и находить компромиссы, да.
Сап, такой вопрос. Меня взяли на стажировку - удаленно. Задания нужно делать каждый день (пн - пт). На задачу часов 5+ проганья уходит. Так вот - очень тяжело самому себя контролировать, постоянно отвлекаюсь на учебу или на ютуб или еще что-то, из-за этого в долгах и сейчас приходится на выходных догонять те 3 дня на которые отстал. Как вы себя держите в контроле? Мб приложения какие-то юзайте или еще что-то?
>>1972084 Ну, у тебя в возврате динамик-типов явно указан нативный для твоей среды тип - строка либо массив строк, не удивительно, что он их распознает. А у меня там какой-то мусор, который приезжает через межпрограммный интерфейс. Я не особо понимаю как все работает, но даже судя по тому, что VS не подсвечивает, не автодополняет и не показывает ошибку на абсолютно любом вызове для dynamic (даже если вписать туда что-то вроде .getMyDick()) то в рантайме там просто происходит поиск по имени метода и сигнатуре, а типа как такового может у него и нет. В любом случае, я уже разобрался с проблемой через рефлекшн (5 секунд в гугле, больше сюда писал, вот уж правда двачеебы неисправимы). Если сделать вот так: Type t = dynObj.GetType() то можно у полученного объекта через .Name узнать его имя. Короче, для массива тип System.Object[], а для одиночного объекта - __ComObject. Этого достаточно, чтоб не ебаться с try-catch, тем более что я могу там же получить список всех методов, полей, признак массива, признак что это КОМ-объект, и даже небо и аллаха. Теперь проблема в том, что я для любого объекта, который приходит из этого SDK, как динамик, и не является массивом, вижу этот же тип - __ComObject, и я не могу различать теперь их между собой (разве что по характерным именам методов). Ну и никакого объявленного типа "__ComObject" у меня в проекте нет. Мне уже хватает инфы чтоб задачу сделать, но хотелось бы доразобраться, гуглю сейчас как вообще шарп работает с КОМ и что можно сделать с такими объектами. >>1971834 да прекрати, это общеООП-шная хуйня. для меня шарить было бы если б я нормально понимал как именно .NET устроен и как все это на более низком уровне работет. А просто кододроч тут как и на других околосишных языках
>>1972551 Угу, а завтра тебе нужно добавить дополнительную логику, типа невозможности изменить поле после того как оно установленно. Сделав изночально свойство ты просто добавишь эту логику там, если у тебя было поле - ты будешь вынужден везде где дергалось поле менять логику. Охуенный кисс получается. А, ну да, такие же как ты думают, что вот порешали на первом митапе и все - у нас все железно, и не выйдет так, что мы тупо бизнес не поняли, не поняли предусмотрели что-то и т.д.
А ровняться на стандартную библиотеку это вообще пиздец. Или по твоему - охуенно кидать экспешн вместо того чтобы дать классу интерфейс который будет однозначно говорить, какие методы/свойств есть у класса, а какие - нет? Хули, стандартная библиотека так вот делает в куче мест. Давайте все как там делать: нахуячим абстрактных классов, нахуячим дублирующих классов, потому что те что мы нахуячили ранее конфликтуют, и будет у нас 3 разных цвета, дохуя стримов, жопой брашей. Охуенный ты ориентир выбрал, няша. И то что майкрософт сами признали что говно сделали и пытались по человечески передалать, это так.
Анонсы, кому-нибудь удается поддерживать кроссплатформенные проекты (контентные приложухи android/ios) на Xamarin? Начинал с юнити, пытался пересесть на xamarin ради вроде как нативности, но не осилил из-за постоянного костылинга того, что уже знаю как делать в юнити. В апстор пока не загружал приложения, тк боюсь реджекта (слышал что там любят реджектить по причине "а какие нативные функции ios вы реализовали"), а у меня по сути полностью отрисованный интерфейс. Вот ломаю голову над тем, как пилить следующий проект. Пока пришел к тому, что для андроида это будет юнити, а для ios придется осваивать свифт. Так или есть более простой путь?
Пытаюсь написать интеграционные тесты для своего проекта. И у меня встал вопрос ух как встал. Что делать с тестовыми данными в БД (использую postgre)? Сейчас напридумывал такие варианты: 1)Пересоздавать БД перед каждым тестом (через темплейт) 2)Очищать таблицы и заполнять заново перед каждым тестом 3)Использовать две БД - одну для тестов, где данные только читаются, другую для тестов где есть записи в бд (бд созаются и удаляются перед/после всех тестов). Мне кажется третий вариант лучше, тем более что первые два завалятся из-за параллельного выполнения тестов (или нет?). А какие есть нормальные варианты?
>>1972908 Так-то ничем, кроме того, что ты более явно говоришь другим программистам, который будут с твоим кодом работать, что в коде происходит. Индексатор сразу понятно, что там какая-то коллекция запрятана в классе с которой ты хочешь чтобы работали именно через индксатор, с методом это уже надо название метода читать и разбираться что за ним скрывается.
>>1972768 >завтра тебе нужно добавить дополнительную логику Анон, если ты пишешь класс Customer, Order и прочий ентерпрайзовый ООП-шит, то там очевидно, что надо писать геттеры. Если ты пишешь что-то элементарное, ну скажем, структуру Vector5, и тебе хочется перформанса, а возможно и нормальной интероперабелности с С в будущем, решение будет другим.
Срочно нид хелп с делфи#. Сам фротендер подзалупный, другу срочно нужно 1 задание с табулированием фукции и средним арефмитическим. Его уже разок ебанули за копипаст, второй раз не прокатит скатать. Есть уже рабочий правильно код, его нужно переписать чтобы препод не доебался БРАТЬЯ СЛОВЯНЕ ПОМОГИТЕ
Сап шарп, подскажите бесплатный обфускатор для .net framework (wpf .exe), можно и с торрентов. Можно без IL дрочева, главное чтобы шифровал string значения и немного расспидорасил шарп код (можно и много). Пока что пробовал: - .net reactor - на торрентах вирусы. - babel obfuscator - пробная версия. - eazobfuscator - пробная версия.
>>1972372 >А в целом вообще, интересно, какой процент людей, работающих программистами, могут написать алгоритм для ханойской башни, для быстрой сортировки без рекурсии и без её имитации через собственную реализацию стека, для обхода лабиринта, муравьиный алгоритм для задачи коммивояжёра и т.п. Без ограничения по времени, но и без гугла и подсказок. Где-то около 100%, я думаю. Я бы посмотрел на программиста, который этого не сможет.
Нужно запилить большой пдф документ и поэтому я решил его запиливание положить в отдельный поток. Но всё сразу же отъёбывает на этой строчке pageDef.PageSize = new Size( doc.PageWidth,doc.PageHeight); где doc это FlowDocument Если её закомментить, то дальше отъёбывает на этой строчке sourceDocument.Save(stream, DataFormats.Xaml); где sourceDocument это TextRange И всё это с ошибкой >Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток Что не так-то?
>>1973565 Райдер - огонь. Важно понимать, что в нем пока всяких визуальных редакторов и прочих плюшек, которые есть в студии, но зато с точки зрения работы с объемными солюшенами, состоящих из штук этак 25 больших проектов, он конкретно рулит. Тормозов нет, в отличие от студии он является честным 64 битным процессом и ограничения в 3 ГБ памяти у него нет.
Лол, зумерка не заставшего венгерскую нотацию видно из далека. Ты занимаешься подгонкой решения под ответ. В общем случае противоречие на лицо, и связано оно синтаксической коллизией языка и метаязыка. А если бы использовали слово class вместо object, такой коллизии не было бы. Рефлессия тут вообще ни при чём.
> Они разрабатывают компиляторы, ОС, СУБД, антивирусы, поисковики, навигаторы, архиваторы, игры, алгоритмы шифрования, блокчейн и т.п. Это их предметная область.
Ага, как в одном недавнем твите MS Research показалил нигретоску которая методами АИ выявляет а какие еще сорта нигеров недостаточно хорошо представлены в самой МС.
>>1972347 >Вкат в джуна - это взять разом 4 недели отпуска, положенных каждому россиянину в год, и просто усердно прочитать 1-2 книжки и попрактиковаться в IDE с задачками. Это уровень усилий как для подготовки к сдаче на водительские права. Перетолстил, это не Джун это недотрейни. А с ментором был бы трейни. Джун сегодня это не циклы с массивами, это знание языка на приличном уровне +3-4 технологии сторонние, а возможно и ещё жабаскрипт впридачу. Ну серьезно, ты думаешь вкатыш осилит за месяц c#+ SQL+asp.net+JS? А вакансии именно такие висят
>>1972347 >Порог входа, например, во врача (со специализацией) - это 8-10+ лет учёбы, потом ещё 5-10 лет обязательной работы за 5-8к на селе с бабками, и только потом ты сможешь устроиться в норм клинику на зп js-джуна.
Ты ебанько путаешь теплое с мягким, точнее требования гос структуры и частного бизнеса. Тогда уж для корректного примера не 1эсника или js макаку в мелкой конторе бери, а какого нибудь кодера роскосмоса к которому тоже формальные требования вроде вышки.
Его очень хуесосят и, как мне кажется, за дело. Кстати, чтобы забилдить под ios тебе нужно будет реальное устройство на mac в той же локалке что и основной комп, я под это даже хакинтош собирал. Ничего лучше чем юнити для настоящей кроссплатформы я не нашел. Движок пилится годами, поддерживаться тоже скорее всего будет сто лет вперед, пакеты подцепляются какие хочешь. А тот же замарин вон сегодня есть, а завтра ку-ку. Или гугл плей очередное требование выкатил, которое ты не можешь удовлетворить из-за прекращенной поддержки и никакой документации. А у тебя 5 проектов активных. Вот такие у меня мысли. Проще натив под каждую платформу выучить, один хрен они плюс-минус как сисярп
суп шарпач, хочу попробовать blazor, но в вебдеве я никакой. как защитить информацию на сервере от всего мира? я точно знаю, что приложением буду пользоваться я и мой друган, может быть стоит просто по вайтлисту айпишники закрыть и успокоиться? или лучше сделать это, но еще с шифрованием и логин формой?
>>1974204 Это сугубо требование рынка. Просто опыт показал, что программист и без ВО остаётся программистом и успешно справляется со своими обязанностями. А врач без ВО - это в принципе любой твой знакомый 35+, который, особенно в России, уже гарантированно переболел всяким и готов дать крепкий медицинский совет, назначить дообследование и план лечения, причём решительно по любой жалобе. Но как ты понимаешь, бабки с уринотерапией не особо пока способны заменить профессиональных врачей. Даже на мед.сестру, чтобы кровь из вены взять, учат дольше, чем программиста С++ за 21 день.
>>1973995 Современная разработка вообще не требует алгоритмов на самом деле. Чуть менее чем все js-макаки и питонисты-датасцаентисты вообще не умеют в алгоритмы. Программист, который нужен отрасли, это не творец, это даже не ремесленник, это заменяемая шестеренка на конвейер, сорт оф работяга со своим уклоном.
>>1973565 Мне не зашел. С одной-то стороны есть прямо вкусные плюшки, но блядь, эта хуйня думает что она умнее меня и даже больше студии лезет. Еще эта хуйня с подсветкой имени аргумента пиздец тупо сделана. Вообще, объективно - для написания кода - лучше всего подходит VSCode. Вот серьезно, в нем - писать одно удовольствие, с одной стороны скорость и плавность, с другой это не совсем редактор и всякие автокомплиты и прочее таки есть. Для дебага - студия или райдер.
Смотрите. Есть код. Прикриплейд. Студия мне упорно говорит - заменить async void на Task и ждать его. Но хуйня в том что тогда метод старт будет ждать завершения и я ничего не могу сделать другого. То же и с клиентами - без async void - я буду ждать пока обработаю клиента перед тем как принимать следующего. Так вот. Я понимаю, что это нехорошо так делать, но как иначе-то в таких вот случаях?
>>1910324 (OP) Здравствуйте, всем уважаемым шарпачам желаю здоровья. Вообщем я 3 курсник специальности мат и комп моделирования, тут нас учат пинать хуй и в поте лица зарабатывать баллы(оценки). Всё изучается ебанно хаотично - учишь мпиай+параллельно sql+делаешь ебейшие задачи биологии, химии и физ процессов на c++. Забил на эту хуйню хуй и учу чисто чтобы проходные набить. Только начал понимать что если щас сам не возьмусь за самообучение то после уника выйду полнейшим дном. Дк вопрос то с чего начать то, и главное как? Взял книжку по C# for players, на англ читается хорошо но после что? В чем смысл бытия этого ремесла? и вообще нужно ли все это? обращаюсь к кабанчикам с 300к н/сек
>>1974737 Падажжи! Тебе вообще, в целом, нравится с кодом возиться? Как кабанчик с 15летним опытом разработки за деньги скажу так: 90% рабочих задач, где нужно писать код еще более скучные и как ты говоришь, ебейшие, чем твои лабы по биологии, химии итп. Так что если душа к этому не лежит, лучше другую сферу поискать. Вон у меня пара приятелей разочаровались в программировании и в финансы ушли (один из них прям круто поднялся, трейдер в инвестиционном банке, кайен, дом на новой Риге), другой в пилоты линейные на б737 (сейчас правда с карантином соснул хорошо). Короче, ради денег в ИТ точно идти не стоит.
>>1971484 То есть по делу тебе ответить нечего, раз ты лишь в лужу пёрнул. Если рынок везде разный, то и копейки везде разные. Для пыхаря 50 тысяч в замкадье это средняя з/п, но для мобильщика это копье. Еще раз говорю: у нас +30% от рынка. Кадров нет вообще. Если бы мы могли найти 10 мидлов-шарпистов, мы бы мгновенно устроили их к себе, сразу же загрузили их проектами и взяли бы больше проектов к себе на горб. Нам приходится отказываться от очень жирных и денежных проектов, потому что у нас не хватает рук. А рук не хватает, потому что на рынке нет кадров. Все очень просто.
>>1975114 Т.е. ты на серьезе говоришь, что не можешь найти 10 мидлов-шарпистов на 200к в месяц? Вам определенно что-то нужно делать со своим отделом hr.
>>1975114 Лол, так о том и речь что у вас днище контора с нищенскими зарплатами нацеленная на отлов местных студентиков которые по какой-то причине привязаны к месту и не могут сразу в нормальную контору устроиться. В мухосранях такая практика довольно распространена, если в городе есть программерский быдловузик.
>>1974939 Потому что в теории старт может быть долгими таки его хотелось бы иметь возможность нормально отменить(в реализации подобной шняги у коллег например, просто виснет приложение и ждем пока таки запустится, меня вот это жутко бесило, особенно потому что вот идет интенсивный обмен, я блин, понял уже что все нормально и клиент на связи, а нет - жди пока закончится, никаких обменов в фоне, а кнопка отмены - не реагирует на нажатие). На пике - примитивный сервер на сокетах. Это просто пример, потому что я думаю все понимают, что при старте там будет выделяться пул под получение сообщений, будет какая-то логика биндинга и это вот все, это хотелось бы таки не просто пульнуть, а подождать прежде чем дальше логику какую-то выполнять, ну в после того как стартанул - нужно же продолжить выполнение уже ожидая клиентов и как-то их обрабатывая, но вот незадача - если будет async Task - так не выйдет, ведь прием - бесконечный цикл и если его ждать, то все, тю-тю, а с другой стороны мне студия прям кричит: АПАСНА, АСИНХРОННЫЕ ВОЙДЫ ЭТО ПИЗДЕЦ, ГРОБ, КЛАДБИЩЕ, СДЕЛАЙ ТАСКОМ И ЖДИ!!!
>>1975114 У меня 2 года опыт работы, лололо микросервися, лололо сетевые технологии, лололо ебля с протоколами проприетарными. Ыыыыы, ЗОВОД! За 50к в месяц и гарантию что не буду делать фронтенд согласен на все.
Возможно ли стать востребованным программистом, который не будет веб макакой, и не будет работать за еду, если нет высокого интеллекта ?
Ещё в школе я понял, что не одарён быстрым и мощным мозгом, основу языка я понимал и структуры данных и базовые алгоритмы, но олимпиадные задачки мне никак не давались, и не даются. С математикой и физикой было так же. Я их понимал, но мозга недостаточно, чтобы выйти на уровень олимпиадника.
Сейчас же пытаюсь на codeforces участвовать в соревах, получается делать только самую лёгкую задачку A, для более сложных не хватает интеллекта, чтобы решать сложные математические модели, и быстро придумывать нужные алгоритмы, или вообще даже спустя много времени решение не приходит в голову.
Имя пользователя Пароль Время отиправки сообщения Хеш сообщения
Ну, т.е. совсем просто - все это одна ASCII строка, разделитель каждого поля - \0 а идентификатор начала и конца сообщения - 0xff. Так вот, никакой сложности сделать это руками. Но хочется же, допустим, добавлять разные уровни для разных сообщений, вложенность и чтобы потом это нормально десерилиазавалось, а пилить это ручками - ну, заебисто же. Хотелось бы что-то вида:
[Serialize([0xff], [0xff])] class Login{ [String.Ascii, EndWith('\0')]string Name{get;set;} [String.Ascii, EndWith('\0')]string Password{get;set;} [DateTime.Format(dd-MM-yy hh:mm:ss))]DateTime Timestamp{get;set;} [Byte(4)] byte[] Hash{get;set;} } Есть ли что-то такое?
>>1975765 Неоднократно сталкивался по работе с не самыми умными программистами, да что уж там, даже откровенно туповатых видел. Они вывозили, по большей части, на крайне высокой усидчивости и минимуме прокрастинации.
Можно ли добавлять кастомные контролы winforms в wpf? Есть один msdn.html.editor.htmleditorcontrol , <WindowsFormsHost><wp:... > не подтягивает его (там только дефолтные контролы). Или может кто знает альтернативную бесплатную реализацию для редактирования html'a?
>>1975903 Они как раз-таки бэкендом трейдинговой системы занимались. Худо-бедно справлялись за счет уже реализованного костяка проекта, вопросов знающим людям, ну и много их код на ревью назад на доработку отправляли с комментами. Справедливости ради, по долгу такие чуваки не задерживались.
>>1976057 Неее, в нашем случае все знали, что эти чуваки контракторы звезд с неба не хватают, но кого прислали на временное усиление команды, того и прислали.
Сто касается скила на общение с людьми, то этим туповатым программистам он реально нужен, просто потому, что им нужно часто ходить к прошареным чувакам за помощью.
Сап программаторы. Есть способ проверка валидности данных для входа в почту, не отправляя письмо? Допустим пользователь вводит свои данные в два поля. Если gmail подтверждает, что данные верные, то у пользователя открывается некоторое окно(юзаю WPF ), если нет - выводится label о неверности данных. Интересует сама реализация проверки без отправки письма.
>>1976128 Хо-хо. Там борьба за микросекунды, дружище. И от этого архитектура, скажем так, весьма своеобразная. Грубо говоря, есть медленная шина типа TIBCO, есть быстрая кастомная in-memory база и прочие радочти энтерпрайза.
Какие сейчас перспективы у шарпа? После вуза стою на распутье, но шарп нравится больше всего. Какие шансы со знаниями шарпа и асп.нет найти первую работу? Был бы благодарен за ответ
>>1976629 небольшие. десктоп на винду щас не популярен. Лучше всего Java и в андроид или бекенд/фронт, там без работы никогда не останешься, и она всегда будет даже в самом срано мухосранске
Есть такая ситуация Есть метод Operaion, который делают некоторую работу и выбрасывает эксепшены если что-то пошло не так Но есть случаи когда выполнение этого метода вообще не имеет никакого смысла и лучше бы его завернуть в таком случае в самом начале При этом надо завернуть так чтобы об этом узнал вызывающий код Можно конечно фигануть еще один эксепшен и его обрабатывать Но так как это довольно распрастраненная ситуация может быть, в этом случае лучше вовзращать сразу бул удалась ли или нет попытка выполнения метода Вижу тут 2 решения
Сделалть метод AttemptOperation, оборачивающий Operation Перед вызовом Operation делать проверку и возвращаться фолс если попытка невозомжна или Ставить эти проверки перед каждым вызовом метод Operation в вызывающем коде, это всем другим разрабам нужно помнить будет, что эти проверки нужны
Ну и к тому еще в обоих вариантах, что Operation что AttemptOperation эти вызовы должны быть обернуты в трай кетчи Мне ни один из этих вариантов не нравится Можно ли еще что-то придумать?
Подскажите пожалуйста, как можно получить текущую активную форму (Form) приложения, когда работаешь с WinForms? Проблема в том, что я вызываю окно в режиме ShowDialog, и оно оказывается позади приложения. Я так понимаю, потому что утрачивается какая-то там связь с хозяином для нового модельного окна, и это можно пофиксить передав хозяина явно через альтернативный вызов ShowDialog(Form masterForm). Код, генерирующий модальное окно, вызывается из подключаемой к приложению библиотеки .dll, поэтому у меня изначально нет ссылки на его окно.
>>1976629 Картина такая: позиций шарповых меньше чем джавошных, а программистов много, потому на приличные зарплаты конкуренция сейчас довольно большая. Про то что шарп потихоньку вымирает не согласен: .NET 5 с aspnetcore и общая нацеленность на бекенд, уже даже сейчас привела к росту таких позиций. Ну и понятно, много компаний ищут людей для поддержки легаси на WPF или совсем уж старья на WinForms.
>>1976881 У формы есть свойство owner Туда нужно присвоить ссылку на родительское окно Если у тебя диалог в сторонней библиотеке вызывается, передать в метод которые его вызывает ссылку на главное окно.
>>1976629 Судя по недавним статистическим выкладкам, проекты C#, .Net Core и TypeScript самые популярные и востребованные и это только. Шарп уже обогнал Джаву, а расхайпленный Питон уже соснул и востребован в основном на Западе. Все таки Core выстрелил знатно.
>>1976930 >У формы есть свойство owner пробовал. У этой формы в овнере - нулл >передать в метод которые его вызывает ссылку на главное окно. Да, но мой вопрос и состоит в том, как его получить, чтоб туда передать
Поясните разницу с точки зрения производительности между отправкой ajax и отправкой формы, очевидно что с точки зрения клиента более предпочтительным вариантом будет ajax так как не нужно перезагружать всю страницу, вместо это будет выполнен js код который изменит состояние затрагиваемого объекта, но что с безопасностью? защитой от брутфорса и ддос атак? сколько будут весить файлы отправки форм и ajax-сов? который будет обрабатываться сервером быстрее?
Переучиваюсь с WebForms на .Net Core MVC. Разрывает пердак от того, что все материалы предназначены для тех, которые работали хотя бы в классическом MVC. Базовые термины не объясняются. А еще понял, что мне нужно повторить кучу вещей в C# (делегаты, async await, лямбда), прежде чем вкатиться.
Как в вижуал студии можно автоматически дополнить лябмду? Вот я пишу что-то вроде govno.someCallback = (??????) => { }; Как мне можно быстро посмотреть какие там параметры должны приниматься, и что она должна возвращать? Сейчас я смотрю на сам делегат и с него переписываю параметры, но это очень неудобно - иде могла бы и сама мне все сразу подставить.
Блядь. На работе попросили кусок моего кода, т.к. я делал проект в котором нужно таки было на уровень TCP спуститься и сейчас у других челов стоит похожая задача и они не хотят ебаться с этим и просили мой код "для примера". Ну так вот, я-то что сделал - я не ебался с сокетами, а просто взял и добавил к кестреллу свой кастомный обработчик, обернул это все в свои контексты и понеслась. Вопрос вот в чем. Не упаду ли я в глазах кодеров такими вот решениями, если таки дам свой код? Просто мне самому не особо нравилось, но с другой стороны - мне так самому не хотелось ебаться с сокетами и прочим, вот и сделал так вот. Кестрел работает шустро, плюс получалось что конфигурирование этого дела совсем уж стандартно. Но мня все равно гложет совесть, кажется что нужно было как деды - все на сокетах делать, а не вот эти вот оберточки мутить. К вопросу - давать или не давать такой вот код? Засмеют или не засмеют меня за то что я не ебался с сокетами, а решил что проще просто в кестрелле кастомный обработчик намутить и от него плясать?
В чем проблема-то собственно. По какой-то непонятной мне причине - не всегда что при чтении, что при закрытии соединения - соединение закрывается. Вот тупо проверил - одна две суки висит. ХЗ почему так. Я наверное тупой и что-то не так делаю.
>>1978492 Однозначно Java. C# только для разработки приложений под винду, а в росии такой работы очень мало. Учи джаву и иди в андроид, в разы больше денег и вакансий будет
>>1978600 что он не так сказал? То, что на джаве ты можешь зарабатывать деньги, а не создавать свистелки-перделки, как это делают студенты в этом треде? Или как другим долбоебам демпинговать свой язык?
>>1975903 >Что они могли по алгоритмам ? А что вообще средний программист может по алгоритмам? Особенно привыкший к популярным высокоуровневым языкам, где уже есть куча готовых либ на все случаи жизни? Мне вот недавно требовался алгоритм для определения того, находится ли точка внутри полигона. Это известный алгоритм, из точки пускается луч и считается количество пересечений с гранями полигона. Если получаем нечетное число, то точка внутри. Но если луч пересекает вершину, или коллинеарен с гранью, то это особый случай, который надо выявлять и особо обрабатывать. Мне в голову приходило только тупое решение - генерировать новый луч до тех пор, пока он не сумеет избежать особых случаев. Решил посмотреть, как это решают другие люди. Попробовал код из первой строчки гугла. Он не проходит тест, на хитром примере даёт неправильный ответ. По итогу я потратил много часов изучая и тестируя код из выдачи гугла, я проверил наверное десяток реализаций, и все они ломались на некоторых особых случаях. Особенно забавно, что один из сайтов был посвящен изучению алгоритмов, и под примером кода было несколько тысяч комментов. В итоге нашел магический код на С на персональной страничке какого-то деда из американского вуза, который четко работал, и был ещё и очень быстр.
>>1978990 вот поэтому нужно хорошо прокачатся в олимпиадном программировании, которое сильно прокачает алгоритмическое мышление, чтобы на задачи подобного уровня не тратить много времени и усилий, и быстро придумывать быстрые и правильные решения самостоятельно
>>1978990 Лол. Я тоже пытался реализовать подобный алгоритм своими руками. В итоге забил. Можно ссылку на посмотреть? Интересно как он работает с полигонами типа кольца или буквы V.
Как подключится к PostgreSql через ADO.NET не указывая бд? Если я пишу так, то работает: var connStr = "Host=localhost;Port=5432;Database=SomeDB;Username=user;Password=1234"; Но я хочу подключиться, что бы как раз создать базу, т.е SomeDb еще не существует, а если я удаляю параметр DataBase из connStr, то сервер меня шлет нахер. Как быть?
>>1979026 Для каждого элемента последовательности выбирает выбирает последовательность и объединяет все это в одну последовательность. Т.е. если обычный Select проецирует один элемент источника в один элемент результата, то SelectMany один элемент источника в последовательность результирующих элементов и объединяет их. На мсдн ходил? Уж куда проще-то https://docs.microsoft.com/ru-ru/dotnet/api/system.linq.enumerable.selectmany?view=net-5.0
>>1979001 >вот поэтому нужно хорошо прокачатся в олимпиадном программировании, которое сильно прокачает алгоритмическое мышление Алгоритмические задачи - это задачи уровня научно-исследовательских. Известные ныне, кажущиеся простыми, алгоритмы разрабатывали умные люди зачастую в рамках своих phd по CS (или кандидастких по ф.-м. н.). Это не решается в олимпиадном темпе. Чтобы придумать грамотный алгоритм, нужно погрузиться в задачу, размышлять над ней, ложиться спать с мыслями о ней, просыпаться с идеями, которые хочется проверить в коде. Хороший программист, если ему это реально надо, может помнить множество известных проверенных алгоритмов, нюансов их реализаций, держать их в голове и на кончике пальцев. Принять их и вариации на тему в ежедневной практике. Но когда говорят, что программист должен уметь придумывать действительно не зазубренный им произвольный алгоритм для какой-то хитрой задачи, и ещё предлагают сделать это в коде в реальном времени, а то и на собеседовании, желательно минут за 30, то это просто смешно. Так это не работает.
>>1979159 программист олимпиадник в алгритмическом плане будет в разы быстрее и ему в разы легче придумывать нужные рабочие алгоритмы, чем не олимпиаднику. Простая аналогия - работа грузчика. Пауверлифтер будет в разы эффективнее и быстрее, чем обычный грузчик - ряботяга, который тоже может выполнить задачу.
>>1979163 Да нихуя. Я это уже говорю как олимпиадник. Вмдеть стандартные решения - да, ты благодаря олимпиадам можешь из крайне странного описания понять, что тут мы должны жадный взять, там мы должны большие числа применять, тут регрессия и т.д. Но вот когда становится нужно что-то новое - хуй там. И ты просто почитай как квиксорт был придуман. Дядька работая преподом в союзе несколько лет взял и придумал его в ходе работы над совершенно другим проектом , и казалось бы крайне хуевый баблсорт взял и модифицировал так, что тот стал не хуйней для показывания на парах, а штукой, которая долго была одним из самых популярных алгоритмов.
Из-за всех этих автокастов типов и прочего говна мне не очень-то ясно стоит ли вообще экономить байты в памяти или забить потому что ценна этих байтов это циклы процессора на всякие переконвертации и прочее?
>>1979190 >и казалось бы крайне хуевый баблсорт взял и модифицировал так, что тот стал не хуйней для показывания на парах Бабл-сорт вроде не так уж и плох на очень маленьких арреях так как у него нету оверхеда.
Посоветуйте среду разработки, где можно кодить и на сисярпе и на С/С++, а то VS с тем и тем на мой виндовс планшет не влезает из-за 32гб внутренней памяти, а на что-то кроме диска C он не устанавливается.
Привет всем шарпистам! Есть ли тут те, кто использовал Blazor более менее серьёзно? Стоит ли его юзать для полу pet project’а (те вроде чисто для себя а вроде не совсем)?
И еще: как у Blazor обстоят дела с HLS (Http Live Stream)?
>>1980115 Что значит без отладчика? Я скачал нормальный VScode и установил то, что на первой картинке, просто попытался запустить код на второй картинке и выбрал сверху .NET Core и получил третью картинку...
>>1980115 Затем я возвращаюсь на вторую картинку и снова пробую нажимать F5, так как мне похуй, что там на англюсике на третьей картинке написано, ведь я его не понимаю, и получаю хуй. Да, я языковой нацист.
>>1980126 Для такого запуска нужно создать json для билда/отладки. Когда появлялось "не удалось найти задачу build" нужно было клацнуть настроить задачу. Там автоматом создается дефолтный жсон. Сохраняешь и все будет так билдится. Но вообще, если у тебя net core cli стоит - просто открой вкладку консоль отладки и пропиши netcore run
>>1980131 То, что прекрасно запускается в VS2019 требует танцев с бубнами во всех прочих средах, которые я пробовал. ЗАЩО???!!! Что оно от меня хочет? Сделал всё, как та написал.
А нельзя как-то обойтись без ввода какого-то говна в консоль? Я не линуксоид и больше предпочитаю клацать по кнопочками, я не дрочить на чёрную консоль.
>>1980147 И да, мне нужно установить среду разработки на C# и на C/C++ на диск D на устройстве, где просто нету места на диске C для чего-то, кроме самой винды и МС офиса, так что VS сразу нет.
Вот тут: https://habr.com/ru/post/164705/ чел рассказывает как из шарпа вызвать функцию WinAPI для быстрого рисования bitmap'а. Для этого делается напрямую из дот.нета вызов функции SetDIBitsToDevice из gdi32.dll. Это работает намного быстрее стандартного System.Drawing.Graphics. В функцию SetDIBitsToDevice передаётся как аргумент указатель (IntPtr) на первый пиксель. Это функция Paint на картинке. Она получает в качестве аргумента _pArray, который запинен через GCHandle в конструкторе класса (и распинивается в финализаторе). И перед каждой отрисовкой вызывается Marshal.Copy(BD.Scan0, _pArray, 0, _width * _height); Т.е. каждый раз мы копируем данные пикселей из BitmapData BD в запиненный буфер _pArray. В своём коде (функция Paint2 на картинке) я избавился от этого копирования, которое на 4К очень затратно и снижает FPS. Я сразу передаю BD.Scan0 в SetDIBitsToDevice. И это работает, пока ничего не ломалось. Могут ли быть с этим проблемы? Ведь по существу GC в любом случае не может двигать в памяти BD.Scan0, т.к. в принципе, то, если возвращаются указатели, то значит они и так запинены или зафиксированы. Поэтому копирование в запиненный буфер не должно быть нужно. Но автор с хибра, явно разбирался в вопросе больше, чем я, тем не менее, делает это. Зачем? Поясните про этот момент.
Кстати, могу ли я без использования рефлексии получить Scan0 битмапа без LockBits, если мне нужен битмап целиком? Ведь по существу при LockBits опять идёт не нужное копирование в памяти. Я конечно мог бы вообще не использовать дотнетовскую обёртку битмап, и рисовать через SetDIBitsToDevice пиксельные данные из обычного массива. Но мне нужно писать текст на битмапе, а для этого мне всё же нужен System.Drawing.Graphics. Разбираться с нативными функциями винды для этого смысла нет, т.к. Graphics делает это быстро.
>>1980177 Результат тот же. Я хочу консоль как на второй картинке, я категорически не приемлю вид как на первой. И хотелось бы кнопки для создания проектов, чтобы в консоль ничего не вводить и не держать в голове в хуй не упёршиеся команды, я же не линуксоид дрочить списочки команд или в голове всякий мусор держать.
>>1980182 Ну типа, в программировании нужно постоянно кучу всего учить, и запомнить пару команд на фоне остального не выглядит чем-то таким, для чего тебе прям стараться придется, чтобы запомнить.
>>1980188 Это другое, дебильные команды вместо нормальных кнопок и команды-слова в языке программирования не одно и то же. И как всё же запускатть программы в VS code с выводом в обычный cmd? Пока оно всё в отдельном окне, VS останется для меня единственным вариантом.
>>1978904 Расскажу вам про шарп vs джава. У меня был большой проект, которым занимался не много не мало, а 6 лет - трейдинговая платформа в одном инвест банке. Серверная часть, как водится в банках, на джаве, гуй - WPF. Общались они по своему in house developed протоколу. Сам я на проект пришел когда он только только начинался на позицию простого сеньора. Потом года через 3 оказался на позиции product owner-а и отвечал за архитектуру гуёвой части. Так вот: в плюсы джаве можно записать очень хорошо настраиваемый рантайм (важно в плане перформанса), серверный дебаг и инструменты удаленного профайлинга. С дотнетом местами приходилось изобретать велосипеды / покупать всякие dotMemory / dotTrace за отдельные деньги. У джавы это все искаропки. В минусы джавы можно смело писать ненастоящие дженерики, которые теряют информацию о типах-параметрах в рантайме, в которых нельзя хранить примитивные типы. Stream API не дотягивает до LINQ. Короче когда работаешь с кодом постоянно возникает ощущение, что джава намного более отстала по времени, чем шарп. Собственно в dotnetcore MS и пытаются прижать хвост джаве и в сфере серверной разработки.
такой вопрос, есть ли у майков бекдоры к например дотнету? например вот создал я какую-то систему аунтефикации а они добавили какой-то магический ключ к гету и контроллер вернул ему данные без проверки? я просто уверен что есть но не понимаю как это может работать, например есть два ретурна зависимо от того как проходит атентификация один возвращает какой-то мусор типа страницы для домохозяек а другой страницу где хентай с лолями, они будут использовать какой-то краулер на запросы которого дотнет будет всегда отвечать положительно?
Ну предположим краулер, но что если контент будет возвращаться в зашифрованном виде и без моего ключа его расшифровывать 100 тыс лет, не будут же они использовать квантовое превосходство ради такой ерунды правда?
И еще, как эти бекдоры работают на винде и линуксе? они вообще на линуксе работают? Я не уверен, что они могут работать без подходящего ядра.
если кто знает страницы где подобные вещи разжёваны буду очень благодарен, можно и даркнет, было отлично если в даркнете, буду благодарен в двойне
>>1980279 >ненастоящие дженерики, которые теряют информацию о типах-параметрах в рантайме я как же вы их хуевертили, что они отпадали? Через 100 мапперов? >Stream API Теже яйца, только в профиль. Могу поспорить, что все равно писали на нативном Sql запросы Тем не менее, не будет утечек, как это обычно случается с C#, unsafe код - выстрел в ногу Мелкософт жидко серанули, что сделали опенсоурс так поздно, да и кроссплатформенность из жадности не вводили. А так могли бы уже выйти на уровень с Java. Так или иначе - рынок покрыт, специалисты есть, постоянные свитчи туда-обратно. Не знаю, что должны мелкософт сделать, чтобы вытеснить Java с рынка. А по сабжу, коньюнктура теряется только из за переката в Kotlin - за ним будущее. Да и альтернатив много нарисовалось, Go/rust/node, тот же ror, immortal пыха. Устраивать холивары безмысленно, достаточно смотреть на спрос и понимать, что сейчас в тренде >>1980296 только фронтдоры, из подветренной только мелкософты заходят
Если по делу, то дотнет справедливо занимает свое место под солнцем и сейчас действительно наблюдается рост именно дотнет бекендных позиций на фоне общего спада числа дотнет вакансий из-за всеобщего ухода с WinForms / WPF на веб.
>Stream API Теже яйца, только в профиль. Могу поспорить, что все равно писали на нативном Sql запросы Дядя, о каком SQL речь ведёшь? Я про in memory операции с данными вообще-то. Если детально, то проблема в том, что в джаве нет extension methods на которых, собственно и сделан LINQ. Из-за этого некоторые вещи сделаны неочевидно. Сравни:
c#: .ToList() java: .collect(toList());
Вроде бы одинаково, но уже не так очевидно. Ну и code completion тут не особо поможет.
>unsafe код - выстрел в ногу Вот не поверишь, ни разу в продакшене unsafe не использовал. Впрочем было один раз в рамках одного proof of concept, но потом этот модуль откололся в соседний проект и был на плюсах переписан.
>Устраивать холивары безмысленно, достаточно смотреть на спрос и понимать, что сейчас в тренде Вот тут согласен. Позиций на джаве намного больше, по деньгам - на позиция лидов тоже самое. На позициях типа простого сеньора - джавистам чуть-чуть больше у нас дают. Лично я на джаве писать не люблю, хоть и умею. Тот же спринг рулит, да и вообще AOP на шарпе так и не прижилось. Все от проекета зависит, где какой инструмент лучше подойдет.
Каковы шансы что меня возьмут на веб-бэкэнд .NET, без коммерческого опыта работы, если я подтяну знания хотя бы до уровня мидла? Что желтельно знать? Кроме очевидного ASP.NET Core, JS, какой-то фронтенд фреймворк. Сам последние 5 лет работал десктоп разрабом. Насколько этот опыт имеет значение?
>>1980937 Бэкенд - это сразу базовый SQL, EntityFramework или еще какие-то ORM. Обязательно надо знать что из себя представляет SSL, да и сертификаты вообще. Докер надо знать. На хитрые вопросы по гиту отвечать.
Можно пример А то я сам работаю с гитом через студию и ничего кроме создания веток, мерджа веток, пуша, пулла, коммита, стейджа и очень редко чери пика не приходилось исползовать До этого довольно долго работал вообще через свн.
>>1980921 >erasure хотели сахарка? Хавайте >занимает свое место под солнцем Где то рядом с крестами и пыхой по спросу. До Java, как до луны >>1980929 >нет extension method да, это солидный козырь в рукаве, хз почему они еще не запилили в джавку >Лично я на джаве писать не люблю каждому свое, но хотелка не всегда кормит желудок. Вот TS я думаю взлетит, хотя типизация все еще слабая, как для компилируемого языка. И будут все .NET-тчики фулстека. Скоро завезут какой ни будь мелкософтовский деплоймент контейнер и будете мастер на все руки. Сам себе фронт, сам себе бэк, опа -архитектуру под БД выкатил, опа - деплой по пайплайну пошел. .NET dev - Человек аркестр >>1980937 >Сам последние 5 лет работал десктоп разрабом Ты сразу на мидла хочешь прыгнуть? Если да, то учи Core, response-required pipeline, middleware и как я писал выше - смотри в сторону TS
>>1981205 Это у тебя блок кода в ифе маленький, а теперь представь если у тебя в ифе было бы 50 строк Явно выйти одной строкой из метода лучше выглядит. И следующие 50 строк будут на уровне основного кода в методе, а не вложены в иф.
Читаю тут печатную книжку по шарпу >instead of assigning access rights to launch a nuclear strike to Donald Trump (a user), you would assign access rights to launch a nuclear strike to the President of the United States (a role) and then add Donald Trump as the sole member of that role. Then, in January 2021, you do not need to change any access rights for the POTUS role, you can just replace the Donald Trump user with the Joe Biden user. Or not. ;-)
>>1981634 А что еще остается чтобы восстановить состояние интерфейса после перезапуска программы? Например у грида есть возможность показывать/скрывать колонки, после перезапуска программы в гриде должны быть те же колонки включены как и в последний раз. Остается только хранить его где-то в каком-то виде. А значение статика пропадет после перезапуска.
Сап, подскажите, при sql запросе select UserDomainName from dbo.[User] выдается вся моя таблица, состоящая из UserDomainName.
Но при select UserDomainMain from dbo.[User] where UserDomainMain = 'Vasiliy.Pupkin' или даже 'V%'
выдается таблица без значений, Почему такое может быть? (Vasiliy.Pupkin в таблице есть офк) (алсо БД не моя и когда я копирую из нее значение Vasiliy.Pupkin в конце появляется два пробела, мб это как-то влияет? (но почему % тогда не работает непонятно)
>>1982023 Нет, x это int Int это тип значение, а не ссылочный тип Но так как поле x является членом класса Program, то его значение находится в куче по тому же адресу где находится объект test 1 или объект test2. Заметь я говорю именно значение, если бы у тебя полем класса был другой ссылочный тип, то это было уже другая ссылка, которая указывает на другое место в памяти. И в твоем примере ты вообще меняшь значение разных экземпляров класса типа Program, поэтому такой и результат.
>>1982023 > Program test1 = new Program(); Создаем новый объект типа програм, записываем адрес в переменную тест1
> Program test2 = new Program(); Создаем новый объект типа програм, записываем адрес в переменную тест2
тест1 и тест2 ссылаются на разные объекты.
Чтобы правильно затестить сделай так:
Program test1 = new Program(); test1.x = 1; Program test2 = test1; //тупа копируем адрес, значит и тест1 и тест2 будут ссылаться на один и тот же объект test2.x = 2;
сап, такой вопрос еще, я решил уменьшить код, поудалял кучу всякого, я думал что ненужного. Но теперь при отладке почему то программа перестала заходить методы моего web api и просто мгновенно выполняется и все, и через постман доступ также пропал, при этом в консоль корректный результат работы web api выводится, так что я вообще не понимаю в чем проблема
Я кажется в конец отупел. Помогите найти решение. В общем. Задача. Дано. Некое множество чисел(допустим дни недели). Дана упорядаченная последовательность этих вот чисел(допустим понедельник, вторник, пятница, суббота, воскресенье). Нужно - вычислить количество дней от произвольного элемента последовательности, которое необходимо прибавить чтобы получить произвольный элемент этой же последовательности. Ну, чтоб было понятно, вот есть дни недели, 1 2 3 4 5 6 7, допустим у меня есть последоваетнльность 1,2,5,6,7. Допустим я хочу найти расстояние от 2(вторник) до 5(пятница). Все просто. Я посчитаю разницу. Но вот я нахожусь в 7(воскресенье), мне нужно найти количество дней до понедельника(один) и я не понимаю как это без ветвления сделать. Т.е. с ветвлением-то я прото поняв что разница отрицательна - добавл 7 и получу как раз 1. А вот как сделать решение в котором бы не нужно было бы использовать ветвление? Программирование отупляет. Я в коде это тупо циклом сделал и меня это триггерит. Я поясню зачем оно надо. Вот я хочу сделать расписание запуска каких-то задач на сервере, допустим - каждое воскресенье или каждый первый день месяца - нужно составить какой-то сводный отчет и промежуточный данные за неделю/месяц в нем посчитать и почистить. Вот. Я сделал структурку для работы по расписанию в формате cron, у расписания есть метка времени когда последний раз оно запускалось. Ну, и вот допустим, если я решу составить расписание вида: каждое воскресенье, которое является первым января - я буду проходить по циклу много шагов(больше чем оно заслуживает), чтобы поставить метку времени следующего ожидаемого запуска. Это не так критично на самом деле, но просто блин, я чувствую себя тупым из-за того что вот так вот хуячу, вместо того чтобы красивенько посчитать число месяцев, дней,часов, минут относительно прошлого запуска, которые необходимо добавить чтобы оказаться в следующей точке.
>>1982146 Тебе в любом случае в определенный момент придется хранить где-то настройки. Лучше сделать это как человек и сразу использовать одно решение для всего. Это будет либо JSON-файл, либо какой-нибудь SQLite. Если тебе именно статика не нравится. Делай свои класс Options, которые будут прокидываться к нужному окну. Чтобы менеджить их - синглтон OptionManager из которого нужную опцию можно получить либо явно запросив либо по событию OptionChanged<TOption>. Но это все сложнее и требует больше кода, чем просто взять и в нужном месте дергнуть контекст SQLite и считать.
>>1910324 (OP) Поясните, сколько времени понадобится для изучения сабжа если последний раз погроммировал на бейсике в 92 году? Пары месяцев хватит, чтобы написать приложение для коммуникации с вызывной панелью hikvision и используя их SDK?
>>1982299 > if (w.ShowDialog()) > { > var foo = w.Foo; > } А, нихуя себе, у меня ума не хватило до такого додуматся, я просто делал статик переменную в первом окне и во втором менял ее.
>>1982588 Ну если использовать SQLite только для персистенса данных, а так все в памяти держать, то можно. Но тут возникают другие проблемы )) Судя по самому вопросу о возможности использования SQLite на бэкенде, юному падавану лучше посмотреть в сторону каких-то других компактных баз данных.
Можно же и так через Type все поля получить и сохранить, никакой аттрибут тут вообще роли не играет. Или это просто скорее как гарантия другим разработчикам, что если они видят класс, который помечен как [Serializable] - значит его автор гарантирует, что его можно сериализировать/десериализировать и будет все норм работать(ну и все эти форматтеры для большей безопасности не пропустят класс без такой гарантии)?
И еще, нахуя BinaryFormatter сохраняет кучу метаданных? Ну ладно, это может пригодиться, но есть же задачи где это нахуй не нужно, почему нету стандартного класса какого-нибудь DumbFormatter, которы бы тупа сохранял поля без дополнительного мусора? Конечно можно и самому сделать, но странно, что его нету. Вот содержит класс два инта - значит 8 байт на всё, а не 100, как это происходит с бинариформаттером.
>>1982675 Как пример Я работал на проекте в котором мы общались с сервером через .NET Remoting Так вот если не пометить класс как Serializable объекты этого типа не были доступны по сети и валился эксепшон А ремотинг с первой верси .NET доступен, как минимум для совместимости нужен
>>1982588 >Сделать то можно, но работать то оно хз как будет >Потому что SQLite на записи в базу лочит весь файл базы целиком. Бля. А при чтении не лочится? Можно читать через много потоков? Да-да, я читал что-то подобное, мол можно использовать очередь, писать данные очереди куда-то в кэш, и читать оттуда, а потом из кэша сливать данные по принципу стэка FIFO. Первая запись вошла в кэш, первой и пишется в базу, типа, и так для каждой каждая. А что если в памяти базу данных развернуть (пикрил)? Тоже будет лочится целиком, при записи?
>>1982608 Какие базы предлагаешь рассмореть? Из реляционных. Чтобы были опен-сорц полный. Именно из-за опенсорцности я смотрю в сторону сиквелайта. Но это не клиент серверная СУБД. А клиент-серверные СУБД - хуйня проприетарная, в большинстве своём, ещё и платные. Видел вроде MariaDB опенсорцная, но я не тыкал её ещё. Вообще не хотелось бы выносить базу данных на какой-либо сервер. Хотелось бы в виде файла сделать базу, и к нему уже коннектится из приложухи-сервера, на шарпе. Чтобы читать и писать прямо туда, по мере необходимости, и чтобы всё можно было на флешке таскать, а не коннектить хуй знает куда, на какой-то ёба-сервер, который может ещё и упасть.
>>1982770 >Бля. А при чтении не лочится? Можно читать через много потоко Одновременное чтение разрешено Но пишущая транзакция залочит всех читателей пока не закончит свою работу.
>>1982770 > А клиент-серверные СУБД - хуйня проприетарная, в большинстве своём, ещё и платные.
Чем какой-то Postgre или MySQL не устраивает? Я сам с ними не работал, но они бесплатные.
> Вообще не хотелось бы выносить базу данных на какой-либо сервер. Хотелось бы в виде файла сделать базу, и к нему уже коннектится из приложухи-сервера, на шарпе.
Что-то я не понял А сайт на флешке чтоли тоже будет хоститься?
>>1982770 >Вообще не хотелось бы выносить базу данных на какой-либо сервер. Хотелось бы в виде файла сделать базу, и к нему уже коннектится из приложухи-сервера, на шарпе.
Гугли что такое Docker. Делаешь образ с нормальной базой и твоим приложением и не паришься с деплоями - все в одном контейнере, такое как один раз настроил при разработке.
>>1910324 (OP) В сишарп нету стеков, векторов и прочих структур данных как в СТЛ с++ что ли? Я гуглю а мне либов ыдаёт с++, либо сишарп, но реализацию, а не готовый класс из стандартной билиотеки. Втф
>>1983274 > В сишарп нету стеков, Stack >векторов List >и прочих структур данных как в СТЛ с++ что ли? Да вроде почти все есть. >Я гуглю а мне либов ыдаёт с++, либо сишарп, но реализацию, а не готовый класс из стандартной билиотеки. Втф Пикрил
Нажатие кнопок внутри страниц, которые отображаются в браузере? Ну, пишешь свою хтмл страниуцу, джаваскрипт отображаешь это все дело в браузере. Только учти что за браузер та версия Internet Explorer, которая есть на компе.
>>1983702 Ну какбы патерны используют по мере их необходимости, исходя из конкретной задачи. А не по приколу, чтобы просто было.
>>1983702 Ничего не использую. Нахуй не надо. Пришел к мысли, что нужно просто писать чистый процедурный код в функциональном стиле. Все. Код стал декларативным, пропала хуйня с тем что думаешь о том, чтобы прокинуть какую-то зависимость через залупу, все пишется просто, модифицируется легко, а т.к. сейчас - микросервисы которые максимум в 10к строк на сервис выходят еще проще. Еще бы сам .net не был завязан на эти ебучие классы - было бы вообще заебись.
>>1983703 Фанат контента для вкатунов, почему я не удивлен? >>1983704 >Ну какбы про SOLID что ни будь слышал? Или у тебя на первом спринте в контроллерах DbSet-ы, а потом переписываете на репозитории, когда из щелей копипаст методов лезет, я правильно тебя понял? >>1983712 откуда ты такое животное тут появилось? С Core 3.0 встроенный DI, а оно все функциональном стиле пишет. Надеюсь одного дня тебя кинут на сапорт такого же говна, которым ты сейчас срешь, чтобы ты понял, какого это писать функциональщиной в ООП языке
Наверное, нет Я имел ввиду буквально, что я написал Применять патерны просто так, чтобы просто их опробовать, не понимая для каких сценариев они уместны для каких нет.
>>1983784 >не понимая для каких сценариев они уместны ты повторил фразу, которой обычно кормят вкатышей пытающихся абузить GOF где только можно. Ты видимо не работал на проектах и не знаешь, что у каждого архитектора есть свой подход структурирования и стилизации кода. Ты же блять не будешь WPF писать без MVVM? Или razor без MVC? Это тоже паттерны, но их функция так же очевидна, как и репозиторий, UOF или фабрика
Я в полнейшем ахуе. Долго сидел на старой студии, генерил edmx модели одной sqlite базы, клал их в разные неймспейсы и всё работало замечательно, а после переезда на 19 студию вскрылось, что даже ПРОСТО дата провайдер sqlite нельзя к ней присобачить без стороннего говна. Хорошо, я поставил стороннее говно, которое работает с ef6 и ВНЕЗАПНО вскрылось, что обоссаный, обосраный, никчёмный блядский ef6 по какой-то ЕБАНУТОЙ уёбищной причине не позволяет иметь поля с одним именем В РАЗНЫХ, сука, неймспейсах. Это просто охуеть, это за гранью моего понимания. Какое твоё, блять, собачье дело до того, что у меня В ДРУГИХ неймспейсах лежит, сука? Хули ты доебался, пидор? И самое главное, я так и не смог найти нормального решения для этой проблемы. Сталкивался кто с таким?
>>1983865 Да пусть называются одинаково, отдельный контекст создай, ентити воспринимает все имена в одном контексте как в один неймспейс, а вот если тебе надо что бы ентити работал с двуяма базами в одном контексте с двумя базами с одинаковыми названиями тогда ты в жопке
Ебал в рот я ваш ef. Там дохуя проблем, хвала аллаху они обходятся хоть уебищными, но костылями
Вот например. Когда достаешь из MySQL (и в помело, и в оракле, одна хуйня!!) модель объекта, внутри которого должна быть модель другого объекта тебя фреймворк шлет нахуй и вместо второй модели отдает нулл. Но!!! Если перед этим достать таблицу с такими же объектами и сделать ToList(), эта хуета блядская все таки изволит корректно отдать обе модели. пиздец как бесит, ибо каждый раз доставать по три огромных таблицы, ясен хуй это минус производительность
>>1983843 > ты повторил фразу, которой обычно кормят вкатышей пытающихся абузить GOF где только можно.
Ну, я говорил скорее всего со вкатышем выше, если это не был ты сам Ок, чем кормить вкатышей тогда посоветуешь? Перечислить весь список паттернов и сказать используй ВСЕ
>>1983922 Это будет ему на пользу, он вкатился в тред с постом в духе >Я в полнейшем ахуе >без стороннего говна >боссаный, обосраный, никчёмный блядский ef6 >Какое твоё, блять, собачье дело >Хули ты доебался, пидор?
А потом оказывается что он даже документацию не читал и в принципе не понимает как это работает, так что токсик тут не я, искреннее хотел помочь, но понял что с его уровнем понимания его лучше просто послать нахуй отправить читать документацию
>>1983941 Бака, ты где-то облажался, я специально проверял, когда создаешь отдельный контекст никакой такой проблемы нет! честно-честно! один и тот же класс записался и отчитался с 3 разных дб с одинаковым названиями таблиц, поэтому очевидно что ты явно делаешь что-то не так, в любом случае дело в тебе, а не в еф, так что вместо мата и истерики читай документацию
>>1984077 Чел, делать то, что делаешь ты, я тоже могу, но вот если пытаться делать linq запрос, например, то вылазит эта ошибка. Я далеко не один такой, сотни людей с похожей проблемой есть, у которых в проектах использовались модели с одинаковым названием таблиц и полей.
>>1984181 >System.Data.Entity.Core.MetadataException: "Schema specified is not valid. Errors: The mapping of CLR type to EDM type is ambiguous because multiple CLR types match the EDM type И дальше идёт длинный список полей и их копий, которые нашлись
>>1984181 >>1984182 хз что там у тебя вылезает, у меня все работает, вот добавил специально тебе линк, ищу по одному полю, в одной и той же таблице, и я если честно вообще не понимаю где здесь вообще может быть проблема
>>1984182 >>1984181 ЗАМЕТЬ что я даже не использовал using специально что бы показать что проблем с неймспейсами быть впринципе не может если использовать РАЗНЫЕ контексты
анон хелп! юзаю райдер для разработки на аспнеткоре. К проекту прицеплена куча зависимостей с нугета и огромная wwwdata. Когда юзаю publish на впс, каждый файлик перезаливается, что делает процесс долгим и нецелесообразным. Вместо этого просто собираю в релиз и через fz перекидываю dll приложения Как нибудь можно заставить его не перекидывать все эти лишние файлы? Добавлять исключения пробовал, райдер при публише на них хуй клал.
>>1984746 throw null А если серьезно - практика говорит что нужно null возвращать. Просто указываешь в комментариях, что если не найден - null. Так во всех нормальных апи сделано, это чет нынешние смузихлебы обленились, им видите ли сложно проверку на null сделать и вообще они золотые рыбки.
Сап, программач. Пытаюсь разобраться со странной проверкой в коде:
if (decimal.Compare(new decimal(this.ConvertToInteger(0x2c, 4)), 4M) >= 0)
Если я верно понял, то здесь почему то пытаются вместо чтения определенного свойства класса напрямую обратиться к одному из байтов его побайтового представления. Я правильно понимаю что это некий хак? Сильно не бейте, я новичок в шарпе
>>1984865 Алло, ты сигнатуру смотрел? Я должен вернуть User >или что у вас там. >Не троль тупостью. нахуй ты отвечаешь на посты, если даже не знаешь базовых конструкций языка?
>>1984746 дополню свой пост - я обычно возвращаю new User, но это же блять костыль и для него мне нужна еще одна проверка на Null, не кошерно выглядит. Может кто знает, как это лучше делать?
Поясните за ваши классы, методы, ООП и прочую гомосятину? Ведь компилятор один хуй все приводит к процедурному виду. Зачем превозмогать и разжижать себе мозг, если можно просто писать процедурный код и не париться?
>>1984955 чтобы ты/коллега через неделю/месяц/год открыл проект и понял, что там написанно. Зачем нужны ангуляры/vue/react/хуяк, если все равно сбилдит все в одну строчку?
>>1984955 Вот у меня есть коллега на работе, который пишет в процендурном стиле, на все вопросы хули он не использует ооп, он говорит что ему так ПРОЩЕ, а я все усложняю, делать классы это пиздец ка СЛОЖНО для него говорит. В итоге его код это куча методов на 200-500 строк кода с кучей ифов в котором в полной мере разбирается только он. Зато он незаменим на проекте, вот и польза от процедруного стиля.
>>1984944 Еблан совсем? У тебя юзер - ссылка? Ссылка. null - ссылка? Ссылка. Следовательно - null - это такой же юзер. Нигде, блядь, сигнатура не нарушена. Пиздец ты тупой. Я думал ты троллишь, а вон оно что. Пиздец. Может быть ты и передаваемые аргументы проверять не будешь?
Давай, тебе, еблану, пример приведу. Вот тебе сигнатура: int GetUserAge(DateTime birth). Вот как ты думаешь, что тут должно произойти, если я передам дату больше чем сегодня. Да, мы получим отрицательное значение. Должны ли мы дальше идти, если получим отрицательное значение в вызывающем коде? Нет, вызываеющий этот метод код - должен проверить и сказать - стопе, хуйня какая-то, нельзя отрицательный возраст иметь, мы это как-то сейчас обработаем. Может быть ты думаешь что будет лучше кидать тут исключение? Да нихуя, это как раз будет неправильно, потому что с точки зрения логики - все верно. Возвращать какое-то специальное значение? Еботека и все равно нужно проверять, потому это нахуй не упало. Так вот. Возвращая null - все ясно. Это валидное значение. Проверка вида: User user = null; if(user == null) Даст true, если ты не еблан что лезет все переопределять. А значит вернув null - ты вернул валидное значение которое никак, блядь, не противоречит сигнатуре и если клиент кода - еблан и не ждет что ссылка может быть равна null - пусть страдает, потому что он еблан. А если ты - идешь на поводу у таких ебланов, то ты еще больший еблан. Я все сказал.
>>1984973 >world of eblan ты видимо на грабли NullReferenceException в своей жизни мало наступал, раз думаешь, что возвращать просто null это ок. Но на данный момент я и альтернативы не вижу - вернуть new User - хуета полнейшая, нет никого юзера, выстрелить exception - нахуй нужно, через фильтр не словит, приложение упадет. Поэтому по сути и вариантов больше нет.
Сап шарпач, 2 треда назад (летом) проходил собесы в разных компаниях - от помоек до забугорного аутстафа, где не говорят ни слова по рузке. Я уже выкатывал, что у меня спрашивали (может кто помнит - я обсирался на кастах As-Is). Прошел на днях еще один собес, в этот раз успешный (ну как успешный, я отклонил предложение, т.к. не сошлись по деньгам и функционалу). Кому интересно, вот что спрашивали (позиция - Junior FullStack .NET web dev) 1. #: - Боксинг-анбоксинг, как, зачем, что если апкаст делать из одного типа, а даункаст в другой; - Enumerable, Querable - отличие, применение - Паралельное, асинхронное исполнение. I/O bound - что такое, как работает своими словами - Extenction методы - зачем, как, какие использовал на практике; - Отложенное выполнение; - Ранее, позднее связывание; - Аксессоры, доступность; - Иерархия типов, почему Valuetype class? - Что такое Using, foreach, IEnumerable? Разобрать до дочернего уровня; - Блок Try-Catch, когда, в какой последовательности, какая специфика Exceptions; - Value, reference types - различие, специфика. Стэк, хип; - GC - поколения, малая, большая куча, индекс блока синхронизации, процесс выделения, отчистки, эфимерные объекты - Рефлексия - как, зачем, где? - Мьютексы и семофоры; 2. ООП - 4 принципа ООП на одном примере; - Модификаторы доступа; - Sealed, abstract, static, struct, class - что общего и какие различия. Полезли в залупу - что же такое static модификатор (смотри ILDasm) 3. Паттерны Non-GoF: Репозиторий, спецификация, ouf, MVC, MVVM, MVP, какие еще знаю? GOF: Стратегия, фабрика, синглтон. Что жизненные циклы реквестов в ASP.NET? Различие Scope, transparent, singleton 4. ASP.NET - Фильтры, атрибуты, контроллеры (а ты знаешь чем отличается BaseController от Controller?) - Пайплайн прохождения реквеста туда-обратно; - Зачем нужен scaffolding и что это такое; - Какие сервисы использовал и зачем (CORS, DI, Swagger и т.д.) 5. EF и Linq - LazyLoading (proxy реализация, Lazy type реализация), Eager loading; - Seeds, map, builder; - Linq методы - около 10 штук спросили, еще затронули тему обобщенных делегатов (предикат, Action/Func) - Как написать свой LINQ с блекджеком и отложенным выполнением? 6. SQL - Построение архитектуры; - Связи - как отразить; - View, Алиасы, процедуры; - Различия JOIN-s; - Индексы, ключи, деревья, бинатный поиск 7. JS, HTML, CSS: - map, reduce - отличия, преимущества; - поиск объекта, какие есть способы; - DOM; - CSS, SCSS, LESS, SASS - зачем нужны, что такое; - Селекторы - Много чего спрашивали - я практически не отвечал на эти вопросы и мало запомнил, т.к. в JS и верстке - я не силен 8. Общие вопросы - Какие ДБ использовал? А non-relative? - Какие ORM использовал? ADO/Dapper? - Клиет на браузере получает ответ от сервера слишком долго. В чем причина? Как определить?
Вроде все, может что то забыл, т.к. мурыжили долго. По # я +- нормально отвечал, под конец с версткой, sql и ОРМ я уже поплыл, т.к. вопросы шли один за одним и без времени на подумать. Итог - таки дали офер, но на испыталку и с ЗП $250. Я конечно же отверг, т.к. деньги смешные, а судя по тому, чем я буду заниматся - это легаси, еще и фул стэк с версткой. Честно говоря, окончательно потерял мотивацию дальше заниматься C#, т.к. требования растут с каждым днем, нормальные компании не берут джунов, а в средних и помойках - хотят джуна за мидла продавать. Год назад я мог с базовыми знаения синтаксиса вкатиться в RoR, но подумал, что язык не востребованный. Такие дела, товарисчи.
Ну да ладно. Ты можешь поменять сигнатуру. В чем сложность-то? Что-то типа первых двух прикриплейдов. И на null свой не напоришься и всем понятно более-менее. Если тебе принципиально чтобы не нулл был и так же сигнатура - делаешь примерно как на последних 2 прикриплейдах.
Я бы все равно null возвращал, потому что это и меньше кода и никому вникать не нужно. и знать про то что есть какой-то там EmptyUser. Конечно, проверку на EmptyUser можно впихнуть в твой класс User, но это такое себе.
>>1985012 Нихуя себе Меня на первую работу взяли с зп в 400$ Задали в целом вопроса 3 Но у меня был диплом по специальности, возможно меня поэтому не пытали так сильно, хрен знает.
>>1985012 Ты на какую-то ебанутую контору наткнулся. Серьезно. Я тебе опишу как у меня собес проходил: - Привет. А ты точно программист, не похож чет))) - ^___^ - Короче, вот смотри, код. Что он сделает. - Вот что. - Хм да))) - ))) - А ты знаешь что такое список? - Знаю. Как массив, только нефиксированного размера - ))) - А дай посмотреть гитхаб - Там лабы одни, ну да ладно, смотрите - Хм, ты мы смотрим 500$ просишь. Это нам подходит - Ну ок, вы ведь повысите потом? - У нас повышение через полгода работы))) - Ну ладно, пойдет, когда выходить? - Со следующей недели, вот список бумаг что нужно принести в отдел кадров и бухгалтерию
И так примерно все проходили, что на джуна, что потом на мидла. И это было-то всего 2,5 года назад. Ну, где-то спрашивал: С EF работал? Или - а не боишься чужого кода? А в остальном - не пытались какой-то там экзамен устроить. Ну, т.е. да, я бы ответил на это все, но только само отношение же довольно неприятное. Есть гитхаб, можете дать тестовое, а эти экзамены я в вузе напроходил.
>>1985049 >>1985050 спасибо за ответ. >>1985050 реализация не плохая, но абузить лишним функционалом не хочу, т.к. уже путаюсь в 5 уровнях абстракций. Буду Null дропать, главное проверку на Null не забывать делать. Ну и в фильтр пайплайна запихну проверку
>>1985067 такого формата уже 3ий собес у меня. Первый был по телефону, когда интервьер был Джун Фронтендер (потом нашел его на Linkedin) - читал вопросы с листика и ждал ответов, которые написанны рядом с вопросом. Зато по Jquery мурыжил, хотя я изначально предупредил, что мои познания во фронте - это Material ui компоненты, которые подключаю к проекту. Знакомый пыхер начал учить позже меня и уже мидл. Зато я почитал паблички в ВК, где писали, что пыха умирающий язык.
>>1984860 Ты даун? Сам же спросил что лучше возвращать в случае такой сигнатуры, я отвечаю, в случае ТАКОЙ СИГНАТУРЫ нужно возвращать исключение, а то где ловить и как ловить это уже не твое дело, нормальный программист когда увидит название, поймет что нулл в этом методе возвращаться НЕ ДОЛЖЕН и если твой метод какого то хуй возвращает нулл то это исключительный случай и ты должен дать об этом знать, если хочешь делать метод который МОЖЕТ возвращать нулл и ты хочешь что бы другой программист это понимал что он МОЖЕТ получить нул метод должен называться "TryFind" это все описано в литературе
>>1985140 Советчик хуев, ты посмотри сначала на стандартную библиотеку. До появления Nullable reference types какой-нибудь List<T>.Find - возвращал нулл если в списке не было значения и сигнатура была: T Find(Predicate<T>). Он не кидал исключение или что-то еще. И вообще, с какого хуя-то не нахождение элемента где-то - исключительная ситуация-то? Это вполне штатная и обвешивать это дело try-catch'ами - долбоебизм. С какого хуя-то пользователь должен получать проседания производительности из-за того что еблан не прочитал комментарий и заставляет нормального человека вместо null - кидать исключение? Охуеть, блядь. С твоей логикой - пользователь ввел неправильное значение - мы вместо того чтобы сделать валидацию - и не выполняться дальше пока не введет корректно - будем хуячить try-catch. Охуенно придумал. Метод же должен принять цифру, пользователь ввел не цифру - ИСКЛЮЧИТЕЛЬНАЯ СИТУАЦИЯ, АЛЯРМ, ПИЗДЕЦ. Исключительная ситуация - это база упала, клиент на другой стороне разорвал соединение, ОС заблокировала файл и ты не можешь писать в него, ненахождение элемента в коллекции или БД - это ожидаемое поведение. Я вангую, ты как раз из тех ебланов, что из цикла выходят кидая эксепшн, хули, блядь, исклюичительная ситуация, я сделал больше итераций, чем ожидал, и похуй что этот цикл выполняется 900 раз в секунду и каждый перехват исключения - дорогая операция и просто выходи ты нормально, пользоваль бы не страдал, а ресурсы железа использовались бы нормально.
>>1985156 >До появления Nullable reference types какой-нибудь List<T>.Find - возвращал нулл если в списке не было значения и сигнатура была: T Find(Predicate<T>). а до появления ООП весь код вообще в одной куче мешаляся, реально почему перестали ? Может потому что подход к программированию изменился? может потому что совеременные проекты стали большими сложными и легкость в обслуживании сейчас мета? Может потому что так тупо удобнее?
>С твоей логикой - пользователь ввел неправильное значение - мы вместо того чтобы сделать валидацию чего?
>Исключительная ситуация - это база упала, клиент на другой стороне разорвал соединение, ОС заблокировала файл и ты не можешь писать в него, ненахождение элемента в коллекции или БД - это ожидаемое поведение. Ты так сказал? Исключительность ситуации зависит от контекста, определяется по потребности!
>Я вангую, ты как раз из тех ебланов, что из цикла выходят кидая эксепшн, хули, блядь, исклюичительная ситуация, я сделал больше итераций, чем ожидал, и похуй что этот цикл выполняется 900 раз в секунду и каждый перехват исключения - дорогая операция и просто выходи ты нормально, пользоваль бы не страдал, а ресурсы железа использовались бы нормально. Доношу до твоего ведома что попытка поймать исключение нужна именно что бы такой хуйни не происходило, что бы не было так что цикл работает 100500 раз и после прогона все идет в пизду потому что в самом начале прогона мы получили данные которые не ожидали, но не остановили цикл и он в холстую отрабатывал что бы поток упал вконце, или что еще хуже. Что бы поток упал в какой-то важной части программы которая полностью ее ложит, именно поэтому важно ловить исключения сразу, кроме того такой подход упрощает дебаг и обслуживание, потому что если продолжать программу при исключениях и они будут вылезать где нибудь потом в другом месте и в другом контексте можно ебнуться пока ищешь в чем проблема
>>1985143 давай линк лучше, где пишут, что нужно дропать exception >>1985156 >>1985190 Есть два стула - на одном Null точенные, на другом NullReferenceException дроченые. Куда сам сядешь, куда коллегу посадишь?
>>1985012 Ну и лалка ты. Я за 650 устроился в контору с кучей микросервисов, фшарпом, хайлоадом, cqrs и без фронтенда. Спрашивали только голый шарп, опыта работы никакого не требовали.
>>1985286 > Я за 650 Я что-то не понял, а где зарплаты по 300000000кк/сек у программистов? Я за вахту 15/15 получаю 1500, нахуя вы геморрой зарабатываете за 650? Лел.
>>1985366 Ну это моя первая работа, сижу дома на удаленке паралельно с универом который тоже на удаленке и получаю выше средней зп по городу. А вахта 15/15 это когда на 15 дней куда-то пиздуешь? Ну пиздос, завидовать нечему. Года через два, при выпуске с универа, буду так же удаленно 1500 зарабатывать.
>>1985442 >буду так же Не так же. Ты будешь красноглазить 16/7/365, а я, отработав 5 дней, буду две недели отдыхать и саморазвиваться, изучая, к примеру, С#
Сап, помогите пжалст, каким образом я могу получить коллекцию string из listbox(WPF). Допустим там лежит у меня 4 строки {"A", "B", "C", "D"}, каким образом я могу получить именно "A", "B", "C", "D", а не тип данных, вроде listboxitem?
>>1985740 Ну блин, а как по твоему при условии что ItemCollection - хранит тупо object и ListItem в свойстве контент - хранит object - доставать предложишь? Ты не сможешь без еботеки там линку использовать. Без if is ты не можешь быть уверен что тебе что-то другое не подсунули. Это довольно простой способ, при этом он понятный. Конечно можно эти два if объединить в один, то тогда читаемость, на мой взгляд, просядет. Это конечно не идеальный способ, потому что т.к. там контент - это может быть и какой-то более сложный объект, например другой контролл, но уже приведя к IEnumerable<T> можно дальше линку юзать и достать что тебе нужно.
Сап шарп, можно ли как-то в впфе закрыть showdialog окно при нажатии курсором за пределами окна? Я пробовал OnDeactivated, но оно очевидно не работает. Пробовал еще сравнивать через Control.MousePosition, тоже нихуя (showdialog окно считается как fullscreen?).
>>1986299 Третий год работаю бэком, и могу сказать, что половина гребцов отсюда половину слов не знает, про вторую слышали.
Я вообще всегда охуевал от сложностей собесов, ты там и деревья покрути и расскажи как .NET внутри устроен и подрочи троим сразу, а потом будешь дальше джейсоны перекладывать.
>>1986343 Коллега, которого считали самым безалаберным и слабым программистом, который бы не прошел ни одно собеседование, посмотрел на Udemy курс за 20 баксов и сварганил на коленке проект и ему уже капают с него деньги. Да, он не знает разницу между классом и структурой, никогда не пользовался абстрактными классами, методами расширения и не ебет что такое апкаст, боксинги.
>>1986299 >>1986343 >>1986354 Самый большой провал в том, что я иду точь в точь по Roadmap изучения .NET - исписал с 10+ проектов от консоли, десктопа на WPF заканчивая 3-4 проектами на веб стэке - ASP.NET MVC5, Core. Потратил на это уже около 3 лет своего времени до/после работы. По итогу - оффер с $250. Я это воспринял, как насмешку. Это по сути минималка блять. Дворник или уборщица столько же зарабатывает. И кстати мне раньше вообще предлогали за бесплатно несколько месяцев поработать, такое ощущение, что они дают золотой билет в жизнь, за что я им должен быть безмерно благодарен. Я не омежка, обычный нормис, но какие то додики, так плюют в лицо спрашивая за семофоры, мьютексы и реализацию GC. Чего блять? Это же низший уровень абстрации. А про ILDasm зачем спрашивать? Я из за своей упорости уже выдрочил тему сборки мусора и выделения памяти, так что следующего пидараса, который спросит что то про реализацию и процессы GC я так выдрочу, что у него кефир из жопы пойдет. Мне уже похуй на этот C# стэк. Помойка ебаная. Я скорее пыху за месяц выучу и пойду копейку зарабатывать, чем продолжу пытаться устроиться на .NET (еще и футстэк, ага, привет). Единственное жаль - это потерянного времени. На изучение #, на написание петов, на выдрачивания вопросов из quiz, которые на практике не встречаются от слова совсем.
Меня очень тошнит от студии, но на работе лицензию райдера не выдают. Насколько рисковано сидеть на крякнутой версии/студенческой лицензии? Менеджер сказал что если так сделаю, то жидбрейнс все задетектит и моей конторе из-за меня выдадут штраф, это правда или он пугает просто?
>>1987202 Правда. Я из-за того что студия начала подбешивать тем что считает себя умнее меня - пересел на вим. Божественная хуйня на самом деле. Базарю. Когда разберешься - писать там код - одно удовольствие.
>>1987199 Ну это совсем какой-то пиздец. Я потратил на вход в .net пару месяцев на курсах, потом пошел на стажером за 600 usd, через три месяца джун за 900. Но вообще вкатываться проще всего через тырпрайзы со стажировками/курсами, и. т.д. у них есть всегда процесс обучения и бабос плотят. Сам где-то полгода искал джуном работу и были одни стартапы в духе мы тебя оформим через три месяца работы
>>1987303 Та я и так с вим модом что на студии, что в райдере сижу. Но чет студия подлагивает пиздец, да и вим мод в нкй кривой какой-то.
Но вообще, писать на виме когда есть иде - извращение. Зачем позбавлять себя дебагера, автокомплита, рефакторинов? >Я из-за того что студия начала подбешивать тем что считает себя умнее меня Так ей всегда можна заткнуть ебало или сказать что она не права и должна делать вот так, а не так.
>>1987199 Нужно не по родмапам ходить было и пилить петпроекты - а по собесам бегать. Меня на первую работу взяли всего с одним вопросом: что делает модификатор out. Все, блядь. Какие еще нахуй сборки мусора? Какие нахуй блядь выделения памяти? Вы че? Я слов таких не знаю. А сейчас, спустя 2 года таких вот беганий по собесам и смен работы - закидывают предложениями, я правда отказываюсь, потому что почти везде хотят фуллстек, а попробовав фуллстеком работать - я понял что ненавижу JS и все что связано с фронтендом. При этом я даже ни одной вашей шарповской книги не прочитал, кек, я плосовиком так-то собирался быть и просто пробежался глазами по метаниту, когда понял что с плюсами только на завод либо за бугор.
что за хуйня пацаны, почему в одном требе истории как мужик впахивает за 250 бачей и о том как сложно найти РАБоту, и в том же требе аноны расказывают что у НИХ в конторе берут кого попало лишь бы мог по клавишам тыкать, как на самом деле сейчас выглядит вкат для непосвященных?
>>1987652 Потому что капитализм-с, За одну и ту же работу можно выживать за МРОТ, а можно получать 2к баксов. В целом, мне кажется, это одна из основных причин, почему работодатели так старательно стараются спрятать ЗП вилки за стеной: "Каждому по способностям", "Достойная ЗП" и прочего. И самое смешное, что в рамках одной должности могут быть совершенно разные ЗП.
У нас до смешного доходило, что чувак, который стал 3-летним инженегром получал денег меньше, чем его официальная вилка была.
>>1987658 Ну так рыночек тогда как-то не правильно решает, потому что очевидно что если есть зарплата выше тогда программеры будут идти туда, а если на место будет большая конкуренция то там зарплата будет падать, вилка должна уменьшаться, это работает везде кроме программеров почему-то, у них вилка неадекватно большая
>>1987670 >потому что очевидно что если есть зарплата выше тогда программеры будут идти туда
Ну, тут вижу бешеное комбо общей инфантильности ИТ-шников (типа мне и так норм, не хочу выходить из зоны комфорта и проч-проч-проч) и машины по промыванию мозгов в корпах. Те же крупные тырпрайзы активно используют всякий разный стафф типа тимбилдингов, бесплатной газировки и дмс-ки, что бы удерживать среднестатистических гребцов на ЗП ниже рынка найма.
Плюс синдром самозванца.
Плюс действительно хороших программистов нихуя нет, в целом это видно, по тому, что на НОРМАЛЬНЫЕ должности найм может идти годами, а на баунти за привод друга на них можно вполне купить какой-нибудь рено логан. Зато дохуя даунов, которые надрочили литкод и пиццот фреймворков, но при этом не могут три строчки кода прочитать
Ну в общем согласен со всем, добавлю еще только что программеры обычно не очень общительные и не любят смену компании потому что для них это очень болезненно происходит, к тому же даже нижняя планка выше чем у большинства профессий и этого достаточно что бы жить не хуже других
Как в этом ебучем Visual Studio сделать так, чтобы неправильно введенная команда автоматически исправлялась? Эта функция раньше работала, но я что-то нажал и ВСЕ, редактор перестал автокорректировать неправильное написание.
Сижу гуглю уже ебаный час и НИХУЯ, как будто никто и не знает про эту функцию. Может тут кто-то знает?
>>1987658 Я одну штуку еще давно понял, денег дают столько сколько просишь. Сам в коммерческой разработке уже 15 лет, сменил 6 работодателей. Если бы не менял работу, так и сидел бы где-нить за $500 хуярил.
Помогите с winforms опять, для окна регистратуры больницы нужно расписание с часами приема и возможностью на это время записать соответственно, как это реализовать можно? На ум приходит datagridview только ,но как тогда сделать, чтобы через нее что-то записывалось? лучше пример покажите Недельное расписание с понедельника по пятницу например
Пацаны, а в светлой или темной теме работаете? Раньше всегда работал в светлой на ВС. Сейчас пробую темную в Ридере. Вроде прикольно с одной стороны, но с другой как-то хуже получается сосредоточиться на коде.
>>1948100 Это проблемы не только жабаскрипта но и многих других языков которые поддерживают арифметику для чисел с плавающей точкой, вина конкретно жабаскрипта и некоторых других в том что не сигналят исключения и не дают задавать режим округления
Впрочем, причина такого упрощения очевидна - зачем вебмакакам вообще знать что это такое, смузи сам себя не выпьет а очередной говнофреймворк сам себя не выучит
Не отменяет остальных претензий к языку мимо проходил
>>1987652 >мужик впахивает за 250 бачей я писал выше, что отклонил такое предложение, т.к. посчитал это насмешкой. Я сейчас работаю (не буду вдаваться в подробности кем) зарабатываю $800, работая по 2-3 часа в день. Решил свичнутся еще 3 года назад, когда зарплата была в 2 раза меньше. Я знакомому деву описал ситуацию с собесом и такими насмешливыми предложениями, так вот он сказал, что на одно место трейни/джуна в .NET стэке по 30+ кандидатов. Резюме с пометкой Junior/Trainee/Beginner - даже не рассматривают. И некоторые вполе готовы работать за бесплатно (да, да, приходят выжигать глаза за $0.00), просто чтобы набраться опыта и съебать в роли мидлов в нормальные конторы. IT 2к21
>>1988379 > одно место трейни/джуна в .NET стэке по 30+ кандидатов За год к нам на завод пришел только 1 человек((( Платят со старта трицатку. ХЗ, может быть это тоже "насмешка" для современных смузихлебов, но в нашем регионе это в 1,5 раза больше средней ЗП, а через год, если не совсем дебил, поднимают до 50к, я собственно так и зарабатываю сейчас. Челы что давно тут работают 200к получают, что опять же по меркам региона - охуенные суммы, двушка в центре стоит 2 ляма, считай за 2 года спокойно заработать можно. Но нет никого. Наши менеджеры по подбору персонала уже с ума сошли и засылают тонной спама про: Приведи чела и получи ништячки.
>>1988408 Это выбор каждого - верить или нет словам на борде. >на завод кстати я такие места даже не рассматривал, только аутстафные галеры. Все, что связанно с бугром - это деньги. Да и с английским проблем нет. Но это уже лирика.
Кстати, шарпаны что опытнее - поясните. Вот я работаю уже полтара года. Мне сыпятся предложения, но во всех - на первом месте - фронтенд. Т.е. так в вакансии и пишут: требуется разрабатывать какую-то фронт-хуйню, ну и мимоделом пилить себе апи. На текущей работе у меня - наоборот, я в основном беком занимаюсь и там всякие системы сбора и анализа данных, а фронт - ну нахуячил я быстро чтобы не в сваггере клацать, потом наш фронтендер чутка привел это в более-менее презентабельный вид. Так вот. Это просто мне не везет или все дело в том, что я еще и среди тегов таки добавил фреймворки которыми пользуюсь для разработки фронта? Я-то их знаю постольку поскольку, ну, типа да на - отрисовать пару формочек, послать туды-сюды запросы да в хранилище сохранить результат. В общем - хуета. Но ЗП предлагают от 100-150к, что считай x2-x3. И как-то даже начал задумываться о том, чтобы более подробно в изучение фронта погрузиться. Но я не люблю фронт и не хочу особо им заниматься, мне нравится бек. Может быть если я уберу все что связано про фронт - больше будут завать именно на бекендера? Или это просто специфика шарпа такая, что тут либо фуллстек - либо пиздуй в юнити?
>>1988536 Про десктоп не совсем так Там и бэк и фронт Десктопные приложения тоже могут быть клиент-серверные, внезапно. В том смысле что ты сервер сам пишешь, где сервер это виндовая служба, которая доступна по локальной сети. Ну и на фронте реализовывать больше всего нужно, так как нету браузера, который много чего за тебя делает. Также десктопыне приложения могут работать вполне себе автономно(толстый клиент), иметь свою отдельную базу, сливая время от времени какую-то инфу через веб сервисы. То есть нету такого как в вебе, где фронт вообще не работоспособный без сервера.
>>1988762 Ну вообще-то если писать виндовый UI по нормальному, то там тоже будет четкое разделение на model-view-presenter (controller) или вообще MVVM в случае WPF.
>>1988416 Кстати я тоже заметил уже года два такую фишку, вот раньше, нужно было сделать микросерис, искали на фуллстак бека который может что-то сварганить и на фронте, ну что там программеру научиться этого фотопеинта, денек два покликал и уже что-то можно настряпать, подключить бутстрап, библиотеки всякие и ок. так раньше бы было, брали бека платили 100% за бека ну и долпчивали за фуллстак как еще часть от ставки фронта, примерно 20-30%
А сейчас на микро сервисы берут на фулстак как бы как ДИЗАЙНЕРА ну и говорят мол, ну апи ты себе допишешь, понаподключаешь себе библиотек там, идентити всяких, сгенеришь базу, разберешься как-нибудь, и платят соответственно 100% за дизайнера и доплачивают за фулстак как 20-30% ставки от бека, та же самая работа по сути и зарплата получается меньше раза в два, охуеть тенденции, чую что надо быстро накапливать кубышку и самому становиться жидокапиталистом потому что у программистов малины все меньше...
Мужики, помогите, я походу сам себе выстрелил в ногу. Есть одно задание, где мне надо читать по 3 символа. В задании указанно именно 3. Я старался всё делать по солиду и высрал пикрил метод в классе Reader куда передаю StreamReader. Сначала возвращал просто строку, а потом показалось, что это некошерно, и решил запилить record Word, от которого наследуется ThreeLetterWordRecord, где хранятся 3 чара. показалось, что если делать new string будет производительность хуже, хуй знает? Алсо, я использую Word как ключ в словаре. Но сейчас у меня получается, если передать значение отличное от 3 в TryRead, то всё по пизде пойдет. Пока придумал сделать TryRead abstract и запилить ThreeLetterReader и отнаследовать его, и там использовать этот самый ThreeLetterWordRecord. Так вот, это нормально я нахуевертил или лучше использовать просто строку и не ебаться или еще чего-нибудь?
Я словил какой-то пиздец с datagridview - не отображаются данные, т.е я пытаюсь их добавить через datasource или вручную через .Rows.Add() и через дебагер я вижу что коллекция в нем есть, но на форме ничего нету, только хедер столбца. В чем может быть дело?
>>1988884 word - это char[3]. Я просто всякое подумал, что надо на каждый пук свой класс. Вдруг там мы захотим не в виде строки хранить а еще как-то, или хуй знает.
>>1988892 >просто всякое подумал, что надо на каждый пук свой класс. Вдруг вот вдруг и сделаешь, нахуя заниматься таким вот дрочением я хз, это не ооп и солид, это маразм какой-то, в крайнем случае хранил бы тогда в виде битов, и уже оттуда преобразовывал куда там в будущем надо, зачем нужен лишний посредник?
>>1988894 >>1988901 Задание в текстовом файле подсчитать 10 самых часто встречающихся последовательностей из 3х букв. Да, походу я обосрался, спасибо, что указали.
Кто в курсе, сильно ли отличаются стандартный Entity Framework и Entity Framework Core? Нужно выучить второе, но по первому есть отличные курсы, жалко выбрасывать.
Добавляю в Wpf'e - ListBox.Items.Add(new ListBoxItem() {}); Вопрос - как добавить скроллбар в листбокс? Пробовал прописывать в scrollviewer - scrollbarvisibility, cancontentscroll и добавлять scrollviewer.
Сап, шарпаны. Все знают, что у вас просто тонны сахара. Такой вопрос - можно ли в шарпе создать такой класс, объект которого можно напрямую инициализировать литералом? Например, так, очевидно, можно: string someStr = "этот вопрос полная хуита"; А есть ли способ сделать так, что было можно: myStringWrapper someStr = "не такая и хуита уж";
>>1910324 (OP) Привет, аноны. Помогите, пожалуйста, советом. В общем сел делать курсач, результатом выполнения которого должна быть десктопная прога(для виндоус), в которой пользователь вводит в поля параметры некоторые, затем исходя из этих параметров сишарп скрипт задаёт поведение 2д-анимации на юнити, которая проигрывается в окошке этой десктопной программы.
Какой тип проекта мне для этого нужен? ВинФормс и всё? Я не могу вкурить, в чем такая принципиальная разница между этими винформс, uwp и wpf
>>1989200 Еще и жопой читаю. Пиздец.Короче, не первое слово, а 10 первых нужно будет взять. Пиздец я даун. Хорошо наверное что не согласился идти на собес.
>>1989210 Не волнуйся, ты не один такой лох Я работаю за 110к и у меня 5 лет опыта
Читалка на телефон (Андроид)
Аноним07/04/21 Срд 20:27:54№19892481633
Сап, аноны
Собственно, мне через 2 месяца сдавать курсовую РАБоту по шарпу. Пока что остановился на читалке, но не знаю (не понимаю) алгоритма, да и какую технологию вдобавок использовать.
>>1989142 Из всего, что нагуглил, есть только возможность запустить уже собранное юнити-приложение внутри винформс.
А мне нужно, чтобы была возможность из самого винформ-приложения в поля вписать параметры, затем запустить анимацию с этими новыми параметрами.
Пока не нагуглил, как это сделать, но, возможно, я не теми словами всё это время гуглил, у меня несколько раз бывало, что я так не мог найти инфу, которая лежит на поверхности.
>>1989248 Мобилки - замарин. Алгоритм: два пути. Добро и зло. Добро - берешь и читаешь спеки нужного формата - делаешь все по спекам ручками, получаешь криво-косо поддержку форматов. Препод будет доволен - ты получишь опыт. Зло - открываешь нугет и ищешь нужные тебе пакеты. Можешь обернуть это адаптерами, чтоб типа солид, вся хуйня. Собственно - все. Препод будет недоволен, но никуда не денется и курсач зачтет. Как-бы вуз такое место где предпочтительнее как раз добро. Зла ты наделаешь когда работать пойдешь.
>>1989142 >>1989267 А почему бы юнити юи не использовать? Че у тебя за задание на курсач такое? Потому что звучит как-то дико.
Вообще ты можешь сделать очевидную вещь - сохранить параметры в файл и запустить юнити программу которая его считает. Может быть в юнити еще можно как-то прочитать аргументы командной строки, погугли
>>1989413 Я вот нашёл, как запустить стэндэлон юнити экзешник изнутри винформс. Сейчас разбираюсь, как делается общение двух программ через IO.Pipes.
>А почему бы юнити юи не использовать? Че у тебя за задание на курсач такое? Потому что звучит как-то дико. Мне для управления объектами анимации затем нужно будет еще ML прикрутить, лол. Насколько я успел понять, сделать это изнутри самого юнити-приложения не представляется возможным. (может я ошибаюсь, хз).
>Вообще ты можешь сделать очевидную вещь - сохранить параметры в файл и запустить юнити программу которая его считает Мне тоже это в первую очередь приходит в голову, когда дело касается неких параметров, их задания, сохранения и чтения, первая мысль - json файл. или типа того. Но тут ещё будут кнопки, которые, например, генерят новый объект по ходу выполнения анимированной сцены. И вообще сцена запущена в течение всего выполнения программы, у меня будут глоабльные параметры, которые возвращают объкты восвояси, останавливают все телодвижения и так далее. Так что файл с параметрами не подходит.
>Че у тебя за задание на курсач такое? Потому что звучит как-то дико. Задания, как такового, ещё нет, есть только тема и примерно обговорённый конечный результат практической части. Вообще это не курсач, а ВКРБ, просто быстрее было написать курсач.
>>1989462 > Мне для управления объектами анимации затем нужно будет еще ML прикрутить, лол. Насколько я успел понять, сделать это изнутри самого юнити-приложения не представляется возможным. (может я ошибаюсь, хз). Я уверен, что можно, погугли в этом направлении. В юнити же весь твой код - это обычная ассембли, которая может делать то же самое что и любая другая ассембли, хоть ссылаться на любые другие ассембли, хоть любые стандартные библиотеки дергать, да хоть с++ либу.
>>1989054 Ну, это просто в порядке интереса, а не для практики. Чтобы сделать например полный аналог строк, но со своими фичами, например перегрузить конкатенацию чем-нибудь другим, определить инфиксное умножение через оператор * и прочее такое дерьмо. Весело же было бы.
Подскажите пожалуйста, можно ли как-то в wpf'e растянуть элемент на все оставшееся место на форме? Т.е. в stackpanel'e контрол находится по средине, над ним условный хедер и под ним футер. Гридом со звездочками как-то всрато получается.
>>1910324 (OP) Всем привет. Есть аноны Новосибирцы? Скоро буду к вам перекатываться, посмотрел на вакансии джуна. Нашёл пару штук и все. Как быть? Реально такая жопа с c#? академ городок не рассматривал.
>>1989656 2 года. Ну да пофиг же. Я как-бы действительно не за ЗП шел, мне нравится код писать и кроме этого я еще и ничего не умею. Короче, мне норм. Просто заебывают родственники, которые думают что я вру насчет ЗП, заебывают знакомые, которые насмотрелись реклам курсов и думают что я просто ебанутый, раз второй год в одних кросовках и джинсах хожу, при том что мне с моей ЗП нужно 16к за квартиру отдавать, заебывают рекрутеры, которые зовут на стек, который мне не интересен и в котором у меня мало опыта. Хочу, блядь, писать бекенд и ничего другого не делать. Тут - к моему счастью - так и происходит - ТЗ спустили - сказали делать, дали срок, сделал - заебись, вот следущее ТЗ, никаких обсуждений, никаких взаимодействий с другими людьми, просто пиши код - получай свои деньги.
Есть такой код Почему оно в случае передачи параметра в дженерик тип, неявно конвертирует к интерфейсу Method( b ); А внутри метода нужна явная конвертация? Method<int>(); Ведь и то и другое это апкаст.
Поясните лучше вот за что. Смотрите, есть либа в которой реализовано общение с устройствами по UDP. Но в этой либе все запросы - синхронные. Так вот, интерфейс для всех таких либ имеет вид: Task Send(byte[] data, CancellationToken ct); Task<byte[]> Receive(byte[] data, CancellationToken ct); Так вот. Нормально ли просто вызовы этих методов обернуть в Task.Run? Просто я не совсем понимаю как сделать адаптер для синхронного кода, который в соответствии с интерфейсом должен был бы возвращать таску.
>>1990363 Есть у евреев золотое правило, если умеешь что-то делать не делай это бесплатно, хотя бы из солидарности к своим братьям программистам, пахать за еду дело в кативальщиков, а ты своими действиями просто дискредитируешь программистов и демпингуешь цены, не хорошо так...
Есть кто работал с WindowsFormsHost на впфе? На винформах один и тот же код работает нормально, а на впфе не отображается текст на одном кастомном контроле. В дебагере в свойстве этого контрола текст есть.
Какого хера в аргументе base() у конструктора нельзя использовать присваиваение? У присваиваня же тоже есть реузльтат типа который можно передать дальше.
>>1990844 Мне этой конторе приятно. Тут сидят челы сиплюсплсеры, которые 200к+ получают(еще и недовольны, в регионе - 20к средняя ЗП, а они хотят больше того что им плотют) и им не хочется об шарповский код руки марать, с другой стороны - руководит мной бывший пехапешник, который на деле - не шарит особо(ну как, общее понимание у него в разы выше моего, потому что опыт и все такое, но конкретно шарп довольно слабый) и потому у меня полная свобода, ну а с третьей - фронтендер - бывшая джавистка, которая не знает что такое CSS. Чела, что действительно шарил за шарп более-менее - поставили руководить отделом отельным. Я тут полностью себе предоставлен, на деле - любую хуйню могу протолкнуть только потому что никто не знает нихуя. Взял - и предложил интересную мне хуету, пояснил чем полезно, и т.к. никто не может кроме меня ее реализовать нормально - дали мне, я сижу, читаю книжки, статьи, делаю каты и потихоньку пилю, говорю что сложно, хотя мог бы за неделю нахуячить. Чел что мной верховодит думает, что я просто из-за того что нет опыта достаточно такой медленный(среди коллег у всех 10+ лет опыта). А на фоне тех людей, что таки приходят - я действительно неплох, потому что за время что я работаю пришло 10 челов и они даже строчки кода за время испытательного срока не смогли написать. Короче, я уже сказал. Мне как-бы норм, а вы-то сами и не пошли бы в такую контору, где зазывают сеньеров ЗП в 80к(там повышают за выслугу лет в основном, те плюсовики - 20 лет опыта и 200к+, но новичок что придет на их позицию будет стартовать с 80к). Это же не галера какая-то или стартап, это, блин, контора, что в своей области - лидер по рынку и считай уникальный продукт делает. Я вангую что вы даже название не знаете, но продукция ее у вас есть. Блин, чуть нда не разгласил, алкоголь дело плохое. В общем - мне норм. Мне все нравится.
>>1991357 > тут полностью себе предоставлен, на деле - любую хуйню могу протолкнуть
Вот двачую Уже почти 5 лет на одном месте так тоже работаю, в продуктовой компании. Потому что думаю, если на галеру перейду, там будут всякие митинги, контроль продуктивности и прочая поебень. А тут простор открыт.
>>1991404 что нужно знать по алгоритмам, чтобы претендовать хотябы на 30к рублей в месяц ? Нужно ли придумывать новые сложные алгоритмы, или задачи решаются встроенными методами, и очень простыми самописными скриптами как например в олимпиадном программировании есть задачки на комбинаторику, и в некоторых случаях нужно применять расчёт чисел каталана ?
Бля ребят чаму не передается объект в контролер? В БД создается запись но она пустая. Вроже же все по примеру сделал. Пикрил1 представление пикрил2 модель пикрил3 метод контролера.
>>1991573 Бля потому что не сработала миграция. Тогда вопрос второй почему она не сработала? А сейчас повторно выдает ошибку. Пикрил первая миграция но без полей найм и эйдж, а только ИД. Вопрос какова хуя не все поля добавились ?
Я так понимаю к представлению можно привязать одну модель?
Вот к примеру есть форма с добавлением с предыдущего скрина к этому представлению привязана модель @model Test3.Models.User
И я как бы хочу что бы ниже формы у меня выводило все записи с бд код примерно таков должен быть @foreach (var u in User) { <tr> <td>u.Name</td> <td>u.Age</td> </tr>
Я передаю в контролере в типе метода [HttpGet] лист с записями в бд return View(db.Users.ToList()); но что бы его вывести мне нужна подключить модель @model IEnumerable<Test3.Models.User> . Правильно ли я понял что нельзя 2 модели использовать? И мне надо использовать для этого частичное представление?
>>1991635 Сорян за шитпостинг) Мне сильно помогает когда я сначала пишу вопрос а потом мне как то легче самому его решить. Через вьюБаг передаю.
Но когда добавляю новую запись вылетает эксепшн Object reference not set to an instance of an object. Я так понимаю что из за того что нужно вывести записи из бд а во вью бег пусто так как в ГЕТ запросе я не передаю ничего
Обоснуйте преимущества WPF перед WinForms. Когда я начинал учить шарп и думал, что выбрать для интерфейса десктопных приложух, то увидев код WPF, я подумал, что это веб-параша и стал учить формы. И формы мне кажется сделаны очень круто и очень продумано. Но все, даже сами MS, почему-то их ругают и хвалят WPF. Обоснуйте почему.
>>1991765 Ругают, в основном, за то что на формах довольно сложно разделить представление от логики. В ВПФ - тебя вынуждают писать более-менее нормально и разбранится с MVVM. Ты будешь плеваться, ты будешь считать это лишним усложнением, но в конечном итоге ты получишь какую-никакую но структуру и сможешь переиспользовать код в других проектах. А это как-бы то чего хочет безнес. Никто не хочет платить 100 раз за одну и ту же работу. Ко всему - простота модификации визуального представления в ВПФ оч сильно помогает. Вот сколько тебе придется кода нахуячить чтобы сделать, скажем, кнопочку внутри которой есть чекбокс и картинка на формах? В ВПФ ты делаешь это в замл разметке и все, охуенно. Да, на формах тоже можно писать нормально и тоже можно добиться того поведения, что есть в ВПФ, но это делается через жопу и нет каких-то прям стандартов, а сам редактор форм не будет тебе отображать что ты там нахуевертил. В ВПФ - за тебя решили - тебе просто нужно делать как сказали и будет ОК, оно будет отображаться в редакторе и вообще.
>>1991765 В впф намного проще создавать свои контролы и изменять внешний вид и структуру уже существующих контролов, расширять поведение уже существующих контролов с помощью атачед пропертис, которые потом можно использовать по всему проекту. В винформах обычно с этим не парятся и покупают уже готовые контролы.
Бля, Райдер меня доебал уже. Время от времени он не дает мне комбинацией клавиш Ctrl+Alt+/ закоментить выделенные строки. Выдает вот это сообщение. Что это такое? При этом через контекстное меню закоментить получается.
>>1991903 Сиди на VSCode и не выебывайся. Райдер только в комплекте с хуетой для отладки нужен, писать в нем код неудобно, эти, блядь, аннотации с типом - пиздец нахуй. Короче, буть мужиком и юзай VSCode Для кода, райдер/студию для отладки. Так все ровные пацаны делают.
>>1991882 Бамп вопросу. Читаю и не могу понять как ваще работает . [Authorize] - запрещает доступ к методу контролера неавторизированому юзеру, ну а куда он тогда попадает и какой контролер и метод обрабатывает его запрос то?
>>1991963 Ты пытался сам хоть раз написать веб-сервер? Если бы пытался - было бы очевидно куда. В дотнете это делается "мидлваром". Если более обще говорить - у тебя есть цепочка ответственности. Получив запрос и распарсив его - он передается какой-то сущности, которая уже внутри себя решает что делать с контекстом подключения: тут мы проверили заголовки - все вроде норм, тут мы проверили путь к ресурсу - ага, такой есть - передали дальше, тут мы видим что ресурс требует авторизации, мы смотрим есть ли токен/кука или что-то еще, ага, нету - до свиданья - 401. Возьми обычный сокет, напиши парсер http и попробуй сам, блин, сделать веб-сервер, пусть и простой. Все станет понятно и такие вопросы не будут возникать.
>>1991996 Там и не обязано быть 401. Я просто пытался тебе объяснить как примерно цепочка ответственности работает. Можно хоть файлом с черным властелином отвечать, если так хочется, можно - рвать соединение, можно перенаправлять на страницу с авторизацией. Суть. Под капотом есть класс примерно как на прикриплейд. В контексте дотнет кора ты такие классы сконфигурировал в Startup в методе Configure. Все эти app.UseHttpsRedirection, app.UseRouting и т.д. это как раз примерно такие вот классы, с логикой, что делать с запросом, какие-то просто берут оттуда данные и подставляют другие, какие-то - проверяют пускать ли дальше, какие-то перекидывают запрос на другой маршрут и т.д.
>>1992053 Потому что Attributes - IEnumerable. Что неясного? Там даже из названия понятно это. Соответственно тебе нужно сделать что-то типа: b.Arrtibutes("цена_книги").Where(x=>double.TryParse(x.Value,out _)).Select(x=>double.Parse(x.Value)).Where(x=>x<600)
Сап, возможно вопрос повторяется. Просят ли для вката вышку (ДС)? Как вообще вкатываться, и опыта набираться для этого? Вообще непонятно, если с пыхой яснее. А тут интерпрайз. И по-моему джунов не берут, и трейни.
>>1992396 В энтерпрайз как раз трейни и берут. Нихуя не требуют, платят относительно дохуя, так еще и учат. Но хз нужна ли вышка, я прост сказал что учусь.
>>1992396 Вышка нужна что бы заказчику сказать что она у тебя есть. Если нет то работодателю скажи прямо что нет, а он тебя потом попросит заказчику сказать что есть. С первой зп просто купишь корку какого нибудь аграрного универа и все, один хуй ни кто даже и не подумает у тебя показать эту корку. Можно в принципе и не покупать но так ты просто совесть успокоишь, что мол ты же не соврал у тебя рили есть корка. Хахалева людей судила без диплома и все похуй было, а ты тут паришся за свою корку.
>>1992945 Что ты имеешь в виду под интерпрайз компаниями? Есть продуктовые компании, которые выпускают свой продукт и продают его(гугл, амазон, майкрософт) Их тоже наверное можно назвать интерпрайз компаниями.
Есть галеры, на которые берут гребцов за сухие галеты с чаем. К таким компания обращается бизнес для разработки и поддержки приложений, ну например почта россии или волмарт. Тоже интерпрайз.
Ну как ты уже понял отношение к сотрудникам и к работе в таких компаниях очень разное. На галере тебя будут ебсти и в хвост и в гриву так как они деньги получили и им нужен результат. В продуктовых компаниях немножко по мягче все, но хуй пинать тоже ни кто не даст.
ИТ компании это не завод где смотрят бумажки и твои школьные дипломы с соревнований за 6 класс. Показываешь скилл - получаешь офер.
Как по мне самое лучшее место для вкатывальщика это стартап который нашел инвестора и только начинает разработку. Тебе не надо разбираться в старом коде. Если дело выгорает то через год берут еще прогеров, а так как ты проект уже хорошо знаешь то можно и деньжат так хорошо запросить. Ну а если деньги все спиздили то можно в резюме написать мол работал на инновационном проект то чет как то не удалось.
С удивлением для себя обнаружил что asp Identity не работает с code-first подходом, таким образом identity не может быть использован в core 3.1 и .NET 5
По сему у меня вопрос, нахуя вообще нужны такие "апдейты" если они только урезают функционал и замедляют производительность?
>>1910324 (OP) Литература в шапке актуальна? Попрыгал по туториалам разным, пописал калькуляторы, а в итоге каша в голове. Хочется структуризировать познания, по полочкам раскласть. До сих пор не ебу как вставлять SOLID-принципы в код, все что из меня выдавливается это классы с приватными полями и кучей функций без интерфейсов и прочего.
>>1993515 Если у тебя нет ни одной интересной темы которую тебе бы самому было интересно решать программирование не твоё, помню для меня в вышке было проблемой как оправдать все интересующие темы в один диплом, я разрывался от возможных идей и фич которые мне хотелось реализовать, если у тебя таких идей нет программирование не твое
>>1993521 Был... пилил нейронки для проверки качества лопастей турбин под микроскопом, потратил все собранные за года полимеры на это... и только все начало срастаться охуенно, ебнула эта ебучая корона, после этого авиапроизводителям стало не до нейронок, поэтому отложил этот стартап так сказать до лучших времен...
сап. выбрал тему диплома создание складского приложения. необходимо на шарпе сделать логику с фильтрами и через фреймворки создать базу данных на MySQL. Где можно найти примеры подобных заданий с разбором и что нужно изучить для данной темы, ибо есть всего месяц и полностью вкатываться в шарп нет времени
>>1993538 >ибо есть всего месяц и полностью вкатываться в шарп нет времени Чем ты занимался все время обучения? У вас что курс шарпа начинается за месяц до диплома по нему?
>>1993535 Какой стартап, ебанько? Щас на каждом втором заводе нейронки натаскивают на общедоступных библитеках. или ты дебил думаешь один такой умный чужие исходники с гитхаба скачать, лул?
>>1993543 Сейчас бы проггеру с 200к\сек оправдываться перед тупым студентом которые "учил" с++ но подлые учтиля заставляют на шарпе писать, и написать то же самое на шарпе ему невмоготу, иди нахуй отсюда петух, тут таких не любят
Как в .NET коммерческих проектах происходит подключение и работа с бд? Через EF и DbContext? А то у меня ощущение что это хуйня для вкатышей и все куда сложнее и серьезнее
Нужна ли предрасположенность для олимпиадного программирования ? Сможет ли любой человек с достаточным количеством мотивации достичь красного ранга на codeforces своими силами, или это дано только талантливым людям ?
Нужно из виндовой службы запустить другой процесс из под пользователя домена Process.Start(pathToExe, user, password, domain); нихуя не работает Если запускать службу под SYSTEM, то вылетает исключение access denied. Если запускать службу из под текущей учетки или учетки админа домена, то ошибок не выдает но и ничего не запускает. UseShellExecute стоит false UAC отключал, не помогло. Из обычного консольного приложения работает, а из службы никак Что ему не так, блядь?
>>1993651 препод просто хочет реализацию через фреймворк, чтобы само всё делалось, как она сказала. Суть диплома в создании базы данных склада, для этого нужно будет по идее реализовать запросы, осталось продумать и изучить как именно.
>>1993642 я единственный выбрал диплом по программированию, остальные либо по технической части компов, либо технические дипломы (создание различных устройств).
Сейчас я кое что буду проверять В общем. Сегодня на обеде от нехуй делать сделал пока пил кофе песочек на шарпе. Взял СФМЛ. Алгоритм был следующий: клацаешь по экрану - сыпется песочек, потом он падает. Да. Простенько, по сути физика ненастоящая. Но не суть. А суть вот в чем. При ражрешении 800x800 это говно шло в слоумо. Вроде всего-то 640000 объектиков, чому в слоумо-то? А вот. Сейчас быстро эту же хуйню накидаю на плюсах. Вброшу в тред результаты.
>>1993463 >asp Identity не работает с code-first с чего ты взял? Еще месяц назад пилил, у меня все работало >>1993577 >Через EF и DbContext? Везде поразному, но большей части - да. Есть еще Dapper и ADO.NET - но это легаси >достичь красного ранга на codeforces это какой дан? До 4 дошел и забросил, задачи с оптимизациями дрочат мозги >>1993717 на # я бы не сказал >>1993867 >препод >она охуенная шарага, земля пухом
>>1994166 Ну например для таблицы нужно два ключа, при попытке реализовать что-то подобное в code first получаю ошибку компиляции при том что в sql можно создать таблицу с двумя ключами
Котаны, есть такой код https://pastebin.com/UbvyfNM1 Проблема в том что он иногда неправильно принимает сообщения, они как бы обрываются Передающая сторона уверяет что у них все нормально, и это на моей стороне неожиданно закрывается соединение В случаях когда такое происходит у них выходят такие эксепшены https://pastebin.com/H738Nmtx У меня эксепшены не выходят, просто в стрим попадает только начальный кусок сообщения С сетью точно все в порядке Что я делаю не так?
>>1994547 Тогда какого хуя на собеседовании на позицию джуна спрашивают солид, паттерны проектирования, историю развития дотнет, сколько кораблей на тихоокеанском театре военных действий и дизассемблер неба и господа нашего иисуса христа?
>>1994549 Потому что хотят что бы ты на каждый вопрос отвечал "не знаю зато я буду работать за еду" а когда джун так не отвечает тогда джун их расстраивает
>>1994477 Для начала поставь таймаут больше, не знаю точно что за сообщения передаются, но вдруг они по полтора символа капают и 5 сек слишком мало
а вообще нужно бы глянуть в каком именно месте у них там ексепшон, по одном сообщении сложно что-то понять но в любом случае надо копать в сторону ексепшона и отталкиваться дальше от него, иначе это будет выглядеть как попытка поймать невидимую иголку в реке
>>1994555 Самая правильная стратегия это показать исходники с кучей проектов и сказать мол "Я это сделал за термос с чаем, представьте сколько полимеров я буду клепать за печеньки к чаю"
>>1994549 Потому что хуле ты еще спросишь у джуна? Вот пришел такой хуй и говорит, я тут знацца выучил хуелогритмы, опыта тырпрайза у меня нет, проектов нет, а еще я хочу 1000 USD. Зато есть корочка универа/каких-нибудь из миллиарда курсов-хуерсов.
Все что от тебя на собесе реально ждут -- что бы ты не был дауном и понравился, но так как это хуй прочекаешь, то и начинаются все вот эти дизасемблеры и паттерны.
>>1993867 без шуток если в шараге баба преподает программирование тогда это зашкваренная шарага, у нас вообще только один предмет вела баба, и то эо была около канцелярская хуйня типа форда и ексельки, конечно есть умные бабы, но ни одна баба не будет умнее чем умный мужик
>>1994625 Когда вот я джуном был и смотрел как у нас проводят собеседования не понимал, какого хрена у откровенно дебилов спрашивают вещи которые у нормальных чуваков не спрашивают вообще, вот помню пришел поц ему буквально парочку простеньких вопросов задали, он на них грамотно ответил, а потом они начали базарить по душам, чей сам, кем будешь, где живешь,как город что будет делать превратись в муху, вкусный ли чаек, и тп,
после него приходит чувак, его спрашивают ну простенькие вещи самую базу которую только дегенерат может не знать типа особенности и различия в CORE CLR и фреймворком, И КАК ТОЛЬКО ОН НАЧИНАЕТ ЕРЗАТЬ, любая не уверенность, расплывчатый ответ и сразу летят более сложные и каверзные вопросы, когда был джуном думал что так делают просто для того что бы легитимно отшить, сейчас понимаю в чем на самом деле ббыло дело
>>1994628 Не неси хуйню. У нас вот сишечку вела тетка лет за 50, так по сравнению с хуями что потом нам жаву с гаражом и плюсами давали - он была на голову выше. Никакой хуйни с : потому что так принято, это хороший тон и т.д. четко и нормально могла за все пояснить. Знания - выше крыши. Заставляла дрочить в присядку на древнем железе чтобы понимали нахуя перформанс и как с памятью обращаться. Это не жавапидор, у которого все тормозит и он начинает пиздеть что просто в универе компы слабые, вот бы сервак для лаб дали, тогда... Короче, я вот не заметил чтобы наличке яиц в трусах как-то на уровне кодерских способностей сказывалось.
>>1994652 Тьюринг, Возняк, Гейтс, Линус, Кармак, и куча других легендарных программистов, а теперь назови хотя бы 3 всемирно известных программистов-женщин
>>1994668 Женщины из-за стереотипов не идут в точные науки, если бы небыло гендерных стереотипов, то имён великих женщин было бы столько же, сколько и мужчин
Все эти женщины вызывают чувство гордости и могут служить невероятной мотивацией для всех нас. Многие из них трудились во времена, когда программирование не терпело женщин, да и мировые взгляды на женский труд были совсем другими. И тем не менее, они добились успехом. Сейчас тысячи девушек-программистов доказывают, что это не только мужская профессия. Остается только брать их себе в пример.
>>1994674 В шахматы не играют тоже потому что хуеносцы по рукам бьют?
А вообще какие нахуй стереотипы? еще 10 лет назад этот аргумент со скрипом но можно было бы назвать валидным, но сейчас с этими квотам, с рад фемом и толерастией, на западе уже давно если у тебя половина компании не с вагинами то такой компании по закону штрафы выписывают, вводят квоты на бесплатные обучения, ништяки за женщин в компаниях и сейчас их внедрили уже море но что-то они не проявляют себя, а если и проявляют то "перлами" вроде масс аффекта со всратими лицевыми анимациями, это тоже злые хуеносцы мешают?
>>1994679 Очевидно лучшие представительницы своего рода, и одни из лучших представителей человечества, но не всемирно известные и даже близко не равные улучшим представителям мужчин, о чем я сказал, грамотные бабы есть но грамотный мужчина всегда будет лучше
>>1994679 Первая известна только тем что отсасывала математику Бэббиджу и делала грязную работу по дому пока он теоремы доказывал, остальные вообще рандомные хуи с горы. Хотя нет, про марийку майер слышал. Она даже не программист а просто удачно затеасалась в среду основателей гугла, лотерея один на миллион. Кстати, когда она в яху сдриснула с гугла нихуя я нее не получилось вытащить контору из жопу, т.е. и как управленец она говно без задач.
>>1994692 Двачую. Как ни крути а это факт, и в среднем бабы тупее мужика, и отдельные гениальные мужики выше классом на несколько порядков отдельных гениальных баб. Пиздёшь якобы их не пускали это хуета полнейшая. Среди мужиков в бедных странах тоже стояли непреодолимые социально сословные стены, тем не менее Ломносовы/Рамунджаны пробивались через них.
>>1994652 Это скорее говорит о твоём низком уровне раз ты восхищаешься пенсионеркой которая даже не из индустрии. Ну тот факт что какие-то аспирантики хуже нее преподавали вообще ничего не доказывает. В мухосранских вузах это обычное явление.
>>1994713 Я не сексист, в отличие от например тех же мусульманов которые считают женщин за животных я так не думаю, и не отрицаю важной роли женщины в обществе, того что женщина может делать определённые вещи лучше мужчин, потому что существуют объективные различия, и это нужно понимать
>>1994743 Ну этот вопрос действительно дискутабельный, например упомянутое явление действительно, но применим он не ко всем женщинам, а только к женщинам определённой национальности. В той же японии например такое явление так массово не встречается. В любом случае не хочу вступать в дискурс по этому поводу, тред не про это, да и такое мнение что вреда больше тоже имеет право быть, я же только хотел сказать что анон выше был прав когда говорил что для вышки женщина препод программирование это плохой знак, это элементарно значит что преподов они набирают по остаточному принципу и что все хорошие преподают где-то в другом месте, только это я хотел донести
Есть один базовый класс для всех классов в проекте. Я в нем переопределяю метод TоString(). Почему в классах наследниках этот метод работает по старому? Как сделать так, чтобы он переопределился для всех классов наследников?
В общем. Я замерил разницу между С++ и шарпом. Если шарп с оптимизацией и С++ - без разница почти не ощущается. НО, ебашим сборку под конкретное железо, добавляем векторизацию и т.д. и это просто небо и земля. Один и тот же код - разница в сукорости - 12 раз. Это без всяких попыток оптимизации песочка, без хиторостей по поводу оптимизации алгоритма, всяких карт и прочего - простая хуйня: 800x800 поле, песочек падает пока не найдет под собой другой блок который твердый, потом проверяем справа-слева, если пусто - прверяем снизу и если снизу пусто - "скатываемся". 12 раз прирост перформанса просто за счет того что взяли С++ и нужные флаги компиляции поставили. После такого - кажется что шарп - калечный.
>>1994915 Да. Но это просто выставлением флагов и выбором другого языка. При этом написание кода заняло одно и то же время. Я больше ебался с тем чтобы вспомнить как там библиотеки в С++ залинковать. Да и мой уровень плюсов несравнимо ниже шарповского, думаю чел что знает плюсы лучше и немного оптимизаторством болеет - получил бы прирост намного больший.
>>1994938 Это конечно отлично совет, но куда меня возьмут с дефолтным знанием шарпа, когда мой максимум вывести в консоль список? В плане, я не работал ни с одним фреймворком.
>>1994956 никуда. это может любой школьник который интересуется программированием. Тебе нужен очень мощное алгоритмическое мышление, чтобы уметь создавать эффективные алгоритмы для задач. С этим навыком ты будешь очень востребован, и будешь получать в хорошие зарплаты
>>1995020 Изначальный вопрос был как вкатиться в веб, поэтому я и не понял к чему мне про работу написали, учитывая что я только недавно разобрался в шарпе и ооп.
Допустим есть два веб-приложения на неткоре. Они имет разный апи. Вот. Они выполняют довольно затратные по ресурсам и времени выполнения штуки. Выполнение этих штук хочется автоматизировать, допустим, пусть они выполняются в 2 часа ночи воскресенья, когда нет особо пользователей которые другими штуками этих приложений пользуются. Ну так вот. Мое решение - сделать третье приложение, которое должно как-то узнать об апи этих приложений, сохранить пути и параметры что нужно передать и в зависимости от настройки - будет слать запрос на старт задачи. Насколько это хуевое решение для такой задачи? Просто сейчас настройка переодичности выполнения всяких штук у этих приложений отдельная, ну, соответственно админ должен и там и тут настроить. Хочется дать админу возможность настроить это все в одном месте, допустим, одно приложение должно периодически удалять старые данные, другое - должно разослать уведомление о том что срок подписки заканчивается. Хотим делать это первого числа в час ночи. Логично же вроде получается: вот отдельное приложение-планировщик. Проблема возникает если задуматься о том что может появиться еще несколько таких вот приложений. Каждый раз лезть в исходники чтобы добавить возможности которые есть у приложения в этот вот планировщик задач - ну такое. Возникает мысль о том, чтобы уже приложения - представились в этом, сохранился в базе апи, но тут непонятно что делать если тип составной какой-то. Можно конечно договориться о ДТО заранее, чтобы апи не был слишком сложным, но тут же хуй знает как дальше будет. В общем. Я же не думаю, что только у меня возникали такие вот проблемы. Какие есть бест практис на этот счет и вообще, может быть я тут велосипед придумываю, а есть какое-то стандартное решение для того чтобы дать пользователю с правами возможность создания каких-то переодических заданий для микросервисов.
>>1995114 >Ну так вот. Мое решение - сделать третье приложение, которое должно как-то узнать об апи этих приложений, сохранить пути и параметры что нужно передать и в зависимости от настройки - будет слать запрос на старт задачи.
Видел что-то подобное в проде, работает. В целом, если есть что-то типа нугета/dll/еще чо-то, где будут лежать контракты и проч, то и затаскивать новое не так геморно. А вообще я бы не ебался и ради двух хуевин хоть все захрадкодил, ибо с нихуевым шансом этих хуевин так и останется две
>>1995114 https://www.hangfire.io/ как планировщик задач. Делаешь задачу, он её сохраняет в свою БД и потом выполняет по заданному расписанию.
gRPC с его прото контрактами могут помочь избежать внезапного изменения АПИ. Контракты пихаются в отдельный репо и реферянсятся поставщиком АПИ и его потребителями.
Можно просто DTO в отдельный репо запихать, если с gRPC возиться не хочется.
>>1994699 Без шуток: надо учить историю чтобы избегать таких вот мыслей. Они не только токсичны, но и опасны для общества в целом. Ксенофобия в любом виде - зло.
>>1995332 Нет, тупая ты пизда, надо хоть раз включить свой высохший от чтения нихель пихель мозг и понять простую вещь: у мужчин и женщин изначальные разные интересы и целеполагание. Гениальных женщин и правда не меньше, чем гениальных мужчин, только их гениальность в другое русло направлена: как пизду теплее пристроить, как зачать от одного, а доить другого, как на работе всеми манипулировать и т.д.
>>1995150 При каких объявлениях типов? Мне четко по белым по черному пишут,
компилятор : "модель может иметь только один персистент кей" коддер : А ЕСЛИ МНЕ НУЖНО ДВА? компилятор : ой все
охуеть права? пиздец полезный этот код фирст, говно полное, или например внешние ключи, в скл это все просто делается, зашел в таблицу, покликал туда-сюда, даже первоклашка справиться, в код фирст это все через жопу делается особенно если задача хоть чуточку не тривиальная как например внешний ключ к индексированному представлению
>>1995619 Двачую эту естественную нейросеть в мозгу самки примата вида хомо сапиенс. У Разума нет пола. Разум или есть (и он зарабатывает кодингом) или его нет, и неразумный хомосапиенс зарабатывает пиздой, хуем, жопой, ртом или руками-ногами.
>>1995667 Как бы да, как нейросеть натренировать так она и будет работать, но это не значит что нейронка будет одинаково хорошо работать в серверах гугл и на ноутбуке студента, устройство на котором работает нейронка влияет на ее работу, с этим никто не спорит, никто в здравом смысле не станет спорить и стем что мыслительные процессы женщины несколько отличаются от мужских в силу объективных особенностей не только воспитания но и физиологии мозга и организма в целом.
У кого так же? Почему после выполнения промежуточной цели падает мотивация и не хочется делать ничего дальше, наоборот же должно быть не? при чем чем ближе проект к завершению тем сильнее колбасит, в какой-то момент уже совсем плевать потому что ну и так же уже почти работает, все ок, а потом охватывает паника что столько труда может пойти по пизде и как сумасшедший пишешь код 24 часа в сутки, и так уже не первый проект, анон у тебя такое бывает? как ты с этим справляешься?\
Как преобразовать c# decimal к джаваскриптовому number? вроде бы тривиальная задача должна быть но я никаких тривиальных ответов не нашел, только еботня с регексем
Ребяты, есть у меня Модель Group, в этой модели есть поля типа Geo - это enym. По MVC куда мне этот enym засунуть? Оставить в файле модели либо создать другой файл в который и запихивать такие типы?
>>1996033 Куда хош. MVC говорит тебе как сущности должны между собой общаться ничего более.
А насчет enym - не нужон. Расширать - неудобно, если логика появится - придется ебстись. Делай сразу класс и забудь про эту хуйню. Константы выноси в отдельный статический класс. Если нужно проходиться по константам - сделай коллекцию вместо enym. Логика все равно в определенный момент появится, как бы ты не надеялся, что вот ну это же так удобно enym'ом делать, всегда выходит так, что приходится добавить логику. И чтобы у тебя она не была размазана по всему приложениею с миллионом свичей, хучией ифов-хуифов - делй сразу, блядь, класс. Спасибо скажешь потом.
>>1996141 Я просто хз как ваще правильно сделать. У меня есть поле которое должно хранить настройку. Ну собственно 1 или 2 или 3. Подумал что enym подойдет, хотя подойдет и просто byte но я хочу правильно сделать, проект в гит добавлю и буду показывать в резюме, и вот хочется что бы не сильно ахуевали с этого говнокода. Вообще просто byte и число мне бы больше подошло так как ебни меньше. Отдельный класс создавать на каждый пункт а потом просто присвоить полю обьект и потом в логике смотреть обьект какова класса лежит?
Типо
public class Setting {
}
public class Setting1: Setting {
}
public class Setting2: Setting {
}
public class Setting3: Setting {
}
pubblic class Host { public Setting s1_OR_s2_OR_s3; }
И потом когда контролер будет обрабатывать объект просто смотреть проверять какому из классов принадлежит s1_OR_s2_OR_s3 ?
Вроде норм но пздц как тупо, хз пытаюсь сделать просто по уму так сказать.
>>1996265 Я научился. Не используй их и будет все заебись. Тут дело в чем. Ты не можешь предсказать, что должно быть перечислением, а что - нет и в отличии от джавы ты не сможешь удобно добавить логику в перечисление. Нет - ты либо будешь вынужден выкорчевывать их, либо хуячить экстеншин методы, а это самой концепции перечислений в шарпе противоречит. Ну серьезно. Вот банально в майки и ко - захардкодили протокол сервера перечислением. Я хочу кестрел использовать не как веб сервер, а чтобы, допустим DLMS/COSEM, вот, блин, вся инфраструктура под боком, просто сделай новый протокол, укажи серверу что нужно не HTTP использовать, а DLMS/COSEM, а вот хуй тебе за щеку, жди бедрока в .net6, либо делай финты ушами, потому что на базовом уровне хуйнули перечислением протокол, ведь, блядь, никому код не понадобится, никто не захочет его расширить, да, блядь, так ООП и работает же, охуенно, нахуй. И ты вынужден форкать кестрел и выкорчевывать из него это говно. А как бы было охуенно как в жаве с ее Netty - просто добавил что надо и пользуйся, охуенно, блядь. Нет, у нас свой путь.
Перечисления хорошо, когда нужно что-то ну совсем маленькое и внутренние делать. Во внутреннем - хуй с ним, иногда действительно удобно что IDE тебе варианты предлагает и можно сгенерировать код на его основе, но если эта срань попадает в публичный апи, еще и не какой-то совсем стандартизованный, типа ошибок сокетов - это не должно попадать в основную ветку.
>>1996175 Ну, что такое правильно? С точки зрения обычной практики - настройку бы нужно в отельную сущность в БД вынести. Что-то типа: public class Setting { public int Id {get;set;} public string Name {get;set;} public string Description{get;set;} ... }
public class Host { public int Id{get;set;} public int SettingId{get;set;} public Setting Setting{get;set;} ... }
Таким вот макаром - ты можешь доп информацию хранить это раз. В случае добавления новых настроек - ты просто в одном месте(при засеивании базы/при создании модели) добавишь и если делал по уму - тебе просто нужно будет добавить новую логику, не трогая страй код. Это два. Если ты удалишь настройку, переименуешь ее и т.д. - ничего не изменится в коде программы, ты просто будешь проверять - наличие настройки и если ее нет - ты просто никогда не выполнишь код который должен был обрабатывать логику что была там. Ну и главное, если ты не хочешь лезть каждый раз в базу - ты можешь это дело просто закешировать и все будет так же работать, но при этом у тебя не будет enum'а, который накладывает дополнительные проблемы с будущим расширением кода.
В контроллере - по хорошему, ты вообще не должен был бы делать логики какой-то особой - нужно передать полученный объект сервису, который знает как обработать запрос. Типичная картина: инжектишь сервисы в конструкторе, при получении запроса - просто передаешь им в них уже логика какая-то происходит, контроллер просто служит точкой входа. Можно делать не так а использовать паттерн команда и получая запрос - создавать команду ее отдавать обработчику команды и по завершению - возвращать результат. Тут как тебе больше нравится.
Да, это если говорить о том как принято. С точки зрения личного использования - делай как кайф. Если ты на джуна претендуешь - от тебя ждут что ты не совсем распиздяем выглядишь и будешь делать что тебе говорят.
>>1996388 Ну вот не много ли будет класса для простой настройки? Там же ничего не будет. В логике придется чекать Name но я точно так же могу сделать стринговое поле Setting в основном классе и проверять его.
>>1996418 > С точки зрения личного использования - делай как кайф.
Я просто пояснил как оно делается уже в реальных условиях. Сегодня ты посчитал что обойдешься перечислением, завтра что нет смысла разбивать простню на методы, послезавтра - что проще копипастнуть код из одного места в другое. А через месяц ты не можешь понять что где и как добавить чекбокс чтобы все не сломалось к хуям. Ко всему, подумай о том, как ты будешь тестировать этот кода .
Вопрос по WPF про ComboBox - почему при первом нажатии по комбобоксу он как бы подвисает?
Заполняю его вот так как на пикче. Всегда на первом клике по нему зависает на примерно 2 секунды. А дальше все нормально работает.
Как будто ощущение что оно в момент первого клика загружает данные из массива nameStreets... Но это же хуйня, разве Loaded не должен срабатываеть во время InitializeComponent()?
И как исправить? Проблема 100% на любом коде где есть большие комбобоксы (больше 100 штук)
>>1997053 >>1996560 Еще добавлю что проблема может быть не в самом ComboBox, а в Popup который встроен в него. Я наблюдал такие подвисания на первый клик когда вызывал обычный Popup с небольшим контентом.
>>1996653 в диалоге со мной ты уже столько раз напукал по себя, что уже не лужа, а маленькое озеро. Зачем ты пытаешься спорить, если ты азов не понимаешь - где и как и главное какие вешать ключи, чтобы были связи? Нормально бы отвечал, без выебосов, уже бы скинул ответ, а так, сиди дальше в говне
>>1997379 Какие связи? я тебе ясно сказал хочу сделать два индексируемых ключа как в sql, в code-first ключ добавляется атрибутом [key] но когда я добавляю атрибут ДВУМ переменным я получаю ошибку компилляцию потому-то эта херота пишет что может быть только 1 индексируемый ключ, а ты вместо написать что-то по факту просто слился, хочешь что-то пизденькнуть тогда дай мне пример нескольких индексируемых ключей в кодфирст! Не можешь? Так и пиздуй нахуй тогда обосрамус
WPF <Button><Image>, как пофиксить этот ебанутый дефолтный паддинг изподкоробки и начать жить растянуть image на всю кнопку? Vertical/horizontal/content alignment=Stretch не помогает. Бэкграунд не предлагать.
>>1997810 1. Оно еще проще чем шарп в плане синтаксиса. Да - многословно выходит, но в отличии от кучи других языков тебе просто сам язык не позволит совсем нечитаемую хуету сделать. В шарпе с его стремлением быть модным-молодежным сейчас в этом плане довольно невесело и приходится дрочить кодстайлы, потому что дай свободу кодерам - все в пиздец превратится и хуй потом кто разберет. 2. Огромная. Нет, блядь, ОГРОМНАЯ кодовая база на все случаи жизни. Всё, блин, есть и после того как ты посидел годик на джаве, когда ты в шарпе пытаешься что-то найти - ты будто из огромного торгового центра в сельпо попал - бери что есть и если надо допиливай, готовых решений крайне мало, по сравнению с джавой еще и зачастую те что годные - по закрытой лицензии и с прайсом от 1к бачей, не так много, но ты же даже еще не уверен что будешь использовать в проде. 3. Тупо работы больше.
Это самое основное. В мелочах - более логичная структура всего, плюс это все еще единственная хуета где ты просто пилишь кода и он везде где есть JVM запускается без всяких НО, в отличии от шарпов, где: Ну, это у нас кроссплатформенно, а это не, а вот это будет если там вот покрутить; ну или уж по хардкору - С++, где чтобы добиться кроссплатформенности - ты такие финты с кодом делаешь, что его лучше больше никогда не трогать.
Но так как статья за 2014 Пошарил в других местах и нашел, что все это старая инфа и сейчас привязка создает слабую сслыку, которую со временем гарбеджколлектор сам и освободит и можно уже не парится по этому поводу
Решил попробовать проверить это сам на практике Такой сетап Есть главное окно через которое вызывается новое окно и в этом новом окне идет привязка текстблока к свойству объекта класс которого не реализует INotifyPropertyChnaged Что я получаю Первый раз открыл-закрыл дочернее окно объект к которому идет привязка не освобождается Повторяю второй раз то же самое делаю, освобождается объект Item только тот который был создан в прошлый раз И т. д. То есть освобождение происходит но с лагом на одно закрытие
Когда реализую INotifyPropertyChnaged освобождается объект, но надо подождать секунд 20 Код на скринах
>>1997694 > два индексируемых ключа >индексируемых >ключа Вы блять только посмотрите на это уебище. Вы только блять посмотрите, какой мусор тут сидит и вайнит на инструмент создания таблиц в Sql. Этот биомусор, даже не умеет в гугл, чтобы правильно сформулировать свою проблему. 3 раза этому чучелу пишу, "гугли блять, чмошник". И все, что я получаю в ответ, это >по факту просто слился >Так и пиздуй нахуй тогда обосрамус пиздец парень, лучше бы твой отец кончил на простыню. Даже не вижу дальше смысла тебе что то отвечать, можешь кукарекать что хочешь
Сап сишарпач, подскажу почти полному нубасу. Хочу вкатиться в кровавый энтерпрайз после многих лет фронтенда и ноды жаваскрипт не язык, дно.жс не платформа, гоните его, насмехайтесь над ним. В основном потому что устал пить смузи и бесконечно бежать за несущимся под откос локомотивом жаваскрипта, каждый день боротся не с задачами бизнеса, а с тулзами и фреймворками как таковыми. Кароч хочу стабильной платформы, на которой смогу работать до пенсии без особой борьбы с инструментом. Есть соответственно два стула, C# и Java работаю гребцом на галере, есть возможность выбирать. Пока попробовал по неделе примерно закодать простой REST API на каждом языке... и нихуя не смог определиться с выбором. Но разобраться хотел бы в такой вещи. Я сижу под macOS почти всю свою профессиональную жизнь, иногда разбавляю всё это Linux'ом. Java под маком/линуксом работает без проблем и все тулзы на месте. C# с .Net Core тоже завёлся без проблем и в целом тулзы также есть чому Rider сука такой дорогой?. Собственно вопрос, вот прийду я на проект, а вся команда сидит на винде и кодает в Visual Studio 2019 Enterprise Edition. А я тут со своим маком и райдером. Будет ли мне норм? Или там не хватит каких-то фич? Хз, может дебаггер какой-то палёный в райдере или будет вечное проблема коммуникации на тему настройки проекта? Видел что в студии много чего настраивается через всякий UI вместо ковыряния конфигов. В целом винда нужна чтобы преуспеть в C#/.Net? Или можно не разу к винде не притронуться верстая круды на дотнете уже?
Ну и доп вопрос вдогонку. В перспективе к основному языку платформы хочу ещё изучить функциональный язык когда-нибудь. Собственно на JVM это Scala или Clojure, а на .Net это F#. Со скалой в целом всё неоднозначно, язык как будто и умирает, но при этом экосистема там охуеть огромная и какая-то жизнь таки теплится. Плюс всякий бигдата завязан на Spark и всё такое. Кложа ощущается также, но тоже что-то происходит. А вот с F# чёт пока не могу оценить. Есть какие-то мифические финтех конторы которые платят больше всех по рынку, есть какие-то проекты но всё очень непопулярное и недоделанное. Кто-то вообще пилит на F#?
Уже месяц ломаю голову куда вкатываться. Помоги мудрыми советами, двач или накидай хуёв. Заряжаю пост на высокие рейты и безбедную жизнь.
>>1999591 В чём проблема фронденда ? Работы намного больше, в C# и Java ? Сам овладел основами C#, C++, но понял, что здесь нечего ловить, особенно в моей 140к человек мухосрани, нужно во фронт енд вкатыватся
>>1999591 Не лучше ли боротся с инструментами, но владеть востребованными навыками, чем потом выучить C# или Java, и сидеть сложа руки, потомучто вакансий в разы меньше, чем на фронт енд. В моей мухосрани 140к населения, никому здесь C# и Java не всрался, несколько веб студий есть
Насколько вообще в наше время востребована десктоп разработка? А то я на работе занимаюсь исключительно еблей с впф, да и то это состоит большей частью в переработке индусского кода, который я нахожу на стаковерфлоу, с нуля я крутую фичу на впф не запилил бы. Просто думаю, что рано или поздно придётся менять работу, ибо платят мало, но возьмут ли меня куда. Может стоит начать учить что-то другое как запасной вариант, но что?
>>1999591 > А я тут со своим маком и райдером. Будет ли мне норм? Если тебе в райдере норм - то будет норм. Тем более что решарпер тот же почти у всех стоит. Сейчас майки вроде как нашли золотую середину с конфигом проектов(*.csproj) а потому разницы особой нет где настраивать прокет. Просто в студии - есть окошки, но, внезапно, в этих окошках не все опции можно настроить и все равно полезешь в конфиг. Короче, по этому вопросу. Тут, если райдер куплен и контора не какая-то дюже секретная(в контексте что я вот работал на объекте, где нельзя было свой ноутбук и телефон проносить) - все должно быть нормально. Сиди на маке и пили как кайф. > Или там не хватит каких-то фич? Учитывая что студия последние n-лет пиздит фичи из решарпера и райдера, я бы сказал наоборот. Мне вот райдер не нравится исключительно из-за того как у него автокомплит работает и его дефолтный кодстайл. > Хз, может дебаггер какой-то палёный в райдере или будет вечное проблема коммуникации на тему настройки проекта? Не будет, если ты понимаешь как сам проект настраивать ручками. > В целом винда нужна чтобы преуспеть в C#/.Net? Если не под десктоп - нет. Я вот дома на линуксе сижу и вообще в VS-code хуячу. > Кто-то вообще пилит на F#? Именно как разрабы основным языком - нет. По крайней мере я не слышал. Однако для всякой мелкой фигни он нормально себя показывает. Да и когда самому нужно что-то быстро сделать. Ну и это таки полигон для майков - они там опробуют фичи всякие, потом те что удачные уже в C# тянут. А вообще, >>1999697 анон прав. Лучше смотри какие вакансии вокруг и куда тебе интереснее был бы попасть. В моем вот регионе внезапно шарп много где используют, потому что местный вуз с начала нулевых на него дрочит и соответственно было 3 стула шарап-пхп-1с для человека, что не хочет возиться с фронтом, но и не оч хочет удаленки. У тебя может быть ситуация, где ты с шарпом - хуй найдешь работу, а жавы - завались.
Аноны кто работал с .net core localizer отзовитесь,
проблема: при изменении значений в файле ресурса не обновляются данные ТОЛЬКОпри локальном дебаге все работает и обновляется на паблише
дано : проблема присутствует так же и на других серверах поэтому кеширование почти исключено вместо актуальных данных в ресурсах показываются более старые которые когда-то были в файле но били заменены проверка содержимого файлов ресурса показало что там находятся НВОЫЕ ОБНОВЛЕННЫЕ данные не смотря на то на странице все равно отображаются не корректные устаревшие данные поиск по совпадениям не показало ни одного совпадения где находятся эти призрачные данные которые отображает страница я хз
что я пробовал: ctrl + f5 удалить существующий билд и опубликовать на чисто создать новый файл ресурса, танцевать с бубном xчистить мусор сутдии перезапускать иис
Почему в данном коде используется BaseList, а не IBaseCollection в "void AddRange", ведь в аргументах стоит "this IBaseCollection collection_name"? BaseList же всего-лишь наследник IBaseCollection
Сорян что так по дебильному копирую код, я делаю по видео, а там весь код очень длинный
public class BaseList : IBaseCollection { private object[] items; private int count = 0; public BaseList(int initialCapacity) { items = new object[initialCapacity]; } public void Add(object obj) { item[count] = obj; count++; }
public static class BaseCollectionExtension { public static void AddRange(this IBaseCollection collection_name, IEnumerable<object>objects) // IEnumerable нужен для foreach по инстанциям, может быть передана любая коллекция. collection_name от BaseList { foreach(var item in objects) { collection_name.Add(item); }
} } //Теперь AddRange доступен через объекты класса IBaseCollection: ...... //потом метод Main(){
IBaseCollection collection = new BaseList(4); //BaseList - класс, наследованный от IBaseCollection List<object> list = new List<object>() {1, 2, 3}; collection.AddRange(list); collection.Add(1); //Метод в BaseList
>>1999591 > Видел что в студии много чего настраивается через всякий UI вместо ковыряния конфигов. В целом винда нужна чтобы преуспеть в C#/.Net? Или можно не разу к винде не притронуться верстая круды на дотнете уже? Зависит от проекта сильно. В одном месте шлепают легаси на wpf с нет фреймвороком, в другом пилят круды на неткоре. У меня, к примеру, все завязано на повершел скриптах которые поднимают ажур сервисы, которые только под виндой работают. И как бы я не ненавидил студию, она нужна из-за мсскл и сервис фабрика как и винда, которую тоже не очень люблю. > А вот с F# чёт пока не могу оценить. Есть какие-то мифические финтех конторы которые платят больше всех по рынку, есть какие-то проекты но всё очень непопулярное и недоделанное. Кто-то вообще пилит на F#? Писал на хаскеле, на работе есть пара сервисов на фшарпе. Кароче фшарп выглядит как другой синтаксис для шарпа, более подходящий для ФП, но не как отдельный язык. Никаких тебе монад, тайпкласов, кажется что после шарпа 10го или 11го в нем вообще никаких фич своих не останется. И если ты хочешь выучить именно тру фп, то лучше учи скалу/хаскель.
Кароче выбор у тебя такой: всратая джава, к которой есть невсратая скала, нормальная кросплатформенность, и охуенная экосистема, или невсратый шарп, к которому нихуя кроме самого шарпа не идет.
Создал решение с проектом, залил на гитхаб через VS. Потом добавил ещё один проект (с тестами), а он не никак не отмечается и не заливается соответственно. При этом на гитхабе при входе в репозиторий сразу показываются файлы первого проекта. Можно ли как-то пофиксить, и чтобы коммиты не проебать? Ну чтобы когда заходишь в репу, там сначала папочки были проектов. Ещё возможно где насрал, это что у решения и первого проекта одно название.
Суть. Есть пока что три типа обработчиков в приложении(возможно в процессе появятся новые). Работают периодически. Пользователь должен иметь возможность создать свой обработчик с нужными ему параметрами из типа что есть, ну и хуйнуть работу, может вырубить. Так вот, в чем вопрос. Стоит ли эти типы обработчиков в базе хранить? Тип я понимаю, что стоит. Просто меня очень бесит вся эта хурма с тем, что вот у нас обработчик из БД, потом мы эту хурму приводим к обработчику из приложения. А как делать иначе - я не представляю. Разве что объединить их в одну сущность, но это уже вроде нехорошая практика и вообще, но блин. Просто меня уже бесит: Models.Db.Handler; Dto.Handler, Core.IHandler<Type>, как это делать с одной стороны красиво и чтобы не выходило что 100500 файлов, а с другой чтобы не смешивать логику - я не представляю. Мой код из-за этого на 50% состоит из перегона одних сущностей в другие и обратно. Бред какой-то на самом деле, я думаю что что-то не так делаю.
Мне нужно было сделать переодическое выполнение задач, но не по времени, а при наступлении определенного состояния(нужно из-за того что хуйня запускается на железке с 128МБ памяти - чистить базу и логи когда больше половины места они занимают). Т.к. меня приучили что все нужно делать асинхронно - я, вместо использования таймера - сделал свою хуйню, что таски использует. И у меня чет очко поджимается от такого вот решения. Не убьет ли это все дело сборщик мусора? Тестировал, вроде работает нормально, но я все равно ссу.
Заранее извиняюсь за неофитовый вопрос - можно ли как-то в отладке вижуал студии не ставить брейкпоинт на конкретной строке кода, а стригерить приостановку выполнения при изменении конкретного заранее вписаного поля/свойства? К примеру при изменении textbox1.width - пауза и я в отладке.
Теперь даже не знаю как решить - в гугле какие-то ебанутые решения уровня говнокодец пахнущий, типа пикчи
(сразу хуйня - что если другая версия офиса стоит, что если другая разрядность офиса стоит. что если пользователь офис поставил вообще в другое место, что если майкрософт решит этот офис ставить куда-то в другое место в очередной винде.
Самому проверять все случаи - это пиздец, нахуй такой велосипед, если в винде есть система ассоциации файлов где все это решено и как мне ею воспользоваться?
Нужно в базе хранить JSON не в виде JSON-объекта или строки, чтобы потом можно было собрать из него объект и послать/схоронить куда нужно. Да, понимаю что бредово, но так надо. Так вот, покритикуйте структуру того как я вижу эту сущность в таблице:
JsonToken { int Id; int TypeId; int? ParentId; string Name; }
Ну, собственно меня что лично меня смущает - ParentId - нужен исключительно в случае если нужно хранить объект, т.е. его наличие зависит от типа. В случаях если это будет число, строка, булево и т.д. это значение будет всегда null. Но как без этого - я не придумал. Ну и я еще не придумал как, хранить описание массива, разве что каждому типу - хуйнуть дополнительный тип для массива и будет int - intArray, string - stringArray и т.д.
Всё думал вернуться в шарп, но это чудо https://github.com/migueldeicaza/gui.cs прям смотивировало меня. тащусь от консольных интерфейсов Решил что для начала это будет что то не сложное, например вытягивание инфы о железе. Но меня ждал облом в виде https://github.com/dotnet/runtime/issues/22948 Как так, позиционируют себя мультиплатформой, но такой базовой вещи нету. Там что то пиздецовое с реализацией, что аж в .net 5 нету? Там кто то указал свою либу на этот счёт, а нативных вариантов(с мультиплатформой) нет?
Алсо, подкиньте идей на тему какой нить консольной апликухой и обязательно кроссплатформа.
Ребят вот к примеру есть такая картинка в консоли. Ну понятно что массив символов и они потом выводятся на консоль. Вот вопрос мб есть какая библиотека для интерпретации символов в изображение? Что бы не делать скрин символов в консоли а сразу получать изображение?
Нахуй мне это надо? Ну так от нехуй делать и для практики написания кода. Вообще щас аспНет изучаю но уже давно понял что надо делать перерыв на неделю и изучать что то другое, если я что то не понимал то потом когда снова возвращаюсь к изучению все становится сразу понятно. А картинки то зачем? Хочу обучить нейронку создавать картинки аля матрица, правда еще не совсем понял как. Я с нейронками на Вы и стоя.Не совсем понимаю как она должна выглядеть. На каждый пиксиль по нейрону? А не дохуя ли? Пока вижу дело так: Просто алгоритмом из rgb в символы, и набираем масив для обучения, руками выбираю картинки которые нормально получились, далее гружу их в нейронку и треню, хуйня конечно получится но все же лучше чем по 4 разу перечитывать метанит лол
>>2004033 А что там делать-то? Тебе нужно просто получить насыщенность какого-то куска картинки и заменить ее символом. Самому такую вот библиотеку написать - час работы. Для работы с картинками - берешь Image, просто рассчитываешь размер картинки и размер консоли, так выбираешь размер курсора, проходишься по картиннке курсором, усредняя значение насыщенности, затем заменяешь символом который ближе всего к данной насыщенности.
Сап сишарпяня. Как эффективно изучать шарпы в 21к? Смотрел официальную доку от майков. Как-то не структуированно. Metanit вообще годный для этого? Хотелось бы чтобы было структурно, но и не талмуды размером с войну и мир.
>>2004280 Ну как тебе удобнее. Мне например удобно читать книгу если что то не понятно то смотреть видос по теме, а если нужно что то напомнить то читаю метанит. Метанит собственно это не сайт с уроками, это как справочник.
>>2003899 Почему в данном коде используется BaseList, а не IBaseCollection в "void AddRange", ведь в аргументах стоит "this IBaseCollection collection_name"? BaseList же всего-лишь наследник IBaseCollection.
Сап шарп, направь меня на путь истинный. Пилю на колене html редактор на wpf'e и тут внезапно стал вопрос как сделать обработку каретки, а точнее подтягивать в комобобоксы с html шрифт/размер в зависимости от нажатия курсора в редакторе на слово. В редакторе у меня просто grid в который через .Children.Add() загружает System.Windows.Controls.WebBrowser, а в нем mshtml.HTMLDocument (а уже в нем есть innerHtml). Пока что ничего умнее как Спарсить слово на каретке @ Посчитать количество таких слов перед выбраным словом @ Найти слово через n количество слов в сыром htmle и спарсить параметры
Но мне кажется что такое будет подлагивать на больших документах и вообще какая-то костыльная хуита. Как такое реализовано во всяких вордах и т.д.? Мб есть какой-то похожий готовый проект на гитхабе?
>>2004505 Троелсен, норм вариант? Посоветуй книгу с практическими уроками, или ресурс. Если такое есть. Именно практика интересует, если есть. Спасибо заранее.
Здравствуйте, господа. У меня тут курсач объявился, обязательно нужно делать десктопное приложение, а времени уже почти нету. Я так подумал, что быстрее всего такое можно будет сделать на шарпе, в Visual Studio всё же формочки клепаются за минуту, а обработка событий вообще за даблклик ЛКМ. Так вот, такой вопрос, каким инструментом будет лучше и быстрее всего организовать работу с БД? Желательно что-то такое, с чем не надо будет особо разбираться, ну и чтобы у меня всё парсилось в сущность, а не в массив какой-то.
В общем, я тот кто вчера спрашивал про JSON внутри БД. Так вот, я таки вот так и реализовал. Но обнаружился критический косяк - массивы, блядь. Я теперь не представляю как оно должно выглядеть. Блин, вот если бы тимлид не был таким вот любителем усложнить задачу, когда осталось 2 недели до дедлайна, а просто как люди - вынесем ДТО и интерфейсы для сервисов в отдельную сборку. Не, это слишком просто, пусть у нас сервисы друг другу представятся по рестапи, каждый сервис сохранит и будет из базы дергать и восстанавливать из этого дела JSON и только потом отправлять. ВЕДЬ: А вдруг забудет кто-то в общую библиотеку добавить изменения, а так представились и заебись.
То есть я хочу открывать xls таблицы внешним инструментом. У меня .net core 5
Сейчас у меня такое говно для теста. Но как переделать чтобы открывало средствами винды, а не я хардкором в коде? Во-первых потому что я не знаю какая версия офиса будет у пользователя, какая там будет разрядность и где точно он его ставил Во-вторых возможно у пользователя вообще нет офиса, а стоит какой-нибудь либр или опенофис который и открывает эти файлы
Вот в нетфреймворке вроде так и было. Но в коре так не работает, надо прямо указывать экзешник
>>2005107 >entity framework же православный. Я только начал вкатываться, такой вопрос - а в EF можно делать что-то сложнее примитивных таблиц?
Например сразу выдавать без лишних LINQ запросов составные запросы с сложными условиями? Или например форматирование? (например в базе в поле у меня такой полный формат даты, а в программе мне нужно более сокращенную форму выводить)
>>2005145 >(например в базе в поле у меня такой полный формат даты, а в программе мне нужно более сокращенную форму выводить) А при че тут EF? Получаешь сраный DateTime и интерпретируешь его как тебе надо
Я когда-то видел какую-то пиздатую либу чисто для сжатия на шарпе где было 9 методов сжатия, может кто напомнит как она называется? На сайте у них в доках еще была таблица сравнения этих методов.
Шарпаны, учусь уже почти 4 месяца, поковырял WPF, Winforms, ASP.NET Core, Unity. Сейчас хочу срочно вкатиться куда-нибудь джуном (сейчас ебашу на проклятом заводе, убил уже всё здоровье себе). Готов работать за еду, выжигать глаза, ебашить 20 часов в день, лишь бы взяли. Куда же всё-таки проще вкатиться, в веб или геймдев? Одинаково приятно и то, и другое. Просто нужно определиться, какую платформу дрочить вглубь, чтобы ускорить процесс перекатывания на новое рабочее место.
>>2005940 Проще в QA. Для примера практика нашей конторы - не тянет на джуна но вроде что-то знает - предлагают в QA пиздовать, если есть места. А так. В геймдеве ты соревнуешься с толпой школотронов, которые МЕЧТУ лололо хотят воплотить, еще не зная что прогер в современном геймдеве сосет хуй. В вебе ты будешь соревноваться с выпускниками вузов в основном и бывшими пхпшниками.
Как читать данные из checkbox как из потока? То есть, у меня в чекбоксе есть цифры и буквы в определённом порядке без пробелов. Я хочу числа запихнуть в инты, а буквы в чары.
Как читать данные из textbox как из потока? То есть, у меня в текстбоксе есть цифры и буквы в определённом порядке без пробелов. Я хочу числа запихнуть в инты, а буквы в чары. Самоисправил
Я знаю что мне хуй кто ответит по моему вопросу, но все же попытаюсь - юзаю по совету одного анона пару тредов назад AdonisUi на wpf'e. Я юзаю один всратый (в плане его результатов) обфускатор под назаванием SmartAssembly и он даже без настроек проекта заворачиватет адонисовское окно на фуллскрине в белую рамку. Кто нибуть знает, можно ли это как-то пофиксить в msil'e? Или подскажите может кто знает бесплатный обфускатор с шифрованым хранилищем строк как в смартассе (можно даже без обфускации как таковой)?
Как узнать что я быдлокодер, и не смогу вытащить программирование из-за отсутсвия интеллекта ? Знаю базовый синтаксис плюсов, шарпа, немного дотнет. Есть ли примеры задачек, если их не решить, то не стоит идти дальше, конечно не совсем банальщину, но такой минимальный уровень, который не будет бесполезным, и сможет зарабатывать деньги ? В вёрстку нехочу, слишком однообразно и неинтересно, хватает только на еду. Фронт ендер со знанием джаваскрипка для хорошей зп тоже должен иметь хороший интеллект для написания веб приложений