Статья на Хабре
воскресенье, января 6
четверг, декабря 27
maven dependency. include scope
в документации к maven-dependency-plugin для copy-dependencies описан параметр includeScope, позволяющий указать какие зависимости копировать. но параметр принимает только одно указание scope. А что делать, если требуется указать несколько?
Всё просто - указывает несколько раз параметр includeScope.
например так:
Всё просто - указывает несколько раз параметр 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. Если нужна поддержка версии ниже, то пример тут
Вот для этого нам и пригодится недокументированный метод 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-файлом:


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

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

- Нажимаем кнопку «Добавить» и заполняем диалоговую форму так, как показано скриншоте ниже (Название пункта на ваше усмотрение ;) )

- сохраняем пользовательский тег
- Как воспользоваться. Выбираем слово, которое требуется обрамить в кавычки, и в контекстном меню кликаем нашу кнопку.

- В результате, выделенный текст обрамляется угловыми кавычками
- PROFIT
Если вам пригодилась статья, то отправьте 5 рублей автору. Спасибо!
вторник, августа 21
[UPDATE] Debian. установка mysql server
Решил чуток обновить пост
1) устанавливаем сервер MySQL
2) Выполняем bash-скрипт (исходник) с правами root. При выполнении запросится пароль от root-пользователя MySQL.
Скрипт избавляет нас от ошибки "Access denied for user ‘debian-sys-maint’@'localhost" и устанавливает кодировку UTF-8 по умолчанию
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 (при строгой типизации такого не происходит).
пример:
Теперь немного видоизменим программный код, приведя к Long переменную:
А теперь изменим тип только в вызове метода getDocumentByKey:
отсюда вывод: использовать тип Variant конечно удобно, но это как хождение по минному полю - путь короче, но не знаешь где рванёт ;)
ЗЫ: клиент Standard 8.5.3FP1
пример:
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
Маленькая строчка, но очень полезная в "быту":
[purge|remove] - команда на выш выбор.
Для чего нужна? Чтобы удалить большой (более 1-го ;) ) список пакетов из системы по фильтру %ЧТО_ИЩЕМ%.
последний раз столкнулся, когда у меня zend-server не захотел устанавливаться из репозитария. да и удаляться тоже не пожелал - ругался и требовал, чтобы я выполнил "apt-get -f install", в котором он тоже только ругался на зависимости. Пришлось "прибивать" пакеты вручную через dpkg, исправлять зависимости и заново устанавливать zend-server :)
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):
ЗЫ: у меня оно было прописано для интерфейса eth0 как "post-up ..." - заменил на "pre-up ..."
теперь наш скрипт iptables.sh работает как и прежде - выполняем, проверяем, сохраняем.
Итак, что нам понадобится:
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 рублей автору. Спасибо!
Подписаться на:
Сообщения (Atom)