LINUX.ORG.RU

Создание системы голосования на Perl/CGI


0

0

Многие Web-приложения, например, PHP-приложения и Java™-сервлеты, написаны в сложных серверных интегрированных средах разработки (поддерживающих базы данных), но для простых приложений (например, в которых весь набор данных прекрасно помещается в RAM Web-сервера), персистенция данных может быть реализована при помощи заблокированных DBM-файлов в сочетании с модулем Perl MLDBM. В данной статье представлен реальный пример (Web-приложение для голосования), в котором используется минимальное число внешних модулей, не применяются cookies на стороне клиента и используются преимущества CGI-атрибутов.

>>> Подробности

★★★

Проверено: Shaman007 ()

Устаревшее говно. Сайт на перловке-CGI извращение. PHP или JSP в зубы и нечего там выдумывать.

anonymous
()

"столько образования на один бифштекс?!!" (с) а.райкин

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

anonymous
()

детский сад какой-то ...

SI ★★☆☆
()
Ответ на: комментарий от anonymous

> "проект", "архитектура" - какие звучные термины. а реально - крохотный скриптик, который сам по себе нафиг никому не нужен. а встраивать это во что-то другое - занятие для фанатиков perl.

Из одного крохотного скриптика на перл однажды вырос проект со своей архитектурой. До сих пор мучаемся :)

m57
()

Хорошая наверно штука...

anonymous
()

Хотел было добавить флудеробота в игнор, но передумал, и подписался на комменты.

ero-sennin ★★
()
Ответ на: комментарий от anonymous

пхп - быдлячья поделка для малолеток, то-то "веб-мастеров" развелось как собак нерезанных, а протокол HTTP хотя-бы кто-нибудь из этих недоумков почитал?

Если инструмент справляется с задачей - это хорошо, если он справляется с ней лучше других - это отлично. Гетерогенная структура системы не всегда зло

tim2k
()
Ответ на: комментарий от anonymous

абсолютно бессмысленная весчь(( это они так для понту?!

anonymous
()

Не в "серверных интегрированных средах разработки", а с использованием серверов приложений (WebLogic, Glassfish, JBoss...). На этом вы, товарищ IBM_dW слегонца вскрыли свое не понимание темы :)

localstorm
()

Я, кончено, с PHP никак не связан, случайно краем уха слышал, что там то же есть flock(). Кустарная база в файликах - зачем такие новости одобрять?

CtrlAltBs
()
Ответ на: комментарий от Davidov

Нет, пыхпых. Лайвжорнал скорее во благо, несмотря на. Перлбалансер + мемкэшд разве плохо?

m57
()

опять developerworks =(

Перлу +1, и пусть валит в область системных скриптов. для web php совершенно разумно абстрагирует тонну ненужной работы, которую надо было бы произвести в перле. И BDA, и flock, и даже весь fnctl в php есть

Каждому свое место

anonymous
()

Все, IBM DW == флаг "не ходить туда и не читать этих совецких газет". Интересно, в IBM ща тоже рулят индусы? Или просто дебилы?

anonymous
()
Ответ на: комментарий от anonymous

> для web php совершенно разумно абстрагирует тонну ненужной работы, которую надо было бы произвести в перле

Угу. Особенно здорово, разумно и абстрагированно смотрится на PHP конструкция «for (sort { lc($a->{foo}) <=> lc($b->{foo}) } @bar) { ... }».

anonymous
()
Ответ на: комментарий от anonymous

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

tim2k
()

"CGI: Простота против сложности"

скорее, маразм против здравого смысла.

"Использование хешированных ключей для создания ассоциативных массивов в Perl позволяет оперативно разрабатывать комплексные структуры данных"

а еще это - кривой, но единственно доступный в perl, костыль для компенсации отсутствия создания нормальных структур данных.

"Модуль MLDBM позволяет плавно сохранить в локальный файл комплексные Perl хеш-значения."

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

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

понятно, пионэры играли в девелоперов.

anonymous
()

Почему дата новости 2007 год, а не конец 90-х?

Sir_Michael
()

Эх, ностальгия слезу прошибла. Эти песочные cgi-куличики я выпекал в своем профессиональном детстве, открывая наугад справочник по Perl5.

Кстати, Perl -- отличный язык. Но после написания относительно крупной системы я решил пощадить свои нервы, собрал манатки и перебрался на Python.

amix ★★★
()
Ответ на: комментарий от anonymous

> но не приведи, господи, если в этот момент пропадет питание или еще какая беда.

Если на сервере пропадает питание, то админу надо отрезать яйца и послать мести улицы.

быдлокодеры оживились, да ... :)

anonymous
()

дык это, чего разбрасываться памятью, не казенная поди, надо вообще написать:

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

короче говория shell скирпт надо было напесать и через cgi запускать

sw0rdf1sh
()
Ответ на: комментарий от seiken

> Perl - это не энтерпрайз.

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

Ky6uk-Py6uk
()
Ответ на: комментарий от tim2k

> На C с использованием cgi-lib
И если ещё pcre использовать... ПОрой даже легче, чем на перле писать.

Shadow ★★★★★
()
Ответ на: комментарий от sw0rdf1sh

> короче говория shell скирпт надо было напесать и через cgi запускать

shell скирпт по времени выполнения зачастую проигрывает Perl скрипту. Да и какой именно шелл (bash, zsh, ksh, tcsh)? А то есть много и далеко несовместимых, в отличии от Perl. Кроме того, стандартной библиотеки по типу CGI.pm на shell нет, да и никаких вовсе стандарыных библиотек нет. И зависимость от внешних утилит - минус.

В общем, shell скирпт - это как раз маргинальное (хоть и иногда приемлимое для лёгких случаев) решение. А вот Perl - самое оптимальное решение для написание CGI любой сложности, что бы там неосилившие такие базисные вещи как HTTP, CGI и Perl не говорили.

mihalych ★★★
()
Ответ на: комментарий от anonymous

Это точно. Тупым кодомарателям - либо жаву, либо пхп. На большее они просто умственно не способны.

anonymous
()
Ответ на: комментарий от anonymous

>> для web php совершенно разумно абстрагирует тонну ненужной работы, которую надо было бы произвести в перле 

>Угу. Особенно здорово, разумно и абстрагированно смотрится на PHP конструкция «for (sort { lc($a->{foo}) <=> lc($b->{foo}) } @bar) { ... }».

http://www.php.net/manual/ru/function.uksort.php и напишите простой каллбэк

А от вашик строк перлом попахивает. Используйте другую стилистику

anonymous
()
Ответ на: комментарий от mihalych

> shell скирпт по времени выполнения зачастую проигрывает Perl скрипту. 
да нифига. для сабжа уж точно.
> Да и какой именно шелл (bash, zsh, ksh, tcsh)?
sh
> .. и далеко несовместимых, 
это смотря как писать
> стандартной библиотеки по типу CGI.pm на shell нет, 
для сабжа ничего такого не требуется.
а так - можно awk/grep/etc использовать.
> И зависимость от внешних утилит - минус.
для шелла это плюс. да и утилиты(скорее - команды) обычно используются стандартные, которые есть везде.

> А вот Perl - самое оптимальное решение для написание CGI любой сложности

для чего-нить более сложного чем сабж в любом случае ни cgi ни perl не катит.

pawnhearts ★★★★★
()
Ответ на: комментарий от anonymous

> Если на сервере пропадает питание, то админу надо отрезать яйца и послать мести улицы.

правильно! начинаем бегать на костылях, а если что - все валим на админа.

> быдлокодеры оживились, да ... :)

