М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 17 декабря 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

31 Кб, 317x372

.NET THREAD #4 (C#[s]/F#/VB[/s]) 03 Ноя, 15:47 #869105 В конец треда | Веб

Тред единственной элитной платформы в мире программирования.

Шапка: https://github.com/CSharpShapka/SharpHat/wiki

(пока просто перенесена шапка из ОП-поста, в ближайшее время приведу к более-менее адекватному виду, не стесняйтесь слать свои пулл-реквесты)

Прошлый тред тонет здесь: https://2ch.hk/pr/res/856099.html (М)

Ответы>>871893>>874963>>879555>>882324>>887039

3704 Кб, 444x250

03 Ноя, 15:49 #2 #869107

ну шоб не утонул.

03 Ноя, 15:50 #3 #869110

Есть кто на ф# пробовал писать? Как этот огрызок окамла по ощущениям? Чо по перформансу? инб4: как напишешь

Ответы>>869437>>870184>>871986

03 Ноя, 15:52 #4 #869112

не успел спросить, уже перекатили

как нормально регистрировать зависимости абстракций и реализаций в нормальных приложениях?
если, допустим, есть:
ClientApp
_BllCoreLib
_BllImplLib
__DalCoreLib
__EfDalImplLib
__RedisDalImplLib
где, соответственно, Client не знает о Impl-ах, а работает только с интерфейсами Core-ов?

на моей памяти либо юзали XML-конфигурации, либо всю регистрацию впихивали в Shared-проект, откеда доступ был всему от всего. но нормальные ж люди как-то делают адекватно все это?

Ответы>>869245

03 Ноя, 20:03 #5 #869245

>>869112
тебе di нужен или што?

Ответы>>869264

03 Ноя, 20:27 #6 #869264

>>869245
мне нужен подход, по которому я, не нарушая целостность и изолированность слоев в n-tier приложении мог бы использовать это самое di/ioc

Ответы>>869574

04 Ноя, 00:06 #7 #869437

>>869110
Очень сомневаюсь, что тут есть хоть кто-то, пишущий не на С#
да и нахуя этот ф-шарп нужен?

04 Ноя, 10:14 #8 #869574

>>869264
возможно я что-то не понимаю, но например в одном проекте ты пишешь что-то типа

container.RegisterGeneric(typeof(BaseRepository<>))
.As(typeof(IRepository<>))
.InstancePerDependency();

а в проекте уровнем выше резолвишь эту поеботу.

container.Resolve<IRepository<Foo>>();

Ответы>>869581>>881254

04 Ноя, 10:33 #9 #869581

>>869574
возьмем самый простой пример: вебапп->проект бизнес-логики->проект доступа к бд. в каждом из них есть свои публичные интерфейсы, от которых зависит проект цепочкой выше, и конкретные реализации, которые зависят от 3-пати либ
мне, для того, чтобы зарегистрировать irepository as myrepository надо: либо протянуть от вебапп к dal метод, который бы проводил регистрацию (что, по меньшей мере, чревато наличием в вебапп зависимостей от библиотек, которые использует ДАЛ, ну и доступ к интерфейсам этого проекта в придачу; либо вынести всереализации в четвертый шаред-проект и с помощью билд-ивэнтов или еще какого-нибудь шаманства, скопировать библиотеки в ин веб приложения (подход так се, не взирая ни на что). более адекватным решением я видел использование возможностей xml-регистрации зависимостей. но тут приходится зависеть от строковых значений, левых файлов и, вообще, не всякий инжектор так умеет.

самое нормальное решение, что я попробовал найти, это использование mef для поиска компонентов, осуществляющих регистрацию зависимостей. все-равно придется прибегать к шаред-проекту и устанавливать в нем зависимость от di-библиотеки. но хоть так

буду за компуктером, поделюсь ссылкой

Ответы>>869590>>870173>>874408>>881138

04 Ноя, 11:19 #10 #869590

>>869581
http://www.developer.com/net/dependency-injection-best-practices-in-an-n-tier-modular-application.html

05 Ноя, 10:40 #11 #870117

Какие есть курсы по C# по типу https://ru.hexlet.io? С проверкой домашнего задания и ревью кода?

Ответы>>872268

05 Ноя, 12:00 #12 #870173

>>869581
Dependency Injection in .NET охуенная книга на эту тему. Автор там как раз примеры дает того, как использовать это все в разных приложениях.

Ответы>>870360>>878038

05 Ноя, 12:31 #13 #870184

>>869110
По ощущениям это даже не огрызок окамла — это С# с лицом ML. Как фп язык это самый кривой огрызок потому что в первую очередь это ООП язык, вся инфа гуглится да и сам понять должен если работал раньше хоть раз с тем же окамлом. собственно цена за возможность полного интеропа с шарпом и остальным дотнетом, который в той же скале по обратным причинам очень кривой

Если же тебе нужен сшарп с почти полноценным выводом типов, паттернматчингом и кастрированным адт и возможностью писать дсл прям "на лету" как в скале — в целом неплохо. То же самое и по перформансу — именно код в функциональном стиле дотнет оптимизирует очень слабенько.

05 Ноя, 17:56 #14 #870360

>>870173
>Dependency Injection
По этому целую книгу написали? Пиздец, нахуй.

Ответы>>872528

05 Ноя, 21:31 #15 #870529

Шарпач, подскажи, есть ли достойная замена решарперу работающая в отдельном потоке? А то на моем некроноуте VS с решарпером постоянно подвисает и тормозит, чего без решарпера не происходит. Отказаться от его советов пока не могу, пишу нашарпах всего 3й месяц

Ответы>>870572

05 Ноя, 22:54 #16 #870562

аноны, какая есть объемная литература по коллекциям?

Ответы>>870572>>876892

05 Ноя, 23:12 #17 #870572

>>870562
описанного у рихтера тебе недостаточно? может ты что-то конкретное хочешь узнать?

>>870529
что такого тебе постоянно подсказывает тебе решарпер, что ты не можешь отказаться от него? подобное говно приводит к привыканию, потом еще надо постараться написать полтора класса без указок
использую решарпер, в основном, как навигатор + быстрый добавлятор usingов

Ответы>>870602

05 Ноя, 23:56 #18 #870602

>>870572
Юзинги, циклы в методы расширения, ну и мелочи всякие типо лишних скобок в условиях

07 Ноя, 20:42 #19 #871728

{}

07 Ноя, 21:02 #20 #871743

https://habrahabr.ru/company/jugru/blog/314524/

– Вы планировали выпустить релиз (Rider) осенью. Получится?

– Увы. Пока планируем релиз на начало следующего года. Продукт будет платный, и нам не хочется стыдиться того, за что берем денежку.

Пиздос. Ещё месяца три релиза ждать.

Ответы>>871878>>874409

07 Ноя, 23:08 #21 #871878

>>871743
> Rider
> платный
ох яебу

07 Ноя, 23:20 #22 #871893

>>869105 (OP)
как выгрузить файл на гугл диск иди другое хранилище? Пробовал использовать WebClient.UploadFile(ссылка, которая успешно работала при загрузке файла с диска,путь к файлу); но нифига не вышло

Ответы>>871930

07 Ноя, 23:47 #23 #871930

>>871893
использовать либы, желательно от производителя

08 Ноя, 01:57 #24 #871986

>>869110
В треде об ФЯП писал, тут повторюсь.

На работе пишу на нем скрипты в linqpad, вместе с type providers ваще огонь для всяких одноразовых интеграционных задач.
Сборка мелких проектов на FAKE - там относительно удобный dsl и много чего из коробки.
Пет-проекты на нем пилю, оче нравится.

В нем есть все, что есть в c#, кроме unsafe, так что проблем особых не вызывает.

Что за монадки и как ими пользоваться я понял после чтения статей на fsharpforfunandprofit до этого прочтя кучу статей про монады в хаскеле и ничего не поняв, Скотт отлично объясняет. Появилась зависимость.

Выведение типов делает меня плакать при возврате к написанию кода на c#, композиция функций делает код компактнее, АДТ позволяют лучше моделировать предметку, паттерн-матчингом красиво пишутся сложные для if-else и switch-case условия.

Там же в треде про ФЯП мне пояснили, что F# говно по сравнению с другими языками ml-семейства, но я на них не писал, по-этому не страдаю особо.

На hh изредка появляются вакансии, где он желателен была вакуха в касперском, сейчас мдмбанк, но чистых фшарпистов последние 2 года точно не искали.

Аноним 08 Ноя, 16:57 #25 #872268

>>870117
https://itvdn.com/ru/video/csharp-starter

08 Ноя, 20:45 #26 #872443

Как использовать Selenium WebDriver со своим основным Firefox профилем?

Пробовал:
FirefoxProfileManager myProfile = new FirefoxProfileManager();
var profile = myProfile.GetProfile("C:\\Users\\anon\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\anon.default");
var driver = new FirefoxDriver(profile);

Запускается все равно на новом чистом профиле.

Ответы>>872455

08 Ноя, 21:11 #27 #872455

>>872443
может быть надо имя профайла указывать
FirefoxProfileManager myProfile = new FirefoxProfileManager();
var profile = myProfile.GetProfile("anon");

а не путь до него

Ответы>>872871

08 Ноя, 22:40 #28 #872528

>>870360
Что не так?
Несмотря на всю простоту концепта, очень многи умудряются проебаться и нахуярить сервис локаторов, которые конфигурируются через xml.

Ответы>>872594

09 Ноя, 00:16 #29 #872594

>>872528
все эти концепты, шаблоны, подходы имеют красивое и лаконичное до нельзя назначение, но как реализуешь все в проекте, начинается блять

09 Ноя, 04:06 #30 #872629

Объясните одну вещь.
Вот на подходе .net core - он будет давать делать только webapi/mvc проекты? А если, например, хочу что то для линя написать на шарпе то это ксамарин/моно? Ещё видел презентацию, где шарп компилили в нативный исполняемый файл в убунте. Я запутался что и для чего нужно. Объясните.

Ответы>>872670>>874416

09 Ноя, 09:13 #31 #872670

>>872629
.net дает тебе возможность писать только asp.net проекты?

09 Ноя, 13:13 #32 #872755

Мне нужно сравнить 2 слова. Например, первое TeamA, а второе может быть teama, Team A, T.e.a.m.A., Team-A и так далее, в таком случае вывести положительный результат, а если там будет например Team B, то уже отрицательный. Чето с регулярными не смог допереть, как это сделать. Подскажите плз, C#

Ответы>>872769

09 Ноя, 13:36 #33 #872769

>>872755
Что-то вроде этого? Подставь просто в замену нормальный символы какие тебе нужно, а не строки как у меня и норм по-идее.
https://dotnetfiddle.net/lZXRAr

Ответы>>872772

09 Ноя, 13:43 #34 #872772

>>872769
Да, спасибо, кажется это должно работать. Пиздец я тупой и не додумался до этого сейчас, хотя совсем недавно именно это и делал.

09 Ноя, 16:16 #35 #872871

>>872455
Пробовал, все равно не взлетает

10 Ноя, 21:39 #36 #873654

Кто-нибудь может объяснить принцип работы async/await РУССКИМ языком (понятным, для даунов, дебилов)? Из всего, что я прочитал, понял только, что это будто какое-то маняврирование, чтобы избежать потоков, которое в итоге все равно создает отдельный поток (task). Нахуя это нужно, чем лучше обычных потоков? Если кто-то пояснит с примером, буду очень благодарен.

Ответы>>873666

10 Ноя, 21:45 #37 #873657

Почоны, дайте тестов по шарпу уровня среднего или высокого. Я нашел квизфул, но там анальная регистрация и деньги деньги эйчар собеседование.

Ответы>>874354

10 Ноя, 22:04 #38 #873666

>>873654
http://blog.stephencleary.com/2012/02/async-and-await.html - вполне себе годное объяснение.

tl;dr

Если ты вызываешь асинхронный метод через await, то выполнение данного метода приостанавливается до тех пор, пока асинхронный метод не вернет какой-то результат. В это время - пока мы еще ожидаем выполнение этого метода - управление передается вызывающему контексту(благодаря этому ты можешь нажимать на кнопочки на форме / веб-интерфейсе, пока на сервере еще выполняется выполнение асинхронного метода). Как только асинхронный метод завершает свою работу, то метод, который ожидал завершения его выполнения просто продолжает свою работу. А нахуй это нужно - для удобства разработчика, т.к. создавать потоки и самому всей этой хуйней управлять не очень удобно, асинки - напротив, просты в освоении и предоставляют уницифированный интерфейс для работы.

Ответы>>873676

10 Ноя, 22:16 #39 #873676

>>873666
>управление передается вызывающему контексту(благодаря этому ты можешь нажимать на кнопочки на форме / веб-интерфейсе, пока на сервере еще выполняется выполнение асинхронного метода)
Да это я понял, а в то время когда вызывающий контекст возвращается к работе, и если там не просто какие-то кнопочки тыкать, а сложные длительные вычисления происходят, в это время тот код который начал работу в асинхронном методе не выполняется, а ждет пока эти вычисления закончатся?

Ответы>>873679

10 Ноя, 22:17 #40 #873677

Кто-нибудь сможет пояснить за memory mapped file?
Допустим, я сортирую внешней сортировкой 1ГБ файл.
Зачем тут использовать mmf? Когда можно просто построчно читать файл, скидывать в новый файл, сортировать внутри, потом сливать все файлы.

Ответы>>873866>>874123

10 Ноя, 22:19 #41 #873679

>>873676
Да, если ты вызываешь этот метод через await, то код в этом методе ждет завершения асинхронного метода.

Ответы>>873684

10 Ноя, 22:25 #42 #873684

>>873679
Кажется, ты не про то ответил, я хуево написал. Код, который вызвал метод, в котором есть await, продолжает выполнятся сразу после вызова метода через await, а метод, вызванный через await, ждет завершения этого кода? Они же не могут параллельно выполняться, так как находятся в одном потоке.

Ответы>>873688>>873693

10 Ноя, 22:33 #43 #873688

>>873684
Нет, он будет ждать завершения работы метода в котором await есть. А вообще чтобы вызвать этот метод, в котром есть await, ты должен будешь его вызывать либо через await (т.к он помечен как async), либо завернуть это дело в Task.

Ответы>>873697

10 Ноя, 22:45 #44 #873693

>>873684
Хотя я может быть напиздел по поводу того, что он ждать будет. Сейчас нету возможности проверить, так что либо у себя попробуй хули ты сразу не проверил? это ж 5 минут , либо жди пока кто-то поумнее появится.

91 Кб, 1500x825

10 Ноя, 22:52 #45 #873697

>>873688
Вот супер схему запилил. На первой M1 и m3 же не могут одновременно работать, так как у нас нет нескольких потоков (или есть (???)).
На второй m3 ждет, когда M1 выполнится. Вторая верна или нет?

Ответы>>873707>>873711>>873723

10 Ноя, 23:01 #46 #873707

>>873697
Не, параллельно они не будут выполняться. Во втором случае m3 будет ждать, когда m1 выполнится.

Вот кстати наглядный пример с объяснением даже - http://ru.stackoverflow.com/questions/316990/Как-работают-await-async

Ответы>>873716

10 Ноя, 23:02 #47 #873711

>>873697
мимо третий
какую-то ты еболу намалевал на своей картинке, сам запутался и у других ответа не получишь
https://m.youtube.com/watch?v=lh8cT6qI-nA
здесь все должно быть яснее
насчет супирпупир длительных операций: если это IO операция, она практически гарантированно уйдет в другой поток. если нет, CLR может вполне легально принять решение о переводе операции во многопоточность, если оно затягивает выполнение

Ответы>>873765

24 Кб, 671x415

10 Ноя, 23:12 #48 #873716

>>873707
>Во втором случае m3 будет ждать, когда m1 выполнится.
Ну так и нарисовано. В таком случае это просто последовательный код, в чем тогда суть?
По ссылке я читал уже, нихуя не понял.

Вот с той же ссылки пример, его запустил, он почему-то выполняется параллельно.

Ответы>>873718

10 Ноя, 23:17 #49 #873718

>>873716
Так логично, что параллельно - у тебя метод My вызывает без await'a, а для этого тебе нужно возвращать Task или Task<T> из метода My.

Ответы>>873723

10 Ноя, 23:22 #50 #873723

>>873718
Но я же тут >>873697 нарисовал, и вы сказали, что параллельно он не будет выполняться?

Ответы>>873751

10 Ноя, 23:39 #51 #873751

>>873723
http://ideone.com/B6XHPG

Ответы>>873765

17 Кб, 320x310

10 Ноя, 23:59 #52 #873765

>>873751
Спасибо! Тут вообще какая-то неразбериха с потоками, почему-то только кек уходит во второй поток, а все остальное в одном делается. Ладно, мне не дано понять, посмотрю лысого дядю >>873711 и пойду баеньки. Бобра вам.

Ответы>>873795

11 Ноя, 01:18 #53 #873795

>>873765
ну таск.ран работает в принципе чуть по-другому. я еще проебался, надо было бы вызвать Result у асинхронного метода, там тоже CLR может принять решение о выполнении задачи в потоке

Ответы>>873874

11 Ноя, 08:50 #54 #873866

>>873677
Алло ;(

11 Ноя, 09:23 #55 #873874

>>873795
>CLR может принять решение о выполнении задачи в потоке
>CLR может
Что-то у меня бомбит от этого.
Ты так говоришь, будто при разработке не знаешь как будут выполняться таски.

Ответы>>873882

11 Ноя, 10:04 #56 #873882

>>873874
ну как и execution plan субд - насчитает одно, но есть вероятность, что выполнится другое

11 Ноя, 13:29 #57 #873943

Ньюфаг репортинг - решил сделать для начала прогу, сохраняющую все картинки с треда. Беда только в том, что не знаю с чего начать. В какую сторону копать?

Ответы>>873951>>873978>>873990

11 Ноя, 13:51 #58 #873951

>>873943
Самый простой вариант: Пилишь простое windows service приложение, которое будет брать ссылки на треды из какого-нибудь файла и будет парсить треды вытягивая оттуда картинки (пожалуй с парсинга и вытягивания начни), а потом просто сохраняешь себе на диск. Ну и работать сервис через таймер будет какой-нибудь, который автоматически ьудет перезапускаться.

Ну или еще проще: пилишь веб-приложение с одним инпутом, куда забиваешь ссылку на тред ну и дальше все точно так же (парсинг, еботня и все это), но эта хрень сама естественно не будет сама перезапускаться и ручками придется.

Ответы>>874009>>874264

56 Кб, 652x373

11 Ноя, 15:03 #59 #873978

>>873943
>прогу, сохраняющую все картинки с треда
>В какую сторону копать?
Главное - прикрути функциональное программирование задача позволяет.

Ответы>>874014

44 Кб, 745x569

11 Ноя, 15:23 #60 #873990

>>873943
Можно запрашивать с двача данные в формате JSON. Благодаря этому, ты сможешь избежать жопной боли при парсинге данных.

Вот как запросить данные:
https://2ch.hk/pr/res/869105.json (М)

Нихуя не понятно? Зато всю эту поеботу можно легко ковертировать к нормальному формату.

Итак. Получаешь эти данные ручками, потом пиздуешь на http://json2csharp.com/ и вставляешь JSON, который ты получил.

На выходе получишь систему классов, которая получается при конвертировании этого JSON к формату шарпа. Видишь класс RootObject? Это и есть корневой элемент, который вернёт тебе двач.

Затем тебе нужен пакет Newtonsoft.Json. Эта либа, которая позволит тебе конвертировать твою JSON-строку к полученному формату. Поставь её через Nuget, командой Install-Package Newtonsoft.Json в консоли студии.

Как с этой поеботой работать:
var huiPizda = JsonConvert.DeserializeObject<RootObject>(response);

Что может быть проще?

Затем ебись с полученными данными, как хочешь. Там есть класс Post, он в себе содержит информацию о файлах. Дальше сам разберёшься.

Ответы>>874001>>874014

29 Кб, 448x588

11 Ноя, 15:36 #61 #874001

>>873990
Прошу прощения, но я немного обосрался. Судя по всему, тебе придётся немножко поебаться с сериализацией, т.к. эта поебота не сконвертировала то, что тебе нужно.

Значит смотришь на мой предыдущий пик и создаёшь класс File, который содержит в себе все свойства с пика (то, что лежит внутри переменной 'files'). Обрати внимание, что регистр свойств и тип переменных должен совпадать, чтобы конвертер не послал тебя нахуй.

Затем вместо object подставляешь этот File в текущем пике.

70 Кб, 600x596

11 Ноя, 15:37 #62 #874004

PHP макак вкатывается в тред

1) хочу написать UWP приложение под десктоп/мобил/xbox
for fun. Где посмотреть хелло ворлд? С чего вообще начать? Т.к. предвижу winforms мне не совсем нужен будет

2) Много ли платят в отрасли? Я имею ввиду мне сейчас платят 2к евро дистанционно и сижу на жеппе ровно. Будет ли существенный прирост? В пыхе есть частые халтурки и можно работать из дома. Плюс работы очень много.
Смогу ли я найти на апворке или на тематических форумах таски по быстрому если научусь кое как говнокодить?

3) Если ответ на 2ой вопрос положительный. Во что развиваться? В .ASP, .NET или Xamarin чтобы опять же сидеть на жеппе так же ровно и получать бабло?

