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

    Byl vydán Debian 13.6, tj. šestá opravná verze Debianu 13 s kódovým názvem Trixie a Debian 12.15, tj. poslední patnáctá opravná verze Debianu 12 s kódovým názvem Bookworm, k dispozici je LTS. Řešeny jsou především bezpečnostní problémy, ale také několik vážných chyb. Instalační média Debianu 13 a Debianu 12 lze samozřejmě nadále k instalaci používat. Po instalaci stačí systém aktualizovat.

    Ladislav Hagara | Komentářů: 0
    10.7. 16:11 | Bezpečnostní upozornění

    V jádře Linux byla nalezena a v upstreamu již byla opravena kritická zranitelnost GhostLock aneb CVE-2026-43499. Lokálnímu uživateli umožňuje získat práva roota a také obejít kontejnerovou izolaci. Zranitelnost existovala v Linuxu 15 let, tj. od roku 2011, od Linuxu verze 2.6.39.

    Ladislav Hagara | Komentářů: 2
    10.7. 13:55 | IT novinky

    Evropská komise předběžně shledala, že návykový design aplikací Instagram a Facebook od americké společnosti Meta porušuje unijní nařízení o digitálních službách (DSA). Návykový design zahrnuje například takzvané nekonečné posouvání, automatické přehrávání videí, tzv. push notifikace, kdy aplikace uživatele vybízí k návratu do jejího prostředí, či vysoce personalizovaný algoritmus, který rychle pozná, co uživatele baví a snaží

    … více »
    Ladislav Hagara | Komentářů: 11
    10.7. 12:11 | Nová verze

    Byla vydána verze 1.97.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.

    Ladislav Hagara | Komentářů: 0
    10.7. 05:00 | IT novinky

    Švýcarská společnost Punkt. má nově v nabídce telefon Punkt. MC03. Telefon byl navržen ve Švýcarsku s důrazem na soukromí a digitální suverenitu a vyroben v Německu. V telefonu běží operační systém AphyOS (Apostrophy OS) založený na AOSP (Android Open Source Project) 15. Cena telefonu je 745 eur.

    Ladislav Hagara | Komentářů: 20
    10.7. 04:44 | Nová verze

    TypeScript (Wikipedie), tj. JavaScript rozšířený o statické typování a další atributy, byl vydán v nové verzi 7.0. Kompilátor byl kvůli výkonu přepsán z TypeScriptu do Go.

    Ladislav Hagara | Komentářů: 0
    9.7. 17:00 | IT novinky

    Europarlament podpořil pozměněnou verzi výjimky známé jako „chat control 1.0“ umožňující firmám skenovat soukromou komunikaci na internetu kvůli ochraně dětí před zneužitím. Pozměňovací návrhy přijaté europoslanci však počítají s tím, že z výjimky bude vyřazena šifrovaná komunikace. Výjimka přestala platit začátkem dubna poté, co se Evropský parlament a Rada EU nedokázaly shodnout na jejím prodloužení. Rada následně přijala

    … více »
    Ladislav Hagara | Komentářů: 12
    9.7. 04:44 | Bezpečnostní upozornění

    Nejnovější X.Org X server 21.1.24 a Xwayland 24.1.13 řeší 2 bezpečnostní chyby.

    Ladislav Hagara | Komentářů: 0
    9.7. 04:22 | Komunita

    Clement "Clem" Lefebvre publikoval souhrn dění v Linux Mintu za červen 2026. Vypíchnuta je vylepšená podpora Waylandu. Už není považována za experimentální. V příští verzi Linux Mintu, plánována je na Vánoce, bude běh Cinnamonu plně podporován na X11 i Waylandu. V květnu na vývoj Linux Mintu přispělo 611 dárců celkovou částkou 19 612 dolarů. Dalších 2 326 patronů přispělo na Patreonu celkovou částkou 5 334 dolarů.

    Ladislav Hagara | Komentářů: 4
    9.7. 04:00 | Bezpečnostní upozornění

    V Linuxu v KVM byla nalezena a v upstreamu již byla opravena kritická zranitelnost Januscape aneb CVE-2026-53359. Root na hostovaném počítači (virtuální stroj) může obejít izolaci a získat plnou kontrolu nad hostitelským systémem (DoS útok nebo vzdálené spuštění kódu s právy roota). Na obou hlavních architekturách – Intel i AMD. Zranitelnost v Linuxu existovala téměř 16 let (od srpna 2010 do června 2026).

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (10%)
     (7%)
     (2%)
     (17%)
     (31%)
     (4%)
     (6%)
     (2%)
     (16%)
     (25%)
    Celkem 2102 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník
    Štítky: není přiřazen žádný štítek

    Efektívny automatický reloader pre django

    11.9.2016 20:53 | Přečteno: 1720× | Programovanie | Výběrový blog | poslední úprava: 14.9.2016 11:25

    Webový framework django obsahuje vlastný testovací web server s automatickým reloadom pri zmene súborov. Implementovaný je pollingom, pri ktorom sa raz za sekundu skenuje každý zdrojový kód (vrátane knižníc). Preto som sa rozhodol implementovať malý skript, ktorý bude používať inotify a webovú aplikáciu automaticky reloadne pri uložení súboru.

    Show Me the Code

    Zdrojové kódy som ako zvyčajne hodil na github. Skript run-django využíva knižnicu watchdog na detekciu zmien medzi zdrojovými kódmi projektu. Po zmene súboru skript počká zvolený časový interval, následne ak nebol zmenený žiaden ďalší súbor pošle SIGHUP signál uwsgi procesu. Zaujímavé časti kódu sú:

    class ReloaderEventHandler(events.PatternMatchingEventHandler):
        RELOAD_ON_EVENTS = {
            events.EVENT_TYPE_MOVED,
            events.EVENT_TYPE_DELETED,
            events.EVENT_TYPE_CREATED,
            events.EVENT_TYPE_MODIFIED,
        }
    
        def __init__(self, *args, **kwargs):
            self.proc = kwargs.pop('proc')
            self.reload_wait_time = kwargs.pop('reload_wait_time')
            self.timer = None
            super(ReloaderEventHandler, self).__init__(*args, **kwargs)
    
        def _run(self):
            if self.timer is not None:
                self.timer.cancel()
            pid = self.proc.pid
            def reload_uwsgi():
                print("Reloading uwsgi ...")
                os.kill(pid, signal.SIGHUP)
                self.timer = None
            self.timer = threading.Timer(self.reload_wait_time, reload_uwsgi)
            self.timer.start()
    
        def on_any_event(self, event):
            if event.event_type in self.RELOAD_ON_EVENTS:
                self._run()
    
    
    def main():
        event_handler = ReloaderEventHandler(patterns=['*.py'], proc=proc)
        observer = Observer()
        observer.schedule(event_handler, path=os.path.abspath("."), recursive=True)
        observer.start()
    

    Zvyšok kódu sú viac-menej nechutnosti ako načítavanie konfigurácie (~/.config/run_django.cfg), parsovanie argumentov či ofarbenie logov.

    log

    Inštalácia

    sudo install run-django /usr/local/bin/

    Kto chce domáce cvičenie z bashu nech si to prepíše na mkdir a cp ;)

    Debugger

    Doteraz som pri práci spúšťal django príkazom python manage.py runserver_plus z balíka django-extensions, ktorý zobrazil pri výnimke namiesto štandardného stack trace werkzeug debugger. Do repozitára som pridal wsgi skript s podporou werkzeug - wsgi_werkzeug.py, ktorý stačí skopírovať do vlastného projektu, prepísať DJANGO_SETTINGS_MODULE a spustiť run-django --module wsgi_werkzeug.

           

    Hodnocení: 100 %

            špatnédobré        

    Obrázky

    Efektívny automatický reloader pre django, obrázek 1

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

    Komentáře

    Vložit další komentář

    12.9.2016 11:56 Cabrón
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
    Po zmene súboru reaguje čakaním 0.1s (neviem ako iné editory, ale vim ukladá najskôr do dočasného súboru a následne premenuje súbor, takže je to taký hack aby nedošlo k race condition)
    To je pořád race condition, jen s o 0.1 s menší citlivostí :-)

    Lepším řešením by bylo (pokud to watchdog API umožňuje) dočasné soubory filtrovat (např. ignorovat basename ".goutputstream-*" pro GIO-based editory jako Gedit nebo Geany).
    mirec avatar 12.9.2016 12:10 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django

    Myslím, že väčšina editorov ukladá s dočasnou príponou a ja kontrolujem .py súbory, takže toto problém robiť nebude aj keď dám čas 0. Ošetrenie je skôr pre prípady keď sa uloží viacej súborov naraz, alebo sa vygeneruje adresár s novou app (django-admin.py startapp vytvára asi 4 súbory "naraz").

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    12.9.2016 19:31 chrono
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
    Entr to rieši tak, že danú činnosť spúšťa až po tom, ako sa prestanú súbory na nejaký čas meniť (konkrétne pre takýto prípad je použitá 1ms).

    Inak napr. server, ktorý je vo werkzeug, môže tiež používať knižnicu watchdog a problémy so súbehom nerieši nijako (len sa medzi každou kontrolou spí minimálne 1 sekundu).
    13.9.2016 00:28 Cabrón
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
    1 ms je strašně málo, na běžným desktopu je jenom seek time disků v desítkách ms, a v zátěži (hlavně IO, např. při kopírování hodně dat) to může vylítnout i do jednotek sekund.
    mirec avatar 13.9.2016 09:04 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django

    Vďaka za pripomienky. Upravil som skript aby fungoval rovnako + pridal som parameter reload_wait_time (dá sa vložiť do konfiguračného súboru, alebo pri každom spustení príkazu), ktorým sa nastavuje príslušný interval.

    O reloade vo werkzeugu viem, len akosi s djangom to nefunguje moc dobre. Používal som django_extensions, doinštaloval som watchdog, pri štarte to vypísalo pekne, že využíva inotify reloader, ale aj tak to žralo cca 5% CPU permanentne, čo pri práci vonku na baterke neakceptujem ;-)

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon
    12.9.2016 19:20 chrono
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
    Kontrola a použitie súborov neprebieha v rovnakom čase, takže problémy súbehu tam budú vždy.
    22.9.2016 19:56 Jindřich Makovička | skóre: 17
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django
    Django mimochodem od verze 1.8 inotify používá, pokud je nainstalované pyinotify. Viz autoreload.py.
    mirec avatar 24.9.2016 08:08 mirec | skóre: 32 | blog: mirecove_dristy | Poprad
    Rozbalit Rozbalit vše Re: Efektívny automatický reloader pre django

    Poznám, len neviem, či je to bug alebo funkcia, ale s runserver_plus síce vypíše, že používa inotify reloader, ale pritom stále kontroluje súbory každú sekundu. Tiež sa mi nezdá práve najšťastnejšie registrovať inotify pre všetky použité knižnice. Momentálne používam na virtualenv squashfs pripájaný cez squashfuse a registrácia inotify tam trvá okolo 10s.

    LinuxOS.sk | USE="-fotak -zbytocnosti -farebne_lcd +vydrz +odolnost +java" emerge telefon

    Založit nové vláknoNahoru

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