• Какой есть аналог Microsoft.Office.Interop.Word для .Net Core?

    HemulGM
    @HemulGM
    Delphi Developer, сис. админ
    Для .Net Core нет аналога Microsoft.Office.Interop.Word. Вместо этого можно использовать библиотеки для работы с документами, такие как DocumentFormat.OpenXml или iTextSharp.
    Ответ написан
    1 комментарий
  • Является ли чтение Readonly свойств объекта нарушением инкапсуляции?

    DollyPapper
    @DollyPapper
    Вы путаете инкапсуляцию и сокрытие информации. Инкапсуляция это логическое объединение взаимосвязанных логических едениц в одной сущности. Т.е. методы и поля объекта объединяются в одном классе. Это и есть инкапсуляция. А есть такое понятие как сокрытие информации. Это не только про обращение к закрытым полям класса, это вообще про ракскрытие внутренней структуры нашего объекта для внешнего пользователя. Например если мы создаём юзера который в конструкторе принимает id как целое число, это нарушение сокрытия информации, т.к. внешний по отношению к обьекту пользователь знает, что технически внутри наш id это целое число, и например захочет его инкрементировать, а мы не хотим чтобы так было.
    Ответ написан
    3 комментария
  • Как разместить изображение подобным образом?

    firefox-name
    @firefox-name
    Тяжело,но я все равно иду вперед.
    Привет. Картинку можно сделать так: Сделать 2 блока, один белый второй с картинкой внутри, Блоку с картинкой задать transform: translate(-20px, -20px); Вариант второй: Разместить блок с картинкой внутри белого блока и задав блоку с картинкой position: absolute; при помощи left и top вывести картинку куда надо. Белому блоку position: relative; разумеется.
    Ответ написан
    Комментировать
  • Как скачать и установить шрифты в html?

    Vindicar
    @Vindicar
    RTFM!
    Когда у меня встала такая задача, я загнал шрифт в CSS файл.
    @font-face {
    	font-family: 'My Super Font';
    	src: url('data:application/octet-stream;base64,тут-идёт-woff-файл-шрифта-в-base64') format('woff');
    	font-weight: normal;
    	font-style: normal;
    }

    Ну и конечно, можно загнать сам CSS внутрь HTML через тег style. Хотя это изврат будет.
    Ответ написан
    Комментировать
  • Почему ссылка работает в хром но не работает через href в html?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Потому что символ & (как и некоторые другие символы) в HTML должен экранироваться как &

    upd: Проблема была в чём-то другом. См. комментарии.
    Ответ написан
    5 комментариев
  • Как сделать обязательное обновление игры?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Ну как как.
    1. Требуешь постоянное подключение к интернету
    2. Узнаёшь со своего сервера актуальную версию
    3. Если версия не актуальная, то просто высвечиваешь на весь экран соответствующее сообщение
    Ответ написан
    2 комментария
  • Как передать ответ от сервера в JS?

    @12rbah
    Через ajax можно. Если с перезагрузкой страницы, то да можно записать в какое-нибудь поле на форме, на сервере добавить в html и на клиенте потом считать.
    результат валидации пароля от сервера(php) к клиенту
    А зачем?
    Ответ написан
    2 комментария
  • Пропадают данные при записи в JSON файл?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Внимательно оттестировать весь код и найти ошибку.
    Либо перейти от файла к нормальной базе данных.
    Ответ написан
    Комментировать
  • Из-за чего ошибка Parse error: syntax error, unexpected token "="?

    php666
    @php666
    PHP-макака
    я пытаюсь настроить обработчик платежей для freekassa.ru
    не пытайся. максимально говеный сервис.
    Ответ написан
    2 комментария
  • Из-за чего ошибка Parse error: syntax error, unexpected token "="?

    @maksam07
    Что такое <?PHP= ?
    И боги.. атрибуты в одинарные кавычки?
    Ответ написан
    4 комментария
  • Как сделать воспроизводство рандомного звука в рандомный момент?

    freeExec
    @freeExec
    Участник OpenStreetMap
    UnityEngine.Random.Range
    Сначала для времени, потом для аудиофайла
    Ответ написан
    Комментировать
  • Как перечислить все классы, реализованные через некоторый интерфейс?

    @michadimin Автор вопроса
    Спустя немного времени - нашёл такое решение

    public static IEnumerable<Type> GetInterfaceTypes<T>()
        {
            var type = typeof(T);
            var types = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(s => s.GetTypes())
                .Where(p => type.IsAssignableFrom(p));
    
            return types;
        }


    Если вы простой обыватель и отчаянно ищите способа быстрее решить проблему, то вот пример использования:
    interface ITest1
    {
    
    }
    
    interface ITest2 : ITest1
    {
    
    }
    
    interface ITest3 : ITest2
    {
    
    }
    
    class TestClass1
    {
    
    }
    
    class TestClass2 : TestClass1
    {
    
    }
    
    static class Extensions
    {
        public static IEnumerable<Type> GetInheritedTypes<T>()
        {
            var type = typeof(T);
            var types = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(s => s.GetTypes())
                .Where(p => type.IsAssignableFrom(p));
    
            return types;
        }
    }
    
    class Prog
    {
        public static void Main()
        {
            foreach (var i in Extensions.GetInheritedTypes<TestClass1>()) //В треугольных скобочках указывается тип, наледников которого вы хотите получить
                Console.WriteLine(i);
        }
    }
    Ответ написан
    2 комментария
  • Обработка не системной клавиши по коду в С#?

    Viji
    @Viji
    DevOps Engineer
    Комментировать
  • Какой Фреймворк выбьрать и как лучше реализовать?

    ThunderCat
    @ThunderCat Куратор тега Веб-разработка
    {PHP, MySql, HTML, JS, CSS} developer
    На каком Фреймворки такое сделать, кто что посоветует с чем работать и как начать?
    Вообще пофиг, любой подойдет, такое можно и на голом пхп или питоне накалякать (да и не только на них).

    так-же, где хранить эти сылкис (имя/фирма) использовать для этого БД или какой-то есть другой способ?
    Можно в бд, есть и другие способы, например в файлах, если операция разовая - можно в памяти (редис, мемкэш), можно что-то типа как описал Владимир Коротенко, почему нет...
    Ответ написан
    Комментировать
  • Почему скрипт не хочет работать с математикой?

    GavriKos
    @GavriKos
    Ну скорее всего банально не заходит во внутрь if-а.
    И 99% что ошибка в проверках на налл - зачем они? Это проверка на пустую строку? Тогда лучше IsNullOrEmpty использовать
    Ответ написан
    4 комментария
  • Как запретить менять размер консоли в c#?

    vabka
    @vabka Куратор тега C#
    Токсичный шарпист
    Никак нельзя, тк ты не можешь гарантировать, в какой именно консоли у тебя запустится приложение.
    - Оно может быть запущено в стандартной консоли windows.
    - В Windows Terminal.
    - В ConEmu.
    - На линуксе в любом многообразии ихних терминалов.
    - Может быть запущено по SSH или вообще без рабочего стола.
    - Вообще без терминала, как часть пайпа или сервис

    Если тебе очень важно, чтобы твоё приложение выглядело как консольное, но при этом запускалось в окне фиксированного размера - делай оконное приложение, в котором бы выводился текст в нужном стиле.
    Ответ написан
    3 комментария
  • Как вывести html в .innerHTML с переносами?

    По идеи должно сработать в обратных кавычках`
    let appendEventBlock = `
        <a href="${eventDetailsUlr}" style="font-size: 16px; color: blue">${scheduledDate}</a>
        <br />
        <span>@localizator["Executor"]: ${event.executor.firstName} ${event.executor.lastName}</span>
        <span class="text-muted text-break">@localizator["Note"]: ${event.note}</span>
    `;
    document.getElementById(appendEventContainer).innerHTML += appendEventBlock;
    Ответ написан
    6 комментариев
  • Как правильней хранить и обновлять JWT для аутентификации?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Каждый JWT-токен это три блока - заголовок, полезная нагрузка и подпись. В заголовке хранится информация о самом токене (срок жизни, алгоритм подписи). Полезная нагрузка - информация приложения. Подпись - зашифрованный хэш первых двух частей. В распределённых системах выдавать токен может сервер авторизации, а использовать любой другой сервер. В таком случае подпись может быть асимметричной, закрытый ключ для подписания, открытый для проверки.

    Токены выдаются парой, рабочий + обновления.

    Рабочий токен выдаётся на короткое время (минуты - десятки минут). Внутри содержится срок окончания действия токена, идентификатор пользователя, его права, какая-то информация для минимизации обращений к БД по данному пользователю. Токен на сервере не сохраняется.

    Токен обновления выдаётся на длительное время (часы - дни). Внутри содержится срок окончания действия токена и идентификатор пользователя для автоматической аутентификации. Токен обновления (или его идентификатор, если он есть в токене) хранится в БД вместе с идентификатором пользователя.

    1. Клиент аутентифицируется/авторизуется на сервере со своим логином/паролем.
    2. Сервер генерирует пару токенов, короткоживущий рабочий и долгоживущий для обновления. Токен обновления записывается в БД.
    3. Клиент присылает запрос с рабочим токеном.
    4. Сервер проверяет токен.
    4а. Токен действительный и неистекший, сервер отвечает на запрос.
    4б. Токен действительный, но истекший, сервер сообщает о необходимости обновления токена.
    4в. Токен недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
    5. Клиент присылает токен обновления.
    6. Сервер проверяет токен, в том числе и в БД.
    6а. Токен обновления недействительный, сервер сообщает о необходимости входа по логину/паролю (на п.1).
    6б. Токен обновления действительный, но в БД отсутствует, сервер удаляет все токены обновления этого пользователя из БД и сообщает о необходимости входа по логину/паролю (на п.1).
    6в. Токен обновления действительный, но просроченный, сервер удаляет этот токен из БД и сообщает о необходимости входа по логину/паролю (на п.1).
    6г. Токен обновления действительный, непросроченный, в БД присутствует. Сервер удаляет этот токен из БД, генерирует новую пару, записывает новый токен обновления в БД и отправляет токены клиенту (на п.3).
    Ответ написан
    Комментировать
  • Есть ли возможность скачать с сайта учебную информацию в формате SCORM (Moodle)?

    TosterModerator
    @TosterModerator
    Модератор Хабр Q&A
    Коротко говоря - легально без разрешения хозяев сервера никак.
    Нелегально - это не тут надо выяснять. Тут поиск нелегальных вариантов запрещен.
    Ответ написан
    Комментировать