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

Ошибка при загрузке JSON данных в Firefox

Пишу веб-сервис на С с использованием GNU libmicrohttpd. Firefox выдает сообщение об ошибке при попытке передать ему JSON: «not well-formed». При этом всё работает.

Выяснислось, что это он так обижается на то, что в ответе на запрос не указан

Content-type: application/json»

26.05.2010  Метки: ,   Рубрики: Mozilla, Разработка  Комментариев нет

Трудности перевода

Несколько раз пришлось столкнуться с проблемами при чтении/записи кириллицы на Java. К примеру, есть файл в кодировке UTF-8, который читается с помощью java.io.FileInputStream. В результате русские буквы портятся. Бывает, что портятся не все, а только «И» и «ш». Проблема проявляется только на Windows, классический случай — разработчик сидит на Linux: «а у меня всё работает!».

Пришло время привести в порядок базовые знания.»

04.02.2010  Метки:   Рубрики: Разработка, Языки  Один комментарий

Если не запускается Eclipse

Пару месяцев назад разбирался, почему у коллеги Eclipse отказывается стартовать, выдавая вот такое окошко:
eclipse-maxpermsize
Решение нашел и благополучно забыл. А сегодня эта напасть добралась и до моего ноутбука. Еле вспомнил решение: надо в файле eclipse.ini уменьшить значение параметра --launcher.XXMaxPermSize, экспериментально подобрать максимум, при котором Eclipse стартует. Смешно, в свое время боролись с другой ошибкой — во время работы Eclipse жаловалась, что PermGen space не хватает (точный текст уже не помню). А лечилось это увеличением значения того же параметра. Много хорошо — тоже плохо…»

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

Google выкатил Simple

Google изобрел велосипед придумал BASIC Simple. Это диалект BASIC для разработки приложений на платформе Android. Исходные файлы на Simple описывает компоненты — формочки и код, причем формочки в текстовом виде описаны в файле с кодом. Предполагается, что среды разработки будут скрывать текстовое описание GUI, предоставляя визуальный редактор.

Начнем с названия. Люди из этой компании вообще думают, как это искать? 🙂 Игрался я с языком, который называется Nice. Как вы считаете, сколько результатов Гугл выдаст по запросу Nice Programming Language? 2.5 миллиона! И это для малоизвестного языка. А для только что объявленного Simple Programming Language уже почти 19 миллионов!

Естественно, проект расположился на Google Code. Интересно стало посмотреть в исходники, тема трансляторов мне близка (TreeDL хоть и дает всего 1.5 тыщи ссылок, зато релевантность существенно выше). Транслятор Simple написан на Java 6. Парсер рукописный, дерево гетерогенное, рукописное. Классы для узлов дерева содержат методы для генерации байт-кода JVM (У Microsoft на .NET был Basic, теперь и на JVM есть 🙂 ). Решение достаточно эффективное, но плохо расширяемое.

Прежде чем на Windows удалось скомпилировать пустую программу, пришлось исправить три критические ошибки. Забавно, первые четыре баг-репорта — мои. Для версии 0.1.0 это, конечно, простительно, но осадочек остался. Нехорошо это — выкладывать сборку для платформы и ни разу ее не запустить… Впрочем, у проекта, похоже, один участник — Herbert Czymontek, он же simplecompiler.

Но самое главное — пока, судя по всему, есть только язык и транслятор с библиотекой. Средств визуального проектирования GUI нет. А пока их не будет, Simple своё название не оправдает. Впрочем, даже если они будут, не понимаю, чем BASIC проще нормальных языков. Ладно, поживем — увидим, деньги могут многое.»

30.07.2009  Метки:   Рубрики: Разработка, Языки  Один комментарий

Конфликт Venkman Debugger и Firebug в Firefox 3.5

После обновления Firefox до 3.5 и соответствующих обновлений расширений в Venkman Debugger перестали работать точки останова. Говорят, это конфликт с Firebug. Действительно, если выключить Firebug, точки останова начинают работать. Ну и что мне делать, если Firebug понадобится? Судя по отзывам, Firebug 1.4 сырой, можно попробовать откатиться на 1.3.3.»

27.07.2009  Метки: , ,   Рубрики: Mozilla, Разработка  Комментариев нет

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

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

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

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

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

autoruautoru-gm »

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

Конфликт расширений для 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 комментария