воскресенье, 20 марта 2016 г.

AQA: tools: bash: Переносим функциональность bash в cmd.exe

Переносим функциональность bash в cmd.exe

Мне, как и многим из вас, работать с bash и стандартными утилитами Linux гораздо удобнее и приятнее, чем с cmd.exe. Однако, к сожалению, порой обстоятельства складываются так, что операционную систему выбирать не приходится. Например, в моём случае корпоративным стандартом является Windows 7. К счастью есть способ сделать жизнь линуксоида в командной строке Windows комфортнее, о нём и пойдет речь ниже.


Прежде всего, при переходе из bash в cmd.exe доставляет неудобства ограниченность самой командной оболочки. Чтоб вставить текст из буфера обмена нужно тянуться к мышке, не хватает возможностей автодополнения, история хранится только в пределах одной сессии, к тому же не работает Ctrl+R и другие возможности работы с историей команд в bash.

Исправить ситуацию нам поможет clink. Это Open Source утилита расширяющая возможности cmd.exe. Вот некоторые ее фичи:

  • Автодополнение по нажатию Tab. Возможности автодополнения могут быть расширены за счет пользовательских скриптов на Lua
  • Вставка текста из буфера по нажатию Ctrl-V (к сожалению Shift+Insert не работает)
  • Продвинутая работа с историей команд. Поиск по истории (Ctrl-R and Ctrl-S). Поддержка таких выражений как !!, !<string> и !$
  • Сохранение предыдущих сессий


Авторы говорят, что clink протестирован только на Windows XP SP3, но я пользуюсь им уже год на Windows 7 и всё работает нормально.

Скачали. Установили. Стало лучше, теперь cmd себя ведет почти как bash. Но кое-чего по прежнему не хватает. А именно привычных unix-утилит. Таких как cat, ls, tail, diff, grep, less, sort, wget и т.д. Некоторые утилиты имеют свои Windows-аналоги, например, вместо grep можно использовать findstr, но к ним придется привыкать заново, другие же аналогов вообще не имеют.

Эту проблему нам поможет решить готовый набор программ UnxUtils. Набор включает в себя множество популярных в Unix и Linux инструментов командной строки (полный список можно посмотреть по этой ссылке) а так же несколько дополнительных программ.

В частности, к дополнительным программам относятся pclip.exe и gclip.exe предназначенные для работы с буфером обмена Windows. Например вот так: pclip | sed "s/string1/string2/g" | gclip можно заменить все вхождения string1 на string2 в тексте хранящемся в буфере обмена.

Для того чтоб получить всё это на свою Windows-машину нужно скачать архив UnxUtils.zip, распаковать его содержимое в какой-то каталог и добавить в переменную среды PATH путь к usr\local\wbin\, т.к. именно там хранятся исполняемые файлы.

Для самых ленивых есть способ еще проще: скопируйте содержимое каталога usr\local\wbin\ из архива в каталог %WINDIR%\system32\ на вашей машине.
Внимание! Если вы решили поступить именно так, то я не рекомендую заменять системные файлы на одноименные файлы из архива без четкого понимания того, что вы делаете.

Всё! Осталось только запустить cmd и эффективно работать используя свой linux-опыт. Конечно есть и другие способы добиться того же самого результата, я описал тот, который нахожу максимально простым и удовлетворяющим все мои потребности.
 Альтернативный терминал для Windows
Обновление с Bash интерпретатором 
 см. практические подходы

Bash скрипт перезагрузки оборудования через telnet 
Bash-скрипт для проверки, запущены ли apache, nginx, mysql и ssh на сервере 
SSH — передача файлов и выполнение команд

   Копирование файлов через SSH
   SSH аутентификация по открытому ключу
   Подключения по SSH без ввода пароля
   Запуск команд на удаленном Linux-сервере через SSH
   Отключение проверки ключа хоста в SSH

пятница, 18 марта 2016 г.

Bash Scripting

 Оригинал статьи

