• Портрет Нуба

    • Перевод
    Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — Elizabeth Clarkson Zwart


    Примерно так я комментировал свой код двадцать лет назад (внимание, чуток драмы):

    /*
     * Когда мы дойдем сюда, наша структура уже будет готова. 
     * К тому же, мы создали достаточно большой буфер, в который 
     * можно засунуть все входные данные, плюс есть немного места
     * про запас. Я не уверен, понадобится ли оно, но хуже не будет. 
     * Теперь нам надо обновить счетчик, предполагая, что клиент 
     * уже прочитал значение, но еще не использовал его. Сначала 
     * я хотел переложить обязанность инкремента на плечи вызывающего
     * кода. С другой стороны, это означает, что инкремент нужно делать всем, 
     * поэтому я решил, что будет лучше перенести его сюда. Но мы можем 
     * пересмотреть это решение позже, если вдруг кому-то из внешних функций 
     * захочется делать инкремент самому.
    */
    counter++; // инкрементировать счетчик для потребляемого значения
    
    /*
     * Теперь нужно просмотреть весь буфер с данными. Для этой 
     * операции нам понадобится еще один индекс, иначе перед 
     * выходом из функции мы потеряем начальное значение. 
     * Я хотел назвать эту переменную ‘ref’, потому что в некотором
     * смысле мы будем обращаться с ней как со ссылкой на данные. 
     * В конце концов я пришел к выводу, что самым лучшим  
     * названием для нее будет ‘pos’. Если что, я не против обсудить
     * это решение.
    */
    char* pos = buffer; // начинаем наш обход данных
    
    /*
    Теперь, мы...
    */


    Ну что, узнаете? А должны! Если быть предельно невежливым, весь код выше написал нуб. (Между прочим, если вы не знаете, кто такой нуб, значит вы — нуб).

    Читать далее
  • MS SQL 2008: Табличный тип с колонками вида sql_variant (пока?) несовместим с ADO.NET

      sql_variant — Тип данных, хранящий значения различных типов данных, поддерживаемых SQL Server.

      Может быть полезен в каких-то обобщающих аспектах разрабатываемой БД. Например, в таблице настроек приложения или при ведении динамических свойств объекта.

      Что касается ADO.NET, то здесь возможное удобство в том, что sql_variant можно передать из управляемого кода в хранимую процедуру, которая является обобщенной для передаваемого значения. Если требуется разветвлять логику согласно передаваемому значению, то фактический тип можно узнать через функцию SQL_VARIANT_PROPERTY.

      На самом деле, проблем с единичным параметром нет. Проблемы возникают тогда, когда нужно передавать список параметров.

      Как же без облома?
    • Подход к Online Analysis Processing

        По следам этого поста.

        Пользователям системы, имеющим интерес в части обработки и анализа данных, необходимо предоставить возможность просматривать специализированные отчеты о произошедших изменениях в системе. Любой пользователь системы, требующий отчетную информацию, очевидно, использует ее в той сфере деятельности, которая является прикладной относительно деятельности, регистрируемой в Системе. Из этого следует, что Система должна обладать возможностью предоставлять так много отчетных форм, чтобы каждый пользователь смог удовлетворительно использовать некоторую комбинацию из них в своей работе.

        Постановка задачи и решение
      • Тесты методов передачи списковых переменных в хранимую процедуру MS SQL 2008

          По следам этого поста. Надеюсь, автор не будет иметь ничего против того, чтобы я расширил его умозаключения.

          Внутри описание (плюсы\минусы) методов передачи, таблица и график сравнения. Рассматриваются следующие методы передачи параметра:
          • Xml (Openxml)
          • Xml (Xquery)
          • Строка
          • Блоб
          • Промежуточная таблица
          • Табличный тип

          Что же круче?
        • Коварный вопрос по Event \ Delegate

            На собеседованиях собеседователи любят задавать всякие каверзные вопросы. Одним из любимых вопросов на понимание .net платформы является вопрос про события и делегаты. В лучшем случае спрашивают отличия, в худшем могут задать такой вопрос на засыпку.

            Вопрос на засыпку
          • Layers + Unity Container

              Всем привет! Хочу привести пример layers-архитектуры и роль контейнера Unity в ней. А то народ про сам контейнер пишет, а как его c с пользой использовать толком написать не могут. Давайте я попробую.

              Читать дальше →
            • VSTO и CAB: Интеграция .NET приложения в Microsoft Word

                VSTO расшифровывается как Visual Studio Tools for Office. Эти средства позволяют довольно легко скрещивать ужа с ежом — писать .NET приложения, исполняемые CLR в среде Microsoft Office. В частности, программисты обладают возможностью создавать подключаемые модули (плагины) и «кастомизированные» шаблоны для документов почти ко всему основному семейству продуктов Microsoft Office.

                В статье приведена инфраструктура Windows Forms проекта, в котором Microsoft Word воспринимается приложением в качестве шелла. В статье раскрыты несколько интересных моментов использования Composite UI Application Block, в частности подключение инфраструктуры доменной модели Word в сервисам расширения каркаса, а так же приведены некоторые факты и особенности разработки с использованием средств VSTO.
                В общем, кому интересно - милости прошу
              • Martin Fowler — GUI Architectures. Часть 3

                  Часть третья. Для минимизации количества отсебятины, текст переводится очень близко по смыслу, вследствие чего перевод приобретает «рубленные» черты. Тем, кто решил прочитать, следует читать осторожно, ибо прочитанное может нанести вред внутреннему чувству эстетики.

                  Предыдущая часть здесь. Оригинал статьи — здесь.

                  Шаблон - Модель приложения VisualWorks
                  • +12
                  • 6,4k
                  • 4
                • Martin Fowler — GUI Architectures. Часть 2

                    Всем привет еще раз. Это опять я. Внутри хабраката перевод еще одного параграфа статьи Мартина Фаулера.

                    На этот раз затронута тема MVC. Фаулер весьма популярно про него написал. Я постарался популярно перевести:) Теперь можно понять, почему все носятся с MVC, как с писанной торбой. И, кстати, Фаулер прав — очень много где и много кто воспринимают MVC по-своему. Сам Фаулер пишет про оригинальный MVC, который работал на платформе Smalltalk. Очень познавательно.

                    Предыдущая часть тут. Оригинал статьи тут. Очень желательно прочитать первую часть, потому как Фаулер там определил общую задачу-пример, которую он решает при помощи описываемых архитектур. Если не прочитать про эту задачу, будет немного не ясно, про что речь.

                    Следующую часть перевода напишу, когда разозлюсь и возьму себя в руки.
                    Прочитать про MVC.
                  • Martin Fowler — GUI Architectures. Часть 1

                      Перевод материала Мартина Фаулера. В статье обсуждается общий подход к архитектуре UI и приводятся подробные описания таких шаблонов проектирования, как MVC, MVP, Presentation Model, Forms and Controls, Humble View, Passive View. Статья неплохо прочищает мозг. Для того, чтобы не упустить ни единого нюанса, решил заняться переводом.

                      Вообще говоря, приседал долго, хотел сделать все сразу и быстро. Пальцем в небо. Иногда меня разбивал радикулит подступали майлстоуны по проекту и я откладывал перевод в долгий ящик. Или еще что-нибудь мешало. Короче, я все сразу не осилил и, чтоб добру не пропадать, решил выкладывать перевод по параграфам. Сейчас перевел половину, половина же осталась.

                      Я не профессиональный переводчик и мог что-то неправильно понять (и даже кое-где сделал пометки в скобках), но вы в любом случае обладаете возможностью прочитать статью в оригинале. Надеюсь, что перевод такой интересной статьи поможет кому-то улучшить свои навыки и расширит кругозор.
                      Прочитать про архитектуру UI!
                    • Оптимизация процесса создания unit-тестов

                        Всем привет! Хабраюзер shai_xylyd написал статью про аспекты тестирования, где им были рассмотрены некоторые понятия и ценности TDD. В частности, он упомянул очень интересный способ создания первичных юнит-тестов — когда функциональный код пишется совместно с кодом юнит-теста, чем меня очень заинтриговал.

                        Дело в том, что я (как программист), нахожусь в состоянии переходного процесса между «классической» разработкой и разработкой test-driven, поэтому всякими способами ищу возможности упростить и сделать более естественной последнюю. После пары приседаний, сразу включиться в методику shai_xylyd не сумел. Начал переписку с автором статьи, где он натолкнул меня на мысль подойти к решению с математической точки зрения. Идея в том, чтобы воспользоваться функциональным пространством среды программирования и «разложить» написание юнит-теста на составляющие. После чего сделать выводы.
                        Немного математики, а потом пример
                      • Microsoft Object Builder

                          Всем привет! Это моя первая статья в Хабре. Столкнувшись сегодня в ленте на описание Java-фреймворков Spring и Tapestry, решил просмотреть Хабру и найти ценителей «конкурирующих» фреймворков от Microsoft – в частности Composite UI Application Block (CAB) и Unity. К моему удивлению, ничего не нашел. Увидев в коментах в статье про Java-фреймворки просьбу описать механизм инъекций зависимостей, решил начать свой цикл статей про .Net-фреймворки именно с разъяснения вопросов IoC. Итак, встречайте – краеугольный камень (в прошлом) замечательного движка CAB – Microsoft Object Builder.
                          Читать далее