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

C# мастеров тред

 Аноним Пнд 26 Май 2014 09:35:53  #1 №356145 
1401082553890.png

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

Аноним Пнд 26 Май 2014 09:37:18  #2 №356146 

Ну и сразу первый вопрос.
Если надо сделать присвоение значений, которые могут быть и не допустимыми, что лучше, пилить 3-10 проверок ifами или тупо блок try/catch?

Пнд 26 Май 2014 09:55:05  #3 №356149 

>>356146
Прочитай чего-нибудь про инвариантность данных, алгебраические типы. Если ниасилишь, то тебе лучше идти работать в макдональдс.

Аноним Пнд 26 Май 2014 10:18:16  #4 №356152 

>>356149
Алгебраические типы - создать класс, который в конструкторе будет принимать любые значения а возвращать только в нужном диапазоне? ИМХО всё это абстракция, выполнять анализ всё равно он будет либо сравнениями либо блоком try/catch.
>Если ниасилишь, то тебе лучше идти работать в макдональдс.
Я не работаю программером нефтянник. Программирование - хобби. Однако оно неплохо помогает в работе, в частности запилено несколько очень экономящих время приложений. Но, конечно, хотелось бы развиваться помаленьку.

Аноним Пнд 26 Май 2014 11:19:19  #5 №356166 

>>356146
Надо смотреть по ситуации. Трай-кетч обычно короче и проще + можно присвоить что-то дефолтное. Проверки будут раздувать код, но зато можно обозначить поведение в каждом случае отдельно. (Вообще-то и трай-кетчем можно, при условии что сеттер будет кидать разные исключения а не просто throw new Exception("derp"))

Аноним Пнд 26 Май 2014 11:19:57  #6 №356167 

Мне когда посоветовали его учить, меня наебали?

Аноним Пнд 26 Май 2014 11:30:25  #7 №356168 

Как быть с привязкой данных в комбобокс? Настриваю дисплеед мембер и валуе мембер, но если комбобокс не в дропдаун режиме (т.е. непосредственно когда показывает выпадающий список), он все равно показывает валуем мембер, а не дисплеед.

Аноним Пнд 26 Май 2014 11:32:49  #8 №356171 

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

Аноним Пнд 26 Май 2014 11:34:15  #9 №356172 

>>356167
>Мне когда посоветовали его учить, меня наебали?
Не программист-кун, любитель, но мне нравится. Хотя и есть области где неприменим (операционки, микроконтроллеры). Геймдев как я понимаю только через Unity.

Аноним Пнд 26 Май 2014 11:36:28  #10 №356173 

>>356172
>Геймдев как я понимаю только через Unity.
Геймдев уровня /gd/.

Аноним Пнд 26 Май 2014 11:36:51  #11 №356174 

>>356168
давайте с такими вопросами конкретнее. Хотя бы код и платформа (winforms, wpf, qt, etc.). А лучше солюшен в зипник и на ргхост. Только не всю мегатулзу, а только локализованную проблему. Иначе шарпобоги хуй поймут, что от них требуется.

Аноним Пнд 26 Май 2014 11:37:28  #12 №356175 

>>356152
Я тебя кажется помню. Ты на делфях раньше писал?

Аноним Пнд 26 Май 2014 11:39:24  #13 №356176 

>>356146
Я бы запилил класс, а в нет гет/сет.

Аноним Пнд 26 Май 2014 11:42:59  #14 №356179 

>>356174
Винформс. Есть база данных (microsoft sql server). На одной формочке есть датагридвью и дитейлвью. В дитейлвью один из текстбоксов заменен на комбобокс. В датагридвью один из столбцов заменен на комбобокс. Все забиндино к базе данных стандартными визардами (с автоматическим созданием тейб адаптеров, биндинг сорсов и прочего). В датагридвью комбобокс столбец настроен показывать "NAME", а иметь реальное значение "ID" и с ним все хорошо. Но вот комбобокс дитейлвью ведет себя хуево при такой настройке и показывает "ID" вместо "NAME" до тех пор, пока не нажмешь на него.
Что бы скинуть солюшен, нужно и БД к нему скинуть.

Аноним Пнд 26 Май 2014 11:49:20  #15 №356184 

>>356179
Увы, не сталкивался. Отлаживай дебаггером тогда. Ну или замени БД на моковую табличку из одной строки и показывай код.

Аноним Пнд 26 Май 2014 11:49:36  #16 №356185 

>>356175
Не, вряд ли это тот я :)

Аноним Пнд 26 Май 2014 11:58:43  #17 №356192 

>>356179
Попробуй selected item задать. и не ленись менять язык, глаза вылезли

Аноним Пнд 26 Май 2014 12:22:53  #18 №356201 

>>356192
Да я пробовал. Он выдает привильный ID выбранного элемента, но я хочу что бы он выдавал его имя, а не ID.

Аноним Пнд 26 Май 2014 13:08:14  #19 №356225 

Вот проект с проблемным ComboBox, без базы данных, создан локальный DataSet и таблицы, соответственно sql server не нужен.
http://rghost.net/55861821

Аноним Пнд 26 Май 2014 13:18:31  #20 №356229 

>>356172
>>Геймдев как я понимаю только через Unity.
XNA еще есть.
>>микроконтроллеры
Можно.

Аноним Пнд 26 Май 2014 13:31:27  #21 №356231 

>>356225
Смотрю. Интересный баг, пока не вкурил, в чем дело.

Аноним Пнд 26 Май 2014 13:55:53  #22 №356234 

>>356229
>XNA еще есть.
Написать можно и на WPF. Но создание десктопных проектов ААА класса мы тут не осилим, а для простых игрушек нужна в том числе работа на iOS, Android и WP. XNA тут не помощник..

Аноним Пнд 26 Май 2014 14:14:05  #23 №356237 
1401099245859.png

>>356225
Слушай, анон, в этом автогенеренном коде тяжеловато разбираться, но я вижу, что у DevicesTable.ObjectName тип Long, к тому же явно что-то не так с релейшеном твоих данных (пикрелейтед). Почему ты связываешь айдишник со строкой-именем?

Аноним Пнд 26 Май 2014 14:28:48  #24 №356240 

>>356237
>DevicesTable.ObjectName тип Long
Так и должно быть, т.к. по задумке DevicesTable.ObjectName это поле ID таблицы ObjectsTable. Но пользователю нужно видеть именно имя объекта, а не его ID. Возможно для правильного восприятия следовало назвать DevicesTable.ObjectName DevicesTable.Object_ID.

Аноним Пнд 26 Май 2014 15:19:13  #25 №356255 
1401103153281.png

>>356240
Релейшен конечно надо слегка переделать, у тебя DevicesTable явно главная, а Objects − дочерняя. Ну и имя колонки конечно стоит переделать. На пике датасорс, с которым в комбобоксе нужное значение, однако он не предлагает вариантов. Тут уж я помочь не смогу, потому что с Winforms работал очень мало, может и сам разберешься, а может анон знает.

Аноним Пнд 26 Май 2014 15:46:41  #26 №356268 

>>356255
Боюсь с таким DataSet у меня все осталось по старому, кроме того, появился баг, что при переключении по гриду возвращается старое значение OBJECT_ID в DevicesTable. И еще, на счет дочерних и родительских таблиц. Мне всегда казалось, что родительская это откуда берем, а дочерняя - куда берем.

Аноним Пнд 26 Май 2014 15:52:57  #27 №356270 

>>356229
Если зайти на microsoft.com/xna и поискать на странице "xna", а потом "unity", то многое проясняется.

Аноним Пнд 26 Май 2014 15:57:54  #28 №356273 

>>356167
>меня наебали?
Тебя наебали еще при зачатии.

Аноним Пнд 26 Май 2014 16:11:09  #29 №356277 

>>356268
http://informatic.ugatu.ac.ru/lib/office/Proekt.htm вот неплохое пояснение.

Аноним Пнд 26 Май 2014 19:51:36  #30 №356365 

Net 4.5 надо ли? Только разобрался в Taskах, так тут опять какие-то asunc и await... Брррр

Аноним Пнд 26 Май 2014 21:57:08  #31 №356398 
1401127028544.jpg

>C# мастеров

Аноним Втр 27 Май 2014 00:43:42  #32 №356436 

Есть ли щас конторы, которые пишут winforms? И что это за приложения? Корпоративные crm и erp? Почему не веб?

Втр 27 Май 2014 02:44:07  #33 №356458 

>>356398
Так его приняли или нет на работу?

Аноним Втр 27 Май 2014 04:08:40  #34 №356479 

>>356167
гавно полное
нет тайпклассов
нет иммутабельности
система типов очень кривая и неортогональная, как и синтаксис (вместо общих методов решения проблем вам вставляют в рот какие-то убогие костыли для частных случаев (IDisposable/using, foreach, LINQ, прочая поебень))
в частности, "генерики" сделаны ещё хуже, чем в джяве™
куча мусора в стандартной библиотеке, а нужных вещей нет
под платформы кроме шиндошс нет нормальной среды разработки (как, впрочем, и рантайма)

Аноним Втр 27 Май 2014 04:09:45  #35 №356480 

>>356436
>winforms
эта хуйня устарела же давно

Втр 27 Май 2014 05:06:27  #36 №356486 

>>356479
Еще один школьник, который делит все на говно-неговно. Так было, так есть, так будет всегда.

Аноним Втр 27 Май 2014 11:23:15  #37 №356520 

>>356479
Ой, смотрите, обиженный хачкилеребенок)))))

Аноним Втр 27 Май 2014 13:30:23  #38 №356546 

>>356520

>>356486
По существу возразить нечем, то есть?

Аноним Втр 27 Май 2014 15:24:33  #39 №356588 

>>356146
Какието петушиные советы тебе дают.
Только ifы.
Трай кетч не для этого зделоли.
Трай кеч нужен не для логики а для ловли ошибок, работает медленнее чем ифы.

Аноним Втр 27 Май 2014 15:25:49  #40 №356590 

>>356588
>а для ловли ошибок
а не для ловли ошибок
fast fix
.net god

Аноним Втр 27 Май 2014 15:29:48  #41 №356594 

>>356436
>Почему не веб?
Потому что есть wpf.
>>356365
Ты юзаешь таски без асинк/эвэйт? Зачем?
Если только ради асинка, то смысла нет, он работает и на втором фреймворке.
.net god

Аноним Втр 27 Май 2014 15:37:53  #42 №356596 

>>356167
>его учить
Язык не учат, там учить нечего. Синтаксис можно вкурить за 15 минут. Задачи надо решать. Нет задач, нету опыта, нет нихуя.
ну вы понели

Аноним Втр 27 Май 2014 16:15:26  #43 №356603 

>>356594
Если я делаю приложение с большим объемом данных, которые надо обрабатывать. Как я понимаю если я буду всё это делать в одном потоке на четырехядерном проце, то три ядра будут простаивать. Соответственно что бы они не простаивали желательно распаралеливать задачи.
Собственно я пользуюсь только
System.Threading.Tasks.Task.Factory.StartNew(метод);
ну и lock в нужных местах.
Чем-то мне async и await помогут тут?
Второй фреймворк тож неподойдет, активно использую WCF и WPF.
.net любитель

Аноним Втр 27 Май 2014 16:27:36  #44 №356604 

>>356603
>lock
Не нужен. Если ты в современных приложениях юзаешь lock, значит ты точно делаешь что-то неправильно.

Аноним Втр 27 Май 2014 16:49:53  #45 №356611 

>>356603
Твой код называется fire and forget. Так как ты не можешь определить когда он кончится и что сделать после него.
Для этого как раз нужен await.
Пример: ты делаешь в таске запрос к БД, надо результат отобразить на таблице, как ты это сделаешь?

Аноним Втр 27 Май 2014 16:53:10  #46 №356612 

>>356611
Дальше, async/await в основном придумали для i/o операций.
Для cpu bound есть например PLINQ.
Но тут уже надо смотреть по ситуации.
всё тот же god

Аноним Втр 27 Май 2014 16:57:29  #47 №356615 

>>356612
>>356603
И да, использования lock'а таки признак плохой архитектуры.
Лучше их избегать, можешь задать вопрос с примером, объясним как переделать код.
783188

Аноним Втр 27 Май 2014 17:01:47  #48 №356617 

>>356270
Лол, они не справились с конкуренцией?
Мне почему-то казалось что хна это для 2д, а юнити для всякой графновой йобы. Юнити дает те же возможности в бесплатной версии?

Аноним Втр 27 Май 2014 17:04:36  #49 №356620 

>>356604
>>356615
А чем лучше заменить лок? Вот допустим у меня есть какой-нибудь набор данных, и его постоянно читают/пишут разные потоки. Я в джяве использую ReentrantReadWriteLock, что лучше? АтомикРеференс + иммутабельность? Или как?

Втр 27 Май 2014 17:12:58  #50 №356624 

Что только бедняши не придумают, лишь бы Erlang не учить.

Аноним Втр 27 Май 2014 17:13:30  #51 №356625 

>>356624
Ой, смотрите, петух закукарекал))))

Втр 27 Май 2014 17:25:35  #52 №356631 

>>356625
Ну что же вы до сих пор в конкурентное программирование не умеете?

Вам дали акторов, промиз/фьючеры, STM, каналы, нет, блять, не хочу, хочу ReentrantReadWriteLock. Блокировки какие-то, пиздец, перфокарточные технологии.

Аноним Втр 27 Май 2014 17:32:25  #53 №356635 

>>356631
Давай представим что у тебя есть допустим лист стопицот мильенов элементов, который занимает гиг памяти. Ты его будешь копировать через акторов?

Аноним Втр 27 Май 2014 17:40:01  #54 №356636 

>>356620
Использовать потокобезопасные коллекции, например:
http://msdn.microsoft.com/en-us/library/dd381779(v=vs.110).aspx
.net god

Аноним Втр 27 Май 2014 17:44:57  #55 №356639 

>>356636
Это которые копируются при изменении? Они же сожрут всю память.

Аноним Втр 27 Май 2014 17:47:38  #56 №356641 

>>356615
В одной из популярных реализаций синглтона не бейте, лучше обоссыте используется lock, куда ж его там деть.

Аноним Втр 27 Май 2014 17:50:06  #57 №356642 

>>356639
>всю память.
НИНУЖНО
.net god

Аноним Втр 27 Май 2014 17:52:10  #58 №356644 

>>356642
Так оно и время сожрет
>When we say “lock-free,” we mean that locks (in .NET, traditional mutual exclusion locks are available via the System.Threading.Monitor class, typically via the C# “lock” keyword or the Visual Basic “SyncLock” keyword) have been avoided by using memory barriers and compare-and-swap CPU instructions (in .NET, “CAS” operations are available via the System.Threading.Interlocked class).
>CAS
>ебучий атомикреференс

Втр 27 Май 2014 18:37:52  #59 №356666 

>>356639
> копируются при изменении
еблан

Аноним Втр 27 Май 2014 18:50:38  #60 №356673 

>>356666
Без копий не получится, допустим, итерация параллельно с удалением.

Аноним Втр 27 Май 2014 18:51:32  #61 №356675 

>>356641
>синглтона
Не нужен.

Аноним Втр 27 Май 2014 19:45:07  #62 №356704 

>>356615
>Лучше их избегать, можешь задать вопрос с примером, объясним как переделать код.
Хорошо, вот пример. Есть большая коллекция объектов.
В одном потоке я через цикл foreach перебираю все объекты и выполняю в каждом некоторый метод.
Тем временем через WCF клиент хочет выполнить некоторую операцию, которая может привести к изменению числа членов коллекции. Это априори будет другой поток. Если это выполнить то цикл foreach вылетит с исключением.
В первом потоке я делаю lock на коллекцию и свободно выполняю с ней цикл foreach. А второй поток также пытается залочить коллекцию, но сможет это сделать только когда метод в первом потоке снимет lock.
Что тут не так?

Аноним Втр 27 Май 2014 19:59:49  #63 №356715 

Копия + Interlocked.Exchange, не?

Аноним Втр 27 Май 2014 20:54:27  #64 №356746 

>>356704
Например http://msdn.microsoft.com/en-us/library/dd267312.aspx
Ты спросишь чем хуже lock. Тут однозначного ответа как бы нет. Но для большинства задач подходит то что по ссылке.
Тебе дали инструмент, чтобы ты не писал свои велосипеды.
Да, я на 100% уверен, что ты напишешь свой велосипед с локами, который будет работать быстрее, но только на твоих примерах.

Аноним Втр 27 Май 2014 21:04:38  #65 №356751 

>>356746
Эта хуйня будет просто блокировать при записи. При чем если будет 100 добавлений, то 100 раз будет ждать блокировки, вместо одной поверх. И итерацию все равно придется синхронизировать отдельно.

Аноним Втр 27 Май 2014 21:16:20  #66 №356755 

>>356751
Кинь свой код, если ты тот анон.

Аноним Втр 27 Май 2014 23:03:27  #67 №356813 

Короче понятно.
lock лучше не использовать, поскольку он может привести к дедлоку. Для решения данных ситуаций насоздавали кучу способов, которые невызывают дедлок, но каждый с ограниченной областью применения. Учить их все с нюансами, или использовать базовые возможности - дело личное. Ситуация как с goto, можно использовать, можно нет, но реально программы состоят только из if, goto и присваиваний.
Короче банальностей написал, пойду спать :)

Аноним Втр 27 Май 2014 23:14:01  #68 №356820 

>>356813
>реально программы состоят только из if, goto и присваиваний
Ну это у кого как. У некоторых программы состоят только из чистых функций и паттерн-матчинга.

Аноним Втр 27 Май 2014 23:39:37  #69 №356838 

>>356146
Откуда значения-то, блять? Схуев ли они могут быть недопустимыми? У тебя что программа кривая, что она выдает кривые данные?
А если их человек вводит, то в интерфейса и делай валидацию. Но учти, что допустимость должна определять модель, а не представление.

Аноним Втр 27 Май 2014 23:44:05  #70 №356842 

>>356172
>операционки, микроконтроллеры
>неприменим
Ну ты и пиздун.
Раз: http://en.wikipedia.org/wiki/Singularity_%28operating_system%29
Два: http://ru.wikipedia.org/wiki/.NET_Micro_Framework и

Аноним Срд 28 Май 2014 00:30:05  #71 №356858 

>.NET Micro framework
Интересно как там сделана настройка памяти и включение процессора на шарпе. И как сделана работа с программаторами? Они хоть JTAGовские? Их сама майкрософт выпускает?
Да и это же микропроцессор, там ехал указатель через указатель, а это кидает в жопу всю идею менеджируемой среды со сборщиком мусора. В общем реквестирую мнение знающего анона.

Аноним Срд 28 Май 2014 02:10:24  #72 №356909 

>>356820
Открой асма своей функциональщины и охуей.

Аноним Срд 28 Май 2014 06:46:57  #73 №356930 

>>356838
>Откуда значения-то, блять? Схуев ли они могут быть недопустимыми? У тебя что программа кривая, что она выдает кривые данные?
А если их человек вводит, то в интерфейса и делай валидацию. Но учти, что допустимость должна определять модель, а не представление.
Делаю клиент-серверное приложение. Коммуникация на основе WCF. На клиенте естественно выполняется валидация, но всё-таки считаю нужным предусмотреть возможность перехвата сообщений, модификации клиента или ещё какой хуйни, так что данные также проходят валидацию и на сервере.

Аноним Срд 28 Май 2014 08:03:54  #74 №356934 

>>356930
Сколько раз тебе объяснять?
Exceptions are basically non-local goto statements with all the consequences of the latter. Using exceptions for flow control violates a principle of least astonishment, make programs hard to read (remember that programs are written for programmers first).

Moreover, this is not what compiler vendors expect. They expect exceptions to be thrown rarely, and they usually let the throw code be quite inefficient. Throwing exceptions is one of the most expensive operations in .NET.

Аноним Срд 28 Май 2014 10:49:08  #75 №356960 

>>356930
Тут два варианта. Либо забить и пусть эксепшен прилетает прямо клиенту, WCF это умеет. А если ты хочешь скрыть интимные подробности эксепшена от него, то тебе его где-то надо перехватить и перекинуть новый, менее подробный. Не слушай мудаков, которые говорят, что тут не надо кидать эксепшены. Если кто-то передал невалидные данные на вход - это самый подходящий повод швырнуть в него исключение.

Аноним Срд 28 Май 2014 10:55:27  #76 №356962 

>>356960
Но если невалидные данные очень уж вероятны, то их иногда можно как бы включить в объектную модель и считать их валидными в каком-то смысле. И тогда уже можно не кидать исключения, а предусмотреть коды ошибок или еще что.

Аноним Срд 28 Май 2014 11:02:21  #77 №356965 
1401260541383.jpg

>>356962
>предусмотреть коды ошибок

Аноним Срд 28 Май 2014 21:32:29  #78 №357172 
1401298349022.gif

Анон, посоветуй бесплатную или опенсорс либу для WPF, которая позволяет рендерить формулы типа пикрелейтеда. Либа нужна легковесная, никакого win32api, webbrowserов и т.д., нужно нарисовать полторы формулы.

Аноним Срд 28 Май 2014 23:39:22  #79 №357214 
1401305962298.png

>>357172
Посмотри
https://code.google.com/p/tex-expressions-visualizer/
https://mathview.codeplex.com/

Аноним Чтв 29 Май 2014 03:38:48  #80 №357270 

>>357172
>легковесная
>никакого win32api
kek

Аноним Чтв 29 Май 2014 04:20:50  #81 №357278 

>>357172
LaTeX тебе нужен. Анон выше уже посоветовал

Аноним Чтв 29 Май 2014 10:20:55  #82 №357294 

>>357214
>>357278
Спасибо, понял что мне проще набросать свой юзерконтрол, так как формулы однотипные.
Следующий вопрос: есть чарт контрол лучше чем Dynamic Data Display? Имеется ввиду скорость работы, какие то дополнительные фичи, ну и чтоб бесплатно было?

Аноним Птн 30 Май 2014 13:25:02  #83 №357636 

>>356751
Для этого есть семафоры, lock это самое нубское решение.

Аноним Птн 30 Май 2014 13:26:51  #84 №357637 

>>357636
Просто надо писать только локфри
>семафоры
Впрочем, для быдла пойдет.

Аноним Птн 30 Май 2014 13:40:41  #85 №357640 

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

Птн 30 Май 2014 13:56:50  #86 №357643 

>>357640
>Конечно тебе на пыхе легко пистаь локфри
лол мою мать

--мм

Аноним Птн 30 Май 2014 14:49:41  #87 №357657 

>>357643
И правда же, именно его мать.
Согласен.
^_^

Аноним Птн 30 Май 2014 15:03:28  #88 №357664 

>>357643
зачем ты подписываешься модератором, если ты не модератор?

Аноним Птн 30 Май 2014 15:15:00  #89 №357668 

>>357664
 
предупреждение за офтоп
 
--мм

Аноним Птн 30 Май 2014 17:33:14  #90 №357690 

>>357668
где же лолка

--мм

Аноним Птн 30 Май 2014 17:43:53  #91 №357693 

>>356398
Обзмеилась.

Аноним Птн 30 Май 2014 17:56:35  #92 №357698 

>>357690
 
сейчас забаню за подпись
 
--мм

Аноним Птн 30 Май 2014 18:12:56  #93 №357704 

>>357698
))

Птн 30 Май 2014 18:27:04  #94 №357710 

>>357698

или пойду пёрну в лужу

--мм

Аноним Срд 04 Июн 2014 00:47:33  #95 №358971 

Ананасыч, поясни за .NET native compiler.
http://msdn.microsoft.com/en-US/vstudio/dotnetnative
Это только для ВинФона или и на десктоп идет? Я правильно понимаю, что приложение так же будет анально привязано к .NET Framework и без него не запустится?

Аноним Срд 04 Июн 2014 01:00:37  #96 №358972 

>>358971
>и на десктоп идет
да
>анально привязано к .NET Framework
нет

Аноним Срд 04 Июн 2014 06:26:26  #97 №359007 
1401848786408.jpg

>анально привязано к .NET Framework
>нет
еее

Аноним Срд 04 Июн 2014 07:57:45  #98 №359010 

>>358971
>будет анально привязано к .NET
Будет.

Аноним Срд 04 Июн 2014 08:05:31  #99 №359011 

Анончики, а кидайте сюда линки на свой сишарп код, а мы посмотрим, как боги нынче пишут?

Аноним Срд 04 Июн 2014 18:18:44  #100 №359139 

>>358971
Кстати, его можно пощупать без смс и регистрации?

Аноним Срд 04 Июн 2014 18:33:18  #101 №359140 

>>356145
Что читать, чтобы быстрее перекатиться с плюсов?

Аноним Срд 04 Июн 2014 18:43:07  #102 №359143 

>>359140
Троелсена, C# 5.0

Аноним Срд 04 Июн 2014 20:20:29  #103 №359167 

>>356234
Есть же MonoGame, кроссплатформенная реализация ХНЫ. Правда, до сих пор не впилили контент-пайплайн, я уже заебался с этим пердолингом с апереносом контента, но ничего, есть у кого-то и проблемы похуже.

Аноним Птн 06 Июн 2014 12:29:11  #104 №359694 

Натоны, как устроиться C#-джуниором, где смотреть вакансии? 2-курс-кун, город 1кк населения.

Аноним Птн 06 Июн 2014 14:49:35  #105 №359709 
1402051775619.jpg

>>359011 https://github.com/tghnn/existence/blob/master/shard0/shard0.cs

Аноним Птн 06 Июн 2014 16:04:25  #106 №359718 
1402056265914.png

>>359709
>4868 lines

Аноним Птн 06 Июн 2014 21:14:08  #107 №359778 

Анончик, нужна помощь. Взялся пилить прогу для личных нужд (работа с БД). Остановился на c# + sqlite. Взял образец из интернетов, все завелось с пол оборота. Радости мей нет предела, я боготворю Майкрософт. Приношу прогу на работу, и получаю огромный болт. Прога ругается на отсутствие dll, которая лежит рядом с екзешником. Докидываю еще dllок (SQLite.NET.dll, Sqlite3.DLL), запускаю - получаю ошибку database error и shema error. Прихожу домой, запускаю - все работает. В system32 этих либ нет. В чем подвох?

Аноним Птн 06 Июн 2014 21:22:38  #108 №359780 

>>359778
ВНЕЗАПНО в SysWOW64 лежала нужная dll, а dll из примера ругалась на всех, хотя пример запускала

Аноним Птн 06 Июн 2014 21:22:45  #109 №359781 

>>359778
Какой смысл пользоваться левой СУБД, когда есть скуэл-сервер от майкрософта?

Аноним Птн 06 Июн 2014 21:30:39  #110 №359784 

>>359781
планирую в будущем сделать многопользовательский режим в виде вебсервиса на php+sqlite, и тогда существующую базу проще подключить, чем переганять из ms sql в mysql

Аноним Птн 06 Июн 2014 21:44:28  #111 №359788 

>>359778
дотнетовские сборки лежат в GACе, а не в system32.

Аноним Суб 07 Июн 2014 11:19:48  #112 №359881 
1402125588058.png

Что-то у меня на идеоне не компилируется код из тырнет-урока. Может можно где скачать программу для компиляции на шарпе, чтобы работала бесплатно и без вирусов?
Алсо, кидайте скайпики, кто тоже учит, я нуб.

Аноним Суб 07 Июн 2014 13:26:44  #113 №359903 

>>359881
Вручную перепечатай.

Аноним Суб 07 Июн 2014 14:39:42  #114 №359922 

>>359881
онлайн компилятор? капец наркоман. visual studio express

Аноним Вск 08 Июн 2014 05:20:05  #115 №360030 

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

Вск 08 Июн 2014 05:46:26  #116 №360031 

>>359709
>281-283 строка
Ты ебанутый?

Вск 08 Июн 2014 05:48:20  #117 №360032 

>>360030
Толсто.

Аноним Вск 08 Июн 2014 07:58:55  #118 №360036 
1402199935279.jpg

Загружаю в datagrid из xml'ки, как убрать фон datagrid'a? Хочу, чтобы отображалось равномерно.

Аноним Пнд 09 Июн 2014 09:33:12  #119 №360318 

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

Аноним Пнд 09 Июн 2014 09:36:08  #120 №360319 

>>360036
Толстячок, это опять ты?

Аноним Пнд 09 Июн 2014 09:57:29  #121 №360325 

>>360318
Кажется ты не очень умный.
http://somecodesnippets.blogspot.ru/2012/04/windows-form-combobox-text-filtering.html

Аноним Пнд 09 Июн 2014 10:06:37  #122 №360329 

>>360325
Пример подходит для простого комбобокса, а мне нужен DataGridViewComboBoxColumn, там есть просто AutoComplete, но нельзя видеть то, что ты ввел.

Аноним Пнд 09 Июн 2014 10:25:36  #123 №360332 

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

Аноним Пнд 09 Июн 2014 10:29:10  #124 №360334 

>>360332
Ты хочешь изменить просто цвет? или чтобы колонки у тебя были на всю длинну датагридвью?

Аноним Пнд 09 Июн 2014 10:50:28  #125 №360337 

>>360334
Да, колонки на всю растянуть.

Аноним Пнд 09 Июн 2014 10:54:53  #126 №360338 

>>360337
Тогда зайди во вкладку редактирования колонок и выстави нужную ширину или AutoSizeMode.

Аноним Пнд 09 Июн 2014 11:11:40  #127 №360344 

>>360329
Ну ты же можешь написать свой DataGridViewColumn и DataGridViewCell с этим хитрым комбобокосом.

Аноним Пнд 09 Июн 2014 11:33:48  #128 №360345 

>>360031 А что такое. Стандартные константы в шарпе - низкой точности.

Аноним Пнд 09 Июн 2014 11:38:43  #129 №360346 

>>360345
LOL. Зачем тебе такая точность?

Аноним Пнд 09 Июн 2014 11:48:24  #130 №360350 

>>360338
Вы лучше б сказали как автоматическую ширину сделать у колонок ListView/GridView. Или хотя бы готовый контрол скинули

Аноним Пнд 09 Июн 2014 13:23:44  #131 №360370 

Суп Шарперы, как найти фриланс?

Аноним Втр 10 Июн 2014 16:10:20  #132 №360611 

>>360370
А что ты собрался фрилансить на нем?

Аноним Втр 10 Июн 2014 16:19:51  #133 №360612 

>>360345
>>360346
Такая точность не нужна для известных мне применений

Аноним Втр 10 Июн 2014 20:16:43  #134 №360673 

Кто что думает от Немерле?

Аноним Втр 10 Июн 2014 22:41:11  #135 №360752 

>>360611
Какое отношение к фрилансерам, если они пидоры? Вот скажу я заказчику, прямо в лицо:я — пидор. Он от меня отвернется или будет толерантным и учитывать только мои профессиональные качества.

Аноним Срд 11 Июн 2014 00:31:48  #136 №360775 

>>360752
Можешь найти себе ПОСТОЯННЫХ КЛИЕНТОВ

Аноним Срд 11 Июн 2014 01:50:49  #137 №360789 

Шарпанон, как правильно кидать исключения?
Пусть у нас есть некоторый метод (A), который принимает три параметра и вызывает другой метод (B), который принимает часть параметров метода A.
В методе B аргументы проверяются на правильность, и выкидывается ArgumentException, если что-нибудь не так.
Вопрос: Нужно ли в меотде A проверять параметры, передаваемые в B?

Аноним Срд 11 Июн 2014 02:28:58  #138 №360800 

>>360789
Думаю, проверять надо только в одном месте - во внутреннем методе. Особенно если это public метод и/или он используется не только в методе A. Проверять эти параметры в А можно, если там они используются (помимо передачи в другие методы).

Срд 11 Июн 2014 09:51:27  #139 №360814 

>>360752
Если ты говоришь о таких вещах заказчику, то ты поехавшая вниманиеблядь и от тебя кто угодно отвернется.

Аноним Срд 11 Июн 2014 11:01:48  #140 №360823 
1402470108802.gif

Боги, подскажите утенку, как сделать foreach для ячеек столбца datagrid, обращаясь к нему по имени.

Аноним Срд 11 Июн 2014 13:15:15  #141 №360844 

>>360823
Я понял, что никак.

Алсо, может, шарпоконфу поднять? Задавать вопросы разные туда, думаю, удобнее будет.

Аноним Срд 11 Июн 2014 15:15:01  #142 №360881 

>>360844
Бля вы вообще в ирк или джабир вылазите? Я знаю, что у молодого поколения модно скупе, но не думал, что так все плохо.
Все конфочки уже есть и давно

Аноним Срд 11 Июн 2014 16:25:31  #143 №360897 

>>360881
>IIRC
>2014
http://youtu.be/eJ6uRohdv4Q?t=3m41s

Аноним Чтв 12 Июн 2014 13:05:46  #144 №361065 
1402563946291.jpg

private void readXmlBtn_Click(object sender, EventArgs e)
{
formatsGrid.DataSource = null;
formatsGrid.Rows.Clear(); //не очищает

formatsGrid.DataSource = mlToDataSet(@"\cfg\formats.xml");
formatsGrid.DataMember = "item";
}


Аноним Чтв 12 Июн 2014 18:30:03  #145 №361103 

>>360844
>шарпоконфу
хотет
джаберы нинужны

Аноним Чтв 12 Июн 2014 20:31:26  #146 №361128 

>>361103
Подскажи, в скайпе можно отключить звуковое уведомление для входящих в конфе, но оставить для диалогов?

Аноним Чтв 12 Июн 2014 20:37:00  #147 №361133 

>>361128
Да.

Аноним Чтв 12 Июн 2014 21:56:04  #148 №361162 

>>361133
Как?

Аноним Чтв 12 Июн 2014 22:12:49  #149 №361169 

>>361162
галочку соответствующую снять

Аноним Птн 13 Июн 2014 00:58:54  #150 №361180 

>>361128
Нет понятия диалога в скайпе, просто сигналы о сообщениях для конфы выключить - /alertsoff

Аноним Птн 13 Июн 2014 02:31:59  #151 №361196 

>>361169
Можешь скрином показать, где именно?
>>361180
Я имел в виду понятие диалога в русском языке, разговор двух персон. Спасибо, попробую.

Аноним Птн 13 Июн 2014 09:31:04  #152 №361216 

>>361196
Создай тред лучше, кто-нибудь да подскажет, базарю.

Аноним Птн 13 Июн 2014 13:07:24  #153 №361254 

>>361216 Вообще, шарпоконфа, это слишком узко, а вот /пр конфа, это было бы неплохо.

Аноним Птн 13 Июн 2014 15:03:20  #154 №361291 

>>361254
Тебе срачей на доске мало?

Аноним Птн 13 Июн 2014 15:29:21  #155 №361303 

>>361254
[email protected]

Аноним Птн 13 Июн 2014 15:53:11  #156 №361314 

>>361291 люблю риалтайм тралевание
>>361303 уж лучше вы к нам
Если запилите /зк скайпоконфу, с меня добавление в конфу ДИМЫ

Аноним Птн 13 Июн 2014 16:29:45  #157 №361320 

>>361314
ахаха иди отсоси своему диме

Аноним Птн 13 Июн 2014 16:37:02  #158 №361321 

>>361320 Хаз? Индекс?

Аноним Суб 14 Июн 2014 15:25:23  #159 №361513 
1402745123203.png

Давайте соберемся.
skype:inspctr.cat?chat

Аноним Пнд 16 Июн 2014 23:01:31  #160 №362137 

Можно и оставить в классе наследнике пустой конструктор? :
class Dude : Bro
{
public Dude (string name) : base (name){}
}

Или как ещё можно решить вопрос?
Спасибо заранее

Аноним Пнд 16 Июн 2014 23:39:51  #161 №362149 
1402947591754.jpg

>>362137

Аноним Втр 17 Июн 2014 06:58:22  #162 №362194 

>>362137
Я чет не понял кто тебе запрещает оставлять в наследнике пустой конструктор? Аллах?

Аноним Втр 17 Июн 2014 12:57:33  #163 №362225 

>>362194
сорри, бадун был

Аноним Втр 17 Июн 2014 14:02:24  #164 №362234 

Не могу осилить Dapper.Net. Суть проблемы: есть одна база, она MySql и у неё есть немного хранимых процедур, которые надо дёргать снаружи.
Соответственно, у меня в коде написано что-то вроде:
>await connection.ExecuteAsync(
> "DoYourMom",
> new { nigger },
> commandType: CommandType.StoredProcedure
>);
Проблема в том, что процедура вообще не исполняется и не кидает Exception. Проблема не в коде на стороне SQL — вызов руками работает. Более того, когда это ещё работало на EF, вызовы работали нормально(сейчас открыл ту версию сорцов — работает).

Аноним Суб 21 Июн 2014 19:33:04  #165 №363505 
1403364784794.jpg

Сап, ананасы. Заинтересовала такая задача: есть строковая переменная и цикл из трех итераций. В каждой итерации вводим эту строку с клавиатуры и тут же создаем .txt-файл с таким же именем. Пробовал .ToString()- не получается. Поможете?

Аноним Суб 21 Июн 2014 20:20:23  #166 №363520 

>>363505
System.IO.File.Create("C:\\filename.txt");

Аноним Суб 21 Июн 2014 20:36:15  #167 №363524 

>>363520
Да, но как строку с именем, скажем, string a = "asd"; засунуть в filename? Чтобы filename.txt стало asd.txt?

Аноним Суб 21 Июн 2014 20:49:41  #168 №363526 

>>363524
Неужели в в C# нету конкатенации?

Аноним Суб 21 Июн 2014 20:53:30  #169 №363528 

>>363526
Есть. Но она вроде применима только к двум строкам, не? Еще раз: вводим с клавы строканейм, и тут же создается файл строканейм.txt.

Аноним Суб 21 Июн 2014 21:36:13  #170 №363545 
1403372173229.jpg

Привет, котятки. Надо в DLL откорректировать пару переменных. Делаю все с помощью Reflector и Reflexil, и у меня нихуя не получается - выдает ошибку CS1748. Я нихуя не понимат, как мне ее крякнуть

Аноним Суб 21 Июн 2014 22:23:26  #171 №363553 

>>363528
Ты очень тупой школьник.
Возьми код и не приходи сюда более.

        static void Main(string[] args)
{
for (int i = 0; i < 3; ++i)
{
Console.WriteLine("Input filename:");
string filename = Console.ReadLine();
System.IO.File.Create(@"C:\" + filename);
}
Console.WriteLine("Ur shit was created, enjoy!");
Console.ReadKey();
}
Аноним Суб 21 Июн 2014 22:28:50  #172 №363554 

>>363528
Ну загоняй название файла в переменную и конкатенируй, хуле такого то?

Аноним Суб 21 Июн 2014 22:30:53  #173 №363555 
1403375453917.jpg

>>363545

Не удается найти тип взаимодействия, соответствующий внедренному типу взаимодействия "Microsoft.Office.Interop.MSProject.Assignment". Возможно, отсутствует ссылка на сборку.

Вот ошибка. В
#region " Referenced assemblies "
...
// - Microsoft.Office.Interop.MSProject v15.0.0.0
...
Аноним Вск 22 Июн 2014 09:55:52  #174 №363622 

Спасибо, то, что надо

Аноним Вск 22 Июн 2014 09:58:21  #175 №363623 

>>363553
Спасибо, то что надо

Аноним Вск 22 Июн 2014 10:30:01  #176 №363629 

>>363623
Пиздец ты тупой, ебана в рот))

Аноним Вск 22 Июн 2014 10:39:14  #177 №363631 

>>363629
Ну блять, пытался аналогично сделать со StreamWriter-ом, нихуя не выходило. И да, я это делал в дебиане, может, не выходило, потому что не указывал путь. Я ж привык, что все файлы создаются по умолчанию в /home/username

Аноним Вск 22 Июн 2014 19:01:35  #178 №363741 

>>363631
Сишарп и Дебиан? Я в ахуе с тебя

Аноним Вск 22 Июн 2014 22:41:32  #179 №363818 

>>363741
Чому? Gedit и Dmcs, всех делов

Аноним Пнд 23 Июн 2014 03:34:25  #180 №363901 
1403480065027.jpg

>>356145
ПЛАТИНОВЫЙ ВОПРОС!

Хочу писать в консоль из нескольких потоков в цвете.
Не нашел ничего лучше чем:


lock (logLocker)
{
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("BLABLABLA");
Console.ForegroundColor = ConsoleColor.Gray;
}


И эта хуйня делает РАК моему приложению. Это же пиздец блокировать такое говно.
Можно как-то передать цвета спец символами вместе с текстом?
Или подругому обойти это ограничение?
Почему ради всех святых в сисярпе нельзя вместе с текстом передавать его цвет?
Аноним Пнд 23 Июн 2014 06:37:49  #181 №363924 

>>363901
Это лучшее, что можно сделать стандартными средствами языка. Можешь поискать какую-нибудь библиотчеку, которая делает лучше или не писать в консоль напрямую - сделать объект-буфер, говоришь ему что и каким цветом вывести, он выводит все в порядке получения, блокировки не нужны.

Аноним Пнд 23 Июн 2014 08:04:28  #182 №363934 

>>363924
>блокировки не нужны
Как же без них обойтись?
Добавление записи в этот буфер все равно же будет лочить.

И нужен будет отдельный поток чтобы записи из него собственно в консоль кормить.

Если я правильно понял. Это еще один лок добавит.

Аноним Пнд 23 Июн 2014 08:14:04  #183 №363936 

>>363934
Ну ы смысле не нужно будет куждую запись в консоль в лок вручную оборачивать, это будет делаться буфером. И производительность может вырасти, потому что лочить будем не медленный вывод в консоль, а добавление текста в очередь - потоки выполняющие реальную работы будут меньше времени простаивать.

Аноним Пнд 23 Июн 2014 08:23:39  #184 №363938 

>>363936
Угу.
Спасибо.

Аноним Пнд 23 Июн 2014 10:58:43  #185 №363955 

>>363901
Console.WriteLine("\033[32mPSHHH PSHHH\033[0m");

Аноним Пнд 23 Июн 2014 16:34:06  #186 №364063 

>>363955
Не работает.

Аноним Пнд 23 Июн 2014 19:12:53  #187 №364100 
1403536373806.png

>>364063
Эмулятор терминал не поддерживает эти управляющие последовательности.
Попробуй костыль https://github.com/jeremejevs/cmdcolor

Аноним Чтв 26 Июн 2014 09:41:46  #188 №364777 

Господа, в гейдеве одни тролли, так что вопрос к вам.

Есть ли годные движки/фреймворки для 2D гейдева под C#?

Знаю что есть моногейм, но хотелось бы опций для выбора. Видел байндинг для sfml, но мало примеров и коммьюинити вялое. Про Бнити тооже вопрос, там поддержку 2D вроде как ввели, но хуй его знает.

Си Шарп ковыряю для себя, так что желательно чтобы был и не конструктор, но и не пришлсь писать обертки под OpenGl.

Есть еще что-нибудь что я упустил?

Аноним Чтв 26 Июн 2014 13:01:56  #189 №364810 

>>364777
Unity?

Аноним Чтв 26 Июн 2014 13:39:38  #190 №364816 

>>364810
Его я тоже упомянул, но как

>Бнити

Лол, случайно вышло.

Аноним Чтв 26 Июн 2014 14:33:49  #191 №364827 

>>364816
>там поддержку 2D вроде как ввели, но хуй его знает
Без подъебов и троллинга, учился в университетах? ИЛи школьник?

Аноним Чтв 26 Июн 2014 14:56:43  #192 №364832 

>>364827

Учился, закончил (гуманитарий, ага) работаю офисным планктоном, мозги высушивает пиздец, поэтому копаю Computer Science, всегда в компах ковырялся, хуй знает почему на гуманитария пошел.

А нет, знаю, мне в 2008 ЭГЕ по математике ввели, непонятно было, где я окажусь в тех. универе или в армии.

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

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

Аноним Чтв 26 Июн 2014 15:46:36  #193 №364861 

>>356145
Подскажите библиотеку для работы с архивами, нормально работающую в условиях task-based pattern и умеющую в распаковку sfx.

Аноним Втр 01 Июл 2014 08:27:56  #194 №366220 

Подскажите, что делать, если при смене языка программа падает с system.globalization.culturenotfoundexception?

Аноним Втр 01 Июл 2014 10:39:26  #195 №366232 

>>364861
Вроде в .net 4.5 изкаробки есть такая возможность, не?

Аноним Втр 01 Июл 2014 11:00:00  #196 №366236 

Исходники гопнета — это пездецц... Писано копчеными индусами-оутсорсерами на отъебись.

http://referencesource.microsoft.com/#System.ServiceModel

Аноним Втр 01 Июл 2014 21:03:53  #197 №366396 

Объясните, как работает данная конструкция?
Есть такие вот классы:

    public abstract class A
{
public virtual string Print() { return "A"; }
}

public class B : A
{
public override string Print() { return "B"; }
}

public class C : B
{
public new string Print() { return "C"; }
}


1. Что означает
A ac = new C();

Разве можно создавать экземляр абстрактного класса? И в чем вообще смысл создавать объект одного класса, а инициализировать его другим классом?

2. Почему
Console.WriteLine(ac.Print());
выведет "В" ? Ведь инициализируется объектом класса С, а там метод Print переопределен.
Аноним Втр 01 Июл 2014 23:59:57  #198 №366460 

Зачем нужен C#, если можно спокойно писать под любую плотформу на JS?

Аноним Срд 02 Июл 2014 03:42:49  #199 №366506 
1404258169378.jpg

>>366396
1) Избегай использования абстрактных классов.

2)
>как работает данная конструкция?
Тебе стоит погуглить как работает наследование в сисярпе. Это серьезная и сложная хуйня. Не для ответа в один пост.

3)
>1. Что означает
>A ac = new C();
Означает?
Ну хуй его знает, спроси у автора кода.
Мне кажется это какой-то учебный пример.
А может знак легких денег и казенного дома?

>Разве можно создавать экземляр абстрактного класса?
Нельзя

>И в чем вообще смысл создавать объект одного класса, а инициализировать его другим классом?
>создавать объект одного класса, а инициализировать его другим классом?
ЧТО?
MyFCKNGClass obj = new MyFCKNGClass(); //создаем объект одного класса
MyTWSTClass defrintobj = new MyTWSTClass(obj); //создаем объект другого класса и инициализируем его объектом первого класса

В чем смысл? Ну блядь, ну ебана, там параметры передать, я ебу, может эти объекты похожи как-то нe блядь чтобы не писать блядь матню сука = new MyTWSTClass(obj.a, obj.b, obj.c, obj.fuckmygrany, abg.getIsOpFaggot());

4)
>Почему
>Console.WriteLine(ac.Print());
>выведет "В" ?

Потому, что в классе C метод Print из класса A не переопределен, таким образом будет вызван метод из класса B, метод Print из класса С будет вызван только если мы будем обращаться к ac как к классу С.
Но мы обращаемся как к абстрактному классу А, поэтому вызывается переопределенный метод из класса В.

5)
>И в чем вообще смысл создавать объект одного класса, а инициализировать его другим классом?
Полиморфизм
Иди ка подучи теорию.

Аноним Срд 02 Июл 2014 09:27:16  #200 №366519 

Посоны поясните за сетевые запросы в Windows Phone 8.

Сам я JavaБоярин, задачу поставили на винде штуку одну написать.

В общем есть один API. Я шлю на него запросы, в ответ получаю JSON - все таки стандартно.

В Java у меня для этого есть либа, которая по-сути является оберткой к запросам ( имеет методы и модели данных ).

Начал на шарпе писать подобную штуку и столкнулся с бедой принудительной многопоточности. В идеале должно выглядеть так :
String API.getXXX(params), т.е. возвращать строку, которую я превращу в объект.

Но блять ебаный дотнет не позволяет сделать это так просто.

Для того, чтобы передать в запрос post параметры в HttpWebRequest нужно вызвать асинхронный метод, который потом вызовет еще один асинхронный метод блять ( инфа с гугля ). Из-за этого выходит что нужно использовать наблюдателя и события. Но нахуя это нужно для такой простой задачи?! Запрос сделал - строку вернул. Все.

Сейчас использую страшный костыль -
string response = "atata";

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(API_URL + url + "?b=" + blob);
webRequest.Method = "GET";

IAsyncResult res = webRequest.BeginGetResponse(null, webRequest);

while ( ! webRequest.HaveResponse)
{
try
{
WebResponse resp = webRequest.EndGetResponse(res);
StreamReader reader = new StreamReader(resp.GetResponseStream());
response = reader.ReadToEnd();
int i = 1;
}
catch (WebException e)
{
response = "err";
}

}
//response = webRequest.RequestUri.ToString();
return response;

Т.е. фактически я отказался от POST и хуярю GET запросом.

Как это сделать правильно?

Аноним Срд 02 Июл 2014 09:54:51  #201 №366525 

>>366519
> Т.е. фактически я отказался от POST и хуярю GET запросом.
ну и мудак.
Людям дали таски, async\await, backgroundworker. Нет, блять, ты хочешь жрать говно.

Аноним Срд 02 Июл 2014 10:43:40  #202 №366536 

>>366525
В Java я пользуюсь ExecutorService'ами и Future'ами. А тут хуйня в том что в WP HttpWebRequest тупо не дает сделать запрос СИНХРОННО. Я и так планировал открывать их в отличном от UI потоке, лол.

Аноним Срд 02 Июл 2014 10:44:26  #203 №366537 

>>366396
> Объясните, как работает данная конструкция?

Чтобы понять, как оно работает, здесь нужно углубиться в байтоебство. Гугли про VMT (таблицу виртуальных методов) в C++, в C# и Java она устроена аналогично. А я расскажу вкратце.
VMT - это такой массив, который хранит адреса методов (функций). Когда ты делаешь вызов obj.mtd(a, b, c) - компилятор преобразует его примерно в такой код:
funcaddr = obj->VMT[mtd];
funcaddr(obj, a, b, c);
Статические и приватные методы в VMT не включаются (а также нестатические неприватные методы, объявленные без abstract/virtual), для них генерируется обычный вызов функции: ClassName_mth(a, b, c), который работает немного быстрее.
Если метод абстрактный то на месте адреса в VMT хранится null, такой метод, конечно, вызвать нельзя, потому и нельзя создавать объекты абстрактного класса.
При наследовании для нового класса создается новая VMT: старая VMT базового класса + адреса новых методов + замена адресов, если какой-то старый метод определяется (override в C#). Ну и в C# есть еще одна фишка, сокрытие методов - можно не переопределять старый метод, а добавить новый, но имеющий такое же имя, для этого используется new вместо override.

> 1. Что означает A ac = new C();
> Разве можно создавать экземляр абстрактного класса? И в чем вообще смысл создавать объект одного класса, а инициализировать его другим классом?

Идем дальше. Ну, во-первых, создается у тебя объект не виртуального класса, а класса C, т.к. ты используешь конструктор new C(), вот если бы было new A(), тогда бы компилятор заругался. Затем, созданный объект ты приводишь к типу A (тип переменной ac), соответственно, берется VMT для класса A, а не для класса C.

> 2. Почему Console.WriteLine(ac.Print()); выведет "В" ?

Берется VMT объекта ac класса A, там есть метод Print, см. описание класса A. Попробуем понять, какой метод там хранится. Итак:
1. Объявление класса A, в VMT методу Print соответствует код, возвращающий "A". Объект, созданный с помощью new A(), при вызове Print будет печатать "A".
2. Объявление класса B, унаследованного от A - здесь метод Print переопределяется (override), соответственно, в VMT изменяется адрес, и методу Print уже соответствует другой код, возвращающий "B". Объект, созданный с помощью new B(), при вызове Print напечатает "B", даже если он приведен к базовому классу A (например, A ab = new B()).
3. Объявление класса C, унаследованного от B - здесь метод Print скрывается (new), т.е. в VMT создается новый метод с таким же именем. Адрес старого метода Print не меняется!
Здесь все интереснее. В зависимости от типа объекта, созданного конструктором new C(), будут вызваны разные методы:
1) C c = new C(); - здесь будет вызван наш новый метод, который вернет "C".
2) A ac = new C(); или B bc = new C(); - здесь берется VMT класса A или B, соответственно, вызывается старый метод. А там, как мы помним, находится код, возвращающий "B".
3) (c as A).Print() или (c as B).Print() - мы принудительно сказали, что хотим использовать VMT класса A или B и вызвать старый метод Print, поэтому вернется снова "B".

Аноним Срд 02 Июл 2014 10:46:33  #204 №366538 

>>366537
>создается у тебя объект не абстрактного класса
selffix

Аноним Срд 02 Июл 2014 10:54:00  #205 №366541 

>>366537
Вот еще пример, чтобы стало понятнее:
class A {
public string Print() { return "A"; }
}
class B: A {} {
public string Print() { return "A"; }
public string Allou() { return "ALLOU YOBA ETO TI?"; }
}
Создаем экземпляр класса B: B b = new B();
Если мы попытаемся привести его к типу A и вызвать метод Allou - (b as A).Allou() - то компилятор выдаст ошибку, т.к. в VMT класса A нет такого метода.

Аноним Срд 02 Июл 2014 13:43:56  #206 №366587 

Поясните за привязки обработчиков событий.
Я пытался сделать вот так
http://pastebin.com/dFS1yFNt
но оно не работает.
Как это делать правильно?

Аноним Срд 02 Июл 2014 13:59:19  #207 №366598 

>>366506
>Ну хуй его знает, спроси у автора кода.
>Мне кажется это какой-то учебный пример.
>А может знак легких денег и казенного дома?
Это вопрос с quizful

Аноним Срд 02 Июл 2014 16:56:31  #208 №366671 

>>366587
После долгого гугления я понял, что нужны команды, причем из коробки установку команд завезли только на клик и только для кнопки.
Попробовал WPFXCommand, но эта сволочь отказалась работать с моими Path фигурами, говорит нету у него ивентов mouseDown, mouseUp и mouseMove.
Щито делать? Вроде есть другие библиотеки, expression blend какой-то там, еще что-то. Что из них брать, чтобы не было бесплодных шаманств с бубном?

Аноним Срд 02 Июл 2014 21:24:40  #209 №366755 

Тебе чё надо-то? Распиши. Я дрочу WPF. Ты про это что ли?:
MouseLeftButtonDown="{Binding MouseDown}" MouseLeftButtonUp="{Binding MouseUp}" MouseMove="{Binding MouseMove}"
Тебе нету смысла так делать. Прямо на MouseDown вяжись. А-ля MouseLeftButtonDown="MouseDown".

Аноним Срд 02 Июл 2014 22:52:47  #210 №366777 
1404327167588.jpg

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

Вот допустим, есть самое простенькое приложение - начисление зарплаты работникам. Все данные берутся из базы. У приложения 4 формы (допустим пишем на ВПФ) - основная форма, форма со списком сотрудников и 2 формы вспомогательные, допустим для заполнения данных на сотрудников и для начисления зп.

Когда я делал что то подобное (на виндовс формах), то у меня был статический класс в котором я объявил паблик делегаты и те кому надо, через них работали. Но это какой то очень хуевый механизм. Делать открытый статический класс для взаимодействия между формами, то какой то пиздец. А другого я ничего не придумал. Подскажите как обычно это делается? Может в WPF какой то упрощенный механизм для этого?

Я понимаю что вопрос пиздецовый, но очень буду благодарен за ответ.

Аноним Срд 02 Июл 2014 23:12:21  #211 №366789 

>>366598
>Это вопрос с quizful
Грусняшка.
Видать сорт оф машинный перевод с английского.

>>366777
Не очень понял вопроса.
Ты хочешь по нажатии кнопки в одной форме изменить поле в другой?
В чем именно проблема то?

Аноним Срд 02 Июл 2014 23:27:26  #212 №366796 

>>366789
>В чем именно проблема то?

В инкапсуляции. Две формы между собой никак не связанны и за просто так одна не может менять информацию в другой, поскольку они закрыты как бы от наружного вмешательства. Я делал класс с делегатами для этого.

Аноним Срд 02 Июл 2014 23:50:16  #213 №366805 

>>366777
Передавай в форму с списком сотрубдников ссылку на соновную форму (в кострукторе), и через нее обращайся к базе (если доступ к базе у тебя через основную форму). Почитай про паттерн MVC.

Аноним Срд 02 Июл 2014 23:53:25  #214 №366809 

>>366796
Могут.
Передай в одну форму ссылку на другую и радуйся.

Аноним Срд 02 Июл 2014 23:55:59  #215 №366810 

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

Аноним Чтв 03 Июл 2014 09:05:07  #216 №366864 

>>366755
Есть ItemsControl с Canvas в качестве панели, нужно забиндить ему в ItemsSource коллекцию фигур. Фигуры нужно перетаскивать по канве, создавать и удалять легкими движениями мыши, все такое. Все классы фигур реализуют один интерфейс в котором определены основные свойства типа Geometry и Position, но у каждой конкретной реализации должно быть свое поведение.
Я начинал писать эту хрень без всяких новомодных привязок (то есть как ты предлагаешь, все в mainwindow.cs - и процедурки для вывода рисования каждого типа фигуры, и процедурки для перемещения каждого типа фигуры, и все прочее), но код оче быстро скатился в тысячи строк нечитабельного говна, хочу попробовать по-человечески накодить.

Аноним Чтв 03 Июл 2014 09:26:44  #217 №366866 

Поясните за mono что ли. Хочу шарп потыкать, но не знаю есть ли в том смысл ибо прыщеблядь.

Аноним Чтв 03 Июл 2014 10:53:50  #218 №366877 

>>366864
Нашел сам. Expression Blend SDK.
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"

<Path Data="{Binding PathData}" Fill="Red" StrokeThickness="1" Stroke="Black">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding Path=MouseDown}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</Path>
Аноним Чтв 03 Июл 2014 12:48:21  #219 №366898 

>>366877
Я конечно не понял, почему они новомодные, но так тоже можно да. Возможно мы смотрели на разные Path'ы из разных нэёмспейсов.

Аноним Чтв 03 Июл 2014 14:54:04  #220 №366926 

>>366587
>MouseLeftButtonDown="{Binding MouseDown}"
Не нужны тут Binding. Binding создает связь между DependencyProprty, а тут простой обработчик события
MouseLeftButtonDown="MouseDown", где MouseDown в behind-коде.

Для MVVM есть хитрости вида EventToCommand

Аноним Чтв 03 Июл 2014 18:58:58  #221 №366958 
1404399538454.jpg

Писториусы, нубовской вопрос по WPF - есть 5 кнопок - это небольшое меню, которое используется почти у всех окон в приложении. Как я понимаю, нет смысла копировать куски одного и того же кода, в определения разных форм, поэтому - может имеет смысл сделать свой контрол который и будет состоять из этих 5 кнопок и который можно будет кидать на любую форму? Или есть какой то другой механизм? Взлетит? Извините ели вопрос слишком дурацкий.

Аноним Чтв 03 Июл 2014 19:35:17  #222 №366966 

>>366958
Да, делай так. Взлетит. Хэндлеры кнопок только вытащи наружу (если конечно есть необходимость).

Аноним Чтв 03 Июл 2014 20:45:17  #223 №366982 

>>366866
Пояснил.

Аноним Чтв 03 Июл 2014 22:43:55  #224 №367044 

>>366966
Спасибо. Завтра попробую.

Аноним Пнд 07 Июл 2014 15:00:24  #225 №368188 

>>366926
Вот я про эти хитрости и пытаюсь узнать, собственно пока что сделал так >>366877, но непонятно как передавать параметры (то есть например Delta из MouseWheelEventArgs).
Если все писать в бихайнд, получается нечитаемая каша: для одного типа фигур кручение колесика должно изменять размер, для другого - цвет, для канвы - scaleX/scaleY, ну и так далее, все это писать в код формочки не хочется.
Во всякие призмы лезть пока тоже рано, с чем бы попроще разобраться.

Аноним Пнд 07 Июл 2014 16:08:15  #226 №368204 

>>368188
А хотя похуй, я уже нагуглил про Behavior.

Аноним Пнд 07 Июл 2014 19:52:08  #227 №368299 
1404748328957.jpg

Нужна ваша помощь. Пишу ORMвелосипед и встала задача, как сформулировать Where запрос. Строкой не хочу задавать условие, так как это получится очень сильный костыль. В идеале хочу получить нечто вроде
GenerateStrWhere( where Friend.Age < 40)
где Friend.Age является полем Friend. Объект Friend, а тем более коллекцию объектов Friend создать нельзя. Да это и нахуй не нужно.

Может кто что подскажет

Аноним Пнд 07 Июл 2014 20:01:01  #228 №368306 

>>368299
Expression<Func<Friend, bool>> where = c => c.CanWriteMsg==1 && c.FirstName!="Anon";
Пока, что думаю над этим вариантом, но слишком много синтаксического оверхеда

!xnn2uE3AU. Пнд 07 Июл 2014 20:03:11  #229 №368307 

>>368299

У вас же синтаксически богатый язык, linq есть и еще какая-то штука которая позволяет куски функций передавать как условие для where.

Алсо, можешь посмотреть как это в sql alchmy сделали: http://docs.sqlalchemy.org/en/latest/orm/tutorial.html#common-filter-operators

Аноним Пнд 07 Июл 2014 23:20:17  #230 №368365 

Посоветуйте годный RPC под шарп

Аноним Пнд 07 Июл 2014 23:38:45  #231 №368371 

>>368299
Хуяришь метамодель данных, как в JPA2, где каждому классу сущности соответствует свой метакласс, у которого public static аттрибуты в виде кортежа <тип, название>

Аноним Пнд 07 Июл 2014 23:47:19  #232 №368377 

>>368365
Я для лабы вот такую приблуду использовал. Работает. Значит годный.

Аноним Пнд 07 Июл 2014 23:48:20  #233 №368378 
1404762500342.png

>>368377

Аноним Втр 08 Июл 2014 14:10:59  #234 №368537 
1404814259790.jpg

Ананасы, ОЧЕНЬ нужен совет. Сделал в WPF юзерконтрол (выше уже спрашивал делать или нет) - пять кнопочек вместе. Очень простой, МАКСИМАЛЬНО простой. Все что мне от него нужно - что бы я кидал его в визуальном конструкторе студии на любое окно и потом, по двойному клику на одной из кнопок, он сам в коде создавал пустой обработчик события для этой кнопки, то есть так как это обычно происходит со стандартными контролами-кнопками в визуальном конструкторе.

Что есть сейчас - в .cs самого юзерконтрола, код примерно такой (для 1 кнопки)

ебашу евент:
public event RoutedEventHandler MyButton1EH

и потом функцию:
private void MyButton1EH_OnClick(object sender, RoutedEventArgs e)
{
if (MyButton1EH!= null) { MyButton1EH(this, new RoutedEventArgs()); }
}

а в самом коде формы куда бросаю контрол:
в XML:
< //объявление контрола и его свойств// и обработчик события клик (для одной из кнопок) - BtnClick1="OnBtnClick1"/>

.cs формы выглядит так:

private void OnBtnClick1(object sender, RoutedEventArgs e)
{ //что нибудь }

Сейчас контрол работает вот так, а это значит, что мне КАЖДЫЙ раз, когда я бросаю его на форму, приходится копировать OnClick обработчики для всех кнопок в .cs той формы, куда я кидаю контрол. Получается что у меня дохуя лишнего кода (так как в каждой из форм, не все кнопки контрола могут использоваться), да и как то по идиотски копировать пустые объявления.

Не могу нормально даже вопрос в гугле задать. Еще раз, если кто то не понял вдруг из кода и моего объяснения что мне надо, коротко - есть 5 кнопочек на одной плашке, когда я кидаю их на форму, что нужно что бы я мог по двойному клику на одну из этих кнопок, создавать обработчик события нажатия на эту кнопку. Сейчас, когда я дважды кликаю на контрол в визуальном конструкторе, он создает какой то левый обработчик общий для всего контрола в целом, а не для конкретной кнопки. Подскажите долбоебу, как сделать универсальный контрол, что бы не приходилось копировать из формы в форму, кучу ненужного кода. Спасибо, если кто откликнется на такую простынь, пытался максимально просто написать.

Аноним Втр 08 Июл 2014 14:13:43  #235 №368539 

>>368537
> WPF
> в визуальном конструкторе
Забудь, его там прилепили в 2006 году на отъебись и с тех пор ничего не менялось, не умеет он так.

Аноним Втр 08 Июл 2014 14:15:59  #236 №368540 

>>368539
Ну ок, то есть ты считаешь, что из формы в форму, копировать кучу инфы об обработчиках ОнКлик это нормально? Как я уже сказал, есть дохуя кнопок и не всегда и не все из них используются.

Я вот нашел что то кажется из того что мне нужно, но не знаю оно ли это и как это прикрутить - http://www.cyberforum.ru/wpf-silverlight/thread980398.html

Аноним Втр 08 Июл 2014 14:17:17  #237 №368541 

>>368539
>, не умеет он так.

И да, что значит не умеет? То есть по двойному клику на кнопку создавать обработчик события он не умеет? Ты что ли прикалываешься?

Аноним Втр 08 Июл 2014 14:17:33  #238 №368542 

>>368540 что ты несешь? Какие обработчики онклик? Почитай уже про MVVM и экшены, все делается просто и красиво. Я говорил лишь о том, что визуальный редактор - кривое говно там.

Аноним Втр 08 Июл 2014 14:26:36  #239 №368544 

>>368542
Ну я же объяснил максимально подробно что я имею ввиду. Ладно, еще раз - есть форма. На нее бросаю кнопку обычную, стандартную кнопку. Просто из панели тулсов перетаскиваю обычную кнопку. Потом дважды на нее кликаю. В XAML у кнопки создается Click="Button_OnClick" а в .cs создается пустой обработчик:
private void Button_OnClick(object sender, RoutedEventArgs e) {}

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

Аноним Втр 08 Июл 2014 14:30:30  #240 №368547 

>>368544 я тебе еще раз объясняю - визуальный редактор из WPF - ущербное говно и на такие, казалось бы простые, вещи неспособен. А вот если ты в XAML напишешь у своего контрола Click=" - то здесь появится предложение создать обработчик, и он таки создастся. А про MVVM я тебе написал только потому, что buttononclick-программирование - зло, почитай про MVVM и сможешь писать красиво. НО без визуального редактора, к сожалению.

Аноним Втр 08 Июл 2014 14:41:14  #241 №368551 
1404816074198.png

>>368547
Блин. Ну хуй его знает. У меня уже так бомбит пукан о того, что не могу даже такую простую хуйню сделать. Буду думать и смотреть что за MVVM

Аноним Втр 08 Июл 2014 15:02:42  #242 №368560 
1404817362368.jpg

>>368542
>MVVM
>просто

Аноним Втр 08 Июл 2014 15:10:53  #243 №368562 

>>368560 а вот и похапемакаки с тремя классами образования сдетонировали.

Аноним Втр 08 Июл 2014 15:55:15  #244 №368586 

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

В общем реализую все на C# уже начал делать базу, при условии что все бесплатно должно быть, проверки есть. Делаю на C# Express, база данных в виде XML файлов.

Суть такая в общем, открываем прогу и типа у нас есть папка /DB/ Когда программа открывается, то если нет файла XML за этот день, то он создается в формате dd.mm.yyyy. Итого у нас в папке /DB/ куча XML файлов таких. Ну и вносим данные туда, можно открыть файл за выбранный день, вывести данные в Excel или на форму с перелистыванием, можно удалить ноду выбранную.

Так вот вопрос же какой у меня база данных из XML файлов нормально работает вообще? Или юзать ms_sql server express, он вроде урезанный, как там у него дела в бесплатной версии? Да и не хочется на том компьютере сервак разворачивать. Как лучше всего организовать хранение данных, или XML это заебись? Просто меня смущает ПОКА ЧТО 200 XML файлов уже, это только начало, если все это в один файл сделать, это охуенно медленно будет? Или сделать например по месяцам, тогда их штук 5 будет, Помогите шарпобоги!

Аноним Втр 08 Июл 2014 16:07:06  #245 №368592 

>>368586
>база данных в виде XML файлов.

Ты что ебанутый? Ты что тут делаешь? А почему уже тогда не SQL Compact? Какая в хуй разница, так хоть база будет.

Аноним Втр 08 Июл 2014 16:09:24  #246 №368595 

>>368586
> Или юзать ms_sql server express,

SQL Compact - нет почти нихуя, в смысле всяких функций и прочего, но зато, нихуя не надо устанавливать и база идет и работает вместе с софтиной. Я делал подобную программу по работе. Конечно кастрированный SQL не позволяет развернуться так, как в полной версии, но все что нужно, можно прописать кодом, а саму базу, использовать только как хранилище данных.

Аноним Втр 08 Июл 2014 16:12:07  #247 №368596 

>>368586 используй Entity Framework и в качестве провайдера SQL Compact или SQL Local DB, даже не экспресс. Но дело в том, что провайдера всегда можно поменять одной строчкой в конфиге, если лимитов этих урезанных версий SQL Server не будет хватать, сама программа будет работать без переделки с любой БД.

Аноним Втр 08 Июл 2014 16:16:36  #248 №368600 

>>368592>>368595>>368596
Ну я понял короче, я другое в вопросе имел ввиду.

1)Это все бесплатно же с экспрессом идет?
2)Для этого не надо устанавливать дополнительный софт на машине(не на той, на которой разработка)?

