Pull to refresh
-19
0
Артем @anydasa

php, sql, js, scss, html — все в одном

Send message

Юзаю gpt4. Очень нравится для мозгового штурма. Программирую давно на php, и а вот решил попробовать python. Очень помог в формировании набора инструментов для работы.

Столкнулся проблеммой риалтайм обработки данных в большом объёме, он мне поведал о flink и аналоги. Flink попробовал, отличный инструмент.

И много чего не знал, он меня как бы направил. В python например крутил fastapi между сервисами, но все мне не нравилось, много движняка, хотелось проще, гпт открыл мне мир protobuf и betterproto.

Когда то он мне открыл redis stream, все юзал кроля, но на мою задачу он не клеился, данных было очень много.

Было пару мес, пока не работал, я тупо с ним с утра до вечера сидел. Это было как интенсив английского с носителем. То что раньше долго жевал, наконец проглотил.

Да, подбешивает иногда, но в целом, я очень за его использование.

Не заменит. Так же как уалькулятор не заменил бухгалтеров. Это просто инструмент.

Россия с большой буквы пишется

Грамматическии, да, но политика сейчас рулит. Потому с маленькой. Все верно

когда нет возможности оплатить, понять еще можно
но тут 99% тех кто просто жлобы. семейная стоит 5 баксов это на 5 человек. т/е/ по 1 баксу. типичная русская манера. отжать, на халяву, кинуть
5 видосиков в мес... да кого вы обманываете
Впрочем, живите так и дальше, ваш выбор

Вместо покупки лицензии? Которая 5 баксов? Мда...

Дно? Вы не осознаёте чем все это может закончится. Возможно Вам точно будет не до вопросов, какую ide юзать

Т.е. контракт может использовать только абстрактный класс?

Может EntityManagerInterface создан потому что EntityManager можно задекорировать?

Это все верно только для микросервисов.

Для средних сервисов это - копипаст и лапшекод. Да, плохая абстракция хуже копипаста, но если она грамотная это ок, даже если можно и без нее.

Много классов, мало классов, это такое себе мерило. Я видел обратную сторону, написали в 10 строчек сервис, и потом заюзали его в 100 местах. А потом поняли, что получился бетон.

Осознанный нейминг + четкие границы контекстов + нормальная модульность

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

я так понял, вы предлагаете такую схему
{PORT}.dev{X}.example.com -> 10.0.0.X:PORT
какой проект, какой дев, не ясно.
+ тут с wildcard сертификатами сложнее становится

мне лучше понимать когда такой тип домена
cms-vasiliy.example.com
api-cms-vasily.example.com

да, писатель из меня еще тот)

да и не заметил что в 1 спойлер засунул два других, только сейчас понял, поправил. + дописал этот момент

Смотрите...

  1. proxy frp находится в связке контейнеров. Поднимая проект (docker-compose up) поднимаешь все сразу: тунель, nginx, php, sql. после того как поработал, сделал docker-compose down и убил и прокси и nginx и тд.

  2. ненужно править nginx серверный, в той статье что вы поделились, проксирование на 10.99.0.2:8443; это совсем не гибко, пока ты один и у тебя всегда проект будет на 8443 то пойдет, но так не бывает, в моей реальности :)

  3. открывать порты nginx (docker) ненужно, все проксируется внутри сети докер-проекта. Т.е. вообще нет открытых портов

  4. я не писал, но у FRP можно создать любой тунель по tcp, ssh, + куча плагинов есть

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

В статье не писал, все это в репе есть, настройка на клиенте (внутри докер контейнера) proxy

client.ini
[common]
server_addr = {SERVER_HOST}
server_port = {SERVER_PORT}
token = {SERVER_TOKEN}
login_fail_exit = true

[frontend-{PERSONAL_ALIAS}]
type = http
local_ip = webserver
local_port = 8081
subdomain = {PERSONAL_ALIAS}

[admin-{PERSONAL_ALIAS}]
type = http
local_ip = webserver
local_port = 8082
subdomain = admin-{PERSONAL_ALIAS}

[api-{PERSONAL_ALIAS}]
type = http
local_ip = webserver
local_port = 8083
subdomain = api-{PERSONAL_ALIAS}

и dockre-compose воображаемого проекта, в реальный проект перенести нужно только блок proxy и подсунуть ему нужные конфиги, см. выше

Клиентский docker-compose.yml
version: '3.7'

services:

  proxy:
    build: docker/proxy
    depends_on:
      - webserver
    environment:
      PERSONAL_ALIAS: ${REVERSE_PROXY_PERSONAL_ALIAS}
      SERVER_HOST: ${REVERSE_PROXY_SERVER_HOST}
      SERVER_TOKEN: ${REVERSE_PROXY_SERVER_TOKEN}
      SERVER_PORT: ${REVERSE_PROXY_SERVER_PORT}

  webserver:
    image: nginx:alpine
    restart: unless-stopped
    volumes:
      - ./docker/nginx/templates:/etc/nginx/templates
    depends_on:
      - app

  app:
    image: php:8-fpm-alpine
    restart: unless-stopped
    volumes:
      - ./src:/var/www/html

Возможно я не раскрыл мысль.

Допустим у вас есть сервер, на нем Nginx + VPN. У вас два разработчика в команде. Вы решили, что

  • *.dev1.example.com будет проксировать запрос на 10.0.0.1

  • *.dev2.example.com будет проксировать запрос на 10.0.0.2

Когда придет новый дев, нужно будет в конфиге Nginx правки вносить. Не проблема, но зачем? если с FRP управление какой поддомен куда вести будет уходит на плечи клиента.

Хорошо, будем руками править на reverse nginx, но дальше, все запросы для dev1 идут на 10.0.0.1, у меня развернуто 2 проекта, допустим:

  • site, admin-site, static-site, api-site - это 1 docker-compose

  • site2, admin-site2, static-site2, api-site2 - это 2 docker-compose

теперь стоит задача, создать маршруты локально,

  • site.dev1.example.com -> 10.0.0.1 -> docker container site

  • site-admin.dev1.example.com -> 10.0.0.1 -> docker container site-admin

  • ....

когда разработка идет в докере, обычно это делаю так

version: '3.7'

services:
  webserver:
    image: nginx:alpine
    depends_on:
      - app
  app:
    image: php:8-fpm-alpine

Вы будете на клиенте в не докера еще 1 nginx ставить который будет роутить запросы? или на сервере будете указывать порты? которые откроете в докере?

И снова.... технически решаемо, но это ад становится с поддержкой.

С FRP всего этого геморроя нет.

Ngrok, кстати, на такой услуге зарабатывает, FRP 40т звезд на гитхабе, это как минимум намек на то что инструмент востребованный.

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

Это уже как минимум не проще.

А добавьте сюда вопросы менеджмента роутинга. Например появился новый дев, и теперь ему нужно тоже проксировать, добавлять правила в nginx?

И дальше, как локально роутить трафик по контейнерам? У нас докер, одновременно может работать несколько nginx

Да, технически это возможно. Но это совсем не проще. ИМХО.

Но если быть откровенным, такая мысль не приходила, возможно ее так же можно до ума довести. Спасибо

Ну опишите, что для этого нужно сделать. По шагам.

Когда запрос, к примеру от банка, прилетает к вам. Которым он уведомляет, что транзакция которую вы создали ранее, завершена успешно (или нет)

Как вы собрались проксировать запрос с nginx в локальную сеть?

  1. получить callback от внешнего сервиса

  2. посмотреть на приложение со смартфона

  3. поделится ссылкой с коллегой для обсуждения

  4. https не самоподписной

  5. много причин можно найти

но не всем это нужно, мне долгое время так же ненужно было

Information

Rating
Does not participate
Location
Новая Каховка, Херсонская обл., Украина
Date of birth
Registered
Activity