Сохранен 505
https://2ch.hk/pr/res/483915.html
Прошлые домены не функционирует! Используйте адрес ARHIVACH.VC.
24 декабря 2023 г. Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!

OFFICIAL C# THREAD #5

 Аноним 24/05/15 Вск 15:56:22 #1 №483915 
14324721820400.png
14324721820401.png
Существует множество различных платформ и языков программирования, однако среди них нет более элитного, чем 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#

Ресурсы:
- 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
Аноним 24/05/15 Вск 16:12:12 #2 №483918 
>>483915
Хм, а чего по ASP литературы не подобрано?
Аноним 24/05/15 Вск 16:14:21 #3 №483919 
>>483918
В прошлом треде не было, а сам я с ASP.NET не работаю. Если знаешь, что есть адекватного по теме, то запости, пока тред толком не начался.
Аноним 24/05/15 Вск 16:30:50 #4 №483926 
>>483771
О, спасибо, анон.
Аноним 24/05/15 Вск 16:54:01 #5 №483934 
Перекачусь из старого треда. Кодач, собрался вкатываться джуниором на ирл работу. Попросили прислать любой свой код. Не пошлют ли меня на хуй если я им скину этот https://www.sendspace.com/file/cm7a0p
Писал, если что, года полтора назад. На правку времени скорее всего не будет но с удовольствием выслушаю советы.
Аноним 24/05/15 Вск 16:57:11 #6 №483938 
>>483934
Не пошлют (ну не должны).
Иные такую хуйню пишут, а их все равно берут на работу.
Алсо, где ты проебывался полтора года?
Аноним 24/05/15 Вск 17:05:08 #7 №483946 
>>483938
Год во фрилансе, остальные пол года нихуя не делал.
Аноним 24/05/15 Вск 18:14:44 #8 №484017 
Суп, шарпач. Есть тут живые сишарп-боги знакомые с open ria services?
На open ria не могу даже быдлопроект сделать, а старые риа отвалились после 10 студии:(
В общем есть приложуха на сервелате с призмой, в единственном модуле идет работа с данными из базы, раньше всё работало напрямую через энтити и было заебись, но по тз надо прикрутить риа.
Срочняк надо диплом допилить и проблема только в риа осталась, помогите, вроде подключил все либы как полагается, но линки не хотят кидаться, типа нет проектов с опен риа.
спасай анон.
Аноним 24/05/15 Вск 18:27:58 #9 №484028 
>>484017
>раньше всё работало напрямую через энтити
Это как?
Просто wcf не прикрутить, надо именно ria?
Аноним 24/05/15 Вск 18:39:22 #10 №484038 
>>484028
Если через wcf делать, то работы будет еще на месяц, а у меня уже все сроки горят.

>Это как?
Я не точно описал. Раньше был вообще wpf клиент и он через EntityFramework приотличненько работал с данными, а итоговую версию надо хуйнуть на сервелате. Вот я на сервелат портнул саму приложуху, на сервер прикрутил EF, осталось только передачу данных запилить.
Аноним 24/05/15 Вск 18:47:21 #11 №484042 
14324824419510.jpg
Сап программач. Студентота, знаний 0. Есть типовые задания на с# и их решения на турбопаскале. Что я могу с этого поиметь, если не знаю синтаксиса с#?
Аноним 24/05/15 Вск 18:47:27 #12 №484043 
>>484038
>на месяц
Эм, нет, за день делается
Аноним 24/05/15 Вск 19:06:40 #13 №484064 
>>484043
В любом случае уже поздно менять, тз месяц назад сдано.
Аноним 24/05/15 Вск 19:18:24 #14 №484072 
>>484042
Ничего.
Аноним 24/05/15 Вск 23:06:52 #15 №484212 
>>483915
Почему "цлр через сишарп" нет в шапке треда?
Аноним 25/05/15 Пнд 02:34:08 #16 №484312 
Шарпаны, что мне нужно накрутить в IIS чтобы обычные WCF RIA Services работали?
Воскресил таки стандартные RIA при помощи telerik data access.

>>484017 - кун
Аноним 25/05/15 Пнд 02:35:14 #17 №484313 
Анончики, пишу впфные штуки в продакшен, довольно давно (ладно, полтора года), чет чую загибается направление, винрт, все дела.
Куда порекомендуешь переключиться?
Времени особо нет свободного, поэтому ВСЕ изучить не смогу. Можно особенности мобилки начать изучать, или взяться за веб, с современными овинами, катанами етк (ничего в этом не понимаю).
Аноним 25/05/15 Пнд 02:38:33 #18 №484314 
>>484313
Естественно C# онли, он слишком ахуенен, чтобы от него уходить.
Аноним 25/05/15 Пнд 02:55:20 #19 №484318 
>>484313
На юнити переключайся, очень популярное направление сейчас
не слишком толсто?
Аноним 25/05/15 Пнд 02:58:39 #20 №484319 
>>484318
Не интересует игродел.
Можно чуть тоньше.
Аноним 25/05/15 Пнд 03:00:53 #21 №484320 
>>484313
ASP.NET, не прогадаешь.
Аноним 25/05/15 Пнд 03:01:42 #22 №484321 
>>484319
Тогда ASP, он по крайней мере более-менее стабильно жив.
Сейчас столько макак наплодилось, что любого адекватного специалиста с руками отрывают.
Аноним 25/05/15 Пнд 03:11:19 #23 №484326 
>>484321
>>484320
Понял, а ентри поинт подскажите? Я так понимаю, смысла погружаться в asp net нет, нужны навороты, есть какой-нибудь серьезный томик?
Аноним 25/05/15 Пнд 03:11:45 #24 №484327 
>>484326
> погружаться чистый в asp net
быстрофикс
Аноним 25/05/15 Пнд 03:13:36 #25 №484328 
>>484327
...
Ну, вы поняли.
Аноним 25/05/15 Пнд 03:26:49 #26 №484330 
>>484326
Я не сильно спец, но большинство знакомых работают под MVC.
На сколько я понимаю из альтернатив только webforms, который уже почти мертв.
Аноним 25/05/15 Пнд 03:43:09 #27 №484332 
>>484330
Они же vNext теперь выпустили, совсем за трендами(r) не следите.
Аноним 25/05/15 Пнд 07:23:36 #28 №484343 
Продолжаю своё обучение в виде ковыряния в аск.фм, запилил обычную аутентификацию при помощи логина-пароля, теперь пытаюсь аутентифицироваться при помощи фэйсбука, но наткнулся на трудности: я не понимаю, что делать. Приделал webAuthenticationBroker, успешно получаю от фэйсбука acces_token, но нужен ли он вообще? Может, я поторопился, и там совсем другой метод? Посмотрел фидлером, как с этим справляется броузер, но нихуя не понял, ибо там сплошные редиректы с огромными непонятными юрл. В гугле не нашёл вообще нихуя.
Аноним 25/05/15 Пнд 16:37:18 #29 №484539 
Сап анон.
Есть один SmtpClient
Читаю документацию, и не могу понять.
Как мне отправить письмо не через посредника, а напрямую в сервер получателя?

Подскажи пожалуйсто.

Суть в чем. Есть некий локальный копроративный сервер почты, и нужно слать пользователям всякие оповещения.
Аноним 25/05/15 Пнд 17:37:54 #30 №484561 
>>484318
Кстати, а что на юнити пилят?
Уж точно не ебуться с байтами и пиксели вручную не раскрашивают? Геймдев аналог тырпрайза какого-нибудь?
Аноним 25/05/15 Пнд 18:45:09 #31 №484579 
>>484539
>Как мне отправить письмо не через посредника, а напрямую в сервер получателя?
Наркоман?
Аноним 25/05/15 Пнд 19:09:10 #32 №484589 
14325701500470.jpg
Поясните на пальцах, как запилить плагин для студии.
Аноним 25/05/15 Пнд 19:27:49 #33 №484593 
>>484561
>тырпрайза
Не понял тебя, сынок.

>Кстати, а что на юнити пилят?
Игори, как ни странно, приложения.
В целом система люто напоминает то, что было во времена второго экшонскрипта на флеше.
Скачай какой-нибудь быдлоурок от школьника по скриптованию в юнити и глянь.
Я прикололся, решил таки запилить игру МЕГА ЭКШОН РПГ ММО КРУЗИС ДЬЯБЛО КОПАТЕЛЬ ОНЛАЙН своей мечты. Исключительно в целях расширения кругозора.
Аноним 25/05/15 Пнд 19:46:38 #34 №484607 
>>484593
>Не понял тебя
Ну в геймдеве должен быть какой-то аналог энтерпрайзовских штампов, вроде crud, 3-tier архитектур, dal'ов с ненужными репозиториями?

Ну я так и думал, что скрипты и что-нибудь в этом духе
Аноним 25/05/15 Пнд 19:51:28 #35 №484610 
>>484589
Берёшь короче и запиливаешь.
Аноним 25/05/15 Пнд 21:51:53 #36 №484653 
Написал небольшую утилиту, вроде полезную для меня лично, а радости не доставляет. Код говно какое-то. Мне вечно не нравится мой код, вечно хочется переделать его и так и эдак. Я говно, а не программист?
Аноним 25/05/15 Пнд 21:57:54 #37 №484655 
>>484653
Вбрось код, мы оценим.
Аноним 25/05/15 Пнд 21:59:47 #38 №484657 
>>484655
Да я уже как-то вбрасывал. Это реплейсер иконок под Линукс. Я модернизировал его немного, чтобы он работал хорошо с символьными ссылками, и теперь ненавижу код.
Аноним 26/05/15 Втр 00:17:27 #39 №484779 
>>484579
>Наркоман?
Что не так?
Сервера почты как-то друг другу пересылают же сообщения. Ебана.
Аноним 26/05/15 Втр 08:10:41 #40 №484872 
Такой вопрос. Нужно в ASP MVC приложении "увидеть" на клиентской стороне данные из Model, чтобы можно было джаваскриптом с ними работать. Куда копать?
Аноним 26/05/15 Втр 09:01:11 #41 №484896 
>>484872
Похоже туплю. Единственный способ добраться до модели из js - это ajax? Тогда быстрее будет загрузить сразу нужные данные во View, но не отображать их в браузере и дергать уже оттуда?
Аноним 26/05/15 Втр 09:21:08 #42 №484908 
Насчет MVC - модель это база данных? Контроллер - прослойка/интерфейс для ужобного выполнения асинхронных запросов к бд? Вид - пользовательский интерфейс, коллбеки от кнопок и топэ?
Аноним 26/05/15 Втр 10:39:17 #43 №484936 
>>484908
Нет, стандартная ошибка.
Аноним 26/05/15 Втр 11:51:03 #44 №484985 
>>484896
если тебе надо дергать модель просто для отображения, то вот это должно помочь
http://stackoverflow.com/questions/21391402/access-model-in-javascript-asp-net-mvc-razor
если же надо менять модель через жабаскрипт - хуячь аяксом
Аноним 26/05/15 Втр 12:11:04 #45 №484998 
аноны, есть проблема.

значит есть базовый класс
class base;
есть его наследник
class child;

в base есть только контейнер массив байт и его размер.
в child описаны функции преобразования этих байт в некоторые поля. так же есть и другие child_1,child_2 и так далее.

так вот. я пишу функцию

List<T> Parse<T>(byte [] buffer) where T:base

и никак не могу придумать как преобразовать массив одной удобной функцией в нужный мне класс. в справке пишет что перегрузка явного преобразование из базового класса в его потомка не предусмотрена.
Аноним 26/05/15 Втр 12:20:59 #46 №485002 
>>484998
Ты тут йоба сериализацию изобретаешь или как?
Аноним 26/05/15 Втр 12:40:43 #47 №485014 
>>485002
изобретаю передачу по сети.
Аноним 26/05/15 Втр 12:44:33 #48 №485016 
>>485014
Кури доки по сериализации в дотнете.
Аноним 26/05/15 Втр 12:51:35 #49 №485019 
>>485016
я не уверен что это мне поможет. мне нужно передавать около 200 16-байтовых координат. по сети. в любом другом виде кроме байтоебства получится слишком толсто.
Аноним 26/05/15 Втр 12:59:35 #50 №485023 
>>485019
ааа. все понял.
>>485016
спасибо анон.
Аноним 26/05/15 Втр 13:05:16 #51 №485028 
>>485016
еще один вопрос. допустим я решил десериализовывать нечто в коллекцию из массива байт поученных асинхронно по сети.

я так полагаю нужно networkstream через memorystream гнать в десереализатор? или как?
Аноним 26/05/15 Втр 13:27:10 #52 №485046 
Аноны, тоже вопрос по сериализации, в общем есть у меня сейчас пять классов, обьекты которых мне нужно передавать по сети (пилю клиент-серверное приложение, как можно догадаться), так вот вопрос, как на клиенте их правильно десериализовать? Мы же фактически не знаем что там пришло и к какому из 5 классов нужно делать десериализацию. Задача выглядит стандартной для клиент-серверных решений, может есть библиотеки для подобного?
Аноним 26/05/15 Втр 13:38:51 #53 №485051 
Студент-дебил на связи. Подскажите книгу, в которой будут основы самого языка, какие-никакие интерфейсы и взаимодействие с БД.
Аноним 26/05/15 Втр 13:49:48 #54 №485061 
>>485046
в принципе binarySerializer ом. а дальше не знаю.
Аноним 26/05/15 Втр 13:50:27 #55 №485063 
>>485061
https://msdn.microsoft.com/ru-ru/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.110).aspx
Аноним 26/05/15 Втр 13:56:33 #56 №485065 
>>485061
Про него я знаю, но вопрос-то в другом.
Аноним 26/05/15 Втр 14:06:59 #57 №485067 
>>485065
извини. таких библиотек не знаю.
Аноним 26/05/15 Втр 14:16:53 #58 №485074 
>>483915
>язык богов
>неуправляемый сборщик мусора который отправит ваш сервер в неопределённого срока отдых, если вы догадались выделить большой кусок памяти
Аноним 26/05/15 Втр 14:27:12 #59 №485079 
>>485074
> если вы догадались выделить большой кусок памяти
Не большой кусок памяти, а сложный граф объектов, мань. Разные вещи совсем. Но в целом, да, для серверных приложений надо немного думать мозгом.
Аноним 26/05/15 Втр 14:29:18 #60 №485082 
>>485046
Засовываешь свои 5 классов объектов может быть все таки? в 1 контейнер с типами и юзаешь http://www.newtonsoft.com/json, переключив на bson. Это как совсем простой вариант. Как сложный и модный, используешь protobuf.
Аноним 26/05/15 Втр 14:32:14 #61 №485083 
>>485082
> http://www.newtonsoft.com/json
Ой бля, а хренли он платный-то стал? Такая классная штука была, но наверное бесплатная версия тебе покатит, хз.
Аноним 26/05/15 Втр 14:44:13 #62 №485089 
>>485082
> Засовываешь свои 5 классов объектов может быть все таки?
Обьектов этих классов, конечно же, не придирайся.
>в 1 контейнер с типами и юзаешь http://www.newtonsoft.com/json, переключив на bson. Это как совсем простой вариант.
Сейчас примерно так это у меня и реализовано, просто задумался можно ли найти что-то готовое для этого.
>Как сложный и модный, используешь protobuf.
А вот за это спасибо!
Аноним 26/05/15 Втр 14:50:37 #63 №485091 
>>485089
А, нет, не спасибо за protobuf, не то, что я искал.
Аноним 26/05/15 Втр 15:41:06 #64 №485107 
>>485091
Тогда я не особо понял что ты хочешь. Ты хочешь именно клиент-сервер? Тогда есть вот это поделие:
http://doc.exitgames.com/en/onpremise/current/reference/serialization-in-photon

Помню, когда народ запускал на нем tank domination это говно грохнулось на первых ста клеентах, но тебе может и покатит.
Аноним 26/05/15 Втр 16:31:44 #65 №485145 
>>484908
Модель - это база данных (обычно через ORM вроде Entity Framework) + алгоритмы для их обработки, т.н. "бизнес-логика". Контроллер - действия, совершаемые пользователем, вызов алгоритмов из модели и отображение результатов в представлении.
Есть еще MVVM, упрощенный вариант MVC без контроллера (там он объединен с представлением).
Аноним 26/05/15 Втр 16:33:14 #66 №485147 
>>485019
В .NET есть бинарная сериализация.
Аноним 26/05/15 Втр 16:54:49 #67 №485163 
>>485145
Можно ли обойтись без ORM?
Аноним 26/05/15 Втр 17:14:41 #68 №485176 
>>485163
Можно, но не нужно. По сути тебе все равно придется писать свою реализацию ORM. Зачем, когда уже есть готовый Entity Framework?
Для самообучения конечно можно написать велосипед.
Аноним 26/05/15 Втр 17:59:36 #69 №485187 
>>485028
Зачем через MemoryStream?
Аноним 26/05/15 Втр 18:35:02 #70 №485208 
>>484908
Вью - это формочка на экране.
Контроллер - это класс, в котором пишется логика по управлению интерфейсом ("если выбран чекбокс, то скрыть кнопку 1" вот это все).
Модель - это класс, в котором данные ездят от контроллера к вью и обратно. Тупо набор свойств {get;set;} без логики.
Пример: есть одна кнопка и есть чекбокс. Если чекбокс выбран, кнопка должна стать неактивной. Логика прописывается в контроллере, контроллер принимает и возвращает модель FormModel, у которой есть свойства ChekcboxModel и ButtonModel. Когда пользователь нажимает чекбокс, состояние чекбокса копируется в ChekcboxModel.Checked (руками или автоматически). Дальше контроллер выставляет ButtonModel.Enabled в зависимости от ChekcboxModel.Checked и возвращает обратно измененную FormModel. И затем FormModel биндится к твоим контролам на вьюхе и пользователь видит изменения в интерфейсе.
Таков MVC в 2015 году. Бред 1988 года про "модель - это база данных" игнорируй.
Аноним 26/05/15 Втр 18:56:10 #71 №485215 
>Есть еще MVVM, упрощенный вариант MVC без контроллера (там он объединен с представлением).
Но ведь нет, тем тоже 3 сущности, вид, модель и модель вида.
Вид отображает данные и предоставляет интерфейсы для взаимодействия с ними пользователю. Модель вида преобразовывает данные из модели в необходимый для вида формат и предоставляет интерфейсы для взаимодействия с моделью. А модель предоставляет сами данные.

Но, например:
>"если выбран чекбокс, то скрыть кнопку 1" вот это все
Это чистая вьюха в мввм, логика отображения данных из представления никуда вылазить не должна и вью модель о представлении вообще ничего не знает.
Аноним 26/05/15 Втр 19:13:00 #72 №485229 
Вопрос по f#
Почему в fsi после загрузки фала, через
#load "name";;
все внутри этого файла оказывается внутри ебаного неймспейса FSI_XXXX. Можно как-нибудь сделать чтобы все загружалось в общую область видимости?
Аноним 26/05/15 Втр 19:18:54 #73 №485232 
>>485208
Аноним 26/05/15 Втр 19:45:26 #74 №485251 
>>485208
>>485215
Закроем тему, короче.
http://www.codeproject.com/Articles/42830/Model-View-Controller-Model-View-Presenter-and-Mod
Аноним 26/05/15 Втр 19:51:12 #75 №485253 
Скажите, а где тут можно предложить анонам посоревноваться по качеству кода?
Аноним 26/05/15 Втр 20:03:47 #76 №485259 
>>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.
Аноним 26/05/15 Втр 20:21:44 #77 №485269 
>>485208
Этот пиздит. В контроле вообще не должно быть нихуя от бизнес логики.
http://www.microsoftvirtualacademy.com/training-courses/introduction-to-asp-net-mvc_rus
вот кури, разжевано, только в рот положить
Аноним 26/05/15 Втр 20:23:04 #78 №485271 
>>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 нихуя не удобны на практике.
Аноним 26/05/15 Втр 20:24:29 #79 №485272 
>>485269
Скрыть/показать кнопочку - это не бизнес-логика.
Аноним 26/05/15 Втр 20:50:52 #80 №485288 
>>485269
Лол. Ты сам открывал свою ссылку? Там на картинке нарисовано: контроллер создает модель и передает ее во вью. В чем отличие от >>485208
?
Аноним 26/05/15 Втр 20:59:11 #81 №485296 
>>485288
Нахуй оно мне? Я на ПХП пишу, там все работает и без изьебств ваших
Аноним 26/05/15 Втр 22:23:47 #82 №485387 
'MyFile' defines operator == or operator != but does not override Object.Equals(object o)
Скажите, зачем переопределять сравнение с обджектом, когда я переопределил == и != ?
Аноним 26/05/15 Втр 22:31:29 #83 №485392 
>>485387
Очевидно потому, что операции сравнения должны быть консистентны.
Аноним 27/05/15 Срд 01:25:36 #84 №485527 
Правильно ли я понимаю, что фиддлер заменяет хедеры при отправке запроса? Я почему спрашиваю: тестирую приложение на девайсе; когда не юзаю фиддлер, мне возвращается не то, что нужно, а когда юзаю его, возвращается всё, как надо. Т.е., как я понял, серверу не нравятся те хедеры, которые отправляет мой девайс сам, но хедеры от фиддлера его устраивают. Как можно посмотреть изначальные хедеры? Запросы отправляю httpClient-ом.
Аноним 27/05/15 Срд 12:12:30 #85 №485716 
>>485387
Потому что половина внутренних функций может юзать иквел и у тебя будет неопределенное поведение.
Аноним 27/05/15 Срд 15:38:46 #86 №485917 
Поясните за SortedList и SortedDictionary. Оба массивы ключ-значение, но по тестам SortedList работает ощутимо быстрее. Зачем нужен SortedDictionary?
Аноним 28/05/15 Чтв 01:39:29 #87 №486299 
Как реализовать ввод одномерного массива с клавиатуры, конкретно через пробелы, конкретно для codeforces?
Аноним 28/05/15 Чтв 03:36:52 #88 №486343 
>>486299
> Как реализовать ввод одномерного массива с клавиатуры, конкретно через пробелы, конкретно для codeforces?
Проследуй конкретно нахуй конкретно
Аноним 28/05/15 Чтв 10:15:23 #89 №486413 
>>485917
> Оба массивы ключ-значение
SortedList - массив, SortedDictionary - дерево
[sаge] джюниор-ентерпраиз-девелопер 28/05/15 Чтв 14:53:31 #90 №486540 
есть метод который использует какое то внешнее состояние (бд вроде)
как подменить это состояние не меняя ничо в методе?
#чзх #аттрибуты #АОР
Аноним 28/05/15 Чтв 17:28:00 #91 №486629 
>>486540
Обращение к данным надо через интерфейс репозитория делать, а сам репозиторий инжектировать в классы, где он будет использоваться. Тогда можно будет заменить конкретный класс доступа к данным.
Аноним 28/05/15 Чтв 19:52:44 #92 №486694 
Как в wpf засунуть в один datagrid две связанный таблицы, а-ля student-courses и редактировать/добавлять/удалять их там же. WPF без MVVM.
Аноним 28/05/15 Чтв 20:49:17 #93 №486755 
Скажите, а что значит проектировать на интерфейсах? Это как бы писать код с одними IHoroshodelable, налаживать между ними связь через var x = (IHoroshodelable) new object(), а потом чисто реализовывать классы для этих интерфейсов?
Аноним 28/05/15 Чтв 21:07:45 #94 №486791 
Вычитал у Рихтера, что, как только метод, вызываемый в теле другого метода, оканчивает свою работу, все данные о нем из стека потока вынимаются. Но вот во время рекурсивных вызовов методы продолжают углубляться по-факту не оканчиваясь, что, наверное, создает опасность переполнения стека. Так ли это, или существуют определенные оптимизации со стороны компилятора или CLR?
Аноним 28/05/15 Чтв 21:14:01 #95 №486800 
>>486791
http://c2.com/cgi/wiki?TailRecursion
http://blogs.msdn.com/b/clrcodegeneration/archive/2009/05/11/tail-call-improvements-in-net-framework-4.aspx
Аноним 28/05/15 Чтв 21:42:44 #96 №486828 
>>486755
Смысл в устранении сильной связанности между классами. Интерфейсы используются по большей части из-за удобства тестирования. Ну и иногда действительно есть нужда в подмене реализации.
http://pastebin.com/bPUWf2hK

Хотя, может ты имел в виду нечто иное? Они могут и по прямому назначению использоваться: public class Player: WorldObject, IActor, ICollidable, IUpdateable, IUserControolled.
World.GetObjects().OfType<IUpdatable>.ForEach(x => x.Update(gameTicks));
Аноним 28/05/15 Чтв 22:11:37 #97 №486862 
>>486828
Нет, я имел в виду, что вот мне надо разработать архитектуру проекта. Требования я знаю, они изложены. Как поступить дальше?
Аноним 28/05/15 Чтв 22:55:24 #98 №486895 
>>486862
Проанализировать требования бизнеса, определиться с технологиями, провести декомпозицию системы. Последние включает разбиение системы на компоненты и определение путей их взаимодействия.
sageАноним 28/05/15 Чтв 22:57:59 #99 №486898 
>>486895
Пожалуйста, приведи еще несколько цитат из своей книги. Они очень полезны.
Аноним 28/05/15 Чтв 23:06:44 #100 №486912 
>>486898
Нет универсальной архитектуры на все случаи жизни. Есть некоторые архитектурные шаблоны, но it, блеать, depends.
Про "проектировать на интерфейсах" я уже писал для чего это делается.
Аноним 29/05/15 Птн 05:19:33 #101 №487066 
>>486755
Robert Martin "Agile Software Development, Principles, Patterns, and Practices"
Аноним 29/05/15 Птн 10:49:41 #102 №487153 
>>486694
Перекатиться на мввм и привязывать к коллекции, получаемой от запроса с джойном.
Аноним 29/05/15 Птн 10:57:50 #103 №487154 
14328862706560.jpg
Не пойму, что происходит. На пикрилейтед, если обратиться к свойству объекта таким образом:
@Html.HiddenFor(m => Model.Objects.Id)
во View отображается неправильное значение (1),
а если обратиться так
@Model.Objects.Id
то значение правильное (2)
Аноним 29/05/15 Птн 11:15:06 #104 №487157 
>>484779
Никак, тебе почтовый сервер нужен
Аноним 29/05/15 Птн 12:04:49 #105 №487188 
>>487154
Глянь сорцы на кодплексе, посмотри что он делает с лямбдой.
Аноним 30/05/15 Суб 11:57:27 #106 №487896 
Есть 2+ года разработки на сишарпе, но пилить энтерпрайз уже заебывает. Думаю перекатиться в ASP.NET MVC (есть опыт уровня курсовой), но в вебе у меня знаний почти нихуя.
Начинать с азов PRO ASP.NET MVC или лучше по HTML/CSS/JS почитать для начала?
Аноним 30/05/15 Суб 12:25:50 #107 №487908 
>>487896
Для фронтенда надо свободно владеть корным js, а в идеале еще знать популярные клиентские библиотеки, вроде ангуляра, жуквери. По разметке и стилям надо знать как минимум спеку их последних версий, иметь представление о препроцессорах и шаблонизаторах: less, jade. В общем, не маленький — в процессе изучения asp.net разберешься.
Для бекенда, помимо mvc, надо знать webapi и вебформы.
Аноним 30/05/15 Суб 16:42:55 #108 №488028 
Качаю 15-ю студию. Какие вкусные новшества уже успели войти в ваш стандартный арсенал?
Аноним 30/05/15 Суб 18:08:47 #109 №488072 
>>488028
?.
=> у свойств и методов
ридонли автосвойства.
Аноним 30/05/15 Суб 18:19:37 #110 №488075 
>>487908
Direct 3D тебе на что?
Аноним 30/05/15 Суб 20:05:53 #111 №488127 
Альтернатива EntityFramework?
Аноним 30/05/15 Суб 20:12:44 #112 №488132 
Где можно найти сообщество, которое вот прямо сейчас, скажем, изучает ASP.NET 5? Начал самостоятельное изучение, но хотелось бы группу единомышленников, с которыми можно было бы обсудить кое какие моменты.
Аноним 30/05/15 Суб 20:18:55 #113 №488134 
>>488132
Может опен сорс стартап начнешь? Тут где-то был тред с гит хабом, скооперируйся в той ветке с кем-нибудь.
Аноним 30/05/15 Суб 20:27:32 #114 №488136 
>>488132
Тоже осваиваю.
Аноним 30/05/15 Суб 20:30:21 #115 №488137 
>>488136
Го скайпогруппу для поддержки мотивации?
Аноним 30/05/15 Суб 20:44:52 #116 №488145 
>>488137
А на вк-конфу как смотришь?
Аноним 30/05/15 Суб 21:05:15 #117 №488153 
>>488145
Нормально отношусь. Сгенерируешь?
Аноним 30/05/15 Суб 21:17:46 #118 №488159 
>>488153
Анон, я проебался, сейчас курю просто mvc 5.
Аноним 30/05/15 Суб 21:24:28 #119 №488160 
>>488159
Ну лаааадно, как знаешь.
Аноним 30/05/15 Суб 22:01:25 #120 №488168 
>>488145
Вкатился бы к вам в скайп, вк - нахуй.
другой мимоанон
Аноним 30/05/15 Суб 22:04:28 #121 №488169 
>>488168
Сегодня - край завтра запилю. Мониторь нитку.
Аноним 30/05/15 Суб 22:59:38 #122 №488177 
>>488168
А я бы в вк или телеграме присоединился
скайп какой-то тяжеловесный, как по мне
Аноним 30/05/15 Суб 23:06:19 #123 №488180 
>>488177
Из-за тебя одного фейк в вк регистрировать?
Та ну нахуй.
Аноним 30/05/15 Суб 23:47:15 #124 №488201 
>>488132
Я бы тоже к вам присоединился.
Аноним 31/05/15 Вск 00:16:19 #125 №488216 
>>488132
С удовольствием бы, нуб грызущий Шилдта, с ужасов смотрящий вперед.

https://www.youtube.com/watch?v=EGVgzYkF4WA
Аноним 31/05/15 Вск 01:03:27 #126 №488239 
>>488132
А тебе сколько лет?
Со школьниками сидеть не хочется в конфе.
Аноним 31/05/15 Вск 07:44:50 #127 №488283 
>>488028
{get;set;} = new, вот это все.
?. - это бесполезная хрень уровня async. Лучше пусть программа сразу умрет с NullReferenceException, чем молча проигнорит часть выражения. Интересно, эти уебки когда-нибудь pattern matching осилят, или так и будут натужно высирать ненужные фичи.
Аноним 31/05/15 Вск 07:49:06 #128 №488285 
>>488127
dapper, bltoolkit
Аноним 31/05/15 Вск 10:09:30 #129 №488304 
>>488285
Если ты из bltoolkit берешь мэппинг объект в объект, то почему не EmitMapper?
Аноним 31/05/15 Вск 10:10:35 #130 №488305 
>>488283
> бесполезная хрень
> async
Ебешься с диспатчерами в 2015?
Аноним OP 31/05/15 Вск 13:10:02 #131 №488323 
>>488283
Так с седьмой версии же обещают https://github.com/dotnet/roslyn/issues/206
И там можно будет писать что-то вроде
if (x?.y?.z is Type value) {
// code using value
}

Хотя синтаксис выглядит убого.
Аноним 31/05/15 Вск 13:25:54 #132 №488338 
>>488169
Обещанная конфа:
?chat&blob=xoGvyXlsuNZuVV9JPeWULIBU_VlXTj4giPywLur8bWR7REl212Y5rMB8HeX9uULuzTRS8iZUIA
Аноним 31/05/15 Вск 14:44:02 #133 №488387 
>>488338
Что пилить-то собрались?
Аноним 31/05/15 Вск 15:03:57 #134 №488401 
>>488387
Ничего конкретного, пока можно просто делиться инфой, читать документацию и все такое. У тебя имеются предложения?
Аноним 31/05/15 Вск 15:15:28 #135 №488405 
>>488401
Написать борду, лел.
Аноним 31/05/15 Вск 15:35:59 #136 №488420 
>>488338
Сколько там человек?
Аноним 31/05/15 Вск 15:37:33 #137 №488421 
>>488420
Пока что двое.
Аноним 31/05/15 Вск 16:22:22 #138 №488440 
>>488401
Предложений не имеется, но я бы поизучал вместе с вами, попиливая фичи на выходных.
Только вот диплом допишу.
Аноним 31/05/15 Вск 16:38:05 #139 №488461 
>>488440
Так вот и я за то, чтобы делиться инфой, рассказывая разные фичи о платформе в переваренной форме.
Аноним 31/05/15 Вск 17:37:15 #140 №488497 
>>488132
Присоединился бы к вам. Но что вы имеете ввиду под "Начал самостоятельное изучение"? Там же ничего такого нет, все новые фишки за неделю осваиваются.
Аноним 31/05/15 Вск 17:40:03 #141 №488500 
>>488497
Весь дот нет за неделю не охватишь.
Аноним 31/05/15 Вск 17:48:46 #142 №488508 
>>488500
Но речь конкретно по пятый асп. В нем новых фишек на неделю, не более. Какой весь дотнет, ты что, наркоман?
Аноним 31/05/15 Вск 17:50:03 #143 №488509 
>>488508
Невнимательно отслеживаю тред, извини.
Аноним 31/05/15 Вск 18:40:21 #144 №488532 
>>488305
>async, диспатчеры
Может расскажешь ньюфагу про это? Юзал диспатчер только в wpf. А каким боком тут async?
Аноним 31/05/15 Вск 22:26:35 #145 №488703 
>>484343
Используй Identity framework(есть. З коробки).
FB отдает тебе access token, чтобы ты мог через граф апи вытащить данные о текущем юзере.
Это можно делать самому, но лучше используй готовый провайдер для идентити(тоже из коробки есть).
Василий 31/05/15 Вск 22:35:36 #146 №488715 
>>488283
Проиграл.
Ты наверное не видел лапши из 5 ифов, чтобы получить какое нибудь второе имя собаки клиента или пустую строку/null в случае его отсуствия.
Попробуй чота сложнее lab3.cs подевелопить
Аноним 31/05/15 Вск 22:51:11 #147 №488733 
Шарпач, недавно писал, что впиливаюсь джуном и работодатель попросил любой небольшой проект. Собственно, скидывал сюда своё старое решение https://www.sendspace.com/file/7m4gqh ты сказал что неплохо, но я все же решил его перепилить. Вот, собственно, что получилось https://www.sendspace.com/file/q6auas
Реквестую советы по стилю кода, что добавить-выпилить и т.д
Аноним OP 31/05/15 Вск 23:11:55 #148 №488767 
>>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")
);

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

