Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем C#. Это поистине язык богов, сочетающий в себе простоту использования с поистине неограниченными возможностями. Знание C# - прекрасный детектор современного, умного и успешного человека. Изучение .NET безошибочно указывает на успешного в будущем человека. ITT элита продолжает обсуждает будущее этого поистине прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии. Не забываем, что у нас скоро релиз C#6, вместе с Roslyn и RuyJIT
Литература: - C# 5.0 in a Nutshell (Joseph Albahari и Ben Albahari) - Pro C# 5.0 and the .NET 4.5 Framework (Andrew Troelsen) - C# in Depth (Jon Skeet) По WPF читать Pro WPF 4.5 in C#
Перекачусь из старого треда. Кодач, собрался вкатываться джуниором на ирл работу. Попросили прислать любой свой код. Не пошлют ли меня на хуй если я им скину этот https://www.sendspace.com/file/cm7a0p Писал, если что, года полтора назад. На правку времени скорее всего не будет но с удовольствием выслушаю советы.
Суп, шарпач. Есть тут живые сишарп-боги знакомые с open ria services? На open ria не могу даже быдлопроект сделать, а старые риа отвалились после 10 студии:( В общем есть приложуха на сервелате с призмой, в единственном модуле идет работа с данными из базы, раньше всё работало напрямую через энтити и было заебись, но по тз надо прикрутить риа. Срочняк надо диплом допилить и проблема только в риа осталась, помогите, вроде подключил все либы как полагается, но линки не хотят кидаться, типа нет проектов с опен риа. спасай анон.
>>484028 Если через wcf делать, то работы будет еще на месяц, а у меня уже все сроки горят.
>Это как? Я не точно описал. Раньше был вообще wpf клиент и он через EntityFramework приотличненько работал с данными, а итоговую версию надо хуйнуть на сервелате. Вот я на сервелат портнул саму приложуху, на сервер прикрутил EF, осталось только передачу данных запилить.
Анончики, пишу впфные штуки в продакшен, довольно давно (ладно, полтора года), чет чую загибается направление, винрт, все дела. Куда порекомендуешь переключиться? Времени особо нет свободного, поэтому ВСЕ изучить не смогу. Можно особенности мобилки начать изучать, или взяться за веб, с современными овинами, катанами етк (ничего в этом не понимаю).
>>484319 Тогда ASP, он по крайней мере более-менее стабильно жив. Сейчас столько макак наплодилось, что любого адекватного специалиста с руками отрывают.
Продолжаю своё обучение в виде ковыряния в аск.фм, запилил обычную аутентификацию при помощи логина-пароля, теперь пытаюсь аутентифицироваться при помощи фэйсбука, но наткнулся на трудности: я не понимаю, что делать. Приделал webAuthenticationBroker, успешно получаю от фэйсбука acces_token, но нужен ли он вообще? Может, я поторопился, и там совсем другой метод? Посмотрел фидлером, как с этим справляется броузер, но нихуя не понял, ибо там сплошные редиректы с огромными непонятными юрл. В гугле не нашёл вообще нихуя.
>Кстати, а что на юнити пилят? Игори, как ни странно, приложения. В целом система люто напоминает то, что было во времена второго экшонскрипта на флеше. Скачай какой-нибудь быдлоурок от школьника по скриптованию в юнити и глянь. Я прикололся, решил таки запилить игру МЕГА ЭКШОН РПГ ММО КРУЗИС ДЬЯБЛО КОПАТЕЛЬ ОНЛАЙН своей мечты. Исключительно в целях расширения кругозора.
>>484593 >Не понял тебя Ну в геймдеве должен быть какой-то аналог энтерпрайзовских штампов, вроде crud, 3-tier архитектур, dal'ов с ненужными репозиториями?
Ну я так и думал, что скрипты и что-нибудь в этом духе
Написал небольшую утилиту, вроде полезную для меня лично, а радости не доставляет. Код говно какое-то. Мне вечно не нравится мой код, вечно хочется переделать его и так и эдак. Я говно, а не программист?
>>484655 Да я уже как-то вбрасывал. Это реплейсер иконок под Линукс. Я модернизировал его немного, чтобы он работал хорошо с символьными ссылками, и теперь ненавижу код.
>>484872 Похоже туплю. Единственный способ добраться до модели из js - это ajax? Тогда быстрее будет загрузить сразу нужные данные во View, но не отображать их в браузере и дергать уже оттуда?
Насчет MVC - модель это база данных? Контроллер - прослойка/интерфейс для ужобного выполнения асинхронных запросов к бд? Вид - пользовательский интерфейс, коллбеки от кнопок и топэ?
значит есть базовый класс class base; есть его наследник class child;
в base есть только контейнер массив байт и его размер. в child описаны функции преобразования этих байт в некоторые поля. так же есть и другие child_1,child_2 и так далее.
так вот. я пишу функцию
List<T> Parse<T>(byte [] buffer) where T:base
и никак не могу придумать как преобразовать массив одной удобной функцией в нужный мне класс. в справке пишет что перегрузка явного преобразование из базового класса в его потомка не предусмотрена.
>>485016 я не уверен что это мне поможет. мне нужно передавать около 200 16-байтовых координат. по сети. в любом другом виде кроме байтоебства получится слишком толсто.
Аноны, тоже вопрос по сериализации, в общем есть у меня сейчас пять классов, обьекты которых мне нужно передавать по сети (пилю клиент-серверное приложение, как можно догадаться), так вот вопрос, как на клиенте их правильно десериализовать? Мы же фактически не знаем что там пришло и к какому из 5 классов нужно делать десериализацию. Задача выглядит стандартной для клиент-серверных решений, может есть библиотеки для подобного?
>>483915 >язык богов >неуправляемый сборщик мусора который отправит ваш сервер в неопределённого срока отдых, если вы догадались выделить большой кусок памяти
>>485074 > если вы догадались выделить большой кусок памяти Не большой кусок памяти, а сложный граф объектов, мань. Разные вещи совсем. Но в целом, да, для серверных приложений надо немного думать мозгом.
>>485046 Засовываешь свои 5 классов объектов может быть все таки? в 1 контейнер с типами и юзаешь http://www.newtonsoft.com/json, переключив на bson. Это как совсем простой вариант. Как сложный и модный, используешь protobuf.
>>485082 > http://www.newtonsoft.com/json Ой бля, а хренли он платный-то стал? Такая классная штука была, но наверное бесплатная версия тебе покатит, хз.
>>485082 > Засовываешь свои 5 классов объектов может быть все таки? Обьектов этих классов, конечно же, не придирайся. >в 1 контейнер с типами и юзаешь http://www.newtonsoft.com/json, переключив на bson. Это как совсем простой вариант. Сейчас примерно так это у меня и реализовано, просто задумался можно ли найти что-то готовое для этого. >Как сложный и модный, используешь protobuf. А вот за это спасибо!
>>484908 Модель - это база данных (обычно через ORM вроде Entity Framework) + алгоритмы для их обработки, т.н. "бизнес-логика". Контроллер - действия, совершаемые пользователем, вызов алгоритмов из модели и отображение результатов в представлении. Есть еще MVVM, упрощенный вариант MVC без контроллера (там он объединен с представлением).
>>485163 Можно, но не нужно. По сути тебе все равно придется писать свою реализацию ORM. Зачем, когда уже есть готовый Entity Framework? Для самообучения конечно можно написать велосипед.
>>484908 Вью - это формочка на экране. Контроллер - это класс, в котором пишется логика по управлению интерфейсом ("если выбран чекбокс, то скрыть кнопку 1" вот это все). Модель - это класс, в котором данные ездят от контроллера к вью и обратно. Тупо набор свойств {get;set;} без логики. Пример: есть одна кнопка и есть чекбокс. Если чекбокс выбран, кнопка должна стать неактивной. Логика прописывается в контроллере, контроллер принимает и возвращает модель FormModel, у которой есть свойства ChekcboxModel и ButtonModel. Когда пользователь нажимает чекбокс, состояние чекбокса копируется в ChekcboxModel.Checked (руками или автоматически). Дальше контроллер выставляет ButtonModel.Enabled в зависимости от ChekcboxModel.Checked и возвращает обратно измененную FormModel. И затем FormModel биндится к твоим контролам на вьюхе и пользователь видит изменения в интерфейсе. Таков MVC в 2015 году. Бред 1988 года про "модель - это база данных" игнорируй.
>Есть еще MVVM, упрощенный вариант MVC без контроллера (там он объединен с представлением). Но ведь нет, тем тоже 3 сущности, вид, модель и модель вида. Вид отображает данные и предоставляет интерфейсы для взаимодействия с ними пользователю. Модель вида преобразовывает данные из модели в необходимый для вида формат и предоставляет интерфейсы для взаимодействия с моделью. А модель предоставляет сами данные.
Но, например: >"если выбран чекбокс, то скрыть кнопку 1" вот это все Это чистая вьюха в мввм, логика отображения данных из представления никуда вылазить не должна и вью модель о представлении вообще ничего не знает.
Вопрос по f# Почему в fsi после загрузки фала, через #load "name";; все внутри этого файла оказывается внутри ебаного неймспейса FSI_XXXX. Можно как-нибудь сделать чтобы все загружалось в общую область видимости?
>>485251 model–view–controller design defines the interactions between them.[7]
A controller can send commands to the model to update the model's state (e.g., editing a document). It can also send commands to its associated view to change the view's presentation of the model (e.g., by scrolling through a document). A model stores data that is retrieved by the controller and displayed in the view. Whenever there is a change to the data it is updated by the controller. A view requests information from the model that it uses to generate an output representation to the user.
>>485259 >A model stores data that is retrieved by the controller Это вообще отдельный слой.
Дело в том, что программирование не стоит на месте. За последние годы было получено овердохуя опыта использования MVC и разработчики поняли, что фантазии университетских кукаретиков про whenever there is a change to the data it is updated by the controller нихуя не удобны на практике.
'MyFile' defines operator == or operator != but does not override Object.Equals(object o) Скажите, зачем переопределять сравнение с обджектом, когда я переопределил == и != ?
Правильно ли я понимаю, что фиддлер заменяет хедеры при отправке запроса? Я почему спрашиваю: тестирую приложение на девайсе; когда не юзаю фиддлер, мне возвращается не то, что нужно, а когда юзаю его, возвращается всё, как надо. Т.е., как я понял, серверу не нравятся те хедеры, которые отправляет мой девайс сам, но хедеры от фиддлера его устраивают. Как можно посмотреть изначальные хедеры? Запросы отправляю httpClient-ом.
>>486299 > Как реализовать ввод одномерного массива с клавиатуры, конкретно через пробелы, конкретно для codeforces? Проследуй конкретно нахуй конкретно
>>486540 Обращение к данным надо через интерфейс репозитория делать, а сам репозиторий инжектировать в классы, где он будет использоваться. Тогда можно будет заменить конкретный класс доступа к данным.
Скажите, а что значит проектировать на интерфейсах? Это как бы писать код с одними IHoroshodelable, налаживать между ними связь через var x = (IHoroshodelable) new object(), а потом чисто реализовывать классы для этих интерфейсов?
Вычитал у Рихтера, что, как только метод, вызываемый в теле другого метода, оканчивает свою работу, все данные о нем из стека потока вынимаются. Но вот во время рекурсивных вызовов методы продолжают углубляться по-факту не оканчиваясь, что, наверное, создает опасность переполнения стека. Так ли это, или существуют определенные оптимизации со стороны компилятора или CLR?
>>486755 Смысл в устранении сильной связанности между классами. Интерфейсы используются по большей части из-за удобства тестирования. Ну и иногда действительно есть нужда в подмене реализации. http://pastebin.com/bPUWf2hK
Хотя, может ты имел в виду нечто иное? Они могут и по прямому назначению использоваться: public class Player: WorldObject, IActor, ICollidable, IUpdateable, IUserControolled. World.GetObjects().OfType<IUpdatable>.ForEach(x => x.Update(gameTicks));
>>486862 Проанализировать требования бизнеса, определиться с технологиями, провести декомпозицию системы. Последние включает разбиение системы на компоненты и определение путей их взаимодействия.
>>486898 Нет универсальной архитектуры на все случаи жизни. Есть некоторые архитектурные шаблоны, но it, блеать, depends. Про "проектировать на интерфейсах" я уже писал для чего это делается.
Не пойму, что происходит. На пикрилейтед, если обратиться к свойству объекта таким образом: @Html.HiddenFor(m => Model.Objects.Id) во View отображается неправильное значение (1), а если обратиться так @Model.Objects.Id то значение правильное (2)
Есть 2+ года разработки на сишарпе, но пилить энтерпрайз уже заебывает. Думаю перекатиться в ASP.NET MVC (есть опыт уровня курсовой), но в вебе у меня знаний почти нихуя. Начинать с азов PRO ASP.NET MVC или лучше по HTML/CSS/JS почитать для начала?
>>487896 Для фронтенда надо свободно владеть корным js, а в идеале еще знать популярные клиентские библиотеки, вроде ангуляра, жуквери. По разметке и стилям надо знать как минимум спеку их последних версий, иметь представление о препроцессорах и шаблонизаторах: less, jade. В общем, не маленький — в процессе изучения asp.net разберешься. Для бекенда, помимо mvc, надо знать webapi и вебформы.
Где можно найти сообщество, которое вот прямо сейчас, скажем, изучает ASP.NET 5? Начал самостоятельное изучение, но хотелось бы группу единомышленников, с которыми можно было бы обсудить кое какие моменты.
>>488028 {get;set;} = new, вот это все. ?. - это бесполезная хрень уровня async. Лучше пусть программа сразу умрет с NullReferenceException, чем молча проигнорит часть выражения. Интересно, эти уебки когда-нибудь pattern matching осилят, или так и будут натужно высирать ненужные фичи.
>>488283 Так с седьмой версии же обещают https://github.com/dotnet/roslyn/issues/206 И там можно будет писать что-то вроде if (x?.y?.z is Type value) { // code using value } Хотя синтаксис выглядит убого.
>>488132 Присоединился бы к вам. Но что вы имеете ввиду под "Начал самостоятельное изучение"? Там же ничего такого нет, все новые фишки за неделю осваиваются.
>>484343 Используй Identity framework(есть. З коробки). FB отдает тебе access token, чтобы ты мог через граф апи вытащить данные о текущем юзере. Это можно делать самому, но лучше используй готовый провайдер для идентити(тоже из коробки есть).
>>488283 Проиграл. Ты наверное не видел лапши из 5 ифов, чтобы получить какое нибудь второе имя собаки клиента или пустую строку/null в случае его отсуствия. Попробуй чота сложнее lab3.cs подевелопить
Шарпач, недавно писал, что впиливаюсь джуном и работодатель попросил любой небольшой проект. Собственно, скидывал сюда своё старое решение https://www.sendspace.com/file/7m4gqh ты сказал что неплохо, но я все же решил его перепилить. Вот, собственно, что получилось https://www.sendspace.com/file/q6auas Реквестую советы по стилю кода, что добавить-выпилить и т.д
>>488733 Вот теперь действительно очень даже, и словарики появились. Разве что некоторые моменты: > return new CaptchaContainer { CaptchaId = captchaId, СaptchaAnswer = captchaAnswer }; Object initializer'ы обычно используются для передачи опциональных параметров, которые имеют какие-то значения по умолчанию, либо не важны. У меня, насколько я понимаю, оба поля являются обязательными для нормальной работы, поэтому лучше создать конструктор с двумя параметрами. Ну и конструкции вроде string antigateResponse = HttpHelper.SendRequest( string.Format("http://anti-captcha.com/res.php?key={0}&action=getbalance", antigateKey+"1") ); достаточно неудобно читать, сразу визуально не очень понятно к чему относится закрывающаяся скобка на новой строке, приходится смотреть строчкой выше, думаю лучше разделить на две строчки. Ну это уже такое, каждому свое. А так, как я ещё в прошлом треде говорил, очень хорошо.
>>488767 >Object initializer'ы обычно используются для передачи опциональных параметров, которые имеют какие-то значения по умолчанию, либо не важны. У меня, насколько я понимаю, оба поля являются обязательными для нормальной работы, поэтому лучше создать конструктор с двумя параметрами. Вот этого не знал. Помню, у Троэлсена вычитал что это хороший тон. >Ну и конструкции вроде Лол, про этот метод вообще забыл, не до конца класс ещё заполнил. Спасибо.
>>488715 > 5 ифов, чтобы получить какое нибудь второе имя собаки клиента или пустую строку/null в случае его отсуствия Архитектуру проектировал дебил. Жрите теперь, хуле.
По поводу стилистики. Можно подумать над слудующим: - не использовать подчеркивание в приватных полях; - всегда проставлять скобки блоков; - по возможности не использовать алиасы clr типов; - использовать var, когда из выражения можно понять тип переменной. + То, что писал оп про вызов функций, либо выравнивай последнюю скобку по имени функции, но не имени первого параметра.
По поводу CaptchaService. По мне так паршиал класс там за уши притянут. Для таймаутов, попыток и пр. лучше сделать специальный dto класс, либо прописать их в сигнатуру конструктора, либо оставить публичными свойствами с дефолтными значениями. Для параметров реквеста нужно сделать отдельный класс и передавать его в качестве параметра методу GetAnswer(CaptchRequestParams captchaParams).
По поводу исключений. Лучше наследовать исключения от базового класса и не делать йобу со словарем.
>>488845 вот этого двачую, кроме: >- не использовать подчеркивание в приватных полях; Только один вопрос: почему ты так решил? А, ну и еще заметил одно - не делай, мать твою, строк длиною в 150 символов. Старайся за сотню не выходить. >>488847 -кун
>>488847 >>488845 >- не использовать подчеркивание в приватных полях; Ну тут то вроде уж точно все правильно, везде написано что именно так надо ебашить. >по возможности не использовать алиасы clr типов; >использовать var, когда из выражения можно понять тип переменной. >повсюду явные объявления типов переменных Вай? А что плохого то в явной типизации? Наоборот же так приятнее. Или в чем-то скрываются тонкости? >Лучше наследовать исключения от базового класса Опять же, Троелсен говорит что исключения вызванные логикой работы приложения лучше наследовать от ApplicationException, лол.
>>488845 > - не использовать подчеркивание в приватных полях; Ну это уже совсем вкусовщина > - всегда проставлять скобки блоков; Вот, это тоже писал ещё в прошлом треде, хотя опять же вопрос вкуса. Но я бы ставил, так визуально намного удобнее. >>488856 Двачую, можно поставить это расширение https://visualstudiogallery.msdn.microsoft.com/e792686d-542b-474a-8c55-630980e72c30 и указать максимальную длину строку строки (желательно 100 или 120 в крайнем случае).
>>488856 И еще добавлю >работодатель попросил любой небольшой проект мб он просил именно ПРОЕКТ, а не что-то уровня laba2 и ты зря стараешься? просто то, что ты скинул - это именно laba2, у меня в универе лабы(далеко не на it-спецальности, околоайти, скажем так) и то масштабней были, лол я к чему веду? мб зря стараешься и нужно еще немножко подрасти?
>>488859 Ну часто так удобней, особенно когда определение типа длинное, например что-то вроде Dictionary<string, List<int>> d = new Dictionary<string, Listr<int>>. И если, например, нужно будет поменять int на uint, придется менять в двух местах, что неприятно. Конечно это не во всех случаях удобно, а когда по правой части выражения легко выводится тип (в визуальном смысле).
>>488862 > мб он просил именно ПРОЕКТ С такими запросами работодатели должны идти нахуй, проект должен быть таким, чтобы по нему можно было более-менее определить уровень знаний и не больше. Такого проекта как у ОПа вполне достаточно: работа с сетью есть, основные конструкции языка используются, треды, исключения, коллекции.
>>488862 Я ещё докучи говна накидал, в некоторых по 20+ классов, лол. >еще немножко подрасти Каждый день дрочусь по книге. Ящитаю что даже на самой поршивенькой работе быстрее все освою. >>488864 А вот за это спасибо.
>>488859 > Вай? А что плохого то в явной типизации? Наоборот же так приятнее. Или в чем-то скрываются тонкости? Плохого ничего, при использовании var за тебя само все выведется, да, в случае всяких стрингов и прочих базовых типов это еще смотрится нормально. Хотя мне уже и тут не нравится, ибо несколько варов друг под другом выглядят эстетически более приятней, нежели разные по длине объявления типа >int .... >string .... >huipizda ... ну и как успел уже написать этот >>488864 анон, в некоторых ситуациях это реально удобно, не столько, сколько от того, что избавляет от подобного: >, придется менять в двух местах, что неприятно сколько в визуальном восприятии и читабельности кода. >>488847 -кун
>>488856 Они не нужны, только глаза мозолят. Если мочь в рефакторинг и не писать функции на 100500 строк, то параметры метода, переменные и приватные поля/свойства можно отличить друг от друга.
>>488859 >А что плохого то в явной типизации? Дублирование информации.
>Троелсен говорит Больше его слушай. >Лучше наследовать исключения от базового класса Имелось в виду от твоего базового класса, который ты уже создал, а не от базового класса фреймворка.
>>488871 > Каждый день дрочусь по книге. Ящитаю что даже на самой поршивенькой работе быстрее все освою. Ну тащемта работодателю похуй сколько и чего ты там прочитал, ему главное во что ты можешь. Поэтому я и предложил: >>еще немножко подрасти
>>488875 > Если мочь в рефакторинг и не писать функции на 100500 строк, то параметры метода, переменные и приватные поля/свойства можно отличить друг от друга. Шта? Вот я беру такой и открываю новый солюшн(раньше не работал с ним, а тут, например, пришлось), который содержит пару десятков проектов, в каждом из которых по десятку cs-файлов длиною в пару тысяч строк. Пытаюсь как-то в нем ориентироваться, разбираю нужные методы и т.д. Добавим, что разобраться нужно быстро, часто это делается за счет беглого просмотра кода, чтения "по диагонали", так вот, теперь может быть ты сам ответишь на вопрос: нужны ли подчеркивания или нет? Ответ: непременно нужны, ибо по одному простому символу перед названиям полей я сразу могу построить некую логику работы с данным классом. Это реально та мелочь, на которую не хочется отвлекаться, которая детектится зрением.
>>488880 > Использование их вне WinForms приложений это обычно признак плохого дизайна Джуниор раздает советы, вообще охуеть. Пиздец, анон >>488733, не слушай этого дауна из лабораторного класса. Эта кодомакака ничего сложнее лабы3 не писала и с кодогенерацией ни разу не сталкивалась.
>>488890 Лол, ты видел для чего у него partial-классы используются? Какая котогенерация, блядь? И я не писал, что это всегда признак признак плохого дизайна, просто их часто лепят там, где они совсем не нужны.
>>488903 > И я не писал, что это всегда признак признак плохого дизайна > Использование их вне WinForms приложений это обычно признак плохого дизайна Делается это так: Да, простите, в моем суждении была допущена ошибка. Вы правы, исправляюсь. А не пытаться выебнуться при плохой игре, как лишайная шавка. На тебя же и харкнуть за это могут.
>>488888 Ок, может ты еще и параметры функции да не приватные поля/свойства/методы как-то по-особому выделяешь, чтобы не отвлекаться? Пользы от подчеркивания никакой, если ты начинаешь теряться в классе, то это верный признак начать рефакторинг.
>>488945 >Пользы от подчеркивания никакой Да ты троллируешь наверное. >если ты начинаешь теряться в классе, то это верный признак начать рефакторинг. >если ты начинаешь теряться в классе >верный признак начать рефакторинг. >если ты теряться в классе >начать рефакторинг. Пиздец господа.
>>483915 Здраститя. Я таки не очень шарю в этих ваших сишках, сам кодил на пистонах. Возможно,нубский вопрос, ну не суть, короч. Суть в том, что мне нужно накатать прогу и скомпилировать в екзешник, чтоб он мог стартовать в идеале на любой системе (а не в идеале хотя бы на винде, но чтоб без установки всякой дополнительной поебени, тупо на флехе принес и на любом компе стартанул). Гуй всякий особо не нужен, прога с системой колупаться будет, вполне можно обычной консолькой обойтись. Так вот - сисярп пойдет под мои нужды? Или возможен гемор и лучше мне плюсами (или вообще сишкой) обмазаться, мммм?
>>488996 Ясненько. Вобщем, если я создам простенькое консольное приложение, то проблем быть не должно, но чем больше я буду накручивать всяких форм и прочих свистелок, тем больше ситуация будет усложняться, так примерно, да?
>>489006 Ты про C#? Если начнешь пилить формочки на WPF, то сразу же ограничишь себя виндой. Если у тебя консольные приложения, либо ASP.NET, то все должно работать и на линуксах/айосах с установленным моно. Вообще идеальным вариантом может быть вынесение общего кода приложения, не завязанного ни на какой гуй-фреймворк, и написать консольный/wpf/gtk# гуй, использующий эту библиотеку.
>>489008 >Ты про C#? Да, про него. Тогда нормас. Гуи/фреймворки как не потребуются, там все просто. Ввод парочки значений и работа с system, ничего сверхсложного. Просто не особо хочется ковыряться в языке ради одной проги, чтоб потом его бросить. А сисярп как-то поперспективнее выглядит, чем плюсы, вот и хочется одним языком обойтись, чтоб и под текущую задачу и на будущее.
>>489011 Ну тогда такой вариант вполне удобным будет. Работу с system запихать в отдельную библиотеку, для ввода значений написать gtk# и wpf приложения. На никсах использовать gtk# версию, на винде - WPF.
Господа, пишу простенький интернет-магазин (для интереса, просто изучаю SQL и ASP.NET MVC). Товары, которые я продаю не однотипны, соответственно, одной таблицей их охватить не получится. Так вот, вопрос - Стоит ли делать по таблице на каждый тип товара (например, отдельная таблица под мотоциклы, отдельная под автомобили), или есть более "умный" способ?
>>488845>>488847 >- использовать var, когда из выражения можно понять тип переменной. Вкусовщина же. У меня стоит внутренний блок на var после того, как я две недели разгребал легаси код одного дебила с конструкциями вроде var res = CalculateSomething(); которые возвращали разные типы, где-то строки, где-то инты, где-то булевые переменные. Понятно, что дело не в var, а в том, что писал дебил с решарпером, но такая теперь прочная ассоциация в голове var-зашквар.
>>485145 >Есть еще MVVM, упрощенный вариант MVC без контроллера (там он объединен с представлением). Ну ты и пиздец тупой. Ты походу серьезно UI не занимался никогда. Вообще-то MVC - это суперустаревшая архитектура, которую в чистом виде не применить к rich приложениям. А попытки ее допилить порождают Application Model -> MVP/MVVM. MVVM - это на данный момент апофеоз архитекруты UI.
>>485215 >Модель вида преобразовывает данные из модели в необходимый для вида формат и предоставляет интерфейсы для взаимодействия с моделью. Нет, не так. VM абстрактно моделирует V, взаимодействует с M. Задача V - отобразить VM на экране. В V не должно быть никакой логики в идеале
>>489573 MVVM вроде пошла из десктопов, ну там WPF и прочее, где View и Controller разделить сложно, если View - не OpenGL/Direct3D. А с базой в JS можно работать через AJAX.
>>489573 Во-первых, MVVM был запилен Майкрософт, когда они пилили WPF. А это самый продвинутый десктопный UI в настоящее время. Во-вторых, MVVM - это логическое продолжение Presentation Model, а Presentation Model - пошел от Application Model, который был еще в бородатом smalltalk. В-третих, те, кто пишут на js не парятся об архитектуре. А те, кто парятся, смотрят на js, как на говно. Поэтому не стоит ожидать появления каких-то архитектурных конструкций из стана web-макак особенно frontend. Ну и в-четвертых, MVC не может иметь состояние вида и логику вида, поэтому появидся Application Model. А от него пошли уже производные. В частности в MVVM решили, что ViewModel ничего не знает о View, и View байндится на ViewModel байндингами.
>>489648 Ты не обратил внимание, сколько там букв в аббревиатуре? Четыре: Model, View, View Model. View Model - это модель вида, который моделирует представление. Это такой контроллер, который заимел состояние и логику, которая присуща только представлению. Например на пике надо позволить двигать элементы из одного списка в другой. Дополнительно нужна логика, которая будет корректно дизаблить/энаблить кнопчки. Загружать пресеты, Двигать в элементы в списке вверх и вниз. Короче, вполне себе rich приложение. Но в Модель это не должно попадать, пока не будеть нажата кнопка OK или Aplly! Соответственно, т.к. в MVC у предстваления и контроллера нет состояния, это неосуществимо. А в MVVM это все находится в VM.
На впф пишу так: делаю большой класс работающий с базой (орм не нужны). Дальше делаю классы, хранящие данные и по необходимости дергающие методы первого класса. В этих классах везде использую INotifyPropertyChanged и ObservableCollection, тут же пишу команды которые обрабатывают данные. Затем делаю xaml-формочки с привязкой на классы с данными, в ивентах формочек ничего не пишу. Поясните, это мввм или нет?
>>489712 Тогда получается как-то слишком много оберток. У нас будет: Класс DataAccess, работающий с базой Data, хранящий ссылку на DataAccess и вызывающий его методы для заполнения своих полей, в нем поля с данными и методы работы с данными BindableData, хранящий ссылку на Data и предоставляющий свойства - обертки к его полям и команды - обертки к его методам Формочка с биндингами на BindableData
В чем профит-то ссылки бесконечно прокидывать? В том что Data можно будет при желании подключить к чему-то кроме WPF, не переделывая код?
>>489863 Рассматривай это так: myform(myform.xaml, myform.xaml.cs), myformViewModel, myData, [myDataService,] myDataRepository. Myform — это понятно, вьюшка. myformViewModel — это, по сути, презентер. На его свойства биндится вьюшка и он работает с моделью. myData — класс бизнес логики, шляпа с предметной области. В ней не должно быть ничего, что не связано с предметной областью, в том числе всяких ICommand и INotifyPropertyChanged. myDataService — фасадный сервис с бизнес логикой для антипаттерна анемичной модели и не только. myDataRepository — класс, отвечающий за получение данных myData из хранилища данных. Может спшки дергать, транзакции в тандеме с unitofwork проводить и пр.
>при желании подключить к чему-то кроме WPF Да, можно приделать соап сервис, rest сервис, веб-приложение, мобильное приложение или что-нить еще. При этом BLL и DAL трогать не придется вовсе.
>>489945 Не совсем удачно названия дал наверно. myForm не обязательно будет работать только с myData. Она может еще тянуть какие-нить данные с гугла googleData, тогда у myFormViewModel будет свойство с нотификацией для googleData, а у googleData свой сервис и репозиторий.
Ебать, у меня от последних сообщений БИЗНЕС ЛОГИКА и ПРЕЗЕНТЕР. Киньте чтоль примеров проектов того, как надо юзать этот ваш впф. Я обычно делал там - в xaml прописывал бинды, в xaml.cs задавал датаконтексты и прочие итемсурсы. Это плохо?
>>489945 А все что привязывается к SelectedItem (необходимо для работы со всякими списками) должно быть в myData, или только в myViewModel? Я правильно понимаю, что нужно писать два класса для каждой таблицы БД - один без INotifyPropertyChanged и один с ним? Оче много кода, оче много. Но как-нибудь попробую писать вот так.
Никогда не писал на впф, правильно понимаю, что вот это вот >INotifyPropertyChanged обычный обсервер? Вообще, чем мввм подход принципиально отличается от такового на винформс (кроме того, что замл как язык - говно ебаное?)
>>490010 В myViewModel. Пиши так, как хочешь. Нет смысла заморачиваться, если у тебя небольшое приложение, а не система с кучей различных компонентов, которые надо как-то тестировать и собирать, а потом все это поддерживать и фиксить.
>>490042 Обычный обсервер. Принципиально ничем. Весь ентерпрайз — говно ебаное.
>>490042 >Вообще, чем мввм подход принципиально отличается от такового на винформс Тем же, чем пиво от кружки. Ты разные вещи пытаешься сравнить. MVVM - это паттерн, его и на winforms можно прикрутить, и на WPF, и еще чего-нибудь и я это делал
>>490042 Но кзамл охуенен же. После убогих конструкторов винформса верстать на чем-то хтмл-подобном просто сказкой кажется. >>490050 У меня крудошлепство для небольшого предприятия, работаю один. До меня все было написано на дельфях в стиле hardcore_laba01, собственно я все это некроговно поддерживаю и частично переписал на шарп+впф. Может оно и не мввм у меня, и нет всяких прочих мудреных паттернов, но хотя бы не по 5000 строк процедурного говна в Form1.pas, намешанного с вставками SQL запросов, повторяющихся по тексту раз по пять каждый. Зато блядь прикручено всяких либ с кастомными контролами, которые еще хуй поставишь нормально. А для патчей я освоил ClickOnce. До меня я так понял систему обновляли раз в полгода руками на всех компьютерах.
>>489569 Разница в том, что MVVM - это "not invented here" рак мозга от майкрософт. Этим уебкам мало было классического MVC как в рельсах, им надо было придумать свой: такой же, но через жопу. В итоге маемо шо маемо. ViewModel - это контроллер, жестко привязанный к одной единственной модели. Если классический контроллер может вернуть вообще любую модель, то в MVVM у тебя есть выбор из одного варианта. Понабрали дураков по объявлению, блять.
>>490217 Ты не учел одного. XML - это аббревиатура, а XAML - акроним. Поэтому его можно читать как обычное слово. А X-Files - это вообще хрен знает что за конструкт, но явно не произносится как одно слово.
Привет шарпаны. Обучалкин снова врывается в тред. После некоторой заминки из-за диплома, продолжаю задавать свои тупые вопросы в этом треде. И так вот вам следующий: Есть поток который считывает информацию о директориях и файлах, и передаёт её в потоки-обработчики. Есть поток-обработчик который строит по полученной информации TreeView. Вопрос - как построить дерево? Передаётся объект типа ElementInfo
>>490248 Есть контроллер. У контроллера есть метод Get, который возвращает модель для формочки. В модели для каждого контрола есть свойства TreeModel, LeftListModel, RightListModel, AddButtonModel и т.д. Эти модели биндятся к соответствующим контролам. Допустим, пользователь перетаскивает итем из одного списка в другой. Вью дергает у контроллера метод DragNDrop (роутинг события в метод делается или автоматически фреймворком или руками). У контроллера есть депенденси IControllerInterface, в котором и находится вся логика твоих списков. Контроллер дергает IControllerInterface.MoveItem, затем говорит, что надо обновить вью и дергает у другой депенденси IUserInterface.RefreshView. В итоге мы можем просто все протестировать. Так бы я спроектировал систему. Если ты интересуешься, где хранится состояние, то ни контроллер, ни вью это вообще ебать не должно. Это проблемы IControllerInterface, который вернет данные из IControllerInterface.GetTree, IControllerInterface.GetLeftList, IControllerInterface.CanAddItemIntoRightList и т.д.
>>490241 >классический контроллер может вернуть вообще любую модель, то в MVVM у тебя есть выбор из одного варианта. Что значит "вернуть модель"? Куда и зачем?
>>490255 Очевидно, что все это частные случаи MVC, которые появились до изобретения интернетов и получения опыта разработки клиент-серверных приложений. Рельсовая MVC - это самая удобная парадигма, которую можно использовать вообще везде, а не только на десктопах.
>>490258 Во вью вернуть, куда же еще. Пользователь что-то делает. Вью генерирует ивент, ивент роутится в контроллер, контроллер что-то делает и возвращает модель, которая описывает измененное состояние вью. Модель попадает обратно ко вью, биндится и пользователь видит изменения на экране.
>>490256 Ну вот. Ты начал для UI делать какие-то блять модели. Это уже не модели предметной области, а модели предстваления. Получился не чистый MVC нихуя. И самое главное наплодил хуеву тучу сущностей, хотя логика описывается очень просто. Вообще, я интересовался только правой частью, без дерева.
>>490262 В MVC Model - это не модель предметной области, это декларативное описание интерфейса. Если на форме есть кнопка, которая может быть неактивна, в FormModel будет свойство ButtonModel, у которой будет свойство Enabled, которое забиндится на button1.Enabled
>>490269 Короче, MVC для rich приложений выглядит для меня как набор костылей и подпорок. Со мной и Фаулер согласен: >I've seen something described as MVC which turned out to be nothing like it. Frankly a lot of the reason for this is that parts of classic MVC don't really make sense for rich clients these days.
>>490270 >In MVC, the domain element is referred to as the model. Model objects are completely ignorant of the UI. Оттуда же. Так что твой MVC нифига не MVC.
>>490269 Ну, другого пока не придумали. Когда у тебя сидит сто макак и хуячат говнокод, лучше тонуть в сущностях, чем в багах. Когда ты пишешь один, то можно и не париться и ебашить sql в button1_Click.
>>490270 >современный MVC не похож на тот, что мы с посонами придумали в 1975 году, бида-пичаль
Шарпаны, а нет ли такой книжки, которая бы содержала всю стандартную библиотеку с примерами, что-то вроде msdn в pdf-формате. Дело в том что перед тем как начать что-то делать я люблю обмазаться прикладной литературкой, читаю в основном с планшета, интернета нет, вот и нужно что-то вроде справочника с описанием классов методов полей и т.д.
>>490251 Очевидно, у элемента, который приходит из потока-источника, должен быть какой-то id родительского элемента. В потоке-обработчике ты ищешь элемент с id = child.ParentId и добавляешь текущий элемент в дети найденному. Если родительский элемент не найден, добавляешь текущий элемент к сиротам (отдельный список таких элементов), а родителем делаешь корневой элемент. Когда приходит очередной элемент, просматриваешь сирот и добавляешь в дети к текущему, кого надо.
>>490294 Пустая трата времени. Там столько всего понаписали, что ты в середине забудешь, с чего начал. Когда тебе надо решить какую-то задачу, просто гуглишь, как это сделать и смотришь примеры на stackoverflow.
Котаны, я конечно понимаю что вопрос будет очень странный и обобщённый, но всё-же надеюсь что вы поможете начинающему дебилу. Хочу написать для себя прогу по чтению fb2 файлов. Тоесть читалку книг. Но если с принципом чтения файлов мне всё понятно, то отображение книг в удобочитаемый вид заставляет мои мозги закипать. Как вывести содержимое fb2 в удобочитаемый вид? Следует ли его парсить? Каким образом выводить (на какой элемент) чтобы была возможность медленной прокрутки? В общем понимаю что вопросы довольно тупые, но сам я нугуглить ничего по теме не смог, ибо даже не понимаю как правильно нагуглить это. Надеюсь тут мне помогут.
>>490295 я немного затупил, передаётся DirectoryInfo и FileInfo т.е. кроме системного пути я никак не могу их связать, прийдётся лепить структуру которая по системному пути будет раскидывать элементы. Хотелось бы более изящное решение
>>490296 идея в том что я примерно знаю какие классы я хочу использовать, а потом подробно изучаю их потроха, кстате, есть где сорцы для стандартной библиотеки? когда работал с джавой там был grepcode.com а тут не вижу похожего
>>490302 т.е. каждая папка имеет параметр id и parendId, а каждый файл только параметр parentId, верно? Честно говоря пока что не совсем понимаю как это реализовать внутри DFS но большое тебе спасибо, идея действительно хорошая, осталось реализовать
>>490303 Как-то так: [code] interface INumberSequence { int GenerateNextNumber(); }
class FileSystemNode { public int Id {get;set;} public int ParentId {get;set;} public string Name {get;set;} public bool IsDirectory {get;set;} }
void TraverseFileSystem(string path, int parentId, INumberSequence seq, IPipe output) { foreach (var folder in Directory.GetDirectories(path)) { var folderId = seq.GenerateNextNumber(); var folderNode = new FileSystemNode { Id = folderId, ParentId = parentId, Name = folder, IsDirectory = true }; pipe.Write(folderNode); TraverseFileSystem(subDirectory, folderId, seq, output); }
foreach (var file in Directory.GetFiles(path)) { var fileId = seq.GenerateNextNumber(); var fileNode = new FileSystemNode { Id = fileId, ParentId = parentId, Name = file }; pipe.Write(fileNode); } } [/code] IPipe - это штука, куда твой поток пишет информацию, хз как оно у тебя там сделано. Вызываешь TraverseFileSystem с parentId=0 и погнали.
>>490170 Лол, я хуйню спросил. Имел ввиду мввм подход на впф от винформс. Просто не понимаю некоторых еба-прогеров, которые за впф потому, что там все пишут с применением мввм. Было интересно, они совсем конченные дебилы, или там поддержка на уровне фреймворка, как в няшном asp.net mvc.
>>490482 Написать RSS-агрегатор. Должен быть в виде веб-сайта, с возможностью регистрации пользователей и кастомизацией источников. Юзать MVC, MS SQL, CSS, JS.
Есть проблема с asp.net mvc. Я отправляю через форму запрос на получение json, тот обрабатывает поступающий текст, и все работает нормально. Но когда в тексте запроса употребляются угловые скобочки, все идет по пизде, выходит ошибка. Текст ошибки никак не узнать, а в гугле нихуя по этой теме найти не могу. Сможет кто помочь?
>>490626 Забыл сказать, отправляю через аякс. Ставлю обработчик на OnFailure, он выполняется, но максимум, что я могу понять - так это то, что ошибка действительно есть.
>>490626 Что значит текст ошибки никак не узнать? В контроллер запрос приходит? Данные уходят? Какой хедер и тело респонса приходят? Ты дебажить-то пробовал или как?
>>490641 >В контроллер запрос приходит? Нет. Debug.WriteLine(Request.Form["Text"]); Так выыводятся только те запросы, которые обрабатываются успешно. Те, которые с угловыми скобочками - нет. Я думал, что их можно просто закодировать, но у меня нет даже доступа к начальным данным, полученным через Request.Form.
>>490649 Потыкал еще немного, он все-таки выдал >Additional information: Обнаружено потенциально опасное значение Request.Form, полученное от клиента Видимо, там специально запрещено хуячить даже подобие html-кода. Сейчас погуглю тогда.
Сап, кодеры. Я новичок, учивший с# по шилду и более-менее разобравшийся. Нужна рекомендация литературы, обучающей грамотному построению архитектуры программы. Нужда возникла после того, как я осознал, что в моем коде появляются "макароны".
>>483915 Котаны сколько вы берёте за побработку на стороне? Есть возможность заработать $15к за месяцев путём написания руками базы данных на C#. Но сроки строго 6 месяцев + 4 внедрение. Техзадание 500 страниц, взаимодействие с AD и 4 недокументированными прогами. Но помимо этого простота. Что-то меня пугает как раз это. Как будто где-то здесь наёб, только не понимаю где. Посоветуйте на что смотреть в ТЗ? Какие подводные камни?
>>492132 Если включено интернирование, а оно включено по-умолчанию, то для двух одинаковых строк создается один объект.
>Console.WriteLine((object)s1 == (object)s4); //False Тут ты кастуешь стринги к обжекту и сравниваешь референсы. Они не будут равны, ибо s1 и s4 ссылаются на разные объекты. >string s4 = s2 + s3; При конкатенации будет создан новый объект со значением "string First".
>Console.WriteLine((object)s1 == (object)"string First"); //True Тут ты тоже кастуешь к обжекту и сравниваешь референсы, но для строки "string First" был создан один объект, поэтому референсы равны.
Шарпач, поясни за NHibernate. Создаю объект и привязываю его к сесии через Save(), не добавляя изменений в базу (пока что). Потом удаляю этот объект через Delete();, делаю запрос к сущностям через Query<T>().Cacheable();, который возвращает мне этот удаленный объект. Вопрос: какого хуя? Он удален, он мне больше не нужен. Пробовал убирать его из текущей сессии через Evict(); - ноль толку. Кэш чистить не могу, т.к. пользователь на форме может много чего сделать и изменения должны записываться в базу при выходе и выборе сохранения изменений, либо откатываться при выходе без сохранения.
Приложение с графическим редакторомАноним06/06/15 Суб 12:11:01#305№492249
Добрый день. Подскажите, пожалуйста, на чём сейчас делают приложения с графическим редактором? В итоге должно получиться что-то вроде САПР, чтобы можно было выделять отображённые элементы, перемещать, изменять и т. д. Большинство информации будет в виде графов.
чому при создании методов в дочернем классе с тем же именем, что есть в родительском, рекомендуется писать new в дочернем классе перед типом метода (оба метода не virtual) ? и что в данном случае делает new? и какие могут возникнуть неполадки, еси не писать new? всё ж итак робит
>>492366 А что там? Я привык использовать Geometry, GeometryDrawing и т. п. и засовывать их в Image.Source. А куда вешать обработчики событий? У Geometry нет никаких OnClick. Как смещать и масштабировать изображение? Есть какие-нибудь конкретные руководства по этой теме?
>>492249 Я вот сейчас юнити осваиваю, как раз для ебли с графами. Мне пока что норм. >>490505 Но зачем велосипедить обсерверы на винформсе, если в впф уже все сделано за тебя.
>>Реализовать generic коллекцию, которая внутри себя хранит элементы в List<>, если количество элементов <=5, и переключается на SortedList<> (элементы копируются в другую внутреннюю коллекцию), как только количество элементов доходит до 6. Оценить скорость работы этой коллекции в сравнении с List<> и SortedList<> Как реализовать SortedList если у меня есть только Tvalue? Что пихать в Tkey? Если я буду делать просто SortedList.Count + 1 - смысла от него по идее не будет.
>>492586 Тебе, минуточку, придется генерировать инкрементальный ключ или гуид. Простой пример: ты добавляешь в свою коллекцию пять интов со значением 5. Если ты будешь использовать само значение или хеш объекта в качестве ключа, то во время добавления шестого инта со значением 5 у тебя все упадет к хуям.
>>492595 >бавляешь в свою коллекцию пять интов со значением 5. Если ты будешь использовать само значение или хеш объекта в качестве ключа, то во время добавления шестого инта со значением 5 у тебя все упадет А сортировку по гуиду потом делать что ли? Тем более у меня generic и там может быть не только int.
>>492596 А в чем проблема? Хотя инт в качестве ключа все же лучше: элементы будут отсортированы в порядке добавления. SortedList в данном кейсе использовать по назначению не получится все равно.
Ну смотрите: при запуске приложения на начальной странице я проверяю, есть ли у меня токен в файле. Если файл пустой, я перенаправляю юзера на страницу логина с помощью this.Frame.Navigate(typeof(LoginPage));. Потом я возвращаюсь на предыдущую страницу, но она снова отправляет меня на страницу логина, при том, что я точно знаю, что токен попал в файл. Если перезапустить приложение, перенаправляться на страницу логина я уже не буду. Более того:
При повторном отправлении меня на страницу логина, дебагер уже не пишет "redirecting to LoginPage \n\n token: " + мой_токен". Я так понимаю, что здесь есть какие-то хитрости, прошу помочь мне их понять, а то хуйня выходит, спасибо.
Есть длинный json. В нем множество однотипных секций { "key": 1 "name": "name1" }, { "key": 2, "name": "name2" }
Мне нужно выбрать тот блок, в котором есть определенное значение "key" Сделал через forech. Но может можно средствами библиотеки как то быстрее и проще это организовать?
посоны, поясните за необходимость виртуальных методов. если мне нужно переопределить метод в потомке, я могу без всяких виртуал-оверрайд всё это сделать, и доступ сохраню к методу предка. приведите пожажа пример ситуации, когда необходимо использовать именно виртуальные методы
>>492892 >>492896 Суть в том, что виртуальные методы вызываются через таблицу виртаульных методов, а не напрямую. Поэтому, когда ты создаешь потомка, кастуешь его к предку и дергаешь виртуальные метод, то у тебя вызывается метод потомка, а не предка. Если бы метод был не виртуальным, то был бы вызван метод предка, а не потомка.
>>492943 Собственно пример того, когда удобно использовать виртуальные методы. У тебя есть игра. В ней есть куча различных объектов мира, у которых есть специфичные методы для обсчета состояния и отрисовки. Ты же не будешь создавать отдельные массивы для всех типов объектов или пилить какую-то фильтрацию по типу объектов? Ты создашь базовый класс WorldObject, отнаследуешь от него все объекты мира и засунешь в массив. Потом тупо в цикле дернешь виртуальные методы Update и Draw.
Сап, шарпаны, расскажите что в основном спрашивают(у вас или вы, как собеседующий, на позицию веб-макаки) человека с годом коммерческого опыта? Хуй знает как определить свой левел, на мой взгляд что-то около "High Junior - Low Middle", но хочу не ударить в грязь лицом и пройти.
В своем резюме я описал себя скорее как full-stack(MVC + Javascript/AngularJS) разработчика, и поскольку в вакансиях также отражен желательный опыт работы с JS-фреймворками, то поясните также за возможные вопросы на эту тему, учитывая мой явно не синьерский уровень и опыт?
И как лучше расхвалить свою деятельность на прошлом проекте, чтобы это возымело максимальный эффект на собеседующего? Какие ответы более всего ожидают услышать? Надо только не переборщить, так как явно что в мои маняфантазии о том, что за год я прошел тернистый путь построения архитектуры крупного приложения, мне не поверят.
Можно ли при data binding-е в каждом group делать разные виды item-ов? Какие подводные камни? Я почему спрашиваю вообще: в pivot app на каждую страницу нужно выводить принципиально разные вещи, а binding же происходит сразу для всех страниц, т.е. нельзя же на каждую страницу биндить из разных файлов. Или можно? Буду очень признателен за помощь.
>>492996 Давай задам тебе вопрос. Что думаешь по поводу entity framework? Какие минусы/плюсы? я бы не стал задавать какието конкретные вопросы на знания технологий, ни о чем не говорит.
>>493268 >>493268 Общо говоря, думаю что фреймворк пиздатый, позволяет существенно ускорить разработку(предоставляя широкое множество готовой функциональности) для многих типов проектов - это мне кажется главным плюслом. А минусы в том, что до сих пор(насколько я знаю) поддерживаются не все фичи SQL Server и в крупных проектах это является одним из препятствий переходу от более старых технологий к EF. Еще возможности кастомизации(хоть и не во всех проектах требующейся) ограничены весьма. Вангую, слишком абстрактно ответил.
>>493266 >А ты сам как думаешь? Читай про async/await. Читал. Оче плохо объясняется в интернетах. >Ни в коем случае нирикамендую делать без эвэйта. Потому что получится гавно. Даже лень объяснять.
Да, походу есть разница.
Теперь такой вопрос. Я же, в конечном счете вызывают асинхронные методы (помеченные async), из синхронного (обычного). Как правильно их вызывать?
И еще, если функция не возвращает значения, надо ли тип возвращаемого значение делать Task или лучше Task<void> ?
>>493317 Попробую описать проблему более подробно.
Есть некий поток. В нем крутится бесконечный цикл. Я хочу из этого цикла вызывать асинхронный метод. Так, чтобы метод вызвался, и не дожидаясь его завершения цикл пошел на новую итерацию.
Если я просто вызываю метод_найм то компилятор выдает предупреждение: >Because this call is not awaited, execution of the current method continues before the call is completed. Consider applying the 'await' operator to the result of the call.
Если же я добавляю "await", то получаю ошибку: >The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.
>>493317 Вангую, что ты и есть тот анон, которому я вчера пояснял за хайлоад, IOCP и пр. в отдельном треде, тебе там как раз в MySql из 1000 потоков писать что-то надо было. Ну или не тот.
В общем, после того как пару месяцев не видел кода, открыл, увидел что-то странное, удалил все нафиг, переписал, а потом вспомнил(когда перечитал документацию Мускл Конектора), что то все правильно было.
public sealed class Singleton { private static Singleton instance = null; private static readonly object padlock = new object();
Singleton() { }
public static Singleton Instance { get { lock (padlock) { if (instance == null) { instance = new Singleton(); } return instance; } } } }
Схуяли здесь проводиться lock над каким-то левым объектом-пустышкой? Я всегда думал, что lock блокирует доступ к тому, что в круглых скобках, пока не выполнится вся хуйня в фигурных. Под примером написано
This implementation is thread-safe. The thread takes out a lock on a shared object, and then checks whether or not the instance has been created before creating the instance. This takes care of the memory barrier issue (as locking makes sure that all reads occur logically after the lock acquire, and unlocking makes sure that all writes occur logically before the lock release) and ensures that only one thread will create an instance (as only one thread can be in that part of the code at a time - by the time the second thread enters it,the first thread will have created the instance, so the expression will evaluate to false). Unfortunately, performance suffers as a lock is acquired every time the instance is requested.
Note that instead of locking on typeof(Singleton) as some versions of this implementation do, I lock on the value of a static variable which is private to the class. Locking on objects which other classes can access and lock on (such as the type) risks performance issues and even deadlocks. This is a general style preference of mine - wherever possible, only lock on objects specifically created for the purpose of locking, or which document that they are to be locked on for specific purposes (e.g. for waiting/pulsing a queue). Usually such objects should be private to the class they are used in. This helps to make writing thread-safe applications significantly easier.
>>493415 >Locking on objects which other classes can access and lock on (such as the type) risks performance issues and even deadlocks Перечитывай пока не поймешь.
Алсо, реализация неоче. Должна быть двойная проверка. А реторн после выхода из лока лучше писать.
get { if (instance == null) { lock (padlock) { if (instance == null) {instance = new Singleton();} } } return instance; }
>>493415 >ensures that only one thread will create an instance Что непонятного-то?
>lock над каким-то левым объектом-пустышкой На что-то лочиться-то надо. padlock используется как объект синхронизации. У него там где-то прописывается, что на нем залочились и при повторной попытке взять на нем лок тред заморозится.
>lock блокирует доступ к тому, что в круглых скобках Таки нет. К тому, что в фигурных.
Почему в проекте ASP NET MVC перестают работать css/js файлы? То есть я написал css-ку, всё работает, на следующий день начинаю дописывать и ничего не происходит, можно вообще удалить весь код из файла и будет работать как раньше. Как с этим бороться? Пробовал собирать / чистить проект - не помогает. Алсо, что писать после чатика для вникания?
>>493415 > lock блокирует доступ к тому, что в круглых скобках, пока не выполнится вся хуйня в фигурных. Интересно, много кода ты уже написал с таким подходом?
Если я объявляю метод как public async void, а не public async Task, то варнинг пропадает. Но в документации пишут что воид не стоит использовать. Почему - не объясняется.
>>493462 Инкапсуляция? Модульность? Зачем делают методы в которых вызываются другие методы в которых вызываются другие методы? Или в случае асинхронного подхода это все как-то по другому работает?
В данном же конкретно случае - просто тестовый пример.
Парни, а как симулировать проблему с синглтоном, когда создается два экземпляра? Делаю вот так. class Test { public void Method() { for (int i = 0; i < 50; i++) { Program.Instance.Method(); } } }
class Program { private static Program instance; private static int cnt;
public static Program Instance { get { if(instance==null) instance=new Program();
>>493497 Попробуй так >Thread thread = new Thread(new ThreadStart(new Test().Method)); >Thread thread1 = new Thread(new ThreadStart(new Test().Method)); >thread.Start(); >thread1.Start(); >Console.Read(); Да и то, навряд-ли.
>>493435 В цикле будет создаваться куча автоматов из переделанных компилятором методов. 1. Из метода не будет возвращаться таск. 2. Из метода будет возвращаться таск. 3. Из метода будет возвращаться таск и тред будет морозиться на каждой итерации цикла. Или не будет, если таск зарезолвится раньше.
По какой то странной непонятной причине начинает происходитьб хуйня. Ннапример, есть токен "state". Он пуст. Я долго ебался пытаясь прикрутить проверку. jj["state"] != null упорно не хотело работать. Но потом я поменял его на jj["State"] != null и все заработало. Просто поменял первую букву на заглавную. Но он нихуя не с заглавной написан. Проверял в отладчике, студия показывает "state" Что это за хуйня такая? Это фича json.net или я чего то непонимаю?
Товарищи шарящие не подскажете ли? Написал тестик, который результаты сохраняет в excel; у меня на компе все норм, перекинул проверяющему - как раз при сохранении вылетело с такой ошибкой. Дал другим попробовать - у 2-х из 3-х нормально все. Кто-то знает в чем проблема? Заранее спасибо. (По логу .net стоит выше, чем в сборке)
>>493626 Ну в общем в моей программке есть несколько форм, одна главная. и 4 дочерние форма, к которым я привязал базу. и при выходе из дочерней изменения базы сохраняются, но как только выходишь из главной они не сохраняются. Как можно сделать, чтобы при выходе из главной все изменения сохранялись, которые я внёс в других формах. Прикладываю программку свою. http://rghost.ru/6pqrMYLTd
В инторнетах пишут такое >you should avoid mixing async and blocking code. Mixed async and blocking code can cause deadlocks, more-complex error handling and unexpected blocking of context threads.
Но что мне делать? Если мне нужно писать в файл из разных потоков. И делаю я это так: > lock (file_locker) > { > _outfile.WriteLine(_string_builder.ToString()); > }
Есть ли способ переделать это для асинхронного кода?
Анончики, помогите с такой проблемой. Форма, есть на форме picturebox. На нем я что-то рисую. Сама picturebox находится на вкладке. Меняю вкладку - все нарисованное пропадает, приходится постоянно вызывать перерисовку на клик по picturebox'у. Почему все нарисованное пропадает и как это исправить? Аналогичная ситуация если свернуть программу или нажать alt это-то че за хуйня, почему на альт бля.
Binding, EF, вот это всеАноним09/06/15 Втр 11:41:26#382№493695
Шарпаны, смотрите, какая хуйня. Есть C#, база данных, EF, WPF и, положим, три таблицы - workers, departments, appointments. В первой поля 'workerID','name' Во второй 'departmentID','name' В третьей 'appointmentID','workerID','departmentID','salary'
Мне нужно в DataGrid править третью таблицу. При этом в поле 'departmentID' должен быть не внешний ключ, а поле 'name' таблицы 'departments', а для редактирования использоваться combobox. А поле workerID вообще не должно отображаться, поскольку worker, положим, выбирается из соседнего datagrid. Но при добавлении новой записи должен добавляться id выбранного worker. Вот как это реализовать?
>>493566 > json.net Смотри jj["state"] == null - ключ state не найден - { } jj["state"] == JsonValue.Null (или как то так, уже не помню) - { state : null }
>>493695 Хз можно ли сделать это из коробки. Во первых есть два темплэйта, один для просмотра другой edit. В первом просто биндишь результаты запроса через Include. Во втором загружаешь в комбобоксы данные и биндишься к селектедитему. Ну ты понел короче.
>>493641 >Но что мне делать? Проще не пользоваться этим говном async/await, а делать все через проверенный yield return. В реальных приложениях мало просто запустить что-то в фоновом потоке, надо еще получать оттуда сообщения "обнови прогресбар" и иметь возможность остановить процесс кнопкой Отмена. Проще один раз написать BackgroundWorker с потоком внутри и потом просто передавать туда IEnumerable<T>, чем каждый раз ебаться с асинками. В майкрософте сделали очередную бесполезную фичу, у них это часто бывает.
>>493847 >Асинхронность невозможна без многопоточности. >Асинхронное программирование - это всего навсего паттерн управления потоками. JS-никам это расскажи, ок да?
>>493847 >Асинхронность невозможна без многопоточности. >Асинхронное программирование - это всего навсего паттерн управления потоками. Че-то я серенькнул. Как-же у меня софтинка работатет, которая в одном потоке разруливает сотней асинхронных сокетов?
>>493866 >Че-то я серенькнул. Как-же у меня софтинка работатет, которая в одном потоке разруливает сотней асинхронных сокетов? Вначале убери из под себя подливу. И одевай хоть памперсы, если не можешь контролировать это дело. А затем, открой свое приложение в диспетчере задач, в вкладке "подробности", и посмотри, сколько там потоков, и IO потоков.
Пиздец нынче погромисты пошли, я с вас хуею просто.
Ебать ты идиот. Нодовский интерпретатор и интерпретаторы в браузерах однопоточные, но там есть асинхронные функции. Асинхронность - это лишь порядок выполнения кода, и неважно в сколько потоков он выполняется.
>>493893 Важно. Это момент принципиальный. Асинхронным может быть только код использующий функции с побочными эффектами.
>Нодовский интерпретатор и интерпретаторы в браузерах однопоточные Запусти бравзер, и посмотри в диспетчере задач сколько он запускает потоков.
>Асинхронность - это лишь порядок выполнения кода Порядок выполнения кода - это порядок выполнения кода. Неважно как ты перемешаешь у себя код, и сколько сделаешь указателей на функции etc, он не станет асинхронным от этого.
Асинхронным он становиться только в случае наличия обращения к некоему внешнему ресурсу, который существует в отдельном потоке само собой. Именно потому он и внешний.
>Нодовский интерпретатор и интерпретаторы в браузерах однопоточные Какая разница скольки там поточные какие-то интерпретаторы?
>Ебать ты идиот Нет ты. Стыдно вообще таких элементарных вещей не понимать.
>Запусти бравзер, и посмотри в диспетчере задач сколько он запускает потоков.
Доебался же ты со своим диспетчером. Тебе говорит умный человек: JS однопоточный. И в нем есть асинхронные функции. Браузер запускает каждый таб в своем потоке. Каждый таб имеет свой инстанс ВМ. Кышь отседава читать, Манька, прежде чем умных людей учить.
>>493909 Во первых. Со своим JS ты ошибся тредом. Во вторых, кривляешься как клоун. В третьих, не понимаешь элементарных вещей происходящих в компутере. При этом ведешь себя агрессивно, хамишь. Вместо того, чтобы подумать.
Еще раз. Асинхронное выполнение кода предполагает, по определению, некоторую операцию происходящую параллельно текущему потоку. Вместо того, чтобы дожидаться ее завершения, мы продолжаем что-то делать в текущем потоке, пока В ДРУГОМ ПОТОКЕ ВЫПОЛНЯЕТСЯ ОПЕРАЦИЯ КОТОРУЮ МЫ ОЖИДАЕМ.
Без этого другого потока - никакой асинхронности нет.
Нет операции выполняющейся параллельно - нет асинхронного кода. Есть обычный код в том или ном виде.
> Во первых. > Со своим JS ты ошибся тредом. > Во вторых, кривляешься как клоун.
Ясно. Слился. 20 минут назад ты прекрасно говорил о JS, но как только почувствовал жжение у пердака сразу же "не по теме, ко-ко-ко". Я JS привел в качестве примера однопоточного проложения, в котором все же есть асинхронность. Просто ты немного туповат и ленив, вот и приходится примеры приводить.
>>493943 >Я JS привел в качестве примера однопоточного проложения JS - это не приложение вообще. Давай пример асинхронности с одним потоком. Любой, только с пруфами.
>20 минут назад ты прекрасно говорил о JS Не помню такого. Ты меня с кем-то путаешь. В Жава скрипте, о нем же речь?, я небольшой специалист. Однако, асинхронное программирование несвязанно с каким-то конкретным языком. Принцип не изменяется, независимо от того используешь ты асемблер, си, перл, жаву, жава скрипт, или сишарп.
>Просто ты немного туповат и ленив, вот и приходится примеры приводить. Ты путаешь приложение с языком программирования. При этом позволяешь себе называть кого-то тупым.
>>493994 http://habrahabr.ru/post/150788/ >Менее распространенная модель, нежели многопоточная, но имеющая не меньшие возможности. Асинхронная модель построена на очереди событий (event-loop). При возникновении некоторого события (пришел запрос, выполнилось считывание файла, пришел ответ от БД) оно помещается в конец очереди. Поток, который обрабатывает эту очередь, берет событие с начала очереди, и выполняет связанный с этим событием код. Пока очередь не пуста процессор будет занят работой. По такой схеме работает Node.js. У нас имеется единственный поток, обрабатывающий очередь событий
>>493999 >возникновении некоторого события >пришел запрос, выполнилось считывание файла, пришел ответ от БД >оно помещается в конец очереди
Теперь осталось только немножко напрячь мозги и попытаться понять, как же это некоторое событие возникает. И каким волшебный образом оно помещается в очередь. Вне одного единственного потока.
>>494005 Внешняя реализация не ебет. При тру многопоточности ты можешь одновременно (ну почти) изменить какой-либо объект, а в асинхронке хуй, всегд активен только 1 поток исполнения
Вот это ты упертый сноб. Я говорил о ноде. Вот тебе еще пример: DOS игры. DOS - однопоточен. Как получается, что игры могли и графику играть, и звук воспроизводить и еще и ввод пользователя читать? А теперь марш под шконарь.
Анон, ответь, пожалуйста. Мне совсем скоро в деревню ехать, не хочу терять время и возьму ноут. Хочу узнать у тебя, можно ли сгенерировать в родительском приложении сборку с помощью CSharpCodeProvider и дёргать её типы из родительского приложения. Есть ли best practices? Где читать об этом?
>>494472 > When the request completed, various threads were “borrowed” or had work briefly queued to them. This work is usually on the order of a millisecond or so (e.g., the APC running on the thread pool)
Вообще, говорить об асинхронности на примере .NET как о >async in its purest form Ух, это что-то вроде секты штолмана.
Там же кстати от афтора: >I/O threads are blocked, yes - they block on the IOCP itself. However, one I/O thread can handle any number of IOCP notifications. The thread pool will inject I/O threads if they get bogged down, but a single I/O thread can handle a huge amount of I/O. The IOCP will always exist for an application - it's used quite a bit internally by the BCL. >So, you can think of it like this: the BCL already has an I/O thread(s), and by using IOCP you're reusing the same thread(s) instead of blocking another one.
И дальше. >Aren't you still posting making use of the threadpool threads though (for continuations and servicing completion of the async call?)? The point I'm trying to make is, it's not safe to say "there's no thread", rather "no thread is blocked". Developers should still be aware of CPU usage and make sure they don't eat up all thread-pool threads elsewhere in the application and automagically expect async operations to finish. О чем я собственно.
>Yes, it's one of the I/O threads in the thread pool. The ThreadPool keeps a number of threads registered in its IOCP; these are different than the worker threads that most people associate with the ThreadPool. The ThreadPool manages both worker thread and I/O threads.
>Не ожидал что здесь сидят одни дауны. Кокой ты огнеопасный.
Да, конечтно же асинхронность существует, чисто на аппаратном уровне, благодаря прерываниям. И можно написать чистое ассемблерное приложение, без всяких абстракций, ОС, вот этого всего, которое будет асинхронным, по своей природе, ведь аппаратная платформа асинхронна. Но это в вакууме.
А в жизни, тем более когда есть ОС, когда процессоры и "железо" сами по себе стали такими сложными, что перед загрузкой основной ОС на них загружается ОС попроще. Когда речь идет не о чистом СИ, а о использовании монстров из кучи многопоточных механизмов, вроде того-же .NET. Ни о какой однопоточности речи идти не может.
>>494506 >DOS игры. DOS - однопоточен. Как получается, что игры могли и графику играть, и звук воспроизводить и еще и ввод пользователя читать? Обработка прерываний?
>А теперь марш под шконарь Там уже сидит твоя мамка.
>>494472 Мудак ты, а не синьор. Майкрософт высрал очередную фичу, которой проще НЕ пользоваться, чтобы не словить дедлок на ровном месте. Ты посмотри на примеры использования, там же классический говнокод в button1_Click. Тесты к этому в принципе не написать. Надо тянуть соплю await через весь код, снизу доверху, это модульность, блять? Реально, чем больше работаешь с дотнетом, тем больше смотришь в сторону джавы. Там хотя-бы думают про архитектуру, а не хуячат фичи лишь бы было.
Анасы, бьюсь пол дня над задачей. Вроде все понятно и все запилил, но вот то, что подчеркнуто красным вообще хуйзнает как организовать. Собственно для Xml десериализации не работает [OnSerialized] и всякие каллбеки. Единственное что на ум пришло - после того, как десериализируем объект - рефлексией менять это приватное EmployeID. Вангую что есть решение по удачнее. Есть ли какая-то возможность организовать [OnSerialized] для Xml? Нагуглил только DataContract но так и не разобрался как им пользоваться. Похоже оно не подходит для решения моей задачи.
>>494920 >БАМП. Хочу сайт со слабым фронтендом с интеграцией с биткойнами(через одну из либ) Ну так а в чем проблема? Делай селфхостед через HTTP client - server. БД - любая блин MySQL - классика.
>>493771 >делать все через проверенный yield return Мудрый анон, будь добр, подкинь ссылки на статьи, или хоть правильный поисковой запрос на эту тему. Меня в гугле и яндексе забанили похоже.
Блять, какого хуя это ебаное говно не работает? Нихуя, сука, не работает, как надо. Вот хотя бы OnNavigatedTo() методж. У меня там стоит чёткий if, после которого идёт код. Так вот этот ебучий код выполняется в любом случае, независимо от правдивости if-а. Что это за дрисня? Может, проблема в том, что я оннавигейтедту async-ом сделал?
>>495116 Для работы с private полями сделай два метода в хелпере же, ну. У Employee не нужен Serializable. throw new FileNotFoundException не нужен, потому что StreamReader кидает такое же исключение, можно свое исключение сделать. И вообще ты его не ловишь. Зачем ты в WriteLine соединяешь несколько полей, только чтобы потом разбить из через \n? for нинужин, foreach + counter, а можешь через Select(T,int) сделать. Но это цветовое уже.
>>495106 >правильный поисковой запрос на эту тему C# how works yield return
Суть в том, что yield return прерывает выполнение кода и возвращает наверх, в вызывающий метод. При следующем вызове MoveNext у итератора выполнение продолжится со следующей за yield строки. Т.е. твой "асинхронный" метод должен вернуть IEnumerable<T>, по которому надо сделать foreach.
> Да, конечтно же асинхронность существует, чисто на аппаратном уровне, благодаря прерываниям. И можно написать чистое ассемблерное приложение, без всяких абстракций, ОС, вот этого всего, которое будет асинхронным, по своей природе, ведь аппаратная платформа асинхронна. Но это в вакууме.
Пошли маневрирования. Мань, ты ж постом выше писал:
> Однако, асинхронное программирование несвязанно с каким-то конкретным языком. Принцип не изменяется, независимо от того используешь ты асемблер, си, перл, жаву, жава скрипт, или сишарп.
Можеть уже просто признаешь, что был неправ и извинишься перед уважаемыми господами?
>>495157 Сами жи просили такой хуйней заниматься. Ну и хуй с ними, щас перепишу. >>495180 Тут >У Employee не нужен Serializable и >throw new FileNotFoundException не нужен, потому что StreamReader кидает такое же исключение тут проебался. Поправлю. СГОРЕЛ пока хуйню писал эту. >Зачем ты в WriteLine соединяешь несколько полей, только чтобы потом разбить из через \n Так чтоб в одну линию и через @ не хуярить все. >а можешь через Select(T,int) сделать. Но это цветовое уже. Могу и так. Так и сделаю, спасибо.
>>495251 >Мань Ты меня со своей мамкой путаешь опять. Как там она кстати поживает, в дверной проем все так же не пролазит?
>Можеть уже просто признаешь, что был неправ В чем же я был неправ? Асинхронность - это порядок выполнения кода, она не связанна с наличием или отсутствием потоков в парадигме классического программирования. Вообще, в вакууме. Поэтому утверждения о том, что все мол выполняется водном потоке - неверно. Тем более, что если уже говорить о железном уровне, то общение со всяким IO по сути и есть отдельный поток, данных. Внезапно, да? Ну не может без каких-то других потоков быть асинхронность, ну по определению. Само собой в мире ничего не происходит. Если ты что-то не делаешь правой рукой, значит ты делаешь это левой рукой, или кто-то другой делает это за тебя.
А примирительно к высокоуровнему программированию, никакого одного потока опять таки нет, это было разобрано и разжевано выше. А есть бассейн потоков, анальные блокировки, и кто знает что еще.
>и извинишься перед уважаемыми господами? >Манька >Под шконку >уважаемыми господами
>>495288 Ох уж этот console.writeline("\n\n\n\n\n\n\n"), я бы тебя за такое кочергой огрел угрозы на анимешном форуме с конями, да. Методы для получения приватных полей должны быть методами расширения, должны принимать не Emploee, а generic, get должен возвращать object, set должен принимать object или тоже generic, но тогда вызовы будут вырвиглазно выглядеть. Их вообще лучше вынести в отдельный класс ПомощникОтражения, декомпозиция же, Люк. Вместо List.foreach лучше использовать обычный foeach.
> Асинхронность - это порядок выполнения кода, она не связанна с наличием или отсутствием потоков в парадигме классического программирования. а вот тут ты кукарекал совсем другое >>493847
> Поэтому утверждения о том, что все мол выполняется водном потоке - неверно.
Верно. Тебе примеры привели. Мань, как ты не поймешь, что поток - абстракция. Ну туповат чуток, что ж тут сделать.
> А примирительно к высокоуровнему программированию, никакого одного потока опять таки нет, это было разобрано и разжевано выше.
Почему нет? Node.js - однопоточный. И ничего ты не разжевывал. Кроме истеричных вскукареков ничего выше не было.
есть ли в MVS 2013 возможность заменить комбинацию команд на одну собственную? к примеру, часто приходится писать: Console.ForegroundColor = ConsoleColor.DarkGreen; Console.WriteLine("Пользователь>"); Console.ResetColor(); Есть ли возможность комбинацию из 3 команд заменить на одну, например вместо трех вышеперечисленных писать: type();
>>495339 Невозможна. В нашей вселенной по крайней мере. Ну или прув ми вронг.
>>495362 >Node.js - однопоточный Нет, он не однопоточный. (что было разжевано выше) И ОС на которой этот монстр крутится - не однопоточная. И железо на которой эта ОС живет - не однопоточное. И материальная реальность в которой это железо существует - не однопоточная. Процессы вокруг нас происходят одновременно, параллельно. Не может один процесс протекать параллельно другому и при этом не протекать. Это блин взаимоисключающие понятия. У тебя или 2 процесса, или 1. Если один - то он один. И нет никакой многопоточности, асинхронности, и всего прочего. Не может быть асинхронность в одном процессе. А вот когда существует другой процесс, делающий что-то параллельно, и сигналящий первому(взаимодействующий с ним) - начинается асинхронность.
Как это все можно не понимать. Пиздец просто товарищи.
>>495387 Просто прекрати уже позориться, сеньер помидор ты всратый. Ты не отличаешь абстрактный язык в вакууме и физическую реализацию этого дела.
>>495350 > должны принимать не Emploee, а generic, get должен возвращать object, set должен принимать object А почему generic то? Я ведь только с Employee буду работать через эти методы.
>>495435 >Маня, треды - это абстракция. Я об этом и говорю. Чянд?
>Ты тупой что ли? Нет ты.
>Который раз тебе говорят. Пиздец, это мне оказывается говорят, ты упоротый щитоле, хохол?
>Кроме того, ты путаешь параллельность и многопоточность. Нет ты. Параллельность невозможна без многопоточности. Это блин объективная реальность. В чем твоя проблема?
В чем именно заключаются твои претензии?
>даже небо многопоточное! Даже Аллах! Небо - да. Аллах - не знаю.
Проблемы?
>Ты слишком маневренный, Мань. За тобой не угонишься. Просто ты глуповат. И не умеешь вести беседу. Вместо того чтобы уточнить у собеседника моменты которые тебе непонятны, начинаешь анальный цирк и клоунаду.
Я уже молчу про сеньора, который в живую видимо ни одного не видел приложения на .NET
>>495438 Потому что они относятся к emploee, так же как и к остальным классам - не особо. Методы, которые относятся к классу обычно в нем и определены КО выходит на связь. Можно даже и не generic, а object, типы то тут вообще не нужны, тут я махнул.
>>495454 Паблик методы хорошо сделал, а вот private надо вынести в другой класс, потому что нужно больше хелперов для бога хелперов, потом выше написал почему я так считаю.
>>495475 Ну мы то тут не знаем что у тебя смотреть будут, может на цирк отражений, может что переменные не двумя буквами называешь, а может что "а я вот сейчас удалю этот файл, что ваша программа скажет?". Базовые вещи, типа filenotfound можно и ловить.
Sup. Студентота 3-й курс. Знания есть, но, мне кажется что слишком мало. Сейчас читаю Троелсена, подскажите, как еще можно увеличить скилл. Где брать задачи, для отработки теории и т.д.
ITT элита продолжает обсуждает будущее этого поистине прекрасного и современного продукта компании Microsoft. Только в этом треде элитные разработчики ответят на самые острые вопросы индустрии.
Не забываем, что у нас скоро релиз C#6, вместе с Roslyn и RuyJIT
Литература:
- C# 5.0 in a Nutshell (Joseph Albahari и Ben Albahari)
- Pro C# 5.0 and the .NET 4.5 Framework (Andrew Troelsen)
- C# in Depth (Jon Skeet)
По WPF читать Pro WPF 4.5 in C#
Ресурсы:
- http://stackoverflow.com/questions/tagged/c%23
- http://professorweb.ru
- http://net-informations.com/
Обзор Roslyn: https://github.com/dotnet/roslyn/wiki/Roslyn%20Overview
Новые возможности c#6: https://github.com/dotnet/roslyn/wiki/New-Language-Features-in-C%23-6
Прошлый тред тонет тут: https://2ch.hk/pr/res/476108.html