Это копия, сохраненная 9 июня 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Предыдущий тред : https://2ch.hk/pr/res/952642.html (М)
обосрался с названием треда
Шикарная работа, ты что упрт?
{
foreach (string file in Directory.GetFiles(folderBrowserDialog1.SelectedPath))
{
}
И чо мне с этим делать? Задача-получение пути к папке, оттуда получение наименований файлов в них, с помощью уже написанного метода добавлять ватермарки и пересохранять ст уже добавленной ватермаркой
Я, наверно, тупой, так помогите неучу
Я могу попробовать помочь, но ты для начала объясни нормально что ты хочешь.
новый кек
А создает проперти, значение которой вычисляется только при создании класса.
B создает expression-bodied проперти, которая вычисляется каждый раз при вызове.
C - длинный вариант написания B.
Потому что это авто пропертя в которую ты кладешь чиселку. Поскольку сеттера нет - то другую чиселку в нее положить уже нельзя.
Блять то же самое как С но другими словами что непонятного то? Сахар. Синтаксический. Кстати нахуй не нужный никому. Но поскольку его наличие так же никому не мешает то почему бы и нет.
Чтобы иерархию выстроить. Классический пример.
Класс фигура ( с полями колличество стороно и методом отрисовать себя) от нее наследуется триугольник, квадрат, где уже есть конкретные реализации. Это позволяет оперировать более обощенными понятиями, например создать метод, который может принимать фигуры и вызывать на них одинаковые методы, но при этом исполняться они будут в зависимости от конкретного объекта.
В абстрактном классе ты можешь создать методы которые могут быть универсальны для всех наследников.
К примеру с теми же фигурами у тебя хранится массив точек чтобы рисовалось на форме, но зачем тебе реализовывать функцию рисования этих точек в каждом наследнике, когда ты можешь сделать его в абстрактном и тупо вызывать у всех наследников.
Зачем тогда абстрактный класс, а не тупо обычный?
Смысл в том что твой объект фигура сам по себе существовать не способен, у него не может быть точек, он только знает что они способны существовать.
Понял, спасибо. Тот же ToString() переопределить для всех потомков.
Болеть будут.
нихуя не понял твоего ответа, так реализовать упомянутый пример можно или нет на шарпе?
Entity Framework -> Database First
А нахуя это надо на этапе конпиляции? Ты код в базе хранишь? Есть стандартное средство кодогенерации для этой параши, гугли T4. Им вообще можно все что угодно сделать. Есть платформа которая может на этапе выполнения скомпилировать любую парашу на c# и использовать ее.
Ну так это то что и надо.
Так вот почему студия при таких проектах блочит на брекпоинте мне курсор мыши?
Я могу пользоваться, клавой, альтабаться, процессор на треть только загружен, но пока студия не соберет всю инфу на брекпоинте, то мышка не оплипнет. При том такая фигня не везде, на ноутбуке тот же проект, в той же студии, с тем же расширениям не вешает мышку, а просто создает подергивания.
Как починить это дерьмо?
Вероятно переустановить ШИНДОWС!
Дано:
1000 методов с различными сигнатурами.
Надо:
обмазать все методы декоратором так, чтоб декоратор не менял сигнатуру метода.
Как это сделать?
Че-то я не допонимаю задание
Задача-копирование файла, наклепал с прямыми путями, прописанными в коде, а теперь надо дать возможность выбирать файл и куда копировать, как я понял, делается через цикл, а дальше я нихера не понял
нормально повтори, что тебе надо
Files.walk(Paths.get("source/")).filter(path -> Files.isRegularFile(path)).forEach(path -> Files.copy(path, Paths.get("destination/" + path.getFileName()), StandardCopyOption.REPLACE_EXISTING));
Ха, как ты его!
Вот в винде принято использовать MVP для формочек и MVVM для WPF. Как дела с паттернами обстоят в моно? Формочки в моно - вырвиглазное говно, wpf не поддерживается. Для gtk# есть какие-нибудь методы биндинга данных к элементам gui?
Или надо как диды, через ивенты самому всё раскидывать и обновлять вручную типа?
Дядя, ты дурак?
С ним все так, просто линуксовая порватка про него не знает. Ну ничего, скоро микрософт вкатится на рынок и этим вашим явам и питонам придёт пизда.
Ну тогда только Mono, хотя вроде ещё можно было Qt прикрутить.
>Что не так с .Net core?
>>974623
>С ним все так, просто линуксовая порватка про него не знает. Ну ничего, скоро микрософт вкатится на рынок и этим вашим явам и питонам придёт пизда.
Ну, есть много разных вещей.
1. Первая проблема, концептуальная, шарп и нет создавались с анальной привязкой к виндовс.
От чего, в нете много всякого жуткого говна, вроде айдишников каких-то сладких классов.
Ну и там работа с IO в виндовс отличается от никсов, там асинхронность сладкая на уровне Ос, а в линуксе все иначе.
Ну и там, файлик exe и dll, под никсами, лолд.
2. Дальше, проблема чисто техническая. Где этот нет коре скачать и установить? А хуй где.
3. Как под него разрабатывать, в никсах? А никак.
4. Кушайте сладкий mono.
И непохоже, что мс хочет куда-то вкатываться.
Очевидно, C# задумывался как замена Delphi в личном владении Балмера Нигросперма.
Было влито неимоверно много бабла, и судя по всему, получен отрицательный баланс.
Теперь МС озулупилась, куда бы ей деть это приносящее убытки говно стоимостью в миллиарды. Ага, сделаем опенсорс пусть линупсоиды за нас делают всю работу, будем второй джавой!11111
А хуй там.
В плане дружбы с разными платформами шарпу до джавы как php до няшной сиськи.
>Было влито неимоверно много бабла, и судя по всему, получен отрицательный баланс.
Это и с любым языком программирования так.
IMHO, никто не собирался открывать .NET, но вместо Гейтса пришёл индуисский брахман, который компьютер видел пару раз в жизни на расстоянии 3-х метров, и по роду свой деятельности в M$ только «руководил».
Карго-культ, вот что это такое. Линуксоидам это нинужно, а вендузиане как сидели под своим вантузом, так и сидят.
>Это и с любым языком программирования так.
Ну, необязательно, просто это в целом долгосрочная инвестиция.
Вот например апл для своей ос делает ЯП и IDE, и очень успешно.
>IMHO, никто не собирался открывать .NET,
Ну, МС изначально позиционировала его типо как открытый стандарт. Мол будет все, но не сразу. Видимо отдел маркетинга возымел катарсистическое недопонимание с техотделом.
Просто технологии майкрософт не работают ни с чем кроме виндовса.
Все эти активИКС - прости Аллах.
>Карго-культ, вот что это такое. Линуксоидам это нинужно, а вендузиане как сидели под своим вантузом, так и сидят.
Я бы хотел видеть шарп, или что-то шарпоподобное, как замену джаве, но этого видимо не произойдет в скором времени.
А к тому времени когда сие свершится, жава уже сама по себе будет ненужна, как и замена ей.
>D, Rust, Kotlin, Scala, Elixir — нет им числа.
Или джава вид сбоку.
Или байтоебство.
Или нулевая инфраструктура.
>D
Это как Delphi но без IDE и VCL. Вообще пушка.
Ну так и шарп - джава вид сбоку, любой ооп язык - это джава + сахар, хочешь особенного иди в функциональщину
И да хочешь инфраструктуру и не байтоебство и не джаву вид сбоку -> erlang
То есть ты хочешь сказать, это вообще разные языки и у них мало общего и шарп делался без оглядки на джаву?
Самое принципиальное: шарп изначально создавался, как язык для Компонентно-ориентированного программирования(привет Паскаль и Дельфи), в то время, как джава - изначально для ООП. Сегодня это самое главное отличие.Раньше ещё было то, что C# - язык для одной платформы.
>>974665
Много схожестей(в том числе и по синтаксису), т.к. шарп создавался частично по образу джавы.
Мимо другой анон.
>Самое принципиальное: шарп изначально создавался, как язык для Компонентно-ориентированного программирования(привет Паскаль и Дельфи), в то время, как джава - изначально для ООП. Сегодня это самое главное отличие
Ок, отличия то назови.
>То есть ты хочешь сказать, это вообще разные языки и у них мало общего
Общего можно найти у любых языков.
И там и там ОООП -оооо это же одно итоже11111.
Нет.
>и шарп делался без оглядки на джаву?
Оглядка, необязательно подражание.
Можно посмотреть - фу блядь нахуй ну и мерзость.
Всё знает. Многие скажут , что нет.кор это сейчас просто кусок говна времен нет.фреймворк 2.0. Нормальной иде для линкс подобных систем нет и долго еще не будет. Микрософт решили подънаебать разработчиков, типо сделав вижул студио для айпловских MACак, в итоге тупо оказалось, что это на 90% монодевелоп бичевский, прогать на vs code тож гавно
Поясните за плюсы и минусы ASP.NET, если сравнивать со скриптовыми языками (питон с джангой). Как насчет ASP.NET Core?
> ASP.NET
Говно для ООО Шаурма и Родственники, у которых самый большой датасет это список работавших сотрудников и у которого единственный сервер на винде.
> Как насчет ASP.NET Core?
Говно без задач и коммьюнити.
С добрым утром. Майкрософты пытаются вкатиться со своим дотнетом на отличные платформы уже лет пять как. На Андроиде ещё как-то взлетело, а вот net.core и mono мертвее мертвого.
А как же Xamarin?
чот в голос, корка во втором квартале на армы выкатывается уже, какой нахуй мертвее мертвого?
Прошу прощения, перепутал с net. micro framework. 10 лет назад с ней тоже восторженные долбоёбы бегали, но как-то не взлетело.
Chocolate eyed?
class SomeClass
{
IInterface _someInterface; // <--- ????
public IInterface SomeInterface {get; set;} // <--- ????
}
Поясните теперь за Интерфейсы.
Просто, зачем они.
Вот каноничный пример.
Работать методы будут и без того что я их объявлю в интерфейсе, а его потом наследую.
Это кажется просто чем то бессмысленным.
Это какой то ебанный заговор, что бы люди дольше стучали по клавиатуре.
Разберись зачем нужно абстрагирование и тогда все встанет на свои места.
Ну ты сможешь сделать еще 10 классов, где реализуешь эти методы, но с какими-то особенностями, а интерфейс будет единый, значит не нужно думать о реализации, когда будешь пользоваться.
Допустим ты пишешь какую нибудь игру. И этой игре нужно реализовать сохранение. Как бы ты поступил, не зная интерфейсов? Просто бы написал какой нибудь метод Save, который бы сохранял прогресс в какой нибудь файл на компухтере. А теперь представь, что твою игру одобрил габен и тебе теперь надо сделать сохранение в каком нибудь облаке. Что ты будешь делать? Ты будешь менять метод сохранения, по сути ты будешь менять класс, в котором этот метод находится. Не очень то это кошерно, не так ведь? Тут то тебе на помощь и приходят интерфейсы. Дело в том, что все наследники интерфейса по сути являются этим интерфейсом, то есть ты можешь написать интерфейс ISaver с методом Save, и написать свой класс WindowsFileSaver, который наследует ISaver. В итоге ты напишешь реализацию метода Save в своем классе WindowsFileSaver, который потом скормишь своему классу, который будет содержать поле типа ISaver.
public class Game
{
private ISaver _saver;
public Game(ISaver saver)
{
_saver = saver;
}
public void Save()
{
_saver.Save();
}
}
public interface ISaver
{
void Save();
}
public class WindowsFileSaver : ISaver
{
public void Save()
{
//реализация сохранения в файл в шиндовсе
}
}
public class CloudSaver : ISaver
{
public void Save()
{
//реализация сохранения в облако
}
}
И теперь тебе остается только выбрать, какой способ сохранения давать игре.
static void Main()
{
var windowsGame = new Game(new WindowsFileSaver()); //тут будет использоваться реализация сохранения в файл.
var steamGame = new Game(new CloudSaver()); //тут будет использоваться реализация сохранения в облако
}
Теперь понятно?
Допустим ты пишешь какую нибудь игру. И этой игре нужно реализовать сохранение. Как бы ты поступил, не зная интерфейсов? Просто бы написал какой нибудь метод Save, который бы сохранял прогресс в какой нибудь файл на компухтере. А теперь представь, что твою игру одобрил габен и тебе теперь надо сделать сохранение в каком нибудь облаке. Что ты будешь делать? Ты будешь менять метод сохранения, по сути ты будешь менять класс, в котором этот метод находится. Не очень то это кошерно, не так ведь? Тут то тебе на помощь и приходят интерфейсы. Дело в том, что все наследники интерфейса по сути являются этим интерфейсом, то есть ты можешь написать интерфейс ISaver с методом Save, и написать свой класс WindowsFileSaver, который наследует ISaver. В итоге ты напишешь реализацию метода Save в своем классе WindowsFileSaver, который потом скормишь своему классу, который будет содержать поле типа ISaver.
public class Game
{
private ISaver _saver;
public Game(ISaver saver)
{
_saver = saver;
}
public void Save()
{
_saver.Save();
}
}
public interface ISaver
{
void Save();
}
public class WindowsFileSaver : ISaver
{
public void Save()
{
//реализация сохранения в файл в шиндовсе
}
}
public class CloudSaver : ISaver
{
public void Save()
{
//реализация сохранения в облако
}
}
И теперь тебе остается только выбрать, какой способ сохранения давать игре.
static void Main()
{
var windowsGame = new Game(new WindowsFileSaver()); //тут будет использоваться реализация сохранения в файл.
var steamGame = new Game(new CloudSaver()); //тут будет использоваться реализация сохранения в облако
}
Теперь понятно?
Прямо таки Вавилонская библиотека.
Не верещи, раскрыв рот и требуя благодарности за непрошеную работу, и тебе туда не нассут.
>Дело в том, что все наследники интерфейса по сути являются этим интерфейсом, то есть ты можешь написать интерфейс ISaver с методом Save, и написать свой класс WindowsFileSaver, который наследует ISaver. В итоге ты напишешь реализацию метода Save в своем классе WindowsFileSaver, который потом скормишь своему классу, который будет содержать поле типа ISaver.
Но я ведь и так и так будут писать реализацию в обоих случаях.
Без интерфейса один черт бьудет вот так:
>public class WindowsFileSaver
>{
>public void Save()
>{
>//реализация сохранения в файл в шиндовсе
>}
>}
>
>public class CloudSaver
>{
>public void Save()
>{
>//реализация сохранения в облако
>}
>}
>
>И теперь тебе остается только выбрать, какой способ сохранения давать игре.
>
>static void Main()
>{
>var windowsGame = new Game(new WindowsFileSaver()); //тут будет использоваться реализация сохранения в файл.
>var steamGame = new Game(new CloudSaver()); //тут будет использоваться реализация сохранения в облако
>}
>понятно
Понятно.
Думаю с практикой придет и прикладное понимание до конца.
>>975878
Спасибо. Ты умница.
Может благодаря тебе перестану быть дауном.
Так то после тренировки, цнс угнетена, трудно было вникать, поэтому так долго не отвечал.
Держи фудпрона.
>Дело в том, что все наследники интерфейса по сути являются этим интерфейсом, то есть ты можешь написать интерфейс ISaver с методом Save, и написать свой класс WindowsFileSaver, который наследует ISaver. В итоге ты напишешь реализацию метода Save в своем классе WindowsFileSaver, который потом скормишь своему классу, который будет содержать поле типа ISaver.
Но я ведь и так и так будут писать реализацию в обоих случаях.
Без интерфейса один черт бьудет вот так:
>public class WindowsFileSaver
>{
>public void Save()
>{
>//реализация сохранения в файл в шиндовсе
>}
>}
>
>public class CloudSaver
>{
>public void Save()
>{
>//реализация сохранения в облако
>}
>}
>
>И теперь тебе остается только выбрать, какой способ сохранения давать игре.
>
>static void Main()
>{
>var windowsGame = new Game(new WindowsFileSaver()); //тут будет использоваться реализация сохранения в файл.
>var steamGame = new Game(new CloudSaver()); //тут будет использоваться реализация сохранения в облако
>}
>понятно
Понятно.
Думаю с практикой придет и прикладное понимание до конца.
>>975878
Спасибо. Ты умница.
Может благодаря тебе перестану быть дауном.
Так то после тренировки, цнс угнетена, трудно было вникать, поэтому так долго не отвечал.
Держи фудпрона.
Если всё плохо с этим перекачусь сразу на джаву, хотя C# больше нравится.
Можешь попробовать VS Code.
>Если всё плохо с этим перекачусь сразу на джаву, хотя C# больше нравится.
Сорта Сиподобных параш.
В некоторых местах отличить невозможно.
Еще вроде в новую джабу завезли интерфейсы и лямбды.
https://metanit.com/sharp/patterns/3.1.php
Паттерн стратегия - идеальный пример использования интерфейсов, имхо.
Спасибо.
Есть небольшой проект (менеджер конфигураций). Работа с конфигурациями проходит через бд (кучка статических методов, расширяющих SqlConnection) . Вынес все зависимости с бд из проекта в отдельный класс, задача - замочить бд и обнести юнит тестами. Вынес из запросов примерную структуру таблиц в классы, сами таблицы реализую как словарь (ключ - Id, значение - все остальные поля записи), сейчас переписываю запросы под работу со словарями-таблицами и буду под них тесты писать. Я все правильно делаю, или хуиту творю?
Фреймворками для моков желательно бы не пользоваться.
Шо значит непрошеную? Анон попросил - я рассказал. И как видишь, ему это помогло. А ты просто токсичный уебок, из-за таких програмач и скатился в говно.
Я ретроград, лет 6 назад прочитал пару книг про Java и C#, но как-то забил и продолжил писать на крестах, всё хочу эволюционировать наконец. Все пишут что у C# большие проблемы с кросплатформенностью, всё же современная джава будет лучшим выбором, наверное. Может есть что-то ещё более современное но не хипстерское и не компилящееся в джаву?
Питон и JS.
>>975981
Короче смотри, если пишешь на винформах, то юзай мвп, если на впф - мввм, если без UI вообще, то я хуй знает, можешь наверное продолжать то что сейчас делаешь. А я спать ушел.
>и не компилящееся в джаву?
Для котлина недавно компилятор выпустили, но там все сыро, а чем тебя смущает компиляция для jvm?
Не вижу смысла в мутных надстройках над языками для синтаксического сахара. В си-подобных как правило отсутствие ; в конце строк определяет зону зашквара для хипстеров.
А что значит "замочить"? Тебе по идее надо абстрагироваться от всего кода, который к базе обращается, и в юнит тестах передавать фейковые реализации вместо реального обращения.
>Может есть что-то ещё более современное но не хипстерское и не компилящееся в джаву?
Всем привет! Представляю вашему вниманию мой перевод статьи (включая графики) Кевала Патела Why should you learn Go? Статья содержит много интересных фактов, которые, по моему мнению, будет полезно узнать новичкам в Go.
P.S.: Статья, как и большинство статей, на мой взгляд, отражает опыт и мнение автора, которое может не совпадать с вашим, и это нормально — сколько людей, столько и мнений.
https://habrahabr.ru/post/326798/
На самом деле статья не моя, просто скопипастил первую строчку.
А он не хипстерский ли часом? Его продвижение я не мог не заметить уже длительное время, но не нравятся всякие func и var в синтаксисе.
Вот если бы D не помер...
Да какая разница. Если гугол не забьет, то клещами заставит писать на нем каких нибудь андройд разработчиков.
>Go намеренно не содержит множество особенностей ООП языков.
>Нет классов. Каждая вещь делится только на пакеты. Вместо классов Go использует только структуры (structs. — прим.перев.).
>Не поддерживает наследование. Это упрощает модифицирование кода. В других языках, типа Java/Python, если класс ABC наследует класс XYZ, и вы при этом делаете какие-то изменения в классе XYZ, то это производит дополнительное изменения во всех наследованных от него классах. К тому же, без наследования, код Go становится более простым для понимания (так как нет super классов, на которые нужно обращать внимание при изучении участков кода).
>Нет конструкторов.
>Нет аннотаций.
>Нет дженериков (универсальных шаблонов. — прим.перев.).
>Нет исключений.
Звучит очень сомнительно, но скорее всего станет популярным. Даром на логотипе хомяк дебил.
Статья странная, они реально преподносят корутины как инновационную альтернативу тредам? Вообще-то это древняя технолокия которая есть для любого яп хотя бы в виде библиотеки.
Горутины, вообще охуеть
Хуле тебе дотнет кор не нравится? Он уже работает и без брейкинг чейнджез в каждой новой версии
Маркетинговая хуйня.
Продать можно любое говно, со словами Вы покупаете не говно, вы покупаете легенду.
Проблема в том что у Гугла походу нет своего Стива Жобса, или Илона Маска что бы впаривать хомякам очередное "откровение".
>Может есть что-то ещё более современное но не хипстерское и не компилящееся в джаву?
Rust.
D.
fn, mut, impl, pub в расте это просто пиздец, что за беснующийся хипстер писал первоначальные спецификации языка? Зажать пару букв чтобы выглядело круче, писали бы λ, θ и остальной греческий алфавит вместо ключевых слов, а не эти уродливые сокращения.
http://ideone.com/zC6i5V
Вроде понятно, но не понимаю, как мы пришли к выводу, что число действий = p+q+r? Что за действия тут вообще считаются?
Как насчёт того, чтобы спросить это у препода?
Не, net. Core это самостоятельная платформа для любой ОС. Для этого моно не нужно. Но хоть микрософтовские с пеной у рта продвигают эту платформу , она пока шибко не взлетает. Все как делали под виндувс сервер, так и делают. А на линуксе всего 2 землекопа тусуются. Может быть через несколько лет этот нет кор и взлетит. Хотя поздновато они с линуксом связались. Тут уже давным давно всякие JVM и питоны квоздями прибиты + уже 100500 готовых решений
На плюсах со списками проблем не было.
Что посоветуете? Может, самому шаблон написать? Если бы кто-нибудь отсюда помог, было бы очень круто.
Вроде уже должна быть сканированная, но хуй там.
LinkedList это сам двусвязный список, элементами которого являются LinkedListNode. В LinkedListNode хранится значение и ссылки на предыдующий и последующий элемент.
Всем привет! Есть ли здесь разрабы С#, желающие работать в небольшой компании в ДС? Работа связана с разработкой программного продукта, который контора успешно продает. Обязанности: допиливать систему, интерфейс, сидеть в офисе и пить чай с печеньками. Территориально офис расположен в 10 минутах ходьбы от м. Нагатинская. Если есть заинтересованные, пишите мне на почту heretlzbicfungusANUSproto{tknmailPUNCTUMcogl|m
Всем удачи в поисках и отсутствия варианта развития событий, где вы остаетесь с голым хуем в руке! и без масла!
Ну охуеть вообще. Ты бы еще сказал "нужен программист, который пишет программы за зарплату".
Думаю искать вакансии фронтов (ангуляр/тайпскрипт), где на бэке используют Шарп и постепенно к вам перекатиться. Как идея?
Что жи делать?
Повторюсь, что так-то я фулстак, фронт пишу постольку-поскольку, в бэке больше нравится копаться, но вот конкретно в Шарпе рабочий опыт нулевой.
Не хочу просто джуном идти и терять в зарплате.
Это как то влияет на оптимизацию или еще на что? Или он просто делает это потому что может?
var дает возможность компилятору выводить тип самостоятельно.на этом список преимуществ заканчивается
Есть какие нибудь книжки про это?
asp.net
Или ты про то, что бы использовать VS в качестве IDE для какого нибудь джаваскрипта?
Ну например плагины для браузера писать.
Но что бы можно было взаимодествовать с разметкой и кодом страницы.
ебать ну хуевый у тебя какноничный пример просто вась, допустим у тебя есть класс геометрическая фигура, его наследуют классы круг, квадрат и треугольник. Квадрат и треугольник наследуют интерфейс IPoints, в котором есть метод PrintInfo. Ты наследуешь IPoints для квадрата и треугольника, для квадрата определяешь метод как ну допустим C.WL("У нас тут 4 точки"); а для треугольника соответственно C.WL("У нас тут 3 точки"); . Потом допустим у тебя есть коллекция из кругов, квадратов и треугольников, и тебе для каждой из фигур нужно напечатать количество точек в них. Так как ты знаешь, что точки есть у тех фигур которые наследуют интерфейс IPoints, то ты можешь фигуры из коллекции рассматривать как объекты интерфейса:
foreach (var sh in Shapes)
if (sh is IPoints)
sh.PrintInfo();
Вроде понял.
Кстати реализация Паттерна MVP хорошо помогает разобраться в интерфейсах.
Когда в презентере начинаешь собирать все.
Пример хуже и запутаннее, плюс неправильный
По твоему описанию класс shape не имеет метода printinfo, а ты вызываешь. Правильнее так
foreach (var sh in Shapes)
if (sh is IPoints temp)
temp.PrintInfo();
Blog.msdn.com
Docs.ms.com
Перешли обратно на cprog,чтоб унифицировать с остальными проектами и юзать msbuild,все просто. Внутри тот же proj,только на xml
Играю в ведьмак 3 на теленфоне. Комп выкинул, фильмы смотрю в интернете через 3g.
Иди в тырпрайз.
То есть, правильно ли я делаю, присваивая, скажем, первый элемент LinkedList узлу LLNode, а потом присваивая через Next ему последующие узлы? (Это для заполнения / пробега по списку)
чего бля? Класс шейп не имеет метода принтинфо, в массиве шейпов есть два класса которые этот метод имеют так как реализуют интерфейс, мы проверяем, реализует ли каждый объект из массива этот интерфейс. И вообще ты где такой синтаксис видел?
>if (sh is IPoints temp)
Браток ты бы разобрался в том что такое интерфейс, прежде чем говорить что-то уровня "класс shape не имеет метода printinfo, а ты вызываешь".
Ну, со мной не все так плохо.
Перепутал код, должен быть этот
foreach (var sh in Shapes)
if (sh is IPoints)
sh.PrintInfo();
быстрофикс
>Потом допустим у тебя есть коллекция из кругов, квадратов и треугольников
Ответь на мой вопрос, а не напиши почти рандомный текст, а лучше напиши пример по своему описанию, тогда поймешь о чем я
>>977038
>кинь мне пример какой-нибудь
https://dotnetfiddle.net/bpN07q
Какие субд вообще востребованны в конторах которые работают на дотнете?
> Какие субд вообще востребованны в конторах которые работают на дотнете?
Много.
ms sql 2000, ms sql 2005, ms sql 2008, ms sql 2010, ms sql 2012, ms sql 2014, ms sql 2016.
>Чтоб потом замокать в тестах.
Сука, кто вообще придумал моки? Я понимаю, что иногда нужна какая-то изолированность, но из-за этой хуйни тестирование превращается в какой-то дрочь.
Моки. Нахуй. Не нужны.
А потом в команду приходиь какой-нить Вася, нечаянно ломает код для корнер кейса своими изменениями. Эта всё идет в продакшн, продукт ломается нахуй.
На разборе полётов я вставляю вам с Васей пизды и заставляю писать юнит тесты. Проходили уже.
>у пути отрезать слова до предпоследнего слеша
Окей, вопрос перехода выше на уровень решен.
А сам переход как реализуется? Получаю я имена и пути с помощью Directory.GetDirectories, а что дальше с ними делать-то? Я так понимаю надо запилить нечто вида goto(строка путь_к_файлу) (офк не через готу), что именно надо написать?
>что именно надо написать?
Просто прочитай в толчке книжку по шарпу и все такие вопросы отпадут.
>А сам переход как реализуется?
Конструруй новый путь к найденым директориям или файлам.
Псевдокод:
БазовыйПуть = "ПУТЬ\\В\\НИКУДА"; // начальная директория
для каждого КАТАЛОГ в Directory.GetDirectories(БазовыйПуть) делоть
{
НовыйПуть = Path.Combine(БазовыйПуть, КАТАЛОГ);
ВсеФайлыВДочернемКаталоге = Directory.GetFiles(НовыйПуть);
// тут делай что хочешь с файлами, но лучше випилсь из треда
}
Такая херня ловится именно интеграциоными тестами.
Тестируем все нужные классы вместе по заранее заданому конечному юз-кейсу.
Сам тест должен максимально отслеживать подлянки от всех использумых классов, чтобы просто в конце настучать из-за кого все пошло не так как ожидалось.
Тестирование на уровне классов нинужно. У них может тупо зависимостей не хватать для нормальной работы и надо будет все адово мокать и фейкать. Юнит-тесты чистая дрочка без особого смысла.
Пиздишь и не краснеешь. Сетап всех корнер кейсов всех возможных инпутов в интеграционных тестах - хуйня из разряда фантастики.
Два чаю. Если уж решил стать адептом мелкософта, то по полной.
Макака детектед. Скажи где работаешь, чтобы я туда не случайно не устроился.
А в чем разница?
Денуво.
И главное даже нет никаких нормальных способов копирования "по-нормальному", кроме форича. Облазил стаковерфлоу, там вообще какие-то охуительные решения предлагают, от которых глаза на лоб лезут. Пиздос.
Не совсем. Но почему так?
Представь себе, что у тебя, к примеру, есть
некоторый объект button1 типа Button, который является кнопкой на интерфейсе.
Что должно происходить с интерфейсом, когда ты в коде пишешь Button button2 = button, если объекты передаются не по ссылке? А если это не кнопка, а вообще поток чтения файла или записи в базу?
T-SQL, LINQ, Entity Framework, MVVM (для десктопа) MVC (для веба).
Да, говно. Но ты же зачем-то хочешь копировать списки таким же образом.
>Кому это вообще на этой ёбаной планете может понадобиться?
ебать ты гомункул
>>977263
>Облазил стаковерфлоу
либо плохо лазил, либо никто раньше такого простого вопроса не задавал
https://dotnetfiddle.net/d1RjMr
что мешает тебе поставить туда то, что тебе нужно? я же не Ванга, чтоб твое тз угадывать
>Хочу эффективно юзать ооп
А мог бы просто писать код который решает конкретные задачи
> Но только дело доходит до нестандартных задач
Это каких например?
Пишу я значит пет-проджект, реализацию одной структуры данных на шарпе, оформлено в виде библиотеки. Тут встал вопрос тестирования. Так как на работе я пишу на функциональной дрисне и тестов у нас не предусмотрено, то опыта в тестировании соответственно и нет. Ранее, при написании библиотеки я просто заводил дополнительный проект с консольным приложением под названием "Test", делал из него ссылку на либу и высирал в консоль несколько аутпутов в типовых сценариях использования. В приличных местах за такое, очевидно, бьют ебальник и поэтому захотелось организовать тестирование "по правильному".
Ок, сама студия имеет свой фреймворк для тестов, можно использовать его.
Вопрос - как открывать кишки класса для дестового проекта, при этом не обмазываясь интерфейсами уровня "IRandom вместо Random" (я претендую на некоторую производительность в рантайме, потому нахуй не надо).
У меня, пока что, две идеи:
1) Маркировать то что я хочу заэкспоузить как internal и использовать атрибут InternalsVisibleTo. Попробовал, вроде работает.
2) Использовать условную компиляцию. При задефайненом "TESTING" нужные классы/поля помечаются как паблик, без него - как приват. Но тут надо уметь заставлять студию собирать тестируемый проект с флагом компиляции при запуске тестов. Также есть небольшой плюс в качестве того что можно в тестовом режиме даже определять отдельные методы, которых не будет в "продакшн" коде.
Вопрос 2:
Как тестировать код, зависящий от рандома?
Есть у меня например код вида
class MyClass
{
private static Random random {get} = new Random();
...
Ну и как обеспечить повторяемость рандома при тесте? Пока что придумал разве что маркировать как интернал и в тестовом проекте подменять заранее заготовленным генератором с известным сидом. А как делают белые люди? Пожалуйста, только без IRandom, умоляю
Вопрос 3:
Как правильно тестировать производительность кода? Замеры времени, статистику кэш-миссов, всё это. Слышал про Benchmark.NET, есть ли годные мануалы по другим техникам?
Пишу я значит пет-проджект, реализацию одной структуры данных на шарпе, оформлено в виде библиотеки. Тут встал вопрос тестирования. Так как на работе я пишу на функциональной дрисне и тестов у нас не предусмотрено, то опыта в тестировании соответственно и нет. Ранее, при написании библиотеки я просто заводил дополнительный проект с консольным приложением под названием "Test", делал из него ссылку на либу и высирал в консоль несколько аутпутов в типовых сценариях использования. В приличных местах за такое, очевидно, бьют ебальник и поэтому захотелось организовать тестирование "по правильному".
Ок, сама студия имеет свой фреймворк для тестов, можно использовать его.
Вопрос - как открывать кишки класса для дестового проекта, при этом не обмазываясь интерфейсами уровня "IRandom вместо Random" (я претендую на некоторую производительность в рантайме, потому нахуй не надо).
У меня, пока что, две идеи:
1) Маркировать то что я хочу заэкспоузить как internal и использовать атрибут InternalsVisibleTo. Попробовал, вроде работает.
2) Использовать условную компиляцию. При задефайненом "TESTING" нужные классы/поля помечаются как паблик, без него - как приват. Но тут надо уметь заставлять студию собирать тестируемый проект с флагом компиляции при запуске тестов. Также есть небольшой плюс в качестве того что можно в тестовом режиме даже определять отдельные методы, которых не будет в "продакшн" коде.
Вопрос 2:
Как тестировать код, зависящий от рандома?
Есть у меня например код вида
class MyClass
{
private static Random random {get} = new Random();
...
Ну и как обеспечить повторяемость рандома при тесте? Пока что придумал разве что маркировать как интернал и в тестовом проекте подменять заранее заготовленным генератором с известным сидом. А как делают белые люди? Пожалуйста, только без IRandom, умоляю
Вопрос 3:
Как правильно тестировать производительность кода? Замеры времени, статистику кэш-миссов, всё это. Слышал про Benchmark.NET, есть ли годные мануалы по другим техникам?
Большинство вакансий в моей говностране требует знаний ASP.NET, хотя бы базовых. Да и самому стало интересно как оно в веб. Суть вопроса вот в чем. Как изучить этот самый ASP.NET? Начать с HTML/CSS и парралельно читать по ASP?
HTML надо учить версии 5?
> Кто вообще нахуй придумывал, что там блять референсы копируются вместо обычных значений?
М Н О Г О П О Т О Ч Н О С Т Ь как объяснение для тебя сойдет. Подумой! А там уже и до многих других причин, может быть, дойдешь.
> Это же блять может таких ебаных проблем в коде насоздавать, которые ты даже сначала не заметишь, а потом обосрешься и охуеешь, когда всё по пизде пойдет.
Это азы. Все равно что сесть в самолет / вертолет, взлететь и направить штурвал от себя и не отпускать, а потом орать защоо.
> И главное даже нет никаких нормальных способов копирования "по-нормальному", кроме форича.
Ты просто нихуя не разбирался.
> Вопрос - как открывать кишки класса для дестового проекта
Для сложной логики хуячь юнит-тесты, работающие без контекста или с поднятием ограниченного контекста. Лишние зависимости мокай. Можешь отдельно упороться 100% покрытием, чтобы крутую плашку на гитхабе поставить.
Для всего приложения хуячь интеграционные тесты, тестирующие само поведение твоей программы.
> при этом не обмазываясь интерфейсами уровня "IRandom вместо Random"
Принципы SOLID прошли мимо тебя.
> (я претендую на некоторую производительность в рантайме, потому нахуй не надо)
Кекнул.
> Как тестировать код, зависящий от рандома?
Просто и без задней мысли - как с тян.
> как обеспечить повторяемость рандома
Проиграл с повторяемости рандома. Но если так охота - мокай и возвращай вместо рандома хоть анус Сатаны.
Заранее спасибо.
Выше тебе уже ответили, но хочу добавить по поводу рандома:
Если у вас есть достаточно мощные сервера для прогона тестов, то можно тестировать по области определения - заменить рандом функцией, которая поочерёдно пробегает все значения из области определения, правда такое возможно не всегда. Если область определения не ограничена, то использую подходы вероятностного тестирования - берёшь нормальное/гауссово/ ещё какое-нибудь распределение, потом соответствующую выборку и прогоняешь уже по ней.
Если найдешь скинь в название в тред. Есть книга называется Visual C#, но там задачки и вопросы в конце главы носят чисто условный характер
Но ведь кода будет как говна.
>есть что-то ещё более
Ты же кресты шаришь, нахуй тебе еще что-то? Еби Qt и мир у твоих ног.
Хотя хз что ты там пилить собрался..
не всех, а только тех которые ты тут же инициализируешь каким-то типом. Так вот чтобы не плодить масло маслянное типа "в гараж для машины поставь машину" оно предлагает просто писать "поставь в гараж машину". Собственно просто разгрузить код для читабельности, не более.
Code First писал по шарпам. По ней начинал учиться в свое время. Но она для старту только.
Таки да, сам хуею в какую индускую жопу катится шарп.
Ни одной хорошей фичи в 6 и 7 не завезли, только раковый сахар для говнокода.
Выкинь каку. Это тормозная хуитка посоветует тебе обмазаться таким модным и свежим дерьмом, что ни на одном древнем конпеляторе не соберется, без последнего фреймворка работать не будет, а код будет похож на упоротую динамикодрисню.
Сука, уж лучше самому вдуплять где вар нужен, а где нет, чем каждый раз посылать нахуй эту назойливое нечто. И для нормального рефакторинда решарпер тоже не нужен. Стандартных функций студии хватает, а нетривиальных случаев не так уж и много, чтобы терпеть постоянные тормоза и особо ценные советы по обмазыванию сахаром.
Как правило среди наблюдателей (observers) и наблюдаемого (observable) большим сроком жизни (областью видимости) обладает последний. Это значит, что в их взаимодействии критически важной становится отписка от событий. В противном случае мы сталкиваемся с утечками памяти — подвисанием короткоживущих объектов, которые после своего использования недоступны сборщику мусора, даже если отсутствуют прямые ссылки на них в пользовательском коде (поскольку продолжают оставаться неявные ссылки из источника событий).
В нормальных реализациях паттерна Observer для отписки используются токены подписки (subscriptions), желательно совместимые с идиомой RAII (отписка через деструкторы в C++ или через IDisposable в C#). Именно так это сделано в Boost.Signals2 в C++ или в Rx в C#. Правильный синтаксический сахар в C# должен был выглядеть так (псевдокод):
private IDisposable _subscription;
...
_subscription = publisher.SomeEvents += subscriber.HandleSomeEvent;
...
_subscription.Dispose();
Токен подписки не требует тащить всю дорогу явную ссылку на обработчик, чтобы отписаться. Но в C# последнее сделано иначе:
publisher.SomeEvents -= subscriber.HandleSomeEvent;
В частности, это значит, что при подписке нельзя так просто взять и использовать лямбды, скажем, обернуть предыдущий вызов:
publisher.SomeEvents += (sender, e) => { Debug.Log(“Some message.”); subscriber.HandleSomeEvent(sender, e); }
потому что:
publisher.SomeEvents -= ???
Обычно observers и observable друг о друге ничего не знают, а подписку инициирует какая-то третья сторона (назовём её «менеджер»).
Так вот, в случае правильной реализации паттерна Наблюдатель, менеджеру не надо тащить за собой ссылки на подписчиков или источник событий. Скажем, менеджер получил в конструкторе один раз ссылки на подписчиков и издателя, связал их друг с другом и полностью забыл про них:
_subscription = observable.SomeEvents.Subscribe(observer.HandleSomeEvent);
Для того, чтобы отписаться, ему не нужны ни подписчик, ни источник, достаточно безликого поля IDisposable:
_subscription.Dispose();
В случае отписки от событий C# всё сильно хуже, зачем-то нужны и подписчик, и издатель:
observable.SomeEvent -= observer.HandleSomeEvent;
То есть безосновательно увеличена связность.
Выше уже писали про кривой синтаксис возбуждения событий (raise events). В отсутствие подписчиков (зауряднейшая ситуация) вместо простого «ничего» получаем на ровном месте `NullReferenceException`. Причём нельзя просто так взять, и проверить на `null`, как в статье, потому что между проверкой и возбуждением события может отписаться последний подписчик, и вместо ожидаемого пустого invokation list получаем `null`; выше уже указывали на это.
Далее, события в C# не могут сигнализировать об окончании потока `OnComplete()` или об ошибке `OnError(exception)`. Не могут на лету комбинироваться и преобразовываться Linq-методами. Не предусмотрено библиотечного механизма для разделения «холодных» и «горячих» потоков событий, буферизующих, и т.д.
Как правило среди наблюдателей (observers) и наблюдаемого (observable) большим сроком жизни (областью видимости) обладает последний. Это значит, что в их взаимодействии критически важной становится отписка от событий. В противном случае мы сталкиваемся с утечками памяти — подвисанием короткоживущих объектов, которые после своего использования недоступны сборщику мусора, даже если отсутствуют прямые ссылки на них в пользовательском коде (поскольку продолжают оставаться неявные ссылки из источника событий).
В нормальных реализациях паттерна Observer для отписки используются токены подписки (subscriptions), желательно совместимые с идиомой RAII (отписка через деструкторы в C++ или через IDisposable в C#). Именно так это сделано в Boost.Signals2 в C++ или в Rx в C#. Правильный синтаксический сахар в C# должен был выглядеть так (псевдокод):
private IDisposable _subscription;
...
_subscription = publisher.SomeEvents += subscriber.HandleSomeEvent;
...
_subscription.Dispose();
Токен подписки не требует тащить всю дорогу явную ссылку на обработчик, чтобы отписаться. Но в C# последнее сделано иначе:
publisher.SomeEvents -= subscriber.HandleSomeEvent;
В частности, это значит, что при подписке нельзя так просто взять и использовать лямбды, скажем, обернуть предыдущий вызов:
publisher.SomeEvents += (sender, e) => { Debug.Log(“Some message.”); subscriber.HandleSomeEvent(sender, e); }
потому что:
publisher.SomeEvents -= ???
Обычно observers и observable друг о друге ничего не знают, а подписку инициирует какая-то третья сторона (назовём её «менеджер»).
Так вот, в случае правильной реализации паттерна Наблюдатель, менеджеру не надо тащить за собой ссылки на подписчиков или источник событий. Скажем, менеджер получил в конструкторе один раз ссылки на подписчиков и издателя, связал их друг с другом и полностью забыл про них:
_subscription = observable.SomeEvents.Subscribe(observer.HandleSomeEvent);
Для того, чтобы отписаться, ему не нужны ни подписчик, ни источник, достаточно безликого поля IDisposable:
_subscription.Dispose();
В случае отписки от событий C# всё сильно хуже, зачем-то нужны и подписчик, и издатель:
observable.SomeEvent -= observer.HandleSomeEvent;
То есть безосновательно увеличена связность.
Выше уже писали про кривой синтаксис возбуждения событий (raise events). В отсутствие подписчиков (зауряднейшая ситуация) вместо простого «ничего» получаем на ровном месте `NullReferenceException`. Причём нельзя просто так взять, и проверить на `null`, как в статье, потому что между проверкой и возбуждением события может отписаться последний подписчик, и вместо ожидаемого пустого invokation list получаем `null`; выше уже указывали на это.
Далее, события в C# не могут сигнализировать об окончании потока `OnComplete()` или об ошибке `OnError(exception)`. Не могут на лету комбинироваться и преобразовываться Linq-методами. Не предусмотрено библиотечного механизма для разделения «холодных» и «горячих» потоков событий, буферизующих, и т.д.
А что ты вообще хочешь не из сахара? Твои предложения?
Собственно, и async/await - сахар, linq - сахар. Но он же делает код лаконичнее и приятнее (если достаточно ума перестроиться быстро, конечно)
>События в .NET являются синтаксическим сахаром для паттерна Observer
Пиздос поехавший, дальше не читал
Синтаксический сахар (англ. syntactic sugar) в языке программирования — это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
А в твоем случае, видимо, поведение меняется
Более простыми словами (уровнями ниже), сахар - это конструкция, которая компилятором преобразовывается в эквивалентную хуйню, но с болле лаконичным синтаксисом, в случае ивентов - они построены на делегатах, а не разворачиваются конпелятором в observer. Для слушателей в .net есть свои интерфейсы, так что где-то удобнее ивентами, где-то слушателями, они не ВЗАИМОЗАМЕНЯЕМЫ
Блядь делегаты это, очень грубо говоря, ссылки на методы по сигнатуре.
Событтия, еще грублее говоря, набор этих самых делегатов.
Кароче абстрактная хуйня для патерноебства.
Что это если не синтаксический сахар?
>это синтаксические возможности, применение которых не влияет на поведение программы, но делает использование языка более удобным для человека.
Это значит, что всё, что придумали, после написания программы прямо на машинных кодах, является синтаксическим сахаром?
Нет синтаксический сахар, это когда еще до компиляции, некоторые конструкции разрешаются в другие конструкции этого же языка, но менее удобные и приятные глазу.
>Это значит, что всё, что придумали, после написания программы прямо на машинных кодах, является синтаксическим сахаром?
Да.
Отнесение некоторых конструкций к синтаксическому сахару неоднозначно в силу исторических причин. Например, в языке C и его потомках имеются операторы увеличения и уменьшения (++, --, +=, -= и т. п.). Ведение этих операторов в язык было вызвано необходимостью поддержки ручной оптимизации программ, так как код с их использованием мог транслироваться в более эффективные машинные команды («++a» транслировалось в одну команду INC, а аналогичное выражение «a=a+1» — в целую группу команд). Развитие технологии оптимизации кода сделало подобную ручную оптимизацию бессмысленной; сейчас компиляторы порождают одинаковый код для «длинного» и «короткого» варианта операции. В результате сокращённые операторы превратились в синтаксический сахар, хотя изначально им не были.
В некоторых случаях понятие «синтаксический сахар» трактуют более широко, нежели «другой способ записи для уже имеющихся синтаксических конструкций». Джек Креншоу в книге «Давайте создадим компилятор!»[1] применяет этот термин к синтаксическим элементам, которые не нужны для правильной компиляции программы, а включаются в язык исключительно для обеспечения удобства программиста и для удобочитаемости программы:
В конце концов, люди тоже должны читать программы… Сахарные токены служат в качестве полезных ориентиров, помогающих вам не сбиться с пути…
В качестве примера такого синтаксического сахара приводится «then» в операторе «if» или «do» в операторе «while», а также точка с запятой: компилятор и без них однозначно определяет конец условия и место завершения оператора, но наличие этих конструкций делает программу более удобочитаемой. Очевидно, узкая трактовка понятия «синтаксический сахар» несовместима с широкой: в Си или Паскале невозможно записать операторы иным способом, без «then», «do» и точки с запятой.
Да.
Наоборот 3 вместо 10.
Я из джавы, вот синтаксический сахар
было void someFunc(int[2] array) и нужно было при передаче писать someFunc(new int[] {1,2})
стало void anotherFunc(int... array)
anotherFunc(1,2)
Ну хорошо тогда.
Хуйня какая-то. В ванильном C конструкция a является синтаксическим сахаром к (a + i), а в том же C# второй конструкции нет (по крайней мере, в безопасном коде). Это что блять значит - если из C убрать возможность делать запись (a + i), то запись a сразу перестанет быть синтаксическим сахаром?
Сука, ебаный парсер двача звёздочки в разметку преобразовал.
>Токен подписки не требует тащить всю дорогу явную ссылку на обработчик, чтобы отписаться. Но в C# последнее сделано иначе:
>
>publisher.SomeEvents -= subscriber.HandleSomeEvent;
это кстати особенность ивента, а не делегата. то есть в делегате можно его просто "обнулить", но как я уже два раза говорил "ивент - оопшный делегат", то его сделали таким, чтоб никто его не мог обнулять, а отписка происходит именно так. Сделано для того, чтоб Вася в своей части кода не обнулил весь делегат, а потом всем коллективом искали ошибку
Если урать из С возможность делать второй вариант, то С станет нахуй не нужным.
В прошлом семестре я делал WEB Service Application и клиент. И для этого было достаточно одной ide visual studio. То есть я мог написать тот сервис, запустить его в браузере, подключать к клиенту и пользоваться его методами.
В WCF же при запуске, чтобы хотя бы глянуть, что это такое нужно добавлять в какой-то IIS manager и устанавливать windows server и это все настраивать между собой.
Я правильно понимаю? Препод сказал, что можно просто переделать прошлый проект на этот который сейчас, поэтому хочется с минимальной мозгоеблей без всяких доп установок это сделать, с одного viusal studio. Получится ли?
Никак. Программа подписана подписью, ты модифицировал контент программы - подпись стала невалидной.
Либо собери заново и подпиши, либо декомпилируй, правь строку и подписывай.
>Писать не на CIL
Ебать вы сахарки.
CLR тоже. Иди попробуй запустить CLR 4.0 код на CLR 2.0 платформе.
А удалить никак нельзя эту подпись? Или запретить проверять? AssemblyKeyFile есть, но его удаление не помогает.
http://stackoverflow.com/questions/341168/can-i-remove-a-digital-signature-from-a-dll
Где твоё гугл-фу, антон?
Не работает решение. Та утилита возвращает ошибку 0x57 - параметр задан неверно. Сейчас попробую декомпилировать и попытаюсь собрать. Проблема в том, что изначальная программа написана на версии 1.1. Кто нативно поддерживает такую версию? У меня есть VS2005, так там уже 2.0. VS2003?
конечно, ни текста диплома ли приложения к нему тут не будет?
Берешь ключ, берешь данные. Повторяешь ключ столько раз, чтоб он покрывал все данные. Потом делаешь:
var encoded = input.Zip(stretchedKey, (i, k) => i ^ k);
И записываешь output как шифрованное говно. Для расшифровки просто еще раз ксоришь с ключем.
Да подыми ты его на IIS, в работе чаще всего так и придется делать. Под VS ты его все равно под IIS подымаешь, только встроенную в VS, Express версию. По факту тебе чуть ли не файликов пару скопировать нужно, а на деле экспы получишь.
Вообще тема гуглиться на раз-два должна...
>>978329
Я думаю шарп идеальный законченый язык на уроне 4 стандарта. Все остальное "развититие" уровня "тут мы добавили еще один способ сделать тоже самое действие, но в одну строку". Это что-то плохое т.к размывает понятную строгость языка до индусткого уровня "пишу как хочу, конпелятор все разрулит".
Самая большое говно, что этот сахар действительно не решает никаких серьезных рутиных проблем, а просто повышет энтропию в коде.
Мое предложение: отъебаться от шарпа и если чешутся руки начать делать новый язык программирования на платформе нет. Двойной профит: новый язык покажет насколько беззадачное говно все высраные маркентинговые фишечки для шарпа и одновремено даст более штрокое поле для эксперементов. Сейчас же пидорасы чинят то, что не сломалось.
>>978320
У фп-петухов есть F# но он нахуй никому не нужен, поэтому они лезут без мыла в ооп-мейнстрим, громко кукарекая, что за их уродливой парашей будущее.
Нет за ней никакого будущего -- это щаг назад.
ФП - это просто мозговой дроч с повышением нагрузки на программиста с околонулевым профитом. Идеалогия фп-петушатника не пзволяет заметить такой очевидный факт, что продуктивности-то нет, а все фирменые(тм) приемы фп легко реализуются и чистым ооп-подходом. Для этого не нужно ломать мозг об стрелочки и петушиную терминологию.
ФП-петухи -- конченые пидорасы, срущие другим в кашу.
>Суть вопроса вот в чем. Как изучить этот самый ASP.NET? Начать с HTML/CSS и парралельно читать по ASP?
https://docs.microsoft.com/en-us/aspnet/core/
Лучше конечно всё сразу, оно не пересекается.
>HTML надо учить версии 5?
Ну, на самом деле да.
>высраные маркентинговые фишечки для шарпа
Сдается мне что ты слабо понимаешь преимущество шарпов. Он был сделан для удобной и быстрой разработки под венду, все блядь. И пока будет возможность ее ускорить или сделать более удобной, пока будет возможность упростить его привлечь индуса на 3м курсе вместо 4го, тем самым удешевив разработку - это будут делать. Остальное не ебет. Прокачанные чуваки всегда остануться с выбором что из сахара юзать, а что нет, и даже если будут использовать, то будут использовать с умом, а о том чтобы остальные не выстрелили себе в ногу позаботится компилятор, решарпер
и прочие костыли.
В общем, кажется мне что ты не от того языка требуешь строгости. А в плане читабельности и лаконичности Шарпы и так оставляют 95% языков за спиной.
>Очень хочется посмотреть на твои юнит тесты без моков.
In-memory database и обычный IoC контейнер, всё как и в приложении.
заходи на ITVDN, проплачивай курс на месяц-два, и ебашь все уровни шарпа от корки до корки, потом ASP, ASP MVC и HTML + CSS. Если по часов 6 в день тратить - времени хватит, а нет - продлишь, оно того стоит, поверь. Собстенно только на этих курсах замидлился давеча.
>События в .NET являются синтаксическим сахаром для паттерна Observer.
И сразу обсёр. События в нете предлагают функцинальность аналогичную патерну Observer, но реализация у них другая.
Observer - это интерфейс события и куча классов наследников от него, которые из-за знания интерфейса события могуют подписаться на него и реализовать кастомную обработку.
События в нете - делаются без наследования, на рефлексии. Каждый делегат сорт оф указатель на функцию с полным знанием о своих праметрах. Делегат может жить сам по себе, т.к сам является объектом и он будет держать ссылку на объект-таргет события для правильного его вызова. Все это гарантирут рантайм нета.
Ну вот ещё. CreateMapper, new DbContextOptionsBuilder?
Этак, ты поднимаешь отдельную in-memory DB, в которую также пихаешь корнер-кейс данные. После этого начинаешь забивать в неё все возможные инпуты для всех тестируемых систем. Потом строишь декартово произведение всех возможных инпутов для всех возможных систем и начинаешь это тестировать.
Ты что, ебанулся там?
Все так, но вот есть предел после которого сахар != ускорение. Получается все строго наоборот -- открываешь чужой код, а там вроде и шарп, но просто космос из-за широгого использования какой-нибудь модной поебени. И ладно бы без этого нельзя было обойтись, НЕТ БЛЯДЬ просто РЕШАРПЕР ПОСОВЕТОВАЛ, А Я ТАКОЙ ДА.
Или ПИСАТЬ НУЖНО НЕ 4 СТРОКИ А 1 -- тут я люблю спрашивать в какое измерение перенеслись исчезнувшие три строки и у петухов случается деление на ноль с защитным кукареканьем, что об этом думать нинужно, т.к. компелятор порешает. И напоминаешь как этот пидорский конпелятор порешал автогенерацию свойств.
Очень пичет от хипстерской тупости.
>Я отчасти понимаю твой буггурт, но проблема тут не в сахаре, а в рукожопах.
За что благодарен опыту в тырпрайзе, дак это за то что по кодстайлу и конвенциям ебали будь здоров. Теперь даже пет проект не могу писать без JDоc, а большинство плюшек которые "можно" остаются в разряде "но не нужно".
С другой стороны - будь проект моложе на лет 5, глядишь и конвенции были бы другие, и весь сахар был бы в норме. Так что все таки главное одноображно, и в стиле команды.
>также пихаешь корнер-кейс данные.
Ну да, то ли дело мокать методы, чтобы они возвращали эти самые кейс данные, лол.
>После этого начинаешь забивать в неё все возможные инпуты для всех тестируемых систем.
Ну да, нормальные люди мокают все инпуты для всех тестируемых систем. Ты не понимаешь что ли, что тебе в любом случае нужно данные куда-то вводить, если они тебе нужны?
>Ты что, ебанулся там?
Нет, ты.
Вопрос уровня начальной школы: что быстрее растет: z=x+y или z=x*y при условии что x и y - натуральные числа?.
Дебилоид не знает разницы между юнит-тестами и интеграционными / функциональными тестами.
Ебать ты даун.
Мне просто надоело видеть огромную кучу мусора, который возвращает листы вместо реальной базы данных, которая возвратит абсолютно тоже самое. Не говоря уже о всяких проблемах, которые возникают в процессе. И это надоело любому адекватному человеку, которого не интересует бесполезная дрочка на покрытие ради покрытия и моки ради моков.
Искал просто IIS под десятку и как-то быстро взглянул и походу она на десятку с бубнами ставится, поэтому решил тут спросить
Почему нет?
Ну я только вкатываюсь в С#, и в программирование в целом. Поэтому не знаю какие задачи лучше, но чувствую что тупо чтения Шилдта мне не хватает.
Гугли лабы по информатике для программистов, а не водарты раскрашиватт за первый курс на любом языке и делай на своем.
Надеюсь, ты просто траллишь. Иначе я потеряю веру в людей и больше никогда не зайду на двач
Это понятно. Но можно как-то из одного потока по массиву полученных байт определять, строка там или файл? Или лучше использовать разные потоки, или вообще слушать файлы и запросы на разных портах?
можешь что-нить навелосипедить как в http протоколе content-type header
Асинхронная обработка должна быть: https://msdn.microsoft.com/ru-ru/magazine/dn605876.aspx не знаю насколько годная статья, но ты понел, гугли.
Это тоже за тебя погуглил: http://stackoverflow.com/questions/910873/how-can-i-determine-if-a-file-is-binary-or-text-in-c ищи последовательности для файлов, форматы которые тебя интересуют
Спасибо анончик, уже запилил на сериализации. Хотя может вообще выпилю файл-трансфер нахуй Такая-то охуенная штука, раньше читал по неё, но не мог понять зачем она нужна.
Ты мне можешь объяснить какую функцию выполняют в твоей кодобазе тесты? Пользователь один хуй не увидит никаких тестов - ни интеграционных, ни юнит, ни ассептанс. Зачем ты пишешь тесты?
Имею простую форму. В ней DataGridView, привязанный к BindingList. В DataGridView экземпляры класса, который состоит из строк, int'ов и ещё двух классов. Саму информацию храню в JSON. Нужно реализовать кнопку Edit, где откроется другая формочка, где можно будет всё отредактировать. Такой вопрос, как мне из DataGridViewRow получить объект, чтобы потом другая форма его изменила? Кроме SelectedRows других манипуляций не знаю.
А как потом изменить объект, ведь DataBound - readonly
Ну скинь пару строк, что накодировал там.
Сколько получаешь, если не секрет?
Та никаких бубном, программы и фичи => установить фичу IIS.
В 10 кликов ставится. Ну а вот разобраться и запустить первую апликуху до пары часов может занять, если вдруг где-то тупанешь в процессе - это да
2,5к$
БЛЯЯЯЯЯДЬ.
Наткнулся на видеоурок от айтидивеэн.
Типа базовое занятие про СОБЫТИЯ евентс то есть.
Сука видео больше десяти минут, и этот мудак лысый вообще ничего про события не сказал кроме "вот видите, если мы пропишем слово евент то тут будет не квадратик а молния" и так все 10 минут. Ахуеть.
Это типа что бы я платный курс купил?
Чет эффект обратный.
Ну плиз, ну купи.
Какой же я старый, как время быстро летит.
Когда я интересовался техникой всего современного IT еще и в помине не было, эхехехе.
Не верится что джава в 96 появилась, это же вчера было.
Пора бы мне личинусом обзаводится.
А казалось бы, только вчера школу окончил, только вчера университет.
В общем есть одно консольное приложенеи, которое делает что нужно. Но время идет и функционал потихоньку разростается. И пришла мне в голову мысль, что неплохо бы в него запихнуть окошко, то самое из winforms. Что бы с параметрами командной строки оно делало что нужно, а без параметров выводило некоторый виндовый интерфейс.
Это вообще возможно? Или лучше переписать сразу под формы?
Канешн можно. Привязываешь консоль (гугли pinvoke AttachConsole), делаешь всё в ней как раньше и выключаешься до инициализации окна. Если нет параметров - запускаешь графоний.
Начал изучать этот ваш Шарп. Хотел сделать простенькое десктопное приложение для загрузки больших текстовых файлов. И застрял на том, что не могу заставить работать прогрессбар. Он отказывается обновлять прогресс хотя я меняю ему значение после каждой загруженной строки. Погуглил - мне что реально для такой ерунды нужно изучить многопоточное, асинхронное программирование, какие-то лямбды и делегаты? Что так сложно?
Создал промежуточный объект, который имеет методы SendData<T>(string type, T data); и Notify<T>(string type, T data);.
В SendData и Notify есть switch, который в зависимости от значения переменной type делает то или иное действие. Например для формы нужно получить данные из сети: SendMessage("GetData", ""); далее в switch по type ищется нужный вариант и вызывается метод Notify(type, data) объекта, который нужно уведомить (для работы с БД например). Когда данные получены выполняются такие же действия, только в обратную сторону.
Вроде все получилось, но есть некоторые вещи, которые смущают:
1) в Notify приходится приводить data к нужному типу. Это нормально?
Может я как-то неправильно использую дженерики? Создать инкапсулирущий данные объект для передачи между объектами?
+
2) в switch метода SendData бывает приходится вызывать статические функции напрямую, так как нету объекта, который нужно было бы уведомить. Например получаю список принтеров(InstalledPrinters) для формы. В итоге приводить типы нужно прямо в switch. Это очень плохо? Перенести вызовы подобных функций в код формы нормально?
Нужны Ваши советы/мысли в развернутом виде
Да. И тебе это в любом другом языке то же самое делать придётся. События же.
Можно сразу рассчитать это время, делением размера файла на скорость передачи (если она тебе известна, не знаю куда ты там что грузишь), но так только васяны всякие делают.
Майки решили не заёбываться и заебашили всю работу форм в один поток, из-за этого происходит такая дичь, что и логика программы, и её отрисовка идут в одном потоке. Поэтому хочешь быстро - миришься с висящим в больших вычислениях интерфейсе (а ещё он может вообще нахуй исчезнуть, если свернуть надолго прогу, лол), хочешь красиво и/или хочешь чтобы можно было делать много всего и сразу - ебашишь многопоточность.
Приложение работает в однопотоке.
Файлы обрабатываются какими-нибудь блокирующими функциями, поток блокируется - интерфейс не обновляется. Такие дела.
Про многопоточное мало знаю, но думаю суть верно передал.
ау
>любом другом языке то же самое делатьпридётся
Ну не в любом. В том же богомерзком VBA в формах интерфейс обновляется сразу без фокусов с потоками.
Ну так если бы в нём ещё и интерфейс не обновлялся, то там вообще хтонический пиздец бы был
WCF?
Ему же попроще нужно. Воркер самое то.
Я недавно начал учить C#, как в принципе и само программирование, и у меня возник вопрос: где брать инфу по пространствам имен? Допустим тот же System.IO. Я пытался просто гуглить, но там не было подробной информации. Т.е там описывалось как создать текстовый документ, как в него что нибудь записать и на этом в принципе все (я сомневаюсь, что это и есть весь функционал). Может я вообще какую-то хуйню хочу? Я всего то пару месяцев занимаюсь, много не понимаю, так что не шкварьте особо если хуйню написал :(
мсдн гугли. Там по всем пространствам имен есть удобный списочек всех членов с крадким пояснение wtf.
Для нестандартных билиотек можно самому полуавтаматически билдить подобную доку.
Проект написан на PHP и подключится к этой всей байде через PHP нету возможности. Было решено написать программу на C# которая бы отдавала данные, все это отлично работает, если запускать напрямую из консоли. Но когда PHP пытается вытащить данные, запустив консольный скрипт и получив результат, то ничего в ответ не приходит. Ну что за блять гемморой с виндой?Кто знает в чем может быть причина?Под винду вообще не писал ничего и с C# первый раз вообще работаю.
Уже даже не знаю что делать.
Покажи, как ты вызываешь скрипт из PHP. В программе вроде всё чисто. Возможно используешь в качестве разделителя не пробелы или с путями что-то напутал. Короче проблема вроде не в коде программы.
https://pastebin.com/nw8Qb3eJ
С PHP он тоже выполнялся. Я получал вывод ровно до того момента, как нужно установить соединение с сервером кубов вот здесь
"new Microsoft.AnalysisServices.AdomdClient.AdomdConnection()"
У меня есть такое подозрение, что скрипт в консоли под моей учетной записью Windows выполняется, поэтому все проходит без проблем.
А PHP с апачем запущен от другого юзера, поэтому подключение не выполняется.
Есть ли возможность выполнить подключение как то именно с моей учетки Windows?Может в этом все дело?
>У меня есть такое подозрение, что скрипт в консоли под моей учетной записью Windows выполняется, поэтому все проходит без проблем.
Не исключено, также можешь прочекать брандмауэр и hosts.
>Есть ли возможность выполнить подключение как то именно с моей учетки Windows?
Не работал с твоими технологиями, но вряд ли. Обычно такие вещи требуют работы от своих учётных записей, но ты можешь дать им прав, если в них окажется проблема.
Кстати, приложение нормально до конца доходит, когда ты его запускаешь из PHP? Исключения не выкидывает?
В PHP все отлично просто, все остальные части приложения работают без нареканий, только с этой проблемы возникли. Но никаких исключений не выдает.
Ладно, спасибо большое. Буду копаться дальше.
Есть одно консольное приложение, к которому появилась необходимость прихуячить интерфейс. Собственно я удалил в нём точку входа и подцепил в форм-проект как библиотеку. Как теперь организовать вывод в текстбокс той информации, которая у меня ранее выводилась на консоль?
Это не пиксели, а Device-Independent Pixels. 1 DIP = 1/96 дюйма. Но это особой роли не играет, ты видимо просто с разметкой проебался.
Решарпер заебал предлагать сделать такое то поле readonly
Прочитал его объяснение, но нихуя не понял посыла. Типа так ты будешь уверен, что твоя програма не будет его изменять. Как будто я не знаю что должна изменять моя программа. В общем, поясните какой практический смысл readonly?
Kek, не губернэйт, а гибернейт.
Например для элемента Windows это свойство определяет можно ли его редактировать.
Скажем поле текста, иногда тебе нужно сделать его неизменяемым, readonly. В этом и польза.
Ты ещё спроси, зачем константы нужны.
Ты объяснил так же как это пытался сделать решарпер.
У меня есть некая переменная которая не изменяется. Она не изменяется, потому что я так решил. Никто другой ее изменить не сможет. Так какой мне профит от того что я добавлю к ней лишний модификатор? Что я выиграю кроме того, что решарпер успокоится?
Любой может изменить эту переменную напрямую в памяти, суть в том, что твои классы этого сделать не могут ЛЕГАЛЬНО.
Не будет ситуации, когда ты случайно сам создашь ошибку изменив какое-то значение, которое изменять не следует.
Это бывает когда ты спутал области видимости, используя одни переменные.
Поэтому раньше использовали КАПС для того чтобы выделять константы. Сейчас дебаггер не даст тебе ошибиться, если ты юзаешь слово const.
Иммутабельность.
Здесь ты еще передаешь ссылку на строку по значению. Если хочешь, чтобы в мэине была та же строка, что и в методе тебе необходимо передавать ссылку по ссылке.
То есть static void Method(ref string a)
Также троки иммутабельны. Их нельзя изменять, это значит что после каждого присвоения строки создается новая строка, а ссылка на предыдущую строку теряется. Если хочешь изменять строки используй StringBuilder.
Спасибо
Выделить все сигнатуры в объекты, а методы в декораторе - сгруппировать. Затем для сигнутур-объектов организивать наследование и иерархию. Все зависит от количества методов в классе. Он твоей тысячи - можно вешаться.
В нормально-спроектированном приложении твой пример будет называть приватным членом класса и публичным автосвойством.
Подскажи, как обернуть тестами код, с одной стороны которого, допустим, игровой движок, ну или что-то закрытое и на выходе находится что-то сложно тестируемое. Со стороны поступления данных, еще ладно, ну а вот с другой стороны - совершенно не пойму.
другой анон
Запомни: кастовать типы к строкам и свитчиться по ним, или через их их перебирать - плохо! Тебе необходимо использовать шаблоны. Например завести фабрику, которая будет по типу возвращать объект, который будет инкапсулировать логику нотификации. Для каждого типа завести отдельный объект и регать в фабрике по типу. Внутри объектов делай что хочешь: хоть статику вызывай, это уже другая проблема.
Нужна новая логика для типа? Запилил новый объект по интерфейсу, регнул в фабрике и свободен.
Продолжать в таком же духе? Или что-то делать, помимо того, как смотреть в книгу и на чужой код?
Просто открыл javarush, там как-то поживее - задачки есть. Но это ява, а я сперва хочу один язык нормально изучить, а не по стульям прыгать
В первом случае ты изменяешь объект (обращаешься к существующему), а во втором - меняешь ссылку. Не изменился бы любой reference type, не только строка. Передача в метод - это, формально, не передача про ссылке, а копирование ссылки.
Что тебе мешает почитывая троелсена сразу писать простые программы, чтобы руками пощупать что написано в книге?
Так просто по книгам не научишься. Код еще писать нужно. Больше кода богу кода!
Не делай так ни с какими параметрами методов. Считай их константой.
Просто какое-то ожидаемое изменение параметров в методе образует, самый сильный семантический тип связаноти в программе. Ты как программист должен постоянно держать в голове: так сейчас я вызову Foo(Some) и у Some появится значение Bar. Когда-нибудь ты об этом забудешь или просто в неправильном месте вызовешь Foo тебя будет ожидать боль отладки. Много боли.
Поэтому в случе со строкой надо делать ретурн чтобы яано показать что возвращаетсся измененая строка.
b = Method(b);
И тут ты наверно подумаешь зачем тебе параметр который никак не влияет на результат? Правильно, либо выкинь его, либо как-то используй.
А если въебенить
static void Method (out string a) {...}
...
Method(out b);
...
Или так уже не модно?
Хотя о чем это я. К вопросу о референсах эт не относится.
первое что ты должен сделать - убрать сеттер.
И да, я забыл волшебное слово, "Пожалуйста".
Ну я думаю моя работа слишком сложно для него, надо втянуть чем-то.
Пусть огород копает
Пусть сделает двач на впф с самописными юзерконтролами, заюзает еф. Все это обмажет тестами, моками, нинжектами.
Итак, есть код
[CODE]List<double[]> learn_data = new List<double[]>();
double[] datum = new double[numInput + numOutput];
...
foreach (double[] t in inner.data)
{
if (t.Length != numInput + 1)
{
throw new Exception("Datum length is " + t.Length + ", but " + (numInput + 1) + " expected");
}
Array.Copy(t, 1, datum, 0, numInput - 1);
for (int n = numInput; n < numInput + numOutput; n++)
{
datum[n] = 0;
}
if (t[0] >= numOutput)
{
throw new Exception("Input has " + t[0] + ", but maximum is " + numOutput);
}
datum[(int) t[0] + numInput] = 1;
learn_data.Add(datum);
if ((Math.Abs(learn_data[0][0] - 0.038095) > 0.0001) ||
(Math.Abs(learn_data[0][1] - 0.19047619) > 0.0001) ||
(Math.Abs(learn_data[0][2] - 0.1047619) > 0.0001))
{
throw new Exception("Data broken");
}
}
[/CODE]
Почему через несколько итераций в массиве foreach значения первого элемента ломаются? Я подумал, что дело в том, что там один и тот же массив, и может быть используется указатель на него, а не копия данных, но нет, после второго и третьего прогона внутри цикла всё окей, а через некоторое время (не знаю сколько итераций, но длина inner.data = 1000) данные затираются. В чём дело?
Троелльсона не читал, возможно, что тут что-то на поверхности
Заранее спасибо
Итак, есть код
[CODE]List<double[]> learn_data = new List<double[]>();
double[] datum = new double[numInput + numOutput];
...
foreach (double[] t in inner.data)
{
if (t.Length != numInput + 1)
{
throw new Exception("Datum length is " + t.Length + ", but " + (numInput + 1) + " expected");
}
Array.Copy(t, 1, datum, 0, numInput - 1);
for (int n = numInput; n < numInput + numOutput; n++)
{
datum[n] = 0;
}
if (t[0] >= numOutput)
{
throw new Exception("Input has " + t[0] + ", but maximum is " + numOutput);
}
datum[(int) t[0] + numInput] = 1;
learn_data.Add(datum);
if ((Math.Abs(learn_data[0][0] - 0.038095) > 0.0001) ||
(Math.Abs(learn_data[0][1] - 0.19047619) > 0.0001) ||
(Math.Abs(learn_data[0][2] - 0.1047619) > 0.0001))
{
throw new Exception("Data broken");
}
}
[/CODE]
Почему через несколько итераций в массиве foreach значения первого элемента ломаются? Я подумал, что дело в том, что там один и тот же массив, и может быть используется указатель на него, а не копия данных, но нет, после второго и третьего прогона внутри цикла всё окей, а через некоторое время (не знаю сколько итераций, но длина inner.data = 1000) данные затираются. В чём дело?
Троелльсона не читал, возможно, что тут что-то на поверхности
Заранее спасибо
Берешь кароче то чем занимаешься ты - приподносишь ему задание в упрощенном варианте, но со спецификой твоей работы.
Базы данных там. Звук, изображение, че ты там вообще делаешь.
В конце концов посади его багги искать или тестировщиком.
https://habrahabr.ru/company/jugru/blog/327492/
Как сосется джавадауны?
твою же ж мать. Ясно всё, List.Add не делает копии объекта, он суёт внутрь себя ссылку. Я проглядел, когда смотрел на кол-во пунктов в List. Исправил, создавая datum в каждой итерации
Сомнительно.
Алсо
>— Абсолютно! Я бы сказал, что это не просто хорошая идея для .NET, это необходимая идея для .NET. Я считаю, что судьба .NET в виде Windows-only платформы с поддержкой сторонних не-очень-то-хорошо-поддерживаемых окружений, нишевых платформ, с которыми люди больше страдают, чем работают, никогда не была перспективной. Так что это была необходимая работа, которая не просто высвободила большой потенциал, но также и не позволит .NET устареть через несколько лет
Как я уже тут гже-то писал.
МС вложила кучу бабок в дотнет, и осталась в ебучих убытках, теперь пытается с дохлой коровы хоть шерсти клок.
Но все тщетно.
Иибо их говно изначально залочено под винду, чтобы было кросплатформенно нужно много вещей менять кардинально.
Просто тупо все с нуля делать.
Чего они не делают, а пытаются адаптировать то, что есть.
А если они будут делать как надо, то непонятно вообще, где тут их профит, как они зарабатывать то будут.
Конечно.
Из андройда скоро выкинет Го.
Из интерпрайза дотнет.
Останется сотня специалистов программировать стиральные машинки... а нет виндус же на АРМ вышел.
Даже там заменят.
Вы только представьте этот исход миллионов джавадаунов которые будут за еду вымаливать тикеты на апворке.
>Ещё важнее этого разнообразие людей в мире технологий. Я выступаю на многих конференциях, и аудитория, как правило, — белые мужчины, и это расстраивает меня. Нам нужно больше гендерного разнообразия, нам нужно больше расового разнообразия, просто взгляните на статистику… она расстраивает. Каждый должен участвовать в искоренении всех форм сексуального домогательства, всех форм расизма в нашей отрасли. Более того, поощрять окружающих, понимать подсознательные предубеждения и бороться за то, чтобы создать как можно более равное условия деятельности для всех.
>Если отстраниться от нашей индустрии, мои личные интересы — это гендерное равенство в целом, скажем так, я уже 2,5 года начинающий феминист. Поэтому я рекомендую всем прочитать что-то вроде «Everyday sexism», чтобы посмотреть, как этот мир выглядит с точки зрения других людей. Все это довольно страшно, и это, безусловно, изменило мой взгляд на многие вещи.
Ыыыыыыы.... гомо-лесбоиндусня зохаваит ффсегх. КТУЛХУ ФТХАНГ
Имеется проблема. В качестве практического задания в универе сказали наваять сайт на ASP.NET, используя паттерн MVC и реализовав схему CRUD.
Проблема в том, что LINQ за каким-то ющенком ругается, мол нету возможности изменить или удалить запись в БД. Что-то вроде линкрелейтед:
http://stackoverflow.com/questions/8406000/sql-connection-failure-in-linq-to-sql
Вот кусок кода, на котором сыпется (и не только на нём):
[HttpPost]
public ActionResult Edit(int id, Client client)
{
try
{
cctxt.Clients.ElementAt(id).Name = client.Name; //cctxt - DbContext для БД
cctxt.Clients.ElementAt(id).Surname = client.Surname;
cctxt.Clients.ElementAt(id).Address = client.Address;
cctxt.Clients.ElementAt(id).EMail = client.EMail;
cctxt.SaveChanges();
return RedirectToAction("Index", "Data");
}
catch
{
return View();
}
}
Вот ссылки на сам прожэкт:
http://rgho.st/79yLtk97f - 1 часть
http://rgho.st/7L4cRVqKh - 2 часть
Имеется проблема. В качестве практического задания в универе сказали наваять сайт на ASP.NET, используя паттерн MVC и реализовав схему CRUD.
Проблема в том, что LINQ за каким-то ющенком ругается, мол нету возможности изменить или удалить запись в БД. Что-то вроде линкрелейтед:
http://stackoverflow.com/questions/8406000/sql-connection-failure-in-linq-to-sql
Вот кусок кода, на котором сыпется (и не только на нём):
[HttpPost]
public ActionResult Edit(int id, Client client)
{
try
{
cctxt.Clients.ElementAt(id).Name = client.Name; //cctxt - DbContext для БД
cctxt.Clients.ElementAt(id).Surname = client.Surname;
cctxt.Clients.ElementAt(id).Address = client.Address;
cctxt.Clients.ElementAt(id).EMail = client.EMail;
cctxt.SaveChanges();
return RedirectToAction("Index", "Data");
}
catch
{
return View();
}
}
Вот ссылки на сам прожэкт:
http://rgho.st/79yLtk97f - 1 часть
http://rgho.st/7L4cRVqKh - 2 часть
Ахаха, проиграно. Только вчера с тимлидом обсуждал, почему он не берёт в команду девушек, даже на должность секретаря.
Вангую, потому что они нихуя не хотят работать, так?
Алсо, аноны, много ли лулзов можно извлечь, борясь за права мужчин с феминистками их же методами?
У них там двойные стандарты во асе поля, так что не особо.
> белые мужчины, и это расстраивает меня. Нам нужно больше гендерного разнообразия, нам нужно больше расового разнообразия, просто взгляните на статистику… она расстраивает
Cuckold as is.
Белые мужчины - это все, что нужно
Девка на корабле - быть беде, потому что начнётся соревнование за самку
И вообще, если он
> выступает на конференциях
то что мешает попасть на эти конференции девушкам, неграм, девушкам-неграм?
>Девка на корабле - быть беде, потому что начнётся соревнование за самку
Лол нет, не по этому.
Пиздец.
На моей первой работе меня тупо посадили багфиксингом заниматься сходу. Проект без какой-либо документации, все пришлось познать самому.
Другой тимлид репорт-ин.
Обычно тем кто спрашивает, рассказываю анекдот.
Что общего между девушкой-программистом и морской свинкой?
Морская свинка не имеет никакого отношения ни к морю, ни к свиньям.
Омежка, please.
>А о чем ты думаешь?
То, то мужнины ДОЛЖНЫ за бабу соревноваться, это мерзкий миф, поддерживаемый женщинами, в угоду женщин.
Конечно, находятся идиоты, которые видят муженственность именно в подобном пидарском соревновании. Мол женщину нужно добиваться, итд.
Ну так на то естественный отбор и существует.
А беду женщина приносит, потому, что она неэмансипированная мерзкая тварь.
Которая, видит в офисе свою персональную кухню, в которой нужно захватить власть.
Женщина в 99% случаев не командный игрок. Она всегда играет в царя горы. Плетет интриги, итд.
Я так уже делал. Чет у меня не работает :с
Есть такой код. Выдает, что совпадений между коллекциями 0, хотя это явно не так. Аналогичный код на питоне работает отлично, а тут залупа какая-то. Второй день бьюсь.
Тебе скорее всего нужно компаратор сделать. Потому что сейчас оно по адресу в памяти сравнивает и не находит совпадений.
На msdn прямо пример есть с интерсект и IEqualityComparer.
Суть в том, что Intersect не работает с коллекциями классов точнее работает, просто он ищет совпадающие ссылки
Лови, и не надо ничего переопределять. Как раз вчера под кривой vknet кодил.
[CODE]
var both = gGroups.Join<Group, int, int, Group>(groups, x => x.Id, y => y.Id, (x, y) => x);
[/CODE]
> ElementAt
этот метод возвращает элемент на указанной позиции. А EF ничего об этом не знает.
Тебе же надо юзать Where или скорее First
cctxt.Clients.First(x => x.id == id).Name = client.Name;
Я уже молчу, что надо проверять есть вообще такие клиенты, а не сразу изменять поля.
Вроде этого:
[CODE]
var client = cctxt.Clients.FirstOrDefault(x => x.id == id); // предполагаем, что id ключевое поле
if (client != null)
{
client.Name = ...;
client.Surname = ...;
...
cctxt.SaveChanges();
return RedirectToAction("Index", "Data");
}
return View();
[/CODE]
Спасибо. Отпишусь как попробую:3
>>971787
Абстрактные классы, как уже писали выше, позволяет реализовать паттерн "шаблонный метод". То есть, описать реализацию метода один раз, чтобы он работал для всех потомков.
Также абстрактные классы, в отличие от интерфейсов, позволяют переопределять протектед-методы.
Кроме того, в абстрактном классе можно определить паблик и протектед поля поля, что недоступно для интерфейсов. Вызов свойств по производительности равнозначен вызову метода. Обращение же к полю значительно легче. Для большинства случаев разница эта не важна, и ею можно пренебречь. Но бывают таки случаи, где это может оказаться важным.
Единственное преимущество интерфейса над абстрактным классом, это возможность множественного наследования.
Не для нулевого уровня, тем не менее.
http://rutracker.org/forum/tracker.php?nm=Pluralsight Become a Full-stack .NET Developer
+15 кофейных зерен. А теперь, господин Раджеш Парахвешиваш, уёбывайте.
Не сдавайся. Пиши код, читай, смотри. Сам только год назад вкатился в аспу. Главное, чтобы было желание.
Ну и сам язык надо знать, особенно linq, ef.
> Because unit tests need to be predictable, easy to bootstrap, and fast, hitting an actual remote API is a test smell.
А можно ли дёргать реальные API сайтов хотя бы в интеграционных тестах? Вся суть моей программы заключается в том, что она предоставляет более удобный интерфейс к API. Я, конечно же, могу замокать ответы HTTP-клиента и не обращаться к реальному API, но что если API поменяется, как тогда тесты мне об этом скажут?
Полиморфизм, инкапсуляция, множественное наследование.
Есть у тебя три класса. Один класс выполняет функцию хранения некоторого параметра. Второму нужно к этому параметру иметь доступ чтения, но он ни в коме случае не должен его менять. Третьему нужно иметь возможность этот параметр менять. Описываешь два интерфейса. Один с сеттером, второй с геттером. Первый класс реализует их оба. Второй агрегирует первый, как экземпляр интерфейса геттера, третий агрегирует первый, как экземпляр интерфейса сеттера. Кроме того, ты можешь наклепать пачку таких классов, как первый, засунуть их в лист, и обращаться к их методам, внутри которых разная реализация.
Подскажите, как статическую линковку делать в .net? Надо залинковать одну dll'ку к проекту, но не могу понять, как это сделать статически, а не через reference'ы.
Ты еще тот извращенец.
Если кратко, то без бубна - никак.
Вот тут подробнее описали почему. http://www.cyberforum.ru/net-framework/thread638874.html
а какие альтернативы?
Дело в том, что проект использует Mono.Addins, не так давно от них решили отказаться, а таску по их выпилу повесили на меня.
Поэтому мне просто нужно в определенном месте (там, где раньше это делалось с помощью AddinManager) подргужать классы ручками, вот думаю, как бы лучше это сделать.
Так а в чём проблема динамически загружать через Assembly.Load?
http://stackoverflow.com/questions/465488/can-i-load-a-net-assembly-at-runtime-and-instantiate-a-type-knowing-only-the-na
Что собственно и происходит на фоне, если посмотришь в сорцах
https://github.com/mono/mono-addins/blob/master/Mono.Addins/Mono.Addins/AddinManager.cs
На каком курсе студент?
У свойства должен быть только публичный гет-метод(интерфейс класса, упрощение логики, все дела).
Внутри класса лучше сразу работать с приватным полем, т.к. оно в полной власти класса и он какбэ должен знать, что с ним делать.
Если полю нужна какая-то дополнительная обработка при запросе/установке, то есть несколько вариантов разной степени ущербности:
- приватный сеттер. Плохо из-за размытия четкой грани между интерфесом класса и его внутреним состоянием.
- отдельный метод для доступа. Нужно отдельно помнить, что нужно работать только через него.
- копипаст обработки. Тоже можно. так победим!
- вынести поле с нетривиальной обработкой в отдельный класс, у которого будет публичный сеттер(либо контракт) скрывающий всю сложность доступа/обработки. Это концептуальный трувей, но в замен тормоза в рантейме и куча очень мелких классов в проекте. Так-то в энтерпрайзе производительность нинужна, поэтому не нужно бояться мелких классов с тремя с половиной удобными методами.
Первый пик одним потоком, второй через Foreach.Parallel
Разница в секунду
Вот мой говнокод
https://pastebin.com/vabRtAYi
ксамарин под шарп такое говно, шо я ебал её маму урот. Я пытался под 2.4 андроид писать, сломал оба глаза и забил, лучше уж на яве тогда писать.
Т.е. среди разработки под мобилы ява - монополист? А если брать веб-разработку через AVC.Net?
> Parallel.ForEach(content, ParallelDownloadContent);
Пробуй так.
Parallel.ForEach(content, new ParallelOptions() { MaxDegreeOfParallelism = 16 }, ParallelDownloadContent);
У меня пикрелейтед, последовательно 1.6сек
Тем не менее разницы большой нет. Почему?
Потому, что задача скачки файла не особо поддаётся разделению по потокам, ведь у неё есть ограничивающий фактор - твой интернет канал. Ожидание же ответа от сервера как раз поддаётся распределению, вот только эта операция итак настолько быстраязадержек особо нет с двача, что не даёт большого выигрыша по времени - у меня на 0.5сек быстрее например.
добавлю, что и скачать ты пытаешься всего 4мб с того треда, там файлов 10 всего.
Если качать отсюда https://2ch.hk/b/res/152135918.html (М) 160файлов, 32мб то разница уже в 2 раза, было 13с, стало 6с.
Да, андроид хоть и на си писан, но нативным почему-то выбрали жаву, мол популярная сочли, портировать апплеты не хотелось. Я считаю, что именно поэтому андроид лагучее говно. Общался с андроид-разрабом, так они всем отделом плевались несколько лет разработки, но что поделать, выбор не велик.
> AVC.Net
Ты имел ввиду ASP.net? Так это же совсем другая технология.
>Ты имел ввиду ASP.net? Так это же совсем другая технология.
Я про значимость в веб-разработке. Востребован ли, много ли профита можно поиметь и т.д. Или лучше окунуться в WPF с формами?
Смотреть, думаю, надо по вакансиям. Лично я сделал ставку на асп. Впф как по мне чисто вспомогательная технология, далеконикуда на ней одной не уедешь.
А так, асп + ef + bootstrap какой, всё это перемешать, посыпать несколькими придуманными проектами выполненными по всем канонам и джун готов.
С этого треда у меня
12 секунд без указания MaxDegreeOfParallelism
12.856 с MaxDegreeOfParallelism = 8
11.5 с MaxDegreeOfParallelism = 16
25 c в один поток
Это на хдд
На ссд 6.736 уже без MaxDegreeOfParallelism
Только нужно было прописать ServicePointManager.DefaultConnectionLimit = 100;
Иначе выбрасывает Socket.Exception
“An existing connection was forcibly closed by the remote host”
ну значит либо провайдер врёти, либо сервера двача далеко от тебя.
По сути, упирается всё в инет. По крайней мере у меня. Быстрее никак.
Последний вариант это комп.
Можешь еще профайлер запустить и посмотреть результаты. Но думаю всё будет висеть на DownloadFile.
Можно запариться и реализовать через HttpWebRequest, а не WebClient'ом, но думаю это бессмысленно, скорость и так достаточна. Сам понимаешь, что используя высокоуровневые абстрации, тобишь шарп, мы жертвуем некоторой долей производительности. А если миллисекунды такважны, то надо на плюсах/си через сокеты делать.
Стоит ли юзать WCF для таких задач? Про WCF я слышал краем уха и не совсем понимаю, для чего оно нужно. Сейчас в мыслях сделать какой-то недопротокол взаимодействия: выделить сообщения первой части и сообщения второй части, и реализовать все это на сокетах. Но хотелось бы знать, как это сейчас делается более-менее по фен-шую. Заранее спасибо.
C# хорошо впишется для такого или все же лучше делать на C/C++? Вроде бы принято считать, что для низкоуровневых задач С лучше заходит, но раз формочка...
http://www.vivid-abstractions.net/logical/programming/vamemory-c-memory-class-net-3-5/
https://github.com/ZenLulz/MemorySharp
https://github.com/lolp1/Process.NET
И еще десятки и десятки подобных библиотек.
Если уж решил написать сам, то
http://pinvoke.net/default.aspx/kernel32/ReadProcessMemory.html
Я пока не приступал к решению, разбираюсь с поинтерами в упакованном экзешнике. Меня интересовало в целом, стоит ли связываться с шарпом сегодня ньюфагу для написания подобной утилиты?
Эвент tick, но не у формы, а у таймера.
+15
По чему? По Шарпу - хз, а в принципе - учебников от российских авторов много хороших, особенно мгушных из не мгушных - фихтенгольц по матану убергоден какого хуя стоит сказать что есть что то годное рфское/советское - прискакивают +15 рублевые?
Как мимохуй подмечу, что есть общепризнанная классика. Тот же Рихтер. Зачем изобретать велосипед?
Русские авторы работают в Microsoft? Увы, не думаю. И мне, как мимохую, не внушают доверия книги русских авторов
Метан и тд - это уже совсем другая история
Матан*
Так я не за это пояснял, а за то что считать все русские учебники по чему угодно априори говном - неправильно. А за шарп - верно, есть Рихтер/троелсен/албахари/скит - остальное нинужно.
Верно. И linq обмазаться не забудь, без него никуда сейчас.
ПКМ по проекту/солюшену -> Configuration Management.
Большое спасибо тебе, анон, заработало!
System.Array.Empty() отсутствует же.
НАСТАЛО ВРЕМЯ ПЕРЕУСТАНОВИТЬ МОНО, МОНО САМ СЕБЯ НЕ ПЕРЕУСТАНОВИТ! ПЕРЕУСТАНОВИ МОНО, ВЕДЬ ТЫ СВОБОДНЫЙ ОТ СТУДИИ ЧЕЛОВЕК!
Переустанавливал и моно, и самарин.
проверьте пожалуйста кто-нибудь 2017 студию под вайном
А вы, батенька, знатный извращенец.
говно из говна
Слушай сюда. Запомни нахуй. Всегда доводи какую-то хуйню до конца. Пусть плохо. Пусть днищенски. Но доводи до конца. Забудь о перфекционизме. Главное взять и закончить начатое. Это очень важный и полезный навык.
Если же ты бросаешь то за что берёшься, то ты обретаешь навык успешного забивания хуя на рандомной части того что ты делаешь. Это будет тебе очень сильно вредить, потому что переучиваться всегда тяжело.
мимо
Спасибо
Двачую этого.
public Object method();
Как вставить код в метод помеченный атрибутом?
Продолжаю развлекаться.
Хочу менять в другом потоке элементы окна. При этом мне надо слипнуть этот второй поток на 5 секунд. Я делал так, но я уже понял что Thread.Sleep() останавливает мне основной поток(10 строка):
[code lang=c#]
var borderColor = Brushes.Green;
if (!parser.isMatch(MatchingText.Text)) {
borderColor = Brushes.Red;
}
Application.Current.Dispatcher.BeginInvoke(
DispatcherPriority.Background,
new Action(() => {
MatchingText.BorderBrush = borderColor;
MatchingText.BorderThickness = new Thickness(7d);
Thread.Sleep(5 * 1000); // Но тут он слипает не себя, а главный поток
MatchingText.BorderBrush = Brushes.Transparent;
MatchingText.BorderThickness = new Thickness(1d);
})
);
[/code]
Пойду пока поищу дальше.
сука, видимо надо было использовать csharp вместо c#
Во первых блять элементы окна нельзя менять из других потоков, во вторых блять Application.Current.Dispatcher.BeginInvoke это нихуя не второй поток, а тот же самый.
Я кажись понял, я просто анонимный метод передаю основному потоку на выполнение. И он понятное дело себя слипает, согласно коду.
Как мне на 5 секунд моргнуть рамкой тогда, в какую сторону смотреть?
Спасибо, сейчас посмотрим.
В форме имею текстбокс и календарь, текстбокс должен отображать разный текст, в зависимости от дня календаря. На сегодня один текст, на завтра другой, на послезавтра, допустим, текста нет - добавьте через другую кнопку ниже. Не понимаю как это реализовать. То есть, как добавлять текст в текстбокс я в курсе, как заставить его плясать под календарь я не понимаю. Кто-то может что-то посоветовать?
Попробуй подключить сторонний плагин, Кирилл.
>>985208
Люто двачую этого, сам по ним начинал. Второй вообще от корки до корки несколько раз изучил.
>>985452
Это веб-приложение, десктоп приложение, мобильное или ещё какое-то? Как я это должен понять?
Скорее всего web - просто генерируй страницу и отправляй(лол)
Юзай событие DateChanged у MonthCalendar
Для хранения пар (дата,текст) можно юзать Dictionary<DateTime, string>
Получай выделенную дату через метод SelectionStart, если выделено несколько дней, то считаться у тебя будет только первый.
получится что-то вроде:
dic.Add(calendar.SelectionStart, labelForDate.Text);
Надеюсь дальше разберёшься.
подскажите какие проджектики запилить для тренировки/чтобы показать можно было
спасибо.
а то постоянно на питоно-должности натыкаюсь не знаю по какому пути идти
А в чём проблема загуглить по твоему городу?
Я вот очень редко на питон натыкаюсь в вакансиях.
А вообще везде дохуя вакансий, изучить просто надо хоть что-то одно сперва
пиши хеллоуворлды с применением бест практисес
А можно просто заюзать биндинг и магия все сама сделает. Но нет, пишем в Button1_click()
Всё ок, только оставляй минимум одну строку между атрибутами класса, используй String вместо string, юзай xml-комментарии(///) и замени публичный поля на свойства(в твоём случае уместней будет), алсо вообще почитай какой-нибудь кодстайл для C#(желательно от microsoft).
Why? Имя класса должно быть в Pascal case.
Куда ты уже разогнался? Парню надо что-то простенькое, да на коленке сделать.
А студия жопу не порвёт?
Как изменить colorAccent из-за него я как понял у меня крч курсор розовый в Entry. Меняю значения в Style.xml так оно не компилит.
Нашел на просторах форумов как сделать курсор норм цвета, ток сам указатель курсора( когда в средину слова тыкаешь он появляется) все равно розового цвета.
да и вообще стоил ли учить xanarin или забить ?
Спасиб
Это копия, сохраненная 9 июня 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.