понедельник, 25 февраля 2008 г.

Проектирование многопоточного (multi thread) приложения

Я решил поместить все xml-rpc запросы в отдельный поток. Причины этого я уже описывал: сколько будет идти запрос к xml-rpc серверу неизвестно, и в это время негоже, чтобы приложение как бы подвисало, то есть не обрабатывалась бы очередь событий Читать дальше…

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

У меня воруют контент - как с этим бороться

Черт меня сегодня дернул проверить свой blogclient.ru на плагиат. Поскольку черт все знает, то он знал куда
мне пойти - на www.copyscape.com. Узнал, что мой уникальный контент, буковки набранные моими руками, бессовестно воруют.
Читать дальше…

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

ответы ищущим - част 2

В посте про поисковые фразы для моего блога я ответил на часть поисковых запросов Читать дальше…

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

Простой php скрипт для просмотра статистики поисковых запросов

Как я писал в посте про статистику поисковых запросов, я использую свой небольшой скрипт на php, который парсит поле refer, и если оно с поисковиков, то выдергивается фраза и записывается в текстовый файл Читать дальше…

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

Красотки чародейки или кросспостинг через неделю

По следам моего предыдущего поста http://blogclient.ru/optimizaciya-kross-postinga-publikovat-na-zerkalax-cherez-nedelyu.htm и одного комментария в нем, я написал таки плагин с отложенным кросспостингом. Как обычно в нем идет кросспостинг на три известные площадки: blogger.com, livejournal.com и subscribe.ru
читать дальше при чем тут “Красотки чародейки” и отложенный кросспостинг

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

воскресенье, 24 февраля 2008 г.

отсутствие в RSS ссылки “читать дальше” - проблема с тегом more

Пару часов назад обнаружил проблему - отсутствие ссылки “читать дальше” в анонсе RSS. Об этом я узнал из комментариев http://blogclient.ru/otsutstvie-v-rss-ssylki-chitat-dalshe-problema-s-tegom-more.htm. Я сам не пользуюсь рсс, да к тому же нелепо было бы читать свой блог через рсс. Я занялся расследованием этого - пока что виноват в этом feeds.feedburner.com/blogclientru - рсс фид моего блога на feedburner.com.

Оригинальный фид, который генерирует движок Wordpress, в каждом итеме имеет два альтернативных содержания поста. Нормальный со всеми html тегами находится в <content>, а его текстовая альтернатива без тегов в <description>. Если вы используете <!--more--> то в content секции будет ссылка типа “читать дальше”. В текстовом варианте ее нет. А у feedburner оказалась только секция <description>. Почему так и в чем причина я пока не знаю, равно как и исправить это, и вообще нужно ли это исправлять.

Заодно выяснил интересный трюк/особенность wordpress: если тег more написать следующим образом <!--more для продолжения щелкните-->, то wordpress вместо стандартного “читать дальше” поместить ваш текст. Эту фичу как раз в этом посте и продемонстрирую.
для продолжения щелкните

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

Comment Client for Wordpress - продолжение разработки

Продолжаю разрабатывать клиент для комментариев Wordpress на сайте blogclient.ru. Решил поставленные задачи и появились новые соответственно. Например в комментарии должна быть ссылка на пост: нужен адрес и название поста к которому относится комментарий.
Читать дальше…

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

четверг, 21 февраля 2008 г.

Оптимизация кросс постинга - публиковать на зеркалах через неделю

Я создал два плагина для кроспостинга в subscribe.ru и blogger.com, а также немного подправил кроспостер для livejournal.com - подробнее об этих плагинах http://blogclient.ru/novye-versii-plaginov-wordpress-dlya-krospostinga-v-subscriberu-bloggercom-livejournalcom.htm. Но мир кросспостинга не ограничивается только этими тремя сервисами. Я несколько дней назад набрел на полномасштабный обзор способов кроспостинга на 12 сервисов - на Ctrl+C - Блог в помощь блоггерам.
Читать далее мои выводы и планы о кроспостинге

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

Какие блоги я читаю

Прежде всего хочу отметить, что написанное в http://blogclient.ru/novyj-xosting.htm не совсем соответствует: все таки IP у моего блога сейчас отдельный выделенный. Каждое утро проверяя почту я получаю более 50 писем - половина это письма от www.rss2email.ru, в которых новые посты с подписанных блогов. Увы реально интересных и полезных среди них мало -начал обратный процесс - отписываться. Но есть блоги, которые я однозначно выделяю.
Продолжение о блогах, которые я читаю

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

среда, 20 февраля 2008 г.

Не решенные задачи клиента ля комментариев wordpress

Сегодня мучительно пытался себя заставить писать клиента для комментариев - получалось тяжело, какое то количество кода я написал, но застрял. Когда начинаю писать реализацию появляется слишком много идей по улучшению: туду лист постоянно растет и это не считая того, что я еще не приступал к тестированию и отладке вообще. Код пока что компилируется и ладно. Например у меня сегодня опускались руки от необходимости реализовывать механизм удаления комментариев: куда его девать удаленного? Я его перемещаю по аналогии с почтовым клиентом в папку “удаленные”.
Продолжение о сложностях с проектированием

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

Исправление темы wordpress чтобы не потерять подписчиков на feedburner

Продолжая тему про feedburner. Я уже написал несколько постов о feedburner, в посте про счетчик http://blogclient.ru/kolichestvo-podpischikov-po-dannym-feedburner.htm я рассказал про то как дать публичный доступ к подобной статистике. Есть очень важный момент при использовании feedburner с wordpress: совершено недостаточно поставить плагин, который редеректит ваш фид на feedburner. Дело в том, что ваши подписчики будут подписаны на ваш стандартный урл фида типа blogclient.ru/feed/. И эти подписчики не будут учитываться счетчиком feedburner.
Читать дальше о исправлении темы для feedburner

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