Последнее время, я очень увлекся автоматизацией процессов при помощи скриптов написанных на bash, perl и немного php для работы с MySQL и естественно, стал глубже изучать все эти языки. Так я работа не только с Linux серверами но и с Windows,  и в системе присутствует Active Directory, то в основном скрипты были написаны с использование LDAP протокола, как пример, сегодня потратил почти весь день что бы автоматизировать добавление и удаление пользователей в Mailman рассылки. В ближайшее время я постараюсь выложить все то что сделал, с подробным описанием, а сейчас хочу представить вам три книги которые стали для меня буквально настольными, это Bash Guide for Beginners, Linux Shell Scripting with Bash и Advanced Bash-Scripting Guide . Первые две достаточно подробно описывают команды и возможности bash, третья, в примерах показывает что можно сделать. Все три книги вы можете скачать
Bash Guide for Beginners
Advanced Bash-Scripting Guide
Linux Shell Scripting with Bash

воскресенье, 28 февраля 2016 г.

iMacros: команды, скрипты, примеры

iMacros: команды, скрипты, примеры

оригинал тут
Здравствуйте, уважаемые читатели блога LifeExample, хочу познакомить вас с одним удивительным инструментом веб мастера, хакера, и простого пользователя, встречайте: плагин iMacros для браузера Mozila Firefox.

iMacros позволяет записать любую последовательность действий человека на сайте в макрос.
Макроспрограммный код хранящий порядок необходимых к автоматическому выполнению.
Запустив макрос, действия выполняться автоматически, включая все переходы по вкладкам, заполнение полей, нажатием на кнопок, переходами по ссылкам и др.
Так сложилось, что последнее время часть моего времени уходит на написание ботов и поиск уязвимостей на чужих сервисах, через которые этих ботов можно протолкнуть.
Я не пишу вредоносные программы, а лишь упрощаю жизнь себе и людям, с которыми работаю, в задачи моих роботов входит автоматическое размещение объявлений на всевозможных информативных досках рунета.

Начав заниматься написанием скриптов для автоматического размещения информации на чужом сайте, я выбрал путь с использованием возможностей библиотеки CURL на php, но вскоре столкнулся с рядом проблем, обход которых не представлялся возможным, пользуясь лишь серверным языком. Малейшее использование JavaScripta в системе авторизации сайта ставило бота в тупик.
Гуляя по просторам интернета, с целью найти решение для обхода защиты использующей Javascript, я нашел инструмент, с помощью которого можно сделать бота эмулирующего любое действие человека, и этим инструментом явился плагин iMacros для браузера Mozila Firefox.

iMacros, как сделать первый макрос

Самым первым действием нужно установить плагин, для этого скачиваем последнюю версию iMacros, устанавливаем, и наблюдаем появившуюся панель в левой части окна.
плагин iMacros

В появившемся разделе находятся кнопочки и вкладочки данного инструмента, я думаю, вы без труда догадаетесь, как им пользоваться самостоятельно, но всеже немного расскажу об этом.
Для записи наших действий перейдем во вкладку запись и нажмем на одноименную кнопку. После чего откроем сайт yandex.ru и введем любой поисковый запрос, например: "Бесплатная CMS для интернет магазина Moguta", нажмем кнопку найти. Завершим запись действий, нажав на кнопку стоп в панеле iMacros.

Полученные в ходе наших действия команды iMacros сохраняет в файл #Current.iim. Чтобы воспроизвести их дважды кликнем на макрос #Current.iim, после чего iMacros должен произвести ряд записанных команд:
1
2
3
4
5
VERSION BUILD=7601105 RECORDER=FX
TAB T=1
URL GOTO=http://www.yandex.ru/
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://yandex.ru/yandsearch ATTR=ID:text CONTENT= "Бесплатная CMS для интернет магазина Moguta"
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ID:form ATTR=VALUE:Найти
пример макроса iMacros

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

Команды iMacros на русском языке

