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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
591 Кб, 3300x2550
OFFICIAL C# THREAD №14 #570067 В конец треда | Веб
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.
ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.

Скачать VS2015: https://www.visualstudio.com/en-us/products/vs-2015-product-editions.aspx
Community версии будет достаточно в большинстве случаев: она поддерживает и C#, C++, VB.NET и F#, а так же имеет возможность установки дополнений

Что почитать:
- Bart De Smet - C# 5.0 Unleashed
- Joseph Albahari и Ben Albahari - C# 5.0 in a Nutshell (на русском: C# 5.0, Справочник. Полное описание языка)
- Pro C# 5.0 and the .NET 4.5 Framework (Andrew Troelsen)
- Jon Skeet - C# in Depth (на русском: C# для профессионалов. Тонкости программирования)
- Jeffrey Richter - CLR via C# (на русском: Программирование на платформе Microsoft .NET Framework 4.5 на языке C#)
- Writing High Performance .NET Code (Ben Watson)
- Pro WPF 4.5 in C# (Matthew MacDonald)
- Windows Presentation Foundation 4.5 Cookbook (Pavel Yosifovich)

Что посмотреть:
- Programming with C# - https://www.edx.org/course/programming-c-microsoft-dev204x-0
- Beginning Game Programming with C# - https://www.coursera.org/course/gameprogramming
- C# Fundamentals: Development for Absolute Beginners - https://goo.gl/meyyxO
- https://nnm-club.me/forum/viewtopic.php?t=891636 - коллекция видеоуроков, по всему дотнетовскому.

Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/

Онлайн-компиляторы:
- http://ideone.com/
- https://dotnetfiddle.net/
- http://csstub.com
- http://www.tutorialspoint.com/compile_csharp_online.php

FAQ
Q: Что с IDE для других систем?
A: Самый юзабельный вариант - MonoDevelop ( http://www.monodevelop.com/download/ )
Для vim можно использовать OmniSharp ( https://github.com/OmniSharp/omnisharp-vim )
VS Code ( https://www.visualstudio.com/en-us/products/code-vs.aspx )
Также существуют плагины для Atom'а и Sublime Text, но функциональность там достаточно сильно урезана.
SharpDevelop - еще одна IDE для C#, отличается малым размером (около 20мб) и опциональной портабельностью, при этом имея дизайнер WinForms и WPF, а также интеграцию с FxCop, StyleCop и прочими.
Q: Пригоден для C# для мобильной разработки?
A: Да, можно выбрать в окне выбора компонентов студии при установке VS

Дополнительные инструменты для разработки на C#
LINQPad - сорт оф REPL, с возможностью быстрого подключения к БД и удобной визуализацией данных
dnSpy - декомпилятор, малоизвестный форк ILSpy, где реализована возможность модификации IL-кода прямо в EXE и DLL файлах, отладка IL-кода и много других фич для reverse engineering'а. Плюс няшные темы как в студии
dotPeek - бесплатный декомпилятор от JetBrains
scriptcs - для запуска C# кода как скриптов, возможность использовать как REPL

Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности C# 6.0: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6

Код этой шапки: http://pastebin.com/mUAJ6Ugz

Прошлый тред сагается обиженными детьми здесь: https://2ch.hk/pr/res/563725.html
#2 #570136
>>570132
А чому у тебя так горит с шарпа-то, уебок?))))
#3 #570154
Нахуя его вайпать, если он и без того никогда не висит на нулевой?
#4 #570183
>>570147

>не горит


>тратит время, чтобы вайпать тред


Пиздунишка.
#5 #570193

>2015


>вайп вручную

#6 #570263
>>570183
Вот еблан. Ты думаешь вручную вайпается?
#7 #570277
>>570263
Я знаю, чем это делается.
Но ты же не просто по фану вайпаешь тред, уйдя пить чаёк, ты следишь за его перекатами, отвечаешь мне - именно что проебываешь своё время.
Вангую в тебе баттхертнутого безработного/студентика/свидетеля опенсорса и швабодки, ибо представить адекватного человека, который бы стал проебывать свободное от трудовой деятельности время я не могу.
Можешь верещать что угодно в ответ, мне похуй, я выводы сделал, омежка ты обоссаный)))))
#8 #570279
Что-то этот недовайп скрывается поразительно легко. Вообще не стараешься?
#9 #570285
>>570279
Так он же мамкин воен с дотнетом, который не нужен. А на деле даже на доширак себе заработать не может и завидует черной завистью успешным крудошлёпам на asp.net за 3к $ в месяц :)
#10 #570288
Поясните за основные сферы деятельности в шарпе. То есть какие обычно ставятся задачи перед шарпистом.
#11 #570297
>>570288
Жрать говно.
>>570279
Ладно, сейчас поем и если спать не лягу то поправлю.
#12 #570301
>>570297

>Жрать говно


>сейчас поем


Приятного аппетита.
#13 #570304
>>570301
Подловил, какой находчивый. Сделаю вид что ты мне просто так пожелал приятного аппетита и продолжу наворачивать пельмешки.
57 Кб, 450x360
#14 #570316

>жрать пельмешки


>между просмотром мультиков


Просто хуже червя-пидора.
#15 #570320
>>570316
Ну и чего в этом плохого? Всяко лучше чем использовать сисярп и .НЕТ
#16 #570323
>>570288
бамп вопросу
#17 #570329
>>570288
Разработка энтырпрайза под десктопы. Хули, только дон тен нормально поддерживает десктоп на винде.
#18 #570331
>>570329
А в чем отличия от джавы тогда? Кроме того, что сишарп анально под винду. Я не толщу, просто ньюфаг.
#19 #570337
>>570331
Я тебе только что объяснил, десктоп под винду. На джаве писать гуишные приложения — боль. Паттерн мввм реализуется через жопу. А си шарп берёшь и хуячишь на одной платформе всё. ВЦФ тоже удобен, в целом на сишарпе гораздо легче писать, чем на джаве. Если хочешь знать различия на более низком уровне, то тебе в соответствующие статьи, там тебе каждую мелочь объяснят.
#20 #570338
>>570337

Окей, я понял. Спасибо.
#21 #570339
>>570320
Ты, кажется, не понимаешь, что язык - это просто инструмент и каждый язык нужно применять сообразно задачам. Дотнет был запилен для быстрого написания корпоративного говна и вполне хорошо себя показывает там, тем более что лучше всех остальных. Написание программ на нём дает мне неплохие деньги, выше чем у других программистов (кроме javaребят) и все пищущие для микроконтроллеров за еду/швидители швабодки давятся от озвученной суммы заработка и начинают что-то там верещать.

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

>ДРЕЛЬ - ГАВНО, А ВОТ МОЛОТОК - ЗАЕБИСЬ РЯЯЯ


В общем, смотри свои бурятские мультики под пельмешки дальше, пока дяди зарабатывают деньги, дружок.
#22 #570355
>>570339
Но ведь для сисярп/жабы нет подходящих задач. А твои мантры я уже слышал тысячу раз про инструмент под задачу.
174 Кб, 900x599
#23 #570356
>>570288
>>570329
Не слушай его, он лжет.
Дотнет изучают ради комбы ASP.NET + WCF. Большинство вакансий этой теме посвящены.

Десктоп разработки в разы меньше и она сосредоточена где-то в другом месте.

Пишу из-за мкада.
#24 #570360
>>570355
Чего тебе нужно?
Окей, мы идиоты, изучающие платформу, которая бесполезна и не востребована. Можешь считать, что у нас такое странное хобби.
Какое тебе дело? Наши вкусы так важны для тебя, что ты будешь тратить время и энергию, чтобы нас переубедить?
#25 #570363
>>570360
Нет же, чтобы послушать оправдания вашей бессмысленно деятельности.
#26 #570364
>>570355

>Но ведь для сисярп/жабы нет подходящих задач


Потому что ты сказал? Просто кек.

>А твои мантры я уже слышал тысячу раз про инструмент под задачу.


И это как-то отменяет их правдивость?

Хотя чего я вообще разговариваю с дауном, все вскукареки которого сводятся к

>оппонент сказал X = Y


>я скажу что X != Y и не приведу ни одного аргумента


#27 #570366
>>570363

>бессмысленно деятельности.


Ну, во-первых, мы этим зарабатываем себе на весьма небедную жизнь, в отличие от маминого борщехлеба.
А во-вторых... впрочем, на этом и закончим.
#28 #570367
>>570356
А теперь быстренько пояснил мне в каких сферах ты используешь вцф? Также хотелось бы услышать как там поживает асп.нет? С седьмой беты до восьмой ты обновлялся? Заебись?
#29 #570373
>>570364
>>570366
Ребят, не кормите.

>>570367
Я не работаю, я еще маленький. Вакансии просматриваю время от времени. Везде ASP+WCF. Вакансию на десктоп не встречал ни разу за несколько лет. Кое-где указывают WPF в списке требований, где-то двадцатой позицией в списке. Город-милионник.
39 Кб, 720x435
#30 #570376
69 Кб, 524x604
#31 #570377
Анчоусы, как думаете, где будет дотнет через год-два?
Ухожу в армию и боюсь, что мне придется чуть ли не переучиваться полностью по возвращению из неё.
46 Кб, 576x485
#32 #570380
>>570377
Тут даже два анона всё время службы провели в учебке.
#33 #570381
>>570377
Да ты и шарп не вспомнишь через год без компьютера.
#34 #570387
1. На дотнет делают Андроид и иОс приложения? Или это плохо работающие возможности, которые лучше не использовать?
2. Почему поддержки МакОс нету? Это намеренные действия МС, чтобы конкурентную ОС не поддерживать?
#35 #570400
>>570377
Да ничего кардинально не изменится за 1 год. Вон asp.net 5 планируют релизуть только в первом квартале 2016. Пока его обкатают, пока народ переучится, пока проекты новые пойдут, глядишь только в 17-18 годам на него пересядут, если пересядут вообще.
https://github.com/aspnet/Home/wiki/Roadmap

В прочем вебе тоже ничего не поменяется. Сейчас попиливают не спеша функционал es6. Пока допилят, пока старые браузеры с поддержки снимут.
http://kangax.github.io/compat-table/es6/
Ангуляр новый, например, пилят чисто под новые спеки и хуй знает когда его допилят и использовать будут. Кто может уже пилит на нем и под новые спеки, пользуясь каким-нибудь транспайлером, типа бейбл. Даже не хочу в этот хипстерский фронтенд лезть.

Что там мс с десктопом делает для меня вообще загадка. Какие-то, блеать, приложения для вин8, приложения для вин10, хуйня какая-то. WPF никуда уже не денется, отомрет вместе с дестопом разве что.

За мобильные приложения особо не скажу, ибо никогда не писал, но на последней презентации мс хвастались разработкой кроссплатформенных мобильных приложений. Xamarin все дела. Может выстрелит и все начнут писать говноприложения под андроид на дотнете.

Вообще, мс начал двигаться в сторону кроссплатформенности. Запилили переносимое ядро coreclr. Написали рантайм поверх рантайма и радуются. В отдаленной перспективе будем писать один раз и дебажить на всех платформах.
http://docs.asp.net/en/latest/dnx/overview.html
#36 #570403
>>570400
Я вот думаю, будет ли также везде через год-два Jquery+Ajax?
#37 #570405
>>570288
Все, что угодно. Можно писать серверные приложения без какого-либо UI. Можно писать движки баз данных (RavenDB). Можно поддерживать говно на винформах. Можно писать десктопные приложения на винформах и впф. Можно веб на асп.нет мвц. Можно еще REST сервисы хуярить, только они не нужны.
#38 #570406
>>570403
Как пить дать.
#40 #570433
>>570429
Привет, пошёл нахуй!
#41 #570434
Зойчем прошлый тред завайпали?
49 Кб, 427x700
#42 #570445
Антоны, хелп. Как переопределить Equals так, чтобы можно было определять, что например два падика одинаковые, если ссылаются на один дом? (т.е сравнение по ссылкам)
#43 #570453
>>570445
ReferenceEquals сравнивает ссылки вопрос не читал
#44 #570456
>>570288
Можно устроиться в Майкрософт и писать Бинг, он на шарпе.
#45 #570473
Суп, аноны. Посоветуйте, куда пойти получать опыт работы (живу в ДС), шарп учил соло, осознал шилда, мартина и банду 4х. Сам студота, медвуз, кибернетик, 4 курс.
#47 #570481
>>570434
Потому что я так захотел. Сейчас и этот завайпаю, только переделаю вайпалку чуток чтоб вы куклой не могли скрывать.
#48 #570483
Лень гуглить, спрошу здесь. Как объявить несколько массивов?
double [] a, b, c;
или
double [] a, []b, []c;
#49 #570486
>>570483

>Лень гуглить, спрошу здесь


А я тебя пошлю нахуй, окей?
#50 #570487
>>570481

>Делает вид, что не вводил капчу руками в течение часа как даун.

#51 #570488
>>570484
Семен не палится.
#52 #570490
>>570488

>эт всё симён мам я не обосрался)))


Пододрись хоть.
#53 #570491
>>570488
Не, внезапно это был другой анон.
>>570487
Ну ты и дебил, все это выше постилось одной строчкой на bash. Но сейчас нормально сделаю. И чтоб куклой не скрывалось.
#54 #570492
>>570486
Справедливо, хз зачем я в тред написал. За 10 секунд в студии можно убедиться, что второй вариант вообще не компилится.
#55 #570508
>>570405

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

inb4: всем похуй
25 Кб, 659x531
20 Кб, 1003x688
#56 #570540
Есть такая копипаста учебного кода
Когда я загружаю страничку все текстбоксы заполнены значениями модели, хоть нигде во View присваивание атрибуту value не делается и в конструкторе там где должно блыть value передается null.
То есть получается указав текстбоксам id, name соответствующие именам свойств модели эти текстбоксы будут автоматически заполняться значениями модели?
#57 #570581
Прошу прощения за вайпера, он у нас дурачок. Но вы в следующий раз жмите жалобу сразу, а то я чисто случайно узнал, лол.
мод-крестоблядь
Раз уж вы перекатились, то я тот тред просто закрою, чтобы двух сразу не висело.
#58 #570583
>>570581

>мод-крестоблядь


Что же ты тогда удалил мой крестовый вайп?
#59 #570585
>>570581

>мод-крестоблядь


Врёти, требую мод-подпись.
#60 #570587
>>570583
Потому что ты дискредитируешь наш язык, хуиная голова. Я не сру в чужих тредах, и ты так делай.
#61 #570592
>>570587
А в своих тредах срать можно?
#62 #570624
Почему HttpClient (да и WebClient) загружает сжатые файлы? Вот к примеру скачал файл, который должен весить 300кб, но после загрузки весит 86к.
http://pastebin.com/M2gDJbnr
#63 #570626
>>570624
Хотя вот попробовал скачать с vk и файл загрузился в обычном объеме.
Ну так как скачать в нормальном объеме файл?
2 Кб, 567x60
#64 #570627
>>570624
Думаю это не проблма хттпклиента или вебклиента, что-то макабовское.
#65 #570628
>>570627
ну это я понял. Теперь вот хочу 304 килобайта получить вместо 86
#66 #570630
>>570628
К сожалению не понимаю чего ты хочешь, т.к. мой хром и фф тоже скачивают 85кб файл.
21 Кб, 445x300
#67 #570647
Так и знал, что подгоревший даун-вайпер - линуксодаун, который не может заработать себе даже на ролтон/мивину.
Ах, мои вангования оказались успешными.
20 Кб, 366x487
#68 #570706
>>570630
В том-то и дело, что мой хром скачивает по 304 килобайта.
Вот и хочу знать, почему так
144 Кб, 658x403
#69 #570710
>>570706
Ну тогда думаю это тебе у разработчиков макабы нужно узнавать.
#70 #570737
>>570067 (OP)
Сап, шарпач. Сейчас упарываюсь созданием простенького редактора картинок\иконок с упором на пиксельарт. Но вот возникла большая проблема: вменяемого примера редактирования картинок с масштабированием пикселей я не нашёл. Всякие извращения типа отрисовки пикселей панелями не в счёт.
Можете посоветовать направление, в котором стоит копать?
27 Кб, 385x365
26 Кб, 386x342
#71 #570759
>>570706
Cloudflare кэширует картинки
#72 #570768
>>570737
https://en.wikipedia.org/wiki/Image_scaling
Вероятно, тебе надо один из алгоритмов прикрутить.

http://www.cambridgeincolour.com/tutorials/image-interpolation.htm
Впрочем, там есть картинка увеличения без интерполяции пикселей. В целях редактирования тебе, наверно, нужно показывать увеличенные оригинальные пиксели, а не их интерполированные вариации.
Можно создать кастомную сетку пикселей поверх холста и кисть, работающую на основе разрешения этой сетки. Каждый квадрат сетки соответствует пикселю исходного изображения. При увеличении масштаба сетка увеличивается и ее ячейки заполняются цветом соответствующего пикселя, аналогично при уменьшении масштаба. При этом масштаб изображения при редактировании не может быть меньше оригинального, чтобы не приходилось смешивать пиксели. Редактирование, соответственно, будет заключаться тупо в заполнении сетки кистью с разрешением клетки.
Хуйня, канешь, какая-то. Надо смотреть как работают аналогичные редакторы пиксельной графики.
#73 #570773
Посоны, начил читать полный справочник C# Герберта Шилдта, все заебись, разбираются примеры, все по ним понятно. Но для закрепления нужна практика - самостоятельно что-то написать. Где можно задачи поискать?
#74 #570778
>>570773
В интернете. Кеп. Можешь глянуть что тут пилят в треде и повторить. Или можешь погуглить базовые алгоритмы и структуры данных cs и реализовать их.
106 Кб, 1200x600
#75 #570858
>>570067 (OP)
Архитекторы, подскажите.

Общий вид задачи: нужны две перегрузки конструктора в обобщенном классе ClassName<T>
1. public ClassName (T)
2. public ClassName (string)

Проблема в том, что если юзер вызовет ClassName (string) при typeof(T)==String, возникнет неопределенность.
Как быть?

Я пока что додумался до следующих вариантов, но все они уродливы.
а) Добавить лишний пустой объект к одному из методов, для предотвращения неопределенности.
public ClassName (T)
public ClassName (object Null, string)

б) Единственный метод. Ненужный параметр отправлять как null (или значение по умолчанию для нессылочных типов). Пользователь класса ни за что не догадается, как им пользоваться.
Method<T>(T, string)

в) Сделать конструктор скрытым. Добавить два статических метода, вызывающих конструктор.
public static ClassName<T> CreateByT (T)
public static ClassName<T> CreateByString (string)

Сам конструктор оформить сигнатурой из варианта б. И молиться, чтобы этот говнокод никто никогда не увидел.

Делаю класс типа Result<T>, который хранит в себе результат операции, либо сообщение об ошибке. Очень не люблю type-unsafe код, поэтому делаю обертки вместо работы с object. Это нормальная практика?

Если что я две недели в C#, так что любым советам рад.
106 Кб, 1200x600
#75 #570858
>>570067 (OP)
Архитекторы, подскажите.

Общий вид задачи: нужны две перегрузки конструктора в обобщенном классе ClassName<T>
1. public ClassName (T)
2. public ClassName (string)

Проблема в том, что если юзер вызовет ClassName (string) при typeof(T)==String, возникнет неопределенность.
Как быть?

Я пока что додумался до следующих вариантов, но все они уродливы.
а) Добавить лишний пустой объект к одному из методов, для предотвращения неопределенности.
public ClassName (T)
public ClassName (object Null, string)

б) Единственный метод. Ненужный параметр отправлять как null (или значение по умолчанию для нессылочных типов). Пользователь класса ни за что не догадается, как им пользоваться.
Method<T>(T, string)

в) Сделать конструктор скрытым. Добавить два статических метода, вызывающих конструктор.
public static ClassName<T> CreateByT (T)
public static ClassName<T> CreateByString (string)

Сам конструктор оформить сигнатурой из варианта б. И молиться, чтобы этот говнокод никто никогда не увидел.

Делаю класс типа Result<T>, который хранит в себе результат операции, либо сообщение об ошибке. Очень не люблю type-unsafe код, поэтому делаю обертки вместо работы с object. Это нормальная практика?

Если что я две недели в C#, так что любым советам рад.
#76 #570887
>>570858
То, что ты под пунктом в) указал, чем тебе не нравится? Нормально все, если тебе нравится, конечно, с result возится.

private Result<T> (T value, bool isValid, string error);

public static Result<T> CreateResult<T>(T value)
{
return new Result<T>(value, true, default(error));
}

public static Result<T> CreateErrorResult(string error)
{
return new Result<T>(default(T), false, error);
}

Result<User> result = service.GetUser(id);
if (!result.IsValid)
{
Console.WriteLine(result.Error);
}
else
{
Console.WriteLine($"{result.Value.Id} - {result.Value.Name}");
}
#77 #570901
>>570887
Но, вообще, лучше в таком случае кидать ексепшоны, ибо что-то нехорошое у тебя в методе произошло и он ошибку выдал. Если тебе надо валидацию произвести, то это отдельная тема и там только сообщение о невалидных значениях нужно:

IEnumerable<ValidationResult> valResults = Validate(user);
if (valResults.Any())
{
valResults.ForEach(Console.WriteLine);
}
else
{
service.UpdateUser(user);
}
#78 #570912
>>570887

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


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

>если тебе нравится, конечно, с result возится.


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

При обоих подходах каждая содержательная строка кода превращается в пять. И код становится нечитаемым. Печалька.
#79 #570924
>>570912
Ну, это проблемка, да.

Если у тебя много участков кода такого содержания:
try
{
service.Update(user);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}

То ты можешь вынести это в отдельный метод:

public static void SafeRun(Action action)
{
try
{
action();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}

и использовать уже его:
SaveRun(() => service.Update(user));

или подцепить aop фреймворк и заюзать аспект с логированием ексепшенов:

[LogExceptions]
public void MthodName()
{
....
service.Update(user);
....
}

Вариантов по скрытию бойлерплейта, в принципе, масса.
#79 #570924
>>570912
Ну, это проблемка, да.

Если у тебя много участков кода такого содержания:
try
{
service.Update(user);
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}

То ты можешь вынести это в отдельный метод:

public static void SafeRun(Action action)
{
try
{
action();
}
catch(Exception e)
{
Console.WriteLine(e.Message);
}
}

и использовать уже его:
SaveRun(() => service.Update(user));

или подцепить aop фреймворк и заюзать аспект с логированием ексепшенов:

[LogExceptions]
public void MthodName()
{
....
service.Update(user);
....
}

Вариантов по скрытию бойлерплейта, в принципе, масса.
#80 #570925
>>570901
Разницы-то получается нет. Только класс лишний написали (ValidationResult).
Можно было из Validate выбрасывать InvalidArgumentException вместо ретурна. И ловить его уровнем выше. То же самое по объему кода и по читаемости:

try
{
Validate(user);
}
catch (InvalidArgumentException ex)
{
cw(ex.Message);
}
service.UpdateUser(user);
#81 #570931
>>570925
Ты не сможешь несколько проверок провести, если будешь кидать ексепшоны при валидации. Либо тебе придется несколько раз ловить эксепшоны при валидации и собирать их в агрегатный ексепшон и выбрасывать его. Все равно новый класс создашь и производительность посадишь немного.
#82 #570936
>>570924
С делегатами хорошая идея. Можно сделать string вариант с возвратом ошибки. Если в вызывающем методе нужно узнать о результатах - ловить ретурн. Если не нужно - не ловить. (тогда проверка в одну строку будет, супер)

>или подцепить aop фреймворк и заюзать аспект с логированием ексепшенов


Интересно, сейчас погуглю.

Спасибо.
#83 #570941
>>570931
Да, точно, я не подумал об этом. Ошибочное действие предотвратил только, всю информацию о вводных данных не собрал. Если пять ошибок в пяти полях - придется юзеру пять раз данные отвравлять и пять раз по одной ошибке ловить лол. Жестоко.
#84 #570961
WPF-мудак треде.
Поясните за бд. Делаю приложение для прослеживания средств. Озадачился как хранить данные. В случае сервера понятно - коннектишься к базе и все хорошо. Но я пилю приложение для клиентской стороны. Получается нужно будет запускать бд и соединяться с ней, или есть менее упоротый вариант (Пару раз видел как С++ приложение использует Sqlite).
#85 #570969
>>570961
Ты либо так же коннектишься к бд на сервере напрямую, либо пишешь сервис и получаешь данные через него, либо используешь локальную бд, если приложение не требует многопользовательского режима с общими данными. Можешь так же хранить данные в обычных файлах. It depends, короче.
#86 #571089
hh.GetRequirements(".net", "Moscow");

>Отличные знания HTML/CSS/JavaScript и связанных технологий


>знание технологий HTML/DHTML, JavaScript, CSS;


>Базовые знания HTML, CSS, JavaScript/TypeScript;



Как это понимать? Что значит "знания"? Что там знать? Что <head> находится выше <body>?

От программистов реально требуют навыки верстки? Разве для этого не существует специальной профессии под названием "верстальщик"?

"Знания" они сука требуют. Если бы вам знания нужны были - вы бы книжки искали, а не работников.
#87 #571098
>>571089
А ты слишком тупой чтобы осилить профессию "верстальщик"?
Зря ты так на самом деле, там у них дохуище заебов, хорошего версталу знакомого с инструментами и стандартами найти сложнее дотнетчика ну и они просто экономят, лол
#88 #571111
Сап, программач!
Помоги, чем сможешьплеас.
Есть один проэкт ASP.NEP с MVC.
Значит создаяю я такой 2 модельки:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hg.Models
{
class Hui_govno
{
public string name { get; set; }
public int dcp { get; set; }
public int dmg { get; set; }
public int qwe { get; set; }
public bool shit { get; set; }
}
}

и

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;

namespace hg.Models
{
class Hui_govnoContext
{
public DbSet<Hui_govno> Hui_govnos { get; set; }
}
}

А потом создаю хоумКонтроллерлалка ААЗАЗАЗ))))0)0)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using hg.Models;

namespace hg.Controllers
{
public class HomeController : Controller
{
Hui_GovnoContext db = new Hui_GovnoContext();
// GET: Home
public ActionResult Index()
{
IEnumerable<Hui_Govno> hui_govnos = db.Hui_govnos;
ViewBag.Hui_govnos = hui_govnos;
return View();
}
}
}

На индексе добавляю представление:

@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>HUI_GOVNO!!</title>
</head>
<body>
<div>
<h3>HUI_GOVNO!!</h3>
<table>
<tr>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
</tr>
@foreach (var b in ViewBag.Hui_govnos)
{
<tr>
<td><p>@b.name</p></td>
<td><p>@b.dcp</p></td>
<td><p>@b.dmg</p></td>
<td><p>@b.qwe</p></td>
<td><p><a href="/Home/Change/@b.Id">Dinahooj</a></p></td>

</tr>
}
</table>
</div>
</body>
</html>

и оно мне выдает ошибку в файле index.cshtml в строке : @foreach (var b in ViewBag.Hui_govnos)

Исключение типа "System.NullReferenceException" возникло в App_Web_benjc5qp.dll, но не было обработано в коде пользователя

Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.

че делать, Анон?
#88 #571111
Сап, программач!
Помоги, чем сможешьплеас.
Есть один проэкт ASP.NEP с MVC.
Значит создаяю я такой 2 модельки:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace hg.Models
{
class Hui_govno
{
public string name { get; set; }
public int dcp { get; set; }
public int dmg { get; set; }
public int qwe { get; set; }
public bool shit { get; set; }
}
}

и

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.Entity;

namespace hg.Models
{
class Hui_govnoContext
{
public DbSet<Hui_govno> Hui_govnos { get; set; }
}
}

А потом создаю хоумКонтроллерлалка ААЗАЗАЗ))))0)0)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using hg.Models;

namespace hg.Controllers
{
public class HomeController : Controller
{
Hui_GovnoContext db = new Hui_GovnoContext();
// GET: Home
public ActionResult Index()
{
IEnumerable<Hui_Govno> hui_govnos = db.Hui_govnos;
ViewBag.Hui_govnos = hui_govnos;
return View();
}
}
}

На индексе добавляю представление:

@{
Layout = null;
}

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>HUI_GOVNO!!</title>
</head>
<body>
<div>
<h3>HUI_GOVNO!!</h3>
<table>
<tr>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
<td><p>HUI_GOVNO!!</p></td>
</tr>
@foreach (var b in ViewBag.Hui_govnos)
{
<tr>
<td><p>@b.name</p></td>
<td><p>@b.dcp</p></td>
<td><p>@b.dmg</p></td>
<td><p>@b.qwe</p></td>
<td><p><a href="/Home/Change/@b.Id">Dinahooj</a></p></td>

</tr>
}
</table>
</div>
</body>
</html>

