Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Совместный проект 
:(
    Опции темы
Kiber_rat
Дата 1.4.2006, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MACMANIAC
**


Профиль
Группа: Участник
Сообщений: 276
Регистрация: 18.4.2002
Где: Ashdod, Israel

Репутация: 7
Всего: 9



Не понял чем один метод противоречит другому smile То о чем я писал позволяет разделить логику и представление, но при этом никто не мешает вызвать вначале printTop а потом printBottom. Кроме разделения кода и дизайна есть еще свои плюсы в том, что при обращении к странице не видно с какой технологией работает движок, поскольку запрашиваемый файл имеет расширение html а не pl или cgi, что весьма немаловажно с точки зрения секьюрности. Любой скрипткидди завидя расширение cgi тут же начнет ломится туда всеми скачанными сплойтами smile Плюс еще в том, что с таким кодом легко работать дизайнеру, поскольку весь perl-код в комментах и не отсвечивает в большинстве HTML редакторов...
In any case мое дело было предложить.


--------------------
Best regards!                                                             
@..@_____Ku6ep
=*=______\______KPbIC
Код
print join "",map{chr}(split/(\w{2})/,hex(int(2175.57302796298**2)))
PM WWW ICQ Skype Jabber YIM   Вверх
nitr
Дата 1.4.2006, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



А кто сказал, что твоя идея отвергнута ;) Мне понравилась. Думаю это и имелось ввиду про сказанное выше...


--------------------
PM   Вверх
korob2001
Дата 1.4.2006, 01:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Цитата(Kiber_rat @ 31.3.2006, 21:38 Найти цитируемый пост)
Не понял чем один метод противоречит другому  То о чем я писал позволяет разделить логику и представление, но при этом никто не мешает вызвать вначале printTop а потом printBottom. Кроме разделения кода и дизайна есть еще свои плюсы в том, что при обращении к странице не видно с какой технологией работает движок, поскольку запрашиваемый файл имеет расширение html а не pl или cgi, что весьма немаловажно с точки зрения секьюрности. Любой скрипткидди завидя расширение cgi тут же начнет ломится туда всеми скачанными сплойтами  Плюс еще в том, что с таким кодом легко работать дизайнеру, поскольку весь perl-код в комментах и не отсвечивает в большинстве HTML редакторов...
In any case мое дело было предложить.

Да я не спорю, но нужно реализовать, для начала, хотя бы одну страницу, что бы наглядно посмотреть. Я просто сказал, как делал я. smile На выходных постараюсь закончить класс. Ты тоже напиши хотя бы одну страницу, потом будем решать, как жить дальше.

ЗЫ: Думаю по названию, будет не сложно догадаться на чём написана серверная часть. ;))))) Можно таких таварисчей ввсести в заблуждение изменив название на "PHP anatomy" или "Python anatomy". ;))))


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
korob2001
Дата 5.4.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Привет!
Вот несколько вариантов дизайна с использованием класса Design.pm

Сначала написал такой вариант:
http://antonium.org/cgi-bin/anatomy/first.pl

Прнцип работы с классом примерно такой:
Код

#!/usr/bin/perl -T
use lib qw( /путь/к/библиотеке );
use Design;

# Создаём объект дизайна
my $design = Design->new();
# Создаём объект панелей
my $panel = $design->getPane();

# Выводим верхнюю часть страницы
$design->printTop();

     # Здесь всё пространство, которое находится между верхним и нижним блоками,
     # в нашем распоряжении. Так же юзаем методы объекта $panel 

     print $panel->begin("Заголовок панели", "none", "#ffffff");
             # Что-то выводим в стандартную панель.
     print $panel->end();

# Выводим нижню часть
$design->printBot();

Но у этого варианта был существенный недостаток, отсутвие навигационного меню. ;(((((
Решил написать плавающее меню, потому в класс добавилось два метода:
Код

$design->beginMoveBlock();
    # Здесь помещаем всё, что хотим всегда оставлять на экране
$design->endMoveBlock();

Вот пример тойже страницы, но к коду добавилось ещё 2 строки, которые показаны выше:
http://antonium.org/cgi-bin/anatomy/first2.pl

Для генерации страниц, не очень сложных документов, варианты показанные выше, прекрасно подходят, но допустим на нужно создать аналог вот этой HTML страницы:
http://antonium.org/dsn/title5.html

Для того, что бы не писать почти весь код ручками, при создании объекта класса Design нужно передать конструктору номер дизайна, их пока три. Первый вы уже видели выше.
Терь давайте создадим аналог той HTML странички, которую я указал выше. Код получается примерно таким:
Код

#!/usr/bin/perl -T
use lib qw( /путь/к/библиотеке );
use Design;

# Создаём объект дизайна
my $design = Design->new( DESIGN => 2 ); # Первый по умолчанию, потому выше мы не передавали этот параметр
# Создаём объект панелей
my $panel = $design->getPane();

# Выводим верхнюю часть страницы
$design->printTop();

     # Здесь весь блок, который находится там, где расположено меню в HTML страничке,
     # в нашем распоряжени.
     print $panel->begin("Навигация", "none", "#ffffff");
             # Заносим сюда меню, о том, как это сделать написано ниже
     print $panel->end();

     # Переходим в следующий блок  <--------------------------------|
     $design->nextColumn();

     # Здесь всё, что находится в том месте, где расположены статьи, в HTML страничке,
     # в нашем распоряжении.
     print $panel->begin("Заголовок статьи", "none", "#cccccc");
             # Заносим стаью в панель
     print $panel->end();

# Выводим нижню часть
$design->printBot();

В итоге вот что получилось:
http://antonium.org/cgi-bin/anatomy/second.pl

Для того, что бы вывести меню, необходимо создать объект класса Navigation, у которого, пока, только один метод linkList. В списковом контексте он возвращает список всех ссылок из файла XML, уже обёрнутых в теги <a>. Это конечно не очень разумно, но мне было так удобнее. ;))))) Так что потом, если нужно будет, подправим.
Сейчас, что бы вывести меню, нужно написать такой код:
Код