Новый хостинг

Наконец таки сегодня обновились dns и я смог зайти на собственный блог на новом хостинге. Я писал о конкурсе для блогов http://blogclient.ru/besplatnyj-xosting-s-predustanovlennym-wordpress.htm и о хостинге для блогов. Я прошел конкурс и перевел свой блог на новый хостинг.
Далее о переносе блога на новый хостинг и компрессии трафика

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

понедельник, 18 февраля 2008 г.

Количество подписчиков по данным feedburner

По требованиям конкурса, о котором я писал http://blogclient.ru/besplatnyj-xosting-s-predustanovlennym-wordpress.htm необходимо показать количество подписчиков. Я никогда до этого не был озабочен проблемой количества подписчиков и показа статистики - подписчики появлялись самотеком.
далее о счетчике feedburner

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

суббота, 16 февраля 2008 г.

Бесплатный хостинг с предустановленным wordpress

Одна из постоянных проблем - это найти хороший хостинг за приемлемую плату. Предложений хостинга много и сделать выбор более чем сложно Читать дальше…

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

новые версии плагинов wordpress для кроспостинга в subscribe.ru, blogger.com, livejournal.com

Сегодня ударными темпами обновил все мои плагины, в том числе поправил плагин для кроспостинга в livejournal.com - поддержка расширенного тега more: как я и обещал в своем предыдущем посте http://blogclient.ru/nastrojki-rss-dlya-feedburnercom-ssylka-chitat-dalshe-i-podpiska-po-e-mail.htm. Добавил в свои плагины ссылку “Читать дальше”, а также теперь каждый пост…
Подробно о новых плагинах blogclient.ru для wordpress

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

настройки RSS для feedburner.com - ссылка “читать дальше” и подписка по E-Mail

Еще вчера разобрался с проблемой отсутствия ссылки “читать дальше” в RSS - подробности об этом http://blogclient.ru/otsutstvie-v-rss-ssylki-chitat-dalshe-problema-s-tegom-more.htm. Заодно и выяснил некоторые настройки feedburner.com, о которых я не подозревал. Как всегда все оказалось банально.
Читать продолжение про настройки RSS для feedburner.com

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для blogger.com

пятница, 15 февраля 2008 г.

отсутствие в RSS ссылки “читать дальше” - проблема с тегом more

Пару часов назад обнаружил проблему - отсутствие ссылки “читать дальше” в анонсе RSS. Об этом я узнал из комментариев http://blogclient.ru/comment-client-for-wordpress-prodolzhenie-razrabotki.htm. Я сам не пользуюсь рсс, да к тому же нелепо было бы читать свой блог через рсс. Я занялся расследованием этого - пока что виноват в этом feeds.feedburner.com/blogclientru - рсс фид моего блога на feedburner.com.

Оригинальный фид, который генерирует движок Wordpress, в каждом итеме имеет два альтернативных содержания поста. Нормальный со всеми html тегами находится в <content>, а его текстовая альтернатива без тегов в <description>. Если вы используете <!--more--> то в content секции будет ссылка типа “читать дальше”. В текстовом варианте ее нет. А у feedburner оказалась только секция <description>. Почему так и в чем причина я пока не знаю, равно как и исправить это, и вообще нужно ли это исправлять.

Заодно выяснил интересный трюк/особенность wordpress: если тег more написать следующим образом <!--more для продолжения щелкните-->, то wordpress вместо стандартного “читать дальше” поместить ваш текст. Эту фичу как раз в этом посте и продемонстрирую

А продолжать пока что нечем - буду рыть в области тега <content> в фидбурнере.

вот тут и продолжение!

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

отсутствие в RSS ссылки “читать дальше” - проблема с тегом more

Пару часов назад обнаружил проблему - отсутствие ссылки “читать дальше” в анонсе RSS. Об этом я узнал из комментариев http://blogclient.ru/u-menya-voruyut-kontent-kak-s-etim-borotsya.htm. Я сам не пользуюсь рсс, да к тому же нелепо было бы читать свой блог через рсс. Я занялся расследованием этого - пока что виноват в этом feeds.feedburner.com/blogclientru - рсс фид моего блога на feedburner.com.

Оригинальный фид, который генерирует движок Wordpress, в каждом итеме имеет два альтернативных содержания поста. Нормальный со всеми html тегами находится в <content>, а его текстовая альтернатива без тегов в <description>. Если вы используете <!--more--> то в content секции будет ссылка типа “читать дальше”. В текстовом варианте ее нет. А у feedburner оказалась только секция <description>. Почему так и в чем причина я пока не знаю, равно как и исправить это, и вообще нужно ли это исправлять.

Заодно выяснил интересный трюк/особенность wordpress: если тег more написать следующим образом <!--more для продолжения щелкните-->, то wordpress вместо стандартного “читать дальше” поместить ваш текст. Эту фичу как раз в этом посте и продемонстрирую

А продолжать пока что нечем - буду рыть в области тега <content> в фидбурнере.

вот тут и продолжение!

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

Comment Client for Wordpress - продолжение разработки

Продолжаю разрабатывать клиент для комментариев Wordpress на сайте blogclient.ru. Решил поставленные задачи и появились новые соответственно. Например в комментарии должна быть ссылка на пост: нужен адрес и название поста к которому относится комментарий.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

