Делаю форму регистрации на 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 лет, а мы не при чем.
Так выходит?
$breakpoint_sm: 300px;
$breakpoint_md: 700px;
$breakpoint_xl: 1000px;
@import "breakpoints";
@media screen and (max-width: $breakpoint_md) {
// ...
}
@import "fonts";
@import "breakpoints";
import { FC } from "react";
import { AppProps } from "next/app";
import "./styles/index.scss";
const App: FC<AppProps> = ({ Component, pageProps }) => (
<Component {...pageProps} />
);
export default App;
Но тут видите, мы все равно подключаем
Dmitrijs Balcers "breakpoints"; в BestComponent, а надо без импорта, сразу
:root {
--breakpoint-sm: 300px;
--breakpoint-md: 700px;
--breakpoint-xl: 1000px;
}
@media screen and (max-width: var(--breakpoint-md)) {}
{
test: /\.scss$/,
use: [
"style-loader",
"css-loader",
{
loader: "sass-loader",
options: {
additionalData: `@import "path/breakpoints.scss";`
}
}
]
}
На каком уровне нужно знать react для junior?
Какие есть отдельные важные темы?
<div class="order">
<div class="order__item order__item-number">Номер заказа</div>
<div class="order__item order__item-sum">Сумма</div>
<div class="order__item order__item-status">Статус заказа</div>
<div class="order__item order__item-transport">Транспортная компания</div>
<div class="order__item order__item-description">Описание заказа</div>
<div class="order__item order__item-buttons">Кнопки</div>
</div>
/* desktop */
.order {
display: grid;
grid-template-columns: 1fr 1fr; /* two columns */
}
.order__item {
border: 1px solid black;
padding: 10px;
}
/* first column */
.order__item-number,
.order__item-sum {
grid-column: 1;
background-color: #f2f2f2;
}
/* two column */
.order__item-status,
.order__item-transport,
.order__item-description,
.order__item-buttons {
grid-column: 2;
background-color: #e6e6e6;
}
/* modile */
@media (max-width: 768px) {
.order__item-description {
grid-column: 1 / span 2; /* span two columns */
background-color: #d4d4d4;
}
}
export const getServerSideProps = async (context) => {
const page = context.query.page || 1;
try {
const res = await axios.get(`tracks?page=${page}`);
return {
props: {
tracks: res.data.items,
},
}
} catch (e) {
return {
notFound: true,
}
}
}
export const getStaticProps = async (context) => {
const page = context.params.page;
// code
}