Предлагаю читателям «Хабрахабра» перевод публикации «30 Amazing PHP Libraries for Programmers and Developers». Авторы собрали несколько удивительных PHP-библиотек, которые помогут реализовать некоторые классные вещи, не прилагая много усилий. Цель обзора состоит в том, чтобы преподнести что-то новое, поэтому список не включает популярные библиотеки.
Головинов Антон @realise
User
Нормализация запросов в Директе или немного о подводных камнях в подборе слов
2 min
5.9KКоллеги очень часто просят меня писать побольше о подводных камнях и различных секретах Яндекс.Директ. В этой заметке я расскажу о подводном камне №1 — нормализации или склейке запросов.
Итак, есть клиент РК в тематике авиабилеты. Тематика очень широкая, огромное количество трафика. Есть задача «показываться любому кто ищет любую информацию о любом направлении, доступном для авиаперелета, цена перехода должна быть минимально возможной — 30 копеек». Ок, задача понятна, настраиваем (здесь — подробнее о том как настраивать одноцентовые РК).
Первичный медиаплан показал очень неожиданную картину. Вот фрагмент скриншота из «Оценки бюджета»
Статистика показов дает нам информацию о том что весьма непопулярное у туристов направление в столицу Индии запрашивается в 4-8 раз чаще чем популярные направления в Европу. Но это же бред какой-то! (с)
Смотрим семантическое ядро запроса «Москва Дели» и очень удивляемся.
+65
mod_rewrite — просто о сложном
4 min
63KЧто это такое?
mod_rewrite — это модуль для веб-сервера Apache, предназначенный для преобразования URL-ов. Модуль использует в своей работе правила, которые могут быть описаны как в конфигурации сервера (httpd.conf), так и в файлах .htaccess непосредственно в файловой структуре Вашего сайта. Правила описываются в виде регулярных выражений PCRE
Hello world
Простейший пример. Допустим, Вы захотели, чтобы никто не знал, что Ваш сайт написан на PHP и решили замаскировать расширения файлов. Можно, конечно, внести соответствующую директиву в конфигурацию Apache и тогда все файлы с расширением ".msl" («My Super Language») будут обрабатываться интерпретатором PHP. Но можно поступить проще:
создаем в корне нашего сайта файл .htaccess со следующим содержимым
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.msl$ $1.php [QSA,L]
Первая директива включает механизм mod_rewrite в текущей папке и во всех ее подпапках. Вторая указывает модулю mod_rewrite, что текущая папка в файловой системе соответствует корню сайта. Третья — непосредственно правило преобразования URL.
Прочесть его можно так:
Если сразу после начала строки ("^") идет произвольное количество любых символов ( "(.*)" ), причем мы хотим запомнить, что именно это за символы, окружая их скобками, затем идет точка ("\.") (экранируем точку, потому что одиночная точка — это просто любой символ), затем символы «msl» и на этом строка заканчивается ("$"), то заменим исходный URL на следующий: возьмем первую запомненную подстроку в скобках из правила, прибавим к ней ".php", добавим все дополнительные параметры адреса, которые могли быть "[QSA]" и на этом закончим, не будем применять дальнейшие преобразования, если они есть "[L]"
Все, теперь Вы можете смело менять все ссылки, заканчивающиеся на ".php" на ".msl" и писать в своем блоге, что изобрели новый скриптовый язык. Apache, встретив ссылку на «index.msl» с помощью mod_rewrite на лету преобразует ее в «index.php» и вызовет нужный скрипт.
А что еще умеет mod_rewrite?
+21
Как готовить кошек, или аттракцион невиданной щедрости от Microsoft
6 min
836Уха как квинтэссенция рыбалки
Частенько слышу от разных людей, что Микрософт-де жадный: «Да вы там ухи объелись нереально!», ну и другие, более крепкие выражения.
На что я резонно возражаю – кошек надо уметь готовить, господа. Ведь на самом деле для ИТ-шных компаний Microsoft, при должной сноровке, является очень щедрым партнером. Есть ряд приемов по ужению рыбы, отчего результирующая уха становится гораздо наваристей.
Все секреты сразу раскрывать не буду, оставлю на потом, а сейчас расскажу, что самый обычный веб-дизайнер/девелопер может получить от Microsoft.
Допустим, я делаю сайты, и у меня есть ИП. Ну или ООО. Короче, как-то я решаю вопросы взаимодействия с родным государством. Сайты я разрабатываю, скажем, в ФАРе, на HTML версии 4, а для особо сложных сайтов MySQL у меня еще подвязан, своя админка не хуже битрикса и я даже InnoDB всегда юзаю, а не MyISAM. Вот такой я нереально суровый пацан (хотел написать – из Челябинска, но так как я знаю, что в Челябинске много веб-профи, прекрасные пельмени и достойная улица Покровка с красивыми металлическими статуями, то воздержусь).
Что такой простой труженик мыши и курсора может получить с Microsoft? На самом деле, очень много разных полезностей можно получить. Давайте об этом и поговорим.
+25
Выполнение фоновых процессов из PHP в Windows
2 min
1.8KВ *nix, запуска фоновых процессов, выполняется простым добавлением амперсанда (&) к команде. В Windows, это не так просто сделать из PHP.
Если вы используете в PHP функции системных вызовов, как exec, system, passthru или shell_exec, то эти методы приводят к подвисанию программы, которая ждет завершения работы вызванного процесса.
Описанные ниже методы предполагают, что вы используете PHP-CLI (работу с php из командной строки). Запуск PHP на веб-сервере требует правильной настройки конфигурации и прав доступа, такие как safe_mode, safe_mode_exec_dir и т.д.
Для примера, мы хотим вызвать cmd из PHP, но чтобы программа продолжала выполнять действия.
Приведенные ниже примеры не работают.
exec(«cmd»);
exec(«cmd >NUL»);
exec(«cmd /c cmd»);
exec(«start /b cmd»);
exec(«runas cmd»);
В каждом случае, PHP ждет пока cmd закроется.
Существуют несколько обходных путей, упомянутых в комментариях к документации по PHP к функции exec()
Краткое изложение этих методов, в порядке предпочтения:
Начало процесса с использованием popen и pclose
Этот код должен работать на Linux и Windows.
$exe = «cmd.exe»;
pclose(popen('start «bla» "'. $exe. '" '. escapeshellarg($args), 'r'));
Начало фонового процесса с использованием объекта WScript.Shell
Этот код работает только в Windows.
$WshShell = new COM(«WScript.Shell»);
// Запуск cmd в свернутом состоянии
$oExec = $WshShell->Run(«cmd», 7, false);
// Запуск cmd в фоновом режиме, иконка на панели задач не выводится
$oExec = $WshShell->Run(«cmd /C dir /S %windir%», 0, false);
Более подробнее о методе Run() читайте в msdn.
Начало фонового процесса с использованием утилиты PsExec
Этот метод требует установки бесплатной утилиты PsTools от Sysinternals
exec(«psexec -d cmd.exe»);
Автор этого текста root{Собака}imcms.ru можете отправит ему инвайт.
Если вы используете в PHP функции системных вызовов, как exec, system, passthru или shell_exec, то эти методы приводят к подвисанию программы, которая ждет завершения работы вызванного процесса.
Описанные ниже методы предполагают, что вы используете PHP-CLI (работу с php из командной строки). Запуск PHP на веб-сервере требует правильной настройки конфигурации и прав доступа, такие как safe_mode, safe_mode_exec_dir и т.д.
Для примера, мы хотим вызвать cmd из PHP, но чтобы программа продолжала выполнять действия.
Приведенные ниже примеры не работают.
exec(«cmd»);
exec(«cmd >NUL»);
exec(«cmd /c cmd»);
exec(«start /b cmd»);
exec(«runas cmd»);
В каждом случае, PHP ждет пока cmd закроется.
Существуют несколько обходных путей, упомянутых в комментариях к документации по PHP к функции exec()
Краткое изложение этих методов, в порядке предпочтения:
Начало процесса с использованием popen и pclose
Этот код должен работать на Linux и Windows.
$exe = «cmd.exe»;
pclose(popen('start «bla» "'. $exe. '" '. escapeshellarg($args), 'r'));
Начало фонового процесса с использованием объекта WScript.Shell
Этот код работает только в Windows.
$WshShell = new COM(«WScript.Shell»);
// Запуск cmd в свернутом состоянии
$oExec = $WshShell->Run(«cmd», 7, false);
// Запуск cmd в фоновом режиме, иконка на панели задач не выводится
$oExec = $WshShell->Run(«cmd /C dir /S %windir%», 0, false);
Более подробнее о методе Run() читайте в msdn.
Начало фонового процесса с использованием утилиты PsExec
Этот метод требует установки бесплатной утилиты PsTools от Sysinternals
exec(«psexec -d cmd.exe»);
Автор этого текста root{Собака}imcms.ru можете отправит ему инвайт.
+4
Поиск драйверов по id устройства
1 min
12KЯ админю маленькое предприятие, и немного занимаюсь эникейством, например винду вернуть в рабочее состояние, переустановить, драйвера поставить посвежее.
Периодически, попадаются железки, к которым и диска с драйверами нет, и по коду экземпляра устройства из диспетчера устройств не находится ничего ни в Google, ни в Яндексе.
Периодически, попадаются железки, к которым и диска с драйверами нет, и по коду экземпляра устройства из диспетчера устройств не находится ничего ни в Google, ни в Яндексе.
+27
Обработка горячих клавиш при помощи javascript
2 min
2.7KЗахотелось мне в своем проекте использовать горячие клавиши для управления содержимым. Нажал esc — закрылось диалоговое окно, ctrl+left — открылся следующий раздел… Порылся в гуглях-яндексах и, не найдя идеала, решил написать свое решение.
Теперь оно у меня есть — маленькое, легкое, независимое от от других библиотек.
Мне достаточно подключить javascript-файл и написать
Готовый javascript можно взять здесь.
UPD Улучшен код. Спасибо, Yeah, aubt.
Теперь оно у меня есть — маленькое, легкое, независимое от от других библиотек.
Мне достаточно подключить javascript-файл и написать
$e('ctrl esc').bind("alert('Ыыы');");
Готовый javascript можно взять здесь.
UPD Улучшен код. Спасибо, Yeah, aubt.
+14
netboot.me — загрузим все!
1 min
2.4KОткрылся уникальный сервис для удаленной загрузки/установки операционных систем без толстой «книжки» с дисками наперевес.
С сайта скачивается небольшой образ загрузочного диска (есть варианты для CD/DVD, USB флешек и даже floppy дисков), компьютер загружается с него, определяет сеть (нужен доступ в интернет, естественно), и предлагает варианты загрузки и установки операционных систем из имеющихся на сайте.
На данный момент доступны основные популярные дистрибутивы Linux и BSD систем, также на сайте есть кнопочка для добавления своей любимой операционки.
В процессе добавления можно указать тип образа (Linux Kernel + Initrd, CD ISO образ, и т.д.).
Также на сайте есть небольшой скринкаст, демонстрирующий процесс.
По моему отличная идея для стартапа. :)
ссылка: http://netboot.me
С сайта скачивается небольшой образ загрузочного диска (есть варианты для CD/DVD, USB флешек и даже floppy дисков), компьютер загружается с него, определяет сеть (нужен доступ в интернет, естественно), и предлагает варианты загрузки и установки операционных систем из имеющихся на сайте.
На данный момент доступны основные популярные дистрибутивы Linux и BSD систем, также на сайте есть кнопочка для добавления своей любимой операционки.
В процессе добавления можно указать тип образа (Linux Kernel + Initrd, CD ISO образ, и т.д.).
Также на сайте есть небольшой скринкаст, демонстрирующий процесс.
По моему отличная идея для стартапа. :)
ссылка: http://netboot.me
+15
Защита прав потребителей в России: Мы далеко не последние
6 min
8.5KУстал я слушать от знакомых причитания по качеству защиты прав покупателей в России и завистливые возгласы: «Вот на западе....».
Нет, я не хочу сказать что я негативно отношусь к западу, просто хочу показать, что и у наших граждан, есть защита. И закон о защите прав потребителей далеко не такой, каким многие его представляют.
Нет, я не хочу сказать что я негативно отношусь к западу, просто хочу показать, что и у наших граждан, есть защита. И закон о защите прав потребителей далеко не такой, каким многие его представляют.
+163
Одноразовая почта
1 min
1.6KИногда не хочется светить свой e-mail, чтобы пройти регистрацию на каком-либо ресурсе. Как же быть? Использовать одноразовую почту. Суть такова — нажимаем на кнопку «получить аккаунт» и вуаля, валидный e-mail на 10 минут. Если почта нужна более чем отведенный срок, то можно без проблем его продлить.
+6
Делаем Windows чуточку удобнее: Вкладки в Explorer
3 min
1.7KЗдравствуй уважаемое Хабрасообщество. Это мой первый пост и бла, бла, бла. Так что подсказывайте, если что не так. :)
Итак приступим.
Довольно таки недавно поставил Linux рядом с Windows. И в Linux, а точнее в Konqueror, мне понравилось работать, с файлами, используя вкладки. Думал поискать что-нибудь похожее для Windows, а точнее для Explorer, подобную фичу и как-то забылось так и не поискал. А тут недавно увидел QTTabBar. Данный плагин позволяет приделать обычному Explorer вкладки.
Итак приступим.
Довольно таки недавно поставил Linux рядом с Windows. И в Linux, а точнее в Konqueror, мне понравилось работать, с файлами, используя вкладки. Думал поискать что-нибудь похожее для Windows, а точнее для Explorer, подобную фичу и как-то забылось так и не поискал. А тут недавно увидел QTTabBar. Данный плагин позволяет приделать обычному Explorer вкладки.
+16
Загрузка в XML строки содержащей entity references (& nbsp; и т.д.)
2 min
4.6KЗадача
В системе с использованием XSLT шаблонов предоставить контентерам возможность просто использовать привычные для них имена сущностей наподобие & nbsp; & mdash; и т.д. без необходимости использования цифровых определений типа & #160;, & #x00A0; или помещения спецсимволов в CDATA
Проблема
При загрузке в XML из базы данных множества блоков у меня возникла следующая проблема: Парсер ругался на неописанные сущности примерно следующим образом: «Entity: line 1: parser error: Entity 'yen' not defined».
Решение
Для того, чтобы при загрузке строки с описанием сущностей не возникало такой проблемы, нужно сделать то, что он от нас ожидает, т.е. описать эти сущности.
В системе с использованием XSLT шаблонов предоставить контентерам возможность просто использовать привычные для них имена сущностей наподобие & nbsp; & mdash; и т.д. без необходимости использования цифровых определений типа & #160;, & #x00A0; или помещения спецсимволов в CDATA
Проблема
При загрузке в XML из базы данных множества блоков у меня возникла следующая проблема: Парсер ругался на неописанные сущности примерно следующим образом: «Entity: line 1: parser error: Entity 'yen' not defined».
Решение
Для того, чтобы при загрузке строки с описанием сущностей не возникало такой проблемы, нужно сделать то, что он от нас ожидает, т.е. описать эти сущности.
-5
Сравнение 9-ти способов обфускации email адресов
1 min
1.3KВечная проблема при публикации своего email, конечно же не хочется получать в итоге спам на свой ящик, и тут мы начинаем прибегать к различным способам обфускации (чтоб было понятно людям, но не понятно ботам) нашего email адреса.Silvan Mühlemann занялся этим вопросом, создал 9 разных email ящиков, защитил их 9 способами, разместил их на популярном сервере, чтоб их хорошенько проиндексил google, подождал (всего, ничего) 1.5 года и вот он результат...
+47
Ускорение загрузки Windows for fun and profit
4 min
803K Пожалуй, начну с того, что если перегружаться 15 раз в год, то любой «тюнинг» процесса загрузки отнимает больше времени, чем будет выиграно на перезагрузках за все время жизни системы. Однако, спортивный интерес берет свое, тем более, что люди интересуется процессом оптимизации быстродействия. А загрузка оказалась самым очевидным кандидатом в примеры того, как на мой взгляд должен выглядеть этот самый процесс. Сразу скажу, что грузиться будем с 5400 rpm винта, грузиться будем в «рабочую» систему: помимо недобитой вендорской крапвари там стоит еще куча всякого типа вижуал студии, антивируса, скайпа, стима, гуглапдейтера и пр…
Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
Про то, почему отключение pagefile-а скорее вредно, чем полезно — как нибудь в другой раз, а пока…
+500
Разрабатываем свой Sidebar Gadget
7 min
21KКак часто вы пользуетесь гаджетами боковой панели Windows? А хотелось бы написать свой? Не простой гаджет «Hello World», а действительно полезный, который помог бы оптимизировать затраты времени на определенный кусок работы. Тогда давайте рассмотрим случай, когда вам нужно мониторить нагрузку 10-20 серверов.
+63
Программа от SysInternals превращает ваш ПК в виртуальную машину
1 min
8.5KDisk2vhd, новый шедевр от Марка Руссиновича — простая в использовании утилита, позволяющая создать образ загруженной, работающей системы в формате Virtual PC. Нужно всего лишь скачать и запустить программу, выбрать диск, на котором расположена ваша Windows и указать, где следует сохранить виртуальную машину. Поддерживается 32 и 64-bit Windows XP SP2 и новее.
Само приложение выглядит так:
А вот скриншот уже созданной и загруженной виртуальной машины:
Не стоит и говорить, насколько это приложение может оказаться полезным для целей бекапа или разнообразных экспериментов над системой и программами.
Страничка программы: technet.microsoft.com/en-us/sysinternals/ee656415.aspx
Само приложение выглядит так:
А вот скриншот уже созданной и загруженной виртуальной машины:
Не стоит и говорить, насколько это приложение может оказаться полезным для целей бекапа или разнообразных экспериментов над системой и программами.
Страничка программы: technet.microsoft.com/en-us/sysinternals/ee656415.aspx
+90
Консоль в Windows — никому не нужна?
4 min
79KОчень часто приходилось слышать такое от людей, которые много времени проводят за администрированием и другими IT-забавами.
Я, за не очень долгий опыт реального администрирования пришел к обратному выводу. В консоли (командной строке) В Windows можно выполнять очень много разных операций, которые стандартными возможностями не выполняются или выполняются некорректно/неудобно/долго (нужное подчеркнуть)
Совсем недавно где-то на Хабре промелькнуло высказывание из серии «Не думал, что консоль в Виндах что-то может. Хотелось бы узнать об этом побольше».
Вот так и возникло желание написать небольшую статью про основные возможности консоли.
Я, за не очень долгий опыт реального администрирования пришел к обратному выводу. В консоли (командной строке) В Windows можно выполнять очень много разных операций, которые стандартными возможностями не выполняются или выполняются некорректно/неудобно/долго (нужное подчеркнуть)
Совсем недавно где-то на Хабре промелькнуло высказывание из серии «Не думал, что консоль в Виндах что-то может. Хотелось бы узнать об этом побольше».
Вот так и возникло желание написать небольшую статью про основные возможности консоли.
+131
10 шагов для добавления сайта в Яндекс.Новости и Google News
3 min
82KЯндекс.Новости и Google News являются крупнейшими новостными агрегаторами в России. Так, по данным TNS Russia в июне 2009 года Яндекс.Новости в день посещало чуть более 1,1 миллиона человек. Представьте, какой трафик на сайт могут дать подобного рода системы. И в отличие от, например, News2 и Smi2, новости попадают туда автоматически. Причем, для Google News не нужно совершенно ничего делать — главное, чтобы ваш сайт индексировался Гуглом. Для Яндекса нужно делать полнотекстовый фид со некоторыми тонкостями.
+55
Небольшая автоматизация работы с TortoiseSVN в Windows
2 min
3.8KTortoiseSVN – замечательный клиент для SVN. И ничего лишнего вроде бы нет и возможностей много.
Один лишь недостаток – работает все это дело через Explorer (Проводник). В других файловых менеджерах работа с TortoiseSVN несколько неудобнее, либо вообще невозможна.
Для Total Commander, пользователем которого я являюсь, решение есть (включить оверлей у иконок, да пользоваться кнопкой с popupMenu на клавиатуре), но на х64 системах оно не работает, проверил лично.
Один лишь недостаток – работает все это дело через Explorer (Проводник). В других файловых менеджерах работа с TortoiseSVN несколько неудобнее, либо вообще невозможна.
Для Total Commander, пользователем которого я являюсь, решение есть (включить оверлей у иконок, да пользоваться кнопкой с popupMenu на клавиатуре), но на х64 системах оно не работает, проверил лично.
+5
No to all
1 min
1.1KПри копировании большого количества файлов N-дцатое появление окна «Заменить имеющийся файл Х следующим файлом Х?» может вызвать вывих левой кнопки мыши.
Что делать, если одноименные файлы заменять не нужно, а привычку работать в виндовом эксплорере не побороть?
В таких случаях недостает кнопки «No to all» («Пропустить все»).
+73
Information
- Rating
- Does not participate
- Location
- Екатеринбург, Свердловская обл., Россия
- Date of birth
- Registered
- Activity