Схоже така поведінка відбувається через те що URL для ajax запитів такий самий як і для запитів без ajax (сервер визначає по заголовкам яку саме сторінку віддавати). Якщо для ajax запитів використовувати інший URL, то такої проблеми не виникає.
Змінив код наступним чином:
function ajaxLinkLoad(event, target) {
var url = target.getAttribute('href');
// Додав в URL параметр ajax
axios.get(url, {params: {ajax: 1}}).then(function (response) {
document.getElmentById('content').innerHTML = response.data;
// А в історію записується звичайний URL без параметра ajax
window.history.pushState(null, null, url);
});
event.preventDefault();
}
У Laravel v10.20 з'явився новий метод createOrFirst(), запропонований Тоні Мессіасом (Tony Messias), який може дещо заплутати, оскільки в Laravel вже був firstOrCreate(). У чому ж полягає різниця?
createOrFirst()
Новий метод createOrFirst() призначений для кращої продуктивності в висококонкурентних середовищах та допомагає зменшити конфлікти, але вимагає наявності унікального індекса в базі даних.
За допомогою createOrFirst ми інвертуємо цей процес і розраховуємо на те, що таблиці мають унікальний індекс. Спочатку ми намагаємося створити запис, і якщо ми отримуємо від бази даних виключення, і встановлюємо, що це порушення унікального індекса, ми намагаємося замість цього знайти відповідний запис. Таким чином, конкурентні процеси можуть розраховувати на характеристики ACID бази даних і більше не турбуватися про цю конфліктну ситуацію.
firstOrCreate()
firstOrCreate був оригінальним методом, і ось як він зараз визначений в документації:
Метод firstOrCreate намагатиметься знайти запис в базі даних за допомогою вказаних пар колонка/значення. Якщо модель не вдасться знайти в базі даних, буде вставлено запис з атрибутами, отриманими в результаті злиття першого аргументу масиву з необов'язковим другим аргументом масиву
Що ще круто в цьому новому методі, так це те, що тепер оригінальний метод firstOrCreate використовує новий метод createOrFirst під капотом. Отже, це відбувається наступним чином:
спроба знайти;
якщо не знайдено, спроба створення;
якщо відбувається порушення унікальності, спроба іншого пошуку через конфліктну ситуацію.
Що використовувати?
Я б сказав, що для більшості програм, оригінальний firstOrCreate підійде, і ви захочете використовувати createOrFirst тільки тоді, коли будете працювати в висококонкурентному середовищі з великими обсягами трафіку.
Я б рекомендував вибирати серед найпопулярніших дистрибутивів: Ubuntu, Mint, Fedora, Manjaro.
Вибирайте яка графічна оболонка вам більше подобається (KDE, Gnome, Mate, Cinnamon, Unity, Pantheon, Xfce) і далі вибирайте з топових дистрибутивів які йдуть з цією оболонкою
Як на мене це і буде оптимальне рішення для даної задачі.
Спочатку обходимо список коментарів і розділяємо їх на 2 групи:
rootComments
) у яких немаєto_comment_id
і з яких почнеться деревоchildComments
) на коментарі де ключto_comment_id
, а значення - це список коментарів зі вказанимto_comment_id
А далі рекурсивно рендеримо дерево коментарів починаючи з кореневих коментарів:
Html віджет коментаря:
Схоже така поведінка відбувається через те що URL для ajax запитів такий самий як і для запитів без ajax (сервер визначає по заголовкам яку саме сторінку віддавати). Якщо для ajax запитів використовувати інший URL, то такої проблеми не виникає.
Змінив код наступним чином:
У Laravel v10.20 з'явився новий метод
createOrFirst()
, запропонований Тоні Мессіасом (Tony Messias), який може дещо заплутати, оскільки в Laravel вже бувfirstOrCreate()
. У чому ж полягає різниця?createOrFirst()
Новий метод
createOrFirst()
призначений для кращої продуктивності в висококонкурентних середовищах та допомагає зменшити конфлікти, але вимагає наявності унікального індекса в базі даних.За допомогою
createOrFirst
ми інвертуємо цей процес і розраховуємо на те, що таблиці мають унікальний індекс. Спочатку ми намагаємося створити запис, і якщо ми отримуємо від бази даних виключення, і встановлюємо, що це порушення унікального індекса, ми намагаємося замість цього знайти відповідний запис. Таким чином, конкурентні процеси можуть розраховувати на характеристики ACID бази даних і більше не турбуватися про цю конфліктну ситуацію.firstOrCreate()
firstOrCreate
був оригінальним методом, і ось як він зараз визначений в документації:Метод
firstOrCreate
намагатиметься знайти запис в базі даних за допомогою вказаних пар колонка/значення. Якщо модель не вдасться знайти в базі даних, буде вставлено запис з атрибутами, отриманими в результаті злиття першого аргументу масиву з необов'язковим другим аргументом масивуЩо ще круто в цьому новому методі, так це те, що тепер оригінальний метод
firstOrCreate
використовує новий методcreateOrFirst
під капотом. Отже, це відбувається наступним чином:Що використовувати?
Я б сказав, що для більшості програм, оригінальний
firstOrCreate
підійде, і ви захочете використовуватиcreateOrFirst
тільки тоді, коли будете працювати в висококонкурентному середовищі з великими обсягами трафіку.В редакторі EasyMDE курсором являється елемент
<div>
з класом.CodeMirror-cursor
. Тому необхідно змінити колір уborder-left
цього елементуЯ б рекомендував вибирати серед найпопулярніших дистрибутивів: Ubuntu, Mint, Fedora, Manjaro. Вибирайте яка графічна оболонка вам більше подобається (KDE, Gnome, Mate, Cinnamon, Unity, Pantheon, Xfce) і далі вибирайте з топових дистрибутивів які йдуть з цією оболонкою
Кожна HTML сторінка починається з тега
<html>
і закінчується закриваючим тегом</html>
Перед тегом
<html>
також необхідно вказати тип документа наступним тегом<!DOCTYPE html>
Приклад веб сторнки
Для сворення маркованого списку використовується тег
<ul>
Приклад маркованого списку
Результат
Для сворення нумерованого списку використовується тег
<ol>
Приклад нумерованого списку
Результат
Тому що вчора вийшла версія
importlib-metadata
v5.0.0, яка видаляє застарілі endpoint'и.Ви можете вказати
importlib-metadata<5.0
у вашому файліsetup.py
, для того, щоб він не встановлював останню версію.Або якщо ви використовуєте файл requirements.txt, ви також можете встановити
importlib-metadata
нижче версії 5.0, наприкладimportlib-metadata==4.13.0
Докладніше можете почитати тут: https://importlib-metadata.readthedocs.io/en/latest/history.html
Для стоврення абзацу використовується тег
<p>
Приклад використання
Результат:
Абзац 1
Абзац 2
Для відображення елементу списка використовуються теги
<li>
Для створення всього списку використовуються наступні теги:
<ul>
- для створення не пронумерованого списку<ol>
- для пронумерованого спискуПриклад не нумерованого списку
Результат
Приклад нумерованого списку
Результат
Для запису назви сторінки використовується тег
<title>
Приклад використання
Підписуйтесь на щотижневу розсилку
Отримуйте найкращі статті тижня на поштуПідписуйтесь на щотижневу розсилку