Задать вопрос
  • Можно ли сделать разные favicon для вкладки браузера и показа в поиске yandex/google?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    К примеру во вкладке браузера показывается упрощенный фавикон, в поиске яндекс / гугл более детализированный.

    Браузер или разные ресурсы (Яндекс, например) будут брать тот размер фавикона, который им необходим и указан в вёрстке, либо ближайший (ниже) по размеру - Создание favicon для сайта 2020
    Ответ написан
    5 комментариев
  • Как правильно оформить вопрос на QNA.Habr, чтобы получить ответ?

    @rPman
    Первая проблема задающих вопрос (не только на хабре а вообще) - это дано недостаточно информации. Из вопрошающих приходится чуть ли не клещами выбивать ее.

    Выдавай максимум информации. Что есть, что хотел, как думал решать, как получилось, как не получилось.

    Неплохой помощью будет задавать вопрос не о том, как исправить неработающий способ, которым пытались решать проблему, а какую именно проблему начинали решать.. а то получается типа
    - я с моста падаю, заезжаю и падаю, как решить
    - какой мост, куда падаешь,...
    - ... тонна наводящих вопросов и советов про мост
    - а зачем на мост полез?
    - мне за хлебом сходить, ходить лень, еду на велосипеде, мост веревочный...
    ... вот про этот момент упоминают в последнюю очередь
    - так вот же дорога в обход, близко же
    - ой пешком было далеко, думал по мосту ближе, но потом решил на велосипеде, а про дорогу забыл
    Ответ написан
    Комментировать
  • Как изменить горячую клавишу смены языка на Ctrl+Shift в Ubuntu 18.04?

    @holodniynolove
    Для установки переключения на Alt+Shift:
    gsettings set org.gnome.desktop.wm.keybindings switch-input-source "['<Shift>Alt_L']"
    gsettings set org.gnome.desktop.wm.keybindings switch-input-source-backward "['<Alt>Shift_L']"
    Ответ написан
    1 комментарий
  • Как через запрос query в консолидированной таблице google sheets добавить столбец с названием листа?

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

    2. Собираете данные со всех листов, но в первую колонку вставляете название листа.
    Делаетеся это такой формулой:
    =REDUCE({"Город"\"Продукт"\"Дата"\"Сумма"\"Менеджер"};
      tocol('Города'!A2:A;1);
      LAMBDA(acc;city;
        VSTACK(acc;
          BYROW(INDIRECT(city&"!A2:D");LAMBDA(_row;{city\_row})))
      )
    )


    Reduce - сводит воедино данные по страницам (городам в Вашем случае). lambda - составная часть этой функции.

    TOCOL cо вторым параметром 1 используется в данном случае чтоб убрать пустые строки, так как количество городов неизвестно и мы используем открытый диапазон A2:A.

    VSTACK - объединяет массивы. В данном случае - массив acc, результат предыдущих итераций reduce, с текущим.

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

    3. Эту формулу оборачиваете в нужный вам QUERY, где в том числе фильтруете пустые строки.

    Вот ваш QUERY:
    664066ab55d26686658205.png

    А вот так он будет выглядеть, когда в качестве "входящего" диапазона используется формула из п2.
    6640679b896d2483327392.png

    =QUERY(
      REDUCE(...
      );
      "SELECT ..")
    Ответ написан
    2 комментария
  • Как лучше сделать базу данных?

    @tukreb
    Прочитайте книжку - "Программирование баз данных SQL. Типичные ошибки и их устранение"
    Вам ещё рано проектировать БД, пока не прочтёте, даже не прикасайтесь к БД.
    Ответ написан
    2 комментария
  • Как лучше сделать базу данных?

    @Everything_is_bad
    В итоге работа с этой таблицей может стать крайне затруднительной, а в последствии и не возможной.
    это ты придумал

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

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

    @v__V__v
    Разработчик
    Если это не учебная задача, то еще необходима таблица tests, а в answers и questions - наряду с question_id сохранять id теста. А если даже учебная, то все равно добавьте, преподаватель это оценит - в реальной жизни информационные системы для одного теста не создаются, проще, быстрее и дешевле на бумажках все делать.
    Ответ написан
    Комментировать
  • Сколько денег просить за проект?

    vabka
    @vabka Куратор тега Веб-разработка

    Просят назвать цену, а у меня вообще нет идей, сколько за это нужно просить и как оценить проект по рынку.

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

    Учитывай ещё и бюджет заказчика своего, тк бюджет явно будет ограничивающим фактором при разработке

    Вариант два: проведи преданалитику и оцени трудозатраты. Далее смотри на свой ценник за час / за более мелкие подзадачи, смотри п1.

    Если по обоим способам не можешь назвать цену (например преданалитика требует больше времени), то тогда можно попробовать "долгосрочное сотрудничество", где заказчик будет платить не за сделанный проект, а за затраченные часы.

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

    В целом телеграмовские мини-приложения - это обычные SPA, так что можешь ориентироваться на них.

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

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    The parameters (number,number,number,null) don't match the method signature for SpreadsheetApp.Sheet.getRange.


    Означает, что вы в метод getRange передаете аргументы несвойственные его сигнатуре. Обратите внимание, что четвертый аргумент null, а это значит, что ваш вызов arr[0].length возвращает null. Что в свою очередь означает, что ваш массив arr содержит первый элемент, у которго отсутствует свойство length. Что очевидно, т.к. obj - не массив, см. тут obj[sh.getName()] = sh.getDataRange().getValues();

    Дальше мне было лень

    Давайте починим код. Ошибка возникает из-за того, что вы пытаетесь использовать метод `getRange(1, 1, arr.length, arr[0].length)` с некорректными параметрами. Кроме того, есть несколько других проблем в коде, которые нужно исправить:

    1. Пустые URL-адреса: Вы фильтруете массив ссылок, но не проверяете, действительно ли они являются действительными URL-адресами.
    2. Структура данных: В вашем коде arr становится объектом, а не массивом, и это вызывает проблемы при использовании setValues.
    3. Логика записи данных: Метод setValues ожидает двумерный массив, но ваша структура данных не соответствует этому требованию.


    Вот исправленная версия кода:

    function sv21() {
      // Открываем основную таблицу
      var ss1 = SpreadsheetApp.openByUrl('URL_ОСНОВНОЙ_ТАБЛИЦЫ'); // Замените на реальный URL
      var sheet1 = ss1.getSheetByName('ссылки');
      
      // Получаем ссылки из столбца B
      var urls = sheet1.getRange('B3:B').getValues().flat(); // Берем значения из столбца B
      urls = urls.filter(function (url) { // Удаляем пустые строки
        return url !== '' && url.startsWith('https://'); // Проверяем, что это действительно URL
      });
    
      var allData = []; // Здесь будем хранить все данные
    
      // Проходимся по каждой ссылке
      for (var i = 0; i < urls.length; i++) {
        try {
          var ss = SpreadsheetApp.openByUrl(urls[i]); // Открываем таблицу по URL
          ss.getSheets().forEach(function (sh) {
            var data = sh.getDataRange().getValues(); // Получаем данные с листа
            allData = allData.concat(data); // Добавляем данные в общий массив
          });
        } catch (e) {
          Logger.log('Ошибка при обработке URL: ' + urls[i] + '. Подробности: ' + e.message);
        }
      }
    
      // Если есть данные для записи
      if (allData.length > 0) {
        // Открываем целевую таблицу и записываем данные
        var targetSheet = SpreadsheetApp.openByUrl('URL_ЦЕЛЕВОЙ_ТАБЛИЦЫ') // Замените на реальный URL
          .getSheetByName('все расчеты');
        
        // Очищаем предыдущие данные
        targetSheet.clearContents();
        
        // Записываем новые данные
        targetSheet.getRange(1, 1, allData.length, allData[0].length).setValues(allData);
      } else {
        Logger.log('Нет данных для записи.');
      }
    }


    Что было исправлено:
    1. Обработка URL-адресов:
    - Добавлена проверка на то, что ссылка начинается с https://.
    - Используется метод `.flat()` для преобразования многомерного массива в одномерный.

    2. Сбор данных:
    - Все данные собираются в массив allData, который затем используется для записи в целевую таблицу.

    3. Запись данных:
    - Перед записью данных очищается содержимое целевого листа (clearContents).
    - Проверяется, что массив allData не пустой, прежде чем выполнять запись.

    4. Обработка ошибок:
    - Добавлен блок try-catch для обработки ошибок при открытии таблицы по URL.

    5. Логирование:
    - Логируется информация об ошибках, чтобы легче было находить проблемы.

    Как использовать:

    1. Замените 'URL_ОСНОВНОЙ_ТАБЛИЦЫ' и 'URL_ЦЕЛЕВОЙ_ТАБЛИЦЫ' на реальные URL-адреса ваших таблиц.
    2. Убедитесь, что у скрипта есть необходимые права доступа к таблицам.


    Теперь код должен работать корректно!
    Ответ написан
    2 комментария
  • Стоит ли указывать паспортные данные в анкете соискателя?

    @Tanya2025
    Фрилансер
    Если потребуют ксерокопию паспорта, то обязательно пишите: "Копия предоставляется (для и кому, и дату на момент подачи). Так можно себя обезопасить при предоставлении ксерокопии паспорта в любые учреждения.
    Ответ написан
    Комментировать
  • ИИ на стадии обучения программированию. Стоит ли?

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

    Geleoss
    @Geleoss
    Любитель таблиц
    =FILTER(Q2:Q;XMATCH(Q2:Q;R2:R))
    Ответ написан
    2 комментария
  • Как можно отслеживать-мониторить новые объявления с сайта Avito?

    @petjaQR
    Есть сервисы разные по мониторингу Авито.
    Знаю про Scanurik, тестил в марте, понравился.
    По крайней мере, в сравнении с конкурентами самый быстрый был
    Ответ написан
    2 комментария
  • Как правильно произносить эти слова?

    AleksVersus
    @AleksVersus
    графоман
    Это не обращение к топикстартеру.

    Вот мне интересно, с каких х... у некоторых людей так горит жопа, когда я говорю ЯваСкрипт? Ещё и приводят как доказательство того, что я не прав, мол так произносится в английском. А ну давайте все англицизмы произносить как в английском. Что-то я не вижу, чтобы вы мучали свой рот и тысячи раз на дню тренировали звуки, чтобы чётко и внятно выговаривать ʤ, а не дж. Вы вообще знаете, как кириллицей записать ʤ? Ах надо транскрипировать близко по звучанию? Ну ак чё вы тогда не говорите па-ламент, а говорите парламент? И не дайректа, а директор? И не пру(о)тикл, а протокол? Ааа, так дело не в звучании видимо. Дело в устоявшемся в языке назывании. Яваскрипт -- это слово из тех далёких времен, когда сайты писались на чистом HTML, а самым популярным протоколом был wap. А кстати, как вы произносите HTML и wap? Да подавляющее большинство говорит эйч-тэ-эм-эль, и вап. Хотя вроде правильнее эйч-ти-эм-эл и уап.
    Заколебали. Я граммарнаци почище вашего, и меня бесит ваше тупое калькирование. Русский язык перерабатывает слова, адаптирует англицизмы под своё звучание и под свою ритмичность. Через десять лет вы будете сами сидеть и принимать на уши, что правильно не реакт, а риэкт, потому что иди послушай, как это звучит на английском, дурачок. Вот найдите меня тогда, и скажите, что вы оказывается всё это время говорили неправильно.
    Ответ написан
    Комментировать
  • Почему не работает регулярное выражение?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Ваша формула работает хорошо, вы передаете неправильный аргумент

    нужно

    =VALUE(REGEXEXTRACT(E2;"[\/](\d+)(спб|мск)[\/]"))

    67586636c4f8e927848185.png

    Для массива данных используйте что-то такое

    =ARRAYFORMULA(VALUE(REGEXEXTRACT(C3:C4;"[\/](\d+)(?:спб|мск)[\/]")))


    Пример в Таблице https://docs.google.com/spreadsheets/d/1oAU_ZMFFYi...
    Ответ написан
    4 комментария
  • Чат для быстрого получения информации об айти технологиях?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. Закон Каннигема
    лучший способ найти правильный ответ в интернете — не задать вопрос, а разместить заведомо неправильное утверждение и получить от другого пользователя нужную информацию

    2. Начни холивар - получишь много информации/опыта/мнений
    Ответ написан
    Комментировать
  • Как автоматически проставлять даты за весь месяц?

    656653947b5ec771190260.png

    Формула:

    =LET(date;"01."&MATCH(A1;{"Январь";"Февраль";"Март";"Апрель";"Май";"Июнь";"Июль";"Август";"Сентябрь";"Октябрь";"Ноябрь";"Декабрь"};0)&
    ".2023";SEQUENCE(DAY(EOMONTH(date;0));1;date))
    Ответ написан
    Комментировать
  • Как подсветить ячейки в столбце по условию?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Ну, это точно возможно через условное форматирование

    64874c289c476952013907.gif

    Пример в Таблице https://docs.google.com/spreadsheets/d/1qDD9P6zMXI...
    Ответ написан
    Комментировать