Существует ли аналог Proxy и Reflect (как в JS) для Python?
class Proxy:
def __init__(self, target):
self.target = target
def __getattr__(self, name):
print(f"Пытаемся получить атрибут {name}")
if isinstance(self.target, dict):
return self.target.get(name, None)
return getattr(self.target, name, None)
def __setattr__(self, name, value):
if name == 'target':
super().__setattr__(name, value)
else:
print(f"Устанавливаем значение {value} для атрибута {name}")
if isinstance(self.target, dict):
self.target[name] = value
else:
setattr(self.target, name, value)
obj = Proxy({'x': 1})
print(obj.x)
obj.x = 2
class Proxy:
def __call__(self, *args, **kwargs):
print("Объект вызван как функция")
p = Proxy()
p()
obj = {'x': 1}
print(getattr(obj, 'x', None))
setattr(obj, 'x', 2)
class Meta(type):
def __new__(cls, name, bases, dct):
print(f"Создается класс {name}")
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=Meta):
pass
massage_handler
- массаж обработчика?await message.answer
вышла из чата?@dp.massage_handler()
async def echo(message: types.Message):
await message.answer(message.text)
from aiogram import Bot, Dispatcher, executor, types
# Bot init
bot = Bot(token="6563641220:AAFBWH_TQ4SW_Zk-6sVyBpeX5rSJitWoRQM")
dp = Dispatcher(bot)
# echo
@dp.message_handler()
async def echo(message: types.Message):
await message.answer(message.text)
# Запуск лонг-полинг
if __name__ == "__main__":
executor.start_polling(dp, skip_updates=True)
Подскажите, как лучше организовать поиск сотрудников, если их больше 2000, делать один запрос к API и получать сразу всех из БД(mysql) и среди них искать нужного или каждый раз делать поиск конкретного пользователя?
const employees = [
{
"id": 1,
"name": "Leanne Graham",
"username": "Bret",
"email": "Sincere@april.biz",
"address": {
"street": "Kulas Light",
"suite": "Apt. 556",
"city": "Gwenborough",
"zipcode": "92998-3874",
"geo": {
"lat": "-37.3159",
"lng": "81.1496"
}
},
"phone": "1-770-736-8031 x56442",
"website": "hildegard.org",
"company": {
"name": "Romaguera-Crona",
"catchPhrase": "Multi-layered client-server neural-net",
"bs": "harness real-time e-markets"
}
},
{
"id": 2,
"name": "Ervin Howell",
"username": "Antonette",
"email": "Shanna@melissa.tv",
"address": {
"street": "Victor Plains",
"suite": "Suite 879",
"city": "Wisokyburgh",
"zipcode": "90566-7771",
"geo": {
"lat": "-43.9509",
"lng": "-34.4618"
}
},
"phone": "010-692-6593 x09125",
"website": "anastasia.net",
"company": {
"name": "Deckow-Crist",
"catchPhrase": "Proactive didactic contingency",
"bs": "synergize scalable supply-chains"
}
},
]
const employee = employees.find(emp => emp.id === 2);
Делаю форму регистрации на Next.js, 4 страницы. Хочу ускорить загрузку страниц, но не понимаю, какой рендеринг для этого использовать
У меня есть сайт с онлайн-курсами, на котором учителя создают курсы. Ученики покупают эти курсы. Как мне теперь делать переводы учителю (выплачивать его долю) от имени моего ИП?
Я даже примерно не представляю, где об этом узнать. Может где-то чаты тематические есть?
export const routes = [
{ path: '/', element: <MainPage /> },
{
path: '/posts',
element: <Posts />,
children: [
{ path: ':postId', element: <PostIdPage /> }
]
},
{ path: '/about', element: <About /> },
{ path: '/*', element: <Error /> },
]
const renderRoutes = (routes) => {
return (
<Routes>
{routes.map((route, index) => (
<Route key={index} path={route.path} element={route.element}>
{route.children && renderRoutes(route.children)}
</Route>
))}
</Routes>
);
};
export default function App() {
return (
<div>
{renderRoutes(routes)}
</div>
);
}
from selenium import webdriver
import requests
import os
# юзаем хром
driver = webdriver.Chrome()
# ссылка на сайт для примера (может быть временная, поэтому бдим в оба)
driver.get('https://cdndl.zaycev.net/track/24932675/4srdJGcFYp791F9ABjYLyvNgexnUL8z7GFNMQiNEsrSRee43ZHFr7YoijrrsDraGx7sYdrvkXeKCzu8CwmWR5jBtHr5i49hH8LZ21oYQM6NQzzKomzZKtphTL5f6dNqGddRuMCQNeHGHMkY64WvroQwEvattc4FcXXhJFrxecgAwnEuHvUWxonULTacHy2wXrVhQAWGPgeXg7gnxMr5MNQ6wq9k35Lh3Dkrnuac678AgKKFkN4QY9ymyEL5gi7JfiqomuSVTsYDNb4WHrrFk2ixFia5Lq8ZahJmRgCGCPqJ8ny2jykXrQekfAJdC8e9rxL8wUnLMBcpPeGFJyZ1p64U2VptfeY')
# ищем элемент по css селектору
audio_element = driver.find_element_by_css_selector("source[type='audio/mpeg']")
# извлекаем url из элемента
audio_url = audio_element.get_attribute('src')
# качаем файл
response = requests.get(audio_url)
if response.status_code == 200:
# если файл успешно качнули, то сохраняем в downloads (папка downloads уже должна существовать)
with open('downloads/audio.mp3', 'wb') as f:
f.write(response.content)
driver.quit()
import express from 'express';
import cors from 'cors';
import axios from 'axios';
const app = express();
app.use(cors());
app.get('/getBooks', async (req, res) => {
try {
const result = await axios.get('https://www.googleapis.com/books/v1/users/1112223334445556677/bookshelves&key=myKeyApi');
res.json(result.data);
} catch (error) {
console.error(error);
res.status(500).send(error);
}
});
app.listen(4000, () => {
console.log('Proxy server running on http://localhost:4000');
});
{"proxy": "https://www.googleapis.com"}
>
и _
, которые также являются частью Вашей строки bytes
. Коды этих символов (62 и 95) в десятичной системе и являются теми числами, которые вызывали у Вас вопросы.data = b'>\x02\xfe\xbf_\xec\xe6\xee\x00R'
for i in range(len(data)):
hex_repr = '\\x{:02x}'.format(data[i])
print(i, data[i], f"({hex_repr})")
# 0 62 (\x3e)
# 1 2 (\x02)
# 2 254 (\xfe)
# 3 191 (\xbf)
# 4 95 (\x5f)
# 5 236 (\xec)
# 6 230 (\xe6)
# 7 238 (\xee)
# 8 0 (\x00)
# 9 82 (\x52)
Got error selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable: Element is not currently visible and may not be manipulated
Как можно поправить? На экране он виден
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get("example.com")
# находим и кликаем на элемент .SumoSelect
dropdown_container = driver.find_element(By.CSS_SELECTOR, ".SumoSelect")
dropdown_container.click()
# ждем появления элемента li.opt label, но не более 10 сек
option_to_select = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "li.opt label"))
)
# итерируемся по всем option и кликаем, если текст option равен AB
for option in options:
if "AB" == option.text.strip():
option.click()
break
else:
print("Не удалось найти нужную опцию.")
driver.quit()
Почему когда я указываю большие разбиваемого и количества слогаемых,вылетает ошибка:
print(partition(1024,5))
import sys
sys.setrecursionlimit(5000)
def partition(n, k):
stack = [(n, k, [])]
while stack:
current_n, current_k, current_partition = stack.pop()
if current_n == 0 and current_k == 0:
print(" + ".join(map(str, current_partition)))
elif current_n == 0 or current_k == 0:
continue
elif current_n < 0:
continue
else:
for i in range(1, current_n+1):
new_n = current_n - i
new_k = current_k - 1
new_partition = current_partition + [i]
stack.append((new_n, new_k, new_partition))
partition(5, 3)
может-ли флексбокс быть одновременно флексконтейнером
Т.е., есть ли возможность не вставлять в флексбокс новый фл.контейнер
.container (padding-x)
> .row (negative margin-x)
> .col (padding-x)
..flex
> .col
(с одним контейнером) так же, как в Grid layot можно лишь динамическим высчитыванием этих отступов, использую css calc {}
Подмена DNS, Man-in-the-middle attack, Спуфинг
Если роутер захватить развлечений можно много придумать
Какую ответственность несет провайдер в случае взлома?
А провайдер в суде разведет лапки и скажет ну это наши поставщики не обновляли прошивки 7 лет, а мы не при чем.
Так выходит?