Единственный рабочий вариант: держать рутовый объект и строить граф по ссылкам от него. Все несвязанные с этим графом области подлежат немедленному уничтожению. Заодно, есть шанс дефрагментацию памяти провести, если нужно.
Ruby держит односвязный список глобальных переменных, которые не надо нику
Доделал сегодня обертку к dataparksearch и mnogosearch для Ruby
В этом архиве makefile настроен на dataparksearch, что бы собрать для mnogosearch-а, надо в файле extconf.rb строчку dpsearch = 1 заменить на dpsearch = nil
Если кто подскажет, как
static VALUE document_title(VALUE self) {
struct rbDPSearchDocument *document;
char *title;
VALUE ret;
Data_Get_Struct(self, struct rbDPSearchDocument, document);
title = DpsFindStr(&document->doc->Sections,"Title","");
ret = rb_str_new2(title);
return ret;
Читаем дальше
Как видно, это заголовки для руби и для dpsearch. Дальше объявляем статические переменные, в которых руби будет хранить информацию о модуле и о классах.
static VALUE mDPSearch, cSearch, cDocument;
Префикс m перед модулем, префикс c перед классом. А вот VALUE —
До того, как я познакомился с RJS, я считал (и продолжаю считать), что наименее болезненный способ обмена данных в Ajax-е — это передача HTML-я для какого-то блока.
Чем я против XML? Да очень просто. У нас уже есть на сервере логика представления модели, а мы ее копируем еще куда-то. От такого р
В предыдущей статье я описывал интерфейс к dataparksearch, необходимый для поиска документов.
Чего теперь нужно сделать. Создаем файл search.c, в котором включаем все необходимые заголовки для dpsearch и ruby.h. Одного файла на всю эту несложную логику
Сначала нам нужен менеджер поиска. Без него никуда, только он знает про настройки поиска, к кому ходить, что как перекореживать, что бы засунуть это в запрос. Он будет называться Search.
Нужен найденный документ. Объект, хранящий в себе урл, заголовок и сохраненное содержание. Docume
Хороший фреймворк предоставляет хорошие возможности для всестороннего Unit и функционального тестирования. В Rails функциональное тестирование даже распилено на две части: юнит-тестирование контроллеров
def my_function (a, b):
if a < b:
print a,“<”,b
my_function (5, ‘2’)
>> 5 < 2
Очень удобно это отслеживать по отладочным записям. Новое слово в математике.
Этот перечень методов и классов является DSL-ем, т.е. языком предметной области контроллера. Т.е. тем языком, на котором пишется контроллер. У контроллера должен в руках быть этот DSL, примитивнейший набор языковой логики и ручки для отрисовки.
На этом DSL-е он и должен говорить. И ничего больше.