[Перевод] Я научился кодить в основном благодаря порно
… и оно научило меня довольно полезным навыкам.
До сих пор помню первую строку кода, которую мне довелось изменить: я увеличил единственное значение integer, чтобы сделать больше диаметр взрывов в игре Clonk Rage. Я ценю этот момент, потому что тогда я впервые взглянул внутрь программы.
Позже я быстро потерял к этому интерес, потому что на меня навалилось множество других проблем. Потом я попал на практику программистом в основном благодаря тому, что рассказывал о своём хобби — моддинге корпусов, и мог перечислить в техническом стиле этапы приготовления кофе.
Повторюсь, в то время меня постоянно одолевали проблемы. Я едва держался на плаву, отчаянно пытаясь добраться до уровня, на котором смогу понимать паттерны, наследование и интерфейсы.
Затем при помощи инструмента imacros, который вам, вероятно, знаком, я открыл целый мир скриптинга. Этот инструмент имеет функцию записи макросов, позволяющую автоматизировать действия без единой строки кода (но при желании его можно писать).
Я использовал этот инструмент для автоматизации раздражающего процесса публикации постов из моего tumblr-блога про порно на сайт под названием sex.com (его в то время рекламировали как «Pinterest» для порно). Со временем этот блог вырос в целую сеть блогов, курирующих нишевый контент и позволявший мне оплачивать аренду жилья.
Разумеется, меня быстро забанили за слишком большое количество публикаций в сутки, сделанных за считанные минуты. Поэтому мне впервые пришлось писать настоящий код, вставлять в него задержки и использовать свой старый ноутбук в качестве своего рода сервера, растягивающего все публикации на сутки. Это экономило мне в буквальном смысле многие часы монотонной работы.
Не стоит и говорить, что у меня развилась зависимость и мне хотелось большего. Моя жизнь начала катиться под откос и достигла нового дна, когда я создал полностью автоматизированный процесс из приложения на C#, который переключался между пользователями, выполнял вход в профили и автоматизировал блоги (tumblr имел ограничение очереди в 300 постов).
Приложение работало на невероятно костыльной основе — консольное приложение генерировало блоки кода iMacros, сохраняло их в папку, а затем использовало ассемблерные вызовы с параметрами для запуска браузера Chrome со скриптом iMacros. Славное было время.
Создавая всё это, я внезапно ощутил снижение нагрузки на работе благодаря тому, что начал понимать гораздо больше. Для меня забрезжил лучик надежды, и я быстро осознал, что автоматизированный процесс, хоть и работал, но был довольно низкокачественным. Забавно, что скрипт в целом работал почти без ошибок, хотя не помню, чтобы после его создания я устранял какие-то баги.
Со временем это заставило меня изучить варианты получше, в частности, Python и Selenium. Вскоре я осознал, что являюсь полным нубом, ничего не понимаю и отказался от изучения Selenium, однако некие знания Python я получил.
Ко всему этому я вернулся примерно спустя год, уже обладая гораздо большим опытом. Я бился головой о стену, пока она не начала осыпаться, и не появилась дыра, в которую я мог пролезть. Внезапно я понял концепцию API и того, почему их так полезно применять вместо скриптинга, поэтому погрузился в глубокое изучение Tumblr API.
Также это научило меня тому, что необходимо правильно документировать код, я добирался до пятой страницы поиска Google так часто, как никогда раньше. Благодаря этому мне удалось автоматизировать Queue tumblr и добавить разные параметры, заголовки и ссылки на мой веб-сайт. Я узнал о Spintax и использовал магию регулярных выражений, чтобы обеспечить создание уникальных заголовков со случайными интервалами. Это захватывало.
Закончив с этим, я начал изучать Selenium, который бесконечно мощнее, чем iMacros, и может выполняться из кода на Python. Итак, теперь я начал разработку качественного решения, использовать систему управления версиями, встроенные сообщения мониторинга и обработку ошибок на случай, если что-то перестанет работать.
Меня обуяла жадность, я решил погрузиться в изучение разработки собственных нишевых веб-сайтов, встраивающих видео с крупных сайтов. Любопытно, что эти сайты не просто позволяют делать подобное, но и платят за любой трафик, который на них приводит. Так я узнал о статических веб-сайтах, использующих довольно продуманную Jekyll-систему с файлами постов, генерируемыми Python. В них были встроенные даты, позволяющие публиковать по десять постов в день из списка тысяч видео; я использовал веб-сайт с триггером cron, вызывающий раз в час обработчик сборок с Netlify. Если новый пост был готов, он сразу публиковался.
И как-то всё это работало. Я написал множество строк кода, провёл кучу исследований, совершил море проб и ошибок. Я перестал играть в видеоигры, потому что это было интереснее. Потом я добрался до крипты благодаря одному парню, рассказавшему об одной рекламной сети с оплатой в биткойнах, иногда выплачивавшей за день огромные суммы в зависимости от обменного курса. Блог на Tumblr, который раньше зарабатывал 2 доллара в день, теперь часто приносил по 20.
А потом Tumblr решил совершить судоку и забанить весь «взрослый» контент, потеряв в результате примерно 30% своего общего трафика. Позже его купили за смехотворно низкую сумму. Вся моя система рухнула всего за месяц, к счастью, я не успел ещё уволиться с моей основной работы.
Но объём знаний, полученных мной в процессе этой работы, огромен, от автоматизации к созданию веб-сайта, а затем к Python, и всё это сегодня работает на меня. Ничему этому я бы не научился на моей обычной работе, и я рад, что начал путешествие вниз по этой кроличьей норе.
Я научился тому, что способ, выбранный мной для изучения кодинга, ставит перед тобой множество задач, которые не были решены ранее. Обычно бывает довольно сложно найти хорошую задачу для решения и мотивацию для обучения — людям попросту скучно создавать один и тот же RSS-агрегатор, написанный уже многими до них.
Для меня это был способ побега из ада туториалов, в котором ты понятия не имеешь, как развиваться дальше и у тебя нет реальных задач. Мне нужны были деньги на аренду и это желание привело меня к тёмному миру творчества.
Кроме того, это ещё и мир, где существует огромный вакуум, исследованный очень немногими, и ещё меньше людей в нём обладают знаниями кодинга. Часто там всё делается вручную, и удивительно, насколько легко это можно автоматизировать, но если они не обладают взглядом программиста, им это невдомёк.
На правах рекламы
Подыскиваете VDS для отладки проектов, сервер для разработки и размещения? Вы точно наш клиент :) Посуточная тарификация серверов, создавайте собственную конфигурацию в несколько кликов, антиDDoS уже включен в стоимость.
Подписывайтесь на наш чат в Telegram.