четверг, декабря 27

maven dependency. include scope

в документации к maven-dependency-plugin для copy-dependencies описан параметр includeScope, позволяющий указать какие зависимости копировать. но параметр принимает только одно указание scope. А что делать, если требуется указать несколько?
Всё просто - указывает несколько раз параметр includeScope.

например так:
<plugin>
 <artifactId>maven-dependency-plugin</artifactId>
 <executions>
  <execution>
   <id>copy-dependencies</id>
   <goals><goal>copy-dependencies</goal></goals>
   <configuration>
    <includeScope>system</includeScope>
    <includeScope>compile</includeScope>
   </configuration>
  </execution>
 </executions>
</plugin>

Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

суббота, декабря 22

Lotus. Динамический импорт RT-поля в открытый UI-документ

Для вставки внешних файлов в UI есть @-формула "@Command( [EditInsertFileAttachment])". Но бывает потребность вставить в UI через LotusScript вложения из RT-поля другого документа без сохранения и переоткрытия документа.

Вот для этого нам и пригодится недокументированный метод includeItem у класса NotesUiDocument.
Синтаксис метода: NotesUiDocument.includeItem(doc as NotesDocument, FieldName As String) *
* Применяется к текущему полю

Два варианта применения:
1) импорт файлов в уже открытом документе из другого документа
2) импорт файлов в новый документ без его предварительного сохранения.

Во вложенном файле приведены оба примера.
Первый пример в виде кнопки "Insert other document" на форме
Второй пример в виде кнопки "Create & Import" в представлении

файл-пример БД: скачать

UPD:
метод доступен начиная с версии 8.5. Если нужна поддержка версии ниже, то пример тут

Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

среда, сентября 26

Безопасность Firefox для локальных JS-скриптов

Периодически приходится открывать локально демо-страницы с JS-фреймворками типа Ext.JS или Dojo. При этом, кажется, что код на странице почему-то не хочет работать:


Но всё дело в параметре security.fileuri.strict_origin_policy, который запрещает подгрузку сторонних файлов на HTML-странице.
выставим значение параметра в false на странице настроек и обновим закладку с открытым локально HTML-файлом:


четверг, сентября 6

быстрая вставка угловых кавычек в Firefox

Тут у друга возник вопрос, как в Firefox можно делать быструю вставку угловых кавычек в текст.

«В лоб» решения не подходят - слишком много клавиш нажимать надо, потому пойдём обходным путём - через «сторонние» плагины. В частности, через плагин BBCodeExtra, который я уже достаточно давно использую для быстрого форматирования текста на различных сайтах.

В данном плагине есть возможность добавления собственных команд, чем мы и воспользуемся.

  1. Заходим в настройки BBCodeExtra через контекстное меню
  2. Нажимаем кнопку «Добавить» и заполняем диалоговую форму так, как показано скриншоте ниже (Название пункта на ваше усмотрение ;) )
  3. сохраняем пользовательский тег
  4. Как воспользоваться. Выбираем слово, которое требуется обрамить в кавычки, и в контекстном меню кликаем нашу кнопку.
  5. В результате, выделенный текст обрамляется угловыми кавычками
  6. PROFIT


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

вторник, августа 21

[UPDATE] Debian. установка mysql server

Решил чуток обновить пост

1) устанавливаем сервер MySQL
#apt-get install mysql-client mysql-server

2) Выполняем bash-скрипт (исходник) с правами root. При выполнении запросится пароль от root-пользователя MySQL.
Скрипт избавляет нас от ошибки "Access denied for user ‘debian-sys-maint’@'localhost" и устанавливает кодировку UTF-8 по умолчанию


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

понедельник, мая 21

Linux tips. консолька и mkdir

Вот за что я люблю линуха, так это за то, что тут можно вытворять вот такие вот штуки:

# mkdir -p domain/{tmp,vhosts/{www,fish}/{public,php}}


результатом данной команды будут созданы директории:
domain/tmp
domain/vhosts/www/public
domain/vhosts/www/php
domain/vhosts/fish/public
domain/vhosts/fish/php


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

четверг, апреля 19

Lotus Script. фичи

Обнаружился довольно интересный глюк в скрипте - метод Getdocumentbykey у NotesView "изменяет" значение передаваемого ключа, если ключ типа Variant (при строгой типизации такого не происходит).

пример:

Dim ses As New NotesSession
Dim view As NotesView
Dim doc As notesdocument
Dim num As Variant

Set view = ses.currentdatabase.Getview("XXX")
num = "50000001"
Print "1: " & num ' Выведет 50000001
num = clng(num)
Print "2: " & num ' Выведет 50000001
Set doc = view.Getdocumentbykey(num, True)
Print "3: " & num ' Выведет 134217728


Теперь немного видоизменим программный код, приведя к Long переменную:


Dim ses As New NotesSession
Dim view As NotesView
Dim doc As notesdocument
Dim num As Long

Set view = ses.currentdatabase.Getview("XXX")
num = 50000001
Print "1: " & num ' Выведет 50000001
num = clng(num)
Print "2: " & num ' Выведет 50000001
Set doc = view.Getdocumentbykey(num, True)
Print "3: " & num ' Выведет 50000001

А теперь изменим тип только в вызове метода getDocumentByKey:

Dim ses As New NotesSession
Dim view As NotesView
Dim doc As notesdocument
Dim num As Variant

Set view = ses.currentdatabase.Getview("XXX")
num = 50000001
Print "1: " & num ' Выведет 50000001
num = clng(num)
Print "2: " & num ' Выведет 50000001
Set doc = view.Getdocumentbykey(CLng(num), True)
Print "3: " & num ' Выведет 50000001

отсюда вывод: использовать тип Variant конечно удобно, но это как хождение по минному полю - путь короче, но не знаешь где рванёт ;)

ЗЫ: клиент Standard 8.5.3FP1



Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

четверг, января 5

менеджер пакетов dpkg и немного awk

Маленькая строчка, но очень полезная в "быту":

sudo dpkg --get-selections | grep %ЧТО_ИЩЕМ% | awk '{print $1}' - | sudo xargs dpkg --[purge|remove]

[purge|remove] - команда на выш выбор.

Для чего нужна? Чтобы удалить большой (более 1-го ;) ) список пакетов из системы по фильтру %ЧТО_ИЩЕМ%.

последний раз столкнулся, когда у меня zend-server не захотел устанавливаться из репозитария. да и удаляться тоже не пожелал - ругался и требовал, чтобы я выполнил "apt-get -f install", в котором он тоже только ругался на зависимости. Пришлось "прибивать" пакеты вручную через dpkg, исправлять зависимости и заново устанавливать zend-server :)


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!

с CentOS на Debian. iptables (обновленное)

ранее я уже писал про использование правил iptables в Debian-based операционках. в комментариях неизвестный подсказал удобное и, пожалуй, более правильное решение - прописывание напрямую скрипта загрузки в /etc/network/interfaces.

Итак, что нам понадобится:
1) установленный пакет iptables (проверить можно через "sudo dpkg -s iptables | grep -i status")
2) ваш прежний скрипт-файл правил (у меня он называется iptables.sh)

Проверяем и, если данное правило отсутствует, то добавляем в файл /etc/network/interfaces для нужного сетевого интерфейса (например для eth0):

pre-up iptables-restore < /etc/iptables.up.rules


ЗЫ: у меня оно было прописано для интерфейса eth0 как "post-up ..." - заменил на "pre-up ..."

теперь наш скрипт iptables.sh работает как и прежде - выполняем, проверяем, сохраняем.


Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!