неділя, 25 березня 2012 р.

Пан или пропал. Идеология лидера - идеология победы

Добрый день, мои читатель!
   
    В пятницу 23 марта мне удалось попасть на тренинг известного оратора и предпринимателя Растислава Гандапаса на тему "Пан или пропал. Идеология лидера - идеология победы"

 Тема не заурядная и заставляет задуматся над тем, кем являюсь Я?

Хочу поделится мыслями на тему:
                  Я являюсь лидером, потому что...

     ...Так называют человека, который есть самим собой и включает в себя качества:
  • благоразумен
  • мужественен
  • эмоционален
  • справедлив
     У меня развиты все четыре качеств, хотя над некоторыми нужно еще очень много работать. Например, мне необходимо работать над эмоциональность, потому что это качество должно быть внутреним, а не внешним. Для мужества необходимо преодолевать страх, что не дает двигатся вперед. Движение одно из сильных проявлений лидера. Если лидеру предстоит выбор в ситуации неопределенности, он выбирает - действие. И то что делает лидер - это хорошо!

...Основой любого поведения есть мотивация. А достаточно ли мотивации для действия? - Нет. Еще необходима идеология, которая будет об"яснять это действие. Но это еще не все. Чем больше у нас идеология, тем больше мотивация, чем больше мотивация, тем больше действия, чем больше действия тем больше идеологии. Это замкнутый круг - круг который обьясняет лидерское поведение.

...Существует три категории мотивов для лидера:
  • прагматическая (деньги, время ради денег, карьера, власть)
  • невротическая (реализация чего-то, чего не хватает в личной жизни)
  • идеологическая (получения удовольствия от процесса)
Я склонен ко всем трем категориям, но больше к невротической и идеологической. Невротичность обьясняется постоянным контролем за своими действиями, "наказаниями" за проступки, не здоровым желанием работать через силу. Идеологичность, потому что получаю удовольствие от процесса достижения цели.

 ...каждый человек имеет свою картину мира. Она не идеальна, но у лидера она наиболее отвечает реальности. На картину мира влияют три вещи: окружение, опыт, убежденность. Лидер находится в постоянном расширении своей картины мира. А это достигается расширением своего окружения и опыта. А с убеждениями приходится боротся и побеждать. Борьба с последними - тупая, постоянная работа над своим умом.

... мои мотиваторы - это новые идеи, от которых получаю удовольствие=)

 ... препятствия с которыми нужно боротся (и побеждать) это:
  1. Расплывчаствость поставленых целей
  2. Нетерпение/ожидание быстрых результатов
  3. Боязнь новых ситуаций
  4. Боязнь проблем
  5. Поведение и ожидания окружающих
  6. Неверие в собственные силы
  7. Недостаточное умение и навыки
...лидер - это эндорфиновый и адреналиновый наркоман.
...моя жизнь - это революция хаоса и деньги в ней только средства.
...Я действую

вівторок, 20 березня 2012 р.

Workshop: Нагрузочное тестирование с помощью JMeter

Детали: 
Город: Киев
Адрес: уточняется
Дата и время: 09.04.2012, 18:00
Количество мест: 15
Стоимость:
200 грн при оплате до 28.03.2012,
300 грн при оплате до 09.04.2012,
400 грн при оплате в день тренинга: 09.04.2012

Зарегистрироватся на воркшоп
      В современном мире интенсивного развития многопользовательских интерфейсов и систем важно обеспечивать высокую скорость и работоспособность приложений. На этом нелегком пути возникает необходимость нагрузочного тестирования.
     Так как большинство систем работает на уровне протокола HTTP, то классическим и правильным инструментом для нагрузочного тестирования будет JMeter - простой, бесплатный, с удобным интерфейсом и гибкими возможностями.
     Как записать, сконфигурировать и запустить тест на JMeter? На протяжении 4 часов мы будем интенсивно работать за ноутбуками в группах. Начнем с 5% теории и ознакомимся с инструментом JMeter, а после попрактикуемся в создании сценариев, конфигурировании самой простой постоянной нагрузки и анализу полученных результатов.

Программа воркшопа:
  • Краткий обзор о нагрузочном тестировании, его целях и задачах. 
  • Познакомимся с инструментом JMeter и его возможностями 
  • Напишем несколько сценариев, запустим их и посмотрим результаты 
  • Немного усложним сценарии и проанализируем результаты с помощью Excel 

Наличие ноутбука обязательно! 

Цель воркшопа - чтобы каждый из участников смог написать простой тест для веб-приложения по HTTP у себя на проекте, а также смог анализировать полученные результаты.

неділя, 18 березня 2012 р.

Формируем отчет о полной загрузке страницы

Задача:
Написать сценарий который будет загружать страницу со всем внутреним фаршем. В отчете отобразить суммарное время загрузки страницы со статикой.
Цель: 
Проверить скорость загрузки страниц на клиентской стороне при большой нагрузке

Теоретическая часть:
Загрузка страницы в бразер стостоит из нескольких запросов:
  • сама страница (HTML), 
  • картинки (PNG, JPEG, JPG, GIF, BMP), 
  • файлы разметки (CSS), 
  • файлы клиентского JavaScript (JS), 
  • другие об'экты (flash, video, audio, etc) 
Сценарий: 
Записывается запрос для самой страницы. В нем с помощью Post-Processor выкусывается вся статика. Дальше в цикле выполняем запросы по всем статическим ресурсам.
Все результаты сохраняются как XML файл.

Проблемы: 
1) Как идентифицыровать, что статика принадлежит именно нашему запросу
2) Как сгруппировать запросы в отчете.

Решение: 
1) Используем Parametrised Controller + Module Controller для отправки запроса. Параметры: название страницы, протокол, URL страницы, GET, POST. Название страницы добавляем к названию запроса в статике
2) Пишем следующее XSL преобразование:
<xsl:template name="create-pagelist">
            <xsl:for-each
                select="/testResults/*[not(@lb = preceding::*/@lb) and not(contains(@lb , '.jpg') or contains(@lb, '.png') or contains(@lb, '.gif') or contains(@lb, '.css') or contains(@lb, '.js'))]">
                <xsl:variable name="uniqueLabel" select="@lb"/>

                <uniquelist><xsl:attribute name="lb"><xsl:value-of select="@lb" /></xsl:attribute>

                <xsl:for-each select="/testResults/*">
                    <xsl:if test="starts-with(@lb, $uniqueLabel)">
                        <value>
                            <xsl:attribute name="lb"><xsl:value-of select="@lb" /></xsl:attribute>
                            <xsl:attribute name="t"><xsl:value-of select="@t"/></xsl:attribute>
                            <xsl:attribute name="ts"><xsl:value-of select="@ts"/></xsl:attribute>
                            <xsl:attribute name="s"><xsl:value-of select="@s"/></xsl:attribute>
                            <xsl:attribute name="tn"><xsl:value-of select="@tn"/></xsl:attribute>
                            <xsl:attribute name="by"><xsl:value-of select="@by"/></xsl:attribute>
                            <xsl:attribute name="rc"><xsl:value-of select="@rc"/></xsl:attribute>
                            <xsl:attribute name="rs"><xsl:value-of select="@rs"/></xsl:attribute>
                            <xsl:attribute name="rm"><xsl:value-of select="@rm"/></xsl:attribute>
                            <assertionResult><failureMessage><xsl:value-of select="assertionResult/failureMessage" /></failureMessage></assertionResult>
                            <binary><xsl:value-of select="binary" /></binary>
                        </value>
                    </xsl:if>
                </xsl:for-each>
                </uniquelist>
            </xsl:for-each>
    </xsl:template>

Данное преобразование формирует XML ввиде
 <uniquelist lb="/promo/professions">
        <value by="15141" label="/promo/professions" rc="200" rm="OK" rs="" s="true" t="2535" tn="Scenario 1 1-5" ts="1330891472753">
            <assertionresult>
                <failuremessage>
            </failuremessage></assertionresult>
            <binary>
        </binary></value>
        <value by="55290" label="/promo/professions - /resources/styles/client.new/style2.css?v=634653478841984398" rc="200" rm="OK" rs="" s="true" t="462" tn="Scenario 1 1-15" ts="1330891485595">
            <assertionresult>
                <failuremessage>
            </failuremessage></assertionresult>
            <binary>
        </binary></value>
        <value by="923" label="/promo/professions - /resources/images/client.new/soc-vk-s.png" rc="200" rm="OK" rs="" s="true" t="269" tn="Scenario 1 1-2" ts="1330891485861">
            <assertionresult>
                <failuremessage>
            </failuremessage></assertionresult>
            <binary>
        </binary></value>
    </uniquelist>



Но для формирования отчета нам понадобится еще одно XSLT преобразование:


<xsl:template name="pagelist">

        <h2>Pages</h2>
        <table class="details" border="0" cellpadding="5" cellspacing="2"
            width="95%">
            <tr valign="top">
                <th>URL</th>
                <th>Requests count</th>
                <th>Failures</th>
                <th>Success Rate</th>
                <th>Average Time</th>
                <th>Min Time</th>
                <th>Max Time</th>
            </tr>

            <xsl:for-each select="uniquelist">
                <xsl:variable name="label" select="@lb" />
                <xsl:variable name="count" select="count(value)" />
                <xsl:variable name="failureCount"
                    select="count(value[attribute::s='false'])" />
                <xsl:variable name="successCount"
                    select="count(value[attribute::s='true'])" />
                <xsl:variable name="successPercent" select="$successCount div $count" />
                <xsl:variable name="totalTime" select="sum(value/@t)" />
                <xsl:variable name="averageTime" select="$totalTime div $count" />
                <xsl:variable name="minTime">
                    <xsl:call-template name="min">
                        <xsl:with-param name="nodes" select="value/@t" />
                    </xsl:call-template>
                </xsl:variable>
                <xsl:variable name="maxTime">
                    <xsl:call-template name="max">
                        <xsl:with-param name="nodes" select="value/@t" />
                    </xsl:call-template>
                </xsl:variable>
                <tr valign="top">
                    <xsl:attribute name="class">
                    <xsl:choose>
                        <xsl:when test="$failureCount &gt; 0">Failure</xsl:when>
                    </xsl:choose>
                </xsl:attribute>
                    <td>
                        <xsl:if test="$failureCount > 0">
                            <a>
                                <xsl:attribute name="href">#<xsl:value-of
                                    select="$label" /></xsl:attribute>
                                <xsl:value-of select="$label" />
                            </a>
                        </xsl:if>
                        <xsl:if test="0 >= $failureCount">
                            <xsl:value-of select="$label" />
                        </xsl:if>
                    </td>
                    <td>
                        <xsl:value-of select="$count" />
                    </td>
                    <td>
                        <xsl:value-of select="$failureCount" />
                    </td>
                    <td>
                        <xsl:call-template name="display-percent">
                            <xsl:with-param name="value" select="$successPercent" />
                        </xsl:call-template>
                    </td>
                    <td>
                        <xsl:call-template name="display-time">
                            <xsl:with-param name="value" select="$averageTime" />
                        </xsl:call-template>
                    </td>
                    <td>
                        <xsl:call-template name="display-time">
                            <xsl:with-param name="value" select="$minTime" />
                        </xsl:call-template>
                    </td>
                    <td>
                        <xsl:call-template name="display-time">
                            <xsl:with-param name="value" select="$maxTime" />
                        </xsl:call-template>
                    </td>
                  </tr>
            </xsl:for-each>
        </table>
    </xsl:template>





Итого результат будет в следующем ввиде:
(Я упустил секции для формирования Summary, но я думаю читател сможет догадатся как их реализовать по аналогии)