LINUX.ORG.RU

новый web-framework PEF::Front

 , ,


3

5

Приветствую!

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

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

Поясню последний пункт, который, собственно, и был мотивационным. Работало 3 человека на проекте. Один делал Модель, другой делал Вид и третий Контроллеры. Писатель модели написал апи, как пользоваться, на какие запросы какие ответы приходят и вообще какова общая логика внутренних данных, писатель Вида по макетам написал хтмл-шаблоны. Писатель Контроллеров по спецификациям написал контроллеры и стали тестировать. Выясняется, что когда одного из трёх нет, то виноватого найти очень сложно. Модельер смотрит: «мне пришли не те данные», ждём контролёра. Выясняется, что данные в неправильном формате послал Вид. После разработки выясняется, что какие то куски надо продублировать по разным страницам, соответственно, это работа сразу для двух человек: один правит шаблоны, другой контроллеры. В итоге темп разработки страдает.

Это породило идею: контроллеры должны перестать быть самостоятельной сущностью и стать придаточной. Контроллеры стали декларативными. В итоге в модели MVC участие в разработке требуется только у двух (собирательный образ) человек: один пишет Модель, другой пишет Вид, а контроллеры как самостоятельный вид пропали. Это не значит, что теперь прямо из шаблонов можно делать запросы к базе данных, это не так, но добавить новый блок данных в шаблоны теперь задача только одного человека, который собственно и отвечает за внешний вид.

Дальнейшее развитие породило автоматическую валидацию параметров запросов, декларирование действий и многое другое. Запросы к Модели возможно делать ajax-ом, по submit/get-у данных или запросом данных из шаблонов.

Документация на текущий момент очень слабая, примеров мало, из плюсов простота кода и вообще подхода. Фреймворк опирается на протокол PSGI _без_ Plack, вообще внешних тяжёлых зависимостей нет. Протестирована только конфигурация на базе nginx+uwsgi, поскольку я в общем-то не вижу необходимости в других. Глубоких бенчмарков не проводилось, но по внешним признакам всё очень быстро работает.

Ссылка на (фиговую) документацию на русском языке https://github.com/pef-secure/pef-front-psgi-dist/blob/master/lib/PEF/Front/I...

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

Что такое «вызов модели»?

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

Кроме шуток, у меня сильно хромает литературная составляющая, поэтому часто пишу сам не замечая «что». В данном случае, это, конечно, неудачный термин, означающий, что для получения данных из модели необходимо сделать какой-то вызов. Где не находил достаточно слов, писал примеры.

pef-secure ()
Ответ на: комментарий от Debasher

Писать на перле софт не надо

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

pef-secure ()

Выясняется, что когда одного из трёх нет, то виноватого найти очень сложно. Модельер смотрит: «мне пришли не те данные», ждём контролёра. Выясняется, что данные в неправильном формате послал Вид. После разработки выясняется, что какие то куски надо продублировать по разным страницам, соответственно, это работа сразу для двух человек: один правит шаблоны, другой контроллеры. В итоге темп разработки страдает.

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

TDrive ★★★★★ ()

И вообще нафига такое разделение на моделера контрольшика и вьюшника? Чем бекэндер/фронтендер не устроило?

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

И зачем тут nginx в тегах?

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

В общем я ничего не понял.)

Жаль.

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

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

И вообще нафига такое разделение на моделера контрольшика и вьюшника? Чем бекэндер/фронтендер не устроило?

В новом фреймворке устраивает.

pef-secure ()
Ответ на: комментарий от pef-secure

См. стартовое сообщение. В новом это оптимальнее устроено.

В стартовом сообщении у тебя 3 человека, а я спрашиваю чем тебя не устраивало использование mvc и разделение на бекэндера/фронтендера? Зачем нужен отдельный человек для моделей?

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

В стартовом сообщении у тебя 3 человека, а я спрашиваю чем тебя не устраивало использование mvc и разделение на бекэндера/фронтендера?

Тем, что контроллеры всё равно надо кому-то писать. Это была попытка распараллеливания работы, чтобы вся работа была сделана за меньшее время, а вышло наоборот.

Зачем нужен отдельный человек для моделей?

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

pef-secure ()
Ответ на: комментарий от TDrive

Контроллеры и модели один человек писать ни как не может?

