Задать вопрос
  • Как можно мокнуть даный код?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Очевидно, что нужно изолировать ConfigurationManager, обернув его в "фасад" IConfiguration с соответствующими методами доступа, а его уже мокать.

    interface IConfiguration
    {
        string ConnectionString { get; }
    }
    
    class AppSettingsConfiguration: IConfiguration
    {
        public string ConnectionString
        {
            get
            { 
                return ConfigurationManager.AppSettings["ConnectionString"];
            }
        }
    }


    var config = new Mock<IConfiguration>();
    config.Setup(x => x.ConnectionString).Returns("test value");
    Ответ написан
    Комментировать
  • Раннее и позднее связывание Java?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Этим и полезно знание знакомство с C++ (=

    Суть в чем: куда-то в память загружается объект-тип (не экземпляр с данными, а именно представление типа), в котором физически располагается код методов. У каждого экземпляра классов есть ссылка на свой объект-тип. Когда тип ссылки на объект совпадает с его типом, то все просто: мы знаем, что метод можно найти напрямую. Открываются перспективы для оптимизации компилятора: подстановка конкретного адреса метода или даже инлайнинг (когда вызов метода заменяется непосредственно на код из метода, чтобы не тратить такты на передачу параметров). Это раннее связывание.
    Если же у нас возможен полиморфный вызов (переменная-ссылка может указывать на объект-наследник, у которого может быть переопределение родительского метода), то нужно узнать точно какого типа объект, чтобы вызвать подходящее определение метода из нужного типа. Увы, это мы узнаем только в рантайме, поэтому компилятор не поможет оптимизировать этот процесс. Это позднее связывание.

    Во многих Си-подобных языках (C++, C# и т.п.) в угоду производительности используется раннее связывание по умолчанию: полиморфные методы должны явно помечаться программистом ключевым словом virtual (иначе будет вызываться метод из типа переменной-ссылки, не полиморфно), в Java же в угоду читаемости кода используется позднее связывание по умолчанию: все методы неявно "virtual", так что качество связывания отдается на откуп компилятору.
    Конечно, есть возможность пометить метод ключевым словом final, что запретит переопределять метод в наследниках, т.е. у компилятора появятся все полномочия жестко вбить необходимый адрес метода в точку вызова без страха, ибо альтернативных версий метода в наследниках просто быть не может.
    (В С++11 также есть ключевое слово final, а в C# - sealed)
    Ответ написан
    1 комментарий
  • Как подключить свой .h файл?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Это не ошибка, а warning. Очевидно, что много воды утекло с тех времен, когда Страуструп писал это в книжке.
    Компилятор говорит, что у вас есть три варианта:
    1. не обращать внимание на предупреждение
    2. задефайнить _SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
    3. не использовать hash_map


    На MSDN вы могли бы нагуглить следующее:

    This API is obsolete. The alternative is unordered_map Class.
    Ответ написан
  • Как назначить в автоматическом режиме запятые в конце каждого из слов в Sublime Text?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    1. Поставить курсор на первое слово
    2. Зажав Ctrl+Alt и стрелку вниз "растянуть" курсор на все слова
    3. Перейти в конец строк (End)
    4. Ввести запятую
    5. Выйти из выделения (Esc)


    Можно провернуть то же самое через поиск и "Find All", если нужны только определенные строки.
    Ответ написан
    3 комментария
  • Как заменить варьирующуюся строку в файле через .cmd?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    вы не один такой.

    Явно или неявно, вам необходимо использовать PowerShell. Можно сделать и так:

    $file_path=".\temp.txt"
    (Get-Content $file_path) -replace "HOST='[\w\-\d]+'", "HOST='%COMPUTERNAME%'" | out-file -encoding ascii $file_path
    Ответ написан
  • Чем заменить стандартнй cmd windows?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Уж не знаю, про какой дизайн вы говорите, когда речь идет о текстовом интерфейсе =)

    На винде, честно говоря, даже не нашел как можно создать пустой файл через консоль.

    О, этому я вас даже могу бесплатно научить.

    По сабжу. Тот же Git исторически работал через сygwin (который представлял собой собранный под Windows ряд GNUтых программ + сам bash).

    Но теперь в Windows (10) есть Linux-подсистема (WSL), в которой вполне себе работает touch, find, grep, sed, awk, нормальный ssh и куча всего остального (а чего нет, то ставится через sudo apt-get install $package_name). Но главная фишка: нативная поддержка линуксовых бинарников.
    Ответ написан
    Комментировать
  • Почему криво отображается код?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Нужно позволить Git автоматически при коммите заменять Window-style line endings ("\r\n") на Unix-style ("\n") и обратно, прозрачно для программиста.

    git config --global core.autocrlf true

    Об этом гитхаб пишет в своем хэлпе.
    Ответ написан
    6 комментариев
  • Как запустить скрипт во всех подпапках?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    find ./robot_* -maxdepth 0 -type d -exec {}/start \;
    Ответ написан
    1 комментарий
  • C# Как переписать toString для свойства?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Читабельное свойство (имеющее метод get) возвращает объект некоторого класса, метод ToString которого вы можете переопределить.
    Ответ написан
    Комментировать
  • Что поучить по базам данных junior .NET Backend?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Есть язык ANSI SQL, он как идел, в чистом виде нигде не существует, каждая СУБД его придерживается, но вносит свои фишечки, которые делают его не полностью совместимым с другими СУБД. SQL с "фишечками" в конкретной СУБД назвается диалектом SQL. В MS SQL Server свой диалект - Transact-SQL. А еще в SQL Server можно встраивать .NET-сборки.

    EF из объектов и выражений генерирует T-SQL-код, отправляет SQL Server и парсит ответ снова в C#-объекты с учетом их связей, почему и называется ORM-фреймворком.

    Как правильно говорят, EF и прочие ORM не освобождают от необходимости знать SQL и того, как там организуются связи. Ибо на собеседосах все равно будут заставлять писать SQL на листочке, а на практике во имя бога производительности вы все равно будете писать хранимые процедуры на T-SQL. Так что работать с ADO.NET нужно уметь, даже не смотря на то, что это выглядит достаточно антично в наш хипстерский век.
    Ответ написан
    Комментировать
  • Как вы организуете свою работу?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    То, что делается больше 5 раз и занимает больше двух минут должно быть заскриптовано. То есть всякие бэкапы, апдейты, деплои, миграции, поиск самых смешных котиков и прочие важные в работе вещи можно и нужно автоматизировать. Тем более, что в виндах теперь есть нормальный bash

    ЗЫ Перед тем, как хвататься за Evernote, я бы посоветовал посмотреть, как оттуда можно извлекать свои заметки (экспорт, при необходимости уйти в какой-нибудь другой сервис). Это не так просто. Это касается любого SaaS, который вы планируете использовать в качестве базы знаний.
    Ответ написан
    10 комментариев
  • Что происходит при присвоении нового значение переменнной, хранящей объект?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Происходит ли уничтожение объекта, хранящегося в a?

    Перечитал вопрос) Если оператор не перегружен, то данные будут затёрты, сам объект a будет бинарной копией b. Если перегружен, то произойдет лишь то, что там описано.

    Объект, хранящийся в b, копируется побитово или с использованием конструктора копирования?

    С использованием оператора копирующего присваивания =3 По умолчанию он копирует объект побитово (так же поступает умолчательный конструктор копирования, кстати).

    удалось выполнить присваивание без наличия соотв. конструктора.

    За вас дефолтные реализации дописал компилятор.
    Ответ написан
    7 комментариев
  • Как правильно писать Unit Test к ASP.NET MVC?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Нужно настраивать моки. Они по умолчанию возвращают default-значение требуемого типа. Таким образом внутри AddCategory мок репозитория всегда дает result == null и, соответственно, null возвращается, тест падает.

    var model = new CategoryModel { ... };
    
    var categoryModelRepository = new Mock<ICategoryModelRepository>();
    
    categoryModelRepository.Setup(x => x.AddCategory(model))
                                                .Returns(model);
    // Или
    categoryModelRepository.Setup(x => x.AddCategory( It.IsAny<CategoryModel>() ))
                                                .Returns(model);
    
    // Act...
    
    Assert.IsNotNull(result);
    Ответ написан
    7 комментариев
  • Особенности Mono и оговорки CLI-языков?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    особенности Mono...её отличия от "оригинальной" .Net

    www.mono-project.com/docs/about-mono/compatibility

    Троелсен упоминает о "серьёзных оговорках" при компиляции языков, удовлетворяющих требованиям спецификации CLI в CIL.

    Вероятно, речь идет о том, что не все языки поддерживают все возможности IL и чтобы библиотеки нормально можно было использовать в мультиязычной среде, нужно следовать некоторым ограничениям - CLS (Common Language Specification). Об этом лучше читать у Рихтера.
    Ответ написан
    1 комментарий
  • За что придется платить, если будешь использовать C# и .NET?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Можете почитать лицензионное соглашение MSVS Community 2017. Вкратце: мелким организациям и ИП - бесплатно.

    Важно отличать ASP.NET MVC и ASP.NET Core. Под первую пишут на виндах и под винду, второй - некоторой степени сырости (но жить можно), который можно использовать полностью бесплатно в любых масштабах.

    То есть для крупной организации это может быть от бесплатного .NET Core-решения на Linux (VS Code + ASP.NET Core + MS SQL Server Express), до полностью платного стека:
    1. MS Windows (на сервер, IIS в комплекте),
    2. MS SQL Server (на сервер),
    3. MS Windows для разработчика,
    4. MS Visual Studio для разработчика
    Ответ написан
    Комментировать
  • Если я пишу код на основе других, это плохо?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Все нужно делать с головой, вникать в тот код, который к себе копируешь и лишь удостоверившись, что он выполняет твою задачу оптимальным образом - подтачивать и запиливать к себе. А бездумно копипастить откуда попало - это даже хуже, чем писать велосипеды.
    Ответ написан
    Комментировать
  • Когда следует использовать структуры?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Когда вы оперируете примитивами, копирование которых достаточно дешево. В полном смысле слова значения. Примером будет System.Windows.Point или System.Decimal.
    Ответ написан
    3 комментария
  • Как должен вести себя нормальный PM?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Один pm целый день у меня расспрашивал за сколько я сделаю ту или иную задачу

    Это нормально, так все и делают. А как иначе-то оценить производительность программиста и о чем вести речь с заказчиком?

    Команда садится за стол, втыкает в ТЗ, задают вопросы заказчику, обсуждают, перерабатывает его в последовательность задач. Потом каждую оценивают в часах (конечно же включая туда изучение ранее незнакомого, возможный багфиксинг). Около дня это и выходит. В результате у ПМа на руках примерная (+/- 20%) оценка времени, необходимого на выполнение. С этим он идет к заказчику и общается.

    один из них начал названивать по телефону ко мне на выходных, и интересоваться как дела с задачей так как дедлайн кончился и с него спрашивает заказчик

    Вы же не уложились в сроки, поэтому интерес не праздный. Конечно, на выходных - это уже некоторая фаза отчаяния.
    Ответ написан
    Комментировать
  • Немного о способе изучении asp.net mvc?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    ИМХО, стоило бы изучать с Шилдта или Троелсена. Там язык подается в чистом виде, с консольными примерами, без заморочек с GUI в самом начале. XAML в вебе не нужен (ибо Silverlight, где он использовался, не особо жив), это правда.

    Для ASP.NET MVC нужен HTML/CSS и базовый SQL (ORM в виде EF есть, да, но гораздо легче ею овладевать, зная, как она общается с сервером). JavaScript можно учить параллельно. С ангуляром я бы советовал повременить, вместо него jQuery (что бы хипсторы не говорили, он сейчас почти везде).

    Вообще, идеально было бы распараллелить изучение C# в глубину (по Рихреру, например), баз данных и DAL (ORM - EF), ASP.NET MVC и веб-фронтенда, ибо в изоляции друг от друга сложнее.
    Смотреть на ASP.NET Core новичку сейчас есть смысль лишь если нет другого компьютера, кроме мака.

    На Git выделять в отдельный шаг - это слишком. Базовые операции с Git можно изучить за вечер, по необходимости дочитывать в процессе, может еще пару вечеров факультативно выделить на "internals". Вообще необходимость в нем появится, когда будешь делать первый крупный pet-проект (то есть это где-то в процессе освоения ASP.NET MVC).

    не могли бы вы посоветовать книги для изучения С# имено под веб ?

    Адам Фриман "ASP.NET MVC X для профессионалов"
    В продаже есть версия про MVC 5, но версия от версии отличается не слишком критично, поэтому и для 4 пойдет для начала. Это книжка уже чисто про веб-фреймворк, кое-что про сишарп там обзорно и лишь в самом начале, читать ее нужно уже изучив базу языка. Кроме того автор там пишет про паттерны (пресловутый MVC и его историей развития), техники написания юнит-тестов и внедрения зависимостей (IoC/DI). Книжка мегакрутая для новичка, но достаточно непростая, требует обдумывания и на некоторое время может стать настольной.
    Ответ написан
    Комментировать
  • Как создать файл из bat с текущей датой?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    %DATE%
    Ответ написан
    Комментировать