
Alex
07.05.2018
17:53:24

Alex
07.05.2018
17:53:52
query = "SELECT CASE WHEN extract_long_from_ip('#{ip}') <= endip\n
THEN geo_ip_city_id\n
ELSE NULL END AS geo_ip_city_id\n
FROM geo_ip_addresses\n
WHERE startip <= extract_long_from_ip('#{ip}')\n
ORDER BY startip DESC\n
LIMIT 1;"
result = ApplicationRecord.connection.execute(query).to_a

Alex
07.05.2018
17:54:16
да это то что я ожидал, а юзается на практике ?

Alex
07.05.2018
17:54:21
extract_long_from_ip
это функция, которую я добавил в postgres

Google

Andrey
07.05.2018
17:55:59

Александр
07.05.2018
17:56:44
контроллер заказа?
простите за глупый вопрос

Andrey
07.05.2018
17:57:13
ну да

Alex
07.05.2018
17:57:28
ну index например

Александр
07.05.2018
17:57:59
ага, спасибо за помощь)

Andrey
07.05.2018
18:05:07
def index
orders = Order.all.includes(:dishes)
respond_with orders, serializer: OrderSerializer
end
class OrderSerializer < ActiveModel::Serializer
root false
attributes :id, :dishes_names, :total_price
def dishes_names
object.dishes.pluck(:name)
end
def total_price
object.dishes.sum(:price)
end
end
Что-то в таком духе

Александр
07.05.2018
18:06:18
понял)

Alex
07.05.2018
18:20:04
Хотя тут очевидно через сериалайзер быстрее
сегодня прям день готовых ответов на канале

Andrey
07.05.2018
18:27:54
Хотя тут очевидно через сериалайзер быстрее
Не очевидно. Мое решение явно неоптимальное. Потому что скорее всего0 получается по два запроса на каждый заказ =)) Зато красиво )) Самое правильное все таки собрать через JOIN или еще как, но одним запросом.

Alex
07.05.2018
18:29:08

Google

Andrey
07.05.2018
18:29:11
Потому что не только сам запрос в базе выполняется несколько раз но и задержки на вызов и получение из базы из ruby будут отнимать много времени.

Alex
07.05.2018
18:29:18
сам задал вопрос, сам ответил, быстрее через сериалайзер

Andrey
07.05.2018
18:29:54
Мне кажется тож на тож ))

Alex
07.05.2018
18:30:18
object.dishes.sum(:price)
если вот это заменить на object.dishes.pluck(:price).sum
то будет 2 запроса на всю коллекцию

Andrey
07.05.2018
18:30:36
ага

Alex
07.05.2018
18:32:29
в базах данных Join самая дорогая операция же ?

Andrey
07.05.2018
18:32:34
не будет один запрос
а sum вызовется у массива

Alex
07.05.2018
18:33:26
в моем случае да, а массив объектов вложенных выгрузится вместе с массивом заказов

Alex
07.05.2018
18:35:41
читаю просто книгу - пишут : Одной из наиболее дорогостоящих операций при выполнении оператора select является операция соединения таблиц.

Alex
07.05.2018
18:35:46
ILIKE тоже думаю не дешевая на больших объемах

Alex
07.05.2018
18:36:07
там это пишут в рассуждениях о количестве отношений
по русски таблиц

Alex
07.05.2018
18:37:22
я не проверял, но считаю, что на небольших объемах дешевле сделать 2 запроса в БД, чем 1 но джоин, может я ошибаюсь.
тоесть есть 2 большие таблицы, надо выбрать из одной 10 элементов и потом из другой на основании предыдущей выборки выбрать еще 20
может Андрей меня поправит

Alex
07.05.2018
18:39:00
хм, я ещё не готов спорить на такую тему, но считаю что операции силами самой бд всегда дешевле внешних запросов обрабатываемых внешней системой

Google

Alex
07.05.2018
18:40:40
и тут можно поспорить
в базу есть задержка на вызов, как говорил Андрей выше

Alex
07.05.2018
18:41:13
ну иначе не было бы особого смысла нормализовать бд

Alex
07.05.2018
18:41:42
ну реляционные бд у нас не считаются высоко производительными

Andrey
07.05.2018
18:42:30
Нормализуй не нормализуй все равно приходится дублировать информацию. Чтобы поменьше join делать.

Alex
07.05.2018
18:43:01
вот выше пример, посчитать из массива сумму в РАЗЫ быстрее, чем для каждого элемента из БД

Andrey
07.05.2018
18:50:06
Собрать все данные со всеми расчетами в базе будет все же быстрее. Но код сложнее пишется и выглядит.руби медленней постгреса :)

Alex
07.05.2018
18:50:36
есть над чем подумать)

