О генерации DOC файлов

У каждой задачи есть несколько вариантов решения. И иногда в угоду скорости приходится выбирать не самый красивый, зато работающий и выполняющий поставленные перед ним цели. Итак, в один не очень прекрасный день возникла необходимость реализовать следующую функцию: у каждой (почти) страницы сайта должны быть автоматически сгенерированные копии в форматах DOC и PDF. С сохранением всех таблиц и картинок внутри контента. И если с PDF всё относительно просто (tcpdf наш друг и брат), то с DOC'ом возникла морока. Под катом — пример решения данной задачи.В голову приходили последовательно такие варианты решения:

  • Установить на сервер OpenOffice (сервер на FreeBSD) и разобраться с преобразованием. Красивое решение, но время поджимало.
  • Сгенерировать вместо DOC'а файлик в формате RTF, благо формат открытый и библиотек для работы с ним много. Минус – готового преобразователя HTML->RTF (с, напомню, сохранением картинок и таблиц) я не нашел, а писать свою – для этого нужен определённый запас времени
  • Не очень честный — просто “в лоб” сохранить HTML страницу с расширением DOC – Word 2003 и выше откроет без проблем, проверено. Плюс – отличнейшая скорость преобразования и сохранение всей верстки. Минус – картинки таким образом не сохранить (да и честность метода несколько хромает).

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

Не очень честная генерация DOC файлов на PHP 

Появилась бы эта статья прошлым летом, когда мне надо было автоматически генерировать файлы doc по шаблону, цены бы ей для меня не было!

Читать далее »

Какие функции HTML5 использовать?

Иногда не совсем понятно какие функции HTML5 уже поддерживаются всеми современными браузерами и их можно использовать безо всяких дополнительных интрументов, а какие надо использовать аккуратно, попутно встраивая в сайт напильник для браузера, чтобы модная фишка могла нормально отображаться в нем. Нашел недавно сайт http://html5please.us/, в котором просто и понятно расписано что и как. Есть функция, для нее отображается можно ли ее использовать просто так, или надо обязательно использовать с ней дополнительный интрумент. Удобно. 

Читать далее »

Про организацию javascript файлов

Идея следующая. Да, у нас много JavaScript, да он как-то разбит, да нам надо подключать часть его на страницах по каким-то правилам. Пусть результирующий HTML, который получился в результате отработки всей нашей логики, и будет конфигом того, что нужно подключить. 

Поясню. У нас есть тег div, включающий какой-нибудь законченный блок — допустим, это будет список папок, т. е. в этом диве лежит список папок. Первый шаг, мы помечаем с помощью класса — этот див является компонентом. Это означает, что js-движок будет искать его по этой отметке. Вторая строчка — onclick, там указан return, и какой-то хеш. В этом хеше находится описание того, что это за компонент.

В результате нам надо найти компонент в DOM-дереве. Определить, что это за компонент (в моем случае информация о типе находится в onclick). Подключить js-файлы, чтобы все это заработало.

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

Теперь самая интересная часть, то что записано в onclick. Там можно зашить любую информацию, которая вам нужна для инициализации. В моем случае это тип компонента, по содержимому хеша я понимаю, что это компонент по работе с папками. Достать его очень легко.

Как не утонуть в мегабайтах javascript кода? 

Действительно очень удобное и мастштабируемое решение. Как будет шанс попробую его в своих проектах. 

Читать далее »

Статья про LESS на Хабре

LESS

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

LESS: программируемый язык стилей

Для тех, кто хочет разобраться в LESS - самое оно!

Читать далее »

Twitter bootstrap

Twitter bootstrapКогда надо по-быстрому сделать что-нибудь красивое, то очень помогает Twitter Bootstrap. Что это такое? Это файлики .css и .js, которые помогут сделать ваши элементы интерфейса как у твиттера. То есть кнопки, списки, поля ввода и так далее станут выглядеть круто, современно и красиво при минимальных усилиях с вашей стороны.

Подробное описание на английском, вместе с примерами: http://twitter.github.com/bootstrap/ 

Также имеется поддержка Less. 

Читать далее »

Вышел MODx 2.2

MODx Revolution 2.2Пока идет сессия не заметил выход новой версии MODx Revolution 2.2, хотя давно еще видел всякую предварительную информацию о нововведениях. Надо сказать, что казались они очень вкусными и этого релиза MODx я ждал, наверно, как никакого другого. И не прогадал!

 

Список нововведений: 

  • Источники медиаконтента: вы больше не ограничены вашим локальным сервером. Источники медиаконтента позволяют вам объединять дерево файлов с чем угодно — отдельным каталогом, хранилищем Amazon S3 и пр.
  • Статические элементы: храните все статические элементы (Чанки, Сниппеты, Шаблоны и пр.) в файловой системе или где-то в другом месте с возможностью их редактирования с помощью чего угодно.
  • Пользовательские панели: создавайте и организовывайте экраны приветствия Менеджера, а также создавайте и подключайте новые виджеты Панели.
  • Крупные улучшения пользовательского интерфейса, в т.ч. более «чистый» вид и ускоренное время загрузки.
  • Добавлен импорт/экспорт Политик доступа и их Шаблонов для разработчиков и администраторов сайта. Это означает, что теперь вы можете настроить их одномоментно для последующего повторного использования на других сайтах и проектах.
  • Скриптовая установка или установка из командной строки для тех, кто хочет продолжать оставаться гиком.
  • Многие внутренние улучшения Менеджера делают его проще и улучшают возможности для его расширения.
  • Добавлена возможность создания пользовательских типов ресурсов — теперь не только единственный тип по-умолчанию, вы можете иметь типы для разных целей таких, как запись блога, галерея, форум, мероприятие и т.д.
  • Добавлен поиск для ускорения нахождения любых документов по ключевому слову — прямо вверху дерева ресурсов, больше никакого сканирования и охоты за этими старыми статьями!
  • Улучшена эффективность парсера и исполнения, добавлено более 600 юнит-тестов, других оптимизаций ядра.
  • Более 160 разрешенных задач, тонны исправленных багов!

Только первые два пункта заставляют сердце радоваться. С нетерпением жду, когда можно будет все это применить на практике :)

Ну и напоследок несоколько ссылок:

Have fun!
Читать далее »

Про организацию веб-разработки

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

  • получать от деятельности этой компании доход,
  • получать удовольствие от этой работы и результатов.

Основываясь на том, что мы уже умеем и хотим делать, наша компания должна заниматься:

  • в первую очередь программированием проектов разной сложности для web (начиная от больших программных комплексов и вплоть до сайтов-визиток объемом в несколько страниц),
  • вести собственный хостинговый сервис для своих нужд и нужд своих клиентов,
  • предлагать услуги по системному администрированию удаленных серверов (под хостинг в первую очередь), сервисов и баз данных,
  • делать web-дизайн,
  • заниматься поддержкой, SEO и консультированием в области web-технологий.

Как должна работать компания по web-программированию 

Очень полезные тезисы в статье. 

Читать далее »

Несколько систем управления проектами

Если Вы думаете, что системы для управления проектами - это инструмент, используемый только в крупных компаниях от 500 человек, вы будете сильно удивлены, узнав, что по статистике 70% пользователей подобных систем - малый и средний бизнес (компании от 10 до 300 человек), а также фрилансеры.

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

При этом, конечно, стоит понимать, что  масштабные неповоротливые системы, обслуживающие крупнейшие компании мира, вряд ли приживутся в командах из 7-10 человек. Впрочем, также и крохотный таск менеджер никогда не удовлетворит потребности многоэтажного офиса Google. Поэтому, прежде чем приступать к обзору систем для совместной работы небольших команд, предлагаю определить основные критерии отбора этих самых систем.

Итак, представим, что я руководитель команды веб-дизайнеров из 10 человек.

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

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

7 систем управления проектами для небольшой команды

Решил попробовать Мегаплан и Планфикс. Вроде многообещающе. 

Читать далее »

Создание скроллбара как у Gmail

Сегодня мы рассмотрим небольшой пример оформления скроллбара для браузеров на движке WebKit (Chrome, Safari).

Сразу хочу сказать, что я не сторонник изменения внешнего вида скролла, всё-таки это стандартный элемент управления и большинство пользователей привыкли к его виду. Злоупотребление возможностью его изменения может усложнить работу с сайтом.

Тем не менее, в некоторых случаях создание собственного дизайна для скроллбара полностью оправдано. Возьмем в качестве примера структуру страницы Gmail.

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

CSS: оформление скроллбара в стиле Gmail

Единственное жалко, что только для WebKit, а так хорошая вещь. 

Читать далее »

Удиви друзей при помощи impress.js

Никогда не были на сайте prezi.com? Попробуйте, при помощи него можно создавать прикольные презентации. Глядя на этот сайт у авторов impress.js появилась идея сделать такое же, но только при помощи JS+CSS3. Результат можно посмотреть тут. Довольно впечатляюще :)

Пока что данная библиотека разработана с заточкой под webkit браузеры (Chrome, Safari), но презентация также должна заработать в браузерах с поддержкой CSS3 3D transforms and transitions (Firefox, IE10).

Если браузер не соответствует требованиям, то к элементу #impress добавляется класс impress-not-supported, чтобы можно было сделать обработчик ошибки. 

Скачать можно отсюда https://github.com/bartaz/impress.js

Читать далее »
Scroll To Top