пятница, 20 июля 2012 г.

Бесплатный антивирус для Windows ClamAV, плагин Eclipse для поддержки Lua, создание списка однотипных документов в Word 2003, создание архивов в Python, установка кодировки исходных файлов в Python


  • бесплатный антивирус для Windows ClamAV
  • плагин для Eclipse для поддержки Lua - ссылка для установки плагина
  • для создания однотипных документов в Word 2003 может быть использован механизм слияния, доступный через меню "Сервис-Письма и рассылка-Слияние"
  • для создания zip-архивов с помощью Python используется библиотека zipfile, там все просто, единственный интересный момент заключается в использовании кодировки cp866 для именования файлов внутри архива, т.е. необходимо преобразование вида: filename.decoe("cp1251").encode("cp866"), если для файла исходников используется кодировка cp1251, что должно быть отмечено в заголовке как: # -*- coding: cp1251 -*-

четверг, 19 июля 2012 г.

Программы моделирования бизнес-процессов, диаграммы Ганта в Google Docs, программа для создания текстовых квестов, операционная система Haiku


  • программы моделирования бизнес-процессов:
    • eBPMN, разработана на платформе Eclipse, имеет приятный пользовательский интерфейс
    • Bizagi Modeller
  • диаграммы Ганта в Google Docs можно сделать с помощью стороннего гаджета, размещенного по адресу http://www.viewpath.net/Website/Modules/Gantt.aspx
  • хорошая платформа для создания текстовых квестов INSTEAD, интересно, можно ли ее использовать для создания интерактивного квестового букваря, чтобы племянник наконец научился читать
  • операционная система Haiku, является развитием BeOS после того как ее бросил Palm

среда, 18 июля 2012 г.

Особенности передачи данных в последовательный порт в Google Chrome, ViewVC - просмотр репозитория исходных кодов через web, отключение Unity в Ubuntu 12.04


  • стабильный Chrome 20.0.1132.57 записи в com-порт ожидает данные для записи в порт в виде массива, Canary 22.0.1209.0 - в виде объекта ArrayBuffer
  • запись в последовательный порт на Windows не работает, так как непонятно какое имя следует вводить при создании соединения с портом. Стандартные имена (COM3, \\.\COM3 и многие другие) не подходят. В Linux все нормально работает с использованием стандартных имен портов (/dev/ttyS0), даже при отсутствии Canary.
  • ViewVC - средство для просмотра репозитория subversion исходников программного кода через Web
  • как отключить Unity в Ubuntu 12.04 написано здесь

вторник, 17 июля 2012 г.

Просмотр списка USB-устройств в Linux и Windows, замечания об упакованных приложениях Google Chrome


  • просмотр списка USB-устройств
    • в Linux - команда lsusb
    • в Windows - usbdeview
  • у Google Chrome есть особая нестабильная сборка, содержащая все последние изобретения Google, и называется Google Chrome Canary
  • подключение к USB-устройствам из упакованного приложения Chrome производится, как написано здесь, с использование vendorId и productId, определенных с помощью программ из первого пункта
  • в той же статье описан механизм использования последовательных портов:
    • в Google Chrome 20.0.11.32.57:
      • отсутствуют методы getPorts, setControlSignals, getControlSignals, их использование вызывает исключение
      • указанные в манифесте разрешения "appWindow", "usb" при загрузке приложения выдают предупреждения (видимо они также отсутствуют), но приложение работает
      • еще одна особенность связана с необходимостью указания в разделе app манифеста следующей конструкции:
        "launch": {    "local_path": "index.html"}где index.html - главная страница приложения
      • в отличии от Canary приложение запускается просто во вкладке, указание размеров окна приложения игнорируется
    • реакция Google Chrome Canary 22.0.1208.0 несколько иная:
      • конструкция launch не нужна
      • приложение запускается в отдельном окне с пустым заголовком и, чтобы посмотреть консоль, нужно щелкнуть правой мышью и выбрать "просмотр элемента", а уже там выбрать консоль
      • отсутствующие команды по работе с последовательным портом существуют, но выдают пустой массив, похоже, еще не реализованы


понедельник, 16 июля 2012 г.

