Pull to refresh
5
0
Send message

HTML с картинками в DOC на PHP собственными руками

Reading time6 min
Views6K
В статье Не очень честная генерация DOC файлов на PHP был описан описан способ генерации DOC файла при помощи генерации MHT (MIME HTML) используя стороннюю библиотеку. Сегодня я расскажу о своей собственной генерации в этот формат. Плюсы моего способа следующие:

1) В OpenOffice читаемый текст и картинки.
2) В Word открывается файл в электронном виде, а не на весь экран.
3) Наш скрипт будет принимать HTML и отдавать сразу DOC файл на скачивание.

Ко всему прочему, вы поймете как преобразовать голый HTML в MHT собственными руками. Ошибки если и будут, то копаться в коде будет проще.

Начнем с функции, которая отдаст DOC файл на скачивание и будет работать во всех браузерах и со всеми протоколами(у меня с этим были проблемы):

/* Отсылаем файл на закачку */

function send_download($filename, $charset = 'cp1251')
{

    header ($_SERVER["SERVER_PROTOCOL"] . ' 200 OK');

    if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
        $UserBrowser = "Opera";
    elseif (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
        $UserBrowser = "IE";
    else
        $UserBrowser = '';
 
    $mime_type = ($UserBrowser == 'IE' || $UserBrowser == 'Opera') ?
    'application/octetstream' : 'application/octet-stream';

    header("Content-Type: application/msword; charset=".$charset);


    $ua = (isset($_SERVER['HTTP_USER_AGENT']))?$_SERVER['HTTP_USER_AGENT']:'';

    $isMSIE = preg_match('@MSIE ([0-9].[0-9]{1,2})@', $ua);
    if ($isMSIE) 
    {
        header('Content-Disposition: attachment; filename="' . $filename . '"');
	header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
        header('Pragma: public');
    } 
    else 
    {
        header('Content-Disposition: attachment; filename="' . $filename . '"');
        header('Pragma: no-cache');
    }
}


Читать дальше →
Total votes 13: ↑6 and ↓7-1
Comments9

Наш чек-лист для форм на сайтах

Reading time6 min
Views88K
Это вторая часть наших чек-листов. В первой мы подробно разобрали требования к фильтрам. В отличие от фильтров, требования к пользовательским формам более универсальны. Однако нам потребовалось несколько жарких дискуссий, чтобы выработать более-менее единый формат. Видео с HolyWarModeOn рассказывает о типовых ошибках юзабилити в проектах. Сразу под роликом ищите подробный чек-лист для форм на сайте.



Читать дальше →
Total votes 27: ↑14 and ↓13+1
Comments11

Дайджест статей по анализу данных и big data

Reading time2 min
Views33K
Частенько читаю Хабр и заметил что в последнее время появились Дайджесты новостей по многим тематикам, таким как веб-разработка на php, разработка на Python, мобильные приложения, но не встретил ни одного подборки по популярному сейчас направлению, а именно анализу данных и big data.

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

Кого заинтересовала данная тема прошу подкат. А также жду замечаний, пожеланий и дополнений, буду очень рад обратной связи.

Читать дальше →
Total votes 45: ↑42 and ↓3+39
Comments15

Мифы про юзабилити и его тестирование

Reading time5 min
Views39K
Очень многие тестировщики, с которыми я обсуждала вопросы юзабилити, имеют об этом понятии очень смутное представление. Давайте развеем основные мифы про юзабилити и его тестирование:
Читать дальше →
Total votes 17: ↑13 and ↓4+9
Comments25

Searchanise: Поиск для e-commerce, бесплатно (без СМС)

Reading time3 min
Views14K
Привет, Хабр!

Представляем вашему вниманию Searchanise — поисковый сервис, созданный специально для интернет-магазинов. Бесплатный, совсем-совсем.

Проект уже далеко не в тестинге, а вполне в продакшне: прямо сейчас полторы тысячи онлайн-магазинов используют Searchanise. И это только начало (по крайней мере, мы на это надеемся).

Searchanise

Читать дальше →
Total votes 16: ↑15 and ↓1+14
Comments22

Несколько интересностей и полезностей для веб-разработчика

Reading time4 min
Views62K
Всем доброго времени суток. Как-то так получилось, за последнее время я увидел много интересных и полезных инструментов/библиотек/событий, которыми я хотел поделиться на Хабре. Все эти темы по отдельности, на мой взгляд, не заслуживали целой статьи. Но каждая из них достойна внимания и может кому нибудь пригодиться. В итоге получился небольшой дайджест:

Prepros



Великолепное приложение препроцессор для CSS, JS. Компилирует файлы следующих типов: LESS, Sass, SCSS, Stylus, Jade, Slim, Coffeescript, LiveScript, Haml. Минифицирует JS на лету, при каждом изменении файла. Оптимизирует изображения. Доступен для Windows и Mac, а также как расширение для Chrome. Плюс ко всему создает HTTP сервер, для тестирования сайта на разный устройствах. Бесплатная замена CodeKit'у и Ghostlab'у вместе взятых, что в сумме позволит Вам сэкономить $75.

Читать дальше →
Total votes 87: ↑72 and ↓15+57
Comments23

Мы делаем мечту или «Дальнобойщики-2 — старый драйв в новой упаковке»

Reading time2 min
Views28K
Добрый день, уважаемые хабражители. Дело в том, что совсем недавно я натолкнулся и примкнул к одному очень интересному для меня проекту. Группа энтузиастов, фанатов симуляторов автоперевозок, разочаровавшись в игре «Дальнобойщики-3», решили создать нечто свое, знакомое из детства. Проект носит название «Hard Trucker».Если вас заинтересовало, прошу под кат.
Читать дальше →
Total votes 153: ↑143 and ↓10+133
Comments74

Думайте при разработке

Reading time16 min
Views51K
Недавно наткнулся на ошибку в Android приложении Яндекс.Метро. Если бы был чемпионкой мира по синхронному плаванию, то обязательно спросил бы: «Кто создавал программу „для галочки“? Кто работал „на отшибись“? Кто слабое звено?». Недоумение вызывала не сама ошибка, а то, что она попала в приложение и всё ещё не исправлена.

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

Начать хотелось бы с главы «Изучение знаменитых (и не очень знаменитых) ошибок» из книги «Наука отладки». Если ещё не читали, то рекомендую прочитать. В этой главе описаны «глупые» ошибки и стечения обстоятельств, которые стоили жизней и миллионы долларов. Все эти ошибки объединяло то, что выявляющий их тестовый сценарий было чрезвычайно сложно воспроизвести, в результате многие проверки были просто пропущены.

В статье же мы будем рассматривать распространённые приложения, которые протестировать может любой участник команды. Давайте проведём небольшой эксперимент. Если у вас нет Android устройства, то попросите минут на десять у коллег или друзей. Скачайте приложение Яндекс.Метро и попробуйте его протестировать. Интересует актуальная на текущий момент версия 1.63 от 02.11.2012 сборка 159 (на Google Play стоит дата 21.01.2013). Для корректности проверки предлагаю снять галочку «Автообновление» в настройках Google Play.

Проверять будем основную функцию: нахождение маршрута между двумя станциями метрополитена Москвы. Посмотрите на карту метро. Подумайте, что следовало бы протестировать в приложении, что могло бы быть неправильно реализовано. Явной ошибкой будет сообщение «Маршруты не найдены», что некорректно, поскольку нет изолированных станций.

Эта же ошибка может проявить себя не так явно:
небольшая подсказка
Программа отображает маршруты между двумя станциям, но наиболее очевидный (и короткий) не находит.


Продолжение
Total votes 182: ↑134 and ↓48+86
Comments76

Lego представила Mindstorms EV3

Reading time2 min
Views148K
Четвёртого января 2013 года LEGO представила третью версию популярного конструктора Mindstorms — EV3:

image
Понятно, что кубики LEGO остались практически неизменными, а вот «мозг» компьютера претерпел значительные изменения и обещает стать любопытной игрушкой не только для детей, но и для взрослых гиков (как это впрочем и было с предыдущими версиями конструктора).
Читать дальше →
Total votes 93: ↑93 and ↓0+93
Comments63

Город как система: проектируем сами

Reading time22 min
Views8K
Доброго времени суток, хабраюзеры.
Как-то, года три назад, гуляя по центру Санкт-Петербурга (сам из Екатеринбурга), я подумал — почему центр Петербурга в разы приятней? Сравнил с Москвой, Афинами, другими крупными городами… Пришёл к промежуточному выводу, что человеку необходимо место для прогулок и широкая перспектива.

Полный же вывод сформировался чуть позже, когда мы шли с другом уже по нашему городу. Он немного технарь (в плане интереса к точным наукам), но скорее музыкант и художник. Он говорил об архитектуре: «Одно с другим не сочетается! Они вообще смотрят на окружающие дома?!» Я думал о системологии или, когда не говорят о науке, о системном подходе.
Тут в голове промелькнула мысль: «А что, если… Хотя почему если?! Город — это система, её нужно проектировать, а не развивать по мере необходимости». Я поделился мыслями с другом. Он их поддержал. Так бы всё и забылось, если бы не объявление о каком-то конкурсе, который уже исчез из названия.

Важно не это: мы решили проанализировать крупные города и рассмотреть их как систему: какие предъявляются требования, как они могут быть удовлетворены, как одно влияет на другое и так далее… Кому интересно — добро пожаловать под кат.
Читать дальше →
Total votes 18: ↑15 and ↓3+12
Comments14

Принудительно внедряем Helpdesk: опыт «Корпорации Зла»

Reading time36 min
Views148K
Что такое хелпдеск? Система управления заявками пользователей, личинка сервисдеска, первый шаг эникейщика на пути к ITIL, бла-бла-бла…



Литература, посвященная вопросу организации системы управления инцидентами (заявками пользователей, проблемами в ИТ — называйте, как хотите) делится на две категории. Первая включает в себя технические низкоуровневые мануалы, посвященные, в основном, тонкостям настройки конкретных решений. Такие работы могут рассказать в подробностях, как добиться прироста производительности в WonderDesk величиной 0.001% под SuperSQL v.0.0001 alpha, но, как правило, ничего не говорят о том, зачем вообще нужен этот WonderDesk, и, главное, что с ним, существенно ускоренным, потом делать.

Вторая категория написана для… Даже не знаю, для кого. Я бы сказал, что для богов, но им, вроде, инструкции не нужны. «Нужно пересмотреть саму парадигму взаимодействия паттернов бизнес-процессов в рамках концепции корпоративных ценностей с целью повышения уровня зрелости...» Ага, пересмотрел (предварительно подглядев в словаре значения всех этих непонятных слов), дальше что? Как сделать, чтобы мое «пересмотренное понимание» заставило пользователей писать заявки, эникейщиков — обрабатывать их, а уровень зрелости — повышаться?! Предлагаете «постепенно внедрять лучшие практики управления»? Да, как же их внедрить, если я простой эникейщик и ничем не управляю?!

Остается одно — пытаться действовать «по наитию». О двух таких попытках, о том, как именно они предпринимались, какие имели предпосылки, к каким привели результатам, т.е. о практическом опыте внедрения хелпдеска в условиях агрессивной враждебной среды, и будет рассказано в этом топике. Надеюсь, он хоть немного заполнит образовавшийся пробел, предоставив эникейщикам и низкоквалифицированным админам сведения о том, как из состояния A, когда о хелпдеске и речи быть не может, перейти в состояние A', когда этот хелпдеск уже внедрен и работает.
Читать дальше →
Total votes 108: ↑102 and ↓6+96
Comments337

Что должен понимать каждый дизайнер в стартапе

Reading time6 min
Views18K
imageВероятность того, что ваш стартап будет воспринят пользователями на ура выше, когда у руля компании стоит визионер-дизайнер, а не кондовый программист. Такой смелый тезис звучит в колонке девушки дизайнера, которая решила «показать нам как должна выглядеть удобная почта».

Иногда под дизайном подразумевают любые синонимы к слову «привлекательность», однако в действительности качественный дизайн включает в себя намного больше. После запуска собственного стартапа Эль Луна (Elle Luna), ведущий дизайнер Mailbox, пришла к выводу, что дизайн – это не столько стремление к внешней красоте, сколько «образ мышления обо всем на свете» и делится с читателями своими наблюдениями.
Читать дальше →
Total votes 24: ↑19 and ↓5+14
Comments8

Смысл жизни программного обеспечения

Reading time7 min
Views11K
В наши дни методики архитектуры, дизайна и организации процесса разработки ПО размножаются как кролики на стероидах. Фреймворки, компоненты и библиотеки не отстают. Mножество решений основывается на опыте, интуиции или серии проб и ошибок. С усложнением систем, риски выбора неподходящих средств только растут. Я бы хотел обсудить один из возможных способов оценки адекватности инструментов поставленной задаче.

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

Текст будет длинный. Если вы никуда не торопитесь и удобно устроились в кресле, то давайте попробуем обосновать это утверждение.
Читать дальше →
Total votes 22: ↑19 and ↓3+16
Comments5

Как улучшить веб-формы

Reading time2 min
Views2.6K
Этот пост — перевод ответа на вопрос «Как сделать заполнение онлайн-форм весёлым (fun)» на сайте Quora.

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

Проверка данных



Сейчас проверка данных обычно выглядит как наказание — если вы понимаете, о чём я. Вы заполняете форму, кликаете «ОК»… и получаете страшную надпись типа «ТЫ ЗАПОЛНИЛ ЭТО ПОЛЕ НЕПРАВИЛЬНО, ПРИДУРОК. ИДИ ИСПРАВЬ». Ну, может, конечно, придурком вас напрямую не называют, но ощущение остаётся именно такое. Чем дальше мы сможем от этого уйти, тем лучше.

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

Мне очень нравится форма на этом сайте. Посмотрите — они сообщают пользователю, что он с чем-то справился сразу вместо того, чтобы пост-фактум известить его об ошибке:
www.junkmycar.com

image
Читать дальше →
Total votes 31: ↑15 and ↓16-1
Comments16

Визуализация «В Контакте»: Скажи мне, кто твой друг?

Reading time2 min
Views145K
Привет, Хабралюди!

У меня есть хобби. Я ночами (в нерабочее время) пишу библиотеку укладки графов: vivagraph.js. Хотел поделиться с вами, узнать что думаете. Визуализировал я сеть друзей своих на «В Контакте» с использованием WebGL. Но лучше один раз увидеть, чем читать, верно?



Это мои друзья. Каждая точка — человек, целый мир, с которым так или иначе мне повезло встретиться. Линия между точками обозначает дружбу. По этой сети можно, правда, сказать многое о человеке.

Как построить свою сеть?
Total votes 314: ↑302 and ↓12+290
Comments256

CanvGauge — измерительный прибор с помощью canvas для HTML5

Reading time1 min
Views7K
HTML5 Canvas GaugeДобрый день, хабровчане!

Сегодня я хочу поделиться своей небольшой разработкой, которую я делал для одного из своих проектов. На самом деле, в сети множество реализаций gauge, как платных, так и бесплатных. Но найти хоть одно решение с использованием именно canvas мне не удалось, поэтому было принято решение написать свое.
Читать дальше →
Total votes 78: ↑72 and ↓6+66
Comments67

62 полезных инструмента для адаптивного дизайна (Responsive web design)

Reading time14 min
Views203K
UPD. Для краткого введения в адаптивный дизайн рекомендую прочитать статью «Как сделать один сайт для всех устройств (Responsive Web Design)».

Перевод крайне ценной статьи «Responsive Web Design Techniques, Tools and Design Strategies» популярного интернет-издания для разработчиков Smashing Magazine.

Еще в январе мы опубликовали статью об адаптивном дизайне «Responsive Web Design: What It Is and How To Use It» (Адаптивный веб-дизайн: Что это такое и как им пользоваться). Адаптивный веб-дизайн продолжает привлекать к себе много внимания, но, учитывая, насколько он отличается от традиционных методов разработки сайтов, он может показаться заоблачно сложным для тех дизайнеров и разработчиков, которые его не пробовали.

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

Техники Responsive web design


1. CSS Transitions and Media Queries
CSS Transitions и Media Queries

Elliot Jay Stocks подробно рассказывает о методе сочетания CSS Media Queries и CSS transitions. Основная идея в следующем: разрабатывая адаптивный сайт с помощью Media Queries, вы постоянно изменяете ширину вашего браузера, чтобы посмотреть, как сайт ведет себя при этом. Но каждый раз, когда отрабатывает один из ваших Media Queries, виден жесткий переход между стилями (первый, например, для десктопов, второй — для планшетов). Почему бы не использовать CSS transitions для сглаживания этих жестких переходов с помощью анимации?



Читать дальше →
Total votes 112: ↑107 and ↓5+102
Comments14

Затухающие полоски на CSS3 без изображений

Reading time2 min
Views22K
Хочу поделиться с вами моим способом создания затухающих полосок без использования изображений. Дальше под катом описан метод создания таких элементов с комментариями и примером.


Читать дальше →
Total votes 97: ↑85 and ↓12+73
Comments21

Создание оконного интерфейса при помощи jQuery UI. Часть 1

Reading time4 min
Views32K
Статья рассчитана на пользователей только начинающих работать с jQuery UI и желающих на практике познакомиться с этой библиотекой.
Данный оконный интерфейс предполагает такие основные свойства как — наличие окон, возможность их перетаскивания, возможность изменения размера окон, их свертывания/развертывания и т.д. Вот что должно получиться в итоге.
Итак, имеем желание создать пример интерактивного оконного веб-интерфейса и возможности использовать для этой цели jQuery UI – тогда, добро пожаловать под кат.
Читать дальше →
Total votes 40: ↑19 and ↓21-2
Comments9

Ну и Herz'с'nim!!!

Reading time2 min
Views16K
Приветствую вас, хабровчане! Хочу рассказать о запуске нового проекта Parking.ru под кодовым названием «Herz'с'nim» :).

На Хабре уже много было статей про разные компании, предлагающие в аренду физические сервера, и всех их объединяло две фактора: расположение за рубежом и низкая цена.
Parking.ru решил ответить иностранным «захватчикам» и вернуть сервера на Родину! Буржуи заманивают вас низкими ценами — Herz'с'nim, мы предложим ниже! С 20 марта мы запускаем услуги аренды физических серверов по цене в 1,5 -2 раза ниже, чем сейчас есть на рынке!!! Ваши сервера будут надежно спрятаны в ЦОДе, расположенном в густых Владимирских лесах.
Читать дальше →
Total votes 58: ↑38 and ↓20+18
Comments135
12 ...
19

Information

Rating
Does not participate
Registered
Activity