среда, 17 октября 2012 г.

Компрессор фоток

Нашел в глубинах диска программку которую писал еще студентом для себя, еще на старом билдере, и решил поделиться, может кому пригодится. Идея очень простая, после поездки на море у меня скопилось на цифровике много фотографий в формате JPEG с большим размером (от 2 до 3-4 Мб). Программка позволяет сжать их без видимой потери качества. Установки конечно не требует. Доступно сжатие файлов директориями и папками, можно задавать соотношение степени сжатия/качества. Файлы меньше 1 Мб можно исключить из обработки установкой соответствующей галочки. Конечно, есть множество других способов сделать то же самое, но этот лично для меня удобен и я пользуюсь им периодически до сих пор.

Скачать

суббота, 1 сентября 2012 г.

Небольшая автоматизация Lotus Notes

На работе у меня в качестве системы документооборота используется связка Lotus Domino+Notes, написанная на Java. В основном мне приходится пользоваться ее почтовым клиентом. И возникла потребность автоматизировать довольно рутинную операцию, заключающуюся в том чтобы из последних пришедших от рекламного агентства писем копировать в рабочий каталог почтовые вложения.

Для решения этой задачи программным путем я решил использовать Lotus Script. Это BASIC-подобный язык, довольно хорошо документированный. После недолгого изучения документации я создал простой Агент (Создание - Агент) и задал ему такие параметры:

Собственно, код:
Sub Initialize
Dim session As NotesSession 'определяем среду текущего скрипта, обеспечивающую доступ к переменным окружения и различной информации
Dim db As NotesDatabase 'определяем базу данных Notes
Dim dc2 As NotesDocumentCollection 'определяем коллекцию документов из базы данных, выбранных с определенным критерием
Dim doc2 As NotesDocument 'определяем документ в базе данных
Dim body As NotesRichTextItem 'определяем объект форматированного RTF текста (тело письма)
Dim rtnav As NotesRichTextNavigator 'определяем объект навигатора по RTF содержимому
Dim att As NotesEmbeddedObject 'определяем встроенный объект для аттачмента
Set session = New NotesSession 'получаем доступ к текущей сессии (поскольку для одного скрипта возможна только одна сессия)
Set db = session.CurrentDatabase 'текущая база данных
REM Ищем все документы со словами тнт, нтв, монтаж, полоса за сегодняшнюю дату
Dim searchFor As String
Dim createDate As Variant
Dim nowDate As Variant
nowDate = Day(Now)
searchFor = "тнт"
Set dc2 = db.FTSearch(searchFor, 0) 'поиск по ключевой фразе среди всех документов
If dc2.count > 0 Then
Call ProcessFoundedDocs(dc2)
End If
searchFor = "нтв"
Set dc2 = db.FTSearch(searchFor, 0) 'поиск по ключевой фразе среди всех документов
If dc2.count > 0 Then
Call ProcessFoundedDocs(dc2)
End If
searchFor = "монтаж"
Set dc2 = db.FTSearch(searchFor, 0) 'поиск по ключевой фразе среди всех документов
If dc2.count > 0 Then
Call ProcessFoundedDocs(dc2)
End If
searchFor = "Полоса"
Set dc2 = db.FTSearch(searchFor, 0) 'поиск по ключевой фразе среди всех документов
If dc2.count > 0 Then
Call ProcessFoundedDocs(dc2)
End If
End Sub

Sub ProcessFoundedDocs(dc2 As notesDocumentCollection)
REM перебираем циклом найденные документы
Dim x As Integer
Dim filepath As String
For x% = 1 To dc2.count
Set doc2 = dc2.GetNthDocument(x%) 'берем N-й документ из коллекции
createDate = Day(doc2.Created) 'получаем дату его создания
If nowDate = createDate Then 'если документ сегодняшний
If doc2.HasEmbedded Then 'если документ имеет вложение
Set body = doc2.GetFirstItem("Body") 'тело документа
Set rtnav = body.CreateNavigator 'создаем объект навигатора по RTF содержимому
REM Получаем вложения
Set att = rtnav.GetFirstElement(RTELEM_TYPE_FILEATTACHMENT) 'первое вложение
filepath$ = "C:\Files\" & att.Source 'определяем куда копировать
Call att.ExtractFile("F:\POLOSA__NEW__\polosa__9\polosa_rtf" & att.Source) 'копируем
Do 
Set att = rtnav.GetElement
filepath$ = "F:\POLOSA__NEW__\polosa__9\polosa_rtf" & att.Source 'определяем куда копировать
Call att.ExtractFile(filepath$) 'копируем
Loop While rtnav.FindNextElement(RTELEM_TYPE_FILEATTACHMENT)
End If
End If
Next
End Sub



