Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Общие вопросы > Совместный проект


Автор: korob2001 9.3.2006, 11:36
Всем привет!

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

Вобщем предлагаю решить для начала: Что будем писать? smile

Автор: DEER 9.3.2006, 11:51
Я б непрочь поучавствовать!

Автор: sharq 9.3.2006, 11:56
Предлагаю развиваться в двух направлениях:
  • разработка ПО
  • поддержка языка perl
Разработка ПО включает в себя написание разнообразных скриптов, модулей, создание систем на perl, полное изучение поставленной задачи и реализация.
Вот мои варианты, эти задачи являются до конца не изученными и не реализованными:
  • отправка sms, изучение протокола передачи и реализация
  • отправка сообщений по icq, тоже самое
  • написание модуля для работы с doc-форматом, а точнее открытие, чтение, парсинг. На CPAN такого еще нет.
  • написание скрипта, которяй форматирует текст в зависимости от содержания. Например, для форматирования html-кода, расставление табуляции, выравнивание блоков и др.
Предлагаю (для разминки) начать с форматирвания html.
Только работать одновременно будет над одной задачей, чтобы не расстрачивать свои силы.
И перед тем как ее реализовывать, необходимо сформулировать т.з., определиться с разработчиками, распределить роли и начинать реализовывать, затем сбор все в единый проект, откладка и тестирование. Плюс написание документации.

Поддержка языка включает в себя написание документации по perl.
Предлагаю начать переводить стандартную документацию, которая входи в поставку от ActiveState. Плюс нужно собрать всю полезную информацию по perl (желательно на русском, но в оригинале тоже хорошо) и ссылки на ресурсы по perl.

smile

Автор: DEER 9.3.2006, 12:50
Цитата(sharq @ 9.3.2006, 11:56)
[*]отправка sms, изучение протокола передачи и реализация
[*]отправка сообщений по icq, тоже самое

писал и то и то, только на C#.

отправка sms,
это есть обычная отправка электронной почты на адрес типа 89102221122@megafon.ru
точный вид адреса надо узнавать у оператора.
писал это 1,5 года назад,
- у мегафона - просто отправка на номер
- у БиЛайна - у того кому отправляешь sms должна быть подкл. услуга, после её подключения, как в Мегафоне
- МСТ - девушка - оператор затруднилась дать ответ по поводу такой услуги smile

отправка по icq
пытался найти зрешиние, чтобы отправлять сообщения без регистрации отправителя - не нашел, если решить эту задачу, то получиться МЕГАспамерский робот, и его можно за такие бабки продать smile ;
зато нашел подробное описание формата их сообщений и т.п. сейчас уже всё это на отформатированном винте, но если браться, то проблем найти второй раз не будет.
теможно написать мдуль, подключая который, можно скажем войти под своим уином и т.п. т.е. какого нить универсального клиента, которого можно подключить как ActiveX к проге.

Автор: BlackLFL 9.3.2006, 13:46
Цитата

отправка sms, изучение протокола передачи и реализация

DEER, поддерживаю его.

Цитата

написание модуля для работы с doc-форматом, а точнее открытие, чтение, парсинг. На CPAN такого еще нет.

а это что? http://search.cpan.org/~johanl/Win32-Word-Writer-0.02/lib/Win32/Word/Writer.pm

Либо использовать OLE, прочитав спецификацию с http://msdn1.microsoft.com/en-us/default.aspx

Я несовсем понял, что значит "парсинг" в нашем случае?
Код

$word->ActiveDocument->SaveAs( "file.txt", 2 );

Таким образом мы можем сохранить почти в любой формат, и уже корректно "отпарсить".

Единстевное, что актуально, это модуль под UNIX, но DOC закрытый формат, и мы не сможем это реализовать ...

Цитата

написание скрипта, которяй форматирует текст в зависимости от содержания. Например, для форматирования html-кода, расставление табуляции, выравнивание блоков и др.

Для чего это smile




Перво-наперво, я считаю надо решить вопрос с Perl.ru, кто готов внести финансовую помощь для выкупа домена(я готов)?
Давайте решим, какую сумму будем предлагать, и до какой мы можем подняться ...

Автор: sharq 9.3.2006, 16:30
BlackLFL,
Цитата(BlackLFL @ 9.3.2006, 14:46 Найти цитируемый пост)
Win32::Word::Writer - Create Microsoft Word documents

слово create переводится как создание, а не открытие уже созданного и работа с ним, типа как Spreadsheet::Excel для xls-файлов.

Цитата(BlackLFL @ 9.3.2006, 14:46 Найти цитируемый пост)
Либо использовать OLE, прочитав спецификацию с MSDN

но это надо реализовывать!

Цитата

Я несовсем понял, что значит "парсинг" в нашем случае?

$word->ActiveDocument->SaveAs( "file.txt", 2 );

Таким образом мы можем сохранить почти в любой формат, и уже корректно "отпарсить".

о! это я не знал, но догадывался. Т.е. можно с помощью OLE открыть уже созданный doc файл, сохранить его как xml?
Распарсить Word XML - это всего лишь дело техники. smile
Тем более WordML - документирован.

Цитата(BlackLFL @ 9.3.2006, 14:46 Найти цитируемый пост)
Единстевное, что актуально, это модуль под UNIX, но DOC закрытый формат, и мы не сможем это реализовать ...

такой же закрытый как и xls! Это всего лишь бинарный формат.

Цитата(BlackLFL @ 9.3.2006, 14:46 Найти цитируемый пост)
Для чего это

Для создания красового html-кода и не только!!!
Цитата(BlackLFL @ 9.3.2006, 14:46 Найти цитируемый пост)
Перво-наперво, я считаю надо решить вопрос с Perl.ru, кто готов внести финансовую помощь для выкупа домена(я готов)?
Давайте решим, какую сумму будем предлагать, и до какой мы можем подняться ...

Об этом еще рано говорить, нужно хотя бы что-нибудь поднять, а потом уже замахиваться на perl.ru. А место где потестировать - найдем. smile

smile

Автор: nitr 9.3.2006, 21:45
sharq, с icq всегда помогу smile Уже год как изучен мною протоколы 5, 7, 8. Я лично исправил модуль точно не помню какой smile на нём копирайта не было, но то что он не подходил воообще это 100%. Могу тебе выслать на мыло, ты посмотришь, скажешь мне что почитать smile может увидишь знакомый код, я СМОГУ поддерживать этот модуль В ЛЮБОЕ ВРЕМЯ и сделаю его самым акутальным!

Отправка смс smile Мой бот написанный на перл, умеет через ирк в аське smile умеет слать смс(самый простой метод - парсинг) и т.д. из этого следует, что могу помочь smile

doc'и... вот тут я в тупике smile дайте rfc по ним иль думаю сам в msdn поисчу smile и будет модуль от меня (sharq думаю понимает мой сарказм ;) ) т.к. для xls я сделал простейший модуль-парсер, уточню xls версии Excel 2.0, для него нет CPAN.

В переводах не буду учавствовать smile А примеры думаю смогу писать smile
Добавлено @ 21:48
В данный момент модуль может проверять даже на невидимость smile Которую пропатчили аол smile А мини-дырка осталась smile))

Автор: DiverD 10.3.2006, 01:38
Цитата(korob2001 @ 9.3.2006, 11:36)
Всем привет!

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

Вобщем предлагаю решить для начала: Что будем писать?  smile

Принять участие в данном проекте может каждый, зарегестрированный пользователь, не зависимо от профессионального уровня.
хоть еще не знающий но я ЗА! потому что PERL эта самый рулезный язык=) а этат форум самый фурумистый в рунете!!!

что касается чего пистьа,то да как сказана выше icq/irc не безинтересные вещий,было бы конечно неплоха,по ним и модулей не так и многа + еще мог бы подать идею по программированию tcp/udp
об этом вообще на русском ни чего не нашел,я не имею книгу Штайна,а немнога подробнее в сети,типа формирования различных паккетов и прочее (http://perl.dp.ua/cgi-bin/forum.pl?do=showtext&id=1141835817&page=1&tema=1)

и кстати было бы вообще классно если бы было чего всегда почитать по ругулярным выражением с практикой вместе.
ps: ну это чисто мое мнение
ps: если нада идеи всегла помогу=)

Автор: korob2001 10.3.2006, 10:03
Помоему, мы не с того начали. Модули, ICQ, всё это хорошо, но сначала нужно написать движок для сайта, на котором потом и будем выкладывать модули, калассы, переводы документации и прочее. Движок должен быть написан на Perl smile, дизайн должен быть таким же как у форума, ну или похожим.
Затем повесим его на поддомен http://perl.vingrad.ru

Вобщем сначала нужно создать место, куда потом будем выкладывать всё остальное.

Автор: nitr 10.3.2006, 10:51
и... думаю сложность во времени. А начали верно! smile Я из тех кто не сайт будет, а буду модули (надеюсь)

Автор: sharq 10.3.2006, 11:05
korob2001,
Цитата(korob2001 @ 10.3.2006, 11:03 Найти цитируемый пост)
Помоему, мы не с того начали. Модули, ICQ, всё это хорошо, но сначала нужно написать движок для сайта

ну почему, может некоторым по силам и по времени начать переводы и написание различных скриптов.
Самое главное распараллелить все, чтобы постепенно двигались вперед!

Давайте тогда определимся, кто будет писать движок, кто скрипты, которые будут полезны движку и сайту, кто документацию, а кто еще что-нибудь. Ответственность думаю за все - возьмем мы с korob2001.

По поводу движка - я думаю, стоит быстро поднять сайт, чтобы работал и потом начать разрабатывать качественный движок для него!

smile

Автор: nitr 10.3.2006, 12:15
Верно... а что такого сложного в сайте? Или я чего-то не понимаю... покажите исходники какого-нить сайта.. движка

Автор: DEER 10.3.2006, 13:50
в сайте нет ничего сложного, просто сначала нужно заложить фундамент для последующей работы команды и нужны люди кто бы это сделал.

Готов учавствовать с разработке сайта. только дизайнер из меня никакой, могу работать по готовому. smile

Автор: korob2001 10.3.2006, 13:56
Цитата

Верно... а что такого сложного в сайте? Или я чего-то не понимаю... покажите исходники какого-нить сайта.. движка

Одному писать движок, занятие утомительное. Да и проект совместный, потому учавствовать должны несколько человек, у которых есть желаение и возможность.
Цитата

Давайте тогда определимся, кто будет писать движок, кто скрипты, которые будут полезны движку и сайту, кто документацию, а кто еще что-нибудь. Ответственность думаю за все - возьмем мы с korob2001.

Людей у нас в разделе не очень много, при этом половина из них не имеет времени. Давайте для начала напишем сайт. Определимся:
Что он должен делать?
Какие модули будем юзать?
Кто будет заниматься графикой, дизайном?
Кто написанием JS скриптов?
И прочее.

Автор: BlackLFL 10.3.2006, 14:02
Цитата(sharq @ 9.3.2006, 17:30 Найти цитируемый пост)
о! это я не знал, но догадывался. Т.е. можно с помощью OLE открыть уже созданный doc файл, сохранить его как xml?
Распарсить Word XML - это всего лишь дело техники. 
Тем более WordML - документирован.

вот именно, использование OLE и MSDN лучший способ

Цитата(sharq @ 9.3.2006, 17:30 Найти цитируемый пост)
такой же закрытый как и xls! Это всего лишь бинарный формат.

XLS открытый формат, по нему есть полная докуменатция как и по RTF.

Цитата(sharq @ 9.3.2006, 17:30 Найти цитируемый пост)
Об этом еще рано говорить, нужно хотя бы что-нибудь поднять, а потом уже замахиваться на perl.ru. А место где потестировать - найдем. 

задуматься уже надо ...


По поводу движка, готов написать CMS, благо уже есть рабочая версия.
Добавлено @ 14:04
Цитата

Какие модули будем юзать?

Предлагаю использовать мой модул Black:CGI

Цитата

Кто написанием JS скриптов?

Готов взять на себя.

Автор: korob2001 10.3.2006, 15:01
Замечательно, с JS вроде определились. Кое-что могу и я написать.

Теперь давайте определимся с дизайном. Я тут как-то рисовал, хотел написать сайт посвящённый программированию на Perl под виндой. Но он помоему темноват ;(((((, нужно что-то посветлее, наверное.
Но там пока только верхушку нарисовал. Только не смейтесь, я не особо владею PhotoShop'ом и Flash'ем
http://antonium.org/design/guest.html

Автор: sharq 10.3.2006, 15:32
Я предлагаю все-таки для движка использовать модули со CPAN и делать только надстройки над ними, а не переписывать их!
Так, например, можно взять CGI и использовать только param или еще лучше - Vars(), сделать обработку и все!
Для DBI - аналогично, я уже такую надстройку сделал, отлично работает.
и т.д.

C JavaScript тоже помогу. smile

smile

Автор: DEER 10.3.2006, 15:32
ИМХО тётьку из матрицы надо убрать...


Автор: korob2001 10.3.2006, 15:35
Да это не конечный дизайн. smile
Тётька из Терминатора-3, а не из матрицы. Она очень даже секси. ;)))))

Автор: DEER 10.3.2006, 15:35
Давайте обявим конкурс, например, каждый на выходных возбмёт в руки "кисточку" и попробует нарисовать, а потом выберем лучший и ещё доработаем!

Автор: sharq 10.3.2006, 15:37
Может попросим дизайнеров с форума, есть же кто-то кто рисовал дизайн всего форума!

Автор: korob2001 10.3.2006, 15:42
Идея не плохая, но я если что нарисую в понедельник, у меня сын по выходным.

Автор: BlackLFL 10.3.2006, 15:56
2sharq, DBI понятно мы переписывать не будем, это не надо.
А вот CGI.pm, я не поддерживаю ...

еще раз предлагаю воспользоваться моим модулем ...

Автор: nitr 10.3.2006, 16:00
BlackLFL, уже всё напишит, можно сказать сайт готов ;)
Добавлено @ 16:07
Ага может без модулей? =) urldecode типа =))))))
Добавлено @ 16:08
что-то затянулось всё, господа smile

Автор: Ramirez 10.3.2006, 19:12
Это начинает напоминать басню "лебедь рак и щука"...
а почему на первое время не взять готовый движок? Есть много качественных решений, оттачиваемых не первый год...

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

в идеале, нужен сервер с CVS и каждый проект должен быть в ней. соотв каждый разработчик может вноисть изменения в код того проекта, к которому он относится. тогда все будет централизовано, логично и управляемо.

...и в итоге получится "sourceforgе.ru" smile)))

Автор: nitr 10.3.2006, 19:56
Цитата

...и в итоге получится "sourceforgе.ru" smile)))

То вроде англоязычное smile А тут все свои ;)

