Этого треда уже нет.
Это копия, сохраненная 3 октября 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
6 Кб, 230x231
.NET THREAD #1 (C#/F#/VB) # OP #824683 В конец треда | Веб
Тред единственной элитной платформы в мире программирования.

Шапка: https://github.com/CSharpShapka/SharpHat/wiki

(пока просто перенесена шапка из ОП-поста, в ближайшее время приведу к более-менее адекватному виду, не стесняйтесь слать свои пулл-реквесты)

Прошлый тред тонет здесь: https://2ch.hk/pr/res/796165.html (М)
#2 #824850
Уже 3 C# треда висят, ну ок спрошу здесь.
Этот код не компилится:
http://pastebin.com/89NFWke0
Выдает:
http://pastebin.com/0gxMwFgM
А этот компилится:
http://pastebin.com/ytMH13zK

Почему? Разве из
var RbtnArr_Planets = new RadioButton[Output.Length];
не понятно, что массив будет из радиобаттонов?
Что происходит?
>>824860
#3 #824860
>>824792
ну не же, написал, что для всех радиобаттонов группы
т.е. если у тебя

Group1
|__RadioButton1
|__RadioButton2
|__RadioButton3
Grid
|__RadioButton4
|__RadioButton5
то тебе надо написать:
radioButton1.CheckedChanged += GroupRadioButtonCheckedChanged
radioButton2.CheckedChanged += GroupRadioButtonCheckedChanged
radioButton3.CheckedChanged += GroupRadioButtonCheckedChanged

где

private void GroupRadioButtonCheckedChanged(object sender, EventArgs args)
{
var control = (RadioButton)sender;
switch((SomeEnum)control.Tag)
{
...
}
}

>>824850
знаешь разницу между "не компилится" и "исключение в рантайме"?

> не понятно, что массив будет из радиобаттонов?


ссылка на радиобаттон не может быть пустой? или каждый инстанс в языке - это априори какой-то объект?
#3 #824860
>>824792
ну не же, написал, что для всех радиобаттонов группы
т.е. если у тебя

Group1
|__RadioButton1
|__RadioButton2
|__RadioButton3
Grid
|__RadioButton4
|__RadioButton5
то тебе надо написать:
radioButton1.CheckedChanged += GroupRadioButtonCheckedChanged
radioButton2.CheckedChanged += GroupRadioButtonCheckedChanged
radioButton3.CheckedChanged += GroupRadioButtonCheckedChanged

где

private void GroupRadioButtonCheckedChanged(object sender, EventArgs args)
{
var control = (RadioButton)sender;
switch((SomeEnum)control.Tag)
{
...
}
}

>>824850
знаешь разницу между "не компилится" и "исключение в рантайме"?

> не понятно, что массив будет из радиобаттонов?


ссылка на радиобаттон не может быть пустой? или каждый инстанс в языке - это априори какой-то объект?
>>825097
#4 #824869
>>824683 (OP)

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


Не верьте этому говноеду, .NET сейчас как делфи только под легаси код. Веб в .net доживает последние дни, а десктоп умер, на его смену пршел Qt из мира С++
#5 #824880
>>824869
на .net работы больше,
#6 #825026
Перепостну с другого треда, чем успешные господа парсят, HtmlAgilityPack или AngleSharp?
>>825127>>831349
#7 #825035
>>824869

> на его смену пршел Qt


Лел
>>830703
#8 #825047
Анчоусы, поясните за сборку установщика своей программы: при каких условиях мне для программы нужно делать установщик и как его лучше делать?
>>827089>>831503
#9 #825087
Пусть шапка остается на гитхабе, в разы удобнее смотреть и читать всё как белый человек.
(Мимо подсмотрел эту идею у питоно и ява-господ)
#10 #825097
>>824860
Спасибо за ответ, буду продолжать.
Разьясни пожалуйста этот момент:

>ссылка на радиобаттон не может быть пустой? или каждый инстанс в языке - это априори какой-то объект?


Разве конструкция new

>new RadioButton[Output.Length]


не создает физический массив в памяти?
И почему с

>string[] StringArr = new string[]


работает?
>>825122
#11 #825115
Кто нибудь знает, в WPF есть возможность на DataGrid распространить ограничения на таблицу, данные и схема (следовательно, я так понимаю, и ограничения) которой загружаются из MS SQL сервера? к примеру, в таблице на поле "Поле1" установлено ограничение check (Поле1 like '%[0-9]%') После загрузки datatable перегоняю в BindingListCollectionView (ради свойства CustomFilter) через dataTable1.DefaultView;
#12 #825122
>>825097
при создании new RadioButton[length] у тебя создается массив радиобаттонов в куче, но до тех пор, пока ты не инстациируешь каждый из элементов у тебя будет null, ибо их все в отдельности ты не успел еще создать
то же самое касается и string[] и ЧегоБыТоНиБылоСсылочного[]. вот про int либо другие структуры я бы тебе еще поверил
>>825189>>825191
#13 #825127
>>825026
AngleSharp
#14 #825189
>>825122

>ЧегоБыТоНиБылоСсылочного[]


Ааа, вот где я прощелкал.
Спасибо анон.
#15 #825191
>>825122
Вообще интересно получается. Мне нужно сделать несколько зависимых друг от друга групп радиобаттонов.
Для этого - нужно понимать event-ы.
Для event-ов - нужно пройти делегаты.
И над всем этим - динамическая выборка радиобаттонов через LINQ.
Кто там кукарекал про низкий порог вхождения?
#16 #825255
>>825191
Что тут сложного?
#17 #825317
>>825191

> Для event-ов - нужно пройти делегаты


ну, в общем-то, тут вопрос возникает, что такого нужно знать, чтобы просто использовать событие на форме? по-моему, достаточно по-дилетантски того, что событие когда-то вызывается со указанием в sender отправителя

> динамическая выборка радиобаттонов через LINQ


зачем тут линк? почему "над этим всем"? и что, опять-таки, ты предлагаешь понимать в этом всем?
>>825331
#18 #825331
>>825317
Ага, а потом утечки памяти, потому что никто не знает, что от событий отписываться нужно. И никто не знает, почему с дизайнером мы руками не отписываемся, например. Не, нужно с азов.
>>825339
#19 #825339
>>825331
Отписываться же нужно, только если источник живет дольше подписчика, не?
Очень надо #20 #825557
Халп, полубоги!

Есть несколько классов, в которых надо просто ебаническое количество свойств описать. Какие-то есть хоткеи или что-то вроде ctor для того, чтобы сразу готовое шаблонное писалось?
>>825562>>828293
#21 #825562
>>825557
стандартно в VS только prop, и то только для автореализуемых
>>825563
#22 #825563
>>825562
Спасибо, это и надо было
#23 #825651
1 Как поставить студию 2015 под вайн?
2 Кто-нибудь пробовальставить студию 2015 под вайн не веб-инсталлером, а с iso -образа?
#24 #825653
>>825651
1 а в чем разница?
2 ну, мало чем отличается, либо ждешь загрузку после выбора компонентов, либо качаешь все и ставишь что надо
#25 #825686
>>825191
братан, ты уже блять окошко нарисовал и радиобатоны загружаешь из файла.
на си ты бы ещё только начинал бы
#26 #825699
>>825651
1 https://appdb.winehq.org/objectManager.php?sClass=version&iId=32486

>garbage


>What works Nothing.


>What does not Cannot run web installer.


2

>What was not tested Did not test ISO/offline installer.

#27 #825736
Давно хотел спросить: под дотнет существует какой-нибудь глобальный фреймворк для бизнес-логики с dependency injection (с конфигом через атрибуты или конфигурационный файл) и прочим по типу Spring для джавы? Или обычно пользуются из коробки, а объекты через конструкторы создают?
>>825751>>825883
#28 #825751
>>825736
castle.windsor?
43 Кб, 1000x800
#29 #825775
Аноны, несмотря на шутливую форму вопрос предельно серьёзный. Не хочу вас грузить подробностями:
Есть начальник, зам, менеджер по персоналу. У них три компьютера без сети. Сеть отпадает!
Задача - сделать для трех не связаных компьютеров программу в которой есть перечень персонала (100 сотрудников), перечень наказаний для персонала (сажание на кол, удары плетью), перечень проступков (опоздание на милисекунду, недостаточно низкий поклон начальству). Данные динамические, ведь сотрудники уходят, проступки ужесточаются. Так вот, программа должна автоматически вычислять наказание для сотрудника который провинился.
Вопрос: как лучше подойти к делу? Какой нужен стек технологий (файловые бд? Entity framework? WPF?). Как лучше хранить данные, как организовать архитектуру? Ведь если менеджер по персоналу добавит нового сотрудника, то начальнику придется делать то же самое. Целевая платформа windows XP Не могу спланировать архитектуру, анон, если чувствуешь себя неебаться софтвейр архитектором то помоги, ты практически поучавствуешь в стартапе.
#30 #825777
>>825775
очевидная нейросеть?
>>825783
#31 #825783
>>825777
Анон, алгоритм это дело десятое. Мне больше архитектура важна, где хранить данные, как обеспечить репликацию данных между компами без сети. Пусть носят на флешке, но как мержить данные, хранить в XML, в Sqlite? Может оставить как есть и пускай каждый в своём пека вводит заново а я просто sqlite запердолю?
>>825794
#32 #825792
А где ссылки на архивач на предыдущие 30+ тредов? Давайте впредь быть ответственнее
#33 #825794
>>825783
использовать хранение текущего состояния данных как журнал событий, при обнаружении новой пачки на устройстве (условно говоря, втыкнули флэшку), накатывать изменения. xml или sqlite - это, по-моему, уже дело десятое
>>825812
48 Кб, 543x441
#34 #825812
>>825794
Вот гипотетическая ситуация. При мерже будет черти что. Я уже думал все изменения от запуска программы хранить локально в виде патчей. А потом чтобы раз в месяц люди патчились между собой, но это выглядит лютой ебенью.
Я остановился на таком варианте - каждый работает локально и не ебёт людям голову, в случае чего загружает чужой файл с данными целиком вместо своего если не работал в программе месяц.
>>825814>>825816
#35 #825814
>>825812
ну ты пиздец, конечно. попробуй посмотреть интерактивно, как git тот же работает в таких случаях

> но это выглядит лютой ебенью


это выглядит совершенно рабочей версией в некоторых разработках (где это необходимо, естественно). при наличии какой-никакой активности производится регулярная репликация изменений и подвигание условного нуля
>>825824
#36 #825816
>>825812
тебе не кажется, что ты пытаешься срать через ноздрю? ты хочешь сделать базу данных, которая предполагает, что есть централизованное хранилище информации, к которому подключаются клиенты, а ты наоборот пытаешься подключить источник информации к клиентам. не проще ли в организации поставить роутер/свитч, протянуть витую пару, организовать локальную сеть и внутри неё создать обычную сеть с стандартным распределением клиент-бизнес сервер-дата сервер?
>>825824
#37 #825824
>>825816
Анон, меня именно об этом и просят. Срать через ноздрю, принеси на флешке и чтобы всё работало. Алсо мне только такие и предлагали подработки, дай программу и чтобы работало, а вести провода не будем и закупать вайфай адаптеры тоже, нахуй нам этот геморой.
>>825814
Босс запускает у себя программу, менеджер из отдела кадров тянет ему флешку. Что должно происходить далее? Я за этим вопросом и пришел к вам, аноны.
#38 #825829
>>825824
обнаруживаются данные -> способом fast_forward объединяются изменения, предварительно отсортировав их по дате изменений -> вычисляется новое состояние хранилища -> изменения обновляют алгоритм
#39 #825873
>>825775
https://msdn.microsoft.com/en-us/sync/bb821992
можно грабить корованы
#40 #825883
>>825736
У тебя в требованиях только DI? Тысячи их, в asp.net core даже встроенный есть.
#41 #825888
>>825824

> вести провода не будем


А как они одноклассники скролят?
#42 #826020
>>825775
>>825824

> Босс запускает у себя программу, менеджер из отдела кадров тянет ему флешку. Что должно происходить далее? Я за этим вопросом и пришел к вам, аноны.



Ну так и храни базу на флешке в единственном экземпляре, кому надо берут и вносят изменения.
#43 #826078
Аноны, что там с кроссплатформенным гуем? Уже можно написать приложение с gui, который будет хорошо работать под виндой и линем? Хочу писать кроссплатформенные десктопные штуки, но не хочу шквариться об жвм.
#44 #826153
>>826078

>2016


>Хочу писать десктопные штуки


ловите наркомана
>>826301
20 Кб, 520x533
4 Кб, 1620x53
14 Кб, 517x393
7 Кб, 1071x76
#45 #826157
Создаю интерфейс и реализую его (пик 1). Вылетает ошибка (пик 2). Если изменить DoubleLinkedListNode на IDoubleLinkedListNode (пик 3), то та ошибка исчезает, но появляется новая (пик 4).
Как решить эту проблему?
#46 #826166
>>826078
Тебе Qt для этого нужен
#47 #826182
>>826157
у дженериков есть замута с ковариантностью/контрвариантностью.
Не осбо помню что там и к чему, но как минимум прочекать это можешь
>>826189
11 Кб, 1673x101
#48 #826189
>>826182
Дело не в дженериках, он и без них выдает ошибку.
#49 #826218
>>826157
Сделай приватные переменные тоже интерфейсными.
#50 #826263
>>826078
Мы Avalonia понемногу пробуем, кое-какие проблемы есть, но в целом заебись.
#51 #826279
Дотнетач, а как писать тесты для asp.net приложухи? Вот например, у меня есть partial классы в которых написан API, api так вообще вызывается с ангуляр - контроллера, там возвращается BadRequest(), Ok() или Json() в который передается класс на сериализацию соответственно, так как несколько вьюшек написаны на нем, как мне это все протестировать - то? И например, даже если убрать API часть, в обычный контроллер инжектятся 3 сервиса, в двух из них идут запросы в БД, это значит в сами сервисы идет инжект контекста, т.е. надо делать ещё одну БД и полностью писать новый сервис под тест? Пишу учебный проект и с тестами никогда дел не имел, хочу вот научиться.
>>826285>>826465
#52 #826285
>>826157
реализация интерфейса предполагает публичный доступ к членам, объявленных интерфейсом, а не то, го написал ты

>>826279
тестится бизнес-логика, как правило. но, если ты удумал тестировать контроллер, то тебе надо создавать моковую базу данных, либо заглушку, что есть подобие интеграционных тестов, и все это дело соответствующим образом инжектировать
#53 #826288
>>826285
Хорошо, спасибо. Напишу тесты пока для тех частей приложухи, где не идет никаких DIs.
7 Кб, 497x241
#54 #826298
>>826285
А я что написал? Вон у меня на скрине публичный доступ к Next реализован. Остальные просто не стал скринить, потому что ошибка не в этом.
В общем проблему я уже решил (пик).
#55 #826301
>>826153
Поясни?
>>841320
#56 #826303
Есть тут аноны из Украины ну хохляндии, ок, которые работают шарпо-кодерами?
Расскажите про уровень программистов, на что нужно обращать внимание для мамкиного вкатывальщика. Шапку если что прочитал полностью, но интересны стори анонов.
#57 #826320
Аноны, начал изучать ваше искусство и не понимаю такой хуйни, почему везде в обычных циклах ставят for (int i = 0; i < n; i++), когда в большинстве случаев подходит for (byte i = 0; i < n; i++). Это ведь экономит потребление памяти или это настолько незначительная хуйня что можно везде ставить лонги вместо всех типов и на памяти я особо не проиграю?
#58 #826328
>>826320
просто редко бывает, что n <=255. да и выгоды особо никакой, ящитаю.
#59 #826335
>>826303
Просто берешь и без задней мысли вкатываешься, серьёзно. Причем тут вообще география?
>>841324
#60 #826348
>>826320
Если в цикле обращаться к элементам массива, то итератор все равно неявно скастится к int (кроме лонга вроде).
12 Кб, 357x455
13 Кб, 367x363
8 Кб, 444x285
#62 #826465
>>826279
>>826285
Вот есть сервис, в него инжектится контекст, вот контроллер, в него инжектится 3 сервиса соответственно, я хочу протестить для начала только сервис, как это можно сделать? Скорее даже так, можно ли это сделать с существующим контекстом, миграциями и базой данных соответственно, если проект со всеми зависимостями стоит как ссылка внутри библиотеки с тестами? Если в юнит тесте пытаться инжектить через конструктор, понятное дело, ничего не получается, как на третей картинке, как можно это сделать?
>>826476
9 Кб, 513x287
#63 #826476
>>826465
Хотя вот так сработало, так надо делать? Или есть ещё способы?
>>826535
#64 #826535
>>826476
если тебе надо тестировать только бизнес-логику - берешь последний вариант с Mock<>
если по какой-то причине нужно задействовать при этом реальную базу данных - берешь свой используемый контекст

