Это копия, сохраненная 11 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Спасибо.
вангую, что нет. Зачем? У мк ограниченный ресурсы, а шарп, хоть и относительно быстрый, но всё же расточительный. Я уже молчу про размеры всех стандартных библиотек весом в полгига.
Да и нахуй он при программировании мк не нужен, вполне хватает Сишки.
Я переделал кусок кода, но он мне все равно не нравится http://ideone.com/dyLv6K
Помогите что-то поменять.
c#, какие есть библиотеки в .net, как работает clr, (winforms, asp.net, wpf), ado.net, ооп, паттерны mvc mvp и какая-нибудь субд, скорее всего ms sql server
1. Изучить шарп
2. Освоить юнити
3. Сделать лайтовый платформер под мобилки
4. Показать на собеседовании
...
5. PROFIT!
Где я проебался и почему не взлетит? Желательно с пояснением.
взлетит
может не взлететь, если код лютое говно, а ты необучаемый долбоеб. так что обязательно пишешь в резюмехе: "ЛЕГКО ОБУЧАЕМ", жирным шрифтом, да побольше
Благодарю.
Если сможешь .net framework на него установить, то можно.
Не обязательно на должность юнити разраба. Это делается скорее для получения представления о разработке игр и создания портфолио.
>Application has to determine sitemap of requested URL, sends >requests
>to sitemap’s URLs and measure response time.
Я вот никак не могу понять как сайтмап стянуть с юрл.
inb4 - я только учусь и знаю основы (надеюсь что знаю)
Эти охуенные пояснения для нюфагов. Видишь же что у меня нет опыта и я не особо шарю, но нет, надо выебнутся на пустом месте, не приводя аргументов и не предлагая альтернатив. Если умный дохуя, подскажи как вкатится в геймдев.
Если привлекает идея просто рисовать в окне спрайты и цветные фигуры, то SFML твой выбор, Unity это комбайн-конструктор игр мышкой для даунов. С основами могу помочь, я на этой либе в связке с Box2D целый движок делал.
>>992837
Я попал в /б или ты тут такой один? Говорю же, не шарю, спрашиваю совета, а ты тут со своими охуенно полезными советами флуд разводишь.
>>992828
>> Unity это комбайн-конструктор игр мышкой для даунов
Может быть, но для начала - сойдет, а там видно будет куда дальше двигать. Или есть альтернативные пути?
>>992790
string str = @"хуета";
И почему часть имен называют с нижним подчеркиванием перед названием переменной? Вроде
_name
>@ перед кавычками
игнорирование спецальных символов
>нижним подчеркиванием перед названием переменной
чтобы не путать локальные переменные с полями класса. один раз 2 дня дебажил прогу, а оказалось, что моя строка в конструкторе создает новую переменную вместо того, чтобы приравнивать значение уже существующей.
@ говорит что строка должна быть в UTF8.
_ сохраняет имя переменной в байткоде чтобы к ней можно было получить доступ из другого языка.
дядя, ты дурак?
List<string> Titles= new List<string>(new string[] { "title1", "title2", "title3" });
List<Book> Books = new List<Book>{new Book{Title = Titles[0], Author = string.Empty}, new Book{Title = Titles[1], Author = string.Empty}, 'и тд.'};
>titles.Select(s=>new Book{Name=s}).ToList()
Это тот самый linq? Если да, то учить обязательно, если я вкатываюсь в шарп? Просто я даже не понимаю, что эта штука должна возвращать и должна ли вообще возвращать что-то.
Это линк. Учить обязательно. Почти все LINQ выражения возвращают IEnumerable<T> - интерфейс, который имплементируют чуть менее чем все коллекции.
Ок, ушел учить. Но все равно, не мог бы ты подсказать, что и как твоя конструкция возвращает? Я догадываюсь, что select выбирает все значения из списка titles, а дальше хуй пойми что. Можешь написать целую рабочую строку кода для моего случая?
>Хотелось бы разобраться, как это создаётся: есть одна базовая программа, но при желании к ней присоединяются модули (плагины?), а потом отключаются.
Посмотри в сторону динамической загрузки сборок.
В крации, определяешь в своей программе интерфейсы плагинов, потом при загрузге базовой программы пытаешься загрузить все дллки по некоторому пути и с помощью рефлексии найти в них все классы реализующие нужные тебе интерфейсы. Это и будут плагины, причем они могут тянуть свои классы в сборке для реализации функциональности о которойй твоя прога даже не дагадывается.
Сборки грузятся в отдельном домен приожения - для отлючения связаных с ними плагнинов нужно либо совсем выгрузить домен либо свою рестартануть программу.
>то учить обязательно
Да, понимать обязан. Только не используй его. Крути дедовские форы в своих объектах выборки и не еби магией замыканий никому мозг. Линк - ебаный рак богоподобного шарпа
Я пока сижу в туториалах по линку, но пока я доберусь до понимания всего этого, пройдет какое-то время. Поэтому я прошу сейчас написать мне правильный линк запрос на создание правильного объекта List<Book> Books
Нет ты, линкомартыха.
Подчищай потом за тобой стрелочки распиханые по пропертям, дефолтным конструкторам, небу и даже Аллаху.
Код без раковой хуйни понятен даже недельному нюфагу.
Чистота интерфейса, ничего не поделаешь. Только доступные конструктора говорят как можно нормально получить гарантировано работоспособный валидный объект.
Твоя хуйня выше очень хрупка, если ты в один прекрасный момент решишь, что с авторами не могут работать все подряд, а только через твой IRusAutorUnion. Измение нужно будет внести только в конструктор, а не во всю стрелочную хуйню раскиданую по всей программе.
>Поясни, почему ты убрал сеттеры?
Потому что они мне не нужны в этой короткой программе. Вот пока они не нужны НЕ ДОБАВЛЯЙ ИХ, как станут нужны, так сразу добавишь.
>Ну и конструктор зачем тут нужен, да?
Потому что у тебя специальное условие для создания нормальной книги.
Booк B = new Book(); // это еще не валидная книга, у нее нет ни названия ни автора. Она полностью сломает твою программу.
B.Title = "Some Title"; // только теперь она валидна.
Суть конструкторов, что после них объекты должны работоспособные без всяких доопределений, про которые легко забыть.
Booк B = new Book("Some Title"); // полностью валидный обект готовый к работе
>>992997
Не лучше ли сделать более универсальный вариант https://dotnetfiddle.net/Widget/dtPPiD ?
Массив или костылями. Можешь еще глобальные переменные объявить и тогда метод сделать void.
>Можешь еще глобальные переменные объявить и тогда метод сделать void
Можешь по подробней, пожалуйста?
https://pastebin.com/6BHZVBPe
Как мне этих 2 значения вынести, просто я еще туплю с ключами доступа и т.п.
>мог бы просто задать вопрос
Задаю. Есть файл с view, есть файл с viewmodel который с ним связан. В гайдах говорят, что для каждого значения с формы во viewmodel нужно создавать проперти для биндинга, а для каждого ивента с формы нужны создавать комманду тоже для биндинга. А где и как мне тогда писать основную логику программы? Например при ее загрузке мне нужно из файлы вытащить инфу, где прописывать соответствующие методы?
List<Book> Books = (from s in Titles select new Book(s, string.Empty)).ToList();
Лучше бы сразу сказал, что не знаешь сути паттерна.
Пока для юнити изучаю, но язык нравится.
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
Справедливости ради, на Жаббе так всегда было можно, гугли java дизассемблер.
Tuple
Загружай в той вьюмоделе, в которой эти данные будешь использовать. Можно для этого отдельный класс выделить или метод, смотря какие данные.
>Загружай в той вьюмоделе
Тогда это выходит не MVVM, а VVM, поскольку ты предлагаешь избавиться от модели и грузить всю логику во вьюмодель. А теперь представь, что у меня есть пара методов с расчетами на 500 строк, которые ко вьюмодели никакого отношения не имеют.
Короче, я делаю сейчас по-другому. В солюшне будет два проекта, один обычный WPF, а второй библиотека, которую я буду подключать к обычному. Я такое видел даже в одном видео.
Вот кстати тоже юнити + шарп, только вкатился в команду юнити-разработчиков именно чтобы выучить C# он у меня со следующего курса в шараге начинается и мне пиздос без этого
>а второй библиотека, которую я буду подключать к обычному
Все-таки я обосрался на этом пункте. В референсах добавил проект-библиотеку, в код добавил using VtoroiProjectBleat; но не могу достать до метода doNothing() из второго проекта, первый его просто не видит. Хотя сам класс видит.
Что не так?
Жалко, мне линк начинал нравиться, а если вместо лямбд использовать методы, то норм? Там же просто делегаты, не обязательно использовать всякое анонимное говно.
sealed class Rect {
public Left;
public Rght;
}
знаю что можно сделать
static class ExtendedRect {
public static GetRight(this Rect rect) { ... }
}
но получается что методы мешаются со свойстами, это говно какое-то
Сделай класс-обёртку.
List<Object[]> Objects = new List<Object[SIZE]>; не работает.
На самом деле там массив Task, но синтаксис одинаковый и чтобы не пугать никого тасками я написал лист.
Линк охуенен, подтверждаю. А тот петян-неосилятор может пройти нахуй.
Такое "байтоёбство" везде практикуется, хотя бы флаги ты как собираешься реализовывать? Массивами булей? Алсо всякие шифрования, упаковки и хэшкоды их активно используют, это не байтоёбство.
Что именно не ясно?
Спосибо, я нюфаг.
Или надо какое нибудь низкоуровневое говно учить?
Я не хацкер, по этому не скажу как они обходят, возьми несколько каких нибудь популярных отрытых антивируса и смотри документацию по их работе, какие алгоритмы они используют для выявления вирусов.
Либо сразу в бой рвись :)
Установи ВС, набросай простой винлок, червя-пидора, етц, поставь антивирус и смотри на что он будет ругаться, пытайся маняврировать. Но это так себе путь. Энивей, с поверхностными знаниями обойти сможешь только себе же за щеку, так что подумой, хочешь ли погружаться в это дерьмо с головой, либо дальше скроль мемы. Быть кулхацкером = много знать.
Это имеет смысл.
>>993543
Просто подумолось написать какой нибудь эксплойт. Но книг, гайдов или манов, кроме сайтов дудос школьников, видимо не найти.
>эксплойт
значение знаешь?
Без представления как это всё работает ты нихуя не сделаешь. Максимум - скопипастишь с кул-хацк форума ЗИРОДЕЙЭКСЛОЕТ-zverCDultimate- и соснешь, короче, хакер, качай книги или смотри туторы, получай знания, опыт и только после того, как овладеешь мейнстримом имеет смысл пытаться кулхакать.
Понятно.
>Просто подумолось написать какой нибудь эксплойт.
То есть, с нихуя, с нулевым багажом знаний тебе захотелось эксплойт взять и написать? Почему эксплоит?)))))))))))))))))))
Я просто дитя 90-х и привык к тому, что в голой винде (Windows 2000 или XP например) можно только писать скрипты на VBScript и JScript и это вам не сборки линуксов с GCC.
А тут внезапно оказывается, что с каждым фрейморком по консольному компилятору Си Шарпа идёт, а насколько я помню .Нет фрнймворк уже начиная с Висты идёт в комплекте.
Да я просто подумол о флешке у которой в автозапуске будет простенькая прожка - флешка вставляется, открывает порт, ставится какой нибудь радмин или костыль для удаленного доступа, с флешки самоудаляется ширус.
Типа дал кому то музыку переписать - а потом можно зайти по удаленке и посмотреть на что он дрочит.
Я думал это что то на уровне продвинутого школохакерцства, но видимо нет.
Вообщем, разбираюсь с паттерном MVP.
Делаю простенький МП3 плеер.
и кароче я использую функцию Опен Файл Диалог для получения аадреча аудио.
Ну и вопрос в том, реализовываться, по канонам паттерна MVP он должен во вью, или в презентере?
Просто сам ОФД находится в пространстве имен System.Windows.Forms и я не уверен должно ли оно быть в презентере.
Авторан вируса с флешки, серьезно? Это даже не 2007. Мда, долго же ты "гулял". Повторю, если хочешь в это дерьмо влезть, придется с начала начать и постигать мейнстрим, только после него уже задавай вопросы про хэккинк.
Что тебе мешает заглянуть в шапку и скачать книгу? Давай, я в тебя верю (нет). Сам в себя верь и не ной.
В смысле как понимаю все студийные свистоперделки лучше оставить за бортом, оставив только кэсики с исходниками?
Недавно.
Ну если ЦА вируса - неграмотная отара небольшого размера, которую пасет один энекей на полставки, то вполне возможно.
Всякие "шифровщики" флешек на VBA вполне живут, потому что поведение слишком примитивное для антивируса.
Используем указатели
Пихаем их в условно-бесконечный цикл-пока место в озу не закончится
???
ПРОФИТ!
Идея бесконечно тупая и забавная, как по мне.
в .gitignore должно быть как минимум следующее:
YourProject/bin/
YourProject/obj/
YourProject/packages/
Для каждого проекта в солюшене
YourSolution/.vs
и для всего солюшена
Остальное - по необходимости.
Файл .gitignore находится в корне git репозитория и определяют игнорируемые директории. Можно прям ручками поправить и твоя git утилита подхватит его.
У кого-то он еще есть?
толсто)
У меня есть пердуинка, например
Можно как-то реализовать, чтобы подключая пердуину, при нажатии кнопки на форме начал мигать подключённый к пердуине светодиод, например?
Конечно.
Не слушай поехавшего старпера, используй все фичи языка.
Совет не использовать линк сродни совету не использовать проперти.
Этот просто старпёр легаси говна переел и с катушек поехал.
Более читаемая форма запятой.
Гугли "c# лямбда".
Никогда не смотри в сторону Any() или Take() или любой другой Linq функции. Тру посоны используют фор.
Пробовал писать внутри неймспейса в одном файле - в других файлах с тем же неймспейсом этих импортов не видно
извини, тег сарказм отклеился.
В шарпе нет инклюдов, есть юзинги. Есть действенный способ - SOLID, в частности буква S оттуда. Перестаешь писать говнокод - в фаилах остается дай бог 5-6 юзингов.
int[] ch = new int[2];
ch[0] = 2;
ch[1] = 1;
return ch; //Не удалось int в int[]
return ch[] // требуется значение
ебать ты долбаеб что по твоему делает return???
Вся проблема была в том, что я когда создавал метод я забыл указать, что он int[], а написал только int
Нахуй ты обиделся?
На форме есть ползунок, пользователь в нем задает размер дочерней формы, ну это неважно
Значение из ползунка заносится в переменную public int x { get; set; }
Еще простой класс Logic.cs
Как мне оттуда к этому иксу обращаться?
Как из одной формы к другой обратиться - понятно, а че делать с классом?
+ этот класс Logic.cs еще должен полученную переменную передать в windows-форму Game
Я вот учу-учу и уже кажется что сколько можно учить, что всё сложно и понимаешь, что впереди еще столько же, если не больше и руки опускаются. Как не выйти из колеи? Как продолжать учить и не думать о том, сколько еще впереди?
Чем C# лучше хаскеля?
Все классы в сисярпе наследуются от Object, соответственно туда можно сохранять все что хочешь. Как вариант еще можно использовать dynamic.
Хм, мне нравится второй вариант, все равно всё потом пойдёт в базу данных. Благодарю.
Двачую
А что у тебя в классе должно быть?
>В пхп я делал for по колонкам и сохранял все значения в один массив (пхп массив может хранить разные типы в одном), как мне сделать то же самое в шарпе?
ArrayList твой друг
class A {
operator B() { return new B() }
}
B x = new A()
?
Например проверку дискриминанта
Создал новый класс, только для того, чтобы понять как это работает
С типами полный пиздец в общем..
Нельзя наследовать структуру, делаю обёртку, но каждый раз нужно делать new,
то есть вместо
return yoba.Position
нужно
return new MyVector2(yoba.Position)
а вместо
yoba.Position = new Vector2(1, 2)
нужно
yoba.Position = myVecto2.BaseVector2 // пришлось сделать базовый объект public
а можно было просто наследовать структуру и добавить пару методов как в С++
Учи пока можешь
Вот я устроился на работку и нихуя нового не узнал, только научился разбираться в древнем коде без документации, а времени учить что-то нового нету.
Англ шарп это не берёт. Пишу вот так, но элемент с доставкой остаётся пустым. Кроме того, не уверен, грузит ли он экстернальные скрипты.
HtmlParser parser = new HtmlParser(Configuration.Default.WithJavaScript().WithDefaultLoader());
var document = parser.Parse(html);
Знает кто, как и чем это можно решить?
Так и делай как в с++, сделай класс с открытыми полями, концепции стракта в с++ и в сишарпе совершенно разные, в первом это просто класс с открытыми полями, а второе это объект с которым сишарп работает по-особенному.
Открываешь консоль браузера/скачиваешь burpsuite. Смотришь лог запросов-ответов к серверу. Думаешь.
А вообще у алика есть свой api
Я сам с таким не сталкивался, но возможно эта штука поможет
https://www.nuget.org/packages/AngleSharp.Scripting.JavaScript/
Менять базовую структуру я не могу, она в библиотеке, таких структур там несколько и использовать их без дополнительных методов ужасно неудобно. Можно добавить расширяющие методы но тогда получается что их приходится мешать со свойствами, например войство Left и метод GetRight()
Если нельзя переписывать, тогда как тебе говорили делай обёртку, и да она не будет соответствовать интерфейсу вектора, но это же вроде соответствует одному из принципов солид, типо всё равно систему будешь строить из интерфейсов своего вектора, да и если что можешь сделать ему свойство ExVector.Vector
16.Назначение наследования состоит в том, чтобы?
a) создавать более общие классы в более специализированных
b) добавлять возможности к существующим классам без их модификации
Ты, чо, дурак? Оба - неправильные. Но второй вернее, в общем и целом, да. Наследование помогает сделать тебе класс, добавить туда нужные свойства и методы, на основе имеющегося класса. Это позволяет поддерживать нормальный уровень абстракции.
А в остальном?
Не понял
Ну и где там книги по алгоритмам, скотина?
>>994182
Не буду томит тебя, уебок. Короче, у тебя x - скорее всего double или float (какой-то тип с плавающей точкой), а компилятор расценивает 5. как литерал integer'а и приводит его к другому типу. То есть, ты пытаешься сложить числа, которые имеют разную битовую длину и получается, что делишь 0 на 0. Надо писать так
(x+5f (если float))/(x-5d (если double) или (x-5m(если decimal)
Ебаный индус ты.
Да, точно, x там double. И все таки этот знак вопроса в консольке, что он означает? Я такое впервые вижу. Это бесконечность?
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Title = "Open Image";
dlg.Filter = "bmp files (.bmp)|.bmp";
Bitmap btm;
if (dlg.ShowDialog() == DialogResult.OK)
{
btm = new Bitmap(dlg.FileName);
}
dlg.Dispose();
return btm;
}
Пишет, блять, use of unassigned local variable btm.
Какого черта?
Сократил чуток, чтобы вас не напрягать сильно
double x = 1, y = Math.Sin(x), z=Math.Cos(x);
double w;
if (y<z) w=(x-1)/(x+1);
else
w=(x+1)/(x-1);
Console.WriteLine(w);
double w;
if (y<z) w=(x-1d)/(x+1d);
else
w=(x+1d)/(x-1d);
Console.WriteLine(w);
пробуй так.
А я ебу?
try catch
{
return c == 1 ? 2 :1;
}
public bool Bigraph(int c)
{
var stack = new Stack<Node>();
stack.Push(Nodes.First());
while (stack.Count > 0)
{
c = cc(c);
var node = stack.Pop();
node._IsVisited = c;
foreach (var edge in node.Edges.Reverse<Edge>())
{
var adjacentNode = edge.GetOtherNode(node);
if (adjacentNode._IsVisited == 0)
stack.Push(adjacentNode);
else if (adjacentNode._IsVisited == c)
return false;
}
}
return true;
}
Запилил, значится, проверку на двудольность графа. Но работает он не правильно, например, в случае рис.1 (на цифры внимание не обращайте) он говорит, мол, граф не двудольный. Что я делаю не так?
{
return c == 1 ? 2 :1;
}
public bool Bigraph(int c)
{
var stack = new Stack<Node>();
stack.Push(Nodes.First());
while (stack.Count > 0)
{
c = cc(c);
var node = stack.Pop();
node._IsVisited = c;
foreach (var edge in node.Edges.Reverse<Edge>())
{
var adjacentNode = edge.GetOtherNode(node);
if (adjacentNode._IsVisited == 0)
stack.Push(adjacentNode);
else if (adjacentNode._IsVisited == c)
return false;
}
}
return true;
}
Запилил, значится, проверку на двудольность графа. Но работает он не правильно, например, в случае рис.1 (на цифры внимание не обращайте) он говорит, мол, граф не двудольный. Что я делаю не так?
щито поделать
Могу научить просто так, все равно делать нечего. Дам тебе старт, а дальше сам
Курсы тогда уж пилите
Так уже стоит...
(моя математика на уровне 5 класса школы)
Нет, математика не нужна. Просто ставь визуал студио и погнал. Скачай учебник Троелсена и погнал учить матчасть языка. Но говорят, что окошко дрочерство уже малоприбыльно, и нужно полюбасу будет изучать веб , тобишь асп.нет
Ты говоришь что в веб идти, а не легче ли будет не асп, а какие нибудь нынче модные фреймворки учить? По моему и вакансий больше даже.
На C# можно писать трояны, но с ограничениями.
1) Ты не сможешь инжектировать код в native PE процессы потому что в них нет CLR
2) Ты не сможешь использовать всякую низкоуровненную поеботу
Но ты сможешь подключать kernel32.dll через P/Invoke и все же .NET дает много возможностей. Например можно инжектить .dll из .NET программы в нативный процесс (.dll должна быть нативной). Если уж сильно поебаться можно даже CLR подгрузить в адресное пространство другого процесса.
Писать трояны лучше все таки на чистом Си, хотя можно и на крестах если ты долбоеб ебанутый. Чистый Си это очень мощный язык который дает магическую силу доступа ко всем уголкам ОС. Можно анально насиловать антивирусы очередным супер хитрым способом запуска через huipizda.exe который является доверенным процессом и вообще по дефолту в исключениях
В C# есть два типа данных. Это value type и reference type. Типы value хранятся непосредственно на стеке в вызывающей области, например при передаче как параметр в функцию.
Типы reference хранятся в managed heap-е (куча). Reference типы не хранят непосредственно значения, они хранят указатель на место в куче, где это значение находится.
Value типы - все простые типы int, bool, float, decimal, byte и тд
Reference типы - обьекты, классы. String является классом, поэтому он reference тип.
Структуры являются value типами в отличии от классов. Поэтому есть большая разница в их использовании. Подробнее в гугле.
P.s
Value типы могут храниться в куче если они обьявлены как часть обьекта. Например
Class someclass {
int kek;
}
kek при создании инстансов класса будет храниться вместе с обьектом в куче.
В стеке value типы в основном хранятся когда их используют локально
В C# есть два типа данных. Это value type и reference type. Типы value хранятся непосредственно на стеке в вызывающей области, например при передаче как параметр в функцию.
Типы reference хранятся в managed heap-е (куча). Reference типы не хранят непосредственно значения, они хранят указатель на место в куче, где это значение находится.
Value типы - все простые типы int, bool, float, decimal, byte и тд
Reference типы - обьекты, классы. String является классом, поэтому он reference тип.
Структуры являются value типами в отличии от классов. Поэтому есть большая разница в их использовании. Подробнее в гугле.
P.s
Value типы могут храниться в куче если они обьявлены как часть обьекта. Например
Class someclass {
int kek;
}
kek при создании инстансов класса будет храниться вместе с обьектом в куче.
В стеке value типы в основном хранятся когда их используют локально
C++ хуйня. Все равно классы и прочая поебота не нужна в кодинге подобного софта, нахуй его таскать?
Как я понимаю, try-catch это по сути заглушка для экспешона, а по факту я должен написать исключение для данного действия?
Короче, в чем суть.
Вызывается folderbrowserdialog, и при нажатии "Отмена" программа крашится с эксепшоном. Я сперва думал обернуть в try-catch, но потом погуглил и понял что это не лучшее решение, так как мне поступить?
inb4 делай бочку
try-catch это обычная конструкция, которая затыкает исключение, ничего сверхъестественного в ней нет, используй как тебе удобно
Главное, чтобы ты знал, что вызывает исключение, и оно был тобой заранее предвидено
Если есть способ написать без выпадения в исключение, то пиши так, а если нет, то try-catch
>Bitmap btm = null;
Объявил - сразу присвоил
Объявил - сразу присвоил
Объявил - сразу присвоил
>dlg.Dispose();
Не надо. Руки убрал.
DialogResult=OK
"data:image\/png;base64,...=="
в файл картинки?
Convert.FromBase64String() не работает, это какой-то JSON формат, я с ним не знаком. Нужно вручную вырезать "data:image\/png;" из строки или есть способ получше?
Ты знаешь второй фреймворк?
В общем решения в стандартой библиотеке не нашёл, сделал так:
string jsonData = "data:image\/png;base64,BASE64_DATA";
Match match = Regex.Match(jsonData, @"data:image\\/(.+);base64,(.+)");
string format = match.Groups[1].ToString(); // "png"
byte[] image = Convert.FromBase64String(match.Groups[2].ToString());
лютая хуита конечно получилась особенно если картинки тяжёлые
В 2D сцене каждую точку можно представить массивом x,y, в 3D - x,y,z.
Да легально, если ты этот курс купил, а не скачал с торрента!
На практике даже двумерные массивы редко используют, а 4-мерные вообще раз в столетие.
Объект храниццо в куче (heap) там методы и остальная параша. А экземпляр содержит статичные поля класса. Как то так, вкратцы ХИХ ЛИЛЬНУЛ С ТОБИ
А если точнее то объект содержит статические поля и все методы, а экземпляр содержит не статические поля.
ЗЫ, создавая новый экземпляр класса, НОВЫЙ объект не создается, там идут ссылки на него, для экономии памяти.
Значит когда мы хотим вызвать метод, то мы обращаемся к экземпляру, а тот как-то ссылается на объект в котором лежит метод ?
Где про это можно подробно почитать?
Когда ты вызываешь метод, ты обращаешься к ОБЪЕКТУ, тому шо только ОБЪЕКТ хранит методы, экземпляр их не хранит.
Где почитать? Ну, говорят есть годная книжка http://www.ozon.ru/context/detail/id/137598683/ и/или http://shop.oreilly.com/product/0636920040323.do, еще вроде норм https://www.amazon.com/C-Players-Guide-2nd/dp/0985580127, они все в шапке есть, чекай шапку. Выбери 1 любую и с самого начала и до конца. Удачи.
> а тот как-то ссылается на объект в котором лежит метод
Если я правильно понял, каждый объект ссылается на свой тип, тип содержит ссылки на нативный код методов, скомпилированный из il-интсрукций, который расположен где-то в памяти.
охуенный ответ
goto тоже наверное используется "по необходимости"?
баба свадебное платье тоже надевает "по необходимости"?
Перечисления повсеместно. Если нужен тип который имеет ограниченное количество состояний + в коде лучше выглядит, каждое состояние в коде соответствовало определенному имени понятному человеку.
По структурам погуглил за тебя:
https://msdn.microsoft.com/en-us/library/ms229017(v=vs.110).aspx
https://stackoverflow.com/questions/521298/when-to-use-struct
https://softwareengineering.stackexchange.com/questions/92339/when-do-you-use-a-struct-instead-of-a-class
Да я шучу, все здесь сидят и помогают по фану.
float h = 4.0f;
float area = 1 / 2 c h; //0
float another_area = c h 1 / 2; //3
Анон, я по Вайтекеру учусь, нихуя не могу понять, почему area дает 0 (точнее, это могу понять: инт 1/2 = 0, после ноль умножается и дает 0), но вот второе. Типа, сначала мы получили флоат, и компилятор начинает приводить все к флоту или шо?
Спасибо, но мне непонятно, почему инты (1 и 2) сразу не привелись неявно к флоту. Во второй операции они правильно приводятся и считается абсолютно верно.
Я так понимаю, про неявное приведение типов лучше забыть, чтобы не было такого анал-карнавала?
1 разделить на 2 в инт = 0.5, это уже не инт, по этому 1 разделить на 2 = 0, от этого финал = 0.
Ну так оно да, но почему во второй формуле, которая идентична, инты привелись неявно к флоту?
Потому что ты делишь на 2 не 1.
Либо явно преобразуй (int)x * ...
Либо добавь "Число.f
Либо используй дабл и не ставь постфикс f.
Блин, голова кипит после работы, уже не могу ничего понять. Спасибо большое за помощь.
А есть что-нибудь, вот, как для дебилов, что объяснит на пальцах работу явного и неявного приведения типов в шарпе?
Тю, я ебан. Понял: если мы бы делили 1 / 2.0f, то есть инт на флот, приведение сработало бы, т.к. флот - более "широкий". А мы поделили инт на инт, получили 0 и дальше уже его с интами женили. Все, тут ебаный цирк на ВНИМАТЕЛЬНОСТЬ.
Хотя от статейки по приведению типов - не откажусь.
Не явно само приводится, если нет потери информации, например инт=дабл. А когда ты явно (сам) приводишь, ты ставишь печать кровью (своей), например double a = 1.55; ты его в инт кастуешь (int)a; это явное преобразование с потерей информации, прочитать можешь в любом учебнике.
double a = 1.234
int b = a - компилятор не даст, т.к. ты теряешь инфу при НЕЯВНОМ касте, нужно ставить свою подпись int b = (int)a - потеря тысячной части, чуешь?
Кнопилятор видит выражения одинакового приоритета и идет выполнять их последовательно.
В первом случае он видит сначало интовое деление, а потом уже работу со флоатами. Во твором случае он всегда работает со флоатами.
Да я же ньюфаг, пока что с такой вот простой книжки начал. Потом буду теребить что-то более сложное и серьезное.
Ничего, дойдешь до волшебного слова implicit и сможешь организовать себе персональный ад по неявному касту чего угодно к чему угодно. ГОЛОВУ НЕ НУЖНО БУДЕТ ЗАБИВАТЬ
Project/Project.sln <---- проект
Project/Project/Project.csproj <---- подпроект
Project/Project/Program.cs <---- исходник
Project/Project/bin/Debug/Project.exe <---- исполняемый
Где можно создать папку с ресурсами, которые загружает программа, и как правильно указать путь к ним? Не могу же я рядом с Project.exe всё класть, если заливать в репу то Project/bin вообще не должно существовать до компиляции.
Не отвечайте, сам нашёл.
Скажи лучше вот что, анон:
Стоит выбрать связку ngnix mono + ASP.NET MVC4, или ngnix + ASP.NET Core?
Сорян, имел в виду apache mono + MVC4, не ngnix
>Использование var запрещено, поскольку это нарушает принцип строгой типизации.
Блять, куда я попал?
С хуя-ли запрещено?
Что за фекальные цвета?
А нахуя ты это написал?
public int s;
}
Str testStr; <- почему не вызывается дефолтный конструктор, который инициализирует testStr.s?
Почему я могу писать testStr.s = 0, если объект не создан? Если создан, то какой конструктор вызывался?
Вызовется дефолтная имплисит имплементация, которую ты не можешь переопределить. Для каждого члена структуры позовется default(T).
Потомус что у структур можно не звать конструктор. У них стразу есть состояние по дефолту без явного вызова конструктора. От этого у них запрещены конструктры без параметров или с неполной инициализацией.
>Если создан, то какой конструктор вызывался?
Дефолтный без параметров. У стрктур его переопределить нельзя.
Но лучше явно позвать нужный конструктор и не ебать мозг этой тонкостью.
Ебаный цирк.
struct Str
{
public int s;
public int v;
public Str() // неявный конструктор мейд ин конпелятор, неявно будет вызван до первого обращения к пременной такого типа.
{
s = 0; // default(T) - null or 0
v = 0;
}
public Str() //Ошибка! Без параметров нельзя.
{
s = 42;
v = 1488;
}
public Str(int ns) // Ошибка! Неполная инициализация.
{
s = ns;
}
public Str(int ns) // Норм.
{
s = ns;
v = ns + 1;
}
}
Ебаный цирк.
struct Str
{
public int s;
public int v;
public Str() // неявный конструктор мейд ин конпелятор, неявно будет вызван до первого обращения к пременной такого типа.
{
s = 0; // default(T) - null or 0
v = 0;
}
public Str() //Ошибка! Без параметров нельзя.
{
s = 42;
v = 1488;
}
public Str(int ns) // Ошибка! Неполная инициализация.
{
s = ns;
}
public Str(int ns) // Норм.
{
s = ns;
v = ns + 1;
}
}
public class Yoba;
}
Почему можно сделать
using A.B;
var x = new Yoba();
но нельзя
using A;
var x = new B.Yoba();
?
>>995489
почему все что вы пишете не вяжется с реальностью?
struct Str {
public int s;
}
Str testStr;
Console.Write(testStr.s) <- ошибка компилятора "локальная переменная не инициализирована".
Получается
>Для каждого члена структуры позовется default(T)
неправда
>Дефолтный без параметров. У стрктур его переопределить нельзя.
Тоже неправда
Получается никакой конструктор не вызывается? вот этот прав?
>У них стразу есть состояние по дефолту без явного вызова конструктора. От этого у них запрещены конструктры без параметров или с неполной инициализацией.
Ну или вызывается конструктор, который не инициализирует поля
Все вяжется просто ты не вдупляешь.
Str testStr; // нет вызова конструктора
testStr.s = -1; // но переменная здесь уже есть и инициализирована 0
Console.Write(testStr.s); // тут все ОК т.к. был уже неявный вызов конструктора перед присвоением -1
Просто не заморачивайся и всегда явно делай:
Str testStr = new Str();
Image.FromFile или Image.FromStream падают с ошибкой
libpng error: invalid after png_start_read_image or png_read_update_info
Imagemagic говорит:
Mime type: image/png
Class: DirectClass
Geometry: 150x30+0+0
Units: Undefined
Type: GrayscaleAlpha
Endianess: Undefined
Colorspace: sRGB
Depth: 8-bit
Браузер и другие программы картинку открывают. только класс Image не может совладать с ней.
Никогда с таким не сталкивался. Попробуй ее пересохранить в нормальном редакторе.
Придётся походу тащить пакет ImageMagickSharp
ну ок, спасибо.
Одномерный массив, каждый элемент которого - двумерная матрица.
Потому что надо писать A.B.Yoba
В общем спустя полдня возни получилось сделать почти стандартными средствами, обнаружилось что Gtk.Image жрёт эти картинки. А Gtk-Sharp всё-таки легче использовать на любой платформе, чем всякие либы для работы с картинками с нативными зависимостями.
// Прочитать файл
Gtk.Image gtkImage = new Gtk.Image("test.png");
byte[] buffer = gtkImage.Pixbuf.SaveToBuffer("png");
Image image = Image.FromStream(new MemoryStream(buffer));
// Прочитать из памяти
Gtk.Image gtkImage = new Gtk.Image(new MemoryStream(buffer));
Image image = Image.FromStream(new MemoryStream(gtkImage.Pixbuf.SaveToBuffer("png")));
Потому что полное квалификационое имя типа A.B.Yoba .
Либо ты используешь его, либо указываешь его полный неймспейс (A.B). Сидеть сразу на двух стульях, когда часть неймспеса через using, часть через название типа -- нельзя.
Сделано для упрощения компелятора. Он просто подключает все использованые пространствах имен, без подробного анализа текста на поиск частично заданых пространств в именах типов.
Пиздец косноязычие, да.
Кроч, проблема вот в чем:
using A;
using E;
using F;
var x = new B.Yoba(); // в каком пространстве нужно искать Yoba - в A.B, E.B, F.B ?
Yoba может быть несколько разных, какого выбрать?
Это сразу все и порешили: нормально делай - нормально будет.
В случае конфликтов - ошибка компиляции, это логичное и очевидное поведение компилятора.
В с++ удобно делать
using std;
using std::chrono;
using std::chrono::time_point;
И если где-то ещё есть time_point, можно написать
using std;
chrono::time_point
other::time_point
В C# пришлось бы везде добавлять std:: (на самом деле так все и пишут, но это уже другая история)
Аналогично. Только с условием что название типа очень длинное. Нахуя экономить на четырёх буквах и писать var вместо string, например.
Думаю, что говнокод. Как исправить?
while (true)
{
try
{
Console.WriteLine("Введите ключ.");
int key = Convert.ToInt32(Console.ReadLine());
break;
}
catch (FormatException)
{
Console.WriteLine("Ошибка: не введено целое число.");
}
catch (OverflowException)
{
Console.WriteLine("Ошибка: введено слишком большое число.");
}
}
Используй Int32.TryParse. Без выброса исключений будет работать быстрее.
Ну после какого-нибудь Kudah.ToString() тоже можно
Надоело вручную ToString() писать
using System;
using System.Windows.Forms;
public class HelloWorld : Form
{
static public void Main ()
{
Application.Run (new HelloWorld ());
}
public HelloWorld ()
{
string S="test123";
CheckBox checkBox1 = new CheckBox();
checkBox1.Appearance = Appearance.Normal;
checkBox1.AutoCheck = true;
checkBox1.Text = S;
checkBox1.Height = 100;
checkBox1.Width = 100;
Controls.Add(checkBox1);
}
}
using System;
using System.Windows.Forms;
public class HelloWorld : Form
{
static public void Main ()
{
Application.Run (new HelloWorld ());
}
public HelloWorld ()
{
string S="test123";
CheckBox checkBox1 = new CheckBox();
checkBox1.Appearance = Appearance.Normal;
checkBox1.AutoCheck = true;
checkBox1.Text = S;
checkBox1.Height = 100;
checkBox1.Width = 100;
Controls.Add(checkBox1);
}
}
Напиши свой через рефлексию.
посоны, почему эта строчка так странно себя ведет и делает совсем не то что я ожидаю, при этом "st \"\"" вполне себе работает
в чем подвох? разве вложенные кавычки запрещены? если да то хуле оно вообще компилируется?
Как используя attribute based routing сделать в контроллере метод с необязательными параметрами?
https://pastebin.com/N5sVKFUt
Хочу чтобы этот метод вызывался по маршруту вроде "/Safe" или "/Sukebei". В старом ASP.NET Web API это так и работало, а в Core метод вызывается только если заполнить в URL все параметры.
Читаю документацию жопой, извините за тупой вопрос.
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/routing
{id?} defines id as optional
>класс для работы со строками как с массивом символов
Строка и так является массивом символом. Нахер тебе эта наркомания?
>Что нужно дописать, чтобы метод Length
Да вроже все и так правильно. В чем проблема то?
Эта наркомания, потому что задание такое дали, а этот метод возвращает постоянно ноль
Спасибо анон, а я аутист
> Я собрался делать свой первый проект на asp.net mvc 4.0 и размещать его на Ubuntu сервере с моно. Какие подводные ?
зачем
Это годный вариант или костыль? Или лучше вообще в джаву идти?
https://docs.microsoft.com/en-us/dotnet/articles/csharp/language-reference/operators/null-conditional-operator
Эквивалентно коду
if(_myResetTimer==null)
return _myResetTimer = new RelayCommand(ExecuteResetTimer);
else
return _myResetTimer;
Даже не знаю. Например то, что для вызова диалога и передачи одной переменной нужно написать 500 строк кода? http://www.global-webnet.net/IDontKnowAnyBetter/post/2015/11/20/mahapps-custom-dialog-mvvm-light-and-me
И то, что в итоге получается https://www.youtube.com/watch?v=FKhidKIgLY4
И это с использованием фреймворка, без него нужно было бы писать сервисы с нуля.
Если ты про десктопное приложение, то Windows Forms(поддерживается Mono).
Если про мобильное, то Xamarin.
Кстати, тут недавно один кекс на хабре писал про кросплатформенный UI фреймворк. Но я сам с ним не сталкивался и хз насколько оно жизнеспособно.
https://habrahabr.ru/post/328684/
>Ты отстал от жизни. Загугли ".NET 2015"
Прошло уже 2 года.
А NIET Core как не было, так и нет.
У меня поставился 1.3 на линукс 64 битный, простые проекты собирает но не может поставить пакеты, жду 2.0
А как насчёт конструктора интерфейса мышкой? Для Gtk# есть дизайнер в Monodevelop и всё кроссплатформенное
А линукс?
Пока для НЕТ кора не будет написано 100500 библиотек на все случаи жизни, не надо и использовать, так можно просто палочкой потыкать и велосипед написать, если времени много. Банковский софт еще не скоро перейдет на нет кор
Gtk3 скоро станет абсолютным стандартом для всех дистрибутивов, его двигают Red Had и Cannonical. А Gtk# самый крупный биндинг который поддерживается дочерней кампанией Microsoft.
Отличный выбор
public string A;
public string B;
}
Как запретить конструктор new Yoba { A="a" } без B?
>100500 библиотек на все случаи жизни
Приведи конкретные примеры. Например, Json.net и AngleSharp есть.
Так получается что снаружи класса есть GetA(), но нет SetA(), что не так?
>public string A { get; private set; }
>не работает
не ври, конструктор через курли брейсерс не работает.
Я и есть ньюфаг, который только что давал ответ. Не вижу в этом ничего плохого.
ЕСЛИ ты не собираешься присваивать ему значение. оставляй если все-таки будешь, потому что без set твое проперти становится read only.
А, понятно. Я сначала делал статические методы и формировал класс внутри него, а когда передал на обычные конструкторы не понял что можно убрать private set потому что в конструкторе можно изменять свойства даже если указан только get.
.....
private const double EPSILON = 0.0001;
static void Main(string[] args) {
Console.WriteLine("# EPSILON = "+EPSILON);
....
Console.WriteLine("\n# Метод Итераций");
IterationMethod(-0.85, -0.25);
IterationMethod(1, 1.5);
IterationMethod(2, 3);
....
static private void IterationMethod(double a, double b) {
double curX = a;
if (F(a) * DDF(a) > 0)
curX = a;
else
curX = b;
double nextX = G(curX);
int ITERATIONS = 0;
while (Math.Abs(curX - nextX) > EPSILON) {
//выдает одну итерацию
if (ITERATIONS >= 100)
{
Console.WriteLine("Метод расходится! Последнее значение до остановки, x= " + Math.Round(nextX, 4));
return;
}
nextX = G(curX);
curX = nextX;
ITERATIONS++;
}
if (ITERATIONS == 0) {
Console.WriteLine(" Метод расходится! Последнее значение до остановки, x= " + Math.Round(nextX, 4));
return;
}
Console.WriteLine(String.Format("Корень x= {0}\nЧисло итерация метода= {1}\n", Math.Round(nextX, 4), ITERATIONS));
}
.....
private const double EPSILON = 0.0001;
static void Main(string[] args) {
Console.WriteLine("# EPSILON = "+EPSILON);
....
Console.WriteLine("\n# Метод Итераций");
IterationMethod(-0.85, -0.25);
IterationMethod(1, 1.5);
IterationMethod(2, 3);
....
static private void IterationMethod(double a, double b) {
double curX = a;
if (F(a) * DDF(a) > 0)
curX = a;
else
curX = b;
double nextX = G(curX);
int ITERATIONS = 0;
while (Math.Abs(curX - nextX) > EPSILON) {
//выдает одну итерацию
if (ITERATIONS >= 100)
{
Console.WriteLine("Метод расходится! Последнее значение до остановки, x= " + Math.Round(nextX, 4));
return;
}
nextX = G(curX);
curX = nextX;
ITERATIONS++;
}
if (ITERATIONS == 0) {
Console.WriteLine(" Метод расходится! Последнее значение до остановки, x= " + Math.Round(nextX, 4));
return;
}
Console.WriteLine(String.Format("Корень x= {0}\nЧисло итерация метода= {1}\n", Math.Round(nextX, 4), ITERATIONS));
}
Ну во-первых, я не вижу одной итерации, я вижу много итераций. В методе итераций 10, в методе хорда от 6 до 27. Что не так?
do
{
nextX = G(curX);
ITERATIONS++;
if (Math.Abs(nextX - curX) >= EPSILON && ITERATIONS == 100)
{
//Console.WriteLine("Метод расходится! Последнее значение до остановки, x= " + Math.Round(nextX, 4));
error = true;
break;
//return;
}
curX = nextX;
} while (Math.Abs(curX - nextX) > EPSILON);
Очевидная проблема в алгоритме, а не в C#. Кури лекцию снова.
// Асинхронный метод, одновременно работают несколько таких
async Task<Result> DoRequest {
return new Result(await httpClient.GetAsync("url")); // Вызов конструктора Result
}
class Result {
// Конструктор
public Result(HttpResponseMessage response) {
var content = response.Content.ReadAsStringAsync().Result; // Блок
}
}
Несколько DoRequest могут выполняться при том что создают объект с таким конструктором?
Я один про питоновский yield подумал, когда увидел это творение?
Хочу узнать, под какие платформы разрабатывается такой софт. Например, писать сегодня большой проект на WinForms никто не будет, правильно? А это значит, что поддержка винды XP отпадает, поскольку WPF полноценно работает начиная с 7ки. Вот например я собрал проект с Catel под фреймворк 4.0 (который теоретически должен работать под XP), однако XP его не ест и выплевывает с ошибкой.
Далее, макось. Под нее пишут такой софт? А под линукс? Или пишут три разных проекта на разных технологиях и на разных языках?
1) Result блокирует и убивает весь смысл использования TAP.
2) Делать такое в конструкторе - это зашквар.
3) Для того, чтобы скачать строку есть метод GetStringAsync.
4) HttpClient и HttpResponseMessage IDisposable и должны быть обернуты в using.
> Хочу узнать, под какие платформы разрабатывается такой софт.
Винда онли.
> Или пишут три разных проекта на разных технологиях и на разных языках?
Их вообще не пишут. WPF в кровавом энтерпрайзе - это B2B, клиентское ПО для офисного планктона. Что барин даст, на том и будут работать, а барину проще всего купить своим рабам дешёвые офисные компы с предустановленной виндой.
Да, ты написал про WPF. Пора спать, а то я даже не заметил.
Я сомневаюсь, что кто-то будет что-то писать сегодня с нуля под WinForms, только поддержка очень-очень древнего говна. Хотя он, вроде как, есть в Mono на линуксах, но я в этом вопросе не шарю, поэтому не буду лишний раз пиздеть.
WPF, на самом деле, тоже уже легаси. Сами M$ говорят переходить на 10 и UWP, рынок переводит всё в веб, вакансий практически нет.
Погуглю для интереса.
Но честно говоря, я слабо представляю, как в наших реалиях владелец мелкого бизнеса решает выбросить старые компы на ХР НЕ НУ А ШО ВСЁ ЖЕ И ТАК РОБИТ и поменяет их под 10ку. Поэтому меня, пожалуй, больше всего интересует WPF с поддержкой ХР - 10. Сойдёт?
> WPF с поддержкой ХР - 10
Я не знаю, как WPF себя ведёт под XP или Vista, мне доводилось педалить продукты, которые были рассчитаны только на 7+.
Ну, там не в одном месте, а прямо скажем везде так.
https://raw.githubusercontent.com/stamparm/EternalRocks/master/samples/cf8533849ee5e82023ad7adbdbd6543cb6db596c53048b1a0c00b3643a72db30
https://raw.githubusercontent.com/stamparm/EternalRocks/master/samples/3b4497c7f8c89bf22c984854ac7603573a53b95ed147e80c0f19e549e2b65693
https://raw.githubusercontent.com/stamparm/EternalRocks/master/samples/a77c61e86bc69fdc909560bb7a0fa1dd61ee6c86afceb9ea17462a97e7114ab0
Значит правильно сделать
class Result {
public static async Task<Result> FromResponseAsync(response) {
var content = await response.ReadAsStringAsync()
}
}
?
Не самая удобная практика, вот я и решил делать нормальный конструктор
Насчёт IDisposable почитаю так и быть, я думал там сокеты/файлы не сразу, закрываются, оказалось посложнее тема
Нет, подразумеваются стат члены на куче.
var a = new A(); // a - экземпляр типа
var t = typeof(A); // t - объект типа
В объекте типа хранятся статические поля, указатели на виртуальные функции и прочая метапоебота. Каждый экземпляр A имеет ссылку на объект t, который всего один. Ты можешь её получить с помощью метода GetType(), который наследуется от Object.
А если я кому скажу, что объект и экземпляр это разные вещи, как им пруфануть после того, как меня обоссут?
Объект (object) и экземпляр (instance) - это одно и то же. Просто переводчик по понятным причинам не захотел писать "экземпляр типа" и "экземпляра типа экземпляра типа", иначе бы все точно ебанулись. У Рихтера есть же наглядная диаграмма, поясняющая, о чём речь.
У него есть факт, что есть некий один объект у типа и много разных экземпляров. И это у него разные вещи. А в ООП это одно и тоже, так что непонятно как вообще соотносить в разговоре про ООП с другими людьми. Даже люди, которые кодят на сишарп не используют такую терминологию и смотрят на меня с жалостью.
Такой вариант, по-моему, лучше, но если этот метод не делает ничего кроме вызова другого метода и создания Result, то он не нужен: нет смысла плодить сущности.
Ну так проблема в том что контент асинхронно читается и хедеры с HttpStatus тоже нужны. Получается два варианта:
return new Result(response, await response.Content.ReadAsStringAsync())
return await Result.FromResponseAsync(response)
вот я и выбрал второй
Ок, это в любом случае дело вкуса.
>>996960
Не вижу смысла бросать исключение, которое ты тут же ловишь и ещё и проглатываешь, к тому же ты проглатываешь не только его, но и другую шляпу, которая может выкинуться из клиента. Имхо, вот так красивше выглядит.
https://pastebin.com/HBNjKa7v
> Может ли расширяющий метод быть конструктором
Нет. Это всего лишь сахар, который заменяется компилятором на вызов статического метода.
> который задаст значения приватных полей
Только через рефлексию.
Да он постоянно исключения кидает, внимание достойны только ошибки SSL (если клиент не может делать реквесты по HTTPS, какая-то проблема с ключами в среде)
Я почитал что finally выполняется перед return и остановился на таком варианте
К слову, если ты не хочешь, чтобы метод падал с исключениями, то лучше обернуть вообще всё тело метода в try-catch.
>>996935
Что-то типа такого.
https://pastebin.com/sTMjHYPf
Создать проект -> Классический рабочий стол -> Приложение WPF/Консольное приложение
Ясно, пилим охуетильные костыли
Есть один словарь со словарями: System.Collections.Generic.Dictionary<char, System.Collections.Generic.Dictionary<int, char>>;
Значения в котором представляют собой нечто вроде: e : [g,o,l].
Так вот. Подскажи пожалуйста, как таки очистить словарь от дубликатов формата e :[g,o,o]
Ну или же, избавиться от подобных элементов на стадии заполнения словаря (код - https://pastebin.com/V9Y7a2ZJ)
Я видимо не так выразился. Интересует сам алгоритм, т.е. как нарисовать, чтобы не наезжало
1. Dependency Injection
2. IoC Container
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection
https://simpleinjector.readthedocs.io/en/latest/wpfintegration.html
Читай.
Если вкратце, то инъекция зависимостей - это одна из разновидностей IoC (инверсии управления). Суть в том, что объект не сам создает свои зависимости, а получает их извне, например, через конструктор или свойство.
Когда говорят IoC-контейнер, то обычно подразумевают DI-контейнер - инструмент для создания иерархии зависимых объектов, автоматической инъекции зависимостей, вызова инициализаторов и прочего говна.
Короче, прочти по ссылкам, и станет понятно, что это и зачем оно нужно.
Речь о том чтобы подсунуть другую библиотеку с тем же названий функций, но другим кодом, или что?
>2k17
>писать 200 строк кода, чтобы открыть диалог и передать параметры
Алё, вы серьезно? И это блядь good practice? Тьфху блядь.
Для деревьев есть алгоритм Efficient Sugiyama.
Ну или можешь сразу готовую либу использовать, например Graph.Sharp, там уже реализованы layout для деревьев.
Но это для более сложных деревьев. Для бинарных, которые относительно просты, можно и свой велосипед нагородить. но зачем?
>>997335
Короч, все равно есть вопрос по этому. Можно ли как-то перенести эту ебучую конструкцию base() в сам конструктор?
Сделай конструктор с параметром.
Речь о том, чтобы уменьшить зацепление. Возможность подсунуть разные реализации внедряемых абстракций - это один из бонусов.
Есть ли люди которые перешли на дотнетовский стек, после того как писали достаточно долгое под юникс-подобные системы?
+15, питоноолька.
> Как C# взаимодействует с БД?
Будь конкретнее. Вариантов много от sqlConnection до entityframework
> например hibernate
Фу таким быть
>Будь конкретнее. Вариантов много от sqlConnection до entityframework
меня интересуют актуальные решения, которые широко используются.
Convert.FromBase64String(message);
Вот, аргументом не принимается строка, которая не делится на 4.
Ну, я по-пацански сделал цикл
for (int i = 0; i< message.Length%4;i++) {
message += ' ';
}
Но тут одна проблема, если плюсовать " " - ебашит ошибку, но если вместо пробела дать "1" или что-то другое - всё нормально работает. Какого хуя? Может есть способ попроще это решить?
Azure.
Широко используются все. Тут все дело в конкретной задаче.
sqlConnection для ультрабысрой скорости работы. Но нужно знать sql. EntityFramawork для тех кто упарывается по сущностям и любит прописывать всякие связи.
Уровень собеседоания зависит от уровня прокачки конторы. Могут просто спросить принципы ООП и описать их словами. Могут предложить решить задакуна 15 минут. Могут дать тестовое задание на дом беги от этих пидорасов, могут и не взять даже если решишь а сами твое решение будут использовать.
> Часто к асп просят жс?
Могут спросить и тайпскрипт. Опять же, зависит от того на чем контора пишет.
Да что-то типо ексель таблица бы как в аксесе если знаешь
yourBitmap == null
NaN
Ты не понял вопрос, мне интересно, чем заполнять массив, что бы оно работало. Простые пробелы не принимает.
Чтоб работало что?
Изучаю вот ASP.NET MVC и я охуел. Тратится уйма времени для настройки всей этой поеботы, за это время я мог бы уже пофиксить любые баги без ебучих юнит тестов и прочей хипстоты. Сука, такое ощущение что сам создаю проблемы и потом сам же их решаю.
Та же хуйня от MVVM. Теоретически, если это будет какая-то невъебенная по размерам компания с огромным по размерам продуктом, то тогда МОЖЕТ БЫТЬ то что мы делаем сейчас кому-то и пригодится.
И здесь все-таки насрал, а. Ой мудель блять.
Я вот так сделал:
class CircleList<T> : List<T>
{
new public T this[int index] => base[index % Count];
}
Но код
CircleList<char> alphabetlower = "abcdefghijklmnopqrstuvwxyz".ToList() as CircleList<char>;
не работает. Что поменять?
Не читай это говно, бери Троелсена
У тебя нихуя не ясно. Начиная с того, что дано, и заканчивая тем что нужно получить.
Как превратить int[,] в Cell[,], учитывая что в массиве только 1 и 0?
Мозг поменяй. У тебя бракованый.
>"abcdefghijklmnopqrstuvwxyz".ToList()
Сделай вот этому говну GetType() и убедись, что у тебя List<Char>. а он в свою очередь внезапно ни разу не является CircleList<Char>. Поэтому строка
>as CircleList<char>
возвращает всегда null.
Как это пофиксить придумай сам. Моском надо пользоваться, иначе пиздец.
Он 8-битные процессоры поддерживает, Z80 например?
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour {
Rigidbody2D rbody;
Animator anim;
// Use this for initialization
void Start () {
rbody = GetComponent <Rigidbody2D> ();
anim = GetComponent <Animator> ();
}
// Update is called once per frame
void Update () {
Vector2 movment_vector = new Vector2 (Input.GetAxisRaw ("Horizontal"), Input.GetAxisRaw ("Vertical"));
if (movment_vector != Vector2.zero) {
anim.SetBool ("iswalking", true);
anim.SetFloat("input_x", movment_vector.x);
anim.SetFloat("input_y", movment_vector.y);
} else {
anim.SetBool("iswalking", false);
}
rbody.MovePosition(rbody.position + movment_vector Time.deltaTime 120);
}
}
using System.Collections.Generic;
using UnityEngine;
public class PlayerMovement : MonoBehaviour {
Rigidbody2D rbody;
Animator anim;
// Use this for initialization
void Start () {
rbody = GetComponent <Rigidbody2D> ();
anim = GetComponent <Animator> ();
}
// Update is called once per frame
void Update () {
Vector2 movment_vector = new Vector2 (Input.GetAxisRaw ("Horizontal"), Input.GetAxisRaw ("Vertical"));
if (movment_vector != Vector2.zero) {
anim.SetBool ("iswalking", true);
anim.SetFloat("input_x", movment_vector.x);
anim.SetFloat("input_y", movment_vector.y);
} else {
anim.SetBool("iswalking", false);
}
rbody.MovePosition(rbody.position + movment_vector Time.deltaTime 120);
}
}
>anim.SetBool ("iswalking", true);
>else {
>anim.SetBool("iswalking", false);
Говно этот код, а вообще судя по всему говорит анимации что персонаж идёт и скорость движения по х и у, перемещает его.
Копирование регистра j в регистр i.
2d array
Про батники
Они же cmd файлы. Они умеют выполнять файл и на основе его выходного кода совершать какие то действия. Или не совершать.
Не, в батниках мне уже поздно что-то делать, так как там куча кода должно работать которая к тому же зависит от некоторых свойств в консольке.
Я расчитывал что Exit это просто исключение, обложить все блоком finally в котором и провести эту операцию, но хз сработает или нет и если да, то корректно ли так делать.
Exit это выход. К исключению никакого отношения не имеет. Если это твоя прога и ты устанавливаешь выходной код, то сам и пиши обработчик такого случая до того как вызвать Exit.
Ясно, спс. Просто у меня много точек где есть эксит, придется их на выброс исключений поменять и в мэйне перехватывать.
Что за хуйню я читаю.
Нахуй тебе исключения? Если это твой код, почему ты не можешь просто делать что нужно там где это нужно?
Ну так нужно сделать одно и то же действие по зачистке перед выходом, ты предлагаешь каждый раз его переписывать перед каждым вызовом exit???
Можно написать один метод который делает очистку и производит Exit и вместо выхода вызывать его. Можно даже упороться и переопределить Exit, если такое возможно.
Как запилить автозамену? например я в эклипсе делал автозамену букв sout -> System.out.Println. Как например заменить в студии cwl на Conlsole.WriteLine ?
Почему вместо адекватного комментирования фрагмента через ctrl+/ нужно нажимать аж 2 комбинации клавиш?
И это я только азы постигаю.
Ну да, похоже лучше просто метод отдельный сделать. Чето я с экцепшенами перемудрил, хотя они и непредвиденные исключения обрабатывали бы, но это все равно неправильно так как реакция на все ошибки должна быть предусмотрена, а лепить общий обработчик это не по науке.
>>998792
Ёбу дал? В студии охуенные поиск/замена с регулярными выражениями (ctrl+H)
>Ёбу дал? В студии охуенные поиск/замена с регулярными выражениями (ctrl+H)
я имел ввиду настраиваемую автозамену на лету а не через ctrl+h.
спасибо, но это вск равно пиздец
public string name { get; set; }
Это ты запилил свойство. Реализовывать не обязательно, если не нужна особая логика на присваивание/считывание
да. компилятором неявно создается приватное поле и публичные get и set, в которых содержится базовая логика присвоения и чтения.
Пару либ и один проект на .net core. В принципе поддержка .net core в простых проектах добавляется парой строк.
Да. Некоторые используют dapper или что-то самописное, если нужна скорость. Некоторые nhibernate, но за не ничего не скажу.
const поля в классе не создаются, это вроде #define из Си?
Ах, ну и комманды там не нужно как-то реализовать - прямая привязка любой кнопки к методу в любом контроллере. Просто берешь и пишешь.
C# охуенный язык, но WPFам еще очень далеко до джавы и судя по всему, wpf уже никодга и не догонит - не обновляется уже 6 лет
Ну да.
WPF и WinForms никому не нужны, сейчас все пишут для веба. Не видел ни одной вакансии, чтобы был десктоп на .NET. Потому и не будет никакого развития.
Толсто.
Берут легаси на паскале, вешают на него модную веб морду на джаве и все это подпирают ехешники на шарпе. В результате у клиента заебатый вебинтерфейс, а что крутится на сервере никто не видит.
мимо-erp-разработчик
>>999144
Ну ок, ты главный архитектор, и у тебя задача написать с нуля ERP для малого бизнеса в виде сети ресторанов, например. У сети ресторанов есть "серверная" пекарня у главбуха за столом, а в главных залах в разных частях города стоят клиентские пекарни со сканнерами штрихкодов/принтерами чеков/банковскими терминалами. На чем писать будешь?
>Берут легаси на паскале, вешают на него модную веб морду на джаве и все это подпирают ехешники на шарпе
Почему бы всё не написать на .NET? Или всё на джаве?
> Ну ок, ты главный архитектор, и у тебя задача написать с нуля ERP для малого бизнеса в виде сети ресторанов, например.
И ты такой выходишь на рынок и тебя ебет р-кипер написанный на говне под DOS. Но у которого 40000 ресторанов в активе.
Visual FoxPro
>>999162
Ты тоже раз можешь ответить на вопрос про язык для подобной системы >>999145 раз начал выделываться.
Потому что мелкософту не сидится на месте и он хочет конкурировать ради конкуренции. Джава в принципе всех утсраивала? но мелкомягкие решили что могут лучше и таки смогли. Но всем уже похуй.
Конкретизируй вопрос. Ты описал пример с ресторанами достоточно подробно, но когда получил ответ по ресторанам решил притворится абстрактным.
>>999171
Паскаль та мпотому, что на нем все и написано. А всякие джавы только отображают данные. Можно напистаь все на джаве. Но это во-первых, человекочасы. во-вторых, джава-пидоры не понимают нихуя в исходниках на паскале. Для них это как скрежали мертвого моря. Вот и приходится тянуть все как есть, потому что оно работает.
>во-вторых, джава-пидоры не понимают нихуя в исходниках на паскале
Стекломою объелся? Нынешние петухи с курсов жабараша может и не понимают, а в нулевых во всех энтерпрайзных вакансиях был стек Delphi + Java + Oracle
Я не он, но выпендрюсь.
Итак ты хочешь писать софт под ретсоран. И вот проводишь анализ рынка и охуеваешь. Твои кассы с подключенными чекопечатающими машинками работают под DOS. При этом они замечательно тянут и винду, но нахуй на кассе лицензионная винда? Линукс? А какой дистрибутив? А он точно встанет на кассы в другом ресторане? А дрова на сканер встанут? А вы будете ебаться с натсройкой системы если что то пойдет не так? ты ведь уже освоил все азы работы в линуксе, да?
Итак твоя система это DOS. Остается выбрать язык. Питон и руби отпадают сразу, т.к. нет компилятора. Потом внезапно оказывается, что и джава проводит ебе по губам и шарп туда же. В итоге ты осознаешь, что тебе нужно изучать паскаль или хотя бы Сиб что бы написать что то, что будет работать у клиента. А ты этого нихуя не умеешь и быстро закрываешся.
Вот кто в нудевых устроился, он так там и сидит. А в реальном мире среднестатистический соискатель это выходец из олчередного инкубатора в 10 курсов джавараша. некоторые сразу отказываются изучать шарп, т.к. они "умеют только джаву".
Лучше readonly.
У const есть подводный камень в необходимость перекомпеляции зависимых от константы модулей, а readonly модули подхватывает без этого.
Еще const нельзя применить к ссылочным типам.
Все это так ровно до того момента, пока ты не увидишь винду на терминале. Что будешь делать дальше?
> чтобы по клику вне текстбокса поменялся цвет внутри формы и стал невидимым сам текстбокс?
someClickEvent
{
this.Color = Color.Kori4neviy;
this.textBox.Visibality = false;
}
А что тебе не ясно? Еще скажи, что не знаешь, как выглядят терминалы в магазинах/кафе/ресторанах, и что не знаешь для чего они нужны.
Спасибо большое!
Ясно.
Это копия, сохраненная 11 июля 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.