Надеюсь парсер ничего не сожрет.
Аноним 31/05/15 Вск 23:22:07 #149 №488784 
>>488767
>Object initializer'ы обычно используются для передачи опциональных параметров, которые имеют какие-то значения по умолчанию, либо не важны. У меня, насколько я понимаю, оба поля являются обязательными для нормальной работы, поэтому лучше создать конструктор с двумя параметрами.
Вот этого не знал. Помню, у Троэлсена вычитал что это хороший тон.
>Ну и конструкции вроде
Лол, про этот метод вообще забыл, не до конца класс ещё заполнил.
Спасибо.
Аноним 31/05/15 Вск 23:54:01 #150 №488819 
>>488715
> 5 ифов, чтобы получить какое нибудь второе имя собаки клиента или пустую строку/null в случае его отсуствия
Архитектуру проектировал дебил. Жрите теперь, хуле.
Аноним 01/06/15 Пнд 00:00:30 #151 №488823 
>>488733
> if (_requestParamsDictionary[param] != stringParamValue)
> _requestParamsDictionary[param] = stringParamValue;
Проверка лишняя, можно убрать
> _antigateKey = antigateKey;
> _captchaBody = captchaBody;
> _antigateKey = antigateKey;
> _getCaptchaIdAttempts = 5;
> GetCaptchaIdTimeout = 3000;
> _getCaptchaAnswerAttempts = 7;
> GetCaptchaAnswerTimeout = 7000;
Будь последователен, используй везде сеттеры, а не поля.
Аноним 01/06/15 Пнд 00:03:40 #152 №488826 
>>488823
>Проверка лишняя, можно убрать
А, лол, прослоупочил. Ведь два значения с одинаковым key быть в словаре не могут?
Аноним 01/06/15 Пнд 00:06:01 #153 №488828 
>>488826
> Ведь два значения с одинаковым key быть в словаре не могут?
шта?
Аноним 01/06/15 Пнд 00:08:05 #154 №488829 
>>488828
Да все, все. Обкодился уже на сегодня.
Аноним 01/06/15 Пнд 00:19:29 #155 №488845 
>>488733
Содомит, ты так и не научился пользоваться репозиториями?

http://pastebin.com/ySiiu0zN

По поводу стилистики. Можно подумать над слудующим:
- не использовать подчеркивание в приватных полях;
- всегда проставлять скобки блоков;
- по возможности не использовать алиасы clr типов;
- использовать var, когда из выражения можно понять тип переменной.
+ То, что писал оп про вызов функций, либо выравнивай последнюю скобку по имени функции, но не имени первого параметра.


По поводу CaptchaService. По мне так паршиал класс там за уши притянут.
Для таймаутов, попыток и пр. лучше сделать специальный dto класс, либо прописать их в сигнатуру конструктора, либо оставить публичными свойствами с дефолтными значениями.
Для параметров реквеста нужно сделать отдельный класс и передавать его в качестве параметра методу GetAnswer(CaptchRequestParams captchaParams).

По поводу исключений. Лучше наследовать исключения от базового класса и не делать йобу со словарем.

>>488826
>А, лол, прослоупочил
Да.
Аноним 01/06/15 Пнд 00:20:25 #156 №488847 
>>488733
>2015 год
>повсюду явные объявления типов переменных
Нахуя?
sageАноним 01/06/15 Пнд 00:23:17 #157 №488853 
>>488845
> не использовать подчеркивание в приватных полях;
Линуксодаун плиз.
Аноним 01/06/15 Пнд 00:26:10 #158 №488856 
>>488845
вот этого двачую, кроме:
>- не использовать подчеркивание в приватных полях;
Только один вопрос: почему ты так решил?
А, ну и еще заметил одно - не делай, мать твою, строк длиною в 150 символов. Старайся за сотню не выходить.
>>488847 -кун
Аноним 01/06/15 Пнд 00:28:43 #159 №488859 
>>488847
>>488845
>- не использовать подчеркивание в приватных полях;
Ну тут то вроде уж точно все правильно, везде написано что именно так надо ебашить.
>по возможности не использовать алиасы clr типов;
>использовать var, когда из выражения можно понять тип переменной.
>повсюду явные объявления типов переменных
Вай? А что плохого то в явной типизации? Наоборот же так приятнее. Или в чем-то скрываются тонкости?
>Лучше наследовать исключения от базового класса
Опять же, Троелсен говорит что исключения вызванные логикой работы приложения лучше наследовать от ApplicationException, лол.
Аноним 01/06/15 Пнд 00:29:42 #160 №488860 
>>488845
> - не использовать подчеркивание в приватных полях;
Ну это уже совсем вкусовщина
> - всегда проставлять скобки блоков;
Вот, это тоже писал ещё в прошлом треде, хотя опять же вопрос вкуса. Но я бы ставил, так визуально намного удобнее.
>>488856
Двачую, можно поставить это расширение https://visualstudiogallery.msdn.microsoft.com/e792686d-542b-474a-8c55-630980e72c30 и указать максимальную длину строку строки (желательно 100 или 120 в крайнем случае).
Аноним 01/06/15 Пнд 00:31:51 #161 №488862 
>>488856
И еще добавлю
>работодатель попросил любой небольшой проект
мб он просил именно ПРОЕКТ, а не что-то уровня laba2 и ты зря стараешься?
просто то, что ты скинул - это именно laba2, у меня в универе лабы(далеко не на it-спецальности, околоайти, скажем так) и то масштабней были, лол
я к чему веду? мб зря стараешься и нужно еще немножко подрасти?
Аноним 01/06/15 Пнд 00:33:29 #162 №488864 
>>488859
Ну часто так удобней, особенно когда определение типа длинное, например что-то вроде
Dictionary<string, List<int>> d = new Dictionary<string, Listr<int>>. И если, например, нужно будет поменять int на uint, придется менять в двух местах, что неприятно. Конечно это не во всех случаях удобно, а когда по правой части выражения легко выводится тип (в визуальном смысле).
Аноним 01/06/15 Пнд 00:36:39 #163 №488869 
>>488862
> мб он просил именно ПРОЕКТ
С такими запросами работодатели должны идти нахуй, проект должен быть таким, чтобы по нему можно было более-менее определить уровень знаний и не больше. Такого проекта как у ОПа вполне достаточно: работа с сетью есть, основные конструкции языка используются, треды, исключения, коллекции.
Аноним 01/06/15 Пнд 00:38:44 #164 №488871 
>>488862
Я ещё докучи говна накидал, в некоторых по 20+ классов, лол.
>еще немножко подрасти
Каждый день дрочусь по книге. Ящитаю что даже на самой поршивенькой работе быстрее все освою.
>>488864
А вот за это спасибо.
Аноним 01/06/15 Пнд 00:39:23 #165 №488873 
>>488859
> Вай? А что плохого то в явной типизации? Наоборот же так приятнее. Или в чем-то скрываются тонкости?
Плохого ничего, при использовании var за тебя само все выведется, да, в случае всяких стрингов и прочих базовых типов это еще смотрится нормально. Хотя мне уже и тут не нравится, ибо несколько варов друг под другом выглядят эстетически более приятней, нежели разные по длине объявления типа
>int ....
>string ....
>huipizda ...
ну и как успел уже написать этот >>488864 анон, в некоторых ситуациях это реально удобно, не столько, сколько от того, что избавляет от подобного:
>, придется менять в двух местах, что неприятно
сколько в визуальном восприятии и читабельности кода.
>>488847 -кун
Аноним 01/06/15 Пнд 00:39:40 #166 №488875 
>>488856
Они не нужны, только глаза мозолят. Если мочь в рефакторинг и не писать функции на 100500 строк, то параметры метода, переменные и приватные поля/свойства можно отличить друг от друга.

>>488859
>А что плохого то в явной типизации?
Дублирование информации.

>Троелсен говорит
Больше его слушай.
>Лучше наследовать исключения от базового класса
Имелось в виду от твоего базового класса, который ты уже создал, а не от базового класса фреймворка.
Аноним 01/06/15 Пнд 00:41:22 #167 №488876 
>>488871
> Каждый день дрочусь по книге. Ящитаю что даже на самой поршивенькой работе быстрее все освою.
Ну тащемта работодателю похуй сколько и чего ты там прочитал, ему главное во что ты можешь. Поэтому я и предложил:
>>еще немножко подрасти
Аноним 01/06/15 Пнд 00:44:22 #168 №488880 
И да, как уже заметили, лучше избавиться от partial-классов. Использование их вне WinForms приложений это обычно признак плохого дизайна.
Аноним 01/06/15 Пнд 00:49:54 #169 №488888 
>>488875
> Если мочь в рефакторинг и не писать функции на 100500 строк, то параметры метода, переменные и приватные поля/свойства можно отличить друг от друга.
Шта? Вот я беру такой и открываю новый солюшн(раньше не работал с ним, а тут, например, пришлось), который содержит пару десятков проектов, в каждом из которых по десятку cs-файлов длиною в пару тысяч строк.
Пытаюсь как-то в нем ориентироваться, разбираю нужные методы и т.д. Добавим, что разобраться нужно быстро, часто это делается за счет беглого просмотра кода, чтения "по диагонали", так вот, теперь может быть ты сам ответишь на вопрос: нужны ли подчеркивания или нет?
Ответ: непременно нужны, ибо по одному простому символу перед названиям полей я сразу могу построить некую логику работы с данным классом. Это реально та мелочь, на которую не хочется отвлекаться, которая детектится зрением.
sageАноним 01/06/15 Пнд 00:51:16 #170 №488890 
>>488880
> Использование их вне WinForms приложений это обычно признак плохого дизайна
Джуниор раздает советы, вообще охуеть. Пиздец, анон >>488733, не слушай этого дауна из лабораторного класса. Эта кодомакака ничего сложнее лабы3 не писала и с кодогенерацией ни разу не сталкивалась.
Аноним 01/06/15 Пнд 00:53:35 #171 №488898 
>>488888
Гет пиздеть не буде.
Аноним 01/06/15 Пнд 00:56:24 #172 №488903 
>>488890
Лол, ты видел для чего у него partial-классы используются? Какая котогенерация, блядь? И я не писал, что это всегда признак признак плохого дизайна, просто их часто лепят там, где они совсем не нужны.
Аноним 01/06/15 Пнд 00:57:28 #173 №488904 
>>488888
this. использовать не вариант для приватных полей?
Аноним 01/06/15 Пнд 00:59:13 #174 №488907 
>>488904
> this. использовать не вариант для приватных полей?
> 5 лишних символов вместо одного
Аноним 01/06/15 Пнд 01:00:18 #175 №488909 
>>488903
Хочешь сказать что лучше было бы склеить эти два файла?
sageАноним 01/06/15 Пнд 01:01:38 #176 №488910 
>>488903
> И я не писал, что это всегда признак признак плохого дизайна
> Использование их вне WinForms приложений это обычно признак плохого дизайна
Делается это так: Да, простите, в моем суждении была допущена ошибка. Вы правы, исправляюсь.
А не пытаться выебнуться при плохой игре, как лишайная шавка. На тебя же и харкнуть за это могут.
Аноним 01/06/15 Пнд 01:02:33 #177 №488913 
>>488910
> это всегда
> это обычно
Ты какой-то поехавший, чесслово.
sageАноним 01/06/15 Пнд 01:04:21 #178 №488917 
>>488913
Шавка, тебя макнули в лужу харчков, а ты что, продолжаешь выебываться?
Аноним 01/06/15 Пнд 01:05:43 #179 №488918 
>>488917
Я вообще мимопроходил, куда мне до тебя, великого кодогенератора. На этом давай прекратим дискуссию.
sageАноним 01/06/15 Пнд 01:07:20 #180 №488919 
>>488918
В следующий раз не виляй срачкой как чмо, а сразу признавай, если неправ.
Аноним 01/06/15 Пнд 01:42:57 #181 №488945 
>>488888
Ок, может ты еще и параметры функции да не приватные поля/свойства/методы как-то по-особому выделяешь, чтобы не отвлекаться? Пользы от подчеркивания никакой, если ты начинаешь теряться в классе, то это верный признак начать рефакторинг.
Аноним 01/06/15 Пнд 07:54:23 #182 №488980 
>>488945
Мы вам перезвоним.
Что этот студент несет, вообще охуеть! Ты, блять, с реальным кодом поработай, а потом будешь умничать за рефакторинг.
Аноним 01/06/15 Пнд 08:17:07 #183 №488981 
>>488945
>Пользы от подчеркивания никакой
Да ты троллируешь наверное.
>если ты начинаешь теряться в классе, то это верный признак начать рефакторинг.
>если ты начинаешь теряться в классе
>верный признак начать рефакторинг.
>если ты теряться в классе
>начать рефакторинг.
Пиздец господа.
Аноним 01/06/15 Пнд 08:34:47 #184 №488982 
>>483915
Здраститя. Я таки не очень шарю в этих ваших сишках, сам кодил на пистонах. Возможно,нубский вопрос, ну не суть, короч.
Суть в том, что мне нужно накатать прогу и скомпилировать в екзешник, чтоб он мог стартовать в идеале на любой системе (а не в идеале хотя бы на винде, но чтоб без установки всякой дополнительной поебени, тупо на флехе принес и на любом компе стартанул). Гуй всякий особо не нужен, прога с системой колупаться будет, вполне можно обычной консолькой обойтись.
Так вот - сисярп пойдет под мои нужды? Или возможен гемор и лучше мне плюсами (или вообще сишкой) обмазаться, мммм?
Аноним 01/06/15 Пнд 09:55:08 #185 №488996 
>>488982
да, но если без ебли на всём то плюсы.
Аноним 01/06/15 Пнд 10:25:16 #186 №489006 
>>488996
Ясненько. Вобщем, если я создам простенькое консольное приложение, то проблем быть не должно, но чем больше я буду накручивать всяких форм и прочих свистелок, тем больше ситуация будет усложняться, так примерно, да?
Аноним 01/06/15 Пнд 10:35:52 #187 №489008 
>>489006
Ты про C#? Если начнешь пилить формочки на WPF, то сразу же ограничишь себя виндой. Если у тебя консольные приложения, либо ASP.NET, то все должно работать и на линуксах/айосах с установленным моно.
Вообще идеальным вариантом может быть вынесение общего кода приложения, не завязанного ни на какой гуй-фреймворк, и написать консольный/wpf/gtk# гуй, использующий эту библиотеку.
Аноним 01/06/15 Пнд 10:50:57 #188 №489010 
>>489008
>Ты про C#?
Да, про него. Тогда нормас. Гуи/фреймворки как не потребуются, там все просто. Ввод парочки значений и работа с system, ничего сверхсложного.
Просто не особо хочется ковыряться в языке ради одной проги, чтоб потом его бросить. А сисярп как-то поперспективнее выглядит, чем плюсы, вот и хочется одним языком обойтись, чтоб и под текущую задачу и на будущее.
Аноним 01/06/15 Пнд 10:51:45 #189 №489011 
>>489010
*как раз не потребуются
fix
Аноним 01/06/15 Пнд 12:51:35 #190 №489049 
>>489011
Ну тогда такой вариант вполне удобным будет. Работу с system запихать в отдельную библиотеку, для ввода значений написать gtk# и wpf приложения. На никсах использовать gtk# версию, на винде - WPF.
Аноним 01/06/15 Пнд 16:02:21 #191 №489188 
14331637415110.png
Господа, пишу простенький интернет-магазин (для интереса, просто изучаю SQL и ASP.NET MVC). Товары, которые я продаю не однотипны, соответственно, одной таблицей их охватить не получится. Так вот, вопрос -
Стоит ли делать по таблице на каждый тип товара (например, отдельная таблица под мотоциклы, отдельная под автомобили), или есть более "умный" способ?
Аноним 01/06/15 Пнд 16:20:33 #192 №489194 
>>489188
У тебя же уже есть продукты, их марки и атрибуты. Энивей:
http://martinfowler.com/eaaCatalog/singleTableInheritance.html
http://martinfowler.com/eaaCatalog/classTableInheritance.html
http://martinfowler.com/eaaCatalog/concreteTableInheritance.html
Аноним 01/06/15 Пнд 17:12:41 #193 №489231 
>>488845 >>488847
>- использовать var, когда из выражения можно понять тип переменной.
Вкусовщина же.
У меня стоит внутренний блок на var после того, как я две недели разгребал легаси код одного дебила с конструкциями вроде
var res = CalculateSomething();
которые возвращали разные типы, где-то строки, где-то инты, где-то булевые переменные.
Понятно, что дело не в var, а в том, что писал дебил с решарпером, но такая теперь прочная ассоциация в голове var-зашквар.
Аноним 01/06/15 Пнд 19:41:06 #194 №489328 
>>489188
Помоги сделать инфологическую модель. Есть база данных со связями, но связи кривые и названы плохо, и я вообще не понимаю как сделать.
Аноним 01/06/15 Пнд 19:57:40 #195 №489346 
>>489188
В чем такую красоту рисовать?
Аноним 02/06/15 Втр 01:55:44 #196 №489511 
>>489346
>В чем такую красоту рисовать?
http://www.mysql.com/products/workbench/
Аноним 02/06/15 Втр 02:28:21 #197 №489523 
14332013016120.jpg
>>485145
>Есть еще MVVM, упрощенный вариант MVC без контроллера (там он объединен с представлением).
Ну ты и пиздец тупой. Ты походу серьезно UI не занимался никогда.
Вообще-то MVC - это суперустаревшая архитектура, которую в чистом виде не применить к rich приложениям. А попытки ее допилить порождают Application Model -> MVP/MVVM. MVVM - это на данный момент апофеоз архитекруты UI.
Аноним 02/06/15 Втр 02:40:10 #198 №489526 
>>485215
>Модель вида преобразовывает данные из модели в необходимый для вида формат и предоставляет интерфейсы для взаимодействия с моделью.
Нет, не так.
VM абстрактно моделирует V, взаимодействует с M. Задача V - отобразить VM на экране. В V не должно быть никакой логики в идеале
Аноним 02/06/15 Втр 09:01:22 #199 №489569 
>>489523
Ну и в чем отличия в MVC и MVVM кроме того, что в MVVM контроллер засунули в View?
Аноним 02/06/15 Втр 09:12:11 #200 №489573 
>>489523
Разве архитектура MVVM не порождена особенностями клиентского JS? Например, отсутствием возможности связи с БД?
Аноним 02/06/15 Втр 09:20:54 #201 №489578 
>>489573
MVVM вроде пошла из десктопов, ну там WPF и прочее, где View и Controller разделить сложно, если View - не OpenGL/Direct3D. А с базой в JS можно работать через AJAX.
Аноним 02/06/15 Втр 10:59:51 #202 №489647 
>>489569
>в MVVM контроллер засунули в View
ну вот это показывает, что ты вообще ничего не понимаешь в этом. А View Model чем по-твоему занимается?
Аноним 02/06/15 Втр 11:03:21 #203 №489648 
>>489647
Так падажи ебана, View и Model это разные вещи, а не одна.
Аноним 02/06/15 Втр 11:22:27 #204 №489653 
>>489573
Во-первых, MVVM был запилен Майкрософт, когда они пилили WPF. А это самый продвинутый десктопный UI в настоящее время.
Во-вторых, MVVM - это логическое продолжение Presentation Model, а Presentation Model - пошел от Application Model, который был еще в бородатом smalltalk.
В-третих, те, кто пишут на js не парятся об архитектуре. А те, кто парятся, смотрят на js, как на говно. Поэтому не стоит ожидать появления каких-то архитектурных конструкций из стана web-макак особенно frontend.
Ну и в-четвертых, MVC не может иметь состояние вида и логику вида, поэтому появидся Application Model. А от него пошли уже производные. В частности в MVVM решили, что ViewModel ничего не знает о View, и View байндится на ViewModel байндингами.
Аноним 02/06/15 Втр 11:23:11 #205 №489655 
>>489578
>где View и Controller разделить сложно
Что ты имеешь в виду? Звучит как глупость.
Аноним 02/06/15 Втр 11:32:32 #206 №489658 
14332339520590.png
>>489648
Ты не обратил внимание, сколько там букв в аббревиатуре? Четыре: Model, View, View Model.
View Model - это модель вида, который моделирует представление. Это такой контроллер, который заимел состояние и логику, которая присуща только представлению.
Например на пике надо позволить двигать элементы из одного списка в другой. Дополнительно нужна логика, которая будет корректно дизаблить/энаблить кнопчки. Загружать пресеты, Двигать в элементы в списке вверх и вниз. Короче, вполне себе rich приложение. Но в Модель это не должно попадать, пока не будеть нажата кнопка OK или Aplly!
Соответственно, т.к. в MVC у предстваления и контроллера нет состояния, это неосуществимо. А в MVVM это все находится в VM.
Аноним 02/06/15 Втр 11:33:51 #207 №489660 
>>489658
>Aplly
Apply, кончено же.
Аноним 02/06/15 Втр 11:34:27 #208 №489661 
>>489660
>кончено
конечно, конечно же
Аноним 02/06/15 Втр 11:41:51 #209 №489669 
На впф пишу так: делаю большой класс работающий с базой (орм не нужны).
Дальше делаю классы, хранящие данные и по необходимости дергающие методы первого класса. В этих классах везде использую INotifyPropertyChanged и ObservableCollection, тут же пишу команды которые обрабатывают данные.
Затем делаю xaml-формочки с привязкой на классы с данными, в ивентах формочек ничего не пишу.
Поясните, это мввм или нет?
Аноним 02/06/15 Втр 12:16:00 #210 №489712 
>>489669
50/50. По идее, надо заводить отдельные классы, на которые вьюшка биндиться будет. А ты биндишься на классы бизнес логики =/
Аноним 02/06/15 Втр 14:23:00 #211 №489811 
>>489669
Ну с большим натягом
Аноним 02/06/15 Втр 15:53:07 #212 №489863 
>>489712
Тогда получается как-то слишком много оберток.
У нас будет:
Класс DataAccess, работающий с базой
Data, хранящий ссылку на DataAccess и вызывающий его методы для заполнения своих полей, в нем поля с данными и методы работы с данными
BindableData, хранящий ссылку на Data и предоставляющий свойства - обертки к его полям и команды - обертки к его методам
Формочка с биндингами на BindableData

