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í
×

dnes 20:33 | Zajímavý článek

Nadace Raspberry Pi vydala sedmašedesáté číslo (pdf) anglicky psaného časopisu MagPi věnovanému Raspberry Pi a projektům postaveným na tomto jednodeskovém počítači a čtvrté číslo (pdf) časopisu pro kutily HackSpace věnovanému navíc 3D tisku, pájení, řezání nebo i elektronice a IoT.

Ladislav Hagara | Komentářů: 0
dnes 18:33 | Komunita

Morevna Project, který stojí za řadou svobodného softwaru pro animátory (např. Synfig Studio, RenderChan nebo Papagayo-NG) a svobodnými (CC-BY-SA) animovanými filmy/komiksy Morevna (3. díl) a Pepper&Carrot: The Potion Contest (6. díl), sbírá do 1. března příspěvky na 4. díl svého animovaného filmu Morevna. Mezi odměnami přispěvatelům lze najít např. i videokurzy animace v Synfigu či Blenderu.

xHire | Komentářů: 0
dnes 12:22 | Bezpečnostní upozornění

Ve středu vydaná "npm@next" verze 5.7.0 správce balíčků pro JavaScript npm (Wikipedie, Node Package Manager) přinesla řadě uživatelů Linuxu nečekanou nepříjemnost. V závislosti na způsobu instalace a ve spojení s příkazem sudo mohlo dojít ke změně vlastníka u systémových souborů, také například /. Chyba je opravena v před několika hodinami vydané verzi npm 5.7.1 [reddit].

Ladislav Hagara | Komentářů: 8
dnes 10:00 | Nová verze

Byla vydána verze 10.5 open source alternativy GitHubu, tj. softwarového nástroje s webovým rozhraním umožňujícího spolupráci na zdrojových kódech, GitLab (Wikipedie). Představení nových vlastností v příspěvku na blogu. Zdůraznit lze integrovanou podporu Let's Encrypt.

Ladislav Hagara | Komentářů: 0
včera 12:33 | Komunita

Příspěvek na blogu Signalu (Wikipedie) informuje o založení neziskové nadace Signal Foundation, jež bude zastřešovat další vývoj tohoto svobodného bezpečného komunikátoru běžícího také na Linuxu (Signal Desktop). Brian Acton, spoluzakladatel WhatsAppu, věnoval nadaci 50 milionů dolarů [Hacker News].

Ladislav Hagara | Komentářů: 1
včera 05:55 | Zajímavý článek

Článek na Fedora Magazine krátce představuje programovací jazyk Rust a několik zajímavých v Rustu naprogramovaných terminálových aplikací. Jedná se o alternativu k příkazu grep ripgrep, moderní barevnou alternativu k příkazu ls exa, příkazem cloc inspirovaný tokei a zvířátko v terminálu ternimal.

Ladislav Hagara | Komentářů: 0
21.2. 23:55 | Zajímavý projekt

Byl spuštěn Humble Classics Return Bundle. Za vlastní cenu lze koupit hry Broken Sword 5 - The Serpent's Curse, Shadowrun Returns a Shadowrun: Dragonfall - Director's Cut. Při nadprůměrné platbě (aktuálně 8,48 $) také Shadowrun: Hong Kong - Extended Edition, Wasteland 2: Director's Cut - Standard Edition, Age of Wonders III a Xenonauts. Při platbě 15 $ a více lze získat navíc Torment: Tides of Numenera a Dreamfall Chapters: The Final Cut Edition.

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

Vývojáři linuxové distribuce Mageia na svém blogu upozorňují na narušení bezpečnosti Mageia Identity. Narušitel získal přístup k LDAP databázi a zveřejnil jména uživatelů, jejich emailové adresy a haše hesel. Hesla uživatelů byla resetována.

Ladislav Hagara | Komentářů: 3
20.2. 21:55 | Nová verze

Byla vydána verze 2.0.0 nástroje pro záznam a sdílení terminálových sezení asciinema (GitHub). Z novinek je nutno upozornit na nový zpětně nekompatibilní formát záznamu asciicast v2. S novým formátem si poradí nové verze asciinema-playeru a asciinema-serveru [Hacker News].

Ladislav Hagara | Komentářů: 0
20.2. 05:55 | Zajímavý projekt

Dle příspěvku na blogu zaměstnanců CZ.NIC byl spuštěn ostrý provoz služby Honeypot as a Service (HaaS). Zapojit se může kdokoli. Stačí se zaregistrovat a nainstalovat HaaS proxy, která začne příchozí komunikaci z portu 22 (běžně používaného pro SSH) přeposílat na server HaaS, kde honeypot Cowrie (GitHub) simuluje zařízení a zaznamenává provedené příkazy. Získat lze tak zajímavé informace o provedených útocích. K dispozici jsou globální statistiky.

Ladislav Hagara | Komentářů: 12
Který webový vyhledávač používáte nejčastěji?
 (2%)
 (28%)
 (62%)
 (3%)
 (3%)
 (0%)
 (1%)
 (1%)
Celkem 437 hlasů
 Komentářů: 35, poslední 21.2. 19:51
    Rozcestník

    Cron descriptor

    19.1.2016 19:13 | Přečteno: 1719× | 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 luv | skóre: 18 | blog: luv
    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: 21 | 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: 21 | 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: 21 | 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: 32 | 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: 21 | 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: 67
    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 luv | skóre: 18 | blog: luv
    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: 21 | 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 luv | skóre: 18 | blog: luv
    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: 21 | 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: 32 | 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: 32 | 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: 21 | 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: 32 | 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: 21 | 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: 4 | 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: 21 | 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: 21 | 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: 37 | blog: Vejšplechty
    Rozbalit Rozbalit vše Re: Cron descriptor
    Nebylo by jednodušší si přečíst dokumentaci?
    Josef Kufner avatar 24.1.2016 15:31 Josef Kufner | skóre: 67
    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: 21 | 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: 21 | 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: 21 | 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: 21 | 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: 21 | 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.