
Sergey
02.11.2016
18:42:06
инстаграм я всегда воспринимал как фотогаллерею из фото на мобилку - типа 500px но все фото сделаны на мобилку. Когда туда начали грузить все что попало, меня это несколько разочаровало
тумблером я мало пользовался, но вообще наверное он близок к тому о чем мы говорим

Lazarev
02.11.2016
19:04:19
@iamstarkov Еще хотел спросить по fp. Использование констант в функциях нарушает их чистоту?
const isCodeOk = R.pipe(
R.prop("statusCode"),
R.equals(RESPONSE_CODE_OK)
)

Vladimir
02.11.2016
19:07:26
Лучше сделать isOk = r.curry((codeOk, code) => r.pipe(...)(code))

Google

Sergey
02.11.2016
19:07:40
@diedsmiling константа - это значение а не состояние.
@diedsmiling не надо путать "переменную" и "состояние". Если переменная никогда не меняется - у нее нет побочных эффектов
более того

Vladimir
02.11.2016
19:08:12
И потом isCodeOk = isOk(constant)
Вот такое позволит сделать функцию более чистой

Sergey
02.11.2016
19:08:48
function pure() {
for(let i = 0; i<10; i++ ) {
// do something
}
return result;
}
внутри есть состояние - но снаружи нет сайд эффектов = чистая функция

Vladimir
02.11.2016
19:09:38

Sergey
02.11.2016
19:10:00
@iamstarkov если подключается модуль - то норм

Vladimir
02.11.2016
19:10:17
Скажем так не всегда

Lazarev
02.11.2016
19:10:17

Sergey
02.11.2016
19:10:31
если это происходит идемпотентно - то нет состояния

Vladimir
02.11.2016
19:10:31
Но в 90% случаях будет норм

Google

Vladimir
02.11.2016
19:11:23
Так как я описал проще тестировать будет

Sergey
02.11.2016
19:11:25
а как вы живете с процедурным require в своем чистом функциональном мире?)

Vladimir
02.11.2016
19:11:51
Не нужно будет опираться на внешний файл с константами
Будет просто функция

Lazarev
02.11.2016
19:12:42
@iamstarkov Понятно, спасибо!

Sergey
02.11.2016
19:14:29
@iamstarkov ну и императивное.
@iamstarkov я сильно сомневаюсь что замена "императивного" require на "декларативный "import" решает проблему того, что ты подключаешь)
и добавляет чистоты

Vladimir
02.11.2016
19:15:14
не меняет
но я и предлагаю не полагаться на внешний файл с константами в написании необходимой функции

Sergey
02.11.2016
19:15:45
хотя конечно возможность подгружать в рантайме модули опасна

Vladimir
02.11.2016
19:15:52
а сделать её более гибкой

Sergey
02.11.2016
19:16:19
> но я и предлагаю не полагаться на внешний файл с константами в написании необходимой функции
а если один и тот же набор констант используется в разных модулях?

Каїн
02.11.2016
19:16:32
Можно грузить модули с % шансом что клиенту они понадобятся
Кек

Sergey
02.11.2016
19:16:36
объеденить их в один модуль нет возможности так как будет нарушение SRP
я к тому что это константы, они от того что в отдельном модуле константами быть не перестают. А константы можно воспринимать как тупые значения. А стало быть они чисты
и модуль чист

Vladimir
02.11.2016
19:18:11
в целом ты прав

Google

Vladimir
02.11.2016
19:18:28
но если функцию можно определить без полагания на тот файл, то лучше так сделать

Sergey
02.11.2016
19:18:40
ну это так же
но это означает что у тебя нет и необходимости в этих константах, так ведь?)
ибо уж лучше модуль + константы чем волшебные значения
а если без констант можно обойтись то и вопроса об их подключении не возникает. Ну и если константы нужны только в этом модуле то так же нет вопросов о необходимости их куда-то выносить

Vladimir
02.11.2016
19:19:52
а потом из неё на дерайвить конечных функций
const isCodeOk = isOk(RESPONSE_CODE_OK)
const isHealthCheckOk = isOk(HEALTHCHECK_CODE_OK)

Sergey
02.11.2016
19:20:38
ну это ж уже устранение проверок)
ну мол ты таким образом операции отдельные превращает в константы, к слову прикольная штука...
нам похапэшникам о таком только мечтать(
пойду на ноде попишу
в php добрая половина разработчиков до сих пор не понимают чем плохи глобальные переменные... у нас только два скоупа - глобальный и локальный...(

Lazarev
02.11.2016
19:22:18
const verifyCode = constant => {
return R.pipe(
R.prop("statusCode"),
R.equals(constant)
)
}
const isOkCode = verifyCode(RESPONSE_CODE_OK)
const isServerErrorCode = verifyCode(RESPONSE_CODE_SERVER_ERROR)

Vladimir
02.11.2016
19:22:20

Sergey
02.11.2016
19:23:10
@iamstarkov ну я тебя понял... я плачусь про php

Vladimir
02.11.2016
19:23:23

Lazarev
02.11.2016
19:23:51
да, точно, спасибо)

Vladimir
02.11.2016
19:24:08

Алексей
02.11.2016
19:25:24

Sergey
02.11.2016
19:25:49

Vladimir
02.11.2016
19:26:27

Google

Admin
ERROR: S client not available

Sergey
02.11.2016
19:26:52

Lazarev
02.11.2016
19:27:17

Sergey
02.11.2016
19:27:27
https://plugins.jetbrains.com/plugin/8477?pr=phpStorm
хотя с такой штукой еще норм
если бы еще pipe оператор в php приняли

Алексей
02.11.2016
19:29:18

Sergey
02.11.2016
19:29:58
в php нет лексических скоупов, от этого код сильно пухнет.
в целом работать норм

Alexander
02.11.2016
19:30:14
Кстати, кто на шестерке пишет, часто ли нужна тру-иммутабельность, а не const и приходится цеплять immutable.js?

Sergey
02.11.2016
19:30:27
у меня она использовалась в методах для описания бизнес правил
в целом с задачей справлялась а более-менее настроенный шторм даже не вызывал боли
но на js такие вещи в разы приятнее делать

Алексей
02.11.2016
19:32:09

[Anonymous]
02.11.2016
19:32:19
для пхпшира, жс как отдушина, сколько раз не встречаю, все хвалят жс :3

Sergey
02.11.2016
19:32:28
Славься Рич Хикки
или babel + async/await
и не писал на языках типа шарпов)
или котлина

Google

Sergey
02.11.2016
19:33:27
а если вспоминать времена node 0.10
то js боль

Alexander
02.11.2016
19:34:17

Sergey
02.11.2016
19:34:46
Говорят что Рич Хикки сначала придумал персистентные коллекции и только потому придумал куда их впихнуть)

Алексей
02.11.2016
19:36:37
Neil Sarnak, Robert E. Tarjan (1986). "Planar Point Location Using Persistent Search Trees" (с) Wikipedia

Vladimir
02.11.2016
20:51:29

Rafael
02.11.2016
20:55:28
ребзи, что можете посоветовать для rest фронта для совсем малюсенького проекта?

Vadim
02.11.2016
20:56:03

Rafael
02.11.2016
20:57:04