Генерация HTML в PDF через wkhtmltopdf

PHP
image
К написанию данной статьи меня сподвиг следующий пост.
Пришлось мне как-то столкнуться с задачей генерирования pdf файла из имеющейся страницы сайта. Заказчик хотел, что бы у посетителя была возможность получить в pdf текущую страницу его интернет-магазина. Причем получить именно в том виде, который лицезреет клиент, только без заголовка и шапки сайта. Пример буду описывать для сайта на системе управления Битрикс, поскольку именно на нем был сайт, для которого создавался функционал.

Читать дальше →

Перестановка символьных значений местами без использования промежуточной переменной в PHP

PHP

Вводная


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

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

Собственно созерцание этих алгоритмов навело меня на мысль о возможности перестановки строковых (символьных) значений.

Читать дальше →

Установка и настройка Apache, MySQL, PHP, Exim, Dovecot, Ruby on Rails и Redmine на CentOS 5.4

Установка и настройка Apache, MySQL, PHP, Exim, Dovecot, Ruby on Rails и Redmine на CentOS 5.4
Задача
Установка по ssh, иногда прибегая к помощи WinSCP as FAR Plugin следующего ПО на VDS:
  • CentOS 5.4 32bit (если у Вас x86_64, незабывайте делать поправку на архитектуру при установке rmp, в частности)
  • Apache 2.2.3
  • MySQL 5.1.53
  • PHP 5.3.3
  • Exim 4.72
  • Dovecot 1.0.7
  • Ruby 1.8.7
  • Rails 2.3.5
  • Redmine 1.0.4
Руководство получилось весьма обширным, в основном благодаря тому, что я старался осветить поставленные вопросы наиболее подробно. К тому же, не редко приводил тезисно (или в качестве ссылок) альтернативные варианты решения, которые не были выбраны мной в силу тех или иных причин, указанных по возможности. Описание пестрит ссылками/источниками, поскольку я старался максимально позволить читателю «владеть ситуацией», при необходимости обращаясь к этим источникам где могла быть предоставлена информация более полно и подробно.

Читать дальше →

NodeJS vs PHP. Тест на производительность

Недавно очень заинтересовался NodeJS. Чем больше с ним разбирался – тем больше он мне нравился, вплоть до идеи «отныне пишу все на NodeJS». Но перед переходом мне стало интересно, на сколько серверный js выигрывает в производительности, в сравнении с php.


Читать дальше →

Sliding Expiration в memcached

PHP
Разрабатывая в основном под .NET столкнулся с тем, что в memcached отсутствует Sliding Expiration вариант хранения данных.

Первым шагом что бы решить эту проблему было написание «менеджера» дописывающего к данным, которые кладутся в кэш тип (Абсолютный или Sliding) и время хранения, что бы при последующих чтениях из кэша брать эти дополненные данные, смотреть на тип хранения и в случае Sliding перезаписывать данные.

Будут рассмотрены только Get и Set операции, т.к. остальные делаются по аналогии. Increment / Decrement тут не поддерживаются.

Выглядело это примерно так:

Читать дальше →

Оптимизация формирования страницы каталога web-магазина с множеством фильтров

PHP
В одном из разработанных мною движков сайтов требовалось оптимизировать процесс формирования страницы каталога интернет-магазина с фильтрами выбора товаров.

Cайт представляет из себя онлайн-каталог б/у бытовой техники сети оффлайн магазинов Украины. Все товары на сайте фильтруются по следующим критериям:

Читать дальше →

Вывод статистики о ходе выполнения долгих операций

Вы делаете сервис (скрипт), который будет выполнять достаточно долго? Тогда, вам точно стоит подумать о выводе статистики по ходу выполнения операции.
Задача
Есть примерно такая таблица.

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

Читать дальше →

Плагин авторизации через Вконтакте, Yandex, Google, Facebook и другие Open ID

Привет, я начинающий программист и решил встроить в свой сайт плагин авторизации Loginza.

Задача данного скрипта очень проста: авторизация через социальные сети и других провайдеров Open ID
image
image

Для начала нам понадобятся классы для работы с сервисом, которые можно скачать здесь
— LoginzaAPI.class.php
— LoginzaUserProfile.class.php
— JSON.php

Читать дальше →

Изучение английского языка с помощью скриптов на PHP

Предисловие
Несколько лет назад, я обнаружил, что довольно легко могу запоминать массу иностранных слов с помощью довольно простой методики. Берется словарь, разделенный на 3 колонки (я пользовался небольшим англо-русским разговорником) в котором есть три колонки: слово/фраза на английском, слово/фраза на русском и произношение. Типичная строчка выглядела так:
cucumber кьюкамба огурец
Слова учатся сначала поштучно в направлении «английский->произношение->русский» потом «русский->произношение->английский». И так несколько раз по списку сверху-вниз и снизу-вверх, а затем, когда есть уверенность в из запоминании, слова начинают выбираться случайным образом. За 2-3 часа таким образом удавалось выучить по 150-200 слов. Неудачно было лишь то, что слова в этом разговорнике были привязаны к путешествиям и не всегда подходили для повседневного общения. А произношение в том разговорнике было написано русскими буквами, что сильно мешало носителям языка пониманию сказанного мной. Так обломались наивные детские мечты выучить язык с помощью разговорника.


Читать дальше →

Архитектура простейшей CMS на PHP+MySQL

Предисловие


Очень лёгкая CMS может понадобиться в разных случаях. Например, если слабый сервер или нужно разместить очень много сайтов на одну железку с ограниченными ресурсами. К примеру, возьмём VDS начальной ценовой категории в $10/месяц. Можно туда поместить 100 сайтов на WordPress? Вряд ли! А можно поместить 100 сайтов на какой-нибудь лёгкой CMS'ке? Можно и даже больше! Данный пример ближе всего SEO'шникам.

Читать дальше →