All streams
Search
Write a publication
Pull to refresh
49
1.6
Рикки Мангуст @RikkiMongoose

Программист

Send message
В версии 2.0 — будет :)
А нечего было про WordPress гадости писать ;)
На wordpress svn и в github я тоже обновил. Так что смело устаскивайте в свой fork обновления :)
Код подправил. Посмотрите — нормально?
Есть проблема — автор — это я и есть :)
Спасибо на за подробный разбор.

> * Класс «socialusers» и шорткод «userid» могут вызвать конфликт с другими плагианами, которые решили свои классы и шорткоды так же назвать. Берите более уникальные называния, например с префиксом: Rikki_Social_Users и [rikki_userid]. Было много примеров где знаменитые плагины были вынуждены менять свои шорткоды.
==

Это верно. Всё изучение особенностпей плагиностроения заняло 1 день, так что о стандарте я заботился по минимуму.

> * Функция add_shortcode появилась в WordPress 2.5. Если вы не собираетесь поддерживать WordPress 2.4, вам не нужно проверять её наличие с function_exists.

Это проверяется. См. строчку:

if (!function_exists ('add_shortcode') ) return;

> * Callback функции в объекте класса нужно было передавать по ссылке в php 4, а в php 5 все объекты по умолчанию будут передаваться по ссылке, поэтому можно писать array( $this, 'mce_buttons' ); без &.

Это для совместимости с версиями Wordpress младше 3.2 Gershwin, которые ещё могли работать на PHP4. Не знаю динамики, но возможно где-то ещё остались пользователи старых версий (3.2 вышла год назад).

> * Не стоит забывать о безопасности. Пользователь может ввести что-нибудь вроде: foo.com' onclick='...' в вместо URL, и ваш код подставит его XSS в вашу ссылку, даже если он не имеет право публиковать unfiltered_html. В данном случае нужно esc_url(). Подробнее: codex.wordpress.org/Data_Validation

Надо будет поставить. Хотя есть элемент свободы — плагины всё равно можно ставить только на standalone, и если блоггеру угодно ломать свой standalone через XSS — это его право :).

Plugin так или иначе поставляется в виде исходника, так что для пользователя, который искушён в XSS, не будет особой проблемой подправить исходники, чтобы убрать esc_url.

> И если вдруг плагин сломался, перестал поддерживаться автором, не совместим с WordPress версией 3.6, или же просто надоел, то все мои существующие посты будут всё равно отображаться, пусть без иконок, но всё же не придётся бегать по базе и искать все [userid].

Это тоже хорошая идея. И вполне можно бы было ограничиться JS-дополнением — от PHP требовалось бы только инциализировать кнопки.

Но опасаюсь конфликта с CSS-настройками текущей theme. Мало ли, что у них на уме.

> P.S. WordPress правильнее писать с заглавной буквы P

Это да. Впрочем, и статьи надо писать днём, а не в час ночи, как я :). Тогда и буква P будет на месте.
С git-ом оно ещё проще — можно делать коммиты локально, без синхронизации.
\
Другое дело, что когда я заканчивал код, я ещё не знал, куда его правильно заливать.
Теперь оно точно на одну страницу влезет!
Внёс изменение в статью. Что не отменяет того факта, что в tinyMCE — баг :)
Во! Замыкание помогло :).
Мне значок нужен — человечек из ЖЖ, например.
Потому что писалось сперва локально и надо было где-то хранить изменения.

Недописанный огрызок кода в директорию wordpress-а не возьмут.
Нормальное решение, кстати. Только почти для любой livejournal-подобной блогплатформы не подходит. Livejournal, dreamwidth и Li.ru — там на favicon-ах не человечки
Тоже хорошее решение!

Но не очень гибкое — например, у Ли.рушечки два эккаунта, для мальчиков и для девочек.
Мне кажется, в США такое тоже произойти может.

Но не рекомендую это пробовать. Задавишь бабушку прямо в доме — и останешься без оладушек.
Спасибо, подправил :). Действительно, когда сверял код, то скопировал не ту строку.

Такими темпами и с таким обсуждением, чую, скоро у нас здесь ещё лучшая реализация появится.
Дополнил статью с учётом критики (теперь там и double-lock, разумеется). Заодно ещё раз перерыл все материалы и уточнил, почему атомарная операция нужна даже если поток залочен.
Ура! Наконец-то и эту запостили!

Респект и уважуха!
В принципе, в случае синглтона она нигде не проявляется.

Это имеет отношение, разумеется, не к singletone, а к lock-у самому по себе.
Статья родилась из рабочих заметок, так что многое просто не пояснил.

Он тормозной потому, что два try/finally делает. Поэтому мне кажется, что лучше напрямую писать Monitor.Enter/Exit — будет то же самое, но без лишних обработчиков.

Ну и сам факт того, что представляет из себя lock интересен. А то находятся люди, которые его ещё раз try-ем оборачивают.

Information

Rating
1,429-th
Location
Долгопрудный, Москва и Московская обл., Россия
Date of birth
Registered
Activity