• Что начать читать?

    Adamos
    @Adamos
    Но вообщем, все это мне жутко надоело, и теперь я хочу стать IT-инженером.

    Это всё равно, что хотеть быть инженером, вместо того, чтобы что-то проектировать или хотеть быть писателем, вместо того, чтобы писать (с)

    Айтишная среда битком набита людьми, которым с детства интересно было копаться в компьютере. Человек, который полжизни шел мимо, не имеет против них никаких шансов.
    Начитываться теории, чтобы когда-то в будущем стать каким-то абстрактным IT-инженером - тупиковый путь.
    Теория должна тут же закрепляться практикой - а какой практикой чайник подопрет Таненбаума?..
    Ответ написан
    Комментировать
  • Есть ли оверхед/нагрузка на большое количество обработчиков событий?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Обработчиков у вас в любом случае 200 вешается.
    Вся разница в том, что в первом случае они ссылаются на двести функций, а во втором на одну.
    Создание функции требует определённых ресурсов, поэтому оверхед есть. Будет ли он заметным — это другой вопрос. Ответ на него зависит от того, что на самом деле в вашем коде происходит. На компьютере вы, скорее всего, разницы никогда не почувствуете, а вот на очень слабом телефоне при огромном количестве функций может начать тормозить.

    P.S. Проще использовать делегирование в таких случаях.
    Ответ написан
    Комментировать
  • Как сделать функцию ping?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    1 комментарий
  • Как выявлять показатели (логи, метрику, дейтсвия пользователя) в приложении?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Это называется метрики приложения.
    Реализовать можно несколькими способами, в зависимости от требования:
    - Для онлайн показателей (количество ошибок приложения, кол-во активных пользователей) можно реализовать через счетчики - грубо говоря, приходит пользователь -> увечиличиваем счетчик
    - Для статичтических данных - нужно делать запросы в БД, т.к. онлайн такое вряд-ли реализуется (приложение может рестартануть и метрики потеряются) - это SQL (если данные в реялционке) или язык для своего хранилища

    Чаще всего вижу такое решение:
    - Приложение отслеживает внутрениие метрики и отдает их в Prometheus формате
    - Prometheus приложение собирает эти метрики
    - Grafana получает метрики из Prometheus и строит по ним дашборды
    - Grafana делает запрос в БД для получения статистики и строит по ним дашборды

    В общем, смотри пару Prometheus/Grafana

    P.S. анализ логов для получения метрик - плохая затея, не надо так
    P.P.S. метрики, логирование, действия пользователя и т.д. - в общем случае называется observability - возможность понимать что происходит в приложении/системе и т.д.
    Ответ написан
    Комментировать
  • Где хранить docker images после сдачи проекта?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Зачем хранить образы после сдачи проекта? У вас есть Dockerfile, в случае чего ничего не стоит развернуть всё заново.

    Если же вы про какие-то сакральные данные - как их хранить, после сдачи проекта решает клиент. Тратить на это свои деньги, конечно же, не стоит.
    Ответ написан
    2 комментария
  • Как сделать скачивание файла через js?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    А завтра я захочу чтобы файл с моего сайта сразу в C:/windows/system32 молча сохранялся, минуя загрузки. Вам норм будет?
    Дурацкий вопрос и хотелка такая же.
    Ответ написан
    3 комментария
  • Как понять эти селекторы?

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    К элементу у которого есть оба класса:
    <div class="class-1 class-2">
        Some text
    </div>

    Если бы между ними был пробел .class-1 .class-2 тогда стиль применялся бы к .class-2 который находится внутри .class-1
    <div class="class-1">
    	<div class="class-2">
    		Some text
    	</div>
    </div>
    Ответ написан
    Комментировать
  • Как реогранизовать процесс разработки в IT-продукте?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    Первый вариант - если есть прибыль, нанять людей, чтобы написать все с нуля, но уже масштабирование сразу предусмотреть в архитектуре. Зависит от сложности проекта, конечно.

    Второй вариант - смотреть первый вариант, только своими силами и переписывать часть функционала, вынося его в микросервисы. В первую очередь вынести то, что под нагрузкой, потом потихоньку остальной функционал. С планами заменить все что нельзя масштабировать, без остановки сервиса.
    Под словом микросервисы я вообще не рекомендую ставить микросервисы как самоцель. Можно и микросервисы и макросервисы, важно чтобы было легко затем поддерживать и масштабировать.

    Разделить разработку и поддержку.

    Разработка - на тестовом енвайрнменте с тестовыми данными
    Поддержка - ограниченным кругом доверенных специалистов.
    Ответ написан
    Комментировать
  • Что делать с ошибкой OperationalError: no such column?

    Vindicar
    @Vindicar
    RTFM!
    Блин, да когда же вы читать научитесь, а?
    Никогда не используй f-строки для формирования sql-запроса, это либо даёт невалидный SQL (как в твоём случае), либо оставляет лазейку для SQL-инъекции.
    Используй подстановку параметров. Про это буквально в каждом мануале по работе с БД пишут, но ведь читать - не модно.
    cursor.execute("INSERT INTO masseges (id, massege) VALUES (NULL, ?)", (text,) )

    Ну и да. Правильно пишется message, если речь о сообщениях.
    Ответ написан
    2 комментария
  • Можно ли сделать git merge, чтобы в главной ветке появился только коммит слияния?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. git merge feature --squash
    2. git commit

    Проблему решает --squash флаг при merge, только останется закоммитить это дело
    Ответ написан
    Комментировать
  • Как в addEventListener в функцию передать переменные, если необходимо так же удалять созданный эвент?

    IvanU7n
    @IvanU7n
    если нужно удалить обработчик после однократного срабатывания, есть once в третьем параметре

    если логика удаления другая, то есть вариант:
    const handler = handlePasteImage.bind(null, whatever);
    addEventListener('paste', handler, { capture: true, });

    в handlePasteImage() придёт (whatever, event), а удалять нужно handler

    или
    const handler = {
      whatever: whatever,
      handleEvent(event) {
        handlePasteImage(event, this.whatever);
      },
    };
    addEventListener('paste', handler, { capture: true, });

    в handlePasteImage() придёт (event, whatever), а удалять нужно опять же handler
    Ответ написан
    Комментировать
  • Есть ли реальный профит от использования актуальных фронтенд-технологий?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В 2016-м году, делали нечто, что потом начали люди называть SPA - но за счёт аяксов, которые грузят что нужно. При этом сохраняется структура страниц на сервере, и нет и не было проблем с индексацией.

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

    Ускоряет жизнь тем, кто не умеет в вёрстку, остальным - замедляет.
    1. Стильно, модно, молодёжно. Других не могу придумать. Вроде бы как должно работать быстрее, но практика этого не показывает (или настолько незначительно, что конечному пользователю - пофиг, будет работать аякс или вьюшная реактивность).

    На определенном этапе разработки, стоимость поддержки проекта на чистом js начнёт обгонять проект на react/vue. Пользователю будет конечно пофиг, т.к. он не найдёт в ПС Ваш SPA сайт.
    Собственно, а зачем это всё нужно, если профит, кажется - нулевой

    Для ускорения разработки, а ключевое слово здесь "кажется".

    P.S. в некоторых ситуациях действительно быстрее и дешевле написать некоторые функции на чистом js и не тащить весь react стек в проект, но это больше исключение, чем правило.
    Ответ написан
    2 комментария
  • Есть ли реальный профит от использования актуальных фронтенд-технологий?

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

    @xibir
    find /yourpath -type d -path '*/site1.ru/core/cache' -exec rm -rf '{}' ';'
    Ответ написан
    Комментировать
  • Почему медленно отвечает сервер?

    @asmelnik
    Память забита, свап забит...
    "И чо вы хотели?"
    первый "смык" шерстит оперативку, выгружает из нее что-то "лишнее", запихивает туда нужное...
    Пока "дергаете" свои приложухи они держатся в оперативке...
    Как только пауза- их вытесняет что-то более актуальное....
    Ответ написан
    Комментировать
  • Как вернуть кортеж из функции?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    def sort_pair(a, b):

    В ТЗ указано, что функция sort_pair должна принимать один аргумент, который является кортежем из двух элементов целочисленного типа, а не 2 аргумента не определенного типа...
    def sort_pair(pair):
        a, b = pair
        if a <= b:
            return (a, b)
        else:
            return (b, a)
    
    print(sort_pair((5, 1)))  # (1, 5)
    print(sort_pair((2, 2)))  # (2, 2)
    print(sort_pair((7, 8)))  # (7, 8)

    Добавим аннотации, чтобы прям хорошо было:
    from typing import Tuple
    
    def sort_pair(pair: Tuple[int, int]) -> Tuple[int, int]:
        a, b = pair
        if a <= b:
            return (a, b)
        else:
            return (b, a)
    
    print(sort_pair((5, 1)))  # (1, 5)
    print(sort_pair((2, 2)))  # (2, 2)
    print(sort_pair((7, 8)))  # (7, 8)
    Ответ написан
    2 комментария
  • Как заблокировать работу с окном браузера при перезагрузке страницы?

    Всем "опасным" кнопкам по умолчанию устанавливаем атрибут disabled. Тогда их нельзя будет нажать.

    <button class="dangerous"  disabled>Сохранить</button>


    И сделать обработчик события загрузки страницы, который уберет этот самый атрибут с опасных кнопок по окончании полной загрузки страницы

    document.addEventListener(‘load’, function() { 
    	const dangers = document.querySelectorAll(".dangerous");
            dangers.forEach((item) => {
                  item.removeAttribute('disabled'):
            });
    }


    Если же вас беспокоят именно элементы, остающиеся на экране при старте перезагрузки, то самым простым решением было бы вообще удалить весь html страницы до перезагрузки, а потом спокойно её запустить. Либо вы можете точно так же в момент, когда вам надо запустить перезагрузку, установить всем опасным кнопкам атрибут disabled, а потом стартовать перезагрузку страницы.

    Но!!! Данный подход только лишь сделает жизнь пользователей более приятной. Не забывайте, что фронтенд-фрогнтендом, но бэкенд должен всё же уметь работать с такими запросами, которые не будут содержать в себе все нужные данные.
    Первое правило бэкенда - "Никогда не верь фронтенду и его данным, проверяй и валидируй всё"
    Ответ написан
    Комментировать
  • Как скрыть в списке языков репозитория CSS?

    vabka
    @vabka
    Токсичный шарпист
    https://dev.to/katkelly/changing-your-repo-s-langu...

    1. Создаёшь в репозитории файл ".gitattributes"
    2. Перечисляет в нём все языки, которые не надо детектить:
    *.css linguist-detectable=false
    Можно не просто расширение указать, а конкретные файлы или путь, чтобы игнорировать все файлы в определённой папке.
    3. Не забудь закоммитить и запушить изменения.

    Ну и не забывай про gitignore - возможно, эти файлы вообще не должны быть в репозитории, если они получаются в результате работы scss
    Ответ написан
    Комментировать
  • Возможно ли создавать приложения для Windows и Linux на JavaScript, html и css?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Возможно:
    - ElectronJS
    - Tauri
    Ответ написан
    Комментировать
  • Зачем в toString и substring передаются аргументы?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    3 комментария