Страницы

, №1729228
+ 2   (2)
Попытался написать обычный класс, который записывает и выводит результаты по использованию памяти в PHP приложениях. В итоге ничего не написал. Всё это пытаюсь сделать применяя стандарт PSR-18 + SOLID + DRY + KISS.

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

Это вообще меняет весь процесс разработки, переворачивает с ног на голову.

Раньше всё как было:
1. Открываю блокнот
2. Накидываю модуль (спагетти код)
3. Тестирую
4. Заливаю

Теперь (как я это вижу):
1. Продумываю структуру, как инженер
2. Создаю классы, интерфейсы, кучу абстракций
3. Компоную это всё в готовый модуль Composer и использую в автозагрузке (autoload).
4. Пишу тесты (UnitTests)
5. Прогоняю тесты
6. Пишу CI/CD (?)
7. Прогоняю CI/CD в GitHub
8. Добавляю во все проекты, где это необходимо

А теперь давайте разберёмся в плюсах и минусах этих подходов…

Раньше:
+ Быстрая разработка, быстрый результат, быстрый рабочий проект
+ Можно придумывать на лету различные вариации, придумывать крутой, альтернативный функционал, внедрять какие-то фичи, которые ещё не реализованы нигде
+ Любой современный код можно легко "запихнуть" внутрь своего убогого кода, спагетти кода и всё будет работать.
- Спустя пару месяцев проект становится невозможно поддерживать, потому что количество кода становится огромным. Спагетти код читается сложно. Если ты сделал модуль и открыл его через год то нужно будет потратить кучу времени, чтобы прочитать его и понять, что в нём происходит.
- Рефакторинг (переработка) проекта становится невозможной. Проще написать с нуля. Что собственно и случилось с Кунами. Невозможно их дорабатывать и переделывать, их надо писать с нуля.
- Изменить что-то в базовом функционале невозможно, весь код рухнет, если я изменю базовую функцию, которую использует весь движок. Мне придётся искать каждый файл движка и изменять работу этой функции, что приводит к куче ошибок (не так поменял, опечатался)

Теперь:
+ Поддержка кода за счёт кучи абстракций максимальна. Если что-то поменялось в PHP то мы просто меняем буквально пару строк и всё. Остальные части системы даже не заметят никаких изменений.
+ Можно менять базовый функционал. Можно расширять базовый функционал за счёт абстракций до бесконечности.
+ Рефакторинг становится намного проще, так как ты пытаешься максимально соблюдать стандарты. И если ты ошибся и где-то стандарт упустил, то переделать всё под стандарт не составляет проблемы.
- Медленная разработка, приходится очень много думать и знать. Надо постоянно проверять код на соответствие PSR-18 + SOLID + DRY + KISS
- Развивается психоз на фоне того, что за последние 20 лет развития интернета огромное количество сайтов написано по старому формату и скорей всего тебе надо уметь читать "старый код", спагетти код, уродский код и переписывать его или интерпретировать на новый лад, согласно стандартам.
- Быстро запихнуть уродский, старый код, которым наполнен интернет больше нельзя. Нельзя нагуглить "красивый вывод расхода памяти в PHP" потому что 80%-90% статей будет написано за последние 20 лет и ты не можешь вставлять это убожество в свой проект. Т.е. тебе придется искать "правильную" реализацию или писать свой код, что сильно замедлит разработку и внедрение новых фич.

Просто - кот.
 
Не Токсик
, №1729179
+ 2   (2)
В общем сегодня был первый созвон. Назначат встречу и техлид будет меня проверять. И скорей всего расстреляет на месте, но я вынесу опыт того, что спрашивают на собеседованиях в реале.
 
, №1729155
+ 3   (3)
Оказалось,что для платежа МТС можно зайти и через страницу МТС Банк(Её пока не переделали).

Во флуде живёт
Что то вкусное жуёт.
Догадаться нету сил?
Это братцы крок о дил.
 
Не Токсик
, №1729148
+ 2   (2)
крок о дил, да нет никакой темы, пусть каждый вываливает что хочет. Я просто спамлю сюда лог, иначе создаётся впечатление каждый раз что я просто "пропадаю" во время разработки. Навсегда :D
 
, №1729144
+ 1   (1)
Немного не по теме,но кому-то может пригодиться.
МТС переделал главную страницу так,что я не смог оплатить интернет с компьютера.
Хорошо,что они пока оставили возможность использования старого варианта и я смог заплатить.
Если кто платит МТС с компьютера,то тому стоит проверить работает платёжка или нет,не откладывая это на последний момент.
 
Рандом
, №1729142
+ 2   (2)
Текущий стек работы кунов это:
NGINX + PHP-FPM + MySQL

Собственно на нём я и собирался накодить и запустить.

Однако просматриваю и другие варианты:
Swoole PHP + MySQL
GoLang + MySQL

Попробую понакатывать и то и то, потестирую. Нужно ещё для тестов найти пакет какой-то, который будет долбить сервер и показывать RPM. Реквесты в Минуту, т.е. сколько запросов выдерживает стек.

Понятное дело скорость лишь один из факторов. Так же в голове держу:
1. Адаптивность. Т.е. чтобы при изменениях в интернете можно было спокойно эти изменения вносить.
2. Свежесть технологии. Чтобы она изначально поддерживала все современные стандарты и форматы.
3. Надежность разработчиков, которые её написали и поддерживают. Чтобы потом не оказалось что Посейдон использует технологию, которую "бросили" и уже давно не обновляют и не поддерживают. А такое происходит часто в Вёбе.

Уровень по тихоньку растёт, конечно до Middle/Senior мне ещё далеко. И вообще непонятно нужно ли мне идти именно в этом направлении. Ведь общее направление "Вебмастера" у меня это как раз огранизация проектов из говна и палок и на хостинге, который тебе дали.

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

Минусы этого подхода заключались в том, что в итоге я почти никогда не имел доступа к настройкам Nginx + PHP + MySQL, потому, что сервер идёт из коробки, я ничего не понимаю что там "наадминили" и как всё это работает внутри. И в случае с Кунами, когда пошла нагрузка, я по сути ничего сделать то и не мог. Максимум я купил сервер по дороже и всё.

Да и вообще, если честно я никогда не знал что я делаю. Когда куны перенесли на новый сервер - они не заработали. Мне надо было быстро менять какие-то настройки, на лету, менять права доступа к папкам, менять права групп. Я вообще не понимал никогда что это значит. И какое это имеет отношение к коду, который написан. Но после этой возни всё начинало магическим образом работать.

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

Самый лучший вариант это писать код и смотреть чужой код, искать самых лучший разрабов. Смотреть как они делают и пытаться понять почему именно так они и делают. Чем я собственно сейчас и занят.
 
, №1729128
+ 2   (2)
Я уже думал не осилю сегодня. Ничего не получалось, ничего не работало. А пробовал я устанавливать и настраивать MySQL через Ansible.

В итоге во время своих путешествий по коду нашёл имплементацию разных модулей (ролей) Ansible на GitHub:
https://github.com/geerlingguy/ansible-role-nginx
https://github.com/geerlingguy/ansible-role-php
https://github.com/geerlingguy/ansible-role-securi…
… и т.д.

Эти готовые варианты подключений выложил человек, который написал книгу на эту тему. Она так и называется "Ansible for DevOps".

Закачал модули php, nginx, mysql, начал переписывать свой Ansible скрипт, разбираться в сотнях переменных. В итоге всё-равно всё плохо ставилось, с багами и прочим.

В конце-концов все-таки смог собрать рабочий билд. Завтра арендую сервер, натравлю Ansible на него, если сработает, то пол дела уже сделано. Дальше я смогу вернуться к разработке шаблона для аКуна и микросервиса USER.

Вообще конечно я много раз за день расстраивался, потому, что я тупой. Мой код - отстой аутиста. Когда я смотрю мастеров GitHub'a я вижу что есть разработчики, крайне высокого уровня, которые сразу ставят CI/CD, настраивают всё так, чтобы их код из гитхаба можно было легко использовать любому.

Я так не умею. Там настолько много ньюансов, что порой я даже не понимаю что они выкладывают. Куча всяких конфигов, куча всяких вариантов запуска, вроде Vagrant.

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

Да уж … Ну и задачка конечно.

Подсчитаем траты: $155 + $133 + $12.71 + $17.09 = $317.8
 
Ансибл
, №1729071
+ 2   (2)
Сказать что я задолбался за эти два дня это ничего не сказать.

Ansible, мощный инструмент, который мне пришлось изучать с нуля. Я взял четыре тестовых железки. 3 ПК и 1 Ноутбук. Переустанавливал на них Debian 11 Server и натравливал Ansible чтобы тот ставил мне настройки.

В итоге сегодня я смог накатить NGINX + PHP-FPM, это уже позволяет запускать без проблем динамические сайты. Оплатил 500 руб. у одного хостера, сразу же арендовал почасовой сервер, натравил на него Ansible и он отлично отработал и всё установил.

Так вот, это значит что скрипт работает везде. И работает успешно.

Дальше мне надо научить его ставить для каждого домена свою базу данных MySQL. Причём чтобы всё это было безопасно, по всем канонам паролей в 50 символов.

Если я закончу автоустановку базы данных, то дальше я наконец-то смогу уже перейти на сервис USER, который отвечает за Логин/Регистрацию. И заодно дальше верстать шаблон АнимеКуна.

Эти два дня я жил очень просто: вставал и сразу садился писать Ansible код, сотнями строк, безвылозно. Когда моя спина и шея говорили "Тебе пизда", то ложился на кровать, врубал зарубежные курсы по Ansible. Которые смотрел, записывал в блокнот и запоминал, пока не вырубался нафиг.

Короче я настолько Ansible, что Энсибл, Ансибл, Ансибль…
 
, №1728964
+ 2   (2)
Итак, сегодня продолжил с Ansible, шаблон уже умеет:
1. Ставить базовые пакеты в систему, вроде curl, wget, gpupg, sudo
2. Удалять CD-ROM из базового пакета apt, который блокирует потом установку софта
3. Добавляет все репозитории Debian 11, которые нужны
4. Обновляет систему
5. Добавляет двух пользователей
6. Меняет пароли пользователей, в том числе root пароль на убер сложные
7. Ставит всем пользователям свои SSH ключи авторизации
8. Удаляет в системе возможность гибернации или сна
9. Меняет стандартный SSH порт с 22 на нестандартный
10. Выключает возможность логина под root пользователем
11. Выключает возможность авторизации по паролю, только SSH ключи
12. Устанавливает NGINX, ставит его в автозагрузку, перезапускает

Дальше мне необходимо чтобы Ansible удалял стандартный default домен, который открывается и добавлял уже конкретные домены рабочих проектов.
Но этого мало, потом мы притягиваем PHP-FPM, со свом конфигом, который я буду регулировать и надеюсь найду конфиг связки PHP + NGINX не сильно хуже чем у Laravel Forge.
После всей этой мутатени мы добираемся до самого главного - MySQL в качестве базы данных на сервере. Вот с ней я вообще подохну разбираться. Там и root надо вроде как вырубать по стандарту. И сложные пароли генерировать. И базы данных создавать автоматом под каждый проект.

И если я сделаю эти "нехитрые" вещи то сразу же покупаю тестовый сервер и запускаю на нём скрипты Ansible. И потом сразу же продолжаю писать Логин/Регистрацию, с авторазвёртыванием на сервере.
 
Токс
, №1728911
+ 2   (2)
В общем Ansible рабочий и бесплатный инструмент. Сейчас гоняю настройки на тестовых машинах. Надеюсь еще день-два и допишу установку и настройку безопасных серверов с нуля.

И надо дальше верстать Куны и уже заливать микросервисы с базами данных.

Пока что нерешенных вопросов нет. Это радует.
 
, №1728894
+ 2   (2)
Откопал Ansible и Puppet, сейчас буду ставить и настраивать Ansible. Судя по описанию это всё, что мне нужно для управления хоть сотней серверов.
 
Серверный Сервер
, №1728891
+ 2   (2)
Изучил: RunCloud, ServerPilot, Laravel Forge, Tasksel LAMP - всё платное. Бесплатного аналога ещё не нарыл.

Laravel Forge лучше всего подготавливает сервера, 18 278 запросов в минуту
RunCloud на втором месте, выдерживает 17 710 запросов в минуту

Для сравнения можно так же взять стандартный сервер, который можно настроить руками. Он выдерживает 10 703 запросов в минуту. Т.е. если не шаришь как настраивать сервера, т.е. ты не DevOps и не сис. админ, то получаешь в два раза хуже производительность.

Я объясню в чём ещё гемор. Каждый раз когда ты покупаешь сервер у стандартного хостера он часто туда запихивает Control Panel, т.е. какую-то панель управления. И если у тебя 20 серверов то и 20 панелей управления, разбросанных по всему интернету. Мало того, что это сложно администрировать, так это ещё и не безопасно и каждая панель жрёт ресурсы на сервере изначально. Хотя она там и нафиг не нужна.

По этому лучший вариант это центральный сервер. Сервер серверов. Сервер, который управляет и настраивает другие сервера.

Буду рыть дальше.
 
, №1728888
+ 2   (2)
Сегодня я ставил и настраивал три сервера на Debian 11. Настройку ещё не закончил. Мне надо чтобы в них автоматически создавались домены в NGINX с определенными конфигурациями + создавалась база данных MySQL.

Это я делаю для того, чтобы микросервисы автоматом ставились на любой сервер. Ведь чтобы мне где-то запустить микросервис, который позволяет вам зайти надо:
1. Подключиться к серверу по SSH используя RSA 4096 bit ключ
2. Проверить все файлы, если их нет - залить, если изменились - обновить. Это сделает rsync
3. Проверить MySQL базу данных, если нет то создать и залить данные пользователей. Если есть то ничего не делать. Это сделает??? Без понятия что. Возможно прямое взаимодействие с командами MySQL.
4. В качестве сервера будет связка Nginx + PHP. Либо какой-то другой сервер для PHP. В любом случае необходимо будет создать файлы сервера, настройки Nginx на автомате.

Это все я пытаюсь реализовать с помощью Bash. Возможно есть какой-то инструмент готовый, чтобы управлять связкой серверов, но я его пока что не нарыл. Kubernetes не подходит, он требует минимум 2 гига оперативки только для себя. А ведь там ещё и сервисы должны работать. Так что сервера под Kubernetes будут по цене золота.

Для сравнения сервер за 200 руб. в месяц это 1 ядро процессора и 512 мб оперативки, 20 гигов места на жёстком.

Сервер с 2 гигами оперативки стоит 800 руб. 2 ядра, 2048 мб оперативки и 40 гигов места.

Задумка в том, что Куны спокойно будут работать на самом дешевом железе. Только железа этого будет много. Так что придётся дальше потеть и смотреть варианты управления этим монстром из кучи серверов.
 
Пупс
, №1728805
+ 2   (2)
Ну что, девочки и мальчики, разработка идёт полным ходом. На сегодня всё, пойду отдыхать.

https://toxic-cat.ru/

Дизайн текущего Куна кстати не так уж и плох. Много чего продумано.
 
, №1728791
+ 2   (2)
Срез за пол рабочих дня.

Работаю над шаблоном аКуна
https://toxic-cat.ru/

Работаю над движком Poseidon
https://github.com/MokhovEvgeniiGennadevich

Процесс идёт, проблем нет.
- Внедрил мультиязычность.
- Внедрил шифрование в адреса страниц, теперь они выглядят длинно и непонятно. Проверил что при смене ключей шифрования все страницы на порталах сразу же поменяются. Это нужно будет делать раз в какое-то время.
- Залил фон, проверил как проходят обновления. Внедрил версионность обновлений. Чтобы у всех подгружались новые данные, а не хранился кэш старого дизайна.

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

Главное что теперь больше нет паники по поводу выбора технологий. Осталось просто писать много кода и всё. И много страниц и много функционала и логики. ОЧЕНЬ МНОГО.
 
Страницы

Дополнительные поля (не обязательны):




Смайлики:   Аниме    Кролики    Мишки    Колобки    Мэмы    K-Pop Девочка    Скрыть