Автор: korob2001 10.3.2006, 20:01
Да в том-то и прелесть совместного проекта, что бы самим пробовать изменить этот мир. Написание движка это очень даже не плохая работа, а главное интересно да и многим пойдёт на пользу, мне в том числе.
Просто нужно как-то поорганизованей, у нас правда бардак получается.

Автор: BlackLFL 11.3.2006, 20:20
Хочю вынести на обсуждение, на мой взгляд, очень важный вопрос!

Какой програмой мы будем пользоваться для построения схем?
Я предлагаю воспользоваться очень хорошей програмой http://www.mindjet.com/us/

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

Автор: DEER 13.3.2006, 09:39
На счет дизайна:
что то просидел всю субботу, так и ничего путного не родил, а то что родил не выложу, потому как стыдно.

На счет CVS:
так вот нам товарищи и ещё один проект!!! если свою CVS'ку написать и потом работать с ней, то тоже вредно не станет smile

Автор: BlackLFL 16.3.2006, 11:55
куда пропала активность?

Автор: korob2001 16.3.2006, 11:57
Похоже, куда и обычно. smile

Автор: BlackLFL 16.3.2006, 12:15
korob2001, как ты смотришь на мое предложение о MindManager ?

Автор: sharq 20.3.2006, 16:53
Что? Все? Заглохло?

smile

Автор: korob2001 20.3.2006, 16:58
Цитата(sharq @ 20.3.2006, 13:53 Найти цитируемый пост)
Что? Все? Заглохло?

smile Тебя это удивляет? На дизайне всё заглохло, потому предлагаю попробовать самим нарисовать дизайн.

Автор: BlackLFL 20.3.2006, 17:06
Цитата(sharq @ 20.3.2006, 17:53 Найти цитируемый пост)
Что? Все? Заглохло?

почему заглохло, я же српшиваю всех, какой программой будем ползоваться, для построения схем?

Автор: nitr 20.3.2006, 17:26
Ух... из этого всего понятно, что я сайты не умею "делать" smile) А что нельзя пока без дизайнА smile ?

Автор: sharq 21.3.2006, 11:58
korob2001,
Цитата(korob2001 @ 20.3.2006, 17:58 Найти цитируемый пост)
Тебя это удивляет? На дизайне всё заглохло, потому предлагаю попробовать самим нарисовать дизайн.

да пофиг на дизайн пока, обячный, сделаем через шаблоны, а потом нарисуем диз!

Давайте начинать - составляем ТЗ системы!

smile

Автор: nitr 21.3.2006, 13:09
Кто за главного smile ? Составляйте ТЗ smile
Уже описывалось как надо организоваться...

Автор: korob2001 21.3.2006, 20:35
Цитата

korob2001, как ты смотришь на мое предложение о MindManager ?

Я ничего тебе по этому поводу сказать не могу, я всегда пользуюсь, по старинке, листиком и ручкой.
Цитата

да пофиг на дизайн пока, обячный, сделаем через шаблоны, а потом нарисуем диз!

Дизайн я уже почти нарисовал. Думаю сегодня или завтра уже выложу.

ЗЫ: Предлагаю так же использовать модуль, который написал BlackLFL.
В конце концов парень написал его сам, работает над ним, к тому же он наш постоянный участник. Мы должны поддерживать, а не уничтожать творчество на корню. Вы поймите, в том-то и весь интерес, что бы юзать наши собственные модули, классы. Это не значит, что будем игнорировать и те, которые уже были написаны кем-то и их будем юзать тоже. Никаких ограничений, на модули и классы.

Хост будем оплачивать, только тогда, когда будут установлены все модули которые мы будем использовать, а то меня не сильно возбуждает такое программирование: Я не буду использовать этот модуль, потому что он не установлен на хосте, а служба поддержки не хочет его устанавливать. С такими хостерами будем расставаться. На то она и служба поддержки, что бы устанавливать модули. Если лень, то пусть значит дают права root, будем тогда сами это делать.

Автор: BlackLFL 22.3.2006, 11:09
Цитата(korob2001 @ 21.3.2006, 21:35 Найти цитируемый пост)
Я ничего тебе по этому поводу сказать не могу, я всегда пользуюсь, по старинке, листиком и ручкой.

А как же мы будем друг другу показывать схемы smile?


Цитата(korob2001 @ 21.3.2006, 21:35 Найти цитируемый пост)
ЗЫ: Предлагаю так же использовать модуль, который написал BlackLFL.

Спасибо за поддержку!! Кстати, некоторые посетители форума уже используют мой модуль, нареканий небыло!

korob2001, к чему мы пришли, что первым будем писать? я предлагаю форум, либо CMS

Автор: korob2001 22.3.2006, 16:43
Ну вот, вроде набросал небольшой дизайн. Конечно он ещё не до конца доделан, есть ещё некоторые, мелкие детали, которые нужно будет доделать.
Тестировал в IE6.0, NN7.1, FF1.0.7 и в AOL браузерах, везде отображается одинаково. Не плохо было бы посмотреть на него из Opera, но у меня уже нет места, что бы ставить ещё один браузер. ;)))

http://antonium.org/dsn/title.html

Автор: DEER 22.3.2006, 17:06
Opera 7.50 и IE 6 выглядят одинаково smile

Мне нравится..
Но по моему сильно навязчиво выглядит форма для входа в систему, может её поменьше сделать, или спрятать в невидимом слое, а при клике на ссылку "вход", чтоб она появлялась??

Автор: korob2001 22.3.2006, 17:15
Да, правый верхний угол пока пустоват, я обязательно дополню его. Просто он ещё расчитан на разрешение 600x800, там форма нормально смотрится, а когда разрешение больше, то дизайн растягивается так, что бы быть на всё окно. Думаю, если не усну то сегодня подправлю.

Кстати, изображения ещё не до конца оптимизированы, так что он сейчас может быть немного тяжеловат, но это мы поправим. Хотя у меня сейчас она грузится около секунды, после очистки кеша.

Автор: korob2001 22.3.2006, 18:42
Мне кстати с фиксированным размером больше нравится, вот ссылка на такой вариант:
http://antonium.org/dsn/title2.html

Как-то аккуратней получается.

Автор: nitr 22.3.2006, 21:06
Да, но первый вариант (имхо) лучше. Лично мне, нравится очень smile

Автор: nitr 22.3.2006, 21:28
Думаю стоит оставить, очень впечатляет smile Я серьёзно. Люди будут заходить не ради дизайна, ведь так? smile Навигация и читабельность - вот это важно. В версии korob2001, что-то притягательное есть ;), ничего не отвлекает и приятно смотреть.

Автор: sharq 23.3.2006, 11:10
Цитата(nitr @ 22.3.2006, 22:28 Найти цитируемый пост)
ничего не отвлекает и приятно смотреть.