единственное, что мне не совсем ясно - зачем держать поле контекста в классе теста? но это уже такое, издержки реализации
>>826553
#65 #826553
>>826535
Cпасибо.
#66 #826570
Перекатился недавно на Xamarin, до этого на WPF немного писал. Не понимаю как на Xamarin сделать следующую штуку: есть Grid, скажем 5х5, заполненный image'ми. Пользователь свайпит image в сторону соседнего и они меняются местами, как в игре "три в ряд". Свайпа в Xamarin из коробки нету, нашёл такое решение: http://stackoverflow.com/questions/29972404/xamarin-forms-swipe-left-swipe-right-gestures/37644851#37644851 Допустим, я размещу Grid в этот GestureFrame, но как я буду знать какой именно image свайпается?
>>826656
#67 #826656
>>826570
А почему бы кажде изображение не разметить в своем фрейме?
>>826703
#68 #826699
Хочу переехать на линь, core нормально работает? Не надо будет ебаться с ксамаринами? Что по ide? Ну и подводные камни офк.
спасибо
>>828277
#69 #826703
>>826656
А по производительности не пиздец будет? 25 этих фреймов, у каждого событие на свайп в каждую сторону...
>>826914
433 Кб, Webm
6 Кб, 778x72
#70 #826766
И как это починить, сталкивался кто? Тут есть конечно решение, с добавлением Program.cs и Startup.cs в class library, но это извращение же. Или откатить до обычного проекта? На самом деле я возился с неймспейсами целый день и мне очень сильно пичот. Хочется держать контекст и entities в отдельном проекте.
>>826772
#71 #826772
>>826766
Решение с вторым Startup'ом и пустым Main'ом в библиотеке работает после запуска команды по ссылке, отличный RTM, пойду обмажусь говном.
#72 #826914
>>826703
Ты сначала попробуй.
#73 #826948
Всем адекватных сущностей, полубоги!

Вопрос:
- с использованием чего сейчас модно делать десктопные приложения с клиентской и серверной части для локалочки?

Самостоятельное изучение вопроса почему-то всё упирает в IIS и ASP.NET, хотя нутром чувствую, что таки да надо дрочить WPF/XAML.
>>827003
#74 #826980
>>826303
Есть,
высокий (смотря где, но мне повезло),
на книгу CLR via C#, C# in depth, Release IT, и иже с ними.
>>827059
#75 #827003
>>826948

> десктопные приложения


> IIS и ASP.NET


ты какой-то странный
>>827012
#76 #827012
>>827003
Electron + WebAPI!
#77 #827059
>>826980
А как обстоят дела за рубежом? Реально ли после вуза при наличии проектов и экзамена по языку вкатиться джуном или даже около миддлом? И какого уровня должны быть проекты? Ну, например на новом asp.net. Конечно, тут без линкедина не обойтись, но речь о проектах.
>>827844
#78 #827089
>>825047
installshield, insted
Оптимизация #79 #827537
List<img_info> img_list = new List<img_info>();
for (int i = 0; i < files.Length; i++)
{
if (IsImageFile(files))
{
//var data = parser.Parse(files);
//data.ToList().ForEach(Console.WriteLine);
System.IO.FileStream fs = new System.IO.FileStream(files, System.IO.FileMode.Open);
System.Drawing.Image img = System.Drawing.Image.FromStream(fs);
fs.Close();
img_info ii = new img_info();
ii.Width = img.Width;
ii.Height = img.Height;
ii.Ratio = ii.Width / ii.Height;
ii.hash = Path.GetFileNameWithoutExtension(files);
img_list.Add(ii);
Console.WriteLine("Обрабатываю: {0} [{1}/{2}]", Path.GetFileName(files), i+1, files.Length);
}
}

Помогите ускорить этот код.
>>827709
тут наверное за такие вопросы убивают нахуй #80 #827672
string sqlExpression = "INSERT INTO Users (Name, Age) VALUES ('Jzck', 21)";
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand command = new SqlCommand(sqlExpression,connection);
int number = command.ExecuteNonQuery();
Console.WriteLine("Добавлено объектов: {0}", number);
}

Пиздец тупой. Короче, пример из учебника, правда там БД создается из SQL Studio, а я добавил LocalDB вариант.
Подключение без ошибок, но в базу ничего не пишется.
Сам запрос выполняется, но запись в БД появляется только после того как ручками обновишь. ЧЯДНТ? Похоже, что в моем варианте как-то в программе надо обновить табличку, но не соображу каким образом
#81 #827678
>>827672
Большие куски кода лучше где-нибудь на pastebin выкладывай. А тут скорее всего надо транзакцию закоммитить.
#82 #827707
>>827672
попробуй без "into"
>>827716>>827745
61 Кб, 1012x394
#83 #827709
>>827537
Что это за безумие с неймспейсами? Очередная лабораторная на лето?
>>830056
#84 #827716
>>827707
Не помогает
#85 #827745
>>827707
insert users? пиздец лол

>>827672
ты уверен, что insert и select выполняется из одних и тех же баз данных?
>>827841
#86 #827800
Шарпач, если есть база данных, где в нескольких таблицах у каждой записи может быть много фотографий (10+), как лучше организовать хранение фото: хранить на sql-сервере, и получать через при запросе к бизнес-серверу, заставлять дата-сервер предоставлять фотографии и отсылать клиенту, или написать свою логику хранения и извлечения изображений в файловой системе, и в контексте изображений работать с ней, а не с sql сервером?
>>827874
#87 #827841
>>827745
Эмм. Я без select смотрю в базе, в которой таблица Users. И там нихуя. База одна всего. Не, я рылся в интернете, видел там ситуации когда человек путался, но тут она тупо одна
>>827874
#88 #827844
>>826303
Меня взяли без опыта только на работу за 10к гривен.
До этого пару месяцев почти никто на резюме не отвечал и не звонил.
На собеседовании дали не очень сложные тесты, которые даже не зная ответа, можно догадаться какой правильный. Для вката с 0 думаю норм, учитывая что варинатов не было.
>>827059
Веслаешь на галере + релокейшн. Дипломы наших вузов не котируются за рубежом
А вообще лучше в магистратуру поехать за границу учиться, если есть соответствующие программы для твоего вуза. У меня знакомый в Европке уже год, сейчас доучитвается и будет у него диплом европейского вуза, с этим ему конечно будет проще свалить.
#89 #827874
>>827800
я за последний вариант

>>827841
нуок, что возращает ExecuteNonQuery?
сделай select из базы в блоке того же SqlConnection и после него в новом коннекшне
#90 #827878
Как понять паттерн MVVM? Нахуя он нужен и как им пользоваться?
>>827882>>827898
#91 #827882
>>827878
необходим, если используемся механизм связки данных
почитать про него в вики, msdn
#92 #827892
>>827672

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


>как-то в программе надо обновить табличку


В какой программе, какую табличку, какая запись? Ты смотришь на БД через стороннюю прогу или через датагрид в твоей?
#93 #827898
>>827878
насколько я понял, паттерн предполагает разделение программы на три концепции:
model - как я понял, это классы объектов, информация о которых отображается пользователю ИЛИ, если я неправильно понял, то модель - это класс окна/страницы, откуда всё запускается
view - уровень представления. то есть то, что пишется в xaml'e - всякие контролы, привязки их друг к другу, из графические особенности, (цвет, запах, анимация и тд) то есть то, что видит пользователь
view-model - уровень, который связывает модель и view, то есть объясняет представлению как отображать тот или иной объект пользователю. во view-model обычно описывают свойства, которые привязывают к контролам во view. также во view model запихивают команды, вызываемые при событиях контролов, и описывают общую логику взаимодействия. типа, стремись оставлять класс окна (c# код) пустым так долго, как это возможно, и описывай всё в xaml'e. если нужно что то припиздячить к контролам, то это, по возможности, описывается во view-model'e. надеюсь, найдутся аноны, которые поправят меня.
>>829728
9 Кб, 578x191
4 Кб, 353x120
#94 #827945
Дотнетач, есть один контроллер с пост - методом и одна вью - модель, на картинке, так вот, на вью - модели стоит аттрибут, который должен переназначать null на "", это весьма критично, так как в противном случае возвращается 200 ошибка, но аттрибут не работает, я долго искал почему, нашел ответ на гитхабе https://github.com/aspnet/Mvc/issues/5086, в итоге есть два варианта, убрать ModelState из контроллера, и сделать простую логику if/else, или написать свой аттрибут, есть конечно вариант подождать до релиза, но я не хочу. Так вот, как лучше сделать - то? Может быть есть ещё подобные аттрибуты?
#95 #827950
>>827945
400* ошибка же, глупость написал
#96 #827953
>>827945

> который должен переназначать null на ""


> ConvertEmptyStringToNull = false

>>827958>>827984
1 Кб, 447x47
#97 #827958
>>827953
Все правильно же, по умолчанию аттрибут выставлен в true, если идет запрос как на картинке, вью - модель вместо "" будет держать null в поле text, если false, то вместо null идет "", не знаю к чему твой зеленый маркер.
>>827984
#98 #827974
>>827945

>аттрибут, который должен переназначать null на ""


>ConvertEmptyStringToNull


Судя по названию он наоборот заменяет "" на null
#99 #827984
>>827958
>>827953
Да, но он не работает, ты мой пост читал? У аттрибута 2 состояния: true и false, если false null->"", если true ""->null
#100 #828078
аноны, что можете рассказать насчёт undo/redo в c#, и в частности в WPF в контексте datagrid имею ввиду, как реализовывать? мб у кого нибудь есть ссылки, где приведён хороший пример имплементации
#101 #828087
3-й день сижу залипаю.
Хочу перекатиться из VBA.
Поставил SharpDevelope и NetOffice.
C моделью Экселя разобрался, а по виндовой api-шке куда лазить? Хочется изнутри ее пощупать
#102 #828277
>>826699
Тоже хотел спросить. Бампану
#103 #828286
>>825651

> Visual Studio Code

>>828288
#104 #828288
>>828286
Но это же ноутпад++ на жабаскрипте.
>>828291
#105 #828291
>>828288
Ноутпад, да с интеллисенсом, отладкой и другими ништяками.
#106 #828293
>>825557
Можно кастомных на создавать в последней вижле. А с R# так вообще красота
>>828397
#107 #828375
Чем заполнить недоджуну свой гитхаб?
>>828712
#108 #828397
>>828533
УЁБОК #109 #828448
Сап, профи. Задача такая:
имеются веб-интерфейсы от МФУ xerox и ricoh. Они совершенно разные по интерфейсу и функционалу.
Задача собирать статистку по отпечаткам каждый день.
Скажите, как это сделать? В компании 100 МФУ двух типов.
#110 #828533
>>828397
resharper же
#111 #828544
Ради интереса качнул iso vs2015community.
Установка длится уже более 4-х часов с постоянной загрузкой доп. компонентов.
Микрософт в своем репертуаре.
Еще чуть чуть и я дропну это говно
>>828563
#112 #828563
>>828544
А когда если установится, ты охуеешь от медленности, а если решарпер поставишь - то вообще вешаться можно.
Калькулятор свой дропни, собачка.
>>828577>>828579
#113 #828577
>>828563
чистая студия шустрая, не пизди. конечно, если не сравнивать с блокнотом
>>828585
#114 #828579
>>828563
в курсе что ты ебнутый?
>>828585
44 Кб, 500x330
#115 #828585
>>828601
11 Кб, 200x200
#116 #828592
Анон, как работать с версиями?
Есть, допустим, мои приложение/библиотека и я хочу добавить новые фичи в это приложение/библиотеку при этом, чтобы версия которая есть сейчас продолжала работать и не трогать ее вообще.
Если текущее решение находится в папке Program_v1.0.0.0, я хочу создать новую папку Program_v2.0.0.0 скопировать туда все содержимое из первой и поменять версию в настройках Visual Studio, и все. Такой подход практикуется? Что может пойти не так? И как по-нормальному решаются такие вопросы?
>>828605>>828610
1484 Кб, 320x240
#117 #828601
#118 #828605
>>828592

>продолжала работать и не трогать ее вообще


Так сделай билд и не трогай ее вообще.

>папки какие-то, скопировать куда-то


Ты про гит, например, слышал?
>>828616
#120 #828616
>>828605
>>828610

Ок, спасибо. Читал Эндрю Троелсена и когда в примерах нужна была новая версия библиотеки он просто копировал ее из одной папки в другую попутно меняя версию в имени папки и настройках не заморачиваясь, вот и стало интересно насколько это правильно и применимо на практике.
16 Кб, 730x345
20 Кб, 692x383
4 Кб, 303x149
#121 #828622
Подскажите по entity framework'у, на первой картинке один - к - одному модель с официальной документации, зачем они ставят public Blog Blog { get; set; } после указания id? Следующие две картинки моя модель и метод в сервисе, как правильнее делать? Я смотрел разные гитхабы, и везде делали по - разному. Мой вариант работает если что, но я хочу узнать как надо.
>>828636>>828638
#122 #828636
>>828622
Если тебе BlogImage нужен Blog - то делаешь, если не нужен - не делаешь. Вопрос то в чем?
>>828692
#123 #828638
>>828622

> зачем они ставят public Blog Blog


чтобы иметь доступ к связанной сущности из BlogImage, очевидно
>>828692
#124 #828692
>>828636
>>828638
В этом и был вопрос, все ясно, спасибо.
26 Кб, 633x471
#125 #828712
>>828375

Говнокодом
#126 #828995
Посоветуйте хороших книг по ООП, нужно мозги перестроить, а то только на си писал и питоне без использования классов.
>>829025
#127 #829025
>>828995
Ну что - нибудь из книг Фаулера наверное, можешь навернуть Gang of Four, но тебе ведь основы нужны? Все эти книжки по паттернам скорее для архитекторов, джуну достаточно знать основы ООП + пару паттернов, которые идут в любой литературе по C#.
>>829052
#128 #829052
>>829025

Ну ок, на будущее тогда сохраню, я пока читаю с# players guide, хорошо написана, может и освою.
#129 #829091
>>824683 (OP)

> Хардкорная литература по шарпу


Ептя, анон. Спасибо за наводку. Алсо, есть ли еще что-то интересное по Machine Learning и прочему ИИ для дотнета? На курсере эта тема вскрывается с помощью питона, а меня от его синтаксиса блевать тянет.
а то ведь чувствую, что придется качать скилл борьбы с брезгливостью
плюралсайт сосет хуй
>>829093
#130 #829093
>>829091
Ах да, и лучей добра тебе за такие книжечки.
89 Кб, 400x254
Экземляр класса в качестве параметра #131 #829112
Господа, помогите, кажется, я стал заложником ДИЗАЙНА своей утилитки.

В программе есть абстрактный класс, у него несколько полей и свойств, часть полей и свойств переопределены в классах-наследниках.
В другом классе есть метод, обрабатывающий данные из этих полей. Но, так как метод завязан на сравнение данных, мне нужно передать ему в качестве параметров два экземпляра класса, чтобы в теле метода вызывать свойства, возвращающие нужные мне значения. На момент компиляции не знаю, какого типа будут эти экземпляры, знаю только, что это будет один из унаследованных от абстрактного, классов. Всяческие мои ухищрения приводят меня к ошибкам, сама частая "Error CS0120 An object reference is required for the non-static field, method, or property", из-за несоответствия типов.

Наверное, мой способ кривой, но эта концепция с наследниками от абстрактного работала до текущего момента.
>>829130
#132 #829130
>>829112
Ты что-то не то несешь, у тебя ругается на static, а не на абстрактность. Покажи вырезку из кода, как-что вызываешь. В чем проблема передать два объекта с типом абстрактного класса?
>>829216
521 Кб, 1500x2306
#133 #829216
>>829130
Спасибо, надо было просто проговорить проблему: уже что-то под ночь туплю., забыл создать экземляр.
Извиняюсь за беспокойство.
#134 #829459
Что читать после c# players guide? Переходить к более хардкорному материалу или

< C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) ?
>>829460>>829488
#135 #829460
>>829459

> C# 6.0 and the .NET 4.6 Framework (Andrew Troelsen) ?



