Дневник разработчицы
407 subscribers
111 photos
9 videos
14 files
145 links
Откровенные истории о проектах, работе, учебе и открытиях в мире программирования. Присоединяйтесь и вдохновляйтесь вместе со мной!
Download Telegram
Мой первый перепост, но мне дико нравится этот канал и лично для меня это пост максимально полезен. Может быть еще кому-то пригодится. #Математика, #Учеба
👍2
Смотрите-ка, какой интересный гайд по самостоятельному изучению математики для взрослых:

https://habr.com/ru/companies/gaz-is/articles/779998

В нём предлагаются материалы и учебный план по следующим разделам математики:
🌟 Повторение школьной математики;
🌟 Математический анализ;
🌟 Аналитическая геометрия;
🌟 Линейная алгебра.

Приведу главные отличия этого гайда от подраздела "математика" моего гайда по вкатыванию в ML :
🌟 В отличие от моего гайда, здесь все учебные материалы даны на русском языке. Автор даже нашла перевод на русский язык плейлистов от 3blue1brown про математический анализ: https://www.youtube.com/playlist?list=PLVjLpKXnAGLVbrcJdDb0a2RS6MmRCgxJz и линейную алгебру: https://www.youtube.com/playlist?list=PLVjLpKXnAGLXPaS7FRBjd5yZeXwJxZil2 ;
🌟 В моем гайде не уделено внимание повторению школьной математики и аналитической геометрии, а здесь эти темы раскрыты. Правда, я большую часть из того, что здесь называется "аналитической геометрией", отношу к линейной алгебре. С другой стороны, у меня даны материалы по теории вероятности и математической статистике, а здесь этому почти не уделено внимания.
🌟 Присутствуют ссылка на платный ресурс (ПЛАТНО! 😡) - клуб по изучению математики старших классов и первых двух курсов ВУЗа - https://boosty.to/math_online . Если кто-то пробовал подписываться и посещать их занятия, поделитесь своими впечатлениями в комментариях.
🌟 Автор предлагает несколько классических учебников в дополнение к другим материалам (я надеюсь, вы понимаете, что их не обязательно разбирать полностью - это занимает непропорционально много времени и не является необходимым для решения практических задач).

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

#математика #учебные_материалы
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Намутила себе личный плагин для хрома на базе чатгпт, чтобы парсить субтитры на курсере и превращать их конспект для mind map.

Для создания плагина использовала пример из туториала гугла https://developer.chrome.com/docs/extensions/get-started/tutorial/scripts-on-every-tab

Сделала, конечно, тык-тык на костылях, но зато пощупала разработку плагинов для хрома и апишку чат-гпт.

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

На скрине вывод конспекта, который сгенерил чагпт)
А, еще задолбалась подбирать промпт под это. А вообще так-то допилить и можно было бы продавать свое решение ^_^ #Tools, #ChatGPT, #Учеба
🔥9👍4
В догонку к вчерашнему посту.

Искала плагин для pycharm для разработки Chrome extension. К сожалению, гугл не позаботился о своих разработчиках на этот счет. Сообщество тоже по ходу не заморочилось, потому что в сторе не нашла готовых решений. Зато нашла тикет у джетов, где рассказывают вариант решения https://youtrack.jetbrains.com/issue/WEB-3202
Узнала, что можно указать для файла манифеста его тип, что автоматом будет указывать на то какой интерфейс есть у манифеста.
Если что, смотрите комментарий https://youtrack.jetbrains.com/issue/WEB-3202/Add-support-of-Chrome-extension-Javascript-API-and-JSON-manifest-file#focus=Comments-27-3036113.0-0
Забавно, что прошло 5 лет с такого варианта решения, а ничего лучше я не нашла. #Tools, #ChatGPT, #Учеба
Никогда раньше я не изобретала диагрмму ганта на работы постфактум. Для универа пришлось, при этом растянув реальное время с 2 дней до 22. Что ж… Я много и долго трудилась… Второй мидтерм отправлен, остался еще один. #UOL, #Учеба
😁6
31 декабря я сижу на Бали и ботаю дискретную математику. Предыдущие несколько дней судорожно закрывала мидтермы по другим двум предметам.
Блин, как давно у меня не всплывала эта мысль - уж лучше работать, чем учиться. На работе почему-то всегда проще, чем в учебе. Я с радостью прохожу курсы, впитываю знания, вот это все, но меня всегда дизморалили учебные процессы.
Как-то в конце прошлой сессии было воодушевление, а сейчас все бесит. 2 предмета из трех пока для меня по знаниям и заданиям были шагом назад, а не вперед - это введение в программирование и алгоритмы. Ладно, алгоритмы еще плюс-минус, повторила базовые сортировки там, но вот введение в программирование - полная дичь. Но тут надо просто пересилить начальные предметы, дальше должно быть интереснее, наверное.
И единственный предмет, который действительно для меня абсолютно новый - дискретная математика. Иногда пытаюсь темы, которые прохожу, поискать в учебниках. Очень меня удивляет, что столько внимания уделяется Predicate and Propositional Logic. Ни в одном учебнике не заметила столько, сколько дается в курсе. Прям какая-то мозговая атака терминами, жесть. Весь смысл можно было бы описать человеческим языком, но идея как раз же том, чтобы переложить человеческий язык на математику, и тут просто какой-то терминологический ад с большим количеством новых слов. И вот банальная фраза “У некоторых студентов есть зонтик” превращается в ∃x∈P A(x)∧U(x) и Rules of Inference with Quantifiers: Existential Instantiation дает нам что есть хотя бы один студент с зонтиком A(Вася)∧U(Вася).
Голова дымит. Вроде несложно, но иногда запарно.

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

