Записи с меткой "сайтострой"


Валидация и бизнес-правила

Данная статья - чисто мое субъективное мнение (имхо).

Я предлагаю различать в сайтострое два понятия - валидация данных и бизнес-правила.

Как работать с XDebug

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

Концепт супер пагинатора

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

В статье нет готового кода, описываю только идею. Да и сама идея-то еще требует проработки и полета фантазии. Вообщем, коцепт.

Вечная аутентификация на сайте

Постановка задачи: я хочу, чтобы юзер всегда был залогинен, пока сам не выйдет. И не надо ему предлагать "Запомнить меня", это тупо, имхо. Если юзер хочет, чтоб его забыли, пусть жмет "Выход".

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

Надежное хранение пароля юзера

Тестовая задача одного из нанимателей: создать функционал регистрации/аутентификации юзера. Ну я и создал. При этом пароли храню в БД по схеме md5-хеш + соль. Я уже видел такое решение и посчитал его надежным. Позже, на собеседовании возникли вопросы, почему и зачем. Начали разбирать теоретические ситуации и я оказался в тупике :) Под катом - размышления на тему надежного хранения паролей юзеров.

Эффективное правило для mod_rewite

Пишу .htaccess для своего движка. В очередной раз скопипастил классическое:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,QSA]
И только тут задумался над тем, что же реально происходит при таком правиле...

Настройка тестирования в Yii 1.x

Окружение: KUbuntu 14.04.1 LTS, PHP 5.5.9, Yii 1.1.16. К этому делу нужно прикрутить последний PHPUnit и Selenium. Я вообще не был знаком с unit-тестами и функциональными тоже, поэтому для начала прочитал мануал в Yii, часть мана PHPUnit, кучу всего на хабре + форумы. И получилась каша :( К тому же в последствии оказалось, что Yii-ные инструкции устарели. Рассказываю, как настраивается окружение сейчас..

Смена кодировки сайта

Переходим с windows-1251 на utf-8. Перекодирование затронет все: php-скрипты, статику (css, js, html), мета-теги, БД, настройки веб-сервера и PHP. Во-первых, подумайте дважды, прежде чем затевать смену кодировки. Так ли это вам нужно? У меня сайт маленький, самописный, опыта уже достаточно, и то я потратил несколько часов на эту процедуру. Во-вторых, создайте копию вашего сайта перед тем, как что-то менять. Получите дамп базы. Не удаляйте копию, даже если есть 100% уверенность, что все сделано правильно.

Перенос сайтов, созданных на разных CMS

За полгода работы на web-студию накопилось разного, полезного и не очень. Большим спецом в конкретной CMS я не стал, но видел многое. Работая с очередным сайтом, я разворачиваю его копию на локалке. Мне так удобно. В некоторых случаях все просто, достаточно переписать ключи доступа к БД, иногда заморочки затягиваются. В то время я работал еще на Windows, что добавляло ньюансов. Вообщем, статья является попыткой организовать мои заметки по вопросу переноса сайтов с CMS. Описываю все, от очевидного до сложного. Выгода этих записей в экономии времени при разворачивании очередного сайта на своей площадке.

Всплывающее окно. Чужой плагин для jQuery

 пример popup

По работе потребовалось прикрутить к сайту несколько popup-окошек. Чтоб красиво всплывали и корректно работали. Сначала накатал свой код, без эффектов. Однако ж не по "феншую" было. Нашел подходящий jQ-плагин, разобрался, как использовать и теперь пишу, чтоб в следующий раз время не терять впустую. Имя плагина - custombox. Страница на оф.сайте jQuery, форк на Гитхабе.

vQmod - зло! Применять в минимальных дозах

Есть такая веб-разработка - vQmod. Помню, как радовался такой полезной и удобной системе, когда только с ней познакомился и разобрался в деталях, как она работает. А потом стал находить "деготь в этой бочке меда", но было терпимо.. до текущего момента. Теперь же я считаю, что vQmod - зло, причем немалое. Погодите потрясать кулаками, давайте обсудим :)

Супервалидация пользовательских данных

Задача: обработать данные с формы обратной связи. А там полей штук 30(!), это форма запроса кредита. Решение в лоб - разбирать массив и валидировать каждое значение, - это жесть. Выход в использовании возможностей php-функций filter_*_array(). Там много заморочек, я более-менее разобрался с этим семейством. Пищу здесь, чтоб в следующий раз не шариться в исходниках.

Yii. Связи таблиц в стиле Active Record

Окружение: фреймворк Yii 1.x + два головастика над одним сайтом. Третий день в темпе допиливаем суперский проект, который уже давно пора было сдать. И тут я застрял на ровном месте, прописал связь двух таблиц, а она не работает.

Данный опус написан для таких же новичков Yii, как я, но еще не наступивших на грабли описания relations() между AR-классами моделей таблиц. Гуру, что уже сенбернара съели на этом фреймворке, могут даже не смотреть под кат ;)

Передача смешанной формы через ajax + iframe

Об этом давно и много написано. Причиной появления этой статьи стал тот печальный факт, что когда мне понадобилось решение, были потеряны часы на поиск и разбор неработающих скриптов и корявых библиотек. Видимо, мне так "свезло", раз не смог решить проблему быстро. Суть остается прежней: нужно передать с формы файл и данные без перегрузки страницы, подобно ajax-запросу. Используем jQuery и iframe.

Realtime-статистика счетчиков с использованием битмапов

В свое время я додумался до использования двоичного представления данных в качестве наиболее быстрого способа обработки и передачи флагов. К примеру, посмотрите на даты в календаре сайта. Информация о днях со статьями получается из двоичной записи числа длиной 31 бит. Но все это - баловство по сравнении с тем, как битовые карты (bitmap-ы) используют в описанной ниже статье. Серверным приложением хранения данных служит Redis, пример запроса на Java, но это не значит, что идея не переносима. Например, при определенном упорстве и наличии расширения gmp можно реализовать учетную статистику средствами PHP/MySQL. Я предлагаю вам к прочтению только перевод статьи. Идею развивайте самостоятельно :)

Альтернативное объяснение "template variable (TV)" в MODx

Заказчик хочет получить сайт на MODx. Изучаю его по русским обучалкам, параллельно превращая верстку заказчика в живой сайт. В целом, MODx - это отличный конструктор, нацеленный на обычного юзера с нормальной тягой к саморазвитию. Я понял его идеологию "с разбега", но с таким трудом до меня доходил смысл TV, что скрип мыслей слышали соседи :D Читал несколько разных источников с объяснениями, и все равно не понимал. В итоге осенило :) А когда написал эту заметку, вернулся на сайт разработчиков MODx и без проблем нашел следующее определение:

Гиперссылки в версии для печати

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

Создание сайта. Часть 10: mod_rewrite

Полное содержание серии - в конце статьи.

Mod_rewrite - это модуль Apache. Обычно используется для преобразования переданного на сервер URL-адреса в другой адрес. Очевидное применение модуля - создание ЧПУ (ЧеловекоПонятныйУРЛ). Для примера посмотрите адрес этой страницы. Как вы наверно догадываетесь, реальный URL у нее не такой :) Использовать этот модуль или нет, решайте сами. Для работы сайта это некритично, зато удобнее для пользователя.

Создание сайта. Часть 9: cookie и сессии

Почти последняя статья серии "Создание сайта". Полное содержание серии - в конце статьи.

На этом этапе вы уже нехило шарите в теме сайтостроения :) Давайте поднимем планку знаний еще выше. Cookie и сессии – это два механизма со схожими функциями. Скорее всего какие-то детали вы уже знаете, расскажу общую часть. Говоря совсем просто, это – текстовые файлы. Cookie хранятся на стороне клиента, сессии – на стороне сервера. А нужны они для того, чтобы сохранить значения переменных, когда скрипты и браузер уже отработали. Кроме самих файлов есть еще процедуры работы с ними и единые правила для всех веб-серверов и браузеров, описывающие алгоритмы взаимодействия.

Создание сайта. Часть 8: MySQL

Продолжаем тему создания сайта. Полное содержание серии - в конце статьи.

MySQL – это система управления базами данных, коротко СУБД. Одна из многих систем, бесплатная, хорошо документированная и популярная среди веб-разработчиков. Вовсе необязательно строить свой сайт с использованием баз данных. Но если вы решите, что вам нужно прикрутить к сайту БД, готовьтесь к изучению еще одной науки.

Первая<12>Последняя
Продвижение
Время
Метки
Щелкни мышей, чтобы закрыть