• Какие технологии использовать для создания веб-сайта на 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 мсек.

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

    @dronmaxman
    VoIP Administrator

    1) Подскажите какую лучше поставить операционную систему? Если Linux, то в сторону каких дистрибутивов смотреть. Хотелось бы удалённо подключаться к этому ПК для мониторинга или обновления файлов с github.

    Proxmox или другой гипервизор
    2) Актуален ли для подобного Docker или слишком много ресурсов будет отнимать?

    Актуален.
    3) Правильно ли запускать различные сайты просто на разных портах роутера?

    Лучше использовать прокси (я бы использовал traefik или nginx).
    5) Раз выполняется проброс порта, то как это обезопасить?

    Как раз стоит изучить решения по защите (nginx Bunker, geoip, crowdsec)
    Ответ написан
    Комментировать
  • Почему я получаю ошибку invalid operation: err (variable of type Error) is not an interface при проверке типа переменной?

    https://go.dev/play/p/eDi3J3Zzcdg

    package main
    
    import "fmt"
    
    type MyError struct {
    	Message string
    }
    
    func (e MyError) Error() string {
    	return e.Message
    }
    
    func (e MyError) Smth() {
    }
    
    type SomeInterface interface {
    	Smth()
    }
    
    func main() {
    	var err SomeInterface
    	err = MyError{"Something went wrong"}
    
    	// Проверяем, реализует ли err интерфейс error
    	if _, ok := err.(error); ok {
    		fmt.Println("err реализует интерфейс error")
    	} else {
    		fmt.Println("err НЕ реализует интерфейс error")
    	}
    }


    У вас получилось, что тип переменной err это структура, но нужно чтобы тип был каким-нибудь интерфейсом.

    В моем примере я создал интерфейс SomeInterface и добавил вашему типу метод, чтобы он этому интерфейсу удовлетворял. Теперь данный ассершн имеет смысл.

    P.S. С пустым интерфейсом тоже работать будет https://go.dev/play/p/Yz0M1Wzopua
    Ответ написан
    Комментировать