вторник, 31 января 2012 г.

Чертежи в оффтоп.

        Есть у меня несколько чертежей в Auto-CAD, вот решил их довести до более или менее божеского вида и постить в блоге. Их пока, как я уже упомянул, несколько, но, возможно, будет больше в будущем.
        Чертежи делались на добровольных основах для сообщества единомышленников :) и под свои личные нужды.
        Оформление чертежей не соответствует, или не в полной мере соответствует, спец. требованиям ГОСТ-ов, ибо я не являюсь специалистом в областях инженерной графики и начертательной геометрии, просто кое-что помню со времен учебы в институте. Тем не менее, для тех, кто в теме - это будет хороший материал, так как по чертежам уже успешно изготовлялись детали.
        Поскольку эти чертежи никак не относятся к моей работе, но также одновременно имеют отношение к инженерингу (всетаки это инженерная графика), я подумал, что они имеют право на существование в блоге, как оффтоп-публикации, + они доказали свою востребованность.

понедельник, 30 января 2012 г.

Цитата дня!

"Таким образом, некоторые ошибки со значением уровня 16 прерывают выполнение пакета, другие же - нет. И разумного объяснения этому не найти."

Кен Хендерсон
Руководство по Transact-SQL. Раздел: Обработка ошибок.

суббота, 21 января 2012 г.

Объектно-ориентированный анализ и проектирование с примерами приложений Третье издание


Object-oriented analysis and design with application Third edition
Авторы: Буч(Booch), Максимчук(Maksimchuk)



Общее впечатление

Довольно неоднозначная книга. Палитра ощущений при прочтении, у меня лично, менялась от сильной заинтересованности до безразличной сонливости. Видимо, мое такое неоднозначное восприятие обусловлено тем, что книга по своей сути – для обучения проектировщиков и менеджеров, а не девелоперов. Как следствие - некоторые главы были для меня не интересны, а некоторые - наоборот.
Раньше я сталкивался, в основном, с книгами по программированию, поэтому данное издание выглядело довольно контрастно, в сравнении с остальной прочитанной литературой.
Целевая аудитория

Мое мнение - книга для новичков-проектировщиков. Присутствует хорошее поясняющее изложение, детальное описание, UML – схемы. Рассматриваются разнообразные международные стандарты в областях проектирования и разработки и  соприкасаемых с ними областях. Приводятся ссылки и цитаты на труды специалистов в областях проектирования и ООА\ ООP\OOD. Есть словарь терминов.
Особенности

Достоинство и недостаток одновременно - текст очень плотно наполнен специальными терминами и понятиями. Недостаток потому, что, так как это не художественная литература, чтение требует сосредоточенности и концентрации внимания, чтоб ориентироваться в написанном и не выпадать из контекста излагаемого. В общем, читается довольно напряжно.


Основной недочет русской редакции – местами, довольно объемные информационные блоки-врезки, вставлены не продуманно. Они перебивают основные текстовые блоки, в результате – теряется смысл, приходится пролистывать несколько страниц назад/вперд, чтоб вспомнить о чем шла речь в тексте. Особенно четко чувствуется дискомфорт, когда читаешь главы с примерами.
По главам


Первые 4 главы (1-ая часть) - ввод в ООП. Написаны, конечно, очень четко, на 10 баллов. Я бы рекомендовал для тех, кто собирается изучать данную тему.
 5-ая глава посвящена рассмотрению инструмента проектирования UML. В основном, приводятся всевозможные виды UML-диаграмм. Так как я не изучал UML то мне сложно однозначно охарактеризовать степень качества изложенного.
В 6-ой главе рассматриваются основные принципи объектно-ориентированного анализа и проектирования. Также отлично все расписано, как и в первой части книги.
7-ая глава показалась мне немного мутной. Я так понял, что эта глава ориентирована на менеджеров а не разработчиков, видимо поэтому мне было откровенно скучно ее читать. Написано много о разных аспектах связанных с околоразработочной суетой.
Главы 8-12 – примеры. 5 абстрактных примеров для наглядной демонстрации использования связки ООА\ООП\ООП. Весь процесс разработки подается постепенно от проектирования, в первом примере, – до реализации, в последнем.
Библиография очень большая и занимает около 80 страниц, но все специализированные научные труды датируются, в основном, 60-90-ми годами (здесь, конечно, следует учитывать тот факт, что это 3-е переиздание).

среда, 11 января 2012 г.

