Search
Write a publication
Pull to refresh
4
0
Антон @BerkutEagle

User

Send message

Вот если бы крутилка слева была сохранена и сворачивала/разворачивала гибкий дисплей в рулон внутри корпуса, это было бы достойно статьи на хабре. А так... <img src="троллейбус из буханки"/>

У всяких больших дизельных агрегатов типа тракторов, бульдозеров и т.п. есть пускач - маленький бензиновый двигатель, который раскручивает и заводит большой дизель. Тут получилась такая же история - микрокомпьютер "заводит" большой комп :)

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

Или что-то типа цемента - при попадании влаги твердеет, что позволяет определить участок кабеля, пострадавший от влаги.

Но в таком случае яйцо не стоит, оно движется. Это тоже нарушение условий задачи?

Вариант на useSyncExternalStore

function getStore(propValue) {
  let listener = null;
  let val = propValue;
  let propVal = propValue;
  let stateVal = propValue;

  return {
    clean() {
      listener = null;
    },
    subscribe(l) {
      listener = l;
    },
    getValue() {
      return val;
    },
    setPropValue(nextVal) {
      if (propVal !== nextVal) {
        val = propVal = nextVal;
        if (listener) listener();
      }
    },
    setStateValue(nextVal) {
      const nextStateValue =
        typeof nextVal === "function" ? nextVal(val) : nextVal;
      if (nextStateValue !== stateVal) {
        val = stateVal = nextStateValue;
        if (listener) listener();
      }
    },
  };
}

export function useDerivedState(propValue) {
  const store = useMemo(() => getStore(propValue), []);

  store.setPropValue(propValue);

  return [
    useSyncExternalStore(store.subscribe, store.getValue),
    store.setStateValue,
  ];
}

На рефах у меня получилось что-то такое

export function useDerivedState(propValue) {
  const [state, setState] = useState(propValue);
  const stateChanged = useRef(false);
  const lastValue = useRef(propValue);

  if (lastValue.current !== propValue) {
    stateChanged.current = false;
    lastValue.current = propValue;
  }

  return [
    stateChanged.current ? state : propValue,
    useCallback((stateValue) => {
      if (typeof stateValue === "function") {
        setState((prevValue) => {
          if (stateChanged.current) {
            return stateValue(prevValue);
          } else {
            stateChanged.current = true;
            return stateValue(lastValue.current);
          }
        });
      } else {
        stateChanged.current = true;
        setState(stateValue);
      }
    }, []),
  ];
}

Можно заменить useEffect на useLayoutEffect и мутировать стейт там. Минус производительность (одно дополнительное вычисление VDOM из-за мутации стейта), но зато попадаем в одну отрисовку DOM'а с актуальным состоянием

useDerivedState в такой реализации может добавить головной боли. Сначала компонент перерисуется с обновлёнными пропсами, но старым стейтом. Затем, после setState внутри useEffect, перерисуется с новыми пропсами и новым стейтом.

Это уже задача для AGI, одной из черт которого является способность к обобщению задач

Примерно так нейронки и работают. В процессе обучения они "запоминают" как трясти бутылку, чтобы получился корабль.

devcontainers-cli можно использовать без vscode

Kodi в качестве плеера + Kore (или web-интерфейс) для удалённого управления. И можно не вставая с дивана не только громкость регулировать.

Скорость деплоя это конечно хорошо, а как на счёт скорости работы? Есть сравнение производительности итогового продукта?

Ищите на алике "HM65 itx"

Недорогие платы с 988 сокетом, питанием 12В и уже с LVDS и питанием инвертора.

Тут скорее смещение не "из жилых в нежилые", а "из Европы в страны третьего мира"

Нужно собирать этот мусор в космическую свалку. Космические бомжи будут строить из него свои орбитальные станции.

Этого не знаю, логично предположить, что нет. Но нужно помнить в какой стране мы живём :)

Чтобы выложить товар на полку, нужно отсканить код. После этого его можно погасить только через продажу на кассе этого же юрлица либо списать при просрочке,порче и т.д. И тоже через тоже самое юрлицо.

1
23 ...

Information

Rating
Does not participate
Location
Тюмень, Тюменская обл. и Ханты-Мансийский АО, Россия
Date of birth
Registered
Activity

Specialization

Frontend Developer
Lead
JavaScript
TypeScript