Останні коментарі

  1. Не зовсім те, здається все ще не зрозуміло пояснив.

    На JS не потрібно додатково підтягувати сторінку, це реалізовано на бекенді. Якщо відкривати сторінку в браузері (без ajax), бекенд рендерить повністю всю сторінку яка запитується по вказаному URL. Якщо ж ми з JS робимо ajax запит, тоді бекенд замість повної сторінки повертає лише частину з контентом, який відповідно замінює блок зі старим контентом і міняє URL через pushState.

    Так реалізована вся навігація на DevZone. Ось такий результат приходить від бекенда на ajax запит

    В цей же блок я і додав js який оновлює сторінку якщо немає title, цей хак, в принципі, розв'язує проблему, але не зовсім гарно.

    Без ajax повертається повна сторінка

    І ця проблема виникає лише якщо відкрити сайт, далі перейти по посиланню яке завантажить іншу сторінку по ajax, закрити браузер і після повторного відкриття браузера на цій вкладці замість повної сторінки буде лише частина html з контентом, який був повернутий останнім ajax запитом.

  2. О, це вже значно краще. Тепер залишилось замінити текст у початковому запитанні. Я пішов туди відповідати.

  3. Сторінка виглядає приблизно таким чином

    <html>
        <body>
            <div>
                Блок який постійно залишаються на сторінці
                <a href="/path" class="ajax">отримати дані по ajax і записати в блок #content</a>
            </div>
            <div id="content">
                дані в цьому блоці замінюються ajax запитом
            </div>
            <div>
                Блок який постійно залишаються на сторінці
            </div>
        </body>
    </html>
    

    І JS код

    window.addListenter('click', '.ajax', ajaxLinkLoad);
    
    function ajaxLinkLoad(event, target) {
        var url = target.getAttribute('href');
    
        axios.get(url).then(function (response) {
            document.getElmentById('content').innerHTML = response.data;
            window.history.pushState(null, null, url);
        });
        event.preventDefault();
    }
    

    Він працює як потрібно, при кліці на посилання отримуються дані по ajax і записуються в блок #content, через pushState також змінюється URL.

    Але якщо закрити браузер, а потом відкрити, на сторінці буде лише частина html коду яка була в блоці #content

    Сподіваюся я зрозуміло пояснив.

    PS. В момент відкриття браузера запит на сервер не відсилається, я перевіряв. Це саме браузер так відновлює сторінку залишаючи на ній лише ту частину що була отримана в останньому запиті.

  4. Питання потрібно спростити і доповнити. Не чітко зрозуміло що є, і що повинно бути на сторінці.

  5. Цього я також, ще не зробив

    Оскільки ви помітили, то доведеться виправити 😄

  6. Щойно змінив коментар, мені видалось повідомлення, що коментар змінено, але зразу цього не показало. Прийшлось перезавантажувати сторінку щоб побачити зміни.

  7. Це баг. Забув додати оповіщення до цього розділу :)

    Виправлю.

  8. До речі, лист не прийшов про ваш коментар. Це баг чи фіча?

  9. Це ви про мене? То не я на відео.

    В цьому розділі я поширюю цікаві матеріали які знаходжу.

  10. Ага, так ось хто такий Alex ))

  11. Виправив обрізку тегів, тепер в блоках з кодом нічого не має обрізатися.

  12. Проблема в не тільки в тому що конструктор видаляється. Вона ще і в тому, що AOT не може генерувати код в рантаймі(Reflection.Emit), а це прямо необхідна штука для нормальної швидкодії. Є контейнери які можуть працювати з АОТ і без Reflection.Emit, але вони не такі зручні як звичайні. Наприклад, Splat(https://github.com/reactiveui/splat) він працює за рахунок того, що розробник повиннен самостійно передати делегат який створить інстанс. Це виглядає наступним чином:

    Locator.CurrentMutable.Register(() => new Toaster(Locator.Current.Resolve()), typeof(IToaster));

    P.S. Помітив що обрізаються < >. @Admin, ти вкурсі про це?)

  13. Дякую за пояснення. Якщо суть в тому, що AOT викидає конструктори, то чи не можна реєструвати залежності викликаючи new самостійно і обійтись вже існуючими IoC контейнерами і без кодогенераціі?

  14. Тут більша проблема Reflection.Emit. На AOT платформах він відсутній як класс.

    В Xamarin є режим AOT компіляції і лінковка під час якої викидують методи/класси/збірки. В результаті, може виявитися що конструктор сервісу, який зареєстрований в звичайному ІоС контейнері, був просто викинутить оскільки ніхто явно його не визивав. Всі ці оптимізації можуть значно покращити швидкість холодного старту. https://docs.microsoft.com/en-us/xamarin/mac/internals/aot

    https://docs.microsoft.com/en-us/xamarin/android/deploy-test/linker

    В Unity є IL2CPP (Intermediate Language To C++) - це штука яка компілить IL код в С++ і потім білдить його уже як С++ застосунок. Цей спосіб вимушені міра, оскільки iOS дозволяє тільки AOT компіляцію от вони і викручуються.

    https://docs.unity3d.com/Manual/IL2CPP.html

  15. А які проблеми з рефлексією в Xamarin, Unity?

  16. Nice catch! Здається воно залишилось після моїх старих експереметнів. Звідти уже нічого не використовується. Запустив cleanup всього проекту щоб прибрати подібні штуки.

  17. Пригадалося:

    • скільки часу потрібно кожен день медитувати?
    • хоча б хвилин 15-20
    • а якщо дуже зайнятий та не має часу?
    • тоді мінімум годину :)

    ПС дякую за статтю.

  18. Я питав про пряме чи автоматичне копіювання без зайвих рухів.

  19. Непогане видиво про Юнікод: https://www.youtube.com/watch?v=MijmeoH9LT4

  20. Кому ліньки вибирати чи самому налаштовувати Oh-My-Zsh тему: я був зробив (трохи покращений) відповідник класичної теми bash -- https://gist.github.com/bebyx/38ce753760f4f3a71e56dc081e64aa8e

    Також, надибав гламурний плаґін для ZSH автозаповнення: https://starship.rs/

    • yadm
    • tmux
    • bat (cat)
    • vimfm
    • tree
    • i3
    • rofi
    • sox
    • mpv
    • cmus
    • espeak
    • lolcat
    • gh
  21. Так, ви праві. Виправлено.

  22. Гарно, що є стаття про юнікод українською. Тільки виправте "БМЯП", бо це мабуть російською.