воскресенье, 8 июля 2012 г.

mp4 и linux

Столкнулся с проблемой при воспроизведении mp4 файлов под linux. Даже всеядный VLC выдал ошибку такого содержания:


Не найден подходящий модуль декодирования:
VLC не поддерживает аудио или видео формат "mp4a". К сожалению, вы не можете это исправить.



После недолгих поисков в гугле и раздумий нашел простой способ борьбы с этим непотребством - установил пакет mplayer-vaapi. Тот же gstreamer-faad по отзывам справляется не хуже, но в репах я его не нашел. Такие дела.

суббота, 2 июня 2012 г.

Headset

Приобрел себе наконец-то нормальную Bluetooth-гарнитуру - rapoo h6060 headset. Сразу же заразил несколько приятелей идеей приобрести такую же.
Ну а чего, удобно, не привязан больше к компу, делаешь любые дела и одновременно слушаешь музыку или говоришь по скайпу. Дальность действия - до 10 м, но по опыту использования могу сказать что это справедливо при отсутствии на пути сигнала стен или других громоздких препятствий. Стоит зайти немного за угол и сигнал уже начинает звучать прерывисто. Кнопочки вполне удобны, микрофон встроен и совсем не выступает. Обошлась мне эта игрушка примерно в 1,5 килорубля. Что еще приятно, работы аккумулятора хватает на 16-20 часов, и перезаряжать не приходится сильно много.
Что касаемо софта, то тут возможны подводные камни. Драйверов с ними никаких не идет, да они и не нужны. Под windows с ними отлично работает BlueSoleil 6-8 версии. Только программа платная, и без активации не позволяет передать больше 2 Мб данных, что печально (Если кто знает другие рабочие варианты - отпишитесь). Еще неплохим вариантом является использование драйверов от WIDCOMM - на XP встало идеально.
 Под linux пришлось установить blueman, так как kde-шный KBluetooth не справился. Несмотря на то что он основан на GTK+, под кедами работает хорошо (нужно только запустить /usr/bin/blueman-manager.py). При поиске нужно зажать кнопку включения секунд на 5 и держать пока устройство не опознается. Дальше выбираем устройство в PulseAudio и дело в шляпе. В общем я доволен =\

пятница, 11 мая 2012 г.

Всплывающее окно с новостями средствами Python

Мне нравится экономить время. Как известно, у многих людей серфинг в интернете занимает львиную долю всего трафика, и отнимает время. Однако хочется быть в курсе последних новостей или публикаций на интересующих ресурсах.

Понятно, что для этого давно придумали RSS-агрегаторы и сервисы типа Google Reader. Понятно, что многие браузеры также на это способны.

Интерфейс Linux-агрегатора aKregator

четверг, 10 мая 2012 г.

Первая запись!

Моя нулевая первая запись в блоге. Здесь я буду писать в основном о том, что меня интересует, а это IT-тематика. Писать буду по настроению, не стремлюсь к какой-то строгой регулярности и системности в изложении. Для чего мне это нужно? Хочется периодически выплескивать свои мысли по тому или иному поводу и возможно кому-то будет интересно это наблюдать :-) Если же нет, это будет как тренироваться перед зеркалом, внесёт определенную долю порядка в голову (кто ясно думает тот ясно излагает, наблюдай-делай-учи других и т.д.) ну и сейчас это модно - иметь свой блог. Такие дела.

P.S. картинка для привлечения внимания :-)