LINUX.ORG.RU

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


0

3

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

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

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

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

Сколько еще таких систем ты знаешь (неважно на каких языках), скажи?

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

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

> Я слабаю такую архитектуру, которая нравится мне.

Архитетурные лабухи детектед, все в машину!

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

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

Жава сама по себе уродская, но либы там нормальные. Смотрю вот на скалу. Пока сыровато, рефакторинг в IDEA так себе, да и язык синтаксически перегружен. Но жить вроде можно, думаю смогу к ней привыкнуть.

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

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

> мне по барабану

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

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

Ну если ты работаешь бок о бок с индусами, то может стоит задуматься? У меня таких проблем опять же нету. Я не фатназирую это именно так.

Если ваша цель делать сайты-визитки, дерзайте.

dizza ★★★★★
()

В джанге все прибито гвоздями. Хочешь гибкости, бери pylons.

FractaIL
()

Не видел Django, но SQLAlchemy (кстати, рекомендую) получше некоторых разбирается, что и как хранить.

Кстате, в SQLAlchemy фактически 2 API: выскоуровневое (такого же типа, как в Django) и низкоуровневое (близкая обёртка вокруг SQL).

Python - классный язык. Удачи)

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

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

+1
А потом посмотри в сторону перловых Catalyst и Mojolicious

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

Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.

anonymous
()

HATE!!!11

Это такой троллинг нынче? Или на вопрос про Джанго отвечают те, кто Джанго в глаза не видел?

59 комментариев и все метафизические! Что сегодня с Лором? Все питонщики отдыхают?

По сабжу: ТС, ты бы хоть дочитал до конца раздел, перед чем такой вопрос задавать. Есть же:

models.IntegerField
models.PositiveIntegerField
models.PositiveSmallIntegerField
models.SmallIntegerField
...

В общем, совет ТС: бросай учить джанго, тут велосипеды не канают. Продолжай быдлокодить на пыхе

Donnie_Darko
()
Ответ на: HATE!!!11 от Donnie_Darko

а для тех, кто обладает альтернативными способностями в PHP/MySQL и не может прочитать простой мануал по Django, привожу ссылку:

https://github.com/beka/Wordpress-Django-Admin/blob/master/models.py

Это админка для вордпресса на джанге, которая способна работать прямо поверх базы wordpressa без всяких изменений

372 строчки - готовая админка для вордпресса. Кто-то еще сомневается, что в Джанго-ОРМ int хранится как varchar ;)

Donnie_Darko
()
Ответ на: HATE!!!11 от Donnie_Darko

> В общем, совет ТС: бросай учить джанго, тут велосипеды не канают. Продолжай быдлокодить на пыхе

Не так сразу. Он ещё не потерян для нас, бутылистов. :-)

kid_lester
()

> а ну как какой-нибудь tinyint(1) в виде text хранит

Кхм, ты чем читал? SmallintegerField же

Каких типов полей тебе не хватает?

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

> ему пхп мозг съел

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

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

>> а ну как какой-нибудь tinyint(1) в виде text хранит

Кхм, ты чем читал? SmallintegerField же

Это была гипербола. Читал, конечно.

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

>А ты уже пресловутая Python-илита?

неа, мне, кстати, питон не по душе.

Я сказал что учусь и даже написал на каком уровне знаю как Python, так и Django


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



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

Гиперболе никто не мешает создавать структуру БД самостоятельно, и даже запиливать свои собственные типы полей.

Более того, никто не заставляет свои модели наследовать от models.Model.

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

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

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

Но пока что ковыряю Джангу дальше.

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

> Гиперболе никто не мешает создавать структуру БД самостоятельно, и даже запиливать свои собственные типы полей.

Более того, никто не заставляет свои модели наследовать от models.Model.

Да, это в плюс Джанге. Кстати, можно про создание структуры БД самостоятельно поподробнее?

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

ну так, в чем проблема?

вариант а) создаешь структуру бд ручками(CREATE TABLE users(id INT...)) а потом описиваешь модели в джанго, смотри выше мой коммент - про ВСЕ модели wordpress-a в джанго. Хинт: у моделей в джанго есть мета-класс, где все такие вещи описываются.

вариант б) если ВНЕЗАПНО не нашел точный аналог типа в MySQL в Django-ORM можешь создать собственный Field - http://docs.djangoproject.com/en/1.2/howto/custom-model-fields/

вариант в) php-way:

from django.db import connection
    cursor = connection.cursor()
    cursor.execute("тысяча строк чистого SQL")

вариант г)выкинуть django-orm и подклучить к django-проекту sqlalchemy. да так тоже можно!

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

То есть если я ручками при проектировании таблицы укажу tinyint там, где не требуется SmallIntegerField, проблем с самой Django не будет? И насколько этот подход нормальный по меркам пректов на Django? Костылём/грубым хаком не считается?

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

>То есть если я ручками при проектировании таблицы укажу tinyint там, где не требуется SmallIntegerField, проблем с самой Django не будет?

конечно, проблемы будут.
точнее, они будут когда Django-ORM исполнит неверный SQL-запрос.
Если при проектрировании таблицы указиваешь tinyint, будь добр и в Django-моделях прописать соответствущий филд. С нехваткой филдов в django проблем не будет, будь уверен.

При проектировании на django, наверное стоит уделить внимание именно проектированию моделей, а не погружаться в mysql. Позволь django самому построить БД.

Посмотри скринксаты( http://showmedo.com/videotutorials/video?name=3360000&fromSeriesID=336 ), думаю многое встанет на свои места

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

Спасибо. Пожалуй, он мне начинает нравиться.

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

вариант а) создаешь структуру бд ручками(CREATE TABLE users(id INT...)) а потом описиваешь модели в джанго

А еще, где-то я видел костыль который генерит код моделей опираясь на схему базы данных.

Насчет проблем int/tinyint ящитаю что это последнее о чем нужно думать, потому что tinyint мало того что совсем не обязательно быстрее, так он местами может быть и медленее.

redixin ★★★★
()

> С фреймворками как-то не складывалось, казались избыточными, а на голом пыхе писать было легко, быстро и приятно.

+1

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

anonymous
()
Ответ на: HATE!!!11 от Donnie_Darko

> В общем, совет ТС: бросай учить джанго, тут велосипеды не канают. Продолжай быдлокодить на пыхе

Чистый PHP - это как ассемблер для веба. А твой петон - как Visual Basic. Так что быдлокодер тут ты.

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

> Насчет проблем int/tinyint ящитаю что это последнее о чем нужно думать, потому что tinyint мало того что совсем не обязательно быстрее, так он местами может быть и медленее.

Мне в первую очередь не хотелось бы терять те преимущества, что давал PHP. Когда счёт записей в БД идёт на десятки и сотни тысяч, приходится задумываться и об оптимизации по объёму, занимаемому данными на диске. Например, те же логи. Скорость разработки - последнее что меня интересует. Но, конечно, не надо фанатизма с советами юзать ассемблер.

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

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

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

> тот же Disqus написан на Django и держит ~17.000 запросов в секунду.

Именно это меня привлекает и мотивирует изучать Python+Django, но по доступным ресурсам сервера, в частности, оперативной памяти, я ограничен и буду ограничен ещё несколько лет.

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

> Django - не серебренная пуля. Если нужно на одном vps деражть over 9500 rps - смотри в сторону erlang-a и Си

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

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

> Чистый PHP - это гибкость, простота и минимализм.

Что, слишком толсто получилось? Пойду дальше тренироваться.

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

> Мне в первую очередь не хотелось бы терять те преимущества, что давал PHP.

Они никуда не денутся. Если стесняют рамки высокоуровневости — можно опуститься на уровень ниже, где эти рамки более широкие. Джанга позволяет без особых трудностей спускаться сколько угодно низко, вплоть до C/C++ с ассемблерными вставками.

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

> Они никуда не денутся. Если стесняют рамки высокоуровневости — можно опуститься на уровень ниже, где эти рамки более широкие. Джанга позволяет без особых трудностей спускаться сколько угодно низко, вплоть до C/C++ с ассемблерными вставками.

Супер. То, что надо.

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

Кстати, как у него с потреблением оперативки в среднем? IPB 3 или vBulletin 4 - в принципе, на 256 мегах свободно себя чувствуют, да ещё мегабайт 50-70 остаётся свободно. При том что на хостинге юзается lighttpd + PHP 5.2 + MySQL 5.1 + Postfix и больше ничего. Если выкинуть из этой связки PHP и вместо неё прикрутить Python, форум такой же функциональности на Django с минимальным использованием сторонних библиотек сколько будет потреблять оперативы - больше, меньше?

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

>сколько будет потреблять оперативы - больше, меньше?

Из того что видел — от 15 до 35 мегабайт на один процесс. Процессов обычно запускают по одному на процессорное ядро, плюс еще пару штук.

Вобщем середнячковое приложение, на vpsке с одним процессоным ядром, запущенное в три потока, съест 40-60 мегабайт. На самом деле это не мало, но радует что оно не течет.

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

Dive into python. Похуй если ничего не поймешь.

Пролистал по диагонали, вроде все знакомо

скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent

С обоими впринципе знаком :)

Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce

На hadoop сделал пару проектов, не впечатлило - оно походу low-level фреймворк. А вот Cascading, который поверх hadoop мне очень даже понарвился.

Из key-value только с redis и memcachedb работал. Оно все круто, но не всегда можно полностью от sql-базы отказаться. Не хочется попрой eventually consistence городить, а сделать на старом добром acid, а базу пошардить.

и уже через пол года ты будешь получать такие суммы,

На зп не жалуюсь, работаю в престижной компании и все такое. Ну может чуть больше, чем в среднем получаю. Так что хз насчет «тааких сум».

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

Поговорил с петушинской копипастой?

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

а hadoop не понравился только из-за low-level-ости?

На mapper-ах и reducer-ах далеко не уедешь, слишком муторно. Хочется чего-то более выскоуровневого, по-ближе к sql

если не секрет, какие были проекты на hadoop?

Реализация page rank и анализ access-логов.

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

>На mapper-ах и reducer-ах далеко не уедешь, слишком муторно. Хочется чего-то более выскоуровневого, по-ближе к sql

Вот такое есть - http://pig.apache.org/, правда сам я не пробовал. По описанию очень круто.

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

Pig и HBase мне не понравились. Очень уж тяжелые. Это какая-то поптыка воссоздать SQL на базе хадупа. А когда я последний раз смотрел еще и сырые были. ИМХО cascading (cascading.org) самое лучшее из того, что на базе хадупа для анализа данных, т.к. это довольно тонкий слой абстракции над map-reduce, позволяющий писать в flow-парадигме, т.е. примерно как с помощью unix-пайпов.

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