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 00:11 | Nová verze

    UBports, nadace a komunita kolem Ubuntu pro telefony a tablety Ubuntu Touch, vydala Ubuntu Touch 24.04-1.3. Současně oznámila, že nadcházející větší vydání 24.04-2.0 bude mít modernější webový prohlížeč.

    Ladislav Hagara | Komentářů: 0
    včera 17:11 | Zajímavý projekt

    Ploopy po DIY trackballech či sluchátkách představuje nový externí DIY trackpoint se čtyřmi tlačítky Bean. Obsahuje snímač Texas Instruments TMAG5273, spínače Omron D2LS-21 a řadič RP2040, používá firmware QMK. Schémata jsou na GitHubu; sadu lze předobjednat za 69 kanadských dolarů (bez dopravy a DPH).

    |🇵🇸 | Komentářů: 0
    včera 03:33 | Zajímavý článek

    Mozilla před dvěma týdny na svém blogu oznámila, že díky Claude Mythos Preview bylo ve Firefoxu nalezeno a opraveno 271 bezpečnostních chyb. Včera vyšel na Mozilla Hacks článek s podrobnějšími informacemi. Z 271 bezpečnostních chyb mělo 180 chyb vysokou závažnost, 80 chyb střední závažnost a 11 chyb nízkou závažnost. Celkově bylo v dubnu ve Firefoxu opraveno 423 bezpečnostních chyb. Čísla CVE nemusí být přiřazována jednotlivým chybám. CVE-2026-6784 například představuje 154 bezpečnostních chyb.

    Ladislav Hagara | Komentářů: 0
    7.5. 22:55 | Bezpečnostní upozornění

    Před týdnem zranitelnost Copy Fail. Dnes zranitelnost Dirty Frag. Běžný uživatel může na Linuxu získat práva roota (lokální eskalaci práv). Na většině linuxových distribucí vydaných od roku 2017. Aktuálně bez oficiální záplaty a CVE čísla [oss-security mailing list].

    Ladislav Hagara | Komentářů: 8
    7.5. 14:00 | Humor

    Ačkoli je papež Lev XIV. hlavou katolické církve a stojí v čele více než miliardy věřících po celém světě, také on někdy řeší všední potíže. A kdo v životě neměl problémy se zákaznickou linkou? Krátce poté, co nastoupil do úřadu, musel papež se svou bankou řešit změnu údajů. Operátorka ale nechtěla uvěřit, s kým mluví, a Svatému otci zavěsila.

    Ladislav Hagara | Komentářů: 11
    7.5. 05:11 | Nová verze

    Incus, komunitní fork nástroje pro správu kontejnerů LXD, byl vydán ve verzi 7.0 LTS (YouTube). Stejně tak související LXC a LXCFS.

    Ladislav Hagara | Komentářů: 0
    7.5. 05:00 | Nová verze

    Google Chrome 148 byl prohlášen za stabilní. Nejnovější stabilní verze 148.0.7778.96 přináší řadu novinek z hlediska uživatelů i vývojářů. Vypíchnout lze Prompt API (demo) pro přímý přístup k AI v zařízení. Podrobný přehled v poznámkách k vydání. Opraveno bylo 127 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    6.5. 16:44 | Komunita

    Richard Hughes oznámil, že po společnostech Red Hat a Framework a organizacích OSFF a Linux Foundation, službu Linux Vendor Firmware Service (LVFS) umožňující aktualizovat firmware zařízení na počítačích s Linuxem, nově sponzorují také společnosti Dell a Lenovo. Do dnešního dne bylo díky LVFS provedeno více než 145 milionů aktualizací firmwarů od více než 100 různých výrobců na milionech linuxových zařízení.

    Ladislav Hagara | Komentářů: 0
    6.5. 15:22 | IT novinky

    Americké technologické společnosti Microsoft, Google a xAI souhlasily, že vládě Spojených států poskytnou přístup k novým modelům umělé inteligence (AI) před jejich uvedením na trh. Oznámila to americká vláda, která tak bude moci prověřit, zda modely nepředstavují hrozbu pro národní bezpečnost. Oznámení podtrhuje rostoucí obavy Washingtonu z rizik spojených s výkonnými AI systémy. Americké úřady chtějí v rámci předběžného přístupu

    … více »
    Ladislav Hagara | Komentářů: 1
    6.5. 14:11 | IT novinky

    Společnost Valve zveřejnila (GitLab) nákresy ovladače Steam Controller a puku. Pro všechny, kdo by jej chtěli hacknout nebo modifikovat, případně pro ně navrhnout nějaké příslušenství. Pod licencí Creative Commons (CC BY-NC-SA 4.0).

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (9%)
     (2%)
     (14%)
     (31%)
     (4%)
     (7%)
     (3%)
     (16%)
     (25%)
    Celkem 1538 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    version

    6.6.2018 11:36 | Přečteno: 2209× | Výběrový blog | poslední úprava: 6.6.2018 20:48

    Již nějaký ten pátek ve svých projektech používám pomocný script version.py který byl modifikován speciálně pro daný projekt a zajišťoval tyto věci:

    1. Hromadnou úpravu version stringu ve specifikovaných souborech
    2. Commit version souborů do GITu
    3. Vytvoření GIT TAGu s danou verzí
    4. Push změn a TAGu na server

    V posledním projektu se ale s tímto scriptem vyskytly nějaké ty problémy a bylo třeba jej trochu poupravit, a v tu chvíli nastala ta nemilá situace kdy v x projektech byl zastaralý na míru pro projekt upravený version.py...

    No co teď s tím že ? Řešení je jasné:

    Přetavení version.py do univerzálního toolu na hromadnou změnu version stringu v projektu který může použít každý komu se hodí.

    A tak vznikl version (Ehm, GitHub)(GitLab)

    Co že tedy version umí ?

    1. Modifikuje všechny soubory v projektu obsahující version string jedním jednoduchým příkazem
    2. Přidává modifikované version soubory do GIT commitu a pushuje je na server
    3. Umí vytvořit version GIT TAG
    4. Kontroluje zda li mají všechny version soubory v projektu zapsanou stejnou verzi
    5. Kontroluje zda li nejsou žádné modifikované soubory spravované VCS GIT v projektu před změnou verze
    6. Kontroluje zda li je nová verze vyšší než stará verze
    7. Kontroluje validitu nově zadaného version string
    8. Dokáže dělat kroky v patch/minor/major version jednoduše příkazem "+" etc.

    Jak se to používá ?

    Použití je jednoduché prostě v rootu vašeho projektu spustíte jeden z těchto příkazů:

    Zjištění aktuální verze

    $ version
    NEBO
    $ version status

    Nastavení nové verze

    $ version 1.0.1
    NEBO
    $ version mark 1.0.1

    Posun o specifikovaný počet kroků v major/minor/patch číslu verze

    Pro posun se používá příkaz "+" ve formátu (+{1-3})({\d+}) kde první skupina detekuje počet "+" a dle toho určuje zda li se jedná o patch(+)/minor(++)/major(+++) změnu, druhá skupina určuje číslo posunu dané verze (default: 1)

    Příklad

    Takže příkazy pak vypadají takto

    $ version + #pro posun o 1 v patch verzi
    OR
    $ version +10 #pro posun o 10 v patch verzi
    OR
    $ version ++1 #pro posun o 1 v minor verzi

    Pro více možností viz:

    version --help
    Main entry-point into the 'version' application.
    
    This is a version
    
    License: GPL-3.0
    Website: https://github.com/Salamek/version
    
    Command details:
        mark                Mark project specified by --project_dir by <version>.
        status              Show current --project_dir version.
    
    
    Usage:
        version mark <version> [-p DIR] [-c FILE] [--dry] [--all_yes]
        version status [-p DIR] [-c FILE]
        version 
        version <version> [-p DIR] [-c FILE] [--dry] [--all_yes]
        version (-h | --help)
        version (-v | --version)
    
    Options:
        --dry                       Run as usually but don't change anything.
        -p DIR --project_dir=DIR    Project directory, if not set current is used.
        -y --all_yes                Answer YES to all prompts.
        -d --project_dir=DIR        Project directory, if not set current is used.
        -c FILE --config_file=FILE  Path to config file, if not set --project_dir/version.conf is used
        --version                   Show version.
    
    

    Instalace

    Debian a deriváty

    Přidejte repozitář těmito příkazy

    $ wget -O - https://apt.salamek.cz/apt/conf/salamek.gpg.key|sudo apt-key add -
    $ echo "deb     https://apt.salamek.cz/apt all main" | sudo tee /etc/apt/sources.list.d/salamek.cz.list
    

    Pak můžete nainstalovat python3-version pomocí

    $ apt update && apt install python3-version
    

    Archlinux

    Přidejte repozitář na konec souboru /etc/pacman.conf

    [salamek]
    Server = https://arch.salamek.cz/any
    SigLevel = Optional
    

    a pak nainstalujte příkazem

    $ pacman -Sy version
    

    Konfigurace

    Tohle všechno se samozřejmě neobejde bez nějaké té konfigurace která je uložena v $PROJECT_ROOT/.version.yml (Pouze REGEXPS a VERSION_FILES jsou povinné):

    # GIT Configuration
    GIT:
        AUTO_COMMIT: true # Autocommitnout modifikované version soubory (default: true)
        AUTO_TAG: true # Vytvořit GIT TAG s novou verzí (default: true)
        AUTO_PUSH: true # Automaticky pushnout na server false=disabled, true=enabled, 'remote_name'=enabled and push to remote_name (default: true)
        COMMIT_MESSAGE: 'New version {version}' # Text použít v commit message {version} je kotva pro version string (default: 'New version {version}')
    
    # Pole regexpů použitých pro nalezení version stringů v VERSION_FILES
    # Klíč je název regexpu a hodnota je samotný regexp
    # Přidejte své vlastní a smažte neužitečné
    REGEXPS:
        'python': __version__\s*=\s*\'(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\' # Regexp for version format commonly used in python
        'setup.py': version\s*=\s*\'(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\' # Regexp for version format commonly used in python setup.py
        'PKGBUILD': pkgver\s*=\s*(?P<version>.*) # Regexp used in PKGBUILD
    
    # Pole version souborů které mají být nalezeny a upraven, glob formát cest je podporován
    # Klíč je glob cesta a hodnota je jméno regexpu který se má použít k nalezení version string v nalezených souborech
    # Přidejte své vlastní a smažte neužitečné
    VERSION_FILES:
        'version/__init__.py': 'python'
        'setup.py': 'setup.py'
        'archlinux/PKGBUILD': 'PKGBUILD'
    
    Tak snad se to někomu z vás bude hodit :-)        

    Hodnocení: 100 %

            špatnédobré        

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

    Komentáře

    Vložit další komentář

    Josef Kufner avatar 6.6.2018 12:00 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: version
    Obvykle verzi v programech řeším tak, že při buildu si někam uložím výstup z git describe. Prostě vygeneruju jeden malý soubor, který obsahuje definici konstanty, nebo je součástí konfigurace projektu.

    U mnoha projektů je vidět ručně udržovaný ChangeLog a commity, které takovou konstantu někde upravují ručně, ale nikdy to není o moc víc jak jednořádková změna. Proč to tedy tak komplikovat?
    Hello world ! Segmentation fault (core dumped)
    Salamek avatar 6.6.2018 12:05 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    Když mam vice jazyku / build scriptu / configuraku v projektu, tak to proste jednoduše nejde, zkoušel jsem používat single point version storage, ale vzdy to dopadlo nějakou prasofunkcionalitou v urcitch skriptech...
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Salamek avatar 6.6.2018 12:12 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    Vlastne odpoved je primo v prilozenem konfiguraku, kde se meni verze v PKGBUILD pro archlinux, verze v setup.py (kde byla dříve naprasená funkce co lovila verzi z version/__init__.py) a pak finalne uprava v version/__init__.py kde se drive nachazela taky pochybnost...
    A hlavne nezapomen na to ze nektere projekty maji verzi napriklad v hlavickach kazdeho souboru, dokumentaci a tak podobne...
    Takhle jsem mohl vsechny version prasarny vyjmout z projektu a nechat tam ciste stringy... navic to za me resi git add+commit+push+pushtag a hlavne mi to nedovoli vydat verzi kdyz mam v repu neulozene zmeny.
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    6.6.2018 14:16 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: version
    Tohle se dá často automatizovat pomocí atributu export-subst (viz gitattributes(5)).
    Bystroushaak avatar 6.6.2018 12:09 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: version
    Osobně používám v python projektech parsování changelogu:
    #! /usr/bin/env python3
    from setuptools import setup
    from setuptools import find_packages
    
    
    changelog = open('CHANGELOG.rst').read()
    long_description = open('README.rst').read() + "\n\n" + changelog
    
    
    def get_version(data):
        def all_same(s):
            return all(x == s[0] for x in s)
    
        def has_digit(s):
            return any(x.isdigit() for x in s)
    
        data = data.splitlines()
        return list(
            line for line, underline in zip(data, data[1:])
            if (len(line) == len(underline) and
                all_same(underline) and
                has_digit(line) and
                "." in line),
        )[0]
    
    
    setup(
        name='...',
        version=get_version(changelog),
        description="...",
        long_description=long_description,
        url='...',
    
        author='...',
        author_email='...',
        license='MIT',
    
        packages=find_packages('src'),
        package_dir={'': 'src'},
    
        zip_safe=False,
        include_package_data=True,
        install_requires=open("requirements.txt").read().splitlines()
    )
    
    Salamek avatar 6.6.2018 12:17 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    No tohle ale pravě resi jen setup.py a CHANGELOG.rst co pak ale s PKGBUILD, hlavickami etc. BTW pouzival jsem neco podobneho, ale nakonec me to nasralo :-D Jinak opreni o changelog neni spatny napad, mozna tam pridam spravu/automaticke generovani changelogu a odpadne srani i s changelogem :-)
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Bystroushaak avatar 6.6.2018 13:24 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: version
    Já jsem jeden čas skládal changelog z git logu, ale pak mi došlo, že je to v podstatě nesmysl a že uživatele zajímají spíš ty podstatnější věci (změny api, nová fukncionalita atd), než každá blbost co jsem commitoval.
    Salamek avatar 6.6.2018 16:27 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    No me napadlo ze by se commity braly jen takove co by vyhovovaly danemu regexpu ktery si nastavi v .version.yml.
    Napr. Commit musi zacinat velkym pismenem, koncit teckou, obsahovat alespon 4 slova a za teckout koncit (Closes|Fixes)\s+#\d+. Protoze dulezite commity by mely mit sve Issue... to alespon cloveka donuti nepsat sracky do commit messages... jinak si bude muset CHANGELOG doplnovat rucne :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Josef Kufner avatar 6.6.2018 18:56 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: version
    Spíš by dávalo smysl dát do komentáře commitu nějakou značku s textem a ty pak sesbírat do ChangeLogu. Ale takový komentář se klidně dá připsat do ChangeLogu rovnou a je to bez komplikací.
    Hello world ! Segmentation fault (core dumped)
    Salamek avatar 6.6.2018 19:20 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    A nebo se taky da rovnou na changelog vykaslat :-) No ta tvoje znacka je vyresena v tom mem predchozim navrhu, proste misto spravne formatovaneho commitu budes v regexpu hledat onu znacku... No zkusim neco vymyslet a otestovat jak mi s tim pujde workflow. :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    6.6.2018 18:13 marbu | skóre: 31 | blog: hromada
    Rozbalit Rozbalit vše Re: version
    co pak ale s PKGBUILD
    Vygenerovat, případně přegenerovat, ten PKGBUILD na základě setuptools metadat z setup.py? Navíc nevím jakou výhodu má mít PKGBUILD soubor přímo v repu s kódem, když aby to k něčemu bylo, stejně ten PKGBUILD musím udržovat v AURu.
    There is no point in being so cool in a cold world.
    Salamek avatar 6.6.2018 19:32 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    Vygenerovat, případně přegenerovat, ten PKGBUILD na základě setuptools metadat z setup.py

    A na to existuje nejaky tool ?

    Navíc nevím jakou výhodu má mít PKGBUILD soubor přímo v repu s kódem, když aby to k něčemu bylo, stejně ten PKGBUILD musím udržovat v AURu.

    Protoze mam CI (na vlastnim HW) ktere mi buildi balicky pri release do meho arch repa a je to tak pro me pohodlnejsi nez to lovit nekde na AUR ?

    Jasne mohl bych v CI udelat release, stahnout archiv, spocitat sha256sum, vygenerovat ten PKGBUILD a nahrat jej na AUR, a pak ten balicek sestavit a uploadnout do repa. Ale to je ted pro me zbytecna prace. Ted jsem se jeste dival na AUR a zda se, ze se tam da vlozit jen jeden public key (netestoval jsem) a to situaci celkem komplikuje kdyz CI nemuze mit separe keypair.

    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Salamek avatar 6.6.2018 19:41 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    Ah tak kecam: Tip: You can add multiple public keys to your profile by separating them with a newline in the input field. Takze v tom neni problem
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Salamek avatar 6.6.2018 19:35 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    Ale samozrejme mas pravdu ze by se hodilo mit PKGBUILD na AUR, ale neni to pro me ted priorita protoze ja uz mam sestaveny balicek v repo :-) A dokud nekdo nevytvori issue ze mu vadi ze neni v AUR...
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    Salamek avatar 6.6.2018 12:20 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    No a hlavne je pro me super jednoduchost kdy proste dam
    $ version +
    a mam hotovo :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    6.6.2018 13:57 horada | skóre: 3
    Rozbalit Rozbalit vše Re: version

    Gitlab link => 404 The page could not be found or you don't have permission to view it.

    Bystroushaak avatar 6.6.2018 13:59 Bystroushaak | skóre: 36 | blog: Bystroushaakův blog | Praha
    Rozbalit Rozbalit vše Re: version
    On gitlab se docela hroutí pod náporem. Dával jsem před chvíli importovat nějaké moje repa z Githubu, jen abych si to zkusil a několikrát to hodilo 500.
    Salamek avatar 6.6.2018 14:09 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    Sorac, ten projekt se naimportoval jako private, a ja si toho nevsiml... ted uz by to melo byt ok
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    6.6.2018 14:28 ewew | skóre: 40 | blog: ewewov_blog
    Rozbalit Rozbalit vše Re: version

    Pekne. ale nie je to komplikované ? Nepoznám tento jazyk ale nešlo by to urobiť tak, že jednotlive súbory budú mať link na súbor s verziou ? 

    Root v linuxe : "Root povedal, linux vykona."
    Salamek avatar 6.6.2018 16:17 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: version
    Ten version file neni jen soubor obsahujici string 1.2.3 ale soubor s libovolnym obsahem, tzn kod, dokumentace, hlaviky souboru etc. proto se to parsuje pomoci regexp.. napr:
    __version__ = '1.2.3'
    
    nebo
    foo=bar
    pkgver=1.2.3
    bar=foo
    
    nebo
    /**
     * Text
     * This is app version 1.2.3
     * Text...
     */
    
    No a vsude tady treba potrebujes zmenit version na 1.2.4...
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    FrostyX avatar 9.6.2018 17:19 FrostyX | skóre: 27 | blog: Frostyho_blog | Olomouc
    Rozbalit Rozbalit vše Re: version
    Hezký tool. Alternativně se dá použít tito nebo rpkg.
    FrostyX.cz | 1984 was not supposed to be an instruction manual.

    Založit nové vláknoNahoru

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