fixed
#136 #829488
>>829459
Линк/коллекции/делегирование усвоил? Пиши приложуху, попутно разберешься асинхронностью, узкими местами языка, поймешь несколько архитектурных паттернов, разберешься с фреймворками той области, в которой хочешь работать, смотри решения на SO, рефакторь свой код, попутно можешь полистать что - нибудь уровня Writing High Perfomance или CookBook, через пару месяцев сможешь спокойно пособеседоваться, так как половину ты уже знать будешь, рихтера оставь на потом, ну, или прочитай если ты так этого хочешь. Не увлекайся книгами, а то будешь рассказывать про паттерны и цититровать CLR via C#, не имея ни одного проекта.
>>829496
#137 #829496
>>829488
Спасибо за развернутый ответ, но я только пол книги прочитал и спрашивал на будущее, ну короче так и сделаю, а вообще хочу попрообовать игру сделать, только не знаю Monogame или юнити выбрать.
#138 #829543
Что значит такая запись?

>GameObject tile = (GameObject) Instantiate(er);


Вначале понятно - объявление переменной tile типа GameObject, которой присваивается результат функции Instantiate c аргументом er. Но что значит (GameObject)?
>>829545>>829731
#139 #829545
>>829543
Приведение типа
>>829547
#140 #829547
>>829545
Спасибо.
83 Кб, 411x411
#141 #829687
private int _name
или
private int name
????
#142 #829705
>>829687
auto property
#143 #829728
>>827898
ViewModel вообще ничего не должна знать ни о контролах, ни о событиях.
#144 #829731
>>829543
Типичный юнити-говнокодер, лол.
#145 #829816
>>829687
Так и так пишут, самый простой пример если взять DI

public Class(IService service) {
...this.service = service;
}
public Class(IService service) {
..._service = service;
}
Хотя в офиц. документациях в основном _prop идет, без this
#146 #829826
>>829687
Ты вынужден называть переменную с подчеркиванием?
#147 #829892
>>829687
Дело вкуса
#148 #829961
Господа, я знаю в нашем треде сидят исключительно архитекторы и сеньоры с 10+ годами опыта, потому я прошу мельком посмотреть мое поделие и сказать мне почему я нубас. Мне ещё учиться 2 года, но хочу попробовать сходить на собеседование в след. году. https://github.com/Softenraged
Алсо, оно сделано процентов на 70 только, буду в конце семестра допиливать, не успеваю так как.
>>831211
#149 #830056
>>827709
Во первых твой код падает с OutOfMemoryException, а во вторых работает также медленно как и мой.
>>830128>>830201
#150 #830060
Нужно по быстрому загрузить из графического файла данные о разрешении изображения? Само изображение загружать не нужно.
>>830109
#151 #830109
>>830060
Сам разобрался, Taglib# помог.
#152 #830128
>>830056
- оборачивать Stream в using
- оборачивать Bitmap/Image в using
- избавиться от лишних IO-операций, коими являются те же Console.WriteLine
- не очень ясно, что такое IsImageFile(files) (и, судя по всему, на всех шагах цикла, оно возвращает абсолютно одинаковое значение)
- используй Parallel
- шо такое img_info - тоже ясно достаточно смутно
- зная длину конечного листа, создавай экземпляр с явным указанием размеров
- наконец, зачем тебе бездонный лист имэджев? делай что-то с ними на каком-то этапе уже
>>830186
#153 #830149
>>827672
Разобрался. В итоге в говнобазах в говнообозревателях серверов, объектов SQL и прочих эксплореров заблудился, в разные базы запросы посылал и смотрел итог.
#154 #830186
>>830128
Вот полный код, уже переделанный.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;
using System.Data;
using System.IO;
using TagLib;