4) можно ли писать легковесные и шустрые приложухи на .asp или это не поворотливая хрень?

Всем добра

Ответы>>874011>>874016>>874586

11 Ноя, 15:42 #63 #874009

>>873951
Лол, а вопрос как распарсить страницу это совсем дниве? Прост я до этого только в Юнити хуярил.

Ответы>>874082

11 Ноя, 15:48 #64 #874011

>>874004
1) начни с http://metanit.com/sharp/
2) не сказал бы, что .NET фриланс прибыльней/перспективней, чем рнр (ИМХО). одновременно с этим не сказал бы, что .NET дешевле (мне в помощь статистика на ДОУ, как дела в реальном мире, могу только догадываться)
3) MVC/WebAPI все еще живут, ASP.Core, если выстрелит, то будет крутяковым перспективняком. ну а так остается Xamarin и WPF. мобильные, ясен пень, имеют бОльший вес на рынке
4) если завязываться на IIS, то, в целом, все будет достаточно слабоповоротным (хотя бы благодаря инфраструктуре). но белые люди придумали OWIN, ~Core работает через Kestrel - короче, есть достаточно легкие вещи в окружении

Ответы>>874018

11 Ноя, 15:56 #65 #874014

>>873990
>Что может быть проще?
Вот это >>873978 (плюс это работает и на 4chan и еще где угодно)

Ты блин усложнил, ему надо картинки скачать, а ты прилагаешь писать клиент двача.
api/кодогерация - в интерпрайзе что ли работаешь?

Ответы>>874025

11 Ноя, 15:59 #66 #874016

>>874004
>PHP макак вкатывается в тред
>сидеть на жеппе так же ровно и получать бабло?
Попробуй nodejs без шуток, опыт знакомста с php мартыханами - говорит что он не способны работать со статической типизацией

11 Ноя, 16:05 #67 #874018

>>874011
>WPF
мерт вместе с winforms (а если и применяется где-то, то лучше сразу сдохнуть)

>MVC/WebAPI
Галеры на кровавый тырпрайз по поддержке кода написанного 10 лет назад индусами

>ASP.Core
Единственное перспективное направление, но фиг работу найдешь

Ответы>>874023>>875293>>884267

11 Ноя, 16:26 #68 #874023

>>874018
> мерт вместе с winforms
to be honest - нет
естессно, писать впф тебе скажут только в одном шансе из 10, но и не каждый пишет на c++, что не мешает ему не быть мертвым
моя охуевшесть была охуевшей, когда выкатили работоспособное и (относительно) перспективное приложение на Silverlight

> по поддержке кода написанного 10 лет назад индусами
от этого никуда не денешься

Ответы>>874028

11 Ноя, 16:31 #69 #874025

>>874014
Да, если нужна поддержка форча и не нужна будет сложная логика, то твой вариант будет проще в использовании. Только там ещё надо будет проверить, что ссылка оканчивается на .jpg/.png/.bmp, т.к. ему только картинки скачать надо.

Нет. Поддерживаю всякое говно (Xamarin, Ionic, бэкенд на шарпе без тестов и архитектуры) на удалёнке в мухосранске за 20к, арендую однушку за 14к. Хуже меня уже нет.

Ответы>>874026>>874028

11 Ноя, 16:40 #70 #874026

>>874025
я делал kursach1 студентоте, разве это не хуже червя-пидора?

Ответы>>874028

127 Кб, 985x768

11 Ноя, 16:50 #71 #874028

>>874023
>не каждый пишет на c++, что не мешает ему не быть мертвым
Я думаю с учетом ОС/игр/браузеров там на много порядков больше разработчиков

>>874025 >>874026
Вы нашли друг друга не печальтесь вы еще молодые и шутливые, у вас все в переди.

>надо будет проверить, что ссылка оканчивается на .jpg/.png/.bmp
Массив SupportExtensions в строке 5

Ответы>>874034>>874550

11 Ноя, 17:12 #72 #874034

>>874028
> на много порядков больше разработчиков
сомневаюсь

> Вы нашли друг друга
я ж не говорю, что продолжаю это делать о сих пор

Ответы>>874036

11 Ноя, 17:15 #73 #874036

>>874034 На hh в Москве разница на порядок

11 Ноя, 18:51 #74 #874082

>>874009
Бумп вопросу - что нужно знать, чтобы распарсить страницу и что я в итоге получу, распарсив

Ответы>>874087>>874118

11 Ноя, 18:57 #75 #874087

>>874082
в гугле забанили? https://htmlagilitypack.codeplex.com

Ответы>>874117

11 Ноя, 19:29 #76 #874117

>>874087
А без сторонних библиотек?

Ответы>>874248

11 Ноя, 19:32 #77 #874118

>>874082
что распарсишь, то и получишь.
ебанутый вопрос какой-то не?

11 Ноя, 19:38 #78 #874123

>>873677
я, наверна, не то загуглил, но какое отношение имеет mmf к сортировке?

Ответы>>874139

11 Ноя, 20:07 #79 #874139

>>874123
Работа с большим файлом

11 Ноя, 23:45 #80 #874248

>>874117
Если нужен код для парсинга конкретного сайта, то регулярные выражения.

Ответы>>874259>>874262>>875294

12 Ноя, 00:03 #81 #874259

>>874248
Этим говном еще кто-то занимается в 2016? Я сам этого не делал, но слышал, что в плане производительно это та еще жопаболь, как и в плане сложности.

12 Ноя, 00:23 #82 #874262

>>874248
Хтмл не парсят регулярками, дурной тон.

12 Ноя, 00:28 #83 #874264

>>873951
А как открыть файл, имея на него ссылку или сохранить на диск?

Ответы>>874266

12 Ноя, 00:35 #84 #874266

>>874264
https://stackoverflow.com/questions/307688/how-to-download-a-file-from-a-url-in-c

12 Ноя, 08:54 #85 #874354

>>873657
Справочник по c# 6.0

12 Ноя, 12:45 #86 #874400

Шарпаны, как я понимаю в реальной работе используется только EF?
И если да, то зачем в Троэлсене столько рассказывается про подключенный и автономный уровни?

Ответы>>874403>>874404

12 Ноя, 12:53 #87 #874403

>>874400
1 абсолютно не только
2 уметь пользоваться только хай-левел фреймворком без представления об основах, которые составляют его базу - признак макакена

Ответы>>874419>>874552

12 Ноя, 12:54 #88 #874404

>>874400
Я бы не сказал. В реальности за место EF может использоваться какая-нибудь микро ORM вроде linq2db или dapper, где ты будешь сам писать запросы. А если EF и используется, то часто он служит лишь для мэппинга на DTO сущности и структурирования баз по отдельным классам, а при работе с таблицами вся работа производится через чистый sql, ибо то, что генерирует EF при обращении к БД очень сильно бьет по производительности.

12 Ноя, 13:01 #89 #874408

>>869581
Ананс, зачем тебе целый проект под DAL?
Или ты собрался менять EF на Dapper? Шо прям хайлоад назрел и EF не справляется?

Все равно на NoSQL быстро переехать не получится - тебе домены прийдется перекраивать, что на рабочем солюшене стоит дорого.

Ответы>>874455

12 Ноя, 13:02 #90 #874409

>>871743
Ну посмотрим, сколько денег. 15 пока отлично справляется, интересно, чем заманивать собрались.

12 Ноя, 13:09 #91 #874416

>>872629
"он будет давать делать только webapi/mvc проекты?" - не только - еще console app.

Для линя, что ты на шарпе хочешь писать и главное нахуа?

Core CLR - basement для web way - довольно плотно конкурирует с UAP и они перенимают друг у друга некоторые концепции и реализации, в свою очередь UAP много берет от Mono - тот же AOT вместо JIT. Но все подводится под .NET Standard.

Ответы>>874428>>874455

12 Ноя, 13:13 #92 #874419

>>874403
А чего б и не?
Нужно понимать хотя бы на 1 уровень абстракций ниже, чем тот на котором ты пилишь.

Или переехал ты на другой проект, а там NHibernate и все, ты обосрался, потому, что базовых концепций не знаешь.

12 Ноя, 13:31 #93 #874428

>>874416
>UAP много берет от Mono - тот же AOT вместо JIT
mono aot кто-то реально пользуется или это просто концепт с демками?

Ответы>>874430>>874444

12 Ноя, 13:34 #94 #874430

>>874428
А как он на iOS по твоему работает?
Тот же .net native уже давно не концепт.

Ответы>>874445

12 Ноя, 13:52 #95 #874444

>>874428
Нет не концепт, реально работает - arm архитектура -> Hololens, IOT вот это вот всё.

Ответы>>874445

12 Ноя, 13:55 #96 #874445

>>874430
Кроме iOS конечно, там не было выбора и это не интересно.
Я имел ввиду для десктопа к примеру.

>>874444
>Hololens, IOT
mono на хололенс? можно ссылочки на рабочие проекты (или это только теория)?

Ответы>>874463

12 Ноя, 14:07 #97 #874455

>>874416
> нахуа
потому, что можно

>>874408
ну идея бизнес-логики в контроллерах меня слабо привлекает. и из ДАЛа у меня не только рсубд: есть граф, есть файл-сторедж. чтобы по фен-шую без слоя не обойдешься
ну и да, с ЕФ я, в перспективе хочу слезть. а лучше вообще в постгрес какой-нибудь сраный
ну и юнит-тестирование, окакжэ
проект для себя, хочется идеала, хотя уже не получается

Ответы>>874465

12 Ноя, 14:28 #98 #874463

>>874445
На Hololens не моно, а UAP. UAP взял у Mono AOT.
Но там честно говоря звиздец. Нормальной рефлексии нету, а соответственно Automapper, IoC работают с ограничениями. Ну и вёрсточка UI там неебовая.

12 Ноя, 14:33 #99 #874465

>>874455
Я не писал про бизнес-логику в контроллере. Бизнес логика в бизнес слое. Но смысла с репозитория при использования EF не вижу. EF даёт нормальную абстракцию IQueryable.
Честно говоря, я не вижу смысла с юнит-тестов которые проверяют в бизнес-слое создание объектов без сохранения в базе - я ж так понимаю, ты мокаешь свой репозиторий.
В рантайме, если запрос в EF кривой все и развалится, при работающих юнит-тестах.

НУ плюс адекватно построение связей не протестишь. По-моему. если замешано использование БД, тут уж без интеграционных тестов не обойтись.

Ответы>>874481

12 Ноя, 14:51 #100 #874481

>>874465
ну, я не пишу repository<t> поверх dbset<t> и unitofwork поверх dbcpntext, но ведь какой-то слой command/query должен же быть дабы переиспользовать функционал?

122 Кб, 1000x707

12 Ноя, 16:35 #101 #874550

>>874028
>удаленка на дотнете
Лол что, а разве так бывает?

Ответы>>875802

12 Ноя, 16:36 #102 #874552

>>874403
Я не хочу быть макакеном, в Троэлсене читаю всё подряд, правда

12 Ноя, 17:07 #103 #874577

Аноны, а киньте ссылку на гитхаб с годными веб-проектами в плане архитектуры - на которую можно равняться так сказать (бизнес логика в отдельном слое, юнит тесты, все вот это). Core / Mvc /Web api не так важно.

12 Ноя, 17:27 #104 #874586

>>874004
Почему программистов всегда изображают в виде няшненьких в плохом смысле слова бородатых толстячков-патлачей в очках?

Ответы>>874591

12 Ноя, 17:35 #105 #874591

>>874586
Я дрыщатик-патлач.

12 Ноя, 19:45 #106 #874699

где есть примеры создания собственных коллекций?

Ответы>>874707

12 Ноя, 19:51 #107 #874707

>>874699
для чего?

Ответы>>874717

12 Ноя, 20:01 #108 #874717

>>874707
да в шараге задание дали, реализовать коллекцию. Короч, как встроенные коллекции, только методы и свойства своими руками. Я так понял...

Ответы>>874720>>874752

12 Ноя, 20:03 #109 #874720

>>874717
берешь, короче, рефлектор, смотришь в System.Collections имплементацию любой понравившейся коллекции. упрощаешь по вкусу и гришь преподу мол "смотри старый хрыч с указателями заебашил и с IL".

12 Ноя, 20:23 #110 #874740

Анон, как дебажить обфусцированную программу? Хочу, чтобы как в OllyDbg запустил её и пошагово проходишь. Есть что-нибудь подобное?

12 Ноя, 20:33 #111 #874752

>>874717
по сути, выбора немного: либо с использованием массива для хранения элементов (при этом твоей задачей будет контролировать длину массива и переинициализировать его в случае переполнения); либо через связный список

Ответы>>874783>>874945

12 Ноя, 21:04 #112 #874783

>>874752
ну значит я в правильном направлении двигаюсь

спасиб

13 Ноя, 00:43 #113 #874945

>>874752
А дерево ебануть слабо? Черное, красное, АВЛ, с проходами прямыми и обратными, вглубь и в ширину, бинарное и произвольное. Фантазия безгранична здесь.

Ответы>>875032

13 Ноя, 01:58 #114 #874963

>>869105 (OP)
Вы ебанутые? В чем прикол учить net в 2016, когда есть java, где все тоже самое только еще и linux runnable? вы сами себя ограничиваете

Ответы>>875031>>875048

13 Ноя, 09:41 #115 #875031

>>874963
а как же .NET Core?

Ответы>>875054

13 Ноя, 09:44 #116 #875032

>>874945
ну дык реализацию дерева придется все-равно делать на основе однонаправленного связного списка. только связей будет не одна, а несколько
можно массивом, наверное, но я хз, насколько это эффективно

13 Ноя, 10:39 #117 #875048

>>874963
Вообще то наоборот, как язык C# гораздо мощнее Java и уже без костылей запускается на Linux/macOS.

Я допустим пишу на нем бэкенды (CoreCLR + EF Core) для своих мобильных проектов и деплою на дешевый ubuntu vps.

Ответы>>875054

13 Ноя, 11:11 #118 #875054

>>875048
>>875031
зачем вы дауна кормите?

Ответы>>875056

13 Ноя, 11:22 #119 #875056

>>875054
может быть он находится в неведении

3 Кб, 188x99

13 Ноя, 13:06 #120 #875088

Из бд извлекаю таблицу в DataTable и привязываю к DataGrid'у. Возникло несколько вопросов:
1. В бд имеется поле дата типа date. При отображении в гриде дата принимает формат со временем (пик). Как пофиксить?
2. Как задать заголовкам столбцов дружественные имена. Через маппинг не получается.
http://pastebin.com/8YvyWSne

Ответы>>876542>>877819

9 Кб, 532x151

13 Ноя, 20:13 #121 #875238

Есть тут аноны, которые пишут/писали под андройд на С# с помощью Xamarin?
Прошу у вас помощи. Я установил Android SDK ещё когда устанавливал Android Studio, потом решил писать на C# и скачал Xamarin. Создаю проект, а когда пробую компилировать, вылазит пикрилейтед. Как исправить? Что я делаю не так?

Ответы>>875247

23 Кб, 770x449

13 Ноя, 20:23 #122 #875247

>>875238
Проверь, может быть в настройках студии путь к Android SDK не указан.

Ответы>>875286

13 Ноя, 21:48 #123 #875286

>>875247
обнови jdk

13 Ноя, 21:58 #124 #875293

>>874018
>мерт вместе с winforms (а если и применяется где-то, то лучше сразу сдохнуть)
Winforms еще как применяется для по которое было написано больше 6 лет назад и требует поддержки и направлено на постсовок, в котором много где еще 2000 винда стоит и хр в офисах

Ответы>>875330

13 Ноя, 22:01 #125 #875294

>>874248
НА SO сказали что парсят регулярками только дауны, там самый топовый вопрос с этим связан.

14 Ноя, 00:11 #126 #875330

>>875293
>в котором много где еще 2000 винда стоит и хр в офисах.

Да неее, щас же повсеместно (ЭЦП, плагины для браузеров и прочего документооборота) просят win7 не ниже, разве нет?

Ответы>>875687

14 Ноя, 01:02 #127 #875353

Поясните ньюфагу за отличие экземпляра класса, от экземпляра структуры.

Ответы>>875371

14 Ноя, 02:26 #128 #875371

>>875353
один располагается в куче (первый), другой - в стеке

Ответы>>875460

14 Ноя, 12:08 #129 #875460

>>875371
насчёт стека - не всегда
http://stackoverflow.com/a/4853251

17 Кб, 731x469

14 Ноя, 19:58 #130 #875622

Я конечно не получу тут ответ, но на всякий случай спрошу.

Код примерно такой (пикрилейтед): в цикле создаем массивы по 100К элементов (элемент - струкрура размером 56 байт), и заполняем их. Когда память кончается винда зависает нахуй. Никаких исключений, ничего.

Вопрос: как узнать заранее зависнет ли винда перед выделением и заполнением массива чтобы вообще не производить эту операцию? (виснет она судя по всему на заполнении).

Зависание происходит следующим образом:

- Диспетчер задач показывает 100% использование памяти (12 ГБ в моём случае).
- Начинает дрочиться винт, винда начитает тормозить.
- Перестают перетаскиваться окна и вообще UI, в том числе других приложений и таскбара, не отвечает.
- Диспетчер задач перестает обновлять состояние своего окна.
- Падает к хуям радио (которое еще какое-то время играет).
- Винда перестает реагировать на мышь и указатель мыши застывает. Винт продолжает дрочиться.
- Через значительное время всё затихает и наступает полная тишина. Экран продолжает иметь то же состояние когда UI перестал отвечать на действия пользователя.

Код как текст:

private unsafe void button81_Click(object sender, EventArgs e)
{
MemoryFailPoint memFailPoint = null;
int items = 100000;
MList<Cba[]> arrays = new MList<Cba[]>();
int i = 0;
Random r = new Random();
for (i = 0; i < 2000; i++)
{
try
{
memFailPoint = new MemoryFailPoint(items * 56 / 1024 / 1024);
Cba[] ar = new Cba[items];
for (int j = 0; j < ar.Length; j++)
{
ar[j].A1 = r.NextDouble();
}
arrays.Add(ar);
memFailPoint.Dispose();
}
catch (Exception ex)
{
Trace("i=" + i + " Got an exception: " + ex.Message);
break;
}
}
}

public struct Cba
{
public double A1;
public double A2;
public double A3;
public double A4;
public double A5;
public double A6;
public double A7;
}

Если кто будет тестить, то осторожно - винда виснет конкерно. У меня 12 ГБ и у меня виснет этот код на Windows 7. Если количество массивов уменьшить до 1000 (с 2000 что сейчас), то зависания нет, есть только обычный расход памяти приложением, что можно отследить по диспетчеру задач.

17 Кб, 731x469

14 Ноя, 19:58 #130 #875622

Я конечно не получу тут ответ, но на всякий случай спрошу.

Код примерно такой (пикрилейтед): в цикле создаем массивы по 100К элементов (элемент - струкрура размером 56 байт), и заполняем их. Когда память кончается винда зависает нахуй. Никаких исключений, ничего.

Вопрос: как узнать заранее зависнет ли винда перед выделением и заполнением массива чтобы вообще не производить эту операцию? (виснет она судя по всему на заполнении).

Зависание происходит следующим образом:

- Диспетчер задач показывает 100% использование памяти (12 ГБ в моём случае).
- Начинает дрочиться винт, винда начитает тормозить.
- Перестают перетаскиваться окна и вообще UI, в том числе других приложений и таскбара, не отвечает.
- Диспетчер задач перестает обновлять состояние своего окна.
- Падает к хуям радио (которое еще какое-то время играет).
- Винда перестает реагировать на мышь и указатель мыши застывает. Винт продолжает дрочиться.
- Через значительное время всё затихает и наступает полная тишина. Экран продолжает иметь то же состояние когда UI перестал отвечать на действия пользователя.

Код как текст:

private unsafe void button81_Click(object sender, EventArgs e)
{
MemoryFailPoint memFailPoint = null;
int items = 100000;
MList<Cba[]> arrays = new MList<Cba[]>();
int i = 0;
Random r = new Random();
for (i = 0; i < 2000; i++)
{
try
{
memFailPoint = new MemoryFailPoint(items * 56 / 1024 / 1024);
Cba[] ar = new Cba[items];
for (int j = 0; j < ar.Length; j++)
{
ar[j].A1 = r.NextDouble();
}
arrays.Add(ar);
memFailPoint.Dispose();
}
catch (Exception ex)
{
Trace("i=" + i + " Got an exception: " + ex.Message);
break;
}
}
}

public struct Cba
{
public double A1;
public double A2;
public double A3;
public double A4;
public double A5;
public double A6;
public double A7;
}

Если кто будет тестить, то осторожно - винда виснет конкерно. У меня 12 ГБ и у меня виснет этот код на Windows 7. Если количество массивов уменьшить до 1000 (с 2000 что сейчас), то зависания нет, есть только обычный расход памяти приложением, что можно отследить по диспетчеру задач.

Показать весь текст
Ответы>>875623>>875626>>875717>>875785>>875963>>876023

14 Ноя, 20:00 #131 #875623

>>875622
Бля, какой мудак убрал неразрывные пробелы? Трифорсить нельзя что ли?

14 Ноя, 20:00 #132 #875624

14 Ноя, 20:01 #133 #875626

Пиздец, даже треугольник ставить нельзя. Ну всё, пизда бордам.
Впрочем похуй. Отвечайте на мой ответ. >>875622

