Лично мне кажется, что даже легче. Есть три основные библиотеки для ORM: Sequel, DataMaper и ActiveRecord из Rails. Все они предоставляют объектный маппинг к базе, т.е. непосредственно про SQL можно забыть. Простой пример на Sequel:
#подключились к базе
DB = Sequel.connect('sqlite://test.db') #подключаться можно к любой СУБД, для которой есть адаптер
#создали таблицу
DB.create_table :limits do
primary_key :id
String :ip
int :clicks, :default => 0
index :ip
end
#объявили класс с маппингом
#для каждого поля в таблице будет сгенерирован геттер и сеттер
#также в него можно добавить любые свои методы для работы с моделью
#можно создавать отношения типа has-one has-many и many-to-many
#и валидаторы для полей
class Limit < Sequel::Model
end
l = Limit.new
l.ip = "127.0.0.1"
l.save #добавили в базу новую запись
l = Limit.find(:ip => "127.0.0.1") #получили запись из базы
Эти библиотеки можно сравнить c NHibernate, но в силу динамичности языка, и использования соглашений вместо конфигурации, использовать их проще и удобнее.
Просто я уже давно не под .net пишу, а на Ruby. Во первых там SQLite более популярная, и с лучшей поддержкой. У Firebird возможности конечно по-богаче, но для маленьких приложений они обычно не нужны, а остальные различия стираются слоем ORM.
Года три назад писал небольшое десктопное приложение. Тоже нужна была embed база данных. Тогда мой выбор пал на Firebird, там тоже есть embed версия. Сейчас же часто использую SQLite. Кстати, и у MySQL есть embed версия, но ее я не смотрел.
У меня в налоговой при ргистрации требовали договор аренды:)
В итоге, я оплатил аренду за один месяц как физ. лицо и попросил арендодателя напечатать гарантийное письмо, что они предаставят мне площадь после регистрации.
И похоже мне еще очень повезло, я зарегистрировался с первого раза, а не как тут пишут с четвертого например:)
Посмотрел про сиквел и ffi. Даа, Эванс очень быстро читает, волновался наверное:) А про ffi ниочем как-то получилось. Вышел, посмеялись, сказал что ffi это круто но медленно и разошлись.
Пойду про middleware и про самомотивацию посмотрю:)
Спасибо за обзор.
Решил погуглить еще про strace для мака, и нашел чту тут есть солярисовская DTrace. И похоже она умеет мерять память, то что нужно! Будем разбираться:)
В самой первой статье этого блога в комментах узнал про порт valgrind. Гугленье показало что он уже даже в бранче оф. репозитария:)
strace нету на маке. Есть гуишные альтернативы, попробую покопаться, спасибо за идею.
Тут кстати и для замера памяти гуишные утилиты есть, но, как-то неудобно ими пользоваться, хочу консольный вариант:)
Хм, может все-таки и правы, в моем случае:) Я под маком эксперементирую, а он же на бсд основан.
По этой же причине я /proc заюзать не могу…
У меня в мане написано
Getrusage() returns information describing the resources utilized by the current process, or all its terminated child processes.
Т.e., чтобы получить данные о ресурсах мне придеться сначала SIGTERM детям послать?:)
Вобщем похоже придется другой способ искать. Очень странно что стандартного решения нету…
Пока идея — скрипт который в цикле парсит вывод ps aux :)
Ага, тоже думал об этом, только я так и не понял где там в структуре rusage потребление памяти.
А вообще чтобы ее заюзать, получается нужна прога, которая форкнется, потом запустит замеряемую прогу, а в это время основной процесс в цикле вызывает getrusage?
А никто случаем не знает утилиты чтобы померить пик потребления памяти своего приложения? Мне советовали посмотреть valgrind, но он мерит только неосвобожденную память на выходе, а как померить память во время исполнения?
Только один совет, лучше начать изучать Ruby с самого Ruby, а не Rails, как обычно делают.
Эти библиотеки можно сравнить c NHibernate, но в силу динамичности языка, и использования соглашений вместо конфигурации, использовать их проще и удобнее.
В итоге, я оплатил аренду за один месяц как физ. лицо и попросил арендодателя напечатать гарантийное письмо, что они предаставят мне площадь после регистрации.
И похоже мне еще очень повезло, я зарегистрировался с первого раза, а не как тут пишут с четвертого например:)
echo 7
?:)Пойду про middleware и про самомотивацию посмотрю:)
Спасибо за обзор.
strace нету на маке. Есть гуишные альтернативы, попробую покопаться, спасибо за идею.
Тут кстати и для замера памяти гуишные утилиты есть, но, как-то неудобно ими пользоваться, хочу консольный вариант:)
По этой же причине я /proc заюзать не могу…
У меня в мане написано
Т.e., чтобы получить данные о ресурсах мне придеться сначала SIGTERM детям послать?:)
Вобщем похоже придется другой способ искать. Очень странно что стандартного решения нету…
Пока идея — скрипт который в цикле парсит вывод ps aux :)
Вот тут что наклепал pastie.org/429856
А вообще чтобы ее заюзать, получается нужна прога, которая форкнется, потом запустит замеряемую прогу, а в это время основной процесс в цикле вызывает getrusage?
По-этому на всякий добавил:)