LINUX.ORG.RU

Вопросы пыхера по Django


0

3

Всю жизнь быдлокодил на PHP. С фреймворками как-то не складывалось, казались избыточными, а на голом пыхе писать было легко, быстро и приятно. Разве что по мелочам там - шаблонизатор, класс доступа к БД поюзывал.

И вот, значит, захотелось чего-нибудь эдакого поизучать для расширения кругозора. Начитавшись о перспективности Python и Django, выбор пал на них.

Открываю доку по моделям в Джанге, фокусирую взгляд на тексте. Соседи за стеной подпрыгивают от внезапного треска тормозных колодок. Ребят, объясните. Я чего-то недопонимаю или в моделях нельзя указать даже банальное unsigned int или text в типах полей MySQL? Читаю и чувствую себя настолько неуютно, будто значение int предлагают хранить в колонке с типом varchar. Боюсь читать доку дальше - а ну как какой-нибудь tinyint(1) в виде text хранит.

ты не поверишь, даже в JPA 2.0 нет возможности руками указать тип данных в DB. А знаешь почему? Потому что фреймворку с этим полем работать и ему виднее в чем хранить. Тебе выдали на-гора бизнес обьект - с ним и работай, а детали реализции оставь фреймворку. Алсо, привет поддержки многих DB (надеюсь что джанга это умеет). Сам понимаешь, в этом случае указать прямой тип опасно и невожможно провалидировать.
И не надо рассказывать сказки о производительности - фреймворки писали ребята покруче нас - они знают что делают, это во-первых, а во-вторых, эелезо дешевле работы программиста, а отсутствие такой замечательной возможности выстрелить себе в ногу, как явное указание типа колонки в таблице очень сильно играет на руку производительности программиста.

JFreeM ★★★☆
()

ну точнее я загнул, возможность-то есть но к счастью запрятанная и через одно место. Я и то не сращу вспомнил. Но тем не менее, все вышесказанное остается в силе.

JFreeM ★★★☆
()

в sqlalchemy вроде можно, только я еще доку по нему до конца не дочитал

anonymous
()
Ответ на: комментарий от JFreeM

> ты не поверишь, даже в JPA 2.0 нет возможности руками указать тип данных в DB.

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

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

В смысле, чем больше ограничений, тем производительней работа программёра?

karbofos
() автор топика
Ответ на: комментарий от karbofos

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

В смысле, чем больше ограничений, тем производительней работа программёра?

как ни странно. Ярчайший пример - C++ и Java/.NET - в последних нет возможности напрямую управлять памятью и в результате скорость разработки на них на порядок выше, чем на C++

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

> ну точнее я загнул, возможность-то есть но к счастью запрятанная и через одно место. Я и то не сращу вспомнил. Но тем не менее, все вышесказанное остается в силе.

Я не Ъ-ынтырпрайз решение пишу, а просто хочется чего-нибудь для себя покодить. Соответственно, сделано должно быть не абы как лишь бы работало и в сроки.

Или я не тот инструмент выбрал? Я про Django, а не Python. Может есть что-то более близкое к возможностям голого пыха, но не настолько низкоуровневое как голый Python?

karbofos
() автор топика
Ответ на: комментарий от anonymous

> в sqlalchemy вроде можно, только я еще доку по нему до конца не дочитал

Вот кстати, да. Наслышан о нём, надо будет посмотреть.

karbofos
() автор топика
Ответ на: комментарий от karbofos

>Я не Ъ-ынтырпрайз решение пишу, а просто хочется чего-нибудь для себя покодить. Соответственно, сделано должно быть не абы как лишь бы работало и в сроки.
Ынтерпрайз не делается кое-как, у него есть очень сложные условие приемки и довольно жесткие требования по тестированию.

Или я не тот инструмент выбрал? Я про Django, а не Python. Может есть что-то более близкое к возможностям голого пыха, но не настолько низкоуровневое как голый Python?

Нет, все правильно. Джанга считается лучшим (afaik и единственным) средаством для быстрой разработки веб-приложений.

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

> я не спец в джанге, но разве она не умеет любой класс из встроенной библиотеки маппить в базу?

Тоже не спец, не могу сказать.

как ни странно. Ярчайший пример - C++ и Java/.NET - в последних нет возможности напрямую управлять памятью и в результате скорость разработки на них на порядок выше, чем на C++

С этим согласен, но БД - штука достаточно тонкая чтобы к ней так легкомысленно относиться.

karbofos
() автор топика
Ответ на: комментарий от JFreeM

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

Может стабильности и уделяют внимание, а вот скорости работы и внешнему виду забывают.

karbofos
() автор топика
Ответ на: комментарий от stevejobs

> Когда наиграешься с джангой, поиграй в Pylons + SQLAlchemy. Hope this helps ;)

Да-да, уже сам к этому варианту склоняюсь. Одна проблема - Pylons прекратили развивать, а их новый проект пока ещё на ранней стадии развития.

karbofos
() автор топика
Ответ на: комментарий от karbofos

Может стабильности и уделяют внимание, а вот скорости работы и внешнему виду забывают.

насчёт скорости - правильно, там не скорость, а масштабируемость важна, а внешний вид - он просто строгий, без свистелок и перделок, некоторых смущает - да

shty ★★★★★
()
Ответ на: комментарий от karbofos

>Может стабильности и уделяют внимание, а вот скорости работы и внешнему виду забывают.
Про внешний вид ничего не скажу, однако вреди продуктов одного вендора он обычно единообразен, так чтобы существующий user expirience не потерялся даром. Это то, что действительно важно, не свистелки.
О производительности - тут вы ошибаетесь, на производительность тоже есть строгие требования. Так или иначе, развернутое на домашнем компьютере enterprise приложние конечно не будет работать с той скоростью, с которой положено, потому что в требованиях прописано необходимое железо.

JFreeM ★★★☆
()
Ответ на: комментарий от shty

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

JFreeM ★★★☆
()
Ответ на: комментарий от shty

> насчёт скорости - правильно, там не скорость, а масштабируемость важна, а внешний вид - он просто строгий, без свистелок и перделок, некоторых смущает - да

Вот это для меня как раз лишнее. И я знаю, что ограничение типов полей позволяет более гибко использовать различные базы данных, но ТАКИЕ ограничения - это как-то нездорово.

karbofos
() автор топика
Ответ на: комментарий от JFreeM

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

не, ну вне контекста можно о разном порассуждать :) скорость обслуживания клиентских запросов мы ведь не обсуждали, не? в данном случае мной подразумевалось что на машине у ТС сферический «энтерпрайз» может работать с дикими тормозами, но при этом на 20-узловом кластере обслуживать 10 млн. клиентов одновременно и прекрасно себя чувствовать

shty ★★★★★
()
Ответ на: комментарий от karbofos

> правильно, там не скорость, а масштабируемость важна

Вот это для меня как раз лишнее.


масштабируемость это и есть скорость! Вместо того, чтобы программер месяц писал очередную оптимизацию по скорости (баги и головная боль заказчика в комплекте) — просто втыкаем в стойку еще пару блейдов, и за считанные часы скорость приложения самолётно возрастает :)

stevejobs ★★★★☆
()
Ответ на: комментарий от karbofos

Вот это для меня как раз лишнее. И я знаю, что ограничение типов полей позволяет более гибко использовать различные базы данных, но ТАКИЕ ограничения - это как-то нездорово.

не, ну харе вайнить уже - просто попробуйте, Django ORM довольно таки продвинутая штука, широко признанная и много где использующаяся, наверное в мире не все подряд идиоты

и да, Ваши рассуждения - суть рассуждения какого-нибудь сишника-пуриста об ООП

shty ★★★★★
()
Ответ на: комментарий от stevejobs

> масштабируемость это и есть скорость! Вместо того, чтобы программер месяц писал очередную оптимизацию по скорости (баги и головная боль заказчика в комплекте) — просто втыкаем в стойку еще пару блейдов, и за считанные часы скорость приложения самолётно возрастает :)

Я решил поучиться Python, написав форум. Так что мои требования к фреймворку и языку программирования, думаю, более конкретно обозначились. В перспективе двинуться с ним в сторону интерактивности, юзая Ajax, но не так как он понапихан где попало в других форумах, а опять же, думая где с ним будет удобнее.

