Наконец-то нашел силы заопенсурсить небольшой проектик, который время от времени занимал меня почти пару лет. В борьбе лени и перфекционизма он многократно переписывался, подстраивался под новые нужды и проекты, но как-то всегда оставался тёмной лошадкой еще с ужасной первой версии.
Всё начиналось как быстрое решение для pet-проектов vas3k.ru, чтобы дух phpMyAdmin всё еще по-хардкору жил в наших сердцах, но как только появлялась необходимость — можно было всё красивенько настроить. А потом хорошо подошел и к более крупным проектам. И если в своих проектах админка зачастую — это psql через ssh, но даже в некоторых настоящих проектах не понимают, что админка — не дети и просто так не появляется потому что «дал бог проектик, даст и админочку». Чаще всего это такой форс мажор, который каждый раз «никто не ожидал, а он вот опять», после чего активируется режим «срочно зовите человека-программиста, чтобы сделал что-нибудь по-быстрому». И затем получается какое-нибудь быстро собранное говно на ExtJS, которые чтобы отрисовать очередное незакрываемое модальное окошко разогревают ваш ноутбук до температуры горящих пуканов. Единственный нормальный подход к разработке админок я видел у Медузы, там даже не один человек-программист поработал, но и человек-дизайнер! Да и те скорее всего его спиздили где-нибудь на западе, как все остальные форматы.
Из всех этих соображений и появился GodMode 2 — автоматическая генерилка кастомизируемых админок для программистов, которым лень, нет времени или всё сразу.
Идея была взять всё лучшее от существующих CRUD-генераторов и сделать максимально просто, минимально блевотно и standalone. Это не WordPress, которым хоть и может пользоваться ваша мама, но его код вгоняет в депрессию любого миддла, а джуниора разрывает на куски. GodMode концептуально ближе к Django-Admin, однако юзабелен без джанговского вендорлока. А еще мне нравится, когда из коробки получается секси. Не набор ссылок в углу окошка как у Django, и не забутстрапленное говно с одинаково глючными выпадающими меню на jQuery оптимизированными под Opera Mini.
Так получился GodMode, в котором кроме пиздатого названия есть еще и следующие нескучные фичи:
— нескучный интерфейс приятных синеньких цветов
— автоматический маппинг всех полей и foreign keys таблиц из БД
— неистовая мощь SQLAlchemy везде
— такая же неистовая мощь WTForms в рендеринге виджетов и автоматической валидации данных
— возможность по желанию изменить рендеринг любого элемента на экране
— с помощью actions можно повесить любые действия на объект или кучу объектов
— остальное в README
Хуево получилось или нет — решат звездочки и пуллреквесты на гитхабе. Я просто продолжаю использовать GodMode в своих проектах, для меня это рабочий инструмент, даже эти строки я набираю в нем. А ядро отдаю в opensource. Если у кого-то внезапно появилось жгучее желание участвовать, то в README.md в разделе Future Plans есть список хотелок. А если ваш английский не на уровне «London is the capital», как у меня, можете поискать ошибки в readme. Ну и сорян, пока еще нет стабильной версии, всё API может поменяться. Пишите в issues если что-то перестало работать.
Кстати почему-то не вижу вокруг сотни проектов админок. Неужели каждый пишет себе свою под каждый проект? Отпишитесь в комментариях как делаете вы/ваша компания, интересен опыт.
И еще раз ссылочку на github: https://github.com/vas3k/GodMode2.
Очень кстати, на днях как раз надо будет делать админку и CRM!
Hast, > > Python 2.x is not supported. > Неужели Так год-то какой :) >> Sonata Admin Bundle (PHP) > Ты смотри, про сонаточку не забыл С неё всё начиналось. В детстве. Когда были гаражи, грязь и phpMyAdmin!
themylogin, > Не с неё, а с Symfony Admin Generator из Symfony 1 Да, именно. Как я понимаю из Symfony 2 стали выпиливать всё подряд потому Symfony Admin Generator выкинули <s>к хуям</s> в опенсорс и переназвали. А сам его не юзал, просто указал как вроде бы живой проект с похожей идеей, больше никаких не нашел. Но да, примерно ожидаемо, что дай программистам волю они любую легковестную и приятную штуку превратят в module-based plug-in oriented architecture, чтобы блядь у нас ООП и ПОЛИМОРФИЗМ везде, как в школе учили. Круто было бы научиться как они умеют в виджеты и удобно разруливать one-to-many, many-to-many связи, но превращаться в такое же говно с плагинами и шаблонами made for php nuke — очень не хочется. Но именно по админке Symfony 1 я и скучал все эти годы, да! GodMode во многом вдохновлен идеями оттуда. Я даже скачивал себе доисторический Cheat Sheet в корявом PDF, чтобы освежить в памяти как и почему там было круто и удобно.
Hast, > тут можно потыкать, там дефолтный экран админки даже в напоминает скрин из поста :) Забавно, они спиздили похожий бесплатный template из интернета, что и я :D Спасибо за демку, потыкаю, хорошие идеи утащу к себе. > Ну вот пару дней назад пил пиво в Праге с Димой, он как-то обмолвился, что тот же фласк до сих пор полностью тройку не поддерживает В мире Python есть два типа людей: те, которые сидят на двойке, и уже пятый год успокаивают себя тем, что "никто еще тройку не поддерживает", и те, кто уже перешел на тройку и не испытывают никаких проблем. Всё уже есть под тройку, GodMode написан на Flask, так что не знаю что там не поддерживается. Я 2 года уже пишу 3.x-only и не нашел нужную либу лишь однажды, да и та была какой-то хуйней. PY3WOS как бы намекает https://python3wos.appspot.com/ — всё, что осталось красным, уже сдохло и не нужно. Fabric не нужен потому что Ansible и Docker, PIL заменили на более удобный Pillow, selenium специфичная хуйня только для тестировщиков. Короче года 4 назад я говорил, что рано. Года 2 назад я аккуратно перелезал сам и боли не испытал. В этом году я уже абсолютно уверен, что двойка сдохла, и немножко хихикаю, когда кто-то говорит про Python 2.x. > Твистеды какие-нибудь - тоже, вроде А это поделие сдохло еще раньше, торнадо победил. А сам торнадо тоже скоро сдохнет, потому что в 3.5 он считай нативно интегрирован в виде asyncIO. Либо превратится в обертку над asyncIO, что кстати щас и происходит.
Hast, > а твистед - сетевой фреймворк "Сетевой фреймворк" — очень богато звучит, придумавший этот буллщит наверняка в душе был маркетологом. Да даже от "асинхронный веб-сервер" меня передергивает. Пахнет школьным учителем, который в книжке прочитал, а сути не понимает. И твистед и торнада — просто реализация ивентлупов с обвязкой, просто твистед почему-то решил, что надо нахуячить внутрь дерьма побольше — свой HTTP, DNS, IMAP, XMPP да это просто emacs какой-то, конечно простое название "асинхронная либа" уже как-то не круто, столько кода нахуячили же, давайте назовем это "СЕТЕВОЙ МЕГАТРОН" чтобы пугать джуниоров до усрачки. А торнадо просто сделал очень простую и доступную каждой домохозяйке асинхронность. И это оказалось нужнее. А еще и работало чуть ли не нагибая этот ваш нодежээс. Настолько всё круто было, что быстренько придумали asyncio, который по сути копирует тот же самый ивентлуп с корутинами и обвязкой, а весь http отдельно вынесли в aiohttp. Начиная с 3.5 asyncio в stdlib, и всё, НЕ НУЖОН ВАШ ИНТОРНЕТ больше. Даже торнада будет скоро не нужна, когда aiohttp дозреет.
Hast, > Вася, ты бы стал охуенным учителем. Как говорил Фейнман: "Если квантовый физик, и не можете в двух словах объяснить пятилетнему ребёнку, чем вы занимаетесь, — вы шарлатан". Я уже думал даже завести какой-нить "проект", чтобы объяснять вещи не за "40 часов лекций стенфорда на курсере", а <s>по-пацански</s> простым языком. Можно, кстати, попробовать в блоге завести экспериментальную рубрику с названием «Короче, блять...». Мне кажется мир погряз в канцеляризмах и каждый пытается передавать опыт как можно сложнее, потому что «я же занимаюсь важными вещами». Я из-за этой хуйни в науку и не пошел, потому что заебало прикладывать руку к лицу каждый раз, когда очередной седой дед, чтобы как-то объяснить свое существование в должности «Профессора» пытается рассказывать банальные вещи настолько сложным языком, что я ебал. Лучше уж буду просто книжки читать. Но во времена снапчатов и покемон го это никому нахуй не надо. Расскажи лучше про PHP 7. Как там жизнь в параллельной вселенной без многопоточности, асинхронности, байт-кода и остальных достижений последних лет 20? HHWM всё еще считается вершиной эволюции и производительности?
У тебя тут GMT-1 стоит что ли? :'D
Hast, > один большой плюс - это Симфони Всё то же самое слышу который год про Yii. Понятно, ничего нового, всё еще рулят жирные метафреймворки и программирование на yml. > всё ещё уделывает по универсальности и гибкости вашу дарную джангу Сравнения разухабистых http-фреймворков это просто смешно. Как сравнивать кто умеет хуже программировать, чтобы заказчик не заметил. Даже не буду копать что там лучше джанги, в любом случае ведь Wordpress уделывает всех :D Там вообще можно код не писать, охуенно же! Для меня даже джанга это уже слишком дохуя. Это галимый HTTP, похуй на чем его писать, гибкость здесь напрямую зависит от гибкости языка, а здесь как-то пока не очень всё. > вообще появился microframerowk mode, который отрубает почти всё не нужное и работает очень быстро Дальше ты перечисляешь фичи той же джанги двух-трех годичной давности. Оооокей. > удобной системой указания версий, никаких вам блядских requirements.txt. А вот тут уже интереснее посраться. Что может быть проще и лучше простого списка в текстовом файле? Или просто вместо txt там yml файлы? Чем система указания версий в pip тебя не устроила? Npm-блядки тоже вон кричали как у них удобно всё, а потом один left-pad всех на колени поставил. Ну и да, virtualenv тоже всё еще нет?
Кстати, да. Сервер теперь не в UTC+6, а в UTC+3, из-за этого мне с UTC+3 показывает время по UTC, а у вас с Hast ещё более раннее? Пришло время заменить все .now() на .utcnow()!
themylogin, > Пришло время заменить все .now() на .utcnow()! Кажется использование utcnow это то, что отличает middle от senior python developer. Реально эта хуйня приходит только с многолетним опытом. Но так как текущий vas3k.ru писался 2-3 года назад, там еще был просто now, так как все сервера, к которым я привык, всегда были в UTC. Да ктож вообще мог знать, что проект переживет ТАКОЕ количество серверов и utcnow реально будет реально полезен, так как есть сервера не в UTC. Даже в «том самом последнем» проекте ты видел, что везде utcnow, но блядь ни разу не пригодились (ибо амазон), а тут вот на тебе, даже заметили! > Программирование с пивом на завалинке. Да не, ты передергиваешь. Это не быдло-базар. Так я делал уже в каких-то унылых некропостах, когда пытался писать туториал по питону для гопников на примере кепок. Там было натужно и несмешно. Тут скорее реально полезная инфа через призму того, кто в ней разбирается, а не хабрахабра. Очищенная от погони за "кармой", "профессором", и другим социальным капиталом. Чисто утилитарная штука для своих. Вот тебе надо завтра освоить какой-нить Go — у тебя два выхода: скачать книжку на 400 страниц или открыть тот самый сайт "learn X in Y minutes" (он реально охуенный). Я всегда выбираю второе, оно экономит время на очередном описании почему закрывать файлы и как написать hello-world (print("Hello world" в любом современном языке, ВАУ НИХУЯСЕ). Вот что-то подобное, но в более глобальном масштабе. Например в этом году мне понравилась книжка Хокинга про "Теорию Всего" (прост физика, как наука, остаётся главным моим внутренним хобби, которым я занимаюсь ночью под одеялом), он там делал то же самое с такой сложной областью, как астрофизика и история вселенной. Прочитав её, у меня появилось жгучее желание написать ликбез по астрофизике в бложек, но как бы не формат. Hast, тебе отвечу завтра, потому что щас я в говно пьян, а ты пидор! > Зачем эти виртуалэнвы, если есть докер, который тормозит, как ёбаный ад Хитренькие. Нашли-таки, чем оправдать свои косяки, надо придумывать новые выпады, эти в этом году устарели видимо. А ведь еще в 2015-м работали :3
Hast, пока отсыпался, тут уже за меня всё раскидали. themylogin, > которые раньше фронтенд делать могли, а теперь нет (потому что столька инструментов!!!! непонятно че ставить!!! невазможна пользоваться!!! всё гавно)) Кстати да. А разве не дохуя ли говна в современном мире надо поставить, чтобы собрать очередной ебучий landing page? Причем ладно бы это были какие-то базовые вещи, так это они еще и каждый месяц новые. Я понимаю еще такое усложнение, когда это яндекс.маркет или ибей какой-нить, действительно сложные фронтенды, но сука когда я открываю очередной лендинг, который в былое время на голом HTML под 5 браузеров (щас по сути один остался) писали за пол дня, а там 120 библиотек в зависимостях, собирается всё это пол часа с помощью стороннего платного CI-стартапа, который купил фейсбук и закрыл на прошлых выходных, а на выходе только текста на 10 мегабайт. Ну а чо, инторнет-то у всех быстрый. А потом к тебе приходит тот, кто деньги даёт, и просит вот тут кнопочку на 5 пикселей сдвинуть, этож быстро же. А фронтендера еще в прошлом месяце уволили, нахуй он нужен, любой дурак может кнопочки двигать же, вон попросите бекендеров, они же тоже программисты. Ну а дальше вы знаете. P.S.: А еще знаете как проще всего сделать так, чтобы фронтендер уволился? Попросите его поправить код другого фронтендера, написанный больше полугода назад. Проверено! Методик кроме как "переписать всё с нуля" там пока не завезли. Пора открывать юмористичекий паблик "Программист-Миллениал".
themylogin, > Тут уже не совсем серьёзно, но это потому что он не оставил за собой Dockerfile, который бы всё это собирал! Оставил, только вот его фронтендерский Dockerfile в этом месяце уже устарел, никто не помнит как их собирать, даже поисковики, сайт с консольной утилитой для сборки закрыт. Ебитесь как хотите! Раз уж тут у нас пьянка пошла, заясни за docker-machine? Стоит ли смотреть, почему?
У нас тут чуваки пытались для мегакрутогодорогогоклассного проекта поднять continuous delivery на докерах через дженкинс. В итоге ебались с ним месяц. И ебались бы ещё, если бы проект не свернули. Я на самом деле не понимаю, зачем это говно в принципе может понадобиться, если даже на винде голимой обычно всё подымается без проблем,
Попробуй блять локальный энвайромент поднять, где тебе нужна определенная версия nginx, linux, python. Особенно старая. И тут-то сосай лалка.
themylogin, > Он ставит тебе на мак/винду виртуалбокс То есть это старый Vagrant, но с докером? Прикольно. А логи всякие и остальное оно как отдает? Опять надо держать кучу унылых ssh-терминалов на локалхост?
Привет, хочу сделать авторский блог, ведь я нитакойкаквсе, однако я застрял примерно в мезолите 2010-х с вордпрессами. Не хотеть похапе, не хотеть эгею (она чересчур минималистична), хотеть ваши новомодные vue, обмотанные питоном. Как это сейчас делается? Мало ведь этой админки? Как-то же это собирать надо, хранить, впс и блаблабла. Есть фак, что в каком порядке ковырять? Заранее благодарен. С меня как обычно.