Ответы пользователя по тегу PHP
  • Какой Road Way сделать чтоб прокачать навыки девопса под php разработку?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    ну изучи

    1. какую-то систему мониторинга, чтобы мог развернуть, настроить какие-то метрики и смотреть за ними. Возможно + графану для визуализации
    2. Какой-нить инструмент для CI (Jenkins, Gitlab CI...)
    3. Какой-нить инструмент для CD (можно реализовать на базе тех же Jenkins, Gitlab CI)
    4. собственно сам git и систему код ревью (Gitlab, Bitbucket, Github, Gerrit)
    5. системное администрирование на уровне установки и базовой настройки пакетов - все что вам нужно, типа кафки, раббит, elastic search и др
    6. bash маст хев для автоматизации установок. Питон на базовом уровня для простых вещей, возможно кусков мониторинга

    Ну и главное - инфраструктуру своего проекта, чтобы понимать от и до, как из исходников собирается и запускается проект.
    Ответ написан
    Комментировать
  • Есть ли необходимость или очевидные плюсы перехода на linux?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    Работать нужно теми инструментами, которые удобны.
    В Линукс очень удобно запускать и выполнять код, который предназначен для линукса.
    Если ваш "продакшен" работает в Линукс, то удобнее было бы и локально сделать себе Линукс. Но не факт что вам будет удобно именно писать код в Линуксе.

    В общем случае, если возникают такие вопросы, следует подумать о виртуалке для тестирования вашего приложения, чтобы тестовое окружение было похоже на продакшен.
    Некоторые не могут нормально настроить себе рабочее место, чтобы код удобно и быстро запускался в виртуалке, поэтому рекомендуют сразу переходить на Линукс целиком.

    В общем хорошо иметь под рукой Линукс, если код в продакшене работает на Линукс.
    Ответ написан
    6 комментариев
  • Где лучше сохранить информацию о посетителей сайта?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    конечно в базе данных.
    Ответ написан
    Комментировать
  • Как настроить права на файл при выполнений php скрипта в ubuntu?

    saboteur_kiev
    @saboteur_kiev Куратор тега Ubuntu
    software engineer
    права, которые у тебя на cookie.txt не могут быть заданы при создании обычного файла, ибо umask не может для файла проставить executable и sticky bit

    То есть их уже кто-то потом поменял на такие.
    Либо для cookie создавался временный файл командой mktemp или ее аналогом.

    Выход -
    1. Добавить в php скрипт смену прав для файла после его создания - chmod("cookie.txt",0644);
    2. Просмотреть скрипт, понять в каком месте создается файл и выяснить почему кривые права. Может вместо создания временного файла там можно просто указать создание явного файла с указанным именем.
    Ответ написан
    5 комментариев
  • Как за 3-4 месяца прокачаться мидлу работающему в продуктовой компании?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Плюсую GavriKos
    Если в компании есть пересмотр, то выяснить процедуры пересмотра. Возможно для пересмотра можно заранее спланировать задачи, при выполнении которых будет пересмотр в сторону повышения.

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

    Если же в проекте нет денег для того, чтобы платить своим сотрудникам больше, то вряд ли пересмотр случится, как бы ты не старался (понятно что исключения могут быть, но..)
    Ответ написан
    Комментировать
  • Какое приложение написать для понимания ООП?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Ты не поймешь сути ООП, если будешь писать в одиночку. Нужно проецировать это на команду.
    Ответ написан
    Комментировать
  • В чем разница между способами тестирования (в контексте web и php)?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    юнит - тестирование минимального модуля, обычно один класс.

    Интеграционный - тестирование нескольких модулей или компонентов, которые могут разрабатывать разные люди. Соответственно у них может быть разное версионирование, или внедрение новой фичи, которая требует изменений обоих модулей может не совпасть по времени. Надо тестировать чтобы убедиться что обе стороны работают.

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

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

    e2e - енд ту енд, тестирование от начала до конца какой-то функциональности. Оно не совсем в эту иерархию вписывается. Скорее как тест, который имитирует работу пользователя. Например юнит тест можно сделать внутренними инструментами, интеграционный тоже. А e2e должен ну как минимум имитировать реального пользователя или реальное окружение как продукт будет использоваться.
    Ответ написан
    Комментировать
  • Использовать ли геттеры в классе где объявлены приватные свойства?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    геттеры и сеттеры именно для этого и нужны - чтобы далеко далеко в будущем, когда будет много других классов, и которым нужны эти данные, и вдруг тип данных нужно будет поменять (например перейти от int32 к int64), то будет достаточно просто поменять тип приватных данных, поправить геттеры, чтобы они конвертили в int32 для старых зависимостей и сделать два новых 64-битных геттера для новых.
    И потом уже все кто лазили за данными, либо будут потихоньку переходить на новые геттеры, либо сидеть на старых, но с ограничением.

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

    Если вы уверены, что как бы ваш софт не разросся в будущем, можете хоть вообще без классов писать, все в одну простыню.

    Все зависит от приоритетов. Нужна скорость - делаете одно. Нужна совместимость - делаете другое. Нужно и то и то - ищете архитектурный подход, где от геттеров все зависит мало.
    Ответ написан
    1 комментарий
  • Как найти цену регулярным выражением?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    > Как найти цену регулярным выражением?

    Если именно по этому вопросу, то почитать чуть глубже как именно работают различные квантификаторы. Собственно только их количество и тип используемых квантификаторов кардинально влияет на цену регулярки, остальные вещи не так сильно.
    группы могут влиять, особенно с использованием именных груп, но это больше на память и по сравнению с квантификаторами незаметно будет
    Ответ написан
    Комментировать
  • Как правильно деплоить mysql базу/миграции?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Обычно в таких случаях я лезу на сервер и делаю `pt-online-schema-change`, но что делать для "правильного" CI/CD?


    В правильном CI/CD таких изменений быть не должно. Задача архитектора - создать приложение, которое легковесно и без проблем как деплоится, так и откатывается.
    Задача девопс инженера - автоматизировать деплой и откат разными инструментами.
    Понятно, что все могут работать вместе и разрабатывать какой-то флоу, но если разработчики приходят с такими процессами, тут нет волшебных ci/cd инструментов которые сделают тяжелую задачу мгновенной.

    Если вы не можете повлиять на решение девелоперов и архитекторов, то не важно - любое рабочее решение, которое вы придумаете в пределах вашей инфраструктуры будет норм. И две базы, и релиз по ночам и что-нибудь еще.
    Но DevOps как культура как раз и говорит, что надо менять подход к работе, а не взять крутого человека, который возьмет весь бардак, засунет его в какой-нить ансибл/дженкинс, подключит плагин с AI и все порешается без изменений.
    Ответ написан
    6 комментариев
  • Возможно ли создать кроссплатформенное приложение на php?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    но не просто в виде exeшника файла, а отдельного, опять же, десктоп приложения но с большим функционалом

    Чем отличается приложение в виде экзешника от десктоп приолжения с большим функционалом? размером экзешника или ты плохо понимаешь что такое экзешник?

    Здравствуйте, появилась идея создать кроссплатформенное приложение: ВЕБ + ДЕСКТОП

    Отлично. Язык выбрал, а платформу ты какую выбрал для кроссплатформенности?
    А еще лучше, какие ты уже приложения сделал, хотя бы некроссплатформенные?

    Хочу синхронизировать десктоп приложение с веб составляющей

    чего?

    Попробуй сперва внятно пояснить свою хотелку себе, потом подучи терминологию именно в том смысле, как терминами пользуется большинство, и уточни свой вопрос.
    Ответ написан
    Комментировать
  • Как настроить тестовый сервер, чтобы одновременно можно было тестировать несколько версий проекта?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    В вашем случае было бы удобнее всего работать с докером.
    При этом все тесты должны быть автоматическими и запускаться на localhost

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

    Для ручных тестов, конфигурация будет гораздо, гораздо сложнее, тут уже не вопрос на тостер, а масштабная работа.
    Ответ написан
    2 комментария
  • Как правильно организовать работу серверов?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    1. API
    2. Сервера могут общаться через базу данных
    3. Сервера могут общаться через брокер очередей
    4. Можно подумать насчет общего стораджа - S3, распределенная файловая система, просто сетевой диск замапленный на каждый сервер.

    Вопрос не в том, чтобы "как связать", вопрос зачем вам это надо, как вы себе представляете "связывание" и какая у него цель?
    Ответ написан
    1 комментарий
  • Как зашифровать файл чтобы он не открывался?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    winrar с паролем 16+ символов.
    Ответ написан
    Комментировать
  • Почему один и тот же скрипт использует разное количество памяти?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    В такой постановке нет смысла задавать вопрос вообще.
    Откуда мы знаем что делает скрипт?
    Может он разные наборы данных обрабатывает.
    Ответ написан
    1 комментарий
  • Почему файл php выполняется дольше, нежели html?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    так html просто отдается, а php через php-fpm обрабатывается, не?
    Ответ написан
    Комментировать
  • Как собрать сервер на устаревшем ПО?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    ОС FreeBSD 7.2
    Lighttpd 1.4.25
    PHP 4.4.9
    MySQL 4.1.25

    Уверен, что все это также легко поднимется на Линуксе. Возможно придется поставить не самую свежую версию, а попробовать ставить свежий, пробовать ставить эти версии, если не прокатило, ставить более старую версию И так пока не заведется.
    Линукс заводить и поддерживать в виртуалке будет проще, чем FreeBSD.

    А вообще, если есть навыки программирования хотя бы минимальные, скопировать весь сайт и попробовать переписать под новые версии php, гугля ошибки и их решение. Очень много разных продуктов в мире приходилось апгрейдить. Можно вообще не знать php и с гугл-девелоп или stackoverfow-девелопментом можно все завести и на современных версиях.
    Ответ написан
    1 комментарий
  • Права 777 как скачать файлы?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    http не поддерживает скачивание папок.
    Поэтому простой ответ - никак. Более сложный

    Вариант 1
    Пройтись по всем папкам, получить список всех файлов и скачивать каждый отдельно.

    Вариант 2
    На стороне сервера создать архив со всеми файлами и папками и скачать его

    Вариант 3
    Настроить не web сервер, а что-то другое, ftp/ssh/nfs/samba и воспользоваться клиентом, который умеет работать со структурой директорий (filezilla, rsync, FAR с ftp/ssh плагинами, проводник)
    Ответ написан
    Комментировать
  • Можно ли где-то найти игровой переводчик для онлайн игр?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    в гугле есть API для перевода.
    Нужно понимать, что весьма непросто написать "скрипт", который будет переводить. Это нужен огромный словарь, аналитика, лексический анализ. Чтобы делать перевод быстро нужны немалые мощности.
    Поэтому есть большая вероятность что их скрипт просто делает API запросы в какой-нить сервис типа google-translate
    Какое-то количество запросов в (период времени) там вроде бы бесплатный. Если дергать часто, надо регать платный аккаунт.
    В общем я советую почитать про готовые публичные сервисы перевода
    https://cloud.google.com/translate/docs/basic/quic...
    Ответ написан
    Комментировать
  • Что такое API в PHP?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    грубо говоря, html странички - для живых юзеров, которые по ним ходят, жмут кнопки и читают буквы
    api - для служб, которые ходят друг к другу, читают информацию в виде массивов или объектов (json, xml, и др.) и собственно взаимодействуют посредством вызовов api

    UI - user interface
    api - advanced program interface
    Ответ написан
    Комментировать