Вала и настольный диван готовы?
Я начал писать rss reader на Vala, но я не знаю, какую систему баз данных мне следует использовать, я не могу подключиться к couchdb, и sqlite работает нормально, но я бы хотел использовать couchdb из-за ubuntu one. У меня есть natty с последними обновлениями
public CouchDB.Session session;
public CouchDB.Database db;
public string feed_table = "feed";
public string item_table = "item";
public struct field {
string name;
string val;
}
// constructor
public Database() {
try {
this.session = new CouchDB.Session();
} catch (Error e) {
stderr.printf ("%s a\n", e.message);
}
try {
this.db = new CouchDB.Database (this.session, "test");
} catch (Error e) {
stderr.printf ("%s a\n", e.message);
}
try {
this.session.get_database_info("test");
} catch (Error e) {
stderr.printf ("%s aa\n", e.message);
}
try {
var newdoc = new CouchDB.Document ();
newdoc.set_boolean_field ("awesome", true);
newdoc.set_string_field ("phone", "555-VALA");
newdoc.set_double_field ("pi", 3.14159);
newdoc.set_int_field ("meaning_of_life", 42);
this.db.put_document (newdoc); // store document
} catch (Error e) {
stderr.printf ("%s aaa\n", e.message);
}
отчеты
$ ./xml_parser rss.xmlCannot connect to destination (127.0.0.1) aa
Cannot connect to destination (127.0.0.1) aaa
1 ответ
С точки зрения производительности, я просто хотел бы сказать, что CouchDB, возможно, не самое быстрое решение по сравнению с чем-то более зрелым, как SQLite. Сравнение gwibber позволяет использовать SQLite всего в 10 раз быстрее.
Учитывая, что читатель RSS делает намного больше SELECT
чем INSERT
это то, что вам нужно осознавать, потому что это повлияет на отзывчивость вашего приложения.
С точки зрения вашего кода, сравнивая его с "официальным" образцом Vala+Couch, вы не передаете детали соединения, поэтому мне интересно, есть ли проблема с механизмом автоопределения. Couch запускается на разных портах при каждом запуске, но вы можете получить его текущий порт через dbus:
dbus-send --session --print-reply --dest=org.desktopcouch.CouchDB / org.desktopcouch.CouchDB.getPortmethod return sender=:1.231 -> dest=:1.230 reply_serial=2
Я не знаю, Vala для этого, но выяснение вручную может помочь вам установить первоначальное соединение.