MVC-frameworks для JavaScript, серверы Node.js и Express.js, различные средства для разработки на Java, виртуальный последовательный порт для Windows


  • для разработки упакованных приложений Google Chrome представляется удобным использование какой-нибудь MVC-среды, например:
    • YUI App Framework, компонент YUI, удобной и привычной библиотеки, по всей видимости, использовать библиотеку возможно, но несколько затруднительно, так как она в высшей степени модуляризирована, это удобно для обычных web-приложений, но для локального приложения процесс сбора зависимостей слишком продолжительный
    • сам Google рекомендует AngularJS
    • Mojito от Yahoo нет подходит вообще так как, предполагает наличие сервера
  • интересные сервера Node.js и Express.js, для разработки используется JavaScript и исполняется на сервере, содержат много разных компонент, позволяющих реализовать сетевые сервисы в виде JavaScript, похоже очень удобны для использования в процессе тестирования
  • различные средства для программирования на Java:
  • виртуальный последовательный порт для Windows, при установке создает два виртуальных порта (COM3, COM4), связанных друг с другом таким образом, что выход одного является входом другого и наоборот. Таким образом эмулятор оборудования использует один порт, а другой разрабатываемое нами приложение. Есть и другие способы использования этого виртуального порта, например, можно порт GPS-навигатора распараллелить и данные, получаемые от него, направлять в несколько приложений.

четверг, 12 июля 2012 г.

MVC-framework для JavaScript Mojito, программа анимации комиксов MotionArtist


  • библиотека Mojito, разработанная Yahoo, может быть использована для создания HTML5-приложений с помощью шаблона проектирования MVC, особенность в том, что с ее помощью можно разрабатывать приложения, исполняемые и на сервере, и на клиенте
  • программа создания эффекта просмотра комиксов человеком, презентаций и всяких прикольных штук SmithMicro MotionArtist, пока бесплатна, ключ высылают на e-mail, позволяет экспортировать получившееся ролики в различных видеоформатах, на facebook и youtube

среда, 11 июля 2012 г.

Средства для оптимизации CSS, JavaScript и HTML, переход с общего режима на УСН в программе 1С:Бухгалтерия 7.7


  • клиентская оптимизация различных элементов Интернет-сайта может выполняться следующими средствами:
    • обзорная статья с перечнем множества различных библиотек
    • обзор методик оптимизации различных элементов Интернет-сайта
    • и еще одна интересная статья на эту тему
    • библиотека оптимизация CSS - granule, есть возможность использования совместно с Ant
    • безусловный лидер (по крайней мере, для меня) YUI Compressor, оптимизирует (минифицирует) JavaScript и CSS
    • для оптимизации HTML - HTML Compressor
    • mod_pagespeed - модуль для web-сервера Apache для оптимизации элементов Интернет-сайта на лету, под OpenSolaris не скомпилировался, как я его только не мучил
  • При переходе с общей системы налогообложения на УСН в 1С:Бухгалтерии 7.7 можно использовать описанную здесь методику. Может быть, смотрел не ту версию конфигурации, но перечисленных файлов для конвертации данных в своей базе я не нашел. Но похоже, механизм предназначен для переноса остатков в из базы в базу на начало года, т.е. переход в течение года невозможен. Так же предполагается, что реализует нормальный переход, т.е. при настоящей смене режима налогообложения предприятием. Если учет для предприятия, применяющего УСН, ведется с общей Бухгалтерии,  следующий метод представляется более перспективным. Самым простым способом ведения учета в базе, предназначенной для общего режима, представляется использование Камин:Упрощенка, работает в общей бухгалтерии, комплексной и т.д., позволяет формировать книгу учета доходов и расходов при УСН, декларацию для УСН, есть возможность настройки различных аспектов отчетов.

вторник, 10 июля 2012 г.

Системы проведения онлайн семинаров, включение фрагментов html-страниц в jinja2, программа преобразования формата djvu в формат pdf с возможностью различных изменений исходного документа


  • различные системы проведения онлайн-семинаров:
  • включение фрагментов html-страниц в jinja2 (система и язык описания шаблонов, может быть использована при разработке приложений для Google AppEngine) осуществляется конструкцией вида: {% include "includes/analytics.html" ignore missing %}. В общем и так все понятно, фраза ignore missing означает, что в случае отсутствия фрагмента не будет выводиться ошибка.
  • хорошая программа преобразования djvu в pdf DJVU to PDF eBook converter, при преобразовании умеет выполнять всякие полезные действия, например: адаптацию для электронных книг, но самая полезная функция, приведение двухстраничных сканированных книг к нормальному одностраничному виду. Для использования программы следует остановить Java

понедельник, 9 июля 2012 г.

Включение фрагментов html-страниц в php и twig, использование Spring Bean DSL для определения сервисов, исключение классов из обработки загрузчиками классов groovy


  • включение фрагментов страницы в php осуществляется функцией include: например:
 <?php include 'footer.php' ?>
  • но в шаблонах twig php'ая функция include не работает, вместо нее следует использовать собственную функцию include, например:
{% include '::commons/analytics.html.twig' %}
указанный фрагмент должен находиться в каталоге app/Resources/views, в содержащемся в нем каталоге commons, начальные двойные двоеточия говорят о том, что не указано имя контроллера и действия (пример взят из сайта, разработанного на Symfony2), если указать имя контроллера и действия фрагмент должен находиться в привычном в этом случае для Symfony2 месте
  • сервисы и другие объекты, определяемые в spring-приложении средствами файлов *-context.xml, в grails-приложении определяются с помощью Spring Bean DSL, определение должно располагаться в файле resources.groovy в каталоге conf/spring grails-приложения или grails-плагина (так же существует возможность определения объектов с помощью xml, при этом файл называется resources.xml), ниже пара примеров определения объектов:
