Portál AbcLinuxu, 2. května 2025 20:23
Píšu takovou středně velkou aplikaci v Railsech. Teda backend je R-O-R a frontend je především XUL. Takže různé seznamy tlačím se serveru do Gecka ve formátu RDF, kdy nahrazuji různá ID hodnotami z číselníků.
Iritovalo mě, jak ActiveRecord na každý záznam v RDF šahá do databáze pro všechny číselníky. Tak jsem napsal následující modul: Acts::SimpleCache
, který jednoduše cachuje číselník v hashi v paměti.
module ActiveRecord
module Acts
module SimpleCache
def self.append_features(base)
super
base.extend(ClassMethods)
end
module ClassMethods
def acts_as_simple_cache(options = {})
class_eval do
after_save { @f_cache = {} }
def self.find(*args)
begin
if ( (args.length==1) or not args[1].has_key?(:conditions) )
logger.debug( "SimpleCache[" + table_name +
"]::find(" + args[0].to_s + ") - using cache" )
@f_cache ||= {}
return @f_cache[args[0]] ||= super
end
rescue => e
logger.error( "SimpleCache: exception #{e.class}: #{e.message}" )
end
super
end
end
end
end
end
end
end
ActiveRecord::Base.class_eval { include ActiveRecord::Acts::SimpleCache }
Použití je takhle snadné:
class Tvar < ActiveRecord::Base
has_many :cards
set_table_name "tvary"
acts_as_simple_cache
end
Řádek acts_as_simple_cache
vložený do definice modelu způsobí, že všechny číselníkové lookupy do tohoto modelu, ktere ActiveRecord generuje půjdou přes cache.
Zasloužilo by si to učesat, ale jak to je to splňuje účel. Konkrétní akci - generování RDF na různých modelech s počtem číselníků kolem 8-12 jsem zrychlil o 40-60%.
Tiskni
Sdílej:
Milej zlatej, se zrychlením pošty po posledním upgrade jseš vedle jak ta jedle.
Zrychlení je způsobeno tím, ze poštovní rozhraní je kompletně přepsané. Převzaný a upravený PHP kód byl nahrazený nesrovnatelně kvalitnější implementací v RUBY. Tím PHP kompletně vypadlo z konfigurace apache -- jsme nyní úplně PHPfríí (alespoň tam, kde si v tom něco neplácá zákazník).
Honza šel tak daleko, že optimalizoval IMAPovou knihovnu standardně dodávanou s RUBY -- když zagoogluješ, tak narazíš na moje snahy to tlačit do upstreamu.
Ad úpravy Cyrusu v posledních dvou blogpostech: ano, projeví se to hlavně na hostingu, ale i všude tam, kde zákazníci přistupují k pošte přes WebIS. Není to tvůj případ?
Ad čím se bavím -- do toho Ti nic není Ale vážně, víš, co jsou to hříhy mládí? Ne? Tak věz, že jsem někdy studoval postgraduál na informatice a že jsem se snažil dělat do slovníků. No a jedna nejmenovaná instituce tehdy žádala o grant na tvorbu nového slovníku a jak na sviňu jsem tam byl napsaný jako řešitel....
Jak to v životě chodí, ve chvíli, kdy jsem to na FI začal balit, tak vyšel ten grant a já se ocitl v situaci, kdy na mém software, kterým bych se už třeba ano moc nechtěl zabývat, běží tvorba slovníku, na které má po dobu 3 let dělat team cca 10 lidí...
Teď ještě k tvým prioritám:
1) dokumentový server: ve fázi plánování je ten full-text, další DMS features až později
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.