
Максим
09.03.2018
19:14:26
Ну, синатра это роутер с ассетами и небольшими мелочами, хз что там клонить

Fedor
09.03.2018
19:24:45
Он по сути - классика для web, вот все и делают

Azat
09.03.2018
19:27:15
спринг например тоже, но на него почему-то никто не равняется, никто не пишет в дескрипшене мол у нас как в спринг только на другом ЯП-нейм

Google


Azat
09.03.2018
19:33:31
Trygve Reenskaug introduced MVC into Smalltalk-76 while visiting the Xerox Palo Alto Research Center (PARC)[10][11] in the 1970s. In the 1980s, Jim Althoff and others implemented a version of MVC for the Smalltalk-80 class library. Only later did a 1988 article in The Journal of Object Technology (JOT) express MVC as a general concept.[12]
The MVC pattern has subsequently evolved,[13] giving rise to variants such as hierarchical model–view–controller (HMVC), model–view–adapter (MVA), model–view–presenter (MVP), model–view–viewmodel (MVVM), and others that adapted MVC to different contexts.
The use of the MVC pattern in web applications exploded in popularity after the introduction of NeXT's WebObjects in 1996, which was originally written in Objective-C (that borrowed heavily from Smalltalk) and helped enforce MVC principles. Later, the MVC pattern became popular with Java developers when WebObjects was ported to Java. Later frameworks for Java, such as Spring (released in October 2002), continued the strong bond between Java and MVC. The introduction of the frameworks Django (July 2005, for Python) and Rails (December 2005, for Ruby), both of which had a strong emphasis on rapid deployment, increased MVC's popularity outside the traditional enterprise environment in which it has long been popular.


Alister
09.03.2018
21:06:48
кучу бойлерплейта, стектрейс в базильйон строк и xml-конфигурация?

Roman
10.03.2018
02:06:56

Vladimir
10.03.2018
03:49:49
В телекоме хотрелоад - мастхэв.

Dmitry
10.03.2018
09:25:03
@VladPotap С кластером и rolling update уже не так обязательно.

Evgeny
11.03.2018
13:13:10
Вопрос по Ecto.
Есть ли возможность сгенерить чейнджсет из заполненной структуры-схемы?

Никита
11.03.2018
13:14:14
Map.from_struct

Evgeny
11.03.2018
13:15:35
Map.from_struct
ну я так сейчас делаю:
Ecto.Changeset.change(%Foo{}, Map.from_struct(new_foo)) но это как-то очень костыльно выглядит

Никита
11.03.2018
13:17:28
Да нормально выглядит. А функция Foo.changeset определена? Если да, то в нее можно передать мап из структуры. мож поприличнее будет выглядеть.

Evgeny
11.03.2018
13:18:19
но тогда Foo.changeset будет выглядеть неприлично :)

Никита
11.03.2018
13:19:40
ну генераторы феникса делают такие функции и все прилично) но дядьки из феникса в приличиях мало понимают))

Google

Evgeny
11.03.2018
13:20:20
А в стандартной поставке Ecto есть генераторы таких функций?
И еще, какой толк в Repo.insert_or_update, если один хрен надо сначала запрашивать вставляемый_или_обновляемый объект из БД?
Вот есть структура-схема, заполненная. Нужно просто одним запросом либо засунуть ее в БД, либо проапдейтить, если первичный ключ уже существует. Как это сделать?

Alex
11.03.2018
14:39:21

Артем
11.03.2018
15:12:45
Это то же и рельсах насколько я помню
И работает так же

Максим
11.03.2018
15:53:13
Всем привет! Подскажите как сделать красиво. Есть модуль, он реализует определённую функциональность. Нужно сделать такой же, но вызывающий некоторые функции с другим набором аргументов. Дублировать код не хочется. Есть какой-то правильный способ?
и это должен быть именно отдельный модуль.

Evgeny
11.03.2018
16:15:35
.insert_or_update
А пост выше прочитать никак? Да и в своем вопросе я просил одним запросом

Dmitry
11.03.2018
16:15:45
Что подразумевается под дублированием кода? Надо описать возможные варианты функций с разной арностью и вызывать основную функцию. Чтобы сделать Красиво - надо расширить имеющийся модуль, обеспечить полиморфизм функций. Это будет правильно, имхо. А так, можно создать новый модуль, зареквайрить исходный и дописать оставшиеся функции

Evgeny
11.03.2018
16:15:56
И еще, какой толк в Repo.insert_or_update, если один хрен надо сначала запрашивать вставляемый_или_обновляемый объект из БД?
Please note that for this to work, you will have to load existing structs from the database.
отсюда https://hexdocs.pm/ecto/Ecto.Repo.html#c:insert_or_update/2

Максим
11.03.2018
16:45:26
каждая кнопка есть процесс в регистри для пользователя

Aleksandr
11.03.2018
17:36:22

Evgeny
11.03.2018
17:42:02

abc
11.03.2018
18:25:17
кто-нибудь уже пробовал DynamicSupervisor ? Есть проблемы ?

Dmitry
11.03.2018
20:06:26
Кто-то с arangodb игрался или что-то делал?

Google

Aleksandr
11.03.2018
20:41:59

Dmitry
11.03.2018
20:47:38
@avfomin neo4j же по бенчмаркам медленнее же и имеет spof (т.е. master-slave)?

Nikolai
11.03.2018
20:48:33
Прямо сейчас играюсь. Вроде приятная вещь, но раздражает разнородность апи — запросы AQL, транзакции каким-то жаваскриптом.

Aleksandr
11.03.2018
20:49:51
Нам нужна была именно графовая бд, данных мало, нагрузка не большая, победил более выразительный (имхо) язык запросов и вагон инфы на то время (два с лишним года назад)

Dmitry
11.03.2018
20:51:17
@avfomin Ясно, понятно.
@n_vasilenko Да уж, транзакции какие-то на скорую руку сделанные. Благо есть _rev для check-and-replace для консистентного обновления одиночного объекта.
@n_vasilenko Я тоже играюсь.
@n_vasilenko Переделал одну query с postgres-а и она работает в 5-10 раз медлленнее...
И я теперь не понимаю, либо она для обычных query настолько медленнее, либо я что не так сделал.
Очень нерпиятно вместо 40ms иметь response time до 500 ms.

Nikolai
11.03.2018
20:59:59
А это какого плана запросы? Я смотрел в основном всякие поиски кратчайшего пути, проходы вверх-вниз.

Dmitry
11.03.2018
21:04:29
@n_vasilenko Не связанный с графами пока. Вот так выглядит моя query в ecto:
query =
from(
l in Location,
limit: 10,
where: like(l.name, ^("%" <> ilike <> "%")) and l.population > 0,
order_by: [desc: l.population, asc: l.name]
)
- вот так выглядит моя query в arangodb:
{"bindVars":{"v0":"%varhere%"},"query":"FOR e IN location FILTER e.name LIKE @v0 SORT e.population DESC LIMIT 0, 10 RETURN e"}
В обоих случаях name проиндексированны(в случае arangodb skiplist, может другой индекс попробовать?). В случае если я ищу в postgres %a% (worstcase) то это занимает 180ms, в более точных match-ах занимает 40ms, в случае с arangodb - worstcase 520ms, более конкретный запрос 270ms.

Nikolai
11.03.2018
21:07:02
А ты там пробовал EXPLAIN нажимать? У меня на поиск LIKE-ом индекс не применился.

Dmitry
11.03.2018
21:07:24
Хм, может быть.
Ещё не пробовал.

Nikolai
11.03.2018
21:09:22
Query string:
FOR folders IN Folders
FILTER folders.name LIKE "user%"
RETURN folders
Indexes used:
none
Query string:
FOR folders IN Folders
FILTER folders.name == "user"
RETURN folders
Indexes used:
By Type Collection Unique Sparse Selectivity Fields Ranges
6 hash Folders false false 0.01 % [ `name` ] (folders.`name` == "user")
хм. там же у меня hash. он и не должен.

Dmitry
11.03.2018
21:14:55
@n_vasilenko
Arango.Query.explain [from: "location", limit: 10, filter: {"name", :like, "%a%"}, sort: {:desc, "population"}]
=> Про индексы ни слова.
Arango.Query.explain [from: "location", limit: 10, filter: {"name", :==, "test"}, sort: {:desc, "population"}]
=>
indexes: [
%{
deduplicate: true,
fields: ["name"],
id: "6848704",
sparse: false,
type: "skiplist",
unique: false
}
],
@n_vasilenko Так и есть...
Мне ответили в arangodb канале, что стоит попробовать CONTAINS - не использует индекса, но быстрее, либо FULLTEXT.

Google

Nikolai
11.03.2018
21:17:26
> Arango.Query.
А это что за либа такая?

Dmitry
11.03.2018
21:19:09
@n_vasilenko Я свою небольшую написал для тестирования arangodb.

Taras ?
11.03.2018
21:28:02

Dmitry
11.03.2018
21:30:47
@TTaraskin В arangodb - так и сделано, граф - это просто таблица типа edges с индексами на _to и _from.

Aleksandr
11.03.2018
21:30:57

Taras ?
11.03.2018
21:31:21
да что ж все так пиарят этот нео...
включая умников "без нео вы не сможете сделать друзей как в фейсбуке"
жесть просто(((

Aleksandr
11.03.2018
21:36:59
Вероятно, для каких-то задач такой класс бд удобнее. Постгрес замечательный, никто ж не спорит)

Dmitry
11.03.2018
21:40:27
У нас используется titan как графовая db, с преимуществом перед neo4j и postgresql тем, что она не master-slave и скалируется соответственно. arangodb тоже этим отличается, как и dgraph.
Преимущество графовых db - в том, что намного проще писать query - в postgres - нужно рекурсивные сложные SQL писать, которые в графовых db умещаются часто чуть ли ни в одну строчку.

Taras ?
11.03.2018
21:43:18
я сам такого еще не писал, не дошел, слышал только от более опытного коллеги что там не складно и не страшно)

Dmitry
11.03.2018
21:44:36
Писать на gremlin-е(языке предназначенным для графов) графовые запросы - это очень больно.... Наверное с этим ёжиком здесь никто не сталкивался.
Ну, я писал когда-то давно рекурсивные query - не то чтобы страшно, просто многословно, и менее интуитивно, дольше дебажить.

Yuri
12.03.2018
07:54:05
привет, кто как кеширует в фениксе ?

Dmitry
12.03.2018
08:06:38
https://github.com/melpon/memoize

Yuri
12.03.2018
08:11:57
благодарю

Артем
12.03.2018
08:12:27
Посоны. А всё-же-таки. Допустим, есть некий воркер, который вырабатывает события для обработки. Я хочу, чтобы эти события обрабатывал пул воркеров, причём обработка осуществлялась cast(что исключает poolboy). Без очередей и подобных вещей никак не обойтись?
gen_stage тоже исключён из-за обратного давления
мы генерируем события не когда потребители захотят, а когда получится

Google

Артем
12.03.2018
08:20:26
или может у меня просто очередефобия

Dmitry
12.03.2018
08:25:02

Артем
12.03.2018
08:26:54