Size: a a a

2020 October 13

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
🦜
Ещё игры с геометрией лобочевского
я уже планировал использовать гиперплоскость для визуализации) но у гиперплоскости оч плохая топология, в ней тупо теряешься
источник

O

Oil Field in ☄️ effector
🦜
Когда в голове не умещается, обычно на бумагу переносишь
Ну да, просто не всë визуализировать сразу можно, сначала нужно понять саму идею, увидеть геометрический смысл, если он есть вообще
ну конечно саму чистую идею тоже можно в буфер положить, как правило, это помогает... Ничего не записывать
источник

G

GG in ☄️ effector
где мне теперь найти свой код
источник

G

GG in ☄️ effector
ууу съука, даже теги в инспекторе не открываются
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
GG
где мне теперь найти свой код
скинь содержимое code-compressed поля в localStorage
источник

G

GG in ☄️ effector
🚀🔬 🚀🔬🚀🔬
скинь содержимое code-compressed поля в localStorage
код не потеряется?
источник

G

GG in ☄️ effector
а, сюда скинуть
источник

G

GG in ☄️ effector
MYewdgzgLgBMBOBTAhlRAxRVgAsYF4YAKKASwFtEAaGSiCASgID44lVEBRAM28WChEAUDGIAHeCDFN8rMIgDuMAAqTypCImGjR8FjE1QAKhUQgAroJE7RRGa3hEA3nQg0JUgL4NrNmmUpfGB9RHx8hUEhYAHN0AA8CNhQ0TGwcIgBWAAYaAHJokBBogBtEXJ9I6BhkeMSEZIwsXCIARiycmFzkcmQAL3ByiPAqgE9awnqOVOaAJna8keQwQaEAegAqIW4esRgALj3iZBgAWlYAIyYzmG5q09Zb86EiAB4AEmYmA5h0czABEB6W6yI73GCXMG3Y7XR4wUhgbikOLFGAAFmeLwAZJ99odfv8oICbvooWCiNCLlcHuC4QikSiWs9mMx8ExcbQ7tdyWDyOCqRynkRmWz2byKQKeeChEgoOZ4GB2eKxVtkKQUaJvgBlKDweHRSXIITrVa+IZRGAAR3MiHkAEFEkRuHFEIx9E5rJVYGJzBA8BN2GhOAA3G2CEJwYawJBiYrIYCIOoBrghsBhj2RmBIQyJhrB0N2dPmt7QDg5jjawFaADaAF1w6IAHRZrBEZtQBgASCCDfARG9vpoRDcMGk+iIVYbk+HYjr4Y7PbArcQMbj1GI0-sxCCHYgDZ2jpJDdIABMCPhCGIj6eAPwjpvL2PxxzcL43evBcPWJ0uhvcQGcON0kdOIaFITd3VEDtPQMLAAEkwHQYpSGiHAoG1Ut-VzFM0xsaC3nhRDkNQ9C0DLNAKyQZwRyQINDg6YA5SQVM6JgbxtwXIc4IQpCULQqAOEHDcxwgmwdAkRBaIMBsGPgJioCoIJRLgRjQ0OMQFKU7xPxsJ0j24oioAbBRUGaQx4MI3iSMQd8gnw-TLP4tAjJM9IIDdRSYFWVZaVIKAPNIW4hwbcSgzPQgshgTFMSkmS5LCmAsiYGU5TADyvIMfj4FgCTQ38wLdxCmAXhilTUyYESbA7ft0gqpS4WPQ4AAM3icUhPBa3dYtDTxGqoJ0NLq0QAkQdCssOAARDgGzAEAFDsfxTE4MAGpgMBzGKYoPNENjNLS7zj3ABMctTPL12CmiYFYTrSvbGB3Q7B6O2jR8tFqpSTyalq2o686JJ6gbBue1d4EOYFWCoydfwWyglpWyanJmuamB20SUZsTwghRlHrHS4tHMQZy0iISoQFKBtiiKBtznhY8iDWja8hLNBynDaDkA2vNUzcwhonMZB4FpkSdwseB40OPGBKCRFijQEGbmdElnXJm1oigPBWCyawUfZ4pOagXdjKJkmyYp6IqZpun1uKPIdb1iAWesQsqkReBoHGw7Elt7CIGsedpdl5xt24MBQedbmHjD381QDsGbgbYbYZgABCc9VqthhlbAVW-VTxlIJRv3o8QeAAFlkDEYCXUVn9EWWg8QW4ePFuW5PU-p4oGHDF23cOwnmmNgnTfNuv27ybuoHd+QHdEJ3YHHyfEHh44eb5gXA8giARbFm5SFdifDoBneZeL0GSUPzLoiwUHd57+QtfCUQ2Y2hfEl5-nBd9ze5W3r3QzcKWi5y2-NXBsOV4AjHrg8JuMMW4p0IO3cMbEOw6wXn3dIA9yaU2piPK2Ntn6HWnrPGAsZb4JkICg3u-ti5lwrlLMO1ddxIGPOYeMRA+zcBoMAF8+guHQK4C3VgYhG4JxbreLh+wRwvmsOGEh+95BoOJsMUmg8sEW1Hp0WRC9p4wCdsozB0QiC5CdLkGg89DpL20p5byZj5BLwbAdWxqBkAKIwUPbBtN1G5AANZeO0dYZK8o7q+ytDaa04smbUAAXvBeh8bGLycdfaJlCQJBE0QfIIFC77bSEBjIQIS7TjmsLEEC1R4g0DGHEIQdYhBCGKa0HwdSZg+HSnU5p3kahxALGsbyhgTCUAsIIOwboOl2E8DQNE7QGBAA
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
GG
MYewdgzgLgBMBOBTAhlRAxRVgAsYF4YAKKASwFtEAaGSiCASgID44lVEBRAM28WChEAUDGIAHeCDFN8rMIgDuMAAqTypCImGjR8FjE1QAKhUQgAroJE7RRGa3hEA3nQg0JUgL4NrNmmUpfGB9RHx8hUEhYAHN0AA8CNhQ0TGwcIgBWAAYaAHJokBBogBtEXJ9I6BhkeMSEZIwsXCIARiycmFzkcmQAL3ByiPAqgE9awnqOVOaAJna8keQwQaEAegAqIW4esRgALj3iZBgAWlYAIyYzmG5q09Zb86EiAB4AEmYmA5h0czABEB6W6yI73GCXMG3Y7XR4wUhgbikOLFGAAFmeLwAZJ99odfv8oICbvooWCiNCLlcHuC4QikSiWs9mMx8ExcbQ7tdyWDyOCqRynkRmWz2byKQKeeChEgoOZ4GB2eKxVtkKQUaJvgBlKDweHRSXIITrVa+IZRGAAR3MiHkAEFEkRuHFEIx9E5rJVYGJzBA8BN2GhOAA3G2CEJwYawJBiYrIYCIOoBrghsBhj2RmBIQyJhrB0N2dPmt7QDg5jjawFaADaAF1w6IAHRZrBEZtQBgASCCDfARG9vpoRDcMGk+iIVYbk+HYjr4Y7PbArcQMbj1GI0-sxCCHYgDZ2jpJDdIABMCPhCGIj6eAPwjpvL2PxxzcL43evBcPWJ0uhvcQGcON0kdOIaFITd3VEDtPQMLAAEkwHQYpSGiHAoG1Ut-VzFM0xsaC3nhRDkNQ9C0DLNAKyQZwRyQINDg6YA5SQVM6JgbxtwXIc4IQpCULQqAOEHDcxwgmwdAkRBaIMBsGPgJioCoIJRLgRjQ0OMQFKU7xPxsJ0j24oioAbBRUGaQx4MI3iSMQd8gnw-TLP4tAjJM9IIDdRSYFWVZaVIKAPNIW4hwbcSgzPQgshgTFMSkmS5LCmAsiYGU5TADyvIMfj4FgCTQ38wLdxCmAXhilTUyYESbA7ft0gqpS4WPQ4AAM3icUhPBa3dYtDTxGqoJ0NLq0QAkQdCssOAARDgGzAEAFDsfxTE4MAGpgMBzGKYoPNENjNLS7zj3ABMctTPL12CmiYFYTrSvbGB3Q7B6O2jR8tFqpSTyalq2o686JJ6gbBue1d4EOYFWCoydfwWyglpWyanJmuamB20SUZsTwghRlHrHS4tHMQZy0iISoQFKBtiiKBtznhY8iDWja8hLNBynDaDkA2vNUzcwhonMZB4FpkSdwseB40OPGBKCRFijQEGbmdElnXJm1oigPBWCyawUfZ4pOagXdjKJkmyYp6IqZpun1uKPIdb1iAWesQsqkReBoHGw7Elt7CIGsedpdl5xt24MBQedbmHjD381QDsGbgbYbYZgABCc9VqthhlbAVW-VTxlIJRv3o8QeAAFlkDEYCXUVn9EWWg8QW4ePFuW5PU-p4oGHDF23cOwnmmNgnTfNuv27ybuoHd+QHdEJ3YHHyfEHh44eb5gXA8giARbFm5SFdifDoBneZeL0GSUPzLoiwUHd57+QtfCUQ2Y2hfEl5-nBd9ze5W3r3QzcKWi5y2-NXBsOV4AjHrg8JuMMW4p0IO3cMbEOw6wXn3dIA9yaU2piPK2Ntn6HWnrPGAsZb4JkICg3u-ti5lwrlLMO1ddxIGPOYeMRA+zcBoMAF8+guHQK4C3VgYhG4JxbreLh+wRwvmsOGEh+95BoOJsMUmg8sEW1Hp0WRC9p4wCdsozB0QiC5CdLkGg89DpL20p5byZj5BLwbAdWxqBkAKIwUPbBtN1G5AANZeO0dYZK8o7q+ytDaa04smbUAAXvBeh8bGLycdfaJlCQJBE0QfIIFC77bSEBjIQIS7TjmsLEEC1R4g0DGHEIQdYhBCGKa0HwdSZg+HSnU5p3kahxALGsbyhgTCUAsIIOwboOl2E8DQNE7QGBAA
const createFetch = (time, mess) => createEffect(
 (prop) => new Promise(
   r => setTimeout(
     () => r({mess, prop})
     , time
   )
 )
)

const gFx = createFetch(50, 'google')
const aFx = createFetch(100, 'amazon')
const yFx = createFetch(200, 'yan')

/*
fmap :: (a -> b) -> f a -> f b
(<$>) :: Functor f => (a -> b) -> f a -> f b infixl 4
(<&>) :: Functor f => f a -> (a -> b) -> f b infixl 1
(>>=)  :: m a -> (a -> m b) -> m b
(>>)   :: m a -> m b -> m b
return :: a -> m a
fail   :: String -> m a
*/
 
const queneA = (fxes) => {
 const push = createEvent()
 const replace = createEvent()
 const reset = createEvent()
 const $state = createStore([])
   .reset(reset)
   .on(push, (s, p) => ([...s, p]))
  .on(replace, (s, p) => (
    s.map(f => f.id === p.id ? p.replacer(f) : f)
   ))
 
 fxes.forEach((fx, i) => {
  const setInFlightState = createEvent()
   const $inFlightState = createStore({ prev: 0, current: 0 })
    .on(setInFlightState, (s, p) => ({
       prev: s.current,
         current: p,
     }))
 
   fx.inFlight.watch(setInFlightState)
   
   $inFlightState.watch(s => {
     // init
     if (s.prev === 0 && s.current === 0) return
     // start event
     if (s.prev < s.current) {
      push({
         id: `${i}${s.current}`,fx,
         timeStart: Date.now(), timeEnd: null
       })
     }
     // done event
     if (s.prev > s.current) {
   replace({
         id: `${i}${s.prev}`,
         replacer: f => ({ ...f, timeEnd: Date.now() })
     })
     }
   })
 })
 
 // $state.watch(console.log.bind(null, 'state'))
 const allEvents = guard({
  source: $state,
   filter: fxe => fxe.length > 0
 })
 allEvents.watch(console.log.bind(null, 'allEvents'))
 
 const firstDone = allEvents
  .filter({
    fn: fxes => fxes.filter(f => f.timeEnd !== null).length === 1
  })
  .filterMap(fxes => fxes.find(f => f.timeEnd !== null))
 firstDone.watch(console.log.bind(null, 'firstDone'))
 
 const firstDoneData = guard({
  source: firstDone,
   filter: f => f,
   target: firstDone
 })

 const allDone = guard({
  source: allEvents,
   filter: fxe => fxe.every(f => f.timeEnd !== null)
 })
allDone.watch(console.log.bind(null, 'allDone'))

 const lastDone = allDone.filterMap(
   fxes => fxes.reduce((pf, cf) => cf.timeEnd > pf.timeEnd ? cf : pf)
 )
 lastDone.watch(console.log.bind(null, 'lastDone'))
 
 console.log('fx', firstDoneData)
 
 // firstDoneData.doneData.watch(console.log.bind(null, 'kk'))
 
 return {
  quenue: $state,
   firstDone,
   firstDoneData: firstDone.fx,
   lastDone,
   allDone
 }
}

queneA([
 gFx, aFx, yFx
])

gFx(1)
gFx(2)
// gFx()
// aFx()

// setTimeout(() => {aFx()},  400)
источник

G

GG in ☄️ effector
спасибо
источник

O

Oil Field in ☄️ effector
произошла магия
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
GG
спасибо
кстати рекомендую использовать top level await, так как пока код выполняется — репл имеет возможность перехватить ошибки и отловить бесконечный цикл
источник

G

GG in ☄️ effector
кстиа, раз я тут, буду задвать вопросы
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Oil Field
произошла магия
😄
источник

G

GG in ☄️ effector
вот я положил в стор списов эффектов, потом хочу достать один из. и подписаться на его .doneData - как это сделать?
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
high-level приёмы из rxjs крайне не рекомендуются
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
стора с эффектами не было ни разу за все обсуждения в чате, это просто не подход эффектора
источник

G

GG in ☄️ effector
тогда внутрь функцию пробрасывать которая подпишется
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
аналогично
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
это не правильный вопрос
источник