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

    • Перевод
    Чем старше я становлюсь, тем менее важной становится запятая. Пусть читатель сам решает, где ему ставить паузы. — 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
                  • 5,9k
                  • 4