ну, что тут еще скажешь? стандартная реакция при отсутствии других аргументов

anonymous
()
Ответ на: комментарий от anonymous

> http://www.php.net/manual/ru/function.uksort.php и напишите простой каллбэк

Я вижу что-то вот такое, огромное, с подводными камнями (превед create_function) и напоминающее колонну инвалидов-велосипедистов, использующих костыли чтобы крутить педали.

function sortBy($arr, $cmp) { uksort($arr, $cmp); return $arr; }
function compare($a, $b) { return ($a == $b) ? 0 : ($a > $b) ? 1 : -1; }

foreach (
sortBy($bar, create_function(
'$a, $b',
'return compare(strtolower($a[\'foo\']),
strtolower($b[\'foo\']));')
) as $x) {
...
}

Или я ничего не понимаю в похапэ и мне надо купить чалму (покажите как надо писать), или похапэ в данной ситуации сосет.

> А от вашик строк перлом попахивает. Используйте другую стилистику

«bar.sort_by { |x| x[foo].downcase }.each { |x| ... }» или
«mapM (...) sortBy (compare . toLower . foo) bar»
(если не туплю на ночь глядя нигде, что могу) устроит?

Вот, разве что перлоспецифичному $_ (оно удобное, да) не сделать
с ходу простой замены.

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от pawnhearts

> утилиты(скорее - команды) обычно используются стандартные, которые есть везде

То есть ты не в курсе, что BSD утилиты, к примеру, далеко не совместимы с GNU утилитами. Хотя можно, конечно же, постоянно извращаться (что я сам переодически и делаю, когда требуется) и использовать абсолютный минимум (даже меньше, чем в POSIX описано) и добиться некой совместимости, только ни о каком удобстве и оптимальности речи уже идти не может.

> для чего-нить более сложного чем сабж в любом случае ни cgi ни perl не катит

Ну, я и говорю, не осилил, раз такое с умным видом утверждаешь. :)

mihalych ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.