12 Июля 2023

Говорят, скоро нейросети заменят нас на работе

И нам будет нечего есть. Но мы верим, что роботы и люди могут работать вместе. Мы попросили нейросеть нарисовать несколько отделов в большой компании — все выглядит дружелюбно. Как думаете, так и будет — или искусственный интеллект просто маскируется? Посмотрите и решите сами.

2450
Серия Завхоз Петрович

Секта свидетелей дивана

Лет двенадцать назад наш завхоз Петрович увидел в газете объявление: «Отдам диван. Состояние хорошее. Самовывоз». Покоренный благородной лаконичностью слога, он поехал посмотреть. Диван. С обивкой из искусственной светло-коричневой кожи, потертый ровно настолько, чтобы было не жалко отдавать бесплатно, с двумя округлыми вмятинами, повторяющими очертания среднего размера задниц. Но Петрович увидел в нем серьезных деловых мужчин в костюмах с сигарами, курсы акций, увесистые стаканы с виски на донышке и черт знает какие еще искушения. И не устоял.

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

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

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

А потом случилось страшное номер два: в организации случился корпоратив. Тогда у нас еще работали славные, чуждые условностей люди, для которых слово «корпоратив» корнями восходило к древним римлянам, и которые после вина и умных бесед жаждали скинуть одежды и принять замысловатое положение тела в соотношении один к одному. Однажды эти потомки римлян уже сломали в женском туалете унитаз, которого жизнь не готовила к таким сатурналиям. А диван Петровича – это практически роскошное ложе с нулевой остаточной стоимостью. Взяв у вахтера ключ, граждане, неразборчиво расписавшиеся в журнале, осквернили собственность Петровича с таким пылом, что сдвинули диван с места.

Дело было в пятницу, а Петрович узнал о ЧП в понедельник, поскольку на корпоративе не присутствовал. Он несколько минут с трагическим лицом осматривал диван на предмет повреждений, измерял его тормозной путь, нюхал, не пахнет ли знакомыми духами, и бормотал недоброе. А потом сфотографировал на телефон роспись в журнале и пошел сличать ее с почерками сотрудников. Юрист Федор Михайлович, исключенный из списка подозреваемых по причине слишком высоких требований к женщинам, с профессиональным любопытством интересовался, какие от Петровича будут кары злоумышленникам. Петрович сформулировать не мог, просто воинственно водил усами, видя в бывших коллегах исключительно проституток и наркоманов. Воспаленное воображение рисовало ему десяток водителей с грубыми мощными кулаками, овладевающих бухгалтершами на светло-коричневой почти настоящей коже, а бухгалтерши еще при этом упирались тонкими каблуками прямо в обивку и царапали ее длинными хищными ногтями. Диван жалобно скрипел и пытался уползти из-под развратников в сторону Петровича. И хотя у нас в списочной численности не было столько водителей, бухгалтерш, каблуков и ногтей, Петровича это не успокаивало. Иная мебель глаголет, диван же вопиет.

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

Продолжение следует.  

Подготовлено специально для @Novichok51.

Показать полностью

Польза функции pprint в Python

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

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

Польза функции pprint в Python Python, Программирование

Попробуем просто распечатать этот словарик:

Польза функции pprint в Python Python, Программирование

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

Польза функции pprint в Python Python, Программирование

pprint добавила отступы для каждого логического блока (кстати размер отступа можно подстраивать аргументом indent, по умолчанию 1)

Также мы можем регулировать глубину вложенности, которую хотим вывести, с помощью параметра depth.

Польза функции pprint в Python Python, Программирование

Вот такая вот простая, но на мой взгляд полезная функция, а вот здесь я публикую еще решения задачек с собеседований

Всем спасибо за просмотр!

Показать полностью 2
0

Нейролетов — БАЙРАКТАР

Качество исходника, к сожалению, оставило желать лучше, поэтому нейронного Игоря Фёдоровича штормит.

Как вседа, оставляю ссылку на телегу, где собрано вообще всё по нейрокаверам. Модель голоса Летова там тоже есть.

Показать полностью
12

Простой бэкап базы данных Postgres и статики для небольшого Django-проекта

Друзья, всем привет!
Помимо основной работы инженером данных, я поддерживаю небольшой сайт на Django (посвящен информационным материалам по преподаванию истории и обществознания).

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

Сразу скажу, что такой подход подойдет для баз, размер которых не является астрономическим (сотни гигабайт), в моем случае база весит всего 50 Мб, статика около 400 - поэтому мне не составляло большого труда синхронизировать такие объемы. Думаю, небольшие и даже средние интернет магазины и блоги вряд ли хранят на порядки больше данных.

Для больших проектов, лучше бэкапы архивировать, шифровать и отправлять куда нибудь в s3 типа  Minio.

Когда новая инфа на сайте появлялась довольно редко, я все делал руками, а именно:

  • заходил на удаленный сервер, где крутится сайт,  по ssh

  • выполнял команду для создания полной копии БД
    sudo -u postgres pg_dumpall -c -f {remote_db_copy_file_path

  • потом переключался в терминал ос рабочего ноута, создавал папку с названием, соответствующем дате бэкапа

  • с помощью утилиты scp, копировал с удаленной машины с сайтом бэкап, полученный в пункте 2 - т.е. типа такой команды
    scp -r {remote_user}@{remote_host}:{remote_media_path} {local_media_full_path}

  • опять же с помощью scp копировал статику с файлами из папки

  • удалял файл бэкапа из папки на удаленном сервере

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

https://github.com/Riddik1993/DB-and-static-copy-from-remote

Давайте более подробно рассмотрим, как он работает:

  1. Делается подключение по ssh с помощью библиотеки paramiko, сделал с помощью файла rsa-key, который paramiko ищет автоматом, соответственно пароль указывать не надо

В скрипте за подключение отвечает функция _initialize_ssh_client

  1. Получаем название файла с копией БД, которую необходимо будет создать, с помощью функции _get_db_copy_remote_filename. Принцип простой, берем текущее время и дату, и подставляем в название файлика, получается что то типа “01072023_155045.sql". К этому имени подставится путь, взятый из переменной окружения REMOTE_DBCOPY_FOLDER

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

  3. Функция make_db_backup собственно делает сам бэкап, через команду pg_dumpall, предварительно выдав права юзеру postgres на папку, куда положится бэкап

  4. Бэкап грузится на локальную машину (upload_db_backup_to_local_machine)

  5. Старые бэкапы  удаляются с сервера (delete_old_copies_on_remote). Важно отметить, что срок актуальности бэкапа в днях можно задать в конфиге через переменную old-db-copies-exp-period. Потом данный период подставится в команду утилиты find.

  6. Ну и в конце, функция copy_media_files_to_local перекачивает статику с сервера на локальную машину

С алгоритмом работы понятно, теперь давайте распишу, что вам надо сделать, чтобы у Вас тоже все запустилось и работало,

  1. Иметь интерпретатор питона на локальной машине

  2. Скачать репозиторий с моего гитхаба https://github.com/Riddik1993/DB-and-static-copy-from-remote

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

Также это стоит сделать и не только ради скрипта с копированием базы, но и просто из соображений безопасности - так как по паролю ваш сервер гораздо легче взломать чем через ключ rsa

  1. Находясь в папке скаченного репозитория, вводим в терминале команду pip install requirements.txt и ставим нужные для скрипта зависимости. Если не хотите ставить их глобально, но создайте виртуальное окружение сначала и ставьте туда

  2. Обращаем внимание на файл config.conf. Надо создать переменные окружения, которые указаны внутри фигурных скобок - это можно сделать, отредактировав файл ~/.bashsrc

Просто открываем этот файлик, добавляем строчки такого формата

export REMOTE_USER=”username”

Сохраняем, вводим команду

source ~/.bashsrc

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

  1. Когда все сделано, в терминале в папке репозитория запускаем команду python3 make_db_media_copy.py

В выводе вы увидите логирование всех стадий работы скрипта.

Простой бэкап базы данных Postgres и статики для небольшого Django-проекта Гайд, Python, Джанго, Postgres, Длиннопост

Файл с копией базы положился в папку, название которой хранится в переменной LOCAL_DBCOPY_PATH

Простой бэкап базы данных Postgres и статики для небольшого Django-проекта Гайд, Python, Джанго, Postgres, Длиннопост

Медиафайлы положились в папку, которую скрипт предварительно создал, в указанной нами директории LOCAL_MEDIA_PATH

Простой бэкап базы данных Postgres и статики для небольшого Django-проекта Гайд, Python, Джанго, Postgres, Длиннопост

Если что то упало - в принципе будет ясно почему (смотри скриншот с логами). Но если что. пишете в комментариях - всегда рад помочь)

Простой бэкап базы данных Postgres и статики для небольшого Django-проекта Гайд, Python, Джанго, Postgres, Длиннопост

Также пишите, как делаете логирование Вы)

Если понравилось, буду рад приветствовать вас в своем телеграм канале, куда публикую интересные обзоры питон-функций, разборы задачек с собеседований, ну и просто интересные мысли.

Показать полностью 4
Мои подписки
Подписывайтесь на интересные вам теги, сообщества, авторов, волны постов — и читайте свои любимые темы в этой ленте.
Чтобы добавить подписку, нужно авторизоваться.

Отличная работа, все прочитано! Выберите