Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как парсить информацию о mp3 файле?

Лучший ответ:
Вопрос легко гуглится по "C# Read Mp3 Tags"
В двух словах 3 варианта решения:
1. Взять готовую библиотеку (в nuget или так найти) и скормить ей файл
2. Взять готовый исходник класса и подключить к проекту и скормить ему файл
3. Убить время на разбор структуры и формата файла, потратить еще кучу времени и написать свой велосипед
Какой вариант выбрать дело ваше:)

Худший ответ:
https://ru.wikipedia.org/wiki/ID3_(%D0%BC%D0%B5%D1...
В гугл вбивать: Python ID3 Parser
К сожалению с питоном не работал :)
Вопрос: Бесплатный движок для корпоративного портала?

Лучший ответ:
Wordpress + пара плагинов.

Худший ответ:
Если бюджет маленький то Wordpress вполне подойдет. 
Но вообще для таких задач Drupal 7, 8 подойдет больше.
Вопрос: Как повысить квалификацию php-программисту?

Лучший ответ:
Сделаны даже не по MVC.
Могу открыть страшную тайну - большинство людей так делают, даже если называют это MVC.думая только о логике приложения, а не вспоминая какие именно функции мне нужны.
Ну так IDE за тем и нужны. Что бы не вспоминать какой порядок аргументов у той или иной функции, автокомплиты всякие и т.д. Даже люди, которые пользуются VIM и т.д. ставят себе сервера автокомплита и пользуются всем этим не потому что PhpStorm развращает, а потому что для них PhpStorm уже жмет (слишком умный, делает слишком много и от того медленно).
Уверенные знания заключаются в понимании того, что вы делаете. Заучивать API глупо, сегодня оно одно - завра другое. Вам нужно только помнить что что-то такое есть и уметь составлять поисковые запросы. То чем вы пользуетесь каждый день и так в памяти отложится.

Худший ответ:
Для повышения квалификации (т.е., как я это понимаю, уровня компетентности в технологии) можете поготовиться к  сертификации Zend Certified Engineer. В процессе узнаете много нюансов языка, которых вы не знали, и упорядочите (систематизируете) уже имеющиеся знания в голове. Плюс, небольшой бонус в виде, собственно, сертификата, если решите сдать.
Вопрос: Как организовать free IP телефонию Москва-Турция?

Лучший ответ:
Так если нужно в Турции отвечать на входящие Мегафона - почему бы не использовать для этого мегафоновский "Мультифон"? Ставите его на комп, телефон или планшет - и отвечаете на входящие спокойно. И звонить можно точно так же через него же.

Худший ответ:
Организуйте прямой московский номер в турецкой квартире.
Выберите оператора IP телефонии и настройте IP телефон в Турции на него, купите или получите номер в коде 499, скажем, и звоните и туда, и оттуда. Не бесплатно, но гораздо дешевле межгорода, и безо всякой мороки.
Вопрос: PHP — стоит ли использовать кэширование результатов выполнения функций

Лучший ответ:
Кэширование вообще несет в себе одну главную проблему: поддержка актуальности.

Если вы имеете механизмы поддержи актуальности кэша, или имеете возможность не учитывать изменения происходящие за время между двумя обновлениями кэша (у вас это время равно работе php скрипта, следующий запуск сгенерирует новый кэш), то такой кэш можно использовать.

Меморизация функций (кэширование результатов в зависимости от аргументов) требует выполнение двух ограничений:
1. Функция всегда возвращает одинаковый результат при одинаковых аргументах (не зависит от состояния системы или этими изменениями можно пренебречь)
2. Функция никогда не изменяет внутренние состояние системы (если функция была меморизирована, т.е. результат работы был сохранен в словарь, ключем которого является список аргументов, то дальнейшего вызова этой функции происходить не будет)

Если эти ограничения выполняются, то возможна меморизация функции.

Ответьте самостоятельно можете ли вы использовать кэш и меморизацию исходя из этих критериев.

Худший ответ:
Почитайте как/когда/и для чего используют memcache., в Вашем случае всё аналогично.
Вопрос: Какое максимально число папок можно создавать в папке?

Лучший ответ:
Если мы говори о ext4, то максимальное кол-во подпапок 64,000 .
https://ext4.wiki.kernel.org/index.php/Ext4_Howto
Sub directory scalability
Right now the maximum possible number of sub directories contained in a single directory in Ext3 is 32000. Ext4 doubles that limit and allows 64000 sub directories.

Худший ответ:
... аналогично и с папками
Вопрос: Как делается такой асимметричный фон?

Лучший ответ:
polygon design
low poly design
polygon design plugin
polygon abstract background tutorial 
polygon abstract background
В общем, ищите по этим словам, плагины и уроки есть в большом количестве, сейчас это в тренде.
А еще есть способ переделывать фотографии. Или берете какой-нибудь цветной фон и его триангулируете ) Программы называются Триангуляторы 
www.conceptfarm.ca/2013/portfolio/image-triangulator
Конкретно этот не проверял, но если что в сети тоже их тоже много.

Худший ответ:
Задача построения подобных рисунков решается на основании триангуляции Делоне.
Вот ещё хорошая бесплатная программа-триангулятор - DMesh (Win/Mac/iOS).
Вопрос: Чем реально полезен gomobile?

Лучший ответ:
Да, оно появилось, чем полезно можно почитать тут habrahabr.ru/post/260609

Худший ответ:
Можно один код скомпилить под все платформы (виндовс, линукс, мак, андроид и другие) и он будет работать без "плясок с бубном". Просто поправил GUI и на прод. А сС код надо под каждую платформу писать чутли ни с самого начала. А под мак вообще учить их объектный С
Вопрос: Где можно получить сертификаты?

Лучший ответ:
Результаты тесты oDesk-а можно embed-ить. Хотя вам нужны сертификаты, но думаю и результаты тестов подойдут, тем более сам oDesk вам будет полезен, я думаю.

Худший ответ:
coursera. Ряд курсов дают сертификаты. Обучение бесплатное. 

PS простите, что не совсем идельно по теме вопроса :) но надеюсь, что будет полезно.
Вопрос: Странная работа в Go [exec] или как правильно выполнить команду OS?

Лучший ответ:
Если exec.Command получает аргументы раздельно - значит, она их обязана экранировать самостоятельно. Попробуйте убрать добавление кавычек к последним аргументам.

Худший ответ:
Судя по пути /C - это windows. На nix системах код выглядит так exec.Command( "cp", filename, dest)или exec.Command( "mv", filename, dest). У меня нет windows чтобы проверить, но попробуйте exec.Command( "copy", filename, dest)
Ну и можно вручнуюsrc, err::=os.Open(filename)
dst, err:=os.Create(dest)
size, err:= io.Copy(dst , src)
if err != nil {fmt.Println(err)}
fmt.Println("Размер", size)
Вопрос: Установка zabbix 2.4 на debian?

Лучший ответ:
А вы уверены что у вас все еще wheezy? ;) В репах то stable фигурирует. Такая ошибка появляется после обновления системы до jessie. Скорее всего у вас система уже обновилась и, естественно, пакет заббикса для wheezy не подходит по зависимостям.
Пакет собран с жесткими зависимостями, а в jessie нет пакета libsnmp15.

Худший ответ:
/etc/apt/sources.list можете показать?
И выводapt-get update
Вопрос: Как много программист Ruby On Rails должен знать?

Лучший ответ:
А что должен знать водитель?
Водить камаз или мотоцикл?
Ремонтировать автомобиль?
Знать объездные пути по трассе Маганд - Бобруйск?
Может ответы на эти вопросы зависят от конкретного места работы? Профессиональный гонщик и тракторист водители, но знания разные. 
Один работает на камазе только в черте города, второй ездит по трассе. Они оба водители камаза, но первый в случае поломки может просто отбуксировать машину в гараж и отдать механикам, второй должен уметь ремонтировать что то сам.
Когда вы уже поймете, что в любой профессии шаблон работает только на самых низших слоях и то не 100% Во всех остальных случаях очень большой выбор вариантов и требуемых знаний который зависит от вашего места работы и желания.
Пожалуйста просветите почему каждый день появляются однотипные вопросы. Что конкретно вас побудило его задать? Почему вы не просто не отрыли список вакансий с требованиями?

Худший ответ:
Зачем ему верстка? А дизайн зайчем? Рубист должен знать RoR от А до Я.
Вопрос: Что выбрать для соединения iphone и arduino по воздуху?

