• Превышение скорости света?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Свет просто существует. Он как веревка, протянутая сквозь пространство-время из одной 4-мерной точки в другую. Наше 3-мерное пространство движется в 4-мерном пространстве в направлении стрелы времени, и мы, пересекая 4-мерное пространство, видим проекцию 4-мерного луча света на наш 3-мерный мир в виде 3-мерного фотона.
    Потому у фотона и нет массы, что он - как тень твоей руки на листе бумаги, которая тоже не имеет массы.
    При этом все эффекты от света на наш мир движутся в 4-мерном пространстве вместе с нами и в принципе не могут обогнать мир, они - его часть. Поэтому ничто в нашем мире не может двигаться вдоль времени быстрее нашего мира, так как всё - часть нашего мира.
    Ответ написан
    9 комментариев
  • Транзисторный ключ вместо реле на 24в?

    @VT100
    Embedded hardware & software.
    Схемы на 12 и на 24 - отличаются только номиналами.
    Полевой транзистор на такое напряжение - да, будет лучше.
    Вопрос не полон без указания:
    1. что за нагрузка (влияет на схему защиты);
    2. к какому выводу источника питания подключена нагрузка (влияет на тип транзистора и влияет на схему в целом);
    3. какой сигнал управления (относительно какого вывода источника питания и какой размах сигнала - влияет на схему);
    4. в каком радиомагазине закупаетесь или какие детали есть в наличии или в разборе.
    Ответ написан
    2 комментария
  • Как привести формат ФИО к одному значению?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Если это задача объемная и/или регулярная, попробуйте NLP-фреймворк natasha. Я его использовал, он хорошо распознает бОльшую часть фамилий, имен и отчеств. Правда, сам фреймворк очень развесистый и обращение с ним довольно непростое. Но работает неплохо.
    Ответ написан
    Комментировать
  • Как в гугл таблицах сделать последовательность ссылок?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    ={
        "Наши ссылки"
        ;ARRAYFORMULA(
            "https://....product/mod"
            &SEQUENCE(100)
            &"/"
        )
    }
    Ответ написан
    1 комментарий
  • Как рассчитать пройденное расстояние, которое тело пройдёт при разгоне с 0 до 100 км/час?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для с̶ф̶е̶р̶и̶ч̶е̶с̶к̶о̶г̶о̶ ̶к̶о̶н̶я̶ ̶в̶ ̶в̶а̶к̶у̶у̶м̶е простейшего случая тут уже привели вычисления.
    В реальности мощность двигателя зависит от оборотов, обороты связаны со скоростью и переключением передач, лобовое сопротивление растёт пропорционально квадрату скорости. В результате график ускорений выглядит как-то так:
    image203.png
    Ответ написан
    2 комментария
  • Как получить самую давнюю дату, хранящуюся в массиве?

    0xD34F
    @0xD34F Куратор тега JavaScript
    arr.map(n => n.date).sort()[0]
    
    // или
    
    arr.reduce((min, n) => min < n.date ? min : n.date)
    
    // или
    
    new Date(Math.min(...arr.map(n => new Date(n.date)))).toISOString()
    Ответ написан
    Комментировать
  • Как получить самую давнюю дату, хранящуюся в массиве?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    new Date( // чтобы конечный результат был в виде человеко читаемой строки
     Math.min.apply(  // применим функцию поиска минимального элемента в массиве с помощью apply
       null, // контекст не нужен
       arr.map(i => new Date(i.date)) // в качестве массива, среди которого ищем минимум - массив дат, преобразованных в Date
      )
    ).toISOString() // собственно, преобразовываем в человеко понятную строку.


    Ну или нагляднее:
    const dates = arr.map(i => new Date(i.date))
    const minDate = Math.min.apply(null, dates)
    const minDateString = new Date(minDate).toISOString()
    Ответ написан
    Комментировать
  • Как в Google Sheets вывести курс валюты по конкретной дате?

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    У вас массив 2×2. Нужно получить значение из определённой позиции — для этого есть функция INDEX. Вуаля!
    =INDEX(GoogleFinance("Currency:USDRUB";"price";"20.10.2022");2;2)
    Ответ написан
    5 комментариев
  • Как эффективно получить данные со страницы из элемента script?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Google Apps Script не подготовлен для Cheerio.

    Следует избегать загрузки этого модуля.

    Пример без него.

    const url = 'https://www.pdfah.com/product/4944/hylo-gel-lubricating-eyes-drops-%E0%B8%99%E0%B9%89%E0%B8%B3%E0%B8%95%E0%B8%B2%E0%B9%80%E0%B8%97%E0%B8%B5%E0%B8%A2%E0%B8%A1%E0%B8%8A%E0%B8%99%E0%B8%B4%E0%B8%94%E0%B9%80%E0%B8%88%E0%B8%A5-10ml-300%E0%B8%AB%E0%B8%A2%E0%B8%94';
    
    function getData() {
      const data = UrlFetchApp.fetch(url);
      const content = data.getContentText();
      const exec = /application\/ld\+json">(.*?)<\/script>/gi
        .exec(content.replace(/[\r\n]+/g, ' '));
      if (exec) {
        const product = JSON.parse(exec[1]);
        console.log(product);
      }
    }


    В Таблице https://docs.google.com/spreadsheets/d/1DQPeBVHMeQ...
    Ответ написан
    Комментировать
  • Как отследить изменения?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Одним из основных способов является подписка на триггер изменений в Таблице, который реализуется в Google Apps Script.

    Вы можете построить свое решение на основе примера https://qna.habr.com/q/1207030#answer_2234340
    Ответ написан
    Комментировать
  • Как передать параметры из функции в QUERY?

    @remaikee Автор вопроса
    Огромное всем спасибо за присланные ответы! Они натолкнули меня на мысль и задачка была решена!

    Собственно хотел заставить работать встроенную гугловскую функцию QUERY с наименованиями полей в передаваемой таблице. Решение напрашивалось самое простое - заменить в запросе наименования полей на соответствующие наименования Col1, Col2 и т.д. Надо было только найти красивое решение как перехватывать запрос и на лету изменять его:)

    Ниже найденное мною решение. Возможно кто-то решит его доработать - присылайте свои варианты :)

    Решение:

    В Google.Docs есть такая штука, как именованные функции: https://support.google.com/docs/answer/12504534

    В итоге я через именованные функции сделал свою:
    M_QUERY(диапазон, запрос)
    которую описал как:
    =QUERY({диапазон}; Q(диапазон; запрос))

    а в Apps Script описал функцию Q, которая и обрабатывает передаваемые запросы:
    function Q(table, query){
      console.log(query);
      if (table[0].map){
        table = table[0];
        for(var key in table){
          query = query.replaceAll('`'+table[key]+'`', 'Col'+(1+Number(key)));
        }
      }
      return query;
    }


    Собственно все подготовительные операции проведены и можно в таблицах гугл использовать созданную функцию M_QUERY

    Берём таблицу вида:
    6356da09f2f86969780191.png
    где первая строка содержит наименования полей

    и на требуемом листе пишем формулу:
    =M_QUERY(1:1000; "select `ID` where `ASIGNED_BY` like '%Иванов%'")
    "1:1000" - заменяем на диапазон, содержащий исходные данные :)

    Профит!
    Ответ написан
    Комментировать
  • Как передать параметры из функции в QUERY?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Формулы не поддерживают распределение аргументов, т.н. spread arguments. Даже если вы переопределите именованную функцию, то ничего не изменится, т.к. нет метода.

    Единственное, что можно сделать - обращаться к результатам функции по порядковому номеру в массиве

    function Q(table, query, i) {
      return [table, query][i];
    }


    =QUERY(
      Q({1\2\3\4;5\6\7\8};"select Col1, Col2";0);
      Q({1\2\3\4;5\6\7\8};"select Col1, Col2";1);
      0
    )


    635652c9499e5439642174.png

    Пример в Таблице https://docs.google.com/spreadsheets/d/1Tb-b5ZTW9L...

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

    3r1k
    @3r1k
    the quieter you become, the more you hear
    Используй Process Monitor, особое внимание удели всем процессам svchost.exe
    Самый частый случай - это "svchost.exe -k secsvcs " :
    Модуль ресурсов Защитника Windows
    Ответ написан
    Комментировать
  • Как реализовать 2d физику?

    @MarkusD
    все время мелю чепуху :)
    Нужную литературу ты сможешь найти здесь.
    Твой раздел - девятый.
    Но чтобы использовать знания для разработки физики, тебе потребуются знания второго, третьего, четвертого и пятого разделов.
    А если хочешь чтобы физика была быстрой, то потребуются еще и знания седьмого раздела.

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

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

    ForestAndGarden
    @ForestAndGarden
    Совершенствовать среду обитания
    Используйте функцию ВПР (на английском — VLOOKUP).
    Ответ написан
    1 комментарий
  • Можно как-то исправить автоперевод от Google?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Где то в подвале добавляете вот такой скрипт

    Ответ написан
    1 комментарий
  • Как сделать анимацию "водных разводов"?

    mizutsune
    @mizutsune
    Frontend Developer


    Ещё 7 вариантов анимации








    Ответ написан
    Комментировать
  • Зачем SSD неразмеченная область?

    @Crazypill
    Современные микросхемы флэш-памяти хранят 2(MLC), 3(TLC) или 4(QLC) бита информации в 1 ячейке. Чем большая плотность хранения, тем меньшая скорость записи. Поэтому большинство современных SSD умеют при записи использовать незадействованные ячейки в режиме SLC-кэша(по 1 биту в ячейку), то есть записывать быстро но в 2-4 раза менее плотно, до исчерпания свободных ячеек. После исчерпания свободных ячеек контроллер переходит в режим плотной но медленной записи. Если вы оставляете X Гбайт неразмеченных, то при записи у вас гарантированно быстро будут записываться X/2(MLC), X/3(TLC) или X/4(QLC) Гбайт.
    Ответ написан
    2 комментария
  • Как при создании строки удалять ненужный символ в ячейке заданного столбца?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Если при вводе руками, то можно использовать такой код

    const isFormula_ = value => String(value).charAt(0) === '=';
    const editValue_ = value => isFormula_(value) ? String(value).substring(1) : value;
    
    function onEdit(e) {
      const sheet = e.range.getSheet();
      if (
        sheet.getName() === 'Пример' && 
        e.range.getRow() > 1 && 
        e.range.getColumn() === 8 && 
        isFormula_(e.value)) {
        e.range.setValue(editValue_(e.value));
      }
    }


    Пример в Таблице https://docs.google.com/spreadsheets/d/1qe4gHivzlO...
    Ответ написан
    1 комментарий
  • Что означают эти формулы?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    "E" (это вообще-то сигма из греческого алфавита) - знак суммы. выражение справа надо просуммировать, подставив вместо k все числа от 3 до n. П - это знак произведения. Выражение справа надо перемножить для всех указанных значений i.

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

    Ваше решение в вопросе почти правильное. Проблема только в том, что вам надо подсчитать что-то вроде c1*a1*a2*a3 + c2*b1*b2*b3. А вы используете одну и ту же переменную для подсчета каждого слагаемого и общей суммы. У вас получается что-то вроде (c1*a1*a2*a3+c2)*b1*b2*b3
    Ответ написан
    2 комментария