Alexander
/me нагло рекламируется
Anonymous
Alexander
хорошо, дорого
Aλe
/me
Alexander
но дешевле чем у WellTyped и FPCO
Aλe
/me
Alexander
мы вроде другие объявления про работы не прицепляли..
Alexander
если я не прав, то на сутки прицеплю
Leonid 🦇
Anonymous
Anonymous
Alexander
Конкуренция со стороны других стеков большая у Хаскелля здесь?
Алексей
Darwin
Вот тут соглашусь - но в целом блокчейн нужен много где не для крипты - мы над этим и работаем. Банки, государство, фарма и тп
Не с целью потроллить или поразжигать, просто реально интересно, безотносительно заказчиков — какое применение-то самое частое кроме крипты и инфраструктуры вокруг неё? Просто как в прошлом году вышла статья — https://hackernoon.com/ten-years-in-nobody-has-come-up-with-a-use-case-for-blockchain-ee98c180100 — я так с тех пор не могу здравых контраргументов ни по одному пункту подобрать, потому что как ни крути, оверхед получается в любой области почти, не-блокчейн решения почти всегда проще и дешевле. Ну по крайней мере со стороны так кажется.
Alexander
Юрий
Любые архивные данные
Anonymous
Anonymous
Alexander
Мне видится, что мы просто вдалеке от основной предметной области. Ценные бумаги, финансовые сделки и прочие активы, - то, где вращается большой бизнес, и где серьезные дядьки ворочают суммами с восемью нулями, там, возможно, есть и ниша для блокчейн
Алексей
А зачем для архивов и бэкапов все эти алгоритмы консенсуса и прочее?
Anonymous
Алексей
Для этого достаточно иметь хеши данных
Alexander
но если вражеских нод не больше 50%
Юрий
Чтоб не оказалось, что квартира, коупленная тобой год назад, внезапно не стала принадлежать Васе Пупкину из Урюпинска.
Alexander
блокчейн это же и есть хэши данных?
Alexander
связанные в список
Alexander
(я не шарю, если что)
Алексей
+ распределённый алгоритм консенсуса
Алексей
Какя польза в линических исследованиях я тоже не понимаю. Все проблемы проще решаются централизовано, тем более там и так всё зарегулировано
Alexander
@lonokhov проблему нашёл, оказалась в другом месте
Alexander
добрый человек улучшил мой код, и стал отдавать connection в пул до того, как он переставал использоваться
Leonid 🦇
Я вот думаю такой апи для rpc с стримами можно запилить? call :: (ToWire a, FromWire b, FromWire c, MonadIO m) => Text -> a -> RpcM (Stream (Of b) m c) или типа того.
Alexander
я не очень понял типа тут
Leonid 🦇
я сам пока не понял.
Leonid 🦇
в общем хочется что-то типа grpc-шного RPC с потоком
Leonid 🦇
А есть такая STM очередь, которую бы можно было закрыть значением. Типа TBCQueue a b чтоб push :: a -> TBCQueue a b, close :: b -> TBCQueue a b и read :: TBCQueue a b-> STM (Either a b)
Leonid 🦇
или навелосипедить?
Alexander
мы так и не запилили подобную либу :(
Leonid 🦇
Вроде напиливается
Leonid 🦇
@qnikst вот такое напиливается вроде
getAsset :: FilePath -> RpcM AssetResult
getAsset fp =
callStream "get_asset" (AssetRequest "blah" 0) $ \s ->
bracket (openBinaryFile fp WriteMode) hClose $ \h -> do
S.mapM_ (BS.hPut h . assetChunkData) s
callStream
:: (ToProtocol a, FromProtocol b, FromProtocol s)
=> Text -- метод
-> a -- аргументы
-> (S.Stream (S.Of s) IO b -> IO c)
-- ^ s - эвенты, например куски файла
-- b - результат метода, например сумма файла и прочие метаданные
-- IO должно быть MonadIO m
-> RpcM c
полить сверху сервантом и припилить стабильности и защиты от ДОС
Leonid 🦇
ну и сами вебсокеты
Aleksei (astynax)
Вот у меня есть вопрос. Я хочу запускать подпроцессы. Через снойманолибу или обычным способоб, не суть. И мне надо эти процессы останавливать - и SIGINT, и SIGKILL с SIGTERM по нобходимости. Как мне, имея ProcessHandle это сделать?
Aleksei (astynax)
Через вызов внешнего kill не хотелось бы
Aragaer
через сисколл kill?
Aleksei (astynax)
terminateProcess из process мне позволит прибить подпроцесс, конечно. Но как-то неохота его юзать, да и там только SIGTERM
Leonid 🦇
Тебе нужен pid и unix
Leonid 🦇
http://hackage.haskell.org/package/unix-2.7.2.2/docs/System-Posix-Signals.html#v:signalProcess
Leonid 🦇
https://hackage.haskell.org/package/process-1.6.3.0/docs/System-Process.html#v:getPid
Leonid 🦇
Aleksei (astynax)
про unix знаю. Но хотелось кроссплатформенно :)
Leonid 🦇
Боюсь что сигналы есть только на юниксах
Alexander
Alexander
кроссплатформенно никак
Alexander
так у меня есть кондуиты, единственный способ гарантировать, то, что что-то вызовется там это использовать resourcet?
Ilya
что я делаю не так и почему оно так?
λ> -5 `div` 2 :: Int32
-2
но
λ> (-5 :: Int32) `div` (2 :: Int32)
-3
Ilya
первый вопрос какая разница для GHCi в этих двух записях, второй вопрос почему вообще div так себя ведёт
Ilya
а, оказывается в хаскеле транкейтится в сторону инфинити div а в сторону нуля транкейтит quot
Ilya
тогда остается только вопрос с гхци
Dmitry
Prelude Data.Int> (-5) `div` 2 :: Int32
-3
Ilya
это вот не прояснило сейчас ничего 🙂
Ilya
а, да, теперь прояснилось, согласен, хоть и не совсем очевидно
Ilya
спасибо
Ilya
ну и фанфакт
λ> min (0::Double) (-0 :: Double)
0.0
Ilya
но
λ> min (-0 :: Double) (0 :: Double)
-0.0
Ilya
семантика WASM'a внезапно заставляет min вернуть -0 в первом случае тоже
Cheese
λ> min (0::Double) (-0 :: Double) == (-0 :: Double)
True
Алексей
λ> (0.0::Double) == (-0.0)
True
Yurii
@voidlizard, а на практику на 3недели студента 3курса возьмете с хаскелем?
Dmitry
@ukunsun в личку, плс. если найдется кто-то, кто готов часть задач выделить студенту и работать с ним - то возможно
Kirill
@qnikst слушай, а как-то в кабал-файле можно указать, что пакет под 32 бита не билдить?
Alexander
а ходу не помню опций
Alexander
arch(name)
Tests if the current architecture is name. The argument is matched against System.Info.arch on the target system. If the arch names match, this test evaluates to true, otherwise false. The match is case-insensitive.
Alexander
if arch(x86)
Buildable: False
Alexander
Kirill ^
Alexander
может не x86 конечно, а что-то другое
Алексей
Kirill можно в math-functions посмотреть, там флаг выставляется в зависимости от архитекртуры