Целью данной статьи стоит описать команды iMacros на русском языке, т.к. в интернете информации очень мало. Из действительно полезных источников, рассказывающих об iMacros на русском, я встретил только форум Mozila.
Прочитав данный форум, я собрал список часто задаваемых вопросов и часто используемых команд iMacros.
Я думаю каждый, кто имеет цель написать хоть чуточку полезный макрос, первым делом задаст себе следующие вопросы:

Как запустить iMacros автоматически на Windows

Ответ: Создать файл с расширением *.bat открыть в блокноте и сохранить в него строку:
1
start firefox "C:\Program Files\Mozilla Firefox\firefox.exe" http://run.imacros.net/?m=#Current.iim.
После чего макрос будет выполняться при запуске созданного файла. Для полной автоматизац

четверг, 11 февраля 2016 г.

Сравнение папок в Total Commander

Два каталога вместе со всеми под папками, можно сравнить по содержимому в Total  Синхронизировать каталоги 

Comander-ре. Для этого встаём с одной стороны на первой папке, а с другой — на второй. Вызываем команду Commands (Команды) / Synchronize Dirs (Синхронизировать каталоги). Ставим галки subdirs (с подкаталогами), by content (по содержимому), ignore date (игнорировать даты), не ставим галку asymmetric (асимметрично), Нажимаем кнопки разноцветные и отжимаем серую где «знак =». Далее, нажимаем справа «Compare»  (сравнить).
Результат: если папки одинаковые по содержимому файлов, то выдаст пустой список! Если нет, укажет расхождения.

Сравнение файлов в Total Commander

Выделяем оба файла, переходим Файл — Сравнение по содержимому.
Сравнение по содержимомуДалее видим, что строки, в которых найдены отличия подсвечиваются серым цветом, а различия в них красным. Внизу общее количество найденных различий. Переход по найденным различиям осуществлять посредством кнопок Следующее отличие и Предыдущее отличие. Можно использовать поиск по тексту.
Здесь же можно сразу и перенести выбранные отличия в другой файл. Для этого необходимо активировать режим редактирования (кнопка Редактировать).

четверг, 28 января 2016 г.

Selenium WebDriver: quit или close?

В этой статье речь пойдет о том как правильно останавливать работу драйвера или, другими словами, как закрыть браузер.
Запускается Selenium driver автоматически во время инициализации, для запуска у него нет отдельного метода.
FirefoxDriver driver = new FirefoxDriver();
 
Если по какой-либо причине запуск браузера не произойдет, то возникнет исключение и вебдрайвер не создастся.
А вот остановка его работы в определенное время ложится на разработчика тестов. WebDriver содержит два метода – quit() и close(), которые можно использовать для остановки работы браузера.
  • void close() — закрывает только одно текущее окно, и в случае, если это было последнее открытое окно — закрывает браузер.
  • void quit() — закрывает все открытые окна, завершает работу браузера и сервисов, и освобождает все ресурсы.
Поэтому для корректного завершения работы драйвера после выполнения теста используйте метод quit().

driver.quit();

Если же вам нужно закрыть отдельное открытое окно, используйте метод close(). Обратите внимание, что метод close() после закрытия одного из окон не передает управление в предыдущее открытое окно, Вы должны сделать это самостоятельно:

// переключаемся в новое окно
driver.switchTo().window(newWindowHandler);
// закрываем его
driver.close();
// возвращаемся в предыдущее окно
driver.switchTo().window(oldWindowHandler);
 
Если вы хотите просто уйти с текущей страницы, но не закрывать ее или браузер, можете просто использовать:
driver.get("");

Нагрузочное тестирование, используя облачный сервис

Нагрузочное тестирование, используя облачный сервис

Всем доброго дня!
Недавно для одного из заказчиков проводил нагрузочное тестирование веб портала. Результат оказался достаточно неожиданным, веб сайт лег раньше, чем предполагалось:) Посему в данной статье хочу поделится опытом проведения нагрузочных тестов, используя инструмент Visual Studio и облачный сервис Visual Studio Team Services (бывший Visual Studio Online).

