2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of this License; and
You must cause any modified files to carry prominent notices stating that You changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
if (__DEV__) {
console.warn('Some warning message');
}
У меня есть сайт, на котором появляются товары, под каждый товар создаётся страница.
Через определенное время, этот товар может быть удалён, а поисковый робот эту страницу уже просканирует и при повторном посещении в Вебмастере и в Гугл Консоли будут ошибки о несуществующих страницах.
Как правильно настроить этот момент для SEO, чтобы не было проблем с поисковой оптимизацией ?
<?php
/**
* Plugin Name: Чумовой плагин
* Description: Это плагин, твердо и четко!
*/
if(!defined('ABSPATH')) {
exit;
}
class Best_Plugin {
protected $menu_slug = 'best-plugin';
public function __construct() {
// добавление страницы с пунктом меню
add_action('admin_menu', [$this, 'add_admin_page']);
// добавление ссылки на настройки плагина в списке плагинов
add_filter(
'plugin_action_links_' . plugin_basename(__FILE__),
[$this, 'add_settings_link']
);
}
// страница, любое содержимое страницы, обычно это винегрет из html/js/php
public function add_page() {}
// добавление страницы с пунктом меню
public function add_admin_page() {
add_options_page(
'Страница чумового плагина',
'Чумовой плагин',
'manage_options',
$this->menu_slug,
[$this, 'add_page'],
1
);
}
// добавление ссылки на настройки в списке плагинов
public function add_settings_link($links) {
$settings_link = "<a href=\"options-general.php?page={$this->menu_slug}\">Настройки чумового плагина</a>";
array_unshift($links, $settings_link);
return $links;
}
}
new Best_Plugin();
$ pm2 start app.py --name "app-name" --interpreter python3 --restart-delay 1000 --max-restarts 10
$ pm2 save
$ pm2 startup
import React, {useState, useEffect} from 'react';
function SuperComponent() {
// хранилище для пунктов
const [checkedLanguages, setCheckedLanguages] = useState([]);
const [displayData, setDisplayData] = useState([]);
const languagesData = [
{ id: "1", name: "Javascript" },
{ id: "2", name: "Python" },
{ id: "3", name: "Java" },
{ id: "4", name: "Kotlin" },
{ id: "5", name: "Dart" },
{ id: "6", name: "C#" }
];
// фильтруем пункты
useEffect(() => {
if (checkedLanguages.length > 0) {
const newData = languagesData.filter(language => checkedLanguages.includes(language.name));
setDisplayData(newData);
} else {
setDisplayData(languagesData);
}
}, [checkedLanguages]);
function handleCheckboxChange(event) {
const languageName = event.target.value;
if (event.target.checked) {
setCheckedLanguages([...checkedLanguages, languageName]);
} else {
const newCheckedLanguages = checkedLanguages.filter(language => language !== languageName);
setCheckedLanguages(newCheckedLanguages);
}
}
return (
<div>
{checkedLanguages.map(language => (
<div key={language} className="selected-language">
<p>{language}</p>
</div>
))}
{languagesData.map(language => (
<div key={language.id} className="checkbox-wrapper">
<input
type="checkbox"
value={language.name}
onChange={handleCheckboxChange}
/>
<label>{language.name}</label>
</div>
))}
// отображаем отфильтрованные пункты
<div className="languages-list">
{displayData.map(language => (
<div key={language.id}>
{language.name}
</div>
))}
</div>
</div>
);
}
export default SuperComponent;
Да и по остальным моментам опыта и знаний 0
import requests
TOKEN = 'token'
OWNER_ID = 'user_or_group_id'
POST_ID = 'post_id'
res = requests.get(
'https://api.vk.com/method/wall.getComments',
params = {
'owner_id': OWNER_ID,
'post_id': POST_ID,
'access_token': TOKEN,
'v': '5.130'
}
)
comments = res.json()
спарсить комментарии со всех постов
сложить в один файл, преобразовав в вид ссылки
удалить дубликаты
рандомно выбрать 1 победителя, среди комментариев
парсить по ключевому слову "участвую"
что бы программа сама открыла ссылку победителя и отправила сообщение мол "вы победили"
Какие есть ещё способы обхода блокировки?
Возможно ли из класса-потомка получить класс-родитель?
from dataclasses import dataclass
import typing
import io
# Определение базового класса для хранения информации о файле и ID объекта
@dataclass
class EjectedObjectDataFileNameAndObjectID:
file_name: str # Имя файла
object_id: int # ID объекта
# Определение класса для хранения изображений
@dataclass
class EjectedObjectDataImages:
images: typing.List[io.BytesIO] # Список изображений в формате BytesIO
# Класс, наследующий оба вышеуказанных класса и добавляющий дополнительные атрибуты
@dataclass
class EjectedObjectData(EjectedObjectDataImages, EjectedObjectDataFileNameAndObjectID):
uuid: str # Уникальный идентификатор
position: typing.Tuple[int, int] = (0, 0) # Позиция объекта (по умолчанию (0, 0))
sorted: bool = False # Флаг, указывающий, отсортирован ли объект (по умолчанию False)
# Метод для создания экземпляра родительского класса из текущего экземпляра
def to_parent(self) -> EjectedObjectDataFileNameAndObjectID:
# Возвращаем новый экземпляр EjectedObjectDataFileNameAndObjectID,
# используя атрибуты текущего экземпляра
return EjectedObjectDataFileNameAndObjectID(self.file_name, self.object_id)
# Пример использования:
# Создаем экземпляр EjectedObjectData
data = EjectedObjectData(["image1", "image2"], "some_file", 123, "some_uuid")
# Получаем экземпляр родительского класса из экземпляра потомка
parent_data = data.to_parent()
# Выводим информацию о родительском классе
print(parent_data)
Я не знаю с какой стороны уже подступиться и как делать такой эффект. Я пробовал вешать position: sticky на блок и определять высоту родительского блока. Но это работает при медленном скролле, при быстром блок пролетает не успевая закончить слайдер.
Но всё оказалось не так как я предполагал и многие пишут, что джуны-программисты должны работать в офисе.
Может всё-таки можно найти удалённую работу в разработке ну или хотя бы в принципе в IT за более менее человеческую плату
Each child in a list should have a unique "key" prop
// ..
{items.map((i) => (
<React.Fragment key={i.id}>
<Item {...i}/>
</React.Fragment>
))}
// ..
// ..
{items.map((i) => (
<Item key={i.id} {...i}/>
))}
// ..
Содержимое сайтов будет практически одинаковым (каталог, цены).
Как пример, есть сайты:
spb.vorota-group.ru
vorota-group.ru
Они отлично ранжируются в своих регионах. Как мне сделать так же? Я в замешательстве.
Может ли метатег h2 идти сразу после h1?