В массы: Оксана Шаталова и Георгий Мамедов о центральноазиатском авангарде — T&P

Программирование в массы / Хабр

Понимание даже основ программирования может упростить деятельность человека. Помимо очевидных вещей, таких как развитие абстрактного мышления или способность разделять задачу на меньшие части, я предлагаю пойти ещё дальше и воспользоваться основными подходами к разработке. На примере создания классической логической игры, проводя аналогию между визуальным и традиционным программированиями, я и хочу показать, как навыки разработки могут помочь в решении прикладной задачи. Желающих подискутировать на тему или поиграть в «Быков и коров» и выиграть приз — зову под кат.

Меня зовут Женя и я backend разработчик в компании ManyChat. Некоторое время назад ко мне обратилась команда HR с просьбой реализовать знакомую многим с детства игру «Быки и коровы» на базе нашего продукта. Позвольте добавить немного контекста. ManyChat — это инструмент для автоматизации взаимодействия между бизнесами и их клиентами, позволяющий ответить на общие вопросы через Facebook, а с недавнего времени SMS и Email. «Быки и коровы» — это логическая игра, в ходе которой за несколько попыток необходимо отгадать загаданное число. Многие могут знать её по игре Fallout, где необходимо взломать компьютерный терминал. Более подробно с правилами можно ознакомиться в конце статьи.

Визуализация

Что мы делаем перед тем как писать код сложной задачи? Идём к доске с маркером или берём в руки карандаш и бумагу и рисуем блок-схему или UML диаграмму, ведь визуализация — это наиболее естественный способ представления и восприятия информации для человека. Flow Builder — сердце нашей системы, базируется на различных объектах, графических элементах и правилах, по которым они взаимодействуют друг с другом. Я сказал бы, что это логическое продолжение объектно-ориентированного программирования. Так что я отбросил привычные инструменты и сразу перешёл к конструированию логики общения бота с игроком.

Flow игры «Быки и коровы»

Это очень удобно, поскольку UML диаграмма и Flow Builder практически тождественны. На этом шаге уже сочетаются проектирование с программированием. За несколько итераций я накидал flow и обозначил места взаимодействия с пользователем и с API. Полученный результат несколько отличался от исходного представления в моей голове — визуализация предоставила возможность посмотреть на задачу с другой стороны. Это хорошо, так как изменения в диаграмму вносить проще и дешевле, чем в код. Как мне кажется, смысл этого подхода уходит корнями к поговорке «семь раз отмерь, один — отрежь». Инженерам он должен быть особенно знаком и понятен.

Разграничение ответственности

Что должно быть реализовано на стороне ManyChat, а что на стороне кода? Ответ на этот вопрос поначалу мне не казался очевидным. Для взаимодействия на нашей платформе есть два инструмента: Dynamic Block и External Request. Они практически идентичны за исключением того, что первый выполняет запрос на удалённый сервер и идёт дальше к следующей инструкции, а второй позволяет прежде сопоставить данные ответа с переменными бота.

В одной из первых версий я воспользовался Dynamic блоком и реализовал отправку турнирной таблицы из метода API прямиком в Facebook. Казалась бы, в этом подходе нет ничего плохого. Но если посмотреть немного дальше и предположить, что игрок захочет играть с помощью SMS — коду придётся узнать о канале коммуникации конкретного игрока. Это не кажется необходимым. В следующей версии я перевёл flow на работу с External Request, добавил запись ответа в пользовательские переменные и удалил любое упоминание о канале из кода. Теперь код игры можно использовать в другом приложении и реализовать любой желаемый интерфейс взаимодействия: от консоли до мобильного приложения. Было это отделение представления от управляющей логики согласно шаблону MVC или выделение ограниченных контекстов согласно подходу DDD — решайте сами. Главное здесь то, что не смотря на отсутствие требования, на подсознательном уровне я определил потенциально узкое место системы, которое в будущем могло бы создать проблемы.

Именование переменных

Именование переменных — одна из двух главных проблем программирования. Помимо переменных не менее важным является именование блоков. Многие пользователи не придают этому значения, не успевают оглянуться как flow превращается в набор Copy 1, Copy 2 и так далее. Это кратно усложняет понимание. Всё как с плохим классом — невозможно разобраться что он делает, не зайдя внутрь. Более подробно эту мысль раскрыл мой коллега. Если заинтересовались, предлагаю ознакомиться с его постом.