14 Ноя, 22:33 #134 #875687

>>875330
> (ЭЦП, плагины для браузеров и прочего документооборота) просят win7 не ниже, разве нет?
Не, можно и на 2000 - хр, если десктоп приложение со вторым фреймворком.

153 Кб, 765x452

Visual Studio для macOS 14 Ноя, 23:24 #135 #875707

Аллилуйя братья, они наконец то возьмутся за Xamarin Studio и сделают из этого что-то приличное.

http://www.cnews.ru/news/top/2016-11-14_microsoft_vypuskaet_visual_studio_dlya_kompyuterov

На VSCode можно только мелко-сайтики пилить, а Rider не может запускать Xamarin проекты.

Ответы>>876774

14 Ноя, 23:30 #136 #875717

>>875622
У меня MemoryFailPoint выбрасывает исключение на ~200 итерации цикла, соотвественно никаких зависаний. win7 16gb

Ответы>>875753

15 Ноя, 00:16 #137 #875753

>>875717
Хм, интересно, спасибо. Хотя это тоже странно, 200 итераций это около 1ГБ данных и это не должно быть проблемой. Скомпилировано под x64?
(Хотя у меня стоит any cpu, но приложение запускается как x64).

Ответы>>875786

87 Кб, 400x216

15 Ноя, 01:08 #138 #875785

>>875622
>Если кто будет тестить, то осторожно
>пользовательские классы, код даже не скомпилируется

Ответы>>875794

15 Ноя, 01:09 #139 #875786

>>875753
Да, стояла галочка "prefer 32-bit", что и происходило. Исключение было OutOfMemory т.е. это похоже был не MemoryFailPoint.
Если ее убрать - приложение запускалось в 64bit, исключение было уже InsufficientMemoryException, на ~2200 итерации. Свопа нет, совсем. Винда иногда предлагала закрыть приложение из-за недостатка памяти.

Ответы>>875794

15 Ноя, 01:23 #140 #875794

>>875786
>Если ее убрать - приложение запускалось в 64bit, исключение было уже InsufficientMemoryException, на ~2200 итерации. Свопа нет, совсем. Винда иногда предлагала закрыть приложение из-за недостатка памяти.
Найс. Это уже другое поведение, отличающееся от моей винды. Может дело в том что она у меня пиратская?

>>875785
Все классы кроме функции Trace я выложил. Суть Trace и так ясна, это обычный текстовый вывод.
А, там я оставил MList. Вроде убирал M, странно, ну ладно. Извиняюсь. Можно заменить на простой List, там разницы не будет. MList это по существу тот же List, только с возможностью доступа к массиву напрямую, но она в коде не используется.

Ответы>>875804

15 Ноя, 01:43 #141 #875802

>>874550
Бывает. А что не так?

15 Ноя, 01:45 #142 #875804

>>875794
>пиратская
Тут комментарий про эту страну и про программное обеспечение.
Ты говоришь, что у тебя диск начинает, это потому что у тебя своп включен, поэтому и винда виснет

Ответы>>875807

15 Ноя, 01:48 #143 #875807

>>875804
ОК, значит своп нужно выключить и проблем не будет? Завтра попробую.

Ответы>>875811

15 Ноя, 01:56 #144 #875811

>>875807
Ну я побоялся включать во избежание того что у тебя в первом посте написано.

Ответы>>875830

15 Ноя, 02:47 #145 #875830

>>875811
Выключил своп и с виндой перестали происходить зависания и наконец-то стали появляться исключения. Хотя в первый раз экран погас и стал черным, после нажатия Ctrl+Alt+Del стал синим, выбрал диспетчер задач, и обнаружил что куда-то пропала Студия из панели задач. Ну и хуй с ней. В остальные разы почему-то такого не было.

15 Ноя, 02:58 #146 #875831

Антон!

В парсер надо добавить немного гибкости кастомными клиентскими скриптами так чтобы им можно было передавать объекты из приложения для обработки например.
Когда-то давно был же WHS - полез искать, а там ебать колотить сколько скриптоговна напридумали и у все это слегка различается по методам использования т.к. видимо под разные задачи заточено. Кроме WHS есть некий компайлинг на лету и подключение этой сборки (как?), есть всякие сторонние JInt-ы и подобные пэкиджи. Что из этого лучше всего использовать чтоб в парсере выполнять скрипты аля vba-код в мс-оффисе или тупо из внешних файлов/базы?
Подозреваю что вот эта компиляция на лету для дотнета ваще нативная и наиболее быстрая, но не понимаю что именно у гугла спрашивать, чтоб подробно раскуриться

7 Кб, 584x211

894 Кб, 2434x1632

15 Ноя, 13:00 #147 #875963

Продолжаю экспериментировать с переполнением памяти.
В том коде что я приводил >>875622 в случае наличия свопа торможение винды начинается при заполнении массива, а не при выделении. При отключенном свопе падение происходит при выделении массива, с исключением.

В реальном приложении заполнение памяти происходит в несколько потоков. При отключенном свопе во всех потоках сразу происходит исключение OutOfMemoryException при попытке выделения памяти для массива как правило. Код потока взят в try-catch, и этот catch ловит OutOfMemoryException, при этом делая успешную запись в лог этого факта. После чего управление чаще всего не достигает точки в которой происходит ожидание окончания выполнения потоков: на первом пикрилейтеде управление не достигает строки "Log.Trace("Threads finished.");" поскольку в логе эта строка так и не появляется.

Поведение при исчерпании памяти бывает разное:

- Иногда управление очевидно таки передается в точку ожидания завершения потоков, но это бывает редко. Вычислено по паре случаев нормальной обработке всех исключений программой.
- Был случай исключения null reference exception.
- Иногда приложение исчезает.
- Иногда приложение падает с крэшем.
- Был случай "неизвестного исключения".
- В одном из случаев с винды слетела тема Aero, перед этим приложение исчезло.
- Был случай гашения экрана и исчезновения Студии (упоминался выше).
- Постоянно падает дебагер Студии.
- Невозможность запустить диспетчер задач.
- Был случай когда выпал BSOD (пикрилейтед).

На данный момент теория следующая: При исчерпании памяти когда происходит попытка выделить массив происходит исключение - такое какое и должно быть. После чего остальной код начинает работать с ошибками, т.к. память по-прежнему вся занята и он уже сам начинает получать исключения в непредсказуемых местах с непредсказуемыми последствиями, каждый раз давая разную картину багов. То что код приложения не выдерживает таких издевательств и то что аналогичное происходит с другими приложениями это еще можно объяснить, но почему к этому оказывается неготова сама винда - вот это открытие.

7 Кб, 584x211

894 Кб, 2434x1632

15 Ноя, 13:00 #147 #875963

Продолжаю экспериментировать с переполнением памяти.
В том коде что я приводил >>875622 в случае наличия свопа торможение винды начинается при заполнении массива, а не при выделении. При отключенном свопе падение происходит при выделении массива, с исключением.

В реальном приложении заполнение памяти происходит в несколько потоков. При отключенном свопе во всех потоках сразу происходит исключение OutOfMemoryException при попытке выделения памяти для массива как правило. Код потока взят в try-catch, и этот catch ловит OutOfMemoryException, при этом делая успешную запись в лог этого факта. После чего управление чаще всего не достигает точки в которой происходит ожидание окончания выполнения потоков: на первом пикрилейтеде управление не достигает строки "Log.Trace("Threads finished.");" поскольку в логе эта строка так и не появляется.

Поведение при исчерпании памяти бывает разное:

- Иногда управление очевидно таки передается в точку ожидания завершения потоков, но это бывает редко. Вычислено по паре случаев нормальной обработке всех исключений программой.
- Был случай исключения null reference exception.
- Иногда приложение исчезает.
- Иногда приложение падает с крэшем.
- Был случай "неизвестного исключения".
- В одном из случаев с винды слетела тема Aero, перед этим приложение исчезло.
- Был случай гашения экрана и исчезновения Студии (упоминался выше).
- Постоянно падает дебагер Студии.
- Невозможность запустить диспетчер задач.
- Был случай когда выпал BSOD (пикрилейтед).

На данный момент теория следующая: При исчерпании памяти когда происходит попытка выделить массив происходит исключение - такое какое и должно быть. После чего остальной код начинает работать с ошибками, т.к. память по-прежнему вся занята и он уже сам начинает получать исключения в непредсказуемых местах с непредсказуемыми последствиями, каждый раз давая разную картину багов. То что код приложения не выдерживает таких издевательств и то что аналогичное происходит с другими приложениями это еще можно объяснить, но почему к этому оказывается неготова сама винда - вот это открытие.

Показать весь текст
Ответы>>875983>>876000

15 Ноя, 13:44 #148 #875983

>>875963
> После чего остальной код начинает работать с ошибками, т.к. память по-прежнему вся занята и он уже сам начинает получать исключения в непредсказуемых местах с непредсказуемыми последствиями, каждый раз давая разную картину багов
что ща хуйню я читаю? OOMException выпадает же до того момента, как куча начинает выделять память под новые объекты
пики не смотрел ибо мобильный клиент их не подгрузил пидар

Ответы>>875987

15 Ноя, 13:52 #149 #875987

>>875983
ОК, найди другое объяснение почему начинает глючить другой код, в том числе из других приложений и из самой винды. По-моему это от того что он не может обрабатывать исключения связанные с нехваткой памяти.

>>875983
>пики не смотрел ибо мобильный клиент их не подгрузил пидар
Там всё-равно ничего интересного.

Ответы>>875998

15 Ноя, 14:07 #150 #875998

>>875987
>ОК, найди другое объяснение почему начинает глючить другой код, в том числе из других приложений и из самой винды.
Очевидно, что в других приложениях возникает необработанная ошибка выделения памяти. Возникает в рэндомном месте и в рэндомный момент времени. Поэтому разнообразные глюки вываливаются.

15 Ноя, 14:10 #151 #876000

>>875963

Может у тебя и вправду винда кривая. Можешь попробовать создавать MFP не в потоках, а до их создания, еще в синхронном коде. Ты бы виртуалку себе сделал с нормальной msdn виндой, и там бы веселился в controlled то environment.

15 Ноя, 14:50 #152 #876023

Ох лолед. Запустил я опять тот код >>875622
Он отработал и выдал исключение. Приложение осталось, память вся выжрана.
Беру Студию (была открыта). И смотрю как она сможет работать. Начинаю просто ходить по главному меню даже не кликая по его пунктам, и тут хуяк - Студия падает нахуй с крешем. Если бы я закрыл своё выжравшее память приложение, то всё работало бы нормально. Вывод: Студия не обрабатывает OutOfMemoryException.
Отсюда еще один вывод: обрабатывать OutOfMemoryException не нужно, потому что код винды и других приложений, в том числе приаттаченные DLL и судя по всему даже код самой CLR, не обрабатывают это исключение и падают. Какой бы идеальный код с этой точки зрения вы не писали, он всё равно завалится, либо от того что упадет используемая чужая Dll, либо от крэша стороннего приложения, либо от крэша винды.

Ответы>>876046

15 Ноя, 15:35 #153 #876046

>>876023

Так тип включи своп обратно и это уже проблемы винды)))

15 Ноя, 16:29 #154 #876081

Выручайте, дали мне оборудование секретное дохуя (китайское нонейм говно), по факту принтер с встроеным серваком, который отдаёт мне на конкретные реквесты, конкретную инфу. Так вот, если приходит HttpWebResponse больше 5Мб, то ReadToEnd() возвращает кракозябры в странной кодировке, ни одна из распространённых кодировок не подходит, да и производитель клянётся, что utf-8, никаких gzip и томуподобного.

Ответы>>876085

11 Кб, 490x162

15 Ноя, 16:35 #155 #876085

>>876081

5 Кб, 713x87

15 Ноя, 18:53 #156 #876181

Подскажите нубасу Как обработать NullReferenceException ? Хочу чтобы метод возвращал true если принимает две null ссылки. T - реализует Comparable<>, Equatable<> Хз как ее ограничить на null типы

Ответы>>876193>>876221>>876244>>876274

15 Ноя, 19:07 #157 #876193

>>876181
where InsideT : class

Ответы>>876204

15 Ноя, 19:18 #158 #876204

>>876193
Это не совсем то что нужно Я собираюсь использовать типы значений вроде Nullable<Int32>

Ответы>>876216

15 Ноя, 19:28 #159 #876216

>>876204
ну можно сделать MethodName<TContainer, TValue>(...) where TContainer : Nullable<TValue> where TValue : struct, но это будет дичь дикая не уверен, скомпилится ли вообще. как вариант ограничиться только констраинтом, что Т - это структура и пытаться выдоить из нее нужный тебе нуллабл

15 Ноя, 19:30 #160 #876221

>>876181
а вообще тебе == надо использовать, а не Equals

Ответы>>876227

15 Ноя, 19:35 #161 #876227

>>876221
Поля Value типа T Тобиш == приводит к вызову этой же перегрузки на == И из-за этого я и не могу сравнить ее с null

Ответы>>876228

15 Ноя, 19:35 #162 #876228

>>876227

ReferenceEquals

15 Ноя, 19:49 #163 #876244

>>876181
https://dotnetfiddle.net/5csKoz

Ответы>>876261

13 Кб, 904x176

15 Ноя, 20:03 #164 #876261

>>876244
Не канает :(

15 Ноя, 20:11 #165 #876274

>>876181
>Хочу чтобы метод возвращал true если принимает две null ссылки
if (op1 == null && op2 == null) return true; - не работает что ли?

Ответы>>876278

15 Ноя, 20:13 #166 #876278

>>876274
== Приводит к вызову этого же метода

Ответы>>876283

15 Ноя, 20:16 #167 #876283

>>876278
Окай, тогда
if (RefecenceEquals(op1, null) && RefecenceEquals(op2, null)) return true;

Ответы>>876284>>876288

15 Ноя, 20:17 #168 #876284

>>876283
Reference*

Ответы>>876288

15 Ноя, 20:20 #169 #876288

>>876283
>>876284
Ух ты! А вот это сработало Спасибо!

16 Ноя, 10:45 #170 #876542

>>875088
Бамп

Ответы>>876558

16 Ноя, 11:26 #171 #876558

>>876542

Так нагуглил бы уж давно.

Ответы>>877819

16 Ноя, 19:18 #172 #876774

>>875707
Ну прям, конфу смотришь? Твой манямир еще не ахуел?

Ответы>>876857

16 Ноя, 19:19 #173 #876777

Лучик жизни этому мертвому треду.
Connect 2016
https://events.techdays.ru/Connect/2016-11/?wt.mc_id=AID522253_EML_4670175

Ответы>>876826

16 Ноя, 19:28 #174 #876782

Даже с линукса один из директоров пришел и сказал что корпорация добра заебись. В ява треде наверное пожар сейчас

16 Ноя, 19:32 #175 #876789

Студия 17

79 Кб, 1072x550

79 Кб, 1060x552

16 Ноя, 19:39 #176 #876795

реал тайм редакторы, полное покрытие часов телеков от эпл андройдов и прочую хуйню. Холивар окончен. ГГВП.

73 Кб, 1061x561

59 Кб, 1064x559

16 Ноя, 19:47 #177 #876799

Студия для мака. КЕК. Кого-то только что жеско выебали.

Ответы>>876800

63 Кб, 1063x533

16 Ноя, 19:49 #178 #876800

>>876799
туда же

Ответы>>876801

57 Кб, 1063x559

16 Ноя, 19:50 #179 #876801

>>876800
Что бы не пиздели список приложений ниже еще прокручивается

Ответы>>876803

60 Кб, 1064x562

16 Ноя, 19:51 #180 #876803

>>876801
работа с кором прямо с гейоси (на пике через хром)

41 Кб, 1059x557

47 Кб, 1059x596

49 Кб, 1062x567

59 Кб, 1058x554

16 Ноя, 20:08 #181 #876815

Джабу ебучую унижают на собственом поле. Можем наблюдать как работу приложения находящего на хабе переносится в мобайл центр где оно тестится на тысячах современных устройст с кучей сладких графиков и отчетностей рассылается по тестерам и всё остальное. За ебаные 5 минут времени.

Ответы>>876816>>876817>>876818>>876821

58 Кб, 1064x560

63 Кб, 1054x557

53 Кб, 1066x557

53 Кб, 1056x558

16 Ноя, 20:08 #182 #876816

>>876815
2

47 Кб, 1067x559

52 Кб, 1058x558

54 Кб, 1064x555

55 Кб, 1063x560

16 Ноя, 20:09 #183 #876817

>>876815
3

63 Кб, 1064x572

69 Кб, 1063x596

45 Кб, 1061x560

50 Кб, 1065x562

16 Ноя, 20:11 #184 #876818

>>876815
Ява встала скален и пошла сразу НАХУЙ

54 Кб, 1066x566

50 Кб, 1066x564

53 Кб, 1062x560

61 Кб, 1071x572

16 Ноя, 20:15 #185 #876821

>>876815
5

94 Кб, 1068x564

107 Кб, 1068x569

16 Ноя, 20:21 #186 #876825

Релизы на сегодняшний день и выебоны что Azure сервера ебут гугл и амазон вместе взятые

Ответы>>876827>>876828>>876834

16 Ноя, 20:24 #187 #876826

>>876777
Спасибо, няша.
Студия 2017 доставила.

74 Кб, 1062x595

64 Кб, 1063x555

68 Кб, 1061x527

55 Кб, 1057x532

16 Ноя, 20:25 #188 #876827

>>876825
какие клёвые датацентры

81 Кб, 1066x531

16 Ноя, 20:26 #189 #876828

>>876825
и это только один, а их дохуя

16 Ноя, 20:33 #190 #876834

>>876825
Пусть лучше уже новую студию выпустят.

Ответы>>876835

54 Кб, 780x580

16 Ноя, 20:35 #191 #876835

>>876834
А какая последняя сейчас? У меня 2015 Enterprise.

85 Кб, 1059x565

16 Ноя, 20:37 #192 #876836

Добавление превращение приложение в докер в 2 клика

16 Ноя, 20:42 #193 #876840

новинка в Azure (Azure function)
SQL 2016 (Самая защищенная, самая сладкая)

Ответы>>876842

53 Кб, 1064x559

16 Ноя, 20:43 #194 #876842

>>876840
цифры не могут врать

Ответы>>876844

67 Кб, 1064x559

61 Кб, 1068x562

16 Ноя, 20:45 #195 #876844

>>876842
Как раньше было хуево с кучей версий и ограничей и как стало

Ответы>>876847

97 Кб, 1058x557

16 Ноя, 20:47 #196 #876847

>>876844
ОЙ А ЧТО ЭТО У НАС ТУТ?!

Ответы>>876852

16 Ноя, 20:47 #197 #876848

Ебать, нигеркодерша, впервые вижу.

34 Кб, 1058x559

36 Кб, 1064x558

16 Ноя, 20:57 #198 #876852

>>876847
Кластеризация таблиц в новой SQL. Это помимо остальных клёвых новых ништяков алгоритмов компресия\сжания и прочие

47 Кб, 1067x564

16 Ноя, 21:00 #199 #876853

Внезапно

55 Кб, 1056x564

59 Кб, 1058x552

16 Ноя, 21:06 #200 #876854

Кучу всяких апи запилили по распознованию голоса, лиса, текста, размера члена которые в реал тайме обрабатываются

Ответы>>876861>>876863>>876864>>876865>>876866

16 Ноя, 21:08 #201 #876857

>>876774
>Ну прям, конфу смотришь? Твой манямир еще не ахуел?
Включил минут 10 назад и все пропустил. Сейчас качаю VS for Mac.

В чем суть, можешь вкратце пояснить?

Ответы>>876858

16 Ноя, 21:09 #202 #876858

>>876857
Блин качает по 100kb/sec - видимо все ринулись качать новую студия и положили их azure.

Ответы>>876860

16 Ноя, 21:11 #203 #876860

>>876858
Это просто ребрендинг ксамарина, расслабься.
Анонсировали ещё пару дней назад — сайт вообще лежал.

Ответы>>876877

63 Кб, 1060x560

70 Кб, 1057x561

66 Кб, 1063x558

71 Кб, 1064x561

16 Ноя, 21:12 #204 #876861

>>876854
Тестовая работа киоска без всяких ID карточек кодов и прочего

67 Кб, 1062x563

66 Кб, 1064x563

16 Ноя, 21:13 #205 #876863

>>876854

67 Кб, 1062x558

72 Кб, 1063x563

68 Кб, 1063x561

16 Ноя, 21:15 #206 #876864

>>876854
Это так мило, скоро омежки будут с киосками дружить <3

16 Ноя, 21:15 #207 #876865

>>876854
>Female
>38
По мне так:
>Male
>55

Ответы>>876867

57 Кб, 1051x546

82 Кб, 1064x561

16 Ноя, 21:18 #208 #876866

>>876854
Запилить подобную няшность можно в Azure bot service. Там же гайды, шаблоны, тесты и всё остальное

Ответы>>876868

16 Ноя, 21:18 #209 #876867

>>876865
Это же та самая шутка про волшебные говорящие зepкала: есть те, что очень льстят, а есть разбитые.

16 Ноя, 21:21 #210 #876868

>>876866
Что бы не было потом вопросов ВИ майкрософта зовут Luis (Луис)

Ответы>>876870

77 Кб, 1059x555

70 Кб, 1054x527

16 Ноя, 21:24 #211 #876870

>>876868
Именно перед ним вам придется КАЯТЬСЯ

Ответы>>876872>>876875

78 Кб, 1059x532

78 Кб, 1062x530

77 Кб, 1061x529

75 Кб, 1060x553

16 Ноя, 21:27 #212 #876872

>>876870
2

79 Кб, 1064x534

16 Ноя, 21:28 #213 #876875

>>876870
И именно он будет решать ваши проблемы взаимодействуя с другими апи

57 Кб, 1061x559

83 Кб, 1058x557

92 Кб, 1065x599

16 Ноя, 21:33 #214 #876876

Развлечение не выходя из дома для белого человека.

16 Ноя, 21:33 #215 #876877

>>876860
Мне (как Xamarin разработчику) в главное что он теперь официально "VS" те:
- их будут обновлять параллельно
- начнут шарить код
- в каком-то виде там увеличится команда разработчиков
В итоге он будет развиваться быстрее и там будет больше фич.

P.S. Вот бы еще выкинули нахрен mono и заменили все на core clr.

Ответы>>876879>>876895

16 Ноя, 21:35 #216 #876879

>>876877
Работой по мультплаформированию продуктов VS занимается 19к(!) разработчиков

69 Кб, 1064x558

61 Кб, 1069x602

57 Кб, 1051x550

58 Кб, 1062x555

16 Ноя, 21:44 #217 #876884

Еще больше сахара в новой студии.
Указание меток прохождения тестов, новые подсказки, реал тайм проверки прохождения тестов. Сладка.

Ответы>>876885>>876886>>876887>>876888>>876889>>876891>>876894

76 Кб, 1061x555

16 Ноя, 21:47 #218 #876885

>>876884
подсказки по рефакторингу по лучшим заветам предков для соблюдения чистоты командного кода

Ответы>>877605

70 Кб, 1056x560

67 Кб, 1059x559

16 Ноя, 21:49 #219 #876886

>>876884
Новые ИКОНКИ, группировка данных для интелсенса для работы со сложными апи

Ответы>>877605>>879380

70 Кб, 1063x560

16 Ноя, 21:51 #220 #876887

>>876884
сокращения из коробки

58 Кб, 1071x601

60 Кб, 1065x595

16 Ноя, 21:52 #221 #876888

>>876884
Сахарок, сахарочек.
Подсказки по структуре

106 Кб, 403x402

16 Ноя, 21:53 #222 #876889

>>876884
Шо там по C# 7.0 (primary constructor завезли)?

61 Кб, 1057x542

61 Кб, 1057x555

63 Кб, 1058x558

59 Кб, 1056x555

16 Ноя, 21:56 #223 #876891

>>876884
Просто расскажи что тебе нужно и тебе посыплют всё сахаром

Ответы>>877605

16 Ноя, 21:57 #224 #876892

>>870562
Альбахари

62 Кб, 1062x595

59 Кб, 1058x559

65 Кб, 1061x559

16 Ноя, 22:01 #225 #876894

>>876884
Больше сахара

Ответы>>877605

16 Ноя, 22:01 #226 #876895

>>876877
А вот мне как маководу главное чтобы они наконец перестали лезть в залупу, запилили addinmaker который сломали вместе со всеми плагинами в 6 версиии — иначе единственная нормальная IDE на OS X просто сокращается до шарпа.

Ответы>>876897

16 Ноя, 22:05 #227 #876897

>>876895
> запилили addinmaker
Никогда не слышал, что это такое?

Ответы>>876900

16 Ноя, 22:09 #228 #876900

>>876897
Хуитка для разработки плагинов.
Как её сломали — расширений просто нет.

16 Ноя, 22:09 #229 #876901

Картинок по сути нет но как я понял теперь тесты написаные один раз в студии могут прогнать любой код будь он написан на любом из поддерживаемых языков.

16 Ноя, 22:12 #230 #876905

Продолжение с болтовнёй после мэйн эвента смотреть с 4 часа

https://connectevent.microsoft.com

70 Кб, 1063x566

16 Ноя, 22:14 #231 #876910

Возвращаясь к VS для гейоси связанные приложения. Всё что нужно для хуяривания под всё из коробки

Ответы>>876919

16 Ноя, 22:20 #232 #876914

Бля, шарпаны, я заебался

218 Кб, 1292x620

16 Ноя, 22:28 #233 #876919

>>876910
Скоро узнаешь, чем она лучше Xamarin

Ответы>>876931>>877119

16 Ноя, 22:39 #234 #876931

>>876919
Я скоро спать пойду, я тут конечно выдержек по постил на первые 2 с половой часа но блядь там уже 7 час идет а у меня ночь на дворе

17 Ноя, 11:38 #235 #877119

>>876919
Так чем же? инб4: ничем

Ответы>>877254>>877292>>877296

17 Ноя, 15:15 #236 #877254

>>877119
Сейчас, обновлю обычную Xamarin и сравню (может туда тоже завезли что в VS)

17 Ноя, 16:04 #237 #877280

Посоны, где в изображении располагается геотег? интересно его вытащить программно

78 Кб, 397x610

17 Ноя, 16:33 #238 #877292

>>877119
Интересный факт:

Версия у Visual Studio for Mac = 7.0, а у последней стабильной Xamrin = 6.x.

81 Кб, 879x448

288 Кб, 1440x896

270 Кб, 1440x900

17 Ноя, 16:42 #239 #877296

>>877119
Появился непонятный шаблон проекта состоящий из:
1) AspNet Core WebApi сайт
2) Shared Project с MVVM частью мобильного приложения
3) Xamarin/Android - версии приложения

