Как я оборачиваю Ruby C расширение в Драгоценном камне Ruby?

Наиболее чисто технические решения были уже предложены. Я поэтому предложу другое представление проблемы.

Насколько я понимаю, боты настраиваются людьми действительно попытка купить сумки, которые Вы продаете. Проблема -

  1. Другие люди, которые не управляют ботами, заслуживают шанса купить, и Вы предлагаете ограниченную сумму сумок.
  2. Вы хотите притянуть людей на свой сайт и просто продать сумки.

Вместо того, чтобы стараться избегать ботов, можно позволить потенциальным покупателям сумки подписаться на электронное письмо или даже обновление SMS, быть уведомленными, когда продавание произойдет. Можно даже дать им минуту или два преимущества (специальный URL, где продавание запускается, случайным образом сгенерированный и отправленный с ПОЧТОЙ/SMS).

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

бегуны ботов могли бы все еще запустить ботов на Вашем уведомлении для окончания покупки быстрее. Некоторые решения этого могут предлагать покупку с одним щелчком.

Между прочим, Вы упомянули, что Ваши пользователи не регистрируются, но это кажется, что те, которые покупают эти сумки, не являются случайными покупателями, но людьми, которые с нетерпением ждут этих продаж. По сути, они могли бы быть готовы зарегистрироваться для получения преимущества в попытке "выиграть" сумку.

В сущности то, что я предлагаю, пытаются посмотреть на проблему как на социальную, а не техническую.

Asaf

10
задан horseyguy 22 August 2009 в 01:12
поделиться

1 ответ

Луис Лавена создал rake-compiler специально для этой цели.

Однако вы уверены что вам нужно расширение C? Особенность расширений C в том, что каждая реализация Ruby имеет свой собственный API-интерфейс расширения C (а API-интерфейсы, не основанные на C, такие как XRuby, JRuby, Ruby.NET, IronRuby, HotRuby, MagLev, Red Sun, их вообще нет), что означает, что ваше расширение C будет работать только с одной реализацией. И поскольку только MRI реализует Ruby 1.8, а только YARV реализует Ruby 1.9, и в настоящее время мы находимся в фазе перехода с 1.8 на 1.9, есть вероятность, что многие люди будут использовать минимум две разные реализации. (Я лично использую 5: MRI, YARV, JRuby, IronRuby и Rubinius. )

Возможно, вам лучше использовать Ruby-FFI . Ruby-FFI - это FFI (интерфейс внешних функций) для Ruby ( duh ), который позволяет вам связываться с библиотеками C и отображать их в чистом Ruby способом, переносимым между реализациями Ruby. FFI API был впервые разработан Эваном Фениксом в качестве API собственного расширения для Rubinius , затем он был принят Чарльзом Оливером Наттером (и реализован Уэйн Мейснер ) для JRuby . Уэйн затем также написал Ruby-FFI gem , который содержит расширения C для MRI и YARV. Лоран Сансонетти реализовал Ruby-FFI для MacRuby , Marc-André Cournoyer ' s tinyrb также поддерживает FFI (снова написано Уэйном Мейснером ), и разработчики MagLev также работают над этим. Это означает, что если вы можете заставить свою библиотеку работать с FFI, а не с расширением C, вы автоматически будете поддерживать 6 реализаций Ruby вместо одной.

Единственная причина использовать расширение C вместо расширения FFI будет , если вам действительно действительно нужно какое-то поведение, специфичное для реализации. Одним из примеров этого может быть гем ParseTree , который проникает глубоко в кишечник МРТ и вырывает представление дерева синтаксического анализа в памяти.

И последнее, но не менее важное: взгляните на Проект Nice-FFI Джона Круазана , цель которого - сделать использование Ruby-FFI еще лучше.

15
ответ дан 3 December 2019 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: