IC
Штатная фича браузеров для создания токсичных мемасиков.
parket
I thought the main lang was Haskell 😉
parket
Someone else?
ena
parket
He he. Never mind. :)
ena
Awww. So cute :3
ena
Хаскельное сообщество меня продолжает умилять своей вежливостью и отзывчивостью
Nikolay
интерестно для каких целей в основном используют хаскель. могу предполодить, что это не веб разработка. а что тогода? я сам слышал только про проект кардано.
A64m
скорее всего это как раз "веб разработка"
Alexander
Бэкенды. Не знаю, насколько их можно к вебу отнести.
Alexander
можно
Alexander
да что угодно
Alexander
Вот вы тут высказывали мысль, что на динамическия языках писать сложнее (я с этим согласен). Так помимо того, что в вебе много динамических языков, там еще и технологий разных сотни, если не тысячи. Я с трудом понимаю, как веб-разработчики со всем этим живут. Меня чудовищная сложность веба угнетает. Наверное, я так себе разработчик в сравнении с миллионами веб-девелоперов
Alexander
технологии изучаются быстро, в конкретном стеке их не очень много
Alexander
я вот уже полный стэк освоил за 3,5 года
Alexander
3.5 года - это большой срок. Тут общее программирование-то изучаешь, изучаешь, а ему конца и края нет. И я не понимаю, какой набор знаний можно считать "изучил веб"
Alexander
ну веб бесконечен,Ю полностью изучить нельзя
Alexander
срок большой, но полный стэк нужен только на lead позициях
Alexander
можно быть мидлом зная одну конкретную технологию, в некоторых конторах и сеньором можно стать
Igor
Вообще не понимаю эту градацию миддлы, джуниоры, сеньоры
Alexander
общее програмирование в общем то важнее знания стэка
Alexander
джуниор учится, мидл работает, сеньор учит, лид руководит
Alexander
как то так
Alexander
но это условности, обычно это просто разряды
Alexander
и джун обладает
Alexander
просто эффективнее идет передача знаний от более опытных людей обычно
Alexander
ну js + html + css это более сложная связка, чем, скажем бэкенд
Igor
Я как-то читал немного другое определение:
джун - знает "что" ему нужно сделать в определенной задаче
миддл - знает "как" это сделать
а сеньор - "зачем" это нужно делать (может и не нужно)
Alexander
ну тоже хорошее
Alexander
но есть один ньюанс, знать что делать сложнее, чем знать зачем
Alexander
обычно что делать лучше всех знает как раз лид
Ilya
Аксиомы моноида совпадают с теми аксиомами, которые накладываются на композицию морфизмов в категории. Отличие состоит в том, что в моноиде определено произведение любых двух элементов, тогда как композиция определена не для любых двух морфизмов. Сказать, что для любых двух морфизмов определена композиция — это то же самое, что сказать «категория состоит из одного объекта», то есть моноиды можно рассматривать как категории из одного объекта.
Ilya
Igor
Имхо, лучше не причислять себя к определенной категории и просто называться "software developer"
Alexander
кана
Alexander
их все и знать то не обязательно
кана
а значит других объектов нет
кана
ведь если бы был другой объект B, то был бы и морфизм id_b : B -> B, который не композится с A -> A, значит объекта B нет
Anatolii
Сейчас @lonokhov будет плюваться, но я взял MonadTime как пример просто:)
Вот инстансы MonadTime - https://hackage.haskell.org/package/monad-time-0.3.1.0/docs/src/Control.Monad.Time.html#currentTime
Я написал вот такой код и ожидаю что внтури ридера у меня currentTime будет всегда константный, но из-за того что там IO смешан с редиром - currentTime каждый раз возвращает новое время. Мог бы кто-то обьяснить как это возможно поправить?
f :: (MonadTime m, MonadIO m) => m ()
f = do
now <- currentTime
flip runReaderT now $ f2
print now
f2 :: (MonadTime m, MonadIO m) => m ()
f2 = do
now2 <- currentTime
putStrLn $ show now2
liftIO $ threadDelay (2000000)
now3 <- currentTime
putStrLn $ show now3
liftIO $ threadDelay (2000000)
now4 <- currentTime
putStrLn $ show now4
Alexander
ну вот условно ты только заходишь в js+html, тебе явно скажут "пиши на vue в такой то парадигме"
Ilya
Alexander
вот тебе vue-bootstrap
Alexander
а выяснять что лучше, vue или react, это уже задача другого уровня и решается она изучением обоих подходов
Aliester
выяснять лучше vue или react это как выяснять лучше отвертка или зубило
Alexander
причем на уровне CTO ответ вообще часто ставит удобство найма людей которые знают конкретные технологии выше чем реальные преимущества
Alexander
всяко более объективная метрика
Aliester
ну если нужного кого-то в шею пырнуть -оба подойдут
Dmitry
A64m
Dmitry
Anonymous
Dmitry
Вместо "функцией класса, параметризованной этими типами" читать "функцией класса, параметризованнОГО этими типами"
Anatolii
Anatolii
Обыщий смысл я думаю понятен
Anatolii
Как заставить ридерТ вместо ИО использовать
Dmitry
так там не из-за принтов инстанс от IO подтянулся?
Anatolii
Ну в конкретном случае ещё из-за слипов, на практике там ИО откуда угодно потянутся может
Anatolii
Мне хочется во "многих" функциях иметь одинаковое время
Dmitry
как я понимаю MonadTime, если в монадном стеке где-то будет стоять ReaderT UTCTime, то он будет его оттуда брать. А если нет, то будет выбирать новый.
Dmitry
Ну, а инициализировать время, как полагается - либо при запуске ридера, либо через local
A64m
Anonymous
а почему дерайвинг Show для этих типов не работает?
Типы нагенерированы персистентским TH, это модели базы данных. Я не знаю как не используя TH задерайвить для них Show. Вот допустим если у меня есть
share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
User json sql=users
avatar Text Maybe
firstName Text
middleName Text
lastName Text
email Text
createdAt UTCTime default=now()
updatedAt UTCTime default=now()
UUniqueEmail email
deriving Show Read Eq Generic Typeable Data
|]
Как мне сделать deriving чтобы когда я добавляю новые поля в модель, добавляю новые модели - у меня всгда работал бы show для любого поля?
Anonymous
для любого поля - это для любого EntityField a b, которое создается из этого описания.
Anatolii
A64m
кана
кана
проблема выше решается ньютайпом над ридерт (без overlappable) или орфан-инстансом MonadTime для ReaderT (опять же без оверлапабл), но это чет делает этот инстанс вообще бесполезным в любом нечистом стеке
кана
то есть по дефолту между reader/io monad-time выбирает io
можно сместить приоритет в пользу ReaderT через орфан/ньютайп:
instance Monad m =>
MonadTime (ReaderT UTCTime m) where
currentTime = ask
он такой же как и в monad-time, просто без OVERLAPPING
кана
кана
при этом обратится к действительно текущему времени можно будет через liftIO currentTime
кана
зачем вообще ReaderT UTCTime инстанс кому-нибудь может пригодится я вообще хз