Из интересного: в комлекте с (2) идут сорцы реализации:
ServiceLocator - который сейчас считается антипаттерном и
MessagingCenter - синглтон для обмена сообщения между разными частями кода
IMessageDialog - интерфес с методами showMessage/Toast/Confirmation (тоже всегда его сам реализовывал)

Ответы>>882331

26 Кб, 481x207

17 Ноя, 17:04 #240 #877311

Как же бесят такая хуйня, ну почему мы не можем это делать проще :RAAAAAGE:

В каком-нибудь Kotlin это можно вынести в библиотеку и мутить "observable property" одно строкой.

Ответы>>877555

69 Кб, 511x471

17 Ноя, 21:14 #241 #877521

Боже мой, как достало это каждый раз писать. Ананасы, как вы справляетесь с такой фигней?

В каждом гребанном классе есть как минимум одна зависимость, которую надо сохранить в поле.

Пропозал на "Primary Contructor" https://github.com/dotnet/roslyn/issues/9517 зарубили сначало для в C# 6.0, теперь и в 7.0
Говорят "может кода нибудь будем, пока непонятен синтаксис", ну какого хера...

Ответы>>877525>>877527

17 Ноя, 21:20 #242 #877525

>>877521
Сделай их публичными свойствами и инициализируй как обычные поля в конструкторе:
new MySevice { Dependency1 = dependency1, Dependency2 = dependency2 }.
Но это будет опционально. А вообще я не вижу тут серьезных проблем. Жалко один раз конструктор написать что ли?

Ответы>>877534

17 Ноя, 21:22 #243 #877527

>>877521
>Ананасы, как вы справляетесь с такой фигней?
Копипастой и column edit-ом.
>ну какого хера
Ну это не скала и не котлин, тут думают о нововкатывающихся челиках.

Ответы>>877534

27 Кб, 472x207

17 Ноя, 21:33 #244 #877534

>>877525
>Сделай их публичными свойствам
Какие еще проперти, это тебе нет Point { X = 1, Y = 2 }
Это сервис с бизнес логикой и зависимостями на другие сервисы.
В теории они должны проставляться через DI и по канону должны быть иммутабельны.

>>877525 >>877527
>Жалко один раз конструктор написать что ли?
>Ну это не скала и не котлин
Вот именно, когда половину времени пишешь на Kotlin (где это есть) - начинает не хило бомбить
что они вот уже два релиза языка копротивляютися, но при это везде орут про эти ненужные тюплы.

57 Кб, 532x377

Sage 17 Ноя, 22:23 #245 #877555

>>877311
Есть Fody, а INPC посасывает.

Ответы>>877587

17 Ноя, 22:27 #246 #877561

Вечер в тредик, кодинг в радость, господа. Пишу тут небольшой сервис и появилось несколько вопросов к бывалым .NET-господам.
1) Существует ли в .NET класс/метод/функция, которые могут провести валидацию URL: определить соответствует ли заданная строка стандарту URL. Также было бы неплохо, если бы существовал какой-нибудь инструмент, который приводил две одинаковые ссылки к одному стандартному URL(например https://vk.com и vk.com должны быть приведены к vk.com). В первую очередь меня интересуют решения через SQL, далее через managed code с использованием .NET only и C#. Другие варианты, типа этого https://msdn.microsoft.com/ru-ru/library/windows/desktop/bb773724(v=vs.85).aspx не желательны, ибо C++ и вообще устарело. Также не желательны решения через самописные регулярки, ибо большая часть таки не удовлетворяют стандарту.
2) Существуют ли какие-нибудь стандартные биективные функции-архиваторы/хеш-функции для получения сокращённой строки из длинной. Опять же приоритетнее это сделать средствами TSQL, потом уже всякими стандартными средвствами, но код должен быть управляемым.
PS. Сегодня в течение дня искал эту фигню и не нашёл ничего особо годно, поэтому буду весьма благодарен, если кто скажет, что здесь лучше использовать.

Ответы>>877574>>877598

17 Ноя, 22:41 #247 #877574

>>877561
1) System.Uri.IsWellFormedUriString("http://google.com/", UriKind.Absolute)

Ответы>>877763

17 Ноя, 22:53 #248 #877587

>>877555
Что-то не могу в нугете его найти.

Он совместим с PCL Xamarin или netstandard 1.5 ?

Ответы>>877728

17 Ноя, 23:08 #249 #877598

>>877561
> получения сокращённой строки из длинной
ты сжатие имеешь ввиду?

Ответы>>877763

17 Ноя, 23:23 #250 #877605

>>876891
>>876894
>>876886
>>876885
Хоть бы написал что это.

17 Ноя, 23:57 #251 #877629

Многие фичи из этого ивента оказывается есть в 2015 Студии, в частности подсветка заголовка блока при наведении на его закрывающую скобку и строки вида $"{fuck.this.shit}". А я и не знал, уже год как пользуюсь этой студией. Что значит идиот.

18 Ноя, 09:09 #252 #877728

>>877587
>Что-то не могу в нугете его найти.
А ты хоть искать старался? Ну~, с Xamarin он был совместим еще год назад http://arteksoftware.com/fody-propertychanged-xamarin-studio/

>Он совместим с PCL Xamarin или netstandard 1.5 ?
>Supports .net 3.5, .net 4, .net 4.5, .net 4.6, Silverlight 4, Silverlight 5, Windows Phone 7, Windows Phone 8, Metro on Windows 8, Mono, MonoTouch, MonoDroid and PCL
По чем мне знать? Проверь и если не работает, создай issue https://github.com/Fody/Fody

18 Ноя, 12:04 #253 #877763

>>877598
Да, но без потерь и биективное.
>>877574
Благодарю, но это валидация URI, куда входят, как URL, так и URN. Мне нужна валидация именно URL по его стандарту/microsoft реализации. URN должны отсеиваться.

18 Ноя, 13:08 #254 #877786

добрый анон, поясни за мой говнокод. что я делаю не так? как улучшить код?
http://pastebin.com/ffp1wvfg

Ответы>>877817>>877828

18 Ноя, 14:49 #255 #877817

>>877786
if if if if while if if using if if
попробуй сначала инвертировать условия, дабы добиться намного меньшего уровня вложений. ну а после хотя бы попытаться разделить функционал по методам

я думал, это и есть самое страшное, но тут оказался Invoke и Thread. хуй знает, что тобой двигало, когда ты писал это вот, но я бы советовал никогда от слова по возможности не прибегать к этому вот

Ответы>>877831

18 Ноя, 14:52 #256 #877819

>>875088
Бамп.
Как я понял, маппинг не работает без DataSet.

Что делать с датой формата mm/d/yyyy hh:mm:ss AM? Как мне убрать время?

>>876558
Пытался, но увы

Ответы>>877822

18 Ноя, 14:56 #257 #877822

>>877819
http://stackoverflow.com/a/7978519

Ответы>>877974

18 Ноя, 15:15 #258 #877828

>>877786

Ну давай разберём по частям тобою написанное ))

1: private void SqlSelect(object sqlcommand)
Функция с именем SqlSelect. Судя по имени, она должна возвращать какую-то хуйню, связанную с SQL, но она ничего не возвращает. Придумай нормальное название. На вход эта функция принимает переменную sqlcommand типа object... Серьёзно? Ты используешь эту sqlcommand как строку, так и передавай её сразу как строку.

3: int i = 0;
Эта переменная используется на двадцать строк ниже и её имя не несёт никакой смысловой нагрузки. Кроме того, ты используешь её для прохода по двум различным коллекциям. Ты сэкономил несколько байт памяти, но читаемость из-за этого сильно страдает.

29: for (int count = 0; count < reader.VisibleFieldCount; count++)
Переменная с именем count используется как счётчик цикла. Ты совем мудак чтоли?

44: ++id;
Переменная id, как правило, используется в качестве идентификатора. Ты используешь её как счётчик количества ошибок. Измени её имя на что-то типа "errorCount"

45: string.Format("Ошибок: {0}", id);
Можно заменить на:
$"Ошибок: {id}"

48:
finally
{
connect.Close();
}
По идее этот блок ненужен т.к. для connect ты используешь using - он сам эту хуйню тебе должен подставить.

Ответы>>877837

18 Ноя, 15:24 #259 #877831

>>877817
а что не так с вложенностью? не так уж и много ее. просто на форме имеется tabcontrol по этому используется 2 if. первый проверяет на существование вернувшегося результата с npgsql, второй проверяет на какую tabpage занести результаты.
про invoke. как переписать обращение из потока к winforms контролам? на cyberforum нашел пример if (textBox1.InvokeRequired) textBox1.Invoke(new Action<string>((s) => textBox1.Text = s), newText);
else textBox1.Text = newText;
но в нем есть небольшая загвоздка. не все контролы поддерживают invoke.
обращаться с помощью делегатов? тогда на сколько это правильно?

Ответы>>877835

18 Ноя, 15:30 #260 #877835

>>877831
>Как переписать обращение из потока к winforms контролам?
Постарайся не использовать такие низкоуровневые штуки, как потоки. Для таких задач придумали async/await.

Ответы>>877838>>879801

18 Ноя, 15:32 #261 #877837

>>877828
- SqlSelect метод void, т.е. он не возвращает ничего. назвал его потому, как в него попадают select команды
- sqlcommand является object т.к. этот метод вызывается из потока
- с названиями переменных понял, ок. спасибо
- string.format заменю. спасибо
- на сколько знаю, using вызывает метод dispose

Ответы>>877839

18 Ноя, 15:34 #262 #877838

>>877835
а смысл от этого async/await? все равно создается отдельный поток, который самостоятельно вызывает invoke для контролов или я нубло ебаное которое не может в dev?

Ответы>>877847

18 Ноя, 15:37 #263 #877839

>>877837
>на сколько знаю, using вызывает метод dispose
В свою очередь, объект, реализующий интерфейс IDisposable, должен освобождать все неуправляемые объекты в методе Dispose. В данном случае, метод Dispose для NpgsqlConnection должен выглядеть примерно так:
public void Dispose()
{
this.Close();
}

Ответы>>877840>>877841

18 Ноя, 15:40 #264 #877840

>>877839
ок. спасибо!

18 Ноя, 15:41 #265 #877841

>>877839
>должен освобождать все неуправляемые объекты
самофикс: все неуправляемые ресурсы, конечно же

18 Ноя, 15:51 #266 #877847

>>877838
async/await позволяет тебе перестать пидарасить потоки, пытаясь жонглировать данными между ними.

// Синхронная версия
// В этом случае UI будет висеть, пока ты не получишь ответ
private void OnButtonClick()
{
TextBox.Text = new WebClient().DownloadString("https://google.com/");
}

// Асинхронная версия
// В этом случае UI будет продолжать работать, а задача будет выполняться в другом потоке.
// Обрати внимание, что хотя задача выполняется в другом потоке, нет никакой ебли с передачей данных в UI-поток.
private async void OnButtonClick()
{
TextBox.Text = await new WebClient().DownloadStringTaskAsync("https://google.com/");
}

Ответы>>877848

18 Ноя, 15:54 #267 #877848

>>877847
хорошо, убедил.
данная конструкцию будет работать со всеми контролами? или с некоторыми надо танец с бубном подключать?

Ответы>>877853

18 Ноя, 16:02 #268 #877853

>>877848
Данная конструкция не имеет вообще никакого отношения к контролам. Ты точно так, же можешь возвращать результат в какую-то переменную.

Так что:
>данная конструкция будет работать со всеми контролами
this

18 Ноя, 18:56 #269 #877930

В общем. Осилилил я основную часть книги RB Whitaker - The C# Player's Guide - 2015 (в оригинале).
С# Ставил целью изучить, для своего хобби. Делаю модификацию для dota 2 с использованием инструмента https://github.com/SteamDatabase/ValveResourceFormat.

Проблема в том что в книге были небольшие задачи и примеры по изучаемым темам, но там не было нихера самого главного - как написать программу. Вот есть у меня задача - создать инструмент с помощью которого я смогу делать множество операций, которые я ранее делал ручками, изменения в клиенте игры касаемо музыки и звуков. А с чего начать, как это все писать - в душе не ебу. Может есть какая то литература, которая сосредоточена не на объяснении основ языка как в случае с книгой вайтекера, а литература которая демонстрирует и учит написанию практических программ?

Ответы>>878013>>878028

18 Ноя, 19:34 #270 #877942

Изучаю тут F#, дошел до мемоизации. Вот пример кода -
http://www.fssnip.net/8P
А теперь объясните те, кто шарит - каждый рекурсивный вызов новой мемоизированной функции (fibs) ведь должен создаваться новый, внутренний словарь, так какого хуя все функции вроде как работают с одним и тем же словарем и все в конце работает?!
Нихрена не понимаю.

Ответы>>878037

18 Ноя, 20:14 #271 #877974

>>877822
Спасибо няша.

18 Ноя, 21:03 #272 #878013

>>877930
>Ну тащемта в этом и смысл. Ты такой сидишь и думаешь как это реализовать получая за это бабло.

Ответы>>878036

18 Ноя, 21:25 #273 #878028

>>877930
>в книге были небольшие задачи и примеры по изучаемым темам
Ты, блядь, язык изучаешь или как программы писать? Определись уже.

>А с чего начать, как это все писать - в душе не ебу.
Начать писать код, а не ебать другим мозги

Ответы>>878036

18 Ноя, 21:34 #274 #878036

>>878028
>>878013
Ясен хуй я не учил язык ради изучения языка. Просто вот прочел я про кучу всякой поебени, структуры, классы, гетеры, сетеры, полиформизмы и кучу прочей еботни, которую понял, но никогда не использовал. В итоге просто не понимаешь как огромное количество всех этих вещей объеденить в то что будет программой. Хер знает с какого конца схватится.

Подкиньте может исходников какой грамотно оформленной, но не слишком замороченой программы. Почитать, посмотреть, разобраться как вообще это делают.

В моем случаем мне вообще надо будет работать с файломи. Парсингом. Конвертированием. Желательно исходников софта на эту тему. Хотя выебываться особо не буду, любый интересны, что помогут немного разобраться.

Ответы>>878046>>878065

18 Ноя, 21:36 #275 #878037

>>877942
Потому что memoize возвращает функцию, а не значение. Это сочетание замыкания и ленивого вычисления.

Ответы>>878351

18 Ноя, 21:40 #276 #878038

>>870173
Поясните за концепт DI.
Это тип для макак, которые не могут нормально зависимости тащить?

Ответы>>878039

18 Ноя, 21:42 #277 #878039

>>878038
А как ты классы тестируешь с дофига зависимостями?
Подожди...
Дай угадаю...
никак

18 Ноя, 22:01 #278 #878046

>>878036
Мне кажется ты какой-то умственно отсталый или гуманитарий, что, в принципе, одно и тоже. У тебя в голове бардак.
Чтобы что-то научиться делать, надо взять и начать вот это что-то делать.

>В итоге просто не понимаешь как огромное количество всех этих вещей объеденить
Да ладно? Если взять нехуя раз нехуя и объединить, то получится нехуя.

Ответы>>878063

18 Ноя, 22:22 #279 #878063

>>878046
Хотел было возразить, и выебнуться тем в чем я спец, но потом подумал - чего спорить с чсв уебаном.

Я по человечески попросил - мне что бы понять это ваше ооп, какие нибудь исходники не сильно сложной программы, но написанной грамотно и по науке. Что бы посмотреть как вообще все это организовано, структурировано и т.д. Я могу прямо сейчас сесть и начать писать, но это будет лютейший говнокод и ужас. Возможно и к такому варианту прибегну, надо же с чего то начинать. Но пока подумалось, что может кто из опытных, подкинет образец и пример.

Ответы>>878067>>878099

364 Кб, 535x384

18 Ноя, 22:26 #280 #878065

>>878036
>Ясен хуй я не учил язык ради изучения языка.

