Last month I worked with Louis on the new website and the documentation. So I dived deeper in the sourcecode and understood more. The guys from weelya created a beauty.
When Anthony hinted my to investigate the async way of sockets, it made me me more and more unsatisfied with my Mongo efford. A few weeks ago Postgresql 9.3 feature list (http://www.postgresql.org/docs/9.3/static/release-9-3.html) mentioned "Materialised views". Now That is a feature that I realy like of ibm's as400 db2. All things combined, brewed for some time and I deceded to 'eat that frog': I want a Ape.Postgresql async object, and I am going to do this my self, because nobody else is going to do this for me. Well: tatadadaaaah: a few minutes ago, this was on my screen. [WARN] Cannot open pid file : /var/run/aped.pid [WARN] You have to run 'aped' as root to increase r_limit _ ___ ___ /_\ | _ \ __| / _ \| _/ _| /_/ \_\_| |___| AJAX Push Engine Bind on : 0.0.0.0:6969 Pid : 30461 Version : 1.1.3-DEV Build : Sep 18 2013 20:28:43 Author : Weelya (contact _at_ weelya.com) [Module] [spidermonkey] Loading module : Javascript embedded (0.01) - Anthony Catel [spidermonkey] : Loading script ../scripts/framework/mootools.js [spidermonkey] : Loading script ../scripts/utils/utils.js [spidermonkey] : Loading script ../scripts/framework/Http.js [spidermonkey] : Loading script ../scripts/framework/userslist.js [spidermonkey] : Loading script ../scripts/commands/proxy.js [spidermonkey] : Loading script ../scripts/framework/log.js [spidermonkey] : Loading script ../scripts/test/_tests.js [spidermonkey] : Loading script ../scripts/test/PostgreSQL.js =====================================>>> Start up for test/PostgreSQL.js ----[object PostgreSQL]---- ({}) host: null dbname: apedevdb user: apedev port: 5432 protocol_version: 3 socket_version: 8 backend_pid: 30462 connection_needs_password: false connection_used_password: true non_blocking: true server_version: 8.4.17 server_encoding: SQL_ASCII client_encoding: SQL_ASCII is_superuser: off session_authorization: apedev DateStyle: ISO, MDY TimeZone: localtime integer_datetimes: on query 2309 SELECT pg_tables.* FROM pg_tables pg_tables false ----[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]---- [ { schemaname: "pg_catalog", tablename: "pg_type", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_attribute", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_statistic", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "information_schema", tablename: "sql_features", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "information_schema", tablename: "sql_implementation_info", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "information_schema", tablename: "sql_languages", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "information_schema", tablename: "sql_packages", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_database", tableowner: "postgres", tablespace: "pg_global", hasindexes: "t", hasrules: "f", hastriggers: "t" }, { schemaname: "pg_catalog", tablename: "pg_authid", tableowner: "postgres", tablespace: "pg_global", hasindexes: "t", hasrules: "f", hastriggers: "t" }, { schemaname: "information_schema", tablename: "sql_parts", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "information_schema", tablename: "sql_sizing", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "information_schema", tablename: "sql_sizing_profiles", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_user_mapping", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_depend", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_tablespace", tableowner: "postgres", tablespace: "pg_global", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_pltemplate", tableowner: "postgres", tablespace: "pg_global", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_shdepend", tableowner: "postgres", tablespace: "pg_global", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_proc", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_class", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_attrdef", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_constraint", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_inherits", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_index", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_operator", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_opfamily", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_opclass", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_am", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_amop", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_amproc", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_language", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_largeobject", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_aggregate", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_rewrite", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_trigger", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_listener", tableowner: "postgres", tablespace: "", hasindexes: "f", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_description", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_cast", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_enum", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_namespace", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_conversion", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_shdescription", tableowner: "postgres", tablespace: "pg_global", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_ts_config", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_ts_config_map", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_ts_dict", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_ts_parser", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_ts_template", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_foreign_data_wrapper", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_foreign_server", tableowner: "postgres", tablespace: "", hasindexes: "t", hasrules: "f", hastriggers: "f" }, { schemaname: "pg_catalog", tablename: "pg_auth_members", tableowner: "postgres", tablespace: "pg_global", hasindexes: "t", hasrules: "f", hastriggers: "t" } ] <<< ===================================== It is far from complete, but it is async and works for the bare minimum (http://www.brepettis.com/blog/2009/3/3/the-cult-of-done-manifesto.html: connect, status and query). There is some code duplication in my hobbiest-code with the Ape.MySQL object. My questions to the newsgroup are: * Who is interested to test it? (Who is interested at all?) * Must I refractor Ape.Mysql and Ape.PostgreSQL into 'one' fragile thing, or should we keep the mysql puppy in a seperate cage, so that the cool PostgreSQL beast can be raised to it's full potential. (If you can read between the lines, you will find my preference) And I know now how I can improve some things in ape, my mongo attempt, but I also could add/embed another key-value store or database-connector. But my time is limited. I will give a update soon. Peter Reijnders -- -- You received this message because you are subscribed to the Google Groups "APE Project" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/ape-project?hl=en --- APE Project (Ajax Push Engine) Official website : http://www.ape-project.org/ Git Hub : http://github.com/APE-Project/ --- You received this message because you are subscribed to the Google Groups "APE Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
