Fork me on GitHub
#clojure-russia
<
2017-02-06
>
kgofhedgehogs00:02:36

Цвет такой коричнево-серый, потому что цвета перемешиваются при создании новой клетки

grach14:02:45

@kgofhedgehogs цвет классный! Просто это про размножение бактерий в септике.

grach15:02:02

Возможно вопрос уже поднимался выше много раз, и я всё проспал. Суть вопроса: как организовать автоматическое подключение плагинов? Например есть у меня вебапп, и я хочу просто добавляя файлики в директорию регестрировать какие-то сущности. Например компоненты, ресурсы, маршруты в роутере. В первый раз решил это так: сделал модуль с атомами и функциями ( которые в эти атомы кладут ). Приходится всё равно реквайрить эти компоненты куда надо, чтобы дернуть вызов функции которая кладет. Можно конечно еще и автоматически реквайрить из директории, но это уже совсем. Потом я подумал, что всё это ересь и Rails. И надо просто из каждого модуля вызывать функцию, которая возвращает всё, что нужно зарегестрировать, и собирать это в мэп. Никакой магии, всё руками, и никто никуда не мутирует. То есть в общем-то я пришел к адекватному решению, но какой-то осадочек нерешенности остался. Может кто-то тоже над этим размышлял? Вот еще есть такая статья на тему ( нашел там свой солюшн с атомами ) https://yogthos.net/posts/2015-01-15-A-Plugin-System-in-Clojure.html

leov15:02:58

мультиметоды кажись сработают. только по-моему их всё равно реквайрить придётся

leov15:02:03

рельсы не ересь, конечно

leov15:02:04

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

leov15:02:32

0. файл создан = уже заявление сделано программистом. (как случалось порой в рельсовом ассет пайплайне) 1. в самом файле: (rum.core/defc ..) однозначно видно, какой неймспейс реквайрить, кто бы что ни говорил. 2. вдобавок выписывать в топе файла (как в кложе) 3. вдобавок устраивать депенденси инжекшн ад, притащенный из джавы, как в component

leov15:02:09

(вместо defstate маунта.)

kgofhedgehogs17:02:06

Как можно убрать эти внешние круглые скобки?

({{:x 0, :y 0} [255 0 0], {:x 0, :y 1} [0 255 0]})

kgofhedgehogs17:02:40

А больше никак?

kgofhedgehogs17:02:28

Ну ладно. First так first

artemyarulin17:02:15

ну можно last еще) это ж не скобки просто - это лист в котором у тебя мапа

kgofhedgehogs17:02:45

Ну понятно. Но постоянно, когда колелкцию пропускаю через мап, получается эта же коллекция, но в листе. Не оч удобно

artemyarulin18:02:46

mapv|filterv в помощь

alexander_mihailov18:02:09

@kgofhedgehogs а графику чем рисуешь?

kgofhedgehogs18:02:41

@alexander_mihailov quil. Сохраняю с помощью gil

kgofhedgehogs22:02:19

Можно ли заставить этот код производить вычисления мультипроцессорно/многопоточно? Прогарамма занимает 1гб озу и очень долго обрабатывает массивы, а cpu жрет всего на 14%, хотелось бы выжать по-больше производительности

kishanov22:02:53

@kgofhedgehogs можно попробовать использовать reducers (https://clojure.org/reference/reducers), только for придется переписать в map чтобы можно было использовать r/map и r/filter

kgofhedgehogs22:02:12

Так, сейчас гляну. Спасибо

kgofhedgehogs23:02:14

Нет же простого способа преобразовать фор в map?

kgofhedgehogs23:02:28

вот так переделал на редьюсеры. В find-neighbors один мап при замене на r/map выкидывает экзепшн. Не понимаю почему, но оставил пока так

kgofhedgehogs23:02:53

Сейчас проверю, повысилась ли производительность

kgofhedgehogs23:02:08

Озу занимает меньше на 100 мб, но это не значительно, может быть, совпадение. cpu 17% Хоть, на глаз чуть-чуть быстрее, но не сильно помогло

kishanov23:02:10

надо пониать, на каком объеме это начинает давать прирост. fork/join - недешевые операции

kishanov23:02:35

плюс into {} cells видимо надо на r/reduce переписать

kgofhedgehogs23:02:46

Сейчас сделаю

kgofhedgehogs23:02:00

Я ведь верно, что into {}можно заменить r/reduce conj? А то, что-то не работает... Без r/ работает