Pull to refresh
1
0
Антон @toxa82

Пользователь

Send message

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

Когда несколько сайтов как по мне безопасней когда каждый под своим пользователем, если какой-то взломают, то хоть до других по файловой системе не доберуться. Ну и еще мелочь: на www-data нельзя переключиться sudo -u www-data -i. Особенно если много нужно сделать в файлах мне например неудобно каждый раз писать sudo -u www-data mcedit .... Но это на любителя. У меня в хозяйстве один такой сайт, так админ заказчика настоял. Радует что ковыряться на том сервере приходится раз в год.

А в чем гибкость? Придется извращаться с правами на файлы чтоб обновлять. И как я помню у www-data нет домашней директории, куда он ключи сохраняет и git конфиг? Как по мне лучше отдельный пользователь, не надо так веселится с правами и конфигами. Всё настраивается под него, и удобно работать, сайт создаёт файлы под тем же пользователем (загрузка, генерация, и т.п.). Удобно редактировать кронтаб для этого пользователя и запускать консольные скрипты находясь в нужной директории нужным пользователем.

Ну у меня нет, у меня все так изначально настроено, у каждого сайта свой пользователь, даже если он один на ВПС. Так проще обновлять, зашел на сервер по ключам под этим пользователем, перешел в нужную папку и набрал git pull (ну или заходить под рутом и переключаться на нужного юзера если несколько сайтов и лень всем делать ключи и настраивать Патти). Ну и деплой по вэбхуку мне бы точно было проще настроить, только реализовать метод контроллера с нужными действиями.

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

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

Спасибо, что не забыли ))

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

Абстракции НЕ должны зависеть от деталей. Детали должны зависеть от абстракций.

И еще. Создали мы PaymentAccount расширив его новым методом, но если мы его заменим на родительский Account у нас же всё сломается потому что в родительском нет нового метода.

Что в этом плохого? Переходите тоже на ты. С каких пор это стало считаться оскорблением?

Ну генератор имеет смысл если хочешь вынести чтение файла в отдельный метод, тогда получится что-то типа

function getCsvData($file) {
    $fp = fopen($file, 'r');
    while (($row = fgetcsv($fp, 0, ',')) !== false) {
        yield $row;
    }
    fclose($fp);
}
foreach (getCsvData('file1.csv') as $row) {
    // работаетшь с $row
}
foreach (getCsvData('file2.csv') as $row) {
    // работаетшь с $row
}

Твоя проблема в том что ты 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'].

Зачем? Мы и так файл построчно читаем.

"Я-то использовала fgets + парсинг"

Думаю вы завалили тестовое ))))

В php есть стандартные функции/объекты для чтения csv (fgetcsv, SplFileObject).Не надо было делать str_replace вообще, они читают строку и возвращают массив данных из полей.

А если product.id имеет пропуски? Например, у нас удалены или выключены продукты с id 5000-5015, то мы два раза покажем одно и тоже?

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

Вы бы определение "черного лебедя" для начала узнали, у вас это какая-то отсебятина. Та и covid19 врядли подходит под определение.

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity