• Почему rails не высвобождает память?

    viktorvsk
    @viktorvsk
    Потому что так работает подавляющее число скриптовых языков.
    Когда нужна память - она берется из ОС. Когда память чистится, она помечается как доступная к перезаписи, но не отдается обратно ОС

    Для такой задачи, как вы описали, следуте использовать фоновые очереди задач: delayed job, resque, sidekiq, rabbitmq...

    Кстати, delayed job и, кажется, sidekiq - тоже не высвободят память. Их нужно будет убивать периодически убивать(например, с помощью monit и лимитом памяти). Resque же создает новый форк на каждую задачу
    Ответ написан
    4 комментария
  • Как правильно проектировать компоненты?

    viktorvsk
    @viktorvsk
    Русскоязычное коммьюнити примечательно еще тем, что порождает умопомрачительные вопросы. Которые нельзя адекватно оценить - можно только удалить (пожаловаться) и ждать следующего такого же вопроса.

    Никогда не получится идеально с первого раза. И всегда нужно пробовать и искать пути оптимизации. Если вас интересует, как построить оптимальный процесс в конкретной среде - так и задавайте вопрос. А в общем смысл серебряной пули нет.

    TDD подразумевает test, code, refactor. То есть, "переписывание кода" заложено уже в определении. И точно так же, сколько б вы раз во времени не возвращались к коду, вам всегда будет что-то не нравиться и будет желание переписать - это нормально.

    В целом от поста веет максимализмом и преждевременной оптимизацией.
    Ответ написан
  • Как задать спрайт after псевдоэлементу?

    viktorvsk
    @viktorvsk
    ТЕГИ О_о
    Ответ написан
    Комментировать
  • Прошу объяснить, как работает self и protected в Ruby?

    viktorvsk
    @viktorvsk
    Public - должны использоваться очень аккуратно. Чем меньше - тем лучше. Это внешнее API для других классов, которые будут его использовать. А чем меньше можно узнать, тем быстрее это можно выучить и запомнить, тем меньше ошибок сделать.

    Protected - это те методы, которые доступны потомкам (классам, что наследуют), но не доступны внешним классам. Грубо говоря, удобно, когда вы знаете, что от класса А будут наследовать много-много разных классов, и у этих классов будет один (или много, не важно) общий метод. Который, однако, совершенно не нужен внешним классам. Если бы не было протектеда, было бы 2 пути - сделать метод, который должен быть у всех потомков - публичным. Это плохо, потому что это лишняя информация для внешних классов. Или же - дублировать одинаковые методы в каждом классе потомке. Это плохо, потому что не DRY.

    Private - это те методы, который доступны только классу. То есть, грубо говоря, пользоваться ими вы можете только в том же файле, где идет определение класса. Например, удобно ими пользоваться для рефакторинга. Представим, что есть публичный метод, который уже много лет используют 100 разных, неизвестных классов. Но в этом методе - 500 строк. Менять метод нельзя, поэтому вы превращаете его в 10 строк-вызовов приватных методов.

    Лучше всего это усвоить, создав разные вариации и попробовав повызывать разные методы. 2 важных вещи, которые нужно помнить в Ruby:
    1) Разные ключевые слова для методов класса и экземпляра (private, private_class_method)
    2) Если тестируете поведение в консоли с использованием #send, то поведение будет не ООП-шное - #send игнорирует видимость методов

    С self все проще. По умолчанию, всегда self подставляется. Метод вызывается сначала для текущего объекта - потом смотрится наличие методов в предке и т.д. и т.д. до объекта Object. Зачем иногда явно пишут self ? Потому что в руби можно создавать методы вида def method=() end; и использовать их с пробелом: method = 2. Для этого, что бы дать понять, что используется именно метод, а не определяется локальная переменная, иногда прибегают к полной записи.

    P.S. Если что-то действительно не понятно даже здесь - берите любую книгу по ООП или википедию и пробуйте все в консоли на любом языке программирования, пока не уловите суть.
    Ответ написан
    4 комментария
  • Как найти разработчика для сайта? есть ли секреты?

    viktorvsk
    @viktorvsk
    Секрет, он вовсем и не секрет, все достаточно просто. Нужно выполнить всего лишь 2 условия:
    1. Иметь интересное предложение для опытного разработчика.
    2. Доверить поиск разработчика квалифицированному лицу.

    Судя по вашим комментариям:
    Когда занимаешься кучей других дел в фирме, перебирать очень дорого выходит и себе и фирме.

    В итоге на маленьких задачках можно разориться, к сожалению.

    опытные люди считают, что вы не подходите им по обоим пунктам.

    Если все действительно плохо (типично, неинтересно, рутинно, низкоуровнево), то вам нужно искать тех, кто предлагает конвейер. Чаще всего, это именно низкосортные студии.
    Ответ написан
    5 комментариев
  • Есть ли системы обработки заказов интернет-магазинов (OMS), работающие через внешний API?

    viktorvsk
    @viktorvsk
    Есть еще ru.orderino.com
    Только не забывайте, что у саасов тоже минусы есть. Когда начнете расти, захочется куда более гибкой интеграции.
    Ответ написан
  • Как ставить задачу дизайнеру и что с него требовать?

    viktorvsk
    @viktorvsk
    Если это типичный небольшой интернет-магазин, то сначала нужно
    Надо нарисовать всю структуру сайта на бумажках

    Потом, хорошо бы, все-таки продумать ТЗ, так как очень много всего вы 100% не учли, а дизайнер не должен быть гуру екоммерса, что бы на все это указать. Далее, если то, что вы нарисовали на бумажках, до сих пор похоже на какой-то аналог (что, на самом деле врядли, если вы действительно ответственно подошли к рисованию на бумажках), то дальше
    Надо просто сказать: я хочу интернет-магазин похожий на...

    После чего пообщаться с дизайнером и
    он должен сам что-то состряпать
    и так в несколько итераций. К сожалению, число итераций - очень индивидуальный вопрос, зависящий от огромного множества факторов. Некоторые говорят, что нужно в любом случае забраковать 1 (2, 3, 4) первых варианта, "что бы дизайнер постарался". В 90% случаев - это чушь.

    " Если работа совершенно не нравиться(халтура, совершенно не то что хотел) до каких пор стоит "насиловать ему мозг"?"

    Такого быть не должно. Если так случилось, то вся вина на заказчике, т.к. не смог определить то, что ему нужно (скорее всего, в типичных проектах, из-за того, что искал быстрее и дешевле)
    Вообще, этот вопрос решается почасовой оплатой - и насилуйте сколько угодно. Заплатить же оговоренную сумму нужно в любом случае. Вы же не говорите таксисту, что он сильно много кочек собрал по пути, поэтому заплатите 50% ?

    Быть заказчиком - это тоже ответственная позиция. Заказчик должен хорошо разбираться не только в предметной области (продавать в магазине), но и понимать, что такое дизайн, что возможно, что нет (если заказывает дизайн, конечно же). Вот поэтому часто этап "заказа" и поручают специалистам (менеджерам, аналитикам ...)

    Самый просто и правильный ответ, особенно для типичных проектов с низким уровнем сложности - это найти исполнителя, которому субъективно доверяете.
    Ответ написан
    3 комментария
  • Как дописать текст в начало файла?

    Комментировать
  • Как сделать личные сообщения?

    viktorvsk
    @viktorvsk
    Не удалять, а помечать удаленным
    Ответ написан
    5 комментариев
  • Куда съезжать с Ubuntu?

    viktorvsk
    @viktorvsk
    Просто опишите ваши проблемы и вам помогут, скорее всего.
    Ответ написан
    Комментировать
  • Как научиться писать такой ООП код?

    viktorvsk
    @viktorvsk
    Не делать ООП ради ООП, а решать каждую задачу оптимальным образом
    Не считать сложный код - хорошим кодом: код по ссылке не выдержит вообще никакой критики.
    Читать https://refactoring.guru/ и всякие термины SOLID, но без преждевременной оптимизации

    Не просто что-то делать, а постоянно усложнять задачи (не путать с усложнением способа решения задачи), задаваясь вопросом, можно ли решить ее проще.
    Ответ написан
    Комментировать
  • Как правильно настроить права для bitbucket?

    viktorvsk
    @viktorvsk
    Вероятно, у пользователя www-data нет того SSH-ключа, который используется основным пользователем и добавлен на битбакет
    Ответ написан
  • Как правильно создать массив вложенных объектов через одну форму в Rails?

    viktorvsk
    @viktorvsk
    Нужно добавить accepts_nested_attributes_for :man (кстати, вы еще согласуйте, это man или men, т.к. у вас по тексту разные формы.

    Далее, смотрите, что приходит в params, там будет не men, а men_attributes. И разрешать нужно не ничего как у вас сейчас, а конкретные атрибуты, в вашем случае: name, age, weight, height

    А вообще, больше дебага: binding.pry или же byebug
    Ответ написан
    1 комментарий
  • HAML как вставить картинку с атрибутами?

    viktorvsk
    @viktorvsk
    -if current_user
      %img{ src: "//domen/path", style: "width: 1px;height: 1px; position: absolute;left: -100000px;top: -100000px;"}


    0. В чем сложность проверить ? В чем вообще вопрос? Какое отношение вопроса к заголовку (атрибутам картинки)?
    1. Что такое интервальные пробелы? HAML - это препроцессор HTML, который, так сказать, indent-based (как язык Python, например). Вложенность регулируется количеством отступов "по горизонтали"
    2. HAML никак не связан с RoR
    3. Если у вас не древний руби, используйте нормальный формат ключей хэша
    4. в HAML -end в конце не нужно. Возможно, даже будет ошибкой
    Ответ написан
    Комментировать
  • Что работает быстрее: document.forms.add.title.value или document.querySelector('.title').value?

    viktorvsk
    @viktorvsk
    Записи то не эквивалентные. Думаю, тут много будет зависеть от браузера, но в теории в таком случае, быстрее будет первый вариант.

    Если .title заменить на [name="title"], то я ставлю на querySelector
    Ответ написан
  • Почему не выполняется команда rake db:migrate?

    viktorvsk
    @viktorvsk
    Если нет никаких ошибок, значит, все прошло нормально. Отсутствие текста говорит о том, что нечего там мигрировать.
    Проверить можно с помощью
    rake db:migrate:status
    Там все будет UP

    Возможно, вы смотрите не в те окружения (dev, prod, test)

    Может быть, вы это все делаете на сервере, или хотите увидеть изменения в продакшене, тогда как по-дефолту - окружение dev.

    Тогда нужно попробовать
    RAILS_ENV=production bundle exec rake db:migrate
    Ответ написан
    Комментировать
  • Какую технологию выбрать для разработки одностраничного сайта с интерфейсом расчета?

    viktorvsk
    @viktorvsk
    Разберитесь сначала, что такое протокол HTTP, как работает браузер, как формируется веб-страница у вас на экране после ввода адреса.

    Затем без логики сделайте с помощью HTML/CSS эти контролы (инпуты, комбо-боксы и т.д.)

    После возвращайтесь с теми вопросами, что останутся и появятся
    Ответ написан
    1 комментарий
  • Есть ли паттерн для реализации апгрейда пользователя на сайте?

    viktorvsk
    @viktorvsk
    Вы хотите комплексное поведение, а паттерны их не описывают. Грубо говоря, паттерны даже не описывают процессы реального мира - они описывают краткие определения сущностей, на основе компоновки которых вы уже можете собирать комплексные процессы.

    А вот загуглить вы можете Permission-Based auth.
    В принципе, это и есть от части то дерево зависимостей, о котором говорит xmoonlight

    Чаще всего применяется к авторизации, но можно и на ваш случай перенести без особых проблем
    Ответ написан
    Комментировать
  • Как правильно спроектировать базу данных для оптового интернет-магазина?

    viktorvsk
    @viktorvsk
    Простое архитектурное решение - EAV в том числе и для задачи характеристик (фильтров, свойств) в интернет-магазине. При том, еще и довольно неплохо масштабируется. Так сказать, это облегченный вариант поисковых движков (Sphinx, Elasticsearch, Solr...) для начала. И часто его может хватить с головой.
    Ответ написан
    1 комментарий