Статьи по программированию

Читаемая разбивка текста на страницы

Задача описанная в заголовке иногда возникает в разработке сайтов. Суть в следующем: есть очень большой текст (мегабайты), который хотелось бы не выдавать в одну страницу, а разбить на некоторое количество кусков примерно одинакового размера. Объём и структура текста заранее неизвестны. В качестве входных параметров выступают сам текст и номер страницы, которую надо показать. И важное замечание: речь пойдёт о просто текстах без какой-либо HTML-разметки. Тех самых, что живут в файлах с расширениями .txt и MIME-типом text/plain.

Первый вариант кода, что приходит в голову выглядит так:

Программное определение статуса Skype через сервисы skype.com

Система интернет-телефонии Skype предоставляет возможность своим пользователям показать их статус посредством изображения, находящегося по стандартному адресу http://mystatus.skype.com/дизайн_картинки/имя_в_скайп. Если вам необходимо использовать информацию о статусе на своем сайте, но предлагаемые изображения (см. здесь) вас не устраивают, можно написать скрипт на PHP, который получит эту информацию программно.

Программное определение статуса ICQ через сервисы icq.com

Чтобы самым простым образом программно в PHP определить статус пользователя в ICQ, воспользуемся сервисом сайта www.icq.com, который отдаёт картинку со статусом. Сервис работает примерно так. При запросе адреса http://status.icq.com/online.gif?icq=HOMEP_ICQ сервер проверяет наличие пользователя в сети, его настройки безопасности и просто перенаправляет клиента на одну из трех картинок, приведённых в заголовке заметки.

Ограничение числа подключений при скачивании файлов в PHP

Развивая тему закачки файлов через скрипты PHP с ограничением скорости рассмотрим ограничение количества скачиваемых файлов.

Для ограничения количества закачиваемых файлов, по какому-либо критерию, нам потребуется организовать обмен данными между двумя копиями одного скрипта, запущенными в пределах сеанса клиента. Это можно организовать через сохранение информации о запуске скрипта в базе данных или файле, установкой «куки» или использованием сессионных переменных. Правда, ограничения привязанные к сессии или cookie вряд ли могут надёжно помочь нам в этом случае. Клиенту достаточно очистить cookies или воспользоваться другим браузером или программой закачки. Единственный реальный на мой взгляд способ должен использовать ограничение количества закачиваемых файлов на основе IP-адреса клиента.

Ограничение скорости скачивания файла в PHP

В предыдущей заметке я рассмотрел способы отдачи файла через скрипт PHP. Приведенная там функция file_download() позволяет отдать произвольный файл, имя которого может быть параметром скрипта или быть заданным константой. Скорость закачки этого файла будет определятся только возможностями сервера и канала связи между ним и клиентом.

В случае большого количества подключений к одному или нескольким файлам через скрипт, может наблюдаться перегрузка сервера. Один из методов борьбы с такой перегрузкой – это ограничение как скорости скачивания файла, так и числа подключений от одного клиента или IP-адреса. Поскольку файл у нас отдаётся клиенту программно, то и регулировать скорость отдачи файла и число подключений мы будем таким же образом.

Скачивание файлов в PHP

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

Krumo versus print_r() & var_dump()

Krumo

Заголовок у заметки, конечно, не очень получился. Какое противостояние может быть между боксером-тяжеловесом и забиякой-пятикласником? С появлением Krumo обе вышеуказанные функции PHP можно смело отправлять на свалку истории.

Самые главные функции PHP

Все, кто занимается разработкой и написанием кода делают ошибки. Это относится не только к PHP, а к любому языку программирования. Потому средства отладки занимают важное место в арсенале любого программиста. PHP ими тоже не обделён. Ошибки фатальные, связанные с неправильным синтаксисом обычно выдаются прямо в браузер.

Статические переменные, function_exists и быстродействие

Итак, есть очень часто используемая функция из которой может вызываться другая. А может и не вызываться. Чтобы вызвать вторую функцию в первой проверяется ее существование. Существует - вызываем, не существует - не вызываем. Проверка существования искомой функции производится посредством функции function_exists. Т.е. при каждом вызове первой функции проверяется наличие второй. И так тысячу раз. Или мильён.

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

А что быстрее?

Матросы на зебрахъ, или Как раскрасить Drupal в цвета российского флага

Возникла тут с дикого утреннего бодуна после отгремевшего вчера предновогоднего корпоративчика мысль раскрасить друпал в цвета российского флага. Точнее его таблицы.

Возможность отличить четную строку таблицы от нечетной предоставляется в ядре Drupal, в стандартом выводе таблиц для каждой строки tr присутствуют классы odd и even. А при выводе нод есть переменная с метким названием $zebra, указывающая на четность или нечетность ноды в списке. Но иногда возникает необходимость (дизайнер, гад, нарисовал) отличать каждую третью или десятую строку таблицы и соответствующим образом изменять её внешний вид при помощи CSS-правил.

Синдикация материалов