• Как работает электроскоп и электрометр?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    В электроскопе есть стержень и лепестки к нему привязанные. В электрометре есть стержень и стрелка, соединённая с ним.
    При электризации заряд распределяется между всеми частями - стержнем и то что к нему прицеплено. Т.к. заряд одинаковый по знаку - лепестки(или стрелка) начинают отталкиваться от стержня. Больше заряд - больше отталкивание.
    Ответ написан
    Комментировать
  • ImportXML многостраничного списка?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Там страницы вида "spravkaby.com/phones/mts/page N"
    ={
    IMPORTXML("http://spravkaby.com/phones/mts/page/1";"//div[1]/p");
    IMPORTXML("http://spravkaby.com/phones/mts/page/2";"//div[1]/p");
    IMPORTXML("http://spravkaby.com/phones/mts/page/3";"//div[1]/p")
    }

    и т.п.
    Но всё равно это упрётся в размер обрабатываемых данных. Или в количество запросов в сутки. Проще на чём-нибудь другом парсер сделать
    Ответ написан
    Комментировать
  • Как нарисовать луч функцией исходя из двух точек и на луче вычислить пересечение перпендикуляра от третей точки?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) Вычислить уравнение прямой, походящей через точки 1 и 2
    (x − x₁) / (x₂ − x₁) = (y − y₁) / (y₂ − y₁)
    выражаем у через х, получим уравнение
    y = a₁x + b₁
    2) Построить перпендикуляр из точки к прямой из пункта 1)
    (y – y₃) = -1/a₁ * (x - x₃)
    и выразить у через х, получится
    y = a₂x + b₂
    3) Есть уравнения прямых - надо найти пересечение, т.е. решить систему двух линейных уравнений. Тут методов масса - от простых преобразований до матриц. т.к. у нас уравнения в виде y=f(x), то можно сделать так:
    приравниваем уравнения 1 и 2, избавляемся тем самым от y
    вычисляем x
    подставляем найденное x в любое уравнение
    Ответ написан
    1 комментарий
  • Мониторинг ячейки. Как сделать скрипт мониторинга изменения в ячейке?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Смотрите в сторону onEdit(event) - событие изменения ячеек. Вот заготовка кода:
    function onEdit(event) {
    	//Возникает при изменении ячейки
    	var ss = event.source.getActiveSheet();//Текущий лист
      	var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
    	var row = event.range.getRow();      //Номер строки
    	var col = event.range.getColumn();  //Номер столбца
    	var newValue = event.value;            //Новое значение
    	var oldValue = event.oldValue;        //Старое значение
    	
      if (["Лист1","Лист2"].indexOf(ss.getName())==-1) return;	//Указываем на каких листах должен работать скрипт
    	
    	//Что-то делаем...
      };

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

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    .net декомпилируются до исходников. Решил попробовать декомпилировать программу свою с помощью DotPicker, и офигел, когда даже комментарии свои увидел в коде.
    Ответ написан
  • Как обратиться к текущей ячейке?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант

    функция возвращает сумму значений слева и справа от той ячейки, на которой вызвана

    =ДВССЫЛ("R"&СТРОКА()&"C"&(СТОЛБЕЦ()-1);ЛОЖЬ) + ДВССЫЛ("R"&СТРОКА()&"C"&(СТОЛБЕЦ()+1);ЛОЖЬ)
    Ответ написан
    3 комментария
  • Как написать формулу поиска для текста в ячейке с учетом регистра?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Если религия позволяет использовать скрипты, то вот такое будет работать:
    /**
     * Возвращает true, если value содержится в inData как ключ с разделителем delimiter
     *
     * @param {A:A} inData Исходный массив или одиночная строка
     * @param {"key"} value Значение, которое ищется среди слов
     * @param {1} delimiter Разделитель слов. По умолчанию - ","
     * @return Возвращает true, если inData - одиночное значение или аналогичный массив, если inData - диапазон
     * @customfunction
     */
    function isContainText(inData,value,delimiter) {
      var delimiter = delimiter || ",";
      if (inData.map){
        return inData.map(function(el){return isContainText(el,value,delimiter)});
      }else{
        var data = inData.split(delimiter);
        if (!data) return false;
        return data.indexOf(value)!=-1;
      };
    }

    Использование:
    =isContainText(A:A;"Ключ";",")
    Ответ написан
    Комментировать
  • Как сделать диапазон свободных дат в ответе гугл форм?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Используйте проверку данных в ячейке выбора даты/времени. Список формируйте из тех что есть минус те, что заняты. Обновление проверки данных можно повесить на onEdit(event). И ещё будет пара служебных столбцов - все слоты и свободные слоты.
    Ответ написан
  • Как сделать код индивидуальным для каждого пользователя?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Может использовать конечный автомат для отслеживания "состояния" пользователя?
    Ответ написан
  • Как победить гул ШИМ на ESP?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) Уменьшить pwm_step_time;
    2)Попробовать поставить LC фильтр на на выход блока. Конденсатор (Электролит+керамика параллельно) параллельно питанию, а дроссель - последовательно. Проверить все намоточные детали в БП - дроссели и трансформаторы. Промазать лаком, если необходимо.
    Ответ написан
    Комментировать
  • Как растянуть данные?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Сделайте формулой и распространите
    =СЦЕПИТЬ("Текст ";СТРОКА()+начальное_значение-номер_первой_строки)

    начальное_значение - с чего начинается отсчёт
    номер_первой_строки - номер первой строки, где будет формула
    Ответ написан
  • Каким образом потребитель задаёт силу тока для источника?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Если закон Ома не поддаётся, то всегда можно представить аналогию с водой.
    Напряжение - высота столба воды (или давление воды)
    Ток - расход воды в литрах/сек, сколько воды протечет через какой-то участок за 1 секунду
    Сопротивление - то насколько участок тормозит воду. Это может быть связано с сечением трубы, длиной или её состоянием (ржавая, забитая и т.п.)

    Есть источник напряжения (или точнее, ЭДС) - насос, который создаёт постоянный перепад давления (в электричестве - батарейка, или блок питания, который держит напряжение)
    Или источник тока - насос, который держит постоянный расход воды, вне зависимости от сопротивления
    Подключаем нагрузку, которая имеет сопротивление - зависимость расхода воды от давления (в электронике - тока от напряжения). Это называется вольт-амперная характеристика.
    Если возвратиться к первому вопросу - то прибор пропускает через себя столько воды (тока), сколько вообще сможет. Тут будет ограничение или источника тока (насос не может дать столько воды в секунду) или самого прибора (его сопротивление), или соединительных проводов (труб, шлангов).
    На easyelecronics была серия статей по "канализационной электронике", это поможет вникнуть в азы.
    Ответ написан
    Комментировать
  • Как найти значение второго элемента при IFS?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Формат - Условное форматирование
    Применить к диапазону
    $B$1:$B$9
    Правила форматирования
    =СЧЁТЕСЛИ($B$1:$B$9;ИСТИНА)>2
    И красную заливку

    Это позволит отслеживать количество галок. Можно даже несколько раз поставить условное форматирование с разным цветом для разных чисел (или использовать градиент)

    Или другой костыль, который даст поставить галку, но не учтёт её, если до этого есть 2 или более установленных
    D1:F9
    ИСТИНА	=СЧЁТЗ(filter($D$1:$D1;$D$1:$D1=ИСТИНА))<=2	=И(D1;E1)
    ЛОЖЬ	=СЧЁТЗ(filter($D$1:$D2;$D$1:$D2=ИСТИНА))<=2	=И(D2;E2)
    ИСТИНА	=СЧЁТЗ(filter($D$1:$D3;$D$1:$D3=ИСТИНА))<=2	=И(D3;E3)
    ЛОЖЬ	=СЧЁТЗ(filter($D$1:$D4;$D$1:$D4=ИСТИНА))<=2	=И(D4;E4)
    ИСТИНА	=СЧЁТЗ(filter($D$1:$D5;$D$1:$D5=ИСТИНА))<=2	=И(D5;E5)
    ИСТИНА	=СЧЁТЗ(filter($D$1:$D6;$D$1:$D6=ИСТИНА))<=2	=И(D6;E6)
    ИСТИНА	=СЧЁТЗ(filter($D$1:$D7;$D$1:$D7=ИСТИНА))<=2	=И(D7;E7)
    ИСТИНА	=СЧЁТЗ(filter($D$1:$D8;$D$1:$D8=ИСТИНА))<=2	=И(D8;E8)
    ИСТИНА	=СЧЁТЗ(filter($D$1:$D9;$D$1:$D9=ИСТИНА))<=2	=И(D9;E9)


    Третий вариант - отслеживать событие onEdit(event) и разруливать всё скриптом
    Ответ написан
    Комментировать
  • Как разрешить группировку ячеек, которые находятся в общем доступе?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Сделайте доступ не только на просмотр, но и на редактирование. Это поможет.
    Ответ написан
  • Как вставить номер карты в excel?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Если хранится как число - нельзя получить более 10 в 15 степени.
    Нужно хранить как текст и применить шаблон к формату ячеек
    0000" "0000" "0000" "0000
    Ответ написан
    6 комментариев
  • Для Google таблиц есть формула с Arrayformula. Как она работает?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант

    =СУММЕСЛИ(СТРОКА(A1); "<="&СТРОКА(A1); A1:A10)
    =СУММЕСЛИ(СТРОКА(A2); "<="&СТРОКА(A2); A1:A10)
    =СУММЕСЛИ(СТРОКА(A3); "<="&СТРОКА(A3); A1:A10)

    и т.д., результат совершенно неадекватный???

    Тут скорее всего разворачивается так:
    =СУММЕСЛИ(СТРОКА(A1); "<="&СТРОКА(A1:A10); A1:A10) => сумма всех {A1:A10} в строках которых {1} меньшие или равны {СТРОКА(A1:A10)}
    =СУММЕСЛИ(СТРОКА(A2); "<="&СТРОКА(A1:A10); A1:A10) => сумма всех {A1:A10} в строках которых {2} меньшие или равны {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    =СУММЕСЛИ(СТРОКА(A3); "<="&СТРОКА(A1:A10); A1:A10) => сумма всех {10, 20, 30, 40 ...} в строках которых {3} меньшие или равны {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    ...
    Ответ написан
    Комментировать
  • Как произвести разграничение доступа в гугл таблицах?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Если данные только на просмотр - можно опубликовать лист как документ, притом редактировать будет нельзя, и доступа к остальным частям документа не будет.
    Файл - Публикация в интренете
    Ответ написан
    Комментировать
  • Как посчитать бесконечную сумму?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) sum=0; n=0;
    2) посчитать S(n)
    3) если S(n)>ε то 4) иначе выход
    4) sum+=S(n); n++;
    5)Перейти на 2)
    Ответ написан
    2 комментария
  • Как в Spreadsheet использовать название вкладки из ячейки в формуле?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Формируйте адрес ячейки через СЦЕПИТЬ или & и скармливайте это функции ДВССЫЛ()
    =ДВССЫЛ("Лист1!"&"A1")
    Ответ написан
    1 комментарий
  • Как максимально корректно определить кодировку текстового файла (из всех существующих)?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    На c# пользуюсь такой конструкцией, найденной в сети:
    public static Encoding DetectFileEncoding(string fileName)
            {
                byte[] buf = new byte[12000];
                int length;
                using (FileStream fstream = File.OpenRead(fileName))
                {
                    length = fstream.Read(buf, 0, buf.Length);
                }
    
                Ude.CharsetDetector d = new Ude.CharsetDetector();
                d.Feed(buf, 0, length);
                d.DataEnd();
                return Encoding.GetEncoding(d.Charset);
            }

    Сама библиотека
    Ответ написан
    1 комментарий