
Quet
26.02.2017
13:56:34
никс попробуйте
но кажется оно сырое
пропеллер ещё был но кажется его придётся мейнтейнить если вдруг взять

Dmitry
26.02.2017
13:57:38
пропеллор я трогал, но не говоря о странных идеях - т.е репозиторий один глобальный, а не на каждый проект - он еще и не работал

Quet
26.02.2017
13:57:59
да, мне тоже не нравится там эта идея

Google

Quet
26.02.2017
14:05:59
а чего б вы хотели от деплоя? если атомарность/идемпотентность то вам точно в никс

Dmitry
26.02.2017
14:06:53
а кто бы не хотел

Quet
26.02.2017
14:07:44
я б наверное все равно остановился на докере, оно самое живое
и в принципе решает эти проблемы

Vladimir
26.02.2017
14:08:56
https://thehftguy.com/2016/11/01/docker-in-production-an-history-of-failure/

Quet
26.02.2017
14:09:41
оно там немношк устарело уже

Vladimir
26.02.2017
14:10:00
https://thehftguy.com/2017/02/23/docker-in-production-an-update/
=)

Quet
26.02.2017
14:14:10
ну вон тоже странно -- говорит на убунте не пробовал
на дебиане все плохо
апдейт странный. если в первом посте были валидные доебы что докер не умеет чистить говно старое (справедливо для той версии, поправлено в текущей)
то в апдейте какая-то философия типа Docker has no business model and no way to monetize

Vladimir
26.02.2017
14:17:22
бизнес модель это философия?
а я думал, что это деньги и дальнейшее развитие

Alex
26.02.2017
14:18:25

Google

Vladimir
26.02.2017
14:19:17
друга недавно вместе со всеми уволили из стартапа, потому что инвестор перестал давать деньги, потому что так и не придумали модель монетизации
это как бы не философия какая-то, а реалии
а докер тоже стартап

Alex
26.02.2017
14:21:15

Vladimir
26.02.2017
14:21:31
ну нет вообще-то

Alex
26.02.2017
14:22:05
рулетка

Vladimir
26.02.2017
14:22:24
ну тогда мы сейчас общаемся в мессенджере, который обречен
как он монетизируется?

Alex
26.02.2017
14:22:37
возможно, кто знает

Quet
26.02.2017
14:23:00

Alex
26.02.2017
14:23:08
один из реальных вариантов - продать
как линкедин например, был и есть убыточный.

Vladimir
26.02.2017
14:26:26
но в таком случае если будущее доскера туманно, то стоит ли его брать в продакшн? вот о чем автор хотел сказать. при чем тут философия я не пойму, если речь о самых настоящих рисках.

Quet
26.02.2017
14:28:12

Vladimir
26.02.2017
14:29:07
ну не путай божий дар с яичницей

Boris
26.02.2017
14:37:20
В докере заинтересованы коммерческие компании, та же IBM свою контейнерезацию пилит на базе докера, не думаю что он как никому не известный стартап может сегодня просто взять и исчезнуть.

Максим
26.02.2017
15:12:48

Quet
26.02.2017
15:13:09

Alexander
26.02.2017
15:39:16

Google

Alexander
26.02.2017
15:39:43
У докера докерхаб платный для закрытых вроде

time
26.02.2017
16:30:20
Докерхаб можно и свой поднять

Artem
26.02.2017
16:31:32
докерхаб вроде бы нет, но репозиторий для имеджей можно

time
26.02.2017
16:32:01
Суть одна

Donat
26.02.2017
16:36:47
реджистри по-прежнему надо сбрасывать чтобы удалить старые пакеты?
когда последний раз смотрел, у них было два недопиленных проекта

Евгений
26.02.2017
16:45:28
Я попал в 2013 год? docker у amazon'а уже в продакшоне
Никуда он не пропадёт

Alex
26.02.2017
16:51:52
докер вообще просто надстройка над легковесными контейнерами которая вообще не его часть
даже если исчезнет надстройка, появится другая, да их и так полно, можно использовать докер без докера если напрямую
даже свое велосипедить можно
https://github.com/LPgenerator/Ldld

Boris
26.02.2017
17:38:22
все таки получил максимальный резалт по короткости -
main=mapM(\n->putStrLn$[show n,"Fizz","Buzz","FizzBuzz"]!!mod(div(gcd 15n)2)4)[1..100]

? animufag ?
26.02.2017
17:46:46
15n не опечатка?

Boris
26.02.2017
17:51:26
неа
я сам удивился, но так можно

Misha
26.02.2017
20:47:53
@qnikst, а почему runProcess не возвращает ничего? приходится городить всякую непотребщину, типа bla <- newTVar; runProcess $ do { let x = try $ do { send ... ; expect ... }; atomically $ writeTVar x; } ; x <- atomically $ do readTVar bla;
так плохо делать?
ну там еще atomically надо натыкать, но идея понятна должна быть

Alexander
26.02.2017
20:50:56
Потому, что никто не подумал. Нормально только почему TVar а не MVar или TMVar?

Misha
26.02.2017
20:51:12
а по привычке

Alexander
26.02.2017
20:51:23
Просто твар не сработает

Google

Misha
26.02.2017
20:51:38
о

Alexander
26.02.2017
20:51:42
Но видимо очепятка тут?

Misha
26.02.2017
20:51:44
а почему

Alexander
26.02.2017
20:52:06
Ну он же не будет ждать результата записи из d-p потока

Misha
26.02.2017
20:52:40
а, ну да, там надо будет еще магию городить с retry если пусто и т.д
да, мвар лучше конечно

Alexander
26.02.2017
20:53:04
И получится TMVar он же TVar (Maybe a)

Misha
26.02.2017
20:53:12
да, оно самое

Alexander
26.02.2017
20:53:51
Плюс исключения

Misha
26.02.2017
20:54:13
угу

Alexander
26.02.2017
20:54:16
Тебе нужно try (..) >>= putMVar box
И either throwIO return =<< takeMVar box

Misha
26.02.2017
20:54:55
да, что-то такое
то есть в принципе никакого особенного криминала я не вижу, но думал, вдруг это специально сделано

Alexander
26.02.2017
20:55:11
А так норм, вообще когда-нибудь надо будет сделать функцию такую

Misha
26.02.2017
20:55:17
вот да
прямо просится
тогда сочиню что-то такое
спасибо!
на хэкендже похоже косяк в документации:
-- | Lift 'Control.Exception.try'
try :: Exception e => Process a -> Process (Either e a)
try = Catch.try
{-# DEPRECATED try "Use Control.Monad.Catch.mask_ instead" #-}

Google

Ruslan
27.02.2017
08:15:55
Утро доброе.
есть список, там есть булевые значения.
как можно сделать новый список, что если значение первого true, то мы заполняем новый список значением от 1 и далее, если false — заполняем нулем?
должно выглядеть как-то так:
старый список [false, true, true, false, false , true]
новый [0, 1, 2, 0, 0, 3]
это как-то просто прикидывается на сях, но что-то на хаскеле не догоняю

Alexander
27.02.2017
08:17:51
zipWith (\a b -> if b then a else 0) [1..]
Но наверное на задачки по курсам тут не стоит отвечать решением сразу..: /

Vladimir
27.02.2017
08:18:52
а я чет умнее чем использовать тут левую свертку не придумал :/

Ruslan
27.02.2017
08:23:04
спасибо

Vladimir
27.02.2017
08:23:27

Alexander
27.02.2017
08:23:48
А точно

Ruslan
27.02.2017
08:24:41
а я только пошел проверять

Alexander
27.02.2017
08:24:48
Ну ладно, тогда через scanl
Ну или не выпендриваться и обычную рекурсивную функцию написать

Vladimir
27.02.2017
08:32:40
самое тупое решение
reverse $ fst $ foldl (\(a,xs) y -> if y then ((head xs):a, (tail xs)) else (0:a, xs)) ([], [1..]) [True, False, True, False, True]
не благодари

Alexander
27.02.2017
08:40:54
tail $ map snd $ scanl (\(c,p) x -> if x then (c+1,c) else (c,0)) (1,1)
doit = go 1 where
go _ [] = []
go c (x:xs) = if x then c:go (c+1) xs else 0:go c xs
т.к. вот это то, что должнен написать человек не знакомый с библиотеой достаточно быстро и просто

Ruslan
27.02.2017
08:41:44
спасибо)

Alexander
27.02.2017
08:42:11
хотя вместо скана mapAccumL нужно

Ruslan
27.02.2017
08:48:49
надо какую-нибудь годную статью про свертки почитать (с ними не в ладах)