Alex
Підписатись

Alex

Приєднався: 4 роки тому | 9 Читає   19 Читачів | 2.1K

Адмін сайту

  1. На скільки я знаю, зараз однією з найкращих відкритих мовних моделей є Mistral

    Локально багато мовних моделей можна запустити за допомогою проєку Ollama

    Також можу порекомендувати веб інтерфейс Open WebUI через який можна скачувати і запускати різні мовні моделі.


  2. Я знаю ukraine.com.ua, але я там тримаю тільки українські домени.


  3. В e-ink дисплеях швидкість оновлення екрана доволі низька. В моїй читалці, якій декілька років, сторінка оновлюється доволі повільно що помітно навіть візуально. Відтворювати на ній відео нормально не вийде, буде десь 1 кадр на секунду, а можливо й менше.

    Хоча в сучасніших екранах з цим здається краще, але все одно не дуже швидко. Також часте оновлення екрану погіршить енергоефективність.


  4. Знайшов рішення цієї проблеми на Reddit

    Для цього достатньо сильно подути в отвори біля колеса, це має вирішити проблему.


  5. Якщо проблема програмна, то варто перевірити /var/log/syslog та journalctl, там має бути видно що останнє запускалося.

    Якщо проблема апаратна, то ядро може падати в Kernel panic, для перевірки необхідно підключити монітор і можливо буде зрозуміла причина.


  6. Прибрав expo-router/babel з файлу babel.config.js і все працює.


  7. Знайдіть індекс елемента масиву, який потрібно видалити, за допомогою indexOf, а потім видаліть цей індекс за допомогою splice.

    const array = [2, 5, 9];
    
    console.log(array);
    
    const index = array.indexOf(5);
    if (index > -1) { // only splice array when item is found
      array.splice(index, 1); // 2nd parameter means remove one item only
    }
    
    // array = [2, 9]
    console.log(array); 
    

    Другим параметром splice є кількість елементів, які потрібно видалити. Зауважте, що splice модифікує масив на місці та повертає новий масив, що містить елементи, які було видалено.


  8. Обмеження при створенні статті наступні:

    • Максимальна довжина заголовка: 191 символ
    • Мінімальна довжина тексту: 100 слів
    • Максимальна кількість тегів: 7
    • В тегах забороняється використовувати спецсимволи ([]{}#%^&()=\|/"~) та emoji.

  9. Додумався лише до того щоб записувати вкладені коментарі в Dictionary в якому ключі — це ID коментарів, а значення це List відповідей на коментар.

    Як на мене це і буде оптимальне рішення для даної задачі.

    Спочатку обходимо список коментарів і розділяємо їх на 2 групи:

    1. Список кореневих коментарів (наприклад: rootComments) у яких немає to_comment_id і з яких почнеться дерево
    2. Словник з відповідями (наприклад: childComments) на коментарі де ключ to_comment_id, а значення - це список коментарів зі вказаним to_comment_id

    А далі рекурсивно рендеримо дерево коментарів починаючи з кореневих коментарів:

    // Псевдокод 
    // Обхід кореневих коментарів
    <ul>
    @for(comment in rootComments)
    	// рендеринг віджету з коментарем
    @endfor
    </ul>
    

    Html віджет коментаря:

    <li>тут наш комнетар</li>
    @if(childComments.has(comment.id))
    	<ul>
    		@for(comment in childComments[comment.id])
    			// рекурсивний рендеринг віджету з коментарем
    		@endfor
    	</ul>
    @endif
    

  10. Схоже така поведінка відбувається через те що 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();
    }
    

  11. У Laravel v10.20 з'явився новий метод createOrFirst(), запропонований Тоні Мессіасом (Tony Messias), який може дещо заплутати, оскільки в Laravel вже був firstOrCreate(). У чому ж полягає різниця?

    createOrFirst()

    Новий метод createOrFirst() призначений для кращої продуктивності в висококонкурентних середовищах та допомагає зменшити конфлікти, але вимагає наявності унікального індекса в базі даних.

    За допомогою createOrFirst ми інвертуємо цей процес і розраховуємо на те, що таблиці мають унікальний індекс. Спочатку ми намагаємося створити запис, і якщо ми отримуємо від бази даних виключення, і встановлюємо, що це порушення унікального індекса, ми намагаємося замість цього знайти відповідний запис. Таким чином, конкурентні процеси можуть розраховувати на характеристики ACID бази даних і більше не турбуватися про цю конфліктну ситуацію.

    firstOrCreate()

    firstOrCreate був оригінальним методом, і ось як він зараз визначений в документації:

    Метод firstOrCreate намагатиметься знайти запис в базі даних за допомогою вказаних пар колонка/значення. Якщо модель не вдасться знайти в базі даних, буде вставлено запис з атрибутами, отриманими в результаті злиття першого аргументу масиву з необов'язковим другим аргументом масиву

    Що ще круто в цьому новому методі, так це те, що тепер оригінальний метод firstOrCreate використовує новий метод createOrFirst під капотом. Отже, це відбувається наступним чином:

    • спроба знайти;
    • якщо не знайдено, спроба створення;
    • якщо відбувається порушення унікальності, спроба іншого пошуку через конфліктну ситуацію.

    Що використовувати?

    Я б сказав, що для більшості програм, оригінальний firstOrCreate підійде, і ви захочете використовувати createOrFirst тільки тоді, коли будете працювати в висококонкурентному середовищі з великими обсягами трафіку.


  12. В редакторі EasyMDE курсором являється елемент <div> з класом .CodeMirror-cursor. Тому необхідно змінити колір у border-left цього елементу

    .CodeMirror-cursor {
        border-left: 1px solid rgba(0, 0, 0, .5);
    }
    

  13. Я б рекомендував вибирати серед найпопулярніших дистрибутивів: Ubuntu, Mint, Fedora, Manjaro. Вибирайте яка графічна оболонка вам більше подобається (KDE, Gnome, Mate, Cinnamon, Unity, Pantheon, Xfce) і далі вибирайте з топових дистрибутивів які йдуть з цією оболонкою


  14. Кожна HTML сторінка починається з тега <html> і закінчується закриваючим тегом </html>

    Перед тегом <html> також необхідно вказати тип документа наступним тегом <!DOCTYPE html>

    Приклад веб сторнки

    <!DOCTYPE html>
    <html>
    ...
    </html>
    

  15. Для сворення маркованого списку використовується тег <ul>

    Приклад маркованого списку

    <ul>
        <li>Рядок 1</li>
        <li>Рядок 2</li>
    </ul>
    

    Результат

    • Рядок 1
    • Рядок 2

  16. Для сворення нумерованого списку використовується тег <ol>

    Приклад нумерованого списку

    <ol>
        <li>Рядок 1</li>
        <li>Рядок 2</li>
    </ol>
    

    Результат

    1. Рядок 1
    2. Рядок 2

  17. Тому що вчора вийшла версія 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


  18. Для стоврення абзацу використовується тег <p>

    Приклад використання

    <p>Абзац 1</p>
    <p>Абзац 2</p>
    

    Результат:

    Абзац 1

    Абзац 2


  19. Для відображення елементу списка використовуються теги <li>

    Для створення всього списку використовуються наступні теги:

    • <ul> - для створення не пронумерованого списку
    • <ol> - для пронумерованого списку

    Приклад не нумерованого списку

    <ul>
    	<li>Рядок 1</li>
    	<li>Рядок 2</li>
    </ul>
    

    Результат

    • Рядок 1
    • Рядок 2

    Приклад нумерованого списку

    <ol>
    	<li>Рядок 1</li>
    	<li>Рядок 2</li>
    </ol>
    

    Результат

    1. Рядок 1
    2. Рядок 2

  20. Для запису назви сторінки використовується тег <title>

    Приклад використання

    <html>
    	 <head>
    		 <title>Заголовок сторінки</title>
    	 </head>
    	 <body>
    		 Тіло сторінки
    	 </body>
    </html>
    

  21. Для зміни відображення тексту можуть використовуватись наступні теги:

    • <i> - курсив
    • <b> - жирний текст
    • <u> - підкреслений
    • <del> - перекреслений текст
    Текст з <i>курсивом</i> <b>жирний шрифт</b> <u>підкреслений</u> та <del>перекреслений</del>
    

    Текст курсивом жирний шрифт підкреслений та перекреслений


  22. Для показу зображень використовується тег <img>

    Приклад використання

    <img src="https://example.com/image.jpg" alt="Зображення 1" />
    

    Де

    • src - шлях до зображення
    • alt - альтернативний опис зображення, буде виведений якщо не вдастся вивести зображення

  23. Тег <table> використовуєтся для створення таблиць

    Приклад використання

    <table>
      <thead>
        <tr>
          <th>Column 1</th>
          <th>Column 2</th>
          <th>Column 3</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>Text</td>
          <td>Text</td>
          <td>Text</td>
        </tr>
      </tbody>
    </table>
    

    Результат

    Column 1 Column 2 Column 3
    Text Text Text

  24. Поки що додав такий код в блок даних, які повертаються по ajax

    <script> 
    if(!document.querySelector('title')) { 
        window.location.reload(); 
    } 
    </script>
    

    Тепер сторінка оновлюється після відкриття браузера.

    Але як зробити правильно, все ще не знайшов.