Как стать автором
Обновить
70.55

PHP *

Скриптовый язык общего назначения

Сначала показывать
Период
Уровень сложности

Сериализация в php: serialize, json, bson

Время на прочтение1 мин
Количество просмотров17K
Выбрал функции сериализации для бд — bson. Быстрее serialize в >1.5 раза, json — в 3. Да и результат меньше всех остальных.
Найти его можно в расширении для MongoDB.
Результаты далее.
Читать дальше →

Анти-спам модуль для Kohana

Время на прочтение2 мин
Количество просмотров2.9K
На днях понадобилось для одного проекта, на фреймворке Kohana, прикрутить защиту форм, от заполнения спам-ботами.
Готовых модулей не нашлось, а утруждать пользователей вводом каптчи не хотелось.

Поэтому было решено поискать на хабре готовые библиотеки или методики по борьбе со спамом.
Читать дальше →

Создание графиков с помощью pChart. Данные из MySQL

Время на прочтение3 мин
Количество просмотров41K
Здравствуйте Хабрачитатели! В этом посте я хотел рассказать вам о построении графиков с помощью pChart. Сложного в нем ничего нет, но стандартно(позже, на сайте девелопера нашел и MySQL инфу) он берет данные из файла. Мне это никак не подходило под свои нужны, и я начал ковыряться в скрипте. Результат ниже.

Итак, что нам понадобится:
1. php-модуль GD(для апаче естественно).
2. Скачать библиотеку pChart 1.27.

Чтобы долго все это дело не описывать, я сразу дам готовый скрипт для построения графиков, данные берутся из БД.
Читать дальше →

Немного опыта по работе с FatFree Framework

Время на прочтение3 мин
Количество просмотров7K
Предыстория

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

Изобретение велосипеда

Первые, конвульсивные попытки заставить себя сесть за работу выглядели печально, так как главной целью было (изначально) разработать ту самую «базовую систему», на которой потом уже делать проект. Наверное уже после третьей неудачной попытки, и осознании своей ошибки, я начал поиск простого и понятного фреймворка. Выбор пал на FatFree Framework.
Читать дальше →

phpBBex — добавляем автозагрузку классов и обработчики AJAX запросов

Время на прочтение4 мин
Количество просмотров2K
phpBBex logophpBBex — это расширенная версия phpBB 3, которая была анонсирована ранее на Хабре. Проект постепенно развивается, появляются новые полезные возможности. Сегодня у нас появился официальный форум и вышла новая версия нашего форка.

Как известно, код phpBB 3 был заложен в далёком 2002 году. Здесь всё по-старому. Нет никаких сложных абстракций, код простой и линейный. Для небольших проектов это не проблема. Но движок оброс функциональностью, и огромную массу кода сейчас не всегда просто изменить для достижения необходимого результата. Игнорирование современных паттернов мешает дальнейшему развитию. Понятно, что разработчикам phpBB важно следить за совместимостью кода со старыми модами, поэтому никаких серьёзных архитектурных улучшений ожидать не приходится. Выходом из ситуации должен быть phpBB 4 на основе Symfony 2, но за его разработку ещё не взялись. Очевидно, переписать такого монстра не так просто, так что в ближайшее время чуда не будет.

Поскольку в phpBBex планируется множество изменений, связанных с переводом интерфейса на AJAX, логичным было бы реализовать удобный механизм для добавления новых обработчиков AJAX запросов. Стандартным способом для phpBB сегодня является создание php файла в корне со своей логикой для каждой модификации. Это не дело. Мы попробовали добавить нечто вроде контроллеров. Обработчики сгруппированы в «классы-контроллеры», имеется единая точка входа, которая создаёт экземпляр необходимого «контроллера» и вызывает соответствующий обработчик. На основе этого мы создали систему анонимной оценки комментариев (почти как на Хабре).
Читать дальше →

«Автопереключение раскладки» в php-приложениях

Время на прочтение4 мин
Количество просмотров186K
Доброго времени суток!

С недавнего времени я занимаюсь разработкой системы чатов, так сказать чаты 3.0. Данная идея пришла после того как познакомился с такой интересной и удобной штукой как comet-сервер Realplexor от dkLab. Но сейчас не об этом…

Основной движок написал, чат работает, пользователи общаются, все вроде бы ничего, но есть одно НО! Все же мы люди и бывает забываем переключить раскладку клавиатуры с английской на русскую, такое бывает. После написания n-го количества слов отправляем сообщение и что видим — написали не в той раскладке, и редко кому захочется заново переписывать этот текст, а читателям не всем захочется переводить Ваши каракули. И решено было придумать какой-нибудь очень простой способ исправления таких сообщений.
А теперь поподробней!

Решение проблемы авторизации на форумах phpBB 3.0.X через Loginza

Время на прочтение2 мин
Количество просмотров2.4K
imageДрузья, недавно потребовалось установить на форум авторизацию через социальные сети. Из всех плагинов, что удалось найти по требованиям подошел только плагин Loginza. Для тех, кто не знает:

Loginza – это система идентификации, обеспечивающая единый доступ к популярным WEB-сервисам. Используя учетную запись Loginza Вы сможете посещать большое количество сайтов блогов и форумов, поддерживающих вход OpenID и виджет Loginza, — а это значит не нужно проходить однотипную регистрацию на каждом ресурсе и следить за актуальностью контактной и иной информации профиля на каждом из сайтов.

Почитав немного про него, я очень обрадовался — то что надо. Установка на локальной машине прошла чуть ли не в 1 клик, все работало просто идеально. Но после переноса на реально работающий сервер, по каким-то причинам слетела авторизация и регистрация. При попытке зайти в систему форум говорил, что пользователь опознан, но при следующем переходе на форум авторизация слетала. Посидев пару часиков и покопавшись в коде, я нашел причину проблемы.
Читать дальше →

Лямбда-функции и замыкания

Время на прочтение3 мин
Количество просмотров69K
imageКонечно многие из нас знакомы с этим понятием, однако данная статья рассчитана на новичков. В данном посте постараюсь рассмотреть данный феномен и привести примеры использования.
Читать дальше →

Используем php-cgi в своих приложениях

Время на прочтение3 мин
Количество просмотров31K
PHP — один из самых распространенных языков программирования. Созданный для написания небольших домашних страничек, он постепенно вырос и теперь используется миллионами веб-сайтов. Однако веб-сайтами дело не ограничивается — его можно использовать практически в любых приложениях, благо есть интерактивный, CGI и FastCGI режимы.
Режим CGI я и хочу описать. Его плюсы в относительной простоте и возможности передачи скриптам различных данных (в том числе бинарных). Минус у него лишь один — скорость работы, из-за многократных запусков приложения. Впрочем, минус этот исправляется с помощью более нового протокола FastCGI.
Итак, как же использовать php-cgi?

Oбучающий пакет PHP on Windows and SQL Server Training Kit

Время на прочтение1 мин
Количество просмотров776
Microsoft обновила обучающий пакет для PHP-разработчиков, которые размещают свои сайты на серверах Microsoft IIS и SQL Server.

Данный пакет содержит следующие лабораторные работы:
  • IIS 7.5 Access Control Features for PHP;
  • Обновлено: Using IIS 7.5 Media Features in a PHP Application (содержит новое упражнение по технологии Smooth Streaming);
  • Troubleshooting PHP;
  • Migrating PHP Applications to IIS 7.5;
  • Introduction to Using SQL Server with PHP;
  • Using SQL Server Full-text Search and FILESTREAM Storage with PHP;
  • Новая: Getting Started with SQL Server Migration Assistant for MySQL;
и следующие демонстрации: Spatial Demo и SQL Server Reporting Services Demo.

Загрузить обучающий пакет PHP on Windows and SQL Server Training Kit (с февральским обновлением)  можно по следующей ссылке.

Делаем фильтр от спама для почты

Время на прочтение3 мин
Количество просмотров11K
image

Благодаря gmail.com я мог все свои ящики собрать в кучу. Но столкнулся с проблемой, когда все сообщения приходит на одну почту, то ты спам начинаешь уже и замечать. И лень лазить и удалять спам руками, а тот фильтр, которые уже встроенный в почтовый сервис не всегда радует.

Почему не сделать бота, который чистит почту, тем более спам четко виден по некоторым признакам?
Вот что я выделил, что в моих глазах спам:
— всё написано в верхнем регистре
— сообщения, где главная мысль: порнуха, знакомства, казино, деньги и т.д.
— если кто-то регулярно высылает почту и я её не прочитываю
Читать дальше →

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

Время на прочтение7 мин
Количество просмотров1.9K
Жил-был в составе поиска по блогам Яндекса рейтинг популярных записей, который для многих был такой себе ежедневной газеткой. Но решили в Яндексе его закрыть да предоставили API, чтобы каждый желающий мог сделать свой рейтинг популярных записей по блогам, чем мы собственно сегодня и займемся. Писать будем на PHP.
Читать дальше →

Как обрабатывать Fatal Error в PHP

Время на прочтение4 мин
Количество просмотров20K
В одном из наших проектов (социальная генеалогическая сеть), о котором я писал в данном топике, мы используем очередь отложенных событий, реализованную на мемкеше. Ее архитектура такова: приложение записывает в эту очередь различные события и данные, относящиеся к ним (тип события, входящие параметры, и функция обработчик этого события). После чего менеджер(-ы) очереди разбирают эту очередь и выполняют отложенные события. В частности такая очередь используется для сбора статистики, но также и для других более критичных к выполнению задач.
Поэтому очень важно обеспечить high availability для менеджера(-ов) очереди.

Но т.к. ф-ия обработчик очереди к нам приходит из вне, то за качество этого обработчика события мы не отвечаем, т.е. если обработчик вдруг выбросит ошибку, то нам ее нужно обработать и продолжить работу менеджера очереди. Но иногда случается, что обработчики выбрасывают фатальные ошибки (Fatal Error), и это может стать проблемой…

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

Ближайшие события

Хранение файлов

Время на прочтение3 мин
Количество просмотров21K
За последнее время мне пришлось активно работать с сайтами, которые большие объемы информации хранят в файловой системе. Это разнообразные сайты фото и файловых хостингов, а также сайты с загрузкой видео контента, некоторые сайты проектировались и программировались мной с нуля, некоторые переписывались, дописывались или «приводились в порядок».
Должен отметить, что хранение файлов в файловой системе является для многих программистов областью, которая проходит мимо их внимания.
Читать дальше →

Использование шаблонов SMARTY с PEAR HTML_QuickForm

Время на прочтение13 мин
Количество просмотров3.8K

1. Введение.


Что из себя представляет эта статья.


Данная статья является простым введением в использование шаблонов Smarty с классами PEAR HTML_QuickForm. Статья не является исчерпывающим руководством, и фактически представляет лишь малую часть функциональности шаблонов Smarty. Однако для новичка в использовании шаблонов Smarty данная статья будет полезной базой.

Идем дальше...

C#-like cобытия для PHP. Reflection, closures…

Время на прочтение4 мин
Количество просмотров1.2K
Задача — сделать на PHP эвенты а-ля C# т.е. произвольный объект может генерировать события. Другие объекты могут на эти события подписываться непосредственно у экземпляра генерирующего объекта.

Основное отличие от того что видел ранее — строгая проверка навешиваемого хука. Проверяется наличие метода, количество его аргументов, etc…
Читать дальше →

Превью и Resize картинок в html

Время на прочтение1 мин
Количество просмотров9.5K
Навеяно практически одноименным постом

Я вспомнил как однажды решал указанную проблему. Мой способ очень похож но имеет несколько дополнительных плюсов… и минусов )))

Плюсы:
— Картинки генерятся только когда они нужны (т.е. мы не храним ненужных изображений и не нагружаем сервер в случае массовой загрузки изображений)
— PHP работат только первый раз (когда картинка нужного размера еще не существует)
— Размеры нужного изображения фигурируют только на стороне шаблона, т.е. грубо говоря в html

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

Закачка ролика на ruTube с использованием cURL

Время на прочтение6 мин
Количество просмотров4K
На хабре уже были топики, посвященные открытому API для работы с сервисом ruTube. В примере, который можно скачать с сайта ruTube (http://rutube.ru/partners/phpapi.html), отправка ролика осуществляется следующим образом (код взят из примера без правок):

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

Наследование шаблонов в Smarty — альтернативный подход

Время на прочтение6 мин
Количество просмотров1.6K
По следам хабратопика Наследование шаблонов в Smarty хочу рассказать как около полутора лет назад я решил подобную задачу. В оличие от marazmiki с Django я знаком не был (хотя сейчас занимаюсь изучением именно его). Но крайне поверхностно был знаком с механизмом Master Pages из ASP.NET. Механизм заключается в том, что у нас есть практически полноценная страница, у которой отсутствует только блок с основным контентом.

Немного прикинув придумалось решение через стандарные функции Smarty и механизм наследования в PHP.
Читать дальше →