Дневник разработчицы
406 subscribers
111 photos
9 videos
14 files
145 links
Откровенные истории о проектах, работе, учебе и открытиях в мире программирования. Присоединяйтесь и вдохновляйтесь вместе со мной!
Download Telegram
#Жизнь Рабочее место.
2🔥268👍2
Week_2_Written_communication_skills,_Part_2_Assertive_communication.md
10.3 KB
#UOL #Учеба Ничего себе, в новом модуле универа прям софт-скиллам учат, про STARR рассказывают и тп.
🔥31🤩1
#Учеба
Прохожу вот этот курс от IBM, чтобы зачли в универе как один из модулей https://www.coursera.org/professional-certificates/ibm-data-science
Делала курсовую по визуализации, впечатлилась от фреймворка dash https://dash.plotly.com/, он нужен для того, чтобы датасаентисты клепали дашборды. Под капотом у него фласк, реакт и куча всякого замешано. Можно писать html на питоне, создавать шаблоны для динамических страничек. Прикол в том, что он умеет подгружать данные без перезагрузки страницы при изменении фильтров, но весь UI ты спокойно пишешь на питоне. Найс!
Код на курсе, конечно, был говно с точки зрения структуры, но я если честно ради фана потыкала бы в этого зверя еще.
Еще забавный момент, что работу проверяло с помощью AI. LLM изи поставила мне максимальный балл, что очень порадовало.
Продолжаю проходить этот курс, сейчас на 9 модуле из 12. Хех, чуток осталось.

UPD. На сколько же любой курс проще, чем курс по ML от Яндекс и МФТИ! Я прохожу текущий курс и все еще вспоминаю попа-боль, когда проходила их курс, который я так и не прошла до конца, к сожалению.
🔥101
#Работа

https://www.ks.uiuc.edu/Research/namd/mailing_list/namd-l.2020-2021/0138.html
Когда вместо стаковерфлоу или чатгпт, надо читать чужие переписки, чтобы решить проблему.

Короче, суть проблемы. Вот есть программа NAMD, написанная на С/С++. Для нее сделали несколько сборок - для линукса, для кластера, для запуска с CUDA. У второй версии нет поддержки ARM и макоси, а вот в третьей версии есть. Я использую третью версию, но на сервере мы используем вторую, потому что она вроде как считает точнее, чем третья.
Я локально проверила, что у меня на машине работает. Залила на сервер, у меня все отработало успешно, но чет файл с результатами пустой. Я открываю логи, а там в info потоке, даже не в потоке ошибок вижу следующее:

FATAL ERROR: Pair interaction calculation is not supported in CUDA version

FATAL!!! фатал, такой фатал, но скрипт выполнился успешно.

Они не поддерживают некоторые фичи в версии с CUDA. Что ж… ААААААААААААААА!
Придется загружать две сборки с кудо и без кудо, чтобы жонглировать ими. Как же горит.
🔥4
#Tools
Когда микрофон уже пришел, а вот лапа для него еще нет.
На фото второй стакан из-под кофе под эти нужды, в первом я неудачно вырезала дырку и он сломался.
Забавно, что громкость голоса стала лучше после того как я поменяла usb-c, по которому был подключен усилитель к ноутбуку.
🔥5👍1
#Работа #LLM
Решила ввести новый тэг, потому что #ChatGPT уже одна из, а не единственная llm модель. Так вот.

На работе пришли с запросом, что надо сделать что-то с llm и прозвучало слово MCP. Нам рассказали, что сверху спустили запрос, что надо сделать хоть какой-то POC, а потом внедрять это.

В целом идея мне очень нравится, в голове сложилась сразу картинка как это могло быть организовано в корпорации, как это должно быть централизовано, но все оказалось прозаичнее. Никакой инфраструктуры и процессов под это еще нет. Большая корпа к этому вопросу подошла как - кто-нибудь, сделайте что-нибудь. На самом деле я даже удивилась этому, потому что в компании очень много разного ML, работы с данными и тп. В целом и в сторону llm есть уже корпоративные подписки на копайлот и чатгпт.

Нам дали доступ еще к инструменту, который позволяет внутри задеплоить локально модель с https://huggingface.co, cобрать своего агента в очень простом редакторе, похожем на https://flowiseai.com/, ну и задеплоить свое приложение. Я посмотрела на это чудо, нашла опубликованную модель и показала руководителю затраченные ресурсы, где на модель выставлено 50 гигабайт оперативки. Пояснила ему, что будет очень дорого, если каждая команда будет под свою задачу публиковать свою модель. Плюс, что было бы еще неплохо иметь возможность получить токен для использования корпоративной большой модели.

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

На этой неделе будет встреча с гуру AI в компании. Даже интересно, что это будет.

Я пока попробовала локально запустить mcp на базе сваггера нашей основной платформы. Я использовала awslabs.openapi-mcp-server. Оно, конечно, запустилось, но с ошибками и там по идее надо думать на счет промптов и разделения инструментов.

В целом, задача интересная, особенно тем, что в корпе пока нет ничего и все только начинается. Даже жаль, что мы сами ничего не предлагали раньше.
5
#Учеба #UOL
Как же иногда грустно находить такие артефакты в лекционных материалах университета. Я не обращаю внимание на разные мелочи и проблемы, но вот такие вещи - прям режут глаз.
⁃ неиспользуемая переменная
⁃ использование built in названия для параметра
⁃ использование списка как дефолтного значения для аттрибута функции.
Как так то?(
😁7👍2
#Учеба #UOL
https://coursera.org/share/d880563940415bb7815b3393776a273e
Наконец добила один из двух сертификатов, которые нужны взамен модулям в универе. Просто ура. Про курс ничего не скажу. Меня не особо впечатлил, но и не разочаровал. Нормальный курс.

Начала второй https://www.coursera.org/professional-certificates/ai-engineer#courses
Не верится, что в универе осталось всего 2 сессии. Учусь последнее время просто на каком-то автомате - надо, значит надо. :)
🔥8👍3❤‍🔥2
#Работа #AWS S3
Недавно на работе добавила использование пары фичей в проекте для работы с S3:
- Пагинация для получения объектов. Делается легко с помощью https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/get_paginator.html
- Получение списка директорий в конкретной директории с помощью первого метода с указанием Delimiter="/" и использованием из респонса CommonPrefixes для получения директорий.
- Получение подписанного s3 url для того, чтобы можно было скачать файл, вместо того, чтобы раздавать его через лямбда функцию. https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3/client/generate_presigned_url.html Есть еще подобное для загрузки файла сразу в S3.
Все три фичи очень простые, но очень полезные. Работая с S3 уже 5 лет, я дошла до этих методов только сейчас. У меня к самой себе вопрос - как так? Но на самом деле, когда находишься в постоянном потоке легко пропустить какие-то очевидные и простые вещи.
👍3🔥3
#Работа
Недавно в новой версии хрома ужесточили политики безопасности и наш весьма специфичный кейс выстрелил нам в ноги так, как никто даже не ожидал.
Внутри корпоративной сети начало блокировать запросы из iframe в другие домены, хотя во внешнем интернете и вне iframe все работает нормально. Но внутри нашего контура внезапно браузер лочит запросы как CORS с ошибкой: Permission was denied for this request to access the 'unknown' address space.. А у нас все пользователи сидят внутри сети и используют эти iframe. Как временное решение я сделала баннер, чтобы пользователи могли открыть наш UI в новом окне и продолжать использовать, потому что тогда все работает нормально даже внутри сети.

Хорошо, что за эти 3 года работы мы успели перенести все наши сервисы на общий UI, поэтому хотя бы здесь не было проблемы обновить. Плохо, что не все бекенд сервисы еще перенесены на новые рельсы CICD.

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

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

Коллега сказал, что они проверили все сервисы на тестовом контуре и все работает хорошо, даже на двух разных поддоменах одного домена. Я была удивлена, потому что знаю, что если нет явного разрешения в заголовках на использование всех поддоменов в рамках конкретного домена типа “*.domain.com”, то такая схема не должна работать. Но коллега заверил, что все хорошо, они проверили. Я наивная чукотская девочка поверила ему, мы завели домены под наши сервисы, привязали, катнули на тестовый контур и порадовались, что все работает.

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

Что ж, теперь мне предстоит задача обновить все бекенд сервисы для использования новых доменов. В целом это надо обновить общий слой, а дальше просто указать новую версию общего слоя и передеплоить весь зоопарк лямбда функций, которые мы используем для UI.
🤯4🔥2
#LLM
Claude и чтение скриншота с ошибкой:
⁃ Переврал домены в указанных урлах, приплел gcloud, когда там был только aws.
⁃ Переврал текст ошибки. Видим CORS - пишем стандартную cors ошибку, делаем стандартные подсказки. Ничего, что ошибка другая.
⁃ Прошу исправить текст ошибки, он мне снова врет, снова придумывает что-то свое.
⁃ Прошу еще раз прочитать ошибку, указываю пару слов из текста ошибки. Он снова врет, снова приплетает gcloud, когда его на скрине и близко нет.
Психанула, сходила в chatgpt. Тот выдал сразу все четко.
А мне всего лишь лениво было открыть внутреннюю сеть, авторизоваться и открыть браузер, чтобы скопировать текст ошибки из консоли.
Что за дичь?
7🥴1
#Работа
Сижу, готовлю обновление для новых доменов. Решила глянуть что-то на проде. Зашла в систему, обновила хром, открыла iframe - все снова работает без каких-либо изменений…
Вспомнила шутку про вагоны.
https://www.youtube.com/watch?v=23fBoqQxSgQ
😁51
#Работа
Кто молодец? Я молодец ^_^
Раскатала на прод новые домены.

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

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

Сначала я откопала задачу из беклога, которая провисела там пару лет, чтобы завести секрет менеджер. Сделала ее, параллельно потоку продуктовых задач в рабочее время (в смысле это не было чем-то невозможным). Потом написала на коленке баш-скрипт для деплоя, который паковал функцию и с помощью cli публиковал изменения. Нам дали ключи для этого и мы смогли хотя бы так деплоить, хотя все равно было много ручных операций.

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

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

Потом появился человек, который расширил наши границы возможностей, показав, что можно сделать кастомный пайплайн в корпоративном дженкинсе и открыл для меня тулу https://www.serverless.com/, когда я смотрела на SAM и планировала использовать его.

Мы завели новую монорепу, где я прописала новый деплой процесс на базе IaC. Теперь мы потихоньку переносим туда старые сервисы.

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

Теперь вот история с доменами. В такие моменты прям ощущаешь как важно иметь нормальный CICD, когда у тебя больше 100 сервисов. Где-то половина сервисов имеют свой UI, и их все надо было обновить. Я сегодня вмержила 2 пулреквеста и перекатила около 50 сервисов, 12 из них запуском скрипта с локальной машины.

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

Кстати, проблема с новыми ограничениями, кажется, решилась не на уровне обновления браузера, а на уровне обновления настроек dns внутри корпоративной сети, но нам об этих изменениях никто не рассказал. Что ж. Давно пора была привязать свои домены на самом деле. Но не факт, конечно, что они будут работать стабильнее.
👍73❤‍🔥1
#Жизнь #Сингапур
Скоро придет штраф за оверстей в Сингапуре. Я уже 1,5 месяца жду, когда мне продлят визу депенданта тут. Мне сделали короткую визу, чтобы я могла ждать тут, не выезжая. Я ее уже один раз продлила за 2 недели до окончания предыдущей и недавно подали заявление на второе продление на месяц. Но оказалось, что в прошлый раз они не продлили на месяц со дня окончания предыдущей визы, добавили месяц со дня подачи заявки, то есть продление закончилось на две недели раньше, чем я рассчитывала. Да, это было написано в бумажке. Да, я не прочитала это внимательно. Но кто черт возьми в здравом уме так делает? Где логика?
В общем, я сделала неделю оверстей без визы. Штраф до 6000 сингапурских долларов и в крайних случаях до 6 месяцев тюрьмы. Как-то так. Но вроде за несколько дней не должны давать большой штраф.
В любом случае неприятно. 🙁
🤬3🙈3💩2
This media is not supported in your browser
VIEW IN TELEGRAM
#Tools
Навайбкодила себе ради фана персональную страницу в стартапе мужа ardor.cloud

https://1337-2f44a51f-b730-404d-aca7-0c18c009a068.ardor.cloud/

Получилось несколько пафосно даже 🙂
🔥9😁1
#Работа
С утра одна из менеджеров меня спросила, о том как должна работать логика, которую я выкатила на демо стейдж, чтобы проверить ее. Я аж немного опешила. На самом деле забавно, что задача стояла из разряда - надо сделать хорошо. Я уже сделала несколько подходов к тому как это сделать хорошо. Делала логику - бекенд, фронтенд, показывала постановщику задачи и она просила меня изменить что-то под определенные кейсы. В итоге, я глобально изменила подход, выработала список сценариев на основе существующего пользовательского опыта, предложила и сделала решение. Получается, что нормально сформулировала пользовательскую историю я сама в ходе выяснения требований в процессе разработки.

Так вот, мне написала новая менеджер, которая была на моей демонстрации изменений вчера и сегодня она решила проверить то, что я сделала. Я ей написала список кейсов для проверки. Думаете она их добавила в задачу хотя бы? Нет… Пойду допишу что ль…
4🔥3😱1
#Работа
В прошлом посте я преувеличила слегка, постановка задачи на самом деле была на удивление больше обычного и довольно подробная, хотя и сценарии в итоге мы переделали. Однако, кажется, менеджер туда не заглядывала даже.

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

Такая вот классификация костылей.
😁3👏2💯1