Выбор сделан!
Программирование 19.12.2008
Интро
Я уже долгое время мучаюсь выбором php-framework‘а. Я испробовал почти все более-менее известные FW. И все было не то. В одном не нравится его аскетизм. В другом дикая сложность развертывания. В третьем не устраивает скорость разработки приложений и т. д.
Выход есть!
И вот после длительных поисков я нашел его!
Да, это немного не PHP, но это даже к лучшему. Нельзя зацикливаться на одной технологии, надо постоянно развиваться и искать новые пути решения повседневных проблем.
Не буду описывать как я пришел к такому выбору, просто скажу что FW очень логичен и быстр. Обладает очень шустрым ORM, который освобождает программиста от большей части рутинной работы, позволяя полностью сосредоточить свои силы на разработку приложения.
Пока я разбираюсь с Django чуть более недели и мне все нравится. Я понимаю, что идеальных вещей не бывает и в нем тоже найдется куча минусов, но плюсов я нашел пока больше =)
Планы
И так чтоб оправдать свой выбор, я решил “угробить” все свои новогодние каникулы. А заодно, я уговорил своего коллегу (за что ему огромное спасибо) “угробить” их вместе.
В общем план прост: сделать вдвоем за 10 — 14 дней проект некой социальной сети. Если все получится, то с нового года, наш отдел перейдет с самописного фрэймворка на PHP на Django.
Вот такие “наполеоновские планы”.
Ссылки по теме
- Сайт проекта
- Официальная документация (eng)
- Видео уроки по Django
- Документация на русском языке
- Очень хороший русский форум по Django
- Django в ЖЖ
Update (21.12.2008):
Нашел еще один сайт по Python & Django. А на одной из его страниц собрано много интересных ссылок. В общем, дорогие читатели, давайте учиться вместе! )))







Ты забыл о lunux’e который мы 27 будем ставить ;)
Точно! Возможно переходу на Django будет еще сопутствовать и переход на Linux =) Кто знает?..
Если хотите делать социалку на Джанго, посмотрите вот это: http://pinaxproject.com/
Копипастить может и не будете, но почва под ногами в виде набора готовых моделей у вас будет.
Я уже видел это, мне не подходит.
И тем более учитывая, что я хочу разобраться с Джанго, то лучше многие вещи написать самому.
А насколько реально разобраться без знаний Python? =) Т.е. глубоких знаний а то я когда то решил его попробовать но дальше чем генераций моделей изучение не продвинулось ))
Конечно не реально ))) Разве Вы способны разговаривать на итальянском языке, если Вы его не знаете.
Но как раз-таки это не проблема: когда знаешь 1-2 языка, остальные учатся быстро =)
К нам (ко мне и Андрею) уже едут 2 книги “Изучаем Python, 3-е издание“, я думаю, нам их будет достаточно =) По мне так в Питоне очень много сходного с php. Думаю, проблем быть не должно.
Если же у Вас проблемы с изучением нового языка, то тем более советую его учить - это развивает )
Larin, но это не означает, что не стоит подглядывать в исходники других разработчиков :)
Особенно на первых парах.
А в целом, желаю удачи. Джанго стоит внимания, это правда.
Сергей, а разве я говорил, что не стоит смотреть чужой код? Его стоит смотреть всем, не только новичкам. Если завести себе такое правило, то почти каждый день можно узнавать что-то новое.
Я так JavaScript выучил ))) На чужих примерах )
Спасибо, надеюсь (уже в новом году) смогу сказать, что все получилось )
З.Ы.: а вы сами судя по блогу на Django разрабатываете?
Я не говорю что не знаю питон )) просто в дебри я не лез, при разработке мало требуется. Кстати книга у меня эта есть), тоже без дела валяется. Насчет развития поэтому и спрашиваю, хотя честно сказать и symfony пока хватает.
Ну у них общий родитель Perl, может поэтому =)
Симфони мне давно не хватает - по скорости работы… уж О-ОЧЕНЬ он медленный. Ну очень )
Ну как вам сказать, тут как не крути а php некий стандарт де-факто на (мелких средних проектах), и к примеру имхо сравнить симфони и другие фреймворки пхп к примеру для разработки CRM систем или систем учета, или не очень стандартных решений, имхо небо и земля, все таки он писался по примеру таких решений как рор и джанго, а остальные по принципу __закатаем рукава, днем и ночью кодить будем__. Поэтому скорость страдает хотя я счас тестирую 1.2 версию и CodiIgniter последний, честно сказать скорость минимально отличается у симфонии, при созданной модели и работу через ORM, при этом у CI ничего не создано и просто вывод нескольких строк. При этом акселератор не стоит и ничего не кешируется для симфони,.. а скорость всего 2,5 раза отличается
Ясное дело что на хост за 300руб симфони бесполезно ставить, ..
Ну ладно, чет я отошел от темы, наверно следующим и буду учить джанго.
Немного приоткрою карты как мы выбирали framework(fw). Изначально было 3-и кандидата CodiIgniter(CI), ZendFramework(ZF) и Symfony. CI - выбыл сразу т.к. по скорости и возможностям уступает нашему. ZF - очень похож на наш текущий, но кроме документации и пару модулей, которые можно встроить в “наш” framework, ничем особым не отличается, минус ZF - это тормоза! Symfony - плюс, они же грабли это ORM. Т.е. если выкинуть из symfony ORM, то никаких плюсов мы не получим…. Собственно ситуация тупиковая. Нам нужен был framework c документацией(у нас её нет), не тормознутый + нам важна скорость разработки,у нас она так же хромает из-за особенностей нашего fw. Минусы нашего fw, это остсутствие документации, не дописанность домена;), нет классов Request/Resonse (мне оч нужны они ;)). Что бы написать всё то, что нам нехватает надо примерно месяц, и не факт что скорость работы у нас увиличится. Собственно посмотрев на django, и было принято решение юзать его! Т.к. минусов там замечанно не было….
Михаил, а на каких объемах данных вы проводите тесты? Сколько миллионов записей в таблицах тестируемого приложения? На сколько сложна модель предметной области?
Вот когда появится “объем” и “сложность” Симфони и начнет тормозить, а программист на CodiIgniter вообще умрет от сложной предметной области ))) В которой скажем, хотя бы 40 моделей.
Andrey, скоро мы узнаем и минусы =)
Да от ORM существенно страдает скорость, но как не крути тут нужно выбирать между гибкостью и производительностью.
Но это не единственный плюс, есть еще проуровневая конфигурация(на уровне модулей, приложений, общая), плагины некое подобие с Джанго, фильтры, отлично реализован сам принцип рефакторинга когда нужно к примеру чтот отладить потому что из-за какого то метода на юнит(функциональном) тесте провалилось приложение, т.е. я не боюсь потерять данные даже при полной перегерации модели. Ну и шелл конечно, хотя тут уже как кому, некоторым CRUD легче вручную создавать, и выгружать несколько тысяч записей, через phpmyadmin нежели написать цыкл в yml файле и выгрузить сразу. Все это конечно влияет на скорость. Распарсивание, перегенерация итд. …
Модель всегда можно разделить ;) И оставить вместо 20 общих методов, 5 для каждого модуля. Я выше об этом писал.
Я как вы думаете на каких объемах я провожу тесты? Конечно же не ютуб,.. да хотя бы один тест найдите мне на просторах нэта, где тестеры оперируют миллионами строк. Их нет. Никто не будет тратить время на реализацию этого для open source, юзеры - это тестеры.
Вот приложение на Джанго torontolife.com, зайдите на офф сайт симфони там есть список тоже таких порталов на уровне mtv-шных сайтов разных стран, которые беспрепятственно работают именно из-за удачного проектрования, и распеределение нагрузок на уровне моделей разработчиком(ами).
.. да переходите на линукс, для разработчика он дружелюбнее особенно на питоне. ))
Ну я уже перешёл! и Толю подбиваю ;)
Мы не только на работе разрабатываем ;)(там на железо относительно пофиг), но и для себя, где железо критично!
Михаил, спасибо за столь подробный ответ. Из PHP-фрэймворков я сам, больше всего поглядывал в сторону Symfony. Но когда увидел практически все тоже самое в Джанго, мое сердце не выдержало ))) Мне показалось, что для освоения Джанго легче, не смотря на то, что PHP я знаю очень хорошо, а Python только пару раз видел.
А вот этот вопрос очень спорный. Как говорит, один наш коллега: “Удобство - дело привычки“. Так вот, я очень привык к Винде, мне в ней нравится практически все, не устраивает только недоразвитая консоль )
Я на этих выходных ставил себе на ноут Ubuntu 8.10. Установил, поднастроил и вроде все ОК. Но!
Я конечно попробую, установить Ubuntu на рабочей машине (она раз в 5 мощнее чем мой ноут)) посмотрим, что из этого выйдет.
Я когда ставил первый раз линукс, это была версия убунту 7 мне вроде бы все понравилось но я тоже жутко тогда был приучен к винде, бесило многое, особенно sans шрифт везде, но терминал радовал, недельку поиграл и снес. Но потом вышла 8 версия, захотелось поставить не знаю почему даже, когда я пересел второй раз мне как то даже удобно было, решил винду оставить только из-за 4 программ, photoshop & multipleIE(верстка), fl studio(хобби), wm keeper(мани). И оказалось что этого мне достаточно .. Про виртуал бокс знаю, но не люблю извращаться, и 10gb для винды не жалко, так и сижу у же не так долго и о назад даже не думаю.
Так что _Удобство - дело привычки_ это точно.
ФФ вроде не тормозит, а вот флэш плэер 10 ведет себя по разному на плэере zombobox-a есть тормоза, на ютубовском все ок, даже на баннерах есть иногда торможение, что заставляет ФФ тупить. Это минус. А эклипс я не юзаю, как то старой привычке еще сижу на Zend for Eclipse.
Ладно как то еще загляну )), надеюсь отпишитесь как там с Джанго а то ведь интерестно ..
- поставте red hat 9! вот это были шрифты!
- тот же Eclipse только с плагином от зенда ;)
- lite версия отлично работает под линуксом!
- Как то уже к gnome привык, если честно, да и шрифты тоже не проблема настроить. Хотя посмотрел скрины круто смотрится.
- Насчет Zend-a в курсе, даже не знаю почему его использую ))
- Конечно я могу ошибаться, но легкая версия, требует сертификат? или нет? Купил бы если бы не так далеко от центров wm жил, а ехать не охота )) И еще слышал что могут залочить если суммы больше 1к у.е., а я фрилансер, и все деньги тока туда ;) не хочется как то облажатся )) Поправьте если не прав.
Не прав, я и с большими суммами нормально работал, когда плотно сидел на фрилансе, все ОК.
Михаил, по wm проще в поддержку написать… я h3 какие там ограничения :)
Толь, имеется ввиду Lite версия которая браузерная
Согласен, что нельзя засиживаться на одной технологии - я решил двигаться в направлении Ruby.
А почему именно Ruby? Ведь скорость он не блещет, хостингов под него практически нет, если только VDS.
Какие у него объективные плюсы, например, перед Django?
Меня приятно удивил по скорости работы FW Kohana. Функционала не много, зато все просто и быстро. Хорошая основа для приложения.
Я тоже пересел на linux с убунты 8, для кода использую eclipse (spket, aptana) и netbeans. По мелочи gedit )
Ruby меня привлекает больше чем python, наверно синтаксисом
Павел, Kohana это всего лишь, немного модифицированный CI, со всеми вытекающими ))) По функциональности он не дотягивает до Symfony, Django & RoR.
Да и по сравнению с Джанго он медленный )))
А вот этого что-о не допонял… как можно пересесть на линух с убунты?
Синтаксис это мелочь, к любому синтаксису привыкаешь, максимум за месяц. Точнее если синтаксис нравится привыкаешь за пару дней, если нет - за неделю )))
может быть посмотрите на yii http://www.yiiframework.com/
xoma, сморел. Но мне не понравилась работа с моделями:
Уж очень не красиво это выглядит, если сравнивать с Django ActiveRecord.
PHP я конечно бросать пока не собираюсь, но в ближайшее время все основные силы будут брошены на освоение Django.
Т.к. 10-дневные каникулы уже дали свои плоды и я могу уже с уверенностью сказать: Django действительно увеличивает скорость разработки. Причем на порядок!
И в дополнение к мотивации выбора Django.
Тестирование производительности 6 популярных FW.
Я кстати тоже начал Ruby осваивать, классный язык(не для холивара сказано) а там и к питону не далеко.
А что касается > хостингов под него практически нет .. сорри но тут вы не правы, вот у меня куплены 3 хоста шэрд под сайты, не мелкие провайдеры, и на них как раз django нет, а рельсы есть ;)
А насчет обьективности, я бы сказал, как самый обьективный не давно пришедший из пыха в руби, я сам не предполагал как это удобно писать на чистом ооп.
Эта статистика достаточно старая, ее сейчас нельзя считать обьективной с любой стороны так как тестируются достаточно старые версии ПО.
Мой блог есть там в списке :)
Да я вот только первые недели знакомлюсь с django и вообще я поражен до глубины души, насколько там все просто и гибко… все жду граблей :)