Сенсация! Видовебъ за три часа!

Jan 22, 2008 20:28

В качестве эпиграфа:

Подобно главному герою 'Зова Ктулху', мы не смеем с лёгким сердцем игнорировать поведение душевнобольных, если они ведут себя такъ.МЦ

Мне остро не нравится тот ажиотаж, который мои планы развития гипертекстового Фидонета вызывают в среде жидокащенитов. МЦ

Только сейчас! Только для вас! Потрясающий мастер-класс!
"Сделай фидовеб гипертекстовым за три часа"!1
Сегодня днем, воспользовавшись пустотой в багтрекере я всё-таки решил воплотить свою давнюю дерзкую и блистательную идею, а именно экспериментально проверить, сколько времени может понадобиться для создания Гипертекстовых Фидонетов2. Ведь всем уже давно известно, что очередное Мицголово обещание отрелизить ГВФ 20-го января с треском провалилось, по неизвестной, как всегда, причине. Такимъ образом общий срок девелопмента "расширения для фаерфокса" уже опасно приближается к срокам создания Висты, мягко говоря, что не радует.



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

Шагъ 1. Создаем в талмудической Visual Studio проект типа Class Library.
Шагъ 2. Создаем классы Area и Message (см. код).
Шагъ 3. Создаем COM class, посредством которого мы будем получать наши данные в IE. Для сего создаем класс FidoApplication, в который вбиваем следующий быдлокод:
namespace HyperFido
{

public interface IFidoApplication
{
string GetArea(string echoName);
string GetAreasList();
}

[ClassInterface(ClassInterfaceType.None)]
public class FidoApplication:IFidoApplication
{
}
}

Шагъ 4. Вбиваем тестовые данные (кому интересно, см. код).
Шагъ 5. Теперь нам необходимо каким-то образом определиться с форматом данных, передаваемых клиенту. Позволю себе немного смухлевать и взять JSON-сериализатор с сайта-цитатника (который, в свою очередь, с небольшими модификациями взят с какого-то форума). Реализуем методы GetArea (возврат сообщений из эхехехи по имени) и GetAreasList(возврат всех эх, соответственно).
Шагъ 6. Таперича, когда мы имеем, откуда взять данные, нужно сбилдить проект и произнести жидомасонское заклинание в папке bin/Debug:
regasm HyperFido.dll /tlb /codebase
Шагъ 7. Мы имеем данные, но у нас нет гуя, а значит нет нигуя. К счастью, методом пристального вглядывания в примеры к джаваскриптовому фреймворку Ext 2.0 мы с легкостью обнаруживаем там пример RSS Feed Viewer, который подозрительно напоминает то, что нам требуется. Действительно, что еще нужно заправскому фидошнику, как не три панельки "просмотр эх", "список сообщений" и "просмотр сообщения". Скачаем же исходный код и употеем в предвкушении работ по его генной модификации!
Шагъ 8. Сделаем, чтобы вместо списка стандартных фидов на нашей левой панельке выводился православный список эх. Для сего в Ext.onReady в файле FeedViewer.js заменим добавление фидов на следующий код:

var app = new ActiveXObject("HyperFido.FidoApplication");

// Получили список эх, сериализованный в текст.
var jdata = app.GetAreasList();

// Ба, мы можем невозбранно его преобразовать в структуру данных!
var areasList = eval("("+jdata+")");

// ...и добавить эхи в список
for (var i=0;i

Шагъ 9. Для невозбранной подгрузки сообщений идем в FeedGrid.js и модифицируем loadFeed : function(url) .
Шагъ 10. Теперь для того, чтобы в нижней панели показывалось сообщение, нам нужно немного подмудить view.html (из которого предварительно почистить ссылки на php скрипты).
Шагъ 11. Ну вот и всё, вроде. С гордостью любуюсь на дело рук своих:


А скачать и убедиться, что фидовеб - не мечта, можно здесь http://mithgol.a4rism.com/fidoweb/HyperFido.zip (внимание! поставляется as is) .
Выводы о том, сколько времени нужно для создания полноценного фидонета, оставляю на ваше усмотрение.

1. Из которых большая часть ушла на разборки с Ext'ом , с которым я не слишком знаком. Опытный вебмастеръ (tm) потратил бы меньше времени.
2. Разумеется, это всего лишь модель, а не полнофункциональное приложение. Also, она не может быть использована как руководство по программированию - выбирались самые простые работающие решения, они кривые и некрасивые.

UPD: Забыл про System Requirements:
1. .NET Framework 2.0
2. IE (тестировал на 7-мом, должно пойти и на 6-ом).

Для запуска примера нужно распаковать архив и перейти /HyperFido/HyperFido/bin/Debug/...
Там зарегистрить HyperFido.dll (см. шаг 6)
И открыть view.html в IE, запуск ActiveX разрешить.

mithgol, программизм

Previous post Next post
Up