И сразу вопрос. Пишу я, допустим, блекджек. Есть солюшн. Хочу создать класс для карт и класс для игроков. Куда класть файл с дополнительными классами? Создавать новый каталог? Класть в какой-то из существующих? Если создавать, то как назвать? Существует ли какое-нибудь соглашение, стандартные названия?
>>999281 Если не используешь паттерны вроде MVVM, то похуй куда класть. Сделай папку Classes и клади туда. Названия классов с большой буквы в одиночном числе. Папки во множественном.
>>999368 Разбиваешь строку на массив символов, создаешь 2 локальные переменные, которым присваиваешь значения первого и последнего элементов массива, склеиваешь массив в строку. Вуаля
Вечер в хату, братишки. В чем принципиальное различие между indexer и dictionary? Вроде делают одно и тоже, только indexer более гибок. В книге не очень заморачиваются объяснениями.
сап мамкины архитекторы и простые разработчики, встала задача сделать небольшое winform app. Решил делать по MVP из - за абстракции представления (на будущее), так вот может кто пояcнить чо пихать в Model, понимаю что там должна быть бизнес логика, но в чем она заключается? Это, например, работа с бд, или же вообще вся логика??? поясните дауну
Раскидайте долбоебу вкрадце разницу между методом и свойтством, массивом и списком List<T>. Когда и что лучше использовать. Например для реализации сранног оплейлиста лучше использовать что?
Создал через EF code first базу с таблицами. Теперь в энтити добавил кое-что, из-за чего должна добавиться еще одна таблица, а в прошлых удалиться столбец. Такое же через migration решается? Я его сделал, а он ничего не выполняет. В MigrationHistory пусто, запускаю через команду update-database. Я чего-то недопонимаю?
>>999846 Смотри, во view у тебя например форма, которая связана с презентором, в презенторе ты определяешь основную логику,например пусть там будут евенты от формы и основная логика, а в модели ты уже определяешь реализации конкретные. Например , тебе нужно определить свою логгер который в зависимости от типа сообщения который пользователь выбрал на форме , будет писать сообщение в разные штуки(На консоль,либо файл,можно еще в сеть). Ты пишешь интерфейс ILogger в модели и пишешь в нем метод Log(string message), в конструкторе презентора принимаешь ILogger, и соединяешь евент формы(клик)с этим методом ILogger.Log. В модели пишешь уже конкретную реализацию интерфейса ILogger, например FileLogger, Console logger. Принцип работы - в конструктор презентора передаешь нужную модель(реализацию) и все. Если у других будет критика к мне , You are welcome. Надеюсь я понятно выразился
Нужно запилить бекэнд сервис для сайта. Чтоб он предоставлял всякую информацию из разных источников для последующего рисования пикрелейтед. Как получить информацию вопросов нет. Но вот как реализовать сам этот сервис пока не особо понимаю. Веб прогер сказал что ему в идеале подошел бы веб сервис, что бы он мог тягать страницу с параметрами. Это значит asp.net проект с одной страницей без авторизации? Или есть еще варианты?
>>1000140 Атрибуты - это мета-данные объекта, они ничего не должны делать. Тебе теперь нужно объявить класс, который будет через рефлексию читать твой кастомный атрибут из объекта и что-то делать. Обычно не пишут кастомные атрибуты, так как это сильно бьет по производительности, а используют уже готовые атрибуты и то, если без них нельзя обойтись.
>>1000347 >>1000292 >>1000276 Так-то он прав, декомпилировать шарповские экзешники и либы очень просто, достаточно запустить декомпилятор под дот нет и открыть в нем нужный файл. Всё.
>>1000405 жаба и с# почти одно и то же, платформы разные, они конкуренты, что тебе больше нравится то и бери, c# быстрее развивается со всякими порой ненужными фичами, java консервативна
Есть лист с кучей элементов. Нужно из листа вытащить один элемент, так, чтобы он был удалён из листа, но был возвращен, аналогично js методу splice. Поясняю: Допустим есть лист hui с содержимым [1,2,3,4,5,6] Нужно использовать метод, который удалит элемент и вернёт его. Например: var elem = hui.Yoba(2); elem == 3 // true hui == [1,2,4,5,6]
>>1000507 enum задает перечисление , например цвета - синий,красный и тд. Каждому цвета сопоставляется число которое и передается программе когда ты вызываешь Color.RED (например 1), чтобы твоя программа понимала что за цвет ты выбрал,ибо она умеет работать с числами, а названия придуманы для удобства разрабов чтобы они не цифры писали а внятные имена. Словарь является хеш таблицей. При добавлении элемента в словарь(например строки) для нее вычисляется ее хешкод. Этот хеш код сопоставляется с индексом в массиве. И в этот индекс записывается данная строка. Хеш код построен так что для разных строк он генерирует свое число, так что он с высокой долей вероятности гарантирует что у двух разных строк будут разные коды, а соответственно разные индексы в массиве. Словарь дает возможность быстрого поиска,например пользователь вводит строку и тебе нужно узнать,есть ли она в хеш таблице(читай, в твоем массиве) или нет , если бы это был просто массив ,то тебе нужно было бы перебирать все элементы,что довольно долго, а в хеш таблице тебе нужно лишь вычислить хеш код строки которую ввел пользователь, а как мы знаем хешкод соответствует индексу в массиве, то тебе достаточно проверить - пустой этот индекс в массиве или нет. Словарь дает быструю вставку в коллекцию и поиск по ней. Enum предназначен чтобы к примеру ограничить выбор разработчика(к примеру ты определил что в твоей проге поддерживаются только красный и синий цвета, и ты хочешь чтобы другие не могли выбирать розовый,потому что он не поддерживается) таким образом пользователь или другой разработчик сможет использовать только те перечисления которые ты явно объявил.
В каком порядке будут вычисляться функции a, b и с в этом: a() + b() * c() выражении?
В учебнике пишут, что по спецификации подвыражения вычисляются всегда слева направо (т.е. это будет а, b и с), но тогда нахера нужны приоритеты операций, почему они только на значения распространяются? Даже если так, то как быть с более сложными выражениями типа a() + b(c())?
Ананасы, а кто то знает реальное применение на проектах такой фичи как битовые флаги и вообще подразрядные операции? Ибо конечно классно что я могу писать в перечислениях Read=0;Write=1;ReadWrite=Read| Write; но нахуй это надо?
Что есть такого из ебанутых парадигм программирования, каких-то наркоманских (но не просто в виде используемых символов языков) языков, интересных, но малоиспользуемых методах? Посоветуйте что-то по этому поводу.
>>1000572 компилятор видит операцию и помещают ее в стек последовательно например у тебя есть Main(){ var L = a() +b(с()); } Компилятор видит мейн и добавляет его в стек,на вершине стека висит пока что вход в метод мейн,пото создается переменная L, далее он видит a() добавляет сверху мейна метод а() и вычисляет его, потом видит b(), и видит что ему передается c() , теперь на вершине стека висит c(). В итоге видим такую "лестницу" из методов . c() b() результат a присваивание(=) main() Сначала в вершины стека достается c() и выполняется , и убирается из стека, далее выполняется b() и так же удаляется из стека, потом результат a() , далее выполняется операция присваивания , компилятор видит закрытие метода main() и в конце концов из стека удаляется метод main() и теперь он пуст, программа выполнилась
Даже по твоему описанию, почему в первом случае сначала будет вычислен a(), ведь компилятор знает при приоритеты, а значит сначала должен вычислить b и с?
>>1000585 так он честно сказал что слева направо если a()+b() то сначала в стек добавляется а и потом b, может он это имел ввиду , а вообще это все описано в CLR via C# рихтера, там небольшая глава этому уделена в самом начале , очень подробно расписано
Нет, там точно вся тройка имеется ввиду. Я тестик написал в консольке, даже скобки добавил: a() + (b() * c()) и все равно вычисляется в порядке a, b, c
>>1000587 так а какая ему в хуй разница что вычислять первым , он сначала выполнит вызов всех методов по порядку а потом уже отправит результаты в стек для операндов
>>1000591 суть в том что выполнение методов это одно, а выполнение выражения это другое, сначала выполняются все методы по порядку и вернутся результаты их значений , потому что компилятор не может на ходу формировать приоритет операций(+,- и тд) и последовательно их выполнять. Он сначала пробежит по выражению, составит стек вызовов методов по порядку, выполнит его, вернет значения и выполнит выражение подставляя то что вернули методы, при этом будет сформирован свой стек операндов , в котором и будет правильный порядок по приоритету , но вместо методов будут уже подставлены числа которые вернули методы, надеюсь я понятно выразился
а как ты передашь метод в метод? посредство делегатов? тогда другой вопрос. Если ты имеешь в виду что метод A() в себе вызывает метод B() а тот в себе C(), то они будут выполняться C() потом B() а потом A()
Имелось ввиду последнее, выходит нет правила вычисления сначала методов слева направа, а все определяет сложность выражения. Мне просто не понятен тогда пиздёж автора.
>>1000632 ну ты же понимаешь что при выражении a(b(c))) невозможно сначала вычислить a, не имея результата b и с, потому что они передаются в a как аргумент
Ну это первое что пришло на ум, когда я прочитал. Просто автор вроде толковый, я часто сначала списывал некоторые его фразочки как на фигуры речи или неточные, но потом оказывалось что он был абсолютно точен как в учебнике по матану и это я поначалу не уловил до конца суть. Поэтому подумал тут какой-то подвох есть.
>>1000643 возможно лажа с переводом если ты читаешь на русском и он имел ввиду порядок добавления в стек вызова или что то типа этого. Сам я книгу его не читал, так что пояснить не могу.
>>1000360 Прав не до конца. Ломают те программы, которые изначально не пытались защитить. Если взять более менее дорогую софтину, то после декомпиляции можно получить два ведра хуев.
Поясните про base64 декодинг. Разбил я значит строку на части по 6 бит и конвертировал в base64: "thi" = 011101000110100001101001 (24 бита) 011101 -> 29 -> d 000110 -> 6 -> G 100001 -> 33 -> h 101001 -> 41 -> p
Как теперь вернуть "dGhp" в "thi"? В гугле одни отсылки на MSDN и байтоёбы (мне нужно сделать перебором символов, без >> сдвигов)
>>1000852 Сделай программку, которая будет трэкать время. То есть сколько времени потрачено в определенной программе. Если это браузер, то трэкай сайты. Времени даю неделю, можешь начинать.
>>1000717 >>1000714 Оказывается, там сразу после return true; стоял слэш "/", но Xamarin Studio по каким-то причинам его не отображала, но компилятор его видел и падал. Перезапустил студию, слэш стал виден.
>>1000962 >VS Community edition Пока он запускается, можно успеть сходить попить чай, покурить и прочитать все треды на нулевой /pr/. >VS Code Он хорош для скриптов, но для компиляции не подходит - ни встроенного дебага, ни компилятора, только консолька и ебись как хочешь.
> Пока он запускается, можно успеть сходить попить чай, покурить и прочитать все треды на нулевой /pr/. Ну так сходи, попей. Ты ее что, второй раз запускать будешь? > ни встроенного дебага, ни компилятора Дебаг - чек. Компилятор - чек.
>>1000997 >Пока он запускается, можно успеть сходить попить чай, покурить и прочитать все треды на нулевой /pr/. Замерил с таймером - VS 2017 запускается 3 секунды.
>>1000997 студия запускается ~8-10 секунд много чего зависает. правый клик по коду занимает 3-4 секунды, навожу на Add - 6 секунд. даже ctrl-x в первый раз занимает 3 секунды. WPF ахуенен :))))
Как через фильтр убрать из словаря все элементы, в которых значение меньше определённого? Я пытаюсь вот так:
rating = rating.Where( player => player.Value < 20);
Но получаю ошибку: >Error CS0266: Не удается неявно преобразовать тип "System.Collections.Generic.IEnumerable<System.Collections.Generic.KeyValuePair<string, int>>" в "System.Collections.Generic.Dictionary<string, int>". Существует явное преобразование (возможно, пропущено приведение типов).
В чём дело? Значение - число, сравниваю тоже с числом.
Сап. На шарпе делал граббер для myvi.ru. Суть в том, что ему сначала дается ссылка на сам видос на сайте, из этой ссылки извлекается линк на плеер, из линка на плеер извлекается api-call, из него же, в конечном итоге, воруется ссылка на mp4. Ничего лучше не придумал, но и эта параша не работает, выкидывая мне вот это "412 - определенное клиентом предусловие не выполнено при оценке на веб-сервере". Причем если переходить по той же api-call ссылке в браузере, то все вполне работает и можно таки спиздить видосик. Закачивал сурсы при помощи WebClient() и Request-Response, но чет не вышло. Реквестирую помощь.
>>1001192 Вот там раскидано. Если на словах, то подается прямая ссылка на видос, из нее берется ссылка на плеер сайта, из этой ссылк тащится api-call, из api-call тащится юрла на мп4. Я смотрел, какие запросы посылает мозилла и пытался подобные посылать, но ничего не вышло.
>>1001251 Вот автоматная грамматика для парса. На кусок кода где string dick и HttpClient() можете вообще внимания не обращать - я его забыл закомментить
>>1001252 Из сурса страницы с видосом вырвать <meta property="og:video:iframe" content="..." /> и перейти; Из этого линка вырвать dataUrl:'..' и перейти Оттуда вырвать http://fs.myvi.ru/... и перейти Так формится линк на мп4 или флв, в зависимости от того, что там заливали
Надоело пердолиться с консолью, полез в ВПФ и охуел. Где main()? Это ведь "точка входа" в программу, как без него?! Любая программа это по сути просто луп, так? Где тут луп? Стал гуглить. Оказывается, main() таки есть, но в генерируемом коде. И что теперь делать? Помогай, анон. Я тупой. Я к такому оказался не готов и теперь не могу понять, как вообще что-то делать.
>>1001337 Есть 2 варианта: прописать в app.xaml стартовый uri и тогда wpf сам создаст главное окно, которое ты там укажешь, либо удалить это место и прописать в настройках проекта стартовую точку, в которой ты создашь главное окно руками или через ioc-контейнер.
>>1001337 Забей хуй на впф, там костыль на костыле, особенно если начнешь изучать MVVM. Кроме того, эта технология настолько дохлая, что никто не касался ее обновлений уже лет 5. Даже в этом треде тебе прямо говорят - для C# десктопа не существует, шарп нужен только в вебе, а именно ASP.NET, и в геймдеве, а именно Unity. Всё. Если очень хочешь пилить программки для десктопа, то тебе в джаватред.
>>1001416 >прописать в app.xaml стартовый uri и тогда wpf сам создаст главное окно, которое ты там укажешь То есть как в дефолтном WPF шаблоне? >удалить это место и прописать в настройках проекта стартовую точку, в которой ты создашь главное окно руками В сгенерированном коде куча всякой хуйни #препроцессорные директивы и прочее, оно нужно? Алсо, Арр класс для чего?
>>1001421 Ты сделал меня грустить. Почему жаву хейтят?
>>1001451 >Почему жаву хейтят? Не знаю, но я после ебли с впф и мввм попробовал javafx и сделал свой вывод, совсем неприятный для любителей шарпа. Попробуй сам и узнаешь, хуле.
>>1001460 Я не программист так то. Так, совсем чуть-чуть. Долго выбирал, шарп показался отличным выбором - и под винду, и под андроид, и УНИТИ, и - в будущем - годот. Охуенно же. А теперь опять хуй пойми. Мне ведь так, для себя.
>>1001451 >То есть как в дефолтном WPF шаблоне? Да. В сгенерированный код вообще не лезь, нах он тебе нужен. https://simpleinjector.readthedocs.io/en/latest/wpfintegration.html Вот тебе пример, как свою стартовую точку впердолить с использованием ioc-контейнера. Без него все то же самое, только все объекты сам руками создаёшь.
И снова кодировка. Пытаюсь че то написать на ASP .Net, возникла проблема. Создаю локальную базу данных, создаю таблицу, заполняю, и почему то вместо русских символов в обозревателе таблицы выводит ????????? ???????. Тип полей стоит nvarchar, в чем еще может быть проблема??
>>1001421 >Кроме того, эта технология настолько дохлая, что никто не касался ее обновлений уже лет 5. Последняя версия - июль 2015 >Если очень хочешь пилить программки для десктопа, то тебе в джаватред Последняя версия javafx - март 2014
Может, тебе с такими свежими и актуальными знаниями укатиться отсюда, а?
>>1001451 >Почему жаву хейтят? Из-за умников которые рассказывают про необновляющийся 5 лет впф и свежую javafx на замену
Хочу написать метод, который строит отчеты. В метод собираюсь передавать имя отчета, по этому имени метод должен взять модель нужного отчета и запрос для него, заполнить модель и передать все это в нужную вьюшку. Затык идет на стадии объявления модели - пытаюсь объявить её через дженерики, а там в параметр нужно передавать тип. Его можно получить через рефлексию, но как-то это некрасиво, может есть готовый красивый паттерн для таких случаев?
Понял, что тэмплейт ВПФ создаёт сгенерированный Main(), вызывающий унаследованный от System.Windows.Application метод Run(). В Visual Studio через Go to implementation можно посмотреть только комментарии, а хотелось бы понять его реализацию. Можно где-то посмотреть код или хотя бы алгоритм в общих чертах? На msdn тоже ничего не нашёл.
Не понятно следующее. Программа "существует", пока исполняется main(), а тот, в свою очередь, завершается только после выполнения run(). Но программа из тэмплейта может выполняться бесконечно, значит, в run() - или в вызываемых им методах - должен быть какой-то цикл, типа while (true){...}, так?
Господа, возникло пара вопросов, помогите разобраться. Сам я не программист и вкатываться никуда не собираюсь, скорее любитель и для души.
Есть класс, который опрашивает один девайс через каждые 5 секунд используя при этом unmanaged библиотеку, результаты опроса пишет в лог файл. В связи с этим вопрос, как бы мне точно организовать все это дело так, чтобы за эти пять секунд успеть обработать данные с девайса и записать в лог-файл, или хотя бы знать, что я не уложился в этот период (погрешности все дела). Если файл большой, то время записи ведь больше будет? Или библиотека по какой-либо причине долго будет обрабатывать. В какую сторону копать?
Как же у вас тут лампово, и как же мне нравится оппик. жаль, что Шарп годится только для веба, но при этом сервера на шиндовс это в принципе не очень хорошо
>>1001838 >мобильник >В феврале 2016 Microsoft объявила о приобретении компании Xamarin. Вскоре после покупки Microsoft объявила о закрытии разработки моста Android и поддержки данных приложений в Windows 10. Главным направлением компании остался мост iOS. Что-то не густо. Зачем он нужен без поддержки 80% всех телефонов?
Хочу шустро кабанчиком вникнуть в MySQL, что лучше почитать общего представления, желательно сразу с практикой? Какие СУБД используются при работе с ASP.NET?
>>1002276 Разве? >>1002249 Для андроида есть вещи получше, для десктопа он так себе в принципе. >>1002252 А в других тредах что? Либо хуи за щеку, либо хуесосят язык, лол.
Если хочешь графический клиент, то ставь SmartGit, но основные команды для консоли нужно знать.
Заодно посмотри и про Team Foundation Server: https://msdn.microsoft.com/ru-ru/library/hh529827(v=vs.110).aspx Это система управления проектами (задачи, багтрекер и т.д.), часто используется при .NET разработке. Раньше там была какая-то своя корявая система контроля версий от Микрософта, теперь перешли на православный git
Из бесплатных лучшая - PostgreSQL, чуть побыстрее, но беднее возможностями - MySQL (удобна для ORM, если не используешь триггеры, хранимые процедуры и т.д., а только CRUD).
Коммерческих основных 3 - MS SQL Server, Oracle Database и IBM DB2. Первая есть только под винду, остальные кроссплатформенны. У всех есть бесплатные урезанные версии (в основном ограничения по размеру базы).
Встраиваемые СУБД - Firebird (Embedded конфигурация) и SQLite, хранят базу в памяти и могут записывать/считывать из файла. Сервера у них нет (точнее, он в виде динамической библиотеки, подключаемой к приложению). Позволяют делать портабельные приложения с базами. SQLite считается более быстрым, но не полностью поддерживает стандарт SQL, не может работать в многопользовательском режиме (когда несколько юзеров подключаются к одной базе одновременно). Для C# к SQLite написан враппер (т.е. работа напрямую без ADO.NET), можно скачать на sqlite.org
>>1002511 >>1002514 Родной для винды и от того же производителя. Обычно используют весь стек от микрософта: Windows, Office, .NET, SQL Server, Sharepoint. Считается, что там все уже отлажено и нет багов. Для переносимого софта, когда базу нужно носить с программой, лучше SQLite.
>>1002581 ADO это для C/C++ и Delphi, ты про ADO.NET? Это в .NET главный фреймворк для работы с базами + ORM надстройка Entity Framework с LINQ поверх него. В Mono поддерживается. Портированный с жабы NHibernate тоже использует ADO.NET. Вообще проблемы с кроссплатформенностью в .NET в основном у десктопного гуя. У нас в конторе клиент для ERP системы из-за этого пишется на Eclipse/SWT (дерьмо полное), т.к. нужна поддержка Linux. Сейчас думаем, переходить ли на Qt или делать веб-интерфейс. А вот серверная часть, со всеми веб-сервисами, демонами и т.д. работает без проблем под любой ОС.
while (true) { var a = CustomClass.ReadStatus(); Thread.Sleep(5000); }
Суть в том, что мне нужно делать опрос через каждые 5 сек, но ведь поведение метода ReadStatus по времени может быть разным, а это значит, что следующий опрос будет не через 5 сек, а 5 сек + время работы метода. А как мне точно то уложиться в этот период?
>>1002707 С# охуенный язык, наверное лучший из всех. Но вот когда доходит до дестопа, то WPF сосет. Ближайший пример вот >>1002693 и такой хуйни в джаве внезапно нет.
>>1002626 Если уж на то пошло, то реалтаймовые приложения можно запускать только на реалтаймовых осях... и, внезапно, можно писать на языках с GC - только GC должен поддерживать реалтаймовость (а именно - возможность квантовать время сборки)
Разобрался сам, я юзал кастомные шаблоны данных, задал CellTemplate, а CellEditTemplate забыл, так что WPF не знал что ему новую строку вводят, поэтому тупо ее не создавал. Теперь у меня другя проблема, мой кастомный темплейт один как для показа ячейки, так и для ее редактирования - поэтому одна и та же портянка кода DataTemplate дублируется. Как то можно во дном месте прописать, а потом повтороно использовать? Более того, в гриде два столбца одного типа, так что этот шаблон 4 раза пришлось скопипастить. Здесь тоже можно что-то сделать?
Ты прав, за портянками разметки пропустил что внутри шаблона контрол биндится к данным, а там надо имя свойствта цели прописать. Выходит вся идея по обобщению фейл, раз у каждого столбца своё свойство привязки.
Так как джавапетухи слишком высокомерные спрошу тут. У джавапетухов есть аналог Визуал студии? Как понимаю комунити версия интелджи идеа не поддерживает вебразработку? Ну и нахуй она нужна тогда, такая ахуенная? Пиздец это надо уметь перескачить по жлобству майрософт.
ASP.NET MVC. Как мне передать в View модель из [HttpGet] метода, ввести свое значение в поле модели и получить её в [HttpPost] методе? Проблема в том, что после отправки формы все поля, кроме введенного в текстбоксе, обнуляются. Да, я неофит в аспе.
Я тут написал небольшой консольный блекджек. Можете глянуть? Что нужно исправить, что доработать? Где проёбы в архитектуре? https://github.com/Perekoter/Blackjack
>>1003389 1) Naming things и конвенции 1.1) Зачем нужна папка Classes? Почему структура директорий не соответствует структуре неймспейсов? 1.2) Почему названия методов у тебя идут с маленькой буквы? Конвенция в C# - названия методов начинаются с заглавной буквы 1.3) Намешанные в одном месте табы и пробелы - расстел в любом приличном обществе
2) Структура программы 2.1) Почему почти вся логика программы находится в Program.cs? Погугли SRP. 2.2) Метод Start занимает овер 100 строчек, его нужно разбить на подметоды. 2.3) В коде тут и там мелькает if (player.User). Означает что кто-то обосрался с абстракциями 2.4) Опять насчет абстракций: class Player выглядит так, как будто он должен имплементировать интерфейс IPlayer и иметь две реализации: HumanPlayer и AiPlayer
3) Code style 3.1) В программе понамешен Linq и императивный for. Linq - хорошая идея. Императивный for ведет к багам. 3.2) Сложение строк - плохая идея. Почитай про интерполируемые строки и string.Format() 3.4) Магические цифры в коде (например, 21) должны быть константами. В противном случае заебешься менять это магическое значение.
Аноны, планирую вкатываться бэкендом говнокодить на аспе, но тк нужно понимать что там у нас во фронте, то начал учить хтмл, ксс и жс. Какого уровня владения всей этой парешей будет достаточно чтобы уже приступать к аспу?
Схарпобоги, какую книжку или мануал можно почитать, чтоб потом создать приложение с кокошечками для управления настройками безопасности и конфиденциальности Internet Explorer? Гугл что-то меня понять не может :3
Анончики, внезапно вопрос, а разработанный проект на asp.net MVC можно скомпилить в бинарник? Или оно не сервере так и развертывается в открытом виде с исходниками?
Для кого эта книга? В ангельский могу, но уходит дополнительный труд на понимание текста, через 5-6 страниц проработки материала, желание продолжать в 0 пропадает.
>>1003771 Обложку я прочитал, но с текта орнул. Неплохо знал плюсы и алгоритмы несколько лет назад, сейчас мало что помню, надеюсь в процессе вспомнить.
>>1003830 Формочки на UWP можно запускать на всех виндах, виндоус фонах, сёрфесе и хуящике-один. Маколинукса в планах пока нету, но уже в плане поддерживаемых платформ лучше, чем другие технологии от МС
>>999275 (OP) Я тут на днях увидел котлин в действии и охуел какой он пиздатый, джетбрейнс любят шарп, но ебучей джавапараши слезть не могут, поэтому вдохновились шарпом и сделали пиздатейший язык. Решил по старой памяти на ведро написать что-нибудь и просто охуел. Не от охуенности языка, а от того, как ебучая параша jvm не дает этому пиздатому языку простора - везде тебе встречается ебаная хуйня, например, хуевейшие дженерики. ПОсле этого я гораздо сильнее стал понимать, что шарп - самый ахуенный язык. Правда в последнее время развитие медленное стало, но все равно.
>>1004099 Да просто не так много чисто языковых фич, которые нужны прямо вот вообще срочно и которых в шарпах до сих пор нет. А в том, что касается окружения, MS ебашит вовсю: открытие исходников, roslyn, .net core, asp.net core, ef core, uwp, .net standard, поддержка линупса, полная переработка портала с документацией.
>>1004136 Ебать ты тупой, какой тебе код. Твой вопрос решается за 2 секунды в гугле.
>Наблюдатель > Но к сожалению ни там, ни там пункта Windows Store. Вероятно при установки Visual Studio не все галочки были поставлены а значит и нет нужных templat'ов. 1. Найди в списке установленных программ Microsoft Visula Studio, выбери её и нажми "Изменить" 2. Проверь выбраны ли соответствующие компоненты Windows Store App SDK или как-то так. Если они не выбраны то выбери их и все автоматом установятся. Название компонента я возможно не точно написал, сейчас нет возможности глянуть, только вечером.
Add: Windows Store App уже устарели. Теперь это Windows Universal App ну и template теперь назвывается Visual C#->Windows->Universal->Blank App (C#) это про 2015ю студию. Не благодари, но код бросай.
Нид хел, дрочу асп по тутору моша. Пилю кастомный валидатор и столкнулся с пикрил, у него в курсе все заебок, причем саксес - это бул, а оно мне ебет мозг. Подскажите в чем трабл?
>>1004118 для меня киллер-фичи котлина это сахарок в виде дата классов и обилия конвеншенов, это избавляет от тонн кода для поддержки dto, плюс ебля за null'ы. С этим шарп бы стал языком богов, а не языком царей.
Как закодировать byte[] в string и вернуть обратно в byte[] без потерь? Encoding.UTF8.GetString, Encoding.UTF8.GetBytes проебывают или пидорасят часть информации.
>>1001850 Ага, есть внутри такой цикл, принимает сообщения от винды всякие типа выключения, событий клавы и мыши, таймеры - если есть обработчик - передается управление ему. Например жамкнул ты клавишу Х, процессу пришло сообщение WM_KEYDOWN, обработчик внутри Application нашел активное окно и передал ему Key_Down, в окне нашелся активный фокус клавиатуры в текстбоксе - событие ушло ему, текстбокс вызвал функцию, которая перевела код клавиши и состояние клавиатуры в букву Х, поменял Text а потом дернул твой обработчик TextBox1_OnKeyDown. Как только обработка закончилась - происходит обработка следующего события, либо поток засыпает до следующего события. Поэтому если ты что-то тяжеловесное нафигачишь в обработчике - приложение визуально "повиснет"
>>1004431 Convert.ToBase64String, Convert.FromBase64String из коробки (можно кнешно нагуглить еще реализации base16,base32, ascii85, но стандартно - base64) Про использование кодировок забудь, они для только string->byte[]->string, не наоборот, потому что в любой кодировке есть наборы байт, которые символам не соответсвуют
Салют, нужен совет. Есть задача сделать клиент серверное приложение. Функционал примерно такой: просто чат с регистрациейклиенты авторизируются/регистрируются через сервер, и передают друг другу сообщения опционально вложения. Что мне лучше использовать для реализации серверной части? WCF? Голые сокеты/классы TCP/IP? Или есть что нибудь еще более модное и современное?
>>1005015 Я не хочу йобу выкатывать, я просто на крестах последние 3 месяца писал, а тут работу нашёл на сисярпе, вот сейчас за неделю хочу навыки освежить, потому и решил написать клиент серверный чат, но до этого, в общем то, никогда ни с чем кроме именованных труб не работал, а Socket/TCP вроде очень старые ребята, и я хотел узнать, не потеряли ли они свою актуальность. Хотя про mesh сети посмотрю, если ты конечно не тралишь.
Есть код в формах на подобии такого: var control = new MyControl(); control.SomeEvent += SomeHandler; form.Controls.Add(control); //потом мне нужно его убрать form.Controls.Remove(control);
Ворос, ГЦ же вычистит контрол, если я не отпишусь от события? Нужно ли диспозить контрол, если я не добавлял работу с неуправляемыми ресурсами?
>>1005164 Контрол - IDisposable. Внутри у него есть анменеджед ресурсы по умолчанию, даже если ты не писал их. Контрол диспоузить надо.
Control будет держать form живой, если не отписаться от эвента. Устраивает такое - не отписывайся. Однако, если нужно четко контролировать время жизни всех объектов - лучше отписаться.
Ку, ребята, подскажите что делает и что обозначает (double)? Вот код для примера: Console.WriteLine((double)s / k) Получается double в скобках преобразует переменную s в тип double?
Аноны, подсобите, получил тестовое задание на джуна. Нужно написать приложение, которое может загружать и редактировать большие файлы.
Дополнительно: Пакетная обработка нескольких файлов.
Я так понимаю это обработка в несколько потоков?
При каждом новом срабатывании кнопки USE я должен создавать новый поток, для обработки другого файла, во время обработки текущего. Какую инфу почитать насчет ресурсов, что бы дополнительные потоки не создавались, когда есть не занятые уже созданные?
>>1005283 > Какую инфу почитать насчет ресурсов, что бы дополнительные потоки не создавались, когда есть не занятые уже созданные? Сделай так что бы незанятых не было. Поток делает свое дело и в конце совершает сиппоку. И все тогда будет хорошо.
>>1005283 > Я так понимаю это обработка в несколько потоков? Пакетная обработка означает возможность указания нескольких файлов для редактирования. Что именно это значит со стороны твоей компании — хуй знает. С многопоточностью напрямую это не связано, но на винтах с дорогим I/O она поможет тебе выиграть по времени из-за NCQ и считывающей головки, гуляющей по более рациональной траектории, конечно.
> Какую инфу почитать насчет ресурсов, что бы дополнительные потоки не создавались, когда есть не занятые уже созданные? Я не понимаю, как тебя с таким нулевым опытом вообще рассматривают как кандидата. Начни хотя бы с пула потоков.
Перекатываюсь на шарп с питона. В IDE питона была встроенная документация, которая позволяла быстро проглядеть синтаксис команд и справку по каждому классу. Какая есть такая же простая документация по C#? Лезть каждый раз в интернет или на docs.microsoft не очень удобно.
>>1005463 Есть то ли плагин, то ли в настройках шняга, чтлбы по ф12 открывалась мсдновская документация по методу/классу/вотэвэр. Сам не пользуюсь, так как 500к/нс принципал фриланс архитект, но недавно наткнулся на скрины - выглядело удобно. Короче гугли анон вкатывайся в го, нахуй тебе этот сишарп.
>>1005188 Руками - ни по каким. Партиал нужен если есть код от автогенерации некоторым инструментом, в который лучше руками не лезть. Другие применения возбраняются.
Random PishovNahuy = Random(); int[] Sich = new int[10]; // Массив
for(int i = 0; i<10; i++) Sich = PishovNahuy.Next(1, 30); //Заполнение случаными числами от 1 до 30
Min = Sich[0]; //Присвоение переменной минимального значения первый элемент массива
for(int i = 0; i<10; i++) //Вывод Массива на экран Console.Write(Sich + " ");
Console.WriteLine();
for(int i = 1; i<10; i++) //Сравнивает Минимальную переменную с элементами массива от 2го до последнего. { if(Sich < Min) Min = Sich; }
Console.WriteLine("Минимальное значение массива: {0}", Min);
Number = 0;
for(int i = 0; i<10; i++) //Ну ты понел if(Min == (Sich / 2) ) { Console.WriteLine("Элемент в два раза больше минимального {0}", Sich) Number += Sich; }
Console.WriteLine("Сумма элементов в два раза больше минимального{0}", Number);
}
}
Как то так. Говнокод не проверял, если что. Если помогло подкинь деньжат на Battle.Net Krema#2375, по возможности. Почувствую себя гомофрилансером 100К/парсек. Ну и на овердроч накоплю может когда нибудь.
>>1005640 Ну если найти минимальный и потом все, которые в два раза, то это 2н, это линейный рост, оптимально, наверное. Можно ещё отсортировать за nlogn, взять первый элемент, по log n бинарным поиском найти первый элемент, больший чем в два раза первого и сложить все, начиная с него и до конца. Но это хуепляски и дольше, хотя на собесе наверное понравится кому-нибудь.
Дали тестовое задание написать rest сервис на C# и ASP.NET Web Api. На сишарпе и дотнете никогда не писал. Работал только с жавой и жсом. Что почитать посоветуете чтобы по-быстрее вникнуть?
>>1005758 Мастером создаёшь проект - веб сайт, оставляешь галку веб апи. Далее по любым гайдам на ютубе, там сложно что-то сделать не так. >>1005785 Гайд нормальный.
Работяги, вечер в хату. Уже полтора года вкатился в ентерпрайз на C#. Хочу у вас попросить норм источников про многопоточность, а то не шарю в ней нихуя, а потрогать хочется
>>1006070 Какой же дебил, пиздец, мне понадобилось 2 недели чтобы изучить шарп с нуля после С++ и сходу использовать async/await, но работу на нём мне естественно не предложил никто.
>>1006134 Че там изучать? Это же сиподобная пораша. Синтаксис и с нуля за три недели изучается. А вот всякие фреймворки, паттерны солиды и прочий синтаксический сахарок приправленный ООП парашей это конечно подольше.
Хелп, пишу тестовое на джуна, приложение для обработки больших текстовых файлов. В отчете надо написать, какие программные средства необходимы для запуска и работы программы. Что написать, кроме шо нужна винда и фрейворк 4?
>>1006070 Сколько денег получаешь? В каком городе работаешь?
Про многопоточность, в общем-то, в любой книге из шапки можно прочитать. Не пытайся копипастом разобраться из чужого кода. Хреново это, не понимать сути.
Нужен хелп, есть сайт, в который я могу вбить инфу, после этого появляется окно со скачкой джейсон файла. Моя цель написать программу которая позволит через консоль вбивать эту инфу и читать инфу с нашего джейсон файла. Подскажите как это ебнуть или хотя-бы ссылку где можно почитать каким это образом делается, всем заранее спасибо.
Нужен хелп, есть сайт, в который я могу вбить инфу, после этого появляется окно со скачкой джейсон файла. Моя цель написать программу которая позволит через консоль вбивать эту инфу и читать инфу с нашего джейсон файла. Подскажите как это ебнуть или хотя-бы ссылку где можно почитать каким это образом делается, всем заранее спасибо.
аноны, ye;ty годный пример с многопоточностью, а именно интересует что-то такое: есть метод из которого в цикле запускаются потоки и после цикла выполняется некоторое действие. так вот действие должно выполниться только после завершения всех потоков. т.е. примерно так: while(..) { TaskFactory.StartNew(()=>DoSomething()); } TaskFactory.WaitForAll();//вот тут должно быть что-то, что ждет завершения всех потоков из цикла DoSomethingAfterAlllThreadsEnded();
>>1007012 Вообще, насколько я помню, про Parallel больше полезной инфы, чем по тем же тредам и таскам возможно, потому что применение гораздо более узкое, или я к моменту изучения параллел уже матерым стал в многопоточности/асинхронности Вообще, можешь посмотреть здесь. Вроде достаточно подробно и ясно написано, учитывая что описывать там не так много.
Есть годный туториал по наследованию в C#? Чтобы поясняли за правильные имена полей/методов и давали правильные разрешения сразу. Хочу начать в правильное ООП, чтобы класс Human наследовался от Mammals, а тот в свою очередь от Animals. Ну вы поняли.
Вопрос по WCF. Я правильно понимаю, что у клиента в объектах классов службы с атрибутами [DataContract] нет смысла вызывать методы/конструкторы, потому что у клиента он выступает просто контейнером и никакой реализации там нет? Это всё при условии, что я классы не добавил в ссылки у клиента.
Время тупых вопросов. Пишу крестики-нолики для произвольного размера поля (не суть). Есть двумерный массив представляющий игровое поле: gameField[i,j] i - индекс строки, j - индекс столбца (обычно ведь так?). Есть морда на винформс, а ней как известно x - вправо, y вниз. Так вот, при обработке нажатия как лучше писать ...gameField[y,x]... (выглядит не оч, обычно [x,y]), ...gameField[x,y]... (выглядит норм, но под капотом получится неявное транспонирование - высота - это ширина, ширина - высота а пол это лава). Как лучше?
А какой смысл ставить тяжелую Visual Studio, а не например сравнительно крохотный и легкий SharpDevelop? Получится ли написать серьезный современный проект на последнем?
>>1007322 Нет, он, скорее всего посоветует тебе таки прочитать хотя бы базовое ООП и будет прав. (разделяй логическое и программное представление, все твои собаки, зомби и игроки - один класс с разными параметрами и компонентами(учи агрегацию), а не куча классов)
>>1007326 >все твои собаки, зомби и игроки - один класс А туториалы говорят, что это все разные классы, которые наследуются от Animal, например. Хочешь сказать, они врут?
>>1007334 Да, всегда бесило что этим поясняют ООП, это совершенно не соотносится с реальностью, утка - не наследник животного, утка - это животное у которого есть (звукоиздающий объект = клюв), (объект перемещения = утиные лапы и крылья) ну и мозг - мозг с поведение = поведениеУтки
>>1007340 Всё равно подход с зомби, дог и плеер неверен, это можно сравнить с разными окошками, у одного серая рамка и чёрный фон, у другого белый фон и синяя рамка, они одного класса, но разные параметры. Да и посыл в том, что если тебе нужно что-то писать много раз, то скорее всего на самом деле стоит разобраться с абстракциями.
Скажите а как пишутся, например, всякие библиотеки которые напрямую работают с водом выводом. Например вот библотека Басс.ДЛЛ, или дотнетБассДЛЛ. Вот как она написана? Я могу такую же сделать на шарпе? И вообще зашквар ли использовать сторонние беблиотеки в проектахъ Для портфолио или лучше все и все писать самому? Ну вообще интересно как писать подобные шутки, анпример для работы с сетью. Может есть какая то книжка?
>>1007342 Давай тогда туториал, в котором это объясняется. Собственно, я с этого вопроса и начал.
>>1007340 Ну я вполне реальные классы описал. Это я с юнити пытаюсь подружиться, и хочу сейчас определиться со структурой классов для игровых персонажей. Так что да, зомби, игрок, собака это все реальные примеры с методом Kill().
>>1007345 Хз где взять туториалов, слишком много источников читал, везде по чуть-чуть понимал, могу пояснить почему твои зомби плохо.
Вот смотри, у тебя зомби и собака, чем они отличаются? Скином и анимацией, колвом хп, поведением, атакой, намного легче вместо кучи классов сделать один "персонаж", задать ему хп, скин, поставить нужные анимации, приделать компонент атаки и компонент управляющий, который реализует нужную логику поведения персонажа, конечно, если ты не планируешь много делать, такой подход излишне сложный и можно как ты делаешь, но с описанным мной подходом, ты сможешь например просто создавать ассеты и через xml создавать разные виды врагов, мб чуть тинт спрайта поменять или сменить размер модельки, создавать новых врагов, добавляя строчки в файле, а не создавая новый класс и рекомпиля проект, ну и не придётся ебаться с рутинным созданием новых классов ради одного нового подвида.
С поведением тоже просто, твой килл просто вызывает плей деасаниматион, который ты просто делаешь полем персонажа. Типо такого. Юнити же как раз со своей компонентной системой этому способствует.
>>1007344 Нихуя тебя не понял, какой еще басс.ДЛЛ/дотнетбассДЛЛ. DLL в .NET и DLL в компилируемом в машинный код языках - разные вещи. Как и exe у .net и у крестов, например. Большие сторонние библиотеки - не зашквар. Во многих конторах используют всякие EF и прочие фреймворки/АПИ. Криптографию тоже рекомендуется брать уже готовую и проверенную (типа crypto++), а не писать самому. Как писать - просто берешь и пишешь, хули тут думать. У C# есть как классы для реализации своей хуйни, так уже и готовый WCF. Книги хуй знает, не умею читать.
>>1007474 поясни за WCF, очень часто вижу в вакансиях требование к этой хуйне, так и не вижу адекватного описания, везде очень абстрактно. За 2 года разработки сложного облачного сервиса так ни разу и не слышал эти слова в нашей команде.
>>1007514 Говно ебаное. Типа мультиплатформенная технология удаленных служб. Даётся три стула на выбор: named pipes для одной машины, TCP для интранета при условии, что клиент на .net и http для любых машин с клиентами на любом языке (что, в общем то, превращается в ASP.NET). Сам сижу сейчас разбираюсь, и все вопросы/упоминания в этом треде про WCF были от меня. Вообще, на вид гибкая вещь, но бывают моменты, когда клиентское приложение падает из за службы вообще хуй пойми из за чего. Короче, если не хочешь рисковать серверными решениями от коммьюнити или сам настраивать гибкий сервер, то можешь выбирать WCF.
>>1007354 >и через xml создавать разные виды врагов >просто вызывает плей деасаниматион, который ты просто делаешь полем персонажа Вот тут совсем не понял. Остальное, если понял правильно, то выходит мне нужен один класс на всех живые существа? Значит делать в нем несколько разных конструкторов под каждый вид?
>>1007471 И? Я так и собирался делать, но мне сказали, что не стоит.
Аноны, купил пикрелейтед. Книга охуеная не спорю. Но есть НО - в ней нет нахуй заданий для самостоятельного выполнения ? Как так ? как я должен учить язык и при этом не писать код свой (не тот что в книге)? Так вот в чем мой вопрос - может я туплю и где-то есть задания соответствующие этой книге ? Или мне самому себе задания надо придумывать ?
>>1007575 >Если что в книгах обычно бывают в конце словарь терминов со ссылками на страницы. На дворе сорок первый век, а эти лудиты всё еще листают страницы.
>>1007566 Ну как тебе сказать. Про async вообще то веское замечание сказано >>1007562 Товарищ по 4.0 научится плодить громадные конструкции для асинхронности со всякими wait и прочими, когда есть async await. Также всякая удобная интерполяция строк в 6.0, фишка в виде паттерн метчинга для switch в 7.0, кортежи оттуда же.
>>1007522 >Вот тут совсем не понял. Ну с xml можешь пока забить, это просто возможность делать в игре врагов, заполняя параметры в файлах, а не редакторе, так удобнее. Про анимацию, у тебя есть поле у класса, это поле анимации смерти, функция смерти берёт эту анимацию и проигрывает её.
И нет, тебе нужны не разные конструкторы а один, твои все существа будут создаваться примерно так: Creature zombie = new Creature("zombie.skin", ZombieAttack, ZombieMovement, ZombieAnimations); Creature dog = new Creature("dog.skin", DogAttack, DogMovement, DogAnimations); и так далее, то есть один конструктор делает разных существ, это конечно приближённый вариант, тебе надо как-то передавать все эти параметры в код, юнити позволяет же префабы делать, в которых в поля можно и спрайты перетащить и цифры написать.
Просто смотри в чём суть, ты путаешь представление в твоём понимании, и представление для компьютера, все живые существа для него - одно и то же, это просто что-то, у чего есть анимация, скин и поведение.
Вообще я очень хуёвый учитель, и в юнити это сложнее пояснять изза компонентной системы, в которой по сути всё это нахуй не нужно, всё есть гейм обджект, хочешь чтобы он двигался - присоединяешь логику движения, хочешь чтобы кусался - присоединяешь компонент атаки, хочешь чтобы он ещё был сундуком - присобачиваешь компонент-контейнер. Наследование там только под капотом, где каждый компонент - наследник компонента, с именем, парентом и прочими, можешь по нему оценить, насколько похожи их различия между MeshRenderer и BoxCollider на твои между зомби и собакой.
>>1007601 Спасибо тебе за детальное пояснение, а то обычно на такие вопросы в тредах посылают в гугл или сразу нахуй. Займусь сейчас, пожалуй, генерацией карты, а потом еще вернусь к персонажам.
Шарпаны, вот допустим есть сгенерированный код. Ну т.е по типу t4 text template, только я генерировал его с помощью методов которые сам написал. Т.е все это выглядит так:
namespace YobaApllication { class Programm { static void Main() { Console.WriteLine("Hello Yoba"); } } }
Сейчас он генерируется в консоль или в тексбокс, если угодно.
>>1007597 это далеко не основы языка, если сразу с нуля в асинки и сложный сахар погружаться, то нихуя не понятно будет. Пускай научится синхронный код писать, а потом уже в асинки углубляется.
Есть около пары месяцев, диплом о вышке годичной давности (прикладная математика и информатика), остаточные знания алгоритмов (пузырек напишу, хотя последний раз в глаза его видел года 4 назад) и прочих структур в голове. Читаю книгу из гайда (которая с небом, аллахом, на 1.6к страниц), кажется мне местами излишней, знать то это все офк надо, но не в условиях ограниченного времени. Всеравно, 2й книгой буду Рихтера читать. Посоветуй, какую упороть первой. Дальше, планирую почитать что-то по базам данных (язык запросов в голове обновить). Что нужно изменить, или добавить к этому плану, чтоб меня взяли хоть на 20-25к (не ДС, но 1.5кк есть)? Желательно на русском, енглиш то читается, но 2/3 усилий уходит на перевод, выматывает так учить.
Ребзя, поясните за static у членов класса. Я так понимаю, что нужно ставить это слово, когда хочешь, чтобы метод работал независимо от полей этого класса? Объясните, пожалуйста
>>1008673 У static класса все поля/методы/свойства static по дефолту, можно не указывать. Кстати, в Java static у классов имеет совсем другой смысл (хуета там какая-то).
Привет. Проблема с виндовсформами. Требуется поменять 1-ю и последнюю буквы в каждом слове строки из листбокс1. Полученную строку вывести в листбокс2. Не могу сообразить как это сделать. Мой пикрил куска программы
Привет Шарпаны. Анон сверху подсказал, как мне скомпилировать код в текстовом виде в exeшник. Тут все ок, но дело в том что запускается консоль. А нет ли возможности вывода информации не в консоль, а в txt? Ну или в строку, или вообще все что угодно. Мне нужно результат запихнуть в текстбокс.
Вот у меня есть текстовый файл в котором допустим 20 строк, каждая из которых такого вида "хуйпизда:нинужно=99".
Мне нужно пройтись по всем строкам и запихнуть в массив стрингов со всех строк "хуйпизда" т.е. все что до двоеточия, и в массив даблов забрать "99", т.е. все что после знака равно.
Двач, нужна ваша помощь, как сделать, чтобы метод StartGame() вызывал(?) свойство Current, т.е. чтобы поле current = 1. Или нужно как-то по-другому всё это реализовать?
private int current; private int finish;
public int Current { get { return current; } private set { current = 1; } }
public int Finish { get { return finish; } private set { Random rndNumber = new Random(); finish = rndNumber.Next(75, 125); } }
Поясните нуфагу, как автоматические свойства выполняют инкапсуляцию? Формально то они ее выполняют - данные сокрыты внутри класса и обратиться можно только через свойство. Но это никак не предохраняет информацию, к свойству доступ получается так же непринужденно, как к открытому полю. Или я тупой и чего-то недогоняю? Про свойства только для чтения, или только для записи знаю, речь идет за обычные. Выглядит как удобный костыль, чтоб не писать сеты и геты.
Сишарпусы, посоветуйте лучший ресурс/книгу с полнейшим, но с минимумом воды, мануалом по языку. Язык я знаю, но мне нужно всё внимательно и быстро повторить с самого устройства сборок до всего, что есть в языке.
Здравствуйте, господа шарперы. Нравится мне ваш язык, буду его учить. Одна проблема - названия методов с большой буквы. Прям мерзко на душе становится. Вы сами всегда следуете этому правилу? Ну, или хотя бы в основном? И если да, то поясните и замотивируйте мне, пожалуйста, почему так, а не "классы - с большой, а то, что им принадлежит - с маленькой"
>>1009739 Нет, это я прекрасно понял. Собственно, обчитался и потому спрашиваю. Меня интересует почему нотации именно такая,а не, скажем, как в Java, которую я примитивненько описал выше. Мне бы хотелось понять почему так и поверить в то, что это действительно правильно.
>>1009743 Я, вероятно, слишком костноязычен чтоб объяснить все, эх. Ну, вот, джаванотация, например. Там размер букв объясняется тем, что в языке все подчинено классам,там не может быть свободных переменных или методов. И потому все, что /подчиняется/ пишется с маленькой, в верблюдоблядском стиле, а то, чему подчиняется и что всегда будет стоять в самом начале - с большой.
>>1009685 >Выглядит как удобный костыль, чтоб не писать сеты и геты. Да это он и есть. Индусам слишком сложно явно написать тривиальный гет-сет и им упростили жизнь.
Еще есть такая херня: меньше кода => меньше вероятность ошибиться. Весь автогенерейт частично оправдиватся еще и этим, мол человек слабое звено даже в тиривиальном коде. Но это несостоятельная херня, так как весь автогенерет так или иначе перезжает в оперативку кодера, а она не резиновая, что ведет к дополнительным вдупления и ошибкам на ровном месте.
>>1009744 Возможно потому что тут есть делегаты, а значит переменным можно приравнивать методы, и это никак не отличается визуально от присваивания одной переменной другой, а так можно отличить что именно присваивается, просто поле или функция, алсо тут есть свойства, обращение к которым как к полям, но ведут они себя как методы.
>>1009685 Ты неправильно понял инкапсуляцию, стоит подучить. Суть не в приватах и общем доступе, суть в ограждении прямого логически доступа.
Вот смотри, если тебе внезапно понадобиться повесить евент на получение поля, например в игре, когда у тебя кто-то получает урон, раньше ты просто наносил его, но теперь хочешь чтобы он ещё говорил об этом игре, что ты делаешь со свойством? Ты переписываешь его, добавляешь отправку сообщений. Если бы у тебя было поле ты бы везде где к нему доступ вынужден был бы изменять всё. А автоматические проперти просто для сокращения необходимости писать пустые сеттеры и геттеры, которые просто передают поле, чтобы было на потом, и если что ты их допишешь. А ещё ты можешь объявить там уровни доступа гету и сету, чтобы ограничивать доступ.
Доброго дня вам в уютном тредике. Пишу игру, есть поле 10х10 клеток, на каждой клетке может находиться по нескольку разных объектов с разными свойствами (например, на одной клетке находится "Пол", "Стул", "Книга"). То есть мне нужен массив 10х10, где каждый элемент это List<Object>, правильно? И значит мне все эти объекты "Пол", "Стул", "Книга" наследовать от "Object"? Или я чего-то не понимаю?
>>1009860 >Но лучше не object, а abstract GameObject Ну обджект я там написал условно, в реальности у меня есть класс MapObject. И я сейчас как раз пытаюсь отловить эксепшн, который мне бросает юнити на метод .Add для списка.
>>1009860 По непонятной причине всё сыпется на 20й строке. MapObject правильный, массив с элементом [0,0] существует. Может это из-за версии дотнет фреймворка, у юнити 3.5.
Появилась необходимость удалить кучу файлов по маске. И вот я совершенно неожиданно для себя узнал, что все это делают в цикле. Это вообще нормально? Нет функции удалить все где условие такое то?
>>1009897 >>1009898 Не понимаю, запутался. Можешь эту строчку кода переписать под "тебе надо создавать лист перед первым добавлением в ячейку, а лучше сразу в каждой при инициализации"?
>>1009899 mapStructure[0,0] = new List<MapObject>(); mapStructure[0,0].Add(tttt) Это потому что у тебя массив листов объектов, ты создаёшь массив, но не листы, их нужно отдельно создавать, потому что лист это объект в шарпе и по умолчанию массивы создаются с дефолтным значением, для чисел 0, для объектов null
А, всё, до меня дошло. То есть иметь пустые я как раз могу, но перед каждым заполнением я должен в ту пустоту передать инстанс листа. mapStructure[0,0] = new List<MapObject>(); С вот этим заработало, спасибо.
>>1009860 >Кстати, реквестирую геймдизайнеров, чтобы сказали, какой из методов правильнее. Так это же не гейдизайнеров проблема. Они такими вещами вообще не занимаются.
Вообще иметь поле клеток с кучей пустых листов это очень расточительно по памяти и подходит только для маленьких карт. Но свой профит есть - напрмер можно почти мгновенно определить, что находится в соседней клетке и если в игре существуют многоклеточные обекты, то размещения их на карте будет менее сложным.
>>1009926 смотри, 255х255х(размер ссылки 64 бита = 8 байт)/(размер килобайта 8) = 508 килобайт + копейки на внутренние приблуды массива, сам думай, будет поле в два раза больше, будет 2 мегабайта уже. И это только на пустое, ничем не заполненное(даже без листов) поле.
>>1009941 Ну тогда должно быть без проблем. У меня половина из всего пространства это пустой космос без объектов, а остальные клетки будут заполнены 1-5 разных объектов.
>>1009945 > У меня половина из всего пространства это пустой космос без объектов Возможно стоит их оставить без нихуя в качестве оптимизации. Если клетка изначально предполагается как всегдапустая, то нет смысла выделять память на описание массива того, что в ней могло бы находится.
А ну, чики брики, раскидайте за эти кнжиечки? https://tproger.ru/books/free-csharp-books/ Стоит на что то обращать внимание? И я не про вкатывание с нуля. А вот те книги где учат ООП на рабочих примерах.
>>1009950 >>1009958 Для интереса проверил, первый скрин с картой 10х10, а второй 255х255. Разница в памяти ~7мб. Полностью приемлимо, учитывая что остальные 60 отжирает сам движок юнити.
А теперь у меня другая проблема. В одном скрипте я сгенерировал карту и создал инстанс массива, который содержит все данные о карте. Как мне этот массив читать и изменять из другого скрипта, но того же проекта?
>>1010287 Ну это же игровой движок с 60+ фпс на старом ноутбуке, имейте уважение!
Вот я помню игрался с движком MonoGame, он у меня за 120 фпс отжирал всё ядро, и при этом в нем не было даже графики никакой, лул.
>>1010310 Если хочешь кодить, почитай хотя бы алгоритмы и структуры данных или курсы посмотри, намного легче и приятнее будет. (А там ещё и графы для пасфиндинга пойдут, поиски текста, очень полезно). Это совсем не долго, зато в кодинге лучше разбираться станешь на порядок.
По поводу твоего вопроса, смотри, словари имеют постоянную скорость доступа к элементам(как у массива) в общем случае, особенно если, как у тебя, карта в основном пустая, одна проблема, что ему надо расширяться, когда он заполняется на определённый процент, что он и делает, создавая новый массив и копируя все элементы в него по новой, что может быть медленно, если твоя карта 255х255 будет почти полной. Но да, плюс в том, что памяти он будет требовать по количеству полных клеток + ещё чуть. И надо не забывать удалять List из клетки, в которой ничего не осталось.
Что нужно знать по asp .net mvc чтобы взяли джуном? Как работает патерн я понимаю, энтети в основах знаю, веб апи в основах понимаю. Алсо - насколько нужен гитхабчик с одностраничником при составлении резюме и если крайне желателен то что там сделать чтобы показать свои скилы?
>>1010403 Гитхаб обычно не нужен. Сам паттерн. Razor. Viewbag, viewdata, tempdata. Экшены, принимающие типизированные объекты. Секции view. Роуты. Стандартная аутентификация. DataAnnotation. Web api. Язык сишарп на высоком уровне, конечно же. Не будет лишним бутстрап и джиквери.
>>1010438 >Razor. Viewbag, viewdata, tempdata Разве вьюбаги и пр. не зашквар? Я вроде учил что кошерно использовать вьюмоделы если больше чем модель нужна. >Экшены, принимающие типизированные Это для валидации форм? >Секции view Во вьюхах для паршалов? >Роуты Достаточно уметь прокинуть новый маршрут? >Стандартная аутентификация Ну тут бм понимаю. >DataAnnotation Опять таки для валидации? >Язык сишарп на высоком уровне Насколько высоком? Вроде при работе проблем по синтаксу не возникало.
>>1010299 > 7МБ за отсутствие костылей это очень хорошая сделка, как по мне. > Какой же линк охуенный, хоспаде! Ты уж определись, любишь ты костыли или нет.
>>1010371 Наличие батарери. Урезанные видеокарты. Лептопные процы. Разрешение экрана 1366 вместо 1920. Если винда заводская, то и по имени компа "Lenovo-PC". Но главный вопрос конечно же "нахуя?".
>>1010773 На елдаках блядь. Вопрос в другом, нормальный движок ты без байтослесарства не напишешь. >>1010732 Ещё один блядь, ньюфаг мать его. Эта поебень уровня Node.js под расбери пай и ардуины
Сап, диезач. Пишу игру. В классе Level есть список пуль. Однако, обработка выстрела пули и её создание происходят в классе Player. Как сообщить классу Level о добавлении пули в список?
>>1010836 Какой у него шиза дебил? Большая часть Unity на мерзких крестах написана, весь тяжелый рендер хуй ты на языке с GC напишешь, под GameBryo ты на Lua можешь писать, но это не значит что GameBryo на Lua написан, внятно тебе пояснил, болезный или ты кофе не выпил?
Или это такой тупорылый троллинг у вас с Сишарпом и юпнити?
Даун выходит на связь. Кароче думаю сделать что то с базами данных. Для практики, и что бы на гит было шо кинуть. Но не могу определиться с визуальной частью. Делать на ASP.NET MVC или WPF MVVM? Или на том и на том? Все равно паттерным МВС/МВВМ помогают отделить логику от визуального интерфейса по максимуму. Что сейчас более востребованно и хорошо выглядит в резюме?
public static int Method1() { int a = 2; int b = 5;
return a * b; }
public static void Method2() { var c = Method1();
Method1(); } Как так может происходить? Я вызываю в Method2 Method 1 в одном случае с возвратом значения, а в другом без. И все ок, компилятор не ругается
Ребят, была ли у кого-нибудь такая ошибка при запуски проекта с отладкой(именно с отладкой): Ошибка при попытки запуска проекта: Не удается запустить прграмму "Путь программы".
Отладчик установлен неправильно. Запустите программу Setup для установки или восстановления отладчика.
Как можно переустановить отладчик правильно и где взять Setup? Переустанавливать VS уже пробовал.
Суть думаю ясна, надо дождаться в методе некоторого события и только после продолжить работу. Как сделать так чтобы не блокировать форму, ведь мне же как раз и надо дождаться клика. И надо это без async/await ибо .Net4.
>>1013180 > Суть думаю ясна Суть ясна только тебе. Если хочешь что бы тебе помогли, прояви немного уважения к тем, кто будет читать твой код. Используй сервисы с поддержкой форматирования, https://ideone.com/ вполне норм для этого.
>>1013212 Заебесь. Теперь все стало официально непонятно. Если нужно дождаться клика, то у кнопки есть событие, которое она ждет сама. Нахуя тебе костыли городить понадобилось?
>>1013229 Наверно, из-за кривой архитектуры. Пишу игру, есть интерфейс IPlayer с методом Point MakeMove(Board board), и 2 класса реализующих этот интерфейс AIPlayer и HumanPlayer. Класс игры принимает в конструкторе 2 IPlayer и затем после старта крутит цикл, вызывая по очереди методы MakeMove игроков. С ИИ все понятно, используя преданное состояние игровой доски он вычисляет свой ход. А вот человек, после вызова HumanPlayer.MakeMove должен кликнуть по клетке на винформ контроле (у контрола есть событие CellClicked). Вот этого CellClicked я и хочу дождаться в MakeMove.
>>1013462 Игра на винформах в 2017 это охуенно. Но даже тут у тебя масса возможностей. 1) Создать таймер и каждые n времени обрабатывать данные для всех объектов включая игрока. Клик игрока будет запоминаться в специальном буфере между циклами. 2) Игра полностью пощаговая, ждет действия игрока и все остальные объекты обрабатываются вслед за этим. 3) Создать тупо нормальный обработчик клика и в нем уже все оборабатывать.
>>1013626 >2) Игра полностью пощаговая, ждет действия игрока и все остальные объекты обрабатываются вслед за этим. Вот я и хочу дождаться действий игрока. Кстати, это не обязательно человек vs комп, я же могу передать в игру 2 HumanPlayer.
>3) Создать тупо нормальный обработчик клика и в нем уже все оборабатывать. Это как? Пихать всю логику в форму?
>>1013462 >>1013626 >>1013723 Короче, решил проблему. Надо было всего лишь запустить цикл с вызовом MakeMove'ов в отдельном потоке, а дальше как я и делал через AutoResetEvent ждать клика.
Прошлый