• До свидания офис. Азия и фриланс, мой кисло-сладкий соус

      Привет!
      В этой статье я хочу рассказать вам про мой путь из офиса во фриланс: мотивация, зарождение идеи, поставленные цели, вехи пути и полученный опыт.

      Начать надо с главного. Я гедонист. Нет, правда! В хорошем смысле слова: сценарий «обколоться анашой» и тупеть для меня не очень интересен. Просто я думаю, что все в жизни должно быть классно и интересно. А если нет — сделай так чтобы было.
      Этот текст я начал писать в ночном тайском автобусе, следующем с острова Пхукет в Бангкок. Одно из ребер графа Москва-Бангкок-Хошимин-Муине-Паттая-Пхукет-Панган-Самуи-Бангкок-Бали-Москва, растянутого во времени на 5 месяцев.



      Одно важное замечание: я не сбегал, не валил, не заводил трактор.
      Просто однажды осознал, что радость жизни теперь можно черпать большей ложкой, и эпоха офиса может быть сменена на хайлевел фриланс.
      Что такое хайлевел фриланс? Это когда работаешь за нормальные 20-30 баксов в час; не общаешься с заказчиками-гопниками; не кидаешь, не ждешь кидалова; работаешь с полной отдачей меньше 40 часов в неделю (кто работает в офисе реальные 8 часов и не сгорает через полгода?); контрибьютишь в open-source проекты по мере надобности и заводишь свои… потому что хочется это делать!

      Читать дальше →
    • Как вы ищете фриланс-заказы на биржах?

        Всегда интересовало, как опытные товарищи ищут заказы на биржах фриланса.

        image

        Когда я сам стал фрилансером (уехав перед этим в азию и бросив офисную работу), мне пришлось попотеть, пока я вырабатывал оптимальную для себя стратегию поиска работы.

        А как это делаете вы?
      • Использование Liquibase без головной боли. 10 советов из опыта реальной разработки

        • Tutorial
        kdpvLiquibase — это система управления миграциями базы данных. Это вторая статья о Liquibase, на этот раз содержащая советы «боевого» использования системы. Для получения базовых сведений подойдет первая статья-перевод «Управление миграциями БД с Liquibase» (ссылка).

        Как и многие инструменты, служащие для облегчения жизни разработчиков программного обеспечения, Liquibase имеет «обратную сторону медали», с которой приходится рано или поздно столкнуться.

        Вот 10 вещей, которые в определенный момент работы с Liquibase были для меня открытием.

        1. Версионность приложения должна быть отражена в структуре папок миграций


        Если вы не будете следовать этому правилу, файлы чейнджлогов быстро украсят папку миграций своим количеством и необычными именами.
        На данный момент для себя я выработал оптимальную стратегию именования файлов и папок. Вот она:

        /db-migrations
            /v-1.0
                /2013-03-02--01-initial-schema-import.xml
                /2013-03-02--02-core-data.xml
                /2013-03-04--01-notifications.xml
                /changelog-v.1.0-cumulative.xml
            /v-2.0
                ...
                /changelog-v.2.0-cumulative.xml
            /changelog.xml
        

        Подробнее:
        Читать дальше →
        • +17
        • 74.6k
        • 9
      • Управление миграциями БД с Liquibase

        • Translation
        • Tutorial
        Не так давно мы начали внедрять Liquibase в качестве инструмента миграций схемы данных в большинстве наших проектов, новых и уже существующих. Система миграций схемы базы данных Liquibase хороша тем, что позволяет использовать системы контроля версий, VCS, (например, Git) для управления ревизиями базы данных приложения. Говоря более точно, VCS содержит описание изменений, необходимые для миграции схемы базы данных из одной ревизии в другую.

        Хотя миграция схемы базы данных кажется довольно простой задачей изначально, задача становится сложнее после того, как появляется желание откатывать изменения схемы без ее создания заново.
        Кроме схемы и операций DDL, Liquibase позволяет мигрировать данные приложения, с поддержкой наката изменений данных и их отката.
        Читать дальше →
      • Шаблоны *.docx с использованием скриптлетов Groovy

          image

          В одном из своих проектов мне понадобилось автоматизированно формировать документы договоров для клиентов. Договор представляет собой юридический документ длиной около 10 страниц и является шаблоном: в нужных местах подставляются данные конкретного клиента.

          Задача


          Первичные требования были такими:
          В сложном стилизованном документе doc или docx вывести нужную информацию в помеченных местах.

          В дальнейшем они были уточнены и расширены:
          • В сложном стилизованном документе docx вывести данные в помеченных местах.
          • Разметка вывода данных должна быть похожа на скриптлеты: ${}, <%%>, <%=%>.
          • Данными для вывода могут быть объект. Нужна возможность обращения к полям.
          • Для вывода использовать один из скриптовых языков: Groovy, JavaScript.
          • Нужно иметь возможность выводить списки объектов в таблицы, в каждой ячейке отображая поля.


          Имеющиеся решения


          Оказалось, что имеющиеся в области продукты (я говорю про платформу Java), не решают поставленную задачу. Ниже краткий обзор продуктов:

          Jasper reports

          В качестве шаблона использует файл xml-разметки *.jrxml. Файл разметки документа + данные (как из БД, так и Map параметров) отдаются процессору, который формирует любой из следующих форматов: PDF, XML, HTML, CSV, XLS, RTF, TXT.
          Не устроило:
          • Это не WYSIWYG, даже при наличии iReport — визуального средства формирования jrxml-файлов.
          • Надо хорошо изучить JasperReports API, чтобы создать и стилизовать сложный шаблон.
          • Не выводит в нужном формате. Можно и PDF, но хотелось бы иметь возможность потом поредактировать выходной документ.
          Читать дальше →