@rubyschool

Страница 249 из 921
Zulkar
17.07.2017
19:30:08
почему он должен его лочить?

Klim
17.07.2017
19:30:11
пока ты не сделаешь, что он просит, ничего не выйдет.

Zulkar
17.07.2017
19:30:36
ты его поставил по дефолту?

Klim
17.07.2017
19:30:37
https://rvm.io/integration/zsh ищи тут свою конфигурацию.

Google
Zulkar
17.07.2017
19:30:50
версию руби?

spartakusQ
17.07.2017
19:31:08
@ro31337 а ты можешь посмотреть что у тебя в .zshenv находится?

только напутствие

чтобы использовать bundler

zsh + oh my zsh If you want to use oh my zsh be sure not to use the bundler package. If rvm should take care of everything this would do for you anyways.

и всё

Ya
17.07.2017
19:37:17
А zsh + iTerm не то ?

spartakusQ
17.07.2017
19:37:38
так

а удалять и преустанавливать в каком порядке лучше?

Klim
17.07.2017
19:41:14
поджди удалять. глянь тут ответы https://stackoverflow.com/questions/4755538/rvm-is-not-working-in-zsh

Google
spartakusQ
17.07.2017
19:42:55
не сработало

Klim
17.07.2017
19:43:41
я сдаюсь :)

спроси в большой конфе, может помогут.

Sergey
17.07.2017
19:53:10
to Ro

spartakusQ
17.07.2017
19:53:38
впринципе понятно что делать

Klim
17.07.2017
19:54:36
https://t.me/rubylang

spartakusQ
17.07.2017
19:54:48
я уже спрашивал этот вопрос, но чёт меня проигнорили

надо как-то заставить zsh логиниться автоматом

Sergey
17.07.2017
19:56:21
to RO: система win 7, начинаю постигать 50 извращений руби на винде, 2ой системой стоит mint, но т.к . я пока полный профан в рубях, смотрю уроки именно в виндах

Ro
18.07.2017
03:19:38
to RO: система win 7, начинаю постигать 50 извращений руби на винде, 2ой системой стоит mint, но т.к . я пока полный профан в рубях, смотрю уроки именно в виндах
ну ты не спеши особо, тебе задача пока - настроить текстовый редактор в mint (напр.Atom), ну и разобраться с терминалом, основные команды

поверь, в линуксе тебе проще будет, винда дает попроще вход, но намного сложнее потом

Nikolai
18.07.2017
11:41:37
Всем привет

Мне тут тестовое задание скинули

Код для рефакторинга

Показываю чисто поржать



Я бы в самом сильном помешательстве не создал этот ад

spartakusQ
18.07.2017
11:43:52
Radzhab
18.07.2017
11:43:54
)) ппц

Google
Nikolai
18.07.2017
11:44:37
Алсо, мне надо будет сегодня ЭТО рефакторить

Может кто глянет незамыленным взглядом, какие тут косяки имеются?

Nikolai
18.07.2017
11:45:55
Я, естественно, вижу тут кучу всего. Но исхожу из мнения, что один ум хорошо, а много - лучше

Fuzzy
18.07.2017
11:46:38
я вижу только INZERT INTO, все остальное отлично, респект таким парням

?

Nikolai
18.07.2017
11:47:05
Я только сейчас это увидел

Fuzzy
18.07.2017
11:47:21
у меня почему-то глаз всегда опечатки находит первым делом

Nikolay
18.07.2017
11:47:41
Они кажется решили стебануться над php

Fuzzy
18.07.2017
11:48:23
прямые переводы с русского на английский тоже всегда радуют. basket.

Radzhab
18.07.2017
11:48:28
ограничения 10 товаров в корзине имхо лучше вывести в модель

spartakusQ
18.07.2017
11:48:37
spartakusQ
18.07.2017
11:48:41
и там всё норм

Andrey
18.07.2017
11:48:42
class BasketsController < ApplicationController

Radzhab
18.07.2017
11:48:54
добавление товаров лучше делать через ORM

Nikolay
18.07.2017
11:50:02
Тут рефакторить нечего, все сжечь )

Fuzzy
18.07.2017
11:50:33
ой, он там еще глобальными переменными пользуется. точно сжечь

мамдорогая

Nikolay
18.07.2017
11:50:57
Ну это же спецом все

Nikolai
18.07.2017
11:51:00
Вообще, тут нужно не столько рефакторить, сколько контекст выстраивать вокруг этого

Google
spartakusQ
18.07.2017
11:51:14
ну 9 строка, 15 точно можно

Fuzzy
18.07.2017
11:51:30
Ну это же спецом все
угу, на эмоции давят

Nikolay
18.07.2017
11:51:46
Сделай как это положено в рельсах

Fuzzy
18.07.2017
11:52:49
и потом, если это активрекорд, то нахера там сиквел вообще?

причем еще и антисанитарный

Nikolai
18.07.2017
11:53:36
Fuzzy
18.07.2017
11:54:27
ретурн в конце - как вишенка на торте =)

Nikolay
18.07.2017
11:55:09
Мне почему-то нравится задание, видимо с юмором товарищи

Admin
ERROR: S client not available

spartakusQ
18.07.2017
11:55:44
Fuzzy
18.07.2017
11:56:33
а вообще вот когда даются такие задания на рефакторинг, их нужно обязательно исправлять? или допускается написать заново с той же функциональностью, но не через жопу?

Nikolay
18.07.2017
11:56:45
Только смущает, если правда рефакторинг, что значит, чтобы это продолжило работать в текущем проекте

Напиши два варианта

Хотя, может не надо делать то, что не просят )

Natalia
18.07.2017
12:07:18
Господа

Есть у кого-нибудь хорошие идеи, как лаконично осуществить

a ||= b

когда у нас не 2, а 3 варианта с определенной последовательностью приоритетов

Zulkar
18.07.2017
12:14:29
когда у нас не 2, а 3 варианта с определенной последовательностью приоритетов
def method a ||= begin b = home_address if prefers_home_address? b = work_address unless b b = addresses.first unless b end end

Nikolai
18.07.2017
17:42:10
господа, вопрос

Google
Ro
18.07.2017
17:42:21
1. Контроллер не RESTful. add_to_basket может быть заменено на update. DHH говорит, когда возникает соблазн добавить не restful метод, он добавляет контроллер. Ничего плохого в существующем названии метода нет на мой взгляд, но я бы рассмотрел возможность заменить его на один из методов REST. 2. find_by_title - говеная функция, не надо искать по title обычно никогда. Т.к. title может меняться в процессе. Нужно юзать id. Вопрос в том, что это будет, sequential id или какой-то хеш или guid. В первом случае существует риск раскрытия инфы о том, какое количество item'ов существует в магазине. 3. params[:item_title] или params[:id] делать не надо, надо явно юзать whitelisting через permit. 4. $basket - хуйня, не должно этого быть. Корзина должна быть 1) одна 2) привязаной к текущему пользователю или сессии (зависит от того, хотим ли мы анонимным юзерам разрешить добавлять в корзину). В любом случае, метод basket можно вынести в Application Controller, и обращаться к нему во всех контроллерах. Например, в header'е возможно потребуется узнать сколько item'ов в баскете. Т.е. строку 5 вообще я бы убрал 5. Строки 9-11, rails way - сделать это через валидацию модели. Ну а это заменить методом is_valid?. Плюс пропущен return - если слишком много товаров, то они все равно добавляются почему-то. 6. 15-19, как я уже объяснил в (4) basket лучше вынести. И сделать это объектом. В объекте будет метод total, поэтому не надо будет считать каждый раз в разных местах, метод total будет доступен. Например вызываешь basket.total и все - всегда актуальная инфа. 7. Гадить в сессию на строке 19 я бы не стал. В сессии можно держать basket_id, для доступа к basket как я описал в (4). Но опять же - инкапсуляция, а значит этих деталей в BasketController не видно. 8. 21 - тут классический sql injection + неверный SQL (INZERT - не такого, есть INSERT). Еcли basket это будет модель, то достаточно будет вызова на строке 7. Ну может .save надо будет добавить. 9. 24 - тоже не нужно по причинам из (8). 10. 26 похоже на code smell. Непонятно почему доставка добавляется таким непонятным способом в basket. Если мы хотим добавлять доставку, то надо ее вынести в lib, чтобы было легче протестировать логику, ну и вообще это бизнес-логика, желательно не держать ее в контроллере. 11. Возвращается html, но title не проверяется на HTML injection. Возвращать html вообще не надо почти никогда. Результат должен быть или render view, или json. 12. Строковые константы (строка 10, 28) надо вынести в locales и обращаться по ключу. 13. Код не отформатирован. Строки 21, 24.

Nikolai
18.07.2017
17:43:01
1. Контроллер не RESTful. add_to_basket может быть заменено на update. DHH говорит, когда возникает соблазн добавить не restful метод, он добавляет контроллер. Ничего плохого в существующем названии метода нет на мой взгляд, но я бы рассмотрел возможность заменить его на один из методов REST. 2. find_by_title - говеная функция, не надо искать по title обычно никогда. Т.к. title может меняться в процессе. Нужно юзать id. Вопрос в том, что это будет, sequential id или какой-то хеш или guid. В первом случае существует риск раскрытия инфы о том, какое количество item'ов существует в магазине. 3. params[:item_title] или params[:id] делать не надо, надо явно юзать whitelisting через permit. 4. $basket - хуйня, не должно этого быть. Корзина должна быть 1) одна 2) привязаной к текущему пользователю или сессии (зависит от того, хотим ли мы анонимным юзерам разрешить добавлять в корзину). В любом случае, метод basket можно вынести в Application Controller, и обращаться к нему во всех контроллерах. Например, в header'е возможно потребуется узнать сколько item'ов в баскете. Т.е. строку 5 вообще я бы убрал 5. Строки 9-11, rails way - сделать это через валидацию модели. Ну а это заменить методом is_valid?. Плюс пропущен return - если слишком много товаров, то они все равно добавляются почему-то. 6. 15-19, как я уже объяснил в (4) basket лучше вынести. И сделать это объектом. В объекте будет метод total, поэтому не надо будет считать каждый раз в разных местах, метод total будет доступен. Например вызываешь basket.total и все - всегда актуальная инфа. 7. Гадить в сессию на строке 19 я бы не стал. В сессии можно держать basket_id, для доступа к basket как я описал в (4). Но опять же - инкапсуляция, а значит этих деталей в BasketController не видно. 8. 21 - тут классический sql injection + неверный SQL (INZERT - не такого, есть INSERT). Еcли basket это будет модель, то достаточно будет вызова на строке 7. Ну может .save надо будет добавить. 9. 24 - тоже не нужно по причинам из (8). 10. 26 похоже на code smell. Непонятно почему доставка добавляется таким непонятным способом в basket. Если мы хотим добавлять доставку, то надо ее вынести в lib, чтобы было легче протестировать логику, ну и вообще это бизнес-логика, желательно не держать ее в контроллере. 11. Возвращается html, но title не проверяется на HTML injection. Возвращать html вообще не надо почти никогда. Результат должен быть или render view, или json. 12. Строковые константы (строка 10, 28) надо вынести в locales и обращаться по ключу. 13. Код не отформатирован. Строки 21, 24.
Роман, огромное спасибо

Nikolay
18.07.2017
17:54:49
В закладки

Dmitry
18.07.2017
18:07:46
домашку списал считай

Nikolai
18.07.2017
18:08:10
ну я всё в этой жизни списываю обычно)

Ro
18.07.2017
18:08:27
хочешь жить - умей вертеться))

Nikolai
18.07.2017
18:11:05
в общем, стоило из резюме на hh убрать слово Junior, и предложения пошли валом просто)

и цену поднять с 45к до 60

Nikolay
18.07.2017
18:11:24
Интересно )

Nikolai
18.07.2017
18:11:47
обычный закон рынка

продавай картошку по 10 рублей кг - никто не купит. продавай по 80 и добавь слово "молодая" - оторвут с руками

Nikolay
18.07.2017
18:13:15
Но молодая на вид и вкус другая

Ro
18.07.2017
18:14:04
кстати, диаграмма - как я представляю отношения между сущностями https://www.planttext.com/plantuml/svg/SoWkIImgAStDuO80fyJYxDGI1IKj9GKjtT82NGKb0pqzGoM5qEBK8YxFajHSP2cWE4Gz5vT3QbuAo1G0

Nikolai
18.07.2017
18:14:05
в этом и соль

Nikolay
18.07.2017
18:14:19
Не в первый раз встречаю ссылки на DHH, а где его читать?

Nikolai
18.07.2017
18:15:07
алсо, я написал, что в нынешнем виде то, что есть это нифига не контроллер Rails

это просто руби-класс, который по воле прогера назван контроллер

Henry
18.07.2017
18:16:05
Не в первый раз встречаю ссылки на DHH, а где его читать?
много в твитере пишет) Прям неумолкая)

Nikolai
18.07.2017
18:16:12
и типа чтобы он стал контроллером Rails, то должен быть унаследован от ApplicaionController, или ActionController::Base, хотя последнее я бы крайне не рекомендовал

я ведь верно всё изложил?

Страница 249 из 921