Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# - прекрасный детектор современного, умного и успешного человека. Изучение .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого поистине прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии. Не забываем, что у нас скоро релиз C#6, вместе с Roslyn и RuyJIT Visual Studio 2015 выходит 20 июля
Что почитать: - C# Yellow Book (для ньюфагов, книга полностью бесплатная) - 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)
Сап Шарпач. На ардуине запрограммировал инфракрасник с пультом, на ком порт приходит HEX код без проблем, видно по монитору порта, по ком порту соединяю с своей софтиной на шарпе, нажатие кнопок обрабатывается через раз, т.е. я жму кнопку Vol+ на пульте и надо нажать ее раз 10 (иногда меньше) что бы сработала команда SendKey.Send в активное приложение. Обработчик события поставил на DataReceived ком порта. Где копать? (повторю, на мониторе ком порта без проблем приходят сигналы с пульта, дело не в железе) Для уточнения: действие SendKey сравниваю со строкой ""0xFFA25D\r" например, такого вида приходит по COM порту строка, а считываю через serialPort.ReadLine()
Шарпаны, не спешите обоссывать. я не прогромизд и тут бываю редко, вчера вот наткнулся на тему портирования дотнета на линуху, заинтересовался. Пришёл вечером после работы, прокрасноглазил пару часов, поставил бубунту на виртуалку, накатил на неё mono, установил хамарин или как-то так среду. Т.к. времени особо не было да и спать надо, на работу завтра. Первым делом накалякал консольный хелловорлд, добавил пару циклов, условий. Бросил ехешник в убунту, запустил без проблем, консолька показала ожидаемое. Потом в вижуалстудии сделал что-то вроде консольной игры, тип угадай число. На линухе тоже запустилось норм. Пришло время то же самое проделать уже в линуксовой ide. Первым бабахом было то, что там нет подсветки Console. , вторым - отсутствие ReadLine(); кое как с горем повторил первое консольное приложение, стартанул и мне в первом же выводе текста в консоле добавило лишнюю букву, которую я не писал. Ппц, закрыл, перезапустил, все норм вроде. Запустил на венде, вроде норм, но последний ридлайн console.read() куда-то пропал и приложение само завершелось. Дальше я пошёл спать.
Скажите, это и есть такое дерьмо или я не все библиотеки выкачал, чего-то ещё не докачал? Или это я просто дибил не могущий даже в хелловорлд?
Товарищи, прошу помощи. Надо прочитать текст из файла, подключенного к проекту и записать этот текст в textbox. Что я делаю не так? private void get_text(object sender, RoutedEventArgs e) { //Obtain a virtual store for application IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication(); fileStorage.DirectoryExists("textfiles"); //Create a new StreamReader StreamReader fileReader = null;
try { //Read the file from the specified location. fileReader = new StreamReader(new IsolatedStorageFileStream("textfiles\\1.txt", FileMode.Open, fileStorage)); //Read the contents of the file (the only line we created). string textFile = fileReader.ReadLine();
//Write the contents of the file to the TextBlock on the page. textBlock.Text = textFile; fileReader.Close(); } catch { //If they click the view button first, we need to handle the fact that the file hasn't been created yet. textBlock.Text = "not work"; } }
>>507104 здравствуйте, меня выгнали из треда про кресты, к тому же вижуал студио я уже установил для шарпа, поэтому пришел к вам, вот. скажите, какой нужно сделать проект на гитхабе, чтоб получить работу фрилансером.
>>507534 >получить работу фрилансером >серьезный язык Ты спрашиваешь за фриланс в тредах про байтоеблю и ентерпрайз. Хочешь на фриланс — иди в пыхотред, хочешь типа продавать свои поделки — в андроид тред. Извини, но другого варианта я не вижу. Разве что в вольные верстальщики податься. Или в рисовальщики и подрабатывать на комиссионных.
>>507104 книгаа по шаррпу пеарвая, аона просато нечитабелльна. в итоге проасто загуглилв самоучитеель. Алсоа по заапросу ваылетела стаатья на хбббре какого-то успешнаого шаперра а32 лает, приглашенногао аж в нью-айоорк работаюащего сао второаго кураса, ахуаеть праосто.
>>507552 В чем проблема у c# и фриланса? Работаю с asp.mvc/angular js на upwork на full time, полет нормальный. Тут лучше даже чем в php, потому что индусов поменьше.
Могу пояснить по хардкору за все это, задавайте ответы. >>507572 Да не, все тут збс
Привет и сразу, к делу. У меня 4 объекта двигаются по канвасу к определенной точке с разной скоростью. Как проверить, какой быстрее достигнет этой точки?
Написал я тут форму, а на фоме панельку с автоскроллом. И вот заполняется панелька, скролл появляется. Можно его мышкой тащить вверх-вниз. А на колесикол почему то реагирует через раз. Точнее чаще не реагирует, чем реагирует. Где я проебался?
>>508840 > И никакой фри студии на самом деле нет? Она бесплатна для твоего некоммерческого использования. Но ты должен принести в жертву свои данные мелкософту для получения бесплатной лицензии. Это как зарегится на рутрекере чтоб иметь возможность качать. Ну и надо будет раз в год заходить под своим акком и обновлять лицензию.
>>508819 Вангую, что у тебя фокус в этот момент на другом контроле, который и выстреливает события с колесиком, а не твоя хуйня со скроллом. Скриншот бы выложил хоть, бля
>>508843 > Она бесплатна для твоего некоммерческого использования. > In non-enterprise organizations, up to 5 users can use Visual Studio Community Если ты у мамы кодер в модном стартапе, то можешь юзать нахаляву и получать с этого профит.
Сап шарпач. Есть один класс. В нем спрятан оче разный функционал некоего сервера. Все это свистящее счастье может кидать ошибки понятное дело. Вопрос такой, как их правильно обрабатывать?
Я вот сейчас думаю снабдить класс событием "Error" и вызывать его из блока катч, это ОК, или гроб кладбище?
>>509300 Смотря, что ты хочешь получить. В общем случае, если ты можешь обработать ошибку внутри класса, то логгируй и продолжай работать. Если не можешь, то отдавай вызывающему коду и по той же схеме до глобального хендлера.
>>509308 >Смотря, что ты хочешь получить. В общем случае, если ты можешь обработать ошибку внутри класса, то логгируй и продолжай работать. Если не можешь, то отдавай вызывающему коду и по той же схеме до глобального хендлера. > >Вот как-то так.
Понятно, спасибо. Дело как раз в том, что не хотелось логгирование внутри моего класса реализовывать.
При загрузке формы я инициализирую объект. private void Form1_Load(object sender, EventArgs e) { Employees emps = new Employees(); emps = emps.Load("C:/1/tst.xml"); for (int i = 0; i < emps.Count; i++) { EmpList.Items.Add(emps.Name);
} }
Проблема в том, что нигде кроме этого контекста он доступен не будет. А мне нужно, чтобы и другие события видели этот объект. Где и как мне его в таком случае надо проинициализировать?
public partial class Form1 : Form { public Employees emps; public Form1() { emps = new Employees(); emps = emps.Load("C:/1/tst.xml"); InitializeComponent(); }
>>509422 Хм. Он у тебя загружает работников и возвращает Employees? Не лучше ли сделать класс Employee и какой-нибудь сервис EmployeeService, который загрузит из файла работников и вернет List<Employee>? Он у тебя вообще работает? В цикле ничего не меняется и контролу отдается одно и тоже значение.
Не могу просто понять как забрать ссылку на объект, выделенный в ListBox, если я туда складываю только поле Name объекта. Если бы понял как - заюзал бы IndexOf и не парился.
Сильно не ругайтесь, второй день учу c#, до этого только иногда развлекался на похапе лет 5 назад.
>>509507 Какую-то ты хуиту делаешь. ArrayList - устарел и неэффективен, нужно юзать List<T> Это даст волшебный метод расширения .Find<T>(Predicate<T>) Вот так например: http://pastebin.com/q9xS2hqV
Еще непонятно, зачем ты передаешь Employees emps в метод поиска, если эта коллекция член класса. И нахуя тебе интерфейс ICollection, это вообще загадка.. Нуда похуй.
>>509503 Ты неправильно проектируешь. Надо писать в процедурном стиле, когда есть классы с данными без логики и классы с логикой без данных. Так проще писать тесты. В твоем случае у тебя будет класс Employee (класс с данными) и класс EmployeeService (класс с логикой). Вместо Employees используй просто List<Employee>. Метод Search, во-первых, назови FindEmployeeByName, чтобы было понятно, что он делает; во-вторых, он должен быть в EmployeeService.
>>509519 Я делал как написано в msdn для сериализации обьектов в хмл. Я же сказал, второй день учу язык, читаю Справочник по С# 5.0 и пишу для практики. Я просто не знал про List<T>; >>509528 Большое спасибо. А такой стиль является общепринятым?
>>509537 С одной стороны да, в ентерпрайзе так пишут через сервисы. С другой стороны, некоторые считают, что анемичная модель — антипаттерн и не должен использоваться в ооп.
>>509528 > когда есть классы с данными без логики и классы с логикой без данных
Вот смотрю примеры энтерпрайз решений (типа спринга) и пытаюсь понять: нахуя, спрашивается, придумывали ООП с его сущностями, объединяющими данные и методы работы с ними, чтобы потом их разносить по разным углам.
>>509561 ООП хорош на макроуровне, когда у тебя система состоит из крупных модулей и детали модуля скрыты за фасадом. На микроуровне, то бишь внутри модуля, удобнее писать в процедурном стиле: когда тебе надо протестировать код, ты просто руками подготавливаешь необходимые данные и отдаешь их алгоритму.
>>509592 ООП хорош на микроуровне, когда у тебя система состоит из мелких модулей и детали модуля скрыты за фасадом. На макроуровне, то бишь снаружи модуля, удобнее писать в процедурном стиле: когда тебе надо протестировать код, ты просто руками подготавливаешь необходимые данные и отдаешь их алгоритму.
А есть ли ресурсы где можно посмотреть код реальных проектов(репозитории на гитхабе например). Можете поделиться ссылочками? Или просто код, который полезно было посмотреть ньюфагу.
>>509816 Заходишь в топ github по c# и смотришь код популярных проектов, cms всяких. Там говнокод бывает, но в основном все няшно.
>>510024 Не имеет значения, с# 6.0 это конечно хорошо, но я не думаю что ньюфагу есть какое-то дело до его фич, да и мало кто его юзает пока. roslyn - дырявое говно.
Аноны, на каких ресурсах можно годно выучить асп.нет? Знаю шарп на норм уровне, джавку и пару веб фреймворков на ней. Хочу познать асп, вдруг больше понравится.
>>510032 >да и мало кто его юзает пока Тащемта, nameof - лучшее, что случалось в C# со времен анонимных делегатов. Уебки из микрософт годами высирали бесполезную хуиту уровня dynamic, linq или async и, наконец-то, сделали полезную фичу.
>>510217 Не найдешь не потому, что линк такой охуенный, а потому, что грамотных тимлидов очень мало. Зато много уебков с тремя годами опыта, которые ведутся на рекламу и тащат в проекты любую новую фигню. Конкретно линк провоцирует писать феноменальный говнокод, когда нихуя не понятно как это работает и как это покрыть тестами.
>>510219 Ты совсем поехавший? Какие тимлиды какие уебки? >феноменальный говнокод Какой говнокод, маня? Там внутри простые как тапок проходы по IEnumerable >когда нихуя не понятно как это работает Что тебе не понятно? Даже 4-х летний ребенок даун или php программист способен понять как работает linq. Он просто сворачивает твои уродливые пердолинги с листами в 2 красивые строчки, ты просто долбоеб если ради профита в 1ms пытаешься кукарекать против читаемости кода.
>>510219 Покрывается тестами очень просто. Бершь класс, который использует линк и пишешь для него тесты. Линк не тянет никаких внешних зависимостей. Если ты имел в виду l2s или ef, то да. Но это проблема не линка, а фреймворков ado.net. Впрочем, dal с ef/l2s тестируется сразу на бд, как и обычный ado.net с sp. Логика, которая использует dal, тестируется со стабами репозиториев. В итоге мы имеем удобный флюентный синтаксис для работы с коллекциями, а не горы вложенных циклов.
Лол, вы тут про линк пиздите, я как раз вчера читал про него. Ну кароч, все, наверное, знают алгоритм нахождения простых чисел "Решето Эратосфена" (ну там массив натуральных чисел просеивается, пока не остаются только простые числа). https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D1%88%D0%B5%D1%82%D0%BE_%D0%AD%D1%80%D0%B0%D1%82%D0%BE%D1%81%D1%84%D0%B5%D0%BD%D0%B0 В общем, я решил заставить linq выполнить этот алгоритм лол. Написал две функции, одна ищет простые числа как обычно, другая просеивает массив с помощью linq запросов.
То ли дело в кривости моих рук, то ли в задаче, которая для linq совсем не подходит. В общем, первая функция простые числа до 5000 за 30 мс находит, а вторая на 5000 уже зависает меньше 3000 работает, но гораздо дольше первой Так вот, как можно пофиксить вторую функцию, чтобы она ускорилась?
int[] natural = new int[N]; for (int i = 0; i < N; ++i) natural = i; natural[1] = 0;
int[] numbers = new int[N]; numbers[0] = 1;
var nnums = from a in natural select a; int j = 1; while( nnums.Count() > 0 ) { int p = nnums.First(a => a > 0); numbers[j++] = p; nnums = from a in nnums where a % p != 0 select a; }
return (from a in numbers where (a > 0) select a).ToArray<int>();
>>510266 Ты сразу после считывания из консоли выведи число. Read() возвращает код введенного символа. Я бы что-нибудь вроде int b = Convert.ToInt32(Console.ReadLine()); написал.
Пиздец длинно, конечно, но я других вариантов не знаю. перейти на кресты и юзать cin и cout азаза
>>510257 > Зачеркнуть в списке числа от 2p до n считая шагами по p (это будут числа кратные p: 2p, 3p, 4p, …). > nnums = from a in nnums where a % p != 0 select a; Охуенно шагаешь по шагу p, братишка. По факту, в расшифровке linq есть замечательное слово query, так что you doing it wrong. Это довольно удобный инструмент, чтобы не писать сотню однообразных циклов уровня "выбрать из списка все объекты удовлетворяющие условию".
>>510257 >>510219 Откуда вы лезете, дауны? Я хуею, linq им не нравится. c# - это в первую очередь высокоуровневый язык, а 95% софта, который пишут на нем - это enterprise. Методы linq тестировать не нужно, долбоеб, или ты думаешь что в microsoft тебе Linq с багами отдали?
Если у тебя задача с переборами листов, то ты должен использовать linq, точно так же, если у тебя интерфейсная асинхронная операция, которая решается с помощью tpl/async, то используй tpl/async, а не thread, потому что ты не понимаешь как это работает. Код на c# должен быть красивый и читаемый. Супер быстрым он быть не должен, за этим уебывайте в крестотред.
Вы собрались вот это: user.Where(x=>x.Age > 10).Take(100).Skip(10).Select(x=>new UserDto(x)) циклами расписывать? Лолблять, 3 страницы говнокода выйдет.
>>510329 >в microsoft тебе Linq с багами отдали? У меня для тебя плохие новости, микрософт кучу всего с багами дает. Впрочем как и другие производители инструментария для разработки программного обесчпечения.
>>510349 > микрософт кучу всего с багами дает За 8 лет разработки на фрейме видел 1 баг. Один, блять. Так что иди нахуй, мелкософт даёт на клыка по качеству девтулзов вообще всем.
>>510349 Приведи пример? У технологии которой > 8 лет багов не будет, а если и будут, то они будут настолько редкие, что ты до них никогда не доберешься.
В любом случае представил и проиграл как компания нанимает программиста, а он сидит юнит тесты на linq методы хуярит.
Есть несколько зависящих друг от друга комбобоксов(wpf). Короче, при загрузке страницы они пустые. Хотя коллекция туда грузится. SelectedIndex использовать бесполезно, так как я юзаю биндинг. Как сделать, чтобы при загрузке в комбобокс сразу запиливался первый элемент коллекции?
>>510387 Коллекции заебись грузятся. Заебись обновляются. У меня ОнПропертиЧенжед запилен в свойстве. Я просто хочу, чтобы коллекция показывалась сразу( а точнее её первый элемент).
>>510400 Фишка в том, что ты можешь выстраивать архитектуру приложения. Пишешь отдельно логику с моделями, отдельно вьюхи. А потом вдруг понадобится тебе переписать приложение на вэб. И тебе не придётся ебаться очень сильно. Т.к. логика не жестко связана с вью. И ещё. Есть всяческие встраиваемые юзер-контролы, которые могу облегчить тебе жизнь.
>>510400 Декларативный стиль задания контролов, простая кастомизация контролов через темплейты и стили, концепция mvvm. Ну, и вроде как там на dx все написано и якобы дивайс-индипендент.
>>510415 Ну, это ты загнул. Как будто на винформах сиквел запросы прямо в кодбихайнде хуярят.
>>510329 Да я ничего вообще не говорил. Я только читать начал, хотел решить математическую задачу, а тут такое отставание по времени. Решил спросить, может накосячил где. >Код на c# должен быть красивый и читаемый. Супер быстрым он быть не должен, за этим уебывайте в крестотред. (((
>>510309 Ну это кстати не главная проблема. Первая функция тоже все числа подряд пробегает, а не с шагом p. И вообще после применения запроса индексация же проебывается, как я их с шагом буду выбирать. Стоп, у меня в цикле выполняется nnums = from a in nnums where a % p != 0 select a; На каждой итерации будет выделяться новая память?
И вообще говно эти автоматические выделения/освобождения памяти. Как же хорошо прогать на плюсах, когда ты царь и бог, сам создаешь объекты и сам уничтожаешь.
>>510329 >Код на c# должен быть красивый и читаемый. linq портит красоту шарпа своими уродливыми стрелочками и длиными цепочками невразумиельных методов на sql-подобном собачьем диалекте.
>>510502 Ну время выполнения очень быстро растет от N, так что вполне логично. Эти запросы же "вычисляются лениво", то есть каждый раз когда я вызываю First() первоначальный массив начинает просеиваться с нуля. Что не так то? Вот если бы я после каждого отбора сохранял данные в новый массив.. Надо попробовать.
>>510508 Блядь, вот это поворот. Я просто охуел. Вот код f3(), почти как f2(), только каждый запрос сразу в массив записывается как там это называется? проекция запроса?
Работает ГОРАЗДО БЫСТРЕЕ чем обычный алгоритм на массивах. Однозначно у меня где-то ошибка в f1(), а как ещё это объяснить можно. Число элементов 100к.
static int[] f3() { int[] natural = new int[N]; for (int i = 0; i < N; ++i) natural = i+2;
int[] numbers = new int[N]; numbers[0] = 1;
int j = 1; int p; while (natural.Length > 0) { p = natural[0]; numbers[j++] = p; natural = (from a in natural where a % p != 0 select a).ToArray<int>(); }
return (from a in numbers where (a > 0) select a).ToArray<int>(); }
Помогите разобраться с WPF. Имею средние скиллы C# и ASP.NET MVC. Но пытаясь освоить WPF, терплю поражение. Паттерн MVVM мне понятен, но сам фреймворк для меня представляется хаосом. Сотни бойлерплейт-кода, сотни телодвижений для простых действий. Судя по гуглу, все пользуются мокрописечными фреймворками, которые не добавляют для меня ясности осваивания фреймворка. ASP.NET MVC освоил с пол-пинка. Подскажите что читать, какие фреймворки использовать. Хочу написать узкоспециализированную CAD-систему.
>>510513 > Что не так то? Ты пишешь какую-то ересь и кодишь какую-то ересь. У тебя есть поток данных (IEnumerable<тип>), ты делаешь к нему linq запрос. Потом ты получаешь преобразованные данные. Один раз. В этот момент создается маленький лёгкий итератор в куче. Один или пара, если у тебя запрос джойнит что-нибудь например. Но там в любом случае десятки байт максимум. И по мере получения тобой данных итератор работает и просеивает/маппит/аггрегирует etc.
Это же, блять, обычные map/reduce/fold из ФП, что там сложного и тормозящего может быть? Нахуя городить кучу ToArray говна вместо нормальной композиции?
>>510543 >>510545 Напиздел каких-то слов умных и рад. Ничего нового не сказал. Ну да, после одно вызова создается маленький итератор, после второго итератор по итератору, потом итератор по итератору итератора и т. д. Собственно при больших числах куча итераторов друг на друге, а при каждом вызове first это все начинает раскручиваться. Я понимаю, что это не оптимальный алгоритм, я блядь оцениваю время выполнения, интересно жи.
И что значит мутабельный, меня вот это слово больше всего заинтересовало?
>>510555 > Собственно при больших числах куча итераторов друг на друге Число итераторов = число слов в линк запросе. Какие, блять, большие числа??
> при каждом вызове first Ты должен вызывать получение данных один раз. Один! Линк он для этого, а не для ToArray в цикле, блять.
> каких-то слов умных > И что значит мутабельный Может стоит пойти почитать про мутабельность/иммутабельность, функциональное программирование и т.п. элементарные вещи прежде чем пытаться совать linq везде, куда не следует, м?
>>510329 >user.Where(x=>x.Age > 10).Take(100).Skip(10).Select(x=>new UserDto(x)) О, отличный пример говнокода линк-стайл. Ехала стрелочка через скобочку. Глаза сломаешь, пока это все распарсишь. Я не говорю о том, что при грамотной архитектуре никто, блять, не дает лазить напрямую в базу, там будет хранимка с параметрами @MinAge, @MaxAge и т.д. Пейджинг тоже делается внутри хранимки, вручную, через выдроченые в профайлере индексы, никаких Skip и Take. Джуниоры такие джуниоры. Сделал сраный сайтик и уже поясняет за архитектуру, вообще охуеть!
>>510809 >О, отличный пример говнокода линк-стайл Посоны, переписываем все проекты, анон с двача не понимает этот linq. >Глаза сломаешь, пока это все распарсишь. Если ты не умеешь читать код, то это исключительно твои проблемы. >там будет хранимка с параметрами @MinAge, @MaxAge и т.д Ебать делил, по твоему на каждый вызов dal на стороне бд нужно лепить хранимку в каждом проекте? Это где такие долбоебы работают? Один сраный crud 5 месяцев пердолишь?
Может ты мне объяснишь, даун, как твоя сраная хранимка ускорит выборку по 1 условию, учитывая что все индексы проставлены верно? Никак она нихуя не ускорит, sp для других вещей созданы. Зато на проекте запрос к базе меняют 3 недели, потому что каждый раз нужно миграции на базы накатывать, потому что какой-то даун так захотел.
>>510373 >Приведи пример? >У технологии которой > 8 лет багов не будет, а если и будут, то они будут настолько редкие, что ты до них никогда не доберешься. В конторе, где работаю, нашли баг в MSSQL, который микрософт официально признал и присылал исправление. И это только один из багов о которых я знаю. Чего уж там говорить за какой-то фреймворк. >>510809 >user.Where(x=>x.Age > 10).Take(100).Skip(10).Select(x=>new UserDto(x)) За такое у нас сразу убивают нахуй. >>510854 >Один сраный crud 5 месяцев пердолишь? >Зато на проекте запрос к базе меняют 3 недели, потому что каждый раз нужно миграции на базы накатывать Пиздец-же просто. С таким подходом ты будешь пердолица 3 три месяца после того как в структуру таблицы внесут косметические изменения, выискивая свой говнокод размазаный по всему проекту. И вместо отгрузки на продакшн одной хранимки, будешь всю систему нахуй ставить. Короче поддвачну вот этого, но все верно говорит. >>510809 >Сделал сраный сайтик и уже поясняет за архитектуру, вообще охуеть!
Нуб вкатился итт. Пишу прогу, жму в mvs запуск и оно радостно прогоняет тест. окно вывода работает, а ввода нет (console.readline();) Поэтому как откомпилировать прогу и запустить в черной dos консоли ?
>>510899 Если мы обрабатываем коллекцию, которая у нас в памяти, то правильно выносить условие в отдельную функцию. Затем, что со временем требования меняются и через пару лет простое x.Age > 10 может превратиться в пару экранов проверок. По нормальному код должен быть типа
foreach (var item in collection) { if (ItemMatchesOurCriteria(item)==false) continue;
ProcessItem(item); }
Если мы говорим за бд, то пейджинг и построение условий делаются внутри хранимки. Там внутри бородатый дба хуячит простыни кода, а девелопер просто передает через параметры @MinAge, @MaxAge, @PageSize, @PageNumber. Такой подход позволяет удаленно отлаживать хранимки через rdp или teamviewer, когда хуй ты перекачаешь к себе пару терабайт базы. Алсо, на практике поиск по какому-то полю зачастую подразумевает несколько джоинов, из которых это самое поле и берется. Если джоинить все сразу, то база умирает, поэтому в хранимке делается двухуровневый джоин: сперва поля, по которым ищут и сортируют данные, потом пейджинг и потом к итоговым 10 записям джойнится все остальное говно.
>>510926 Кокой молодец. А теперь добавь обработку исключений: любое обращение к item может бросить исключение, порченые айтемы надо складывать в отдельную коллекцию, не прерывая общего цикла обработки.
Шарпач, что можно по шарпику почитать на русском? На шарпе давно начал кодить и очень вставляет читать всякие статейки с реализациями каких-то задач. Хабр по дотнету уже весь перечитан, что ещё в рунете есть годное?
Заполняю листбокс с таблицы базы. В таблице нумерация начинается с 1. В листбоксе с 0. При этом мне надо делать запрос к бд, используя listbox.SelectedIndex как один из параметров. А он всегда на единицу меньше. Я, конечно, могу прикрутить костыль в виде +1, но хотелось бы решить эту проблему цивилизованно.
>>510917 > По нормальному код должен быть типа > простыня паттернов а вдруг требования поменяются У меня от этого та статья с хабра про хлебопечку. http://habrahabr.ru/post/153225/
Как же хорошо, что я не работаю в подобной энтерпрайзопараше.
>>510917 А почему нельзя сначала написать например >Where(x=>x.Age > 10) потом если условие вырастает до нескольких строчек - вынести его в отдельный метод, потом если нужно еще что-то делать - заменить linq на foreach?
>>511080 Статья - порожняковая демагогия. Автор с высоты своего трехлетнего опыта разработки смешивает фасад и детали реализации. На самом деле, код справа - это внешний интерфейс, таким модуль видят пользователи. А код слева - это внутренние детали реализации. Альтернативой паттернам является ебаное месиво из if-ов и не дай бог тебе поддерживать такое говно.
>Как же хорошо, что я не работаю в подобной энтерпрайзопараше. Ты пердолишь сайтики на джумле за $5/h.
>>511103 Затем, что Single Responsibility Principle. Это сейчас ты помнишь, как все работает, а через год будешь материться, какой же мудак все это написал.
>>511111 Ты дурачок совсем. Если у тебя работа с коллекцией сводится к фильтрации и мапингу в 2 лямбды, то переносить логику в отдельные методы и велосипедить циклы не имеет смысла. У тебя эта логика не факт, что будет дублироваться, и не факт, что когда-либо поменяется, а ты ее сходу в 10 кривых строчек расписал заместо 1.
>>511111 Single Responsibility Principle, я думал это о другом, например если у тебя класс EmailValidator занимается еще и формированием отчетов и картинки сжимает - то Single Responsibility Principle нарушен, я ошибаюсь? Какое он отношение к матчингу коллекции имеет?
Да и как я через год забуду что значит x=>x.Age > 10 ? Я скорей через год забуду что делают все эти сотни ItemMatchesOurCriteria методов.
>>511104 > Альтернативой паттернам является ебаное месиво из if-ов и не дай бог тебе поддерживать такое говно Узколобые дауны не видят альтернатив, кроме двух стульев. Впрочем ничего нового. Ведь они не слышали, что там, откуда пришёл linq ifы не нужны
>>511127 >переносить логику в отдельные методы и велосипедить циклы не имеет смысла Юнит-тесты для лохов, а тру-посоны сразу пишут без ошибок. Можешь не продолжать, тебе просто не хватает опыта, чтобы понять.
>>511137 >Single Responsibility Principle Он наверно имел ввиду единое место для внесения измений. С linq вполне возможна ситуация, когда две кодомакаки в своих модулях "по-быстрому" пишут реализацию одной и той же херни на одинаковых данных.
>>511137 SRP применим ко всему, не только к классам. Алгоритм состоит из двух частей: обход коллекции и обработка элемента. Если у тебя это два независимых компонента, то изменение одного никак не затронет другой. Например, ты можешь добавить в цикл хитровыебаную логику обработки ошибок и это никак не затронет код обработки элемента. Когда система состоит из независимых компонентов, ты меняешь один кусок, а все остальное продолжает работать как работало. А у школьника с linq головного мозга каждый патч превращается в многочасовое сидение над багами.
>Да и как я через год забуду что значит x=>x.Age > 10 ? Элементарно. Что это за магическое число 10? Почему возраст должен быть больше десяти, зачем это все? А если возраст меньше десяти, что тогда? Автор кода уволился полгода назад и никто не знает, как эта хрень работает и зачем.
Visual Studio community 2013 идет с SQL сервером? А то у меня уже стоял 2008 до этого. Зашел в программы там студия понаставила кучу всего связанного с SQL Server 2012 и 2014 еще появлилсь, но в служабх старый отключенный SQL 2008 Express висит и еще какой-то SQL Server VSS Writer. Это и есть 2012, 2014 сервер?
>>511212 > "!" слишком легко пропустить в коде Да мне уже ясен уровень ваших программистов. "!" они не видят, тело каждого цикла выделяют в отдельную функцию. И при этом продолжают писать все это на императивном говнеце.
>>511220 Ну как бы ожидаемо хули, шарпо-тырпрайз, сотни kloc бессмысленно дутого говна, тысячи kloc тестов, десятки тупых макак, увольняются раз в полгода. А все почему? Потому что хороших программистов хуй с огнём сыщешь.
>>511217 Вот когда ты дорастешь до тимлида, тебе дадут команду ленивых распиздяев, которые только и думают как проебаться от работы, тогда я тебя с удовольствием послушаю. А пока что ты хуй простой с laba1.
>>511226 Поэтому умные люди и придумали патерны-хуятерны, чтобы даже с мартышками можно было выпускать продукт. Пока ты будешь искать гениального программиста взамен ушедшего, конкуренты выпустят три версии и заработают миллиарды.
>>511228 > тебе дадут команду ленивых распиздяев > любая команда состоит на 90% из ленивых макак > Пока ты будешь искать гениального программиста взамен ушедшего
Как же хорошо, что у меня нормальная команда, лол.
Решил пройти этот самый EDX. Первая практичоское там хуита с объявлением пременных и присваиванием переменных и выводом их на экран. Ну отсылаю я такой на решение, потом меня перекидывают на следующей шаг. Это что мне нужно оценить решение других? Или это просто проверка как я усвоил материал?
>>511255 У тебя с ангельским плохо? Я не проходил подобные курсы, но там написано, что, помимо ревью и оценки, надо оставить фидбек на работу пира: что вышло хорошо, а что ниочень.
Шарпаны, подскажите. Пишу некую программу. Сейчас уже запилил необходимый минимум и она вводится в эксплуатацию. Интерфейс написан, ввиду своей невежественности на винформс. В будущем надо будет допиливать множество функций некоторые из которых требуют выборки из бд в датагридвью, копирования из него данных и т.д. Уже сейчас видно, что винформс не подходит для этого. На чем мне писать остальной интерфейс? Qt, wpf? Полный 0 в обоих случаях.
>>511400 То есть? Если я сейчас все понаписал на НЕТ 4.х, чтоб на ХП заработало надо перекомпилить на 4.0? VisualStudio 2013. Пока гонял только на win 7,8
Сап, шарпеи, невфаг с проблемами на связи. По работе решил запилить себе вспомогательную утилиту, при этом в программерстве я почти полный 0. Решил изучить сишарп для своих нужд, прочитал кое-что, что-то посмотрел, туториалы кое-какие и начал писать, да формы-кнопочки таскать. Есть несколько вопросов: 1. Кое как смог пропихнуть запрос в оракловую базу, теперь вопрос: мне такое гнездо кода в каждую кнопочку/ивент вставлять? Или соединение надо 1 раз открыть и потом только с командами и ридерами играться. (см. рис. 1) 2. Если я использую кейворд using перед созданием объектов с интерфейсом IDisposable, то мне не нужно вручную прописывать dispose или close? 3. Есть похожее на пик (см. рис. 2) представление? или через datagridview это надо делать? Как тогда делать, хочу чтоб элементов в строке было 2 (код и имя), а выделялась вся строка?
>>511455 1. Либо так, либо писать репозиторий. Возможно, заюзать l2s или ef. В сиквел сервере используется пул соединений, поэтому там не рекомендуется долго держать соединение открытым. Открыл, сделал дело, закрыл. Как это в оракле — хз. 2. Не, не надо. Он в будет вызван автоматически. 3. ListView.
>>510535 Нахуй тебе впф, если доставляет исключительно проблемы? Олсо, из-за адского бойлерплейта никак не могу вкатиться туда. На няшном аспе за тебя всякую хуйню генерит фреймворк и вообще всячески помогает, а впф странный какой-то.
Охуеваю с таких. Очередная тырпрайз-макака возомнила себя Фаулером и учит других, как нужно писать код, при этом сам не может в линк, утверждает, что он неподдерживаемое говно и предлагает на каждый чих городить отдельную функцию. Ну молодец, чо. Интересно будет посмотреть на команду твоих долбоебов, когда тебя собьет автобус. И можете мне не перезванивать.
>>511463 1. Окей, я почитал про пул соединений, в оракле он тоже используется, просто думал что при каждом нажатии на кнопку будет новое соединение устанавливаться. 2. Круто, конструкция из трёх вложенных using нормально работает? Не совсем говнокод? 3. Вот тут не совсем понял, листвью как-то таблицей выдаёт элементы, мне нужно чтоб как на пике, выбрал строку, состоящую из юзеркод+юзернейм, он тебе там, например, вернул юзеркод в другую форму.
>>511560 Посмотрел, не понял. Ангельский читаю болеелимение, а вот об код глаза спотыкаются. Может дома попробую разобраться. На Рюзке я так понимаю доков нет?
>>511684 >2 Нормально работает, даже шоркат есть: using(var a = new A()) using(var b = new B(a)) { }
>3 Листвью просто отображает список элементов. При этом можно задать темплейт для элементов. На твоем пике — листвью. Тебе просто надо разобраться с тем, как в нем задать хедер из 2х колонок и как правильно смапить данные.
>>511560 Верь этому. Я вот решил пол года назад, что даппер не нужен. И задача у меня слишком проста. Дык у меня теперь 1000 строк блядских (я тупой) SQL-лпши и других connection.open().
>>511695 Репозитории и сп не для тебя? Я не сильно знаком с даппером, но в нем же, вроде, из коробки iqueryable provider не поставляется? Т.е. все те же >1000 строк блядских (я тупой) SQL-лпши и других connection.open() только с обратным авто-маппингом.
>>511700 Яж говорю, я нуб. Напиши хоть нормально, что такое: >Репозитории и сп На самом деле я решил все проблемы решать в лоб, так как вообще не знал языков (да и теперь не знаю).
>>511707 Репозиторий изначально задумывлся как клевая фишка, которая позволяет тебе получать доступ к данным из одного места. На деле же в 90% случаев используется конченными долбоебами как ненужный слой абстракции над ОРМ (который, если подумать, уже является репозиторием), даже если у них всего один источник данных.
>>511707 СП или хранимые процедуры — это сиквел код, хранящийся на стороне субд. Т.е те 1к сиквел лапши, что у тебя есть, ты мог бы вынести из кода приложения и засунуть себе в базу. Репозиторий — абстракция над логикой доступа в данным. Он дает простой интерфейс для работы с данными на уровне бизнес логики. Никаких коннекшинов, датасетов, датаридеров и прочего говна, только сущности из предметной области. >private IUserRepository _repository; >... >BusinessLogic(IUserRepository repository) >{ > _repository = repository; >} >... >IEnumerable<User> users = _repository.GetUsers(filter); Внутри он по сути открывает соединение к бд, создает команду с сп, маппит входные параметры на параметры сп, запускает сп, получает результат и маппит результат в классы бизнес логики. Очевидно, что внутри репозитория может быть дохуя вспомогательного кода для поддержки транзакций, маппинга и пр.
conn.Query<User>("SELECT Id, Name, Email FROM Users WHERE Id=@Id", new { Id = userId } ).ToList();
В результате результат запроса мапится на список пользователей и больше ничего. Это не ебаный EF, в котором куча всякой ненужной хуиты. Если ты можешь в sql и запросы привык писать и отлаживать в консоли, то даппер для тебя.
>>511975 Это тебе надо обмазаться теорией парсинга. Если брать реальную задачу, то пишется грамматика для ANTLR и дальше оно само генерирует необходимые классы парсера.
Добрался до рефлексии и чуть чуть подвис m.ReturnType.Name ReturnType это свойство типа Type в классе MethodInfo объект которого это m Откуда у него, у свойства ReturnType, берется поле Name Разница в выводе между вызовом m.ReturnType.Name - Int32, против m.ReturnType - System.Int32
>>511680 Уважаемые господа не лезут с о своим ценным мнением в чужой коде стайл, даже если он говно. Допустимы обе формы, например. Ебать, на хуйню агрятся дауны. Кажется я теперь знаю как задетектить фимозников с невьебеным самомнением.
>>512020 >Откуда у него, у свойства ReturnType, берется поле Name Ultimate answer. Лучше в отладчике глянуть, конечно, или даже сорцы посмотреть. https://dotnetfiddle.net/EwNsHY
>>512061 Тогда глобальный вопрос. Если что то имеет ТИП чего то, то получается что это что то - всегда объект типа чего то и имеет доступ ко всем полям методам и прочему?
>>512235 >Если "qwe" имеет ТИП string, то получается что "qwe" - всегда объект типа string и имеет доступ ко всем полям методам и прочему? Нахуй так сложно?
>>512235 Хуевый какой то вопрос. Type - класс, экземпляры которого отображают типы в сборке. Вот ты намутил класс Foo { public int f; }. typeof(Foo) - это инстанс класса Type, с Name = Foo, Fields = MemberInfo[] { ... f ... }. typeof(Int32) - это инстанс класса Type, с Name = Int32 и другим набором полей, методов, модификаторов.
Через рефлекшны ты можешь в рантайме узнать, какие методы есть у класса и вызвать их, однако это нахуй не надо, если ты заранее знаешь, какие есть методы там. Тогда ты вызываешь их прямо как они есть.
>>512455 Если ты не даун, то смотря в какой математике. Если в тензорном анализе, то это нормально: мало кто такое слово вообще слышал. Если в дискретной математике, то уже хуже, но не смертельно. Если в арифметике, то да, можно не пытаться.
Посоны, никто не в курсе, как создаются такие подписи к функциям? Нашел такой вариант /// <summary> /// Пояснение к функции /// </summary> Вопрос: нельзя или сделать это как-нибудь через атрибуты? Мне просто не очень нравятся эти теги внутри кода лол.
Подскажите, есть ли в WF текст бокс с автоподстановкой, отображением найденых значений по вводимым символам. И еще нужно создавать коллекцию для автоподстановки к примеру из txt файла. Может кто нить ссылку дать на пример парсинга из txt.
Как в Windows Store приложении сделать так, чтобы содержимое GridView нормально выглядело на любом дисплее? Нормально всмысле чтоб элементы занимали все свободное место внутри контрола и чтоб при переходе на дисплей побольше увеличивалось кол-во элементов в строке/столбце.
>>513445 > GridView А он и должен выглядеть как ты говоришь. Задай элементам внутри конечные размеры, может в этом проблема. Ну или попробуй еще поебаться с конкретными панелями <GridView.ItemsPanel> <ItemsPanelTemplate> <WrapGrid Orientation="Horizontal"/> </ItemsPanelTemplate> </GridView.ItemsPanel>
>>513546 >Задай элементам внутри конечные размеры, может в этом проблема. Я не могу подобрать какое-либо конкретное значение чтобы список выглядел нормально на разных дисплеях. Обычно на одном дисплее выглядит норм, а на каком-нибудь другом хрень с кучей свободного места или что-то вроде того.
>>507104 Простой вопрос : Хочется стать программистом с целью заработать денег/свалить специалистом за границу. Долго ли учить C#, если не учил программирование в учебных заведения, но есть некоторые ИТ навыки(веб разработка, опыт работы в техподдержке)?
>>513666 >Хеловорд хоть можно написать? Можно, для остального неюзабельно. >Долго ли учить C# Учить пол года до джуна в пидорахии, потом еще года 4 до уровня, при котором ты будешь иметь шанс свалить.
>>513678 А какие основные направления есть в C#? Т.е. я к тому что язык этот много где используют. В том же XNA который помер и в Unity/UE прочих игровых движках. Но на этом мои знания где используют кончаются.
И ещё вопрос :
Может прозвучит глупо но встречал писанину, что C++ рулит, а C# не то. Можно в двух словах что чаще где используется или что адекватно, а что устарело.
>>513681 Сорта срачей. Плюсы могут в скорость чуть больше чем шарп, но это все время грозятся исправить. Суть в том, что если ты мудак, то на чем ни пиши, будет работать хуёво. Ещё шарп в отличие от вышеупомянутых может в веб.
Посоны, почему ебаные чекбоксы по дефолту не увеличиваются?
В общем пикрелейтед, можно как-то через стили задать для ВСЕХ чекбоксов, чтобы они подгонялись под размер или как-то задать размер фиксировано, при увеличении размера компонента CheckBox, сами окошки не увеличиваются, приходится ставить такой костыль, но это еболайство какое-то, у меня таких чекбоксов больше двух сотен. Можно всем задать такое?
>>513681 > В том же XNA который помер и в Unity/UE прочих игровых движках. В unity только шарпообразный синтаксис. > Может прозвучит глупо но встречал писанину, что C++ рулит, а C# не то. Си компилится сразу в исполняемый код. Поэтому быстрее в разы. Может в прямой доступ к чему угодно, например к регистрам процессора. Подходит для написания драйверов и процего низкоуровневого говна. Нетерпим к рукожопости. Если ты рукожопый быдлокодер, то твой код на Си уронит систему и будет состоять из утечек памяти чуть более чем весь. Шарп компилится в момент запуска на конкретном компе на лету, поэтому медленнее. Зато Шарп делает твою работу за тебя убивая всю ненужную хуиту, что ты посоздавал. Поэтому считается быдлоусточивым, как и хотел микрософт. Драйвер ан нем написать так же трудно, как написать операционную систему на html.
Сууууquааа, выручайте, я весь мозг себе уже выебол чому не работает. При таком коде http://pastebin.com/jz53nC8b выдает ArgumentOutOfRangeException, если пытаться запихнуть через .GetRange(a,b), то выдает ArgumentException "Смещение и длина вышли за границы массива или значение счетчика превышает количество элементов от указателя до конца исходной коллекции.", но каким ебанным хуем это может быть если a = 0, а b = list1.count (только в данном случае, вообще планируется, что a и b могут быть любым куском списка, но в конкретном случае это весь список.).
>>513765 Зочем? Вот сейчас специально проверил, скопировав туда весь ебанный список через list2=list1 - все-равно не работает, падла этакая, хотя списки абсолютно одинаковые.
>>513769 > Зочем? За тем, что из приведенного куска нихуя непонятно. Что такое list1? Что такое list2? Какие у них размеры перед вызовом этого куска кода? Тут дохуя мест где ты мог наебаться, но ты их не показываешь. Вместо этого ты показал маленький кусочек кода, написанный совершенно верно, но кидающий искллючения из-за входных данных.
>>513777 Ну смари: они оба list<string>, перед этим куском list2 очищается через list2.clear(), в list1 есть некоторое количество элементов, оно там просто гарантированно есть, т.к. я проверял его отдельно, потом берется определенный кусок list1 и копируется в list2, кусок этот точно находится в диапазоне списка, т.к. он находится программно по нему, однако, если попытаться применить эти границы таким способом как в коде, то все - пиздец нихуя не работает.
Объявляю строку str: string str = "111"; во время дебага (хоть через вотч, хоть просто так) обнаруживаю, что >The name 'str' does not exist in the current context ЧЯДНТ?
>>513793 >>The name 'str' does not exist in the current context У тебя случайно не такая конструкция if(some) { string str = "111"; } else { string str = "112"; }
>>513779 Ммм? Больше 200 приводов, каждый привод контролируется чекбоксом, каждый привод запускается отдельно или в группе, выбираем какие привода запускать или группу приводов, слева от чекбоксов их реальное состояние.
>>513794 >>513795 Я её вызываю в обработчике события "нажатие кнопки". Брейкпоинт ставлю тоже в обработчике события (там ещё много всего, но оно связано с элементами формы. Оно корректно выполняется).
>>513833 Да он в любом случае мне правильно выдаёт, он же машина. Но почему так? И как тогда смотреть значения в подобных ситуациях? (Например, более сложный вариант, когда string str= combobox.SelectedValue.ToString(); какое-нибудь)
>>513840 Смотря что на следующей строке и что ты вообще смотришь, у тебя может быть ДВЕ переменных с одинаковым названием, одна глобал другая нет, вообще блядь ты заебал код уже покажи и ошибку, тут вангователи собрались что ли.
>>513783 Error 1 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<string>' to 'System.Collections.Generic.List<string>'. An explicit conversion exists (are you missing a cast?)
У меня, наверное, не по теме вопрос. При щелчке правой кнопкой мыши по папке вылезает диалог, я хочу чтобы в списке оказался вызов моей программы. Это очень сложно сделать? И в каком направлении гуглить?
>>513865 Для вызова статического метода объект не нужен. Ты вызываешь b.concstr объект_класса.функция(), а нужно Program.concstr() имя_класса.функция()
Лал, написал программу, которая переименовывает все изображения в папке ну и вызывается щелчком правой кнопки мыши. Хотя это и шиндоус с успехом делает. Теперь хочу добавить в эту прогу функцию, которая бы удаляла дубликаты изображений. Правда пока понятия не имею как ее реализовать. Самый простой вариант: разбиваем изображение на сотню квадратиков, считаем средний цвет и сравниваем таким образом. Дубликаты полученные простым масштабированием должны отсеиваться.
>>514060 Не на сотню. Достаточно 3x3 квадратиков. Сбрасывай средние цвета в txt-файлы рядом с изображениями, т.к. цвета считаются довольно долго. Это только кажется, что точек мало, а оказалось...
пытался поставить vs 2015 , установка встала, я ее вынес нахуй через диспетчер. Потом еще пару раз пытался накатывать (оказалось проблема в антивирусе лол) всегда какая нить хуйня вылезала. Мне теперь придется переустанавливать венду? или можно вилкой dependencies подчистить? Алсо, поставил ОмниШарп на линупсе, но как то не доставляет.
>>507104 Ну короче, распишите нюфагу: 1)Может ли шарп в игры на андроид 2)Хотя бы на айос 3)Есть ли от него польза в вебе 4)Нужно ли ебатся ради многоплатформенности 5)Можно ли запилить игру в стиме Ах да, конечно все это можно, другое дело что можно ли без мозгоебства азаза низзя ява-хипстор обоссал старперов
>>514291 1. Может, но не нужет (xamarin); 2. см. п. 1; 3. да; 4. откуда я, блять, знаю? Может нужно, а может и нет, от проекта зависит; 5. ...да, даже на пехтоне можно сделать игру и закинуть в стим. >азаза низзя ява-хипстор обоссал старперов тян кек сас лал хика битард тнн
this.listView1.Columns.Add(new ColumnHeader() { Text = "Process", TextAlign = HorizontalAlignment.Right }); this.listView1.Columns.Add(new ColumnHeader() { Text = "PID", TextAlign = HorizontalAlignment.Center });
for (int i = 0; i < processes.Length; i++) { ListViewItem lvl = new ListViewItem(processes.ProcessName); lvl.SubItems.Add(processes.ProcessName); lvl.SubItems.Add(processes.Id.ToString()); listView1.Items.Add(lvl);
}
Уже часа пол понять не могу, почему ебучий лист вью вне цикла не может ИД процесса показать. И в ПИД и в ПРОЦ. НЭЙМ показывает название процесса. В цикле всё показывает, только кто бы мог подумать создаётся для каждого процесса новый столбец пустой.
>>514446 Это как? Я просто немного нюфаг. Вообще, у меня оба листа прописаны как глобальные переменные и в некоторых моментах куски первого листа или он целиком копируется во второй.
>>514453 >>514446 В общем заменил выше по коду list2 = list1 на list2 = list1.skip(0).take(list1.count).tolist(); и вроде бы стало по-нормальному очищать. Но вообще, чому такая хуйня случилась?
Ура, у меня получилось. Я прям так счастлив, наконец-то написал хоть сколько-нибудь полезную программу, а не калькулятор какой-нибудь. Переименовывает файлы и удаляет дубликаты я прост люблю паки по разным актрисам собирать лол. Изображение как и советовали разбивал на 9 частей, равенство брал не совсем точное. В общем, два прикрепленных изображения программа сочла одинаковыми как и планировалось. Ну можете посмотреть насколько одно из изображений шакальное, плюс я туда ещё шумов добавил и надпись небольшую. Даже работает довольно быстро копипастнул с хабра unsafe обработку растровых изображений с помощью указателей и BitmapData, по времени как копирование папки эквивалентного размера. Алсо, мне кажется, progressBar в моем приложении не засекается принтскрином. Это вообще возможно? Когда я скринил экран, он вроде был.
>>514532 Ты дубли сразу удаляешь или логируешь и спрашиваешь? Можешь ли ты математически доказать, что два изображения являются идентичными, если по твоему алгоритму степень их совпадения больше n%?
>>514543 Сразу удаляю. При отладке выводил и спрашивал, какое изображение стоит удалить, потом убрал.
>Можешь ли ты математически доказать, что два изображения являются идентичными, если по твоему алгоритму степень их совпадения больше n%? Пфф, нет, конечно. Вообще никакая степень совпадения не расчитывается. Использовал простейший алгоритм. изображение делится на 9 частей, в каждой области считается средний цвет, если у двух изображений разница меньше определенного значения, то они считаются одинаковыми Алгоритм годится только для того, чтобы распознавать изображения разных размеров, либо совсем одинаковые. Для моих целей этого достаточно. А вообще, поиск похожих изображений, как мне кажется, очень сложная и довольно обширная тема, но я же сейчас не матаном занимаюсь, а программированием.
Есть итт заинтересованные в работе? Самарская область нуждается в разработчике (С#: мобильные приложения на андроид и иос) Зарплата обсуждается, но, конечно, не как в этих ваших ДС, тысяч 40-50
>>514560 Лол. Вот какой смысл работать на рузке наебщика за мифические 40к реально ты заплатишь 5к, а потом будешь долго нудеть "вот тут еще доработай и тогда все заплачу", когда ту же штуку баксов можно заработать на фрилансе?
>>514594 В том, что с твоими говнопознаниями языка уровня Laba1.sln и VasianLiba.dll ты не нужен во фрилансе, а в какой-нибудь конторке за еду сможешь работать?
>>514598 Как же вы заебали со своими стереотипами. Торговля жопой это у тех кто сайтики за 100$ клепает, лендинги верстает и прочая мелкая, быстрая работа. c#- это либо тыртырпрайз, либо жирносайт на 3000 тыс человекочасов. Встречаются конечно работы вида "пофиксить кнопочку", но их можно игнорировать.
Фриланс на c# - это как равило самая обычная гребаная работа, с митингами, со спринтами, с вечными проектами. Подписываешь nda или даже контаркт и работаешь по 8 часов в день месяц, два, год, 10 лет. Какие гарантии? Работаешь хорошо, финансирование у проекта есть, кто тебя попрет оттуда? Где жопой тороговать? Раз в год, когда проект меняешь от скуки? Ну так поиск работы в офисе - такая же торговля жопой, только сложнее.
Нету у работы в офисах вообще никаких мифических плюсов в виде штаблтности, одинаково легко вас выпрут и из офиса и из муриканского проекта, если хуево работать.
Подбрось типичных тестовых заданий для дотнета типа пикрилейтедтолько там на жаву. Ну или каких-нибудь просто типичных задач, которые нужно решать. Я просто только так обучаюсь
Алсо еще такой вопрос, насколько трудно перестроится на шарп с джавы? Я слыхал там из сильно отличающегося только динамическая типизация ну и синтаксис чуть иной. Как там дела с фреймворками и апишками для веба вообще?
>>514639 И как это выглядит с точки зрения законодательства? Ладно в РФ можно заключить контракт, который так же идет в соответствии с тк, а что будешь делать с удаленной работой на зарубежную компанию? Нет страховки, не отпусков, нет казенного имущества, есть ндфл, так?
Это для джуна такое дают? А то для джуна как-то дохуя всего слишком. Я про ангуляр вообще пару месяцев назад только услышал, например. Там же типа sql server express должен быть установлен и на нем написана бд, да? Бля, мне mysql как-то больше по душе, он не столько жрет при всем при том, но видимо, на дотнете его использовать не дадут
>>514667 Знаю нескольких людей которых и туда и обратно перекатывались, разница есть, но минимальная, по фреймворкам тоже. Например тот же hibernate/nhibernate, jsp/asp.net web forms ну итд
>>514668 Никак это не выглядит, тебе высылают в электронном виде или по dhl бумажки, ты их подписываешь и высылаешь обратно. Работаешь работу, тебе на счет падают доллары, я вообще уже 2,5 года тупо на счет обычный карты сбербанка принимаю деньги, налогов никуда не плачу.
>Нет страховки, не отпусков, нет казенного имущества, есть ндфл, так? Ужас то какой, страховки и отпусков нет, проперженного кресла за 800 рублей нет. Ну работай за 40 тыщ рублей в самаре. Если мне нужен отпуск, я просто пишу что следующую неделю/2/3 меня не будет, а купить всю технику для работы я и сам в состоянии.
>>514669 Нет, это на мидла (22$ в час предлагали) Да, sql server. mysql как сам по себе говно, так и с .net не особо дружит, например code first с ef не работает на нем. Так то мне postgre больше по душе, но в мире ms любят sql server, но вообщем он плох.
Вообще-то деревянная параша, которую лично я бы обходил стороной, но это один из первых орм, так что стоит его уважать.
>на мидла
Вот кстати, можно пропустить джуна и сразу пойти на мидла? А то я кодил относительномного на всяких там ejb со spring mvc как-то не хочется стажировку проходить и выглядеть дебилом, когда тебе говорят что-то о чем ты уже сто раз слышал.
>postgres
Лол, у меня все знакомые-рубирожденные на нем пишут. Ну а вообще я пытался избежать sql server потому что однажды мне пришлось писать и поднимать сервер где на нем бд была написана. Как для большой бд он был достаточно неплох и удобен, но когда для небольшой вообще непонятно нахрена такую бодягу тяжелую использовать, лучше уж nosql какой-нибудь вообще.
>>514676 >Вообще-то деревянная параша Есть пара кейсов, которые провернуть на ef невозможно, но вообщем согласен. Я предпочитаю большую часть делать на ef, а узкие места выносить в sp или на dapper переписывать
>Вот кстати, можно пропустить джуна и сразу пойти на мидла? Не знаю, но звучит малореально. Проще пойти на джуна, там увидят что ты не хуй собачий и уже через 3 месяца переведут на мидла (были такие истории)
>такую бодягу тяжелую Я бы не сказал что он тяжелее postgres, та же тонна сервисов. >nosql Здесь ограничение не на размер данных, а на структуру скорее. nosql удобен, но имхо не как primary хранилище, самый сок - всякие скомпилированые view данные табличные кешировать чтоб все работало быстро и четко.
>>514681 Просто Take без Skip отсчитает кусок от 0 позиции.
Ок, спасибо, анон, все как надо пояснил. И вот еще вопрос: Какие типичные тесты/вопросы на собеседовании для джунов по этому делу? Всякие ололо-фибоначчи, факториалы, массивы, вот это все? Или там сразу к делу спрашивают что да как про шарп знаю?
>>514692 >Какие типичные тесты/вопросы на собеседовании для джунов по этому делу? На джуна будут спрашивать примерно такое: что такое .net, расскажи про coreclr, про gc, чем отличается interface от абстрактного класса, какие были версии .net и что интересного вводили, что такое linkedList, попросят какую-нибудь простую задачку на ооп решить, базу sql - какие join бывают. Вообщем можешь загуглить "c# junior developer questions" и результат будет не далек от правды. >фибоначчи, факториалы Такого не встречал никогда, и скорей всего никогда не спросят, никакого отношения к работе оно не имеет.
На мидлов сеньров- такой фигней не страдают, тупо с умным еблом выслушивают что ты до этого делал и задают 1-2 архитектурных вопроса.
>>514700 >чем отличается interface от абстрактного класса А чем? Приходит в голову только 1) Интерфейсы не содержат полей с данными 2) Классы могут наследовать множество интерфейсов.
>>514700 >На мидлов сеньров- такой фигней не страдают Лол, не собеседовался ты в лидерах рынка. В каком-нибудь епаме строго наоборот: джуниора спрашивают за архитектуру, синьора с 10 годами опыта заставляют написать на бумажке переворот строки.
>>514729 Интерфейс - это тупо декларация методов, подсказка компилятору "у класса X должны быть методы A,B,C, проверь блеать". Абстрактный класс занимает место в памяти, только компилятор не даст создать его объект на самом деле можно через IL. Нахуя в сишарп вообще добавили абстрактные классы - сие неведомо, на практике они не используются. Интерфейсы не наследуют, там нечего наследовать - данных-то нет. Наследуют классы, а интерфейсы реализовывают.
Интерфейс это способность объекта или принадлежность к определенной категории (еще иногда говорят контракт).
Абстрактный класс это класс объект которого нельзя создать. Нужен он очевидно чтобы его нельзя было создать, а использовать например как базовый класс для наследования.
> Интерфейсы не наследуют, В PHP наследуют, почему нет? Если интерфейс это набор требований то его можно расширять.
>>514736 Что значит "абстрактный класс занимает место в памяти"? Ты хочешь сказать, что если я напишу object b, то под b по дефолту выделится какая-то память?
>>514740 Ну он меня правильно поправил. Говорят не "класс наследует интерфейс", а "класс реализует интерфейс". Но одни интерфейсы могут наследовать другие, это да.
>>514749 >Что значит "абстрактный класс занимает место в памяти"? То и значит. В дотнете у каждого объекта есть служебные данные, подробности смотри у Рихтера. Объект пустого класса class Foo {} все-равно сожрет сколько-то там байт памяти, хоть в нем самом никаких полей нет.
>>514676 > Вот кстати, можно пропустить джуна и сразу пойти на мидла? Некоторые ребята с универа с ходу на первую работу мидлом устраивались, но я хз что за конторы.
>>514729 Есть забавное отличие интерфейса от абстрактного класса в способе диспетчеризации методов. Если виртуальные методы вызываются через таблицу методов класса type's method table -> concrete method, то интерфейсные методы вызываются по цепочке interface offset table -> type's implemented interface's method table -> concrete interface method. Кто-то тут говорил, что абстрактные классы нинужны. Так вот, их иногда используют в качестве оптимизации (interface -> base class), чтобы clr не надрывалась при частой смене типа объекта, метод которого вызывается через интерфейс. Ну и да, их так же используют в обычном ключе ооп наследования.
Эхх, а мне страшно ходить на собеседования. Я на них ни разу не был, да и мне рановато пока. Но всё равно, я же ничего сказать не смогу, если спросят, буду просто сидеть как аутист лол. Я даже если более или менее понимаю что-то, то с трудом могу сформулировать.
>>514736 >Лол, не собеседовался ты в лидерах рынка Ну почему, я год в luxoft работал, там правда немного по другому все, но меня больше зарубежные стартапы привлекают, там лампово.
>>514748 Ну не на 40, я часов за 18-20 сделал, а платят они 22$ в час, выше писал.
>>514763 > Эхх, а мне страшно ходить на собеседования. Та же хуйня. У меня выражение лица не выражает никаких эмоций, мимики почти нету и я всегда очень напряженным выгляжу.
На Juniorа без опыта сойдет список: C# WinForms, WPF, ASP.NET WebForms, MVC, MVVM, WebAPI, HTML/CSS/JS (ясен хуй), JQuery, Ajax, парочку Design Patterns, RESTful (WCF-service). Еще что нужно? Ребятки, подскажите, что упустил? Что могут еще спрашивать у .NET погромиста без опыта "коммерческой разработки"?
>>514785 У меня из знакомых легко устроились на 4-5 курсе универа джуном сисярпа в Киеве, без опыта. При чем они еще пребирали работки(где-то устраивались через неделю уволньянись на место получше), то есть им довольно активно присылали приглашения на собесодования, они просто выложили резюме.
>>514774 >стартапы Да ну нахуй. Ничему не научишься, только расшатаешь нервную систему постоянными стрессами. Зачем нем архитектура? У нас нет времени на проектирование! Хуячим говнокод по 16 часов в день, больше говнокода богу говнокода! Не думай ни секунды, хуячь код, все равно поддерживать эту хуиту будут неудачники, которые придут после нас. Рейтинг компаний: Топ тир - продуктовая компания. Учимся у опытных профессионалов, растем как разработчик. Мидл тир - аутсорс. Роста никакого, зато можно полдня пить кофе и проебываться. Шит тир - стартап. Выжимают все соки и выбрасывают, как использованный гандон. Все профиты получит владелец стартапа, если успеет впарить это говно до того, как оно начнет разваливаться от багов.
>>514786 Ну я-то по переучке, шарп сам изучаю, по образованию программист идет как переквалификация, т.е вышка не по программухе. Товарищ работает в конторке, говорит, что там не смотрят на образование, лингвист у них там работает, тоже переучивался. Просто одни говорят обращают внимание, другие говорят - нет.
>>514787 Ты прав, но я долго работал в enterprie парашах, теперь говнокодить в стартапчиках - это весело и хоть какое-то разнообразие. Рост итд - уже не интересно, главное чтоб денег побольше и мухи не кусали. Присутствует конечно выжимание всех соков, но если работать удаленно, то можно просто исчезать после оговоренного рабочего времени и ограничивать общение.
>>514783 >having Интересно, его хоть кто-то использует? Явный же косяк в дизайне sql, то же самое, что и where, но не то же самое. Я вычисляю все группировки во вложенном запросе, а потом делаю where во внешнем. А то еще мозги ебать и помнить, какое поле откуда у нас берется.
Дошел до баз данных. Первый параграф в учебнике — создание простейшей базы данных Microsoft SQL Server. Открываю студию, пишет ошибку и создавать ничего не хочет. Ну насколько я понял там какие-то несовместимости и проблемы с SQL Server Data Tools. Захожу на оф сайт и качаю нужную версию для студии 12 года https://msdn.microsoft.com/en-us/jj650015. Установка фейлится в самом конце. Теперь студия при попытке создания базы данных вообще пиздец выдает.
Открываю установленные программы, вижу пикрелейтед. Это вообще нормально? Как-то слишком много всякой херни, плюс всё разных годов. Может снести это все к ебеням и заново попробовать поставить то, что я скачал?
>>515019 Эмм, вопрос отменяется. Сейчас все запустилось нормально, проект создался. Магия какая-то, я ничего не делал. Ну разве что Скайрим только что удалил лол.
>>515016 Используй для работы с базой management studio. Что значит студия вылетает при соединении с базой? Ахуеть вообще, база - это ебаный сервис с tcp дырой для соединения. win service - с именем запущен - значит будет работать.
Знаю, что вопрос хуйня, но все же. Начал писать на шарпе, как посоветует поднимать свой скилл? Понемногу читаю Рихтера. Где искать норм задачи\проекты, мейби опенсорс какой-нибудь?
>>515291 Я сейчас как полное нубло отвечу. Если ты вообще только начал программировать/синтаксис учишь/принципы ООП, то берешь и решаешь какие-нибудь математические задачки. Ну вроде создания библиотеки с линейной алгеброй вектора, матрицы, решения систем линейных уравнений, вот это все, ммм. Туда же вообще всё что угодно можно напихать, чтобы получилось красиво. И кучу пространств имен, взаимосвязанных классов, и интерфейсов с делегатами.
Стопэ, отрыл сейчас Рихтера, пробежался по содержанию. Ээ, а как же .NET... Куда шарп без "своего" козырного фреймворка. Крч я затрудняюсь оценить твой уровень по >понемногу читаю Рихтера Но потом я бы посоветовал просто херачить аналоги любых программ: блокнот, paint, excel, да все что угодно.
Анон помоги, уже третий день занимаюсь проблемой. Суть в том, что мне в программе нужен функционал Windows просмотрщика картинок. По сути я должен получить картинку, навести на неё мышку, ту часть куда наведена мышка, увеличить прокрутив колесо мышки. Вот с последним у меня всё плохо. Гугление выдало мне кучу неюзабельного говна, либо статьи за 2009 год которых уже нет. И я сейчас нахожусь на этапе "Как заставить вообще pictureBox реагировать на Mousewheel". Тоесть я нихуя не понял. Кто-нибудь может таки обьяснить как таки его увеличить?
>>515332 Берешь панель, ставишь свойство AutoScroll для прокрутки когда твое изо больше формы. Вешаешь обработчик на MouseWheel - в списке нет такого события но событие есть. Пред этим с помощью MouseEnter, MouseLeave - устанавливай фокус на панель. Внутри обработчика изменяй Width b Height своего PictureBox'а относительно положения курсора.
>>515341 Спасибо. Насчёт этого >Внутри обработчика изменяй Width b Height своего PictureBox'а относительно положения курсора. Тоесть изображение будет занимать весь размер picturebox независимо отразмеров picturebox?
Анон поможи. Есть один CamelCase. Даже не один, а несколько. Мне нужно как то из него получить последнее слово, т.е. из CamelCase получить просто Case. Как бы это попроще сделать и без регулярок?
>>515381 Смотри, короч. Создаешь массив всех символов в верхнем регистре, затем берешь строку и с конца начинаешь проверять ее символы на предмет наличия их в массиве. Как только найдешь — кропаешь по индексу. Все.
>>515341 Вот с установкой фокуса я долго тупил. Вроде понаписал для элемента событий и ни одно не работает. Потом где-то на msdn заметил строчку "нужно установить фокус". Другой кун
У меня совсем тупой вопрос. Я не могу понять что такое сервер и какое у него имя. На примере пикрелейтедов. Тут необходимо ввести имя сервера "(localdb)\v11.0" в учебнике советуется (local)\SQLEXPRESS, эту строку я нашел вообще непонятно как, где-то заметил что-то похожее, любые другие надписи выдают ошибку вроде "не могу подключиться". Что она вообще значит? Сама база данных хранится на диске D, в папке D:\Проекты\Базы Данных лежит два файла AutoLot.mdf и AutoLot.ldf
В итоге, строка подключения выглядит как-то так Data Source=(localdb)\v11.0;AttachDbFilename="D:\Проекты\Базы Данных\AutoLot.mdf";Initial Catalog=AutoLot;Integrated Security=True
Что за имя сервера и нахер оно нужно? Почему пути до файлов не достаточно? Что вообще такое "сервер" лол?
>>515455 Очевидно, что субд находится не в файле mdf. Ты указываешь доменное имя сервера/ip или сорт оф localhost для коннекта к сервису с новым движком localdb или старым express. Как-то так.
ТЫЖПРОГРАММИСТЫ, как установить студию? Система Windows 7 Максимальная 64 бита, Visual Studio 2010 при установке выдает пикрелейтед и завершается. Пробовал ставить Visual Studio 2012, то же самое.
>>515480 Это чистая винда + MS Office 2003 + SQL Server 2008 R2 Раньше была 32-битная windows XP, такой ошибки не было, на ноуте с 32-битной Windows 7 Home тоже ставится.
>>515455 Это если база находится на другом компе (как обычно бывает в энтерпрайзе, см. трехзвенную архитектуру). Указывается имя сервера и имя базы на нем.
>>515468 >субд находится не в файле mdf А где тогда? Я прошелся по ссылке указанной для системных бд, лежащих в (localdb)\v11.0. Там лежит 4 mdf файла соответствующих системным бд. Вот они действительно в каталоге \v11.0 Бд asd создал автоматически, указав только сервер (localdb)\v11.0, но она создалась в другом месте. Для AutoLot был явно указан путь расположения файлов, но сервер тот же (localdb)\v11.0. Нахер он нужен то? Да, и кстати я только что каким-то образом подключил сервер (local)\SQLEXPRESS, вон он внизу. Все на пикрелейтед.
>>515489 А я скачал лицензионную 12 proffesional с DreamSpark. Кто-то сказал, что придется зачетку фоткать, но ничего делать не пришлось. Хотя регистрации там долгие.
>>515484 Аа, то есть (localdb)\v11.0 просто указывает, что файл нужно искать на этом компе? Я что-то забыл, что компы в сети можно связывать, никак не мог въехать зачем указывать имя сервера, если уже есть полный путь.
>>515455 >Что за имя сервера и нахер оно нужно? Почему пути до файлов не достаточно? Что вообще такое "сервер" лол? В данном случае MS SQL server. Он эту базу обрабатывает, и выдаёт тебе готовые таблички по запросу. Если у тебя чстоит - проблем быть не должно. Если ты тупо к файлу коннектишься... Ты ведь так не делаешь?
>>515559 Ну вроде разобрался. \v11.0 фактически версию MS SQL сервера указывает. На пике >>515498 asd находится в каком-то стандартном каталоге этого сервера и подключиться к нему я могу по строке подключения "Data Source=(localdb)\v11.0; Initial Catalog=asd; Integrated Security=True" при этом MS SQL находит базу данных asd в стандартном каталоге просто по имени. Если же я хочу подключиться к базе данных в случайной папке, то нужно указывать путь и полное имя и писать строку подключения в виде "Data Source=(localdb)\v11.0; AttachDbFilename=D:\Проекты\Базы Данных\AutoLot.mdf; Integrated Security=True"
>>515869 >>515859 Спасибо, пофиксил. создал объект и присвоил его массиву с инициализацией. Потом, как в паскале учил присвоил всему массиву значение null через цикл. Таки да содомит, содомит,весело быть нубом.
>>515859 Буэ, переменные транслитом, да и вообще уёбищные имена.
Исходя из того, что ты заскринил, ничего сказать не могу. Ну не записано у тебя ничего в массиве tovar[] bb. И зачем ты в функции vivod создаешь новый массив mm, почему просто не обращаться к bb?
>>515864 Кстати, хотел спросить насчёт List и обычных массивов. Массивы имеют заданный размер, элементы массива в памяти хранятся по порядку, а индексация работает на адресной арифметике или в c# не так? я прост крестоблядок В List можно добавлять элементы, следовательно, они не могут храниться по порядку, как тогда элементы List индексируются? Или List это классический односвязный список? Ну тогда для получения элемента по индексу List пробегается с самого начала.
>>515873 List - это std:vector, просто автор класса безграмотный уебок. Двусвязный список в дотнете - это LinkedList, используется чуть чаще чем никогда.
>>515885 null это полное отсутствие ссылки, отсутствует объект массив[1]. Ты не можешь вывести переменную в объекте, если объекта нет! Сначала нужно создать объект, где в коде до этого момента должно быть. массив[1] = new ИмяОбъекта();
class EmployeeList<T> where T : Employee, IEmployee, System.IComparable<T>, new() { // ... }
new(), class, struct — это я понимаю, весьма общие штуки.
Но нафига писать where T : Employee? Это уже не шаблон, а готовый класс. Никакого обобщения, когда четко указываешь базовый класс. Вместо T везде можно указываеть его.
>>515979 Ну при отсутствии дополнительных ограничений "IEmployee, System.IComparable, new()" я тоже не вижу смысла делать обобщенный класс, проще везде внутри Employee написать вместо T.
Но раз уж необходим лист с работниками, которых можно сравнивать, тогда в этом есть смысл. Вдруг у тебя какие-то работники, наследуемые от Employee "не сравнимы", тогда их нельзя будет в лист запихивать.
>>516014 Если бы он написал реализацию своего листа, везде написав Employee вместо T, то и потомков Employe там можно было бы хранить. Как на пике.
>>516102 Ему придется даункаст типов делать при работе с коллекцией. Это как если сделать список простых объектов, запихать туда разной всячины и проверять потом через is.
>>515979 Допустим Manager и Cleaner наследуются от Employee, тогда ты сможешь создать список с менеджерами или уборщиками и обращаться к элементам списка соответственно как к менеджерам или уборщикам EmployeeList<Manager> managers; EmployeeList<Cleaner> cleaners; managers.что-то_что_манагер_делает(); cleaners.что-то_что_уборщик_делает();
Если бы тип был закреплен как Employee, тогда бы ты мог создавать список EmlpoyeeList workers; засунуть туда и менеджеров и уборщиков. Но потом пришлось бы следить, чтобы уборщик не делал работу менеджера, типа if (workers is Cleaner) (Cleaner)workers.что-то_что_делает_уборщик();
>>515381 >Есть один CamelCase. Даже не один, а несколько. Мне нужно как то из него получить последнее слово, т.е. из CamelCase получить просто Case. Как бы это попроще сделать и без регулярок? Например через LINQ. Не самый оптимальный метод, но шо таки поделать F# меня избаловал.
[code] var word = "camelCamelCamelCase"; var lastCap = word .Reverse() .SkipWhile(c => char.IsLower(c)) .First();
var lastLowerRemainder = word .Reverse() .TakeWhile(c => char.IsLower(c)) .Reverse() .ToArray();
var result = lastCap + new string(lastLowerRemainder); [/code]
ITT элита продолжает обсуждает будущее этого поистине прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Не забываем, что у нас скоро релиз C#6, вместе с Roslyn и RuyJIT
Visual Studio 2015 выходит 20 июля
Что почитать:
- C# Yellow Book (для ньюфагов, книга полностью бесплатная)
- 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://channel9.msdn.com/Series/C-Sharp-Fundamentals-Development-for-Absolute-Beginners
Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://www.tutorialspoint.com/csharp/
- http://professorweb.ru
- http://net-informations.com
- http://habrahabr.ru/hub/csharp/
Онлайн-компиляторы:
- https://dotnetfiddle.net/
- http://csstub.com
- http://www.tutorialspoint.com/compile_csharp_online.php
FAQ
Q: Где и какую студию брать для работы?
Для большинства задач подойдет Community версия. Она бесплатная и скачивает из сети только указанные компоненты. Скачать можно тут - https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx
Q: Что с IDE для других систем?
Самый юзабельный вариант - MonoDevelop (http://www.monodevelop.com/download/)
Для vim можно использовать OmniSharp (https://github.com/OmniSharp/omnisharp-vim)
Обзор 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
Прошлый тред тонет тут: https://2ch.hk/pr/res/495903.html