Дневник разработчицы
407 subscribers
111 photos
9 videos
14 files
145 links
Откровенные истории о проектах, работе, учебе и открытиях в мире программирования. Присоединяйтесь и вдохновляйтесь вместе со мной!
Download Telegram
И что тогда?..

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

Сначала ловлю стандартный обработчик события submit event.preventDefault();
Потом использую функцию отправки данных на сервер, которая возвращает обещание.
И что тогда (.then())? Если успешно все ушло на сервер, мне же надо редирект сделать. Все кажется просто, но как это записать?

Если честно, то я даже в первый момент пошла гуглить как сделать редирект, после успешного создания материала. Гугл не выдал сразу хорошего ответа, пришлось напрячь свой мозг. Ага, сделаем новое состояние (created? тема же создана). Сначала это было булево состояние - да/нет, создана/не создана. Так, хорошо пошло. Дальше пишу условие уже для компонента, если создано, то что? То редирект, конечно! А куда? Так, возвращаемся назад, нифига не булево состояние надо, нужен id для редиректа. Хоп-хоп, готово.

Мелочь, конечно, но приятно, что я смогла сама сообразить как это сделать. Начинаю понимать как работать с React, становится проще писать. #Работа, #JS
Сделала возможность регистрации в системе через тележку с помощью самого бота @monitoring_smi_bot
Если есть желание - можете потыкать и попробовать создать свои темы для мониторинга. #Работа
Пора что-то решать с базой данных. Не тянет( #Работа
Внезапно начала проходить курс МФТИ и Яндекса по машинному обучению на курсере. Мало что понятно, но очень интересно. Дико не хватает практической части в их лекциях. Мне уже насоветовали альтернатив попроще для начала, но я пока держусь. Прошла вторую неделю первой части курса. Если честно, первое задание сделала сама (на анализ текста), хотя с трудом разобрала что вообще от меня хотят. Второе задание пошла смотреть как делали другие. Скачала чужое решение, добавила в него графики, переделала все на функции. Выглядит прикольно.
Зачем? Ну круто же! #Учеба, #ML, #Курсы
Так, математику в курсе на курсере не объясняют. Никак. Просто дают набор понятий и формул. Программирование, если что - тоже. Я не знаю зачем этот первый вводный курс, если только не показать, что надо знать вот это и вот это.
Я когда-то изучала математику, но это было давно и я уже не помню. Короче, нашла на ютубе канал “Математика без хуйни”, автор - красавчик. Начала вспоминать как это все работает - производные, исследования функций и тд. https://www.youtube.com/c/SergejKuts/videos
Сейчас пытаюсь найти максимально удобный набор инструментов для конспектирования. В итоге xmind + скрины из лекций + скрины своих рукописных заметок с ipad + jupyter. Как-то, но отложится, наверное.
Кстати! Впервые нормально использовала рекурсию. Я поняла ее! На мой взгляд, самое главное, чтобы понять рекурсию, мне нужно было забыть, что это рекурсия) Просто уже в голове интуитивно работает, что вызывая функцию b в функции a, в момент исполнения код выполняется последовательно и выполнит код внутри функции b, вернет результат внутри a и продолжит исполнение. В случае рекурсии просто a и b - одинаковый код, одна и та же функция. А все остальные нюансы уже можно взять из определения рекурсии.
Область применения - в моем случае чистая математика):
```def get_vector(x, p):
if p <= 0:
return [1]
else:
result = get_vector(x, p-1)
result.append(x ** p)
return result
```В моем случае нужно было сформировать вектор из степеней x типа x + x**2 + … + x **(p) для дальнейшего построения матрицы (система линейных уравнений для многочленов с заданием разной степени). Это в задаче на аппроксимацию функции.

И да, я сама пока с трудом понимаю то, что пишу в плане математики. #Учеба, #ML, #Курсы
😁1
В курсе задачка на теорию Байеса для расчета условной вероятности того, что женщина болеет раком, если маммография оказалась положительной. Всего такая вероятность по моим подсчетам 7,8% (не удалось точно проверить ответ из-за первых двух неудачных попыток, но точно, что результат либо верный, либо близкий). Пока пыталась разобраться с тем как правильно применять эту формулу наткнулась на статью https://tass.ru/sci/6815287. Там высчитывается такая вероятность для теста на беременность, она выше, кстати, 50%.
Голова несколько опухла от этой задачки.
Я на последней неделе первого курса. Очень хочется добить ее завтра. Но что-то мне подсказывает, что не осилю. Еще и киберпанк выходит... #Учеба, #ML, #Курсы
Из этой первой лекции по теории вероятностей я запомнил только полузнакомый термин «математическое ожидание». Незнакомец употреблял этот термин неоднократно, и каждый раз я представлял себе большое помещение, вроде зала ожидания, с кафельным полом, где сидят люди с портфелями и бюварами и, подбрасывая время от времени к потолку монетки и бутерброды, сосредоточенно чего-то ожидают. До сих пор я часто вижу это во сне. Но тут незнакомец оглушил меня звонким термином «предельная теорема Муавра — Лапласа» и сказал, что всё это к делу не относится.
Аркадий и Борис Стругацкие. Стажёры #Учеба, #ML, #Курсы
Первый курс пройден за первую бесплатную неделю. Что ж, приступаю к следующему. #Учеба, #ML, #Курсы
Изучая ML, пришла к выводу, что проще сначала разобрать приложенный конспект, сформировать из него свой, а потом уже смотреть видео. Так зачастую понятнее, чем пытаться угнаться за логикой лектора, а потом догонять ее в конспекте.

Забавный момент. Посмотрела одну лекцию cs50 с сабами https://www.youtube.com/watch?v=eey91kzfOZs&t=13s&ab_channel=CS50
Я думала, что на английском мне будет сложнее, чем на русском. Но оказалось, что cs50 на английском понятнее, чем курс от МФТИ и Яндекса на русском.
Однако, продолжаю все же курс от МФТИ. Не уверена, что это лучший путь, но не хочу с него сворачивать.

Картинка просто забавная, нашла в комментах к статье на Хабре про базовые принципы ml на примере линейной регрессии. #Учеба, #ML
Коллинеарные признаки... коли-николи, коррелировали, коррелировали, да не выковыряли, блин)

По поводу ml накрывает разными мыслями. С одной стороны не rocket science, с другой стороны от названий, формул, всевозможных знаков и сокращений едет крыша. Просто надо привыкнуть к этому клингонскому.

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

Болею. Вторая неделя второго курса идет натужно. Надеюсь, что когда приду в себя, верну начальную скорость. #Учеба, #ML
кусочек пазла) #Учеба
image_2021-01-12_23-15-00.png
150.3 KB
log loss. Хех, может кому пригодится. Весь свой конспект как обычно выложу по завершению всего курса. #Учеба
Испытала сегодня на себе отчаяние двоечника.
Читаю условия задачи и не понимаю, даже не догадываюсь как ее решать. А это не то, чтобы большая задача, так, промежуточный тест. Пересмотрела конспекты, погуглила альтернативные статьи и видео на тему в интернете, но это не дало мне понимания как решать эту задачу.
Короче, с помощью гугла, везения и интуиции я нашла верные ответы в тесте. Потом сидела раскапывала почему именно они такие. А все просто! Задача связана с одной из тем из первого курса и базовыми знаниями о том, как работать с натуральными логарифмами. Скажем, первое было для меня не на поверхности из-за нехватки опыта применения, второе я тупо уже не помню, а в курсе логарифмы вот только недавно чуть-чуть незначительно промелькнули.

Так вот, к чему это я. От такого отчаяния хочется иногда сложить лапки, чувствуешь себя абсолютно бестолковым.

Что мотивирует? За время изучения программирования я поняла пару важных вещей для учебы:
- если сейчас что-то непонятно, чуть позже с практикой все встанет на свои места. Как итог, я не гонюсь за тем, чтобы вот сразу все-все охватить.
- то, что кажется изначально нерешаемым, невозможным, в итоге можно решить, просто надо копать в нужную сторону. Бесил js и непонятно было как с ним работать - курс по js помог решить проблему. Проблемы с AWS казались безнадежными? - ничего, все было так или иначе через какое-то время решено.

Вдох-выдох, тест сдан, я все поняла, поехала дальше смотреть видео. #Учеба
вариант с переменной estimator - то, что было в тетрадке к курсу (это из "лекций"). Там, где побольше комментариев - то, что я сама пыталась разобрать. Сюда бы еще можно было бы добавить ссылки на документацию и краткое описание того, что делает каждая из функций. Но нет. Спасибо за курс, спасибо за дорогу к знаниям.
К сожалению, это не разовый пример, большая часть курса такая.
Может, кто-то и скажет, что тут все очевидно, но на мой взгляд, уж лучше проще, особенно для студентов, чем такое адовое нагромождение с бесконечными скобочками и lambda-функциями. Как вы это написали без ошибок то?)
JS повеяло) #Учеба
Хочу поделиться, мало ли кому-то будет полезно.
У vs code есть возможность совместной работы над кодом https://marketplace.visualstudio.com/items?itemName=MS-vsliveshare.vsliveshare-pack
Эту штуку я пробовала сама и мне понравилось (спасибо Паша).
У JB тоже есть такое https://plugins.jetbrains.com/plugin/14896-code-with-me
Но в Pycharm я пока не пробовала.
Это как в гугл-доках совместная работа с текстом и табличками, только с кодом. #Tools
Последнее время никак не могу собраться и войти в стабильный ритм. Немного поделаю того, немного сего, в итоге топчусь на месте.

Зато помогая с задачкой другу, обнаружила, что я могу ориентироваться и понимать чужой код. Круто!

Попутно все размышляю как мне решить свой вопрос с большим объемом данных в таблицах, на которых идет нагрузка.
У меня есть следующие вводные:
1. модель, имеющая большую связность,
2. частое чтение данных, добавленных за последние 10 минут (несколько десятков запросов раз в минуту),
3. частая запись данных,
4. редкое чтение данных за все время (несколько раз в месяц),
5. объем данных 2,3 млн строк в одной таблице и 3,9 млн строк в другой таблице.

Основная проблема кроется в пункте 2, потому что оно создает основную нагрузку. Хочется какое-нибудь решение, чтобы данные за последние 10 минут лежали где-то в отдельном месте, откуда и считывались для скриптов из пункта 2. При этом получается, что они должны туда постоянно приходить и уходить. Но я не могу использовать не PostgreSQL, так как мне требуется полнотекстовый поиск и функцию similarity для триграмм.
Есть еще вариант с партиционированием. И даже есть инструменты для этого:
https://django-postgres-extra.readthedocs.io/en/master/index.html
https://architect.readthedocs.io/features/partition/postgresql.html
Надо заняться и разобраться с этим. Лунная призма дай мне силу!

Может, кто из подписчиков что-то интересное подскажет?

И да, приятно удивлена интересу к моему скромному дневничку.