Стив Макконнелл в своей книге «Совершенный код» писал, что имя должно полно и точно описывать представляемую сущность. Думаю, с этим спорить сложно. Например, для булевых переменных я предпочитаю использовать префикс is. В таком случае читающему код уже по первым двум буквам становится понятно с чем он имеет дело. Что касается длины — желательно, чтобы она не превышала 20 символов (Gorla, Benander, and Benander, 1990). Чем меньше область видимости переменной, тем короче может быть её имя. Но так как все переменные в ManyChat имеют глобальную область видимости, стоит воспользоваться пространством имён.

Для «Быков и коров» я использовал начальный сегмент в виде двух заглавных букв BC, производных от Bulls and Cows. Учитывая вышесказанное, у меня получилось имя переменной BC Is Victory — достаточно уникально и исчерпывающе, на мой взгляд.

DRY, KISS

Игра работает и, казалось бы, можно выдохнуть с чувством выполненного долга. Но мы-то знаем, что дальше идёт этап self-review и рефакторинга. При более детальном разборе можно заметить, как обработка стоп-слов и победа ведут на похожие блоки — призывы игрока к некоторым действиям. При этом проигрыш по непонятной причине живет своей жизнью. Объединение этих мест в одно кажется логичным шагом, позволяющим избежать дублирования, что в свою очередь приводит к повышению консистентности поведения и простоте сопровождения. Теперь, в случае необходимости изменения, нужно внести в единственный блок системы без изменений в других, что свидетельствует о том, что принцип

Don’t repeat yourself применяется успешно.


Flow с соблюдением принципа DRY

Однако, не стоит останавливаться на достигнутом. Комплексные решения сложны в сопровождении. При возникновении ошибки локализовать её будет непросто, особенно спустя время, когда выпадешь из контекста. У нового человека уйдёт не мало сил, чтобы разобраться, что к чему. А ознакомиться придётся с каждым узлом, дабы не упустить ничего важного. Поэтому стоит воспользоваться принципом Keep it simple, stupid и разнести все возможные действия по отдельным местам. После декомпозиции у меня получилось 5 довольно простых для понимания flow. В качестве приятного бонуса данный рефакторинг удовлетворил

Single responsibility принцип. Каждый flow имеет одну ответственность и эта ответственность полностью инкапсулирована в нём. Обращение происходит а-ля Black box, а по характеру возникшей проблемы её можно локализовать быстрее.


Flow с соблюдением принципа KISS

YAGNI

В одной из первых версий автоматизации были наработки по рассылке напоминаний о заброшенной игре и инструкций по получению подарков победителями. Реализацию первой идеи усложнили ограничения со стороны Facebook — с недавнего времени ужесточились условия отправки сообщений за пределами окна в 24 часа. Вторая же оказалась недостаточно тривиальной для реализации со стороны кода. Оба вопроса решаемы, но количество необходимых усилий не оправдывалось потребностями одноразовой кампании. К тому же, спринтовые задачи наступали на пятки, поэтому было принято решение не реализовывать данный функционал. И тут на помощь пришел

You aren’t gonna need it принцип, цель которого заключается в воздержании от избыточной функциональности. Это нормальная ситуация, когда условия меняются, и в продукте появляются мертвые, более ненужные части. Удаление соответствующих блоков облегчило понимание назначения flow и в лишний раз напомнило о важности своевременного отказа от добавления новой функциональности, в которой нет непосредственной надобности.

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

Давайте поиграем

Этапы self-review и рефакторинга пройдены, ненужного функционала нет, а смысл всех flow прозрачен для понимания. Это значит, что игра готова и настало время побороться за призы. По условиям конкурса топ-10 игроков, которые наберут наибольшее количество баллов до 22 мая 2020 года, получат призы от команды ManyChat.

Немного о правилах. В нашей реализации игра рассчитана на одного человека. Бот загадывает 4-значную последовательность с неповторяющимися цифрами. Игрок делает попытку отгадать число. Бот сообщает в ответ, сколько цифр угадано без совпадения с их позициями, то есть количество коров, и сколько угадано вплоть до позиции, то есть количество быков. В итоге сценарий игры может выглядеть примерно так:

Загадано число 1234.
Участник делает первое предположение: 4321

Получает ответ: 0 быков и 4 коровы
Участник делает второе предположение: 1678
И получает ответ: 1 бык и 0 коров.

Мы предлагаем 2 уровня сложности: игра на ограниченное и неограниченное число ходов. Победа в сложной принесёт вам 3 балла, в простой — 2. Проигрыш, независимо от уровня, заберёт 1 балл.

Игра была реализована на стандартном стеке технологий: Nginx 1.17, PHP 7.4, PostgreSQL 12.1. При желании вы можете склонировать репозиторий на свой сервер, установить шаблон на свою страницу ManyChat и устроить свой турнир.

Выводы

«Каждый в этой стране должен научиться программировать на компьютере, потому что это учит вас думать». Думаю, актуальность данного высказывания давно вышла за пределы только одной страны. Программирование — это не тайные символы в терминале, сложные для восприятия непосвященному человеку, а программист — не избранный. В первую очередь, это образ мышления и набор навыков для решения задач.

Обращаясь к названию статьи и оригинальному лозунгу, хочется перефразировать его: «Программирование принадлежит народу. Оно должно уходить своими глубочайшими корнями в самую толщу широких трудящихся масс. Оно должно быть понято этими массами и любимо ими».

Никогда бы не подумал, что в одной статье буду цитировать Стива Джобса и Ленина.

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

Что-то не было освещено вовсе. Например, в этой статье не были затронуты приёмы экстремального программирования, такие как парное программирование, частые небольшие релизы и игра в планирование.

Хоть и гибкие методологии имеют общие корни с системами организации офлайновых, физических производств, они всё же зачастую применяются для разработки программного обеспечения. Хотя их потенциал не ограничивается отраслью.

Вероятно есть то, о чём я и не задумывался. У каждого из нас свой опыт и своё видение. Поэтому призываю вас поделиться в комментариях своими мыслями по этому поводу.

ЦСИ ЗАРЯ — АССЫ В МАССЫ

ЦСИ ЗАРЯ — АССЫ В МАССЫ

АССЫ В МАССЫ

27 ОКТЯБРЯ 2017 – 4 ФЕВРАЛЯ 2018

В октябре в Центре современного искусства «Заря» откроется ретроспективная выставка «Ассы в массы», посвященная андеграундному движению «Асса», которое появилось в Петербурге начала 80-х.

«Асса» — лозунг, возникший в среде художников-некрореалистов и быстро распространившийся в богемной среде Ленинграда. Так называлась галерея Тимура Новикова, это слово появилось и в серии работ известного ленинградского художника Олега Котельникова. «Ассу» использовали и как тег, и как роспись на одежде в рамках битнических показов мод. «Асса-парадами» называли групповые демонстрации авангардной моды на выступлениях «Популярной механики» Сергея Курехина. В рок-н-рольных хэппенингах принимали участие рок-музыканты, неформальные художники, тусовщики и поэты. Апогеем экспансии арт-группировок под воинственным лозунгом «Асса» стал одноимённый фильм, до сих пор считающийся одним из знаковых для поколения 80-х.

Куратор проекта «Ассы в массы» Михаил Бастер — художник-график, дизайнер, автор архива о субкультурах СССР «Компост», ранее уже организовывал такие выставки, как «Последние романтики Советского Союза» (2007, «Зверевский центр», Москва), «Хулиганы 80-х» (2009, «Центральный Манеж», Москва), Street style-80 (2010, ВДНХ, Москва), «Альтернативная мода до прихода глянца 1985-1995» (2011-2013, «Гараж», Москва; «Этажи» Санкт-Петербург; «Дом кино», Дубровник, Хорватия; Fashion biennale, Вараждин, Хорватия; kim?, Рига, Латвия), Untamed fashion in USSR (2013,Новая Дакота. Амстердам), «По дорогам СНГ» (2015, Музеон), «Моторокеры. Москва-Берлин» (2017, ВДНХ, Москва).

«Специально для Владивостока мы подготовили шоу, цельно и глубоко раскрывающее внутреннюю сторону этого процесса через призму моды и искусства — рассказывает Михаил Бастер. — Под флагом с лозунгом андеграундного движения «Асса», которое зародилось в Петербурге начала 80-х, в перестройку произошёл первый осознанный всплеск альтернативной культуры. Этой до сих пор мало изученной истории о контркультурной моде и искусстве «красной волны» и посвящена выставка»

Основа выставки «Ассы в массы» — архив исторической документации и российской уличной и модной фотографии Михаила Бастера. Также в экспозицию войдут произведения художников Тимура Новикова, Георгия Острецова, Инала Савченкова, Евгения Юфита, Сергея Шутова, участников арт-группировок «Чемпионы мира», «Новые художники» и «Некрореалисты» из коллекций Московского музея современного искусства, Музея Art4Ru, а также из личных собраний Гарика Ассы, Сергей Шутова и других. Специально для выставки участники советского андеграунда предоставили предметный фонд, включающий в себя элементы гардероба, пластинки, постеры, шляпы. Выставка будет дополнена мультимедийными материалами (анимация, короткометражные и полнометражные фильмы, видеоарт, видеодокументация перформансов и модных показов) в виде медиа-инсталляций и сеансов параллельной образовательной программы.

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

«Андерграундная культура в России и СССР стала плодородной почвой для появления многих культовых имён и проектов в искусстве, кино, музыке и моде, — говорит Алиса Багдонайте, главный куратор Центра современного искусства «Заря». — Для нас важно не только впервые в таком объёме рассказать об этом периоде, но и показать его связь с культурным контекстом Дальнего Востока».

Катализатором многих процессов, перезапустивших дальневосточную культуру и ставших причиной мощного перестроечного толчка, стал отец-основатель советского панк-дендизма Гарик Асса (Олег Коломийчук). Он родился в Хабаровске и получил прозвище «Асса» за свою активность и вклад в организацию модных показов. Покинув родные края в 70-х, Гарри примкнул к ленинградской богеме, открыл московский блошиный рынок на Тишинке и незамедлительно ввёл в моду винтаж и стиль «мёртвый разведчик», состоящий из предметов гардероба вдов советских разведчиков и партийной номенклатуры. Тимур Новиков назначил Гарика Ассу министром моды при правительстве «Новых художников», а из участников показов и созданных образов сложился импровизированный дом моделей «Ай-да-люли» выступавший под девизом «Безумный род людской, кривляйся и пляши». Основной идеей «Ай-да-люли» стало стирание грани между авангардной модой и «носибельной» в ходе уличных дефиле. Благодаря Гарри Ассе традиция «асса-парадов», а вместе с ней и новая волна искусства и музыки, переместилась из Ленинграда в Москву. На выставке его фигуре и коллекции картин будет посвящено отдельное место как точке связи между отдельными дисциплинами альтернативной культуры и событиями 1980-х и 1990-х годов.

Хэппенинги «Дома моделей Ай-да-люли», бушевавшие на советских концертных и театральных сценах, к концу 80-х вдохновили многие дизайнерские и перформативные группы, такие как дуэт «Кровь с молоком» Ирэн Бурмистровой, «Лаборатория экспериментальных моделей» Светланы Петровой и Сергея Чернова, «Театр ПОСТ» Бориса Юхананова и Камиля Чалаева, группа «Север» Екатерины Рыжиковой и Александра Лугина, которая делала перформансы в духе шаманистских и неоязыческих обрядов. Моделями Гарика в его шоу выступали многие известные художники и музыканты: Тимур Новиков, Сергей Шутов, Гор Чахал, Жанна Агузарова, Сергей Ануфриев, музыканты группы «Кино», вокалистка группы «Колибри» Наталья Пивоварова и многие другие.

Свидетельством прорыва андеграунда на официальную сцену и его признания как значимого культурного явления стал фильм Сергея Соловьёва «Асса», вышедший на экран в 1987 году.

ВХОД СВОБОДНЫЙ

Массы Определение и значение

  • Лучшие определения
  • Викторина
  • Связанный контент
  • Примеры

Сохраните это слово!

См. синонимы для масс на Thesaurus.com


Простые люди или люди с низким социально-экономическим статусом, как в телевизионных ситкомах, предназначены для обращения к массам. Эта идиома почти всегда используется в снобистском контексте, принижающем вкус, интеллект или какое-либо другое качество большинства людей. В.С. Гилберт высмеивал эту точку зрения в марше пэров в « Иоланте» (1882 г. ), в котором низам среднего класса и массам приказано склониться перед сверстниками. Премьер-министр Уильям Гладстон придерживался другой точки зрения (Речь, 1886 г.): «Во всем мире я поддержу массы против [высших] классов». [Первая половина 1800-х]

ВИКТОРИНА

ВЫ ПРОЙДЕТЕ ЭТИ ГРАММАТИЧЕСКИЕ ВОПРОСЫ ИЛИ НАТЯНУТСЯ?

Плавно переходите к этим распространенным грамматическим ошибкам, которые ставят многих людей в тупик. Удачи!

Вопрос 1 из 7

Заполните пропуск: Я не могу понять, что _____ подарил мне этот подарок.

Слова рядом с массами

Волшебная флейта, Волшебная гора, Человек, развративший Хэдлибург, Женитьба Фигаро, «Марсельеза», массы, Масса людей, ведущих жизнь в тихом отчаянии, Мастер Builder, The, тематический, Тематический апперцептивный тест, тематизация