Всё это just for fun. Без того говна которое напихали в vBulletin 4 и IPB 3, делающее их Ъ-ынтырпрайзными, но абсолютно неюзабельными.

karbofos
() автор топика
Ответ на: комментарий от shty

> не, ну харе вайнить уже - просто попробуйте, Django ORM довольно таки продвинутая штука, широко признанная и много где использующаяся, наверное в мире не все подряд идиоты

Я и пробую, но в то же время меня интересует вопрос не потеряю ли я время впустую, может всё же SQLAlchemy лучше поизучать.

и да, Ваши рассуждения - суть рассуждения какого-нибудь сишника-пуриста об ООП

Я честно хочу понять, что в Python и Django такого крутого и открыт для всех доводов, которые приведут, которые тщательно обдумываю и анализирую. :) Но пока что получается PHP-макаки знают как что всё работает и устроено намного лучше чем питонщики-джангисты, которые могут даже не подозревать что сохраняют в базу данных, а не куда-нибудь ещё.

karbofos
() автор топика
Ответ на: комментарий от karbofos

>Может стабильности и уделяют внимание, а вот скорости работы и внешнему виду забывают.

Медленно работающее — лучше неработающего быстро.

KRoN73 ★★★★★
()
Ответ на: комментарий от karbofos

>которые могут даже не подозревать что сохраняют в базу данных, а не куда-нибудь ещё.

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

btw, преждевременная отпимизация - корень многих бед.

JFreeM ★★★☆
()
Ответ на: комментарий от karbofos

> Но пока что получается PHP-макаки знают как что всё работает и устроено намного лучше чем питонщики-джангисты, которые могут даже не подозревать что сохраняют в базу данных, а не куда-нибудь ещё.

точно так же как прогер на плюсах может не знать, что там на низком уровне. А жаверы этого не могут узнать в принципе. Работает комбинация правил «меньше знаешь - дольше спишь» и «работает - не трожь» ;)

например, какая тебе разница, как именно сохраняются данные в БД, если они сохраняются, причем заведомо лучшим для выбранной технологии способом? (раз уж в выбранной технологии способ поменять нельзя).
Ну его этот ваш питон, возьмем нашу жабку ;) ORM Hibernate каждым запросом генерит многостраничную портянку sql-запроса, которую затем отправляет в базу данных. Я даже могу эту портянку посмотреть и прочитать, но толку-то? ;)

stevejobs ★★★★☆
()
Ответ на: комментарий от shty

> что тут дискасс? сначала научись отличать фреймворк от языка

Ты глупый, что ли?

PHP сам по себе прото-веб-фреймворк, если на то пошло.

10 лет назад PHP был универсальным ответом на вопос «на чём быдлокодить говносайт». А сейчас его вытесняет джанга. Иногда почитаешь джанговскую рассылку, какие там дикие вещи спрашивают разные китайцы и русские, аж жуть берёт.

vasilenko ★★
()
Ответ на: комментарий от karbofos

> не, ну харе вайнить уже - просто попробуйте, Django ORM довольно таки продвинутая штука, широко признанная и много где использующаяся, наверное в мире не все подряд идиоты

Я и пробую, но в то же время меня интересует вопрос не потеряю ли я время впустую, может всё же SQLAlchemy лучше поизучать.

если есть время - поизучайте, SQLAlchemy более поздняя разработка ЕМНИП, и более продвинутая, кроме того не пристреленная гвоздями, пусть даже и условно, к фреймворку

вообще в этом вопросе моё мнение такое - надо знать и то и другое, джанга попроще в изучении, пилонс потенциально более гибкий

пока что получается PHP-макаки знают как что всё работает и устроено намного лучше чем питонщики-джангисты, которые могут даже не подозревать что сохраняют в базу данных, а не куда-нибудь ещё

1. если Вам с макаками, пищущими весь код в одном длинном файлике (удобно, ёба), по пути - никто Вас лично отговаривать не станет
2. Вы знаете что такое абстракция?
3. никто лично Вам не мешает использовать голый SQL из питона и ручками всё писать/читать

shty ★★★★★
()
Ответ на: комментарий от stevejobs

