Культурный офтопик
 help / color / mirror / Atom feed
From: "Денис Смирнов" <mithraen@altlinux.ru>
To: smoke-room@lists.altlinux.org
Subject: Re: [room] Вопрос по PHP (или I Hate PHP)
Date: Tue, 13 Feb 2007 19:16:28 +0300
Message-ID: <20070213161628.GB10549@mw.local.seiros.ru> (raw)
In-Reply-To: <679044850702130421v5bf0759cu82b6409bfb1113ee@mail.gmail.com>

On Tue, Feb 13, 2007 at 03:21:35PM +0300, Damir Shayhutdinov wrote:
>>  - Java категорически не нравится собственно для написания web-приложения.
>>    В общем-то это пофиг, потому как я не ленивый, и сделать некий простой
>>    скриптовый язык из которого генерировать код на жабе я смогу. А где
>>    нужна хоть чуть-чуть нетривиальная логика не выпендриваться, а писать
>>    на жабе;
DS> Есть JSP, есть сервлеты. JSP - это аналог php, только вставки там
DS> делаются не на убогом PHP, а на Java, также есть возможность расширять
DS> синтаксис этого jsp своими "тегами" и есть хорошая интеграция с Java
DS> Beans и сессиями.

Ну сервлеты мне хотя бы понятны. JSP это такой же кошмар что и PHP. Идея
мешать код и данные меня категорически не устраивает. Я сейчас пишу вот
так:

=============================================================================
[requires]
[templates]
tpl => firm_edit.tmpl
[cgi_param]
name
	form	str	default(NULL)
	firmname	str	default(NULL)
param
	do_update	str	default(0)
	id	int	min(0)
update
	uraddr	str	default(NULL)
	ogrn	str	default(NULL)	min(1)
	kpp	str	default(NULL)
	gendir_f	str	default(NULL)
	gendir_i	str	default(NULL)
	gendir_o	str	default(NULL)
	buh_f	str	default(NULL)
	buh_i	str	default(NULL)
	buh_o	str	default(NULL)
[php]
<?php
if( !$edb->is_counteragent_id($param['id']) )
{
	redirect();
	exit();
}

if( $param['do_update'] === 'yes' )
{
	$where['counteragent_id'] = $param['id'];
	$db->update('firms', $update, $where);
	$db->update('counteragents', $name, $where);
	redirect("firm_show.php?id=".$param['id']);
}

$tpl->param($edb->get_counteragent($param['id']));
$tpl->value('accounts', $edb->get_counteragent_active_accounts($param['id']);
=============================================================================

Разумеется код для объекта edb тоже генерирутся из высокоуровневого
описания. cgi_param генерирует констрейнты для проверки валидности
переданых пользователем значений.

На все приложение, в котором используется такой стиль, есть всего
несколько хоть чуточку нетривиальных функций на PHP. Остальное вот в таком
линейном стиле, который запросто можно автоматически сконвертировать хоть
в basic, хоть в haskell.

>>  - Генерировать самому код для JVM -- гм, а что, есть для этого
>>    более-менее удобные средства (типа тех что есть в .NET)? Да ещё и
>>    более-менее эффективные (умеющие задействовать при необходимости фишки
>>    как сановской, так и IBM'овской реализации)?
>>  - То, что считается общепринятым методом разработки web-приложений на
>>    Java мне не нравится ну совсем. JVM поднимается не шустроб поэтому
>>    использовать как CGI нельзя. Остается FastCGI или встраивать в свое
>>    приложение http-сервер. Я псих, и могу пойти даже на второе, хотя
>>    предпочел бы FastCGI. Как я понимаю писать мне его поддержку придется
>>    самостоятельно.
DS> Веб-приложения на Java сделанные в виде сервлетов/JSP отлично
DS> запускаются в среде контейнера сервлетов. То есть для обработки
DS> запроса порождается очередной экземпляр сервлета и вызываются его
DS> методы. Затраты на порождение близки к затратам на вызов метода new +
DS> времени инициализации конструктора.
DS> Контейнер сервлетов Tomcat может подключаться бэкэндом к  апачу (через
DS> jk-коннекторы), и у него уже есть штатный load balancing. А может быть
DS> и обычным веб-сервером, даже с поддержкой https.
DS> Есть еще другие контейнеры - но с ними я особенно не работал, так что не знаю.

(со злобным выражением лица и стуча ложкой по столу) хочу FastCGI!

>> Что мне, кстати, очень понравилось в Java -- очень хороший набор
>> параметризуемых классов для различных структур данных. А также сам подход
>> к ООП с разделением интерфейсов и собственно классов. Удобно это.
DS> Главное не увлекаться.

:) Ну, положим увлекаться с _интерфейсами_ в отличии от наследования
вполне безопасно, и не уродует код.

-- 
С уважением, Денис

http://freesource.info
----------------------------------------------------------------------------
Documentation - The worst part of programming.


  reply	other threads:[~2007-02-13 16:16 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-02-11  1:16 Денис Смирнов
2007-02-11  5:40 ` Anatol B. Bazyukin
2007-02-11 20:43   ` Денис Смирнов
2007-02-12  6:00     ` Eugene Prokopiev
2007-02-13 10:02       ` Денис Смирнов
2007-02-13 12:21         ` Damir Shayhutdinov
2007-02-13 16:16           ` Денис Смирнов [this message]
2007-02-13 16:37             ` Damir Shayhutdinov
2007-02-14 19:07               ` Денис Смирнов
2007-02-14 15:15                 ` Michael Shigorin
2007-02-15 10:45                   ` Денис Смирнов
2007-02-13 18:29         ` Andrey Rahmatullin
2007-02-14 19:03           ` Денис Смирнов
2007-02-14 14:59             ` Andrey Rahmatullin
2007-02-15 10:26               ` Денис Смирнов
2007-02-15 16:02                 ` Andrey Rahmatullin
2007-02-17 11:55                   ` Денис Смирнов
2007-02-14 15:11         ` Michael Shigorin
2007-02-15 10:45           ` Денис Смирнов
2007-02-17 17:22         ` Alexander Borovsky
2007-02-24 11:51           ` Денис Смирнов
2007-02-18 14:22         ` Eugene Prokopiev
2007-02-19  6:40           ` Eugene Prokopiev
2007-02-24 12:02             ` Денис Смирнов
2007-02-24 15:28               ` Eugene Prokopiev
2007-02-25  9:18                 ` Денис Смирнов
2007-02-25 21:55                   ` Eugene Prokopiev
2007-02-25 22:16                     ` Денис Смирнов
2007-02-19 11:02           ` Денис Смирнов

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070213161628.GB10549@mw.local.seiros.ru \
    --to=mithraen@altlinux.ru \
    --cc=smoke-room@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Культурный офтопик

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/smoke-room/0 smoke-room/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 smoke-room smoke-room/ http://lore.altlinux.org/smoke-room \
		smoke-room@lists.altlinux.org smoke-room@lists.altlinux.ru smoke-room@lists.altlinux.com smoke-room@altlinux.ru smoke-room@altlinux.org smoke-room@altlinux.com
	public-inbox-index smoke-room

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.smoke-room


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git