Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Устаноўка модуля на хостынг #7

Open
dashiwa opened this issue Jun 15, 2018 · 30 comments
Open

Устаноўка модуля на хостынг #7

dashiwa opened this issue Jun 15, 2018 · 30 comments
Labels
enhancement New feature or request

Comments

@dashiwa
Copy link

dashiwa commented Jun 15, 2018

Хачу прапанаваць паляпшэнне
Зрабіць Рест сэрвіс
З яго дапамогай обмениватся дадзенымі паміж кліентам і серверам

Паслядоўнасць ўстаноўкі:

Спампаваць архіў з рэлізам модуля за адрасам https://github.com/diglabby/doika_1.2/archive/doika_final_1.1.zip -

Неабавязкова калі паляпшэнне будзе зроблена

Выняць тэчкi "doika" i "client-side" з архіва і размясціць iх у корані вашага сайта.
Неабавязкова калі паляпшэнне будзе зроблена

Выняць дамп базы дадзеных "doika.sql" з архіва і імпартаваць яго ў Вашу базу дадзеных.
Неабавязкова калі паляпшэнне будзе зроблена

Запоўніць неабходныя палі ў файле ".env" тэчкі "doika" для доступу да Вашай БД: імя базы дадзеных, лагін і пароль (DB_DATABASE, DB_USERNAME, DB_PASSWORD)
Неабавязкова калі паляпшэнне будзе зроблена

У браўзэры ўвесці адрас "{ваш хост}/doika" і стварыць неабходныя Вам кампаніі па зборы сродкаў
Гэта можна будзе зрабіць на серверы

Падключыць файлы js на тых старонках на якiх Вы жадаеце каб адлюстроувауся модуль doika. Для гэтага размясцiце такi код между тегами "

" i "" <script src="client-side/doika-loader.js"></script>
Зайсці ў адміністратыуную частку "{ваш хост}/doika" выбраць там патрэбную кампанію і скапіяваць у полі шорт-код html-код блока прыёму ахвяраванняў для вашай кампаніі.

На старонцы Вашай кампаніі ўставіць html-код памiж тэгамi "

" i "" там дзе Вы жадаеце бачыць ваш модуль.
Усе.

@falanster
Copy link
Member

@dashiwa вітаю,

цікавая прапанова. можаш удакладніць адкуль будуць брацца паролі для інтэграцыі з базай "(DB_DATABASE, DB_USERNAME, DB_PASSWORD)"?

@dashiwa
Copy link
Author

dashiwa commented Jun 19, 2018

@falanster Привет.
Абстрактно - приблизительно так работают подобные виджеты от многих сервисов.
Пример Robocassa

  1. Приложение на клиенте будет получать доступ к серверу через уникальный ключ - Уникальный ключ это токен (Думаю что подойдет OAUTH).
  2. С помощью этого ключа мы аутентифицируемся на сервере.
  3. Проводим процедуру авторизации на сервере . Теперь мы знаем какое конкретно .приложение и с какого сайта запрашивает данные.(OAUTH не занимается авторизацией)
  4. Делаем запросы на необходимые нам эндпоинты.
  5. Получаем ответы в виде json или любого другого подобного формата данных.
  6. Эти данные мы выводим с помошью нашей js библиотеки( которую тоже необходимо будет проработать - она будет хранится и загружатся с сервере).

@dashiwa
Copy link
Author

dashiwa commented Jun 19, 2018

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

@falanster
Copy link
Member

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

@cema93
Copy link
Collaborator

cema93 commented Jul 1, 2018

@dashiwa Доброй ночи.
Не уверен, что описанный вами способ сможет существовать в рамках белорусского законодательства.

@falanster
Copy link
Member

falanster commented Oct 1, 2018

@dashiwa Вось варыянт #82 устаноўшчыка ад @cema93
Можа неяк пракаментуеш?

@falanster falanster added the enhancement New feature or request label Oct 1, 2018
@dashiwa
Copy link
Author

dashiwa commented Oct 1, 2018

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

@falanster
Copy link
Member

@dashiwa ага, дзякуй. дарэчы спрабаваў паставіць наша рашэнне?

@dashiwa
Copy link
Author

dashiwa commented Oct 3, 2018

@falanster Пока читаю теорию по эквайрингу чтобы понимать суть..

@dashiwa
Copy link
Author

dashiwa commented Oct 4, 2018

@falanster @cema93 @svetit @pro2s

Привет всем.

Разработка опенсорс продуктов очень трудоемкая задача.
Поэтому, если никто не будет против, я могу поучавствовать в этом проекте в качестве диванного генерала - советчика :->

Могу написать много советов. А вы уже решите стоит ли это читать или делать.

С некоторой долей вероятности, возможно смогу что-то сделать, но не обещаю)

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

Можно конечно на эсперанто - но он менее популярен :->

@falanster
Copy link
Member

@dashiwa прывітанне,

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

канешне пішы свае парады і рэкамендацыі. зараз асабліва каштона каментары па коду

@dashiwa
Copy link
Author

dashiwa commented Oct 5, 2018

@falanster

  1. Можно сделать установщик через файл composer ? Создать composer package - это может облегчить установку , если будут новые зависимости

@dashiwa
Copy link
Author

dashiwa commented Oct 5, 2018

  1. Стоит провести исследование по возможности использования только необходимых компонентов фреймворка. Чтобы не тянуть огромное количество кода которое не используется. Это облегчит жизнь разработчикам
    К примеру - HttpFoundation,Form,Twig,Doctrine. - (привел примеры из Symfony) Для ознакомления с архитектурой Laravel нужно какое-то время

@dashiwa
Copy link
Author

dashiwa commented Oct 5, 2018

  1. Финансовые приложения - требуют повышенной безопасности. Стоит подумать о покрытии кода юнит тестами. Чуть позже подумать о возможности функционального тестирования , к примеру с помощью behat

@dashiwa
Copy link
Author

dashiwa commented Oct 5, 2018

  1. Проверить код через статические анализаторы и применить их рекомендации
    Code sniffer
    Mess Detector
    Php Inspections
    И различные линтеры для JS.

@dashiwa
Copy link
Author

dashiwa commented Oct 5, 2018

Можно использовать трекер задач связанные с github
Каждую задачу декомпозировать на составляющие

К примеру задача
(Проверить код через статические анализаторы и применить их рекомендации)
Можно разбить ее на несколько десятков частей
Оценить каждую часть

В итоге если одна часть будет занимать 15-30 минут времени максимум , задачу можно будет выполнять постепенно в свободное время.

@pro2s
Copy link
Contributor

pro2s commented Oct 5, 2018

  1. Стоит провести исследование по возможности использования только необходимых компонентов фреймворка. Чтобы не тянуть огромное количество кода которое не используется. Это облегчит жизнь разработчикам
    К примеру - HttpFoundation,Form,Twig,Doctrine. - (привел примеры из Symfony) Для ознакомления с архитектурой Laravel нужно какое-то время

Ну там зависимостей не так много, но не вижу смысла разбивать laravel и убирать лишние зависимости, в таком случае вообще будет проще переделывать на лековесный фреймворк с минимум зависимостей.
Другая проблема что на сегодня для облегчения установки, все зависимости идут "в комплекте" а стоило бы все таки использовать composer и иметь отдельные релизные сборки без dev зависимостей.

По проверке кода, надо настраивать CI c автоматической проверкой коммитов/PR и для начала все ошибки оформить в виде отдельных задач, а в дальнейшем, когда все будет пофикшено, проверять PR и не допускать такой код в репозиторий ;)

@dashiwa
Copy link
Author

dashiwa commented Oct 8, 2018

надо настраивать CI c автоматической проверкой коммитов/PR и для начала все ошибки оформить в виде отдельных задач, а в дальнейшем, когда все будет пофикшено, проверять PR и не допускать такой код в репозиторий

Хорошая задача, часто игнорируемая но трудоемкая

@falanster
Copy link
Member

@pro2s @dashiwa
зараз робім рэфактарынг коду https://github.com/diglabby/doika
гэта будзе пасатянны рэп для наступных версій. напішыце калі ласка як лепей інтэграваць механізм праверкі, каб наш код стаў лепей?

@dashiwa
Copy link
Author

dashiwa commented Oct 9, 2018

