2 ноября 2011 г.

Фраза дня :)


Да, для кого-то самовосстанавлияющиеся системы - это мечта, у нас это давно случайная реальность :)

Из рабочих обсуждений

1 ноября 2011 г.

中國 или новые приключения Java в Китае


“Never tire to study and to teach others.” —Confucius

Неожиданно появилась третья (и что-то мне кажется, что не последняя) часть саги о путешествии Java по разным странам мира. Ранее были Украина и Азербайджан. Теперь речь пойдет о Китае (насколько я понял, данная проблема касается всех иероглифных языков: китайского, японского и корейского).

Слоган компании Sun Microsystems Oracle по поводу Java все мы хорошо помним "Write once, run anywhere". Действительно, так и происходит: пишешь один раз и с JVM от того же поставщика все работает как и ожидалось на разных ОС. В частности, наши продукты активно используются под Windows и Linux в разных странах.

И вот пригласили нас на китайский рынок. Тема интересная и большая: локализация ПО, подготовка документации и т.д.

Переводчики закончили с текстами, добавили их в ПО, запускаем и видим квадратики вместо иероглифов. После поисков виноватых и наказаний непричастных выяснили, что дело в Look&Feel, который мы использовали. Он де совместим с иероглифами только традиционного китайского и только под Linux. Ладно, Бог с ним. Перешли на другой L&F и все как будто бы наладилось. Квадратиков стало поменьше, но они по прежнему остались! Эмпирическим путем установили, что квадратики появляются только под Windows и только в момент когда идет изменение шрифта (стиль или размер).

В общем, не буду тянуть - Windows L&F очень (очень-очень-очень-очень) странно себя ведет с иероглифами:
  1. После его установки (иногда?) системный шрифт меняется на Tahoma, а иногда остается Dialog.
  2. Если шрифт остается Dialog, то иероглифы отображаются, но, в общем и целом, интерфейс начинает выглядеть "по уродски" (технический термин).
  3. Если шрифт становится Tahoma, то он может даже покажет Вам иероглифы, но вот малейшие с ним манипуляции приводят к квадратам (так и хочется не к месту вспомнить Малевича).
    В нашем случае вот такой вот код безбожно "квадратит": label.setFont(label.getFont().deriveFont(Font.BOLD));
И на сладкое, как это "лечится":
  1. Заменой L&F'a на какой-то иероглифо совместимый аналог. Важно его проверить под всеми ОС с которыми Вы планируете использовать свой продукт, а то могут быть "сюрпризы".
  2. Если это в силу каких-то причин сделать не возможно и нужно "жить" с "родным" Windows L&F, есть секретный слабо документированный параметр (точнее переменная окружения) swing.useSystemFontSettings. Нашел на сайте IBM JDK упоминание, что этот параметр по-умолчанию включен и он влияет на использование системных шрифтов для Windows L&F вместо "родных" шрифтов Java ("From v1.4.1 onwards, by default Swing programs running with the Windows® Look and Feel render with the system font set by the user instead of a Java-defined font. As a result, fonts for v1.4.1 differ from those in prior releases. This option addresses compatibility problems like these for programs that depend on the old behavior. By setting this option, v1.4.1 fonts and those of prior releases will be same for Swing programs running with the Windows Look and Feel."). На сайте Sun Oracle о нем как бы тоже говорят, но больше в контексте, что он существует, чем в контексте, а что он собственно делает.
Итак, для того чтобы в Windows L&F включить "совместимость" с иероглифами достаточно:
  1. Задать переменную окружения ОС (sic!) swing.useSystemFontSettings и поставить ей значение false (правда неожиданно :)?
  2. Или задать ее значение программно:
    System.setProperty("swing.useSystemFontSettings", Boolean.toString(false));
  3. Или любыми другими способами передать значение этой переменной в JRE. Например, в качестве параметра запуска -Dswing.useSystemFontSettings=false