namespace Azusa
{
class Program
{
static void Main(string[] args)
{
//string connection_string = "data source=C:\\utils\\Erza\\erza.sqlite";
Console.WriteLine("Получаю список файлов из {0}", args[0]);
string[] files = Directory.GetFiles(args[0], ".", SearchOption.AllDirectories);
//Parser parser = new Parser();
List<img_info> img_list = new List<img_info>();
for (int i = 0; i < files.Length; i++)
{
if (IsImageFile(files))
{
//var data = parser.Parse(files);
//data.ToList().ForEach(Console.WriteLine);
//System.IO.FileStream fs = new System.IO.FileStream(files, System.IO.FileMode.Open);
//System.Drawing.Image img = System.Drawing.Image.FromStream(fs);
//fs.Close();
img_info ii = ParsePhoto(files);
if (ii != null)
{
//img_info ii = new img_info();
//ii.Width = img.Width;
//ii.Height = img.Height;
ii.Ratio = (float)ii.Width / (float)ii.Height;
ii.hash = Path.GetFileNameWithoutExtension(files);
img_list.Add(ii);
}
Console.WriteLine("Обрабатываю: {0} [{1}/{2}]", Path.GetFileName(files), i+1, files.Length);
}
}
WriteDB(img_list, ".\\img_info.db");
}
static void WriteDB(List<img_info> img_list, string BaseName)
{
SQLiteConnection.CreateFile(BaseName);

using (SQLiteConnection connection = new SQLiteConnection("data source=" + BaseName))
{
connection.Open();

using (SQLiteCommand command = new SQLiteCommand(connection))
{
command.CommandText = @"CREATE TABLE [image_info] (
[id] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
[hash] char(32) NOT NULL,
[width] integer NOT NULL,
[height] integer NOT NULL,
[ratio] real NOT NULL
);";
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
}
//hguihuihihiu
using (SQLiteConnection connection = new SQLiteConnection("data source=" + BaseName))
{
int count_file = 0;
int all_files = img_list.Count;
DateTime start = DateTime.Now;
connection.Open();
SQLiteTransaction transact = connection.BeginTransaction();
foreach (img_info img in img_list)
{
count_file++;
using (SQLiteCommand command = new SQLiteCommand(connection))
{
command.CommandText = "INSERT INTO image_info(hash, width, height, ratio) VALUES(@hash, @width, @height, @ratio);";
command.Parameters.AddWithValue("hash", img.hash);
command.Parameters.AddWithValue("width", img.Width);
command.Parameters.AddWithValue("height", img.Height);
command.Parameters.AddWithValue("ratio", img.Ratio);
command.ExecuteNonQuery();
}
Console.WriteLine("Фаил {0} добавлен. [{1}/{2}]", Path.GetFileName(img.hash), count_file, all_files);
}
transact.Commit();
DateTime finish = DateTime.Now;
Console.WriteLine("Файлов проверено: {0} за: {1} секунд ({2} в секунду)", img_list.Count, (finish - start).TotalSeconds.ToString("0.00"), (img_list.Count / (finish - start).TotalSeconds));
}
}
static bool IsImageFile(string s)
{
int t = s.LastIndexOf('.');
if (t >= 0)
{
string ext = s.Substring(t).ToLower();
switch (ext)
{
case ".jpg":
return true;
//break;
case ".jpeg":
return true;
//break;
case ".png":
return true;
//break;
case ".bmp":
return true;
//break;
case ".gif":
return true;
//break;
case ".tif":
return true;
//break;
case ".tiff":
return true;
//break;

}
}
return false;
}
static img_info ParsePhoto(string path)
{
img_info ii = new img_info();
TagLib.File file = null;

try
{
file = TagLib.File.Create(path);
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine("UNSUPPORTED FILE: " + path);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
return null;
}

var image = file as TagLib.Image.File;
if (file == null)
{
Console.WriteLine("NOT AN IMAGE FILE: " + path);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
return null;
}
/
Console.WriteLine(String.Empty);
Console.WriteLine(path);
Console.WriteLine(String.Empty);

Console.WriteLine("Tags in object : " + image.TagTypes);
Console.WriteLine(String.Empty);

Console.WriteLine("Comment : " + image.ImageTag.Comment);
Console.Write("Keywords : ");
foreach (var keyword in image.ImageTag.Keywords)
{
Console.Write(keyword + " ");
}
Console.WriteLine();
Console.WriteLine("Rating : " + image.ImageTag.Rating);
Console.WriteLine("DateTime : " + image.ImageTag.DateTime);
Console.WriteLine("Orientation : " + image.ImageTag.Orientation);
Console.WriteLine("Software : " + image.ImageTag.Software);
Console.WriteLine("ExposureTime : " + image.ImageTag.ExposureTime);
Console.WriteLine("FNumber : " + image.ImageTag.FNumber);
Console.WriteLine("ISOSpeedRatings : " + image.ImageTag.ISOSpeedRatings);
Console.WriteLine("FocalLength : " + image.ImageTag.FocalLength);
Console.WriteLine("FocalLength35mm : " + image.ImageTag.FocalLengthIn35mmFilm);
Console.WriteLine("Make : " + image.ImageTag.Make);
Console.WriteLine("Model : " + image.ImageTag.Model);
/
if (image.Properties != null)
{
//Console.WriteLine("Width : " + image.Properties.PhotoWidth);
//Console.WriteLine("Height : " + image.Properties.PhotoHeight);
//Console.WriteLine("Type : " + image.Properties.Description);
ii.Height = image.Properties.PhotoHeight;
ii.Width = image.Properties.PhotoWidth;
}

//Console.WriteLine();
//Console.WriteLine("Writable? : " + image.Writeable.ToString());
//Console.WriteLine("Corrupt? : " + image.PossiblyCorrupt.ToString());
/
if (image.PossiblyCorrupt)
{
foreach (string reason in image.CorruptionReasons)
{
Console.WriteLine("
" + reason);
}
}

Console.WriteLine("---------------------------------------");*/
return null;
}
}
class img_info
{
public string hash;
public int Width;
public int Height;
public float Ratio;
}
}
#154 #830186
>>830128
Вот полный код, уже переделанный.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SQLite;
using System.Data;
using System.IO;
using TagLib;

namespace Azusa
{
class Program
{
static void Main(string[] args)
{
//string connection_string = "data source=C:\\utils\\Erza\\erza.sqlite";
Console.WriteLine("Получаю список файлов из {0}", args[0]);
string[] files = Directory.GetFiles(args[0], ".", SearchOption.AllDirectories);
//Parser parser = new Parser();
List<img_info> img_list = new List<img_info>();
for (int i = 0; i < files.Length; i++)
{
if (IsImageFile(files))
{
//var data = parser.Parse(files);
//data.ToList().ForEach(Console.WriteLine);
//System.IO.FileStream fs = new System.IO.FileStream(files, System.IO.FileMode.Open);
//System.Drawing.Image img = System.Drawing.Image.FromStream(fs);
//fs.Close();
img_info ii = ParsePhoto(files);
if (ii != null)
{
//img_info ii = new img_info();
//ii.Width = img.Width;
//ii.Height = img.Height;
ii.Ratio = (float)ii.Width / (float)ii.Height;
ii.hash = Path.GetFileNameWithoutExtension(files);
img_list.Add(ii);
}
Console.WriteLine("Обрабатываю: {0} [{1}/{2}]", Path.GetFileName(files), i+1, files.Length);
}
}
WriteDB(img_list, ".\\img_info.db");
}
static void WriteDB(List<img_info> img_list, string BaseName)
{
SQLiteConnection.CreateFile(BaseName);

using (SQLiteConnection connection = new SQLiteConnection("data source=" + BaseName))
{
connection.Open();

using (SQLiteCommand command = new SQLiteCommand(connection))
{
command.CommandText = @"CREATE TABLE [image_info] (
[id] integer PRIMARY KEY AUTOINCREMENT NOT NULL,
[hash] char(32) NOT NULL,
[width] integer NOT NULL,
[height] integer NOT NULL,
[ratio] real NOT NULL
);";
command.CommandType = CommandType.Text;
command.ExecuteNonQuery();
}
}
//hguihuihihiu
using (SQLiteConnection connection = new SQLiteConnection("data source=" + BaseName))
{
int count_file = 0;
int all_files = img_list.Count;
DateTime start = DateTime.Now;
connection.Open();
SQLiteTransaction transact = connection.BeginTransaction();
foreach (img_info img in img_list)
{
count_file++;
using (SQLiteCommand command = new SQLiteCommand(connection))
{
command.CommandText = "INSERT INTO image_info(hash, width, height, ratio) VALUES(@hash, @width, @height, @ratio);";
command.Parameters.AddWithValue("hash", img.hash);
command.Parameters.AddWithValue("width", img.Width);
command.Parameters.AddWithValue("height", img.Height);
command.Parameters.AddWithValue("ratio", img.Ratio);
command.ExecuteNonQuery();
}
Console.WriteLine("Фаил {0} добавлен. [{1}/{2}]", Path.GetFileName(img.hash), count_file, all_files);
}
transact.Commit();
DateTime finish = DateTime.Now;
Console.WriteLine("Файлов проверено: {0} за: {1} секунд ({2} в секунду)", img_list.Count, (finish - start).TotalSeconds.ToString("0.00"), (img_list.Count / (finish - start).TotalSeconds));
}
}
static bool IsImageFile(string s)
{
int t = s.LastIndexOf('.');
if (t >= 0)
{
string ext = s.Substring(t).ToLower();
switch (ext)
{
case ".jpg":
return true;
//break;
case ".jpeg":
return true;
//break;
case ".png":
return true;
//break;
case ".bmp":
return true;
//break;
case ".gif":
return true;
//break;
case ".tif":
return true;
//break;
case ".tiff":
return true;
//break;

}
}
return false;
}
static img_info ParsePhoto(string path)
{
img_info ii = new img_info();
TagLib.File file = null;

try
{
file = TagLib.File.Create(path);
}
catch (TagLib.UnsupportedFormatException)
{
Console.WriteLine("UNSUPPORTED FILE: " + path);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
return null;
}

var image = file as TagLib.Image.File;
if (file == null)
{
Console.WriteLine("NOT AN IMAGE FILE: " + path);
Console.WriteLine(String.Empty);
Console.WriteLine("---------------------------------------");
Console.WriteLine(String.Empty);
return null;
}
/
Console.WriteLine(String.Empty);
Console.WriteLine(path);
Console.WriteLine(String.Empty);

Console.WriteLine("Tags in object : " + image.TagTypes);
Console.WriteLine(String.Empty);

Console.WriteLine("Comment : " + image.ImageTag.Comment);
Console.Write("Keywords : ");
foreach (var keyword in image.ImageTag.Keywords)
{
Console.Write(keyword + " ");
}
Console.WriteLine();
Console.WriteLine("Rating : " + image.ImageTag.Rating);
Console.WriteLine("DateTime : " + image.ImageTag.DateTime);
Console.WriteLine("Orientation : " + image.ImageTag.Orientation);
Console.WriteLine("Software : " + image.ImageTag.Software);
Console.WriteLine("ExposureTime : " + image.ImageTag.ExposureTime);
Console.WriteLine("FNumber : " + image.ImageTag.FNumber);
Console.WriteLine("ISOSpeedRatings : " + image.ImageTag.ISOSpeedRatings);
Console.WriteLine("FocalLength : " + image.ImageTag.FocalLength);
Console.WriteLine("FocalLength35mm : " + image.ImageTag.FocalLengthIn35mmFilm);
Console.WriteLine("Make : " + image.ImageTag.Make);
Console.WriteLine("Model : " + image.ImageTag.Model);
/
if (image.Properties != null)
{
//Console.WriteLine("Width : " + image.Properties.PhotoWidth);
//Console.WriteLine("Height : " + image.Properties.PhotoHeight);
//Console.WriteLine("Type : " + image.Properties.Description);
ii.Height = image.Properties.PhotoHeight;
ii.Width = image.Properties.PhotoWidth;
}

//Console.WriteLine();
//Console.WriteLine("Writable? : " + image.Writeable.ToString());
//Console.WriteLine("Corrupt? : " + image.PossiblyCorrupt.ToString());
/
if (image.PossiblyCorrupt)
{
foreach (string reason in image.CorruptionReasons)
{
Console.WriteLine("
" + reason);
}
}

Console.WriteLine("---------------------------------------");*/
return null;
}
}
class img_info
{
public string hash;
public int Width;
public int Height;
public float Ratio;
}
}
>>830190>>830205
#155 #830190
>>830186
ебать-колотить, тебе dotnetfiddle или pastebin показать?
>>830927
20 Кб, 654x330
#156 #830201
>>830056
Я поймал это исключение только тогда, когда прочитав твой пост запустил код по директории, где 2000+ картинок, что ты там загружать пытаешься? Ты в любом случае быстрее не сделаешь, работая с bitmap на 1000+ изображений, как вариант оставь в покое Image и используй FileInfo, пикрилейтед.
>>830924
6 Кб, 200x251
#157 #830205
#158 #830644
Поясните что делает Thread.Sleep(0)
Thread.Sleep(0) relinquishes the thread’s current time slice immediately, voluntarily handing over the CPU to other threads.
Это объяснение не совсем понятно.
Что значит передает обработку другим потокам?
Когда он не во сне другие потоки и так работают. Зачем потоку передавать тому, что и так работает.
>>830654
13 Кб, 745x200
1 Кб, 202x58
#159 #830654
>>830644
Инженеры Интел думают, как бы тебе ядер побольше сделать, а у него все потоки работают.
>>830662
#160 #830662
>>830654

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


Первая глава по многопточности
http://www.albahari.com/threading/
Тебе лишь бы выебнуться :(
Спасибо за нихуя.
>>830793
#161 #830703
>>825035
Чет тоже в голосину с этого.
#162 #830744
Извините за возможно супер-тупой вопрос, но какой инструмент надо использовать, чтобы написать на андроид простую програмку? Яву не знаю, но знаю Си-сярп.
#163 #830759
>>830744
их много. в vs2015 при установке предлагают андроид кит установить. также, можешь на юнити писать
>>830832
#164 #830764
>>830744
Один хуй, ты в своей андроид программке даже в синтаксисе не увидишь разницы. Пиши в андроид студио шарп код и исправляй места где подчеркивает красным вслед за подсказками.
>>830832
32 Кб, 1355x383
35 Кб, 1299x355
#165 #830793
>>830662
Ну ты сразу не загорайся, если процессор занят тредом - то процессор скорее всего занят тредом, и ему до пизды есть у тебя там потоки или нет, он же занят тредом.
Вот смотри виртуалки с виндой не было один процессор с одним ядром, первый пик - без Thread.Sleep, но если его добавить то процессор сможет переключиться к другим тредам (пик 2). В принципе, ThreadScheduler должен этим заниматься, но все зависит от его реализации, ну и от количества ядер конечно же.
>>830815
#166 #830815
>>830793
думаю, тут дело в том, как устроена многопоточность в современных ОС: во время работы ОС функционирует большое количество потоков, ограниченное, кажется количеством ядер*1022. каждый тред имеет приоритет, и одновременно одно логическое ядро занято только одним тредом. на всё-провсё в зависимости приоритета ему выделяется различное время, пропорция приоритет-время прямопропорциональная, но всё же выделяемое треду время исчисляется микросекундами. дак вот, вероятно, за несколько десятков мкс ядро успевает за один заход обработать все 500 итераций в треде, НО! если ты после каждой итерации вызываешь тред.слип(), то ты "аварийно" завершаешь работу ядра с тредом раньше времени, и ядро переходит к другому треду. возможно, дальше в контексте приложения процессор возьмётся за тред с выводом Х, а возможно снова за тред с выводом У
#167 #830832
>>830759
>>830764
Я думал меня отсюда пошлят в три пизды и колено, а тут ответили адекватно и быстро.
Спасибо вам анончики, у вас ламповый тред
#168 #830864
>>830744
Xamarin
#169 #830924
>>830201
Нужно получить информацию о разрешении для 200 000 картинок.
>>830981
#170 #830927
>>830981
#171 #830981
>>830924
>>830927
записывай их периодически куда-нибудь. только для одних числовых полей твоего класса для 200К записей понадобится порядка 24Гб памяти, которой у тебя, подозреваю, не присутствует
>>830987>>831205
#172 #830987
>>830981
(4+4+8+32)*200 000=9 600 000 байт.
>>831158
#173 #831132
Скок занимает перекот с плюсов на шарп? Какие основные особенности?
>>831164>>831208
#174 #831158
>>830987
блжад, я же разрядности считал. но все-равно много
float занимает 4
а со string я не уверен, что получится 32. как так-то?
>>831715
#175 #831164
>>831132

>Какие основные особенности?


Ну это как есть говно, а потом резко начать есть пирожные.
#176 #831203
>>830744
vs 2015 community. Там есть волшебный Xamarin
#177 #831205
>>830981
Чувак, не открывай картинки целиком. Это сжирает оче дохуя памяти.
Юзай другой подход.
Например тут: http://stackoverflow.com/questions/111345/getting-image-dimensions-without-reading-the-entire-file
>>831712
#178 #831208
>>831132
Ну если в ооп ты можешь, то особо не долго. Просто тут нету работы с указателями, адресами и прочим. на самом деле есть, но тебе не понадобится скорее всего
Пробуй, язык простой. Тем более, ты уже умеешь плюсы.
#179 #831211
>>829961
Особо не смотрел.
Глянул один файл LinqExtension

Братан, ты чего?
последние 5 записей берутся просто:
.Skip(count-5).Take(5);
Всё.
Нахуя какие-то очереди?
Не усложняй, братан.

Если освободится время - гляну по максимуму, но не уверен.
>>831222
#180 #831222
>>831211

> .Take(5)


> Не усложняй

>>831255
#181 #831255
>>831222
а что не так?
Как ещё проще-то?
Реверс а потом взять 5?
>>831288
#182 #831288
>>831255
Братишка всегда пишет зеленым маркером, дело все в том, что на втором релиз кандидате не работал MoreLinq, а решения с Skip(), Take(), Reverse() не самые эффективные, вот я и взял оттуда решение с очередью, потом когда проапдейтился до RTM, решил оставить, не подключая лишние ссылки в class library.
#183 #831311
хлопци, как используя ADO.net получая информацию в DataSet из ms sql сервера получить ещё и навешенные в самом sql-сервере на таблицы ограничения типа первичный/внешний ключ, null\not null, check и прочие?
>>831636
#184 #831349
>>825026

> HtmlAgilityPack


Он вроде не обновляется уже.
#185 #831441
Почему Шарп такой классный? Когда я его пишу, то чувствую вкус шоколада и кремовых пирожных. Когда я писал на жаве, я чувствовал вкус гнили и смрад разложения.
>>831480
#186 #831480
>>831441
Двачую. Сразу видно язык, дизайну которого посвятили кучу времени.
>>831512
68 Кб, 600x400
#187 #831487
Решил наконец попробовать WPF. И еле нашёл класс program с методом Main(). И открыв его, прочитал: «изменения в этом классе могут быть утеряны, если файл отрегенерирует».

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

С доступным Program.Main, Я ПОВЕЛЕВАЛ: что, когда, и как будет инициализироваться и настраиваться. И какие действия нужно выполнить до начала программы и после. Каждый класс создавался и вкладывался в более сложную структуру (как часы, создающиеся не из отдельных винтиков а из блоков, состоящих из винтиков). Формы мог организовать как угодно.

А тут вам — пишите в главной форме, а о program.Main() забудте. (MVVM лишь способ взаимодействия формы с источником данных, а не способ создания архитектуры программы)
Как теперь жить? Может я что-то не правильно понял?
#188 #831503
>>825047
Делай через ClickOnce. Очень хорошо заходит на предприятиях.
>>831547
#189 #831512
>>831480
Ну не совсем же так радужно все. Вот взять даже конструкцию Switch / Case оператора. Это же привет из прошлого века. Сейчас, как очень хорошая альтернатива свичу предлагается паттерн матчинг (Rust к примеру).
Или же модификаторы доступа к методам и свойствам класса. Почему их нельзя группировать, как это сделано в C++ ? Постоянно вынужден к каждому члену класса приписывать свой модификатор.
>>831695>>831740
#190 #831515
>>831487
Ты неправильно понял. Оставь в покое Main(). WPF рулез
>>831551
#191 #831516
>>831487
В WPF окна не очень принято создавать. Там есть страницы, которые ты можешь загружать во фрейм на главном окне приложения.
>>831551
#192 #831518
Поясните нубу разницу в использовании (int) и Convert.Int32()? Максимально полно, то что нашел пока:
- Convert.Int32() математически округляет в то время как (int) берет целую часть
- При обработке null (int) выдаст исключение, Convert.Int32() вернет 0

Что еще и когда какой способ приведения лучше применять?
>>831523
#193 #831523
>>831518
Если ты говоришь о дробях и тебе нужна точность, то можно реализовать это в стиле Smalltalk. Делаешь небольшой тип данных, который раздельно хранить в double числитель и знаменатель. И делаешь метод, который делит с заданной точностью, возвращая результат.
>>831528
11 Кб, 400x248
Visual Studio Lightswitch #194 #831527
Привет, Аноны. Кто-то может пояснить за сабж ? Он хоть развивается или давно уже заброшен с 2012 года ?
#195 #831528
>>831523
Не, я говорю о различиях в использовании, когда что лучше использовать и почему. Пару различий которые я нашел я привел
>>831532
#196 #831532
>>831528
Можно взять Jetbrains Dotpeek и посмотреть, как устроен метод Int32() в классе Convert.
>>831543
#197 #831539
Аноны, короче есть Яндекс мани, и когда на него приходят деньги от клиента он предлагает сделать так:

>Уведомление отправляется как HTTP-запрос на адрес, указанный в настройках счета, в следующем формате:



> метод — POST;


> каждый параметр уведомления указывается парой ключ/значение в виде параметра POST-запроса;


> MIME-тип — application/x-www-form-urlencoded;


> кодировка символов — UTF-8.



Как мне на С# сервере принять этот запрос? Чем его слушать надо?
>>831545
#200 #831547
>>831503
я не совсем корректно сформулировал вопрос. в каких ситуациях мне придётся или крайне рекомендуется делать установщик для программы? когда невозможно предоставить программу пользователю без соответствующего установщика? или в установщик запихивают всякие .нет фреймворки и прочее, необходимое для работы?
>>835345
#201 #831549
>>831545
Меня не так поняли. Яндекс предлагает отправить мне уведомление с деталями платежа. Мне надо его получить и распарсить. Вот как мне этот HTTP (а лучше HTTPS) получить?
>>831599
#202 #831551
>>831515
>>831516
Но всё таки. Если нужно создать подключение к базе перед работой программы или сохранение при выключении/поломке программы или в зависимости от ОС создать платформенно-зависимые классы, то где это всё писать? Учить этому главную форму точно не правильное решение. Или может выделать рабочую часть в «серверную" программу, а в другую гуй с WPF?
>>831557>>831565
#203 #831557
>>831551

>Учить этому главную форму точно не правильное решение


Почему?
>>831563>>831564
#204 #831563
>>831557
предположу, что перегруженность кодом и привязанность бизнес-серверного слоя к оболочке пользователя больше, ежели у отдельной программы для бизнес-сервера
#205 #831564
>>831557
SOLID говорит, что должна быть одна причина для изменения. Считаю что главная форма пусть отвечает за загрузку страниц.
#206 #831565
>>831551
Entity Framework ?
>>831576
#207 #831576
>>831565
Он только для баз данных? Или это каркас, который в процессе загрузки, может запустить событие, в котором я смогу исходя из настроек создать классы использующиеся в задача-ориентированном коде?
Плюс позволит импортировать формочки?
>>831591
#208 #831591
>>831576
Формочки делать самому придется, но он создает полный домен и репозитории для каждой таблицы. Затем его можно очень хорошо использовать в WPF с привязками данных [https://msdn.microsoft.com/en-us/data/jj574514.aspx] (очень важная штука).

И вообще там есть три основных способа работы:
1. Code First - пишешь C# код для Entity Framework и он генерирует DSL для создания схемы данных;
2. Model First - пилишь модель данных (как схема классов) в конструкторе EF и он генерирует DSL для создания схемы данных.
3. Database First - генерирует весь программный код на основе схемы данных из базы данных.

*DSL - это SQL скрипты для создания схемы данных (базы данных).
#209 #831599
>>831549

>Here is a Web API controller that accepts an object via POST.

#210 #831636
>>831311

> самом sql-сервере на таблицы ограничения типа первичный/внешний ключ, null\not null, check и прочие?


Настраиваешь сам при создании датасета в соответствии с твоими таблицами в бд.
#211 #831695
>>831512

>Ну не совсем же так радужно все. Вот взять даже конструкцию Switch / Case оператора. Это же привет из прошлого века. Сейчас, как очень хорошая альтернатива свичу предлагается паттерн матчинг (Rust к примеру).


Паттерн матчинг завезут в C# 7, уже скоро, есть превью https://blogs.msdn.microsoft.com/dotnet/2016/08/24/whats-new-in-csharp-7-0/
>>831745
#212 #831712
>>831205
Спасибо это то что я искал.
>>831872
#213 #831715
>>831158
Даже если посчитать по максимуму то на вряд ли будет больше 100 мегабайт.
#214 #831740
>>831512

>модификаторы доступа ... Постоянно вынужден к каждому члену класса приписывать свой модификатор.


Можешь для приватных полей/методов не прописывать, он и так по умолчанию стоит.

Потом, в c++ удобно это тк там определение метода отдельно прописывается, а в c# все вместе.
Было бы жутко неудобно постоянно проматывать экран, что бы понять область видимости текущего метода.
#215 #831745
>>831695
Хм… Так это будет хорошо смотреться в связке с Tuples.
>>831756
#216 #831756
>>831745
В чем преимущество кортежа перед экземпляром класса?
Минус, который вижу я - читаемость кода хуже. Понять, что там нахуевертил джун, прочитавший про тьюплы - дорогого стоит.
>>831760>>831874
#217 #831760
>>831756
Джун нахуячит в любом случае.
Для этого их сажают на правку багов и код их ревьювят.

А у людей с опытом будет больше возможностей (хотя тюплы >3 это хреновая практика).
>>831804
16 Кб, 796x270
#218 #831762
Шах и мат, дотнетобляди.
>>831780
#219 #831780
>>831762
Что это значит, поясни?
>>831794
#220 #831794
>>831780
Это значит что ты пидор, хаха расширение файлов результатов тестов совпало с расширением исходников 1с: Кровавый энтерпрайз
#221 #831804
>>831760
А при чем тут джуны вообще ? Не отвергать же все инновации только из-за того, что «раньше было лучше».
>>831853
#222 #831853
>>831804
Тому що причин использовать ТЬЮПЛ немного и делать это джуну точно причин нет.
Но он об этом не знает, находит инструмент, подходящий под его задачу и бездумно использует его. А что с кодом будет потом - его не волнует.
>>831860>>831882
#223 #831860
>>831853
Лел, уже вижу как мам, смотри, я без классов пишу!.
Хотя dynamic сделали, вроде его бездумно не пихают хотя иногда проскакивает, но там терминальный случай, может и тут нормально будет.
>>831894
#224 #831872
#225 #831874
>>831756
Ну кортеж - это ж просто набор объектов.
А класс - это ещё и поведение.
Элементарно, ватсон ёпта
#226 #831882
>>831853
Если инструмент подходит под задачу, то это уже априори не бездумное использование. Но я согласен, что сначала желательно все взвесить.
>>832129
#227 #831894
>>831860
Так и есть. Один такой написал огромный класс с кучей статик методов, которые возвращали кортежи. То есть представления об ООП в хоть немного сложном реальном проекте куда-то деваются и начинает лезть говнокод.
Ну ничего, уволился и пошел куда-то архитектором.
Кстати, отстал от жизни - не знал про dinamyc. Главное, теперь не проболтаться о нем джунам.
#228 #831990
Пользуюсь 2015 студией + решарпер. В решарпере стоит Visual Studio Keyboard Scheme. После каждого перезапуска студии отваливаются горячие клавиши (например Ctrl+Alt+/). Приходится залазить в настройки решарпера и заново нажимать "Apply Scheme" (радиобуттон в положении Visual Studio Keyboard Scheme).
Сталкивался кто с таким?
Можно как-то исправить это?
>>831995>>832218
wpf+materialDesign #229 #831992
йо шарпачи. есть проект, накидать 3 формы: список контактов, страница пользователя, и страница чатика.
ну и соответственно переход между этими страницами.
требуется реализовать это на wpf, в стиле MaterialDesign.
Сколько берут за выполнение задачи такой?
>>831993
#230 #831993
>>831992

Сделаю за 5000$
>>832001
#231 #831995
>>831990

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

Алсо есть вопрос ко всем. GetHashCode должен выдавать уникальные значения или нет? Я правильно понял что он нужен только для оптимизации, т.е. некоторые агрегаты при сравнении могут сначала запросить хешкод что бы отбросить из рассмотрения объекты с разными кодами, но при установлений эквивалентности все равно последнее слово за вызовом Equal?
>>832218
#232 #832001
>>831993
откуда расценки, маня?
>>832003
#233 #832003
>>832001

Взял средние исходя из твоего ТЗ. Если брать максимум, то ваттсап или телеграм можно подогнать под категорию "чатика".
>>832011
#234 #832011
>>832003
ну врядли ребята согласятся если я им такую цену озвучу=)
>>832128
#235 #832045
static ulong Fibonacci(int number)
{
if (number == 1) { return 1; }
if (number == 2) { return 1; }

return Fibonacci(number - 1) + Fibonacci(number - 2);
}

Глохнет уже на попытке определить 45ю позицию я ряду. Как это можно оптимизировать улучшить?
>>832069>>832109
Работа. Dot NET #236 #832046
Ребят, можете что-то сказать о конторе по сопровождению 1С Гэндальф (Ростов) ? Вроде бы берут студентов со знанием C#.
>>832126>>832552
#237 #832069
>>832045

// Хвостовая рекурсия
public static ulong FibR(uint n)
=> n > 1 ? FibR(n - 1) + Fib(n - 2) : n;

// Арифметика
public static ulong Fib(uint n)
{
ulong[] f = new ulong[3];
f[1] = 1;
for (int i = 2; i <= n; i++)
f[i % 3] = f[(i + 1) % 3] + f[(i + 2) % 3];
return f[n % 3];
}

Второй способ существенно быстрее.
#238 #832109
>>832045
Посмотри на хабре статью по вычислению чисел Фибоначчи, там все подводные камни расписаны.
#239 #832126
>>832046

>1С Гэндальф


проиграл
#240 #832128
>>832011
а что за чат внутри?
Мне кажется - именно чат самая большая проблема, а не переходы по страничкам.
>>832591
#241 #832129
>>831882
я могу забивать гвозди своей сракой, но вроде это неправильно, не?
>>832447
#242 #832218
>>831995
где ты видишь стремление к оптимизации в сравнении двух величин вместо одной, дятел?

>>831990
аналогичная фигня. причем бывает (бывало), что настроенные горячие клавиши на разных установленных версиях студии не оч совмещаются друг с другом (работают то в одной версии, то в другой, но не в обеих сразу)
такшто бамп вопросу
>>832592
#243 #832347
Есть тут угоревшие по drag'n'drop'у? В общем я пытался написать небольшое окошко на которое можно перетягивать картинки из firefox, и похоже обосрался (в прочем тут ничего нового). Вместо оригинала FF создает ебаный в сраку bmp файл. И такое поведение наблюдается в других программах, например explorer++, paint.net. Но почему тогда перетаскивание нормально работает из ff в explorer?

Алсо вызов GetData("FileContents") возвращает null. Не знаю может быть так и должно быть. Было бы заебись если б в нем было содержимое файла, но похоже не судьба.

Еще какая хохма - GetData("Format17") возвращает null, но если перед ним разместить вызов GetFormats() - то уже не null. Хвала скрытому стейту.

Можно было бы вычленять ссылку на файл и скачивать его самому, но меня это не устраивает.

В общем разработчики FF - пидорасы.
#244 #832447
>>832129
Ну может у тебя особенная срака. Почему бы и нет тогда)
>>832656
#245 #832507
Где качнуть portable SharpDeveloper?
42 Кб, 500x281
#246 #832552
#247 #832591
>>832128
не, конкретно в ту задачу что я описал, разработка чатика не входит. просто страница с чатиком. типа реализация макета, с минимум функционала
>>832726
#248 #832592
>>832218
такая же хуйня с хоткеями была. само как то прошло=)
62 Кб, 800x250
#249 #832644
>>824683 (OP)
Антон, посоветуй хорошую русскоязычную книгу по MSBuild. Молю.
>>832652>>833372
#250 #832652
>>832644
пхех
>>832657
#251 #832656
>>832447
да ладно, анон.
Ты же понял о чем я.

а срака такая, да
#252 #832657
>>832652
Ну англоязычную хоть
#253 #832726
>>832591
так если там 3 страницы, навигация и дизайн, то это немного ж.
ну там 300-500
>>832759
#254 #832759
>>832726
лолшто? я надеюсь это не в рублях?
>>832817
#255 #832817
>>832759
а баксах же.
#256 #832982
У нас на работе есть ЙОБА класс в котором есть генерик метод, в который если вместо генерика поставить название интерфейса который реализует класс, то тебе через рефлексию создается объект этого класса перебирая какой-то список названий классов.
Это патерн какой-то?
>>833059>>833387
#257 #833059
>>832982

> вместо генерика поставить название интерфейса который реализует класс


ты всем так объясняешь, что ни хрена не понятно?
типа так:
public static T Get<T>(string interfaceName = null)
{
if (interfaceName != null)
{
return (T) Activator.CreateInstance(ListOfClasses.FindType(interfaceName))?
}
...
}
>>833127
#258 #833127
>>833059
Ну ты же примерно понял
Да, там есть какой-то класс активатор
>>833151
#259 #833151
>>833127
судя по всему, это какая-то ущербная версия Service Locator, хотя, может, в вашем случае, она довольно-таки имеет смысл
>>833251
203 Кб, 1024x768
#260 #833155
>>831487
Жизнь налаживается.
Итак, чтобы снова стать хозяином программы, идём в App.xaml и стираем StartupUri="MainForm.xaml" чтобы само без спросу не грузилось.
Далее в App.xaml.cs создаём обработчик события protected override void OnStartup(StartupEventArgs e) в котором и указываем программе как ей себя вести.

Как это сделано у Джона Смита https://msdn.microsoft.com/ru-ru/magazine/dd419663.aspx

И оказывается класс Application из WPF > Application из WinForms. Поэтому и не понял по началу как найти место старта программы.
23 Кб, 836x364
1836 Кб, 1365x767
#261 #833209
Чтобы попрактиковаться на с#, пилю софтину для удаления неуникальных вебмок и картиночек.
Файлы сортируются по размеру, затем, если у соседних файлов одинаковый размер, сравниваются первые 10 байтов и, если они одинаковые, один из файлов удаляется. Но идентичные, сука, массивы никак не могут пройти сраный иф. Что делать?
>>833211>>833219
#262 #833211
>>833209
ты сравниваешь массивы через ==? ты поехал штоли?
>>833218
#263 #833218
>>833211
Ага, спасибо, решил через SequenceEqual.
>>833230
#264 #833219
>>833209
А хуйни linq
if(bytes1.SequenceEqual(bytes2))
>>833230
#265 #833230
>>833218
>>833219
Говорят это ебически медленно, можно с винапи
http://stackoverflow.com/a/1445405/1250699
#266 #833233
>>833230
http://rgho.st/6BMdZF4YD
Вот что получилось. Работает вроде нормально. Из 1500 вебмок секунд за 15 отсеяло 93 повторяющихся.
>>833235
#267 #833235
>>833230

> 2016


> coreclr


> winapi



>>833233
Про MD5 слыхал?
>>833237
#268 #833237
>>833235

>Про MD5 слыхал?


Краем уха на лекциях.
Ты предлагаешь удалять файлы с одинаковым хешем?
>>833245
#269 #833245
>>833237

>Ты предлагаешь удалять файлы с одинаковым хешем?


Это хоть как-то выглядит по научному.
В отличие от сравнения 10 байт, при том что первые 4 всегда константы.
#270 #833251
>>833151
Ну если так создается довольно простой класс, то почему нет?
я так окна в впф создаю, например
>>833262
#271 #833262
>>833251
тут есть несколько "но". ну, наконец, что мешает использовать new()-constraint в методе?
#272 #833282
>>833230
Это фича: код должен быть индустриальным.
#273 #833372
>>832644
Антон, ну хотя-бы руководство брось по этому... делу.
>>833377
#274 #833377
>>833372
https://msdn.microsoft.com/en-us/library/dd393574.aspx
Просто нажимаешь в студии F5.
#275 #833387
>>832982
А при работе с бд вы что используете?
>>834095
Реверс-инжиниринг .net #276 #833392
Здравствуйте, антуаны!
Я новичек в .net, в данный момент изучаю c# всеми возможными способами, в том числе декомпилирую и смотрю код различного софта.
Столкнулся с тем, что полученный код при вставке в студию выдает определенное количество синтаксических ошибок.

И назрел у меня один вопрос. А могут ли во время декомпиляции в коде образовываться ошибки (сам файл не обфусцирован)? Или это я просто не добавил в проект какие-то ссылки?
>>833393
#277 #833393
>>833392
код открывал в ILSpy
>>833396
#278 #833396
>>833393
синтаксические ошибки - это некорректно расставленные скобки блока/условия оператора/метода, некорректно поставленные знаки препинания, студия также ругается, когда при записи строки в стринг исползуют энтер не закончив строку (имею ввиду что то типа
string x = "dadadadadadadada

dadassss";
)
а если бы нехватало каких либо библиотек (что наиболее вероятно, учитывая, что неймспейсы кажись не присутствуют в декомпилированном приложении, а ты просто вставляешь голый код в ИДЕ), то ИДЕ указывала бы ошибку типа cannot find namespace xxx/ cannot resolve xxx и т.д.
>>833397>>833403
#279 #833397
>>833396
ну и алсо в синтаксические ошибки можно занести неправильное использование ключевых слов типа if while new int x = 5-6; и всё такое
#280 #833403
>>833396
Ну в общем-то да, все так и есть.
Все ошибки, связанные с подключением чего-либо, я исправил добавлением в проект соответствующих ссылок.
Остались ошибки вида:
-Синтаксические
-"метод имеет несколько недопустимых аргументов"
-"преобразование int в byte невозможно"
-"обнаружен недостижимый код"
- и т.п

Вот я и гадаю, откуда все это?
Ведь тут даже декомпиляции нет как таковой, фактически просто открытие .net .exe файла.
>>834542
#281 #833407
ну хуй знамо тогда, что у тебя с синтаксическими ошибками. никогда не вставлял код из ILSpy в студию, но в целом, когда открывал, не видел каких то проблем хотя и не искал.
насчёт "обнаружен недостижимый код" - ну, в ILSpy такое и не будет подсвечиваться, да и ошибкой, влияющей на корректность работы программы, не является. недостижимый код может быть написан либо индусским программистом, либо, насколько я знаю, обфускаторы могут добавлять недостижимые иф-блоки наряду с заменой имён переменных, чтобы запутать хацкера, пиздящего исходный код коммерческого ПО.

насчёт "преобразование int в byte невозможно", ты уверен, что в этом месте рабочий код, а не мусор, напиханный обфускатором для отвода глаз?
>>833442
#282 #833423
Аргументы в функцию передаются по ссылке или по значению? Если я создам массив arr = [1,2,3] и передам его в функцию, внутри которой в массив добавится элемент 4, будет ли он добавлен в массив снаружи функции?
#283 #833427
>>833423
По значению. Будет.
>>833432>>833436
#284 #833432
>>833427
Но почему он тогда добавляется в массив снаружи, если внутрь в функцию передается только значение, которому и прибавляется новый элемент?
#285 #833434
>>833423
передастся сам объект.
Если в функции тебе нужна копия - то нужно создать новый массив.
#286 #833436
>>833427
пиздец тут сидят люди.
По значению передаются только Value-типы.
>>833521
#287 #833437
>>833423
каким образом добавится? через arr = new AzazaType[4]? тогда нет, если ты не используешь ref/out параметры. если ты имеешь дело с List/Collection/etc... и используешь Add(new()), то добавится, конечно
#288 #833442
>>833407
Хорошая информация для размышления, спасибо.
Только что для интереса декомпилил и запустил на студии программку Expresso. После удаления ссылок на картинке все (о чудо!) запустилось.
Значит, такая декомпиляция в принципе возможна, и все дело в рассматриваемом мной софте.
Насчет обфускации - хз, посмотрим. Обычно ее сразу видно на глаз, а тут я такого не заметил.
#289 #833521
>>833436
Ты передаешь ссылку на массив и она передается по значению.
>>833537
#290 #833537
>>833521
бляяя.
но массив-то передался по ссылке, маня.
>>833545
#291 #833545
>>833537
Передается ссылка, а не массив.
>>834096
#292 #833583
Пацаны, что скажить за https://www.ozon.ru/context/detail/id/7246392/
>>833593
#293 #833593
>>833583
N тредов назад тут был крендель, брызгающий слюной по поводу суперовости и уберклассности этого высера. вероятно, он снова появится тут и будет расхваливать это говно, но я бы советовал тебе прочесть более адекватные источники
>>833609
#294 #833609
>>833593
Буду тебе благодарен за литературу на русском
>>833619
#295 #833619
>>833609
Троелсен
Албахари
Шилдт
Рихтер
>>835813
#296 #834070
Что скажет анон за .NET Core и сопутствующий ASP.NET? Реально за этими платформами будущее или хуйня и не стоит учить?
>>834169>>834301
#297 #834095
>>833387
Проект древний, есть свои классы для выполнение всех базовых операций через ADO.NET(создание конекшона, выборки, вставки, транзакции и т. д.)
#298 #834096
>>833545
В таком случае говорят что передается по ссылке чтобы не сбивать с толку.
>>834192
#299 #834097
Нормально ли использовать такие конструкции:

>List<List<int>>


Или это считается говнокодом?
>>834169
#300 #834169
>>834070
имхо, ~Cores будут достаточно весомы на рынке .NET. если доведут до ума наконец

>>834097
если ты задаешь такой вопрос тут, значит это говнокод. но есть и свои исключения
#301 #834192
>>834096
И потом не объяснить, что такое ref array.
>>834294
#302 #834294
>>834192
ССЫЛКА НА ССЫЛКУ
#303 #834301
>>834070
А там есть какие-то отличая?
#304 #834542
>>833403

>-"метод имеет несколько недопустимых аргументов"


>-"преобразование int в byte невозможно"


Не те библиотеки или их версии скорее всего подключил.
#305 #835339
>>824869
АААХАХААААХААХАХААААХААХААХАХААХАХАХАХААХАхАХААХАХАХАХААахаахахааааахахахахахахахаааАХАХааааахахахахаххааххааАХАХАааааАХАХАААахахахаа

спасибо)
#306 #835345
>>831547
если на один раз, можно сделать обычный SFX архив в винраре или любом другом архиваторе

если хочется поддержка встроенных обновлений с минимально работой, ClickOnce

если хочется обеспечить дополнительные проверки на целостность бинарников, если хочется каких нибудь нестандартных пресетов развертывания конфигурации и других специфичных вещей, можно сделать кастомное решение, например, с помощью WiX toolset, или вообще как кастомный виндовый проект
#307 #835373
>>824683 (OP)
Вечер в хату, боги кодинга! Кто из вас сможет взломать бота: http://travibot.com/ru/
>>835389
#308 #835389
>>835373
зачем?
>>835398
#309 #835398
>>835389
Тебя как кодера должен интересовать вопрос КАК. Или только в хеллоуворды можешь?
>>835403>>835405
#310 #835403
>>835398
могу в хеллоуворды. Тебе сколько надо?
#311 #835405
>>835398
меня как кодера интересует вопрос: сколько платишь?
>>835412
#312 #835412
>>835405
С меня лучи добра, анон :3
>>835414>>835419
#313 #835414
#314 #835419
>>835412
ну так бы и сказал, хули. берешь, значит, ollydbg, запускаешь в нём свою тулзу (.ехе). последовательно выполняешь все шаги до того момента, когда возникнет проблема с лицензией. ищешь байт(ы), который нужно подправить, чтобы продолжить (либо убрать байты). сохраняешь "пропатченный" .ехе. всё.
>>835430
45 Кб, 500x407
#315 #835430
>>835419
Это слишком сложно для меня. Для меня твоя инструкция это шаманство. Сделай это и выложи пропатченный .exe. С меня лучи добра.
#316 #835450
Хлопци, расскажите мне следующее: если обфусцировать код, будет ли работать та его часть, где задействована рефлексия? В частности, в одном участке кода я с помощью рефлексии ищу конструктор неизвестного типа, потом смотрю на названия и тип параметров конструктора. Дак вот, если я обфусцирую код, с большой вероятностью изменятся и имена переменным параметров конструктора, следовательно, рефлексия "не будет работать", я правильно размышляю?

алсо, что вообще скажете про рефлексию - когда её лучше использовать и стоит ли, или её используют в исключительных случаях и в целом её использование нужно избегать?
>>835577
8 Кб, 773x481
#317 #835460
Братаны, в шапке треда ссылки на курсы всяких курсер и т.д., я уверен, что ты, анон, знаешь годные каналы на ютубе по обучению C#. Подкинь ссылок, анончик. :3
>>835465>>835814
#318 #835465
>>835460
Забыл добавить, что неважно на русском или на английском. Я буду рад любому подобному каналу, который проверен тобой, анон.
sage #319 #835577
>>835450

