Это копия, сохраненная 27 августа 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Прошлый >>999275 (OP)
Не забывайте оформлять свой код https://ideone.com/ https://pastebin.com/
Так вот, в чем смысл кортежей? В примере с typle все высосано из пальца.
Ни разу не приходилось их использовать.
Я использовал как ключ для ассоциативного массива. Правда потом всё таки пришлось заменить на вручную написанный класс, потому что GetHashCode во встроенном типе выдавал слишком много одинаковых хэш-кодов для разных данных.
Сейчас используется когда программист лениться сделать нормальный dto. С сахаром из C# 7.0 можно даже не пидорасить за это на кодревью.
Ну возможно есть в этом смысл. Но взять на пример веб приложение, мне зачастую нужно возвратить некий обьект для сериализации в json и когда лишний класс мне нужен я просто использую анонимный тип.
BinaryWriter bw = new BinaryWriter(fs);
Random rnd = new Random();
for (uint i = 0; i < 10000; i++)
{
bw.Write(rnd.Next(0, 10000));
}
Почему пишет в файл символы, а не нужные мне рандомные цифры?
System.Diagnostics.Process.Start("text.txt");
fs.Close();
bw.Close();
Так тебе надо текст в файл писать или чтоб быстрее? Тогда сам преобразовывай числа в бинарное представление, а потом и запихивай в BinaryWriter.
Так, блэт, почему символы а не числа?
Он пишет бинарное представление числа. Т.е. например число 56, он записывает так: 56 00 00 00
Когда ты это открываешь блокнотом, он читает файл как массив текстовых символов, т.е. в данном случае он увидит символ '8' (у которого код 56), и после него три символа с кодом 0.
Между прочим это задание злоебучего GeekBrain
Хорошо, что я с торента спиздил, а не покупал это говно
Объясни в чем прикол
> Между прочим это задание злоебучего GeekBrain
Мда... Вот после таких заданий вы приходите ко мне на собеседование и я обещаю вам перезвонить.
А по мне так out удобнее. Можно писать такие-то конструкции: if(dict.TryGetValue(key, out var value) && value == 0) { ... }
Каких графов? И гуй какой используешь: WinForms/Xamarin/WPF/UWP?
WinForms идеально было бы, но и WPF подойдет.
Я про совсем другой профиль использования.
var (isValid, result) = TruGetZalupa()
if (!isValid) throw new xui();
return result;
идея понятна? Так гораздо понятнее и логичнее код выглядит. У тебя не будет кода "попытайся сделать чето и в случае успеха верни рефом, а не главным результатом". Будет код, который возвращает нормальную модель по типу Validation Result. Реф значения часто говорят о залупе в коде.
ясен хуй, я так и пишу на шестом. Я не знаю как тебе еще идею донести, что этот сахарок очень редко когда нужен - когда нормальную модель мало смысла создавать.
Это другой анон. И на шестом ты так не напишешь из-за inline объявления out переменной
Чаму ildasm.exe такой убитый? При попытке просмотра метаданных, закрывается. Нашел на стекОверФлоу, гайд по поиску рабочей версии. Перешарил свои Microsoft SDKs, одна из версий таки завелась. Сегодня, запускаю этот же .exe, и что бы вы думали? Крашит при попытке просмотра метаданных. Немного еще поковырявшись, выяснилось, что с .dll он работает нормально, а на .exe крашит.
Java
Но вот Xamarin как-то работает на различных платформах, даже на iOS, что там используют?
Xamarin - мобильные платформы на шарпе. Линь никому не упал, никто к нему .net прибивать и не стал.
Mono
var не заметил, в остальном разницы нет. out var вообще трешак какой-то. Нахер такой метод тогда нужен?
stream
...
endstream
Как декодировать их содержимое?
ребята, тут был тред про программирование на языке Goviajii, куда он делся? Есть пара вопрос по имлементации алгоритма верстки
Какой метод? TryGetValue выполняет свой контракт, а именно не бросает эксепшн если элемента нет. С сахарком из 7.0 и инлайн декларейшном out переменных TryGetValue вполне ок и выглядит, и работает.
Таплы, с другой стороны, всегда пахли хаком. Ты вводишь implicit DTO объект в свой код потому что тебе лень ввести полноценный тип. Без сахара из 7.0 за такое на нормальном кодревью рвут жопу потому что разбираться что такое этот ваш Item420 никто не хочет.
С сахаром из 7.0 таплы пойдут на роль poor man's DTO. Это и есть их истенное предназначение.
да я о том же - хуй пойми где это нужно, очень мало сценариев.
https://pastebin.com/yVtpZV4U
Hide просто делает форму невидимой. Close это керестик в правом верхнем углу.
https://msdn.microsoft.com/ru-ru/library/system.windows.forms.form.close(v=vs.110).aspx
Слющай да, сядь чаю попей. Зачем спешишь смешишь, да? Попей чаю, может умная мысль придёт. /dev/random /dev/urandom всё уже "записано", да. Читай- нехочу.
> можежет подчисить форму и у меня вылезет эксепшн
Ну так добавь strong ref на форму куда-нибудь, тогда и не подчистит. Что за малышня, не умеют даже утечки памяти создавать.
yield return new WaitUntil(() => x > 0)
можно её свернуть как в плюсах:
#define wait ..
?
Нет. Программирование на макросах - хуёвая затея. Если хочется писать меньше - введи переменную или выдели функцию.
попросили написать код на с#, а я до этого только на с++ писал
после нескольких часов получилось вот это -
https://pastebin.com/QH7uLdse
т.е. в цикле на каждой итерации создаются новые потоки
после каждой итерации ждем их завершения
но этот код по какой-то причине работает раз в 10 быстрее на 1 потоке
16 секунд на одном потоке
~3 минуты на 4ёх
подскажите, пожалуйста, где я ошибаюсь
повторюсь, с шарпом почти совсем незнаком
тебе именно с тредами задача была поставлена? В шарпе давно есть обрастракция над ними, которая в большинстве случаев подходит и удобнее - TPL и конкретно тип Task. Запускаешь параллельно таски
А почему в 10 раз быстрее на одном потоке - хз. Зависит от того, чем потоки заняты.
тогда сделай с тасками:
var tasks = Enumerable.Range(0, threadCount).Select(x => Task.Run(action));
Task.WaitAll(tasks);
Я хз что именно у тебя там потоки делают. Но если у тебя там моссаив объектов и над каждым из них нужно что то сделать, то копай в сторону Parallel.ForEach() или AsParallel() методов.
Треды в сишарпе(да и вообще) очень тяжёлые, на них нужно выделять контекст, запускать, выделять под них время, да ещё и при малом количестве вычислений контекст свапинг(сохранение и загрузка состояний при разделении времени между тредами) начинает жрать больше, чем вычисления
>>1014981
Вот этот анон правильно говорит, таски реализованы в виде пула тредов, где их не надо каждый раз заново создавать, поэтому хотя бы издержек будет меньше.
>при малом количестве вычислений
точнее наоборот, при огромном количестве очень простых вычислений, на видеокартах такое норм, потому что там именно что отдельные процессоры работают, а тут несколько ядер, у которых немного не настоящая параллельность вычислений, которая просто скачет по тредам, выполняя каждый по несколько наносекунд перед тем, как перейти к следующему.
Похуй, как тебе удобно, можно даже в IDE.
И что тебе не нравится в моём коде? Или может ты русофоб и не любишь переменные с русскими именами?
Скорее всего, тяжело воспринимать смесь ключевых слов языка и названий функций/типов из системных библиотек на ангельском и переменных и пользовательских типов на русском.
К тому же ты непоследователен
>while(chislo != 0) {
> for(uint i = 0; i < 10000; i++) {
Т/е даже на таком простом уровне - код говно.
> ты непоследователен
Функция main спопипащена из поста того анона. Я только добавил парочку using для закрытия записи файла.
Не уверен, что использование чистого байта, лучше чем (byte)'0', понадобилось время, чтобы понять что это символ нуля, как и для пробела.
Два варианта:
1) В коде есть локи и каждый поток входит в этот лок и этим самым убивает всю многопоточность
2) результаты от каждого потока ты кладешь в один и тот же массив, тем самым триггеришь false sharing
Вообще, идея про таски самая годная. Если таски не подходят - смотри на локи или false sharing.
Для таких как ты - шарп поддерживает юникод в названиях переменных и классов. Не надо ебать чужие глаза транслитом, пиши на русском если не "руссофоб".
> названия переменных или классов на русском или в транслите
> крики каких-то безумных про русофобов
Ах, да, это же тред сишарподебилов.
>2) результаты от каждого потока ты кладешь в один и тот же массив, тем самым триггеришь false sharing
переписал на таски
результат кажется стал быстрее
но энивей проблема осталась, видимо действительно из-за одного и того же массива в потоках, спасибо
попробую его разделить и помещать в каждый поток отдельный массив
Как это вообще будет? Они достигнут лимит threadpool и потом настакаются и займут его навсегда? Или как
проблема действительно была в false sharing
спасибо всем, кто отозвался
Зачем нужен семафор? Хороший способ получения линейной скалируемости - спиздить map reduce из функционального программирования. Каждый тред получает свой кусок начальной даты, каждый тред высирает свой кусок конечной даты. После завершения работы всех тредов результаты каким-то образом объединяются. Во время работы никто не пишет в общую для тредов память (читать можно)
Тред пул, как и любой ресурс пул, имеет ограниченное кол-во тредов в своем распоряжении. Остальные будут весеть в планировщике со статусом "Таска Запланирована", её код не будет выполняться до тех пор пока другая таска не закончится и не освободит тред. Если таска должна работать долго стоит при старте дать планировщику хинт, что таска является LongRunning. В этом случае под неё выделится отдельный тред.
С тысячей LongRunning тасок процессор будет тратить дохера времени на переключение контекстов и производительность будет страдать.
Это не избавит тебя от false sharing, о котором кукарекал тот анон. Суть той проблемы в вымывании cache line и размещение по отдельным массивам ничего не решит. Но что важнее, к твоей просадке относится едва ли.
Так, я разобрался. SemaphoreSlim WaitAsync() не создает тредов, а просто работают по принципу callback'а (т.е. когда вызывается Release(), то завершается один из ожидающих task'ов и соотв. продолжается выполнение async метода).
>>1015283
Ну вообще мне надо что-то загрузчика. Я добавляю туда много загрузок, а он загружает ограниченным числом task'ов.
Как это лучше сделать? Семафором или хранить список задач
Bla c = a.num > b.num ? a : b;
Я постоянно использую. Длинные выражения нужно просто разбивать на строки:
var result = Foo.Yoba.Batya.Childs.Include(Buzz.Peka.Age) ?
"Yoba and Peka are brothers" :
"Peka isn't brother of Yoba";
Тернарники это норм.
Я не умею создавать ресурсы без IDE.
чето хуйня какая-то. Объясни задачу подробней. Почему таска не может возвращать результат и мержить его в дальнейшем?
нахуя на сервере? какой профит, если их не нужно менять на лету? только сложность увеличивает
Профит в том, что если тебе их придётся поменять/перевести/удалить, тебе не придётся с вилкой по коду чистить. Но это не относится к тому примеру.
> нахуя на сервере?
Для упрощения локализации если она понадобится? Я не говорю про строковые константы в ассертах и подобном, которые кроме самих разработчиков никто не увидит.
Это не совсем C#, ну да ладно.
Ну в смысле у автора трансляции на видео. То есть еще надо учитывать задержку видео
не придется переводить.
Если захочу удалить - удалю. Захочу поменять - поменяю. В чем проблема? Еще и тестирование усложняет лишними зависимостями.
Ну типо не буду я за тобой чистить, а если за тобой никому и не надо чистить, то сиди дальше в своём хардкоде один и не спорь
Я же пояснил ещё 2 профита, проблема в том, что никому, даже тебе, через пару месяцев не будет интересно перелопачивать код ради нахождения всего этого хардкода хуй знает где, как ты его вообще будешь искать, если забудешь где он? По кавычкам? А их у тебя там миллиард, т.к. у тебя везде хардкод стринги. Если проект из двух файлов, то профита нет(тут я и не спорю), дальше уже начинается путаница и проблемы.
5-летний проект со 100+ csproj, каждый из которых немаленький. Вообще не пользуюсь ресурсами. Где путаница и проблемы-то? Ну надо мне ее поменять и не знаю, где она находится - найду полнотекстовым поиском и всё. Где проблема? На преждевременную оптимизацию больше похоже
Ну а ещё это раздувает бинарник, что тупо, никто не хранит 3д модели и музыку хардкодом в екзениках. Короче, нравится тебе хардкодить - хардкодь, я очень рад, что твоя мина ещё не рванула, надеюсь, другие программисты её не увидят никогда.
20+ разработчиков пишут со мной так же, бинари вроде не жирные, да и похер вообще, когда у тебя десятки сервисов в несколько реплик. Что рвануть-то может?)
Меня твои истории не интересуют, я таких тебе сто штук могу рассказать только с обратной стороны, если у вас какой-то говнокод и ничего не разваливается, это не проблема использования или не использования ресурсов и к теме вообще не относится.
Дак не говнокод там. Говнокод это как раз использовать хуйню, которая добавляет сложности разработки и тестирования, которая никогда не пригодится.
хуево им живется, если у них из-за строк почему-то все разваливается.
>Я добавляю туда много загрузок, а он загружает ограниченным числом task'ов.
TPL Dataflow гугли. Годный actor-based фреймворк над стандартным TPL.
Можно, конечно, самому TaskScheduler пердолить, но нахуя писать бойлерплейт (который уже написан), когда можно писать код?
А можно сделать так, чтобы они автоматом записывались в ресурсы?
>Ну вообще мне надо что-то загрузчика. Я добавляю туда много загрузок, а он загружает ограниченным числом task'ов.
>Как это лучше сделать? Семафором или хранить список задач
await\async еще не завезли тебе?
А если строка у меня меньше 21 байта, то в этой конструкци где указано что дополнить не достающие символами "\0"
Collection.Take(21).Concat(ArrayOf21NullBytes).Take(21).ToArray();
const int maxLength = 21;
var result = string.Length > maxLength ? string.Substring(0, maxLength) : string.PadRight(maxLength, '\0');
Есть некий файл таблицы где данные идут (условно)
номер (short - 4 байта), Единица измерения - (11 char символов по байту в блядской кодировке 866), коэфицент (float), имя - (21 char)
Считывая этот файл я загоняю его в "List<ListArray> resultTable" с помощью
ByteArrayConvert(new BinaryReader(new FileStream(path, FileMode.Open, FileAccess.Read), System.Text.Encoding.GetEncoding(866))) ну или вместо FileStram простой Stream
и очевидно цикла методов:
> this.tempList.Add(arr.ReadInt16());
> string unit = new string(arr.ReadChars(11));
> this.tempList.Add(unit.Remove(unit.IndexOf("\0")));
> this.tempList.Add(arr.ReadSingle());
> string name = new string(arr.ReadChars(21));
> this.tempList.Add(name.Remove(name.IndexOf("\0")));
> this.resultTable.Add(new ArrayList(tempList));
> this.tempList.Clear();
т.е. я гарантированно знаю что какой тип у меня находится по адресу массив[x][y] Когда же мне нужно записать в файл для преобразования элемента массив[x][y] в массив байтов приходится применять подобную конструкцию:
byteArray.AddRange(BitConverter.GetBytes(Convert.ToSingle(arrayOfData[k].ToString())));
Но необходимость перегона (допустим) float в строку, а потом во float кажется мне неразумной (а т.к. еще не проверял, то и не факт что рабочей), как сделать правильнее?
>const int maxLength = 21;
>var result = string.Length > maxLength ? string.Substring(0, maxLength) : string.PadRight(maxLength, '\0');
В выделеном разве не 20 будет?
Пишу с поля боя, проблема в кодировке при сохранении, если в изначальной (cp866) допустим буква "к" это 33, то при сохранении получается буква "к" это уже 3a 04, и гугля ничего не выдает. Либо это не кодировка, а в механизме
byteArray.AddRange(BitConverter.GetBytes(Convert.ToChar(arrayOfData[k].ToString())));
что-то переебывается.
нахер тебе публичные поля, если они используются только внутри класса? Ты им сеттеры еще публичные сделай, поешь говна, а потом иди учи solid
В общем чтобы было нормально, сделал так
byteArray.AddRange(Encoding.GetEncoding(866).GetBytes(arrayOfData[k].ToString().Substring(0, 11).ToCharArray()));
их и джавы, по этому пишу this.
Goviaji правильно пишется, так не найдешь ничего. В даркнете есть литература. Корпорации стараются скрывать информацию, чтобы толпы безработных кодеров не начали бунтовать и все ломать вокруг.
Как всё исправить:
1) Сожги свою работу/шарагу нахуй, чтоб ничего не осталось
2) Прочитай про маршаллинг в решетках, в частности про StructLayoutAttribute (Kind = Explicit)
Лол, я геологом работаю и изучаю для себя, зачем мне сжигать свою работу?
Допустим есть класс с приватными полями и публичными автоматическими свойствами.
Если мне в методе этого класса понадобилось значение которое, можно получить, офк, и через свойство и через поле, а также могу его назначить, опять же через что лучше?
Обычно свойства в таком случае делают с каким-то дополнительным кодом: например верификацией данных или созданием события, что свойство изменилось.
Если такого кода нет, то похуй.
Алсо, иногда так реализуют ленивые вычисление. При первом доступе свойство вычисляется и сохраняется в поле, а во втором и последующих выдаётся из поля.
json.net, json вида { huy : 30, pizda : 20 },
3 класса:
class Huy { public int huy }
class Pizda { public int pizda }
class HuyPizda { public Huy huy; public Pizda pizda; }
надо: десесериализовать этот json в класс HuyPizda
А от нас то что надо?
Потому что не хочу. У меня в этих объектах методы, которые работают с этими данными. Я хочу сразу возвращать эти 2 объекта.
Дурное API возвращает данные из двух объектов вставленные в один json.
В общем я придумал алгоритм для конвертера. Но это придется все самому десериализовывать через рефлексию
>Потому что не хочу
Так себе причина.
>>1017183
>У меня в этих объектах методы, которые работают с этими данными
Было бы проще, если бы показал пример реального ответа. Потому что исходя из твоего примера - ты занимаешься херней.
>>1017183
>Но это придется все самому десериализовывать через рефлексию
Ну ели так хочется... Хотя прогрессивное человечество использует Json.Net.
Можешь использовать newtonsoft и заделать свой резолвер.
https://stackoverflow.com/questions/22268478/serialize-and-deserialize-custom-type-using-newtonsoft-json-without-attributes
Шо-то такое.
Допустим есть класс с приватными полями и публичными автоматическими свойствами.
Если мне в методе этого класса понадобилось значение которое, можно получить или изменить/назначить, офк, я могу сделать это и через свойство, и через поле. Через что лучше делать по правилам хорошего тона?
Public class TestClass
{
private int varA;
private int varB;
Public int sum {get;set;} =0; // c# 6.0 feature
public MethodAB (int VarA, int VarB)
{
varA= VarA;
varB= VarB;
sum = VarA+VarB;
return sum;
}
}
Хорошо, что я так и делал, спасибо!
При каких ошибках WebRequest'ов нужно пытаться повторить запрос. Ведь такие временные ошибки могут быть на уровне соединения, так и на уровне протокола.
Где об этом можно почитать
.NET Core + Avalonia
Не знаю, насколько это вообще пригодно для реальных задач, но это лучшее, что сейчас есть.
Проще на линуксе вайн иметь.
Как мне сделать так, чтобы теперь при нажатии новой ссылки - у меня происходил переход на соответсвующую ей исходную ссылку?..
Чего ты блять не понимаешь? У тебя две ссылки, первую тебе дали, вторую ты сгенерил. Запомни обе в базе данных. Когда тебе дадут обратно короткую, просто достань по ней длинную.
Я так и делаю, а оно все равно не работает. При нажатии на сокращенную ссылку он откывает локалхост../1070. Где 1070 - это последняя сделанная запись, хотя должен был быть редирект на иссходную.
namespace shorturlec.Controllers
{
public class HomeController : Controller
{
Class1 i = new Class1();
urlContext db;
public HomeController(urlContext context)
{
db = context;
}
public IActionResult Index(int number = 0)
{
ViewBag.num = number;
return View(db.urls.ToList());
}
public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
return View();
}
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";
return View();
}
public string Hello()
{
return "Hello ASP.NET";
}
public IActionResult Error()
{
return View();
}
public IActionResult sum(int number)
{
ViewBag.num = number;
return RedirectToAction("index");
}
[HttpPost]
public IActionResult adding(url website)
{
url prevWebsite = db.urls.LastOrDefault();
int i = prevWebsite.id + 1;
website.konecnoe = "/" + i;
db.urls.Add(website);
// сохраняем в бд все изменения
db.SaveChanges();
return Redirect(@"index?number=1");
}
public IActionResult LocalRed(url konecnoe)
{
url a = db.urls.LastOrDefault();
return LocalRedirect(a.konecnoe);
}
}
}
Я так и делаю, а оно все равно не работает. При нажатии на сокращенную ссылку он откывает локалхост../1070. Где 1070 - это последняя сделанная запись, хотя должен был быть редирект на иссходную.
namespace shorturlec.Controllers
{
public class HomeController : Controller
{
Class1 i = new Class1();
urlContext db;
public HomeController(urlContext context)
{
db = context;
}
public IActionResult Index(int number = 0)
{
ViewBag.num = number;
return View(db.urls.ToList());
}
public IActionResult About()
{
ViewData["Message"] = "Your application description page.";
return View();
}
public IActionResult Contact()
{
ViewData["Message"] = "Your contact page.";
return View();
}
public string Hello()
{
return "Hello ASP.NET";
}
public IActionResult Error()
{
return View();
}
public IActionResult sum(int number)
{
ViewBag.num = number;
return RedirectToAction("index");
}
[HttpPost]
public IActionResult adding(url website)
{
url prevWebsite = db.urls.LastOrDefault();
int i = prevWebsite.id + 1;
website.konecnoe = "/" + i;
db.urls.Add(website);
// сохраняем в бд все изменения
db.SaveChanges();
return Redirect(@"index?number=1");
}
public IActionResult LocalRed(url konecnoe)
{
url a = db.urls.LastOrDefault();
return LocalRedirect(a.konecnoe);
}
}
}
@{
//ViewData["Title"] = "ASAS";
}
<section class="shape">
<div class="fromtop">
<form method="post" action="/Home/Adding">
<input class="a1" type="text" placeholder="input your url" name="iskomoe" required>
<input class="a2" type="submit" value="SHORT!">
</form>
</div>
</section>
<table>
@foreach (var urls in Model)
{
<tr>
<td><a href="@urls.iskomoe">@urls.iskomoe</a></td>
<td><a href="/Home/LocalRed">aaa</a></td>
</tr>
}
</table>
Бывает, но не с тобой, эмигрант ты мамкин.
Анончик, ты просто лучший!
ADO.NET же. На нем и построена EF. Для маппинга своих моделей можешь использовать dapper или свое накостыляй(у меня в одном старом проект это один экстеншон метод для ридера.
>ADO.NET
Оно еще не сдохло? У .NET беда с документацией. Язык отдельно, другие технологии отдельно, версии языка темный лес. Документация разбросана по разным сайтам.
C .NET Core совместимо не знаешь?
Слушай, я нуб, получается для доступа к базе нужен либо драйвер, либо ORM? Еще есть Data Mapper какой-то.
Интимный пак твоей мамаши.
В смысле сдохла? Это основная технология для работы с базами.
Все доки есть у мягких, просто гугли. Для ado.net нужен драйвер для твоей бд, все есть в nuget, доки к драйверу соответственно на сайте разработчиков. Хотя они там все реализуют одинаково, с небольшими особенностями под бд.
Ну типа просто гугли, доков навалом. SO завалено ответами на любой твой вопрос.
С net core все ок, в текущем netstandart оно реализовано.
Так что получается, кроме ADO.NET еще драйвер нужен? Я думал это и есть драйвер. Зачем тогда нужен ADO.NET? Можно ли одним драйвером обойтись?
Ты не понял. ado.net это просто набор классов и интерфейсов, которые реализуют провайдеры(драйверы).
Ты бы хоть литературу из шапки почитал, там все это должно быть расжевано.
Спасибо и на этом. Просто хочу понять как работают с базами с нуля, без всяких библиотек. Тем более классы всякие меня раздражают, оверинжинирг какой то. Можно и функциями обойтись. Я только учусь, мне как бы неохота тащить на себе весь зоопарк.
Лол, сярп это ООП-язык. Тут ты от этого никуда не денешься.
К тому же ado net это часть стандартной библиотеки, разве что драйверы для других баз, окромя скульсервера, поставляются другими разработчиками.
Я понимаю что новичку проще понять процедурное программирование, но типа миром правит ООП. Оно и вполне заслуженно.
Тебе для начала лучше с ооп познакомиться, а то ты явно будешь писать процедурщину на классах.
С каким яп ты знаком?
C# мультипарадигменный язык. Прибивать гвоздями данные к функциям считаю дурной идеологией.
И самое главное. Какое отношение классы имеют к моему вопросу? Когда пишут драйвер для БД, используют же какое то api, значит можно работать с базой без библиотек.
Вся мультипарадигменность это пара прикалюх с фп.
Чувак, это не похапе где в стандартной библиотеке есть функции и классы для работы с конкретной базой(расширения на сишечке), которые и используют в своих поделках и ОРМ.
Здесь драйверы низкоуровневые и они работают напрямую с сокетами.
Не совсем понимаю что ты хочешь. Можешь десереализовать ответ от стороннего апи сразу на свои ef сущности, сохранить их в бд, и затем отдать через свое апи.
Если я конечно правильно тебя понял.
enum Figure {Huy, Pizda}
enum Figures {Huy, Pizda}
>Не много ли "одинаковых" классов и лишнего кода. Не могу въехать. Грамотный анон помоги.
Ну вообще много. Но по идее надо отделять EF-сущности от сущности запросов к стороннему сервису. К тому же обычно эти ответы нужно немного форматить под свою задачу, не знаю, как у тебя там. Automapper позволяет быстро перегонять из одного класса в другой. Такие дела.
https://msdn.microsoft.com/en-us/library/ms229040(v=vs.100).aspx
Do use a singular name for an enumeration, unless its values are bit fields.
Do use a plural name for enumerations with bit fields as values, also called flags enumerations.
Никаким MVC там и не пахнет, разметка выводится через статические расширения для string'ов - .Echo();. Для этого аж сделан отдельный проект .
Я вообще то не веб девелопер (не считая нескольких месяцев на php) и в особенностях ASP не особо силен. Собственно, мой вопрос - реально ли малой кровью переделать этот сайт с текущей архитектуры на MVC? Я это к тому, достаточно ли будет мне просто выдернуть логику с OnProcessRequest от .ashx и вставить его в контроллер страницы .aspx, а разметку закинуть в ассоциированный view, или при создании asp.net mvc проекта там создается много предварительно сгенерированных файлов и настроек, которые самому делать очень муторно?
Мне хочется подключиться к БД оракл из C#. Сама БД и клиент у меня установлены, в самой вижуал студио у меня получается подрубиться к БД в качестве источника данных, см. пикрелейтед.
В C# я пишу
>using System.Data.OracleClient;
однако получаю ошибку
>The type or namespace name 'OracleClient' does not exist in the namespace 'System.Data' (are you missing an assembly reference?)
Пробовал менять версию .NET, ничего не выходит. Как сделать так, чтобы C# видел, что у меня на компе присутствует System.Data.OracleClient.dll?
Извините, ради бога, я тупая мразь, мне просто следовало добавить соответствующий reference.
Я вот тоже по первой ссылке из гугла это понял, но ты решил насрать сюда вместо забивания ошибки в гугл. Хотя я - питонист, случайно завалился.
На самом деле жду пассива - шарп разработчика, который даст мне денег, чтобы я приехал к нему в Штаты и бомбил его в попку.
Ну, по разному
>aspx
Это же для Webforms. Оно вообще по другому работает. Так что малой кровью очень вряд ли.
>или при создании asp.net mvc проекта там создается много предварительно сгенерированных файлов и настроек, которые самому делать очень муторно?
Нет, там всё достаточно просто же.
>>1019680
Лол, а ты чего хотел то. Довольно вялый тред. Можешь на реддите темки создавать или стэк читать. Там народ шустрый.
Ты прав. Давно заметил, что по шарпу нет ни одного русскоязычного сообщества. Даже в тех чатах где есть комнаты по шарпу, никто не отвечает.
Не, ну почему. Если ты ИТТ скажешь, что Х лучше C#, то тебе тут же скажут, почему ты не прав и что тебе засунули за щеку.
Н SO стыдно писать, я как-то запилил глупый вопрос на ломаном английском, так там сам Джон Скин на него полез отвечать, так стыдно было перед ним. Тут хоть анонимно всё делается.
В общем, пытаюсь разобраться в сраном wpf, а именно в mediaelement. Как на кнопку запрогать паузу в воспроизведении видео?
private void Button_Click(object sender, RoutedEventArgs e)
{
MediaElement t = new MediaElement();
t.Pause();
}
Пусть так будет, лень в пастбин лить
Вот с этой херни вылет происходит
https://msdn.microsoft.com/ru-ru/library/system.windows.controls.mediaelement.pause(v=vs.110).aspx
Условие избежания InvalidOperationException выполнил?
Ну я понимаю, я вообще хочу в игры или хотя бы крудошлепить за деньги. Фишка курса на курсере в том, что там учат игоры делать (типа база шарпа + введение в игрострой), но на xna, а он сдох.
Ну тогда проследуй в unity/ue тред. Игры это не только программирование и не только шарп.
С алгоритмов и структур данных, срсли, намного легче будет воспринимать всякое говно, которое часто используют в геймдеве, пасфиндинги, очереди, обджект пулы, спашиал хэшинг и прочие прелести жизни геймдевера.
Нуууу, у шарпа типа больше применений (я так пощупал, но чтобы учить и писать серьезно - нет). Можно накидать быстрокод для каких-то прикладных задач (фотки от дублей почистить, например), тот же сайт наговнякать. Я просто хочу работать в нормальной среде с нормальной поддержкой, со статической типизацией, с решениями, которые собираются в exe-шник, а не "слушай, тут надо прописать composer update/pip install, потом короче этот пакет не заработает, ты из гита пульни, ага, так, теперь надо исправить, закинь сюда шаблон с жсоном, чтобы исключение не кидал, так падажжи". Короче, скриптопараша - заебала, хочу в язык с хорошей поддержкой от майков и экосистемой. Скажи, пожалуйста, с чего начать.
Я не уверен что @ позволяет выполнять то, что ты там написал, он тупо работает со строкой вида, что ты указал после @ в кавычках. Но я могу ошибаться.
Бля. Я во второй строке метода хуйню написал, только сейчас заметил.
Но это не меняет того факта, что r.IsMatch(str) всегда false.
А без @ не работает из-за слэшей.
С Троелсена до разделов с WPF, ADO.NET, Entity, ASP.NET...
Хотя я рекомендовал бы ознакомиться с WPF и ADO.NET с Entity Framework.
Пишу на шарпе около 2-3 лет, winforms/wpf/EF/DevExpress, вот это всё короче юзал и юзаю.
Да, я в курсе, что вэб перспективнее дэсктопа.
Да, я в курсе, что требуются пачками вэб макаки.
Собственно, как переехать в вэб, ASP востребован? Есть те, кто работают на дядю в ASP? Дайте пару советов,
1) как сделать мой перекат менее болезненным к моей жопе, испытывающей отвращение к JS.
2) если уж усаживаться на стул с вэбом, то на какой усаживаться?
asp/node.js/php/python?
Мимо другой анон. Вот сейчас как раз до второй главы по адо.нет дошел. Потом Entity будет. Хотел изучить всю книгу. Но мб ты что-то другое взять посоветуешь? В планах было дочитать эту, начать почитывать Рихтера и кодить какой проект для вката за еду, на asp.net и Entity.
Пилю стартап-проект на ASP.NET MVC, зависимость есть. На самом деле, вкатиться легко, если есть опыт в C#, ну и HTML + CSS знать желательно. Учился по книге Pro ASP.NET MVC 5 (Adam Freeman).
>HTML + CSS знать желательно
вот на этом моменте поподробнее, пожалуйста.
я читал про хтмл/цсс около года назад. я обкурился, или мне показалось, что в асп можно мышкой, как в винформсах делать страницу, причем там будет асп устанавливать "привязку" событий на клиенте с автоматическим отправлением ко мне на сервак?
или же придется все равно стать версталой?
>Pro ASP.NET MVC 5 (Adam Freeman)
за книгу спасибо, сегодня вечером скачаю.
По классическому ASP.NET - хз. Я сейчас коровский по официальной документации наяирваю.
https://docs.microsoft.com/en-us/aspnet/core/
Для меня годно, а также по нему можешь навернуть и Entity Framework Core.
https://docs.microsoft.com/en-us/ef/core/
Я почему не советую читать Троелсена дальше рефлекшена (или когда заканчивает о языке), потому что в основном дальше идут лишь введения, хотя WPF более чем полностью рассказан.
а бутстрап придется руками присобачивать в итоге, чтобы и на мобилочках, и на пекарнях выглядело хорошо?
про цсс....бля...
Мои познания mvc заканчиваются одним видео с утуба. Там чувак приколачивал бутстрап, но выглядело это не очень сложно.
asp.net быстрофикс.
ясно. ну спасибо на этом :3
используй онлайн сервисы для регексов, чтобы на лету тестировать их. Есть дотнетовские специальные. Собака не при чем.
Уже пофиксил. Лишним был символ '$' в конце регекса, из-за этого совпадения искались только в начале строки.
Нет.
кукисы с указаным Path просто игнорируются. если Path=/, то все работает.
>классы меня раздражают
Тогда пиздуй нахуй. Учи там свою хаскелле парашу, и сиди без денег. Зато без классов, и швятым функциональным программированием!!!
Короче, я разобрался. Эта тупая хуйня проверяет ResponseUri, т.е. кукисы для пути можно установить только из ответа пришедшего с этого пути.
C# в принципе не плохой язык, но есть некоторые части стандартной библиотеки, авторам которых хочется отрубить руки. System.Net относится к их числу.
А в F# тоже классы? Никогда не работал с ним. Есть ли там изменяемые данные или пердолинг с монадами как в Хаскале?
Тебя забыли спросить. Не захлебнись желчью.
Удвою этого господина. Написал диплом на дотнет коре, но в глубинную суть не вникал. Что надо знать, чтобы взяли джуном?
только если живешь в нерезиновой или бушь работать на буржуев, в мухосрани более менее адекватную зп дают за то что ты написал (да и то не всегда), сам сейчас в ленивом поиске работы с проектом на asp net mvc, но как то негусто , звали в сбер у них там неплохая зп но работа ебаный пиздец, писать парсеры и кодить в формах , геморой тот еще
вроде как это фишка решарпера , сам такую хуйню решяю правой кнопкой на солюшене и свойства , после чего студия начинает все подгружать
https://msdn.microsoft.com/en-us/data/jj556581
Сам уже нашел. Как отключить понятно, как включить, хз чего это свойства, все перетыкал не нашел.
Добавь в шапку https://www.microsoft.com/net/learn/architecture
Это руководства по архитектуре приложений. Очень вкусные.
Или еще есть шанс вкатиться в десктоп разработку?
Сам грезил десткопом и презирал веб. Но за пол года, вакансий вообще не видел (мб пару сеньоров 100500лет опыта требовалось).С ляцом лягухи смотрю на asp.net.
Очень печально, а что же стало с десктопом?
че еще скукарекаешь?
На все три проекта в нем пишет пикрелейтед
Что не так?
Пример проджект файла.
https://pastebin.com/JnrZEpUf
аналогично джаве - понимание базовых вещей и хоть какое то представление о технологиях, которые в работе будешь использовать
Ты видать кроме вордпреса и хоум пейджей ничего не видел. Сейчас бекенды огромные, никакой десктоп не сравнится по размеру кодовой базы. Фронтенд отдельная тема, интерфейсы все сложнее, нужно держать множество долгих соединений, не все технологии способны на это, управлять состоянием становится очень сложно.
Каждый день кто то кукарекает за вебмакак. Вот честно, почему вы такие тупые? Начните думать, хватит срать ртом.
Несколько месяцев с перерывами учу шарп, первый язык. Учу по нескольким руководствам и учебникам, они годные, синтаксис освоил, код в примерах понимаю. Параллельно курю "Объектно-ориентированное мышление".
Но.
Учу, но понимаю, что при этом нихрена сам кодить не могу, и не учусь - в этих руководствах тупо дается материал, после глав нет никаких вопросов для закрепления, ни задачек и.т.п. Да и в голове "паззл не складывается" пока..
Вот и просьба - подсказать учебник с заданиями, либо сами задания отдельно, по возрастающей, от азов. Крайне желательно, чтобы еще были к ним потом варианты решений, с комментариями.
забыл добавить, англ или рус - пох.
>Веб интереснее.
С точки зреиня малолетнего долбоёба - безусловно.
> Задачи сложнее.
С точки зрения дегенерата - безусловно.
> Твое творение могут видеть
Пиздец, это теперь дебилам такие аутотренинги проводят? Небоесь еще шкура-манагер каждый день на планерках эту мантру зачитывает, лол.
>Ты видать кроме вордпреса и хоум пейджей ничего не видел.
Видел как три хача ебли твою мамку-шлюху в пукан, а потом она слизывала своё же говно с их елдаков.
> Сейчас бекенды огромные, никакой десктоп не сравнится по размеру кодовой базы.
Ты немного перепутал. На самом деле никакое ведро не сравнится с раздолбаной пиздой твоей мамки-шлюхи.
> нужно держать множество долгих соединений, не все технологии способны на это
Хуета, вот способность твоей мамки-шлюхи держать сразу 5 хачевских хуев во рту и жопе вот это тру скилл.
> управлять состоянием становится очень сложно
Хунта. Твоя мамка-шлюха легко управляется десятками клиентво за день.
> Каждый день кто то кукарекает за вебмакак. Вот честно, почему вы такие тупые?
Твомя мамка шлюха каждый день ебётся с десятком хачей, а ты всё еще листва. Почему ты такой тупой???
> Начните думать, хватит срать ртом.
Насрал толстую колбасу в рот втоей мамке-шлюхе.
(Автор этого поста был предупрежден.)
>Ты видать кроме вордпреса и хоум пейджей ничего не видел.
Видел как три хача ебли твою мамку-шлюху в пукан, а потом она слизывала своё же говно с их елдаков.
> Сейчас бекенды огромные, никакой десктоп не сравнится по размеру кодовой базы.
Ты немного перепутал. На самом деле никакое ведро не сравнится с раздолбаной пиздой твоей мамки-шлюхи.
> нужно держать множество долгих соединений, не все технологии способны на это
Хуета, вот способность твоей мамки-шлюхи держать сразу 5 хачевских хуев во рту и жопе вот это тру скилл.
> управлять состоянием становится очень сложно
Хунта. Твоя мамка-шлюха легко управляется десятками клиентво за день.
> Каждый день кто то кукарекает за вебмакак. Вот честно, почему вы такие тупые?
Твомя мамка шлюха каждый день ебётся с десятком хачей, а ты всё еще листва. Почему ты такой тупой???
> Начните думать, хватит срать ртом.
Насрал толстую колбасу в рот втоей мамке-шлюхе.
(Автор этого поста был предупрежден.)
Язык инструмент для решения задача, но не язык не сама задача. Зачем учить язык, если все равно не будешь знать как его использовать? Задания в СИКП можно перенести на любой язык, главное понять суть. СИКП очень мощный курс, его преподавали в MIT, не где нибудь. Другого такого курса сейчас не существует, если и есть, то они построены на СИКП.
Блядь, когда тебе нужно вернуть несколько значений из метода. Чтобы не хуярить свой класс для возвращаемых данных.
Сериализация же. Или тупой копипаст кода наполнения таблицы. Не понимаю твоей проблемы.
Ничего не понял из твоего ответа. Проблема в том, что я не знаю, как это сделать.
У таблицы есть источник данных. Скорей всего какой нибудь датаТейбл. Добавь строчку, которая будет этот источник в файл сохранять. Или скопируй метод который этот датаТейбл заполняет, и заполняй сразу в своем коде. Про сериализацию говорить не буду, ты в нее не смогешь.
У меня нет исходного кода скачанного приложения. Я думал это понятно из вопроса, иначе действительно просто скопировать можно было.
Пишешь свой десериализатор/метод.
Ты хочишь, чтобы при вбивании в браузере короткой ссылки редиректило на длинную?
Шапку прочитай, пидор, и залей куда-то свой код. Как твое ебанное дерьмо читать в посте?
В чем сложность записать в БД классы к которые парсишь json? Так же ебашишь атрибуты для EF, если сущности простые и ты создаешь базу на основе этих классов, то они могут и не понадобиться.
Ответил тебе за щеку, пидор.
Может потому что никому не всрались твои лабы, пидорас. Это не стековерфлоу, а форум для общения.
да, но он говно
Лол, посмотри как порвало этого обиженку. Всегда проигрываю с таких даунов. Ты считаешь, что кого-то оскорбит твоя охуенная оригинальная пиздаболия про мамаш? Да подрыв твоей жопы за километр было слышно.
>которые в работе будешь использовать
если это веб, то одно, десктоп - другое и т.д.
Для веба asp.net mvc, ef, sql достаточно. Я уже в прошлом треде кидал ссылку на быстрый и крутой курс. Мб в шапку добавить? Он реально ахуенный.
https://www.pluralsight.com/courses/full-stack-dot-net-developer-fundamentals
Согласен. Микросервисы и распределенные системы вообще, базы данных, архитектура, DDD и т.д.
Получал кто сертификаты МС? Сложно? Какие профиты?
Лол, забыл написать, что ты сто пудов ответишь на этот пост оскорблением и скорее всего с мамкой. Я вообще не тот анон, которому ты эту хуету написал, чмоня. Жалко, что подобные тебе опущенцы пытаются влиться в профессию. Увижу, что пытаешься пройти собес, узнаю по затравленному взгляду и набью ебало, хуесос.
Гошизик, это ты?
> потом дитё, в котором эта таблица, а дальше
А дальше таблицу.
У таблицы должны быть строки столбцы ячейки.
А вообще, может тебе проще базу данных просто распарсить этого секретного приложения?
Зачем такие сложности?
Ты паиздливое хуйло. Каким же на надо быть ебанатом (хотя ты ведь вебмакака, чему тут удивляться, лол), что бы пытаться поменять аватар на анонимном форуме как будто это тебе поможет отмыть твою мамку - грязную шлюху. Сказочный долбоёб.
Лол, ты понимаешь, что сейчас выставил себя самой что ни на есть типичной веб макакой? Бэк+фронт у него сложные, соединения, ужас какой. Про размер кодовой базы вообще в голос, ты энтерпрайз на миллионы строк не видел что ли? не видел, конечно
Если тебе это необходимо, то ты делаешь что-то не так.
А вообще можной переопределить обработчк события PropertyChanged и проверять тип аргумента sender. Но не делай так, прошу.
> Если тебе это необходимо, то ты делаешь что-то не так.
Ну например нам надо что бы юзер в таблице выбирал данные для экспорта, при этом обязательно что-бы хотя бы одна строка была выбрана иначе валидация выдает ошибку и сигнализирует на форме об этом. После выгрузки естестевенно весь выбор обнуляется и нужно гасить ошибку валидаци. При этом если потом юзер хотя бы раз что нибудь выберет, валидация опять должна включиться и следить за выбором. Как по-твоему правильно это делать кроме как отслеживать источник обновления (дело еще усложняется тем, что содержимое таблицы может в фоне обновляться и дополняться программно самой воюмоделью по мере поступления данных)???
> А вообще можной переопределить обработчк события PropertyChanged и проверять тип аргумента sender.
Это как? Он всегда же будет одним и тем же, т.е. изменение коллекции во вьюмодели так как движок байндинга прозрачно для вьюмодели подгоняет данные. Если как-то хакать байндинг, это действительно жесть будет.
>>1025398
Я бы сделал сделал следующим образом:
1. Список выбранных данных забинжен на ObservableCollection во вьюмодел и занимается только отражением данных из модели.
2. SelectedItems (выбранные данные для экспорта) забинжен на отдельную коллекцию во вьюмодел.
3. Доступность экспорта и видимость сообщения об ошибке привязано к SelectedItems.Any(). Например, через конвертер.
Кода под рукой нет к сожалению. Припоминаю наличие проблемы с биндингом SelectedItems. Решается использованием триггеров.
SelectedItems все равно же привязаны к объектам модели, как она поможет? Там нет информации о том, это юзер накликал строк или я программно из вьюмодели.
Так отвяжи их. Сделай класс обертку над объектом модели.
class ItemView : INotifyPropertyChanged
{
public Item Item {get; set;}
public bool IsSelected {get; set;}
}
реализацию интерфейса опустил
И биндься к ObservableCollection этих объектов.
А в wpf добавь в ListView чекбоксы и забиндь их на IsSelected.
Соответствено в обратную сторону из ViewModel ты можешь их развыбрать.
Перед выполнением экспорта пробежаться и выбрать только те объекты, где IsSelected = true.
Ну и все такое прочее
Из библиотек Json.net и log4net для логов. API частично спиздил с другого проекта на гитхабе, частично брал сам из браузера.
Я уже синьор или еще джуниор?
https://github.com/qril/microscope
Рандомно потыкал пару файлов - ты пока ещё джун. Вот почему:
1) initial commit и всё.
2) CommandDeserializer логика в экстеншен методе, они предназначены для упрощения взаимодействия с интерфейсами (например - предопределенные вызовы фабрик)
3) CommandDeserializer - пиздец как дохуя вложенности
4) коллбеки
5) неконсистентное наименование папок
В том сообщении я имел ввиду вьюмодели, а не модели, просто у меня это одно и те же.
Я все равно не въехал в твою схему. Вот у нас есть грид G у которого источник данных это коллекция C во вьюмодели. Мы добавляем еще одну коллекцию S на которую биндятся только выбранные строки. Но в обоих случая привязка двусторонняя, поэтому что ты программно поменяешь S, что юзер будет тыкать - все это будет синхронно отображаться на экране и в коллекции S. Как я глядя из вьюмодели буду различать эти ситуации?
А то я в своем техникуме сначала делал базу в СУБД и только потом ставил на нее приложение на делфи.
Как удобно. Описал классами базу, а она уже есть.
Часто, но не повсеместно. В Entity framework надо смотреть код миграций, потому что есть нюансы маппинга типов данных языка в типы СУБД, [DefaultValue(null)] на свойстве класса, вроде, не работает, надо руками прописывать. Ну и когда у тебя составные ключи, хранимые процедуры, функции, надо уже SQL писать, от этого при работе с базой не уйти.
Реально это никто не использует в более-менее крупных проектах. Специально обученные sql-макаки гораздо лучше мейнтейнят и структурируют базу чем .net-генератор.
Поэтому даже при всех охуенности Entity и Code First'а на больших энтерпрайз-проектах со сложной структурой БД используют обыкновенные чейндж-скрипты на голом SQL'е.
Что ты имеешь ввиду под тыкать? Какое-то создание записей? И добавление в коллекцию для последующей записи в модели? И тебе надо отследить какие записи новые?
Эта задача опять же решается через флаг.
Если ты не это имеешь вииду, то я вообще хуй знает. Зачем тебе волноваться о том, кто натыкал коллекцию S? Зачем тебе программно ее менять? Гарантируй на уровне логики, что в этой коллекции будут только данные, выбранные пользователем.
Или тебя волнует изменение данных в модели, пока пользователь работает с ней во View?
Да, чего-то обсуждение немного не туда зашло.
Короче, тут ключевое это поведение UI от которого все пляшет. Основной сценарий использования будет такой: сначала форма (точнее ее вьюмодель) подрубается к некоторому тонкому клиенту и считывает с него данные которые заносятся в таблицу формы которая (для простоты) хостится на сервере. В этой же таблице она добавит все возможные записи которые есть в БД сервера. Дальше юзер выбирает как угодно строки таблицы которые он хочет записать обратно на тонкий клиент. И что бы он не выгрузил пустой набор на форме работает валидация которая ругается если не выбрано ни одной строки. До этого этапа все ок, но после выгрузки визуально надо снимать выделения со всех строк, что бы юзер видел что ничего больше выгружать не надо. И если это сделать в лоб (я снимаю соотвествующее булево свойство в айтеме коллекции из вьюмодели) срабатывает ошибка валидации. Надо что бы валидация не применялась пока юзер не перевыберет что нибудь в таблице.
Как грамотнее скомпоновать условия, а то напрягает почти одинаковый код в разных ифах.
>ты пока ещё джун
Хуево быть джуном
Из всех классов ты наткнулся на самый бесполезный лол. CommandDeserializer это просто написанный за 5 минут хелпер чтобы парсить командную строку. Это не extension, а просто один статический метод
Я понял что от внешнего вида проекта отдает васянством. Буду работать над этим.
Постманом проверил - джсон возвращается.
Хей, приятель. Мне кажется, ты ошибся ссылкой. Клуб кожевников через два треда.
>Из всех классов ты наткнулся на самый бесполезный лол. CommandDeseria
Остальные тоже потыкал, но причина все та же везде - опыт.
И поясните за C# native, что это такое? Вохможность билдить в нативный код оси а не байткод?
И что я могу на нём написать? Про asp.net core я слышал, это mvc/webapi на мультиплатформе. А что ещё?
Я правильно понял, что апи такой же будет как и в дотнет фреймворке только мультиплатформа?
Только про гуй забудь, формы и впф под кор пердолить не будут.
https://docs.microsoft.com/en-us/dotnet/standard/net-standard
А вообще все кроме гуйни. Ее портировать врядши будут т.к не приоритет. Что в общем то не мешает сторонним тулкитам.
> В качестве хранилища данных желательно использовать MSSQL, MS Access или SQLite. Базу
предоставить в виде SQL script-ов.
В таком случае, я могу использовать EF и его подходы, ведь он генерит сам под sql? Как мне предоставть им скрипты?
>смогу ли потом закинуть в другую сишную функцию этот указатель и получить доступ к этой памяти?
Сможешь. В этом как-бы и суть.
>Что вообще происходит с данными неуправляемого кода во время выполнения управляемого?
А что с ними должно происходить? Dll подгружаются в процесс net, вс дела.
>Надо по человечески освобождать память?
Ну это зависит от библиотки. Вдруг там модные shared_ptr.
>Поясните за .net core
Эта хуита а-ля node.js. Суть в том, что нет обычного фреймворка. Там даже исполняемого файла нету.
Собственно она и задумана в первую очередь для серверов. Суть в том, что все зависимости идут с самой программой. То есть можно просто копировать и запускать без ебли с установкой фрейморков.
Нет, хочу строго типизированный яп
Ну если не хочешь начинать, то милости прошу к шарповому шалашу.
https://github.com/GeoJSON-Net/GeoJSON.Net
Как разобраться как она работает? Он пишет смотри тесты для использования, но я вот смотрю и нихуя понять не могу.
Я вроде разобрался, но он выдает невалидный геоджейсон. Решил наклепать сам, по классам но тут тоже хуйня:
https://pastebin.com/DRBT22mU
Вот в этом кусе ругается "Object reference not set to an instance of an object."
Бля, только написал и дошло в чем дело.
Для Visual Studio 2017 нужен плагин подсветки SASS.
Web Compiler подсвечивает SCSS, а вот за sass очень обидно.
В гугле нашел только протухший SassyStudio.
Только начал разбираться с wcf и столкнулся с проблемой. Передаю в сервис message contract, в котором находится поток. Считываю этот поток в MemoryStream (создаю Таск) и передаю в метод для сохранения в бд. В создаю сущности DbSet'а и передаю их в AddRange. Отправляется insert запрос к базе, но ничего не записывает. Пробовал оборачивать код сохранения в TransactionScope, в using(db= new DbContext()) результат не изменился. Подскажите в чем я ошибся или что упустил?
https://pastebin.com/KM0ziZfC
У меня есть класс BaseClass. Есть его наследник ChildClass.
У BaseClass есть список List<mytype1>
У ChildClass есть список List<type_YOBA>, где type_YOBA наследник mytype1
Есть функция do_shit(BaseClass bc), которая делает что-то с элементами списка у класса.
Можно ли как-то заставить эту функцию жрать наследника с его списком? Если делать перегрузом, то надо будет дублировать кучу кода, а это как-то не очень, или по-другому никак?
.NET Core кроссплатформеный. Уже 2 версия в бете.
Это тот же объект что мы можем создать с помощью конструктора только являющийся частью другого класса или как? Просто уже прохожу полиморфизм а такого ни в книге Троелсена, ни на лекциях ITVDN не видел. Нашел только в готовом решении одной из практический задач.
-метод его объекта Invoke()
-определение специального делегата, соответствующего сигнатуре метода, на который он указывает
-создание экземпляра специального делегата с передачей имени метода в качестве аргумента конструктора.
Или отличий нет?)
Очередное подтверждение, что троллсена лучше не читать.
В С# нет глобальных переменных, так что все переменные внутри какого либо класса.
автоматические свойства потом легче заменить на обычные и прикрутить туда логику
переменная типа класс это просто адрес, в котором хранится адрес другого объекта.
Да я просто представить не могу в чем суть Title title. Это переменная? Это объект? Это вообще что? Про глобальные переменные я и не говорил. Кстати, а что с Троелсеном не так?
делегат компилируется в объект класса MulticastDelegate. При его вызове выполняется метод Invoke. По идее в любой форме все будет сводиться к такому сценарию выполнения.
Thanks
Это переменная член типа.
Троллсен просто плохо пишет. Кроме того он предполагает что ты знаком с с++ (а это проблема почти всех книг по си шарпу, я вообще не видел ни одной которая бы была написана с нуля), а ты судя по вопросу вообще не знаком ни с одним алгоритмическим языком.
А кстати, все приемущества связаны так или иначе с возможностью внести изменения не ломая кода. Но ведь если до этого было поле, то клиентский код все равно не сломается, разве нет?
Нормально он пишет, правда я знаком с Си и плюсами но на пол шишечки, но про генерики конечно суперхуево, у шилдта лучше.
Смысл не в том, чтобы не упростить модификацию кода. Это просто возможность прикрутить логику к процессу установки и выдачи значения переменной. Работает как обработчик события записи или установки значения в это поле. При модификации тоже очень удобно, если бы не было автосвойств и захотелось бы как-то обработать доступ к переменной, то пришлось бы как-то менять все обращения к этому полю или в самом классе, или в классах использующих его.
Бля, объясни
Так если у тебя раньше было поле, ты просто меняешь на свойство с навороченными сеттерами и все. Что тебе даст если до изменений было авто свойство а не поле???
Ну в твоем случае разницы нет. Но если кто-то будет использовать твою либу, то после апдейта, где ты поменял поля на свойства, то у него все наебнется, придется все пересобирать. Это в студии они отличаются только пиктограммой при подсказки IntelliSense, а по факту свойства разворачиваются в закрытое поле и 2 метода get_X и set_X
Почувствуй разницу (разметка слетит и ты наврядли что поймешь конечно):
Поле
.class public auto ansi beforefieldinit ClassLibrary1.B
extends [mscorlib]System.Object
{
// Fields
.field public int32 Pizda
// Methods
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2069
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method B::.ctor
} // end of class ClassLibrary1.B
Свойство:
.class public auto ansi beforefieldinit ClassLibrary1.A
extends [mscorlib]System.Object
{
// Fields
.field private int32 '<Pizda>k__BackingField'
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Methods
.method public hidebysig specialname
instance int32 get_Pizda () cil managed
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Method begins at RVA 0x2050
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld int32 ClassLibrary1.A::'<Pizda>k__BackingField'
IL_0006: ret
} // end of method A::get_Pizda
.method public hidebysig specialname
instance void set_Pizda (
int32 'value'
) cil managed
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Method begins at RVA 0x2058
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: stfld int32 ClassLibrary1.A::'<Pizda>k__BackingField'
IL_0007: ret
} // end of method A::set_Pizda
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2061
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method A::.ctor
// Properties
.property instance int32 Pizda()
{
.get instance int32 ClassLibrary1.A::get_Pizda()
.set instance void ClassLibrary1.A::set_Pizda(int32)
}
} // end of class ClassLibrary1.A
Ну в твоем случае разницы нет. Но если кто-то будет использовать твою либу, то после апдейта, где ты поменял поля на свойства, то у него все наебнется, придется все пересобирать. Это в студии они отличаются только пиктограммой при подсказки IntelliSense, а по факту свойства разворачиваются в закрытое поле и 2 метода get_X и set_X
Почувствуй разницу (разметка слетит и ты наврядли что поймешь конечно):
Поле
.class public auto ansi beforefieldinit ClassLibrary1.B
extends [mscorlib]System.Object
{
// Fields
.field public int32 Pizda
// Methods
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2069
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method B::.ctor
} // end of class ClassLibrary1.B
Свойство:
.class public auto ansi beforefieldinit ClassLibrary1.A
extends [mscorlib]System.Object
{
// Fields
.field private int32 '<Pizda>k__BackingField'
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Methods
.method public hidebysig specialname
instance int32 get_Pizda () cil managed
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Method begins at RVA 0x2050
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldfld int32 ClassLibrary1.A::'<Pizda>k__BackingField'
IL_0006: ret
} // end of method A::get_Pizda
.method public hidebysig specialname
instance void set_Pizda (
int32 'value'
) cil managed
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = (
01 00 00 00
)
// Method begins at RVA 0x2058
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldarg.1
IL_0002: stfld int32 ClassLibrary1.A::'<Pizda>k__BackingField'
IL_0007: ret
} // end of method A::set_Pizda
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2061
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method A::.ctor
// Properties
.property instance int32 Pizda()
{
.get instance int32 ClassLibrary1.A::get_Pizda()
.set instance void ClassLibrary1.A::set_Pizda(int32)
}
} // end of class ClassLibrary1.A
Есть класс представляющий собой нечто вроде сервера, которым можно управлять, вызывая команды. Команда - класс, наследующий интерфейс IRoute, в котором есть метод для её исполнения. Как лучше реализовать взаимодействие команды и сервера? Передавать объект сервера в неё / сделать сервер статическим (или синглтоном) / какой-то другой вариант?
если я правильно понял (ты как-то сложно написал), то гугли иммутабельность
Боже, наконец-то до меня дошло для чего они нужны. Спасибо!
Господа, у меня возникла проблема
с ASP.NET MVC проджектом
и возникла она еще на самом начале
т.кк в эту хуиту я ток начал вкатываться.
Заключается она в том что в браузер у меня не выводятся нужные мне данные а почему я не пойму.
Пихать сюда весть код думаю нет смысла поэтому мне просто нужно понять каким образом отлаживать веб проекты Ф11 не работает ведь ?
Как пробежаться по программе что бы узнать на каком месте фейл ?
и еще вдогонку вопрос
почему я не могу создать представления с такой моделью (на пике)
и будет ли представление работать с такой моделью если я ее непосредственно в коде укажу (1 пик)
ДС 2
В папке Views должен быть файл web.config. Добавь в него неймспейс, где лежит нужный тебе класс модели.
Как победить "это"? У меня из-за этого юнит тесты не проходят.
https://pastebin.com/n6XZV3Jm
Гугли сравнение вещественных чисел. При сравнении на равенство нужно чтобы модуль разности был меньше эпсилона.
>>1029372
Спасибо, разобрался. Но остался один вопрос. Стоит ли делать проверку <= (меньше или равно). Может ли выпасть так, что разность будет равна точности?
https://pastebin.com/K7xxa7X1
Суп, шарпач.
Такая хрень: пусть будет enum xyuTa { xyz='dick', nu3ga='cunt', 3aJIyna='doucebag'}.
Так вот. Такой энам сделать можно? Можно. Но... Как по названию получить велью? Не xyuTa.3aJIyna, a xxx = '3aJIyna', и SomeMethod(xxx) чтобы выдал это велью? Выражение нужно, которое так может. Неужели в ебучем шарпе нельзя так? Все перегуглил уже. Ну просто столкнулся, и охуел, что не могу такую простую штуку сделать.
И еще вопрос: пусть нам нужна какая-то штука, которая будет хранить в себе костанты. Раз с энамом не получается. Чтобы по велью или по ключу получать ключ или велью, соответственно? Мапа приходит на ум. Но... Как ее инициализировать? Это ж уебанство будет, если в мапу добавлять что-то. И как добавлять? Некрасиво. В общем, нужна структура.
Разъясните, плиз)
Мимо нубас в шарпе, но стемящийся.
> Пихать сюда весть код думаю нет смысла поэтому мне просто нужно понять каким образом отлаживать веб проекты Ф11 не работает ведь ?
Весь твой проект состоит из серверного кода и клиенсткого. Серверный отлично отлажывается как и любая программа. Браузерный уже надо в браузере отлаживать. F12 тебе в помощь.
> xyz='dick'
Это уже не enum. enum это по сути имена для генерируемых переменных. Если нужно сопоставление, то юзай словарь.
Для начала определись веб или десктоп. Если веб то учишь асп.нет, если десктоп то впф или формы. Книжки есть в шапке. Также очень желательно почитать что-нибудь по SQL и EF.
SQL я изучал - запросики, реляционные базы данных в среде SQL server, но с EF дела не имел. На самом деле даже писал многослойное приложение с автосозданием в Azure(с сервером и бд), но проблема в том что там лютый говнокод и грубые нарушения целостности, хотелось бы про это еще почитать.
> не знаю в какую сторону двигаться дальше
А нам откуда знать куда тебе надо?
> что нынче востребовано на рынке труда
Грамотные люди.
Только нужно помнить, что будь это веб или декстоп - это бездушный Энтерпрайз а любом случае
Почитай пока про патерны, солиды и вообще методики избавления от говнокода. Потом постарайся реализовать какой-то сложный серьезный проект.
В Program объявлено поле public static List<>. В MainForm описано событие: по нажатию кнопки вызывается функция из Program. Она меняет список List.
Но после того, как там же в формах я считываю List, на самом деле он не изменился.
Кусок кода (все лишнее вырезал): https://pastebin.com/a1gA1ykT
>Работает как обработчик события записи или установки значения в это поле.
Работает как мокрописечная хуита, делающая семантику функций для переменных. Даже не обязательно вообще в гетере и сетере куда-то записывать значения, тащемта. По сути это просто ебанутый вызов функции, где первый параметр как результат присваивания
Когда я вижу переменную, я понимаю что тут просто чтение данных, когда я вижу функцию, я понимаю что тут какой-то код. Когда я вижу property, я понимаю что автор кода мудак, потому что там скрыто в этой property нихуя не очевидно. Может там, блеаять, каждый раз обращение к БД или еще что-нибудь покруче.
Расстреливал бы за такую хуйню.
>Есть одна игра написанная на c sharp. И мне нужно модифицировать один класс в ней. Как декомпилировать и деобфусцировать код я разобрался, но не знаю как скомпилировать этот класс обратно и заменить его в бинарниках. Может кто-нибудь уже это делал и может рассказать как это сделать?
Что-то сомневаюсь, что ты сконпелируешь декомпилированный проект без ошибок.
Можно например IL-код через Mono.Cecil редактировать.
>Что-то сомневаюсь, что ты сконпелируешь декомпилированный проект без ошибок.
Если бы это было так я бы не спрашивал.
>Можно например IL-код через Mono.Cecil редактировать.
Попробую так.
в dnSpy можно сразу редактировать декомпилированный класс и сохранить как модуль
Сейчас потестил, вроде работает. Мощная штука. Там даже intellisense есть. Для open source проекта выглядит очень круто.
Я так делал, когда надо было исправить ошибку (поменять значение константы) в старой сборке.
https://itcloud.academy/course/c-sharp/
1. Вот есть класс Animal, от него наследуется класс Cat.
Что происходит в этой команде?:
Animal a = new Cat("Barsik");
Создается объект "a" класса Animal, для создания которого используется конструктор класса Кэт? Но для чего такие ухищрения? Для чего нам понадобиться создавать объект родительского класса, и при этом использовать конструктор дочернего класса? А если в конструкторе дочернего класса инициализируются переменные, которых нет в базовом классе, то тогда что - они игнорируются?
Теперь если мы хотим при создании нового объекта установить его свойства такие же как свойства дочернего класса(не только дочернего, а вообще - любого класса)? Мы ведь можем использовать такую команду?:
Animal a =(Cat)c; // с - объект дочернего класса Cat.
Что тут произойдет? Объектные переменные "а" и "с" будут указывать на один объект или это будут два разных объекта с идентичными значениями в свойствах?
2. Теперь наоборот:
Cat c = (Cat)a; //a - объект базового класса Animal
Тут создается объект класса Сat, у которого свойства будут такими же по значению как и у класса а? А как же значения свойств, которых в базовом классе "а" нет? Они так и останутся нуллами? Или опять же - объекты a и с будут лишь ссылаться на первоначальный объект а.
А тут, если я правильно понимаю будет ошибка, так ведь?:
Cat c = new Animal("Кот");
Но я не понимаю, почему мы не можем создать объект дочернего класса, используя конструктор базового класса? Да, часть свойств(которых нет в базовом классе) дочернего класса останутся нуллами, но что в этом плохого?
Быть может если у меня уже в самом начале Рихтера полное непонимание, то может уже нужно подумать о смене профессии программиста?
Животное - базовый класс, самое "общее" понятие. Ты можешь погладить любое животное с помощью метода .Pogladit()
Кот - более конкретная сущность, которая обладает всеми свойствами животного (ты можешь погладить кода просто зная что он животное) и некоторыми новыми свойствами (ты можешь бросить коту клубок ниток методом .BrositKlubokNitok()).
Кот (как объект) не перестает быть котом, как бы ты к нему не обращался. Если ты трактуешь кота как животное (Animal a = new Cat("Barsik");) то тебе доступны только те методы кота которые есть у всех животных.
Когда ты снова начинаешь работать с котом как с котом (Cat c = (Cat)a;) тебе открываются все методы класса "кот", и теперь ты можешь ему .BrositKlubokNitok()
Но ты не можешь привести с фермы рандомное животное и начать обращаться с ним как с котом (Cat c = new Animal("Кот");) потому что если ты попытаешься бросить клубок лошади то она тебя просто нахуй пошлет.
>Но я не понимаю, почему мы не можем создать объект дочернего класса, используя конструктор базового класса?
У всех классов свои собственные конструкторы (даже если они определены неявно), ты не можешь создать кота методом который делает животное.
Зато можешь создать кота и обращаться с ним как с животным используя ограниченное подмножество его свойств/методов которые есть у всех животных.
Ты путаешься не в конструкторах и создании инстансов а в приведении типов.
>Сам подумывал о около it хуипинательной работе за 3.5копейки, в процессе доучивания и поиска ваканасии.
Не надо. Либо у тебя титаническая сила воли, либо эта "временная" работка сожрет всё твоё время и силы и станет постоянной.
Я вот сисадминил нихуя не делая и попутно c# учил прям на работе. Щас джуном работаю.
Хуёвый пример. Вот я тоже 3 года сисадминил, нихуя не делая, и попутно учил интересные мне ЯП, надеясь переползти на позицию джуна. Угадай, кем я сейчас работаю? Начальником технического отдела той же компании. А в программисты пойти не вышло, увы. У нас в миллионнике вакансий на тот же C# просто нет.
Спасибо за такое хорошее пояснение.
Ещё не до конца понятна разница между созданием нового объекта, и созданием ссылки на уже существующий объект. Вот например:
Cat c = (Cat)a; - тут мы создаем абсолютно новый объект, со своими атрибутами.
А если мы хотим создать новый объект, который будет лишь ссылаться на другой? Можно ведь сделать так?
Cat c = a; - при условии что а тоже относиться к типу Сat.
>Cat c = (Cat)a;
>Cat c = a;
В твоём случае это не особо отличается. Семантика такой записи в том что мы берем правую часть и начинаем обозначаем её именем и типом записанным слева. Создается ли правая часть на месте (new Cat("Pushisti pidor")) или берется уже существующая (а) - не важно.
а как тогда создать объект-копию другого объекта? Чтобы не ссылался на существующий, а чтобы имел свой комплект атрибутов, точь в точь списанный с другого объекта?
Запилить в своём классе конструктор принимающий экземпляр такого же класса, и тупо копирующий его данные. На основе такого конструктора можно потом сделать то что говорит >>1030483
будет что-то типа
public Cat(Cat other)
{
this.AnusDepth = other.AnusDepth;
this.Weight = other.Weight;
...
}
Создавать копии котов тогда будешь так
Cat vtorojKot = new Cat(pervijKot);
Для структур это реализовано по умолчанию, но в это тебе вникать рано.
До чего у вас тут милая манера общения.
Я в начале нулевых был тупым ребёнком с тех пор не сильно что изменилось и потому не знаю, как вкатывались тогда (как вкатываются теперь, тоже не знаю). В том, собственно, и состоит мой вопрос.
А про "дала начальнику" запостил не я. 1030127-кун
Кто так объекты создаёт? Создавай абстрактную фабрик абстрактных животных и уже через неё инстанси своих котэ всех сортов и мастей.
Вот с волей косяк. Троелсена под конец и то через адское нехочу дотягивал (но все же книга за 1.5 месяца). Может аналитиком каким? Даже если кодером не выгорит, не самая плохая работа у парней.
Хочешь красивый фантик - плати бабосы.
Как считать разработчиков под эту лицуху - вообще всех, или только непосредственно связанных с их либами?
за такое время только в продавца-консультанта можно вкатиться, и то если повезет.
Гайс. Читаю Герберта Шилдта. Читается очень медленно. Всё важно конспектирую в тетрать.
Можете рассказать как вы учили/учите? Мне кажется конспект занимает дохуищу времени, но так легче запоминать. Может у вас свои методики какие-то?
Ещё и тетрадь написал как мудак, блэт
Все ли делаю правильно? Или все же стоит читать литературу по теме?
Посоветуйте чего-нибудь.
Я пишу код, сразу практикуюсь, использую каждый новый метод, и чекаю правила в студии. Хотел конкретно про конспекты узнать и про усваивания инфы. Может кто-то записывает их в ван нот, хотя по сути это будет копипаста, и так же можно будет в учебнике поиск устраивать. ХММ...
Двачую этого, хотя даунам-аутистам может норм. Попробуй лучше Metanit/ProfessorWeb,- чётко, ясно, быстро, по делу.
Кодить надо. Примеры чужие перебивать. Свои хуярить.
А видосы- от них мало толку. И меньше, чем от книжек. В разы.
Мне они полезны были, если что-то такое делают, walk through какой-нибудь, делаем там приложение такое-то, например. Смотришь и кодишь тоже.
Или если уже книжки почитал, примеры накодил, и смотришь видос, повторяется, закрепляется, что-то новое добавляется. И уверенность появляется, что ты выучил тему.
Тоже двачую. Я когда их слушать пробовал, то увеличивал скорость воспроизведения x1.7
Ваш мозг не воспринимает информацию в текстовом варианте?
Есть у меня френд, учит по книгам в оригинале, ну как учит, с английским ебется. Учебы 5 страниц в день выходит.
знаю английский отлично, темп еще меньше (из-за лени и дэпрессии)
Тебе ответили на вопросы кастов, но не сказали что у тебя неправильное понимание о создании обектов.
1. В данном случае в начале объявляется переменная класса Animal, затем создается объект типа Cat и ссылка на этот объект присваивается переменной a. Что здесь нужно понимать? Первое: объявление переменной и присвоение этой переменной значения - это две разные операции. Т.е. мы можем написать так:
Animal a;
a = new Cat("Barsik");
Второе: Ты в любом случае создаешь здесь объект класса Cat, однако в данном случае происходит неявный апкаст(upcast, т.е. приведение вверх по иерархии) объекта new Cat("Barsik") к классу Animal.
Animal a =(Cat)c; - данное выражение лишено смысла, объект и так является экземпляром класса Cat, а ты его еще раз приводишь к этому типу и опять же здесь происходит апкаст к типу Animal. В переменной a будет лежать все та же ссылка что и у объекта c, однако здесь мы лишь меняем свою точку зрения - смотрим на объект Cat как на объект Animal, с его свойствами, методами и т.д.
2.
Cat c = (Cat)a - здесь не будет ошибки компиляции, потому что компилятор не может знать какого типа был объект лежащий по ссылке a изначально. Однако этот код выкинет ошибку во время исполнения, потому что объект a не может быть объектом типа Cat, так как он лежит выше по иерархии.
>Шарпаны, начал читать Рихтера, дошел до приведения типов к другим типам. И что-то не пойму:
Ну короче, у каждого класса есть интерфейс к нему: это все поля и методы, которые ты видешь в intellisense, когда ставишь точку после имени переменной. Это понятно?
Что касается приведения типов, то тут очень просто: ты можешь присвоить переменную Б в переменную А, если переменная Б включает в себя интерфейс А. То есть, если у тебя в А есть метод Method1() и в Б есть такой метод, то ты можешь присвоить. Если ты наследовал Б от А, то очевидно, что в Б по дефолту есть весь публичный интерфейс А
Вот так все просто.
https://pastebin.com/jdxtyWFr
Массив в массиве. Объект array имеет всегда только один элемент и по сути является контейнером. Из-за такой структуры работа с внутренним массивом values становится неудобной.
Можно ли как-то избавиться от этого контейнера, для облегчения работы с внутренним массивом?
https://pastebin.com/5wwJREGb
Просто есть буквально пара вопросов о том
1) как разворачивается БД на сервере(не на моей мащине, а где-то там, далеко-далеко на хостинге).
И как при этом применять изменения в БД.
2) как сервер обрабатывает запросы, для каждого клиента создается поток или что-то другое? как это дело проконтроллировать.
В общем, при личном общении объясню, что именно я хочу понять.
Денег у меня не много, я думаю не больше пары часов это займет в скайпе. Могу заплатить касарь, честно не спизженный у мамки из кошелька.
На этих выходных в скайпе провести такое своего рода репетиторское занятие.
В простых примерах все понятно, но в реальном приложении где на форме могут быть десятки кнопок и разных фоновых операций как все это правильно организовать? Эти токены еще и одноразовые...
Есть вьюмодель, в которой есть список объектов (модель точки с координатами), мне нужно во вьюхе на основании того что выберет пользователь (точки или линия) создать этот список. Я так думаю генерировать скрытые инпуты и туда вставлять, но не понимаю как создать именно список объектов во вьюхе, чтобы оно адекватно байндилось в контролере.
В рашке особо не смотрят.
Только для эмиграции.
напиши свой хелпер, который будет работать как список отображать имя твоей вью модели и возвращать уже целый объект.
Бля, не старей.
Развивай память как-то
Я стараюсь запоминать любую инфу нужную почаще
Там все данные документов, номер, дату, и код на дебетовой карте. Количество каллорий во всякой хавке, которую ем. Примеры ещё решать на скорость нормас тема
Я думаю, может флешкарт наделать с полезной инфой. А то чего всякую бесполезную хуергу заучивать, лучше то что пригодится.
Что больше востребовано у буржуев: десктоп или веб(асп.нет)?
Php
У меня есть файл newDB.bak, мне нужно отредактировать его, пересохранить и развернуть новый бэкап на удаленном сервере SQL Server.
Всё что я нагуглил, это то что я должен как итог сперва скопировать его туда, а потом там средствами sql managment studio разворачивать.
Помогите, плиз. Горит очень.
"Экспорт приложения уровня данных" чтобы получить bacpac и "Импорт приложения уровня данных" на удаленке.
Бамп
Просто пиши бинарный блоб, в чём проблема то?
хочу использовать mysql без mysql сервера
>Может быть, есть какой-то другой способ сохранить объект класса во внешний файл? Пикрандом
Ну ебанный в рот.
А просто взять и сохранить данные не пробовал?
С одной стороны, C# вроде вин, но вот из за подобного говна, вроде сериализации, этот вин никогда не уйдет за пределы тухлого офиса с вонючими турпрайз макаками.
Нихуя не понял че ты хочешь. Если тебе нужна на каждом компе доступ к общей бд, то должна общая сеть с серваком, на котором установлена бд. Если на каждом пк своя собственная локальная бд, то ставь SQLite.
Чтобы отдельно сохранять данные из объектов, то для этого нужно писать дополнительный код, который и будет этим заниматься, дёргая всё из полей / свойств.
Сериализация же позволяет сразу на стадии компиляции пояснить компилятору за поля и свойства, которые нужно будет хранить.
Шарп поддерживает XML, Binary и Json (очень удобно использовать для хранения в MongoDB) виды сериализации.
Проблема частично решена: оказывается, нормальные обфускаторы сами понимают, что сериализуемые классы не нужно переименовывать, то есть имена классов и полей остаются прежними, а методы и их тело шифруются. Хотелось бы, конечно, зашифровать и имена классов с полями, так как это все-таки дает стороннему наблюдателю некоторое представление о структуре программы, но из вариантов с полным отсутствием защиты и с открытыми именами некоторых классов и полей, я все-таки выберу второй.
Скорее всего проблема в тебе. Если ты скачал официальную dll и указал на нее ссылку, то васе замечательно увидится.
> даже через nuget
Никогда не надейся на иснсталляторы всего. Лучше скачай точ то надо и подключит руками.
И стоит ли стремиться в фуллстак, или бекенда асп.нет мвс5 хватает что бы найти непыльную работу?
Друзья, уже возможно ставить net core на linux x32 ?
Ну если есть на копьюхтере свободные 50 гигов жесткого диска , терпения пока это все будет устанавливаться 1 час, и осознание , что в в вижуал студио присутствует нано телеметрия, которая отправляет всю информацию о твоей разработки на сервера Microsoft
C# тред
>C# 6.0 Pocket Reference
Но пока еще не качал. На шарпе пишу уже несколько месяцев, но из-за того сил перешел на него с java, то у меня соответствующие проблемы. Пока всем было плевать лишь бы работало, писал как на яве, только конструкции типа var x= new X(), linq и ?/?? Выучил. Сейчас появилось время посидеть и привести свой код в норму. Будет ли карманного справочника достаточно для этих целей?
Какие 50 гигов, ебанутый? Даже если в инсталляторе все установить, хотя тебе столько не нужно, выйдет не более 10 гигов. А все для шарпа вообще гигов 5 занимает, учитывая тонну хуйни типа эмулятора ведра и тд и тп, которые можно не качать
poshel na hui
А что тогда читать?
Ксамарин, например, весит 40 гб.
Хочу вкатиться в этот ваш asp.net mvc.
Внимание, вопрос: чтобы взяли джуном на галеру обязательно учить javascript и Entity на хорошем уровне или дадут время подтянуть?
Еще дадут личную тянучку и 2.5 литра смузи каждые будни. Тянучку можно забирать с собой.
Допустим есть несколько строк кода, одна из них может вызвать исключение. Я обычно оборачивал все три строки в трай. Будет ли профит, если я оберну только ту строку, которая и вызывает исключение. Или похуй?
Всем привет, сишарперы.
У меня 2 вопроса к вам.
1. Вот в инете куа гайдов по асп.нет, как там все здорово, но хотелось бы понимать, как все это работает. Есть какая-нибудь инфа о том, как без всяких шаблонов написать вею-сервер, чтобы в итоге получился тот же асп, но самписный? В гугле я такого не нашёл.
2. asp.net core - новая шняжка от мелкомягких. Все здорово, но я вот не любитель ентити фрейморка, я задрот sql, мне хочется напрямую с БД взаимодействовать. В asp.net 5 я мог юзать такую охуительную вещь, как DataTable, и пихать в нее результат хранимки, возвращающей Select. А в Core я что-то вообще не наблюдаю, как мне результат select-а куда-то прочитать.
Мб есть что-то, чтоб я мог в List<T> его запихнуть, например?
Так, сразу предупреждаю, что я работаю разрабом бд, а шарпич пока что по фану изучаю, так шо не надо орать, что я днище, я это и так знаю
Картинка для привлечения внимания
Ты ленивое хуйло. 0.0001 секунда в гугле.
https://stackoverflow.com/questions/42098922/using-datatable-in-net-core
unity
magnet:?xt=urn:btih:763B25C4802C6C2E42E42F75A12CC86CA5973433&dn=Ben%20Watson%20-%20Writing%20High%20Performance%20.NET%20Code%20-%202014.pdf
magnet:?xt=urn:btih:D956693918E4070BF56C04F640B561DF631B0740&dn=Ben%20Watson%20-%20Writing%20High%20Performance%20.NET%20Code.pdf
лол. я, наверное, тут самый поехавший, но я писал на юнете.
самый удобный гуи.
но опять же, в зависимости от того, что тебе нужно сделать.
если поработать с графикой и чтоб было красиво, то юнити.
от души!
Короче, есть форма и подключенный по скажем lpt сервопривод с атмегой/stm32, задача-с помощью кнопок на форме управлять частотой вращения привода
Я немного не понимаю, что за прослойка нужна между формой и кодом для контроллера
сейчас требуют, чтобы fullstack кодер был
показал бы. там еще и анимация была ахуенная, типо менюшка сверху прилетает, сворачивается и прочее.
только я её на прошлом ноуте оставил, а он сгорел вслед за ним и моя жопа.
Для вэба есть codeacademy и htmlacademy, там уроки, и решаешь задачи, всё поясняется, что за что отвечает. Как мне в C# это всё понимать я хуй знает.
Есть 100 элементов (в моем случае это pictureBox), они уже созданы и надо их все загнать в один список (List<pictureBox>).
Вручную можно, но этот вариант не рассматриваю.
Как? Пытался по имени:
string s = "pictureBox"
foreach (pictureBox p in picArr)
{
s+=(picArr.Count+1);
picArr.Add(s);
}
Разумеется не работает, так как он пытается добавить в список строку, а не элемент с указанным именем.
Обходишь все элементы в Form.Controls и проверяешь тип контрола. Нужные добавляешь.
Спасибо, попробую
https://trends.google.com/trends/explore?date=today 5-y&q=c#,java
Дискас, господа. Спасет ли нас .net core от дошираков? Какие есть альтернативы java и c#
Ну так шо надо заюзать? Мб референц какой или нугет пакет?
Ты гуглить не пробовал? Они в 2.0 доступны.
if (a != b && a != c) {}
Для всей цепочки (от морды до БД) все, так как они там активно испльзуются. Если только фронт, то наверное огрызка хватит.
Сап. Я php-макакен, хочу вкатиться в C# веб разработку, так как понимаю что на моей работе потолок это небольшие проекты на laravel. Что посоветуете почитать/посмотреть? Я так понимаю в шапке литература для полных новичков, где показывают как написать HelloWorld. Стоит ли читать это? Подойдёт ли оф. документация? Пока что выбор пал на Троелсена.
чтобы вкатиться достаточно асп знать, ну и мвс, конечно, т.к. он в основе фреймворка лежит
просто есть курс уроков по asp mvc 5
а есть просто asp
таки что учить то? Если всё - то долго пиздец
Допустим есть список:
Инавнов
Петров
Сидоров
Иванов всегда должен быть перед сидоровым и петровым. Так же петров должен быть после Иванова, но перед Сидоровым. И вот нам приходит две записи, в одной стоят {"Сидоров", "Иванов"}, а в другой {"Сидоров", "Петров"}. Нужно их в цикле обработать, но в правильной последовательности. Как это сделать наиболее красиво и правильно?
Компаратор.
MVC, IoC через DI достаточно
Вот по этой книжке легко вкатишься в основы asp.net, она небольшая и пример там неплохой, только технологии немного устаревшие, та же реализация DI от Ninject, но для понимания сути самое оно.
https://smarly.net/pro-asp-net-mvc-4/introducing-asp-net-mvc-4
using System.Linq;
foreach (string Name in new List<string>{ "Петров", "Иванов"}.OrderBy(x => x)) { . . . }
Помогите советом, с чего начать в общих чертах ? Выбрал шарпы потмоу что насколько я понял гуй там легко напсиать. Спасибо аноны.
Скачай студию.
Через часа два смогу расписать подробнее, поставлю напоминалку, качай и ставь пока студию. Как раз наверное успеет поставиться.
Скачалась студия?
- Открываешь ее, жмешь создать, там выбираешь Windows Forms приложение.
- Идешь в какую-то из вкладок меню, открываешь управление пакетами nuget
- Качаешь EntityFramework
- Создаешь папку для моделей
- Описываешь классы моделей (это кстати можно автоматически сделать)
- Описываешь контекст БД (и это вроде тоже)
- Прописываешь строку подключения в app.config
- Кидаешь на форму gridView и кнопку
- Щелкаешь по кнопке два раза, у тебя создается автоматически обработка события клика
- Там пишешь using (var context = new класс_контекста)
{
dataGridView1.DataSource = context.НазваниеНабораДанных.Top(10).ToList()
}
- Запускаешь приложение, жмешь на кнопку, данные выводятся в таблицу
Это если совсем по-простому (делов минут 15) чтобы начать(чего ты и просил), дальше настройка как там и что тебе нужно, плюс создание новых форм, проектирование архитектуры приложения и всего такого. Если нужно еще подробнее про стартер этап, спрашивай.
Спасибо за труд, бро, приеду домой обязательно запилю и отпишусь.
Есть таблица MySQL в который есть поле id с типом UNSIGNED BIGINT
В моей моделе оно имеет тип ulong
Если делать DbSet.Find(id) то всё работает.
А вот когда надо выбрать через IN , тоесть DbSet.Where(x => Ids.Contain(x.key)).ToList()
выкидывается исключение:
MySql.Data.EntityFrameworkCore.Query.Internal.MySQLQueryCompilationContextFactory[1]
An exception occurred in the database while iterating the results of a query.
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: The call is ambiguous between the following methods or properties: 'Microsoft.EntityFrameworkCore.Storage.RelationalSqlGenerationHelper.GenerateLiteralValue(float)' and 'Microsoft.EntityFrameworkCore.Storage.RelationalSqlGenerationHelper.GenerateLiteralValue(decimal)'
Как фиксить?
Попробуй тип decimal вместо ulong
https://www.devart.com/dotconnect/mysql/docs/DataTypeMapping.html
Короче конвертируй в строки, похоже не получится у тебя ничего сделать. Зачем тебе вообще такой тип понадобился?
Не представляю где он может понадобится, слишком уж большие числа. Для Id уж лучше guid.
Вот смотрите: есть программа, в которой пользователь сперва коннектится с БД(кнопкой), используя имя_БД, логин и пароль из текст_боксов на этой форме, а потом уже начинает манипулировать с самой базой. Сперва я решил всю логику разместить только на одной MainForm, но теперь мне понадобилось получить доступ к контролам этой формы из других классов. Быть может нужно использовать Мэйн Форм только для соединения с БД и в случае успешного соединения -создавать и показывать на экран другие формы, в которых уже будет логика взаимодествия с самой БД? А если мне понадобиться переподключиться к другой бд/или под другим логином? Опять вызывать Мэйн Форму?
И как сделать так, чтобы при создании-вызове другой формы, весь фокус программы переключался только на эту другую форму,то есть чтобы MainForm вообще исчезал для пользователя?
Аноны, что вы посоветуете?
Почему у тебя классы с логикой взаимодействия с БД вообще как-то воздействуют на форму?
Хочется чтоб прям из классов с логикой я мог в форму вставить результат селекта или результат юниксовой команды. Или так делают только обмороженные быдлокодеры и по хорошему надо:
результат_запроса = вызываем метод с параметрами, который возвращает нам результат;
текст_бокс.Текст = результат_запроса;
Так и нужно, а еще лучше чтобы вся логика взаимодействия с БД находилась через какую-то абстракцию для меньше связанности картинок и sql запросов. Но если нужно быстро и немного, погугли что есть static.
friendly class, геттеры. А вообще у тебя проблемы с архитектурой
Классический ASP-это вообще хуета не связанная с дотнетом. Скажи точно, что за версия во втором курсе. Хотя в принципе похуй, MVC щас самый передовой и только его и стоит учить.И да, вкатывальщики, вы заебали. Хули вы по видиоурокам учитесь? Вам вообще удобно сидеть час втыкать в экран, вместо того, чтобы ту же информацию прочитать за 10 минут?
Бтв, достаточно ли будет одних уроков metanit? Сейчас на 11 главе.
Мб есть, что параллельно почитать?
Тяжело даются различные действия с ООП.
>Хули вы по видиоурокам учитесь? Вам вообще удобно сидеть час втыкать в экран, вместо того, чтобы ту же информацию прочитать за 10 минут?
так проще + акцентируется внимание на важных вещах, которые сам можешь пропустить
проще с нуля написать, чем разобрать
>>1038751
Поясню на примере
string[] stroki = new {массиав из миллиона строк}
for (int i1 = 0; i1 < stroki.count; i1++)
{
for(int i2 = 0; i2 < stroki.count; i21++)
{
//Тут идет куча алгоритмов неточного сравнения строк. Хуй и Куй будут считаться одним и тем же словом.
}
}
И вот эту ебату нужно ускорить разложив на ядра. т.к. ядер много, а времени мало.
String[] files = Directory.GetFiles(args[1]);
Parallel.For(0, files.Length,
index => { FileInfo fi = new FileInfo(files[index]);
long size = fi.Length;
Interlocked.Add(ref totalSize, size);
} );
Console.WriteLine("Directory '{0}':", args[1]);
Console.WriteLine("{0:N0} files, {1:N0} bytes", files.Length, totalSize);
>А если взять пример из жизни?
Ты што, дурак?
Parallel просто запускает кол-во тредов по число процессоров с заданной функцией, куда передает объект или индекс.
Что там у тебя падает?
Это копия, сохраненная 27 августа 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.