Моя небольшая, но лучшая аудитория, всех люблю! #Математика, #Учеба, #Жизнь
❤‍🔥117👍2🎄2🐳1
Пополняю свой инструментарий студента:
1. Продлевая платную подписку на пайчарм, решила чекнуть что у джетов есть для студентов. Оказывается, что будучи студентом можно забрать весь их пак бесплатно с помощью isic или универской почты. Забрала, так как голенд и сишная ide пригодятся.
2. Ранее я также получила студпак от гитхаба, который тоже включает в себя целую горку ништяков, в том числе копайлот, между прочим.
3. Испробовала инструмент https://pandoc.org/, который позволяет собирать md файлы в pdf, что актуально для сдачи кода на антиплагиат. Делает он это через латекс, поэтому латекс также собирает.
4. Пробую пересесть в плане латекса на привычный пайчарм вместо https://www.overleaf.com/, установила для этого плагин TeXiFy IDEA https://plugins.jetbrains.com/plugin/9473-texify-idea, он автоматизирует работу с латексом, дает автокомиляцию и тп.
Вообще есть мысль попробовать вместо latex тогда использовать md, так как он более удобен в плане разметки, кажется. Но пока не уверена, что так получится. #Tools, #Учеба
🔥6🤔1
Вчера отправила третий мидтерм.
В этот раз почти не смотрела на переписки однокурсников в слаке с обсуждением вопросов. Я скипнула все вебинары, большинство лекций вытащила из субтитров, делала в основной массе только обязательные тесты и работы. Всю теорию, где было чуть сложнее, брала из сторонних источников.

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

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

Нашла, что еще два модуля мне могут зачесть, если я сдам альтернативные курсы на курсере:
https://www.coursera.org/professional-certificates/ibm-data-science
https://www.coursera.org/professional-certificates/ai-engineer
Плюс посчитала, что впереди еще 2 модуля из первого уровня, 8 модулей из второго и 6 модулей из последнего (2 можно закрыть курсами), плюс финальный проект.
А еще я начала готовиться к AWS сертификации.
В марте будет 2 экзамена и еще одна проектная работа.

Нормально так жизнь “запланирована” на ближайшие 3 года.

Мне начинает казаться, что я слишком упоролась в учебу. Я всю жизнь, конечно, чем-нибудь училась, но никогда так много и так продолжительно в одной и той же теме ХД И что за странное чувство, когда видишь интересный курс и в голове горит - хочу-хочу-хочу. Да куда тебе еще? Выдохни, хехе. А с другой стороны, меня дико мотивирует мысль, что вложенные труды могут хорошо окупиться в будущем.

Расширение территории - Новые Знания, дают +100 к зп, + 500 к навыкам.

И да, к чертям всю эту новогоднюю суету, у нас тут все еще вечерами стреляют салютам, а я подскакиваю каждый раз. День как день. Год как год. Хочу время на паузу поставить. #UOL, #Курсы, #Учеба, #ML
6👍1🔥1
Небольшой довесок.

Одно из заданий по дискретке была функция

F(a, b, c, d) = (a′ + b.d′).(c.b.a + c′.d)
Которая при упрощении дает вид (если я не облажалась с упрощением):
a′.c′.d + c.a.b.d′

Если разложить по ней таблицу правды, то выйдет, что из 16 различных комбинаций a, b, c, d есть лишь три, когда функция вернет положительный результат. Это ж функция женского оргазма - не иначе 🙂 Особенно меня радует условия по аргументу d. В голове сразу всплывает что это могло быть, но я не буду раскрывать все карты)
#Математика - прекрасна!)
😁7
Пока кто-то вспоминает как работать и что вообще делать после праздников, я сижу и ковыряю легаси и исправляю ошибки.
Блин, чего только нет среди моих подарочков:
⁃ привет изменениям на сервере, которых нет в репозитории!
⁃ привет js внутри html внутри js, да-да, матрешка!
⁃ хай критичная багуля внутри мидлвари!
⁃ привет баги из прошлого, выплывающие на примитивном тесте, которые приходится править, хотя я зашла всего лишь поправить конфиг! Я только спросить!
⁃ привет, сервисы, существующие только в мастер-ветке и на тестовом стейдже!
Хохохо! Веселуха!

Блин, это так утомительно. У нас меняется домен у одного сервиса, а коллеги раньше использовали конфигурационные файлы внутри каждого сервиса на каждом стейдже, которые создавались вручную. Это была одна из первых вещей, которую я сделала на проекте - автоматизированный деплой и максимальное избавление от таких ручных настроек. Но вот старые сервисы перетащить на новый лад довольно проблематично. Надо каждый по отдельности проверить, найти название для каждого стейджа, проверить код, чтобы он не разошелся с репой, придумать как протестировать, потому что тестов тоже нет. АДСКАЯ РУТИНА И БОЛЬ! А ну, и выкатить это все на все стейджи.

Я хороший, я хороший, я хороший… на самом деле я!!!

Продолжаю чилить в AWS лекции. Узнала всякие ништяки про S3 и CloudFront. Про то, что можно асинхронно заливать по частям большие файлы в бакет, что можно делать sql запросы в csv/json файлы, что можно создавать временные доступы к файлам, про версионирование файлов и разные типы хранения в бакетах. Мне очень не хватает на S3 возможности добавлять данные к файлу, не скачивая и не перезаливая его полностью. Интересно, почему такой опции нет? Может, чтобы не решать проблемы конкурентных запросов и тп?

А еще я чет задолбалась от возни с визами, банками и тп. Хочу домой (в Куала Лумпур), хотя если честно, то сейчас у нас лучшие условия из всех вариантов временного жилья, которые были за последние пару лет.

I am a just a simple Russian girl
I’ve got vodka in my blood
So I dance with brown bears
And my soul is torn apart

https://open.spotify.com/track/2Fs2EzT6lR7b2OCu0zzjQL?si=d5dec494d9924100 #AWS, #Курсы, #Жизнь, #Работа
🔥6
Я тут уперлась в дефолтные лимиты Динамо ДБ на 5 юнитов. Оно считается 1 юнит = 1 запрос в секунду на 4 килобайта. У нас обычно нет большой нагрузки, так как пользователей немного, нагрузка скорее по ситуации - типа надо внезапно быстро провернуть 100 элементов, где на каждый приходится по несколько мегабайт. И вроде задачка должна быть простой, если нет нюансов со всех сторон.

В общем, хочу поделиться, что я привыкла на AWS максимально экономить и следить за каждым центом, так как облачная архитектура очень хитра - сегодня 0, а завтра оп и 100 баксов. Для компании может это и плюс/минус 100 баксов, а вот для бюджета стартапа - так себе.

И вот сижу я и ссу расширять лимиты у Динамо, пытаюсь искать другие решения и тп. Уже даже выпилила использование, решив, что я лучше пару лишних запросов в API сделаю. Изменила код, протестила, переключилась на учебу. А в курсе я как раз дошла до раздела про Динаму, и вот лектор сидит вещает - лялял тополя, ДЕШЕВАЯ база данных. Кек, я тут сижу и жму расширить лимиты для ДЕШЕВОЙ бд в компании, которая каждый месяц тратит по несколько десятков тысяч долларов на инфру. Так, ставим видосик на паузу.

Пошла, посмотрела что нам надо будет примерно 2000*4 элементов за месяц максимум на 1 килобайт, допустим на каждый придется 10 запросов - это 80 000 запросов. Взяла по 2 млн на запись и на чтение, через OnDemand в калькуляторе, вышло где-то 3 доллара в месяц. Ну то есть по факту там должно быть в разы меньше. Если еще посчитать, что нагружая стороннее API ради своей экономии, мы сами же себе ноги отстреливаем, так как сторонее апи начинает медленнее отдавать респонс, и следовательно мы больше тратим ресуров, так как у нас серверлесс же. Плюс/минус, конечно, вряд ли там сильно скажется такой вариант “облегчения” нагрузки, но все ж. Так-то стоимость моего времени, потраченного на задачу, выйдет для компании дороже, чем повышение лимитов. А если туда еще докинуть время пользователей, которое тратится на чудовищный вариант решения, которым им приходится пользоваться сейчас, так это вообще!

Что думаете про таблицу на 4 млн запросов в месяц за 3 бакса? При том, что это данные - чисто айдишники. Дешево? 🙂 На самом деле все зависит от. Надо будет поковырять менеджера, чтобы разбивку по нашим расходам показал, а то я даже ни сном ни духом что я там экономлю. Раньше еще как-то можно было глянуть, но последнее время возможность прикрыли 🙁

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

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

Пару слов про визу. Мы все еще в ожидании. Визовый центр Малайзии сказал, что я не похожа на фотку в паспорте, отослали другую, которую я старалась сделать максимально похожей. Но нет, снова сказали, что не похожа! Запросили письмо от универа, что я это действительно я. Рукалицо. Я надеялась, что мы вернемся до 5 февраля, но теперь мне все больше кажется, что придется ехать еще куда-то, пока ждем подтверждения. И вроде надо типа радоваться - путешествия, вот это все! Но аррр, планы в топку, ненавижу когда планы в топку не по-моей личной инициативе, а вынуждено. Хотя надежда еще немного есть, совсем маленькая, поэтому я все еще не пыталась продлить наше проживание тут еще хотя бы неделю, так как виза у нас до 16 числа.

Пытаюсь переключить режим сна. Начала вставать пораньше. Хочу в 6 утра сгонять к океану. Хоть какое-то желание “потрогать траву” вместо привычного залипания в комп. Серьезно, я даже купаться не хочу. Хех. #AWS, #Курсы, #Жизнь
🔥6😁2
Как я нахожу себе задачи на работе.

Еще менеджером пару раз забирала под свое крыло бесхозные проекты, которые программисты делали без “управления” так сказать. Так, например, когда-то я уговорила техдира и гендира отдать мне сервис рассылок. Мне просто понравилась задачка и захотелось заняться ею. Это был действительно интересный проект, где я в итоге попробовала на себе роль продукт-менеджера, и я ни разе не пожалела, что я им занялась.

Теперь же будучи программистом также нахожу себе задачки сама.

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

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

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

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

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

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

И нет, я не жадная, готова делиться, но чаще коллегам проще делать то, что скажут. Скучно же так, не? #Работа
👏7🔥32👍1
Сегодня с менеджером заглянули в расходы по нашим сервисам на инфраструктуру, а там нули. Забавно. Экономия должна быть экономной! 🙂 #AWS
😱5👍2😁2
Протегировала почти все посты в канале. Дальше постараюсь все посты также тегировать, чтобы можно было ориентироваться, если это необходимо. А этот пост закреплю как навигацию.

