Quickr has shipped early and after installing it and the latest fixes from "fix central", I have started the process of picking through the new features.
I have tested our existing themes and they all seem to work just fine so far and with a little more testing, I think we will be safe to upgrade some servers.
I have to say well done to Satwik and his team for getting QuickPlace team buzzing like it was 1999.
Thursday, June 28, 2007
Saturday, June 23, 2007
It is all happening on the 29th
On the 29th of June, there will be so many things to do, I won't know what to do with myself.
1. Quickr 8 Launches;
2. iPhone is released; and
3. Sicko comes out.
I am sure there will be lots more happening that day, but these are things I have actually been waiting for and anticipating.
This week, I have been very busy sorting out some Windows Vista issues with QuickPlace 7 as well as a ruby on rails development project for jackcards. I am also in the process of installing a NAS for domino which so far indicates 2 to 4 times increase in our current IO performance.
So, if I have been a little quiet lately, I apologize and will be a little more sociable soon (even if it is just to show off an iPhone if I get the courage to buy one).
1. Quickr 8 Launches;
2. iPhone is released; and
3. Sicko comes out.
I am sure there will be lots more happening that day, but these are things I have actually been waiting for and anticipating.
This week, I have been very busy sorting out some Windows Vista issues with QuickPlace 7 as well as a ruby on rails development project for jackcards. I am also in the process of installing a NAS for domino which so far indicates 2 to 4 times increase in our current IO performance.
So, if I have been a little quiet lately, I apologize and will be a little more sociable soon (even if it is just to show off an iPhone if I get the courage to buy one).
Monday, June 11, 2007
Rational Climate Change Argument
Rational Climate Change Argument
This is basically the same as Pascal's Wager with some key differences. These are that Pascal was based on religion where this is actually based on science. However, it is a very good use of a truth table
This is basically the same as Pascal's Wager with some key differences. These are that Pascal was based on religion where this is actually based on science. However, it is a very good use of a truth table
Friday, June 01, 2007
Ruby on Rails Domino Active Record
I have been using this class for a while that allows some ActiveRecord like features for IBM Lotus Domino databases.
An example use would be:
It currently uses the OLE/COM bridge to get to domino so only will work on windows at this stage. The next step would be to compile it with the NotesAPI to allow it to work on all platforms.
The model source code is here (I do not maintain this anymore but happy for others to take it on under LGPL):
An example use would be:
class Contact < DominoRecord
attr_accessor :email_address, :first_name, :last_name
validates_presence_of :first_name, :last_name, :email_address
validates_format_of :email_address, :with =>
/^\s*(?:(?:[^,@\s]+)@(?:(?:[-a-z0-9]+\.)+[a-z]{2,}\s*(,\s*|\z)))+$/i,
:message => "must be a valid email address",
:on => :create
@@database_name = "contacts.nsf" #your database here
@@server_name = 'www/projectlounge' #your server here
end
It currently uses the OLE/COM bridge to get to domino so only will work on windows at this stage. The next step would be to compile it with the NotesAPI to allow it to work on all platforms.
The model source code is here (I do not maintain this anymore but happy for others to take it on under LGPL):
require 'win32ole'
class DominoRecord
attr_accessor :form
def save
@document = @@database.CreateDocument
form = self.class.to_s.downcase
@document.ReplaceItemValue "form", form
self.instance_variables.each do |inst|
field_name = inst.sub(/[@]/, '')
field_value = self.instance_variable_get(inst)
@document.ReplaceItemValue field_name, field_value.to_s
end
@document.Save(true, false)
end
def save!;
save
end
def update_attribute; end
def new_record?; end
include ActiveRecord::Validations
@@session = nil
@@database = nil
@@database_name = nil
@@server_name = nil
def [](key)
instance_variable_get(key)
end
def self.find(*args)
options = extract_options_from_args!(args)
validate_find_options(options)
case args.first
when :first then
@document = find_initial(options)
when :all then find_every(options)
else
@document = find_from_ids(args, options)
end
record = self.new
@document.Items.each do |item|
record.send(item.Name.downcase + "=", item.Text) unless ["document", "errors"].include?(item.Name)
end
record
end
def DominoRecord.human_attribute_name(attribute_key_name)
ActiveRecord::Base.human_attribute_name(attribute_key_name)
end
def initialize(attributes=nil)
unless @@session
@@session = WIN32OLE.new('Lotus.NotesSession')
@@session.Initialize
end
@@database = @@session.GetDatabase(@@server_name,@@database_name) unless @@database
unless form == nil
fields = @@database.GetForm(form).Fields
else
fields = @@database.GetForm(self.class.to_s).Fields
end
fields.each { |field| self.class.__send__(:attr_accessor, field) }
return if attributes.nil?
attributes.each do |k, v|
send(k + "=", v)
end
end
def finalize
@@session.Finalize
end
def session
@@session
end
def database
@@database
end
def document
@document
end
def attributes=(attributes)
return if attributes.nil?
attributes.stringify_keys!
multi_parameter_attributes = []
attributes.each do |k, v|
send(k + "=", v)
end
end
def self.method_missing(method_id, *arguments)
unless @@session
@@session = WIN32OLE.new('Lotus.NotesSession')
@@session.Initialize
end
@@database = @@session.GetDatabase(@@server_name,@@database_name) unless @@database
if match = /find_by_([_a-zA-Z]\w*)/.match(method_id.to_s)
@view = @@database.GetView($1)
puts arguments
@document = @view.GetDocumentByKey(arguments[0])
record = self.new
@document.Items.each do |item|
record.send(item.Name.downcase + "=", item.Text) unless ["document", "errors"].include?(item.Name)
end
record
else
super
end
end
private
def self.find_initial(options)
#not working
end
def self.find_every(options)
#not working
end
def self.find_from_ids(ids, options)
#not working
end
def self.find_one(id, options)
if result = @@database.GetDocumentByUNID( id )
result
else
raise RecordNotFound, "Couldn't find #{name} with ID=#{id}#{conditions}"
end
end
def self.find_some(ids, options)
result = find_every(options)
if result.size == ids.size
result
else
raise RecordNotFound, "Couldn't find all #{name.pluralize} with IDs (#{ids_list})#{conditions}"
end
end
def self.extract_options_from_args!(args) #:nodoc:
args.last.is_a?(Hash) ? args.pop : {}
end
VALID_FIND_OPTIONS = [ :conditions, :include, :joins, :limit, :offset,
:order, :select, :readonly, :group, :from ]
def self.validate_find_options(options) #:nodoc:
options.assert_valid_keys(VALID_FIND_OPTIONS)
end
end
Subscribe to:
Posts (Atom)