abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 23:22 | Nová verze

    Hudební přehrávač Amarok byl vydán v nové major verzi 3.0 postavené na Qt5/KDE Frameworks 5. Předchozí verze 2.9.0 vyšla před 6 lety a byla postavená na Qt4. Portace Amaroku na Qt6/KDE Frameworks 6 by měla začít v následujících měsících.

    Ladislav Hagara | Komentářů: 2
    včera 21:44 | Komunita

    Ubuntu 24.10 bude Oracular Oriole (věštecká žluva).

    Ladislav Hagara | Komentářů: 1
    včera 20:22 | Nová verze

    Byla vydána nová verze 2.45.0 distribuovaného systému správy verzí Git. Přispělo 96 vývojářů, z toho 38 nových. Přehled novinek v příspěvku na blogu GitHubu a v poznámkách k vydání. Vypíchnout lze počáteční podporu repozitářů, ve kterých lze používat SHA-1 i SHA-256.

    Ladislav Hagara | Komentářů: 0
    včera 13:33 | IT novinky

    Před 25 lety, ve čtvrtek 29. dubna 1999, byla spuštěna služba "Úschovna".

    Ladislav Hagara | Komentářů: 0
    včera 01:00 | Nová verze

    Byla vydána nová verze 24.04.28 s kódovým názvem Time After Time svobodného multiplatformního video editoru Shotcut (Wikipedie) a nová verze 7.24.0 souvisejícího frameworku MLT Multimedia Framework. Nejnovější Shotcut je vedle zdrojových kódů k dispozici také ve formátech AppImage, Flatpak a Snap.

    Ladislav Hagara | Komentářů: 0
    28.4. 16:33 | Nová verze Ladislav Hagara | Komentářů: 0
    28.4. 03:22 | Zajímavý článek

    V aktuálním příspěvku na blogu počítačové hry Factorio (Wikipedie) se vývojář s přezývkou raiguard rozepsal o podpoře Linuxu. Rozebírá problémy a výzvy jako přechod linuxových distribucí z X11 na Wayland, dekorace oken na straně klienta a GNOME, změna velikosti okna ve správci oken Sway, …

    Ladislav Hagara | Komentářů: 0
    28.4. 00:11 | Nová verze

    Rakudo (Wikipedie), tj. překladač programovacího jazyka Raku (Wikipedie), byl vydán ve verzi #171 (2024.04). Programovací jazyk Raku byl dříve znám pod názvem Perl 6.

    Ladislav Hagara | Komentářů: 7
    27.4. 17:44 | Nová verze

    Společnost Epic Games vydala verzi 5.4 svého proprietárního multiplatformního herního enginu Unreal Engine (Wikipedie). Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    26.4. 17:11 | Nová verze

    Byl vydán Nextcloud Hub 8. Představení novinek tohoto open source cloudového řešení také na YouTube. Vypíchnout lze Nextcloud AI Assistant 2.0.

    Ladislav Hagara | Komentářů: 12
    KDE Plasma 6
     (75%)
     (8%)
     (2%)
     (15%)
    Celkem 883 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Jednoduchá cache pro R-O-R aplikace

    15.3.2006 17:56 | Přečteno: 997× | Ruby

    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%.

           

    Hodnocení: 67 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    xvasek avatar 15.3.2006 21:51 xvasek | skóre: 21 | blog: | Zlín
    Rozbalit Rozbalit vše Re: Jednoduchá cache pro R-O-R aplikace
    Čím se bavíš, to opravdu zůstává rozum stát. :)

    No je pravda, že WebISu by urychlení prospělo. Při posledním přechodu (kvůli novému mailovému rozhraní) se doba odezvy serveru přibližně zdvojnásobila, ale to jsem přičítal spíš nějaké zapomenuté blbosti nebo špatné konfiguraci a nestálo mi to ani za to, abych napsal mail. Co je pro mě důležitější je odezva na pomalé lince (např. GPRS), kde už je limitujícím faktorem spíš množství dat a WebIS mi přijde, že tady zrovna moc optimalizovaný není. Naproti tomu když má někdo dost rychlou linku, tak si místo 0,25 vteřiny počká 0,5, to se nic neděje.

    Energii bych osobně věnoval v tomto pořadí:

    1) Dokumentový server, verzování dokumentů, fulltextové vyhledávání...

    2) Nějaký CMS (aspoň nástěnka pro administrátora)

    3) Stabilizace samby

    4) Psaní rozhraní, které odbourávají práci roota (obnovení záloh, správa souborů...)

    5) Optimalizace rychlosti

    ...ale to je jenom příspěvek pod blogem, chápu, že hostingové servery s těma prioritama hýbou úplně jinak, než nějaký Stodůlka. :-)
    16.3.2006 08:31 Martin Povolný | blog: Krev na widlich | Brno
    Rozbalit Rozbalit vše Re: Jednoduchá cache pro R-O-R aplikace

    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

    2) CMS: v práci mame do WebIS zaintegrováno wiki, ale není to přesně to, co bychom chtěli dávat zákazníkům, probíhají experimenty s wysiwyg editory.

    3) samba - na tom intenzivně pracuju, když si zrovna "nehraju" s XULem , XBL a Railsama ;-)

    4) rozhraní... - ano, v práci je management databází, klíčů do VPN, ve fázi plánování jsou další věci -- management DHCP, přístup k zálohám, ...

    5) optimalizace rychlosti -- věčný problém, běh na dlouhou trať -- viz předchozí 2 blogposty...

    xvasek avatar 16.3.2006 21:40 xvasek | skóre: 21 | blog: | Zlín
    Rozbalit Rozbalit vše Re: Jednoduchá cache pro R-O-R aplikace
    No tak si to čtu a mám z toho pocit, že jsem tě buď naštval (za což se omlouvám), nebo máš blbou náladu. Každopádně pokud to bylo pochopeno tak, že si tady veřejně stěžuju, tak jsem to tak rozhodně nemyslel. Já jsem spokojený uživatel, těším se na každou novinku a nebojím se ani beta-testovat a kdybyste mi dali přístup ke kódu, tak bych občas i něco opravil. Tady ty věci jsem psal jako komentář k blogu z toho důvodu, že se mi nechce otravovat na hotline, protože v poslední době vypadáte, že toho máte fakt hodně. Prostě jsem chtěl, abys tady ty moje "rady" mohl v poklidu ignorovat...
    16.3.2006 22:58 Martin Povolný | blog: Krev na widlich | Brno
    Rozbalit Rozbalit vše Re: Jednoduchá cache pro R-O-R aplikace
    Ne, nenaštval ;-) Ja sám jsem takovej ironickej protivnej rejpal, taky možná trošku agresivněji reaguju, když mám pocit, že někdo rejpá do mě, byť jen v náznaku, prostě jsem takovej protiva.

    Že toho máme troštu víc, to je pravda, přebíráme teď takovou větší záležitost... A druhou stranu, to je život, a je to lepší, než nemít do čeho píchnout.

    Máme teď novýho kolegu -- znáš Jeníka? Tak toho. Pomalu se rozkoukává, ale jak pomine prvotní šok z toho, že má místo v PERLu programovat v RUBY a odsazovat na 4 mezery a zvykne si, že když na něj někdo vrrrrčí (třeba Mára), tak to neznamená nic zlého (ba naopak), zapracuje se, tak potom bude třeba zase volněji...
    16.3.2006 23:01 Martin Povolný | blog: Krev na widlich | Brno
    Rozbalit Rozbalit vše Re: Jednoduchá cache pro R-O-R aplikace
    Každopádně se nemáš za co omlouvat a naopak já děkuji za zájem a promiň, že jsem na tebe na potkání vybafl.
    xvasek avatar 17.3.2006 09:09 xvasek | skóre: 21 | blog: | Zlín
    Rozbalit Rozbalit vše Re: Jednoduchá cache pro R-O-R aplikace
    Jeníka zatím neznám, uvidíme. Jenom pořád nechápu to vaše Ruby. :-)

    Stejně je to sranda. Když ještě frčela jenom válka mezi Perlem a PHP, tak jsem čekal, že i přes počáteční náskok PHP zvítězí nakonec Perl. Postavil jsem se na "správnou" stranu a čekal, co z toho vyleze. No a teď se tak dívám kolem sebe a vidím, že se směje třetí (Python) respektive čtvrtý (Ruby) a Perl nebo PHP? Skoro jsem se už několikrát chtěl podívat na Python, ale nakonec jsem si řekl, že mi Perl vlastně vyhovuje a co používají ostatní je mi celkem jedno.

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.