мне единственное не нравится лого, точнее его текст, зачеркнутая а напрягает, просто perl должно быть.
Плюс шар заменить на верблюда (http://www.perl.org/simages/lcamel.gif)
И еще favicon.ico можно взять как http://use.perl.org/.

А так прикольно. smile

Молодец, Денис!

Второй вариант мне больше нравится и внизу картинки - ссылки на разделы сделать в стиле ActiveState, а не фотками настоящих животных.

Кстати, где фотку Ларри нарыл? smile

smile

Автор: korob2001 23.3.2006, 13:22
Цитата(sharq @ 23.3.2006, 08:10 Найти цитируемый пост)
мне единственное не нравится лого, точнее его текст, зачеркнутая а напрягает, просто perl должно быть.
Плюс шар заменить на верблюда (стандартного)

Perl изначально назывался Pearl (жемчуг), затем его переименовали, так как был уже тогда язык с названием Pearl, он кстати уже умер.
Вот тот шар, который ты хочешь заменить на вербрюда, это и есть жемчуг, который к Perl имел отношение задолго до верблюда. Верблюд стал символом, когда в свет вышла книга "Programming Perl". Ты на ActiveState видел хоть одного верблюда?
Если убрать зачёркнутое, то как-то скучно получается. Это просто прикол такой, лень было исправлять, вот я и зачеркнул. smile
Цитата(sharq @ 23.3.2006, 08:10 Найти цитируемый пост)
Второй вариант мне больше нравится и внизу картинки - ссылки на разделы сделать в стиле ActiveState, а не фотками настоящих животных.

Мне тоже второй больше нравится. Внизу я же сделал, не картинки, картинка появляется если наводишь мышью.
Цитата(sharq @ 23.3.2006, 08:10 Найти цитируемый пост)
Кстати, где фотку Ларри нарыл?

Через goole.com нашёл. Вообще честно говоря, мало чётких фоток с ним. smile

Автор: DEER 23.3.2006, 13:59
ну что народ...
дизайн то нормальный, если потом кто что придумает всегда поправить можно..
надо начинать функционал накручивать на него!!!
готов к работе, только скажите что делать smile

Автор: korob2001 23.3.2006, 14:26
Графику немного оптимизировал и кое что подправил.

До изменения оба варианта:
http://antonium.org/dsn/title.html
http://antonium.org/dsn/title2.html

После:
http://antonium.org/dsn/title3.html
http://antonium.org/dsn/title4.html

Завтра еду в Брюссель по делам, возьму с собой комп, нарисую ещё дизай для маленьких, открывающихся, окон. Может ещё чего-нить в голову придёт.

Кстати, где будем хранить дизайн? Разбивать на отдельные файлы или прямо внутри кода?

Автор: nitr 23.3.2006, 14:33
=) ну не знаю, на первый вариант (на всю страницу) на верхний угол можно подменю чтоль... ну раз большинство второй вариант... Мне почему не нравится, разрешение от 1280х1024... узко smile Вон кста, тока щас заметил smile форум на всю страницу ;)

Автор: sharq 23.3.2006, 15:16
korob2001,
Цитата(korob2001 @ 23.3.2006, 14:22 Найти цитируемый пост)
Perl изначально назывался Pearl (жемчуг), затем его переименовали, так как был уже тогда язык с названием Pearl, он кстати уже умер.

Это я знаю, но зачеркнутае буква отвлекает, imho.


Цитата(korob2001 @ 23.3.2006, 15:26 Найти цитируемый пост)
Кстати, где будем хранить дизайн? Разбивать на отдельные файлы или прямо внутри кода?

я считаю должны быть в отдельных файлах, в скриптах только perl-код!

А вот http://www.flickr.com/photos/pdcawley/54444633/in/set-1211132/ Ларри smile

smile

Автор: korob2001 23.3.2006, 16:12
Цитата(sharq @ 23.3.2006, 12:16 Найти цитируемый пост)

я считаю должны быть в отдельных файлах, в скриптах только perl-код!

А если нужно где-то динамически выводить какую-нить инфу, не будем же дробить его на молекулы? Или будем на шаблонах писать например: HTML::Template?
Просто уже можно начать это делать. А что бы начать, нужно определиться. ;))))

Автор: korob2001 25.3.2006, 13:25
Написал бегущую строку, вот с ней вариант:
http://antonium.org/dsn/title5.html

Автор: Kiber_rat 31.3.2006, 05:03
Пару комментов к тому дизайну который я увидел на данный момент... Неправильно отображается русский язык (в Опере по крайней мере), вероятно что-то с тегом <META> не то... Второе, я бы малость поменьше сделал область с лого сайта, поскольку отъедается слишком уж большая часть полезной площади.
С удовольствием приму участие в работе, не обещаю что смогу много времени уделить, но буду стараться в свободное время, идея создать свой CSV мне нравится. Могу кой чего предложить по поводу шаблонов. В своей работе мы используем свой модуль для работы с шаблонами. Идея, как обычно, в простом использовании встроенного в HTML код perl кода. ДЛя этого мы просто напросто используем "кракозябры", т.е. последовательность символов которая с наименьшей вероятностью может встретиться в обычном контенте. Например, код perl включается внутри таких ограничителей <!--& print "Here perl code smile\n" --> Итого, выполняем в eval-е полученный шаблон, предварительно убрав "кракозябры" и добавив print() вокруг обычного HTML. Это сильно упрощенная схема, но идея надеюсь понятна. Для апача все просто, если наш основной скрипт, выполняющий обработку шаблонов, называется. к примеру, run.cgi, то просто добавляем в корень сайта, в файл .htaccess следующие строчки:
Код
Options +ExecCGI
Action icgi /run.cgi
AddHandler icgi .html
и все html-ки сперва проходят через наш скрипт а потом уже, с подставленными результатами выполенния кода, отдаются апачу, соотвественно нет кода, отдается просто HTML а если есть, выполняем, получаем на выходе все тот же HTML, Решение проверенно временем и за лет 5 себя оправдало.
Добавлено @ 05:11
В догонку... Вот наваял тут малость для примера... Добавил @~$var~@ такую кракозябру для просто го вывода переменной которая в ней и малость расширил пример...
run.cgi
Код
#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
my %Q = CGI::Vars();

show($ENV{PATH_TRANSLATED});

sub show {
    my $path;
    $_[0]=~m!^/! ? ($path=$_[0]) : ($path =~ s{[^/]*$}{$_[0]});
    die "Can't open '$path': $!" unless defined(local $_ = Cat($path));
    my $e = '';
    while ( 1 ) {
            /\G<!--&(.*?)\s*;?\s*-->/gcs    && do {
            $e.="$1;";
        }
        ||  /\G@~(.*?)~@/gcs                 && do {
            $e .= "print $1;";
        }       
        ||  /\G(.*?)(?=<!--&|@~|\n|$)(\n?)/gcsm && do {
            $e .= "print \"\Q$1\E" . ($2 ? '\n' : '') . "\";$2";
        }
                                
        || last;
    }
    print header();
    eval $e;
    exit();
}

sub Cat {
    open FH, $_[0] or die "Can't open '$_[0]', $!";
    return join '',(<FH>);
}

try1.html
Код
<!--& 
my $msg = "Wow! we have variable!" if $Q{var};
-->
<HTML>
<HEAD>
<TITLE>Test page</TITLE>
</HEAD>
<BODY>
Simple HTML here...<br>
<b><!--& print "Hi from perl code! :)<br>\n" for (1..3);  --></b>
<!--& if ($msg) { -->
@~$msg~@:&nbsp;<font color="red">var = @~$Q{var}~@</font>
<!--& } --> 
<hr width="75%">
<table width="75%" align="center" border="1">
<tr>    
<th>Variable</th>
<th>Value</th> 
</tr>   
<!--& for (sort keys %ENV) { 
        $ENV{$_} = '&nbsp;' if $ENV{$_} eq '';
-->     
<tr><td align="right">@~$_~@</td><td align="right">@~$ENV{$_}~@</td></tr>
<!--& } -->
</table>
</BODY>
</HTML>

.htaccess
Код
Options +ExecCGI +FollowSymLinks +Includes
Action templ /run.cgi
AddHandler templ .htm

