Задать вопрос
  • Шифрование для защиты от MITM?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    В абстрактной сферический ситуации MitM невозможен до тех пор, пока у тебя в хранилище доверенных корневых центров нет сертификата, который позволит злоумышленнику на лету подменять сертификаты сторон.
    В реальной жизни, поскольку это действительно серьезное препятствие, этот сертификат там окажется административно-командными мерами. Например, в локальной сети предприятия он ставится доменными политиками.
    Ответ написан
    Комментировать
  • Шифрование для защиты от MITM?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Можно ли как-то защититься от этого; есть ли для этого какие-то специальные протоколы?

    Для этого бывают key signing party, когда сопоставление ключа и владельца происходит очно.
    Либо PKI, если не стрёмно отдать эту функцию на аутсорс.
    Ответ написан
    Комментировать
  • Шифрование для защиты от MITM?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Но если, допустим, два человека ведут беседу в текстовом чате, а во время обмена публичными ключами, "по середине" незаметно вторгнется еще один человек (MITM - Man In The Middle)

    Давай в этой схеме я выброшу двух людей. И заменю их на браузер и сайт. Там на самом деле и просиходит такой-же чат. Браузер спрашивает и сайт отвечает. Так вот. Эта схема защищена цифровыми сертификатами. И центром сертификации. Тоесть еще до того как вы начали хоть какой-то обмен работают протоколы установки соединения по TLS/SSL когда браузер может удостоверится что центр сертификации одобрил одного из людей и подтвердил его личность. Это Боб проверяет что Алиса - это действительно Алиса. И также получает ее public key который вобщем-то публичен и тоже является частью сертификата.

    Вот придумай где подпихнуть твоего человека-Кларка посередине.

    Я слышал про "квантовое шифрование", но это уже следующий век.

    Квантового шифрования не существует. Есть алгоритм быстрог разложения длинного числа на множители который является частью протоколов RSA. Но все успехи в науч-попе пока ограничены тем что создали комп очень малой разрядности который и близко не подошел к нужным границам и комп сам представляет собой физ-лабораторию с криогеном и защитой от всеговсего. И нет даже надежды что такой комп вставят в телефон или десктоп. Физика - здесь наука злая и циничная. Более того даже если будут успехи в этой области у КК - то у нас в запасном кармане есть эллиптическая криптография EDSA на которую пока еще ничего не придумано. Поэтому насчет КК и криптографии нам можно вообще не беспокоиться. И нашим детям тоже. И внукам.

    Кстати я вижу что qna.habr для меня использует алгоритм EDSA + SHA256
    Ответ написан
  • Какой ноутбук выбрать для начинающего программиста?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно брать любой по карману. Но если НП (начинающий прогер) хочет заниматься геймдевом - то нужна видяшка сильная по фиче-листу. Чтоб всякие там физики поддерживала. Или если хочет заниматься нейро-сетями - то видяшка опять-же с TPU. Железо брать лучше Intel. У меня в связке AMD+Ubuntu были сложные хардверные проблемы которые никак не решались.
    Ответ написан
    Комментировать
  • Какой ноутбук выбрать для начинающего программиста?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    любой, который устроит лично тебя по бюджету, клавиатуре и монитору.
    Ответ написан
    2 комментария
  • Почему современные языки отказываются от ООП?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Они не отказываются. Скорее происходит отказ от "парадигмы" разработки. Языки стали мульти-парадигменные. Посмотрите на С++20 или Scala. Их невозможно положить в коробочку ООП или ФП. В них есть почти полный набор фич и оттуда и отсюда. И с каждым годом число фич растет и граница размывается. Нашим потомкам будет вообще непонятно где идет раздел.

    По поводу golang. Это язык ограниченной разработки. Его создавали специально чтобы порог вхождения был низкий. Фактически делали лайтовый С++ которому можно обучить школьника за 14 дней. Но с перформансом выше чем у Питона. Поэтому выражать какие-то сложные конструкции на типах там скорее всего не получится. У golang есть свой манифест. Я забыл как он называется и где он. Вобщем там довольно четко обоснованно почему такие принципы и почему такая идеология.
    Ответ написан
    1 комментарий
  • Как изменить разрешение экрана на телефоне?

    @Yoler
    Скорее всего у вас проблема в этой строке. Как она у вас написана?
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    Ответ написан
    1 комментарий
  • Как сделать отправку ajax каждые n секунд?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    function sendSomething() {
      // (отправляем запрос)
    
      // заряжаем паузу до следующей отправки
      setTimeout(sendSomething, 5000); // через 5 секунд повторить
    }
    
    sendSomething() // поехали!
    Ответ написан
    5 комментариев
  • Как выдернуть массив чисел из строки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    (str.match(/[0-9]+/g) ?? []).map(Number)
    
    // или
    
    Array.from(str.matchAll(/\d+/g), n => +n)
    
    // или
    
    str.split(/\D+/).filter(Boolean).map(parseFloat)
    
    // или
    
    eval(`[${str.replace(/\D+/g, (m, i) => i ? ',' : '')}]`)
    
    // или
    
    [...str].reduce((acc, n, i, a) => (
      isNaN(n) || (isNaN(a[i - 1]) && acc.push(0), acc.push(acc.pop() * 10 + n * 1)),
      acc
    ), [])
    Ответ написан
    Комментировать
  • Какие название используете для классов в HTML/CSS?

    GoodProject
    @GoodProject
    Верстальщик
    Лови

    Основные
    .wrapper - /*обвертка сайта*/
    .header - /*верхняя часть сайта*/
    .sidebar - /*сайдбар (левая или правая часть сайта)*/
    .content - /*тело сайта (центральная часть)*/
    .footer  - /*нижнаяя часть сайта*/


    Название блока (обвертка)
    .bl 
    .block 
    .box
    .wrap
    .inner
    .container
    .main


    Секции блока
    .head, .header - /*верхняя часть блока например заголовок*/
    .cnt, .content, .body - /*тело блока например текс с картинкой*/
    .footer - /*нижняя часть блока к примеру дата добавления, категория и т.д.*/


    Колонки
    .column, .col - /*колонка*/

    Списки
    .list
    .item


    Позиционные классы
    .top /* элемент сверху */
    .left /* элемент слева float:left */
    .right /* элемент справа float:right */
    .bottom /* элемент внизу */
    .center /* элемент отцвентрирован  margin:0 auto; */
    .fixed - /*фиксированный элемент postion:fixed */


    Переходы
    .next  - /*следующий*/
    .prev  - /*предыдущий*/
    .last  - /*последний*/
    .first - /*первый*/
    .back  - /*назад*/
    .ahead - /*вперед*/


    Чисельные
    .one
    .thwo
    .three
    .four
    .five


    Размеры
    .xs, .tiny   - /*очень маленький*/
    .s,  .small  - /*маленький*/
    .md, .medium - /*средний */
    .lg, .large, .big - /*большой */
    .xl, .extra-large - /*очень большой*/


    Цвета
    .danger  - /*цвет опасности*/
    .default - /*стандартный цвет*/
    .warning, .error - /*цве ошибки*/
    .success - /*цвет успеха (к примеру верно введн код подтвержления)*/
    .primary - /*основной цвет */


    Кнопки
    .button, .btn - /*кнопка*/
    .loading - /*загрузка*/
    .close - /*закрыть*/
    .open  - /*открыть*/
    .touch - /*клик*/
    .edit  - /*редактировать*/
    .more  - /*больше*/
    .remove  - /*удалить*/
    .logout  - /*выход*/
    .select  - /*выбрать*/
    .divider - /*выпадающийся список меню*/
    .caret, .arrow - /*стрелочка*/
    .up - /* Вверх */
    .down - /* Вниз */
    .delete - /* удалить */
    .reply    - /*ответить*/


    Персона
    .profile - /*профиль*/
    .person - /*человек*/
    .ava, .avatar - /*аватарка, картинка*/
    .name - /*имя*/
    .description - /*описание*/
    .address  - /*адресс*/
    .nickname - /*ник*/
    .birthday - /*дата рождения*/
    .sex - /*пол*/
    .author - /* автор */

    Заголовки
    .title - /*заголовок*/
    .short-title - /*скороченный заголовок*/
    .full-title  - /*полный заголовок*/


    Ссылки
    .link - /*ссылка*/

    Текст
    .text, .txt, .paragraph  - /*текст*/
    .info, .information - /*информация*/


    Картинки
    .image, .img - /*картинка*/
    .icon, .ic   - /*иконка*/
    .bg - /*фоновая картинки или цвет*/


    Формы
    .search, .form-search - /*поиск по сайту*/
    .input - /*текстовый элемент*/
    .form  - /*форма*/
    .form-group - /*группа элементов формы*/
    .help-block - /*текст подсказки*/
    .label - /*название элемента формы*/


    Катагории
    .type - /*тип*/
    .cat, .category - /*катигория*/
    .subcat, .subcategory - /*подкатегория*/
    .section    - /*раздел*/
    .subsection - /*подраздел*/


    Видео
    .video
    .play  - /*пуск*/
    .stop  - /*стоп*/
    .pause - /*пауза*/


    Социальные сети
    .social - /* социальные сети */
    .vk   - /*вконтакте*/
    .fb   - /*фейсбук*/
    .twit - /*твиттер*/
    .inst - /*инстаграм */


    Активные классы
    .none     - /*скрытый элемент*/
    .disabled - /*заблокированный*/
    .active, .current   - /*активный */
    .selected - /*выбраный*/
    .visible  - /*видный элемент*/
    .focus    - /*нажатый*/


    Временные классы
    .time  - /*время*/
    .date  - /*дата*/
    .day   - /*день*/
    .month - /*месяц*/
    .year  - /*год*/


    Очистка
    .clear, .clearfix, .clr - /*очистка*/

    Разделители
    .separator, .divide - /*разделитель вертикальный для слов */
    .br, .line - /*разделитель горизонтальный для блоков*/


    Остоньлые названия
    .logo    - /*лого сайта*/
    .new    - /*новинка*/
    .sale   - /*распродажа*/
    .feedback - /*обратная связь*/
    .support - /*помощь */
    .group  - /*группа*/
    .module - /*модуль*/
    .posters - /*пост*/
    .form   - /*форма*/
    .tabs   - /*вкладки*/
    .slider - /*слайдер*/
    .news   - /*новости*/
    .table  - /*таблица*/
    .full   - /*полный*/
    .breadcrumbs - /*Хлебные крошки*/
    .pagination, .pager - /*Нумерация страниц*/
    .navbar, .nav, .menu, .navigation - /*Навигация (меню)*/
    .dropdown - /*выпадающейся меню */
    .comment  - /*комментарий*/
    .subscription - /* Подписка */
    .special - /* особенный элемент */
    .standard - /* стандартный элемент */
    .screens - /* Скрины */
    .rate - /* рейтинг */
    .online - /* онлайн */
    .panel - /* панель */
    .popup - /* попап */
    .version - /* версия */
    .page - /* страница */
    .banners - /* баннер */
    .map - /* Карта */
    .more - /*еще, подробнее*/
    .tags - /* тег */
    .price - /* цена */


    Взято с этого видео.
    Ответ написан
    2 комментария
  • Как сделать, чтобы при нажатии в любое место переключался класс?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    Сегодня юбилейный, 50-й раз, когда я даю ссылку на решение этой проблемы =)
    https://yandex.ru/search/?text=javascript+click+ou...
    Ответ написан
    Комментировать
  • Как можно изменить javascript по другому?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    document.querySelector('.navlnk.js-load-more.js-load-more-bot').click();
    Ответ написан
    2 комментария
  • Как работает flex-grow?

    Devilz_1
    @Devilz_1
    Frontend-Developer
    В своё время мне эта статья помогла понять как работает комбинация flex-grow, flex-shrink и flex-basis.

    Ознакомьтесь)
    Ответ написан
    Комментировать
  • Когда применять arr.reduce?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Когда сочтёте нужным. Типа, подумали, и решили - здесь reduce нужен. Или не нужен. Да, подумали. Для этого у вас есть особый инструмент - голова называется.
    Ответ написан
    Комментировать
  • Воспроизведение звука при наведении курсора мыши на объект?

    XOR2048
    @XOR2048
    Web & Browser extension developer
    Попробуйте пример отсюда - https://ruseller.com/lessons.php?id=1041
    Ответ написан
    Комментировать
  • Как сделать проверку открытых сайтов на js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    написать расширение для браузера и заставить всех его установить себе
    Ответ написан
    Комментировать
  • Как сохранить введённые input с первой страницы, чтобы они выводились на другой странице?

    DanArst
    @DanArst Куратор тега JavaScript
    Гриффиндор в моде при любой погоде!
    Читайте тут
    Ответ написан
    Комментировать
  • Какие параметры и значения указать в style.css, чтобы мой файл был похож на макет?

    @ostup17
    Начинающий программист (flutter dev - frontend de)
    Просто готовый код выкладывать - не вижу смысла. Но направить, нужно обязательно.
    Для начала, если вас интересует только макет в виде расположения блоков, то срочно прочтите flexbox или тут. А также систему Grids . Причем это для расположения блоков и содержимого блоков.

    Далее, если вас интересуют детали - fonts/шрифты
    И прочее по работе с шрифтами, чего у вас нет - тут

    И рекомендую пройти вот этот мини курс по css. Успехов)
    Ответ написан
    Комментировать
  • Перенос строки \n не работает?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    заменить \n на <br>
    Ответ написан
    Комментировать
  • Как найти произведения элементов массива и сумм столбцов матрицы?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const result = arr.map((n, i) => n * matrix.reduce((acc, row) => acc + row[i], 0));

    или

    const result = Array(arr.length).fill(0);
    
    for (const row of matrix) {
      for (const [ i, n ] of row.entries()) {
        result[i] += n * arr[i];
      }
    }
    Ответ написан
    Комментировать