В чем профит-то ссылки бесконечно прокидывать? В том что Data можно будет при желании подключить к чему-то кроме WPF, не переделывая код?
Аноним 02/06/15 Втр 17:06:52 #213 №489945 
>>489863
Рассматривай это так: myform(myform.xaml, myform.xaml.cs), myformViewModel, myData, [myDataService,] myDataRepository.
Myform — это понятно, вьюшка.
myformViewModel — это, по сути, презентер. На его свойства биндится вьюшка и он работает с моделью.
myData — класс бизнес логики, шляпа с предметной области. В ней не должно быть ничего, что не связано с предметной областью, в том числе всяких ICommand и INotifyPropertyChanged.
myDataService — фасадный сервис с бизнес логикой для антипаттерна анемичной модели и не только.
myDataRepository — класс, отвечающий за получение данных myData из хранилища данных. Может спшки дергать, транзакции в тандеме с unitofwork проводить и пр.

>при желании подключить к чему-то кроме WPF
Да, можно приделать соап сервис, rest сервис, веб-приложение, мобильное приложение или что-нить еще. При этом BLL и DAL трогать не придется вовсе.
Аноним 02/06/15 Втр 17:22:18 #214 №489960 
>>489945
Не совсем удачно названия дал наверно. myForm не обязательно будет работать только с myData. Она может еще тянуть какие-нить данные с гугла googleData, тогда у myFormViewModel будет свойство с нотификацией для googleData, а у googleData свой сервис и репозиторий.
Аноним 02/06/15 Втр 17:49:53 #215 №489982 
Ебать, у меня от последних сообщений БИЗНЕС ЛОГИКА и ПРЕЗЕНТЕР.
Киньте чтоль примеров проектов того, как надо юзать этот ваш впф.
Я обычно делал там - в xaml прописывал бинды, в xaml.cs задавал датаконтексты и прочие итемсурсы. Это плохо?
Аноним 02/06/15 Втр 17:52:31 #216 №489985 
>>489982
>делал там
>делал так
самопочин
Аноним 02/06/15 Втр 18:19:35 #217 №490010 
>>489945
А все что привязывается к SelectedItem (необходимо для работы со всякими списками) должно быть в myData, или только в myViewModel?
Я правильно понимаю, что нужно писать два класса для каждой таблицы БД - один без INotifyPropertyChanged и один с ним?
Оче много кода, оче много. Но как-нибудь попробую писать вот так.
Аноним 02/06/15 Втр 18:46:58 #218 №490042 
Никогда не писал на впф, правильно понимаю, что вот это вот
>INotifyPropertyChanged
обычный обсервер?
Вообще, чем мввм подход принципиально отличается от такового на винформс (кроме того, что замл как язык - говно ебаное?)
Аноним 02/06/15 Втр 18:58:07 #219 №490050 
>>489982
https://msdn.microsoft.com/en-us/magazine/dd419663.aspx
http://compositewpf.codeplex.com/

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

>>490042
Обычный обсервер.
Принципиально ничем. Весь ентерпрайз — говно ебаное.

Аноним 02/06/15 Втр 19:04:24 #220 №490051 
>>490050
>Весь ентерпрайз — говно ебаное.
Tell me about it.
Аноним 02/06/15 Втр 23:17:17 #221 №490170 
>>490042
>Вообще, чем мввм подход принципиально отличается от такового на винформс
Тем же, чем пиво от кружки.
Ты разные вещи пытаешься сравнить. MVVM - это паттерн, его и на winforms можно прикрутить, и на WPF, и еще чего-нибудь и я это делал
Аноним 02/06/15 Втр 23:33:57 #222 №490182 
>>490042
Но кзамл охуенен же. После убогих конструкторов винформса верстать на чем-то хтмл-подобном просто сказкой кажется.
>>490050
У меня крудошлепство для небольшого предприятия, работаю один.
До меня все было написано на дельфях в стиле hardcore_laba01, собственно я все это некроговно поддерживаю и частично переписал на шарп+впф. Может оно и не мввм у меня, и нет всяких прочих мудреных паттернов, но хотя бы не по 5000 строк процедурного говна в Form1.pas, намешанного с вставками SQL запросов, повторяющихся по тексту раз по пять каждый. Зато блядь прикручено всяких либ с кастомными контролами, которые еще хуй поставишь нормально.
А для патчей я освоил ClickOnce. До меня я так понял систему обновляли раз в полгода руками на всех компьютерах.
Аноним 02/06/15 Втр 23:46:07 #223 №490194 
>>490182
>кзамл
сам ты кзамл. Просто Замл. В английском икс в начале слова читатеся обычно как з.
Аноним 03/06/15 Срд 00:25:42 #224 №490217 
>>490194
Т.е. правильно произносить "ЗМЛ" и "З-Файлз"?
Аноним 03/06/15 Срд 01:00:30 #225 №490241 
>>489569
Разница в том, что MVVM - это "not invented here" рак мозга от майкрософт. Этим уебкам мало было классического MVC как в рельсах, им надо было придумать свой: такой же, но через жопу. В итоге маемо шо маемо.
ViewModel - это контроллер, жестко привязанный к одной единственной модели. Если классический контроллер может вернуть вообще любую модель, то в MVVM у тебя есть выбор из одного варианта. Понабрали дураков по объявлению, блять.
Аноним 03/06/15 Срд 01:05:57 #226 №490242 
>>490217
Ты не учел одного. XML - это аббревиатура, а XAML - акроним. Поэтому его можно читать как обычное слово. А X-Files - это вообще хрен знает что за конструкт, но явно не произносится как одно слово.
Аноним 03/06/15 Срд 01:07:06 #227 №490243 
>>490241
Ты троллишь или дурак?
Аноним 03/06/15 Срд 01:12:13 #228 №490245 
>>490243
Мы вам перезвоним.
Поработай и с вебом, и с десктопом, тогда поймешь мой пост.
Аноним 03/06/15 Срд 01:18:52 #229 №490248 
>>490245
Расскажи, пожалуйста, как ты реализуешь два списка как на картинке >>489658 в рамках MVC?
Аноним 03/06/15 Срд 01:22:02 #230 №490249 
>>490182
Начни писать юнит-тесты. Причем, на все: и на логику, и на интерфейс. Тогда поймешь, зачем нужны все эти паттерны-хуятерны.
Аноним 03/06/15 Срд 01:24:24 #231 №490251 
14332838647140.jpg
Привет шарпаны. Обучалкин снова врывается в тред. После некоторой заминки из-за диплома, продолжаю задавать свои тупые вопросы в этом треде. И так вот вам следующий: Есть поток который считывает информацию о директориях и файлах, и передаёт её в потоки-обработчики. Есть поток-обработчик который строит по полученной информации TreeView. Вопрос - как построить дерево? Передаётся объект типа ElementInfo
Аноним 03/06/15 Срд 01:36:32 #232 №490255 
>>490245
Тогда жду твоего мнения по поводу Presentation Model, MVP, Application model, в конце концов!
Аноним 03/06/15 Срд 01:36:43 #233 №490256 
>>490248
Есть контроллер. У контроллера есть метод Get, который возвращает модель для формочки. В модели для каждого контрола есть свойства TreeModel, LeftListModel, RightListModel, AddButtonModel и т.д. Эти модели биндятся к соответствующим контролам.
Допустим, пользователь перетаскивает итем из одного списка в другой. Вью дергает у контроллера метод DragNDrop (роутинг события в метод делается или автоматически фреймворком или руками). У контроллера есть депенденси IControllerInterface, в котором и находится вся логика твоих списков. Контроллер дергает IControllerInterface.MoveItem, затем говорит, что надо обновить вью и дергает у другой депенденси IUserInterface.RefreshView. В итоге мы можем просто все протестировать. Так бы я спроектировал систему.
Если ты интересуешься, где хранится состояние, то ни контроллер, ни вью это вообще ебать не должно. Это проблемы IControllerInterface, который вернет данные из IControllerInterface.GetTree, IControllerInterface.GetLeftList, IControllerInterface.CanAddItemIntoRightList и т.д.
Аноним 03/06/15 Срд 01:39:45 #234 №490258 
>>490241
>классический контроллер может вернуть вообще любую модель, то в MVVM у тебя есть выбор из одного варианта.
Что значит "вернуть модель"? Куда и зачем?
Аноним 03/06/15 Срд 01:40:40 #235 №490259 
>>490255
Очевидно, что все это частные случаи MVC, которые появились до изобретения интернетов и получения опыта разработки клиент-серверных приложений. Рельсовая MVC - это самая удобная парадигма, которую можно использовать вообще везде, а не только на десктопах.
Аноним 03/06/15 Срд 01:43:11 #236 №490260 
>>490258
Во вью вернуть, куда же еще.
Пользователь что-то делает. Вью генерирует ивент, ивент роутится в контроллер, контроллер что-то делает и возвращает модель, которая описывает измененное состояние вью. Модель попадает обратно ко вью, биндится и пользователь видит изменения на экране.
Аноним 03/06/15 Срд 01:46:31 #237 №490262 
>>490256
Ну вот. Ты начал для UI делать какие-то блять модели. Это уже не модели предметной области, а модели предстваления. Получился не чистый MVC нихуя. И самое главное наплодил хуеву тучу сущностей, хотя логика описывается очень просто. Вообще, я интересовался только правой частью, без дерева.
Аноним 03/06/15 Срд 02:00:26 #238 №490267 
>>490262
В MVC Model - это не модель предметной области, это декларативное описание интерфейса. Если на форме есть кнопка, которая может быть неактивна, в FormModel будет свойство ButtonModel, у которой будет свойство Enabled, которое забиндится на button1.Enabled
Аноним 03/06/15 Срд 02:02:59 #239 №490269 
>>490267
Ну и нахуй так жить? Потонешь в сущностях.
Аноним 03/06/15 Срд 02:06:16 #240 №490270 
>>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.
Аноним 03/06/15 Срд 02:08:14 #241 №490273 
>>490270
>In MVC, the domain element is referred to as the model. Model objects are completely ignorant of the UI.
Оттуда же.
Так что твой MVC нифига не MVC.
Аноним 03/06/15 Срд 02:10:54 #242 №490274 
>>490269
Ну, другого пока не придумали. Когда у тебя сидит сто макак и хуячат говнокод, лучше тонуть в сущностях, чем в багах. Когда ты пишешь один, то можно и не париться и ебашить sql в button1_Click.

