К основному контенту

Сообщения

Сообщения за 2015

Опыт общения с АСВ

Таки пришлось воспользоваться услугами АСВ в связи с закрытием одного банка. Сумма была не под потолок, потому решил забрать наликом. На все ушло минут 15 с момента входа в отделение и выхода из кассы с нужной суммой. И это при том, что выплаты производил Сбербанк. Справедливости ради, надо сказать, что очереди не было. При этом мне предложили открыть вклад и получив ответ "Не хочу открывать просто потому что не хочу", кажется, обиделись :) Выплаты были полностью, с учетом набежавших процентов по вкладу вплоть до отзыва у банка лицензии.

Детская математика. Задачке все возрасты покорны

Задачек подобной этой - множество, так случилось, что мне прислали именно эту. Взята из учебника для 6-го класса: Мне теперь вдвое больше лет, чем было тогда, когда мой брат был в моем возрасте. Когда мне будет столько лет, сколь теперь брату, то нам вместе будет 98 лет. Сколько лет каждому? Задачка трудна только тем, что несколько путает наличие сложных взаимосвязей в условии. Но это не беда. Начнем аккуратно анализировать условия. Итак, мы понимаем, что речь идет о том, что было раньше (момент времени "Тогда"), о том, что есть сейчас и о том, что будет. Запишем возраста в каждый временной промежуток и свяжем их между собой на основании условий. 1. Тогда (в прошлом) Пусть мне было: m лет, брату было n лет. 2. Теперь (в настоящем) Мне в 2 раза больше лет, чем в момент времени "тогда". Это мы берем из условия "Мне теперь вдвое больше лет, чем было тогда", а значит мне 2*m лет. Сколько брату? Очевидно, что прошло с момента времени &qu

Детская математика. Волшебные преобразования

Недавно на просторах соц. сетей увидел вот такую забавную картинку: Понятно, что никакой магии тут нет, поэтому давайте разберемся. Возраст не имеет значения Ну действительно, можем взять любой возраст (любое двузначное число) и получим после указанных преобразований предполагаемый результат. Это значит, что нужно обратить внимание на сами манипуляции. Они простые - умножить исходной число сначала на одно, затем на другое. Как известно, a * b * c = a * (b * c), вычислим b * c и посмотрим на него: 7 * 1443 = 10101. Тут можно было бы и закончить, но доведем до конца, чтобы стало совсем очевидно. Столбики Умножим, скажем 39 на 10101, но не при помощи калькулятора, а столбиком, который даст на визуальное понимание происходящего:    10101 х     39 --------    90909 + 303030 --------   393939 При умножении первой цифры (9) на 1 - получаем себя же, а при умножении на 0 - 0. Умножая 2ую цифру получаем аналогичный результат, НО по правилам мы сдвигаем п

XPages. Диалог с пользователем. dGrowl уведомления. Часть 2

В первой части , посвященной dGrowl сообщениям, рассмотрели как подключать и вызвать dGrowl-уведомления из клиентского скрипта. Сегодня рассмотрим, как это сделать со стороны сервера, например из Java-кода.

XPages. Диалог с пользователем. dGrowl уведомления. Часть 1

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

Замена текста в NotesRichTextItem и сохранение стиля

Задача: заменить текст в RichTextItem. Например, есть какой-то шаблон с тегами, в котором динамически происходит подстановка значений. Поиск и замену всех тегов указанного значения можно выполнить вот в таком цикле: Dim rtRange As NotesRichTextRange Dim rtNav As NotesRichTextNavigator Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() While rtNav.Findfirststring(TAGKEY) //Замена значения Set rtRange = rtItem.Createrange() Set rtNav = rtItem.Createnavigator() Wend , где rtItem - переданный NotesRichTextItem. Саму замену можно произвести вот так: Call rtRange.Setbegin(rtNav) Call rtRange.Setend(rtNav) Call rtRange.Remove() Call rtItem.Begininsert(rtNav) Call rtItem.Appendtext(VALUE) //Добавляем текстовое значение. Call rtItem.Endinsert() НО . В таком случае при выполнении rtRange.Remove() мы теряем стилевую информацию и вставка происходит со значениями по-умолчанию. Перенос rtRange.Remove() не помогает. Нужно вместе с этим сохранить стиль. Полный к

Записки начинающего лучника. Краткие итоги первого сезона

1. Лук и стрелы Пока что пользуюсь луком (рукоять), который купил еще в самом начале - SF Optimo+ . Сменил на ней 2 пары плечей, сейчас на постоянной основе использую 3и. 1 и 2 пары были родные от SF на 26# и 34#. Нынешние плечи на 40# от лука-близнеца -  Samik Polaris . Что могу сказать? - по мне  так отличный лук для начала. Неприхотлив, прост, достаточно качественен. Тем более я стреляю интуитивно и обвеса на нем нет. Сейчас уже хочется чего-то по-интереснее, поэтому нахожусь в поиске. Начинал стрелять самыми дешевым дубовым карбоном. На 26# хватало. Как перешел на более сильные плечи, сменил стрелы на алюминий: Easton Jazz 1916 . Стрелы я немного апгрейдил под свой стиль стрельбы. Немного писал об этом тут . На самом деле через некоторое время я пошел еще дальше в этом плане и сменил 3 пера на 4, взяв перья несколько по-меньше. Все хотел, но как-то не собрался описать свой опыт. Может чуть позже. При смене плечей на 40# подошли эти же стрелы. так что использую их и с

XPages. Диалог с пользователем. Собственные уведомления

Итогом полученных ограничений, которые получились в итоге  стало появление "собственной" системы сообщений. Итак, по-порядку: 1. FlashScope Сегодняшняя работа будет очень тесна связана в возможностью показать сообщение после редиректа страницы. Поэтому с механизма, который позволит это сделать и начнем. Метод, позволяющий отображать сообщения (речь идет о FacesMessage) после смены страницы описан тут . Но будем использовать, в некотором смысле, более универсальный механизм, который позволит передавать параметры между запросами и не занимать sessionScope или applicationScope - это  FlashScope . Я использую немного не эту реализацию, а реализацию от  Jesse Gallagher . Еще нужно в faces-config.xml прописать: <managed-bean>   <managed-bean-name>flashScope</managed-bean-name>   <managed-bean-class>java.util.HashMap</managed-bean-class>   <managed-bean-scope>session</managed-bean-scope> </managed-bean> и &

XPages. Диалог с пользователем. Уведомления с помощью FacesMassage. Часть 2

В прошлой части я дал некоторую теоретическую подоснову о том, что такое FacesMessage в JSF и показал, как можно добавить и отобразить сообщение для пользователя, используя FacesContext.addMessage и компонент xp:messages. Сегодня продолжим: поработаем над отображением сообщений.

XPages. Применяем Bootstrap

Ранее я уже описывал некоторые аспекты, касательно добавления и применения Bootstrap в отношении xPages. Речь идет о Extension Library и Bootstrap  и Bootstrap для XPages в действии . Хотел бы еще раз вернутся к теме применения Bootstrap в проектах и уточнить кое-какие моменты. Как я писал, начиная с ExtLib 9.0.1 (build v00_10.20141105-0922) , уже непосредственно в состав ExtLib включена поддержка Bootstrap для xPages. Это значит, что никаких дополнительных плагинов (как я ошибочно указал тут , в настройках) ставить не нужно. Достаточно несколько простых шагов, чтобы сменить тему: 1. В настройках Xsp Properties , на вкладке General , Application Theme выбрать из доступных Bootstrap3.2.0 или Bootstrap3.2.0_flat . 2. Там же на закладке Page Generation выставить HTML doctype: HTML5 и галку Force content type to application/xhtml+xml 3. Единственная библиотека, которая должна (достаточно для работы bootstrap) быть подключена - com.ibm.xsp.extlib.library . Я проделал данны

XPages. Диалог с пользователем. Уведомления с помощью FacesMassage. Часть 1

Для улучшения восприятия пользователем приложения, с которым он общается было бы не плохо взаимодействовать с ним через отправку ему уведомлений (например, "Документ успешно сохранен". В цикле XPages. Диалог с пользователем буду рассматривать различные варианты отправки и отображения сообщений/уведомлений пользователю, двигаясь последовательно от простейших и не самых симпатичных до вполне радующих глаз. В определенный момент планирую перейти от OneUI темы (как в скриншотах, так и в демо-приложении) к Bootstrap, вероятно, описав нюансы подключения и перехода отдельным постом. В конце будет получен Java-класс (Bean), отвечающий за отправку сообщений и 1-2 Custom Control для их корректных отображений.

Синхронизация фоток пользователей в Учетные записи Active Directory

Занимательные взаимоотношения получились с задачей обновления фотографий пользователей в учетные записи Active Directory. Все оказалось несколько "необычнее", чем смотрелось на первый взгляд.

Web-сервисы - наше все.

Обнаружил и изучил несколько неплохих статьей из цикла Practical Web services in IBM Lotus Domino 7 (Практическое использование Web-сервисов в IBM Lotus Domino 7), последовательно раскрывающих суть Web-сервисов и их создание в среде Notes/Domino. 1.  What are Web services and why are they important?  Статья доступна на русском . 2.  Writing and testing simple Web services . Статья  доступна на русском . 3.  Writing complex Web services . Статья доступна на русском .

Widget Container. Базовые компоненты Extension Library

На повестке дня довольно простой, но очень симпатичный компонент: Widget Container 1.  Application Layout 2.  Navigator 3.  Data View 4.  Form Table (+Form Layout Column, Form Layout Row) 5.  Dialog (+ Dialog Content, Dialog Button Bar) 6. Tooltip Dialog --- Дополнительно --- 7. Widget Container 8. Bread Crumbs