PS.
- "это не нагрузка для бд" - нагрузка, в основном, как я поняла, проблема в оперативной памяти. Данные довольно объемные. Выводы основаны на практическом использовании и сравнении работы бд при разных ресурсах (оперативная память, процессор) и при разных объемах соответствующих таблиц.
- "есть ли индексы" - да, индексы есть, для поиска использую индекс GIN (https://docs.djangoproject.com/en/3.1/ref/contrib/postgres/indexes/#ginindex)
- Не ищу критики, ищу совета на счет варианта решения задачи. Критику на счет бд уже получала, ничего интересного не было.
В результате хочу снизить ресурсы для бд по оперативке, так как слишком дорого за нее выходит платить. #Django
~x

Очень редкий зверь - значок тильды в python. Не так просто найти о нем информацию.
Еще иногда встречается использование & и |, когда я впервые увидела их использование, меня это поставило в тупик: а что это и как это понимать.
Самый лучший список всех-всех вариантов разных операторов я нашла тут https://pythonworld.ru/osnovy/peregruzka-operatorov.html

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

В некоторых библиотеках перегружают такие операторы для удобства работы.
Например, в Pandas для объединения условий внутри выражения используется как раз операторы & и |:

df.loc[(df.cnt < 1000) & (df.workingday == 0), 'hum']


В исходниках можно найти как они реализованы:


# -------------------------------------------------------------
# Logical Methods

def _logical_method(self, other, op):
return NotImplemented

@unpack_zerodim_and_defer("__and__")
def __and__(self, other):
return self._logical_method(other, operator.and_)

@unpack_zerodim_and_defer("__rand__")
def __rand__(self, other):
return self._logical_method(other, roperator.rand_)

@unpack_zerodim_and_defer("__or__")
def __or__(self, other):
return self._logical_method(other, operator.or_)

@unpack_zerodim_and_defer("__ror__")
def __ror__(self, other):
return self._logical_method(other, roperator.ror_)

Глубже не осилила.

Просто решила поделиться. #Python
Хочется написать про поиск работы.

Я иногда посматриваю вакансии и прохожу тестовые. Нет, не так, я ткнулась в пару вакансий и сделала их тестовые.
Первое тестовое было - 4 задачки на базовый синтаксис и алгоритмы. По функционалу я сделала полностью, но вот забыла про магию множеств python - функцию set.intersection() https://pythonz.net/references/named/sets.intersection/. Теперь буду пользоваться.

После меня позвали на интервью с 10 техническими вопросами. Воспроизведу то, что помню:
1. Какие СУБД знаете. Чем SQLite отличается от остальных.
2. Join и его виды, чем отличаются.
3. Сложность алгоритмов, бинарный поиск, его сложность.
4. Индексы в бд, что такое, какая сложность получения экзмепляра по индексу.
5. POST и GET запросы, в чем отличие и применение.
6. Зачем нужен GIT и его команды.
7. Базовые команды линукса. Как можно посмотреть файл, с какими редакторами работала. (не ответила, не помню).
8. Миграции джанги, зачем нужны, как создавать, как применять, какие команды соответствуют.
9. Students.objects.filter(age__gte=18).exclude(sex="F").values_list('name', flat=True) - попросили объяснить что тут происходит.

Десятый не помню) В целом я на все ответила, кроме линукса, потому что не применяю ничего, кроме cd и ls, ну, и установки пакетов, выполнения команд.

Вторая вакансия - наоброт, сначала вопросики, потом тестовое. Вопросики были на софт-скиллы.

https://meta-test-mandrianova.herokuapp.com/ - вот, что собрала для демо в итоге на тестовое. Надо было сделать загрузку данных по докторам через стороннее api и страничку доктора на vue. Чтобы сделать демку пришлось подставлять костыли, так как не хотелось ради тестового задания подключать aws s3 для загрузки media. Я еще бы с этим просидела денек.
Впервые что-то собирала на vue, впервые, кстати, выкачивала и сохраняла файлы по урлу. Мне кажется, что то, как я в итоге сделала сохранение файла в джанге - ну такое.
Решила не писать тесты, не обкладывать логами, не залипать на неделю над задачкой. В общем, сделала минимум, если честно.


Хочу еще поделиться менеджерским хаком проверки неизвестного работодателя:
- Ищем юр. лицо потенциального работодателя (на сайте, в гугле, еще может помочь сервис https://www.nic.ru/whois/)
- Идем смотреть по юр.лицу сюда https://www.list-org.com/ или на подобные ресурсы. Там видим доходы-расходы за прошлый год, фактическую инфу о компании, какие есть судебные тяжбы у работадетеля.
- Еще можно проверить соцсети, поискать нет ли знакомых, кто там работает и спросить у них как и что.


Жду ответа)

PS. Не поняла почему все так прутся от Vue (не распробовала, видимо). Надо будет еще Ангуляр потыкать палочкой. #Работа
Дотянулись ручки до Ангуляра, пока чисто ради интереса прохожу туториал. Столько всего замечательного!

<li *ngFor="let hero of heroes"
[class.selected]="hero === selectedHero"
(click)="onSelect(hero)" >
<span class="badge">{{hero.id}}</span> {{hero.name}}
</li>
</ul>

Магия тегов!

id: number;
name: string;
}

Типизация!

ng generate service hero

Удобное создание компонентов и вообще все для людей.
А это я только начала...

Королева в восхищении!

Не претендую на умные мысли и споры на тему выбора технологий, просто захотелось поделиться, мне понравилось.) #JS