Size: a a a

2020 June 28

EO

Eugene Obrezkov in Frontend UA
сейчас буду в remark смотреть

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

EO

Eugene Obrezkov in Frontend UA
если через него можно будет ещё и другие входные файлы делать, чтобы слайды можно было писать не только в маркдаун - вообще огонь будет
источник

EO

Eugene Obrezkov in Frontend UA
спасибо @denysdovhan за наводку и @terrysahaidak за наводку наводчика 🙂
источник

DD

Denys Dovhan in Frontend UA
Eugene Obrezkov
если через него можно будет ещё и другие входные файлы делать, чтобы слайды можно было писать не только в маркдаун - вообще огонь будет
я давно не моніторив що там нового і яка там зараз функціональність
загалом звучить як цілком підйомна задача для remark
источник

EO

Eugene Obrezkov in Frontend UA
да, вроде можно

> unified is an interface for processing text with syntax trees and transforming between them. Three syntaxes are connected to unified, each coming with a syntax tree definition, and a parser and stringifier
источник
2020 June 29

EO

Eugene Obrezkov in Frontend UA
продолжая вчерашнюю тему с парсингом markdown
remark это плагин к unified который работает с Universal Syntax Tree - unist, т.е. по факту всё крутится вокруг unified и unist

мало того что они предоставляют как раз то, что я и искал - просто парсер для markdown, так у них ещё и утилиты есть для обхода их дерева

UPD: правда, с типами у них всё сложно :(

https://github.com/syntax-tree/unist-util-visit
источник

NL

Nikita Lyubchich in Frontend UA
Котики, а помогите пожалуйста с SQL, никак не могу придумать как оптимально составить запрос.
Есть таблица А, B и С.
В держит в себе m2m отношение между А и С.
Я хочу составить запрос такого рода: дай мне строки из таблицы А, если о них в таблице В нет ссылок, или если есть - чтобы в них была ссылка на конкретное значение в С.
Пока решается топорным “NOT EXISTS (...) OR EXISTS (...)”, но почему то в голову ничего умнее не приходит
Может у кого есть идеи?
источник

AA

Anna Alimova 👩‍💻... in Frontend UA
Left outer join
источник

AL

Andrey Listochkin in Frontend UA
select *
from A a left outer join B b
on a.id = b.a_id
where
b.c_id = ‘MY_C’
источник

NL

Nikita Lyubchich in Frontend UA
Хех, совсем и забыл про них, хотя идеально подходят. :)
А без join’ов же невозможно сделать, верно? Помню что лучше exists применять если не нужны данные, но в данном случае базе все равно придётся бегать по строкам в двух таблицах
источник

AL

Andrey Listochkin in Frontend UA
Если данные не нужны, вместо * перечисли только те поля, котоые реально будешь запрашивать. Если для этих полей есть индексы - например, ты запрашивешь только a.id - то база сможет тебе результат построить из индекса на A.id без того, чтоб ходить в сами таблицы.

Конкретно у этой задачи большой потенциал того, что запрос будет быстрым
источник

AL

Andrey Listochkin in Frontend UA
Подозресаю, что сеть индексы на A.id, B.a_id, B.c_id - тогда весь поиск делается чисто по индексам.
источник

NL

Nikita Lyubchich in Frontend UA
Ага, пасибки, сейчас буду делать
источник

AL

Andrey Listochkin in Frontend UA
Я хз как оно сработает с теми рядами, у кого в B нет записи, если не будет показывать, добавь or b.c_id is null
источник

EO

Eugene Obrezkov in Frontend UA
@YuriyYarosh ещё углублялся в постгресы, может чего подскажет\добавит
источник

YY

Yuriy Yarosh in Frontend UA
читаю, сек
источник

NL

Nikita Lyubchich in Frontend UA
А, кстати, ещё joinы где-то да норовят устроить перемножение строк, и там где ожидал 10, придёт 100.
Даже если не берёшь значения из них
источник

YY

Yuriy Yarosh in Frontend UA
Nikita Lyubchich
Котики, а помогите пожалуйста с SQL, никак не могу придумать как оптимально составить запрос.
Есть таблица А, B и С.
В держит в себе m2m отношение между А и С.
Я хочу составить запрос такого рода: дай мне строки из таблицы А, если о них в таблице В нет ссылок, или если есть - чтобы в них была ссылка на конкретное значение в С.
Пока решается топорным “NOT EXISTS (...) OR EXISTS (...)”, но почему то в голову ничего умнее не приходит
Может у кого есть идеи?
```
CREATE TABLE A (
 id SERIAL NOT NULL.
 name VARCHAR(64) NOT NULL,

CONSTRAINT a_pk PRIMARY KEY (id)
);

CREATE TABLE A2B (
 a_id INT NOT NULL.
 b_id INT NOT NULL,

CONSTRAINT a2b_pk PRIMARY KEY (a_id, b_id),
CONSTRAINT a2b_a_fk FOREIGN KEY (a_id) REFERENCES  a(id)  ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT a2b_a_fk FOREIGN KEY (a_id) REFERENCES  a(id)  ON DELETE CASCADE ON UPDATE CASCADE,
)

CREATE TABLE B (
 id SERIAL NOT NULL.
 name VARCHAR(64) NOT NULL,

CONSTRAINT b_pk PRIMARY KEY (id)
);

WITH a_not_included AS (
SELECT b_id, a_id FROM A, A2B, B WHERE
A2B.b_id = B.id AND
A2B.a_id != A.id
),  a_included AS (SELECT b_id, a_id FROM A, A2B, B WHERE
 A2B.b_id = B.id AND
 A2B.a_id = A.id
)

SELECT b_id, array_agg(a_not_included.a_id), array_agg(a_included) FROM a_not_included, a_included WHERE a_included.b_id = a_not_included.b_id GROUP BY b_id;
источник

YY

Yuriy Yarosh in Frontend UA
Будет 2 паралельных запроса с full_table scan'ами, не ахти вариант но через COALESCE и CASE  планировщик не разрулит и не впихнёт мемоизацию... желательно запихнуть в materialized view и если надо будет паджинацию на оконных функциях - limit/offset от лукавого короч, не православно совсем.

https://use-the-index-luke.com/sql/partial-results/window-functions
источник

YY

Yuriy Yarosh in Frontend UA
Nikita Lyubchich
А, кстати, ещё joinы где-то да норовят устроить перемножение строк, и там где ожидал 10, придёт 100.
Даже если не берёшь значения из них
Рассматривай JOINы как декартово умножение множеств, на диаграммах венна можно только операции с SET'ами объяснять... уже было короч

https://blog.jooq.org/2016/07/05/say-no-to-venn-diagrams-when-explaining-joins/
источник