четверг, 14 февраля 2008 г.

У меня воруют контент - как с этим бороться

Черт меня сегодня дернул проверить свой blogclient.ru на плагиат. Поскольку черт все знает, то он знал куда
мне пойти - на www.copyscape.com. Узнал, что мой уникальный контент, буковки набранные моими руками, бессовестно воруют.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

среда, 13 февраля 2008 г.

Простой php скрипт для просмотра статистики поисковых запросов

Как я писал в посте про статистику поисковых запросов, я использую свой небольшой скрипт на php, который парсит поле refer, и если оно с поисковиков, то выдергивается фраза и записывается в текстовый файл. Это простое решение если вы не используете какие либо сторонние сервисы статистики типа google analitics, или лень скачивать сырой лог и стравливать его анализатору логов. Хорошо помогает при небольшом и среднем поисковом трафике.

Установка скрипта примитивна - отредактируйте файл stat.php строку define('StatFileName', "/home/login/tmp/$Domain-searchwords.txt"); - укажите путь, куда будет писаться файл статистики. Установите права 0777 на каталог куда будет писаться файл куда нибудь скопируйте файл stat.php и просто включите его куда нибудь на страницы, о которых вы хотите знать статистику поисковых запросов. Для wordpress я в файл темы footer.php в конце файла после закрывающего тега </html> написал <?php @include_once('/home/login/include/stat.php'); ?>, где соответственно указал свой путь к файлу stat.php.

Следует заметить, что текстовый файл статистики пишется в кодировке UTF-8 - для этого вначале файла пишется сигнатура utf8 boom, которая понимается всеми известными мне текстовыми редакторами, но поскольку изредка используется кодировка windows-1251, то в этом случае будет абракадабра типа eeoaie ea , но ее можно прочесть если переключить кодировку на windows-1251. После удаления файл статистики заново создается при первом же посетителе с поисковика, поэтому после скачивания файла его можно смело удалять.

Скачать файл stat.zip - менее одного килобайта. Ошибки и пожелания не принимаются: скрипт как есть и улучшений не планируется.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

вторник, 12 февраля 2008 г.

Проектирование многопоточного (multi thread) приложения

Я решил поместить все xml-rpc запросы в отдельный поток. Причины этого я уже описывал: сколько будет идти запрос к xml-rpc серверу неизвестно, и в это время негоже, чтобы приложение как бы подвисало, то есть не обрабатывалась бы очередь событий. Ну это очевидно. Чтобы начать xml-rpc запрос в отдельном потоке, его необходимо приготовить. Для синхронизации с потоком, где находится http клиент, я использую события Windows, посылая их с помощью PostMessage. В потоке, где клиент, организована обработка очереди событий. По большому очередь событий не нужна, можно было бы обойтись и объектом синхронизации событием, но не тем что посылается. Но это хорошо работает только на одном/двух событиях, а если событий несколько, то придется это разруливать, поэтому удобнее и проще использовать стандартную очередь событий.

И так, начинается приключение под названием “синхронизация событий”. Создан xml-rpc запрос, и отправлено событие потоку. Поток проснулся и начал танец с подключением к серверу. В это время главный поток может заниматься своими делами, например показывать диалог с индикатором выполнения. Предположим, что все прошло успешно: запрос отправлен и получен ответ, и ответ не содержит ошибок. А если где то случилась ошибка, ну например прервалась связь с Интернетом, то из этого потока надо сообщить главному об ошибке. А если во время выполнения запроса юзверь захочет прервать операцию, например закрыв приложение, то надо предусмотреть механизм досрочного прекращения работы. после окончания сеанса связи с сервером надо сообщить об этом главному потоку или вызвавшему потоку о завершении связи. С другой стороны можно также позволить юзверу делать все что угодно, кроме операций с сервером, пока идет сеанс связи с сервером. Ну например вы удаляете комментарии - выделили несколько комментов и нажали кнопку Del, тем самым запустив параллельный поток, который и будет удалять комментарии с сервера и на локальном списке. В это время можно позволить юзверю ходить по списку и читать комменты, либо показывать диалог с пробегающими процентами текущего сеанса связи, тем самым блокируя любую активность юзверя. С точки зрения программиста проще не пущать и показывать диалог с прогресс баром. Но можно и позволить юзверю толику свободы. Как поступить? Я не знаю. По умолчанию сбуду показывать диалог, в котором будет кнопка “Скрыть”, убирающая диалог. Но если без диалога, то надо будет ждать в специальном месте окончание сеанса связи, чтобы обработать ответ сервера и в случае ошибки показать таковую, а в случае успеха произвести симметричные действия с локальным списком комментариев. Если без диалога, то надо еще помнить, какую функцию вызвал на сервере, чтобы обработать ответ: если удалял, то и локально удалить, если снял отметку спам, то переместить из папки со спамом. То есть требуется симметричная синхронизация из потока с http клиентом в основной поток. Следовательно в два раза увеличивается количество передаваемых событий и следствие этого в два раза увеличивается вероятность ошибки в написанном коде. Если вообще без потоков то нет никакой нужды синхронизировать одно с другим. Но события от юзверя всегда происходят в главном потоке.

Можно придумать еще одну потоковую модель для блог клиента: из GUI посылается событие потоку на какое то действие, например удаление. Поток просыпается на это событие и формирует запрос, его же отправляет, расшифровывает ответ и удаляет из локального списка. А чтобы не был изменен контекст, в котором производятся действия, можно запретить на время операции менять папку: делай все что угодно, но только в пределах одной папки, пока не закончится сеанс связи с сервером. Ну а как же тогда операции drag&drop? Получается больше вопросов чем ответов.

