Архив категории «Разработка»

Улучшенный поиск автомобиля на auto.ru

Предлагаю вашему вниманию Greasemonkey скрипт, который обрабатывает результаты поиска автомобилей на cars.auto.ru:

  • Все страницы таблицы результатов объединяются в одну.
  • В таблицу результатов добавляются опции и другая информация из объявлений, которая отсутствует в стандартном варианте.
  • В таблицу добавляются кнопки, позволяющие удалить запись об автомобиле или информацию об опции.

Все это позволяет анализировать результаты поиска не открывая дополнительных страниц.

Вот пример стандартного вывода результатов и вид таблицы результатов, обработанной скриптом (подсказка всплывает при наведении курсора на ссылку на объявление):

autoruautoru-gm

26.07.2009  Метки: , , ,   Рубрики: Mozilla, Интернет, Программы, Разработка  Один комментарий

Конфликт расширений для Firefox

На бегу, потому в двух словах:

Кажется, нашлась причина конфликта расширений для Firefox. Симптомы: при установленном «неправильном» расширении пропадают кнопки на панели инструментов расширения Web Developer, а у Firebug на вкладке HTML исчезает текст. Популярное решение View -> Toolbars -> Customize -> Restore Default Set не спасает.

Удаляя по одному файлы «неправильного» расширения дошел до prototype.js, который, как известно, меняет базовые классы типа Object. В этом, видимо, и причина...

Вопрос: можно ли как-нибудь все-таки использовать prototype.js в расширениях для Firefox? И как его правильно подключать? Сейчас в browserOverlay.xul тупо стоит

	<script src="prototype.js"/>

03.07.2009  Метки: , , ,   Рубрики: Mozilla, Разработка  Один комментарий

XUL Gear (ex. XULPIX): визуальный редактор для XUL

Очень я не люблю заниматься разработкой графических интерфейсов (GUI) — дело муторное, трудоемкое, результаты часто не заметны. Но иногда приходится. Платформа Mozilla, где для декларативного определения пользовательского интерфейса используется язык XUL, основанный на XML, а для определения поведения — JavaScript, почти примирила меня с этим занятием. Для полного счастья требовалось найти визуальный редактор, который позволяет обойтись без написания XUL кода вручную и сразу же показывает результат. И тут есть две новости, как всегда — одна хорошая, и одна плохая, но не очень. Хорошая новость в том, что такой редактор нашелся — это XUL Gear. Плохая — автор Kenchabi его не поддерживает, не очень — потому что первоначальная версия редактора была переименована из XULPIX в XUL Gear и выложена под открытой лицензией на Google Code.

19.06.2009  Метки: , ,   Рубрики: Mozilla, Инструменты, Разработка  3 комментария

blink и underline в XUL

Понадобилось в XUL сделать мигающим текст метки. Попробовал text-decoration:blink — не работает. Погуглил — чудеса, оказывается, текст мигает только если он внутри тега label, а не в атрибуте value. Самое смешное, что подчеркивается он строго в обратной ситуации, то есть сделать одновременно мигающий и подчеркнутый текст, похоже, невозможно :)

Firefox покажет результат здесь:

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

Исходный текст:

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="mycss.css" type="text/css"?>
<window title="test01.xul" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 <groupbox>
  <caption label="Underline problem"/>
  <label style="color: red;text-decoration: underline">Text as element content: underline doesn't work.</label>
  <label style="color: red;text-decoration: underline" value="Text as an element attibute: underline works!"/>
 </groupbox>
 
 <groupbox>
  <caption label="Blink problem"/>
   <label style="color: red;text-decoration: blink">Text as element content: blink works!</label>
   <label style="color: red;text-decoration: blink" value="Text as an element attribute: blink doesn't work."/>
  </groupbox>
</window>

Пример подсмотрен на форуме xulfr.org.

17.06.2009  Метки: , ,   Рубрики: Mozilla, Инструменты, Разработка  Комментариев нет

Ruby: рассуждения о наследовании

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

class A
end
 
class B < A
end
 
class B
   def m
   end
end

Так работает. Но если поменять местами два последних определения, то возникает сообщение об ошибке: superclass mismatch for class B (TypeError), поскольку указать базовый класс можно только при первоначальном определении класса.

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

