Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2019 August 13

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Делали вот так:
- один запрос тащит только посты select * from posts where ...
- потом берешь ID всех постов и другой запрос тащит только репосты или лайки select * from likes where postId in (...., ...., ...)
- причем количество лайков может чуть позже с сервера подгружаться
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Точно так же с юзерами можно. Не джойнить их на уровне БД а вытащить посты, взять все userId из постов, вытащить пользователей по ID. Но это уже по ситуации смотрите сразу джойном писать или отдельно тащить
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Лучше всего в данном случае вообще базу данных не шатать. Для подсчета количества чего-либо проще держать счетчик где-то в памяти, в чем-то memcached|redis-о подобном или на крайняк в базе данных. Далее, дабы счетсики были более-менее актуальны - просто при записи сущности инкриментировать счетчик, при удалении - наоборот. Сама по себе информация с количеством в особой точности не нуждается, поэтому ее можно складировать отдельно и на всякий случай раз в какой-то промежуток времени обновлять.

Можно еще такие данные хранить в отдельной вьюхе, которая будет сама обновляться периодически. В свое время я так делал, только в качестве базы был couchbase. Но суть подхода остается та же.

Нет запросов к базе данных - нет проблем :).
источник

А

Андрей in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Лучше всего в данном случае вообще базу данных не шатать. Для подсчета количества чего-либо проще держать счетчик где-то в памяти, в чем-то memcached|redis-о подобном или на крайняк в базе данных. Далее, дабы счетсики были более-менее актуальны - просто при записи сущности инкриментировать счетчик, при удалении - наоборот. Сама по себе информация с количеством в особой точности не нуждается, поэтому ее можно складировать отдельно и на всякий случай раз в какой-то промежуток времени обновлять.

Можно еще такие данные хранить в отдельной вьюхе, которая будет сама обновляться периодически. В свое время я так делал, только в качестве базы был couchbase. Но суть подхода остается та же.

Нет запросов к базе данных - нет проблем :).
Вы придлагаете триггеры создать на создание комментов, лайков и репостов?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Андрей
Вы придлагаете триггеры создать на создание комментов, лайков и репостов?
Зависит от того, как вы это реализуете. Можно тригерами (если хранить все в одной бд), можно в коде - если будет хранится где-то в другом месте.
источник

А

Андрей in NodeUA - JavaScript and Node.js in Ukraine
Alexander
Зависит от того, как вы это реализуете. Можно тригерами (если хранить все в одной бд), можно в коде - если будет хранится где-то в другом месте.
Понял. Спасибо
источник

А

Андрей in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
Делали вот так:
- один запрос тащит только посты select * from posts where ...
- потом берешь ID всех постов и другой запрос тащит только репосты или лайки select * from likes where postId in (...., ...., ...)
- причем количество лайков может чуть позже с сервера подгружаться
И вам тоже спасибо
источник

А

Андрей in NodeUA - JavaScript and Node.js in Ukraine
Пищи для размышлений не мало дали )
источник

Dd

Dmitry darkdim in NodeUA - JavaScript and Node.js in Ukraine
Андрей
Всем привет! Столкнулся с проблемой во время создания социальной сети. Уменя есть таблица Постов, Картинок для постов, Комментариев, Лайков и Пользавателей. У таблицы Постов есть поле repostedTo для связи один ко многим на саму себя. Нужно получить ленту, что приводит к вот такому SQL запросу:

SELECT posts.*,
 u."nickName",
 u."firstName",
 u."lastName",
 u.photo,
 pI.image AS image,
 pI."isMain" AS "isMain",
 "repostedPost".id AS "rpId",
 "repostedPost"."userId" AS "rpUserId",
 "repostedPost"."createdAt" AS "rpCreatedAt",
 "repostedPost".type AS "rpType",
 "repostedPost".text AS "rpText",
 rpI.image AS "rpImage",
 rpI."isMain" AS "rpIsMainImage",
 ur."firstName" AS "urFirstName",
 ur."lastName" AS "urLastName",
 ur."nickName" AS "urNickName",
 ur."photo" AS "urPhoto",
 COUNT(DISTINCT rp.id) AS "repostsCount",
 COUNT(DISTINCT likes."userId") AS "likesCount",
 COUNT(DISTINCT comments.id) AS "commentsCount"
FROM (SELECT id, "userId", "createdAt", "repostTo", type, text
FROM posts
WHERE ${condition}
ORDER BY "createdAt" ASC
LIMIT ? OFFSET ?) AS posts
 LEFT JOIN users AS u on u.id = posts."userId"
 LEFT JOIN likes AS "likes" on posts.id = likes."postId"
 LEFT JOIN comments AS "comments" on posts.id = comments."postId"
 LEFT JOIN posts AS rp on posts.id = rp."repostTo"
 LEFT JOIN "postImages" pI on posts.id = pI."postId"
 LEFT JOIN posts "repostedPost" on "repostedPost".id = posts."repostTo"
 LEFT JOIN "postImages" rpI on "repostedPost".id = rpI."postId"
 LEFT JOIN users ur on "repostedPost"."userId" = ur.id
GROUP BY pI.image, pI."isMain", posts."repostTo", posts.id, posts."userId", posts."createdAt", posts.type, posts.text,
u."nickName",
u."firstName",
u."lastName",
u.photo, "repostedPost".id,
"repostedPost"."userId",
"repostedPost"."createdAt",
"repostedPost"."repostTo",
"repostedPost".type,
"repostedPost".text, ur."firstName",
ur."lastName",
ur."nickName",
ur."photo", rpI.image,
rpI."isMain";

Нужен совет, как можно это сделать лучше?
даю совет:  ложить простыню кода в какой-нибудь сандбокс и давать линк, плз.
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
YouTube
Разделяемая память в многопоточном Node.js. Тимур Шемсединов. JS Fest 2019 Spring
The talk from JS Fest conference in Kyiv, Ukraine.

Совсем недавно worker_threads появился в Node.js, а вместе с SharedArrayBuffer и Atomics стало возможным создавать многопоточные приложения с разделяемой памятью, а значит в Node.js теперь возможно не только асинхронное, но и параллельное программирование с его абстракциями: критические секции, состояние гонки, дедлоки и лайвлоки, блокировки и синхронизация, семафоры и счетчики, мьютексы, мониторы и прочие проблемы и решения, накопленные в многопоточных языках. Я дам обзор с примерами кода, а так же кейсы применения worker_threads в Node.js и практическая польза от этого. Так же, краткий перечень еще не решенных проблем с воркерами, возможно, кого-то это заинтересует начать контрибьютить в Node.js.

Presentation: https://bit.ly/2VvcukX
Fb: https://www.facebook.com/JSFestua/
Website: http://jsfest.com.ua/

Upcoming JS Conference:
JS Fest 2020 - 30-31st of October, Kyiv, Ukraine
Details and tickets: https://bit.ly/3bBxiiK
источник

VK

Vitalii Kukhar in NodeUA - JavaScript and Node.js in Ukraine
@tshemsedinov Благодарю!
источник

ro

roma ogurchik in NodeUA - JavaScript and Node.js in Ukraine
Растрельные списки хехе
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
источник
2019 August 14

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Почти все темы асинхронного программироввния уже есть в специализированном курсе https://m.habr.com/ru/post/452974/
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Переслано от Stanislav
Посмотрел последнее видео про конкурентное программирование. Хотелось бы знать какие топики буду раскрыты в курсе?
1) Асинхронное программирование
2) Параллельное программирование
3) Модель Акторов
4) Корутины
5) map/reduce
6) Сети Петри
и какие еще бывают виды…
Увы не силен в этой теме, хотелось бы разобраться
источник

BY

Bohdan Yurchuk in NodeUA - JavaScript and Node.js in Ukraine
Кто скажет результат без проверки в консоли?)
('b' + 'a' + + 'a' + 'a').toLowerCase();
источник

AG

Andrey Gonchar in NodeUA - JavaScript and Node.js in Ukraine
banana
источник

ПЗ

Павел Зубков... in NodeUA - JavaScript and Node.js in Ukraine
Bohdan Yurchuk
Кто скажет результат без проверки в консоли?)
('b' + 'a' + + 'a' + 'a').toLowerCase();
Унаный плюс переда 'а', не преобразует в NaN?
источник

BY

Bohdan Yurchuk in NodeUA - JavaScript and Node.js in Ukraine
Павел Зубков
Унаный плюс переда 'а', не преобразует в NaN?
переобразует читай с права на лево такие виражения
источник

VS

Vlad Skrygun in NodeUA - JavaScript and Node.js in Ukraine
хтось використовував jsdoc?
як зробити щоб воно виводило ім'я файлів по вказаному мною патерну, а не по дефолту name.html && name.js.html
источник