На днях по работе мне пришлось здорово поломать голову при работе с регулярными выражениями (регекспами от англ. – regular expressions). Проблема состояла в том, что до этого я их самостоятельно не писал и вообще не знал синтаксиса, а принимая во внимание, что доставать вопросами кого-то бы то ни было я не очень люблю, пришлось выкручиваться самостоятельно. Один грамотный человек, видя мои мучения, посоветовал найти в интернете программу RegexBuddy, которая, по его словам, мне облегчит жизнь.
Он оказался прав.
RegexBuddy - платная программа, стоит меньше $40, текущая версия – 3.5.0. По секрету скажу, что она есть на рутрекере (версия 3.4.2).
Регекспы используются почти во всех языках программирования и взаимодействия с клиентом (в том числе php и javascript). Они помогают пропарсить текст на предмет наличия определенной конструкции и возможности дальнейшей работы с этими полученными блоками. Можно:
просто узнать, если такое слово в этом предложении;
распознать ошибку в тексте и исправить ее на правильное слово/фразу;
произвести замену любого текста на любой текст;
менять построение текста (предположим, поменять блоки текста местами);
и много чего другого.
Можно заменять, фильтровать, объединять и делать кучу других операций, используя вот эти php-функции:
Кстати, для тех, кто собирается перейти на замечательный новый VDS хостинг и хочет сэкономить 10% при оплате в течение первых 3 месяцев, сделайте следующее:
Зарегистрируйтесь на сайте Avihost
После регистрации в разделе “Товары/Услуги” выберите FreeBSD VDS
Нажимаете кнопочку вверху “Добавить ВДС”
В появившейся форме выбираете тарифный план, оплату и вставляете код: BSD-Kw5mY
Все :)
PS Если вдруг код выдаст ошибку, пишите в комментариях, я напишу другой код:) Если вы использовали мой код, тоже напишите мне или через страницу Контакт, или в комментариях к этой записи.
Скоро я подробно напишу вам, как надо настраивать VDS на FreeBSD без apache.
Решил я сегодня глянуть на свой сайт сквозь призму возможных ошибок. В сам WordPress встроен механизм отображения ошибок всех запускаемых плагинов на front-end’e – так называемый debug-mode. Для того, чтобы увидеть ужас на своем сайте, вставьте в файл wp-config.php вот этот код:
if ( isset($_GET['mode']) && $_GET['mode'] == 'debug' )
define('WP_DEBUG', true);
В итоге при прописывании в строке браузера после url любой страницы сайта (в том числе и главной) ?mode=debug вы включите режим отображения ошибок. Если у вас стандартное отображение ссылок (то есть выглядит вот так: ?p=222), то надо прописывать следующим образом: ?p=222&mode=debug
А пока работа над новым постом об установке FreeBSD VDS зависла, я по-тихоньку добавляю всякие разные вещи для своего плагина BP GTM System. Фактически, основной функционал уже внедрен, осталось допилить его, добавить несколько ссылок для улучшения UX и UI, и можно будет делать релиз. Весьма надеюсь выпустить плагин до конца сентября, в крайнем случае в самом начале октября. Судя по отзывам, этот плагин стал “awesome” :) !
Его тестирование идет полным ходом на сайте . Он полностью на английском (потому что тестеры там тоже на английском говорят), но если появится большое количество желающих покрутить его до релиза на русском языке, то я запущу соответствующий поддомен. На данный момент все (почти все) возможности плагина описаны на странице .
Никогда бы не подумал, что это так важно, но, оказывается, в конце php-файлов лучше не закрывать php конструкцию фирменным ?> – это не гигиенично. А вдруг вы случайно поставите Enter после него? Или пробел… Или еще что непонятное, а после передачи в браузер эта конструкция выведет черт-те что. Причем тяжело предсказать, что именно, так как это зависит от файла, в котором была допущена такая оплошность.
Итак, php-файл, который содержит лишь php код, должен начинаться с <?php и не должен заканчиваться с ?>.
Написал тем людям, которые знаю, что любят самостоятельно что-то ковырять – но вдруг не понимают всей трагичности потенциальной ошибки…
Самым сложным для меня в программировании оказалось вовремя остановиться. Я достиг того уровня, когда могу воплотить то, что мне хочется, но все еще не умею вовремя останавливаться. Зачастую слишком много идей посещают, и крайне тяжело становится их классифицировать, распределять по степени важности и прочим критериям… Именно поэтому мне так нравится идея иметь под рукой (в интернете) нечто вроде менеджера задач. Думаю, все знают, что это такое, поэтому объяснять не буду. У меня есть отдельный сайт, на котором установлен , также иногда использую сервис Workable. Первый – монстрообразный, хотя жутко удобный, когда работает куча людей с крайне высокой активностью; второй – скромненький, с минимально необходимым функционалом, для пары человек. Оба – красивые по дизайну и функционалу. Оба – меня не удовлетворяют. Не могу точно выразить, чем именно, возможно тем, что написаны не мной :) А еще это крайности… Мне хочется чего-то среднего между ними, на основе своих же знаний о WP и BP (кстати, оба предыдущих варианта не знаю о существовании WP+BP). Вот я и задумался месяц назад…
А получился у меня BP GTM System, или BuddyPress Task Management System. Вот старая демка (ей пару недель):
Скоро я дам вам возможность самим крутить этот плагин на demo.
Не удержался этой ночью и решил установить сырой браузер Internet Explorer 9. Большинство из вас знает, что он начинает поддерживать CSS3 и якобы быстрее работает, чем иные браузеры (по крайней мере, быстрее предшественника IE8 ~ в 6 раз).
Знаете, а таки реально быстрее и действительно поддерживает основные CSS3 фишки… Ниже представлен скриншот моего сайта в девятом ослике:
CosyDale.com глазами IE9
Как видите, border-radius для div блоков понимает без проблем. Вот только для тега а – не понимает… Видите выделенный мой ник slaFFikв сайдбаре? Еще я нашел несколько мелких проблем с padding и margin.
Я не тестировал работу с HTML5.
В целом вердикт – мне нравится его скорость.
У кого стоит Windows Vista/7 можете скачать с официального сайта, после установки откроется страница тестирования. Дополнительную информацию можно, как обычно, .
Никому не говорите, что я потратил час на то, чтобы заново установить и настроить NotePad++. Напомню, что с помощью NPP я, собственно, и выполняю абсолютно все правки кода (css, html, php, sql, xml, xslt, txt, js, ini, log, htaccess и др.).
Некоторые время назад меня соблазнили установить . Установив (основная причина – подсказки и автозавершение), я понял, что получил нечто очень мощное и.. монстрообразное одновременно, так что толком попользоваться Aptan’ой даже не успел. Одновременно с установкой Aptana я получил сбой в системных настройках NPP, что меня весьма опечалило, так как исправить у меня не получалось. В итоге сегодня я снес Aptana, снес Notepad++ и заново поставил NPP.
Но опять возникла проблема с автозавершением и кусками кода, ярлыки на которые мне надо заменять на развернутый код (то есть ввел: div.cl, а получил <div class=""></div>). Старый добрый QuickText перестал работать как надо, потому мне пришлось искать альтернативу… Перебрав 3 варианта замены я понял, что лучше QT не найду, но автор перестал развивать свой плагин, но ведь есть общественность :)
Итог: проблема с пользовательской заменой была решена после загрузки и установки версии 0.2.2 из этой ветки обсуждения. Немного поковырявшись в настройках я пришел к выводу, что автозамену лучше поставить на комбинацию клавиш Alt+Enter, а языки ограничить следующим набором: css, html, php, xml, txt, js, sql.
Если кому интересно, то по ссылке ниже можете скачать измененные файлы плагина QuickText для Notepad++.
Вчера ночью мне один человек в твиттере предложил написать плагин с интересным функционалом. Кстати, про твиттер, советую вам подписаться на мои обновления, если вы там зарегистрированы, потому что там я публикую плагины и всякую интересную информацию про BuddyPress гораздо чаще, чем тут. Не пожалеете…
Если кратко о плагине – при наведении на аватар пользователя красиво появляется окошечко с определенной информацией о пользователе. Работать будет на Ajax, так что на загрузку сервера не повлияет практически. Будет админка для выбора, что же именно отображать, и еще кое-что :) Если есть какие-нибудь идеи – пишите. На выходных я буду думать, как его сделать, а на следующей неделе надеюсь выпустить.
Это я таким образом отвлекаюсь от CD ABB – он меня в очередной раз довел до тупика :) Слишком много я пытаюсь предусмотреть.
Человек может радоваться в самых порой глупых ситуациях. Вроде у меня и день никакой – я не смогу купить себе зеркалку сегодня, так как ее банально за 15 минут до меня забрали, а другой не было (и теперь придется ждать неизвестно сколько, пока с таможни привезут застрявшую партию), но в тоже время радоваться еще получается.
Альберт – радуйся, мне удалось, благодаря указаниям Sol’а, исправить синтаксические ошибки в коде плагина CD Advanced BuddyBar (ABB) и теперь осталось лишь причесать админку и прикрутить полное управление BuddyBar’oм. На самом деле, не так уж и много работы. А проблема была вот в этой строке:
$sql = $wpdb->prepare( “UPDATE {$bp->abb->table_name_groups} SET name = %s, description = %s, order = %s WHERE id = %d”, $this->name, $this->description, $this->order, $this->id );
А надо было вот так:
$sql = $wpdb->prepare( “UPDATE {$bp->abb->table_name_groups} SET name = %s, description = %s, `order` = %s WHERE id = %d”, $this->name, $this->description, $this->order, $this->id );
Делов-то кавычки бабахнутые (то есть не обычные одинарные), но как они мне попортили жизнь…
Ну и еще потом пару моментиков исправил, подчистил код от лишних проверок… Вот думаю теперь, как быстро получится доделать версию, которая меня удовлетворит и которую я смогу выпустить в люди.
В предыдущей записи в этой рубрике я говорил о том, что изменю дизайнстраницы BuddyPress шаблонов. Я это вчера ночью сделал :) Посмотрите, нравится ли вам? Что-то, может, надо подправить?
Стоит ли развивать подобный вариант представления информации у меня на сайте? Вам нравится такой формат?
Если вам понравится, то можно сделать аналогичной на вид и страницу плагинов – где выделенной вкладкой будет текущая версия BuddyPress, а внутри блока будет таблица с названием и описанием.
Сегодня выложу перевод BuddyPress Ajax Chat. Будут мелкие правки в самом коде чата, чтобы можно было поставить на рабочий сайт. Я надеюсь :)