Автор: korob2001 31.3.2006, 08:32
Цитата

Неправильно отображается русский язык (в Опере по крайней мере), вероятно что-то с тегом <META> не то...

Подправил, вставил мета тэг:

http://antonium.org/dsn/title5.html

Цитата

Второе, я бы малость поменьше сделал область с лого сайта, поскольку отъедается слишком уж большая часть полезной площади.

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

ЗЫ: Пробовал реальзовать бегущую строку через ActiveXObject, в IE и XMLHttpRequest, в остальных браузерах, но что-то глючно она работает. ;((((( В ссылке выше, строки хранятся в массиве. В следующей ссылке они берутся из текстового файла, на сервере. Вот ссылка:

http://antonium.org/dsn/title6.html

В последнем примере глюк в том, что строка повторяется и я не могу ничего с этим поделать. ;(((( Если кто знаком с js, то посмотрите, вот скрипт:
Код

var request = null;
var newString = "";
var element = null;
var obj = null;

function loadXMLDoc(url) {
    request = null;
    if (window.XMLHttpRequest) {
        request = new XMLHttpRequest();
        request.onreadystatechange = processReqChange;
        request.open("GET", url, true);
        request.send(null);
    } else if (window.ActiveXObject) {
        request = new ActiveXObject("Microsoft.XMLHTTP");
        if (request) {
            request.onreadystatechange = processReqChange;
            request.open("GET", url, true);
            request.send();
        }
    }
}

function processReqChange() {    
    if (request.readyState == 4) {
    if (request.status == 200) {
            newString = request.responseText;
        } else {
            newString = "Добро пожаловать на сайт Perl Anatomy: " + request.statusText + "[+]0";
        }
    }  
}

function getNextString(url, oldString) { loadXMLDoc(url + "?old=" + oldString) };

function moveString(str, speed, id, step, size) {
    this.str = str;
    this.speed = speed || 100;
    this.element = (typeof(id) == "string") ? document.getElementById(id) : id;
    this.step = step || 1;
    this.pos = 0;
    this.len = str.length;
}

function startMove() {
    obj.element.innerHTML = "";
    var nextChar = obj.str.charAt(obj.pos);
    if (nextChar == "<") {
        var buf = nextChar;
        while (true) {
            if ((obj.step + obj.pos) > obj.len) break;
            nextChar = obj.str.charAt(++obj.pos);
            buf += nextChar;
            if ( nextChar == ">" ) {
                obj.element.innerHTML += buf;
                obj.pos++;
                break;
            }
        }
    }
    obj.element.innerHTML = obj.str.substr(0, obj.pos + 1);
    if ((obj.pos + obj.step) <= obj.len) {
        obj.pos++;
    } else {
        return;
    }
    setTimeout("startMove()", obj.speed);
}

function runString(x, speed, id, step, delay) {
    getNextString('/cgi-bin/runtext/getnext.pl', x) || "";
    var arr = new Array(2);
    arr = newString.split('[+]',2);
    obj = new moveString( arr[0], speed, id, step, arr[0].length );
    startMove();
    delete obj;
    ++arr[1];
    setTimeout("runString(" + arr[1] + "," + speed + ",'" + [id] + "'," + step + "," + delay + ")", delay);
}

Вот код файла getnext.pl :
Код

#!/usr/bin/perl -T
use lib qw(.);
use Black::CGI;

my $file = "messages.txt";

my $num = clear_info(Black::CGI->new(get_max_length => 12)->get->{'old'}, qr/^\d+$/);
$num = 0 if is_tnt($num);


my $message = "Добро пожаловать на сайт <b>Perl Anatomy</b>";

if (-e $file) {
     open(MESS, "< $file") or die "Can't open file '$file': $!\n";
          chomp( my @messages = <MESS> );
     close(MESS);
     $num = 0 if $num > $#messages;
     $message = $messages[$num];
     #$num++;
}

print "Content-type: text/plain; charset=windows-1251\n\n";
print "${message}[+]$num";

sub is_tnt {
    my $var = shift;
    return !eval { $var++, kill 0; 1; };
}

sub clear_info {
    my( $var, $pat ) = @_;
    if ( $var =~ /($pat)/ ) {
         $var = $1;
         return $var;
    } else {
         return $var;
    }
}

Автор: DEER 31.3.2006, 13:39
korob2001, в функции runString по моему косяк
Код
function runString(x, speed, id, step, delay) {    
    getNextString('/cgi-bin/runtext/getnext.pl', x) || "";    
    var arr = new Array(2);    
    arr = newString.split('[+]',2);    
    obj = new moveString( arr[0], speed, id, step, arr[0].length );    
    startMove();    
    delete obj;    
    ++arr[1];    
    setTimeout("runString(" + arr[1] + "," + speed + ",'" + [id] + "'," + step + "," + delay + ")", delay);    
}

что то не врубил как у тебя происходит инкремент номера записи. те ты каждый раз создаешь в массиве arr одинаковый элемент и вызываешь runString с одним и тем же значением arr[1]

Автор: Kiber_rat 31.3.2006, 14:58
korob2001, так что насчет моего предложения по "встроенному" perl? smile

Автор: korob2001 31.3.2006, 19:36
Цитата(DEER @ 31.3.2006, 10:39 Найти цитируемый пост)
что то не врубил как у тебя происходит инкремент номера записи. те ты каждый раз создаешь в массиве arr одинаковый элемент и вызываешь runString с одним и тем же значением arr[1]

Допустим мы запускаем данный код по событию onLoad таким образом:
Код

<body onload="runString(0, 10, 'str', 1, 5000)">
<div id="str">&nbsp;</div>

Где:
0 - стартовое сообщение, т.е. первая строка из файла messages.txt
10 - значение в миллисекундах ( скорость вывода строки ).
'str' - id элемента документа, где должна выводиться страница (в данном случае это id div'a)
1 - сколько символов должно выводиться за 1 шаг, т.е. за 10 миллисекунд.
5000 - период задержки перед каждым обращением к серверу (в миллисекундах)

Т.е. мы стартуем с нулевой строки, т.е. с первого сообщения. В этой строке скрипт посылает запрос серверу:
Код

getNextString('/cgi-bin/runtext/getnext.pl', x) || "";

Сервер возвращает стрку вида: "Сообщение[+]номер"
Она разбивается по символу разделителю: [+] и сохраняется в массив в следующих строках:
Код

var arr = new Array(2);
arr = newString.split('[+]',2);

newString - это глобальная переменная.

Затем создаём объект:
Код

obj = new moveString( arr[0], speed, id, step, arr[0].length );

obj - так же глобальная переменная

Запускаем строку, следующая функция использует данные которые хранятся в объекте obj
Код

startMove();


Уничтожаем объект:
Код

delete obj;

Вот здесь инкрементируем счётчик, т.е. увеличиваем номер полученной строки на единицу:
Код

++arr[1];

Создаём timeout, передаём уже увеличенный номер сообщения, arr[1].
Код

setTimeout("runString(" + arr[1] + "," + speed + ",'" + [id] + "'," + step + "," + delay + ")", delay);

Вобщем за инкремент переменной с номером сообщения, отвечает эта строка: ++arr[1]. Perl лишь получает номер следующей записи и проверяет, что бы он не был больше, чем всего записей в файле. Если он больше, то обнуляет его.
Цитата(Kiber_rat @ 31.3.2006, 11:58 Найти цитируемый пост)
korob2001, так что насчет моего предложения по "встроенному" perl?

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

package Design;

# Конструктор и прочее

sub printTop {
    my $self = shift;
    # здесь получаем остальные параметры
    open(TOP, "< top.txt") or die $!;
    print while <TOP>; # здесь можно парсить каждую строку перед выводом
    close(TOP);
}

sub printBottom {
    my self = shift;
    # здесь получаем остальные параметры
    open(BOT, "< bot.txt") or die $!;
    print while <BOT>; # здесь можно парсить каждую строку перед выводом
    close(BOT);
}

После чего юзал так:
Код

use Design;
my $ds = Design->new( #параметры );
$ds->printTop( #параметры );

# Здесь пишу код индивидуальный для каждой страницы

$ds->printBottom();

Можно и внутри класса код хранить, его всё равно видеть никто не будет, только этот классс будет отвечать за дизайн. В него же можно добавить методы, которые будут создавать различные обёртки, для сообщений, ссылок, заголовков и прочего. Вобщем нужно пробовать. smile
Попробуй напиши для этой страницы:
http://antonium.org/dsn/title5.html
потом выложим его. Я попробую своим способом, потом глянем какой вариант удобнее, его и будем использовать. После чего уже можно будет расределить задания, по участникам. Ещё, так же было бы не плохо, что бы в каждой программе был ключь -T.
Код

# Подпрограмма проверяет загрязнена ли переменная, которая была
# ей получена. Если да вернёт - 1, если нет - 0
sub is_tnt {
    my $var = shift;
    return !eval { $var++, kill 0; 1; };
}

# Подпрограмма получает 2 параметра переменную и шаблон, сравнивает переменную
# с шаблоном и если шаблон совпал, то вернёт очищенную переменную, если нет то
# грязную 
sub clear_info {
    my( $var, $pat ) = @_;
    if ( $var =~ /($pat)/ ) {
         $var = $1;
         return $var;
    } else {
         return $var;
    }
}

Допустим я получил параметр, в котором должна быть строка из символов латинского алфавита и ничего кроме них:
Код

my $str = param('str');
# Пытаемся очистить
$str = clear_info($str, qr/^[a-zA-Z]+$/);

# Если переменная ещё загрязнена, выдаём сообщение
if ( is_tnt( $str ) ) {
     print "Получен не верный параметр\n";
} else {
    # Если оказались тута, переменная была успешно очищена
}

Подробнее об очистке можно почитать в FAQ, это касается новичков. Скорее всего, добавим эти методы в какой-нить класс или модуль, что бы не повторять их в каждой программе.

Автор: nitr 31.3.2006, 22:05
Лично я использую этот метод
Цитата

Я раньше всегда писал класс, где кадый метод это какая-то часть страницы...
Код

package Design;
# Конструктор и прочее
sub printTop {
    my $self = shift;
    # здесь получаем остальные параметры
    open(TOP, "< top.txt") or die $!;
    print while <TOP>; # здесь можно парсить каждую строку перед выводом
    close(TOP);
}
sub printBottom {
    my self = shift;
    # здесь получаем остальные параметры
    open(BOT, "< bot.txt") or die $!;
    print while <BOT>; # здесь можно парсить каждую строку перед выводом
    close(BOT);
}
....


Очень удобно... smile

заголовок <tablr><tr><td> здесь весь контент меняю, хоть из файлов или ещё как угодно </td></tr></table> концовка

Так что я за такой метод, по-моему очень удобно.

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

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

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

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

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

Автор: korob2001 5.4.2006, 09:40
Привет!
Вот несколько вариантов дизайна с использованием класса 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 хранится отдельно от кода.

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

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

P.S.: Я только начинаю програмировать на перле.

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

Автор: Neuronix 10.4.2006, 14:58
Могу предложить свою помощь в качестве perl-программера...
И сразу, чтобы не изобретать велосипед - http://nx-engine.org.ru/Libs/API.pm
По поводу парсинга html - я уже наступал на грабли со всякими bottom, top и т.д. Все это к хорошему не ведет, да и гибкости маловато.
Советую присмотреться к методам Template() и TemplateParsing() по вышеуказанной ссылке.

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

Автор: Neuronix 10.4.2006, 16:41
Ну, короче, что на первом месте по важности стоит? Отделение дизайна от кода. Не проблема.
Вы сейчас придумываете шкуру к пустому месту, потому что даже скелета нет.
Мне кажется, сначала нужно разработать архитектуру, а потом уже ляпать шкуру. Мое ИМХО.
Добавлено @ 16:47
Да, и ещё... Зачем себя загонять в тупик блочным дизайном? Я сначала тоже делал так, но потом решил, что лучше единый шаблон страницы (template)

Автор: Ramirez 10.4.2006, 20:30
Если уж речь зашла о готовых движках то стоит посмотреть на http://www.plainblack.com/webgui по крайней мере, там есть что подчерпнуть.

Автор: shootnix 10.4.2006, 21:46
hello2all господа... я, пожалуй, не совсем вовремя вклиниваюсь со своим предложением, так что считайте, что это на будущее. Я что хочу сказать... а! Я вот в свободное время бывает, что и перевожу там чёнить, в общем, если что - имейте ввиду, если надо перефигачить с англицкого на ... какой там у нас .. русский. Вот...

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

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

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

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

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

smile

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

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

Автор: Neuronix 11.4.2006, 09:09
Так что сначала-то? Сайт или перводы?

Автор: nitr 11.4.2006, 10:35
Всё сразу вообще-то...

Автор: korob2001 11.4.2006, 10:49
1. Нарисовал ещё один скин.
2. Добавил возможность измерять время генерации страницы и выводить его внизу страницы.
3. Нарисовал форму поисковика + скрипт, который отслеживает выбор "Где искать".
4. Внёс некоторые изменения в класс Design.

Теперь опишу каждое новшество:

1. Для того, что бы подключить новый скин, нужно передать конструктору класса Design параметр DESIGN => "имя_скина". Например:
Код

my $design = Design->new( DESIGN => "lite" );

Вот и всё. ;)))))
На данный момент первый дизайн, по умолчанию, его имя "standard", имя второго скина "lite". Какой бы скин не использовался, для него применимы все теже методы, что и для другого.
Так же стоит обратить внимание, что раньше параметр DESIGN использовался в других целях. Сейчас за это отвечает параметр VERSION.

2. Для измерения времени генерации страницы я воспользовался модулем Time::HiRes. Сначала я хотел подключить его внутри класса Design, но потом пришёл к дугому решению. Подключать Time::HiRes нужно в том коде, где это нужно, а значит не имеет смыла подключать его внутри класса Design.
Допустим мы написали какую либо программу, пусть это будет "Гостевая книга". обернули её в скин и хотели бы узнать скорость её работы и выводить результат внизу страницы. Для этого нужно выполнить 2 действия.

a.) Подключить к программе модуль Time::HiRes.
б.) Передать ссылку на функию time модуля Time::HiRes в конструктор класса Design, через параметр: TIMER.

Т.е. теперь наш код будет таким:
Код

use lib qw( /путь/к/библиотеке );
use Time::HiRes qw(time);
use Design;
my $design = Design->new( DESIGN => "lite",
              TIMER  => \&time );

$design->printTop("Гостевая книга");

# Здесь код гостевой книги

$design->printBot();

Как только создаётся объект класса Designer, сразуже засекается стартовое время. Вычесления происходят в самом конце метода $design->printBot(). После того, как программа вычислила результат работы, она тут же помещает его в HTML код и выводит последние 3 тэга. </center></body></html>. Результат будет примерно таким:
Код

Страница сгенерирована за 0.195306062698364 сек.

Для того, что бы контролировать число символов после запятой, нужно передавать параметр ACCURACY в конструктор класса Design, он дествителен только в том случае, если был передан параметр TIMER.
Код

use lib qw(путь/к/библиотеке);
use Time::HiRes qw(time);
use Design;

my $design = Design->new( DESIGN   => "lite",
              TIMER    => \&time,
              ACCURACY => 2 );

$design->printTop("Гостевая книга");

# Здесь код гостевой книги

$design->printBot();

Теперь результат будет таким:
Код

Страница сгенерирована за 0.20 сек.

Стоит обрать внимание, что часть числа после плавающей запятой, не обрезается, она округляется по тем же правилам, что приняты в математике.

3. Для того, что бы получить форму поиска, нужно вызвать метод $designer->printSearchForm(), в том месте страницы, где предполагается её вывести. Когда пользователь выберает вкладку, где искать, изменяется значение скрытого поля, которое потом отправляется вместе с формой.

Вот несколько примеров работы всего этого:

Старница для статьи:
Standard: http://antonium.org/cgi-bin/anatomy/first2.pl
Lite: http://antonium.org/cgi-bin/anatomy/first2_new.pl

Страница из двух блоков c формой поиска:
Standard: http://antonium.org/cgi-bin/anatomy/second.pl
Lite: http://antonium.org/cgi-bin/anatomy/second_new.pl

Страница с двумя блоками, меню справа:
Standard: http://antonium.org/cgi-bin/anatomy/second2.pl
Lite: http://antonium.org/cgi-bin/anatomy/second2_new.pl

Страница с тремя блоками:
Standard: http://antonium.org/cgi-bin/anatomy/third.pl
Lite: http://antonium.org/cgi-bin/anatomy/third_new.pl

У каждой пары, код абсолютно одинаков, единственное отличие, в параметре DESIGN. Вообще-то нужно ещё немного доработать всё это, но в принципе уже можно начать.
Сейчас нужно решить: Кто и что, будет делать? smile

Автор: shootnix 11.4.2006, 10:50
Цитата(Neuronix @ 11.4.2006, 09:09)
Так что сначала-то? Сайт или перводы?

Дык, я ж сразу сказал, что моя идея скорее на будущее smile

Автор: Neuronix 11.4.2006, 14:17
korob2001, я могу кодить, ну и немного html+дизайн =)

Автор: korob2001 14.4.2006, 02:18
Цитата

korob2001, я могу кодить, ну и немного html+дизайн =)

Ну дизайн и HTML уже наверное не понадобятся. Хотя, класс отвечающий за дизайн, постороен так, что в него можно добавлять столько скинов, сколько будет нужно и делается это довольно просто. Это можно будет делать с WEB интерфейса, чуть позже я объяснь принцип, а может кто-то и сам догадается. ;))))) А вот то, что ты кодишь, это очень даже кстати сейчас.

Для того, что бы, наконец-то, стартануть, предлагаю сделать следующее:

1. Давайте определимся с названием. То которое сейчас, меня лично вполне устраивает, к томуже доменные имена:
Цитата

perlanatomy.ru
perlanatomy.com
perlanatomy.org
perlanatomy.net
perlanatomy.info
perlanatomy.biz
perl-anatomy.ru
perl-anatomy.com
perl-anatomy.org
perl-anatomy.net
perl-anatomy.info
perl-anatomy.biz

Свободны. smile
Давайте сейчас уже определимся, какой домен будем регестрировать. Лично я считаю, что можно пока остановиться на .ru, а точнее perlanatomy.ru или же perl-anatomy.ru (эх жалко в домене нельзя почеркать букву A ;((( ), так как изначально это будет только русскоязычный ресурс. Но с другой сторны, класс построен так, что бы было легко включить поддержку и других языков, так как код отделён от данных, точнее данные отделены от кода. Вобщем в конце месяца, планирую оплатить хост и домен. Если проект не загнётся на первом скачке smile , тогда привяжем к нему ещё пару или тройку доменов, например: .com, .net, .org

2. Нужно так же решить, какие ссылки в меню нужно оставить, а какие нужно убрать, по крайней мере до тех пор, пока не написали интерфейс для этого, т.е. для начальной стадии. Когда мы это сделаем, можно смело переходить к пункту 3. ;)))

3. Разбиться на группы (от 1 до n человек), кол-во человек будет зависеть от уровня сложности поставленной задачи и от количества желающих принять участие. smile

Когда все три пункта прояснятся, я вышлю каждому по архиву .ZIP или .RAR, в котором дудет находиться три каталога и файл readme.txt, где будет подробно описано, как и чем пользоваться, что и куда совать и для чего. ;)))))))
А так же:
Товарисчи smile , если вы видете какую-то ошибку или не дочёт другого, не нужно хамить, не нужно высказываться подобным образом:
Ты ламер, ты вообще думаешь, что пишешь?
Каждый из нас, способен на ошибку, даже самый Cool-программёр.
Вобщем после того, как все эти пункты будут решены, помните о том, что вы теперь одна команда, тем мы и сильны.

Автор: shootnix 14.4.2006, 09:25
hello.
Насчёт названия - моё такое мнение, что лучше perlanatomy.ru... Дефисики там, чёрточки, это... line noise smile по-моему
Вот. А насчёт кодинга - я тоже могу, чем смогу smile) с удвольствием помогу smile)))

Автор: BlackLFL 14.4.2006, 10:16
korob2001, я за perlanatomy.ru.

Предлагаю следующее меню
  • Главная страница
  • Документация
  • Модули и классы
  • Примеры (Готовые примеры)
  • FaQ
  • Ссылки
  • Форум
  • О нас
Контакт - нужно поместить в О нас

Переводы - не понимаю смысл этого раздела, в разделах Документация, Модули и классы будут содержатся как переведенные единицы, так и непереведенные.

Гостевая книга зачем? у нас будет форум.

Регистрация можно принципе оставить и в основном меню, но я бы оставил в верхнем право углу, как сейчас

Bug track
Защита
Нападение
смысл этих трех разделов я в обще не понимаю....

Автор: DEER 14.4.2006, 10:55
Всё это мой ИМХО
1 perlanatomy.ru

2 Регистрация - лишнее,
Документация, Модули и классы и Переводы эти пункты нужны, но их надо объеденить в один общий раздел типа "наши разработки" или ещё что. Гостевая книга и в правду зачем?

3 Я хочу быть в игре. Времени правда маловато, но могу какие нить не срочные части делать. как в команде так и один.

Автор: shootnix 14.4.2006, 13:28
Цитата(DEER @ 14.4.2006, 10:55)
Документация, Модули и классы и Переводы эти пункты нужны, но их надо объеденить в один общий раздел типа "наши разработки" или ещё что. Гостевая книга и в правду зачем?

раздел "наши разработки"... м.. по-моему, немного пространная фраза. не ясно, о чём это. чта за разработки? и потом, переводы - это не разработка smile по-моему, проще в каждом разделе просто указывать автора, и если он "местный" то там, ссылочку на него внутри сайта, если надо...

согласен с BlackLFL - по-моему, этого вполне достаточно

Автор: shootnix 25.4.2006, 12:57
Я тут подумал: а что, если создать что-то вроде API для сайта. Местного, так сказать, уровня?Объектно, можно было бы поделить на следующие части:
- основной, базовый класс, решает проблемы на "низком" уровне: запись, чтение, парсинг и т.п.
-- ещё один класс, дочерний, который будет наследовать эти методы и создавать уже что-то серьёзное, методы, к примеру, такие: гост. книга, счётчик, голосования и т.п., т.е. ЦГИ-программы в виде методов. 
И уже потом юзать такое API довольно просто, надо, к примеру, авторизацию, просто вызвал метод класса, передал нужные настройки и всё. К тому же, можно использовать общую базу ну и вообще, это прикольно.. Можно ведь таким образом разделить на части сам процесс разработки, да и контроль над "качеством" может возрасти, не надо писать горы кода - маленькие части, они же проще... Как идея? 

Автор: korob2001 25.4.2006, 14:19
Писать класс имеет смысл, только в том случае, если он будет использоваться многократно. 

Автор: DiverD 25.4.2006, 18:22
korob2001 => диз суПАр. вот не знаю или мой диалап или хз, но броузер мой при открытии чуть ли не вешается=)
да кста а irc канал будет??? 

Автор: korob2001 26.4.2006, 04:06
Цитата(diverd @  25.4.2006,  15:22 Найти цитируемый пост)
диз суПАр. вот не знаю или мой диалап или хз, но броузер мой при открытии чуть ли не вешается

;((((( Странно, у меня грузится очень быстро, хотя всё же грабли там помоему с бегущей строкой. Постараюсь на днях переписать её, но опять же если с веременем напряга не будет.



  

Автор: nitr 26.4.2006, 13:52
думаю diverd, тебе в настройках на своём компе надо покапаться. Даж на жпрз летаить сайтик smile 
korob2001, бегущая строка работает в ff 1.5.0.2, Opera 8.54, IE от 6 (проверял как под никсами, так и под виндой)
З.Ы.: по крайне мере работало ;) (ОС FreeBSD 4.11, 5.3; Windows XP SP2 RUS) 

Автор: Lat1n0S 10.5.2006, 19:07
Всё чтоль? ) Что нибудь ещё делаеться?
(нужен IRC канал ;) ) 

Автор: korob2001 16.5.2006, 17:41
Цитата(Lat1n0S @  10.5.2006,  16:07 Найти цитируемый пост)
Всё чтоль? ) Что нибудь ещё делаеться?

Временно не делалось, я тут переезжал на новую квартиру.  smile Вещи немного разгребу и продолжу. Сегодня с утра дописал несколько классов:
Design::Counter
счётчик посещений для каждой стрницы, с учётом IP адресов и таймоутом, вобщем c защитой от накрутки посещений.
Design::Secure::Crypt
класс для шифрования данных, по алогоритмам Blowfish, DES, CBC. Вобщем данный класс использует 4 модуля Crypt::BlowfishCrypt::CBCCrypt::DESDigest::MD5.
Design::Secure::Taint
класс для проверки данных на загрязнение их очистки.
Design::Config
класс для получения данных из конфигурационных файлов, так как конфиги сейчас полностью шифруются с помощью класса Design::Secure::Crypt

Так же в проект добавлен класс Black::CGI, который написал http://vingrad.ru/@BlackLFL

Вообще хотел написать ещё пару классов, такие как Design::Session и Design::Form, но вот с последним не совсем уверен, нужен ли он? Вобщем этот класс хотел сначала создать, для считывания кода форм из шаблонов, но мне кажется, что если сделать это то есть риск потерять гибкость. С другой стороны, можно использовать этот класс для быстрого вывода стандартных форм и оставить возможность писать код форм вручную, тогда можно будет и рыбку съесть и сесть на что-то. ;))))) Хотя может это и лишнее. 

Автор: lanD 5.7.2006, 18:38
Почему все остановилось? 

Автор: trigger 13.7.2006, 23:34
Цитата(sharq @ 21.3.2006,  11:58)
korob2001
Цитата(korob2001 @  20.3.2006,  17:58 Найти цитируемый пост)
Тебя это удивляет? На дизайне всё заглохло, потому предлагаю попробовать самим нарисовать дизайн. 

да пофиг на дизайн пока, обячный, сделаем через шаблоны, а потом нарисуем диз!

Давайте начинать - составляем ТЗ системы!

 smile

примите предложение на дизайн. От вас тока структура нужна будет.  если не успею до 24 числа тогда после 16 августа смогу приступить (отпуск). 

Автор: sharq 14.7.2006, 09:48
trigger, посмотри тут дизайн какой был и примерная структура, предложи свой вариант.
Дело немного заглохло из=за лета, но если что-нибудь нарисуешь или сделаешь будет прикольно smile

 ;)
 

Автор: korob2001 16.7.2006, 03:22
trigger - конечно рисуй дизайн. То что уже сделано способно поддерживать столько скинов, сколько будет нужно.

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

Сразу хочу сказать, что код нужно будет тщательно просмотреть, наверняка кто-то найдёт что-то лишнее, без чего можно было бы и обойтись. Возможно будут найдены какие-то недочёты и ошибки. Ещё раз говорю, время у меня на разработку было очень ограничено, так что не судите строго.  smile 

ЗЫ: Вот мне например кажется, что зря я замутил шифрование конфига, слишком сложно вносить какие-то изменения. Нужно создавать отдельный файл, вносить в него изменения, шифровать и ложить в нужный каталог. Хотя с другой стороны, может это и к лучшему.

Вобщем давайте решим, как жить дальше. 

Автор: trigger 16.7.2006, 23:38
Ок - я с удовольствием примусь - тока жаль что после отпуска в сиридине августа- 10 лет не был в отпуске - приеду и дам на обозрение. 

Автор: trigger 18.7.2006, 17:20
Цитата(korob2001 @ 16.7.2006,  03:22)
trigger - конечно рисуй дизайн. То что уже сделано способно поддерживать столько скинов, сколько будет нужно.

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

Сразу хочу сказать, что код нужно будет тщательно просмотреть, наверняка кто-то найдёт что-то лишнее, без чего можно было бы и обойтись. Возможно будут найдены какие-то недочёты и ошибки. Ещё раз говорю, время у меня на разработку было очень ограничено, так что не судите строго.  smile 

ЗЫ: Вот мне например кажется, что зря я замутил шифрование конфига, слишком сложно вносить какие-то изменения. Нужно создавать отдельный файл, вносить в него изменения, шифровать и ложить в нужный каталог. Хотя с другой стороны, может это и к лучшему.

Вобщем давайте решим, как жить дальше.

день добрый - в аську стучался концепт предложить.

Носта нет - куда заслать картинку ?



 

Автор: korob2001 19.7.2006, 00:34
Кидай на мыло: korob2001[at]yandex.ru 

Автор: Zukoff 9.8.2006, 22:03
а мне можно?

Автор: Materium 24.12.2006, 22:28
Zukoff, что можно? )))

Автор: Filin 25.1.2007, 18:40
Цитата(BlackLFL @  9.3.2006,  13:46 Найти цитируемый пост)
Перво-наперво, я считаю надо решить вопрос с Perl.ru, кто готов внести финансовую помощь для выкупа домена(я готов)?
Давайте решим, какую сумму будем предлагать, и до какой мы можем подняться ... 

ПОДДЕРЖИВАЮ И ГОТОВ ВНЕСТИ ВКЛАД как Материальный так и Наработанный опыт !!
Для связи со мной пользуйте личку

Автор: tishaishii 25.1.2007, 23:02
Цитата
    *  разработка ПО
    * поддержка языка perl

А финансовая сторона? Меня как таковой "Perl" не интересует, я хочу с него колоссальные удои. Я не слишком религиозный человек.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)