Vladimir
22.09.2017
17:58:19
Дмитрий
22.09.2017
17:59:58
Для начала, в purescript например есть (была) структура Eff
Vladimir
22.09.2017
18:00:07
Что значит заменяют?
Aleh
22.09.2017
18:00:10
Google
Дмитрий
22.09.2017
18:00:15
Которая именно представляла сайд-эффект
Да ничего не значит
Допустим, что у нас есть какой-то js код с сайд-эффектами, который мы хотим вызывать из нормального ™ языка
// Main.js
exports.pushTheButton = function() { console.log('nuclear missile launched') }
Чтобы различать разные сайд-эффекты, каждый из них можно задать как отдельный тип. Присутствует тип в сигнатуре функции — значит эта функция повлечёт за собой данный побочный эффект
module Main where
import Control.Monad.Eff(Eff, kind Effect)
import Control.Monad.Eff.Console (logShow, CONSOLE)
import Prelude (Unit, discard)
foreign import data NUCLEAR_MISSILE :: Effect
foreign import pushTheButton :: forall e. Eff (
launch :: NUCLEAR_MISSILE | e
) Unit
main :: Eff (
console :: CONSOLE,
launch :: NUCLEAR_MISSILE
) Unit
main = do
pushTheButton
logShow "its fine"
-- Results:
-- nuclear missile launched
-- its fine
Вот это — описание тпипзации сайд-эффектов
А монады конечно нифига ничего не заменияют
А оборачивают
Vladimir
22.09.2017
18:00:52
Ну значит что нет возможности явно вызвать сайд эффект кодом, синхронно
Дмитрий
22.09.2017
18:01:00
Лол
Ҫѐҏӗѫӑ
22.09.2017
18:01:06
можно
Дмитрий
22.09.2017
18:01:10
Что же я только что выше сделал, дайте подумать
Aleh
22.09.2017
18:01:33
Vladimir
22.09.2017
18:01:37
Ну так это do
Ҫѐҏӗѫӑ
22.09.2017
18:01:44
я не понял вопрос
Google
Ҫѐҏӗѫӑ
22.09.2017
18:02:05
Дмитрий
22.09.2017
18:02:08
Ну так это do
Это компилируется в синхронный вызов, просто сначала дергается первая функция, потом вторая
Тут несколько сложнее концепция, короче
Roman
22.09.2017
18:02:28
использует уже кто GraphQL?
Vladimir
22.09.2017
18:02:30
В любом случае ты делаешь что-то если юзер держит кнопку. Можешь описать это монадой, можешь - переменной, можешь - методом класса
Vladimir
22.09.2017
18:02:31
Не, компилироваться оно может во что угодно, это вопрос семантики
Aleh
22.09.2017
18:02:32
Дмитрий
22.09.2017
18:02:43
Ҫѐҏӗѫӑ
22.09.2017
18:02:54
Vladimir
22.09.2017
18:03:17
То есть семантически если вызвать функцию, то это никогда не приведет к эффектам сразу после возврата
Ҫѐҏӗѫӑ
22.09.2017
18:03:30
но наверное Дмитрий знает ответ
еще можно Громова позвать)
чтобы было совсем весело (но недолго)
или просто с этим всем в фп чат прийти
у него забомбит сразу же
Artur
22.09.2017
18:04:48
Лучше бы бухали)
Vladimir
22.09.2017
18:05:09
А кто нет?
Ҫѐҏӗѫӑ
22.09.2017
18:06:34
Aleh
22.09.2017
18:06:45
Vladimir
22.09.2017
18:07:04
Ну да, его вроде как и нет вообще
Google
Vladimir
22.09.2017
18:07:29
Потому что все декларативное
Ҫѐҏӗѫӑ
22.09.2017
18:07:31
в императивщине только он и есть
Aleh
22.09.2017
18:08:26
Дмитрий
22.09.2017
18:09:00
?
Юрий
22.09.2017
18:13:10
Ҫѐҏӗѫӑ
22.09.2017
18:14:29
https://t.me/frp_ru
Юрий
22.09.2017
18:19:00
Спасибо!
Artur
22.09.2017
18:38:49
Ҫѐҏӗѫӑ
22.09.2017
18:39:12
?
Azarkin
22.09.2017
20:01:29
Всем привет.
Вопрос ночи)
Как с точки реалиции сделать лучше, каждый раз открывать соединение к монго при запросе ( http://joxi.ru/xAebYYjcYlJzgr ) , или же лучше один раз открыть и делать запросы?
Суть в том что для каждого маршрута свой файл, и в каждом файле запросы к БД
Maxim
22.09.2017
20:14:06
коннект лучше же шарить
Azarkin
22.09.2017
20:15:06
@shammasov пример можно?) плз)
Maxim
22.09.2017
20:15:52
и лучше бы отделить обработку запроса от работы с бд
const makeDAO = connection => ({
getUser: (id) => {}
getFeatures: (param1, param2) => {}
})
а коннекшен делай в одном месте и следи за ним в одном месте
в обработке реквеста дёргай дао
Vladislav
22.09.2017
20:27:30
Morsik
22.09.2017
20:28:54
sequelize не зашел?
Vladislav
22.09.2017
20:29:41
Вообще
Google
Morsik
22.09.2017
20:30:01
почему?
Vladislav
22.09.2017
20:30:18
Есть ли вообще резон двигаться в этом направлении. Полезно ли это как идея?
там не ['user'] а ['profile']
Morsik
22.09.2017
20:33:49
а зачем разбивать описание колонок на 2 места?
типы будут без автодополнения, если задаются как строки
Сергей
22.09.2017
20:34:54
Опять
Morsik
22.09.2017
20:35:33
и вообще стоит еще раз посмотреть на sequelize
Vladislav
22.09.2017
20:36:19
Morsik
22.09.2017
20:37:34
выделить типы в подобие enum
Сергей
22.09.2017
20:40:50
Vladislav
22.09.2017
20:41:35
Morsik
22.09.2017
20:42:14
а как ты определяешь тип колонки?
Илюша
22.09.2017
20:43:49
входящих
Vladislav
22.09.2017
20:45:54
а как ты определяешь тип колонки?
На входе думал пока представить несколько базовых простых типов. Хотя думаю, что адекватнее будет переписать это на объекты. Так удобнее будет.
Просто только вспомнил, что на activeRecord валидация описывается в асоциативных массивах
Morsik
22.09.2017
20:47:36
и мы все ближе к sequelize
Vladislav
22.09.2017
20:47:55
ахаах.
Ches
22.09.2017
21:08:17
можете подсказать бесплатные хостинги с нодой? сейчас использую хероку, но сервак постоянно "засыпает"
illiatshurotshka❄️
22.09.2017
21:09:20
твой компьютер?
Google
KlonD90
22.09.2017
21:10:40
заплатить?
Сергей
22.09.2017
21:10:54
Morsik
22.09.2017
21:11:13
cloud google platform
Ches
22.09.2017
21:12:54
Используй платные
про платные будет вопрос следующий. с бесплатными можно что нибудь намутить чтобы работали постоянно?
Сергей
22.09.2017
21:13:40
Это же не пхп
Ches
22.09.2017
21:13:55
вот поэтому и спрашиваю)
слышал что с нодой пока потяжелее найти)
Yashko?
22.09.2017
21:15:01
digitalocean
KlonD90
22.09.2017
21:15:03
ну возьми амазон
Таймураз
22.09.2017
21:15:04
KlonD90
22.09.2017
21:15:07
напрямую
на кой тебе хероку
там микро бесплатный
Ruslan ?
22.09.2017
21:15:49
Cenator
22.09.2017
21:16:20
хотя 3 месяца получил через гитхаб, все равно нужна карта для активации
KlonD90
22.09.2017
21:19:33
забейте do никому не нужен когда есть vscale
там дешевле в 2 раза так и ssd гораздо лучше