>её использование нужно избегать?



Прежде, чем изучать языки программирования, изучи русский язык.
>>836814>>836849
#320 #835605
>>825191
Хули ты вообще делаешь проект на формах не зная основ?
#321 #835813
>>833619
Если есть Троэлсон то Шилдт не нужен
#322 #835814
>>835460
Гугли курсы ITVD. Все что тебе нужно есть на торрентах
17 Кб, 302x302
#323 #836010
посоветуйте годных книг по сетевому программированию на C# плиз
>>836059
#325 #836105
Подскажите, чем Assembly в .NET отличается от обычной подключаемой библиотеки DLL, создаваемой компилятором в C++?
#326 #836110
>>836105
бамп вопроса
#327 #836111
#328 #836112
>>836105
Тем же, чем и нативный ехе отличается от дотнетовского.
>>836115
#329 #836115
>>836112
можно подробнее, пожалуйста
#330 #836135
Анон, посоветуй архитектурное решение.

У меня в ASP.NET сайте (но это не важно) есть вьюмодель (vm) и модель (m). Нужно маппить вьюмодель в модель.
Часть атрибутов мапится всегда:
m.Attr1 = vm.Attr1
m.Attr2 = vm.Attr2
m.Attr3 = vm.Attr3

Но остальные атрибуты нужно маппить не всегда по условию.

Сейчас решил в лоб, завёл на каждый такой атрибут по флагу:

if (vm.MapAttr1)
m.Attr1 = vm.Attr1

if (vm.MapAttr2)
m.Attr2 = vm.Attr2

if (vm.MapAttr3)
m.Attr3 = vm.Attr3

Может есть какое-то более изящное решение? Желательно без рефлексии.
>>836138
#331 #836138
>>836135
AutoMapper посмотри, там вроде есть условные маппинги.

>Желательно без рефлексии.

>>836141
#332 #836141
>>836138
@
Хехе, нет. Один маппер был без рефлексии, но он вроде не развивается давно.
#333 #836185
>>836059
спасибо бро, добра тебе
128 Кб, 340x340
#334 #836253
Юнит-тесты в блядском Ксамарине

Аноны, как правильно настроить проекты для юнит-тестирования приложения? Есть проект, состоящий из трёх "подпроектов" MyApp (shared code, MVVM), MyApp.iOS и MyApp.Android.
По идее, чтобы всё это дело можно было протестировать, нужно создавать отдельные тестовые подпроекты это ж надо было такую хуйню сделать, а?. Типа так: MyApp.Test, MyApp.iOS.Test и MyApp.Android.Test.

Только что-то не работает нихрена. Постоянно разные ошибки, код из shared-части не находится, или не инициализируются сервисы. Версии NUnita нужны разные у разных подпроектов (NUnit, NUnit Lite и NUnit Xamarin Runner), тоже не совмещаются вместе..

Есть тут кто-то, кто смог сконфигурировать всю эту хуиту вместе? Или хотя бы, есть какой-нибудь пример? На гитхабе пусто. Есть только две куцые статьи, которые не сильно помогают
https://developer.xamarin.com/guides/ios/deployment,_testing,_and_metrics/touch.unit/
https://github.com/nunit/nunit.xamarin

Ненавижу это говно
>>836322
#335 #836322
>>836253
А мне норм.
Бизнес логику в shared-project покрыл юнит-тестами (сейчас там работает последний nunit).
Для интеграционных тестов у меня UITests.
>>836341
#336 #836341
>>836322
Сорри, я думал это у меня в Android треде пост не пропечатался :)
44 Кб, 333x333
#337 #836477
>>824683 (OP)
Друзья, помогите. Пилю первый учебный проект. Он разбит на три уровня:уровень доступа к данным, бизнес-логика и уровень представления на asp.net mvc. Итак у нас есть пользователи, которые могут подписываться на других пользователей как в твиттере и инстаграме. Очевидно, что пользователь не должен подписываться сам на себя. Где мне оставить это ограничение? В бизнес логике при такой попытке выбрасывать исключение, в конроллере, или в представлении просто не показать кнопку "подписаться" на своей странице?
>>836478
#338 #836478
>>836477
В бл и на вьюхе
>>836480
#339 #836480
>>836478
спасибо
>>836481
#340 #836481
>>836480
И да, казалось бы, что для своей страницы должен быть другой шаблон, с настройками, моими же подписками и без кнопки "подписаться" в частности. Тогда бы у тебя даже вопроса не возникло.
#341 #836765
Как обстоят дела с инструментами тестирования в asp.net Core?
#342 #836814
>>835577
Я хохол, не обязан знать руснявый язык.
Он в моей стране не государственный.
>>836834>>836849
#343 #836834
>>836814
Зато руснявый - официальный язык борды. Не знаешь - съеби на учан.
>>836836
#344 #836836
>>836834
Нигде не написано об этом официально
Тоже самое что утверждать что C++ официальный язык борды.
>>836980
#345 #836849
>>835577
толсто, лол

А ты >>836814 ещё и повелся
>>836863
#346 #836863
>>836849
Но толстил же я, а не он.
>>836880
#347 #836880
>>836863
Короче, в итоге мы имеем толстоту х2.
#348 #836980
>>836836

>Тоже самое что утверждать что C++ официальный язык борды.


Но так и есть, лол.
4 Кб, 338x162
11 Кб, 389x163
#349 #836984
Котаны!
Пытаюсь создать таблицу в базе данных mysql через студию (пик 1), но выскакивает ошибка (пик 2).
Как можно исправить?
#350 #837120
>>836984
как минимум можно использовать CodeFirst или сделать табл в самой базе
>>837878
#351 #837433
>>824683 (OP)
А есть ли бесплатные хостинги для погонять asp .net mvc?
#352 #837541
>>837433
localhost
#353 #837546
>>837433
Microsoft Azure - первый месяц бесплатно
>>837654
#354 #837654
>>837546
Dev Essentials год бесплатно
#355 #837878
>>837120

>как минимум можно использовать CodeFirst или сделать табл в самой базе


Ну тоже верно

>>836984
Анончики, проверьте у себя. У вас тоже ошибка выскакивает? Может кто сталкивался?
#356 #837881
>>836984
чистатеретически, попробуй проверь, может быть, отключена какая-нибудь служба май скуля?
#357 #838072
Поясните мне за вот за какую хуйню, вот сел я читать Албахари к примеру (да у меня есть профильное образование и я понимаю о чём речь, грубо говоря вспоминаю давно забытое). Ладно, первое время были задачи уровня hello world но их там слегка рефакторили, разбирали вот это всё. Спустя совершенно короткое время это превратилось в:
кококо
.....
кудах
тах
тах
.....
и так через каждый абзац это примеры сферических коней в вакууме не говоря про их излюбленные шутки писать на ~30 странице сноску и мол в 25 главе это разбирается. Да я забуду к 25 главе что вообще блядь такая сноска была.
В изучении в таком виде нет никакого смысла, первый день я еще что-то писал в студии но следующие я просто лежу на диване и читаю потому что писать нечего, это рассказ ебучий. ???????????
#358 #838119
Приветствую, полубоги!

Сделал своё второе уже приложение на этом чудесно-эльфийском наречии. Однако, возникла проблема. Если первую однооконную быдлообработку я просто забирал из папки release, то со второй, которая писана с использованием EF CodeFirst я таким же макаром запустить не могу. Немного покопался в детских воспоминаниях о VS2008 UltraHardCoreEditionCrackedWithActivaziya сообразил, что нужен какой-то сборщик установщика. А ИНСТАЛЛШЫЛД-то оказывается платный! и для VS2015 community не подходит. Так вот, вопрос, а чем вообще можно собирать без лишнего красноглазия и консолек, ну и чтобы туда всякие компоненты типа sqllocaldb можно было запиливать в режиме некст-некст-некст-ок?
>>838266
#359 #838266
>>838119
можно, вот тебе ссылка, ты парень способный, должно быть, разберешься http://wixtoolset.org/
>>838799
#360 #838288
Есть прога по обработке больших данных. На моем компе она работает быстро (1 час), а на другой машине - медленно (за 12 часов так и не отработала). Хотя вторая машина мощнее. В чем может быть причина? прога никаких сторонних либ не юзает
#361 #838293
>>838288
dxdiag обоих компов покажи нам.
>>838300
#363 #838362
Шарпач, как привязать значения списка из комбобокса к выполнению определенного куска кода. Понятно, что по нажатию кнопки мы передаем значение из текстбокса и комбобокса, но если с первым ясно, то как решается с элементами спика комбобокса?
>>838367>>838371
#364 #838367
>>838362
Поправлюсь, ибо мне кажется что будет проще вбить через
<ComboBoxItem Name="Item_name">
<StackPanel Orientation="Horizontal">
<TextBlock>Ярдов</TextBlock>
</StackPanel>
</ComboBoxItem>
И по этому Item_name уже передавать дальше.
#365 #838371
>>838362
ероха, у комбобокса есть событие на изменение SelectedItem, в обработчике уже делаешь, что хочешь. Если ты труЪ MVVM парень, то через interactions привязываешь команду из вьюмодели, в качестве параметра как раз прилетит твой SelectedItem. Или во вьюмодели делаешь SelectedItem биндишь его на selectedItem своего комбобокса и по OnPropertyChanged в сеттере делаешь вызов своего кода
#366 #838545
>>826320
На уровне IL у байта вообще арифметики нет, i++ выльется в int tmp = i; tmp = tmp +1; i = (byte) tmp
А арифметики у байта нету потому что эффективнее с интами на процессоре работать было. В шарпе для похожести с джавой по сему поводу решили все приводить к инту (в том же vb.net приведения нет, но генерится в итоге код с кастами)
#367 #838783
Как можно скрафтить аналог List, не применяя никаких динамических структур?
>>838786
#368 #838784
>>838288
Бамп
#369 #838786
>>838783
делаешь класс/структуру, внутри которого массив определённой длины (например, по умолчанию 2. можешь перегрузить конструктор с первоначальной длиной массива). потом, по мере заполнения массива, создаешь новый в 2 раза больше (или больше на какую то константу), копируешь всё из предыдущего массива все объекты в новый массив. в классе для массива делаешь индексатор. добавляешь IEnumerator по вкусу
>>838792
#370 #838792
>>838786
Понятно, благодарю.
>>838806
#371 #838799
>>838266
Спасибо, видел этот продукт в поисковых выдачах, более-менее понял в чем смысл. Однако в ходе освоения еще один вопрос больно ударил по яйцам. Разрабатывал с использованием SQL Server 2016 LocalDB, а что клиенту в сборку включать на голую Windows 10? Весь этот стапитсотмегабайтный пакет или есть какие-то компакт-варианты? Что-то я яндексу вопрос неправильно формулирую, ибо не нашел.
>>838805
#372 #838804
>>837433
Если что интересно и на asp.net Core, то пиши, могу у себя на впс закинуть, там как раз асп и нода крутятся
#373 #838805
>>838799
SQLite не?
#374 #838806
>>838792
в любом случае у тебя массив будет динамисеский
>>838808
#375 #838808
>>838806

>создаешь новый


>динамический

#376 #838933
>>824683 (OP)
Failed to create prime the NuGet cache. restore failed with: 1
Telemetry is: Disabled
log : Restoring packages for /home/sparin/.vscode/extensions/ms-vscode.csharp-1.4.1/coreclr-debug/project.json...
error: Unable to load the service index for source https://api.nuget.org/v3/index.json.
error: Unable to obtain lock file access on '/tmp/NuGetScratch/lock/0fe55cca3e8a8fb7b26a7002bf1dc05f2d5faf41' for operations on '/tmp/NuGet/TempCache/ff77a80e-987b-4406-9956-ac4260dcb8ec/n50dr154.rqm'. This may mean that a different user or administator is holding this lock and that this process does not have permission to access it. If no other process is currently performing an operation on this file it may mean that an earlier NuGet process crashed and left an inaccessible lock file, in this case removing the file '/tmp/NuGetScratch/lock/0fe55cca3e8a8fb7b26a7002bf1dc05f2d5faf41' will allow NuGet to continue.
dotnet exited with error code 1

Пишу rm /tmp/NuGetScratch/lock/0fe55cca3e8a8fb7b26a7002bf1dc05f2d5faf41, а мне в ответ rm: невозможно удалить «/tmp/NuGetScratch/lock/0fe55cca3e8a8fb7b26a7002bf1dc05f2d5faf41»: Нет такого файла или каталога. Открываю nautilus, а его все равно нет.
Короче, я не понял как навернуть дебагер на Visual Stuidio Code. Что я делаю не так?
#377 #839032
Насколько справедливо мнение, что лучше не писать код на .net языках, связанный с информационной безопасностью в контексте обмена информацией по сети, особенно клиентскую часть, ведь приложения .net вскрываются рефлекторами на раз два, и можно узнать, как работают все алгоритмы шифрования?
#378 #839055
>>839032
если вкратце, то нет
а вообще непонятно, что делают в одном предложении рефлектор, передача данных и работа алгоритмов шифрования (известная в 2016м любому дворнику васе благодаря интернетам и педивикиям)
>>839056
#379 #839056
>>839055
нет - значит несправедливо
#380 #839057
>>839032

Если тебе нужно скрыть алгоритм шифрования, значит ты уже делаешь что-то не так.
10 Кб, 136x248
#381 #839200
Как написать regexp, чтобы она выдавала найденные теги с любым количеством символов после них?
Возможно, проще пример привести:
Исходник:
newRecord любой текст /r/n(любое количество строк) wundkcn newRecord любой текст93487dfjvndknfvkn !Ъ\.

Должно найти:
newRecord любой текст /r/n(любое количество строк) wundkcn
newRecord любой текст93487dfjvndknfvkn !Ъ\
.

Проблема в том, что если напишу regexp вот так @«newRecord [\s\S]*» парсер не видит когда остановиться и выдаёт всю исходную строку целиком.
#382 #839282
>>839200
newRecord любойТекст \r\n || newRecord любойТекст !Ъ\.
>>839329
128 Кб, 900x900
#383 #839323
>>839200
НИКОГДА, СЛЫШИШЬ, ПИДР, НИКОГДА НЕ ПАРСИ ТЕКСТ С ПОМОЩЬЮ РЕГЭКСПОВ.
>>839329
27 Кб, 600x600
#384 #839329
>>839200
Итак, я выспался и нашёл отет.
string pattern = @"newRecord[\s\S]?(?=newRecord)"; //работает как надо
string pattern = @"newRecord[\s\S]
(?=newRecord)"; // не работает
(да, последнюю newRecord в строке не считает, но этого и не требую)

Но не понятно что даёт вопрос.
В документации https://msdn.microsoft.com/ru-ru/library/az24scfc(v=vs.110).aspx сказано:
Соответствует предыдущему элементу ноль или более раз.
? Соответствует предыдущему элементу ноль или один раз.
Как-бы на первый взгляд,
и должна была бы брать любой текст. Но увы, берёт не останавливаясь.

>>839282
Благодарю за поиск конечного newRecord

>>839323
Ого сколько БОЛИ! Почему ты избегаешь регэкспов?
>>839651>>839852
54 Кб, 600x450
#385 #839356
Погромисты, работающие с виндовым магазином, поясните, сколько стоит подписка, аккаунт разработчика, и что вообще нужно, чтобы выложить свое платное приложение.
И в чем разница VS Community и платной версии, я на комьюнити же смогу писать платные приложухи и выкладывать их в магазин?
>>839357
#386 #839357
>>839356

> подписка


Какая?

> аккаунт разработчика


600р.

> что вообще нужно, чтобы выложить свое платное приложение


Само приложение и заполнение простенькой налоговой декларации.

> на комьюнити же смогу писать платные приложухи и выкладывать их в магазин?


Да.
>>839376
#387 #839376
>>839357
600 рублей один раз заплатил и можно выкладывать всю жизнь сколько угодно приложений? И без разницы, какая прибыль?
Налоговая декларация США чтобы им уплачивать налоги? Никаких подводных камней?
Так зачем все-таки существует платная версия, если на бесплатной можно писать те же приложения?
>>839396
#388 #839396
>>839376

> 600 рублей один раз заплатил и можно выкладывать всю жизнь сколько угодно приложений? И без разницы, какая прибыль?


Йеп.