Зачем проводить нагрузочные тесты

Но прежде, чем мы начнем погружаться в технические детали, немного теории. Зачем вообще проводить нагрузочные тесты? Вопрос достаточно важный, и в зависимости от того, как вы на него отвечаете, выбирается та или иная стратегия тестирования нагрузки.
Во многих случаях нагрузочные тесты проводят для того, чтоб определить максимальное количество пользователей, которые могут обслуживаться на выбранном сервере. Соответственно, нагрузочные тесты проводят перед запуском продукта на продуктиве. Казалось бы, вроде ничего криминального... Но подобный подход не дает вам ответа на вопрос: а можно ли на данном сервере обслужить большее количество пользователей? Возможно, нужно немного оптимизировать код, и сервер сможет корректно обслуживать большее количество запросов?
Конечно, можно перед запуском проекта покопаться в коде, найти слабые места, попробовать поправить, но все же не самый эффективный способ оптимизации, так как отсутствуют адекватные метрики. Откуда вы знаете, что улучшения, которые вы сделали, достаточны, чтобы сказать: лучше это приложение работать не будет. Что такое «лучше»? Где эталон? Насколько далеко мы от него ушли?
Задавая эти вопросы, мы плавно переходим во второй подход проведения нагрузочных тестов. Нагрузочные тесты нужно проводить регулярно во время работы над проектом (например, в конце спринта). Причем начинать нужно с момента, когда у вас готов каркас. Результат проведения нагрузочного теста на эталонном сервере, куда вы публикуете каркас вашего приложения, — это и есть эталон. Дальнейшие измерения вам покажут изменения относительно эталона. И если изменения драматические, это повод провести дополнительные работы для оптимизации кода. Проще искать проблемы с производительностью на ранних этапах, нежели пытаться перелопатить весь проект в конце.

Оборудование для генерации нагрузки

Есть еще одна проблема проведения нагрузочных тестов. Это оборудование (сервера), которое будут генерить нагрузку. Проблема в том, что для проведения адекватных нагрузочных тестов рядом с эталонным сервером, приближенным по параметрам к боевому, нужно поставить такой же или лучше для генерации нагрузки. Более того, вы рискуете получить неадекватные результаты в том случае, если ваш боевой сервер торчит наружу по порту 80, а тестируете вы его используя локальную сеть организации, где стоит ваш генерирующий нагрузку сервер.
Попробуйте обосновать для службы закупок покупку сервера, который вы собираетесь использовать раз в 2 недели один-два часа. Очень часто в этом случае задействуют сервера, которые не используются (устаревшие), либо на время тушат какие-то приложения внутри организации, дабы задействовать высвободившиеся ресурсы под нагрузочные тесты (такой сценарий большая редкость, но на своем опыте видал и такое). В обеих вариантах есть свои недостатки. Наприем, не использующееся сервера могут либо списать, либо отключить для экономии электропитания, либо снять с поддержки и т.д. А процесс согласования прерывания работы какого-то приложения внутри организации — это ад для всех.
В общем, вы, наверное, поняли, на что я намекаю: надо использовать облачные ресурсы с оплатой по часам. На серверы нужно залить и настроить необходимый софт для генерации нагрузки (иногда это не тривиальная задача).

Тестирование с помощью Visual Studio Team Services

Я предлагаю для генерации нагрузки использовать Visual Studio Team Services (бывший Visual Studio Online). Итак, что нам надо:
— Аккаунт в Visual Studio Team Services. >Бесплатно его можно взять тут.
— Visual Studio Enterprise. Триальная версия тут.
Итак, приступим:
После того, как вы создали бесплатный аккаунт в Visual Studio Team Services, вам необходимо создать новый проект, указав название и систему контроля версий, которую вы будете использовать (для этой демонстрации не принципиально, какую выбирать):

SEO: Эксперимент: как Яндекс и Google учитывают ключевые слова в URL

Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Эксперимент: как Яндекс и Google учитывают ключевые слова в URL Дата пу...