Fork me on GitHub
#clojure-russia
<
2016-09-20
>
mike_ananev03:09:25

очень понравилась преза Стю про спеку.

andmed05:09:06

lein repl
в директории проекта ведь подгружает проект, да?
lein run
и
lein test
отрабатывают нормально, а
lein repl
нет CompilerException java.lang.RuntimeException: Unable to resolve symbol

andmed05:09:38

in-ns
тоже пробовал

andmed06:09:40

ооо... еще require нужен.. ок

andmed06:09:50

хотя мог бы и сразу все подргрузить...

artemyarulin06:09:09

дак он показывает же неймспейс в котором репл стартует

artemyarulin06:09:18

можно указать main и будет в нем стартовать тада

andmed06:09:06

в смысле

lein repl 'namespaсe
?

andmed06:09:13

ну путает же. run и test бегут, а с реплом приседания нужны

artemyarulin06:09:50

эм, я не понял значит. У тебя падает сразу как запускаешь lein repl?

andmed06:09:24

в user попадает, через require и in-ns переключился в нужный namespace, а он :jvm-opts кажется теперь не видит из проекта...

andmed06:09:34

ааа. там

:main
отсутствовал. а jvm-opts работают только если разнести ключики в отдельные строки.. ну ок

artemyarulin06:09:17

спеки на них нет

andre06:09:19

привет, кто-нибудь в clojars деплоил7

artemyarulin06:09:19

угу, чо там - лейн деплой и все

artemyarulin06:09:34

перед этим конечно секаса со всякими сертификатами и прочими GPG 🙂

andre06:09:34

во во

andre06:09:40

вот у меня какраз процесс секаса

andre06:09:52

написано что это опционально, но не дает без этого

andre06:09:59

и инструкций толковых нигде нет

andre06:09:23

ладно буду "наслаждаться" процессом

artemyarulin06:09:52

ну там есть этот, lein help deploying во

andmed06:09:31

ого. прям GPG?

artemyarulin06:09:46

или не, не это дока, не могу сча найти

andre06:09:30

ну да, там есть

andre06:09:42

да прям GPG

artemyarulin06:09:20

а, да, она

andre07:09:38

пока в процессе еще , вот принцип работы либы

artemyarulin07:09:56

не шарю в ре-фрейме, оно чо показывает - текущий стейт вьюхи для каждого компонента?

andre07:09:11

всю структуру данных ре-фрейма показывает

andre07:09:39

вьюхи и их стейты, апп-дб, и все квери по отдельности

artemyarulin07:09:02

ничо не понял, но вещь наверно хорошая 🙂

andre07:09:56

ну допустим у тебя есть апп-дб, где есть список пользователей

andre07:09:00

есть вьюха с кнопкой

andre07:09:13

и ты хочешь менять состояниие кнопки когда колличество пользователей изменится

andre07:09:54

ты пишешь квери, на count пользователей, чтобы не пересчитывать каждый раз, малоли только имя поменяется, а тебе нужно на колличество реагировать

savelichalex07:09:04

@andre так это типа через re-frisk определяешь части и будут dev-tools доступны?

andre07:09:21

таким образом у тебя вьюха завязана на квери которая поменяется когда изменятся пользователи

andre07:09:45

вот с помощью этой либы ты можешь увидеть что вьюза завязана на эту квери и посмотреть результат вычисления этой квери

savelichalex07:09:47

вот бы еще под RN такое дело)

artemyarulin07:09:26

>ты пишешь квери, на count пользователей, чтобы не пересчитывать каждый раз, малоли только имя поменяется, а тебе нужно на колличество реагировать хм, реакт же умный и так - даже если пересчитывать (что в данном случае просто вызов функции count) то ничего и рендериться не будет же, не?

andre08:09:59

ну тут два момента, может он и умный, но не такой быстрый, плюс зачем пересчитывать постоянно то что не нужно, при больших данных это может быть накладно

artemyarulin08:09:33

а как эти query работают? Они вешаются на части app-db дерева наверно и выполняются когда оно изменяется проверяя изменился ли результат query нет?

andmed08:09:27

запуск

lein run
с аргументами есть какие хитрости? наблюдаю разное поведение, код простой
(defn process [filename]
  (println (str "Processing " filename))
  (let [x12 (read-xml filename)
        ids (get-ids x12)]
    (map fetch ids)))

(defn -main [& args]
  (println "Starting")
  (println (type args))
  (map process args))
из репла все работает, как в IDEA так и lein,
dxc-attachment-fetcher.core=> (-main "MCNA.1093.837.xml")
Starting
clojure.lang.ArraySeq
Processing MCNA.1093.837.xml
а lein run дальше мапы не идет
andy@laptop:~/projects/dxc-attachment-fetcher$ lein run "MCNA.1093.837.xml"
Starting
clojure.lang.ArraySeq
и усе :thinking_face:

andmed08:09:45

вон, тип тот же...

seryh08:09:04

ленивость

seryh08:09:13

репл у тебя евалит ленивую структуру

artemyarulin08:09:13

хм, тоже спрошу. У меня есть вектор регэкспов для реплейса, я хочу их все прогнать над одной строкой

(-> s
     (string/replace #”pattern1” “smth”)
     (string/replace #”pattern2” “smth”)
     …..
     (string/replace #”patternN” “smth”))
типо так, тока конечно не в ручную разворачивать вектор. Можно через loop/reduce, но может что еще красивее есть?

andmed08:09:17

@seryh те у них разное поведение?

andmed08:09:29

хм где такое вычитать можно?

seryh08:09:31

@andmed сделай (println (map process args))

seryh08:09:00

ты же при lein run в консоль выплевываешь данные. в банальный stdout

seryh08:09:57

(println (seq (map process args))) или так. если println ленивые структуры не евалит

andmed08:09:03

@seryh а, то есть нормальный вызов (за пределами репла) всегда будет требовать print (или иного io)

andmed08:09:40

ну, или специальных операторов. интересное поведение. а в нем есть смысл? если я вызываю программу внешне,я и хочу вывод в stdout (по умолчанию)

seryh08:09:15

логичное поведение. твоя функция возвращает обьект arraySeq.

seryh08:09:28

откуда консольке знать как их вывести

seryh08:09:14

можешь возвращать string, тогда будет все ок

andmed08:09:54

там в конце на самом деле (через мапы) идет возврат стринга, но laziness он не энфорсит...

andmed08:09:15

угу, понятно. сделал

(str (map process args)))
заработало

andmed08:09:17

спасибо

seryh08:09:19

аа, я просмотрел строчку

(println (str "Processing " filename))

andmed08:09:49

ну это да. дальше мапы не шло...

seryh08:09:18

есть еще не ленивый mapv

artemyarulin12:09:38

а как мне в емаксе сделать ппринт коду? У меня есть мапа большая, но она без переносов строк. Я знаю что могу сделать pprint в консоль, потом оттуда обратно скопировать, но мож есть шорткат?

rmuslimov14:09:31

я давно уже не заходил в cider но для больших структур там был C-c C-p кажется cider-inspector

rmuslimov14:09:39

он был удобный

seryh16:09:23

кстате по емакс. никто не знает как заглушить вывод в минибуфер сообщений "Reverting buffer %filename%", раздражает так как постоянно перебивает полезную инфу

seryh16:09:28

хотя проще auto-revert-mode отключить

rmuslimov16:09:26

(when (and auto-revert-verbose (not (eq revert 'fast))) (message "Reverting buffer `%s'." (buffer-name)))

rmuslimov16:09:53

видимо вырубить выставить auto-revert-verbose в nil

seryh16:09:54

попробую, спасибо

seryh16:09:53

круто, помогло

seryh16:09:08

2 недели у меня от этой штуки глаз дергался