> Налоговая декларация США чтобы им уплачивать налоги?


Для нас не СШАшная, а сильно упрощенная.

> Никаких подводных камней?


Вроде как.

> Так зачем все-таки существует платная версия


Для ентерпрайза.
>>839403
#389 #839403
>>839396
Спасибо.

>Для нас не СШАшная, а сильно упрощенная.


Для кого нас? Там для каждой страны своя декларация, например, для беларашки, или имеется ввиду все кто не в США?
>>839405
#390 #839405
>>839403

> или имеется ввиду все кто не в США?


Зис.
#391 #839460
>>838288
две машины - два разных доступа к вычислительным ресурсам. правильней всего было бы оценить работу алгоритма на всех шагах выполнения на обеих машинах и посмотреть все, что происходит в округе. также учитывать I/O операции и возможности каждого из хардов. какой-нибудь болеет профайлер тебе в помощь
>>839635
#392 #839528
Есть фри аналог DevExpress?
>>839687
#393 #839635
>>839460
Проблему уже определили, так что
this

>I/O операции


Сервер, как оказалось, есть виртуалка, и у него нет физического харда. Потому он и тупит.
#394 #839651
>>839329
Регэкспы не предназначены для парсинга. Ты закладываешь бомбу замедленного действия в свой код.
>>839666
#395 #839666
>>839651
А для чего они предназначены?
>>839686
#396 #839684
Я только сейчас понял, что меня в шараге недавно учили оператору goto. Ебаный стыд.
>>839689
#397 #839686
>>839666
Для поиска соответствий, что не есть парсинг.
#398 #839687
>>839528
синкфьюжн имеет комьюнити лисенз, по сути бесплатная хуйня
>>840045
#399 #839689
>>839684
В этом операторе нет ничего плохого, если ты понимаешь как им пользоваться. C# - компилятор, например, владеет им в совершенстве.
#400 #839723
В чём разница между int[][] и int[,]? Это же всё двухмерные массивы, да?
>>839726
#401 #839726
>>839723
int[][] - это jagged array.
>>839728
#402 #839728
>>839726
В смысле там внутрениие массивы могут быть не одинаковыми по длинне?
>>839732
#403 #839732
>>839728
Да, каждое измерение [] - вещь в себе. Вообще гугли msdn-документацию, там про такие массивы подробно расписано.
>>839733
#404 #839733
>>839732
Понял, спасибо.
#405 #839744
>>839032

>код на .net языках


Код на этих языках - де-факто open-source. Тебя не спасёт даже самый навороченный обфускатор потому что он элементарно снимается утилитой с github, код можно декомпилировать и подменить на любой другой.

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


От этого нельзя защититься ни на каком языке программирования. C/C++ просто сильно замедлят процесс взлома, но никак не предотвратят его.
#406 #839852
>>839329
Да нет, сударь. Просто про кванторы либо хуево читал, либо не читал. Логично тебя послать изучать конструкции по группировке и условным кванторам. В общем, мы тебя должны были ткнуть в ссылку ниже

https://msdn.microsoft.com/ru-ru/library/az24scfc(v=vs.110).aspx
143 Кб, 1920x1080
#407 #839858
https://youtu.be/t8GuveyIV38
Доклад с dot next со смехуечками про особенности double и прочего подобного. Чуток похоже на знаменитый ролик Wat про javascript и ruby, только на полчаса и с ненужным советским квном. Но все равно интересно было посмотреть.
>>839921
#408 #839911
Ребят, помогите новичку, если не сложно. Где можно посмотреть коды несложных программ? Мб какие-то ресурсы есть, просьба не обоссывать сильно
#409 #839921
>>839858
Мне все его доклады доставляют, топовый чел. Алсо у него еще бложик классный, вот одна из последних статей, такая ведь даже на миникнигу потянуть может: http://aakinshin.net/en/blog/dotnet/stopwatch/
21 Кб, 1352x323
5 Кб, 649x225
#410 #839923
Котаны, решил попробовать VS Code. Омнишарп поставил, нет кор поставил.
Через консольку нормально комплирует, а через VS Code копротивляется. Пикрелейтед.
Как заставить его нормально компилить?
>>839931
!vYed01wfE2 #411 #839931
>>839923
Так. Как чувак, который месяца 2 назад пытался разобраться с VS Code, и все таки разобрался, могу предположить, что ты неправильно создаешь проект. Т.е. в батник прописываешь то что написано на сайте справа: https://www.microsoft.com/net/core#windows

может ещё ошибка из-за того, что ты пытаешься .нет подогнать под .нет коре.
>>839938
#412 #839932
ой, трип случайно.
4 Кб, 421x108
#413 #839938
>>839931

>в батник прописываешь


Что за батник?

>то что написано на сайте справа: https://www.microsoft.com/net/core#windows


Это я в консольке пишу. И он собирает. А вот по ф5 в VS Code нет.

>может ещё ошибка из-за того, что ты пытаешься .нет подогнать под .нет коре.


Да вроде нет. Пикрелейтед.

Можешь по шагам расписать как настроить?
>>839941
#414 #839941
>>839938

>батник


Это я так под винду делал. Если у тебя Мак, то терминал.

>>839938

>Это я в консольке пишу.


У тебя проект создается?
>>839947
2 Кб, 814x34
#415 #839947
>>839941

>Это я так под винду делал. Если у тебя Мак, то терминал.


Я под виндой.

>У тебя проект создается?


После dotnet new, dotnet restore создаются 3 файлика:
Program.cs project.json project.lock.json
И запускаю по dotnet run.
По ф5 не хочет. Пикрелейтед
#416 #839952
>>839947
dotnet restore
dotnet run
#417 #839958
>>839947
ru.stackoverflow.com/questions/546396/
>>839959
#418 #839959
>>839947
Как видишь, у меня была такая же проблема, но я её пофиксил тем, как написал в ответе тут >>839958 . Дерзай, всё что можно было расписал. Я эту проблему VS CODE долбил несколько суток. Такие дела.
>>839967
15 Кб, 641x238
#419 #839967
>>839959
Изменил значение поля program в файле launch.json (пикрелейтед). По ф5 выдаёт такую же ошибку "build завершено с кодом выхода 1".
Правда при нажатии "принудительная отладка" запускает (не компилирует) старую версию программы. Код был изменён, но dotnet run не выполнен.
>>839998>>840000
#420 #839988
Подскажите как связать таблицы и настроить автозаполнение между ними в c#. Как я понимаю мне нужно, чтобы Id заполнялся случайным уникальным числом и с разных таблиц передавались значения в главную.
В БД связываю вот так: CONSTRAINT [FK_Clients_ToMain] FOREIGN KEY ([ID техники]) REFERENCES [dbo].[Main] ([Id])
и по аналогии 2 других к главной, которая должна заполнятся. Всем IDам присваиваю uniqueidentifier. Что делать дальше не понимаю, заранее спасибо за помощь
>>840262
#421 #839998
>>839967

>"${workspaceRoot}\bin\Debug\netcoreapp1.0\VSCODE_PROSTO.dll"



я без понятия. у меня была такая же ошибка, я её пофиксил тем, что описал на стаковерфлове. ты что-то делаешь не так, скорее всего.
>>840066
#422 #840000
>>839967

>принудительная отладка


и забудь про это
#423 #840045
>>839687
что что?
#424 #840066
>>839998
Пересоздал папки и получилось. Он даже сам прописал путь.

Но вот что напрягает:
Через файл/открыть папку он открывает текущую рабочую папку (одна папка на проект).
И чтобы сменить рабочую нужно лезть в меню. Можно как-то добавить все рабочие папки (все проекты)?
>>840070
#425 #840070
>>840066
хз

у меня на 2 монитора не получается код разбить, пришлось обратно к VS возвращаться.
#426 #840207
Ребят, подскажите какой-нибудь кастомный контрол чтобы сделать карту. Нужна возможность отображения своей карты и элементов поверх неё с возможностью обработки кликов по ним.
>>840234>>840318
#427 #840234
>>840207
Винформс, впф, увп?
>>840235
#428 #840235
>>840234
Winforms
#429 #840262
>>839988
Речь про EF Code First?
#430 #840300
Аноны, а используется ли шарп в бэкэнде, но не с asp.net? Есть фреймворки какие-то типа Django/Flask? Вообще кто-так делает или я ебанулся?
>>840332
#431 #840318
>>840207

подсказал тебе за щеку, проверяй
#432 #840332
>>840300

>а используется ли шарп в бэкэнде, но не с asp.net?


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

>Есть фреймворки какие-то типа Django/Flask?


Это и есть asp.net / webapi, только на других языках. Asp.net / webapi - основа web'а в .net. К ним ты можешь прикрутить любую хрень, типа React, например.
>>841212
#433 #840346
Анон, изучаю ваш язык (совсем нуб) и столкнулся со следующим траблом: прошел урок с инкапсуляцией и придумал себе задачку, сделал класс машина, и внутри него создаю 3 объекта классов корпус, мотор и подвеска. Так вот, в классе корпус есть булевая переменная (закрыты ли двери), в классе мотор есть метод включения мотора, который проверяет закрыты ли двери. В классе машины я создал объект корпуса и мотора, но в класс мотор в методе включения ругается, говорит Машина.Корпус (ссылка на объект корпуса inaccessible due to protection level ) не доступна из-за уровня защиты, хотя, блядь у меня там все по умолчанию или публичное. Гуглил, но там примеры пиздануты и пишут что из-за конструктора, а у меня все конструкторы публичные.
>>840351>>841641
#434 #840351
>>840346

>inaccessible due to protection level


Ну очевидное сообщение об ошибке же.Ты где-то обосрался с доступностью полей, свойств или методов. Перепроверь весь код.
>>840358
#435 #840358
>>840351
Да, ты прав. Сделал, но теперь выдает:
an object reference is required for the nonstatic field
>>840360
#436 #840360
>>840358
это английский, наверное О_о
>>840361>>840393
#437 #840361
>>840360
Думаю что так. Просто ебанина, я понял в чем трабл, я не могу обратиться к переменной корпуса, пока не создастся объект корпуса, а он создается в конструкторе машины и я вот хз как теперь быть.
>>840384
#438 #840384
>>840361
Создать экземпляр машины?
#439 #840385

>я не могу обратиться к переменной корпуса, пока не создастся объект корпуса



Ты где-то нарушил принцип инкапсуляции. Создавай объект "копрус" и пусть уже он инициализирует все свои поля или свойства.
>>840412
#440 #840393
>>840360

>это английский, наверное О_о


Конечно, это он. Без него сразу нахуй из треда. С одним языком будешь всегда иметь языковой барьер в команде.
>>840539
#441 #840412
>>840385
Спасибо, переписал - все заработало!
#442 #840539
>>840393
лол
145 Кб, 1920x1080
#443 #840660
Прошаренный анон, почему сборщик мусора не может уничтожить за один проход объект с деструктором? Продвигать мусор в следующее поколение это ж какая-то балда.
37 Кб, 500x407
sage #444 #840714
>>840660
За какой проход, дибил? Объекты уничтожаются либо в конце scope ( {} ) либо когда ты их уничтожаешь руками. И если не сам, то обычно группами. Вот и всё.
>>840730
#445 #840730
>>840714
еси не знаешь, о чем речь, не забивай людям мозги хуйней

>>840660
в момент очистки определенного поколения далеко не каждый из объектов может быть удален (ты ведь знаешь, на основании чего сборщик принимает решение об удалении объекта?).
ну а почему поколения - как правило считается, что наиболее "свежие" экземпляры менее всего нужны приложению в дальнейшем. ну не даты же фиксировать создания объекта, в самом же деле
>>840731
#446 #840731
>>840730

>ты ведь знаешь, на основании чего сборщик принимает решение об удалении объекта?


нет. на основании того, существуют ли ссылки на этот объект?
мимокрокодил
>>840735
#447 #840735
>>840731
Не только, иначе бы циклические объекты не собирались.
>>840750
#448 #840750
>>840735
ну расскажи тогда, как оно на самом деле.
#449 #840855
Читаю сейчас про делегаты и эвенты и не могу понять, зачем они нужны и когда их стоит использовать.
Ведь не проще ли использовать для каких-то действий обычные методы?
В общем, помогите пожалуйста
>>840888>>840909
#450 #840888
>>840855
Ну вот у тебя файл загрузился асинхронно например, какой метод вызывать будешь?
>>840936
sage #451 #840909
>>840855

Гугли "Наблюдатель (шаблон проектирования)". В кратце - это позволяет разрывать сильную связь между объектами.

К примеру - есть у тебя кнопка.

Если делать без событий, то кнопка привязывается к твоей логике, из-за этого появляется сильная связность.

В коде кнопки ты определяешь момент нажатия на неё:

var isPressed = / magic /

if(isPressed)
{
Make(barrel);
Suck(dick);
}

Обрати внимание, в этом случае кнопка будет знать, что ты хочешь соснуть хуйца и сделать бочку. Чтобы это реализовать, тебе придётся наследоваться от кнопки, чтобы изменить обработчик нажатия.

В случае использования событий, код будет выглядеть так:

var isPressed = / magic /

if(isPressed)
{
Invoke.Pressed(this, huita);
}

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

button1.Pressed += (sender, e) =>
{
Make(barrel);
Suck(dick);
}

Ты можешь динамически менять обработчики:

if(youAreFaggot)
{
button1.Pressed +=Suck(dick);
}
else
{
button1.Pressed +=Suck(chupaChups);
}

При этом код кнопки не будет меняться.
sage #451 #840909
>>840855

Гугли "Наблюдатель (шаблон проектирования)". В кратце - это позволяет разрывать сильную связь между объектами.

К примеру - есть у тебя кнопка.

Если делать без событий, то кнопка привязывается к твоей логике, из-за этого появляется сильная связность.

В коде кнопки ты определяешь момент нажатия на неё:

var isPressed = / magic /

if(isPressed)
{
Make(barrel);
Suck(dick);
}

Обрати внимание, в этом случае кнопка будет знать, что ты хочешь соснуть хуйца и сделать бочку. Чтобы это реализовать, тебе придётся наследоваться от кнопки, чтобы изменить обработчик нажатия.

В случае использования событий, код будет выглядеть так:

var isPressed = / magic /

if(isPressed)
{
Invoke.Pressed(this, huita);
}

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

button1.Pressed += (sender, e) =>
{
Make(barrel);
Suck(dick);
}

Ты можешь динамически менять обработчики:

if(youAreFaggot)
{
button1.Pressed +=Suck(dick);
}
else
{
button1.Pressed +=Suck(chupaChups);
}

При этом код кнопки не будет меняться.
>>840936>>840973
#452 #840936
>>840888
>>840909
Спасибо, я вроде понял.
Просто для меня в обычном консольном приложения уровня laba 1 использование евентов было не слишком очевидно
>>840965
#453 #840965
>>840936
Ну вот напиши для laba2 консольное же приложение которое логгирует действия пользователя с файлами в определенной папке с помощью FileSystemWatcher.
#454 #840973
>>840909
И чем эта хуйня отличается от создания классов в css и подвешивания потом классов через addeventlistener?
>>841118
#455 #841118
>>840973
Тем что ты пидор)))0
#456 #841212
>>840332
Но ведь asp.net так легко не развернешь, как приложения на python например, так ведь? Почему хостинг днем с огнем не сыщешь бесплатный?
>>841371
#457 #841260
Решарпер после обновления до 2016.2 стал на одном проекте валить студию при загрузке. Что делать?
#458 #841266
Вопрос по архитектуре от новичка. Простая программа учёта, типа оборудование IT конторы, можно перемещать из кабинета в кабинет, заводить новое, списывать. База SQLite, сейчас в процедурном стиле на событие нажатие кнопки висит селект или апдейт, но так сложно менять запросы ибо они раскиданы по баттонам/формам. Думаю сделать статический класс типа QueryManager и всё хранить там, а на кнопку вешать QueryManager.MoveItem(item). Нормальный вариант или есть лучше способы организации приложения?
138 Кб, 1280x744
#459 #841318
Есть сорцы одной программы на гитхабе, хочу ее собрать без засирания системы студией.
поставил шарпдевелоп и билдтулс, попробовал собрать и пожрал говна с ошибками.
как это собрать без студии? https://github.com/martinmine/Shikashi-Uploader
в релизе старое говно
>>841347
#460 #841320
>>826301
ну он имел в виду что-то типа

>2k16


>десктоп

