Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Что почитать: - 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)
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
>>570263 Я знаю, чем это делается. Но ты же не просто по фану вайпаешь тред, уйдя пить чаёк, ты следишь за его перекатами, отвечаешь мне - именно что проебываешь своё время. Вангую в тебе баттхертнутого безработного/студентика/свидетеля опенсорса и швабодки, ибо представить адекватного человека, который бы стал проебывать свободное от трудовой деятельности время я не могу. Можешь верещать что угодно в ответ, мне похуй, я выводы сделал, омежка ты обоссаный)))))
>>570279 Так он же мамкин воен с дотнетом, который не нужен. А на деле даже на доширак себе заработать не может и завидует черной завистью успешным крудошлёпам на asp.net за 3к $ в месяц :)
>>570331 Я тебе только что объяснил, десктоп под винду. На джаве писать гуишные приложения — боль. Паттерн мввм реализуется через жопу. А си шарп берёшь и хуячишь на одной платформе всё. ВЦФ тоже удобен, в целом на сишарпе гораздо легче писать, чем на джаве. Если хочешь знать различия на более низком уровне, то тебе в соответствующие статьи, там тебе каждую мелочь объяснят.
>>570320 Ты, кажется, не понимаешь, что язык - это просто инструмент и каждый язык нужно применять сообразно задачам. Дотнет был запилен для быстрого написания корпоративного говна и вполне хорошо себя показывает там, тем более что лучше всех остальных. Написание программ на нём дает мне неплохие деньги, выше чем у других программистов (кроме javaребят) и все пищущие для микроконтроллеров за еду/швидители швабодки давятся от озвученной суммы заработка и начинают что-то там верещать.
Ты просто показываешь себя невероятным дауном, говоря такие глупости. А самое что ужасное - ты показываешь себя очень некомпетентным, а это в данной профессии хуже рака. Это как кричать >ДРЕЛЬ - ГАВНО, А ВОТ МОЛОТОК - ЗАЕБИСЬ РЯЯЯ В общем, смотри свои бурятские мультики под пельмешки дальше, пока дяди зарабатывают деньги, дружок.
>>570355 Чего тебе нужно? Окей, мы идиоты, изучающие платформу, которая бесполезна и не востребована. Можешь считать, что у нас такое странное хобби. Какое тебе дело? Наши вкусы так важны для тебя, что ты будешь тратить время и энергию, чтобы нас переубедить?
>>570355 >Но ведь для сисярп/жабы нет подходящих задач Потому что ты сказал? Просто кек.
>А твои мантры я уже слышал тысячу раз про инструмент под задачу. И это как-то отменяет их правдивость?
Хотя чего я вообще разговариваю с дауном, все вскукареки которого сводятся к >оппонент сказал X = Y >я скажу что X != Y и не приведу ни одного аргумента
>>570363 >бессмысленно деятельности. Ну, во-первых, мы этим зарабатываем себе на весьма небедную жизнь, в отличие от маминого борщехлеба. А во-вторых... впрочем, на этом и закончим.
>>570356 А теперь быстренько пояснил мне в каких сферах ты используешь вцф? Также хотелось бы услышать как там поживает асп.нет? С седьмой беты до восьмой ты обновлялся? Заебись?
>>570367 Я не работаю, я еще маленький. Вакансии просматриваю время от времени. Везде ASP+WCF. Вакансию на десктоп не встречал ни разу за несколько лет. Кое-где указывают WPF в списке требований, где-то двадцатой позицией в списке. Город-милионник.
Анчоусы, как думаете, где будет дотнет через год-два? Ухожу в армию и боюсь, что мне придется чуть ли не переучиваться полностью по возвращению из неё.
1. На дотнет делают Андроид и иОс приложения? Или это плохо работающие возможности, которые лучше не использовать? 2. Почему поддержки МакОс нету? Это намеренные действия МС, чтобы конкурентную ОС не поддерживать?
>>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
>>570288 Все, что угодно. Можно писать серверные приложения без какого-либо UI. Можно писать движки баз данных (RavenDB). Можно поддерживать говно на винформах. Можно писать десктопные приложения на винформах и впф. Можно веб на асп.нет мвц. Можно еще REST сервисы хуярить, только они не нужны.
Антоны, хелп. Как переопределить Equals так, чтобы можно было определять, что например два падика одинаковые, если ссылаются на один дом? (т.е сравнение по ссылкам)
Суп, аноны. Посоветуйте, куда пойти получать опыт работы (живу в ДС), шарп учил соло, осознал шилда, мартина и банду 4х. Сам студота, медвуз, кибернетик, 4 курс.
>>570488 Не, внезапно это был другой анон. >>570487 Ну ты и дебил, все это выше постилось одной строчкой на bash. Но сейчас нормально сделаю. И чтоб куклой не скрывалось.
(Автор этого поста был забанен. Помянем.)
Написать что угодно и на крестах можно. Я просто хотел узнать, что светит мне, если я захочу податься в шарп. На данный момент прохожу испытательный срок в фирме, пишу десктоп на Qt. Подумал, что не так уж и плохо. До этого учил джаву, но заебался на туевой куче фреймворков ебучие бины и связанные с ними эксепшены до сих пор мне снятся в снах.Но так как я студентота без опыта работы, хотел бы узнать основные направления в топовых ныне на рынках языках в моем мухосранске это джава, сисярп и кресты, пхп и прочая ебень мне малоинтересна.
Есть такая копипаста учебного кода Когда я загружаю страничку все текстбоксы заполнены значениями модели, хоть нигде во View присваивание атрибуту value не делается и в конструкторе там где должно блыть value передается null. То есть получается указав текстбоксам id, name соответствующие именам свойств модели эти текстбоксы будут автоматически заполняться значениями модели?
Прошу прощения за вайпера, он у нас дурачок. Но вы в следующий раз жмите жалобу сразу, а то я чисто случайно узнал, лол. мод-крестоблядь Раз уж вы перекатились, то я тот тред просто закрою, чтобы двух сразу не висело.
Почему HttpClient (да и WebClient) загружает сжатые файлы? Вот к примеру скачал файл, который должен весить 300кб, но после загрузки весит 86к. http://pastebin.com/M2gDJbnr
>>570067 (OP) Сап, шарпач. Сейчас упарываюсь созданием простенького редактора картинок\иконок с упором на пиксельарт. Но вот возникла большая проблема: вменяемого примера редактирования картинок с масштабированием пикселей я не нашёл. Всякие извращения типа отрисовки пикселей панелями не в счёт. Можете посоветовать направление, в котором стоит копать?
http://www.cambridgeincolour.com/tutorials/image-interpolation.htm Впрочем, там есть картинка увеличения без интерполяции пикселей. В целях редактирования тебе, наверно, нужно показывать увеличенные оригинальные пиксели, а не их интерполированные вариации. Можно создать кастомную сетку пикселей поверх холста и кисть, работающую на основе разрешения этой сетки. Каждый квадрат сетки соответствует пикселю исходного изображения. При увеличении масштаба сетка увеличивается и ее ячейки заполняются цветом соответствующего пикселя, аналогично при уменьшении масштаба. При этом масштаб изображения при редактировании не может быть меньше оригинального, чтобы не приходилось смешивать пиксели. Редактирование, соответственно, будет заключаться тупо в заполнении сетки кистью с разрешением клетки. Хуйня, канешь, какая-то. Надо смотреть как работают аналогичные редакторы пиксельной графики.
Посоны, начил читать полный справочник C# Герберта Шилдта, все заебись, разбираются примеры, все по ним понятно. Но для закрепления нужна практика - самостоятельно что-то написать. Где можно задачи поискать?
>>570773 В интернете. Кеп. Можешь глянуть что тут пилят в треде и повторить. Или можешь погуглить базовые алгоритмы и структуры данных cs и реализовать их.
Общий вид задачи: нужны две перегрузки конструктора в обобщенном классе 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#, так что любым советам рад.
>>570887 Но, вообще, лучше в таком случае кидать ексепшоны, ибо что-то нехорошое у тебя в методе произошло и он ошибку выдал. Если тебе надо валидацию произвести, то это отдельная тема и там только сообщение о невалидных значениях нужно:
>>570887 >То, что ты под пунктом в) указал, чем тебе не нравится? В конструкторе лишний параметр, который не используется. Некрасиво же.
>если тебе нравится, конечно, с result возится. Посмотрел сейчас на вызов... И теперь мне больше не нравится с Result возиться. С тем же успехом мог исключение сгенерировать и поймать в вызывающем методе.
При обоих подходах каждая содержательная строка кода превращается в пять. И код становится нечитаемым. Печалька.
>>570901 Разницы-то получается нет. Только класс лишний написали (ValidationResult). Можно было из Validate выбрасывать InvalidArgumentException вместо ретурна. И ловить его уровнем выше. То же самое по объему кода и по читаемости:
>>570925 Ты не сможешь несколько проверок провести, если будешь кидать ексепшоны при валидации. Либо тебе придется несколько раз ловить эксепшоны при валидации и собирать их в агрегатный ексепшон и выбрасывать его. Все равно новый класс создашь и производительность посадишь немного.
>>570924 С делегатами хорошая идея. Можно сделать string вариант с возвратом ошибки. Если в вызывающем методе нужно узнать о результатах - ловить ретурн. Если не нужно - не ловить. (тогда проверка в одну строку будет, супер)
>или подцепить aop фреймворк и заюзать аспект с логированием ексепшенов Интересно, сейчас погуглю.
>>570931 Да, точно, я не подумал об этом. Ошибочное действие предотвратил только, всю информацию о вводных данных не собрал. Если пять ошибок в пяти полях - придется юзеру пять раз данные отвравлять и пять раз по одной ошибке ловить лол. Жестоко.
WPF-мудак треде. Поясните за бд. Делаю приложение для прослеживания средств. Озадачился как хранить данные. В случае сервера понятно - коннектишься к базе и все хорошо. Но я пилю приложение для клиентской стороны. Получается нужно будет запускать бд и соединяться с ней, или есть менее упоротый вариант (Пару раз видел как С++ приложение использует Sqlite).
>>570961 Ты либо так же коннектишься к бд на сервере напрямую, либо пишешь сервис и получаешь данные через него, либо используешь локальную бд, если приложение не требует многопользовательского режима с общими данными. Можешь так же хранить данные в обычных файлах. It depends, короче.
hh.GetRequirements(".net", "Moscow"); >Отличные знания HTML/CSS/JavaScript и связанных технологий >знание технологий HTML/DHTML, JavaScript, CSS; >Базовые знания HTML, CSS, JavaScript/TypeScript;
Как это понимать? Что значит "знания"? Что там знать? Что <head> находится выше <body>?
От программистов реально требуют навыки верстки? Разве для этого не существует специальной профессии под названием "верстальщик"?
"Знания" они сука требуют. Если бы вам знания нужны были - вы бы книжки искали, а не работников.
>>571089 А ты слишком тупой чтобы осилить профессию "верстальщик"? Зря ты так на самом деле, там у них дохуище заебов, хорошего версталу знакомого с инструментами и стандартами найти сложнее дотнетчикану и они просто экономят, лол
Сап, программач! Помоги, чем сможешьплеас. Есть один проэкт 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(); } } }
>>571098 Да я ничего против верстальщиков не имею, отличная профессия. Просто верстка - это на 1% знания и на 99% руки и опыт. Очень практическая и прикладная область. Синтаксис html за полчаса выучить можно. Но чтобы нормально верстать - нужны месяцы практики. Такие требования, это то же самое что в вакансии водителя написать "требуется человек со знанием автомобилей".
Я не против научиться верстать, просто я сильно сомневаюсь, что asp пацаны реально в конторах сидят макеты верстают. Подозреваю, что это требование ничего не значит и 99% дотнет разработчиков версткой никогда не занимаются. Написали требование просто для выебонов. Известно же, что чем больше сложных слов в объявлении, тем круче контора.
Ну и соответственно я не хочу тратить несколько месяцев на практику верстки, если мне никогда в жизни этим заниматься не придется (а так скорее всего и есть).
Бесят эти ушлепки, почему они не могут нормально по-русски написать РЕАЛЬНЫЕ требования? Друг у друга какую-то хуйню копипастят, в которой большинство написанного - пустые ничего не значащие слова.
А нахуй работу, лучше буду дальше хикковать и питаться дошираком. Противно с этими мудаками связываться. Вдруг это заразно.
>ну и они просто экономят, лол Экономят? Нанимают программиста, чтобы он делал работу верстальщика? Вместо того, чтобы нанять верстальщика, который за ту же работу возьмет меньше денег и сделает ее в три раза быстрее и лучше? Офигенная экономия.
>>571113 Ну, скорее всего придется не верстать, а подправить макет или набросать прототип на бутстрапе каком-нибудь, такое сложно назвать версткой понятное дело.
А экономия. Ну что поделать, расеянскей бизнесмен считает что если посадить человека и принтеры заправлять и код писать и верстать то он охуительно сэкономит, а на деле проебет проект по срокам, сломает принтеры и заебет сотрудника так, что тот просто уволится нахуй дропнув базу. Реалии.
>Ну, скорее всего придется не верстать, а подправить макет или набросать прототип на бутстрапе каком-нибудь, такое сложно назвать версткой понятное дело. Ну да, я так и думал. Могли бы написать "Умение найти и изменить одну строчку в разметке". Но нет, они напишут "отличное ЗНАНИЕ html/css".
Сижу учу адо.нет с энтити фреймверком, параллельно делая свой сайт о погоде. Сайт без регистрации и смс, к чему тут в принципе можно базу данных приклеить?
>>570067 (OP) Парни, посоветуйте либу для msvc2012, чтобы пользоваться gl, glu, glut в winforms. По учебе нужно нырнуть в это говно, хочу нырнуть поудобнее.
Привет котаны, помогите придумать как избавиться вот от этой штуки: В прилаге есть 2х колонный грид с бесконечной загрузкой. В каждом итеме - картинка, которая подгружается с тырнета. Короч проблема в том, что если проскролить быстро его например до 100го элемента - прилага будет качать все предыдущие 100 картинок. И потому то место куда я проскролил отобразится очень не скоро.
Что можно придумать чтобы подгружать только то, что надо? Я думал насчет сценария типа "если айтем больше секунды на экране - то загрузить картинку", но это выглядит как говно. Помоги, анончик.
>>570067 (OP) Элитные разработчики, снова нужны ваши пояснения.
У меня есть два метода, инкапсулирующих хорошо понятные операции. Выглядит каждый из них как 20 строк абсолютно нечитаемого кода - условия, циклы. Есть одноуровневая мини-рекурсия, реализованная тупой копипастой куска кода внутрь самого себя.
Выглядит уродливо, нечитаемо, занимает в два раза больше места, чем могло бы.
Можно сделать вот что: вынести за скобки рекурсивную функцию (с делегатом в параметре).
Если так сделать, то объем кода сократится вдвое, а каждый метод будет состоять буквально из пары строк.
Вроде все хорошо, но проблема в том, что у этой функции нет никакого ООП-смысла. То есть, я не могу дать ей название, которое объяснит ее назначение. Это просто кусок алгоритма, сам по себе не имеющий никакого смысла, который нигде и никогда больше использоваться не будет.
Насколько я понимаю, это противоречит парадигме ООП. Если мы не можем разбить логику метода на понятные смысловые части, значит этого делать не нужно и весь код следует писать в одном методе.
С другой стороны, у нас есть принцип DRY (dont repeat yourself), согласно которому китайский код (копипаста) недопустим.
Как быть в такой ситуации?
С точки зрения читаемости оба варианта проигрышные, даже не знаю какой хуже. Низкоуровневые алгоритмы (уровень которых ниже, чем уровень основных объектов программы) вообще можно читаемыми сделать?
>>571667 У всего твоего кода нет никакого ооп смысла. Щито поделать. Невозможно рефакторить чужой код, не зная что он делает, а тем более не наблюдая этот код. Вангую, что тебе надо сам алгоритм переписать.
>>571691 Теоретический вопрос же. >есть китайский говнокод >можно вынести повторяющийся кусок и уменьшить размер кода в два раза >но у этого куска нет никакого ООП-смысла. >это противоречит парадигме ООП. >китайский говнокод потиворечит парадигме DRY >Как быть в такой ситуации?
Я покажу код, какой-нибудь знаток математики сразу заявит, что у функции таки есть логичное название и проблема как бы решена. Но я ответа на свой вопрос так и не получу.
>>571667 http://habrahabr.ru/post/130850/ >Признаки плохого программиста >«Бульдозерный код», который создает впечатление рефакторинга посредством разбития кусков кода на процедуры, которые, правда, затем невозможно использовать где-либо еще (высокая когезия).
>>570067 (OP) >C# — прекрасный детектор современного, умного и успешного человека. Изучение платформы .NET безошибочно указывает на успешного в будущем человека. кекнул с дауна
>>571717 >но у этого куска нет никакого ООП-смысла. >это противоречит парадигме ООП. >ооп смысл у куска кода Две инъекции ассемблерных вставок этому олуху. ООП смысл есть только у объектов и их взаимодействий. Твои попытки рефакторинга никакого отношения к ооп не имеют. Думай как объект, стань объектом. Только тогда ты сможешь решить свою проблему.
>>571723 >Если разбиение не добавляет читаемости, то в жопу разбиение, а если добавляет - в жопу принципы. Красиво сказал. Запомню, что читаемость в приоритете над принципами.
>>571761 >Вообще не понял, что ты хотел сказать. Вот от этого у тебя и проблемы. Ты пытаешься следовать принципам ООП, но ты не понимаешь сути явления.
В ASP.NET MVC чтобы передать значения всей модели в форме ПОСТ запроса. Обязательно нужно все поля модели прописывать(хидденами и текстбоксами)? Если у меня в модели 20 полей, всех их херачить в форму?
Помогите с кодом, нужна генерик функция для подписи на евенты, типа: public delegate void DelegateName(object param1, object param2, object param3); public static event DelegateName DelegateEvent;
должна подписываться на любой евент с тремя параметрами.
>>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; - начальные знания процессов разработки ПО.
>>572160 Мне наоборот рассказывали. Что на работку обычно приходят в первый раз обычно все почти нулевые, а потом их на месте обучают. Так выгодней работодателю, потому что зп
>>572184 Если в фирме настроен процесс обучения персонала, то, да, требования пониже чутка. Некоторые конторы мониторят студентоту, приглашают на внутренние курсы и после берут на позицию джуна. В идеале. Могут и нахуй послать, если необучаемый.
Я правильно понимаю, что кроме ASP на дотнете ловить нехуй? На винформс только говно мамонта поддерживать, на wpf мало вакансий, и он не обновлялся уже пять лет, мобайл утонул, тырпрайз ещё есть, но там же джава больше пригодится.
можно ли сжать форму с двух сторон одновременно, и как это сделать, если можно? на данный момент пробовал изменять размер формы через this.width и height, но при увеличении этих свойств форма растёт и убывает только снизу и справа, а мне нужно шоб прям кукожилась со всех сторон. пробовал играться с dock'ом и anchor'ами, ничего не дало. помоги, анонче
>>572327 да забил уже. до того, как здесь спросить, в около 6 запросах в гугле пролистал по 2 страницы результатов. ничего по этому поводу нет. может подскажешь заодно, как воспроизвести звук щелчка мыши? на данный момент попробовал в пространстве имен system.media system sound и sound player. есть ли вариант попроще именно со звуком щелчка мыши? (как при открытии папки, например. кстати, чому то не смог его найти в c:\windows\media
Где в wpf хранить ссылки на объекты, которые должны существовать дольше времени обработки одного события? Очевидный вариант: глобальные поля в классе MainWindow. Но по слухам, это быдлокод. Это правда? Чем такой вариант плох? Какие альтернативы?
Язык ебанутых. Если в VB вхождение заняло считанные минуты, то C# прям 1 в 1 как С++ - не хватит и года, чтобы всё это говно переварить. В рот ебал я вас, долбоёбы!
>>570067 (OP) Вопрос с собеседования на .net junior: >Как установить в единицы самый правый нулевой бит в произвольном целом числе не используя циклов и рекурсии?
Поясните, о чем речь? В дотнет существуют какие-то способы манипуляции данными на таком низком уровне? Я ничего мельче byte не встречал никогда.
>>572520 Я не понимаю в принципе, о чем речь. Какие биты? Что такое бит? Ну то есть я знаю в теории, что такое бит, но как до него добраться в программе?
Вот у меня код Int32 randomInteger = Random.Next(-2000000, 2000000);
Что дальше?
Если я пойму модель и получу к ней доступ - алгоритм придумаю, в этом проблемы нет.
Пацаны, пацаны, помогите! Задали мне такую штуку, сравнивать поля двух объектов с одинаковыми именами, имя поля Name, а список объектов Courses, с именами course. А сравнивать с помощью переопределённого метода Equals. И я вот сижу и чешу репу, как сравнивать поля у объектов и вывести в одном случае труе, а в другом фолс. Простите за косноязычие, в проге не шарю.
как обрабатывать нажатие двух клавиш мыши одновременно? то есть, по нажатию ЛКМ и ПКМ совершается действие. пытался это сделать и в mouseIp, и в mouseDown, и в mouseDoubleClick, и в mouseClick, всё как то без толку. гугл молчит. помогите, товарищи.
>>572933 >Course.Equals нихуя не понял. Для начала переопредели GetHashCode, хули ты не слушаешься компилятора. И сравнивай либо значения этих hash'ей, либо через String.Equals
>>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. "
>>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. Мне кажется лучше просто == оверлоадить.
>>573733 >>573736 Понятно, спасибо. >Мне кажется лучше просто == оверлоадить. Но потом могут понадобиться другие операторы, еще не известно что лучше ж.
>>570067 (OP) Почоны, решил запихнуть Entity Framework в универскую лабу. Получилось, захотел допилить. А именно: сделать так, чтоб каждые пару секунд БД в моём приложении переподгружала записи (информация об экзаменах в моём случае). Запилил всё втупую (для начала хотя бы так хочу сделать, потом улучше). В параллельном потоке запускается обновление таблицы в приложении, затем Thread.Sleep на пару секунд, снова обновление и так, пока приложение не закровешь. Но всплыла проблема пикрелейтед. Мой тред, который должен каждые N секунд рефшеришь мой ListBox с данными из БД не может трогать БД, потому что она создана в другом потоке. Посоветуйте, как решить эту проблему, ну или альтернативные способы решения такой задачи.
>>573848 По-моему, будет гораздо читабельнее и УНИФОРМНЕЕ, если правую часть (после "=>") всегда делать с новой строки. Сразу видишь тело функции, все дела.
>>573868 В принципе, если там что-то потенциально асинковое, тоже можно тот же аргумент насчёт униформности, что и "всегда ставьте {} для if, даже если внутри только один стейтмент". Если везде сокращаешь - тогда и здесь надо сокращать, если униформноблядствуешь - тогда пожалуй и здесь стоит асинк лепить, и с новой строки писать.
>>573848 Фича с однострочными лямбда методами сама по себе спорная. Кому-то, видимо, лень стало 2 скобочки ставить. Теперь все ломаем глаза стрелочками.
Аноны, есть тут Entity Framework боги? Пишу под UWP, нужна локальная база. Вроде всё норм писалось, но чет я въебался и не могу разгрестись в чем объёб. Вобщем, есть модель, таблица Item с полями, одно из полей это List<SomeObj> лист тругой таблицы у которой тоже есть поля. А теперь объёб. Когда я просто добавляю новый Item или апдейчу одну из записей всё окей, но когда я пытаюсь проапдейтить SomeObj тоесть методом .Add добавить туда объект мною созданный, или сразу в Item.SomeObjList добавить созданный мною new List<SomeObj> нихуя не сохраняется. Тоесть я делаю db.SaveChanges(); и в дебагере на шаг после сохранения в видны изменения в записи, но когда в другом классе я в using(var db = new ItemDb()) пытаюсь получить мой Item то блядь все свойсва у него сохранились, а мой ебучий SomeObjList пуст. Аноны помогите, ебусь 3й день.
>>573929 Вот пара скринов моего долбоебизма. Единственная зацепка, это поле id на втором пике. Записи c SomeObj добавляются но не привязываются к моему Itemу.
>>574153 От предпочтений конкретного человека зависит. Шарп как язык лучше, но немного меньше вакансий и анальная привязка к операционной системе виндоуз (по крайней мере пока, в будущем может что поменяется).
>>574155 До c# учил haskell и не о чем не жалею. Кстати, почему в c# такой ебанутый async? В хаскеле async делает что то асинхронно, а await получает результат. Что с шарпом то не так?
Как можно спарсить огромный файл, размером в сотни гигабайт, в key-value структуру и как хранить эту структуру, ведь её размер будет примерно такой же? На выходе нужно тоже получить файл в определённом формате, то есть по сути мы применяем мапредьюс, но я не очень понимаю, как нужно создавать промежуточный результат.
Построчно читать и обрабатывать файл не получится, потому что важно содержание файла в целом.
>>574212 Слишком мало исходных данных. Если количество памяти ограничено, то тогда может быть есть возможность как-то перестроить файл, чтобы его можно было читать порциями, иначе даже хуй знает.
>>574216 Это Anagram Solver, идея решения (с созданием ключа, представляющего слово, отсортированное по алфавиту) взята из книги "Жемчужины программирования", задание примерно такое:
Составить программу ANAGRAM, которая: 1) вводит словарь, длина слов в котором не превосходит 20 символов, из текстового ASCII-файла, имя которого задано первым параметром командной строки; 2) находит в словаре все анаграммы (слова одинаковой длины, составленные из одних и тех же букв); 3) выводит в результирующий текстовый ASCII-файл списки всех анаграмм по одному списку в строке.
Да, ограничение по памяти. Этот приём никак нельзя приспособить под такое ограничение? Других нормальных идей решения в голову не приходит
>>574237 Тут вопрос не в количестве кода, а в объемах данных. Если данных много, то скорее всего использование БД будет оправдано, даже если это скрипт из пары десятков строк.
Как вкатиться в этого долбанный ASP.NET. Нашёл пару гайдов: http://metanit.com/sharp/mvc5/ тут вроде по полочкам всё, да практических примеров мало. http://habrahabr.ru/post/175999/ тут вроде всё на практических примерах, но уже со второго урока втирается какая то дичь про ninject, да и в комментах местами не очень лестно отзываются о гайде.
>>570067 (OP) >.net source private int _size; private int _version;
На что обычно указывает знак подчеркивания в именовании полей? Или это просто соглашение об именовании, чтобы отличать поля экземпляра от параметров, передаваемых в методы?
Как в EntityFramework иерархию отображать в одну таблицу? В таблице будет больше полей чем свойств в базовом классе, оно само будет проставлять null неуказанным свойствам и заполнять нужными значениями поля отображающие свойства унаследованных классов?
>>574212 Тебе обязательно ключ-значение хранить? Если нет, то предложу индексы построить и по ним впоследствии использовать поиск в файле. Читаешь последовательно кусками, используя буффер мегабайт на 200, например (или больше, сам смотри).
Мне нужно сделать нормальный веб-интерфейс, а я вообще не знаю как это делается. Насколько понял чтобы свои контролы писать нужно еще хорошие знания js, которых у меня нет. Бутстрап классы для внешнего вида приписать к тегам я в состоянии, но вот чтобы все еще интерактивно отзывалось. Проект должен быть в каком-то виде готов через месяц-полутора поэтому времени особого на изучение нету, нужно сразу что-то применять. Может есть гайды, туториалы про фронтэнд для асп нет мвс?
>>575097 Что мешает сделать WebAPI + Angular? Angular для написания чего-то рабочего за 3-5 дней изучается и понимание javacsript для него практически не требуется.
Наверное то что я этим вообще не занимался и понятия не имею что есть что. А хорошо выглядящие контролы для фронтэнда нужны, вот и не знаю за что взяться и откуда лучше учить. Пока разбираюсь пользуясь жеквери на кодакадеми и кодскул и джаваскрипт ру. И посмотрю еще платные контролы под асп мвс, которые доступны на халяву на торрентах. Поэтому и спрашиваю за что тут лучше. >>575290 Хотя бы тот же paging таблицы бутстрапом не сделаешь, свой хтмл хелпер несложно сделать для такого случая, но если нужно будет что-то еще посложнее.
>>575296 у тебя каша в голове, братишка. для большинства задач подходят бесплатные либы. таблиц с пейджингом бесплатных - миллион в гугле. для того чтобы написать что то приличное, придется курить либо жкваири, либо ангуляр, либо любую другую фронтэнд технологию. просто купить контролов и слепить из них какуюто хуйню - нихуя не выйдет.
Как мапить таблицы словарей на классы в EF? Вот у меня есть там таблица Person, у нее есть поле CountryId, которое ссылается на таблицу словарь со списком стран. Я же не должен создавать класс для стран? Может нужно сделать как-то отдельное поле под контринейм, которое при апдейте сразу отображает его в бд как айдишник страны со словаря.
Тут обсуждается нужно или не нужно реализовывать паттерны репозиториев, Unit of work, потому что оно все встроено в последние версии EF Обсуждают всякие абстракции и прочее, я в этом пока ничего не понимаю, поэтому ответьте прямо. Что мне нужно для моего говноприложения: репозиторий с дженериками, этот репозиторий имплементит интерфейсы для реализации CRUD операций которые можно будет потом прицепить через Dependency Injection. Этого будет достаточно?
>>576589 >репозиторий с дженериками Лол нет, сейчас не 2003й. Репозитории были ничо так, когда у нас не было ОРМ, а работа с базой проходила через хранимки. В те годы у тебя было два стула: создавать повсюду инстансы SqlConnection и дальше пердолиться через него, вызывая хранимки, либо пытаться организовать это все в репозиторий. Проблема конкретно с репозиториями в том, что, как бы кто не пиздел, что DAL это такая вещь в себе и полностью отделен от бизнес-логики, это ни разу не правда в реальном мире. В прекрасном мире тырпрайза на одно отношение в базе может понадобиться пара десятков запросов с различными фильтрами (и все это в различных представлениях). Исходя из этого факта репозитории у тебя могут получиться двух видов (и оба сорта говна): реально дженерик репозиторий, без какой-либо сложной логики получения данных. Проблема в том, что он такой нахуй не нужен, потому что смотри про фильтры. Второе: ты пердолишь по методу на каждый вид запроса и твой женерик репозиторий уже нихуя не женерик, а огромная хуйня с протекающей абстракцией. Далее, вернемся к ОРМ. Дело в том, что когда у тебя есть ОРМ, тебе нахуй не упали репозитории. У тебя уже, считай, готовый репозиторий, но с кучей охуенных вещей, которые ты все равно сам не реализуешь. Городить лишний слой абстракции над существующей абстракцией это одновременно и аутизм, и долбоебизм. Тут, конечно, кто-нибудь прокукарекает про то, что если мы захотим сменить в будущем ОРМ или БД (лел), то с репозиториями не нужно будет пердолиться с DAL, а вот если везде таскать ISession или IDataContext, то нам пизда. На это можно только ответить, что в зрелом проекте менять ОРМ (а уж тем более СУБД) будет либо компания, которая может себе это позволить и это в любом случае будет больно, либо конченный долбоеб. Опять же, что касается тестов. Не знаю, как там в EntityFramework, но в NHibernate стабы на ISession делаются не сложнее, чем стабы на любой другой интерфейс, да и поднять быстро прямо в памяти и потестить сложную логику сохранения и\или получения данных - дело пяти минут.
tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF (или любым другим ОРМ) и внедряй интерфейс везде, где он нужен.
>>576856 > DAL с EF Похоже я неправильно понял что такое репозиторий, в моем понимании это и был DAL класс, мы же и там и там методы доступа к данным определяем.
АНАНАСЫ, как в массиве, в листе, похуй, пройтись фором не по прямой а по наклонной. У меня есть на изображении прямоуголник повернутый, мне надо его площадь измерить. З.Ы EmguCV rotatedRect если че.
Почему-то не ставится нормально Ninject при создании с помощью шаблона MVC и выдает ошибки При этом, когда я ставил его на пустой проект тем же способом Install-Package Ninject, Ninject.Web.Common, Ninject.MVC3 все было ок. Но теперь в созданном классе NinjectWebCommon Во-первых подчеркивается, кажется, решапером класс бутстраппер Во-вторых компилятор не видит IKernel хоть библиотека Ninject подключена
>>570067 (OP) шарпобоги, помогайте: я юнете програмист(ладно-алдно, кодер). вполне себе успешный, но нихуя не загадка, что юнити не будет жить вечно. сабж: осмыслить шарп как таковой(интырпрайзовый) дохуя ли нужно будет ума? или пойдет?
>>577584 я совсем дибил, нашел сайтец с модулями по с# и пытаюсь их делать. Изначально задача выглядит так: есть 3 переменных типа дабл, нужно чтоб програма их сравнивала и сумировала 2 самых больших, если все 3 переменные равные должно выбить ЕРОР.8
>>576960 Методы доступа к данным тебе не нужны, у тебя есть интерфейс контекста, через него ты дергаешь базу. Если у тебя относительно сложная логика получения (сохранения, удаления, изменения) данных, то в этом случае лучше воспользоваться паттерном Query Object. Суть его (коротко) в том, что ты инкапсулируешь сам запрос в отдельный объект. Плюс его в том, что он больше соответствует OOP way и такие объекты-запросы даже можно использовать в нескольких местах (хотя тут уже от организации данных и способа их получения зависит). Вот тут можешь про него глянуть http://crosscuttingconcerns.com/CommandQuery-Object-pattern
Ребята, подкиньте литературы для начинающих (совсем начинающих), чтоб с основ и дальше. Работа есть (не в сфере программирования), решил как хобби геймдевом заняться, как движок подходит юнити, а там шарп знать нужно. И если графин я пилить могу, то с кодом, конечно, проблема.
>>578163 >array.All(x=>array[0]) array.all(элемент=>предикат) проверяет каждый элемент на соответствие предикату, возвращает true если соответствуют все или коллекция пуста. x=>array[0] - краткая альтернатива x=>x==array[0]. Т.е. каждый элемент сравнивается с первым.
>>578241 А самому взять и попробовать? Просто ничего не будет. Если зачем-то еще нужно проверить - есть метод .GetInvocationList(), возвращает Delegate[]
public Task<Bitmap> GetLastImageAsync() { var image = _images.Count > 0 ? _images.Last() : null; return image?.GetImageAsync(); } Ничего не забыл? или нужно await у GetImageAsync ставить?
>>577705 А не проще сделать View на все случаи жизни и потом извлкать из них данные в нужные сущности? А изменять/удалять уже не сложно будет, имея список записей с примененным на них фильтром.
Есть класс "матрица", которая в основном состоит из массива даблов. Как сделать, чтоб это не обязательно были даблы, а еще и инты-децимал например? Через дженерик вроде не вариант, мол нельзя нормально ограничить where T : Numbers (грубо говоря). Как-то через object, dynamic, ... ?
>>578653 Как раз таки в шершавом это нормально делается через дженерики, в отличии от явок-скалок там всяких. Просто параметризуй это дело объектами-полями ( https://en.wikipedia.org/wiki/Field_(mathematics) ), содержащими реализацию операций для нужного типа. Можешь дефолтануть (реализовать default(Field<int/float/etc>)) и тогда не надо будет инжектировать всюду.
Как такой запрос через 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();
>>578653 Вот, держи: http://ideone.com/fsQSkw Вместо Magma можешь там сделать тот Field, в котором будет больше операций и нейтральные элементы по ним (см вики). Ну и по-дизайну уже сам думай, скармливать ли алгебры параметрами в Sum/Mul/Div, или лучше один раз в конструктор, или в методы, но как-нибудь задефолтить, чтоб не надо было вручную передавать постоянно и тд.
>>578680 Нашел конвретер генерации LINQ с SQL http://www.sqltolinq.com/help Сразу то что надо сгенерировал даже править не нужно было 2 часа на один запрос потратил, пиздос.
>>578732 Извини, в > в шершавом это нормально делается через дженерики, в отличии от явок-скалок там всяких Я имел в виду что в сишарпе есть value-типы, и генерики корректно и юниформно работают с ними. В Java/Scala ты даже не можешь сделать анбоксед массив кастомного типа. Ты даже не можешь объявить матрицу нормально, потому что каждая матрица - это будет выделение в куче, которое внутри содержит ссылку на другое выделение в куче (сам массив). Там, где вообще нужны матрицы - это всё важно. В скале начали делать http://docs.scala-lang.org/overviews/core/value-classes.html но этого слишком мало.
>>578738 Вообще да. Но если нет возможности, то здесь хотя бы модель памяти можно проконтролировать. Оверхед на косвенные вызовы численных операций по сравнению с тем, как их бы заинлайнили в цпп, менее критичен и более равномерно размазан по времени.
>>578744 В крестах можно написать Vec3[A], где для A = float можно указать полностью специализированную реализацию класса, которая является инлайн-оберткой для __m128 (SIMD vector4)
В сишарпе можно как в джаве передавать экземпляры сущностей сразу к контексту, а не как к конкретному DbSet? В джаве можно было благодаря этому писать постые дженерики типа такого
>>578745 Если речь идёт о частоиспользуемых в 3д фиксированных матрицах (3х3, 4х4), операции которых можно анрольнуть и слегка заоптимизировать через SSE, на C# остаётся только ручная мономорфизация и http://docs.go-mono.com/?link=N%3aMono.Simd Правда, если речь о симуляциях и играх, там один фиг лучше везде использовать флоаты и хотеть гарантированного SSE, так что проблема полиморфизма стоит не слишком остро.
>>577705 >Методы доступа к данным тебе не нужны, Начал делать без методов, тогда весь DAL находиться непосредственно в контроллере, в котором используется. Это норма?
Подскажите, пожалуйста. Нужно, чтобы определенный метод запускался, когда DateTime.Now станет равным определенному значению. То есть, в определенное время чтобы он запускался. Можно это сделать красиво? Какие-нибудь системные события может существуют? Сравнивать в бесконечном цикле текущее время с целевым - какой-то совсем убогий способ.
>>579132 Таймер на (целевое время - текущее время) тоже мне не нравится. Помню на С++ таймеры делал, они от системного времени отставали. Незначительно, но если на 10 часов вперед задачу поставить, то погрешность несколько минут накапливалась.
>>579132 на сколько мне известно, у тебя не особо много вариантов: - цикл; - таймер; - расписание задач в вине; - какая-нибудь либа для выполнения задач, типа кварца http://www.quartz-scheduler.net/
Анончики, подскажите как лучше сделать или по каким словам гуглить. Винда/моно. В рамках моего проекта надо обеспечить эксклюзивный доступ к папкам на лежащим на шаре. То есть у меня где-то создался объект, в папке что-то произошло (допустим локфайл создался), остальные все видят, что папка залочена и не лезут. Создавать/удалять файлы - не айс, в случае проблем сети. Если подымаю FileStream с эксклюзивным локом на рид, то проблемы сети просто не замечаю. И еще если в том же потоке пытаюсь поднять еще один стрим на рид, то он фейлится, говорит что кто-то залочил. Как такое реализовывать или гуглить?
>>579251 Тем, что он, во-первых, скажет компилятору сгенерировать и вернуть реализацию IEnumerable c автоматом на основе метода, в котором указан. Во-вторых, yield return — это состояния, по которым этот автомат будет ходить, если дергать его метод MoveNext. С обычным return, который переходит на адрес возврата функции, нет ничего общего. Не знаю, возьми рефлектор и просвети хелоу ворлд с yield return. Может понятнее станет.
>>570356 >Дотнет изучают ради комбы ASP.NET + WCF. Тащемта да, вся денежная работа находится в этом сегменте. Плюс за последние год-полтора очень сильно подтянулось Mono, теперь кроссплатформенность во все поля. Бета MVC 6 уже нормально работает на линуксе главное, кучу всего правильно скомпилировать на хост-машине, лол.
{ using (var conn = new OracleConnection(connectionString)) using (var adapter = new OracleDataAdapter(query, conn)) { var table = new DataTable(); adapter.Fill(table); return table.Copy(); } } Почему в дататабе только заголовки от запроса? Запрос верный.
>>578955 Ну вот код контроллера(круд для работников), там в целом я по примеру делал, только код доступа к данным вынес в сам контроллер и таблицы из базы другие. В примере использовали паттерн репозитория. Контекст я через нинджект внедрял, только непонятно зачем. Пришлось переопределить метод SaveChanges, например, хоть он ничего нового не добавляет в функционал а вызывает родительский метод. Наверное, нужно было создавать контекст сразу в контроллере конструктором и без нинджекта. И еще тот здоровый запрос дважды исользовал, можно было выгрузить в память и применить Count к коллекции, но это же вроде неоптимально — выгружать все записи в память. https://ideone.com/efNvCE LINQ здесь поехало, в студии ровненько выглядело.
Не обоссывайте только, плиз. Как в цикле вызывать методы с разными именами на каждую итерацию? method_1(), method_2(), method_3(). Т.е. вместо 1 2 3 нужно чтобы был индекс.
>>570067 (OP) Поясните обывателю или ткните где почитать в чем разница между int a = 5; и int a = new int(5); Конструктор по умолчанию бла бла В чем профит от второго варианта? И где лучше всего почитать про свистопляски с типами?
>>576856 >tl;dr: репозитории не нужны уже лет 8-10 как, просто сделай нормальный DAL с EF Если разбираться, то DbContext и есть дженерик-репозиторий о чём многие даже не подозревают, только напичканный всякими плюшками до усрачки. Городить отдельные репо, используя EF - это, как минимум, просто тупо и потеря времени.
>>580570 Вот только я забыл сказать, что EF - лютый слоупок. Когда нужна скорость, быстрее всего работают именно те самые "немодные" SQL-запросы (это даже быстрее дэппера и прочего говна).
>>580628 Проверяю я примерно так: foreach(RadioButton Rb in GridName.Children) if(Rb.IsChecked) //тут надо вызвать событие Checked конкретного радиобаттона (у каждого оно своё)
>>580688 Какие навороты? У Int32 нет конструкторов. Про то, как значимые типы хитро прикручены к объектной модели, можно, наверно, у Рихтера почитать, но по-сути это не особо важно знать.
>>580619 Это понятно. Просто сам EF имеет нехилый оверхед. За удобство нужно платить.
>>581017 >тогда весь DAL находиться непосредственно в контроллере Есть разные мнение на этот счёт. Обычно принято считать, что контроллеры должны быть максимально "тонкими", т.е. вообще не иметь понятия о том откуда берутся данные и как они обрабатываются. Задача контроллера - передавать модель во вью и наоборот. Посмотри в сторону паттерна controller <-> service <-> repository (DAL) Вот в службу и можно вынести все операции с данными и генерацию/обработку моделей. При необходимости сделать взаимодействие службы с репо. А после экземпляр службы внедрять в контроллер инжектом.
>>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. Все остальное понятно. Заранее благодарю.
C Хэщкодом разобрался. А вот переопределение Equals я так и не понля. Но вес равно спасибо тебе или вам, анон(ы), что помогли советом, а не послали нахуй.
Суп, шарпач. Есть проблемка, нужно изящное решение. Кароч, есть 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, но нихуя не понял как они работают
Кто там звездит про то что #Веселая Ферма - тайм киллер? Вы вообще в нее хоть играли? Тут #stealth покруче чем в последнем #MGSV - спящие куры просыпаются от малейшего шороха курсора, они видят в даль и в ширину, ОНИ, черт подери, в отличии от болванчиков из последних типа тру стелс игр, НЕСУТ ЯЙЦА, тут учитывается свет и тень, нет укрытий и перекатов и большинство ситуаций в игре можно по стэлсу разрешить не прибегая к громкому оружию. Нет, это конечно не чистокровный стэлс, но для браузерной игры стэлс здесь очень приятный и играется по старинке, а так же бросает не хилый вызов.
Не знаю как там играют каловдуные #yoba школяры по которым (или по себе?) вы судите ферму как убийцу времени, но я в игре больше времени провел играя в адвенчуру, стэлс и симс (пол дня стэлсил, второю половину дня опрыскивал грядки пестицидами, чтобы ни один колорад не прошел, но это уже другая история...) и один из лучших сурвйавал симуляторов, хотя когда созревала куча овощей то игра превращалась в раннер... и тут еще залипал в имитациях классических 8 битных игр вроде Донки Конга
Какой блин тайм киллер, мать вашу? У меня от всего времени в игре (что-то около суток), тайм киллера было от силы на 30 минут! Тут несколько десятков игр в одной, и тайм киллер - очень малая часть из этого списка!
Я прихожу к выводу, что все кто орут "УБИЙЦА ВРЕМЕНИ" - просто вообще не играли и даже толком на ютюбе и твитче игру не видели. Тут столько всего можно и нужно делать!
На фоне этого разнообразия игровых механик, витчер в котором можно только ходить пешком и на плотве, а так же болтать, готовить зелья и закликивать врагов до смерти - смотрится как бедный родственник..
Вот уверен, что каждый орущий про "говно" - поиграв в фермочку 4 - 5-10 часов уже не сможет от нее оторваться пока не наиграет сотню-другую часов.
>>570067 (OP) Нужно отправить в метод сторонней библиотеки (доступа к коду нет) массив объектов размером 5+ ГБ. Приложение х86, то есть занимать больше 1.2 ГБ нельзя, иначе будет OutOfMemoryException .
Можно эту проблему решить? Возможно в дотнет есть какой-нибудь класс вида Image<T>, который не хранит сами объекты, а динамически подгружает их с жесткого диска при необходимости?
>>581430 Даже если изображения будут читаться с диска, грузится они все равно будут в память. А ты уверен что твоя библиотека вовремя выгрузит эти изображения?
>>581443 >грузится они все равно будут в память. Но не целиком, а по кусочкам. Чтобы единовременно в памяти 5 ГБ не занимать. Чтобы в памяти были только те данные, которые в данный момент нужны для работы.
Это не изображения, там массивы double длиной в сотни тысяч. Слово Image взял по аналогии с образами физических дисков, которые в англоязычном софте тоже называются Image.
>А ты уверен что твоя библиотека вовремя выгрузит эти изображения? Идея была в том, чтобы библиотека не знала, что работает с Image<T>, чтобы она воспринимала это как T , а вся черновая работа по подгрузке производилась фоном.
Наверное в дотнет нет такой функциональности, она бы на слуху была.
как мне в датагриде на 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 |...
>>571187 Это защита от дурака. В сисарпе и джаве все так сделано, чтобы было сложнее выстрелить себе в ногу. Так же, как и бреак в свитче, и ретурн из файнали, и неявное приведение типов. В каком-нибудь С у тебя была бы локальная переменная на стеке, и содержался бы там совсем не налл, а непонятная муть, и получилось бы undefined behaviour
>>An unhandled exception of type >>'System.InvalidOperationException' occurred in WindowsBase.dll >>Additional information: Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.
Как изменить myLabel.Context из потока, который не является основным? lock вешаю - ничего не меняется.
Если никак, то зачем вообще многопоточность нужна, если дополнительные потоки не могут получить доступ ни к каким данным из основных потоков? Только какие-то методы странные запускать, которые работают в вакууме и ни с какими данными из основной программы не взаимодействуют.
>>581763 Гуйный поток работает в изолированном окружении. К его данным обратиться можно только через диспетчер, который шедулит делегаты на исполнение в цикле сообщений. Если мне не изменяет память, то в винформс — это (Begin)Invoke метод у контрола, а в впф — класс Dispatcher.
>>581775 Почему Троэсен говорит не использовать var (кроме LINQ), но его все-равно используют поголовно все, в том числе сами МС? Это уебанство же, невозможно код читать.
>>581811 >куча пустой работы на ровном месте Никто не заставляет, lock в руки и синхронизируйся сам. Или даже не синхронизируйся, если ты опасный и любишь жить на краю.
>>581845 Правильный вопрос: имеется ли хоть какой-нибудь задачник по C#, чтобы охватил хоть какие-то фичи языка? Нет, не имеется. Все книги - просто документация, пересказанная своими словами.
>>581894 Плюсы - нативный язык, шарп - скриптовая хуйня для виртуальной машины дотнет. На плюсах программируют. На дотнет конструируют. Из уже написанного кем-то кода. Соответственно, навыки нужны совсем разные. На шарпе можно заправски кодить, не зная половины синтаксиса. Достаточно знать самые основы и уметь пользоваться документацией.
Ты же не удивляешься, что по 1С нет книг с задачками программирования? А в чем разница с сишарп? Такой же скриптовый язык, специально созданный для применения в одной единственной программе.
>>581904 Вообще-то я на шарпе пишу, с++ знаю на уровне второго курса деревенского говновуза (именно тогда прекратил им заниматься). Зачем факты отрицать? Сишарп - это использование стандартного функционала нескольких встроенных фреймворков дотнет. На этом область применения заканчивается. Ах да, есть еще школьники, которые делают контерстрайки на юнити.
Если ты знаешь основы синтаксиса и как Бог владеешь документацией - ты без затруднений решишь 99% задач, которые ставятся перед дотнет разработчиком.
Мы не программисты, мы - прослойка между настоящими программистами и блондинками-верстальщицами. По идее, для нашей профессии должны были новое слово придумать, но не сложилось. Верстальщиков вот не называют программистами, хотя они тоже "пишут код".
>>581811 >В потоках, не связанных с WF/WPF такой проблемы нет, можно спокойно обмениваться данными? Писать из чужих потоков нельзя только в элементы гуя, остальное объявляешь используемые поля через volatile и ебашишь многопоточность.
>>581811 >Спасибо, сделал, работает. Ужасно неудобно, куча пустой работы на ровном месте. На самом деле ты еще просто молод, чуток привыкнешь работать с асинхронными методами и почитаешь что-нибудь про то как нормально писать код и поймешь, что вся эта "пустая работа" это на самом деле здорово упрощает жизнь когда начинаешь что-то менять.
В первом варианте внутри метода создается копия объекта. Во втором - используется уже существующий объект. Все верно?
Если так, то мы должны использовать ref для входных параметров почти всегда. Просто чтобы экономить память. Зачем нам клонировать объекты лишний раз, если мы ни один из них редактировать не собираемся?
Почему так обычно не делают? В родных библиотеках ref вообще не помню, чтобы встречал где-то.
>>581763 Можно же использовать await для получения данных из другого твоего потока, он возвращает в ui поток, псоле этого можно просто обращаться к контролам, без диспатчеров и инвоков.
Порекомендуйте что-нибудь для начинающего программиста на шарпе, раньше кодил на паскале для олимпиад, так что алгоритмы умею составлять, синтаксис шарпа знаю неплохо, всяческие алгоритмы напишу хотелось-бы начать писать что-нибудь серьезное
>>582007 Фреймворки изучай. Для чего-то серьезного нужны не замысловатые алгоритмы, а знание библиотек и умение писать простой понятный масштабируемый код.
>>582063 Стандартный набор второкурсника: ado, entity, asp, wcf, wpf, wwf.
>синтаксис шарпа знаю неплохо Знаешь, что такое Linq и лямбда-выражения? Умеешь перегружать операторы и расширять методы? Знаешь, что такое BinaryFormatter и ленивая инициализация? Уверенно применяешь асинхронное программирование в повседневном коде? Знаешь, как используется позднее связыванние и атрибуты? Знаешь, зачем нужны анонимные и динамические типы? Знаешь, чем абстрактный класс отличается от интерфейса?
Кто-нибудь проходил курс шарпа на Hexlet.io? Как он? Есть ли вообще годные онлайн-курсы по шарпу? Каким переводам книг по шарпу можно доверять, что они не теряют смысл первоисточника? В английский могу очень хорошо, но читать много и по долгу на английском сильно устаю.
>>582088 Если ты настроен всерьез - не ищи лучший вариант, используй все варианты одновременно. Прочти все книги, какие найдешь, пройди все курсы, какие найдешь. В одной книге чего-то недопоймешь - уточнишь в другой/в документации/в гугле/на практике.
Из одной книги или одного курса ты ничему не научишься, это будет слишком однобоко и объем информации будет мизерный.
Если ты не готов тратить от года ежедневных занятий на учебу, то даже не начинай.
Есть метод с такой логикой: http://pastebin.com/Pzu7wLhc Т.е. запускается таймер, которые каждые 100 мс делает что-то, и он останавливается через timelimit мс. Когда он остановится, внутри метода надо сделать кое-что и возвратить значение. Как это реализовать?
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