Ответы>>878066

18 Ноя, 22:28 #281 #878066

>>878065
Ну есть пердолики, которые пердолятся ради пердолинга(нормальные же люди пердолятся ради решения проблем и достижения целей). Не слышал о таких?

Ответы>>878069

18 Ноя, 22:31 #282 #878067

>>878063
Чувак, реально. Бери и делай. Это этап, который не миновать. Ты в любом случае начнешь делать говно, сколько бы ты книг не прочитал. Чем раньше начнешь делать говно, тем раньше поймешь как его не делать. Попутно можешь читать Clean Code. Но только попутно, загодя смысла нет, это просто потерянное время.

Ответы>>878071>>878114

18 Ноя, 22:32 #283 #878069

>>878066
Я думаю если человеку хочется попердолить веб-сайт, то ему стоит пройти в РНР тред и не тревожить дотнет-господ.

18 Ноя, 22:34 #284 #878071

>>878067
Спасибо за дельный совет.

18 Ноя, 23:14 #285 #878099

>>878063
Возьми исходники какой-нибудь библиотеки. Но я не думаю что будет легко понять ООП по ней.

18 Ноя, 23:56 #286 #878114

>>878067
>Clean Code
The Clean Coder: A Code of Conduct for Professional Programmers
Это оно?

Ответы>>878229

Sage 19 Ноя, 11:23 #287 #878229

>>878114
https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Вот только http://tinyurl.com/gu7tlyj
Азаазаза, тот, кого нельзя называть

Ответы>>878279>>879152

19 Ноя, 14:39 #288 #878279

>>878229
Ну вот, а я хотел почитать...

19 Ноя, 15:07 #289 #878292

Аноны, помогите.
Имеется главная форма с листвью, к который биндится коллекция. Поля "Имя" можно менять через комбобокс дочерней формы.
На дочернюю форму передаю саму коллекцию (для биндинга) и значение выделенного элемента поля "Имя". Но значение свойства SelectedIndex комбобокса равно -1. IsEditable комбобокса установлен в True.
Что-то делаю не так? Подскажите как решить проблему (получить правильный индекс).
http://pastebin.com/ZeDqUNiF

Ответы>>880840>>881639

19 Ноя, 16:35 #290 #878327

В старый тред написал >>878319

Ответы>>878328

19 Ноя, 16:44 #291 #878328

>>878327
Настало время переустанавливать.

Ответы>>878390

19 Ноя, 17:35 #292 #878351

>>878037
Да, дошло, что лямбду возвращаем. Спасибо.

19 Ноя, 18:32 #293 #878390

>>878328
Это норма?

19 Ноя, 19:03 #294 #878409

Аноны, вкатываюсь в asp.net. Имеет ли смысл учить asp.net mvc 5 или сразу asp.net core задрачивать в 2016-то году?

Ответы>>878449>>878459

19 Ноя, 20:11 #295 #878449

>>878409
что тебе мешает учить 5, изредка поглядывая на core?

19 Ноя, 20:25 #296 #878459

>>878409
asp.net - на 99% это ебанное ЛЕГАСИ

если хочешь вкатиться на галеры чтобы на дошик хватало, то конечно 5

Ответы>>878467>>878765

19 Ноя, 20:49 #297 #878467

>>878459
>asp.net - на 99% это ебанное ЛЕГАСИ

Мало того, что не по теме вопроса анона, так еще что другое ты можешь предложить?

Ответы>>878508

19 Ноя, 21:43 #298 #878508

>>878467
Я так понял, он хотел посоветовать учить Core.

20 Ноя, 13:29 #299 #878765

>>878459
А почему вы считаете ЛЕГАСИ как что-то плохое?
Ведь в любом языке и технологии легаси дохуя.

20 Ноя, 13:40 #300 #878768

Как считаете на core уже можно, пет-проект какой-нибудь хотя бы, или сыроват еще? Кто пробовал, отзовитесь

Ответы>>879043

20 Ноя, 19:16 #301 #879043

>>878768
я пробую, брат жив
приглашали на собес в фирму, которая уже стартует коммерческий проект на Core

Ответы>>879482

20 Ноя, 20:45 #302 #879152

>>878229
>Вот только http://tinyurl.com/gu7tlyj

Это критика книги Clean Coder, а не Clean Code, дурында.

Ответы>>879236

197 Кб, 980x1102

20 Ноя, 22:56 #303 #879235

Как в кросплатформенной игре на OpenTK "программно" нажать кнопку на клавиатуре?
В гугле нашел SendKeys, но он какой-то хуевый и вроде не работает на системах с UAC.

Sage 20 Ноя, 23:07 #304 #879236

>>879152
Ссылка на клин код тоже была, потерлась из-за спам-фильтра.

21 Ноя, 02:00 #305 #879380

>>876886
>var (a, b) =...
Аноны, разве так можно? Что за конструкция? Первый раз вижу
МОАР

Ответы>>879384

21 Ноя, 02:13 #306 #879384

>>879380
Потому что это новая для шарпа, так ей полтора десятка лет фича — кортеж называется. Первый раз видишь потому что языков знаешь с гулькин хуй, очевидно.

Собственно, там нечего моарить:
(int, int, string) getTuple(){ return (1, 2, "hui"); }
var (_, _, hyu) = getTuple()
WriteLine(hyu) // ""hui"

Ответы>>879391

21 Ноя, 02:59 #307 #879391

>>879384
С какой версией сисярпа идет?
Внутрях это как работает? Как анонимный тип или неявно приводится к Tuple <>?

Ответы>>879474

21 Ноя, 13:35 #308 #879474

>>879391
>С какой версией сисярпа идет?
А какую представляли на конфе, вась? С семёркой, и пока что не идёт (точнее идёт только в первью версиях студии)
>Внутрях это как работает? Как анонимный тип или неявно приводится к Tuple <?
Когда выйдет — узнаешь. Судя по показанному синтаксису — как анонимный тип.

Ответы>>879639

21 Ноя, 13:50 #309 #879482

>>879043
Как по ощущениям? Удобнее обычного asp.net или одна хуйня?

Ответы>>879485>>879645>>879745

21 Ноя, 14:05 #310 #879485

>>879482
> Удобнее обычного asp.net или одна хуйня?
Ебать, его теперь под линапсем можно запускать, лично меня, на данный момент, удобство волнует мало.
мимодругой

21 Ноя, 15:46 #311 #879544

Анон, есть ресурс в xaml'е вида:
<sys:String x:Key="TestString">Некоторая срань</sys:String>

Как его с типом стринг забиндить на свойство во вьюмодели?

21 Ноя, 15:56 #312 #879555

>>869105 (OP)
Вечер в хату. Подскажите как делается динамическая замена плюсовых dll во время выполнения .Net программы. Надо при выполнении какого-то условия подгрузить С++ либу A.dll из папки 1, а при не выполнении С++ либу A.dll из папки 2.

Ответы>>879614>>879860

21 Ноя, 17:00 #313 #879614

>>879555

SetDllDirectory попробуй

5 Кб, 450x178

21 Ноя, 17:21 #314 #879636

Создаю .Net core web application, ничего не ломая, жму F5, получаю пикрилейтед. Кто сталкивался?

VS2015, Windows 10

Ответы>>880027

21 Ноя, 17:22 #315 #879639

>>879474
Вроде как новый тип ValueTuple

21 Ноя, 17:30 #316 #879645

>>879482
Я пробую, по ощущениям - почти прорыв: что-то допилили до конца (асинхронные партиалы, теперь называются компоненты), что-то объединили (web api and mvc теперь от одного класса наследуется), а эти сладкие nuget пакеты... очень продуманно с модульностью, такое чувство, что еще чуть и можно будет собирать приложение как конструктор

21 Ноя, 19:38 #317 #879745

>>879482
конфигурация самого приложения мне напоминает старый добрый owin (это плюс)
объединение webapi и mvc мне казалась гениальной идеей до того момента, как я не стал строить адекватное rest-вебапп. вот тут я сразу не понял сути пространства имен Microsoft.aspnetcore.webapi. то, что оно делает, не стакается с ~.mvc и в рантайме получается какой-то трешак (некоторые полезные в обеих случаях штуки, к примеру, роут атрибуты, присутствуют только в мвс). для поддержки перекатывания был выпущен webapicompatshim, но получается, что в одной части ты работаешь с httprequestmessage, в другой с httpcontext и это мне показалось странным
еще у меня есть претензии к нативному dependency inhection фреймворку, но есть вариант, что это говно просто вот так работает и я чего-то не знаю

в целом я особо не жалуюсь. как тут один товарищ упомянул модульность - она прям самое то, что надо

если кито знает, есть ли серьезная просадка в перфомансе при использовании .netfx библиотеков в .netcore приложении?

Ответы>>879748>>879921

21 Ноя, 19:40 #318 #879747

TFW нашел пример, на котором программа падает, но не успел запомнить контрольные значения, но потом все последующие тесты работают на ура.

21 Ноя, 19:41 #319 #879748

>>879745
>мне казалась гениальной идеей до того момента, как я не стал строить адекватное rest-вебапп
Ну а вывод тут один: надо делать SPA на typescript + WebAPI, остальные подходы устарели.

Ответы>>879751>>879830

21 Ноя, 19:42 #320 #879751

>>879748
нахуя мне тогда коре, если я вернусь обратно в сраный асп 5?

Ответы>>879755

21 Ноя, 19:48 #321 #879755

>>879751
linux сервера без костылей mono + перформанс + docker + можно разрабатывать на маке в VSC попивая смузи

sage 21 Ноя, 20:59 #322 #879801

>>877835
> Для таких задач придумали async/await.

Кое-где до сих пор под второй .net пограмируют легаси говно, а ты про 4.5 фреймворк говоришь.

Ответы>>879818>>879830>>879924

21 Ноя, 21:33 #323 #879818

>>879801
По-моему с таких проектов валить нужно (может даже из компании), если на таком старом говне пишешь. Сам сейчас на 4.0 пишу, а то и ниже лол, а до этого на 4.6 сидел. Не хватает конечно async / await, да и сахара из 4.6. Теперь страдаю от этого говна и собираюсь перекатываться в другое место.

Ответы>>879835>>879924

21 Ноя, 21:43 #324 #879830

>>879748
Пилил недавнополгода назад сдк к одному WEB API на TypeScript + Angular + Karma + Jasmine. Скажем так, прикольно, но не удобно:
- Некоторые вещи приходится реализовывать хаками, так как TypeScript видите ли такую запись не поддерживает (promises, d.ts файлы - вот это все из этой оперы).
- Некоторые вещи не покрываются тестами вообще не в какую.
- Часто приходилось отходить от строгой типизации. Меня часто просто вынуждал язык использовать any. Хотя, казалось бы, писал довольно тривиальные вещи. Возможно язык станет лучше, если запретить это слово к применению, но нет нормальных замен.
Возможно я чего-то не понимаю, в целом TypeScript не понравился.

>>879801
>Кое-где до сих пор под второй .net пограмируют легаси говно
Что мешает перейти на 4.6.х? Обычно эти вопросы решаемы при должном обосновании. Мне часто приходится решать задачи на экспериментальных фреймворках/утилитах, так как почти всегда не достаточно просто написать код, чтобы он работал. Код должен быть эффективным и простым среди аналогов.

Ответы>>879839

sage 21 Ноя, 21:51 #325 #879835

>>879818
>валить нужно (может даже из компании),
А если даже на собеседование никуда не приглашают, потому что опыта 0 в резюме
Я же не синьор у которого 20 вакансий на выбор. Меня пригласили на целых 3 собеса за 3 месяца.

Ответы>>879839>>879840

21 Ноя, 21:57 #326 #879839

>>879830
Зависит от руководства на самом деле. Я например сейчас на корейцев работаю и у них свое мышление от которого можно охуеть порой. т.е. если ты захочешь перевести проект на новый фреймворк это нужно обоснавать в письменном виде какие это плюшки принесет, почему, нахуя и т п. И да - у них своё понимание плюшек.

>>879835
Набирайся опыта, учи попутно core / mvc 5 тогда, хули. А на сколько вакансий ты примерно откликнулся?

21 Ноя, 21:57 #327 #879840

>>879835
>целых 3 собеса за 3 месяца
Что ты такое в резюме написал, что все так плохо?

>опыта 0 в резюме
Так не бывает. Обязательно найдется пара проектов для себя/знакомых, которые сойдут за опыт.

Ответы>>879850

21 Ноя, 22:15 #328 #879850

>>879840
>Что ты такое в резюме написал, что все так плохо?
То что знаю, то и написал + образование.
> Так не бывает. Обязательно найдется пара проектов для себя/знакомых, которые сойдут за опыт.
Я писал проекты, они конечно не йоба, а чтобы продемонcтрировать что я не хуй с горы.
Это наверное рандом
Знакомого на галеру взяли: он показал пару лаб, спросили английский и попросили сделать реверс строки. Второй попал на галерные курсы и после них взяли веслать.
Уже все подзабыл, что связанное с вебом, потому что все технологии, которые используются на проекте, 2005 года.

21 Ноя, 22:33 #329 #879860

>>879555
Вот так:
private static extern IntPtr LoadLibrary(string name);
[DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)]

Использование:

IntPtr dllHandle = LoadLibrary(dllname);
if (dllHandle == IntPtr.Zero) throw new Exception("Не удалось загрузить dll: " + dllname);

try
{
IntPtr addr = GetProcAddress(dllHandle, "здесь_имя функции_из_dll");
if (addr == IntPtr.Zero) throw new Exception("Функция здесь_имя функции_из_dll не найдена в dll: " + dllname);
FunctionBlaBla = (делегат_с_сигнатурой_функции)Marshal.GetDelegateForFunctionPointer(addr, typeof(делегат_с_сигнатурой_функции));
}
catch
{
FreeLibrary(dllHandle);
dllHandle = IntPtr.Zero;
throw;
}

FunctionBlaBla - переменная типа "делегат_с_сигнатурой_функции"

Ответы>>879863>>881610

21 Ноя, 22:35 #330 #879863

>>879860
А, и еще:

[DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)]
private static extern IntPtr GetProcAddress(IntPtr hModule, string name);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool FreeLibrary(IntPtr hModule);

Ответы>>879865>>881610

21 Ноя, 22:36 #331 #879865

>>879863
Сука, не так. Вот так:

[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr LoadLibrary(string name);
[DllImport("kernel32.dll", CharSet = CharSet.Ansi, SetLastError = true)]
private static extern IntPtr GetProcAddress(IntPtr hModule, string name);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool FreeLibrary(IntPtr hModule);

Ответы>>881610

22 Ноя, 00:40 #332 #879921

>>879745
Только напоминает? Он построен на Owin
Что-то не понял где объдинение mvc и webapi дало сбой? Подробнее плз
DI все мои потребности покрывает, мне нравится, чем тебя не угодил?) Кстати, можешь любой другой поставить

Ответы>>880067

22 Ноя, 00:43 #333 #879924

>>879801
>>879818
Async/await, говорят, можно завести на net framework 2.0. Только немножко с nuget кое-чего подключить.
Ведь основное (конечный автомат) делает компилятор

80 Кб, 1440x702

22 Ноя, 00:57 #334 #879928

Наше время пришло! Готовьтесь остаться на помойке истории.

Ответы>>879943>>880026>>880035

22 Ноя, 01:47 #335 #879943

>>879928
>не менее 5 лет
>в коммерческие проекты
>хачкель

Это такой тралленг? Сразу бы программиста на Rust с 5+ годами искали, чего уж.

Ответы>>880026

22 Ноя, 08:49 #336 #880026

>>879928
>то самое чувство, когда какой-то мудозвон протащил хаскель в проект и съебал
>>879943
Ты же понимаешь, что эти объявления постят эйчарки?

22 Ноя, 08:57 #337 #880027

>>879636
Ну же, аноны!

Ответы>>880034

22 Ноя, 09:05 #338 #880034

>>880027
dotnet run
что показывает?

Ответы>>880351

22 Ноя, 09:08 #339 #880035

>>879928
>> хаскель
>> глубокое понимание ООП.
Сижу проигрываю в голосину блять!

22 Ноя, 11:36 #340 #880067

>>879921
> Только напоминает? Он построен на Owin
я, может, невнимательно читал, но сей детали не увидел. а даже если и увидел, то что это меняет в моем сообщении?

> Что-то не понял где объдинение mvc и webapi дало сбой? Подробнее плз
http://stackoverflow.com/questions/40464546/asp-core-nullreferenceexception-in-apicontroller-executeasync
вот мой квесщн собственно. там почитать будет интересней, чем я тут буду объяснять

> DI все мои потребности покрывает, мне нравится, чем тебя не угодил?)
я пытался заиспользовать контекст базы данных (зарегистрированным как AddScoped<>) в одном из Middleware (причем, не как чайлд самого класса миддлеваре, а как созданный инстанс в рамках исполнения метода). так вот эта хуйня не диспоузала dbcontext при выходе из метода и фактически протаскивала этот инстанс везде, где только он дальше использовался даже в рамках другого реквеста. я, конешно, подозреваю, что мой подход был так себе, но и документация тогда получаецца врет ибо контекст жизни для Scoped-зависимостей - это Context, а не реквест

> Кстати, можешь любой другой поставить
ну зачем, собственно? тимболие што я, субъективно, вижу (пока что) в этом больше геморроя, чем толку

Ответы>>880459

22 Ноя, 16:17 #341 #880197

Какие задачи вообще асперы решают? Хочу вкатиться в веб и asp.net, но у меня опыта в вебе нуль. Надо ли уметь верстать, обязательно ли знать js и его фреймворки?
Из опыта только си, и то на начальном уровне.

Ответы>>880207

22 Ноя, 16:27 #342 #880207

>>880197
> Надо ли уметь
ну я совершенно честно заявляю, что в клиентской разработке я еблан полный и делаю все с гуглом напару. кому-то в основном это не нравится сразу и они махают мне ручкой либо эйчарше нужно выполнить месячный план собеседований и меня тянут дальше к техспецам под предлогом "ну хули там можно выучить наверное да"

по большей части - это корректировка/расширение API и бизнес-логики приложений. если нету специально обученных DBA, то еще попросють влезть в кверяние базы данных

59 Кб, 1080x1080

22 Ноя, 16:48 #343 #880227

Покажите пожалуйста профессионально написанную серьезную программу на шарпе. А то, я все лабы пишу, хочу разобраться на примере.

Ответы>>880228>>880250

22 Ноя, 16:53 #344 #880228

>>880227
купи у какой-нить софтвэр-компании продукт, и декомпилируй его и охуей от уровня говнокода

22 Ноя, 17:18 #345 #880250

>>880227
https://github.com/aspnet/EntityFramework
https://github.com/aspnet/Mvc
https://github.com/aspnet/KestrelHttpServer

Ответы>>880354

22 Ноя, 19:25 #346 #880351

>>880034
>что показывает?
Project WebApplication1 (.NETCoreApp,Version=v1.0) was previously compiled. Skipping compilation.
Hosting environment: Production
Content root path: ...\WebApplication1\src\WebApplication1
Now listening on: http://localhost:5000
Application started. Press Ctrl+C to shut down.

Он и через студию, если ctrl+F5 нажать запускается. Эта ошибка будет, если просто собраться его попробовать по F5, как по идее и должно быть

22 Ноя, 19:26 #347 #880354

>>880250
Если честно, я даже не знаю, как к этому подступиться.

Ответы>>881511

22 Ноя, 21:14 #348 #880459

>>880067
Че-то я не понял какой apicontroller в core? Тем более system.web? Щито ты творишь?

Не знаю как она диспозила, но я сам лично видел в исходниках, что диспоз происходит после обработки запроса, могу найти, если хочешь

>контекст жизни для Scoped-зависимостей - это Context, а не реквест
О каком ты контексте говоришь?

Ответы>>880541

22 Ноя, 23:10 #349 #880541

>>880459
> какой apicontroller в core?
Microsoft.aspnetcore.webapi.controllers.apicontroller
но я могу ошибаться с пространством имен ибо с телефона

> Тем более system.web?
где там сустем.веб? щито ьы городишь?

> могу найти, если хочешь
даже если ты что-то мне найдешь, это отменит тот факт, что дбконтекст не убивался после выполнения запроса?

>О каком ты контексте говоришь?
system.runtime.remoting.context

Ответы>>880599

23 Ноя, 00:43 #350 #880599

>>880541
>где там сустем.веб? щито ьы городишь?
У тебя в вопросе на стэке "inherited from System.Web.Http.ApiController"

>тот факт, что дбконтекст не убивался
Значит ты что-то делаешь не так

Что это за контекст?

Кстати, где документацию читаешь?

Ответы>>880753

23 Ноя, 11:51 #351 #880753

>>880599
> inherited from System.Web.Http.ApiController
воу, я уж чета не смотрел, что писал. ну, в общем, это все мне стало доступно после того, как я подключил Microsoft.AspNet.WebApi.Owin. вангую, что это для ASP 5 и все такое, но это мине студия подсказала, это ния

> Значит ты что-то делаешь не так
ну тут как сказать. я использовал замыкание на IServicesCollection и юзал его как Service Locator (знаю, что это анти-паттерн, но не суть). в статическом методе одного из Middleware брал реализацию нужного мне всего (в т.ч. зависимости уходили вниз до DbContext), делал дела, метод завершался (тут я даже обнулял ссылки на сервисы дабы ускорить умирание некоторых из инстансов) и все были счастливы, кроме меня. вот тут-то я и подумал, что AddScope<> привязывает объекты к контексту, а не реквесту, как сказано

> Что это за контекст?
если в двух словах, как я это понимаю, то это область привязки и видимости объектов
вообще, нормального описания данной проблемы в околоmsdn-ской среде я слабо нашел, в основном бложики, и те, по большей части, опираются больше на ObjectContext (зачем-то) и производные. я черпал свои говнопознания что-то вроде бы отсюда
http://daxgrom.com.ua/info/platforma-net-programmirovanie-i-bezopasnost/obekty-i-kontekst
и уверен, что не разобрался до конца во всем происходящем

> Кстати, где документацию читаешь?
пробовал тут https://docs.microsoft.com/ru-ru/aspnet/core/getting-started но майкрософт любит давать примеры в стиле "для даунов", посему я перешел просто в гугл по вопросам, что нужно решить. также решил на метаните почитать, но там сплошной перевод вышеуказанного сайта + адаптация своих ранешних написалок по asp.net, потому стало тоже неинтересно

Ответы>>880780>>882200

23 Ноя, 12:58 #352 #880780

>>880753
Можешь кинуть код, где ты в конифигурации прописываешь зависимсть для класса, который не диспозится? Когда-то у самого были проблемы с незакрывающими соединениями из за DI и на БД весели тысячи соединений, хотя я конечно использовать сторонний DI фреймворк. Так что интересно было бы посмотреть, что у тебя не так там.
Мимодругой-анон

Ответы>>880842

23 Ноя, 13:07 #353 #880783

Господа синьёры-архитекторы, поясните, пожалуйста, за этот код:
https://gist.github.com/anonymous/fc97f14fc6a1476d0d61e0b3754b1ce4?ts=4

Нужно по SignalR уведомлять клиентов об изменениях в репозитории, для этого мне нужен репозиторий, который будет кидать события.

Мой коллега говорит, что я еблан, и сервис не должен реализовывать интерфейс репозитория. Но я в душе не ебу, как это можно сделать по другому.

Ответы>>880785>>881489

23 Кб, 200x340

23 Ноя, 13:12 #354 #880785

>>880783
С каким же быдлом я здесь сижу

23 Ноя, 14:46 #355 #880840

>>878292
Бамп вопроса.

23 Ноя, 14:47 #356 #880842

>>880780
у меня не создавалось много контекстов, у меня все проходило через один, соединение с которым было открыто практически с самого начала работы приложения

код - это будет громоздко и неинформативно, тимболия я его снес
суть в том, что в одном из Middleware (об котором ни одна хуйня в интернетах не обмолвилась, что инстанс создается при старте и является статическим для всех реквестов), вызывалась такая штука
var service = (IServiceCollection).Resolve<MyGovnoService>(), одной из дочерних зависимостей которого был контекст. регистрация зависимости DbContext происходила буквально таким образом: services.AddScoped(typeof(DbContext), typeof(MyContext))

Ответы>>880850

23 Ноя, 14:56 #357 #880850

>>880842
Хм, по-идее все ок должно быть, но с этим встроенными DI фреймворком хуй знает как все работает. Я бы еще попробовал бы регистрацию через services.AddScoped<type, type>(); или
services.AddSingleton<type, type>();

Ответы>>880857

23 Ноя, 15:25 #358 #880857

>>880850
<T1, T2> не получалось т.к. дбконтекст находится на один уровень ниже в архитектуре WebApp-Bll-DAL и недоступен для веб-приложения. посему мне приходилось с помощью MEF коллектить зависимости в виде {SourceType, DestinationType, Scope} и уже вот таким говном их регистрировать
ну DbContext как Singleton у меня не возникло мысли регистрировать

45 Кб, 521x456

23 Ноя, 16:34 #359 #880911

Что-то я не понял, в каком порядке книги читать? Что после The C# Player's Guide?

Ответы>>880929

23 Ноя, 17:24 #360 #880929

>>880911
clr via c# Рихтера, а затем можно курить доки по asp.net на офф. сайте. Либо сразу начинай читать доки по asp.net. Ну это в случае веба естественно.

Ответы>>880930

23 Ноя, 17:26 #361 #880930

>>880929
а EF когда?

Ответы>>880932

23 Ноя, 17:29 #362 #880932

>>880930
Про EF можно и в доках asp.net читать - благо там много знать не нужно. Да и на EF весь свет клином не сошелся. Можно выбрать какую-нибудь мини-orm типа дапера или linq2db, хотя с EF в любом случае придется работать, да.

23 Ноя, 21:49 #363 #881129

Сап, ребят, а есть С# 6.0 Троелсена на русском? Никак найти не могу где скачать бы.
Слабоват пока в английском, посоветовали одновременно читать его на русском и английском, нашёл только 5.0.

Ответы>>881152

23 Ноя, 21:57 #364 #881138

>>869581
123

Ответы>>881152

23 Ноя, 22:32 #365 #881152

>>881129
почему я могу найти? или у тебя китайский фаервол?

>>881138
ясно

Ответы>>881195

23 Ноя, 23:14 #366 #881195

>>881152
>почему я могу найти?
Потому что ты фантазёр.

24 Ноя, 00:17 #367 #881254

>>869574
Нихуя. Дергать резолвы ручками можно только при конфигурации контейнера.
Иначе вся суть контейнеров пропадает. В бизнес-логику лезет какой-то блядский код контейнера, если решим спрыгнуть с контейнера или перелезть на другой придётся вычищать кучу этой хери.
Так что не надо дергать ресолв там где не надо.

Ответы>>881480

24 Ноя, 01:15 #368 #881279

Я совсем ньюфаг и не понимаю. Пример с msdn:
public string Name
{
get { return name; }
set { name = value; }
}
Что делает set? Что за виртуальная переменная value, которую не нужно объявлять? Как set участвует в вызове этого самого свойства?

Ответы>>881338>>881341

24 Ноя, 06:18 #369 #881338

>>881279
Ой пиздец. Set устанавливает свойство. value это значение которое передается в set которое требуется установить.
ClassName fuck = new ClassName();
fuck.Name = "fuck"; // - вызовется метод set, в качестве value будет строка "fuck".

Ответы>>881460>>881731

24 Ноя, 06:36 #370 #881341

>>881279
есть более простой вариант
>string Name { get; set; }
если хочешь начальное значение задать, то просто добавляешь в конец >= "имя"

24 Ноя, 13:51 #371 #881460

>>881338
А зачем такой дикий геморой с установкой значений полей? Для того, чтобы закладывать логику обработки от исключений или что?

Ответы>>881461

24 Ноя, 13:53 #372 #881461

>>881460
когда тебе функционала полей недостаточно, а поступать как в жабе getField() setField() не комильфо но сиравно компилятор сгенерит методы
ну и всякая такая вещь как инкапсуляция

Ответы>>881463

24 Ноя, 13:54 #373 #881463

>>881461
я нюфаня и ничего не понял, до сих пор живу категориями полей структур из Си

Ответы>>881466

24 Ноя, 13:57 #374 #881466

>>881463
у тебя есть класс с публичным полем Name
работа инстансов этого класса в дальнейшем по приложению сопряжена с тем, что Name не должен быть null/empty/whitespace, если длина не более 16см, а начинаться с заглавной буквы - это вообще пиздец как недопустимо

у тебя есть два пути: создать метод SetName(string name) или проводить проверку перед каждым вызовом obj.Name = {value}. фактически - первое реализовано как свойства в .NET. get {} это == GetName() {return name;}. set{} это == SetName(string name) { CheckName(); name = {value}; }

Ответы>>881733

sage 24 Ноя, 14:18 #375 #881480

>>881254
Запили абстракцию над контейнером. И если ты внезапно решишь пойти на другой - просто поменяешь в одном месте.

возможны мы вообще об одном и том же говорим но по-разному?

Ответы>>881495

94 Кб, 378x480

24 Ноя, 14:38 #376 #881489

>>880783
Ну же, господа! Мне и вправду нужно знать ваше мнение.

Ответы>>881512

24 Ноя, 15:24 #377 #881495

>>881480
Контейнер конфигурируется и присутствует только в проекте исполнения. Никаких резолвов не надо дергать. Все инжектится через конструкторы, если требуютя разные реализации, то применяется регистрация по условию. Все уважаемые DI фреймворки это умеют.

Ответы>>881508

sage 24 Ноя, 16:06 #378 #881508

>>881495
ну да, пока всё совпадает. инжекция в конструкцию - или какой-то абстрактный резолв - это уже детали, бро.

sage 24 Ноя, 16:11 #379 #881511

>>880354
а что бы ты хотел увидеть?

Вот например проекты серьёзные

https://github.com/search?o=desc&q=language:C#&ref=advsearch&s=stars&type=Repositories&utf8=✓

sage 24 Ноя, 16:16 #380 #881512

>>881489
Ну коллега прав.
По факту у тебя тырфейс IHuyService должен содержать тоже методы Get, Delete, Modify, Add.

Сначала покажется что дублирование кода. но на самом деле у тебя в интерфейсе сервиса может быть например 3 метода Get, Save, Delete. А Save уже по своей логике будет вызывать Add или Modify.

Потому для сервисов и репозитроиев отдельные интерфейсы

24 Ноя, 18:59 #381 #881584

Подскажите чего почитать по P/Invoke в C#. Желательно не отдельные книги, а статьи в интернетике. А в идеале, просто поясните, правильно ли я понимаю суть P/Invoke'а - с помощью него можно делать всякие низкоуровневые штуки путём импорта функций из различных .dll и объявлений в коде соответствующих структур? Может, подкинете примеров из своего опыта, что можно мощного сделать на P/Invoke?

Ответы>>881610

24 Ноя, 19:47 #382 #881610

>>881584
Вот тебе пример:
>>879860
>>879863
>>879865

Ссылка например https://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

Статьи в интернетике обычно не существуют.

Гуглится всё следущим образом.
Сначала тебе нужна какая-нибудь функция, как правило она на C++ и как правило вызывает виндовую dll. Иногда может быть другая dll.
В случае если функция виндовая, но гуглится на msdn. Например недавно я гуглил функцию GlobalMemoryStatusEx, которой нет в C#. Нашел. Дальше в гугле вбиваю "GlobalMemoryStatusEx Pinvoke", после чего гугол находит мне объявление этой функции вместе со структурой которая там используется:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class MEMORYSTATUSEX
{
public uint dwLength;
public uint dwMemoryLoad;
public ulong ullTotalPhys;
public ulong ullAvailPhys;
public ulong ullTotalPageFile;
public ulong ullAvailPageFile;
public ulong ullTotalVirtual;
public ulong ullAvailVirtual;
public ulong ullAvailExtendedVirtual;
public MEMORYSTATUSEX()
{
this.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
}
}

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer);

А дальше я просто вызываю эту функцию таким образом:
public static ulong GetFreeMemoryMb()
{
WinApi.MEMORYSTATUSEX memoryStatus = new WinApi.MEMORYSTATUSEX();
WinApi.GlobalMemoryStatusEx(memoryStatus);
return memoryStatus.ullAvailPhys / 1024 / 1024;
}

И всё.
Случаев чтобы какая-либо виндовая функция не гуглилась и не находилась её декларация у меня еще не было, поэтому самостоятельно даже не приходится всё это писать, достаточно нагуглить и скопипастить. Иногда бывают не самые оптимальные объявления, но как правило они оптимальные. В крайнем случае можно изучить как это всё маршалится и заебенить всё самому, но в результате будет всё по сути то же самое.

24 Ноя, 19:47 #382 #881610

>>881584
Вот тебе пример:
>>879860
>>879863
>>879865

Ссылка например https://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

Статьи в интернетике обычно не существуют.

Гуглится всё следущим образом.
Сначала тебе нужна какая-нибудь функция, как правило она на C++ и как правило вызывает виндовую dll. Иногда может быть другая dll.
В случае если функция виндовая, но гуглится на msdn. Например недавно я гуглил функцию GlobalMemoryStatusEx, которой нет в C#. Нашел. Дальше в гугле вбиваю "GlobalMemoryStatusEx Pinvoke", после чего гугол находит мне объявление этой функции вместе со структурой которая там используется:

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class MEMORYSTATUSEX
{
public uint dwLength;
public uint dwMemoryLoad;
public ulong ullTotalPhys;
public ulong ullAvailPhys;
public ulong ullTotalPageFile;
public ulong ullAvailPageFile;
public ulong ullTotalVirtual;
public ulong ullAvailVirtual;
public ulong ullAvailExtendedVirtual;
public MEMORYSTATUSEX()
{
this.dwLength = (uint)Marshal.SizeOf(typeof(MEMORYSTATUSEX));
}
}

[return: MarshalAs(UnmanagedType.Bool)]
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool GlobalMemoryStatusEx([In, Out] MEMORYSTATUSEX lpBuffer);

А дальше я просто вызываю эту функцию таким образом:
public static ulong GetFreeMemoryMb()
{
WinApi.MEMORYSTATUSEX memoryStatus = new WinApi.MEMORYSTATUSEX();
WinApi.GlobalMemoryStatusEx(memoryStatus);
return memoryStatus.ullAvailPhys / 1024 / 1024;
}

И всё.
Случаев чтобы какая-либо виндовая функция не гуглилась и не находилась её декларация у меня еще не было, поэтому самостоятельно даже не приходится всё это писать, достаточно нагуглить и скопипастить. Иногда бывают не самые оптимальные объявления, но как правило они оптимальные. В крайнем случае можно изучить как это всё маршалится и заебенить всё самому, но в результате будет всё по сути то же самое.

Показать весь текст

24 Ноя, 21:03 #383 #881639

>>878292
Бамп
Неужели перевелись wpf мастера в русских селениях на двощах.

Ответы>>881662>>881747

24 Ноя, 21:42 #384 #881662

>>881639
Где INPC?

Ответы>>882513

25 Ноя, 00:12 #385 #881731

>>881338
Спасибо, ты расшарил в паре предложений то, что не могли расшарить мне трое других людей.
А зачем вообще свойства требуются? Почему нельзя просто объявить поле public string name в другом классе и уже с ним оперировать?

25 Ноя, 00:14 #386 #881733

>>881466
А, ты уже ответил. Спасибо.

25 Ноя, 00:49 #387 #881747

>>881639
в WPF окна, не формы.
мне лень заморачиваться и вчитываться откуда и куда ты кидаешь коллекцию, но я заметил, что ты селектед индекс биндишь к свойству, но тут есть 3 проблемы
уа первых: ващпе, для биндинга принято делать класс, который в паттерне MVVM будет выполнять роль ViewModel. в конструкторе окна делаешь DataContext окна объектом этого нового класса-ViewModel. при биндинге xaml'а именно в вроде бы первом назначенном, не равном null, контейнере контрола, на котором обрабатывается текущий биндингDataContext'e ищется свойство, которое ты привязываешь
уа втарых: в классе ViewModel реализуешь интерфейс INotifyPropertyChanged, там всего 1 событие.
у третьих: свойство для биндинга придется делать не автореализуемое, а поле + свойство, + в set {} рекомендуется делать проверку, что новое значение != текущему, ну и вызываешь событие из INotifyPropertyChanged примерно таким образом:
if (PropertyChanged!=null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("propertyName"))

или, если не ебёшь говно мамонта и при этом пишешь на wpf, ну пиздец, а пишешь на C# 6.0 , то одной строкой
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(SelectedIndex)));
у пятых, по дефолту биндинг в режиме OneWay, т.е. когда ты кликнешь на другой элемент три вью, селектединдекс не изменится, чтобы он изменился, нужно уебать режим биндинга (в кзамле) OneWayToSource

Ответы>>881872>>882513

25 Ноя, 12:28 #388 #881872

>>881747
студия для WPF уже достаточно давненько предлагает накатить атрибут, по-моему InvokationTargetName, который подсовывает по-умолчанию значение, аналогичное nameof(InsidePropertyName), что позволяет вызвать ивэнт как PropertyChanged.Invoke(this), что, мне кажется, достаточно крутецкой альтернативой

Ответы>>882513

25 Ноя, 22:06 #389 #882170

Посоны, поясните ньюфане один момент:
Вот есть
Class A
{
int YOBA;
public A (int i)
{
YOBA=i;
}
}

Class B: A
{

}

Выдает ошибку, потому что у класса А нет контсрукторов, принимающих 0 аргументов. Чому так? Как мне тогда унаследовать без стандартного конструктора?

Ответы>>882176

25 Ноя, 22:15 #390 #882176

>>882170
protected A() { }

Ответы>>882177

25 Ноя, 22:17 #391 #882177

>>882176
is inaccessible due to its protection level

Ответы>>882181

25 Ноя, 22:23 #392 #882181

>>882177
http://pastebin.com/bay8WfAt
Почитай про свойства

Ответы>>882184>>882196

25 Ноя, 22:26 #393 #882184

>>882181
А в чем разница между public int YOBA {get; set;} и public int YOBA?

Ответы>>882188

25 Ноя, 22:28 #394 #882188

>>882184
Свойство и поле соответственно.
>Почитай про свойства и поля

Ответы>>882196

25 Ноя, 22:44 #395 #882195

Посоны, а если я передаю в функцию или получаю List, я получаю ссылку на конкретный лист или копию этого самого листа?

Ответы>>882204

25 Ноя, 22:44 #396 #882196

>>882188
>>882181
Спасибо, разобралси.

25 Ноя, 22:50 #397 #882200

>>880753
>подключил Microsoft.AspNet.WebApi.Owin.
Зачем ты это делал? Это же одна из фич новой mvc - объединение mvc и web api (никакого дублирования кода, удобство, полная объдиненные роуты), а ты от этого собственноручно отказываешься. Тебе же на стеке ответили: наследуйся от Controllers.
Может все же стоит документацию глазами пробежать? ;)

Ответы>>882237

25 Ноя, 22:53 #398 #882204

>>882195
Ссылку, ведь это же ссылочный тип

25 Ноя, 23:42 #399 #882237

>>882200
потому, что это объединение также уебищно, как и в старом mvc наличие actionresult. фактически я не могу сконструировать статически типизированное api, имея при этом возможность возвращать statuscode в случае чего стандартными средствами. приходится городить хуй знает што

Ответы>>882296

26 Ноя, 02:51 #400 #882296

>>882237
Но зачем? Если все хорошо - он сам добавит 200, если плохо - ты явно вернешь это (return StatusCode(418);)
Это же тип стандарт. Да и, думаю, если задаться - можно поискать где переопределить так, чтоб не забыдлкодить, няш)

Ответы>>882387

26 Ноя, 03:36 #401 #882316

Котики, скажите вот что, есть класс Корпус, а в него ставится Пилот. Когда вставлется пилот, бафы(бонусы) которые пилот дает переносятся в список бафов корпуса. Каждый раз когда пилот добавляется, добавляются бафы, потом идет пересчет характеристик внутри корпуса. А есть еще оборудования в Корпусе. И тут хуйня, вот добавил пилота, а пилот дает +50 к реактору. А потом навел на подсказу реактора, а там хуй, не пишет что дает +50 реактор. Ибо дает корпус за счет реактора, а не сам реактор. И тут я думаю, что наверное надо кидать бафы в оборудование( типа +50 реактор), а не в корпус. Вроде же совсем просто, но что-то меня тут смущает.

Ответы>>882389

26 Ноя, 05:07 #402 #882324

>>869105 (OP)
Каким способом в C# можно реализовать циклическую очередь? Может ли System.Collections.Queue решить вопрос, или проще вообще юзать указатели. Просто это как-то небезопасно

Ответы>>882385>>882486

26 Ноя, 07:28 #403 #882331

>>877296
>ServiceLocator - который сейчас считается антипаттерном
По мнению одного бородатого пидора, который заебал везде пиарить свою книгу по DI. С объяснениями уровня "generic методы абсолютное зло, их бесконечное число, и вообще нарушают инкапсуляцию". Ну и полным отсутствием понимания что такое антипаттерн вообще (поди и паттерн тоже).

Ответы>>882372>>882487

26 Ноя, 11:38 #404 #882362

Ананасы, а кто как свои веб-приложения деплоит? У нас в компании просто отбитая нахуй политика безопасности и из-за этого невозможно сделать расшаренную папку на веб-серваках куда бы все и деплоилось. Поэтому все деплоится все ретардксим способом: приходится паблишить на локальные компьютер, подключаться по rdp к серверам( а их целых 2) и копировать с локального компьютера в папку с веб-приложениями. Меня это заебало и я просто написал powershell скрипт, который занимается деплоем на самом деле нихуя, начальству и тут что-то блять не нравится в 1 клик на оба сервака. Приложение естественно не в облаке, а на удаленных машинах под виндой. Слышал, что есть от мелкомягких какая-то тулза sync, которая занимается из коробки этим, но так и не понял как она работает. Билд сервер вроде teamcity я думаю просто так хуй мне разрешать поставить. Интересно было бы послушать про ваших стори кто как этим занимается.

Ответы>>882389

26 Ноя, 11:53 #405 #882372

>>882331
Я читал что там возможны проблемы с утечкой памяти, тк servicelocator это синглтон.

Лично мне не нравится что тесты усложняются.
Я не могу закинуть зависимости в конструктор, мне в каждом тесте приходится реализовывать фейковый SerLoc.