#461 #841324
>>826335
ну а как же подводные камни?
#462 #841347
>>841318
Родина им студию дала, охуенную, бесплатную, юзай, юзай студию! Нет, не хотим, хотим из говна и палок собирать велосипед, засирать систему не меньше и страдать. И это разрабы?
>>841364
#463 #841364
>>841347
Нахуй мне это говно размером с ос? тем более, что я не пишу на шарпе.
#464 #841370
Вот что за гавно. Почему за что не берется мс всё пиздой накрывается? Серьезно. Вот сделали операционку и типо в шоколаде должны быть, лидерами. Двигаться вперёд, на примере своём показывая кто тут главный а на деле делают рывок и курить уходят проебав всё преимущество и все позиции. Все бородачи убежали на юникс все мамкины эстеты, модники, хипстеры на гейоси и оставили мс рыночек обычных пользователей и вместо того что бы попытаться забрать их себе продолжили хуйнёй страдать и менять обои пока остальные жопу рвали. Теперь на гейоси помимо всех старых модников еще и наебизнесмены и стремящиеся и вообще это уже просто блядь бренд (как модные шмотки) который хотят себе все. Бородачи же пошли в другую сторону и довели всё до состояния что пользоваться юниксами теперь уже и домохозяйки могут и забрали эту часть. Пользователи винды получили новые обои. Сделали свой флеш, "перевернем мир" вся хуйня и могли ведь но как сделали так и списали в утиль и помнят о нём только связанные с тематикой. Был блядь офис, нахуй с рынка благодаря опен офису гугл доксам и прочей хипстерской хуйне. Можете почитать гиктаймс 90% "их приглашенных поболтать" пользуются чем угодно но только не продукцией мс. Языки свои были, нахуй половину. Остальные всосали лишь потому что дальше чем на мс невозможно с ними было работать а мс уже нахуй никому не нужен был. Сервера, энтерпрайз (банки,больницы,инвест фонды, кофеварки, секс игрушки) нахуй всё не пользуются там продукцией мс. Оракл и ява забрали половину остальное раскидали по полу деритесь за еду. Дальше больше решили в мобилки уйти, нокию блядь купили показать как всё заебись в итоге нету нахуй больше нокии нету нахуй виндовсфонов расспродают патенты уже кто что возьмет в китае. Супер просто и как обладатель люмии могу честно сказать нихуя там в магазине приложений хорошего нет, сорта говна одни, чего уж говорить даже Стим который продает 99% игр под винду не озаботился о том что бы клиент под виндос фоны сделать, только блядь андроит и гейось всё. Нахуй люмии, сидите под Bluestack если хотите, я без него даже войти не могу в клиент стима зайти теперь. Спасибо блядь. Про почту их забыл, такая полезная что только для их внутренних сервисов и используется лучшая просто блядь и такая же нахуй никому не нужна если контекст мс убрать. Скайп купили такой то вин, связали со всем чем можно своим убранством "и вот теперь-то соснут все" подумали хуй там плавал, теперь все благополучно пользуются всякими телеграмами,перископами прочей хуйней по скайпу не помню уже когда говорил он блядь превратился в "сейчас я тебе в <приложение нейм> наберу" "Ой а у меня его нет" "ебать ты лох ладно в скайп наберу" и на следущий день уже минус один пользователь скайпа. Почему мс убивает всё к чему руку протягивает?
#464 #841370
Вот что за гавно. Почему за что не берется мс всё пиздой накрывается? Серьезно. Вот сделали операционку и типо в шоколаде должны быть, лидерами. Двигаться вперёд, на примере своём показывая кто тут главный а на деле делают рывок и курить уходят проебав всё преимущество и все позиции. Все бородачи убежали на юникс все мамкины эстеты, модники, хипстеры на гейоси и оставили мс рыночек обычных пользователей и вместо того что бы попытаться забрать их себе продолжили хуйнёй страдать и менять обои пока остальные жопу рвали. Теперь на гейоси помимо всех старых модников еще и наебизнесмены и стремящиеся и вообще это уже просто блядь бренд (как модные шмотки) который хотят себе все. Бородачи же пошли в другую сторону и довели всё до состояния что пользоваться юниксами теперь уже и домохозяйки могут и забрали эту часть. Пользователи винды получили новые обои. Сделали свой флеш, "перевернем мир" вся хуйня и могли ведь но как сделали так и списали в утиль и помнят о нём только связанные с тематикой. Был блядь офис, нахуй с рынка благодаря опен офису гугл доксам и прочей хипстерской хуйне. Можете почитать гиктаймс 90% "их приглашенных поболтать" пользуются чем угодно но только не продукцией мс. Языки свои были, нахуй половину. Остальные всосали лишь потому что дальше чем на мс невозможно с ними было работать а мс уже нахуй никому не нужен был. Сервера, энтерпрайз (банки,больницы,инвест фонды, кофеварки, секс игрушки) нахуй всё не пользуются там продукцией мс. Оракл и ява забрали половину остальное раскидали по полу деритесь за еду. Дальше больше решили в мобилки уйти, нокию блядь купили показать как всё заебись в итоге нету нахуй больше нокии нету нахуй виндовсфонов расспродают патенты уже кто что возьмет в китае. Супер просто и как обладатель люмии могу честно сказать нихуя там в магазине приложений хорошего нет, сорта говна одни, чего уж говорить даже Стим который продает 99% игр под винду не озаботился о том что бы клиент под виндос фоны сделать, только блядь андроит и гейось всё. Нахуй люмии, сидите под Bluestack если хотите, я без него даже войти не могу в клиент стима зайти теперь. Спасибо блядь. Про почту их забыл, такая полезная что только для их внутренних сервисов и используется лучшая просто блядь и такая же нахуй никому не нужна если контекст мс убрать. Скайп купили такой то вин, связали со всем чем можно своим убранством "и вот теперь-то соснут все" подумали хуй там плавал, теперь все благополучно пользуются всякими телеграмами,перископами прочей хуйней по скайпу не помню уже когда говорил он блядь превратился в "сейчас я тебе в <приложение нейм> наберу" "Ой а у меня его нет" "ебать ты лох ладно в скайп наберу" и на следущий день уже минус один пользователь скайпа. Почему мс убивает всё к чему руку протягивает?
>>841373>>841375
#465 #841371
>>841212
наверное потому, что хостинг на дотнет - это традиционно винда, за которую надо заплатить. а вообще, что ты подразумеваешь под бесплатностью хостинга? тоталфри аля народ.ру когда-то? ну это жирновато. а хостингов с триалом не так уж прям многомного, но хватает. некоторые триалы даже супер круты по условиям, однако там не работает нихуя нормально, но это побочный уже эффект
#466 #841373
>>841370
а это я забыл еще про этот мертвый тред мертвого языка, в топане полтора вкатывальщика что ждут по пол дня в ЛУЧШЕМ случае помощи а потом уходят дублировать вопрос в QA в шапке /pr в том же жабаториуме и то в разы лучше. Пиздец у меня бомбит сегодня.
#467 #841375
>>841370
Охуенная паста
>>841383
#468 #841383
>>841375
Дак заебался я уже смотреть на эту парашу блядь, книги все что купил, люмия блядь офис который блядь я запускал пару раз, винда купленая нахуй всё это какой в этом блядь смысл? Я мог поставить какую нибудь ебунту и дрочить яву и имел бы в своём регионе гораздо больше вакансий для трудоустройства но блядь даже среди тех что есть по net это 50% асп 25 допиливание чужих костылей оставшиеся 25 это упоминание в вакансии на позицию java что ты с нет платформой (синтаксисом) знаком. Мобилки мертвы, ентерпрайз мертвый, асп только еще более менее держится на плаву за счёт внутренних ERP систем ну и юнити подогнали что бы мс спасти, хоть какой-то прирост в шарп активности но даже блядь при этом в 2015 когда java упала сильнее всего за всё время она всё равно стала языком года а ебаный шарп как не попал в тройку так и нахуй идет до сих пор.
>>841515
#469 #841511
Почаны, чем парсить аргументы командной строки в .NET Core?
#470 #841515
>>841383
А нахуя тебе ассортимент вакансий если нужна тебе одна? Я когда выбирал язык запариаался на эту тему, а по факту сейчас заебываюсь футболить эйчаров с моего круга и хх.
#471 #841641
>>840346

>по умолчанию



private
#472 #841676
Я правильно понимаю, что массив объектов в C# это просто массив ссылок на объекты? Можно как-то выделить память сразу под все объекты, или для этого нужно только использовать struct?
>>841681
#473 #841681
>>841676
попробуй почитать про stackalloc в контексте блоков unsafe, это альтернатива оператору new(), который выделяет последовательно расположенную память в стеке вместо кучи.
79 Кб, 1024x1024
#474 #841973
Почему на дотнете нет нормальных проектов? На 3 собеса уже сходил - везде предлагают веслать кривое наследие хуй знает сколько летней давности. Заебалось, честное слово.
>>842003>>842062
#475 #842003
>>841973
Ты так в каждом треде будешь писать? Я тебя помню из джава треда, зеленый!
>>842007
#476 #842007
>>842003
В джава треде писал не я, но я поддерживаю пост и мне неприятно, что на дотнете легаси говнище, а не проекты.
>>842009
#477 #842009
>>842007
Ну энтерпрайз проекты вообще очень живучи
#478 #842056
>>840660
Странный вопрос какой-то, продвигаются в следующее поколение живые объекты, мусор с деструкторами (которые на самом деле нихера не деструкторы, а финализаторы) не в поколение перемещается, а в специальную очередь финализации. В этой очереди обработка происходит не на потоке сборщика, а на другом (чтобы нахер не повесить финализатором сборку/выделение памяти), из этого состояния объект может воскреснуть (корректно написать код такой очень тяжело, но иногда требуется, например для поддержки пула соединений: в финализаторе происходит подчистка всякого говна, которое юзер забыл очистить, а соединение возвращается в пул), кроме того объект может оказаться собран в тот момент когда происходит интенсивная работа, поэтому финализация откладывается до более спокойного времени/острой недостатки памяти.
То бишь можно было бы сразу, но не выгодно. (По примерно той же логике несколько поколений у сборщика, а не одно)
#479 #842060
Сап, дайте ссылочку на посоветуйте модную книг на общепанятнам языке.
59 Кб, 500x350
#480 #842062
>>841973

>везде предлагают веслать кривое наследие хуй знает сколько летней давности


Добро пожаловать в Энтерпрайз, сынок!
37 Кб, 460x460
#481 #842646
Ананасы, подкиньте годной литературы по TPL. Раньше была статья (серия статей) на RSDN, да то ли сайт сам закрылся, то ли статья проебалась, в общем, ищу нечто похожее
>>842651
#482 #842651
>>842646
Замени в rsdn.ru... ru на org
#483 #842907
Есть задачка на с# - надо написать программку, которая бы вела лог всех подключенных и отключенных носителей (диски/флешки/прочее).
С помощью чего можно мониторить подключение и отключение?
>>842910
#484 #842910
>>842907
Чому бы тебе не погуглить? Можешь дергать DriveInfo.GetDrives() периодически, а можешь попердолиться в win api.
>>842918
#485 #842918
>>842910

>Чому бы тебе не погуглить?


Ну я нагуглил вот эту статейку
http://mycsharp.ru/post/21/2013_06_12_rabota_s_fajlami_v_si-sharp_klassy_streamreader_i_streamwriter.html
Но это все же не мониторинг.

>периодически


Думал, но это как-то слишком топорно на мой взгляд? Запись-то должна быть только при смене конфигурации.
Есть же какие-то события в винде при обнаружении/удалении устройства, я думал может подскажут как их использовать?
>>842921
#486 #842921
>>842918

>вот эту статейку


Не ту, вот эту
http://upread.ru/art.php?id=103
>>842959
#487 #842959
>>842974
#488 #842974
>>842959
На русском, вроде бы.
Спасибо!
>>843006
#489 #843006
>>842974
Не надо так гуглить.
#490 #843009
Скомпилировал небольшую программку в Xamarin Studio (бывший MonoDevelop). Получился экзешник, на винде работает нормально, но на лине не открывается. Как скомпилировать проект в XS под линух?
>>843016
#491 #843016
>>843009
А что пишет? Да и как ты запускаешь? На линуксе стоит mono? Он console или winform?
>>843032
#492 #843032
>>843016
Не знает как открыть, .exe же. Да, моно стоит. На GTK#.
>>843034
#493 #843034
>>843032
mono ./kolobok.exe
>>843047>>843173
#494 #843047
>>843034
Шо в терминале то показывается? И что за версия mono?
#495 #843173
>>843034

>mono ./kolobok.exe


Запустилось! Спасибо!
Оно по двойному клику не стартовало, вот я и решил, что не работает.
!PepsiY0aso #496 #843400
Какие преимущества новой IDE Rider от JetBrains перед VS?
inb4: кроссплатформеность
>>844818
#497 #843401
ой, трип случайно
>>843456
#498 #843456
>>843401
зачем ты акцентируешь внимание на свой трип код? всем ведь похуй, а ты лишь обращаешь на него внимание своим "я случайно". может, и не случайно вовсе?
179 Кб, 682x567
#499 #843458
Анон, есть необходимость сохранить объект класса в отдельный файл и для этого используется сериализация. Однако код программы обфусцирован, а поля сериализованного класса (ровно как и все поля его базовых классов), как известно, обфускации не подлежат. Так как же защитить код программы в этом случае, если в отдельный файл как раз необходимо сохранить, в общем-то, все сердце программы?
>>843467>>843624
#500 #843467
>>843458

> поля сериализованного класса (ровно как и все поля его базовых классов), как известно, обфускации не подлежат.


почему?
#501 #843481
>>843456
Спасибо, что ответил по вопросу, ламер.
>>843483
#502 #843483
>>843481
тебе сложно ответить на вопрос? в принципе, если рассуждать как ты, то и тебе отвечать не должны, ведь раз ты не знаешь сам ответа на свой вопрос, то ты ламер.
>>843484
#503 #843484
>>843483
пиздец ты ебанутый

>мне настолько похуй

>>843485>>843487
#504 #843485
>>843484
почему ебанутый?
>>843486
#505 #843486
>>843485
ерунду несешь.
>>843488
#506 #843487
>>843484

>мне настолько похуй


ого, ты крутой.
#507 #843488
>>843486
почему ерунду?
>>843489
#508 #843489
>>843488
я тебя в твои же сообщение носом тыкать не собираюсь, извини.
>>843493
#509 #843493
>>843489
ну пожжи. ты отказался давать мне ответ на вопрос просто под предлогом того, что я не знаю ответ на вопрос. отсюда можно предположить, что ты считаешь себя выше того, чтобы отвечать людям на вопросы, ответы на которые они не знают, а ты знаешь. почему тогда тебе должны отвечать люди на вопрос, ответ на который они знают, а ты не знаешь? я не ответил на твой вопрос, потому что не знаю на него ответ, но в то же время один аспект формулировки твоего вопроса меня заинтересовал. если тебя оскорбило, что я, незнающий ответа на вопрос, обратился напрямую к тебе, потому что, похоже ты знаешь на него ответ, то, во первых, иди нахуй, пидорас ЧСВшный, а во вторых, задам тогда вопрос абстрактно, всем участникам треда: почему поля сериализованного класса (ровно как и все поля его базовых классов) обфускации не подлежат?
>>843495>>843496
#510 #843495
>>843493
лол
>>843497
#511 #843496
>>843493
Сейчас бы высеры ламерья почитать, м...
>>843498
#512 #843497
>>843495
что смешного?
#513 #843498
>>843496
почему высеры?
#514 #843534
>>843456
А что плохого в трипкодах?

Ну честно заебали семены и когда за меня отвечают.
302 Кб, 619x449
#515 #843545
>>843456

> всем ведь похуй


тебе то видно как похуй
556 Кб, 2000x1250
#516 #843557
Анон, а как ты разбираешься с большими неизвестными солюшенами?

С отдельными мелкими классами проблем нет, но я не понимаю как разобраться с большой кодовой базой в целом.
Разобраться в целом = знать какие классы есть в проекте, какие у них интерфейсы, как классы связаны между собой. Глубокое знание реализации пока не интересует.

Пробовал Code Map, легче не стало. :(
#517 #843624
>>843458

Бамп вопросу.
>>843631
#518 #843631
>>843624
Не обфусцируй / не сохраняй / настрой свой обфускатор / используй сериализацию, которая не сипользует имаена классов и полей при сериализации
#520 #844818
>>843400
Работает пошустрей
Тред утонул или удален.
Это копия, сохраненная 3 октября 2016 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски