Fi1osof

Fi1osof

С нами с 05 мая 2014; Место в рейтинге пользователей: #6
Fi1osof
13 апреля 2021, 20:24
0
Если ставится и есть возможность, то да, надо осваивать.

Вот на заметку проект интересный: shellops.io/
Ребята из Ирана делают GUI для управления серверами с докерами. Контейнеры создавать, мониторить и т.п. Скорее всего взлетят (сейчас они в Эстонию релокейнулись).

Но вообще, они юзают вот эту либу: github.com/apocas/docker-modem
Старая, но развивающаяся. На JS написана, управление контейнерами и т.п. Мы там еще просили за docker-compose, и чел написал совсем новую либу: github.com/apocas/dockerode-compose

Это очень перспективное направление. Можно будет не только свой codesandbox запустить, но и небольшой хостинг :)
Fi1osof
13 апреля 2021, 20:19
0
Вот привет нормальной реакции на PR: github.com/graphql-nexus/nexus/pull/887#pullrequestreview-633574197

ty!
Все. Достаточно! Мерж и ОК. И проект развивается дальше. А тут болтовни тонна, а толку мало. Так и будете топтаться на месте.
Fi1osof
13 апреля 2021, 19:11
0
Я утверждать не могу, но вроде же на windows professional ставится докер. Не?
Fi1osof
12 апреля 2021, 18:34
+3
И возникает такой эффект, что ты вроде разобрался с чем-то новым, но потом полгода ты ни разу не сталкивался, не применял и в итоге смотришь как баран на новые ворота)
Все так. Но docker — маст хэв. Это ведь не просто самостоятельная технология для какой-то конкретной задачи, это сейчас как фундамент. Освоить его — не много времени на самом деле. И команд там надо знать всего-лишь несколько. Но он потом помогает и новые технологии осваиватиь быстрее, и в работе тоже. Ведь когда что-то новое хочется пощупать, а оно требует для себя установку какого-то ПО, гораздо проще скачать и запустить готовый контейнер, чем скачивать и настраивать все самому.

Вот по работе пример: ко мне обратился давний клиент, надо было на сайтемелочь поправить. Мне соответственно надо было развернуть сайт локально, внести изменения, их закоммитить и вылить в прод. Но прикол в том, что там сайт на php-5 крутится, и мускул тоже пятый, а локально у меня сильно более старшие версии и на них не запустилось. Что, переустанавливать ПО на локальной машине? Нет. Лучше вот так в докерах запустить и все. И если пересесть надо на другой проект, где совсем другие версии ПО используются, просто этот проект останавливаешь, другой запускаешь и все.

А вот относительно свежий пример из жизни, где докер сильно помог: помогаю товарищу с одним проектом. В итоге у меня все запускается, а у него нет. freecode.academy/topics/kak-debazhit-api-zaprosy-apollo
Посмотрели все основные моменты, ни в какую не запускается у него. В итоге я упаковал в докер и он хоть и не сразу освоил его, но за день запустился и все работает. Вот здесь обсуждение в задаче: freecode.academy/tasks/ckn290mjjnzp20730bgh37d8s
Fi1osof
12 апреля 2021, 09:25
2
+2
Александр, если докером еще интересуетесь, можно с этим поиграться: github.com/MODX-Club/docker-lnmp
Здесь все необходимое для запуска MODX-3 (ну, просто он там в зависимостях, но можно и другие добавить в app/www).

Сам по себе докер (именно как один отдельно взятый контейнер) не очень интересно. Интересна возможность именно создания нескольких контейнеров, и чтобы они между собой взаимодействовали. Здесь у нас php-fpm, nginx, mysql, PhpMyAdmin и сам MODX. Но MODX пока не удалось запустить на полном автомате (мне лень было это копать без особой мотивации). Тем не менее, контейнер под него подготовлен, в том числе и устанавливается composer github.com/MODX-Club/docker-lnmp/blob/master/php-fpm/Dockerfile#L36

Только клонировать проект надо с субмодулями
git clone --recursive github.com/MODX-Club/docker-lnmp docker-modx
cd docker-modx

После этого проверяем, директория должна быть не пустой app/www/modx3

И вот чего не автоматизировал — это создание modx3/core/packages/core.transport.zip
По идее его должна быть возможность как-то билдить через CLI, но я с наскока не нашел. Если найдете, то в связке с общей установкой MODX через CLI можно полностью автоматизировать установку и запуск.
docs.modx.com/3.x/en/getting-started/installation/cli

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

Запуск

Копируем .env
copy .sample.env .env

Может затем отредактировать его и установить рет-пароль для мускула.

Для надежности сначала запускаем mysql и pma
docker-compose up -d --build mysql pma

Затем php-fpm
docker-compose up -d --build php-fpm

После запуска надо собрать MODX (я забыл это прописать в Dockerfile).
Заходим в контейнер php-fpm
docker exec -it modx-docker_php-fpm_1 bash (имя контейнера может отличаться, ищем актуальное docker ps или docker-compose ps).
Заходим в папку modx3 и выполняем
composer install

Ну и в конце nginx
Только хост подправить при необходимости: github.com/MODX-Club/docker-lnmp/blob/master/nginx/conf.d/modx3.local.conf

docker-compose up -d --build nginx

После запуска идет modx3.local/setup и устанавливаем.
Fi1osof
12 апреля 2021, 08:33
+2
Нет, бля, не я облил говном, а мне предъявили «Ты что так медленно перемещаешься на коленочках недостаточно усердно нам пытаешься помогать?!». И конкретно ты начал тыкать, что это мозговыносящий код и все такое. Вот на это я только и могу сделать рука-лицо. Вам там надо половину переписывать, фишки новые вводить (о чем вас просят давно), а вы ломаете что есть, а потом губки дуете, что вам там плохо что-то оформляют? Такими темпами у вас и еще через 5 лет будет все то же самое, что и было.

Марк вежливо попросил, я в общем-то тоже.
Я в комменте дал пояснение. А мне в ответ «А что не туда?». Бля, да какая разница? Информация есть, есть.

Ну и PR сам по себе не решает задачу, давай будем объективны.
Я проблему здесь довольно подробно раскрыл. Там показал, что именно в этой строчке проблема. Далее уже кто лучше знает обстановку, может принять, или отменить и поправить. Хотя бы есть информация.
Fi1osof
11 апреля 2021, 23:29
+1
Каждый ученик извлекает из урока ровно столько, сколько он может извлечь.
Fi1osof
11 апреля 2021, 23:27
0
Нам больше делать нечего, как сидеть и гадать на картах Таро, что там автор имел ввиду.
Это одна строчка кода, Карл. Одна. Чего там думать? Я переписывал свой сайт, 400 000 строк изменений, и все ОК. А у вас от одной строчки мозг ломается? Ох, измельчали нынче программисты.

Мы не за зарплату там сидим, есть дела и поважнее.
Так и я не зарплате, если что.

иначе просто закрывают PR
Ну так надо было закрыть и все. ОК, я сам закрыл. И больше ничего не отправлю, даже трогать не буду.
Fi1osof
11 апреля 2021, 19:13
+1
К слову, еще одна причина почему не хочется заниматься кодингом в ядро: я отправил ПР, но видите ли не достаточно хорошо его оформил (точнее совсем не оформил). Почему я должен на это тратить время? Это не issue, где бы я спрашивал «А как мне сделать то-то». Это PR. То есть я потратил не мало своего времени, нашел проблему, пофиксил ее, и еще должен что-то там разжевывать? А мейнтейнеры на что? Это уже не программисты, а менеджеры какие-то. Как будто все это должно мне быть важнее, чем им.
Fi1osof
11 апреля 2021, 18:51
+1
Я докопался до проблемы :)
Я конечно же все это проверял, но не достаточно глубоко. Попробовал как должно быть, не сработало, подумал никогда и не было. А оказывается было. Во второй вертке проверяет
$isLogin = $target == 'login' || $target == 'security/login';
а в 3-ей (на которой я и экспериментировал) уже вот так:
$isLogin = $target == 'Login' || $target == 'Security/Login';
Но в коннекторе-то проверяется именно на 'security/login', чтобы выставить define('MODX_REQP', false);

И никак не думал, что сам Джейсон такую засаду сделает :)

Всегда считал его мегаконсервативным в плане изменения кода, а тут фигак и в продакшн.

Отправил простенький PR. Лечит проблему.
Fi1osof
11 апреля 2021, 18:05
0
Покажи пример запроса. Я action=security/login первым делом проверял. И в статье показывал скриншопы, что без кукиса даже из админки через модалку не залогиниться. Вот здесь отбивает же запрос.
Fi1osof
11 апреля 2021, 18:02
0
Хотя 401 означает — требуется аутентификация, а код для отсутствия прав — 403.
Люто плюсую.
Fi1osof
11 апреля 2021, 18:00
0
По случаю проглядываю старый комменты. Андрей, вы довольно близки были к правде, и подобная сборка появилась, хоть и на Next+React, а не на Nuxt+Vue: github.com/prisma-cms/nextjs

На нем вот и небольшой эксперимент с MODX-админкой делался: modx.pro/development/21732
Fi1osof
11 апреля 2021, 17:46
+2
Я его взял потому что довольно хорошо знаю его, и знаю, что роутинг на файлах для него — совсем не обязательная штука. К примеру вот этот роутер обрабатывает вообще все УРЛы, который не попали в логику явного роутинга, и в зависимости от типа ресурса я выдаю ту или иную конечную вьюху. И да, это MODX-ресурсы, берущиеся из таблицы site_content, только уже не средствами MODX (но это не особо важно).

А вот здесь и вовсе прописана обработка входящих запросов еще до вызова некста. Так что некст — это следствие, а не причина.

А некст я взял, потому что посмотрев имеющиеся решения на рынке, он больше всего понравился своей относительной минималистичностью и гибкостью в кастомизации.
Fi1osof
11 апреля 2021, 17:39
0
Либо я тебя не понимаю, либо ты меня. Я выше писал, что одного только токена не достаточно, нужен еще и кукис (во всяком случае для обращения к MODX). Во-вторых, сам этот токен получить — не просто так.

Еще и по сути нет средств проверить авторизован ты или нет, то есть нет метода типа Security/User/GetCurrentUser. В чем проблема здесь? В том, чтобы понять когда ты авторизован, а когда нет. Единственный вариант тут — это просто реагировать на 401-ые ошибки (как это сейчас MODX делает). Но проблема тут в том, что у нас неоднозначная система доступов, и легко могут быть случаи, когда интерфейс загружен, а на определенный запрос нет прав. То есть ты запросил что-то, а в ответ получил 401-ый код серверный (что MODX делает много где) и это одновременно может быть признаком того, что ты не авторизован, хотя не гарантирует это (ты на самом деле авторизован, но нет прав на этот запрос и получил 401). В общем, все это делает работу с API неудобной и неоднозначной.
Fi1osof
11 апреля 2021, 17:34
0
П.С. На странице админки для действия «security/login» блокировки вроде нет.
Проверь сам. Я ссылку на кусок кода дал, там блокируются вообще все запросы на коннектор, если пользователь не авторизован. А авторизация в админку работает через обычную форму с POST-запросом на саму страницу, а не через Ajax-запрос, и авторизация выполняется на уровне контроллера самой админки, а не через коннектор. При заходе на страницу админки, ответ обрабатывается через modManagerResponse, и если пользователь не авторизован, то вызывается контроллер security/login, и если отправляются данные авторизации, срабатывает handleLogin(), и там уже вызывается процессор Security/Login. То есть этот механизм не через коннекторы работает.
Fi1osof
11 апреля 2021, 16:31
0
Да не, можно. Но это как-то ненадежно. Хотелось бы поменьше костылей.
Fi1osof
11 апреля 2021, 15:45
+1
Не за что!

Про авторизацию частично обсуждалось modx.pro/howto/18977#comment-114090, видимо, многие спотыкаются :)
Нее, там совсем чуть-чуть и вообще про REST-контроллеры. Я же хотел заюзать нативные средства без каких-то движений на стороне кода сайта. Уточню разницу: РЕСТ-контроллер, это всего-лишь общий класс на чтение данных и отдачу ответа. То есть да, в нем есть возможность добавить логику, всякие вещи дописать и все, но все это на уровне кастомных контроллеров. Но если смотреть имеющиеся системные процессоры, то там много всякой логики, особенно на создание/редактирование всяких объектов (включая пользователей, ресурсы и т.п.). Гляньте хотя бы тот же процессор создания ресурса, который в том числе обрабатывает логику с ТВшками, группами ресурсов и т.д. и т.п. А еще в этих процессорах уже прописана проверка всяких прав. Переписывать все это на уровне кастомных контроллеров — дикий оверхед. Задача же была написать панель, которая не требует никаких лишних движений на стороне кода сайта, при этом максимально поддерживала бы базовые функции, да еще можно было бы что-то свое докрутить. По-хорошему в MODX на уровне ядра надо поправить возможность авторизацию без проверки уже имеющейся, а не как сейчас. Для особых параноиков можно системную настройку сделать, чтобы можно было это блокировать. Ну и текущего пользователя возможность получать. Тогда будет вообще ОК.

Это, кстати, частично исправлено в текущей админке MODX 3, можно в системных настройках увидеть.
Какая именно? Не нашел.
Fi1osof
09 апреля 2021, 13:17
+1
С Vue я не работаю, и не вижу ссылки на github там. Плюс там еще и SaSS, а я юзаю styled-components. Так что не подойдет, к сожалению.
В любом случае, я буду делать стилистически очень близкую к родной админке (просто потому что на нее буду смотреть), так что перейти не должны быть сложности. Но еще раз отмечу: пока что это только эксперимент. А там сделаем выводы.