Архитектура Аноним Втр 08 Июл 2014 16:21:24  #249 №368605 
1404822084777.jpg

Реквестирую мудрого совета я от анона.

Решил написать небольшое приложение - типа как у анона выше - учет всякой хуйни. На данном этапе есть - база данных, пустая, только таблички, без функций пока. И сейчас, пилю пользовательский интерфейс - дохуя окошек, сейчас каждое из них делаю отдельно, а потом буду связывать их между собой.
Прочитал про MVC и MVVC и теперь думаю:
1. Если я правильно понял, то в самих формах, не должно быть совсем нихуя, даже обработчики событий, должны обращаться к промежуточному звену которое будет уже взаимодействовать с БД

2. Должна быть прослойка - класс, который принимает всю информацию от интерфейса и обрабатывает ее

3. Есть отдельный класс для работы с БД, который сообщается с пунктом 2.

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

Буду очень признателен за ответы. Только сделайте скидку на то, что я новичек, не грузите сильно.

Архитектура Аноним Втр 08 Июл 2014 16:25:25  #250 №368608 

>>368600
1.Нах експресс, используй компакт, он бесплатный.
2.В студии есть возможность (если не ошибаюсь) работать с компактом и прямо из студии делать базу. Хуевый вариант конечно, но тебе же нужно максимально попроще.

Аноним Втр 08 Июл 2014 16:36:55  #251 №368614 

>>368605 Для меня оказалось удобней понимать MVC так:
- хтпп запрос(адрес странички) дергает контроллер соотнесенный с этим запросом
- контроллер дергает модель (та самая бд, контроллер дергает в модели методы написаныне тобой, по типу гет_шняга_лист())
- запускает представление, инсертя в него данные которые били получены от модели, представление себя рисует, подставляя твои данные, и полученный хтмл шлет в ответ на запрос.

Аноним Втр 08 Июл 2014 16:47:14  #252 №368618 

>>368614
Ну я про десктопное приложение спрашиваю. Но примерно понимаю о чем ты.

Аноним Втр 08 Июл 2014 16:50:02  #253 №368620 

>>368618 ну это пример патерна мвц на примере асп.нет

Аноним Втр 08 Июл 2014 17:00:23  #254 №368623 

>>368600 Entity Framework, SQL Compact, SQL Express, SQL Local DB - бесплатны. SQL Compact отличается тем, что на машину каждого пользователя ставится аж три мегабайта его "движка". SQL Local DB и SQL Express - ставятся на "сервер", а остальные к нему подключаются.

Аноним Втр 08 Июл 2014 17:03:20  #255 №368624 

>>368623
О, уважаю, братишка. Шаришь.

Аноним Втр 08 Июл 2014 17:06:27  #256 №368627 
1404824787102.jpg

Бля, хуле ж тематика такая мертвая? Пара антрекотов если и заходит за день, уже хорошо. Пичальки.

Аноним Втр 08 Июл 2014 21:23:00  #257 №368712 
1404840180407.jpg

Что то вообще никто в тред не заходит. Ау! Апельсинусы!

Аноним Втр 08 Июл 2014 21:29:21  #258 №368713 

>>368712
И все же лучше, чем на форчане.

Аноним Втр 08 Июл 2014 22:02:05  #259 №368732 

>>368713
Ну так результат то пока нулевой.

Аноним Втр 08 Июл 2014 23:07:51  #260 №368839 

>>356145
Может кто-нибудь простыми словами пояснить Expressions. Читал на хабре, нихуя не понял.
Ну вот чем таким обладает

Expression<Func<int, int>> expression = x => x*x;

по сравнению с
Func<int, int> func = x => x*x;
??
Аноним Втр 08 Июл 2014 23:07:52  #261 №368840 

>>368595
> SQL Compact - нет почти нихуя, в смысле всяких функций и прочего, но зато, нихуя не надо устанавливать и база идет и работает вместе с софтиной.
Firebird - есть все что нужно, для Embedded версии ни хуя не надо устанавливать, и база идет и работает вместе с софтиной.

Аноним Втр 08 Июл 2014 23:11:42  #262 №368842 

>>368840
А SQLite чем не угодила?

Аноним Втр 08 Июл 2014 23:13:04  #263 №368843 

>>368713
А где там доска про программирование? /pr/ нет, на /c/ какое-то аниме.

Аноним Втр 08 Июл 2014 23:14:52  #264 №368844 

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

Аноним Срд 09 Июл 2014 00:26:12  #265 №368873 

>>368839
Expression - деревья выражений
Func - просто делегат

У тебя слишком простые примеры, поищи на MSDN разбор и составление expression

Аноним Срд 09 Июл 2014 14:00:50  #266 №368981 
1404900050522.png

Посоветуйте, чем можно порисовать диаграммы сорта как на картинке. И гистограммы. Нашел OxyPlot, но документация недоделанная, а та что доделанная - застыла в .NET 3.0.

Тэги: C#, WPF, .NET 4.5

Аноним Срд 09 Июл 2014 14:11:12  #267 №368983 

>>368981
у тебя же в тегах ответ на вопрос.

Аноним Срд 09 Июл 2014 14:23:51  #268 №368986 

>>368562
Ну попробуй тут не сдетонируй, когда из коробки никакой поддержки этого самого MVVM, который они так упорно форсят, нет, и тут либо пердолируй DependencyProperty на каждый чих, либо разбирайся со всякими там призмами.
>>368596
>Entity Framework
Тормозное говно, как и все ORM.
Хотя после XML-файлов как-то похуй будет.
>>368981
Dynamic Data Dysplay.
А вообще, если не нужны биндинги, можно использовать Chart в WindowsFormsHost.

Аноним Срд 09 Июл 2014 15:07:44  #269 №368999 

>>368983
В DataGridView или вручную рисовать? Накроман штоли.
>>368986
DDD последняя версия 2009 года. Биндинги нужны. Еще зум и прокрутка.

Аноним Срд 09 Июл 2014 15:41:44  #270 №369006 
1404906104880.gif

>>368999
Пиздец. Нахуй ты такой даун?

Аноним Срд 09 Июл 2014 16:40:33  #271 №369022 

>>368999
До сих пор замечательно работает. Или тебе прям какие-то совсем уж йоба графики?

Аноним Срд 09 Июл 2014 18:07:51  #272 №369051 

>>369022
Пиздец. Нахуй ты тралишь? Не траль, плиз(((((. Ебанутый прочитай еще раз вопрос.

Аноним Срд 09 Июл 2014 18:22:32  #273 №369056 

Сап, двоч. Есть проблема.
Пилю приложение на wpf, хочу, чтоб, когда у меня меняется значение одной переменной, менялось так же значение в текстбоксе в MainWindow. Но НЕ ПРОКАЕТ.

<TextBlock x:Name="testtbl"
x:FieldModifier="public"
Text="{Binding Path=tblstring, UpdateSourceTrigger=PropertyChanged}"/>

Отака хуйня в xaml-нике MainWindow. В его cs-нике в классе MainWindow запиливается инст вспомогательного класса:
TestTBLclass ttblclass = new TestTBLclass();
this.DataContext = ttblclass;

Сам класс:

public class TestTBLclass:INotifyPropertyChanged
{
private static TestTBLclass _instance = null;
public static TestTBLclass Instance
{
get
{
if(_instance==null)
_instance=new TestTBLclass();
return _instance;
}
}

public string tblstring="blahblah";
public string tblString
{
get
{
return tblstring;
}
set
{
tblstring = value;
NotifyPropertyChanged("tblString");
}
}

public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(string str)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(str));
}
}
В tblstring значение приходит, а вот дальше что-то не работает.

Аноним Срд 09 Июл 2014 19:46:32  #274 №369065 

>>368999
>DDD последняя версия 2009 года. Биндинги нужны. Еще зум и прокрутка.
Биндинги можно прикрутить к DDD, много ума там не надо. И зум с прокруткой там вроде из коробки.

Аноним Срд 09 Июл 2014 19:50:56  #275 №369068 

>>369056
Маешься какой то хуетой. Нормально объясни, что хочешь сделать.

Аноним Срд 09 Июл 2014 19:56:29  #276 №369069 

>>369068
У меня есть MainWindow, в нём - текстблок. Есть некая магия, которая подаёт в стринговую переменную tblstring некое значение. Я хочу, чтоб это значение отобразилось в текстблоке.
Вообще сейчас я пытаюсь найти способ забиндить данные на контролы, но уже запутался в тысячах вкладок МСДН, стэковерфлоу и прочих, где у всех всё работает, а у меня - нихуя.

Аноним Срд 09 Июл 2014 21:28:01  #277 №369086 

>>368299
> Where
Возвращаюсь в тред. Решил сделать через перечисление. То есть указываем какой where нам нужен и далее через атрибуты дергаем строку.Вот как это выглядит

 internal enum WheresType
{
[Description("WHERE FriendId='{0}'")]
ById,
[Description("WHERE FirstName='{0}'")]
ByFirstName,
[Description("WHERE CanWriteMsg=1")]
ByCanPrivateMsg
}

Конечно, в такой реализации есть sql injection, но его потом буду фильтровать
>>369056
> Text="{Binding Path=tblstring, UpdateSourceTrigger=PropertyChanged}"/>
Замени эту хуету на
Text="{Binding Path=tblstring, Mode=TwoWay}"/> если хочешь двустороннего обновления данных
Аноним Срд 09 Июл 2014 22:56:11  #278 №369102 
1404932171085.jpg

>>368605
Бампану вопросец

Аноним Срд 09 Июл 2014 23:23:23  #279 №369103 

>>369086
Expressions

Аноним Чтв 10 Июл 2014 00:08:45  #280 №369109 

>>369086
>Замени эту хуету на
Text="{Binding Path=tblstring, Mode=TwoWay}"/> если хочешь двустороннего обновления данных
Мне не нужно двухстороннее обновление данных, мне нужно хотя бы какое-нибудь. У меня никакого нет, вот в чем проблема.

Аноним Чтв 10 Июл 2014 14:02:27  #281 №369200 

>>369103
Рассматривал этот вариант. Но, к сожалению я не нашел некривого способа как валидировать поданный expression. То есть написав
Expression<Func<Friend, bool>> where = c => c.CanWriteMsg==1 && c.Field.Remove(2,2)
Он будет совершенно валидным с т.з. .Net , но метод, который будет разбирать expression, ахуеет от такого и пропустит невалидную строку в бд

>>369109
Тогда займись отладкой биндинга. Вот тебе почитать http://www.wpf-tutorial.com/data-binding/debugging/

Аноним Чтв 10 Июл 2014 15:22:04  #282 №369224 

>>369056
>Binding Path=tblstring
У тебя свойство tblString называется.

Аноним Чтв 10 Июл 2014 15:29:33  #283 №369226 

>>369224
Точно, спасибо. Правда, это не прокнуло, но всё равно спасибо.

Аноним Чтв 10 Июл 2014 15:51:08  #284 №369231 

>>369226
Значение свойства в инстансе, погугли как биндить синглтоны.
Будет что-то типа {Binding Source={x:Static mynamespace:TestTBLclass.Instance}, Path=tblString}.

Аноним Чтв 10 Июл 2014 16:32:10  #285 №369242 
1404995530977.jpg

>>369231>>369224>>369200
Заработало. Спасибо огромное.

Аноним Чтв 10 Июл 2014 19:44:38  #286 №369290 
1405007078484.jpg

Дотнет-обезьяна врывается в тред.

Анон, последние несколько лет пишу быдлокод на винформс + дотнет (сейчас 4.0) + T-SQL, тем и зарабатываю. Хотелось бы в не самой отдалённой перспективе спуститься с деревьев в саванну и эволюционировать в человека, оставаясь в рамках платформы дотнет, конечно. Что сейчас актуально/востребовано, что должен уметь уважающий себя мидл в нормальной конторе? WPF жив ещё? На чём сейчас пишут веб: ASP.NET MVC или web forms? Какие умные слова лучше всего выучить для собеседования: юнит-тесты, WCF, EF или даже MVVM?

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

Аноним Чтв 10 Июл 2014 21:28:59  #287 №369324 

Очень бампую этот вопрос - >>369290

Ебаный насос, ну хоть кто то живой тут бывает, ответьте!!

Аноним Чтв 10 Июл 2014 21:48:58  #288 №369329 

>>369324
Кинь няшек.

Аноним Чтв 10 Июл 2014 21:55:19  #289 №369331 

>>369324
>>369290
Асп мвс/вебапи, да, юнит тесты (NUnit/MSUnit) во все поля

Аноним Чтв 10 Июл 2014 22:20:01  #290 №369336 

>>369200
Сделай fluent builder, например.
.Where().Eq(x=>x.Age, 3).And().More(x=>x.Yoba, YobaSize.OcheBolshoy)

Аноним Чтв 10 Июл 2014 23:06:55  #291 №369350 
1405019215767.jpg

>>369329
НЯ!

Аноним Чтв 10 Июл 2014 23:14:09  #292 №369352 

>>369350
что у тян слева с лицом ?
сука, ненавижу тех кто писал документацию к апи vk.com. Поубивал бы нахуй

Аноним Птн 11 Июл 2014 00:22:01  #293 №369383 
1405023721022.jpg

>>369329

Аноним Птн 11 Июл 2014 00:28:48  #294 №369385 

>>369290
Мевеце с паттернами и всякими залупами типа ентити. Скачай нопкоммерс и посмотри как там устроен проект.

Аноним Птн 11 Июл 2014 11:41:11  #295 №369448 

Есть Class1, у него свойство Class2 property1 {get; set;}, у Class2 есть какие-то еще свойства, допустим int property2 {get; set;}.
В datacontext своему контролу я ставлю экземпляр Class1. Как сделать биндинг к property1.property2? Пробовал Binding="{Binding Source=property1, Path=property2}", не работает.

Аноним Птн 11 Июл 2014 13:04:22  #296 №369460 

>>369448
Path=property1.property2 не пробовал?

Аноним Птн 11 Июл 2014 15:19:30  #297 №369507 

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

<Style.Triggers>
<DataTrigger Binding="{Binding Path=SelectedItem.Property1}" Value="LALKA">
<Setter Property="Command" Value="{Binding ZATRALLIT}"/>
</DataTrigger>
</Style.Triggers>

Вот этот SelectedItem он принципиально не воспринимает, хотя он объявлен как свойство, и propertychanged я ему прописал.
Почему MVVM это так сложно? Должны же вроде наоборот упрощать разработку, а на деле процедурки и ивенты, придуманные хуй знает когда, писать куда как легче.
Аноним Птн 11 Июл 2014 15:24:43  #298 №369513 

>>369507
>Почему MVVM это так сложно?
Потому что ты не понимаешь что делаешь, а просто жанглируешь разными конструкциями, в надежде что взлетит.

{Binding property1.property2} должно работать, если не работает - значит например Class2 или Class1 не наследует INotifyPropertyChanged. Без кода здесь тебе никто не поможет.

Аноним Птн 11 Июл 2014 15:29:25  #299 №369514 

>>369507
>>369513
>Binding="{Binding Path=SelectedItem.Property1}"
>SelectedItem
Что это такое, запости больше кода, здесь ванг нету.

Аноним Суб 12 Июл 2014 19:42:24  #300 №369822 
1405179744440.jpg

Сап, аноны. Есть 2 .exe файла: 1.exe и 2.exe. Каждый из них представляет собой форму с меню баром сверху и разделен на 2 половины вертикально. Суть задачи: сделать так, чтобы в левой половине 1.exe отображался полностью 2.exe. Это я сделал, но при нажатии на элементы меню в отображаемом 2.ехе не появляется дроп-даун меню.
И, собственно, вторая задача: переместить из уже запущенного 2.ехеиз его правой части картинку в правую часть 1.ехе, как на пикче.
Я даже не знаю какие функции мне гуглить, чтобы переместить эту картинку.
Добра!

Аноним Суб 12 Июл 2014 20:21:14  #301 №369828 

>>369822
1) Кривой способ - cхороняй картинку на диск, а в другом приложении проверяй появилась ли эта картинка на диске и если да - загружай
2) тру способ - юзай пайпы, сокеты, wcf.

Аноним Суб 12 Июл 2014 20:43:03  #302 №369835 

>>369828
Спасибо! Можно подробнее про
>2) тру способ - юзай пайпы, сокеты, wcf.
И все-таки не понятен вопрос с неработающим меню в отображаемом файле.
Какой нужно код, скину, если что.

Аноним Суб 12 Июл 2014 22:41:39  #303 №369862 

>>369828
Ты не понял, он хочет чтобы второе приложение было плагином первого и запускалось из под первого. Т.е. не два приложения запущено и второе отдаёт картинку первому, а первое говорит второму, что нужно делать. Если я не прав, и это именно то, что нужно автору, то пусть гуглит IPC и с чем его едят.

Ежели речь идёт именно о том, о чём я подумал: первое приложение находит второе на диске, находит внутри второго нужный класс формы и отображает его внутри себя, как MDI, то это можно сделать, но это накладывает определённые ограничения при реализации (приложения нумер два не может быть любым, мы тут не виртуальную машину пишем).

>>369385

ОК, попробую. Сейчас пытаюсь понять, как этот ваш Razor работает и куды ему нужно эти юнит-тесты пихать.

Аноним Вск 13 Июл 2014 13:54:16  #304 №369946 

Вот у меня тоже проблема с текстбоксом. Есть textbox, есть класс MyTime с таймером, по которому в textbox добавляется строчка.
Пробовал передавать MainWindow в качестве параметра конструктора, но так работает только без таймера, например по нажатию кнопки.
Так вот, как такое реализовать? Может сделать public textbox? Но я не знаю, как.

Аноним Вск 13 Июл 2014 14:00:20  #305 №369949 

>>369946
Передавай или сслыку на текстбокс (в конструкторе), или сделай в главной форме паблик метод который юудет изменять значение текстбокса.

Аноним Вск 13 Июл 2014 14:00:52  #306 №369950 

>>369946
Технология окошек?
Код показывай.

Аноним Вск 13 Июл 2014 14:21:20  #307 №369957 

>>369949
Паблик метод не работает, вроде.
>>369950
WPF, но не знаю, зачем. Я ньюфаг.
http://pastebin.com/fcwd0U3a

Аноним Вск 13 Июл 2014 14:24:47  #308 №369958 

>>369957
Таймер запускать нужно, start() или что-то такое. Enabled это другое свойство, алсо оно по умолчанию должно быть true.

Аноним Вск 13 Июл 2014 14:49:08  #309 №369967 

>>369957
wpf -> это значит что сразу надо читать про mvvm и таких вопросов не будет.
В данном случае: не надо визуальные контролы отдавать во всякие классы, надо в классе сделать событие, например, и через него работать.
http://pastebin.com/Kx11cWRe

Аноним Вск 13 Июл 2014 15:00:37  #310 №369973 

