content:
На протяжении всего апреля мы с командой после учёбы и работы решали увлекательные задачи в рамках конкурса Opener от компании Itransition. Вместе с конкурсом закончился наш лучший месяц на самоизоляции. Теперь, отдохнув, я готов спокойно поделиться этим опытом с вами.
Opener это ежегодный открытый интеллектуальный конкурс для студентов, аспирантов и магистрантов Республики Беларусь (по крайней мере на призы претендовать могут только они), а участвовать все, кто захочет. Данный конкурс проходит уже 8 лет. В этом году был добавлен командный зачёт со своими дополнительными задачами.
Призовой фонд конкурса составил 12 Apple Ipad Pro для личного и $4000 для командного зачётов. Наша команда, состоящая из Артура (petuhovskiy), Вячеслава, Игоря (lodthe), Кирилла и меня выиграла 4 Ipada.
Мы добрались практически до самого конца конкурса, и я бы хотел показать вам, какие задачи показались нам самыми интересными. Надеюсь, что прочитав ход решения, посмотрев на командную работу в Google таблицах, увидев скриншоты, вы осознаете уровень проработки задач и не сможете не сказать: Вау!
В конце статьи вас ждёт задача попробуйте её решить!
Основная часть
Как всё начиналось
Стоит заметить, что я уже принимал участие в данном конкурсе в 2019 году. Узнал о нём я совершенно случайно и решил первых задач 10 на парах. Спустя год мне на почту пришло письмо-приглашение. Теперь я знал чего ожидать и меня это не заинтересовало, ведь конкурс самый настоящий марафон на месяц. Я просто поделился письмом и ссылкой на регистрацию с подписчиками своего канала в Telegram.
Спустя несколько дней мой друг Слава пересылает в общий с Игорем чат данный пост и спрашивает: Что по этому?. Игорь интересуется про род задач, которые там будут, а я ему подробно отвечаю. Слово за слово, приходим к тому, что никто не против порешать чего-нибудь просто так, а зарегистрировавшись, мы точно ничего не потеряем.
Команды от трёх человек, максимум пять. Мы поставили в чат себе уведомление на день начала конкурса и успешно про всё забыли. В последний день регистрации хотелось укомплектовать команду полностью, но на примете никого не было. Игорь написал своим знакомым с предложением поучаствовать, не надеясь на положительный ответ, однако, именно так к команде присоединился Артур и Кирилл. Примечательно то, что последний участник зарегистрировался за минуту до окончания формирования команд.
Артур, Игорь, Кирилл и Слава учатся в Высшей Школе Экономики, в школьные годы увлекались спортивным программированием в Республике Беларусь.
Организационные моменты
Официальная группа конкурса находится в ВК. Именно там, в обсуждениях, можно было попросить помощи от организаторов, если совсем был ступор. Подсказки были совершенно разными. Это и музыкальные отрывки, и четверостишия, и просто какие-то намёки, отсылки. Все конкретные и важные подсказки переносились в отдельную тему, а на стене мелькали полезные ссылки. Только погрузившись в общение с другими участниками и организаторами в этой группе, можно было получить максимальное количество полезной информации. Этим я и занимался, сидя с фейка и максимально прикалываясь. Я рофлил, добавляя креатива в сообщения, команда рофлила с моих сообщений и сама их иногда не понимала, организаторы награждали меня подсказками. Родились мемные фразы, которые мы употребляем до сих пор. Вот некоторые из них:
Опять таблетки забыли принять?
Последовательность бык
Где???
Вы вопрос задайте
Подумать, нет?
Telegram бот, координирование команды
В нашей команде уже давно все перешли исключительно на Telegram, следовательно, в первые же дни Артуром был написал бот, который дублирует все сообщения участников, а также подсказки из обновляемых организаторами сообщений в приватный канал.
Мало того, что это очень удобно (ведь мы получали уведомления и были в курсе всего), так ещё и получилась система логирования всех исправлений как участников, так и организаторов. Это помогало получить дополнительную информацию, так как организаторы затирали в вопросах участников слова, которые могли хоть как-то намекнуть куда копать. Подсказки вообще могли молча обновляться, а бот всегда держал нас в курсе.
Общение команды шло через чат. К тому времени я написал бота для интеграции Zoom в Telegram, он был на хайпе и мы им активно пользовались, но где-то в середине месяца они опять вернули своё ограничение на 40 минут конференции и мы перешли в Discord, так как любили засесть ночью на часика четыре.
Все записи, касающиеся задач, были представлены отдельными страницами в таблице Notion. Это было удобно: когда кто-то уходил спать, утром он смотрел, что другие решили ночью. Так же без этих заметок не получилось бы написать эту статью.
Задачи
Как я уже упомянул во введении, задачи делятся на два типа: командные и личные. Одновременно можно было решать задачи обоих типов, но командные задачи были заблокированы для просмотра, пока не решены предыдущие из личного или командного зачётов. Удивительно то, что организаторы не запрещали, а даже открыто заявляли, что задачи личного зачёта можно решать вместе с командой (при её наличии, конечно же). Ими было введено ограничение, которое не позволяло забрать больше четырёх айпадов на одну команду. Мы посчитали, что решать всем вместе будет рациональнее. Так и поступили.
Конечно, выходило и так, что мы застревали на командных задачах, но продолжали решать их из личного зачёта. Чаще всего выходило, что они были более интерактивными и многоэтапными. Все задачи, описанные ниже, с выездом на локацию в Минске, как раз и являются командными. Олимпиадникам больше понравились личные задачи, тогда как я просто тащился от командных. На протяжении всего конкурса я ждал реквизит, про который говорилось в правилах конкурса, но эти задачи были заменены на примитивные из-за пандемии, которые решались за несколько минут. Поняли мы это благодаря открытой корневой папки CloudFronta, получив все приложения задач ещё в самом начале конкурса. Так же это дало нам понимание о количестве задач, что предстоит решить. После конкурса я узнал, что никто не справился с абсолютно всеми задачами, а именно на последней и нужен был реквизит.
Ниже я описываю ход решения четырёх интересных задач, которые состоят только из изображений без дополнительного текстового сопровождения. А в конце статьи вас ждёт увлекательная и несложная задачка, на которую мы потратили около суток, несмотря на то, что Python является моим основным языком. При должных знаниях, решение придумывается сразу. По крайней мере понятно, что и как будет, но вот до конца довести сложнее.
Задача с 104 гифками
Исходными данными к задаче является архив, содержащий в себе 104 GIF файла с разными названиями. Название каждого файла имеет префикс part_. Название архива by8_128x128px_2layers.zip. Сразу замечаем, что это никакие не гифки, а просто изображения. Перегоняем в другой формат:
Разбираемся с названием файла и трактуем его следующим образом: здесь 2 слоя по 4 картинки. Замечаем рамки у изображений, пишим код на Python с использованием PIL, который без пересечений будет склеивать изображения, получаем 52 уголка:
Отказываемся от идеи пытаться склеить это автоматически и рейдим всей командой Google таблицу. Слава загружает все эти изображения, а мы их растаскиваем по 4 углам, а потом пытаемся соединить:
Подсказка: Если вы дошли до слов, то нужно найти одинокие буквы по столбикам
Слишком очевидная подсказка, к счастью, коих было мало. Составляем куски фразы, а потом и саму фразу:
Получаем: самое малое положительное с количеством разных делителей более десяти млрд, находим в интернете замечательную табличку:
Собираем число, вставляем в любимый Python и получаем ответ!

2**9 * 3**5 * 5**3 * 7**2 * 11**2 * 13**2 * 17**2 * 19**1 * 23**1 * 29**1 * 31**1 * 37**1 * 41**1 * 43**1 * 47**1 * 53**1 * 59**1 * 61**1 * 67 * 71 * 73 * 79 * 83 * 89 * 97 * 101
Ответ: 2054221614063184107682218077003539824552559296000
Задача с девочками
Подсказка: Цвета какие-то ненатуральные, явно отфотошопил девчонок кто-то
Отличная подсказка, с неё мы и начали решать эту задачу, сами незаметив. Я начал со стенографии, усердно пытаясь достать хоть что-то, но все попытки были тщетны. Была идея поиграться с ползунками в фотошопе, как-то выровнять баланс цветов, приблизить к натуральным, но нет. Заметили, конечно, и пятна из разных цветов. Выделили их более яркими не помогло.
Спустя некоторое время получаем подсказку в качестве кода на Ruby:

def h(a);     a.reduce(Hash.new(0)) {|h,e|h[e]+=1;h};end
Наш лучик надежды. Разбираемся в коде, понимаем, что это ничто иное, как функция, которая возвращает словарь с количеством вхождений чисел в массиве. Недолго думая, понимаем в картинке считать нечего, кроме как пиксели, но продолжаем сидеть без малейшего понятия как это делать правильно.
Подсказка: А что это за такое? А такое есть у картинки? Три? А имя файла?
Получив эти вопросы после кода выше, стараемся дать на них вразумительные ответы. Под тем, что это за такое, подразумеваем количественную характеристику. У картинки, как мы и думали, есть пиксели, а три это три канала: red, green, blue. На имена файлов мы всегда обращали внимание, в данной задаче оно z.png, однако это нам абсолютно ничего не дало, кроме как трёх букв. Только потом мы осознали, что это отсылка к координатам Когда ты в тупике иди в Google. Слава так и поступил: начал вбивать поисковые запросы на подобии: количественная характеристика и как-то связывать это с изображением. Так он пришёл на сайт с генератором гистограммы по изображению. Загрузив наше исходное изображение он заметил интересную картину и поделился сразу с нами:
Это правда выглядит очень необычно. Вооружившись Python с PIL заводим три словаря под каждый канал, проходимся по каждому пикселю изображения, получая RGB и в каждый словарь инкрементим значение, ключ которого наш канал. Например, для словаря red вы возьмём от RGB R за ключ, а в значение добавим +1. Прям как тот код, что дали нам на Ruby. Так проделаем с остальными двумя каналами и О чудо!, Вы только взгляните на это! Практически везде идеальная картина, количество цветов в каждом канале совпадает!
Весь полученный файл доступен тут. Меньше, чем в пяти местах, значения отличались, но мы посчитали, что, возможно, у авторов задачи не получилось сделать идеальное совпадение. Ведь то, что мы увидели, уже величие! Не останавливаясь, видим отсутствие цветов, ведь не все идут по порядку. А почему бы не выписать: какие есть, а каких нет? Так и делаем, дописав к нашему прошлому коду цикл! Для трёх каналов получаем три бинарные строки длиной в 255, где цвет отсутствует 0, а где есть 1:
Red
0000111100000000000000000000000000001111000000001111000011110000111111111111111100001111000011111111000011110000111111110000000000001111111111110000000000001111000000000000000011111111000000001111000011111111000000001111000011110000000011110000111111110000
Green
0000111100000000000000000000000000000000111111111111000011111111111100000000111100001111000011110000111100001111000011110000111100000000000011111111111100001111000011111111000011110000000000001111111100000000000011111111000011110000000011110000000011111111
Blue
0000111100000000000000000000000000001111111100001111111100000000000011111111000000000000000000000000000000000000000011110000000000000000000011111111000000000000111100000000111100000000111111110000111111111111000011110000000011110000111111111111111100000000
Выглядит страшно и непонятно, но вы ведь тоже видите, что везде количество единиц кратно 4? А ведь с нулями такая же картина сжимаем!
Red
0100000001001010111101011010110001110001000011001011001010010110
Green
0100000000111011100101010101010100011101011010001100011010010011
Blue
0100000001101100011000000000010000011000100100110111010010111100
Вот Уже и не так страшно, легко влезает в поле зрения. Нужно думать дальше, чем это может быть, но тут олимпиадное предположение играет нам на руку: А что, если это double?. И правда, а ведь что если? Пробуем перевести двоичные последовательности в тип double (делаем reinterpret_cast в даблы), получаем следующие значения:
53.919325
27.58333
227.0005
Посещая уроки географии в школе, понимаем, что наше первое число: плюс-минус наша широта, а в целом, три числа как раз и обозначают координаты. Тут и должна была сыграть подсказка в имени файла, но мы уже пулей летим в Google карты:
Получилось! Координаты соответствуют углу офиса компании-организатора конкурса. Понимаем, что скорее всего придется туда приехать. Первый этап прошли.
Мы не торопимся на локацию, так как в тот момент участник другой команды активно написывал в обсуждение, что он на месте, спрашивает у охранников, которые ничего не знают, бродит, ходит и не понимает что надо найти. Спустя некоторое время мы активно начали подыгрывать ему в общении с организаторами и делать вид, что тоже пришли туда:
Жарко стоять уже :(
Только что прошел кашляющий человек( он был без маски
Ответ организаторов не заставил долго ждать:
Там видео секунд на 30, не больше
Никуда заходить не нужно, можно приехать/прийти одному и повтыкать. Там три координаты, три, Карл, не две (как и две первые, третья отсчитывается от некого выбранного начала, а не от подошв кед). Не ходите, не спрашивайте, нужно рассмотреть со стороны.
Эти ответы перевернули всё. Проверяем высоту над уровнем моря, на которой находится офис, это где-то ~200. Предполагаем, что координата 227 плюс-минус может быть на крыше офиса. В это же время один из нас находился неподалёку он и отправился на локацию. Достигнув угла здания, как на Google карте, поднимаем глаза. Анимированный логотип это не то, что на аватарке в группе у компании. Вместо логотипа тетрис:
Для уточнения, то ли это, что нам надо, задаём следующий вопрос: Фигурки, падающие с небес, связаны с блоками, которые закрывают девочек? Во-первых: получаем положительный ответ, а во-вторых: редактирование нашего вопроса со стороны организаторов на о-ла-ла, падающие с тру-ла-ла, связаны с блоками, которые закрывают облади-облада?.
Мы на правильном пути. Дело Google таблиц! Покадрово разбираем отснятый материал, восстанавливаем блоки, цвета, записываем порядок появления блоков на видео. За счёт равной задержки между появлением фигур узнаём о наличии других, внутри отсутствующей части логотипа.
Учитывая текущий пазл, понимаем, что это пентамино, т.е. все фигуры состоят из пяти отдельных квадратов (пикселей). Находим буквенное обозначение данных фигур, пытаемся, опираясь на цвета, заполнить клетки на исходном изображении с девочками ничего не выходит. От организаторов приходят подсказки с количеством уникальных фигур в пентамино решаем задачку, заполнив весь прямоугольник уникальными блоками:
В очередной раз пытаемся вписать буквы в клетки, уже сомневаемся в правильности данного подхода, пытаемся найти что-то ещё. По цветам очень сложно понять: что куда, поэтому, во-первых: улучшаем нашу палитру в таблице, получив фотографию лучшего качества; а во-вторых: начинаем выписывать множество подходящих букв под каждую клетку.
Я получаю 3 читабельных слова из 4, но считаю это за совпадение, ухожу делать перестановку букв по словарю, с учётом тех, в которых был уверен по цветам. Таким цветом являлся синий и обозначал букву Т. Засылаю огромную пачку различных комбинаций в чатик. Почитав их все вместе, забываем про эту идею. Спустя некоторое время я со Славой возвращаюсь к расстановке букв, имея справа на экране свой первый вариант. Присоединяется Артур, который чутка отсутствовал на задаче, разбирается в том, чем мы тут занимаемся. Спустя некоторое время Артур обращает внимание на мой прошлый вариант, где найденные три слова выделены зелёным цветом, а под последним написано слово input. Это то слово, что очень хотелось собрать, но не сходилось по одной букве. Артур просто читает строку полностью: Input fifty pi int.
Умножаем число Пи на 50 в целочисленном типе, отсылаем в систему Получаем положительный вердикт: задача длинною в дней 5 решена!
Задача с ответами и вопросами
Подсказка: Где же поблизости найти вопросы, ответы на которые нужно вписать в матрицы?
Вспомним тот факт, что всё общение с организаторами проходит через обсуждения в группе ВК, следовательно, сейчас мы в обсуждениях, а максимальное близкое к нам место с вопросами или другая страница текущей темы, или другой раздел.
Так как первое является невозможным, то мы поднимаемся на уровень выше и смотрим на список обсуждений. Их не много, всего 4: обсуждение задач, подсказки, обсуждение конкурса, правила. Первые два откидываем сразу, к остальным присматриваемся. Зайдя в правила конкурса, видим вторым сообщением секцию с часто задаваемыми вопросами. Вот они, вопросы! Ответы у нас даны в задаче (подписи к матрицам) по ключевым словам ищем их и выписываем!
Подсказка: Зеленые начало укладки
Отлично, выходит что-то надо куда-то уложить. Куда это очевидно, так как знаем начало. Под Что, принимаем вопросы, которые нашли на первом шаге. Проверим свою догадку: все матрицы 10х10 (что даёт нам 100 клеток для символов). Посмотрим на длину строк ответов: все они больше 100. Попробуем откинуть знаки пунктуации и символ пробела, посчитаем просто количество букв у всех вопросов по 100 букв!
Остаётся последний шаг: узнать как укладывать. Там уже посмотрим на буквы в жёлтых клетках и может, что понятнее станет. Ломаем голову, от меня проскальзывает предложение: Давайте рассматривать, как граф, которое успешно игнорируется всеми остальными. Через некоторое время предлагается загуглить по изображению: вырезаем первую матрицу, скармливаем Google ничего, идём в Яндекс что-то есть!
Вчитываемся в найденное условие, понимаем, что необходимо найти гамильтонов цикл, даже не пытаемся сделать это руками, думаем об автоматизации, прикидываем сложность и сложно. Олимпиадники говорят, что решать задачу самым наивным перебором смысла нет. А использовать оптимизации лень, но есть надежда на то, что можно решить задачу проще. Для подтверждения того, что наивное решение будет отрабатывать слишком долго, пишем его. Убеждаемся, что работает долго.
Идём в Google, находим программу для решения оригинальной головоломки поиска цикла, а не путей, как в статье, которую мы нашли. Программа оказалась только для Windows, ни у кого её не оказалось под рукой, пошли поднимать виртуалку. Подняли, запустили, программа моментально находила решения.
Решение представляет собой обход поля:
Заходим всей командой в Google таблицу, накладываем скриншоты полученных решений на наши, перенесённые с задания, матрицы. В инструментах для разработчиков браузера задаём элементам с скриншотами прозрачность и заполняем матрицы буквами из ранее найденных вопросов.
Через некоторое время коллективного труда, получаем 8 матриц, так как у каждого решения есть два направления, и мы без понятия какое правильное. Во время этого процесса мы были в зуме. У каждого двигаться по матрице получалось с разной скоростью и разным количеством опечаток, было очень весело. Осталось дело за малым составляем слова из букв, которые находятся в желтых клетках.
Получив с каждой матрицы по кусочку фразы, читаем: Самое большое белла в лонге джавы минус сто. Понимаем, что от нас хотят самое большое число Белла, которое помещается в тип Long из Java.
Это в точности 4638590332229999253 и является ответом к задаче.
Задача с монетой
Самая сложная для меня задача для объяснения. Не представляю просто, как можно передать все те дней 10, что мы над ней сидели. Поэтому, давайте считать краткость и отсутствие подробностей за фишку. В задании, как и в прошлых, у нас только изображение:
В какие дебри мы только не зашли без подсказок. Это и деноминация в Беларуси, и состав монеты, и её размеры. Не оставили без внимания и словое opener с опечаткой. Я сразу же перевёл орёл и решка на английский несколькими способами, гуглил, пришёл к компании Open Retail, которая в 2009 году что-то там, а владеет она торговой сетью монетка. Смотрели на конкурсы прошлых лет. В общем дошли до тупика и пошли заваливать вопросами организаторов:
В 19 надо учитывать номинал?
да, и слово там не опечатка
монета или монета Республики Беларусь?
вопрос непонятен, скорее это не важно (слово монета не важно), важно то, что нарисовано
В 19ой есть что-то связанное с английской розницей?
только на втором этапе, на первом важны только буквы и числа на монетах
можно еще что-нибудь по 19, цифры буквы деньги, ничего не складывается?
деньги на втором этапе, на первом нужно соотнести числа и последовательности букв
Как в 19ой понять, что первый этап пройден? Должна получиться какая-то фраза? Если должны получиться числа, то как можно понять, что они правильные?
получится место. Нет, не числа должны получиться. Но этот в Минске, так можно понять, что он правильный.
мафия причастна к 19 задаче или просто тихий?
вероятно, ни первое, ни второе. Для определения места там числа и последовательности букв.
А можете как-то направить? А то вообще непонятно, как подходить к 19-ой задаче(ещё в первом этапе). Что делать с этими буквами и цифрами)
число связано с тем, как написано слово. на левой аналогичная связь
Получив просто тонну различной информации, стало понятно, что есть некая функция, которая принимает в себя строку и число и как-то переставляет в ней буквы. Реализовываем различные сдвиги, вводим слово openre и выводим каждую итерацию в консоль, смотрим примерно на 20 позицию, потому что без понятия что там по +-1. При определённом алгоритме встречаем opener на 21 позиции, а это 20 если с нуля.
Меняем входное значение на то, что находится на другой стороне монеты u9pgezed6. Повторяем тоже самое, но уже знаем про +1 и смотрим на 2010 итерацию, вместо 2009 приходим к u9edez6gp (файл с сгенерированными строками).
Из подсказок знаем, что конец первого этапа место. Ищем способы задать точное место строкой, натыкаемся на Plus коды Google, но формат не тот. Ищем альтернативные варианты и находим GeoHash! Для эксперимента вбиваем на этом сайте город Минск и сравниваем две строки. Похожи! Вводим нашу полученную строку с монет:
Место выглядит абы-где, как будто не туда, куда надо, указано, но я был там летом (проходил тестирование) и знаю, что там есть офис Itransition. Это точно то, что нам надо! По приходу на место бросается эта красота:
Первым делом я гуглю картинку, выхожу на ask девушки, потом на её instagram, интересуюсь в директе, откуда у неё эта фотография, как она с ней связана и прочее (объяснив ситуацию с конкурсом, конечно же). Оказывается, что девушка просто неподалеку отдыхала в каком-то заведении, а на улице была эта стена, которую она сфотографировала и опубликовала.
Присмотревшись к стене, находим ссылки на авторов ими оказались две девушки. Одна ссылка на Instagram профиль там, как раз, процесс создания этого шедевра. Вторая ссылка пользователь Telegram. Перейдя по второй, похвалив за проделанную работу (правда ведь красиво), спрашиваю: Связано ли это с конкурсом как-то?, на что получаю положительный ответ: Да ребята мы рисовали по строгому задания там нужно найти закономерность в этих чудовищных больше ничего сказать не могу. Нас не трогать.
Продолжаем залипать на стену, рассматривать монстров. Думаю, что-то в сторону конечностей. Не помню, кто именно, но точно не я, замечает, что это матрица 8x8, где каждый элемент монстр. Теперь и скобки [] в условии задачи выглядят для нас не как целая часть числа, а как обозначение матрицы.
Возвращаемся к переводу орёл и решка на английский язык (к этому подстегнула музыкальная подсказка с песней Лепса Уходи по-английски), закидываю идею посчитать heads и tails каждого монстра в отдельных матрицах. Долго сопротивляемся, но решаем попробовать. Сопротивляемся по той причине, что чёрт ногу сломит тут понять что хвост, а что голова и сколько их. Матрицы перемножаем:
Замечаем подозрительное количество четвёрок (да и в знаменателе она же). Игорь заменяет все ненулевые элементы на 4, так как могли ошибиться при подсчёте и получает следующую картину:
Игорь ничего не разглядел на этой матрице и начал циклически сдвигать вправо авось, что проявится. Отчаявшись, скинул в чатик:
Заключение
Всего было полсотни задач и рассказывать красочно о каждой, в рамках одной статьи, просто нецелесообразно. Мы отобрали те, где есть, что показать и рассказать. К сожалению, сюда не вошли алгоритмические задачи, коих было достаточное количество.
Чего мы только не вытворяли, чтобы достигнуть решения. Писали код на двух языках в одном файле, который будет без проблем выполняться в разных компиляторах. Коллизии MD5 хэш трёх разных файлов с кодом, игрались с RFC 2898 + AES, изучили флаги стран по цветам, выучили Ruby, пописали на asme, подеобфусцировали кучу раз код и многое-многое другое
Это был незабываемый месяц! Рекомендуем принять участие в следующем году! А вот и обещанная задача про Python (без решения):
Написать скрипт на языке Python 3, который: состоит не более чем из 4000 латинских букв и круглых или угловых скобок; при запуске печатает на консоль переданные в скрипт аргументы в обратном порядке (каждый на отдельной строке).
Дополню, что пробелы использовать запрещено. Исключительно то, что написано в условии. Жду вас в комментариях!
Спасибо, что дочитали аж до сюда! Всем МурмурХеша.
Источник: habr.com
К списку статей
admin
Опубликовано: 23.06.2020 16:19:11
0
Сейчас читают
MEX (Minimum EXcluded) Алгоритм поиска минимального отсутствующего числа
Обучаем качественные модели без DensePose разметки
К вопросу о личной эффективности
4G-камера с детекцией человека
Recovery mode Правильное распределение ролей в проекте половина успеха!
История одной ракушки. И нефти
Комментариев (0)
Имя
Электронная почта
Ctf
Сломать ИИ разбор заданий AI CTF на PHDays 10
Продолжая развивать тему безопасности и рисков AI, в рамках конференции мы собрали трек с докладами и CTF-соревнование для безопасников, затрагивающее риски AI. В этой статье расскажем про соревнование: какие задания были и как все прошло.
AI CTF проходит не первый раз, прошлое описание формата и заданий в прошлой статье.
Ломаем зашифрованный диск для собеседования от RedBalloonSecurity. Part 0x02
По мотивам
Часть 0x00
Часть 0x01
Перевод Как хакнуть Github и заработать 35000?
Когда я нашёл эту уязвимость и сообщил о ней, она стала моим первым оплаченным баг-репортом на HackerOne. $35,000 это также самая высокая награда, которую я получил от HackerOne (и я считаю, что самая высокая оплата от GitHub на сегодня). Многие найденные ошибки, кажется, это
Ломаем зашифрованный диск для собеседования от RedBalloonSecurity. Part 1
А что дальше?
Хабровчане и хабровчушки, эта статья является долгожданным (ага, в пару дней) продолжением моей предыдущей статьи о взломе жесткого диска для собеседования в инфосек компанию RedBalloonSecurity. Любителей поковырять железяки я спешу разочаровать, поскольку все дальнейшие манипуляции с диском будут проводится только на уровне ассемблерного кода и логики. Поэтому, приготовьте чай/кофе или чего покрепче, ведь мы
Ломаем зашифрованный диск для собеседования от RedBalloonSecurity. Part 0
По мотивам
Темная сторона
В нашей жизни существуют моменты, когда все тихо. Все переменные соблюдены и выровнены, а существование давно не преподносит перемен: все люди, которые рядом уже давно стали д
HackTheBox. Прохождение Academy. RCE в Laravel и LPE через composer
Продолжаюпубликацию решений отправленных на дорешивание машин с площадки HackTheBox. Надеюсь, что это поможет хоть кому-то развиваться в области ИБ.
Подключение к лаборатории
Алгоритмы
Powershell настоящий язык программирования. Скрипт оптимизации рутины в техподдержке
Работая в компании IT-аутсорса в качестве руководителя 3 линии поддержки, задумался, как автоматизировать подключение сотрудников по RDP, через VPN к серверам десятков клиентов.
Таблички с адресами, паролями и прочими настройками серверов, конечно, хорошо, но поиск клиента и вбивание адресов с аккаунтами занимает довольно существенное время.
Держать все подключения к VPN в Windows не самая лучшая идея, да и при переустан
Геопространственное моделирование с применением методов машинного обучения
Всем привет! Меня зовут Константин Измайлов, я руководитель направления Data Science в Delivery Club. Мы работаем над многочисленными интересными и сложными задачами: от формирования классических аналитических отчетов до построения рекомендательных моделей в ленте приложения.
Сегодня я расскажу пр
Как я пытался придумать новый подход к изучению алгоритмов через интерактивные визуализации
Представьте человека, который изучает алгоритмы. Чтобы понять как они работают, приходится изучать их код и представлять, как компьютер будет его выполнять. Это странно почему мы должны учиться думать как компьютер, вместо того, чтобы заставить его помогать на
Исследование операций
Cодержание
Введение
Основные понятия и термины
Характеристика ИО как научной дисциплины
Этапы операционного исследования
Постановка задачи
Построени
Запросить 100 серверов нельзя оптимизировать код. Ставим запятую
Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие ба
Как синхронизировать сценарий без транзакций? Штатными средствами Java
Давайте представим, что вы параноик, и параноик вдвойне, когда дело касается многопоточности. Предположим, что вы делаете backend некого функционала приложения, а приложение переодически дергает на вашем серверы какие-то методы. Все вроде хорошо, но есть одно но. Что если ваш функционал напрямую зависит от каких-либо других данных, того же банального профиля например? Встает вопрос, как гарантировать то, что сценарий отработает име
Программирование
Пятьдесят лет на стезе программирования. Часть I. Начало пути. Отчий дом и Казанское суворовское военное училище
Логотип статьи определяет три, как временные, так и географические, точки на моём жизненном пути, через которые лежал мой путь в страну под названием Программирование. В городе Чебоксары, на родине легендарного комдива Гражданской войны В.И.Чапаева, прошло моё детство (1954-1968 г.г.), там я закончил 8
Принцип работы EditorScript
Всем привет. С вами я, stalker320, и сегодня я хотел бы рассказать про написание служебных скриптов, запускающихся в редакторе. Всем желающим прочесть - добро пожаловать под кат
EditorScript - это такой скрипт, который можно запустить по нажатию комбинации Ctrl+Shift+X прямо из движка. Он может исполнять различные служебные функции. К примеру создать необходимую структуру каталогов в проекте.
Производительность компилятора при работе с концептами в C20
Привет, меня зовут Александр, я старший разработчик ПО в Центре разработкиOrionInnovation. Хочу признаться, я люблю рассказывать про C++ и не только на различных митапах и конференциях.Ивотядобрался доХабра. НаCppConfRussiaPiter2020 я рассказывал про концепты и послевыступлен
Powershell настоящий язык программирования. Скрипт оптимизации рутины в техподдержке
Работая в компании IT-аутсорса в качестве руководителя 3 линии поддержки, задумался, как автоматизировать подключение сотрудников по RDP, через VPN к серверам десятков клиентов.
Таблички с адресами, паролями и прочими настройками серверов, конечно, хорошо, но поиск клиента и вбивание адресов с аккаунтами занимает довольно существенное время.
Держать все подключения к VPN в Windows не самая лучшая идея, да и при переустан
Как подружить Redis Cluster c Testcontainers?
В 26-м выпуске NP-полного подкаста я рассказывал, что начал переводить один из своих сервисов из Redis Sentinel на Redis Cluster. На этой неделе я захотел потестировать данный код, и, конечно же, выбрал Testcontainers для этого. К сожалению, Redis Cluster в тестовых контейнерах не з
Перевод Почему я всё ещё люблю C, но при этом терпеть не могу C?
Мне на удивление часто приходится говорить о том, почему мне всё ещё нравится язык C, и о том, почему я плохо отношусь к C++. Поэтому я решил, что мне стоит об этом написать, а не снова и снова повторять одно и то же.
Как это обычно бывает у C-программистов, язык C не был ни моим первым яз
Спортивное программирование
Головоломки Tech Monsters Night
Совсем недавно М.Видео-Эльдорадо в рамках хакатона Tech Monsters Night предложили всем желающим стать участниками интеллектуальной битвы, решив серию головоломок.
Итоги состязания известны, победители получили свои заслуженные пр
The Standoff, май 2021 года. О пойманных зверьках в песочнице
С 18 по 21 мая 2021 года на киберполигоне The Standoff прошло очередное противостояние между атакующими и защитниками. Бои проходили в вымышленном городе FF, представляющем собой обширную инфраструктуру, моделирующую технологические и бизнес-процессы компаний в промышленности, энергетике, на транспорте, в финансах и других секторах.
Открыт набор атакующих и защитников для участия в кибербитве The Standoff на Positive Hack Days
18 мая начинаются киберучения на полигоне The Standoff, который в этом году станет полноправным партнером форума Positive Hack Days 10 (пройдет 20 и 21 мая). Все меньше времени остается до обоих событий, и мы рады сообщить, что открыли набор команд атакующих и защитников, которые будут бороться д
Устройство игрового бота 16-е место в финале Russian AI Cup 2020 (и 5-е после)
Эта статья об участии в чемпионате по написанию игрового искусственного интеллекта Russian AI Cup
Дисклеймер, пока все не разбежались
Чемпионаты по программированию развлечение для студентов или способ устроиться на работу мечты?
Разные организации икрупные компании постоянно проводят чемпионаты, соревнования иолимпиады попрограммированию. Состороны они выглядят как развлечения для студентов или тех, укого много свободного времени. Икажется, что серьезным людям, занятым вкоммерческой разработке, натаких мероприятиях делать нечего.
Действительно, бывают чемпионаты чисто спортивные, куда люди приходят себя показать. Абывают другие
Что послушать какие темы вошли в первый сезон подкаста о науке и технологиях ITMO Research_
Рассказываем о передаче с участием преподавателей, научных сотрудников, специалистов и руководителей различных подразделений Университета ИТМО. Помимо компактных описаний каждого выпуска линкуем текстовые расшифровки на Хабре и YT-версии с таймкодами.
Opener
Opener 2020 Самый сок
Введение
На протяжении всего апреля мы с командой после учёбы и работы решали увлекательные задачи в рамках конкурса Opener от компании Itransition. Вместе с конкурсом закончился наш лучший месяц на самоизоляции. Теперь, отдохнув, я готов спокойно поделиться этим оп
Itransition
Opener 2020 Самый сок
Введение
На протяжении всего апреля мы с командой после учёбы и работы решали увлекательные задачи в рамках конкурса Opener от компании Itransition. Вместе с конкурсом закончился наш лучший месяц на самоизоляции. Теперь, отдохнув, я готов спокойно поделиться этим оп
Конкурс
Бесплатный онлайн-фестиваль Хочу в геймдев
Приглашаем наонлайн-фестиваль "Хочу в геймдев", который проводится в рамках Russian Creativity Week и состоится8, 9 и 11 июля 2021 г.
Охоту на Макбук объявляем открытой
Умеете хорошо писать по ИТ-теме? Можете объяснить своей бабушке, что такое DevOps на пальцах? Рассказываете коту про кортежи и полиморфизм? Хватит держать это в себе! Напишите классную статью в наш блог на Хабре и выиграйте Макбук с M1, с котором сможете делать ещё больше крутых штук. На старт, внимание а всё, вы уже в деле.
Стереотипам вопреки коллекция вдохновляющих корпоративных постов
К корпоративным блогам на Хабре не самое тёплое отношение. Если компания о чём-то пишет, значит, рекламируется. А раз рекламируется, то пытается втюхать простому хабравчанину что-то, что ему даром не нужно. Но это, конечно, просто навязчивый стереотип. Компании в своих блогах
Бесплатная онлайн-конференция Нарратив в играх
21 марта 2021 года(воскресенье), с 12:00 и до 19:00, состоится Бесплатная онлайн-Конференция: Нарратив в играх.
Мероприятие посвящено всем, кто по-настоящему любит игры, хороший сю
Microsoft приглашает российских школьников и первокурсников к участию в технологическом конкурсе Imagine Cup Junior
Российские школьники и студенты первых курсов вузов могут подать заявку на участие в международном конкурсе технологических проектов до 21 мая 2021 года.
Microsoft приглашает к участию в конкурсе Imagine Cup Junior глобальной инициативе по развитию актуальных технологических навыков у школьников, студентов колледжей и первокурсников в возрасте от 13 до 18 лет, посвященный искусственному интеллекту и использованию ин
Перевод Призёры ежегодного конкурса Королевского фотографического общества Британии Научный фотограф
Королевское фотографическое общество объявило победителей очередного конкурса научный фотограф. Фотографии демонстрируются на манчестерском фестивале науки, который в этом году
Задачи
Трекинг ног и пет-паспорта no-code решение для банка задач
Весной 2021 проходит шестой запуск проектно-образовательного интенсива От идеи к прототипу Университета 20.35. В нём студенты придумывают идеи для будущих технологических проектов самостоятельно, либо получают их от инновационных бизнес-компаний. С 2020 года в интенсивах существует Банк задач чуть больше чем за год в проект привлечено 30+ компаний, в 25% случаев заказчики предлагали студентам стажировку или работу по итогам интенси
Разбор секции DESIGN на DUMP куда расти и развиваться?
Дизайн - одна из самых заметных и посещаемых секций на конференции DUMP. Здесь стоит вспомнить доклад Алексея Кулакова про обратную связь. На прошлой конференции он затронул очень важные и близкие каждому дизайнеру вопросы:
Перевод Заключённый использовал одиночную камеру для изучения математики. Сегодня он решает самые трудные уравнения в мире
В 2010 году, некий Кристофер Хейвенс (Christopher Havens) был приговорен к 25 годам тюремного заключения за убийство. В 2020 году его работа по теории чисел была опубликована в научном журнале. Все стены камеры, в которой Кристофер Хейвенс отбывал 25-летний срок за убийство,
Тотальный JavaScript изучаем JS с акцентом на практической составляющей
Доброго времени суток, друзья!
Когда речь заходит об изучении JavaScript, будь то первое знакомство с языком или углубление имеющихся знаний, найти в интернетах теоретические материалы не составляет особого труда. Мой топ-5:
SQL для аналитики рейтинг прикладных задач с решениями
Привет, Хабр! У кого из вас black belt на sql-ex.ru, признавайтесь? На заре своей карьеры я немало времени провел на этом сайте, практикуясь и оттачивая навыки. Должен отметить, что это было увлекательное и вознаграждающее путешествие. Пришло время воздать должное.
В этой публикации я собрал топ прикладных задач и мои подход
Популярные задачи для собеседований бэкенд-разработчиков на Go и их решения
Я живу в Ташкенте, и когда учился в университете начал учить Python, чтобы писать ботов. Боты это узбекский хлеб, у нас на них построено вообще все. Например, никто не делает приложения для заказа еды, все только в мессенджерах.
Я учил язык по статьям из интернета просто брал каркас и дальше дописывал, смотрел, где что падает, постоянно решал задачи на leetcode. Писал я тогда ужасно, но что было, то было. Мне нравилось, но ч
Задачи для программистов
Из песочницы AI на минималках пишем свой Сокобан и учим компьютер его решать
В этой статье я расскажу как написать свою реализацию известной игрушки Сокобан, а также алгоритм для её решения с нуля. Заодно применю на практике некоторые шаблоны проектирования и принципы SOLID.
Можно порешать задача про лидарное облако откоманды беспилотных автомобилей Яндекса
Меня зовут Андрей Гладков, я разработчик в направлении беспилотных автомобилей. Сегодня я поделюсь с сообществом Хабра задачей, которая связана с важ
Opener 2020 Самый сок
Введение
На протяжении всего апреля мы с командой после учёбы и работы решали увлекательные задачи в рамках конкурса Opener от компании Itransition. Вместе с конкурсом закончился наш лучший месяц на самоизоляции. Теперь, отдохнув, я готов спокойно поделиться этим оп


content:
Начинаем неделю с продолжения серии статей, подготовленных специально для базового и продвинутого курсов Математика для Data Science.
В конце статьи, поделимся с вами списком самых интересных материалов по этой теме.
Новый подход
Мультиагентное обучение с подкреплением это развивающаяся и богатая область исследований. Тем не менее постоянное применение одноагентных алгоритмов в мультиагентных контекстах ставит нас в затруднительное положение. Обучение усложняется по многим причинам, в особенности из-за:
Нестационарности между независимыми агентами;
Экспоненциального роста пространств действий и состояний.
Исследователи нашли множество способов уменьшить воздействие этих факторов. Большая часть этих методов попадает под понятие централизованного планирования с децентрализованным выполнением.
Централизованное планирование
У каждого агента есть прямой доступ к локальным наблюдениям. Эти наблюдения могут быть самыми разнообразными: изображения окружающей среды, положения относительно определенных ориентиров или даже положения относительно других агентов. Помимо этого, во время обучения все агенты управляются центральным модулем или критиком.
Несмотря на то, что у каждого агента для обучения есть только локальная информация и локальные политики, существует сущность, которая наблюдает за всей системой агентов и говорит им, как обновлять политики. Таким образом уменьшается эффект нестационарности. Все агенты обучаются с помощью модуля с глобальной информацией.
Децентрализованное выполнение
Во время тестирования центральный модуль удаляется, а агенты со своими политиками и локальными данными остаются. Так уменьшается вред, наносимый увеличивающимися пространствами действий и состояний, поскольку совокупные политики никогда не изучаются. Вместо этого мы надеемся, что в центральном модуле достаточно информации, чтобы управлять локальной политикой обучения таким образом, чтобы оно было оптимальным для всей системы, как только наступит время проводить тестирование.
OpenAI
Исследователи из OpenAI, Калифорнийского университета в Беркли и Университета Макгилла, представили новый подход к мультиагентным настройкам с помощью Multi-Agent Deep Deterministic Policy Gradient. Такой подход, вдохновленный своим одноагентным аналогом DDPG, использует обучение вида актер-критик и показывает очень многообещающие результаты.
Архитектура
Данная статья предполагает, что вы знакомы с одноагентной версией MADDPG: Deep Deterministic Policy Gradients или DDPG. Чтобы освежить память, вы можете прочитать замечательную статью Криса Юна.
У каждого агента есть пространство наблюдений и непрерывное пространство действий. Также у каждого агента есть три компонента:
Сеть актеров, который использует локальные наблюдения для детерминированных действий;
Целевая сеть актеров с аналогичным функционалом для стабильного обучения;
Сеть критиков, которая использует совместные пары состояние-действие для оценки Q-значений.
По мере того, как критик с течением времени изучает совместные Q-значения функции, он отправляет соответствующие приближения Q-значения актеру, чтобы помочь в обучении. В следующем разделе мы рассмотрим это взаимодействие подробнее.
Помните, что критик может быть общей сетью между всеми N агентами. Другими словами, вместо того чтобы обучать N сетей, которые оценивают одно и то же значение, просто обучите одну сеть и используйте ее, чтобы она помогла обучению всех остальных агентов. То же самое относится и к сетям актеров, если агенты однородные.
Архитектура MADDPG (Lowe, 2018)
Обучение
Во-первых, MADDPG использует воспроизведение опыта (experience replay) для эффективного off-policy обучения. На каждом промежутке времени агент хранит следующий переход:
Где мы храним совместное состояние, следующее совместное состояние, совместное действие и каждое из вознаграждений, полученных агентом. Затем мы берем набор таких переходов из experience replay для обучения нашего агента.
Обновления критика
Для обновления центрального критика агента мы используем lookahead TD-ошибку:
Где это актер. Помните о том, что это центральный критик, то есть он использует общую информацию для обновления своих параметров. Основная идея заключается в том, что если знать действия, которые предпринимают все агенты, то окружающая среда будет стационарной даже при изменении политики.
Обратите внимание на правую часть выражения с расчетом Q-значения. Несмотря на то, что мы никогда не сохраняем наши следующие совместные действия, мы используем каждого целевого актера агента для вычисления следующего действия во время обновления, чтобы сделать обучение более стабильным. Параметры целевого актера периодически обновляются, чтобы соответствовать параметрам актера агента.
Обновления актеров
Подобно одноагентной DDPG мы используем deterministic policy gradient для обновления каждого параметра актера агента.
Где это актер агента.
Давайте немного углубимся в это выражение обновления. Мы берем градиент относительно параметров актера с помощью центрального критика. Самое важное, на что нужно обратить внимание, это то, что даже если у актера есть только локальные наблюдения и действия, во время обучения мы используем центрального критика, чтобы получать информацию об оптимальности его действий в рамках системы целиком. Так уменьшается эффект нестационарности, а политика обучения остается на более низком пространстве состояний!
Выводы из политик и ансамбли политик
Мы можем сделать еще один шаг в вопросе децентрализации. В предыдущих обновлениях мы предполагали, что каждый агент автоматически узнает действия других агентов. Однако, MADDPG предлагает делать выводы из политики других агентов, чтобы сделать обучение еще более независимым. Фактически каждый агент будет добавлять N-1 сетей для оценки истинности политики всех других агентов. Мы используем вероятностную сеть, чтобы максимизировать логарифмическую вероятность вывода наблюдаемого действия другого агента.
Где мы видим функцию потерь для i-ого агента, оценивающего политику j-ого агента с помощью регуляризатора энтропии. В результате, наше целевое Q-значение становится немного другим, когда мы заменяем действия агента своими прогнозируемыми действиями!
Итак, что же в итоге получилось? Мы убрали предположения о том, что агенты знают политику друг друга. Вместо этого мы пытаемся обучить агентов предсказывать политики других агентов на основе серии наблюдений. Фактически каждый агент обучается независимо, получая глобальную информацию из окружающей среды вместо того, чтобы просто по умолчанию иметь ее под рукой.
Ансамбли политик
В вышеописанном подходе есть одна большая проблема. Во многих мультиагентных настройках, особенно в конкурентных, агенты могут создавать политики, которые могут переобучиться на поведении других агентов. Это сделает политику хрупкой, нестабильной и, как правило, неоптимальной. Чтобы компенсировать этот недостаток, MADDPG обучает коллекцию из K подполитик для каждого агента. На каждом временном шаге агент случайным образом выбирает одну из подполитик для выбора действия. А затем выполняет его.
Градиент политики немного изменяется. Мы берем среднее значение по K подполитикам, используем линейность ожидания и распространяем обновления с помощью функции Q-значения.
Вернемся на шаг назад
Вот так в общих чертах и выглядит весь алгоритм. Сейчас нужно вернуться назад и осознать, что именно мы сделали и интуитивно понять, почему это работает. По сути, мы сделали следующее:
Определили актеров для агентов, которые используют только локальные наблюдения. Таким образом можно взять под контроль отрицательный эффект от экспоненциально увеличивающихся пространств состояний и действий.
Определили центрального критика для каждого агента, который использует совместную информацию. Так мы смогли уменьшить влияние нестационарности и помогли актеру сделать стать оптимальным для глобальной системы.
Определили сети выводов из политик для оценки политик других агентов. Так мы смогли ограничить взаимозависимость агентов и устранить необходимость в том, чтобы у агентов была совершенная информация.
Определили ансамбли политик для уменьшения эффекта и возможности переобучения на политиках других агентов.
Каждый компонент алгоритма служит определенной отдельной цели. Мощным алгоритм MADDPG делает следующее: его компоненты разработаны специально для преодоления серьезных препятствий, которые обычно встают перед мультиагентными системами. Дальше мы поговорим о производительности алгоритма.
Результаты
MADDPG был апробирован во многих средах. Полный обзор его работы можно найти в статье [1]. Здесь мы поговорим только о задаче кооперативной коммуникации.
Обзор среды
Есть два агента: говорящий и слушающий. На каждой итерации слушающий получает цветную точку на карте, к которой нужно двигаться, и получает награду, пропорциональную расстоянию до этой точки. Но вот в чем загвоздка: слушающий знает только свое положение и цвет конечных точек. Он не знает, к какой точке он должен двигаться. Однако говорящий знает цвет нужной точки для текущей итерации. В результате два агента должны провзаимодействовать для решения этой задачи.
Сравнение
Для решения этой задачи в статье противопоставляются MADDPG и современные одноагентные методы. С использованием MADDPG видны значительные улучшения.
Также было показано, что выводы из политик, даже если политики не были обучены идеально, достигали они тех же успехов, каких можно достичь при использовании истинных наблюдений. Более того, не было замечено значительного замедления конвергенции.
Наконец, ансамбли политик показали очень многообещающие результаты. В статье [1] исследуется влияние ансамблей в конкурентной среде и демонстрируется значительное улучшение производительности по сравнению с агентами с одной политикой.
Заключение
Вот и все. Здесь мы рассмотрели новый подход к мультиагентному обучению с подкреплением. Конечно, существует бесконечное количество методов, относящихся к MARL, однако MADDPG обеспечивает прочный фундамент для методов, которые решают самые глобальные проблемы мультиагентных систем.
Источники
[1] R. Lowe, Y. Wu, A. Tamar, J. Harb, P. Abbeel, I. Mordatch, Multi-Agent Actor-Critic for Mixed Cooperative-Competitive Environments (2018).
Список полезных статей
3 ловушки, в которые попадают начинающие Data Scientists
Алгоритм AdaBoost
Как прошел 2019 год в области математики и Computer Science
Машинное обучение столкнулось с нерешенной математической проблемой
Понимаем теорему Байеса
Поиск контуров лица за одну миллисекунду с помощью ансамбля деревьев регрессии
Всех, кому интересно узнать о курсах подробнее и ознакомиться с программой обучения, приглашаем на бесплатный вебинар с автором курса, в рамках которого будут даны ответы на основные вопросы. Также у участников вебинара будет возможность получить скидочный сертификат на оплату курса.
Источник: habr.com
К списку статей
admin
Опубликовано: 29.06.2020 14:12:48
0
Сейчас читают
Перевод Сравнение Java-записей, Lombok Data и Kotlin data-классов
Перевод Как автор Дневников Киллербота Марта Уэллс преодолела карьерный кризис и создала убийственно крутую серию
Работа в Dell Technologies мнение девушки. Гендерное равенство, декреты и построение карьеры после рождения детей
Видеокарты продолжат дорожать накрутка при помощи посредников, нехватка мощностей и геймеры
Большая ретроспектива на несколько команд. Зачем она нужна, и как ее провести с пользой
Перевод Находим опасные браузерные расширения по фальшивым отзывам
Комментариев (0)
Имя
Электронная почта
Блог компании otus. онлайн-образование
С безопасность для новичков
Привет, хабровчане. Для будущих студентов курса "C++ Developer. Professional" Александр Колесников подготовил статью.
Приглашаем также посмотреть открытый вебинар на тему Области видимости и невидимости. За 1,5 часа участники вместе с экспертом успеют реализ
Хранимая процедура с возвращаемыми значениями в SSIS
Для будущих учащихся на курсе "MS SQL Server Developer" преподаватель и эксперт по базам данных Евгений Туркестанов подготовил полезную статью.
Приглашаем также на открытый вебинар по теме Polybase: жизнь до и после. На занятии участники вместе с экспертом
Перевод Scala 3 Dotty Факты и Мнения. Что мы ожидаем?
Привет, Хабр. Для будущих студентов курса Scala-разработчик подготовили перевод материала.
Приглашаем также на открытый вебинар Эффекты в Scala. Участники вместе с экспертом рассмотрят понятие эффекта и сложности, которые могут возникать при их наличии, а также рассмотрят понятие функционального
Перевод Изучение методов кэширования в React
Как использовать memoization, contexts, useMemo, useState, и useEffect
Для будущих учащихся на курсе "React.js Developer" подготовили перевод материала. Также приглашаем всех желающих на открытый вебинар ReactJS: быстрый старт. Сильные и слабые стороны.
Исполняемый обвес
Привет, хабровчане. Для будущих студентов курса Reverse-Engineering. Basic Александр Колесников подготовил полезную статью.
Также приглашаем всех желающих посетить открытый вебинар на тему Эксплуатация уязвимостей в драйвере. В первой части вебинара будет пример классической уязвимости переполнени
Тестирование скриншотами
Для будущих студентов курса Python QA Engineer подготовили авторскую статью.
Также приглашаем на открытый вебинар по теме Непрерывная интеграция с Jenkins. Рассмотрим, как настраивать автоматический запуск тестов, устанавливать плагины и создавать бекапы ко
Big data
Стоит ли смотреть в сторону Data science?
Очень много людей с самым разным бэкграундом, и не всегда даже техническим, в последнее время пытаются перейти в data science. И такой ажиотажный интерес - проблема для всех, кто рассматривает переквалификацию в эту сферу. Потому что рынок труда может оказаться наводнён соискателям без опыта.
С точки зрения потенциального работодателя: вы скорее возьмёте выпускника технического вуза, или человека за 40, без профильного опыта
Как мы весь интернет сканировали
Всем привет! Меня зовут Александр и я пишу код для 2ip.ru. За добрую половину сервисов можно пинать меня, готов отбиваться. Cегодня я хочу немного рассказать про переделку одного нашего старого сервиса. Это конечно не "big data", но всё равно довольно большие объемы информации, поэтому думаю будет интересно.
Речь пойдет про
RamblerMeetupampUsermodel
Мы долго шли к этому и вот наконец! Наш внутренний RamblerMeetup&Usermodel выходит в свет! Уже 30 июня эксперты поделятся своими кейсами в области ML и Big Data.
Митап пройдет в онлайн-формате, начало в 19:00. Обязательна предварительная
Что нам стоит загрузить JSON в Data Platform
Всем привет!
В недавней статье мы рассказали, как мы шли к построению нашей Data Platform. Сегодня хотелось бы глубже погрузиться в желудок нашей платформы и попутно рассказать вам о том, как мы решали одну из задач, которая возникла в связи с ростом разнообразия интегрируемых источников данных.
То есть, если возвращаться к финальной картинке из упомянутой выше статьи (специально дублирую ее, чтобы уважаемым чи
Запросить 100 серверов нельзя оптимизировать код. Ставим запятую
Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие ба
Перевод Линейная алгебра для исследователей данных
Иллюстрация: UCI
Наша [Ирвинга Капланского и Пола Халмоша] общая философия в отношении линейной алгебры такова: мы думаем в безбазисных терминах, пишем в безбазисных терминах, но когда доходит до серьезно
Математика
Перевод Наглядно о том, почему трансформеры работают настолько хорошо
Трансформеры за последние несколько лет штурмом захватили мир NLP, а сегодня они с успехом применяются в выходящих за рамки NLP приложениях. Они обладают такими возможностями благодаря модулю внимания, который схватывает отношения между всеми словами последовательностей. Но са
Компьютерное доказательство теории конденсированной математики первый шаг к великому объединению
Пример расчётного доказательства в Lean
Математики давно используют компьютеры в своей работе как инструменты для сложных вычислений и выполнения рутинных операций перебора. Например, в 1976 году методом компьютерного перебора была доказана
Перевод Plt0.05, и откуда оно (иногда) берётся
Зарабатывать продажей лекарств, которые заведомо не работают, не только аморально, но и не особо легко. Люди всё-таки обычно не хотят покупать препараты, неэффективность которых была доказана. А вот если вы сумели выдавить заветное p < 0.05 в пользу того, что акупунктура та
Log-Sum-Exp Trick как свойства функций делают работу классификаторов реальной
В этой статье мы рассмотрим, что такое классификатор, поговорим о мультиклассовой классификации с помощью нейронных сетей. Затем, ознакомившись с контекстом перейдем к основному топику поста к Log-Sum-Exp Trick. Напишем формулы и разберемся, как этот трюк помогает избежать переполнения чисел с плавающей то
Оцениваем открытые и коммерческие цифровые модели рельефа
В дополнение к открытым спутниковым данным, некоторые из которых перечислены в статье Общедоступные данные дистанционного зондирования Земли: как получить и использовать, существует и множество производных продуктов например, рельеф. Притом можно найти открытый рельеф разного пространственного разрешения, равно как и множество коммерческих, и появляется задача выбрать лучший продукт из доступных.
Тайна списка шумерских царей. Часть 1. Машина времени
Призма Вельда-Бланделла
На рубеже четвертого и третьего тысячелетия до нашей эры на Земле возникли две первые цивилизации. В долине Нила после объединения верхнего и нижнего Египта образовалось
Машинное обучение
Стоит ли смотреть в сторону Data science?
Очень много людей с самым разным бэкграундом, и не всегда даже техническим, в последнее время пытаются перейти в data science. И такой ажиотажный интерес - проблема для всех, кто рассматривает переквалификацию в эту сферу. Потому что рынок труда может оказаться наводнён соискателям без опыта.
С точки зрения потенциального работодателя: вы скорее возьмёте выпускника технического вуза, или человека за 40, без профильного опыта
Перевод Учимся понимать таблицы на меньшем объеме данных
Задача распознавания семантического следования (textual entailment), или импликации (natural language inference), в текстах на естественном языке состоит в определении того, может ли часть текста (посылка, антецедент) подразумеваться или противоречить (или не противоречить) другому фрагменту текст
Распознавание эмоций в записях телефонных разговоров
Технология распознавания эмоций в речи может может найти применение в огромном количестве задач. В частности, это позволит автоматизировать процесс мониторинга качества обслуживания клиентов call-центров.
Определение эмоций человека по его речи уже относительно насыщенн
БСД, или как легко объяснить финансистам их же задачи в терминах машинного обучения
Мне давно нравятся Байесовские сети доверия
Перевод Оптимизация платежей в Dropbox при помощи машинного обучения
Представьте ситуацию: вам нужно воспользоваться оплаченным (как вы думаете) сервисом и вдруг оказывается, что он отключен за неуплату. Такая неприятность портит впечатление от бренда, снижая поток прибыли, а внезапно отключенный клиент может не вернуться к сервису. К старту ку
Log-Sum-Exp Trick как свойства функций делают работу классификаторов реальной
В этой статье мы рассмотрим, что такое классификатор, поговорим о мультиклассовой классификации с помощью нейронных сетей. Затем, ознакомившись с контекстом перейдем к основному топику поста к Log-Sum-Exp Trick. Напишем формулы и разберемся, как этот трюк помогает избежать переполнения чисел с плавающей то
Artificial intelligence
5 условий зарождения искуственного интеллекта в индустрии
Революция искусственного интеллекта не грядёт, она уже здесь и требует от компаний переосмысления бизнес-процессов, чтобы максимально использовать возможности искусственного интеллекта (ИИ) для расширения человеческих способностей.
Итак, у всех, кто интересуется современными технологиями, н
Как мы сделали акселератор инференса нейронных сетей для ЦОД с 64 чипами Intel Movidius
Некоторое время назад мы искали оптимальное аппаратное и программное обеспечение для исполнения нейронных сетей в ЦОД и "на краю" (edge computing). В рамках нашего исследования мы протестировали множество устройств, от процессоров до встроенной графики iGPU и GPGPU различных производителей. С результатами исследования можно ознакомиться
Обнаружение объектов с помощью YOLOv3 на Tensorflow 2.0
Кадр из аниме "Жрица и медведь"
До появления YOLO большинство способов обнаружения объектов пытались адаптировать классификаторы для детекции. В YOLO же, обнаружение объектов было сформулировано как
Artificial Intelligence, герой нашего времени. Этюд
Хм. Один из пунктов, регламентирующих действия модераторов на Хабре, сформулирован следующим образом: не надо пропускать статьи, слабо относящиеся к IT-тематике или не относящиеся к ней вовсе. Что сходу заставило автора призадуматься, а имеет ли прямое отношение к "IT-тематике" его пост, повествующий о некоторых этапах программирования забавного и увлекательного своего pet-проекта, несложного AI, выстраивающего нейронную сеть на ос
Перевод Обзор статьи AdderNet Действительно ли нам нужно умножение в глубоком обучении? (Классификация изображений)
Использование сложения вместо умножения для свертки результирует в меньшей задержке, чем у стандартной CNN
Как системы ИИ преображают digital-маркетинг мнение эксперта и обсуждение проектов
Сотрудники лаборатории машинного обучения Университета ИТМО занимаются не только теорией, но и прикладными проектами. Некоторым из них удается вдохновлять участников научного и профессионального сообщества по всему миру, преображать бизнес и цифровое пространство. Такую работу ведет Media Research Group под руководством профессора
Machine learning
Перевод Оптимизация платежей в Dropbox при помощи машинного обучения
Представьте ситуацию: вам нужно воспользоваться оплаченным (как вы думаете) сервисом и вдруг оказывается, что он отключен за неуплату. Такая неприятность портит впечатление от бренда, снижая поток прибыли, а внезапно отключенный клиент может не вернуться к сервису. К старту ку
Log-Sum-Exp Trick как свойства функций делают работу классификаторов реальной
В этой статье мы рассмотрим, что такое классификатор, поговорим о мультиклассовой классификации с помощью нейронных сетей. Затем, ознакомившись с контекстом перейдем к основному топику поста к Log-Sum-Exp Trick. Напишем формулы и разберемся, как этот трюк помогает избежать переполнения чисел с плавающей то
Геопространственное моделирование с применением методов машинного обучения
Всем привет! Меня зовут Константин Измайлов, я руководитель направления Data Science в Delivery Club. Мы работаем над многочисленными интересными и сложными задачами: от формирования классических аналитических отчетов до построения рекомендательных моделей в ленте приложения.
Сегодня я расскажу пр
Как мы запустили агрегатор удаленных вакансий и зачем в нем ML
В один прекрасный день в конце 2020 года мы решили сделать еще один агрегатор удаленных вакансий, начав с исключительно IT-позиций. Логично спросить: зачем? Мол, на ры
Разработка Computer Vision в онкологии почему всегда нужно еще больше сил, времени и денег
Привет!
Я Жека Никитин, Head of AI в компании Celsus. Больше трех лет мы занимаемся разработкой системы для выявления патологий на медицинских снимках.
Несмотря на то, что медицинским ИИ давно уже никого не удивишь, актуальной и структурированной информации о п
KotlinDL 0.2 Functional API, зоопарк моделей c ResNet и MobileNet, DSL для обработки изображений
Представляем вам версию 0.2 библиотеки глубокого обучения KotlinDL.
KotlinDL 0.2 теперь доступен на Maven Central (до этого он лежал на bintray, но закатилось солнышко земли опенсорсной). Появилось столько всего нового: нов
Reinforcement learning
Перевод r
(Q-learning, SARSA, DQN, DDPG)
Обучение с подкреплением (RL далее ОП) относится к разновидности метода машинного обучения, при котором агент получает отложенное вознаграждение на следующем временном шаге, чтобы оценить свое предыдущее действие. Он в основном использовался в играх (например, Atari, Mario), с производительностью на уровне или даже превосходящей людей. В последнее время, когда алгоритм развивае
Перевод - recovery mode RL Trust Region Policy Optimization (TRPO) Explained. (Часть 1)
Методы градиента политики PG довольно популярны в обучении с подкреплением (RL). Базовый принцип состоит в использовании градиентного спуска и подъема в направлениях, где ожидается наибольшая награда. Но при первом приближении оптимизация получается неаккуратной. При чрезмерной самоуверенности мы можем сделать действия, которые разрушат прогресс, достигнутый предыдущей тренировкой. Работы, посвященные TRPO, явля
Постановка задач для универсального интеллекта у нас нет общего языка
Введение или о каком ИИ я говорю
В первую очередь меня интересует универсальный ИИ как машина достижения сложных целей. То есть некий программно-аппаратный комплекс, которому можно сказать: сделай самолёт, который будет стоить 100$, летать на 1000 километров со скоростью 800 км/ч и перевозить 5 человек. Или так: вылечи человека такого-то от рака на терминальной стадии.
ИИ должен с такими задачами уметь справляться,
Как мы управляли поездами на соревновании NeurIPS 2020 Flatland
Всем привет! Мы команда из Питерской Вышки, и в этом году мы заняли первое место в RL треке соревнования NeurIPS 2020: Flatland. Цель Flatland разработать алгоритм, способный как можно лучше управлять трафиком движения поездов по сети железных дорог, при этом система должна принимать решения за ограниченное время.
Фронтендер пишет нейронки. Уровень сложности хочу на ручки
Рано или поздно это должно произойти
Рано или поздно, фронтенд - разработчик устает играть со своими фреймворками, устает докучать коллегам - бэкендерам, устает играть в девопс и начинает смотреть в сторону машинного обучения, дата - саенс и вот это вот все. Благо, каждый второй курс для тех кто хочет войти вайти способствует этому, крича на всех платформах, как это легко. Я тоже, насытившись перекладыванием данных из базы
World Models обучение в воображении
Обучение с подкреплением (Reinforcement Learning) плохо, а точнее, совсем не работает с высокими размерностями. А также сталкивается с проблемой, что физические симуляторы довольно медленные. Поэтому в последнее время стал популярен способ обойти эти ограничения с помощью обучен
Deep learning
Log-Sum-Exp Trick как свойства функций делают работу классификаторов реальной
В этой статье мы рассмотрим, что такое классификатор, поговорим о мультиклассовой классификации с помощью нейронных сетей. Затем, ознакомившись с контекстом перейдем к основному топику поста к Log-Sum-Exp Trick. Напишем формулы и разберемся, как этот трюк помогает избежать переполнения чисел с плавающей то
Математика за оптимизаторами нейронных сетей
В этой статье мы поговорим о математике градиентного спуска, почему при обучении нейронных сетей применяется стохастический градиентный спуск и о вариации SGD (Stochastic Gradient Descent) с использованием скользящего среднего (SGD с momentum и Nesterov Accelerated Gradient).
KotlinDL 0.2 Functional API, зоопарк моделей c ResNet и MobileNet, DSL для обработки изображений
Представляем вам версию 0.2 библиотеки глубокого обучения KotlinDL.
KotlinDL 0.2 теперь доступен на Maven Central (до этого он лежал на bintray, но закатилось солнышко земли опенсорсной). Появилось столько всего нового: нов
Рекомендуем город для путешествия при помощи нейросетей с вниманием
В конце прошлого года, Booking.com запустил соревнование по построению рекомендательного алгорима для путешественников. Задача наилучшим образом предсказать следующий город для пользователя, основывываясь на предыдущих посещенных городах.
Рекомендации городов в booking.com, картинка
Эволюция методов mesh denoising от простых фильтров до 3D глубокого обучения
В этой обзорной статье вы узнаете, что такое mesh denoising, какие методы использовались и используются для устранения шума на полигональных сетках (от классических фильтров до передовых графовых нейронных сетей), и получите общее представление о развитии
Обнаружение объектов с помощью YOLOv3 на Tensorflow 2.0
Кадр из аниме "Жрица и медведь"
До появления YOLO большинство способов обнаружения объектов пытались адаптировать классификаторы для детекции. В YOLO же, обнаружение объектов было сформулировано как
Data science
RamblerMeetupampUsermodel
Мы долго шли к этому и вот наконец! Наш внутренний RamblerMeetup&Usermodel выходит в свет! Уже 30 июня эксперты поделятся своими кейсами в области ML и Big Data.
Митап пройдет в онлайн-формате, начало в 19:00. Обязательна предварительная
Как мы построили Computer Vision из подручных материалов, чтобы сделать гифки
Меня зовут Денис Власов, я Data Scientist в Учи.ру. С помощью моделей машинного обучения из записей онлайн-уроков мы сделали гифки последовательность из нескольких кадров с наиболее яркими эмоциями учеников. Эти гифки получили их родители в e-mail-рассылке. Вместе с Data Scientist @DariaV Дашей Васюковой расскажем, как без экспертизы в Computer Vision, а только с помощью открытых библиотек и готовых моделей сделать MVP, в ос
Запросить 100 серверов нельзя оптимизировать код. Ставим запятую
Можно выделить ряд алгоритмов, которые являются базовыми и лежат в основе практически каждой строчки программ, написанных на языках высокого уровня. Хорошо иметь под руками классический многотомный труд Дональда Кнута "The Art of Computer Programming", там детально разобраны многие ба
Перевод Линейная алгебра для исследователей данных
Иллюстрация: UCI
Наша [Ирвинга Капланского и Пола Халмоша] общая философия в отношении линейной алгебры такова: мы думаем в безбазисных терминах, пишем в безбазисных терминах, но когда доходит до серьезно
Как я предсказал LGD на хакатоне и устроился на работу
Всем привет! Меня зовут Андрей, недавно яприсоединился ккоманде VSRobotics изанимаюсь проектом автопостроителя сценариев диалогов робота-оператора. Вэтом посте хочу поделиться историей своего трудоустройства ирешением задачи LGD prediction, которое мне вэтом очень помогло. Не
Перевод Прогнозирование временных рядов на JS анализ данных для самых маленьких фронтендеров
В этой статье я расскажу о том, почему нормально иногда делать анализ данных в браузере.
В чем суть?
На своей работе в качестве React Front-end разработчика я обычно работаю с дашбордами и различными видами данных. В какой-то момент нам понадобилось добавить предсказания по метрикам, а в команде не было специалистов по анализу данных, которые могли бы этим заняться.

warc-type: conversion

warc-identified-content-language: rus,eng

content-type: text/plain

label: ru


content:
Диагностика это ключ ко всем аспектам компьютеров и программирования. Эта статья начинается с того, как самостоятельно разобраться с этой проблемой блокировки. Если вам это не интересно, то можете сразу перейти к пункту Решение в конце статьи.
При возникновении проблем с headless-режимом, не забывайте делать скриншот через page.screenshot(), чтобы видеть, что происходит. Это, как минимум, позволит узнать, имеете ли вы дело с тем же видимым контентом, который отображается в обычном (управляемом) режиме браузера, а также узнать, не застряли ли вы на месте из-за сломанного скрипта, ничего не понимая.
В данном примере сам сервер даже не отправил соответствующую веб-страницу.
Первоначальный ответ страница Доступ запрещен, и это все, что можно получить при работе Chrome в headless-режиме. Чего вовсе не происходит в управляемом режиме.
В процессе диагностики важно определить, что мы знаем, и чего мы не знаем. Без этого шага невозможно придерживаться плана действий, направленного на то, чего мы не знаем, и при этом включающего в себя только необходимые пункты. Это может показаться элементарным, но если вы не понимаете, зачем это нужно, то прийти к этому не так уж легко. Иногда диагностику понимают как проход по списку пунктов, но это работает только в том случае, когда с ошибкой уже сталкивались ранее.
Что мы знаем? Мы знаем, что браузер сделал единичный запрос, и мы получили ответ, сообщивший, что доступ запрещен. Исходная страница не была отрисована, и браузер не отправил какие-либо другие запросы. Это означает, что сервер обратился куда-то, строго основываясь на том, что мы отправили в том первом запросе, и что наша блокировка не имеет никакого отношения к контенту страницы. Это исключает из диагностики все, что имеет место быть после отрисовки страницы, и сужает размах диагностики исключительно до запроса. Сам по себе запрос набор битов и байтов, отправленных по интернету и принятых сервером.
Сравнение заголовков HTTP-запроса
Поскольку есть (должна быть) небольшая разница между Chrome, запущенном в headless-режиме, и Chrome, запущенном в обычном режиме, логично предположить, что основной сетевой стек один и тот же, и нет никакой разницы, как браузер передает запросы на уровне пакетов. Это говорит о том, что нужно заострить внимание только на содержимом запроса. Можно воспользоваться сервисом, который возвращает нам же наши HTTP-запросы (эхо-сервисом), чтобы найти отличия между запросом, сделанным в headless-режиме, и запросом, сделанным в обычном режиме. Скрипт ниже использует http://scooterlabs.com/echo.json для получения JSON-ответа, который представляет запрос, полученный сервером.

const puppeteer = require('puppeteer');(async() => {  const browser = await puppeteer.launch({  });  const page = (await browser.pages())[0];  const response = await page.goto('http://scooterlabs.com/echo.json');  console.log(await response.json());  await browser.close();})()
Запуская его как в headless-режиме (по умолчанию), так и в обычном режиме (с помощью добавления headless:false в параметры запуска), можно сравнить вывод в консоли, чтобы найти отличия, если таковые присутствуют.
time_utc это время, в которое мы сделали запрос. Оно различается, но маловероятно, что это единственный источник блокировки, если только сайт не блокирует все запросы в определенное время суток.
Заголовок Accept-Language отсутствует в случае headless-режима. На самом деле это хороший сигнал того, что кто-то использует нестандартный браузер (или режим браузера), и что браузер мог бы использовать отсутствие этого заголовка для того, чтобы блокировать нас. Это могло бы быть моей первой догадкой, если бы у нас также не было последнего отличающегося заголовка User-Agent.
User-Agent явно выделяется. Это отличие выявляет важную деталь, при этом с помощью этого заголовка headless-режим выдает себя:
Заголовок для управляемого человеком Chrome по большей части такой же, если убрать Headless. User-Agent долгое время был основным, бесхитростным способом блокировки нежелательного трафика. Это хорошее отправная точка для получения ответа на вопрос, получаем ли мы то, что нам нужно.
Блокировка по User-Agent в наше время считается простой и редко используемой мерой противодействия из-за простоты ее обхода. В действительности для сайта было бы полезнее использовать ее не для блокировки, а для распознавания нежелательного трафика, поскольку визуальная доступность лучше отсутствия таковой.
Решение (много текста, не читал)
Решить проблему блокировки так же просто, как и поменять заголовок User-Agent. Его можно переопределить на постраничном уровне методом page.setUserAgent(). Вы можете установить пользовательский агент на агент для Chrome в обычном режиме, который, на момент написания этой статьи, выглядит так: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36.
Это все, что требуется сделать. Вот почему сам подход диагностики важнее, чем это решение. Эти разного рода препятствия все время всплывают при попытках автоматизировать сайты и зачастую в интернете не найти конкретные ответы, поэтому вам придется разбираться с ними своими силами. Удачи, и не стесняйтесь связываться со мной по любым вопросам!
Источник: habr.com
К списку статей
admin
Опубликовано: 03.07.2020 10:08:54
0
Сейчас читают
MEX (Minimum EXcluded) Алгоритм поиска минимального отсутствующего числа
Обучаем качественные модели без DensePose разметки
К вопросу о личной эффективности
4G-камера с детекцией человека
Recovery mode Правильное распределение ролей в проекте половина успеха!
История одной ракушки. И нефти
Комментариев (0)
Имя
Электронная почта
Google chrome
Перевод Sparkplug неоптимизирующий компилятор JavaScript в подробностях
Создать компилятор JS с высокой производительностью означает сделать больше, чем разработать сильно оптимизированный компилятор, например TurboFan, особенно это касается коротких сессий, к примеру, загрузки сайта или инструментов командной строки, когда большая часть работы в
WebUSB. Прошейся из браузера
Разработчики хромиума постоянно пилят огромное количество классных API для разных технологий и железяк. Тут и Web Share, и работа со звуком, Bluetooth, NFC, WebOTP и много чего ещё, более-менее полный список со статусами реализации можно посмотреть
Полезные функции DevTools для тестировщиков
Всем привет! Меня зовут Миша, я работаю на позиции ручного тестировщика, или Manual QA - кому как удобно. В связи с тем, что в моей работе преобладает ручное тестирование - я часто сталкиваюсь с консолью разработчика в браузере (думаю как и 99.9% web-тестировщиков).
В интернете огромное количество источников, в которых можно найти информацию про DevTools, как для разработчиков, так и для тестировщиков. Конечно, наполнение та
Перевод Что вошло в релиз движка V8 версии 9.0
17 марта 2021 был опубликован релиз девятой версии движка V8. Этот пост - краткое описание того что вошло в список изменений релиза.
Оригинальный пост
Перевод Контейнерные запросы в CSS
Как фронтенд-дизайнер я за последние 6 лет не был так взволнован новой CSS-функцией, как сейчас. Благодаря усилиям Мириам Сюзанны и других умных людей прототип контейнерных запросов можно включить
Используем DevTools в headless Chrome
Если вы когда-нибудь использовали Puppeteer, то наверняка сталкивались с неудобной отладкой скриптов на удалённых нодах headless Chrome. Часто так не хватает консоли, а лучше полноценной панели инструментов для изучения запросов и логов хотя постойте. Puppeteer сам по себе построен поверх Chrome DevTools P
Javascript
История о том, как я иду к должности JS разработчика через обучение на курсах в Skillbox
Как пришел я к тому чтобы вообще начать учить JS
В 2019 году, 1 сентября, в дождливый осенний день, я решил навсегда завязать с прошлым. Последние 5 лет работы менеджером не приносили удовольствия и не несли перспектив. Увольняюсь с должности менеджера вино-торговой компании, подумал я. И погружаюсь в программирование!
Три месяца до декабря я упорно изучал HTML + CSS и верил, что легко попаду в разработчики, стоит м
Идеальный инструмент для создания прогрессивных веб-приложений или Все, что вы хотели знать о Workbox. Часть 2
Что такое Workbox?
Workbox (далее WB) это библиотека (точнее, набор библиотек), основной целью которой является "предоставление
Дайджест свежих материалов из мира фронтенда за последнюю неделю 473 (14 20 июня 2021)
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него.
Медиа|Веб-разработка|CSS|JavaScript
За что я не люблю Redux
Тема, конечно, не нова, и немало на этот счет уже сказано и написано. Но все же поделюсь и своим взглядом на этот счет, т.к. мое осознание данного факта формировалось скорее независимо и на основании собственного опыта, ценностей и взглядов, и возможно (надеюсь) в нем читатель найдет для себя что-то свежее или полезное.
Flux - это вовсе не что-то новое либо революционное
Не то, чтобы я не люблю его за это. Скорее, в
Темизация. История, причины, реализация
Введение. Причины появления
Когда веб только зарождался единственной его целью было размещение контента (гипертекстовые страницы), чтобы у пользователей из всемирной паутины был к нему доступ. В то время не могло идти и речи о дизайне, ведь зачем нужен дизайн страниц
Как я попал на стажировку в Яндекс
Всем привет, меня зовут Виктор и я frontend разработчик. Хочу поделиться тем, как я решил стать программистом и попал на стажировку в компанию Яндекс в 27 лет без высшего образования.
Сначала моя история о том, как я заинтересовался it сферой и в частности web разработк
Node.js
Как работает Middleware в Express?
Статья переведена. Ссылка на оригинал
Эта статья представляет собой адаптированный отрывок из книги "
Как написать пассивный доход Пишем качественного трейд бота на JS (часть 1)
Начнем писать трейдинг бота, который будет работать на криптобирже Binance. Бот должен уметь:
торговать самостоятельно, принося какой-то доход
должен быть удобен для создания и обкатывания различных стратегий торговли
тестировать стратегию на исторических данных
Пожалуй, начнем с архитектуры
У нас есть биржа Binance, у которой есть шикарное api. Поэтом
Поиск коллизий в SHA-256 на платформе Node.js при помощи Bitcoin Hasher
Перед началом чтения хочу предупредить, что все описанные ниже определения и проделанные мною исследования несут в себе ознакомительный характер и являются неполными или неточными.
При написании данной статьи много важных аспектов были пропущены или не дополнены из-за м
Перевод Управление зависимостями в Node.js
Управление зависимостями это часть повседневной работы Node.js-программиста. Сегодня мы поговорим о разных подходах к работе с зависимостями в Node.js, и о том, как система загружает и обрабатывает зависимости.
Писать Node.js-приложения можно так, чтобы абсолютно весь код, обеспечивающий их функционирование, находился бы в одном .js-файле. Но при такой организации кода не используется модульный подход, когда ф
Как я сделал свою сборку Gulp для быстрой, лёгкой и приятной вёрстки
Серьёзно и профессионально я начал заниматься вёрсткой в 2019 году, хотя до этого ещё со школы интересовался данной темой как любитель. Поэтому новичком мне себя назвать сложно, но и профессионалом с опытом 5+ лет я тоже не являюсь. Тем не менее, я успел познакомиться со сборщ
Перевод Использование ECMAScript-модулей в Node.js
ECMAScript-модули (кратко их называют ES-модулями) это модули, формат которых описан в стандарте ECMAScript, при работе с которыми используются инструкции import и export:

// ECMAScript-модуль// инструкция importimport myFunc from './my-func';//инструкция exportexport myOtherFunc(param) {const result = myFunc(param);// ....return otherResult;}
Headless chrome
Используем DevTools в headless Chrome
Если вы когда-нибудь использовали Puppeteer, то наверняка сталкивались с неудобной отладкой скриптов на удалённых нодах headless Chrome. Часто так не хватает консоли, а лучше полноценной панели инструментов для изучения запросов и логов хотя постойте. Puppeteer сам по себе построен поверх Chrome DevTools P
Перевод Как обойти запрет доступа к страницам с помощью Chrome в headless-режиме
Некоторые сайты блокируют Chrome в headless-режиме, и мы рассмотрим, как обойти эту блокировку.
Диагностика это ключ ко всем аспектам компьютеров и программирования. Эта статья начинается с того, как самостоятельно разобраться с этой проблемой блокировки. Если вам это
Перевод Обход капч с помощью Headless Chrome
Использование 2Captcha and Puppeteer для автоматического прохождения капч
Puppeteer
Используем DevTools в headless Chrome
Если вы когда-нибудь использовали Puppeteer, то наверняка сталкивались с неудобной отладкой скриптов на удалённых нодах headless Chrome. Часто так не хватает консоли, а лучше полноценной панели инструментов для изучения запросов и логов хотя постойте. Puppeteer сам по себе построен поверх Chrome DevTools P
Внедрение E2E-тестирования с Puppeteer и Jest
Привет, Хабр!
Хотим поделиться краткой историей о том, как мы на одном из проектов Рексофт пришли к написанию автотестов, и почему сделали акцент именно на e2e-тестах.
Речь пойдет о работе с порталом крупного федерального заказчика, работающего в сфере B2B и B2C
Перевод Тестирование в Puppeteer vs Selenium vs Playwright сравнение производительности
Ранее мы уже писали о том, когда бывает нужна автоматизация тестирования и какие проверки при этом используют. Сегодня предлагаем обсудить использование инструментов на практике и оценить их производительность. С разрешения Giovanni Rago автора серии полезных материалов о тестировании мы перевели его статью Puppeteer vs Selenium vs Playwright: сравнение скорости (
Тестирование с использованием Puppeteer
Любите ли вы тесты, как люблю их я: всеми фибрами души, со всей страстью и энтузиазмом, на которые только способен разработчик, жадный до полного покрытия кода?
В этой статье я расскажу о тестировании кода с помощью
Перевод Тестирование назад к основам PuppeteerMocha Совершенствуйте код с помощью тестового покрытия
Перевод статьи подготовлен в преддверии старта курса Автоматизация тестирования на JavaScript.
Меня несколько раз спрашивали о разнице между инженером по обеспечению качества (QA Quality Assurance) и тестером (QC
Перевод Как обойти запрет доступа к страницам с помощью Chrome в headless-режиме
Некоторые сайты блокируют Chrome в headless-режиме, и мы рассмотрим, как обойти эту блокировку.
Диагностика это ключ ко всем аспектам компьютеров и программирования. Эта статья начинается с того, как самостоятельно разобраться с этой проблемой блокировки. Если вам это
Автоматизация работы браузера
Перевод Как обойти запрет доступа к страницам с помощью Chrome в headless-режиме
Некоторые сайты блокируют Chrome в headless-режиме, и мы рассмотрим, как обойти эту блокировку.
Диагностика это ключ ко всем аспектам компьютеров и программирования. Эта статья начинается с того, как самостоятельно разобраться с этой проблемой блокировки. Если вам


content:
Cписок победителей по акции "Участвуй в акции! Получи главный приз Сертификат от магазина Промэлектроснабжение на 500 тыс. рублей и множество других призов!"
5 Апреля 2018
НОВИНКА!!!! Инженерная сантехника, торговые марки Aqualink®, AQuapipe®
21 Декабря 2017
Глобальная распродажа лета!
Главная
-
Каталог
-
Кабель и провод
Кабель и проводИсточники света и компл.СветильникиЭлектроустановочные изделияУcтройства защитыКоммутационное оборудованиеЩиты, шкафы, корпуса, коробкиСчетчики электроэнергииКабеленесущие системыКлиматическая техникаИнструментЭлектромонтажные материалыУстройства электропитанияРаспределение и подключениеПриборы управления и контроляЭлектродвигателиИнженерная сантехникаБытовая техникаСредства защитыПечиПрочие товары
-
Провода и шнуры различного применения
Кабели силовые для стационарной прокладкиКабели и провода силовые для нестационарной прокладкиКабели и провода связиПровода и шнуры различного примененияКабель пожарной сигнализацииПровода силовые для электрических установокКабели контрольныеПровода для воздушных линий передач
-
Провод ПВС, ШВВП бухты 10м, 20м, 50м
Кабель монтажный МКЭШ
-Провод ПВ-3 95 (желт.-зел.)
Провод ПВ-3 95 (желт.-зел.)
Артикул: 384095/2
Провод ПВ-3 95 (желт.-зел.)
Подробнее
- +
В корзинуВ корзине
Поделиться
Сайт носит информационный характер и не является публичной офертой. Стоимость товаров/услуг, их наличие и подробные характеристики уточняйте у представителей магазина Промэлектроснабжение, используя средства связи, указанные на сайте.
Описание
Отзывы
Задать вопрос
ПВ-3 95 - провод силовой установочный(монтажный) с медной многопроволочной жилой сечением 95 миллиметров квадратных, в поливинилхлоридной изоляции различных цветов (желто-зеленый, белый, черный, коричневый, синий, серый, голубой, красный).
Провод ПВ-3 95 - является устаревшей маркировкой провода силивого установочного, после вступления в действие ГОСТ 31947-2012 маркировка изменилась на ПуГВ 95 конструкция и характеристики не изменились.

warc-identified-content-language: rus


content:
Имеются 4- и 16-мегапиксельная камеры (последняя с фазовым автофокусом и сенсором Sony IMX298), USB Type-C-порт, Bluetooth 4.1 и Wi-Fi-модули, аккумулятор на 3000 мА/ч (предусмотрена возможность ускоренной зарядки QuickCharge 3.0). Реализована поддержка NFC и LTE.
Смартфон доступен в вариациях с 3 Гб ОЗУ и 32 внутренней памяти, с 3 Гб ОЗУ и 64 Гб встроенной флэш-памяти либо с 4 Гб «оперативки» и 128 Гб ПЗУ. Версии оценены в 305/352 и 413 долларов соответственно.
В рамках открывшейся MWC 2016 производитель Xiaomi представил флагман Mi 5.
В сердце аппарата лежит процессор Snapdragon 820 от Qualcomm. Разрешение 5.15-дюймовго Full HD экрана – 1920 x 1080 точек. Управление в Xiaomi Mi 5 построено на Android 6.0 Marshmallow.


content: Приглашаем к сотрудничеству все организации, которые активно участвуют в сохранении памяти о Великой Отечественной войне. Компании, присоединившиеся к проекту