Если работы мало, то какие проблемы. А то бывает и несколько человек в проекте, бывает и много. Вопрос вобщем в том, что их можно и не писать вообще в простых случаях, а в сложных декларировать. Определяющими критериями фреймворка для меня являются сложность и объём необходимой писанины для достижения задуманной цели. Чем короче и выразительнее писанина, тем лучше. Если что-то можно не писать, так вообще здорово.

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

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

pef-secure ()
Ответ на: комментарий от pef-secure

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

Я с тобой вообще не спорю а задаю вопросы чтобы понять что тебя побудило написать фреимворк и для кого ты его написал.
Судя по твоим словам твой фреимворк создан для команд из 2 программистов которые при появлении в команде третьего не знают как договориться друг с другом, что как минимум странно.

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

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

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

pef-secure ()
Ответ на: комментарий от pef-secure

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

Я не собираюсь ничего читать не понимая нужно мне это или нет.

TDrive ★★★★★ ()

Один делал Модель, другой делал Вид и третий Контроллеры.

Если б я был султан, я б имел трех жен.
Почему бы не сделать ещё лучше. Допустим на фронтеде один пишет js, другой css, а третий на html?

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

Я не собираюсь ничего читать не понимая нужно мне это или нет.

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

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

Я предпочитаю общаться по предмету, а не вокруг него.

pef-secure ()
Ответ на: комментарий от ritsufag

Почему бы не сделать ещё лучше. Допустим на фронтеде один пишет js, другой css, а третий на html?

Почему бы и нет. Просто не моя область, но разделение работ бывает присутствует и там.

pef-secure ()
Ответ на: комментарий от ritsufag

Но в этом нет смысла, лёл.

Область «Вид» не является моим интересом, я не собираюсь это обсуждать дальше, чем требуется для генерации шаблона из данных.

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

посмотрим как время будет

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

pef-secure ()
Ответ на: комментарий от pef-secure

Я предпочитаю общаться по предмету, а не вокруг него.

Тогда ответь уже на конкретный вопрос: для кого сделан твой фреимворк?

TDrive ★★★★★ ()
Ответ на: комментарий от pef-secure

А то пока что все комментарии от тех, кто не удосужился или даже не собирался смотреть.

Тебе не кажется что с начало нужно объяснить на что там вообще смотреть? А не отправлять людей читать полотно текста непонятно зачем.

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

Тогда ответь уже на конкретный вопрос: для кого сделан твой фреимворк?

Для тех, кого не устраивает то, что есть, и он ищет чего-то другого. Это немного альтернативный взгляд на MVC. На этом вопрос «для кого» считаю для себя закрытым.

Тебе не кажется что с начало нужно объяснить на что там вообще смотреть? А не отправлять людей читать полотно текста непонятно зачем.

Я пытался. Но плохой из меня маг, я не нашёл для тебя волшебных слов.

pef-secure ()
Ответ на: комментарий от TDrive

Имхо изначально немножко не про то говорилось.Дело не в человеках - дело в ответственности.

Та модель MVС которая сейчас везде(была популяризирована рельсами) предполагает что «Представление» отвечает на вопрос «Как показывать?» а не «Что показывать?».

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

Чтото похожее сейчас происходит во фронтенде - от модели MVC (типа ангуляр и компания) переходят к модели MV (React+какая-нибудь модель). Причем выглядит это тоже очень очень странно(хтмл в жаваскрипте - о ужас!), но при этом похоже на очень большой прорыв.Так может и на бекенде это имеет смысл?:)

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

Почему бы не сделать ещё лучше. Допустим на фронтеде один пишет js, другой css, а третий на html?

Забавно но сегодня на практике зачастую почти так и происходит.Клиентский жс из категории свистелок и перделок перешел в категорию построения приложений. Жс может содержать большое количество логики - SPA тому пример.

Поэтому тот кого называют «верстальшиком» просто не справится(а те что справятся как правило родились лет 30-40 назад и работу менять не намерены) с типичным современным веб приложением. А фронтенд программисту(многие из них к слову сегодня приходят из бекенда) полноценно версткой заниматься не очень интересно.Поэтому зачастую верстают и пишут логику клиента таки разные люди.

anonymous ()

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

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

Что такое «10 мио»?

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

Буду признателен за конкретизацию. Одна из причин публикации — надежда на общее улучшение проекта.

pef-secure ()
Ответ на: комментарий от LongLiveUbuntu

Как там аллокатор поживает?

Где? Какой? Одна из причин неиспользования Plack как раз в надежде использовать меньше памяти.

pef-secure ()
Ответ на: комментарий от pef-secure

Что такое «10 мио»?

http://en.wikipedia.org/wiki/Mio

mio, a written abbreviation for «millions» as a unit indicator in the financial markets
Буду признателен за конкретизацию.

https://github.com/pef-secure/pef-front-psgi-dist/blob/master/lib/PEF/Front/F...

  • line 47
  • line 66
  • line 67
  • line 84

Как бы мелочъ. И да, я весь код не смотрел, просто заглянул в этот модуль...

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

Как бы мелочъ.

Верно. Соглашусь про syswrite, он может попасть на EDQUOT или ENOSPC, в остальных случаях проблема куда серьёзнее и там сломается просто всё, не только аплоад файлов. Невозможность сделать sysseek или sysread по открытому дескриптору только что записанного файла — не могу представить когда такое возможно.

За внимание и ревью спасибо.

pef-secure ()
Ответ на: комментарий от pef-secure

В том же файле File.pm

sub finish {
  my $self = $_[0];
  if (exists $self->{id}) {
    my $size = sysseek ($_[0], 0, 2); # O_o sysseek $self, 0, 2; ???
   set_cache("upload:$self->{id}", "$size:$size");
   $_[0]->{size} = $size;
  }
}
А вы говорите не надо проверять sysseek, sysread...

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

А вы говорите не надо проверять sysseek, sysread...

Проблема не в отсутствии проверки, а в том, что именно функциональность UploadProgress пока что не тестировалась никак. Я признателен за найденный баг, спасибо. Качество кода на текущий момент я бы оценил «между альфой и бетой», так что пока что без багов не обходится. Весь фреймворк был написан на одном дыхании примерно за неделю около двух месяцев назад, так что он ещё очень юн.

Было бы интересно поговорить ещё и за общую идею.

pef-secure ()
Ответ на: комментарий от gh0stwizard

А вы говорите не надо проверять sysseek, sysread...

Исправил, спасибо ещё раз.

pef-secure ()
Ответ на: комментарий от pef-secure

Бывает код нетривиален

В контроллере? Там не должно быть ничего нетривиального - всё нетривиальное должно быть в модели. Поэтому обычно контроллеры пишет «модельщик», который конечно не модельщик, а разработчик бэкэнда.

no-such-file ★★★★★ ()
Ответ на: комментарий от pru-mike

Надеюсь, что дирректорию /t ты просто не выложил

Не просто не выложил, а даже не потратил время на её написание. Моя текущая цель найти заинтересованное комьюнити, а затем уже финализировать имплементацию. Протестировать нормально подобный фреймворк — для тестов необходимо требовать наличие какого-либо PSGI сервера, предусмотреть их варианты в автоматизированных тестах я пока не представляю как. Писать свой сервер, как это делают некоторые другие фреймворки, я как-то не смог пока себя убедить. После решения проблемы PSGI сервера необходимо написать большое количество кода, который будет тестировать все аспекты. У меня на это пока ещё просто не было времени. И долго не будет. Может быть, если будет комьюнити, мне кто-то с этим делом поможет. Если не будет, то и тестов не будет ещё долго. В моём случае в качестве теста выступает приложение на несколько тысяч строк, но даже его не хватило для тестирования прогресса аплоада файлов, поскольку ещё не успели в разработке до него дойти.

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

Я не отрицаю необходимость тестов, но когда для тестирования кода из 2500 строк необходимо написать тестов на 10_000 строк, то это слишком большая нагрузка для меня на данном этапе. А напишешь мало тестов — что то упустишь.

pef-secure ()
Ответ на: комментарий от no-such-file

В контроллере? Там не должно быть ничего нетривиального

Если внимательно почитать, то я предлагаю не просто писать тривиальный код, а не писать его вообще.

(безличностный вопрос): Интересно, если б я за осмысленное чтение Intro-rus предложил вознаграждение, повлияло бы это на качество дискуссии?...

pef-secure ()

На текущий момент, после 45 сообщений в этой ветке (половина моих), положительным фидбеком я вижу два момента:

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

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

pef-secure ()
Ответ на: комментарий от pinachet

moscow@pm.org

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

pef-secure ()
Ответ на: комментарий от pinachet

Ну смотрите .

Я признаю слабость моего «мотивационного» текста. Даже при переходе к более подготовленной аудитории проблема не исчезнет. Поэтому, надо поработать над этим. Скооперироваться бы с каким-либо умным теоретиком, чтобы красиво расписал преимущества :)

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