Forzend's channel
378 subscribers
30 photos
2 videos
1 file
87 links
Download Telegram
Ну раз уж сегодня день разгрузочных постов (нужно ведь чем-то разнообразить контент), поговорим немного о планах на будущее.
Меня давно тянет в веб, однако что-то никак не доходят руки. Но когда-нибудь это всё-таки свершится...

Поговорим немного о Django.

Я из тех, кто конкретно так хейтил Django. На то раньше было несколько причин.
Ну во-первых обычно мы говорили о Django, как о фреймворке, который интегрируют с ботами. Многие не разобравшись в ней использую только её орм, чтобы получить админку. Я до сих пор считаю это дикостью. Djangoочень большой фреймворк, и использовать его только ради вуб-админки — как-то тупо, как мне кажется.
Второй причиной стало то, что впервые я с Django познакомился ещё в самом начале своего пути, и тогда я совсем ничего не понимал, мне казалось всё сложным, запутанным и непонятным. Это долгое время отталкивало, хотя я уже взглянул на неё новым взглядом и теперь так не думаю, хотя в ней для меня всё ещё куча магии. Мне есть, куда расти и это не может не радовать.

Я решил начать изучать Django. Взглянуть на неё новым взглядом, попробовать работать с ней. Я немножко знакомился с aiohttp (просто доку прочитал) и это потрясающая библиотека, фреймворк, мне до сих пор довольно сложно их отличать 😅. Но чтобы писать на aiohttp, нужно иметь серьёзный опыт за плечами, которого у меня пока нет. Выбрав Django я решил сначала познакомится с этим вашим вебом, научиться в первую очередь использовать инструменты, а потом уже буду писать их самостоятельно под определённые задачи.
Второй причиной использовать Django стало большое количество вакансий и заказов, т.е. популярность джанго. Без хлеба не останемся 😄

Начать изучение Django я решил с ботов, т.к. это именно та отрасль, в которой я хоть что-то понимаю. Да, боты на джанго. Поэтому не исключено, что в скором времени будет обновлён темплейт и теперь он будет на Django... Да, опять обновлю шаблон.
Я уже начал медленно погружаться в этот фреймворк, но пока вообще ничего не понимаю. Всё работает как-то магически и вообще непонятно. Буду разбираться, поглядывать в исходный код фреймворка, осваивать Django.
Мне очень нравится идея интеграции ботов с вебом. Веб-админ, веб-формы на замену старому и неудобному FSM и тому подобное. Кажется это позволит мне плавно и с минимумом усилий, постепенно влиться в веб разработку, которой я горел с самого начала пути...
Я выбрал Python только потому, что все в то время говорили, что он крутой в вебе, ибо в питоне есть Django. Также мне налили в уши, что на питоне можно писать всё, поэтому в любой момент можно сменить отрасль. Всё, да не всё...
В любом случае, я никогда не жалел о том, что начал с питона. Мне кажется он дал мне неплохие знания программирования в целом. При необходимости изучения более низкоуровневых языков мне больше не придётся разбираться с основами такими простыми понятиями, как типы данных, циклы, функции и прочее.

В общем, буду держать в курсе, как у меня продвигается изучение Django и его интеграция с Aiogram. Может расскажу что интересного)

#Веб #Джанго #Аиограм #Боты #Рассуждения #Планы
#Web #Django #Aiogram #Bots #Reasoning #Plans
👍1
My Z-shell

Программирование это конечно очень хорошо и интересно, но у меня появилось желание заняться своим терминалом.

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

Я хотел иконочки, а у меня не было шрифтов. Для этого я установил себе MesloLGS
и Jetbrains Mono Medium из AUR.

У меня не работали кнопочки для удобного перемещения. Ставились символы, и это было не очень приятно. Пришлось накатить бинды.
Биндов было слишком много, поэтому тут же пришлось научиться выносить всё в отдельный файл. Вынес я их в ~/.zsh_config/key_bindings.zsh и подключил через source в .zshrc

Также я захотел с лёгкостью просматривать айпишник, просто для удобства настройки вебхуков и прочего. Для этого я прописал страшный алиас(псевдоним), вынеся на будущее все алиасы в отдельный файл, как сделал это с биндами. Кто захочет также, просто впишите в .zshrc или файл со своими алиасами следующую строку:
alias myip="ip -c addr show СВОЙ ИНТЕРФЕЙС(У МЕНЯ ЭТО wlan0) | awk '/inet/ {print $2}' | sed 's#/.*##'"
теперь вывод команды myip даст в терминал информацию о вашем ip-адрессе.

Ну раз уж я залез в aliases, сделал я также немного псевдонимов для гита:
alias ga="git add"
alias gc="git commit -m"
alias gp="git push"

Потом я захотел себе красивые подсказочки. Для этого я поставил zsh-autosuggestions, который теперь пишет команды за меня, как tabnine код.

Скриншоты того, что вышло в результате приложу сообщением ниже

#Линукс
#Linux
Что ж, видимо пришло время научиться использовать GitHub actions и писать CI. Убил довольно много времени на этого, хотя, как оказалось, все довольно просто. Моя цель была реализовать автоматическую публикацию библиотеки aiogram_broadcaster на pypi. Можно было бы взять стандартный GitHub action, если бы не одно "НО" — я использую poetry, а готовых экшонов для него нет. Пришлось писать свой, что, собственно, и отняло так много времени. Но, думаю, это того стоило. Хотя чувства двоякие... Примерно как в меме. Ну ничего, зато теперь не нужно повторять однотипные действия и возможно потом для своих проектов буду использовать CI для деплоя тех же ботов на сервер.

За основу своего экшона я взял встроенный экшон в GitHub. Сейчас, убив кучу времени и разобравшись мне кажется это совсем простым, но давайте я постараюсь сэкономить вам это время и разберёмся, что же всё-таки я сделал. В первую очередь я через веб UI githubсоздал новый экшен во вкладке Actions и глядя на пример от гитхаба написал .yml файлик.

Читая код моего экшона вы можете заметить ${{ secrets.PYPI_TOKEN }}. Это Переменная, которая подгрузится из secrets в настроках репозитория. Все скриншоты опять же приложу сообщением ниже.
Как видно в экшоне:
on:
release:
types: [created]
Он сработает при создании релиза. В принципе тут больше не о чем говорить, это все проблемы, которые могли возникнуть. Очень простой кейс, но всё равно приятно осознавать, что разобрался с CI.
Forwarded from Forzend's channel (Косця)
Forzend's channel
Photo
Постом выше вы могли заметить обновление aiogram_broadcaster до версии 0.0.4. Эта версия была готова ещё неделю назад. Её цель была ответить на вопрос Алекса (разработчика aiogram) "а как отслеживать процесс отправки?.."
Там был ещё один вопрос, но история об этом умалчивает ;)

Эта версия не выходила так долго потому что я ждал одобрение самого Алекса, боялся наделать говна, но что мне остаётся делать? Будем учиться на своих ошибках, раз уж на то пошло... Больше ждать уже не выносимо.

И так, что же было изменено в 0.0.4 кроме уже упомянутой CI системы? В основном изменения были направлены на обновление абстрактного класса. Обратить внимание именно на него я вам и предлагаю. Сразу, что мы можем видеть: атрибут класса running, представляющий из себя список. В нём будут лежать экземпляры запущенных рассылок, чтобы их можно было получить отовсюду. Опускаемся ниже и видим кучу приватных атрибутов: _id, _is_running, _successful, _failure. Что такое id и is_running, думаю, понятно из самого названия этих атрибутов. id — порядковый номер экземпляра, а is_running — статус экземпляра, т.е. запущен он, или нет. В атрибутах successful и failure также нет ничего особенного. В одном хранятся чаты, отправка в которые была произведена успешно, а в другие — безуспешно.

Все эти атрибуты дают нам возможность отслеживать прогресс рассылок и в целом удобно ими управлять. Но для работы с этими атрибутами есть несколько методов.

Естественно, был добавлен дандер str, который покажет красиво информацию о экземпляре класса. Были добавлены свойства successful и failure, которые возвращают те самые списки. Для этих свойств также реализованы методы get_successful и get_failure с аргументом id_only на случай, если вам нужен будет не список словарей, а просто список айдишников. На этом и заканчиваются основные изменения этого обновления. Казалось бы — час работы, но как я уже и сказал, обновление не выходило так долго потому что я хотел получить "фидбек" от человека с опытом, чтобы не писать дерьмо. В любом случае пока я доволен текущей реализацией.

#Рассылка #Аиограм
#Broadcaster #Aiogram
Интересный дед. Подкупил названием канала и видеоролика. Ничего особо интересного не рассказал, но вложил в голову одну интересную мысль: "Уязвимая ссылка — одна из самых страшных уязвимостей интернета. Если вы по адресу одного элемента хранения можете угадать адрес другого элемента хранения, так делать нельзя".

Заставило задуматься. Подошел к этому вопросу с точки зрения веб разработчика.
Сначала я был с ним согласен и думал "нужно делать ссылки не такими интуитивными".
Но вдруг у меня назрела мысль: "но такие ссылки не удобны, сложны в чтении, запоминании. Для кого придумали 403?".
Но я вовремя опомнился. Ведь чтобы кинуть 403, нужно как-то идентифицировать пользователя. А для этого либо регистрация, либо айпи. Регистрация в представленном примере была не приемлема, ибо информацию нужно подавать всем незарегистрированным пользователям, иначе они теряют "клиентов". Проверка айпи тоже не спасает. Во-первых либо тебя обходят впн-ом (как это было сделано в видеоролике), либо тебе нужно вести список разрешенных айпишников, что также не вариант.

Хороший пример ссылок статей на telegra.ph, который сразу пришел мне в голову. Там нет такой простой нумерации и несмотря на то, что для генерации ссылки используется название статьи, найти другие статьи будет не так просто, ведь для этого не достаточно просто прибавить или отнять единичку к числу в строке поиска, однако это и не усложняет восприятия.

#Интересное #Веб
#Intresting #Web
🎧 Global Version ZMI PurPods Pro

Уже давно хочу подобрать себе хорошие TWS наушники по приемлемой цене.
Остановился на наушниках ZMI PurPods Pro. Судя по отзывам отличные наушники за цену, которую я бы смог осилить. До недавнего времени отталкивало лишь одно — это не глобальная версия и весь софт — китайский. Не смертельно, но приятного мало.
К счастью теперь вышла Глобальная версия (Кстати, рефералка от меня, а может не рефералка, хз, не часто приходится покупать на AliExpress).
Как я уже сказал, я буквально мечтаю о этих наушниках уже долгое время и всё-таки надумал их покупать, но цена всё равно очень сильно бьёт по карману. Буду рад получить советы в комменты о том, как можно её немного скинуть, а также предложения других наушников, которые вы используете или тоже хотите приобрести
Долго искал сайт/канал, где можно было бы почитать/посмотреть про паттерны программирования, посмотреть о их реализациях, разобраться в том, зачем они нужны в целом и в каких задачах их использовать.
Недавно мне напомнили о существовании такого сайта, как refactoring.guru. Очень крутой сайт, который отвечает всем моим запросам. А то частенько слышишь о каких-то фабриках, ещё чем-то и вообще ничего не понимаешь 😅

#Полезное
#Useful