#AWS
#UOL
#Курсы
#Python
#ML
#JS
#React
#Django
#Работа
#Жизнь
#Конспекты
#Математика
#Учеба
#Аниме
#Игры
#Tools
#ChatGPT
#Истории
#Техника
#Docker
#Хакатон
🔥7👍5😱1
Дневник разработчицы pinned «Протегировала почти все посты в канале. Дальше постараюсь все посты также тегировать, чтобы можно было ориентироваться, если это необходимо. А этот пост закреплю как навигацию. #AWS #UOL #Курсы #Python #ML #JS #React #Django #Работа #Жизнь #Конспекты #Математика…»
#AWS, #Курсы
Прошла курс для подготовки к сертификации, сижу ковыряю теперь примеры тестов. На каждый уходит около 2 часов - по 65 вопросов. Вопросы от теста к тесту повторяются иногда, но немного. Пока прошла 4 теста, в первом набрала 65 процентов, в остальных стабильно набираю 75 процентов. Осталось еще 3.
Надо было сразу с тестов начинать, кажется. Во-первых, в них дофига вопросов, которые либо недостаточно, либо совсем не были освещены в курсе. Очень много заковыристых вопросов. Еще проблема в том, что мозгу тупо очень лениво вчитываться в текст вопроса и вариантов ответа. Иногда варианты ответа отличаются буквально парой слов и сидишь всматриваешься, в чем разница то. Иногда вопросы идут от противного, либо указаны какие-то важные нюансы для выбора. Типа все в вариантах ответа верно, но вот один из них подходит больше.
Часто, слишком часто сомневаюсь в ответе.
В общем, страшно уже записываться на экзамен, но и тянуть больше не хочется. Дайте сил - пройти, а потом разобрать еще три теста. На работу над ошибками тоже уходит много времени - спасибо авторам за то, что детально разбирают каждый вариант ответа.

Ссылка на курс с практическими тестами https://www.udemy.com/course/aws-certified-developer-associate-practice-tests-dva-c01

Пока проходила пробные тесты внезапно узнала, что оказывается в SNS можно фильтровать получателей сообщения в топике с помощью атрибутов сообщения и предзаданных Filter Policy у подписчиков. Таким образом чисто в теории можно отправлять сообщения на конкретные email. Нам этого давно дико не хватает в работе. Потыкала на своем личном акаунте - работает.

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

Пожелайте мне успешно сдать. Найти бы терпения, чтобы добить все эти практические тесты и не плюнуть и пойти сдавать как есть.
🔥94
#Жизнь
В следующее воскресенье летим в Бангкок на 2 недели, прощай удобное рабочее место и монитор, прощай деревня, привет город. Все еще ждем продления нашей визы в Малайзии. Процесс сильно затормозился из-за двух вещей - нам криво вписали номера паспортов изначально в подаче заявки, а потом еще визовый центр отклонил сначала одну мою фотку - мол не похожа, а потом вторую, запросив подтверждение от универа, что это один и тот же человек. Капец!
Вообще я бы предпочла сгонять в Южную Корею, чем в Тайланд, хотя не была ни там - ни там. Лететь до Сеула дальше, но ЮК кажется поинтереснее. Но в ЮК хочется на подольше, чем на пару недель, а в марте у меня уже экзамены в универе, поэтому пришлось выбрать Тайланд. Надеюсь, что в ЮК получится сгонять позже.
Блин, раньше вообще влом было куда-то лететь, это ведь надо чет заморачиваться с документами, расходы большие и тп. И вроде думалось, что я бы хотела съездить туда и туда, но не так сильно, чтобы прям собраться и поехать. А теперь вроде как стало проще куда-то поехать, но в итоге все равно выбор идет в плане места - где тупо попроще. В общем, я не сильно люблю путешествия. Зато люблю состояние в дороге - самолеты, поезда, на машине. Это прям кайф - время, где все становится неважным, есть только путь!
Что ж, неделька, перелет, еще две недельки - еще один, надеюсь. А потом, наверное, будем визу в Сингапур делать.

Лети!
🔥5👍2🤔1😱1
#Работа
Чем больше всматриваюсь в говнокод, тем больше говнокод смотрит в меня. Скажите, ведь это надо быть упоротым маньяком, чтобы гонять данные без нормальных структур и тестов через 100500 методов с почти одинаковым названием без типизации, с неочевидными и разными вариантами возврата, при этом гонять их и через несколько запросов, такая рекурсия на уровне http. Данные, которые имеют названия sample, item, fraction, data, _data и другие бессмысленные производные, где нифига не поймешь что откуда взялось и что чем стало. Словари, словари, словари, один и тот же маппинг идущий сквозь все функции как атрибут вместо использования импорта из источника этого статичного маппинга.

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

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

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

Вдох-выдох, это отличный опыт - научиться на чужих ошибках и лучше понять и почувствовать необходимость SOLID и нормальной архитектуры кода на практике.
7😱3👍1😨1
Я уже год, кажется, ковыряю набегами этого монстра, и не только я. Мы с коллегой уже вынесли несколько частей из него. Плюс я исправляла там импорты, некоторые ошибки, конфиги. Надеюсь, скоро добьем окончательно. Блин, это жесть. Пожалуйста, если строите свою архитектуру, изучайте SOLID.

