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)

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

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

Это скорее небольшая фирма с небольшим продуктом

Что не так с небольшими фирмами и почему выпускать описанный выше продукт может только небольшая фирма?

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

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

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

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

Да, первый вариант совсем надмозг трехсмысленный получился.

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

Безосновательное добродушие и оптимизм.

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

маниловщина

штоэта?

Вот чего реально не хватает в этом понтовом списке, так это знания классической литературы хотя бы в пределах школьного курса. Кстати, гугль знает: http://dic.academic.ru/dic.nsf/ogegova/103102

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

Что такое маниловщина мне пояснили. Так что именно из списка тебя повергает в шок? Хэш-таблицы? Алгоритмы сортировки? Или ты залип на схемотехники (которая и мне кажется не к месту)?

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

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

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

Но в 99 случаях из ста всем этим будут заниматься отдельные профессионалы

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

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

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

я читал то что мне нравится, классика не входит в круг моих интересов.

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

Кто сказал, что мегамастер обязан работать в одиночку

Ты же.

А мегамастер - универсал, и буде координировать работу.

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

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

Не обязан, но может и тред вроде как был об этом в контексте минифирм и гуглов :)

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

Или ты залип на схемотехники (которая и мне кажется не к месту)?

Почему сразу на схемотехнике, а не на химии? Почему не «static timing analysis, FPGA, Verilog/VHDL/SystemC» (нет, это не схемотехника, и на приличное освоение приведенного списка требуется пара лет как минимум)? Почему не «эквивалентность тьюринговых трясин» (об этом вообще не слышал, пока не прочел статью)? Почему не «WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth/GPS»?

И, для протокола: я не о том, что ты должен знать эти слова. Т.е. «брать хорошие книжки по тематике и читать их до тех пор, пока все упомянутые слова не встретятся в процессе чтения» - это пустая трата времени.

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

Кто сказал, что мегамастер обязан работать в одиночку

Ты же.

Цитату.

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

Почему не «WiFi/WiMax/GSM/CDMA/EDGE/Bluetooth/GPS»?

А я вот в своё время доклад в универе делал по code division multiple access. И про adsl нам рассказывали (в общих словах, конечно), и про gsm. Ну а wimax устарел, щас lte в моде. Об остальном имею или имел представление. Пока кто-то читал в школе классику я читал другие вещи.

Почему не «эквивалентность тьюринговых трясин»

выкинь и это. Всё равно в списке останется очень много полезного.

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

А я вот в своё время доклад в универе делал по code division multiple access.

Кхм. CDMA - это настолько общий термин, что он относится даже к Ethernet, ЕМНИП. Так что... не впечатлило.

И про adsl нам рассказывали (в общих словах, конечно), и про gsm.

Вот именно - в общих. И весь вопрос в том, насколько глубоко ты должен знать эти вещи.

Ну а wimax устарел, щас lte в моде.

Я так понимаю, wimax ты не знаешь.

Почему не «эквивалентность тьюринговых трясин»

выкинь и это.

Если выкинуть ~70%, получится отличная программа обучения. Правда, на нормальном уровне ее освоит отнюдь не каждый.

P.S. кстати, наличие таких разных по весовым категориям пунктов, как «Flynn's taxonomy ([SM]I[SM]D» (у нас об этом рассказали на первой же лекции по параллельным архитектурам ) и «матан, линал, комплан, функан, диффгем, теория чисел, дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление» (каждый предмет требует месяцев), наводит на грустные размышления о глубине знаний автора.

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

не впечатлило.

Не было цели впечатлять. Ты спрашивал есть ли человек который имеет хотя бы поверхностное представления о перечисленных топиках.

wimax ты не знаешь.

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

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

Нужно иметь общее представление чтобы потом знать что искать и не переизобретать пузырьковую сортировку. Всё помнить никто не может.

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

Нужно иметь общее представление

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

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

Черт, я прочитал как «где», но не суть. На «что» я бы написал «кейворды в гугле, не?».

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

В гугле, не?

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

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

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

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

Очевидно что для веб-программиста проблемы программирования fpga не являются приоритетным направлением.

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

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

ну наконец-то пошло в конструктивном ключе.

Да я только об этом и говорю. Не хватает в списке литературы, ой как не хватает.

Глубина можно определять, например, тем что в будут спрашивать на предполагаемом собеседовании

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

Очевидно что для веб-программиста проблемы программирования fpga не являются приоритетным направлением.

Если он всю жизнь хочет программировать вебель - да. И процентов 90 приведенного списка ему тоже не нужны.

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

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

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

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

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

у меня есть знакомые в яндексе и гугле, я примерно представляю к чему готовится

Подготовка к конкретному собеседованию отличается от самообразования так же, как изучение предмета от зубрежки оного.

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

Подготовка к конкретному собеседованию

а там такие собеседования что гоняют по всему. Но есть, конечно, любимые темы типа работы с графами, те же сортировки, итп. Плюс любимые вопросы того отдела куда хочешь попасть. В общем, я с оглядкой на имеющуюся у меня информацию и говорю что мне этот список топиков нравится.

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

В общем, я с оглядкой на имеющуюся у меня информацию и говорю что мне этот список топиков нравится.

...особенно если выкинуть из него то, нужды в чем ты не видишь :)

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