• Как сделать функцию RANDBETWEEN срабатываемой по дате?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Формула, для реализации этого процесса потребует итерационных вычислений и очень сложную формулу.

    Попробуйте использовать триггер для функции generateValue:

    function generateValue() {
      var spreadsheet = SpreadsheetApp.getActive();
      var from = 1;
      var to = spreadsheet.getRange('Sheet1!C5').getValue();
      var rand = randBetween_(from, to);
      spreadsheet.getRange('Sheet1!D5').setValue(rand);
    }
    
    
    function randBetween_(from, to){
      return Math.floor(Math.random()*(to - from + 1) + from);
    }


    Оригинальное решение содержит подобную задачу, только первое значение from для randBetween_ равно 1, а второе to берется из Таблицы. Триггер настроен таким образом, что данные в ячейке D5 обновляются периодически.
    Ответ написан
    Комментировать
  • Как сделать, чтобы в ячейке первая буква была Заглавной?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Нужно добавить следующий код в проект скриптов Таблицы

    /**
     *
     * @param {GoogleAppsScript.Events.SheetsOnEdit} e
     */
    function onEdit(e) {
      const allowRanges = [
        { sheetName: 'Заглавная буква', cells: ['B2', 'B3', 'B4'] },
        { sheetName: 'Стартовая страница', cells: ['B2', 'C2', 'D2'] },
      ]; // Список
      const sheetNames = allowRanges.map(r => r.sheetName);
    
      if (e && e.range) {
        const sheet = e.range.getSheet();
        if (
          sheetNames.indexOf(sheet.getName()) > -1 &&
          allowRanges.find(r => r.sheetName === sheet.getName()).cells.indexOf(e.range.getA1Notation()) > -1
        ) {
          const value = '' + e.range.getValue();
          e.range.setValue(value.slice(0, 1).toLocaleUpperCase() + value.slice(1).toLocaleLowerCase());
        }
      }
    }


    Чтобы программа реагировала правильно, нужно настраивать строку

    const allowRanges = [
    { sheetName: 'Заглавная буква', cells: ['B2', 'B3', 'B4'] },
    { sheetName: 'Стартовая страница', cells: ['B2', 'C2', 'D2'] },
    ]; // Список

    на все ячейки, где вы собираетесь отлавливать эти изменения

    60f514d1c79fe510480422.gif

    Пример в Таблице https://docs.google.com/spreadsheets/d/19bQjuZpRaE...

    Не работает для группы ячеек
    Ответ написан
  • Как вызвать метод без вызова конструктора?

    @infinityfreenom
    Ответ написан
    Комментировать
  • Что делает эта команда: gcc -I my_dts -E -nostdinc -undef -D__DTS__ -x assembler-with-cpp -o system.dts system-top.dts?

    @res2001
    Developer, ex-admin
    my_dts - подкаталог в текущем каталоге, там gcc будет искать дополнительные файлы, которые используются в директиве #include, компилируемого файла, т.к. my_dts это параметр ключа -I. Если такого каталога нет - gcc никак об этом не сообщит, но возможно будут какие-то ошибки при сборке.
    Опция -E заставляет прервать компиляцию после обработки препроцессором.
    Т.е. в данном случае просто используют препроцессор Си для файлов dts. DTS - device treee source. В DTS файлах описывают железо на котором загружается ОС. Они используются, например, в u-boot, в ядре линукс и т.п.
    Выходной файл задается опцией -o.
    Ответ написан
    Комментировать
  • Почему массив не изменяется через цикл for..of?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Не меняется, потому, что в JS примитивные типы (число, строка) передаются «по значению». Внутри цикла оказывается копия значения, никак не связанная с оригиналом. Поменять это значение в цикле — оно не изменяется в источнике.

    Другое дело объекты – они передаются «по ссылке», и их содержание можно менять:
    let a = [{v: 1}, {v: 2}, {v: 3}];
    for (let obj of a) {
      obj.v += 1;
    }
    a // [{"v":2},{"v":3},{"v":4}]

    Подробнее про Копирование объектов и ссылки
    Ответ написан
    Комментировать
  • Как читать документацию по node.js?

    lastuniverse
    @lastuniverse
    Всегда вокруг да около IT тем
    на официальномй сайте, проматываю чуть ниже и вижу

    fs.writeFile(file, data[, options], callback)#
    History:
    • file <string> | <Buffer> | <URL> | <integer> filename or file descriptor
    • data
      <string> | <Buffer> | <TypedArray> | <DataView> | <Object>

    • options <Object> | <string>
      • encoding <string> | <null> Default: 'utf8'
      • mode <integer> Default: 0o666
      • flag <string> See support of file system flags. Default: 'w'.
      • signal <AbortSignal> allows aborting an in-progress writeFile

    • callback <Function>
      • err <Error> | <AggregateError>



    When file is a filename, asynchronously writes data to the file, replacing the file if it already exists. data can be a string or a buffer.

    When file is a file descriptor, the behavior is similar to calling fs.write() directly (which is recommended). See the notes below on using a file descriptor.

    The encoding option is ignored if data is a buffer.

    If data is a plain object, it must have an own (not inherited) toString function property.
    ...


    откуда следует что:
    первый параметр - это имя файла который нужно создать,
    второй параметр - это данные которые нужно записать,
    третий (необязательный) - это объект с опциями
    а четвертый (или третий если предыдущий параметр не был указан) - это коллбэк

    ЗЫ: уважаемый ТС, я понимаю что вопрос скорее всего был задан из-за вашей невнимательности, но тем не менее ответ вы получили, отметьте его решением)))

    Вот вам способ быстро найти информацию на странице:
    - открыв нужную страницу с большим объемом текста, перемотайте страницу в начала (до оглавления) и затем нажмите комбинацию кнопок CTRL+F (поиск по тексту страницы) и в появившемся окошке вбивайте искомый текст (в данном случае fs.write). После этого нужные пункты оглавления подсветятся желтым и вы легко найдете нужный.
    Ответ написан
    12 комментариев
  • В чем отличие Tc, Ta в datasheets?

    @VT100
    Embedded hardware & software.
    Вероятно, под Tc понимается температура кристалла. А под Ta - окружающей среды (с учётом рекомендованных условий монтажа - на стандартном стеклотекстолите с толщиной меди 35 мкм и её площадью 1 кв. дюйм).
    Конкретику-бы.
    Ответ написан
    2 комментария
  • Можно ли в гугл форме создать блок вопросов для записи второго ответа одной отправкой формы?

    oshliaer
    @oshliaer
    Google Products Expert
    Я бы сгенерировал ссылку на Форму для каждого ученика индивидуально, т.е. т.о. чтобы постоянные данные как ФИО и др были бы уже заполнены. Но тут стоит вопрос, существует ли этот список данных для предзаполнения.
    Ответ написан
    Комментировать
  • Вирус генерирует htaccess и заражает сайт на wordpress. Как исправить?

    Zettabyte
    @Zettabyte
    Проф. восстановление данных ▪ Вопрос? См. профиль
    генерирует файлы htaccess во всех папках

    Удалить их можно через SSH, командой ниже, только путь на свой поправьте и убедитесь, что нужный(-е) htaccess(-ы) не снесёте:
    find /home/.../papka_saita -type f -name ".htaccess" -delete

    Вот расшифровка обфусцированного кода, изучите, возможно, поможет разобраться: https://pastebin.com/C4dk2WAX

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

    Fzero0
    @Fzero0
    Вечный студент
    Можно через создание своей формулы например
    function COUNTUNIQWORDS(cell) {
     var result = []
     var words = String(cell).split(" ");
     var wordsCount = words.reduce(function (acc, w) {
      if(acc[w]) {
        acc[w] += 1
      } else {
        acc[w] = 1;
      }
      return acc;
    }, {});
    for (var w in wordsCount) result.push('Cлово "'+ w +'" встречается '+ wordsCount[w] +  ' раз');
    return result
    }

    6108ef31e255c656419246.png
    Ответ написан
    1 комментарий
  • Можно ли синхронизировать на комп расшаренную для меня папку на Гугл Диске?

    oshliaer
    @oshliaer
    Google Products Expert
    rclone вам в руки. Возможна синхронизация в одну сторону.

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

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Я большой фанат Григорий Боев, но мне показалось, что не все так будет просто. Да, алгоритм менять не стоит, но вот суть некоторых формул можно упростить. Например, разнос цифр по парам

    =REGEXEXTRACT("" & B8;"(\d\d)(\d\d)(\d\d)(\d\d)")

    60f50b9857f5b905414802.png

    или сравнение с "22"

    =IF(--C8>22;REGEXEXTRACT(C8;"(\d)(\d)"); C8)

    60f50bf3b08c5236370326.png

    Это более уместный вариант. Нужно следить за типами данных. Обычно там строки, которые часто Таблица "хочет" автоматически сделать цифрами.

    Итоговый подсчет

    =INDEX(SORTN(TRANSPOSE({
      IF({B19:L19\B28:L28}="";"";--{B19:L19\B28:L28});
      TRIM(QUERY(
        IF("" & TRANSPOSE({B19:L19\B28:L28})="" & {B19:L19\B28:L28};IF({B19:L19\B28:L28}="";"";--{B19:L19\B28:L28}););
        ;
        9^9))
    });9^9;2;1;1);;2)


    60f50d09a09ec782340420.png

    Пример в Таблице https://docs.google.com/spreadsheets/d/19bQjuZpRaE...
    Ответ написан
    9 комментариев
  • Как сократить код?

    Fzero0
    @Fzero0
    Вечный студент
    Как вариант что то такое
    var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var counter = 6;
    var logics = {
        "F10": "=IFERROR(VLOOKUP(B10;'Эта неделя'!$B$3:$E$120;3;FALSE);0)",
        "G10": "=IFERROR(VLOOKUP(B10;'Эта неделя'!$B$3:$E$120;4;FALSE);0)",
        "H10": "=IF(C10>=10;F10-70;(F10+G10)-70)+J10",
        "I10": "=H10+J10"
    }
    
    for (var key in logics) {
      formulaPaste (list, counter, key, logics[key]);
      counter++;
    }
    
    function formulaPaste (list, i, cell, formula){  
      list.getRange(cell).setFormula(formula);
      var row = list.getLastRow();
      var range = list.getRange(10, i, row-9);
      list.getRange(cell).copyTo(range);
    }
    Ответ написан
    5 комментариев
  • Какую версию WinPE Сергея стрельца выбрать?

    @nehrung
    Не забывайте кликать кнопку "Отметить решением"!
    Для ваших целей прекрасно подойдёт сборка MultiBoot, которую я люблю и много лет применяю.
    Чем же она хороша? Во-первых, там имеется аж 4 разных Win-PE - на базе Windows Server 2003, WinXP, Win7 и Win8.1 (выбор в стартовом меню). Не подходит одна - запускаем другую, какая-нибудь стартует в любом случае. Во-вторых, на борту присутствует пакет утилит 2k10, а это несколько сотен утилит на все возможные случаи компьютерной жизни. В-третьих, эта сборка существует в нескольких наборах - от 4-гигового LiveDVD до 16-гигового LiveUSB (у последнего на борту присутствуют чистые дистрибутивы WinXP, Win7 и Win8.1 всех версий по классу пользователя и по разрядности). В-четвёртых, некоторые утилиты (например, акронисовские DD, TI, тесты памяти и дисков) доступны вне WinPE, прямо из стартового меню.
    Если ограничиться только компами, диски которых размечены в MBR, то лучше этой сборки ничего не придумаешь. Но вот для новых компов, которые стараниями производителей перестали понимать MBR и требуют только UEFI/GPT, придётся искать что-то более современное. Я искал, но равного по удобству найти не удалось, все найденные сильно проще.
    Ответ написан
    Комментировать
  • Существуют ли транзисторные выпрямители.?

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

    @pfg21
    ex-турист
    Стоит добавить про схему "идеальный диод".
    Когда параллельно с диодом ставят МОП-транзистор и включают его при протекании прямого тока.
    Сопротивление открытого МОП-транзистора может составлять десятые доли ома, что гораздо ниже чем падение напряжения на диоде Шотки (примерно 0,2в).
    это же свойство используется в уже упомянутых синхронных выпрямителях.
    28031_screenshot%202019-01-16%20005.png
    Ответ написан
    Комментировать
  • Каковы бест практикс структуры каталогов и файлов программы в Windows?

    @res2001
    Developer, ex-admin
    Например тут: https://en.wikipedia.org/wiki/Directory_structure
    Встречал похожий более подробный документ где-то на сайте микрософта, но сейчас не нашел.
    Если кратко:
    1.программу ставить в "Program Files" в соответствии с платформой. Внутренняя структура исполняемых файлов и библиотек - на ваше усмотрение. Если вы используете кучу динамических библиотек, то есть смысл разнести их по подкаталогам. Если у вам только небольшая кучка - могут лежать в одном каталоге. Это на самом деле не важно и никому не интересно.
    2.Общие настройки программы, которые распространяются на всех пользователей: в реестр в HKLM и/или в ProgramData.
    3.Пользовательские настройки программы: в реестр в HKCU и/или в AppData.
    4.Пользовательские временные файлы: в %TEMP%
    5.Файлы проектов или сохранения: в %USERPROFILE%\Documents
    Ответ написан
    2 комментария
  • Можно ли запретить монитору заряжать macbook через type-c?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    поэксперементируйте
    https://support.apple.com/ru-ru/HT212049
    Ответ написан
    Комментировать
  • Как вывести значения из массива строк кроме указанных в другом массиве строк в Google Sheets?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Попробуйте

    =FILTER('Лист1'!F:F;ISNA(MATCH('Лист1'!F:F;'Лист1'!K:K;0)))


    Дополнительные примеры https://docs.google.com/spreadsheets/d/17mpcNilHA4...
    Ответ написан
    1 комментарий