elton
Здарова, у меня взырвается мозг с этими байтстрингами, помогите разобраться пор фавор. Код:
{-# Language OverloadedStrings #-}
import Network.HTTP.Simple
import Control.Monad
import Data.Char
import System.Random
import System.Environment
import qualified Data.ByteString as S
agents=["example1","example2"]; len=subtract 1 $ length agents
genHeaders::IO [(a,S.ByteString)]
genHeaders=do
ua<-pickrandom agents
ka<-randomRIO(110,120)::IO Int
ref<-genStr (-1) []
return [("user-agent",ua),("Cache-Control","no-cahce"),
("Accept-Charset","ISO-8859-1,utf-8;q=0.7,*;q=0.7"),
("Referer","http://www.google.com/?q="++ref),
("Keep-Alive",(show ka)), ("Connection","keep-alive")]
--main=getArgs >>= parseArgs >>= wordPressDos
main=do
h<-genHeaders
sendreq h "http://locahost"
sendreq headers host=(\req->httpNoBody $ setRequestHeaders headers req) =<< (parseRequest host)
parseArgs=return . head
wordPressDos=print
pickrandom list=fmap (list !!) $ randomRIO (0,len)
--genStr::Int->[Char]->IO [Char]
genStr size str
| size==(-1) = genStr 13 str
| size==0 = return (S.pack str)
| otherwise =join $ (randomRIO(65,90)>>=(\x->return (genStr (size-1) ((chr x):str))))
Kirill
а в чём вопрос?
elton
ща я скину выхлоп
elton
в общем getStr возвращает строку, а должна байтстроку, поэтому внутри генератора задан тип стринг из-за строки ".."++ref
elton
как пофиксить
elton
я подписал в конце S.pack, как видно в коде
elton
но это дало еще больше выхлопа на ошибки
elton
сигнатура закомечена, если не заметили
Andrey
++ - это для строк
<> - это для моноида
Kirill
ещё genHeaders::IsString a => IO [(a,S.ByteString)]
Kirill
к примеру
Kirill
в getStr путаются типы
Kirill
S.pack пакует [Word8], а у тебя String, т.е. [Char]
Kirill
последний кейс там проще в ду-нотации
Kirill
| otherwise = do
x <- randomRIO(65,90)
genStr (size-1) ((chr x):str)
Kirill
а вообще есть ramdoms
elton
а как чар конвертнуть тогда
elton
или заменить функцию
elton
chr
Cheese
Kirill
убрать просто chr
Kirill
и тип аккумулятора будет [Word8]
Alexander
в no-cache опечатка кстати
Alexander
а про остальное вроде ответили
Anonymous
@nzvtrk будет жить. Поприветствуем!
Artem
Всем доброго времени суток)
Artem
Хотел у Вас спросить(очень банальный вопрос), но все же:
За что Вы любите Haskell(его ленивый и чисто функциональный подход в решении задач)?
Сергей
Сергей
Можно конечно чесать про безопасность и всё такое, но глубинная причина именно в этом
Kirill
на хаскеле очень удобно рефакторить код, когда компилятор оказывает офигенную помощь, которые случаи рефакторинга из того, что делал и получалось легко и непренуждённо, я просто не представляю можно ли вообще сделать без косяков в каком-нибудь питоне, скажем
Сергей
a66ath
Anonymous
Можно писать большие приложения и самому их поддерживать с удовольствием.
С другими [стиральными порошками] получается, как всегда.
a66ath
Anonymous
Сразу делать велик - наверное слишком амбициозная задача.
Может, начинать с самоката, и потом добавлять остальное?
Сергей
Гептапод точнее
Гептапод - это типа инопланетянин? Ну да. И я не один такой. Нас 857
a66ath
Сергей
Ага
Сергей
Вот так
elton
хм а если я сам заблуждаюсь
elton
это все еще дзен?
Сергей
Dmitry
Alexander
Оптимизации будут тогда, когда станет ясно, что они нужны. И не раньше, чем появятся графики с показателями (у меня в планах это в ближайшие две итерации начать делать)
Зигохистоморфный
К тому же недавно в кметтовском стриме он как раз разбирал это
Alexander
Нельзя просто так брать и "оптимизировать", даже если очень хочется
Alexander
Может выясниться, что это не главное место, на которое нужно тратить услилия. А главное, оно, например, в сетевом взаимодействии
Alexander
В общем, никаких оптимизаций, пока сама проблема не обозначена
Alexander
А перевести это на Church, например, не так уж и сложно
Alexander
Или что-нибудь другое. У меня был опыт оптимизации free-кода (моя stm либа, причем Haskell и C++).
С Кметовскими и Олеговскими предложениями по оптимизации ознакомлюсь
Зигохистоморфный
Inlining derived typeclass methods - Stack Overflow
https://stackoverflow.com/questions/52601129/inlining-derived-typeclass-methods
Alexander
Спасибо :)
Зигохистоморфный
Спасибо :)
Это не про оптимизации)
Апач
Ещё один нубский вопрос - как сделать двусвязный список средствами хаскеля
Апач
Как сделать связь в другую сторону? Подозреваю что где - то тут ленивость засела, но не могу понять где.
Алексей
Tying the knot
Апач
??
Апач
Комбинатор неподвижной точки порядка 2?
Алексей
Это общее гуглабельное название метода
Зигохистоморфный
Зигохистоморфный
https://github.com/Mojang/DataFixerUpper/blob/master/src/main/java/com/mojang/datafixers/kinds/K2.java
https://github.com/Mojang/DataFixerUpper/blob/master/src/main/java/com/mojang/datafixers/kinds/K1.java
:D
Anonymous
@hollyyymollyyy будет жить. Поприветствуем!
Dmitry
Dmitry
Haskell. Zipper — производная от типа
https://www.lovemedia.net/articles/haskell-zipper/
Artem
Добрый день всем
Artem
Все еще борюсь с проблемным ботом
Artem
ShouldBeDeleted msg -> model <# do
fetch $ banUser msg
fetch $ deleteMessage msg
return NoOp
Artem
Все еще не пойму, как получается, что дальше fetch $ banUser msg не идут вычисления
Алексей
Может там монада, короткозамыкающая?
Artem
Это как?
Artem
@PineappleZombie, и что с этим можно сделать?
Алексей
Что-нибудь вроде ExceptT m
Алексей
Не вызывать throwException или как его?
Алексей
Ну или просто блосает где-нибудь исключение