This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-10-04
Channels
- # aleph (3)
- # beginners (37)
- # boot (45)
- # carry (1)
- # cljsrn (15)
- # clojure (78)
- # clojure-austin (2)
- # clojure-brasil (10)
- # clojure-czech (3)
- # clojure-dev (12)
- # clojure-dusseldorf (31)
- # clojure-hamburg (2)
- # clojure-italy (4)
- # clojure-poland (2)
- # clojure-russia (37)
- # clojure-spec (25)
- # clojure-uk (30)
- # clojurescript (160)
- # cursive (40)
- # data-science (1)
- # datomic (31)
- # emacs (7)
- # figwheel (4)
- # hoplon (73)
- # leiningen (1)
- # liberator (5)
- # luminus (7)
- # numerical-computing (1)
- # off-topic (31)
- # om (89)
- # onyx (66)
- # proton (5)
- # protorepl (1)
- # re-frame (18)
- # reagent (2)
- # ring (2)
- # spacemacs (1)
- # untangled (93)
- # vim (19)
- # yada (67)
парни юзаю чужое апи один сервис отдает время 1475548156000 другой 1475548156, как можно задетектить что не хватает разрядов?
(-> str count)
а что не так? один сервис отдает unixtime в секундах другой в миллисекундах. бывает такое
бывет ещё в наносекундах... я обычно, если нет спецификации и неизвестно что за время, делю на 1000 пока не получу время (в unixtime) меньше заданной границы. Вот предыдущее значение - это итоговый unixtime. За границу можно брать там время старта разработки проекта, но это если эти ваши timestamp-ы в настоящем, недавнем прошлом или недалёком будущем. Всё зависит от специфики. Если у Вас это даты рождений (т.е. могут быть в районе 1970-го года), то боюсь никак Вы нормально не отдетектите.
@kuzmin_m а чем https://github.com/niquola/route-map не устроил?
Строки хардкодятся во вьюхах/вызовах. Т.е. нет способа через структуру данных указать какой запрос мне нужен, См. request-for в примерах
(request-for :show [:pages] {:page-id "1"}) ;; returns {:uri "/pages/1", :request-method :get}
есть другой момент https://github.com/darkleaf/router/blob/master/test/darkleaf/router/low_level_test.clj#L22-L25
:update-page [:api] {:slug "contacts", :api-token "secret"}
{::ll/segments ["api" "pages" "contacts"], :request-method :patch, :headers {"token" "secret"}})))
(testing "wrong guard cases"
(let [request {:uri "/it/localized-page", :request-method :get}
response (handler request)]
(is (not= :localized-page (get-in response [:matched-route :name]))))
(is (thrown-with-msg? java.lang.IllegalArgumentException
#"Can't match the same route for given params\. Matched :not-found in scope \(\)\."
(request-for :localized-page [:locale] {:locale "wrong-locale"}))))))
https://github.com/darkleaf/router/blob/master/test/darkleaf/router_test.clj#L122-L128
а в роутах соответственно
(guard :locale #{"ru" "en"}
(action :localized-page identity)
(not-found identity))
(request-for :localized-page [:locale] {:locale "wrong-locale"}) не прокатит и будет ошибка
@bezrukov @nicola я бы с радостью рассказал, как это работает и какими идеями руководствовался вам интересно?
@kuzmin_m спасибо за разъяснения, идеи понятны. Мне функциональность с guard’ами на генерацию запросов пока нигде не нужна была вроде.. А в плане генерации запроса целиком, а не просто url - да, думаю, штука удобная для тестирования в определенных сценариях (но опять же, я ими не пользуюсь).
Или когда есть какое-то legacy /foo-bar/ID Id < 1000 уходят на старый обработчик А остальные на новый
По поводу запроса целиком Можно прикрутить clojurescript и пользоваться request-for на клиенте для формирования запроса
@kuzmin_m а ты планируешь какой-то open source с использованием этого роутера делать? Было бы удобнее посмотреть как это будет в приложении. Имеется в виду, как будет выглядеть общий код для клиента и бекенда.
Да, это вырасло из другого проекта, но он, судя по всему, загнулся. Есть в планах написать опенсорс приложение, что бы разобраться в некоторых технологиях на практике.
@kuzmin_m ну do-template не совсем очевидная конструкция. А в целом, тесты как тесты - можно понять при желании:)
Для моего случая это самое лучшее, что смог найти. Без do-template был бы ад. Может еще какие-то варианты есть?
@rkosenko > делю на 1000 пока не получу время (в unixtime) меньше заданной границы. можно же наоборот - делить, если оно больше заданной границы.. скажем, больше 12345678900 (это примерно 2361 год)
@kuzmin_m посмотри как сделан роутинг в Phoenix: http://www.phoenixframework.org/docs/routing#section-resources Они очень удачно скрестили идеи Rails роутера с функциональным подходом