Задать вопрос
  • Не создается функция. Как это можно исправить?

    У вас не создан файл go.mod в корне проекта. Выполните команду
    go mod init github.com/yourname/yourproject
    в корне проекта. Адрес может быть любой, принято указывать адрес вашего репозитория, но можете указать и несуществующий урл. Будет работать если указать не урл, а просто goproject, но так не принято и форматтеры кода будут путать ваш пакет со стандартной библиотекой.

    У нас в файле shapes.go почему-то package goproject, хотя должен быть package utils

    Потом замените ваш импорт на
    import github.com/yourname/yourproject/utils""
    Ответ написан
    4 комментария
  • Как в засунуть файл при компиляции в GO?

    IvanU7n
    @IvanU7n
    nothing interesting here
    через https://pkg.go.dev/embed можно запихнуть один файл в строку или слайс байт или один или несколько файлов в "файловую систему"
    Ответ написан
    Комментировать
  • Могу ли я откатить все изменения на github без возможности вернуть их?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Нет. Всё, что попало в интернет - остаётся там навсегда. Особенно все изменения в git репозитории - копии его есть не только на сервере, который вам не принадлежит и в организации, в которой вы вряд ли админ/владелец, так еще и у всех остальных разработчиков тоже есть копия.
    Ответ написан
    1 комментарий
  • Docker как исправить ошибку?

    Имя хоста с базой данных == имя сервиса в compose.
    Вместо "localhost" укажите "postgres":
    - DATABASE_URL="postgresql://postgres:postgres@localhost:5432/dbName?schema=public"
    + DATABASE_URL="postgresql://postgres:postgres@postgres:5432/dbName?schema=public"
    Ответ написан
  • Как использовать строку в качестве названия функции в GoLang?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Добро пожаловать в мир компилируемых языков программирования и статической типизации, здесь такое не нужно, считается очень плохой практикой и достижимо только через чёрные ходы, вроде рефлексии, что снижает производительность и безопасность кода, а также усложняет его сопровождение.
    Ответ написан
    Комментировать
  • Как генерировать палитру всех 24бит цветов в изображении размером 4096х4096 чтобы был плавный переход цвета?

    GavriKos
    @GavriKos
    Использовать другие цветовые представления и не последовательную запись. Например, не RGB а HSL, где по X двигать H и S, а по y - L
    Ответ написан
    Комментировать
  • Почему сайт на GitHub Pages выглядит иначе?

    alsolovyev
    @alsolovyev
    ¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
    GitHub Pages - это хостинг для статических файлов. Использовать php нельзя. У Вас 3 варианта:
    1. Арендовать свой сервер и использовать на нем PHP
    2. Написать сайт на чистом HTML, CSS, JS и постить на GitHub Pages
    3. Изучить какой статический генератор сайтов (например, Jekyll, Hugo и т.д.). Это похоже на второй вариант, но с автоматизацией рутинных задач (генерация однотипных страниц, заполнение метаданных, использование шаблонов и тд)
    Ответ написан
    Комментировать
  • В чем смысл использования Golang как веб сервер?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    А теперь возьмите не синтетический тест, а реальную задачу сложнее перекладки json'ов, например, с шифрованием, дайте серьëзную длительную нагрузку и посмотрите латентность по процентилям.
    Ответ написан
    Комментировать
  • Как уменьшить вес gif с помощью php?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    GIF использует lzw-сжатие без потерь. Уменьшить размер файла можно только убрав часть информации, то есть уменьшив разрешение изображения или количество цветов.
    Ответ написан
    1 комментарий
  • Какие параматры устройства отслеживает сайт для идентификации пользователя?

    @Refguser
    Решения для бизнеса: от создания ИМ до...
    Какие параматры устройства отслеживает сайт для идентификации пользователя?

    Изучаем фингерпринт

    Это вообще осуществимо, например на линуксе?

    Теоретически можно, но -запаришься- в реальности не нужно. Достаточно поменять или эмулировать другое устройство. А если ещё и с другими UA и IP, то 100%.
    А в конкретном случае может быть достаточно сменить браузер.
    Ответ написан
    Комментировать
  • Как должен выглядеть идеальный контроллер?

    Если хотите идеал, то он должен соответствовать следующим пунктам:

    1. Сериализация/десериализация - это дорогостоящее мероприятие, поэтому оно должно делаться только в двух местах: прямо на входе и прямо на выходе. Вход - это ваш контроллер, Выход - это другой сервис, куда вы передаёте данные, или база данных (тут тоже происходит сериализация, либо явно, либо в ORM). Во всех остальных слоях инфообмен должен совершаться уже при помощи объектов PHP либо нативных типов. Это экономит ресурсы. При передаче между слоями приложения объектов вместо значений либо ассоциативных массивов вы сразу будете видеть очепятки, IDE вам прекрасно поможет при помощи автодополнения, объекты могут иметь какие-то полезные методы.

    2. Очень желательно в каждом из слоёв иметь собственный класс, отвечающий за данные. Например, нам в слой API приходит JSON-чик с новым пользователем.
    - Сериализуем JSON в DTO UserInAPI, сразу валидируем всё то, что мы можем валидировать без слоя бизнес-логики, и либо отдаём клиенту ошибку, либо передаём сам объект UserInAPI в следующий слой: слой бизнес-логики
    - В слое бизнес логики, получаем DTO UserInAPI на входе, преобразуем его в свой бизнес-объект UserInBusiness, валидируем его уже с точки зрения бизнеса, и либо возвращаем ошибку в слой API, либо совершаем над ним действия, и передаём объект класса UserInBusiness в слой работы с базой
    - В слое работы с базой данных получаем на входе объект UserInBusiness, преобразуем его уже в сущность базы данных UserInDB, валидируем всё на предмет корректности данных для базы, и либо возвращаем ошибку в бизнес, либо сохраняем сущность класса UserInDB в базу.

    Зачем такие сложности, вы спросите? А просто обратите внимание на то, что скорость изменения кода в разных слоях разная.
    - API вообще должен меняться раз в сто лет, чтобы не злить клиентов. Поэтому DTO класс UserInAPI будет стабильным и редко будет меняться.
    - Бизнес-логика меняется очень часто. У класса UserInBusiness постоянно будут добавляться поля и методы, тут жизнь будет кипеть.
    - Слой базы данных будет меняться реже, чем слой бизнеса, но чаще, чем слой API, потому что нам нужны будут новые поля в базе, новые таблицы и связанные таблицы.
    - И если мы один тип сущности протащим во все слои, то эта сущность обрастёт таким количеством различной хрени, что нам плохо станет, когда будем на неё смотреть. Либо она обрастёт кучей декораторов в каждом из слоёв. Поэтому лучше всё разделить.

    3. Теперь внимание, казалось бы, что мы слишком сильно связываем наши слои, и нижестоящие слои знают что-то о вышестоящих, а это неправильно. Ведь мы передаём объект UserInAPI в слой бизнеса, т.е. слой бизнеса должен уметь работать с этим объектом. И так же слой базы должен уметь работать с объектом бизнеса UserInBusiness. Как же быть? А очень просто. На входе слоёв использовать интерфейсы. Т.е. в слое бизнеса мы будем принимать не сам класс UserInAPI, а объект, имплементирующий интерфейс UserIncoming, который объявим в бизнес слое, и заставим слой API сделать так, чтобы его класс UserInAPI имплементировал этот интерфейс. Таким образом слой бизнеса ничего не будет знать о слое API, а будет ждать на входе данные по контракту, описанному в интерфейсе. Бизнесу плевать на конкретную реализацию, ему нужны только методы getUsername, getEmail из интерфейса. А какой класс ему их предоставит - пофигу. Таким образом мы практически полностью разделяем слои и в два счёта сможем поменять слой API, где у нас HTTP контроллеры, на слой RabbitMQ, SOAP, Grpc и т.д.
    Ответ написан
    6 комментариев
  • Вычитаю одно округленное число из другого, в ответе выдается число с кучей знаков после запятой, как это исправить?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Добро пожаловать в реальный мир вычислений чисел с плавающей запятой с погрешностью! Если вам нужны точные вычисления - используйте тип decimal или аналогичный для вашего ЯП.
    https://habr.com/ru/articles/266023/
    https://learn.microsoft.com/ru-ru/office/troublesh...
    https://0.30000000000000004.com/
    Ответ написан
    2 комментария
  • Как задать запрос в базу mysql с массивом данных?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега MySQL
    Понятия не имею как с этим работать.
    Поскольку это даже не JSON, а сериализация средствами PHP, то единственный адекватный способ - получать все записи из БД, десериализовывать и в коде считать что нужно.
    Ответ написан
    2 комментария
  • Есть ли в PHP готовый инструмент для получения элемента массива вложенность которого хранится в другом массиве?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Есть. Называется цикл.
    Ответ написан
    Комментировать
  • Как из контроллера дернуть команду?

    vhood
    @vhood
    Не забывайте отмечать решения
    в ней происходит просто обращение курлом по ссылке и получение картинки
    Вынесите этот функционал в отдельный сервис и используйте его и в команде, и в контроллере.
    Ответ написан
    Комментировать
  • Как установить лимит на использование оперативной памяти для ElasticSearch в Docker?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Так же, как для любого другого контейнера - через resources:
    https://docs.docker.com/compose/compose-file/deplo...
    Ответ написан
    3 комментария
  • В чем ошибка SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) $params собственно нужен для биндинга, чтобы не вставлять данные прямо в запрос, так как это чревато инъекциями. По этому дебильный совет "просто поменяй на $stmt->execute();" желательно проигнорировать.

    2) Вместо переменных нужно вставить плейсхолдеры, именованные или безымянные не особо важно. Естественно количество плейсхолдеров должно совпадать с количеством элементов в массиве.

    3) Даже в таком виде как у вас запрос работать не будет, так как строковые переменные в рамках запроса должны быть в кавычках.

    4) WHERE $email что? Вы вообще понимаете что и для чего пишете? Просто переведя на русский "где емэйл" не кажется вам слегка странной конструкцией? Просто загляните в документацию SQL где описывается WHERE.
    Ответ написан
    Комментировать
  • Как писать микросервисную архитектуру?

    @Everything_is_bad
    Забей на микросервисы, джуны не способны их нормально сделать, тут тупо нужен опыт, так что для начала пиши монолит. Красивое раскидывание кода по папкам, вообще не имеет отношение к микросервисам.

    Условно мы отправляем сообщение в чат, в котором состоит пользователь. Нам нужно получить и заблокировать список пользователей, добавить сообщение, и разблокировать.
    зачем вообще тут блокировать пользователей?
    Ответ написан