print $panel->begin("Навигация");
print "$_<br/>"  for ( @{$design->getMenu()->linkList()} );
print $panel->end();

Всё вроде ничего, но вдруг кому-то понадобится создать меню справа? Для этого нужно передать конструктору класса Design второй параметр: BLOCKSIDE => "right" и поменять местами те блоки которые мы выводили выше.
Код

#!/usr/bin/perl -T
use lib qw( /путь/к/библиотеке );
use Design;

# Создаём объект дизайна
my $design = Design->new( DESIGN => 2,            # Первый по умолчанию, потому выше мы не передавали этот параметр
              BLOCKSIDE => "right" ); # Указываем на то, что меньший блок будет расположен справа
# Создаём объект панелей
my $panel = $design->getPane();

# Выводим верхнюю часть страницы
$design->printTop();

     # Здесь всё, что находится в том месте, где расположены статьи, в HTML страничке,
     # в нашем распоряжении.
     print $panel->begin("Заголовок статьи", "none", "#cccccc");
             # Заносим стаью в панель
     print $panel->end();

     # Переходим в следующий блок  <--------------------------------|
     $design->nextColumn();

     # Здесь весь блок, который находится там, где расположено меню в HTML страничке,
     # в нашем распоряжени.
     print $panel->begin("Навигация", "none", "#ffffff");
             # Заносим сюда меню, о том, как это сделать написано ниже
     print $panel->end();

# Выводим нижню часть
$design->printBot();

В итоге получим такую страницу:
http://antonium.org/cgi-bin/anatomy/second2.pl

И последний вариант дизайна, с тремя блоками, просто передаём конструктору класса Design параметр DESIGN => 3
Получается примерно такая схема:
Код

#!/usr/bin/perl -T
use lib qw( /путь/к/библиотеке );
use Design;

# Создаём объект дизайна
my $design = Design->new( DESIGN => 3 );  # Первый по умолчанию, потому выше мы не передавали этот параметр
# Создаём объект панелей
my $panel = $design->getPane();

# Выводим верхнюю часть страницы
$design->printTop();
     
     # Здесь весь первый блок в нашем распоряжени.
     print $panel->begin("Навигация", "none", "#ffffff");
             # Заносим сюда меню, о том, как это сделать написано ниже
     print $panel->end();

     # Переходим в следующий блок  <--------------------------------|
     $design->nextColumn();
     
     # Здесь весь второй блок в нашем распоряжении.
     print $panel->begin("Заголовок статьи", "none", "#cccccc");
             # Заносим стаью в панель
     print $panel->end();

     # Переходим в следующий блок  <--------------------------------|
     $design->nextColumn();

     # Здесь весь блок третий блок в нашем распоряжени.
     print $panel->begin("Навигация", "none", "#ffffff");
             # Заносим сюда меню, о том, как это сделать написано ниже
     print $panel->end();

# Выводим нижню часть
$design->printBot();

В итоге получается примерно такая страница:
http://antonium.org/cgi-bin/anatomy/third.pl

Здесь, в правом блоке, я опять заюзал методы $design->beginMoveBlock() и $design->endMoveBlock(). ;))))))

Есть ещё несколько методов, но о них я напишу чуть позже, пока не знаю точно оставлю их или нет.

Вобщем вы пока посмотрите, а я пожалуй пойду спать. ;)))) Потом ещё раз подрихтую код и будем решать, как жить дальше. А пока было бы интересно выслушать ваше мнение.

ЗЫ: Юзал только ООП и даже в JavaScript ;)))))) Скорость пока вроде ничего, меня устраивает. Кстити, с JavaScript'ами я ещё не закончил, потому пока на одной странице можно создавать только один движущийся елемент. ;((((
Использовал модули: XML::Simple, Text::Iconv, весь HTML хранится отдельно от кода.

Это сообщение отредактировал(а) korob2001 - 5.4.2006, 09:46


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 5.4.2006, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



korob2001, очень понравилось! ИМХО в том же духе! БОЛЬШОЙ респект! Думаю хороший вариант, можно также аякс использовать, много скриптом в пакете Ruby smile можно позаимствовать smile
Добавлено @ 16:49
А "разжевал"-то как smile Вот обучаться бы по твоим книжкам ( в своё время)


--------------------
PM   Вверх
Exorcist
Дата 6.4.2006, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 17.3.2006

Репутация: нет
Всего: нет



Классно получается. Но мне ненравятся движущиеся меню - как-то отвлекает (лично мое мнение).
Я буду одним из первых посетивший ваш сайт, а мотом можно будет из етого топика убрать лишние сообщения и выпустить книжку типа "Сайт своими руками от 'А' до 'Я'!" smile

P.S.: Я только начинаю програмировать на перле.
PM MAIL ICQ   Вверх
nitr
Дата 6.4.2006, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Да korob2001, орден надо smile за то что (думаю так оно и есть) единственный кто за сайт взялся, всерьёз smile


--------------------
PM   Вверх
Neuronix
Дата 10.4.2006, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 16.12.2005
Где: СПб

Репутация: нет
Всего: нет



Могу предложить свою помощь в качестве perl-программера...
И сразу, чтобы не изобретать велосипед - сюда
По поводу парсинга html - я уже наступал на грабли со всякими bottom, top и т.д. Все это к хорошему не ведет, да и гибкости маловато.
Советую присмотреться к методам Template() и TemplateParsing() по вышеуказанной ссылке.
PM MAIL WWW ICQ   Вверх
nitr
Дата 10.4.2006, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



Ну наворотили движок smile Но всё же респект. И пока я не нашёл чего же "велосипедного" сделал korob2001?
Всё даже прилично, и как он выше сказал, будем использовать написаный нашим участником модуль - BlackCGI (имхо верно)!
А сейчас он занимался отделение дизигна от кода smile


--------------------
PM   Вверх
Neuronix
Дата 10.4.2006, 16:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 16.12.2005
Где: СПб

Репутация: нет
Всего: нет



Ну, короче, что на первом месте по важности стоит? Отделение дизайна от кода. Не проблема.
Вы сейчас придумываете шкуру к пустому месту, потому что даже скелета нет.
Мне кажется, сначала нужно разработать архитектуру, а потом уже ляпать шкуру. Мое ИМХО.
Добавлено @ 16:47
Да, и ещё... Зачем себя загонять в тупик блочным дизайном? Я сначала тоже делал так, но потом решил, что лучше единый шаблон страницы (template)
PM MAIL WWW ICQ   Вверх
Ramirez
Дата 10.4.2006, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 18.1.2005
Где: Moscow, ExUSSR

Репутация: 4
Всего: 5



Если уж речь зашла о готовых движках то стоит посмотреть на http://www.plainblack.com/webgui по крайней мере, там есть что подчерпнуть.
PM ICQ   Вверх
shootnix
Дата 10.4.2006, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

Репутация: 2
Всего: 2



hello2all господа... я, пожалуй, не совсем вовремя вклиниваюсь со своим предложением, так что считайте, что это на будущее. Я что хочу сказать... а! Я вот в свободное время бывает, что и перевожу там чёнить, в общем, если что - имейте ввиду, если надо перефигачить с англицкого на ... какой там у нас .. русский. Вот...
PM WWW ICQ   Вверх
sharq
Дата 10.4.2006, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



shootnix,
Цитата(shootnix @ 10.4.2006, 22:46 Найти цитируемый пост)
если надо перефигачить с англицкого на ... какой там у нас .. русский.

не поверишь - надо. smile

Я очень хочу собрать добротную информацию по perl, тем более на русском (ее очень мало).
Но не статейки, как сделать велосипед, а перевод документации или книг (но книг не perl за 24 часа).
Поэтому все что есть - присылайте или выкладывайте,
как соберем значительную часть и будет место, все опубликуем.

Идея по переводу - перевод стандартной доки, которая поставляется вместе с дистрибутивом от ActiveState.

shootnix, я видел ты перевел faq1, продолжай в том же духе.
Только перевод будем делать в txt или сразу в pod-формате!

smile

Это сообщение отредактировал(а) sharq - 10.4.2006, 23:07


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
shootnix
Дата 11.4.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 3.9.2005
Где: Казахстан

Репутация: 2
Всего: 2



Цитата(sharq @ 10.4.2006, 23:03)
Идея по переводу - перевод стандартной доки, которая поставляется вместе с дистрибутивом от ActiveState.

Ага, я тоже это и имел ввиду smile Я начал всё по порядку, пока что есть только м... perldoc perl и то, довольно сыровато.. Можно посмотреть, оценить там... конечно не фонтан, но я над этим работаю smile
ссылочка (не подумайте за рекламу)
http://perldoc.forever.kz

PM WWW ICQ   Вверх
Neuronix
Дата 11.4.2006, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 16.12.2005
Где: СПб

Репутация: нет
Всего: нет



Так что сначала-то? Сайт или перводы?
PM MAIL WWW ICQ   Вверх
Страницы: (7) Все « Первая ... 3 4 [5] 6 7 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1094 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.