TGViewer
Channel Public Channel
ИндиПетр

ИндиПетр

@startupetr

Инди-разработка, программирование, лайфстайл
Subscribers
68
Photos
63
Videos
7
Links
17
Recent Posts 14 shown
Post #114 399
Иногда ошибки в js приводят к забавным результатам. https://redocly.com/
Post #112 429
Secret management

Часть жизни бэкенд-разработчика — это работа с секретами. Ключи к сторонним сервисам, креды для баз, SSH-ключи для деплоя. Всё это нужно где-то безопасно хранить, иметь быстрый доступ «посмотреть, что там», и при этом приложение должно стабильно получать эти значения в рантайме. Расскажу про свой флоу — продолжение прошлого поста.

Когда я работал в крупных компаниях у нас почти везде стоял HashiCorp Vault. Он закрывал все задачи: удобная админка, интеграция с CI/CD, динамическое перечитывание конфигов без рестартов, шэринг секретов между коллегами — песня. Но для инди это дорого, а self-hosted — не мой путь.

Когда запускал текущий проект, про секрет-менеджер особо не думал — думал о продукте. На старте меня выручали GitHub Actions со встроенными секретами.

UX там, честно, отвратительный: один раз записал секрет — из UI уже не увидишь. Каждый апдейт — лезть в GitHub Mobile для подтверждения. В бесплатном тарифе ещё и нет разделения секретов по средам (stg/prod/dev). В общем, страдал.

После ресёрча нашёл для себя связку: GitHub Organization + Doppler. В организациях у репозиториев можно делить Actions по средам, и к каждой среде привязывать свои переменные. А Doppler — это почти как Vault по удобству UI: создаёшь проект → в нём среды → в каждой среде — секреты. И главное — каждую среду в Doppler можно автоматически синхронизировать с секретами GitHub.

По деньгам: Doppler бесплатен до 5 проектов, а GitHub Organization обходится мне в $4/месяц за пользователя (пользователь один — я).
  • 👍 3
  • 🙏 2
  • 🔥 1
  • 🤮 1
Post #111 350
Когда я работал в Ozon, меня там научили, что в каждом уважающем себя проекте должно быть очень много микросервисов, каждый из которых живёт в своём отдельном git-репозитории. Касательно фронтенда — каждый сайтик и дашборд обязательно лежат отдельно.

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

Я не смел спорить с этими догматами и пронёс этот подход сквозь годы. И вот, когда я решил делать свои инди-проекты, то решил, что всё буду строить так, как меня учили.

Завёл отдельные репозитории под сайт, под расширение, под бэкенд и, конечно же, под инфраструктуру — чтобы был, так сказать, IaaC. Но довольно быстро я радостно обнаружил, что секреты теперь нужно прописывать везде отдельно; что, чтобы просто начать рабочий день, надо открыть всё те же четыре окна IDE и пощёлкать кнопки run в правильном порядке. А во время работы постоянно метаться между этими окнами и тратить ментальные ресурсы на вопросы: «А где то, что мне сейчас нужно? Кстати, а что именно мне нужно?».

Я понял, что это сильно бьёт по эффективности разработки. Около 20% времени я тратил просто на поиск нужных файлов в разных проектах и на настройку их взаимодействия.

Решение нашлось довольно очевидное — монорепа.

Я засунул все репы (приложения), связанные одним проектом (например, для chatgptsheet это сайт, бэкенд и расширение, как я уже говорил выше), в одну.

Теперь запускаю только одно окно GoLand — его хватает для работы и с Go, и с Python, и с JS/TS. Когда делаю поиск в IDE — он сразу ищет по всем файлам проекта. С помощью npm workspaces переиспользую ts/js-код между сайтом и расширением. Секреты теперь прописываю в одной репе — для этого я нашёл очень удобный инструмент Doppler. А для запуска кода и скриптов использую Turborepo. В принципе, он умеет ещё дофига всего, но пока я использую его в роли запускатора тасок.

P.S. Теперь я продуктивнее и чуть счастливее! Если интересно, могу рассказать подробнее про Doppler или Turborepo.
  • 👍 6
  • ❤ 1
  • 🔥 1
  • 😁 1
Post #110 222
Распорядок дня

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

Подъём у меня примерно в 9:00 ± 30 минут.

Первым делом — утренние ритуалы: умывание, прогулка, зарядка, приём БАДов, завтрак.

Следом, пока голова свежая, — первая рабочая сессия на 90 минут. Ставлю таймер и ухожу в полный фокус.

После первой сессии — лёгкий ланч, чтобы сбить чувство голода перед обедом. Меню простое: варёное яйцо, кусочек сыра, орехи, овощи и — самое главное — никакого сахара.

Дальше — вторая рабочая сессия на 60 минут.

Обеденный перерыв. Ем довольно плотно — думаю, со временем от этого откажусь. После обеда, если сил много и энергия прёт, сразу возвращаюсь к работе, а если чувствую усталость — ложусь вздремнуть на 30–40 минут.

Завершаю рабочий день ещё двумя сессиями по 60 минут с коротким перерывом между ними.

В конце дня — свободное время: отдых, хобби и восстановление.

Отбой в 0:00

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

Я очень доволен своим режимом. Перестроить свои привычки было очень не простой задачей и я рад что я получил такой результат. В итоге сейчас у меня получается 4,5 часа в день сфокусированной, эффективной работы. Я хочу в последствии увеличить время работы до 6 часов, исследования говорят что это оптимальный пик который можно поддерживать долгосрочно. Также хочу поработать над рационом что-бы было больше сил и еда не вызывала негативных эффектов.

Таких дней у меня шесть в неделю, и один выходной — в субботу. В выходной оставляю только утренние ритуалы, а остальной день делаю то, что придёт в голову. Так что завтра у меня выходной, поэтому пойду морально настраиваться — и вам тоже желаю хороших выходных.
  • 🔥 11
  • ❤ 2
Post #109 177
Чужие мысли

Я хотел поделиться с вами одним наблюдением и поразмышлять. Я заметил, что люди, с которыми я общаюсь, да и я сам, в разговоре оперируют не своими мыслями, а чужими. Особенно это касается политики. Люди смотрят пару блогеров, которые им нравятся, запасаются агитматериалом — и идут в массы. Самое печальное — я делаю то же самое. Я не знаю, плохо это или нет, но как будто у меня столько дел, что думать просто нет времени. Приходится пользоваться чужими выводами.

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

Что думаете на эту тему? (Или уже подумали за вас?😏)
  • 😁 2
  • 😢 2
Post #108 184
Водичка

Последние две недели я пил только воду. Ни чая, ни кофе, ни лимонадов — одна вода (как в вашей дипломной). Я стал чувствовать себя намного лучше. Последние несколько лет я был отмороженным чайным пьяницей — пил в основном только чай, примерно по 3 литра в день. А это по кофеину как 5–6 чашек американо. Я подумал, что это ненормально, и решил изменить ситуацию в фирменном для себя стиле: всё или ничего.

Первые три дня меня сильно рубило — я спал, наверное, по 12 часов в сутки. Примерно на четвёртый день всё нормализовалось. И я поймал себя на мысли, что стал очень мега расслабленным — суеты в голове стало меньше. Засыпать, по субъективным ощущениям, тоже стал быстрее.

Ещё один очевидный плюс — это больше свободного времени, которое я больше не трачу на заваривание чая. А ещё вода дешевле. Теперь, когда я иду в кафе, я беру бутылку воды из дома и экономлю на напитках.

И теперь у меня есть ещё одна особенность, которой можно шокировать людей при знакомстве. А я это люблю.

Всем рекомендую как минимум провести такой эксперимент, если конечно не слабо😏
  • 🔥 8
Post #107 184
Что я хотел бы знать в свои 20

На прошлой неделе мне, совершенно неожиданно, исполнилось 30 лет. Жизнь начала проноситься перед глазами. Я вспомнил последние десять лет, свои планы и то, что удалось реализовать к тридцати. Самое обидное — я так и не успел заработать миллион долларов, но ничего, ещё есть время. Я решил отметить для себя самую крупную ошибку в каждом из прошедших десяти лет. Я проанализировал их и хочу поделиться с вами списком из 10 советов которые помогли бы мне избежать всех этих ошибок. «Что я хотел бы знать в свои 20» — возможно, он будет вам полезен:

1) Не уходи с работы в никуда.
2) Не стесняйся идти навстречу людям, которые тебе нравятся.
3) Не кури, не пей алкоголь и придерживайся правильного питания.
4) Не позволяй никому садиться тебе на шею.
5) Не ной.
6) Не предавай свою мечту.
7) Мысли стратегически.
8) Выбирай друзей умнее себя.
9) Если понял, что занимаешься бесполезной ерундой, сразу прекращай.
10)Не забывай, что всё конечно, особенно твоя жизнь.
  • ❤ 6
Post #105 148
Внимание

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

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

В наше тяжёлое время всё вокруг стремится подавить и перехватить наше внимание. Соцсети, тиктоки, новости и т. д. медленно уничтожают нашу способность концентрироваться и направлять внимание. Я думаю, я не один стал чаще слышать аббревиатуру СДВГ (синдром дефицита внимания и гиперактивности). Людям очень тяжело, они даже не одупляют, что происходит, а в это время их просто превращают в овощей. Это страшно!

Я оценил ситуацию и решил бороться за своё внимание. Если вы хотите присоединиться к борьбе, можете повторять за мной. Я уже пару лет как удалил с телефона все приложения, где есть «тиктоки». В Телеграме я отписался вообще от всех каналов с мемами и непрофильными новостями. Я стараюсь вообще не брать в руки телефон, если у меня нет чёткого понимания, что я хочу сделать. Я стремлюсь проводить максимально возможное количество времени в тишине: музыка или подкаст на фоне насилуют мозг самым жестоким образом.

Я твёрдо верю: если человек в наш век научится управлять своим вниманием, ему откроется монструозно-фантастическое преимущество над большинством людей. Это будет как меч против пистолета. Такой человек во всех видах конкуренции — карьере, бизнесе, отношениях — будет выглядеть как здоровый человек среди инвалидов на Паралимпиаде. Поэтому вперед в бой!

Спасибо за внимание!
  • ❤ 6
Post #104 133
Ansible

Пятница — это отличное время, чтобы рассказать про полезный тул в арсенале индимейкера. Сегодня — про Ansible.

Короче, так получилось, что всё у меня хостится на VPS. Не доверяю я этим вашим AWS и Vercel — страшные истории про счета на 100k$ из-за рекурсивных лямбд сильно на меня повлияли. Очень я люблю Digital Ocean, и все мои проекты живут там на маленьких копеечных VPS за $4 в месяц. Единственный минус VPS в том, что всё надо настраивать самому (хотя это как будто бы и не особо минус). И вот как раз в этой затруднительной ситуации мне на помощь пришёл просто state-of-the-art сисадминский инструмент под названием Ansible.

Как всё устроено? Ты пишешь так называемые playbooks, которые состоят из маленьких задач — таких как установить Nginx, создать файл, перезапустить такой-то сервис и т. д. Однажды написав такой playbook, ты запускаешь его, указывая IP нужного тебе сервера. Он подключается к серверу по SSH и выполняет там все задачки. Эти playbooks ты хранишь у себя в GitHub и удобно редактируешь.

Ansible для меня решает самую большую боль: то, что настройка VPS — это акт редкий, но очень затратный по ментальным ресурсам. Помню, на заре времён напишешь конфиг для Nginx, а потом спустя месяцы его открываешь — и вообще ничего не понятно. Ещё и редактируешь этот конфиг через какой-нибудь Vim по SSH. Теперь все мои конфиги лежат в одном месте, и я стал чуть счастливее, чем был до этого.

Ansible, конечно, требует некоторого времени для вкатки, но однажды разобравшись и собрав коллекцию своих собственных playbooks, вы становитесь, как модно сейчас говорить, 10x DevOps.

Настраивать сервера — это очень и очень скучно, но с Ansible хотя бы быстро.
  • 👍 5
  • 🔥 2
  • ❤ 1
Post #103 139
Стратегия

Однажды я смотрел видео про Дэн Сяопина, и там была мысль, которая очень сильно меня удивила и поразила. Дэну Сяопину сказали, что Китай идет не демократическим курсом и что из-за этого западные государства могут реагировать недружелюбно. На это Дэн Сяопин ответил, что это действительно так, но отказался от идеи реформ с комментарием: «Мы уже выбрали курс. Если мы хотим достичь успеха, нужно придерживаться его хотя бы 100 лет». Услышав эту идею, я глубоко задумался. Я редко придерживаюсь одного курса дольше года, а тут товарищи из КПК планируют на 100 лет вперед. Я понял, что это знак и что надо что-то менять в своей жизни.

Я, конечно, не китайская цивилизация, но думаю, что лет на 10–20 я могу взять курс. Допустим, что через 20 лет я хочу достичь чего-то грандиозного, построить небоскреб например. Я могу задать себе вопрос, как этого достичь. После цепочки вопросов у меня появится линия причинно-следственных связей, которая станет моим планом. Составив план, я пойму, что мне чего-то не хватает — скорее всего, это будут навыки, информация и связи. Я пойму, что мне нужно, и то, что понятно, как получить, можно будет просто пойти и взять, а то, что непонятно, — начать искать.

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

Теперь каждый день будет наполнен смыслом, ведь каждый день я буду делать шаги в направлении большой цели. Жизнь наполнится смыслом, а самое главное — вопрос на собеседовании «Кем вы видите себя через пять лет?» будет вызывать улыбку.
  • 👍 3
  • ❤ 1
Post #102 121
SQLc

За время, пока я пилю свои индистартапчики, я взял на вооружение много очень полезных инструментов, которые вошли в мой стэк и существенно его усилили. Я думаю, что грех не поделиться своими открытиями. Сегодня речь пойдёт про sqlc, как вы могли догадаться.

Есть такой слой кода, который всегда был для меня очень нудным — это написание SQL-запросов средствами языка программирования. Для решения этой задачи существует несколько подходов. Самый модный и популярный, как мне кажется, — это ORM. Ты описываешь классы, которые олицетворяют твои модели в базе, прописываешь их отношения. После этого волшебная библиотека навешивает на них всякие методы, которые позволяют тебе всё это дело из базы доставать и в базу записывать. Вроде всё работает, но меня лично в этом всём всегда смущало отсутствие понимания того, что там происходит под капотом. Я тревожный человек, я хочу всё контролировать! Ещё если у тебя появляется потребность в нестандартном запросе, начинается гимнастика с элементами акробатики в попытках на базе этой ORM нужный запрос соорудить. Короче, мне это всё не очень зашло.

В какой-то момент я пришёл к тому, что просто писал весь код, который составляет и шлёт запросы, руками. Это очень много однообразного кода, где легко допустить ошибку, но сам подход меня полностью устраивал. Так я и жил, пока в один момент не нашёл то, о чём всегда мечтал.

SQLc — это кодогенератор для Go, который на вход принимает набор SQL-запросов и набор миграций, а на выходе даёт простые как пробка функции и модели, чтобы с лёгкостью щеголять ими в своей бизнес-логике. Модели он генерит из миграций, а функции — из запросов. У него херова туча настроек, так что его почти все смогут накрутить так, как им нравится. После того как он всё нагенерит, ты можешь пойти и посмотреть, что у него там получилось — это лично у меня улучшает качество сна.

В принципе, я вообще обожаю кодогенерацию. Она драматически снижает вероятность ошибок в коде и ускоряет разработку. А это всё — ценнейшие метрики для маленьких инди-проектов и MVP.

Рекомендую видео-обзор этого чудесного инструмента, если вам стало интересно.

P.S. Касательно других языков, я не знаю точных аналогов, но думаю, вы сможете найти что-то похожее. Самое главное — это сама концепция: фокусироваться только на SQL, а код для бизнес-логики нагенерится автоматически.
  • 👍 3
  • ❤ 1
Post #101 117
Как изменить себя?

Любой человек мечтает чего-то добиться. Заработать миллион, купить машину, накачаться к лету или научиться петь. С этим вопросов ни у кого быть не должно, думаю все согласны.

Проблема в том, как мы уже знаем, что мы все время откладываем достижение своей цели на завтра, потому что думаем что никогда не умрем. Все ясно, кажется нужно только понять, что смерть уже близка и дела пойдут в гору. Но этого к сожалению не достаточно. Есть еще проблема.

Человек это сумма его привычек. Мы повторяем одни и те же действия день за днем, год за годом. Постоянные повторения формируют нейронные связи, и меняют саму структуру нашего мозга на физическом уровне. Постоянные акты самосаботажа и пустой траты бесценного времени формируют в нас соответствующие привычки. Распиздяйство становится нашей сутью. Мы мечтаем полететь в космос но вместо ракеты строим ржавую телегу. И только осознав что время конечно, нашу ржавая телегу в ракету сразу не превратить. А именно ракета нужна нам для достижения целей.

Для того что бы оказаться в “заветном космосе” нам нужно пойти по очень сложному пути, нам нужно по гаечке, по болтику за раз перестроить нашу телегу в ракету. Это тяжелейший процесс. Каждая ржавая деталька будет отсоединяться с болью. Но на место ржавых деталей будут вставать новые титановые для полета к звездам. С каждой заменой двигаться будет проще и легче. Со временем процесс начнет приносить удовольствие и руки уже сами будут тянуться к оставшимся частям нашей некогда ржавой телеги.

Например:

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

Самое важное это - не думать что телега сама превратится в ракету в понедельник, потому что вы посмотрели мотивационный ролик. К мечтам и далекому космосу есть только одна дорога, через пот, кровь и слезы. Но именно это и делает ее прекрасной!
  • ❤ 3
Post #98 176
Обновление!

Спешу поделиться с вами важной новостью! Мы с командой выпустили новую версию нашего самого первого продукта ChatGPT for Google Sheets! С момента первого релиза прошло уже больше чем полтора года. Все это время мы растили свою экспертизу работы с таблицами, и сейчас мы воплотили весь этот опыт в обновленном продукте.

Режим агента
Теперь ассистент может читать вашу таблицу и записывать в нее новые данные и формулы. С помощью промпта можно получить саммари вашей таблицы, исправить ошибки в формула, отформатировать данные и заполнить таблицу новыми данными. Больше никакого копипаста.

Гибкое управление доступом
Раньше приложение запрашивало доступ ко всем вашим таблицам, теперь вы сами выбираете к каким таблицам у агента будет доступ.

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

Если вы часто работаете в таблицах обязательно попробуйте. Мы хотим сделать продукт максимально удобным и полезным. Поэтому я буду очень рад если вы оставите в комментах под постом свой отзыв и пожелания по улучшению.

P. S. Всем своим подписчикам я дам 1000 бесплатных кредитов на использование сервиса. Напишите мне в личку @ivanov_petr почту с которой вы залогинились и их вам начислю.
  • ❤ 6
  • 🔥 4
  • 👍 1
Post #88 164
All good things come to an end

Сегодня мой последний день в Тбилиси. Я возвращаюсь в Россию в Санкт-Петербург. Я прожил в Грузии 2,5 года. Это было время не простое и очень насыщенное событиями. За это время жизнь моя была то на пике то на самом дне. Здесь я встретил людей знаковых для своей жизни. Здесь я влюблялся и разочаровался. Именно тут я прошел через суровую внутреннюю борьбу, смог заглянуть в глаза себе настоящему и измениться.

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

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

Спасибо за все, Тбилиси.
  • ❤ 13
  • 😢 2
  • 🦄 2
  • 🔥 1
  • 🤯 1
  • 🆒 1
Older posts →

About this channel

How can I read @startupetr without a Telegram account?
TGViewer shows the public web preview Telegram publishes for ИндиПетр: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does ИндиПетр have?
ИндиПетр (@startupetr) has 68 subscribers on Telegram, refreshed roughly every 30 minutes.
Does ИндиПетр know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →