Size: a a a

2020 October 30

AV

Alexander Vershilov in Haskell
и linger кажется
источник

A

Andrey in Haskell
вроде, да, я не у компа
timeout точно помню
источник

A

Andrey in Haskell
Alexander Vershilov
И это не варпопроблема так tcp работает
интернет говорит, что это проблема приложения, и она не должна лечиться тюнингом sysctl, но может быть им решена
источник

AV

Alexander Vershilov in Haskell
там обе стороны должны закрыть соедиение
источник

A

Andrey in Haskell
да
источник

AV

Alexander Vershilov in Haskell
warp всё делает
источник

A

Andrey in Haskell
nginx закрывает, а warp - нет
источник

AV

Alexander Vershilov in Haskell
Ну у нас во всяком случае так было
источник

AV

Alexander Vershilov in Haskell
А вот OS тупила
источник

AV

Alexander Vershilov in Haskell
Но у нас это было на бенчмарках, там ещё яндекс-танк не всё корретно делал
источник

A

Andrey in Haskell
CLOSE-WAIT - это как раз же варп должен
источник

A

Andrey in Haskell
дальше закрывать
источник

A

Andrey in Haskell
что там дальше? fin-wait-2?
источник

A

Andrey in Haskell
а у нас на бою
источник

AV

Alexander Vershilov in Haskell
угу, интеерсно
источник

A

Andrey in Haskell
надо до конца заполнить пробелы по закрытию сокета, смастерить пример запроса странный и оформить багрепорт с фиксом
источник

R

Roman in Haskell
Alexander Vershilov
как сделать [a] -> [(a,Bool)] , так чтобы false у последнего эл-та
zip x ((const True <$> drop 1 x)++[False])

но можно лучше?
очевидно же:


import           Control.Exception
import           Data.IORef
import           System.IO.Unsafe

lastIsFalse :: [Bool]
lastIsFalse = unsafePerformIO $ do
   ref <- newIORef False
   let go = do
               b <- unsafeInterleaveIO $ readIORef ref
               bs <- unsafeInterleaveIO $ do
                   writeIORef ref True
                   _ <- evaluate b
                   writeIORef ref False
                   go
               pure $ b : bs
   go

walk :: [a] -> [a]
walk = foldr (\x r -> (:) x $! r) []

-- >>> test
-- [(1,True),(2,True),(3,True),(4,True),(5,False)]
test = walk $ take 5 $ zip [1..] lastIsFalse
источник

R

Roman in Haskell
(не смог придумать, как сделать без дополнительного walk)
источник

R

Roman in Haskell
Roman
(не смог придумать, как сделать без дополнительного walk)
не уверен, что так вообще можно. Объявляю челендж открытым
источник

.

. in Haskell
Наверное, это самый боринг хаскель из всех боринг хаскелей.

lastFalse :: [a] -> [(a, Bool)]
lastFalse [] = []
lastFalse xxs@(_:xs) = go xxs xs
 where
   go (x:_) []       = [(x, False)]
   go (x:xxs) (_:xs) = (x, True) : go xxs xs
   go [] _           = error "Impossible"
источник