Категории: Web разработка

Генератор форм для CodeIgniter

Владимир | | CodeIgniter, Web разработка.

Создание форм – достаточно рутинная задача. Процесс подробно описан в документации, но можно легко сделать множество механических ошибок. Например, имена и id полей формы нужно указывать несколько раз — в контроллере и представлении.

Самое главное, что в некоторых случаях вы не получите сообщения об ошибках, а значит, найти их можно будет только с помощью тщательного тестирования. Речь идет о правилах проверки полей формы. Эти правила задаются в массиве, и при этом ключ элемента массива должен совпадать с id поля. Но если вы неправильно запишите название, то CodeIgniter будет считать, что для данного поля правила просто не заданы.

Естественно, что даже частичная автоматизация процесса может значительно сэкономить ваше время.

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

Поэтому я написал небольшой генератор форм для CodeIgniter.
Читать дальше

Сокращаем JavaScript код

Владимир | | JavaScript, Web разработка.

Эта заметка о приеме, который позволяет сократить количество JavaScript кода и сделать его легко читаемым.

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

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

Bazaar: распределенная система управления версиями

Владимир | | Bazaar, Web разработка.

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

На сегодняшний день наиболее популярной среди бесплатных VCS является Subversion. Но, во-первых, она не единственная, а, во-вторых, существуют VCS, которые предоставляют принципиально новые возможности.

Речь идет о так называемых распределенных системах управления версиями. Сразу поясню, что означает слово распределенные.
Читать дальше

Кэширование части страницы в CodeIgniter

Владимир | | CodeIgniter, PHP, Web разработка.

CodeIgniter имеет встроенную библиотеку кэширования страниц. Но она работает только с целыми страницами, т.е. вы не можете кэшировать часть страницы.

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

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

Специально для таких случаев я написал небольшую библиотеку (ссылка на архив с ней находится внизу страницы).
Читать дальше

Облако тегов для сайта (кластеризация)

Владимир | | CodeIgniter, PHP, Web разработка.

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

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

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

Поддержка автодополнения для сторонних библиотек в Eclipse

Владимир | | Eclipse, PHP, Web разработка.

Современную IDE сложно представить без функции автодополнения кода. По большому счету эта функция экономит время больше чем любая другая.

Во-первых, вы пишите только первые символы, а оставшуюся часть слова подставляет IDE. Во-вторых, выполняется автоматическая проверка. Если автодополнение не появилось, значит, вы где-то ошиблись.

Сегодня речь пойдет о поддержке этой функции в Eclipse. Для того, чтобы автодополнение работало, IDE должна знать где размещены исходные файлы библиотек.

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

Допустим, вы используете в текущем проекте библиотеку Adodb и хотите, чтобы работало автодополнение для ее классов.
Читать дальше

История одного мини теста или почему не стоит изобретать велосипед

Владимир | | MySQL, PHP, Web разработка.

О том, что кэширование может значительно увеличить скорость работы сайта, знают все. Но в некоторых случаях создание кэша – не самый лучший вариант.

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

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

Выполнить поиск в базе – не проблема. Но меня заинтересовал другой вопрос. Не будет ли быстрее искать данные в текстовом файле, а не базе?
Читать дальше

Как выбрать хостинг

Владимир | | Hosting, Web разработка.

Блог Six Revisions опубликовал очень интересную подборку инструментов для анализа хостинга.

И, думаю, три из них могут значительно упростить выбор хостинга для начинающих web мастеров.

Как известно, самое сложное – найти объективную информацию о хостинге. В рекламе хостера все замечательно. Доверять отзывам на различных форумах можно, но не всегда понятно кто их оставляет, конкуренты или действительно бывшие пользователи.

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

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

Как подключить Gravatar (PHP скрипт)

Владимир | | HTML, PHP, Web разработка.

Сервис Gravatar за последнее время стал очень популярным. Даже в админке WordPress’а теперь отображаются аватары комментаторов. Кстати, довольно удобно. Но речь не о WP.

В этой заметке я расскажу, как добавить Gravatar на собственную web страницу.

Для того чтобы получить картинку, вам нужно указать несколько параметров и на их основе сформировать URL. Рассмотрим их подробнее:

1) eMail пользователя, иконку которого вы хотите добавить.
2) Размер иконки (в пикселях).
3) Рейтинг иконок, которые вы разрешаете показывать. Сервис позволяет присвоить иконке рейтинг, на основе которого можно отфильтровать неприличные или содержащие ненормативную лексику аватары.
4) URL картинки, которая будет загружена если gravatar отсутствует.

Теперь напишем функцию, формирующую URL.
Читать дальше

Объектно-ориентированное программирование на PHP. Сортировка объектов средствами SPL.

Владимир | | PHP, Web разработка.

К сожалению, использование объектно-ориентированных возможностей PHP встречается не так часто, как хотелось бы. Конечно, тут есть объективные причины, например, не все хостеры предоставляют PHP5 (именно с этой версии появилась нормальная поддержка ООП).

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

Но ООП – это не «модная фишка». Эта парадигма программирования при правильном использовании позволяет сделать php скрипты понятнее, сократить количество ошибок, и, самое главное, увеличить скорость разработки (за счет повторного использования кода).

В этой заметке я хочу рассказать о нескольких таких возможностях и показать пример работы с SPL (StandardPHPLibrary).

Предположим, у нас есть задача, нужно отсортировать массив. Ничего сложного, можно просто использовать функцию sort.

Но, представим, что задача немного сложнее. Сортировать нужно сложные объекты, например, экземпляры классов. Они обычно содержат несколько свойств (переменных), каждое из которых может быть использовано при сортировке.
Читать дальше