26 Ноя, 12:49 #406 #882385

>>882324
нам в универе для этого рекоммендовали делать АТД, у которого 0 и 1 элемент коллекции указывают на начало очереди и количество элементов в очереди соответственно, ну и от этого плясать. у меня вроде даже реализация осталась. если интересно - скину.

26 Ноя, 12:50 #407 #882387

>>882296
ты понимаешь всю уебищность ситуации? у меня API с возвращаемыми объектами типа IActionResult. это может быть ObjectResult(UserDto), FileStreamResult, null, еще какая-нибудь хуйня. а если результат экшена будет тот же UserDto, то я уже никаким боком не втулю StatusCodeResult. конечно, можно пойти тем путем, которым это сделано в старом WebAPI - если нада статус кодэ, бросаемся HttpResponseException(StatusCode.Kek), а фильтры сделают все остальное. и, возможно, было бы неплохо, но я на основе исключений уровня BLL формирую нужные мне статус коды и возвращаемые объекты. посему от такой хуйни как try {} catch {throw new} ушел.

26 Ноя, 12:55 #408 #882389

>>882316
вопрос в чем? когда ты вставляешь что-то куда-то, тебе нужно чекать эффекты, накладываемые вставляемым объектом и прокидывать их выше по уровню. т.е. тебе нужно построить дерево со связями от дочернего элемента к родительскому (либо двусторонний тип связи), ну и дальше все остальное

>>882362
ну тут всякое у меня бывало. от ручного копирования по rdp/ftp (и правки всех конфигурационных файлов, которых было пиздец как), до билд сервера, который менеджит все экварменты, включая продакшн и говнодев. удобнее всего, конечно, пользоваться Deploy опцией с Visual Studio, но это для серъезных проектов обычно не подходит

Ответы>>882455

26 Ноя, 14:27 #409 #882455

>>882389
>вопрос в чем?
Не, брат, выше прокидывать не нужно. Поставил пилота в корпус, накинул баф на оборудование. Вопрос в том что так делать номрально? Сделать публичные методы у оборудования .AddBuff() .RemoveAllBuffs(), или может это проеб архитектуры?

Ответы>>882498

26 Ноя, 15:31 #410 #882486

>>882324
>или проще вообще юзать указатели
Забудь про указатели, почитай про ссылки в c#

26 Ноя, 15:32 #411 #882487

>>882331
Ты хотел сказать по мнению небыдлокодеров

26 Ноя, 15:53 #412 #882498

>>882455
> потом навел на подсказу реактора, а там хуй, не пишет что дает +50 реактор
а тут ты предлагаешь гадать, что и как ты делаешь и что у тебя кому не дает

> Сделать публичные методы у оборудования .AddBuff() .RemoveAllBuffs()
вещь, которая тебе в дальнейшем устроит спагетти в коде. да и вообще такие штуки опасны в публичном доступе. на уровне internal, а лучше всего private в какой-нибудь абстрактной абстракции - идеальное место для этих методов

26 Ноя, 16:16 #413 #882513

>>881662
>>881747
>>881872

INotifyPropertyChanged не помог.
Но я всё-таки понял, в чём был косяк. Нужно было привязать свойство Text комбобокса.

Почитал про INotifyPropertyChanged и появился вопрос:
pastebin.com/2ugnhW0a
Эти записи равноценны? В 1-ом варианте неявно вызывается Invoke или как? Объясните в чём разница

Ответы>>882514>>882531

26 Ноя, 16:17 #414 #882514

>>882513
http://pastebin.com/2ugnhW0a
фикс

26 Ноя, 16:52 #415 #882531

>>882513
дыа.

26 Ноя, 21:56 #416 #882716

Шарпаны, как запускать выполнение хамарина из визуал студио? При запуске эмуль долго думает и в итоге выдает "сбой развертывания".

Ответы>>882763

26 Ноя, 23:23 #417 #882763

>>882716
Попробуй файрвол вырубить.

Ответы>>883249

27 Ноя, 02:44 #418 #882917

Шарпаны, поясниет чего хочет от меня студия.
Есть буквально пара строк кода. Сразу оговорюсь, что код работает. Но студии он ненравится.

var g = Graphics.FromImage("test.bmp");
g.DrawString("test", new Font("Microsoft Sans Serif", 99.9F, FontStyle.Bold, GraphicsUnit.Point), new SolidBrush(Color.White), new Rectangle(0, 100, 200, 200), stringFormat);

Куча предупреждений на эту строку.
вызовите System.IDisposable.Dispose для объекта 'new SolidBrush(Color.White)' перед тем, как все ссылки на него будут вне области видимости

И так для каждого аргумента, для SolidBrush, для Rectangle. Короче для всего что я создаю через new. Ругалось и на stringFormat, но его я создаю отдельной переменной. Добавил строкой ниже stringFormat.Dispose() и на него ругаться перестало. На остальные продолжает. Но я не могу им сделать Dispose.
Я где то хуй или это можно спокойно игнорировать?

Ответы>>882962>>882974

27 Ноя, 09:43 #419 #882962

>>882917
Graphics же IDisposable по-моему?

27 Ноя, 11:18 #420 #882974

>>882917

using(var brush = new SolidBrush(Color.White))
using(var rectangle = new Rectangle(0, 100, 200, 200))
{
g.DrawString("test", new Font("Microsoft Sans Serif", 99.9F, FontStyle.Bold, GraphicsUnit.Point), brush, rectangle, stringFormat);
}

>Я где то хуй или это можно спокойно игнорировать?
По идее метод Dispose вызывается в деструкторе, так что утечки быть не должно. Но это считается плохим тоном - не освобождать неуправляемые ресурсы сразу после использования.

Ответы>>883378

27 Ноя, 21:18 #421 #883249

>>882763
Короче попробовал и в визуале и хамарин студио накатить, что-то не работает нихуя.
Есть где-то нормальный гайд как начать пилить приложухи на андроид?

27 Ноя, 21:46 #422 #883261

Народ, можно ли при помощи linq вынимать элементы из Сыстема.Колехции.Общее.Очередь?

Ответы>>883304

27 Ноя, 22:38 #423 #883304

>>883261
А что мешает взять и попробывать?

Ответы>>883447

28 Ноя, 00:08 #424 #883378

>>882974
в деструкторе вызывается protected void Dispose(bool), если он есть

28 Ноя, 03:30 #425 #883447

>>883304
Я не знаю как создать запрос.
Вот допустим у меня есть очередь A из объектов B. Как мне выдрать объекты где B.rule = 42?

Ответы>>883458

28 Ноя, 04:36 #426 #883458

>>883447
.Where(x => x.rule == 42)

Ответы>>883462

28 Ноя, 06:09 #427 #883462

>>883458
Спасибо, помог.
Вот ещё глупый вопрос, ну я только начинаю.
http://pastebin.com/0WuNjwPE
Вот класс. В нём при запуске кода происходит NullReferenceException хотя я и юзаю
SomeCycleQueue.Cenqueue(penny);
То есть я посылаю объект, он должен копироваться в newcoin. Я хотел попробовать принимать ссылку на объект, там создавать объект Coin конструктором копий по этой ссылке и его уже в enqueue. Но блин, как-то это всё запарено. Должен быть простой метод.

Ответы>>883463

28 Ноя, 06:13 #428 #883463

>>883462
PS: Паста сырая и переменная size не работает как следует. Но мне бы решить проблему с передачей объекта, то фигня.

Ответы>>883464

28 Ноя, 06:30 #429 #883464

>>883463
Двач, сорян за беспокойство. Я просто забыл инициализировать очередь. А ещё, спите ночью а не сычуйте. Умоляю :З

28 Ноя, 11:23 #430 #883530

анон. что значит "Методы работы с базой данных могут возвращать фэйковые данные, цеплять реальную бд не обязательно"?

Ответы>>883534

28 Ноя, 11:44 #431 #883534

>>883530
Блять, ну ты бы хоть контекст подкинул о чем речь. Как я понял разговор про тестирование - когда ты тестируешь что-то и в коде есть метод, который цепляет данные из БД, то тебе не обязательно использовать реализацию этого метода, которая работает напрямую через БД. К примеру у тебя есть интерфейс и реализация интерфейса, которая работает с базой. За место использовния этой реализации ты создаешь мок-объект, который возвращает какие-то данные а какие - ты сам можешь определить в рамках тестирвоания и дальше ими уже оперируешь. Про мок-объект я надеюсь нагуглишь.

Ответы>>883538

28 Ноя, 11:50 #432 #883538

>>883534
я не про тестирование.
задание дали вот такое:
>Прочитать из базы данных массив объектов Animal
>Передать массив в виде модели в представление
>Отобразить данные, используя шаблон
>Методы работы с базой данных могут возвращать фэйковые данные, цеплять реальную бд не обязательно.

в представлении написать форму добавления новой записи, при этом сервер должен вернуть готовый для вставки html(это как блядь?)

Ответы>>883554>>883559>>883753

28 Ноя, 12:30 #433 #883554

>>883538
Ты бы спросил у того кто задание тебе дал, ибо 1-ый и 4-ый пункты противоречат сами себе. По поводу готового html: тут имеется ввиду может быть partial view какой-то, либо можешь сгенерировать читый html на сервере с помощью простой строки, либо t4 шаблона и сохранить эту строку в модель, а во вьюхе вызвать это говно таким образом: @Raw(Model)

Ответы>>883559

28 Ноя, 12:44 #434 #883559

>>883538
>>883554
Дополню: если верить последнему пункту, то ты можешь в принципе создать статический класс какой-нибудь, который будет содержать массив объектов над которыми ты и будешь выполнять CRUD операции - чем не замена работы с БД?

28 Ноя, 18:29 #435 #883753

>>883538
Есть сборник? Я б порешал, а то в голову не лезут задачи на ооп, а в универских методах одна математика

37 Кб, 1476x502

28 Ноя, 19:56 #436 #883793

Вопрос к паттерналистам.

Я придумал такой паттерн (пикрилейтед).
Суть его в том что многие объекты (в реальном приложении - разных классов) могут одновременно использовать общие объекты, имея на них ссылки. Эти используемые объекты (на пикче класса SUBJ) довольно большие в плане занимаемой памяти, поэтому делать клоны этих объектов каждый раз нежелательно из-за того что растет потребление памяти. В то же время эти объекты (типа SUBJ) могут изменяться их владельцами. Из-за того что у них могут быть и другие владельцы, это ведет к тому что у других владельцев фактически происходит подмена данных, чего быть не должно.
Я придумал хранить количество ссылок на объект типа SUBJ при его прикреплении к родительскому (на пикче типа USER) и если объекту USER требуется поменять состояние SUBJ, то:
1. Если число ссылок равно единице, то просто меняем состояние SUBJ.
2. Если число ссылок больше единицы, то клонируем объект, число ссылок в старом уменьшаем, в новом (клоне) увеличиваем и становимся его единственным владельцем, после чего меняем его состояние не боясь затронуть остальных владельцев SUBJ.

Вопрос: как называется этот паттерн? Я помню читал книгу про паттерны, но по-моему не встречал такого. Алсо, интересно есть ли более продуманные реализации данной схемы.

Ответы>>883829

28 Ноя, 20:52 #437 #883829

>>883793
Хуй знает. Я не паттерналист, но мысль вкину. Мне кажется говна тут хлебнуть можно со всем этим количеством ссылок, которые нужно диспозить еще как-то тебе. Не проще ли сделать статический класс, который бы был ответственен за выдачу этих тяжелых объектов (т.е. по-сути делал бы глубокое копирование твоего толстого объекта и возвращал копию). А GC сам бы всю работу делал по утилизации всего этого говна, когда объект user уничтожался бы. Это вообще на паттерн не очень похоже ибо в реализации и поддержке как-то уж геморно получается и слишком специфичная хуйня.

Ответы>>883843

28 Ноя, 21:23 #438 #883843

>>883829
>Мне кажется говна тут хлебнуть можно со всем этим количеством ссылок, которые нужно диспозить еще как-то тебе.
При бросании объекта SUBJ счетчик ссылок у него уменьшается. Но это не обязательно и даже если счетчик ссылок будет выше реального количества ссылок это приведет только к лишнему клонированию, но не к неработоспособности программы. Вести учет ссылок действительно геморно, но в моем случае учитывать присоединение объекта (т.е. увеличение счетчика) (а это самое главное) было легко, а уменьшение счетчика трудно, но последнее не является для меня проблемой, по крайней мере пока.

> Не проще ли сделать статический класс, который бы был ответственен за выдачу этих тяжелых объектов
Это приведет к сильному расходу памяти, что неприемлемо.

Ответы>>883847

28 Ноя, 21:28 #439 #883847

>>883843
А можешь пример какой-то привести, где это можно использовать в реальном приложении? Мне почему-то кажется, что есть вариант получше и ты просто не в ту сторону копаешь.

Ответы>>883853

28 Ноя, 21:38 #440 #883853

>>883847
Так я уже по сути привел всё описание.

- Есть объект SUBJ.
- Его могут использовать разные классы.
- Некоторые из них могут его менять.
- Объект SUBJ очень большой, поэтому лишних клонирований в идеале быть не должно.
- Изменение каким-либо классом объекта SUBJ не должно сказываться на остальных владельцах этого SUBJ (за исключением случаев когда это делается намеренно).

Ответы>>883861

28 Ноя, 21:49 #441 #883861

>>883853
Не-не, ты меня не понял. Я имел ввиду какое-то реальное приложение в котором бы это было задействовано и как бы оно использовалось. И типа что это за приложение: веб / десктоп / мобилки; откуда эти тяжелые данные бы брались и т п. Твою идею я понял, но мне интересно реальный кейс какой-то было бы почитать.

Ответы>>883881

28 Ноя, 22:09 #442 #883881

>>883861
И что это поменяет? Я просто не понимаю смысл. Придумаешь как надо поменять приложение (т.е. ТЗ) чтобы его можно было выполнить проще?

Ну ок.
Приложение десктопное для анализа фин.рядов, что-то типа тестера стратегий.
Объект SUBJ содержит массив баров финансового инструмента и может использоваться для показа на экране в MDI-окне (условно объект класса USER в моих картинках выше, в реальном приложении объект называется Graph, который через цепь объектов в конечном итоге принадлежит MDI-окну) и для прогона по нему стратегии (объект класса Strategy, на картинках я его не показывал, т.к. это сути не поменяло бы) и индикатора (класс Indicator).
График можно:
- Загрузить из файла в MDI-окно.
- Скопировать из одного окна в другое.
- Изменить состояние графика в окне (изменить таймфрейм, удалить часть баров, добавить новые, слить с другим и так далее). Это не должно отразиться на других окнах куда или откуда был скопирован этот график ранее.
- Использовать в качестве входного графика для стратегии или индикатора. Последующее редактирование графика в окне не должно повлиять на график выбранный для стратегии. Для стратегии можно выбрать любой график из любого MDI-окна.

Ответы>>883888

28 Ноя, 22:22 #443 #883888

>>883881
чем-то, чессгря, напоминает микс пула объектов и прототипа. причем, последний - одна из стратегий, инкапсулированная под капотом пула

9 Кб, 268x336

29 Ноя, 09:00 #444 #884091

Суп шарпаны,
выполняю простенькие задания для студентов и немного застрял в реализации (задача номер 5 http://www.itmathrepetitor.ru/prog/zadachi-na-vychisleniya)
В чем именно ошибка? Видимость переменной же должна быть в пределах цикла.

Ответы>>884102>>884125

29 Ноя, 09:34 #445 #884102

>>884091
int i=0,int j=0

Ответы>>884104

10 Кб, 278x355

29 Ноя, 09:37 #446 #884104

>>884102
Niet

Ответы>>884106>>884152

29 Ноя, 09:44 #447 #884106

>>884104
Зачем i два раза. В for() убери его

27 Кб, 613x410

29 Ноя, 10:04 #448 #884112

Vseravno niet
https://dotnetfiddle.net/BZaAvi

Ответы>>884124

29 Ноя, 10:57 #449 #884124

>>884112
using System;

public class Program
{
public static void Main()
{

const int maxi = 4, maxj = 13;
char[,] arrayD = new char[maxi, maxj];
bool flag = true;
for (int i = 0, j = 0; j < maxj; j++)
{
arrayD[i, j] = '*';
if (flag) i++; else i--;
if (flag && i == 3) flag = false;
if (!flag && i == 0) flag = true;
}

for (int i = 0; i < maxi; i++)
{
for (int j = 0; j < maxj; j++)
{
Console.Write(arrayD[i, j]);
}
Console.Write('\n');
}

}

29 Ноя, 10:57 #449 #884124

>>884112
using System;

public class Program
{
public static void Main()
{

const int maxi = 4, maxj = 13;
char[,] arrayD = new char[maxi, maxj];
bool flag = true;
for (int i = 0, j = 0; j < maxj; j++)
{
arrayD[i, j] = '*';
if (flag) i++; else i--;
if (flag && i == 3) flag = false;
if (!flag && i == 0) flag = true;
}

for (int i = 0; i < maxi; i++)
{
for (int j = 0; j < maxj; j++)
{
Console.Write(arrayD[i, j]);
}
Console.Write('\n');
}

}

Показать весь текст

29 Ноя, 10:59 #450 #884125

>>884091
Ошибка была во "flag ? i++ : i--;" - так делать нельзя (хотя жаль что нельзя, да).

Ответы>>884126

29 Ноя, 11:03 #451 #884126

>>884125
Спасибо анончик, понять не мог почему компилятор орал на все подряд, а не на эту строчку.
Кстати, есть ли вариант залить ячейки массива идентичным символом не используя проход по каждой?

Ответы>>884140

29 Ноя, 11:20 #452 #884140

>>884126
>Спасибо анончик, понять не мог почему компилятор орал на все подряд, а не на эту строчку.
Я и сам удивился. Вообще в 90-х такое часто случалось с компиляторами, а сейчас это редкость.

>Кстати, есть ли вариант залить ячейки массива идентичным символом не используя проход по каждой?
По сути нет. Есть функция Array.Clear, но она заполняет нулями и является целой функцией со своим кодом.
Алсо, двухмерные массивы что ты используешь достаточно медленные в своей работе. Если приложение "performance critical" то их лучше не использовать. Впрочем это явно не про студенческие лабы.

Ответы>>884144

29 Ноя, 11:25 #453 #884144

>>884140
Я вроде использую что ни наесть стандартные двумерные прямоугольные массивы. Есть решения, которые позволяют работать с такими данными быстрее?

Ответы>>884145>>884146

29 Ноя, 11:30 #454 #884145

>>884144
jagged-arrays же.

29 Ноя, 11:31 #455 #884146

>>884144
Но если тебе только для лабы, то можешь не заморачиваться. Просто на работе могут сказать чтобы не юзал их.

29 Ноя, 11:32 #456 #884148

А почему зубчатые быстрее? Мне казалость компилятору без разницы как рассчитывать адрес ячейки или тут другая механика? Я просто до этого на Си писал для контроллеров, более менее в программирование умею.

Ответы>>884149

29 Ноя, 11:34 #457 #884149

>>884148
То же не понимаю, ведь они один фиг лежат в памяти подряд строка-за-строкой.

Желательно только ходить по ним последовательно и горизонтально что кэш проца работал.

Ответы>>884157

29 Ноя, 11:46 #458 #884152

>>884104
в for можно описать несколько переменных вот так
>int i,j,k = 0

Ответы>>884153

29 Ноя, 11:49 #459 #884153

>>884152
Niet, только так
>int i = 0,j = 0

29 Ноя, 11:57 #460 #884157

>>884149
>То же не понимаю, ведь они один фиг лежат в памяти подряд строка-за-строкой.
Там это связано с плохой реализацией.

http://stackoverflow.com/questions/597720/what-are-the-differences-between-a-multidimensional-array-and-an-array-of-arrays
>If you write some simple code using jagged and multidimensional arrays and then inspect the compiled assembly with an IL disassembler you will see that the storage and retrieval from jagged (or single dimensional) arrays are simple IL instructions while the same operations for multidimensional arrays are method invocations which are always slower.

Ответы>>884173

29 Ноя, 12:05 #461 #884160

анон подскажи.
из конроллера во вюху передаю list<person>. во вюхе обозначил
>@model list<test.model.person>
данные вывожу через foreach.
но есть проблема.
мне на этой же странице надо добавить форму, которая должна быть написана на шарпе(тобишь html.editfor/labelfor и др.), но т.к. у меня модель - перечисление, то нихуя так не получится?

Ответы>>884168

29 Ноя, 12:26 #462 #884168

>>884160
Просто не юзай строго-типизированные хелперы, а используй обычные html-теги, либо хелперы, которые строки принимают. В чем проблема?

Ответы>>884171

29 Ноя, 12:28 #463 #884171

>>884168
задача состоит именно в этом. я уже ебанулся с этой хуйней. нужно использовать именно хелперы

Ответы>>884172

29 Ноя, 12:35 #464 #884172

>>884171
Ну так я и написал - используй обычные хелперы по-типу @Html.TextBox("Название поля")

12 Кб, 514x56

12 Кб, 530x48

29 Ноя, 12:38 #465 #884173

>>884157
На macOS с CoreClr разница не такая большая - пик1
Все намного хуже, если сравнивать с MONO - пик2

MONO в работе с массивами сейчас рвет CoreClr в ~40 раз

Ответы>>884184

10 Кб, 469x49

29 Ноя, 13:12 #466 #884184

>>884173
Если в MONO увеличить кол-во интераций до 100 (разогреть), то разница увеличивается.

Вообщем хорошо что в ASP.NET редко приходится возиться с массивами чисел.

29 Ноя, 14:27 #467 #884208

Прочитав этот тред, я проиграл так, как не проигрывл очень давно. Нет, я знал что на дуднетах пишут анальные рабы мелкософта, и всё, что связано с дотнет парашей - оплачивается на уровне пхп (а то и ниже).
Но что их уровень настолько низок - не знал.
И уж точно не подозревал, что хамарин "программисты" не слышали про FireBase TestLab. А господа дуднет-рабов из мелкософта понтуются библиотечками для распознавания лиц, и совместимостью с Linux в 2016.
Посмотрев мельком скрины в треде, стало понятно, что в мелкософте есть 2 типа дизайнеров: офисная крыса с кризисом среднего возраста, которая уже лет 10 пьёт чаёк, и молодой любитель лсд, который учится по заветам старшего.

Ладно, дебилы, поссал на вас - и пошёл дальше работать
мимо-джава-господин-150к

Ответы>>884262

29 Ноя, 16:22 #468 #884262

>>884208
> и пошёл дальше работать
>мимо-джава-господин-150к
Ага, пиздуй.

безработобоярин

29 Ноя, 16:38 #469 #884267

>>874018
Учусь на очке, работаю разрабом под .core в Екатеринбурге, подал просто на шару, взяли =)

Ответы>>884268

29 Ноя, 16:49 #470 #884268

>>884267
>.core в Екатеринбурге
Ну и как оно, что делаешь?
Спидом еще на заразился? :3

Ответы>>884269

29 Ноя, 16:53 #471 #884269

>>884268
Хуячим жирное asp.net core приложение, что ж еще)

>Спидом еще на заразился? :3

Через интернет не передается

29 Ноя, 17:28 #472 #884287

Помогите решить, что лучше установить на свежеустановленную винду - 2017 студию, или пока всё же 2015? Кто-нибудь может вангануть, когда релизнут её?

Ответы>>884289

29 Ноя, 17:30 #473 #884289

>>884287
Установи обе версии - в чем проблема? 2017 сгодится как песочница какая-нибудь, где поиграться можно. А в 2015 можешь что-то писать / открыть другие проекты у которых будут проблемы с совместимостью из под 2017 студии.

Ответы>>884291

29 Ноя, 17:32 #474 #884291

>>884289
А так можно?

Ответы>>884301

29 Ноя, 17:52 #475 #884301

>>884291
Спроси у мамки, если разрешит, то можно.
да, студии уже давненько независимо друг от друга устанавливаются и друг другу не мешают

29 Ноя, 19:06 #476 #884351

Аноны, подскажите такую штуку.
Есть класс с двумя функциями, назовем скажем Foo() и Bar()
Функцию Foo() вызываю я сам, функцию Bar() вызывает другой элемент фреймворка, в неизвестный момент времени после вызова метода Foo(). Вопрос: Как мне, фп-way, передать некое значение из метода Bar() в точку вызова метода Foo()?
Если кому-то интересно - язык C#, платформа Xamarin.Android
Исходники - http://pastebin.com/NLuNXA6c если убрать все лишнее

Ответы>>884356

29 Ноя, 19:19 #477 #884356

>>884351
Самое простое это сохранить в приватное поле

Ответы>>884372

29 Ноя, 19:32 #478 #884372

>>884356
Не функционально получается.

Ответы>>884429

29 Ноя, 20:29 #479 #884429

>>884372
Ну а как ты сейчас определяешь что OnActivityResult вызвался и нужно вызвать Login?

Ответы>>884636

29 Ноя, 23:58 #480 #884636

>>884429
Login вызывается до OnActivityResult

Ответы>>884675

99 Кб, 839x688

30 Ноя, 01:01 #481 #884675

>>884636
OK, раз методы вызываются в разное время тут без промисов не обойтись.
Я бы заюзал Task + TaskCompletionSource

Еще что бы не забивать активити лишним кодом, вынес бы логику в отдельный класс PromiseFactory
и положил бы в какую-нибудь папочку типа Utils или Common

Ответы>>884687>>884689>>884985>>884986>>885202

30 Ноя, 01:40 #482 #884687

>>884675
Кстати, там можно сделать чуть проще.
Заменив
readonly List<TaskCompletionSource<T>> sources = new List<TaskCompletionSource<T>>();
на event Action<T> notify;

Ответы>>884979

30 Ноя, 01:54 #483 #884689

>>884675
Fira Code?

Ответы>>884847

30 Ноя, 03:20 #484 #884702

Сишарпач, расскажи каким DI контейнером пользуешься. Каким пользовался. Плюсы и минусы того или иного контейнера, так сказать из личного опыта. Что можете посоветовать?

Ответы>>884705>>884780

30 Ноя, 03:32 #485 #884705

>>884702
Никакими и всегда их на хую вертел. Не понимаю нахуя они и какой от них профит, кроме гемора.

30 Ноя, 09:28 #486 #884768

Пытаюсь вкатиться в дотнет (asp mvc), смотрю курсы, считаю книги. Очень не хватает самостоятельной практики, отсюда и вопрос: а с чего начать ? Можете подсказать сайты с задачами/лабами ?

Ответы>>884773

30 Ноя, 09:35 #487 #884773

>>884768
Я тоже вкатываюсь, только мне больше интересен десктоп. Пока, чтобы набить руку, решаю элементарнейшие задачи для студентиков - уже нашел нашёл множество моментов, которые были не так очевидны. Если у тебя с этим (базой) проблем нету, то просто начни делать сайты, в чем проблема? Сейчас популярны всякие интернеты вещей. прикрути прослойку между, например, народмоном и телеграммом. Двач имеет апи, сделай сайт которой этот апи бы использовал. Исходить нужно не из выучу язык -> придумаю задачу, а наоборот - вижу задачу, использую язык для ее решения.

Ответы>>884776

30 Ноя, 09:40 #488 #884776

>>884773
где задачи для студентиков берешь братюнь?

Ответы>>884781

30 Ноя, 09:43 #489 #884780

>>884702
Ninject - медленный
Spring.NET - еще более медленный
Unity - не сказать, что пользовался. так, на проекте был, мне не мешал, сам никуда не лез. ничего особенного сказать не могу
Structuremap - последние версии, которыми я пользовался, имели просто охуительный эффект, связанный с уровнем доверия к сборкам, т.к. использовал рефлексию во всех загруженных сборках при старке. и посему приходилось там, где не надо, явно указывать подобные секьюрити вещи, что, мягко говоря, печально подходит к сереезным приложениям. надо отдать должное, самый негемморный (если не считать вышеописанного) при встраивании в многослойные аппликухи (ну как по мне). параллельный отряд товарищей работал с ним на супир-пупир-большом приложении, им ничего не мешало. возможно, дело во мне
ServiseStack - ничего особенного
Microsoft.DependencyInjection - я уже бугуртил где-то выше по поводу него. ну так-то, в целом, резолв делает. что еще от него надо?

Ответы>>884848>>884864>>885175

30 Ноя, 09:44 #490 #884781

>>884776
Тереблю вот этот список https://tproger.ru/digest/competitive-programming-practice/
Особенно понравился вот этот сайт http://www.itmathrepetitor.ru/zadachi-po-programmirovaniyu/ - полный набор: арифметика, классы, гуи, многопоточность и прочее и прочее.

30 Ноя, 10:38 #491 #884813

Начал недавно пилить сайты на MVC, это нормально что загрузка без отладки идет по 2-3 минуты ?
Железо core i5, 8gb ram 250 ssd.

Ответы>>884816

30 Ноя, 10:48 #492 #884816

>>884813
а если с отладкой, есть что-то подозрительное в диагностических сообщениях?

Ответы>>884820>>885005

30 Ноя, 10:53 #493 #884820

>>884816
Например что?

Ответы>>884834

30 Ноя, 11:23 #494 #884834

>>884820
например ты увидишь, какой из шагов выполняется долго и вообще, что происходит в момент запуска приложения (возможно не нужного на этапе запуска)

30 Ноя, 11:59 #495 #884847

>>884689
Hasklig
У фиракода буквы как-то непривычно расположены/spoiler]

30 Ноя, 12:01 #496 #884848

>>884780
Autofac ?

Ответы>>884850>>885004

30 Ноя, 12:04 #497 #884850

>>884848
не юзал и не стремлюсь особо

Ответы>>884860

30 Ноя, 12:25 #498 #884860

>>884850
В отличие от того ninject - он активно пилится и поддерживает .netstandard

Ответы>>884871

30 Ноя, 12:27 #499 #884864

>>884780
SimpleInjector пробовал? У меня на предыдущем месте работы его активно использвали. По скорости к сожалению не могу сказать в сревнении с остальными контейнерами, но настраивать и использовать удобно.

Ответы>>884870>>884871>>885175

30 Ноя, 12:30 #500 #884870

>>884864

В одной из больших таблиц сравнения контейнеров simpleinjector ебет всех по скорости кроме ручного new конечно же

Ответы>>884871

30 Ноя, 12:31 #501 #884871

>>884860
я активно защищаю ninject иль ты просто к слову?
не только autofac пытается поддерживать ~core, в отличии от того же всего остального

>>884864
глянув на статистику https://github.com/danielpalme/IocPerformance, решил DryIoc заюзать. но потом все плюнул и вернулся к дефолтному Microsoft.DependencyInjection посчитав, что на данном этапе бОльшим геморроем является его настройка, а профит, возможно, не так уж и заметен

>>884870
не всех

30 Ноя, 12:49 #502 #884876

Шарпаны, вчерашний нюфаня снова врывается в тред. Продолжаю решать студентческие задачи и упёрся в ограничение C# на изменение строк.
Коротко задача: обнулить в числе каждое вторую цифру:
>45678 -> 40608.
Какими средствами лучше всего будет воспользоваться для такой задачи?

Ответы>>884878>>884931

30 Ноя, 12:55 #503 #884878

>>884876
средствами языка c#
ты чуть что сюда бежишь или хоть немного пытаешься подумать?

Ответы>>884880

30 Ноя, 13:03 #504 #884880

>>884878
У меня в голове как минимум 2 решения: StringBuilder и конвертация в промежуточный числовой массив, но мне они кажутся слишком монструозными. Мб есть какое-то более оптимальное решение?

Ответы>>884882>>884903>>884928

30 Ноя, 13:05 #505 #884882

>>884880
а что в StringBuilder тебе кажется монструозным? не, ну смотря, что ты собираешься сделать, конечно. но с его помощью все решение упрется в один цикл и даже без ифа

30 Ноя, 13:39 #506 #884903

>>884880
string s = Console.ReadLine();
s.ToCharArray
Дальше пробегаешься и заменяешь пробелами, потом каким-нибудь Split или что там убираешь пробелы.

Ответы>>885512

30 Ноя, 14:06 #507 #884928

>>884880
Можно изменить саму строку через unsafe-код. Но если она используется в другом месте, то это может привести к багам.

30 Ноя, 14:12 #508 #884931

>>884876
>Какими средствами лучше всего будет воспользоваться
new Regex("(\\d)\\d").Replace(... дальше сам

Ответы>>885512

30 Ноя, 14:57 #509 #884979

>>884687
Можно тут подробнее?

30 Ноя, 15:00 #510 #884985

>>884675
А расскажите про промиссы, плз

Ответы>>885015

30 Ноя, 15:01 #511 #884986

>>884675
А расскажите про промиссы, плз

sage 30 Ноя, 15:13 #512 #885004

>>884848
заебись DI, и поддержка на PCL годная и core

30 Ноя, 15:13 #513 #885005

>>884816
Какие такие диагностические сообщения?

Ответы>>885014

30 Ноя, 15:25 #514 #885014

>>885005
Output -> Debug

Ответы>>885193

46 Кб, 543x439

30 Ноя, 15:25 #515 #885015

>>884985
пик (заменили List<T> проста на C# event)
>>884985
>А расскажите про промиссы, плз
Это когда вместо результата ты возвращаешь "обещание когда-нибудь верунуть результат"
В комбинирование с await позволяет писать линейный простой код.
https://ru.wikipedia.org/wiki/Futures_and_promises

Ответы>>885200

30 Ноя, 19:00 #516 #885175

>>884780
>>884864
Спасибо.
Что-то можете сказать о Castle.Windsor?

Ответы>>885178

30 Ноя, 19:11 #517 #885178

>>885175
не более того, что ты сам можешь найти

30 Ноя, 19:47 #518 #885193

>>885014
>Output -> Debug
Какой output?
Если ты говоришь про обычный f5, то какие сообщения, никогда не было

Ответы>>885220

30 Ноя, 20:02 #519 #885200

>>885015
Неплохо, хотя первый вариант понравился больше. Где подсмотрел такую годноту (про первый вариант тоже)?

30 Ноя, 20:08 #520 #885202

>>884675
Но это же все равно не очень фп получается

Ответы>>885256

30 Ноя, 20:35 #521 #885220

>>885193
есть такая вещь как модальное окно Output в Visual Studio
когда билдишь приложение, например, тебе в него пишут всякую хуйню типа 1> Projectname start task compile. так вот, там есть дропдаун, в котором можно выбрать Debug

Ответы>>885278

30 Ноя, 21:31 #522 #885256

>>885202
Не бывает 100% программ даже когда пишешь на Clojure, а мы тут вообще говорим про OOP язык C#.

Функциональным должно быть ядро / биз.логика, а инфраструктура может быть любой.

30 Ноя, 22:21 #523 #885278

>>885220
Круто, что полезного через него можно выудить?

Ответы>>885292

30 Ноя, 22:47 #524 #885292

>>885278
ну вот попробуй посмотреть

Ответы>>885383

01 Дек, 01:43 #525 #885383

>>885292
Че грубишь? Я посмотрел, мало что полезного, вот и спрашиваю: может в каких-то особых кейсах, или может я не знаю каких-то инсайдов

01 Дек, 06:29 #526 #885512

>>884903
>>884931
Спасибо анончики, самое оно что требовалось.

01 Дек, 19:20 #527 #885846

кому нибудь доводилось ковырять вот этого пацана ↓
[DllImport("kernel32.dll", SetLastError =true)]
static extern int VirtualQueryEx(IntPtr hProcess, IntPtr lpAddress, out MEMORY_BASIC_INFORMATION lpBuffer, uint dwLength);
через p/invoke?
что делать, если при вызове функции для произвольного уже работающего процесса появляется исключение: Access Denied?
на msdn'е грят, что у процесса должен быть какой то enum стоять в ACCESS_ALL_ALLOWED, который воткнуть, похоже, можно только при создании, и что тогда делать с уже работающими процессами?
алсо, при вызове функции скармливаю ей следующие параметры:
VirtualQueryEx(theProcess.Handle, new IntPtr(), out MBI, Marshal.Sizeof(typeof(MEMORY_BASIC_INFORMATION)));
где theProcess - процесс, MBI - экземпляр структуры MEMORY_BASIC_INFORMATION, описанной в соответствии с "ГОСТом" или как это блять правильно назвать, стандартом с++-функции?

Ответы>>885855

01 Дек, 19:44 #528 #885855

>>885846
ну тут поц пытается нотэпад просканировать этим методом: https://www.codeproject.com/articles/716227/csharp-how-to-scan-a-process-memory. подсмотри различия чтоли

Ответы>>885861>>885883

01 Дек, 19:56 #529 #885861

>>885855
а вот тут ньюанс, у меня нормально считывает инфу с хрома и ноутпада. думаю, есть еще какие нибудь процессы, о которых можно получить эту инфу, но я пока что не понял, по какому признаку различать такие процессы, и мне не нужно, чтобы такой признак вообще был. я хочу получить memory basic information любого процесса, но за ссылку посмотрю, мб найду что нибудь нового

Ответы>>885876

01 Дек, 20:24 #530 #885876

>>885861
Ты эту поебень читал?
https://msdn.microsoft.com/en-us/library/windows/desktop/aa366907(v=vs.85).aspx

Ответы>>885883

01 Дек, 20:30 #531 #885883

>>885876
да у меня уже заработало. как оказалось, у процесса из System.Diagnostics некошерно брать дескриптор, нужно, блять, через другую pinvoke функцию (см статью вот этого анона >>885855
, спасибо кстати) взять хэндл интересующего процесса, и только потом искать MSI, ну и я структуру MEMORY_SYSTEM_INFO заколхозил, теперь она отличается от каноничной - всё, что не указатель - long. хуйня эти ваши инвоуки, вообщем потому что от них у меня горит очаг.

02 Дек, 03:07 #532 #886063

Дорогие сосцы мойкрософта, запрашиваю ваш ответ.
Я хочу податься в веб(студентота), как у вас с этим дела?
PHP - язык нелюдей и опущенцев.
Python - язык хипстеров с подворотами.
Ruby - нет работ.
А что касательно связок Asp.net/typescript? Можно ли найти работу разбираясь с этой области? Или лучше таки PHP? Я слышал что он отмирает в угоду node.js, но всё ж таки? js очень уж нелогичный язык, мне неприятно на нем писать. А C# очень нравится, был бы рад приобщиться, но нужна сводка по работам. Живу в мухосранске и если у нас что-то есть - то только по php, так что ориентир на фриланс.

Ответы>>886137

02 Дек, 09:27 #533 #886137

>>886063
> ruby - нет работ
сирисли?

> ориентир на фриланс
на фрилансе, насколько я знаю, тоже доминирует рнр и питоны всякие. ну, руби точно есть, насчет asp здешние товарищи убеждали, что работы хватает, но я не встречал прям большого выбора (потомушто не искал)

23 Кб, 1276x763

02 Дек, 18:38 #534 #886457

Анон, дали курсовой по .net сделать интернет магазин.
Cтэк:
N-tier
asp MVC
autofac
EF CodeFirst

Должно быть 4 слоя:
1) Репозиторий (Абстрагирует от типа БД)?
2) Домен (Хранит сущности с помощью которых заполняется БД по средствам EFCF??)
3) Сервисы (Реализация интерфейсов репозитория??)
4) MVC(Это просто UI? БизЛог в отдельном проекте?)
Помоги пожалуйста, я все правильно понимаю или нет?
Буду искренне благодарен!

Ответы>>886476>>886488

02 Дек, 19:32 #535 #886476

>>886457
это ты начертил мегасхемку? если нет, то даже не знаю, что это значит

mvc - слой, реагирующий на действия пользователя. тут же происходит валидация инпутов, правильное составление ответа юзеру
сервисы - и есть твоя бизнес-логика
домен - можно сказать, это набор комплексных операций с моделью/моделями
репозиторий - круд, отвязанный от конкретной базы данных

Ответы>>888285

02 Дек, 20:01 #536 #886488

>>886457
И это блять курсовая? Ебануться, у меня диплом и того меньше.

02 Дек, 22:24 #537 #886576

Анон, недавно портировал один проект под net45 под netcoreapp1.0, чтобы он работал в CoreCLR на дебиане. Перенёс всё это заставив проект импортировать библиотеки под dnxcore50 и ещё portable-net45+win8+wpa81. Поэтому появился вопрос. Есть одна библиотека https://www.nuget.org/packages/NAudio/ . Собирается под net35 и win8. Можно ли её будет каким-то образом использовать, чтобы всё работало и на дебиане?
Поясни, пожалуйста, за платформо-совместимость или ссылкой, чтобы это было поподробнее расписано.

03 Дек, 16:48 #538 #887026

Что почитать про юнит тесты, чтобы научиться их писать? Много раз слышал, но сам не пользовался.

Ответы>>887034>>888113

03 Дек, 16:59 #539 #887034

>>887026
любой говногайд в интернетах типа "как песать тесты на сешарп анлайн учебник"

03 Дек, 17:02 #540 #887039

>>869105 (OP)
Шарящие анонычи, подскажите. Работаю сейчас в C# с Windows Forms под Visual Studio 2012. Проблема такая, есть 2 одинаковых набора всяких объектов интерфейса (надписи, групбоксы с радио-кнопками, просто кнопки), хочу их загнать в какую-то структурку, чтобы не дублировать один и тот же код с разными названиями кнопочек.
Типа есть
group1Btn1.Visible = false;
...
group2Btn1.Visible = false;

А хочу чтобы было примерно
group = group1;
group.Btn1.Visible = false;
...

Главный вопрос: как можно автоматизировать весь этот процесс замены первого варианта на второй? Или мб есть еще какие-то иные варианты для решения проблемы?

Ответы>>887072

03 Дек, 17:51 #541 #887069

Создайте новый тред, еле этот нашел на дне.

03 Дек, 17:54 #542 #887072

>>887039
выделяешь интерфейс -> инкапсулируешь поведение конкретных контролов

03 Дек, 18:35 #543 #887102

PEREKOT
https://2ch.hk/pr/res/887100.html (М)
https://2ch.hk/pr/res/887100.html (М)

05 Дек, 00:20 #544 #888113

>>887026
Просто про юниттесты - книга 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 жизнь не мила.

сори за неровный почерк, пишу с чучелки

05 Дек, 11:29 #545 #888285

>>886476
Да, я рисовал. Спасибо большое!

Тред утонул или удален.
Это копия, сохраненная 17 декабря 2016 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion