Иногда при написании скриптов, предназначенных для выполнения длительных операций, возникает необходимость определить, каким именно способом запущен PHP-интерпретатор: из командной строки или же из Web-сервера. Помочь в этом может функция php_sapi_name(), которая возвращает строку, описывающую SAPI (подсистему сервера), которая использовалась.
- Перово, Москва, Россия
- me@4xpro.ru
- x4_pro
- XXXXPro
Новости сайта в Telegram
t.me/4x_proКомпьютерное
Немного о юзабилити таблиц
Часто при разработке CMS требуется вывести таблицу с какими-то элементами, которые можно выбирать и редактировать (например, список страниц сайта или список вопросов в FAQ). Казалось бы, что проще: достаточно использовать всего три тега — table, tr, td и все. Однако если список будет длинный, да еще названия элементов могут быть длинными и растягиваться на несколько строчек, то пользоваться такой таблицей будет не очень удобно. Можно дать несколько советов, как сделать такую таблицу более удобной. Читать далее…
Отслеживаем медленные запросы или Почему тормозит Web-сервер
Бывают ситуации, когда Web-сервер тормозит, медленно выдает страницы, а что именно является причиной, непонятно. Первое что приходит в голову — поставить в скриптах контрольные точки, в которых фиксировать время выполнения скриптов. Это может быть достаточно трудной задачей, а при большой нагрузке и вовсе привести к зависанию. Поэтому сначала лучше попробовать встроенные средства Apache и MySQL: mod_status и лог медленных запросов.
Рекурсивный chmod только для каталогов
Часто сталкивался с ситуацией, когда для каталогов нужно выставить права 755, а для файлов — 644. Обычно решал так:
$ chmod -R 644 ./
а далее проставлял 755 вручную для каталогов, но это неудобно, особенно при глубокой вложенности. Сегодня нашел другое решение: можно формировать список файлов с помощью find, а затем вызывать chmod с помощью xargs. Т.е. получаем:
$ chmod -R 755 ./
$ find ./ -type f -print | xargs chmod 644
Если требуется наоборот, выполнить команду только для каталогов, то после -type нужно указать d вместо f. Важно так же помнить про права доступа (т.е. если сначала поставить всем 644, а потом пытаться повысить каталогам до 755, могут начаться ошибки доступа).
Свой сайт: с чего начать?
Многие люди, впервые задумавшиеся о создании своего сайта, не знают, с чего начать и поэтому начинают работу с самого очевидного: либо с дизайна, либо с доменного имени. Но это не самый удачный подход. Хотя бы потому, что без представления о том, что на сайте должно быть, сколько (хотя бы приблизительно) будет страниц, как между ними будет организована навигация пользователей, трудно продумать одну из основных составляющих дизайна — меню сайта.
Поэтому я решил предолжить небольшой план, которого придерживаюсь сам при работе над сайтами: Читать далее…
Боковые вкладки в Chrome
UPD: увы, тема уже неактуальна. Пару лет назад боковые вкладки в Chrome убрали окончательно и бесповоротно.
Не раз замечал, что когда в броузере открыто более десятка вкладок, у меня резко падает производительность труда. И дело не в компьютере (его возможностей вполне хватает), а в том, что я начинаю в этих вкладках путаться, больше времени уходит на поиск нужной вкладки и нужно точнее целиться мышкой для переключения (приучить себя к Ctrl+Tab в броузере так и не получилось).
Но недавно узнал, что в последних версиях Chrome есть экспериментальная функция: показ вкладок сбоку, а не сверху. Попробовал... Читать далее…
Загрузка JavaScript-библиотек с Google Loader
Наверное, каждый, кто делал несколько сайтов с помощью jQuery или каких-то других больших JavaScript-библиотек, задумывался, насколько удобнее было бы брать одну и ту же копию библиотеки для всех сайтов и сколько траффика можно было бы сэкономить.
К этой же мысли пришли и в Google, создав Google Loader API. Работает он следующим образом: на сайт подгружается небольшой JavaScript, который может загружать jQuery, jQuery UI, Google Maps, SFWObject, Prototype и еще несколько известных библиотек прямо с серверов Google.
Это дает целый ряд преимуществ: Читать далее…
Pixlr -- редактируем фото онлайн
Каждый, кто делал сайт с возможностью загрузки фото или хотя бы аватаров, наверное, задумывался о том, что хорошо бы сделать возможность пользователю отмасштабировать или обрезать фото прямо онлайн. Недавно я нашел весьма интересное решение: онлайн-редактор Pixlr, сделанный на Flash. По возможностям он мало уступает ранним версиям Photoshop (есть все те же основные инструменты, поддержка слоев, фильтров, которые были в Photoshop 7). Кроме того, имеется и более простая версия Pixlr Express, которая позволяет применить набор эффектов (изменение размера, обрезка, коррекция красных глаз, изменение баланса белого и т.п.) к изображению. Открывать в редакторе можно изображения как с URL, так и со своего компьютера в форматах JPG, TIFF, PSD, PNG и других.
Самый простой способ подключить редактор к своему сайту — открывать его в IFRAME. Но в этом случае пользователю придется сохранять отредактированный файл на свой компьютер, а потом грузить его на сайт. Неудобно. Поэтому лучше использовать Pixlr API для открытия и сохранения файлов прямо на сайт. API очень прост в освоении:
Блок высотой на всю страницу и фиксированный "подвал" снизу
Давно хотел разобраться, как верстать сайт с блоком, который будет растягиваться по высоте на всю страницу, и наконец-то это сделал. Как выяснилось, все просто: нужно и тегу body, и тегу html указать в стиле высоту 100%, а после этого задать для нужного блока height: 100%, или min-height: 100%, если требуется растягивать блок по вертикали при большом объеме контента.
Но мне требвалось не только сделать такой блок, но и разместить внизу "подвал" так, чтобы он был всегда снизу и имел фиксированную высоту в пикселях. Причем была возможна ситуация, когда в основном блоек контента окажется больше, чем на одну страницу, и в этом случае "подвал" должен оказаться после его окончания (т.е. вариант со стилем position: absolute; bottom: 0 для подвала не подходил).
В итоге я сделал у "подвала" отрицательное поле сверху равным высоте блока, а в основной блок вложил еще один с положительным отступом снизу (тоже равным высоте), чтобы "подвал" не накладывался на контент. В итоге получился примерно такой код: Читать далее…
Осваиваем Google Maps API
Сегодня начал осваивать API Google Maps. Потребовалось сделать карту Москвы с метками, при щелчках по которым будет происходить переход на страницы, описывающие находящиеся там объекты. Как выяснилось, все предельно просто. Но расскажу по порядку.
Читать далее…