Открыл новый блог

Много букв не будет, просто скажу, что открыл новый блог. Адрес тут писать не буду, кому интересно — напишите в комментарии/аську/на мыло, дам линк. Почему блог переехал написано в первом посте на новом блоге. Да, и те 7 человек, которые подписаны на рсс (зачем вы подписались-то?? Тут же нечего читать...) - адресс фида так же меняется, если есть желание читать блог придётся переподписаться. Всем счастливо, увидимся в новом блоге!

Model View Controller

Пролетела ещё одна неделя, и сделано далеко не всё, что было запланировано. Наибольший тормоз сейчас — движок. Сам не ожидал что так долго это будет, но проклятый перфикционизм не даёт сделать по принципу "лишь бы работало". Это и хорошо — если собираюсь все дальнейшие проекты делать на нём, лучше сделать один раз и качественно. Вряд ли мне потом захочется у десятков проектов править базы данных, благо файлы будут одни и те же для всех доменов, это касательно сплога. Как быть с обычными блогами пока не решил. Очень много времени занимает проектирование архитектуры, взять за основу чужие наработки не представляется возможным — из кучи просмотренного кода нет ничего, что соответсвовало моим требованиям. Скоро постараюсь сформулировать и опубликовать их в блог, пока это нечто абстрактное. Вкратце, структура такова: есть главный класс, core. Он отвечает за работу с базой данных, то есть в нём должны быть методы для получения, удаления, обновления сообщений, комментариев и некоторых настроек движка. Это самое основное. Вообще, планируется сюда же вставить поддержку модулей, и весь дополнительный функционал реализовать с их помощью. Для вывода материалов используется класс-шаблонизатор, самописный. В первой версии движка в шаблонах использовались вставки php-кода, но я посчитал что их лучше заменить на обычные шаблонные вставки вроде {%title%}. Готовыми шаблонизаторами пользоваться не захотел, слишком они тяжёлые для этого движка. Ну и чтобы окончательно соответствовать архитектуре MVC, нужен класс-контроллер, то есть класс, отвечающий за обработку запросов пользователя и предварительную обработку результатов, полученных из БД. Сначала очень хотелось совместить контроллер с моделью, то есть сделать универсальный класс core, обрабатывающий данные от и до (кстати, во многих CMS так и сделано, класс core или kernel содержит сотни килобайт кода). Потом хотел совместить шаблонизатор и контроллер (эдакий умный шаблон, на неверно введённые данные сумеет выругаться ошибкой, полученные из БД результаты запроса сам же обработает). Сейчас уже склоняюсь к MVC в оригинальном виде, но ещё точно не определился. Буду изучать паттерны и архитектуры, это лучше чем копаться в чужом коде, ужасном с точки зрения проектирования.

Гугл изволит шутить?

Не понимаю я его… Нет, конечно я рад что за 2 суток в его индекс попали 300 свежедобавленных страниц, но всё таки странно. Дело вот в чём: на один сплог добавил кучу контента, то есть было около 80 статей, а за пару дней их количество увеличилось штук на 300. И гугл за несколько дней всё это проглотил и сказал спасибо, в виде большого притока посетителей. Хотя весь материал — чистый копипаст. К чему бы это? И интересно сколько теперь это продержится в его индексе.

Постовой: Абсурдный человек, создатель блога о ретро, раздает всем нахаляву домены в зонах COM, NET, BIZ, ORG, INFO, NAME и MOBI

Google Hot Trends

Вы знаете, что такое Google Hot Trends? Я вот до недавнего времени не знал, пока случайно не увидел ссылку на этот гуглов сервис. Что же он из себя представляет? Тупо набор ссылок с самыми популярными запросами. После такого счастья не нужны ни базы кейвордов, ни какие-нибудь навороченные парсеры. Гугл сам всё раздаёт. Зачем он это делает? Я если честно не совсем понимаю. Наверное в надежде, что найдутся люди, которым просто интересно такое почитать. Нет, конечно, это действительно интересно почитать, правда лишь в том случае, если ты знаешь что такое СЕО, дорвеи и прочее. Меня этот сервис заинтересовал в первую очередь как программиста — "а почему бы не брать этот список кейвордов себе" было первой мыслью. И правда, ну что сложного выдрать 100 ссылок с обычной хтмл странички? Ничего. Пользуйся наздоровье. К тому же ещё и написано время последнего обновления. Это наверное гугл печётся о тех, кто собирается регулярно грабить эти кейворды — действительно, зачем зря загружать сервера, ещё раз спасибо гуглу, заботливый он у нас.

