This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-01-03
Channels
- # admin-announcements (91)
- # announcements (1)
- # beginners (5)
- # boot (228)
- # cljs-dev (9)
- # cljsrn (12)
- # clojars (13)
- # clojure (175)
- # clojure-art (6)
- # clojure-russia (46)
- # clojurescript (35)
- # core-matrix (62)
- # cursive (10)
- # datomic (5)
- # hoplon (119)
- # ldnclj (11)
- # leiningen (7)
- # mount (3)
- # om (21)
- # reagent (2)
- # slack-help (1)
- # spacemacs (1)
потому что арифметика с плавающей точкой. кстати из-за такой вот шняги float и double нельзя применять в финансовых расчетах
Всем привет! Вчера все-таки написал на уровне hello-world приложение на связке ClojureScript/Reagent/Bidi/Immutant (+ websockets). Я никогда не писал UI поэтому дело идет тяжело. Возникло несколько простых вопросов: 1. Весь JS запаковывается в итоге в 1 файл. А как сделать так, чтобы у меня было несколько JS для разных частей приложения? Понятно, что если я пользователь, то подгружать админскую часть в том же JS наверно не правильно. 2. Можно ли сделать страницу логина в JS части? То есть введенные в браузере логин и пароль отправляются на сервер, например по websocketaм, где проверяются, после чего сессия становится аутентифицированной? Пока я видел примеры, где на hiccup+clojure делается страница логина. 3. Какой учебник порекомендуете почитать по основам UI, чтобы дальше в экосистеме Clojure было понятно, что писать? Честно говоря, после server-side программирования небольшой сплит-браин испытываю.
1 http://swannodette.github.io/2015/02/23/hello-google-closure-modules/ 2 не понял вопроса 3 Эм, тут хз
По третьему вопросу я бы сначала почитал на тему реакта, редукса
А ещё, есть хороший блог http://tonsky.livejournal.com
мож кто видел уже но в ClojureScript вот это всегда true:
(= (hash {:a (rand) :b (rand)})
(hash {:a (rand) :b (rand)}))
@artemyarulin: спасибо! про модули не знал. блог tonsky читаю. вопрос 2 снят - сейчас пересматриваю видос от lispcast про web разработку, стало понятно
@artemyarulin а чем это вызвано? я про rand
(number? o)
(js-mod (Math/floor o) 2147483647)
(hash 0.123123) -> 0
от любого числа меньше нуля
хотя неа, тьфу. Дробная часть просто откидывается
малое изменение аргумента должно приводить к большому изменению значения, а тут этого не происходит
ага, я спросил на CLJS канале - может кто знает чо. Если не - то создам тикет в жире
@artemyarulin: я тут глянул, там нигде нет никаких причин http://dev.clojure.org/jira/browse/CLJS-435 https://github.com/clojure/clojurescript/commit/61455e64f58a07706c9b5ecebc9247bf085f7df1 В clojure для даблов используется java-реалиция (как ни странно): https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/Numbers.java#L1063 Вот описание работы hashCode: http://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#hashCode%28%29 само собой тут ни о каком floor речи не идет То же самое другими словами: http://stackoverflow.com/a/9650824/666135
О, спасибо за информацию. Я просто погуглил тоже чутка как сделать int hashCode в JS и по быстрому нашел тока костыли в виде привидения к строке и потом от нее.
но вообще бага да
это да)
Пошли Нолену патч, я думаю он будет тока рад. У меня боюсь времени счас совсем нету
ну что за печаль - кложары все так-же лежат, ничо не зарелезишь 😞
о, с пятого раза получилось пропихнуть
http://clojars.org реп работает? Или зеркало тормозит тоже?
@artemyarulin: в соседнем англоязычном канале посоветовали добавить в project.clj строчку :mirrors {#"clojars" {:name "tcrawly" :url "https://clojars-mirror.tcrawley.org/repo/"}}
Дада, спасибо. На выход то оно работает худо/бедно - мне на вход надо, новый релиз сделать либы
dnolen [5:20 PM]
<@U0BNDGFPS>: right, the question is how to detect floating point efficiently. Conversion to strings is out of the question. this conversation is better for <#C07UQ678E>
так что если будешь делать эту багу с hash - запости туда для началао, можно посмотреть если дробное, то взять целую и дробную часть, дробную привести к целому (домножить на 10^x). Потом уже посчитать оба хеша и далее уже их перемножить или что еще сделать. Хотя почти уверен будут проблемы с числами рядом с максимальным и дробными отличающимися на 0.0000000000001
ну понятно, что строки не катят, но я пока еще не думал какие там в джс возможности вообще есть, он в этом плане убог чуть менее, чем полностью. Плюс там нету целых числе отдельно, все они плавающие. Ну я почитаю сначала как оно внутри устроено, до этого мне не приходилось туда глубоко залазить
ага, возможностей там нет. Можно посмотреть как оно там у google closure, но я по быстрому нашел тока всякие md5 и прочие crypt штуки. Scala.JS посмотрел быстро - у них один глобальный счетчик и на каждый новый скаловый объект они его тупо инкрементируют, что конечно мега костыль
можно посмотреть какие другие языки/платформы - GWT, хаскели всякие для жс
Я чота не понимаю - почему lein cljsbuild once
иногда не перекомпилирует в итоге жс? Т.е. я понимаю да, что файлы не поменялись и я например только поменял project.clj, но можно как-нить эту хрень выключить? всякие clean-targets добавил, но вроде толку нет
дошло - lein clean && lein cljsbuild once
я тут показывал гифочки кросс-платформенной разработки под андроид/иос/браузер вместе с ом-нектом. Наконец допилил lein template для жаждущих попробовать самому: https://github.com/artemyarulin/om-next-cross-platform-template . Фидбек вери велкам