LINUX.ORG.RU

bottle vs pyramid vs все-все-все

 , , ,


0

2

UP: код в топике нафиг не нужен т.к. всё это есть в bottle, надо просто было доки читать внимательнее и больше гуглить

Здравствуйте мои дорогие любители похапэ и жабаскрипт. У меня кончились дедлайны, так что теперь я могу заняться лором :). Давече попросили знакомые кое-какой софтец для больницы налабать (название не скажу, хочу чтобы вам было страшно). Софт под винду писать не умею, зато у меня есть домашняя страничка из которой я начал выдирать куски для веб-интерфейса приложения. И вот как-то всё достигло апофегея когда фич стало страшно не хватать и я задумался о переезде на pyramid. Я посмотрел на What Makes Pyramid Unique. Давно я так не ржал. Вот основные фичи которые идут вначале:

  • Single-file applications

    You can write a Pyramid application that lives entirely in one Python file

  • Decorator-based configuration
  • Class-based and function-based views

Ну итд. Просто уникальнейшие фичи, да :)

Внимательный читатель понял что некоторые фичи в списке я сознательно упустил т.к. их таки нет в бутылке. Вот об этом и поговорим :).

Я ознакомился целиком с этим документом и понял что могу сделать сам, причём достаточно быстро и абсолютно прозрачно.

Наугад взял две веши.

1) Модульные приложения.

#settings.py
MODULES = ['wiki', 'blog', 'monitoring', 'paste', 'upload']

#site.py (в main())
modules = []
for module_name in MODULES:
    module = __import__(module_name)
    modules.append(module)
    if hasattr(module, "init"):
        module.init()

Хоть модуль, хоть package, будет работать тип-топ. Правда, потом узнал что в бутылке такой функционал есть, доки что-ли почитать.

2) Именованные локейшены.

Сначала я испугался, задача выглядела сложновато. А потом подумал что проблема простая, надо просто сделать маппинги названий, регекспов урлов (типа '/blog/{id}/') и вьюшек. После того как я сделал я понял что в бутылке это всё есть, только почему-то недокументировано (я исправлю это). Итак:

from bottle import get, redirect, default_app
app = default_app()
#named redirect
def nredirect(name, *args, code=None, **params):
    url = app.router.build(name, *args, **params)
    redirect(url, code=code)

Благо 3тыщи строк высококачественного кода распарсить было относительно легко и времени это не заняло. Код, как и положено, умеет передавать GET-параметры.

3) ну и надо бы каждому модулю свой префикс урлов сделать. Сказано - сделано:

class BaseRouter:
    __prefix__ = ''
    def __init__(self, url, tpl=None, **kwargs):
        self.url = self.__prefix__ + url
        self.tpl = tpl
        self.kwargs = kwargs

    def __call__(self, f):
        if self.tpl:
            f = mako_view(self.tpl)(f)
        f = route(self.url, **self.kwargs)(f)
        return f

class myroute(BaseRouter):
    __prefix__ == '/' + __name__

@myroute('/view/', tpl="template", method='GET')
def view():
    return dict(content="Hello, Hell")

Очевидно что префиксы можно выставлять хоть на этапе инициализации модуля, хоть прописывать в settings.py, хоть на лету менять.

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

Минусы тоже есть: 1) отсутствие стандартизации, каждый лепит свои костыли^Wнавороты 2) некоторое время уходит на дописывание функционала, но, ящитаю, для профи это буквально пара часов оверхеда. Зато +500 к чсв, имхо, оно того стоит :).

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

★★★★★

Последнее исправление: true_admin (всего исправлений: 3)

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

нафуй таких

добрых людей, готовых делать за тебя нудную работу :-?

наработки шарятся между проектами

О! ещё же выгоднее шарить чужие наработки.

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

основное время проводитсяя не за стучанием клавишь

Так и я о том. Настучать не проблема. Проблема потом это поддерживать, документировать, этому обучать, етцетцетц.

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

webob как и bottle используют cgi из стандартной библиотеки python

почему тогда bottleвские обертки (Request/Response) весят 25к, а webobовские Request/Response в сумме 104к, а вся webob 268к

