понедельник, 15 декабря 2014 г.

Рабочие итоги 2k14

Итоги подводить нужно. Чтобы обратить внимание на хорошие результаты или на неудачи. Чтобы вообще понять - а что же я год делал-то?

суббота, 22 ноября 2014 г.

Импорт закрытого ключа в jks-хранилище

Для работы с ключами/сертификатами в java активно использую keytool: просто, понятно и "всегда под рукой".
Но иногда случается так, что на руках оказывается пара "закрытый ключ + сертификат", которую надо импортировать в jks:
Certificate.cer
Private.key
Но keytool возможности импорта не даёт (http://itech-notes.blogspot.com/2013/02/keytool.html).
Для решения задачи есть достаточно удобный способ, основанный на возможности импорта хранилища в формате PKCS12.

суббота, 15 ноября 2014 г.

Дело неблагодарное

Цитата из случившегося разговора:
"Долгосрочного плана у нас нет - как показывает практика, это дело неблагодарное."
Вот ведь ххх!

За этими словами в 99% (или даже в 100% ?) случаев скрывается непонимание.

Заказчики не понимают, чего они вообще хотят.  
Вчера хотелось обычную овощерезку, сегодня ей требуется доступ в интернет и удалённое управление, а завтра подавай холодильник.
Не, ну это же нормально, да, у нас же ведь не было долгосрочного плана, поэтому новые "хотелки" ничему не противоречат?!

Разработчики не понимают, что им делать. И либо ничего не делают, либо делают так, как удобнее/легче/прикольнее/... им самим.
Мол, давно вот brainfuck хотелось попробовать, напишу-ка я на нём самый важный алгоритм, то-то преемник кода порадуется!

Лиды и менеджеры не понимают, какие устанавливать сроки, какие требуются ресурсы, какие приоритеты известны, и т.д. и т.п.
Саша на сервере и Петя на мобильном приложении сделали уже по 50% своей работы! Круто, поставим галочки и закроем таски! 
Вот только их проценты ни разу не синхронизированы, и в результате система имеет реальный 0.

Примеры условные и подчёркнуто резкие. Чтобы суть была сразу видна - за умными словами о гибкой разработке легко может спрятаться неуправляемый бардак.

В общем, как показывает моя практика - когда понимание есть, когда цель видна, то и направление / шаги сами собой появятся. А оттуда и план подтянется. И проект от этого только выиграет. Требование хоть и недостаточное, но обязательное.

вторник, 23 сентября 2014 г.

Pay Up

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

вторник, 16 сентября 2014 г.

Statiс code analysis 1

В качестве предисловия.
Некоторое время назад я готовил / проводил семинар в рамках сертификации компании на соответствие стандарту PA DSS (http://en.wikipedia.org/wiki/PA-DSS). Одним из требований, предъявленных аудитором, было использование при разработке ПО автоматизированных инструментов анализа программного кода. Конкретной темой моего семинара был статический анализ и его возможности.
Теперь я хочу поделиться собранным материалом.

пятница, 12 сентября 2014 г.

среда, 16 июля 2014 г.

Неудобство в akka

Хоть к akka отношение у меня не самое лучшее (http://itech-notes.blogspot.com/2013/01/java.html),  тем не менее, порой приходится с ней сталкиваться и даже работать. Далее один маленький вброс на тему неудобств этой самой работы.

среда, 4 июня 2014 г.

MSC00001 Failed to start service

Дано: приложение в war-архиве, стартующее на jboss 7.x.
Чтобы достучаться до сервлета, в url по дефолту должно присутствовать название архива, что-то вроде:
http://localhost:8080/war_name/uri
Но по понятным причинам название war'а выносить в url вовсе не хочется.
Что делать?

понедельник, 2 июня 2014 г.

JBAS011006 / JBAS011054

Дано: spring framework 3.2 и jboss 7.X.

При старте в логе предупреждение:
WARN  [org.jboss.as.ee] (MSC service thread 1-6) JBAS011006: Not installing optional component org.springframework.web.context.request.async.StandardServletAsyncWebRequest due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.springframework.web.context.request.async.StandardServletAsyncWebRequest
    at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
    at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
    at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]

вторник, 13 мая 2014 г.

Web Service endpoint is already registered...

При разворачивании одного приложения на jboss 7.1 / 8.0  деплой оказался омрачён ошибкой:
Caused by: java.lang.IllegalArgumentException: JBAS015533: Web Service endpoint com.sun.xml.ws.tx.webservice.member.coord.ActivationRequesterPortTypeImpl with URL pattern /Coordinator is already registered. Web service endpoint com.sun.xml.ws.tx.webservice.member.coord.RegistrationRequesterPortTypeImpl is requesting the same URL pattern.

суббота, 12 апреля 2014 г.

json schema tutorial

json schema - инструмент для описания и валидации json-структур.
Толковых описаний (да и вообще описаний с примерами) маловато.
Благо, есть доступные спецификации на самом сайте проекта да некоторые примеры. Но в наш век повсеместного упрощения жизни простых смертных чтение "на ночь" спецификации хочется заменить чем-то более удобным.

И вот буквально несколько дней назад - всего-то 06.04.2014 - появился Understanding json schema v. 1.0.

Ознакомиться можно в виде pdf-документа http://spacetelescope.github.io/understanding-json-schema/UnderstandingJSONSchema.pdf или в  online-версии http://spacetelescope.github.io/understanding-json-schema/index.html

Хорош, рекомендую.

суббота, 22 февраля 2014 г.

Unknown OS

Забавная штука встретилась.
Есть сервер под управлением freebsd-9. И установлена там openjdk реализация славной java. И работает на нём jboss as с неким приложением.
Решено обновить систему до 10-й версии (10.0-RELEASE) - она под виртуализацией работает стабильнее и отдаёт гипервизору много управляющих сигналов, чего раньше не делала. Заодно обновить порты, пакеты, поставить заплатки. Заодно и openjdk обновить на самую актуальную версию.
Обновились...

среда, 29 января 2014 г.

maven dependency hell

Так сложилось, что в компании долгое время использовался инструмент http://ant.apache.org/. Круто, здорово, можно делать невероятные вещи и почти что запустить ракету на Луну с помощью него. Но за это приходится платить большим размером ant-скриптов, дублированием действий и прочими штуками, которые во множестве мест и статей уже описаны. Ещё один негатив - это т. н. jar-hell, когда у девелопера на локальной машине одна версия библиотеки (быть может, даже кастомная), у тестировщика другая, а у внедренца на продакшн-стенде - третья.

Перешли на http://maven.apache.org/. Круто, здорово, можно быстро и легко делать стандартные вещи. Если проект нестандартен и не подходит под maven-lifecycle - 99 %, что его целесообразнее стандартизировать - и будет круто и здорово.
Упрощение управлением зависимостями - одно из достоинств maven, которое часто упоминается.

Только вот беда с зависимостями всё равно есть - на этот раз maven-dependency-hell!