>>369958
Да не, таймер работает нормально. А вот текст не выводится.
Алсо, что значит ссылка на текстбокс? Просто public Class2 (TextBox tmp){//***}
>>369967
Спасибо, попробую потом разобраться. Пока для меня это слишком сложно. ЯННП

Значит WPF идет лесом, ок.

Аноним Вск 13 Июл 2014 15:30:30  #311 №369989 

>>369973
Как у тебя не работает твой код? Exception'ы кидаются?
Вот так у меня работает, но блядь, не надо так: http://pastebin.com/NYXV0mKN

Аноним Вск 13 Июл 2014 15:52:30  #312 №369997 

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

Аноним Вск 13 Июл 2014 15:58:37  #313 №370001 

>>369989
Все, спасибо, заработало.

Аноним Вск 13 Июл 2014 16:40:36  #314 №370016 
1405255236016.png

Расскажите мне пожалуйста, как правильно сделать биндинг из NHibernate к WinForms. Делаю два грида мастер-детэйл, кнопочки вида "добавить/удалить/сохранить", загружаю набор объектов мастер. Все идет нормально, если только первый элемент из мастеров имеет детей. Если детей нет - биндинг отваливается.

Исследования показали, что гибернейт вместо пустой коллекции детей делает null, а вернее некую заглушку-прокси, скрывающую за собой null.

Я разочарован. Почему в 2014 году для биндинга надо опять делать закат солнца вручную, поддерживать списки удаленных-добавленных элементов самому?

Отвечаю заранее на вопросы:
1) Почему не WPF - потому что тормозит этот впф на древнем компьютере у оператора. Потому что аналогичное приложение на дельфи просто летает и притом управляется с клавиатуры.

2) Почему не уеб-приложение - потому что такие требования. Вдобавок, думаю что уеб-приложение потребует еще больше усилий для написания, будет весьма задумчивым (латентность сети), потребует присутствия версталы (я не знаю css, я знаю sql)

Также, можете рассказать, чем вы рекомендуете связать десктопное приложение на C# и сервер приложений на яве (ubuntu, postgres, asterisk, tomcat). Сервер приложений должен мочь присылать уведомления самостоятельно, сейчас это делается через listen/notify postgres'а.

Аноним Вск 13 Июл 2014 17:00:10  #315 №370026 

>>368840

Ах, файрберд... любовь всех дельфийских промзобми из айтиотделов при предприятиях, которые торгуют Советскими Приборами. Владельцы таких предприятий когда-то, в 95 году, захватили не автостоянку, и не дом культуры для сдачи под офисы, а поганый Ангар В Промзоне с Краном и Гаражом. Теперь там сидят работнички и работают, делают промышленную Уродливую Хуйню от Отечественного Производителя.

Файрберд. Бесплатное ИДЕ. Иде оно? Да, есть Ебэ Эксперт. Типа бесплатный для жителей exUSSR (типа - все равно же своруете, суки).

Как у него с бэкапами - восстановлениями? Уже починили баг(и), когда бэкап ВНЕЗАПНО мог оказаться невалидным?

Скажите, а с какой целью идентификаторы в базе являются чувствительными к регистру? А делать автоинкрементное поле через триггер - это зачем? Как там с полнотекстовым поиском, к 2014-то году доделали? Чем отличается Классик Сервер от СуперКлассик Сервера?

От файрберда прямо-таки веет этакой кустарщиной. И он НИКОМУ НЕ НУЖЕН НИГДЕ, кроме как на территории exUSSR.

Ставьте постгрес и пользуйтесь. Там есть партиционирование.

Ставьте MSSQL Express. Оно хотя бы нативно поддерживается вижуал студией. Когда клиенту не хватит базы в 10 гб, спросите себя - а зачем вам такой клиент, который не может заплатить за сервер БД? Он вам-то достаточно заплатит?

Наконец, есть Oracle XE. Оракл - это вам не поделие советских программистов. В резюме оракл смотрится интереснее, чем файрберд.

Не надо использовать файрберд.

PS: там еще sqlite советовали - да ради бога, только помните - он позволит записать в себя любую чушь, а потом перестанут работать запросы. Корректность данных надо будет поддерживать самому.

Аноним Вск 13 Июл 2014 17:05:44  #316 №370028 

Аве, аноны.
Подскажите, где берут реальные навыки программирования?

Аноним Вск 13 Июл 2014 17:06:25  #317 №370029 

>>369997
private void TimerOnElapsed(object sender, ElapsedEventArgs elapsedEventArgs)
{
_window.Dispatcher.Invoke(UpdateTextBox);
}

private void UpdateTextBox()
{
_window.tb.Text += "yoba, eto ti?" + Environment.NewLine;
}


This. Только перед тем, как делать инвок в UI поток нужно проверять, что ты не уже там.

Аноним Вск 13 Июл 2014 17:14:58  #318 №370032 

>>361320

Какой именно Дима имеется в виду? Владелец гей-наркопритона домика для бездомных поросят?

Аноним Вск 13 Июл 2014 17:16:49  #319 №370033 

>>370026
>PS: там еще sqlite советовали - да ради бога, только помните - он позволит записать в себя любую чушь, а потом перестанут работать запросы. Корректность данных надо будет поддерживать самому.
Кстати да, это знакомо по скайпу. У меня как-то раз кончилась постоянная память, и новое сообщение записалось с ошибкой, в результате база sqlite кораптед, мессенджер отказывался работать без её удаления(точнее без удаления файла bdiscorrupt всякий раз, но это детали).

Аноним Вск 13 Июл 2014 17:21:16  #320 №370035 

>>368844
Она вообще не серверная.
>>370026
Не посоветуешь какую-нибудь доступную книжку по MSSQL Express и Oracle XE?

Аноним Вск 13 Июл 2014 17:34:25  #321 №370038 

>>370035

Для их обоих не нужно неких особенных книжек. Для mssql есть классический пример Northwind от майкрософта.

Ставим сервер бд - у него есть админ. Заходим под этим админом через соответствующую утилиту (sql management studio), создаем базу. Заполняем ее таблицами, это одинаково в общем-то в любой базе - primary key, foreign key. Делаем маппинг сделанной базы в программу, либо через Entity Framework, а вообще есть linq2db, оно полегче, побыстрее и более тупое - делает только то, что скажут, не вызывая изумленных возгласов WTF. Затем через linq читаем из базы и пишем в нее. Почему linq - потому что после изменений в базе ты изменишь маппинг, и при этом ни один запрос не будет испорчен. Пока не исправишь все несоответсвия - программа просто не скомпилируется.

По базам есть классическая книга Дейта (ей убить можно, но в ней есть вообще все), свободно доступная в интернете. И замечательный сайт sql-ex для того, чтобы тренироваться в написании запросов.

Аноним Вск 13 Июл 2014 17:50:40  #322 №370044 

>>370038
>маппинг сделанной базы в программу, либо через Entity Framework

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

Аноним Вск 13 Июл 2014 17:58:09  #323 №370045 

>>370044

"Слой" хранимок не нужен уж точно. Несколько хранимок - может быть. Для операций вида "добавить-списать деньги со счета". И до хранимок ли вопрошающему анону, если он вообще ничего еще не знает? Индексы тоже еще успеет проставить.

Пнд 14 Июл 2014 13:41:57  #324 №370174 

>>356277
>УГАТУ
Ты охуел?

Аноним Пнд 14 Июл 2014 15:03:11  #325 №370191 

>>370016
Я нихуя не понял.
Отключи lazy-loading для своего класса, заглушек не будет. Если тебе важна скорость, то зачем ты вообще используешь орм?
>>370026
Какой у тебя сочный БЭКАП. Ни разу не видел чтобы йоба эксперт ломал бэкапы, серьезно.
>Ставьте MSSQL Express
Это то говно, которое анально залочено на работу в один поток и использование 1 гига памяти? Плакать-колоться ради EF? Подозреваю что с ораклом(тм) та же хуйня.

Аноним Пнд 14 Июл 2014 17:00:49  #326 №370214 

>>370191

Скорость - в смысле отзывчивость интерфейса. ОРМ требует какое-то время на маппинг, но это время константно и ничтожно, что-то вроде 50мс.

Не понял - поясняю.

Есть Категория и Услуги. Загружается список категорий(страница X из N), у каждой категории есть свойство со списком услуг.

У первого грида datasource'ом является список категорий. У второго грида datasource'ом является current списка категорий, а datamember'ом - список услуг в категории.

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

Lazy Loading я не хочу отключать именно потому, что он как раз полезен. Не требуются все услуги для всех категорий на текущей странице. Загружается только то, что нужно.

NHibernate был выбран потому, что EF не поддерживает постгрес. Или поддерживает, но какими-то необыкновенно хитрыми методами, вроде запуска одной VS в отладчике другой, как было сказано в блоге одного итальянца, автора поддержки постгреса в EF. Причем, его блог пришлось читать через archive.org, потому что он куда-то делся.

В общем, неудобно все это. Я могу сделать руками, и я сделал... но! какого хрена! 2014 год уже, неужели нет более простых способов?

Аноним Пнд 14 Июл 2014 17:02:01  #327 №370215 

>>370214

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

Аноним Пнд 14 Июл 2014 17:08:42  #328 №370219 

>>370191

>Ни разу не видел чтобы йоба эксперт ломал бэкапы

Мне не веришь - в раввинатике спроси.

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

Оно весьма быстро работает. А если продается нечто на десяток рабочих мест - пусть за базу платят, не обеднеют.

Аноним Пнд 14 Июл 2014 17:34:20  #329 №370227 

Посоны, подскажите, в Remoting-е ChannelSink-и уникальные для соединения? Если я пытаюсь из провайдера инжектить и входными данными ему подсунуть ip port, то он не может оказаться участником цепочки от другого соединения?

Аноним Пнд 14 Июл 2014 23:32:46  #330 №370344 

Бля, наконец-то мне дали таск запилить новую приложуху, но вот в чем беда, времени мало и вообще слошной СКРАМ.
Как робить-то? Хотелось бы с энтитифреймворками всякими, да с ДИ и маппингами. Но стоит ли оно того?

Аноним Пнд 14 Июл 2014 23:34:23  #331 №370345 

>>370344
>стоит ли оно того
Нет!

Аноним Срд 16 Июл 2014 11:40:56  #332 №370682 

>>370214
Что-то такое?

<DataGrid Name="Categories" ItemsSourse="{Binding Path=Categories}" SelectedItem="{Binding SelectedCategory"}/>
<DataGrid Name="Services" ItemsSource="{Binding Path=SelectedCategory.Services}"/>

public class Data: тут типа INotify чего-то там
{
public ObservableCollection<Category> Categories { get; set; }
public Category SelectedCategory {
get { тут загружаем услуги; }
set;
}
}

public class Category
{
public ObservableCollection<Service> Services { get; set; };
}

>>370219
Зачем платить за базу, если можно за нее не платить? То есть когда там сотни клиентов, оно может и лучше купить хорошую СУБД, но для маленьких конторок и птицы с постгресом хватает. А экспресс только при разработке разве что.
Аноним Срд 16 Июл 2014 11:47:14  #333 №370685 

Шарпаны, в впф понадобился ActionList из окноформ, чтобы можно было различные действия с интерфейсом (например, нажатие хоткея, выбор элемента контекстного меню и нажатие по кнопке) забиндить на одну команду. Причем список команд может меняться.
Пока сделал класс с командами и вот такую привязку

<ContextMenu ItemsSource="{Binding Path=Commands.Actions}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding Path=Action}"/>
<Setter Property="Header" Value="{Binding Path=Name}"/>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>

То есть это контекстное меню со списком команд, заголовками и иконками из коллекции.
Нужно еще что-то вроде этого, только для клавиш и битбаттонов.
Где луркать?
Аноним Срд 16 Июл 2014 12:12:25  #334 №370694 

>>370685

<ItemsControl ItemsSource="{Binding Collection}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}"></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Срд 16 Июл 2014 12:23:52  #335 №370698 

>>370685


transient final abstract class КококКукарекуКокоКококо extends Кукарек implements КококоПокПокКукарекуКукарекКокок, КококоКококо {

КококоПокПокКукарекКукарекуКудахтахтах кококоПокПокКукарекКукарекуКудахтахтах = new КококоПокПокКукарекКукарекуКудахтахтах();

Кукарек кукарек = кукарекКукарекуКудахтахтахКококо.getКудахтахтахКукарекКукарекуКокок().getКукарек();

КококоКукарекКудахКококКудахтахтах кококоКукарекКудахКококКудахтахтах = new КококоКукарекКудахКококКудахтахтах();

Кококо кококо = кококоКокоКукарек.getКококКококо().getКококо();

Кококо кококо = new Кококо();


synchronized transient private void setКукарекКукарекуКококо<Кокок>(КукарекКукарекуКококо<Кокок> кукарекКукарекуКококо) {
this.кукарекКукарекуКококо = кукарекКукарекуКококо;
}

native protected transient public private volatile final static void setКококоКококо(КококоКококо кококоКококо) {
this.кококоКококо = кококоКококо;
}

volatile final synchronized public static void setКокок(Кокок кокок) {
this.кокок = кокок;
}

volatile protected final synchronized transient private void setКококКококо(КококКококо кококКококо) {
this.кококКококо = кококКококо;
}

native final synchronized КудахтахтахКококоКококо<Кокок> getКудахтахтахКококоКококо<Кокок>() {
return this.кудахтахтахКококоКококо;
}

transient volatile protected final synchronized native public КококоКудах getКококоКудах() {
return this.кококоКудах;
}

native final volatile transient protected static private public synchronized КококоКукарек getКококоКукарек() {
return this.кококоКукарек;
}

native static КудахКукарекКококоКукарек getКудахКукарекКококоКукарек() {
return this.кудахКукарекКококоКукарек;
}

protected public transient static КукарекКокоКококо<Кокок> кукарекКокоКококо(Кукарек кукарек) {
кукареку.setКококо(this.кококо);
кудахтахтахКококоКококоКококКоко.setПокПокКукарекКукарекуКококоКукарек(this.покПокКукарекКукарекуКококоКукарек);
кококоКококо.setКукарекКококоКудахтахтахКудах(this.кукарекКококоКудахтахтахКудах);

return new КукарекКокоКококо<Кокок>();
}

protected static transient private native synchronized volatile КукарекуКукарекуКококоКукарекКококо кукарекуКукарекуКококоКукарекКококо(КудахКукарекКукарек<Кокок> кудахКукарекКукарек, Кукарек кукарек) {
кококоКококоКокоКукареку.setКукарекКудахКококоКококо(this.кукарекКудахКококоКококо);
КокоКококоКукареку<Кокок> кокоКококоКукареку = new КокоКококоКукареку<Кокок>();
кукарекПокПок.setКококоКукарекуКококоКукарекКудахтахтах(this.кококоКукарекуКококоКукарекКудахтахтах);
кукареку.setКукарекКококоКокоКококо(this.кукарекКококоКокоКококо);

while(кукарекуКококо.isКококоКудахПокПокКококоКококо()) {
коко.setКукарекКококоКукарекКококоКудахтахтах(this.кукарекКококоКукарекКококоКудахтахтах);
КукарекКококПокПокКукарек кукарекКококПокПокКукарек = кукарекКукарекуКококоКококо.getКудахтахтах().getКукарекКококПокПокКукарек();
КукарекКудах кукарекКудах = new КукарекКудах();
Кококо кококо = new Кококо();
кококоКукарекКудахтахтах.setКудахтахтах(this.кудахтахтах);
}

return new КукарекуКукарекуКококоКукарекКококо();
}

native synchronized public transient КукарекуКокоПокПокКудах кукарекуКокоПокПокКудах(Кудахтахтах кудахтахтах) {
кококКукарекуКудахтахтахКукарек.setКокоКококо(this.кокоКококо);
КококоКококоКококоКудахтахтах кококоКококоКококоКудахтахтах = кукарекКукарек.getКококоКококПокПок<Кокок>().getКококоКококоКококоКудахтахтах();

return new КукарекуКокоПокПокКудах();
}

static volatile private transient final synchronized public protected КукарекКукарекуКудах<Кокок> кукарекКукарекуКудах() {
кукарекКококоКококоПокПок.setКукарекКококоКококКукареку(this.кукарекКококоКококКукареку);

Кукарек[][][][] кукарек = new Кукарек[1266723368][1157625000][1157625000][1298596571];

for(int i = 0; i < 1266723368; ++i) {
for(int j = 0; j < 1157625000; ++j) {
for(int k = 0; k < 1157625000; ++k) {
for(int l = 0; l < 1298596571; ++l) {
кукарек[i][j][k][l] = new Кукарек();
}
}
}
}

return new КукарекКукарекуКудах<Кокок>();
}

volatile transient static synchronized private КококоПокПок кококоПокПок() {
КококКококо кококКококо = кококоКококоКукарекуКукарекКудахтахтах.getКококо().getКококКококо();
КудахтахтахКококКукарек<Кокок> кудахтахтахКококКукарек = кукарекКудахтахтахКудахПокПок.getКококоКококоКококоКудахтахтах().getКудахтахтахКококКукарек<Кокок>();
покПок.setКукарекуПокПокКококоКококо(this.кукарекуПокПокКококоКококо);
кукарекуКукарек.setКококКудахКокоКукареку(this.кококКудахКокоКукареку);

ПокПокКококоКукарекКококоКукарек[][][][][][][][][] покПокКококоКукарекКококоКукарек = new ПокПокКококоКукарекКококоКукарек[1266723368][1174241375][1174241375][1157625000][1157625000][1157625000][1157625000][1174241375][1280824056];

for(int i = 0; i < 1266723368; ++i) {
for(int j = 0; j < 1174241375; ++j) {
for(int k = 0; k < 1174241375; ++k) {
for(int l = 0; l < 1157625000; ++l) {
for(int m = 0; m < 1157625000; ++m) {
for(int n = 0; n < 1157625000; ++n) {
for(int o = 0; o < 1157625000; ++o) {
for(int p = 0; p < 1174241375; ++p) {
for(int q = 0; q < 1280824056; ++q) {
покПокКококоКукарекКококоКукарек[i][j][k][l][m][n][o][p][q] = new ПокПокКококоКукарекКококоКукарек();
}
}
}
}
}
}
}
}
}

return new КококоПокПок();
}

private transient native public КококоКудах кококоКудах(Кококо кококо, КукарекКукарекуКококКудахтахтахКококо кукарекКукарекуКококКудахтахтахКококо) {
кукарекКококоКудахтахтах.setКококо(this.кококо);

return new КококоКудах();
}

native volatile synchronized КудахтахтахКукарекКококКукареку кудахтахтахКукарекКококКукареку(КудахтахтахКококоКококоКококо кудахтахтахКококоКококоКококо) {
ПокПок покПок = new ПокПок();
кукарекуКукарекКукарекКококоКоко.setКукарекКукарек(this.кукарекКукарек);
кукарекуПокПокКококо.setКукарек(this.кукарек);

if(кукарекКукарекуКудах.isКокоКудахКококо<Кокок>()) {
КококоКукарек кококоКукарек = кукарекКококоПокПок.getКукарекуКукарекуКукарекКукарекКококо().getКококоКукарек();
КудахтахтахКококо кудахтахтахКококо = кукарекКококоКококо.getКукарекКококоПокПокКукарекуКудахтахтах().getКудахтахтахКококо();
КукарекКукареку кукарекКукареку = кукареку.getКокоКудахтахтах().getКукарекКукареку();
кококоКококоКукарекуКококо.setКукарекКукареку(this.кукарекКукареку);

if(кудах.isКукарекКокоКудахтахтахКококо()) {
покПокКококоКококоКококо.setКококКококоКококоКококо(this.кококКококоКококоКококо);
покПокКококо.setКококо(this.кококо);

if(кукарекКококоКудахтахтах.isКудахКукарекуКокок<Кокок>()) {
кукарек.setКококо(this.кококо);
кукарекуКудахтахтах.setКококКукарекуКококоКукарекКудах(this.кококКукарекуКококоКукарекКудах);
КокоКукарекКококо<Кокок> кокоКукарекКококо = new КокоКукарекКококо<Кокок>();

КудахПокПокКудахтахтахКококоКококо[][][][][][][][] кудахПокПокКудахтахтахКококоКококо = new КудахПокПокКудахтахтахКококоКококо[1280824056][1157625000][1174241375][1174241375][1157625000][1157625000][1157625000][1157625000];

for(int i = 0; i < 1280824056; ++i) {
for(int j = 0; j < 1157625000; ++j) {
for(int k = 0; k < 1174241375; ++k) {
for(int l = 0; l < 1174241375; ++l) {
for(int m = 0; m < 1157625000; ++m) {
for(int n = 0; n < 1157625000; ++n) {
for(int o = 0; o < 1157625000; ++o) {
for(int p = 0; p < 1157625000; ++p) {
кудахПокПокКудахтахтахКококоКококо[i][j][k][l][m][n][o][p] = new КудахПокПокКудахтахтахКококоКококо();
}
}
}
}
}
}
}
}
} else {
кудахПокПок.setКококоКококКококоКукареку(this.кококоКококКококоКукареку);
}
} else {
покПокКококоКукарек.setКудахтахтахКококо(this.кудахтахтахКококо);
кококо.setКококоКудахтахтахКокоКукарекКукареку(this.кококоКудахтахтахКокоКукарекКукареку);
КокоКукарекуКукарек<Кокок> кокоКукарекуКукарек = кукарекуКококоПокПокКудахтахтахКококо.getКукарекуКукарекКококоКококоКудахтахтах().getКокоКукарекуКукарек<Кокок>();
кукарек.setКукарекКококо(this.кукарекКококо);
}
} else {
КудахтахтахКококоКококоКококоКукарек кудахтахтахКококоКококоКококоКукарек = кококо.getКудахтахтахКококКукарек<Кокок>().getКудахтахтахКококоКококоКококоКукарек();
кукарекКукарекуКудах.setКококКококоКукарек<Кокок>(this.кококКококоКукарек);
кукарекКокоКококоКукарек.setКококо(this.кококо);

if(кококоКококо.isКудахКококо()) {
покПокКококоКудахтахтахКококо.setКококоКудахтахтахКукарек<Кокок>(this.кококоКудахтахтахКукарек);
кукарекКококоПокПокКококо.setКудахтахтахКудахтахтахКококоКудахКукарек(this.кудахтахтахКудахтахтахКококоКудахКукарек);
КукарекуКудахПокПок<Кокок> кукарекуКудахПокПок = new КукарекуКудахПокПок<Кокок>();

while(кококКококоКококоПокПокКококо.isКококо()) {
кукарекКококоПокПокКококо.setКукареку(this.кукареку);
КукарекКукарекКудахтахтахКудахтахтах кукарекКукарекКудахтахтахКудахтахтах = new КукарекКукарекКудахтахтахКудахтахтах();

Кококо[][][][] кококо = new Кококо[1280824056][1157625000][1157625000][1280824056];

for(int i = 0; i < 1280824056; ++i) {
for(int j = 0; j < 1157625000; ++j) {
for(int k = 0; k < 1157625000; ++k) {
for(int l = 0; l < 1280824056; ++l) {
кококо[i][j][k][l] = new Кококо();
}
}
}
}
}
} else {
кукарек.setКукарекКудах(this.кукарекКудах);
кококо.setКококКококо(this.кококКококо);
}
}

return new КудахтахтахКукарекКококКукареку();
}
}

Аноним Срд 16 Июл 2014 15:28:46  #336 №370742 

>>370694
Спасибо, про datatemplate я уже сам нагуглил, только я toolbar использовал вместо itemscontrol. Меню тоже переделал, чтоб с картинками было.
А вот как то же самое сделать для хоткеев? То есть мне, например, надо чтобы пользователь мог сам настроить горячие клавиши на все имеющиеся команды. Что-то вроде

<Window.InputBindings ItemsSource="{Binding Path=KeyboardCommands">
<Window.InputBindings.ItemTemplate>
<DataTemplate>
<KeyBinding Key="{Binding Path=Key}" Command="{Binding Path=Command}" />
</DataTemplate>
</Window.InputBindings.ItemTemplate>
<Window.InputBindings>

только чтоб работало.
Или в MVVM так нельзя делать?
>>370698
Хлебни борщеца, быдло.
Аноним Срд 16 Июл 2014 22:24:38  #337 №370818 

>>370742
Вот этот пример попробуй, если еще не
http://stackoverflow.com/questions/9385129/window-inputbindings-with-a-bound-collection
У меня взлетело.

Аноним Срд 16 Июл 2014 23:41:48  #338 №370843 
1405539708528.jpg

Как организовать уровень доступа к данным? Использую ентити фрейвмворк.

Аноним Срд 16 Июл 2014 23:49:27  #339 №370846 

>>370843
http://msdn.microsoft.com/en-us/library/ee658127.aspx

Аноним Чтв 17 Июл 2014 09:10:17  #340 №370942 

>>370698
Чё ты жабу-то лепишь? В C# всё по-другому же.

Аноним Чтв 17 Июл 2014 09:41:27  #341 №370947 

>>370846
Лапша какая-то. Мсдн как всегда в своем духе, нихуя конкретного, только перечисления.

Аноним Чтв 17 Июл 2014 16:43:05  #342 №371044 

>>370818
10 ИЗ 10 ГОСПОДИ 10 ИЗ 10

Аноним Чтв 17 Июл 2014 18:20:06  #343 №371068 

Как в формах отлавливать MM_ сообщения, а именно MM_MIXM_CONTROL_CHANGE? Перегружаю WndProc(ref Message m), в ней проверяю m.Msg, но там отражаются только WM_ сообщения. Анон, помоги, пожалуйста, второй день мучаюсь.

Аноним Чтв 17 Июл 2014 21:00:34  #344 №371087 

>>371068
Когда это сообщение возникает то, чтоб проверить?

Аноним Чтв 17 Июл 2014 21:38:33  #345 №371100 

>>371087
Да, забыл уточнить: при изменении громкости приложения в микшере системы.

Аноним Чтв 17 Июл 2014 21:46:50  #346 №371104 

>>371100
Посмотри
http://www.cprogramdevelop.com/5405799/
и возможно https://workspaces.codeproject.com/maurice-tarrant/a-synchronized-volume-control-for-your-application/article/
Я ползунок в микшере двигаю, сообщения 0x3d1 (вроде оно) сыплются десятками блядь. И когда звук в приложении проигрываю - тоже.

Аноним Птн 18 Июл 2014 10:40:16  #347 №371172 

Как поставить WPF Toolkit?
Если ставить через менеджер пакетов, то эта тварь тянет за собой еще кучу всякого говна, которое весит больше чем весь мой остальной проект, так что nuget не предлагать.
Просто добавить reference не получается, в xaml пространство имен не появляется. Dll разблокировал.
Алсо, есть альтернативы без подобного пердолинга?

Аноним Птн 18 Июл 2014 10:43:22  #348 №371173 

>>371172
А, все, уже нашел.
Надо было "http://schemas.xceed.com/wpf/xaml/toolkit" указывать вместо того что автоматически ставится.

Аноним Птн 18 Июл 2014 10:47:36  #349 №371175 

>>371104
Анон, добра тебе. Я, в силу своего слабоумия, не импортировал функцию mixerOpen из winmm.dll.

Аноним Птн 18 Июл 2014 21:40:32  #350 №371299 

Шарпаны, как с LINQ получить список индексов вхождения символа в строку? Как найти индекс первого и последнего я нашел, но как получить все индексы - нет.

Аноним Птн 18 Июл 2014 22:15:51  #351 №371301 

