• При обновлении страницы данные отправляются бесконечно раз в бд?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Есть вариант, надёжный: при генерации формы вставлять в неё одноразовый ключ, и запоминать ключ на сервере. При обновлении, если ключ на сервере есть - штатно обновлять информацию, и сразу стирать ключ. Всё, больше с таким ключём обновить не получится, нужно опять загружать форму, с новым ключём и уже новыми данными... Можно пойти дальше - при обновлении стирать все ключи, связанные с этой страницей/данными. Тогда другие вкладки/браузеры вынуждены будут обновить форму, в которой окажутся уже новые данные.
    Ответ написан
    Комментировать
  • При обновлении страницы данные отправляются бесконечно раз в бд?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега PHP
    Чтобы этого не происходило, нужно после успешного добавления куда-то редиректить пользователя (это может быть даже та же страница). Тогда браузер «забудет» введённые данные и можно будет обновлять страницу без вреда.
    Ответ написан
    Комментировать
  • Какие технологии использовать для создания веб-сайта на go?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Чаще всего такие задачи реализуются не на Go.
    Ответ написан
    Комментировать
  • Почему некоторые программисты на GO работают с бд на голом SQL без ORM?

    @gohrytt
    Как гофер с 1.13 версии могу предложить следующие рассуждения:

    1) Нормальная общепризнанная и безболезненная ORM отсутствует. Самая популярная - GORM, где-то на втором месте - ent. Обе в целом как-то соответствуют ожиданиям, но имеют свои особенности. Кто в GORMе делал джоин - в цирке не смеется.
    2) Из за того что в большинстве нормальных проектов ORMы не используются очень быстро привыкаешь писать именно SQL. Ты ещё на стадии аналитики рисуешь все эти create table и select from в голове, потом просто вставляешь в код.
    3) Производительность GORM сделала в мире го репутацию всем ORMкам как очень плохому решению.

    Лично я делю всех гоферов на 4 типа: бывшие джависты, бывшие пхпшники, бывшие питонисты и непосредственно гоферы - те у кого го первый или основной язык. В большинстве наблюдаемых случаев ORM в го пытаются затащить бывшие джависты по старой привычке: вот у нас в спринге был ORM значит и здесь возьмём. Клинический случай - когда такой бывший джавист становится тим или тех-лидом и делает ORM обязательным. Сколько видел таких случаев - каждый раз в результате команда ходит плюётся.

    Ну и да, есть ORMки основанные на генерации кода, но самая популярная - GORM основана на рефлексии и иногда магии, это очень сильно бьет по производительности и иногда может стать "бутылочным горлышком" приложения.
    Ответ написан
    1 комментарий
  • Переход с MD5 на SHA256 что нужно сделать чтобы работало)?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    Решил сделать переход с MD5 на SHA256

    Первая ошибка.
    Переходить нужно сразу на password_hash
    На переходный период реализовать две системы аутентификации. Сначала пробуете по старой (md5), если неудача, то password_verify
    После удачной аутентификации хешируете пароль новым алгоритмом.
    Ответ написан
    Комментировать
  • Переход с MD5 на SHA256 что нужно сделать чтобы работало)?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Проблема решается постепенным переводом пользователей на новое хранение пароля по мере их входа в систему.
    В момент аутентификации пользователя нам известен его пароль, поэтому если новый хэш для пользователя не определён, то аутентифицируем его по старому методу, генерируем и сохраняем новый хэш, удаляем старый хэш.
    И, конечно же, надо забыть о самодельных системах хэширования и использовать стандартные password_hash и password_verify.
    Ответ написан
    24 комментария
  • Как добавить php5.6 в ubuntu 16.04.07?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Обновлять одну замшелую и уязвимую версию на другую бессмысленно, оставьте как есть.
    Ответ написан
    3 комментария
  • Каким образом формируются имена файлов из набора букв и цифр?

    md5 или подобный хеш
    из плюсов, он позволит не хранить копии, если кто-то зальет картинку еще раз
    Ответ написан
    3 комментария
  • Нужен ли первичный ключ в таблицах PostgreSQL?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Почему работает в Access - потому что это другая БД. Поведение может различаться.

    Что касается обязательности ключевого поля - странно. Таблицу можно создать и без него.

    Предполагаю, что эта таблица ссылается через references на столбец другой таблицы. В таком случае, на последнее должно стоять ограничение уникальности - иначе как понять на какую строку ссылаться.
    Ответ написан
  • Запросы soap в инфоклинику на php?

    DmitriyEntelis
    @DmitriyEntelis
    Думаю за деньги
    У меня в одном из проектов есть десяток живых интеграций с инфоклиникой :)

    1. Они отлично отвечают на вопросы.

    2. У вас странный url. У инфоклиники есть центральный шлюз https://api.infoclinica.ru/api/xml
    Там все те же самые xml, но без soap.

    3. XML запрос мы собираем руками и просто отправляем post в body.
    TS.1 - это `date('YmdHis')`
    MSH.10 - рекомендуется уникальный для каждого запроса

    4. Там есть определенная пляска с подписью запроса сертификатом, на centos так и не заработало, пришлось виртуализироваться
    Ответ написан
    Комментировать
  • Каково критическое количество HTTP (ajax) запросов на сервер, как его расчитать?

    @Everything_is_bad
    Нет никаких расчетов, только нагрузочное тестирование, потому что можно написать сервис который без проблем держит 30rps на одном ядре, а можно написать 0.01 rps на 4х ядрах.
    Ответ написан
    Комментировать
  • Почему не работает проверка NAN?

    В Javascript NaN != NaN . Довольно логичный выбор: если undefined - это состояние, то NaN - признак отсутствия характеристики. Я - NaN , Вы - NaN , но Вы - не я.
    Ответ написан
    Комментировать
  • Подойдет ли базовый MacBook Air M1 8/256 для web разработки?

    @Zloycate
    661b9f2922634254730016.png
    Открыт средний проект в phpshorm
    Ответ написан
    Комментировать
  • Подойдет ли базовый MacBook Air M1 8/256 для web разработки?

    @Tur8008
    У меня Mac book air 8 256 m1. Занимаюсь веб разработкой. Полностью согласен с автором. 8 Гб некомфортно мало. Память закончится на открытии 2х браузеров, vscode и docker. Повёлся на хайп и советы друга. При этом говорил ему что 8 Гб мне мало, но почему то повёлся на восторженные хвалебные m1. Буду менять. Запомните 8 Гб озу для разработки в 2024 г это несерьёзно!
    Ответ написан
    Комментировать
  • Как сделать ссылку для перехода на определенное имя в html-таблице?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Использовать стандартные якоря.
    Ответ написан
    Комментировать
  • Как лучше сделать обновление данных строго по времени?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега Веб-разработка
    Относительно простое решение такое:
    • У вас есть какой-то сервер сокетов, который постоянно запущен и поддерживает соединения с клиентами.
    • У вас есть какой-то сервер очередей.
    • Сервер сокетов слушает сервер очередей и, при получении нужных данных, рассылает их клиентам.
    • По крону срабатывает скрипт, который кладёт данные в очередь.
    Ответ написан
    Комментировать
  • Как на мобильных устройствах добиться height 100vh на первом экране?

    @Froggyweb
    Ответ написан
    Комментировать
  • Непонятное поведение своей интерпретации функции Promise.race, почему так происходит?

    Alexandroppolus
    @Alexandroppolus
    кодир
    строка
    promise.then(onFullfiled).catch(onRejected);
    на самом деле работает как
    promise.then(onFullfiled, err => {throw err;}).then(v => v, onRejected);

    Если имеем дело с зарезолвленным/зареджекченным промисом, то здесь первый then ставит микротаск в очередь сразу, а второй - только по выполнении микротаска от первого.

    соответственно, для примера
    const promises = [
      Promise.reject('rejected1'),
      Promise.reject('rejected2'),
      Promise.resolve('resolved'),
    ];


    микротаски составили такую очередь:
    1) err => {throw err;}
    2) err => {throw err;}
    3) onFullfiled
    4) onRejected,
    5) onRejected
    6) v => v,


    Где пункты 1-3 добавились на цикле, а 4-6 по мере выполнения первых трёх.

    вот так и вышло, что onFullfiled вылез вперед.
    Ответ написан
    1 комментарий
  • С какого количества записей индексация имеет смысл?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    С какого количества записей индексация имеет смысл?

    С того момента, когда планировщик начал показывать приличную разницу, как только получаете прирост - используйте индексацию, не получаете - не используйте.
    Сделал выборку по определенному имени, вышло 75-90 мсек.
    SELECT name FROM users WHERE name='Mike';
    Добавил индекс CREATE INDEX name_idx ON users (name);
    Выборка так и осталась в пределах 75-85 мсек.

    Вы сами задали вопрос и сразу же ответили на него...
    Ответ написан
    Комментировать