This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-12-14
Channels
- # adventofcode (20)
- # arachne (11)
- # beginners (53)
- # boot (342)
- # cider (54)
- # cljs-dev (39)
- # cljsrn (4)
- # clojure (78)
- # clojure-brasil (2)
- # clojure-italy (5)
- # clojure-nl (4)
- # clojure-quebec (1)
- # clojure-russia (90)
- # clojure-sanfrancisco (4)
- # clojure-spec (55)
- # clojure-uk (27)
- # clojurescript (170)
- # core-async (1)
- # core-logic (1)
- # css (1)
- # cursive (8)
- # datomic (83)
- # dirac (5)
- # hoplon (24)
- # lambdaisland (1)
- # lein-figwheel (23)
- # midje (2)
- # off-topic (1)
- # om (4)
- # om-next (7)
- # onyx (74)
- # proton (1)
- # protorepl (22)
- # rdf (2)
- # re-frame (105)
- # reagent (15)
- # ring-swagger (3)
- # rum (4)
- # slack-help (17)
- # spacemacs (14)
- # untangled (62)
- # vim (4)
- # yada (18)
@rustam.gilaztdinov например, вот https://github.com/joshrotenberg/josef практически нет clojure кода как такового, сплошной interop
а спеку можно приспособить для сообщениях об ошибках для юзеров валидация, етс? Я читал пару раз что оно вроде не для этого и тока костылями. Может есть какой прогресс?
и еще несколько вопросов по спеке в догонку: 1) Может уже есть какой пример использования в каком популярном проекте/либе? Охота посмотреть как спеки добавляют в уже существующую базу 2) Куда спеки класть - рядом с функциями, рядом с тестами, видел пару раз даже отдельно даже [module-name]-spec.clj 3) Можно ли делать IO в самой спеке? Я хочу проверить что например функция всегда возвращает строку как валидный XML, т.е. нужно распарсить строку и дернуть пару XPath запросов
4) Почему в некоторых CLJS либах спека закомментирована и написано, что раскомментируют как будет стейбл версия, известно когда она будет?
ну на 4 я могу ответить - в кложуре спека есть тока в 1.9-альфа релизах, а Нолен решил что хуя-хуяк-и-в-продакшен и спека уже в релизах 1.9.* давененько доступна для использования
когда будет спека закончена тока Ричи знает
есть ещё вот такое https://github.com/tonsky/clojure-future-spec/
clojure.future
Copy of all new functions added to clojure.core in Clojure 1.9 (like boolean?, int?, seqable? etc):
(require '[clojure.future :refer :all])
прям как с питоном 2-3 🙂@artemyarulin "распарсить строку" это не IO
ну т.е. так можно да?
а про IO всеже - например в базу сходить, файл прочитать?
но к кастомной функе как правило нужно генератор самому писать (если хочешь генераторы, конечно)
дада, конечно хочу 🙂
@prepor а ты куда кладешь спеки - рядом с функциями или тестами или отдельно вообще?
угу, вот чего не нравится в спеках дак это их многословность
господа, кто работал с compojure, а если быть точнее, то с compojure-api. Подскажите пожалуйста как пофиксить одну проблемку с роутами. есть следующий набор роутов
(GET "/my" request
...
(context
"/:issue-id" [issue-id]
:path-params [issue-id :- Long]
(GET "/" request
...
так вот у меня почему-то при OPTIONS запросе получается следующее:
% curl -H "Origin: " -X OPTIONS --verbose ''
* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 3000 (#0)
> OPTIONS /api/issues/my HTTP/1.1
> Host: localhost:3000
> User-Agent: curl/7.47.0
> Accept: */*
> Origin:
>
< HTTP/1.1 400 Bad Request
< Content-Type: application/json; charset=utf-8
< Content-Length: 65
< Server: http-kit
< Date: Wed, 14 Dec 2016 14:08:26 GMT
<
* Connection #0 to host localhost left intact
{"errors":{"issue-id":"(not (instance? java.lang.Long \"my\"))"}}%
Хотя я ожидал, что будет 404.
Помогите получить 404 пожалуйста.можно сделать как-то, чтобы (context "/:issues-id" [issues-id]) матчил только урлы с интовым issue-id?
если кому интересно, то как workaround добавил
+ (OPTIONS "/my" []
+ (resp/not-found))
теперь CORS работает, но выглядит это немного костыльно.блин так совпало. я сейчас решил с get на post запрос переделать, и замучился с этим cors, chrome не хочет post запрос делать
я вот сделал вью
(reagent/render [:div
[views/clock-view]
[views/buttons-bar-view]
[views/home]] (.getElementById js/document "app"))
вот это первое views/clock-view, часики, они тикают каждую секунду, и вместе с этим перерендериваются также uttons-bar-view и home
https://github.com/Day8/re-frame/blob/master/examples/simple/src/simpleexample/core.cljs
@andre у тебя сервер должен правильно отвечать, чтоб хром крос домейн запрос сделал, насколько я помню
вот у меня есть фигвил . клиент на localhost:3449 и он хочет compojure на localhost:8080 и он не хочет post делать
Options делается перед Post в случае нестандартного контент типа или нестандартного набора хэдеров.
Вроде в примерах для luminus есть удобный middleware для обработки CORS.
тут описан ограниченный набор правил при которых браузер не будет делать Options.
но проще обрабатывать Options и честно на него отвечать.
т.е. я правильно понимаю, что если я делаю запрос post , то сначала options будет запрос пустой, он должен получить от compojure правильные хеадеры, а только потом если хеадеры правильные будет post запрос выполнен?
пишут что так надо someone has written a framework to make this easy (https://github.com/r0man/ring-cors). If you decide to use ring-cors, then you can wrap all your routes by: (def app (-> (handler/api app-routes) (wrap-cors :access-control-allow-origin #"yoursite" :access-control-allow-methods [:get :put :post] :access-control-allow-headers ["Content-Type"])))
@andre я тоже все понял. не знал что все reg-sub дергаются при каждом изменении стейта. спасибо )
вот кстати на моей диаграме тот случай про который ты говорил, как сделать чтобы одна вью рендерилась только
а вот тот пример что ты скинул. там поле с цветом дергает свой sub при каждом обновлении таймера https://monosnap.com/file/Ywjcm2QbwVNSb6LrCg4hU6B90d8qvo