
Dmitry
26.05.2016
17:08:26
правда что-ль?
Я лишь хочу сказать что использование лямбд ведет к ничетаемости. Потому что, почти всегда, придется лезть глубже в код, чтобы понять что там эта лямбда делает

Aldar
26.05.2016
17:10:23
?

Артем
26.05.2016
17:10:52
do ... end не используете ещё, потому что это тоже Proc

Google

Aldar
26.05.2016
17:11:12
хмм, не совсем, это блок

Артем
26.05.2016
17:11:34
bloc to proc - слышал надеюсь?
def test(&block)
переданный блок в вызываемом методе превращается в объет Proc
yeild делает по сути block.call
только неявно

Aldar
26.05.2016
17:13:09
Это если есть аргумент перед которым & стоит
а если такого аргумента нет, то просто yield вызывает этот блок

Артем
26.05.2016
17:15:22
он вызовет объект Proc, просто неявно

Antony
26.05.2016
17:54:49
lambda functions ведут к нечитаемости?

Dmitry
26.05.2016
17:59:05

Antony
26.05.2016
17:59:38
ну это так толсто, что даже тонко
предположу, что и concerns тоже зло

Google

Antony
26.05.2016
18:01:23
превращают код в спагетти

Aldar
26.05.2016
18:01:25
руби зло

Antony
26.05.2016
18:01:30
да и хелперы
разнесли понимаешь все
grepанешься искать

Aldar
26.05.2016
18:23:54
Господа, задайте мне пожалуста вопросы для собеседования на рейлс разраба

Aleserche
26.05.2016
18:25:34
почему рельсы, а не что-то другое?

Aldar
26.05.2016
18:26:13
приятный язык
приятный фреймворк
хорошая компания

Antony
26.05.2016
18:30:39
extend и include - в чем разница
если есть extend, зачем тогда concerns в рельсах?

Aldar
26.05.2016
18:31:31
include использует модуль как миксин

Antony
26.05.2016
18:31:36
оу
ну ты сам начал

Aldar
26.05.2016
18:32:05
extend добавляет методы модуля в айгенкласс класса

Dmitry
26.05.2016
18:32:12
ну это так толсто, что даже тонко
Ну.. вот такая вот у меня точка зрения.. Сам кайфую от написания dslов.. Но когда начинаешь разбираться в чужом коде - кровь из глаз хлещет

Aldar
26.05.2016
18:32:13
насколько я помню

Antony
26.05.2016
18:32:14
а module и class в чем тогда разница?

Aldar
26.05.2016
18:32:25
module нельзя инстанцировать

Google

Aldar
26.05.2016
18:33:11
модуль служит как неймспейс ещё

Antony
26.05.2016
18:33:16
а если в модуле self << class написать, то что будет?

Aldar
26.05.2016
18:33:54
self внутри модуля это само объект модуля

Adamtsov
26.05.2016
18:35:24
у юзера есть много постов, что вернет current_user.posts

Aldar
26.05.2016
18:35:30
сейчас, синтаксис забыл чутка

Adamtsov
26.05.2016
18:35:47
и что вернет current_user.posts.limit(10) и почему?

Aldar
26.05.2016
18:38:33

Antony
26.05.2016
18:38:54

Adamtsov
26.05.2016
18:41:09
Ещё спрашивают чем lamba от Блока отличается и чем lamba от proc отличается

Aldar
26.05.2016
18:42:44
Короче self « class нельзя писать

Aleserche
26.05.2016
18:44:58
мы вам позвоним

Aldar
26.05.2016
18:46:14
я когда только прочитал well grounded rubyist всё помнил, а теперь подзабыл

Antony
26.05.2016
18:46:59
ну а даже class << self
в случае модуля?)

Aleserche
26.05.2016
18:47:22
а потому что практика нужна. Можно хоть сотню книжек прочесть

Aldar
26.05.2016
18:47:40
погодите, когда пишу current_user.posts то запроса не будет к базе
если напишу current_user.posts.all тогда будет вроде

Adamtsov
26.05.2016
18:51:27
а почему можно делать цепочки вызовов и они работают?

Google

Adamtsov
26.05.2016
18:51:36
и еще могу одно задание скинуть

Aldar
26.05.2016
18:51:39
arel работает
мы создаём цепочки вызовов, когда надо реально получить объекты - arel собирает и делает запрос к бд

Adamtsov
26.05.2016
18:52:30
User
Post
Like
Friendship
User has_many :posts, :through => :likes
User has_many :friends, :through => :friendships
у нас есть current_user
надо получить 50 последних постов и для каждого поста список друзей current_user, лайкнувших этот пост
типа мильоны друзей , лайков

Aldar
26.05.2016
18:54:09
на какие вопросы я верно ответил?

Admin
ERROR: S client not available

Adamtsov
26.05.2016
18:54:29
про цепочку вроде верно, хотя я правильного ответа сам точно не знаю)
вот про "50 последних постов и для каждого поста список друзей current_user, лайкнувших этот пост" знаю

Aldar
26.05.2016
19:01:43
так и хочется тупо SQL запрос написать)

Adamtsov
26.05.2016
19:02:31
попробуй )
главное же результат
денормализация БД, редис/мемкеш - вот еще подсказки

Aldar
26.05.2016
19:12:18
по поводу денормализации, можно попробовать слить likes и friendships в одну таблицу
получается зная пост, можно сразу найти кто его лайкнул, и кто друг лайкнувшего
user_id, post_id, friend_id
получается зная post_id
мы находим тех кто лайкнул этот пост - user_id

Google

Aldar
26.05.2016
19:17:14
и потом среди них тех у кого current_user.id равно friend_id
чото бошка под вечер не варит, столько за сегодня перечитал
если запрос писать, то для каждого поста тут будет джойн юзеров кто лайкнул этот пост, потом будет джойн для определения дружбы с current_user
что можно в редисе держать?
надо подумать
в редисе можно держать последние 50 постов и тех кто их лайкнул

[Anonymous]
26.05.2016
19:24:00
Держи в Redis'e все посты.
Которые есть в системе.

Aldar
26.05.2016
19:24:14
да, вообще всю бд

[Anonymous]
26.05.2016
19:24:20
Зачем, только посты и связи.
В чём проблема?

Aldar
26.05.2016
19:24:30
я шучу

[Anonymous]
26.05.2016
19:24:39
Я бы так и сделал.

Aldar
26.05.2016
19:24:48
ну нормально держать последние 50 постов, и юзеров кто эти посты лайкнул

[Anonymous]
26.05.2016
19:24:48
Если конечно главная проблема - это скорость работы.
А не сложность запросов.

Aldar
26.05.2016
19:25:19
а потом уже среди них искать друзей текущего пользователя
ну так если постов миллионы и юзеров)

[Anonymous]
26.05.2016
19:31:04
?

Adamtsov
26.05.2016
19:37:11
Ну я делал , в posts сохранял id всех юзеров кто Лайкал данный пост
Потом в users хранил Id друзей