@falanster Привет. Какие редакторы использует команда? IDE
Можно настроить конфигурацию и импортировать. Тогда все будут использовать одни и теже настройки.
Если есть возможность использовать PhpStorm это будет неплохо. Если нет, настроим другие

@pro2s
Copy link
Contributor

pro2s commented Oct 9, 2018

@dashiwa не поможет ) надо жесткая валидация PR или автоматический форматер.
Я настраивал себе travisCI побаловаться, пока что с проверкой через phpcs на соответствие PSR2, могу лог проверки скинуть. Но с форматированием собирались прикрутить автоформатер (надо найти ответ).

@pro2s
Copy link
Contributor

pro2s commented Oct 9, 2018

"предложение причесать весь код и прикрутить или трэвиис или дженкинс для автоматического отклонения пулл-реквестов" это обсуждалось на встрече. было принято решение попробовать автоформатирование пул реквестов через styleci.io

@dashiwa
Copy link
Author

dashiwa commented Oct 9, 2018

@pro2s Интересная штука.

Есть еще circle но его нужно настраивать, я как то смотрел , но решил что опыт работы c jenkins пригодится больше

Если styleci заведется , тогда отлично.

Есть еще вариант использовать post receive hooks

Пока это все теории, нужно исследовать

@falanster
Copy link
Member

@Tyuba4 @fr0zen @cema93 можа быць вам нешта з размовы будзе карысным

@falanster
Copy link
Member

@dashiwa @pro2s калі знойдзіце нейкую тулсу па аўтафарматаванні пад джэнкінс кажыце, мы моажам паставіць гэта пашырэнне, бо сам джэнкінс зараз займаецца аўтадэплоймэнтам праекта

@pro2s
Copy link
Contributor

pro2s commented Oct 12, 2018

@falanster я с дженкинсом не работал но имха простого пути нет :( эта штука скорей для того чтобы проверить код и не деплоить невалидный релиз.
Можно конечно прикрутить https://github.com/squizlabs/PHP_CodeSniffer/wiki/Fixing-Errors-Automatically но готового решения нет.
Есть ещё сервис похожие на styleci, например https://prettyci.com, но предпочтительней styleci его используют в laravel.
Как вариант настроить автопроверку кода в дженкинс, а перед этим накатить авто фикс phpcs с правилами например принятыми в laravel или psr-2. Но там останется часть невалидного кода, который нельзя автоматом фиксить.

@dashiwa
Copy link
Author

dashiwa commented Oct 15, 2018

@pro2s @falanster
Привет.
Есть несколько вариантов

  1. Прекоммит проверка - перед тем как мы делаем коммит. Если у кого-то разные операционные системы это будет проблемой я не видел хороших кросплатформенных решений
  2. Пре ресейв проверка - когда мы пытаемся пушить коммит в репозиторий . Это найболее оптимальное решение, нужно только посмотреть как устроен конкретно сам гитхаб
  3. Проверка на этапе пулл реквеста - тут я думаю необходим доступ к апи гитхаба, не знаю есть ли бесплатный доступ
  4. Проверка в дженкинсе на определенном этапе как отдельное задание . Как известно дженкинс это просто оболочка для скриптов а их мы пишем сами, соответсвенно все первых три варианта могут работать в дженкинсе а можно сделать дополнительный - перед деплоем будем запускать код сниффер

Автоматического форматирования нет. Есть код бьютифейр но он может только небольшую часть фиксить. Остальное только сам разработчик

@dashiwa
Copy link
Author

dashiwa commented Oct 15, 2018

https://www.sitepoint.com/analyzing-php-project-jenkins/
Как всегда бывает. Подобные решения часто нужно допиливать
И просто являются ознакомительными

@alies-dev
Copy link
Member

Я думаю пра код-стайл трэба зевесці асобны іш'ю

што мы можам выкарыстоўваць на нашым баку:
https://github.com/Symplify/EasyCodingStandard
https://github.com/phpro/grumphp

@falanster
Copy link
Member

@dashiwa паглядзі калі ласкамы стварылі новы спіс ішус

https://github.com/diglabby/doika/issues

мо якія заўвагі будуць?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

5 participants