Задать вопрос
  • Microdata и JSON-LD: Что лучше?

    Никогда раньше SEO не интересовался, но вот:

    По идее JSON-LD и Microdata описывают одну и ту же информацию на основе одного и того же стандарта - schema.org.

    Все поисковики поддерживают оба формата.

    Но тот же Google например рекомендует именно JSON-LD

    Microdata - удобно, что не нужно дублировать контент на странице. Достаточно просто пометить нужные части HTML-а.

    JSON-LD - удобно, тк не зависит от разметки и вроде как легче генерировать программно.

    Google явно рекомендует использовать именно JSON-LD (не знаю причину, но подозреваю что из-за того что его машине легче читать):
    https://developers.google.com/search/docs/appearan...

    Комбинировать оба формата можно - главное чтобы не было противоречий.

    3. Имеет ли значение, где я размещу разметку JSON-LD, в верху страницы, или в самом низу?

    Лучше, чтобы было в начале

    Допустим, я не нашел, как сделать разметку для Breadcrumbs на JSON-LD

    Кстати, тот же яндекс в своём руководстве в одном из первых примеров показывает, как их разметить)
    Ответ написан
    1 комментарий
  • Как работает set_my_commands()?

    Там же буквами написано - передавать нужно список из объектов класса BotCommand
    bot.set_my_commands([BotCommand("qwe", "q")])

    Вы что методом тыка код пишете?
    Ответ написан
  • Какой видеокурс по работе с браузером Google Chrome порекомендуете?

    Не существует курсов по работе с браузером.
    Есть справка, которая открывается нажатием кнопки F1, где описано всё, что можно в браузере сделать.

    А куки чистятся в настройках.
    Настройки -> очистить историю -> поставить галку напротив cookie

    Хз как в хроме, но вот например раздел из справки к яндекс браузеру:
    https://yandex.ru/support/browser/personal-data-pr...
    Ответ написан
    Комментировать
  • Cинхрон или асинхрон?

    асинхрон
    Плюсы: экономия ресурсов
    Минусы: может немного сложнее
    Ответ написан
    Комментировать
  • Как собрать приложение .NET MAUI на Linux?

    А как собрать MAUI проект под дистрибутивы GNU\Linux? Возможно ли? Какие есть способы?

    Ну вообще поддержка MAUI на Linux лежит полностью на плечах коммьюнити.
    Microsoft заявили, что они даже пытаться не будут.
    И вроде как коммьюнити с этим не очень справилось
    https://github.com/media-library/maui-linux

    Лучше попробуй Avalonia
    Ответ написан
  • Как закрыть доступ к старым commit для разработчиков на ветке master?

    Как не удалив историю коммитов в master предоставлять доступ разработчикам к актуальной версии приложения без доступа к коммитам содержащим конф. данные в коде?

    Раз уже данные скомпрометированы, то их нужно изменить (старые отозвать, новые выпустить).

    А историю можно переписать, чтобы убрать ненужное.
    Ответ написан
    Комментировать
  • Как подключить проект web API к проекту .NET Core MVC и к WPF проекту?

    Первая ссылка в поиске по запросу "start multiple projects visual studio"

    https://learn.microsoft.com/en-us/visualstudio/ide...
    Ответ написан
    Комментировать
  • Чем отличаются любительские МК от промышленных?

    1. Arduino - это не МК, а отладочная плата / плата для прототипирования
    2. Сами МК не делятся на "промышленные" и "любительские". Тк в такой классификации просто нет смысла.
    3.
    наверное надежностью?

    Надёжностью при определённых условиях могут отличаться некоторые специальные серии микроконтроллеров.
    4.
    какая разница в цене?

    Открываешь каталог и сравниваешь :)
    Где-то разницы нет, а где-то разница может быть в несколько порядков, в зависимости от требований

    если надо сделать умный дом или ферму, или теплицу.. (не работа в профессиональной индустрии)
    что лучше выбрать?

    То что будет лучше отвечать поставленным требованиям.

    Ещё про профессиональные/любительские

    Платы можно условно поделить на:

    Профессиональные отладочные/демонстрационные платы типа STM32 Discovery цель которых - показать разработчику возможности конкретного чипа или серии чипов

    Любительские, типа того же Arduino, которые предназначены для прототипирования, самоделок, и изучения программирования.

    Учебные/детские, наподобие micro:bit - только для того чтобы учить детей программированию в интерактивной и удобной форме.

    Ответ написан
    Комментировать
  • Почему выводятся одно и то же значение несколько раз?

    Код на js сейчас на столько плохой и запутанный, что легче его полностью переписать, чем разбираться, что в нём не так.
    Больше всего у меня подозрений на странную функцию SubmitDataLinks и странное перекладывание данных из одного в другое в обработчике нажатия на кнопку
    Спойлер

    Перекладывание
    var storage = { // Зачем вообще такая табличная форма нужна?
                    Mname: [
                        { mname: "vk" },
                        { mname: "tg" },
                        { mname: "inst" },
                        { mname: "facebook" }
                    ],
                    Link: [
                        { link: val.vk },
                        { link: val.tg },
                        { link: val.inst },
                        { link: val.facebook }
                    ]
                }
                var storageForSubmit = { // Почему один и тот же объект постоянно перезаписывается?
                    Mname: "",
                    Link: ""
                }
                for (var i = 0; i < storage.Link.length; i++) {
                    storageForSubmit.Mname = storage.Mname[i].mname // А не проще было бы for-of сделать?
                    storageForSubmit.Link = storage.Link[i].link
    
                    form.append("Media", JSON.stringify(storageForSubmit))
                    SubmitDataLinks(storageForSubmit) // Вот сюда в итоге один и тот же объект будет отправляться
                }


    Отправка:
    function SubmitDataLinks(storageForSubmit) { // storageForSubmit даже не используется
                $(document).ready(function(){// зачем оно в .ready обёрнуто???
                    $.ajax({
                    type: "POST",
                    url: "@Url.Action("SaveFile")",
                    data: form, // Поведение при использовании FormData недокументировано
                    processData: false,
                    contentType: false, // Поведение при contentType=false недокументировано
                    success: function () {
                        console.log("Успешно!")
                    },
                    error: function () {
                        console.log("Ошибка!")
                    }
                })
                })
            }




    1. Меняем серверную часть:
    Контроллер:
    [HttpPost]
    public void SaveFile([FromBody] UploadMedia data)
    {
      Console.WriteLine(data);
    }


    UploadMedia:
    public record UploadMedia(string MediaName, string MediaLink);


    2. Меняем нафиг весь js:
    document.addEventListener('DOMContentLoaded', () => {
        const saveFileEndpoint = '@Url.Action("SaveFile")';
        const readLinks = () => ({
            "vk": document.querySelector("input.link-vk").value,
            "tg": document.querySelector("input.link-tg").value,
            "inst": document.querySelector("input.link-inst").value,
            "facebook": document.querySelector("input.link-facebook").value,
        })
    
        const submitLinks = async (links) => {
            for (const mediaWithLink of links) {
                await fetch(saveFileEndpoint, {
                    method: "POST",
                    body: JSON.stringify(mediaWithLink),
                    headers: {
                        "Content-Type": "application/json"
                    }
                })
            }
        }
    
        const onSaveLinks = async () => {
            const allLinks = readLinks();
            const linksList = Object.keys(allLinks).map(key => ({ "MediaName": key, "MediaLink": allLinks[key] }));
            try {
                await submitLinks(linksList);
                console.log("Ссылки сохранены");
            } catch (e) {
                console.error(`Произошла ошибка при отправке ссылок: ${e.message}`);
            }
        };
    
        document.querySelector("button.save-links").addEventListener("click", onSaveLinks);
    });
    Ответ написан
    Комментировать
  • Подбор ноута для игр(60т.р.)?

    ПК всегда выгоднее, чем ноут при одинаковой производительности.
    для игрулек вроде doom 2020, rage 2, gta 5

    Такое даже Steam deck потянет - можно взять что угодно с более-менее игровой видеокартой и 16гб оперативки
    Ответ написан
    5 комментариев
  • Какой трекер для управления проектом выбрать из ру?

    В яндекс трекере вроде есть диаграммы ганта.
    Ответ написан
    Комментировать
  • Как называются сервисы, предоставляющие аутентификацию?

    IAM или Idm называется.
    Identity and Access management system.

    Из опенсорсных:
    Keycloack
    Casdoor
    Zitadel

    Из популярных платных:
    Auth0
    Azure AD
    Ответ написан
    3 комментария
  • Нужен ли антивирус на linux server?

    А вот нужен ли он например на веб-сервере или локальном сервере?

    Что такое "локальный сервер"? На веб-сервере не нужен, тк он не должен иметь прав на запись и тем более на запуск произвольного кода.

    Сервере базы данных?

    Он тоже не должен иметь доступ на запись туда, куда ему не нужно. И тем более он не должен иметь прав на запуск исполняемых файлов.

    И файловом сервере?

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

    В итоге получается, что единственный риск - если злоумышленник вдруг найдёт RCE для СУБД или файлового хранилища, и то тут весь риск - потеря данных и майнеры.

    А на почтовые сервера антивирус ставят не для защиты сервера, а для защиты пользователей.
    Ответ написан
  • Почему не получается преобразовать __int128 в BigInteger в своей функции?

    1. Ты берёшь указатель на переменную на стеке, которая после выхода из него уже не факт, что будет иметь то значение, которое тебе нужно.
    2. Тебе нужно выделить память заранее (или в куче) и в эту область памяти уже записывать результат.
    3. Лучше, чтобы память для результата выделялась на стороне C#, чтобы не было проблем с освобождением памяти.
    4. Сишный int не всегда равен шарповому int.
    5. В .NET уже есть структура для Int128, так что тебе не нужно байты перекладывать.

    6.
    public BigInteger (ReadOnlySpan<byte> value, bool isUnsigned = false, bool isBigEndian = false);
    принимает байты от длинного целого. Так что у тебя твой ToBigInteger работает неправильно, если ты в него подаёшь указатель, на __int128

    ptr_fact должно выглядеть как-то так:
    void ptr_fact(int32_t n, __int128* result)
    {
        *result = fact(n);
    }

    [DllImport("Test")] static extern void ptr_fact(int n, out Int128 result);


    Но смысла использовать ptr_fact я не вижу, тк обычный fact ты тоже легко можешь вызывать
    Ответ написан
    3 комментария
  • Как распознать включены/выключены куки в браузере посетителя?

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

    Варианта два:
    1. Не завершать процесс, пока эти задачи не завершены. Новые задачу в работу не брать.
    2. Предусмотреть, что задача может быть прервана на середине. В случае непредвиденного завершения - помечать как-нибудь и запускать с той точки, на которой остановились.
    Ещё можно периодически проверять зависшие задачи и перезапускать их.
    Ответ написан
    Комментировать
  • Как компилировать GAS код в VS\CodeBlock?

    Если вы имеете в виду тот GAS, который GNU Assembler, то лучше для работы с ним Линукс использовать. Хотя бы в виде wsl2.

    А за компиляцию отвечают компиляторы: GCC и as.
    VS и CB - это IDE
    Ответ написан
    Комментировать
  • Откуда можно выгрузить котировки всех компаний московской биржи за несколько лет?

    В мосбиржи есть архивные данные вплоть до 2000го года:
    https://www.moex.com/ru/marketdata/archive
    Ответ написан
    Комментировать
  • Не работает монитор через dp?


    dp - hdmi

    dp и HDMI - это два разных интерфейса => твой провод либо является активным переходником, либо пустышка.

    Активные переходники как правило работают только в одну сторону - посмотри в описании кабеля, в какую.

    Лучше используй hdmi-hdmi, либо dp-dp.
    Ответ написан
    Комментировать
  • Где взять сканер, преобразующий QR-код в byte[]?

    1. Это не QR-код
    2. Это просто шутка, мем, рофл, прикол, юмореска.

    Не существует в природе сканеров, с которых можно загружаться, как с диска.

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