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í
×
    dnes 16:11 | Nová verze

    Bylo oznámeno (cs) vydání Fedora Linuxu 40. Přehled novinek ve Fedora Workstation 40 a Fedora KDE 40 na stránkách Fedora Magazinu. Současně byl oznámen notebook Slimbook Fedora 2.

    Ladislav Hagara | Komentářů: 4
    dnes 13:44 | Upozornění

    ČTK (Česká tisková kancelář) upozorňuje (X), že na jejím zpravodajském webu České noviny byly dnes dopoledne neznámým útočníkem umístěny dva smyšlené texty, které nepocházejí z její produkce. Jde o text s titulkem „BIS zabránila pokusu o atentát na nově zvoleného slovenského prezidenta Petra Pelligriniho“ a o údajné mimořádné prohlášení ministra Lipavského k témuž. Tyto dezinformace byly útočníky zveřejněny i s příslušnými notifikacemi v mobilní aplikaci Českých novin. ČTK ve svém zpravodajském servisu žádnou informaci v tomto znění nevydala.

    Ladislav Hagara | Komentářů: 15
    dnes 13:33 | Komunita

    Byla založena nadace Open Home Foundation zastřešující více než 240 projektů, standardů, ovladačů a knihoven (Home Assistant, ESPHome, Zigpy, Piper, Improv Wi-Fi, Wyoming, …) pro otevřenou chytrou domácnost s důrazem na soukromí, možnost výběru a udržitelnost.

    Ladislav Hagara | Komentářů: 0
    dnes 13:00 | Nová verze

    Společnost Meta otevírá svůj operační systém Meta Horizon OS pro headsety pro virtuální a rozšířenou realitu. Vedle Meta Quest se bude používat i v připravovaných headsetech od Asusu a Lenova.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | IT novinky

    Společnost Espressif (ESP8266, ESP32, …) získala většinový podíl ve společnosti M5Stack, čímž posiluje ekosystém AIoT.

    Ladislav Hagara | Komentářů: 0
    včera 23:44 | Nová verze

    Byla vydána nová stabilní verze 3.5 svobodného multiplatformního softwaru pro editování a nahrávání zvukových souborů Audacity (Wikipedie). Přehled novinek také na YouTube. Nově lze využívat cloud (audio.com). Ke stažení je oficiální AppImage. Zatím starší verze Audacity lze instalovat také z Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    včera 16:44 | Zajímavý článek

    50 let operačního systému CP/M, článek na webu Computer History Museum věnovaný operačnímu systému CP/M. Gary Kildall z Digital Research jej vytvořil v roce 1974.

    Ladislav Hagara | Komentářů: 2
    včera 16:22 | Pozvánky

    Byl zveřejněn program a spuštěna registrace na letošní konferenci Prague PostgreSQL Developer Day, která se koná 4. a 5. června. Na programu jsou 4 workshopy a 8 přednášek na různá témata o PostgreSQL, od konfigurace a zálohování po využití pro AI a vector search. Stejně jako v předchozích letech se konference koná v prostorách FIT ČVUT v Praze.

    TomasVondra | Komentářů: 0
    včera 03:00 | IT novinky

    Po 48 letech Zilog končí s výrobou 8bitového mikroprocesoru Zilog Z80 (Z84C00 Z80). Mikroprocesor byl uveden na trh v červenci 1976. Poslední objednávky jsou přijímány do 14. června [pdf].

    Ladislav Hagara | Komentářů: 6
    včera 02:00 | IT novinky

    Ještě letos vyjde Kingdom Come: Deliverance II (YouTube), pokračování počítačové hry Kingdom Come: Deliverance (Wikipedie, ProtonDB Gold).

    Ladislav Hagara | Komentářů: 13
    KDE Plasma 6
     (72%)
     (10%)
     (2%)
     (17%)
    Celkem 697 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    Rozcestník

    Cron descriptor

    19.1.2016 19:13 | Přečteno: 1921× | Výběrový blog | poslední úprava: 19.1.2016 22:30

    Pro jeden Pythoní projekt na kterém pracuji jsem potřeboval převést CRONový zápis (12 9 * * *) na "human readable" string, zde se chci podělit o výsledek.

    Po chvilce hledání na google jsem zjistil že nic takového pro Python neexistuje (nebo je projekt ve velmi raném/nepoužitelném stádiu). Po prvních pokusech a zjištění ze to kvůli hromadě vyjímek nebude jen pár řádek kódu, mě napadlo že bych se mohl podívat zda li tohle již někdo neřešil pro jiné jazyky. Nakonec jsem narazil na celkem slušnou .NET implementaci (Rozluštění záhady proč někdo tvoří parser na UNIXový CRON v .NETu necháme pro Akta X) kterou jsem se rozhodl naportovat do Pythonu (+ pár menších vylepšení).

    Co to umí ?

    Instalace

    cron-descriptor je dostupný skrze pip:
    (pokud zde mate velke bile misto, tak pokracovani je nize pod pravym sidebarem... nevim jak tento bug z me strany opravit)

    pip install cron-descriptor

    Příklad použití

    from cron_descriptor import Options, CasingTypeEnum, DescriptionTypeEnum, ExpressionDescriptor
    
    # Jednoduše
    print(ExpressionDescriptor("*/10 * * * *"))
    
    # Pokročilé nastavení (viz Options.py)
    descripter = ExpressionDescriptor("*/10 * * * *", throw_exception_on_parse_error = True, casing_type = CasingTypeEnum.Sentence, use_24hour_time_format = True)
    # get_description uses DescriptionTypeEnum.FULL by default:
    print(descripter.get_description())
    # Nebo
    print("{}".format(descripter))
    

    Příklad výstupu en_US

    # 24 hodinový formát
    17 * * * * -> At 17 minutes past the hour
    25 6 * * * -> At 06:25
    47 6 * * 7 -> At 06:47, only on Saturday
    52 6 1 * * -> At 06:52, on day 1 of the month
    # 12 hodinový formát
    17 * * * * -> At 17 minutes past the hour
    25 6 * * * -> At 06:25 AM
    47 6 * * 7 -> At 06:47 AM, only on Saturday
    52 6 1 * * -> At 06:52 AM, on day 1 of the month
    

    Výsledek najdete na:

    https://github.com/Salamek/cron-descriptor
    PR's jsou vítány

           

    Hodnocení: 83 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    19.1.2016 19:58 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Cron descriptor
    Hezky. Pristup prepsat existujici implementaci v jinem jazyce je urcite mnohem lepsi nez zacinat od nuly.

    Btw. trochu si se tim .NET nechal unest a zustal ti tam CamelCase ;).
    Salamek avatar 19.1.2016 20:11 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    snake_style je vice mene doporucen pro Python (variable/method names) ale dokud na me kvuli tomu nekvici PEP8...
    Navic se to da prevest konverznim scriptem tam a naspatek, nevidim v tom nejaky extremni problem... ale asi to jeste udelam... Pythonazi jsou na tohle haklivi jak kocka na vodu :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    kyknos avatar 20.1.2016 16:48 kyknos | skóre: 18 | blog: Quid novi? | Ranša Rosa
    Rozbalit Rozbalit vše Re: Cron descriptor
    hloupost, moje kocka miluje vodu :) jako spousta mainek
    So the Nationalists and the Socialists have the same policy on Brexit. They should get together and form a...
    Salamek avatar 20.1.2016 16:57 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Jo moje taky, ale uz je to takovy vseobecne uznavany FUD :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Salamek avatar 19.1.2016 22:31 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Ok, predelano tak aby prosel pep8-naming
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    19.1.2016 23:49 Divný host
    Rozbalit Rozbalit vše Re: Cron descriptor
    Pristup prepsat existujici implementaci v jinem jazyce je urcite mnohem lepsi nez zacinat od nuly.
    Ale je to menší zábava (respekt autorovi).
    20.1.2016 09:23 Halis
    Rozbalit Rozbalit vše Re: Cron descriptor
    Podpora Pythonu 2.7-3.4
    Jak je toho dosaženo? Dle zdrojaku mám dojem, že se prostě nepoužívá žádná kolizní syntaxe. Jak se to dá řešit?
    Bystroushaak avatar 20.1.2016 10:41 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Cron descriptor
    Většina pythonu je nekolizní. Některé věci taky řeší from future import ..
    Salamek avatar 20.1.2016 15:00 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Neni tam pouzita zadna kolizni syntaxe, presne tak :-)
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    20.1.2016 11:04 chrono
    Rozbalit Rozbalit vše Re: Cron descriptor
    Gettext je na preklad takýchto textov viac-menej nepoužiteľný. :)
    pavlix avatar 20.1.2016 11:11 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    Důvod?
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Josef Kufner avatar 20.1.2016 12:26 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Cron descriptor
    Celá třída ExpressionDescriptor je názorná ukázka toho, jak lokalizaci nedělat. Důvod je prostý, ve všech jazycích to bude mít anglický slovosled.

    Navíc pokud budeš mít stejné slovo použité v jiném kontextu jinde v aplikaci, tak to ani nebude dávat smysl. Například takové:
    #: ExpressionDescriptor.py:218
    #, python-brace-format
    msgid "at {0}"
    msgstr "v {0}"
    Pokud by stejným stylem bylo udělaných vět více, může být v některých použita špatná předložka. Letmý pohled do slovníku rychle ukáže, kolik možností překladu podle kontextu se nabízí – úryvek ze slovnik.cz:
    at - k
    at - na (místo, čas, stav, pohyb, cíl)
    at - po (cena, množství, např.o ceně k)s
    at - v (místo, čas, stav)
    at - z
    at - u (těsně)
    at - o (čas, stav)
    at - při (čas, stav, činnost)
    at - za (čas, stav)
    at - alespoň
    at - jak budete mít čas
    at - jak to je
    at - ke
    at - těsně u (2. p.)
    at - ve
    Správný přístup je mít jeden řetězec s celou větou se zástupnými symboly a tu přeložit. Nikoliv slepovat krátké samostatně překládané řetězce do věty s anglickým slovosledem.

    Naneštěstí v tomto případě to je tak trochu pointa celého toho programu. Dalo by se to zlepšit použitím delších fragmentů, ale ani to ideální nebude. Proto například Osmand má hlasovou navigaci implementovanou v Prologu a každý jazyk má vlastní pravidla, jak skládat věty pro různá oznámení. Pak můžeš mít správně slovosled podle daného jazyka, ale i skloňování, časování a další vymoženosti.
    Hello world ! Segmentation fault (core dumped)
    pavlix avatar 20.1.2016 12:38 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    Na to jsem se ale neptal. Ptal jsem se na důvod, proč je Gettext pro daný účel nepoužitelný. Chápu, že skládání vět není jeho doménou, ale na první pohled z toho kódu není vidět, že by zrovna tento program potřeboval nějaké komplexnější skládání. Proto mě zajímalo nějaké vodítko, jestli je ten „výkřik do tmy“ založený na nějakých konkrétních argumentech nebo příkladech.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    20.1.2016 14:14 chrono
    Rozbalit Rozbalit vše Re: Cron descriptor
    Práve preto, že nie všetky jazyky využívajú anglický slovosled. Tiež nemajú len dva tvary pre jednotné a množné číslo, ale to sa dá opraviť aj s použitím gettext. Ďalší problém je s vyjadrením radových čísloviek, takže teraz to vypisuje niečo ako "on day 1, 5, and 6 of the month".

    Nedávno som niečo podobné robil pre recurrence rule a podobných problémov je tam dosť veľa a časť z nich je rovnaká pre všetky projekty ktoré vyjadrujú čas/dátum v ľudsky zrozumiteľnom tvare (ak má ísť naozaj o tvar, ktorému majú bez problémov rozumieť ľudia).
    pavlix avatar 20.1.2016 14:48 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    Nedávno som niečo podobné robil pre recurrence rule a podobných problémov je tam dosť veľa a časť z nich je rovnaká pre všetky projekty ktoré vyjadrujú čas/dátum v ľudsky zrozumiteľnom tvare (ak má ísť naozaj o tvar, ktorému majú bez problémov rozumieť ľudia).
    Vždycky když něco takového čtu, tak si říkám, že asi nejsem člověk. Nejlépe se mi používá tvar, který víceméně standardizuje ISO. Všechno vyjádřeno číselně. Všechna čísla doplněná zleva nulami do jednotného zarovnání. Všechna čísla seřazena podle váhy od největší po nejmenší. Paradoxně je takový způsob ze všech řetězcových zápisů nejvýhodnější i pro počítač.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    20.1.2016 18:13 chrono
    Rozbalit Rozbalit vše Re: Cron descriptor
    To "on day 1 of the month", s prižmúrením očí, dáva v angličtine zmysel, ale český preklad "v 1 den v měsíci" má iný význam.

    PS: A len tak pre zaujímavosť, ako by vyzeralo vyjadrenie crontab v "ISO" formáte (a prípadne aj s príkladom pre recurrence rule).
    pavlix avatar 20.1.2016 18:48 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    To "on day 1 of the month", s prižmúrením očí, dáva v angličtine zmysel, ale český preklad "v 1 den v měsíci" má iný význam.
    To bude asi reakce na úplně jiný komentář.
    PS: A len tak pre zaujímavosť, ako by vyzeralo vyjadrenie crontab v "ISO" formáte (a prípadne aj s príkladom pre recurrence rule).
    Oni definují formát data a času. Musel bys tam doplnit nějaké ty zápisy s crontab. Já osobně nemám problém používat crontab zápis tak jak je, bez nějakých přepisů.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    20.1.2016 18:53 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Cron descriptor
    Tam by to fakt chtelo predelat na "v 1. den v měsíci"
    20.1.2016 14:14 Petr
    Rozbalit Rozbalit vše Re: Cron descriptor
    No a proto gettext nabízí možnost doplnit kontext u stejných řetězců, které se pak překládají jinak.
    Salamek avatar 20.1.2016 15:05 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Pro zatim je to dostacujici, je treba aby BFU pochopil onen text, ne aby prosel pres Grammarnazzi ;-)
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    20.1.2016 16:40 smazáno | skóre: 18 | blog: smazáno
    Rozbalit Rozbalit vše Re: Cron descriptor
    Jojo, s timto urcite nema cenu se babrat dokud nebude potreba.
    20.1.2016 18:16 chrono
    Rozbalit Rozbalit vše Re: Cron descriptor
    Mohlo sa aspoň použiť ngettext, aby aspoň tvary pre množné čísla vyzerali rozumne (a nie ako teraz: každých 2 sekund).
    Salamek avatar 20.1.2016 18:26 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Je tam 13! prekladu ktere jsem natahnul importnim scriptem z puvodni implementace, kdyz to jakkoliv predelam tak ztratim vsechny preklady krome anglictiny a cestiny, dale jsou tam unitesty kontrolujici validitu vystupniho stringu EN ktere bych musel take predelat... jsou to TUNY zbytecne ("detaily") prace pro kterou ted nemam prostor... mozna by sel implementovat ngettext bez rozbyti cehokoliv ale ted to proste nestoji za to...
    Samozrejme je to OSS, pokud se na to citis, udelej fork a dodelej to tam, s radosti prijmu tvuj PR :-)
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Bystroushaak avatar 20.1.2016 11:19 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Cron descriptor
    Budu trochu hnidopich a vypíšu pár myšlenek, které mě napadají, když čtu ten zdroják. Rozhodně to nemyslím jako kritiku, jen jako návrhy k vylepšení dobrého projektu.
    """
     Converts a Cron Expression into a human readable string
    """
    
    
    class ExpressionDescriptor(object):
        m_special_characters = ['/', '-', ',', '*']
        m_expression = ''
        m_options = None
        m_expression_parts = []
        m_parsed = False
    Proč jsi použil tyhle divné docstringy? V pythonu bývá zvykem používat jako docstring první řetězec v těle funkce. Ty používáš všechny před tělem funkce. Nápověda tak nefunguje:
    bystrousak:~/Plocha/cron-descriptor,0$ python
    Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
    [GCC 4.8.2] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from cron_descriptor.ExpressionDescriptor import ExpressionDescriptor
    >>> help(ExpressionDescriptor)
    Help on class ExpressionDescriptor in module cron_descriptor.ExpressionDescriptor:
    
    class ExpressionDescriptor(__builtin__.object)
     |  Methods defined here:
     |  
     |  __init__(self, expression, options=None, **kwargs)
     |  
     |  __repr__(self)
     |  
     |  __str__(self)
     |  
     |  format_time(self, hour_expression, minute_expression, second_expression='')
     |  
     |  get_day_of_month_description(self)
     |  
     |  get_day_of_week_description(self)
     |  
     |  get_description(self, type=1)
     |  
     |  get_full_description(self)
     |  
     |  get_hours_description(self)
    Správně by to mělo vypadat takhle:
    class ExpressionDescriptor(object):
        """
        Converts a Cron Expression into a human readable string
        """
    
        m_special_characters = ['/', '-', ',', '*']
        m_expression = ''
        m_options = None
        m_expression_parts = []
        m_parsed = False
    Což pak v help()u vypadá:
    Help on class ExpressionDescriptor in module cron_descriptor.ExpressionDescriptor:
    
    class ExpressionDescriptor(__builtin__.object)
     |  Converts a Cron Expression into a human readable string
     |  
     |  Methods defined here:
    Nejde o problém jen u interní funkce help(), ale i různých nápověd v IDE a generování dokumentace. Když už se s tou dokumentací píšeš, tak mi přijde docela škoda jí takhle „zahodit“.

    Pak taky vidím, že používáš vlastní Enum:
    class DescriptionTypeEnum(object):
        FULL = 1
        TIMEOFDAY = 2
        SECONDS = 3
        MINUTES = 4
        HOURS = 5
        DAYOFWEEK = 6
        MONTH = 7
        DAYOFMONTH = 8
        YEAR = 9
    Což by pro budoucí úpravy bylo lepší zapsat spíš jako:
    class DescriptionTypeEnum(object):
        _cnt = (x for x in range(100))
        FULL = next(_cnt)
        TIMEOFDAY = next(_cnt)
        SECONDS = next(_cnt)
        MINUTES = next(_cnt)
        HOURS = next(_cnt)
        DAYOFWEEK = next(_cnt)
        MONTH = next(_cnt)
        DAYOFMONTH = next(_cnt)
        YEAR = next(_cnt)
    Není to sice nutnost, ale může ti to ušetřit nepříjemné bugy, protože se to stará o unikátnost hodnoty.

    Potom tohle
                if type == DescriptionTypeEnum.FULL:
                    description = self.get_full_description()
                elif type == DescriptionTypeEnum.TIMEOFDAY:
                    description = self.get_time_of_day_description()
                elif type == DescriptionTypeEnum.HOURS:
                    description = self.get_hours_description()
                elif type == DescriptionTypeEnum.MINUTES:
                    description = self.get_minutes_description()
                elif type == DescriptionTypeEnum.SECONDS:
                    description = self.get_seconds_description()
                elif type == DescriptionTypeEnum.DAYOFMONTH:
                    description = self.get_day_of_month_description()
                elif type == DescriptionTypeEnum.MONTH:
                    description = self.get_month_description()
                elif type == DescriptionTypeEnum.DAYOFWEEK:
                    description = self.get_day_of_week_description()
                elif type == DescriptionTypeEnum.YEAR:
                    description = self.get_year_description()
                else:
                    description = self.get_seconds_description()
    By bylo asi elegantněji zapsáno jako:
                choices = {
                    DescriptionTypeEnum.FULL: self.get_full_description,
                    DescriptionTypeEnum.TIMEOFDAY: self.get_time_of_day_description,
                    DescriptionTypeEnum.HOURS: self.get_hours_description,
                    Descrip
    tionTypeEnum.MINUTES: self.get_minutes_description,
                    DescriptionTypeEnum.SECONDS: self.get_seconds_description,
                    DescriptionTypeEnum.DAYOFMONTH: self.get_day_of_month_description,
                    DescriptionTypeEnum.MONTH: self.get_month_description,
                    DescriptionTypeEnum.DAYOFWEEK: self.get_day_of_week_description,
                    DescriptionTypeEnum.YEAR: self.get_year_description,
                }
                
                description = choices.get(type, self.get_seconds_description)()
    Nehledě tedy na to, že si tím názvem proměnné shadowuješ interní funkci type().
    for i in range(0, len(hour_parts)):
    Range jede vždy od nuly. Sice to ničemu nevadí, ale ani to nic nepřidává.
    if len(description) > 0:
    Obecně všechny tyhle kontroly se dají přepsat na elegantnější
    if description:
    Tohle
            return self.get_segment_description(self.m_expression_parts[0],
                                                _("every second"),
                                                lambda s: s.zfill(2),
                                                lambda s: _(
                                                "every {0} seconds").format(s),
                                                lambda s: _(
                                                "seconds {0} through {1} past the minute"),
                                                lambda s: _("at {0} seconds past the minute"))
    by asi vypadalo podstatně líp, kdybys to rozepsal takhle:
            return self.get_segment_description(
                self.m_expression_parts[0],
                _("every second"),
                lambda s: s.zfill(2),
                lambda s: _("every {0} seconds").format(s),
                lambda s: _("seconds {0} through {1} past the minute"),
                lambda s: _("at {0} seconds past the minute")
            )
    Já vím, je to čistě otázka vkusu, ale fakt mi to přijde podstatně čitelnější a nemusíš pak zbytečně zalamovat ty výrazy, protože se ti nevešly na konec řádku.

    Asi by se toho našlo víc, tohle mě napadlo jen tak v rychlosti.
    20.1.2016 13:27 Radek Novacek | skóre: 3
    Rozbalit Rozbalit vše Re: Cron descriptor
    Ješte bych doplnil, že místo:
    for i in range(0, len(hour_parts)):
        ...
        hour_parts[i]
        ...
    
    je lepší (pythoničtější) psát:
    for i, hour_part in enumerate(hour_parts):
        ...
        hour_part
        ...
    
    Bystroushaak avatar 20.1.2016 14:06 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Cron descriptor
    Mě to napadlo, ale byl jsem líný vzpomínat / znova otevírat soubor, jestli tam někde používá i samotnou hodnotu, nebo jen indexy. Ono těhle optimalizací bych tam našel víc, už samotná ta architektura je místy docela zbytečně rozobjektovaná, jak mají právě ve zvyku lidi z javy / C#.
    Salamek avatar 20.1.2016 19:06 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Tak jsem to jeste trochu poupravil, vicemene vse krome upravy Enum, tve reseni se mi moc nelibi a vice uprav tam asi stejne jen tak nebude... Python3 tohle resi a je i pip balicek pro 2.7 ale nechci pridavat dalsi zbytecnou zavyslost, takze to necham tak jak to je...

    Jo a misto psani sem jsi mohl rovnou udelat fork a poslat PR :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Bystroushaak avatar 20.1.2016 20:44 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: Cron descriptor
    Jo a misto psani sem jsi mohl rovnou udelat fork a poslat PR :-D
    Nerad dělám stylistické pull requesty, protože nemusí být začleněny, protože se ti něco nemusí líbit. Pak je to kopa práce k ničemu. Tohle byly spíš rady, než že by šlo o něco podstatného.
    20.1.2016 15:32 pavel
    Rozbalit Rozbalit vše Re: Cron descriptor
    Zrovna "Descriptor" je dost nešťastný název, neboť v kontextu pythonu je deskriptor třída, která implementuje metody __get__, __set__, __delete__.

    Vhodnější by byl "Decoder".
    Salamek avatar 20.1.2016 16:26 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Wow to jsem si vubec neuvedomil, asi to jeste rychle prejmenuji dokud je cas...
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    21.1.2016 09:28 Odin1918 | skóre: 6 | blog: Valhalla
    Rozbalit Rozbalit vše Re: Cron descriptor
    Zajimave, libi se mi to. Ale marne si lamu hlavu nad use cases tohoto projektu. Cron resim jednou za rok a kdyz, tak mi nedela problem klasicky crontab zapis. Faktem je, ze s timto to bude asi pohodlnejsi, ale nevim, jestli nebudu liny poustet dalsi software.
    Salamek avatar 22.1.2016 00:20 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    No use case je SW kde je treba konfigurovat cron nebo cron like zapis uzivateli kteri neovladaji cron syntaxi:
    • V prehledu cronem spoustenych prikazu chteji videt kdy se dany prikaz spousti
    • Overeni ze jimi zapsany cron se spousti tak jak si predstavovali

    To se muze hodit napriklad:
    • vsem webhosterum kteri umoznuji editovat crontab z weboveho rozhrani (a ted zobrazuji pouze cron zapis v prehledu)
    • v aplikacich pro spravu serveru jako ISPmanager/ISPconfug, Webmin a podobne
    • v aplikaci co ted tvorim :-P
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Dreit avatar 24.1.2016 19:21 Dreit | skóre: 15 | blog: Dreit a jeho dračí postřehy | Královehradecký kraj
    Rozbalit Rozbalit vše Re: Cron descriptor

    Já se v takových případech zeptám Googlu, jsou stránky kde není problém naklikat si chování a vyplivne to zápis pro CRON. Nevím ale jistě jestli to jde i obráceně, tedy vložit a nechat si vypsat co se bude dít

    Nope
    Salamek avatar 24.1.2016 22:23 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    No k tomu druhemu slouzi tenhle projekt :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Petr Tomášek avatar 24.1.2016 11:53 Petr Tomášek | skóre: 39 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Cron descriptor
    Nebylo by jednodušší si přečíst dokumentaci?
    multicult.fm | monokultura je zlo | welcome refugees!
    Josef Kufner avatar 24.1.2016 15:31 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Cron descriptor
    To naráží na základní problém. Uživatelé neumí číst.
    Hello world ! Segmentation fault (core dumped)
    Salamek avatar 24.1.2016 16:16 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    A nebylo by lepsi kdyby jsme vsichni byli IT guru ? No jasne ze bylo, zkus si zakaznikovi ale rict, "Nastudujte si dokomentaci ke CRONU" pak to ale uz s nejvetsi pravdepodobnosti nebude tvuj zakaznik :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    pavlix avatar 24.1.2016 16:28 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    Typická zákazník nepotřebuje ani to, o čem se tu bavíme.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Salamek avatar 24.1.2016 16:59 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Zakaznik nepotrebuje na svem hostingu stavovat cron sluzby ? Ok to jim priste reknu, urcite budou velmi nadseni :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    pavlix avatar 24.1.2016 17:10 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    Tvůj sarkasmus bohužel není na místě. Člověk, který nezvládá nastavit cron není technik. Člověk, který není technik, nemá zasahovat do serverů. Mimochodem na opravování systémů, do kterých hrabal kdekdo, jsem už taky v životě něco málo vydělal, takže je to spíše takové přátelské doporučení, pokud bych se někdy zase věnoval více businessu, tak samozřejmě budu rád, že to tak lidi dělají. :)
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Salamek avatar 24.1.2016 17:22 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Zrovna konfigurator CRONu se da napsat tak aby uzivatel nic nerozbyl... protoze se tam dostane jen to co tam sam v te aplikaci pustis... Hromada lidi co potrebuje provozovat nejaky web za par supu potrebuje i pridat nejake cron sluzby... to je proste kruta realita, podivej se na jakykoliv webhosting, vsude je moznost nastavit si cron sluzby z weboveho rozhrani... a zrovna k tomuhle tyto cron "zjednodusovaky" slouzi... Nikdo kdo provozuje web hosting nebude nastavovat CRON na pozadani, stejne jako zakaznici budou vyhledavat hosting kde si tohle mohou co nejjednodušeji nastavit.

    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    pavlix avatar 24.1.2016 17:31 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    Zrovna konfigurator CRONu se da napsat tak aby uzivatel nic nerozbyl... protoze se tam dostane jen to co tam sam v te aplikaci pustis...
    To ovšem pak není konfigurátor cronu, ale custom plánovač na vybrané akce. Jestli na spouštění úloh používá vlastní proces nebo cron je jen implementační detail. Webhosting tady asi řešit nebudeme. :)
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    Salamek avatar 24.1.2016 22:25 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Prijde mi ze uz resis ptakoviny...
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    pavlix avatar 24.1.2016 23:13 pavlix | skóre: 54 | blog: pavlix
    Rozbalit Rozbalit vše Re: Cron descriptor
    Tak to jsem ve správné diskuzi.
    Já už tu vlastně ani nejsem. Abclinuxu umřelo.
    xxx avatar 27.1.2016 22:24 xxx | skóre: 42 | blog: Na Kafíčko
    Rozbalit Rozbalit vše Re: Cron descriptor
    Ja to mam pres dalsi level. Aneb zkus obchodnikov rict, at zakaznikovi zkusi rict, ze kdyz si porizuje Linuxovy produkt, ze musi mit i Linuxoveho admina. :-)
    Please rise for the Futurama theme song.
    Salamek avatar 28.1.2016 00:02 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Cron descriptor
    Mit k linuxovemu produktu linuxoveho admina je samozrejme nejlepsi reseni :)
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.

    Založit nové vláknoNahoru

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