Показаны сообщения с ярлыком Программы и инструменты. Показать все сообщения
Показаны сообщения с ярлыком Программы и инструменты. Показать все сообщения

суббота, 26 мая 2012 г.

Why do I hate Maven?

Мавен упорно позиционирует себя как билд тул, хотя на самом деле он ни что иное как менеджер пакетов и конфигураций.
Т.е. через мавен я не могу через мавен ставить например ява пакеты как программы, а не как библиотеки.
Не могу например grails или какой нибудь sdk скачать и установить.
Когда я работаю с мавеном у меня постоянно всплывают воспоминания и дебиановском пакетном менеджере.
Мавену явно нужно было брать с ниго пример, там очень много крутых вещей в документации таится о которой не все линуксоиды знают (я помню меня сильно впечатлил строгость формата changelog файла).

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

Документация к мавену ужасна. Только гугл, только stack-overflow.

Кодировка исходников и версия джавы под которую они написаны прописывается неявным образом:
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jdk>1.6</jdk>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupid>org.apache.maven.plugins</groupId>
                <artifactid>maven-resources-plugin</artifactId>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupid>org.apache.maven.plugins</groupId>
                <artifactid>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>${jdk}</source>
                    <target>${jdk}</target>
                    <compilerversion>${jdk}</compilerVersion>
                </configuration>
            </plugin>
        </plugins>
    </build>

И даже тут есть проблема: нужно укзывать версию стандартных плагинов. Какую ёё прописывать непонятно.

Упаси бог написать вам свой java agent - они не поддерживаются на уровне конфигурации мавена. И даже плагина ещё нет.
В итоге для прогона юнит тестов библиотеки javaagent приходится изголятся таким образом:
<plugin>
                <groupid>org.apache.maven.plugins</groupId>
                <artifactid>maven-surefire-plugin</artifactId>
                <configuration>
                    <forkmode>pertest</forkMode>
                    <argline>-javaagent:${project.build.directory}${file.separator}${project.build.finalName}.${project.packaging}</argLine>
                    <workingdirectory>${project.build.directory}</workingDirectory>
                </configuration>
            </plugin>
И при первом прогоне оно не работает, посокольку джарника ещё нет, а мы уже к нему обращаемся.
Но как ни странно стадия тестов от этого не валится и он таки билдитcя. Мрак.

И так же тут всплывает ещё одна проблема: в пропертях мавена нет пути к сбилдженому артефакту.
Приходится самому её имитировать:
${project.build.directory}${file.separator}${project.build.finalName}.${project.packaging}

Кстати сами проперти в отдельный файл никак не вынесеш, как это сделано в анте.

settings.xml явно не самая удобная вещь. И непонятно почему репозитории не перенесены туда.

Не до конца понятный build lifecycle:
  • clean и site запускается только вручную, по сути это самостоятельные таргеты а пункты лайфцайкла.
  • install это совсем не то что что и install в make.
  • deploy тоже у всех ассоциируется немного с другим процессом.


С версииированием артифактов всё тоже не всегда хорошо. Дописывать alpha beta к релиз пакетам геморно (через плагин). А ведь это вполне стандартная система версиирования.

Вообщем недостатков много, и всё равно в основе мавена лежит очень правильная идея: описывать проект, а не процесс его создания. Это очень правильная философия.

понедельник, 16 января 2012 г.

Instant mesenger

Лично я вот очень люблю всякие там аськи.
Но вот у всех них мне не хватает примерно одно и того же функционала.
  • кнопка сразу отправить ссылку не открывая окна беседы, отправить содержимое буфера
  • автодетекция даты с подсветкой календаря, автодетекция телефонов
    в списке собеседников хочу много полей: ф.и.о, ник, аватара, должность.
  • нормальный поиск контактов
  • оправка email прямо из окна сообщений
  • отправка сообщений с вложеными файлами (как в email)
  • массовая рассылка
  • отправка сообщений по расписанию
  • заготовленные фразы
  • тайм трекинг
  • интеграция с Tomboy, Вконтакте, Last.FM., багтрекерами, IDE
  • файловые хранилище на сервере
  • веб сервер через XMPP
  • сообщения открытки
Часть этого есть во всяких плагинах, часть доступно через другие инструменты, но вот хотелось бы себе иметь всё в одном флаконе :(

четверг, 24 марта 2011 г.

Не показываются иконки меню в Ubuntu

В Ubuntu 9.10 и всех поздних дистрибутивах (10.4, 10.10), по-умолчанию выключено отображение иконок в пунктах меню. Естественный вопрос «какого хрена?» остался без убедительного ответа.
Лечится включением галочки в Система->Параметры->Внешний вид->вкладка Интерфейс->Показывать значки в меню.
За решение спасибо leolik'у.

четверг, 30 сентября 2010 г.

Проблема с установкой в Windows PHP 5.2.14 к Apache 2.2

Только что решил проблему пишу её решение тем кто может с ней столкнутся.

Я установил HTTP сервер Apache 2.2 через MSI установщик скачанный с офф сайта.
Всё заработало, It works!
Затем мне понадобилось прикрутить PHP к нему. Скачал его MSI установщик с офф сайта, установил но при этом апач вообще перестал запускаться. Как оказалось из-за кривого установщика PHP. Для PHP нужны всякие там dll'ки которых может не быть на вашем компьютере. Их нужно докинуть в папку где установлен PHP (C:\Program files\PHP).


Теперь подробнее об установке:
1. Сначала установщик PHP спросит вас куда его устанавливать. По моему горькому опыту советую никогда не менять программ место установки если это возможно. PHP будет ставится в Program Files - отлично, это правильно.
2. Следующим шагом он вас спросит к какому веб серверу его нужно прикрутить:
Select web server you wish to setup.
Выбираем наш Apache 2.2.x module.

3. Установщик спросит вас путь к папке где лежит файл настройки апача httpd.conf чтобы он прописал путь к себе внутри него. Выбирайте папку conf из папки в которую вы установили апач (C:\Program Files\Apache Software Foundation\Apache2.2\conf)

4. Далее установщик запросит какие компоненты ставить. По умолчанию почему то отключены все Extensions (CURL, MySQL и др.) и Extras (документация) - не забудьте их выбрать для установки!

Отлично PHP мы установили, но при рестарте апача он тупо не загружается. Причём никаких ошибок в логах нет.

Зато когда я попытался запустить файл php.exe я получил ошибку:


---------------------------
php.exe - Системная ошибка
---------------------------
Запуск программы невозможен, так как на компьютере отсутствует OCI.dll. Попробуйте переустановить программу.

...ага то-есть PHP не может найти dll'ки для запуска. zlib.dll, mozcrt19.dll, OCI.dll - все эти библиотеки нужно докинуть в папку с PHP. Я их взял от из папки Firefox. Причём например OCI.dll - это для работы с базой Oracle. Так же там много других таких dll'ок которые всё равно не пригодятся. Поскольку мне он не нужен то я зашёл в файлик конфигурации PHP php.ini и закоментировал все строчки которые загружают дополнения к пхп:

Например:
[PHP_PDO_OCI]
extension=php_pdo_oci.dll
[PHP_PDO_OCI8]
extension=php_pdo_oci8.dll
[PHP_PDO_SQLITE]
extension=php_pdo_sqlite.dll
[PHP_PDO_SQLITE_EXTERNAL]
extension=php_pdo_sqlite_external.dll
закомментируйте указав ; вначале строки:
[PHP_PDO_OCI]
;extension=php_pdo_oci.dll
;[PHP_PDO_OCI8]
;extension=php_pdo_oci8.dll
;[PHP_PDO_SQLITE]
;extension=php_pdo_sqlite.dll
;[PHP_PDO_SQLITE_EXTERNAL]
;extension=php_pdo_sqlite_external.dll
Всё, после этого файл php.exe должен запускаться а с ним должен запускаться и апчач.

Если нужна помощь обращайтесь в комментарии, постараюсь помочь. Удачи

пятница, 25 сентября 2009 г.

Google календарь c украинскими праздниками

Гугл предоставляет пользователя свой онлайн календарь. Меня расстроило что нет нигде готового календаря с украинскими праздниками. Я нашёл их перечень и создал на их основе календарь.
Чтобы добавить календарь, используя его адрес, достаточно выполнить следующие действия.
  1. В верхней части списка календарей, расположенного слева, нажмите на кнопку со стрелкой вниз "Добавить" и выберите "Добавить по URL".
  2. Введите в поле соответствующий адрес календаря в формате iCal.
  3. Нажмите "Добавить".
  4. Всё.
Удачи.