Вывод: многопотоковое приложение это вам не хухры-мухры, и не дули в кармане крутить… Окончательное решение я еще не принял, потому что для меня еще есть ряд нерешенных задач, по мере написания часть из них решается, но и возникают новые. Уже написал диалог с прогрессом и основу для потока и лога событий http запросов вместе с обработкой ошибок. Отдельной решенной задачей явилась получение адреса xml rpc сервера из заголовков или из html страницы. Все приходится ручками прописывать, и не факт, что созданный мной код не содержит ошибок.

Продолжается эпопея с arhivperipiski.ru: яндекс ответил что все в порядке, но в индексе и в выдаче сайт отсутствует. По статистике webmaster.yandex.ru раздел мои сайты, проиндексировано яндексом более 30000 страниц - может быть у них там какой то особый фильтр, не знаю, буду ждать. После письма яндексу сдвинулся с мертвой точки simplygate.com(12 страниц в индексе в течении нескольких месяцев) до 300 уже сегодня. Не знаю может быть ему тоже уготована судьба быть выкинутым из выдачи. По той же статистике много ошибок 404 - задумался, но не знаю как решить: по статистике яндекс конкретно указывает откуда битая ссылка, но по моей проверке битых ссылок нет, так что я в растерянности.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

понедельник, 11 февраля 2008 г.

ответы ищущим - част 2

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

  • php ping XML-RPC - статья, посвященная пингбекам, у меня в рейтинге популярности стоит на первом месте. Когда я еще не написал плагин не пропускающий комментарии на английском, весь спам валился на эту запись
  • мнемоники + PHP + преобразование тут скорее всего слово “мнемоники”, которое я случайно обронил, когда речь шла о кодировании символов в html - движок wordpress не пропускал символ ? в урле
  • MySQL + мнемоники - а это уже и мне интересно, наверняка узкая тема, ничего об этом не помню.
  • как экспортировать базу из дэнвера - универсальный ответ: PhpMyAdmin. Все есть, что надо ковбойцу - экспорт/импорт с выбором формата и компрессией если нужно. Лично мне PhpMyAdmin не нравится, но я лично прибегал к услугам этой панели управления неоднократно. Рекомендую.
  • линейки для блогов - не понимаю что это. В подростковом возрасте длину полового члена измерял при помощи школьной линейки, но вот куда линейку приставить к блогу ума не приложу.
  • wordpress плагин Публикация в рассылки - рассылки на subscribe.ru для меня уже классика жанра.
  • клиент для блога wordpress - вот для этого я и создавал блог и название домена состоит из двух слов blog и client, так что добро пожаловать в мир софта для блогов.
  • создать аккаунт блоггера на php - очень интересный запрос, однако неопределенна сущность, что такое “аккаунт блоггера”, ну а так никаких сложностей, правда большинство блогхостингов требуют ввести капчу, поэтому php тут не очень поможет.
  • написание программ с использованием xml rpc - ничего сложного, но вот танцев с бубном вокруг этого хоть жопой жри: обработка http ошибок, проверка доступности Интернета, обработка исключений в ответе xml-rpc, а так в остальном это дело простое и обыкновенное.
  • delphi объясните что такое TStringList - меня просто умилил такой запрос. Ну отчего же и не объяснить? TStringList в дельфи это потомок от TStrings, который является массивом (списком) строк. Очень удобен и используется везде в дельфи: очень популярный класс. Можно обращаться с ним как массивом, но имеет дополнительные фичи типа сортировки, пары название=значение, хранение объектов. Что то меня понесло, вообще то надо учебники читать. Я вот иногда читаю учебники и руководства до сих пор, и ничего не стесняюсь, а стесняюсь делать подобные глупые запросы в яндексе.

На большее меня не хватило, остальные запросы идут пока лесом, типа “rpc soap удаленный вызов в Delphi” - а иначе бы я целый бы день только тем и занимался, что отвечал на запросы поисковиков для моего блога.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

воскресенье, 10 февраля 2008 г.

новая версия плагина wordpress to blogger (blogspot)

В свете развернувшейся дискуссии о моем плагине Wordpress to blogger.com (blogspot.com), я внес небольшое изменение в плагин.

Теперь, если ваши записи не имеют тега more, то есть состоят из одной части, то при не отмеченной галочке “отправлять полностью” из записи будет выделен анонс без тегов, и именно он будет отправлен на blogger.com. И так: абсолютно ничего не изменилось, если ваши записи состоят из двух частей - из анонса и продолжения, плагин будет также работать как раньше, то есть как вы и ожидаете. Если ваша запись состоит из одной части, то вы имеете выбор: отправлять полностью или только несколько первых предложений. Из полученного вырезанием анонса будут удалены все html теги - в нем будет только текст, без тегов. то есть если вначале поста будут ссылки, то в получившемся анонсе их не будет. Следующая тонкость это размеры самого анонса. Анонс будет получен из поста по следующему алгоритму: после 140 символа до первого знака окончания предложения, то есть . ! ? Обратите на это внимание: если вы пишите без предложений и разделяете пост только тегами html, то вполне возможно, что ваш пост теоретически может быть отправлен полностью, но уже только в виде сплошного текста.

Скачать отсюда: wp2bloggercom.zip, просьба откликнуться если что то будет работать не так.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