>>490270
>современный MVC не похож на тот, что мы с посонами придумали в 1975 году, бида-пичаль
Аноним 03/06/15 Срд 02:38:15 #243 №490280 
>>490251
бампану себя сам
Аноним 03/06/15 Срд 02:49:27 #244 №490281 
14332889675980.jpg
>>490274
>>современный MVC не похож на тот, что мы с посонами придумали в 1975 году, бида-пичаль
Аноним 03/06/15 Срд 04:31:02 #245 №490294 
Шарпаны, а нет ли такой книжки, которая бы содержала всю стандартную библиотеку с примерами, что-то вроде msdn в pdf-формате. Дело в том что перед тем как начать что-то делать я люблю обмазаться прикладной литературкой, читаю в основном с планшета, интернета нет, вот и нужно что-то вроде справочника с описанием классов методов полей и т.д.
Аноним 03/06/15 Срд 04:33:46 #246 №490295 
>>490251
Очевидно, у элемента, который приходит из потока-источника, должен быть какой-то id родительского элемента. В потоке-обработчике ты ищешь элемент с id = child.ParentId и добавляешь текущий элемент в дети найденному. Если родительский элемент не найден, добавляешь текущий элемент к сиротам (отдельный список таких элементов), а родителем делаешь корневой элемент. Когда приходит очередной элемент, просматриваешь сирот и добавляешь в дети к текущему, кого надо.
Аноним 03/06/15 Срд 04:37:22 #247 №490296 
>>490294
Пустая трата времени. Там столько всего понаписали, что ты в середине забудешь, с чего начал. Когда тебе надо решить какую-то задачу, просто гуглишь, как это сделать и смотришь примеры на stackoverflow.
Аноним 03/06/15 Срд 04:39:20 #248 №490297 
Котаны, я конечно понимаю что вопрос будет очень странный и обобщённый, но всё-же надеюсь что вы поможете начинающему дебилу.
Хочу написать для себя прогу по чтению fb2 файлов. Тоесть читалку книг. Но если с принципом чтения файлов мне всё понятно, то отображение книг в удобочитаемый вид заставляет мои мозги закипать. Как вывести содержимое fb2 в удобочитаемый вид? Следует ли его парсить? Каким образом выводить (на какой элемент) чтобы была возможность медленной прокрутки?
В общем понимаю что вопросы довольно тупые, но сам я нугуглить ничего по теме не смог, ибо даже не понимаю как правильно нагуглить это. Надеюсь тут мне помогут.
Аноним 03/06/15 Срд 04:40:04 #249 №490298 
>>490251
вопрос снят
Аноним 03/06/15 Срд 04:43:22 #250 №490299 
>>490295
я немного затупил, передаётся DirectoryInfo и FileInfo т.е. кроме системного пути я никак не могу их связать, прийдётся лепить структуру которая по системному пути будет раскидывать элементы. Хотелось бы более изящное решение
Аноним 03/06/15 Срд 04:45:22 #251 №490301 
>>490296
идея в том что я примерно знаю какие классы я хочу использовать, а потом подробно изучаю их потроха, кстате, есть где сорцы для стандартной библиотеки? когда работал с джавой там был grepcode.com а тут не вижу похожего
Аноним 03/06/15 Срд 04:46:30 #252 №490302 
>>490299
Присваивай родительский айди в потоке, в котором ты обходишь файловую систему. 0,1,2 и т.д.
Аноним 03/06/15 Срд 04:48:52 #253 №490303 
>>490302
т.е. каждая папка имеет параметр id и parendId, а каждый файл только параметр parentId, верно? Честно говоря пока что не совсем понимаю как это реализовать внутри DFS но большое тебе спасибо, идея действительно хорошая, осталось реализовать
Аноним 03/06/15 Срд 04:53:25 #254 №490304 
>>490302
btw если насоветуешь что-нибудь читнуть общеукрепляющего по деревьям в целом - будет щщщикарно
Аноним 03/06/15 Срд 05:07:49 #255 №490309 
>>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 и погнали.
Аноним 03/06/15 Срд 05:09:45 #256 №490311 
>>490309
Пиздец, все поехало. Как в макаковакабе код оформлять?
Аноним 03/06/15 Срд 05:27:57 #257 №490317 
>>490309
заебок! только без пайпа, у других потоков-обработчиков есть собственные очереди для элементо, поэтому просто treeHandler.add(folderNode)
Аноним 03/06/15 Срд 12:10:43 #258 №490396 
>>490311
Юзерскрипт в шапке закрепленного возвращает [code] на место
Аноним 03/06/15 Срд 15:11:06 #259 №490482 
Дайте тестовое задание на джуниора.
Аноним 03/06/15 Срд 16:37:28 #260 №490505 
>>490170
Лол, я хуйню спросил.
Имел ввиду мввм подход на впф от винформс.
Просто не понимаю некоторых еба-прогеров, которые за впф потому, что там все пишут с применением мввм. Было интересно, они совсем конченные дебилы, или там поддержка на уровне фреймворка, как в няшном asp.net mvc.
Аноним 03/06/15 Срд 16:41:17 #261 №490506 
>>490482
Написать RSS-агрегатор.
Должен быть в виде веб-сайта, с возможностью регистрации пользователей и кастомизацией источников.
Юзать MVC, MS SQL, CSS, JS.
Аноним 03/06/15 Срд 16:44:00 #262 №490508 
>>490506
Шарпы только для веб макакинга используются? Кроме очень полезных WP и W8
Аноним 03/06/15 Срд 16:55:42 #263 №490517 
>>490508
Нет, но ты же не уточнял на какого джуниора.
Аноним 03/06/15 Срд 16:56:39 #264 №490518 
>>490217
Перед гласными произносится как З.
ЗАМЛ. Зерксис. Зена (хотя вообще Зина, лол).
Аноним 03/06/15 Срд 17:01:33 #265 №490523 
>>490517
Не веб.
Аноним 03/06/15 Срд 17:11:38 #266 №490528 
>>490523
Сделай то же самое, только на wpf — делов-то.
Аноним 03/06/15 Срд 17:19:27 #267 №490536 
>>490528
Двачую джентльмена.
>>490506-кун
Аноним 03/06/15 Срд 18:57:51 #268 №490626 
Есть проблема с asp.net mvc. Я отправляю через форму запрос на получение json, тот обрабатывает поступающий текст, и все работает нормально. Но когда в тексте запроса употребляются угловые скобочки, все идет по пизде, выходит ошибка. Текст ошибки никак не узнать, а в гугле нихуя по этой теме найти не могу. Сможет кто помочь?
Аноним 03/06/15 Срд 18:59:41 #269 №490628 
>>490626
Забыл сказать, отправляю через аякс. Ставлю обработчик на OnFailure, он выполняется, но максимум, что я могу понять - так это то, что ошибка действительно есть.
Аноним 03/06/15 Срд 19:13:44 #270 №490641 
>>490626
Что значит текст ошибки никак не узнать? В контроллер запрос приходит? Данные уходят? Какой хедер и тело респонса приходят? Ты дебажить-то пробовал или как?
Аноним 03/06/15 Срд 19:30:29 #271 №490649 
>>490641
>В контроллер запрос приходит?
Нет.
Debug.WriteLine(Request.Form["Text"]);
Так выыводятся только те запросы, которые обрабатываются успешно. Те, которые с угловыми скобочками - нет. Я думал, что их можно просто закодировать, но у меня нет даже доступа к начальным данным, полученным через Request.Form.
Аноним 03/06/15 Срд 19:35:03 #272 №490652 
>>490649
Потыкал еще немного, он все-таки выдал
>Additional information: Обнаружено потенциально опасное значение Request.Form, полученное от клиента
Видимо, там специально запрещено хуячить даже подобие html-кода. Сейчас погуглю тогда.
Аноним 03/06/15 Срд 20:55:10 #273 №490696 
Сап, кодеры. Я новичок, учивший с# по шилду и более-менее разобравшийся. Нужна рекомендация литературы, обучающей грамотному построению архитектуры программы.
Нужда возникла после того, как я осознал, что в моем коде появляются "макароны".
Аноним 03/06/15 Срд 21:35:35 #274 №490719 
Скажите, как записывать в системные логи из-под Моно? Не открывать же файл ну самом деле, ну?
Аноним 03/06/15 Срд 22:14:49 #275 №490737 
>>490505
>поддержка на уровне фреймворка
Ну вобщем-то да. Там есть байндинги, например.
Аноним 03/06/15 Срд 22:31:05 #276 №490743 
Посоветуйте годные видеоуроки по шарпу?
Чтобы там всякие полезности разъясняли и т. д.
Аноним 04/06/15 Чтв 03:04:17 #277 №490804 
>>490696
пиздуй в кофу, поясню
Аноним 04/06/15 Чтв 03:52:39 #278 №490811 
>>490804
Я бы постеснялся сидеть в конфе с незнакомцами.
Аноним 04/06/15 Чтв 05:56:44 #279 №490818 
>>490804
что за конфа?
Аноним 04/06/15 Чтв 08:58:16 #280 №490835 
>>490804
>пиздуй в кофу, поясню
Что за конфа то? Макака что-то прикрутил? Не был тут уже год.
Аноним 04/06/15 Чтв 09:21:41 #281 №490841 
>>490818
>>490835
>>490811


>>488338
Аноним 04/06/15 Чтв 19:55:06 #282 №491184 
http://www.dofactory.com/net/design-patterns

Вроде годнота по паттернам проектирования с примером кода на си шарпе.
Аноним 05/06/15 Птн 11:32:11 #283 №491565 
>>483915
Котаны сколько вы берёте за побработку на стороне? Есть возможность заработать $15к за месяцев путём написания руками базы данных на C#. Но сроки строго 6 месяцев + 4 внедрение. Техзадание 500 страниц, взаимодействие с AD и 4 недокументированными прогами. Но помимо этого простота.
Что-то меня пугает как раз это. Как будто где-то здесь наёб, только не понимаю где. Посоветуйте на что смотреть в ТЗ? Какие подводные камни?
sageАноним 05/06/15 Птн 13:47:14 #284 №491632 
>>491565
На пизду своей мамаши-шлюхи посмотри.
Аноним 05/06/15 Птн 14:02:57 #285 №491644 
>>491632
O_o
Аноним 05/06/15 Птн 14:32:56 #286 №491674 
>>491632
От чего такая странная реакция?
Аноним 05/06/15 Птн 15:25:58 #287 №491713 
>>491674
Очевидно, он зарабатывает $15k за 5-6 лет, отсюда и злость
Аноним 05/06/15 Птн 15:27:40 #288 №491717 
>>491713
$15к за 9 месяцев... Считай 60к рублей в месяц. Даже в ДС2 маленькая зарплата.
Аноним 05/06/15 Птн 15:30:04 #289 №491719 
>>491717
Ну вообще 90к получается.
Аноним 05/06/15 Птн 15:31:28 #290 №491724 
>>491719
Это ты по какому курсу подсчитал?
Аноним 05/06/15 Птн 15:45:33 #291 №491740 
>>491724
Так по текущему, вестимо.
Аноним 05/06/15 Птн 16:03:45 #292 №491756 
>>491740
хм.. Тогда мне предлагают $10к за 9 месяцев ебли с бд. Количество записей примерно 200к в месяц. Делать это надо на связке Acess + MS SQL...
Аноним 05/06/15 Птн 19:30:45 #293 №491889 
>>491756
> написания руками базы данных на C#
> Делать это надо на связке Acess + MS SQL
Так ты шо, не бд писать будешь, а приложение?
Аноним 05/06/15 Птн 22:03:32 #294 №492016 
Visual Studio Community ничем не отличается от Ultimate/Professional?
Аноним 05/06/15 Птн 22:19:27 #295 №492023 
>>492016
intellitrace'а как минимум нет
Аноним 06/06/15 Суб 00:30:12 #296 №492125 
string s1 = "string First", s2 = "string ", s3 = "First";
string s4 = s2 + s3;
Console.WriteLine((object)s1 == (object)s4); //False
Console.WriteLine((object)s1 == (object)"string First"); //True
Почему второе выражение true;?
Аноним 06/06/15 Суб 00:34:18 #297 №492127 
>>492125
Интернирование, маня. Слышал про такое?
Аноним 06/06/15 Суб 00:42:37 #298 №492132 
>>492127
>Интернирование
Не. Рассказывай.
Аноним 06/06/15 Суб 00:42:43 #299 №492133 
>>492125
компилятор одинаковые строки хранит в одном месте, только указатели на них разные кидает
Аноним 06/06/15 Суб 00:42:45 #300 №492134 
>>492127
Не. Рассказывай.
Аноним 06/06/15 Суб 01:14:02 #301 №492156 
>>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" был создан один объект, поэтому референсы равны.
Аноним 06/06/15 Суб 01:59:57 #302 №492171 
>>492125
ето на собеседованиях такое нынче спрашивают?
Аноним 06/06/15 Суб 04:17:08 #303 №492185 
>>491889
По моему ты СУБД с БД путаешь.
>Acess + MS SQL
Это как раз СУБД.
Аноним 06/06/15 Суб 10:18:44 #304 №492222 
Шарпач, поясни за NHibernate.
Создаю объект и привязываю его к сесии через Save(), не добавляя изменений в базу (пока что). Потом удаляю этот объект через Delete();, делаю запрос к сущностям через Query<T>().Cacheable();, который возвращает мне этот удаленный объект. Вопрос: какого хуя? Он удален, он мне больше не нужен.
Пробовал убирать его из текущей сессии через Evict(); - ноль толку. Кэш чистить не могу, т.к. пользователь на форме может много чего сделать и изменения должны записываться в базу при выходе и выборе сохранения изменений, либо откатываться при выходе без сохранения.
Приложение с графическим редактором Аноним 06/06/15 Суб 12:11:01 #305 №492249 
14335818617510.png
Добрый день. Подскажите, пожалуйста, на чём сейчас делают приложения с графическим редактором? В итоге должно получиться что-то вроде САПР, чтобы можно было выделять отображённые элементы, перемещать, изменять и т. д. Большинство информации будет в виде графов.

WPF? WinForms? XNA/MonoGame?
Аноним 06/06/15 Суб 14:34:12 #306 №492284 
чому при создании методов в дочернем классе с тем же именем, что есть в родительском, рекомендуется писать new в дочернем классе перед типом метода (оба метода не virtual) ? и что в данном случае делает new? и какие могут возникнуть неполадки, еси не писать new? всё ж итак робит
Аноним 06/06/15 Суб 14:38:10 #307 №492287 
>>492284
Ругань компилятора не читай — вопрос задавай.

Ничего new не делает. Ты просто явно указываешь, что скрываешь метод предка без перекрытия.


Аноним 06/06/15 Суб 17:26:13 #308 №492366 
>>492249
WPF
Аноним 06/06/15 Суб 17:39:26 #309 №492380 
>>492366
А что там? Я привык использовать Geometry, GeometryDrawing и т. п. и засовывать их в Image.Source. А куда вешать обработчики событий? У Geometry нет никаких OnClick. Как смещать и масштабировать изображение? Есть какие-нибудь конкретные руководства по этой теме?
Аноним 06/06/15 Суб 18:41:39 #310 №492439 
>>492380
в гуголе забанили?
Аноним 06/06/15 Суб 22:14:48 #311 №492548 
>>492249
Я вот сейчас юнити осваиваю, как раз для ебли с графами. Мне пока что норм.
>>490505
Но зачем велосипедить обсерверы на винформсе, если в впф уже все сделано за тебя.
Аноним 07/06/15 Вск 00:09:28 #312 №492586 
>>Реализовать generic коллекцию, которая внутри себя хранит элементы в List<>, если количество элементов <=5, и переключается на SortedList<> (элементы копируются в другую внутреннюю коллекцию), как только количество элементов доходит до 6. Оценить скорость работы этой коллекции в сравнении с List<> и SortedList<>
Как реализовать SortedList если у меня есть только Tvalue? Что пихать в Tkey? Если я буду делать просто SortedList.Count + 1 - смысла от него по идее не будет.
Аноним 07/06/15 Вск 00:41:58 #313 №492595 
>>492586
Тебе, минуточку, придется генерировать инкрементальный ключ или гуид. Простой пример: ты добавляешь в свою коллекцию пять интов со значением 5. Если ты будешь использовать само значение или хеш объекта в качестве ключа, то во время добавления шестого инта со значением 5 у тебя все упадет к хуям.
Аноним 07/06/15 Вск 00:47:28 #314 №492596 
>>492595
>бавляешь в свою коллекцию пять интов со значением 5. Если ты будешь использовать само значение или хеш объекта в качестве ключа, то во время добавления шестого инта со значением 5 у тебя все упадет
А сортировку по гуиду потом делать что ли? Тем более у меня generic и там может быть не только int.
Аноним 07/06/15 Вск 01:39:52 #315 №492612 
>>492596
А в чем проблема? Хотя инт в качестве ключа все же лучше: элементы будут отсортированы в порядке добавления. SortedList в данном кейсе использовать по назначению не получится все равно.
Аноним 07/06/15 Вск 10:12:25 #316 №492694 
Ну смотрите: при запуске приложения на начальной странице я проверяю, есть ли у меня токен в файле. Если файл пустой, я перенаправляю юзера на страницу логина с помощью this.Frame.Navigate(typeof(LoginPage));. Потом я возвращаюсь на предыдущую страницу, но она снова отправляет меня на страницу логина, при том, что я точно знаю, что токен попал в файл. Если перезапустить приложение, перенаправляться на страницу логина я уже не буду. Более того:

if (токен пустой)
{
Debug.WriteLine("redirecting to LoginPage \n\n token: " + мой_токен");
this.Loaded += (sender, args) =>
{
this.Frame.Navigate(typeof(LoginPage));
};
}

При повторном отправлении меня на страницу логина, дебагер уже не пишет "redirecting to LoginPage \n\n token: " + мой_токен".
Я так понимаю, что здесь есть какие-то хитрости, прошу помочь мне их понять, а то хуйня выходит, спасибо.

Аноним 07/06/15 Вск 10:26:53 #317 №492696 
>>492694
Я всё починил
Аноним 07/06/15 Вск 17:12:09 #318 №492881 
Призываю адептом Json.net

Есть длинный json. В нем множество однотипных секций
{
"key": 1
"name": "name1"
},
{
"key": 2,
"name": "name2"
}

Мне нужно выбрать тот блок, в котором есть определенное значение "key"
Сделал через forech. Но может можно средствами библиотеки как то быстрее и проще это организовать?
Аноним 07/06/15 Вск 17:30:08 #319 №492892 
посоны, поясните за необходимость виртуальных методов. если мне нужно переопределить метод в потомке, я могу без всяких виртуал-оверрайд всё это сделать, и доступ сохраню к методу предка. приведите пожажа пример ситуации, когда необходимо использовать именно виртуальные методы
Аноним 07/06/15 Вск 17:33:26 #320 №492894 
>>492892 Когда нет дефолтной реализации, естественно.
Аноним 07/06/15 Вск 17:36:42 #321 №492896 
>>492894
и всё? вся суть виртуальных методов, что необязательно их описывать в родителе, если он абстрактный? никаких дополнительных особенностей?
Аноним 07/06/15 Вск 17:55:35 #322 №492921 
>>492892
>>492896
Суть в том, что виртуальные методы вызываются через таблицу виртаульных методов, а не напрямую. Поэтому, когда ты создаешь потомка, кастуешь его к предку и дергаешь виртуальные метод, то у тебя вызывается метод потомка, а не предка. Если бы метод был не виртуальным, то был бы вызван метод предка, а не потомка.

http://pastebin.com/HJy7arT2


Аноним 07/06/15 Вск 18:00:58 #323 №492931 
>>492921
Проебал наследование в потомке. Ну, ты понял, короч.
[code]
Derivative: Base
[/code]
Аноним 07/06/15 Вск 18:10:52 #324 №492943 
>>492921
благодарю, функциональные особенности понял
Аноним 07/06/15 Вск 18:28:26 #325 №492952 
>>492943
Собственно пример того, когда удобно использовать виртуальные методы.
У тебя есть игра. В ней есть куча различных объектов мира, у которых есть специфичные методы для обсчета состояния и отрисовки. Ты же не будешь создавать отдельные массивы для всех типов объектов или пилить какую-то фильтрацию по типу объектов? Ты создашь базовый класс WorldObject, отнаследуешь от него все объекты мира и засунешь в массив. Потом тупо в цикле дернешь виртуальные методы Update и Draw.
Аноним 07/06/15 Вск 18:48:57 #326 №492958 
>>492881
http://www.newtonsoft.com/json/help/html/ReadJsonWithJsonTextReader.htm
Аноним 07/06/15 Вск 19:29:53 #327 №492983 
>>492439
Почему вопросом на вопрос отвечаем?
Аноним 07/06/15 Вск 20:03:56 #328 №492996 
Сап, шарпаны, расскажите что в основном спрашивают(у вас или вы, как собеседующий, на позицию веб-макаки) человека с годом коммерческого опыта? Хуй знает как определить свой левел, на мой взгляд что-то около "High Junior - Low Middle", но хочу не ударить в грязь лицом и пройти.

В своем резюме я описал себя скорее как full-stack(MVC + Javascript/AngularJS) разработчика, и поскольку в вакансиях также отражен желательный опыт работы с JS-фреймворками, то поясните также за возможные вопросы на эту тему, учитывая мой явно не синьерский уровень и опыт?

И как лучше расхвалить свою деятельность на прошлом проекте, чтобы это возымело максимальный эффект на
собеседующего? Какие ответы более всего ожидают услышать? Надо только не переборщить, так как явно что в мои маняфантазии о том, что за год я прошел тернистый путь построения архитектуры крупного приложения, мне не поверят.
Аноним 08/06/15 Пнд 00:27:14 #329 №493112 
Аноньчики, объясните нубу.

Есть такой код
>static async Task WriteMessage(string connection_string, string cmd_string, string message)
> {
> await MySqlHelper.ExecuteNonQueryAsync(connection_string, cmd_string, GetParams(message));
> }


И такой код
>static async Task WriteMessage(string connection_string, string cmd_string, string message)
> {
> MySqlHelper.ExecuteNonQueryAsync(connection_string, cmd_string, GetParams(message));
> }

Есть ли между ними разница? Или это одно и то-же?
Нужно ли писать await если меня не интересует возвращаемый результат?
Аноним 08/06/15 Пнд 01:06:44 #330 №493126 
Как убрать мерцание при обновлении объектов?
Люто бесит.
Аноним 08/06/15 Пнд 01:13:57 #331 №493129 
14337152372910.jpg
>>493126
Аноним 08/06/15 Пнд 01:21:59 #332 №493133 
14337157195700.png
>>483915
При открытии одного проекта студия зависает намертво. Как быть? На что обратить внимание?
Аноним 08/06/15 Пнд 01:41:41 #333 №493141 
Можно ли при data binding-е в каждом group делать разные виды item-ов? Какие подводные камни?
Я почему спрашиваю вообще: в pivot app на каждую страницу нужно выводить принципиально разные вещи, а binding же происходит сразу для всех страниц, т.е. нельзя же на каждую страницу биндить из разных файлов. Или можно? Буду очень признателен за помощь.
[email protected] 08/06/15 Пнд 01:42:43 #334 №493142 
>>493133
у тебя что то со студией походу или с проектом
Аноним 08/06/15 Пнд 01:45:24 #335 №493143 
>>493126
Нашёл уже, могли бы и носом ткнуть.
Аноним 08/06/15 Пнд 02:45:45 #336 №493150 
>>493142
Только в одном проекте проекте миграции базы данных произошло.
Аноним 08/06/15 Пнд 02:47:01 #337 №493151 
>>493150
>проекте после миграции
Аноним 08/06/15 Пнд 13:54:05 #338 №493256 
>>493143
Расскажи как.
Аноним 08/06/15 Пнд 14:02:19 #339 №493263 
>>493133
К тфс подключен?
Студия не может зарезолвить днс. Надо прописать в хостс адрес.
ниблагодари, мимосеньер
Аноним 08/06/15 Пнд 14:04:53 #340 №493266 
>>493112
>Есть ли между ними разница?
А ты сам как думаешь? Читай про async/await.

Ни в коем случае нирикамендую делать без эвэйта. Потому что получится гавно. Даже лень объяснять.

мимо сеньер
Аноним 08/06/15 Пнд 14:07:17 #341 №493268 
>>492996
Давай задам тебе вопрос.
Что думаешь по поводу entity framework?
Какие минусы/плюсы?
я бы не стал задавать какието конкретные вопросы на знания технологий, ни о чем не говорит.
Аноним 08/06/15 Пнд 14:08:11 #342 №493270 
>>492881
linq to json
Аноним 08/06/15 Пнд 14:35:50 #343 №493285 
>>493268
>>493268
Общо говоря, думаю что фреймворк пиздатый, позволяет существенно ускорить разработку(предоставляя широкое множество готовой функциональности) для многих типов проектов - это мне кажется главным плюслом. А минусы в том, что до сих пор(насколько я знаю) поддерживаются не все фичи SQL Server и в крупных проектах это является одним из препятствий переходу от более старых технологий к EF. Еще возможности кастомизации(хоть и не во всех проектах требующейся) ограничены весьма.
Вангую, слишком абстрактно ответил.
Аноним 08/06/15 Пнд 15:35:24 #344 №493317 
14337669242130.jpg
>>493266
>А ты сам как думаешь? Читай про async/await.
Читал. Оче плохо объясняется в интернетах.
>Ни в коем случае нирикамендую делать без эвэйта. Потому что получится гавно. Даже лень объяснять.

Да, походу есть разница.

Теперь такой вопрос.
Я же, в конечном счете вызывают асинхронные методы (помеченные async), из синхронного (обычного).
Как правильно их вызывать?

И еще, если функция не возвращает значения, надо ли тип возвращаемого значение делать Task или лучше Task<void> ?

Не бейте анончики, поясните нубу.
Аноним 08/06/15 Пнд 18:08:14 #345 №493402 
14337760940250.jpg
>>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'.

Чянд?
Аноним 08/06/15 Пнд 18:13:42 #346 №493409 
>>493317
Вангую, что ты и есть тот анон, которому я вчера пояснял за хайлоад, IOCP и пр. в отдельном треде, тебе там как раз в MySql из 1000 потоков писать что-то надо было. Ну или не тот.
Аноним 08/06/15 Пнд 18:22:07 #347 №493412 
>>493409
Тот.
Я решил вернуть все в зад.

В общем, после того как пару месяцев не видел кода, открыл, увидел что-то странное, удалил все нафиг, переписал, а потом вспомнил(когда перечитал документацию Мускл Конектора), что то все правильно было.

Так что вопросы с мусклом отпали сами собой.
Аноним 08/06/15 Пнд 18:24:58 #348 №493415 
Поясните за суть lock'a на след. примере.

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.

Но я нихуя не понял.
Аноним 08/06/15 Пнд 18:31:17 #349 №493423 
14337774774560.jpg
>>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;
}
Аноним 08/06/15 Пнд 18:35:36 #350 №493426 
Так я то понял, но я не понял, почему это должно работать. Там дальше как раз с двойной проверкой пример идет
Аноним 08/06/15 Пнд 18:36:26 #351 №493428 
>>493415
>ensures that only one thread will create an instance
Что непонятного-то?

>lock над каким-то левым объектом-пустышкой
На что-то лочиться-то надо. padlock используется как объект синхронизации. У него там где-то прописывается, что на нем залочились и при повторной попытке взять на нем лок тред заморозится.

>lock блокирует доступ к тому, что в круглых скобках
Таки нет. К тому, что в фигурных.
Аноним 08/06/15 Пнд 18:38:14 #352 №493429 
Почему в проекте ASP NET MVC перестают работать css/js файлы? То есть я написал css-ку, всё работает, на следующий день начинаю дописывать и ничего не происходит, можно вообще удалить весь код из файла и будет работать как раньше. Как с этим бороться? Пробовал собирать / чистить проект - не помогает. Алсо, что писать после чатика для вникания?
Аноним 08/06/15 Пнд 18:41:12 #353 №493432 
>>493428
Ну теперь все понятно, пасибки.
Аноним 08/06/15 Пнд 18:41:44 #354 №493434 
>>493415
> lock блокирует доступ к тому, что в круглых скобках, пока не выполнится вся хуйня в фигурных.
Интересно, много кода ты уже написал с таким подходом?
Аноним 08/06/15 Пнд 18:42:24 #355 №493435 
14337781443360.jpg
>>493402
>>493317

Если я объявляю метод как public async void, а не public async Task, то варнинг пропадает. Но в документации пишут что воид не стоит использовать. Почему - не объясняется.

Но что произойдет если я вызову его из "майна" ?

Ну например.

>static async void huynya()
>{
>await someAsyncShit;
>await someAsyncShit;
>}

>static async Task huynya1()
>{
>await someAsyncShit;
>await someAsyncShit;
>}

>static void Main(string[] args)
>{
>while (true)
> {
> 1) huynya();
> 2) huynya1();
> 3) huynya1().Wait();
> }
>}

Чем будут отличатся случаи 1, 2, 3 ?
Что будет происходить?
Аноним 08/06/15 Пнд 18:44:15 #356 №493439 
>>493434
Дык вроде не оче много, но я там лок не юзал.
Аноним 08/06/15 Пнд 18:54:13 #357 №493462 
>>493435
>static async Task WriteMessage(string connection_string, string cmd_string, string message)
> {
> MySqlHelper.ExecuteNonQueryAsync(connection_string, cmd_string, GetParams(message));
> }
Зачем ты делаешь асинхронный метод, в которм асинхронно-же выполняешь какую-то команду на MySql?
Аноним 08/06/15 Пнд 18:59:53 #358 №493472 
>>493462
Ах да, это я обосрался. Какие-то фишки 4.5 фреймворка, ну хуй с ними, лень разбираться.
Аноним 08/06/15 Пнд 19:03:50 #359 №493477 
>>493462
Инкапсуляция?
Модульность?
Зачем делают методы в которых вызываются другие методы в которых вызываются другие методы?
Или в случае асинхронного подхода это все как-то по другому работает?

В данном же конкретно случае - просто тестовый пример.

Посмотри лучше вот сюда анон - >>493435
Аноним 08/06/15 Пнд 19:13:56 #360 №493484 
>>493477
>Инкапсуляция?
>Модульность?
Я не об этом, ну да ладно.
Ты вот это читал?
https://msdn.microsoft.com/ru-ru/library/hh211418%28v=vs.110%29.aspx
Читай до просветления.
Аноним 08/06/15 Пнд 19:42:08 #361 №493497 
Парни, а как симулировать проблему с синглтоном, когда создается два экземпляра?
Делаю вот так.
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();

return instance;
}
}

public void Method()
{
Console.WriteLine(cnt);
}

public Program()
{
cnt++;
}

static void Main(string[] args)
{
Thread thread = new Thread(new ThreadStart(new Test().Method));
thread.Start();
Thread thread1 = new Thread(new ThreadStart(new Test().Method));
thread1.Start();
Console.Read();
}
}

Но выводит одну и ту же циферку
Аноним 08/06/15 Пнд 19:45:58 #362 №493502 
>>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();
Да и то, навряд-ли.
Аноним 08/06/15 Пнд 19:46:13 #363 №493503 
>>493497
Ага, уже просимулировал. Вижу, что создается два раза эекземпляр класса Program.
Аноним 08/06/15 Пнд 19:46:40 #364 №493504 
>>493502
Уже норм, спс
Аноним 08/06/15 Пнд 20:00:30 #365 №493515 
Поясните за этот lazy-хуйлейзи, в чем его суть?
Аноним 08/06/15 Пнд 20:05:47 #366 №493517 
>>493515
http://pastebin.com/LHW41e2P
sageАноним 08/06/15 Пнд 20:09:14 #367 №493520 
>>493515
Наверное, коллекция, которая подгружается в память, только когда к ней проводят некоторые операции, а не при создании объекта класса.
Аноним 08/06/15 Пнд 20:33:18 #368 №493531 
>>493435
В цикле будет создаваться куча автоматов из переделанных компилятором методов.
1. Из метода не будет возвращаться таск.
2. Из метода будет возвращаться таск.
3. Из метода будет возвращаться таск и тред будет морозиться на каждой итерации цикла. Или не будет, если таск зарезолвится раньше.
Аноним 08/06/15 Пнд 21:48:39 #369 №493564 
>>492548
>>Я вот сейчас юнити осваиваю, как раз для ебли с графами. Мне пока что норм.

Ок. Я тогда попробую XNA/MonoGame.
Аноним 08/06/15 Пнд 21:51:56 #370 №493566 
Пасаны, просветите. Мозг уже взрывается.

Есть один json
Работаю через json.net

По какой то странной непонятной причине начинает происходитьб хуйня.
Ннапример, есть токен "state". Он пуст. Я долго ебался пытаясь прикрутить проверку.
jj["state"] != null упорно не хотело работать. Но потом я поменял его на
jj["State"] != null и все заработало.
Просто поменял первую букву на заглавную. Но он нихуя не с заглавной написан. Проверял в отладчике, студия показывает "state"
Что это за хуйня такая? Это фича json.net или я чего то непонимаю?
Аноним 08/06/15 Пнд 21:59:52 #371 №493572 
>>493566
скрин бы хоть прикрепил на брейкпойнте
Аноним 08/06/15 Пнд 22:22:34 #372 №493585 
14337913547570.jpg
Товарищи шарящие не подскажете ли? Написал тестик, который результаты сохраняет в excel; у меня на компе все норм, перекинул проверяющему - как раз при сохранении вылетело с такой ошибкой. Дал другим попробовать - у 2-х из 3-х нормально все. Кто-то знает в чем проблема? Заранее спасибо. (По логу .net стоит выше, чем в сборке)
Аноним 08/06/15 Пнд 22:24:21 #373 №493586 
>>493585
либу зарегай
Аноним 08/06/15 Пнд 22:26:46 #374 №493589 
>>493585
Не еби мозг с интеропом. Используй обертки над openxml: epplus, closedxml.
Аноним 08/06/15 Пнд 22:37:49 #375 №493597 
>>493586
Расскажи нешарящему как, пожалуйста
Аноним 08/06/15 Пнд 23:32:10 #376 №493625 
Пацаны, кто-нибудь может тут по сишарпу помочь?
Аноним 08/06/15 Пнд 23:32:57 #377 №493626 
>>493625
Смотря что спросишь
Аноним 08/06/15 Пнд 23:39:46 #378 №493632 
>>493626
Ну в общем в моей программке есть несколько форм, одна главная. и 4 дочерние форма, к которым я привязал базу. и при выходе из дочерней изменения базы сохраняются, но как только выходишь из главной они не сохраняются. Как можно сделать, чтобы при выходе из главной все изменения сохранялись, которые я внёс в других формах. Прикладываю программку свою. http://rghost.ru/6pqrMYLTd
Аноним 09/06/15 Втр 03:57:46 #379 №493641 
В инторнетах пишут такое
>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());
> }

Есть ли способ переделать это для асинхронного кода?
Аноним 09/06/15 Втр 08:33:19 #380 №493658 
>>493641
Ты занимаешься каким то говном, поэтому тебе никто не поможет.
Аноним 09/06/15 Втр 10:24:40 #381 №493674 
Анончики, помогите с такой проблемой. Форма, есть на форме picturebox. На нем я что-то рисую. Сама picturebox находится на вкладке. Меняю вкладку - все нарисованное пропадает, приходится постоянно вызывать перерисовку на клик по picturebox'у. Почему все нарисованное пропадает и как это исправить? Аналогичная ситуация если свернуть программу или нажать alt это-то че за хуйня, почему на альт бля.
Binding, EF, вот это все Аноним 09/06/15 Втр 11:41:26 #382 №493695 
14338392864530.jpg
Шарпаны, смотрите, какая хуйня.
Есть C#, база данных, EF, WPF и, положим, три таблицы - workers, departments, appointments.
В первой поля 'workerID','name'
Во второй 'departmentID','name'
В третьей 'appointmentID','workerID','departmentID','salary'

Мне нужно в DataGrid править третью таблицу. При этом в поле 'departmentID' должен быть не внешний ключ, а поле 'name' таблицы 'departments', а для редактирования использоваться combobox.
А поле workerID вообще не должно отображаться, поскольку worker, положим, выбирается из соседнего datagrid. Но при добавлении новой записи должен добавляться id выбранного worker.
Вот как это реализовать?
Аноним 09/06/15 Втр 11:43:00 #383 №493696 
>>493566
> json.net
Смотри
jj["state"] == null - ключ state не найден - { }
jj["state"] == JsonValue.Null (или как то так, уже не помню) - { state : null }
Аноним 09/06/15 Втр 12:51:52 #384 №493717 
>>493695
google: wpf ef crud
Аноним 09/06/15 Втр 12:54:42 #385 №493719 
>>493695
Хз можно ли сделать это из коробки.
Во первых есть два темплэйта, один для просмотра другой edit.
В первом просто биндишь результаты запроса через Include.
Во втором загружаешь в комбобоксы данные и биндишься к селектедитему.
Ну ты понел короче.
Аноним 09/06/15 Втр 13:21:38 #386 №493728 
>>493719
https://www.youtube.com/watch?v=ubYKC-GSN5A
Аноним 09/06/15 Втр 13:28:55 #387 №493731 
>>493728
Повеселил, анончик.
>>493719-кун
Аноним 09/06/15 Втр 13:45:00 #388 №493749 
14338467009360.jpg
>>493731
Аноним 09/06/15 Втр 14:20:39 #389 №493771 
>>493641
>Но что мне делать?
Проще не пользоваться этим говном async/await, а делать все через проверенный yield return. В реальных приложениях мало просто запустить что-то в фоновом потоке, надо еще получать оттуда сообщения "обнови прогресбар" и иметь возможность остановить процесс кнопкой Отмена. Проще один раз написать BackgroundWorker с потоком внутри и потом просто передавать туда IEnumerable<T>, чем каждый раз ебаться с асинками. В майкрософте сделали очередную бесполезную фичу, у них это часто бывает.
Аноним 09/06/15 Втр 14:21:46 #390 №493773 
>>493658
Писать в один файл из разных потоков это дохуя неправильный патерн и вообще говно?
Аноним 09/06/15 Втр 14:31:21 #391 №493782 
14338494810280.gif
>>493771
Ясно, понятно.
Спасибо тебе.
Аноним 09/06/15 Втр 14:43:02 #392 №493795 
>>493771
Блять, слет каких то говнокодеров, которые асинхронность от многопоточности отличить не в состоянии.
Аноним 09/06/15 Втр 16:06:24 #393 №493847 
14338551848890.jpg
>>493795
Асинхронность невозможна без многопоточности.
Асинхронное программирование - это всего навсего паттерн управления потоками.
Аноним 09/06/15 Втр 16:09:09 #394 №493850 
>>493847
>Асинхронность невозможна без многопоточности.
>Асинхронное программирование - это всего навсего паттерн управления потоками.
JS-никам это расскажи, ок да?
Аноним 09/06/15 Втр 16:19:21 #395 №493857 
>>493850
Ну мы же не JS-сники.
Аноним 09/06/15 Втр 16:40:03 #396 №493866 
>>493847
>Асинхронность невозможна без многопоточности.
>Асинхронное программирование - это всего навсего паттерн управления потоками.
Че-то я серенькнул. Как-же у меня софтинка работатет, которая в одном потоке разруливает сотней асинхронных сокетов?
Аноним 09/06/15 Втр 16:54:49 #397 №493880 
>>493866
>Че-то я серенькнул. Как-же у меня софтинка работатет, которая в одном потоке разруливает сотней асинхронных сокетов?
Вначале убери из под себя подливу. И одевай хоть памперсы, если не можешь контролировать это дело.
А затем, открой свое приложение в диспетчере задач, в вкладке "подробности", и посмотри, сколько там потоков, и IO потоков.

Пиздец нынче погромисты пошли, я с вас хуею просто.
Аноним 09/06/15 Втр 17:15:16 #398 №493893 
>>493880

Ебать ты идиот. Нодовский интерпретатор и интерпретаторы в браузерах однопоточные, но там есть асинхронные функции. Асинхронность - это лишь порядок выполнения кода, и неважно в сколько потоков он выполняется.
Аноним 09/06/15 Втр 17:28:51 #399 №493901 
>>493893
Важно.
Это момент принципиальный.
Асинхронным может быть только код использующий функции с побочными эффектами.

>Нодовский интерпретатор и интерпретаторы в браузерах однопоточные
Запусти бравзер, и посмотри в диспетчере задач сколько он запускает потоков.

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

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

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


>Ебать ты идиот
Нет ты. Стыдно вообще таких элементарных вещей не понимать.
Аноним 09/06/15 Втр 17:36:58 #400 №493909 
>>493901

>Запусти бравзер, и посмотри в диспетчере задач сколько он запускает потоков.

Доебался же ты со своим диспетчером. Тебе говорит умный человек: JS однопоточный. И в нем есть асинхронные функции. Браузер запускает каждый таб в своем потоке. Каждый таб имеет свой инстанс ВМ. Кышь отседава читать, Манька, прежде чем умных людей учить.
Аноним 09/06/15 Втр 18:13:12 #401 №493938 
>>493909
Во первых.
Со своим JS ты ошибся тредом.
Во вторых, кривляешься как клоун.
В третьих, не понимаешь элементарных вещей происходящих в компутере. При этом ведешь себя агрессивно, хамишь. Вместо того, чтобы подумать.

Еще раз.
Асинхронное выполнение кода предполагает, по определению, некоторую операцию происходящую параллельно текущему потоку.
Вместо того, чтобы дожидаться ее завершения, мы продолжаем что-то делать в текущем потоке, пока В ДРУГОМ ПОТОКЕ ВЫПОЛНЯЕТСЯ ОПЕРАЦИЯ КОТОРУЮ МЫ ОЖИДАЕМ.

Без этого другого потока - никакой асинхронности нет.

Нет операции выполняющейся параллельно - нет асинхронного кода.
Есть обычный код в том или ном виде.
Аноним 09/06/15 Втр 18:20:38 #402 №493943 
>>493938

> Во первых.
> Со своим JS ты ошибся тредом.
> Во вторых, кривляешься как клоун.

Ясно. Слился. 20 минут назад ты прекрасно говорил о JS, но как только почувствовал жжение у пердака сразу же "не по теме, ко-ко-ко". Я JS привел в качестве примера однопоточного проложения, в котором все же есть асинхронность. Просто ты немного туповат и ленив, вот и приходится примеры приводить.
Аноним 09/06/15 Втр 18:29:54 #403 №493952 
>>493938
Просто пиши что это НЕНАСТОЯЩАЯ АСИНХРОННОСТЬ, и что ты ФИЗИК и тебя не наебёшь.
Аноним 09/06/15 Втр 19:14:50 #404 №493994 
>>493952
О чем ты я не пойму.

>>493943
>Я JS привел в качестве примера однопоточного проложения
JS - это не приложение вообще.
Давай пример асинхронности с одним потоком. Любой, только с пруфами.


>20 минут назад ты прекрасно говорил о JS
Не помню такого. Ты меня с кем-то путаешь. В Жава скрипте, о нем же речь?, я небольшой специалист.
Однако, асинхронное программирование несвязанно с каким-то конкретным языком. Принцип не изменяется, независимо от того используешь ты асемблер, си, перл, жаву, жава скрипт, или сишарп.

>Просто ты немного туповат и ленив, вот и приходится примеры приводить.
Ты путаешь приложение с языком программирования. При этом позволяешь себе называть кого-то тупым.
Аноним 09/06/15 Втр 19:19:06 #405 №493999 
>>493994
http://habrahabr.ru/post/150788/
>Менее распространенная модель, нежели многопоточная, но имеющая не меньшие возможности. Асинхронная модель построена на очереди событий (event-loop). При возникновении некоторого события (пришел запрос, выполнилось считывание файла, пришел ответ от БД) оно помещается в конец очереди. Поток, который обрабатывает эту очередь, берет событие с начала очереди, и выполняет связанный с этим событием код. Пока очередь не пуста процессор будет занят работой. По такой схеме работает Node.js. У нас имеется единственный поток, обрабатывающий очередь событий
Аноним 09/06/15 Втр 19:25:01 #406 №494005 
>>493999
>возникновении некоторого события
>пришел запрос, выполнилось считывание файла, пришел ответ от БД
>оно помещается в конец очереди

Теперь осталось только немножко напрячь мозги и попытаться понять, как же это некоторое событие возникает. И каким волшебный образом оно помещается в очередь. Вне одного единственного потока.
Аноним 09/06/15 Втр 19:32:10 #407 №494012 
>>494005
Внешняя реализация не ебет.
При тру многопоточности ты можешь одновременно (ну почти) изменить какой-либо объект, а в асинхронке хуй, всегд активен только 1 поток исполнения
Аноним 09/06/15 Втр 19:40:42 #408 №494024 
>>494012
>реализация не ебет.
А я о реализации и говорю.

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

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

То, что это все чудо спрятано за 10 уровнями абстракций и синтаксическим сахаром - ничего в природе не изменяет.
Аноним 09/06/15 Втр 20:28:45 #409 №494091 
Анон, почему я сосу с этим методом?
http://vknet.github.io/vk/wall/getComments/

Это ReadOnlyCollection<T>
делаю как подсказали здесь
http://stackoverflow.com/questions/2429279/how-to-cast-a-readonlycollectiont-to-t

получилось типа вот этого
string[] comments = vk.Wall.GetComments(1, 1, out X, null, false, null, null, 0).ToArray();

в итоге - проглот с ошибкой
error CS0029: Cannot implicitly convert type 'VkNet.Model.Comment[]' to 'string[]'

ЧОМУ?
Аноним 09/06/15 Втр 20:39:11 #410 №494095 
>>494091
функция vk.Wall.GetComments() возвращает значение типа VkNet.Model.Comment[], а не string[]
Аноним 09/06/15 Втр 20:45:02 #411 №494096 
>>494095
Это понятно, но почему он не хочет быть няшей и смочь в ToArray()?
Аноним 09/06/15 Втр 20:46:46 #412 №494098 
>>494096
Но он же смог в массив. Не смог он в стринг.
Аноним 09/06/15 Втр 20:53:40 #413 №494107 
>>494098
У меня теперь бомбануло, что делать то, маэстро?
Аноним 09/06/15 Втр 20:58:48 #414 №494116 
>>494107
string[] comments = vk.Wall.GetComments(1, 1, out X, null, false, null, null, 0).Select(x => x.Text).ToArray();
Аноним 09/06/15 Втр 21:21:36 #415 №494135 
>>494116
Спасиб попробуюо, завтра
Аноним 10/06/15 Срд 11:21:28 #416 №494472 
>>493994
Вот тебе пример:
This is an essential truth of async in its purest form: There is no thread.
http://blog.stephencleary.com/2013/11/there-is-no-thread.html

Не ожидал что здесь сидят одни дауны.
мимо >>№493795-сеньер
Аноним 10/06/15 Срд 12:16:58 #417 №494491 
>>493674
>winforms
>2015
Аноним 10/06/15 Срд 13:06:11 #418 №494506 
>>493994

Вот это ты упертый сноб. Я говорил о ноде. Вот тебе еще пример: DOS игры. DOS - однопоточен. Как получается, что игры могли и графику играть, и звук воспроизводить и еще и ввод пользователя читать? А теперь марш под шконарь.

Аноним 10/06/15 Срд 13:36:41 #419 №494515 
Анон, ответь, пожалуйста. Мне совсем скоро в деревню ехать, не хочу терять время и возьму ноут. Хочу узнать у тебя, можно ли сгенерировать в родительском приложении сборку с помощью CSharpCodeProvider и дёргать её типы из родительского приложения. Есть ли best practices? Где читать об этом?
Аноним 10/06/15 Срд 14:22:41 #420 №494538 
>>493696
Да я тоже думал проверять JProperty. Но нихуя. Нагуглил на оверфлове пишут что это типа бага либы при преобразовании токена в словарь.
Аноним 10/06/15 Срд 17:07:32 #421 №494621 
>>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 - однопоточен. Как получается, что игры могли и графику играть, и звук воспроизводить и еще и ввод пользователя читать?
Обработка прерываний?

>А теперь марш под шконарь
Там уже сидит твоя мамка.
Аноним 10/06/15 Срд 17:27:55 #422 №494628 
>>494621
Что за анима на видео?
Аноним 10/06/15 Срд 17:43:35 #423 №494631 
>>493566
Ты стекломоем объебался, пидоран? Я уже джва года с json.net работаю и никогда такой хуйни не встречал.
sageАноним 10/06/15 Срд 21:21:31 #424 №494747 
>>494472
Мудак ты, а не синьор. Майкрософт высрал очередную фичу, которой проще НЕ пользоваться, чтобы не словить дедлок на ровном месте. Ты посмотри на примеры использования, там же классический говнокод в button1_Click. Тесты к этому в принципе не написать. Надо тянуть соплю await через весь код, снизу доверху, это модульность, блять?
Реально, чем больше работаешь с дотнетом, тем больше смотришь в сторону джавы. Там хотя-бы думают про архитектуру, а не хуячат фичи лишь бы было.
Аноним 10/06/15 Срд 22:58:14 #425 №494878 
Нужен быстрый сайт, который в перспективе можно будет запустить и хостить на линуксе. Что использовать? Внекст? Нэнси? Какую БД? Дискас.
Аноним 10/06/15 Срд 23:04:08 #426 №494894 
14339666483470.png
Анасы, бьюсь пол дня над задачей. Вроде все понятно и все запилил, но вот то, что подчеркнуто красным вообще хуйзнает как организовать. Собственно для Xml десериализации не работает [OnSerialized] и всякие каллбеки. Единственное что на ум пришло - после того, как десериализируем объект - рефлексией менять это приватное EmployeID. Вангую что есть решение по удачнее. Есть ли какая-то возможность организовать [OnSerialized] для Xml? Нагуглил только DataContract но так и не разобрался как им пользоваться. Похоже оно не подходит для решения моей задачи.
Аноним 10/06/15 Срд 23:15:02 #427 №494920 
14339673026690.jpg
>>494878
БАМП. Хочу сайт со слабым фронтендом с интеграцией с биткойнами(через одну из либ)
sageАноним 10/06/15 Срд 23:38:42 #428 №494969 
>>494894
Откуда задачи берешь?
Аноним 10/06/15 Срд 23:51:24 #429 №494978 
>>494969
Дали в конторе.
Аноним 10/06/15 Срд 23:56:43 #430 №494990 
>>494894
Можно жи в сеттерах имени и фамилии устанавливать этот id, а можно вообще его вычисдяемым свойством сделать хотя там поле написано
Аноним 10/06/15 Срд 23:59:45 #431 №494995 
>>494990
Вся ведь соль, как я понял, должна быть в том, что тебе не должно быть известно его значение на момент сериализации.
Аноним 11/06/15 Чтв 01:05:22 #432 №495091 
>>494920
>БАМП. Хочу сайт со слабым фронтендом с интеграцией с биткойнами(через одну из либ)
Ну так а в чем проблема?
Делай селфхостед через HTTP client - server.
БД - любая блин MySQL - классика.
Аноним 11/06/15 Чтв 01:29:57 #433 №495106 
14339753976160.png
>>493771
>делать все через проверенный yield return
Мудрый анон, будь добр, подкинь ссылки на статьи, или хоть правильный поисковой запрос на эту тему. Меня в гугле и яндексе забанили похоже.
Аноним 11/06/15 Чтв 01:48:55 #434 №495113 
Блять, какого хуя это ебаное говно не работает? Нихуя, сука, не работает, как надо. Вот хотя бы OnNavigatedTo() методж. У меня там стоит чёткий if, после которого идёт код. Так вот этот ебучий код выполняется в любом случае, независимо от правдивости if-а. Что это за дрисня? Может, проблема в том, что я оннавигейтедту async-ом сделал?
Аноним 11/06/15 Чтв 01:51:45 #435 №495115 
>>495113
Код показывай.
Аноним 11/06/15 Чтв 02:04:34 #436 №495116 
Ану, ананасы, гляньте код к этому заданию https://www.sendspace.com/file/ij19c5 ни где ли я не проебался? Как можно допилить?
>>494894
Аноним 11/06/15 Чтв 07:58:47 #437 №495149 
>>494747
Ниасилил - так и скажи.
Аноним 11/06/15 Чтв 08:50:18 #438 №495157 
>>495116
Ты что еблан, рефлексией десериализовывать? Тебя за такое обоссут, пиши кастомный десериализатор.
Аноним 11/06/15 Чтв 10:34:13 #439 №495180 
>>495116
Для работы с private полями сделай два метода в хелпере же, ну.
У Employee не нужен Serializable.
throw new FileNotFoundException не нужен, потому что StreamReader кидает такое же исключение, можно свое исключение сделать. И вообще ты его не ловишь.
Зачем ты в WriteLine соединяешь несколько полей, только чтобы потом разбить из через \n? for нинужин, foreach + counter, а можешь через Select(T,int) сделать. Но это цветовое уже.
sageАноним 11/06/15 Чтв 10:53:47 #440 №495194 
>>495106
>правильный поисковой запрос на эту тему
C# how works yield return

Суть в том, что yield return прерывает выполнение кода и возвращает наверх, в вызывающий метод. При следующем вызове MoveNext у итератора выполнение продолжится со следующей за yield строки. Т.е. твой "асинхронный" метод должен вернуть IEnumerable<T>, по которому надо сделать foreach.
Аноним 11/06/15 Чтв 12:50:50 #441 №495251 
>>494621

> Да, конечтно же асинхронность существует, чисто на аппаратном уровне, благодаря прерываниям.
И можно написать чистое ассемблерное приложение, без всяких абстракций, ОС, вот этого всего, которое будет асинхронным, по своей природе, ведь аппаратная платформа асинхронна.
Но это в вакууме.

Пошли маневрирования. Мань, ты ж постом выше писал:

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

Можеть уже просто признаешь, что был неправ и извинишься перед уважаемыми господами?
Аноним 11/06/15 Чтв 13:37:35 #442 №495274 
>>495157
Сами жи просили такой хуйней заниматься. Ну и хуй с ними, щас перепишу.
>>495180
Тут
>У Employee не нужен Serializable
и
>throw new FileNotFoundException не нужен, потому что StreamReader кидает такое же исключение
тут проебался. Поправлю. СГОРЕЛ пока хуйню писал эту.
>Зачем ты в WriteLine соединяешь несколько полей, только чтобы потом разбить из через \n
Так чтоб в одну линию и через @ не хуярить все.
>а можешь через Select(T,int) сделать. Но это цветовое уже.
Могу и так. Так и сделаю, спасибо.
Аноним 11/06/15 Чтв 14:09:47 #443 №495282 
14340209872610.jpg
>>495251
>извинишься перед уважаемыми господами
Вот этому господину два дня процессорного времени.
мимо сеньер
Аноним 11/06/15 Чтв 14:28:27 #444 №495288 
>>495180
https://www.sendspace.com/file/6c7rwu
Так лучше?
Аноним 11/06/15 Чтв 15:42:16 #445 №495320 
14340265369900.jpg
>>495251
>Мань
Ты меня со своей мамкой путаешь опять.
Как там она кстати поживает, в дверной проем все так же не пролазит?

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

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

>и извинишься перед уважаемыми господами?
>Манька
>Под шконку
>уважаемыми господами
Аноним 11/06/15 Чтв 15:48:03 #446 №495324 
14340268832620.png
14340268832641.jpg
14340268832652.jpg
>>495282
>мимо сеньер
>активно общается в треде
>мимо
Ясно.
Как там твои маленькие друзья поживают, сеньер? Дружба - магия?
Аноним 11/06/15 Чтв 16:04:57 #447 №495339 
>>495320
Так, кто тут маневрирует жопой?

>Асинхронность невозможна без многопоточности.
Ты спизданул?

Не выебывайся, просто покайся и иди с миром под шконку.
Аноним 11/06/15 Чтв 16:34:55 #448 №495350 
>>495288
Ох уж этот console.writeline("\n\n\n\n\n\n\n"), я бы тебя за такое кочергой огрел угрозы на анимешном форуме с конями, да.
Методы для получения приватных полей должны быть методами расширения, должны принимать не Emploee, а generic, get должен возвращать object, set должен принимать object или тоже generic, но тогда вызовы будут вырвиглазно выглядеть. Их вообще лучше вынести в отдельный класс ПомощникОтражения, декомпозиция же, Люк. Вместо List.foreach лучше использовать обычный foeach.
Аноним 11/06/15 Чтв 16:51:59 #449 №495362 
>>495320

> Асинхронность - это порядок выполнения кода, она не связанна с наличием или отсутствием потоков в парадигме классического программирования.
а вот тут ты кукарекал совсем другое >>493847

> Поэтому утверждения о том, что все мол выполняется водном потоке - неверно.

Верно. Тебе примеры привели. Мань, как ты не поймешь, что поток - абстракция. Ну туповат чуток, что ж тут сделать.

> А примирительно к высокоуровнему программированию, никакого одного потока опять таки нет, это было разобрано и разжевано выше.

Почему нет? Node.js - однопоточный. И ничего ты не разжевывал. Кроме истеричных вскукареков ничего выше не было.
Аноним 11/06/15 Чтв 17:20:12 #450 №495381 
есть ли в MVS 2013 возможность заменить комбинацию команд на одну собственную? к примеру, часто приходится писать:
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine("Пользователь>");
Console.ResetColor();
Есть ли возможность комбинацию из 3 команд заменить на одну, например вместо трех вышеперечисленных писать:
type();
Аноним 11/06/15 Чтв 17:24:19 #451 №495384 
>>495381
void doSomething () {
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.WriteLine("Пользователь>");
Console.ResetColor();
}

doSomething();

Ты про это чтоли? О_о
Аноним 11/06/15 Чтв 17:25:13 #452 №495387 
14340327139840.jpg
>>495320
https://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx#BKMK_Threads
>Async methods don't require multithreading
>you don't have to guard against race conditions
сеньеор
Аноним 11/06/15 Чтв 17:25:55 #453 №495389 
>>495384
ебать я олень. чот сам додуматься не мог, аж стыдно стало. простите мою тупость Т_Т
Аноним 11/06/15 Чтв 17:36:52 #454 №495394 
>>495350
Как же ты доебал. То тебе не нравится несколько райтлайнов, то нравится. Щас геттеры сеттеры сделаю.
Аноним 11/06/15 Чтв 17:39:34 #455 №495398 
>>495339
Невозможна. В нашей вселенной по крайней мере.
Ну или прув ми вронг.

>>495362
>Node.js - однопоточный
Нет, он не однопоточный. (что было разжевано выше) И ОС на которой этот монстр крутится - не однопоточная. И железо на которой эта ОС живет - не однопоточное. И материальная реальность в которой это железо существует - не однопоточная. Процессы вокруг нас происходят одновременно, параллельно.
Не может один процесс протекать параллельно другому и при этом не протекать. Это блин взаимоисключающие понятия.
У тебя или 2 процесса, или 1.
Если один - то он один. И нет никакой многопоточности, асинхронности, и всего прочего. Не может быть асинхронность в одном процессе.
А вот когда существует другой процесс, делающий что-то параллельно, и сигналящий первому(взаимодействующий с ним) - начинается асинхронность.

Как это все можно не понимать. Пиздец просто товарищи.

>>495387
Просто прекрати уже позориться, сеньер помидор ты всратый.
Ты не отличаешь абстрактный язык в вакууме и физическую реализацию этого дела.
Аноним 11/06/15 Чтв 17:41:09 #456 №495402 
14340336692480.png
>>495389
Все с чего-то начинали, не комплексуй.
Аноним 11/06/15 Чтв 17:51:01 #457 №495414 
>>495398
Знатно тебя говном накормили.
Аноним 11/06/15 Чтв 17:52:09 #458 №495415 
>>495394
Я с самого начала имел ввиду что нужно на каждую строку writeline писать, название метода намекает же. Ты видимо не так понял.
Аноним 11/06/15 Чтв 17:52:15 #459 №495416 
>>495324
КОНЕЙ НЕ ТРОЖЬ!
мимо тимлид
Аноним 11/06/15 Чтв 17:56:02 #460 №495422 
>>495415
Да-да, бугурчу с того, что задание легкое, а я фейлюсь из-за того что оно уже доебало. Щас перепилю как надо.
Аноним 11/06/15 Чтв 18:08:51 #461 №495435 
14340353317040.jpg
>>495398

> Ну или прув ми вронг.

Ты слишком маневренный, Мань. За тобой не угонишься.

> И материальная реальность в которой это железо существует - не однопоточная.

даже небо многопоточное! Даже Аллах!

> Макают лицом в говно
> Просто прекрати уже позориться, сеньер помидор ты всратый.

проиграл.

Маня, треды - это абстракция. Ты тупой что ли? Который раз тебе говорят. Кроме того, ты путаешь параллельность и многопоточность.
Аноним 11/06/15 Чтв 18:11:03 #462 №495438 
>>495350
> должны принимать не Emploee, а generic, get должен возвращать object, set должен принимать object
А почему generic то? Я ведь только с Employee буду работать через эти методы.
Аноним 11/06/15 Чтв 18:25:21 #463 №495453 
14340363210170.png
>>495435
>Маня, треды - это абстракция.
Я об этом и говорю.
Чянд?

>Ты тупой что ли?
Нет ты.

>Который раз тебе говорят.
Пиздец, это мне оказывается говорят, ты упоротый щитоле, хохол?

>Кроме того, ты путаешь параллельность и многопоточность.
Нет ты.
Параллельность невозможна без многопоточности.
Это блин объективная реальность.
В чем твоя проблема?

В чем именно заключаются твои претензии?

>даже небо многопоточное! Даже Аллах!
Небо - да. Аллах - не знаю.

Проблемы?

>Ты слишком маневренный, Мань. За тобой не угонишься.
Просто ты глуповат.
И не умеешь вести беседу.
Вместо того чтобы уточнить у собеседника моменты которые тебе непонятны, начинаешь анальный цирк и клоунаду.

Я уже молчу про сеньора, который в живую видимо ни одного не видел приложения на .NET
Аноним 11/06/15 Чтв 18:25:31 #464 №495454 
14340363314430.png
>>495415
Норм или опять обосрался?
Аноним 11/06/15 Чтв 18:26:03 #465 №495455 
>>495416
Ок.
Аноним 11/06/15 Чтв 18:26:09 #466 №495456 
>>495438
Потому что они относятся к emploee, так же как и к остальным классам - не особо. Методы, которые относятся к классу обычно в нем и определены КО выходит на связь. Можно даже и не generic, а object, типы то тут вообще не нужны, тут я махнул.
Аноним 11/06/15 Чтв 18:28:12 #467 №495460 
>>495454
public string emplyeeID {set; get} = "string";

а что мешало так сделать? давно не программирую, может чо не догоняю?
Аноним 11/06/15 Чтв 18:29:00 #468 №495462 
>>495460
По заданию надо именно private и через рефлексию.
Аноним 11/06/15 Чтв 18:29:55 #469 №495464 
>>495456
Типы жи для typeof нужны
Аноним 11/06/15 Чтв 18:34:23 #470 №495467 
14340368637030.png
>>495456
Все, впизду, больше не буду перепиливать.
Аноним 11/06/15 Чтв 18:34:27 #471 №495468 
>>495464
obj.GetType() == typeof(T)

>>495454
Паблик методы хорошо сделал, а вот private надо вынести в другой класс, потому что нужно больше хелперов для бога хелперов, потом выше написал почему я так считаю.
Аноним 11/06/15 Чтв 18:37:28 #472 №495471 
>>495467
Хорошо, с сахарком разобразлись. Теперь сама программа: где обработка исключений? ехидная_рожица.png
Аноним 11/06/15 Чтв 18:39:53 #473 №495475 
>>495471
Какая впизду обработка, это уже вообще пиздец если так задрачиваться.
Аноним 11/06/15 Чтв 18:40:18 #474 №495476 
>>495460
Например то, что cs6 еще не релизнулся.
Аноним 11/06/15 Чтв 18:44:12 #475 №495479 
>>495475
Ну мы то тут не знаем что у тебя смотреть будут, может на цирк отражений, может что переменные не двумя буквами называешь, а может что "а я вот сейчас удалю этот файл, что ваша программа скажет?". Базовые вещи, типа filenotfound можно и ловить.
Аноним 11/06/15 Чтв 18:46:42 #476 №495480 
>>495476
А хуй с ними, у меня ещё дохуище заданий которые до 15 числа надо успеть сделать, а я, естественно, хуй успею.
Аноним 11/06/15 Чтв 18:46:45 #477 №495481 
14340376058820.png
>>495476
так уже в 5 можно было делать же
Аноним 11/06/15 Чтв 19:08:00 #478 №495487 
14340388808510.png
>>495481
Чяднт?
Аноним 11/06/15 Чтв 19:14:37 #479 №495491 
14340392771300.jpg
>>495480
А мб скинешь?
вроде много могу, а реальной практики не хватает.
Аноним 11/06/15 Чтв 19:21:22 #480 №495493 
>>495491
Напиши маппер объектов на рефлексии и атрибутах.
Аноним 11/06/15 Чтв 19:39:57 #481 №495508 
>>495491
Скайпик оставь, поделюсь. Может заодно советоваться буду.
Аноним 11/06/15 Чтв 20:54:14 #482 №495537 
14340452544110.png
>>494631
Не поленился, заскринил.
Аноним 11/06/15 Чтв 23:39:57 #483 №495563 
>>495487
Тем, что у тебя переменная обзывается именем конструктора класса?
>>495481-кун
Аноним 11/06/15 Чтв 23:53:19 #484 №495570 
>>495563
Это да, но компилятор до этого не добрался. Нет в спеке cs5 дефолтных значений для автосвойств.
Аноним 12/06/15 Птн 00:01:25 #485 №495571 
>>495570
Странно, сколько себя помню - использовал. В 2014 так точно на 2013 студии. Хотя может что то путаю, хз.
Аноним 12/06/15 Птн 00:07:55 #486 №495577 
Братишки, как накидать мусора, чтобы увеличить размер откомпиляного файла?
Аноним 12/06/15 Птн 00:49:10 #487 №495601 
>>495577
Ебнулся? Зачем?
Аноним 12/06/15 Птн 00:58:00 #488 №495605 
>>495577
Ну, типа берешь и засовываешь в ресурсы 2ГБ порнухи.
Аноним 12/06/15 Птн 03:50:21 #489 №495647 
Ребята кто может обьяснить как в вижлстудии дебажить код на моно?
Аноним 12/06/15 Птн 13:05:34 #490 №495711 
Sup. Студентота 3-й курс. Знания есть, но, мне кажется что слишком мало. Сейчас читаю Троелсена, подскажите, как еще можно увеличить скилл. Где брать задачи, для отработки теории и т.д.
Аноним 12/06/15 Птн 13:13:22 #491 №495715 
>>495508
а давай на фейкомыльце?
[email protected]
Аноним 12/06/15 Птн 13:28:29 #492 №495731 
14341049095980.png
>>495711
Алан Бьюли, «Изучаем SQL».
Пикрелейтед спрашивают на собеседованиях постоянно (это стандарт 1991 года).

Алсо, книги вроде SICP хорошо прочищают мозги. Но это уже по желанию, эти весчи не спрашивают.
Аноним 12/06/15 Птн 13:32:41 #493 №495736 
>>495601
Потом учто маленький размер подозрителен.
Аноним 12/06/15 Птн 15:37:19 #494 №495829 
Господа, поясните ньюфагу за get/set.
Они же просто заменяют методы аля геттер/сеттер?

private string name;
public string Name
{
get { return name; }
set { name = value; }
}

В чём же смысл? Я могу написать публичные методы GetName/SetName. Или смысл тут что к Name можно обращаться как с свойству?
Аноним 12/06/15 Птн 15:40:44 #495 №495832 
>>495829
Суть в том, что не надо писать GetName и SetName. Компилятор это сделает за тебя, причем выглядеть все будет как обращение к полю.
Аноним 12/06/15 Птн 15:42:52 #496 №495835 
>>495832
Поясни другому ньюфагу, в чём суть? По сути это же обращение к приватной переменной через метод, а в чём прикол?
Аноним 12/06/15 Птн 15:45:01 #497 №495837 
>>495835
У тебя появляется контроль над процессом установки и возвращения значения. Иногда это нужно, иногда нет.
Аноним 12/06/15 Птн 15:47:26 #498 №495843 
>>495832
Ок, а как а приватные свойства лучше начинать с "_" ? Просто заметил что в коде многие пишут так. Это соглашение такое?
Аноним 12/06/15 Птн 16:18:07 #499 №495863 
>>495843
Да, соглашение, но оно касается приватных полей. Впрочем, на каждом проекте свой кодстайл.
Аноним 12/06/15 Птн 16:26:07 #500 №495865 
>>483915
Будет ли программа, собранная в Моно, корректно работать в винде?
Аноним 12/06/15 Птн 16:27:41 #501 №495866 
>>495865
Собери — проверь. Не?
Аноним 12/06/15 Птн 17:18:00 #502 №495897 
>>495866
Не.
Аноним 12/06/15 Птн 19:00:28 #503 №495939 
>>495866
Винды нет
Аноним 12/06/15 Птн 19:09:06 #504 №495943 
>>495939
Поставь виртуалку. Все равно придется проверять билд на винде в будущем.
Аноним 12/06/15 Птн 21:23:19 #505 №496031 
Посоветуйте каких нибудь книжек по ООП, желательно с большим количеством задач и что нибудь свежее.
comments powered by Disqus