• Как лечится кризис начинающего программиста?

    Jeiwan
    @Jeiwan
    А по-моему, это отличный и правильный комментарий. Задача программирования в современном мире — решать задачи. В частности, решать задачи бизнеса. Само по себе программирование никому не нужно, кроме группы гиков-технарей.
    И автор вопроса как раз и попал в эту ловушку — программирование ради программирования —, и ему стало скучно (видимо, он не махровый технарь). И решение проблемы для него как раз в этом — найти конкретные прикладные задачи и решать их.
  • Какую область прокачать для работы на фрилансе (Графика, Программирование)?

    Jeiwan
    @Jeiwan
    Сергей: да нету правильных путей — всё это хрень собачья. Делай, что хочешь :) Весь мир — для тебя :) Пройди свой уникальный путь :)
    Одно могу сказать, что бэкэнд и рисование/дизайн сочетаются плохо. Фронтэндщик-дизайнер — таких людей я встречал, а бэкэндщик-дизайнер — нет. Уж слишком разное мышление требуется. Хотя, может, ты и есть тот самый уникум :)
  • С какой книги по AngularJS начать изучение?

    Jeiwan
    @Jeiwan
    Лично мне CodeSchool совершенно не понравился. Пустой курс. Всё, чему там учат, — копипастить. Самостоятельно решать вы там ничего не будете.

    Здоровая книга по Ангуляру вам не нужна. А нужен какой-то базовый минимум, чтобы начать самому делать что-то и дальше уже самостоятельно разбираться во всех тонкостях. Та книга, на которую я дал ссылку, как раз такой минимум и дает.
  • Как сделать has_and_belongs_to_many с сортировкой?

    Jeiwan
    @Jeiwan
    Андрей Андреев: так я же объяснил всё. Идея в том, что сортировать надо не видео, а отношения (products_videos, product_groups_videos). В отношения добавляется колонка, в которой сохраняется порядковый номер отношения. Порядковый номер можно задавать в интерфейсе, можно брать его на основе позиции видео в списке. А можно написать метод, который будет принимать ["","4","1","3"] из параметров и проставлять позиции: product.arrange_videos(["4", "1", "3"])
  • Почему в функцию переданы странные параметры объекта?

    Jeiwan
    @Jeiwan
    Евгений Петров: Какой же вы зануда. Может, ещё расскажите, как это всё работает на уровне микрокоманд процессора?
    Всё то, что вы пишите, вообще никак не относится к вопросу. Автор не спрашивал, как работает сортировка. Ему непонятна была техника передачи в параметрах функции другой функции с заданным количеством параметров. Одним словом, callback. Как устроена сортировка — это вообще дело десятое. Там вообще всё, что угодно, может быть. Суть в том, что если он поймет вот этот непонятый для него финт, то он сам сможет клепать эти функции и реализовывать в них какие ему угодно алгоритмы. И передавать хоть 100 элементов в функцию и проходиться по массиву хоть вдоль, хоть поперек, хоть по диагонали.
    Хватит занудничать и мыслить шаблонами.
  • Почему в функцию переданы странные параметры объекта?

    Jeiwan
    @Jeiwan
    Евгений Петров: Какая. Нахрен. Разница? Какая, нахрен, разница, сколько там элементов? Можно написать функцию, которая берет 50 элементов массива. И что? Это зависит от алгоритма, в конце концов. Я специально написал автору разные функции, чтобы он уловил саму технику, а не закапывался во всяких мелочах. Поймет технику и, при необходимости, сам будет писать такие функции и передавать сколько ему нужно будет элементов.
    Что вам вообще нужно от меня? К чему вообще этот разговор? Какой-то сюр, блин.
  • Почему в функцию переданы странные параметры объекта?

    Jeiwan
    @Jeiwan
    Евгений Петров: Ок. Коллбэк у reduce получает два элемента массива: предыдущий и текущий. Пойдет?
    К чему вы только этот разговор завели, я не понимаю. Автор не уловил этот финт с передачей функции в качестве аргумента и не понял, почему там два параметра. Я и привел ему в пример другие функции, где используется такой же подход, чтобы он потыкал их вручную и разобрался на разных примерах. Сколько там элементов вообще не имеет значения, да хоть их 10 будет — это зависит от функции. И мериться, чья функция принимает больше элементов, я не вижу смысла.
  • Почему в функцию переданы странные параметры объекта?

    Jeiwan
    @Jeiwan
    Евгений Петров: я к тому, что они так же, как и sort, принимают функцию с определенным количеством аргументов. И в этой функции и происходит основная работа. Автора, видимо, смутил такой финт.
    И sort, кстати, тоже перебирает массив поэлементно. А если говорить о количестве параметров, то у map их 3, у forEach — тоже 3, а у reduce – вообще 4.
  • С какого языка программирования начать изучение back-end?

    Jeiwan
    @Jeiwan
    Medusa: слишком много вопросов :) Попробуйте сами! Я пробовал Джанго давным-давно, сделал блог на нем, и в итоге Джанго мне не понравился. Не помню уже, каковы были причины. Вообще, меня с самого начала именно Рельсы привлеки и я делал несколько попыток "оседлать" их, но каждый раз ничего не получалось. И вот однажды я в очередной раз попробовал покорить Рельсы, и всё пошло-поехало.
    Все эти вопросы относительно денег, востребованности, перспективности не имеют значения. Единственный способ стать хорошим, востребованным и высокооплачиваемым специалистом — любить свое дело.
  • С какого языка программирования начать изучение back-end?

    Jeiwan
    @Jeiwan
    Medusa: даже не знаю, не работал с ними. Можете посмотреть количество заказов на Одеске.
  • С какого языка программирования начать изучение back-end?

    Jeiwan
    @Jeiwan
    Medusa: во фрилансе большую роль играют личные качества. Я бы даже сказал, менеджерские. И не у всех эти качества есть и не все хотят их развивать в себе. У человека может быть гора опыта, он может быть супер специалистом, но фриланс может быть совсем не его. Насколько быстро вы сможете научиться самостоятельно решать задачи заказчика в удовлетворительные для него сроки и с соответствующим качеством — зависит только от вас. Может быть, совсем не сможете этим заниматься, даже будучи первоклассным программистом. Тут в первую очередь важно умение понимать другого человека (да, не программисты — тоже люди :) и разговаривать с ним на его языке, а не на языке программиста. А это трудно, блин. :) И это качество сейчас наиболее ценится, так как программирование стало более социальным, чем было раньше. Программирование сегодня (и особенно на руби/рельсах) — это инструмент решения бизнес-задач.
    Если целить во фриланс, то я думаю, что надо минимум пару лет поработать в сложном проекте и делать там разные задачи, а не зацикливаться на чем-то одном. Ну и если брать конкретно руби, то я считаю, что нужно целиться именно на западный рынок, так как у нас ситуация становится всё хуже и хуже.
  • С какого языка программирования начать изучение back-end?

    Jeiwan
    @Jeiwan
    Medusa: ну как тут можно определить? У каждого по-своему: у всех разная мотивация, разное количество доступного времени, разная скорость усваивания материала.
    Главная проблема в RoR для начинающего — его "магия". Рельсы часто преподносят как фреймворк, на котором можно за 10 минут сделать блог, а за 20 — магазин. Да, их можно сделать за это время, но на очень простом уровне и с простым дизайном (Twitter Bootstrap). Это — плюс Рельс и одновременно опасность для новичков: может показаться, что всё просто, что достаточно написать тут строчку, там строчку и — опа! — всё работает. Но когда начинаешь делать что-то чуть более сложное, то всё разваливается, перестает работать и начинает казаться, что Рельсы это полнейшая хрень, и вообще непонятно, как на этом вообще возможно что-то делать. Поэтому тут не обойтись без общего понимания принципов работы web'а. Если есть понимание, как происходит взаимодействие между клиентом и сервером, как сервер обрабатывает запросы, что такое MVC, где MVC в Рельсах, что такое ООП и где ООП в Рельсах, то будет и понимание, как работать с Рельсами. Без этих знаний новичкам даже трудно бывает проходить туториалы по Рельсам: делают что-то, делают, а что — не понимают, и поэтому забрасывают.
    В принципе, если есть свободное время или даже если можете пожертвовать основной работой, то можете попробовать самостоятельно изучить Рельсы, а потом пойти на тот курс, который я порекомендовал выше. Начать можно отсюда — rusrails.ru (это перевод guides.rubyonrails.org). Этого сайта хватит на долгое время, так как на нем содержится довольно полная и подробная информация по всем аспектам Рельс. Еще могу порекомендовать http://mkdev.me: там есть бесплатная книжка-путеводитель по веб-разработке (упор на Рельсы) и платные услуги наставника.
  • С какого языка программирования начать изучение back-end?

    Jeiwan
    @Jeiwan
    Medusa: а вы попробуйте найти вакансию по Синатре. Это ещё сложнее, чем найти по рельсам, так как Синатру обычно используют тогда, когда Рельсы слишком "тяжелы" для решения задачи. То есть его тоже используют не начинающие разработчики. Если все-таки хотите попробовать Рельсы, то могу порекомендовать этот курс — thinknetica.com, но там есть некоторые требования к знанию Рельс, то есть совсем новичков не берут.
    Новичку крайне важно найти первую работу, так как именно на ней можно уже стать специалистом, получить весь необходимый опыт, понять, что и как нужно делать. Проще всего человеку без опыта в веб-разработке начать именно с PHP, так как он используется везде, по нему много информации на русском языке, на нем много работы и именно на нем чаще всего делают блоги, магазины, сайты-визитки — а именно это и надо новичку, чтобы набить руку. Просто нужно выбрать более качественные учебные материалы и стараться всегда писать наиболее правильный код, чтобы не создавать вредных привычек, от которых потом будет трудно избавиться.
  • Как протестировать модуль?

    Jeiwan
    @Jeiwan
    Похоже на то. Я у себя тестировал на простом rspec, не rspec-rails. Возможно, тут влияют какие-то настройки rspec'а или рельс.
  • Как распределить время при обучении программированию?

    Jeiwan
    @Jeiwan
    Поймите, просто так абстрактно ответить на вопрос никто не сможет. Даже если и ответит, далеко не факт, что у вас получится хотя бы приблизительно такие же сроки. Да и зачем знать, кто и как распределит время? Распределите его для себя сами, исходя из своих потребностей и возможностей.
    По поводу ментора. Его можно найти на работе. Поэтому я и написал про задачи: научитесь решать задачи на должном уровне и с должным качеством — сможете устроиться на работу. А на работе уже сможете учиться у других людей или найдете себе наставника. Только я бы рекомендовал вам целиться чуть выше джуниора, где-то между миддлом и джуниором. Джуниором начинать в 40 лет будет совсем не интересно, да и толку, наверное, не много. Лучше немного завысить себе планку и стремиться к ней.
    Ещё наставника можно поискать в сообществах питонистов.
  • Как организовать неймспейсы в Rails?

    Jeiwan
    @Jeiwan
    Weziw: перепроверил у себя — все работает правильно. Может, что-то с инстансными переменными напутано у вас.
  • Как организовать неймспейсы в Rails?

    Jeiwan
    @Jeiwan
    Weziw: тогда можно сделать какой-то такой хелпер:
    form_for with_namespace(post)

    def with_namespace(model)
    [params[:controller].split('/')[0].to_sym, model]
    end
    (сорри, не знаю, как тут разметку делать)
    Но все равно, по-моему, это какой-то костыль. Во вьюхах админа нужно писать form_for [:admin, post], а во вьюхах дэшборда form_for [:dashboard, post]. А у вас все равно, получается, есть общее для двух неймспейсов представление.
  • [param is missing or the value is empty: task] Как решить?

    Jeiwan
    @Jeiwan
    destroy_sys: так здесь нету формы-то :)
    Смотрите. Вы написали стронг параметры:
    params.require(:task).permit(:name, :description)
    Это фильтр, который пропустит только параметры task[name], task[description] и т. д. Но самого параметра task ведь нету, вы его не отправляете. Так зачем вам стронг параметры? Чтобы сделать update? А зачем update? :)

    = link_to complete_task_path(task), method: :post — эта ссылка "отправит" только id (который на самом деле берется из пути) и authenticity_token. task она не отправляет. Да и не нужен он здесь. Вы сами создали себе трудности этим апдейтом. Чтобы отметить таск выполненным, нужен только один параметр — id таска.

    Может, я как-то сумбурно пишу: конец недели, в голове каша :) Вам просто надо разобраться с параметрами/запросами и подумать, зачем вы там (ненужный) update делаете. Я могу, конечно, написать решение, но без понимания всех этих внутренностей (по сути, принципов работы http) на рельсах писать невозможно.
  • Как переназначить пути моделей в Rails?

    Jeiwan
    @Jeiwan
    Boober:
    Почему [:woof, @model] должен быть woof_inner_test_path? А model куда делась?
    Вся проблема в том, что вы перемешали ресурсы. Распутайте этот клубок, разложите по полочкам, где нужно, сделайте scope/namespace, и таких проблем не будет. То есть вы сами себе создали такие проблемы, не следуя конвенциям рельс.