Программисты, «думающие» на C++/Java часто используют наследование не по назначению. Обсуждая с коллегой вопрос «зачем нужно наследование?» я наткнулся на быстрый ответ: для переиспользования кода. В этом и есть корень зла — при отсутствии нормальных механизмов повторного использования кода в этом качестве начинают использовать наследование. Но в Ruby-то такие механизмы есть. Так зачем наследование?

Похоже, что в Ruby и подобных языках наследование вернулось к своему первоначальному назначению — выразить намерение программиста, что один тип является подтипом другого. Кстати, если вспомнить принцип подстановки Лисков (Liskov substitution principle), то становится понятно, что подтип (subtype) тесно связан с подстановкой (substitution).

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

07.04.2008  Метки:   Рубрики: Разработка, Языки  4 комментария

Ruby: всякая всячина

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

25.03.2008  Метки:   Рубрики: Разработка, Языки  Комментариев нет

Первый взгляд на Ruby

Новогодние каникулы оказались подходящим случаем для общего знакомства с Ruby. Особой склонности к языкам с динамической типизацией я не испытываю — применимость их в больших проектах весьма сомнительна. В Ruby же привлекли возможности метапрограммирования и их использование для реализации DSL (Domain Specific Languages). Кроме того, хотелось понять, что позволяет преодолеть недостатки динамической типизации при использовании Ruby в достаточно больших проектах.

13.01.2008  Метки:   Рубрики: Разработка, Языки  Комментариев нет

Ant+Ivy: закроем тему управления зависимостями при сборке проектов

За полгода в фоновом режиме перевел сборку подконтрольных проектов на Ant+Ivy. До этого использовался Maven 1, который функционально устраивал, но требовал создания правильного окружения — Maven правильной версии, правильный набор плагинов правильных версий, иногда правильно пропатченных. В результате доходило до абсурда — один из проектов собирался только на одной машине, попытки воссоздать окружение на другой ни к чему не привели.

Все это подтолкнуло к упрощению процесса сборки — переходу обратно на Apache Ant. При этом требования к окружению свелись к минимуму — должен быть установлен Sun JDK, Ant правильной версии (1.7) и «большие» библиотеки (типа Eclipse).

Конечно, Ant требует описания процесса сборки для каждого проекта, а в Maven для проектов стандартной структуры стандартная сборка уже описана. Ну что ж, пришлось оформить описание сборки виде библиотеки. Теперь на новый простой проект трачу не больше времени, чем при использовании Maven. Библиотека опубликована под именем Buildbase, уже достаточно функциональна и стабильна, но как самостоятельный проект не рекламируется.

Второе преимущество Maven — управление зависимостями: описание зависимостей, скачивание недостающих артефактов из репозитория и т.п. Сначала я нашел простенькую библиотеку и временно перевел все на нее. Затем разобрался с Ivy и понял, что реализация управления зависимостями в этом инструменте сделана гораздо грамотнее, чем в Maven. Написать про Ivy обещал уже давно, мешала одна непонятность — не мог понять, как использовать локальный кэш зависимостей. Месяц назад разобрался и с этим, читайте Getting Started with Ant+Ivy.

01.01.2008  Метки: ,   Рубрики: Инструменты, Разработка  Комментариев нет

Оценка качества тестирования ПО. Часть 2: Классификация критериев тестового покрытия

Предыдущая часть закончилась выводом о необходимости использования метрик для оценки качества тестирования и обещанием классифицировать используемые метрики (они же — критерии тестового покрытия). Обещания надо выполнять.

10.11.2007  Метки:   Рубрики: Разработка, Тестирование  Комментариев нет

Оценка качества тестирования ПО. Часть 1: Введение

В следующую среду мне предстоит доклад на семинаре отдела. Есть интересная мне тема, но нет времени готовиться. Помимо семьи-ремонта-баш.орга еще и в блог хочется писать. Так будем же совмещать приятное с полезным, благо тематика позволяет. Попробую из промежуточных результатов подготовки сделать несколько заметок на тему оценки качества тестирования ПО. Если не справлюсь — хоть будет стыдно перед вами, уважаемые читатели. Если справлюсь — тоже будет, потому что занудность темы для стороннего наблюдателя — выше среднего. И все-таки очень надеюсь на ваши комментарии.
Как сказал на одном из концертов Олег Медведев, «ну что ж, приступим, помолясь».

06.11.2007  Метки:   Рубрики: Разработка, Тестирование  Один комментарий


Страница 2 из 4«1234»