Расширение Web Essentials for Visual Studio 2010


          Web Essentials for Visual Studio 2010 - довольно удобное в использовании расширение для MS Visual Studio, инструментарий которого позволяет, собственно, расширить некоторые функциональные возможности последней и упростить разработку ПО.
          Автор -  Mads Kristensen. Последняя версия, на момент написания поста – 2.6.

          Инструмент ориентирован, по большей части, на создание приложений для Web. Он будет полезен тем, кто предпочетает не переходить на работу в новых средах разработки, а обойтись малой кровью, расширив возможности родной Visual Studio.

          Лично от себя – пока в Visual Studio 2010 нет поддержки CSS3 и расширение Web Standards Update не вышло в стабильной работоспособной версии, Web Essentials может предоставить разработчику возможность, хоть и скромную, но работы с CSS3.

          Итак, далее – основные полезные, на мой взгляд, возможности:
  • генерация CSS3 свойств для поддержки кросс-браузинга при работе с каскадными таблицами
  • изменение числовых значений в CSS-свойствах и javascript по CTRL+UP/DOWN
  • превью цветов, шрифтов, изображений в CSS-свойствах по наведению курсора (очень хорошая задумка, вроде мелочь – а очень помогает при работе).
 
  • легкая конвертация цветов CSS-свойств из RGB в HEX и наоборот (довольно удобно, если учесть, что мне раньше приходилось для подобных целей стартовать отдельный инстанс Photoshop-а :)).
  • возможность алфавитной сортировки CSS-свойств в блоках (помогает если есть большие блоки с множеством свойств).

          Помимо всего вышеперечисленного, есть еще и другие полезные решения, о которых полностью можно узнать на официальной странице расширения по адресу http://visualstudiogallery.msdn.microsoft.com/6ed4c78f-a23e-49ad-b5fd-369af0c2107f?SRC=VSIDE.   
          Вобщем, Web Essentials предоставляет разработчикам много приятных и полезных мелочей.


вторник, 10 января 2012 г.

Кастомный слайдер на jQuery. Часть 1.

          Однажды, пребывая в поиске дизайнерских решений для рабочего проекта, набрел на слайдер из Joomla-шаблона от GavickPro (на момент написания поста демо-сайт был доступен по адресу http://demo.gavick.com/joomla16/apr2010).

Сам слайдер.

         Это решение привлекло к себе мое внимание своей уникальностью, так как ничего подобного я не нашел в сети. Слайдеров в интернете было великое множество, но все они были примитивными прокрутчиками галерей изображений и в виде готовых решений-сборок, которые подкорректировать под свои нужды было очень сложно без знаний и опыта веб-разработки.
Итак, несмотря на то, что мне буквально с первого взгляда понравился увиденный слайдер, нужно было ответить себе на вопрос – как собственно я собираюсь его реализовать (поскольку я кодер и к дизайну имею весьма посредственное отношение)? Ответ - потихоньку :).

- “Профессор здесь живет?” -“Нет!” - “И тем не менее – позовите.” ©

Хотя соображений по поводу реализации не было, но, тем не менее, слайдер с демо-сайта мозолил глаза. Ну, собственно, знания javascript маленькие, но все-таки были, и я изначально нехотя начал думать о тяжеловесной реализации используя связку javascript/DOM.

jQuery

Буквально за пару дней до того, как я увидел слайдер, мне удалось немного узнать о jQuery, и я решил использовать эту надстройку над DOM. Причин такого решения было несколько. Во-первых, все готовые слайдеры, которые я находил в сети, были реализованы с использованием jQuery. Во-вторых, это удобство использования технологии (гибкость, легковесность кода), ну и в-третьих, почему-то мне сразу была интуитивно очевидна необходимость ее использования.
Потратив день на поиск в сети и изучение материалов по jQuery, которую я вообще не знал в отличии от скрипта, я приступил к реализации.
Конструктивно слайдер состоит из четырех частей, без учета стрелок навигации (необходимость наличия кнопок навигации осталась для меня непонятной, если есть меню? Разве только, как декоративный элемент, чтоб покликать-поиграться). Справа – сам блок слайдера изображений, блок  меню в центре и блок текстового контента слева. Снизу по всей ширине находится, назовем ее так “слайдер-строка” – интересный с точки зрения реализации элемент, который в данном случае я отброшу для упрощения.
На текущий момент меня интересует исключительно дизайн конкретной мастер-страницы а не функционал, поэтому мне нужен некий слайдер-полуфабрикат, максимально упрощенный для данной итерации цикла проектирования, который будет модифицироваться на следующих итерациях.