и оно мне выдает ошибку в файле index.cshtml в строке : @foreach (var b in ViewBag.Hui_govnos)

Исключение типа "System.NullReferenceException" возникло в App_Web_benjc5qp.dll, но не было обработано в коде пользователя

Дополнительные сведения: Ссылка на объект не указывает на экземпляр объекта.

че делать, Анон?
#89 #571113
>>571098
Да я ничего против верстальщиков не имею, отличная профессия. Просто верстка - это на 1% знания и на 99% руки и опыт. Очень практическая и прикладная область. Синтаксис html за полчаса выучить можно. Но чтобы нормально верстать - нужны месяцы практики.
Такие требования, это то же самое что в вакансии водителя написать "требуется человек со знанием автомобилей".

Я не против научиться верстать, просто я сильно сомневаюсь, что asp пацаны реально в конторах сидят макеты верстают. Подозреваю, что это требование ничего не значит и 99% дотнет разработчиков версткой никогда не занимаются. Написали требование просто для выебонов. Известно же, что чем больше сложных слов в объявлении, тем круче контора.

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

Бесят эти ушлепки, почему они не могут нормально по-русски написать РЕАЛЬНЫЕ требования? Друг у друга какую-то хуйню копипастят, в которой большинство написанного - пустые ничего не значащие слова.

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

>ну и они просто экономят, лол


Экономят? Нанимают программиста, чтобы он делал работу верстальщика? Вместо того, чтобы нанять верстальщика, который за ту же работу возьмет меньше денег и сделает ее в три раза быстрее и лучше? Офигенная экономия.
#90 #571114
Может пора добавить в шапку/первым сообщение ссылки на архивач с предыдущими тредиками?
#91 #571117
>>571114
Их кто-то читает?
#92 #571120
>>571113
Ну, скорее всего придется не верстать, а подправить макет или набросать прототип на бутстрапе каком-нибудь, такое сложно назвать версткой понятное дело.

А экономия. Ну что поделать, расеянскей бизнесмен считает что если посадить человека и принтеры заправлять и код писать и верстать то он охуительно сэкономит, а на деле проебет проект по срокам, сломает принтеры и заебет сотрудника так, что тот просто уволится нахуй дропнув базу.
Реалии.
#93 #571145
>>571120

>Реалии.


Понятно...

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


Ну да, я так и думал.
Могли бы написать "Умение найти и изменить одну строчку в разметке". Но нет, они напишут "отличное ЗНАНИЕ html/css".
29 Кб, 369x292
#94 #571154
Сижу учу адо.нет с энтити фреймверком, параллельно делая свой сайт о погоде. Сайт без регистрации и смс, к чему тут в принципе можно базу данных приклеить?
#95 #571158
>>571154
Типовые каменты о погоде запили. Потом будешь их анализировать с умным видом, а в резюме напишешь что работал с бигдатой.
#96 #571160
>>571158

>без регистрации


Анонимый сайт о погоде с каментами?
#97 #571161
>>571154
Кармочку и картиночку к каждому каменту не забудь.
А то блжд анализировать нечего будет.
#98 #571162
>>571160
Ну на ргхосте общаются про брата, а у тебя будут писать многозначительное "Ясно". Чому нет?
#99 #571171
>>571111
hui_govnos должно в качестве модели подключаться к View.
И проверь подключение к базе данных вообще происходит или нет
#100 #571173
>>571117
Конечно там полно полезной инфы.
Вот, например...
#101 #571186
>>571173
Ну зайди в предыдущий тред и посмотри сколько там полезной инфы лол.
#102 #571187
Почему первый вариант выдает ошибку, а второй - нет?
1. String s;
Method(s);

2. String s = null;
Method(s);

У нас же в обоих случаях ссылка пустая и на объект не указывает?
#103 #571190
>>571187

>в обоих случаях ссылка пустая


Наркоман? Током ебануть?
#104 #571195
>>571190
Какой API используешь, чтобы людей током бить удаленно? В WCF какие-то библиотеки для этого есть?
#105 #571196
>>571195
ohlol
MimoDaunKun
#106 #571198
>>571195
PoE же для специально делали а потом забыли
#107 #571226
>>570067 (OP)
Парни, посоветуйте либу для msvc2012, чтобы пользоваться gl, glu, glut в winforms. По учебе нужно нырнуть в это говно, хочу нырнуть поудобнее.
#108 #571227
>>571226

>msvs


Быстрофикс. Пишу же на шарпе.
#109 #571229
>>571227
Я уже было хотел послать тебя нахуй в крестотред. К гейдевам сходи.
#110 #571233
>>571229
Не нашел у них опенгл треда. Видимо все на юнити перекатились. Да и меня с легаси опенглом там быстро бы отхуесосили.
#111 #571267
Внезапно обнаружил, что в mono develop не работают горячие клавиши, если раскладка по умолчанию в системе стоит русская.
Попенсорс такой попенсорс.
145 Кб, 800x642
#112 #571274
Аноны-студенты с аккаунтом dreamspark, у меня к вам маленькая просьба:

Можете заглянуть на dreamspark и проверить если ли там в XAMARIN (списке доступных продуктов)?
363 Кб, 1360x768
#113 #571305
#114 #571307
>>571267

Русская раскладка не нужна, очевидно же

Стандартная проблема GовноTыКа и прыщеинтерфейсов вообще.
223 Кб, 1800x1200
#116 #571322

>сайт о погоде с комментариями, смайлами и кармочкой


Эта идея настолько ебанутая, что мне кажется, что оно даже взлетит при нормальной реализации.
#117 #571421
>>571322
Наверняка где-то уже есть.
#118 #571478
>>571226
Анон выше посоветовал OpenTK, его и используй. Писать приятнее, чем на OpenGL на крестах, но документация посасывает.
#119 #571561
Почему дебаггер не всегда показывает используемую приложением память?
#120 #571578
>>571561
Дебаггер не показывает ничего подобного.
#122 #571589
>>571585

>Diagnostic Tools

#123 #571597
>>571589
Почему не всегда Diagnostic Tools показывают используемую приложением память?
#124 #571598
Привет котаны, помогите придумать как избавиться вот от этой штуки:
В прилаге есть 2х колонный грид с бесконечной загрузкой. В каждом итеме - картинка, которая подгружается с тырнета. Короч проблема в том, что если проскролить быстро его например до 100го элемента - прилага будет качать все предыдущие 100 картинок. И потому то место куда я проскролил отобразится очень не скоро.

Что можно придумать чтобы подгружать только то, что надо? Я думал насчет сценария типа "если айтем больше секунды на экране - то загрузить картинку", но это выглядит как говно.
Помоги, анончик.
#125 #571607
>>571597
Не знаю бага какая-нибудь опять, наверно. Я эту штуку отключил за ненадобностью. Что ты там под дебаггером в хосте студии замерять собрался?
#126 #571621
>>571607
У меня в проекте работа с памятью через Marshal встречается, наверняка где нибудь память течет.
#127 #571664
>>571621
Без дебаггера в релизе запусти.
https://msdn.microsoft.com/en-us/library/ms182372.aspx
1293 Кб, 1680x1050
#128 #571667
>>570067 (OP)
Элитные разработчики, снова нужны ваши пояснения.

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

Выглядит уродливо, нечитаемо, занимает в два раза больше места, чем могло бы.

Можно сделать вот что: вынести за скобки рекурсивную функцию (с делегатом в параметре).

NonameFunc(()=>{ NonameFunc(()=>{SimpleCode();}); });

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

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

Насколько я понимаю, это противоречит парадигме ООП. Если мы не можем разбить логику метода на понятные смысловые части, значит этого делать не нужно и весь код следует писать в одном методе.

С другой стороны, у нас есть принцип DRY (dont repeat yourself), согласно которому китайский код (копипаста) недопустим.

Как быть в такой ситуации?

С точки зрения читаемости оба варианта проигрышные, даже не знаю какой хуже. Низкоуровневые алгоритмы (уровень которых ниже, чем уровень основных объектов программы) вообще можно читаемыми сделать?
#129 #571671
>>571598

>если айтем больше секунды НЕ на экране - то прекратить его загрузку

#130 #571685
>>571667
У всего твоего кода нет никакого ооп смысла. Щито поделать. Невозможно рефакторить чужой код, не зная что он делает, а тем более не наблюдая этот код. Вангую, что тебе надо сам алгоритм переписать.
#131 #571691
>>571667
А мог бы код писать.
#132 #571717
>>571691
Теоретический вопрос же.

>есть китайский говнокод


>можно вынести повторяющийся кусок и уменьшить размер кода в два раза


>но у этого куска нет никакого ООП-смысла.


>это противоречит парадигме ООП.


>китайский говнокод потиворечит парадигме DRY


>Как быть в такой ситуации?



Я покажу код, какой-нибудь знаток математики сразу заявит, что у функции таки есть логичное название и проблема как бы решена. Но я ответа на свой вопрос так и не получу.
#133 #571718
>>571667
http://habrahabr.ru/post/130850/

>Признаки плохого программиста


>«Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).

#134 #571723
>>571717
Ты архиватор или кодер? Если разбиение не добавляет читаемости, то в жопу разбиение, а если добавляет - в жопу принципы.
#135 #571738
>>571718
Всё-таки, Хабр — загончик для школоты.
Нет ничего плохого в том, чтобы разделить длинную функцию на две и по отдельности их отладить.
#136 #571743
>>570067 (OP)

>C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека.


кекнул с дауна
#137 #571745
>>571717

>но у этого куска нет никакого ООП-смысла.


>это противоречит парадигме ООП.


>ооп смысл у куска кода


Две инъекции ассемблерных вставок этому олуху. ООП смысл есть только у объектов и их взаимодействий. Твои попытки рефакторинга никакого отношения к ооп не имеют. Думай как объект, стань объектом. Только тогда ты сможешь решить свою проблему.
#138 #571746
>>571743
Ну надо же себя чем-то подбадривать
Вот лично тебя что удерживает от самовыпила?
#139 #571747
>>571746
нерешительность.
а так сегодня всерьез задумывался о самовыпиле, лол.
#140 #571761
>>571745
Вообще не понял, что ты хотел сказать.

>>571718
>>571738
Ну блин. Противоречия. Голова бобо.

>>571723

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


Красиво сказал. Запомню, что читаемость в приоритете над принципами.
#141 #571771
>>571761

>Вообще не понял, что ты хотел сказать.


Вот от этого у тебя и проблемы. Ты пытаешься следовать принципам ООП, но ты не понимаешь сути явления.
#142 #571937
В ASP.NET MVC чтобы передать значения всей модели в форме ПОСТ запроса. Обязательно нужно все поля модели прописывать(хидденами и текстбоксами)?
Если у меня в модели 20 полей, всех их херачить в форму?
1 Кб, 401x303
#143 #571940
>>571761

>Ну блин. Противоречия. Голова бобо.


Слушай старших, они завещали нам пейсать краткий и выразительный код.
#144 #571945
Помогите с кодом, нужна генерик функция для подписи на евенты, типа:
public delegate void DelegateName(object param1, object param2, object param3);
public static event DelegateName DelegateEvent;

должна подписываться на любой евент с тремя параметрами.
#145 #572026
>>571937
Ну, тебе же надо как-то передать эти значения серверу? Или думаешь, что он сам как-нибудь догадается что там пользователь вводит?
#146 #572029
Есть у кого инфографика от майкрософта по .net технологиям? Там описаны пути, по которым можно развиваться
#147 #572096
Посоветуйте, пожалуйста, что почитать по silverlight под windows phone 8
#148 #572097
>>571667
Причем здесь ООП вообще? Это функциональная декомпозиция, пока ты внутри одного объекта функции теребишь.
#149 #572103
>>571621
А всякая дутнетовская диагностика разве показывает unmanaged память?
53 Кб, 450x600
#150 #572122
Ну че, что нужно иметь человеку, чтобы устроиться C# джуном?
397 Кб, 1200x1200
#151 #572131
>>572122
Хорошие знания джавы.
#152 #572151
>>572122
Маленькие сиськи :3
#153 #572152
>>572122
отбеленный анус
#154 #572160
>>572122
- высшее образование;
- уверенный пользователь пк; That's all.
- английский B1;
- знания теории cs стек на массивах должен уметь у доски реализовать когда тебя посреди ночи поднимут;
- знания теории устройства ЭВМ, ОС, сетей;
- знания теории БД;
- продвинутые знания C#;
- уверенные знания .Net FCL, включая ADO.Net, ASP.Net, WPF, WCF;
- уверенные знания фронтенда: ES5, HTML5, CSS3;
- уверенные знания T-SQL;
- знания XML, XPath, XSD, XSLT etc;
- уверенные знания протокола HTTP;
- знания внутреннего устройства .Net (сборки, CIL, CLR, JIT, все это вот);
- знания процесса сборки .Net приложений под вин. MSBuild;
- начальные знания VCS (GIT, SVN, TFS);
- начальные знания юнит тестирования (MSTest, NUnit etc);
- начальные знания CI;
- начальные знания процессов разработки ПО.
#155 #572177
>>572160
И дописываешь модули под вордпресс потом с таким багажом.
#156 #572184
>>572160
Мне наоборот рассказывали.
Что на работку обычно приходят в первый раз обычно все почти нулевые, а потом их на месте обучают. Так выгодней работодателю, потому что зп
10 Кб, 257x59
#157 #572208
>>572160
Окей, щас еще год-два и пойду на стажировку.
40 Кб, 1024x683
#158 #572210
>>572151
чек
>>572152
чек
Возьмут меня теперь?
#159 #572228
>>572208
Я тоже так думал, в итоге просрал тупо 5 лет, почти нихуя не делая
#160 #572241
>>572184
Если в фирме настроен процесс обучения персонала, то, да, требования пониже чутка. Некоторые конторы мониторят студентоту, приглашают на внутренние курсы и после берут на позицию джуна. В идеале. Могут и нахуй послать, если необучаемый.
117 Кб, 1024x600
#161 #572270
Я правильно понимаю, что кроме ASP на дотнете ловить нехуй? На винформс только говно мамонта поддерживать, на wpf мало вакансий, и он не обновлялся уже пять лет, мобайл утонул, тырпрайз ещё есть, но там же джава больше пригодится.
#162 #572281
>>572270

>мобайл утонул