К сожалению, после всех этих манипуляций Ваш продукт будет выглядеть не столь красиво :(.

P.S. Для полноты картины все же поясню, что "корень зла"  - это шрифт Tahoma, который не полностью совместим с иероглифами. Т.е. есть еще один вариант решения данного вопроса: глобальная замена шрифта Tahoma на более приемлемый.

15 октября 2011 г.

Полезные документы: проведение тендера и ИТ стратегия

Давным давно (в далеком 2007), кратко описал наш алгоритм выбора одной большой финансовой системы для десятка стран в Евразии.

Сегодня написал статью (точнее сделал cross-post цитат из статьи Борис Шлаина) о бизнес-аналитиках.

Автор статьи меня заинтересовал и пока смотрел, что "вкусного" есть на его сайте наткнулся на золото в области тендера и выбора решений:
  1. Разработка IT-стратегии
  2. Проведение тендера по выбору IT-решения

Обе ссылки на оригинальные pdf документы. Если они перестанут работать, всех направляю на сайт компании в раздел библиотека.

Кто такие бизнес-аналитики?

Давно хотел отметить труд "бессмертных" людей любого серьезного ИТ проекта - бизнес-аналитиков. Но, как часто бывает в Интернете, все уже "украдено написано до нас".

Так что привожу выдержки и ссылки на оригинальную статью Борис Шлаина "Бизнес-аналитик - свой человек за линией фронта".


Бизнес-аналитик – это, с точки зрения клиента, еще или уже не программист. Это человек, которому можно рассказать о бизнесе примерно так же, как пожаловаться своему врачу – и он должен где-то посоветовать лекарство, а где-то просто успокоить словом. А для руководителя группы разработки и архитектора бизнес-аналитик – это такой агент, шпион, которого можно «забросить за линию фронта» в компанию-клиента, чтобы он добыл ценные сведения о пожеланиях клиента и его стратегии развития своего бизнеса.
Сегодня под словом «бизнес-аналитик» скрывается две разные профессии:
  • Бизнес-аналитик в информационных технологиях – это человек, выступающий в роли интерфейса между ИТ и бизнесом, который может говорить на одном языке с представителями обеих областей и может организовать совместную работу над предметной областью. Его главная задача – сделать так, чтобы информационная система отвечала потребностям бизнеса. Бизнес-аналитик может быть связан с каким-либо определенным продуктом (консультанты по SAP), с узкой специализацией (розничные продажи и логистика скоропортящихся продуктов) или с конкретным предприятием (бизнес-технологи, работающие в ИТ-отделах крупных компаний).
  • Бизнес-аналитик в бизнесе – это человек, который умеет анализировать определенный вид бизнеса или процесса (непрерывное производство, розничный бизнес, управление проектами и т.п.) или круг задач в бизнесе (маркетинг, управление запасами, бюджетирование и т.д.). Его арсенал – это совокупность методик, а средства автоматизации являются при этом вспомогательными.

Бизнес-аналитик может представлять в проекте ИТ-компанию, компанию-клиента или быть независимым консультантом, приглашенным на проект. При этом функциональная роль бизнес-аналитика – интерфейс между бизнесом и ИТ – остается практически постоянной, вне зависимости от «юрисдикции».

Основная роль бизнес-аналитика – это разработка непротиворечивой и достаточно полной модели требований реального бизнеса. Это задача не столько описательная и созерцательная («просто напишите, как у нас все происходит и автоматизируйте»), а творческая. Уже расхожим стало выражение об «автоматизации беспорядка», которая только ухудшает общую ситуацию. Но и «прямолинейная автоматизация» очень часто исключает из процесса те самые «отдушины» и «обходные пути», которые и обеспечивают известную российскую «нестрогость законов» и позволяют бизнес-системе в целом работать.

Но достаточно часто бизнес-аналитик приступает к работе еще на этапе переговоров. В этом случае его задача – понять, насколько решение соответствует потребностям клиента, оценить «масштабы бедствия» и определить возможный объем доработок.

Особая роль принадлежит бизнес-аналитику на этапе внедрения. Его задача – «вписать» средства автоматизации в реальный бизнес-процесс. Бизнес-аналитик не обязательно разрабатывает документацию сам и тем более не обязательно непосредственно руководит внедрением – он формулирует требования, каркас документации и совместно с менеджером внедрения разрабатывает модель эксплуатации системы, решая задачи соответствия организационных и технических решений.

Работа в проекте – основная форма деятельности бизнес-аналитиков. Любой участник проекта должен понимать, что такое проект, как он управляется, из каких этапов он состоит и кто в нем участвует. В проекте бизнес-аналитик отвечает за управление информацией о предметной области: он может не только разрабатывать соответствующие документы, но и технологию, обучать и контролировать других членов проектной команды. Многие риски проекта связаны с ключевыми требованиями клиента, возможностью и полнотой их удовлетворения. Из всех дисциплин управления проектами – управление контрактами, управление ресурсами, управление персоналом и т.п. – управление рисками и управление информацией о предметной области являются для бизнес-аналитка приоритетными.

Бизнес-аналитик – существо общественное
Навыки коммуникации – «работы с людьми» – заслуживают отдельного внимания. При всем многообразии учебных курсов и литературы, большинство этих «источников квалификации» уделяют основное внимание методологии, правильному использованию нотаций и программных средств. Между тем не менее 35% времени бизнес-аналитика занято общением с коллегами и клиентами, и на практике основным способом научиться этому остается личный опыт.

Так или иначе, большинство российских компаний решают для себя эти задачи. И бывшие еще недавно «белыми воронами» люди с профессией бизнес-аналитика все чаще и – я надеюсь – все успешнее играют роль между бизнесом с его растущими требованиями и сферой информационных технологий с ее ограниченными возможностями.

2 июня 2011 г.

Операция Ы (I) или приключения Java в Азербайджане

Не так давно я писал о приключении Украинской гривны в Java. И вот - вторая серия: приключения азербайджанской буквы ı (I) (произносится примерно как ы). Ни в коем случае ее не стоит путать с аналогичной буквой из Английского языка i (I) - у них разные коды и ... ну просто это разные символы. И вот что странно, с Украинской буквой і (І) никто английскую не путает, а с Азербайджанской - увы ;(

Какие сюрпризы это готовит Java разработчикам - например, если в операционной системе установлены региональные настройки Азербайджанские, то вот такой вот код:
System.out.println("decimal".toUpperCase());
Вернет
DECİMAL
Да-да это азербайджанская İ, а в оригинале была английская i. Кто и для кого подготовил эту пакость неизвестно, но эффект от нее может быть неожиданным. Будем надеяться, что это bug, not a feature.

Как это все решается:
System.out.println("decimal".toUpperCase(Locale.US));

Или более глобально в начале программы в коде явно задайте default Locale, если это приемлемо.

15 мая 2011 г.

Фраза дня :)

Иногда в автоматизированных системах бизнес-логика реализуется так, что обвинять после этого женщин в бессвязности и непоследовательности - преступление

5 мая 2011 г.

Приключения украинской гривны в Java (Oracle)

Как оказалось, долгие годы в Java (Oracle) в определенных случаях неправильно отображался код украинской валюты Гривны для региональных настроек (Locale) Украина (uk_UA).
До версии jdk1.6.0_21 включительно код был грв.
В версиях jdk1.6.0_23 и jdk1.6.0_24 он уже стал грл. (судя по всему кто-то "промахнулся" с последней буквой "л" - "н", "Да какая разница ..." (С) Брат 2).
И вот только в jdk1.6.0_25 все встало на свои места Гривна стала грн.


Java код, который проверяет данный bug:
System.out.println(Currency.getInstance("UAH").getSymbol(new Locale("uk", "UA")));