Задать вопрос
  • А не разбирался ли кто-нибудь с протоколом устройств SmartLife/Tuya?

    GavriKos
    @GavriKos
    Ну проще всего посмотреть поддержку вашей кормушки в каком нить HomeAssistant. Если поддержка там есть - читать реализована она через локалку или нет.
    Отучать устройства Tuya от интернета можно - у них неплохой developer portal, через который вполне получаются креды каких нить лампочек или подобных устройств, и потом пробрасываются в тот же HA.
    На более низкий уровень - не спускался.
    Ответ написан
    Комментировать
  • В чем заключается ошибка этой логики рекурсии?

    WblCHA
    @WblCHA
    Ты не ту функцию вызываешь. У тебя мгновенно вешается красный после зелёного, естественно ты не увидишь разницы.
    document.body.style.backgroundColor = "red";
    document.body.style.backgroundColor = "green";
    // delay
    document.body.style.backgroundColor = "red";
    document.body.style.backgroundColor = "green";
    // delay
    ...


    Тебе disco вызывать надо.
    Ответ написан
    1 комментарий
  • В чем заключается ошибка этой логики рекурсии?

    @timau32
    Ну у тебя почти все правильно разве, что можно сделать его короче.

    function disco(delay, isRed) {
        setTimeout(function tick() {
            document.body.style.backgroundColor = isRed ? 'red' : 'green';
            disco(delay, !isRed)
        }, delay);
    }
    
    disco(1000);


    и в принципе потом можно по такой же логике просто подрубить setInterval вместо бесконечных генераций Таймаутов.
    Ответ написан
    Комментировать
  • Как исправить ошибку TS?

    director-rentv
    @director-rentv
    Frontend-разработчик
    Пометьте const AUTH_FIELDS как readonly

    const AUTH_FIELDS = {
      LOGIN: 'login',
      PASSWORD: 'password'
    } as const


    Тогда этот объект будет с полями литерального типа, без as const они просто мутабельный string
    Ответ написан
    Комментировать
  • Как принимать деньги от физиков и передавать их другим людям онлайн без юрлица или ИП?

    vabka
    @vabka Куратор тега Веб-разработка
    1. Юридическое лицо обязательно придется завести

    2. Налоговая в любом случае увидит тут признаки дохода и ты будешь обязан взимать НДФЛ с исполнителей, как налоговый агент.
    Вот и требование отчитываться в налоговую.
    Вот тебе, получается, нужно узнавать полные данные и ИНН исполнителей.
    Вот и закон о персональных данных кокетливо машет рукой, а РКН ждёт от тебя стопку бумаг о том, как ты с этими ПД работаешь и как защищаешь. Очень возможно, что придётся ещё потратиться, чтобы всем требованиям соответствовать.

    3. А ещё тут очень легко можно попасть на отмывание денег. Возможно, для того что ты хочешь сделать, нужно ещё получать лицензию. Стоит проконсультироваться с юристом по поводу того, какой у тебя ОКВЭД тут будет.

    4. Учитывая это - я хз как ты собираешься не получать с этого прибыль. Ибо только на то чтобы запустить такой сервис и чтобы он работал придется немало денег вложить и регулярно тратить.

    Без юридического лица можно попробовать крипту, но тут тоже есть нюансы, начиная опять же с комиссий(говорят есть варианты с небольшой комиссией) и волатильности (по идее есть стейблкоины, но и они умеют обваливаться), заканчивая серым статусом, зато всего остального получится избежать.
    Ответ написан
    14 комментариев
  • Можно ли увеличить скорость wi-fi, если она ограничена тарифом?

    @Drno
    Внутри локальной сети - да, будет работать передача данных со скоростью вифи \ роутера
    Во "внешний мир" - ограничение провайдера
    Ответ написан
    Комментировать
  • Можно ли увеличить скорость wi-fi, если она ограничена тарифом?

    @default_route
    Возможно ли обойти это

    Нет
    или всё зависит от проведённого интернет-кабеля?

    Всё зависит от шейперов/полисеров провайдера
    Ответ написан
    Комментировать
  • Что не так? Почему возникает ошибка? Что надо исправить?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Зачем объявлять enum, если им не пользоваться?
    - status: "published"
    + status: QuestionStatus.PUBLISHED
    Ответ написан
    Комментировать
  • Почему выдается неправильный результат при операциях c long int в Си?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Проблема в выводе. Вы пытаетесь вывести переменную unsigned long long через спецификатор "%d". Надо использовать "%llu" какой-нибудь.
    Ответ написан
    Комментировать
  • Может ли соединение между 2 серверами на Linux быть одновременно и локальной сетью и мостом?

    Afranius
    @Afranius
    Из говорящих дольше живут те, что говорят меньше.
    А зачем такие извращения? Кабель от провайдера в свитч, а от свитча на оба компа.
    И устанавливай PPPoE - соединение по очереди хоть с первого, хоть со второго (если только пров привязку по маку не делает). Потому что одновременно с обоих PPPoE работать не будет.

    Вообще задача не понятна. Если первый комп настроен как шлюз, то при наличии локальной сети и поднятом PPPoE интернет и так будет на обоих. Зачем нужна другая сессия?
    Ответ написан
    1 комментарий
  • Как правильно работать с гит, если у тебя 2 фронтендера?

    xez
    @xez
    TL Junior Roo
    Каждый пусть создаст свою ветку и в ней делает что хочет.
    Когда разработка будет готова - нужно будет создать pull request (merge request), пройти ревью и залить уже свою ветку в мастер.
    Т.о. никто никому мешать не будет, возможные конфликты будут решаться перед мержем.
    Ответ написан
    Комментировать
  • Как правильно работать с гит, если у тебя 2 фронтендера?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега Git
    Автоматизатор
    Git — это система контроля версий, которая помогает работать над проектами параллельно, не мешая друг другу. А то, что вы называете «залить на гит», скорее всего, значит «отправить изменения на GitHub» (или другую платформу). Эти понятия важно различать.

    Ваш подход с очередностью неудобен и неэффективен. Никто не должен ждать, пока другой закончит свою работу. Git позволяет работать параллельно, разделяя задачи на ветки. А если возникают конфликты, они легко решаются в процессе слияния.

    Что касается описаний изменений. Ваш друг прав: нужно объяснять, что сделано, но вручную перечислять каждую строку не требуется. Git сам показывает разницу между версиями, а платформы вроде GitHub делают это наглядно.

    Вам стоит пройти курс по основам Git, чтобы понять, как он работает, зачем нужны ветки и как решать конфликты. Тогда таких споров не будет, и работа пойдёт быстрее.
    Ответ написан
    Комментировать
  • Как задать переменной тип с данными в зависимости от условия?

    @historydev
    Mistkerl, drück den Knopf.
    if else должен возвращать один тип.
    - Ты не можешь указать динамический тип переменной user.

    Оборачивай свои структуры в перечисление:
    enum UserRes {
    Res(Res),
    User(User),
    ErrServ(ErrServ)
    }
    
    let user = if a == b { UserRes::Res(Res { / * ... */ }); } else { UserRes::User(User { /* ... */ }); };
    Ответ написан
    Комментировать
  • Как создать комнату в браузерной игре?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    Без бэкенда тут не обойтись. Знаете python? Если нет, стоит подучить. Если да, то знаете ли какой-нибудь фреймворк, типа Flask/Django? Если не знаете, то опять же стоит освоить. Без этого по-нормальному вы ничего не напишите.
    На flask простейший пример будет выглядеть примерно так

    from flask import Flask, redirect, url_for, request
    import random
    import string
    
    app = Flask(__name__)
    
    rooms = {} # здесь будем хранить комнаты и игроков, которые к ним подключились
    
    def generate_room_code(): # функция генерация id комнаты
        return ''.join(random.choices(string.ascii_uppercase, k=4))
    
    @app.route('/')
    def index(): # тут делаем стартовую страницу. Сейчас это зашито прямо в скрипт, но можно возвращать файл
        return '''
        <!doctype html>
        <html>
            <head>
                <title>Новая игра</title>
            </head>
            <body>
                <h1>Добро пожаловать!</h1>
                <a href="/start">Начать новую игру</a>
            </body>
        </html>
        '''
    
    @app.route('/start')
    def start(): # это будет выполняться после нажатия на ссылку "Начать игру"
        room_code = generate_room_code()
        rooms[room_code] = [] # тут добавляем id комнаты. Список пустой, т. к. игроков ещё нет
        return redirect(url_for('waiting_room', room_code=room_code)) # перенаправляем пользователя в комнату
    
    @app.route('/waiting/<room_code>')
    def waiting_room(room_code): # тут делаем комнату.
        if room_code not in rooms:
            return "Not found", 404 # если нет такой комнаты
        return f'''
        <!doctype html>
        <html>
            <head>
                <title>Комната</title>
            </head>
            <body>
                <h1>Комната {room_code}</h1>
                <form action="/join" method="post">
                    <input type="hidden" name="room_code" value="{room_code}">
                    <input type="text" name="player_name" placeholder="Имя">
                    <button type="submit">Присоединиться</button>
                </form>
                <h2>Игроки:</h2>
                <ul>
                    {''.join([f'<li>{player}</li>' for player in rooms[room_code]])}
                </ul>
            </body>
        </html>
        '''
    
    @app.route('/join', methods=['POST'])
    def join_room(): # обрабатываем запрос на присоединение
        room_code = request.form['room_code']
        player_name = request.form['player_name']
        if room_code in rooms:
            # добавляем игрока и перенаправляем его обратно
            rooms[room_code].append(player_name)
            return redirect(url_for('waiting_room', room_code=room_code))
        return "Not found", 404
    
    if __name__ == '__main__':
        app.run(debug=True)
    Это, конечно, просто пример, для того, чтобы вы понимали, как это выглядит

    ИМХО Flask или Bottle (вообще изи) для вас самое лучшее, если вы пока не в теме. Django для новичков не подходит. Ну и конечно, думайте, точно ли вам нужен python
    Ответ написан
    2 комментария
  • Есть что то проще чем php?

    Если без динамики, то Pug - отличный шаблонизатор
    Ответ написан
    Комментировать
  • Что будет с пингом, если между пк и роутером, добавить второй роутер?

    GavriKos
    @GavriKos
    Ну чуть чуть кнчн увеличится пинг - потому что роутеру надо будет как то пакеты обработать. Но скорее всего даже в тестах вы это не заметите. Если кнчн роутер нормальный.
    Ответ написан
    4 комментария
  • Почему сорт не работает?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    я что то не до понимаю?
    Ага

    console.log(obj.sort((a, b) => a.title.localeCompare(b.title)));
    Ответ написан
    1 комментарий
  • Существуют ли эталонно красиво написанные программы?

    @res2001
    Developer, ex-admin
    Код должен решать определенную задачу. Читать абстрактный код без понимания сути решаемой им задачи - бессмысленное занятие. Т.е. вы должны сначала вникнуть в задачу и хотя бы в черне представить как бы вы ее решали. В этом случае, читая код, уже можно оценивать те приемы, которые там применены.
    У меня сложилась такая практика: когда мне требуется использовать библиотеку, в которой реализован нужный мне функционал (т.е. я изначально уже знаю какую задачу должна решать библиотека), я сначала читаю обзорно документацию на нее, потом лезу в исходники и смотрю как оно там все устроено. Некоторые библиотеки после такого анализа отбраковываются, из других можно вынести для себя что-то полезное, но в любом случае начинаешь лучше понимать как работает библиотека.
    На изучение кода толстых библиотек может уйти много времени, поэтому смотрю только какую-то небольшую часть, которая нужна в данном конкретном случае.
    Многие просмотренные мной библиотеки написаны не плохо с моей точки зрения, но на сколько они "эталонно красивы" судить не берусь.
    В целом считаю, что читать чужой код - полезный навык. Но все таки умение программировать самому еще более полезный. Поэтому надо правильно расставить приоритеты.
    Ответ написан
    Комментировать
  • Существуют ли эталонно красиво написанные программы?

    @Everything_is_bad
    Беда в том, что довольно трудно найти хорошо написанный код, который можно было обозреть целиком.
    бесполезное занятие, больше похоже на прокрастинацию, короче пока сам не начнешь понимать какой код "красивый", какой нет (а это только когда сам напишешь кучу кода), толку от рассматривания не будет.
    Ответ написан
    Комментировать
  • Как перезаписать переменную по нажатию кнопки в sass?

    inkShio
    @inkShio
    :root {
      --primary-color: #f9f9f9;
      --text-color: #424242;
    }
    
    :root.dark-mode {
      --primary-color: #161625;
      --text-color: #e1e1ff;
    }
    
    body {
      background: var(--primary-color);
      color: var(--text-color);
    }

    Ну и на js напишешь, что бы при нажатии на кнопку добавлялся класс dark-mode к html.
    Ответ написан
    Комментировать