• Теоретические знания в собеседованиях важны?

    Snakecharmer
    @Snakecharmer
    Глубокие теоретические/философские вопросы всегда были уделом интеллектуальной элиты, а не плебеев))

    Глубокое знание теории обязательное требование на любые middle+, senior, lead вакансии. Потому что именно эти специалисты решают настоящие проблемы, а не просто тасочки в джире. Сложно занять высокую должность не стремясь проникнуть в смысл вещей. Не стремясь узнать как на самом деле работает твой фреймворк/библиотека/язык/субд... да без разницы что. Это отлично помогает в деталях понять границы применимости ваших технологий. У джуна не спросят какие процессы происходят в кишках его стека.

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

    Поэтому не надо для собеседований ничего заучивать. Собеседование всегда стресс, вы все забудете. Делайте как написал выше и все со временем к вам придёт. Успехов!
    Ответ написан
    8 комментариев
  • Как после удаления последней записи сделать чтоб id следующей новой записи стал как у удаленной записи чтоб не разрывать нумерацию?

    @RusaDrako
    Имеет ли смысл решать эту задачу в таком виде?

    Вы всё равно будите иметь разрывы в записях: создана запись id=n (счётчик следующей записи n+1), после неё будет создана другая запись id=n+1 (счётчик следующей записи n+2), а после будет удалена запись n, счётчик сброшен до n+2.
    Ответ написан
    5 комментариев
  • Nginx возвращает 404 при запросе на существующий маршрут. Что делать?

    smilingcheater
    @smilingcheater
    location /{                                                                                                             
        try_files $uri $uri/ =404;

    Вы говорите NGINX'у - попробуй сначала запрошенный урл, потом его же со слешем, потом выдай 404. NGINX делает точно то, что вы сказали.
    Если у вас собранное реакт-приложение, то скорее всего у него точка входа index.html
    Замените указанное правило на
    location /{                                                                                                             
        try_files $uri $uri/ /index.html;

    тогда по запрошенному (но не существующему реально на файловой системе) урлу /poll вам вернутся содержимое Index.html, и запустится реакт, и реакт-роутер обработает указанный урл.

    https://nginx.org/en/docs/http/ngx_http_core_modul...
    Ответ написан
    1 комментарий
  • Почему так работают интерфесы в Го?

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

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

    Кстати, не рекомендую называть интерфейсы ISomething, это не принято в Го.
    Ответ написан
    Комментировать
  • Как сделать верную группировку в Union?

    @Akina
    Сетевой и системный админ, SQL-программист.
    SELECT id, MIN(type) type
    FROM t1
    WHERE type IN (1, 2)
    GROUP BY id
    Ответ написан
    4 комментария
  • Как можно получить изменения во VIEW, когда изменяется базовая таблица?

    Melkij
    @Melkij
    PostgreSQL DBA
    view не хранит никаких данных. Это просто сохранённое дерево запроса, встраиваемое в обратившийся к этой view запрос.
    Вам нужен триггер на таблице с данными, который будет писать в отдельную аудит таблицу историю изменений. Потом из этой таблицы получайте историю.
    Ответ написан
    Комментировать
  • Как правильно определить mime_type файла в папке после распаковки zip?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    mime_content_type определяет тип файла по сигнатуре, описанной в файле magic.mime.
    Если файл начинается с символов PK, то он будет определён как application/zip.
    P.S. Если точнее, то сигнатура "PK\x03\x04".
    Ответ написан
    6 комментариев
  • Насколько эффективна REST-full архитектура?

    vabka
    @vabka
    Токсичный шарпист
    Во-первых не rest-full, а restful с одной l.
    При использовании REST-full запросов, на сколько я понимаю, вся информация хранится в БД и привязывается к модели @Entity

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

    НЕТ.
    Ответ написан
    Комментировать
  • Как на сайте показывать псевдо-3д?

    @its2easyy
    часто просили клиенты, поэтому оформил это в библиотеку.
    https://github.com/its2easy/animate-images

    Хотя если не нужна интерактивность то проще зацикленное видео использовать
    Ответ написан
    Комментировать
  • Как экранировать sql запрос внутри texarea?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Это очень просто сделать.
    Надо всего лишь освоить подготовленные выражения.
    Например, почитав вот тут https://habr.com/ru/articles/662523/

    И все запросы, в которых участвуют переменные, выполнять только таким образом.
    А texarea там, или tinymce - это уже без разницы.
    Ответ написан
    1 комментарий
  • Почему при удалении куки возникает ошибка Warning: Cannot modify header information?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Ответ написан
    Комментировать
  • Является ли хорошей практикой использовать связку Nginx+Apache сегодня?

    ky0
    @ky0 Куратор тега Nginx
    Миллиардер, филантроп, патологический лгун
    Если точно понимаете, зачем вам Апач - почему бы и нет?

    Но, честно говоря, вариантов тут немного - чаще всего такое взгромождают, когда приложение работает только с неким экзотическим модулем апача, аналога которого для других веб-серверов не существует (см. напр. 1С). Ну или когда несколько поколений веб-программистов в три слоя обмазало сайт htaccess-магией и конвертировать это в nginx-директивы никто не хочет.
    Ответ написан
    2 комментария
  • Запрос на уникальность в разные года. Как составить?

    rozhnev
    @rozhnev Куратор тега SQL
    Fullstack programmer, DBA, медленно, дорого
    NOT EXISTS эффективней чем NOT IN
    select distinct t.id_user from T as t
    where 
        t.year = 2023 and 
        not exists (select id_user from T tt where year = 2022 and tt.id_user = t.id_user);


    другие варианты решения задачи:
    -- LEFT JOIN
    select distinct t.id_user 
    from T as t
    left join T tt on tt.year = 2022 and tt.id_user = t.id_user
    where t.year = 2023 and tt.id_user is null;
    
    -- EXCEPT
    select distinct t.id_user from T as t
    where t.year = 2023
    except
    select distinct t.id_user from T as t
    where t.year = 2022
    ;
    Ответ написан
    Комментировать
  • Какую базу данных использовать для такого проекта?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    Выбирать базу данных по картинке - задача неблагодарная. В вашем случае я не вижу каких-то особых требований к базе, поэтому возьмите ту базу которую вы уже знаете. Если не знаете ни одной - возьмите MySQL (самая популярная база для WEB проектов)
    Ответ написан
    Комментировать
  • Не могу авторизоваться, почему?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    так, давайте по порядку:
    login = filter_var(trim($_POST['login']), FILTER_SANITIZE_STRING);
    $pass = filter_var(trim($_POST['pass']), FILTER_SANITIZE_STRING);
    Во первых - зачем? Вы здесь не вносите никаких данных в систему, вы просто проверяете данные от пользователя с данными в бд.
    Во вторых - если у вас есть правила для логина и пароля - надо их и применять, а не втыкать абсолютно бесполезные фильтры.

    $pass = md5($pass."ghjsfkld2345");используйте встроенные функции, password_hash и password_verify для работы с паролями.

    $result = $mysql->query("SELECT * FROM `users` WHERE `login` = '$login' AND `pass` = '$pass '");
    Читаем про подготовленные выражения. Без них рано или поздно словите инъекцию. И начинать надо сейчас, на этапе обучения, и привыкнуть что по другому с переменными в запросах не работают. Так же, по уму подключение желательно вынести отдельно и добавить настройки. Рекомендую использовать PDO драйвер подключения к бд, он работает чуть быстрее и по функционалу побогаче.

    Warning: count(): Parameter must be an array or an object that implements Countable in D:\OSPanel\domains\Site1\auth.php on line 14
    по тому что читаем доку -
    fetch_assoc — Fetch the next row of a result set as an associative array
    Соответственно, если запрос пустой, то фетчить нечего. Для проверки существует num_rows.

    Выводит: "Такой пользователь не найден." Но в БД такой пользователь есть зарегестрированный, все данные авторизации правильные, а он выводит, что нету такого пользователя.
    Программу не на*бешь. Если говорит что нету, значит нету. А если не находит то что есть, значит вы не правильно ищете, что легко проверить. Вангую что запрос будет совершенно не таким как вы ожидаете:
    ...
    $query = "SELECT * FROM `users` WHERE `login` = '$login' AND `pass` = '$pass'";
    var_dump('check: ',$login, $pass,$query); 
    $result = $mysql->query($query);
    ...


    UPD: абсолютно верно подмечено Adamos - `pass` = '$pass ' никогда ничего не найдет из-за пробела в условии.
    Ответ написан
    Комментировать
  • Как проксировать запросы только если хост доступен?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Именнованный location в помощь
    location / {
      root /var/www/html;
      try_files @upstream $uri =404;
    }
    location @upstream {
      proxy_pass http://127.0.0.1:3000;
      proxy_intercept_errors on;
      recursive_error_pages on;
      error_page 404 = @local;
    }
    location @local {
      try_files $uri =404
    }
    Ответ написан
    5 комментариев
  • Где правильно выполнить динамическую проверку, например, для выбора метода оплаты, используя laravel контракт и инъекцию зависимостей?

    @k2lhu
    Делать в реальном проекте так точно не рекомендуется.
    То что вы приводите в виде примера - это размазывание бизнес логики между всеми слоями приложения.
    Все что вам нужно, это какой-то класс PaymentFactory, который будет иметь метод make(string $credit), у которого аргумент $credit и будет принимать значения credit/bank/null и на основании переданного аргумента будет возвращать правильный объект класса обработчика конкретного метода оплаты. И уже этот PaymentFactory можете вызывать через DI.
    Однако эту задачу можно решить через паттерн стратегия, тоже хорошо подойдет для удобной организации кода.
    Ответ написан
    1 комментарий
  • Как взять строку с самым большим значением и все равные ей?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    В PostgreSQL (начиная с 13 версии) есть замечатедьная конструкция
    select * 
    from t
    order by value desc 
    fetch first 1 rows with ties;

    https://sqlize.online/sql/psql14/212e2cb0b853c5c8a...
    Ответ написан
    3 комментария
  • Какую панель выбрать для выделенки?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Блин ну люди что с вами? Почему нельзя все заскриптовать. Даже без скриптов банальным копипастом что хост что бд создается за несколько секунд. По моему опыту панели даже мешают банальный шелл удобней в разы.
    Ответ написан
    6 комментариев