>Ну его этот ваш питон, возьмем нашу жабку ;) ORM Hibernate каждым запросом генерит многостраничную портянку sql-запроса, которую затем отправляет в базу данных. Я даже могу эту портянку посмотреть и прочитать, но толку-то? ;)

ну например возьмешь нормальный ORM фреймворк, который не спамит базу запросами ;) типа EclipseLink

JFreeM ★★★☆
()
Ответ на: комментарий от vasilenko

> А сейчас его вытесняет джанга.

джанга? вытесняет? количество вакансий джангистов - несколько человек в месяц, а пхпшники требуются каждый день пачками ;)

stevejobs ★★★★☆
()
Ответ на: комментарий от vasilenko

раз до тебя плохо доходит, повторю: сначала научись отличать фреймворк от языка :)

shty ★★★★★
()
Ответ на: комментарий от stevejobs

не знаю, где там, что и кого вытесняет, но скажу что питонщики - самые дешевые программисты в США

JFreeM ★★★☆
()
Ответ на: комментарий от stevejobs

Отстаёшь от жизни. Глобальный Надёжный в последние годы сильно сдаёт.

vasilenko ★★
()
Ответ на: комментарий от JFreeM

> а теперь ответьте себе на вопрос: а какая собственно Вам лично разница на этапе написания приложения? Куда-то сохраняем, главное - что берет то же, что и положили, остальное неважно.

btw, преждевременная отпимизация - корень многих бед.

На этапе написания приложения разницы нет, но тут другое: напишу я форум и придёт пора его оптимизировать. А потом выяснится что работа, на которую я потрачу много времени, окажется завязанной на решении которая никуда кроме XML писать не может, а отвязывать - переписывать 90% кода. Аналогия понятна? Я плохо представляю возможности фреймворка и завёл тему, чтобы поговорить с бывалыми джангистами, а не для того чтобы сказать «фуу этот ваш питон, остаюсь на пыхе».

karbofos
() автор топика
Ответ на: комментарий от stevejobs

> точно так же как прогер на плюсах может не знать, что там на низком уровне. А жаверы этого не могут узнать в принципе. Работает комбинация правил «меньше знаешь - дольше спишь» и «работает - не трожь» ;)

Пока что получается что Django ещё более высокоуровневое средство разработки чем голый PHP, на котором и без фреймворков быстро можно написать что-либо сложное.

И в связи с чем делаю вывод, что не хотет. Я всё-таки буду смотреть в сторону Pyramid/Pylons.

karbofos
() автор топика
Ответ на: комментарий от shty

> если есть время - поизучайте, SQLAlchemy более поздняя разработка ЕМНИП, и более продвинутая, кроме того не пристреленная гвоздями, пусть даже и условно, к фреймворку

Так и сделаю.

2. Вы знаете что такое абстракция?

Знаю. А есть ли в Python что-то типа http://pyha.ru/go/godb/ ? На мой взгляд, золотая середина между ORM и голыми mysql_*-функциями.

karbofos
() автор топика
Ответ на: комментарий от karbofos

>А потом выяснится что работа, на которую я потрачу много времени, окажется завязанной на решении которая никуда кроме XML писать не может, а отвязывать - переписывать 90% кода.

Абсолютно правильно. Для этого стоит просто исспользовать стандартные приемы, паттерны и фреймворки. Джанго -стандартный фреймворд для веба для питона. Используйте. Вот неплохой ресурс по джанго, как мне кажется http://softwaremaniacs.org/blog/ . Как говорит сам автор «Django Веб-фреймворк для Питона. Один из лучших способов программировать для веба.» Судя по тому, что в других областях я с ним согласен, думаю, в этой он тоже не ошибся

JFreeM ★★★☆
()
Ответ на: комментарий от JFreeM

Гм, если уж Сагалаев рекомендует, я его ещё немного поковыряю. Может сойдёт на меня озарение. :) Пока что чувствую что чего-то сильно недопонимаю в его сути, а чего - хз.

karbofos
() автор топика

Вот, кстати, довольно приятно сделанная штука: http://yourfilms.org/, сделан на Django.

karbofos
() автор топика
Ответ на: комментарий от karbofos

> Или я не тот инструмент выбрал? Я про Django, а не Python. Может есть что-то более близкое к возможностям голого пыха, но не настолько низкоуровневое как голый Python?

Близкое - писать на python одним пальцем.

Простое:

twisted, tornado - совсем низкоуровневое

cherrypy - не знаю, к умным или к красивым, там, в принципе, всего и много.

bottle, flask, webpy - микрофреймворки. bottle - самый простой и приятный на чтение код, flask - больше возможностей, webpy - чуть получше

всё что дальше, уже бесконечно далёкое от возможностей php.

anonymous
()
Ответ на: комментарий от vasilenko

> 10 лет назад PHP был универсальным ответом на вопос «на чём быдлокодить говносайт». А сейчас его вытесняет джанга. Иногда почитаешь джанговскую рассылку, какие там дикие вещи спрашивают разные китайцы и русские, аж жуть берёт.

Джанга это скорее замена друпала, чем php.

anonymous
()
Ответ на: комментарий от stevejobs

> джанга? вытесняет? количество вакансий джангистов - несколько человек в месяц, а пхпшники требуются каждый день пачками ;)

Дык php-шники расходный материал. Или их отправляют на историческую родину в Индию, или они сходят с ума, или, вменяемые, быстро перерастают php и писать на нём что-нибудь отказываются даже под угрозами физического насилия.

anonymous
()
Ответ на: комментарий от karbofos

>Знаю. А есть ли в Python что-то типа http://pyha.ru/go/godb/ ? На мой взгляд, золотая середина между ORM и голыми mysql_*-функциями.

Стандартный DB-API питона же. Например MySQLdb или psycopg2 (для постгреса).

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

anonymous
()
Ответ на: комментарий от anonymous

и не twisted а twisted-web. плюс туда же paste. плюс ещё есть weblib.

есть nevow, в котором написано, что это mvc для нищих духом. я, впрочем, mvc не понимаю, поэтому всегда радуюсь таким решениям, php-шникам это будет по зубам.

к микрофреймворкам ещё плюс sponge (cherrypy3 + genshi).

есть quixote1.

ну а к чему повыше, кроме django и pylons есть web2py и turbogears, например turbogears это pylons + sqlalchemy + genshi + аутентификатолка repoze)


А вообще, таких наборов уйма, чаще всего это набор из (популярный шаблонщик + популярный orm + твистед/черри), тут работает принцип «do not velosipead yourself»

это я только то, что есть в репозитории debian, перечислил (кроме web2py).

anonymous
()

После того как в универе прошел курс «языки описания сценариев» на котором php давался, я был крайне удивлен его простоте, но так как я питаю странную привязанность к python, мне захотелось найти некий инструмент на питоне, который был бы похож на php. Начал с django и тоже как вы запутался, вот сейчас пробую bottle, и еще хочу попробовать pylons.

sol13 ★★★★★
()

Все правильно. Кал этот ваш Django и RoR (кстати, судя по количеству вакансий, php-ники глобально переходят на Ruby On Rails). Возможно более-менее SQLAlchemy. Из нормальных ормов я видел разве что жабский Hibernate и то глючный изо всех мест.

Изучи паттерны. Научись писать DAO. Изучи memcached. Прочиай про шардинг. Научись тюнить базу и запросы. Используй удобные либы, не используй ограничивающие тебя фреймворки. И пиши на них что-нибудь нормальное. Благо с мощными профессиональными инструментами ты можешь по-круче написать, чем на ламерском фреймворке.

dizza ★★★★★
()
Ответ на: комментарий от dizza

> чем на ламерском фреймворке

джанга как раз пример не ламерского фреймворка — они умудряются сохранять баланс KISS, «человеческой простоты» (которая не KISS), желания ассемблоидов писать ассемблер и желания архитектурных астронавтов иметь одну CMS на все случаи жизни. Сколько еще таких систем ты знаешь (неважно на каких языках), скажи?

stevejobs ★★★★☆
()
Ответ на: комментарий от dizza

>Используй удобные либы, не используй ограничивающие тебя фреймворки. И пиши на них что-нибудь нормальное. Благо с мощными профессиональными инструментами ты можешь по-круче написать, чем на ламерском фреймворке.

Я догадываюсь, что вы говорите о джаве.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.