❓Какой из следующих вариантов НЕ является типичной задачей для go vet?
  Anonymous Poll
    10%
    Проверка использования неправильных форматов в fmt.Printf
      
    7%
    Поиск неиспользуемых переменных
      
    79%
    Оценка производительности программы
      
    9%
    Поиск недостающих или лишних аргументов в вызовах функций
      
    🥴3❤1
  Почему массив arr остался или не остался изменённым?
  Anonymous Poll
    9%
    Срезы всегда создают копию массива
      
    9%
    Append всегда создаёт новый массив
      
    59%
    Срезы ссылаются на тот же массив, и append может изменить массив, если у среза достаточно емкости
      
    38%
    Массивы в Go неизменяемы
      
    💡 Создайте простой кэш в памяти с использованием языка Go
Делитесь своими решениями в комментариях! 👇
Там же можно найти ответ!
  Делитесь своими решениями в комментариях! 👇
Там же можно найти ответ!
❓Почему порядок перебора элементов в map случайный?
  Anonymous Poll
    19%
    Go специально перемешивает ключи перед каждым вызовом range
      
    2%
    Ключи хранятся в массиве и перемешиваются перед перебором
      
    79%
    Элементы хранятся в хэш-таблице, и их порядок зависит от хэш-функции
      
    2%
    Это баг, который ещё не исправили
      
    В какой момент Go устанавливает случайный seed для map?
  Anonymous Poll
    48%
    При создании новой map
      
    25%
    Один раз при старте программы
      
    19%
    Перед каждой итерацией range
      
    10%
    При каждом доступе к элементу map
      
    ❤2
  ❓Какая проблема возникает при многократных операциях CAS(Compare and Swap), если значение переменной меняется туда и обратно?
  Anonymous Poll
    14%
    Deadlock
      
    18%
    Starvation
      
    38%
    ABA-проблема
      
    34%
    Race condition
      
    🎉1
  ❓ Что происходит, если CAS не удаётся выполнить замену значения?
  Anonymous Poll
    9%
    Переменная сбрасывается в ноль
      
    35%
    Поток повторяет попытку
      
    28%
    Генерируется паника
      
    29%
    Узнать ответ
      
    👎10😁1🕊1
  ❓В какой версии Go был добавлен модульный подход к управлению зависимостями (go modules)?
  Anonymous Poll
    15%
    1.8
      
    26%
    1.14
      
    16%
    Посмотреть ответы
      
    19%
    1.13
      
    27%
    1.11
      
    ❤4👎2
  Что произойдёт, если в тестовой функции не будет вызова t.Error() или t.Fail()?
  Anonymous Poll
    71%
    Тест всегда будет считаться успешным
      
    6%
    Тест завершится с ошибкой
      
    5%
    Тест завершится с panic
      
    5%
    Тест не запустится
      
    15%
    Узнать ответ
      
    👎7🥰1
  Какое основное отличие time.Ticker от time.Timer?
  Anonymous Poll
    7%
    time.Ticker срабатывает только один раз, а time.Timer — многократно.
      
    69%
    time.Ticker отправляет события в канал с регулярным интервалом, а time.Timer — только один раз
      
    11%
    Оба работают одинаково, но у time.Ticker есть дополнительный метод Stop()
      
    15%
    Узнать ответ
      
    🤔2😁1
  ❓Какой формат данных используется для хранения документов в Elasticsearch?
  Anonymous Poll
    12%
    XML
      
    66%
    JSON
      
    11%
    CSV
      
    15%
    Узнать ответ
      
    🤡2
  ❓Как создать строковый флаг с именем name и описанием "Your name"?
  Anonymous Poll
    32%
    flag.String("name", "Your name", "")
      
    9%
    flag.String("Your name", "name", "")
      
    29%
    flag.String("name", "", "Your name")
      
    5%
    flag.String("", "name", "Your name")
      
    27%
    Узнать ответ
      
    ❓Как проверить в Go указатель ли переменная ?
  Anonymous Poll
    7%
    Использовать оператор * для разыменования переменной
      
    6%
    Проверить, равен ли тип переменной *int
      
    48%
    Использовать функцию TypeOf()
      
    25%
    Использовать встроенную функцию isPointer(x interface{}) bool
      
    18%
    Узнать ответ
      
    🤡3
  ❓Что такое Dead Letter Queue?
  Anonymous Poll
    1%
    Очередь для сообщений с максимальным приоритетом.
      
    5%
    Очередь для сообщений, которые не дошли до ProgLib
      
    76%
    Очередь для сообщений, которые не удалось обработать после нескольких попыток.
      
    1%
    Очередь для временного хранения данных перед отправкой в БД.
      
    18%
    Узнать ответ
      
    ❓Какие действия можно выполнить с сообщением в dead letter queue?
  Anonymous Poll
    6%
    1. Переотправить в основную очередь.
      
    5%
    2. Уведомить команду об ошибке.
      
    3%
    3. Архивировать для аудита.
      
    3%
    4. Удалить без следа.
      
    12%
    1 и 2
      
    12%
    2 и 3
      
    46%
    Все ответы
      
    22%
    Узнать ответ
      
    Обработка сообщений, которые содержат альбомы (media_group), через telegram api
Одна из задач бота (которого я пишу) - проанализировать сообщение, полученное от пользователя, и в зависимости от контента в нём, встроить клавиатуру с возможными действиями.
В ситуации, когда одно сообщение содержит только текст и/или одно изображение, всё хорошо. Получаем один update, в нём лежат все данные, извлекаем и обрабатываем.
Сложности возникают с обработкой сообщений, которые содержат так называемый альбом (медиа группу). Как пример - сообщение, в котором вложены две и более фотографии.
В этом случае бот получает такие сообщения как бы фрагментами (отдельными update'ами). Например, сообщение, состоящее из двух фотографии, бот получит по API в трёх разных update’ах.
Сложность с тем, чтобы понять:
Когда «долетит» последний "фрагмент", после которого можно приступить к анализу всего сообщения?
Как потом обратиться ко всем фрагментам этого сообщения?
Просматривая такие сообщения с помощью бота Json Dump, я увидел, что у такой «пачки» одинаковое значения поля «media_group_id». Вероятно, это и есть связующий ключ. Но два вышеуказанных вопроса по прежнему актуальны.
Не хотелось бы делать костыли в виде глобальной/статической переменной, в которой я должен запоминать начало получения такого сообщения. К тому же, у меня нет понимания: гарантирует ли API телеграмма, что между "фрагментами" одного сообщения не залетит update от другого события/сообщения.🤷♂️
В общем, буду признателен за любые мысли. Желательно, на языке golang. Но можно и на другом. Мне важно понять подход, как подступиться к этой задаче.
Одна из задач бота (которого я пишу) - проанализировать сообщение, полученное от пользователя, и в зависимости от контента в нём, встроить клавиатуру с возможными действиями.
В ситуации, когда одно сообщение содержит только текст и/или одно изображение, всё хорошо. Получаем один update, в нём лежат все данные, извлекаем и обрабатываем.
Сложности возникают с обработкой сообщений, которые содержат так называемый альбом (медиа группу). Как пример - сообщение, в котором вложены две и более фотографии.
В этом случае бот получает такие сообщения как бы фрагментами (отдельными update'ами). Например, сообщение, состоящее из двух фотографии, бот получит по API в трёх разных update’ах.
Сложность с тем, чтобы понять:
Когда «долетит» последний "фрагмент", после которого можно приступить к анализу всего сообщения?
Как потом обратиться ко всем фрагментам этого сообщения?
Просматривая такие сообщения с помощью бота Json Dump, я увидел, что у такой «пачки» одинаковое значения поля «media_group_id». Вероятно, это и есть связующий ключ. Но два вышеуказанных вопроса по прежнему актуальны.
Не хотелось бы делать костыли в виде глобальной/статической переменной, в которой я должен запоминать начало получения такого сообщения. К тому же, у меня нет понимания: гарантирует ли API телеграмма, что между "фрагментами" одного сообщения не залетит update от другого события/сообщения.🤷♂️
В общем, буду признателен за любые мысли. Желательно, на языке golang. Но можно и на другом. Мне важно понять подход, как подступиться к этой задаче.
👍2
  ❓ Что произойдёт при чтении из закрытого chan struct{}?
  Anonymous Poll
    18%
    nil false
      
    39%
    {} false
      
    40%
    panic: reading from a closed channel
      
    4%
    runtime error
      
    👍3
  