Хуй знает, не так уж редко вакансии вижу.
#163 #572283
>>572281
На xamarin, я так понимаю?
#164 #572285
>>572283
А то.
#165 #572287
>>572285

>хх.ру


>xamarin


>Найдено 3 вакансии


Ясно.
#166 #572314
можно ли сжать форму с двух сторон одновременно, и как это сделать, если можно? на данный момент пробовал изменять размер формы через this.width и height, но при увеличении этих свойств форма растёт и убывает только снизу и справа, а мне нужно шоб прям кукожилась со всех сторон. пробовал играться с dock'ом и anchor'ами, ничего не дало. помоги, анонче
#167 #572316
>>572314
Очевидно, что надо менять и позицию и размер на половину значения дельты перемещения курсора в соответствующих измерениях. Кэп.
#168 #572317
>>572316
так и сделал, но разве нет возможности это делать без перемещения формы?
#169 #572327
>>572317
Ну, как бы нет, но я никогда подобным не страдал с формами, поэтому можешь еще погуглить. Кто знает, может найдешь чего. Скажешь потом.
#170 #572339
>>572327
да забил уже. до того, как здесь спросить, в около 6 запросах в гугле пролистал по 2 страницы результатов. ничего по этому поводу нет.
может подскажешь заодно, как воспроизвести звук щелчка мыши? на данный момент попробовал в пространстве имен system.media system sound и sound player. есть ли вариант попроще именно со звуком щелчка мыши? (как при открытии папки, например. кстати, чому то не смог его найти в c:\windows\media
#171 #572347
>>572339
Не в курсе. У меня он есть (Windows Navigation Start.wav).
#172 #572397
>>572160
Спасибо.
#173 #572415
Где в wpf хранить ссылки на объекты, которые должны существовать дольше времени обработки одного события?
Очевидный вариант: глобальные поля в классе MainWindow. Но по слухам, это быдлокод. Это правда? Чем такой вариант плох? Какие альтернативы?
#174 #572422
Язык ебанутых. Если в VB вхождение заняло считанные минуты, то C# прям 1 в 1 как С++ - не хватит и года, чтобы всё это говно переварить. В рот ебал я вас, долбоёбы!

Мимо си\asm\vb\html\css\txt\гуманитарий
#175 #572472
УГОРАЕШЬ ПО БЫСТРОДЕЙСТВИЮ
@
ОПТИМИЗИРУЕШЬ АЛГОРИТМЫ
@
ПИШЕШЬ АНСЭЙФ КОД
@
ЭКОНОМИШЬ НЕСКОЛЬКО БАЙТ
@
ПУСТАЯ WPF ФОРМА ЖРЕТ 100 МБ


Теперь это бугурта от дотнет тред.
#176 #572473
>>572472
Я тоже охуел.
Как я ее на своем селероне с 512 мб ОЗУ запущу?
#177 #572491
>>572472
Но ты уже угораешь по быстродействию, похуй на память.
5 Кб, 296x260
#178 #572516
>>570067 (OP)
Вопрос с собеседования на .net junior:

>Как установить в единицы самый правый нулевой бит в произвольном целом числе не используя циклов и рекурсии?



Поясните, о чем речь? В дотнет существуют какие-то способы манипуляции данными на таком низком уровне? Я ничего мельче byte не встречал никогда.
#179 #572520
>>572516

>не используя циклов и рекурсии


Пишешь ифы до посинения и все.
#180 #572524
>>572520
Я не понимаю в принципе, о чем речь. Какие биты? Что такое бит? Ну то есть я знаю в теории, что такое бит, но как до него добраться в программе?

Вот у меня код
Int32 randomInteger = Random.Next(-2000000, 2000000);

Что дальше?

Если я пойму модель и получу к ней доступ - алгоритм придумаю, в этом проблемы нет.
#181 #572542
>>572524
Битовыми операциями, очевидно же
49 Кб, 958x533
#182 #572554
>>572160

>стек на массивах должен уметь у доски реализовать когда тебя посреди ночи поднимут


Что это значит? Пикрилейтед что ли? Нахуя?
#183 #572556
>>572542
Ок, нагуглил.
Троэлсен пидорас ничего мне про них них не сказал. Гандон, вечно у него какие-то секреты от меня.
#184 #572558
>>572554
Я не понял, стек на массивах, это стек из массивов, стек из массива или массив стеков?
#185 #572561
>>572556
Другими ЯП интересовался бы - много нового узнаешь.
#186 #572566
>>572558
При реализации стека данные можно хранить в связном списке или в массиве.
#187 #572567
>>572566
В хуязном, давай мне безтиповый пример.
#188 #572570
>>572561
Но я интересуюсь другими ЯП! java, php, html, css, javascript
80 Кб, 1000x500
#189 #572571
>>572570
Ниже уровень возьми, шутник
#190 #572572
>>572567
У гугла проси.
#191 #572575
>>572572
Шоб тебя черти в жопу выебли
#192 #572652
>>572575
Но черти ебут в жопу только верующих
#193 #572653
>>572160
>>572554
Так что ли?

class StackOnArray
{
private int[] stack;

public StackOnArray(int firstElement)
{
stack = new int[] { firstElement };
}

public int Peek()
{
return stack[stack.Length - 1];
}

public void Push(int element)
{
Array.Resize(ref stack, stack.Length + 1);
stack[stack.Length - 1] = element;
}

public void Pop()
{
if (stack.Length > 0)
Array.Resize(ref stack, stack.Length - 1);
}

}

Зачем так делать вообще? Какой наркоман будет немасштабируемые дотнет массивы использовать для подобных задач?
#193 #572653
>>572160
>>572554
Так что ли?

class StackOnArray
{
private int[] stack;

public StackOnArray(int firstElement)
{
stack = new int[] { firstElement };
}

public int Peek()
{
return stack[stack.Length - 1];
}

public void Push(int element)
{
Array.Resize(ref stack, stack.Length + 1);
stack[stack.Length - 1] = element;
}

public void Pop()
{
if (stack.Length > 0)
Array.Resize(ref stack, stack.Length - 1);
}

}

Зачем так делать вообще? Какой наркоман будет немасштабируемые дотнет массивы использовать для подобных задач?
#194 #572655
>>572653
Ты его неправильно реализовал, наркоман. Иди еще погугли. Сорцы стека в дотнете посмотри, например.
#196 #572660
>>572655
Что конкретно неправильно?
Вполне уверен, что все правильно. Pop void вместо ретурна, но это мелочь.
#197 #572664
>>572660
У тебя на каждый вызов память по-новой выделяется. Ты когда последний раз у психиатра проверялся, Антош?
#198 #572666
>>572664
Нахуй иди, раз по-нормальному разговаривать не умеешь.
25 Кб, 500x375
#199 #572673
>>572666
Потом удивляются почему это их на работу не берут. Реализовать стек — дел-то на пять минут, казалось бы.
#200 #572676
Пацаны, пацаны, помогите!
Задали мне такую штуку, сравнивать поля двух объектов с одинаковыми именами, имя поля Name, а список объектов Courses, с именами course.
А сравнивать с помощью переопределённого метода Equals.
И я вот сижу и чешу репу, как сравнивать поля у объектов и вывести в одном случае труе, а в другом фолс.
Простите за косноязычие, в проге не шарю.
#201 #572677
>>572422
Удваиваю, в питоне например все просто и понятно
#202 #572679
>>572676
В пять утра очнулся?
На хабре даже статьи про это есть
http://habrahabr.ru/post/137680/
http://habrahabr.ru/post/168195/
#203 #572763
как обрабатывать нажатие двух клавиш мыши одновременно? то есть, по нажатию ЛКМ и ПКМ совершается действие. пытался это сделать и в mouseIp, и в mouseDown, и в mouseDoubleClick, и в mouseClick, всё как то без толку. гугл молчит. помогите, товарищи.
#204 #572765
>>572516
x | (x + 1)
Алсо, раньше угорал по битам и мог щелкать такие как орехи, а потом забил и вот теперь такие вещи прерывают меня минут на 5+
#205 #572774
>>572516
Почитай hacker's delight, первые пару глав, больше не нужно
#207 #572844
Прив =)
59 Кб, 1366x768
#209 #572933
>>572679
Я макака и не понимаю где обосрался.
#210 #572939
>>572933
Нахуя тебе здеся эксепшны выкидывать? Просто потому что можешь? Какие же вы, жарподебилы дураки...
#211 #572947
>>572939
Эээ, парень, может по существу вопроса? про языки срач это наверное в другой тред.
#212 #572989
>>572933

>Course.Equals


нихуя не понял.
Для начала переопредели GetHashCode, хули ты не слушаешься компилятора. И сравнивай либо значения этих hash'ей, либо через String.Equals
#213 #573060
>>572939
А почему нет? Не контракты же использовать
#214 #573099
>>572933
Сидишь такой сраниваешь-сравниваешь, и тут вруг кровь кишки распидорасило ARGUMENTEXCEPTION!!!1
#215 #573353
>>572989
я вообще нихуя не понимаю что от меня требуется, ну вернее понимаю и сделал без ебучего оверрайда.
public bool Equals(Course course)
{
return (this.Name == course.Name);
}
В задании дословно "Override the “Equals” method for “Grade” and “Course”
classes. Two courses are considered equal when they have the same name.
Two grades are equal when they reference the same course.
"
#217 #573413
>>573398
Я тебя люблю анончик, спасибо большое.
129 Кб, 254x352
#218 #573670
Чего можно про Web API на русеке почитать?
#219 #573716
как сравнить произвольный класс с числом через "=="?
#220 #573718
>>573716
Оверрайди метод "=="
#221 #573720
>>573718
А это разве не через IConvertible делается?
#222 #573721
>>573718

>метод


Мозги текут, оператор конечно же.
https://msdn.microsoft.com/uk-ua/library/ms173147(v=vs.80).aspx
#223 #573726
>>573720
Возьми да попробуй, хули.
#224 #573728
>>573726
Спасибо, я лучше тут спрошу.
#225 #573730
>>573720
>>573726
Но прикол в том что тогда у тебя в классе будет куча ненужного говна от этого интерфейса.
#226 #573731
>>573730
А без реализации 16 лишних методов возможно обойтись?
#227 #573733
>>573728
Смотри, если ты применишь к своему классу интерфейс IConvertible то тебе придется описать все эти методы
public int ToInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}

public long ToInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}

public sbyte ToSByte(IFormatProvider provider)
{
throw new NotImplementedException();
}

public float ToSingle(IFormatProvider provider)
{
throw new NotImplementedException();
}

public string ToString(IFormatProvider provider)
{
throw new NotImplementedException();
}

public object ToType(Type conversionType, IFormatProvider provider)
{
throw new NotImplementedException();
}

public ushort ToUInt16(IFormatProvider provider)
{
throw new NotImplementedException();
}

public uint ToUInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}

public ulong ToUInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}

очевидно что из всего этого дерьма тебе нужно только ToInt32. Мне кажется лучше просто == оверлоадить.
#227 #573733
>>573728
Смотри, если ты применишь к своему классу интерфейс IConvertible то тебе придется описать все эти методы
public int ToInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}

public long ToInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}

public sbyte ToSByte(IFormatProvider provider)
{
throw new NotImplementedException();
}

public float ToSingle(IFormatProvider provider)
{
throw new NotImplementedException();
}

public string ToString(IFormatProvider provider)
{
throw new NotImplementedException();
}

public object ToType(Type conversionType, IFormatProvider provider)
{
throw new NotImplementedException();
}

public ushort ToUInt16(IFormatProvider provider)
{
throw new NotImplementedException();
}

public uint ToUInt32(IFormatProvider provider)
{
throw new NotImplementedException();
}

public ulong ToUInt64(IFormatProvider provider)
{
throw new NotImplementedException();
}

очевидно что из всего этого дерьма тебе нужно только ToInt32. Мне кажется лучше просто == оверлоадить.
#228 #573736
>>573731
Компилятор кудахтать будет если их не описать.
#229 #573742
>>573733
>>573736
Понятно, спасибо.

>Мне кажется лучше просто == оверлоадить.


Но потом могут понадобиться другие операторы, еще не известно что лучше ж.
#230 #573746
>>573742
Если тебе надо будет сравнивать с несколькими разными типами то очевидно IConvertible.
#231 #573748
>>573746
Только выглядеть это будет вот так
if (Convert.ToInt32(инстанс твоего класса) == число)
#232 #573772
>>573716

>как сравнить произвольный класс с числом через "=="?


Как оказалось легче всего это сделать через implicit.
https://dotnetfiddle.net/z6UHei
51 Кб, 889x350
#233 #573817
>>570067 (OP)
Почоны, решил запихнуть Entity Framework в универскую лабу. Получилось, захотел допилить. А именно: сделать так, чтоб каждые пару секунд БД в моём приложении переподгружала записи (информация об экзаменах в моём случае). Запилил всё втупую (для начала хотя бы так хочу сделать, потом улучше). В параллельном потоке запускается обновление таблицы в приложении, затем Thread.Sleep на пару секунд, снова обновление и так, пока приложение не закровешь. Но всплыла проблема пикрелейтед. Мой тред, который должен каждые N секунд рефшеришь мой ListBox с данными из БД не может трогать БД, потому что она создана в другом потоке. Посоветуйте, как решить эту проблему, ну или альтернативные способы решения такой задачи.
#234 #573836
>>573817

>чтоб каждые пару секунд БД


Ты вот щас просто взял главную идею ado.net и в говно ее опустил.
#235 #573838
>>573817
С И Н Х Р О Н И З А Ц И Я П О Т О К О В
И
Х
Р
О
Н
И
З
А
Ц
И
Я

П
О
Т
О
К
О
В
7 Кб, 126x35
#236 #573842
>>573817
Какого хуя?
35 Кб, 1334x359
#237 #573848
Я тут научился в однострочники, сильно меня за такое отхуесосят?
#238 #573862
>>573848
По-моему, будет гораздо читабельнее и УНИФОРМНЕЕ, если правую часть (после "=>") всегда делать с новой строки. Сразу видишь тело функции, все дела.
#239 #573865
Кстати, нахера async-await, если в теле только один стейтмент с await'ом?
Разве не будет то же самое, что и если их просто убрать?
#240 #573868
>>573865
И вправду, лол, спасибо.
#241 #573879
>>573848
Еще как отхуесосят.
#242 #573883
>>573868
В принципе, если там что-то потенциально асинковое, тоже можно тот же аргумент насчёт униформности, что и "всегда ставьте {} для if, даже если внутри только один стейтмент". Если везде сокращаешь - тогда и здесь надо сокращать, если униформноблядствуешь - тогда пожалуй и здесь стоит асинк лепить, и с новой строки писать.
#243 #573885
>>573848
Фича с однострочными лямбда методами сама по себе спорная. Кому-то, видимо, лень стало 2 скобочки ставить. Теперь все ломаем глаза стрелочками.
#244 #573920
>>573836
И какая же идея?
88 Кб, 1920x1080
#245 #573929
Аноны, есть тут Entity Framework боги? Пишу под UWP, нужна локальная база. Вроде всё норм писалось, но чет я въебался и не могу разгрестись в чем объёб. Вобщем, есть модель, таблица Item с полями, одно из полей это List<SomeObj> лист тругой таблицы у которой тоже есть поля. А теперь объёб. Когда я просто добавляю новый Item или апдейчу одну из записей всё окей, но когда я пытаюсь проапдейтить SomeObj тоесть методом .Add добавить туда объект мною созданный, или сразу в Item.SomeObjList добавить созданный мною new List<SomeObj> нихуя не сохраняется. Тоесть я делаю db.SaveChanges(); и в дебагере на шаг после сохранения в видны изменения в записи, но когда в другом классе я в using(var db = new ItemDb()) пытаюсь получить мой Item то блядь все свойсва у него сохранились, а мой ебучий SomeObjList пуст. Аноны помогите, ебусь 3й день.
12 Кб, 792x125
9 Кб, 998x82
#246 #573942
>>573929
Вот пара скринов моего долбоебизма. Единственная зацепка, это поле id на втором пике. Записи c SomeObj добавляются но не привязываются к моему Itemу.
#247 #573944
>>573942

> на первом пике


самофикс
#248 #574137
https://www.youtube.com/watch?v=5dpO7QiMEaU
Что нужно знать, чтобы стать .Net разработчиком?
https://www.youtube.com/watch?v=8x1Sr8j5Bgs
Какие требования к разработчику уровня junior?
https://www.youtube.com/watch?v=L2c6t9lNuds
Вебинар на тему "Анализ требований на позицию Junior
https://www.youtube.com/watch?v=cvhyoUa42uY
Семинар Junior Middle Web Developer. Анализ
https://www.youtube.com/user/CBSystematicsTV/search?query=junior"
#249 #574153
И так аноны, не хочу заводить срач, но спрошу, что лучше учить для нубаса, решетку или жабу?
#250 #574155
>>574153
Хаскель.
#251 #574156
>>574153
Раст
#252 #574157
>>574153
Пролог.
#253 #574159
>>574153
От предпочтений конкретного человека зависит. Шарп как язык лучше, но немного меньше вакансий и анальная привязка к операционной системе виндоуз (по крайней мере пока, в будущем может что поменяется).
#254 #574161
>>574155
До c# учил haskell и не о чем не жалею.
Кстати, почему в c# такой ебанутый async?
В хаскеле async делает что то асинхронно, а await получает результат. Что с шарпом то не так?
#258 #574166
>>574159
А моно? Не хочу менять удобную бубунту на шиндовс
#261 #574169
>>574153
Erlang
#262 #574170
>>574153
Python
#263 #574171
#264 #574172
#265 #574173
>>574153
Скалу
#266 #574174
#268 #574176
>>574153
Паскаль.
#269 #574177
#270 #574178
#271 #574179
>>574153
JavaScript
#272 #574180
>>574153
Fortran
#273 #574181
>>574153
Brainfuck
#274 #574182
>>574153
Petooh
#276 #574185
#277 #574187
МОЧАААААА У НАС ВАЙП (((((
#278 #574212
Как можно спарсить огромный файл, размером в сотни гигабайт, в key-value структуру и как хранить эту структуру, ведь её размер будет примерно такой же? На выходе нужно тоже получить файл в определённом формате, то есть по сути мы применяем мапредьюс, но я не очень понимаю, как нужно создавать промежуточный результат.

Построчно читать и обрабатывать файл не получится, потому что важно содержание файла в целом.
#279 #574216
>>574212
Слишком мало исходных данных. Если количество памяти ограничено, то тогда может быть есть возможность как-то перестроить файл, чтобы его можно было читать порциями, иначе даже хуй знает.
#280 #574221
>>574216
Ты забыл про yoba-сервер.
#281 #574226
>>574216
Это Anagram Solver, идея решения (с созданием ключа, представляющего слово, отсортированное по алфавиту) взята из книги "Жемчужины программирования", задание примерно такое:

Составить программу ANAGRAM, которая:
1) вводит словарь, длина слов в котором не превосходит 20 символов, из текстового ASCII-файла, имя которого задано первым параметром командной строки;
2) находит в словаре все анаграммы (слова одинаковой длины, составленные из одних и тех же букв);
3) выводит в результирующий текстовый ASCII-файл списки всех анаграмм по одному списку в строке.

Да, ограничение по памяти. Этот приём никак нельзя приспособить под такое ограничение? Других нормальных идей решения в голову не приходит
#282 #574232
>>574226
Ну сходу могу предложить работать с БД, либо извернуться с файлом, но в любом случае промежуточный вариант нужно хранить на диске.
#283 #574237
>>574232
А это нормальный путь с точки зрения программиста: создавать БД ради отработки одного скрипта?
#284 #574245
>>574237
Тут вопрос не в количестве кода, а в объемах данных. Если данных много, то скорее всего использование БД будет оправдано, даже если это скрипт из пары десятков строк.
#285 #574297
>>574226
В нюфаг-треде человеческое решение: >>574292
#286 #574372
Как вкатиться в этого долбанный ASP.NET. Нашёл пару гайдов:
http://metanit.com/sharp/mvc5/ тут вроде по полочкам всё, да практических примеров мало.
http://habrahabr.ru/post/175999/ тут вроде всё на практических примерах, но уже со второго урока втирается какая то дичь про ninject, да и в комментах местами не очень лестно отзываются о гайде.

Помогите.
#287 #574384
>>574372
Учебник 2010 года, Трей Нэш, "Ускоренный курс для профессионалов" (и вот там-то самые азы-основы и разобраны).
#288 #574388
>>574384

>ASP.NET


А эта книжка про шарп, основы которого я так то знаю.
#289 #574395
>>574372
Торент ссылка на видеоукорсы в оппосте.
http://www.asp.net/mvc/overview/getting-started майрософтовский гайд
Там все подкрепляется примером
http://professorweb.ru/my/ASP_NET/gamestore/level1/
простенький интернет магазин на формах и mvc
#290 #574489
>>570067 (OP)

>.net source


private int _size;
private int _version;

На что обычно указывает знак подчеркивания в именовании полей? Или это просто соглашение об именовании, чтобы отличать поля экземпляра от параметров, передаваемых в методы?
#291 #574495
>>574489

> соглашение об именовании



Это.
#292 #574496
Как в EntityFramework иерархию отображать в одну таблицу?
В таблице будет больше полей чем свойств в базовом классе, оно само будет проставлять null неуказанным свойствам и заполнять нужными значениями поля отображающие свойства унаследованных классов?
#294 #574499
Объясните вкратце, что происходит в следующей строке.

>// malicious caller from mutating the array after this check.


>for (int i=0;i<lengths.length;i++) if="" (lengths="" <="" 0)="" throw="" new="" argumentoutofrangeexception("lengths["+i+']',="" environment.getresourcestring("argumentoutofrange_neednonnegnum"));="" fixed(int="" plengths="lengths)" return="" internalcreate((void)t.typehandle.value,lengths.length,plengths,null);="" }="" public="" static="" array="" createinstance(type="" elementtype,="" params="" long[]="" lengths)="" {="" if(="" lengths="=" null)="" argumentnullexception("lengths");="" int[]="" intlengths="new" int[lengths.length];="" for="" (int="" i="0;" lengths.length;="" ++i)="" long="" len="lengths;" (len=""> Int32.MaxValue || len < Int32.MinValue)
>throw new ArgumentOutOfRangeException("len", Environment.GetResourceString("ArgumentOutOfRange_HugeArrayNotSupported"));

Непонятны куски вида

>public="" static="" array=""


>type="" elementtype,="" params="" long[]="" lengths)



Код отсюда:
http://www.dotnetframework.org/default.aspx/DotNET/DotNET/8@0/untmp/whidbey/REDBITS/ndp/clr/src/BCL/System/Array@cs/2/Array@cs
#295 #574500
>>574499
// malicious reader from reading the code after this check.
#296 #574501
>>574499
Что-то у них протекло, лучше возми это http://referencesource.microsoft.com/#mscorlib/system/array.cs,138
#297 #574504
>>574501
Точно. Зря я испугался значит. Спасибо.
#298 #574717
Чем отличается explicit loading и lazy loading?
Это же вроде однои и тоже и там и там мы вызываем все связанные данные с помощью только с помощью разных методов
http://www.entityframeworktutorial.net/EntityFramework4.3/eager-loading-with-dbcontext.aspx
http://www.entityframeworktutorial.net/EntityFramework4.3/explicit-loading-with-dbcontext.aspx
#299 #574718
>>574717

> lazy loading?


eager loading
Фикс.
#300 #574726
>>574717
Первое работает на уровне одного объекта, второе на уровне коллекции объектов. Кэп.
#301 #574784
>>574212
Тебе обязательно ключ-значение хранить? Если нет, то предложу индексы построить и по ним впоследствии использовать поиск в файле.
Читаешь последовательно кусками, используя буффер мегабайт на 200, например (или больше, сам смотри).
#302 #575097
Есть смысл использовать такие контролы или обычного jquery достаточно?
http://www.infragistics.com/products/aspnet-mvc
http://www.telerik.com/download/aspnet-mvc
https://awesome.codeplex.com/

Мне нужно сделать нормальный веб-интерфейс, а я вообще не знаю как это делается. Насколько понял чтобы свои контролы писать нужно еще хорошие знания js, которых у меня нет. Бутстрап классы для внешнего вида приписать к тегам я в состоянии, но вот чтобы все еще интерактивно отзывалось. Проект должен быть в каком-то виде готов через месяц-полутора поэтому времени особого на изучение нету, нужно сразу что-то применять.
Может есть гайды, туториалы про фронтэнд для асп нет мвс?
#303 #575158
>>575097
Что мешает сделать WebAPI + Angular?
Angular для написания чего-то рабочего за 3-5 дней изучается и понимание javacsript для него практически не требуется.
#304 #575290
>>575097
Берешь бесплатный бутстрап и делаешь нормальный веб интерфейс.
Нах тебе свои контролы?
#305 #575296
>>575158

> Что мешает сделать WebAPI + Angular?



Наверное то что я этим вообще не занимался и понятия не имею что есть что.
А хорошо выглядящие контролы для фронтэнда нужны, вот и не знаю за что взяться и откуда лучше учить. Пока разбираюсь пользуясь жеквери на кодакадеми и кодскул и джаваскрипт ру.
И посмотрю еще платные контролы под асп мвс, которые доступны на халяву на торрентах.
Поэтому и спрашиваю за что тут лучше.
>>575290
Хотя бы тот же paging таблицы бутстрапом не сделаешь, свой хтмл хелпер несложно сделать для такого случая, но если нужно будет что-то еще посложнее.
#306 #575298
>>575296
у тебя каша в голове, братишка.
для большинства задач подходят бесплатные либы.
таблиц с пейджингом бесплатных - миллион в гугле.
для того чтобы написать что то приличное, придется курить либо жкваири, либо ангуляр, либо любую другую фронтэнд технологию.
просто купить контролов и слепить из них какуюто хуйню - нихуя не выйдет.
#307 #575441
Какие есть способы шифрования get web запросов? Как на сервере, так и на устройстве. ньюфаг
#309 #575887
как устанавливать расширения для вс? Конкретно интересует дуднет рефлектор. Скачал vsix файл, а что с ним дальше делать?
#310 #575919
>>575887
Ну, кликни два раза, лол.
#311 #575992
>>575919
ничего не происходит. зато я распаковал его. Но тоже эффекта ноль
#312 #576013
Как мапить таблицы словарей на классы в EF?
Вот у меня есть там таблица Person, у нее есть поле CountryId, которое ссылается на таблицу словарь со списком стран.
Я же не должен создавать класс для стран? Может нужно сделать как-то отдельное поле под контринейм, которое при апдейте сразу отображает его в бд как айдишник страны со словаря.
#313 #576164
>>574784
Единственное адекватное решение.
#314 #576174
>>576013
https://msdn.microsoft.com/en-us/data/jj591617.aspx#2.7
Либо все же создай класс для стран.
#315 #576578
Нужно ли использовать Dispose на экземпляр класса DbContext?
Некоторые пишут что обязательно так как соединение с бд не всегда закрывается, другие пишут наоборот что оно само все закрывает, вот здесь какбы разработчики EF подтверждают
http://blog.jongallant.com/2012/10/do-i-have-to-call-dispose-on-dbcontext.html#.U6WdzrGEeTw
#316 #576589
https://stackoverflow.com/questions/21349950/entity-framework-6-code-first-is-repository-implementation-a-good-one

Тут обсуждается нужно или не нужно реализовывать паттерны репозиториев, Unit of work, потому что оно все встроено в последние версии EF
Обсуждают всякие абстракции и прочее, я в этом пока ничего не понимаю, поэтому ответьте прямо. Что мне нужно для моего говноприложения: репозиторий с дженериками, этот репозиторий имплементит интерфейсы для реализации CRUD операций которые можно будет потом прицепить через Dependency Injection. Этого будет достаточно?
#317 #576692
Есть способ вызвать конструктор родительского класса с большем количеством параметров, более адекватный чем этот?
https://dotnetfiddle.net/vCAY8B
#318 #576833
>>576692
Можно внутри тела конструктора посчитать id, а потом вызвать base.ParentClass(id);
72 Кб, 604x457
#319 #576849
>>576833

>потом вызвать base.ParentClass(id)


Ну нихуя себе.
#320 #576856
>>576589

>репозиторий с дженериками


Лол нет, сейчас не 2003й.
Репозитории были ничо так, когда у нас не было ОРМ, а работа с базой проходила через хранимки. В те годы у тебя было два стула: создавать повсюду инстансы SqlConnection и дальше пердолиться через него, вызывая хранимки, либо пытаться организовать это все в репозиторий.
Проблема конкретно с репозиториями в том, что, как бы кто не пиздел, что DAL это такая вещь в себе и полностью отделен от бизнес-логики, это ни разу не правда в реальном мире. В прекрасном мире тырпрайза на одно отношение в базе может понадобиться пара десятков запросов с различными фильтрами (и все это в различных представлениях). Исходя из этого факта репозитории у тебя могут получиться двух видов (и оба сорта говна): реально дженерик репозиторий, без какой-либо сложной логики получения данных. Проблема в том, что он такой нахуй не нужен, потому что смотри про фильтры. Второе: ты пердолишь по методу на каждый вид запроса и твой женерик репозиторий уже нихуя не женерик, а огромная хуйня с протекающей абстракцией.
Далее, вернемся к ОРМ. Дело в том, что когда у тебя есть ОРМ, тебе нахуй не упали репозитории. У тебя уже, считай, готовый репозиторий, но с кучей охуенных вещей, которые ты все равно сам не реализуешь. Городить лишний слой абстракции над существующей абстракцией это одновременно и аутизм, и долбоебизм.
Тут, конечно, кто-нибудь прокукарекает про то, что если мы захотим сменить в будущем ОРМ или БД (лел), то с репозиториями не нужно будет пердолиться с DAL, а вот если везде таскать ISession или IDataContext, то нам пизда. На это можно только ответить, что в зрелом проекте менять ОРМ (а уж тем более СУБД) будет либо компания, которая может себе это позволить и это в любом случае будет больно, либо конченный долбоеб.
Опять же, что касается тестов. Не знаю, как там в EntityFramework, но в NHibernate стабы на ISession делаются не сложнее, чем стабы на любой другой интерфейс, да и поднять быстро прямо в памяти и потестить сложную логику сохранения и\или получения данных - дело пяти минут.

tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF (или любым другим ОРМ) и внедряй интерфейс везде, где он нужен.
#320 #576856
>>576589

>репозиторий с дженериками


Лол нет, сейчас не 2003й.
Репозитории были ничо так, когда у нас не было ОРМ, а работа с базой проходила через хранимки. В те годы у тебя было два стула: создавать повсюду инстансы SqlConnection и дальше пердолиться через него, вызывая хранимки, либо пытаться организовать это все в репозиторий.
Проблема конкретно с репозиториями в том, что, как бы кто не пиздел, что DAL это такая вещь в себе и полностью отделен от бизнес-логики, это ни разу не правда в реальном мире. В прекрасном мире тырпрайза на одно отношение в базе может понадобиться пара десятков запросов с различными фильтрами (и все это в различных представлениях). Исходя из этого факта репозитории у тебя могут получиться двух видов (и оба сорта говна): реально дженерик репозиторий, без какой-либо сложной логики получения данных. Проблема в том, что он такой нахуй не нужен, потому что смотри про фильтры. Второе: ты пердолишь по методу на каждый вид запроса и твой женерик репозиторий уже нихуя не женерик, а огромная хуйня с протекающей абстракцией.
Далее, вернемся к ОРМ. Дело в том, что когда у тебя есть ОРМ, тебе нахуй не упали репозитории. У тебя уже, считай, готовый репозиторий, но с кучей охуенных вещей, которые ты все равно сам не реализуешь. Городить лишний слой абстракции над существующей абстракцией это одновременно и аутизм, и долбоебизм.
Тут, конечно, кто-нибудь прокукарекает про то, что если мы захотим сменить в будущем ОРМ или БД (лел), то с репозиториями не нужно будет пердолиться с DAL, а вот если везде таскать ISession или IDataContext, то нам пизда. На это можно только ответить, что в зрелом проекте менять ОРМ (а уж тем более СУБД) будет либо компания, которая может себе это позволить и это в любом случае будет больно, либо конченный долбоеб.
Опять же, что касается тестов. Не знаю, как там в EntityFramework, но в NHibernate стабы на ISession делаются не сложнее, чем стабы на любой другой интерфейс, да и поднять быстро прямо в памяти и потестить сложную логику сохранения и\или получения данных - дело пяти минут.

tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF (или любым другим ОРМ) и внедряй интерфейс везде, где он нужен.
#321 #576960
>>576856

> DAL с EF


Похоже я неправильно понял что такое репозиторий, в моем понимании это и был DAL класс, мы же и там и там методы доступа к данным определяем.
#322 #576981
АНАНАСЫ, как в массиве, в листе, похуй, пройтись фором не по прямой а по наклонной. У меня есть на изображении прямоуголник повернутый, мне надо его площадь измерить. З.Ы EmguCV rotatedRect если че.
#323 #576982
>>576981
не площадь, а каждый пиксель(эелемент массива) внутри этого прямоугольника.
8 Кб, 819x127
31 Кб, 782x657
5 Кб, 437x160
#324 #577062
Почему-то не ставится нормально Ninject при создании с помощью шаблона MVC и выдает ошибки
При этом, когда я ставил его на пустой проект тем же способом
Install-Package Ninject, Ninject.Web.Common, Ninject.MVC3 все было ок.
Но теперь в созданном классе NinjectWebCommon
Во-первых подчеркивается, кажется, решапером класс бутстраппер
Во-вторых компилятор не видит IKernel хоть библиотека Ninject подключена
#325 #577147
>>577062
Разобрался, Nuget писал что присутствует библиотека, которой фактически не было в проекте
#326 #577203
>>576856
http://www.thereformedprogrammer.net/is-the-repository-pattern-useful-with-entity-framework/
Вот похоже статья на эту тему как раз.
#327 #577283
>>570067 (OP)
шарпобоги, помогайте:
я юнете програмист(ладно-алдно, кодер). вполне себе успешный, но нихуя не загадка, что юнити не будет жить вечно.
сабж: осмыслить шарп как таковой(интырпрайзовый) дохуя ли нужно будет ума? или пойдет?
#328 #577362
http://pastebin.com/0gd2bKAe
вот такую вот хуету навалял, уверен что всё это говно можно заменить простеньким циклом. подскажите как.
#329 #577584
>>577362
Что сделать то хотел?
#330 #577628
>>577584
я совсем дибил, нашел сайтец с модулями по с# и пытаюсь их делать. Изначально задача выглядит так:
есть 3 переменных типа дабл, нужно чтоб програма их сравнивала и сумировала 2 самых больших, если все 3 переменные равные должно выбить ЕРОР.8
#331 #577636
>>577628
if (array.All(x=>x[0])) error
array.OrderByDescending(x=>x).Take(2).Sum()
#332 #577705
>>576960
Методы доступа к данным тебе не нужны, у тебя есть интерфейс контекста, через него ты дергаешь базу.
Если у тебя относительно сложная логика получения (сохранения, удаления, изменения) данных, то в этом случае лучше воспользоваться паттерном Query Object. Суть его (коротко) в том, что ты инкапсулируешь сам запрос в отдельный объект. Плюс его в том, что он больше соответствует OOP way и такие объекты-запросы даже можно использовать в нескольких местах (хотя тут уже от организации данных и способа их получения зависит).
Вот тут можешь про него глянуть http://crosscuttingconcerns.com/CommandQuery-Object-pattern
#333 #577740
Ребята, подкиньте литературы для начинающих (совсем начинающих), чтоб с основ и дальше.
Работа есть (не в сфере программирования), решил как хобби геймдевом заняться, как движок подходит юнити, а там шарп знать нужно. И если графин я пилить могу, то с кодом, конечно, проблема.
#334 #578152
>>577636

>x=>x[0]


Вот тут не понял
#335 #578155
>>578152
array[0]
#336 #578163
>>578155
Я все равно не понял.
Там же сравнить все три нужно, нет?
#337 #578165
>>578163

>array.All(x=>array[0])


array.all(элемент=>предикат) проверяет каждый элемент на соответствие предикату, возвращает true если соответствуют все или коллекция пуста.
x=>array[0] - краткая альтернатива x=>x==array[0]. Т.е. каждый элемент сравнивается с первым.
#338 #578166
>>578165
Теперь понял, спасибо.
Первый раз такое сокращение вижу.
#339 #578171
>>578166
Не слушай этого линкозависимого.

0) Просто отсортируй входной массив (загугил как).
1) Сложи первых два элемента.
2) Опционально проверь все значения на равенство.

Все просто.
#340 #578172
>>578171
Я тут вообще мимоходом. LINQ - true, просто сокращение непонятное.
7 Кб, 254x253
#341 #578190
Почему у меня не работает DrawLine не рисует, никаких ошибок не выдает.
http://ideone.com/Es8zta
#342 #578192
>>578190

>this.panel1.MouseDown +=


Вангую, что нужно еще -= для текущего метода.
#343 #578194
>>578192
Спасибо огромное, я второй день в депрессии из-за этого был.
#344 #578198
>>578194
Видимо мне надо книжку какую-нибудь почитать, чтобы в такое говно не вляпываться.
#345 #578241
>>578192
Кстати насчет -= что он будет если такого действия нет в делегате? Можно как то проверить?
#346 #578253
>>578241
А самому взять и попробовать? Просто ничего не будет. Если зачем-то еще нужно проверить - есть метод .GetInvocationList(), возвращает Delegate[]
#347 #578310
public Task<Bitmap> GetLastImageAsync()
{
var image = _images.Count > 0 ? _images.Last() : null;
return image?.GetImageAsync();
}
Ничего не забыл? или нужно await у GetImageAsync ставить?
#348 #578316
>>578310
Даже не знаю. Зачем тебе тут await?
#349 #578317
>>578316
Да сам не знаю, вроде и без него работает. Но VS при наведении на метод говорит usage await GetImageAsync. Вот и подумал, что может надо.
#350 #578398
Хочу начать разрабатывать мелкий софт под мобильные платформы. Какие есть решения, помимо Xamarin?
#351 #578433
>>578398
Писать на жабе.
sage #352 #578469
>>577705
А не проще сделать View на все случаи жизни и потом извлкать из них данные в нужные сущности? А изменять/удалять уже не сложно будет, имея список записей с примененным на них фильтром.
#353 #578653
Есть класс "матрица", которая в основном состоит из массива даблов. Как сделать, чтоб это не обязательно были даблы, а еще и инты-децимал например? Через дженерик вроде не вариант, мол нельзя нормально ограничить where T : Numbers (грубо говоря). Как-то через object, dynamic, ... ?
#354 #578666
>>578653
Я в свое время с такой же проблемой столкнулся, только хитровыебанные костыли
http://stackoverflow.com/questions/5905563/c-sharp-generic-operators
Сам я просто взял и на фшарпе переписал, там такое сделать несложно
#355 #578667
>>578653
Как раз таки в шершавом это нормально делается через дженерики, в отличии от явок-скалок там всяких. Просто параметризуй это дело объектами-полями ( https://en.wikipedia.org/wiki/Field_(mathematics) ), содержащими реализацию операций для нужного типа. Можешь дефолтануть (реализовать default(Field<int/float/etc>)) и тогда не надо будет инжектировать всюду.
32 Кб, 1865x426
6 Кб, 675x121
#356 #578680
Как такой запрос через LINQ сделать?
В таблице к каждому работнику может приписана несколько должностей, но при этом он может быть приписан только к одному департменту. Поэтому мне подходит любая запись из таблицы Staff которая относится к данному сотруднику, чтобы бы потом через нее выйти на Id Департмента, а через него к Id Компании. В LINQ так сделал, но оно не прокатывает, потому что к индексу нельзя обращаться в LINQ to Entities
List<Employee> employees =
context.Employee.Where(
e => (e.Staff[0].DepartmentId == 3) && (e.Staff[0].Department.CompanyId == 1))
.ToList();
#357 #578694
>>578653
Вот, держи: http://ideone.com/fsQSkw
Вместо Magma можешь там сделать тот Field, в котором будет больше операций и нейтральные элементы по ним (см вики). Ну и по-дизайну уже сам думай, скармливать ли алгебры параметрами в Sum/Mul/Div, или лучше один раз в конструктор, или в методы, но как-нибудь задефолтить, чтоб не надо было вручную передавать постоянно и тд.
17 Кб, 1450x207
#358 #578725
>>578680
Нашел конвретер генерации LINQ с SQL http://www.sqltolinq.com/help
Сразу то что надо сгенерировал даже править не нужно было
2 часа на один запрос потратил, пиздос.
#359 #578732
>>578667
Ну охуеть икспертиза. Вот quick-and dirty snippet
(писал на ideone, поэтому лень было делать правильно).
http://ideone.com/SHd9XQ
#360 #578734
>>578732
Извини, в

> в шершавом это нормально делается через дженерики, в отличии от явок-скалок там всяких


Я имел в виду что в сишарпе есть value-типы, и генерики корректно и юниформно работают с ними. В Java/Scala ты даже не можешь сделать анбоксед массив кастомного типа. Ты даже не можешь объявить матрицу нормально, потому что каждая матрица - это будет выделение в куче, которое внутри содержит ссылку на другое выделение в куче (сам массив). Там, где вообще нужны матрицы - это всё важно.
В скале начали делать http://docs.scala-lang.org/overviews/core/value-classes.html но этого слишком мало.
#361 #578738

> Там, где вообще нужны матрицы


Там строго кресты, потому что в них можно подсунуть специализированную реализацию для нужных типов.
#362 #578744
>>578738
Вообще да. Но если нет возможности, то здесь хотя бы модель памяти можно проконтролировать. Оверхед на косвенные вызовы численных операций по сравнению с тем, как их бы заинлайнили в цпп, менее критичен и более равномерно размазан по времени.
#363 #578745
>>578744
В крестах можно написать Vec3[A], где для A = float можно указать полностью специализированную реализацию класса, которая является инлайн-оберткой для __m128 (SIMD vector4)
#364 #578749
Так блядь, байтослесари и скалаёбы, пиздуйте отсюда на свои помойко-треды, не мешайте нормальным людям обсуждать C#.
#365 #578757
В сишарпе можно как в джаве передавать экземпляры сущностей сразу к контексту, а не как к конкретному DbSet?
В джаве можно было благодаря этому писать постые дженерики типа такого

public <T> void edit(T f, Class<T> type) {

EntityManager em = emf.createEntityManager();
try {
em.getTransaction().begin();
em.merge(f);
em.getTransaction().commit();
} catch (IllegalArgumentException e) {
System.out.println("Не найдено такого объекта");
} finally {
em.close();
}

}
#366 #578760
>>578749
Будто бы в шарпе SIMD нет
#367 #578763
>>578745
Если речь идёт о частоиспользуемых в 3д фиксированных матрицах (3х3, 4х4), операции которых можно анрольнуть и слегка заоптимизировать через SSE, на C# остаётся только ручная мономорфизация и http://docs.go-mono.com/?link=N%3aMono.Simd
Правда, если речь о симуляциях и играх, там один фиг лучше везде использовать флоаты и хотеть гарантированного SSE, так что проблема полиморфизма стоит не слишком остро.
#368 #578766
>>578760
Я не понимаю по байтоёбски, уёбывай.
#369 #578809
>>578694
Спасибо огромное, заюзал твой способ, задавать операцию параметром в метод это то, что нужно. В эту сторону вообще голова не думала.
#370 #578915
>>577705

>Методы доступа к данным тебе не нужны,


Начал делать без методов, тогда весь DAL находиться непосредственно в контроллере, в котором используется. Это норма?
#371 #578936
Раньше в шапке вроде была рекомендация Yellow Book. По какой причине отказались?
#373 #578955
>>578915
Кидай код, короче, тут тебе пояснят
#374 #579066
>>578936
Говно со смехуёчками.
#375 #579132
Подскажите, пожалуйста.
Нужно, чтобы определенный метод запускался, когда DateTime.Now станет равным определенному значению. То есть, в определенное время чтобы он запускался.
Можно это сделать красиво? Какие-нибудь системные события может существуют?
Сравнивать в бесконечном цикле текущее время с целевым - какой-то совсем убогий способ.
#376 #579141
>>579132
Таймер на (целевое время - текущее время) тоже мне не нравится. Помню на С++ таймеры делал, они от системного времени отставали. Незначительно, но если на 10 часов вперед задачу поставить, то погрешность несколько минут накапливалась.
#377 #579188
>>579132
на сколько мне известно, у тебя не особо много вариантов:
- цикл;
- таймер;
- расписание задач в вине;
- какая-нибудь либа для выполнения задач, типа кварца http://www.quartz-scheduler.net/
#378 #579192
Анончики, подскажите как лучше сделать или по каким словам гуглить.
Винда/моно. В рамках моего проекта надо обеспечить эксклюзивный доступ к папкам на лежащим на шаре. То есть у меня где-то создался объект, в папке что-то произошло (допустим локфайл создался), остальные все видят, что папка залочена и не лезут.
Создавать/удалять файлы - не айс, в случае проблем сети. Если подымаю FileStream с эксклюзивным локом на рид, то проблемы сети просто не замечаю. И еще если в том же потоке пытаюсь поднять еще один стрим на рид, то он фейлится, говорит что кто-то залочил.
Как такое реализовывать или гуглить?
#379 #579197
>>579188
Ясно, спасибо. Вот это погуглю

>- расписание задач в вине;

#380 #579234
Поясните за yield. Msdn дрочил, но не вкатился в суть.
97 Кб, 1024x778
#381 #579243
>>579234
Состояние генерируемому компилятором автомату добавляет.
IEnumerable<int> Items()
{
yield return 1;
yield return 2;
yield return 3;
}
ver e = Items().GetEnumerator();
e.MoveNext(); // 1
e.MoveNext(); // 2
e.MoveNext(); // 3
#382 #579251
>>579243
а чем отличается от простого return? Тем, что он завершит выполнение метода, сразу после вызова?
#383 #579255
>>579251
Тем, что он, во-первых, скажет компилятору сгенерировать и вернуть реализацию IEnumerable c автоматом на основе метода, в котором указан. Во-вторых, yield return — это состояния, по которым этот автомат будет ходить, если дергать его метод MoveNext. С обычным return, который переходит на адрес возврата функции, нет ничего общего. Не знаю, возьми рефлектор и просвети хелоу ворлд с yield return. Может понятнее станет.
#384 #579259
>>579255
Да норм объяснил, спасибо.
#385 #579268
>>579259
Ну, ты все же под рефлетором сборку-то глянь.
#386 #579276
>>579251
http://ideone.com/zyEkJE
Скопируй и посмотри в отладчике, раз уж так не понятно
62 Кб, 1366x768
#387 #579450
Как ошибку эту исправить?
#388 #579478
>>570356

>Дотнет изучают ради комбы ASP.NET + WCF.


Тащемта да, вся денежная работа находится в этом сегменте. Плюс за последние год-полтора очень сильно подтянулось Mono, теперь кроссплатформенность во все поля.
Бета MVC 6 уже нормально работает на линуксе главное, кучу всего правильно скомпилировать на хост-машине, лол.
#389 #579480
>>579450
Смени private на public, там же написано об этом.
#391 #579491
>>579480
>>579484
Спасибо, не заметил.
#392 #579507
>>579450
Бизнес-информатик в треде, все в кирпич
#393 #579589
{
using (var conn = new OracleConnection(connectionString))
using (var adapter = new OracleDataAdapter(query, conn))
{
var table = new DataTable();
adapter.Fill(table);
return table.Copy();
}
}
Почему в дататабе только заголовки от запроса? Запрос верный.
#394 #579592
>>579589
Разобрался, все таки, запрос был в CP-1251.
#395 #579738
Есть какой нибудь простой редактор на c# для datatable наподобие Excel, с фильтрами, сортировкой. Формулы не нужны.
#396 #579796
Нужно ли кидать await (веб-запрос, в моем случае) в try-catch?
#397 #579870
Посоветуйте что по конфигурации IIS почитать и SSL
#398 #579875
>>570473
бамп вопросу
#399 #579913
>>572655
вы блять поехавшие? стек на массивах можно нормально только через указатели реализовать, те на плюсах онли
второкурсота
#400 #579995
>>578955
Ну вот код контроллера(круд для работников), там в целом я по примеру делал, только код доступа к данным вынес в сам контроллер и таблицы из базы другие. В примере использовали паттерн репозитория.
Контекст я через нинджект внедрял, только непонятно зачем. Пришлось переопределить метод SaveChanges, например, хоть он ничего нового не добавляет в функционал а вызывает родительский метод. Наверное, нужно было создавать контекст сразу в контроллере конструктором и без нинджекта.
И еще тот здоровый запрос дважды исользовал, можно было выгрузить в память и применить Count к коллекции, но это же вроде неоптимально — выгружать все записи в память.
https://ideone.com/efNvCE LINQ здесь поехало, в студии ровненько выглядело.
#401 #580124
Не обоссывайте только, плиз. Как в цикле вызывать методы с разными именами на каждую итерацию? method_1(), method_2(), method_3(). Т.е. вместо 1 2 3 нужно чтобы был индекс.
#402 #580136
>>580124
А зачем тебе это нужно?
#403 #580143
>>580124
Такой хуйни быть не должно, ты очевидно что-то делаешь не так.
#404 #580146
>>580124
рефлексия же.
MethodInfo hui = typeof(Pizda).GetMethod("method_"+i);
hui.Invoke();
как-то так ёпта
#405 #580148
>>579913
Идиот.
#406 #580289
>>580148
согласен, а где я не прав?
#407 #580383
>>570067 (OP)
Поясните обывателю или ткните где почитать в чем разница между int a = 5; и int a = new int(5); Конструктор по умолчанию бла бла В чем профит от второго варианта? И где лучше всего почитать про свистопляски с типами?
#408 #580463
>>580383
Нет разницы.
#409 #580570
>>576856

>tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF


Если разбираться, то DbContext и есть дженерик-репозиторий о чём многие даже не подозревают, только напичканный всякими плюшками до усрачки. Городить отдельные репо, используя EF - это, как минимум, просто тупо и потеря времени.
#410 #580571
>>580124
Используй коллекцию делегатов или лямбд, если знаешь какие методы надо вызывать. А иначе остаётся только reflection.
#411 #580576
>>580570
Вот только я забыл сказать, что EF - лютый слоупок. Когда нужна скорость, быстрее всего работают именно те самые "немодные" SQL-запросы (это даже быстрее дэппера и прочего говна).
#412 #580619
>>580576
Когда нужна скорость, используют хранимые процедуры и смотрят план выполнения запроса.
#413 #580628
>>580136
>>580571
Есть группа радиобаттонов, надо проверить какой из них в данный момент активен и вызвать событие Checked активного.
#414 #580631
>>580628
Проверяю я примерно так:
foreach(RadioButton Rb in GridName.Children)
if(Rb.IsChecked)
//тут надо вызвать событие Checked конкретного радиобаттона (у каждого оно своё)
#415 #580682
>>580631
У них нет стандартного события смены значения?
#416 #580688
>>580463
Ну охуеть теперь. Спрашивается зачем они прикручивали эти навороты?
#417 #580708
>>580688
Какие навороты? У Int32 нет конструкторов. Про то, как значимые типы хитро прикручены к объектной модели, можно, наверно, у Рихтера почитать, но по-сути это не особо важно знать.
#418 #580723
>>580682
Мне надо проверять не в момент когда меняется значение, а когда пользователь в текстбокс. Т.е. вызывается из другого события.
#419 #580749
>>580628
По-моему, ты делаешь что-то не то. Вызывать событие другого класса напрямую не есть хорошо. Но возможно:
http://stackoverflow.com/questions/4378339/raise-an-event-of-a-class-from-a-different-class-in-c-sharp
#420 #580939
Сап, шарпаны. Вопрос такой: имел кто-нибудь дело с Orchard CMS?
#421 #581017
>>578915
>>579995
Бамп вопросу.
#422 #581026
>>580619
Это понятно. Просто сам EF имеет нехилый оверхед. За удобство нужно платить.

>>581017

>тогда весь DAL находиться непосредственно в контроллере


Есть разные мнение на этот счёт. Обычно принято считать, что контроллеры должны быть максимально "тонкими", т.е. вообще не иметь понятия о том откуда берутся данные и как они обрабатываются. Задача контроллера - передавать модель во вью и наоборот.
Посмотри в сторону паттерна
controller <-> service <-> repository (DAL)
Вот в службу и можно вынести все операции с данными и генерацию/обработку моделей. При необходимости сделать взаимодействие службы с репо. А после экземпляр службы внедрять в контроллер инжектом.
#423 #581031
#424 #581044
>>581026
https://ideone.com/1xb9rP
Ну вот я переделал с сервисом.
#425 #581058
>>581044
На вид нормально, контроллер аккуратный получился.
#426 #581059
>>581044
Только я бы ещё вот это

service.SelectEmployees(1, 3)
.OrderBy(e => e.Id)
.Skip((page - 1) * pageSize)
.Take(pageSize),

упаковал бы в отдельный метод сервиса
#427 #581061
Есть код из одного видеокурса из шапки. Вот он, так сказать, собственной персоной : http://ideone.com/Ws9NFW
#428 #581063
>>581061
Понимаю в нем все, кроме public override bool Equals(Object obj)
{
if (obj == null || GetType() != obj.GetType())
return false;

Point p = (Point)obj;
return (x == p.x) && (y == p.y);
}

public override int GetHashCode()
{
return x ^ y;
} Поясните, пожалуйста, мне, каким образом у точек а и b одинаковый хэщкод и зачем вообще нужно тело метода Equals. Все остальное понятно. Заранее благодарю.
#429 #581065
>>581063
Он нужен, чтобы правильно работал оператор ==
У двух точек одинаковый хэшкод, потому что поля имеют одинаковые значения.
https://msdn.microsoft.com/library/336aedhh%28v=vs.100%29.aspx
#430 #581073
>>581065
Одинаковый Хэшкод им обеспечивает переопределение метода Equals? Если закомментить оба переопределения, везде получу False
#431 #581078
>>581073
Одинаковый хэшкод им обеспечивает переопределение GetHashCode.
#432 #581085
C Хэщкодом разобрался. А вот переопределение Equals я так и не понля. Но вес равно спасибо тебе или вам, анон(ы), что помогли советом, а не послали нахуй.
#433 #581086
>>581085

>понял


>все


Самопочин
#434 #581168
Суп, шарпач.
Есть проблемка, нужно изящное решение.
Кароч, есть xml файл примерно такой структуры:
<doc>
<object name="allah" bdate="00.00.00">
<attr name="hui" value="0"/>
<attr name="pizda" value="1.5"/>
<attr name="jigurda" value="lol"/>
</object>
<object name="erokhin" bdate="01.01.1995">
<attr name="hui" value="30"/>
<attr name="iq" value="10"/>
<attr name="car" value="bmw"/>
</object>
</doc>
т.е. у нас дохуя object и у каждого из них неограниченное количество attr имеющих одинаковую структуру. У object'ов могут быть разные attr, заранее мы ничего не знаем о том сколько их и какие у них attr.name.
Так вот, мне надо вывести в DataGrid(wpf) все object'ы, причем так, чтобы выглядело таким образом:
В каждой строке по одному object
заголовки столбцов - attr.name
если у object нет такого attr.name, то выводим прочерк.
Сделал StringDictionary для каждого object, вношу в него и атрибуты самого object и все его attr, но при бинде на этот List<StringDictionary> получается хуйня, выводятся проперти StringDictionary.
Может у кого есть еще адекватные идеи?
задумывался на счет ExpandoObject, но нихуя не понял как они работают
#436 #581174
>>581173
Дай я тебя поцелую, милашка
#437 #581181
Кто там звездит про то что #Веселая Ферма - тайм киллер? Вы вообще в нее хоть играли? Тут #stealth покруче чем в последнем #MGSV - спящие куры просыпаются от малейшего шороха курсора, они видят в даль и в ширину, ОНИ, черт подери, в отличии от болванчиков из последних типа тру стелс игр, НЕСУТ ЯЙЦА, тут учитывается свет и тень, нет укрытий и перекатов и большинство ситуаций в игре можно по стэлсу разрешить не прибегая к громкому оружию. Нет, это конечно не чистокровный стэлс, но для браузерной игры стэлс здесь очень приятный и играется по старинке, а так же бросает не хилый вызов.

Не знаю как там играют каловдуные #yoba школяры по которым (или по себе?) вы судите ферму как убийцу времени, но я в игре больше времени провел играя в адвенчуру, стэлс и симс (пол дня стэлсил, второю половину дня опрыскивал грядки пестицидами, чтобы ни один колорад не прошел, но это уже другая история...) и один из лучших сурвйавал симуляторов, хотя когда созревала куча овощей то игра превращалась в раннер... и тут еще залипал в имитациях классических 8 битных игр вроде Донки Конга

Какой блин тайм киллер, мать вашу? У меня от всего времени в игре (что-то около суток), тайм киллера было от силы на 30 минут! Тут несколько десятков игр в одной, и тайм киллер - очень малая часть из этого списка!

Я прихожу к выводу, что все кто орут "УБИЙЦА ВРЕМЕНИ" - просто вообще не играли и даже толком на ютюбе и твитче игру не видели. Тут столько всего можно и нужно делать!

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

Вот уверен, что каждый орущий про "говно" - поиграв в фермочку 4 - 5-10 часов уже не сможет от нее оторваться пока не наиграет сотню-другую часов.
#438 #581186
>>581181
Что ты здесь забыл?
#439 #581266
Есть несколько паралельных тасков которые работают с БД. Для каждого таска нужно новое соединение или они могут работать с одним?
БД - Oracle
#440 #581270
>>581186
Веселая ферма написана на сишарпе.
#441 #581313
>>581266
Создавай новое.
#442 #581430
>>570067 (OP)
Нужно отправить в метод сторонней библиотеки (доступа к коду нет) массив объектов размером 5+ ГБ. Приложение х86, то есть занимать больше 1.2 ГБ нельзя, иначе будет OutOfMemoryException .

Можно эту проблему решить?
Возможно в дотнет есть какой-нибудь класс вида Image<T>, который не хранит сами объекты, а динамически подгружает их с жесткого диска при необходимости?
#443 #581443
>>581430
Даже если изображения будут читаться с диска, грузится они все равно будут в память. А ты уверен что твоя библиотека вовремя выгрузит эти изображения?
#444 #581454
>>581443

>грузится они все равно будут в память.


Но не целиком, а по кусочкам. Чтобы единовременно в памяти 5 ГБ не занимать. Чтобы в памяти были только те данные, которые в данный момент нужны для работы.

Это не изображения, там массивы double длиной в сотни тысяч. Слово Image взял по аналогии с образами физических дисков, которые в англоязычном софте тоже называются Image.

>А ты уверен что твоя библиотека вовремя выгрузит эти изображения?


Идея была в том, чтобы библиотека не знала, что работает с Image<T>, чтобы она воспринимала это как T , а вся черновая работа по подгрузке производилась фоном.

Наверное в дотнет нет такой функциональности, она бы на слуху была.
#445 #581509
как установить .net reflector в качестве расширения VS 2015? Чтобы в самой студии можно было разобарать страницы, et cetera?
#446 #581526
>>581509

>разобарать страницы


М?
#447 #581550
>>581430
Можно, например, чтение из файла реализовать итератором а-ля File.ReadAllLines(). Хотя, если библиотека ждет массив, то уже не попляшешь.

Вот про отображение файлов в память: https://msdn.microsoft.com/en-us/library/dd997372%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396 . Признаюсь, сам не читал, но вроде в C++ работают с большими файлами так.
6 Кб, 701x253
#448 #581561
Сап.
Есть ли какая-то нативная реализация netstring http://cr.yp.to/proto/netstrings.txt в .NET/mono
?
Выручайте.
#449 #581564
Стоит перекатиться с плюсов на ЭТО? Какие изменения меня ждут?
#450 #581586
>>581561
Нету.
#451 #581605
>>581564
Нет, уёбывай обратно в свой байтоёбский тред.
#452 #581607
>>581605
Не был там никогда.
#453 #581641
как мне в датагриде на wpf вывести List<Storage> Storages
public class Storage
{
public string Name;
public int Id;
public Dictionary<string,int> Products; //string - name, int - count
public string IdName
{
get{return string.Format("{0}:{1}",Id,Name);
}
}
чтобы выглядело так:
Склад |Product1|Product2|Product3|...
----------------------------------------------------------
0:Главный |1 |2 |3 |...
1:Дополнительный|3 |2 |0 |...
#454 #581669
>>581605
Чего такая ненависть к сиплюсплюс?
Я никогда не писал на них, только на читстом си когда-то давно
Но все же?
#455 #581683
>>581669
Он просто мудак.
#456 #581692
>>581683>>581669
Байтослесари полыхнули, кек.
#457 #581701
#458 #581702
>>581692
Высер типичного первокурсника.
#459 #581709
>>581586

>Нету.


Спасибо.
Аноним #460 #581714
>>571187
Это защита от дурака. В сисарпе и джаве все так сделано, чтобы было сложнее выстрелить себе в ногу. Так же, как и бреак в свитче, и ретурн из файнали, и неявное приведение типов.
В каком-нибудь С у тебя была бы локальная переменная на стеке, и содержался бы там совсем не налл, а непонятная муть, и получилось бы undefined behaviour
#461 #581731
>>581714
Как будто что-то плохое.
#462 #581734
>>581731
Проиграл.
#463 #581763

>>An unhandled exception of type >>'System.InvalidOperationException' occurred in WindowsBase.dll


>>Additional information: Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.



Как изменить myLabel.Context из потока, который не является основным? lock вешаю - ничего не меняется.

Если никак, то зачем вообще многопоточность нужна, если дополнительные потоки не могут получить доступ ни к каким данным из основных потоков? Только какие-то методы странные запускать, которые работают в вакууме и ни с какими данными из основной программы не взаимодействуют.
#464 #581765
>>581763
Гуйный поток работает в изолированном окружении. К его данным обратиться можно только через диспетчер, который шедулит делегаты на исполнение в цикле сообщений. Если мне не изменяет память, то в винформс — это (Begin)Invoke метод у контрола, а в впф — класс Dispatcher.
#466 #581775
var dgv = sender as DataGridView;
var scanImage = dgv?.CurrentRow?.DataBoundItem as ScannedImage;
if (scanImage == null) return;

Нормальный код или умные люди так не пишут?
#467 #581798
>>581775
Почему Троэсен говорит не использовать var (кроме LINQ), но его все-равно используют поголовно все, в том числе сами МС? Это уебанство же, невозможно код читать.
#468 #581811
>>581765
В потоках, не связанных с WF/WPF такой проблемы нет, можно спокойно обмениваться данными?

>>581772
Спасибо, сделал, работает. Ужасно неудобно, куча пустой работы на ровном месте.
#469 #581816
>>581811

>куча пустой работы на ровном месте


Никто не заставляет, lock в руки и синхронизируйся сам. Или даже не синхронизируйся, если ты опасный и любишь жить на краю.
#470 #581817
>>581798
var нужно использовать когда это уместно.
#471 #581819
>>581816
Кстати, public object Locker в классе норм, или тоже говнокод?
мимо->>581775
#472 #581820
>>581817
var fdvkjshfdjvksehrd = new jdfhsdfgiusfdj();
foreach (var item in fdsajkfshdfvhfds)
{
gdlkgudishgdrgh.gdrkuvhfdkurfh();
}
#473 #581821
>>581819
private рекомендуют.
#474 #581845
Шарпаны, имеется ли какой-нибудь годный задачник по C#, чтобы охватывал прям все фичи языка? Хочу закрепить знания, как только дочитаю Шилдта.
#475 #581878
>>581845
Правильный вопрос: имеется ли хоть какой-нибудь задачник по C#, чтобы охватил хоть какие-то фичи языка?
Нет, не имеется.
Все книги - просто документация, пересказанная своими словами.
#476 #581879
>>581819
Публичный объект для синхронизации? Любишь дедлоки ловить?
#477 #581880
>>581879

>Любишь дедлоки ловить?


Еще не знаю, ни разу не пробовал.
#478 #581884
Есть тут успешные бизнесмены? Или все в офисах за еду сидят?
#479 #581886
>>581884
Не знаю. Сижу дома, ем. В офис ехать лениво.
#480 #581894
>>581878
Жаль.
Но почему? Ведь для асма имеется, для плюсов тоже.
#481 #581898
>>581894
Просто сишарп интуитивно понятен. лол
#482 #581901
>>581894
Плюсы - нативный язык, шарп - скриптовая хуйня для виртуальной машины дотнет.
На плюсах программируют. На дотнет конструируют. Из уже написанного кем-то кода. Соответственно, навыки нужны совсем разные. На шарпе можно заправски кодить, не зная половины синтаксиса. Достаточно знать самые основы и уметь пользоваться документацией.

Ты же не удивляешься, что по 1С нет книг с задачками программирования? А в чем разница с сишарп? Такой же скриптовый язык, специально созданный для применения в одной единственной программе.
#483 #581904
>>581901
Байтохохол, тебе же сказали уёбывать отсюда.
#484 #581912
>>581904
Вообще-то я на шарпе пишу, с++ знаю на уровне второго курса деревенского говновуза (именно тогда прекратил им заниматься).
Зачем факты отрицать? Сишарп - это использование стандартного функционала нескольких встроенных фреймворков дотнет. На этом область применения заканчивается. Ах да, есть еще школьники, которые делают контерстрайки на юнити.

Если ты знаешь основы синтаксиса и как Бог владеешь документацией - ты без затруднений решишь 99% задач, которые ставятся перед дотнет разработчиком.

Мы не программисты, мы - прослойка между настоящими программистами и блондинками-верстальщицами.
По идее, для нашей профессии должны были новое слово придумать, но не сложилось. Верстальщиков вот не называют программистами, хотя они тоже "пишут код".
#485 #581913
>>581884
У меня батя успешный бизнесмен.
Что у него спросить?
#486 #581925
>>581912
Такое слово есть — прикладной программист. Байтоеб — системный.
#487 #581927
Не ссорьтесь
#488 #581929
>>581913
Спроси, как программисту в мухосранске заработать больше 10к$ за год.
#489 #581931
>>581912

>кококо кукарек кудах сиплюс мастеррейс я жру говно кудах!!!!


Ясно.
#490 #581941
>>581811

>В потоках, не связанных с WF/WPF такой проблемы нет, можно спокойно обмениваться данными?


Писать из чужих потоков нельзя только в элементы гуя, остальное объявляешь используемые поля через volatile и ебашишь многопоточность.
#491 #581945
>>581811

>Спасибо, сделал, работает. Ужасно неудобно, куча пустой работы на ровном месте.


На самом деле ты еще просто молод, чуток привыкнешь работать с асинхронными методами и почитаешь что-нибудь про то как нормально писать код и поймешь, что вся эта "пустая работа" это на самом деле здорово упрощает жизнь когда начинаешь что-то менять.
#492 #581953
>>581772
Очень неудобный способ. Он бы ещё вагон делегатов делал как в 2008-м.
Так гораздо короче:
http://stackoverflow.com/questions/571706/shortest-way-to-write-a-thread-safe-access-method-to-a-windows-forms-control
#493 #581970
Привет, анон.

1. void Method (object[] bigArray) {}
2. void Method (ref object[] bigArray) {}

В первом варианте внутри метода создается копия объекта. Во втором - используется уже существующий объект.
Все верно?

Если так, то мы должны использовать ref для входных параметров почти всегда. Просто чтобы экономить память. Зачем нам клонировать объекты лишний раз, если мы ни один из них редактировать не собираемся?

Почему так обычно не делают? В родных библиотеках ref вообще не помню, чтобы встречал где-то.
#494 #581978
>>581953
Охуенно, сейчас проверю.
Если заработает - заранее тебе спасибо авансом.
#495 #581980
>>581970
В первом случае копируется ссылка на объект, во втором ты передаешь ссылку на ссылку на объект.
#496 #581982
>>581978
Так тебе еще в >>581765 об этом сказали.
#497 #581986
>>581978

>Если заработает


Заработает, инфа 100%.
#498 #581999
>>581763
Можно же использовать await для получения данных из другого твоего потока, он возвращает в ui поток, псоле этого можно просто обращаться к контролам, без диспатчеров и инвоков.
#499 #582005
>>581970
https://dotnetfiddle.net/3CCNa2
Это, по-сути, равносильно говнокоду на си:
http://pastebin.com/KQjpq1a3

>В родных библиотеках ref вообще не помню, чтобы встречал где-то.


В методах для копирования массивов есть. Array::
Программирование Анон #500 #582007
Порекомендуйте что-нибудь для начинающего программиста на шарпе, раньше кодил на паскале для олимпиад, так что алгоритмы умею составлять, синтаксис шарпа знаю неплохо, всяческие алгоритмы напишу
хотелось-бы начать писать что-нибудь серьезное
#501 #582014
>>582007
Веб приложение (ria) для интернет магазина. Проводник aka explorer.
#502 #582026
>>582007
Фреймворки изучай. Для чего-то серьезного нужны не замысловатые алгоритмы, а знание библиотек и умение писать простой понятный масштабируемый код.
#503 #582044

x86 не индексирует больше 2 гигов ОЗУ
@
x64 не работает с СОМ библиотекой
@
разделяешь приложение на две сборки
#504 #582063
>>582026
какие порекомендуешь?
#505 #582071
Макаканы, в каких задачах сейчас используется Диез?
#506 #582073
>>582071
Тех же что и джава
закончили тут #507 #582075
Там перекатили, но ОП заболел аутизмом и забыл сюда сказать
>>582010 (OP)
#508 #582079
>>582063
Стандартный набор второкурсника: ado, entity, asp, wcf, wpf, wwf.

>синтаксис шарпа знаю неплохо


Знаешь, что такое Linq и лямбда-выражения? Умеешь перегружать операторы и расширять методы? Знаешь, что такое BinaryFormatter и ленивая инициализация? Уверенно применяешь асинхронное программирование в повседневном коде? Знаешь, как используется позднее связыванние и атрибуты? Знаешь, зачем нужны анонимные и динамические типы? Знаешь, чем абстрактный класс отличается от интерфейса?
#509 #582088
Кто-нибудь проходил курс шарпа на Hexlet.io? Как он? Есть ли вообще годные онлайн-курсы по шарпу? Каким переводам книг по шарпу можно доверять, что они не теряют смысл первоисточника? В английский могу очень хорошо, но читать много и по долгу на английском сильно устаю.
#510 #582113
>>582088
Если ты настроен всерьез - не ищи лучший вариант, используй все варианты одновременно. Прочти все книги, какие найдешь, пройди все курсы, какие найдешь. В одной книге чего-то недопоймешь - уточнишь в другой/в документации/в гугле/на практике.

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

Если ты не готов тратить от года ежедневных занятий на учебу, то даже не начинай.
#511 #582164
>>582079
Где это можно лучше всего подтянуть? книги/видео/сайты?
762 Кб, 1024x768
#512 #582256
Есть метод с такой логикой: http://pastebin.com/Pzu7wLhc
Т.е. запускается таймер, которые каждые 100 мс делает что-то, и он останавливается через timelimit мс. Когда он остановится, внутри метода надо сделать кое-что и возвратить значение. Как это реализовать?
#513 #582749
>>582256
if(timer.Enabled==false)
{}
Тред утонул или удален.
Это копия, сохраненная 8 декабря 2015 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски