скриптощейка
192 subscribers
273 photos
2 videos
11 files
210 links
дневничок
Download Telegram
#postgresql
я тут решил почитать книжку про постгрес, чтобы лучше понять что она вообще умеет и оказывается, в пг можно в транзакции сделать savepoint, к которому можно будет вернуться, если часть транзакции вызвала ошибку
👍6👎1
#sqlalchemy
Оказывается в склалхимии существуют гибридные аттрибуты https://docs.sqlalchemy.org/en/20/orm/extensions/hybrid.html при помощи которых можно сделать работу с орм удобнее.

Я при помощи гибридных аттрибутов смог сделать удобнее работу с м2м отношениями в склалхимии:

subquery = (
select(Model.name)
.join(Model.children)
.where(Model.model_children.in_(predefined_children_list))
.scalar_subquery()
)
👍4
#python #videoprocessing

Если вам когда-нибудь захочется сделать бекенд, который сможет работать с видео стоит обратить внимание на несколько вещей:

Чтобы долго не копаться в поисках либы для работы с видео и стримингом есть пара тулзов на питоне:

https://github.com/abhiTronix/vidgear — либа, которая позволяет реально очень просто работать с различными видео, получать, записывать и передавать

https://ffmpeg.org/ — тул, для которого во многих языках есть биндинги, позволяет довольно удобно переводить видосы в различные кодировки и делать некоторую обработку видео

https://github.com/NorthShine/tthack-backend/blob/main/main.py — тут пример использования, я на хаке пытался сделать адаптацию видео для людей с цветовыми аномалиями зрения.

однако у всех у них есть приколы. vidgear не может по какой-то причине нормально записывать видосы в нужной кодировке и постоянно вылезают ворнинги, из-за чего мне пришлось видео записывать через opencv. У opencv есть большой прикол с кодировкой H.264, из-за лицензии на использование этой кодировки разработчики opencv решили не делать нативную поддержку для этой кодировки, поскольку это может сказаться на коммерческом использовании этого тула и чтобы эту проблему обойти в проекте пришлось использовать ffmpeg

Я в ближайшее время хочу webrtc потыкать, может чего интересного напишу снова
👍51🥰1
#postgresql

если будете писать функции кастомные для пг на питоне очень внимательно посмотрите этот пример из доки. Это не просто пример придуманный из головы — тут показан один очень важный нюанс. Переменные входные не инжектятся в скоуп генерируемой функции, поэтому к аргументы внутри тела функции надо сначала обозначить как global
🔥3👍1
#kafka

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

бтв, чтобы узнать версию достаточно просто в контейнере прописать

kafka-broker-api-versions --version

https://docs.confluent.io/platform/current/installation/versions-interoperability.html
#kafka #kafka_streams

https://github.com/faust-streaming/faust

кажется я нашёл более верхнеуровневую либу для кафки, чтобы не надо было вручную работать с продьюсерами и консьюмерами
#oracle

Если вам когда-нибудь доведётся разворачивать OracleDB то ниже ссылка на полезную штуку для того чтобы можно было это удобно развернуть. Мне это сейчас пригодилось чтобы развернуть ораклдб для тестов одной задачи по датаинжу.

Я разворачиваю банально через

buildContainerImage.sh -v 23.2.0 -f 
docker run названиеКонтейнера

Если на серве мало оперативы то скрипт может крашнуться с ошибкой killed. Потому что в образе пакетный менеджер неплохо так кушает памяти. Я сделал себе своп на 5ГБ и мне хватило

https://github.com/oracle/docker-images/tree/main/OracleDatabase/SingleInstance/dockerfiles
#oracle

я довольно долго мучался как подключиться к Oracle базе данных, но в итоге через несколько часов попыток у меня получилось

Итак, чтобы банально подключиться надо сделать следующее:

создать себе отдельного пользователя с правами

create user C##юзернейм_тут identified by пароль_здесь;

на C## не обращайте внимания, это потребовалось для создания юзера

grant sysdba to C##юзернейм_тут container=all;
grant create session to C##юзернейм_тут container=all;

