• Возможно ли извлечь данные через =IMPORTXML с Wildberries?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Нет

    Как проверить можно ли использовать скрипты и формулы Google для получения данных https://t.me/contributor_pw/299
    Ответ написан
    Комментировать
  • Сравнение даты времени в Таблицах с переменной?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    В Таблицах даты - это числа.

    День - это 1, час - это 1/24 и т.д. Считайте-красьте сколько влезет.

    В чем была суть вашего вопроса? За вас нужно было что-то сделать? Вы даже пример данных не прислали.
    За готовыми решениями пишите на https://freelance.habr.com/ или мне - контакты по ссылке в профиле.
    Ответ написан
    2 комментария
  • Как настроить ML-модель?

    Maksim_64
    @Maksim_64
    Data Analyst
    То что вы пытаетесь сделать это называется тюнинг гиперпараметров. Так не делается конечно. в sklearn есть решения из коробки. При чем это целый этап в машинном обучении по этому целый раздел документации этому посвящен. https://scikit-learn.org/stable/modules/grid_searc...
    Там не только представлены классы но и различные методики которые используются. Изучайте там примеры есть, так что решите свой вопрос.
    Ответ написан
    Комментировать
  • Создавать телеграм ботов на С# или Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    В вакууме да, на python может быть чуть проще (и то далеко не факт).
    Однако написание ботов в целом довольно комплексная и не самая простая задача. Поэтому если знаете основы шарпа то пишите на шарпе - в противном случае параллельно с написанием бота придется заново учить синтаксис, что сводит на нет даже потенциальное различие в сложности.
    Ответ написан
    1 комментарий
  • Как Arduino Pro micro отследить выключение ПК?

    gbg
    @gbg Куратор тега Arduino
    Любые ответы на любые вопросы
    Способ отслеживания светодиода оптопарой, на самом деле, самый простой во многих аспектах
    - в программной реализации - вы сразу получаете сигнал на одном из пинов, так что проверка состоит из одной строчки
    - в аппаратной реализации - это три детальки - два резистора и оптопара
    - в плане надежности - это решение просто работает

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

    gbg
    @gbg Куратор тега Arduino
    Любые ответы на любые вопросы
    Почти - блокировочных конденсаторов (100n керамический, 10u электролит) по питанию не хватает. Если будете пользоваться АЦП, ему желателен LC фильтр.
    Ответ написан
    3 комментария
  • Как реализовать функцию,принимающую неограниченное кол-во объектов и возвращает новый объект,содержащий все поля со всех объектов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    раз хочется именно с reduce() – то можно редьюсить массив аргументов до одного результирующего объекта:
    const mergeObjects = (...args) => args.reduce((acc, c) => Object.assign(acc, c));

    Использование:
    mergeObjects({a: 'A'}, {b: 'B'}, {c: 'C', a: 'AAA'})
    // { a: "AAA", b: "B", c: "C" }


    Или так, чуть почище, чтобы не менять первый исходный объект:
    const mergeObjects = (...args) => args.reduce((acc, c) => ({...acc, ...c}), {});
    Ответ написан
    7 комментариев
  • Как сократить данный код?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Тут много путей уменьшить код.
    Можно начать с того, что у вас многократно повторяется.
    К примеру,
    if message.text == '26.01':
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            bt1 = types.KeyboardButton('8:00')
            bt2 = types.KeyboardButton('9:00')
            bt3 = types.KeyboardButton('10:00')
            bt4 = types.KeyboardButton('11:00')
            bt5 = types.KeyboardButton('12:00')
            bt6 = types.KeyboardButton('13:00')
            bt7 = types.KeyboardButton('14:00')
            bt8 = types.KeyboardButton('15:00')
            bt9 = types.KeyboardButton('16:00')
            bt10 = types.KeyboardButton('17:00')
            bt11 = types.KeyboardButton('18:00')
            bt12 = types.KeyboardButton('19:00')
            bt13 = types.KeyboardButton('20:00')
            bt14 = types.KeyboardButton('21:00')
            back11 = types.KeyboardButton('Назад')
            markup.add(bt1, bt2, bt3, bt4, bt5, bt6, bt7, bt8, bt9, bt10, bt11, bt12, bt13, bt14, back11)
            bot.send_message(message.chat.id, text='Выберите удобную вам дату для записи', reply_markup = markup)

    повторяется несколько раз. Значит, этот фрагмент можно записать один раз и затем многократно вызывать, подставляя только меняющиеся элементы.

    Но и внутри видно многократное повторение нумерованной переменной, это явный признак плохого кода.
    Эту проблему можно решить разными способами. В данном случае, когда значения идут равномерно (час за часом), можно их просто сгенерировать, рассчитать, и поместить в список.
    Например:
    first_hour = 8
    last_hour = first_hour + 14
    buttons = [f'{current}:00' for current in range(first_hour, last_hour)]
    print(buttons)
    print(buttons[0])

    И этот список и передавать в нужное место вместо bt1, bt2, bt3, bt4, bt5, …

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

    Следует отметить, что вам пока рано заниматься ботами. Сделайте что-то попроще, калькулятор например, игру «быки-коровы»… я не шучу.
    Ответ написан
    Комментировать
  • Как из HTML удалить текст и атрибуты, оставив только структуру?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    https://developer.mozilla.org/en-US/docs/Web/API/D...

    Я бы сделал так загрузил бы документ и прошелся бы по дочерним элементам
    document.html
    и выводил бы только теги
    Ответ написан
    Комментировать
  • Как вычислить виновника из-за которого отваливается интернет с какой-то периодичностью в маленькой сети?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    Такого рода проблемы все и всегда решаются однотипно.
    1. Необходимо сформулировать критерии наличия проблемы.
    Как именно пропадает интернет, насколько часто, как надолго. Это нужно для диагностики. поиска причины и определения ушла ли проблема после принятия каких либо мер.
    2. Делить проблему на части и проверять части по отдельности.
    Самый эффективный способ делить - это пополам. Отсекаем часть сети и проверяем наличие проблемы в обеих частях (если есть возможность) или в одной из частей.
    3. Когда найден минимальный проблемный участок, который уже нельзя или бессмысленно делить - заменяем его.
    4. Помним, что чаще всего сложные проблемы - это композиция нескольких более простых. которые по отдельности могут не проявляться. В вашем случае может быть проблема, связанная с нагрузкой на роутер, например, которую создает один из услов из-за плохого контакта обжима и большого объёма биттых пакетов. Устранив одну из причин, вы, может быть, сделаете проявления проблемы реже, но не устраните её полностью. К примеру, если замените ротуер, битые пакеты будут всё равно будут нагружать вашу сеть и портить ее производительность, но это будет не так очевидно. Переобжав коннектор вы избавитесь от части нагрузки, но еслив ваш ротуер работал на переделе, то лишний вафай-клиент или тяжелый видос в сети сможет его снова нагрузить до критического снижения производительности.

    Итак, пробежимся по перечисленным пунктам сначала.
    1. Критерии. Поиск критериев - это часть решения. Обычно в этом случае нуно сорать необходимую статистику. Есть куча софта, который это умеет делать, но пинг есть всегда под рукой.
    Для этой тулзы есть две полезных опции: ключ для бесконечного пинга и размер пакета.
    В разных ОС эти ключи немного разные, поэтому ищите их отдельно, у меня нет винды под рукой, поэтому не стану на этом заострять.
    Скаж лишь, что пинговать лучше большими пакетами, жалетально превышающими размер TTL, прописанный в роутере. Тогда такой пинг будет реже проскакивать в периоды хорошей связи, то есть выловит больше пролблем.
    Пинговать нужно в отдельных окнах сразу несколько хостов:
    - ya.ru - этот хост всегда отвечает на пинги и выявит проблемы с DNS
    - 8.8.8.8 - это гугловый DNS-сервер, тоже всегда отвечает на пинги, покажет, что связь с инетом есть даже если DNS, прописанныйна компе не правильно работает.
    - 192.168.0.1 - или какой там IP у вашего роутера. Нужно. чтбы отделить проблемы с инетом от проблем с внутренней связностью до роутера
    - 192.168.0.x - ip одного из компов в сети. Я обычно пингую несколько компов, доступных через баксимальное число потенциально проблемных узлов - ethernet-розеток, свичей, вайфай-соединений... Этот пинг поможет понять где проблема, во внутрисетевой связности или в последней миле.

    Учтите, что проблемы часто бывают комбинированные и каждое сочетание симптомов будет свидетельствовать о раных проблемах.
    Да, тревожным принаком может служить не только пропадание пакетов, но и скачки в длительности их возврата, особенно если такие длительности достигают 500мс и выше. Но и скачки от 3мс до 250мс тоже будут свидетельствовать о каких-то проблемах.

    Запускать пинг на всех компах лучше одновременно и на некоторое время. Например минут на 20. Потом по статистике будет видно сколько где пакетов пропало.

    2. Если критерии наличия проблемы позволяют, то можно попробовать отрубать части сети и смотреть наличие проблемы. Это я в том смысле, что если проблема происходит в среднем раз в пару-тройку часов, то отрубать на многие часы части сети при диагностикем ожет быть неприемлемым.
    Редкеи пробемы дольше отлавливать. Но напоминаю, что критерии можно детализировать, ведь если пакеты у вас пропадат относительно редко, то скачки времени их возврата могут случаться чаще и подсвечивать проблему. Также можно сделать рамер пакета близким к максимальному, это должно тоже в некоторых случаях участить проявление проблемы.
    Иногда не мешает нагрузить сеть комированием по локалке большого файла. В линуксе можнно с помощью утилиты tc послать большой поток рандомных байт на любой сокет..
    3. Плавающие проблемы случаются из-за плохого обжима, перебитого жверью кабеля, перегрызенного UTP в плинтусе, из-за умиращих конденсаторов в блоке питания роутера (БП может не выдавать необходимого при нагрузках тока, но вольтметром такая неисправность не будет различима без нагрузки). Вообще старые (да и не только) роутеры могут страдать поплывшими электролитическими конденсаторами не только в блоках питания.
    Хорошо, когда можно подменить роутер.
    4. ну с четвертым пунктом ничего не пососветуешь, только разделать и тестировать все по отедльности и в разных сочетания и да поможет нам ктулху.

    А для тех, кто дочитал этот опус до конйа - интересная задачка. Что пингуют эти команды, как и почему?
    ping 1.1
    ping 2130706433

    Тех, кто знает, попрошу не спойлерить=)
    Пусть для кого-то будет сюрпризом этот дивный мир=)

    UPD. Простите за адское количество опечаток в тексте. Писал в спешке и с непривычной клавиатуры. Исправлю всё попозже. Не ожидал, что многим ответ придётся по душе. Вроде ж накапитанил как мог.
    Ответ написан
    5 комментариев
  • Как получить ссылку на гугл таблицу?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Эту операция можно произвести только программным способом. Причем, помимо самой формулы можно еще и нажать на кнопку открытия доступа для IMPORTRANGE.

    К сожалению, ваш вопрос недостаточно предметный, чтобы ответить на него более точно.
    Ответ написан
    2 комментария
  • Анимация placeholder?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    Обычный эффект печатной машинки, только примененный к placeholder
    Ответ написан
    2 комментария
  • Как сделать вертикальный отступ между строками в bootstrap?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    самому ток задавать. и при этом не трогай классы бутсрапа. оберни row к примеру во что нибудь и им задай.
    <div class="container">
      <div class="lines">
      <div class="row">
        <div class="col-xs-3">3 колонки</div>
        <div class="col-xs-5 col-xs-offset-1">5 колонок</div>
        <div class="col-xs-2 col-xs-offset-1">2 колонки</div>
      </div>
      </div>
      <div class="lines">
      <div class="row">
        <div class="col-xs-3">3 колонки</div>
        <div class="col-xs-5 col-xs-offset-1">5 колонок</div>
        <div class="col-xs-2 col-xs-offset-1">2 колонки</div>
      </div>
    </div>
    </div>

    .lines {margin-bottom: 30px;}
    Ответ написан
    2 комментария
  • Как понять есть ли в схеме запрограммированное устаревание?

    15432
    @15432
    Системный программист ^_^
    В простой схеме вы вряд ли найдете "слабые места", потому что они в другом месте. А именно, перегрузка светодиодов по току (для большей яркости), отсутствие нормального охлаждения (для уменьшения габаритов и экономии металла), использование самых дешевых светодиодов с низкой цветопередачей и т.д.
    Ответ написан
    2 комментария
  • Как скрыть backend своего сайта?

    @rPman
    В общем случае - никак

    Но можно сделать этот процесс на столько сложным, что смысла в этом уже никакого не будет. С помощью обфускации кода и использовании алгоритмов шифрования данных, передаваемых в браузер (не про https а когда данные, загружаемые браузером и передаваемые в скрипты/данные - зашифрованы). А чтобы конечный скрипт нельзя было вытащить через модификацию браузера (например логировать eval) то можно саму виртуальную машину, исполняющую скрипты, реализовать на js (wasm).

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

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

    p.s. есть еще гомоморфное шифрование, когда есть необходимость совершать какие то операции над данными, которые зашифрованы, без их расшифровки. Особо его применить в данной задаче сложно но бывают случаи когда можно выкрутиться. Если что это решение очень сложное (читай дорогое) в реализации, готовых решений нет (по крайней мере для браузера и javascript) а еще оно потребляет процессорные ресурсы.
    Ответ написан
    1 комментарий
  • JS. Как отфильтровать данный массив?

    @swe3etch
    var result2 = fruits5.filter(item => item < maxW && item > minW);
    Ответ написан
    2 комментария
  • Как вывести ключ рандомно из объекта?

    @AlexeySmk
    const keys = Object.keys(yourObj);
    
    const randomNumber = Math.floor(Math.random() * keys.length);
    const randomKey = keys[randomNumber];
    const randomValue = yourObj[randomKey];
    
    console.log(randomKey, randomValue)
    Ответ написан
    1 комментарий
  • Написать функцию возвращающую cумму элементов массива?

    function sum(arr) {
      let result = 0;
    
      for (let i = (arr.length - 1); i !== 0; i--) {
        if (arr[i] === 0) return result;
        result += Math.abs(arr[i]);
      }
      return result;
    }
    
    console.log(sum([2.1, 3.1, 4.1, 6.1, 7.1, 9.1, 11.1, 0.0, 2.2, 1.4])); // 3.6
    console.log(sum([2.1, 3.1, 4.1, 6.1, 7.1, 9.1, 11.1, 0.0])); // 0
    Ответ написан
    Комментировать
  • Существуют логические элементы электроники в типовых корпусах?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    https://www.155la3.ru/

    А оно вам надо?
    Возьмите плисину и сгенерируйте схему, выйдет дешевле
    Ответ написан