Лучший ответ:
Есть BLE-модули с поддержкой эмуляции последовательного порта:
www.lairdtech.com/Products/Embedded-Wireless-Solut... (там прямо внизу видео с подобным демо)
www.connectblue.com/products/wireless-ready-to-emb...

Худший ответ:
нет. модули одни и теже. соедитение происходит с созданием  последовательного порта. Просто на Android куча мануалов и он более доступен для экспериментов.
Вопрос: Что за ошибка Failed to load resource: net::ERR_CACHE_MISS  ?

Лучший ответ:
Есть мнение, что это Adblock  - попробуйте без него.

Худший ответ:
Ctrl+F5 помогает
stackoverflow.com/questions/26408931/bizarre-error...
Вопрос: Как подружить старую материнку и SSD?

Лучший ответ:
А в чем проблема? Ваша плата поддерживает режим AHCI, поэтому подключайте SSD и выставляйте AHCI.

Худший ответ:
Вин7 не запускается с ошибкой 0000007b?
Вопрос: Радиосвязь на коротком расстоянии (30-40 см)

Лучший ответ:
Если вам необходимо, чтобы система срабатывала на строго определённом расстоянии, то это будет весьма сложно. Настраиваться по уровню сигнала плохая идея — он может сильно плавать (меняться условия приёма, сложно сделать приёмник и передатчик с очень точными и стабильными параметрами по мощности/чувствительности и.т.п).
Делать полноценный радиочастотный дальномер весьма сложно, даже если не нужна не очень высокая точность.

В общем реализация этой довольно-таки простоя идеи на радио передатчике/приёмнике будет очень сложна.

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

Лучший ответ:
Можно написать скрипт на Autoit или Autohotkey в котором просто переназначить клавиши как захотите. Например при нажатии средней кнопки на мышке можно имитировать пробел или любую другую команду. Причем можно указать для какого приложения (окна) эту замену использовать. 
Вот общая информация с примерами для Autohotkey и список клавиш. Для работы нужно скачать сам Autohotkey, сделать скрипт (простой текстовый файл) и добавить его в автозагрузку. Для переопределения клавиш для определенного окна нужно сначала определить класс окна с помощью встроенной программы AU3_Spy.exe. При нажатии средней кнопки мыши проверять класс активного окна и если окно Adobe Illustrator, допустим, то посылать в него пробел, ну или что вы захотите.

Худший ответ:
Отпишите результат, удалось ли вам решить вопрос с помощью скрипта что описал  TomashUA. Или возможно уже нашли какое-то другое решение?
Вопрос: Задачка по html-верстке. Как ее решить?

Лучший ответ:
Сделать у контейнера «padding: 0 0 0 20px». Если нужен ещё и отступ сверху-снизу, то «padding: 20px 0 20px 20px».

Худший ответ:
Если без заморочек, то каждую строку с блоками (по 3 блока в строке у вас получится) обернуть в отдельный блок, далее вам необходимо заменить padding-right на padding-left, далее например у каждого из блоков этих у вас есть класс .flower, то в CSS просто добавляете .flower:first-child{padding-left:0px;}
Это самый простой и самый действенный способ, сам часто им пользуюсь.

П.С. возможно я изложил немного сложно, прошу за это прощения, все же утро воскресенья, но в остальном все очень просто
Вопрос: Дистрибутив Linux удобный для TouchScreen

Лучший ответ:
Думаю эта статья вам очень поможет.

Худший ответ:
Android.
В "чистом" виде: www.android-x86.org
Чуть более оптимизированный под PC: www.jide.com/remixos
Вопрос: Что такое Mean.js?

Лучший ответ:
Модный хипстерский стек, на котором можно клепать проекты почти любой сложности. Очень популярно на западе. Рикаминдую

Худший ответ:
В общем, спасибо. Буду ставить, пробовать (никогда не имел дело с node.js) - думаю на пару недель хватит, чтобы понять, что надо хорошо знать js)
Вопрос: Какой парсер выбрать?

Лучший ответ:
Бери мой: https://github.com/imangazaliev/didom

Худший ответ:
Я simple html dom использую.
Вопрос: Вычисление числа Пи с определенной точностью?

Лучший ответ:
А это не то?

Худший ответ:
А это не то?
Вопрос: Как менять значение поля относительно значения другого поля в Angular?

Лучший ответ:
Вариантов есть несколько: 
1. ng-change:HTML:<input type="number" ng-model="model.amount_users" ng-change="onUserAmountChange()">
<input type="text" ng-model="model.price">JS:$scope.onUserAmountChange = function() {
    $scope.model.price = FULL_PRICE/$scope.model.amount_users;
}
2. разметка:HTML:<input type="number" ng-model="model.amount_users" ng-change="onUserAmountChange()">
<span> {{model.fullPrice/model.amount_users}} </span>
Второй вариант подойдет, если поле является на самом деле просто информацией для пользователя. Делать её инпутом в данном случае нет никакого смысла.

Худший ответ:
вешайте $watch на 1-ю переменную и там уже вычисляйте что нужно
Вопрос: Symfony2 + Doctrine. Как получить @ORM\ManyToOne связь с условием?

Лучший ответ:
Раз у вас файлы разных типов, то и заводите для них разные типы в одной таблице. Зря вы велосипедили с file_type 
doctrine-orm.readthedocs.org/en/2.0.x/reference/dql-doctrine-query-language.html#single-table
Ну и затем связи прописывайте на нужный Entity.

Худший ответ:
Вообще обычно так и делают: создают свой репозиторий и либо добавляют туда запрос, либо перегружают метод findBy.
Вопрос: Отказ от получения рекламных сообщений &quot;Билайн&quot;

Лучший ответ:
Позвоните в сервисный центр, мне помогло.

Худший ответ:
))) Вот как раз на днях собирался звонить в мегафон по тем же причинам. Получать по 20 таких сообщений в день — это несколько бесит.
Вопрос: Переход в спящий режим вырубает питание ноутбука. Решение?

Лучший ответ:
как если бы на десктопе выключить питание резко.
А оно (питание) точно не пропадало? Аккумулятор держит нормально, сетевой адаптер не отключали?
Если всё в норме - похоже на проблемы с железом.
Или чинить, или попробовать обойти, разрешив Гибридный спящий режим или заменить Сон на Гибернацию.

Худший ответ:
Разобрался с такой же проблемой.
Предыстория проблемы такая: 
Ноутбук asus g550jk, решил поставить ssd на место родного hdd, а родной вместо dvd-привода. На материнке нет полноценного разъема SATA для hdd, он выведен на подключаемом шлейфе. Ну так вот после покупки переходника dvd-hdd начал вытаскивать родной hdd, но он сидел настолько прочно в sata-разъеме что я решил отсоединить шлейф а уж потом в сторонке вытаскивать разъем. Снял аккумулятор, открыл замок шлейфа но... шлейф оказался прилеплен к корпусу на ленту, я решил его не отдирать и взялся таки отковыривать разъем sata, со снятым аккумулятором это было значительно проще. Отсоединил родной hdd и поместил его в переходник dvd-hdd, на место родного поставил ssd, поставил на место аккумулятор все закрутил, закрыл и позже перенес ось с hdd ssd. Все успешно заработало.
Но внезапно ноут начал артефачить на ютубе а потом и вовсе выключился. И начались фокусы. После ресета отваливалась память и ssd. Тут я вспомнил что не застегнул замок шлейфа sata. Разобрал застегнул. Но уже ничего не менялось. Ноут стабильно умирал от ресета до выдергивания зарядки. Так же перестал нормально спать. Включался заново при пробуждении с логом о внезапном отключении. Перестановки и полное отключение дисков не помогали. Я решил что из-за отсутствия нормального контакта по питанию, погорели цепи распределения питания. Обзвонил все полевики на материнке все в норме. Дежурные напряжения и сигналы на контроллере питания тоже. Гугл сыпал кучей тем о том что пропал сон после того-сего, обвновлений windows и прочего. Даже нашел пост, в котором говорилось что удаление VirtualBox помогло...мне не помогло.
В голове мелькнула мысль что выбросы по питанию, от плохо прижатого питания ssd, могли намусорить в BIOS. 
Терять нечего. Скачал bios той-же версии что и есть на ноуте, она же последняя версия на сайте на данный момен (205), запустил winflash  с параметром /nodate и скормил ему 205й биос. Пошел ребут. И опять падение питания и винфлеш не отработал. Проделал тоже самое но с отключеной зарядкой и после ребута винфлэш сработал. После прошивки и загрузки проблема улетучилась. Как вариант, при сбое питания от перехода в спящий режим - перепрошивка той же версией или обновление BIOS.
Вопрос: Как в C++ красиво реализовать множество условий?

Лучший ответ:
Сложные условия следует разбивать на простые. равно как и слдожные функции следует разбивать на простые. (qX >= 0 && qY >= 0 && qX < room_size && qY < room_size)
Это условие, как я вижу, проверяет вхождение я прямоугольник? Лучше всего в отдельную функцию. Повысит читаемость.
например так:bool isInRoom(int qX, int qY, int room_size) 
{
  if (qX < 0)
    return false;
  if (qY < 0)
    return false;
  if (qX >= room_size)
    return false;
  if (qY >= room_size)
    return false;
  return true;
}
Боитесь за производительность - inline функцию. Затем так:if (isInRoom(qX, qY, room_size) && water[qX][qY] < water[x][y] && water[x][y] != 0)
...
или так:if (! isInRoom(qX, qY, room_size)) // проверка предусловия
  return;
if (water[qX][qY] < water[x][y] && water[x][y] != 0)
...

Худший ответ:
Строка 133 pastebin.com/tdiqwpSf
Вот сделал в отдельную функцию часть проверки... конечно мне кажется не очень красиво...
Хочется вообще весь блок начиная со строки 133 по 156 в отдельную функцию. Но ссылки, линки и прочее только сильнее запутают мне кажется.
Вопрос: Как преобразовать значение массива в int?

Лучший ответ:
$х = (int)$array[ 'x' ];
массив не сравнивается, сравниваются его значения.

Худший ответ:
$post = array_map(function($e){return (int) $e;}, $_POST); - перебирает все элементы массива и преобразует их к инт-типу.
Вопрос: Куда делся хелп по jQuery?

Лучший ответ:
Этот метод depricated
и убран из последней версии jquery
рекомендую использовать support если я ничего не забыл.

Худший ответ:
api.jquery.com/ эта документация которая грузится вся сразу и работает как ракета?
Вопрос: Как безопасно провести выкладку проекта с миграциями?

Лучший ответ:
Для интенсивного изменения структуры большой базы используйте реплики. 
Имеем пару мастер-слейв. При необходимости обновления схемы: отключить слейв провести миграции на нем сделать его мастером и подключить к нему новый слейв  обновить код проекта при необходимости  переключить его на новый мастер отключить бывший мастер

Худший ответ:
Полагаю универсального решения здесь нет. Все зависит от того, сколько "сервисов" пользуются вашей базой, насколько допустим простой каждого из них и насколько гибок Ваш код.
Можно представить себе, что миграция это изменение представления данных. Таким образом, у нас открывается потенциальная возможность использовать view, и работа из кода не напрямую с данными, а с этими самыми view. Т.о. Вы можете создавать новые временные столбцы, нацеливать на них view, а заполнять их при помощи триггера к примеру. 
В mysql 5.6 (не прошло и 10 лет !, или прошло ?), в случае если Вы просто меняете имя столбца, копирование во временную таблицу, с соответствующим локом, не происходит. 
Т.о. если вы обернете в единую транзакцию (с локом) переименование столбца, и нацеливание view обратно на "изначальное" имя, столбца, вероятно Вам удастся добиться минимального даунтайма.
Миграция, т.о. становится многоходовочкой, но Вы избавляете себя от страха за потерю данных после кривой миграции и упрощаете себе переключение между старыми \ новыми данными, т.к. вы управляете этим из кода миграций.
view имеет множество ограничений в случае "сложных" запросов, джойнов, у Вас должны быть соответсвующие индексы, чтобы view отрабатывало по ним и т д.
Думаю Вам стоит прикинуть всю сложность операционных работ по реализации данного решения, и решения описанного Fortop чуть выше. И понять, чем Вы можете поступится, и что в Вашей системе проще реализуется сейчас, и через 1 год.
Вопрос: Можно ли доверять HTTP_REFERER (предварительно прочитайте вопрос)?

Лучший ответ:
Конечно нет. Это то, что передает клиент.
Самый простой способ это проверить — одна из опций curl:
 -e, --referer       Referer URL (H)

Худший ответ:
Если вы делаете игры с кроссдоменной авторизацией, ставьте подпись. Некоторые плагины к браузерам и прокси вырезают referer, вы получите то, что у части пользователей реферер работать не будет, и потратите кучу времени на выяснение, почему.
Вопрос: Как настроить приоритезацию SIP звонков в Mikrotik?

Лучший ответ:
Просили ткнуть носом, ок: wiki.mikrotik.com/wiki/Voip
:-)

Худший ответ:
тут есть несколько вариантов:
Если сетей много и клиенты меняют ип адреса и адреса подключения - то через маркировку voip трафика ( маркируете на софт фоне - а уже в микротике делаете приоритет для маркированного трафика)
Если все всё однообразно, все подключаются к одному внешнему серверу  - тогда через простую очередь - udp порты 5060 и 10000-20000 в приоритет (для asterisk обычно эти порты)
Вопрос: Идея: оффлайн аналог игры EVE Online с полной генерацией всего. Что скажете?

Лучший ответ:
Корованы можно будет грабить?

Худший ответ:
Есть движок на Java для MMOG: RedDwarf Server. Это проект отделившийся от проекта DarkStar после того как Oracle, поглотив Sun Microsystems, прекратил финансирование последнего.
Вопрос: В каком случаи после и перед знака «=» в JavaScript ставится пробел? Существуют ли какие нибудь каноны?

Лучший ответ:
https://github.com/airbnb/javascript 
Их куча на самом деле, погуглите по javascript style guide, и выбирайте тот который вам наиболее близок.

Худший ответ:
> var arr = new Array();
Вот так точно никто не делает. 
Банально легче читать с пробелами, неужели не видно?
Вопрос: Как прикручиваются подобные админки к сайтам?

Лучший ответ:
Фактически вам просто дают дизайн, а интегрируете вы его сами, php-файлы вы сами пишете. Т.е. ответ на ваш вопрос: они с сайтом никак не взаимодействуют, вы сами делаете это взаимодействие.

Худший ответ:
Это просто хорошо сверстанный дизайн админки, по сути админка всегда проблема , так как на фронт всегда обычно покупают дизайн, а админку девелопер делает как уж получится , и тут проще купить какой нибудь дизайн админки и дать девелоперу чтобы он прикрутил его за пару часов, чтобы все было красиво.
Хотите готовый код юзайте вордпресс есть куча кастомных админок под него
Вопрос: Односторонняя синхронизация 1С

Лучший ответ:
Ставите патч для семерки чтобы сделать из неё термина обычно зовется termserv и живете спокойно.

Худший ответ:
Какая версия 1С (7.7, 8.x) и конфигурации (ТиС, УТ, Розница) ?
Вариант с сервером (1С и/или терминальным) не рассматривается?
Вопрос: Как извлечь данные гироскопа с фото?

Лучший ответ:
Посмотрите exif данные фото. Если они там есть, то есть. Если нет, то нужно покупать камеру которая эти данные туда пишет.

Худший ответ:
Да, только это не фига не гироскоп а просто датчик портретной ориентации (шарик контакты замыкающий), возвращает бинарный параметр который обычно пишется в exif...
Вопрос: Из-за чего возникает перегруженность процессора при минимальных действиях?

Лучший ответ:
а скрин со службами и процессами скинуть?

Худший ответ:
Была похожая проблема, при открытии новой вкладки в любом браузере или обновлении текущей компьютер "подвисал", графики загрузки процессора выглядели примерно также как ваши, если во время этих действий играла музыка, причем не обязательно из браузера, звук "трещал". Избавится от этого эффекта помогала только перезагрузка компьютера. Опытным путем выяснил, что эффект этот наблюдается только после пробуждения компьютера из спящего, ждущего или режима гибернации. Соответственно для себя решил проблему отключением оных.
Вопрос: Какая хорошая практика создания «своих» функций в Rails?

Лучший ответ:
Помимо упомянутых коллегами каталога lib и своего гема можно выделять классы в подкаталоги в app. В отличии от lib все подкаталоги app находятся в автозагрузке по умолчанию, то есть не нужно писать require вручную. Ну и по смыслу - в app размещают то, что относится непосредственно к текущему приложению, а в lib - или код от "сторонних производителей", либо свой более независимый от текущего приложения код с прицелом на выделение и использование его в других проектах.

Худший ответ:
Выносите свои классы в отдельную папку в /lib и подключайте папку в автозагрузку
Или в gem, если код представляет собой некое расширение фреймворка.