В нашем современном мире многие до сих пор верят в анонимность в интернете (я не говорю про читателей:) ). Многие даже не понимают, что img.2ip.ru/ooops.jpg правда узнаёт информацию о пользователе. Предлагаю сделать такой же сервис, то есть один человек другому пересылает ссылку на картинку, вместо открытия картинки выполняется наш скрипт, после выполнения он редеректит на «нормальную» картинку. И так, сначала сделаем простые вещи: определим ip человека, его браузер, операционку и так далееЧитать полностью »
Рубрика «php» - 163
Прикручиваем ActiveRecord к сайту
2014-02-09 в 9:47, admin, рубрики: activerecord, mysql, orm, php, метки: activerecord, ormВведение
В процессе создания более ли мене сложного сайта приходится задумываться об организации доступа к БД(базе данных). Если сайт создается на базе существующего фреймворка или CMS, то там как правило имеются встроенные механизмы ORM (с англ. — Объектно-реляционное отображение, подробнее в вики). В данной статье я расскажу как можно прикрутить популярную и простую ORM систему ActiveRecord к собственному фреймворку.
Читать полностью »
VagrantWebdev — виртуальная среда для веб-разработки
2014-02-08 в 21:24, admin, рубрики: php, vagrant, Веб-разработка, виртуальная машина, среда разработки, метки: vagrant, Веб-разработка, виртуальная машина, среда разработкиВступительное слово
Изначально я разрабатывал этот проект для родной веб-студии. Я начинал разработку со следующими принципами:
- Среда должна разворачиваться максимально просто, с этим должен справиться любой новичок-стажер или даже менеджер, если понадобится.
- Среда должна обеспечивать меня и любого разработчика всем необходимым серверным ПО, при этом инкапсулируя его в виртуальной среде.
- Сами файлы проектов должны находиться в каталоге, разделяемом хостом и виртуальной машиной, а именно в каталоге проектов IDE. Даже если разработчик — ярый сторонник текстовых редакторов и поклялся на крови, что никогда его жесткий диск не примет в себя ни одной IDE, ему этот принцип так же будет на руку.
- Хост должен иметь доступ к СУБД, Memcache и Sphinx, запущенным на виртуальной машине, для проведения работ, не требующих «тяжелой артиллерии», а значит проводящихся прямо на машине разработчика — например, для разработки на Django или разработки утилит, общающихся с этими сервисами.
- Должен быть легкий способ сделать резервную копию данных, спрятанных в виртуальной машине.
Но позже я понял, что наши потребности не слишком расходятся с потребностями других веб-разработчиков, а значит, не будет лишним поделиться с народом этим проектом. К тому же, если к нему будет проявлен интерес, и я получу фидбек, а то и пул-реквесты (а я буду несказанно счастлив, если получу все это), это несомненно повысит качество разработки. К тому же, даже если кому-то сама данная разработка покажется неинтересной, описанные мной детали могут помочь в создании собственной среды на базе выбранных мной технологий.
Для достижения поставленных целей я выбрал Vagrant, так как нет по моему скромному мнению более удачной утилиты для распространения виртуальных машин для разработки. Из списка базовых боксов я выбрал машину на моем любимом и очень популярном Debian Wheezy, к тому же размер выбранного бокса всего 295 Мб.
Проект находится на GitHub'е и ждет своего часа. Он обеспечивает:
- Веб-сервер (Apache 2.2 + PHP 5.4),
- Xdebug с возможностями удаленной отладки, профилирования и создания трейсов по триггеру,
- СУБД: MySQL, PostgreSQL, Redis,
- Memcache,
- Sphinx с организацией удобной конфигурации с помощью
conf.d
.
Так же внутри установлены PHPUnit + DBUnit, Python 2, SQLite и еще некоторое количество приятных вещей. Этот набор сервисов обусловлен нашими потребностями, но если сообществу будет интересно видеть что-то еще — не думаю, что будет проблемой добавить это.
Не будет лишним упомянуть, что в каталоге bin имеются различные утилиты для повышения удобства работы и для управления состоянием виртуальной машины.
VagrantWebdev был протестирован на Windows и на Ubuntu 13.10, и я был бы очень благодарен за помощь в тестировании на других платформах.
Далее я хочу поделиться подробностями о разработке и возможностях VagrantWebdev, которые могут быть просто интересны, могут помочь в использовании или при разработке собственного проекта на базе тех же технологий.
Читать полностью »
Опрос PHP vs Python
2014-02-06 в 18:24, admin, рубрики: php, python, web-разработка, Веб-разработка, метки: PHP, python, web-разработкаВ недавней теме о PHP черт меня дернул затеять холивар. Пользуясь случаем, прошу прощения за такое безобразие :) Позвольте мне несколько исправить ситуацию и увести ее от дискуссий.
Моя позиция такова, что мнение определяется опытом и обстоятельствами. Надеюсь, это не вызовет споров, если вы не будете излишне придирчивыми :) Обстоятельства — вещь очень многогранная, и так запросто можно скатиться до обсуждения смысла жизни, так что я буду акцентировать внимание только на опыте. Именно он позволяет нам делать суждение о чем-либо. Именно на него мы рассчитываем, когда советуемся с компетентными и авторитетными людьми. Я предлагаю обобщить наш опыт, разбив его на некоторые категории, дабы не дискуссировать бесполезно, и сравнить наши точки зрения в зависимости от личного опыта. Кому чей опыт важен, и какие выводы делать — каждый решит для себя сам.
PhpBrew. Менеджер версий PHP. (+ установка и использование в Ubuntu 13.10)
2014-02-05 в 18:27, admin, рубрики: php, УбунтариумЛирическое №1
PHP неуклонно взрослеет и обзаводится различными полезными дополнениями и некоторые из них уже ну совсем как у старших (хотя слово «младших» во многих случаях подойдет лучше).
В этом ключе стоит, например, вспомнить такие замечательные вещи как менеджер зависимостей composer, встроенный веб-сервер, появление namespace'ов и замыканий.
Сложилось так, что в качестве рабочей OS у меня установлена последняя версия Ubuntu (13.10). Долгое время я довольствовался последней стабильной версией PHP из репозиториев (видимо везло), но тут по работе пришел проект на 5.3 (а то и 5.2, но под 5.3 завелся), который никак не хотел стартовать на последней 5.5.3, что из официальных репозиториев и я было опечалился (уже имеется опыт установки неактуального PHP на Ubuntu, хоть и успешный, но весьма грустный), но потом вспомнил ruby и rvm.io и решил провести небольшое исследование. В итоге коллега подсказал озвученную в заголовке вещь.
Конец лирического. К фактам.
Если вкратце – единственное назначение phpbrew – возможность использовать разные версии PHP на одной машине. Быстро, просто, практически без танцев с народными музыкальными инструментами. (не продакшен, не параллельная работа, но мгновенное переключение между версиями при разработке).
Простой способ кэширования шаблонов на PHP
2014-02-05 в 17:46, admin, рубрики: php, web-разработка, высокая производительность, кэширование, оптимизация, производительность, метки: PHP, web-разработка, кэширование, оптимизация, производительностьЧасто при разработке приложений на PHP встаёт вопрос кэширования всего выводимого приложением шаблона, либо какой-то его части, которая довольно статичная во времени. Если при разработке использовался какой-либо шаблонизатор, то данный вопрос решается «из коробки». Но не во всех приложениях на PHP используются шаблонизаторы, а вопрос о кешировании шаблона или его части остаётся открытым. Ниже описан один из вариантов решения данной проблемы.
Лучшие практики и рекомендации по защите php-приложений от XSS-атак
2014-02-05 в 8:57, admin, рубрики: pentestit, php, Блог компании PentestIT, информационная безопасность, метки: pentestit, PHP, информационная безопасностьЛучшие практики и рекомендации по защите php-приложений от XSS-атак
Создание функционирующего веб-приложения – это только полдела. Современные онлайн-сервисы и веб-приложения, помимо собственного контента, хранят данные пользователей. Защита этих данных зависит от правильно написанного кода с точки зрения надёжности и безопасности.
Большинство уязвимостей связано с неправильной обработкой данных, получаемых извне, или недостаточно строгой их проверкой. Одной из таких уязвимостей является межсайтовое выполнение сценариев (Сross Site Sсriрting, XSS), которая может привести к дефейсу сайта, перенаправлению пользователя на зараженный ресурс, вставке в веб-ресурс вредоносного кода, краже COOKIE-файлов, сессии и прочей информации. Противостоять XSS своими сила поможет применение лучших практик и рекомендаций по безопасному программированию, о которых и пойдет речь ниже.
Читать полностью »
Опыт внедрения кэширования в небольшой проект с сильной социальной составляющей
2014-02-05 в 7:59, admin, рубрики: memcached, mysql, php, Веб-разработка, высокая производительность, кэширование, метки: memcached, mysql, PHP, кэшированиеХочу поделиться опытом внедрения кэширования при помощи memcached на своем сайте. Текст будет полезен новичкам в веб-разработке, которые задаются вопросом «как же применять на практике те 100500 статей о кэшировании, которые легко находятся в поисковиках». На истину не претендую, просто рассказываю, как получилось у меня.
Исходные данные:
Сайт крутится на одном выделенном сервере, но из-за вероятности в будущем еще подрасти, для кэширования выбран memcached;
Суточная посещаемость: ~23 000 уникальных посетителей и ~300 000 просмотров страниц;
80% посетителей — авторизованные пользователи;
Основной контент: текст (книги, которые авторы пишут и публикуют на сайте по главам, наподобие самиздата).
Сервисы: персонализированные новости, чтение текстов, разбитых на главы, комментарии, профили, блоги, рейтинги, подписка, метки, закладки, личные сообщения, счетчики, почтовые уведомления…
Пользовательская активность: более 10 000 действий, приводящих к изменению контента, в сутки.
Сложность при внедрении кэширования: подавляющее большинство страниц содержит персонализированные данные. Где-то уникально все, вплоть до запросов в базу, где-то можно разделить запросы на общие и уникальные, где-то нельзя, где-то персональные настройки пользователя применяются на данные уже после их выбора из базы.
Читать полностью »
Пример работы jQuery UI + PHP и GD. Нанесение аппликаций на изображение
2014-02-03 в 16:36, admin, рубрики: jquery, jQuery UI, php, метки: jquery, jQuery UI, PHPВступление
Всем привет! Здороваюсь с хабром я в первый, и надеюсь не последний, раз. Не смотря на то, что читаю хабр довольно давно, идея написать что-то полезное появилась совсем недавно, когда на работе я столкнулся с весьма интересной задачей — разработка он-лайн редактора коллажей. Поскольку особого ассортимента инструментов разработки не было, решили делать средствами js+jQuery и php GD. Процесс реализации задуманного оказался весьма интересным, и куча полученных положительных эмоций и новых навыков подтолкнули меня на написание статьи на хабр. В этой статейке я постараюсь рассказать о некоторых интересных моментах, с которыми столкнулся при разработке он-лайн редактора.
Задача
По изначальному плану статьи я хотел описать весь процесс разработки, но потом передумал, поскольку статья получилась бы слишком длинной и имела бы много очевидных и итак всем понятных вещей. Поэтому план статьи был переработан, и я решил оставить только самые интересные и важные, как мне кажется, моменты.
Итого: речь пойдет об использовании jQuery UI в связке с PHP библиотекой GD. В статье я постараюсь, как можно доходчивее, показать и рассказать об использовании таких возможностей jQuery UI, как перетаскивание и ресайз элементов. А также формирование картинки из созданных и обработанных пользователем элементов (картинок).
Чтобы было более понятней и наглядней думаю будет не плохо сделать рабочий пример(посмотреть можно тут). В примере реализована одна из частей он-лайн редактора, а именно работа с аппликациями, в которой пользователь может наложить на картинку дополнительные элементы, перетаскивать их как угодно и ресайзить, после чего все это «искусство» должно собраться в единую картинку.
Что-то я много говорю, пора уже и к делу приступить, начнем.
Читать полностью »