в помощь ищущему - часть 1

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

  • DELPHI XML-RPC ничего сложного, но я бы сам с удовольствием подискутировал бы на эту тему, например развод по потокам запросы через интернет и пользовательским интерфейсом, обработка ошибок и передача параметров между потоками
  • OpenID пример PHP комментирование - можно посмотреть в плагине open id для wordpress, где используется php библиотека для работы с open id
  • использует ли yandex sitemap - однозначный ответ нет
  • перенос дневника из Liveinternet в Wordpress скорее всего нет. Во первых я пока что не слышал про апи через xml-rpc для liveinternet.ru, но оно там в каком то виде есть, поскольку есть их клиент. Другой возможный путь это через rss, но как конкретно это делается я лично не знаю
  • WordPress xml - широковещательный запрос, непонятно что чел искал
  • Создание mysql в денвере - - это очень легко и просто. Открываем в браузере localhost, и соответственно попадаем на страницу денвера, где есть ссылка на создание базы и пользователя - этим способом я всегда пользуюсь. Другой способ - это через PhpMyAdmin, но он мне не нравиться и я им не пользуюсь
  • Wordpress скрипт подписки на новости блога - существует плагин для wordpress с названием subscribe2, но я им не пользуюсь, потому что массовая рассылка писем и интерфейс подписки/отписки эта не та задача, которая должна решаться средствами wordpress. Для этой цели, на мой взгляд, лучше создать рассылку mailman на хостинге или воспользоваться сервисами типа subscribe.ru и rss2email.ru, но последние имеют их собственные заголовки и подписи. Я вижу лучшее решение - это все таки mailman, который будет обрабатывать адреса вида news-subscribe@ и news-unsubscribe@ на вашем домене. В пару кликов можно настроить параметры такого мейллиста, чтобы он был защищен от спама.
  • wordpress как добавить комментарии pages - я уже рассматривал эту проблему: либо создать отдельный шаблон для страницы либо изменить текущий для всех страниц, добавив туда всего одну строку для подключения комментариев. Можно также и через плагин, который использовал бы соответствующие хуки
  • denwer sql база резервная копия восстановление - если используется только денвер, то можно поступить проще: скопировать всю папку с файлами одной базы, но, конечно, при не запущенном денвере. А восстановить - просто скопировав ее обратно - я это делал неоднократно
  • Индексирование xml сайтов - не понятно, что имел в виду ищущий. При индексировании xml не имеет никакого значения.
  • wordpress как сделать trackback - ну а зачем его вообще делать? Спамить?
  • “wordpress to blogger” - всегда пожалуйста за этим добром. Я написал простой плагин, который кроспостит в блоггер. По всей видимости у человечества на данный момент это единственных плагин делающий подобный кроспостинг. Сегодня в комментариях родилась идея развития этого плагина. Скорее всего сегодня сделаю еще одну версию кроспостера в blogger.com
  • плагин для автоматического постинга в социальные сети - я бы его и сам хотел. Но встают следующие вопросы: в какие конкретно сети и для какой цели. Каждая сеть устроена так, как бог на душу разработчика положил (или наклал?). В социальных сетях за спам банят. Это отдельная сложная тема.
  • посты выводить как страницы wordpress - мне непонятно что имел в виду ищущий, разве есть какие то проблемы с этим? Или я чего то не догоняю?
  • как запретить оставлять комментарии wordpress - элементарно, Ватсон: в редакторе записи поставить галочку комментарии запрещены, это рядом с запрещением пинга. на maxsite.org есть плагин, который запрещает пинги для всего блога.
  • клиент wordpress - дайте только срок будет вам и свисток и клиент для wordpress и его комментариев
  • плагин wordpress в начало 123 в конец - ничего не понял, что то наверно очень интимное искал человек
  • bat скрипт ежедневные копии - bat - это такой почтовый клиент что ли? Наверно от отчаяния по этому запросу ко мне пришел - мой сайт совсем о другом
  • wordpress плагин социальные сети - я не забыл, что уже практически спроектировал плагин социальной сети для wordpress, но пока отложил его в сторону: подожду пока отстоится в моей голове, пока я буду писать блог клиента
  • парсинг wordpress регулярное выражение php - а что какие то сложности с этим? По мне единственная сложность, так это сами по себе регулярные выражения: чужой сложный регэксп понять практически невозможно, а чтобы написать свой работающий. в Общем геморой эти регэкспы, ну а без них порой никуда
  • пинг для wordpress я так по этому поводу целую статью расследование написал
  • Wordpress плагин рассылки - по этой теме я могу себя считать уже экспертом
  • линейки для блогов - не понял: что такое линейки для блогов? Может быть меня кто то просветит?
  • для блогов и дневников а также их родителей и детей: странного люди ищут, в коментах что ли оставляли свои пожелания, а то мне совсем непонятно
  • яндекс интервью эхо - ну это по поводу моей заметки об интервью гендиректора яндекса на эхо Москвы
  • как автоматизировать подписку с блога subscribe.ru - я точно знаю как: мой плагин для кроспостинга. Комментаторы уже выдвинули пару идей о развитии плагина - спасибо, друзья, я серьезно задумался о дальнейшем улучшении плагина Wordpress для subscribe.ru
  • парсер XML wordpress - слишком общий вопрос,какой xml надо парсить? Который может выдавать движок wordpress или наоборот - надо импортировать в wordpress
  • xml-rpc blogger.com - об этом много везде написано, но вот только сейчас авторизация на blogger.com идет при помощи гуглевского аккаунта и там соответственно изменился протокол, поэтому сейчас так просто с наскока не одолеть blogger.com
  • зеркало wordpress на другом сайте - а конкретно на каком? И главное -для какой цели?
  • передача xml файлов через xml-rpc - с этим нет никаких проблем, правда не ясно что имел чел в виду: атачей как в soap, xml-rpc не имеет, да и в soap передавать файлы в виде атачей тоже не вариант. Наиболее просто - это base64 кодирование для файлов - на здоровье передавайте бинарные данные в xml
  • программа работы с блогами я вот сейчас пишу программу работы с блогами. Первый движок, который будет поддерживаться - это wordpress. Сразу после поддержки wordpress подключу и другие платформы - с этим тоже никаких проблем

