суббота, 25 августа 2012 г.

vimcast #4: Поиска и замена текста


Небольшая справка по регулярным выражения в vim

Изученные команды:

  • r - заменить один символ без перехода в режим вставки
  • [число]c{движение} - удалить все до места перемещения(аналогично команде d) и перейти в режим вставки
  • /{паттерн} - поиск
  • ?{паттерн} - поиск в обратном направлении
  • * - поиск слова под курсором (# - в обратном направлении)
  • :s/{что искать}/{на что менять}/[flags] - поиск и замена
  • :noh - снять подсветку с результатов поиска

воскресенье, 5 августа 2012 г.

Vimcast #3: Работа с текстом в стиле vim

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

Команды перемещения:

  • h,j,k,l - на один символ влево, вниз, вверх и вправо
  • w - на одно слово вперед
  • b - на одно слово назад
  • ^ - в начало предложения
  • $ - в конец предложения

Команда удаления:

  • [число]d{движение} - удалить все до места перемещения
  • dw - удалить до следующего слова
  • d^ - удалить все до начала строки
  • d$ - удалить все до конца строки
  • dd - удалить строку
  • 5dd - удалить пять строк
  • dl или x - удалить символ под курсором

Другие изученные команды:

  • [число]y{движение} - команда копирования
  • p - команда вставки
  • u - откатить изменения
  • Ctrl+R - отменить откат
  • . - повторить предыдущую команду на изменение

воскресенье, 22 июля 2012 г.

Vimcast #2: Основы настройки редактора


Команды:

  • help {word} - получить справку по некоторому ключевому слову
  • set - команда для управления настройками

Настройки:

  • cp - режим совместимости с vi
  • number - отображение номеров строк
  • ruler - отображение положения в файле
  • laststatus=2 - всегда показывать строку состояния

понедельник, 16 июля 2012 г.

Тестирование событий мыши с помощью QTestLib

Несколько месяцев назад я писал про тестирование виджетов на форме и появляющихся диалогов. Теперь же я столкнулся с трудностями тестирования мышевозства.

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

Начнем с простого примера тестирования событий мыши - mouseClick.

воскресенье, 15 июля 2012 г.

Vimcast #1: Сохранение и выход

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


Основные моменты:

Vim работает в нескольких режимах.

Таблица переходов между режимами:
НормальныйРежим вставкиКомандный
Нормальный-i:
ВставкиEsc-Сначала перейти в нормальный
КомандныйEscСначала перейти в нормальный-

Изученные команды

  • w - записать файл(write)
  • q - выйти из редактора(quit)
  • q! - выйти без сохранения
  • wq - записать файл и выйти
  • x - записать файл, если были изменения, и выйти

четверг, 24 мая 2012 г.

Использование mercurial при разработке на RoR

При разработке на Ruby принято использовать git. И мне, как поклоннику mercurial пришлось слегка модифицировать под себя путь от создания приложения на Ruby on Rails до его развертывания.

Шаг 1. Создание нового проекта

Для начала создал свой .hgignore файл на основе дефолтного .gitignore для RoR проекта. Затем написал простенький скрипт для создания нового проекта:
rails new $@ --skip-git --skip-test-unit || exit 1
cp .hgignore $1 || exit 1
rvm gemset create $1 || exit 
echo "rvm gemset use $1" > $1/.rvmrc || exit 1

Шаг 2. Разработка нового приложения

Здесь никаких сложностей не возникает - просто использую mercurial в свое удовольствие.

Шаг 3. Развертывание на heroku

Деплоить RoR проект на heroku очень просто, если вы используете git. Для mercurial есть неофициальное расширение hg-git. Правда версия 0.3.2 не работает, т.к. в конец добавляется слэш, чего heroku никак не ожидает и push аварийно завершается. Пришлось взять последнюю версию из репозитория.

Еще одна тонкость: необходимо выполнять команды heroku с ключом --app, чтобы указать, для какого приложения вы хотите посмотреть логи etc.

В итоге deployment я выполняю следующим скриптом:
hg push git+ssh://git@heroku.com:$1.git
heroku run rake db:migrate --app $1

понедельник, 26 марта 2012 г.

"Реальное" использование QTestLib

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

Единственный инструмент, который я нашел - QTestLib. К сожалению, его описание весьма скромное:
  1. Официальные мануал и туториал
  2. Небольшой туториал от команды KDE
  3. Автотесты в дереве исходников Qt
К сожалению, официальная документация описывает сферический QString в вакууме, в который поместили "Hello world!". Разумеется в этом случае мне совсем не хотелось бросаться в омут с головой и резать по живому. Поэтому для экспериментов придумал простенькое приложение "Подсчет площади квадрата", о котором и пойдет речь дальше.