Andrey
07.05.2018
18:53:44
Пока ты думаешь кто то получает реальный опыт. И потом будет твоим начальником не прочитав и половины того ты прочитал. И будет получать в пять раз больше. Вот.

Alex
07.05.2018
18:57:54
золотые слова
Хотя я ему по белому завидую, я наверняка и половины того, что он прочитал не прочту за ближайшие год - два

Alex
07.05.2018
18:58:21
если смогу собеседование пройти, обязательно перестану заниматься фигней)

ToyTrexx?
07.05.2018
18:59:13
На счет чтения
Может модератор составит список литературы обязательной к прочтению.
?

Alex
07.05.2018
18:59:53
это надо у Ro спрашивать
а и не будет единого мнения что читать
у меня свой список для рекомендации, и вряд-ли с ним согласятся) знаю только с какими двумя книгами тут всерее всего все согласятся)

ToyTrexx?
07.05.2018
19:01:09
Если не сложно скинь ссылки на них поглядеть

Google

Alex
07.05.2018
19:03:24
Если не сложно скинь ссылки на них поглядеть
https://vk.com/wall-54530371_22
https://www.htbook.ru/kompjutery_i_seti/setevye_tekhnologii/ruby-on-rails-dlya-nachinayuschih
желательно это же на английском в последних изданиях

ToyTrexx?
07.05.2018
19:04:05
Спасибо

Admin
ERROR: S client not available

Alexander
08.05.2018
08:31:46
Одмины, взываю к вам!!!
Прибери пожалуйста

Kim
08.05.2018
08:57:04
ERROR in ./source/stylesheets/app.css.scss
Module parse failed: Unexpected character '@' (1:0)
You may need an appropriate loader to handle this file type.
| @charset "utf-8";
|
| @import "normalize";
@ ./source/javascripts/all.js 13:0-23
кто в вебпаке силен?
что написано я понимаю
но непонятно как пофиксить. пока гугление ни к чему не привело

Никита
08.05.2018
09:07:15
@ не нравится в самом начале
И тебе 'может быть нужен соответствующий лоадер (модуль) для того, чтобы работать с файлами такого типа'
Как-то так, но в вебпэке особо не шарю

Andrey
08.05.2018
09:14:57
https://sass-scss.ru/documentation/ispolzovanie_sass/kodirovka.html
тут написано что UTF-8 по дефолту. в другом месте писали что надо UTF-8 обязательно в верхнем регистре писать
но я не шарю )

Vladimir
08.05.2018
10:21:38

Alexander
08.05.2018
10:23:04
крут

Vladimir
08.05.2018
10:24:04
на майские праздники если есть #админы, то на лого поставят ;) @ro31337 @dronixa @svetarybalkina

?
08.05.2018
10:26:16
Здравствуйте, позвольте задать глупый вопрос, над которым ломаю голову два дня. Очень глупый
Я настроил elastcsearch, и из консоли он ищет то что нужно. вопрос, а как сделать это чтобы через вьюху можно было найти?
то есть, на 1 странице поиск и вывод ней же, только ниже.
я пробовал сделать нечто такое:
view:
<%= form_tag(controller: 'catalog', action: 'search_ajax', method: "get") do %>
<input class="form-control" id="search-text" type="text" name="search" placeholder="Поиск по ..." data-search>
<button class="btn btn-default btn-search">Искать</button>
<% end %>
controller:
def search_ajax
@article = Article.search(params[:search]).results.to_a
end

Fedor
08.05.2018
10:42:50
дебажить надо
скорее всего у тебя под это вьюхи нет и потому надо делать что-то вида
def search_ajax
articles = Article.search...
render json: articles
end

Google

Fedor
08.05.2018
10:44:13
а потом при помощи js надо парсчить json и отрисовывать

?
08.05.2018
10:45:52

Fedor
08.05.2018
10:46:30
ох...
ты представляешь как работает ajax ?
по сути твой клиент при помощи js отправляет отдельный запрос на сервер, который ищет данные и возвращает ответ, который при помощи JS как-то обрабатывается
тоесть тебе нужный отдельный метод в контроллере, отдельный роут для него и либо отдельная вьюха, либо отдавай сразу json

Dmitry
08.05.2018
13:10:55
лопни мои глаза

Egor
08.05.2018
13:31:53
Мдааа

V
08.05.2018
13:31:55
? это пздец

Stanislav
08.05.2018
13:33:55
патриотично же(нет)

Евгений
08.05.2018
13:38:20
Похоже, эта красная штука в логотипе чатика символизирует перекованное орало (символ трудолюбия и твердости), которым пашут гранит науки с таким задором, что искры летят!

Natalia
08.05.2018
13:40:35
рубин науки