Кто-то тупой, или я или гвозди
Dec. 16th, 2009 03:42 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Сижу изучаю различные варианты реализации middle-tier, который планируется использовать в будущем для нескольких проектов. Решил пересилить свой страх и взглянуть на J2EE. А надо сказать, что для неподготовленного ума ентерпрайз жаба выглядит совершенно ирреально бредовой: миллиарды фреймворков, утилит, серверов, сотни страниц документации, проекты на ней содержат over 9000 папок и мелких исходников и xml-конфигов и вообще я не уверен, что в здравом уме и имея некую начальную свободу выбора инструментов, с этим стоит вообще связываться.
Начал искать что-нибудь вроде "J2EE для начинающих с пошаговыми инструкциями". Нашел AppFuse. Вроде все описано понятно, есть QuickStart, написано откуда качать зависимости, итд, итп. Но таки вы будете смеятся - но я не могу найти, где качать исходники этого дела. Ссылки "Download" на сайте нету.
Я, конечно, счас попытаюсь произвести описанные там вуду-ритуалы, может мавен тот все что нужно сам скачает, но то, что начинать приходится с вуду-действий, как-то печалит.
Вообще говоря, у меня уже есть почти полностью готовая основа для этого миддл-тиера, на которой я бы проект сделал очень быстро: Firebird+Delphi+ASP.NET RESTful веб-сервис. Но проблема в том, что это означает полную и окончательную привязку проектов к виндам, отказ от любых потенциальных работ с юниксами в будущем и сгнаивание мозга до состояния "сеньор-фокспро-девелопер в ВЦ НИИ Говна и Торфа, 50 лет, 30 лет опыта рисования формочек в дизайнере".
Кроме того, если дать объявление "требуется разработчик на дельфи" - приходят такие долбаные мышевозы с паттернами "magic button" что рыдать хочется, соответственно шансов на то, что хотя бы когда-нибудь я займусь только архитектурой и управлением проектами, вместо того, чтобы самостоятельно писать код, внедрять и обслуживать - не останется никаких.
PS: Есть кстати, еще одна, еще более неадекватная альтернатива: сойти с ума и ударится в нетривиальщину вроде ерланга и хаскеля, начать писать самодельный миддл-тиер на чистом С и изобретать прочие велосипеды. То, что это гарантированно будет легче для нервной системы, чем J2EE и ASP.NET, я уверен. Там комьюнити меньше и не будет такого, что половина интернетов забита разнообразными фреймворками, каждый из которых настолько наворочен, что позволяет не писать код, а всего лишь парой сотен xml-конфигов сделать любое приложение.
Я вспоминаю 90-е годы, когда никаких интернетов не было, проекты были более мелкие и выбора "на чем писать" особо не было, можно было велосипеды изобретать хоть годами.
В этом, кстати, и проблема с J2EE - я уверен, что 83% авторов готовых фреймворков думают совершенно не так как я, то бишь неправильно, хаскель не изучали, и вообще делали эти фреймворки по наитию левой задней пятки.
Вот, к примеру: я считаю, что любой, кто сталкивался с статической типизацией и выводом типов, резко перестанет делать проекты "мегапереконфигурируемыми" с помощью сотен xml-конфигов, т.к. это выносит проверку правильности с времени сборки на время деплоймента и запуска. Ошибся в xml-файле в одной букве и вешайся, читай 100-строчные стеки вызовов и это еще хорошо, если у тебя доступ к продакшен-серверу есть.
Начал искать что-нибудь вроде "J2EE для начинающих с пошаговыми инструкциями". Нашел AppFuse. Вроде все описано понятно, есть QuickStart, написано откуда качать зависимости, итд, итп. Но таки вы будете смеятся - но я не могу найти, где качать исходники этого дела. Ссылки "Download" на сайте нету.
Я, конечно, счас попытаюсь произвести описанные там вуду-ритуалы, может мавен тот все что нужно сам скачает, но то, что начинать приходится с вуду-действий, как-то печалит.
Вообще говоря, у меня уже есть почти полностью готовая основа для этого миддл-тиера, на которой я бы проект сделал очень быстро: Firebird+Delphi+ASP.NET RESTful веб-сервис. Но проблема в том, что это означает полную и окончательную привязку проектов к виндам, отказ от любых потенциальных работ с юниксами в будущем и сгнаивание мозга до состояния "сеньор-фокспро-девелопер в ВЦ НИИ Говна и Торфа, 50 лет, 30 лет опыта рисования формочек в дизайнере".
Кроме того, если дать объявление "требуется разработчик на дельфи" - приходят такие долбаные мышевозы с паттернами "magic button" что рыдать хочется, соответственно шансов на то, что хотя бы когда-нибудь я займусь только архитектурой и управлением проектами, вместо того, чтобы самостоятельно писать код, внедрять и обслуживать - не останется никаких.
PS: Есть кстати, еще одна, еще более неадекватная альтернатива: сойти с ума и ударится в нетривиальщину вроде ерланга и хаскеля, начать писать самодельный миддл-тиер на чистом С и изобретать прочие велосипеды. То, что это гарантированно будет легче для нервной системы, чем J2EE и ASP.NET, я уверен. Там комьюнити меньше и не будет такого, что половина интернетов забита разнообразными фреймворками, каждый из которых настолько наворочен, что позволяет не писать код, а всего лишь парой сотен xml-конфигов сделать любое приложение.
Я вспоминаю 90-е годы, когда никаких интернетов не было, проекты были более мелкие и выбора "на чем писать" особо не было, можно было велосипеды изобретать хоть годами.
В этом, кстати, и проблема с J2EE - я уверен, что 83% авторов готовых фреймворков думают совершенно не так как я, то бишь неправильно, хаскель не изучали, и вообще делали эти фреймворки по наитию левой задней пятки.
Вот, к примеру: я считаю, что любой, кто сталкивался с статической типизацией и выводом типов, резко перестанет делать проекты "мегапереконфигурируемыми" с помощью сотен xml-конфигов, т.к. это выносит проверку правильности с времени сборки на время деплоймента и запуска. Ошибся в xml-файле в одной букве и вешайся, читай 100-строчные стеки вызовов и это еще хорошо, если у тебя доступ к продакшен-серверу есть.
no subject
Date: 2009-12-17 02:27 pm (UTC)Так а разве FastCGI нужен для того, чтобы переменные заново не инициализировались?
Я думал, чтобы не делать fork и чтобы файлы каждый раз с диска не читать.
Если не используется pconnect то каждый раз производится переподключение к базе данных.
Да и фиг бы за этим.
pconnect в тех конфигурациях, которые в вебе встречаются, вообще не нужен.
Разница между php-cgi и mod_php в том что во втором случае php у нас висит в памяти и когда надо форкается и выполняет скрипт к которому обратились.
В какой это он памяти висит и куда форкается?
Я бы даже так сказал - а зачем это он форкается, если он уже в памяти висит?
Разница между php-cgi и mod_php, как мне кажется, совсем не в этом.
Причем если нет акселератора, код особо не кешируется.
А что такое акселератор?
no subject
Date: 2009-12-17 02:46 pm (UTC)Так а разве FastCGI нужен для того, чтобы переменные заново не инициализировались?
Я думал, чтобы не делать fork и чтобы файлы каждый раз с диска не читать.
Вообще FastCGI технология подразумевает что у нас есть демон к которому мы отправляем запросы используя эту технологию и подразумевается, что в случае FastCGI этот демон сам запросы и обрабатывает. Это технология нужна не только чтобы fork не происходил и каждый раз с диска не читать, но и еще держать соединеия и состояние.
pconnect в тех конфигурациях, которые в вебе встречаются, вообще не нужен.
Нужен нужен.
В какой это он памяти висит и куда форкается?
Я бы даже так сказал - а зачем это он форкается, если он уже в памяти висит?
Чтобы выполнить скрипт, зачем же еще. Это причем не он сам, а apache.
Разница между php-cgi и mod_php, как мне кажется, совсем не в этом.
В чем?
no subject
Date: 2009-12-17 03:05 pm (UTC)Состояние?
Я бы опасался держать состояние в FastCGI-демоне.
Это, все-таки, ресурсы, а не состояние.
Но PHP все ресурсы, фактически, подтягивает через расширения движка.
PHP - это клей.
Соответственно, все зависит от того, насколько эффективно работают расширения, тот же pconnect, например, не на уровне же PHP-кода пул держит.
Нужен нужен.
Зачем?
Чтобы выполнить скрипт, зачем же еще. Это причем не он сам, а apache.
Apache форкается вовсе не для того, чтобы выполнить скрипт.
Он форкается, чтобы обработать запрос, а уж что там входит в обработку запроса - это не дело процесса-родителя. Поэтому, в частности, Apache точно так же будет форкаться и на отдачу статики. Или не будет форкаться, если воркеров достаточно.
Ровно так же, как и в случае фермы FastCGI-обработчиков.
Разницы никакой.
В чем?
В том, что в случае mod_php PHP подтянут в адресное пространство Apache в виде библиотеки. И никуда ему форкаться, вообще говоря, не надо, он и так уже здесь.
no subject
Date: 2009-12-17 02:47 pm (UTC)А что такое акселератор?
xcache, apc и т.п.
no subject
Date: 2009-12-17 02:58 pm (UTC)Акселератор - это такая библиотека, которая использует разделяемую память.
Если бы PHP форкался, как Вы говорите, в случае использования mod_php, то, для использования разделяемой памяти нужен был бы процесс-родитель php.
Тем не менее, если на машине запущен apache с mod_php, никаких процессов php на ней нет.
Это как бы говорит нам, что php не форкается.
no subject
Date: 2009-12-17 03:01 pm (UTC)no subject
Date: 2009-12-17 03:11 pm (UTC)Это в конфиге задается примерно тремя параметрами.
no subject
Date: 2009-12-17 03:21 pm (UTC)