Итак, список мы получили. Что делать дальше? Тут уже вариантов куча. Понятно, нужно взять как можно больше контента по это тематике. Конечно, было бы неплохо этот контент поискать в гугле и скопировать себе на блог, но с таким подходом успеха мы не добьёмся. Мне больше нравится идея воспользоваться специализированными RSS-поисковиками — сразу и контент найдём, и не придётся мучаться, чтоб его аккуратненько себе слить — добавляем линки на рсс-ленты в базу грабера и наслаждаемся регулярно обновляемым контеном на сплоге. Причём добавление нового материала будет происходить всё активнее, ведь количество рсс-лент будет регулярно увеличиваться. При таком подходе, взяв 10 популярных запросов, выбрав на каждый из них по 10 лент, и сграбив из каждой из них по 10 постов мы за один подход получим 1000 постов на сплоге. Неплохо, правда? После этого осталось нарастить немного бэклинков и дождаться индексации гуглом.

Пойду пробовать, теперь на одну безумную (безумную ли?) идею будет больше. Из-за этого придётся опять отложить Закладочник на неопределённый срок. Кстати о Закладочнике, сегодня целый день писал класс для работы с http-протоколом. Конечно, в интернете можно найти кучу готовых классов (и я их нашёл, хе-хе, через несколько постов выложу подборку, вместе со своим классом), но я хочу получить из этого Закладочника максимум опыта и реализовать всё, что задумал, поэтому код переписывается уже в четвёртый раз. Первый раз делал с использование библиотеки CURL, но, как уже писал, у ней проблемы с передачей файлов. Следующим шагом был класс Snoopy, который мало того, что основан на CURL, так ему ещё и нелюбая разновидность подходит - встроенную в php он не любит, считает её нестабильной. Третьими были сокеты. В принципе сейчас тоже сокеты, но в виде "не классов" они очень неудобны — для отправки одного запроса расписывать строчек 10-15, для одного сервиса необходимо 3-4 запроса, а сервисов планируется мнооого:) Так что будет класс. На этом завершаю этот пост и начинаю реализовывать всё вышеизложенное. Бай.

Мистика

Какие-то странные вещи творятся с блогом, половина функций не работет, непонятно что было с капчей(показывалось, что ведена неверно), невыводилась страница 404 при неверном запросе... Поменял темку, ничего не скажешь:) Хотя я даже рад этому, есть повод заняться движком. Всё таки хорошо, что последнее время я лишь обдумывал его улучшение, но ничего не делал — сейчас многие вещи исправляю на автомате, даже не задумываясь как лучше реализовать ту ли иную фичу... Как всё налажу — отпишусь, потому что, как мне кажется, многие комментарии просто не дошли, жаль, но хотя бы понятно почему никто не отвечал так долго:)

UPDATE:
Что заметил исправил, посмотрим, всё ли работает... Дожили, сам движок написал, сам его и убиваю. Просьба ко всем, кто найдёт баги написать в комментариях либо в асю 442935.

Новый дизайн

Быстро время летит. Причём успеваешь заметить, что оно летит, а вот сделать что-то полезное — нет. Последние пять дней старался заниматься лишь полезными вещами — кодинг ("Закладочника" писал), рисование дизайна, но всё равно не сделал практически ничего. Впрочем вру, дизайн и вёрстку я наконец закончил, думаю вы уже заметили, если читаете это не через RSS, конечно. Не знаю даже, удовлетворён я результатом или нет. Получилось именно то, что я и хотел, да, но всё равно когда делаешь что-то, в душе надеешься что это будет Идеалом. А получается так себе, серенько. "Серенько" как раз и получилось. Какой-то мрачноватый дизайн, хотя старался сделать его чистым и лёгким. Вообщем какой уж получился, я давно хотел сменить внешний вид блога. Главное теперь стало больше свободного места, основная колонка текста расширилась раза в полтора, как раз для более объёмных постов, которые, надеюсь, смогу начать писать:). Ещё одна причина, из-за которой я сменил диз, это то, что я собираюсь переписывать двиг. Уже в который раз:). Но теперь для него более масштабные планы — хочу сделать движок для сателлитов. Идея не новая, но всё же расскажу. Я планирую оставить этот же код для отображения сообщений, тут всё просто — текст, комментарии и всё. Изменения коснуться администраторской панели. Во-первых, из одной панели можно будет администрировать всё блоги. Во-вторых, для добавления блогов достаточно будет припарковать все домены в одну папку, то есть залить единожды движок на сервер и в дальнейшем управлять из администраторской панели. Я думаю, это будет удобно для сателлитов с уникальным контентом, хотя может и граббер с синонимайзером можно будет добавить. Вообщем, такие планы на будущее.

С "Закладочником" пока не очень далеко продвинулся. Главное его отличие от похожих скриптов в том, что он позволяет добавлять ссылки массово. Как вы знаете, большинство (если не все) сервисы социальных закладок позволяют импортировать закладки из файла. Вот мы их и импортируем, передавая специально сгенерированный файл, который по сути является картой сайта:) Не знаю, даст ли это что-нибудь, но думаю будет полезно иметь внешние ссылки на каждую страницу. Изначально думал использовать CURL или класс Snoopy, эмулирующий работу браузера, но столкнулся с трудностями в виде протокола https (привет, del.icio.us ! ), поэтому пришлось перейти на сокеты. После всех мучений начал всерьёз задумываться о написании собственного класса для работы с http/https. Если кто подскажет нормально работающий — буду рад. CURL отпадает сразу — через него невозможно передавать файлы методом POST, а классы вроде Snoopy активно используют CURL… Правда при работе с https Snoopy вызывает исполняемые файлы CURL, который позволяет передавать файлы, но от этого не легче — отдельно от PHP CURL стоит далеко не на всех серверах. Так что будем искать красивые решения дальше. Пока не выкладываю результаты работы, если кому интересно — пишите в асю или на мыло, дам исходники вместе с руководством по эксплуатации:)

Закладочник

Закладочник

Некоторое время назад, во время очередных странстив по интернету, я наткнулся на один интересный скрипт – Закладочник. Скрипт этот меня заинтересовал. Вообщем обойдусь без длинных вступлений, я решил написать нечто похожее. Почему бы не воспользоваться готовым? Если вы зашли на страницу Закладочника, то наверняка обратили внимание на цену. Лично мне платить $40 ни за что не хотелось, скрипт довольно прост в написании.
Начнём разбираться как это работает и какие функции нужны скрипту на примере memori.ru. Видим, что сервис требует регистрацию и, в дальнейшем, аутентификацию. Надо так надо, регистрируемся, подтверждаем регистрацию по ссылке, пришедшей на e-mail. Необходимо научить скрипт аутентифицироваться, для этого воспользуемся классом Snoopy. Всегда пользуюсь им при работе с аутентификацией в web. Можно конечно написать самому, единственное что от него требуется, это сохранять полученные после аутентификации кукисы. Итак, начинаем разбираться, какие поля формы нужно заполнять. Можно внимательно просмотреть хтмл код страницы, можно поступить проще – отправить данные из формы на скрипт со следующим содержимым:

После чего увидим примерно следующее:

Array
(
[go_logining] => 1
[login] => login
[passw] => pass
[remember] => 1
)

Приступаем к кодингу. Если вы когда-нибудь работали с классом Snoopy, то знаете, что в этом нет совершенно ничего сложного. Для тех, кто с ним не знаком скажу, что нам достаточно лишь создать новый объект: $sn = new Snoopy
В массив $vars поместить необходимые параметры формы и отправить данные на сервер функцией $sn ->submit($url,$vars). Данные, возвращаемые сервером сохранятся в переменной results. Если аутентификация прошла успешно (функция вернула значение true и переменная cookies не пустая), устанавливаем полученные кукисы: $sn->setcookies(). После этого с помощью всё той же функции submit отправляем нужный URL в закладки. Теперь уже более менее чётко начинают вырисовываться параметры, необходимые для работы скрипта – во-первых, два URL, страницы для аутентификации и добавления закладки, и два набора параметров – значений форм. Так же, нужны пары логин:пароль, данные о кодировке сервера (если собираемся добавлять страницы с русскими комментариями). Возможно понадобится УРЛ главной страницы сервиса – устанавливать в качестве referera. Пока мне не попалось ни одного сервиса, но ещё далеко не все проверял. А может в будущем начнут проверять, когда увеличится количество спама по таким сервисам. Я решил реализовать это в таком виде: создайтся папка services, в ней находятся текстовые файлы, один файл описывает работу с одним сервисов. Название файлов произвольно, желательно выбирать сложные названия, для избегания кражи паролей (хотя кто мешает зарегистрировать кучу новых аккаунтов). Формат файлов следующий:

memori.ru
windows-1251
http://memori.ru/login/
go_logining=1&book=0&sf=&passw=%pass%&login=%login%
boookmark:******
http://memori.ru/link/
go_save=1&sm=0&sm2=0&book=0&ref=&old_url=&old_closed= &u_data[url]=%url%&u_data[name]=%title%&u_data[descr]= %descr%&u_data[tags]=%tags%&u_data[hdescr]= &u_data[ball]=0&u_data[start]=1

Что же тут написано? На первой строке УРЛ главной страницы, используется в качестве referrer`a.
Вторая строка – кодировка (используем iconv для перекодирования).
3 строка – УРЛ страницы с аутентификацией.
4 строка – поля формы, которые необходимо заполнить. %pass% заменяется на пароль, $loin% - на логин.
5 строка – пары логин:пароль.
6 строка – УРЛ для добавления ссылки в закладки.
7 строка – поля формы.
Несложно, правда? Добавить новый сервис можно без особых знаний, главное внимательность и терпение:). У меня это отсутствует, поэтому пока только memori.ru реализован. В ближайшее время будет продолжение статьи, есть куча идей по улучшению скрипта, но в одной статье всего не описать, поэтому выкладываю пока на ваше обозрение это. Жду предложений по улучшению и ваших отзывов от работы скрипта:). Пока у меня не пропало желание, можете предлагать интересные идеи по написанию скриптов. С меня сам скрипт и статья по его написанию (автор из меня конечно не очень… но буду стараться). Да, и чуть не забыл: скачать скрипт можно здесь.

Страница «О блоге»

Довольно сложно вести блог, пытаться писать на определенную тематику и при этом самому не определиться, что это за тематика. К чему я? Да к тому, что около года назад, при создании блога я упорно не мог понять, зачем нужны страничка «О блоге», не мог этого понять и весь следующий год. А вот сейчас неожиданно понял. Это же так просто, заполнить всего одну страницу информацией, совсем чуть-чуть текста. Но насколько проще в дальнейшем будет придерживаться этой темы, чем пытаться каждый раз заново решать для себя, на какую же тему вести блог. Навеяна эта мысль двумя вещами. Первая – хочу создать домашнюю страницу, маленькое портфолио. Думаю после этого появится стимул активнее пополнять это портфолио новыми работами и перестать выбрасывать старые скрипты. Уже столько раз убеждался, что вещи, кажущиеся ненужными мне могу здорово помочь другим. Даже домен присмотрел для этого дела, осталось закончить дизайн (эхх, чего уж там; начать его осталось:) ). Вторая причина – редизайн блога и, возможно, новая версия движка. Почему возможно? Потому что ещё не до конца продумал, каким этот движок будет. То есть определённые идеи есть – микроядерность, поддержка плагинов, регистрация пользователей, новый интерфейс.

***

Немного подправил исходный код страниц, теперь проходит валидацию. До этого были проблемы из-за кривых ссылок сапы, всего одна строчка – и всё работает. Интересно, почему им самим так трудно дописать эту строчку – банально str_replace(“&”,”&”,$links);.

Пути к оживлению блога

Давно уже пора сменить дизайн блогу. В последнее время много лазил по различны дизайнерским ресурсам и, под впечатлением от увиденного, решил придать своему блогу новый облик. Сейчас я действительно рад, что не перешёл на WordPress – для своего движка нарисовать новую тему гораздо проще.
Начал продвигать этот блог и блог о КПК в сапе, хочу поднять их в глазах поисковиков. А то что это за фигня такая: блогу скоро год стукнет, а PR до нуля упал? Очень надеюсь, что причиной падения послужило длительное отсутствие обновлений, а не ссылки на забаненые ресурсы. Ещё одной причиной послужил пост Как заработать на ПОКУПКЕ ссылок. Очередная заморочка, не очень верится, что смогу достигнуть таких же (или хотя бы близких к ним) результатов, но попробовать ничего не мешает. Заявку в AdSense уже подал, жду нескольких дней апрува или неапрува, как и было в прошлый раз.
С файлообменником творятся какие-то странные вещи – проработав несколько часов, файлы перестали добавляться, по непонятным причинам перестали приниматься файлы, то есть массив $_FILES – пустой. При этом никаких изменений в скрипт не вносилось. На письма в саппорт хостера пока нет ответа, так что ждём. К тому же дурацкое ограничение на объём загружаемых файлов в 2 мегабайта стоит, и хостер его отключать не собирается. Теперь даже не знаю, куда девать 30 гигов свободного места:). Понятно, что для хостинга файлов этого очень мало, но для начала, как оказалось, это даже перебор.

Файловый хостинг

Давно уже хочу открыть свой проект в интернете, социальную сеть или ещё что-то. Проект для людей, со своей оригинальной идеей, красивым дизайном, ломающий стереотипы о том, как должны выглядеть сайты. Но пока таких идей не появляется, а желание открыть проект есть, решили запустить файловый хостинг. Зачем? Для себя я хочу получить опыт работы с интернет-платежами и оплатой услуг через смс (планируется сделать платные аккаутны), интересно узнать, как быстро сможем раскрутить такой, мало чем выделяющийся среди остальных, ресурс. Преимущества перед остальными файлообменниками – отсутствие рекламы, удобный интерфейс, отсутсвие ограничений на время хранения файлов. Домен для него уже выбран – spfile.com. То ли SpeedFile, то ли SpreadFile, пока не решили.