С одной стороны, не хочется рассказывать о чем-то небольшом. С другой стороны, из маленьких кирпичиков строится большое здание, поэтому почему бы и нет? К черту скромность!
Сразу скажу, что проект не планирует никакой монетизации, а также что в посте будет много разных картинок. Но как рассказывать про фотографию без фотографий, а про проекты без мемов?
Расскажите о себе и сути проекта
Про себя я писал в #intro. У меня есть несколько хобби, некоторые из которых вытекают друг из друга. Так, например, из увлечения LEGO выросло мое увлечение фотографией, и этот проект как раз посвящен именно этому увлечению. Увлечения нужны, чтобы не быть как котик на меме снизу. И без них очень легко в него попасть.
Фотографирую я не так давно, сменил несколько камер, фотографировал вроде бы и часто, но не регулярно. В какой-то момент заметил, что стараюсь чаще оставлять камеру дома, а не тащить ее с собой. Так как я на какое-то время оказался далеко от громадной кучи любимых кубиков и от стационарного ПК, LEGO и игры в RTS временно стали задачей с меньшим приоритетом, а фотография - с большим. И я решил подумать на тему того, как же научиться фотографировать лучше.
А как мы все знаем, лучший способ, чтобы научиться чему-либо, это практика.
Есть такой парень - Георгий Джеджея (Сайт), его еще @vas3k упоминал в посте про вычислительную фотографию (если помните такой, конечно). Так вот, так как я решил подойти с точки зрения практики, я конечно же начал читать различные блоги (ахаха, все как всегда. Прокрастинация наше все. )
Ну так к чему это я? У Георгия есть Telegram канал, а у этого Telegram канала есть чат, (Вастрик.фото и данный чат частично пересекаются, так что я думаю, о нем тоже кто-то из клуба знает). И вот в этом чате проходит челлендж, достаточно обычный, кстати — челлендж "365". Необходимо каждый день делать фотографию на протяжении года, обрабатывать ее в течение дня (вообще фотографию за сегодня можно выложить в течение сегодня и завтра) и выкладывать ее.
(я просто хотел выложить фотографию с акулой, сорри)
Я пропускал эти челленджы, потому что:
а) Да зачем оно мне нужно?
б) Это же нужно самому как-то отслеживать и следить.
А тут все было сделано достаточно удобно: был бот, который принимал фотографии в Telegram, и некоторый элемент геймификации, когда участники чата голосовали за лучшие работы, и в итоге каждый день подводились результаты голосования с виртуальными медальками.
Я участвую в данном челлендже уже более 200 дней, и он во многом мне помог. Я не сказал бы, чтобы я стал снимать лучше. Бывает, я открываю свои достаточно старые фотографии и понимаю, что мой уровень не то что вырос, но я стал лучше понимать, когда фотография определенно не получится. Также я стал лучше разбираться в своей камере и подтянул навык быстрой обработки фотографий.
Но и это не главное. Главное, наверное, то, что необходимость делать что-то заставляла меня подниматься и делать что-то, даже тогда, когда очень не хотелось. И за счет этого улучшая мою жизнь. Я вставал на рассвете, чтобы фотографировать рассветное солнце.
И искал что-то интересное в обыденном.
Ну и просто в целом тренировал дисциплину. Если бы я был большим экстравертом, наверное, познакомился бы таким образом с кучей людей. Но, так как я такой как я есть, я просто сделал кучу фотографий (ну ладно, я даже несколько раз подходил к незнакомым людям с просьбой их сфотографировать, прогресс собственно на лицо) , которые мне нравятся, а также подписывался на различные поездки, от которых возможно бы отказался в ином случае. Даже завел дрона, чтобы смотреть на вещи с другого угла :)
Но искать свои фото в большой куче фотографий в канале было не очень удобно, а иногда хотелось понять, какая фотография набрала больше лайков, или просто посмотреть, с каких фото я начал челлендж, а какие идут сейчас, чтобы понять, что вот сейчас у тебя идет провал, и ты не можешь найти сюжеты, а раньше энтузиазм так и переполнял. Ну и просто пересмотреть кадры по принципу "кадр в день" — это очень интересно.
Я даже как-то считал небольшую статистику по результатам 2022 года в этом челлендже.
И меня не покидала идея, что было бы отлично иметь возможность легко посмотреть данные из канала. Поиск в Telegram по хештегу, конечно, работает, но в целом искать в ленте очень неудобно. Да и видеть какую-нибудь писькомерную статистику всегда приятно.
В какой-то момент я решил, что хватит тянуть кота за яйца, и раз у меня не очень получается с фото выходить на первые места, можно сделать полезный для сообщества сервис, выложить фото с его интерфейсом и словить плюшки :)
Что вошло в прототип, технологический стек и сколько времени на него было потрачено
Я решил разбить проект на три части, чтобы максимально упростить дальнейшую поддержку или замену. Соответственно, получаем парсинг опубликованных ботом данных и их запись в базу. API для получения данных из этой базы и фронтенд, который будет показывать полученные данные. На все про все ушло несколько вечеров.
Самой простой частью были парсинг и API. Так как фронт планировался на JavaScript, решил и бекэнд сделать на нем же. Взял Express.js, MySQL, набросал быстренько простенький API, развернул, проверил, что все нормально.
Единственная проблема на бекэнде была с запросом, подсчитывающим самые длинные интервалы без проблем в публикациях. Наиболее адекватным и простым вариантом было использовать оконные функции, но в тот вечер, похоже, лыжи решили не ехать, и нужный вариант никак не хотел писаться. И тут меня осенило, мы же в будущем, где же вкалывающие роботы? Я открыл ChatGPT и попросил его написать запрос. Неожиданно запрос даже оказался почти верным. С помощью напильника (так как уточняющими вопросами заставить его исправить запрос не вышло), запрос был приведен в нужное состояние, и бекэнд стал полностью рабочим.
Ну что же, после этого настало время опуститься в авгиевы конюшни и собрать фронт на третьем Vue. Вообще на работе мне приходилось встречаться с вторым Vue (нет, встречался я со всем подряд, но с Vue было больше всего опыта), поэтому я подумал, что особых проблем с третьим Vue не будет. Сцуко, как же я ошибался. Ближайший час был занят различными попытками адаптировать свой опыт из Options API второго Vue на Composition API третьего. А также отойти от Vuex к Pinia. Казалось бы, что мешало поставить Vuex и Options API на третий Vue? Но ведь мы не ищем легких путей. Вообще ненавижу такие моменты, когда вместо того, чтобы решать проблему, приходится бороться с окружением.
В общем, после некоторого количества матюгов, я перешел к конкретной реализации самого интерфейса. Так как чукча ни разу не дизайнер, я взял готовый UI Kit. И после небольшой отладки был готов MVP на трех страницах.
Список фотографий дня, рандомная подборка случайных фото и страница фотографий пользователя. Так как данный челлендж проходит всего где-то 3.5 года, и количество участников не то чтобы запредельное, я решил отказаться от infinite scroll с подгрузкой и просто фигачить все изображения пользователя на страницу сразу.
Развернув это на собственном поддомене, я решил написать о проекте на следующий день. Ну а следующим вечером я решил, что будет неплохо добавить на страницу пользователя немного статистики.
Также решил добавить немного сортировок, ведь все любят сортировки. Кстати, про один из способов сортировки я интересовался в Vas3k.nsfw. Все-таки, сортировка по противоречивости это прикольно.
Так что общий совет всем на будущее: хотите сделать что-то быстро и просто, берите то, что знаете, не будьте как я. Ну, а если совмещать изучение нового с каким-нибудь пет-проектом, то почему бы и нет.
Как запускались и искали первых пользователей
Так как я по сути делал инструмент для уже существующей аудитории, то никаких особых усилий для поиска пользователей не требовалось. Просто зашел в чатик и скинул ссылку. От хитрого плана с публикацией фото рабочего стола отказался. Как-то неспортивно все-таки.
В целом приняли положительно, сразу нашли пару багов. Одна была связана с парсингом, точнее с тем, что я не учел граничный случай, когда где-то в середине челленджа бот глюкнул и запостил одну и ту же запись два раза. Я полагался на идентификатор сообщения и не прописал уникальное ограничение. Обязательно прописывайте все ограничения. В итоге одна из длинных серий считалась неверно.
Попросили прокинуть seed на главной, чтобы делиться выпавшими подборками лучших фото. Поправил это тоже. Ну и вывел ссылочки на соцсети тем, кто их скинул, чтобы, если кто вдруг наткнется на интересную фотографию, мог перейти дальше и посмотреть другие работы.
Сколько потратили и заработали? Есть идеи как это можно монетизировать?
В виду того, что проект простенький, а у всех есть под рукой некоторое количество свободных ресурсов, можно считать, что трат пока никаких и особо новые не планируются. Монетизации определенно не будет. Так что это просто pet-проект для себя и небольшого фотосообщества.
Какие планы на будущее?
Да, вроде никаких, вероятней всего оно вообще не потребует какой-то особой поддержки. Так может код причесать и выложить все это на GitHub вместе с данными, чтобы, если что, это мог поднять кто-то еще. Поскольку bus factor у проекта, не то чтобы радовал.
Ну и наверное доделаю еще одно представление фотографий. Вместо грида будет приятно потом посмотреть на календарик, где на каждый день будет по фотографии.
Итоги
Я продолжаю 365, делая фотографию каждый день, но теперь мне гораздо проще вспоминать, какая именно из моих фотографий так провалилась на последнем голосовании.
Надеюсь, что мой рассказ мотивирует кого-нибудь тоже поучаствовать в челлендже, ну или хотя бы постараться больше замечать вокруг, а не идти по улице, уткнувшись в телефон.
Кстати, вам не обязательно иметь фотоаппарат. Многие из участвующих в челлендже делают отличные фотки на мобильные телефоны. Необязательно, как я, таскать с собой тяжеленную бандуру тупо по приколу.
Ну и главное в фотографии давно уже стало не умение сделать выверенную картинку. Для этого есть японцы с пометками, откуда фотографировать, а также вычислительная и обычная фотография. В современных камерах даже автоспуск завезли. Да и нейронки не дремлют. Так что главное в фотографии, на мой взгляд, давно стало не результат, хотя приятный результат всегда хорошо. Главное это умение видеть, чувствовать, ну и наслаждаться процессом.
Да и правила челленджа не заставляют в нем активно участвовать. Многие просто время от времени выкладывают фотографии, как очередная площадка для поделиться.
Также не могу не напомнить, что у нас в клубе есть секретный чат с фотографиями.
p.s. покидая уютненький клуб вы рискуете нарваться на другое окружение. С другими мемасами и точками зрения. Я вас предупреждал.
Сделаю небольшой follow-up. Я добил 365 дней фотографии и продолжаю уже 534 день. Еще несколько человек выполнили 365, понадеюсь на то что наличие фронта сыграло в этом какую то роль.
Все же странички с писькомерками в виде разных цифр могут мотивировать.
Добавил больше статистику, теперь статистику можно смотреть не просто итогову, но с детализацией по годам и месяцам. Как например 2023-12 или 2023. На годовой статистике 365 фотографий, первые места по голосованию за год.
На месячных первые три, так что можно видеть на странице ~84-93 фотографии.
У месячных страниц есть какая то бага с долгим рендерингом, нужно будет посмотреть что можно с этим сделать.
А так есть проект не хочет, оказалось очень удобным быстро смотреть свои фотографии. Когда у тебя остается по одной фотографии из каждого дня, и ты можешь их быстро пролистать, как то лучше осознаешь как же быстротечно время. Как то так.
Я надеюсь что я стал лучше фотографировать, правда начиная с какого то момента статистика по попаданиям в тройку резко ухудшилась (цифирки), но это как то не важно, важно что мне нравится то что получается. А нравится ли оно кому то еще, да как то без разницы.