let turf = require('@turf/turf');
let polygon1 = turf.polygon([[[0,0], [0,1], [1,1], [1,0], [0,0]]]);
let polygon2 = turf.polygon([[[0.5,0.5], [0.5,1.5], [1.5,1.5], [1.5,0.5], [0.5,0.5]]]);
// С помощью booleanIntersects можно понять что есть пересечения полигонов
if (turf.booleanIntersects(polygon1, polygon2)) {
let merged = turf.union(polygon1, polygon2);
console.log(merged)
} else {
console.log('Полигоны не пересекаются');
}
$text = $_POST['name'];
$work = $_POST['work'];
$result = 'Пришло сообщение!! ' . '<br>От: ' . $text . '<br>Что нужно: ' . $work;
// Убедитесь, что все символы в $result корректно закодированы для использования в URL
$result_encoded = urlencode($result);
$sendToTelegram = fopen("http://api.telegram.org/bot##################/sendMessage?chat_id=##########&parse_mode=html&text={$result_encoded}", "r");
const template = {
d: "какие то слова к которым не нужно привязываться, главное что бы был ключ d",
m: "Числовое целое поле"
};
function validateAgainstTemplate(obj, template) {
let keys = Object.keys(obj);
for (let key of keys) {
if (!template.hasOwnProperty(key)) return false; // если в шаблоне нет такого ключа
if (key === "m" && obj[key] !== 1) return false; // если значение ключа m не равно 1
}
return true; // если все проверки пройдены
}
let testObj1 = {
d: "слово",
m: 1
};
let testObj2 = {
d: "слово",
m: 23,
s: "слово 2"
};
console.log(validateAgainstTemplate(testObj1, template)); // true
console.log(validateAgainstTemplate(testObj2, template)); // false
let counter = 0;
const doRequest = () => {
// Увеличиваем счетчик
counter++;
// Выполняем запрос
fetch('https://your-request-url.ru')
.then(response => response.json())
.then(data => {
console.log(data);
// Если счетчик меньше 5, устанавливаем таймер для следующего запроса
if (counter < 5) {
setTimeout(doRequest, 5000); // Устанавливаем задержку в 5 секунд
}
})
.catch(error => console.error(error));
};
// Начинаем выполнение
doRequest();
let strDate = "May 2021";
let dateToCheck = new Date(strDate);
let currentDate = new Date();
// Обнуляем время, чтобы сравнение было только по дате (день, месяц, год)
dateToCheck.setHours(0,0,0,0);
currentDate.setHours(0,0,0,0);
if(dateToCheck.getTime() < currentDate.getTime()){
console.log("Дата уже прошла");
} else {
console.log("Дата еще не наступила");
}
{
"policies": {
"Extensions": {
"Install": ["https://addons.mozilla.org/firefox/downloads/file/3579254/ublock_origin-1.37.2-an+fx.xpi"],
"Locked": ["uBlock0@raymondhill.net"]
}
}
}
const codecs = {
'ogg': 'libopus',
'mp3': 'libmp3lame',
'flac': 'flac',
'aac': 'aac',
// другие форматы и кодеки...
};
async function convertTo(inputPath, outputPath) {
return await new Promise((resolve, reject) => {
const format = outputPath.substring(outputPath.lastIndexOf('.') + 1);
const codec = codecs[format];
if (!codec) {
reject(new Error(`Кодек для формата "${format}" не найден`));
return;
}
ffmpeg(inputPath)
.audioCodec(codec)
.toFormat(format)
.on('error', (err) => {
reject(err);
})
.on('end', () => {
console.log('Успешная конвертация');
resolve();
})
.save(outputPath)
})
}
// Создание собственного класса исключения
class MyException extends Exception {}
// Бросаем исключение
throw new MyException('Сообщение об ошибке');
// Обработка исключения в Handler.php
public function render($request, Throwable $e)
{
if ($e instanceof MyException) {
return response()->json(['error' => $e->getMessage()], 400);
}
return parent::render($request, $e);
}
INSERT INTO goals (ID_матча, ID_стадиона, ID_команды, ID_игрока, Время)
VALUES
(9, 1, 1, 1, DATEADD(SECOND, RAND()*(86400), '00:00:00')),
(10, 2, 2, 2, DATEADD(SECOND, RAND()*(86400), '00:00:00')),
(11, 3, 3, 3, DATEADD(SECOND, RAND()*(86400), '00:00:00')),
(12, 4, 4, 4, DATEADD(SECOND, RAND()*(86400), '00:00:00')),
(13, 5, 5, 5, DATEADD(SECOND, RAND()*(86400), '00:00:00')),
(14, 6, 6, 6, DATEADD(SECOND, RAND()*(86400), '00:00:00')),
(15, 7, 7, 7, DATEADD(SECOND, RAND()*(86400), '00:00:00'))
$limit = 10; // количество записей на одну страницу
$page = $_GET['page']; // получаем номер страницы из URL
$offset = ($page - 1) * $limit;
// получаем параметры выбора пользователя
$param1 = $_GET['param1'];
$param2 = $_GET['param2'];
$param3 = $_GET['param3'];
// подготавливаем и выполняем запрос
$stmt = $pdo->prepare('SELECT * FROM my_table WHERE column1 = :param1 AND column2 = :param2 AND column3 = :param3 LIMIT :limit OFFSET :offset');
$stmt->bindValue(':param1', $param1);
$stmt->bindValue(':param2', $param2);
$stmt->bindValue(':param3', $param3);
$stmt->bindValue(':limit', $limit, PDO::PARAM_INT);
$stmt->bindValue(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
public function index() {
$items = Item::all();
return response()->json($items);
}
// api.php
Route::get('/items', 'ItemController@index');
// ItemSelect.vue
<template>
<select v-model="selectedItem">
<option v-for="item in items" :key="item.id" :value="item.id">
{{ item.name }}
</option>
</select>
</template>
<script>
export default {
data() {
return {
items: [],
selectedItem: null
}
},
mounted() {
this.fetchItems();
},
methods: {
fetchItems() {
axios.get('/api/items')
.then(response => {
this.items = response.data;
})
.catch(error => {
console.error(error);
});
}
}
}
</script>
$query = "SELECT id, pid, name FROM your_table";
$result = $mysqli->query($query);
$items = [];
while($row = $result->fetch_assoc()){
$items[$row['id']] = ['pid' => $row['pid'], 'name' => $row['name']];
}
function buildTree(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['pid'] == $parentId) {
$children = buildTree($elements, $element['id']);
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$tree = buildTree($items);
$string = '[480p]\/storage\/458f706a\/hls\/stream_2.m3u8,[720p]\/storage\/458f706a\/hls\/stream_1.m3u8,[1080p]\/storage\/458f706a\/hls\/stream_0.m3u8';
preg_match_all('/([^,]+)/', $string, $matches);
print_r($matches[0]);
Array
(
[0] => [480p]\/storage\/458f706a\/hls\/stream_2.m3u8
[1] => [720p]\/storage\/458f706a\/hls\/stream_1.m3u8
[2] => [1080p]\/storage\/458f706a\/hls\/stream_0.m3u8
)