среда, 9 мая 2012 г.
Размышляя о своей последней идее по наполнению контентом сайтов и о том как собственно из этого контента сайт генерировать, каким образом описывать HTML шаблон, вдруг подумал - а нужны ли нам HTML шаблоны вообще? Да, в интернете полно бесплатных HTML шаблонов, очень симпатичных и функциональных, но для того чтоб подключить его к своему сайту, нужно использовать один из готовых шаблонизаторов либо использовать свой язык, как я это сделал в своей программе для генерации HTML сайтов WebProject. Там я решил не изобретать сложностей с языком итераторов в шаблоне (правда условную вставку все же пришлось добавить), а сделал все достаточно жёстко. В комментах HTML пишем что-то типа <!--menu--><ul><!--items--><li><a href="{url}">{name}</a></li><!--/--></ul><!--/--> - это и есть итератор по пунктам меню. Таким образом берем готовый HTML шаблон и прописываем метки-комментарии для шаблонизатора, а уж он сам организует цикл с проходом по пунктам меню и прочим. В итоге - можно подключить любой шаблон, нужно только подготовить его к использованию в программе - прописать в нужных местах нужные метки.

А что стоит за реализацией такого подхода с точки зрения программиста: пишем парсер шаблонов, который разбивает исходный текст на блоки, заполняет определенную структуру с именами элементов. Далее при сборке выполняет подстановку в нужные места нужных данных и вызывает при встрече определенных макросов и ключевых слов функции-итераторы которые находят нужный формат элементов из распарсенного шаблона и выполняет проход по элементам сайта и выполняет необходимые подстановки. В конечном итоге получается что мы работаем с текстом, сначала мы переводим шаблон из текстового формата во внутренний формат, выполняем текстовые подстановки и затем формируем конечный текстовый HTML файл. Зато можем использовать практически любой шаблон. Однако, на практике удачных и правильно организованных как с точки зрения HTML так и SEO шаблонов очень мало, чтобы подправить шаблон под свои нужды я вынужден использовать HTML редактор (я использую Dreamweaver). Правлю шаблон в редакторе, а затем смотрю на результат в WebProject - какое-то половинчатое решение получается. Тут нужен какой-то конструктор шаблонов, подумал я.

Однако задумался, хочется удобный визуальный инструмент для дизайна, но нужен ли мне этап перевода элементов моего дизайна в текстовый язык шаблонов, чтоб потом опять из текстового формата все перевести в свой внутренний формат, выполнить проходы по всем нужным элементам для заполнения структур данными, чтоб опять все перевести все в текст? А может этап с языком шаблонов лишний и можно сразу из элемента дизайна формировать HTML код (или любой другой код языка описания интерфейсов)? В любом случае пока это просто идея на уровне догадки, но меня эта мысль заинтриговала. Вводить такой подход в WebProject я наверное не буду, а вот в проекте WebFlow это может пригодиться.
вторник, 8 мая 2012 г.
Работая над сайтами в своей программе для создания и поддержки html сайтов WebProject пришла в голову следующая мысль. Когда мы создали сайт и больше не планируем менять его структуру - надо менять интерфейс программы, т.к. основная задача становится другой - наполнять сайт контентом. Наполнение сайта - это несколько однотипных шагов, в основном они касаются добавления текста, файлов и изображений в нужный раздел сайта.

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

После того как записи добавлены начинается этап публикации. Скрипт публикации просматривает записи и на основе типа записи и подтипа определяет в какой раздел сайта помещать информацию. Т.е. все новости в раздел новостей, одновременно может выполняться определенная команда, например публикация в твиттер или кросспостинг в блоги. Т.е. задача того кто публикует контент на сайте упрощается, он выбирает что он публикует и заполняет запись для публикации и уже не задумывается и не ищет в дереве элементов сайта, раздел для публикации и не выполняет действия по созданию нового элемента и заполнению необходимых полей для данного типа элемента. Кроме того мы видим что делалось с сайтами в хронологическом порядке и можем фильтровать записи по нужному параметру.

Я думаю ввести в WebProject частично эту идею в виде настраиваемых команд по добавлению заранее заданных элементов в определенные разделы.

А вообще планирую создать приложение для проверки идеи, пока рабочее название софтинки Bytexpert WebFlow.
суббота, 3 апреля 2010 г.


Нарисовал иконку для своего приложения. Возможно, начинать приложение с иконки и дурной тон, но мне так захотелось. Думаю, что видно, что приложение будет связано с твиттером. И я напишу его в виде скриптового приложения, а затем выложу исходники скрипта здесь, в моем блоге, с описанием того что и как там устроено. Надеюсь получится интересно...
суббота, 27 марта 2010 г.
Недавно я решил что буду в своих проектах следовать плану: Краткий план для новичков в шароваре. Можно, конечно, сразу писать нормальные десктопные приложения на Delphi. Но меня привлекает идея скриптовых приложений с HTML интерфейсом. Я уже пробовал писать такие приложения - результат получился вполне презентабельный:


HTML позволяет сделать приложения с более привлекательным внешним видом, а JavaScript библиотеки типа JQuery добавить анимацию и живость интерфейсу. Это приложение было написано мной достаточно давно в качестве эксперимента и использовал я его исключительно для себя.

И вот теперь я решил подойти к разработке таких приложений более основательно. Теперь у меня есть небольшой фреймворк, который позволяет использовать в скриптовых приложениях: многопоточность, подключаемые протоколы для динамической генерации html-контента (можно сгенерировать изображение в памяти и затем его показать в браузере прямо из памяти), работа с изображениями, http, pop3, xml, ресурсами приложений, бинарными данными и т.п. Данный фреймворк доступен в 2-х вариантах: как COM-библиотека и в EXE-модуле сугубо для использования объектов внутри приложениия.

Для таких скриптовых приложений я выбрал аббревиатуру JSA (JavaScript Application). Приложения представляют из себя zip-архив с расширением jsa. В архиве должны присутствовать файлы: app.js - основной скрипт в котором расположен код приложения, app.ini - информация о приложении (название, издатель, версия и т.п.), app.html - html-интерфейс приложения, а так же все необходимые дополнительные файлы: css, графические файлы и файлы данных.

Исполняться эти приложения будут следующим образом: модуль для выполнения приложений jsa.exe загружает jsa-приложение, создает окно браузера, инициализирует скриптовый движок и объекты фреймворка и выполняет скрипт расположенный в app.js, а затем открывает файл app.html в браузере. В файле app.js располагаются основные процедуры по работе с приложением, а взаимодействие с html-интерфейсом выполняется через свойство External доступного из скрипта html-интерфейса.

Jsa.exe кроме выполнения jsa-приложений переданных параметром в командной строке может выполнять неупакованные в zip-архив приложения, для этого достаточно передать в качестве параметра путь к любому из файлов приложения расположенных в отдельном каталоге. Это может быть удобно при разработке jsa-приложений. Так же если в Jsa.exe включить ресурс с jsa-приложением под именем app, про при запуске такого измененного Jsa.exe будет выполнено приложение из ресурсов. Таким образом, можно разработать свое jsa-приложение и распространять его в виде самодостаточного приложения.

Какие же приложения я планирую выпустить на этой технологии? Во-первых связанные с графикой: создание аватаок, изменение размеров изображений для публикации, нанесение логотипов на изображения и т.п. Во-вторых приложения для автоматизации задач в SEO: генерация сайтов-сателлитов, публикация ссылок в каталогах и сервисах соцзакладок, работа с твитером, почтой и т.п. Так же есть давняя идея по автоматизации Фотошопа.

Есть еще один вариант использования этой технологии, базовый функционал пишется в jsa-приложении, но интерфейс загружается с реального веб-сайта, т.е. мы можем сделать подобие веб-сервиса, но вся работа будет выполняться на компьютере пользователя. В таком варианте возможна монетизация приложения за счет рекламы, что может быть хорошим вариантом для бесплатного приложения.
четверг, 25 марта 2010 г.
Сейчас появилось много веб-приложений которые ничуть не уступают десктопным. Так почему бы не делать десктопные приложения на этой же технологии. Adobe AIR как раз это и позволяет делать. Но речь не об AIR. Мне нравится JavaScript и для его использования в в своих приложениях я написал некоторое количество базовых объектов - получилось что-то вроде небольшого фреймворка для создания скриптовых приложений с HTML интерфейсом.

Есть большая область задач для решения которых достаточно небольшого скриптового приложения, это могут быть задачи обработки графики, SEO-инструменты и т.п. которые могут обойтись парой десятков строчек JavaScript кода. Писать полноценное десктопное или веб приложение для подобных задач вроде бы и ни к чему, но быстрое решение с аскетичным интерфейсом выполняющее четко поставленную задачу пригодилось бы. Поэтому пришла в голову такая мысль - JavaScript код и HTML пакуется в zip-архив и пишется в ресурсы универсального exe-модуля который и обеспечивает функционирование мини-приложения. Таким образом получаем самостоятельное приложение которое не нуждается в установке и сразу готово к запуску.
пятница, 19 февраля 2010 г.
Собирался уже идти спать, но пришла мысль по поводу хранения настроек и регистрационных данных программы, вернулся записать чтоб не забыть. Лично мне хотелось бы хранить в настройках программы и регистрационную информацию и время последнего запуска и количество запусков для триала и вообще для статистики. Но в открытом виде хранить это как-то не очень красиво, любой школьнег подправит что ему надо и усё... Поэтому надо бы шифроваться. Как вариант - бинарный формат, но с ним не очень удобно работать из программы и совместимость версий будет проблемой если делать на основе обычной структуры данных. Удобно работать с INI или с XML и с версиями у них проблем нет, но они легко читаются и могут быть изменены без особых проблем в любом текстовом редакторе. Поэтому делаем так:
1. храним настройки в INI/XML
2. при чтении/записи файлов настроек файл просто его шифруем/дешифруем, а можно еще дополнительно ZIP-ануть чтоб места меньше занимал.
Периодически балуюсь с внедренным IE контролом и скриптами, особенно интересно работать с JavaScript и свойством External через которое можно выставить функции приложения наружу. Об использовании этого я еще выскажусь позже.

А сейчас про использовании IE-контрола при активации продукта:
1. После ввода ключа, продукт просит активацию.
2. При активации открывается окошко с внедренным IE и выполняется переход на страницу активации.
3. На странице активации выполняется JavaScript который собственно и выполняет активацию продукта, это может быть, например, вызов набора функций самого же приложения для создания кода с привязкой к HardWareID. Иными словами в самом приложении имеется только код проверки активации, но не готовая функция создания активации, ее роль выполняет набор вызовов функций на странице активации.

Разумеется все это легко ломается крякерами, но я вижу некоторые дополнительные плюсы:
- можно блокировать некоторые ключики на сайте (разумеется от генератора активаций это не спасет, но все же).
- на странице можно предложить купить более новую версию продукта со скидкой или другие свои продукты
- можно выложить ключики продукта в открытый доступ, а на странице активации повесить SMS-замок

Короче придумать можно много еще чего...

Social

Popular

Технологии Blogger.

Постоянные читатели