• Какой IoC контейнер для .NET лучше? Unity или Ninject?

    szKarlen
    @szKarlen
    Могу посоветовать Ninject — имеет очень активное сообщество, существуют расширения для MVC3, NLog, Glimpse + много чего.
    Лично мне нравится сам API. если хотите убедиться в простоте использования, то можно на примере ASP.NET MVC:

    1) назначаем привязки
    class RepoModule : NinjectModule
    {
        public override void Load()
        {
            Bind<ICategoryRepository>().To<CategoryRepository>();
    
            Bind<IProductRepository>().To<ProductRepository>();
        }
    }
    


    2) загружаем ядро
    var modules = new INinjectModule[]
                {
                    new RepoModule()
                };
                var kernel = new StandardKernel(modules);
                RegisterServices(kernel);
                return kernel;
    


    3) пишем наш контроллер
    public class ProductsController : Controller
    {
        private readonly IProductRepository productRepository;
    
        public ProductsController(IProductRepository productRepository)
        {
            this.productRepository = productRepository;
        }
    }
    
    Ответ написан
    Комментировать
  • Обучение основам C#, посоветуете книги?

    szKarlen
    @szKarlen
    Начинайте читать Pro C# 2010 and the .NET 4 Platform, Andrew Troelsen, изд. Apress.
    В книге описывается все — начиная от синтаксиса языка, заканчивая ASP.NET, WPF.
    Все доступно. Для начинающего просто идеально.
    Ответ написан
    1 комментарий
  • Понять язык c# (да и вообще ООП, наверное)?

    szKarlen
    @szKarlen
    Почему (?) мы можем объявить объект экземпляра вложенного класс (В) вот так:

    new A.B()

    Класс В не является статичным же.
    И почему (?) мы не можем его определить вот так:

    A a = new A();
    new a.B();

    при создании экземпляра класса используется его полное имя, даже если он объявлен внутри другого класса.
    статичность класса здесь не причем. класс B содержится в описании класса A и никак не связан с его экземплярами.

    >Для чего нужны статичные классы? Наследовать и создавать объекты нельзя же.
    Это экзотическая альтернатива неймспейсов? Что можно с ними делать?

    они необходимы при создании, например, Extension Methods.
    public static class MyExtensionProvider
    {
    public static void DoSomething(this Object targetObject)
    {
    return;
    }
    }


    про оператор as уже ответили.
    Ответ написан
    1 комментарий
  • Зачем браузеру столько памяти?

    szKarlen
    @szKarlen
    Одна из главных проблем — это DOM и прорисовка. из-за текущих спецификаций CSS, современным браузерам приходится создавать огромное количество объектов синхронизации для DOM-элемента и графического представления. особенно это может проявляться при большом использовании inline-блоков и таблиц.
    так, например, на больших страницах типа википедии это может даже приводить к лагам при прокрутке определенных мест на странице.
    Ответ написан
    5 комментариев
  • Для чего до реализации класса определять интерфейс?

    szKarlen
    @szKarlen
    Думаю, сначала нужно четко определить, что не всегда и не во всех случаях необходимо реализовывать интерфейс. Так, для класса Point2D абсолютно этого не надо, или же Vector2D, Vector3D.
    Выше приводили пример с фигурами — однако, он показывает не это. Его предназначение — наследование в ООП (вспомним три постулата: полиморфизм, инкапсуляция и наследование).
    Интерфейсы, на практике, определяются в большинстве случаев для:
    1. уменьшения связности системы
    2. классов (объектов), выполняющих роль по обработке данных
    3. классов (объектов), следующих какому-либо паттерну программирования (репозиторий, стратегия)
    4. на этапе проектирования для создания заглушек
    5. для использования в юнит-тестировании

    А так как Вы еще писали про C# — то вспомним и про явную и неявную реализацию интерфейса, что удобно, например в GUI.
    Интерфейс — скелет, на котором строится вся система.
    Ответ написан
    Комментировать
  • Что валидирует такая регулярка?

    szKarlen
    @szKarlen
    в приведенном примере используется метасимвол \xdd, используемый для нахождения латинских символов, указывая их hex-значение
    \d — означает парсинг чисел (0-9)
    {6} — означает 6-значное число
    1 — hex-значение начинается с 1
    Ответ написан
    2 комментария
  • Выбор языка программирования. Помогите определиться

    szKarlen
    @szKarlen
    если как язык Вам ближе C++, тогда начинайте изучать Qt. очень гибкая платформа.
    однако, я бы сейчас посоветовал C#. начинайте изучать .NET; для кроссплатформенности подходит Mono.
    и да, если есть прицел на мобильные платформы, тогда AS3 и Flex. для игр и где много графики на моб. нужно знать много тонкостей, но для обычных приложений подходит отлично.
    лично у меня сейчас для проектов сервер/десктоп — на C#, под мобильные — Flex Mobile.
    Ответ написан
    3 комментария
  • Реляционное программирование?

    szKarlen
    @szKarlen
    реляционные языки — языки программирования, оперирующие с данными как со множествами, применяя к ним основные операции теории множеств.
    типичным примером является SQL. однако сюда также можно отнести и Пролог. объясню почему: если SQL основывается на теории исчисления кортежей, которое является в свою очередь направлением реляционного исчисления, а в основой оного лежит теория предикатов первого уровня, то Пролог основывается на подмножестве данных предикатов — дизъюнктов Хорна.
    насчет того, что будущее программирования за ними — я бы остерегся таких высказываний, т.к. все-таки вы не сможете с помощью них покрывать многие аспекты алгоритмического программирования. например, SQL позволяет отвечать на вопрос «ЧТО», но не «КАК».
    насчет нейронных сетей — на чем пишутся они сами? правильно на алгоритмических языках. и еще не надо путать алгоритмы и нейронные сети с алгоритмическим и реляционным программированием — это совсем разные вещи.
    Ответ написан
    Комментировать
  • Почему в магазине Windows Phone такие бешеные цены?

    szKarlen
    @szKarlen
    ответ, думаю, прост: на данный момент каждый разработчик тратит силы (деньги) на разработку/портирование своего продукта.
    на данный момент WP7 не слишком распространена, следовательно, покупателей мало, а деньги отбивать также надо.
    как только аудитория вырастит, то и цены обвалятся.
    Ответ написан
    Комментировать