Я просто не понимаю откуда берётся Providers в пути автозагрузкимодель расположена в нестандартном месте
App\Providers\Modelsот этой модели вызывается метод factory который относится к трейту HasFactory, там вызывается
class GameFactory extends Factory
{
protected $model = \App\Providers\Models\Game::class;
...
public function boot(): void {
// ...
Factory::guessFactoryNamesUsing(function(string $modelName) {
return 'Database\\Factories\\' . class_basename($modelName) . 'Factory';
});
}
<select id="secondsSelect">
<option value="">Выберите секунды</option>
</select>
const select = document.getElementById('secondsSelect');
for (let i = 1; i <= 60; i++) {
const option = document.createElement('option');
option.value = i;
option.textContent = i + (i === 1 ? ' секунда' : ' секунд');
select.appendChild(option);
}
->withMiddleware(function (Middleware $middleware) {
$middleware->alias([
'role' => \Spatie\Permission\Middleware\RoleMiddleware::class,
]);
})
на сервер условное сообщение "disconnected"
<?php
namespace App\Providers;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
class MyRouteServiceProvider extends ServiceProvider
{
/**
* The path to your application's "home" route.
*
* Typically, users are redirected here after authentication.
*
* @var string
*/
public const HOME = '/laravel/home';
public function boot(): void
{
$this->routes(function () {
Route::middleware('laravel')
->prefix('laravel')
->group(base_path('routes/laravel.php'));
});
}
}
'providers' => ServiceProvider::defaultProviders()->merge([
/*
* Application Service Providers...
*/
App\Providers\MyRouteServiceProvider::class,
])->toArray(),
Почему-то ничего не выводит, если вводишь диапазон дат для Козерога.
$birthday >= (int)date('z', mktime(0, 0, 0, 12, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 1, 19, $currentYear))для даты 1991-12-22 будет выглядить так: 358 >= 356 И 358 <= 18
case ($birthday >= (int)date('z', mktime(0, 0, 0, 12, 22, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 12, 31, $currentYear))):
echo "Козероги: $horoscopes[Козероги]";
break;
case ($birthday >= (int)date('z', mktime(0, 0, 0, 1, 1, $currentYear)) && $birthday <= (int)date('z', mktime(0, 0, 0, 1, 19, $currentYear))):
echo "Козероги: $horoscopes[Козероги]";
break;
function getZodiacSign($date) {
$zodiacSigns = [
['Козерог', '01-01', '01-19'],
['Водолей', '01-20', '02-18'],
['Рыбы', '02-19', '03-20'],
['Овен', '03-21', '04-19'],
['Телец', '04-20', '05-20'],
['Близнецы', '05-21', '06-20'],
['Рак', '06-21', '07-22'],
['Лев', '07-23', '08-22'],
['Дева', '08-23', '09-22'],
['Весы', '09-23', '10-22'],
['Скорпион', '10-23', '11-21'],
['Стрелец', '11-22', '12-21'],
['Козерог', '12-22', '12-31']
];
$birthDate = date('m-d', strtotime($date));
foreach ($zodiacSigns as $sign) {
// Тут 0, 1, 2 не очень хороший код, можешь улучшить его самостоятельно, для примера сойдет
if ($birthDate >= $sign[1] && $birthDate <= $sign[2]) {
return $sign[0];
}
}
return null;
}
if (isset($_GET['birthday'])) {
if ($_GET['birthday'] === '') {
echo 'Вы не выбрали дату рождения!';
} else {
$res = getZodiacSign($_GET['birthday']);
echo $horoscopes[$res] ?? "error";
}
}
$('.nextstep .next')- вернет все html элементы с такими классами
$(document).ready(function() {
// проходим наши элементы циклом
$('.nextstep .next').each(function(i, obj) {
// проверяем условия для каждого элемента отдельно
if ($(obj).hasClass('active')) {
// применяем классы к соответствующему спану
$(obj).find('span').addClass('yes');
} else {
$(obj).find('span').addClass('no');
};
});
});
data-passwordrepeat="Проверьте правильность пароля"
...
const passwordMessage = _element.dataset.password;
const passwordMessageRepeat = _element.dataset.passwordrepeat;
...
if(passwordMessage) {
this.checkPassword(_element, passwordMessage, successMessage);
}
if(passwordMessageRepeat) {
this.checkPassword(_element, passwordMessage, successMessage);
this.matchingPasswords(passwordMessage, successMessage);
}
...
this.checkPassword = function (_element, message, successMessage) {
const passwordRegExp = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
const checkPassByRegExp = passwordRegExp.test(_element.value);
if (!checkPassByRegExp) {
this.createErrorTemplate(_element, message);
} else {
this.createSuccessTemplate(_element, successMessage);
}
}
this.matchingPasswords = function (message, successMessage) {
const allPasswords = _form.querySelectorAll('input[type="password"]');
const arrPasswordValues = Array.from(allPasswords).map(item => item.value.trim());
const checkPassByUniqueness = new Set(arrPasswordValues).size === 1;
if (!checkPassByUniqueness) {
allPasswords.forEach((value) => this.createErrorTemplate(value, message));
} else {
allPasswords.forEach(value => this.createSuccessTemplate(value, successMessage));
}
}
this.createErrorTemplate = function (_element, message) {
const parent = _element.closest(`.${labelClass}`);
parent.classList.add(errorClass);
parent.classList.remove(successClass);
parent.querySelectorAll(`.${errorItemClass}, .${successItemClass}`).forEach(item => item.remove());
parent.insertAdjacentHTML('beforeend', `<small class=${errorItemClass}>${message}</small>`);
}
this.createSuccessTemplate = function (_element, message) {
const parent = _element.closest(`.${labelClass}`);
if (parent) {
parent.classList.add(successClass);
parent.classList.remove(errorClass);
parent.querySelectorAll(`.${errorItemClass}, .${successItemClass}`).forEach(item => item.remove());
parent.insertAdjacentHTML('beforeend',`<small class=${successItemClass}>${message}</small>`)
}
}
App\Http\Middleware
php artisan cache:clear
composer dump-autoload
->withMiddleware(function (Middleware $middleware) {
...
$middleware->alias([
'admin' => App\Http\Middleware\CheckAdminMiddleware::class
]);
})
_city_search_name.addEventListener('change', searchCity);
_city_search_name.addEventListener('keyup', searchCity);
_city_search_name.addEventListener('input', searchCity);
=FILTER('Параметры'!B2:C; 'Параметры'!A2:A = D3; 'Параметры'!H2:H >= D4; 'Параметры'!H2:H <= F4)
пусть a, b, c - номиналы монет, x, y, z - количество монет каждого номинала и e - сумма которую нужно набрать. Получается выражение x * a + y * b + z * c = e.
как убедиться что я получу наибольшее количество
// Входные параметры
const a = 1;
const b = 2;
const c = 5;
const x = 3;
const y = 2;
const z = 2;
const e = 7;
// Отсекаем лишнее
let params = [];
if (getEntryNominal(c, e) >= 1) {
params.push({
'count': z,
'nominal': c
});
}
if (getEntryNominal(b, e) >= 1) {
params.push({
'count': y,
'nominal': b
});
}
if (getEntryNominal(a, e) >= 1) {
params.push({
'count': x,
'nominal': a
});
}
let count = 0;
const N = getN(a, b, c, x, y, z);
if (N === e) {
count = 1;
} else {
count = getCombinationsAll(params, e)
}
console.log(count);
function getN(a, b, c, x, y, z) {
return x * a + y * b + z * c;
}
function getEntryNominal(nominal, e) {
return Math.floor(e / nominal);
}
function getCombinationsAll(params, e) {
let Q = 0;
let combinations = [];
let maxLength = parseInt() + parseInt(params[1]?.count) + parseInt((params[2])?.count ?? 0);
const iM = (params[0]?.count ?? 0);
const jM = (params[1]?.count ?? 0);
const kM = (params[2]?.count ?? 0);
let i = iM;
let j = jM;
let k = kM;
let a = (params[0]?.nominal ?? 0);
let b = (params[1]?.nominal ?? 0);
let c = (params[2]?.nominal ?? 0);
// Вычисляем количество всех возможных комбинаций из которых получается e
while (i + j + k > 0) {
let bufE = getN((params[0]?.nominal ?? 0), (params[1]?.nominal ?? 0), (params[2]?.nominal ?? 0), i, j, k);
if (bufE === e) {
let obj = {};
obj[a] = i;
obj[b] = j;
obj[c] = k;
combinations.push(obj);
}
k--;
if (k < 0) {
j--;
k = kM;
}
if (j < 0) {
i--;
j = jM;
}
if (i < 0) {
i = 0
}
}
console.log(combinations);
// составим список сочитаемых комбинаций
let combComb = [];
for (w = 0; w < combinations.length; w++) {
i = iM;
j = jM;
k = kM;
combComb[w] = [];
for (v = 0; v < combinations.length; v++) {
if (
i - combinations[v][a] >= 0
&& j - combinations[v][b] >= 0
&& k - combinations[v][c] >= 0
) {
i -= combinations[v][a];
j -= combinations[v][b];
k -= combinations[v][c];
combComb[w].push(combinations[v]);
}
}
}
// ищем максимальное количество комбинаций
for (w = 0; w < combComb.length; w++) {
if (combComb[w].length > Q) {
Q = combComb[w].length;
}
}
console.log(combComb);
return Q;
}
ls -l|grep '^-'|awk '{if(a[$5]){ a[$5]=a[$5]"\n"$NF; b[$5]++;} else a[$5]=$NF} END{for(x in b)print a[x];}'
ls -lR | grep '^-' | awk '{
f = "";
if (NF > 9)
for (i = 9; i <= NF; i++)
f = f ? f" "$i : $i;
else
f = $9;
if (a[$5]) {
a[$5] = a[$5]"\n"$5" "f;
b[$5]++;
} else {
a[$5] = $5" "f
}
}
END {
for (x in b)
print a[x];
}'
...
<div class="menu">
<div class="toggle-hidden">
</div>
<div class="toggle">
...
.toggle-hidden {
content: '';
display: block;
width: 65px;
height: 65px;
z-index: 10000;
overflow: hidden;
position: absolute;
background: linear-gradient(45deg, #8460ed, #ff1252); // даем цвет чтобы спрятать ненужное
background-size: 200% 200%; // тут можно поиграться с циферками
background-position: calc(50% - 65px/2) calc(50% - 65px/2); // чтобы цвета больше совпадали с боди
border-radius: 50%;
}
ion-icon {
color: white;
transform: rotate(calc(-360deg / 8 * var(--i)));
display: inline-block;
}
(date('W') - date('W', strtotime('first day of this month')) + 1)
date('W')