RSS
Поиск
11.12.2018


# Ж И З Н Е Н Н О
11.12.2018


Денег столько же, зато когда жопа растянется будет приятно
11.12.2018


Лучше бы в жопу ебался, чем кодил
28.11.2018


Последняя на данный момент статья про ботов в Telegram, временно (надеюсь) завершающая данную серию. В этот раз я решил поэкспериментировать и привлечь к написанию стороннего автора. Так что поприветствуйте первый гостевой пост на сайте! https://kozalo.ru/#post-1543374000 https://lite.kozalo.ru/?post=1543374000 https://pda.kozalo.ru/?post=1543374000
27.11.2018


Несколько дней назад я проводил серьёзную реструктуризацию своих веб-сервисов, но всё не было времени написать об этом не то что на сайт, но даже сюда. Тем не менее, хотя бы вкратце, но описать её стоит для протокола. Пост | Версия без AJAX | Мобильная версия
21.11.2018


Ну и раз уж я обещал, краткий обзор на библиотеку AIOGram. В целом работать с ней понравилось. По API она очень похожа на pyTelegramBotAPI, только есть разделение на бота (Bot), отправляющего запросы к Telegram API, и диспетчера (Dispatcher), который отвечает за принятие и роутинг входящих сообщений. Настройка веб-хука и запуск локального сервера тоже делается элементарно, даже проще чем в aiotg. Но не обошлось и без серьёзных минусов. Самый главный косяк библиотеки — никакущая документация. Вот вообще. Примеры спасают, но кроме них, по сути, ничего больше и нет. Даже вместо подробных докстрингов с описанием параметров одни заглушки из пары предложений и автоматически сгенерированным списком аргументов. Поэтому при появлении каких-либо вопросов приходится лезть в код и смотреть реализацию. Код, кстати, мне показался немного сложнее, чем у aiotg. Впрочем, ничего критичного. В отличие от утилитных функций, которых вроде и достаточно много, но без нормальной документации приходится либо гадать по названию, либо снова вникать в код. В общем, идеальную библиотеку для создания ботов на Питоне я так до сих пор и не нашёл…
21.11.2018


Проголосовать, в какую сторону изменилась скорость работы бота можно в том же сообщении, что и у @textUtilsBot'а: всё равно там как-то слишком мало голосов. А старому серверу тем временем почему-то стало совсем плохо. Сайт работает ужасно медленно, боты порой не отвечают часами, а уж про то, какой неотзывчивый стал SSH, я вообще промолчу. К сожалению, перенести всё и сразу сейчас будет проблематично, так что я стараюсь в кратчайшие сроки разобраться хотя бы с ботами и разгрузить ту VPSку хотя бы от необходимости тянуть кучу скриптов на Пайтоне.
21.11.2018


Пришла пора прокачать и разогнать @kozRandBot'а! Теперь он тоже модный, асинхронный, с тестами и улучшенной архитектурой, а также работает внутри Docker-контейнера на более мощном и шустром железе. Но самое главное, что он теперь никоим образом не зависит на платформу @kozalo_bot'а, так что я вынес его в отдельный репозиторий. Причём я немного изменил правила игры, так что теперь предложения бросить монетку или сгенерировать пароль не будут висеть постоянно. Первое появляется только при пустой строке сообщения, а второе может также принимать требуемую длину пароля в виде числа от 6 до 2048.
18.11.2018


То чувство, когда перед релизом забыл пересобрать образ и упустил необходимость ручной установки git'а в Alpine, чтобы pip мог выкачивать зависимости прямо из репозиториев, чем мы ВНЕЗАПНО начали пользоваться. Сидишь такой и спустя 8 часов после релиза срочно вносишь экстренные правки, чтобы по-быстрому всё поправить и скорректировать конфиг для CI, дабы избежать подобных ситуаций в дальнейшем . Да уж. Давно я так не факапил.
17.11.2018


Как он вам, кстати? Если у кого-то не отображается, то попробуйте тыкнуть F12 (вызывает инструменты разработчика) и Ctrl+R (при включённых инструментах разработчика загружает все ресурсы с веб-сервера, игнорируя локальный кэш браузера).
17.11.2018


По многочисленным настойчивым просьбам наконец-то решил обновить логотип на сайте. Сделал я его ещё в конце сентября 2015 года, используя какой-то онлайн-генератор аватарок и допилив получившегося человечка в графическом редакторе. Вот уже 3 года логотип ждёт, пока я всё-таки соберусь и сделаю remastered-версию сайта. Но этот момент всё не наступает и не наступает… В результате даже он уже почти устарел, о чём я расскажу чуть позже (наверное, ближе к Новому году). Так что даже если я когда-нибудь соберусь и напишу себе новый блог, то логотип придётся рисовать заново. А значит ничего не мешает использовать этот прямо сейчас!
17.11.2018


Немного дополнил пост про @textUtilsBot'а информацией о сегодняшних обновлениях и своих трёхдневных (хотя скорее вечерних) приключениях с Докером.
17.11.2018


import asyncio asyncio.run(random_names(5))
17.11.2018


import aiohttp from typing import * async def random_names(n: int) -> List[str]: assert n > 0, "'n' cannot be less than zero!" async with aiohttp.ClientSession() as session: url = f"https://randomuser.me/api/?results={n}" async with session.get(url) as resp: response = await resp.json() def name_mapper(result): name = result['name'] return name['first'] + ' ' + name['last'] names = map(name_mapper, response['results']) return list(names)
17.11.2018


По-хорошему его бы на asyncio переписать…
17.11.2018


17.11.2018


Когда живёшь в эпоху микросервисов
17.11.2018


>>> random_names(5) ['sandra coleman', 'adam penninx', 'eline adam', 'eckhardt döhring', 'morena martinez']
17.11.2018


import requests from typing import * def random_names(n: int) -> List[str]: assert n > 0 url = f"https://randomuser.me/api/?results={n}" response = requests.get(url).json() def name_mapper(result): name = result['name'] return name['first'] + ' ' + name['last'] names = map(name_mapper, response['results']) return list(names)
17.11.2018