Плохо быть джуном и не ведать то, что делаешь. Особенно касательно инфраструктуры. Но хорошо, когда у тебя есть друзья, интуиция, память и логика.
Вчера после общения с товарищами про мою проблему с инфрой, у меня заела одна мысль - лишний запущенный nginx. Когда я ковыряла инстанс по ssh, у меня уже возникли вопросы на тему того, а какой из файлов конфигураций nginx надо запускать то вообще, потому что их несколько.
Короче, вывод то какой? Я через ssh по ходу запустила не тот nginx. AWS о нем не знал и не тушил при перекате, и он миленько работал на старой версии. А чего бы и нет?
Переходом на новый инстанс проблема была по факту решена.
Теперь можно как и раньше катать спокойно. Фух. Можно дальше творить) #AWS, #Работа
Вчера после общения с товарищами про мою проблему с инфрой, у меня заела одна мысль - лишний запущенный nginx. Когда я ковыряла инстанс по ssh, у меня уже возникли вопросы на тему того, а какой из файлов конфигураций nginx надо запускать то вообще, потому что их несколько.
Короче, вывод то какой? Я через ssh по ходу запустила не тот nginx. AWS о нем не знал и не тушил при перекате, и он миленько работал на старой версии. А чего бы и нет?
Переходом на новый инстанс проблема была по факту решена.
Теперь можно как и раньше катать спокойно. Фух. Можно дальше творить) #AWS, #Работа
На неделю выпала из процесса. Пришлось взять некоторую паузу.
Интерфейсы. Чтобы не тошнило от любого соприкосновения с js, пошла подтягивать базу по этому вопросу. Второй день прохожу базовый курс на udemy https://www.udemy.com/course/javascript_full/
Очень тяжело идут лекции подряд, не потому что сложно, а потому что рутинно и томно. Нашла выход - смотрю лекцию, потом какой-нибудь короткий видосик, снова лекцию. Такое межевание помогает продвигаться.
В итоге в моменты прокрастинации наткнулась на курс по AWS, который также думала пройти https://www.youtube.com/playlist?list=PLg5SS_4L6LYsxrZ_4xE_U95AtGsIB96k9
Хехей! Вот оно гениальное решение: чередую теперь лекция по AWS, лекция по JS.
Ну что же. Чай, xmind, продолжаю... 9 лекция AWS, 31 лекция по JS.
В голове начинает проясняться. #AWS, #JS, #Учеба, #Курсы
Интерфейсы. Чтобы не тошнило от любого соприкосновения с js, пошла подтягивать базу по этому вопросу. Второй день прохожу базовый курс на udemy https://www.udemy.com/course/javascript_full/
Очень тяжело идут лекции подряд, не потому что сложно, а потому что рутинно и томно. Нашла выход - смотрю лекцию, потом какой-нибудь короткий видосик, снова лекцию. Такое межевание помогает продвигаться.
В итоге в моменты прокрастинации наткнулась на курс по AWS, который также думала пройти https://www.youtube.com/playlist?list=PLg5SS_4L6LYsxrZ_4xE_U95AtGsIB96k9
Хехей! Вот оно гениальное решение: чередую теперь лекция по AWS, лекция по JS.
Ну что же. Чай, xmind, продолжаю... 9 лекция AWS, 31 лекция по JS.
В голове начинает проясняться. #AWS, #JS, #Учеба, #Курсы
Я узнал, что у меня...
Я продолжаю свое чередование AWS и JS.
Про AWS. Банальная такая штука, но нифига неочевидная. Инстансы в AWS разделены на семейства. С ходу ведь так и не знаешь, в чем же суть этих семейств, какие-то буковки-циферки. Да, понятно, что там написано CPU и RAM, по ним и ориентировалась. Думала, что чем выше циферки, тем круче и дороже. Но оказывается, что цифра после буквы семейства означает версию типа инстанса, чем она больше, тем новее оборудование, да и тем круче, конечно, НО! и тем дешевле инстанс Оо. То есть банально, переключим с t2 на современные t3 я буду платить меньше. Жаль только elastic beanstalk не поддерживает новые дешевые a1 и даже t4g.
https://aws.amazon.com/ru/ec2/instance-types/ тут можно почитать про разные типы.
Также есть нюансы резервирования инстансов. И если резервировать на год или на 3, то цена становится еще ниже.
Надо еще попробовать поиграть со спотами, которые вообще очень-очень дешевые, но AWS их может отбирать, когда кто-то делает резерв. Тут интересно потыкать eb, так как он позволяет заводить Instances именно на спотах.
Про JS. Странное. В JS много странного.
1. NodeList не Array. Почему? Потому:
myArray --> Array.prototype --> Object.prototype --> null
myNodeList --> NodeList.prototype --> Object.prototype --> null
https://developer.mozilla.org/ru/docs/Web/API/NodeList
А я всего лишь хотела метод indexOf() для NodeList. Блин, где логика?
2. +'Infinity' это число Infinity (бесконечность), а +'infinity' это NaN (not a number). Вот такие дела. Вроде все логично, но почему так больно?
40 лекция по js из 124. 18 лекция по aws из 88. Поехала дальше. Интересно, смогу ли я закончить до конца недели? #AWS, #JS, #Учеба, #Курсы
Я продолжаю свое чередование AWS и JS.
Про AWS. Банальная такая штука, но нифига неочевидная. Инстансы в AWS разделены на семейства. С ходу ведь так и не знаешь, в чем же суть этих семейств, какие-то буковки-циферки. Да, понятно, что там написано CPU и RAM, по ним и ориентировалась. Думала, что чем выше циферки, тем круче и дороже. Но оказывается, что цифра после буквы семейства означает версию типа инстанса, чем она больше, тем новее оборудование, да и тем круче, конечно, НО! и тем дешевле инстанс Оо. То есть банально, переключим с t2 на современные t3 я буду платить меньше. Жаль только elastic beanstalk не поддерживает новые дешевые a1 и даже t4g.
https://aws.amazon.com/ru/ec2/instance-types/ тут можно почитать про разные типы.
Также есть нюансы резервирования инстансов. И если резервировать на год или на 3, то цена становится еще ниже.
Надо еще попробовать поиграть со спотами, которые вообще очень-очень дешевые, но AWS их может отбирать, когда кто-то делает резерв. Тут интересно потыкать eb, так как он позволяет заводить Instances именно на спотах.
Про JS. Странное. В JS много странного.
1. NodeList не Array. Почему? Потому:
myArray --> Array.prototype --> Object.prototype --> null
myNodeList --> NodeList.prototype --> Object.prototype --> null
https://developer.mozilla.org/ru/docs/Web/API/NodeList
А я всего лишь хотела метод indexOf() для NodeList. Блин, где логика?
2. +'Infinity' это число Infinity (бесконечность), а +'infinity' это NaN (not a number). Вот такие дела. Вроде все логично, но почему так больно?
40 лекция по js из 124. 18 лекция по aws из 88. Поехала дальше. Интересно, смогу ли я закончить до конца недели? #AWS, #JS, #Учеба, #Курсы
Новый классный функционал от aws. Теперь EB работает с docker-compose. Вот только почему-то работа с обычным dockerfile встала. Твою мойву... Опять 25... Пришлось откатываться на предыдущую версию. Т_Т я не хочу снова страдать, но по ходу придется разбираться.
В логах выглядит вот так:
В логах выглядит вот так:
Дорогая, я не смог тебе достать образ питона. Все, чао-какао. #AWS
2020/10/07 11:57:14.114946 [INFO] Running command /bin/sh -c docker pull python:3.8
2020/10/07 11:57:30.855165 [INFO] Starting...
2020/10/07 11:57:30.855211 [INFO] Starting EBPlatform-PlatformEngine
2020/10/07 11:57:30.855228 [INFO] reading event message file
2020/10/07 11:57:30.855325 [INFO] no eb envtier info file found, skip loading env tier info.
2020/10/07 11:57:30.855398 [INFO] Engine received EB command cfn-hup-exec
Чувствую себя кул-хацкером) Подключилась к Instance по ssh, нашла там название запущенного докер контейнера, выполнила на контейнере exec, запустив django shell, а потом запустила скриптик, который мне выгрузил нужную статистику.
Вроде мелочь, но путь тернистый. До этого я только sql-запросы к продовой базе тыкала.
Команды:
Ну, а дальше в интерактивном режиме импорт и запуск нужного скрипта.
Кстати, раньше я не понимала нафига вообще нужен этот shell, зачем все так упорото все прогоняют через shell. Теперь это мой чуть ли не основной инструмент для проверки своих идей в процессе написания кода. Почти каждую функцию проверяю в shell. Ну, или если не джанга, то аналогично запуск python в консоли отличный вариант для тестирования скриптов. #Docker
Вроде мелочь, но путь тернистый. До этого я только sql-запросы к продовой базе тыкала.
Команды:
чтобы получить список контейнеров
docker exec --interactive CONTAINER_ID django-admin shell
Ну, а дальше в интерактивном режиме импорт и запуск нужного скрипта.
Кстати, раньше я не понимала нафига вообще нужен этот shell, зачем все так упорото все прогоняют через shell. Теперь это мой чуть ли не основной инструмент для проверки своих идей в процессе написания кода. Почти каждую функцию проверяю в shell. Ну, или если не джанга, то аналогично запуск python в консоли отличный вариант для тестирования скриптов. #Docker
Еще хочу поделиться. Не знала как отправлять файлы с помощью Python.
Так как я не хотела заморачиваться со скачиванием файла или подключением s3 для сохранения, решила воспользоваться методом отправки файла в telegram api для ботов (sendDocument). Вот, пришлось разобраться как крепить файлы к post запросу. Получилась такая функция:
Как-то так. #Python
Так как я не хотела заморачиваться со скачиванием файла или подключением s3 для сохранения, решила воспользоваться методом отправки файла в telegram api для ботов (sendDocument). Вот, пришлось разобраться как крепить файлы к post запросу. Получилась такая функция:
url = f"https://api.telegram.org/bot{settings.TOKEN}/sendDocument"
caption = "описание файла"
data = {"chat_id": chat_id, "caption": caption}
with open(self.file_name, "rb") as file:
files = {"document": file}
response = requests.post(url, data, files=files)
add_log(self.name, response.text)
return response
Как-то так. #Python
После JS в скрипте на python пыталась на каждой строчке ; ставить и тело функции чуть не внесла в {}.
Прохожу AJAX.
Перелопатила кучу всего, чтобы придумать с помощью какой приблуды запустить свой js, в итоге оказалось, что того как запускает шаблоны pycharm вполне достаточно, чтобы отправлять post-запросы. Лектор предлагал openserver и еще что-то подобное, мне не понравилось.
Дальше лектор кладет в папочку php-скрипт, чтобы обрабатывать запросы, но у меня то Pycharm, я не могу его осквернять.
Полезла запускать flask. Конечно, я не через template на flask запустила html (хотя что мне мешало).
Короче, ошибка, не тот домен. corsы-фигорсы (защита от кросдоменных запросов), стаковерфлоу, библиотека flask_cors, чтобы добавить разрешение для запросов с другого порта localhost. Это я еще почти молчу, что сначала я пыталась фласк поднять в докере, но что-то пошло не так, поэтому психанула и запустила просто в venv прямо в винде. Ненуачо.
Тяжела и неказиста жизнь простого программиста.
Полдня в топку на то, чтобы просто выпендриться и сделать по-своему условную инфру для прохождения курса, еще и довольно криво. Зато, блин, опыт. Но все равно чет в докере не вышло запустить. Странно. Очень странно.
Тем временем в лекциях по AWS (да я их не бросила) vpc (сети, подсети). Понравилось выражение лектора - "Приступим, помолясь". Это, блин, слоган для работы с инфрой, особенно на AWS. Когда буду настраивать деплой на новую платформу, тоже буду приступать, помолясь, поставлю рядом шаманский бубен и заряженную воду, вдруг поможет. Нет, AWS хорош, но СЛИШКОМ СЛОЖНА!
Мой прогресс: js 54/124; aws 31/88. Кажется, до конца недели не успею. #AWS, #JS, #Учеба, #Курсы
Прохожу AJAX.
Перелопатила кучу всего, чтобы придумать с помощью какой приблуды запустить свой js, в итоге оказалось, что того как запускает шаблоны pycharm вполне достаточно, чтобы отправлять post-запросы. Лектор предлагал openserver и еще что-то подобное, мне не понравилось.
Дальше лектор кладет в папочку php-скрипт, чтобы обрабатывать запросы, но у меня то Pycharm, я не могу его осквернять.
Полезла запускать flask. Конечно, я не через template на flask запустила html (хотя что мне мешало).
Короче, ошибка, не тот домен. corsы-фигорсы (защита от кросдоменных запросов), стаковерфлоу, библиотека flask_cors, чтобы добавить разрешение для запросов с другого порта localhost. Это я еще почти молчу, что сначала я пыталась фласк поднять в докере, но что-то пошло не так, поэтому психанула и запустила просто в venv прямо в винде. Ненуачо.
Тяжела и неказиста жизнь простого программиста.
Полдня в топку на то, чтобы просто выпендриться и сделать по-своему условную инфру для прохождения курса, еще и довольно криво. Зато, блин, опыт. Но все равно чет в докере не вышло запустить. Странно. Очень странно.
Тем временем в лекциях по AWS (да я их не бросила) vpc (сети, подсети). Понравилось выражение лектора - "Приступим, помолясь". Это, блин, слоган для работы с инфрой, особенно на AWS. Когда буду настраивать деплой на новую платформу, тоже буду приступать, помолясь, поставлю рядом шаманский бубен и заряженную воду, вдруг поможет. Нет, AWS хорош, но СЛИШКОМ СЛОЖНА!
Мой прогресс: js 54/124; aws 31/88. Кажется, до конца недели не успею. #AWS, #JS, #Учеба, #Курсы
Пришел очередной отчет из wakatime. Забавно, что больше 70% приходится на браузер. И это не только во время прохождения курса, но и при реализации проектов примерно такая же доля. Не потому что прокрастинация и вот это все, а потому что чтение документации, поиск решений и тд и тп приходится именно на долю браузера.
Если что, я не разбиралась как там точно проводятся замеры, но плагин wakatime у меня стоит в Pycharm и в браузере, а также подключен github.
К слову, если не подключать плагин к браузеру, то всю активность будет считать как программирование. Статистика будет нечестная, зато красивая) #Учеба, #Tools, #Работа
Если что, я не разбиралась как там точно проводятся замеры, но плагин wakatime у меня стоит в Pycharm и в браузере, а также подключен github.
К слову, если не подключать плагин к браузеру, то всю активность будет считать как программирование. Статистика будет нечестная, зато красивая) #Учеба, #Tools, #Работа
Вот так кодишь себе тихонечко и даже не догадываешься, что используешь пробелы, а не табы, пока вдруг не пойдешь настраивать eslint.
Никогда бы не подумала, что это вообще имеет хоть какое-либо значение, кроме холиваров.
Если что, для python есть PEP https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
Pycharm сам все делает по-красоте, вам даже думать не надо. Он просто по умолчанию ставит пробелы.
Я свято верила, что использую табы, пока не начала тыкать в код и не обнаружила, что на самом деле там пробелы.
Осталось решить вопрос с js, сколько пробелов ставить? 2 или 4?) https://learn.javascript.ru/coding-style#otstupy
2 выглядит лаконичнее, учитывая многослойность кода на js. Зато 4 пробела читабельнее, на мой взгляд. Оставлю 4.
Пока искала ответы на свои вопросы, нашла статью на хабре https://habr.com/ru/company/mailru/blog/331696/
Зато я сегодня узнала о том, где находятся настройки code style в ide.
Для Pycharm также можно скормить конфиг eslint, если очень надо. #Python
Никогда бы не подумала, что это вообще имеет хоть какое-либо значение, кроме холиваров.
Если что, для python есть PEP https://www.python.org/dev/peps/pep-0008/#tabs-or-spaces
Pycharm сам все делает по-красоте, вам даже думать не надо. Он просто по умолчанию ставит пробелы.
Я свято верила, что использую табы, пока не начала тыкать в код и не обнаружила, что на самом деле там пробелы.
Осталось решить вопрос с js, сколько пробелов ставить? 2 или 4?) https://learn.javascript.ru/coding-style#otstupy
2 выглядит лаконичнее, учитывая многослойность кода на js. Зато 4 пробела читабельнее, на мой взгляд. Оставлю 4.
Пока искала ответы на свои вопросы, нашла статью на хабре https://habr.com/ru/company/mailru/blog/331696/
Зато я сегодня узнала о том, где находятся настройки code style в ide.
Для Pycharm также можно скормить конфиг eslint, если очень надо. #Python
Ребята с табами, я с вами, но вот какой оказался конфуз) #Tools
https://www.youtube.com/watch?v=EiKK04Ht8QI&ab_channel=JomaTech
М - мотивация.
У этого же товарища есть забавные видео - программирование в стиле аниме.
П - прокрастинация) #Жизнь
М - мотивация.
У этого же товарища есть забавные видео - программирование в стиле аниме.
П - прокрастинация) #Жизнь
YouTube
Don't Be A Programmer
HOW DO I GET A TECH JOB?
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
📚 Video courses from JomaClass:
🎓 New to programming? Learn Python here: https://bit.ly/joma_python
🎓 Learn SQL for data science and data analytics: https://bit.ly/joma_sql
🎓 Data Structures and Algorithms:…
▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
📚 Video courses from JomaClass:
🎓 New to programming? Learn Python here: https://bit.ly/joma_python
🎓 Learn SQL for data science and data analytics: https://bit.ly/joma_sql
🎓 Data Structures and Algorithms:…
👍1
Когда я училась в школе, у меня не было дома интернета, компьютер был еще с Windows 95, 1.5 ГБ памяти у жесткого диска, а еще я пользовалась дискетами.
О программистах я думала как о совсем непонятных людях и грезила журналистикой. Писала статьи и таскала их на дискетах в местную редакцию. Я жила в маленьком провинциальном городе.
История моей учебы довольно раздолбайская. Изначально я поступила на очку на специальность по дорожным машинам, бросила, так как не понимала зачем оно мне. Потом филфак, журналистика - заочка, вечерка. Короче, я так ничего и не окончила.
А потом в 22 года я случайно попала в IT как менеджер. И так до 31 года я руководила - фрилансерами, проектами, командами, отделами. Всему уже училась в процессе. Книжки, курсы, статьи, коллеги.
Я немного жалею, что не знала и не понимала еще в школе, что такое программирование и как я могу в нем реализоваться. Я искренне восторгаюсь программистами, кто начал еще в детстве постигать это ремесло.
Однако, сейчас у меня есть все возможности, чтобы изучать программирование и при этом осознавать каждый свой шаг, так как есть большой опыт управления проектами. Я не просто пишу код, я понимаю зачем он нужен и что на самом деле я от него хочу.
А также у меня есть офигенное рабочее место. Хоть это и материальное, но как же классно, иметь удобный стол, стул, монитор, хороший пк для работы.
Но все это мелочи по сравнению с кайфом от невероятного потока новой информации, возможностей и результатов реализации своих идей. Когда я делаю то, что задумала, и оно получается. #Жизнь, #Истории
О программистах я думала как о совсем непонятных людях и грезила журналистикой. Писала статьи и таскала их на дискетах в местную редакцию. Я жила в маленьком провинциальном городе.
История моей учебы довольно раздолбайская. Изначально я поступила на очку на специальность по дорожным машинам, бросила, так как не понимала зачем оно мне. Потом филфак, журналистика - заочка, вечерка. Короче, я так ничего и не окончила.
А потом в 22 года я случайно попала в IT как менеджер. И так до 31 года я руководила - фрилансерами, проектами, командами, отделами. Всему уже училась в процессе. Книжки, курсы, статьи, коллеги.
Я немного жалею, что не знала и не понимала еще в школе, что такое программирование и как я могу в нем реализоваться. Я искренне восторгаюсь программистами, кто начал еще в детстве постигать это ремесло.
Однако, сейчас у меня есть все возможности, чтобы изучать программирование и при этом осознавать каждый свой шаг, так как есть большой опыт управления проектами. Я не просто пишу код, я понимаю зачем он нужен и что на самом деле я от него хочу.
А также у меня есть офигенное рабочее место. Хоть это и материальное, но как же классно, иметь удобный стол, стул, монитор, хороший пк для работы.
Но все это мелочи по сравнению с кайфом от невероятного потока новой информации, возможностей и результатов реализации своих идей. Когда я делаю то, что задумала, и оно получается. #Жизнь, #Истории
👏1
Python VS JS. Функция reduce.
В Python https://pythonz.net/references/named/reduce/
В JS https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Смысл функции в том, что она последовательно пройдет по всем элементам массива и на каждой итерации будет выполнять заданное действие с текущим элементом и результатом с предыдущей итерации.
Питонисты не рекомендуют пользоваться этим методом, так как читабельность кода - наше все. И я за, лучше уж цикл написать, так проще и понятнее.
Но JS - гангстер, он не боится грязи.
Я применила эту функцию для поиска максимального id из списка со словарями.
Иногда от лектора курса JS слышу: "Давайте запишем это красиво", и дальше он сокращает код, делая из 5 строчек одну, но менее читабельную. Так вот, такое "красиво" не значит хорошо или умно. Вот придерживаться code style - это красиво. В остальном, чем проще, тем понятнее. #JS, #Python
В Python https://pythonz.net/references/named/reduce/
В JS https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
Смысл функции в том, что она последовательно пройдет по всем элементам массива и на каждой итерации будет выполнять заданное действие с текущим элементом и результатом с предыдущей итерации.
Питонисты не рекомендуют пользоваться этим методом, так как читабельность кода - наше все. И я за, лучше уж цикл написать, так проще и понятнее.
Но JS - гангстер, он не боится грязи.
Я применила эту функцию для поиска максимального id из списка со словарями.
Как будет это выглядеть в Python:
{id: 1, label: 'Going to learn React'},
{id: 2, label: 'That is so good'},
{id: 3, label: 'I need a break...'},
{id: 4, label: "That's good"}
]
const max_id = data.reduce((max, current) => current.id > (max.id ? max.id : 0)? current.id : max.id)
или короче, но менее читабельно вот так:
{"id": 1, "label": 'Going to learn React'},
{"id": 2, "label": 'That is so good'},
{"id": 3, "label": 'I need a break...'},
{"id": 4, "label": "That's good"}
]
max_id = 0
for item in data:
if item['id'] > max_id:
max_id = item['id']
max_id = max([item['id'] for item in data])На самом деле если присмотреться к коду JS, то можно увидеть, что я в функцию передаю другую неназванную функцию, сократив написание в виде стрелочной функции () => {}, убираю тело, условия возврата записываю в виде тернарного оператора (правда ? если да : иначе), в котором пишу еще одно условие в виде тернарного оператора, чтобы обойти ситуацию, когда в первой итерации у меня ничего нет в переменной max (подставляю 0).
max.id ? max.id : 0Так вот, я грущу от JS из-за таких конструкций. Если для того, чтобы объяснить что делает 1 строчка кода, нужно рассказывать 5 минут, то это нечитаемая строчка кода.
Иногда от лектора курса JS слышу: "Давайте запишем это красиво", и дальше он сокращает код, делая из 5 строчек одну, но менее читабельную. Так вот, такое "красиво" не значит хорошо или умно. Вот придерживаться code style - это красиво. В остальном, чем проще, тем понятнее. #JS, #Python
Python vs JS. Сделать первую букву заглавной.
Python - все просто, функция str.capitalize(), плюс еще есть str.title(), которая делает все первые буквы в словах заглавными. https://pythonz.net/references/named/str.capitalize/
JS. Не, я так не умею, я могу только str.toUpperCase(). Делай сама... Ну ок:
¯\(°_o)/¯ #JS, #Python
Python - все просто, функция str.capitalize(), плюс еще есть str.title(), которая делает все первые буквы в словах заглавными. https://pythonz.net/references/named/str.capitalize/
JS. Не, я так не умею, я могу только str.toUpperCase(). Делай сама... Ну ок:
str[0].toUpperCase() + str.slice(1)Блин, js, ну ты же язык для создания интерфейсов... Почему?
¯\(°_o)/¯ #JS, #Python