Задать вопрос
  • Как исправить "info: Microsoft.AspNetCore.Hosting.Diagnostics[2] Request finished HTTP/1.1 GET http://localhost:5183/favicon.ico - 400"?

    borisdenis
    @borisdenis
    Ленив и вреден...
    Насколько помню - лого запрашивает браузер. Если я открываю страницу апи, то он и лого запросит, если делаю запрос через curl, то никаких лого запрашиваться не будет.
    Ответ написан
    3 комментария
  • Как выполнить поиск по зашифрованому контенту?

    @rPman
    Есть ещё третий вариант - гомоморфное шифрование. Когда возможны операции над зашифрованным контентом, результат будет так же зашифрованный, и чтобы его прочитать его нужно расшифровать.

    Гугли, есть библиотеки и даже расширение postgres (очень старое, не факт что поддерживается).

    С практической точки зрения польза сомнительна. Ресурсов алгоритм жрет непомерно много и использовать его имеет смысл только если альтернативы в принципе нет.
    Ответ написан
    Комментировать
  • Для чего делают таблицы public?

    TaHKucT
    @TaHKucT
    Linux администратор
    public - это схема по умолчанию в терминалогии PG. Использовать разные схемы можно по разному, например создать схемы wp и zb в одной базе, и в wp.users хранить пользователей условного wordpress'а, а в zb.users условного zabbix'а (или подставьте любые другие приложения). Можно же создать схемы users и orders и в users.contacts хранить контактные данные пользователей, в users.names их ФИО, в orders.current текущие заказы, в orders.completed выполненые заказы и тп. В общем случае можно использовать как хотите, сам PG ни к чему не обязывает и многие эти схемы не используют(всмысле используют стандартную схему public не акцентируя на этом внимание).

    Почему "SELECT * FROM users" мог не сработать: вероятно у вас где-то изменена схема по умолчанию с public на что-то другое. Это можно проверить командой "SHOW search_path"(обычно она выглядит так):
    postgres=# SHOW search_path;
       search_path
    -----------------
     "$user", public
    (1 row)
    postgres=#

    Изменить search_path можно на стороне клиента, например "--search_path=new_search_path" в случае обычного psql, или на стороне сервера командой "ALTER ROLE SET search_path TO ;"

    Подробней про это можно, например, в документации postgrespro почитать
    Ответ написан
    1 комментарий
  • Какая опасность работы под чужим ИП?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Какая опасность работы под чужим ИП?

    Что значит "под чужим"? Используя данных ИП, к которому "один человек" не имеет отношения? УК РФ Статья 171. Незаконное предпринимательство.
    Что кроме увольнения если всплывет может произойти?

    У ИП нет понятия "увольнение", это не работник. Что может произойти еще помимо УК РФ Статьи 171? Денег "одному человеку" не заплатят, "один человек" же не являетесь исполнителем по документам.
    Ответ написан
    1 комментарий
  • Как настроить сервер для отладки вебхуков (webhooks) на локальной машине??

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Сбилдить .NET приложение в докере.
    2. Развернуть докер контейнер на сервере.
    3. Развернуть nginx (тоже можно в контейнере) на сервере.
    4. Настроить nginx, который будет проксировать трафик в п2:
    4.1. Запретить все.
    4.2. Разрешить :80 и :443 порты.
    4.3. Пробросить с п4.2 на внешний порт контейнера п2.
    4.4. Настроить SSL Let's Encrypt (при необходимости).

    По сути, можно взять любое руководство настройки докера и nginx, без привязки к .NET.

    UPD на основе данных из комментариев, конфиги будут выглядеть примерно так, dockerfile (поправить под свое приложение):
    # Образ asp.net.
    FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    # Компилируем приложение из /src.
    FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
    WORKDIR /src
    
    # Копируем файл проекта и восстанавливаем зависимости.
    COPY ["Project.csproj", "."]
    RUN dotnet restore
    
    # Копируем оставшиеся файлы и компилируем приложение.
    COPY . .
    RUN dotnet build -c Release -o /app/build
    
    # Публикуем приложение.
    FROM build AS publish
    RUN dotnet publish -c Release -o /app/publish
    
    # Создание итогового образа.
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "App.dll"]

    nginx (поправить под свое приложение):
    # http.
    server {
        listen 80;
        listen [::]:80;
        # Домены для обслуживания.
        server_name domain.ru www.domain.ru;
    
        # 301 редирект http->https.
        return 301 https://$host$request_uri;
    }
    
    # https.
    server {
        listen 443 ssl;
        listen [::]:443 ssl;
        # Домены для обслуживания.
        server_name domain.ru www.domain.ru;
    
        # Пути до letsencrypt сертификатов.
        ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_prefer_server_ciphers on;
        ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256";
    
        location / {
            # Адрес, по которому доступно приложение на локалке сервера (localhost не указывать, а указывать имя контейнера (project в моем случае)).
            proxy_pass http://project:80;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }

    P.S. рекомендую освоить Docker Compose, чтобы было меньше возьни с разворачиванием и общением между контейнерами.
    Ответ написан
    8 комментариев
  • Почему Nginx отдаёт разный размер ответа для одной и той же картинки?

    @golubevvladislav Автор вопроса
    Вроде разобрался. Походу многие клиенты просто по таймауту отваливались. А всё из-за того, что картинку одномоментно загружают 12 тыс клиентов, из-за чего не хватает просто физически канала 100Мб/с. Меньше пропускная возможность - меньше можно одномоментно отдать данных. Увеличили канал до 500Мб/с - 98% клиентов теперь получают картинку в полном объёме.
    Ответ написан
    4 комментария
  • Есть ли приложение для визуального программирования нодами такого рода?

    Noizefan
    @Noizefan
    не совсем прям как ты хочешь, но я делал такой конструктор для нескольких своих проектов - https://github.com/methaqualon/dragncode
    Ответ написан
    2 комментария
  • Есть ли приложение для визуального программирования нодами такого рода?

    Tkreks
    @Tkreks
    Системный инженер
    Node-Red
    Можно развернуть в докере. Множество дополнительных нод доступно в палитре.
    Есть возможно писать свой код на JS из коробки, или с помощью дополнительных нод из палитры на python
    Ответ написан
    Комментировать
  • Как узнать, принадлежит ли точка к указанному отрезку?

    @deliro
    f1001.JPG
    Так получить уравнение прямой через 2 точки.
    Убедиться, что x0<= x <= x1 и y0 <= y <= y1 (x0 < x1, также, как и y0 < y1)
    Подставить точку в прямую.
    Проверить равенство.
    Приправить погрешностями.
    Ответ написан
    1 комментарий
  • Это и есть полиморфизм?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нет.

    Полиморфизм, как следует из названия, это когда что-то маскируется под что-то другое. Это свойство системы типов языка на котором вы пишите, он может позволять вам делать вещи, маскирующие свой внешний вид ("названия") но все же это не та же вещь. Ну и стоит заметить что у полиморфизма есть еще разные виды. Например:

    Параметрический полиморфизм. Это когда мы можем написать один код, с одним набором имен, которые работает с разными типами аргументов. Пример - шаблоны из C++ или дженерики в Java. То есть "имена" методов одинаковые, потому что они в одном экземпляре. Реализация одна, одно поведение. А вот аргументы могут отличаться.

    Ключевое отличие от ad-hoc полиморфизма, про который будет ниже в том, что наша реализация понятия не имеет что придет на вход. Может придти что угодно и с этим нужно будет работать, однако работать с любым типом мы будем абсолютно одинаково.

    Полиморфизм подтипов. При этом у нас как раз таки будет одни и те же имена и может быть совершенно разное поведение. Например мы можем создать какой-то базовый тип, который, к примеру, отправляет email-ы, и создать его подтип, который вместо отправки email-ов записывает в лог то что мы хотели отправить, после чего уже отправляет данные дальше другому объекту этого типа (шаблон проектирования декоратор).

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

    Ну и еще есть одно серьезное ограничение. Если мы хотим заменить в системе объект какого-то типа на объект подтипа (грубо говоря наследника), то система не должна сломаться. То есть "другое" поведение нашего подтипа должно быть совместимо в плане интерфейса с базовым типом. Об этом можно почитать загуглил "Принцип подстановки Барбары Лисков".

    Ad-hoc полиморфизм - это пожалуй самый интересный вид полиморфизма с которым можно долго холиварить. По сути при этом виде полиморфизма, у нас одинаковые имена, а поведение зависит от входящих аргументов. Пример - перегрузка методов в C++. Интересен этот вид полиморфизма в основном тем, что он не является "настоящим".

    При динамической системе типов не требуется никаких дополнительных возможностей вроде той же перегрузки методов для достижения ad-hoc полиморфизма. Тупо кидаем что хотим в функцию, а там уже if-ами рагребаем или же приводим к какому-то одному варианту. Отдельные конструкции нужны в языках со статической системой типов. То есть нам нужно еще на этапе компиляции кода знать какие именно типы могут приходить в наши методы, и в зависимости от оных вызывать тот или иной код.

    Среди PHP-разработчиков немало тех, кто мечтает увидеть в этом языке с динамической системой типов честную перегрузку методов как например в Java или C++. Просто так, потому что if-ы это плохо и лучше уж пусть они будут неявные на уровне компилятора/рантайма.

    Полиморфизм с приведением типов - еще один вид "не настоящего" полиморфизма. Мы "эмулируем" полиморфизм за счет того, что на уровне рантайма языка происходят касты действительного в желаемое. Например в PHP мы можем выставить у функции тайпхинтинг string, и можем внутри иметь одно и то же поведение для всех входящих аргументов. Передать же в качестве аргумента мы можем все что можно скастить в строку.

    Собственно, это очень похоже на параметрический полиморфизм по смыслу, но далеко не так гибко и не дает того контроля за системой.
    Ответ написан
    Комментировать
  • Как правильно организовать выборку зашифрованных данных PostgreSQL?

    Melkij
    @Melkij
    DBA для вашего PostgreSQL?
    Никак.

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

    Если начальство решает, что да, такое шифрование необходимо и от чего-то защищает - то это будет прямым ответом на задачу: поскольку необходимо шифрование parent_iin, то быстрый поиск по этому полю невозможен.

    Единственное возможное исключение: если ваша функция шифрования обязуется быть immutable в терминах postgresql, т.е. на один и тот же ключ и исходные данные генерировать всегда один и тот же бинарно идентичный результат. Тогда делаете индекс по parent_iin и ищете по условию where parent_iin = функция_шифрования(данные, ключ) то есть по зашифрованному представлению данных.
    Ответ написан
    Комментировать
  • Возможно ли в массиве найти определенное значение и его индекс?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    var (item, index) = collection.Select((c, i) => (c, i)).First(pair => pair.Item1 == target)

    юзай linq
    Ответ написан
    Комментировать
  • Как построить стены в 2D игре чтоб персонаж не мог через них проходить?

    @TurtleSigma
    Люблю работать
    Короче
    И у Player и стены добавь BoxCollider2D, настрой его и все
    Ответ написан
    Комментировать
  • Как построить стены в 2D игре чтоб персонаж не мог через них проходить?

    @DrRen7
    в 2 не силен, а разве у перса не должно быть коллайдера? как бы коллайдеры не дают проходить объекам друг через друга
    Ответ написан
    Комментировать
  • Как установить pg_dump на Windows?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Переустановка PostgreSQL, во время установки выбрать "Command Line Tools" (тогда установится так же pg_dump).

    pgAdmin не включает в себя pg_dump.

    UPD: проблема была в переменной окружения PATH (не указывала на место расположения на другом диске, куда был установлен PostgreSQL)?
    Ответ написан
    5 комментариев
  • Как установить pg_dump на Windows?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    При установке значит PATH не был обновлен.
    Надо найти директорию, в которую установлен postgres и попробовать запустить оттуда.
    Возможный путь C:\Program Files\PostgreSQL\%version%\bin:
    - %version% - подставляешь свою версию
    - Все бинари лежат обычно в /bin директории (pg_ctl, pg_dump, initdb и др.)

    После рекомендую обновить PATH - добавить этот путь.

    Дополнительно: в настройках pgAdmin можно прописать кастомный путь до постгреса:
    File (правый верхний угол) -> Preferences -> Paths -> Binary paths
    Возможно после этого и pgAdmin заработает
    Ответ написан
    1 комментарий
  • Где взять эмодзи для мета тегов?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Где взять эмодзи для мета тегов?

    Например https://unicodeplus.com/
    Те, какие нашел, не отображаются.

    Хорошо бы показать, что нашли, а так же сообщить, где именно не отображается. Огонь отображается точно в определенных случаях, другой вопрос, что отображение эмодзи в органике не гарантировано.
    Ответ написан
    Комментировать
  • Почему отказались от оператора GoTo в высокоуровневых языках?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Поскольку goto позволяет писать очень запутанный и непонятный код. Слишком легко написать плохой код.
    Ну не могут люди в голове удерживать спагетти из кучи возможных путей исполнения. if/else, да циклы - это людям понятно. Появилась инструкция goto изначально, потому что в машинных кодах, а значит и в асемблере эта инструкция есть. Оттуда она перекочевала в языки более высокого уровня. Процессоры, наоборот, if/else вообще не умеют. Вместо это там всякие условные goto.
    В новых языках программирования goto вообще нет, а в старых его обычно запрещают использовать в правилах кодовой базы. Если кто злоупотребляет - ему дают по рукам.
    Ответ написан
  • Почему отказались от оператора GoTo в высокоуровневых языках?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Никакие комьютеры не отказались от goto.
    Кроме того, это не функция, а оператор.

    Но если писать длинный код активно используя goto, в нем будет крайне сложно разобраться.
    Поэтому в некоторых языках программирования его может и не быть. Но на архитектурном уровне и низкоуровневом ассемблере, он естественно есть.
    Ответ написан
    Комментировать
  • Существует ли микроразметка для фактов?

    pro100taa
    @pro100taa
    Больше подходит такой https://developers.google.com/search/docs/appearan...
    Ответ написан
    Комментировать