Tuesday, December 02, 2008
Monday, November 03, 2008
Reminds me of IDG, Gartner, et al. Which incidentally are among the examples mentioned in the paper.
Friday, September 26, 2008
Friday, August 15, 2008
Well, the OBJECT tag works slightly different in each of the above. And it is extremely poorly documented. If you want your JAR to reside in other directory than the one where the HTML file is, tough luck.
This is plain stupid. Why is it so hard to standardize such a basic premise of the internet? Ok Java applets aren't used that much anymore, but why did they have to go and make something that was once simple, complicated?
Friday, June 13, 2008
Monday, June 09, 2008
Saturday, June 07, 2008
Sunday, June 01, 2008
Saturday, May 24, 2008
- Mac Dashboard Widgets: the OG of widgets; Google has a few too
- ...copied by MS in Vista: Windows Sidebar Gadgets
- Google Gadgets: desktop or web
- Yahoo Widgets: desktop, within the yahoo RT
- Opera has its own which work on the desktop, mobile phone, or Tv (have to see this one!)
Then there are the 'social sites' plug-in widgets (eg for Facebook: Washington Post's collection of widgets). Also, offerings such as this one that provide the backdrop for widgets to work. Or, for a really useful collection of widgets, look here.
A cool company that authors widgets.
Saturday, March 22, 2008
- Amazon S3
- REST/SOAP based storage
- Amazon SQS
- SOAP based queuing
- Amazon SimpleDB (still in beta)
- similar to GoogleBase?
- attribute-based semistructured repository
- Amazon EC2
- on demand virtual servers accessible via web services
- shared repository that can be queried using a SQL-type of language
- GoogleGears Database
- browser extension allowing the use of a local SQLite database (SQLite is just taking off: Adobe AIR also uses it)
- GoogleGears WorkerThread
- browser extension allowing multithreading
- the threads are created locally; they are real OS threads spawned within the browser process
- the threads communicate via text messages
I do not think the day is too far away when you will be able to compile a program online (if Office is going the software as service way, why not Visual Studio?) and deploy it to a virtual environment on the cloud, and run it there. Possibly, the only thing that is missing is a set of libraries to abstract the communication protocols (SOAP, XML-RPC, ATOM, etc... still too many).
Friday, March 21, 2008
Thursday, March 13, 2008
On Mac OS X the Postgres binaries are saved in /usr/local/bin. Here is a handy Postgres launcher that can be saved in the user’s directory (as postgres_start.sh for example):
su -l postgres -c "/usr/local/bin/pg_ctl start -D /Users/postgres/datadir"
Where datadir is the directory (owned by the postgres user) where Postgres has the data files.
To create a custom tablespace in Postgres, make an empty directory first and use that as the location for the tablespace in pgAdmin3.
Sample Ruby code to access Postgres; notice that the first line is needed to set up the environment; without it the require fails.
#! /usr/bin/env ruby
# original file src/test/examples/testlibpq.c
# Modified by Razvan
# Calls PL/SQL function in Postgres
norecs = 0
pghost = "localhost"
pgport = 5432
pgoptions = nil
pgtty = nil
dbname = "razvan"
conn = PGconn.connect(pghost,pgport,pgoptions,pgtty,dbname)
res = conn.exec("BEGIN")
res = conn.exec("SELECT * FROM insertrt('another row')")
if (res.status != PGresult::TUPLES_OK)
raise PGerror,"RB-Error executing command.\n"
res.result.each do |tupl|
tupl.each do |fld|
norecs = norecs + 1
res = conn.exec("END")
printf("\nRB-Records: %i\n", norecs)
if (conn.status == PGconn::CONNECTION_BAD)
printf(STDERR, "RB-Connection lost.")
printf(STDERR, "RB-Error:" )
end #end def main
main #invoke code
This calls the following Postgres plpgsql function:
CREATE OR REPLACE FUNCTION insertrt(data character varying)
RETURNS bigint AS
id := 0;
IF EXISTS(SELECT * FROM "RTable") THEN
SELECT MAX("Id") INTO id FROM "RTable";
id := id + 1;
INSERT INTO "RTable" ("Data", "Id")
RAISE NOTICE 'New id is %', id;
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION insertrt(character varying) OWNER TO postgres;
GRANT EXECUTE ON FUNCTION insertrt(character varying) TO postgres;
To execute this function do a SELECT * FROM insertrt( ‘parameter’ ). Interesting in the function, SELECT INTO variable. Also notice “ ‘s used to enclose field names and table names. The output of RAISE NOTICE is displayed by the Ruby console.
Since gems does not work with OS X Tiger’s Ruby, the Postgres adapter has to be built manually.