после чего можно спокойно подключаться по URL через команду:

sqlplus C##юзернейм_тут@host_ip/service_name

service_name можно узнать непосредственно на сервере с oracleDB через утилиту:

lsnrctl status

имя должно быть похоже на XXXXpdb1

Через питон всё несколько проще, достаточно просто поставить себе клиент от оракла cx_Oracle и прописать соединение

connection = cx_Oracle.connect(
user="C##юзернейм_тут", password="password", dsn="ip.ip.ip.ip/service_name"
)


Мне помогли гайды:

https://logic.edchen.org/how-to-resolve-ora-65175-cannot-grant-sysdba-privilege-locally-in-the-root/

https://library.netapp.com/ecmdocs/ECMP12471543/html/GUID-287BC8BA-B8B6-4D67-804E-880B65D30B68.html
Forwarded from linkmeup
Про Malware-as-a-Service, в том или ином виде, знают практически все. Но обычно знания ограничиваются тем, что можно себе купить доступ до вебмордочки с большой красной кнопкой Load Virus.
Но если интересно послушать про внутрянку мира прогрессивных бизнесменов, кто на чём зарабатывает и что вообще происходит, то смело жать на ссылочку ниже.

https://www.youtube.com/watch?v=O9ZDSloDn7k
#digitalocean #aws #compatibility

Нашёл тут таблицу совместимости DigitalOcean Spaces и AWS S3 при работе через boto3. boto3 изначально авсовский сдк для работы с облаком, но частично и для DO подходит, а на сколько частично в таблице расписано


https://docs.digitalocean.com/reference/api/spaces-api/
Forwarded from linkmeup
Вебинар для всех желающих. Хоть разработчиков, хоть сисадминов. 28 июня в 20:00 мск «Авторизация и аутентификация в микросервисной архитектуре». Случится сие счастье в преддверии старта онлайн-курса «Microservice Architecture» в OTUS.

Спикером выступит Сергей Кривонос, руководитель по развитию платформы API Management в АО ДОМ.РФ, эксперт с 8-летним опытом создания архитектуры систем и преподаватель курса OTUS.

На занятии:
- расскажут про различные паттерны аутентификации и авторизации,
- рассмотрят сессионную аутентификацию на основе кук и токенов (jwt),
- объяснят работу identity провайдеров.

Кнопки для регистрации здесь: https://otus.pw/Mczn/

Реклама. Информация о рекламодателе на сайте www.otus.ru
#machine_learning

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

https://medium.com/mindsdb/using-mindsdb-to-predict-the-risk-of-heart-disease-9c602d0b6ca8
#testing #book

Мне тут книжку посоветовали, ща почитаю и несколько статей об этом распишу.

Кстати да, мне последнее время поддержка тестов начинает приносить головную боль, так что книга для меня в самый раз подходящая
🔥2
#kafka

У меня возник с кафкой такой баг:

ERROR Error while creating ephemeral at /brokers/ids/0, node already exists and owner

и судя по всему его можно решить если в server.properties не устанавливать broker.id, я перезагрузил кафку и вроде пока работает, надо проверить как дальше всё будет, надеюсь проблем не возникнет.

https://kafka.apache.org/documentation/#brokerconfigs_broker.id
🤯2
Книжка которая тебе показалась интересной

Где в этой книжке интересное начинается
1😢1
#refactoring #testing

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

async def prepare_my_data_from_db():
data = await get_data_from_db()
return prepare_data(data)

для того, чтобы такое затестировать вам придётся написать мок в тесте, который будет знать, что в функции prepare_my_data_from_db существует какая-то другая функция, что с точки зрения тестирования не совсем правильно на сколько я понял

либо вам придётся создавать к тестируемой функции ещё дополнительно какие-то данные, чтобы get_data_from_db возвращала вам нужные данные

чтобы такую ошибку не повторять вместо этого делайте так
my_data = await get_data_from_db()
async def prepare_my_data(data):
return prepared_data

тогда если вы захотите протестировать это, вам не надо будет мокать get_data_from_db, а вы сможете напрямую передать тестовые данные в функцию
👍6🤨3