Fork me on GitHub
#clojure-russia
<
2016-02-08
>
maxp03:02:23

Уважаемые, а расскажите почему вы используете boot и какие собрали грабли при переходе с lein?

be904:02:47

в boot’e вместо декларативщины используется просто код на clojure, т.е. ему можно очень чётко объяснить, что и как делать. лишних jvm он не запускает

delaguardo04:02:06

одна беда у бута - clojurescript, собирает медленно, иногда до такой степени бесит, что у меня в итоге cljs собирает lein, остальной проект - boot

be905:02:13

почему, кстати? инкрементальная сборка у меня быстра

delaguardo05:02:14

1-3 секунды против 0.1-0.5 в cljsbuild

delaguardo05:02:45

хотя deraen говорит что должно быть сейчас быстрее, надо бы погонять бенчмарки

be909:02:39

вопрос про сочетание boot и mount. У меня есть таска dev:

(deftask dev []
  (comp (environ :env {:database-url dev-database-url})
     (serve :dir "target" :handler 'tms.handler/app :reload true)
     (watch)
     (sass)
     (reload :on-jsload 'tms.core/main)
     (cljs-repl)
     (cljs)  ;  :source-map true :optimizations :none)
     (target :dir #{"target"})))
Куда запихать (mount/start)?

be909:02:44

в production понятно, я его положу в самый что ни на есть -main. а в dev-режиме где должен случиться первый вызов start?

batsuev17:02:52

всем привет. А как может случаться такая странная фигня - в uberjar jdbc (mysql через c3p0) возвращает гораздо меньше результатов (40-50) в отличии от lein run или repl (около тысячи)?

niquola17:02:21

Сколько соединений и как они настраиваются?

batsuev17:02:23

(let [cpds (doto (ComboPooledDataSource.) (.setDriverClass (:classname spec)) (.setJdbcUrl (str "jdbc:" (:subprotocol spec) ":" (:subname spec))) (.setUser (:user spec)) (.setPassword (:password spec)) (.setMinPoolSize 16) (.setIdleConnectionTestPeriod 30) (.setMaxIdleTimeExcessConnections (* 30 30)) (.setMaxIdleTime (* 3 60 60)))]

niquola17:02:29

Похоже что у тебя просто пула нет - и каждый запрос открывает соединение, потрэкай со стороны MySQL.

batsuev17:02:37

там один запрос на селект, в uberjar - 40 строк сейчас, в lein run - 1к строк

niquola17:02:41

Ты можешь отследить когда открывается соединение?

seryh18:02:05

@batsuev: интересно сделано http://github.com/batsuev/barcode в java файле цепляется *.so и затем java модуль инклудится в clojure проджект

batsuev18:02:01

ща попробую до админов достучаться

batsuev18:02:24

@seryh: м? я просто с jni разбирался

seryh18:02:43

интересно буквально ) не знал что так можно

seryh18:02:31

надо джаву поучить

be918:02:33

@niwinz: тут беда c suricatta. Пытаюсь использовать RETURNING в постгресе. получаю java.lang.IllegalArgumentException: No implementation of method: :-fetch of protocol: #'suricatta.proto/IFetch found for class: org.jooq.impl.InsertImpl

be918:02:43

код выглядит примерно так:

(defn create-user
  [attr-map]
  (let [a (assoc (select-keys attr-map [:name :email])
                 :encrypted_password (hashers/encrypt (:password attr-map)))
        op (-> (dsl/insert-into :users)
               (dsl/insert-values a)
               (dsl/returning :id))]

    (println (fmt/get-sql op {:dialect :postgresql}))
    (sc/fetch-one context op)))
печатает "insert into users (name, email, encrypted_password) values (?, ?, ?) returning id" и помирает от исключения

batsuev18:02:35

@seryh: ну там не важно где грузить, java там нужна что бы native методы прописать

niwinz18:02:09

hmm @be9 seems that fetch protocol is not implemented for insert statements.

niwinz18:02:52

this is very easy to fix, and the quick workaround for it just pass the sql string to fetch-one.

be918:02:21

niwinz: а строку как вытащить, чтобы со значениями? get-sql возвращает ?,?,?

niwinz18:02:21

fmt/sqlvec

be918:02:25

sqlvec сработал, но он не понимает returning

be918:02:11

а возможности передать ему {:dialect :postgresql} не вижу, там только один аргумент

niwinz18:02:46

Right 😞 I will fix it asap

be918:02:42

спасибочки 🙏

niwinz18:02:52

@be9 just pushed to master the fix of the sqlvec parameters, I'll try to fix the other issue and release new version 😉

niwinz18:02:21

@be9 0.8.1 is released with the both fixes!

batsuev19:02:02

фокус был в max-rows, но почему вывод отличался я так и не понял пока

batsuev19:02:07

через yesql, да