Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос

dmitry-toster

  • 41
    вклад
  • 20
    вопросов
  • 45
    ответов
  • 60%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как можно сократить код и определить точное место?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    [ 5, 8, 10 ].forEach((n, i, a) => $items.slice(a[i - 1], n).wrapAll('<div>'));
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
  • Какое IDE для js?

    Sasha_Odesskiy
    Александр Тищенко @Sasha_Odesskiy
    бла-бла-бла!
    Судя по тому как ты пишешь, грамотно, то WebStorm
    30 дней бесплатно. но лучшего в мире IDE для JS нет. VS Code слабоват.
    если ещё есть 5 долларов, в месяц, то ты счастливчик.
    Ответ написан более двух лет назад
    9 комментариев
    9 комментариев
  • Как спроектировать фреймворк?

    php666
    Северное Сияние @php666
    PHP-макака
    Я понимаю про SOLID там, но если следовать правилу единой ответсвенности, то файлов будет просто целая гора,
    да. так оно и и будет

    Также встает вопрос, например, у меня сейчас маршрутизация а-ля микрофреймворк, чтобы прикрутить MVC надо реализовывать поиск контроллера и вызов метода. Должен ли этим заниматься отдельный класс?
    не надо спрашивать такие вопросы. Если ты что-то пишешь, то должен быть уверен в правильности своей архитектуры. Иначе ты на каждый чих будешь вопрос задавать.

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

    Любой фреймворк сейчас - это совокупность из десятков кубиков, каждый из которых разрабатывался и тестировался десятками, а то и сотнями людей, лучших профессионалов в своей области. Попытки в 21 году написать свой фреймворк, всё равно, что в одиночку спроектировать автомобиль, ЛУЧШЕ, чем мировые аналоги. Аналогия примерно такая же, т.е. это НЕВОЗМОЖНО.

    Не занимайся ерундой.
    Ответ написан более двух лет назад
    5 комментариев
    5 комментариев
  • Почему может выдавать undefined при использовании .forEach?

    vabka
    Василий Банников @vabka
    Токсичный шарпист
    Наверно из-за того что так и задумано? https://developer.mozilla.org/ru/docs/Web/JavaScri...
    forEach работает также, как и обычный цикл for of
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Когда открываешь модальное окно и закрываешь, происходит движение страницы, почему?

    FLUNKEY
    fl3nkey @FLUNKEY
    самовар
    https://github.com/FL3NKEY/scroll-lock/blob/master...
    Ответ написан более двух лет назад
  • Как сделать чтобы бот приветствовал новых участников на сервере?

    Alexandre888
    Александр @Alexandre888 Куратор тега Боты
    Javascript-разработчик
    в документацию хоть раз в жизни загляните, а то, наверное не знаете, что она вообще существует и что в ней существует
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Есть ли интересные Telegram-каналы по веб-разработке?

    myks92
    Максим @myks92
    Нашёл решение — пометь вопрос ответом!
    Список полезных Telegram-каналов:
    1. Windows
    2. Linux
    3. MacOS и iOS
    4. Другие ОС
    5. Компьютерное Железо
    6. Компьютерные Сети
    7. Программирование
    8. Системы Контроля Версий
    9. IDE и редакторы кода
    10. Системное Программирование
    11. C и C++
    12. Rust
    13. .NET (C#, F#)
    14. Java (Kotlin, Scala)
    15. Python
    16. Ruby
    17. Go
    18. Функциональное Программирование
    19. Другие языки
    20. Web-программирование
    21. Telegram / VK API
    22. PHP
    23. CMS
    24. JavaScript и Frontend
    25. Frontend-фреймворки
    26. HTML и CSS
    27. UI и UX
    28. Облачные Технологии и Хостинги
    29. Информационная Безопасность
    30. DevOps
    31. Тестирование
    32. Базы Данных
    33. Мобильная Разработка
    34. Встраиваемые Системы
    35. Электроника
    36. Алгоритмы
    37. Математика
    38. Графика и GameDev
    39. Data Science, ML, AI
    40. Маркетинг и SEO
    41. Офисное ПО и верстка
    42. Работа и проекты
    43. OpenSource-проекты
    44. Разное
    45. Свободное общение
    46. Полезные боты
    47. Новое в IT Chats

    Ссылка на источник: https://t.me/it_chats/845
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как задать определенные ключи объекту?

    bingo347
    Дмитрий Беляев @bingo347 Куратор тега TypeScript
    Crazy on performance...
    type TFood = Partial<Record<TFruit, Partial<Record<TFruitProps, string>>>>;
    Ответ написан более двух лет назад
    5 комментариев
    5 комментариев
  • Можете помочь с настройкой webpack?

    Игорь Махов @Igorgro
    У вас вот эта регулярка test: /\.s[as]ss$/i никогда не сработает на scss
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как вывести все значения по ключу находящиеся в массиве?

    bingo347
    Дмитрий Беляев @bingo347 Куратор тега JavaScript
    Crazy on performance...
    arr.flatMap(el => el.region).flatMap(el => el.cities).map(el => el.name)
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Какой смысл в Tor, если исходные данные подключения передаются Роскомнадзору?

    Jump
    АртемЪ @Jump
    Системный администратор со стажем.
    и прочитала что лицензии и поставщик самого интернет в России является Роскомнадзор.
    Вы какую-то чушь прочитали, или неверно поняли.
    Роскомнадзор это государственная служба по надзору в сфере связи, информационных технологий и массовых коммуникаций.
    Исключительно надзорный орган, который следит за правопорядком. Интернет он не поставляет.

    Интернет вообще поставлять невозможно, ибо это глобальная всемирная сеть. Можно предоставлять доступ к интернету - этим занимаются провайдеры.

    тут мне в голове возникла такая идея ........... засветив MAC адрес своего ПК в сети
    Судя по сказанному вы просто не разбираетесь в работе сети. Очень рекомендую прочитать хотя бы основы работы сетей в целом и интернета в частности, прежде чем генерировать такие идеи.
    По крайней мере будете знать на каком уровне OSI идет работа с MAC адресом, и в каких пределах он распространяется.

    Ведь тогда всю инфу, где такой пользователь подключал свой ПК в сети, можно просто запросить у регионального контролирующего Интернет органа (Роскомнадзор)?! Верно?!
    Конечно можно запросить, только не у Роскомнадзора, а у провайдера. Роскомнадзор то тут каким боком? Это всего лишь контролирующий орган.

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

    res2001 @res2001
    Developer, ex-admin
    Если упрощенно, то можно так:
    @echo off
    for /l %%a in (1,1,12) do for /l %%b in (1,1,31) do ( md %%a.%%b\wb 2>nul & md %%a.%%b\zaliv 2>nul)

    Но здесь принимается, что в каждом месяце 31 день, а так же не добавляется слева не значащий 0 для расширения номера месяца/дня до 2 символов.
    По простому расширить до двух символов можно используя неfor /l, а обычный
    for %%a in (01 02 03 04 05 ...) do
    Можно, конечно написать функцию, расширяющую строку до заданной длины нужным символом, но лень возиться. Можете погуглить по "cmd padding string", на сером форуме и ру-борде толковые ветки по батникам.

    Задать точное количество дней в месяце можно, используя заранее определенные списки дней для каждого месяца, что-нибудь типа такого:
    setlocal enabledelayedexpansion
    set "mday1=01 02 03 04 05 ..." :: в mday1 - 1 - это номер месяца (январь)
    set "mday2=01 02 03 04 05 ..."
    :: и так далее до mday12
    ...
    for %%b in (!mday%%a!) do ...

    Если не заморачиваться с расширением номеров до двух знаков, то в mdayN можно задавать просто максимальный номер дня и использовать в for /l %%b in (1,1,!mday%%a!) do
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Какие знания требуются для js trainee?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    Чё-то смеюсь. Раньше вы хотели быть джуном. То, что за прошедшие два с лишним года вы свои амбиции поумерили - это хорошо. Правда, не до конца - ну да это ничего, ещё через два года наверняка дозреете до осознания того факта, что не бывать вам программистом. Отсюда кстати и ответ на непосредственно заданный вопрос - вам никакие знания не требуются. Успокойтесь, и идите работать в такси.
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Почему не работают вложенные роуты в react-router-dom?

    0xD34F
    0xD34F @0xD34F Куратор тега React
    <Route path="/products" component={Products} />

    Сюда добавить exact.

    return <h1>Product# {match.slug}</h1>;

    Здесь должно быть match.params.slug.
    Ответ написан более двух лет назад
    1 комментарий
    1 комментарий
  • Как отфильтровать массив в массиве?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    arr.map(n => ({
      ...n,
      array2: n.array2.filter(n => n !== null),
    }))

    или, если не хотите создавать новый массив:

    arr.forEach(n => n.array2.reduceRight((_, n, i, a) => n === null && a.splice(i, 1), 0));
    
    // или
    
    for (const { array2 } of arr) {
      array2.splice(0, array2.length, ...array2.filter(n => n !== null));
    }
    
    // или
    
    for (let i = 0; i < arr.length; i++) {
      let numDeleted = 0;
    
      for (let j = 0; j < arr[i].array2.length; j++) {
        arr[i].array2[j - numDeleted] = arr[i].array2[j];
        numDeleted += arr[i].array2[j] === null;
      }
    
      arr[i].array2.length -= numDeleted;
    }
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как получить все вложенные элементы JS?

    0xD34F
    0xD34F @0xD34F Куратор тега JavaScript
    const getElementsWithDepth = (el, level = 0) =>
      [...el.children].reduce((acc, n) => {
        acc.push(...getElementsWithDepth(n, level + 1));
        return acc;
      }, [ { el, level } ]);
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Как можно из строки выделить дату и время отдельно?

    Seasle
    Александр @Seasle Куратор тега JavaScript
    \( ゚ヮ゚)/
    const parseToDate = string => {
      const [day, month, year, hour, minute] = string.match(/\d+/g).map(match => parseInt(match));
      const normalizedYear = year < 2000 && year.toString().length <= 2 ? year + 2000 : year;
      const date = new Date(normalizedYear, month - 1, day, hour || 0, minute || 0);
      
      return date;
    };
    
    const strings = [
      '01 02 2003 04 05',
      '01 02 03 04 05',
      '01/02/03 04 05',
      '01-02-3 04-05',
      '23-08/2019 3 4',
      '1 1 1980 0 0',
      '2 2 0'
    ];
    
    for (const string of strings) {
      const date = parseToDate(string);
      
      console.log(date.toLocaleString());
    }
    
    /**
    '01.02.2003, 04:05:00'
    '01.02.2003, 04:05:00'
    '01.02.2003, 04:05:00'
    '01.02.2003, 04:05:00'
    '23.08.2019, 03:04:00'
    '01.01.1980, 00:00:00'
    '02.02.2000, 00:00:00'
    */
    Ответ написан более двух лет назад
    3 комментария
    3 комментария
  • Прокрастинация, проблемы языка или я не программист?

    saboteur_kiev
    Saboteur @saboteur_kiev Куратор тега IT-образование
    software engineer
    Я плохой программист

    Вы вообще еще не программист и не факт что им будете.

    или же неправильно распределяю время на программирование?(от 1,5 часов до 5 в день) в чем проблема?

    Если бы вы тратили от 1.5 до 5 часов в день хотя бы год, думаю было бы гораздо больше результатов.

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

    Вся проблема в том, что вы не готовы понять или принять ответ, что вы либо ленивый, либо неспособный заставлять себя изучить технологии.

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

    Получается все через годы стараний и мучений.
    Чтобы стать специалистом нужно разбираться, ковыряться, искать, читать документацию, искать свой путь как вы осознаете суть технологий и научитесь с ней работать.

    Вот возьмем школу.
    10-12 лет тратить по 5-7 часов в день на уроки.
    Вот 10-12 лет спустя - вы стали математиком? Литератором? Поэтом? Биологом? Физиком? Химиком?
    Да нет, едва-едва общие знания получили, которые даже не очень понятно где применить.

    Тоже самое и в ИТ: 2-3-4 месяца это даже не начало, это так, сверху поковырял.
    Ответ написан более двух лет назад
    Комментировать
    Комментировать
  • Бинарный поиск - как определить кол-во шагов?

    Karpion @Karpion
    Бинарный поиск также называет "писк делением пополам". Попробуем пойти с конца.
    1. На последнем этапе мы имеем массив из двух элементов, после деления которого получаем решение - найденный нужный элемент или же понимание того, что нужного элемента в массиве нет.
    2. На предпоследнем этапе мы имеем массив из четырёх элементов, который поделим и получим массив из двух элементов. Или м.б. массив из трёх элементов - тогда этот шаг м.б. предпоследним или последним.
    3. И так на каждом шаге размер массива удваивается.
    Т.о., за k шагов мы можем разделить массив, имеющий 2**k элементов. Тогда k=log2(n), т.е. речь идёт о логарифме_по_основанию_два.
    Если же n не является степенью двойки - то k=roundup(log2(n)), т.е. мы округляем дробное число до целого вверх. log2(100)=6.644, с округлением вверх получаем семь.

    Что такое "логарифм" - программист должен знать. Без этого хороший код писать не получится - будет тупо непонятно описание алгоритмов.

    Очень советую почитать книги классиков: Кнут, Вирт и прочие. Там не про современные системы программирования, а именно про алгоритмы - не зависящие ни от архитектуры компьютера, ни от языка программирования. Старые книги хороши тем, что прошли проверку временем. Хотя, конечно, там могут отсутствовать некоторые знания, полученные недавно. Зато там нет (или очень мало) откровенного фуфла, которого много в современных книжках.
    Ответ написан более двух лет назад
    2 комментария
    2 комментария
  • Бинарный поиск - как определить кол-во шагов?

    hzzzzl
    hzzzzl @hzzzzl
    а зачем байндить, там же никак не используется this и прочее вот это вот всё,
    return counter(stepNumber) так же вернет 7 для 100

    а вообще countSteps = n => Math.ceil(Math.log2(n)) (но это неточно, я уже не особо в ладах с математикой)
    Ответ написан более двух лет назад
    4 комментария
    4 комментария
Оценили как «Нравится»
  • 1
  • 2
  • Следующие →
Самые активные сегодня
  • rPman
    • 8 ответов
    • 0 вопросов
  • mayton2019
    • 7 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 7 ответов
    • 0 вопросов
  • vabka
    Василий Банников
    • 6 ответов
    • 0 вопросов
  • borisserver
    Субару Помнеш
    • 5 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации