Когда несколько сайтов как по мне безопасней когда каждый под своим пользователем, если какой-то взломают, то хоть до других по файловой системе не доберуться. Ну и еще мелочь: на www-data нельзя переключиться sudo -u www-data -i. Особенно если много нужно сделать в файлах мне например неудобно каждый раз писать sudo -u www-data mcedit .... Но это на любителя. У меня в хозяйстве один такой сайт, так админ заказчика настоял. Радует что ковыряться на том сервере приходится раз в год.
А в чем гибкость? Придется извращаться с правами на файлы чтоб обновлять. И как я помню у www-data нет домашней директории, куда он ключи сохраняет и git конфиг? Как по мне лучше отдельный пользователь, не надо так веселится с правами и конфигами. Всё настраивается под него, и удобно работать, сайт создаёт файлы под тем же пользователем (загрузка, генерация, и т.п.). Удобно редактировать кронтаб для этого пользователя и запускать консольные скрипты находясь в нужной директории нужным пользователем.
Ну у меня нет, у меня все так изначально настроено, у каждого сайта свой пользователь, даже если он один на ВПС. Так проще обновлять, зашел на сервер по ключам под этим пользователем, перешел в нужную папку и набрал git pull (ну или заходить под рутом и переключаться на нужного юзера если несколько сайтов и лень всем делать ключи и настраивать Патти). Ну и деплой по вэбхуку мне бы точно было проще настроить, только реализовать метод контроллера с нужными действиями.
Опыт показывает, как бы ты там не извращался с гибкостью и расширяемостью рано или поздно прилетит задача которая не влезет в твою гибкость и придется переписывать полностью. И такое случается примерно раз в три года.
Абстракции НЕ должны зависеть от деталей. Детали должны зависеть от абстракций.
И еще. Создали мы PaymentAccount расширив его новым методом, но если мы его заменим на родительский Account у нас же всё сломается потому что в родительском нет нового метода.
Твоя проблема в том что ты csv парсить не умеешь, а не git. Git в данном случае сыграл свою роль только потому что ты файл с данными в него запихала. Если данные будут извне с другими окончаниями строк, то у тебя код опять сломается.
Я оценил со своей стороны как программист. Если бы я попросил человека сделать парсер цсв и он мне начал свои костыли самописные предлагать, я б это оценил как минус что человек плохо знает язык и стандартные функции. Ваш метод хорош для тренировки навыков программирования, но в жизни когда нужно распарсить гигабайты файла это выльется минимум в увеличенное в разы время работы и кучу багов связанных с тем что вы не учли разные концы строк. Еще скажу, что в маке другие окончания строк по дефолту. И парсер может работать на линуксе, а файл для парсинга вам сформировать на винде или маке. Для наглядности можете сравнить этот код со своим:
$csv = new \SplFileObject($path);
$csv->setFlags(\SplFileObject::READ_CSV | \SplFileObject::READ_AHEAD | \SplFileObject::SKIP_EMPTY | \SplFileObject::DROP_NEW_LINE);
$csv->setCsvControl(',', '"', '\\');
foreach ($csv as $row) {
// $row - массив данных из строки
}
думаю с fgetcsv будет на пару строк больше.
Ваш код мне напомнил как новенький коллега вместо обращения к $_GET['var'] парcил её регулярками из $_SERVER['REQUEST_URI'].
В php есть стандартные функции/объекты для чтения csv (fgetcsv, SplFileObject).Не надо было делать str_replace вообще, они читают строку и возвращают массив данных из полей.
"После наступления, в ретроспективе, событие имеет рационалистическое объяснение, как если бы событие было ожидаемым." - это тоже важно, мне кажеться что именно в нём весь смысл черных лебедей. А по вашему определению можно туда всё подряд приплетать, от колеса до изобретения ядерной бомбы.
Предупреждаем? Мне два раз акк заблочили только потому что мы с друзьями разок друг другу плюсов поставили когда-то.
Когда несколько сайтов как по мне безопасней когда каждый под своим пользователем, если какой-то взломают, то хоть до других по файловой системе не доберуться. Ну и еще мелочь: на www-data нельзя переключиться sudo -u www-data -i. Особенно если много нужно сделать в файлах мне например неудобно каждый раз писать sudo -u www-data mcedit .... Но это на любителя. У меня в хозяйстве один такой сайт, так админ заказчика настоял. Радует что ковыряться на том сервере приходится раз в год.
А в чем гибкость? Придется извращаться с правами на файлы чтоб обновлять. И как я помню у www-data нет домашней директории, куда он ключи сохраняет и git конфиг? Как по мне лучше отдельный пользователь, не надо так веселится с правами и конфигами. Всё настраивается под него, и удобно работать, сайт создаёт файлы под тем же пользователем (загрузка, генерация, и т.п.). Удобно редактировать кронтаб для этого пользователя и запускать консольные скрипты находясь в нужной директории нужным пользователем.
Ну у меня нет, у меня все так изначально настроено, у каждого сайта свой пользователь, даже если он один на ВПС. Так проще обновлять, зашел на сервер по ключам под этим пользователем, перешел в нужную папку и набрал git pull (ну или заходить под рутом и переключаться на нужного юзера если несколько сайтов и лень всем делать ключи и настраивать Патти). Ну и деплой по вэбхуку мне бы точно было проще настроить, только реализовать метод контроллера с нужными действиями.
А почему бы для сайта не сделать отдельного пользователя? Настроить чтоб nginx от него работал, и git тоже. И не надо будет так веселиться с правами.
В который раз пытаюсь понять эту формулу. Но везде сначала "Тут у нас умножение и сложение", а потом откуда ни возьмись появляются интегралы.
Спасибо, что не забыли ))
Опыт показывает, как бы ты там не извращался с гибкостью и расширяемостью рано или поздно прилетит задача которая не влезет в твою гибкость и придется переписывать полностью. И такое случается примерно раз в три года.
Абстракции НЕ должны зависеть от деталей. Детали должны зависеть от абстракций.
И еще. Создали мы PaymentAccount расширив его новым методом, но если мы его заменим на родительский Account у нас же всё сломается потому что в родительском нет нового метода.
Что в этом плохого? Переходите тоже на ты. С каких пор это стало считаться оскорблением?
Ну генератор имеет смысл если хочешь вынести чтение файла в отдельный метод, тогда получится что-то типа
Твоя проблема в том что ты csv парсить не умеешь, а не git. Git в данном случае сыграл свою роль только потому что ты файл с данными в него запихала. Если данные будут извне с другими окончаниями строк, то у тебя код опять сломается.
Ок. Если не сложно сообщите потом ответ от компании по поводу тестового, если они его прокомментируют.
Я оценил со своей стороны как программист. Если бы я попросил человека сделать парсер цсв и он мне начал свои костыли самописные предлагать, я б это оценил как минус что человек плохо знает язык и стандартные функции. Ваш метод хорош для тренировки навыков программирования, но в жизни когда нужно распарсить гигабайты файла это выльется минимум в увеличенное в разы время работы и кучу багов связанных с тем что вы не учли разные концы строк. Еще скажу, что в маке другие окончания строк по дефолту. И парсер может работать на линуксе, а файл для парсинга вам сформировать на винде или маке. Для наглядности можете сравнить этот код со своим:
думаю с fgetcsv будет на пару строк больше.
Ваш код мне напомнил как новенький коллега вместо обращения к $_GET['var'] парcил её регулярками из $_SERVER['REQUEST_URI'].
Зачем? Мы и так файл построчно читаем.
"Я-то использовала fgets + парсинг"
Думаю вы завалили тестовое ))))
В php есть стандартные функции/объекты для чтения csv (fgetcsv, SplFileObject).Не надо было делать str_replace вообще, они читают строку и возвращают массив данных из полей.
А если product.id имеет пропуски? Например, у нас удалены или выключены продукты с id 5000-5015, то мы два раза покажем одно и тоже?
"После наступления, в ретроспективе, событие имеет рационалистическое объяснение, как если бы событие было ожидаемым." - это тоже важно, мне кажеться что именно в нём весь смысл черных лебедей. А по вашему определению можно туда всё подряд приплетать, от колеса до изобретения ядерной бомбы.
Вы бы определение "черного лебедя" для начала узнали, у вас это какая-то отсебятина. Та и covid19 врядли подходит под определение.