import org.apache.chemistry.opencmis.client.api.SessionFactory;
import org.apache.chemistry.opencmis.client.runtime.SessionFactoryImpl;

import biz.pokrovskoe.cmis.gclient.services.Repository;
import biz.pokrovskoe.cmis.gclient.services.RepositoryConnectionService;

beans = {
    // Здесь создается фабрика сессий с интерфейсом SessionFactory, используя
    // статический метод newInstance() класса SessionFactoryImpl
    repositorySessionFactory(SessionFactoryImpl) {bean ->
         bean.factoryMethod = "newInstance"
    }

    // Создается соединение класса RepositoryConnectionService с конструктором по умолчанию
    // и устанавливается свойства sessionFactory ссылкой на предыдущий определенный объект
    repositoryConnection(RepositoryConnectionService) {
        sessionFactory = ref("repositorySessionFactory")
    }

    // Объект класса Map, содержит свойства соединения с репозиторием
    def repositoryParameters = [
        'username': '******',
        'password': '******',
        'url': 'http://localhost:18080/alfresco/cmisatom ,
        repositoryId : '72549849-e033-4a8b-806f-7a377522ef76'
    ]

    // Объект класса Repository создается с помощью метода createSession, которому передается в качестве
    // параметров объект со свойствами соединения, определен выше
    repository(repositoryConnection: "createSession") {bean ->
        bean.constructorArgs = [repositoryParameters]
    }
}
каждая конструкция, определяющая объект начинается с его имени, используемом в дальнейшем для привязки объектов к контроллерам. Объект со свойствами соединения определен как def и не может быть использован для установки в качестве значений свойств сервисов или контроллеров grails-приложения, предназначен исключительно для инициализации других объектов в файле resources.groovy.
  • приведенный выше пример, к сожалению, все равно не работает, но уже на этапе исполнения приложения, причина, видимо, кроется в приведении с помощью загрузчиков классов groovy классов, используемых opencmis, к виду привычному groovy. Ошибка времени выполнения возникает из-за несоответствия типов класса Date. Решение проблемы я подсмотрел в open-cmis-plugin, что-то подобное я и пытаюсь сделать, только в отличии от open-cmis-plugin, собираюсь упростить взаимодействие с репозиторием, используя динамическую природу groovy. Итак, решение заключается в исключении из обработки библиотек при определении зависимостей от opencmis, обратите внимание на конструкции exludes:
compile (
    'org.apache.chemistry.opencmis:chemistry-opencmis-client-api:0.7.0',
    'org.apache.chemistry.opencmis:chemistry-opencmis-client-impl:0.7.0',
    'org.apache.chemistry.opencmis:chemistry-opencmis-commons-api:0.7.0'
) {
     excludes "jaxws-rt"
}

runtime (
     'org.apache.chemistry.opencmis:chemistry-opencmis-client-api:0.7.0',
     'org.apache.chemistry.opencmis:chemistry-opencmis-client-bindings:0.7.0',
     'org.apache.chemistry.opencmis:chemistry-opencmis-client-impl:0.7.0',
     'org.apache.chemistry.opencmis:chemistry-opencmis-commons-api:0.7.0'
) {
     excludes "jaxws-rt"
}

пятница, 6 июля 2012 г.

Форма М-15, запакованые приложения для Google Chrome


  • Форма М-15 для документа "Требование-Накладная" конфигурации "1С:Бухгалтерия 2.0" - скачать
  • Google предлагает интересный способ разработки приложений для запуска на компьютере пользователя (оконных приложений) - запакованные приложения (Packaged Apps). Запакованные приложения представляют собой zip-архив с включенными туда html-страницами, css-стилями, javascript. Т.е. это сайт, который открывается с диска компьютера пользователя с помощью браузера Google Chrome в режиме оффлайн. Помимо обычного JavaScript API Chrome предоставляет  API доступа к файловой системе, использования устройств через последовательный интерфейс и USB, использования сетевых ресурсов, хранения данных на стороне клиентов др. Также могут использоваться различные JavaScript-библиотеки, например, YUI, jQuery и т.д.. Такие приложения на данный момент не могут быть размещены в магазине Google Chrome Market, так как спецификация постоянно эволюционирует. Запускаемое приложение не имеет адресной строки, переходы между функциональными областями приложения осуществляются с помощью ссылок на страницах приложения. 

четверг, 5 июля 2012 г.

Управление зависимостями grails-приложения в среде STS

Для описания зависимостей grails-приложения или плагина используется файл BuildConfig.groovy в каталоге conf. Нужно раскомментировать строки: mavenLocal() и mavenCentral(), если используются и другие maven-репозитории, их можно добавить ниже, например: mavenRepo "http://repo1.maven.org".
Зависимости определяются в блоке dependencies этого же файла, например:
dependencies {
    provided: (
        [group: 'org.apache.chemistry.opencmis', name: 'chemistry-opencmis-client-api', version: '0.7.0'],
        [group: 'org.apache.chemistry.opencmis', name: 'chemistry-opencmis-client-api', version: '0.7.0']
    )
}
Кроме сферы определения зависимостей provided есть еще: build, compile, runtime, test. Сами зависимости определяются как в maven через указание группы, названия и версии артефакта.
После добавления зависимости нужно щелкнуть по проекту приложения правой кнопкой мыши и выбрать подпункт "Refresh Dependencies" пункта "Grails Tools".
Подробнее здесь http://grails.org/doc/latest/guide/single.html#ivy, есть и другие формы определения зависимостей.

среда, 4 июля 2012 г.

Удаленное сопровождение с Echogent, строковые функции MySQL, аспекты и экстраторы в Alfresco, CMIS в Alfresco, проекты Apache для работы с CMIS


  • компания www.echogent.com предоставляет EchoServer для организации службы удаленной поддержки с помощью VNC, стоимость услуги небольшая
  • функции для обработки строк в MySQL  http://www.mysql.ru/docs/man/String_functions.html
  • аспекты (aspect) в Alfresco могут быть использованы для добавления к метаданным контента или пространств определенного набора свойств и указания их значений, этот метод изменения метаданных может быть использован вместо создания собственных типов контента (моделей содержимого). Аспект после создания не появляется автоматически в интерфейсе Alfresco Explorer, чтобы это произошло потребуется изменение конфигурации Alfresco. Механизм экстракторов данных используется для извлечения данных из контента и добавления их в метаданные, существует предопределенный набор экстракторов, они настраиваются под конкретные нужды. Подробнее можно почитать здесь  http://wiki.alfresco.com/wiki/Metadata_Extraction
  • страница, посвященная CMIS-интерфейсу в Alfresco, размещена здесь http://localhost:8080/alfresco/service/cmis/. На ней приводятся разные полезные ссылки на ресурсы CMIS: спецификация, пошаговые руководства, интерфейсы для работы с репозиторием через CMIS. Еще одна полезная страница  http://wiki.alfresco.com/wiki/CMIS.
  • проекты Apache: Abdera (реализует спецификацию Atom) и Chemistry (предоставляет сервер и клиент спецификации CMIS) могут быть использованы для работы с репозиторием по спецификации CMIS

вторник, 3 июля 2012 г.

Ссылки на контент и пространства в Alfresco, захват экранных действий с помощью bugcam.com


  • Ссылка в Alfresco (shortcut) при нажатии ссылки "Create shortcut" в свойствах контента или пространства создаются в разделе "Shelf" (разделы переключаются слева сверху, где написано "Navigator")
  • Для захвата действий экрана можно использовать программу www.bugcam.com, бесплатно можно записывать 5 роликов в месяц, есть плагины для интеграции с системами отслеживания багов, типа trac и другими

понедельник, 2 июля 2012 г.

Система резервирования bacula, система создания сайтов для онлайн обучения moodle, различные модули для CMS Drupal, список и сравнение CMS, кнопка позвонить мне через Skype, программа для создания и редактирования иконок .ico IcoFX


  • Для резервирования данных может быть использована система  http://www.bacula.org, похоже, система интересная: позволяет через агентов на резервируемых компьютерах обеспечивать поблочное резервирование.
  • Сайты для онлайн обучения, создания курсов и т.д. могут быть разработаны с помощью проекта  http://moodle.org/, соответствует спецификации SCORM
  • Различные модули для Drupal:
    • pathauto - для автоматического создания url-ресурсов, дружественных для индексации поисковыми системами
    • menu_block - для создания вложенных блоков меню (подменю)
    • date - для поддержки типа данных Date в собственных типах содержимого (content types), реализует, через модуль views, всплывающие календарики для выбора значения
    • imce - для поддержки процедуры загрузки файлов
    • imce wysiwyg - связь предыдущего модуля с различными визуальными редакторами
    • wysiwyg - визуальный редактор страниц (есть и другие)
  • Сайт со списком различных CMS, есть сравнение CMS,  http://www.cmsmatrix.org/
  • Кнопку для звонка на свой Skype с сайта или из e-mail можно смастерить здесь  http://www.skype.com/intl/en/tell-a-friend/get-a-skype-button/
  • Программа для рисования иконок в формате .ico icofx. Как известно, формат .ico может содержать несколько изображений различного размера и использован для отображения в закладке веб-браузера в виде файла с именем favicon.ico