Fork me on GitHub
#clojure-russia
<
2017-05-10
>
andmed04:05:29

с точки зрения жавы это нравится

dragoncube05:05:51

хочется сказать: “кто все эти люди?”

dragoncube05:05:44

но вообще прецедент интересный

mike_ananev08:05:51

Всем привет. Пробую pedestal. при попытке подгрузить js файл с SPA приложением выдает вот такое сообщение: Refused to load the script 'http://localhost:8080/js/compiled/verita.js' because it violates the following Content Security Policy directive: "script-src 'unsafe-inline' 'unsafe-eval' 'strict-dynamic' https: http:". 'strict-dynamic' is present, so host-based whitelisting is disabled.

mike_ananev08:05:34

вот CSP читать сейчас ну не охота. кто-нибудь сталкивался с таким?

mike_ananev10:05:48

в качестве временного лечения рекомендуют сделать ::http/secure-headers {:content-security-policy-settings {:object-src "none"}

chort40917:05:45

Теоритический вопрос. Есть приложение, может бегать по верх разных приложение(postgres, sqlite, sql server, дальше больше). Бизнес логика одинакова. Сейчас делаю это через протокол и через defrecord А как это делают нормальные люди?

rmuslimov17:05:46

@chort409 дай пож-та больше описания задачи. Есть база ок, видимо есть приложение которое с этой базой работает. Что делается через протокол/defrecord?

chort40917:05:53

@rmuslimov приложение бегает на разных инстансах поверх разных баз данных, осушествляет разную бизнес логику. Читает записи, вставляет записи, считает статистику и тд. Проблема что логика несколько отличается в зависимости от разной базы даных. И каждый раз переконфигурировать в зависимости поверх какой базы данных будешь бегать - не хочется. Через протокол определен набор фунций для работы с бд. Через defrecord определена имплементация протокола для каждой БД

serioga17:05:55

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

chort40918:05:33

@serioga Об этом тоже думал, но это примерно то же самое что и протокол. хотел узнать может есть какие-нибудь другие варианты, которые я не рассмотрел

serioga18:05:32

ну это не то же самое протокол говорит о необходимости наличия всего набора методов из протокола мультиметоды действуют точечно, только на ту реализацию, что имеет особенности при внесении изменений в протокол надо его наследников править и у мультиметодов диспатч можно по нескольким параметрам сделать (тип базы + что-то ещё) — можно комбинировать в нескольких измерениях 🙂

serioga18:05:02

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

serioga18:05:21

в общем, гибкость в теле образуется неимоверная 🙂

chort40918:05:47

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

serioga18:05:38

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