Устал я уже отвечать на вопросы - а там их получается еще тьма тьмущая - народ ищет странного, но если вы где нибудь меня о чем нибудь спросите в комментариях - то будьте уверены, я обязательно отвечу. Мне нравится комментировать и отвечать на комментарии. Спасибо друзья за ваши отклики в комментариях - если бы не они, я бы не так резво занимался блоговодством

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

пятница, 8 февраля 2008 г.

Проектирование - самая сложная часть разработки софта

Сегодня стало ясно, что я никак не укладываюсь в запланированную неделю для написания клиента. Как всегда планируемую разработку надо умножать на число пи, чтобы реально оценить сроки выполнения. Самой большой для меня сложностью является проектирование: не в том смысле, что не знаю как проектировать, а в том, чтобы создать проект без ошибок планирования. Ошибки проектирования не являются ошибками, которые может заметить конечный пользователь. Я имею в виду внутреннею архитектуру, в частности иерархию разрабатываемых классов. План рождается сразу в полном объеме, но вот насколько он корректен и не потребует в будущем своей переработки. Формальных методов, позволяющих оценить создаваемый проект - не существует. Только опыт, при том опыт измеряющийся десятилетиями практики позволяет это делать. А все руководства и методики со сложными названиями и трудночитаемым текстом - это всего лишь способ казаться экспертом. По поводу экспертов как то хорошо написал Дмитрий Давыдов. Несмотря на некую эпатажность его высказываний, он во многом прав.

Сейчас, вместо написания клиента, читаю впечатления иностранцев от России. Хочу поделиться перлом Еле нашли ресторан 'Yalki Palki' (который, как я понял, дословно переводится как "кровавый ад") на первом этаже здания, хотя с улицы его было прекрасно….. Всякое такое можете почитать вот где: Иностранцы в Москве, еще здесь, а также Moscow Ne Rabotayet.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

вторник, 5 февраля 2008 г.

Предложение блог сервисам

В настоящее время я пишу диалог быстрого создания аккаунта в блог клиенте (клиенте для комментариев) и у меня возникла мысль - предложение к владельцам блог сервисов: автоматически открывать аккаунт у них на сервисе из моей программы. Очевидно, что сейчас количество блогов на движке небольшое, а программу будут скачивать и устанавливать часто из простого любопытства. И что же ждет такого пользователя? Да ничего - у него то не блога. При отсутствии аккаунтов в моем блог клиенте он будет запрашивать создание аккаунта - то есть адрес сервера, логин и пароль. Туда же можно поместить кнопочку или кликабелный лабел на афелированный блог сервис. Мое предложение как раз к владельцам блог сервисов - хочу стать афелейтом/партнером за соответствующее вознаграждение. Все условия обсуждаемы - они у меня пока что отсутствуют. Программа двуязычная - спокойно можно сортировать русских и англоязычных пользователей - кого куда направлять. Если блог сервис только на русском, то можно направлять только русских. Очевидны обоюдные плюсы. Если никто не откликнется то и сам могу создать бесплатный хостинг для многопользовательского wordpress, хоть хлопотное это дело, да у меня не тысяча рук…

Прочитал свой предыдущий пост, и ужаснулся моему русскому - мне все таки проще писать код типа if then else inherited override SaveToFile и прочее мракобесие, чем выражать свои мысли на человеческом языке :).

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

SSL и Basic Authentication для прокси

Продолжаю разрабатывать клиент для блогов. В прошлый раз я писал о перетаскивании и перемещении комментариев в wordpress, а сегодня уже появилась следующие неопределенности: как определить урл со скриптом обслуживающим по xml-rpc управлением комментариями. По идеи в заголовках ответа сервера должен стоять урл к xmlrpc.php, который можно было заменить на xmlrpc-comments.php, а также иметь возможность напрямую указать точный урл.

Также возникла неопределенность с использованием SSL - нужен ли он вообще для блог клиента или нет? С точки зрения программирования - нет никаких сложностей подключить его. Но с другой стороны я никогда не имел дело с сертификатами, а их там требуется аж три: корневой, обычный и с ключом. Что зачем и почему я не знаю - просто мне это никогда не требовалось и к тому же я не знаю как это дело протестировать. в Общем я включу такие опции в аккаунте, но вот в диалоге их выводить не буду: вдруг в будущем меня торкнет включить поддержку SSL, а уже все опции будут.

Не знаю как наименовать Basic Authentication для прокси - базовая авторизация что ли? А на английском как должна быть названа эта галочка? Basic Authentication не хляет - это название из протокола, а для конечного пользователя это наверно как то по другому. Другой вопрос - давать ли возможность выбора кодировки для пользователя? Пока делаю с возможностью выбора - по умолчанию UTF-8 - это кодировка базы mysql на блога в Интернете, а могут еще какие нибудь. Однозначно не буду поддерживать китайские кодировки - ну если они будут использовать UTF-8, тогда я никуда не денусь. Не понятно пока что как развести использования gzip компрессии: http протокол дает однозначный ответ, но вот XMLRPC.PHP wordpress ее не использует, а для апи комментариев я ее включил, следовательно для блог клиента эту галочку не показывать, а для клиента для комментариев ее надо где то показывать, а диалог настроек аккаунта один для всех приложений. Надо как то выкручиваться. Открытый вопрос о картинкам к кнопкам панели инструментов - их полное отсутствие.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

воскресенье, 3 февраля 2008 г.

drag&drop для комментариев wordpress

Сегодня основательно перелопачиваю модуль ListView для просмотра xml - сегодня более тысячи строк кода. Код рабочий, но требует поправки на новую парадигму организации колонок. Все получается очень красиво - мне нравится. Добрался до места обслуживания операций drag&drop и работы с клипбордом. До меня только сейчас дошло/озарило , что комментарии можно будет элементарно схватить мышкой и перетащить например комментарии из спама - в подтвержденные, и комментарии должны будут изменить свой статус на блоге. А я об этом, когда планировал, даже и не задумывался.

Вообще говоря, решение хранить все комментарии/посты в виде xml файлов на диске требует дискуссии. Но поскольку я все это сам придумал, то сам и реализую: инициатива наказуема ее исполнением. Многие задачи для своей реализации нуждаются в функциях, которые предоставляют базы данных. К примеру мое приложение могло бы иметь локальную базу для своих нужд: сортировка, выборка и прочая уже реализовано. А я типа вручную буду расписывать сортировку коментов и постов. И да и нет: базы нужны там, где они нужны. Приложение - блог клиент могло бы быть реализовано с привлечением базы типа Firebird или Sqlite. Но для этого пришлось бы таскать с собой движок базы, а также поддерживать актуальность структуры таблиц базы. В принципе все решаемо, но во первых - у моего приложения не будет скол нибудь сложных выборок из таблиц, небольшое количество строк в таблицах. Вопрос остается открытым, но я пошел по пути отказа от базы, а точнее сделал суррогатную базу на отдельных xml файлах, где каждый файл является как бы строкой в таблице. Скорость для моего приложения не играет роли: для конечного пользователя не была бы заметна разница в производительности вообще.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

суббота, 2 февраля 2008 г.

api социальных сетей и сервисов в интернете

Хочу продолжить тему будущего Интернета. На мой взгляд большинство сайтов и сервисов обзаведутся API: функции вызываемые на сервере. Пример существующих протоколов: xml-rpc и soap. SOAP предоставляет больше возможностей для передачи данных, а также способ описать функции и их параметры. Но то так, технические детали. Просто вспомнил обзор в “компьютер пресс” или в “Компьютерра” технологий. Из них soap упоминается как технология, находящаяся во второй стадии развития - подъема перед бумом. Ей правда сто лет в обед (ну не сто, а около десяти будет точно). Чтобы понять куда движется мир - зайдите на code.google.com. Там обширная простыня программных интерфейсов поддерживаемых гуглом, правда сейчас в нее включены opensource проекты на том же гугле. Полгода назад такого изобилия еще не было. Наверно менеджеры из гугля прекрасно понимают, что не все из них выстрелят, но что то же должно серьезно вырасти. Любая популярность прекрасно конвертируется в деньги. Я бы хотел понять отчасти что там, но сам себя ограничиваю - все на свете знать невозможно, и тешу себя надеждами, что однажды я потрачу несколько дней на детальное изучение этих интерфейсов. Очевидно движение в сторону предоставления интерфейсов для удаленного управления данными, в частности такой интерфейс имеет и facebook.com - популярная социальная сеть. В памяти всплывает недавно встретившийся api у reg.ru - управление доменами в зоне ru, правда параметры передаются методом пост - то есть одномерный массив значений. Большинство блогов имеют собственные апи. Тенденция понятна. Но на мой взгляд этого еще не осознали разработчики сервисов и социальных сетей. Ну например я ничего не слышал об аналогичных апи в news2.ru и habrahabr.ru. Причина этого, на мой взгляд, не отсутствие спроса на подобное, а стиль разработчиков этих сетей. Нет никаких существенных сложностей, чтобы создать интерфейс доступа, ну например по xml-rpc. Тут скорее отсутствие осознания того, что интернет это не только доступ к данным, но и еще вычислительная среда. Интернет позволяет часть вычислительных задач выносить за пределы локального компьютера, а часть задач из Интернета выполнять на вашем компьютере. И проблема состоит не в отсутствии вычислительных мощностей, когда жизненно необходимо часть задач выносить на выполнение на другие компьютеры, а в самом подходе к ресурсам. Например, чтобы читать блог вовсе не обязательно заходить на сайт - достаточно rss. Такие новые подходы нуждаются в некотором переосмыслении

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

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

пятница, 1 февраля 2008 г.

listview в делфи с xml

Что то меня занесло в моем предыдущем посте про XML в дельфи, я ведь планировал написать про ListView. У меня есть мой собственный переписанный ListView. В свое время я на него потратил очень много сил времени. Я почти полностью переписал класс TListView имеющийся в стандартной библиотеке дельфи. У этого компонента есть ряд существенных недостатков: как и все контролы в VCL он не уникодный и слишком усложненная реализация виртуального режима. TntUnicodeControls исправляет неуникодность, но какой чудовищной ценой - огромное количество кода и несколько вспомогательных классов для этого. Я ListView использую только в виртуальном режиме - запрос итема для прорисовки, а не хранения инфы в недрах системы: в обычном режиме контрол начинает безумно тормозить - откройте папку в проводнике с несколькими и тысячами файлов: не на сильно новых компьютерах это занимает несколько секунд, что не простительно. В виртуальном режиме все летает. Мой листвью поддерживает уникод и работает в виртуальном режим. Сама Windows запрашивает для прорисовки элемент по координатам - строка и колонка. Когда как при VCL при каждом запросе запрашивает строку полностью, к тому же строка списка в VCL хранится в TStringList - дополнительный буфер. А если еще использовать tntUnicodeControls то добавляется обертка над этим. Сложно и не поворотливо. Как ни странно, но стандартный VCL компонент достаточно резво работает. Я убрал все эти многоступенчатые буферы.

Так к чему я завел разговор? Комментарий или пост будет иметь теже published свойства, что и соответствующая таблица wordpress: без лишних преобразований объект можно будет получить или отправить в wordpress, а также сохранить и восстановить с диска. ListView будет мониторить соответствующую папку на диске и показывать в списке комментарии или посты. В чем же проблема спросите вы? С тем, что хочется написать универсальный механизм отображения колонок и сортировки для разных xml файлов/ объектов. Чувствую непонятно объясняю. Вообще так: комментарии и посты имеют разные колонки в списке, но вот принцип сортировки и выборки текста для списка одинаков. Например дата показывается и сортируется одинаково, строки тоже сравниваются одинаково. Будут нюансы типа курсивом выводит черновики (ожидает модерации), а жирным непрочитано/прочитано. Для каждого списка прописывать в деталях способ работы не хочется: наверняка будут общие участки кода. Хочется сделать сразу класс, который бы обслуживал разнородные объекты. Как точно это реализовать, я пока не знаю. Нахожусь в состоянии мучительного планирования, когда слишком много неизвестных и нет точной постановки задачи. Можно тупо писать в лоб., но хочется изящного решения, которое можно было бы легко реализовать и в последствии легко модифицировать.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru

xml в delphi

Сегодня со свежей головой на раз два разделался с проблемой с конвертацией дат между mysql и xml-rpc, о чем я писал в предыдущем посте. Выяснил простую вещь: для передачи даты используется аж специальный класс для работы с датами. - все это в class-IXR.php. Отдаешь дату - создаешь новый экземпляр класса, получил дату - используешь функцию член класса для конвертации, а чтобы и mysql был доволен приходится это еще обрамлять двумя функциями. Получается семь одежек и все с застежками - по первому делу можно и запутаться, что со мной и произошло. Также вчера я напутал с типом даты в php - он там все таки не float, а int, то бишь unix timestamp, а float это тип даты в дельфи. Есть свои недостатки в кросязыковом программировании: иногда сложно переключаться между стилями написания исходников - у меня это между delphi и php. Строки в дельфи только с апострофами (’) , а в php еще кавычки хляют (”), плюс присваивание и еще какая то мелочь. Руки уже привыкли к одному стилю в одном языке, а когда переходишь на другой начинаешь лепить ошибки в тексте.

Я полностью закончил реализацию удаленного доступа к комментариям на стороне сервера - написал и отладил класс wp_xmlrpc_comments_server, поместив его в один файл xmlrpc-comments.php. Когда напишу клиента комментариев, выложу его на всеобщее обозрение.

Сейчас приступаю к программированию на дельфи - написание клиента под Windows. Скорее всего будет одно приложение - и блог клиент и клиент для комментариев: принципиальной разницы почти никакой. Сейчас самая большая сложность для меня состоит в написании универсального модуля ListView, который бы работал как с комментариями, так и с постами. Введу в курс дела. Все посты и комментарии будут храниться в виде отдельных *.xml файлов на диске. У меня был раньше модуль, который писал и читал объект в ini файл. Но дело в том, что структура ini файла плоская: секции и пары название= значение. Для сохранения объектов, содержащих в себе другие объекты приходилось идти на ухищрения типа в название секции включал бэкслеши (\). в Общем случае это моветон. Поразмыслив немного захотелось использовать xml для хранения объектов. Но с xml в стандартных библиотеках дельфи засада - он использует виндовозный xml парсер, строящий иерархию DOM. Сам по себе этот парсер медленный - для одиночных файлов подойдет, но для массового обслуживания уже начинаются серьезные тормоза. К тому же DOM - document object model мне ни к чему: после парсинга xml придется еще лазить по дереву, когда как мне надо построить объект из xml. Для сохранения объекта в xml я вообще отказался от использования вообще каких либо модулей работы с xml: пишу строки следующим образом

WriteStr(format(’ ‘, [Name, TypeName, Value]));

Строки пишу в кодировке UTF-8, значения беру из RTI - run time information, модуль для работы с которой у меня был уже написан, но заточен под ini файлы. Это частный пример для простого типа, а массивы, другие объекты соораняются в дереве. Я не стал реализовывать работу со всеми возможными типами, а ограничился только простыми (строки, буквы, цифры, множества и тому подобное) и классами. А все остальное идет по боку: варианты, которые вообще никогда не использую, com интерфейсы, процедурные типы - обработчики событий. Это работает и имеет свои резоны и ограничения: объекты должны иметь нисходящую иерархию без перекрестных ссылок в published объявлении. Все мои задачи соответствуют этим требованиям, а если возникнет надобность в дополнительных фичах, то их всегда можно реализовать. Если для сохранения мне не нужен вообще какой либо инструмент для работы с xml, то для чтения xml, конечно, нужен парсер. Я искал парсер на событиях для дельфи и нашел миниатюрный работающий парсер StitchSAX 1.1 - Trivial SAX parser for Delphi Copyright (C) 2002, Roman Poterin. Юнит всего в 500 строк удовлетворил мои запросы.

Здесь можно оставить свои комментарии. Выпуск подготовленплагином wordpress для subscribe.ru