Pull to refresh
3
0
Send message

Попробуйте включить рамки окон в настройках

Hidden text

Нашел вот такие данные

выборка всего из 299 человек, но думаю общую картину отражает https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

Может потому что на чистом текстовом wat мало кто захочет писать, а бинарный wasm обычно компилируют из более привычных C/C++/Rust/etc

Тогда делаем следующие:

  • перед запуском колбэка удаляем эффект из всех подписок

  • вызываем колбэк, что приведет к подписке только у актуальных сигналов (реактивных переменных)

  • дополнительно: ограничиваем запуск эффекта, если не было изменения ни одной из переменных (внутри эффекта мы все равно можем только читать значения)

let currentEffect = null
let globalWriteCount = 1
const effectsMap = new Map()

function createSignal(initialValue) {
  let value = initialValue
  const subscribers = new Set()

  const read = () => {
    if (currentEffect) {
      subscribers.add(currentEffect)

      let effectsList = effectsMap.get(currentEffect)
      if (!effectsList) {
        effectsList = new Set()
        effectsMap.set(currentEffect, effectsList)
      }

      effectsList.add(subscribers)
    }
    return value
  }

  const write = (newValue) => {
    if (newValue === value) return

    value = newValue
    globalWriteCount += 1
    subscribers.forEach((fn) => fn())
  }

  return [read, write]
}

function createEffect(callback) {
  let writeCount = 0

  const effect = () => {
    if (writeCount === globalWriteCount) return

    writeCount = globalWriteCount
    currentEffect = effect
    const effectsList = effectsMap.get(effect)

    if (effectsList) {
      for (const subscribers of effectsList) {
        subscribers.delete(effect)
      }
    }

    callback()
    currentEffect = null
  }

  effect()

  return () => {
    const effectsList = effectsMap.get(effect)

    if (effectsList) {
      for (const subscribers of effectsList) {
        subscribers.delete(effect)
      }
      effectsMap.delete(effect)
    }
  }
}

Уже почти появился в виде structuredClone
Может лет через пять допилят до вида deepCopy и уберут существующие ограничения у structuredClone

Я все же придумал как отписаться от эффекта

let currentListener
const effectsMap = new Map()

function createSignal(initialValue) {
  let value = initialValue
  const subscribers = new Set()

  const read = () => {
    if (currentListener) {
      subscribers.add(currentListener)
      
      let effectsList = effectsMap.get(currentListener)
      if (!effectsList) {
        effectsList = new Set()
        effectsMap.set(currentListener, effectsList)
      }

      effectsList.add(subscribers)
    }
    return value
  }

  const write = (newValue) => {
    value = newValue
    subscribers.forEach((fn) => fn())
  }

  return [read, write]
}

function createEffect(callback) {
  const effect = () => {
    currentListener = effect
    callback()
    currentListener = undefined
  }
  effect()
  
  return () => {
    const effectsList = effectsMap.get(effect)
    
    if (effectsList) {
      for (const subscribers of effectsList) {
        subscribers.delete(effect)
      }
      effectsMap.delete(effect)
    }
  }
}

Использование

const revomeEffect = createEffect(() => {
  counter.textContent = count()
})

// later
revomeEffect()

вроде вполне удобный велосипед получился

надо будет делать Set

Так оно уже const subscribers = new Set()

Но останется проблема отписок.

Да, и как её пофиксить быстро, красиво и в процессе не написать еще один фреймворк я не знаю.

Нет, array[array.length-1] - это array.at(-1). А array.findLast() как array.find только ищет с конца.

Можно сделать createEffect как во Vue.js whenDepsChange

function createEffect(callback) {
  const effect = () => {
    currentListener = effect
    callback()
    currentListener = undefined
  }
  effect()
}

тогда подпишется при первом обращении к countB().

Недавно попалось одно научно-популярное видео с интересным наблюдением: собаки справляя нужду в большинстве случаев поворачиваются носом либо на юг, либо на север. Так что, возможно и у котов есть какие-нибудь особенности и мы наконец таки узнаем, куда они так стремительно несутся в 4 утра - на север или на юг =)
https://www.youtube.com/watch?v=nbJX6m9lzcM&t=98s (1:38)

потом на каком-нибудь другом сайте понадобится тот же самый Angular или React или еще какая-нибудь либа той же версии с того же CDN, и все уже будет готово заранее.

Подобное поведение кэша не так давно изменилось. Теперь каждый сайт должен тянуть сам все ресурсы с CDN независимо от того использовались ли ранее эти ресурсы на других сайтах.
https://www.stefanjudis.com/notes/say-goodbye-to-resource-caching-across-sites-and-domains/
https://developer.chrome.com/blog/http-cache-partitioning/#how-will-cache-partitioning-affect-chromes-http-cache
Если это так, то и нет смысла держать в памяти скомпилированный и оптимизированный код.

Например доступ к символу строки по индексу, может возвращать то, что угодно программисту, но не то, что было задано при инициализации связи со строкой

Не могли бы вы привести пример кода, где такая магия будет работать.

Вы не поняли сути игры, грабить корован можно только когда зеленая точка находится на зеленом поле, то есть вы нападаете как бы из засады =)

К сожалению данная версия игры непроходима, из-за бага вы не получите ачивку Robbed: Yes

Hotfix

замените в скрипте const C на let C

Отличный шутер получился, жаль, что идет только в 30 фпс. Жду DLC чтобы поиграть за синюю и красную точку =)

3-я сторона может спокойно вызвать const value = ref.deref(); и держать ссылку сколько её угодно. Так что для подобных вещей WeakRef бесполезен.

Жаль, выходит такие велосипеды подойдут только для экстремалов любящих совмещать езду по горам и грязевые ванны.

А почему нет ни переднего, ни заднего крыла? Вся ж грязь будет в спину и рожу лететь

Hidden text

В оригинале интерактивные примеры, можно мышкой пошевелить начало луча и интуитивно станет понятно, где ширина равна единице, а где высота.

Расшарить в гуглодокс нельзя, служба безопасности будет сильно ругаться и Маша отправится в декрет сильно раньше запланированного срока. Да и помимо экселя есть масса документов которые в гуглодокс не откроются (всякие CAD системы)

Но там действительно все редактируется, нет элементов, которые нельзя передвинуть или перекрасить ))

Ну представите вам нужно в начала таблицы на 10000 строк вставить пару строчек, как будите передвигать все это =)

Если файл не для печати, зачем его загонять в пдф?

Для того, чтобы его можно было посмотреть на любом пк/телефоне/планшете независимо от того есть там эксель или нет. PDF по сути является просто удобным контейнером как для растровой, так и для векторной графики и текста. Если вы можете раздербанить любой файл на составные части и собрать обратно из этого макет в илле, то это не значит, что для всех остальных это удобный способ редактирования файлов.

Information

Rating
Does not participate
Registered
Activity