>>371299
http://stackoverflow.com/questions/12765819/more-efficient-way-to-get-all-indexes-of-a-character-in-a-string
И не выебывайся со строками. А то понапишут всякого говна в кода, а потом плачешь, когда читаешь
someStr.replace('1',2').replace('3','4').substring(2,5).toUpper().Trim()

Аноним Суб 19 Июл 2014 11:38:14  #352 №371386 

Дата Время в стригу сама неконвертируется, конвертируй ее анон.
В общем.
Ищу самый эффективный способ дату время в нужный мне формат перегнать.
Пока дошел до такого:

[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static string dateTimeToISO(DateTime dateTime)
{
return (dateTime.Year.ToString() + "-" + dateTime.Month.ToString("D2") + "-" + dateTime.Day.ToString("D2") + "T" +
dateTime.Hour.ToString("D2") + ":" + dateTime.Minute.ToString("D2") + ":" + dateTime.Second.ToString("D2") +
"." + dateTime.Millisecond.ToString("D3"));
}


Работает немного быстрее чем:
strdate = dateTime.ToString("s") + '.' + dateTime.Millisecond.ToString("D3");


Есть ли какие-то еще варианты?
Может хитрость какая-то, или запретная техника?

Я себе если честно плохо представляю как работает конкатенация через "+".
Было бы круто если бы при этом не создавались бы лишние объекты.
Ну то есть если бы я писал на няшненькой, то я бы создал одну стригу фиксированной длины, и последовательно в нее бы записывал циферки.
Аноним Суб 19 Июл 2014 12:18:04  #353 №371387 

>>371386
http://stackoverflow.com/questions/3025361/c-sharp-datetime-to-yyyymmddhhmmss-format
держи

Аноним Суб 19 Июл 2014 12:25:12  #354 №371388 

>>371387
Про встроенное форматирование я знаю.
Вопрос был об эффективном - быстром способе.
А не красивом синтаксисе.

Аноним Суб 19 Июл 2014 13:51:05  #355 №371405 

>>371388
Вместо конкатенации можешь StringBuilder.Append попробовать

Аноним Суб 19 Июл 2014 18:43:44  #356 №371461 
1405781024343.jpg

>>371405
>Вместо конкатенации можешь StringBuilder.Append попробовать
Да, спасибо, в среднем на 10% быстрее работает со стриг билдером.
Я же правильно все делаю?


[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static string dateTimeToISOStringBuilder(DateTime dateTime)
{
StringBuilder stb = new StringBuilder(50);
stb.Append(dateTime.Year.ToString());
stb.Append("-");
stb.Append(dateTime.Month.ToString("D2"));
stb.Append("-");
stb.Append(dateTime.Day.ToString("D2"));
stb.Append("T");
stb.Append(dateTime.Hour.ToString("D2"));
stb.Append(":");
stb.Append(dateTime.Minute.ToString("D2"));
stb.Append(":");
stb.Append(dateTime.Second.ToString("D2"));
stb.Append(".");
stb.Append(dateTime.Millisecond.ToString("D3"));

return (stb.ToString());
}
Аноним Вск 20 Июл 2014 13:24:28  #357 №371611 

Посоны, поясните за WebClient
хули когда я делаю DownloadString, все скачивается заебись, но когда я делаю его же во второй раз возвращается пустая строка. Это так и задумано - типа объект одноразовый? или я чего то делаю не так?

Аноним Вск 20 Июл 2014 14:35:17  #358 №371622 

>>371611
Он не одноразовый. Попробуй с другого сайта скачать страницу.

Аноним Вск 20 Июл 2014 15:50:31  #359 №371635 

>>371622
точно, похоже какие-то анальные шуточки с того сайта откуда я качал

Аноним Вск 20 Июл 2014 15:50:45  #360 №371636 

>>371461
Что за уебанское форматирование на картинке? Сразу видно - баба кодила.

Аноним Срд 23 Июл 2014 22:20:24  #361 №372432 

бамп

Аноним Чтв 24 Июл 2014 23:38:57  #362 №372795 

Суть такова. Есть табличка, назвем ее ГенерикЮзер и есть поклассы Питурд, Хомяк и т.д со своими личными свойствами (полями). Как грамотно организовать наследование или просто наличие отдельных полей в бд? ЕФ БД сперва.

Аноним Птн 25 Июл 2014 03:19:14  #363 №372865 

>>372795
http://msdn.microsoft.com/en-us/data/jj618293.aspx

Аноним Птн 25 Июл 2014 12:06:50  #364 №372916 

Я писал программу, в которой необходимо часто читать байты в случайном порядке из большого файла, и, естественно, я тупо пользовался методом FileStream.Read() и свойством Position, но такое решение работало очень медленно (например, файл в 20 МБ читался целую минуту).
Попробовав решить эту проблему при помощи гугла, я узнал, что нужно писать и читать файлы, используя буфер. Я реализовал такую логику, и чтение действительно ускорилось, тот же 20-мегабайтный файл стал читаться менее чем за секунду, однако позже мне стало известно, что FileStream тоже пользуется буфером, поэтому он должен был работать быстро без дополнительных усилий. Чтобы выяснить, почему в реальности всё по-дургому, я замерил время исполнения двух разных методов чтения.
Этот медод тратит на чтение минуту. Тут используется свойство Position.


FileStream someFile = new FileStream(@"С:\file.iso", FileMode.Open); // file.iso — примерно 20 МБ
long length = someFile.Length;
for (int i = 0; i < length; i++)
{
someFile.Position = i;
byte b = (byte)someFile.ReadByte();
}

Этот метод не использует свойство Position. Время на чтение: 290 миллисекунд.

FileStream someFile = new FileStream(@"С:\file.iso", FileMode.Open); // file.iso — примерно 20 МБ
long length = someFile.Length;
for (int i = 0; i < length; i++)
{
byte b = (byte)someFile.ReadByte();
}

Вопрос: что я не так делаю? Почему Position так сильно влияет на производительность чтения? В MSDN'е написано:
>When a FileStream object does not have an exclusive hold on its handle, another thread could access the file handle concurrently and change the position of the operating system's file pointer that is associated with the file handle. In this case, the cached position in the FileStream object and the cached data in the buffer could be compromised.
но по-моему к моему коду это не относится, так как никакой другой поток указатель файла не меняет.
Аноним Птн 25 Июл 2014 16:40:53  #365 №372983 

>>372916
>но по-моему к моему коду это не относится, так как никакой другой поток указатель файла не меняет.
Но ты меняешь его в текущем потоке, не так ли?
А раз ты его меняешь, то файл стрим начинает перекешировать новый кусок файла.
Файл стрим - для последовательного чтения предназначен, как и любой стрим в принципе.
понимаешь.
Стрииииим.
Потооок - это что-то такое однонаправленное.

>Вопрос: что я не так делаю?
Неправильно задаешь вопрос для начала.

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

>20 МБ
>большого файла

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

Или если участки все же не полностью рандомные используй кеширование.

Аноним Птн 25 Июл 2014 17:23:45  #366 №372999 

>>372983
>текущем потоке
Да, но это не another thread тред же.
>А раз ты его меняешь
Методы Read() тоже меняют позицию в этом же потоке, а буфер уже заполнен, и, если я меняю позицию с 0 на 1, скажем, то я не понимаю, зачем буфер нужно перезагружать, ведь выхода за его границы ещё не произошло.
>Файл стрим - для последовательного чтения предназначен
Но ведь жёсткий диск — это устройство произвольного доступа, а FileStream работает с файлами на диске.
>читай из файла напрямую.
Это как? FileStream это не напрямую?

Аноним Птн 25 Июл 2014 17:55:30  #367 №373006 

>>372999
Посмотри искодники сеттера у Position, там же миллионы оверхеда и проверок и кэширования. Ты даже если в том же цикле будешь просто менять позицию (без какого-либо чтения), то это займет больше времени, чем прочитать разом весь файл в память.

Аноним Птн 25 Июл 2014 20:32:24  #368 №373037 
1406305944045.png

>>372999
>Да, но это не another thread тред же.
И?
>если я меняю позицию с 0 на 1, скажем, то я не понимаю, зачем буфер нужно перезагружать
А нужно ли?

>Методы Read() тоже меняют позицию
Он осуществляет последовательное побайтное чтение.
Последовательное чтение гораздо быстрее произвольно. Как для самого жесткого диска, так и для программной среды, ненужно устанавливать указатель в нужное место каждый раз итд.
Буфер напрямую тут не при чем.

>Но ведь жёсткий диск — это устройство произвольного доступа, а FileStream работает с файлами на диске.
И?
Ты рассуждаешь о вещах о которых у тебя весьма смутное, и ошибочное представление. Иди учи матчасть для начала.
Закрой книжку по сисярпу и иди разбирайся с тем как устроенны жесткие диски, как они хранят записывают и читают данные.
После этого находи что-то по системному программированию и разбирайся как ОС с этими дисками взаимодействует, потом находи курс по С (не С++) и внимательно изучай с комментариями и переводом на ассемблер как происходит работа с файлами.

>Это как? FileStream это не напрямую?
попробуй пользовать метод Seek для установки указателя в нужное место файла.
http://sauron.org.ua/post/46


http://habrahabr.ru/post/165729/
>Если вы читаете сколь-угодно байт из файла, то будет прочитан весь кластер, а если данные пересекают границу двух кластеров – то два кластера. Хотя, стоит учесть, что все жёсткие диски и RAID контроллеры имеют внутренний кэш, который может существенно ускорить чтение и запись секторов.
>Для избегания повторных операций чтения/записи, всегда оперируйте последовательными блоками памяти, размером в кластер.

Аноним Птн 25 Июл 2014 20:36:11  #369 №373039 

>>372999
>Это как? FileStream это не напрямую?
Нет. Стримы - это оче высокий уровень абстракций с перделками и свистелками внутри.
Как - я тебе увы не отвечу, но что-то вроде нарыл в интернетах, погугли сам попробуй.
Вот что-то есть http://habrahabr.ru/post/153181/

Может тут есть кто-то кто знает как работать с апи ОС напрямую из сисярпа?

Аноним Суб 26 Июл 2014 03:03:41  #370 №373096 

>>373037
>И?
Что и? В документации не пишут, что если ты будешь менять указать при помощи Position, то обязательно будет перезагружден буфер.
>Ты рассуждаешь о вещах о которых у тебя весьма смутное, и ошибочное представление.
Ты так и не ответил на мой вопрос. Зачем FileStream перезагружает буфер, когда это не нужно, ведь если бы не перезагружал, то работал бы быстро? Началаось чтение, заполнился буфер в несколько КБ, меняется указатель с 0 на 1, это, очевидно, не приводит к выходу за границы нескольких КБ, следовательно, буфер перезагружать не нужно. Вообще, зачем тогда нужен буфер FileStream'у, это что, представление кластера и при любом изменении позиции он будет перезаписываться?
>попробуй пользовать метод Seek для установки указателя в нужное место файла.
Пробовал, он такой же медленный, кроме того, Position и так его вызывает.

Аноним Суб 26 Июл 2014 04:21:59  #371 №373106 

>>373096
>Что и? В документации не пишут, что если ты будешь менять указать при помощи Position, то обязательно будет перезагружден буфер.
Наверное.

>Ты так и не ответил на мой вопрос. Зачем FileStream перезагружает буфер, когда это не нужно
Задай разработчикам майкрософта.
Я вообще свечку не держал, и что за магия там внутри происходит не знаю. Я только предполагают.
Мой ответ - за шкафом. Так устроен файл стрим.

>Вообще, зачем тогда нужен буфер FileStream'у
Читать данные с диска порциями в память. Чтобы затем их обрабатывать.

>Ты так и не ответил на мой вопрос.
Я на допросе?
Изучи то, как система работает с жестким диском и файлами.

Добавь свою проверку например.
Я не думаю, что это даст тебе прирост производительности, учитывая тот факт, что читать данные тебе нужно в произвольном порядке.

Аноним Суб 26 Июл 2014 04:57:39  #372 №373109 

>>373106
>Изучи то, как система работает с жестким диском и файлами.
Я знаю, как она работает с файлами. Для того, чтобы знать, что чтение и запись происходит по кластерам, не нужно изучать код на ассемблере. Ты бы мне ещё посоветовал разобраться в том, как JITter преобразует мой код в инструкции конкретной платформы.
В принципе, спасибо за ответ, всё стало намного понятнее, короме того, что FileStream перезагружает свой буфер после того как я просто пишу someFile.Position = someFile.Position (ведь, по сути, это то, что происходило у меня в коде).
У меня ещё один вопрос. Ты говорил, что, если уж так хочется скорости, то нужно загружать файл в память. Программе моей нужен довольно произвольный доступ к байтам потому, что она работает с wav-файлами, я могу редактировать случайные блоки файла, содержащие нужные мне семплы, также программа может генерировать wav-файл, но если это делать в памяти, то при генерации где-то 200-мегабайтного файла, я получаю OutOfMemoryException, а памяти ещё достаточно, откуда же тогда исключение? Собственно поэтому я стал работать с файлами на диске, потому что мне нужно иметь возможность свободно и быстро работать с фалами до 4 ГБ.

Аноним Суб 26 Июл 2014 05:37:05  #373 №373110 
1406338625968.png

>Ты бы мне ещё посоветовал разобраться в том, как JITter преобразует мой код в инструкции конкретной платформы.
Как ты собрался программировать если не представляешь, хотя бы примерно, что получается в итоге на низком уровне?
Ты должен знать как работает технология прежде чем ей пользоваться.

>короме того, что FileStream перезагружает свой буфер после того как я просто пишу someFile.Position = someFile.Position (ведь, по сути, это то, что происходило у меня в коде).
Я тебе сейчас совсем расстрою. Но вызов Seek не только перезагружает буфер.
Ты и так все понимаешь конечно.
Но я на всякий случай расскажу, вдруг ты не такой умный как говоришь.
Так вот. Когда ты вызываешь Seek, пройдя через жопу уровней абстракций, это приводит к Seek головки диска нужного сектора и операция сия занимает в современных жестких дисках в среднем 15 миллисекунд!
Правда, я только что проверил, с SSD скорость падает примерно так же.
Сложно сказать что за дерьмо происходит в этом файл стриме, поэтому если все таки хочешь эффективного доступа, пользуй Си и винапи.

>после того как я просто пишу someFile.Position = someFile.Position (ведь, по сути, это то, что происходило у меня в коде
Потому, что в реализации метода нет проверки на это.
Напиши простую обертку учитывающую этот момент, если считаешь необходимым.

>Ты говорил, что, если уж так хочется скорости, то нужно загружать файл в память.
Да.

>но если это делать в памяти, то при генерации где-то 200-мегабайтного файла, я получаю OutOfMemoryException, а памяти ещё достаточно, откуда же тогда исключение?
Увы я не экстрасенс. Очевидно, что где-то в коде ошибка. Давай код и анон посмотрит.


>Собственно поэтому я стал работать с файлами на диске, потому что мне нужно иметь возможность свободно и быстро работать с фалами до 4 ГБ.
Грузи в память.

Если памяти мало грузи большими блоками. Тебе то редактировать все равно нужно большими кусками, а не по отдельным байтам в сотнях мегабайт друг от друга.
Можешь посмотреть вот сюда http://msdn.microsoft.com/en-us/library/dd997372%28v=vs.110%29.aspx
Но мой тебе совет. Грузи все в память, и не мучайся.

Аноним Суб 26 Июл 2014 05:40:20  #374 №373111 

>>373037
>Ты рассуждаешь о вещах бла бла бла я нихуя не знаю, но хочу сойти за умного
Ну охуеть! У жёсткого диска последовательное чтение-то ОКАЗЫВАЕТСЯ быстрее рандомного. Вот это новость. Вот уж спасибо, а то мы тут не знали.
>>373039
>как работать с апи ОС напрямую из сисярпа?
[DllImport("kernel32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
public static extern ulong GetTickCount();
//можно звать
>>373109
>FileStream перезагружает свой буфер
Полагаю, что это проще, чем выяснять на сколько ты сместился, вышел ли ты за пределы буфера, и если да, то куда и насколько. Тот мудак тебе правильно сказал, что стрим - он для последовательного чтения.
>OutOfMemoryException
Лол, куча закончилась? Ты, наверное, что-то не так делаешь. Не верю, что шарп не может выделять глобальную память. Это же такой-то отсос был бы.

Аноним Суб 26 Июл 2014 05:52:36  #375 №373112 

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


for (int i = 0; i < length; i++)
{
someFile.Position = i;
byte t = (byte)someFile.ReadByte();
}

и

for (int i = 0; i < length; i++)
byte t = (byte)someFile.ReadByte();

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

MemoryStream ms = new MemoryStream();
for (int i = 0; i < 2000000000; i++)
ms.WriteByte(0);

Ровно на 256 мегабайтах будет исключение.
>>373111
> стрим - он для последовательного чтения.
Да я ж не спорю с этим, теперь мне интересно, почему буфер FileStream'а работает так тупо.
Аноним Суб 26 Июл 2014 07:55:23  #376 №373115 
1406346923160.jpg

>>373111
>Лол, куча закончилась? Ты, наверное, что-то не так делаешь. Не верю, что шарп не может выделять глобальную память. Это же такой-то отсос был бы.
>>373112
>Ровно на 256 мегабайтах будет исключение.
Короче, в 32битном режиме, оно из кучи выжимает максимум около 1.6 гигабайта. Что вообще норм.

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

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

byte[] testbuf1 = new byte[2000000000];
byte[] testbuf2 = new byte[2000000000];
byte[] testbuf3 = new byte[2000000000];
for (int i = 0; i < 2000000000; i++)
{
testbuf1[i] = 245;
testbuf2[i] = 245;
testbuf3[i] = 245;

}


Я не думаю, что тебе нужен для этого мемори стрим.

>>373111
>Не верю, что шарп не может выделять глобальную память.
Может. Если я правильно понял о чем речь.

unsafe
{
byte* chunkOfMemory = (byte*)Marshal.AllocHGlobal(int.MaxValue);
byte* chunkOfMemory1 = (byte*)Marshal.AllocHGlobal(int.MaxValue);
byte* chunkOfMemory2 = (byte*)Marshal.AllocHGlobal(int.MaxValue);

for (int i = 0; i < int.MaxValue; i++)
{
chunkOfMemory[i] = 245;
chunkOfMemory1[i] = 245;
chunkOfMemory2[i] = 245;
}
}


>>373112
>логически это одно и то же последовательное чтение по байтам, а не по блокам
Логически все же не одно и тоже.
>ты же согласишься со мной и не будешь снова обвинять меня в невежестве
Я тебя ни в чем не обвиняю.
Ничего личного, просто ты хорошо демонстрируешь программистов которые кроме шарпа ничего не видели.
И это плохо.
Прежде чем использовать шарп, нужно пройти путь от ассемблера до С++, и только потом шарп.
Потому что иначе - ты не будешь понимать что твой код делает.
Нужно знать систему с которой ты работаешь. Аппаратную платформу, стандартные реализации тех или иных задач.
И тем более фичи самого шарпа.

Вот например, ты же знаешь надеюсь, что мемори стрим изначально содержит небольшой буфер, и при его заполнении будет создавать новый в 2 раза больше(алгоритм на самом деле сложнее) и переписывать данные из старого в него? Я например так и не дождался пока оно таким образом на 2 гигабайта заполнится, начинается пиздец угар и содомия с бесконечным перевыделением памяти.

>почему буфер FileStream'а работает так тупо.
- > >>373111
>Полагаю, что это проще, чем выяснять на сколько ты сместился, вышел ли ты за пределы буфера, и если да, то куда и насколько. Тот мудак тебе правильно сказал, что стрим - он для последовательного чтения.

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

В общем слишком интеллектуальные реализации тут не оправданы.

Как-то так в общем. Надеюсь тебе это поможет.
Если файлы все же достаточно большие - больше пары гигабайт например, то все же читай их большими кусками.
Или пользуй Memory-Mapped Files.
Аноним Суб 26 Июл 2014 07:57:24  #377 №373116 
1406347044004.jpg

>>373115
Пиздец я тут засиделся с вами, аноны.
Сладких снов.
А я пойду тян будить.

Аноним Суб 26 Июл 2014 08:25:40  #378 №373118 

>>373115
>Ничего личного, просто ты хорошо демонстрируешь программистов которые кроме шарпа ничего не видели.
Няш, я пока только продемонстрировал разочарование от того, что FileStream не ведёт себя так, как я того ожидаю, ты же сразу делаешь далеко идущие выводы о том, что всё, что происходит за кулисами CLR для меня — магия. Конечно, я совсем не детально понимаю, как там всё работает, но кое-что я знаю.
Если ты думаешь, что для того, чтобы понять, что Seek(), не смотря на использование объектом буфера, каждый раз дёргает головку диска, мне нужно
> пройти путь от ассемблера до С++
, то я считаю, что ты преувеличиваешь (это ещё мягко говоря). Просто на таком высоком уровне абстракции я думал, что реализация свойсвта Position, будет учитвать некоторые моменты. К счастью, я сейчас открыл для себя http://msdn.microsoft.com/en-us/library/system.io.memorymappedfiles.memorymappedfile%28v=vs.110%29.aspx он работает с нужной мне скоростью.

Аноним Суб 26 Июл 2014 09:08:30  #379 №373121 

>>373112
>Ровно на 256 мегабайтах будет исключение.
Действительно, похоже на отсос. Попробуй каким-нибудь PExplorer'ом посмотреть, сколько хипа у тебя в бинарнике прописано. Попробуй поменять это значение и посмотри, будет ли опять падать (будет, главное - когда).
>>373115
>Короче, в 32битном режиме, оно из кучи выжимает максимум около 1.6 гигабайта
Это памяти доступной у тебя два гига, а размер кучи задаётся при компиляции и по-умолчанию обычно равен 64М.

Аноним Суб 26 Июл 2014 15:11:50  #380 №373161 

>>373121
>Это памяти доступной у тебя два гига
Доступной в куче.

>а размер кучи задаётся при компиляции
Тащемто он динамически увеличивается если надо.

>>373118
Я так понимаю, что
>путь от ассемблера до С++
Ты таки не проходил. Потому и не понимаешь о чем я пишу.
Вот пройдешь, тогда поймешь.

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

>он работает с нужной мне скоростью.
Зашибись, рад был помочь.

Аноним Суб 26 Июл 2014 15:38:30  #381 №373167 

>>373161
> Потому и не понимаешь о чем я пишу.
И что же я не понял из тобою написанного? Пока никаких тайных знаний, кроме «Seek() каждый раз обращается к диску, а это занимает 15 мс», я из нашего разговора не почерпнул, и я сомневаюсь, что изучение ассемблера привело бы меня к какому-нибудь офигительному выводу. То, что читать и писать лучше блоками без Seek(), мне и так понятно уже. Видишь, как быстро был пройден путь.

Аноним Суб 26 Июл 2014 15:58:44  #382 №373169 
1406375924384.jpg

>>373167
>И что же я не понял из тобою написанного?
Глубину своего непонимания.
>я сомневаюсь, что изучение ассемблера привело бы меня к какому-нибудь офигительному вывод
Для офигительных выводов есть гашиш.
А как работает ОС знать надо хоть примерно.

>Видишь, как быстро был пройден путь.
Вижу только юного падавана.
Эмоции ты контролировать должен, ситсенмое программирование изучать. Бездумное использование автоматического управления памятью к java стороне программирования привести может.

Аноним Суб 26 Июл 2014 16:03:11  #383 №373171 

>>373169
Все это НИНУЖНА

Аноним Суб 26 Июл 2014 16:05:37  #384 №373173 

>>373169
>А как работает ОС знать надо хоть примерно.
Я и так знаю, кроме того, "примерно" это растяжимое понятие, а ты, похоже, больше любишь потешить своё чсв, а не помочь.

Аноним Суб 26 Июл 2014 17:29:56  #385 №373204 

>>373161
>Доступной в куче.
Доступной в глобальной памяти.
>он динамически увеличивается
Он не увеличивается. Вообще. Никогда. Даже вручную. Совсем. Блядь. Можно создать ещё один хип, и скопировать в него данные со старого (или оставить их вместе), но не увеличить.
>если надо.
Выше, как видишь, надо, "а хули толку".
Короче, сейчас ты поднимаешь свою жопу, надеваешь тапочки, уёбываешь на свой хабр (или откуда ты там вылез) и больше не возвращаешься.

Аноним Суб 26 Июл 2014 17:37:01  #386 №373207 

>>373204
Зато я ебал твою мамашу.

Аноним Суб 26 Июл 2014 20:27:30  #387 №373276 

>>373204
>Доступной в глобальной памяти.
То есть память под массивы выделяется не из кучи?

>Выше, как видишь, надо, "а хули толку".
Ты о чем?

>>373173
Тебе кажется.
Не нужно проецировать свое желание тешить ЧСВ на других.

>а не помочь
Я тут пол гугла перерыл за тебя. Но у тебя сперма все мозги залила до такой степени, что даже "спасибо" сказать ты не в состоянии.
А еще наглости про мое ЧСВ говорить хватает.
Да иди ты нахуй.

Аноним Суб 26 Июл 2014 21:52:19  #388 №373310 
1406397139948.jpg

Привет двач, есть один ТФС, суть такова...

Имеет ли смысл настраивать построение билдов через TFS (а я так понял он это умеет) для небольшого проекта, просто для порядка и самодисциплины? Если собирать вручную из рабочей копии, то можно случайно собрать не то, что в репозитории (ну изменения какие-то незакомиченые или же глюканёт что-то и не заберётся какой-то файл из последней ревизии из-за конфликта, например). А тут я так понимаю можно настроить так, что собирать будет сам ТФС через свой билд сервер и выкладывать куда ему скажут, что исключит возможность таких ошибок.

Вск 27 Июл 2014 04:30:29  #389 №373400 

>>373276
>Я тут пол гугла перерыл за тебя.
Кому ты пиздишь? Перерыл он полгугла. В ответ на мой пустяковый вопрос ты послал меня изучать ассемблер и си, а это уже хамство. Когда же я стал задавать уточняющие вопросы ты сказал "я что, на допроси?!". Короче, сагаю от возмущения. А "спасибо" я сказал выше, но ты этого не заметил, как я вижу.

Вск 27 Июл 2014 07:45:50  #390 №373413 

>>373276
>То есть память под массивы выделяется не из кучи?
Скажи честно, ведь твой путь asm -> c -> c++ ограничился чтением названий языков на википедии? Что за хуйню ты несёшь?

Аноним Вск 27 Июл 2014 14:14:35  #391 №373457 

>>373400
>В ответ на мой пустяковый вопрос
Вопрос не пустяковый. Тебе кажется, что он пустяковый. Потому, что ты плохо разбираешься в вопросе. О чем я тебе не раз говорил.

>ты послал меня изучать ассемблер и си, а это уже хамство.
Я дал свою рекомендацию. Ты же зачем-то начал меня убеждать в том, что ты все и так знаешь и охуенный специалист вообще. Если так - хорошо для тебя. Но мне до этого нету абсолютно никакого дела.
>а это уже хамство.
Хамство тут только от тебя.
Ты пришел на форум, за бесплатной консультацией.
Я тебе бесплатную консультацию даю, а ты позволяешь себе высказывать свое недовольство, да еще вешать на меня всяко говно, ЧСВ я видители тешу.
Если ты сам такой охуенный специалист, откуда у тебя "пустяковые" вопросы?

>>373413
>Скажи честно, ведь твой путь asm -> c -> c++ ограничился чтением названий языков на википедии?
Нет.

>Что за хуйню ты несёшь?
В чем проблема?
Мне кажется ты пытаешься придираться к не совсем корректному(как тебе кажется) использованию мною терминологии.
Иди ка ты нахуй.
Говори по делу, если есть какие-то притенении, ненужно клоунау устраивать загадочным - "что за хуйню ты несешь?".
Покаместь что хуйню несешь только ты.

>>373204
>Можно создать ещё один хип, и скопировать в него данные со старого
Это и называется - увеличить.

Ты говоришь о хипе как о механизме выделения памяти, а я говорю о памяти выделяемой с его помощью.

Вск 27 Июл 2014 14:54:16  #392 №373462 

>>373457
>Тебе кажется, что он пустяковый.
Нет, он — пустяковый, и ответ на него уместился в одно-два предложения, но тебе гораздо приятнее убеждать меня в том, что я тупой, а не отвечать на вопрос.
>Потому, что ты плохо разбираешься в вопросе.
Ты опять повторяешь это ничем не обоснованное утверждение, но я пока не увидел подробного ответа на вопрос, что я там такого не понял важного. Подробный — это подробный, а не «ты не понял глубину своего непонимания».
>Ты же зачем-то начал меня убеждать в том, что ты все и так знаешь и охуенный специалист вообще
Не было такого. Я задавал вопрос о реализации FileStream'а, но ты как-то не нашёл, что ответить, сказал лишь, что «свечку не держал», но зато нашёл время разглагольствовать о том, кого я там представляю и как это плохо. Если бы ты был способен отвечать на заданные тебе вопросы, а не учить жизни вместо этого, то этого разговора и неприятных эмоций от него ни у кого бы не было.
>Я тебе бесплатную консультацию
Тебе кажется, запретить кому-то читать книгу по си шарпу и отправить учить ассемблер — это не консультация, а хуй собачий.
> ЧСВ я видители тешу.
Да, тешишь.

Вск 27 Июл 2014 16:05:39  #393 №373477 

>>373457
>Нет.
Даже до википедии не дошёл?
>пытаешься придираться к не совсем корректному(как тебе кажется) использованию мною терминологии
Ну, охуеть, "не совсем корректному", "как тебе кажется", блядь. Ну давай её, может быть, тогда стеком называть, или массивом? ВИДЬ ЭТОЖИ ТОЖИ ПАМЯТЬ!
>Это и называется - увеличить.
Это называется "создать новый и скопировать туда данные из старого". Более того, даже тут ты всё равно обосрался, потому что шарп этого не делает, иначе код у того парня не падал бы на отметке в 256М. Шарпоотсос, кстати, можете записывать.
>Ты говоришь о хипе как
Я говорю о хипе, как о хипе. Это термин, у которого есть определённое значение, а ты говоришь "процессор", подразумевая системный блок, и "компьютер", подразумевая монитор, поэтому твои выебоны с "изучи ассемблер" (без какой-либо конкретики) выглядят как кукарекание вчера написавшего HelloWorld на сишке и возомнившего себя хакером школьника.
Короче, иди нахуй и умри там.

Аноним Вск 27 Июл 2014 17:07:47  #394 №373499 

>>373477
>иначе код у того парня не падал бы на отметке в 256М
Ты думаешь дело в большой фрагментации памяти?
Ты уверен, что код у него падает именно при выделении 256М?
Ты сам этот код проверял?
Как так получается, что у меня полтора гигабайта ок?
И как вообще размер кучи с этим связан?
Тут ключевую роль играет лимит памяти которую через кучу можно выделить.

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

>Шарпоотсос, кстати, можете записывать.
То есть ты просто мимохейтер? И с тем как работает выделение памяти в шарпе незнаком? Но при этом делаешь охуительные заявления о том, что в шарпе происходит а что нет?

>Это термин, у которого есть определённое значение
Все люди, которых я встречал до тебя, говоря - "выделение памяти в куче" имели ввиду именно что выделение памяти из памяти доступной процессу с использованием механизма кучи. А не выделение памяти в служебной области механизма распределения памяти.
И тут приходит какой-то долбеб и начинает закатывать истерики, я что-то неправильно говорю оказывается.

>Короче, иди нахуй и умри там.
Пиздуй обратно в свою парашу, и не возвращайся.

Аноним Вск 27 Июл 2014 17:10:28  #395 №373500 

>>373462
>но тебе гораздо приятнее убеждать меня в том, что я тупой
У тебя галлюцинации.

Аноним Вск 27 Июл 2014 22:29:14  #396 №373583 
1406485754881.png

>>373499
>>373500

Друзья, почему драка? Лучше ответьте мне на мой вопрос - >>373310 и я уйду.

Аноним Пнд 28 Июл 2014 00:02:29  #397 №373613 

>>372865
Как насчет этого?
http://samscode.com/index.php/2010/01/the-entity-framework-v1-and-v4-deal-breaker-tpt-inheritance/

Аноним Птн 01 Авг 2014 12:24:51  #398 №374715 
1406881491653.png

Привет, сишурупы. Новый тред создавать не буду, вопрос простой, напишу итт.

Есть код пикрелейтед.
Делаю брутфорс трипкода по регулярке многопоточно.
Софтина обрабатывает порядка 79500 трипкодов в секунду.

Заебался ждать. Посоветуй чего.

Аноним Птн 01 Авг 2014 13:27:56  #399 №374739 

>>374715
TripCUDA, Tripcode Explorer, что-то там ещё для амудей было.
Если сам хочешь, то переписывай на сишку и гугли bitslice des.

Аноним Птн 01 Авг 2014 14:08:23  #400 №374753 

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

Аноним Птн 01 Авг 2014 15:49:04  #401 №374769 

>>374753
>Как это сделать, я знаю.
Ну-ка покажи, а то сомнения.

Аноним Птн 01 Авг 2014 16:26:52  #402 №374778 

>>374715
>Посоветуй чего
Не используй Random, он у тебя там наверное больше половины времени жрет. Просто лексиграфически инкрементируй строку.

Аноним Птн 01 Авг 2014 17:13:20  #403 №374781 

>>374769
http://pastebin.com/Dp62d3pg
Пока что запилил костылик в виде передачи датагрида в качестве параметра в контроллер, в нем просто пишу метод обновления везде где изменяется коллекция, но это какое-то оче индусское мввм получается.

Аноним Птн 01 Авг 2014 17:17:04  #404 №374785 

>>374715
А ну и
>randomstring +=
это просто ПУШКА.

Аноним Птн 01 Авг 2014 17:18:37  #405 №374786 

>>374781
Начальник! Этот пидорас опять использует wpf без mvvm!
В viewmodel же сделай selectedItem, в датагриде бинд на него сделай, а везде где коллекция заменяется будешь этот итем в first устанавливать. Код-сзаду нинужен.

Аноним Птн 01 Авг 2014 18:43:06  #406 №374805 

>>374786
У меня есть биндинг на selected item, куда же без него.
>везде где коллекция заменяется будешь этот итем в first устанавливать
И это просто ВЫБЕРЕТ элемент. Это конечно нужно, но мне же еще нужно установить на него ФОКУС. Зачем? Чтобы с клавы можно было управлять не нажимая таб стопицот раз пока не перейдешь внутрь этого ссаного грида.
Без кода сзаду тут никак походу. Может какие-то омские behavior можно сделать разве что.

Аноним Птн 01 Авг 2014 18:53:35  #407 №374807 

>>374715
>(!found)&&(!stop)

!(found||stop)

Аноним Птн 01 Авг 2014 19:09:25  #408 №374809 

>>374807
ммм.. Де Морган...

Аноним Птн 01 Авг 2014 19:11:40  #409 №374810 

>>374807
Надо писать читаемые условия. Такие оптимизации ну точно ничего не дадут. И компилятор может сделать их.

Аноним Птн 01 Авг 2014 19:11:42  #410 №374811 

>>374807
Х.з., мне if (!found && !stop) больше нравится. Читается чуть-чуть приятней, чем if (!(found || stop))

Аноним Пнд 04 Авг 2014 13:51:40  #411 №375425 

Плиз, помогите... Можно ли сохранить массив байтов в поле SQLite? Пишу в C# потому что вся остальная моя прога на C#. :) Попытка переводить поток байтов в строку потерпела фейл, так как иногда может возникнуть символ закрытия строки, что вызывает ошибку...

Аноним Пнд 04 Авг 2014 14:42:03  #412 №375433 

>>375425
Что еще за
>символ закрытия строки
ты ебанутый?

Аноним Пнд 04 Авг 2014 20:35:30  #413 №375548 

>>375425
linq2db для SQLite возьми и не выебывайся

Аноним Пнд 04 Авг 2014 20:44:38  #414 №375554 

вместо введения

Аноним Втр 05 Авг 2014 02:13:52  #415 №375606 
1407190432811.jpg

>>374715
Твой код на столько говёный, что я даже советовать тебе ничего не буду. Рака яичек тебе.

Аноним Втр 05 Авг 2014 02:53:05  #416 №375611 
1407192785276.jpg

Ребята, не поливайте говном и не прогоняйте, я не ради холивара пришёл. Узнал, что у нас в университете в этом семестре будут давать C#. Сначала меня это очень расстроило, потому что я никак не вижу в своём будущем этот язык программирования. Вообще, я люблю С, но пишу на Джаве (Андроид). Короче, меня не интересуют всякие жирные интерпрайз веб-приложения, Windows, Windows Phone и всё остальное от Майкрософт (не люблю и не пользуюсь их продуктами). Я решил поискать плюсы в сложившейся ситуации и в голову пришёл только гейдев с Unity (гейдев мне всё-таки немного интересен) и просто теоретические знания, чтобы можно было поддержать беседу или сравнивать языки, поясняя на дваче, чем язык A лучше B. Скажите, где ещё сейчас прижился C#, а точнее его реализация mono, ну или другая свободная (Xamarin не интересует)? Что я упустил? Или мне стоит забить на пары?

Аноним Втр 05 Авг 2014 02:58:20  #417 №375612 

>>375433
\0

Аноним Втр 05 Авг 2014 03:04:21  #418 №375613 

>>375611
>чем язык A лучше B
Это было так давно, что никто уже не помнит.

Аноним Втр 05 Авг 2014 03:14:42  #419 №375615 

>>375613
>A
Не было такого. Был только А+

Аноним Втр 05 Авг 2014 06:32:42  #420 №375622 

>>375611
MonoGame, это XNA на Mono, но поддерживает не только ПК и биллькину консольку, но и ведра, iOS, OSX, Blackberry, Linux.

Я нихуя не понял Аноним Втр 05 Авг 2014 20:59:54  #421 №375797 
1407257994442.jpg

Анон, выручай.

Есть класс, который держит соединение при помощи объектов классов TcpClient и SslStream. Необходимо грамотно реализовать методы Dispose и Disconnect для данного класса. Сначала было я подумал, что для Dispose будет достаточно написать следующий код:

protected virtual void Dispose(bool disposing)
{
// release unmanaged memory

if (disposing)
{
// release other disposable objects
if (_sslStream != null)
{
_sslStream.Dispose();
_sslStream = null;
}

if (_tcpClient != null)
{
_tcpClient.Close();
_tcpClient = null;
}
}
}

public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}

Но потом я встретил в интернете мнение, что для нормального завершения операций TcpClient'а необходимо вызывать метод Disconnect:

_tcpClient.Client.Disconnect(false);

http://stackoverflow.com/questions/425235/how-to-properly-and-completely-close-reset-a-tcpclient-connection

Ещё в одном месте намекнули на использование Shutdown:

_tcpClient.Client.Shutdown(SocketShutdown.Both);

Что из этого в итоге надо использовать в случае Dispose и что в случае Disconnect? Всё сразу или что-то одно?

Кликабельные линии Аноним Срд 06 Авг 2014 14:17:06  #422 №375945 

Сам, шарпач. Есть один проект в винформах. Там на панельке генерятся несколько кнопок в случайных местах. Все отлично работает, но теперь я хочу нарисовать кликабельные линии, которые связывали бы эти кнопки.
Я смог просто нарисовать линии через:

Graphics.DrawLine(pen, buttonArray.Location, buttonArray[i+1].Location);

Но, они, очевидно, не имеют ивентов.
Так вот, как сделать такие линии?

Аноним Срд 06 Авг 2014 16:02:55  #423 №375956 

>>356145 Ананасы, у меня есть проект, который дал мне батяня, чтобы я его разобрал. Проект связанный с базой данных для сайта, то есть есть база данных, и код нескольких формочек.
Трабл:При открытии решения предлагает мне связаться сервером, ибо открываемое решение связано с системой управления версиями на следующем сервере TFS :server_name. Ну я нажимаю вперед, а чо. После этого в следующем окне я должен предоставить им мои учетные данные для подключения к TFS. Я не понимат что я должен сделать -_- *хнык

мимо первый раз sql database on c#

Аноним Срд 06 Авг 2014 17:09:54  #424 №375979 

>>375956
бамп1

Срд 06 Авг 2014 17:11:28  #425 №375981 

>>375956
Отмену нажми

Аноним Срд 06 Авг 2014 17:13:01  #426 №375982 

>>375797
>tcpClient
http://msdn.microsoft.com/ru-ru/library/system.net.sockets.tcpclient%28v=vs.110%29.aspx
>public class TcpClient : IDisposable
Просто вызывай Dispose у него и все.

Аноним Срд 06 Авг 2014 17:18:04  #427 №375986 
1407331084055.png

>>375981
си есть печально
Это не мой проект, а батяни - те, кто делал проект должны дать мне данные для подключения к TeamFoundationServer ?

Аноним Срд 06 Авг 2014 17:19:31  #428 №375987 

>>375945
Лелка чтоль. Это винформс и ебаное рисование. По большому счету, тебе надо подписываться на событие клика мышью на панельке, потом по координатам клинка определять линия это (и какая) или нет. Потом делать обработку, перерисовку и так далее. Это достаточно объемный нудный геморрой. Которым, очевидно блять, надо заниматься только после того, как ты убедился, что ни одна из существующих библиотек для рисования графов тебя не устраивает.

sageАноним Срд 06 Авг 2014 17:20:41  #429 №375988 

>>375956
К батяне с такими вопросами.

Аноним Срд 06 Авг 2014 17:25:42  #430 №375991 

>>375988
спасибо тебе

Аноним Срд 06 Авг 2014 17:51:38  #431 №375999 

>>375982
У него нет публичного метода Dispose, только Close. Хорошо, буду звать его в своём методе Dispose, но что делать в случае с Disconnect?

Аноним Срд 06 Авг 2014 18:04:51  #432 №376003 

>>375999
>нет публичного метода Dispose
Есть, но он реализован для интерфейса явно, и ты можешь получить к нему доступ сделав приведение: (tcpClient as IDisposable).Dispose()

>что делать в случае с Disconnect
http://msdn.microsoft.com/ru-ru/library/system.net.sockets.socket.disconnect%28v=vs.110%29.aspx
>If you are using a connection-oriented protocol, you can use this method to close the socket. This method ends the connection and sets the Connected property to false. However, if reuseSocket is true, you can reuse the socket.

>To ensure that all data is sent and received before the socket is closed, you should call Shutdown before calling the Disconnect method.

Аноним Срд 06 Авг 2014 18:53:34  #433 №376012 

>>375986
Unload сделай проектам которых нет/не грузятся

Аноним Срд 06 Авг 2014 18:57:25  #434 №376015 

Вебмакака врывается в этот itt тред
У меня тут есть шиндофон + я заметил, что в vs есть туллбокс до js-прилложений
Насколько это говноедство? Есть какие-то живые примеры в сторе? А то туториалы нашел, а примеры того, что получится нет
Выглядит оно конечно вполне нативно, но хочется потрогать

Аноним Срд 06 Авг 2014 19:11:14  #435 №376017 

>>376003
> (tcpClient as IDisposable).Dispose()
Это вообще законно?

>If you are using a connection-oriented protocol, you can use this method to close the socket. This method ends the connection and sets the Connected property to false. However, if reuseSocket is true, you can reuse the socket.
Хорошо, а что делать в таком случае при повторном коннекте? Вызвать Connect будет достаточно или проще пересоздать весь TcpClient полностью?

Аноним Срд 06 Авг 2014 19:56:44  #436 №376025 

>>376015
>хочется потрогать
http://try.buildwinjs.com/
http://msdn.microsoft.com/en-us/library/windows/apps/hh758331.aspx
http://code.msdn.microsoft.com/windowsapps/Universal-Windows-app-cb3248c3 (примеры)
Бери и трогай. WinJS существует не первый день, выглядит нативно.

>>376017
>законно
Нет. Мизулина издала закон, что только прочитавшие про явную реализацию интерфейсов могут этим пользоваться.

>Вызвать Connect будет достаточно или проще пересоздать весь TcpClient полностью?
Однозначно проще новый.

Аноним Срд 06 Авг 2014 20:23:38  #437 №376031 

>>375956

Кто тебе дал проект - они и должны дать логин с паролем. Для любого закрытого репозитария требуется пароль, или ключ, или еще чего.

Аноним Срд 06 Авг 2014 21:23:07  #438 №376052 

>>376031
спасибо тебе

Аноним Суб 09 Авг 2014 01:23:43  #439 №376587 

На чем можно графон рисовать? На канвас хуярить не хочу, так как нужно рисовать фракталы.

Аноним Суб 09 Авг 2014 21:58:47  #440 №376741 

>>376587
Бамп же

Аноним Вск 10 Авг 2014 17:47:31  #441 №376935 

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

Аноним Вск 10 Авг 2014 18:39:56  #442 №376955 

>>376935
memorystream

Аноним Вск 10 Авг 2014 20:13:04  #443 №376979 

Аноны, нужна помощь. Как запилить автомасштабирование шкалы Y стандартного winform chart control'а?

Аноним Пнд 11 Авг 2014 12:26:15  #444 №377078 

>>376587
Фракталы как раз очень удобно рисовать на канвасе.

Аноним Втр 12 Авг 2014 23:45:06  #445 №377530 

>>356479
>в частности, "генерики" сделаны ещё хуже, чем в джяве™
ясно

Аноним Пнд 18 Авг 2014 16:12:34  #446 №379266 

Как в MVVM правильно объявлять команды? Пока что делаю вот такое говно:

private ICommand dummy;
public ICommand Dummy
{
get
{
if (dummy == null)
{
dummy = new DelegateCommand(
new Action<object>(delegate
{
Method1();
Method2();
MethodN();
}));
}
return dummy;
}
}

уже 1k строк наделал. Хочется переписать как-то более компактно.
Аноним Пнд 18 Авг 2014 16:56:43  #447 №379277 

>>379266
Сударь, у вас ТАБУЛЯЦИЯ

Аноним Втр 19 Авг 2014 00:54:43  #448 №379427 

>>356145
Привет, анон. Есть два стула языка: Java и C#. Какой из них лучше изучать инженеру, которого доебал бесперспективный проектный отдел?

Аноним Втр 19 Авг 2014 22:17:41  #449 №379689 

>>379427
Жаба, если цель сьебаться, просто жабоёбских вакансий больше. Шарпоблядей меньше, но проще найти позицию архитектора или сеньора, т.к. спрос есть, а конкуренция среди более-менее скилловых небольшая, ибо их и так и мало.

Аноним Втр 19 Авг 2014 23:22:23  #450 №379716 

>>379427 жаба это подмножество c#, учи оба

Аноним Втр 19 Авг 2014 23:28:07  #451 №379718 

>>379716
>жаба это подмножество c#
Чо бля? Шарп это подмножество джавы.

Аноним Втр 19 Авг 2014 23:31:59  #452 №379719 

>>379716
>>379718
оба этих языка - подмножество С

Аноним Втр 19 Авг 2014 23:56:41  #453 №379726 

>>379718 покажи нам божественный LINQ в жабе, async/await, ну и далее по списку.

Аноним Срд 20 Авг 2014 09:35:57  #454 №379809 

>>379277
Придираться к табуляции это что-то уровня граммарнаци.

Аноним Срд 20 Авг 2014 16:58:31  #455 №379932 

>>379726
покажи нам божественные джереники в шарпе, а потом мы поговорим

Аноним Срд 20 Авг 2014 17:20:37  #456 №379938 

>>379726
Покажи мне скалу в шарпе

Аноним Срд 20 Авг 2014 17:25:07  #457 №379940 

>>379726
https://github.com/scala/async

Аноним Срд 20 Авг 2014 17:32:13  #458 №379948 

>>379932
Ну ок, смотри. А говорить с тобой я все-равно не буду.
http://msdn.microsoft.com/en-us/library/512aeb7t.aspx

Аноним Срд 20 Авг 2014 19:18:31  #459 №379974 

>>379938 скала в дотнете называется f#

Аноним Срд 20 Авг 2014 19:38:44  #460 №379978 

>>379974
Но ведь это хачкиль. А покажи мне мавен в C#

Аноним Срд 20 Авг 2014 20:06:42  #461 №379991 

>>379974>>379978
Haskell > Scala > F#
Фисярп - это такой функциональный синтаксис для дудки. В системе типов ничего интересного нет. Там даже тайпклассов и higher-kinded типов нету хотя-бы как в скале. А уж до хаскеля ему как до луны. Ни о каком Higher Order Algebraic Programming и речи быть не может, а обычное FP - говно для быдла. Так что сосите.

Аноним Чтв 21 Авг 2014 00:12:07  #462 №380059 

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

Ну и вообще, мс как всегда в своём репертуаре: посмотрит на каких граблях поотбивали себе яйца скалоёбы и запилит свою версию S# с шахматами, куртизантками и нормальной VM.

Аноним Чтв 21 Авг 2014 02:27:36  #463 №380099 

>>380059
> Ну и вообще, мс как всегда в своём репертуаре: посмотрит на каких граблях поотбивали себе яйца скалоёбы и запилит свою версию S# с шахматами, куртизантками и нормальной VM.
Репертуар MS - слизать, но при этом обязательно что-нибудь испортить ради вендорлока своих кодеров практиками, которые больше нигде не используются, как, например, в случае с конвенциями оформления кода и именования в C#.

Аноним Чтв 21 Авг 2014 03:05:37  #464 №380100 

Привет всем. Как мне по tcp протоколу отправить сообщение из клиента, написаного на Lua (luaSocket), на сервер написаный на c#?
Связать C#+C# и Lua + Lua получается, но если их поменять местами они не подключаются. Реально такое сделать?
поговорите с ньюфагом

Аноним 27/08/14 Срд 17:00:21  #465 №381945 
>>380100
>ем. Как мне по tcp протоколу отправить сообщение из клиента, написаного на Lua (luaSocket), на сервер написаный на c#?
>Связать C#+C# и Lua + Lua получается, но если их поменять местами они не подключаются. Реально такое сделать?
>поговорите с ньюфагом

Код челе давай.
Сокетам вообще похуй из какого ты их языка пользуешь. Это системное АПИ.
Аноним 01/09/14 Пнд 06:56:32  #466 №383341 
Приветствую, товарищи! Дублирую пост.
Сам ньюфаг, учу C#. Есть минимальный опыт с БД (делал курсач по образцу), и ковырял консольные программы. Сейчас всё почти забылось, но хочу вернуться и продолжить обучение самостоятельно.
Открыл Троелсена, на 150й странице уже банально не выдерживаю. Думаю, для начала читать весь этот талмуд не имеет смысла. Искал в гугле литературу - всё снова сводится к Троелсену\Шилдту.
Подскажи, программач, какую-нибудь толковую, но не слишком большую\сложную книгу, дай советов "из первых уст", ибо таким доверяю больше, чем другим.
Заранее спасибо.
Аноним 01/09/14 Пнд 12:26:12  #467 №383372 
>>383341
После того как освоил синтаксис, переходи к практике. Нахуй тебе каждый класс фреймворка зазубривать.
Ставишь себе конкретную задачу - читаешь материал по теме - решаешь.
Аноним 01/09/14 Пнд 16:22:41  #468 №383392 
14095741611890.png
Шарпоанон, подскажи бесплатный хостинг для сайтов на ASP.NET? Правда ли, что на windows azure можно бесплатно хостить (до какой-то там загрузки)?
Интересует хостинг сайта уровня "hello world".
Аноним 01/09/14 Пнд 17:04:59  #469 №383399 
>>383392
Somee.com
Aspspider.com
Аноним 01/09/14 Пнд 17:33:06  #470 №383404 
>>383399
>asspider
лал
Аноним 01/09/14 Пнд 18:40:58  #471 №383412 
Кто и где учился? Пилите стори, ребят.
Аноним 01/09/14 Пнд 18:48:24  #472 №383414 
>>356145
вечер в хату всем няшам за решёткой.

Начну с простого вопроса: есть virtual метод и переопределённый override'ом он же в дочернем классе. Вопрос: где писать XML коменты, если они получаются идентичными?
Аноним 01/09/14 Пнд 18:58:45  #473 №383417 
>>383414
конечно в переопределенном методе. пес знает, как ты захочешь поменять в будущем функционал метода родительского класса.
Аноним 01/09/14 Пнд 19:03:21  #474 №383420 
>>383417
сейчас в родительском тупо бросается throw new NotImplementedException(). И менять это я не планирую.

Алсо от родительского класса наследуются отнюдь не 1, а несколько потомков, и все с override. Реализация у всех разная, но все делают на 100% одно и то же. Сейчас приходится копипастить один и тот же текст XML коммента + если надо поправить - то делать это в нескольких местах. Не придумано ли ничего лучше для облегчения этого?
Аноним 01/09/14 Пнд 20:33:43  #475 №383442 
>>383420
Погугли решарпер + copy XML docs on override, там наверняка что нибудь запилено
Аноним 01/09/14 Пнд 20:34:56  #476 №383444 
Ах да
>NotImplemented
Ну абстрактные методы же ну
Аноним 01/09/14 Пнд 20:47:53  #477 №383450 
>>383444
Может ему инстансировать его надо.

Алсо, наследование не нужно, используйте композицию+интерфейсы.
Аноним 01/09/14 Пнд 22:13:57  #478 №383464 
>>383450
>Может
Значит нужно сделать абстрактный класс-прослойку с этим методом лишь бы не кидать исключения, да
Аноним 02/09/14 Втр 05:25:41  #479 №383495 
>>383450
> Может ему инстансировать его надо.
Нет, мне инстансировать его не надо - сам родительский класс сделан абстрактным.

>>383444
> Ну абстрактные методы же ну
Особенность моей задачи в том, что 2 класса-потомка реализуют один и тот же функционал, с помощью разных вспомогательных библиотек. Но реально в данный момент используется один их них, а второй пишется с заделом на будущее. Причём разработка второго отстаёт, т.к. нет времени реализовывать все общие методы вот прямо сейчас. Поэтом и кидание NotImplementedExсeption - оптимальная защита от случайного вызова нереализованного метода.
Аноним 02/09/14 Втр 06:15:39  #480 №383500 
>>383495
>NotImplementedExсeption
Так в предке или потомке?
Аноним 02/09/14 Втр 07:09:45  #481 №383508 
>>379266
Можно чуть покороче
[CODE]private ICommand dummy;
public ICommand Dummy
{
get
{
return dummy ?? (dummy = new DelegateCommand(
new Action<object>(delegate
{
Method1();
Method2();
MethodN();
})));
}
}[/CODE]
Аноним 02/09/14 Втр 10:00:26  #482 №383519 
>>383508
В первый раз вижу этот оператор.
Спасибо.
Аноним 02/09/14 Втр 10:03:19  #483 №383522 
14096377997130.gif
>>383519
Пикрелейтид.

Алсо, закрытые поля (а открытых быть не должно) надо называть начиная с символа "_": "_dummy".

Поставь решарпер.
Аноним 02/09/14 Втр 10:23:02  #484 №383523 
>>383522
Ну реально, тернарный оператор (который iif) часто используется, и в плюсах тоже, а вот этот coalesce в первый раз встречаю.
Ок, сейчас куплю на рутрекере. Что там вообще, автоматический рефакторинг?
Аноним 02/09/14 Втр 11:31:28  #485 №383525 
>>383523
>а вот этот coalesce в первый раз встречаю
В решетке вообще много всего, чего нигде нет.
>сейчас куплю на рутрекере
Внезапно проиграл.
>Что там вообще, автоматический рефакторинг?
Там много всего, от выделения переменных и методов двумя клавишами и кликами мыши до самых глубин.
Но что важнее, он подсказывает как где сократить код без потери производительности, где у тебя написана хуйня (условие в if всегда ложное, например), где переменные не используются, и т.д., плюс к этому будет ругать тебя за неправильные именования.
Аноним 02/09/14 Втр 11:50:01  #486 №383533 
>>383525
Поставил. Студия стала сильнее тормозить. Наверное, его надо включать только когда уже все готово и пришло время рефакторить код.
Naming conventions это конечно хорошо, но не всегда удобно называть код по ним, особенно когда есть всякие аббревиатуры.
Неиспользуемые переменные и пространства имен студия и так подсвечивала.
Эта штука умеет упрощать linq и условия, что оче полезно.
Но она часто ругается на абсолютную фигню, например просит все заменять на var, даже там где это явно не нужно (в цикле for, например), ставить CultureInfo в ToString (с которым у меня никогда проблем не было), и еще любит заменять if на return, который по-моему не так наглядно показывает что когда выполняется.
Аноним 02/09/14 Втр 12:15:31  #487 №383535 
>>383533
>стала сильнее тормозить
>часто ругается на абсолютную фигню, например просит все заменять на var, даже там где это явно не нужно (в цикле for, например), ставить CultureInfo в ToString (с которым у меня никогда проблем не было), и еще любит заменять if на return, который по-моему не так наглядно показывает что когда выполняется.
проблемы любого такого быдлософта...
IntelliJ в этом плане очень похожа
Аноним 02/09/14 Втр 12:17:50  #488 №383536 
>>383533
Аббревиатуры можно добавить в словарь и он не будет их подсвечивать. Что плохого все заменить на var? И вообще, не спорь с решарпером.
Аноним 02/09/14 Втр 12:21:00  #489 №383537 
>>383536
>Что плохого все заменить на var?
читать код будет сложнее...
одной этой причины достаточно чтобы снести к хуям решарпер
Аноним 02/09/14 Втр 12:31:29  #490 №383541 
>>383533
>Студия стала сильнее тормозить.
Ты с кофеварки что ли кодишь?
>просит все заменять на var
Это же хорошо.
>еще любит заменять if на return, который по-моему не так наглядно показывает что когда выполняется
Достаточно наглядно, если ты кодишь хотя бы год.
>>383537
>читать код будет сложнее...
Только в notepad разве что. Переменные надо называть так, чтобы было понятно, что в них содержится. Это автоматом подразумевает и тип.
Аноним 02/09/14 Втр 12:50:39  #491 №383543 
Что за глупости вы тут обсуждаете. В решарпере все можно настоить, что он будет подчеркивать, что нет. Если память мне не изменяет, то прямо рядом с опцией "исправить" там есть вариант "больше не предлагать такого".
Аноним 02/09/14 Втр 12:55:17  #492 №383544 
>>383543
Да, есть, но пользоваться этим — говноедство.
Аноним 02/09/14 Втр 13:00:02  #493 №383545 
>>383541
>Переменные надо называть так, чтобы было понятно
#define TRUE false
тебе
и вообще, у тебя же ВЕНГЕРСКАЯ НОТАЦИЯ
Аноним 02/09/14 Втр 13:21:48  #494 №383549 
>>383545
Нет, так не надо.
Надо, чтобы тип был понятен из семантики названия.
Аноним 02/09/14 Втр 14:10:34  #495 №383554 
Нахуй тип вообще знать? Ну вот написано перед переменной название сложного композитного типа, жизнь то лучше от этого не станет, я же все равно не помню/знаю всех его методов/свойств, автокомплит затащит.
sageАноним 02/09/14 Втр 17:48:16  #496 №383593 
>>383554
>нахуй вообще код читать?
поправил тебя, не благодари
Аноним 02/09/14 Втр 18:06:57  #497 №383597 
>>383500
в предке (родителе).
Аноним 03/09/14 Срд 04:32:07  #498 №383699 
>>383341
Бамп
Аноним 03/09/14 Срд 05:16:54  #499 №383704 
>>356145
https://2ch.hk/pr/res/383702.html
Поцоны, хелп. Страдаю, 5 ночи.
Аноним 03/09/14 Срд 11:59:47  #500 №383742 
>>383699
Да первые 4 части в троелсене прочитай, потом пили что нибудь и читай уже выборочно: про бд/файлы/сервисы/твою выбранную технологию окошек
Аноним 05/09/14 Птн 19:08:32  #501 №384398 
Нужен парттайм asp.net девелопер на удаленку. Skype: ceit.note
Аноним 10/09/14 Срд 11:30:28  #502 №385495 
14103342283610.jpg
Как сделать, чтобы в itemscontrol отображались либо radiobutton, либо checkbutton, в зависимости от значения одного поля из viewmodel? Сам itemscontrol тоже забинден на коллекцию, естественно.
Пока что набыдлокодил вот такое говно:
http://pastebin.com/4SH0Gi3x
Не работает. Я так понимаю, из-за того что у дататриггеров стоит элемент коллекции в качестве datacontext. Как исправить?
Аноним 11/09/14 Чтв 17:53:57  #503 №385805 
14104436378520.png
Шарпобоги, объясните. Не могу въехать в DataBinding.
Вот есть у меня класс
namespace GameSettings
{
static class clSettings
{ int nFontSize; }
}

и есть страничка xaml (в другом namespace, даже другой сборке, т.е. настройки в Shared, страница в windowsPhone) с текстбоксом, у которого есть fontSize. Как мне их связать и как это будет работать? Как только я меняю свойство класса будет ли апдейт размера текста в текстбоксе? Или надо его как-то насильно апдейтить?
Аноним 21/09/14 Вск 19:50:57  #504 №388552 
Сколько зарабатывает рядовой .NET боец? Перспективно? Молодёжно?
Аноним 24/09/14 Срд 20:49:08  #505 №389632 
бамп
Аноним 25/09/14 Чтв 13:43:25  #506 №389927 
>>389632
Уже утонуло, создавай новый
comments powered by Disqus