Код без тайн
433 subscribers
43 photos
21 videos
1 file
101 links
Пишу о веб-разработке, информатике и технологиях, которые меня вдохновляют

Связаться со мной: @MajorLettuce
Download Telegram
Почему я приостановил работу над Neira?

Спойлер: сейчас проект в замороженном состоянии

Я же обещал делиться и провалами 😎

Долгое время я делал ради того, чтобы делать. Приходила идея — сразу садился писать код

Но с опытом научился разделять цель и путь. Нейра была первой попыткой сначала определить цель, а потом делать

Какая цель? Дать пользу людям

Я попытался сделать все «по уму»: протестировать гипотезу, провести интервью, собрать обратную связь

Результат?

Спустя полгода лендинг показывает трафик хуже чем у сайтов 2-4 месячной давности

К тому же, видение проекта в ходе разработки размылось — его нужно пересобирать

Экономика проекта

В виде чата Нейра имеет смысл только при низком чеке и высоком трафике. Без органики продвигать можно только через рекламу — это дороже и сложнее

Нелогично делать этот проект, когда есть другие, на которые спрос подтвердился

Что дальше?

Такой вот опыт (эм... ну то есть провал 🤷‍♂️)

Кстати, отличный повод рассказать о других моих проектах, где уже есть результат 😉
😢74🔥1🙏1🤝1

Смотрел я тут видео про историю баз данных

Там рассказывается про историю становления баз данных как отдельного вида софта, от перфокарт до Oracle

Также вскользь упоминаются ограничения реляционной модели (10:20), что навело меня на мысль

Ведь существуют разные виды баз данных:

Есть реляционные — это как такой очень сложный Excel, есть 📄 документные — можно свалить все в одну кучу не парясь о структуре, а есть 💠 графовые — их используют соц. сети

И тут у меня в голове что-то щелкнуло

Не могу удержаться — иду в ChatGPT:

А какие есть графовые БД?


Отвечает:

Есть много разных, одна из популярных — Neo4j


Дальше иду к Клоду:

Расскажи, как работают графовые базы данных


И в этот момент внутри возникает чувство такое, как в детстве, когда появляется предвкушение перед тем как собираешься поиграешь с любимой игрушкой 🚐

Я уже не могу остановиться. Гуглю адаптер Neo4j для Laravel, затем ищу Node.js библиотеки для графовых БД, наконец, нахожу документацию Neo4j + JavaScript

Спрашиваю Клода:

А можно ли определить частично жесткую структуру в Neo4j?


Можно!

И вот я уже сижу с открытой документацией, хотя изначально просто смотрел видео про базы данных
🔥62👍2
Код без тайн
‎ Смотрел я тут видео про историю баз данных Там рассказывается про историю становления баз данных как отдельного вида софта, от перфокарт до Oracle Также вскользь упоминаются ограничения реляционной модели (10:20), что навело меня на мысль Ведь существуют…
В прошлом посте я упомянул, что пошел к Клоду после ChatGPT

Спустя долгое время раздумий я все-таки решил купить подписку и попробовать платную версию Claude — основного конкурента ChatGPT

К тому же, там как раз появился аналог Deep Research, поиск в интернете и самое крутое: Model Context Protocol (MCP)

А вы знали, что именно Anthropic (создатели Claude) придумали этот протокол? С его помощью языковая модель может подключатся к абсолютно любым сервисам (если они реализовали MCP сервер)

Да, в ChatGPT тоже недавно добавили MCP

Однако по стилю общения и взаимодействию Клод как языковая модель мне нравится больше. Она меньше похожа на глупого попугая, который повторяет «Да, конечно!» и «Совершенно верно, ты прав 😊»

Клод больше похож на умного, действительно мыслящего друга

А ещё мне нравится его дизайн: по сравнению с черно-белым, минималистичным и стерильным дизайном ChatGPT, дизайн Claude мягкий и дружелюбный

А гарнитура с засечками…!
👍4
Вспомнил о том что у меня есть Unsplash

Зашел в статистику — а мои фотки каждый месяц нет-нет, да кто-то и использует в каком-нибудь Trello и прочих Wix. Да, там оказывается есть такая статистика

А на картинках выше два фото: самое популярное и самое непопулярное (по количеству просмотров)

У одной из них — 28 тысяч просмотров, а у другой 400

Угадаете, какая популярнее?
Просмотров больше у…
Final Results
31%
Первой 🌲
69%
Второй 🏔️
Код без тайн
Просмотров больше у…
А правильный ответ: 🏔 зеленые горы без воды 👀

У этого фото 28 тысяч показов, по сравнению с 400 у другого

Неожиданно? Не совсем

Ситуация, на самом деле, знакомая всем, кто когда-либо выкладывал что-то в социальных сетях

Алгоритмам (ну или, может быть, даже людям) могла просто не понравится ваша публикация

Так что каждый раз когда у вас будет мысль о том что ваша гениальная идея зайдет другим, задумайтесь: а зайдет ли она алгоритмам и, что важнее, людям? 🤔

Именно поэтому я сейчас сначала стараюсь тестировать все свои гениальные идеи на органическом трафике, а уже потом начинаю делать. Хотя, не всегда получается удержаться 🤣

P.S. Ссылка на другое фото
😁2👌1
«Делай для себя» — совет, который часто можно услышать, особенно в кругах инди-хакеров и предпринимателей

Уж не знаю, я такой неправильный (особенный, что маловероятно) или просто до меня долго доходило, но искреннее удовольствие от создания проектов, которыми мне нравилось бы пользоваться самому, я начал получать совсем недавно

Буквально пару лет назад

До этого я реализовывал свои идеи, но каждый раз мне было сложно относится к своему проекту как если бы я был обычным пользователем

Самый яркий пример — модификации для игр, именно оттуда я начал свою, можно сказать, карьеру

У меня появлялась идея и я загорался идеей реализовать ее. Но когда приходил момент поделиться ей с друзьями и просто насладиться как продуктом — у меня не получалось

«Так, здесь косяк — надо будет починить»

«Вот здесь нужно будет поправить эту штуку»

И так постоянно

То есть даже во время «отдыха» я «работал». Про это кстати есть хорошее выражение у Джима Рона:

When you work — work,
when you play — play,
don’t mix the two


И вот на днях я поймал себя на мысли, что у меня иногда уже получается просто пользоваться своими продуктами как пользователем

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

Я не думал о том, что вот здесь нужно что-то починить (ну почти)

Я не думал о том, как он работает внутри

Я просто пользовался им. Как пользователь 🤯

А у вас такое было?
6
Я — чайник 🫖

Именно такой ответ может получить ваш браузер от веб-сервера, когда тот ответит ему кодом HTTP 418

Наверняка многие из вас знают код 404 «страница не найдена» и среди них действительно есть код 418 «Я — чайник»

Данный код был введен в спецификации RFC 2324 от 1 апреля 1998 года (раздел 2.3.2, страница 5)

Шутки-шутками, но уже более 418 человек подписалось на этот Telegram канал! ⭐️

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

Спасибо за внимание и за то, что читаете!

Кстати, создал для вас простенькую веб-страницу, которая возвращает код 418, чтобы вы могли проверить сами, что это действительно так, а не верить мне на слово 😎

https://n8n.aleksei.dev/webhook/teapot
👍31
This media is not supported in your browser
VIEW IN TELEGRAM
Наступил октябрь, один из моих самых любимых месяцев в году

А ещё это значит, что начался очередной Hacktoberfest — мероприятие, которое проводит хостинг-провайдер DigitalOcean аж с 2013 года

Идея простая — это праздник open-source, который нацелен на то, чтобы познакомить с миром открытых проектов не только программистов, но любого желающего помочь своему любимому проекту с открытым исходным кодом

Суть в том, что за октябрь нужно сделать несколько pull request-ов в публичные репозитории на GitHub

Важно, что вклад может быть любым — от фикса опечаток в документации до добавления новых фич. Не обязательно быть супер программистом, суть мероприятия как раз и заключается в том, чтобы показать важность и ценность open-source сообщества в целом

А ещё самые активные участники могут получить мерч, у меня даже получилось один раз в 2021 году. Именно таким образом в моем арсенале появилась синяя акула Sammy — их маскот
1🔥2😁1
На днях OpenAI анонсировала Agent Builder — платформу для создания агентов искусственного интеллекта прямо в их экосистеме

Они также выпустили Sora 2 и интеграцию со сторонними приложениями вроде Figma и Canva, но об этом и так уже написали все кому не лень, а я, как вы знаете, не гонюсь за громкими заголовками

Но на Agent Builder стоит приостановиться, потому что это может стать началом новой парадигмы

Дело в том, что из-за того, что OpenAI — лидер в сфере ИИ, то у них большое влияние на то, как формируется инструментарий вокруг этой новой технологии

Например, сейчас многие используют формат API, который придумала OpenAI — это обеспечивает легкость интеграции и взаимозаменяемость

Agent Builder может сыграть такую же роль: другие игроки на рынке могут начать заимствовать инструменты, которые OpenAI придумала для создания агентов

Возможно, платформы наподобие n8n и make впоследствии позаимствуют часть функционала и он также станет взаимозаменяемым

Сейчас такие платформы все же довольно «старомодные»
1👀1
Обещал писать больше про бизнес, так что сегодня расскажу про успехи с 🟠 Multify (trymultify.com)

Я запустил проект в начале лета в очень базовом варианте, буквально MVP:

— перевод текста на статических страницах
— конвертация валют
— отправка форм

Опубликовал простой лендинг и стал смотреть, начнут ли приходить заявки или нет

А они взяли и начали приходить 🧐

Благодаря этому я смог найти product-market fit перед тем как делать новые фичи: заявки приходили и от владельцев одностраничных сайтов и интернет-магазинов

Важно то, что у меня появились реальные данные о потребностях потенциальных клиентов

Собственно, этим я и занимался последнее время: добавлял функции, не которые я придумал из головы, а для которых пришел реальный запрос

Именно так в 🟠 Multify появилась новые функции:

— поддержка попапов с динамическим контентом
— перевод характеристик и атрибутов товаров
🔥 валидация цен в валюте во время оформления заказа

Скоро можно делать панель управления 🚀
1🔥5🆒2
Про какой аспект работы над Multify вам интереснее всего узнать?
Final Results
57%
Про техническую реализацию
50%
Про маркетинг
21%
Про продажи
🗿1
Что под капотом у Multify?

В голосовании выше победил пункт про техническую реализацию, поэтому начнем с нее. Хотя я планирую рассказать о каждом из аспектов построения продукта, потому что на одной реализации не уедешь — как бы вам ни хотелось 😎

Так вот, в основе проекта лежит AdonisJS, я уже упоминал про него ранее. По факту это фреймворк, который идейно пытается воссоздать Laravel в мире TypeScript

А какая идея у Laravel? Минимум усилий при максимальном результате: в нем из коробки идет обработчик очередей, ORM, инструменты для создания шаблонов и отправки писем, шаблонизатор для страниц, аутентификация и авторизация, шина для отправки событий внутри приложения...

Это примерно 10% того, что есть в Laravel из коробки

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

Вообще, работая более плотно с TypeScript и экосистемой NodeJS я заметил, что в ней считается нормальным переизобретать велосипед: там есть как минимум 7 разных библиотек для логирования, 5 библиотек для работы с базой данных, 8 обработчиков очередей и так далее...

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

* * *

Возвращаясь к Multify, AdonisJS позволил очень сильно ускорить процесс разработки по факту благодаря трем вещам:

1. Сервис-контейнеру — мне не нужно думать, куда и в каком виде раскладывать бизнес-логику. Авторы фреймворка решили это за меня

2. Обработчику веб-запросов — и хотя Multify является универсальным реверс-прокси (по сути, в приложении буквально задан один маршрут: router.any('*', handle)), но внутри нужно обрабатывать входящие запросы и формировать исходящие: заголовки, парсинг тела запроса, параметры запроса. Для всего этого есть удобные утилиты из коробки

3. Очень крутой multi-tier кеш Bentocache, с помощью которого Multify может отвечать практически молниеносно. Multi-tier означает то, что кеш сначала пытается прочитать из локальной памяти, а если не получается, то уже идет в хранилище. Которое, кстати, можно подключить с помощью разных драйверов: в виде файлов, redis или базы данных
1👍3
Вайбкодируй, да тестировать не забывай

С ростом 🟠 Multify проект также постепенно обрастает новым функционалом, а вместе с ним появляются и новые краевые случаи (edge cases), которые становится все сложнее учитывать

В таком случае как нельзя кстати на помощь приходит автоматизированное тестирование

Конечно, это не полноценный Test Driven Development, однако имея готовую структуру проекта и фреймворк *кхм* Adonis, в котором тесты идут из коробки, я могу попросить написать тестовые кейсы за меня

Смысл не в том, чтобы писать тесты ради тестов (чем, кстати, славится TDD), а в том, чтобы обезопасить проект от случайных поломок после изменений (их ещё называют регрессиями)

В частности, особенно вайбкодерам на заметку:

Если вы чувствуете, что ваш проект «расплывается», что при изменении одной части проекта ломается другая, посмотрите в сторону автоматических тестов

В Multify я наткнулся на такой момент в части проекта, отвечающей за замену URL на странице

Как можно увидеть на скрине выше, не все так просто 🤔
14
🎃 Хеллоуинская история о воскрешении мертвых (данных)

Ночь с 31 октября на 1 ноября. Все нормальные люди смотрят хорроры или идут на вечеринки. А я? Я занимаюсь настоящим некромантством — восстанавливаю метрики Prometheus

Я веду учет количества токенов, сетевых запросов и заявок в тильду по каждому проекту и недавно я начал замечать, что каким-то мистическим образом старые метрики Multify стали исчезать, хотя у меня и настроен режим сохранения на диск

⚡️ И вот, почему-то именно в эту ночь, меня, как Франкенштейна, молнией озарило:

А что если у Prometheus установлено ограничение на срок хранения? ...

Так и оказалось!

По-умолчанию --storage.tsdb.retention.time равен 15 дней

И вот я пошел, откопал запылившийся бэкап сервера, чтобы вытащить из него старые данные...

Однако, оказалось это не так-то просто:

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

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

Я буквально лезу в файловую систему как археолог в древнюю гробницу: ищу данные Prometheus, копирую их и переношу на живой сервер

И вот, момент истины... я запускаю docker compose start prometheus и вижу...
🎃3
Вот мои данные, воскресшие из мертвых! 👻
😁1
Так, а ну признавайтесь, у кого-то был сегодня странный сон?

Я вот, например, во сне защищал диссертацию, но не по презентации, быстро, за 20 минут, а допечатывал на ходу полностью работу из 100+ страниц по очереди в разных принтерах, потому что в них заканчивалась бумага

Одновременно с этим я кое-как на ходу импровизировал и рассказывал в формате «так, эээм, ну здесь в общем это работает вот так, а вот это нужно для того-то…» и по ощущениям длилось вечность 😆

Спрашиваю, потому что это не первый случай, про который слышу сегодня. Вдруг и правда суперлуние влияет 🌝
👍5
В продолжение темы про Луну

А вы задумывались, что если вы были бы на луне, то могли бы увидеть «полную Землю» точно также, как мы видим «полную Луну» с Земли?

Ведь очевидно, что на Луне не видно Луну, однако видно Землю

Майкл (Vsauce) как раз выложил короткое видео, где рассказывает об этом и оказывается, что Земля освещает в 37 раз сильнее Луны. Оно и понятно, ведь на Земле есть пустыни и горы с ледниками, а Луна, вообще-то, на самом деле темно-серая, так как покрыта реголитом 🤔