Fork me on GitHub
#clojure-russia
<
2015-10-14
>
rm05:10:49

@nicola: а чего хотел? Я не по-серьезному, но вдруг помогу или подскажу, кого потыкать

niquola05:10:40

Стоит задача по врачебным текстам выуживать диагноз, насколько это сложно?

delaguardo05:10:56

есть уелый курс профессора Рыбиной по постановке диагноза из наблюбений

delaguardo05:10:28

все что помню из института, когда она у нас вела - что это в общем случае нерешаемаемая задача

delaguardo05:10:17

может помоч

rm05:10:13

в любом случае, есть http://qa.nlpub.ru/ и там даже активно сидят люди

rm05:10:25

ну и http://nlpub.ru для матчасти

niquola06:10:49

Ага спасибо

niquola06:10:42

Я детали уточню и закину. там вроде нужно именно извлечь диагноз, а не поставить, и потом закодировать - те есть ещё база диагнозов с синонимами. Я так понимаю, что под конкретные предметные области свой словарь обычно делают.

andre10:10:54

всем привет, совсем не дышит кожа, выучу я кложа )

andre10:10:07

подскажите есть где-нибудь отдел для начинающих ? simple_smile

andre11:10:55

спасибо, а русскоязычного нет аналога? simple_smile

prepor11:10:50

он тут )

andre11:10:15

задачка - нужно генерить хеш-код до тех пор пока он не будет уникален в БД, записать в БД , и вернуть клиенту

andre11:10:25

я уже на пути . но немножко схожу сума simple_smile

andre11:10:14

(defn create-room [req]
      ((let [conn (mg/connect)
             db   (mg/get-db conn "chat-db")
             coll "rooms"
             chars (map char "0123456789ABCDEF")
             roomid (loop []
                          (let [troomid (reduce str (take 4 (repeatedly #(rand-nth chars))))])
                          (if-not (mc/find-maps db coll {:roomis troomid})
                                  (str troomid)
                                  (recur) ))])
        {:status  200
         :headers {"Content-Type" "text/html"}
         :body  roomid}))

andre11:10:12

3-й день только с ф-м ЯП и конкретно с clojure simple_smile

andre11:10:06

CompilerException java.lang.RuntimeException: Unable to resolve symbol: troomid in this context, compiling:

gordon11:10:14

у тебя if-not не вложен в let

gordon11:10:44

вообще, более идиоматично кмк будет создание бесконечной коллекции с кодами, а потом find по ней с передачей функции, которая будет ломиться в бд

ul11:10:15

а лучше вообще использовать ууиды и не трогать бд)))

ul11:10:32

дорогой чатик, кто-нибудь уже игрался с om.next?

gordon11:10:22

он там 4 символа только использует, видать длина важна, хз

andre11:10:01

@gordon: спасибо, в скобках утонул , Intellij c Cursive не очень то помогает 😞

andre11:10:52

да, там идея простая, для комнаты генерится id из 4х спец символов, записывается в базу, ну соотв этот код комнаты должен быть уникален

andre11:10:40

@gordon: создание бесконечной коллекции с кодами - хороший вариант, спасибо

prepor11:10:39

@andre: ну и так в принципе нельзя делать, вне применительно к языку

prepor12:10:09

@andre: что будет если у вас два параллельных процесса сделает find одновременно по одному коду?

andre12:10:13

@prepor: вероятность того что они сгенерят и запишут одинаковый id ?

prepor12:10:17

“вероятность”, да )

andre12:10:34

с этим буду думать, спасибо

andre12:10:53

сейчас первая задача разобраться с фп и clojure

andre12:10:55

подскажите как правильно мне нужно добавить в мой код функцию которая запишет в БД,я не совсем понимаю с точки зрения ФП как это должно выглядеть

prepor12:10:53

кложа это ФП, да не ФП

prepor12:10:56

берете и пишете )

andre12:10:51

т.е. мне нужно выполнить

(mc/insert db coll {:roomid roomid}))
и вернуть мапу

prepor12:10:03

ну чо то типа

prepor12:10:22

фп тут вообще не при чем ) эффекты эффектами, никаких огораживаний

prepor12:10:32

а вот от всяких conn (mg/connect) в рамках обработки запроса нужно, конечно, избавиться )

razum2um14:10:14

@nicola: помнишь ты искал способ запускать figwheel из репла, а не отдельно - получилось? кто-нибудь еще знает как?

rm14:10:42

я знаю

rm14:10:49

вернее, мне chestnut нагенерил

razum2um14:10:47

@rm: спасиб. кстати, я тут на полгода наверное выключился из clj-жизни вижу css-dirs - оно вотчит css теперь? можете вкратце рассказать что произошло? om-next еще нет, на 0.13 перешли кажется, что еще из важного?

rm14:10:28

да, оно теперь следит за css. om-next недавно альфу выкатили

rm14:10:05

я сам нуб, так что не знаю

rm14:10:14

сорсмапы уже вроде давно

razum2um14:10:21

да, это застал

niquola14:10:03

cljs на node почти случился ;)

rm14:10:06

да, точно

rm14:10:19

почему почти, кстати?

razum2um15:10:20

@rm т.е. ты настройки билда вообще выкинул из project.clj? https://github.com/taoeffect/slothcfg это пробовал?