Словарь идиом американского наследия® Авторские права © 2002, 2001, 1995, издательство Houghton Mifflin Harcourt Publishing Company. Опубликовано издательством Houghton Mifflin Harcourt Publishing Company.

Слова, относящиеся к массам

простонародье, простонародье, плебеи, плебей, народ, публика, простонародье, hoi polloi, третье сословие, средний класс, пролетариат, рядовые, рабочий класс, простолюдины, большие немытые, инфраструктура, массы, множество, сброд, сброд

Как использовать массы в предложении

  • France 24 обеспечивает круглосуточную прямую трансляцию обеих сцен по мере их развития.

    Прямая трансляция терактов в Париже||9 января 2015|DAILY BEAST

  • Сэндс была вовлечена в скандальный для того времени роман с плотником, и ходили слухи, что она беременна от него.

    Самый трагический призрак Нью-Йорка любит минималистскую шведскую моду|Нина Строхлич|8 января 2015 г.|DAILY BEAST

  • Три официально зарегистрированные семейные истории: мать и ее дочери, приехавшие из Феникса.

    Я пытался предупредить вас о неряшливом миллиардере Джеффри Эпштейне в 2003 году|Вики Уорд|7 января 2015 года|DAILY BEAST

  • Далласские ковбои распродают свой ультрасовременный футбольный стадион.

    Останется ли Техас техасцем?|Дэвид Фонтана|29 декабря 2014 г.|DAILY BEAST

  • Во вторник Daily Beast поговорила с ликующей Лигой о закулисной битве за то, чтобы «Интервью» показали в кинотеатрах.

    Внутренняя история того, как «Интервью» от Sony наконец попало в кинотеатры|Марлоу Стерн|23 декабря 2014 г.|DAILY BEAST

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

    The Pit Town Coronet, Volume I (of 3)|Charles James Wills

  • Эти шаровидные массы обычно содержат много туберкулезных бацилл.

    Руководство по клинической диагностике|Джеймс Кэмпбелл Тодд

  • Никогда не знаешь, когда наткнешься на драгоценность в самом отдаленном углу.

    Музыкальное образование в Германии|Эми Фэй

  • Г-н Слокум не получил университетского образования, и его жизнь прошла в закоулках и отдаленных местах.

    Книга Анекдотов и Бюджет Веселья;|Разное

  • Я оторвался от обода Надписей-На-Камне, этот набор шепотных фраз эхом отдавался в моих ушах.

    Необработанное золото|Бертран В. Синклер

Idioms by The Free Dictionary

The+masses — Idioms by The Free Dictionary

The+masses — Idioms by The Free Dictionary


Слово, не найденное в Словаре и Энциклопедии.

Возможно, Вы имели в виду:

Пожалуйста, попробуйте слова отдельно:

массы

Некоторые статьи, соответствующие вашему запросу:

  • атомная масса
  • Масса (масс-спектрометрия)
  • Молярная масса
  • Глава и конвентуальная масса
  • Масса в специальной теории относительности
  • Распределение молярной массы
  • Инвариантная масса
  • Массовое число
  • Молекулярная масса
  • Низкая масса
  • Масс-спектр
  • Номинальная масса
  • Масса
  • серийное производство
  • Среднечисловая молекулярная масса
Не можете найти то, что ищете? Попробуйте выполнить поиск по сайту Google или помогите нам улучшить его, отправив свое определение.

Полный браузер ?

  • Зона
  • Зона
  • Зона
  • Зона (альбом)
  • Зона (значения)
  • Зона (Введите Шикари)
  • Зона (фильм)
  • Зона (Мичиган)
  • Зона (сериал)
  • Зона (YTV)
  • Зона тишины
  • Зоопарк
  • Зоопарк (значения)
  • Зоопарк (показать)
  • Банда Зоопарка
  • Зоопарк Северо-Западной Флориды
  • История зоопарка
  • Мальчик смотрителя зоопарка
  • Зоологическая летопись
  • Зоолог
  • Кошка Зут
  • Убийства в костюме Зут
  • Волшебник Зо
  • Зоррос
  • Заря
  • Проект Цукакиса Мондеяно
  • Зукэ
  • Зулус
  • Зутоны
  • Зюрангеры
  • the+masses
  • The, Or the Critical Journal Edinburgh Review
  • Мечта
  • Дискография The-Dream
  • МУХА
  • Братья-убийцы
  • .
    В массы: Оксана Шаталова и Георгий Мамедов о центральноазиатском авангарде — T&P

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх