Задать вопрос
Профиль пользователя заблокирован сроком «навсегда» без указания причины
  • Чем можно заменить «drop_receiving_element» для совместимости с Rails 3+?

    shebanoff
    @shebanoff
    Я правильно понимаю, что Вы мигрируете с 2.3 на 3.1+? Ваша проблема скорее всего связана с переездом рельсы на jQuery. Вы пробовали подключить обратно prototype-rails? Судя по всему, этот гем вернет Вам необходимую функциональность (но я бы поискал на Вашем месте альтернативы под jQuery, ведь prototype мертв).
    Ответ написан
  • Движок интернет магазина (php), с полноценным REST API?

    shebanoff
    @shebanoff
    А Вы не рассматривали в качестве варианта SaaS решение? В частности, Shopify.
    Ответ написан
    1 комментарий
  • Есть ли аналоги Chargify/Braintree/Stripe в России?

    shebanoff
    @shebanoff
    Да, совсем недавно ребята из Pays.IO заявили о своем существовании здесь, на хабре. В ближайшее время попробую интеграцию.
    Ответ написан
    Комментировать
  • Каким способом добавить вложения разных типов данных (Аудио, Видео, Документы)?

    shebanoff
    @shebanoff
    Тут нужно решить две задачи.

    1. Связать посты промежуточной сущностью PostAttachment, что позволит использовать аттачмент с разными постами.

    class PostAttachment < ActiveRecord::Base
      belongs_to :post
      belongs_to :attachment
    end
    
    class Post < ActiveRecord::Base
      has_many :post_attachments
      has_many :attachments, through: :post_attachments 
    end
    
    class Attachment < ActiveRecord::Base
      ...
    end
    

    2. Реализовать полиморфизм у самого Аттачмента.

    Можно пойти напрямую, и создать под каждый тип аттачмента свой класс, а затем воспользоваться тем, что предлагает рельса внутри PostAttachment. Таким образом, у Вас получится довольно практичная связь поста с N разных классов.
    Если этот способ кажется грубым, то можно объединить эти N классов в одну табличку с помощью Single Table Inheritance, например вот так. Очевидный плюс, который Вы при этом получите — каждый из классов VideoAttachment, AudioAttachment и т.п. будет явно отделен от самого Attachment. Соответственно, логика будет хорошо разделена.
    Ответ написан
    6 комментариев
  • Как правильно организовать деплой приложения?

    shebanoff
    @shebanoff
    Я увидел в Вашем вопросе две части.

    Как правильно организовать деплой (выкладку работоспособного кода на сервер)?


    В самом простом случае Вам подойдет связка ssh + git pull на сервере. В этом случае на сервер будут доставлены патчи коммитов, которые есть в репозитории, но еще не появились на сервере, т.е. «только обновления файлов, которые сейчас существуют». Этот метод довольно подробно обсудили в ответах на другой вопрос.

    Если хочется автоматизировать процесс, что похвально, то я вижу три доступных инструмента для этого: Capistrano, Mina (мой персональный фаворит) и Vlad the Deployer. Все три проекта схожи по сути. Принцип их работы таков:
    1. Подключиться к целевому серверу.
    2. Залить обновление кода из репозитория.
    3. Выполнить предписанные Вами инструкции (перезапуск демонов, сброс индексов, обновление структуры БД и прочее).
    4. ...
    5. PROFIT!


    Инструменты просты, переход на них — дело одного выходного дня, и может быть сопряжен со сложностями только в связи с новизной.

    Как организовать процесс тестирования?


    Если Вы еще не определились с методикой тестирования (Test Driven Development, Behavior Driven Development, Лень-Driven Development), то Вам следует для начала заняться именно этим.

    Скорее всего, тесты будут выполняться на Вашей локальной машине, пока Вы пишете код. Используя RSpec, я держу открытым Guard. Guard отслеживает изменения в коде и запускает набор юнит-тестов, которые покрывают измененный код. Весь процесс занимает не больше минуты-двух, и особо не напрягает. Как только я вижу провалившийся тест, я меняю код до тех пор, пока он не станет зеленым. Пока тестов мало (это не самый лучший знак, к слову), Вы работаете один, локального запуска перед деплоем может оказаться достаточно — например, чтобы проверить релиз на доступность критического функционала: регистрации, покупки, создание постов и т.п.

    В какой-то момент речь может зайти о Continious Integration. Это возможность иметь стабильный билд в любой отрезок времени, а так же принимать решение о годности каждого отдельного коммита. Сопряжено с деплоем кода на integration-сервер и запуском на нем тестов. Скорее всего, это Вас не интересует, если Вы не работаете в команде. Но, для полноты картины, Вы можете понаблюдать за билдами на Travis CI известных Open Source проектов: Symfony 2 и Ruby on Rails.

    Таким образом


    Вы не указали, какие конкретно инструменты для разработки Вы используете. Если же с деплоем все гораздо проще, то при выборе инструментов для тестирования я рекомендую Вам ориентироваться на те, которые нативны для Вашего основного фреймворка и языка (PHP, если правильно понимаю) и привычны их пользователям. Это позволит быстро применить устоявшиеся практики к Вашему проекту и понять всё на деле.

    Приведите в порядок Ваш репозиторий с кодом, используйте mina для деплоя и запускайте тесты на Вашей локальной рабочей машине. Как только Вы почувствуете, что этого не достаточно — Вы наверняка уже будете знать, куда шагать дальше.
    Ответ написан
    8 комментариев
  • Какие навыки в своей работе Вы используете довольно часто?

    shebanoff
    @shebanoff
    Вспоминаю добрым словом преподавателей русского языка, матана и тервера — трех областей знаний, которые помогают понимать людей, решать задачи и ставить их.
    Ответ написан
    2 комментария
  • Git для небольшой команды?

    shebanoff
    @shebanoff
    Выделю в отдельный ответ, чтобы не затерялось среди комментариев: компиляция ресурсов для изучения Git от Github, исчерпывающий список информации для изучения по теме.
    Ответ написан
    1 комментарий
  • Git для небольшой команды?

    shebanoff
    @shebanoff
    Для меня представляется проблемой нормальный git-workflow в винде (пробовал только Git for Windows). Но могу Вам порекомендовать Github для Windows как эталон рабочих процессов.

    И по поводу проблемы с общим доступом к серверу: научившись использовать ветки git, попробуйте настроить себе capistrano для деплоя (как на локальный, так и на production сервер).
    Ответ написан
    9 комментариев
  • Напомните онлайн сервис для создания макета сайта?

    shebanoff
    @shebanoff
    И еще вариант для мобильных приложений codiqa.com/
    Ответ написан
    Комментировать
  • Какую систему управления проектом выбрать?

    shebanoff
    @shebanoff
    Я думаю, что все зависит от конечной цели.

    Если нужно в конечном итоге иметь набор задач, назначенных юзеру «А», относящихся к релизу «2.5» в статусе «ToDo», с контролем фич, вики, и прочими громоздкими вещами, то нужно что-то вроде Redmine (Jira, Trac). Бодрая штука.

    А для более простого и понятного контроля над проектом я открыл для себя Basecamp и сижу сейчас на его 45-дневном бесплатном периоде. Радуюсь отсутствию лишних кнопок. Очень рекомендую.

    Если я правильно понимаю — первая категория это именно таск менеджмент и багтрекинг. Все, что похоже на бейзкамп — это проджект менеджмент.
    Ответ написан
    Комментировать
  • Цена создания интернет-магазина

    shebanoff
    @shebanoff
    OpenCart — святое дело, могу многое о нем рассказать. Но под него сложно верстать шаблоны. Я бы назвал цену от 30 до 50к рублей ( две трети идёт дизайнеру ):
    1. Установка, настройка, комплект базовых плагинов (экспорт\импорт xls, локализации и т.п.).
    2. Базовое наполнение и SEO-подготовка.
    3. Собственно, верстка и внедрение шаблона.
    4. На пиво :)

    Если будут какие-то вопросы — задавай.
    Ответ написан
    1 комментарий