14 заметок с тегом

эгея

Cookie в PHP 7.4

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

Выяснилось, что плюс появился сам собой, люди его и не думали ставить. Так я понял, что столкнулся с каким-то багом.

Слева как куки ставились до ПХП 7.4, справа — как ставятся теперь, пробел кодировался как «+», «плюс» — как «%2B»

В чём примерно дело, понятно стало почти сразу — в вебе пробел иногда кодируется как «+», видимо ошибка как-то связана с этим. Сначала я неправильно подумал, что «плюс» появляется в урле, но данные пользователей туда не попадают, потом сообразил заглянуть в «куки», провёл пару экспериментов и всё встало на свои места.

Проблема воспроизводится у тех комментаторов, которые оставили свой первый комментарий до того, как мой сайт перешёл на ПХП 7.4. В этой версии сменился способ кодирования пробела в «куках» (см. на скриншоте) — был +, стало %20.

В принципе, можно вернуть «статус-кво» следующим кодом:

if (strpos($_SERVER['HTTP_COOKIE'], '+') !== false) {
    parse_str(strtr($_SERVER['HTTP_COOKIE'], ['; ' => '&']), $_COOKIE);
}

Но хорошо бы внедрить в движок блога код, который будет перекодировать такие куки у пользователей.

 2 комментария    354   5 мес   php   php7   программирование   эгея

Перепись «Эгей»

Кратко: найдено 1160 блогов, из непустых изготовлен файл OPML с 929 адресами.

Как и обещал, публикую результаты своих попыток найти максимальное количество блогов на движке «Эгея». По сравнению с прошлым разом я внёс следующие корректировки:

  1. в список теперь входят и те блоги, которые установлены не в корень сайта, ранее я их для простоты обработки отбрасывал;
  2. в прошлый раз я совсем забыл, что бывают и англоязычные «Эгеи», теперь я их ищу по фразе Powered by Aegea, нашлось много нового;
  3. странно, но свою лепту внесли и украинские/белорусские поисковики — добавили несколько новых ссылок, я ожидал, что «Гугл» в этом деле их всех превзойдёт, но нет, чтобы что-то найти во всей полноте, надо искать сразу везде;
  4. попросил список блогов с сайта, куда отсылаются анонсы постов, сделанных в «Эгеях» 2.7 и выше;
  5. добавил в список и живые блоги из проекта коммерческого хостинга блогов на базе «Эгеи».

В итоге получился список из 1160 ссылок. Из этого списка я убрал пустые и дубликаты одного блога на разных хостах и из оставшихся 929 адресов сделал OPML-файл.

Вряд ли я когда-нибудь решусь повторить этот подвиг — обход всех ссылок, просмотр результатов, корректировка и новый запуск, всё это занимает очень много времени. Но с другой стороны таким бесчеловечным образом приходится искать только старые «Эгеи», новые себя сами прекрасно обнаруживают.

Тайна твоего адреса умрёт вместе со мной (нет)

А ещё у сообщества «Эгеи» появился свой чат в «Телеграме», присоединяйтесь!

В принципе, чтобы сделать то, что многие просили в личке и комментариях — обновляемый список всех «Эгей», надо уговорить основного автора движка, Илью Бирмана, загрузить себе мой список и дополнять его автоматически — по мере появления анонсов от новых блогов. Это был бы самый правильный путь.

 4 комментария    467   6 мес   эгея

Данные по «Эгеям»

В субботней заметке пытался найти блоги на движке «Эгея» среди всех сайтов в интернете — искал в различных поисковых системах слова, могущие указывать на то, что блог использует этот движок, после чего примитивными методами отфильтровывал ложноположительные срабатывания.

Реализация грешила неточностями (которые к сегодняшнему дню я уже поправил), кроме того читатели подсказали ещё один источник — все «Эгеи», начиная с версии 2.7, сообщают на специальный центральный сайт о появлении публичных заметок. Список с этого центрального сайта я запросил и так же включил в своё исследование.

В итоге было найдено чуть больше тысячи блогов, к которым я решил присмотреться повнимательнее — узнать что они используют и в каком они состоянии.

Распределение используемых версий ПХП, в некоторых случаях версию определить не удалось

Первым делом посмотрел у каждого блога версию ПХП, некоторые сайты отмолчались, но бо́льшую часть удалось проинспектировать. Распределение близко в нормальному, за исключением версии 5.6, которая необъяснимым образом сохраняет свою популярность, несмотря на то, что уже давно снята с поддержки.

«Эгея» версии 2.1 на ПХП версии 4.3.7, в качестве веб-сервера используется «русский» Апач, уже мало кто помнит что это такое

Любопытно, что нашёлся настоящий старичок — заброшенный блог на «Эгее» 2.1 с версией ПХП 4.3.7! Владелец не справился даже с его установкой — первой страницей открывается инсталлятор.

Распределение используемых версий «Эгей», некоторые сайты в момент тестирования не работали, их версия помечена вопросом

С версиями «Эгей» определённости больше — не удалось узнать версию только тех блогов, которые оказались недоступными на момент исследования. Самыми популярными версиями оказались 2.7 и 2.8, 2.9 появилась недавно, поэтому её распространённость пока невелика.

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

Распределение установок «Эгей» по часовым поясам, пик находится на «+03:00», часовой пояс, например, Москвы

Следующее, что я решил посмотреть — распределение «Эгей» по часовым поясам. Как видно из графика, большинство блогов живёт по московскому времени и наверняка находится в центральной части России, хотя третий пояс есть и во многих других странах. Замечу, что есть и экзотика — один блог в поясе «+05:30», это Шри-Ланка и Индия.

Степень живости блогов на движке «Эгеи»

Теперь самое интересное — какой процент блогов из тысячи живы. Для этого я посмотрел когда была сделана последняя запись в каждом блоге по годам, а для текущего года — ещё и помесячно. Как видно, в этом году посты появлялись только в трети блогов, из них в этом месяце — в половине. Активность ещё трети блогов замерла в прошлом году, возможно они ещё оживут, надежда есть.

Список блогов в формате OPML выложу позже, пока нет возможности его доделать — занят другими проектами.

 Нет комментариев    375   6 мес   эгея

Эге-ге-я

Для лиги ленивых: найдено 768 блогов, есть файл OPML.

Количество «Эгей», найденных различными поисковыми системами. Лидирует «Яндекс», отстаёт «Мейл»

Стало интересно прикинуть сколько существует блогов на движке «Эгея». Придумал два метода — один даёт стопроцентную точность, но низкий охват, у другого возможны ложноположительные срабатывания, но и охват выше.

Более надёжный способ не захватывает, например, мой блог. Статистика по этому способу видна на скриншоте — можно посмотреть относительную идексируемость блогов на «Эгее» различными поисковыми системами. Метод даёт список из 350 блогов и основан на поиске одной характерной строки на специальной странице, достижимой поисковыми системами.

Менее надёжный находит и мой блог тоже, и даёт 1068 ссылок. Если суммировать оба метода, то в совокупности получается 1288 записей, где бо́льшая часть — действительно блоги на «Эгее». Неидеальная точность проистекает из самого метода — я задаю строку поиска "Движок — Эгея" (стандартная строка, выводится стандартно на каждой странице), а это, очевидно, недостаточно уникальная строка.

Дальше список, полученный вторым методом, можно проредить скриптом — убрать все сайты, к которым не удаётся подсоединиться и те, которые не содержат стандартный «подвал» «Эгеи»:

while read url; do
    wget -T1 -t1 -q -O- "$url" |
    fgrep -q -m1 blogengine.ru &&
    echo "$url"
done < aegea-candidates.log

Если потом выкинуть варианты одного сайта через http и https, а так же с www и без, то останется 768 блогов.

Есть такое мнение, что блоги на «Эгее» ведут люди, в основном, неординарные, которых стоит читать. Для тех, кто в это верит, я собрал весь список в файл OPML, добавьте в свою любимую РСС-читалку.

 9 комментариев    411   6 мес   эгея

Юзерпики в «Эгее»

Во второй раз занимаюсь разовой конвертацией блогов в формат «Эгеи», надо бы записать кое-какие вещи, а то забывается. Авось придётся в третий, опять придётся разбираться.

В основном обращаться приходится к трём таблицам, имеющим довольно говорящие названия: Notes — сами заметки, Comments — комментарии к ним (там же хранятся и авторы комментариев, единого профиля у них нет) и Aliases — адреса, по которым доступны страницы (в моей схеме в этой таблице нет поля Alias, куда и записывается сам адрес).

Основные поля основных таблиц «Эгеи» версии 2.9

Назначения полей, в основном, понятны из названий, кроме разве что поля Stamp — это временная метка создания чего либо в секундах (timestamp) и поля с префиксом GIP, об этом чуть ниже.

Если вам интересны метки (теги), то понадобятся ещё две таблицы: Keywords — где хранится русское название метки и её урл и NotesKeywords, таблица, связывающая метки и заметки.

Теперь про GIP. Если флаг IsGIPUsed в таблице Comments установлен в ноль, то это прежняя схема хранения автора комментарий — без юзерпика, чтобы юзерпик появился, надо выставить IsGIPUsed в единицу, в поле GIP записать сервис, через который была проведена аутентификация (facebook, vk или twitter), а в GIPAuthorID записать некий идентификатор пользователя во внешнем сервисе.

Юзерпик нужно положить в pictures/avatar/ с именем, составленным из полей GIP и GIPAuthorID, записанных через дефисоминус. Например: vk-1.jpg — это был бы юзерпик Дурова, создателя «Вконтакте», если бы он зачем-то зашёл хоть на одну «Эгею».

Тут есть одна интересная деталь. Дело в том, что у меня в блоге, когда он ещё работал на самописном движке, уже были юзерпики, были они и у Олега Петровича, блог которого я переносил сегодня ночью. Причём и у меня, и у Олега авторизация была своя собственная, не обязательно через те сервисы, которые поддерживает «Эгея». Как же мне удалось перенести юзерпики?

«Эгея» в этом месте имеет простой механизм расширений — в принципе в неё несложно добавить любой внешний механизм аутентификации, что я и сделал. Подобрал в папке system/theme/images/, где движок ищет картинки внешних сервисов, подходящую картинку (email.svg) и написал фейковый плагин для сервиса email, который положил в файл system/gips/email.php:

<?php

class E2GIPEmail extends E2GIP {
  protected $type = 'email';

  private function _get_instance() {
    return (object) [];
  }

  public function get_auth_url() {
    return '';
  }

  public static function get_profile_url($id, $link) {
    return false;
  }

  public function callback() {
    return true;
  }
}

Файл плагина (и его тип) должны называться так же как и выбранная картинка — email и в базе его пользователи записываются с тем же значением поля GIP. В итоге, все свои старые комментарии я положил, как принадлежащие сервису email, а в качестве GIPAuthorID (это строка) взял хеш-сумму от сериализованной информации о пользователе.

 4 комментария    379   6 мес   php   программирование   эгея

«Глазелки»

Перерождённый на «Эгее» блог моего друга — «Глазелки.ру»

У моего хорошего друга, Олега Петровича несколько лет назад был очень интересный блог о путешествиях и краеведении — «Глазелки». Олег забросил его в 2016-м году, перестал платить за хостинг и домен. Хостер за это время разорился, содержимое блога потерялось.

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

К счастью повезло — блог целиком сохранился на «Веб-архиве», откуда я его смог отковырять специально написанным для этой цели конвертером. Купил прежний домен, поднял чистый блог на «Эгее» и перенёс туда сконвертированное.

Единственное, что пока не перенесено — комментарии. Сегодня, надеюсь, закончу и с этим, но их там немного, чтению блога это никак не мешает.

Рекомендую посетить обновлённые «Глазелки». Надеюсь Олег в скором времени напишет туда что-нибудь новое.

 3 комментария    463   6 мес   эгея

Страничка статистики

Вдруг стало интересно какое количество букв я намолотил в блог за эти годы. Выгрузил эту информацию из базы в виде двух графиков. Если у вас тоже блог на движке «Эгеи», то вы можете сделать то же самое следующим запросом:

SELECT YEAR(FROM_UNIXTIME(Stamp)) AS Year, COUNT(*) Total, SUM(LENGTH(Text)) Size
FROM e2BlogNotes
GROUP BY 1 ORDER BY 1

В статистике пока не участвуют «Дневники жизни» №№2, 5, 6 и 7, я ещё их сюда не перенёс (та ещё будет работка) и нет заметок, которые я писал в блоге на платформе ЖЖ. Кстати, можно будет попробовать их перенести автоматически, надо бы подумать над этим.

Совокупное количество символов (включая символы разметки) в заметках по годам

Из графиков можно сделать несколько выводов: по-первых, интенсивность написания заметок в блог с годами у меня падает — это видно по любому из графиков и те данные, которые я ещё не импортировал, тут ничего не изменят.

Во-вторых, переход на «Эгею» в 2018-м немного меня подстегнул, активность превысила показатели четырёх лет до этого, это согласуется с моими внутренними ощущениями — писать стало приятнее.

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

В-четвёртых, в новом году сил гораздо больше — за первый месяц года я намолотил примерно треть объёма прошлого года, а январь ещё даже не кончился.

Количество заметок по годам

Надеюсь, темпы я не снижу, так как в голове есть огромный объём того, что хочется сюда вынести, правда формализовать это непросто, но я буду пытаться.

 Нет комментариев    334   8 мес   эгея

Как я чужие тексты своровал

Ночью не спалось и, чтобы чем-то себя занять, сидел и прогонял тексты своего блога через алгоритмы кластеризации. В какой-то момент случайно наткнулся на небольшой кластер, где все тексты были на английском. Это меня очень удивило, как ни старался, никак не мог вспомнить, чтобы когда-либо пытался вести блог на другом языке.

Тексты были 2003-го года, но это не настолько давно, чтобы такое выходящее из ряда вон событие вылетело у меня из головы. Посмотрел соседние тексты и нашёл кое-что совсем странное — тексты были гарантированно чужие, с событиями, которые никогда со мной не происходили, с людьми, которые мне были незнакомы.

Чужой текст за моим авторством, сконвертированный из блога на движке «Регистр»

Тут нужна небольшая историческая справка. Мой блог — довольно разношёрстное собрание текстов, собранных сейчас в единую ленту, это бумажные дневники, ранний сайт, блог на движке «Регистр», блог на самописном движке, и наконец «Эгея», на которую я перешёл года полтора назад.

2003-й год относится к периоду, когда блог у меня работал на «Регистре» — это некогда очень популярный древний движок блогов, в разработке которого я тоже участвовал.

Так выглядел изнутри импортированный в ленту моего блога текст Димы Смирнова

Чтобы понять откуда у меня чужие тексты, заглянул в резервную копию блога того времени, благо она у меня кочует с ноутбука на ноутбук в составе остального барахла. А ларчик просто открывался…

«Регистр» в своё время был ещё и РСС-читалкой других блогов на том же движке — у него была публичная страница, на которую они подключались. Тексты из других блогов валились в общую текстовую базу, отличаясь от общей массы лишь одним — наличием значения в поле «source». Я этой страницей почти не пользовался, но 34 чужие заметки успели туда попасть.

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

Сегодня ночью эту несправедливость удалось исправить — написал по-быстрому парсер резервной копии и удалил чужие заметки.

 1 комментарий    365   8 мес   программирование   эгея

Обновился на бету «Эгеи» версии 2.9

Илья выпустил новую бету «Эгеи» — движка блога, на который я переехал в позапрошлом году. Весьма волнительно было переезжать бету, но дело того стоило. Тем более, что наконец удалось избавиться ото всех костылей, которые пришлось навинтить, чтобы сохранить аватары пользователей, которые у меня были, когда блог работал на моём собственном движке.

Наконец-то скачал себе все аватары пользователей, до этого они хранились в облаке «Яндекса»

До этого в базе в имени пользователя я хранил сериализованное значение, содержащее расширенную информацию о пользователе, а в шаблоне делал десериализацию и расширенный вывод, аватары при этом хранились снаружи — в облаке «Яндекса». Код новой «Эгеи» позволил завести поддельный провайдер авторизации и переложить аватары локально, на диск.

Разумеется, раз это бета, то могут быть баги, например. Я уже заметил, что блок «Избранное» не работает, как только Илья выпустит патч, сразу же накачу исправление. Патч выпущен, накатил новую версию, «Избранное» работает.

Из того, что изменилось кардинально с точки зрения пользователя — теперь есть возможность авторизовываться через социальные сети (я переезжал с очень старой версии, где их не было), это круто! Насколько я знаю, решили и проблему со спам-фильтром в форме комментирования — ранее многие читатели жаловались на ложные срабатывания.

Другая заметная вещь — «глаз». Около него пишется количество прочитавших заметку. Не знаю в точности что это значит, но занятная штука, пусть будет (она отключается). У меня посещаемость после борьбы с аудиторией упала на два порядка и теперь составляет примерно 800 человек в прыжке, более обычная цифра — около 400—500 в день.

 3 комментария    415   9 мес   эгея

Отключение антиспама

После трёх недель работы без выходных, я сегодня наконец отдыхаю. Тюленил до обеда, а за едой поиграл со шрифтами в блоге, плюс попытался, наконец, полностью отключить антиспам «Эгеи» — это движок, на котором у меня блог работает. Надеюсь получилось, если нет, напишите мне, пожалуйста. Хочу закрыть этот вопрос.

Заодно мы с поддержкой «Мастерхоста» наконец-то разобрались как сделать редирект с www.bolknote.ru на домен без www.

 Нет комментариев    23   2018   эгея
Ранее Ctrl + ↓