Fork me on GitHub
#clojure-russia
<
2015-11-02
>
seryh04:11:52

не видел prototype.js лет 5, а он оказывается где то еще жив

dottedmag08:11:08

@seryh: Такие дела. Чего только не находится на просторах интернетов.

kharus08:11:28

У меня такая же фигня была с пыхпыхом. Я его видел в начала 2000х и потом что-то не слышно было. Пошло руби, питон и проч. Я уж было думал, что его никто и не юзает. Ан нет, цветёт и пахнет.

rm14:11:55

привет

rm14:11:24

а есть какая-нибудь приблудень, чтобы из хоста и роута ссылки собирать? типа, хост localhost:3000, путь '/hello/pew-pew' но я не знаю, хость заканчивается / или нет, путь начинается с / или нет. Я могу свои две строки запилить, но я же сто пудов что-нибудь забыл, вдруг уже есть готовая такая штука

rm14:11:24

> (butlast "localhost:3000/") (\l \o \c \a \l \h \o \s \t \: \3 \0 \0 \0) внезапно, а как в строку это все собрать?

jetmind14:11:41

@rm: (apply str (butlast "localhost:3000/"))

rm14:11:28

и правда

rm14:11:35

спасибо

kronos_vano14:11:51

а subs не нравится?

rm14:11:19

а там нельзя делать (subs "kokok" 0 -2)

rm15:11:32

(subs "clojure" 0 (- (count "clojure") 1)) можно так, но это не очень

artemyarulin15:11:34

если про урлы то я вот это юзаю: https://github.com/cemerick/url

kronos_vano15:11:26

(dec (.length "aaa")) можно например. Разбирать/собирать строку, наверное, будет дольше

dottedmag15:11:49

@rm: java.net.URL?

deeper4k17:11:18

привет кто чем пользуется для работы с базой? korma, etc ? что посоветуете для web проекта?

rm18:11:44

я пользуюсь yesql, но у меня довольно мало запросов. Для проектов побольше @prepor советовал honeysql

deeper4k19:11:00

спасибо, тоже посматриваю в сторону honeysql С созданием и удалением данных в базе понятно. Интересует кто как обновляет объекты хранящие внутри себя другие объекты? Например имеем объект task со вложенными subtasks:

{ 
  :id 1 
  :title “Buy milk” 
  :subtasks [
    { :id 1 title “Go to store” },
    { :id 2 title “Find a milk” },
    { :id 3 title “Buy it” },
  ] 
}
Положим пользователь зашел на страницу редактирования задачи, добавил/удалил подзадачи, изменил заголовок задачи. Как бы вы спроектировали функции которые обновят задачу с подзадачами?

deeper4k19:11:44

в ооп языке(ruby) я бы сделал так:

def update(id:, title:, subtasks:)
  task = tasks_repository.find(id) # get a task with subtasks, task is an aggregate object
  update_task(task, title: title, subtasks: subtasks) # update the task object
  tasks_repository.update(task) # save changes to db
end
здесь ORM сама разберется что было обновлено в объекте task и выполнит запросы к бд для их обновления/создания/удаления. Тем самым мы абстрагировались от БД. Не понятно как это делают в фп, судя по всему тут ORM не принято использовать

prepor19:11:53

@rm: ну скорее не для “побольше”, а просто специфика разная. если какие-то аналитические запросы на 10 строк с рекурсивными вызовами, то yesql наверно хорошо подойдет ) ну и никто не мешает использовать их одновременно )

rm19:11:54

я имел в виду, что собирать запрос из кусочков в yesql нельзя, придется дублировать. Зато можно пороться в сложные запросы на нормальном sql

niquola20:11:28

true data dsl ;)

niquola20:11:49

Умное обновление пиши ручками в сервисной функции, можешь для этого парочку generic хэлперов написать (update-association task :subtasks)