ред единственной элитной платформы в мире программирования.Шапка: https://github.com/CSharpShapka/SharpHat/wiki(пока просто перенесена шапка из ОП-поста, в ближайшее время приведу к более-менее адекватному виду, не стесняйтесь слать свои пулл-реквесты)Прошлый тред тонет здесь: https://2ch.hk/pr/res/869105.html
И сразу вопрос: каковы шансы при устройстве на работу джуном попасть на новый проект, а не на поддержку тысячелетнего говна?
>>887105перед собесом спрашиваешь: куда и на что тебя собеседуют. ну а дальше 60/40, что наебут
Сап, дотнетач. Понадобилось мне тут обработать ~10000 картинок, решил написать одноразовую программулину на C#. Делаю все как обычно, последовательно по одной картинке за раз (распараллелить тут нельзя, ибо манипуляции с каждой следующей картинкой зависят от предыдущей + рандом):Width = bitmap.Width;Height = bitmap.Height;Bits = BitmapToByteArray(bitmap);BitsHandle = GCHandle.Alloc(Bits, GCHandleType.Pinned);Bitmap = new Bitmap(Width, Height, Width * 4, PixelFormat.Format32bppArgb, BitsHandle.AddrOfPinnedObject());Далее произвожу нужные мне манипуляции с Bits, делаю Bitmap.Save, и после сохранения освобождаю GCHandle и все ресурсы.Но возникает проблема - программа правильно обрабатывает и сохраняет примерно первые 3-5 тысяч картинок, и после этого на рандомной картинке на Bitmap.Save выдает мне "AccessViolationException: Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена". Все картинки имеют одинаковые параметры (размер, формат, битность). Аноны, подскажите, куда копать? В каком месте память повреждается? И как она вообще может повредиться, если я выполняю все последовательно, и освобождаю все ресурсы строго после того, как они перестают использоваться? Тем более, все это делается даже без unsafe.
>>887209действительно ли тебе тут нужен gchandle, или проще воспользоваться блоком using для bitmap?выполняешь ли ты все дела с картинкой в unsafe блоке?
>>887254Вот этого удвою. Если уж совсем параноик, можешь явно прописать на Bitmap'е диспоуз.
Здравствуйте дамы и господа!Прямо с детства мечтал стать ниибаца кодером, как-то с годами забыл, но вот недавно пыл вернулся, на этот раз цель себе поставил четко. Свободного времени в день 2-3 часа +/-. Хочу это время полностью посвящать шарпу.Интересует разработка софта для соц.сетей, всякие боты и т.д., многопоточность, брут, ну и прочая хуйня.Знаний самую малость, но не полный 0.Так вот, очень прошу вас дать мне дельные видео уроки, книжки и т.д., дабы я их полностью переварил и начал потихоньку сам, свободно кодить, без копи-пасты чужих кодов.Алсо, пытался смотреть ITVDN курсы лысого Путина, но не зашла часть после машинных кодов, все эти байты и прочая хуйня сильно поимели мой мозг.Коротко говоря, нужны годные видео уроки и книжки, где доступным языком научат потихоньку самостоятельному кодингу.Заранее благодарен тебе анон!
>>887100 (OP)Здравствуйте дамы и господа!Прямо с детства мечтал стать ниибаца кодером, как-то с годами забыл, но вот недавно пыл вернулся, на этот раз цель себе поставил четко. Свободного времени в день 2-3 часа +/-. Хочу это время полностью посвящать шарпу.Интересует разработка софта для соц.сетей, всякие боты и т.д., многопоточность, брут, ну и прочая хуйня, короче, вполную использовать API и т.д.Знаний самую малость, но не полный 0.Так вот, очень прошу вас дать мне дельные видео уроки, книжки и т.д., дабы я их полностью переварил и начал потихоньку сам, свободно кодить, без копи-пасты чужих кодов.Алсо, пытался смотреть ITVDN курсы лысого Путина, но не зашла часть после машинных кодов, все эти байты и прочая хуйня сильно поимели мой мозг.Коротко говоря, нужны годные видео уроки и книжки, где доступным языком научат потихоньку самостоятельному кодингу.
>>887274>очень прошу вас датьНахуй проследуй. Если не в состоянии найти сам - в айти тебе не место.
>>887274> видео урокиУчить программирование по видеоурокам - то же самое, что и просить других людей пережевать еду за тебя, чтоб ты потом мог только проглотить.> книжкиНа русском всё устаревшее, на английском годная литература в основном только за бабло.Всё это хуйня, ты так ничему не научишься. Просто ставишь себе задачу "написать такое-то приложение", гугл в зубы - и вперёд, по пути всему, что потребуется, научишься.И да, вот этот >>887277 господин полностью прав - либо учишься искать нужную инфу сам, либо нахуй путешествуй отсюда.
>>887279Двачую. Я сам начинал с C/C++. Си учил по Ричи, а кресты по Страусу. Плюс гуглил если что-то не понятно. Дальше все языки без книг учу и видео. Там слишком для начинающих объясняют. Не хочу каждый раз проходить переменные снова. Лучше так как ты сказал, Google+MSDN+SO и пилишь проект.
>>887277>>887279>>887323Благодарствую господа.Так и быть, откину нахуй все книжки и видео уроки и сяду тупо пилить софт путем поиска в гагле.Назрел такой вопрос:На каком уровне знаний лучше лезть в API? Там дохуя сложно или как? Тут наверное есть те, кто работал с API.
>>887337Это просто пиздецки сложно. На пике все слова, которые тебе нужно гуглить.
Для каких реальных кейсов используется dynamic? У меня такое ощущение, что он нужен только для того, чтобы любители динамикодрисни а-ля JavaScript чувствовали себя как дома, кладя хуй на всю систему типов.
>>887409для совместимости с языками программирования без статической типизации. ну либо в случае, когда структура объекта может быть настолько разной, что аж плохо становится
>>887337Если умеешь в Си, начни с албахари. Идёт как справочник по возможностям языка и потом юзкейсы. Мне после контроллеров заходит самое оно.
>>887409D L RLR
Господа анонимные шарписты, где почитать про библиотеки?Вот у меня есть самописный редактор уровней для самописной игры. Есть инструменты - кисть, ластик, селектор для работы со свойствами конкретного блока и создания связей, етц. Каждый такой инструмент - синглтон, наследующий интерфейс ITool. Я хочу каждый такой инструмент сделать дллькой, чтобы в коде это выглядело как-то так:foreach (var tool in toolDir.GetFiles(*.dll)) Tools.Add(tool.Name, tool);Мне нужно узнать собственно про импорт и детали создания. Если просто создать новую библиотеку классов, сунуть туда все связанные интерфейсы и код из текущих классов, это будет правильно?
>>887714MEF
>>887778На первый взгляд, выглядит правдоподобно. Спасибо.
>>887787> На первый взгляд, выглядит правдоподобноЭто только на первый взгляд, на самом деле MEF - хуита лютая. Я хотел использовать в своем проекте, но, почитав доки и посмотрев примеры кода, решил, что нахуй это всё. Ограничился подгрузкой модуля через Reflection, куда быстрее и проще.
Я не понимаю шарп и мне больно.
>>887928Как можно не понимать один из самых простых языков программирования? Синтаксис самый что ни на есть классический, без новомодных выебонов. Каких-то подводных камней, на которых может споткнуться начинающий - нету. Возможностей во фреймворке куча на все случаи жизни, а если чего-то нет, то для этого наверняка есть сторонняя либа. Шарп - наверное лучший язык для вхождения в программирование, а ты его не понимаешь. Странно как-то.
>>887937дотнет - не самый простой фреймворк
>>887943А что, из современного и универсального есть что-то ещё проще?
Интерпрайзоны, а какие у шарпа преимущества в корпоративной разработке перед 1c и java?
>>887946руби-хуюби?>>887955охуеть, сравнивать .net и 1сhttps://ru.wikipedia.org/wiki/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5_C_Sharp_%D0%B8_Java
Читал давеча, что нового в седьмой версии и у меня возникает только один вопрос: почему Сишарп такой охуенный?
>>888049так, небось, пидары как всегда наобещают, а потом повводють один синтаксический сахар
> Что почитать про юнит тесты, чтобы научиться их писать? Много раз слышал, но сам не пользовался.Просто про юниттесты - книга roy osherove unit tests чегототам, в целом дает норм представление и многие моменты разъясняет. Толковый справочник xunit test patternsПо мне, юнит тесты дают максимум выхлопа при tdd. Мой путь был таков:Unit tests for fridy cats like me на pluralsightЕще пачка видосов от туда по этой теме, вплоть до курса марка симанаКнижка growing object oriented software guided by tests - вот после нее все встало на свои места и теперь мне без test first жизнь не мила.
>>888073>а потом повводють один синтаксический сахарА они же вроде ничего кроме сахара и не обещали (паттерн матчин там будет примитивный)
Уже год как вкатился в асп мвс. Каждый день я занимаюсь крудошлепством и ковырянием проекта, знания которого никак не помог мне при перекате в другую контору. Если бы это не разбавлялось фронтэндом и написанием тестов, я бы уже завыл от безысходности.Это вот так все и будет продолжаться? Когда начнется интересная часть? Про многопоточность могу не мечтать?
>>888225Точи навыки в попенсорсе, есть множество проектов на .Net где требуются люди с опытом и горящими глазами делать что-то интересное.
>>887254>>887268В общем, хотел расписывать ответы на вопросы, но таки нашел решение.Прежде всего напишу, что я не программер, никогда на него не учился, и это всё - чистое хобби. Так что возможно я просто не учёл какую-то особенность языка.Сначала скажу, что я использовал не Bitmap, а класс-обертку (DABitmap) над ним, которая позволяет доступ к пикселям напрямую - получается доступ к массиву каналов без unsafe кода, LockBits, Marshal.Copy и прочей ненужной шелухи, при этом со скоростью того самого LockBits. Написал свои методы GetPixel и SetPixel, работаю с ними.Для обработки картинки я сделал функцию ProcessBitmap, которая изначально принимала и возвращала DABitmap, затем в вызывающем коде уже выполнялся Bitmap.Save. Всё работало прекрасно, однако прога стала сжирать память в больших количествах. На маленьких наборах картинок ещё всё отрабатывало, а на полном массиве, по моим подсчетам, ей понадобилось бы около 20 гигов оперативки. Я прогнал профайлером и обнаружил, что по какой-то причине те самые одномерные массивы каналов после использования продолжали оставаться в памяти, по ~2 мб на картинку. Я решил изменить функцию так, чтобы она принимала исходный DABitmap, и через ref обычный битмап, в который нужно возвратить результат. Прописал возвращение через Bitmap.Clone, затем вручную Dispose на используемые ресурсы. Пожирание памяти прекратилось, но стала выплывать проблема из >>887209. В итоге я решил ради теста не возвращать битмап, а сохранять его непосредственно из ProcessBitmap (вместо Clone), прямо перед диспозом. И, о чудо, всё вдруг заработало прекрасно. Я прогнал ради теста раз 20 на разных наборах картинок, ошибка перестала появляться.Такие дела. Но мне всё же непонятно, почему вылетала та ошибка. Явно каким-то образом мой склонированный битмап исчезал из памяти раньше, чем успевал сработать Save, но как такое возможно?
>>888020Как руководители определяют, на какой инфраструктуре сидеть? В 1с все шаблоны отчётиков готовы и бух функции написаны. Так чем шарп для предприятия лучше? (Как доказать работодателю, что оставаясь на шарпе, мы сможем большее? В чём наше конкурентное преимущество?)Или иначе задам вопрос, каким компаниям выгоднее .net а каким 1c?
>>888251тут вопрос не в том, что шарп лучше для бухучета или наоборот, а что это сравнение не совсем правильное: как теплое и мягкое>>888162и даже свитч-кейз для типов будет оберткой над if (obj is Type) { (Type)obj. } ?нупиздец
>>888260Ну им же легче компилятор дописать, чем саму clr чтобы она понимала твой паттерн матчинг. Зато работать будет без обновлений фреймворка
>>888225Многопоточность? Ну попробуй редактировать и удалять одну и ту же сущность в паралели - если всё ёбнется - чини. Узнаешь про потоки
>>887928>я тупой>мне больноотсутствие мозга создает вакуум.Потому тебе больно.
>>888225Подмогите, аноны. Обращался в прошлом треде, уже больше понимания, но остались еще вопросы.Дали курсовой по .net сделать интернет магазин. То, что должно быть в проекте обязательно: N-tierasp MVCautofacEF CodeFirstДолжно быть 4 слоя: 1) Репозиторий2) Домен 3) Сервисы 4) MVCЯ все правильно понимаю или нет? Буду искренне благодарен!
>>888364Я сам джун, но всё-таки отвечу.Делай три слоя:DomainDALWebВ Domain лежат сущности, сервисы и интерфейсы репозиториев. Этот слой ни от кого не зависит. Здесь реализуется только бизнес-логика.-----DAL - реализует интерфейсы репозиториев из Domain. Соответственно, от него же он и зависит. То, что ты пишешь реализации интерфейсов в отдельной сборке позволяет тебе полностью абстрагироваться от способа хранения данных, у этого есть свои плюсы:1. Ты не думаешь понятиями EF или других механизмов хранения данных, когда пишешь Domain-слой2. Ты можешь писать юнит-тесты для Domain-слоя, делая заглушки для репозиториев3. Если приспичит, то можно без особой боли отказаться от EF (хотя хуй знает, зачем)Отдельно стоит сказать, что в DAL слое у тебя, скорее всего, будут лежать дубликаты всех сущностей в виде DTO. Причина этого в том, что в Domain слое ты, по хорошему, убираешь часть сеттеров (например, у пользователя нельзя поменять id после создания). EF пошлёт тебя нахуй, если ты попытаешься создать сущность с отсутствующим сеттером и без конструктора по умолчанию (который без параметров). Поэтому тебе нужно будет маппить доменные сущности к DTO и обратно. Чтобы не писать тучу однотипного кода, есть готовые либы, можешь погуглить. Алсо, в этих DTO ты можешь использовать аннотации для описания схемы бд, типа [StringLength(200)]. Все эти DTO можешь пометить модификатором internal, поскольку кроме DAL-слоя о них никто не знает.-----Web, соответственно, зависит от двух верхних слоёв и делегирует исполнение бизнес-голики доменным сервисам. В контроллерах не должно быть никакой бизнес-логики. Только валидация, преобразования сущностей в DTO (например, тебе нужно в результате отдать данные пользователя в виде JSON, но ты не хочешь отправлять его пароль) и отправка результатов на выход.Ахуеть, я на курсовых только формошлёпством занимался. Удачи тебе.
>>888364Вроде все так. Только учти, что нижние слои не должны знать о верхних, что-то типо такого:Domain <- Repo <- Service <- Webт.е. доменка не связана ни с чем, репозитории знают только о доменке и т.д.
>>888391Спасибо, я еще до конца не разобрался, но разве не с помощью IoC контейнеров реализуются интерфейсы репозиториев?
Посоны, EF рабочая технология или нет? Разве запросы не проще хранимыми процедурами написать? Энторпрайз уровень, EF видел только в простейших реализациях.
>>888422Зависимость для контейнеров прописывается на уровне web-приложения как раз.>>888426Что тебе мешает вызывать хранимые процедуры из EF? Да и не все же ты на хранимках будешь делать. Где-то достаточно простого запроса с использоваие linq и EF, если даных не много. Зачастую мне кажется EF в тырпрайсе только по историческим причинам существует - когда-то запилили, ибо самый удобный инструмент был, а микро-orm небыли на слуху и не пользовались популярностей.
>>888422IoC контейнер всего лишь управляет зависимостями. Например, у тебя есть сервис, который зависит от объекта типа IUserRepository. Ты хочешь скормить ему реализацию в виде UserRepository. При этом UserRepository лежит в другой сборке и напрямую ты от него не зависишь.Для этого тебе нужно настроить твой IoC-контейнер. Ты пишешь либо в DAL, либо в Web-слое что-то рода:Bind<IUserRepository>().To<UserRepository>();Всё. Теперь любой, кому понадобится реализациия IUserRepository, сможет её получить. Автомагия IoC-контейнера подставит репозиторий в конструктор для твоего сервиса.
>>888428там где достаточно простого запроса, селекта через ADO хватает. Про энторпрайз - я имел в виду, что EF там нет. (Ориентируюсь на SharePoint).
>>888409Спасибо, еще раз, а то не мог найти, что бы доступным языком объяснили
>>888431>>888437
>>888436Через ado пиздец неудобно работать - linq куда красивее и проще.
>>887105Джуном без опыта устроиться непросто. Сейчас джунов как говна, а позиций не так уж много. Легче мидла одного нанять чем несколько джунов.
>>887277А вот этого пидора хорошего человека внезапно двачую
>>888242> Прописал возвращение через Bitmap.Clone Наверное из-за этого ошибка была:It is the common difference between a "deep" and a "shallow" copy, also an issue with the almost-deprecated IClonable interface. The Clone() method creates a new Bitmap object but the pixel data is shared with the original bitmap object. The Bitmap(Image) constructor also creates a new Bitmap object but one that has its own copy of the pixel data.Using Clone() is very rarely useful. Lots of questions about it at SO where the programmer hopes that Clone() avoids the typical trouble with bitmaps, the lock on the file from which it was loaded. It doesn't. Only use Clone() when you pass a reference to code that disposes the bitmap and you don't want to lose the object.
>>887279> На русском всё устаревшее, на английском годная литература в основном только за бабло.Все основные книги по шарпу из шапки переведенына русек, даже если не последнее издание ничего страшного в этом нету.> Просто ставишь себе задачу "написать такое-то приложение", гугл в зубы - и вперёд, по пути всему, что потребуется, научишься.Знал я таких хуесосов, которые хвастаются своими еба проектами которые написали с помощью гугла и SO, но при этом даже не знают для чего используется ключевое слово static. Так что книги нужно будет осилить в любом случае для более глубокого понимания предмета.
>>888426инфраструктура EF дает возможность писать те участки кода, которые зависят от обновления БД, но писать триггеры, самому высматривать что удалилось/изменилось/добавилось, возможность отсутствует
>>887276> ITVDN курсы лысого Путина, но не зашла часть после машинных кодов, все эти байты и прочая хуйняТам что, умные вещи рассказывают? Посмотреть что-ли.
>>888431ioc еще всего-лишь вынужден управляет временем жизни инстансов, так-то
>>888536> pixel data is shared with the original bitmap objectБоже мой, ну вот нахуя они это сделали? Ещё и нигде про это не написано. От функции с именем Clone ждёшь совсем другого поведения.
>>888972ну тошо копировать пару мегабайт данных это вам не это. достаточно много всякого в BCL неочевидно в угоду производительности
Шарпаны, поясните за массивы vs коллекции. Как я понял, для повседневных нужд лучше использовать коллекции, особенно специфичные их типы: таблицы хешей, стёк и прочее. Для высоконагруженных задач обычные(особенно двумерные/зубчатые) подходят лучше.
>>889009массив - это тоже коллекция, так-то> для повседневных нужд> особенно специфичные их типыохуенная логикахэшсеты, стэки и прочее используются там, где нужны хэшсеты, стэки и прочее. для того, чтобы загнать некое множества данных от одного места в другое, обычно используют T[]/List, прикрывая все это IEnumerable. изредка появляется необходимость использовать нечто вроде IList, IReadOnlyCollection. в качестве коллекции, которую можно дополнить/урезать - соответственно List/Collection
>>889022Я нюфаня, но твой посыл примерно понял. Буду решать задачи с использованием всех возможных типов, по необходимости.
>>889032пробегись глазами сюда http://metanit.com/sharp/tutorial/4.1.php раз уж так
Пацантре, как работать с соц.сетью, который не выдает свое API? Вернее, выдает его только охуительным разработчикам и т.д., а для моего говно-софта для разного рода спама его не получить.Какие варианты еще есть?
>>889055> выдает его только охуительным разработчикамэто чо значит? типа надо купить/подписаться?парсить страницы
>>889057Типа надо быть разработчиком с идеей охуительного приложения и готового шаблона, дабы предоставить этим пидоразам на проверку, а далее получить доступ.Благодарствую за ответ.Но нет ли другого способа? Уточню пожалуй, что речь о instagram-е. Все же акцент хотелось бы сделать на эмуляцию действий с мобильного приложения, а не через их веб-калеку.
>>889059хех, ну как вариант найти способ спарсить реквесты/респонзы инстаапп своего мобильника
>>889062Еще раз благодарствую и посылаю нахуй эту идею, знания не дотягивают, увы...Возможно вернусь через пару лет к этой идее.Кстати, меня в целом интересует всякого рода спам и т.д.Есть ли где-нибудь охуительная обучалка по POST/GET?
>>889064не уверен, что понял вопрос. пост/гет - это протокол HTTP, REST-сервисы и вся эта затея
>>889070Да, я и говорил о HTTPS запросах. Т.к. API мне не получить, а вся эта ебля с телефоном не для моего уровня, то можно для начала хотя бы попробовать реализовать через калека-браузерную версию.
>>889072ну HTTPS - это HTTP + шифрование на уровне клиентасамое сложное (как мне кажется) - это как раз с телефона декодировать что/куда/кому направляется т.к. тебе понадобится сертификат которого у тебя нет. либо колдовать над wireshark и ему подобными. но я тебе тут вообще подсказать ничего не могублаго, у браузеров есть Console/Network, где вся эта херня проходит без проблем. тут встанет вопрос, применим ли браузерный API к кему-нибудь, или придется парсить хтмл
>>889074А как насчет этого?Могу я попросить тебя пробежаться глазами мельком?Только сейчас нашел.https://github.com/mgp25/Instagram-API
>>889075судя по всему - это как раз и есть имитация тыкания пользователем кнопочек в браузере. только мне сложно понять как оно распознает ответ сервера (ибо рнр), но не думаю, что там что-то революционно уникальное
>>889085Для начала нужно переписать код с PHP на C#.Сколько примерно будет стоить такой заказ? Т.к. в PHP у меня знания только на базовом уровне, на начально-базовом.
>>889087я хз
>>889087оче дораха, делай форк и развивай свои скилы на си решётке.
>>889088Ладно, проехали, ты и так мне помог аноняша.Накидай годных гайдов и т.д., дабы усилить свои знания именно для таких целей, разработка софтов онли для соцсетей и т.д.Какие-то определенные библиотеки может изучать, ну или пути, ну и т.д. Просто недавно только подсел на C#, общее понятие о программирование есть, лет 5 назад сутками напролет кодил, сейчас решил вернуться, только вот всю эту хуйню подзабыл, да и сейчас нужны знания онли для такого рода целей, спам и прочая хуйня в соц.сетях.
>>889094Тереби профильные форумы на технологии -> ищи аналоги на C#
Возможно ли в 2016 собрать проект на Xamarin.Android, используя линупс?
>>889238В чем проблема? Ставь MONO + Android SDK, собирай msbuild или xbuild
>>887100 (OP)Не первый раз встречаю мнение, что МС забросили WPF. Насколько это правда?
>>889291Нафиг тебе WPF, когда есть UAP?
>>889291это неправда как и то, что ms забросили winforms. конечно, не сказать, что это приоритетная разработка или хотя бы где-то в топах, но тем не менее
>>889339>UAPЯ же не плиточный пидор.
>>889356>Я же не плиточный пидор.А какой ты пидор?
>>889364АХаха, как ловко ты попытался меня подловить. Прям как в школе в молодости. Я никакой не пидор.))))
Друзья помогите пожалуйста новичку.В плане хобби\кучи свободного времени на работе изучаю .NETХочу в итоге написать небольшое картографическое приложение для себя. Начал курить варианты настольных приложений - Windows Form, XAML. У меня вопрос, возможно некорректно поставленный, на какой технологии создано родное приложение "Карты"? В частности как реализованы вкладки и вот такого плана меню, как на скрине? Если можно подробней, материал по теме я сам найду. Вообще в чем имеет смысл из современных технологий приложений для десктопа разбираться?
>>889473Очень похоже на: https://www.arcgis.com/features/index.html
>>889482Приложение на скрине это https://www.microsoft.com/ru-ru/store/p/maps-windows/9wzdncrdtbvb
>>889473>на какой технологии создано родное приложение "Карты"?UWP или WinRT, зависит от версии Windows.
>>889491Это UWP
>>889504Windows 10
>>889473>В частности как реализованы вкладки и вот такого плана меню, как на скрине?Не понимаю твою огромную желтую мазню. Могу попробовать ответить если ты разобьешь это на несколько отдельных вопросов с отдельными картинками.
>>889339Странное сравнение. Это ж разные программные платформы(UWP = mobile в котором возможности обрезаны ради безопасности end user'a, WPF = необрезанный .NET 4.6.*,).
>>889511Как в окне приложения реализованы вкладки?В данном случае результат поиска "пик 1" отображается в новой вкладке "пик 2" + открывается информационная панель со списком объектов около этого адреса с возможностью ее свернуть либо перейти к информации о конкретном объекте "пик 3".Мне интересно на основе какой технологии в приложении я могу реализовать возможность открытия и работы в нескольких вкладках (в идеале конечно еще возможность вкладку выводить в отдельное окно, как в Edge например), а также реализовать подобные скрывающиеся меню.
>>8895161 это не вкладки, а просто список(с горизонтальной ориентацией разве что, больше в нем ничего необычного не вижу).2 это контейнер(какой-нибудь Grid или StackPanel) содержимое которого через binding привязано к выбранному элементу списка 1. Насчет того что он заменяет поиск: либо это просто 2 контрола размещены в одном месте и у них переключается видимость, либо сложный кастомный UI контрол с разными состояниями.
>>889524Забыл еще кое-что, вся верхняя панель это AppBar.
>>889524СпасибоИнтерфейс реализован на XAML? Тк это UWP приложение, то соответственно Windows Runtime XAML?
>>889529Да, ты правильно понял.
Шарпач поясни,есть необходимость подсчитать в коллекции кол-во элементов, удовлетворяющих условию. Как лучше всего сделать, через массив + счётчик или использовать метод Count от LINQ? Как вообще оценить нужность того или иного подхода?
>>889689Это зависит от того, что тебе нужно. Функциональный стиль делает твой код более коротким, понятным и не оставляет шансов обосраться.Сравни:int goodItemsCount = yourCollection.Count(x => x.SomeField == 42);С этим:int goodItemsCount;for(int i = 0; i < yourCollection.Length; i++)if(yourCollection.SomeField == 42)goodItemsCount++;Однако, за всё хорошее нужно платить. В конечном счёте, это влияет на производительность. Использование LINQ будет менее производительным, в сравнении с простым массивов и циклом со счётчиком.Но, стоит сказать, что в современном мире все дружно кладут хуй на производительность в пользу читаемости. Так что best practices считается - "Всё пишем на LINQ. Если приложение тормозит, то замеряем профайлером. Если проблема в коде с LINQ, то перепишем его."
>>889689оценить через О(н) и другие асимптотические показатели, как и всю алгоритмическую сложность/эффективность кода.Каунт(предикат) будет работать через получение энумератора и инкремент счетчика при удовлетворении условия, так что конкретно в данном месте ты ничего кроме времени не потеряешь
>>889712>if(yourCollection.SomeField == 42)Собственно, наглядная демонстрация того, как быстро можно обосраться с таким подходом. Я имел ввиду конечно же:if(yourCollection.SomeField == 42)
>>889712> Использование LINQ будет менее производительным, в сравнении с простым массивов и циклом со счётчиком.это схуяли?
>>889716>if(yourCollection.SomeField == 42)Какого хуя? Двач квадраные скобки обрезает?
>>889689>>889712Кароч, сам потестил с помощью Stopwatch и пришёл к интересному выводу: чем массив больше, тем меньше разница ручного обхода с LINQ. Но обход ручками аж в 30 раз эффективнее на малых (кол-во элементов <1К) и всего в 2 раза на больших (>=100000).
>>889719стопвотч в таких анализах не самое эффективное средство. вангую ты еще без прогрева дженнриков тратил,запуская линкью следом после итерации массива?
>>889720СложнаFillArray заливает массив рандомными значениями.
>>889718> Двач квадраные скобки обрезает? Парсер тегов кривой, епты. Все это знают.
>>889721хуйня этот твой тест, в массиве, состоящем из одного/двух элементов небось получишь разницу на джва порядкав офисе буду - отвечу, если будет интересно
>>889729во-первых, в первом случае ты захватываешь упаковку значения результата в Console.WriteLine, в подсчет времени выполненияво-вторых, ты сравниваешь методы для int[] (который является фундаментальным типом) и IEnumerable<T> (который является а) хуй пойми чем для рантайма, б) является универсальным типом). и тут надо знать, как дженерики вообще работают: jit компилирует на ходу (если еще не сделал это) отдельный тип для всех ссылочных типов и по каждому на все значимые. следовательно, ты, вкупе со всем, загоняешь в подсчет времени выполнения еще интервал компиляции классаотсюда напрашивается объяснение этому вот:> чем массив больше, тем меньше разница ручного обхода с LINQесли, условно говоря, компиляция типа и упаковка инта в кучу занимает 10 условных единиц времени, а обход массива из n элементов - n * 0.1, то, грубо говоря, на двухсотом элементе массива время выполнения обоих случаев выйдет в паритетну, и в-третьих - реализация IEnumerable<T>.Count(Func) выглядит так:if (source == null) throw Error.ArgumentNull("source");if (predicate == null) throw Error.ArgumentNull("predicate");int count = 0;foreach (TSource element in source) { checked { if (predicate(element)) count++; }}return count;тут мне сложно пока что давать этому оценку, бенчмарки for/foreach довольно сильно разнятся и говорить, что linq хуёв только из-за foreach, я бы не стал (а может быть и стал)
>>889740Но хабрабляди пишут что foreach пиздец как оптимизирован и потому используется везде, где только можно.
>>889741он поэтому и оптимизирован потомушто используется везде, где только можнов основном бытует мнение, что foreach сиравно медленнее, чем for. но, даже если это и так, насколько медленнее? одна статья 13го года говорит, что в 0.000000000000000000000001 раз, другая, 14го, дает разницу в несколько раз. кому верить - непонятно никому, естественно
>>889740какая нахуй сегодня разница в скорости foreach или for. Похуй на декларативность, foreach - тут тебе и рефлекция инклудет, и вся разная кошерность. Учитывая что в 99% на шарпе пишутся web решения, а значит и деплоятся на win сервах(кол-во решений на core умножаю на 0), вопрос о быстродействии отпадает сам по себе
Бля, аноны, я знаю, что у вас сейчас подгорит, но очень нужна ваша помощь.Дело в том, что я просто пиздец как хочу выучить этот язык, я, блядь, просто обажаю шарп!Но увы, синтаксисы я не знаю, общий подход также не знаком мне.Поэтому няши, я вас прошу не кидать в меня говно и подкинуть идеи, как нормально выучить шарп с нуля. Я готов днем и ночью вникать и делать, только вот решить не могу, везде советуют разное.Отдельная просьба, написать именно то, с чего вы начинали сами, ну или хотя бы лучшую книженцию для новичков по шарпу, можно и видео уроки, сайты и т.д.Буду вам очень благодарен!
>>890165>везде советуют разноеЯ бы тебе посоветовал, но это для тебя будет лишь +1 способ выучить c#.
>>890165Книженцию-хуюженцию. Пиздуй в скайп sergey.krivonos2 поясню азы тебе
>>890165>я обожаю шарп>синтакис не знаю, общих подходов не знаю>хочу нормально выучить.Ты охуел тут на ноль делить?А вообще ты странный, в шапке указан большой список литературы, рассортированной к тому же. Посмотри для начала шапку, а потом уже сам поймешь.
>>890123печально, но приходится работать с такими же гениями, как и ты. вас где-то в инкубаторе делают? откуда ж такой тотальный похуизм к тому, чем занимаешься
>>889744>в основном бытует мнение, что foreach сиравно медленнее, чем for. но, даже если это и так, насколько медленнее? одна статья 13го года говорит, что в 0.000000000000000000000001 раз, другая, 14го, дает разницу в несколько раз. Это легко померить. В C# 2.0 разница точно была, по памяти примерно на 30% при проходе по массиву intов. Сейчас тот же код (у меня сохранился с тех лет) на C# 4.6 никакой разницы не показывает вообще.Кстати раньше и тернарный оператор был на 20% медленнее чем if else.
>>890165П - практикуй, начни с лабораторок для студентиков.И - импровизируй, решай задачи максимально разными способами, от очевидных до самых ебанутых. Если не знаешь последних - ищи в интернетике по ключевым словам задачи.Толку от чтения книг без понимания зачем оно там всё так мутно расписано - нет. Решение задач создаст необходимость и возможно мотивацию при очевидном ощущении прогрессаю
>>890259Код в студию!
>>890349почитал ваш тред и утверждаю:Ребят, вы какой-то хуйнёй занимаетесь.
>>890353Покажи нюфаням что не хуйня? В хаскеле на функционал теребить?
>>890357Да.
>>890357Не хуйня? Многопоточность например. Лучше бы ее дрочили а не foreach vs for.
>>890374просто ты вчера прочитал про потоки и решил, что вот это не хуйня, а все остальное хуйня?тащемта все из мелочей складывается: идеально спроектировал синхронизацию потоков/данных, но проебал в работе с коллекцией/памятью - считай, зря время потратил
>>890292Понял, спасибо.А есть охуенные документы по-типу autoit-овской?Там на русском все так охуенно написано, подача легкая, примеры также легкие, очень легко освоить новичку.Подобные доки для шарпа есть?Вот пример autoit-овской документации: https://autoit-script.ru/autoit3_docs/functions/ControlListView.htm
>>890386msdn, другого не завезли
>>890389а как же давно мертвый rsdn?
>>890390OBSOLETE
>>890389Благодарен няша.А ты как выучил сей замечательный язык?
>>890392Я не выучил, я его учу. Знал до него на среднем уровне Си - базовые навыки алгоритмов, дискретной математики, строения ПК и ОС имеются. В данный момент активно нарабатываю практику работы с LINQ + коллекции (оче удобно). Дальше планирую GUI(WPF) + сети (сокеты/хуекеты). Пидорю тестовые задания для джуниуров. 90% вопросов решаются правильным запросом в гугл и последующим переходом на англоязычный Stackoverflow.По книгам могу посоветовать следующий порядок: Троелсон -> Альбахари -> Рихтер. Учти, я говорю только про язык - навыку программирования можно научиться только пидоря код, читать паттерны/алгоритмику, искать схожие решение и снова и снова и снова пидорить код.
>>890384ты немного не понял.Обосрался с потоками - обосрался с логикой.Выбрал вместо foreach for - нихуя не помеянлось кроме байтоёбстваМногопоточность ведь не всегда про скорость выполнения.
>>890384В случаях оптимизации вопросов нету - ты прав. это я просто решил дополнить.Я просто к тому что есть более важные вещи чем сравнение for и foreach
>>890424>>890426ну можно поманяфантазировать и представить, что мы пишем кастомную коллекцию и соответствующий кастомный итератор, который оказался не структурой, а коллекцию перебирают по сто раз в наносекундуне зная, чем является foreach, IEnumerable<> и вся эта хуйня, можно так же нехило обосраться с утечкой памяти, потере времени на сборку мусора (в итоге загоняя временные объекты во второе поколение) не хуже этих ваших потоков> есть более важные вещи чем сравнение for и foreachну тут как посмотреть. вообще, субъективно для меня интереснее зарыться в, казалось бы такое примитивное и очевидное говно, как стукруры vs классы, реализация интерфейсов, перебор коллекций. нупотомушто какие вопросы с многопоточностью являются вот такими, грубо говоря, совершенно неожиданными вещами? ты либо знаешь, либо не знаешь. оно либо работает, либо не сработает потому, что ты еблан. либо new Thread().Start() ибо итак норм, либо более адекватные методы
Господа, поясните вот что.Загорелся желанием изучить Шарп, скачал видяхи ITVDN и начал смотреть лысого.Так вот, первые уроки зашли на ура, но вот дальше началось байтоевство, которому мне на данный момент нахуй не нужно.Поясните за байты, стоит ли все же вынудить себя выучить эту еблю, или можно смело менять обучение на другие уроки и книжки, где нет байтоебства?
>>890349Пикрилейтед.>>890353Тебя забыли спросить.
>>890454>button99_Click>button101_Click
>>890458Почему-то у всех пригорает с этого.
>>890454а в чем прикол вложенного массива?
>>890495хотя, массив в тыщщу миллиардов элементов это вам не это. проще было бы уже один массив на 100 элементов прогнать четыре-пять раз дабы не допустить его попадание в LOH
>>890454> button99_Click> richtextbox> однотипные функции, наполовину состоящие из повторяющегося кодаФу, блядь. И этот человек ещё рассуждает о внутреннем устройстве языке. Самому то не стыдно такое выкладывать?
>>890495Чтобы меньше памяти жрать и дольше выполнялось, для более высокой точности оценки, т.к. tickcount имеет минимальный шаг 16 мс.>>890622>Самому то не стыдно такое выкладывать?Нет. Это отдельный проект который только и состоит из таких мелких функций, всё назначение которых это сделать один тест и получить результат и больше не его никогда использовать. Нет никакого смысла делать что-либо легкочитаемым, поддерживаемым и тому подобное, т.к. никакая поддержка и чтение вообще не подразумевается. Вы ребята слишком увлеклись быдлокодингом, и наверняка каждый тестовый код делаете с паттернами, осмысленными именами и прочей поебенью, и ставлю анус что в серьезном проекте несмотря на всё это обосретесь и сделаете его трудноподдерживаемым в итоге.
>>890634> больше его никогда не использоватьфикс
Кстати там достаточно интересные тесты есть. Например int? работает в разы (если не десятки) раз медленнее чем int. Увеличение переменной в структуре из самой структуры работает быстрее чем увеличение из внешнего по отношению к структуре кода.
>>890454Скинь весь проект. Интересно посмотреть тесты.
>>890724Ты там ничего не разберешь. Даже я много чего не понимаю. Многие тесты сделаны для конкретных алгоритмов которые я писал когда-то, я уже даже забыл каких.
кто пишет на .net core: какие кто. наличии адекватные средства для профилирования памяти? нашоль в гитхабах CoreProfiler, по-моему, но вот слабо разобрался, как его впердоливать в приложение. также мсдны говорят про интерфейс ICorProfiler, и, судя по всему, он также действует по принципу "интегрируй меня в приложение и пингуй время от времени". есть что-то чуть более френдли, а-ля дотмемори - запустил в стороне и смотри на графики?
>>890742Ну так ясен хуй он не разберет, они же рряя одноразовые вы проста быдло и нипанимаете что button1337_Click это удобно а я большие проекты пишу!
>>890744Да, так и есть.
>>890749> Да, ситуация говорит, что я обосрался. Что ж, сделаем вид, что все по плану и обосрались все вокруг.
>>890751У тебя багет что ли?
>>890634Паттерны же только уродуют код и делают его менее читаемым для стороннего разработчика. Вообще эта хуйня, зачастую идущая против принципов ООП, не понятно нахуй и откуда взялась.
>>890634>минимальный шаг 16 мсНе всегда, и у тебя сейчас скорее всего 1мс, а вообще можно вручную задать
Поможите с wpf.Создал textBox_logWindow который хочу использовать в качестве лога.Создал файл класса LogWindow. В самом классе хочу определить методы для запист в лог, сохранения лога и т.д.Думал что, поскольку общий namespace, для добавления нового текста в лог будет достаточно всего лишьpublic static void WriteLog(string data){textBox_logWindow.Text += data;}Но хер там был.Пробовал класс LogWindow делать наследником MainWindow. Но один фиг - имею доступ к текстбоксу в MainWindow но не имею в своем классе.Прошу учесть при критике и даче рекомендаций, что это вообще моя первая программа на C#.Класс хотел сделать для того что бы в коде была возможность в одну строку LogWindow.WriteLog(data) выводить информацию о работе программы. Пикрил мой бот для ла2 написанный на autoit, сейчас пилю другую программу, но хотел такой же лог замутить для наглядности работы.
>>890985> 2016> desktopНо зачем?
>>890991Чому нет? Не поднимать же микросервисы на каждый чих.
>>890991А на чем еще писать десктоп? Или предлагаешь пилить всё в вебе?
>>890985> Класс хотел сделать для того что бы в коде была возможность в одну строку LogWindow.WriteLog(data) выводить информацию о работе программы.Сделай окно синглтоном и сделай в нём паблик метод WriteLog. И будет что-то вроде LogWindow.Instance.WriteLog(data).
>>890985ЛистБокс же
>>888661Нет, это унылая хуйня для даунов.
>>888661Там комментатор мягко говоря НЕОЧЕНЬ и слушать его просто невозможно, хотя получше индусов на ютубе с их виденьем на английский язык.
>>890985Я в таких случаях делал так.Класс лога статический и инициализируется в конструкторе главной формы с передачей ему объекта textBox_logWindow. Далее класс лога использует этот объект для вывода
>>890743
>>889689Насчет производительности не скажу, но LINQ запрос читать удобнее чем пердолинг с for/foreach.
>>891212Можно пример кода того что ты имеешь ввиду? Если не затруднит.Вроде понял что ты имеешь ввиду, но по коду бы нагляднее было бы.
>>891406Только у меня тут webforms, но я думаю это вряд ли что-то меняет.
>>891410Благодарю, попробую у себя прикрутить такой подход.
>>889291Насколько это правда? На форуме разработчиков последний пост об обновлениях был вроде в 2012.Ну и типа да, как сказал другой анон, WPF переродился в UWP
>>891410Спасибо анон, я если честно и не думал что кто то подскажет чего внятного, какие то листобоксы, предложение вместо десктопа веб приложение и т.д. >/prС одной стороны мне нравиться сисярп, ибо куча фич и наворотов, но блин - реализация лога на autoit у меня заняла минут 10, на то что бы разобраться как запилить точно такую же вешь сутки ушли(а до этого еще и основы и wpf не один день ковырял). Сложно блин. Особенно то что по сути одну и ту же задачу можно решить десятком способов и не понятно какой способ правилен, а какой говнокод и в будущем вылезет боком.
>>891626передача визуального объекта в класс, отвечающий за диагностику, - говнокод
>>891660Скажи как сделать лучше.
Теперь вы добавлены в Перекотер, так что вам нет нужды перекатывать треды вручную >>891794
>>891660Я насколько понял не говнокодом будет использование data binding. Но блин - в текущий момент для меня это слишком сложно, пытался не раз, но каждый раз после того как весь день читаю гугл и не напишу не одной строчки кода понимаю что мне просто рано еще, надо дальше дрочить теорию и писать хоть что-то как умею. Ибо просто дрочить теорию и вообще ничего не писать только потому что не в состоянии написать как надо - такое себе.
>>891661выделить у компонента интерфейс, добавляющий запись, и использовать этот тип в Log
>>891866Это бы ничего принципиально не изменило.
>>891866Алсо, это всегда легко сделать без изменения архитектуры.
Есть тут webapi дядьки? Просвятите меня как работать с калейдоскопом технологий и иструментов, что и как актуально в продакшене. А то я спал последние N лет. Интересуют Best Practices для bower/gulp/npm/owin/docker/angular/blablabla.В первую очередь блядь мне надо поставить менеджер пакетов npm, которому нужен nodejs, на котором я никогда не буду писать. Нахрена эта зависимость? Ну ладно. Ставим bower с помощью npm (Один менеджер пакетов другим менеджером пакетов). Далее используем gulp, чтобы вытащить все актуальные файлы из bower_components в заинджектить html файл. При этом main файлы некоторых нужно перегрузить в bower.config. Пиздец. Всё теперь общается через owen, mvc не нужен вообще, да и докер. Пиздец короче.Можете покидать ваши стеки/ворклоу с работы? Реально используете gulp&bower&npm? Для чего? А Докер? Как это всё работает с continuous integration?
>>891866А можно пример в виде кода о чем речь?
>>891866Алсо, на msdn вообще было написано что в wpf единственный комильфо вариант юзать data binding. Получение данных для интерфейса нужно сделать средствами xaml. Все остальное быдлокод если верить msdn.>If you are getting started with WPF, you might wonder whether it is easier to avoid learning data binding, and instead just write code to do most of the data manipulation in your projects. While this may be a valid way to do it, I would suspect that you will grow to use, and perhaps even love, XAML-based data binding.https://msdn.microsoft.com/en-us/library/aa480224.aspxНо я слишком туп, сколько не пробовал - либо не компилится, либо не работает.
>>891802Найс.
>>891938прям весь мир клином на WPF сошелся?в любом случае, если это будет биндинг, ты выделишь интерфейс не в Window, а ViewModel и будешь уже изменять её стейт
Всем привет!Прошу подсказать как решить проблему или найти обходное решение. Возможно ли приведение из шаблонного делегата в типизированный?Пример кода:delegate void DoSmth<T>(object sender, T value);class SmthClass<T> { DoSmth<T> doSmth = ...; void DO () { OtherClass.Process(ref doSmth); // ТУТ ОШИБКА }}static class OtherClass{ static void ProcessIntegerDelegate (ref DoSmth<int> doSmth) {...}}
Поправил пример:delegate void DoSmth<T>(object sender, T value);class SmthClass<T> {DoSmth<T> doSmth = ...;void DO () {var type = typeof(T);if (type == typeof(int)) OtherClass.ProcessIntegerDelegate(ref doSmth); // ошибка приведения из DoSmth<T> в DoSmth<int>}}static class OtherClass{static public void ProcessIntegerDelegate (ref DoSmth<int> doSmth) {...}}
>>892237var intDo = doSmth as DoSmth<int>
Народ, тоже вопрос про дженерики. Можно ли как-то считывает из строки значение в зависимости от типа?class GenericMatrix<Number> { Number[][] matrix; GenericMatrixNumber(int cols, int rows) { for (int i = 0; i < cols; i++) for (int j = 0; j < rows; j++) matrix[j] = СчетатьХуйню(); } }Естесно Comsole.ReadLine не подходит. А как тогда?
>>892714GenericMatrixNumberБез Number
>>892714Такой вариант подойдёт?https://dotnetfiddle.net/2oEHQs
>>892736Так и знал шо нада про делегаты сначала прочитать. Спасибо.
Сап шарпач.Как мне зашифровать информацию, с помощью пароля? То есть пользователь вводит любой пароль и он каким-то образом преобразовывается в ключ шифрования. Нагуглил PasswordDeriveBytes, но ему нужна соль и вектор инициализации, откуда мне их брать? Если рандомить, то в следующий раз пользователь не сможет расшифровать информацию этим же паролем. Как быть?
>>892865DPAPI, проще некуда.
Шарпач, подскажи бесплатный/дешевый хостинг для базы данных, желательно MSSQL, но мускул тоже подойдёт. Azure выглядит шибко дорогим.
>>8928651. переводишь строку с паролем в массив байт:var pbytes = Encoding.UTF8.GetBytes(password + "ОХУЕННАЯ_СОЛЬ");2. хешируешь этот массив байт, превращая его в ключ шифрования:var aesKey = SHA256Managed.Create().ComputeHash(pbytes);3. шифруешь AESом с размером ключа = длине хеша и нулевым вектором инициализации:var AES = new RijndaelManaged();AES.Mode = CipherMode.CBC;AES.KeySize = 256;AES.BlockSize = 128;AES.Padding = PaddingMode.PKCS7;using (ICryptoTransform encryptor = AES.CreateEncryptor(aesKey, new byte[16])){ return encryptor.TransformFinalBlock(data, 0, data.Length);}
>>892865хранить соль рядом с пользователем. после того, как юзерь что-то навводил сравнивать шифрованый пароль с результатом ПосчитатьХэш(инпуиЮзера, созраненныйСалт)
>>892884digital ocean или scaleway - берешь vps, поднимаешь в докере мускл
Господа, подскажите как лучше всего передать набор объектов, заранее неизвестных но чётко структурируемых в другое приложение по сети?Текущая мысль сформировалась, что подходит что-то типа JSON сервера, который отдает данные по запросу клиента. Есть ли решения лучше или это достаточно адекватно?
>>892951Сразу поправлюсь, планируемые клиенты (их возможно много) могут быть написаны на каком-угодно другом языке. Тут подумалось, а почему бы не отдавать XML?
>>892935> в докереИди нахуй со своими докерами>>892884Просто берешь самый дешевый дроплет на digitalocean, в один клик ставишь туда образ убунты для поднятия вебсервера. Всё это займет 2 минуты, и у тебя уже будет сразу готовый сервак со всеми нужными развернутыми сервисами, и выделенным IP. Дальше настраиваешь мускуль как тебе угодно и работаешь.
>>892955DO чот дораха, нашел у нас за 65р в месяц - выбор нищука.
>>892951>>892954Если для твоих данных не предполагается редактирование человеком, то нахуй все эти форматы. Отдавай напрямую бинарные данные и всё. Сделай микропротокол с одним байтом на команду и всё. С сокетами и массивами байт работать можно в любом языке.
>>892957Зависит от твоих требований к стабильности серверов. Юзаю DO с начала 2014 года, десяток дроплетов у меня там есть. Ни разу никакой внештатной ситуации не было. Аптайм одного из дроплетов 100% с февраля 2014 года (другие я просто сам по разным причинам перезагружал или временно отключал). Пять баксов в таком случае за самый дешёвый дроплет не жалко.
Посоны, есть ли нормальная тулза для рисования 3D моделей для XAML чтобы в WPF приложении использовать, я ебал вручную указывать точки, нормали и т.д. чтобы нарисовать что-то простое, требуется часа 2. Есть ли инструмент для создание 3Д моделей чтобы выдавал код в XAML?
Посоветуйте плз что почитать по потокам (и вообще системному программированию в с#) и вин формс.мсдн не осилил.
>>893006expression blend?>>893067старые статьи на rsdn по сему поводу взлетают, если для начала
>>893074Спасибо.
>>892951AvroProtobuf
>>891226бамп на бамп
Шарпач, ты-то мне и нужен. Как понять, что ты уже мидл? Если я могу написать дерево, сортировку, умею в синхронизацию потоков, веб-приложения, сериализацию - это уже мидл или нет?
>>893377>Если я могу написать дерево, сортировку, умею в синхронизацию потоков, веб-приложения, сериализацию - это уже мидл или нет?Это уже может быть стажер и ты можешь пытаться пройти собеседование на вакансию.
>>893377Сеньор минимум.
>>893404ты тролишь или серьезно. Что нужно знать чтобы повысили на мидла?
>>893470Ну мидл это самое противоречивое, не рыба ни мясо. В общем случае это опыт фултайма от двух лет, все разнится от вакансии к вакансии, но если ты на той же работе проработал джуном 2 года - просись на мидла точно.
>>893377Мне теперь интересно стало, что входит в знание сериализации?>веб-приложенияJavaScript much?
Посоны, как организовать обмен данными между приложениями в реальном времени на C#.Есть в общем такая ситуация. У меня есть приложение, которое коннектится с сервером, берет оттуда данные кладет это все в словарь(Dictonary) и обновляет значения в этом словаре каждые 200мс ну и соответственно активно использует этот словарь в работе. Возникла необходимость (у заказчика) сделать приблуды в 3Д красивые, быстро работающие, с возможностью покрутиться, "полетать". Решил для этих целей использовать Unity 3D, там тот же C#.Сначала думал там использовать ту же библиотеку что используется в основном проекте, прочитал как подключать dll к юнити, все подключатся все нормально, а вот именно Interop библиотека для работы с сервером очень старая и не для C# а в общем для .NET 1.0 и при подключении к Unity выдает Marshall ексепшены и т.д.В общем есть ли вариант в реальном времени получать этот словарь(Dictionary) из другого приложения(unity).Думал насчет обмена с помощью базы данных, но будет ли это в реальном времени? С другой стороны в первом приложении данные обновляются долго(200мс) должно все успеваться.
>>893377>написать деревоclass MyClass{List<MyClass> Childs;}>сортировкаmyArray.OrderBy(x => x.Name);>сериализацияJsonConvert.SerializeObject(myDto);Я принят?? Когда подавать документы?
>>893504Мы вам перезвоним!
>>893485SignalR
>>893485>В общем есть ли вариант в реальном времени получать этот словарь(Dictionary) из другого приложения(unity).Самый быстрый способ - MemoryMappedFile
>>893485а брокер сообщений как же?
Как лучше реализовывать (де)сериализатор своего формата данных (желательно в декларативном стиле, что бы нужные поля классов можно было помечть и т.п.)? Есть примеры?
>>893854Поля помечаются атрибутами. Для каждого поля и типа можно указать атрибут и прочитать его функцией MemberInfo.GetCustomAttributes.Берешь объект, читаешь его поля/свойства функцией MemberInfo[] members = type.GetMembers(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);где, type - тип объекта получаемый функцией GetType объекта. Параметры можно использовать другие.Дальше хуячишь всё это в кэш чтобы не читать многократно. Можешь не хуячить, тогда всё будет работать медленнее.Значения полей при сериализации читаешь функцией FieldInfo.GetValue или PropertyInfo.GetValue. Пишутся поля функцией SetValue.
>>893854Можешь исходники rest sharp глянуть на гитхабе, там есть минималистичный xml сериализатор десериализатор
>>893866Можно без рефлексии (какие нибудь деревья выражений или типа того) определить последовательность ссылок на свойства или поля?
>>894073Уточню почему так. Сам сериализуемый класс находится в другой сборке и недоступен для правок. Я хочу написать шаблон который на вход берет сериализуемый класс и добавляет определение порядака и состав сериализуемых членов. Хотелось бы сделать это делкаративно, но очевидно атрибуты тут не проканают.
Прога читает цсв и конвертирует значения в даблы. Я ему даю -12.0 на вход для конвертации, а оно пишет, что неверный формат. Что я делаю не так?
Суп антоны, подскажите с архитектурой приложения:имеется пул объектов(изменяемый) одного типа по которому нужно пройтись и обработать. Над всем этим прикручен гуи (тип я думаю пока не важен). Проблема в обработке что она может занять до 5 секунд.Первый вариант который пришёл в лоб - это обрабатывать объекты в другом потоке вызывая асинхронную обработку. Не сосну ли я в таком случае? Порекомендуйте материал по множественным колбэкам в одном потоке, мой рунглишь не позволяет корректно сформировать поисковый запрос.Накидал картинку для примерного понимания.
>>894132скорее всего для CurrentCulture разделителем дробной части является запятая>>894142я не понял, какие требования накладываются на этот пул? где ты там собрался соснуть и почему 5 секунд на обработку в твоем случае это много?множественные колбэки в одном потоке - это задачи с продолжениями (Tasks, Continuations)
При CRTP на C# какие операции применимы к аргументу генерика внутри генерика - только приведение this к нему?
>>894279все, которые позволяют констрейнты генерика. как и без рекурсивного шаблона
>>894281А, ну да.
>>894077Тогда хер его знает.
>>894281>>894281Зачем ты пиздишь? Это на крестах так, а на шарпе констрен внутри генерика практически пустой.
>>894357мая чет нипанимат где я напиздел
>>894362Если рассматривать констрейн изолированно, то он вообще ничего об аргументе генерика не предполагает. Так что твоя фраза что можно все что позволяет констрейнт вообще ни о чем (с тем же усехом можно сказать пустое множество это множество которое ничего не содержит). А вопрос был явно в связи этого генерика с производным классом его юзающим.
>>894132Используй CultureInvariant при парсинге.
>>894526Не хочу.
>>894566Тогда не используй (:
Есть поток, мне надо читать с него в разных местах, в произвольном порядке, при помощи разных BinaryReader'ов (например сначала 3 байта первым, потом 5 вторым, потом еще 10 байт первым, но что бы в главный поток уже стоял на курсоре 8 байт, и т.д.). Это будет работать или каждый ридер пашет по своему индексу независимо?
>>894575Это можно сделать, но не нужно. Зачем тебе куча разных ридеров? Какова твоя задача?
>>894596Да вся та же сериализация, это я писал выше. Хочу сериализовать внутри класса сримами, для рекурсивного вызова (если поле не простое а другой сериализуемый класс) нужно текущий стрим передать ему и что бы он с текущего места взял сколько ему надо, размазал по себе и вернул поток для дальнейшей сериализации.Что не так в таком подходе?
Есть кто из Москвы, работодатель нашел меня и предлагает 120k, писать десктоп на C#, Winforms, WPF. Это нормально для москвы или мало для NET - программиста? Сколько из этого за хату отдавать?
>>894612> 120k> C#> десктоп > Winforms> приглашают в ДС из пердейНу не ведись анон, такая жирная разводка, на самых лохов ориентирована.
>>894612Смотря где жить будешь. От 20к (это всё ебеня из которых добираться до Москвы 1.5-2 часа) до всей зарплаты соответственно. Все цифры и карта есть в интернете. По еде можно укладываться и в тыщу в месяц картофан + крупы, хотя таких целей у тебя вроде и нет.
>>894612мидл?
>>893599Подробнее
>>894601да, собственно говоря, все не такстоит начать с вопроса: зачем тебе множество потоков для разбора одного объекта? вопрос снимается, конечно, если у тебя исходных данных на гигабайт. если ты думаешь, что распараллеливать такую задачу это очень эффективно, то я тебе отвечу - не в твоем случае
>>894663Поток один, это адаптеров над этим потоком несколько. А несколько их из-за рекурсивности сериализации вложенных членов. Т.е. метод Serialize каждого класса заводит свой адаптер типа BinaryWriter из BCL и сериализует члены, когда натыкается на непростой член пытается сериализовать его, а ему в свою очередь тоже придется поднять такой же райтер над потоком который ему дадут. Я так и не понял что все не так? Если писать без потоков, то придётся ебаццо с индексами в массивах, что некрасиво.
>>894671ааа, блжад, потоки - это Stream, а не Threadя думаю, что индексами было бы проще и легче, учитывая, что тебе не придется в каждом разе прошагивать данные от начала до N. даже попросту сдвигая позицию ридера
>>894694У меня была идея-фикс реализовать вообще без индексов, что бы всё было только в терминах потоков и адаптеров.
>>894701ну довай, похвастаешься потом
>>894612Какой уровень? Сеньор - маловато. Для мидла охуенно.
>>894077Посмотри вот этот пример, должно подойтиhttp://joshclose.github.io/CsvHelper/#mapping
class ResearchTeamCollection<TKey>{public ResearchTeamCollection(){ }Dictionary<TKey, ResearchTeam> dictionary = new Dictionary<TKey, ResearchTeam>();public void dictionaryAdd(){dictionary.Add(TKey, new ResearchTeam()); // как мне тут сделать ключ словаря независимым от типа? }}Допустим, в другом классе я инициализирую так:ResearchTeamCollection<string> coll = new ResearchTeamCollection<string>();coll.dictionaryAdd();
>>895061>coll.dictionaryAdd(); И что должно добавляться в словарь в качестве ключа по-твоему?
>>895062Допустим, добавляю вот так:coll.dictionaryAdd("First", new ResearchTeam());Если бы был тип int, добавлял бы так:coll.dictionaryAdd(1, new ResearchTeam());Каким образом тогда мне записать функцию для всех типов?
>>895067И что, ты будешь решать что именно добавить для данного типа через switch?
>>895067Ладно уж, вот тебе решение.public void dictionaryAdd(TKey key)
>>895070>>895069Работает, спасибо.>>895069Не, просто нужно было объявить для всех, а инициализировать для string. Задание такое.
Так. Что я делаю не так? Что за метод, вычисляющий ключ для объекта? Или я должен написать его сам?
>>895104Отклеилось.
>>887274metanit.comНе благодари)
>>895104сам, что-то вроде хэш-функции. чтобы было так:Add(ResearchTeam rt){ dictionary.Add(KeyDelegate(rt), rt); }
Как из VS выложить существующий проект в репозиторий на github? Помоги, шарпач, я это в первый раз делаю и не понимаю, почему эта сука не работает. В VS подключился к своему аккаунту на гите, но не могу найти опцию захуярить в конкретный репозиторий весь проект. ЧЯДНТ?Я понял, как создавать репозиторий из VS, как в него коммитить и запихивать изменения, но в упор не вижу функции залить уже существующий проект без изменений на github.
>>895280ты из Team Explorer делаешь? там есть Sync, огромная кнопень
>>895280А это, блядь, что такое?
>>895283>>895285Да всё уже, можно сказать разобрался.Просто мне нужно несколько проектов закинуть на гит, получилось закинуть 2 из N, а с 1 я где то накосячил, и проебал кнопку паблиш, теперь хуй знает где её найти. Как отвязать проект от репозитория или как закинуть на новый?
>>895286Мда, я первый проект захуярил в visual studio team services вместо git, и теперь ору на гитхаб "ЧО ТЫ СУКА МОЙ ПРОЕКТ НЕ ПОКАЗЫВАЕШ?!".Как сменить VSTS на github в team explorer'е?
>>895288Самый простой способ - удалить скрытую физическую папку репозитория в корне проекта. Ну или разобраться с окном Team Explorer. Или как нормальный программист, поставить TortoiseGit.
>>895290> нормальный программист> TortoiseGit
>>895291Предлагаешь мне с терминалом гита ебаться? У меня память не резиновая еще и матюки гита запоминать.
>>895294Терминал гита хотя бы глючит не так часто, как тулзы для работы с гитом в vs. Когда работал с гитом через tfs, то частенько ошибки выскакивали, когда запушить невозможно или запулить какого-то хуя, когда в терминале все ок работало. Короче рекомендую перекатываться на командную строку - сначала плюешься, а потом охуеваешь как раньше без этого жил.мимо-проходил
>тулзы для работы с гитом в vsTortoiseGit не работает с VS, или я чего-то не знаю.>рекомендую перекатываться на командную строкуЯ и так некоторые извращенные команды выполняю через командную строку, потому что только через нее это можно сделать. Но для обычного сценария, например просмотр графа веток, с головой хватает TortoiseGit.
>>887100 (OP)уже давно хочу вкатиться в .NET на апворк, парни, подскажите, это реально вообще? Если да, то что посоветуете, как начать?
>>895334случайная сажа
>>895294> матюки гита запоминатьgit pullgit commitgit pushебать тут много> память не резиноваяну, во-первых существует блокнот. и я ничего плохого не вижу записать что-то вроде <сохранить изменения git commit -m "comment message">во-вторых, как же ты кодэ свой пишешь, если еще несколько литералов запомнить - это тяжкий труд? если у тебя сплошной if/else, мой вопрос снимается
>>895375>ебать тут многоЯ часто еще переключаюсь между ветками, соединяю коммиты, откатываюсь до определенной версии, создаю и удаляю ветки, смотрю историю изменений определенного автора...>существует блокнотЕсть у меня блокнот, там несколько МБ текста "важной" информации, которую надо не забыть, приблизительно в таком же формате.>у тебя сплошной if/elseУгадал, пикрелейтед недавнего кода. Хотя я хорошо помню листинги нескольких программ на 1-3 миллиона строк кода.
>>895392Это же F# на пике?В чем разница между типами Statement и Block? Они же оба алгеброические типы?мимо не шарю в фшарп
>>895411>Это же F# на пике?Да.>В чем разница между типами Statement и Block?Block содержит список Statement.>Они же оба алгеброические типы?Да.
>>895415Хотя, если говорить более правильно, то:Block - это record.Statement - это discriminated union.
>>895416>Block - это record.>Statement - это discriminated union.Что-то понятнее не стало, надо идти учить F#.Вообще C# заебал своей топорностью, хочется укатиться на более гибкий-современный язык,но блин как подумаю что все придется переписывать с функциональной парадигме - то сразу перехочиваетсяю
>>895422что не так с гибкостью сишарпа, например?
>>895422>Что-то понятнее не сталоhttps://fsharpforfunandprofit.com/posts/records/https://fsharpforfunandprofit.com/posts/discriminated-unions/>укатиться на более гибкий-современный языкТак C# и есть гибкий и современный язык. F# его скорее дополняет, чем заменяет.
>>895423>что не так с гибкостью сишарпа, например?Это то что сходу вспомнил:- Отсутвие type inference для полей и свойтв (private Diction<string, string> _field = new Dictionary<string, string>())- Отсутсвие primary contructor. В каждом классе приходится писать пик1- if/else switch try/cache (тут не уверен) - не выражения и не возвращают результат- нет нормальных (не Func<>) функциональных типов и функций на топ-левеле (язык вроде бы мультипарадигменный, но для любителей функциональшины у нас static methods)- Notification проперти из MVVM (без кодогенеровов типа Fody) это ебучие портянки кода, которые средствами языка нельзя абстрагировать- Нельзя делать свои DSL средствами языки. Я бы давно отказался от Xaml и писал все в коде, но это получается слишком избыточно.- Отсутвие защиты он Null ссылок- Отсутствие оператор let/val (это как var, только нельзя изменять)>>895425>Так C# и есть гибкий и современный язык. F# его скорее дополняет, чем заменяет.Надо признать что C# за 15 лет уже накопил свое легаси и для .NET он тоже что и Java для JVM (конечно C# уделывает Java) - рабочая лошадка для энтерпрайза .Только в JVM я могу свалить на какую-нибудь Scala/Kotlin/Groovy и там будет большое комьюнити, а в .NET из популярных альтернатив это VB лучше убейте и F#
>>895440> Отсутвие type inference для полей и свойтввот тут мне тяжело представить преимущества этого вот, за исключением того, что "мне впадлу писать длинный тип". ибо в качестве свойств, по большому счету, используются интерфейсы/абстрактные типы. к тому же для библиотек, используемых в других солюшнах, при условии наличия публичного сеттера, это все покажется странным. может быть я что-то не видел в своей жизни.> primary contructorэту штуку обещают уже второй релиз. чтож, очередной сахар> if/else switch try/cacheхех, для if-else есть тернарный оператор. как можно использовать switch в руби мне, например, тоже понравилось. но вот что из кетч ты хочешь получить? или ты имеешь ввиду что-то вроде return { try this.Calcuate(); } catch { null; }?> нет нормальных (не Func<>) функциональных типов и функций на топ-левелея полный ноль в ФП, что это все значит?> защиты он Null ссылокчтобы не вылезал NRE? и где тут плюс?> оператор let/valну тут не знаю, сомнительно. есть readonly, с другой стороны почему бы и нет. но тоже обходился без подобного и это не мешало мне
>>895450>я полный ноль в ФП, что это все значит?Если сильно упрощенно, есть что-то типа наследования из ООП, только в функциональном стиле. Когда можно переиспользовать ранее написанный код. Одна из таких особенностей называется каррирование:Func<int, Func<int, int>> sum = x => y => x + y;Переиспользовать можно например так:Func<int, int> add1 = sum(1);Вот только на C# это очень криво выглядит, а некоторые вещи и вовсе нельзя делать.>чтобы не вылезал NRE? и где тут плюс?В ООП NRE падает в рантайме, в функциональщине - во время компиляции. Нулевая вероятность попасть NRE на лив.
>>895452> в функциональщине - во время компиляциивангую потому, что понятия NULL в ФП отсутствует в принципе?
>>895453> вангую потому, что понятия NULL в ФП отсутствует в принципе?Те же яйца, только в профиль. По умолчанию все типы не могут принимать null, надо явно говорить что вот этот тип может быть null. А везде, где надо достать значение такой переменной, надо писать if, который должен обязательно покрывать все ветления, иначе ошибка компиляции. Такой тип называется чуть иначе, но суть та же. Но и никто не запрещает использовать null в том же F#.
>>895334ну ребята
>>895460изи гайд1 выучить язык2 выучить фреймворки3 найти работу
>>895460https://youtu.be/Z-tLCQ2fW7IДлительность всего 6 минут.
Гуру впф и дата контекста, поможите понять.У меня есть класс Log. Я в классе MainWindow пилю поле Log log = new Log.После чего пилю в коде this.DataContext = log;И могу использовать в xaml binding для получения полей из объекта log. Text="{Binding Data, Mode=OneWay}"Вопрос - как использовать data binding из нескольких обеъктов. У меня например есть 2 текстбокса. Одному надо брать данные из объекта log, второй из объекта fonts.В гугле везде примеры с использованием одного объекта, а как быть если тебе надо из нескольких в wpf отображать данные - вообще хз.Я тут выше спрашивал совета по поводу написания класса Log, как мне порекомендовали смог сделать >>891410, но теперь пытаюсь сделать все более грамотно
Зачем сраный visual studio ставит 32 вонючих пакета, 30 из которых я при установке запретил ставить? При этом этого оказалось мало, пришлось еще и докачивать.Это абсолютно идиотский подход к поддержке продукта.
>>895452по поводу каррирования еще, есть же продолжения у задач. конечно, поднимать стейт-машины задля достижения такого стиля - тупость, но хоть так лол
>>895481привязать логкомпонкнт к свойству пью модели, которое, в свою очередь, использовать в двух разных классахили использовать конвертеры при биндинге
>>895490Если не затруднит, покажи что ты иммешь ввиду на простейших примерах в коде. На словах вообще не понял.
>>895482>Зачем сраный visual studio ставит 32 вонючих пакетаА нафиг тебе VS, попробуй VS Code.Для лаб или новых проектов на CoreCLR хватает.
>>895495показать что из двух вариантов?с телефона, быстро не жди
>>895481Пилишь вьюмодел. Делаешь два проперти для двух объектов.
>>895498Оба было бы интересно посмотреть :3
>>895500Вьюмодель это промежуточный класс, в котором будут все необходимые мне классы. Этот промежуточный класс я задаю в this.DataContext, после чего смогу через точку обращаться к классам, внутри класса из xaml?
>>895500Можно еще у Window.cs создать два публичных свойства VM1 и VM2, а в XAML нужным элементам установить нужный VM.
>>895502Как-то так пишу на коленкеpublic class ViewModel{ Log log = new Log(); Font font = new Font(); public Log Log { get { return log} set { log = value;} } public Font Font { get { return font} set { font = value;} }}в Window.csthis.DataContext = new ViewModel()в XAMLText="{Binding Log.Data, Mode=OneWay}"Text="{Binding Font.Data, Mode=OneWay}"
>>895510Все, понял. Спасибо. У меня так часто бывает - когда читаю рекомендации где мне словами отвечают - вообще не вдупляю чего от меня хотят, но на код глянешь и с первого раза понимаешь все.Еще раз спасибо, я с этими биндингами не один день пердолился пытаясь понять как их использовать и по тиху мозайка начинает складываться.
>>895510Алсо. Если мне потребуется mode=TwoWay, делать все так же, или есть свои нюансы?
>>895524Твои классы(те же Log и Font, например) придется переделать вот так: хотя я вообще макака, может есть и другой адекватный способhttp://metanit.com/sharp/wpf/11.2.php
>>895532Хотя можно реализовать INotifyPropertyChanged только во ViewModel и писать проперти для данных объекта.public string Data{get { return log.Data}set { log.Data = value; OnPropertyChanged("Data"); } }
>>895510Вообще когда начал пробовать сам еще 1 вопрос возник.Раньше я создавал объект класса лога, делал this.DataContext = log, а дальше спокойно проделывалыв манипуляции с объектом. Например вызывал log.Write(string) который делал log.Data += string + "\n", после чего все это дело попадало в textBox_log.Сделал я класс ViewModel. Сделал я this.DataContext = new ViewModel(), и обнаружил что не знаю как мне вызвать метод Write() объекта log, для того что бы поместить мне в лог нужную инфую.Можно конечно сделать ViewModel viewModel = new ViewModel();this.DataContext = viewModel;После чего делать такviewModel.Log.Write("some text"); Но выглядит как то не очень(хотя я вообще хз, может это и норма, я вообще ньюфаня в ооп и в жизни не писал ничего сложнее скриптов для автоматизации небольших задач с пк).Как правильно и граммотно поступать то?
>>895534За ссылку спасибо. Сам учусь по этому сайту, очень доступно и просто объясняет, но своими бы силами очень долго искал ответ. Это то мне как раз и нужно. Я делаю программу, в процессе работы которой в лог выводится результат работы. Юзер выбрал опции, кликнул кнопку, выполнился код и в логе отобразилась информация о проделаном и результатах. Тут то мне INotifyPropertyChanged и понадобится.Но для начала пытаюсь научится статичный текст выводить вот, от простого к сложному.
>>895586Почитай про MVVM-паттерн, WPF заточен под него. Я так понял ты вызываешь метод из Window.cs(code-behind). Логику нужно выносить оттуда (Честно, я сам пока не до конца понимаю MVVM, все операции с данными и прочим я засовываю во тоже ViewModel).
>>895600Благодарю, на том же метаните нашел годный материал по mvvm. Таки да, вся куча логики было в MainWindow.xaml.cs. Буду это все дело выносить оттуда.
>>895600viewmodel не должна содержать логики
>>895636Ты путаешь c MVC, в которой ViewModel называют plain-data объект для UI. Другое значение - роль в MVVM паттерне, и там код вполне себе будет, но не бизнес-логика, это да. ViewModel должен по идее следить за изменениями в модели и преобразовывать их во вью, а так же за пользовательским вводом(изменениями view) и форвардить их в Model. 2-way binding.мимодил
>>895680Интересно, а генерация FullName из FirstName и LastName - это бизнес-логика, но что она забыла в ViewModel?мимоиздеваюсь
>>895724да у тебя и Console.Write это бизнес-логика
>>895724Ну я например понимаю что то что я пилю, можно сделать без применения всей этой еболы mvvm, wpf и т.д.Можно было и на winform запилить спокойно и не ебать себе мозги, но у меня то целью являются не написание программы, а обучение. Программа как средство для изучения.
То есть модель может содержать не только данные, но и функции?
>>895812Даже в мвс модель может содержать функции
Как в студии сделать автоморматирование кода? Ну что бы нажал кнопку и все красиво стало.
>>895863ctrl+k dиctrl+k fдля всего документа и выделенного участка соответственно
Народ кто может дать ссылочки на статьи/книги как правильно строить базы данных (MS SQL) для ASP.NET.Интересует архитектура.И еще такое:У нас есть инет магаз "ВасяПупкин".Зачем нам отделать в отдельный проект взаимодействие с БДПример:ВасяПупкин.Domain -> собственно само взаимодействие с БДВасяПупкин.UI -> ASP.MVC проект.Если можно все сделать в одном проекте ASP.MVC, а связь с бд организовать в Models
>>895942как строить базы данных для все вряд ли отличается от того, как проектировать таковую для руби или еще какого говнаты можешь вообще делать все в одном проекте или одном методе. цель - изолировать юайные штуки от логики, логику - от бд
А здесь есть люди которые шарят в ASP.NET MVC или изучают его, можно было бы вместе поизучать его, если кому-то интересно)
>>895963А ты няшный?
>>895966Вот это сложный вопрос.Я просто охуенен(нет)
Как сгенерировать рандомное число типа double из промежутка [m; n], чтобы n было ВКЛЮЧИТЕЛЬНО?
>>895995new Random().Next(0, 1) == 1 ? n : (double)new Random().Next(m, n)
>>896004ohmygoooood
>>896035Какие проблемы? Работает? Работает.
>>896039Разве Random().Next когда-нибудь достигнет единицы?
>>896070Тогда Next(0, 2)
Анон, выручай. Нужно запилить 2d игру с физикой в Windows Forms. Суть такова: есть машина, которая едет по поверхности(кривой) и может балансировать вперёд/назад. Что-то сродни gravity defied, но поверхность не ломаная линия. С чего начать и что курить? Буду рад любому совету.
>>896082car game 2d sources download
Шарпач, поясни, как переносить проекты с .dll библиотеками на другие ПК, чтобы не? Недавно столкнулся с проблемой, что когда я запустил солюшн на другом кудахтере, у меня отпали кхуям все референсы, они, видите ли, абсолютную адресацию имеют, несмотря на то, что при добавлении .dll копируются в папку с .exe
>>896132блят, чтобы не добавлять референсы повторно*
>>896132Попробуй посмотреть здесьhttp://metanit.com/sharp/tutorial/10.1.phpЕще у книжечках почитай на тему сборок, у Троелсена вроде неплохо написано.
Анончик, помоги дауну освоить автомаппер. Не могу понять, почему этот код не хочет работать:https://gist.github.com/anonymous/cdd24c2db8d2d10058f853e409238987?ts=4Хочу при переходе Entity<->DTO перегонять int[] в строку вида "2,3,4,5" и обратно. Но маппинг работает только в одну сторону.Я понимаю, что можно дёргать конструктор напрямую, вместо ForMember, но я хочу использовать это в другом проекте, там в конструкторе примерно миллиард аргументов и только один из них нужно по хитрому конвертировать.
>>896004Проблема в том, что это плохой рандом, ведь n будет в 50%
>>896082>Windows FormsЗачем тебе Windows Forms?
>>895963Тоже есть желание поизучать ASP.NET. Не против изучать сообща.
Посоветуйте по рефлексии.Сделал простой атрибут.Запилил класс с несколькими атрибутированными переменными. Потом функцию, которая берёт всё поля и их атрибуты и отправляет в конструктор другого класса.WTF?!?!?!??!??!!!!!11Вместо функций подставлял стринги и оно их отправляло.Что пошло не так?
>>896501Надо сразу фулстак изучать. Я вот курсы на плюралсайте смотрю и мне норм. Вот здесь можно бесплатную подписку на 3 месяца получить:https://www.reddit.com/r/dotnet/comments/54i6to/good_aspnet_core_and_angular_2_tutorial/d82nbxc/>>891871-кун
>>896420А в чём ещё? Изначально надо было в консоли делать.
>>896531бросай все это дело, не твое это. ты ж даже вопрос понятно сформулировать не в состоянии
>>896610>Не понял@повыёбываюсь
>>896610Вместо траллинга мог бы пояснить по скрину.
>>896531>Field_d>DefAttr>DefAttr.Kпо твоему, мы тут экстрасенсы?
>>896626Спасибо за отклик, тики отловил NULL и вроде работает. Такой момент, возможно ли имея имя поля в строке присвоить в экземпляр какое-либо значение?
>>896637да, через рефлексию вообще все нах можно. вот только как делать я, естественно не помню. но помню, что все методы из .Reflection носят говорящие названия. ищи методы типа SetField() или SetValue()
Привет двач, возникла проблема с Visual Studion, а в частности с консолью NuGet. При запуске консоли выскакивает данное сообщение: An error occurred while creating the pipeline.Гуглил - ничего.Возможно ты анон сможешь помочь мне
Ананасы, кто-нибудь на фрилансе бабки зарабатывает шарпом? Единственное направление, где это возможно это asp.net, но полистав всякие апворки пришел к выыводу, что это не самая популярная тема. На asp.net фрилансом вообще норм можно зарабатывать нормально?
>>896792Если ты листал апворк, то видел достаточно индусов, которые вполне нормально гребут на asp.net. Он так то нужен как правило какому-нибудь энтерпрайзу, это же как джава, в идеале это не самый удачный стэк, но если ты его знаешь - то без работы офк не останешься.мимо диванный, который внаглую перешёл на удалёнку вместо офиса
>>896547>курсы на плюралсайтеКакой конкретно курс?
>>897073начни с любого
>>897073А там проще "путями" сразу учитьhttps://app.pluralsight.com/paths/skill/mvc5https://app.pluralsight.com/paths/skill/javascript
А есть какая-то конфа или чатик анонов по C#?
Двощ, выручай! Пытаюсь подключиться к БД в MS SQL через System.Data.SqlClient.SqlConnection используя User ID и password. Вот только я нихуя не въебал, User ID - это логин для входа в MS SQL сервер? Если да, то как мне сделать так, чтобы задачи из под этого соединения выполнялись пользователем, созданным от этого логина? Просто пользователь состоит обладает определенными ролями, которые мне нужны, и вот чё то я не догоняю, как работать из C# в MSSQL именно от имени определенного пользователя, а не логина.
>>897438Есть унылый телеграма чат, где общаются 8 человек из 100 присутствующих.
>>8979021. На сервере создаешь логин с нужным именем и паролем.2. Даешь нужные права на нужную базу.3. На сервере разрешаешь логин через маздай аутентификацию И sql аутентификацию.4. В коннекшен стринге прописываешь путь к серверу, имя бд и креденшиалы созданного пользователя.5. ???6. Идешь нахуй
>>897950>System.Data.SqlClient.SqlConnectionИ там похуй на чем ты подключение делаешь, хоть на камне высекаешь.
>>897950А разве можно дать какие-либо права на действия внутри БД логину? Я думал их можно дать только пользователям и ролям я совсем недавно в SQL
Суп шарпаны,хочу плотно заняться десктопными приложениями на WPF, стоит ли мне изначально возиться с прямой реализацией патерная MVVM или лучше накатить тулкит и изучать через него?
>>897994Лучше вообще не лезь в WPF и его десктоп, а изучай что нибудь более современное. Ну или если очень хочется в десктоп - c++ Qt
>>897995Кт СЛОЖНА, а C# уже как никак использую но в консольном виде. Интересна только Win платформа, поэтому WPF тут логичен и очевиден.
>>897996Ну тогда готовься к подводным камням при расширении базовых контролов, через хуй пойми что работающим ресурсам и прочим весёлостям WPF, который не поддерживается официальными разработчиками с 2012.Не знаю, о каком именно тулките ты говоришь, и чем он тебе поможет в реализации MVVM, но я бы советовал ещё на берегу вкурить, что предполагает под собой следование принципам MVVM, и как он реализуется в WPF.
>>897903А там именно дотнетчики сидят, или вообще все?
>>897998Ты судишь по своему опыту или начитался статеек в этих ваших интернетах? Изучаю C# не так много времени и давно приглядывался к C++, но он жутко неудобен в том, что сделать в нём что-то неправильно как нехуй петь, а я не профессиональный программист и пишу в основном для своих нужд. Строгая типизация и управляемая память для меня значительное преимущество от которого не хочется отказываться.
>>898000Из статеек вычитал только то, что WPF чуваки из microsoft не поддерживают с 2012.По своему опыту высказал остальное. Из того, что больше всего рвало пердак, вспоминаются проблемы с комбинированием словарей ресурсов и стилей одновременно в одном контейнере ресурсов, черезжопное подключение обработчиков событий в словарях ресурсов к контролам внутри стилей, двойное срабатывание события DateChanged на DateControl'е или какой там стандартный, не помню уже при смене даты DatePicker, и одинарном при смене даты через текстовое поле на том же контроле из-за роутинга событий, кажется. исправляется костыльно, ну и прочие мелкие недоумения при использовании XAML'а, которые заключались в том, когда ты восклицаешь "да схуяли нельзя?!" там, где, казалось бы, всё должно работать. И то, что разочаровало меня более всего, в моей 600к мухосрани нет ни одной вакансии, ориентированной на WPF, да и вообще, как мне кажется, из за тенденции перехода на тонкие клиенты и мобильные приложения, десктоп умирает.
>разочаровало меня более всего>нет ни одной вакансииМне не актуально, значит впринципе можно заморочиться.
>>897996Мда. Сравнил хуй с пальцем. Васяноподелие qt на котором весь софт выглядит - привет 2000, либо wpf на котором запилена студия и офис. Я конечно не хочу принижать заслуги qt в прошлом, но в данный момент это удел пердоликов. Прогрессивные люди выбирают c#.
>>898052Последний Qt 5.6 очень даже няшный, но это не отменяет того факта что придётся учить целый новый язык.
>>897994Чо т я погуглил и люди действительно юзают WPF. Я думал, что майкрософт выкатят какую-то йобу вместе с .net core, но ничего не нашёл. UWP тоже не особо взлетел.http://www.telerik.com/blogs/survey-report-the-dotnet-developer-of-2016Если видишь вакансии - так то можно и изучить, но это всё такое.
>>898052Привет из будущего
>>898517>Черно-белые логотипы, цветов еще не изобрели>Даже не черные - бледно-серые, краска в дефиците>будущееНа хуй такое будущее
>>898517>ABB>QTИспользую WPF.Мимо ABB-кун
>>898531так ты даун, это стили такие применены - когда наводишь на лого картинка приобретает оригинальные цвета. короче яебу дивелапер
>>898641Ну вот я навел на лого и нихуя ничего не приобрело, ты пиздабол и даун.
>>898644Бля курсор не отображается на принт скрине.
>>898644ну подумаешь подобосрался чутка, чо ты ругаешься, макакен
Как правильно диспозить классы которые асинхронно захватывают ресурсы?
>>898852в коллбэке эсинхронной операции?
>>898853А в самом Dispose() чего делать, ждать пока завершиться или послать запрос отмены и идти дальше?
>>898854ну так ты не вызывай диспоуз пока не завершится асихнронная операция
>>898855В штатном выполении я и не собираюсь, но если юзер переходит на другю страницу например, тут так просто не отделаешься.
>>898857попроси не переходить
Двач, PAMAGI. У меня проблемы с взаимодействием MSSQL и C#. В коде C# вызываю хранимую процедуру, которая выполняет select'ы. Результаты работы хранимой процедуры записываю в DataSet из ADO.NET через SqlDataAdapter. НО! Если у пользователя, чьи данные указаны в строке подключения, не хватает прав, то не генерируется никаких исключений. Следовательно, если у пользователя нет прав на выполнение процедуры, я даже никак ему об этом сообщить не могу, томушо исключение из MSSQL не подхватывается ни дата адаптером, ни SqlConnection'ом.Как быть? Мб есть альтернативы DataAdapter'у?
>>899038А всё, отбой. У SqlConnection есть события, которые мне подходят.
>>899038>DataSet из ADO.NET через SqlDataAdapterУ тебя древнее говно к жопе прилипло! В ADO.NET нет DataSet, который из .NET Framework 2. Чего ж ты на первой версии не пишешь, некрофил?
>>899064Тише, тише. Я мимостудент, и нам не рассказывали про EF, а мне слишком впадлу им заниматься для моих нужд. И я думал, что DataSet он родом из ADO.NET а может и нет, я хуй его знает. Беру его из using System.Data. Это разве не ADO.net?
>>899073Если переводить на русский термины, есть "подключенные" и "отключенные" классы. Первые работают с базой данных, вторые работают не с базой данных и нахуй не нужны.Так вот: первые - Connection, Command, DataReader, DataAdapter;Тогда как вторые DataSet, DataTable, DataRow, DataColumn. Это пиздец какие ебанутые классы. Часть простых вещей без костылей не сделать.Первые классы даже сейчас используются, например где важна скорость.Вторым - есть много замен, или они вообще не применимы к задаче.
Как работает добавление кастомных структур в генерик List<>, они все будут как массив в стеке или в куче, а лист будет хранить только ссылки?
>>899541List<T> будет вместе со всем прочим хранить ссылку на T[], который, в свою очередь, будет представлять собой сплошной ряд объектов в куче (это исключая случай, когда массив будет достаточно велик дабы попасть в LOH. в таком разе ряд будет не очень сплошным, но это уже совсем другая история)
>>899567Физически list как массив в памяти представлен?Все данные находятся последовательно, а при добавлении остальное сдвигается?
Есть желающие подработать? Заранее прошу особо говном не закидывать, знакомый который сам обычно всем с курсачами помогал слег в больницу и попросил найти в интернетах кого нибудь что бы курсач запилить, довольно простенький на asp.net. Черканите на мыло temp600600@mail.ru если кого заинтересует с предложениями по цене.https://docs.google.com/document/d/1APjX_IMyCsODb2JFJFAype-8dj4xusR5hug0iG-A9Jo/edit?usp=sharingЕще раз извините за оффтоп и не кидайтесь говном.
>>899675тебе говорят, что List сам по себе не содержит объектов коллекций, но ты за свое блять
>>899692Я не он, и у меня вопрос как физически представлен в памяти лист. Это же не линкедлист в котором каждый элемент хранит ссылку на предыдущий и следующий. Как он хранится в памяти?
>>898000>Строгая типизацияC++ примерно так же строго типизирован как и шарпик. Гц удобная штука, да.
>>897995Qt ещё жив?
>>899821Например, steam.
>>899823Лол и battle.net десктоп-прожка.
>>899803как и любой другой ссылочный тип - имея под боком все значимые типы и интовые ссылки на ссылочные типы в куче в границах, обозначенных размером типа
>>899844Тут нашел http://stackoverflow.com/questions/29898518/is-a-generic-list-stored-contiguously-in-memoryЧто list содержит массив типа TА при добавленииIf Count already equals Capacity, the capacity of the List<T> is increased by automatically reallocating the internal array, and the existing elements are copied to the new array before the new element is added.If Count is less than Capacity, this method is an O(1) operation. If the capacity needs to be increased to accommodate the new element, this method becomes an O(n) operation, where n is Count.Не совсем понятно что именно значит reallocating the internal array Это выделение памяти под новый массив и копирование туда данных с новым добавленным элементом?Тогда может для некоторых List заранее Capacity задвать если знаешь что List будет расти чтобы избежать лишних выделений памяти?
>>899887Именно, задавая capacity избавляешься от ненужных реаллокаций
>>899887>Что list содержит массив типа Tсоу слоу, я это написал первым ответом, но зачем читать слова с первого раза
Ананасы, кто нибудь работал с PostgreSQL из под c#? Какой API/Framework посоветуете для вызова процедур в БД на PostgreSQL?
>>900059EF?
>>900188ef в целом так себе варианттем более для вызова фактически raw sql можно придумать и ченьть получше
>>900188>>900211Наткнулся на Npgsql.EntityFrameworkКто нибудь имел опыт работы с ним?
>>900217Никто с ним не работал, потому что он не для людей. Если у тебя хранимки в БД - просто пиши sql запросики
>>900059Можешь попробовать linq2db - в отличии от EF не такой тяжелый. Сам процедурки не вызывал, но поддержка всего этого есть.
Что делать с сучарой с пикрелейтед? Чо он так много жрет?
>>900059dapper
Что скажете про М.Фленов-"Библия С#"?Начало можно дрожать, конечно-оно совсем ньюфажное.
>>900470ты ж сам все сказал, че спрашивать-то?
>>900470Если не можешь/не хочешь читать книги на английском - тебе в профессии делать нечего.
>>900507Элитка, не рвись. Начинать можно и родного языка, рунглишь нужен для того, чтобы быть на острие технологий.
>>900510Ух ты, самоподдув в 2016-то году.
>>887100 (OP)>.NET THREAD #5 (C#/F#/VB)>В шапке ни одного ресурса по F#Шо за хуйня?Дайте годных книг/ресурсов (кроме fsharpforfunandprofit.com)
>>900518Его сейчас вообще кто-то использует? Вакансий по-моему особо нету нихуя вот и не нужен.
>>900544много вакансий C#/F# девелоперов, шо ты рассказываешь тут
Как быстрее заполнить список структур: создавать через new прямо в аргументе или за пределами цикла создать локальную переменную-буфер, заполнять ее поля и уже ее передавать в Add?
>>900615в коде:1)var l = new List<Struct>();var s = new Struct();for(int i =0; i < 1000; i++){ s.a = 3; s.b = 1; l.Add(s);}или 2)var l = new List<Struct>();for(int i =0; i < 1000; i++){ l.Add(new Struct() { a = 3, b = i});}
Шарпаны, а где почитать про управление памятью в управшляемой кучи.Те есть класс, в котором тоже ссылочные типы. Как их лучше всего создавать или нет никакой разницы? Созданные в методах ссылочные типы будут сохранять свою жизнеспособность на всем протяжении сохранения ссылки?
>>900544>Его сейчас вообще кто-то использует? Вакансий по-моему особо нету нихуя вот и не нужен.> 2016> учить язык только по востребованности на рынкеЧувак ты не шаришь.Его надо выучить хотя бы что бы расширить свое сознание разных подходов проектирования.После него даже твой C# код станет лучше и чище.Да и вообще, ты что безработный школьник или не в состояние два язык запомнить?
>>900507Петуха забыли спросить.Спокойно читаю документацию на иглише, вся системы и весь софт на инглише. Но при этом - если есть вменяемая ру альтернатива документации или книги буду читать на русском. Ибо мозг раз в 10 меньше будет уставать. Для того что бы изучать английский, есть курсы, спец книги и спец сайты, документацию я читаю совсем для другого, и на русском языке я куда быстрее и куда больше смогу усвоить.
>>900632>После негоТебя перестанут брать на работу.
>>900632Я в первую очередь учу язык из соображения его востребованности. Для меня это всего лишь способ заработка. Оставь свои мантры для красноглазиков.
>>900636С работой как раз все ОК. Пишу тырпрайз на c#, для себя учу f#.Ты только глянь как охуенно выглядит "качалка webm и картинок с двачей" язык учу пару дней
>>900638>Для меня это всего лишь способ заработкаВся суть codemonkey.
>>900643Как-будто что-то плохое.
>>900623быстрее инициализировать список можно только указав Capacity в конструкторе. то, шо ты привел тут будет однозначно одинаково по скорости ибо для Add() значение структуры будет копироваться>>900631> гдетроелсен, рихтер, msdn> Как их лучше всего создавать или нет никакой разницычто значит как? или кого "их"?> Созданные в методах ссылочные типы будут сохранять свою жизнеспособность на всем протяжении сохранения ссылки?в случае, если это локальная переменная онли и никуда не пойдет дальше, до первого сбора мусора. в противном случае это зависит от времени жизни объекта, в котором он используется, и его поведения>>900642это решарпер подсвечивает typename1 -> typename2? или 2015 студия?
>>900675А разве не будет так, что в первом случае он один раз выделит перменную в стеке, из которых на каждом Add будет копировать значение, во втором случае на каждом Add сначала будет создан временный объект (в стеке?) и уже из него производиться копирование?
>>900675>это решарпер подсвечивает typename1 -> typename2? или 2015 студия?Это Visual Studio Code с установленным расширением для F# (и кстати core clr приложение)2015 студия вроде этого делать пока не умеет, а решарпер вроде и не собирается F# поддерживать.
>Стек на основе односвязного списка. Операции протолкнуть и вытолкнуть.Подскажите, куда хоть капать-то? Лаба немного на волоске уже, а это совсем никак не могу понятьосвоить.
>>900684не, ну так-то будет, но это не сказать шобэ оптимизация, даже микроhttp://pastebin.com/MdTbgJWYначало тела цикла во втором случае - это IL_0013. конечно пришлось добавить еще пару строк, где происходит первая инициализация Struct. не то, чтобы я сильно знал MSIL, но очевидно, что фактическая разница - в двух инструкциях. учитывая то, что выделение памяти это просто наращивание указателя, выигрыша ты тут не получишь.>>900727> протолкнутькопать в структуры данных, а именно - в стек и в связный список. еси знаешь шо это такое и зачем нужно, то проблем не должно бытьа если нет, то полистай Essential Algorythms
>>900741Придётся осиливать и заниматься быстрым самообучением, эх. Спасибо!
>>900727push() - сохраняет элемент в начале спискаpop() - возвращает значение из первого элемента списка и удаляет его
>>900743в той книге на псевдомове программирования разобран пример построения стека на основе связного списка. не думаю, что ты сильно туп дабы не осилить это со второго раза. а если да, то ничем тебе не могу помочь
Как в вижуал студио включить отображение адреса переменной?
>>900752а так можно?
Шалом сишарперыЗавтра нужно сдавать курсач и гуглится моя проблема как-то не таксуть в чем, есть пикчебоксpictureBox6.Image = Image.FromFile(@"C:\Users\User\Desktop\History Test\History Test\History Test\bin\Debug\test\vopr\vopr" + numq + ".jpg");как можно переделать путь к, чтобы он был относительно папки с самой программой? без вот этих дисков, юзеров и.т.да то прога не то что с флешки, с другого пользователя на пеке не запускается))))))
>>900818"папканейм/файлнейм"будет гуглить файл относительно директории запуска приложения. в твоем случае это с:/всяхуйня/бин/дебаг
>>900825Он прям сам загуглит? КлассЩа попробую, спасибо
>>900741wow, ты ради меня декомпиляцию проводил.
>>900741>>900744>2 омежки помогают быдлуХорошие мальчики, послушные. Сейчас будете между пальцев ног лизать.
>>900910Как что-то плохое :3
>>900908та мне чот самому интересно стало, будет ли разница>>900910ебанат штоле?
Шарпаны, что после The C# Player's Guide, чтобы в веб вкатиться читать?
>>900741Это дебажная сборка? Может оптимизатор вообще без временного объекта обойдётся?
>>901116да, дебаг. я хотел еще с optimze скомпилить, но суть-то была в поиске разницы
>>900912Ебанат здесь ты и безграмотная моча-пидорок, которая посты трет. Конечно, неприятно ощущать себя безграмотным дебилом, надо пост потереть. (Автор этого поста был забанен. Помянем.)
Сишарперы.Нужно копировать файлы определенных расширений из одной папки в другую (7 разных типов файлов).GetFiles() принимает только одну маску.Как лучше получить сразу все типы файлов?http://pastebin.com/wR6u9vN5
>>901407Написать функцию, принимающую массив масок? И вызывавать GetFiles для каждой?
>>901407> GetFiles() принимает только одну маскуразве?по-моему, у них делимитер - это символ |
>>901416таки нет, не для этого случаяинтернеты говорят по-разному - от конкатенации результатов до фильтрации всех файлов в директории
>>901417Таки что лучше использовать? Файлов очень много. Что будет менее затратно?http://pastebin.com/ZmvV5v3p
>>901446а v2 и v3 чем-то отличаются лол?еси ты явно указываешь IEnumerable<FI>, как в версии2, то лучше использовать метод EnumerateFiles. вообще, смотря> Файлов очень многочто ты подразумеваешь. если файлов много, а под один фильтр попадет, в лучшем случае 5-10%, то лучше вариант номер раз. если же бОльшая часть общего контента окажется в результирующей выборке, то тащи из DirectoryInfo все. универсального рецепта нет в этом случае
>>901446Лучше вместо GetFiles() использовать EnumerateFiles() + Where().
>>901525и вместо string[] HashSet<string>, хотя если всего 2 расширения, не знаю даст ли это хоть сколько заметный прирост.
>>890447Слушай Лысого сука и будешь С# богом.
>>890993Почему бы и нет?
>>894612Копейки.
Компадрес, никто не сталкивался недавно с проблемой с NuGet в VS2015? У меня вот пикрелейтед уже весь день выскакивает.На данный момент пробовал:1. в настройках фаервола создал правило для devenv.exe на все входящие/исходящие подключения2. удалил/устанавливал повторно NuGet3. Пробовал использовать адрес NuGet'овского CDN для VS2013ничего не помогает. Гугол тоже молчит. Раньше NuGet работал (не помню, когда в последний раз использовал, но я помню, что работал).
>>901644пикрелейтед проебал
>>901019Bump
Насколько сложно забацать в WinForms контрол по типу пикрелейтед? По сути это помесь TreeView и CheckedlistBox, за исключением того, что детки разворачиваются не полностью на весь тривью, а в листбоксе. Ну и мне достаточно одного уровня вложенности.
>>901664
>>898644Господа, поясните за локатор в MVVM Light, как его использовать и зачем? не могу найти руководство для совсем дибилов а описания для понимания не хватает.
Вопросы по оптимизации.Знаю что система автоматически выносит объявление переменной за цикл. Такой вопрос, если у меня есть в цикле вызов метода, будет ли она также выносить объявления конст/обычных переменных за рамки данного цикла, или нет?транслируй в MSIL и смотри сам
>>901937> выносит объявление переменной за циклты про i в цикле (for var i = 0...)?> если у меня есть в цикле вызов метода, будет ли она также выносить объявленияпричем тут метод? я четота не догнал?> выносить объявления констконстанты находятся в метаданных, вангую, что такая же ситуация характерна и для методов (но не уверен)> обычных переменных за рамки данного циклачуть выше я ildasm-ом для другой ситуации приводил листинг. так там никакого выноса переменной, что создавалась внутри цикла, не было
>>902072Сейчас разверну что я имел ввиду.Есть такой например код цикла:for(...) { var variable = 333; ...}После трансляции, он будет таким(по смыслу):var variable = 333;for(...) { ...}Не то, чтобы переменная variable поменяет свою область видимости, а в плане что инициализация будет происходить единоразово.А затупил я над следующей ситуацией:for(...) { someMethod(); ...}... someMethod(){ var variable = 333; ...}Дак вот какого будет поведения переменной variable, вынесется ли её инициализация до цикла или нет.
>>902091> вот какогокакое*Будь это плюсы, я бы переопределил оператор присвоения и посмотрел как оно работает. Но в шарпике нельзя трогать данные операторы. Точно знаю что даже старые компиляторы плюсов, оптимизируют первую ситуацию, для системных типов. На счет второй уже не помню.
>>902103Сук, не дописал.Я вообще не бум бум за дотнетовский байткод, чтобы в нем посмотреть результат трансляции простого примера, думал может знает кто. Если нет, то к выходным может сам осилю. Прочекать поведение для базовых системных типов и пользовательских соответственно.
>>901644>>901645Б А М П А М П
>>902110Я сейчас конечно адово шуткану, но попробуй запустить студию из под администратора.Мимо SharpDevelop-холоп с вопросами трансляции.
>>901644>>901645 М П А Б ПБ Б А М П Б АА М А М М П Б А М П ПБ Б П
>>902114Запускал. Nyet, всё то же самое.
>>902109первая ситуация - это не более чем оптимизация статического конпелятора.нащщот второй от ситуации и того, как метод будет использоваться и какова будет статистика метода/цикла - может включиться встраивание метола, может повторное использование кадра стека, может еще чота. я однозначного ответа на это не могу дать, но можно попробовать поэкспериментировать
>>902116Идея нумер два. Вместо https вкорячь http. Основы гугл-Fu https://github.com/NuGet/Home/issues/2880>>902118Принято. Я реанимирую свои познания по программированию, и вот при работе со строками задумался над оптимальными реализациями своих методов. Будет ли он строки выносить, или нет. Ведь строки это не совсем простой тип. Опять таки все строки в шарпике это константы же, для констант свое поведения прописано. Короче, не понятно мне. К выходным может проверю какие оптимизации происходят при компиляции
>>902124Nyet. Та же самая ошибка, только порт указан 80 вместо 443
>>901484Общее количество файлов 11566. В выборку попадает 7014. Получается в моём случае лучше использовать версию 2, так как в выборку попадет более 60%?>>901484>>901525>явно указываешь IEnumerable<FI>, то лучше использовать метод EnumerateFiles>Лучше вместо GetFiles() использовать EnumerateFiles() + Where().Я как понял, EnumerateFiles() это lazy-вариант GetFiles().Есть ли разница, с чем использовать EnumerateFiles() с FileInfo[] или IEnumerable<FileInfo>?Какие подводные камни, если использовать EnumerateFiles() с FileInfo[]?>>901531>хотя если всего 2 расширенияНе 2. 7 различных типов файлов.
Есть семейство наследников генерика: public class G<T> where T:Base{ public T Prop {get;set}}Как правильно работать с разными классами этого семейства (т.е. T принимает разные значения) в обобщенном стиле? Я ввёл интерфейс c cвойством базового типа:public interface IGBase{ Base PropBase {get;set}}и добавил реализацию свойства в исходный генерик:public base PropBase { get { return Prop; } set { Prop = (T)value; }}Всё правильно сделал? Оно работает, но есть ощущение говнокода и нарушения высших принципов проектирования.
Вечер в хату. Понимаю что есть раздел GD. Но стало интересно есть тут unity-шарписты? Которые пояснят примерно на пальцах, в чем именно заключается программач играча в юнити? Что именно используется из языка? Как разделяется клиент-сервер? Сам я яву ковыряю про структуры данных. Интересен минимум знаний нужный чтобы запилить с готовым набором моделей, анимации и прочего. 2д вид сверху мультиплеерный шутер =)
>>902134> файлов 11566> в выборку попадет более 60%не то шобы чуть более, чем половина - это какой-то вменяемый критерий. наоборот, середина - самая жидкая граница, ни туда ни сюда> EnumerateFiles() это lazy-вариант GetFiles()ох, если быEnumerateFiles() - это:return FileSystemEnumerableFactory.CreateFileInfoIterator(FullPath, OriginalPath, searchPattern, searchOption);GetFiles() - это:IEnumerable<FileInfo> enble = FileSystemEnumerableFactory.CreateFileInfoIterator(FullPath, OriginalPath, searchPattern, searchOption);List<FileInfo> fileList = new List<FileInfo>(enble); return fileList.ToArray();субъективно мое мнение - для 12к файлов использовать несколько EnumerateFiles() с последующей конкатенацией. если расширений будет добавляться, тогда пичаль, надо будет сравнивать бенчмарки>>902124> Будет ли он строки выносить, или нетну все зависит от использования этих строк. не value/reference type влияет на такие вещи> Ведь строки это не совсем простой тип. Опять таки все строки в шарпике это константы жекак-то сильно по-школьному. строки - это массив чаров, правильнее говоря - char*. вроде бы как через unsafe они вполне себе изменяемы. дело в том, что нет безопасных прямых средств для работы со строкой как с изменяемым объектом. следовательно,> для констант свое поведения прописанотут не канает>>902140есть интерфейс, работающий изначально с Base. есть дженерик-класс, работающий от конкретной реализации Base в отдельно взятой ситуации. т.е. если:public class Impl : Base {}и ты используешь оба варианта:((IGBase) someobj).PropBase = new Impl()иnew G<Impl>().Prop = new Impl(),то в первом случае потребитель интерфейса нихуя не шарит в том, Impl это либо другая реализация, в то время, как G<> четко знает, что работа производится с нужной реализацией. соответственно, тебе в первом случае нужно будет явно кастить и потенциально обсираться с InvalidCastException.но в чем вопрос, я не понял. и нахуя делать отдельно интерфейс и абстракцию, причем по-разному
>>902163не дописалCreateFileInfoIterator делает соме маджик. на косой взгял на реализацию, там нечто вроде state-machine как для yield блоков. если это действительно так, я бы советовал по возможности юзать этот вариант. а если нет и при первом обращении итератора формируется конечная коллекция, то хуй знает
>>901683Это я знаю, что можно тривью с чекбоксами сделать. Я не хочу что бы ветка тривью раскрывалась в километровую простыню, так как сабайтомов может быть более 1000. А так бы я отображал в листбоксе, присобачил бы туда виртуализацию и все было бы чики бамбони Пока сделал открытие сабайтемов в отдельном окне с чекедлиствью.
>>902163То что я назвал Base это иерархия классов модели, там лежат данных и я эти классы не контролирую, не могу ничего поменять. Мне надо к каждому такому классу прикрутить сериализацию, что бы потом гонять их по разным каналам. Идея была в том, что бы создать базовый генерик с параметром класса наследника Base, там будет общая инфраструктура, каждй наследник генерика будет имплементировать сериализацию. Было все хорошо, сами генерики выглядят красиво, но понадобились функции работы с наборами разных наследников этого генерика, так что пришлось выделять интерфейс. Например требуется записать список наследников Base, я по ним получаю из фабрики набор соответсвующих генериков-обёрток приведенных к интерфейсу, но их свой свойство Prop только что из фабрики ещё чистое, его нужно заполнить исходным Base переданным клиентом. Вот тут и возникает необходимость апкаста. Я так понял это неустранимо, в моем решении нравится что апкаст только один и изолирован в одном местею. Но в целом всё кажется каким-то кривым.
>>902381Сам напиши, это просто.
Шарпаны, не прикручивается датаконтекст, что может быть неправильно?
>>902398Если ты хочешь DataContext в XAML'е заводить, то нужно в ресурсах не раньше grid'а объявить объект твоего VM с ключом, и потом самому гриду DataContext присваивать через ...DataContext="{StaticResource myVM}" />А так он у тебя нихуя не увидит, ты ведь даже не объект какой то привязываешь, а просто название класса.
>>902407Сук, так вот почему у меня конструктор VM не вызывался. А как правильнее всего сделать?
>>902392и все-таки https://msdn.microsoft.com/en-us/library/ms230818.aspx эти колбэки использовать?других стандартных средств профилирования Core я вообще не видел
Так, нашел два рабочих варианта. Может кто пояснить за каждый из них? Второй выглядит намного проще и логичнее.
>>902408Ну, формально, в WPF предполагается как можно больше кода, связанного с View и ViewModel оставлять в XAML'е. Однако, довольно проблематично объявлять VM в кзамле, если у тебя конструктор с параметрами. я вот ващпе не парюсь и в c# коде объявляю. одна строчка роли особой не играет.
Поясните за разницу между объектом и инстансом. Смотрел в одном видосике, что для шарпа объект это статические мемберы в хипе, он появляется при создании первого инстанса класса и остается один(а инстансов может быть много). Но посоны из падика пояснили, что объект это всегда и везде инстанс класса. Кому верить, видосику или посонам? На мсдн очень расплывчато написано, на стаковерфлоу есть темы про разницу, но там представлены обе точки зрения. Видосик 1:02:17 https://www.youtube.com/watch?v=x0udrpe_gZEЗапрос в гугл What is the difference between objects and classes in C#?
>>902489>between objects and instance
>>902489как правило, если ты говоришь instance, ты подразумеваешь, что это некий член некого конкретного типа, имеющий место в адресном пространстве (куча/стек/регистры/etc), если ты говоришь object, то это: a) инстанс System.Object, б) некая абстрактная нёх, назначение которой зависит от контекста> для шарпа объект это статические мемберы в хипе, он появляется при создании первого инстанса класса и остается один(а инстансов может быть много)судя по всему, описывается тип, а это> появляется при создании первого инстанса классавообще безграмотная хуйня какая-топри первом обращении к типу вызывается статический конструктор онли, но он не порождает объект и не создает нихуя физическогорантайм узнает о типе после инициализации (компиляции) его JIT-компилятором, но эта компиляция происходит не совсем в "момент первого обращения" или "первого создания"
>>902493Короче, видос хуйня? Или ты не смотрел, просто написал? Мне бы пруф из какого-то источника именно про С#, если есть.
>>902495clr via c#
>>902495я прокомментировал твою цитату, естессно, я не смотрел и ничего по поводу видео не написал и не буду это вот час смотреть ради рецензии> Мне бы пруф из какого-то источника именно про С#, если естьэто исключительно вопрос внутреннего понимания собеседников"документация" https://msdn.microsoft.com/en-us/library/ms173110.aspx говорит:> An object is basically a block of memory that has been allocated and configured according to the blueprint. A program may create many objects of the same class. Objects are also called instances, and they can be stored in either a named variable or in an array or collection.
ПЕРЕКОТ в тред >>902499 (OP)
>>902381Тут варианты проскакивали http://razbor-poletov.com/2016/11/episode-121.htmlЕсли ты такой отбитый, можешь прослушать 2 часа.
>>887274ЛОЛ ты угораешь? То что он рассказывает обязан каждый школьник знать не то что программист. Если ты не осилил что в 1 байте 8 бит то о чем вообще говорить, Лысый как раз хороший вариант если ты тупой, но хотите вкатиться