Столкнулся с глюком в Opera 9.X-10.X (проверял на 9.64, 10.10, 10.63): при назначении через CSS параграфу position: relative его стили left и top считаются неверно (точнее, не пересчитываются - они должны обнулиться, а остаются равными offsetLeft, offsetTop).
30 дек. 2011 г.
24 нояб. 2011 г.
23 нояб. 2011 г.
Рефакторинг кода и Warning: The method can be declared as static
Есть у компилятора Java интересное предупреждение "The method foo() from the type Bar can be declared as static" - в среде разработки Eclipse включается в настройках ошибок/предупреждений компилятора Java (Window - Preferences - Java - Compiler - Errors/Warnings). Иногда оно помогает в анализе и улучшении качества кода, особенно это касается JUnit-тестов.
2 нояб. 2011 г.
Защита jmx-консоли и web-консоли JBoss 4.X-5.X от JBoss worm
В интернетах распространяется JBoss worm - червь, атакующий сервера JBoss с настройками jmx-консоли и web-консоли по умолчанию. Суть в том, что через консоль можно получить доступ к серверу (выполнить произвольный код в контексте пользователя JBoss), а в настройках по умолчанию защита или выключена вообще (JBoss 4.X) или ограничена типами HTTP-запросов GET и POST, что червь легко обходит.
Что надо сделать, чтобы защитить консоли JBoss (в примере - с использованием файла с логином/паролем):
Что надо сделать, чтобы защитить консоли JBoss (в примере - с использованием файла с логином/паролем):
27 окт. 2011 г.
Мониторинг состояния JBoss 4.2.X в JBoss Web Console
Ключевые параметры работы сервера приложений JBoss можно отслеживать в реальном времени в JBoss Web Console.
Открываем в браузере http://localhost:8080/ и выбираем ссылку JBoss Web Console или сразу открываем URL http://localhost:8080/web-console/ (конечно же, вместо localhost:8080 надо подставить реальные имя хоста и номер порта).
Разворачиваем ветку System, в ней JMX MBeans, далее последовательно открываем нужный домен, выбираем бин (значения его атрибутов загрузятся в правый фрейм), нажимаем правой кнопкой мыши на атрибуте, выбираем "graph" и смотрим...
25 окт. 2011 г.
Фокусы с фокусом в Opera
Случайно наткнулся на неприятную проблему в Opera, которая существовала ещё в версии 9.64 (а может и в более ранних, просто это самая старая версия, которая у меня имелась), и существует до сих пор (в версии 11.51 - последней имеющейся у меня на момент написания статьи).
3 окт. 2011 г.
19 сент. 2011 г.
Eclipse - война с багами
Зарегистрировал на bugs.eclipse.org два очень достающих меня бага. Оба касаются SVN.
8 сент. 2011 г.
Snapshot и репозиторий Nexus thirdparty
Обнаружил, что разработка DisplayTag всё ещё продолжается, хотя артефакты 1.3-SNAPSHOT можно найти только в репозитории SourceForge. Поэтому скачал исходники из SVN, пофиксил JUnit-тесты тупых америкосов (в моей локали по умолчанию при выводе в текст дня недели получится что угодно, но никак не "tuesday"), собрал локально (сначала mvn package, затем mvn source:jar) и попробовал залить в свой репозиторий thirdparty (как я это обычно делал для Java plugin и JDBC-драйверов Oracle и MS SQL):
5 сент. 2011 г.
30 авг. 2011 г.
Валидное унифицированное подключение Java-апплета в XHTML
Когда встала реальная необходимость использования Java-апплета в проекте, освежил знания по этой тематике и перекопал интернеты. Результат совершенно не удовлетворил меня как веб-девелопера: невнятные советы, невалидная древняя разметка, куча логики, проверки на Netscape 6. Нужно было своё решение - современное, валидное, правильное.
29 авг. 2011 г.
javascripts.sourceforge.net
Обновил свои скрипты на SourceForge:
IDE Aptana (для которой архив проекта предназначен) - более-менее неплохая среда разработки JavaScript, основанная на Eclipse, имеет встроенный веб-контейнер Jetty, предпросмотр (Gecko), форматирование и валидацию HTML и JS (JSLint), заливку на SourceForge по SFTP.
IDE Aptana (для которой архив проекта предназначен) - более-менее неплохая среда разработки JavaScript, основанная на Eclipse, имеет встроенный веб-контейнер Jetty, предпросмотр (Gecko), форматирование и валидацию HTML и JS (JSLint), заливку на SourceForge по SFTP.
26 авг. 2011 г.
Exception в setSelectionRange() в Firefox
Иногда при вызове element.setSelectionRange(begin, end); Firefox вываливает исключение:
Возможные причины:
uncaught exception: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLInputElement.setSelectionRange]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: http://127.0.0.1:8000/ui/lib/ui/maskedinput.js :: caret :: line 38" data: no]
Возможные причины:
- Элемент не подключен к документу (создан в JavaScript и не вставлен или только что вставлен в дерево DOM - возможны варианты в разных версиях Firefox).
- Элемент невидим (элемент или один из его родителей имеет стиль display:none).
- Элемент не имеет фокуса (проявилось в Firefox 3.6+).
25 авг. 2011 г.
Проверка слова на попадание в список зарезервированных идентификаторов
В ходе доработки ООП Prototype встала необходимость определения, является ли название поля/метода зарезервированным словом или нет. Придумал три возможных алгоритма решения (точнее придумал два, а один был подсмотрен в RightJS). На вполне закономерный вопрос, какой из трёх вариантов быстрее, ответ даёт онлайн-сервис тестирования производительности JavaScript - весьма удобный инструмент для сравнения скорости выполнения разных вариантов скрипта в разных браузерах.
Нестандартные атрибуты тегов HTML
Тема нестандартных атрибутов (пользовательских, custom attributes) в тегах HTML уже давно бродит в кругах web-девелоперов. Некоторые, не долго думая, пишут всё что им вздумается, забивая на то, что получившийся HTML-код не пройдёт валидацию (раньше этим сильно грешил ZK framework). Некоторые с недавних пор уповают на будущий HTML5 и атрибуты, начинающиеся с префикса data-.
Практически никто не вспоминает (или вообще не знает) о решении, которое существует уже давно: XHTML. С самого начала XHTML позволял указывать свои пространства имён XML, в которых можно было творить почти всё, что душе угодно, не нарушая валидности XHTML кода.
Практически никто не вспоминает (или вообще не знает) о решении, которое существует уже давно: XHTML. С самого начала XHTML позволял указывать свои пространства имён XML, в которых можно было творить почти всё, что душе угодно, не нарушая валидности XHTML кода.
23 авг. 2011 г.
Тонкости split() в IE
Чисто случайно (впрочем, как обычно это и происходит) при разборе на стороне клиента CSV-подобного ответа сервера обнаружил различие в результатах String#split(RegExp) и String#split(String) в Internet Explorer 6, 7 и 8 версий (в 9 и 10 не проверял):
"1||2".split(/\|/) // вернёт ["1", "2"]
"1||2".split("|") // вернёт ["1", "", "2"]
То есть при вызове split с регулярным выражением осёл IE считает подряд идущие совпадения одним совпадением и пустых элементов в результате не возвращает, в отличие от вызова split с использованием строки. Во всех остальных браузерах split возвращает одинаковые результаты (с пустыми элементами).
"1||2".split(/\|/) // вернёт ["1", "2"]
"1||2".split("|") // вернёт ["1", "", "2"]
То есть при вызове split с регулярным выражением осёл IE считает подряд идущие совпадения одним совпадением и пустых элементов в результате не возвращает, в отличие от вызова split с использованием строки. Во всех остальных браузерах split возвращает одинаковые результаты (с пустыми элементами).
Подписаться на:
Сообщения (Atom)