⁃ Одна ответственность, не надо делать супер-классы, супер-скрипты, супер-сервисы.
⁃ Открытый для расширения, закрытый для изменения. Можно развивать и добавлять какие-то методы, но не меняйте то, что уже есть, поддерживайте обратную совместимость. Особенно не забывайте об этом при рефакторинге общих классов. Я постоянно стараюсь следить за тем, чтобы при рефакторинге все старые интерфейсы, атрибуты сохраняли свою функциональность.
⁃ Принцип подстановки Барбары Лисков. Если наследуете класс, то он должен соответствовать родителю. Это блин дичь, когда вдруг одноименный метод ребенка принимает другой набор аргументов, а тем более возвращает какой-то другой тип данных. Сплошь и рядом в текущем коде нарушения этого принципа. Да и не только в текущем, я видела много примеров и в других сервисах.
⁃ Принцип разделения интерфейсов. Если честно, то я не вижу большой разницы с первым принципом, кроме того, что здесь речь именно про интерфейсы. Но суть примерно та же - не надо пытаться впихнуть все в одно место, не надо пытаться делать универсальные классы. Это вот к тому, что в текущем коде отнаследовались от общего родителя, сделали типовый набор методов, когда там это вообще не сдалось, и вообще стоило бы этот класс разделить на несколько кусков, так как там намешано все вместе.
⁃ Принцип инверсии зависимостей. Избегайте связности. Чем более независимы элементы архитектуры, тем проще ее поддерживать и менять. Если для операции нужно только строка, то не надо передавать в нее всю структуру. В коде опять же вместо того, чтобы передать данные, необходимые для работы, передается вообще все подряд, и часть данных никак не изменяется и возвращается как есть. Зачем? Чтобы не делать лишнюю операцию по выделению именно нужных данных. Ололо!

Еще хочется сказать, что лучше не скрывать то, что делается, не прятать операции. Я фиг знает к какому принципу привязать эту идею, но у меня горит вот от такого:


update_result = self.get_instance(AddToContainersService).process(mosaic_data, htp_rows, csm_id, sc_id)

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

Блин, нужна инициализация - сделайте ее явно. Не стоит так экономить и говорить, что вот тут зато нет повторений логики инициализации. Серьезно? Не надо играть в DRY, скрывая то, что происходит на самом деле, ломая типизацию и тп. Не надо пытаться сделать все сука УНИВЕРСАЛЬНЫМ. А потом писать километры кода, которые гоняют одни и те же данные, повторяют одни и те же проверки, условия и тп, где бизнес логика размазана по всем закоулкам, где перестаешь улавливать где какие данные и откуда взялся вот этот ключ в очередном словаре. Пожалуйста, будьте очевидными и простыми, умоляю.

Хех. Накипело, сорян.
#Работа
👍4😁2
#Жизнь
Бангкок нас встретил какой-то невероятной толпой на паспортном контроле, мы минут 30 стояли в очереди, никогда с таким не сталкивалась.

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

Ну что ж, рядом с нашими апартаментами несколько магазинчиков с зелеными логотипами, куча массажных салонов, а прям в соседнем здании БДСМ-клуб. Приветики-привет!
Однако, квартира мне понравилась, очень чисто, я так соскучилась по нормальной чистоте после виллы, где перманентный песок под ногами, хоть и там “убирались” раз в два дня. Ну и по квартире. Не знаю как объяснить эту разницу, так как на вилле были все удобства, но все же может ремонт, мебель, состояние квартиры все же как-то приятнее тут.

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

Что пока нравится тут в сравнении с Куала Лумпур, здесь нет ощущения такого резкого контраста трущоб и небоскребов, рынков и тц. Здесь как-то все сглажаннее, ни слишком дорого-богато, не слишком бедно. Еще, конечно, буддизм воспринимается легче, чем мусульманство. Я нормально отношусь к мусульманству, интересно было общаться с теми же ребятами из Йемена, Сирии, Саудовской Аравии, но с точки зрения нахождения в их культуре - ощущается довольно скованно, из-за множества ограничений и требований. И хоть КЛ довольно разнообразен и открыт ко многому, но основа все же жесткая.

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

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

В общем, пока впечатления положительные, посмотрим как пойдет дальше. Жаль, что времени погулять по городу почти нет. Надо готовиться к экзаменам, ну и плюс работа.
🔥7😱2👍1😁1