Скучные задачи. Нам всем приходилось делать их раньше.

  • «Создайте 340 учетных записей электронной почты, по одной на каждого ученика».
  • «Нам нужно около 150 QR-кодов! А мероприятие уже через 2 дня!»

Это две задачи, которые мне дали в школе. Но есть одна проблема: я ненавижу скучную работу (и я предполагаю, что большинство людей ее не любит, отсюда и ее название). Теперь ваш средний Джо сдался бы своей судьбе и сел бы на 8 часов, делая то, что он должен делать. Но не этот Джо. Этот Джо хрустит костяшками пальцев в нетерпении и предвкушении.

«Но, Пранав, — слышу я ваш вопрос, — разве вы только что не сказали, что вам не нравятся такие задачи?»

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

Первая задача

В моей школе мы используем Google Suite для Gmail, Диска, Документов и т. д. По крайней мере, так делали учителя. В начале 11-го класса, через год после того, как школа представила iPad, я предложил: «Почему бы нам также не дать ученикам идентификаторы электронной почты?» Я подумал, что это поможет всем лучше использовать iPad, на который мы потратили так много. Задача их создания монотонна. Итак, я обратился за помощью к Python.

К счастью, в школе были все имена, фамилии и оценки (и некоторая другая информация) всех учеников в листе Excel. Если бы это было в бумажном реестре, я бы поджарился. Я извлек только нужные мне столбцы и сохранил их в виде файла .csv. Покопавшись в панели администратора Google, я увидел, что панель поддерживает массовый импорт через определенную структуру файла .csv. Это казалось достаточно простым — я писал скрипт на Python, чтобы взять файл данных школы и выдать файл, отражающий структуру, необходимую Google. Но, как я должен был знать, все никогда не бывает так просто.

Для идентификаторов электронной почты (которых не было в файле данных) я решил использовать достаточно простой формат: [first][last]@lsb.edu.in. Немного погуглив, почитав и записав CSV, я получил то, что, как мне казалось, должно было быть работающим сценарием. Запускаю и... ошибка. Судя по всему, у некоторых людей в файле данных не было фамилий. Я даже не рассматривал такую ​​возможность! Немного обработки ошибок позже, и у нас есть файл, который принимает администратор Google.

Успех!

Вторая задача

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

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

То же упражнение: загрузите лист, удалите столбцы, которые мне не нужны, сохраните в формате csv. Я установил библиотеку для генерации QR-кода для Python и приступил к работе. Сначала я решил поработать над кодом, чтобы сделать одно изображение. Достаточно просто, библиотека была очень удобна для разработчиков. Тогда я подумал: а зачем эти обычные, унылые, квадратные QR-коды, если их можно сделать уникальными?

Поэтому я применил свои навыки обработки изображений, полученные во время стажировки, и начал работать над тем, чтобы QR-код выглядел намного лучше, не влияя на его способность сканироваться. Знаете ли вы, что вы можете покрыть около 30% кода, и он все равно будет сканироваться правильно, без проблем?

Как только я получил то, к чему стремился, все, что осталось сделать, это закинуть все в цикл и вуаля! Теперь у меня было 150 QR-кодов и… 150 человек… чтобы… отправить им электронное письмо. Дангнаббит.

Сначала я подумал о слиянии почты. Сейчас я не фанат Outlook, но в тяжелые времена вы обращаетесь даже к своему злейшему врагу. К сожалению, Outlook не поддерживает изменение вложения для каждого человека, которому вы отправляете, так что это недопустимо. Идея № 2 заключалась в плагине для Google Таблиц, который поддерживает слияние почты с изменением вложений, но меня задел платный доступ, ограничивающий количество учетных записей до 50.

Вариант 3, и то, что я в итоге сделал, — это написать собственный скрипт слияния почты на Python. Обратите внимание: я никогда раньше не отправлял электронные письма с Python, и это было бы нормально, если бы эти электронные письма не направлялись важным людям со всего мира. Имидж школы (или хотя бы его часть) был в моих руках. Когда время истекло, я написал сценарий, который, как я думал, будет работать для отправки электронных писем, и протестировал его, отправив письма со своей школьной учетной записи на мою личную. Это сработало! Поэтому я сообщил своему консультанту (от которого будут отправляться электронные письма), что у меня готов код и что, если он предоставит мне данные своей учетной записи, я смогу отправить электронные письма.

Он очень быстро ответил, сообщив данные своей учетной записи, и я вставил их в сценарий. Скрестим пальцы, запустил тот же тест и… ошибка. Выяснилось, что Gmail посчитал активность моего скрипта подозрительной. Слегка обидевшись, я попросил своего консультанта разрешить небезопасные приложения (вы должны сделать это, чтобы использовать большинство неофициальных почтовых клиентов с Gmail). Он так и сделал, но это все равно не сработало! Оказывается, скрипт показался настолько подозрительным, что Google решил заблокировать его аккаунт! Разморозить его было довольно просто (он просто должен был изменить свой пароль), и после этого мы отправили электронные письма.

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