Написал ряд сайтиков на Perl и PHP. PHP это какой-то кошмар, а не язык. ООП есть, но переменные-атрибуты работают непредсказуемо. Так разобраться и не удалось: потёр все три класса и переписал на функциональном языке. Но оказалось, что передать глобальную переменную в функцию это тоже проблема. Плюнул и переписал все 15 кб кода на Perl.
Perl куда удобнее. Но перлистов в России не найти днём с огнём, а PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на уродствах типа PHP, а на красивом и понятном Perl нет?
15.03.06 16:58: Перенесено модератором из 'Священные войны' — Kupaev
Слава Шевцов wrote: > Perl куда удобнее. Но перлистов в России не найти днём с огнём, а > PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на > уродствах типа PHP, а на красивом и понятном Perl нет?
На Java сайты писать надо...
Здравствуйте, Cyberax, Вы писали:
C>Слава Шевцов wrote: >> Perl куда удобнее. Но перлистов в России не найти днём с огнём, а >> PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на >> уродствах типа PHP, а на красивом и понятном Perl нет? C>На Java сайты писать надо...
Можно еще написать маленький шлюз на чем-нибудь. Например, на том же С++, а всю обработку делать хранимками в базе данных. Как-то раз пришлось принимать участие в подобном проекте...
Horror_Infinity wrote: >> > Perl куда удобнее. Но перлистов в России не найти днём с огнём, а >> > PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на >> > уродствах типа PHP, а на красивом и понятном Perl нет? > C>На Java сайты писать надо... > Можно еще написать маленький шлюз на чем-нибудь. Например, на том же > С++, а всю обработку делать хранимками в базе данных. Как-то раз > пришлось принимать участие в подобном проекте...
Ага, а еще можно писать CGI на ассемблере. По поддерживаемости будет
примерно одинаково.
Здравствуйте, Cyberax, Вы писали:
>> Perl куда удобнее. Но перлистов в России не найти днём с огнём, а >> PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на >> уродствах типа PHP, а на красивом и понятном Perl нет? C>На Java сайты писать надо...
Java для этого слишком многословен, как и С++. Кроме того, мне не очень нравится непредсказуемость с выделением Java памяти. Это не считая того, что Java-программисты самые высокооплачиваемые в России. А для больших и сложных гетерогенных сайтов Java может быть хорошим решением.
СШ>Написал ряд сайтиков на Perl и PHP. PHP это какой-то кошмар, а не язык. ООП есть, но переменные-атрибуты работают непредсказуемо. Так разобраться и не удалось: потёр все три класса и переписал на функциональном языке. Но оказалось, что передать глобальную переменную в функцию это тоже проблема. Плюнул и переписал все 15 кб кода на Perl.
А help не пробовали читать? Я писал на PHP, проблем не возникало. Единственное что — он на мой взгляд рассчитан на небольшие проекты типа "сделал-забыл".
...Ei incumbit probatio, qui dicit, non qui negat...
_>А help не пробовали читать? Я писал на PHP, проблем не возникало. Единственное что — он на мой взгляд рассчитан на небольшие проекты типа "сделал-забыл".
Да, и кстати большой плюс PHP — очень легко во всем разобраться
...Ei incumbit probatio, qui dicit, non qui negat...
Здравствуйте, Cyberax, Вы писали:
C>Серьезно, связка Hibernate+Spring+Tapestry/JSF в Java позволяет писать C>сайты так, что никакому RubyOnRails не снилось. В качестве одного из C>лучших примеров — можно посмотреть Confluence
Согласен. Но обычно есть несколько "но". Сайт сначала должен быть создан автором. И только потом, когда концепция реализована и основные вектора развития сайта заданы, он может передаваться на поддержку наёмным программистам. Увы, но иначе не получается. И здесь Java с Asp.Net значительно уступают Perl с PHP.
Почему с Java это реализовать труднее, чем c Perl? Во-первых, Java далеко не простой язык. Во-вторых, программисты слишком дорогие. В-третьих, скорость разработки значительно ниже Perl. Я бы брал для сложных проектов Asp.Net. И програмисты более дешёвые, и платформа очень хорошая, и скорость разработки намного выше, чем Java.
Здравствуйте, vitaly_spb, Вы писали:
СШ>>Написал ряд сайтиков на Perl и PHP. PHP это какой-то кошмар, а не язык. ООП есть, но переменные-атрибуты работают непредсказуемо. Так разобраться и не удалось: потёр все три класса и переписал на функциональном языке. Но оказалось, что передать глобальную переменную в функцию это тоже проблема. Плюнул и переписал все 15 кб кода на Perl.
_>А help не пробовали читать?
Есть класная книжка "Разработка Web-приложений с помощью PHP и MySQL".
_>Я писал на PHP, проблем не возникало. Единственное что — он на мой взгляд рассчитан на небольшие проекты типа "сделал-забыл".
Раньше — да. Сейчас там есть ООП, но какое-то жутко непривычное и странное (я С++-шник) Он позволяет делать достаточно гибкие и хорошо поддерживаемые сайты. Но врубиться в него трудно. С Perl намного легче шло изучение.
Слава Шевцов wrote: >> > Perl куда удобнее. Но перлистов в России не найти днём с огнём, а >> > PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на >> > уродствах типа PHP, а на красивом и понятном Perl нет? > C>На Java сайты писать надо... > Java для этого слишком многословен, как и С++.
А вы пишете программы для IOC (International Obfuscated Contest)? В той
же IDEA код будет писаться за счет умного autocomplete'а в разы быстрее,
чем на Перле.
> Кроме того, мне не очень нравится непредсказуемость с выделением Java памяти.
Ага, а вы попробуйте посоздавать циклические ссылки на объекты а Перле
А вообще, в серверах с памятью проблем обычно нет. Можно выделить
мегабайт 100 и не мучаться.
> Это не считая того, что Java-программисты самые высокооплачиваемые в России.
Сами же жалуетесь, что PHP — язык для школьников-вебмастеров.
> А для больших и сложных гетерогенных сайтов Java может быть хорошим > решением.
Просто Java-технологии неплохо масштабируются. Но простой сайт с их
помощью тоже писать будет проще.
Здравствуйте, vitaly_spb, Вы писали:
_>>А help не пробовали читать? Я писал на PHP, проблем не возникало. Единственное что — он на мой взгляд рассчитан на небольшие проекты типа "сделал-забыл".
_>Да, и кстати большой плюс PHP — очень легко во всем разобраться
Поможешь? Писал на PHP-классах такую штуку:
class ArchiveDatabase
{
var $m_db; // MySql базаvar $m_userid; // Номер сайта-каталогаvar $m_path; // Путь к файламvar $m_template; // Кешированный шаблонvar $m_templatename; // Наименование закешированного шаблонаfunction ArchiveDatabase($path, $userid)
{
$this->$m_db = mysql_connect("localhost", "что-то", "что-то");
if ($this->$m_db === false)
{
echo"Не могу соединиться с базой 'что-то'!<br>";
echo mysql_error();
exit;
}
mysql_select_db("что-то") or die(mysql_error());
$this->$m_path = $path;
$this->$m_userid = $userid;
}
function LoadTemplate($templatename)
{
if ($templatename != $this->$m_templatename)
{
$this->$m_template = file($this->$m_path."/template/ar_$templatename.html");
$this->$m_templatename = $templatename;
}
return $this->$m_template;
}
}
Так он мне во все переменные класса
var $m_db; // MySql базаvar $m_userid; // Номер сайта-каталогаvar $m_path; // Путь к файламvar $m_template; // Кешированный шаблонvar $m_templatename; // Наименование закешированного шаблона
загнал $userid. То есть при любом вызове $this->$m_template === $this->$m_userid. Вот тебе и ООП от PHP. Таких трюков в нём прилично.
Слава Шевцов wrote: > C>Серьезно, связка Hibernate+Spring+Tapestry/JSF в Java позволяет писать > C>сайты так, что никакому RubyOnRails не снилось. В качестве одного из > C>лучших примеров — можно посмотреть Confluence > Согласен. Но обычно есть несколько "но". Сайт сначала должен быть создан > автором. И только потом, когда концепция реализована и основные вектора > развития сайта заданы, он может передаваться на поддержку наёмным > программистам. Увы, но иначе не получается. И здесь Java с Asp.Net > значительно уступают Perl с PHP.
Нет. Java будет уступать только если сам автор не знает Java.
Стек Hibernate+Spring+Tapestry специально предназначен для создания
масштабируемых приложений. Есть все средства для этого, начиная с
компонентной модели web-страниц, и заканчивая инструментами для
автоматической миграции схемы БД при изменении объектной модели.
> Почему с Java это реализовать труднее, чем c Perl? Во-первых, Java > далеко не простой язык. Во-вторых, программисты слишком дорогие.
А вы думаете, что на простом (хотя Perl намного сложнее Java) языке
проще делать сложные вещи?
> В-третьих, скорость разработки значительно ниже Perl. Я бы брал для > сложных проектов Asp.Net. И програмисты более дешёвые, и платформа очень > хорошая, и скорость разработки намного выше, чем Java.
Tapestry — это и есть прямой аналог ASP.NET (похожая компонентная
идеология, но с более правильной архитектурой). Hibernate — это
инструмент для OR-mapping'а. Spring — это инструмент для связывания
всего этого вместе.
И скорость разработки на Java, кстати, получается быстрее чем в ASP.NET.
Так как Tapestry ориентирован не на VB6-developers.
Здравствуйте, Cyberax, Вы писали:
>>> > Perl куда удобнее. Но перлистов в России не найти днём с огнём, а >>> > PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на >>> > уродствах типа PHP, а на красивом и понятном Perl нет? >> C>На Java сайты писать надо... >> Java для этого слишком многословен, как и С++. C>А вы пишете программы для IOC (International Obfuscated Contest)? В той C>же IDEA код будет писаться за счет умного autocomplete'а в разы быстрее, C>чем на Перле.
Я пишу программы для людей
>> Кроме того, мне не очень нравится непредсказуемость с выделением Java памяти. C>Ага, а вы попробуйте посоздавать циклические ссылки на объекты а Перле
Хорошо
C>А вообще, в серверах с памятью проблем обычно нет. Можно выделить C>мегабайт 100 и не мучаться.
Не всегда можно поставить выделенные сервер. Обычно есть либо стандартный хостинг, либо дешёвый надёжный VDS типа моего любимого FirstVDS. Сервер это уже $100 в месяц + администрирование.
>> Это не считая того, что Java-программисты самые высокооплачиваемые в России. C>Сами же жалуетесь, что PHP — язык для школьников-вебмастеров.
Почему жалуюсь? Радуюсь. Это же дешёвая рабочая сила. В отличие от Java-разработчиков.
>> А для больших и сложных гетерогенных сайтов Java может быть хорошим >> решением. C>Просто Java-технологии неплохо масштабируются. Но простой сайт с их C>помощью тоже писать будет проще.
Ничуть. Книги по Java пишут такие Гуру, что я когда-то дня три бился над простой вещью: как запустить написанную Java программу на выполнение. Все авторы считали это настолько очевидным, что никто и нигде этого не написал!
Здравствуйте, Cyberax, Вы писали:
C>И скорость разработки на Java, кстати, получается быстрее чем в ASP.NET. C>Так как Tapestry ориентирован не на VB6-developers.
Это почему? В Java объекты что ли обектно-ориентированней?
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Здравствуйте, vitaly_spb, Вы писали:
_>>>А help не пробовали читать? Я писал на PHP, проблем не возникало. Единственное что — он на мой взгляд рассчитан на небольшие проекты типа "сделал-забыл".
_>>Да, и кстати большой плюс PHP — очень легко во всем разобраться
СШ>Поможешь? Писал на PHP-классах такую штуку:
СШ>
СШ>class ArchiveDatabase
СШ>{
[...]
СШ>
СШ>загнал $userid. То есть при любом вызове $this->$m_template === $this->$m_userid. Вот тебе и ООП от PHP. Таких трюков в нём прилично.
Никогда такого не встречал. Хотя программировал на php не мало. И еще я всегда писал что-то вроде
Здравствуйте, __MasteR__, Вы писали:
_>>>Да, и кстати большой плюс PHP — очень легко во всем разобраться
СШ>>Поможешь? Писал на PHP-классах такую штуку:
СШ>>
СШ>>class ArchiveDatabase
СШ>>{
__M>[...]
СШ>>
СШ>>загнал $userid. То есть при любом вызове $this->$m_template === $this->$m_userid. Вот тебе и ООП от PHP. Таких трюков в нём прилично.
__M>Никогда такого не встречал. Хотя программировал на php не мало.
Я про то и говорю: где-то напортачил, а где — фиг его поймёшь. Может на хостинге PHP не так скомпилирован, может версия не та, может $ не нужен, может операционка не нравится, может ещё что. Он же не ругается ни пол словом, только переменные перезаписывает.
__M>даже не знаю, можно ли так как у тебя...
Тоже не знаю. Транслятор компилит, при отладке не ругается. Но явно что-то не то. Кстати, опустить знак $ я бы просто не додумался. Спасибо ты подсказал.
Здравствуйте, Cyberax, Вы писали:
>> C>Серьезно, связка Hibernate+Spring+Tapestry/JSF в Java позволяет писать >> C>сайты так, что никакому RubyOnRails не снилось. В качестве одного из >> C>лучших примеров — можно посмотреть Confluence >> Согласен. Но обычно есть несколько "но". Сайт сначала должен быть создан >> автором. И только потом, когда концепция реализована и основные вектора >> развития сайта заданы, он может передаваться на поддержку наёмным >> программистам. Увы, но иначе не получается. И здесь Java с Asp.Net >> значительно уступают Perl с PHP. C>Нет. Java будет уступать только если сам автор не знает Java.
Попрошу уточнить: какой именно стаж нужен?
P.S. В приведённом примере автор никогда не знает Java. По определению. Обычно такой человек действует следующим образом: у него появилась идея и он решил её реализовать. Взял первый подходящий язык и написал код. Язык он изначально может не знать.
C>Стек Hibernate+Spring+Tapestry специально предназначен для создания C>масштабируемых приложений. Есть все средства для этого, начиная с C>компонентной модели web-страниц, и заканчивая инструментами для C>автоматической миграции схемы БД при изменении объектной модели.
Это всё здорово. Но это нужно знать и знать глубоко. Заодно иметь практический опыт обхождения узких мест и оптимизации. Например, я понял, что в Asp.Net нужны несколько человек — так разнятся знания для написания ядра сайта, связки с MS SQL и html-интерфейса. И лучше со стажем от 2-х лет, иначе они просто не смогут взглядом охватить архитектуру Asp.Net. Что мы имеем в случае Java?
>> Почему с Java это реализовать труднее, чем c Perl? Во-первых, Java >> далеко не простой язык. Во-вторых, программисты слишком дорогие. C>А вы думаете, что на простом (хотя Perl намного сложнее Java) языке C>проще делать сложные вещи?
На простом языке проще делать простые вещи и сложнее сложные. На сложном языке сложно делать простые вещи и проще сложные. На ассемблере сложно делать любые вещи.
C>Tapestry — это и есть прямой аналог ASP.NET (похожая компонентная C>идеология, но с более правильной архитектурой). Hibernate — это C>инструмент для OR-mapping'а. Spring — это инструмент для связывания C>всего этого вместе.
C>И скорость разработки на Java, кстати, получается быстрее чем в ASP.NET. C>Так как Tapestry ориентирован не на VB6-developers.
Спорить не буду: не сравнивал и обзоров по сравнению этих языков в глаза не видел.
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Поможешь? Писал на PHP-классах такую штуку:
СШ>Так он мне во все переменные класса
СШ>
СШ>var $m_db; // MySql база
СШ>var $m_userid; // Номер сайта-каталога
СШ>var $m_path; // Путь к файлам
СШ>var $m_template; // Кешированный шаблон
СШ>var $m_templatename; // Наименование закешированного шаблона
СШ>
СШ>загнал $userid. То есть при любом вызове $this->$m_template === $this->$m_userid. Вот тебе и ООП от PHP. Таких трюков в нём прилично.
Хе-хе:
$a = 'cool';
$b = 'a';
print $$b; // :)
class dummy
{
var $var1;
var $var2;
function dummy()
{
$this->var1 = 'cool';
$this->var2 = 'var1';
print $this->$var2; // :)
}
}
Слава Шевцов wrote: > C>Нет. Java будет уступать только если сам автор не знает Java. > Попрошу уточнить: какой именно стаж нужен?
Не знаю, все от программиста зависит. Ну обычно хотя бы пол-года.
> P.S. В приведённом примере автор никогда не знает Java. По определению. > Обычно такой человек действует следующим образом: у него появилась идея > и он решил её реализовать. Взял первый подходящий язык и написал код. > Язык он изначально может не знать.
Ну так кто мешает так делать с Java?
> Это всё здорово. Но это нужно знать и знать глубоко. Заодно иметь > практический опыт обхождения узких мест и оптимизации. Например, я > понял, что в Asp.Net нужны несколько человек — так разнятся знания для > написания ядра сайта, связки с MS SQL и html-интерфейса. И лучше со > стажем от 2-х лет, иначе они просто не смогут взглядом охватить > архитектуру Asp.Net. Что мы имеем в случае Java?
Все зависит от конкретного программиста. Например, Hibernate я освоил за
несколько дней и с тех пор отвечаю по нему на вопросы коллег
Tapestry на начальном уровне (набросать страничку и т.п.) освоилась за
пару часов. Но у меня уже был опыт работы со Struts.
> C>А вы думаете, что на простом (хотя Perl намного сложнее Java) языке > C>проще делать сложные вещи? > На простом языке проще делать простые вещи и сложнее сложные. На сложном > языке сложно делать простые вещи и проще сложные. На ассемблере сложно > делать любые вещи.
Понимаете, на Perl'е вы будете писать что-то типа
print "<html><body>..."
То есть просто выводить текст страницы.
В Tapestry я буду собирать страницу из компонентов — примерно как это
делается в Delphi или других RADах, но с учетом особенностей WWW.
Догадываетесь как будет быстрее делать?
> C>И скорость разработки на Java, кстати, получается быстрее чем в ASP.NET. > C>Так как Tapestry ориентирован не на VB6-developers. > Спорить не буду: не сравнивал и обзоров по сравнению этих языков в глаза > не видел.
Прямых обзоров не видел (написать, что ли?). Есть
JSF vs ASP.NET http://www.codeguru.com/csharp/.net/net_general/toolsand3rdparty/article.php/c11139/
Tapestry vs JSF http://www.theserverside.com/articles/article.tss?l=JSFTapestry
C>Понимаете, на Perl'е вы будете писать что-то типа C>
C>print "<html><body>..."
C>
C>То есть просто выводить текст страницы.
Это прошлый век. Для перла полно шаблоннызх движков, начиная со старого доброго libxsl.
C>В Tapestry я буду собирать страницу из компонентов — примерно как это C>делается в Delphi или других RADах, но с учетом особенностей WWW. C>Догадываетесь как будет быстрее делать?
Быстрее взять ORM с DAL объектами, которые умеют выгоняться в DOM, на который мы
натравливаем закэшированные xsl шаблоны и плюем полученный html в веб.
Для обработки нехитрой бизнес-логики можно автоматически генерить биндинги
бизнес-объекты в любой приемлемый скриптовый язык, и не заморачиваться.
dmz wrote: > C>То есть просто выводить текст страницы. > Это прошлый век. Для перла полно шаблоннызх движков, начиная со старого > доброго libxsl.
А без разницы. Все равно вся та же текстовая замена. В случае с libxsl
еще и придется в valid xml все делать.
> C>В Tapestry я буду собирать страницу из компонентов — примерно как это > C>делается в Delphi или других RADах, но с учетом особенностей WWW. > C>Догадываетесь как будет быстрее делать? > Быстрее взять ORM с DAL объектами, которые умеют выгоняться в DOM, на > который мы > натравливаем закэшированные xsl шаблоны и плюем полученный html в веб.
Во-первых, я что-то говорил про неиспользование ORM? В той же Tapestry я
могу привязать таблицу к результату запроса в Hibernate, при этом то как
будут отображаться объекты я могу задать декларативно с помощью OGNL
(Object Graph Navigation Language).
Тупой прямой подход с XSL почти всегда не работает, так как кроме
отображения данных обычно надо еще и менять их как-то.
> Для обработки нехитрой бизнес-логики можно автоматически генерить биндинги > бизнес-объекты в любой приемлемый скриптовый язык, и не заморачиваться.
Все красиво на бумаге...
>> доброго libxsl. C>А без разницы. Все равно вся та же текстовая замена. В случае с libxsl C>еще и придется в valid xml все делать.
Автоматически мэппя объекты на DOM — получить невалидный xml надо
постараться.
C>Тупой прямой подход с XSL почти всегда не работает, так как кроме C>отображения данных обычно надо еще и менять их как-то.
Поменяли на этапе обработки запроса. Получили — поменяли — вывели, в чем проблема.
>> Для обработки нехитрой бизнес-логики можно автоматически генерить биндинги >> бизнес-объекты в любой приемлемый скриптовый язык, и не заморачиваться. C>Все красиво на бумаге...
Это работает.
dmz wrote: > C>А без разницы. Все равно вся та же текстовая замена. В случае с libxsl > C>еще и придется в valid xml все делать. > Автоматически мэппя объекты на DOM — получить невалидный xml надо > постараться.
Задача: отобразить результат запроса (100000 элементов) в таблице. Чем
вам тут DOM поможет в организации paging'а?
> C>Тупой прямой подход с XSL почти всегда не работает, так как кроме > C>отображения данных обычно надо еще и менять их как-то. > Поменяли на этапе обработки запроса. Получили — поменяли — вывели, в чем > проблема.
Пользователю надо предоставить интерфейс для работы с данными. Скажем,
таблица и при нажатии на строку таблицы переход на форму ее
редактирования. Чем здесь XSL поможет?
Здравствуйте, Cyberax, Вы писали:
>> C>Нет. Java будет уступать только если сам автор не знает Java. >> Попрошу уточнить: какой именно стаж нужен? C>Не знаю, все от программиста зависит. Ну обычно хотя бы пол-года.
Пол года мало. Я с 3 месяцами стажа даже в страшном сне не видел написание простого сайта на Java
C>Ну так кто мешает так делать с Java?
Очень много специфики. От хостина и до написания кода.
>> C>А вы думаете, что на простом (хотя Perl намного сложнее Java) языке >> C>проще делать сложные вещи? >> На простом языке проще делать простые вещи и сложнее сложные. На сложном >> языке сложно делать простые вещи и проще сложные. На ассемблере сложно >> делать любые вещи. C>Понимаете, на Perl'е вы будете писать что-то типа C>
C>print "<html><body>..."
C>
C>То есть просто выводить текст страницы.
Зачем? Для каждого из сайтов я сделал набор шаблонов в виде html-файлов. В шаблоны поместил метки, которые заменяю налету на данные и на выходе получаю готовые страницы. Пример:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>tag_title</TITLE>
<LINK href="/stylesheet.css" type=text/css rel=stylesheet>
</HEAD><BODY>
<H1>tag_header</H1>
<DIV class=path>tag_path</div>
<DIV class=body><DIV class=body3>tag_body</DIV></DIV>
</BODY></HTML>
То есть представление (html), данные (MySQL) и код (PHP/Perl) полностью разделены. В случае чего я меняю html-шаблон (вставляю рекламу, ссылки или меняю структуру страницы), а код не трогаю. Это намного удобнее, чем собирать html прямо в коде. Кроме того, это позволяет удалять из страниц лишние пробелы, табуляции и признаки конца строк, что уменьшает объём отдаваемого пользователю html ~ на 10%.
Всё это возможно на Java. И даже на С/С++. Но код будет длиннее и цикл "обнаружение бага-исправление-тестирование" будет удлинён на стадию "компиляция". С другой стороны, компиляция на Java позволяет быстрее вылавливать ошибки: для Perl и PHP приходится лазить в лог сайта и догадываться, что там произошло.
C>В Tapestry я буду собирать страницу из компонентов — примерно как это C>делается в Delphi или других RADах, но с учетом особенностей WWW. C>Догадываетесь как будет быстрее делать?
Для малых сайтов, естественно, через шаблоны. И нагляднее, и быстрее, и технология проще, и программисты дешевле, и менять вид сайта можно поручить дизайнеру. А функция замены подстроки в шаблоне во всех языках работает с одинаковой скоростью
Для крупных я бы брал ASP.NET + MS SQL или PHP + MySQL. Практика показывает, что почему-то основная масса средних и крупных сайтов создаётся именно на этих технологиях.
>> C>И скорость разработки на Java, кстати, получается быстрее чем в ASP.NET. >> C>Так как Tapestry ориентирован не на VB6-developers. >> Спорить не буду: не сравнивал и обзоров по сравнению этих языков в глаза >> не видел. C>Прямых обзоров не видел (написать, что ли?). Есть C>JSF vs ASP.NET C>http://www.codeguru.com/csharp/.net/net_general/toolsand3rdparty/article.php/c11139/ C>Tapestry vs JSF C>http://www.theserverside.com/articles/article.tss?l=JSFTapestry
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Зачем? Для каждого из сайтов я сделал набор шаблонов в виде html-файлов. В шаблоны поместил метки, которые заменяю налету на данные и на выходе получаю готовые страницы. Пример:
СШ>
СШ><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
СШ><HTML><HEAD><TITLE>tag_title</TITLE>
СШ><LINK href="/stylesheet.css" type=text/css rel=stylesheet>
СШ></HEAD><BODY>
СШ><H1>tag_header</H1>
СШ><DIV class=path>tag_path</div>
СШ><DIV class=body><DIV class=body3>tag_body</DIV></DIV>
СШ></BODY></HTML>
СШ>
СШ>То есть представление (html), данные (MySQL) и код (PHP/Perl) полностью разделены. В случае чего я меняю html-шаблон (вставляю рекламу, ссылки или меняю структуру страницы), а код не трогаю. Это намного удобнее, чем собирать html прямо в коде. Кроме того, это позволяет удалять из страниц лишние пробелы, табуляции и признаки конца строк, что уменьшает объём отдаваемого пользователю html ~ на 10%.
Только лучше взять готовый smarty и не мучаться. Насчет замены строк там все круче. Он написанный html-шаблон переводит при первом использовании (изменения отслеживаются по дате шаблона и результата) в php код. Интерпретатор все равно быстрее. Плюс на халяву можно получить кэширование готовых страниц. А возможностей в языке шаблоном очень много, к тому легко пишутся расширения.
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Раньше — да. Сейчас там есть ООП, но какое-то жутко непривычное и странное (я С++-шник)
Нее... Это раньше было странное (мягко говоря). В PHP5 они наконец-то сделали по уму, почти "как у всех". Чего мне теперь дико не хватает — это компиляции с проверкой имен и прочего. Люблю я опечатываться, но не люблю, когда это поздно вылезает.
Слава Шевцов wrote: >> > C>Нет. Java будет уступать только если сам автор не знает Java. >> > Попрошу уточнить: какой именно стаж нужен? > C>Не знаю, все от программиста зависит. Ну обычно хотя бы пол-года. > Пол года мало. Я с 3 месяцами стажа даже в страшном сне не видел > написание простого сайта на Java
Если программист грамотный и со знанием web-технологий, то может и
нескольких недель хватить.
> C>То есть просто выводить текст страницы. > Зачем? Для каждого из сайтов я сделал набор шаблонов в виде html-файлов. > В шаблоны поместил метки, которые заменяю налету на данные и на выходе > получаю готовые страницы.
А без разницы. Вот, предположим, у вас задача — сделать страницу с двумя
прокручиваемыми списками (то есть размазаных на несколько web-страниц с
кнопками "назад/вперед") по 200 экземпляров в каждом. Как вы это будете
делать? А если эти списки еще и редактируются?
Или другой вариант — сайт с конфигурируемыми личными виджетами. То есть
чтобы я мог себе сделать персональный вид с лентой новостей, свежими
голосованиями с RSDN и т.п. На Java делается элементарно — на PHP/Perl
придется это делать врукопашную.
> То есть представление (html), данные (MySQL) и код (PHP/Perl) полностью > разделены.
В данном примере они просто отделены по разным файлам, но все равно связаны.
> Всё это возможно на Java. И даже на С/С++. Но код будет длиннее и цикл > "обнаружение бага-исправление-тестирование" будет удлинён на стадию > "компиляция".
Нет, на Java данный пример будет выглядеть так:
<%@ page contentType="text/html" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>tag_title</TITLE>
<LINK href="/stylesheet.css" type=text/css rel=stylesheet>
</HEAD><BODY>
<H1><%=tag_header></H1>
<DIV class=path><%=tag_path></div>
<DIV class=body><DIV class=body3><%=tag_body></DIV></DIV>
</BODY></HTML>
Это "вывернутый" код на Java, при первом посещении страница компилится в
байт-код и выполняется. Большинство app-серверов поддерживают
автоматическую перекомпиляцию при изменении.
Но тут уже получается гораздо интереснее, например, я могу сделать так:
<%@ page contentType="text/html" %>
<%@ taglib prefix="o" uri="http://elewise.com/components/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>tag_title</TITLE>
<LINK href="/stylesheet.css" type=text/css rel=stylesheet>
</HEAD><BODY>
<H1><%=tag_header></H1>
<DIV class=path><%=tag_path></div>
<DIV class=body><DIV class=body3><o:scheduler
bind="cookie"/></DIV></DIV>
</BODY></HTML>
Это магически вставит наш контрол дневника, который сохраняет данные в
пользователя в cookie (а можно привязать и к БД).
Контрол, естественно, не простой javascript, а достаточно сложный
компонент с большой частью на server-side.
> Для малых сайтов, естественно, через шаблоны. И нагляднее, и быстрее, и > технология проще, и программисты дешевле, и менять вид сайта можно > поручить дизайнеру. А функция замены подстроки в шаблоне во всех языках > работает с одинаковой скоростью
Кстати, файлы страниц Tapestry/JSF — это валидный HTML, который
замечательно правится дизайнерами.
> Для крупных я бы брал ASP.NET + MS SQL или PHP + MySQL. Практика > показывает, что почему-то основная масса средних и крупных сайтов > создаётся именно на этих технологиях.
ASP.NET — просто проPRен, технологически он не лучше Java.
С ASP.NET еще другая проблема — есть куча программистов, гордо пишущих
"Знание ASP.NET" в резюме. А на деле они просто умеют в дизайнере
перетаскивать кнопки, без понимания как оно все работает.
Здравствуйте, Cyberax, Вы писали:
C>Нет, на Java данный пример будет выглядеть так: C>
C><%@ page contentType="text/html" %>
C><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
C><HTML><HEAD><TITLE>tag_title</TITLE>
C><LINK href="/stylesheet.css" type=text/css rel=stylesheet>
C></HEAD><BODY>
C><H1><%=tag_header></H1>
C><DIV class=path><%=tag_path></div>
C><DIV class=body><DIV class=body3><%=tag_body></DIV></DIV>
C></BODY></HTML>
C>
C>Это "вывернутый" код на Java, при первом посещении страница компилится в C>байт-код и выполняется. Большинство app-серверов поддерживают C>автоматическую перекомпиляцию при изменении.
C>Но тут уже получается гораздо интереснее, например, я могу сделать так: C>
C><%@ page contentType="text/html" %>
C><%@ taglib prefix="o" uri="http://elewise.com/components/core"%>
C><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
C><HTML><HEAD><TITLE>tag_title</TITLE>
C><LINK href="/stylesheet.css" type=text/css rel=stylesheet>
C></HEAD><BODY>
C><H1><%=tag_header></H1>
C><DIV class=path><%=tag_path></div>
C><DIV class=body><DIV class=body3><o:scheduler
C>bind="cookie"/></DIV></DIV>
C></BODY></HTML>
C>
C>Это магически вставит наш контрол дневника, который сохраняет данные в C>пользователя в cookie (а можно привязать и к БД).
C>Контрол, естественно, не простой javascript, а достаточно сложный C>компонент с большой частью на server-side.
Очень похоже на smarty в php. Разве что готовой достаточно большой библиотеки контролов нет (если я правильно понял про таглиб), точнее я не встречал. В том числе с компиляцией при первом обращении. По-моему твои проблемы в php надуманы. У меня не работает неправильно написанный пхп код — это не причина ругать пхп. Под java/asp есть удобные библиотеки — это не значит, что их нет в php. Если уж ругать какой-либо язык, то надо знать положение дел в нем.
__MasteR__ wrote: > C>Контрол, естественно, не простой javascript, а достаточно сложный > C>компонент с большой частью на server-side. > Очень похоже на smarty в php.
Даже близко не похоже. Smarty — это template-движок, хотя и очень
мощный. В Java есть симметричный ответ для него — Jakarta Velocity.
JSF — это _компонентный_ фреймоворк. То есть когда я пишу контрол (тот
же scheduler), то я могу привзывать к нему обработчики события.
К форме на странице привязана модель данных. Если пользователь жмет на
странице кнопку, то сабмитится форма, а на сервере вызывается
соответствующий обработчик события нажатия на кнопку. В обработичке я
могу поменять что-то в модели страницы и вернуться на страницу (или
перейти на другую), при этом измененные данные отобразятся в браузере
пользователя.
Все это сделано в виде достаточно абстрактного механизма, с кучей
полезных довесок. Например, я могу декларативно поставить валидаторы на
поля, которые сначала будут проверять правильность ввода в JavaScript'е
(чтобы лишний раз форму не посылать) _и_ перед изменением данных модели
уже на сервере.
Кстати, есть еще и другие интересные подходы к Web'у — представление
навигации в виде continuation'ов. На эту тему можно посмотреть Apache
Cocoon или Seaside (http://www.seaside.st/) для Smalltalk.
Здравствуйте, Cyberax, Вы писали:
>> C>А без разницы. Все равно вся та же текстовая замена. В случае с libxsl >> C>еще и придется в valid xml все делать. >> Автоматически мэппя объекты на DOM — получить невалидный xml надо >> постараться. C>Задача: отобразить результат запроса (100000 элементов) в таблице. Чем C>вам тут DOM поможет в организации paging'а?
Он заставит задуматся о рациональности вывода 100 000 элементов в одной таблице на одной странице.
Здравствуйте, __MasteR__, Вы писали:
СШ>>То есть представление (html), данные (MySQL) и код (PHP/Perl) полностью разделены. В случае чего я меняю html-шаблон (вставляю рекламу, ссылки или меняю структуру страницы), а код не трогаю. Это намного удобнее, чем собирать html прямо в коде. Кроме того, это позволяет удалять из страниц лишние пробелы, табуляции и признаки конца строк, что уменьшает объём отдаваемого пользователю html ~ на 10%.
__M>Только лучше взять готовый smarty и не мучаться. Насчет замены строк там все круче. Он написанный html-шаблон переводит при первом использовании (изменения отслеживаются по дате шаблона и результата) в php код. Интерпретатор все равно быстрее. Плюс на халяву можно получить кэширование готовых страниц. А возможностей в языке шаблоном очень много, к тому легко пишутся расширения.
Согласен. Минус лишь в том, что за это придётся заплатить временем на обучение. Хотя кеширование это значительный плюс при больших нагрузках.
Слава Шевцов wrote: >> > Автоматически мэппя объекты на DOM — получить невалидный xml надо >> > постараться. > C>Задача: отобразить результат запроса (100000 элементов) в таблице. Чем > C>вам тут DOM поможет в организации paging'а? > Он заставит задуматся о рациональности вывода 100 000 элементов в одной > таблице на одной странице.
Кто говорит про одну страницу? Одновременно видимо 20-100 записей.
Стандартный вариант — большая база, в которой можно делать поиск.
Результат поиска может быть достаточно большой.
Здравствуйте, Cyberax, Вы писали:
C>Задача: отобразить результат запроса (100000 элементов) в таблице. Чем вам тут DOM поможет в организации paging'а? C>Стандартный вариант — большая база, в которой можно делать поиск. Результат поиска может быть достаточно большой.
Можно поподробнее, как это делается на Java? ИМХО задача разбивается на следующие:
1. Выборка из базы подмножества для страницы. Если мне нужно разбивать по страницам результаты сложного запроса, то я так или иначе должен буду указать "select .... limit N,M" (мускуль, прости господи), или что-то аналогичное, будь то java или не java. То есть, эта работа в любом случае ложится на SQL сервер. Так?
2. Форматированный вывод rowset в таблицу. Тут возможно существование всяких удобных заготовок для таблиц, с подсветкой, например, четных/нечетных/текущих строк/столбцов и т.п. Хотя эти вещи достаточно легко и очень гибко делаются на XSLT, при отсутствии зависимости от фиксированного набора заготовок.
3. Формат URL и контролы для постраничной навигации. Могут очень сильно отличаться от проекта к проекту, от дизайна к дизайну. Разве можно свести всё возможное многообразие к чему-то более общему, чем обычный шаблонизатор?
Страница {pageno} из {pagecount}. Строк всего {rowcount}, на странице {pagesize}....
Дм.Григорьев wrote: > 1. *Выборка из базы подмножества для страницы.* Если мне нужно разбивать > по страницам результаты сложного запроса, то я так или иначе должен буду > указать "select .... limit N,M" (мускуль, прости господи), или что-то > аналогичное, будь то java или не java. То есть, эта работа в любом > случае ложится на SQL сервер. Так?
Да. Как вариант — результаты запроса целиком кэшируются на сервере, это
имеет смысл, если запрос не может быть тривиально разделен на страницы.
> 2. *Форматированный вывод rowset в таблицу.* Тут возможно существование > всяких удобных заготовок для таблиц, с подсветкой, например, > четных/нечетных/текущих строк/столбцов и т.п. Хотя эти вещи достаточно > легко и очень гибко делаются на XSLT, при отсутствии зависимости от > фиксированного набора заготовок.
Во-первых, в таблице можно отображать _любые_ объекты. В том числе и
набор колонок из запроса, отображением можно управлять практически как
угодно (в том числе и с помощью XSLT).
> 3. *Формат URL и контролы для постраничной навигации.* Могут очень > сильно отличаться от проекта к проекту, от дизайна к дизайну. Разве > можно свести всё возможное многообразие к чему-то более общему, чем > обычный шаблонизатор?
Можно, в этом-то все и дело. Tapestry/JSF настолько гибкие, что с их
помощью можно практически любой дизайн отобразить. Ну а если что-то уж
совсем странное нужно — то всегда можно спуститься на уровень
непосредственной генерации HTML.
Например, Tapestry/JSF поддерживают кастомизируемые парсеры URLов и
короткие URLы, прозрачно поддерживаются сессии. Недавно в Tapestry
начали добавлять поддержку forked sessions.
> Страница {pageno} из {pagecount}. Строк всего {rowcount}, на странице {pagesize}....
А в виде набора иерархических табов нарисовать?
Спасибо. Ещё один вопрос — требования к софту на сервере (Apache/Linux). В частности, нужны ли какие-либо службы (Tomcat, etc), или же это всё может стартовать как CGI, или можно по-всякому?
Дм.Григорьев wrote: > Спасибо. Ещё один вопрос — требования к софту на сервере (Apache/Linux). > В частности, нужны ли какие-либо службы (Tomcat, etc), или же это всё > может стартовать как CGI, или можно по-всякому?
Нужен какой-нибудь сервер приложений. Из свободный самый лучший — Tomcat.
Tomcat может работать как полностью автономный web-сервер (рекомендую
начать с этого), так и может работать в связке с Apache'ем с помощью
специального модуля (mod_ajp, если мне склероз не изменяет). При этом
Apache используется для выдачи статического контента, модули есть для
серий 1.3 и 2.х.
При _большом_ желании можно использовать JSP-страницы как CGI, но лучше
так не делать.
Для связи с базой используется JDBC (Java DataBase Connectivity). Для
всех нормальных баз (Oracle, MySQL, Postgres, SapDB, FireBird...)
драйвера JDBC идут в комплекте с самой базой. Есть одно исключение — для
MSSQL официальные JDBC-драйвера появились только недавно.
Здравствуйте, Cyberax, Вы писали:
C>Дм.Григорьев wrote: >> Спасибо. Ещё один вопрос — требования к софту на сервере (Apache/Linux). >> В частности, нужны ли какие-либо службы (Tomcat, etc), или же это всё >> может стартовать как CGI, или можно по-всякому? C>Нужен какой-нибудь сервер приложений. Из свободный самый лучший — Tomcat.
Томкат — только сервлет контейнер... Если говорить о лучшем бесплатном сервере приложений, то я бы назвал JBoss.
C>JSF — это _компонентный_ фреймоворк. То есть когда я пишу контрол (тот C>же scheduler), то я могу привзывать к нему обработчики события.
C>К форме на странице привязана модель данных. Если пользователь жмет на C>странице кнопку, то сабмитится форма, а на сервере вызывается C>соответствующий обработчик события нажатия на кнопку. В обработичке я C>могу поменять что-то в модели страницы и вернуться на страницу (или C>перейти на другую), при этом измененные данные отобразятся в браузере C>пользователя.
СШ>Тоже не знаю. Транслятор компилит, при отладке не ругается. Но явно что-то не то. Кстати, опустить знак $ я бы просто не додумался. Спасибо ты подсказал.
СШ>Написал ряд сайтиков на Perl и PHP. PHP это какой-то кошмар, а не язык. ... Плюнул и переписал все 15 кб кода на Perl.
Полностью поддерживаю. Я изучал PHP после Перла и когда обнаружил "почти-то-же-самое", но в какой-то бредовой форме, плюнул и остался на Перл.
СШ>Perl куда удобнее. Но перлистов в России не найти днём с огнём, а PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на уродствах типа PHP, а на красивом и понятном Perl нет?
Потому что Перл — это СЛОЖНЫЙ ЯЗЫК для тех, кто ещё вчера изучил HTML. А сайт делать уже надо... Вот и клепают на чём побыстрее (хотя предполагаю, скорее просто юзают готовые куски).
Главное — не вертеть головой и продолжать осваивать Перл — профессионал на Перле ценнее даже сотни ASP-шников.
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Perl куда удобнее. Но перлистов в России не найти днём с огнём, а PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на уродствах типа PHP, а на красивом и понятном Perl нет?
Сам я являюсь жутким поклонником Perl’а. А PHP просто из-за принципа учить (даже смотреть) не хочу. Ибо нет ничего такого, IMO, что можно сделать на PHP и нельзя на Perl.
Perl — в первую очередь язык сисадмина. Но прекрасно подходит и для Веба. Когда как PHP был сделан только для Веба. Вот и цепляються к нему все новички.
Те некоторые вещи, что можно сделать на PHP одной строчкой, а на Perl несколькими — не показатель крутости. Ибо Perl в первую очередь универсальный язык!
Кста, читатель наверняка знает, что первый PHP был «написан» на Perl. Типа такой себе библиотеки или точнее парсера позволяющего вести статистику посещаймости и обратной связи (подробностей не помню, могу ошибаться). А уж потом был переписан полноценный интерпритатор на Си. И Personal Home Page превратился в PHP Hypertext Preproccesor (так вроде, да?)
Началось все достаточно давно.
Когда я впервые пришел на работу, среди VBA кода макросов оказался сайт, который нао было поддерживать. Сначала сайт был на HTML и мне припарило вручную править таблицы. Изучив азы PHP я наклепал простенькую БД и начал ее выводить. Проблем и гемора стало намного меньше. Порадовавшись сему, я начал глубже изучать PHP и JS (для клиентской части) и в результате, через некоторое время, для меня исчезли неразрешимые задачи WEBa. На некоторое время, пока база имела 200 записей.
Потом, мы бросили заниматься фигней, и начали делать ПРОЕКТ. Этот проект заставил меня понять, что PHP — легкое подобие скриптового языка, пригодное только для написания хомяковых сайтов.
Пришел куратор проекта и сказал, что будем использовать ASP.NET (Благо C# я знал на тот момент 1,5 года и неплохо понимал, что есть .NET)
Господа, скажу я вам вот что. Настолько красивого способа манипулирования данными через WEB я не видел. 2 прослойки — для доступа к базе и бизнес прослойка — и создание интерфейса — всего лишь биндинг данных на нужные контролы.
Итог — за 2 месяца написано такое, о чем я на PHP не мог и помыслить!
Резюмирую:
Не буду спорить, что лучше JAVA или ASP.NET, могу сказать только одно
PHP как и Perl используются не для серьезных проектов. PHP более детский, Perl более продвинутый, но они не имеют одной детали, которая существует в .NET — в них нет прокладки, которая позволяет полностью абстрагироваться от HTML кодинга и главное, не позволяет использовать эти контролы, как обычные WinControls.
Даже несмотря на ту тьму темплейтов, модулей, классов, дополнений, которые выпущенны для этих языков они не могут полностью абстрагироваться от HTML.
ASP.NET такую абстракцию дает. Я сейчас занят не вопросом, как реализовать постраничный вывод данных, я просто бросаю на форму DataGrid и начинаю править код логики доступа к данным, или бизнес логики, или БД, не затрачивая кучу времени на вывод.
P.S. Я где-нибудь сказал, что Perl или PHP мертвы? Отнюдь, они и будут оставаться очень популярными, благодаря бесплатности. И простоте использования в небольших проектах.
Здравствуйте, Reist, Вы писали:
R>Потом, мы бросили заниматься фигней, и начали делать ПРОЕКТ. Этот проект заставил меня понять, что PHP — легкое подобие скриптового языка, пригодное только для написания хомяковых сайтов.
Это повидимому был вообще первый ваш ПРОЕКТ...
R>Пришел куратор проекта и сказал, что будем использовать ASP.NET (Благо C# я знал на тот момент 1,5 года и неплохо понимал, что есть .NET)
Денег наверно много...
R>Господа, скажу я вам вот что. Настолько красивого способа манипулирования данными через WEB я не видел. 2 прослойки — для доступа к базе и бизнес прослойка — и создание интерфейса — всего лишь биндинг данных на нужные контролы. R>Итог — за 2 месяца написано такое, о чем я на PHP не мог и помыслить!
Ура! Написаны новости, БД товаров и вывод этой БД в веб с картинками!
Нет? чтоже вы тогда настолько крутое написали?
R>Резюмирую: R>Не буду спорить, что лучше JAVA или ASP.NET, могу сказать только одно R>PHP как и Perl используются не для серьезных проектов.
Ну да. sourceforge наверно тоже на аспе написан
R>PHP более детский, Perl более продвинутый, но они не имеют одной детали, которая существует в .NET — в них нет прокладки, которая позволяет полностью абстрагироваться от HTML кодинга и главное, не позволяет использовать эти контролы, как обычные WinControls.
А почему у меня получилось?
R>Даже несмотря на ту тьму темплейтов, модулей, классов, дополнений, которые выпущенны для этих языков они не могут полностью абстрагироваться от HTML. Дааа....
R>ASP.NET такую абстракцию дает. Я сейчас занят не вопросом, как реализовать постраничный вывод данных, я просто бросаю на форму DataGrid и начинаю править код логики доступа к данным, или бизнес логики, или БД, не затрачивая кучу времени на вывод.
Нуда. В итоге IE only....
R>P.S. Я где-нибудь сказал, что Perl или PHP мертвы? Отнюдь, они и будут оставаться очень популярными, благодаря бесплатности. И простоте использования в небольших проектах.
Не забывай, это ~95% проектов.
[RSDN@Home][1.2.0][alpha][648]
[Дурацкий колпак мозгов не портит. [В. Шекспир]]
Sheridan wrote: > R>Итог — за 2 месяца написано такое, о чем я на PHP не мог и помыслить! > Ура! Написаны новости, БД товаров и вывод этой БД в веб с картинками! > Нет? чтоже вы тогда настолько крутое написали?
Могу свидетельствовать, за пару месяцев с крутыми фреймворками на Java
(Tapestry+Hibernate) или на ASP.NET пишется такое, что на PHP будет
писаться намного дольше. Просто из-за того, что фреймворк берет на себя
большую часть сложности.
> R>Даже несмотря на ту тьму темплейтов, модулей, классов, дополнений, > которые выпущенны для этих языков они не могут полностью > абстрагироваться от HTML. > Дааа....
Не могут. Для PHP/Perl есть попытки сделать MVC-систему, но они пока
далеко не ушли (в основном из-за стиля программирования "а вот ща мы
здесь SQL воткнем и все ОК").
> R>ASP.NET такую абстракцию дает. Я сейчас занят не вопросом, как > реализовать постраничный вывод данных, я просто бросаю на форму DataGrid > и начинаю править код логики доступа к данным, или бизнес логики, или > БД, не затрачивая кучу времени на вывод. > Нуда. В итоге IE only....
Из .NET выходит обычный HTML, и это уже задача программиста контролов,
чтобы он нормально отображался везде.
> R>P.S. Я где-нибудь сказал, что Perl или PHP мертвы? Отнюдь, они и будут > оставаться очень популярными, благодаря бесплатности. И простоте > использования в небольших проектах. > Не забывай, это ~95% проектов.
Ну да, а VB-программистов — 10 миллионов. И что?
Здравствуйте, Cyberax, Вы писали:
C>Могу свидетельствовать, за пару месяцев с крутыми фреймворками на Java C>(Tapestry+Hibernate) или на ASP.NET пишется такое, что на PHP будет C>писаться намного дольше. Просто из-за того, что фреймворк берет на себя C>большую часть сложности. Могу засвидетельствовать — это не суть проекта. Что написали?
C>Не могут. Для PHP/Perl есть попытки сделать MVC-систему, но они пока C>далеко не ушли (в основном из-за стиля программирования "а вот ща мы C>здесь SQL воткнем и все ОК").
Не понял...
C>Из .NET выходит обычный HTML, и это уже задача программиста контролов, C>чтобы он нормально отображался везде.
Из пхп тоже выходит обычный HTML... И тоже можно сделать чтобы контролы зависели от отдельного программера...
>> Не забывай, это ~95% проектов. C>Ну да, а VB-программистов — 10 миллионов. И что? уже намного меньше. Почти все ушли в C#
[RSDN@Home][1.2.0][alpha][648]
[...Узнаешь рожденных от крови! [Овидий]]
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, Reist, Вы писали:
R>>Потом, мы бросили заниматься фигней, и начали делать ПРОЕКТ. Этот проект заставил меня понять, что PHP — легкое подобие скриптового языка, пригодное только для написания хомяковых сайтов. S>Это повидимому был вообще первый ваш ПРОЕКТ...
Да, и что?
R>>Пришел куратор проекта и сказал, что будем использовать ASP.NET (Благо C# я знал на тот момент 1,5 года и неплохо понимал, что есть .NET) S>Денег наверно много...
Причем здесь деньги, понять не могу.
R>>Господа, скажу я вам вот что. Настолько красивого способа манипулирования данными через WEB я не видел. 2 прослойки — для доступа к базе и бизнес прослойка — и создание интерфейса — всего лишь биндинг данных на нужные контролы. R>>Итог — за 2 месяца написано такое, о чем я на PHP не мог и помыслить! S>Ура! Написаны новости, БД товаров и вывод этой БД в веб с картинками! S>Нет? чтоже вы тогда настолько крутое написали?
Нет, основная часть работы — прослойка, которая создает объектное отображение БД, и позволяетв коде вообще забыть о том, какая там БД, и как она пашет.
R>>Резюмирую: R>>Не буду спорить, что лучше JAVA или ASP.NET, могу сказать только одно R>>PHP как и Perl используются не для серьезных проектов. S>Ну да. sourceforge наверно тоже на аспе написан
здесь
R>>PHP более детский, Perl более продвинутый, но они не имеют одной детали, которая существует в .NET — в них нет прокладки, которая позволяет полностью абстрагироваться от HTML кодинга и главное, не позволяет использовать эти контролы, как обычные WinControls. S>А почему у меня получилось?
Какой кровью?
R>>Даже несмотря на ту тьму темплейтов, модулей, классов, дополнений, которые выпущенны для этих языков они не могут полностью абстрагироваться от HTML. S> Дааа....
Вот, вот, в этом я с вами полностью соглашусь
R>>ASP.NET такую абстракцию дает. Я сейчас занят не вопросом, как реализовать постраничный вывод данных, я просто бросаю на форму DataGrid и начинаю править код логики доступа к данным, или бизнес логики, или БД, не затрачивая кучу времени на вывод. S>Нуда. В итоге IE only....
И? Контенгент пользователей таков, что 99% называют браузер словом "Интернет"
R>>P.S. Я где-нибудь сказал, что Perl или PHP мертвы? Отнюдь, они и будут оставаться очень популярными, благодаря бесплатности. И простоте использования в небольших проектах. S>Не забывай, это ~95% проектов.
Согласен, в интернете сейчас тенденция к развитию мелких и средних проектов, фактически, любой Вася Пупкин после пары месяцев работы с PHP напишет CMS
Sheridan wrote: > C>Могу свидетельствовать, за пару месяцев с крутыми фреймворками на Java > C>(Tapestry+Hibernate) или на ASP.NET пишется такое, что на PHP будет > C>писаться намного дольше. Просто из-за того, что фреймворк берет на себя > C>большую часть сложности. > *Могу засвидетельствовать* — это не суть проекта. Что написали?
Часть системы документоборота для одной очень крупной нефтяной компании.
Больше сказать не могу — NDA.
На PHP это писалось бы раз в 10 дольше из-за того, что сначала пришлось
бы написать на нем что-то типа Struts, а потом только писать само
приложение. DB mapping layer тоже пришлось бы писать самому...
> C>Не могут. Для PHP/Perl есть попытки сделать MVC-систему, но они пока > C>далеко не ушли (в основном из-за стиля программирования "а вот ща мы > C>здесь SQL воткнем и все ОК"). > Не понял...
SQL в коде шаблонов страниц в Tapestry/JSF/Struts считается плохим
тоном, как и прямая привязка к результатам запросов. А PHP без этого
писать очень сложно.
> C>Из .NET выходит обычный HTML, и это уже задача программиста контролов, > C>чтобы он нормально отображался везде. > Из пхп тоже выходит обычный HTML... И тоже можно сделать чтобы контролы > зависели от отдельного программера...
Наааааамного сложнее. Контролы на PHP делаются на уровне включения в
вывод результатов работы какой-то функции, нет общей модели компонентов
страницы.
Здравствуйте, Reist, Вы писали:
S>>Это повидимому был вообще первый ваш ПРОЕКТ... R>Да, и что?
Да просто столько радости
На самом деле я рад за тебя Когда чтото получается это очень хорошо.
R>>>Пришел куратор проекта и сказал, что будем использовать ASP.NET (Благо C# я знал на тот момент 1,5 года и неплохо понимал, что есть .NET) S>>Денег наверно много... R>Причем здесь деньги, понять не могу.
Софт, рабочее время и железо под асп стоят на порядок дороже.
S>>Нет? чтоже вы тогда настолько крутое написали? R>Нет, основная часть работы — прослойка, которая создает объектное отображение БД, и позволяетв коде вообще забыть о том, какая там БД, и как она пашет.
Я делал подобное на пхп. Ничего сложного. Все зависит от требуемой степени абстракции.
R>>>Резюмирую: R>>>Не буду спорить, что лучше JAVA или ASP.NET, могу сказать только одно R>>>PHP как и Perl используются не для серьезных проектов. S>>Ну да. sourceforge наверно тоже на аспе написан
R>здесь
Янедекс на перле: Apache/1.3.29 (Unix) mod_perl/1.29 mod_deflate/1.0.21 rus/PL30.19 http://www.kde-apps.org/ на пхп http://www.cross-browser.com/ этот сайт ты должен знать — на пхп http://freshmeat.net/ на пхп http://www.nnm.ru/ насколько я помню тоже php http://www.ixbt.com/ тоже как я понял пхп
R>>>PHP более детский, Perl более продвинутый, но они не имеют одной детали, которая существует в .NET — в них нет прокладки, которая позволяет полностью абстрагироваться от HTML кодинга и главное, не позволяет использовать эти контролы, как обычные WinControls. S>>А почему у меня получилось? R>Какой кровью?
Пару часов на базуовую версию + по мере необходимости. Честно говоря абстрагировал только формы, для остального не вижу смысла.
R>И? Контенгент пользователей таков, что 99% называют браузер словом "Интернет"
А ты на них не ориентируйся. Делай как я. Пропускай готовое через tidy
S>>Не забывай, это ~95% проектов. R>Согласен, в интернете сейчас тенденция к развитию мелких и средних проектов, фактически, любой Вася Пупкин после пары месяцев работы с PHP напишет CMS
Угу, а сколько надо асп учить и сколько оно стоит???
[RSDN@Home][1.2.0][alpha][648]
[Доброта лучше красоты. [Г. Гейне]]
>> C>Не могут. Для PHP/Perl есть попытки сделать MVC-систему, но они пока >> C>далеко не ушли (в основном из-за стиля программирования "а вот ща мы >> C>здесь SQL воткнем и все ОК"). >> Не понял... C>SQL в коде шаблонов страниц в Tapestry/JSF/Struts считается плохим C>тоном, как и прямая привязка к результатам запросов. А PHP без этого C>писать очень сложно.
PRADO Smarty
>> C>Из .NET выходит обычный HTML, и это уже задача программиста контролов, >> C>чтобы он нормально отображался везде. >> Из пхп тоже выходит обычный HTML... И тоже можно сделать чтобы контролы >> зависели от отдельного программера... C>Наааааамного сложнее. Контролы на PHP делаются на уровне включения в C>вывод результатов работы какой-то функции, нет общей модели компонентов C>страницы.
Но замечу, что многие замечания в отношении РНР совершенно справедливы. Особенно это касается унифицированного доступа к БД. Хотя и есть, допустим PEAR::MDB2, но это не совсем то
R>>>Резюмирую: R>>>Не буду спорить, что лучше JAVA или ASP.NET, могу сказать только одно R>>>PHP как и Perl используются не для серьезных проектов. S>>Ну да. sourceforge наверно тоже на аспе написан
R>здесь
Здравствуйте, Sheridan, Вы писали:
S>Здравствуйте, Reist, Вы писали:
[cut]
R>>>>Пришел куратор проекта и сказал, что будем использовать ASP.NET (Благо C# я знал на тот момент 1,5 года и неплохо понимал, что есть .NET) S>>>Денег наверно много... R>>Причем здесь деньги, понять не могу. S>Софт, рабочее время и железо под асп стоят на порядок дороже.
Хехе, а еще есть такое понятие, как лицензионный софт на работе 8-) Машинка позволяет, а за софт проплачено не мной, почему бы не заняться?
S>>>Нет? чтоже вы тогда настолько крутое написали? R>>Нет, основная часть работы — прослойка, которая создает объектное отображение БД, и позволяетв коде вообще забыть о том, какая там БД, и как она пашет. S>Я делал подобное на пхп. Ничего сложного. Все зависит от требуемой степени абстракции.
До уровня объектов, инкапсулирующих таблицы, их поля, а так же методы работы с таблицами + Generic классы, для работы со списками элементов сущностей и привязки их к Data* через IEnumerable интерфейсы.
И? Присмотрись все это — CMS различных размеров. Как таковые сущности у них 2 Пользователь и Пост (Но я не говорю, что всего 2 таблицы в базе). Что надо? В различной степени усложнять эту систему. Как показывает практика Линукса и phpbb — усложнить до невероятных размеров можно все, причем это будет очень неплохо работать, вопрос только вот в чем, рано или поздно кто-нибудь осознает, что дальше усложнять абсолютно бессмысленно, лучше переделать.
R>>>>PHP более детский, Perl более продвинутый, но они не имеют одной детали, которая существует в .NET — в них нет прокладки, которая позволяет полностью абстрагироваться от HTML кодинга и главное, не позволяет использовать эти контролы, как обычные WinControls. S>>>А почему у меня получилось? R>>Какой кровью? S>Пару часов на базуовую версию + по мере необходимости. Честно говоря абстрагировал только формы, для остального не вижу смысла.
Ну... Батенька, как показала моя практика, Data* (DataList, DataGrid, DetailsView итп) абстрагируют все необходимые конртолы для работы с данными, причем как с массивами, так и с отдельными элементами. Переделывание этого на PHP заняло бы просто дичайшую тучу времени. Я не буду объяснять детали, просто чтобы понять, надо увидеть этот уровень абстракции и то, как это реализовано.
Кстати, могу сказать, что Вам дико повезло, ибо избавляться Вам пришлось только от форм.
R>>И? Контенгент пользователей таков, что 99% называют браузер словом "Интернет" S>А ты на них не ориентируйся. Делай как я. Пропускай готовое через tidy
Через tidy будет пропущенна внешняя часть. Та часть, в которой понапихана туча .NET элементов — только для внутреннего пользователя, внешняя часть — HTML+XML+XSLT+JS ну и самую малость ASPX.
S>>>Не забывай, это ~95% проектов. R>>Согласен, в интернете сейчас тенденция к развитию мелких и средних проектов, фактически, любой Вася Пупкин после пары месяцев работы с PHP напишет CMS S>Угу, а сколько надо асп учить и сколько оно стоит???
Значица примерно так.
3000$ — 6000$ за SQL и 4000$ за OS на сервере
+ 6000$ — 11000$ за среду разработки.
Mamut wrote: > C>Наааааамного сложнее. Контролы на PHP делаются на уровне включения в > C>вывод результатов работы какой-то функции, нет общей модели компонентов > C>страницы. > PRADO <http://www.xisc.com>
Вот это уже что-то:
The very original inspiration of PRADO came from Apache Tapestry.
During the design and implementation, I borrowed many ideas from Borland
Delphi and Microsoft ASP.NET. The first version of PRADO came out in
June 2004 and was written in PHP 4. Driven by the Zend PHP 5 coding
contest, I rewrote PRADO in PHP 5, which proved to be a wise move,
thanks to the new object model provided by PHP 5.
После быстрого просмотра док — они пока занимаются повторением Tapestry
2.x. Это вполне неплохо, но уже Tapestry 3.0 вышла Ну и на этом пути
им еще предстоит переписать Hibernate, потом открыть возможности IOC и
переписать Spring и т.п.
Правда если такими темпами пойдет дальше, то PHP не будет отличаться от
Java.
> Smarty <http://smarty.php.net>
То же "включение текста в страницу" — то есть абстрагирована только
логика форматирования. Изобретено уже раз 100 в виде Perl::Mason, Apache
Velocity и т.п.
C>Правда если такими темпами пойдет дальше, то PHP не будет отличаться от C>Java.
И, скорее всего, его вытеснит Ruby
Тут по-секрету скажу, что я сам недоволен тем, как РНР развивалось или, вернее, стагнировало после четвертой версии.
РНР5 было полумерой. Ни Юникод, ни прозрачный доступ к базам данных они не встроили, а на одном ООП и mysqli далеко не уедешь. РНР6 когда (если) выйдет, он уже, возможно, никому не нужен будет
Mamut wrote: > C>Правда если такими темпами пойдет дальше, то PHP не будет отличаться от > C>Java. > И, скорее всего, его вытеснит Ruby
Из ниши которую сейчас занимает PHP — вполне может.
Но серьезных разработок для Ruby я что-то не вижу. RoR — это нечто
overhype'нутое, поддерживающее все современные buzzword'ы, но не особо
приспособленое для сложных проектов.
> Тут по-секрету скажу, что я сам недоволен тем, как РНР развивалось или, > вернее, стагнировало после четвертой версии.
Как хорошо, что я даже не притрагиваюсь больше к PHP
> РНР5 было полумерой. Ни Юникод, ни прозрачный доступ к базам данных они > не встроили, а на одном ООП и mysqli далеко не уедешь. РНР6 когда (если) > выйдет, он уже, возможно, никому не нужен будет
Когда выйдет PHP6 уже будет и Perl6
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Написал ряд сайтиков на Perl и PHP. PHP это какой-то кошмар, а не язык. ООП есть, но переменные-атрибуты работают непредсказуемо. Так разобраться и не удалось: потёр все три класса и переписал на функциональном языке. Но оказалось, что передать глобальную переменную в функцию это тоже проблема. Плюнул и переписал все 15 кб кода на Perl.
СШ>Perl куда удобнее. Но перлистов в России не найти днём с огнём, а PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на уродствах типа PHP, а на красивом и понятном Perl нет?
Прошло полтора месяца... Оказалось, что у PHP намного меньше проблем с утечками памяти, чем у Perl: это важно при длительной работе скрипта с большим объёмом разнородных данных. Он может обслужить больше одновременных http-клиентов, чем Perl, за счёт того, что запускаемый скрипт занимает в несколько раз меньше памяти. Есть хорошие библиотеки кеширования страниц и большое количество уже созданных скриптов. Работа с классами организована намного удобнее, чем в Perl. Сообщения об ошибках в логах намного более понятные, чем у Perl. Сообщество программистов велико и велико количество статей по PHP. На Perl уже месяц не писал и подумываю о полном переходе именно на PHP.
Здравствуйте, anton_t, Вы писали:
_>Здравствуйте, ironwit, Вы писали:
I>>Здравствуйте, anton_t, Вы писали:
_>>>nnm.ru то ещё глюкалово.
I>>а это зависит от используемого языка?
_>А что зависит от приведённого списка?
список был просто как пример того что можно хоть чтото сделать, Вы же сразу указали на глюки — ИМХО глюки зависят не от языка а от рук.
Здравствуйте, ironwit, Вы писали:
_>>>>nnm.ru то ещё глюкалово.
I>>>а это зависит от используемого языка?
_>>А что зависит от приведённого списка?
I>список был просто как пример того что можно хоть чтото сделать, Вы же сразу указали на глюки — ИМХО глюки зависят не от языка а от рук.
И от языка тоже зависят. Например, неужели кто-то будет обрабатывать очень большие объёмы данных на Perl? Тот просто упадёт от утечек памяти. И никакими руками это не выправить. PHP обработает раз в сто больше данных и тоже упадёт.
Другой вариант: Perl не является обратно совместимым языком. Не факт, что скрипт для Perl 5.005 будет работать на более современных версиях так же. Не факт, что он вообще будет работать. Ошибки могут и отсюда проистекать.
Здравствуйте, Cyberax, Вы писали:
C>На PHP это писалось бы раз в 10 дольше из-за того, что сначала пришлось C>бы написать на нем что-то типа Struts, а потом только писать само C>приложение. DB mapping layer тоже пришлось бы писать самому...
CakePHP(http://cakephp.org)
Symfony(http://symfony-project.com)
jtraub wrote: > C>На PHP это писалось бы раз в 10 дольше из-за того, что сначала пришлось > C>бы написать на нем что-то типа Struts, а потом только писать само > C>приложение. DB mapping layer тоже пришлось бы писать самому... > CakePHP(http://cakephp.org) > Symfony(http://symfony-project.com)
Уже начали изобретать Hibernate? Что же, слегка недооценил PHP...
Здравствуйте, Cyberax, Вы писали:
C>Уже начали изобретать Hibernate? Что же, слегка недооценил PHP...
а что это такое? только в двух словах и не в инет, а то у меня его нет
ironwit wrote: > C>Уже начали изобретать *Hibernate*? Что же, слегка недооценил PHP... > а что это такое? только в двух словах и не в инет, а то у меня его нет
OR-mapper для Java. Причем ОЧЕНЬ мощный.
Позволяет отображать объектную модель на базу данных. Простой и красивый
пример сейчас лень искать, вот из документации:
Cat cat = new DomesticCat();
Cat kitten = new DomesticCat();
Set kittens = new HashSet();
kittens.add(kitten);
cat.setKittens(kittens);
session.persist(cat); //Здесь в базу будет добавлена кошечка и котенок
Здравствуйте, Cyberax, Вы писали:
C>ironwit wrote: >> C>Уже начали изобретать *Hibernate*? Что же, слегка недооценил PHP... >> а что это такое? только в двух словах и не в инет, а то у меня его нет C>OR-mapper для Java. Причем ОЧЕНЬ мощный.
спасибо. интересно. Даже очень. Интересно — есть ли аналог для Delphi
Здравствуйте, Cyberax, Вы писали:
C>Позволяет отображать объектную модель на базу данных. Простой и красивый C>пример сейчас лень искать, вот из документации: C>
C>Cat cat = new DomesticCat();
C>Cat kitten = new DomesticCat();
C>Set kittens = new HashSet();
C>kittens.add(kitten);
C>cat.setKittens(kittens);
C>session.persist(cat); //Здесь в базу будет добавлена кошечка и котенок
C>
/* initialize Propel, etc. */
// 1) Create an Author (row of 'author' table)include_once'bookstore/Author.php';
$author = new Author();
$author->setFirstName("Leo");
$author->setLastName("Tolstoy");
// note: we don't save this yet
// 2) Create a Publisher (row of 'publisher' table)include_once'bookstore/Publisher.php';
$pub = new Publisher();
$pub->setName("Viking Press");
// note: we don't save this yet
// 3) Create a Book (row of 'book' table)include_once'bookstore/Book.php';
$book = new Book();
$book->setTitle("War & Peace");
$book->setIsbn("0140444173");
$book->setPublisher($pub);
$book->setAuthor($author);
$book->save(); // saves all 3 objects!
В CakePHP реализован свой ORM-слой, но тем не менее, код выглядит не менее красиво
особенно со всякими $book->findByIsbn
C>Пока проекты на PHP напоминают проекты на Java где-то 2000-2001 года.
На PHP пишу уже три года. На java не писал ничего(строго говоря, я ее даже в глаза не видел-то ).
Потому судить не могу.
jtraub wrote: > C>Сравните объем: > C>http://propel.phpdb.org/trac/wiki/Users/Documentation/UserGuide > C>и http://www.hibernate.org/hib_docs/v3/reference/en/html/ > Объём докуметации не такое уж хорошее свидетельство того, что PHP сильно > отстал от Java.
Ну сравните по возможностям mapping'а, хотя бы по количеству типов
отображения.
> C>Пока проекты на PHP напоминают проекты на Java где-то 2000-2001 года. > На PHP пишу уже три года. На java не писал ничего(строго говоря, я ее > даже в глаза не видел-то ). Потому судить не могу.
Я на Java пишу с конца 90-х годов и сам видел всю последовательность
развития. Так вот, сейчас PHP в точности проходит всю эту
последовательность.
Через пару лет в PHP мы увидим контейнеры, управляющие транзакциями,
компонентные web-фреймоворки и т.п.
Здравствуйте, ironwit, Вы писали:
I>спасибо. интересно. Даже очень. Интересно — есть ли аналог для Delphi
В рамках Дельфи сделать такое проблематично, говорят
Возможности кодогенерации и RTTI оставляют желать лучшего. Потому можно не рассчитывать увидеть многих фишек.
Но отдельного внимания заслуживает InstantObjects (http://www.instantobjects.org/).
Конечно, там будет не так все круто как в Java/PHP, но тем не менее — удобно!
C>Через пару лет в PHP мы увидим контейнеры, управляющие транзакциями, C>компонентные web-фреймоворки и т.п.
Что же.. Расскажите, чего ждать в PHP в ближайшей перспективе еще.
jtraub wrote: > C>Через пару лет в PHP мы увидим контейнеры, управляющие транзакциями, > C>компонентные web-фреймоворки и т.п. > Что же.. Расскажите, чего ждать в PHP в ближайшей перспективе еще.
Байт-компиляция, возможно, более строгая система типов и JIT. Особенно
актуальным станет после того, как фреймоворки подрастут в размерах.
Появятся фреймворки с декларативным управлением компонентами (аля
Spring), возможно что-то типа EJB.
Здравствуйте, Cyberax, Вы писали:
C>jtraub wrote: >> C>Через пару лет в PHP мы увидим контейнеры, управляющие транзакциями, >> C>компонентные web-фреймоворки и т.п. >> Что же.. Расскажите, чего ждать в PHP в ближайшей перспективе еще. C>Байт-компиляция, возможно, более строгая система типов и JIT. Особенно C>актуальным станет после того, как фреймоворки подрастут в размерах.
Ну еще с 4-ой версиии скрипты при запросе комплируются в байт-код.
Насчет JIT compilation не скажу точно, надо подглядеть Zend-овский сайт.
C>Появятся фреймворки с декларативным управлением компонентами (аля C>Spring), возможно что-то типа EJB.
А можно чуточку подробней?
jtraub wrote: > C>Байт-компиляция, возможно, более строгая система типов и JIT. Особенно > C>актуальным станет после того, как фреймоворки подрастут в размерах. > Ну еще с 4-ой версиии скрипты при запросе комплируются в байт-код.
В том-то и дело, что только при запросе.
> Насчет JIT compilation не скажу точно, надо подглядеть Zend-овский сайт.
Она есть, но пока только за деньги.
> C>Появятся фреймворки с декларативным управлением компонентами (аля > C>Spring), возможно что-то типа EJB. > А можно чуточку подробней?
Spring позволяет декларативно задавать окружение для прикладного кода.
В качестве простого примера на псевдокоде:
//Наш код, делающий что-тоvoid doSomething()
{
//взять соединение с DB. CONNECTION_STRING нам самим надо
//прочитать из конфига.
DatabaseConnection conn=getConnection(CONNECTION_STRING);
try
{
//что-то сделать
conn.executeSql(...);
...
}finally
{
//Обязательно закрыть соединение.
conn.close();
}
}
Если мы забудем finally, то получим утечку соединения. Поэтому применяют
шаблон "Инверсия Управления" (IoC — Inversion of Control):
//Этот код находится в глубине контейнера, хорошо отлажен и проверен
//кучей людейvoid database_wrapper(Runnable task)
{
//Чтением конфига занимается контейнер
DatabaseConnection conn=getConnection(readConfig("db_string"));
//В реальности имя берется из конфига
getThreadContext().addResource("DataBase",conn);
try
{
task.run();
} finally
{
conn.close();
}
}
//Наш кодclass MyTask
{
void run()
{
//Берем соединение из контекста
DatabaseConnection conn=getResource("DataBase");
conn.executeSql(...);
...
}
}
//А вот так мы выполняем наш код
database_wrapper(new MyTask);
То есть контейнер обеспечивает "обертку" для прикладного кода,
освобождая его от необходимости следить за DB, конфигурацией,
транзакциями и т.п.
Здравствуйте, Cyberax, Вы писали:
C>Не могут. Для PHP/Perl есть попытки сделать MVC-систему, но они пока C>далеко не ушли (в основном из-за стиля программирования "а вот ща мы C>здесь SQL воткнем и все ОК").
C>>Не могут. Для PHP/Perl есть попытки сделать MVC-систему, но они пока C>>далеко не ушли (в основном из-за стиля программирования "а вот ща мы C>>здесь SQL воткнем и все ОК").
A>http://catalystframework.org/
Есть еще CakePHP, пытающийся содрать Ruby-on-Rails
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Я про то и говорю: где-то напортачил, а где — фиг его поймёшь. Может на хостинге PHP не так скомпилирован, может версия не та, может $ не нужен, может операционка не нравится, может ещё что. Он же не ругается ни пол словом, только переменные перезаписывает.
Если включить сообщения об ошибках и варринги, — будет ругаться
Писание же твое принято бысть и уразумлено внятельно. (С) Иван IV
Здравствуйте, Kir., Вы писали:
СШ>>Я про то и говорю: где-то напортачил, а где — фиг его поймёшь. Может на хостинге PHP не так скомпилирован, может версия не та, может $ не нужен, может операционка не нравится, может ещё что. Он же не ругается ни пол словом, только переменные перезаписывает.
K>Если включить сообщения об ошибках и варринги, — будет ругаться
Вот и говорю — дурацкая система. Многое по умолчанию работает не так как привычно. Типичный пример — эти самые отключённые варнинги и сообщения об ошибках. Ну какой идиот отключил по умолчанию сообщения об ошибках?
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Вот и говорю — дурацкая система. Многое по умолчанию работает не так как привычно. Типичный пример — эти самые отключённые варнинги и сообщения об ошибках. Ну какой идиот отключил по умолчанию сообщения об ошибках?
Внутренний голос мне подсказывает, что если бы ты впервые столкнулся с пхп, а затем ставил бы что-нибуть другое на сервер, то матерился бы ты на полезшие варнинги больше. Нормальный язык. Ну почему он должен быть похож на яву там или еще что? Пусть будет собой.
P. S. Не в тему, но навеяно предыдущей прочитанной. Ну почему винда придумала свою кодировку вместо общепринятой и до сих пор никак ее не поддерживает. Ну почему в винде придумали свою раскладку клавиатуры вместо уже имеющейся да еще и не поддерживают остальные. Вот и говорю — дуратская система.
Просто godaddy перевел значительную часть своих серверов на Windows. А так как у него хостится пару десятков миллионов сайтов, то отсюда и такие проценты.
Это сообщение написано при активной поддержке silent
Слова, пустые слова, подумал Стормгрен. Слова, за которые прежде люди дрались и умирали, но никогда больше не станут за них ни умирать, ни драться. И от этого мир станет лучше.
Здравствуйте, Слава Шевцов, Вы писали:
СШ>Написал ряд сайтиков на Perl и PHP. PHP это какой-то кошмар, а не язык. ООП есть, но переменные-атрибуты работают непредсказуемо. Так разобраться и не удалось: потёр все три класса и переписал на функциональном языке. Но оказалось, что передать глобальную переменную в функцию это тоже проблема. Плюнул и переписал все 15 кб кода на Perl.
СШ>Perl куда удобнее. Но перлистов в России не найти днём с огнём, а PHP-шники втрое дешевле. Вот и мучайся, человечище. Почему люди пишут на уродствах типа PHP, а на красивом и понятном Perl нет?
"Это родина, сынок". (:
Можете завтра в знак протеста перестать говорить на русском и начать говорить на эсперанто. О результатах доложите.