Задать вопрос
  • Является ли чтение 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 комментариев
  • Как сделать обязательное обновление игры?

    Ну как как.
    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#?

    Никак нельзя, тк ты не можешь гарантировать, в какой именно консоли у тебя запустится приложение.
    - Оно может быть запущено в стандартной консоли 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
    Коротко говоря - легально без разрешения хозяев сервера никак.
    Нелегально - это не тут надо выяснять. Тут поиск нелегальных вариантов запрещен.
    Ответ написан
    Комментировать
  • Как создать свой домен?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Идете на сайт ICANN
    Подаете заявку на новый TLD
    Платите бабки, много бабок, очень много бабок. Зеленых, ессно.
    Ведете переписку, очень много деловой переписки. На языке оригинала, ессно
    Создаете необходимую инфраструктуру - Вы должны где-то хранить данные о зоне

    ПРОФИТ! (Ну, может быть...)
    Ответ написан
    Комментировать