4.0K	compat.py
4.0K	datetime_utils.py
4.0K	__init__.py
4.0K	util.py
8.0K	byterange.py
8.0K	cachecontrol.py
8.0K	client.py
8.0K	etag.py
8.0K	headers.py
8.0K	static.py
12K	acceptparse.py
12K	cookies.py
12K	dec.py
12K	descriptors.py
16K	multidict.py
36K	exc.py
44K	response.py
60K	request.py
268K	total

думаю не только используют cgi из стандартной библиотеки python, но и добавляют своих ништяков, webob добавляет больше?

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

добрых людей, готовых делать за тебя нудную работу :-?

у тебя какие-то странные представления о доброте, работе за деньги и о том что должен знать программист. Пока одни выучивают один фреймворк и становятся code monkey в какой-нить левой конторе, другие стараются получить действительно нормальное образование. См., например, список требований тут: sharpc.livejournal.com/67583.html (листай до списка).

О! ещё же выгоднее шарить чужие наработки.

именно. Для этого существуют гугл и куча сайтов типа github, sackoverflow итп.

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

думаю не только используют cgi из стандартной библиотеки python, но и добавляют своих ништяков, webob добавляет больше?

У webob больше функционала, но это опять же не принципиально, все что нужно для стандартного веб приложения в bottle - request и response обвязках есть

В werkzeug еще больше функционала , там есть работа с шифрованными куками ( правда и в бутылку их добавили) и сессиями

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

Ну как бы это давно известная истина. Те, кто изначально пишут в ad-hoc стиле либо вылетают из профессии, либо вырастают и действительно проводят большую часть своего времени за проектированием и поисками оптимальных алгоритмов без, собственно, кодинга. Кодирование - достаточно примитивная задача.

Рекомендую, кстати, книжечку - http://www.ozon.ru/context/detail/id/6252312/ Умные люди рассказывают про свои грабли, крайне познавательное чтение

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

спасибо. Поставлю в очередь на чтение

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

Вы опять о чем то несуществующем говорите. Прикладные приложения состоят на 95% из прикладного кода, бизнес логики. Стоимость поддержки этого кода - это основная стоимость поддержки. То, чем мы парсим параметры запросов от пользователя и какими средствами обеспечиваем доступ к данным составляет оставшиеся 5% процентов, которые мы можем при желании заменить, и в общем-то эти 5% никакой важности не составляют.

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

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

оставшиеся 5% процентов

Именно так, оно слишком просто, чтобы этим стоило заниматься. Кроме случая, если ты придумал новый, радикально более эффективный подход к тому, как нужно оставшиеся 95% делать. Последнее не часто встречается, а без этого 1. in the long run, жадина тратящая на то же на 5% меньше твоего сожрёт весь твой бизнес. 2. каждый из этих 5% вызывается раз в 20 чаще остальных, т.е. стоимость ошибки там сильно больше. 3. -5 к карме за пособничество энтропии.

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

in the long run, жадина тратящая на то же на 5% меньше твоего сожрёт весь твой бизнес.

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

А кодинг никогда не был припятствием. Живёт же битрикс, живёт похапэ.

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

И все изза батареек. Как было озвучено выше по треду асемблер и там писание без libc/gtk явно поменяет проценты.

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

Автору > 45 и жизнь исключительно удалась?

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

Там обычные вопросы по паттернам и алгоритмам что спрашивают во всех приличных конторах.

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

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

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

Там правильно ниже написано, это на 90% часть стандартных вузовский программ.

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

и при этом считает себя программистом я называю выпендрёжниками.

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

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

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

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

Смысл в том что человек который планирует в 45 лет писать код - больной

Обоснуй. А то куча народа, от Кнута до Катлера, в 45 были действующими прогерами.

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

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

Неосилятор детектед

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

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

Неосилятор детектед

Надетектишь хоть одного осилятора... см. выше.

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

я могу привести сотню контр аргументов с линкед ина

Я тоже. И что? Слышал о теории вероятности? И бомж без образования может выиграть квартиру в лоторею, что дальше?

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

Смысл в том что человек который планирует в 45 лет писать код

а при чём тут кодерство? Эти знания нужны для проектирования систем. Я тебе по секрету скажу: я раньше зарабатывал деньги консультируя пых-пых кодеров как надо делать высоконагруженные сайты. При этом вообще ни строчки на похапэ не написал.

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

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

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

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

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

И ну ОЧЕ умный может ходить в интернет искать чем сделать дифф и писать об этом в жж. Но только я не готов решительно определить кто из них бомж в контексте твоей аналогии.

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

Вы просто не работали в серьезных конторах.

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

И ну ОЧЕ умный может ходить в интернет искать чем сделать дифф

если этот очень умный работает программистом то ну его нахрен такого программиста. Как бы умение работать с патчами и vcs это один из базовых навыков. Как минимум человек не на своём месте.

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

У Кнута наверняка более ресерч работа была, а у Катлера более менеджеро-архитекторская.

Кхм. Они оба «писали код», что не так?

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

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

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

То что они не программисты(по должности)?

И? Ты сказал «что человек который планирует в 45 лет писать код» - они писали, что с ними не так? Да и с человеком, который в 45 планирует работать программистом - что не так?

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

И что из списка пригодилось?

дохрена всего. Я не ставил цель учить то что в списке, просто жизнь так повернулось. В данный момент меня пригласили поучавствовать в проекте ids, там много machine learning. Это не моя тема, но подтягиваю свои знания.

Проще сказать что не пригодилось: базы данных (ну разве что в минимальном объёме для нужд веба), квантовые вычисления, схемотехника (хотя люблю поковыряться с микроконтроллерами), функциональные яп (изучаю потихоньку для себя), графика/opencl (хотя и писал простенькие демки в детстве аля вращающийся чайник), химия, физика (тем не менее ур-я Кирхгофа знаю, это же в школе проходили) и кресты.

Об остальном я имею представление. Даже немного об ассемблере чтобы понять почему ffmpeg вываливается с illegal instruction, о поиске кратчайшего пути в графе (превед ospf) и так далее.

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

Это пост из жж который ты тут оставил.

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

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

Человек который хочет работать в 45 лет на работе которая подразумевает трату значительной части рабочего времени на написание кода под наблюдением старших товарищей - больной. Так яснее?

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

Хотя нет, раз уж индексы раставлял, explain select делал, то значит и базы пригодились. Но что такое вторая или третья нормальные формы не учил, да.

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

Человек который хочет работать в 45 лет на работе которая подразумевает трату значительной части рабочего времени на написание кода под наблюдением старших товарищей - больной. Так яснее?

Да, так яснее. Осталось только найти человека, который хочет вышеописанного.

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

Я имел ввиду в ситуации с консультацией ПХПеров.

Даже немного об ассемблере

Дальше не читал.

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

Я имел ввиду в ситуации с консультацией ПХПеров.

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

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

А какие еще варианты у человека который решил стать специалистом по всему, кроме толксов?

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

Ну просто да, как то понимать что есть в списке наверное нужно, но плюс минус несколько пунктов это знает любой годный программист до 30. А с выбраным окном в 25 лет, автор явно как бы нам намекает что во все это надо вникнуть по хардкору и не уметь имплементировать дифф после этого.

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

А какие еще варианты у человека который решил стать специалистом по всему, кроме толксов?

У того, кто решил стать - не знаю. Тот, кто _стал_, может работать консультантом в любой области или лидом команды прогеров опять же в любой области; а может и работать на себя, потому что заменяет небольшую фирму программистов.

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

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

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

А что ты делаешь в web-development!?

А что я вообще на ЛОРе делаю? %)

Как ты вообще сюда попал?!

Стреляли!!11

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

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

Ты к тому же считаешь гугл и яндекс небольшими фирмами, или что?

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

автор явно как бы нам намекает что во все это надо вникнуть по хардкору и не уметь имплементировать дифф после этого.

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

Я нигде не утверждал что все эти знания нужны чтобы зарабатывать деньги. Можно вообще грабить банки и не заморачиваться этим.

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

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

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

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

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

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

Но ты, похоже, путаешь меня и true_admin'а. Я считаю , что список sharpc - это в лучшем случае маниловщина.

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

Я также считаю, что система химических расчетов может использовать GPU, ассемблерные вставики, и при этом иметь веб-интерфейс.

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

Но ты, похоже, путаешь меня и true_admin'а.

Я не путаю и не пишу ответы в зависящие от того кто автор, а не от текста сообщения.

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