Как стать автором
Обновить

Комментарии 140

код бы ещё оформить красиво, было бы вообще супер
И так супер
Возможно, через время там появиться и ваша success story.


Орфография не супер, впечатление портит.
Ставлю плюс. Проделана большая работа. Респект.
Стартаповая лихорадка цвет буйным цветом. понемногу становится тошно. дотком 2.
Дотком 2.0 q:
Офигенная статья, правда! Освещены все самые интересные моменты, связанные с созданием проектов в стиле 2.0

Спасибо большое!

Вообще, приятно, что на Хабре в последнее время появляется всё больше практических статей — про программирование и веб-дизайн, а не абстрактных.
НЛО прилетело и опубликовало эту надпись здесь
Да, известный расклад - многабукафф. Причем, он не очень хорош как для автора, так и для читателя. Первый недополучит лавров, а второй не дочитает до конца и не узнает много интересного! А проблема ясна - неудобно читать столько слов с монитора.

Хотя, я все-таки думаю, что данный пост может быть опубликован в таком виде. Если его разбивать, то цельность истории не сохранится - получится небольшая сага о программировании, а не о быстром создании стартапа на пхп.
Распечатайте ;)
Спасибо за статью. Побольше бы таких статей. Полезно для начинающих, многое узнаеш сразу.
Класс!!!
НЛО прилетело и опубликовало эту надпись здесь
И толпы пионеров кинулись в омут.
За статью отдельный респект, пошел говорить со своими программмммерами.:)
Бред. Диру cache хранить нужно выше http root. Images давно никто не называет как images. максимум img, минимум i, ибо траффик и все такое :))) ведь это стартап, который в будущем будет популярным.
Короче автор пишет в духе: " Вы имеете свежу, хорошую идею? Замечательно! Теперь берем готовый набор инструментов, типа php фреймворка, JS фреймворка, готовые CSS решение и вот вам - еще один бесполезный сайтик "
:))) ребят, учитесь у профи.
Хотя лично я, когда меня друг пригласил на Хабр, думал что этот проект как раз для разработчиков, для профи.
НЛО прилетело и опубликовало эту надпись здесь
+1
+1
Банальный перевод манов
Мы называем images как images. Какой нафиг трафик? Видео вставлять в посты это не трафик, а нормальное название каталогу это трафик =) В случае с Хабром больше экономии будет от относительных ссылок, а не от сокращения images до i.
Вот из-за таких товарищей как icons рождаются необоснованные догмы, как хотим, так и называем директорию хоть kartinki. А над корневой www директорией иногда хранят библиотеки системные (классы, функции & etc) ... встречал пару раз такие решения. И вообще если какая то директория вас сильно смущает можно закрыть доступ через .htaccess к ней.

И вообще, вот этот подход "Я профи" он не уместен в разработках вообще, потому что все динамично развивается и на психологическом уровне начинается лихорадка такая — я профи, я все знаю, мне ничего больше надо... ну и пафос там лишний еще... А через годик такие профи морально устаревают и все :-)
Когда дело касается личной разработки, называй диры хоть kartinki_i_fotki_chto_zagruzili_useri, а когда дело касается в духе "Ман как надо делать", то почему сразу не учить делать хорошо?
возможно с профи я погорячился, однако имелось введу что люди, которые тут пишут, имеют непосредственное отношение к вебу.
> Диру cache хранить нужно выше http root.
.htaccess еще никто не отменял
> Images давно никто не называет как images. максимум img, минимум i,
Представляешь, можно даже ";-)". См http://img.artlebedev.ru/;-)/raisin.gif Кому как нравится, тот так и называет. Я сам люблю "i", но готов смириться и с super_puper_images, почему нет :)
Хорошая статья. Доступно объяснено. Новичку - руководство к действию. Профи - тоже не повредит.
.htaccess надо бы отменить все же :) это не кроссплатформенное решение. На любом другом http сервере работать не будет
Проблемы програманьяков в общем-то в том, что вместо того, чтобы быстро написать конкретный код для конкретной поставленной задачи, когда условия эксплуатации известны изначально, они будут ваять "кросплатформенное решение", работающее "на любом сервере", поддерживающее мускл, постгрес, интербейс и до кучи оракл - в общем, монструозную хрень, в которой больше половины сделано для самоудовлетворения эго разработчика ("от, смотрите, как я правильно код умею писать"), а не потому что нужно на самом деле.
Извините.. но при чем тут web 2.0 ? Руководство по созданию сайтов с нуля - вероятно так и есть. Но разве само понятие web 2.0 имеет что-то общее с программированием?
Почему автор забыл о существовании мира за пределами PHP?

Фреймворков есть гораздо больше — Catalyst, PageKit, CGI::Application, CGI::Builder (пёрл), Ruby on Rails (руби), Django, Pylons (питон), и прочая, и прочая, которое как минимум ничуть не хуже. Выглядит как намеренное сужение выбора.
НЛО прилетело и опубликовало эту надпись здесь
ах, какой он нехороший, выбор сузил намеренно :))
+1
Потому что в заголовке четко написано "Программируем стартап Веб 2.0 на PHP". Именно "на PHP". Автор рассмотрел один из вариантов. Статья итак получилась большой, а если сюда еще все остальное запихать, так совсем каша будет...
Если у Вас есть опыт создания на чем-то другом, то пож-та поделитесь. Интересно будет сравнить.
Но статья называется "Программируем стартап Веб 2.0 на PHP". Для Ruby или Perl могут написать приверженцы этих языков
Потому же, почему народ сидит и сидит и сидит и сидит на "Виндоуз"
НЛО прилетело и опубликовало эту надпись здесь
Вопрос от php-чайника. Разые нельзя обновлять кэш главной не по крону, а по факту изменений? Не тупо каждые полчаса гонять, а, например, изменился контент (вылезла статья на главную) — тут кэш и обновлять?
Можно конечно. Но комментарии на статьи (число комментариев) поступают чаще публикаций и голоса, а их тоже надо отображать н главной
Так если только по крону кэш обновлять, разве большинство не будет видеть все время устаревшую страницу? Может, тогда кэшировать не всю страницу, а ее части, по факту изменений?
Тут могут быть варианты. Хотя в указанном можно формировать кеш образ главной каждые 5-10 минут – в общем и целом это будет почти актуальная информация. Нагрузка для единократного формирования кеша незначительная.
Предположим, новые комментарии идут раз в 3 минуты, а кэш главной обновляется по крону раз в 10 минут. Тогда все равно большую часть времени кэш будет неактуален? И зачем такой кэш? Только посетителей сбивать с толку и производить впечатление глюкавости?
НЛО прилетело и опубликовало эту надпись здесь
> Программируем стартап Веб 2.0 на PHP

Думаю, что мы врядли услышим что-либо о стартапых веб 2.0, которые делают люди, нуждающиеся в подобной статье.
А такие люди, кстати, обладают куда большей уверенностью и желанием к успеху, нежели «прокаченные дилетанты» с мешком опыта за плечами. Другое дело, что выживают из них доли процентов, но это уже совсем другая история.
Порадовала фраза "включает и расширение PHP PDO (PHP Data Objects). Использование этой библиотеки абстрактного доступа к БД позволит при необходимости легко переключиться на другую СУБД.". На ней и закончил чтение, ибо бред. Даже создатель PDO не позиционирует расширение как слой абстракции. Это скорее абстрактный интерфейс.
открываем мануал и читаем: "PDO provides a data-access abstraction layer..."
и кто после этого "бред"?
чтобы сменить СУБД для уже написанного приложения, все запросы должны максимально удовлетворять ANSI SQL, и при этом выбранные субд - также удовлетворять полностью
используемые в примере LIMIT, например, сделают невозможным переезд на mssql
Как впрочем невозможно будет перейти и на PostgreSQL.
А чем Postgre лучше для таких проектов, чем MySQL?
Что лучше — каждый решает сам для себя, и думаю, преимущество в том, что лучше знаешь, а не в чьём-либо утверждении, мол, *SQL лучше, чем MySQL. У всех есть свои преимущества и недостатки.

Если в один прекрасный момент будет решено перейти на другую БД — возникнет меньше проблем с переходом, если SQL-запросы будут приближены к одинаковому синтаксису.
Лучше тем, что как правило, интернет-сайтам хватает функционала MySQL, а все навороты PostgreSQL, MSSQL и оракл применяются для других целей. И MySQL не много быстрее (подчеркиваю - применительно к веб-сайтам!).
угу, и на оракл...
;)
Жуткий код. Я не представляю как потом разработчики будут прикручивать новые возможности. Такой подход можно применять только в том случае, если непонятно что вообще от проекта хотят добиться, но при этом нужно сделать его достаточно быстро, только потом опять же придётся всё переделывать... Я понимаю, что это просто пример, но раз уж в начале статьи упомянуты PHP-фреймворки, то может быть стоило показать пример с применением какого-нибудь фреймворка?..

Касательно дерзновения. Сделать при желании можно что угодно. Важно не потерять на определённом этапе энтузиазм продолжать работу над проектом, иначе он будет загинаться.
Хэх. Сам стартапец поднимаю. Но обещаю вам, это будет не пустышка, а действительно что-то новое.
Посмотрим! ;)
> Данная статья не являет руководством по программированию проекта Веб 2.0.

Данная статья вообще ничем не является. Новичок по ней напишет то, что и в альфу не выйдет.
Он не успеет поработать над моделью, как сразу перейдет к "обогащению" пользовательского интерфейса. А спецу это просто не надо. Ну и методология ООП предполагает немного иной подход к кодированию, не ломайте детскую психику.
Скажите лучше, где идею взять.
а другие думают, где бы хороших разработчиков
и где бы ещё больше самых лучших разработчиков ;)

в личку напишу..
С разработчиками проще. Если деньги на них есть :)
НЛО прилетело и опубликовало эту надпись здесь
Поцаны, я понимаю, что совсем не в тему.
Объясните, как мне, блять, написать новый топик ?
Захожу в блог "Я умный", который я искал минут 10. Там нажимаю на значок добавить, но меня всё равно в долбанную википедию выкидывает.
Я понимаю, веб 2.0 всё такое, но это пездец...
И заметьтьте чем дальше тем """"" гуще, без лебедевщины пожалуйста :D
да, блин, я читаю этот ресурс по RSS, иначе очень сложно.
вот хотел запостить кое-чего, а вот до сих пор не могу разобраться, как.
может тогда и не стоит?
возможно.
просто ресурс позиционируется как грамотный, а тут реально надо день, а то и два, потратить, чтобы разобраться, чё как.
хорошо, что чтобы комментарий написать, не нада в викепедии читать, как это делать...
может и не стоит, но в таком случае, возможно, будут пропадать потенциальные хабратопики. Вот мне кто-то в карму минус один раз влепил, хотя за комменты в основном плюсы ставятся, и все... вчера два хабратопика канули в лету... хотел запостить - болт! даже в "Я умный" не дают запостить, хотя говорят, что можно.
http://www.habrahabr.ru/topic/add/
вот по этой ссылке..
у тебя карма=0, так что получится написать только в личный блог..
но его многие прочитают всё равно
Крута. Как это сделать ? По ссылке меня кидает на долбанную вики.
Притом с любого места. Как в личный блог зайти надо тоже объяснить, наверное. Это потому что список блогов я найти не смог :)

p.s. я типа веб-разработчик :)
а что в вики пишут? что кармы не хватает или почему опубликовать нельзя?
есть какая-то причина, почему нельзя написать.. надо с этим разобраться, то есть внимательно прочитать Справку.. вот
http://www.habrahabr.ru/info/wiki/?title=%D0%9A%D0%B0%D1%80%D0%BC%D0%B0
вот сюда выкидывает.
ну там же по русски написано, что в блог "Я умный" можно писать даже с отрицательной кармой.
как я пытаюсь это делать:
захожу сюда http://www.habrahabr.ru/blog/i_am_clever
потом вверху слева около "Все" кликаю на значок "Написать" и меня туда выкидывает.
я уже всё перепробовал.

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

До этого момента я только читал и думал, что хабрахабр - именно удобный ресурс, потому как красивым его явно не назовешь.
не, всё, умываю руки
не знаю, как с этим бороться..
Странно ты думал =) Написать заметку не можешь, читать можешь только через RSS и считаешь его удобным? ;)

Чего у тебя за браузер? Стоят ли блокираторы рекламы? Может, они чего неудачно блокирут и у тебя слетает вся вёрстка в шапке?
Кстати, да. Грамотный проект не должен заставлять даже самого недалекого пользователя(не принимать на свой счет) искать и думать где же добавить свой пост! И когда я нажимаю кнопку добавления, а меня перекидывает хз куда, где надо еще вчитываться в кучу информации... Тем более это не должно зависеть от браузера. Веб дваноль, мля...
Самый обычный IE7.
Значит, тебе невезёт с Хабром =)
Отличный разбор полета.
В таком подходе меня лично напрягает только отсутствие приличного средства uml моделирования с code generation в php... все что ни пробовал - генерит со недопустимыми просто для кода дефектами.
Подправить их как правило очень просто - но раунд трип накрывается медным тазом...(

И тут еще как назло реально немаленький проект, вобщем,
буду благодарен за любые советы в этом плане. Пока борюсь с enterprise architect...
НЛО прилетело и опубликовало эту надпись здесь
А что с Enterprise Architect? Напиши плиз конкретное.
Самый большой минус - отсутствие поддержки типа данных enum и set при генерации DDL.
И еще в php - какая-то путаница с конструкторами классов.
похоже на краткий пересказ диплома студента
код небрежный. первый раз писали?
да, еще. Камни, конечно, в огород полетят опять :))) но ПУБЛИЧНО УЧИТЬ людей писать правила в .htaccess это плохо. Давно доказано что как только посещаемость переваливает 300-500 тыщ хитов, все правила нужно прописывать в httpd.conf и вырубать поддержку .htaccess. Да и вообще, mod_rewrite это точно такой же модуль к апачу как mod_php, а mod_php намного гибче может обрабатывать те же регулярки.
Да и вообще, если автор намекает на современную разработку, то надо было бы заикнуться о fast-cgi, о таких прелестях как 0w, nginx и lightpd.
.. и забыть про PHP. 8-)
НЛО прилетело и опубликовало эту надпись здесь
Статья хорошо написана. Понравилась. Вопрос в целесообразности следования стилю web2.0 каждый решает для себя сам. Мне нравятся неординарный дизайн, хотя заказчики часто хотят "такой же, как у...".
Буду учиться...
Очень красивый простой и стандартный подход.
Респект, сам такое юзаю!
производительность Zend Framework - это фантастика...
Все перечисленные фреймфорки весьма тормозные к сожалению и не расчитаны на посещаемость.

При вызове из crontab нет _GET ;-) Странно что автор этого не знал...

Указанный метод оптимизации - мечта для конкурентов, можно положить сайт очень быстро...

P.S. Хотя для стартапа и быстрого впаривания инвестору - пойдет...
при вызове CRONTAB доспен GET попробуйте предложенный вариант
/usr/bin/php -f/полныйадрес/index.php "& ctrl_action=getComponent&createcache=on&request_uri=/controller/tagcloud/"
Посмотрите в содержание массив $_GET в стартовавшем скрипте
GET и POST переменные окружения формируется php, а не апачем. Скорее всего вы спутали с _SERVER
Учите матчасть ;-)
http://ru2.php.net/manual/ru/language.variables.predefined.php
Из чего же формируются эти переменные, когда нет GET или POST-запроса?
Хех, не смог все прочитать... Жаль время не хватило. Вижу что статья хорошая.

Вообще если проект крупный нужно выносить уровни абстракции, использовать патерны, MVC (model 2)... До сих пор до конца не понимаю как на PHP сделать что-то реально крупное, особенно когда разработчиков больше 10-20.
Отличная работа. Заслуживает уважения.
Спасибо.
Подскажите, пожалуйста, кто-нибудь хорошую книгу по программированию подобных проектов на PHP с использованием какой-нибудь платформы.
Врядли такие книги существуют в природе.
PHP - это не вчерашний, это позавчерашний день.
Глядя на модель ООП, на средства разработки, на документацию у меня возникает только один вопрос - "Как на этом можно вообще писать ?"
Сравните, например, код на яве с кодом, приведенным выше:


public class RegisterPanel extends Panel {

private String email;
private String firstName;
private String secondName;
private String password;
private String passwordConfirmation;

public RegisterPanel(String name, IModel model) {
super(name, model);

add(HeaderContributor.forCss("html/style/stylesheet.css"));
Form registrationForm = new RegistrationForm("registrationForm", new Model(""));

FeedbackPanel feedback = new FeedbackPanel("registerFeedback");
feedback.setFilter(new ContainerFeedbackMessageFilter(registrationForm));

// создание элементов формы
TextField email = new TextField("email", new PropertyModel(this, "email"));
TextField firstName = new TextField("firstName", new PropertyModel(this, "firstName"));
TextField secondName = new TextField("secondName", new PropertyModel(this, "secondName"));


PasswordTextField password = new PasswordTextField("password", new PropertyModel(this, "password"));
PasswordTextField passwordConfirmation = new PasswordTextField("passwordConfirmation", new PropertyModel(this, "passwordConfirmation"));

// добавление валидаторов
password.add(StringValidator.minimumLength(6));
registrationForm.add(new EqualPasswordInputValidator(password, passwordConfirmation));
email.setRequired(true);
email.add(EmailAddressPatternValidator.getInstance());
email.add(new UniqueEmailValidator());

// добавление элементов к панели
add(feedback);
add(registrationForm);
registrationForm.add(email);
registrationForm.add(firstName);
registrationForm.add(secondName);
registrationForm.add(password);
registrationForm.add(passwordConfirmation);

// PropertyConfigurator.configure("/home/neiroman/projects/Nevilon Services/Sync/src/com/nevilon/services/sync/web/log4j.properties");



}

public String getPasswordConfirmation() {
return passwordConfirmation;
}

public void setPasswordConfirmation(String passwordConfirmation) {
this.passwordConfirmation = passwordConfirmation;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getFirstName() {
return firstName;
}

public void setFirstName(String firstName) {
this.firstName = firstName;
}

public String getSecondName() {
return secondName;
}

public void setSecondName(String secondName) {
this.secondName = secondName;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

class RegistrationForm extends Form {

public RegistrationForm(String id, IModel model) {
super(id, model);
}

@Override
public void onSubmit() {
Account newAccount = new Account();
newAccount.setEmail(email);
newAccount.setFirstName(firstName);
newAccount.setSecondName(secondName);
newAccount.setPassword(password);

RegistrationMailMessage regMessage = new RegistrationMailMessage(newAccount);


AccountManager accountManager = AccountManager.getInstance();
accountManager.saveAccount(newAccount);


}
}
}
Ну не надоело еще людям приходит в темы о языках на которых они не пишут и кричать, что это все гауно, а вот языки которые они знают, это рулез?
Читать во всяком случае надоело.
Насчет двух кусков кода - они одинаковые. Неотформатированное, неоткомментированное мясо на два экрана, разбираться в котором нет никакой охоты.
Пояснили бы на конкретных небольших примерах было бы другое дело. А так, просто очередной трёп.
При этом этот кусок и делает еще что-то элементарное и совсем не относящееся к теме топика. Что мы должны тут сравнивать?
Гм, кому элементарный, а кто не может разобраться....
Да и вобщем-то дело не в этом куске кода, а в том, что пхп - худший выбор для написания проекта, особенно с большой нагрузкой.
Каждому свое. Вспомни сколько времи уходит на разработку Java-Servlet`ов и сравни с временем разрботки того же самого на пхп. Не стоит толдычить свое как абсолютная истину. И тем более совершенно не важны ни ООП, ни красота кода, ни нагруза - все это зависет от смекалки программиста, а не от выбранного языка. Ненавидете пхп - флаг вам в руки, но коструктивной критики в ваших словах не нашел. Увы.
Имхо, у вас очень правильный стиль и вы пишите на моем любимом языке, но ваши замечания никак не сочетаются даже с заголовком статьи =)
Объясняю по пунктам
1.Писал и на том, и на том. И дело тут в технологических преимуществах, а не в соплях. Покажите для пхп что-то уровня Hibernate.
2.Надоело - не читайте.
3. Код отформатирован по всем стандартам.
4. Не хотите, не разбирайтесь. Хотя там все прокоменнтировано.

Преимущества:
1. Отображение классов на структуру базы данных.
2. Реальная независимость от конкретной базы данных.
3. Масштабируемость.
4. Гораздо более низкое использование ресурсов.
5. Вагоны библиотек.
6. Бесплатные среды, фреймверки, мощное сообщество, поддержка крупнейшими производителями ПО.
7. Безопасность.
8. Стандартицазия, наличие выработанных технологий для решения определенных проблем.

Касательно куска кода:
В html код включаютя только идентификаторы, больше ничего. Вся логика выполняется в классах, которые наследуются от абстрактной страницы.
Наличие различных валидаторов полей форм (как встроенных, так и пользовательских).
Концепция модели для обмена данными с элементами пользовательского интерфейса (например, при вводе пароля и логина соотв. значения автоматически становятся доступны в соотв. свойствах модели).
Хм. Зачем включать какие-то идентификаторы в HTML код? Зачем в контроллере генерить элементы формы? Это что, так удобно?
ИМХО, форма должна выглядеть как форма, без всяких хелперов и прочего. Её же нертудно распарсить и подставить нужное.
она так и выглядит:






Invalid email address
Empty password





Email



First name



Second name



Password



Confirm password  












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














весь код для страницы, панели добавляются на сервере в замисимости от текущих условий.
1. Я тоже. И признаю многие недостатки PHP и достоинства Java. Как и наоборот. А вообще мне Питон нравится больше их обоих.
2. А я хочу читать. Как топики, так и комментарии к ним. И хочу, чтобы они было конструктивными.
3. Не вижу

1. Это и на PHP реализуемо. Другое дело, что это не всегда лучшее решение.
2. Опять про независимость от базы данных? Что под этим подразумевается? То что PHP-шнику придется при переходе с mysql на PG заменять вызовы mysql_* на

pg_*? Но никто вменяемый напрямую к ним не обращается.
Или под этим подразумевается, что имея сервер mysql3 можно использовать триггеры, хранимые процедуры и связывание по ключам?
3. Опять модное слово. Что под ним подразумевается такого, что принципиально не достижимо на PHP?
4. Ну и что?
5. А с вагонами библиотек для PHP вы не знакомы?
6. У PHP тоже все это есть. В несколько более меньших объемах, но это не критичный пункт.
7. Ой, да хватит, про эту безопастность. Человек, который понимает, что он делает, пишет безопастно и на PHP. Который не понимает, тот пишет с дырами на всем

чем угодно.
8. Вот. Определенные проблемы. У PHP одна проблема - web. А у java куча. И в большинстве из них пых яве, несомненно, никакой не соперник. Надо все-таки

понимать, что есть различные проблемные области и нет универсального решения.

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

страницы.

Если вы про возможность вставлять php-код в html, то наличие этой (очень удобной во многих случаях возможности) никоем образом не мешает обходиться без нее и

строить логику как угодно.
Наличие различных валидаторов полей форм (как встроенных, так и пользовательских).

Подобные решения (как и в ASP) позволяют быстро сварганить шаблонную систему. Но не дают программисту более-менее глубокого контроля над процессами и, что

важно, понимания этих процессов.

И вообще спор пошел не о языках, а о библиотеках.
Прошу прощения, с блокнота вместе с переносами строк скопировал.
Я не делаю из явы краеугольный камень, о питоне, к сожалению, ничего не могу сказать. Но я ненавижу пхп за кривость во всем - начинаная ядром и заканчивая прикладными рюшечками.
Производительность и масштабируемость - мощнейшие и сложнейшие системы обработки данных (банки/биржи/прочее) построены на яве/нете, но не на пхп.
Сделайте на пхп объект, который может мигрировать в кластере.
Да, реализуемо. Дайте ссылку на реализацию.
Hibernate учитывает диалекты баз и выполняет запросы максимально эффективным образом.
Покажите что-то типа Axis2,Hibernate, JAAS,EJB, Castor.
Мда, а что делать с дырами в ядре пхп ? Изучать десятки метров сишного кода ?
Что неудобного в валидаторах ? Почему на пхп один и тот же код по сути нужно писать постоянно ? Мне гораздо удобнее добавить стандартный валидатор или набросать свой.
Какой такой контроль ? Над отправкой логина на сервер ?

Рассматривать язык и сопутствующие библиотеки в данном контексте не имеет смысла. Это не вещь в себе.
Да, банки на PHP писать не следует. Однако, мы не про банки говорим.
Сделайте на пхп объект, который может мигрировать в кластере.

А он не должен мигрировать в кластере. Это смотря как рассматривать web-приложение.
Да, реализуемо. Дайте ссылку на реализацию.

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

Извините, я не совсем знаком с Hibernate. Что под этим подразумевается?
Мда, а что делать с дырами в ядре пхп ? Изучать десятки метров сишного кода ?

Примеры, действительно глобальных дыр, пожалуйста.
Что неудобного в валидаторах ? Почему на пхп один и тот же код по сути нужно писать постоянно ? Мне гораздо удобнее добавить стандартный валидатор или набросать свой.

Так что вам мешает набросать свой код на PHP? И переносить его, а не писать постоянно. Есть и сторонние библиотеки - quickForms и многие другие.
Какой такой контроль ? Над отправкой логина на сервер ?

Контроль надо всем. Отображение структуры БД, стандартная авторизация, стандартные формы, построение приложения из готовых компонентов, это все здорово, но не всегда. Здесь переноситься подход к онлайновым программам на web-приложения. Хождение человека по сайту (по множеству) страниц рассматривается, как отдельное приложение, а это не так и не всегда удобно. Отдельное приложение, это отдельный процесс, который получает запрос и должен вернуть ответ.
>1. Отображение классов на структуру базы данных.
это же не достоинство языка, а, видимо конкретного фреймфорка

>2. Реальная независимость от конкретной базы данных.
хорошо,что хоть кто-то в это верит :)
имхо, любое реальное приложение требует использования sql намного более сложного, чем примеры из документации прокладки для обеспечения "независимости"

>3. Масштабируемость.
и? php этого не умеет?

>4. Гораздо более низкое использование ресурсов.
а можно циферьки?

>5. Вагоны библиотек.
аналагично

>6. Бесплатные среды, фреймверки, мощное сообщество, поддержка крупнейшими производителями ПО.

аналогично. крупнейшие производители ПО клепают библиотеки БЕСПЛАТНО?

>7. Безопасность.
Безопасность? Безопасность в чём? Безопасность где?

>8. Стандартицазия, наличие выработанных технологий для решения определенных проблем.

стандартизация великая сила, против лома - нет приёма :)
Да, рассматривать в данном случае язык отдельно от библиотек не имеет смысла.
Цифры - тут http://dada.perl.it/shootout/craps.html
Ок, доп. условие, которое я уже озвучивал не один раз - покажите КАЧЕСТВЕННЫЕ и сравнимые по функционалу библиотеками для явы.
Клепают под пхп. Под яву разрабатывают. Бесплатно. Практически все.
Безопасность - во всем. Сколько было сообщений о дырах в ядре пхп ? А сколько в JVM и фреймверках ? Вот...
цифры неубедительны. мы же про вебсайты тут говорим, правда? php там явно без акселератора.... фигли сравнивать интертрепатор и компилер? судя по тесту, про с\с++ уже давно было пора забыть.

ок. какие библиотеки вам интересны? абстрактый доступ к БД? ну вот напрмер http://propel.phpdb.org/

далее cakephp, prado, phponrails, symfony, zend framework, seagull...

под яву точно также клепают, я насмотрелся на тонны кода в с\с++, не думаю что под джаву ситуация лучше. можно примеры качественных бесплатных библиотек. к сожалению, я - не знаток джавы (но это пока,уж больно она мне нравится :)

вы действительно не хотите замечать дыры в JVM и так далее
вот просто так ввел http://www.google.com.ua/search?q=java+security+hole

а какие дыры были имеено в ядре PHP?
Очень интересно посмотреть на изнанку чужого php-проекта в духе веб2.0. Спасибо!
Несколько полезных приемов взял на вооружение.
Достаточно полезная статья, автору спасибо. Освещенно действительно многое.

Ставлю плюс.
Статья интересна как минимум тем, что предложен вариант решения, и каждый может почерпнуть для себя какие моменты.
В любом случае можно сделать как лучше данного, так и хуже.
Может быть что-то в статье и поможет новичкам, но в целом код плохой:
1. Использование только полностраничного кеширования.
2. Использование includ'ов вместо require, там где это логически не верно.
3. Вы соединяетесь с БД на каждой странице? У вас же есть кеширование :)
4. Никакой обработки ошибок, никаких исключений, вообще...
5. А вы все реализации паттернов собираетесь класть в один файл?

Это только по нескольким первым строчкам index.php
Имхо, статья скорее отпугнет новичков. Кроме того, почему таки при обилии готовых фреймворков автор призывает сделать еще один?
Интересно ...
Вот только та статья оставила очень плохой осадок, судя по-всему её авторы понятие Web 2.0 сводят к:

* Элегантность и простота
* Округлые формы
* Тени
* Нежный градиент
* Шрифт без засечек (Sans Serif)
* Пастельные цвета v2.0
* Нижний колонтитул (Footer)
* Размер шрифта: больше обычного размера
* "Лакированные" эелементы интерфейса
* Наглядный HTML (XML стиль)

Разве это признаки Web 2.0 ??!!

Безусловно, раньше такого не было, но не стоит вводить в заблуждение:
Web 2.0 - это, в первую очередь, социальная направленность, это web-сервисы, открытый API, микроформат, ..., OpenID и AJAX наконец, а дизайн - конечно не маловажная черта, но к PHP и программированию вцелом это не имеет ни какого отношения.
там же написано "Мы поговорим о визуальных особенностях (дизайне) сайтов WEB 2.0."

и не более того......
web2.0 это:
* приложения между девайсами а не на них
* открытость к ре-использованию информации другими ресурсами
* приложения не как какие-то артефакты, а как постоянный (!) процесс участия с пользователями (pbeta)
* приложения где от количества пользователей качество сервиса улучшается

web2.0 - это смысл, а не технологии. AJAX тут даже и боком не стоит, если честно. Читайте Тима Орейли.
непонятна связь web2.0 с внутренней архитектурой приложения. Но это не смертельно.
Смертельно другое - в том же ZendFramework есть огромный (!) пакет примеров. Где пошагово (!) добавляется фунциональность. Проект примеров содержит уйму объяснений (в т.ч. и на русском языке), и очень грамотный (ибо вылизанный многими программистами код).

имхо, куда полезнее вместо таких постов просто положить ссылку на примеры и объяснить как их достать и запустить.

Примеры лежат в svn и крайне полезно новичкам (там fisheye стоит) посмотреть историю и комментарии к изменениям отдельных файлов. Коммент вида "тут убрали это отсюда, потому что может развалится в таком-то случае" крайне полезен для общего развития :). Естественно с анализом исходного кода.

Тут же.. не хочется лезть глубоко - но то что код не идеален видно невооруженным глазом (korchasa, +1). Как минимум швыряться рутовым Exception - головная боль для последующих разработчиков.
Статья ИМХО для порчи детской психики.
>>К примеру, производительность Zend Framework - вполне закономерное преимущество для решения от разработчиков PHP
С даным фреймворком уже работаю почти год, более того, уже создал поверх него другой фреймворк, но вот то, что он "производительный"... автор меня явно удивил.
Сейчас кое-что пересмотрел и написал под себя контроллер, некоторые вещи убрал (добавлю при необходимости) и скорость выросла реально в разы!!! Response Time с 7500 опустился до 700. По количеству хитов вырос в 2 раза...
Опять же структура (как уже было не раз сказано)... Да возьми структуру того же Zend Framework она более вменяемая (с небольшими доработками юзаю её)... И ещё, как совет автору, почитай про блочное кеширование, помогает... Так же все скрипты которые запускает крон я бы вынес за корень отдельно (юзаю папку bin свою ессно))), чтобы тебе ДОС не устроили запустив этот линк (всё таки создание кеша более трудоёмкая операция, чем просто отображение).
По поводу JS. Есть просто вагон замечательных фреймворком (мутулс, прототип, скрипт акулас и т.д.), а ещё есть сервисы, которые сжимают, дабы "пользователю не грузить 100 кб"... Сжимают как правило в 2 - 3,5 раза
Упоминания про работу под высокой нагрузкой я бы убрал. О том, чтобы "снизить нагрузку на сервер, настолько насколько это возможно." речи в этой статье просто не идет. Во-первых, Apache в качестве веб-сервера в таких вопросах обычно уже не фигурирует. Во-вторых, кэш в файловой системе - это все равно достаточно медленно. Так что выигрыш здесь может оказаться весьма сомнительным. Не говоря уже о том, что создавать кэш по крону - не лучший вариант. Для "боевых" проектов здесь нужно говорить уже о других вещах. Для начала хотя бы упомянуть о memcached.
В целом, от статьи остаются достаточно смешанные чувства. С одной стороны, достаточно большая работа автора и попытка заинтересовать начинающих, с другой - куча кода сомнительной ценности и ни слова о самом веселом: том, что начнется, когда проект выйдет за пределы localhost.
Так что опять некоторое разочарование: хотелось почитать что-то из опыта инсайдеров, а получилось обычное "как накопипастить сайт с модными причиндалами за 30 минут". Так что надежда на чудо опять не оправдалась.
Хабр, вроде на PHP?
на каком то форум-движке, спрашивал давно уже, сейчас не найти
НЛО прилетело и опубликовало эту надпись здесь
Кстати говоря, а каким боком тут output buffering?
НЛО прилетело и опубликовало эту надпись здесь
Простите за оффтопик, а в чем нарисован лайот грядущего сайта? Ну вот то синенькое окошечко, разбитое на элементы. Явно ведь не Фотошоп...
MS Office Visio 2003, Windows XP user interface drawing type
а есть ли какой-нить Shape для Visio, заточенный именно для проектирования вебприложений?
Прочитал почти полностью пост Дмитрия и самые нажористые комментарии. В лучшем случае эта статья может оказаться полезной для новичков, и то не вся. Большей частью она вводит в заблуждение и вообще вредна. Да и вторична. К чертям такие солянки. :-)

Минус не поставлю, в надежде, что кого-то эта статья двинет в нужную сторону, но и плюса не дам. :-)

Люди правильно подметили, что фреймворки типа Zend и иже с ним не только не снимают нагрузку, но и повышают ее, причем на раз-два. Про какую оптимизацию здесь говорят? Снижение производительности проистекает хотя бы из увеличения gap между языком разработчика и языком машины. Это в природе фреймворков, как таковых. Поэтому Asm эффективнее C, который в свою очередь рвет в лоскуты Php.

Ну и предметный вопрос: причем тут Web 2.0?!

Конечно, „стартап“, да еще "web 2.0" можно реализовать на php (везунчики). Вот flickr — на php делан. …Но что значит „программируем стартап Веб 2.0“?! Это что, технология такая, или парадигма проектирования — Веб 2.0? :-) Наверное, достаточно следовать приемам, раскрытым Дмитрием, и у нас будут карманы, полные стартапов Веб 2.0?… Мда. (ржу)

Web 2.0 вряд ли имеет какое-либо жесткое технологическое определение. Я вообще не понимаю, почему этот лейбл лепят куда ни попадя.

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

ПОЭТОМУ и используют ЧУЖИЕ фреймворки для того, чтобы БЫСТРО слепить ПРОТОТИП реализации своей ИДЕИ, которая никак не формируется в ходе и кодирования. ИДЕЯ у вас уже должна быть. Своя. …И набор (не совсем успешных) методик Дмитрия тут едва ли поможет, равно как и программирование на php, javascript и прчмгвне.

Святые угодники, да неужели вы подумали, что можно без проблем запустить на Zend'е клон Flickr, Facebook или Digg? :-)
Пожалуй, наиболее полный и разумный комментарий. +1.

Мне же, помимо всего прочего, статью с замахом "Программируем стартап..." хочется сравнить с руководством "Практическая нейрохирургия за 21 день".

Успешные стартапы не программируют. Их СОЗДАЮТ те, кто в первую очередь умеет просчитать или предугадать успех. Анализ и выбор технологий/фреймворков тоже жизненно важен, но это совсем другая тема, и статья на её раскрытие даже не претендует (а было бы интересно).

Вобщем, не ломайте детскую психику начинающих программеров таким апломбом в заголовке. Пусть по этому вполне неплохому руководству они сначала напишут свою домашнюю страничку. В стиле Веб 2.0, разумеется :)
Бог ты мой, куда я вписался? Это же блог по пыхе…
Ой, очередной велосипед...
и опять я заглох.....у меня что-то не идет постучите 244264464. посоветуйте что-нить
Запросил. Ник - korvin
запрос не пришел...
мне лично интересно не столько технические подробности конкретных работ,
сколько различные подходы в их решении.. различные взгляды, различные мысли..
больше статей! хороших и разных! респект.
+1

автор, спасибо за статью!
оболденная статья!!! Респект!!! многое для себя взял на заметку
<IfModule mod_rewrite.c>
	RewriteEngine on
	RewriteCond %{REQUEST_FILENAME} !-f 
	RewriteCond %{REQUEST_FILENAME} !-d
	RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
</IfModule>


Такой подход уже встречал часто, но вот вопрос есть… Как реализовать таким способом передачу только данных, переданных методом POST?
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации