Как я могу получить PHP's (развертывание) простота, но питание Perl?

19
задан djsadinoff 14 February 2011 в 11:58
поделиться

11 ответов

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

Катализатор позволяет Вам использовать Шаблонный Инструментарий для разделения логики дизайна от бизнес-логики, Шаблонный инструментарий действительно является большим, даже если Вы решаете не использовать Катализатор затем, необходимо использовать это. HTML:: Масон не что-то я лично как, хотя, если Вы делаете весь HTML сами затем, Вы могли бы хотеть рассмотреть Шаблон:: Объявите , который является другой альтернативой, которую можно также использовать с Катализатором.

взгляд материала базы данных For DBIx:: Класс , который все снова и снова работает с Катализатором или на своем собственном.

18
ответ дан 30 November 2019 в 02:24
поделиться

Я рекомендовал бы Катализатор с FastCGI. Кроме того, для шаблонной обработки, Шаблон:: Инструментарий является моим любимым, но HTML:: Масон также высоко ценится в сообществе.

6
ответ дан 30 November 2019 в 02:24
поделиться

Самый близкий, хорошо расцененный эквивалент PHP в Perl, вероятно HTML:: Масон .

Как PHP, это встраивает Perl в Ваш документ и представляет его:

% my $noun = 'World';
Hello <% $noun %>!
How are ya?

книга O'Reilly, Встраивающая Perl в HTML с Масоном , доступна онлайн бесплатно.

6
ответ дан 30 November 2019 в 02:24
поделиться

Существует много возможностей, в зависимости от того, что Вы хотите сделать.

, Если Вы хотите использовать в своих интересах скорость mod_perl, но простоту ванильного CGI, выезд Modperl:: распределение Реестра от CPAN. Это позволит Вам запускать свою плоскость в основном неизменные скрипты CGI.

С точки зрения платформ, я - большой поклонник CGI:: Приложение . Это служит очень простой основанной на наследовании основой, которая обрабатывает больше всего все, что веб-приложение должно будет сделать, давая Вам свободу разработать Ваше приложение путем, Вам нравится. Простое приложение может быть сделано монолитным способом; более сложный может использовать законченное дизайн MVC. Как Perl в целом, Приложение CGI дает Вам много опций и обычно остается вне Вашего пути.

поддержки приложений CGI превосходное HTML:: Шаблон модуль по умолчанию, и имеет плагины для других систем шаблонной обработки, таких как представление Шаблонный Инструментарий . Существует также множество плагины для других целей.

, Если Вы хотите больше работы, сделанной для Вас, проверьте Катализатор . Этот способ сделать вещи может быть более знакомым при использовании Ruby on Rails.

Другие популярные платформы веб-приложения включают Jifty и CGI:: Прототип , записанный Randal Schwartz, который основан Класс:: Смоделированный объектная платформа.

4
ответ дан 30 November 2019 в 02:24
поделиться

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

<html> <body> <p>The value of 2+2 is: <?php echo 2+2; ?></p> </body></html>

и посмотрите на своем веб-браузере:

The value of 2+2 is: 4

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

, К счастью, этот уровень простоты может быть достигнутым с Mason, который до некоторой степени (благодаря питанию Perl) может быть еще более простым. Вышеупомянутые чтения в качестве примера:

<html><body><p>The value of 2+2 is: <% 2+2 %></p></body></html>

и Вы получаете тот же результат.

нет никакой причины, которую Вы не можете запустить путем установки и работы с Mason и затем установить Катализатор бок о бок с ним, однако, если Вы планируете переместиться в очень сложные, просто управляемые Perl проекты позже, все же.

3
ответ дан 30 November 2019 в 02:24
поделиться

Интересно, что случилось mod_perlite, который собирался обеспечить точно , что Вы после.

3
ответ дан 30 November 2019 в 02:24
поделиться

Материал как Катализатор и CGI:: Приложение является большим количеством эквивалентов Платформы Зенда, а не самого PHP. Для тиражирования основной функциональности для создания веб-страниц, что PHP предлагает "поле", затем Вам нужны два модуля CPAN, которые должны быть доступными в каждой основной установке Perl:

use CGI;
use DBI;

Все, в чем Вы действительно нуждаетесь. Теперь вместо:

$_POST['param']
$_GET['param']

Вы имеете:

my $q = new CGI;
$q->param('param'); # same for post or get

И вместо:

$dbh = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$sth = mysql_query("SELECT 1 FROM table", $dbh);
while($row = mysql_fetch_assoc($sth))
{
    // do something with $row
}

Вы имеете:

my $dbh = DBI->connect('DBI:mysql:host=localhost;', 'mysql_user', 'mysql_password');
my $sth = $dbh->prepare("SELECT 1 FROM table");
$sth->execute();
while(my $row = $sth->fetchrow_hashref)
{
    # do stuff with row
}

Код DBI немного более сложен, потому что он предлагает подготовленный statments и связанные переменные так, чтобы Вы не должны были волноваться о Внедрениях SQL. PHP не предлагает это так, необходимо использовать что-то как PDO или записать собственный класс базы данных.

Единственная оставленная вещь состоит в том, если Вы хотели вывод HTML в сценарии. Но Вы не хотите, которые делают Вас? Вы используете HTML:: Шаблон или Шаблон:: Инструментарий для этого, тот же путь необходимо использовать Присяжного острослова или собственные шаблоны в PHP.

3
ответ дан 30 November 2019 в 02:24
поделиться

Я соглашаюсь с Aristotle. mod_perlite походит, что Вы ищете, если только он был закончен.

1
ответ дан 30 November 2019 в 02:24
поделиться

Самым близким к PHP с точки зрения простоты является HTML:: Масон.

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

1
ответ дан 30 November 2019 в 02:24
поделиться

Я работал с HTML:: Mason, сначала взламывая RT и затем создавая два сайта с ним. Существует кривая обучения, но это не слишком плохо. Хуже, я думаю, устанавливает вещь, но это намного больше имеет отношение к Apache и mod_perl, чем Mason. После того как части существуют, это только так сложно, как Вы делаете его (как сам Perl).

0
ответ дан 30 November 2019 в 02:24
поделиться

На вашем примере я думаю, что вы хотите сделать это:

el.onclick = function() { displayDatePicker(el.id); };

Единственный фокус состоит в том, чтобы понять, почему вам нужно обернуть свой вызов displayDatePicker в код функции () {...} . В основном, необходимо назначить функцию свойству onclick , однако для этого нельзя просто выполнить el.onclick = displayDatePicker (el.id) , так как это означает, что javascript должен выполнять функцию displayDatePicker и присваивать результат обработчику onclick , а не назначать Чтобы обойти это, создайте анонимную функцию, которая в свою очередь вызывает DisplayDatePicker . Надеюсь, это поможет.

-121--3530035-

Очевидно, что вы можете просто закрыть и открыть файл так:

     while((s1=file1.data.readLine())!=null){
         System.out.println("s1: "+s1);
         FileReader file2=new FileReader("d:\\testfiles\\FILE2.txt");
         while((s2=file2.data.readLine())!=null){
             System.out.println("s2: "+s2);
             //compare s1 and s2;
         }
         file2.closeFile()
     }

Но вы действительно не хотите делать это так путь, так как время работы этого алгоритма равно O (n 2 ). Если в файле A было 1000 строк, а в файле B - 10000 строк, внутренний цикл будет выполняться 1 000 000 раз.

Необходимо прочитать каждую строку и сохранить ее в коллекции, которая позволяет быстро проверить наличие предмета (возможно, HashSet).

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

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

Если файлы настолько велики, что недостаточно памяти, то исходный метод n 2 никогда бы не сработал.

-121--2809791-

Я только что видел Танцора . Похоже, это хороший вариант.

7
ответ дан 30 November 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: