Последние 2 недели сплошная возня с конфигами и перевыкатами.
Каждый, кто выходит на новое место работы, знает какого это разобраться с чужой инфрой, настроить у себя проект, разобраться что к чему.
Я этот этап прошла на текущем проекте в одиночку. И мне пришлось не просто поднять у себя на компе, но развернуть все на инфре aws. При этом пришлось использовать сервис ECS, который раньше не использовала. Интересная штука. Надо будет перетащить на него свои проекты, когда разберусь до конца.
Вообще, мне интересно строить инфру проекту, считай с нуля. Я прикидывала калькулятор на aws по стоимости сервисов, поднимала свеженькие инстансы для бд, для кеширования, настраивала доступы, ключи, реджистри. Заставила себя нормально настроить подключение по ssh и aws cli. Навела порядок в своей wsl.
Испытала много попа-боли при настройке nginx. Хах, кто знал, что конфиг digital ocean будет с подвохом:
А директорию для конфигов назовем sites-available. Хм, кстати, может поэтому была ошибка при автоматической генерации сертификата. Надо будет перепроверить скрипт)
Другой не менее сложный момент был в том, чтобы получить доступ из контейнера с nginx в контейнеры с бекендом и фронтендом. У меня запущена network типа bridge, которая обеспечивает связь по имени контейнера. Но имя генерится при каждом новом запуске задачи, не менять же каждый раз конфиг nginx после этого? В итоге я методом тыка нащупала, что можно стучать по хосту 172.17.0.1, но не факт, что он не поменяется. Также пишут, что можно использовать host.docker.internal, но у меня не сработало. Надо искать нормально решение. Но пока не могу придумать какое.
Зато я начала писать примитивные bash-скрипты. Каждый репозиторий проекта снабдила скриптом для сборки контейнера и пуша в реджистри. Потому что надоело одно и то же набирать каждый раз)
Для настройки и запуска nginx написала пару питонячьих скриптов, которые запускаются из bash-скрипта и их результат является условием в bash-скрипте. Почувствовала себя админом, умеющим в питон. Хах!
Отдельно доставило доброжелательностью сообщество @docker_ru. Давно там состою, но всегда стесняюсь спрашивать, так как иногда даже сформулировать сложно то, чего я хочу или в чем у меня проблема. А вот сегодня решилась написать и мне даже попытались помочь! Приятно.
Поправила, собрала, выкатила, проверила, поправила, собрала, выкатила, проверила... Надоело уже возиться с инфрой, хочется покодить)
Впрочем, я еще не закончила. Надо добить разворачивания инфры и наконец перейти к коду. Хотя посматриваю я на чужой код и мне немного страшно. Там столько всего накручено... Особенно на фронте. React во всех его прекрасных проявлениях. Сегодня фронт при сборке на меня ругнулся, что ему не хватает памяти на сборку и следом "вылетело" несколько программ. Я аж офигела от такого поворота событий.
И еще. Так забавно, когда я на проекте сама себе менеджер, сама техлид, сама админ, сама бекенд, сама фронтенд, сама тестер) Многоликая!
Несвязный набор слов. Не выспалась вчера. Простите. Всем интересных задач, проектов, лучших коллег! #Docker, #AWS, #Работа
Каждый, кто выходит на новое место работы, знает какого это разобраться с чужой инфрой, настроить у себя проект, разобраться что к чему.
Я этот этап прошла на текущем проекте в одиночку. И мне пришлось не просто поднять у себя на компе, но развернуть все на инфре aws. При этом пришлось использовать сервис ECS, который раньше не использовала. Интересная штука. Надо будет перетащить на него свои проекты, когда разберусь до конца.
Вообще, мне интересно строить инфру проекту, считай с нуля. Я прикидывала калькулятор на aws по стоимости сервисов, поднимала свеженькие инстансы для бд, для кеширования, настраивала доступы, ключи, реджистри. Заставила себя нормально настроить подключение по ssh и aws cli. Навела порядок в своей wsl.
Испытала много попа-боли при настройке nginx. Хах, кто знал, что конфиг digital ocean будет с подвохом:
include /etc/nginx/sites-enabled/*;
А директорию для конфигов назовем sites-available. Хм, кстати, может поэтому была ошибка при автоматической генерации сертификата. Надо будет перепроверить скрипт)
Другой не менее сложный момент был в том, чтобы получить доступ из контейнера с nginx в контейнеры с бекендом и фронтендом. У меня запущена network типа bridge, которая обеспечивает связь по имени контейнера. Но имя генерится при каждом новом запуске задачи, не менять же каждый раз конфиг nginx после этого? В итоге я методом тыка нащупала, что можно стучать по хосту 172.17.0.1, но не факт, что он не поменяется. Также пишут, что можно использовать host.docker.internal, но у меня не сработало. Надо искать нормально решение. Но пока не могу придумать какое.
Зато я начала писать примитивные bash-скрипты. Каждый репозиторий проекта снабдила скриптом для сборки контейнера и пуша в реджистри. Потому что надоело одно и то же набирать каждый раз)
Для настройки и запуска nginx написала пару питонячьих скриптов, которые запускаются из bash-скрипта и их результат является условием в bash-скрипте. Почувствовала себя админом, умеющим в питон. Хах!
Отдельно доставило доброжелательностью сообщество @docker_ru. Давно там состою, но всегда стесняюсь спрашивать, так как иногда даже сформулировать сложно то, чего я хочу или в чем у меня проблема. А вот сегодня решилась написать и мне даже попытались помочь! Приятно.
Поправила, собрала, выкатила, проверила, поправила, собрала, выкатила, проверила... Надоело уже возиться с инфрой, хочется покодить)
Впрочем, я еще не закончила. Надо добить разворачивания инфры и наконец перейти к коду. Хотя посматриваю я на чужой код и мне немного страшно. Там столько всего накручено... Особенно на фронте. React во всех его прекрасных проявлениях. Сегодня фронт при сборке на меня ругнулся, что ему не хватает памяти на сборку и следом "вылетело" несколько программ. Я аж офигела от такого поворота событий.
И еще. Так забавно, когда я на проекте сама себе менеджер, сама техлид, сама админ, сама бекенд, сама фронтенд, сама тестер) Многоликая!
Несвязный набор слов. Не выспалась вчера. Простите. Всем интересных задач, проектов, лучших коллег! #Docker, #AWS, #Работа
Рубрика проблемы и их решения.
CORS и S3. Самая странная проблема. Файлики прекрасно грузились с другого домена и не было проблем. Пока я не добралась до воспроизведения аудио. Казалось бы, вот этот же аудио-файл был спокойно загружен страницей, но react буквально тут же этот же файл пытается загрузить снова и получает ошибку с CORS. Я иду проверять настройки в S3. Все ок. Ладно, добавляю еще настройку:
Чтобы S3 прокидывал нужные заголовки. Все равно ошибка. Страдаю, гуглю, кручу-верчу. В общем, помогает в итоге очистка кэша браузера. После этого у меня все ок, аудио загружается и работает.
Прошу посмотреть на другом компе, где еще ни разу не загружался этот сайт. И там та же ошибка с CORS. И снова очистка кэша браузера лечит проблему. Как Карл? Нет. Серьезно. Как? Почему?
Воспроизводила несколько раз. Где я не догоняю?
Ладно, там разница в количестве возвращенных заголовков между запросом с ошибкой и без нее. Но почему оно разное до очистки кэша на сайте, который был загружен впервые и после нее?
Вторая история тоже про s3. Я наивно надеялась, что я раз и переключу хранение файлов на S3. Но нет. На проекте идет много обработки аудио и видео с помощью ffmpeg. И все скрипты, конечно, были реализованы через хранение файлов на сервере. В начале мне было страшно влезать в чужой непонятный код и я хотела вовсе отказаться от идеи перехода на S3. Реально становилось страшно от количества чужих непонятных функций для обработки файлов, которые между собой связаны. Когда я начала распутывать этот клубок, переходя и переписывая от одной функции к другой, мне казалось, что я так все переломаю, что потом не смогу собрать. В середине пути мне снова хотелось бросить и откатить все назад. Много раз я сомневалась в правильности принятого решения. Несколько раз приходилось возвращаться к тому, что уже было переписано и править, так как в процессе я узнавала что-то новое и важное обо всей логике. Когда я переписала все до конца, паззл сложился. Теперь я знаю как работает загрузка и обработка файлов на проекте) Заодно переписала логирование)
В процессе изучения проблем приходилось заглядывать и во фронтовую часть. Хоть я и писала свою приложеньку на React, это все же не тоже самое, что смотреть в чужой проект, где компоненты на 300+ строк кода. Первый взгляд на код вызывает панику и 1001 вопрос "что здесь происходит?". И также приходится садиться и разбирать этот клубок на ниточки, чтобы понять как он работает.
Правда, есть определенный кайф в возможности переделать все так, как считаешь нужным. Не смотря на проблемы, мне нравится то, что я сама решаю как поднять этот домик.
Последний сервис успешно развернула на сервере. Но меня пугает его медлительность и прожорливость. Я его подняла на 2cpu и 8gb ram, но сервис все равно не успевает ответить за 5 секунд по одному из запросов. Код в сервисе не вдохновляет. Когда я увидела функцию для обработки endpoint на flask на 300+ строк кода, большая часть из которых начинается с условия if request.method == 'POST', хотя метод итак указан в параметре для route, мне взгрустнулось. И это ведь не весь код, там идет вызов функций из скриптов логики.
"Скоро рассвет. Выхода нет. Ключ поверни и полетели. Надо писать в чью-то тетрадь кровью, как в метрополитене. Выхода нет" (С)
Ладно, выход есть, как и свет в конце тоннеля. 3 недели и я развернула! Нагенерила себе уже 12 задачек в беклог) Буду завтра ковырять то, что оставила на потом. #Работа, #AWS
CORS и S3. Самая странная проблема. Файлики прекрасно грузились с другого домена и не было проблем. Пока я не добралась до воспроизведения аудио. Казалось бы, вот этот же аудио-файл был спокойно загружен страницей, но react буквально тут же этот же файл пытается загрузить снова и получает ошибку с CORS. Я иду проверять настройки в S3. Все ок. Ладно, добавляю еще настройку:
"AllowedHeaders": ["Authorization"]
Чтобы S3 прокидывал нужные заголовки. Все равно ошибка. Страдаю, гуглю, кручу-верчу. В общем, помогает в итоге очистка кэша браузера. После этого у меня все ок, аудио загружается и работает.
Прошу посмотреть на другом компе, где еще ни разу не загружался этот сайт. И там та же ошибка с CORS. И снова очистка кэша браузера лечит проблему. Как Карл? Нет. Серьезно. Как? Почему?
Воспроизводила несколько раз. Где я не догоняю?
Ладно, там разница в количестве возвращенных заголовков между запросом с ошибкой и без нее. Но почему оно разное до очистки кэша на сайте, который был загружен впервые и после нее?
Вторая история тоже про s3. Я наивно надеялась, что я раз и переключу хранение файлов на S3. Но нет. На проекте идет много обработки аудио и видео с помощью ffmpeg. И все скрипты, конечно, были реализованы через хранение файлов на сервере. В начале мне было страшно влезать в чужой непонятный код и я хотела вовсе отказаться от идеи перехода на S3. Реально становилось страшно от количества чужих непонятных функций для обработки файлов, которые между собой связаны. Когда я начала распутывать этот клубок, переходя и переписывая от одной функции к другой, мне казалось, что я так все переломаю, что потом не смогу собрать. В середине пути мне снова хотелось бросить и откатить все назад. Много раз я сомневалась в правильности принятого решения. Несколько раз приходилось возвращаться к тому, что уже было переписано и править, так как в процессе я узнавала что-то новое и важное обо всей логике. Когда я переписала все до конца, паззл сложился. Теперь я знаю как работает загрузка и обработка файлов на проекте) Заодно переписала логирование)
В процессе изучения проблем приходилось заглядывать и во фронтовую часть. Хоть я и писала свою приложеньку на React, это все же не тоже самое, что смотреть в чужой проект, где компоненты на 300+ строк кода. Первый взгляд на код вызывает панику и 1001 вопрос "что здесь происходит?". И также приходится садиться и разбирать этот клубок на ниточки, чтобы понять как он работает.
Правда, есть определенный кайф в возможности переделать все так, как считаешь нужным. Не смотря на проблемы, мне нравится то, что я сама решаю как поднять этот домик.
Последний сервис успешно развернула на сервере. Но меня пугает его медлительность и прожорливость. Я его подняла на 2cpu и 8gb ram, но сервис все равно не успевает ответить за 5 секунд по одному из запросов. Код в сервисе не вдохновляет. Когда я увидела функцию для обработки endpoint на flask на 300+ строк кода, большая часть из которых начинается с условия if request.method == 'POST', хотя метод итак указан в параметре для route, мне взгрустнулось. И это ведь не весь код, там идет вызов функций из скриптов логики.
"Скоро рассвет. Выхода нет. Ключ поверни и полетели. Надо писать в чью-то тетрадь кровью, как в метрополитене. Выхода нет" (С)
Ладно, выход есть, как и свет в конце тоннеля. 3 недели и я развернула! Нагенерила себе уже 12 задачек в беклог) Буду завтра ковырять то, что оставила на потом. #Работа, #AWS
Просто пара слов про рефакторинг, потому что захотелось.
Рефакторинг должен решать определенную задачу, иметь цель и эта цель не должна быть - "просто сделать красиво". Бл***! Не надо писать или переписывать код, чтобы просто было красиво. Серьезно( Я понимаю, что будущее, поддержка и вот это все, но серьезно, не надо делать красоту ради красоты, дизайн ради дизайна, страдать перфекционизмом.
Надо включать голову. Каждый раз я думаю, а зачем я это делаю. Действительно ли это важно? Можно ли этим пренебречь? Что будет, если я это не сделаю?
Самый важный и классный вопрос - а что будет, если этого не сделать? Мне всегда нравились решения задач от противного. Они были необычные и этим вдохновляли. Так и этот вопрос заставляет взглянуть на проблему с другой стороны. Всем удачи)
PS. Просто вот этот вечный страх говнокода, что так нельзя, это фу-фу-фу. Да нет, нормально все. Завтра будет лучше. Исправим, допилим, все будет. Но, к сожалению это стандарт, шаблон мышления в среде. Коллеги будут тыкать, тоскичить на тему, что ты все делаешь не так, только потому что так не принято, так нельзя и вообще твой код - говно.
Извините, пригорело. #Работа
Рефакторинг должен решать определенную задачу, иметь цель и эта цель не должна быть - "просто сделать красиво". Бл***! Не надо писать или переписывать код, чтобы просто было красиво. Серьезно( Я понимаю, что будущее, поддержка и вот это все, но серьезно, не надо делать красоту ради красоты, дизайн ради дизайна, страдать перфекционизмом.
Надо включать голову. Каждый раз я думаю, а зачем я это делаю. Действительно ли это важно? Можно ли этим пренебречь? Что будет, если я это не сделаю?
Самый важный и классный вопрос - а что будет, если этого не сделать? Мне всегда нравились решения задач от противного. Они были необычные и этим вдохновляли. Так и этот вопрос заставляет взглянуть на проблему с другой стороны. Всем удачи)
PS. Просто вот этот вечный страх говнокода, что так нельзя, это фу-фу-фу. Да нет, нормально все. Завтра будет лучше. Исправим, допилим, все будет. Но, к сожалению это стандарт, шаблон мышления в среде. Коллеги будут тыкать, тоскичить на тему, что ты все делаешь не так, только потому что так не принято, так нельзя и вообще твой код - говно.
Извините, пригорело. #Работа
Столько всего хочется рассказать. Но многое пока еще не доделано.
Напишу тру-стори, которая меня прям порадовала.
Один из сервисов, который мне достался был тяжелым. С кучей зависимостей. Только для того, чтобы он поднялся требовалось ~5Gb RAM. Неповоротливый, медленный. В requirements 78 строчек. Tenserflow, natasha, nltk, pymystem3 и много другое. Подключение к бд на сыром sql, много неструктурированного кода, недокументированного, плохо читаемого. Он работал медленно, часто отвечал на запрос дольше 5 секунд. Надо было его оптимизировать, ускорять.
Закармливать этого монстра ресурсами не хотелось. Каким прожорой он будет, когда еще и нагрузка пойдет? Лезть в код было жутко, потому что слишком много всего. Я бы в нем разбиралась очень долго.
И я посмотрела на то, что вообще этот сервис делает и подумала, что вроде функционал нужен простой и в теории можно обойтись google api и встроенной библиотекой difflib. Сразу скажу, что я неправильно оценила необходимый функционал сервиса изначально. Но базовые требования к нему были поняты мной верно. Просто я не учла некоторых подводных камней, которые раскрылись в процессе.
В общем, я решилась на авантюру - переписать все с нуля. Как тот самый программист, который приходит и говорит - фу, надо все переделать)
Когда я начала переписывать, я нашла много неучтенных мной моментов. Что-то я также переписала в новом сервисе, чем-то пришлось пренебречь. Но за день я собрала новый сервис, который по сути выполняет 80% функционала старого. Работает сейчас на 200Mb оперативки. Чисто в теории его можно запустить на банальной lambda функции в AWS. Что я подумываю сделать, но меня смущает скорость ответа от google. Сейчас наблюдаю за тем, сколько в среднем требуется времени на отработку запроса. Но средняя скорость ответа сервиса - 1.1 секунда, из нее на google api приходится почти 100% :-P
Продакт качеством сервиса доволен. Говорит, что в целом отрабатывает не хуже, а в некоторых случаях даже лучше старого. Без nlp и вот этого всего. И бд, кстати, мне тоже не понадобилась.
Люблю я простые решения. Меня прям прет от этого.
На очереди вынесение части функционала из ядра, который медленно работает и тоже жрет много ресурсов. Руки чешутся его пересобрать.
Иии… Я на финишной прямой построения нормального горизонтального масштабирования. Осталось переделать немного Load Balancer и перезапустить и тадам. Когда доделаю инфру, постараюсь написать что я сделала и как.
На самом деле находила много годных статей на эту тему. Но все равно, у каждого свои боли, и не все можно найти в статьях. Я вроде уже ориентируюсь в AWS, но все же еще часто приходится повозиться, чтобы понять как сделать ту или иную штуку.
Вообще меня прет от того, что я не ощущаю собственных границ в плане возможностей. Могу и фронт, и бекенд, и инфру… Да, пусть, я не все знаю на супер-уровне, но любая проблема решаема: документация, stackoverflow, google, сообщества. И пофиг, что я раньше чего-то не делала или не знала, но я сажусь и пытаюсь разобраться, пытаюсь решить задачу. И все получается. Пусть не сразу, но все получается. Это кайфово.
Чудесный мир программирования, я люблю тебя ❤️ #Работа
Напишу тру-стори, которая меня прям порадовала.
Один из сервисов, который мне достался был тяжелым. С кучей зависимостей. Только для того, чтобы он поднялся требовалось ~5Gb RAM. Неповоротливый, медленный. В requirements 78 строчек. Tenserflow, natasha, nltk, pymystem3 и много другое. Подключение к бд на сыром sql, много неструктурированного кода, недокументированного, плохо читаемого. Он работал медленно, часто отвечал на запрос дольше 5 секунд. Надо было его оптимизировать, ускорять.
Закармливать этого монстра ресурсами не хотелось. Каким прожорой он будет, когда еще и нагрузка пойдет? Лезть в код было жутко, потому что слишком много всего. Я бы в нем разбиралась очень долго.
И я посмотрела на то, что вообще этот сервис делает и подумала, что вроде функционал нужен простой и в теории можно обойтись google api и встроенной библиотекой difflib. Сразу скажу, что я неправильно оценила необходимый функционал сервиса изначально. Но базовые требования к нему были поняты мной верно. Просто я не учла некоторых подводных камней, которые раскрылись в процессе.
В общем, я решилась на авантюру - переписать все с нуля. Как тот самый программист, который приходит и говорит - фу, надо все переделать)
Когда я начала переписывать, я нашла много неучтенных мной моментов. Что-то я также переписала в новом сервисе, чем-то пришлось пренебречь. Но за день я собрала новый сервис, который по сути выполняет 80% функционала старого. Работает сейчас на 200Mb оперативки. Чисто в теории его можно запустить на банальной lambda функции в AWS. Что я подумываю сделать, но меня смущает скорость ответа от google. Сейчас наблюдаю за тем, сколько в среднем требуется времени на отработку запроса. Но средняя скорость ответа сервиса - 1.1 секунда, из нее на google api приходится почти 100% :-P
Продакт качеством сервиса доволен. Говорит, что в целом отрабатывает не хуже, а в некоторых случаях даже лучше старого. Без nlp и вот этого всего. И бд, кстати, мне тоже не понадобилась.
Люблю я простые решения. Меня прям прет от этого.
На очереди вынесение части функционала из ядра, который медленно работает и тоже жрет много ресурсов. Руки чешутся его пересобрать.
Иии… Я на финишной прямой построения нормального горизонтального масштабирования. Осталось переделать немного Load Balancer и перезапустить и тадам. Когда доделаю инфру, постараюсь написать что я сделала и как.
На самом деле находила много годных статей на эту тему. Но все равно, у каждого свои боли, и не все можно найти в статьях. Я вроде уже ориентируюсь в AWS, но все же еще часто приходится повозиться, чтобы понять как сделать ту или иную штуку.
Вообще меня прет от того, что я не ощущаю собственных границ в плане возможностей. Могу и фронт, и бекенд, и инфру… Да, пусть, я не все знаю на супер-уровне, но любая проблема решаема: документация, stackoverflow, google, сообщества. И пофиг, что я раньше чего-то не делала или не знала, но я сажусь и пытаюсь разобраться, пытаюсь решить задачу. И все получается. Пусть не сразу, но все получается. Это кайфово.
Чудесный мир программирования, я люблю тебя ❤️ #Работа
Я поставила промежуточную точку в создании инфры для своего проекта.
Не скажу, что я сделала идеально, я не супер-специалист в этом, но хочу поделиться тем, что в итоге получилось.
Все развернуто на AWS. И далее будут сокращенные названия aws-сервисов. Если что, я очень многое подсмотрела на канале adv-it https://www.youtube.com/playlist?list=PLg5SS_4L6LYsxrZ_4xE_U95AtGsIB96k9.
Итак.
1. База данных postgres на RDS. Первый год использования 1 инстанс db.t2.micro бесплатный. Доступ к базе данных только внутри сети VPC. Извне нет возможности подключения.
2. Redis. Тоже вроде только первый год использования бесплатно 1 инстанс cache.t3.micro. Аналогично как и бд имеет доступ только внутри сети VPC.
3. Файловое хранилище S3. Для Django есть библиотека https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html. Для всего остального можно использовать boto3. В расходах у меня за ноябрь вышло 24 цента за s3. Там есть бесплатный уровень использования, но я его превысила. Посмотрю как дальше пойдет.
4. Реджестри для хранения докер-образов - ECR. У меня получилось 4 образа. За ноябрь вышло 1 доллар. Стоимость идет - 10 центов за GB-месяц. Надо понять как там автоматически удалять старые образы.
5. Дальше самое интересное - ECS - сервис управления контейнерами. Он задевает сразу несколько сервисов. Распишу примерный путь)
- в ECS создала пустой кластер.
- там же в Task Definitions завела на каждый контейнер отдельный конфиг задачи. К задаче привязывается контейнер и порт, на котором будет жить этот контейнер. (будем строить кораблик, который доставит контейнер в порт ^_^)
- Также в S3 в закрытый бакет положила файл .env, который прописан в настройках задач как файл для получения переменных среды.
- дальше в EC2 консольке завела Launch template для моего кластера. Для экономии взяла спотовые инстансы, которые продают со скидкой (непостоянные инстансы, которые могут отобрать в любой момент). Позже по необходимости сделаю базовый инстанс постоянный, а на масштабирование - споты. Важно, в Advanced details в user data прописать привязку инстансов к кластеру и для ecs настройку, что это спотовые инстансы:
Если не прописать настройку кластера, то инстанс не будет добавлен в кластер. Я на этом словила много недоумения.
Плюс обязательно указать нужную AMI. Я прям специально искала, что ecs использует ami-04e6179c63d17513d (это образ системы, которая будет развернута на инстансе).
Тут еще как оказалось не все типы инстансов поддерживают эту систему, поэтому надо выбирать внимательно.
- После иду создавать Auto Scaling group (ASG), где выбираю нужный шаблон. Load Balancer на данном шаге не привязывала.
- Для https и масштабирования я создала 2 application load balancer - internal (ходит внутри сети) и internet-facing (с выходом в интернет). Первый сделан для того, чтобы закрыть все сервисы из интернета. Доступ к ним будет только по локальной сети. Но при этом, при увеличении нагрузки балансер будет распределять ее между разными запущенными контейнерами по одному пути к сервису. Второй я прикрутила к nginx, в котором прописаны нужные пути до открытых сервисов. Плюс ко второму можно привязать бесплатный https сертификат от aws (создается через certificate manager).
- Дальше в кластере привязала ASG как capacity provider. Вот тут как раз можно будет отдельно сделать провайдера для одного постоянного инстанса, я думаю.
- Обновила кластер и сделала новый провайдер дефолтным.
- И последним пунктом в кластер завела сервисы, связанные в конфигами тасков на каждый сервис. Там в процессе заодно создала Target Group на каждый сервис.
6. Мой любимый CloudWatch для логов. Там несложно. Просто распихать все по нужным папкам.
7. Совсем забыла, еще sqs конечно же как брокер очередей. #AWS, #Работа
Не скажу, что я сделала идеально, я не супер-специалист в этом, но хочу поделиться тем, что в итоге получилось.
Все развернуто на AWS. И далее будут сокращенные названия aws-сервисов. Если что, я очень многое подсмотрела на канале adv-it https://www.youtube.com/playlist?list=PLg5SS_4L6LYsxrZ_4xE_U95AtGsIB96k9.
Итак.
1. База данных postgres на RDS. Первый год использования 1 инстанс db.t2.micro бесплатный. Доступ к базе данных только внутри сети VPC. Извне нет возможности подключения.
2. Redis. Тоже вроде только первый год использования бесплатно 1 инстанс cache.t3.micro. Аналогично как и бд имеет доступ только внутри сети VPC.
3. Файловое хранилище S3. Для Django есть библиотека https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html. Для всего остального можно использовать boto3. В расходах у меня за ноябрь вышло 24 цента за s3. Там есть бесплатный уровень использования, но я его превысила. Посмотрю как дальше пойдет.
4. Реджестри для хранения докер-образов - ECR. У меня получилось 4 образа. За ноябрь вышло 1 доллар. Стоимость идет - 10 центов за GB-месяц. Надо понять как там автоматически удалять старые образы.
5. Дальше самое интересное - ECS - сервис управления контейнерами. Он задевает сразу несколько сервисов. Распишу примерный путь)
- в ECS создала пустой кластер.
- там же в Task Definitions завела на каждый контейнер отдельный конфиг задачи. К задаче привязывается контейнер и порт, на котором будет жить этот контейнер. (будем строить кораблик, который доставит контейнер в порт ^_^)
- Также в S3 в закрытый бакет положила файл .env, который прописан в настройках задач как файл для получения переменных среды.
- дальше в EC2 консольке завела Launch template для моего кластера. Для экономии взяла спотовые инстансы, которые продают со скидкой (непостоянные инстансы, которые могут отобрать в любой момент). Позже по необходимости сделаю базовый инстанс постоянный, а на масштабирование - споты. Важно, в Advanced details в user data прописать привязку инстансов к кластеру и для ecs настройку, что это спотовые инстансы:
#!/bin/bash
echo ECS_CLUSTER=cluster-name >> /etc/ecs/ecs.config
echo ECS_ENABLE_SPOT_INSTANCE_DRAINING=true >> /etc/ecs/ecs.config
Если не прописать настройку кластера, то инстанс не будет добавлен в кластер. Я на этом словила много недоумения.
Плюс обязательно указать нужную AMI. Я прям специально искала, что ecs использует ami-04e6179c63d17513d (это образ системы, которая будет развернута на инстансе).
Тут еще как оказалось не все типы инстансов поддерживают эту систему, поэтому надо выбирать внимательно.
- После иду создавать Auto Scaling group (ASG), где выбираю нужный шаблон. Load Balancer на данном шаге не привязывала.
- Для https и масштабирования я создала 2 application load balancer - internal (ходит внутри сети) и internet-facing (с выходом в интернет). Первый сделан для того, чтобы закрыть все сервисы из интернета. Доступ к ним будет только по локальной сети. Но при этом, при увеличении нагрузки балансер будет распределять ее между разными запущенными контейнерами по одному пути к сервису. Второй я прикрутила к nginx, в котором прописаны нужные пути до открытых сервисов. Плюс ко второму можно привязать бесплатный https сертификат от aws (создается через certificate manager).
- Дальше в кластере привязала ASG как capacity provider. Вот тут как раз можно будет отдельно сделать провайдера для одного постоянного инстанса, я думаю.
- Обновила кластер и сделала новый провайдер дефолтным.
- И последним пунктом в кластер завела сервисы, связанные в конфигами тасков на каждый сервис. Там в процессе заодно создала Target Group на каждый сервис.
6. Мой любимый CloudWatch для логов. Там несложно. Просто распихать все по нужным папкам.
7. Совсем забыла, еще sqs конечно же как брокер очередей. #AWS, #Работа
В пору писать подробный гайд) Но я стесняюсь, потому что для меня это все было впервые и уверена, что многое можно было сделать лучше.
Пришлось перерыть кучу гайдов, статей, документации, чтобы разобраться с проблемами и понять как это все построить.
За ноябрь со всеми экспериментами у меня вышло $31.20. Прогноз aws на декабрь - $27.4, но это я еще подняла отдельный кластер для тестового контура. Мой план по бюджету на инфру - $150 в месяц. Мне еще предстоит построить ci/cd, плюс пока нет нагрузки, а еще я хочу попробовать использовать функцию конвертации аудио в aws.
Фух. С одной стороны довольно больно в этом во всем копаться и настраивать. С другой стороны есть определенный кайф от инфры AWS, от всех возможностей, гибкости и того, что в итоге можно построить в этом монстре. Я очень боялась, что будет дорого. Но пока цены адекватны. Страшно иногда смотреть на расчеты, которые они сами показывают, потому что там какие-то космические цифры. Не скажу в итоге, что инфра AWS дешевая, но если учесть как ее можно настроить, выходит довольно неплохо.
Пойду дальше исправлять ошибки, связанные с переключением старого кода на S3… А ведь я могла тупо все на одном постоянном инстансе развернуть и сказать, ну, работает же, че) #AWS, #Работа
Пришлось перерыть кучу гайдов, статей, документации, чтобы разобраться с проблемами и понять как это все построить.
За ноябрь со всеми экспериментами у меня вышло $31.20. Прогноз aws на декабрь - $27.4, но это я еще подняла отдельный кластер для тестового контура. Мой план по бюджету на инфру - $150 в месяц. Мне еще предстоит построить ci/cd, плюс пока нет нагрузки, а еще я хочу попробовать использовать функцию конвертации аудио в aws.
Фух. С одной стороны довольно больно в этом во всем копаться и настраивать. С другой стороны есть определенный кайф от инфры AWS, от всех возможностей, гибкости и того, что в итоге можно построить в этом монстре. Я очень боялась, что будет дорого. Но пока цены адекватны. Страшно иногда смотреть на расчеты, которые они сами показывают, потому что там какие-то космические цифры. Не скажу в итоге, что инфра AWS дешевая, но если учесть как ее можно настроить, выходит довольно неплохо.
Пойду дальше исправлять ошибки, связанные с переключением старого кода на S3… А ведь я могла тупо все на одном постоянном инстансе развернуть и сказать, ну, работает же, че) #AWS, #Работа
Боль.
Нашла ffmpeg для lambda-функции. Обрадовалась. Настроила. Работает ^_^
Пошла переключать функционал, заодно посмотреть скорость работы. В процессе оказалось, что работает, но не все функции ffmpeg. Хнык. А начиналось так красиво...
Но слои в lambda-функциях - огонь.
Подумываю записать может гайд какой-нибудь как с этим работать, а то на YouTube в плане именно разработки на aws одни индусы)
Но никак не могу дозреть до записи гайдов) #AWS, #Tools
Нашла ffmpeg для lambda-функции. Обрадовалась. Настроила. Работает ^_^
Пошла переключать функционал, заодно посмотреть скорость работы. В процессе оказалось, что работает, но не все функции ffmpeg. Хнык. А начиналось так красиво...
Но слои в lambda-функциях - огонь.
Подумываю записать может гайд какой-нибудь как с этим работать, а то на YouTube в плане именно разработки на aws одни индусы)
Но никак не могу дозреть до записи гайдов) #AWS, #Tools
Конец года - время подводить итоги и намечать планы.
Каждый год своей жизни, оглядываясь назад, я удивляюсь тому, что случилось за год, что поменялось и к чему я пришла. Мне 32, с момента окончания школы прошло уже 15 лет, и все это время было насыщенным. Я меняла города, вузы (3 разных, ни один не закончила), профессии, работы (трудовая книжка с вкладышем). Разве что не уехала в другую страну. Работала с 17 лет официанткой, продавцом, воспитателем в школе, нянечкой в детском доме, преподавала в училище, лаборантом в вузе, журналистом, запускала свой некоммерческий проект, снова официанткой, руководила разработкой рекламных материалов, потом сайтов, отделом разработки, командами разработки крупных сервисов, потом подразделением, а теперь я сижу и пишу код.
Не могу сказать, что этот год был насыщенным, нет. 4 месяца я вообще позволила себе сильно расслабиться и мало что делать. Но меня по-прежнему радует и вдохновляет выбранный путь - программирование. Я не пожалела, что к концу этого года выбрала интересный стартап, вместо стабильной компании. Я искренне кайфую от работы с моим продактом, от задач, которые приходится решать, от свободы и легкости, которая у меня сейчас есть.
Правда, нехило так съехала моя производительность, так как я очень сильно расслабилась и никак не могу войти в норму. Все попытки вернуться в рабочий режим, перестать прокрастинировать, залипать в телефоне, в играх и тп, пока неуспешны.
Но так было всегда. Сколько я себя помню, то я пру как паровоз, то еле ползу по инерции. Часто набранных знаний, опыта, репутации, в активный период хватает на то, чтобы время отходняка не сильно сказалось на показателях в целом.
Пролистала дневник, чтобы подвести итоги, вспомнить что было в этом году. В начале года я судорожно пыталась пройти курс по ml (не весь, но большую часть списка пройденных мной курсов можно найти https://t.me/devlogirl/117), в конце года мне довелось попрактиковать эти знания на хакатоне (отсюда посты про хакатон https://t.me/devlogirl/130). Также в начале года я поработала в команде, но в итоге ушла от ребят. Продолжила заниматься noctua.pro, сделала совместный проект @s_channel_bot, и к осени уже думала уйти от стартапов в какую-нибудь компанию/команду, но в итоге я снова оказалась в стартапе и кажется, что теперь уже надолго и серьезно.
План.
В планах развивать стартап, набрать свою команду на него.
Учиться дальше. В первую очередь подтянуть английский, я уже этим занялась. Кроме английского, хочется дальше углубляться в инфру, aws. В плане программирования разобраться с архитектурой, оптимизацией. Еще хочется изучить Go и попробовать его. Продолжить изучать ml. Также придется так или иначе работать и разбираться с nlp.
Начать снимать видео? Уже который раз задумываюсь над этим и никак не могу решиться. Есть понимание как это делается, и в целом то можно не париться и просто начать снимать. Пока меня останавливает вопрос подготовки контента. Я прикинула, что это ж надо заранее накидать сценарий, пройти по нему. Это время. А зачем? Для кого? В сети уже реально дофига разного контента. Так можно про все сказать, конечно, надо просто начать делать. Для меня это все же не приоритетная задача, но возможно, я все же ради фана начну это делать. Да, блин, я сюда-то редко пишу, а тут видео снимать)
Поделитесь какие у вас итоги и планы.
С наступающим всех и хорошо отпраздновать!
Ваша лиса-питоняша-фулстакерша. #Жизнь
Каждый год своей жизни, оглядываясь назад, я удивляюсь тому, что случилось за год, что поменялось и к чему я пришла. Мне 32, с момента окончания школы прошло уже 15 лет, и все это время было насыщенным. Я меняла города, вузы (3 разных, ни один не закончила), профессии, работы (трудовая книжка с вкладышем). Разве что не уехала в другую страну. Работала с 17 лет официанткой, продавцом, воспитателем в школе, нянечкой в детском доме, преподавала в училище, лаборантом в вузе, журналистом, запускала свой некоммерческий проект, снова официанткой, руководила разработкой рекламных материалов, потом сайтов, отделом разработки, командами разработки крупных сервисов, потом подразделением, а теперь я сижу и пишу код.
Не могу сказать, что этот год был насыщенным, нет. 4 месяца я вообще позволила себе сильно расслабиться и мало что делать. Но меня по-прежнему радует и вдохновляет выбранный путь - программирование. Я не пожалела, что к концу этого года выбрала интересный стартап, вместо стабильной компании. Я искренне кайфую от работы с моим продактом, от задач, которые приходится решать, от свободы и легкости, которая у меня сейчас есть.
Правда, нехило так съехала моя производительность, так как я очень сильно расслабилась и никак не могу войти в норму. Все попытки вернуться в рабочий режим, перестать прокрастинировать, залипать в телефоне, в играх и тп, пока неуспешны.
Но так было всегда. Сколько я себя помню, то я пру как паровоз, то еле ползу по инерции. Часто набранных знаний, опыта, репутации, в активный период хватает на то, чтобы время отходняка не сильно сказалось на показателях в целом.
Пролистала дневник, чтобы подвести итоги, вспомнить что было в этом году. В начале года я судорожно пыталась пройти курс по ml (не весь, но большую часть списка пройденных мной курсов можно найти https://t.me/devlogirl/117), в конце года мне довелось попрактиковать эти знания на хакатоне (отсюда посты про хакатон https://t.me/devlogirl/130). Также в начале года я поработала в команде, но в итоге ушла от ребят. Продолжила заниматься noctua.pro, сделала совместный проект @s_channel_bot, и к осени уже думала уйти от стартапов в какую-нибудь компанию/команду, но в итоге я снова оказалась в стартапе и кажется, что теперь уже надолго и серьезно.
План.
В планах развивать стартап, набрать свою команду на него.
Учиться дальше. В первую очередь подтянуть английский, я уже этим занялась. Кроме английского, хочется дальше углубляться в инфру, aws. В плане программирования разобраться с архитектурой, оптимизацией. Еще хочется изучить Go и попробовать его. Продолжить изучать ml. Также придется так или иначе работать и разбираться с nlp.
Начать снимать видео? Уже который раз задумываюсь над этим и никак не могу решиться. Есть понимание как это делается, и в целом то можно не париться и просто начать снимать. Пока меня останавливает вопрос подготовки контента. Я прикинула, что это ж надо заранее накидать сценарий, пройти по нему. Это время. А зачем? Для кого? В сети уже реально дофига разного контента. Так можно про все сказать, конечно, надо просто начать делать. Для меня это все же не приоритетная задача, но возможно, я все же ради фана начну это делать. Да, блин, я сюда-то редко пишу, а тут видео снимать)
Поделитесь какие у вас итоги и планы.
С наступающим всех и хорошо отпраздновать!
Ваша лиса-питоняша-фулстакерша. #Жизнь
🔥10👍1
Начало года.
Знакомлюсь с Graphql - https://www.youtube.com/watch?v=7zEaHr_iJjA.
В проекте используется он, поэтому приходится осваивать. При чем сразу в бекенде и на фронтенде. Фырчу, потому что все в новинку и приходится разбираться на ходу, но кажется, что есть в этой технологии что-то интересное. Когда разберусь подробнее и реализую все шаги - отпишу о впечатлениях.
Вообще сейчас занимаюсь тем, что переношу линейную структуру на граф. Довольно интересная задачка, особенно учитывая, что надо сохранить существующие данные и корректно их перенести на новую структуру. Уже написала миграцию с переносом данных и прогнала ее локально. Когда писала код для реализации граней графа, было довольно необычно мыслить в трех категориях: отображения данных в виде некой древовидной структуры, описание этой структуры в виде кода и хранение этой структуры в базе данных. Теперь надо дойти до конца, чтобы проверить, что я все сделала правильно, хотя уже на переносе данных переделывала миграции, так как осознала, что не все учла.
AWS. Сколько уже сижу на aws и иногда почитываю сообщество, но не знала про интересные плюшки aws для стартапов. Оказывается, можно получить 1к долларов в виде кредитов на aws инфру + кредиты на их техподдержку + запросить встречу со специалистом aws, чтобы задать свои вопросы + получить своего менеджера, который поможет сориентироваться в aws и еще многое другое. И для всего этого нужен сайт, страничка на линкедине и заполненная заявка на партнерство. В общем, мой продакт позвал меня на встречу aws для стартаперов и я вдохновилась еще больше их культурой.
Если что - тут https://aws-startuploft-emea.com/ сообщество, где aws публикует даты мероприятий, а также можно запросить встречу с экспертом.
Тут https://aws.amazon.com/ru/activate/portfolio/ - как получить кредиты на стартап.
Сейчас в процессе оформления заявки, напишу, когда получим кредиты.
Кстати, после регистрации мне позвонил Amazon по номеру из Чехии. Я так и не поняла, почему из Чехии, но обещал прислать email, который я в итоге так и не дождалась) Но да лан.
3D. На проекте используются аватары от ребят из https://wolf3d.io. Одна из задач - подшаманить эти аватары для оптимизации и выполнения просто анимации. Я уже начала исследовать тему, начала изучать babylonjs, который используется в проекте. Установила себе unity и blender, где ищу способ корректно поменять модельку. Начала переписку с разработчиками Wolf3D. Это было очень внезапно и прикольно, когда на мои вопросы ответил их CTO. В итоге прихожу к тому, что надо найти специалиста, который сделает эту оптимизацию за отдельную плату. Так как задача разовая и нет большого смысла сейчас погружаться в эту тему. В том числе для решения этой задачки забралась в сообщество https://t.me/webgl_ru со своими вопросами. Вообще, web 3d, как мне кажется, довольно интересная тема в плане программирования. Было бы интересно в нее погрузится, но это нереально успеть везде, поэтому придется искать помощи.
Обожаю свою работу за такое разнообразие. #AWS, #JS, #Работа, #Tools
Знакомлюсь с Graphql - https://www.youtube.com/watch?v=7zEaHr_iJjA.
В проекте используется он, поэтому приходится осваивать. При чем сразу в бекенде и на фронтенде. Фырчу, потому что все в новинку и приходится разбираться на ходу, но кажется, что есть в этой технологии что-то интересное. Когда разберусь подробнее и реализую все шаги - отпишу о впечатлениях.
Вообще сейчас занимаюсь тем, что переношу линейную структуру на граф. Довольно интересная задачка, особенно учитывая, что надо сохранить существующие данные и корректно их перенести на новую структуру. Уже написала миграцию с переносом данных и прогнала ее локально. Когда писала код для реализации граней графа, было довольно необычно мыслить в трех категориях: отображения данных в виде некой древовидной структуры, описание этой структуры в виде кода и хранение этой структуры в базе данных. Теперь надо дойти до конца, чтобы проверить, что я все сделала правильно, хотя уже на переносе данных переделывала миграции, так как осознала, что не все учла.
AWS. Сколько уже сижу на aws и иногда почитываю сообщество, но не знала про интересные плюшки aws для стартапов. Оказывается, можно получить 1к долларов в виде кредитов на aws инфру + кредиты на их техподдержку + запросить встречу со специалистом aws, чтобы задать свои вопросы + получить своего менеджера, который поможет сориентироваться в aws и еще многое другое. И для всего этого нужен сайт, страничка на линкедине и заполненная заявка на партнерство. В общем, мой продакт позвал меня на встречу aws для стартаперов и я вдохновилась еще больше их культурой.
Если что - тут https://aws-startuploft-emea.com/ сообщество, где aws публикует даты мероприятий, а также можно запросить встречу с экспертом.
Тут https://aws.amazon.com/ru/activate/portfolio/ - как получить кредиты на стартап.
Сейчас в процессе оформления заявки, напишу, когда получим кредиты.
Кстати, после регистрации мне позвонил Amazon по номеру из Чехии. Я так и не поняла, почему из Чехии, но обещал прислать email, который я в итоге так и не дождалась) Но да лан.
3D. На проекте используются аватары от ребят из https://wolf3d.io. Одна из задач - подшаманить эти аватары для оптимизации и выполнения просто анимации. Я уже начала исследовать тему, начала изучать babylonjs, который используется в проекте. Установила себе unity и blender, где ищу способ корректно поменять модельку. Начала переписку с разработчиками Wolf3D. Это было очень внезапно и прикольно, когда на мои вопросы ответил их CTO. В итоге прихожу к тому, что надо найти специалиста, который сделает эту оптимизацию за отдельную плату. Так как задача разовая и нет большого смысла сейчас погружаться в эту тему. В том числе для решения этой задачки забралась в сообщество https://t.me/webgl_ru со своими вопросами. Вообще, web 3d, как мне кажется, довольно интересная тема в плане программирования. Было бы интересно в нее погрузится, но это нереально успеть везде, поэтому придется искать помощи.
Обожаю свою работу за такое разнообразие. #AWS, #JS, #Работа, #Tools
👍3🔥1🎉1
Захожу ради интереса иногда в логи nginx. Меня до сих немного захватывает то, что есть люди, которые вот так пытаются ломать все, что попадется.
Будьте внимательнее с доступами...
Если что, поясню для тех, кто в танке. В файле .env обычно хранят логины и пароли. Здесь чей-то бот пытается достучаться по всем популярным путям до этого файлика.
Интересно, есть ли стандартные методы блокировки вот таких ботов, или пофиг на них, пусть стучат? #Работа
Будьте внимательнее с доступами...
Если что, поясню для тех, кто в танке. В файле .env обычно хранят логины и пароли. Здесь чей-то бот пытается достучаться по всем популярным путям до этого файлика.
Интересно, есть ли стандартные методы блокировки вот таких ботов, или пофиг на них, пусть стучат? #Работа
😱2
Закончила задачу с 3D аватарами. У blender есть python api и можно запускать скрипты с помощью cli. Изначально писать код и дебажить пришлось в самом блендере, потом вынесла его в скрипт. Теперь запускаю скрипт и формируются нужные опоры для эмоций и удаляется все лишнее.
Правда, возни получается все равно много пока. Надо скачать аватара, запустить на нем скрипт блендера, залить в проект, сделать превью через js-скрипт, который вызывается через get-параметр при загрузке страницы с аватаром. Дичь) Но так как это разовая операция, пока нет смысла все это оптимизировать.
Было забавно, когда начала заливать новых аватаров обнаружился косяк с глазами. Поверх глаз аватарок начали накладываться лишние ресницы. Поковырявшись, нашла лишние глаза для женской анимации стандартной фигуры стояния (по дефолту аватары в T-позе).
Я безумно рада, что я разобралась и сделала эту задачу. Изначально я даже не знала как к ней подойти. Плюс еще одна победа, хехей! #Работа, #Python, #Tools
Правда, возни получается все равно много пока. Надо скачать аватара, запустить на нем скрипт блендера, залить в проект, сделать превью через js-скрипт, который вызывается через get-параметр при загрузке страницы с аватаром. Дичь) Но так как это разовая операция, пока нет смысла все это оптимизировать.
Было забавно, когда начала заливать новых аватаров обнаружился косяк с глазами. Поверх глаз аватарок начали накладываться лишние ресницы. Поковырявшись, нашла лишние глаза для женской анимации стандартной фигуры стояния (по дефолту аватары в T-позе).
Я безумно рада, что я разобралась и сделала эту задачу. Изначально я даже не знала как к ней подойти. Плюс еще одна победа, хехей! #Работа, #Python, #Tools
👍4🔥3
Захожу сегодня в биллинг аккаунта noctua на aws, а там расходы за январь - 0. Я сначала опешила даже несколько. Потом заглянула в кредиты и увидела, что да, нам одобрили 1000$ + 350$ на саппорт. О том, что это и за что, я писала тут https://t.me/devlogirl/152. Прикольно) #AWS
🔥4
Мой продакт расширяет мои горизонты, заставил зарегаться на сайте https://www.f6s.com, чтобы подключиться к аккаунту продукта. Отныне у меня лычка CTO. Первым делом сайт начинает активно предлагать поискать работу в тех стартапах, которые на нем зареганы. И предложения там довольно интересные и разнообразные. Могу сказать, что рекомендую присмотреться к нему как к альтернативному способу искать работу.
Еще недавно я к стартапам относилась довольно скептично и меня не особо сильно увлекала эта движуха. Но те пути, по которым сейчас меня ведет мой продакт, не напоминают мне инфоцыганство и бизнес-молодость. Просто, когда я училась на продакта в Нетологии, все что рассказывали про стартапы хоть и было в теории логичным, но все время казалось мне чем-то неосязаемым, нереалистичным. А тут я верю в текущий наш путь и что все может реально получиться.
Когда мне было 20 лет, я организовала в Пскове некоммерческий проект. Я до сих пор горжусь эти опытом и вспоминаю его как нечто безумно крутое. Это был журнал за 24 часа. Я запускала его 4 раза без денег и без особой поддержки. Там участвовало от 10 до 30 неопытных студентов. Я договаривалась с бизнесами о предоставлении нам помещения на выходные с интернетом бесплатно. Представляете, бизнесы пускали ватагу студентов на сутки в свои помещения. Первый раз я все организовала (нашла помещение и собрала людей) за 3 недели. Это был офигенно драйвовый опыт.
К чему я это? С того времени я много раз думала о том, что мне хотелось бы сделать что-то свое. Но никогда больше я настолько не загоралась какой-либо идеей, чтобы выкладываться на все 100, делать несмотря ни на что. Такой огненной мотивации больше никогда не было. И вот сейчас, пусть это и не мой проект, но я в него верю и мне действительно интересно его делать. Пусть сейчас и не с таким драйвом как было тогда, но я реально получаю кайф от работы. Посмотрим, что будет дальше. Думаю, что это несомненно будет крутой опыт. #Работа, #Жизнь
Еще недавно я к стартапам относилась довольно скептично и меня не особо сильно увлекала эта движуха. Но те пути, по которым сейчас меня ведет мой продакт, не напоминают мне инфоцыганство и бизнес-молодость. Просто, когда я училась на продакта в Нетологии, все что рассказывали про стартапы хоть и было в теории логичным, но все время казалось мне чем-то неосязаемым, нереалистичным. А тут я верю в текущий наш путь и что все может реально получиться.
Когда мне было 20 лет, я организовала в Пскове некоммерческий проект. Я до сих пор горжусь эти опытом и вспоминаю его как нечто безумно крутое. Это был журнал за 24 часа. Я запускала его 4 раза без денег и без особой поддержки. Там участвовало от 10 до 30 неопытных студентов. Я договаривалась с бизнесами о предоставлении нам помещения на выходные с интернетом бесплатно. Представляете, бизнесы пускали ватагу студентов на сутки в свои помещения. Первый раз я все организовала (нашла помещение и собрала людей) за 3 недели. Это был офигенно драйвовый опыт.
К чему я это? С того времени я много раз думала о том, что мне хотелось бы сделать что-то свое. Но никогда больше я настолько не загоралась какой-либо идеей, чтобы выкладываться на все 100, делать несмотря ни на что. Такой огненной мотивации больше никогда не было. И вот сейчас, пусть это и не мой проект, но я в него верю и мне действительно интересно его делать. Пусть сейчас и не с таким драйвом как было тогда, но я реально получаю кайф от работы. Посмотрим, что будет дальше. Думаю, что это несомненно будет крутой опыт. #Работа, #Жизнь
👍4❤1
Рабочий блокнот. Тут планирование перехода структуры данных от списка к графу и изменение 3D моделей аватаров через blender. А во время созвонов я рисую простые геометрические фигуры, пишу рандомные слова и иногда фиксирую ключевые слова из договоренностей, чтобы потом расписать подробнее то, о чем договорились.
Всегда восторгалась людьми, у кого черновики выглядят как связные мысли, а не вот этот набор абсолютной дичи. #Жизнь
Всегда восторгалась людьми, у кого черновики выглядят как связные мысли, а не вот этот набор абсолютной дичи. #Жизнь
👍5🔥1
Факап дня. Сижу, изучаю вариант распознавания речи без предварительной конвертации аудио в другой формат, чтобы снизить время на обработку. Готовлю данные, делаю запрос в google api. Получаю ответ через 15 секунд. Думаю, что ну трындец, мы так не договаривались. Закрываю все, что сделала. Иду изучать другие варианты оптимизации. Мой интернет… тадам, я чет прилег)
Когда интернет полетел, скорость обработки запроса пришла в норму. Пришлось все обратно возвращать) #Работа
Когда интернет полетел, скорость обработки запроса пришла в норму. Пришлось все обратно возвращать) #Работа
😁2🤯1
Просто делюсь эмоциями...
Да простят меня коллеги, но сил нет.
Второй день переписываю кусок кода, который и ранее уже немного правила. И все еще негодую) Просто одно и тоже гоняется туда-сюда, такое ощущение, что писали индусы, которым платят за строчки, но иногда они вдруг пытаются сэкономить! внезапно! и там где стоило бы разнести как раз на несколько строк, наоборот впихивают все в одну.
Зачем я это делаю? Я хочу несколько запросов делать асинхронно, но для этого мне надо вытащить их из общего потока задублированного по сути кода. Терпения мне.
Пример бесячего однострочника:
И вот такого довольно много #Работа, #Python
Да простят меня коллеги, но сил нет.
Второй день переписываю кусок кода, который и ранее уже немного правила. И все еще негодую) Просто одно и тоже гоняется туда-сюда, такое ощущение, что писали индусы, которым платят за строчки, но иногда они вдруг пытаются сэкономить! внезапно! и там где стоило бы разнести как раз на несколько строк, наоборот впихивают все в одну.
Зачем я это делаю? Я хочу несколько запросов делать асинхронно, но для этого мне надо вытащить их из общего потока задублированного по сути кода. Терпения мне.
Пример бесячего однострочника:
ignore_fail = getattr(result, 'ignore_fail', False) and (kwargs['level'] == 2 and session.mode == LessonMode.CHOICES_TEST_TWO_STEP)
И вот такого довольно много #Работа, #Python
🤯3👍1
Вчера целый день провозилась с Pycharm.
При установке новой библиотеки редактор ее не обнаруживал. То есть консоль работает, приложение работает, в списке зависимостей для интерпретатора она есть, а в редактор - хрен, красное подчеркивание, ничего не вижу и не знаю.
Я давно использую докер и ранее такого не было. Были небольшие подвисания, но по мелочи. Тут я перерыла все, очистила все кэши, переиндексировала проект, перезагрузила PyCharm, docker, систему, в итоге переустановила Pycharm, удалила папку .idea и таким образом грохнула все видимые ранее редактором сторонние библиотеки, что вообще залочило мне работу с проектом. Красным-красно в импортах. Я искала решение в гугле, но все было не то, спрашивала в сообществе, но там ничего нового не подсказали. В итоге я дошла до саппорта JetBrains, зря я что ли плачу за лицензию? Но перед тем как создавать тикет, я как хорошая девочка пошла искать похожие. И таки в куче всякого нашла комментарии от пользователей с решением проблемы! https://youtrack.jetbrains.com/issue/PY-52576 Короче, оказалось, что команда обновления зависимостей для редактора не работает с docker compose v2. После отключения этой версии все заработало!
Go.
Давно хотела попробовать Go. На самом деле много всего надо изучать и проходить, но так невыносимо хотелось потрогать Go, что плюнула и сижу, развлекаюсь с гошечкой. Пока ничего серьезного, но мне нравится. Пофиг, что надо бы другое прокачивать, хочу го, буду трогать го:)
Не слишком ли подло будет что-нибудь намутить в проекте на Go?
React. Фронтенд. Боль :)
В плане работы новая порция ковыряния в чужом коде. Вот уже 1,5 месяца я пытаюсь разобраться с фронтом. Не скажу, что это супер-сложно, скорее больше испытываю великое отрицание при работе с этим. Мне нравится фронтенд, но разбираться в чужом коде неприятно, а тем более менять его. Сегодня переписала 3 дублирующих компонента в один, чтобы проще было перестраивать в новую логику. При этом значительно сократила код родительского компонента. Мечтаю когда-нибудь переписать этот проект с реакта на ангуляр. Ну, или найти толкового фронта, чтобы я туда больше не лезла.
Менторство.
Зарегалась в боте @devmentorbot. Привет новым подписчикам оттуда! Зарегалась и как ментор и как ученик. Бот прикольный, всем рекомендую. Думаю, что на самом деле на любом этапе развития есть чему учится у других и чем помочь кому-то. Я всегда старалась подсказать всем при наличии свободного времени. Я обычно честно говорю, если чего-то не знаю или подчеркиваю, что это мое личное мнение. Надеюсь, смогу кому-нибудь реально помочь. И, кстати, спасибо тем, кто читает тут мои заметочки и старается помочь мне, ценю это ^_^
Завтра будет. Лучше. #Docker, #Учеба, #React
При установке новой библиотеки редактор ее не обнаруживал. То есть консоль работает, приложение работает, в списке зависимостей для интерпретатора она есть, а в редактор - хрен, красное подчеркивание, ничего не вижу и не знаю.
Я давно использую докер и ранее такого не было. Были небольшие подвисания, но по мелочи. Тут я перерыла все, очистила все кэши, переиндексировала проект, перезагрузила PyCharm, docker, систему, в итоге переустановила Pycharm, удалила папку .idea и таким образом грохнула все видимые ранее редактором сторонние библиотеки, что вообще залочило мне работу с проектом. Красным-красно в импортах. Я искала решение в гугле, но все было не то, спрашивала в сообществе, но там ничего нового не подсказали. В итоге я дошла до саппорта JetBrains, зря я что ли плачу за лицензию? Но перед тем как создавать тикет, я как хорошая девочка пошла искать похожие. И таки в куче всякого нашла комментарии от пользователей с решением проблемы! https://youtrack.jetbrains.com/issue/PY-52576 Короче, оказалось, что команда обновления зависимостей для редактора не работает с docker compose v2. После отключения этой версии все заработало!
Go.
Давно хотела попробовать Go. На самом деле много всего надо изучать и проходить, но так невыносимо хотелось потрогать Go, что плюнула и сижу, развлекаюсь с гошечкой. Пока ничего серьезного, но мне нравится. Пофиг, что надо бы другое прокачивать, хочу го, буду трогать го:)
Не слишком ли подло будет что-нибудь намутить в проекте на Go?
React. Фронтенд. Боль :)
В плане работы новая порция ковыряния в чужом коде. Вот уже 1,5 месяца я пытаюсь разобраться с фронтом. Не скажу, что это супер-сложно, скорее больше испытываю великое отрицание при работе с этим. Мне нравится фронтенд, но разбираться в чужом коде неприятно, а тем более менять его. Сегодня переписала 3 дублирующих компонента в один, чтобы проще было перестраивать в новую логику. При этом значительно сократила код родительского компонента. Мечтаю когда-нибудь переписать этот проект с реакта на ангуляр. Ну, или найти толкового фронта, чтобы я туда больше не лезла.
Менторство.
Зарегалась в боте @devmentorbot. Привет новым подписчикам оттуда! Зарегалась и как ментор и как ученик. Бот прикольный, всем рекомендую. Думаю, что на самом деле на любом этапе развития есть чему учится у других и чем помочь кому-то. Я всегда старалась подсказать всем при наличии свободного времени. Я обычно честно говорю, если чего-то не знаю или подчеркиваю, что это мое личное мнение. Надеюсь, смогу кому-нибудь реально помочь. И, кстати, спасибо тем, кто читает тут мои заметочки и старается помочь мне, ценю это ^_^
Завтра будет. Лучше. #Docker, #Учеба, #React
🔥6