Разработка

Я буду делать верстку в HTML4 c использованием спецификаций HTML и CSSИтак, мой упрощенный слайдер в первом приближении будет иметь три составных части, которые я обозначу как: контент, меню и изображения. Причем меню будет пока пассивным (также для упрощения).
Мой вариант HTML-разметки выглядит следующим образом:




<div class="SliderBody">         
        <div id="CenterSection">

            <div class="ContentContainer">                 
                <div class="SliderContent" title="Первая панель">                     
                        <h2>Первая панель</h2>                           
                        <p>Абзац. Тект1.</p>                                          
                </div>                 
               
      
            </div>

            <div class="ImageContainer">
                <div class="SliderImage">            
                    <img alt="" src="../../Content/Pic/Slider/simage1.png" />
                </div>
               
            </div>

            <div class="SliderMenu">
                <ul>
                    <li>MenuItem1</li>
                   
                </ul>
            </div>     
        </div>  
    </div>

Здесь нет ничего сложного. Все предельно упрощено и ясно. ContentContainer – блок для контента, ImageContainer – блок изображений, SliderMenu – блок меню.
Следует отметить, что контент-блоки имеют абсолютное позиционирование относительно родительского блока и сдвинуты вниз – за пределы слайдера. Таким образом, в процессе анимации они будут подыматься снизу и прятаться обратно.
CSS приводить не буду, так как кроме нюанса с контентом, вроде, больше ничего особенного нет. Кому надо – подождет вторую часть статьи, где будет полностью готовый слайдер, кому лень ждать – напишет сам (и правильно сделает).
Наша задача – обеспечить циклическую прокрутку контента в вышеперечисленных трех блоках. Как выяснилось немного позже – основной проблемой, лично для меня с минимальными знаниями jQuery, было обеспечение цикличности прокрутки.
Итак, скрипт:

(function ($) {

    $.fn.GetSibling = function () {
        return ($(this).next().length > 0) ? $(this).next() : $(this).siblings(':first');
    };

})(jQuery)

function ImagesAnimation(elem) {
    elem.delay(1800).fadeIn(300, function () {
        elem.delay(1500).fadeOut(300);
        ImagesAnimation(elem.GetSibling());
    });
};

function ContentAnimation(contentItem, menuItem) {
        contentItem.show().animate({ 'top': '-=250px' }, { duration: 200 });
        menuItem.addClass('selected').siblings().removeClass('selected');
        contentItem.delay(2000).animate({ 'top': '+=250px' }, { duration: 200, complete: function () {
            ContentAnimation(contentItem.GetSibling(), menuItem.GetSibling());
        }
        });
};

$(document).ready(
    function () {
       
        $('div .ImageContainer .SliderImage').hide();
        $('div.ContentContainer .SliderContent').css('top', '300px');

        ContentAnimation($('div.ContentContainer .SliderContent:first'), $('div.SliderMenu li:first'));
        ImagesAnimation($('div.ImageContainer .SliderImage:first'));

    });

Разбираем по порядку.

.GetSibling() – кастомный метод-расширения, котрый возвращает, по ситуации, следующего или первого родственника для вызывающего элемента DOM.
Если вас пугает внешний вид единственной инструкции данного метода – у меня для вас печальные новости … :).
На самом деле, я не уверен, в силу своих скромных знаний jQuery, правильно ли называть эту функцию расширяющим методом. Просто очень смахивает на метод-расширения родного С#.

ImagesAnimation(elem) – функция для прокрутки изображений. Обратите внимание на рекурсивный вызов в колбек-функции для .fadeIn().

ContentAnimation(contentItem, menuItem) – функция аналогичная предыдущей для прохода по контенту и по меню. Также вызывает саму себя в колбек-функции для .animate().
Здесь следует уделить внимание синтаксическим особенностям вызова колбек-функции для .animate(). Колбек-функция задается в опциях конфигурации через complete.


И наконец,  .ready()-функция для DOM по готовности вызывает вышеперечисленные функции прокрутки. Прячет все изображения и сдвигает абсолютно-позиционированые блоки контента вниз на 300 точек (Без явного указания сдвига наблюдались глюки в Опере).

Продолжение следует...

Ccылки

Ссылки на ресурсы, которые помогли в изучении jQuery, да и вообще во всем макропроцессе.
http://jsfiddle.net/ - ну и Фидель :), чтоб все протестировать на лету (очень помог мне).