rm15:10:02

нет, не пробовал. Выглядит костыльненько

razum2um15:10:58

потому что фаза запуска lein плагинов и всего, что юзает project.clj жестко отделена от рантайма, хотя чисто для билд-конфига можно просто прочитать файлик

rm15:10:30

а в конфиге дублирование просто. Не скажу, что мне очень нравится, просто я по-другому не думал, как сделать

rm16:10:39

кто-нибудь складывал логи в graylog кложурой? Есть обертка или самому надо пилить?

prepor16:10:36

что значит “кложурой”? ты чем логи пишешь?

prepor16:10:02

я, например, в виде бекенда logback юзаю. для него есть аутпуты в грейлог, например

rm16:10:30

ну пока у меня есть onelog, но он пишет в файл. В руби была модная хренотень, она прямо ошибки в грейлог пробрасывала, нужно было только законфигурять

prepor16:10:45

“в руби"

prepor16:10:51

в яве все есть

prepor16:10:01

логбэк как угодно настроить можно

rm16:10:03

https://github.com/t0xa/gelfj вот эта лабудень чтоли должна работать

rm16:10:10

а чем хорош logback?

prepor16:10:20

тем что все можно настроить? )

prepor16:10:29

и тем что работает со всей явой остальной?

prepor16:10:48

нафига вообще этот onelog юзать? у тебя есть интерфейс в виде clojure.tools.logging. а что бы логи от библиотек работали ты еще один логгер настраивать будешь?

rm16:10:20

он просто первый в гугле вылез, не суть

prepor16:10:21

> Appending a + (plus sign) to the standard logging functions will copy the messages to STDOUT in addition to logging them to the log file: на этапе написания кода решать куда мне их нужно писать логи? хаха

prepor16:10:53

ну вот юзай clojure.tools.logging + slf4j + logback. и настраивай логи иксемелем как хочешь, хехе )

rm16:10:39

надо же было людям изобрести xml

rm16:10:01

отпугивает больше скобочек

prepor17:10:45

ну там можно на груфи конфигурять )

prepor17:10:07

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

prepor17:10:20

но оно внутри так уебански сделано, что это гиморно до фига )

rm17:10:59

а чего для конфигов используете, кстати? Ну там, данные для коннекта к базе, всякие другие env-зависимые переменные?

prepor17:10:00

у нас просто файлик который грузится через load-file

rm17:10:59

из edn в xml, по-идее, можно прямо втупую генериться

prepor17:10:30

дело не в этом, мне довольно пофигу xml писать или едн. смысл в том что бы логинг конфигурялся в рантайме

prepor17:10:15

определяясь какой-то другой логикой (при запуске тестов хочу один логгинг-конфиг, при запуске прод-настроек — другой)

prepor17:10:50

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

rm17:10:09

я тоже теперь так хочу

razum2um17:10:00

это понятно. хочется конкретный логгер конфигурять в рантайме без интеропа

rm17:10:27

а чо энвирон? Вот ты из репла собрался тесты запустить -- как логгер переинициализировать?

razum2um17:10:39

кстати да, environ морально устаревает для подхода одни репл на все нужды. alter-var-root #’environ.core/env и т.д.

malch17:10:16

Мне кажется, вместе должны сработать

malch17:10:31

Но сам пока не пробовал 😊

razum2um17:10:46

timbre хорош тем, что пытается угодить cljs с версии 4 и это гут, но @prepor правильно заметил, у нас экосистема большая и без sf4j жить не выходит

malch17:10:58

Не пробовал менять настройки лога во время исполнения

razum2um17:10:45

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

malch17:10:00

Из коробки в clojure вообще ничего не работает 😊

malch17:10:24

Там можно любую функцию для лога использовать

malch17:10:26

Appenders are trivial to write & configure -they're just fns. It's Timbre's job to dispatch useful args to appenders when appropriate, it's their job to do something interesting with them.Being 'just fns', appenders have basically limitless potential: write to your database, send a message over the network, check some other state (e.g. environment config) before making a choice, etc.

razum2um17:10:07

кажется скоро разговор сведется к спору как лучше 1) юзать сырой интероп 2) оборачивать java либы 3) писать свое с 0 идеоматично был уже такой опрос?

prepor17:10:13

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

prepor17:10:45

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

razum2um17:10:42

как видите, пока @prepor: за 1 или 2, @malch за 2 или 3. я угадал?

prepor17:10:09

при чем тут инероп вообще. никаких сырых интеропов тут использовать не надо

prepor17:10:29

подключаешь clojure.tools.logging и используешь

razum2um17:10:57

это понятно, а как вот прямо сейчас конфигурять логбек в рантайме?

prepor17:10:41

никак ) но зато он умеет перечитывать свой конфиг, как я и сказал )

prepor17:10:57

ну точнее, как, кстати. можно дергать его методы. но это гиморно очень

razum2um17:10:43

ну вот) но это же не повод бросать его и запилить в timbre graylog, да?

razum2um17:10:14

посему я к 3) и соответственно к timbre/onelog отношусь скептически тоже

malch17:10:04

Я просто предлагал вариант 😉

rm18:10:15

https://github.com/narkisr/gelfino-client меж тем, с timbre и вот этой фиготенью можно перезадавать конфиги в репле