• С чего начать системному администратору в школе?

    @Drno
    1. - беги оттуда... работы дохера, денег нифига
    А по теме -

    надо создать "карту" сети, где будут ПК которым нужен доступ, спланировать прокладку сети.
    далее можно поделить участки на "квадраты", чтобы приводить туда 1 кабель и ставить свитч, а не вести кучу проводов до каждого ПК
    после этих подсчетов возвращайтесь - будем подбирать оборудование
    Ответ написан
    10 комментариев
  • Как массово скачать файлы по списку?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Т.е. не получится это сделать с помощью wget в командной строке, т.к. куков не будет

    Кто сказал?
    https://qna.habr.com/q/444245
    wget --no-check-certificate --quiet \
      --method GET \
      --timeout=0 \
      --header 'Cookie: PHPSESSID=ocqfdbv0kv6qs5jv4at6uk36pf' \
       'https://test-mis.ru/api/****************************************'
    Ответ написан
    Комментировать
  • Как элементы массива сделать значениями объекта?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Мое решение:

    let arr = ['a', 'b', 'c', 'd', 'e'];
    let obj = {};
    for (let i = 0; i <= arr.length; i++) {
    obj[i + 1] += arr;
    }
    console.log(obj);


    Ну Вы были относительно близко.
    1. Зачем Вы делаете += ? Вы же не плюсуете к чему то, а назначаете значение. То есть
    - obj[i + 1] += arr;
    + obj[i + 1] = arr;

    2. Зачем Вы прибавляете весь arr, когда Вам нужен элемент массива, а не весь массив. То есть:
    - obj[i + 1] = arr;
    + obj[i + 1] = arr[i];

    3. Цикл выполнится 6 раз, так как у Вас от нуля до длины массива - 5. То есть, 0,1,2,3,4,5. Вместо этого можно начать с 1, и в итоге тогда:
    let arr = ['a', 'b', 'c', 'd', 'e'];
    let obj = {};
    for (let i = 1; i <= arr.length; i++) {
    obj[i] = arr[i-1];
    }
    console.log(obj);


    Ну и как уже сказали выше, можно через reduce. Тогда будет значительно короче:
    let arr = ['a', 'b', 'c', 'd', 'e'];
    let obj = arr.reduce((a, c, i) =>  (a[i+1] = c, a), {});
    console.log(obj);
    Ответ написан
    Комментировать
  • Как элементы массива сделать значениями объекта?

    @zkrvndm
    Софт для автоматизации
    Используйте лучше reduce:
    let arr = ['a', 'b', 'c', 'd', 'e'];
    let obj = arr.reduce((a, v, i) => { a[i+1] = v; return a; }, {});
    
    console.log(obj);

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

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Вопросы задать можно, а вот обучения и длительной адаптации ждать не стоит. Стоит иметь ввиду, что новичкам сейчас очень сложно пробраться в профессию и за каждую возможность получить реальный опыт стоит держаться.
    Ответ написан
    Комментировать
  • Откликнулся на вакансию в которой набирали народ на стажировку, взяли без собеса и сразу кинули на реальный проект без наставника, что делать?

    vfreelancer
    @vfreelancer
    php
    - ненормально
    - радуйтесь
    - наймите втихоря ментора и платите ему часть зарплаты за консультации
    Ответ написан
    Комментировать
  • Как спарсить товары с Леруа Мерлен через гугл-таблицы?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Никак. Через IMPORTXML вы можете получить только название, артикул и количество звезд.

    Для всего остального необходимо
    • либо использовать внешний сервис для парсинга подобных сайтов
    • либо попытаться найти вызовы к API (как уже сказано тут https://qna.habr.com/answer?answer_id=2224032#answ...) и пробовать использовать их на стороне скриптов
    Ответ написан
    Комментировать
  • Как сделать скриптом в Google Таблицах автоматическое добавление строки выше 2-й при заполнении пустой 2-й строки?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Можно использовать такой скрипт

    /**
     * @param {{
     *   range: globalThis.SpreadsheetApp.Range
     * }} e
     */
    function addRow(e) {
      const sheet = e.range.getSheet();
      if (sheet.getName() !== 'Лист1') return;
      if (e.range.getRow() === 2) {
        if (sheet.getRange('2:2').getValues()[0].join('').length)
          sheet.insertRowBefore(2);
      }
    }


    Необходимо подключить функцию addRow к триггеру изменения Таблицы

    Пример в Таблице https://docs.google.com/spreadsheets/d/1_7n_pbKZAb...
    Ответ написан
    4 комментария
  • Как подставить данные в существующий список с показателями?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Вероятно,

    630fa0ace617e704299007.png

    =ARRAYFORMULA(VLOOKUP(
      REGEXREPLACE(A:A;"/";"");
      'таблица с параметрами'!A:D;
      {2\3\4};
    ))
    Ответ написан
    1 комментарий
  • Как найти исполняемый js код конкретного блока?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Что значит "конкретной обёртки?
    Обработчик какого-то элемента?
    Открывайте инструменты разработчика, тыкайте селектором в элемент.
    И на той панели где отображаются стили элемента есть вкладка "Event Listeners" ну или том языке, какой у Вас выбран. Там можно посмотреть все обработчики данного элемента.

    Если что-то другое, то можно открыть вкладку Sources, сбоку в "проводнике" найти js файлы и искать код там.
    Ответ написан
    Комментировать
  • Как применить форматирование с условием "если значение отличается от ячейки выше"?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Пример в Таблице https://docs.google.com/spreadsheets/d/14oY7SS0Eva...

    Это можно через пользовательскую формулу. Очень важно указать смещение - начинать со второй строки, а сравнивать с первой.

    6306465092e1f307498279.png"
    Ответ написан
    2 комментария
  • Почему не отображается пользовательское меню на мобильном устройстве?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Пользовательское меню доступно только для интерфейса браузерной версии Таблиц.

    Новые дополнения на Card-based еще не доступны для мобильной версии. Эта технология реализована только в Gmail.
    Ответ написан
    Комментировать
  • Что важно в процессоре больше для программирования, тактовая частота или количество ядер?

    1. Практически на любом современном десктопном CPU достаточно ядер для тестирования и отладки разного рода параллельных алгоритмов. Поэтому предлагать взять "побольше" смысла не вижу. Меньше двух вы не найдёте, больше восьми не так уж и нужно.
    2. Тактовой частоты любого из современных CPU дороже 15 тыщ достаточно для комфортной разработки, если речь идёт об IDE, редакторе, отладке.
    3. Обе указанные характеристики в целом имеют очень небольшое значение. Архитектура, рыночный сегмент и поколение процессора (или проще - год выпуска) куда важнее, чем тактовая частота или количество ядер.
    4. Production-железо - совсем другое дело. Есть задачи которые плохо параллелятся, есть - которые хорошо. Сервера последние лет 10 идут на повышение количества ядер и повышение плотности. Но вам-то зачем об этом беспокоиться?
    5. Мне кажется, вы ещё не уверены, чем вообще будете заниматься, но железо хотите купить сейчас под какие-то непонятные "сферы разработки". Лучше купите чего-нибудь послабее - чтобы не забывать о производительности того, что вы пишете.

    А вот оперативной памяти много не бывает, эт да. Пихайте сколько влезет. Диск тоже можно побыстрее - нередко у разработчика различные процессы (сборка, установка зависимостей и т.д.) именно в диск и упираются.
    Ответ написан с предположением что речь идёт о персональной ЭВМ для разработчика.
    Ответ написан
    5 комментариев
  • Что важно в процессоре больше для программирования, тактовая частота или количество ядер?

    @rPman
    Последние 10 -15лет частота не является определяющим параметром (ее потолок уже достигнут). Важными параметрами являются размер кеша процессора и количество ядер (последнее не сильно актуально для разработчика, за исключением c++ разработчиков, которым приходится пересобирать такие крупные проекты как например chromium). К сожалению, так как обычно кеши процессора делятся на ядра, чем больше этих ядер тем меньшее значение имеет очередное увеличение его размера. Так для современных процессоров кеш меньше 16мб..32мб - уже маленький.

    Смотри на синтетические тесты 'single thread', именно этот параметр определяет фактическую скорость работы на рядовых задачах, а многопоточный тест покажет только возможности процессора для очень узкого списка задач, типа числодробилки.

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

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

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    кафедра радиофизики. ну извиняйте нагрузят вас там достойно, но жаловаться не будете
    Ответ написан
    Комментировать
  • Как можно реализовать такую 3Д анимацию?

    RAX7
    @RAX7

    Держи, сделал небольшой набросок.
    а если они касаются друг друга, они приобретают цвет другого элемента

    Эту часть уже лень делать. Хотя это не сложно, нужно только добавить еще две таких же кляксы и посчитать расстояние между их центрами, что бы понять пересекаются ли они и нужно ли у них менять цвет.
    Ответ написан
    1 комментарий
  • Как реализовать такое сравнение строк, JS?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не надо никаких библиотек. Всё есть в штатных функциях.
    'е'.localeCompare('ё', 'ru', { sensitivity: 'base' })
    // 0
    Ответ написан
    2 комментария
  • Метод map. Как создать массив объектов?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Можете. Напишите функцию, которая из исходного объекта делает нужный вам, и используйте эту функцию в map.
    Ответ написан
    Комментировать
  • Метод map. Как создать массив объектов?

    @historydev Куратор тега JavaScript
    Острая аллергия на анимешников
    const presidents = [
        { first: 'George', last: 'Washington', born: 1732, died: 1799 },
        { first: 'John', last: 'Adams', born: 1735, died: 1826 },
        { first: 'Ronald', last: 'Reagan', born: 1911, died: 2004 },
    ];
    
    let presidentsMap = presidents.map(item => ({first: item.first, last: item.last}));
    
    console.log(presidentsMap)
    Ответ написан
    Комментировать
  • Как на python в гугл таблицах отследить создание новой строки?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Вы должны определиться, что значит "на python"?
    1. событие происходит и должно вызвать ваш сервер (веб-хук)
    2. ваша программа (без причины) должна отреагировать на отправку Формы


    Веб-хук
    1. Поднимите сервер
    2. Определите эндпоинт для вызова
    3. Создайте простую функцию Google Apps Script, которая при отправке Формы будет дергать этот эндпоинт
    4. Установите в проекте скрипта триггер на отправку Формы для этой функции


    Скрипт

    function onFormSubmit(e){
      UrlFetchApp.fetch(endpoint, {
        payload: JSON.stringify(e)
      });
    }


    В данном случае вообще по барабану как вы со своим python будете парсить полученный объект. Данных там будет предостаточно.

    Безпричинная программа

    Очевидно, что работа без причины - признак ... неработающей программы.

    Поэтому, вы должны периодически брать весь массив данных из Таблицы, благо Форма оставляет отметку времени, и выбирать только те строки снизу, которые не попали в прошлую проверку. Т.е. вам нужно будет где-то отдельно хранить дату последней проверки. Лучше всего, если это будет дата последней полученной строки.

    Пример получения данных можно найти тут же https://qna.habr.com/q/885673, https://qna.habr.com/search?q=python+google+sheets
    Ответ написан
    Комментировать